diff --git a/dist/react-bootstrap-table.js b/dist/react-bootstrap-table.js
index cf9fb3c24..da80c4816 100644
--- a/dist/react-bootstrap-table.js
+++ b/dist/react-bootstrap-table.js
@@ -736,8 +736,8 @@ return /******/ (function(modules) { // webpackBootstrap
} else {
if (!this.allowRemote(_Const2.default.REMOTE_SORT)) {
data = this.store.sort().get();
- newState.data = data;
}
+ newState.data = data;
}
this.setState(function () {
return newState;
@@ -2477,9 +2477,9 @@ return /******/ (function(modules) { // webpackBootstrap
return;
}
- __REACT_HOT_LOADER__.register(BootstrapTable, 'BootstrapTable', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/BootstrapTable.js');
+ __REACT_HOT_LOADER__.register(BootstrapTable, 'BootstrapTable', '/Users/shopback/github/react-bootstrap-table/src/BootstrapTable.js');
- __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/BootstrapTable.js');
+ __REACT_HOT_LOADER__.register(_default, 'default', '/Users/shopback/github/react-bootstrap-table/src/BootstrapTable.js');
}();
;
@@ -4832,9 +4832,9 @@ return /******/ (function(modules) { // webpackBootstrap
return;
}
- __REACT_HOT_LOADER__.register(CONST_VAR, 'CONST_VAR', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/Const.js');
+ __REACT_HOT_LOADER__.register(CONST_VAR, 'CONST_VAR', '/Users/shopback/github/react-bootstrap-table/src/Const.js');
- __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/Const.js');
+ __REACT_HOT_LOADER__.register(_default, 'default', '/Users/shopback/github/react-bootstrap-table/src/Const.js');
}();
;
@@ -5288,11 +5288,11 @@ return /******/ (function(modules) { // webpackBootstrap
return;
}
- __REACT_HOT_LOADER__.register(TableHeaderColumn, 'TableHeaderColumn', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/TableHeaderColumn.js');
+ __REACT_HOT_LOADER__.register(TableHeaderColumn, 'TableHeaderColumn', '/Users/shopback/github/react-bootstrap-table/src/TableHeaderColumn.js');
- __REACT_HOT_LOADER__.register(filterTypeArray, 'filterTypeArray', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/TableHeaderColumn.js');
+ __REACT_HOT_LOADER__.register(filterTypeArray, 'filterTypeArray', '/Users/shopback/github/react-bootstrap-table/src/TableHeaderColumn.js');
- __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/TableHeaderColumn.js');
+ __REACT_HOT_LOADER__.register(_default, 'default', '/Users/shopback/github/react-bootstrap-table/src/TableHeaderColumn.js');
}();
;
@@ -5450,7 +5450,7 @@ return /******/ (function(modules) { // webpackBootstrap
return;
}
- __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/util.js');
+ __REACT_HOT_LOADER__.register(_default, 'default', '/Users/shopback/github/react-bootstrap-table/src/util.js');
}();
;
@@ -5672,13 +5672,13 @@ return /******/ (function(modules) { // webpackBootstrap
return;
}
- __REACT_HOT_LOADER__.register(legalComparators, 'legalComparators', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/filters/Date.js');
+ __REACT_HOT_LOADER__.register(legalComparators, 'legalComparators', '/Users/shopback/github/react-bootstrap-table/src/filters/Date.js');
- __REACT_HOT_LOADER__.register(dateParser, 'dateParser', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/filters/Date.js');
+ __REACT_HOT_LOADER__.register(dateParser, 'dateParser', '/Users/shopback/github/react-bootstrap-table/src/filters/Date.js');
- __REACT_HOT_LOADER__.register(DateFilter, 'DateFilter', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/filters/Date.js');
+ __REACT_HOT_LOADER__.register(DateFilter, 'DateFilter', '/Users/shopback/github/react-bootstrap-table/src/filters/Date.js');
- __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/filters/Date.js');
+ __REACT_HOT_LOADER__.register(_default, 'default', '/Users/shopback/github/react-bootstrap-table/src/filters/Date.js');
}();
;
@@ -5827,9 +5827,9 @@ return /******/ (function(modules) { // webpackBootstrap
return;
}
- __REACT_HOT_LOADER__.register(TextFilter, 'TextFilter', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/filters/Text.js');
+ __REACT_HOT_LOADER__.register(TextFilter, 'TextFilter', '/Users/shopback/github/react-bootstrap-table/src/filters/Text.js');
- __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/filters/Text.js');
+ __REACT_HOT_LOADER__.register(_default, 'default', '/Users/shopback/github/react-bootstrap-table/src/filters/Text.js');
}();
;
@@ -5962,9 +5962,9 @@ return /******/ (function(modules) { // webpackBootstrap
return;
}
- __REACT_HOT_LOADER__.register(RegexFilter, 'RegexFilter', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/filters/Regex.js');
+ __REACT_HOT_LOADER__.register(RegexFilter, 'RegexFilter', '/Users/shopback/github/react-bootstrap-table/src/filters/Regex.js');
- __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/filters/Regex.js');
+ __REACT_HOT_LOADER__.register(_default, 'default', '/Users/shopback/github/react-bootstrap-table/src/filters/Regex.js');
}();
;
@@ -6160,11 +6160,11 @@ return /******/ (function(modules) { // webpackBootstrap
return;
}
- __REACT_HOT_LOADER__.register(optionsEquals, 'optionsEquals', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/filters/Select.js');
+ __REACT_HOT_LOADER__.register(optionsEquals, 'optionsEquals', '/Users/shopback/github/react-bootstrap-table/src/filters/Select.js');
- __REACT_HOT_LOADER__.register(SelectFilter, 'SelectFilter', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/filters/Select.js');
+ __REACT_HOT_LOADER__.register(SelectFilter, 'SelectFilter', '/Users/shopback/github/react-bootstrap-table/src/filters/Select.js');
- __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/filters/Select.js');
+ __REACT_HOT_LOADER__.register(_default, 'default', '/Users/shopback/github/react-bootstrap-table/src/filters/Select.js');
}();
;
@@ -6441,11 +6441,11 @@ return /******/ (function(modules) { // webpackBootstrap
return;
}
- __REACT_HOT_LOADER__.register(legalComparators, 'legalComparators', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/filters/Number.js');
+ __REACT_HOT_LOADER__.register(legalComparators, 'legalComparators', '/Users/shopback/github/react-bootstrap-table/src/filters/Number.js');
- __REACT_HOT_LOADER__.register(NumberFilter, 'NumberFilter', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/filters/Number.js');
+ __REACT_HOT_LOADER__.register(NumberFilter, 'NumberFilter', '/Users/shopback/github/react-bootstrap-table/src/filters/Number.js');
- __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/filters/Number.js');
+ __REACT_HOT_LOADER__.register(_default, 'default', '/Users/shopback/github/react-bootstrap-table/src/filters/Number.js');
}();
;
@@ -6725,13 +6725,13 @@ return /******/ (function(modules) { // webpackBootstrap
return;
}
- __REACT_HOT_LOADER__.register(Checkbox, 'Checkbox', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/TableHeader.js');
+ __REACT_HOT_LOADER__.register(Checkbox, 'Checkbox', '/Users/shopback/github/react-bootstrap-table/src/TableHeader.js');
- __REACT_HOT_LOADER__.register(getSortOrder, 'getSortOrder', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/TableHeader.js');
+ __REACT_HOT_LOADER__.register(getSortOrder, 'getSortOrder', '/Users/shopback/github/react-bootstrap-table/src/TableHeader.js');
- __REACT_HOT_LOADER__.register(TableHeader, 'TableHeader', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/TableHeader.js');
+ __REACT_HOT_LOADER__.register(TableHeader, 'TableHeader', '/Users/shopback/github/react-bootstrap-table/src/TableHeader.js');
- __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/TableHeader.js');
+ __REACT_HOT_LOADER__.register(_default, 'default', '/Users/shopback/github/react-bootstrap-table/src/TableHeader.js');
}();
;
@@ -6801,9 +6801,9 @@ return /******/ (function(modules) { // webpackBootstrap
return;
}
- __REACT_HOT_LOADER__.register(SelectRowHeaderColumn, 'SelectRowHeaderColumn', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/SelectRowHeaderColumn.js');
+ __REACT_HOT_LOADER__.register(SelectRowHeaderColumn, 'SelectRowHeaderColumn', '/Users/shopback/github/react-bootstrap-table/src/SelectRowHeaderColumn.js');
- __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/SelectRowHeaderColumn.js');
+ __REACT_HOT_LOADER__.register(_default, 'default', '/Users/shopback/github/react-bootstrap-table/src/SelectRowHeaderColumn.js');
}();
;
@@ -6874,9 +6874,9 @@ return /******/ (function(modules) { // webpackBootstrap
return;
}
- __REACT_HOT_LOADER__.register(ExpandRowHeaderColumn, 'ExpandRowHeaderColumn', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/ExpandRowHeaderColumn.js');
+ __REACT_HOT_LOADER__.register(ExpandRowHeaderColumn, 'ExpandRowHeaderColumn', '/Users/shopback/github/react-bootstrap-table/src/ExpandRowHeaderColumn.js');
- __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/ExpandRowHeaderColumn.js');
+ __REACT_HOT_LOADER__.register(_default, 'default', '/Users/shopback/github/react-bootstrap-table/src/ExpandRowHeaderColumn.js');
}();
;
@@ -7021,9 +7021,9 @@ return /******/ (function(modules) { // webpackBootstrap
return;
}
- __REACT_HOT_LOADER__.register(TableFooter, 'TableFooter', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/TableFooter.js');
+ __REACT_HOT_LOADER__.register(TableFooter, 'TableFooter', '/Users/shopback/github/react-bootstrap-table/src/TableFooter.js');
- __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/TableFooter.js');
+ __REACT_HOT_LOADER__.register(_default, 'default', '/Users/shopback/github/react-bootstrap-table/src/TableFooter.js');
}();
;
@@ -7808,9 +7808,9 @@ return /******/ (function(modules) { // webpackBootstrap
return;
}
- __REACT_HOT_LOADER__.register(TableBody, 'TableBody', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/TableBody.js');
+ __REACT_HOT_LOADER__.register(TableBody, 'TableBody', '/Users/shopback/github/react-bootstrap-table/src/TableBody.js');
- __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/TableBody.js');
+ __REACT_HOT_LOADER__.register(_default, 'default', '/Users/shopback/github/react-bootstrap-table/src/TableBody.js');
}();
;
@@ -8065,9 +8065,9 @@ return /******/ (function(modules) { // webpackBootstrap
return;
}
- __REACT_HOT_LOADER__.register(TableRow, 'TableRow', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/TableRow.js');
+ __REACT_HOT_LOADER__.register(TableRow, 'TableRow', '/Users/shopback/github/react-bootstrap-table/src/TableRow.js');
- __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/TableRow.js');
+ __REACT_HOT_LOADER__.register(_default, 'default', '/Users/shopback/github/react-bootstrap-table/src/TableRow.js');
}();
;
@@ -8345,9 +8345,9 @@ return /******/ (function(modules) { // webpackBootstrap
return;
}
- __REACT_HOT_LOADER__.register(TableColumn, 'TableColumn', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/TableColumn.js');
+ __REACT_HOT_LOADER__.register(TableColumn, 'TableColumn', '/Users/shopback/github/react-bootstrap-table/src/TableColumn.js');
- __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/TableColumn.js');
+ __REACT_HOT_LOADER__.register(_default, 'default', '/Users/shopback/github/react-bootstrap-table/src/TableColumn.js');
}();
;
@@ -8801,9 +8801,9 @@ return /******/ (function(modules) { // webpackBootstrap
return;
}
- __REACT_HOT_LOADER__.register(TableEditColumn, 'TableEditColumn', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/TableEditColumn.js');
+ __REACT_HOT_LOADER__.register(TableEditColumn, 'TableEditColumn', '/Users/shopback/github/react-bootstrap-table/src/TableEditColumn.js');
- __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/TableEditColumn.js');
+ __REACT_HOT_LOADER__.register(_default, 'default', '/Users/shopback/github/react-bootstrap-table/src/TableEditColumn.js');
}();
;
@@ -8951,9 +8951,9 @@ return /******/ (function(modules) { // webpackBootstrap
return;
}
- __REACT_HOT_LOADER__.register(editor, 'editor', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/Editor.js');
+ __REACT_HOT_LOADER__.register(editor, 'editor', '/Users/shopback/github/react-bootstrap-table/src/Editor.js');
- __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/Editor.js');
+ __REACT_HOT_LOADER__.register(_default, 'default', '/Users/shopback/github/react-bootstrap-table/src/Editor.js');
}();
;
@@ -8996,7 +8996,7 @@ return /******/ (function(modules) { // webpackBootstrap
return;
}
- __REACT_HOT_LOADER__.register(notice, 'notice', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/Notification.js');
+ __REACT_HOT_LOADER__.register(notice, 'notice', '/Users/shopback/github/react-bootstrap-table/src/Notification.js');
}();
;
@@ -9077,9 +9077,9 @@ return /******/ (function(modules) { // webpackBootstrap
return;
}
- __REACT_HOT_LOADER__.register(ExpandComponent, 'ExpandComponent', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/ExpandComponent.js');
+ __REACT_HOT_LOADER__.register(ExpandComponent, 'ExpandComponent', '/Users/shopback/github/react-bootstrap-table/src/ExpandComponent.js');
- __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/ExpandComponent.js');
+ __REACT_HOT_LOADER__.register(_default, 'default', '/Users/shopback/github/react-bootstrap-table/src/ExpandComponent.js');
}();
;
@@ -9540,9 +9540,9 @@ return /******/ (function(modules) { // webpackBootstrap
return;
}
- __REACT_HOT_LOADER__.register(PaginationList, 'PaginationList', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/pagination/PaginationList.js');
+ __REACT_HOT_LOADER__.register(PaginationList, 'PaginationList', '/Users/shopback/github/react-bootstrap-table/src/pagination/PaginationList.js');
- __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/pagination/PaginationList.js');
+ __REACT_HOT_LOADER__.register(_default, 'default', '/Users/shopback/github/react-bootstrap-table/src/pagination/PaginationList.js');
}();
;
@@ -9647,9 +9647,9 @@ return /******/ (function(modules) { // webpackBootstrap
return;
}
- __REACT_HOT_LOADER__.register(PageButton, 'PageButton', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/pagination/PageButton.js');
+ __REACT_HOT_LOADER__.register(PageButton, 'PageButton', '/Users/shopback/github/react-bootstrap-table/src/pagination/PageButton.js');
- __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/pagination/PageButton.js');
+ __REACT_HOT_LOADER__.register(_default, 'default', '/Users/shopback/github/react-bootstrap-table/src/pagination/PageButton.js');
}();
;
@@ -9770,11 +9770,11 @@ return /******/ (function(modules) { // webpackBootstrap
return;
}
- __REACT_HOT_LOADER__.register(sizePerPageDefaultClass, 'sizePerPageDefaultClass', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/pagination/SizePerPageDropDown.js');
+ __REACT_HOT_LOADER__.register(sizePerPageDefaultClass, 'sizePerPageDefaultClass', '/Users/shopback/github/react-bootstrap-table/src/pagination/SizePerPageDropDown.js');
- __REACT_HOT_LOADER__.register(SizePerPageDropDown, 'SizePerPageDropDown', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/pagination/SizePerPageDropDown.js');
+ __REACT_HOT_LOADER__.register(SizePerPageDropDown, 'SizePerPageDropDown', '/Users/shopback/github/react-bootstrap-table/src/pagination/SizePerPageDropDown.js');
- __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/pagination/SizePerPageDropDown.js');
+ __REACT_HOT_LOADER__.register(_default, 'default', '/Users/shopback/github/react-bootstrap-table/src/pagination/SizePerPageDropDown.js');
}();
;
@@ -10498,9 +10498,9 @@ return /******/ (function(modules) { // webpackBootstrap
return;
}
- __REACT_HOT_LOADER__.register(ToolBar, 'ToolBar', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/ToolBar.js');
+ __REACT_HOT_LOADER__.register(ToolBar, 'ToolBar', '/Users/shopback/github/react-bootstrap-table/src/toolbar/ToolBar.js');
- __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/ToolBar.js');
+ __REACT_HOT_LOADER__.register(_default, 'default', '/Users/shopback/github/react-bootstrap-table/src/toolbar/ToolBar.js');
}();
;
@@ -11738,11 +11738,11 @@ return /******/ (function(modules) { // webpackBootstrap
return;
}
- __REACT_HOT_LOADER__.register(defaultModalClassName, 'defaultModalClassName', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/InsertModal.js');
+ __REACT_HOT_LOADER__.register(defaultModalClassName, 'defaultModalClassName', '/Users/shopback/github/react-bootstrap-table/src/toolbar/InsertModal.js');
- __REACT_HOT_LOADER__.register(InsertModal, 'InsertModal', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/InsertModal.js');
+ __REACT_HOT_LOADER__.register(InsertModal, 'InsertModal', '/Users/shopback/github/react-bootstrap-table/src/toolbar/InsertModal.js');
- __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/InsertModal.js');
+ __REACT_HOT_LOADER__.register(_default, 'default', '/Users/shopback/github/react-bootstrap-table/src/toolbar/InsertModal.js');
}();
;
@@ -11902,9 +11902,9 @@ return /******/ (function(modules) { // webpackBootstrap
return;
}
- __REACT_HOT_LOADER__.register(InsertModalHeader, 'InsertModalHeader', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/InsertModalHeader.js');
+ __REACT_HOT_LOADER__.register(InsertModalHeader, 'InsertModalHeader', '/Users/shopback/github/react-bootstrap-table/src/toolbar/InsertModalHeader.js');
- __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/InsertModalHeader.js');
+ __REACT_HOT_LOADER__.register(_default, 'default', '/Users/shopback/github/react-bootstrap-table/src/toolbar/InsertModalHeader.js');
}();
;
@@ -12073,9 +12073,9 @@ return /******/ (function(modules) { // webpackBootstrap
return;
}
- __REACT_HOT_LOADER__.register(InsertModalFooter, 'InsertModalFooter', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/InsertModalFooter.js');
+ __REACT_HOT_LOADER__.register(InsertModalFooter, 'InsertModalFooter', '/Users/shopback/github/react-bootstrap-table/src/toolbar/InsertModalFooter.js');
- __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/InsertModalFooter.js');
+ __REACT_HOT_LOADER__.register(_default, 'default', '/Users/shopback/github/react-bootstrap-table/src/toolbar/InsertModalFooter.js');
}();
;
@@ -12238,9 +12238,9 @@ return /******/ (function(modules) { // webpackBootstrap
return;
}
- __REACT_HOT_LOADER__.register(InsertModalBody, 'InsertModalBody', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/InsertModalBody.js');
+ __REACT_HOT_LOADER__.register(InsertModalBody, 'InsertModalBody', '/Users/shopback/github/react-bootstrap-table/src/toolbar/InsertModalBody.js');
- __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/InsertModalBody.js');
+ __REACT_HOT_LOADER__.register(_default, 'default', '/Users/shopback/github/react-bootstrap-table/src/toolbar/InsertModalBody.js');
}();
;
@@ -12349,11 +12349,11 @@ return /******/ (function(modules) { // webpackBootstrap
return;
}
- __REACT_HOT_LOADER__.register(insertBtnDefaultClass, 'insertBtnDefaultClass', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/InsertButton.js');
+ __REACT_HOT_LOADER__.register(insertBtnDefaultClass, 'insertBtnDefaultClass', '/Users/shopback/github/react-bootstrap-table/src/toolbar/InsertButton.js');
- __REACT_HOT_LOADER__.register(InsertButton, 'InsertButton', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/InsertButton.js');
+ __REACT_HOT_LOADER__.register(InsertButton, 'InsertButton', '/Users/shopback/github/react-bootstrap-table/src/toolbar/InsertButton.js');
- __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/InsertButton.js');
+ __REACT_HOT_LOADER__.register(_default, 'default', '/Users/shopback/github/react-bootstrap-table/src/toolbar/InsertButton.js');
}();
;
@@ -12462,11 +12462,11 @@ return /******/ (function(modules) { // webpackBootstrap
return;
}
- __REACT_HOT_LOADER__.register(deleteBtnDefaultClass, 'deleteBtnDefaultClass', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/DeleteButton.js');
+ __REACT_HOT_LOADER__.register(deleteBtnDefaultClass, 'deleteBtnDefaultClass', '/Users/shopback/github/react-bootstrap-table/src/toolbar/DeleteButton.js');
- __REACT_HOT_LOADER__.register(DeleteButton, 'DeleteButton', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/DeleteButton.js');
+ __REACT_HOT_LOADER__.register(DeleteButton, 'DeleteButton', '/Users/shopback/github/react-bootstrap-table/src/toolbar/DeleteButton.js');
- __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/DeleteButton.js');
+ __REACT_HOT_LOADER__.register(_default, 'default', '/Users/shopback/github/react-bootstrap-table/src/toolbar/DeleteButton.js');
}();
;
@@ -12575,11 +12575,11 @@ return /******/ (function(modules) { // webpackBootstrap
return;
}
- __REACT_HOT_LOADER__.register(exportCsvBtnDefaultClass, 'exportCsvBtnDefaultClass', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/ExportCSVButton.js');
+ __REACT_HOT_LOADER__.register(exportCsvBtnDefaultClass, 'exportCsvBtnDefaultClass', '/Users/shopback/github/react-bootstrap-table/src/toolbar/ExportCSVButton.js');
- __REACT_HOT_LOADER__.register(ExportCSVButton, 'ExportCSVButton', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/ExportCSVButton.js');
+ __REACT_HOT_LOADER__.register(ExportCSVButton, 'ExportCSVButton', '/Users/shopback/github/react-bootstrap-table/src/toolbar/ExportCSVButton.js');
- __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/ExportCSVButton.js');
+ __REACT_HOT_LOADER__.register(_default, 'default', '/Users/shopback/github/react-bootstrap-table/src/toolbar/ExportCSVButton.js');
}();
;
@@ -12691,11 +12691,11 @@ return /******/ (function(modules) { // webpackBootstrap
return;
}
- __REACT_HOT_LOADER__.register(showSelectedOnlyBtnDefaultClass, 'showSelectedOnlyBtnDefaultClass', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/ShowSelectedOnlyButton.js');
+ __REACT_HOT_LOADER__.register(showSelectedOnlyBtnDefaultClass, 'showSelectedOnlyBtnDefaultClass', '/Users/shopback/github/react-bootstrap-table/src/toolbar/ShowSelectedOnlyButton.js');
- __REACT_HOT_LOADER__.register(ShowSelectedOnlyButton, 'ShowSelectedOnlyButton', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/ShowSelectedOnlyButton.js');
+ __REACT_HOT_LOADER__.register(ShowSelectedOnlyButton, 'ShowSelectedOnlyButton', '/Users/shopback/github/react-bootstrap-table/src/toolbar/ShowSelectedOnlyButton.js');
- __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/ShowSelectedOnlyButton.js');
+ __REACT_HOT_LOADER__.register(_default, 'default', '/Users/shopback/github/react-bootstrap-table/src/toolbar/ShowSelectedOnlyButton.js');
}();
;
@@ -12801,9 +12801,9 @@ return /******/ (function(modules) { // webpackBootstrap
return;
}
- __REACT_HOT_LOADER__.register(SearchField, 'SearchField', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/SearchField.js');
+ __REACT_HOT_LOADER__.register(SearchField, 'SearchField', '/Users/shopback/github/react-bootstrap-table/src/toolbar/SearchField.js');
- __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/SearchField.js');
+ __REACT_HOT_LOADER__.register(_default, 'default', '/Users/shopback/github/react-bootstrap-table/src/toolbar/SearchField.js');
}();
;
@@ -12904,11 +12904,11 @@ return /******/ (function(modules) { // webpackBootstrap
return;
}
- __REACT_HOT_LOADER__.register(clearBtnDefaultClass, 'clearBtnDefaultClass', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/ClearSearchButton.js');
+ __REACT_HOT_LOADER__.register(clearBtnDefaultClass, 'clearBtnDefaultClass', '/Users/shopback/github/react-bootstrap-table/src/toolbar/ClearSearchButton.js');
- __REACT_HOT_LOADER__.register(ClearSearchButton, 'ClearSearchButton', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/ClearSearchButton.js');
+ __REACT_HOT_LOADER__.register(ClearSearchButton, 'ClearSearchButton', '/Users/shopback/github/react-bootstrap-table/src/toolbar/ClearSearchButton.js');
- __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/ClearSearchButton.js');
+ __REACT_HOT_LOADER__.register(_default, 'default', '/Users/shopback/github/react-bootstrap-table/src/toolbar/ClearSearchButton.js');
}();
;
@@ -13067,9 +13067,9 @@ return /******/ (function(modules) { // webpackBootstrap
return;
}
- __REACT_HOT_LOADER__.register(TableFilter, 'TableFilter', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/TableFilter.js');
+ __REACT_HOT_LOADER__.register(TableFilter, 'TableFilter', '/Users/shopback/github/react-bootstrap-table/src/TableFilter.js');
- __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/TableFilter.js');
+ __REACT_HOT_LOADER__.register(_default, 'default', '/Users/shopback/github/react-bootstrap-table/src/TableFilter.js');
}();
;
@@ -13943,7 +13943,7 @@ return /******/ (function(modules) { // webpackBootstrap
return;
}
- __REACT_HOT_LOADER__.register(TableDataStore, 'TableDataStore', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/store/TableDataStore.js');
+ __REACT_HOT_LOADER__.register(TableDataStore, 'TableDataStore', '/Users/shopback/github/react-bootstrap-table/src/store/TableDataStore.js');
}();
;
@@ -14053,13 +14053,13 @@ return /******/ (function(modules) { // webpackBootstrap
return;
}
- __REACT_HOT_LOADER__.register(saveAs, 'saveAs', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/csv_export_util.js');
+ __REACT_HOT_LOADER__.register(saveAs, 'saveAs', '/Users/shopback/github/react-bootstrap-table/src/csv_export_util.js');
- __REACT_HOT_LOADER__.register(toString, 'toString', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/csv_export_util.js');
+ __REACT_HOT_LOADER__.register(toString, 'toString', '/Users/shopback/github/react-bootstrap-table/src/csv_export_util.js');
- __REACT_HOT_LOADER__.register(exportCSV, 'exportCSV', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/csv_export_util.js');
+ __REACT_HOT_LOADER__.register(exportCSV, 'exportCSV', '/Users/shopback/github/react-bootstrap-table/src/csv_export_util.js');
- __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/csv_export_util.js');
+ __REACT_HOT_LOADER__.register(_default, 'default', '/Users/shopback/github/react-bootstrap-table/src/csv_export_util.js');
}();
;
@@ -14257,7 +14257,7 @@ return /******/ (function(modules) { // webpackBootstrap
return;
}
- __REACT_HOT_LOADER__.register(saveAs, "saveAs", "/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/filesaver.js");
+ __REACT_HOT_LOADER__.register(saveAs, "saveAs", "/Users/shopback/github/react-bootstrap-table/src/filesaver.js");
}();
;
@@ -14361,7 +14361,7 @@ return /******/ (function(modules) { // webpackBootstrap
return;
}
- __REACT_HOT_LOADER__.register(Filter, 'Filter', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/Filter.js');
+ __REACT_HOT_LOADER__.register(Filter, 'Filter', '/Users/shopback/github/react-bootstrap-table/src/Filter.js');
}();
;
@@ -14753,9 +14753,9 @@ return /******/ (function(modules) { // webpackBootstrap
return;
}
- __REACT_HOT_LOADER__.register(ButtonGroup, 'ButtonGroup', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/ButtonGroup.js');
+ __REACT_HOT_LOADER__.register(ButtonGroup, 'ButtonGroup', '/Users/shopback/github/react-bootstrap-table/src/toolbar/ButtonGroup.js');
- __REACT_HOT_LOADER__.register(_default, 'default', '/Users/allen/Node/react-bootstrap-table-new/react-bootstrap-table/src/toolbar/ButtonGroup.js');
+ __REACT_HOT_LOADER__.register(_default, 'default', '/Users/shopback/github/react-bootstrap-table/src/toolbar/ButtonGroup.js');
}();
;
diff --git a/dist/react-bootstrap-table.js.map b/dist/react-bootstrap-table.js.map
index e770a634c..f80a14654 100644
--- a/dist/react-bootstrap-table.js.map
+++ b/dist/react-bootstrap-table.js.map
@@ -1 +1 @@
-{"version":3,"file":"react-bootstrap-table.js","sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 58af73217b825786d7d8","webpack:///src/index.js","webpack:///src/BootstrapTable.js","webpack:///external {\"root\":\"React\",\"commonjs2\":\"react\",\"commonjs\":\"react\",\"amd\":\"react\"}","webpack:///./~/prop-types/index.js","webpack:///./~/process/browser.js","webpack:///./~/prop-types/factoryWithTypeCheckers.js","webpack:///./~/fbjs/lib/emptyFunction.js","webpack:///./~/fbjs/lib/invariant.js","webpack:///./~/fbjs/lib/warning.js","webpack:///./~/object-assign/index.js","webpack:///./~/prop-types/lib/ReactPropTypesSecret.js","webpack:///./~/prop-types/checkPropTypes.js","webpack:///./~/prop-types/factoryWithThrowingShims.js","webpack:///./~/classnames/index.js","webpack:///./~/react-s-alert/index.js","webpack:///./~/react-s-alert/dist/SAlert.js","webpack:///./~/react-s-alert/dist/SAlertContent.js","webpack:///external {\"root\":\"ReactDOM\",\"commonjs2\":\"react-dom\",\"commonjs\":\"react-dom\",\"amd\":\"react-dom\"}","webpack:///./~/react-s-alert/dist/s-alert-parts/s-alert-tools.js","webpack:///./~/react-s-alert/dist/s-alert-parts/s-alert-store.js","webpack:///./~/react-s-alert/dist/SAlertContentTmpl.js","webpack:///./~/react-s-alert/dist/s-alert-parts/s-alert-data-prep.js","webpack:///src/Const.js","webpack:///src/TableHeaderColumn.js","webpack:///src/util.js","webpack:///src/filters/Date.js","webpack:///src/filters/Text.js","webpack:///src/filters/Regex.js","webpack:///src/filters/Select.js","webpack:///src/filters/Number.js","webpack:///src/TableHeader.js","webpack:///src/SelectRowHeaderColumn.js","webpack:///src/ExpandRowHeaderColumn.js","webpack:///src/TableFooter.js","webpack:///src/TableBody.js","webpack:///src/TableRow.js","webpack:///src/TableColumn.js","webpack:///src/TableEditColumn.js","webpack:///src/Editor.js","webpack:///src/Notification.js","webpack:///src/ExpandComponent.js","webpack:///src/pagination/PaginationList.js","webpack:///src/pagination/PageButton.js","webpack:///src/pagination/SizePerPageDropDown.js","webpack:///src/toolbar/ToolBar.js","webpack:///./~/react-modal/lib/index.js","webpack:///./~/react-modal/lib/components/Modal.js","webpack:///./~/react-modal/lib/components/ModalPortal.js","webpack:///./~/react-modal/lib/helpers/focusManager.js","webpack:///./~/react-modal/lib/helpers/tabbable.js","webpack:///./~/react-modal/lib/helpers/scopeTab.js","webpack:///./~/react-modal/lib/helpers/ariaAppHider.js","webpack:///./~/react-modal/lib/helpers/refCount.js","webpack:///./~/react-modal/lib/helpers/bodyClassList.js","webpack:///./~/react-modal/lib/helpers/safeHTMLElement.js","webpack:///./~/exenv/index.js","webpack:///src/toolbar/InsertModal.js","webpack:///src/toolbar/InsertModalHeader.js","webpack:///src/toolbar/InsertModalFooter.js","webpack:///src/toolbar/InsertModalBody.js","webpack:///src/toolbar/InsertButton.js","webpack:///src/toolbar/DeleteButton.js","webpack:///src/toolbar/ExportCSVButton.js","webpack:///src/toolbar/ShowSelectedOnlyButton.js","webpack:///src/toolbar/SearchField.js","webpack:///src/toolbar/ClearSearchButton.js","webpack:///src/TableFilter.js","webpack:///src/store/TableDataStore.js","webpack:///src/csv_export_util.js","webpack:///src/filesaver.js","webpack:///(webpack)/buildin/amd-define.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///src/Filter.js","webpack:///./~/events/events.js","webpack:///src/toolbar/ButtonGroup.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"), require(\"react-dom\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\", \"react-dom\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ReactBootstrapTable\"] = factory(require(\"react\"), require(\"react-dom\"));\n\telse\n\t\troot[\"ReactBootstrapTable\"] = factory(root[\"React\"], root[\"ReactDOM\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__, __WEBPACK_EXTERNAL_MODULE_17__) {\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\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\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.loaded = 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// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 58af73217b825786d7d8","import BootstrapTable from './BootstrapTable';\nimport TableHeaderColumn from './TableHeaderColumn';\nimport InsertModalHeader from './toolbar/InsertModalHeader';\nimport InsertModalBody from './toolbar/InsertModalBody';\nimport InsertModalFooter from './toolbar/InsertModalFooter';\nimport InsertButton from './toolbar/InsertButton';\nimport DeleteButton from './toolbar/DeleteButton';\nimport ExportCSVButton from './toolbar/ExportCSVButton';\nimport ShowSelectedOnlyButton from './toolbar/ShowSelectedOnlyButton';\nimport ClearSearchButton from './toolbar/ClearSearchButton';\nimport SearchField from './toolbar/SearchField';\nimport ButtonGroup from './toolbar/ButtonGroup';\nimport SizePerPageDropDown from './pagination/SizePerPageDropDown';\n\nif (typeof window !== 'undefined') {\n window.BootstrapTable = BootstrapTable;\n window.TableHeaderColumn = TableHeaderColumn;\n window.InsertModalHeader = InsertModalHeader;\n window.InsertModalBody = InsertModalBody;\n window.InsertModalFooter = InsertModalFooter;\n window.InsertButton = InsertButton;\n window.DeleteButton = DeleteButton;\n window.ShowSelectedOnlyButton = ShowSelectedOnlyButton;\n window.ExportCSVButton = ExportCSVButton;\n window.ClearSearchButton = ClearSearchButton;\n window.SearchField = SearchField;\n window.ButtonGroup = ButtonGroup;\n window.SizePerPageDropDown = SizePerPageDropDown;\n}\nexport {\n BootstrapTable,\n TableHeaderColumn,\n InsertModalHeader,\n InsertModalBody,\n InsertModalFooter,\n InsertButton,\n DeleteButton,\n ShowSelectedOnlyButton,\n ExportCSVButton,\n ClearSearchButton,\n SearchField,\n ButtonGroup,\n SizePerPageDropDown\n};\n\n\n\n// WEBPACK FOOTER //\n// src/index.js","/* eslint no-alert: 0 */\n/* eslint max-len: 0 */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classSet from 'classnames';\nimport Alert from 'react-s-alert';\nimport Const from './Const';\nimport TableHeaderColumn from './TableHeaderColumn';\nimport TableHeader from './TableHeader';\nimport TableFooter from './TableFooter';\nimport TableBody from './TableBody';\nimport PaginationList from './pagination/PaginationList';\nimport ToolBar from './toolbar/ToolBar';\nimport TableFilter from './TableFilter';\nimport { TableDataStore } from './store/TableDataStore';\nimport Util from './util';\nimport exportCSVUtil from './csv_export_util';\nimport { Filter } from './Filter';\n\n\nclass BootstrapTable extends Component {\n\n constructor(props) {\n super(props);\n this.isIE = false;\n if (Util.canUseDOM()) {\n this.isIE = document.documentMode;\n }\n this.store = new TableDataStore(this.props.data ? this.props.data.slice() : []);\n this.isVerticalScroll = false;\n this.initTable(this.props);\n\n if (this.props.selectRow && this.props.selectRow.selected) {\n const copy = this.props.selectRow.selected.slice();\n this.store.setSelectedRowKey(copy);\n }\n let currPage = Const.PAGE_START_INDEX;\n if (typeof this.props.options.page !== 'undefined') {\n currPage = this.props.options.page;\n } else if (typeof this.props.options.pageStartIndex !== 'undefined') {\n currPage = this.props.options.pageStartIndex;\n }\n\n this._adjustHeaderWidth = this._adjustHeaderWidth.bind(this);\n this._adjustHeight = this._adjustHeight.bind(this);\n this._adjustTable = this._adjustTable.bind(this);\n\n this.state = {\n data: this.getTableData(),\n currPage: currPage,\n expanding: this.props.options.expanding || [],\n sizePerPage: this.props.options.sizePerPage || Const.SIZE_PER_PAGE_LIST[0],\n selectedRowKeys: this.store.getSelectedRowKeys(),\n reset: false,\n x: this.props.keyBoardNav ? 0 : -1,\n y: this.props.keyBoardNav ? 0 : -1\n };\n }\n\n initTable(props) {\n // If columns changed, clean removed columns that had filters\n if (props.children !== this.props.children && this.filter) {\n const nextDataFields = React.Children.map(props.children, column => column.props.dataField);\n React.Children.forEach(this.props.children, column => {\n const { dataField, filter } = column.props;\n if (filter && !nextDataFields.includes(dataField)) {\n // Clear filter\n this.filter.handleFilter(dataField, '', filter.type, filter);\n }\n });\n }\n\n let { keyField } = props;\n\n const isKeyFieldDefined = typeof keyField === 'string' && keyField.length;\n React.Children.forEach(props.children, column => {\n if (column === null || column === undefined) {\n // Skip null and undefined value\n return;\n }\n if (column.props.isKey) {\n if (keyField) {\n throw new Error('Error. Multiple key column detected in TableHeaderColumn.');\n }\n keyField = column.props.dataField;\n }\n if (column.props.filter) {\n // a column contains a filter\n if (!this.filter) {\n // first time create the filter on the BootstrapTable\n this.filter = new Filter();\n }\n // pass the filter to column with filter\n column.props.filter.emitter = this.filter;\n }\n });\n\n // if a column filter was created, add 'onFilterChange' listener\n if (this.filter) {\n this.filter.removeAllListeners('onFilterChange');\n this.filter.on('onFilterChange', (currentFilter) => {\n this.handleFilterData(currentFilter);\n });\n }\n\n this.colInfos = this.getColumnsDescription(props).reduce(( prev, curr ) => {\n prev[curr.name] = curr;\n return prev;\n }, {});\n\n if (!isKeyFieldDefined && !keyField) {\n throw new Error(`Error. No any key column defined in TableHeaderColumn.\n Use 'isKey={true}' to specify a unique column after version 0.5.4.`);\n }\n\n this.store.setProps({\n isPagination: props.pagination,\n keyField: keyField,\n colInfos: this.colInfos,\n multiColumnSearch: props.multiColumnSearch,\n strictSearch: props.strictSearch,\n multiColumnSort: props.multiColumnSort,\n remote: this.props.remote\n });\n }\n\n getTableData() {\n let result = [];\n const { options, pagination } = this.props;\n const sortName = options.defaultSortName || options.sortName;\n const sortOrder = options.defaultSortOrder || options.sortOrder;\n const searchText = options.defaultSearch;\n\n if (sortName && sortOrder) {\n this.store.setSortInfo(sortOrder, sortName);\n if (!this.allowRemote(Const.REMOTE_SORT)) {\n this.store.sort();\n }\n }\n\n if (searchText) {\n this.store.search(searchText);\n }\n\n if (pagination) {\n let page;\n let sizePerPage;\n if (this.store.isChangedPage()) {\n sizePerPage = this.state.sizePerPage;\n page = this.state.currPage;\n } else {\n sizePerPage = options.sizePerPage || Const.SIZE_PER_PAGE_LIST[0];\n page = options.page || 1;\n }\n result = this.store.page(page, sizePerPage).get();\n } else {\n result = this.store.get();\n }\n return result;\n }\n\n getColumnsDescription({ children }) {\n let rowCount = 0;\n React.Children.forEach(children, (column) => {\n if (column === null || column === undefined) {\n // Skip null and undefined value\n return;\n }\n\n if (Number(column.props.row) > rowCount) {\n rowCount = Number(column.props.row);\n }\n });\n return React.Children.map(children, (column, i) => {\n if (column === null || column === undefined) {\n // Return null for empty objects\n return null;\n }\n\n const rowIndex = column.props.row ? Number(column.props.row) : 0;\n const rowSpan = column.props.rowSpan ? Number(column.props.rowSpan) : 1;\n if ((rowSpan + rowIndex) === (rowCount + 1)) {\n const columnDescription = this.getColumnDescription(column);\n\n columnDescription.index = i;\n return columnDescription;\n }\n });\n }\n\n getColumnDescription(column) {\n let columnDescription = {\n name: column.props.dataField,\n align: column.props.dataAlign,\n sort: column.props.dataSort,\n format: column.props.dataFormat,\n formatExtraData: column.props.formatExtraData,\n filterFormatted: column.props.filterFormatted,\n filterValue: column.props.filterValue,\n editable: column.props.editable,\n customEditor: column.props.customEditor,\n hidden: column.props.hidden,\n hiddenOnInsert: column.props.hiddenOnInsert,\n searchable: column.props.searchable,\n className: column.props.columnClassName,\n editClassName: column.props.editColumnClassName,\n invalidEditColumnClassName: column.props.invalidEditColumnClassName,\n columnTitle: column.props.columnTitle,\n width: column.props.width,\n text: column.props.headerText || column.props.children,\n sortFunc: column.props.sortFunc,\n sortFuncExtraData: column.props.sortFuncExtraData,\n export: column.props.export,\n expandable: column.props.expandable,\n attrs: column.props.tdAttr,\n editAttrs: column.props.editTdAttr,\n style: column.props.tdStyle\n };\n\n if (column.type.name !== TableHeaderColumn.name && React.isValidElement(column.props.children)) {\n columnDescription = {\n ...columnDescription,\n ...this.getColumnDescription(React.Children.only(column.props.children))\n };\n }\n\n return columnDescription;\n }\n\n reset() {\n const { pageStartIndex } = this.props.options;\n this.store.clean();\n this.refs.body.setState({ currEditCell: null });\n this.setState(() => {\n return {\n data: this.getTableData(),\n currPage: Util.getFirstPage(pageStartIndex),\n expanding: [],\n sizePerPage: Const.SIZE_PER_PAGE_LIST[0],\n selectedRowKeys: [],\n reset: true\n };\n });\n }\n\n componentWillReceiveProps(nextProps) {\n this.initTable(nextProps);\n const { options, selectRow } = nextProps;\n let { replace } = nextProps;\n replace = replace || this.props.replace;\n\n if (!nextProps.data) {\n return;\n }\n this.store.setData(nextProps.data.slice());\n\n if (!replace) {\n // from #481\n let page = this.state.currPage;\n if (this.props.options.page !== options.page) {\n page = options.page;\n }\n // from #481\n let sizePerPage = this.state.sizePerPage;\n if (this.props.options.sizePerPage !== options.sizePerPage) {\n sizePerPage = options.sizePerPage;\n }\n\n if (this.isRemoteDataSource()) {\n const newState = { sizePerPage, reset: false, currPage: page };\n let data = nextProps.data.slice();\n if (nextProps.pagination && !this.allowRemote(Const.REMOTE_PAGE)) {\n data = this.store.page(page, sizePerPage).get();\n }\n\n if (this.store.isOnFilter) {\n if (this.store.searchText) this.handleSearch(this.store.searchText);\n if (this.store.filterObj) this.handleFilterData(this.store.filterObj);\n newState.currPage = Util.getFirstPage(nextProps.options.pageStartIndex);\n } else {\n if (!this.allowRemote(Const.REMOTE_SORT)) {\n data = this.store.sort().get();\n newState.data = data;\n }\n }\n this.setState(() => newState);\n } else {\n // #125\n // remove !options.page for #709\n if (page > Math.ceil(nextProps.data.length / sizePerPage)) {\n page = 1;\n }\n const sortList = this.store.getSortInfo();\n const sortField = options.sortName;\n const sortOrder = options.sortOrder;\n if (sortField && sortOrder) {\n this.store.setSortInfo(sortOrder, sortField);\n this.store.sort();\n } else if (sortList.length > 0) {\n this.store.sort();\n }\n const data = this.store.page(page, sizePerPage).get();\n this.setState(() => {\n return {\n data,\n currPage: page,\n sizePerPage,\n reset: false\n };\n });\n\n if (this.store.isSearching && options.afterSearch) {\n options.afterSearch(this.store.searchText, this.store.getDataIgnoringPagination());\n }\n\n if (this.store.isFiltering && options.afterColumnFilter) {\n options.afterColumnFilter(this.store.filterObj, this.store.getDataIgnoringPagination());\n }\n }\n\n // If setting the expanded rows is being handled externally\n // then overwrite the current expanded rows.\n if (this.props.options.expanding !== options.expanding) {\n this.setState(() => {\n return {\n expanding: options.expanding || []\n };\n });\n }\n\n if (selectRow && selectRow.selected) {\n // set default select rows to store.\n const copy = selectRow.selected.slice();\n this.store.setSelectedRowKey(copy);\n this.setState(() => {\n return {\n selectedRowKeys: copy,\n reset: false\n };\n });\n }\n } else {\n this.reset();\n }\n }\n\n componentDidMount() {\n this._adjustTable();\n window.addEventListener('resize', this._adjustTable);\n this.refs.body.refs.container.addEventListener('scroll', this._scrollHeader);\n if (this.props.footer) {\n this.refs.body.refs.container.addEventListener('scroll', this._scrollFooter);\n }\n if (this.props.scrollTop) {\n this._scrollTop();\n }\n }\n\n componentWillUnmount() {\n window.removeEventListener('resize', this._adjustTable);\n if (this.refs && this.refs.body && this.refs.body.refs) {\n this.refs.body.refs.container.removeEventListener('scroll', this._scrollHeader);\n if (this.props.footer) {\n this.refs.body.refs.container.removeEventListener('scroll', this._scrollFooter);\n }\n }\n if (this.filter) {\n this.filter.removeAllListeners('onFilterChange');\n }\n }\n\n componentDidUpdate() {\n this._adjustTable();\n if (this.props.options.afterTableComplete) {\n this.props.options.afterTableComplete();\n }\n }\n\n /**\n * Returns true if in the current configuration,\n * the datagrid should load its data remotely.\n *\n * @param {Object} [props] Optional. If not given, this.props will be used\n * @return {Boolean}\n */\n isRemoteDataSource(props) {\n const { remote } = (props || this.props);\n return remote === true || Util.isFunction(remote);\n }\n\n /**\n * Returns true if this action can be handled remote store\n * From #990, Sometimes, we need some actions as remote, some actions are handled by default\n * so function will tell you the target action is can be handled as remote or not.\n * @param {String} [action] Required.\n * @param {Object} [props] Optional. If not given, this.props will be used\n * @return {Boolean}\n */\n allowRemote(action, props) {\n const { remote } = (props || this.props);\n if (typeof remote === 'function') {\n const remoteObj = remote(Const.REMOTE);\n return remoteObj[action];\n } else {\n return remote;\n }\n }\n\n render() {\n const style = {\n height: this.props.height,\n maxHeight: this.props.maxHeight\n };\n\n const columns = this.getColumnsDescription(this.props);\n const sortList = this.store.getSortInfo();\n const pagination = this.renderPagination();\n const toolBar = this.renderToolBar();\n const tableFilter = this.renderTableFilter(columns);\n const isSelectAll = this.isSelectAll();\n const expandColumnOptions = this.props.expandColumnOptions;\n if (typeof expandColumnOptions.expandColumnBeforeSelectColumn === 'undefined') {\n expandColumnOptions.expandColumnBeforeSelectColumn = true;\n }\n const colGroups = Util.renderColGroup(columns, this.props.selectRow, expandColumnOptions, this.props.version);\n const tableFooter = this.renderTableFooter(this.props.footerData, this.state.data, columns, colGroups);\n let sortIndicator = this.props.options.sortIndicator;\n if (typeof this.props.options.sortIndicator === 'undefined') sortIndicator = true;\n\n const { paginationPosition = Const.PAGINATION_POS_BOTTOM } = this.props.options;\n const showPaginationOnTop = paginationPosition !== Const.PAGINATION_POS_BOTTOM;\n const showPaginationOnBottom = paginationPosition !== Const.PAGINATION_POS_TOP;\n const selectRow = { ...this.props.selectRow };\n if (this.props.cellEdit && this.props.cellEdit.mode !== Const.CELL_EDIT_NONE) {\n selectRow.clickToSelect = false;\n }\n\n const { toolbarPosition = Const.TOOLBAR_POS_TOP } = this.props.options;\n const showToolbarOnTop = toolbarPosition !== Const.TOOLBAR_POS_BOTTOM;\n const showToolbarOnBottom = toolbarPosition !== Const.TOOLBAR_POS_TOP;\n\n return (\n
\n { showToolbarOnTop ? toolBar : null }\n { showPaginationOnTop ? pagination : null }\n
\n
\n { this.props.children }\n \n
\n {\n tableFooter\n }\n
\n { tableFilter }\n { showPaginationOnBottom ? pagination : null }\n\n { showToolbarOnBottom ? toolBar : null }\n
\n
\n );\n }\n\n isSelectAll() {\n if (this.store.isEmpty()) return false;\n const { selectRow: { unselectable, onlyUnselectVisible } } = this.props;\n const keyField = this.store.getKeyField();\n const allRowKeys = onlyUnselectVisible ?\n this.store.get().map(r => r[keyField]) :\n this.store.getAllRowkey();\n let defaultSelectRowKeys = this.store.getSelectedRowKeys();\n\n if (onlyUnselectVisible) {\n defaultSelectRowKeys = defaultSelectRowKeys.filter(x => x !== allRowKeys);\n }\n\n if (defaultSelectRowKeys.length === 0) return false;\n let match = 0;\n let noFound = 0;\n let unSelectableCnt = 0;\n defaultSelectRowKeys.forEach(selected => {\n if (allRowKeys.indexOf(selected) !== -1) match++;\n else noFound++;\n if (unselectable &&\n unselectable.indexOf(selected) !== -1) unSelectableCnt++;\n });\n\n if (noFound === defaultSelectRowKeys.length) return false;\n if (match === allRowKeys.length) {\n return true;\n } else {\n if (unselectable && match <= unSelectableCnt &&\n unSelectableCnt === unselectable.length) return false;\n else return 'indeterminate';\n }\n // return (match === allRowKeys.length) ? true : 'indeterminate';\n }\n\n cleanSelected() {\n this.store.setSelectedRowKey([]);\n this.setState(() => {\n return {\n selectedRowKeys: [],\n reset: false\n };\n });\n }\n\n cleanSort() {\n this.store.cleanSortInfo();\n this.setState(() => {\n return {\n reset: false\n };\n });\n }\n\n handleSort = (order, sortField) => {\n const { autoCollapse: { sort }, options } = this.props;\n if (options.onSortChange) {\n options.onSortChange(sortField, order, this.props);\n }\n this.store.setSortInfo(order, sortField);\n if (this.allowRemote(Const.REMOTE_SORT)) {\n if (sort) {\n this.setState(() => {\n return {\n expanding: []\n };\n });\n }\n return;\n }\n\n const result = this.store.sort().get();\n this.setState(() => {\n const newState = {\n data: result,\n reset: false\n };\n if (sort) newState.expanding = [];\n return newState;\n });\n }\n\n handleExpandRow = (expanding, rowKey, isRowExpanding) => {\n const { onExpand } = this.props.options;\n if (onExpand) {\n onExpand(rowKey, !isRowExpanding);\n }\n this.setState(() => { return { expanding, reset: false }; }, () => {\n this._adjustHeaderWidth();\n });\n }\n\n handlePaginationData = (page, sizePerPage) => {\n const { onPageChange, pageStartIndex } = this.props.options;\n const emptyTable = this.store.isEmpty();\n if (onPageChange) {\n onPageChange(page, sizePerPage);\n }\n\n const state = {\n sizePerPage,\n reset: false\n };\n if (!emptyTable) state.currPage = page;\n this.setState(() => state);\n\n if (this.allowRemote(Const.REMOTE_PAGE) || emptyTable) {\n return;\n }\n\n const result = this.store.page(Util.getNormalizedPage(pageStartIndex, page), sizePerPage).get();\n this.setState(() => { return { data: result, reset: false }; });\n }\n\n handleMouseLeave = () => {\n if (this.props.options.onMouseLeave) {\n this.props.options.onMouseLeave();\n }\n }\n\n handleMouseEnter = () => {\n if (this.props.options.onMouseEnter) {\n this.props.options.onMouseEnter();\n }\n }\n\n handleRowMouseOut = (row, event) => {\n if (this.props.options.onRowMouseOut) {\n this.props.options.onRowMouseOut(row, event);\n }\n }\n\n handleRowMouseOver = (row, event) => {\n if (this.props.options.onRowMouseOver) {\n this.props.options.onRowMouseOver(row, event);\n }\n }\n\n handleNavigateCell = ({ x: offSetX, y: offSetY, lastEditCell }) => {\n const { pagination } = this.props;\n let { x, y, currPage } = this.state;\n x += offSetX;\n y += offSetY;\n\n const columns = this.store.getColInfos();\n const visibleRowSize = this.state.data.length;\n const visibleColumnSize = Object.keys(columns).filter(k => !columns[k].hidden).length;\n\n if (y >= visibleRowSize) {\n currPage++;\n const lastPage = pagination ? this.refs.pagination.getLastPage() : -1;\n if (currPage <= lastPage) {\n this.handlePaginationData(currPage, this.state.sizePerPage);\n } else {\n return;\n }\n y = 0;\n } else if (y < 0) {\n currPage--;\n if (currPage > 0) {\n this.handlePaginationData(currPage, this.state.sizePerPage);\n } else {\n return;\n }\n y = visibleRowSize - 1;\n } else if (x >= visibleColumnSize) {\n if ((y + 1) === visibleRowSize) {\n currPage++;\n const lastPage = pagination ? this.refs.pagination.getLastPage() : -1;\n if (currPage <= lastPage) {\n this.handlePaginationData(currPage, this.state.sizePerPage);\n } else {\n return;\n }\n y = 0;\n } else {\n y++;\n }\n x = lastEditCell ? 1 : 0;\n } else if (x < 0) {\n x = visibleColumnSize - 1;\n if (y === 0) {\n currPage--;\n if (currPage > 0) {\n this.handlePaginationData(currPage, this.state.sizePerPage);\n } else {\n return;\n }\n y = this.state.sizePerPage - 1;\n } else {\n y--;\n }\n }\n this.setState(() => {\n return {\n x, y, currPage, reset: false\n };\n });\n }\n\n handleRowClick = (row, rowIndex, columnIndex) => {\n const { options, keyBoardNav } = this.props;\n if (options.onRowClick) {\n options.onRowClick(row, columnIndex, rowIndex);\n }\n if (keyBoardNav) {\n let { clickToNav } = typeof keyBoardNav === 'object' ? keyBoardNav : {};\n clickToNav = clickToNav === false ? clickToNav : true;\n if (clickToNav) {\n this.setState(() => {\n return {\n x: columnIndex,\n y: rowIndex,\n reset: false\n };\n });\n }\n }\n }\n\n handleRowDoubleClick = row => {\n if (this.props.options.onRowDoubleClick) {\n this.props.options.onRowDoubleClick(row);\n }\n }\n\n handleSelectAllRow = e => {\n const isSelected = e.currentTarget.checked;\n const keyField = this.store.getKeyField();\n const { selectRow: { onSelectAll, unselectable, selected, onlyUnselectVisible } } = this.props;\n let selectedRowKeys = onlyUnselectVisible ? this.state.selectedRowKeys : [];\n let result = true;\n let rows = this.store.get();\n\n // onlyUnselectVisible default is false, #1276\n if (!isSelected && !onlyUnselectVisible) {\n rows = this.store.getRowByKey(this.state.selectedRowKeys);\n }\n\n if (unselectable && unselectable.length > 0) {\n if (isSelected) {\n rows = rows.filter(r => {\n return unselectable.indexOf(r[keyField]) === -1 ||\n (selected && selected.indexOf(r[keyField]) !== -1);\n });\n } else {\n rows = rows.filter(r => unselectable.indexOf(r[keyField]) === -1);\n }\n }\n\n if (onSelectAll) {\n result = this.props.selectRow.onSelectAll(isSelected, rows);\n }\n\n if (typeof result == 'undefined' || result !== false) {\n if (isSelected) {\n if (Array.isArray(result)) {\n selectedRowKeys = result;\n } else {\n const currentRowKeys = rows.map(r => r[keyField]);\n // onlyUnselectVisible default is false, #1276\n if (onlyUnselectVisible) {\n selectedRowKeys = selectedRowKeys.concat(currentRowKeys);\n } else {\n selectedRowKeys = currentRowKeys;\n }\n }\n } else {\n if (unselectable && selected) {\n selectedRowKeys = selected.filter(r => unselectable.indexOf(r) > -1);\n } else if (onlyUnselectVisible) {\n const currentRowKeys = rows.map(r => r[keyField]);\n selectedRowKeys = selectedRowKeys.filter(k => currentRowKeys.indexOf(k) === -1);\n }\n }\n\n this.store.setSelectedRowKey(selectedRowKeys);\n this.setState(() => { return { selectedRowKeys, reset: false }; });\n }\n }\n\n handleShowOnlySelected = () => {\n this.store.ignoreNonSelected();\n const { pageStartIndex } = this.props.options;\n let result;\n if (this.props.pagination) {\n result = this.store.page(Util.getNormalizedPage(pageStartIndex), this.state.sizePerPage).get();\n } else {\n result = this.store.get();\n }\n this.setState(() => {\n return {\n data: result,\n reset: false,\n currPage: Util.getFirstPage(pageStartIndex)\n };\n });\n }\n\n handleSelectRow = (row, isSelected, e, rowIndex) => {\n let result = true;\n let currSelected = this.store.getSelectedRowKeys();\n const rowKey = row[ this.store.getKeyField() ];\n const { selectRow } = this.props;\n if (selectRow.onSelect) {\n result = selectRow.onSelect(row, isSelected, e, rowIndex);\n }\n\n if (typeof result === 'undefined' || result !== false) {\n if (selectRow.mode === Const.ROW_SELECT_SINGLE) {\n currSelected = isSelected ? [ rowKey ] : [];\n } else {\n if (isSelected) {\n currSelected.push(rowKey);\n } else {\n currSelected = currSelected.filter(key => rowKey !== key);\n }\n }\n\n this.store.setSelectedRowKey(currSelected);\n this.setState(() => {\n return {\n selectedRowKeys: currSelected,\n reset: false\n };\n });\n }\n }\n\n handleEditCell = (newVal, rowIndex, colIndex) => {\n const { beforeSaveCell } = this.props.cellEdit;\n const columns = this.getColumnsDescription(this.props);\n const fieldName = columns[colIndex].name;\n\n const invalid = () => {\n this.setState(() => {\n return {\n data: this.store.get(),\n reset: false\n };\n });\n return;\n };\n\n if (beforeSaveCell) {\n const beforeSaveCellCB = result => {\n this.refs.body.cancelEditCell();\n if (result || result === undefined) {\n this.editCell(newVal, rowIndex, colIndex);\n } else {\n invalid();\n }\n };\n const isValid = beforeSaveCell(this.state.data[rowIndex], fieldName, newVal, beforeSaveCellCB);\n if (isValid === false && typeof isValid !== 'undefined') {\n return invalid();\n } else if (isValid === Const.AWAIT_BEFORE_CELL_EDIT) {\n /* eslint consistent-return: 0 */\n return isValid;\n }\n }\n this.editCell(newVal, rowIndex, colIndex);\n }\n\n editCell(newVal, rowIndex, colIndex) {\n const { onCellEdit } = this.props.options;\n const { afterSaveCell } = this.props.cellEdit;\n const columns = this.getColumnsDescription(this.props);\n const fieldName = columns[colIndex].name;\n if (onCellEdit) {\n newVal = onCellEdit(this.state.data[rowIndex], fieldName, newVal);\n }\n\n if (this.allowRemote(Const.REMOTE_CELL_EDIT)) {\n if (afterSaveCell) {\n afterSaveCell(this.state.data[rowIndex], fieldName, newVal);\n }\n return;\n }\n\n const result = this.store.edit(newVal, rowIndex, fieldName).get();\n this.setState(() => {\n return {\n data: result,\n reset: false\n };\n });\n\n if (afterSaveCell) {\n afterSaveCell(this.state.data[rowIndex], fieldName, newVal);\n }\n }\n\n handleAddRowAtBegin(newObj) {\n try {\n this.store.addAtBegin(newObj);\n } catch (e) {\n return e;\n }\n this._handleAfterAddingRow(newObj, true);\n }\n\n handleAddRow = newObj => {\n let isAsync = false;\n const { onAddRow } = this.props.options;\n\n const afterHandleAddRow = errMsg => {\n if (isAsync) {\n this.refs.toolbar.afterHandleSaveBtnClick(errMsg);\n } else {\n return errMsg;\n }\n };\n\n const afterAddRowCB = errMsg => {\n if (typeof errMsg !== 'undefined' && errMsg !== '') return afterHandleAddRow(errMsg);\n if (this.allowRemote(Const.REMOTE_INSERT_ROW)) {\n if (this.props.options.afterInsertRow) {\n this.props.options.afterInsertRow(newObj);\n }\n return afterHandleAddRow();\n }\n\n try {\n this.store.add(newObj);\n } catch (e) {\n return afterHandleAddRow(e.message);\n }\n this._handleAfterAddingRow(newObj, false);\n return afterHandleAddRow();\n };\n\n if (onAddRow) {\n const colInfos = this.store.getColInfos();\n const errMsg = onAddRow(newObj, colInfos, afterAddRowCB);\n\n if (errMsg !== '' && errMsg !== false) {\n return errMsg;\n } else if (typeof errMsg === 'undefined') {\n return afterAddRowCB();\n } else {\n isAsync = true;\n return !isAsync;\n }\n } else {\n return afterAddRowCB();\n }\n }\n\n getSizePerPage() {\n return this.state.sizePerPage;\n }\n\n getCurrentPage() {\n return this.state.currPage;\n }\n\n getTableDataIgnorePaging() {\n return this.store.getCurrentDisplayData();\n }\n\n getPageByRowKey = rowKey => {\n const { sizePerPage } = this.state;\n const currentData = this.store.getCurrentDisplayData();\n const keyField = this.store.getKeyField();\n const result = currentData.findIndex((x) => x[ keyField ] === rowKey);\n if (result > -1) {\n return parseInt((result / sizePerPage), 10) + 1;\n } else {\n return result;\n }\n }\n\n handleDropRow = rowKeys => {\n const dropRowKeys = rowKeys ? rowKeys : this.store.getSelectedRowKeys();\n // add confirm before the delete action if that option is set.\n if (dropRowKeys && dropRowKeys.length > 0) {\n if (this.props.options.handleConfirmDeleteRow) {\n this.props.options.handleConfirmDeleteRow(() => {\n this.deleteRow(dropRowKeys);\n }, dropRowKeys);\n } else if (confirm('Are you sure you want to delete?')) {\n this.deleteRow(dropRowKeys);\n }\n }\n }\n\n deleteRow(dropRowKeys) {\n const dropRow = this.store.getRowByKey(dropRowKeys);\n const { onDeleteRow, afterDeleteRow, pageStartIndex } = this.props.options;\n\n if (onDeleteRow) {\n onDeleteRow(dropRowKeys, dropRow);\n }\n\n this.store.setSelectedRowKey([]); // clear selected row key\n\n if (this.allowRemote(Const.REMOTE_DROP_ROW)) {\n if (afterDeleteRow) {\n afterDeleteRow(dropRowKeys, dropRow);\n }\n return;\n }\n\n this.store.remove(dropRowKeys); // remove selected Row\n let result;\n if (this.props.pagination) {\n // debugger;\n const { sizePerPage } = this.state;\n const currLastPage = Math.ceil(this.store.getDataNum() / sizePerPage);\n let { currPage } = this.state;\n if (currPage > currLastPage) currPage = currLastPage;\n // console.log(Util.getNormalizedPage(currPage));\n result = this.store.page(Util.getNormalizedPage(pageStartIndex, currPage), sizePerPage).get();\n this.setState(() => {\n return {\n data: result,\n selectedRowKeys: this.store.getSelectedRowKeys(),\n currPage,\n reset: false\n };\n });\n } else {\n result = this.store.get();\n this.setState(() => {\n return {\n data: result,\n reset: false,\n selectedRowKeys: this.store.getSelectedRowKeys()\n };\n });\n }\n if (afterDeleteRow) {\n afterDeleteRow(dropRowKeys, dropRow);\n }\n }\n\n handleFilterData = filterObj => {\n const { autoCollapse: { filter }, options } = this.props;\n const { onFilterChange, pageStartIndex } = options;\n if (onFilterChange) {\n const colInfos = this.store.getColInfos();\n onFilterChange(filterObj, colInfos);\n }\n\n this.setState(() => {\n const newState = {\n currPage: Util.getFirstPage(pageStartIndex),\n reset: false\n };\n if (filter) newState.expanding = [];\n return newState;\n });\n\n if (this.allowRemote(Const.REMOTE_FILTER)) {\n if (this.props.options.afterColumnFilter) {\n this.props.options.afterColumnFilter(filterObj, this.store.getDataIgnoringPagination());\n }\n return;\n }\n\n this.store.filter(filterObj);\n\n const sortList = this.store.getSortInfo();\n\n if (sortList.length > 0) {\n this.store.sort();\n }\n\n let result;\n\n if (this.props.pagination) {\n const { sizePerPage } = this.state;\n result = this.store.page(Util.getNormalizedPage(pageStartIndex), sizePerPage).get();\n } else {\n result = this.store.get();\n }\n if (this.props.options.afterColumnFilter) {\n this.props.options.afterColumnFilter(filterObj,\n this.store.getDataIgnoringPagination());\n }\n this.setState(() => {\n return {\n data: result,\n reset: false\n };\n });\n }\n\n handleExportCSV = () => {\n let result = {};\n\n let { csvFileName } = this.props;\n const { onExportToCSV, exportCSVSeparator, noAutoBOM, excludeCSVHeader } = this.props.options;\n if (onExportToCSV) {\n result = onExportToCSV();\n } else {\n result = this.store.getDataIgnoringPagination();\n }\n const separator = exportCSVSeparator || Const.DEFAULT_CSV_SEPARATOR;\n const keys = [];\n this.props.children.filter(_ => _ != null).map(function(column) {\n if (column.props.export === true ||\n (typeof column.props.export === 'undefined' &&\n column.props.hidden === false)) {\n keys.push({\n field: column.props.dataField,\n type: column.props.csvFieldType,\n format: column.props.csvFormat,\n extraData: column.props.csvFormatExtraData,\n header: column.props.csvHeader || column.props.dataField,\n row: Number(column.props.row) || 0,\n rowSpan: Number(column.props.rowSpan) || 1,\n colSpan: Number(column.props.colSpan) || 1\n });\n }\n });\n\n if (Util.isFunction(csvFileName)) {\n csvFileName = csvFileName();\n }\n\n exportCSVUtil(result, keys, csvFileName, separator, noAutoBOM, excludeCSVHeader);\n }\n\n handleSearch = searchText => {\n // Set search field if this function being called outside\n // but it's not necessary if calling fron inside.\n if (this.refs.toolbar) {\n this.refs.toolbar.setSearchInput(searchText);\n }\n const { autoCollapse: { search } } = this.props;\n const { onSearchChange, pageStartIndex } = this.props.options;\n if (onSearchChange) {\n const colInfos = this.store.getColInfos();\n onSearchChange(searchText, colInfos, this.props.multiColumnSearch);\n }\n\n this.setState(() => {\n const newState = {\n currPage: Util.getFirstPage(pageStartIndex),\n reset: false\n };\n if (search) newState.expanding = [];\n return newState;\n });\n\n if (this.allowRemote(Const.REMOTE_SEARCH)) {\n if (this.props.options.afterSearch) {\n this.props.options.afterSearch(searchText, this.store.getDataIgnoringPagination());\n }\n return;\n }\n\n\n this.store.search(searchText);\n\n const sortList = this.store.getSortInfo();\n\n if (sortList.length > 0) {\n this.store.sort();\n }\n\n let result;\n if (this.props.pagination) {\n const { sizePerPage } = this.state;\n result = this.store.page(Util.getNormalizedPage(pageStartIndex), sizePerPage).get();\n } else {\n result = this.store.get();\n }\n if (this.props.options.afterSearch) {\n this.props.options.afterSearch(searchText,\n this.store.getDataIgnoringPagination());\n }\n this.setState(() => {\n return {\n data: result,\n reset: false\n };\n });\n }\n\n renderPagination() {\n if (this.props.pagination) {\n let dataSize;\n if (this.allowRemote(Const.REMOTE_PAGE)) {\n dataSize = this.props.fetchInfo.dataTotalSize;\n } else {\n dataSize = this.store.getDataNum();\n }\n const { options } = this.props;\n const withFirstAndLast = options.withFirstAndLast === undefined ? true : options.withFirstAndLast;\n if (Math.ceil(dataSize / this.state.sizePerPage) <= 1 &&\n this.props.ignoreSinglePage) return null;\n return (\n \n );\n }\n return null;\n }\n\n renderToolBar() {\n const { exportCSV, selectRow, insertRow, deleteRow, search, children, keyField } = this.props;\n const enableShowOnlySelected = selectRow && selectRow.showOnlySelected;\n const print = typeof this.props.options.printToolBar === 'undefined' ?\n true : this.props.options.printToolBar;\n if (enableShowOnlySelected\n || insertRow\n || deleteRow\n || search\n || exportCSV\n || this.props.options.searchPanel\n || this.props.options.btnGroup\n || this.props.options.toolBar) {\n let columns;\n if (Array.isArray(children)) {\n columns = children.filter(_ => _ != null).map((column, r) => {\n if (!column) return;\n const { props } = column;\n const isKey = props.isKey || keyField === props.dataField;\n return {\n isKey,\n name: props.headerText || props.children,\n field: props.dataField,\n hiddenOnInsert: props.hiddenOnInsert,\n keyValidator: props.keyValidator,\n customInsertEditor: props.customInsertEditor,\n // when you want same auto generate value and not allow edit, example ID field\n autoValue: props.autoValue || false,\n // for create editor, no params for column.editable() indicate that editor for new row\n editable: props.editable && (Util.isFunction(props.editable === 'function')) ? props.editable() : props.editable,\n format: props.dataFormat ? function(value) {\n return props.dataFormat(value, null, props.formatExtraData, r).replace(/<.*?>/g, '');\n } : false\n };\n });\n } else {\n columns = [ {\n name: children.props.headerText || children.props.children,\n field: children.props.dataField,\n editable: children.props.editable,\n customInsertEditor: children.props.customInsertEditor,\n hiddenOnInsert: children.props.hiddenOnInsert,\n keyValidator: children.props.keyValidator\n } ];\n }\n return (\n \n \n
\n );\n } else {\n return null;\n }\n }\n\n renderTableFilter(columns) {\n if (this.props.columnFilter) {\n return (\n \n );\n } else {\n return null;\n }\n }\n\n renderTableFooter(footerData, footerFormatterReturnData, columns, colGroups) {\n if (this.props.footer) {\n let hideSelectColumn = true;\n const { mode } = this.props.selectRow;\n const isSelectRowDefined = Util.isSelectRowDefined(mode);\n if (isSelectRowDefined) {\n hideSelectColumn = this.props.selectRow.hideSelectColumn;\n }\n return (\n \n { footerData }\n \n );\n }\n return null;\n }\n\n _scrollTop = () => {\n const { scrollTop } = this.props;\n if (scrollTop === Const.SCROLL_TOP) {\n this.refs.body.refs.container.scrollTop = 0;\n } else if (scrollTop === Const.SCROLL_BOTTOM) {\n this.refs.body.refs.container.scrollTop = this.refs.body.refs.container.scrollHeight;\n } else if (typeof scrollTop === 'number' && !isNaN(scrollTop)) {\n this.refs.body.refs.container.scrollTop = scrollTop;\n }\n }\n _scrollHeader = (e) => {\n this.refs.header.refs.container.scrollLeft = e.currentTarget.scrollLeft;\n }\n\n _scrollFooter = (e) => {\n if (this.props.footer) {\n this.refs.footer.refs.container.scrollLeft = e.currentTarget.scrollLeft;\n }\n }\n\n _adjustTable() {\n this._adjustHeight();\n if (!this.props.printable) {\n this._adjustHeaderWidth();\n }\n }\n\n _adjustHeaderWidth() {\n const header = this.refs.header.getHeaderColGrouop();\n const tbody = this.refs.body.refs.tbody;\n const bodyHeader = this.refs.body.getHeaderColGrouop();\n const firstRow = tbody.childNodes[0];\n const isScroll = tbody.parentNode.getBoundingClientRect().height >\n tbody.parentNode.parentNode.getBoundingClientRect().height;\n\n const scrollBarWidth = isScroll ? Util.getScrollBarWidth() : 0;\n if (firstRow && this.store.getDataNum()) {\n if (isScroll || this.isVerticalScroll !== isScroll) {\n const cells = firstRow.childNodes;\n for (let i = 0; i < cells.length; i++) {\n const cell = cells[i];\n const computedStyle = window.getComputedStyle(cell);\n let width = parseFloat(computedStyle.width.replace('px', ''));\n if (this.isIE) {\n const paddingLeftWidth = parseFloat(computedStyle.paddingLeft.replace('px', ''));\n const paddingRightWidth = parseFloat(computedStyle.paddingRight.replace('px', ''));\n const borderRightWidth = parseFloat(computedStyle.borderRightWidth.replace('px', ''));\n const borderLeftWidth = parseFloat(computedStyle.borderLeftWidth.replace('px', ''));\n width = width + paddingLeftWidth + paddingRightWidth + borderRightWidth + borderLeftWidth;\n }\n const lastPadding = (cells.length - 1 === i ? scrollBarWidth : 0);\n if (width <= 0) {\n width = 120;\n cell.width = width + lastPadding + 'px';\n }\n const result = width + lastPadding + 'px';\n header[i].style.width = result;\n header[i].style.minWidth = result;\n if (cells.length - 1 === i) {\n bodyHeader[i].style.width = width + 'px';\n bodyHeader[i].style.minWidth = width + 'px';\n } else {\n bodyHeader[i].style.width = result;\n bodyHeader[i].style.minWidth = result;\n }\n }\n }\n } else {\n for (const i in bodyHeader) {\n if (bodyHeader.hasOwnProperty(i)) {\n const child = bodyHeader[i];\n if (child.style) {\n if (child.style.width) {\n header[i].style.width = child.style.width;\n }\n if (child.style.minWidth) {\n header[i].style.minWidth = child.style.minWidth;\n }\n }\n }\n }\n }\n this.isVerticalScroll = isScroll;\n }\n\n _adjustHeight() {\n const { height } = this.props;\n let { maxHeight } = this.props;\n if ((typeof height === 'number' && !isNaN(height)) || height.indexOf('%') === -1) {\n this.refs.body.refs.container.style.height =\n parseFloat(height, 10) - this.refs.header.refs.container.offsetHeight + 'px';\n }\n if (maxHeight) {\n maxHeight = typeof maxHeight === 'number' ?\n maxHeight :\n parseInt(maxHeight.replace('px', ''), 10);\n\n this.refs.body.refs.container.style.maxHeight =\n maxHeight - this.refs.header.refs.container.offsetHeight + 'px';\n }\n }\n\n _handleAfterAddingRow(newObj, atTheBeginning) {\n let result;\n if (this.props.pagination) {\n // if pagination is enabled and inserting row at the end,\n // change page to the last page\n // otherwise, change it to the first page\n const { sizePerPage } = this.state;\n\n if (atTheBeginning) {\n const { pageStartIndex } = this.props.options;\n result = this.store.page(Util.getNormalizedPage(pageStartIndex), sizePerPage).get();\n this.setState(() => {\n return {\n data: result,\n currPage: Util.getFirstPage(pageStartIndex),\n reset: false\n };\n });\n } else {\n const currLastPage = Math.ceil(this.store.getDataNum() / sizePerPage);\n result = this.store.page(currLastPage, sizePerPage).get();\n this.setState(() => {\n return {\n data: result,\n currPage: currLastPage,\n reset: false\n };\n });\n }\n } else {\n result = this.store.get();\n this.setState(() => {\n return {\n data: result,\n reset: false\n };\n });\n }\n\n if (this.props.options.afterInsertRow) {\n this.props.options.afterInsertRow(newObj);\n }\n }\n}\n\nBootstrapTable.propTypes = {\n keyField: PropTypes.string,\n height: PropTypes.oneOfType([ PropTypes.string, PropTypes.number ]),\n maxHeight: PropTypes.oneOfType([ PropTypes.string, PropTypes.number ]),\n data: PropTypes.oneOfType([ PropTypes.array, PropTypes.object ]),\n version: PropTypes.string, // bootstrap version\n remote: PropTypes.oneOfType([ PropTypes.bool, PropTypes.func ]), // remote data, default is false\n replace: PropTypes.oneOfType([ PropTypes.bool, PropTypes.func ]),\n scrollTop: PropTypes.oneOfType([ PropTypes.string, PropTypes.number ]),\n striped: PropTypes.bool,\n bordered: PropTypes.bool,\n hover: PropTypes.bool,\n condensed: PropTypes.bool,\n pagination: PropTypes.bool,\n printable: PropTypes.bool,\n withoutTabIndex: PropTypes.bool,\n keyBoardNav: PropTypes.oneOfType([ PropTypes.bool, PropTypes.object ]),\n searchPlaceholder: PropTypes.string,\n selectRow: PropTypes.shape({\n mode: PropTypes.oneOf([\n Const.ROW_SELECT_NONE,\n Const.ROW_SELECT_SINGLE,\n Const.ROW_SELECT_MULTI\n ]),\n customComponent: PropTypes.func,\n bgColor: PropTypes.oneOfType([ PropTypes.string, PropTypes.func ]),\n selected: PropTypes.array,\n onSelect: PropTypes.func,\n onSelectAll: PropTypes.func,\n clickToSelect: PropTypes.bool,\n hideSelectColumn: PropTypes.bool,\n clickToSelectAndEditCell: PropTypes.bool,\n clickToExpand: PropTypes.bool,\n showOnlySelected: PropTypes.bool,\n unselectable: PropTypes.array,\n columnWidth: PropTypes.oneOfType([ PropTypes.number, PropTypes.string ]),\n onlyUnselectVisible: PropTypes.bool\n }),\n cellEdit: PropTypes.shape({\n mode: PropTypes.string,\n blurToSave: PropTypes.bool,\n blurToEscape: PropTypes.bool,\n beforeSaveCell: PropTypes.func,\n afterSaveCell: PropTypes.func,\n nonEditableRows: PropTypes.func\n }),\n insertRow: PropTypes.bool,\n deleteRow: PropTypes.bool,\n search: PropTypes.bool,\n multiColumnSearch: PropTypes.bool,\n strictSearch: PropTypes.bool,\n columnFilter: PropTypes.bool,\n trClassName: PropTypes.any,\n trStyle: PropTypes.any,\n tableStyle: PropTypes.object,\n containerStyle: PropTypes.object,\n headerStyle: PropTypes.object,\n bodyStyle: PropTypes.object,\n containerClass: PropTypes.string,\n tableContainerClass: PropTypes.string,\n headerContainerClass: PropTypes.string,\n bodyContainerClass: PropTypes.string,\n tableHeaderClass: PropTypes.string,\n tableBodyClass: PropTypes.string,\n tableFooterClass: PropTypes.string,\n options: PropTypes.shape({\n clearSearch: PropTypes.bool,\n sortName: PropTypes.oneOfType([ PropTypes.string, PropTypes.array ]),\n sortOrder: PropTypes.oneOfType([ PropTypes.string, PropTypes.array ]),\n defaultSortName: PropTypes.oneOfType([ PropTypes.string, PropTypes.array ]),\n defaultSortOrder: PropTypes.oneOfType([ PropTypes.string, PropTypes.array ]),\n sortIndicator: PropTypes.bool,\n afterTableComplete: PropTypes.func,\n afterDeleteRow: PropTypes.func,\n afterInsertRow: PropTypes.func,\n afterSearch: PropTypes.func,\n afterColumnFilter: PropTypes.func,\n onRowClick: PropTypes.func,\n onRowDoubleClick: PropTypes.func,\n page: PropTypes.number,\n pageStartIndex: PropTypes.number,\n paginationShowsTotal: PropTypes.oneOfType([ PropTypes.bool, PropTypes.func ]),\n sizePerPageList: PropTypes.array,\n sizePerPage: PropTypes.number,\n paginationSize: PropTypes.number,\n paginationPosition: PropTypes.oneOf([\n Const.PAGINATION_POS_TOP,\n Const.PAGINATION_POS_BOTTOM,\n Const.PAGINATION_POS_BOTH\n ]),\n toolbarPosition: PropTypes.oneOf([\n Const.TOOLBAR_POS_TOP,\n Const.TOOLBAR_POS_BOTTOM,\n Const.TOOLBAR_POS_BOTH\n ]),\n hideSizePerPage: PropTypes.bool,\n hidePageListOnlyOnePage: PropTypes.bool,\n alwaysShowAllBtns: PropTypes.bool,\n withFirstAndLast: PropTypes.bool,\n keepSizePerPageState: PropTypes.bool,\n onSortChange: PropTypes.func,\n onPageChange: PropTypes.func,\n onSizePerPageList: PropTypes.func,\n onFilterChange: PropTypes.func,\n onSearchChange: PropTypes.func,\n onAddRow: PropTypes.func,\n onExportToCSV: PropTypes.func,\n onCellEdit: PropTypes.func,\n noDataText: PropTypes.oneOfType([ PropTypes.string, PropTypes.object ]),\n withoutNoDataText: PropTypes.bool,\n handleConfirmDeleteRow: PropTypes.func,\n prePage: PropTypes.any,\n nextPage: PropTypes.any,\n firstPage: PropTypes.any,\n lastPage: PropTypes.any,\n prePageTitle: PropTypes.string,\n nextPageTitle: PropTypes.string,\n firstPageTitle: PropTypes.string,\n lastPageTitle: PropTypes.string,\n searchDelayTime: PropTypes.number,\n excludeCSVHeader: PropTypes.bool,\n exportCSVText: PropTypes.string,\n exportCSVSeparator: PropTypes.string,\n insertText: PropTypes.string,\n deleteText: PropTypes.string,\n saveText: PropTypes.string,\n closeText: PropTypes.string,\n ignoreEditable: PropTypes.bool,\n defaultSearch: PropTypes.string,\n insertModalHeader: PropTypes.func,\n insertModalBody: PropTypes.func,\n insertModalFooter: PropTypes.func,\n insertModal: PropTypes.func,\n insertBtn: PropTypes.func,\n deleteBtn: PropTypes.func,\n showSelectedOnlyBtn: PropTypes.func,\n exportCSVBtn: PropTypes.func,\n clearSearchBtn: PropTypes.func,\n searchField: PropTypes.func,\n searchPanel: PropTypes.func,\n btnGroup: PropTypes.func,\n toolBar: PropTypes.func,\n sizePerPageDropDown: PropTypes.func,\n paginationPanel: PropTypes.func,\n searchPosition: PropTypes.string,\n expandRowBgColor: PropTypes.string,\n expandBy: PropTypes.string,\n expanding: PropTypes.array,\n onExpand: PropTypes.func,\n onlyOneExpanding: PropTypes.bool,\n expandBodyClass: PropTypes.oneOfType([ PropTypes.string, PropTypes.func ]),\n expandParentClass: PropTypes.oneOfType([ PropTypes.string, PropTypes.func ]),\n beforeShowError: PropTypes.func,\n printToolBar: PropTypes.bool,\n insertFailIndicator: PropTypes.string,\n noAutoBOM: PropTypes.bool\n }),\n fetchInfo: PropTypes.shape({\n dataTotalSize: PropTypes.number\n }),\n exportCSV: PropTypes.bool,\n csvFileName: PropTypes.oneOfType([ PropTypes.string, PropTypes.func ]),\n ignoreSinglePage: PropTypes.bool,\n expandableRow: PropTypes.func,\n expandComponent: PropTypes.func,\n autoCollapse: PropTypes.shape({\n sort: PropTypes.bool,\n filter: PropTypes.bool,\n search: PropTypes.bool\n }),\n expandColumnOptions: PropTypes.shape({\n columnWidth: PropTypes.oneOfType([ PropTypes.number, PropTypes.string ]),\n expandColumnVisible: PropTypes.bool,\n expandColumnComponent: PropTypes.func,\n expandColumnBeforeSelectColumn: PropTypes.bool\n }),\n footer: PropTypes.bool\n};\nBootstrapTable.defaultProps = {\n version: '3',\n replace: false,\n scrollTop: undefined,\n expandComponent: undefined,\n expandableRow: undefined,\n expandColumnOptions: {\n expandColumnVisible: false,\n expandColumnComponent: undefined,\n expandColumnBeforeSelectColumn: true\n },\n height: '100%',\n maxHeight: undefined,\n striped: false,\n bordered: true,\n hover: false,\n condensed: false,\n pagination: false,\n printable: false,\n withoutTabIndex: false,\n keyBoardNav: false,\n searchPlaceholder: undefined,\n selectRow: {\n mode: Const.ROW_SELECT_NONE,\n bgColor: Const.ROW_SELECT_BG_COLOR,\n selected: [],\n onSelect: undefined,\n onSelectAll: undefined,\n clickToSelect: false,\n hideSelectColumn: false,\n clickToSelectAndEditCell: false,\n clickToExpand: false,\n showOnlySelected: false,\n unselectable: [],\n customComponent: undefined,\n onlyUnselectVisible: false\n },\n cellEdit: {\n mode: Const.CELL_EDIT_NONE,\n blurToSave: false,\n blurToEscape: false,\n beforeSaveCell: undefined,\n afterSaveCell: undefined,\n nonEditableRows: undefined\n },\n insertRow: false,\n deleteRow: false,\n search: false,\n multiColumnSearch: false,\n strictSearch: undefined,\n multiColumnSort: 1,\n columnFilter: false,\n trClassName: '',\n trStyle: undefined,\n tableStyle: undefined,\n containerStyle: undefined,\n headerStyle: undefined,\n bodyStyle: undefined,\n containerClass: null,\n tableContainerClass: null,\n headerContainerClass: null,\n bodyContainerClass: null,\n tableHeaderClass: null,\n tableBodyClass: null,\n tableFooterClass: null,\n options: {\n clearSearch: false,\n sortName: undefined,\n sortOrder: undefined,\n defaultSortName: undefined,\n defaultSortOrder: undefined,\n sortIndicator: true,\n afterTableComplete: undefined,\n afterDeleteRow: undefined,\n afterInsertRow: undefined,\n afterSearch: undefined,\n afterColumnFilter: undefined,\n onRowClick: undefined,\n onRowDoubleClick: undefined,\n onMouseLeave: undefined,\n onMouseEnter: undefined,\n onRowMouseOut: undefined,\n onRowMouseOver: undefined,\n page: undefined,\n paginationShowsTotal: false,\n sizePerPageList: Const.SIZE_PER_PAGE_LIST,\n sizePerPage: undefined,\n paginationSize: Const.PAGINATION_SIZE,\n paginationPosition: Const.PAGINATION_POS_BOTTOM,\n toolbarPosition: Const.TOOLBAR_POS_TOP,\n hideSizePerPage: false,\n hidePageListOnlyOnePage: false,\n alwaysShowAllBtns: false,\n withFirstAndLast: true,\n keepSizePerPageState: false,\n onSizePerPageList: undefined,\n noDataText: undefined,\n withoutNoDataText: false,\n handleConfirmDeleteRow: undefined,\n prePage: Const.PRE_PAGE,\n nextPage: Const.NEXT_PAGE,\n firstPage: Const.FIRST_PAGE,\n lastPage: Const.LAST_PAGE,\n prePageTitle: Const.PRE_PAGE_TITLE,\n nextPageTitle: Const.NEXT_PAGE_TITLE,\n firstPageTitle: Const.FIRST_PAGE_TITLE,\n lastPageTitle: Const.LAST_PAGE_TITLE,\n pageStartIndex: 1,\n searchDelayTime: undefined,\n excludeCSVHeader: false,\n exportCSVText: Const.EXPORT_CSV_TEXT,\n exportCSVSeparator: Const.DEFAULT_CSV_SEPARATOR,\n insertText: Const.INSERT_BTN_TEXT,\n deleteText: Const.DELETE_BTN_TEXT,\n saveText: Const.SAVE_BTN_TEXT,\n closeText: Const.CLOSE_BTN_TEXT,\n ignoreEditable: false,\n defaultSearch: '',\n insertModalHeader: undefined,\n insertModalBody: undefined,\n insertModalFooter: undefined,\n insertModal: undefined,\n insertBtn: undefined,\n deleteBtn: undefined,\n showSelectedOnlyBtn: undefined,\n exportCSVBtn: undefined,\n clearSearchBtn: undefined,\n searchField: undefined,\n searchPanel: undefined,\n btnGroup: undefined,\n toolBar: undefined,\n sizePerPageDropDown: undefined,\n paginationPanel: undefined,\n searchPosition: 'right',\n expandRowBgColor: undefined,\n expandBy: Const.EXPAND_BY_ROW,\n expanding: [],\n onExpand: undefined,\n onlyOneExpanding: false,\n expandBodyClass: null,\n expandParentClass: null,\n beforeShowError: undefined,\n printToolBar: true,\n insertFailIndicator: Const.INSERT_FAIL_INDICATOR,\n noAutoBOM: true\n },\n fetchInfo: {\n dataTotalSize: 0\n },\n exportCSV: false,\n csvFileName: 'spreadsheet.csv',\n ignoreSinglePage: false,\n autoCollapse: {\n sort: Const.AUTO_COLLAPSE_WHEN_SORT,\n filter: Const.AUTO_COLLAPSE_WHEN_FILTER,\n search: Const.AUTO_COLLAPSE_WHEN_SEARCH\n },\n footer: false\n};\n\nexport default BootstrapTable;\n\n\n\n// WEBPACK FOOTER //\n// src/BootstrapTable.js","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external {\"root\":\"React\",\"commonjs2\":\"react\",\"commonjs\":\"react\",\"amd\":\"react\"}\n// module id = 2\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n Symbol.for &&\n Symbol.for('react.element')) ||\n 0xeac7;\n\n var isValidElement = function(object) {\n return typeof object === 'object' &&\n object !== null &&\n object.$$typeof === REACT_ELEMENT_TYPE;\n };\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(isValidElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/prop-types/index.js\n// module id = 3\n// module chunks = 0","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/process/browser.js\n// module id = 4\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar checkPropTypes = require('./checkPropTypes');\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n invariant(\n false,\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n warning(\n false,\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `%s` prop on `%s`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.',\n propFullName,\n componentName\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunction.thatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n warning(\n false,\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received %s at index %s.',\n getPostfixForTypeWarning(checker),\n i\n );\n return emptyFunction.thatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/prop-types/factoryWithTypeCheckers.js\n// module id = 5\n// module chunks = 0","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\nfunction makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\n}\n\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/emptyFunction.js\n// module id = 6\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function validateFormat(format) {};\n\nif (process.env.NODE_ENV !== 'production') {\n validateFormat = function validateFormat(format) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n };\n}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\nmodule.exports = invariant;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/invariant.js\n// module id = 7\n// module chunks = 0","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar emptyFunction = require('./emptyFunction');\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = emptyFunction;\n\nif (process.env.NODE_ENV !== 'production') {\n var printWarning = function printWarning(format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n warning = function warning(condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (format.indexOf('Failed Composite propType: ') === 0) {\n return; // Ignore CompositeComponent proptype check.\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/warning.js\n// module id = 8\n// module chunks = 0","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/object-assign/index.js\n// module id = 9\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/prop-types/lib/ReactPropTypesSecret.js\n// module id = 10\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== 'production') {\n var invariant = require('fbjs/lib/invariant');\n var warning = require('fbjs/lib/warning');\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n invariant(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'the `prop-types` package, but received `%s`.', componentName || 'React class', location, typeSpecName, typeof typeSpecs[typeSpecName]);\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error);\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n warning(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : '');\n }\n }\n }\n }\n}\n\nmodule.exports = checkPropTypes;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/prop-types/checkPropTypes.js\n// module id = 11\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n invariant(\n false,\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim\n };\n\n ReactPropTypes.checkPropTypes = emptyFunction;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/prop-types/factoryWithThrowingShims.js\n// module id = 12\n// module chunks = 0","/*!\n Copyright (c) 2016 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tclasses.push(classNames.apply(null, arg));\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/classnames/index.js\n// module id = 13\n// module chunks = 0","module.exports = require('./dist/SAlert');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-s-alert/index.js\n// module id = 14\n// module chunks = 0","(function (global, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(['exports', 'react', './SAlertContent', 'prop-types', './s-alert-parts/s-alert-store', './s-alert-parts/s-alert-tools', './s-alert-parts/s-alert-data-prep'], factory);\n } else if (typeof exports !== \"undefined\") {\n factory(exports, require('react'), require('./SAlertContent'), require('prop-types'), require('./s-alert-parts/s-alert-store'), require('./s-alert-parts/s-alert-tools'), require('./s-alert-parts/s-alert-data-prep'));\n } else {\n var mod = {\n exports: {}\n };\n factory(mod.exports, global.react, global.SAlertContent, global.propTypes, global.sAlertStore, global.sAlertTools, global.sAlertDataPrep);\n global.SAlert = mod.exports;\n }\n})(this, function (exports, _react, _SAlertContent, _propTypes, _sAlertStore, _sAlertTools, _sAlertDataPrep) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _react2 = _interopRequireDefault(_react);\n\n var _SAlertContent2 = _interopRequireDefault(_SAlertContent);\n\n var _propTypes2 = _interopRequireDefault(_propTypes);\n\n var _sAlertStore2 = _interopRequireDefault(_sAlertStore);\n\n var _sAlertTools2 = _interopRequireDefault(_sAlertTools);\n\n var _sAlertDataPrep2 = _interopRequireDefault(_sAlertDataPrep);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var insertFunc = function insertFunc(msg, data, condition) {\n var id = _sAlertTools2.default.randomId();\n _sAlertStore2.default.dispatch({\n type: 'INSERT',\n data: Object.assign({}, data, {\n id: id,\n condition: condition,\n message: msg\n })\n });\n return id;\n };\n\n var SAlert = function (_React$Component) {\n _inherits(SAlert, _React$Component);\n\n function SAlert(props) {\n _classCallCheck(this, SAlert);\n\n var _this = _possibleConstructorReturn(this, (SAlert.__proto__ || Object.getPrototypeOf(SAlert)).call(this, props));\n\n _this.state = {\n dataRight: [],\n dataLeft: [],\n dataTop: [],\n dataBottom: []\n };\n return _this;\n }\n\n _createClass(SAlert, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _this2 = this;\n\n var storeStateLeft = void 0;\n var storeStateRight = void 0;\n var storeStateTop = void 0;\n var storeStateBottom = void 0;\n\n var addToStoreRight = function addToStoreRight() {\n var length = void 0;\n storeStateRight = (0, _sAlertDataPrep2.default)('right') || [];\n length = storeStateRight.length;\n if (_this2.props.stack && _this2.props.stack.limit && length > _this2.props.stack.limit) {\n var id = storeStateRight[0].id;\n _sAlertStore2.default.dispatch({ type: 'REMOVE', data: { id: id } });\n storeStateRight = (0, _sAlertDataPrep2.default)('right') || [];\n }\n _this2.setState({ dataRight: storeStateRight });\n };\n this.unsubStoreRight = _sAlertStore2.default.subscribe(addToStoreRight);\n\n var addToStoreLeft = function addToStoreLeft() {\n var length = void 0;\n storeStateLeft = (0, _sAlertDataPrep2.default)('left') || [];\n length = storeStateLeft.length;\n if (_this2.props.stack && _this2.props.stack.limit && length > _this2.props.stack.limit) {\n var id = storeStateLeft[0].id;\n _sAlertStore2.default.dispatch({ type: 'REMOVE', data: { id: id } });\n storeStateLeft = (0, _sAlertDataPrep2.default)('left') || [];\n }\n _this2.setState({ dataLeft: storeStateLeft });\n };\n this.unsubStoreLeft = _sAlertStore2.default.subscribe(addToStoreLeft);\n\n var addToStoreTop = function addToStoreTop() {\n var length = void 0;\n storeStateTop = (0, _sAlertDataPrep2.default)('full-top') || [];\n length = storeStateTop.length;\n if (_this2.props.stack && _this2.props.stack.limit && length > _this2.props.stack.limit) {\n var id = storeStateTop[0].id;\n _sAlertStore2.default.dispatch({ type: 'REMOVE', data: { id: id } });\n storeStateTop = (0, _sAlertDataPrep2.default)('full-top') || [];\n }\n _this2.setState({ dataTop: storeStateTop });\n };\n this.unsubStoreTop = _sAlertStore2.default.subscribe(addToStoreTop);\n\n var addToStoreBottom = function addToStoreBottom() {\n var length = void 0;\n storeStateBottom = (0, _sAlertDataPrep2.default)('full-bottom') || [];\n length = storeStateBottom.length;\n if (_this2.props.stack && _this2.props.stack.limit && length > _this2.props.stack.limit) {\n var id = storeStateBottom[0].id;\n _sAlertStore2.default.dispatch({ type: 'REMOVE', data: { id: id } });\n storeStateBottom = (0, _sAlertDataPrep2.default)('full-bottom') || [];\n }\n _this2.setState({ dataBottom: storeStateBottom });\n };\n this.unsubStoreBottom = _sAlertStore2.default.subscribe(addToStoreBottom);\n\n // set up global config from global SAlert props\n // only stuff needed for getAlertData\n var globalConfig = {\n contentTemplate: this.props.contentTemplate,\n offset: this.props.offset,\n message: this.props.message,\n stack: this.props.stack,\n html: this.props.html,\n customFields: this.props.customFields,\n position: this.props.position || 'top-right'\n };\n _sAlertTools2.default.setGlobalConfig(globalConfig);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.unsubStoreTop();\n this.unsubStoreBottom();\n this.unsubStoreLeft();\n this.unsubStoreRight();\n }\n }, {\n key: 'render',\n value: function render() {\n var _this3 = this;\n\n var mapFunc = function mapFunc(alert, index) {\n var customKey = 'alert-key-' + alert.id + '-' + alert.position;\n var id = alert.id;\n var condition = _sAlertTools2.default.returnFirstDefined(alert.condition, 'info');\n var message = _sAlertTools2.default.returnFirstDefined(alert.message, _this3.props.message, '');\n var position = _sAlertTools2.default.returnFirstDefined(alert.position, _this3.props.position, 'top-right');\n var offset = _sAlertTools2.default.returnFirstDefined(alert.offset, _this3.props.offset, 0);\n var effect = _sAlertTools2.default.returnFirstDefined(alert.effect, _this3.props.effect);\n var boxPosition = alert.boxPosition;\n var beep = _sAlertTools2.default.returnFirstDefined(alert.beep, _this3.props.beep, false);\n var timeout = _sAlertTools2.default.returnFirstDefined(alert.timeout, _this3.props.timeout, 5000);\n var html = _sAlertTools2.default.returnFirstDefined(alert.html, _this3.props.html);\n var onClose = _sAlertTools2.default.returnFirstDefined(alert.onClose, _this3.props.onClose);\n var onShow = _sAlertTools2.default.returnFirstDefined(alert.onShow, _this3.props.onShow);\n var customFields = _sAlertTools2.default.returnFirstDefined(alert.customFields, _this3.props.customFields);\n var contentTemplate = _this3.props.contentTemplate;\n return _react2.default.createElement(_SAlertContent2.default, {\n key: customKey,\n id: id,\n customFields: customFields,\n condition: condition,\n message: message,\n position: position,\n effect: effect,\n boxPosition: boxPosition,\n beep: beep,\n timeout: timeout,\n html: html,\n onClose: onClose,\n onShow: onShow,\n contentTemplate: contentTemplate });\n };\n var sAlertElemsRight = this.state.dataRight.map(mapFunc);\n var sAlertElemsLeft = this.state.dataLeft.map(mapFunc);\n var sAlertElemsTop = this.state.dataTop.map(mapFunc);\n var sAlertElemsBottom = this.state.dataBottom.map(mapFunc);\n return _react2.default.createElement(\n 'div',\n { className: 's-alert-wrapper' },\n sAlertElemsRight,\n sAlertElemsLeft,\n sAlertElemsTop,\n sAlertElemsBottom\n );\n }\n }], [{\n key: 'info',\n value: function info(msg, data) {\n return insertFunc(msg, data, 'info');\n }\n }, {\n key: 'error',\n value: function error(msg, data) {\n return insertFunc(msg, data, 'error');\n }\n }, {\n key: 'warning',\n value: function warning(msg, data) {\n return insertFunc(msg, data, 'warning');\n }\n }, {\n key: 'success',\n value: function success(msg, data) {\n return insertFunc(msg, data, 'success');\n }\n }, {\n key: 'close',\n value: function close(id) {\n _sAlertStore2.default.dispatch({ type: 'REMOVE', data: { id: id } });\n }\n }, {\n key: 'closeAll',\n value: function closeAll() {\n _sAlertStore2.default.dispatch({ type: 'REMOVEALL' });\n }\n }]);\n\n return SAlert;\n }(_react2.default.Component);\n\n SAlert.propTypes = {\n message: _propTypes2.default.string,\n position: _propTypes2.default.string,\n offset: _propTypes2.default.number,\n stack: _propTypes2.default.oneOfType([_propTypes2.default.bool, _propTypes2.default.object]),\n effect: _propTypes2.default.string,\n beep: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object, _propTypes2.default.bool]),\n timeout: _propTypes2.default.oneOfType([_propTypes2.default.oneOf(['none']), _propTypes2.default.number]),\n html: _propTypes2.default.bool,\n onClose: _propTypes2.default.func,\n onShow: _propTypes2.default.func,\n customFields: _propTypes2.default.object,\n contentTemplate: _propTypes2.default.func\n };\n\n exports.default = SAlert;\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-s-alert/dist/SAlert.js\n// module id = 15\n// module chunks = 0","(function (global, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(['exports', 'react', 'react-dom', 'prop-types', './s-alert-parts/s-alert-tools', './s-alert-parts/s-alert-store', './SAlertContentTmpl'], factory);\n } else if (typeof exports !== \"undefined\") {\n factory(exports, require('react'), require('react-dom'), require('prop-types'), require('./s-alert-parts/s-alert-tools'), require('./s-alert-parts/s-alert-store'), require('./SAlertContentTmpl'));\n } else {\n var mod = {\n exports: {}\n };\n factory(mod.exports, global.react, global.reactDom, global.propTypes, global.sAlertTools, global.sAlertStore, global.SAlertContentTmpl);\n global.SAlertContent = mod.exports;\n }\n})(this, function (exports, _react, _reactDom, _propTypes, _sAlertTools, _sAlertStore, _SAlertContentTmpl) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _react2 = _interopRequireDefault(_react);\n\n var _reactDom2 = _interopRequireDefault(_reactDom);\n\n var _propTypes2 = _interopRequireDefault(_propTypes);\n\n var _sAlertTools2 = _interopRequireDefault(_sAlertTools);\n\n var _sAlertStore2 = _interopRequireDefault(_sAlertStore);\n\n var _SAlertContentTmpl2 = _interopRequireDefault(_SAlertContentTmpl);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var SAlertContent = function (_React$Component) {\n _inherits(SAlertContent, _React$Component);\n\n function SAlertContent(props) {\n _classCallCheck(this, SAlertContent);\n\n return _possibleConstructorReturn(this, (SAlertContent.__proto__ || Object.getPrototypeOf(SAlertContent)).call(this, props));\n }\n\n _createClass(SAlertContent, [{\n key: 'handleCloseAlert',\n value: function handleCloseAlert() {\n var closingTimeout = void 0;\n var alertId = this.props.id;\n var currentAlertElem = _reactDom2.default.findDOMNode(this);\n var animationClose = function animationClose() {\n currentAlertElem.style.display = 'none';\n _sAlertStore2.default.dispatch({ type: 'REMOVE', data: { id: alertId } });\n clearTimeout(closingTimeout);\n };\n if (document.hidden || document.webkitHidden || !currentAlertElem.classList.contains('s-alert-is-effect')) {\n _sAlertStore2.default.dispatch({ type: 'REMOVE', data: { id: alertId } });\n } else {\n currentAlertElem.classList.remove('s-alert-show');\n closingTimeout = setTimeout(function () {\n currentAlertElem.classList.add('s-alert-hide');\n }, 100);\n currentAlertElem.removeEventListener('webkitAnimationEnd', animationClose, false);\n currentAlertElem.removeEventListener('animationend', animationClose, false);\n currentAlertElem.addEventListener('webkitAnimationEnd', animationClose, false);\n currentAlertElem.addEventListener('animationend', animationClose, false);\n }\n // stop audio when closing\n this.alertAudio && this.alertAudio.load();\n }\n }, {\n key: 'componentWillMount',\n value: function componentWillMount() {\n var beep = this.props.beep;\n var condition = this.props.condition;\n if (beep && typeof beep === 'string') {\n this.alertAudio = new Audio(beep);\n this.alertAudio.load();\n this.alertAudio.play();\n }\n if (beep && (typeof beep === 'undefined' ? 'undefined' : _typeof(beep)) === 'object' && condition === 'info') {\n this.alertAudio = new Audio(beep.info);\n this.alertAudio.load();\n this.alertAudio.play();\n }\n if (beep && (typeof beep === 'undefined' ? 'undefined' : _typeof(beep)) === 'object' && condition === 'error') {\n this.alertAudio = new Audio(beep.error);\n this.alertAudio.load();\n this.alertAudio.play();\n }\n if (beep && (typeof beep === 'undefined' ? 'undefined' : _typeof(beep)) === 'object' && condition === 'success') {\n this.alertAudio = new Audio(beep.success);\n this.alertAudio.load();\n this.alertAudio.play();\n }\n if (beep && (typeof beep === 'undefined' ? 'undefined' : _typeof(beep)) === 'object' && condition === 'warning') {\n this.alertAudio = new Audio(beep.warning);\n this.alertAudio.load();\n this.alertAudio.play();\n }\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _this2 = this;\n\n if (typeof this.props.timeout === 'number') {\n this.closeTimer = setTimeout(function () {\n _this2.handleCloseAlert();\n }, this.props.timeout);\n }\n if (this.props.onShow) {\n this.props.onShow();\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (this.closeTimer) {\n clearTimeout(this.closeTimer);\n }\n if (this.props.onClose) {\n this.props.onClose();\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var classNames = 's-alert-box s-alert-' + this.props.condition + ' s-alert-' + this.props.position + ' ' + (this.props.effect ? 's-alert-is-effect s-alert-effect-' + this.props.effect : '') + ' s-alert-show';\n var message = this.props.html ? _react2.default.createElement('span', { dangerouslySetInnerHTML: { __html: this.props.message } }) : this.props.message;\n var styles = this.props.boxPosition ? _sAlertTools2.default.styleToObj(this.props.boxPosition) : {};\n var id = this.props.id;\n var handleClose = this.handleCloseAlert.bind(this);\n var contentTemplate = this.props.contentTemplate || _SAlertContentTmpl2.default;\n var customFields = this.props.customFields || {};\n\n return _react2.default.createElement(contentTemplate, { classNames: classNames, id: id, styles: styles, message: message, handleClose: handleClose, customFields: customFields });\n }\n }]);\n\n return SAlertContent;\n }(_react2.default.Component);\n\n SAlertContent.propTypes = {\n condition: _propTypes2.default.string.isRequired,\n message: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.node]),\n position: _propTypes2.default.string.isRequired,\n boxPosition: _propTypes2.default.string,\n id: _propTypes2.default.string.isRequired,\n effect: _propTypes2.default.string,\n beep: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object, _propTypes2.default.bool]),\n timeout: _propTypes2.default.oneOfType([_propTypes2.default.oneOf(['none']), _propTypes2.default.number]),\n html: _propTypes2.default.bool,\n onClose: _propTypes2.default.func,\n onShow: _propTypes2.default.func,\n customFields: _propTypes2.default.object,\n contentTemplate: _propTypes2.default.func\n };\n\n exports.default = SAlertContent;\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-s-alert/dist/SAlertContent.js\n// module id = 16\n// module chunks = 0","module.exports = __WEBPACK_EXTERNAL_MODULE_17__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external {\"root\":\"ReactDOM\",\"commonjs2\":\"react-dom\",\"commonjs\":\"react-dom\",\"amd\":\"react-dom\"}\n// module id = 17\n// module chunks = 0","(function (global, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(['exports'], factory);\n } else if (typeof exports !== \"undefined\") {\n factory(exports);\n } else {\n var mod = {\n exports: {}\n };\n factory(mod.exports);\n global.sAlertTools = mod.exports;\n }\n})(this, function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n var actualGlobalConfig = void 0;\n\n var sAlertTools = {\n randomId: function randomId() {\n return Math.random().toString(36).split('.')[1];\n },\n returnFirstDefined: function returnFirstDefined() {\n var value = void 0;\n var i = void 0;\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n for (i = 0; i < args.length; i++) {\n if (typeof args[i] !== 'undefined') {\n value = args[i];\n break;\n }\n }\n return value;\n },\n styleToObj: function styleToObj(input) {\n var result = {},\n i = void 0,\n entry = void 0,\n attributes = input && input.split(';').filter(Boolean);\n\n for (i = 0; i < attributes.length; i++) {\n entry = attributes[i].split(':');\n result[entry.splice(0, 1)[0].trim()] = entry.join(':').trim();\n }\n return result;\n },\n setGlobalConfig: function setGlobalConfig(config) {\n if ((typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object') {\n actualGlobalConfig = config;\n }\n },\n getGlobalConfig: function getGlobalConfig() {\n return actualGlobalConfig;\n }\n };\n\n exports.default = sAlertTools;\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-s-alert/dist/s-alert-parts/s-alert-tools.js\n// module id = 18\n// module chunks = 0","(function (global, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(['exports'], factory);\n } else if (typeof exports !== \"undefined\") {\n factory(exports);\n } else {\n var mod = {\n exports: {}\n };\n factory(mod.exports);\n global.sAlertStore = mod.exports;\n }\n})(this, function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n function _toConsumableArray(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n } else {\n return Array.from(arr);\n }\n }\n\n // custom simple store based on a awesome Redux library https://github.com/rackt/redux\n\n var createSAlertStore = function createSAlertStore(reducer) {\n var state = void 0;\n var listeners = [];\n var getState = function getState() {\n return state;\n };\n var dispatch = function dispatch(action) {\n state = reducer(state, action);\n listeners.forEach(function (listener) {\n return listener();\n });\n };\n var subscribe = function subscribe(listener) {\n listeners.push(listener);\n return function () {\n listeners = listeners.filter(function (l) {\n return l !== listener;\n });\n };\n };\n dispatch({});\n return {\n getState: getState, dispatch: dispatch, subscribe: subscribe\n };\n };\n\n var insert = function insert(state, action) {\n return [].concat(_toConsumableArray(state), [action.data]);\n };\n\n var remove = function remove(state, action) {\n var elemToRemoveArray = state.slice().filter(function (item) {\n return item.id === action.data.id;\n });\n if (Array.isArray(elemToRemoveArray)) {\n var elemToRemoveIndex = state.indexOf(elemToRemoveArray[0]);\n return [].concat(_toConsumableArray(state.slice(0, elemToRemoveIndex)), _toConsumableArray(state.slice(elemToRemoveIndex + 1)));\n }\n return state;\n };\n\n var alertsReducer = function alertsReducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var action = arguments[1];\n\n switch (action.type) {\n case 'INSERT':\n return insert(state, action);\n case 'REMOVE':\n return remove(state, action);\n case 'REMOVEALL':\n return [];\n default:\n return state;\n }\n };\n\n var sAlertStore = createSAlertStore(alertsReducer);\n\n exports.default = sAlertStore;\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-s-alert/dist/s-alert-parts/s-alert-store.js\n// module id = 19\n// module chunks = 0","(function (global, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(['exports', 'react', 'prop-types'], factory);\n } else if (typeof exports !== \"undefined\") {\n factory(exports, require('react'), require('prop-types'));\n } else {\n var mod = {\n exports: {}\n };\n factory(mod.exports, global.react, global.propTypes);\n global.SAlertContentTmpl = mod.exports;\n }\n})(this, function (exports, _react, _propTypes) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _react2 = _interopRequireDefault(_react);\n\n var _propTypes2 = _interopRequireDefault(_propTypes);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var SAlertContentTmpl = function (_React$Component) {\n _inherits(SAlertContentTmpl, _React$Component);\n\n function SAlertContentTmpl(props) {\n _classCallCheck(this, SAlertContentTmpl);\n\n return _possibleConstructorReturn(this, (SAlertContentTmpl.__proto__ || Object.getPrototypeOf(SAlertContentTmpl)).call(this, props));\n }\n\n _createClass(SAlertContentTmpl, [{\n key: 'render',\n value: function render() {\n return _react2.default.createElement(\n 'div',\n { className: this.props.classNames, id: this.props.id, style: this.props.styles },\n _react2.default.createElement(\n 'div',\n { className: 's-alert-box-inner' },\n this.props.message\n ),\n _react2.default.createElement('span', { className: 's-alert-close', onClick: this.props.handleClose })\n );\n }\n }]);\n\n return SAlertContentTmpl;\n }(_react2.default.Component);\n\n SAlertContentTmpl.propTypes = {\n id: _propTypes2.default.string.isRequired,\n classNames: _propTypes2.default.string.isRequired,\n styles: _propTypes2.default.object.isRequired,\n message: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object]).isRequired,\n handleClose: _propTypes2.default.func.isRequired,\n customFields: _propTypes2.default.object\n };\n\n exports.default = SAlertContentTmpl;\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-s-alert/dist/SAlertContentTmpl.js\n// module id = 20\n// module chunks = 0","(function (global, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(['exports', 'react', 'react-dom', '../SAlertContent', './s-alert-store', './s-alert-tools'], factory);\n } else if (typeof exports !== \"undefined\") {\n factory(exports, require('react'), require('react-dom'), require('../SAlertContent'), require('./s-alert-store'), require('./s-alert-tools'));\n } else {\n var mod = {\n exports: {}\n };\n factory(mod.exports, global.react, global.reactDom, global.SAlertContent, global.sAlertStore, global.sAlertTools);\n global.sAlertDataPrep = mod.exports;\n }\n})(this, function (exports, _react, _reactDom, _SAlertContent, _sAlertStore, _sAlertTools) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _react2 = _interopRequireDefault(_react);\n\n var _reactDom2 = _interopRequireDefault(_reactDom);\n\n var _SAlertContent2 = _interopRequireDefault(_SAlertContent);\n\n var _sAlertStore2 = _interopRequireDefault(_sAlertStore);\n\n var _sAlertTools2 = _interopRequireDefault(_sAlertTools);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var getAlertData = function getAlertData(sAlertPosition) {\n var positionTop = 0;\n var positionBottom = 0;\n var padding = 0;\n var alerts = {};\n var style = void 0;\n var docElement = void 0;\n var sAlertBoxHeight = void 0;\n var positionTypeTop = void 0;\n var positionTypeBottom = void 0;\n var checkFirst = function checkFirst(type, objId) {\n var collectionOfType = sAlertCollection.filter(function (obj) {\n return obj.position === type || sAlertGlobalConfig.position === type;\n });\n return collectionOfType && collectionOfType[0].id === objId;\n };\n var positionFunc = function positionFunc(position, positionType, alert, docElement, sAlertBoxHeight, reactComponent) {\n padding = aStack.spacing || parseInt(getComputedStyle(_reactDom2.default.findDOMNode(reactComponent))[positionType]);\n if (checkFirst(aPosition, alert.id) && aOffset) {\n position = 0;\n position = position + parseInt(aOffset);\n }\n if (checkFirst(aPosition, alert.id) && aStack.spacing) {\n position = position;\n } else {\n position = position + parseInt(padding);\n }\n style = positionType + ': ' + position + 'px;';\n position = position + sAlertBoxHeight;\n return position;\n };\n\n var sAlertGlobalConfig = _sAlertTools2.default.getGlobalConfig();\n var aStack = void 0;\n var aContentTemplate = void 0;\n var aOffset = void 0;\n var aMessage = void 0;\n var aHtml = void 0;\n var aCustomFields = void 0;\n var aPosition = void 0;\n\n var query = {};\n if (sAlertPosition === 'left') {\n query = function query(item) {\n return item.position === 'top-left' || item.position === 'bottom-left' || !item.position && (sAlertGlobalConfig.position === 'top-left' || sAlertGlobalConfig.position === 'bottom-left');\n };\n }\n if (sAlertPosition === 'right') {\n query = function query(item) {\n return item.position === 'top-right' || item.position === 'bottom-right' || !item.position && (sAlertGlobalConfig.position === 'top-right' || sAlertGlobalConfig.position === 'bottom-right');\n };\n }\n if (sAlertPosition === 'full-top') {\n query = function query(item) {\n return item.position === 'top' || !item.position && sAlertGlobalConfig.position === 'top';\n };\n }\n if (sAlertPosition === 'full-bottom') {\n query = function query(item) {\n return item.position === 'bottom' || !item.position && sAlertGlobalConfig.position === 'bottom';\n };\n }\n\n var currentState = _sAlertStore2.default.getState();\n var sAlertCollection = currentState.slice().filter(query);\n\n return sAlertCollection.map(function (alert) {\n aStack = sAlertGlobalConfig.stack;\n aContentTemplate = sAlertGlobalConfig.contentTemplate;\n aOffset = _sAlertTools2.default.returnFirstDefined(alert.offset, sAlertGlobalConfig.offset);\n aMessage = _sAlertTools2.default.returnFirstDefined(alert.message, sAlertGlobalConfig.message);\n aHtml = _sAlertTools2.default.returnFirstDefined(alert.html, sAlertGlobalConfig.html);\n aCustomFields = _sAlertTools2.default.returnFirstDefined(alert.customFields, sAlertGlobalConfig.customFields);\n aPosition = _sAlertTools2.default.returnFirstDefined(alert.position, sAlertGlobalConfig.position);\n positionTypeTop = aPosition && /top/g.test(aPosition);\n positionTypeBottom = aPosition && /bottom/g.test(aPosition);\n if (aStack) {\n // checking alert box height - needed to calculate position\n docElement = document.createElement('div');\n docElement.classList.add('s-alert-box-height');\n\n // mock element, needed for positions calculations\n var reactElement = _react2.default.createElement(_SAlertContent2.default, {\n key: _sAlertTools2.default.randomId(),\n id: _sAlertTools2.default.randomId(),\n condition: alert.condition,\n message: aMessage,\n position: aPosition,\n effect: alert.effect,\n boxPosition: alert.boxPosition,\n beep: false,\n timeout: 'none',\n html: aHtml,\n contentTemplate: aContentTemplate,\n customFields: aCustomFields\n });\n var reactComponent = _reactDom2.default.render(reactElement, docElement);\n\n document.body.appendChild(docElement);\n sAlertBoxHeight = parseInt(getComputedStyle(_reactDom2.default.findDOMNode(reactComponent))['height']);\n if (positionTypeTop) {\n positionTop = positionFunc(positionTop, 'top', alert, docElement, sAlertBoxHeight, reactComponent);\n }\n if (positionTypeBottom) {\n positionBottom = positionFunc(positionBottom, 'bottom', alert, docElement, sAlertBoxHeight, reactComponent);\n }\n var sAlertComputedStyle = getComputedStyle(_reactDom2.default.findDOMNode(reactComponent));\n if (sAlertPosition === 'left') {\n style = style + 'left: ' + (aStack.spacing || parseInt(sAlertComputedStyle.left)) + 'px;';\n }\n if (sAlertPosition === 'right') {\n style = style + 'right: ' + (aStack.spacing || parseInt(sAlertComputedStyle.right)) + 'px;';\n }\n alerts = Object.assign({}, alert, { boxPosition: style });\n _reactDom2.default.unmountComponentAtNode(docElement);\n docElement.parentNode.removeChild(docElement);\n } else if (aOffset && positionTypeTop) {\n alerts = Object.assign({}, alert, { boxPosition: 'top: ' + parseInt(aOffset) + 'px;' });\n } else if (aOffset && positionTypeBottom) {\n alerts = Object.assign({}, alert, { boxPosition: 'bottom: ' + parseInt(aOffset) + 'px;' });\n } else {\n alerts = alert;\n }\n return alerts;\n });\n };\n\n exports.default = getAlertData;\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-s-alert/dist/s-alert-parts/s-alert-data-prep.js\n// module id = 21\n// module chunks = 0","const CONST_VAR = {\n SORT_DESC: 'desc',\n SORT_ASC: 'asc',\n AWAIT_BEFORE_CELL_EDIT: 1,\n SIZE_PER_PAGE: 10,\n NEXT_PAGE: '>',\n NEXT_PAGE_TITLE: 'next page',\n LAST_PAGE: '>>',\n LAST_PAGE_TITLE: 'last page',\n PRE_PAGE: '<',\n PRE_PAGE_TITLE: 'previous page',\n FIRST_PAGE: '<<',\n FIRST_PAGE_TITLE: 'first page',\n PAGE_START_INDEX: 1,\n ROW_SELECT_BG_COLOR: '',\n ROW_SELECT_NONE: 'none',\n ROW_SELECT_SINGLE: 'radio',\n ROW_SELECT_MULTI: 'checkbox',\n CELL_EDIT_NONE: 'none',\n CELL_EDIT_CLICK: 'click',\n CELL_EDIT_DBCLICK: 'dbclick',\n SIZE_PER_PAGE_LIST: [ 10, 25, 30, 50 ],\n PAGINATION_SIZE: 5,\n PAGINATION_POS_TOP: 'top',\n PAGINATION_POS_BOTTOM: 'bottom',\n PAGINATION_POS_BOTH: 'both',\n TOOLBAR_POS_TOP: 'top',\n TOOLBAR_POS_BOTTOM: 'bottom',\n TOOLBAR_POS_BOTH: 'both',\n NO_DATA_TEXT: 'There is no data to display',\n SHOW_ONLY_SELECT: 'Show Selected Only',\n SHOW_ALL: 'Show All',\n EXPORT_CSV_TEXT: 'Export to CSV',\n INSERT_BTN_TEXT: 'New',\n DELETE_BTN_TEXT: 'Delete',\n SAVE_BTN_TEXT: 'Save',\n CLOSE_BTN_TEXT: 'Close',\n FILTER_DELAY: 500,\n SCROLL_TOP: 'Top',\n SCROLL_BOTTOM: 'Bottom',\n FILTER_TYPE: {\n TEXT: 'TextFilter',\n REGEX: 'RegexFilter',\n SELECT: 'SelectFilter',\n NUMBER: 'NumberFilter',\n DATE: 'DateFilter',\n CUSTOM: 'CustomFilter',\n ARRAY: 'ArrayFilter'\n },\n FILTER_COND_EQ: 'eq',\n FILTER_COND_LIKE: 'like',\n EXPAND_BY_ROW: 'row',\n EXPAND_BY_COL: 'column',\n REMOTE_SORT: 'sort',\n REMOTE_PAGE: 'pagination',\n REMOTE_CELL_EDIT: 'cellEdit',\n REMOTE_INSERT_ROW: 'insertRow',\n REMOTE_DROP_ROW: 'dropRow',\n REMOTE_FILTER: 'filter',\n REMOTE_SEARCH: 'search',\n REMOTE_EXPORT_CSV: 'exportCSV',\n INSERT_FAIL_INDICATOR: 'Validation errors, please check!',\n DEFAULT_CSV_SEPARATOR: ',',\n CSV_STRING_TYPE: 'string',\n CSV_NUMBER_TYPE: 'number',\n AUTO_COLLAPSE_WHEN_SORT: false,\n AUTO_COLLAPSE_WHEN_SEARCH: false,\n AUTO_COLLAPSE_WHEN_FILTER: false\n};\n\nCONST_VAR.REMOTE = {};\nCONST_VAR.REMOTE[CONST_VAR.REMOTE_SORT] = false;\nCONST_VAR.REMOTE[CONST_VAR.REMOTE_PAGE] = false;\nCONST_VAR.REMOTE[CONST_VAR.REMOTE_CELL_EDIT] = false;\nCONST_VAR.REMOTE[CONST_VAR.REMOTE_INSERT_ROW] = false;\nCONST_VAR.REMOTE[CONST_VAR.REMOTE_DROP_ROW] = false;\nCONST_VAR.REMOTE[CONST_VAR.REMOTE_FILTER] = false;\nCONST_VAR.REMOTE[CONST_VAR.REMOTE_SEARCH] = false;\nCONST_VAR.REMOTE[CONST_VAR.REMOTE_EXPORT_CSV] = false;\n\nexport default CONST_VAR;\n\n\n\n// WEBPACK FOOTER //\n// src/Const.js","/* eslint default-case: 0 */\n/* eslint guard-for-in: 0 */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classSet from 'classnames';\nimport Const from './Const';\nimport Util from './util';\nimport DateFilter from './filters/Date';\nimport TextFilter from './filters/Text';\nimport RegexFilter from './filters/Regex';\nimport SelectFilter from './filters/Select';\nimport NumberFilter from './filters/Number';\n\nclass TableHeaderColumn extends Component {\n\n constructor(props) {\n super(props);\n this.handleFilter = this.handleFilter.bind(this);\n }\n\n componentWillReceiveProps(nextProps) {\n if (nextProps.reset) {\n this.cleanFiltered();\n }\n\n // If column not displaying the same dataField, reset the filter accordingly\n if (nextProps.filter && nextProps.dataField !== this.props.dataField) {\n const emitter = nextProps.filter.emitter || {};\n const currentFilter = emitter.currentFilter || {};\n const filter = currentFilter[nextProps.dataField];\n const value = filter ? filter.value : '';\n\n const { ref } = this.getFilters() || {};\n if (this.refs[ref]) {\n this.refs[ref].setState({ value });\n }\n }\n }\n\n handleColumnClick = () => {\n if (this.props.isOnlyHead || !this.props.dataSort) return;\n let { sort: order } = this.props;\n if (!order && this.props.defaultASC) order = Const.SORT_ASC;\n else order = this.props.sort === Const.SORT_DESC ? Const.SORT_ASC : Const.SORT_DESC;\n this.props.onSort(order, this.props.dataField);\n }\n\n handleFilter(value, type) {\n const { filter } = this.props;\n filter.emitter.handleFilter(this.props.dataField, value, type, filter);\n }\n\n getFilters() {\n const { headerText, children } = this.props;\n switch (this.props.filter.type) {\n case Const.FILTER_TYPE.TEXT: {\n return (\n \n );\n }\n case Const.FILTER_TYPE.REGEX: {\n return (\n \n );\n }\n case Const.FILTER_TYPE.SELECT: {\n return (\n \n );\n }\n case Const.FILTER_TYPE.NUMBER: {\n return (\n \n );\n }\n case Const.FILTER_TYPE.DATE: {\n return (\n \n );\n }\n case Const.FILTER_TYPE.CUSTOM: {\n const elm = this.props.filter.getElement(this.handleFilter,\n this.props.filter.customFilterParameters);\n\n return React.cloneElement(elm, { ref: 'customFilter' });\n }\n }\n }\n\n componentDidMount() {\n this.refs['header-col'].setAttribute('data-field', this.props.dataField);\n }\n\n renderDefaultCaret(dataSort, isBootstrap4) {\n if (!dataSort) return null;\n if (isBootstrap4) {\n return (\n \n );\n } else {\n return (\n \n \n \n \n \n \n \n \n );\n }\n }\n\n render() {\n let defaultCaret;\n let sortCaret;\n let sortClass;\n const {\n headerText,\n dataAlign,\n dataField,\n headerAlign,\n headerTitle,\n hidden,\n sort,\n dataSort,\n sortIndicator,\n children,\n caretRender,\n className,\n isOnlyHead,\n version,\n sortHeaderColumnClassName: customSortClass,\n thStyle: style\n } = this.props;\n const thStyle = {\n textAlign: headerAlign || dataAlign,\n display: hidden ? 'none' : null,\n ...style\n };\n const isBootstrap4 = Util.isBootstrap4(version);\n if (!isOnlyHead) {\n if (sortIndicator) {\n defaultCaret = this.renderDefaultCaret(dataSort, isBootstrap4);\n }\n sortCaret = sort ? Util.renderReactSortCaret(sort, isBootstrap4) : defaultCaret;\n if (caretRender) {\n sortCaret = caretRender(sort, dataField);\n }\n }\n\n if (sort) {\n sortClass = Util.isFunction(customSortClass) ?\n customSortClass(sort, dataField) : customSortClass;\n }\n const classes = classSet(\n Util.isFunction(className) ? className() : className,\n !isOnlyHead && dataSort ? 'sort-column' : '',\n sortClass);\n\n const attr = {};\n if (headerTitle) {\n if (typeof children === 'string' && !headerText) {\n attr.title = children;\n } else {\n attr.title = headerText;\n }\n }\n return (\n \n { children }{ sortCaret }\n e.stopPropagation() }>\n { this.props.filter && !isOnlyHead ? this.getFilters() : null }\n \n | \n );\n }\n\n cleanFiltered() {\n if (!this.props.filter) return;\n\n switch (this.props.filter.type) {\n case Const.FILTER_TYPE.TEXT: {\n this.refs.textFilter.cleanFiltered();\n break;\n }\n case Const.FILTER_TYPE.REGEX: {\n this.refs.regexFilter.cleanFiltered();\n break;\n }\n case Const.FILTER_TYPE.SELECT: {\n this.refs.selectFilter.cleanFiltered();\n break;\n }\n case Const.FILTER_TYPE.NUMBER: {\n this.refs.numberFilter.cleanFiltered();\n break;\n }\n case Const.FILTER_TYPE.DATE: {\n this.refs.dateFilter.cleanFiltered();\n break;\n }\n case Const.FILTER_TYPE.CUSTOM: {\n this.refs.customFilter.cleanFiltered();\n break;\n }\n }\n }\n\n applyFilter(val) {\n if (!this.props.filter) return;\n switch (this.props.filter.type) {\n case Const.FILTER_TYPE.TEXT: {\n this.refs.textFilter.applyFilter(val);\n break;\n }\n case Const.FILTER_TYPE.REGEX: {\n this.refs.regexFilter.applyFilter(val);\n break;\n }\n case Const.FILTER_TYPE.SELECT: {\n this.refs.selectFilter.applyFilter(val);\n break;\n }\n case Const.FILTER_TYPE.NUMBER: {\n this.refs.numberFilter.applyFilter(val);\n break;\n }\n case Const.FILTER_TYPE.DATE: {\n this.refs.dateFilter.applyFilter(val);\n break;\n }\n }\n }\n}\n\nconst filterTypeArray = [];\nfor (const key in Const.FILTER_TYPE) {\n filterTypeArray.push(Const.FILTER_TYPE[key]);\n}\n\nTableHeaderColumn.propTypes = {\n dataField: PropTypes.string,\n dataAlign: PropTypes.string,\n headerAlign: PropTypes.string,\n headerTitle: PropTypes.bool,\n headerText: PropTypes.string,\n dataSort: PropTypes.bool,\n onSort: PropTypes.func,\n dataFormat: PropTypes.func,\n csvFormat: PropTypes.func,\n csvHeader: PropTypes.string,\n csvFieldType: PropTypes.oneOf([ Const.CSV_STRING_TYPE, Const.CSV_NUMBER_TYPE ]),\n isKey: PropTypes.bool,\n editable: PropTypes.any,\n hidden: PropTypes.bool,\n hiddenOnInsert: PropTypes.bool,\n searchable: PropTypes.bool,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func\n ]),\n width: PropTypes.string,\n sortFunc: PropTypes.func,\n sortFuncExtraData: PropTypes.any,\n sortHeaderColumnClassName: PropTypes.any,\n columnClassName: PropTypes.any,\n editColumnClassName: PropTypes.any,\n invalidEditColumnClassName: PropTypes.any,\n columnTitle: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.func,\n PropTypes.string\n ]),\n filterFormatted: PropTypes.bool,\n filterValue: PropTypes.func,\n sort: PropTypes.string,\n caretRender: PropTypes.func,\n formatExtraData: PropTypes.any,\n csvFormatExtraData: PropTypes.any,\n filter: PropTypes.shape({\n type: PropTypes.oneOf(filterTypeArray),\n delay: PropTypes.number,\n options: PropTypes.oneOfType([\n PropTypes.object, // for SelectFilter\n PropTypes.arrayOf(PropTypes.number) // for NumberFilter\n ]),\n numberComparators: PropTypes.arrayOf(PropTypes.string),\n emitter: PropTypes.object,\n placeholder: PropTypes.string,\n getElement: PropTypes.func,\n customFilterParameters: PropTypes.object,\n condition: PropTypes.oneOf([ Const.FILTER_COND_EQ, Const.FILTER_COND_LIKE ])\n }),\n sortIndicator: PropTypes.bool,\n export: PropTypes.bool,\n expandable: PropTypes.bool,\n tdAttr: PropTypes.object,\n editTdAttr: PropTypes.object,\n tdStyle: PropTypes.oneOfType([ PropTypes.func, PropTypes.object ]),\n thStyle: PropTypes.object,\n keyValidator: PropTypes.bool,\n defaultASC: PropTypes.bool\n};\n\nTableHeaderColumn.defaultProps = {\n dataAlign: 'left',\n headerAlign: undefined,\n headerTitle: true,\n dataSort: false,\n dataFormat: undefined,\n csvFormat: undefined,\n csvHeader: undefined,\n csvFieldType: Const.CSV_STRING_TYPE,\n isKey: false,\n editable: true,\n onSort: undefined,\n hidden: false,\n hiddenOnInsert: false,\n searchable: true,\n className: '',\n columnTitle: false,\n width: null,\n sortFunc: undefined,\n columnClassName: '',\n editColumnClassName: '',\n invalidEditColumnClassName: '',\n filterFormatted: false,\n filterValue: undefined,\n sort: undefined,\n formatExtraData: undefined,\n sortFuncExtraData: undefined,\n filter: undefined,\n sortIndicator: true,\n expandable: true,\n tdAttr: undefined,\n editTdAttr: undefined,\n tdStyle: undefined,\n thStyle: undefined,\n keyValidator: false,\n defaultASC: false\n};\n\nexport default TableHeaderColumn;\n\n\n\n// WEBPACK FOOTER //\n// src/TableHeaderColumn.js","/* eslint react/display-name: 0 */\nimport React from 'react';\nimport Const from './Const';\nimport classSet from 'classnames';\n\nexport default {\n renderReactSortCaret(order, isBootstrap4) {\n let orderClass;\n if (isBootstrap4) {\n orderClass = classSet('fa', {\n 'fa-sort-asc': order === Const.SORT_ASC,\n 'fa-sort-desc': order === Const.SORT_DESC\n });\n return (\n \n );\n } else {\n orderClass = classSet('order', {\n 'dropup': order === Const.SORT_ASC\n });\n return (\n \n \n \n );\n }\n },\n\n isFunction(obj) {\n return obj && (typeof obj === 'function');\n },\n\n getScrollBarWidth() {\n const inner = document.createElement('p');\n inner.style.width = '100%';\n inner.style.height = '200px';\n\n const outer = document.createElement('div');\n outer.style.position = 'absolute';\n outer.style.top = '0px';\n outer.style.left = '0px';\n outer.style.visibility = 'hidden';\n outer.style.width = '200px';\n outer.style.height = '150px';\n outer.style.overflow = 'hidden';\n outer.appendChild(inner);\n\n document.body.appendChild(outer);\n const w1 = inner.getBoundingClientRect().width;\n outer.style.overflow = 'scroll';\n let w2 = inner.getBoundingClientRect().width;\n\n if (w1 === w2) w2 = outer.clientWidth;\n\n document.body.removeChild(outer);\n\n return (w1 - w2);\n },\n\n canUseDOM() {\n return typeof window !== 'undefined' && typeof window.document !== 'undefined';\n },\n\n // We calculate an offset here in order to properly fetch the indexed data,\n // despite the page start index not always being 1\n getNormalizedPage(pageStartIndex, page) {\n pageStartIndex = this.getFirstPage(pageStartIndex);\n if (page === undefined) page = pageStartIndex;\n const offset = Math.abs(Const.PAGE_START_INDEX - pageStartIndex);\n return page + offset;\n },\n\n getFirstPage(pageStartIndex) {\n return pageStartIndex !== undefined ? pageStartIndex : Const.PAGE_START_INDEX;\n },\n\n isBootstrap4(version) {\n return version === '4';\n },\n\n isSelectRowDefined(mode) {\n return mode === Const.ROW_SELECT_SINGLE || mode === Const.ROW_SELECT_MULTI;\n },\n\n renderColGroup(columns, selectRow, expandColumnOptions = {}, version) {\n let selectRowHeader = null;\n let expandRowHeader = null;\n const isBootstrap4 = this.isBootstrap4(version);\n const isSelectRowDefined = this.isSelectRowDefined(selectRow.mode);\n const columnWidth = isBootstrap4 ? '38px' : '30px';\n if (isSelectRowDefined) {\n const style = {\n width: selectRow.columnWidth || columnWidth,\n minWidth: selectRow.columnWidth || columnWidth\n };\n if (!selectRow.hideSelectColumn) {\n selectRowHeader = ();\n }\n }\n if (expandColumnOptions.expandColumnVisible) {\n const style = {\n width: expandColumnOptions.columnWidth || columnWidth,\n minWidth: expandColumnOptions.columnWidth || columnWidth\n };\n expandRowHeader = ();\n }\n const theader = columns.map(function(column, i) {\n const style = {\n display: column.hidden ? 'none' : null\n };\n if (column.width) {\n const width = !isNaN(column.width) ? column.width + 'px' : column.width;\n style.width = width;\n /** add min-wdth to fix user assign column width\n not eq offsetWidth in large column table **/\n style.minWidth = width;\n }\n return ();\n });\n\n return (\n \n { expandColumnOptions.expandColumnVisible &&\n expandColumnOptions.expandColumnBeforeSelectColumn &&\n expandRowHeader }\n { selectRowHeader }\n { expandColumnOptions.expandColumnVisible &&\n !expandColumnOptions.expandColumnBeforeSelectColumn &&\n expandRowHeader }\n { theader }\n \n );\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// src/util.js","/* eslint quotes: 0 */\n/* eslint max-len: 0 */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Const from '../Const';\n\nconst legalComparators = [ '=', '>', '>=', '<', '<=', '!=' ];\n\nfunction dateParser(d) {\n return `${d.getFullYear()}-${(\"0\" + (d.getMonth() + 1)).slice(-2)}-${(\"0\" + d.getDate()).slice(-2)}`;\n}\n\nclass DateFilter extends Component {\n constructor(props) {\n super(props);\n this.dateComparators = this.props.dateComparators || legalComparators;\n this.filter = this.filter.bind(this);\n this.onChangeComparator = this.onChangeComparator.bind(this);\n }\n\n setDefaultDate() {\n let defaultDate = '';\n const { defaultValue } = this.props;\n if (defaultValue && defaultValue.date) {\n // Set the appropriate format for the input type=date, i.e. \"YYYY-MM-DD\"\n defaultDate = dateParser(new Date(defaultValue.date));\n }\n return defaultDate;\n }\n\n onChangeComparator(event) {\n let date = this.refs.inputDate.value;\n const comparator = event.target.value;\n if (date === '') {\n return;\n }\n date = new Date(date);\n this.props.filterHandler({ date, comparator }, Const.FILTER_TYPE.DATE);\n }\n\n getComparatorOptions() {\n const optionTags = [];\n optionTags.push();\n for (let i = 0; i < this.dateComparators.length; i++) {\n optionTags.push(\n \n );\n }\n return optionTags;\n }\n\n filter(event) {\n const comparator = this.refs.dateFilterComparator.value;\n const dateValue = event.target.value;\n if (dateValue) {\n this.props.filterHandler({ date: new Date(dateValue), comparator }, Const.FILTER_TYPE.DATE);\n } else {\n this.props.filterHandler(null, Const.FILTER_TYPE.DATE);\n }\n }\n\n cleanFiltered() {\n const value = this.setDefaultDate();\n const comparator = (this.props.defaultValue) ? this.props.defaultValue.comparator : '';\n this.setState(() => { return { isPlaceholderSelected: (value === '') }; });\n this.refs.dateFilterComparator.value = comparator;\n this.refs.inputDate.value = value;\n this.props.filterHandler({ date: new Date(value), comparator }, Const.FILTER_TYPE.DATE);\n }\n\n applyFilter(filterDateObj) {\n const { date, comparator } = filterDateObj;\n this.setState(() => { return { isPlaceholderSelected: (date === '') }; });\n this.refs.dateFilterComparator.value = comparator;\n this.refs.inputDate.value = dateParser(date);\n this.props.filterHandler({ date, comparator }, Const.FILTER_TYPE.DATE);\n }\n\n componentDidMount() {\n const comparator = this.refs.dateFilterComparator.value;\n const dateValue = this.refs.inputDate.value;\n if (comparator && dateValue) {\n this.props.filterHandler({ date: new Date(dateValue), comparator }, Const.FILTER_TYPE.DATE);\n }\n }\n\n render() {\n const { defaultValue, style: { date, comparator } } = this.props;\n return (\n \n \n \n
\n );\n }\n}\n\nDateFilter.propTypes = {\n filterHandler: PropTypes.func.isRequired,\n defaultValue: PropTypes.shape({\n date: PropTypes.object,\n comparator: PropTypes.oneOf(legalComparators)\n }),\n style: PropTypes.shape({\n date: PropTypes.oneOfType([ PropTypes.object ]),\n comparator: PropTypes.oneOfType([ PropTypes.object ])\n }),\n /* eslint consistent-return: 0 */\n dateComparators: function(props, propName) {\n if (!props[propName]) {\n return;\n }\n for (let i = 0; i < props[propName].length; i++) {\n let comparatorIsValid = false;\n for (let j = 0; j < legalComparators.length; j++) {\n if (legalComparators[j] === props[propName][i]) {\n comparatorIsValid = true;\n break;\n }\n }\n if (!comparatorIsValid) {\n return new Error(`Date comparator provided is not supported.\n Use only ${legalComparators}`);\n }\n }\n },\n columnName: PropTypes.any\n};\n\nDateFilter.defaultProps = {\n style: {\n date: null,\n comparator: null\n }\n};\n\n\nexport default DateFilter;\n\n\n\n// WEBPACK FOOTER //\n// src/filters/Date.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Const from '../Const';\n\nclass TextFilter extends Component {\n constructor(props) {\n super(props);\n this.filter = this.filter.bind(this);\n this.timeout = null;\n this.state = {\n value: this.props.defaultValue || ''\n };\n }\n\n filter(event) {\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n const filterValue = event.target.value;\n this.setState(() => { return { value: filterValue }; });\n this.timeout = setTimeout(() => {\n this.props.filterHandler(filterValue, Const.FILTER_TYPE.TEXT);\n }, this.props.delay);\n }\n\n cleanFiltered() {\n const value = this.props.defaultValue ? this.props.defaultValue : '';\n this.setState(() => { return { value }; });\n this.props.filterHandler(value, Const.FILTER_TYPE.TEXT);\n }\n\n applyFilter(filterText) {\n this.setState(() => { return { value: filterText }; });\n this.props.filterHandler(filterText, Const.FILTER_TYPE.TEXT);\n }\n\n componentDidMount() {\n const defaultValue = this.refs.inputText.value;\n if (defaultValue) {\n this.props.filterHandler(defaultValue, Const.FILTER_TYPE.TEXT);\n }\n }\n\n componentWillReceiveProps(nextProps) {\n if (nextProps.defaultValue !== this.props.defaultValue) {\n this.applyFilter(nextProps.defaultValue || '');\n }\n }\n\n componentWillUnmount() {\n clearTimeout(this.timeout);\n }\n\n render() {\n const { placeholder, columnName, style } = this.props;\n return (\n \n );\n }\n}\n\nTextFilter.propTypes = {\n filterHandler: PropTypes.func.isRequired,\n defaultValue: PropTypes.string,\n delay: PropTypes.number,\n placeholder: PropTypes.string,\n columnName: PropTypes.any,\n style: PropTypes.oneOfType([ PropTypes.object ])\n};\n\nTextFilter.defaultProps = {\n delay: Const.FILTER_DELAY\n};\n\nexport default TextFilter;\n\n\n\n// WEBPACK FOOTER //\n// src/filters/Text.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Const from '../Const';\n\nclass RegexFilter extends Component {\n constructor(props) {\n super(props);\n this.filter = this.filter.bind(this);\n this.timeout = null;\n }\n\n filter(event) {\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n const filterValue = event.target.value;\n this.timeout = setTimeout(() => {\n this.props.filterHandler(filterValue, Const.FILTER_TYPE.REGEX);\n }, this.props.delay);\n }\n\n cleanFiltered() {\n const value = this.props.defaultValue ? this.props.defaultValue : '';\n this.refs.inputText.value = value;\n this.props.filterHandler(value, Const.FILTER_TYPE.TEXT);\n }\n\n applyFilter(filterRegx) {\n this.refs.inputText.value = filterRegx;\n this.props.filterHandler(filterRegx, Const.FILTER_TYPE.REGEX);\n }\n\n componentDidMount() {\n const value = this.refs.inputText.value;\n if (value) {\n this.props.filterHandler(value, Const.FILTER_TYPE.REGEX);\n }\n }\n\n componentWillUnmount() {\n clearTimeout(this.timeout);\n }\n\n render() {\n const { defaultValue, placeholder, columnName, style } = this.props;\n return (\n \n );\n }\n}\n\nRegexFilter.propTypes = {\n filterHandler: PropTypes.func.isRequired,\n defaultValue: PropTypes.string,\n delay: PropTypes.number,\n placeholder: PropTypes.string,\n columnName: PropTypes.any,\n style: PropTypes.oneOfType([ PropTypes.object ])\n};\n\nRegexFilter.defaultProps = {\n delay: Const.FILTER_DELAY\n};\n\nexport default RegexFilter;\n\n\n\n// WEBPACK FOOTER //\n// src/filters/Regex.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classSet from 'classnames';\nimport Const from '../Const';\n\nfunction optionsEquals(options1, options2) {\n const keys = Object.keys(options1);\n for (const k in keys) {\n if (options1[k] !== options2[k]) {\n return false;\n }\n }\n return Object.keys(options1).length === Object.keys(options2).length;\n}\n\nclass SelectFilter extends Component {\n constructor(props) {\n super(props);\n this.filter = this.filter.bind(this);\n this.state = {\n isPlaceholderSelected: (this.props.defaultValue === undefined ||\n !this.props.options.hasOwnProperty(this.props.defaultValue))\n };\n }\n\n componentWillReceiveProps() {\n const currentSelectValue = this.refs.selectInput.value;\n const isPlaceholderSelected = !currentSelectValue || currentSelectValue === '';\n this.setState(() => {\n return {\n isPlaceholderSelected\n };\n });\n }\n\n componentDidUpdate(prevProps) {\n let needFilter = false;\n if (this.props.defaultValue !== prevProps.defaultValue) {\n needFilter = true;\n } else if (!optionsEquals(this.props.options, prevProps.options)) {\n needFilter = true;\n }\n if (needFilter) {\n const value = this.refs.selectInput.value;\n if (value) {\n this.props.filterHandler(value, Const.FILTER_TYPE.SELECT);\n }\n }\n }\n\n filter(event) {\n const { value } = event.target;\n this.setState(() => { return { isPlaceholderSelected: (value === '') }; });\n this.props.filterHandler(value, Const.FILTER_TYPE.SELECT);\n }\n\n cleanFiltered() {\n const value = (this.props.defaultValue !== undefined) ? this.props.defaultValue : '';\n this.setState(() => { return { isPlaceholderSelected: (value === '') }; });\n this.refs.selectInput.value = value;\n this.props.filterHandler(value, Const.FILTER_TYPE.SELECT);\n }\n\n applyFilter(filterOption) {\n filterOption = filterOption + '';\n this.setState(() => { return { isPlaceholderSelected: (filterOption === '') }; });\n this.refs.selectInput.value = filterOption;\n this.props.filterHandler(filterOption, Const.FILTER_TYPE.SELECT);\n }\n\n getOptions() {\n const optionTags = [];\n const { options, placeholder, columnName, selectText, withoutEmptyOption } = this.props;\n const selectTextValue = (selectText !== undefined) ? selectText : 'Select';\n if (!withoutEmptyOption) {\n optionTags.push((\n \n ));\n }\n Object.keys(options).map(key => {\n optionTags.push();\n });\n return optionTags;\n }\n\n componentDidMount() {\n const value = this.refs.selectInput.value;\n if (value) {\n this.props.filterHandler(value, Const.FILTER_TYPE.SELECT);\n }\n }\n\n render() {\n const selectClass = classSet('filter', 'select-filter', 'form-control',\n { 'placeholder-selected': this.state.isPlaceholderSelected });\n\n return (\n \n );\n }\n}\n\nSelectFilter.propTypes = {\n filterHandler: PropTypes.func.isRequired,\n options: PropTypes.object.isRequired,\n placeholder: PropTypes.string,\n columnName: PropTypes.any,\n style: PropTypes.oneOfType([ PropTypes.object ])\n};\n\nexport default SelectFilter;\n\n\n\n// WEBPACK FOOTER //\n// src/filters/Select.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classSet from 'classnames';\nimport Const from '../Const';\n\nconst legalComparators = [ '=', '>', '>=', '<', '<=', '!=' ];\n\nclass NumberFilter extends Component {\n constructor(props) {\n super(props);\n this.numberComparators = this.props.numberComparators || legalComparators;\n this.timeout = null;\n this.state = {\n isPlaceholderSelected: (this.props.defaultValue === undefined ||\n this.props.defaultValue.number === undefined ||\n (this.props.options &&\n this.props.options.indexOf(this.props.defaultValue.number) === -1))\n };\n this.onChangeNumber = this.onChangeNumber.bind(this);\n this.onChangeNumberSet = this.onChangeNumberSet.bind(this);\n this.onChangeComparator = this.onChangeComparator.bind(this);\n }\n\n onChangeNumber(event) {\n const comparator = this.refs.numberFilterComparator.value;\n if (comparator === '') {\n return;\n }\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n const filterValue = event.target.value;\n this.timeout = setTimeout(() => {\n this.props.filterHandler({ number: filterValue, comparator }, Const.FILTER_TYPE.NUMBER);\n }, this.props.delay);\n }\n\n onChangeNumberSet(event) {\n const comparator = this.refs.numberFilterComparator.value;\n const { value } = event.target;\n this.setState(() => { return { isPlaceholderSelected: (value === '') }; });\n if (comparator === '') {\n return;\n }\n this.props.filterHandler({ number: value, comparator }, Const.FILTER_TYPE.NUMBER);\n }\n\n onChangeComparator(event) {\n const value = this.refs.numberFilter.value;\n const comparator = event.target.value;\n if (value === '') {\n return;\n }\n this.props.filterHandler({ number: value, comparator }, Const.FILTER_TYPE.NUMBER);\n }\n\n cleanFiltered() {\n const value = (this.props.defaultValue) ? this.props.defaultValue.number : '';\n const comparator = (this.props.defaultValue) ? this.props.defaultValue.comparator : '';\n this.setState(() => { return { isPlaceholderSelected: (value === '') }; });\n this.refs.numberFilterComparator.value = comparator;\n this.refs.numberFilter.value = value;\n this.props.filterHandler({ number: value, comparator }, Const.FILTER_TYPE.NUMBER);\n }\n\n applyFilter(filterObj) {\n const { number, comparator } = filterObj;\n this.setState(() => { return { isPlaceholderSelected: (number === '') }; });\n this.refs.numberFilterComparator.value = comparator;\n this.refs.numberFilter.value = number;\n this.props.filterHandler({ number, comparator }, Const.FILTER_TYPE.NUMBER);\n }\n\n getComparatorOptions() {\n const optionTags = [];\n const { withoutEmptyComparatorOption } = this.props;\n if (!withoutEmptyComparatorOption) {\n optionTags.push();\n }\n for (let i = 0; i < this.numberComparators.length; i++) {\n optionTags.push(\n \n );\n }\n return optionTags;\n }\n\n getNumberOptions() {\n const optionTags = [];\n const { options, withoutEmptyNumberOption } = this.props;\n if (!withoutEmptyNumberOption) {\n optionTags.push(\n \n );\n }\n for (let i = 0; i < options.length; i++) {\n optionTags.push();\n }\n return optionTags;\n }\n\n componentDidMount() {\n const comparator = this.refs.numberFilterComparator.value;\n const number = this.refs.numberFilter.value;\n if (comparator && number) {\n this.props.filterHandler({ number, comparator }, Const.FILTER_TYPE.NUMBER);\n }\n }\n\n componentWillUnmount() {\n clearTimeout(this.timeout);\n }\n\n render() {\n const selectClass = classSet(\n 'select-filter', 'number-filter-input', 'form-control',\n { 'placeholder-selected': this.state.isPlaceholderSelected });\n\n return (\n \n \n {\n (this.props.options) ?\n :\n \n }\n
\n );\n }\n}\n\nNumberFilter.propTypes = {\n filterHandler: PropTypes.func.isRequired,\n options: PropTypes.arrayOf(PropTypes.number),\n defaultValue: PropTypes.shape({\n number: PropTypes.number,\n comparator: PropTypes.oneOf(legalComparators)\n }),\n style: PropTypes.shape({\n number: PropTypes.oneOfType([ PropTypes.object ]),\n comparator: PropTypes.oneOfType([ PropTypes.object ])\n }),\n delay: PropTypes.number,\n /* eslint consistent-return: 0 */\n numberComparators: function(props, propName) {\n if (!props[propName]) {\n return;\n }\n for (let i = 0; i < props[propName].length; i++) {\n let comparatorIsValid = false;\n for (let j = 0; j < legalComparators.length; j++) {\n if (legalComparators[j] === props[propName][i]) {\n comparatorIsValid = true;\n break;\n }\n }\n if (!comparatorIsValid) {\n return new Error(`Number comparator provided is not supported.\n Use only ${legalComparators}`);\n }\n }\n },\n placeholder: PropTypes.string,\n columnName: PropTypes.any,\n withoutEmptyComparatorOption: PropTypes.bool,\n withoutEmptyNumberOption: PropTypes.bool\n};\n\nNumberFilter.defaultProps = {\n delay: Const.FILTER_DELAY,\n withoutEmptyComparatorOption: false,\n withoutEmptyNumberOption: false,\n style: {\n number: null,\n comparator: null\n }\n};\n\nexport default NumberFilter;\n\n\n\n// WEBPACK FOOTER //\n// src/filters/Number.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport Const from './Const';\nimport classSet from 'classnames';\nimport SelectRowHeaderColumn from './SelectRowHeaderColumn';\nimport ExpandRowHeaderColumn from './ExpandRowHeaderColumn';\nimport Utils from './util';\n\nclass Checkbox extends Component {\n componentDidMount() { this.update(this.props.checked); }\n componentWillReceiveProps(props) { this.update(props.checked); }\n update(checked) {\n ReactDOM.findDOMNode(this).indeterminate = checked === 'indeterminate';\n }\n render() {\n return (\n \n );\n }\n}\n\nfunction getSortOrder(sortList, field, enableSort) {\n if (!enableSort) return undefined;\n const result = sortList.filter(sortObj => {\n return sortObj.sortField === field;\n });\n if (result.length > 0) {\n return result[0].order;\n } else {\n return undefined;\n }\n}\n\nclass TableHeader extends Component {\n\n render() {\n const { sortIndicator, sortList, onSort, reset, version, condensed, bordered } = this.props;\n const containerClasses = classSet(\n 'react-bs-container-header',\n 'table-header-wrapper',\n this.props.headerContainerClass);\n const customTableClasses = {\n 'table-bordered': bordered\n };\n if (condensed) {\n if (Utils.isBootstrap4(version)) customTableClasses['table-sm'] = true;\n else customTableClasses['table-condensed'] = true;\n }\n const tableClasses = classSet(\n 'table', 'table-hover', customTableClasses, this.props.tableHeaderClass);\n\n const rowCount = Math.max(...React.Children.map(this.props.children, elm =>\n (elm && elm.props.row) ? Number(elm.props.row) : 0\n ));\n\n const rows = [];\n let rowKey = 0;\n\n rows[0] = [];\n rows[0].push( [\n this.props.expandColumnVisible &&\n this.props.expandColumnBeforeSelectColumn &&\n \n ], [\n this.renderSelectRowHeader(rowCount + 1, rowKey++)\n ], [\n this.props.expandColumnVisible &&\n !this.props.expandColumnBeforeSelectColumn &&\n \n ]);\n\n React.Children.forEach(this.props.children, (elm) => {\n if (elm === null || elm === undefined) {\n // Skip null or undefined elements.\n return;\n }\n const { dataField, dataSort } = elm.props;\n const sort = getSortOrder(sortList, dataField, dataSort);\n const rowIndex = elm.props.row ? Number(elm.props.row) : 0;\n const rowSpan = elm.props.rowSpan ? Number(elm.props.rowSpan) : 1;\n if (rows[rowIndex] === undefined) {\n rows[rowIndex] = [];\n }\n if ((rowSpan + rowIndex) === (rowCount + 1)) {\n rows[rowIndex].push(React.cloneElement(\n elm, { reset, key: rowKey++, onSort, sort, sortIndicator, isOnlyHead: false, version }\n ));\n } else {\n rows[rowIndex].push(React.cloneElement(\n elm, { key: rowKey++, isOnlyHead: true, version }\n ));\n }\n });\n\n const trs = rows.map((row, indexRow)=>{\n return (\n \n { row }\n
\n );\n });\n\n return (\n \n
\n { React.cloneElement(this.props.colGroups, { ref: 'headerGrp' }) }\n \n { trs }\n \n
\n
\n );\n }\n\n getHeaderColGrouop = () => {\n return this.refs.headerGrp.childNodes;\n }\n\n renderSelectRowHeader(rowCount, rowKey) {\n if (this.props.hideSelectColumn) {\n return null;\n } else if (this.props.customComponent) {\n const CustomComponent = this.props.customComponent;\n return (\n \n \n \n );\n } else if (this.props.rowSelectType === Const.ROW_SELECT_SINGLE) {\n return ();\n } else if (this.props.rowSelectType === Const.ROW_SELECT_MULTI) {\n return (\n \n \n \n );\n } else {\n return null;\n }\n }\n}\nTableHeader.propTypes = {\n headerContainerClass: PropTypes.string,\n tableHeaderClass: PropTypes.string,\n style: PropTypes.object,\n rowSelectType: PropTypes.string,\n onSort: PropTypes.func,\n onSelectAllRow: PropTypes.func,\n sortList: PropTypes.array,\n hideSelectColumn: PropTypes.bool,\n bordered: PropTypes.bool,\n condensed: PropTypes.bool,\n isFiltered: PropTypes.bool,\n isSelectAll: PropTypes.oneOf([ true, 'indeterminate', false ]),\n sortIndicator: PropTypes.bool,\n customComponent: PropTypes.func,\n colGroups: PropTypes.element,\n reset: PropTypes.bool,\n expandColumnVisible: PropTypes.bool,\n expandColumnComponent: PropTypes.func,\n expandColumnBeforeSelectColumn: PropTypes.bool,\n version: PropTypes.string\n};\n\nexport default TableHeader;\n\n\n\n// WEBPACK FOOTER //\n// src/TableHeader.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nclass SelectRowHeaderColumn extends Component {\n\n render() {\n return (\n \n { this.props.children }\n | \n );\n }\n}\nSelectRowHeaderColumn.propTypes = {\n children: PropTypes.node,\n rowCount: PropTypes.number\n};\nexport default SelectRowHeaderColumn;\n\n\n\n// WEBPACK FOOTER //\n// src/SelectRowHeaderColumn.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nclass ExpandRowHeaderColumn extends Component {\n\n render() {\n return (\n \n { this.props.children }\n | \n );\n }\n}\nExpandRowHeaderColumn.propTypes = {\n children: PropTypes.node,\n rowCount: PropTypes.number\n};\nexport default ExpandRowHeaderColumn;\n\n\n\n// WEBPACK FOOTER //\n// src/ExpandRowHeaderColumn.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classSet from 'classnames';\n\nclass TableFooter extends Component {\n\n render() {\n const { hideSelectColumn, expandColumnVisible } = this.props;\n const containerClasses = classSet('react-bs-container-footer', 'table-footer-wrapper');\n const tableClasses = classSet('table', 'table-hover', {\n 'table-bordered': this.props.bordered,\n 'table-condensed': this.props.condensed\n }, this.props.tableFooterClass);\n return (\n \n {\n this.props.children.map((footerItem, footerItemIndex) => {\n return (\n
\n \n { React.cloneElement(this.props.colGroups) }\n \n \n { hideSelectColumn ? null : this.renderSelectionOrExpandCol() }\n { !expandColumnVisible ? null : this.renderSelectionOrExpandCol() }\n {\n this.props.columns.map((columnItem, colIndex) => {\n if ( !columnItem.hidden ) {\n const footerObj = footerItem.filter((item) => {\n return item.columnIndex === colIndex;\n });\n let footerData;\n let thAlignment = 'left';\n if (footerObj.length) {\n thAlignment = footerObj[0].align;\n if (footerObj[0].formatter) {\n footerData = footerObj[0].formatter(\n this.props.footerFormatterReturnData\n );\n } else {\n footerData = footerObj[0].label;\n }\n } else {\n footerData = '';\n }\n return (\n \n {\n footerData\n }\n | \n );\n }\n })\n }\n
\n \n
\n \n );\n })\n }\n
\n );\n }\n\n renderSelectionOrExpandCol() {\n return ( | );\n }\n}\nTableFooter.propTypes = {\n tableHeaderClass: PropTypes.string,\n style: PropTypes.object,\n hideSelectColumn: PropTypes.bool,\n expandColumnVisible: PropTypes.bool,\n bordered: PropTypes.bool,\n condensed: PropTypes.bool,\n isFiltered: PropTypes.bool,\n sortIndicator: PropTypes.bool\n};\n\nexport default TableFooter;\n\n\n\n// WEBPACK FOOTER //\n// src/TableFooter.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Utils from './util';\nimport Const from './Const';\nimport TableRow from './TableRow';\nimport TableColumn from './TableColumn';\nimport TableEditColumn from './TableEditColumn';\nimport classSet from 'classnames';\nimport ExpandComponent from './ExpandComponent';\n\nclass TableBody extends Component {\n constructor(props) {\n super(props);\n this.state = {\n currEditCell: null\n };\n }\n\n render() {\n const { cellEdit, beforeShowError, x, y, keyBoardNav, trStyle, version } = this.props;\n const customTableClasses = {\n 'table-striped': this.props.striped,\n 'table-bordered': this.props.bordered,\n 'table-hover': this.props.hover\n };\n if (this.props.condensed) {\n if (Utils.isBootstrap4(version)) customTableClasses['table-sm'] = true;\n else customTableClasses['table-condensed'] = true;\n }\n const tableClasses = classSet('table', customTableClasses, this.props.tableBodyClass);\n\n const noneditableRows = (cellEdit.nonEditableRows && cellEdit.nonEditableRows()) || [];\n const unselectable = this.props.selectRow.unselectable || [];\n const isSelectRowDefined = Utils.isSelectRowDefined(this.props.selectRow.mode);\n const tableHeader = Utils.renderColGroup(this.props.columns,\n this.props.selectRow, this.props.expandColumnOptions, version);\n const inputType = this.props.selectRow.mode === Const.ROW_SELECT_SINGLE ? 'radio' : 'checkbox';\n const CustomComponent = this.props.selectRow.customComponent;\n const enableKeyBoardNav = (keyBoardNav === true || typeof keyBoardNav === 'object');\n const customEditAndNavStyle = typeof keyBoardNav === 'object' ?\n keyBoardNav.customStyleOnEditCell :\n null;\n const customNavStyle = typeof keyBoardNav === 'object' ?\n keyBoardNav.customStyle :\n null;\n const ExpandColumnCustomComponent = this.props.expandColumnOptions.expandColumnComponent;\n let expandColSpan = this.props.columns.filter(col => col && !col.hidden).length;\n if (isSelectRowDefined && !this.props.selectRow.hideSelectColumn) {\n expandColSpan += 1;\n }\n let tabIndex = 1;\n if (this.props.expandColumnOptions.expandColumnVisible) {\n expandColSpan += 1;\n }\n\n let tableRows = this.props.data.map(function(data, r) {\n const tableColumns = this.props.columns.filter(_ => _ != null).map(function(column, i) {\n const fieldValue = data[column.name];\n const isFocusCell = r === y && i === x;\n if (column.name !== this.props.keyField && // Key field can't be edit\n column.editable && // column is editable? default is true, user can set it false\n column.editable.readOnly !== true &&\n this.state.currEditCell !== null &&\n this.state.currEditCell.rid === r &&\n this.state.currEditCell.cid === i &&\n noneditableRows.indexOf(data[this.props.keyField]) === -1) {\n let editable = column.editable;\n const format = column.format ? function(value) {\n return column.format(value, data, column.formatExtraData, r).replace(/<.*?>/g, '');\n } : false;\n if (Utils.isFunction(column.editable)) {\n editable = column.editable(fieldValue, data, r, i);\n }\n\n return (\n \n );\n } else {\n // add by bluespring for className customize\n let formattedValue;\n let columnChild = fieldValue && fieldValue.toString();\n let columnTitle = null;\n let tdClassName = column.className;\n let tdStyles = column.style;\n if (Utils.isFunction(column.className)) {\n tdClassName = column.className(fieldValue, data, r, i);\n }\n\n if (Utils.isFunction(column.style)) {\n tdStyles = column.style(fieldValue, data, r, i);\n }\n\n if (typeof column.format !== 'undefined') {\n formattedValue = column.format(fieldValue, data, column.formatExtraData, r);\n if (!React.isValidElement(formattedValue)) {\n columnChild = (\n \n );\n } else {\n columnChild = formattedValue;\n }\n }\n if (Utils.isFunction(column.columnTitle)) {\n columnTitle = column.columnTitle(fieldValue, data, r, i);\n } else if (typeof column.columnTitle === 'string') {\n columnTitle = column.columnTitle;\n } else if (column.columnTitle) {\n if (formattedValue) columnTitle = formattedValue.toString();\n else if (fieldValue) columnTitle = fieldValue.toString();\n }\n return (\n \n { columnChild }\n \n );\n }\n }, this);\n const key = data[this.props.keyField];\n const disable = unselectable.indexOf(key) !== -1;\n const selected = this.props.selectedRowKeys.indexOf(key) !== -1;\n const selectRowColumn = isSelectRowDefined && !this.props.selectRow.hideSelectColumn ?\n this.renderSelectRowColumn(selected, inputType, disable, CustomComponent, r, data) : null;\n const expandedRowColumn = this.renderExpandRowColumn(\n this.props.expandableRow && this.props.expandableRow(data),\n this.props.expanding.indexOf(key) > -1,\n ExpandColumnCustomComponent, r\n );\n const haveExpandContent = this.props.expandableRow && this.props.expandableRow(data);\n const isExpanding = haveExpandContent && this.props.expanding.indexOf(key) > -1;\n\n // add by bluespring for className customize\n let trClassName = this.props.trClassName;\n if (Utils.isFunction(this.props.trClassName)) {\n trClassName = this.props.trClassName(data, r);\n }\n if (isExpanding && this.props.expandParentClass) {\n trClassName += Utils.isFunction(this.props.expandParentClass) ?\n this.props.expandParentClass(data, r) :\n this.props.expandParentClass;\n }\n const result = [ \n { this.props.expandColumnOptions.expandColumnVisible &&\n this.props.expandColumnOptions.expandColumnBeforeSelectColumn &&\n expandedRowColumn }\n { selectRowColumn }\n { this.props.expandColumnOptions.expandColumnVisible &&\n !this.props.expandColumnOptions.expandColumnBeforeSelectColumn &&\n expandedRowColumn }\n { tableColumns }\n ];\n\n if (haveExpandContent) {\n const expandBodyClass = Utils.isFunction(this.props.expandBodyClass) ?\n this.props.expandBodyClass(data, r, isExpanding) :\n this.props.expandBodyClass;\n result.push(\n \n { this.props.expandComponent(data) }\n \n );\n }\n return (result);\n }, this);\n\n if (tableRows.length === 0 && !this.props.withoutNoDataText) {\n const colSpan = this.props.columns.filter(c => !c.hidden).length\n + ((isSelectRowDefined && !this.props.selectRow.hideSelectColumn) ? 1 : 0)\n + (this.props.expandColumnOptions.expandColumnVisible ? 1 : 0);\n tableRows = [\n \n \n { this.props.noDataText || Const.NO_DATA_TEXT }\n | \n \n ];\n }\n\n return (\n \n
\n { React.cloneElement(tableHeader, { ref: 'header' }) }\n \n { tableRows }\n \n
\n
\n );\n }\n\n handleCellKeyDown = (e, lastEditCell) => {\n e.preventDefault();\n const { keyBoardNav, onNavigateCell, cellEdit } = this.props;\n let offset;\n if (e.keyCode === 37) {\n offset = { x: -1, y: 0 };\n } else if (e.keyCode === 38) {\n offset = { x: 0, y: -1 };\n } else if (e.keyCode === 39 || e.keyCode === 9) {\n offset = { x: 1, y: 0 };\n if (e.keyCode === 9 && lastEditCell) {\n offset = {\n ...offset,\n lastEditCell\n };\n }\n } else if (e.keyCode === 40) {\n offset = { x: 0, y: 1 };\n } else if (e.keyCode === 13) {\n const enterToEdit = typeof keyBoardNav === 'object' ?\n keyBoardNav.enterToEdit :\n false;\n const enterToExpand = typeof keyBoardNav === 'object' ?\n keyBoardNav.enterToExpand :\n false;\n\n if (cellEdit && enterToEdit) {\n this.handleEditCell(e.target.parentElement.rowIndex + 1,\n e.currentTarget.cellIndex, '', e);\n }\n\n if (enterToExpand) {\n this.handleClickCell(this.props.y + 1, this.props.x);\n }\n }\n if (offset && keyBoardNav) {\n onNavigateCell(offset);\n }\n }\n\n handleRowMouseOut = (rowIndex, event) => {\n const targetRow = this.props.data[rowIndex];\n this.props.onRowMouseOut(targetRow, event);\n }\n\n handleRowMouseOver = (rowIndex, event) => {\n const targetRow = this.props.data[rowIndex];\n this.props.onRowMouseOver(targetRow, event);\n }\n\n handleRowClick = (rowIndex, cellIndex) => {\n const { onRowClick, selectRow } = this.props;\n if (Utils.isSelectRowDefined(selectRow.mode)) cellIndex--;\n if (this._isExpandColumnVisible()) cellIndex--;\n onRowClick(this.props.data[rowIndex - 1], rowIndex - 1, cellIndex);\n }\n\n handleRowDoubleClick = rowIndex => {\n const { onRowDoubleClick } = this.props;\n const targetRow = this.props.data[rowIndex];\n onRowDoubleClick(targetRow);\n }\n\n handleSelectRow = (rowIndex, isSelected, e) => {\n let selectedRow;\n const { data, onSelectRow } = this.props;\n data.forEach((row, i) => {\n if (i === rowIndex - 1) {\n selectedRow = row;\n return false;\n }\n });\n onSelectRow(selectedRow, isSelected, e, rowIndex - 1);\n }\n\n handleSelectRowColumChange = (e, rowIndex) => {\n if (!this.props.selectRow.clickToSelect ||\n !this.props.selectRow.clickToSelectAndEditCell) {\n this.handleSelectRow(\n rowIndex + 1,\n e.currentTarget.checked,\n e);\n }\n }\n\n handleClickCell = (rowIndex, columnIndex = -1) => {\n const {\n columns,\n keyField,\n expandBy,\n expandableRow,\n selectRow: {\n mode,\n clickToExpand,\n hideSelectColumn\n },\n onlyOneExpanding\n } = this.props;\n const isSelectRowDefined = Utils.isSelectRowDefined(mode);\n const selectRowAndExpand = isSelectRowDefined && !clickToExpand ? false : true;\n columnIndex = isSelectRowDefined && !hideSelectColumn ? columnIndex - 1 : columnIndex;\n columnIndex = this._isExpandColumnVisible() ? columnIndex - 1 : columnIndex;\n if (expandableRow &&\n selectRowAndExpand &&\n (expandBy === Const.EXPAND_BY_ROW ||\n /* Below will allow expanding trigger by clicking on selection column\n if configure as expanding by column */\n (expandBy === Const.EXPAND_BY_COL && columnIndex < 0) ||\n (expandBy === Const.EXPAND_BY_COL && columns[columnIndex].expandable))) {\n let expanding = this.props.expanding;\n const rowKey = this.props.data[rowIndex - 1][keyField];\n const isRowExpanding = expanding.indexOf(rowKey) > -1;\n\n if (isRowExpanding) { // collapse\n expanding = expanding.filter(k => k !== rowKey);\n } else { // expand\n if (onlyOneExpanding) expanding = [ rowKey ];\n else expanding.push(rowKey);\n }\n this.props.onExpand(expanding, rowKey, isRowExpanding);\n }\n }\n\n handleEditCell = (rowIndex, columnIndex, action, e) => {\n const { selectRow } = this.props;\n const defineSelectRow = Utils.isSelectRowDefined(selectRow.mode);\n const expandColumnVisible = this._isExpandColumnVisible();\n if (defineSelectRow) {\n columnIndex--;\n if (selectRow.hideSelectColumn) columnIndex++;\n }\n if (expandColumnVisible) {\n columnIndex--;\n }\n rowIndex--;\n\n if (action === 'tab') {\n if (defineSelectRow && !selectRow.hideSelectColumn) columnIndex++;\n if (expandColumnVisible) columnIndex++;\n this.handleCompleteEditCell(e.target.value, rowIndex, columnIndex - 1);\n if (columnIndex >= this.props.columns.length) {\n this.handleCellKeyDown(e, true);\n } else {\n this.handleCellKeyDown(e);\n }\n const { nextRIndex, nextCIndex } = this.nextEditableCell(rowIndex, columnIndex);\n rowIndex = nextRIndex;\n columnIndex = nextCIndex;\n }\n\n const stateObj = {\n currEditCell: {\n rid: rowIndex,\n cid: columnIndex\n }\n };\n\n if (this.props.selectRow.clickToSelectAndEditCell &&\n this.props.cellEdit.mode !== Const.CELL_EDIT_DBCLICK) {\n const selected = this.props.selectedRowKeys.indexOf(\n this.props.data[rowIndex][this.props.keyField]) !== -1;\n this.handleSelectRow(rowIndex + 1, !selected, e);\n }\n this.setState(() => stateObj);\n }\n\n nextEditableCell = (rIndex, cIndex) => {\n const { keyField } = this.props;\n let nextRIndex = rIndex;\n let nextCIndex = cIndex;\n let row;\n let column;\n do {\n if (nextCIndex >= this.props.columns.length) {\n nextRIndex++;\n nextCIndex = 0;\n }\n row = this.props.data[nextRIndex];\n column = this.props.columns[nextCIndex];\n if (!row) break;\n let editable = column.editable;\n if (Utils.isFunction(column.editable)) {\n editable = column.editable(column, row, nextRIndex, nextCIndex);\n }\n if (editable && editable.readOnly !== true &&\n !column.hidden && keyField !== column.name) {\n break;\n } else {\n nextCIndex++;\n }\n } while (row);\n return { nextRIndex, nextCIndex };\n }\n\n handleCompleteEditCell = (newVal, rowIndex, columnIndex) => {\n if (newVal !== null) {\n const result = this.props.onEditCell(newVal, rowIndex, columnIndex);\n if (result !== Const.AWAIT_BEFORE_CELL_EDIT) {\n this.setState(() => { return { currEditCell: null }; });\n }\n } else {\n this.setState(() => { return { currEditCell: null }; });\n }\n }\n\n cancelEditCell = () => {\n this.setState(() => { return { currEditCell: null }; });\n }\n\n handleClickonSelectColumn = (e, isSelect, rowIndex, row) => {\n e.stopPropagation();\n if (e.target.tagName === 'TD' &&\n (this.props.selectRow.clickToSelect || this.props.selectRow.clickToSelectAndEditCell)) {\n const unselectable = this.props.selectRow.unselectable || [];\n if (unselectable.indexOf(row[this.props.keyField]) === -1) {\n this.handleSelectRow(rowIndex + 1, isSelect, e);\n this.handleClickCell(rowIndex + 1);\n }\n }\n }\n\n renderSelectRowColumn(selected, inputType, disabled,\n CustomComponent = null, rowIndex = null, row) {\n return (\n {\n this.handleClickonSelectColumn(e, !selected, rowIndex, row);\n } } style={ { textAlign: 'center' } }>\n { CustomComponent ?\n this.handleSelectRowColumChange(e, rowIndex) }/> :\n this.handleSelectRowColumChange(e, rowIndex) }/>\n }\n | \n );\n }\n\n renderExpandRowColumn(isExpandableRow, isExpanded, CustomComponent, rowIndex = null) {\n let content = null;\n if (CustomComponent) {\n content = ();\n } else if (isExpandableRow) {\n content = (isExpanded ? () :\n () );\n } else {\n content = ' ';\n }\n\n return (\n this.handleClickCell(rowIndex + 1) }>\n { content }\n | \n );\n }\n\n _isExpandColumnVisible() {\n return this.props.expandColumnOptions.expandColumnVisible;\n }\n\n getHeaderColGrouop = () => {\n return this.refs.header.childNodes;\n }\n}\nTableBody.propTypes = {\n version: PropTypes.string,\n data: PropTypes.array,\n columns: PropTypes.array,\n striped: PropTypes.bool,\n bordered: PropTypes.bool,\n hover: PropTypes.bool,\n condensed: PropTypes.bool,\n keyField: PropTypes.string,\n selectedRowKeys: PropTypes.array,\n onRowClick: PropTypes.func,\n onRowDoubleClick: PropTypes.func,\n onSelectRow: PropTypes.func,\n noDataText: PropTypes.oneOfType([ PropTypes.string, PropTypes.object ]),\n withoutNoDataText: PropTypes.bool,\n style: PropTypes.object,\n tableBodyClass: PropTypes.string,\n bodyContainerClass: PropTypes.string,\n expandableRow: PropTypes.func,\n expandComponent: PropTypes.func,\n expandRowBgColor: PropTypes.string,\n expandBy: PropTypes.string,\n expanding: PropTypes.array,\n onExpand: PropTypes.func,\n expandBodyClass: PropTypes.oneOfType([ PropTypes.string, PropTypes.func ]),\n expandParentClass: PropTypes.oneOfType([ PropTypes.string, PropTypes.func ]),\n onlyOneExpanding: PropTypes.bool,\n beforeShowError: PropTypes.func,\n keyBoardNav: PropTypes.oneOfType([ PropTypes.bool, PropTypes.object ]),\n x: PropTypes.number,\n y: PropTypes.number,\n onNavigateCell: PropTypes.func,\n withoutTabIndex: PropTypes.bool\n};\nexport default TableBody;\n\n\n\n// WEBPACK FOOTER //\n// src/TableBody.js","/* eslint no-nested-ternary: 0 */\nimport classSet from 'classnames';\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Utils from './util';\n\nclass TableRow extends Component {\n\n constructor(props) {\n super(props);\n this.clickNum = 0;\n }\n\n rowClick = e => {\n const rowIndex = this.props.index + 1;\n const cellIndex = e.target.cellIndex;\n if (this.props.onRowClick) this.props.onRowClick(rowIndex, cellIndex);\n const {\n selectRow, unselectableRow, isSelected, onSelectRow, onExpandRow, dbClickToEdit\n } = this.props;\n if (selectRow) {\n if (selectRow.clickToSelect && !unselectableRow) {\n onSelectRow(rowIndex, !isSelected, e);\n } else if (selectRow.clickToSelectAndEditCell && !unselectableRow) {\n this.clickNum++;\n /** if clickToSelectAndEditCell is enabled,\n * there should be a delay to prevent a selection changed when\n * user dblick to edit cell on same row but different cell\n **/\n setTimeout(() => {\n if (this.clickNum === 1) {\n onSelectRow(rowIndex, !isSelected, e);\n onExpandRow(rowIndex, cellIndex);\n }\n this.clickNum = 0;\n }, 200);\n } else {\n if (dbClickToEdit) {\n this.expandRow(rowIndex, cellIndex);\n }\n }\n }\n }\n\n expandRow = (rowIndex, cellIndex) => {\n this.clickNum++;\n setTimeout(() => {\n if (this.clickNum === 1) {\n this.props.onExpandRow(rowIndex, cellIndex);\n }\n this.clickNum = 0;\n }, 200);\n }\n\n rowDoubleClick = e => {\n if (e.target.tagName !== 'INPUT' &&\n e.target.tagName !== 'SELECT' &&\n e.target.tagName !== 'TEXTAREA') {\n if (this.props.onRowDoubleClick) {\n this.props.onRowDoubleClick(this.props.index);\n }\n }\n }\n\n rowMouseOut = e => {\n const rowIndex = this.props.index;\n if (this.props.onRowMouseOut) {\n this.props.onRowMouseOut(rowIndex, e);\n }\n }\n\n rowMouseOver = e => {\n const rowIndex = this.props.index;\n if (this.props.onRowMouseOver) {\n this.props.onRowMouseOver(rowIndex, e);\n }\n }\n\n render() {\n this.clickNum = 0;\n const { selectRow, row, isSelected, className, index } = this.props;\n let { style } = this.props;\n let backgroundColor = null;\n let selectRowClass = null;\n\n if (selectRow) {\n backgroundColor = Utils.isFunction(selectRow.bgColor) ?\n selectRow.bgColor(row, isSelected) : ( isSelected ? selectRow.bgColor : null);\n\n selectRowClass = Utils.isFunction(selectRow.className) ?\n selectRow.className(row, isSelected) : ( isSelected ? selectRow.className : null);\n }\n\n if (Utils.isFunction(style)) {\n style = style(row, index);\n } else {\n style = { ...style } || {};\n }\n // the bgcolor of row selection always overwrite the bgcolor defined by global.\n if (style && backgroundColor && isSelected) {\n style.backgroundColor = backgroundColor;\n }\n const trCss = {\n style: { ...style },\n className: classSet(selectRowClass, className)\n };\n\n return (\n { this.props.children }
\n );\n }\n}\nTableRow.propTypes = {\n index: PropTypes.number,\n row: PropTypes.any,\n style: PropTypes.any,\n isSelected: PropTypes.bool,\n enableCellEdit: PropTypes.bool,\n onRowClick: PropTypes.func,\n onRowDoubleClick: PropTypes.func,\n onSelectRow: PropTypes.func,\n onExpandRow: PropTypes.func,\n onRowMouseOut: PropTypes.func,\n onRowMouseOver: PropTypes.func,\n unselectableRow: PropTypes.bool\n};\nTableRow.defaultProps = {\n onRowClick: undefined,\n onRowDoubleClick: undefined\n};\nexport default TableRow;\n\n\n\n// WEBPACK FOOTER //\n// src/TableRow.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport Const from './Const';\nimport Util from './util';\n\nclass TableColumn extends Component {\n\n constructor(props) {\n super(props);\n }\n /* eslint no-unused-vars: [0, { \"args\": \"after-used\" }] */\n shouldComponentUpdate(nextProps, nextState) {\n const { children } = this.props;\n let shouldUpdated = this.props.width !== nextProps.width\n || this.props.className !== nextProps.className\n || this.props.hidden !== nextProps.hidden\n || this.props.dataAlign !== nextProps.dataAlign\n || this.props.isFocus !== nextProps.isFocus\n || typeof children !== typeof nextProps.children\n || ('' + this.props.onEdit).toString() !== ('' + nextProps.onEdit).toString();\n\n if (shouldUpdated) {\n return shouldUpdated;\n }\n\n if (typeof children === 'object' && children !== null && children.props !== null) {\n if (children.props.type === 'checkbox' || children.props.type === 'radio') {\n shouldUpdated = shouldUpdated ||\n children.props.type !== nextProps.children.props.type ||\n children.props.checked !== nextProps.children.props.checked ||\n children.props.disabled !== nextProps.children.props.disabled;\n } else {\n shouldUpdated = true;\n }\n } else {\n shouldUpdated = shouldUpdated || children !== nextProps.children;\n }\n\n if (shouldUpdated) {\n return shouldUpdated;\n }\n\n if (!(this.props.cellEdit && nextProps.cellEdit)) {\n return false;\n } else {\n return shouldUpdated\n || this.props.cellEdit.mode !== nextProps.cellEdit.mode;\n }\n }\n\n componentDidMount() {\n const dom = ReactDOM.findDOMNode(this);\n if (this.props.isFocus) {\n dom.focus();\n } else {\n dom.blur();\n }\n }\n\n componentDidUpdate() {\n const dom = ReactDOM.findDOMNode(this);\n if (this.props.isFocus) {\n dom.focus();\n } else {\n dom.blur();\n }\n }\n\n handleCellEdit = e => {\n try {\n if (this.props.cellEdit.mode === Const.CELL_EDIT_DBCLICK) {\n if (document.selection && document.selection.empty) {\n document.selection.empty();\n } else if (window.getSelection) {\n const sel = window.getSelection();\n sel.removeAllRanges();\n }\n }\n } catch (err) {} /* eslint no-empty: 0 */\n this.props.onEdit(\n this.props.rIndex + 1, e.currentTarget.cellIndex, e);\n if (this.props.cellEdit.mode !== Const.CELL_EDIT_DBCLICK) {\n this.props.onClick(this.props.rIndex + 1, e.currentTarget.cellIndex, e);\n }\n }\n\n handleCellClick = e => {\n const { onClick, rIndex } = this.props;\n if (onClick) {\n onClick(rIndex + 1, e.currentTarget.cellIndex, e);\n }\n }\n\n handleKeyDown = e => {\n if (this.props.keyBoardNav) {\n this.props.onKeyDown(e);\n }\n }\n\n render() {\n const {\n children,\n columnTitle,\n dataAlign,\n hidden,\n cellEdit,\n attrs,\n style,\n isFocus,\n keyBoardNav,\n tabIndex,\n customNavStyle,\n withoutTabIndex,\n row\n } = this.props;\n\n let { className } = this.props;\n\n let tdStyle = {\n textAlign: dataAlign,\n display: hidden ? 'none' : null,\n ...style\n };\n\n const opts = {};\n\n if (cellEdit) {\n if (cellEdit.mode === Const.CELL_EDIT_CLICK) {\n opts.onClick = this.handleCellEdit;\n } else if (cellEdit.mode === Const.CELL_EDIT_DBCLICK) {\n opts.onDoubleClick = this.handleCellEdit;\n } else {\n opts.onClick = this.handleCellClick;\n }\n }\n\n if (keyBoardNav && isFocus) {\n opts.onKeyDown = this.handleKeyDown;\n }\n\n if (isFocus) {\n if (customNavStyle) {\n const cusmtStyle = Util.isFunction(customNavStyle) ?\n customNavStyle(children, row) : customNavStyle;\n tdStyle = {\n ...tdStyle,\n ...cusmtStyle\n };\n } else {\n className = `${className} default-focus-cell`;\n }\n }\n\n const attr = {};\n if (!withoutTabIndex) attr.tabIndex = tabIndex;\n return (\n \n { typeof children === 'boolean' ? children.toString() : children }\n | \n );\n }\n}\nTableColumn.propTypes = {\n rIndex: PropTypes.number,\n dataAlign: PropTypes.string,\n hidden: PropTypes.bool,\n className: PropTypes.string,\n columnTitle: PropTypes.string,\n children: PropTypes.node,\n onClick: PropTypes.func,\n attrs: PropTypes.object,\n style: PropTypes.object,\n isFocus: PropTypes.bool,\n onKeyDown: PropTypes.func,\n tabIndex: PropTypes.string,\n withoutTabIndex: PropTypes.bool,\n keyBoardNav: PropTypes.oneOfType([ PropTypes.bool, PropTypes.object ]),\n customNavStyle: PropTypes.oneOfType([ PropTypes.func, PropTypes.object ]),\n row: PropTypes.any /* only used on custom styling for navigation */\n};\n\nTableColumn.defaultProps = {\n dataAlign: 'left',\n withoutTabIndex: false,\n hidden: false,\n className: '',\n isFocus: false,\n keyBoardNav: false\n};\nexport default TableColumn;\n\n\n\n// WEBPACK FOOTER //\n// src/TableColumn.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport editor from './Editor';\nimport { notice } from './Notification.js';\nimport classSet from 'classnames';\nimport Util from './util';\n\nclass TableEditColumn extends Component {\n constructor(props) {\n super(props);\n this.timeouteClear = 0;\n const { fieldValue, row, className } = this.props;\n this.focusInEditor = this.focusInEditor.bind(this);\n this.state = {\n shakeEditor: false,\n className: Util.isFunction(className) ? className(fieldValue, row) : className\n };\n }\n\n valueShortCircuit(value) {\n return value === null || typeof value === 'undefined' ? '' : value;\n }\n\n handleKeyPress = e => {\n if (e.keyCode === 13 || e.keyCode === 9) {\n // Pressed ENTER or TAB\n const value = e.currentTarget.type === 'checkbox' ?\n this._getCheckBoxValue(e) : e.currentTarget.value;\n\n if ((e.keyCode === 9 && this.props.blurToSave) ||\n (!this.validator(value))) {\n return;\n }\n\n if (e.keyCode === 13) {\n this.props.completeEdit(value, this.props.rowIndex, this.props.colIndex);\n } else {\n this.props.onTab(this.props.rowIndex + 1, this.props.colIndex + 1, 'tab', e);\n e.preventDefault();\n }\n } else if (e.keyCode === 27) {\n this.props.completeEdit(\n null, this.props.rowIndex, this.props.colIndex);\n } else if (e.type === 'click' && !this.props.blurToSave) { // textarea click save button\n const value = e.target.parentElement.firstChild.value;\n if (!this.validator(value)) {\n return;\n }\n this.props.completeEdit(\n value, this.props.rowIndex, this.props.colIndex);\n }\n }\n\n handleBlur = e => {\n e.stopPropagation();\n if (this.props.blurToSave) {\n const value = e.currentTarget.type === 'checkbox' ?\n this._getCheckBoxValue(e) : e.currentTarget.value;\n if (!this.validator(value)) {\n return false;\n }\n this.props.completeEdit(\n value, this.props.rowIndex, this.props.colIndex);\n } else if (this.props.blurToEscape) {\n this.props.completeEdit(null, this.props.rowIndex, this.props.colIndex);\n }\n }\n\n handleCustomUpdate = value => {\n if (!this.validator(value)) {\n return;\n }\n this.props.completeEdit(value, this.props.rowIndex, this.props.colIndex);\n }\n\n // modified by iuculanop\n // BEGIN\n validator(value) {\n const ts = this;\n let valid = true;\n if (ts.props.editable.validator) {\n const checkVal = ts.props.editable.validator(value, this.props.row);\n const responseType = typeof checkVal;\n if (responseType !== 'object' && checkVal !== true) {\n valid = false;\n this.notifyToastr('error', checkVal, '');\n } else if (responseType === 'object' && checkVal.isValid !== true) {\n valid = false;\n this.notifyToastr(checkVal.notification.type,\n checkVal.notification.msg,\n checkVal.notification.title);\n }\n if (!valid) {\n // animate input\n ts.clearTimeout();\n const { invalidColumnClassName, row } = this.props;\n const className = Util.isFunction(invalidColumnClassName) ?\n invalidColumnClassName(value, row) :\n invalidColumnClassName;\n ts.setState({ shakeEditor: true, className });\n ts.timeouteClear = setTimeout(() => {\n ts.setState({ shakeEditor: false });\n }, 300);\n this.focusInEditor();\n return valid;\n }\n }\n return valid;\n }\n // END\n\n notifyToastr = (type, message, title) => {\n let toastr = true;\n const { beforeShowError } = this.props;\n if (beforeShowError) {\n toastr = beforeShowError(type, message, title);\n }\n if (toastr) {\n notice(type, message, title);\n }\n }\n\n clearTimeout() {\n if (this.timeouteClear !== 0) {\n clearTimeout(this.timeouteClear);\n this.timeouteClear = 0;\n }\n }\n\n componentDidMount() {\n this.focusInEditor();\n const dom = ReactDOM.findDOMNode(this);\n if (this.props.isFocus) {\n dom.focus();\n } else {\n dom.blur();\n }\n }\n\n componentDidUpdate() {\n const dom = ReactDOM.findDOMNode(this);\n if (this.props.isFocus) {\n dom.focus();\n } else {\n dom.blur();\n }\n }\n\n componentWillUnmount() {\n this.clearTimeout();\n }\n\n focusInEditor() {\n if (this.inputRef && Util.isFunction(this.inputRef.focus)) {\n this.inputRef.focus();\n }\n }\n\n handleClick = e => {\n if (e.target.tagName !== 'TD') {\n e.stopPropagation();\n }\n }\n\n getInputRef = userRef => ref => {\n this.inputRef = ref;\n if (Util.isFunction(userRef)) {\n userRef(ref);\n } else if (typeof userRef === 'string') {\n throw new Error('Ref must be a function');\n }\n }\n\n getHandleKeyPress = customHandler => e => {\n this.handleKeyPress(e);\n if (Util.isFunction(customHandler)) {\n customHandler(e);\n }\n }\n\n getHandleBlur = customHandler => e => {\n this.handleBlur(e);\n if (Util.isFunction(customHandler)) {\n customHandler(e);\n }\n }\n\n render() {\n const {\n editable,\n format,\n customEditor,\n isFocus,\n customStyleWithNav,\n row,\n attrs\n } = this.props;\n const { shakeEditor } = this.state;\n const attr = {\n ...editable.attrs,\n ref: this.getInputRef(editable.attrs && editable.attrs.ref),\n onKeyDown: this.getHandleKeyPress(editable.attrs && editable.attrs.onKeyDown),\n onBlur: this.getHandleBlur(editable.attrs && editable.attrs.onBlur)\n };\n let style = { position: 'relative' };\n let { fieldValue } = this.props;\n let { className } = this.state;\n\n if (editable.placeholder) {\n attr.placeholder = editable.placeholder;\n /* eslint-disable no-console */\n console.warn(\n 'Setting editable.placeholder is deprecated. Use editable.attrs to set input attributes');\n /* eslint-enable no-console */\n }\n\n const editorClass = classSet({ 'animated': shakeEditor, 'shake': shakeEditor });\n fieldValue = fieldValue === 0 ? '0' : fieldValue;\n let cellEditor;\n if (customEditor) {\n const customEditorProps = {\n row,\n ...attr,\n defaultValue: this.valueShortCircuit(fieldValue),\n ...customEditor.customEditorParameters\n };\n cellEditor = customEditor.getElement(this.handleCustomUpdate, customEditorProps);\n } else {\n cellEditor = editor(editable, attr, format, editorClass, this.valueShortCircuit(fieldValue),\n null, row);\n }\n\n if (isFocus) {\n if (customStyleWithNav) {\n const customStyle = Util.isFunction(customStyleWithNav) ?\n customStyleWithNav(fieldValue, row) : customStyleWithNav;\n style = {\n ...style,\n ...customStyle\n };\n } else {\n className = `${className} default-focus-cell`;\n }\n }\n\n return (\n \n { cellEditor }\n | \n );\n }\n\n _getCheckBoxValue(e) {\n let value = '';\n const values = e.currentTarget.value.split(':');\n value = e.currentTarget.checked ? values[0] : values[1];\n return value;\n }\n}\n\nTableEditColumn.propTypes = {\n completeEdit: PropTypes.func,\n rowIndex: PropTypes.number,\n colIndex: PropTypes.number,\n blurToSave: PropTypes.bool,\n blurToEscape: PropTypes.bool,\n editable: PropTypes.oneOfType([ PropTypes.bool, PropTypes.object ]),\n format: PropTypes.oneOfType([ PropTypes.bool, PropTypes.func ]),\n row: PropTypes.any,\n fieldValue: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n PropTypes.number,\n PropTypes.array,\n PropTypes.object\n ]),\n className: PropTypes.any,\n beforeShowError: PropTypes.func,\n isFocus: PropTypes.bool,\n attrs: PropTypes.object,\n customStyleWithNav: PropTypes.oneOfType([ PropTypes.func, PropTypes.object ])\n};\n\n\nexport default TableEditColumn;\n\n\n\n// WEBPACK FOOTER //\n// src/TableEditColumn.js","import Utils from './util';\nimport React from 'react';\n\nconst editor = function(editable, attr, format, editorClass, defaultValue, ignoreEditable, row) {\n if (editable === true ||\n (editable === false && ignoreEditable) ||\n typeof editable === 'string') { // simple declare\n const type = editable ? 'text' : editable;\n return (\n \n );\n } else if (!editable) {\n const type = editable ? 'text' : editable;\n return (\n \n );\n } else if (editable && (editable.type === undefined ||\n editable.type === null ||\n editable.type.trim() === '')) {\n const type = editable ? 'text' : editable;\n return (\n \n );\n } else if (editable.type) {// standard declare\n // put style if exist\n editable.style && (attr.style = editable.style);\n // put class if exist\n attr.className = (editorClass || '') +\n ' form-control editor edit-' +\n editable.type +\n (editable.className ? (' ' + editable.className) : '');\n\n if (editable.type === 'select') {// process select input\n let options = [];\n let { values } = editable.options;\n const { textKey, valueKey } = editable.options;\n if (Utils.isFunction(values)) {\n values = values(row);\n }\n if (Array.isArray(values)) {// only can use arrray data for options\n let text;\n let value;\n options = values.map((option, i) => {\n if (typeof option === 'object') {\n text = textKey ? option[textKey] : option.text;\n value = valueKey ? option[valueKey] : option.value;\n } else {\n text = format ? format(option) : option;\n value = option;\n }\n return (\n \n );\n }\n );\n }\n return (\n \n );\n } else if (editable.type === 'textarea') {// process textarea input\n // put other if exist\n editable.cols && (attr.cols = editable.cols);\n editable.rows && (attr.rows = editable.rows);\n let saveBtn;\n const keyUpHandler = attr.onKeyDown;\n if (keyUpHandler) {\n attr.onKeyDown = function(e) {\n if (e.keyCode !== 13) { // not Pressed ENTER\n keyUpHandler(e);\n }\n };\n saveBtn = (\n \n );\n }\n return (\n \n \n { saveBtn }\n
\n );\n } else if (editable.type === 'checkbox') {\n let values = 'true:false';\n if (editable.options && editable.options.values) {\n // values = editable.options.values.split(':');\n values = editable.options.values;\n }\n attr.className = attr.className.replace('form-control', '');\n attr.className += ' checkbox pull-right';\n\n const checked = defaultValue &&\n defaultValue.toString() === values.split(':')[0] ? true : false;\n\n return (\n \n );\n } else if (editable.type === 'datetime') {\n return (\n \n );\n } else {// process other input type. as password,url,email...\n return (\n \n );\n }\n }\n // default return for other case of editable\n return (\n \n );\n};\n\nexport default editor;\n\n\n\n// WEBPACK FOOTER //\n// src/Editor.js","import Alert from 'react-s-alert';\n\nconst notice = (type, msg, title) => {\n const titleHTML = title ? `${ title }
` : '';\n\n const bodyHTML = `\n ${ titleHTML }\n \n \n ${ msg }\n
\n `;\n\n Alert.error(bodyHTML, {\n position: 'top-right',\n timeout: 3000,\n html: true,\n effect: 'scale'\n });\n};\n\nexport { notice };\n\n\n\n// WEBPACK FOOTER //\n// src/Notification.js","/* eslint max-len: 0 */\n/* eslint no-nested-ternary: 0 */\nimport React, { Component } from 'react';\nimport classSet from 'classnames';\n\nclass ExpandComponent extends Component {\n\n render() {\n const { className } = this.props;\n const trCss = {\n style: {\n backgroundColor: this.props.bgColor\n },\n className: classSet(className)\n };\n return (\n \n \n { this.props.children }\n | \n
\n );\n }\n}\n\nexport default ExpandComponent;\n\n\n\n// WEBPACK FOOTER //\n// src/ExpandComponent.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classSet from 'classnames';\nimport PageButton from './PageButton.js';\nimport SizePerPageDropDown from './SizePerPageDropDown';\nimport Const from '../Const';\nimport Util from '../util';\n\nclass PaginationList extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n open: this.props.open\n };\n }\n\n componentWillReceiveProps() {\n const { keepSizePerPageState } = this.props;\n if (!keepSizePerPageState) {\n this.closeDropDown();\n }\n }\n\n changePage = page => {\n const {\n pageStartIndex,\n prePage,\n currPage,\n nextPage,\n lastPage,\n firstPage,\n sizePerPage,\n keepSizePerPageState\n } = this.props;\n\n if (page === prePage) {\n page = (currPage - 1) < pageStartIndex ? pageStartIndex : currPage - 1;\n } else if (page === nextPage) {\n page = (currPage + 1) > this.lastPage ? this.lastPage : currPage + 1;\n } else if (page === lastPage) {\n page = this.lastPage;\n } else if (page === firstPage) {\n page = pageStartIndex;\n } else {\n page = parseInt(page, 10);\n }\n\n if (keepSizePerPageState) { this.closeDropDown(); }\n\n if (page !== currPage) {\n this.props.changePage(page, sizePerPage);\n }\n }\n\n changeSizePerPage = pageNum => {\n const selectSize = typeof pageNum === 'string' ? parseInt(pageNum, 10) : pageNum;\n let { currPage } = this.props;\n if (selectSize !== this.props.sizePerPage) {\n this.totalPages = Math.ceil(this.props.dataSize / selectSize);\n this.lastPage = this.props.pageStartIndex + this.totalPages - 1;\n if (currPage > this.lastPage) currPage = this.lastPage;\n this.props.changePage(currPage, selectSize);\n if (this.props.onSizePerPageList) {\n this.props.onSizePerPageList(selectSize);\n }\n }\n\n this.closeDropDown();\n }\n\n toggleDropDown = () => {\n this.setState(() => {\n return {\n open: !this.state.open\n };\n });\n }\n\n closeDropDown = () => {\n this.setState(() => {\n return {\n open: false\n };\n });\n }\n\n render() {\n const {\n currPage,\n dataSize,\n sizePerPage,\n sizePerPageList,\n paginationShowsTotal,\n pageStartIndex,\n paginationPanel,\n hidePageListOnlyOnePage\n } = this.props;\n this.totalPages = Math.ceil(dataSize / sizePerPage);\n this.lastPage = this.props.pageStartIndex + this.totalPages - 1;\n const pageBtns = this.makePage(Util.isFunction(paginationPanel));\n const dropdown = this.makeDropDown();\n\n const offset = Math.abs(Const.PAGE_START_INDEX - pageStartIndex);\n let start = ((currPage - pageStartIndex) * sizePerPage);\n start = dataSize === 0 ? 0 : start + 1;\n let to = Math.min((sizePerPage * (currPage + offset) - 1), dataSize);\n if (to >= dataSize) to--;\n let total = paginationShowsTotal ? \n Showing rows { start } to { to + 1 } of { dataSize }\n : null;\n\n if (Util.isFunction(paginationShowsTotal)) {\n total = paginationShowsTotal(start, to + 1, dataSize);\n }\n\n const content = paginationPanel && paginationPanel({\n currPage,\n sizePerPage,\n sizePerPageList,\n pageStartIndex,\n totalPages: this.totalPages,\n changePage: this.changePage,\n toggleDropDown: this.toggleDropDown,\n changeSizePerPage: this.changeSizePerPage,\n components: {\n totalText: total,\n sizePerPageDropdown: dropdown,\n pageList: pageBtns\n }\n });\n\n const hidePageList = hidePageListOnlyOnePage && this.totalPages === 1 ? 'none' : 'block';\n return (\n \n {\n content ||\n [ (\n
\n { total }{ sizePerPageList.length > 1 ? dropdown : null }\n
\n ), (\n
\n { pageBtns }\n
\n ) ]\n }\n
\n );\n }\n\n makeDropDown() {\n let dropdown;\n let dropdownProps;\n let sizePerPageText = '';\n const {\n sizePerPageDropDown,\n hideSizePerPage,\n sizePerPage,\n sizePerPageList\n } = this.props;\n if (sizePerPageDropDown) {\n dropdown = sizePerPageDropDown({\n open: this.state.open,\n hideSizePerPage,\n currSizePerPage: String(sizePerPage),\n sizePerPageList,\n toggleDropDown: this.toggleDropDown,\n changeSizePerPage: this.changeSizePerPage,\n onBlur: this.closeDropDown\n });\n if (dropdown.type.name === SizePerPageDropDown.name) {\n dropdownProps = dropdown.props;\n } else {\n return dropdown;\n }\n }\n\n if (dropdownProps || !dropdown) {\n const sizePerPageOptions = sizePerPageList.map((_sizePerPage) => {\n const pageText = _sizePerPage.text || _sizePerPage;\n const pageNum = _sizePerPage.value || _sizePerPage;\n if (sizePerPage === pageNum) sizePerPageText = pageText;\n return (\n \n {\n e.preventDefault();\n this.changeSizePerPage(pageNum);\n } }>{ pageText }\n \n );\n });\n dropdown = (\n \n );\n }\n return dropdown;\n }\n\n makePage(isCustomPagingPanel = false) {\n const pages = this.getPages();\n const isStart = (page, { currPage, pageStartIndex, firstPage, prePage }) =>\n (currPage === pageStartIndex && (page === firstPage || page === prePage));\n const isEnd = (page, { currPage, nextPage, lastPage }) =>\n (currPage === this.lastPage && (page === nextPage || page === lastPage ));\n const pageBtns = pages\n .filter(function(page) {\n if (this.props.alwaysShowAllBtns) {\n return true;\n }\n return (isStart(page, this.props) || isEnd(page, this.props)) ?\n false :\n true;\n }, this)\n .map(function(page) {\n const isActive = page === this.props.currPage;\n const isDisabled = (isStart(page, this.props) || isEnd(page, this.props)) ?\n true :\n false;\n let title = page + '';\n\n if (page === this.props.nextPage) {\n title = this.props.nextPageTitle;\n } else if (page === this.props.prePage) {\n title = this.props.prePageTitle;\n } else if (page === this.props.firstPage) {\n title = this.props.firstPageTitle;\n } else if (page === this.props.lastPage) {\n title = this.props.lastPageTitle;\n }\n\n return (\n \n { page }\n \n );\n }, this);\n const classname = classSet(\n isCustomPagingPanel ? null : 'react-bootstrap-table-page-btns-ul',\n 'pagination'\n );\n return (\n \n );\n }\n\n getLastPage() {\n return this.lastPage;\n }\n\n getPages() {\n let pages;\n let endPage = this.totalPages;\n if (endPage <= 0) return [];\n let startPage = Math.max(\n this.props.currPage - Math.floor(this.props.paginationSize / 2),\n this.props.pageStartIndex\n );\n endPage = startPage + this.props.paginationSize - 1;\n\n if (endPage > this.lastPage) {\n endPage = this.lastPage;\n startPage = endPage - this.props.paginationSize + 1;\n }\n\n if (startPage !== this.props.pageStartIndex\n && this.totalPages > this.props.paginationSize\n && this.props.withFirstAndLast) {\n pages = [ this.props.firstPage, this.props.prePage ];\n } else if (this.totalPages > 1 || this.props.alwaysShowAllBtns) {\n pages = [ this.props.prePage ];\n } else {\n pages = [];\n }\n\n for (let i = startPage; i <= endPage; i++) {\n if (i >= this.props.pageStartIndex) pages.push(i);\n }\n\n if (endPage <= this.lastPage && pages.length > 1) {\n pages.push(this.props.nextPage);\n }\n if (endPage !== this.lastPage && this.props.withFirstAndLast) {\n pages.push(this.props.lastPage);\n }\n\n return pages;\n }\n}\nPaginationList.propTypes = {\n currPage: PropTypes.number,\n sizePerPage: PropTypes.number,\n dataSize: PropTypes.number,\n changePage: PropTypes.func,\n sizePerPageList: PropTypes.array,\n paginationShowsTotal: PropTypes.oneOfType([ PropTypes.bool, PropTypes.func ]),\n paginationSize: PropTypes.number,\n onSizePerPageList: PropTypes.func,\n prePage: PropTypes.string,\n pageStartIndex: PropTypes.number,\n hideSizePerPage: PropTypes.bool,\n alwaysShowAllBtns: PropTypes.bool,\n withFirstAndLast: PropTypes.bool,\n sizePerPageDropDown: PropTypes.func,\n paginationPanel: PropTypes.func,\n prePageTitle: PropTypes.string,\n nextPageTitle: PropTypes.string,\n firstPageTitle: PropTypes.string,\n lastPageTitle: PropTypes.string,\n hidePageListOnlyOnePage: PropTypes.bool,\n keepSizePerPageState: PropTypes.bool\n};\n\nPaginationList.defaultProps = {\n sizePerPage: Const.SIZE_PER_PAGE,\n pageStartIndex: Const.PAGE_START_INDEX\n};\n\nexport default PaginationList;\n\n\n\n// WEBPACK FOOTER //\n// src/pagination/PaginationList.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classSet from 'classnames';\n\nclass PageButton extends Component {\n\n constructor(props) {\n super(props);\n }\n\n pageBtnClick = e => {\n e.preventDefault();\n this.props.changePage(e.currentTarget.textContent);\n }\n\n render() {\n const classes = classSet({\n 'active': this.props.active,\n 'disabled': this.props.disable,\n 'hidden': this.props.hidden,\n 'page-item': true\n });\n return (\n \n { this.props.children }\n \n );\n }\n}\nPageButton.propTypes = {\n title: PropTypes.string,\n changePage: PropTypes.func,\n active: PropTypes.bool,\n disable: PropTypes.bool,\n hidden: PropTypes.bool,\n children: PropTypes.node\n};\n\nexport default PageButton;\n\n\n\n// WEBPACK FOOTER //\n// src/pagination/PageButton.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nconst sizePerPageDefaultClass = 'react-bs-table-sizePerPage-dropdown';\n\nclass SizePerPageDropDown extends Component {\n render() {\n const {\n open,\n hidden,\n onClick,\n onBlur,\n options,\n className,\n variation,\n btnContextual,\n currSizePerPage\n } = this.props;\n\n const openClass = open ? 'open show' : '';\n const dropDownStyle = { visibility: hidden ? 'hidden' : 'visible' };\n\n return (\n \n \n \n \n );\n }\n}\n\nSizePerPageDropDown.propTypes = {\n open: PropTypes.bool,\n hidden: PropTypes.bool,\n btnContextual: PropTypes.string,\n currSizePerPage: PropTypes.string,\n options: PropTypes.array,\n variation: PropTypes.oneOf([ 'dropdown', 'dropup' ]),\n className: PropTypes.string,\n onClick: PropTypes.func,\n onBlur: PropTypes.func\n};\nSizePerPageDropDown.defaultProps = {\n open: false,\n hidden: false,\n btnContextual: 'btn-default btn-secondary',\n variation: 'dropdown',\n className: ''\n};\n\n\nexport default SizePerPageDropDown;\n\n\n\n// WEBPACK FOOTER //\n// src/pagination/SizePerPageDropDown.js","/* eslint no-console: 0 */\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Modal from 'react-modal';\n// import classSet from 'classnames';\nimport Const from '../Const';\n// import editor from '../Editor';\nimport { notice } from '../Notification.js';\nimport InsertModal from './InsertModal';\nimport InsertButton from './InsertButton';\nimport DeleteButton from './DeleteButton';\nimport ExportCSVButton from './ExportCSVButton';\nimport ShowSelectedOnlyButton from './ShowSelectedOnlyButton';\nimport SearchField from './SearchField';\nimport ClearSearchButton from './ClearSearchButton';\n\nclass ToolBar extends Component {\n\n static modalSeq = 0;\n\n constructor(props) {\n super(props);\n this.timeouteClear = 0;\n this.modalClassName;\n this.state = {\n isInsertModalOpen: false,\n validateState: null,\n shakeEditor: false,\n showSelected: false\n };\n }\n\n componentWillMount() {\n const delay = this.props.searchDelayTime ? this.props.searchDelayTime : 0;\n this.debounceCallback = this.handleDebounce(() => {\n const { seachInput } = this.refs;\n seachInput && this.props.onSearch(seachInput.getValue());\n },\n delay\n );\n }\n\n componentWillReceiveProps(nextProps) {\n if (nextProps.reset) {\n this.setSearchInput('');\n }\n }\n\n componentWillUnmount() {\n this.clearTimeout();\n }\n\n setSearchInput(text) {\n const { seachInput } = this.refs;\n if (seachInput && seachInput.value !== text) {\n seachInput.value = text;\n }\n }\n\n clearTimeout() {\n if (this.timeouteClear) {\n clearTimeout(this.timeouteClear);\n this.timeouteClear = 0;\n }\n }\n\n displayCommonMessage = () => {\n notice('error', this.props.insertFailIndicator, '');\n }\n\n validateNewRow(newRow) {\n const validateState = {};\n let isValid = true;\n let tempMsg;\n let responseType;\n\n this.props.columns.forEach(column => {\n if (column.isKey && column.keyValidator) { // key validator for checking exist key\n tempMsg = this.props.isValidKey(newRow[column.field]);\n if (tempMsg) {\n this.displayCommonMessage();\n isValid = false;\n validateState[column.field] = tempMsg;\n }\n } else if (column.editable && column.editable.validator) { // process validate\n tempMsg = column.editable.validator(newRow[column.field], newRow);\n responseType = typeof tempMsg;\n if (responseType !== 'object' && tempMsg !== true) {\n this.displayCommonMessage();\n isValid = false;\n validateState[column.field] = tempMsg;\n } else if (responseType === 'object' && tempMsg.isValid !== true) {\n notice(\n tempMsg.notification.type,\n tempMsg.notification.msg,\n tempMsg.notification.title);\n isValid = false;\n validateState[column.field] = tempMsg.notification.msg;\n }\n }\n });\n\n if (isValid) {\n return true;\n } else {\n this.clearTimeout();\n // show error in form and shake it\n this.setState(() => { return { validateState, shakeEditor: true }; });\n this.timeouteClear = setTimeout(() => {\n this.setState(() => { return { shakeEditor: false }; });\n }, 300);\n return null;\n }\n }\n\n handleSaveBtnClick = (newRow) => {\n if (!this.validateNewRow(newRow)) { // validation fail\n return;\n }\n const msg = this.props.onAddRow(newRow);\n if (msg !== false) {\n this.afterHandleSaveBtnClick(msg);\n }\n }\n\n afterHandleSaveBtnClick = (msg) => {\n if (msg) {\n notice('error', msg, '');\n this.clearTimeout();\n // shake form and hack prevent modal hide\n this.setState(() => {\n return {\n shakeEditor: true,\n validateState: 'this is hack for prevent bootstrap modal hide'\n };\n });\n // clear animate class\n this.timeouteClear = setTimeout(() => {\n this.setState(() => { return { shakeEditor: false }; });\n }, 300);\n } else {\n // reset state and hide modal hide\n this.setState(() => {\n return {\n validateState: null,\n shakeEditor: false,\n isInsertModalOpen: false\n };\n });\n }\n }\n\n handleModalClose = () => {\n this.setState(() => { return { isInsertModalOpen: false }; });\n }\n\n handleModalOpen = () => {\n this.setState(() => { return { isInsertModalOpen: true }; });\n }\n\n handleShowOnlyToggle = () => {\n this.setState(() => {\n return {\n showSelected: !this.state.showSelected\n };\n });\n this.props.onShowOnlySelected();\n }\n\n handleDropRowBtnClick = () => {\n this.props.onDropRow();\n }\n\n handleCloseBtn() {\n this.refs.warning.style.display = 'none';\n }\n\n handleDebounce = (func, wait, immediate) => {\n let timeout;\n\n return () => {\n const later = () => {\n timeout = null;\n\n if (!immediate) {\n func.apply(this, arguments);\n }\n };\n\n const callNow = immediate && !timeout;\n\n clearTimeout(timeout);\n\n timeout = setTimeout(later, wait || 0);\n\n if (callNow) {\n func.appy(this, arguments);\n }\n };\n }\n\n handleKeyUp = (event) => {\n event.persist();\n this.debounceCallback(event);\n }\n\n handleExportCSV = () => {\n this.props.onExportCSV();\n }\n\n handleClearBtnClick = () => {\n const { seachInput } = this.refs;\n seachInput && seachInput.setValue('');\n this.props.onSearch('');\n }\n\n render() {\n this.modalClassName = 'bs-table-modal-sm' + ToolBar.modalSeq++;\n let toolbar = null;\n let btnGroup = null;\n let insertBtn = null;\n let deleteBtn = null;\n let exportCSVBtn = null;\n let showSelectedOnlyBtn = null;\n\n if (this.props.enableInsert) {\n if (this.props.insertBtn) {\n insertBtn = this.renderCustomBtn(this.props.insertBtn,\n [ this.handleModalOpen ], InsertButton.name, 'onClick', this.handleModalOpen);\n } else {\n insertBtn = (\n \n );\n }\n }\n\n if (this.props.enableDelete) {\n if (this.props.deleteBtn) {\n deleteBtn = this.renderCustomBtn(this.props.deleteBtn,\n [ this.handleDropRowBtnClick ], DeleteButton.name, 'onClick', this.handleDropRowBtnClick);\n } else {\n deleteBtn = (\n \n );\n }\n }\n\n if (this.props.enableShowOnlySelected) {\n if (this.props.showSelectedOnlyBtn) {\n showSelectedOnlyBtn = this.renderCustomBtn(this.props.showSelectedOnlyBtn,\n [ this.handleShowOnlyToggle, this.state.showSelected ], ShowSelectedOnlyButton.name,\n 'onClick', this.handleShowOnlyToggle);\n } else {\n showSelectedOnlyBtn = (\n \n );\n }\n }\n\n if (this.props.enableExportCSV) {\n if (this.props.exportCSVBtn) {\n exportCSVBtn = this.renderCustomBtn(this.props.exportCSVBtn,\n [ this.handleExportCSV ], ExportCSVButton.name, 'onClick', this.handleExportCSV);\n } else {\n exportCSVBtn = (\n \n );\n }\n }\n\n if (this.props.btnGroup) {\n btnGroup = this.props.btnGroup({\n exportCSVBtn,\n insertBtn,\n deleteBtn,\n showSelectedOnlyBtn\n });\n } else {\n btnGroup = (\n \n { exportCSVBtn }\n { insertBtn }\n { deleteBtn }\n { showSelectedOnlyBtn }\n
\n );\n }\n\n const [ searchPanel, searchField, clearBtn ] = this.renderSearchPanel();\n const modal = this.props.enableInsert ? this.renderInsertRowModal() : null;\n\n if (this.props.toolBar) {\n toolbar = this.props.toolBar({\n components: {\n exportCSVBtn,\n insertBtn,\n deleteBtn,\n showSelectedOnlyBtn,\n searchPanel,\n btnGroup,\n searchField,\n clearBtn\n },\n event: {\n openInsertModal: this.handleModalOpen,\n closeInsertModal: this.handleModalClose,\n dropRow: this.handleDropRowBtnClick,\n showOnlyToogle: this.handleShowOnlyToggle,\n exportCSV: this.handleExportCSV,\n search: this.props.onSearch\n }\n });\n } else {\n toolbar = [ (\n \n { this.props.searchPosition === 'left' ? searchPanel : btnGroup }\n
\n ), (\n \n { this.props.searchPosition === 'left' ? btnGroup : searchPanel }\n
\n ) ];\n }\n\n return (\n \n { toolbar }\n { modal }\n
\n );\n }\n\n renderSearchPanel() {\n if (this.props.enableSearch) {\n let classNames = 'form-group form-group-sm react-bs-table-search-form';\n let clearBtn = null;\n let searchField = null;\n let searchPanel = null;\n if (this.props.clearSearch) {\n if (this.props.clearSearchBtn) {\n clearBtn = this.renderCustomBtn(this.props.clearSearchBtn,\n [ this.handleClearBtnClick ], ClearSearchButton.name, 'onClick', this.handleClearBtnClick); /* eslint max-len: 0*/\n } else {\n clearBtn = (\n \n );\n }\n classNames += ' input-group input-group-sm';\n }\n\n if (this.props.searchField) {\n searchField = this.props.searchField({\n search: this.handleKeyUp,\n defaultValue: this.props.defaultSearch,\n placeholder: this.props.searchPlaceholder\n });\n if (searchField.type.name === SearchField.name) {\n searchField = React.cloneElement(searchField, {\n ref: 'seachInput',\n onKeyUp: this.handleKeyUp\n });\n } else {\n searchField = React.cloneElement(searchField, {\n ref: 'seachInput'\n });\n }\n } else {\n searchField = (\n \n );\n }\n if (this.props.searchPanel) {\n searchPanel = this.props.searchPanel({\n searchField, clearBtn,\n search: this.props.onSearch,\n defaultValue: this.props.defaultSearch,\n placeholder: this.props.searchPlaceholder,\n clearBtnClick: this.handleClearBtnClick\n });\n } else {\n searchPanel = (\n \n { searchField }\n \n { clearBtn }\n \n
\n );\n }\n return [ searchPanel, searchField, clearBtn ];\n } else {\n return [];\n }\n }\n\n renderInsertRowModal() {\n const validateState = this.state.validateState || {};\n const {\n version,\n columns,\n ignoreEditable,\n insertModalHeader,\n insertModalBody,\n insertModalFooter,\n insertModal\n } = this.props;\n\n let modal;\n modal = insertModal && insertModal(\n this.handleModalClose,\n this.handleSaveBtnClick,\n columns,\n validateState,\n ignoreEditable\n );\n\n if (!modal) {\n modal = (\n \n );\n }\n\n return (\n \n { modal }\n \n );\n }\n\n renderCustomBtn(cb, params, componentName, eventName, event) {\n let element = cb.apply(null, params);\n if (element.type.name === componentName && !element.props[eventName]) {\n const props = {};\n props[eventName] = event;\n element = React.cloneElement(element, props);\n }\n return element;\n }\n}\n\nToolBar.propTypes = {\n version: PropTypes.string,\n onAddRow: PropTypes.func,\n onDropRow: PropTypes.func,\n onShowOnlySelected: PropTypes.func,\n enableInsert: PropTypes.bool,\n enableDelete: PropTypes.bool,\n enableSearch: PropTypes.bool,\n enableShowOnlySelected: PropTypes.bool,\n columns: PropTypes.array,\n searchPlaceholder: PropTypes.string,\n exportCSVText: PropTypes.string,\n insertText: PropTypes.string,\n deleteText: PropTypes.string,\n saveText: PropTypes.string,\n closeText: PropTypes.string,\n clearSearch: PropTypes.bool,\n ignoreEditable: PropTypes.bool,\n defaultSearch: PropTypes.string,\n insertModalHeader: PropTypes.func,\n insertModalBody: PropTypes.func,\n insertModalFooter: PropTypes.func,\n insertModal: PropTypes.func,\n insertBtn: PropTypes.func,\n deleteBtn: PropTypes.func,\n showSelectedOnlyBtn: PropTypes.func,\n exportCSVBtn: PropTypes.func,\n clearSearchBtn: PropTypes.func,\n searchField: PropTypes.func,\n searchPanel: PropTypes.func,\n btnGroup: PropTypes.func,\n toolBar: PropTypes.func,\n searchPosition: PropTypes.string,\n reset: PropTypes.bool,\n isValidKey: PropTypes.func,\n insertFailIndicator: PropTypes.string\n};\n\nToolBar.defaultProps = {\n reset: false,\n enableInsert: false,\n enableDelete: false,\n enableSearch: false,\n enableShowOnlySelected: false,\n clearSearch: false,\n ignoreEditable: false,\n exportCSVText: Const.EXPORT_CSV_TEXT,\n insertText: Const.INSERT_BTN_TEXT,\n deleteText: Const.DELETE_BTN_TEXT,\n saveText: Const.SAVE_BTN_TEXT,\n closeText: Const.CLOSE_BTN_TEXT\n};\n\nexport default ToolBar;\n\n\n\n// WEBPACK FOOTER //\n// src/toolbar/ToolBar.js","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Modal = require(\"./components/Modal\");\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _Modal2.default;\nmodule.exports = exports[\"default\"];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-modal/lib/index.js\n// module id = 45\n// module chunks = 0","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.bodyOpenClassName = exports.portalClassName = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require(\"react-dom\");\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _ModalPortal = require(\"./ModalPortal\");\n\nvar _ModalPortal2 = _interopRequireDefault(_ModalPortal);\n\nvar _ariaAppHider = require(\"../helpers/ariaAppHider\");\n\nvar ariaAppHider = _interopRequireWildcard(_ariaAppHider);\n\nvar _safeHTMLElement = require(\"../helpers/safeHTMLElement\");\n\nvar _safeHTMLElement2 = _interopRequireDefault(_safeHTMLElement);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar portalClassName = exports.portalClassName = \"ReactModalPortal\";\nvar bodyOpenClassName = exports.bodyOpenClassName = \"ReactModal__Body--open\";\n\nvar isReact16 = _reactDom2.default.createPortal !== undefined;\nvar createPortal = isReact16 ? _reactDom2.default.createPortal : _reactDom2.default.unstable_renderSubtreeIntoContainer;\n\nfunction getParentElement(parentSelector) {\n return parentSelector();\n}\n\nvar Modal = function (_Component) {\n _inherits(Modal, _Component);\n\n function Modal() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Modal);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Modal.__proto__ || Object.getPrototypeOf(Modal)).call.apply(_ref, [this].concat(args))), _this), _this.removePortal = function () {\n !isReact16 && _reactDom2.default.unmountComponentAtNode(_this.node);\n var parent = getParentElement(_this.props.parentSelector);\n parent.removeChild(_this.node);\n }, _this.portalRef = function (ref) {\n _this.portal = ref;\n }, _this.renderPortal = function (props) {\n var portal = createPortal(_this, _react2.default.createElement(_ModalPortal2.default, _extends({ defaultStyles: Modal.defaultStyles }, props)), _this.node);\n _this.portalRef(portal);\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Modal, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (!_safeHTMLElement.canUseDOM) return;\n\n if (!isReact16) {\n this.node = document.createElement(\"div\");\n }\n this.node.className = this.props.portalClassName;\n\n var parent = getParentElement(this.props.parentSelector);\n parent.appendChild(this.node);\n\n !isReact16 && this.renderPortal(this.props);\n }\n }, {\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(newProps) {\n if (!_safeHTMLElement.canUseDOM) return;\n var isOpen = newProps.isOpen;\n // Stop unnecessary renders if modal is remaining closed\n\n if (!this.props.isOpen && !isOpen) return;\n\n var currentParent = getParentElement(this.props.parentSelector);\n var newParent = getParentElement(newProps.parentSelector);\n\n if (newParent !== currentParent) {\n currentParent.removeChild(this.node);\n newParent.appendChild(this.node);\n }\n\n !isReact16 && this.renderPortal(newProps);\n }\n }, {\n key: \"componentWillUpdate\",\n value: function componentWillUpdate(newProps) {\n if (!_safeHTMLElement.canUseDOM) return;\n if (newProps.portalClassName !== this.props.portalClassName) {\n this.node.className = newProps.portalClassName;\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (!_safeHTMLElement.canUseDOM || !this.node || !this.portal) return;\n\n var state = this.portal.state;\n var now = Date.now();\n var closesAt = state.isOpen && this.props.closeTimeoutMS && (state.closesAt || now + this.props.closeTimeoutMS);\n\n if (closesAt) {\n if (!state.beforeClose) {\n this.portal.closeWithTimeout();\n }\n\n setTimeout(this.removePortal, closesAt - now);\n } else {\n this.removePortal();\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n if (!_safeHTMLElement.canUseDOM || !isReact16) {\n return null;\n }\n\n if (!this.node && isReact16) {\n this.node = document.createElement(\"div\");\n }\n\n return createPortal(_react2.default.createElement(_ModalPortal2.default, _extends({\n ref: this.portalRef,\n defaultStyles: Modal.defaultStyles\n }, this.props)), this.node);\n }\n }], [{\n key: \"setAppElement\",\n value: function setAppElement(element) {\n ariaAppHider.setElement(element);\n }\n\n /* eslint-disable react/no-unused-prop-types */\n\n /* eslint-enable react/no-unused-prop-types */\n\n }]);\n\n return Modal;\n}(_react.Component);\n\nModal.propTypes = {\n isOpen: _propTypes2.default.bool.isRequired,\n style: _propTypes2.default.shape({\n content: _propTypes2.default.object,\n overlay: _propTypes2.default.object\n }),\n portalClassName: _propTypes2.default.string,\n bodyOpenClassName: _propTypes2.default.string,\n className: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object]),\n overlayClassName: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object]),\n appElement: _propTypes2.default.instanceOf(_safeHTMLElement2.default),\n onAfterOpen: _propTypes2.default.func,\n onRequestClose: _propTypes2.default.func,\n closeTimeoutMS: _propTypes2.default.number,\n ariaHideApp: _propTypes2.default.bool,\n shouldFocusAfter: _propTypes2.default.bool,\n shouldCloseOnOverlayClick: _propTypes2.default.bool,\n parentSelector: _propTypes2.default.func,\n aria: _propTypes2.default.object,\n role: _propTypes2.default.string,\n contentLabel: _propTypes2.default.string,\n shouldCloseOnEsc: _propTypes2.default.bool\n};\nModal.defaultProps = {\n isOpen: false,\n portalClassName: portalClassName,\n bodyOpenClassName: bodyOpenClassName,\n ariaHideApp: true,\n closeTimeoutMS: 0,\n shouldFocusAfterRender: true,\n shouldCloseOnEsc: true,\n shouldCloseOnOverlayClick: true,\n parentSelector: function parentSelector() {\n return document.body;\n }\n};\nModal.defaultStyles = {\n overlay: {\n position: \"fixed\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: \"rgba(255, 255, 255, 0.75)\"\n },\n content: {\n position: \"absolute\",\n top: \"40px\",\n left: \"40px\",\n right: \"40px\",\n bottom: \"40px\",\n border: \"1px solid #ccc\",\n background: \"#fff\",\n overflow: \"auto\",\n WebkitOverflowScrolling: \"touch\",\n borderRadius: \"4px\",\n outline: \"none\",\n padding: \"20px\"\n }\n};\nexports.default = Modal;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-modal/lib/components/Modal.js\n// module id = 46\n// module chunks = 0","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _focusManager = require(\"../helpers/focusManager\");\n\nvar focusManager = _interopRequireWildcard(_focusManager);\n\nvar _scopeTab = require(\"../helpers/scopeTab\");\n\nvar _scopeTab2 = _interopRequireDefault(_scopeTab);\n\nvar _ariaAppHider = require(\"../helpers/ariaAppHider\");\n\nvar ariaAppHider = _interopRequireWildcard(_ariaAppHider);\n\nvar _refCount = require(\"../helpers/refCount\");\n\nvar refCount = _interopRequireWildcard(_refCount);\n\nvar _bodyClassList = require(\"../helpers/bodyClassList\");\n\nvar bodyClassList = _interopRequireWildcard(_bodyClassList);\n\nvar _safeHTMLElement = require(\"../helpers/safeHTMLElement\");\n\nvar _safeHTMLElement2 = _interopRequireDefault(_safeHTMLElement);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// so that our CSS is statically analyzable\nvar CLASS_NAMES = {\n overlay: \"ReactModal__Overlay\",\n content: \"ReactModal__Content\"\n};\n\nvar TAB_KEY = 9;\nvar ESC_KEY = 27;\n\nvar ModalPortal = function (_Component) {\n _inherits(ModalPortal, _Component);\n\n function ModalPortal(props) {\n _classCallCheck(this, ModalPortal);\n\n var _this = _possibleConstructorReturn(this, (ModalPortal.__proto__ || Object.getPrototypeOf(ModalPortal)).call(this, props));\n\n _this.setFocusAfterRender = function (focus) {\n _this.focusAfterRender = _this.props.shouldFocusAfterRender && focus;\n };\n\n _this.setOverlayRef = function (overlay) {\n _this.overlay = overlay;\n };\n\n _this.setContentRef = function (content) {\n _this.content = content;\n };\n\n _this.afterClose = function () {\n focusManager.returnFocus();\n focusManager.teardownScopedFocus();\n };\n\n _this.open = function () {\n _this.beforeOpen();\n if (_this.state.afterOpen && _this.state.beforeClose) {\n clearTimeout(_this.closeTimer);\n _this.setState({ beforeClose: false });\n } else {\n focusManager.setupScopedFocus(_this.node);\n focusManager.markForFocusLater();\n _this.setState({ isOpen: true }, function () {\n _this.setState({ afterOpen: true });\n\n if (_this.props.isOpen && _this.props.onAfterOpen) {\n _this.props.onAfterOpen();\n }\n });\n }\n };\n\n _this.close = function () {\n _this.beforeClose();\n if (_this.props.closeTimeoutMS > 0) {\n _this.closeWithTimeout();\n } else {\n _this.closeWithoutTimeout();\n }\n };\n\n _this.focusContent = function () {\n return _this.content && !_this.contentHasFocus() && _this.content.focus();\n };\n\n _this.closeWithTimeout = function () {\n var closesAt = Date.now() + _this.props.closeTimeoutMS;\n _this.setState({ beforeClose: true, closesAt: closesAt }, function () {\n _this.closeTimer = setTimeout(_this.closeWithoutTimeout, _this.state.closesAt - Date.now());\n });\n };\n\n _this.closeWithoutTimeout = function () {\n _this.setState({\n beforeClose: false,\n isOpen: false,\n afterOpen: false,\n closesAt: null\n }, _this.afterClose);\n };\n\n _this.handleKeyDown = function (event) {\n if (event.keyCode === TAB_KEY) {\n (0, _scopeTab2.default)(_this.content, event);\n }\n\n if (_this.props.shouldCloseOnEsc && event.keyCode === ESC_KEY) {\n event.preventDefault();\n _this.requestClose(event);\n }\n };\n\n _this.handleOverlayOnClick = function (event) {\n if (_this.shouldClose === null) {\n _this.shouldClose = true;\n }\n\n if (_this.shouldClose && _this.props.shouldCloseOnOverlayClick) {\n if (_this.ownerHandlesClose()) {\n _this.requestClose(event);\n } else {\n _this.focusContent();\n }\n }\n _this.shouldClose = null;\n _this.moveFromContentToOverlay = null;\n };\n\n _this.handleOverlayOnMouseUp = function () {\n if (_this.moveFromContentToOverlay === null) {\n _this.shouldClose = false;\n }\n };\n\n _this.handleContentOnMouseUp = function () {\n _this.shouldClose = false;\n };\n\n _this.handleOverlayOnMouseDown = function () {\n _this.moveFromContentToOverlay = false;\n };\n\n _this.handleContentOnClick = function () {\n _this.shouldClose = false;\n };\n\n _this.handleContentOnMouseDown = function () {\n _this.shouldClose = false;\n _this.moveFromContentToOverlay = false;\n };\n\n _this.requestClose = function (event) {\n return _this.ownerHandlesClose() && _this.props.onRequestClose(event);\n };\n\n _this.ownerHandlesClose = function () {\n return _this.props.onRequestClose;\n };\n\n _this.shouldBeClosed = function () {\n return !_this.state.isOpen && !_this.state.beforeClose;\n };\n\n _this.contentHasFocus = function () {\n return document.activeElement === _this.content || _this.content.contains(document.activeElement);\n };\n\n _this.buildClassName = function (which, additional) {\n var classNames = (typeof additional === \"undefined\" ? \"undefined\" : _typeof(additional)) === \"object\" ? additional : {\n base: CLASS_NAMES[which],\n afterOpen: CLASS_NAMES[which] + \"--after-open\",\n beforeClose: CLASS_NAMES[which] + \"--before-close\"\n };\n var className = classNames.base;\n if (_this.state.afterOpen) {\n className = className + \" \" + classNames.afterOpen;\n }\n if (_this.state.beforeClose) {\n className = className + \" \" + classNames.beforeClose;\n }\n return typeof additional === \"string\" && additional ? className + \" \" + additional : className;\n };\n\n _this.ariaAttributes = function (items) {\n return Object.keys(items).reduce(function (acc, name) {\n acc[\"aria-\" + name] = items[name];\n return acc;\n }, {});\n };\n\n _this.state = {\n afterOpen: false,\n beforeClose: false\n };\n\n _this.shouldClose = null;\n _this.moveFromContentToOverlay = null;\n return _this;\n }\n\n _createClass(ModalPortal, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n // Focus needs to be set when mounting and already open\n if (this.props.isOpen) {\n this.setFocusAfterRender(true);\n this.open();\n }\n }\n }, {\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(newProps) {\n if (process.env.NODE_ENV !== \"production\") {\n if (newProps.bodyOpenClassName !== this.props.bodyOpenClassName) {\n // eslint-disable-next-line no-console\n console.warn('React-Modal: \"bodyOpenClassName\" prop has been modified. ' + \"This may cause unexpected behavior when multiple modals are open.\");\n }\n }\n // Focus only needs to be set once when the modal is being opened\n if (!this.props.isOpen && newProps.isOpen) {\n this.setFocusAfterRender(true);\n this.open();\n } else if (this.props.isOpen && !newProps.isOpen) {\n this.close();\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n if (this.focusAfterRender) {\n this.focusContent();\n this.setFocusAfterRender(false);\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.beforeClose();\n clearTimeout(this.closeTimer);\n }\n }, {\n key: \"beforeOpen\",\n value: function beforeOpen() {\n var _props = this.props,\n appElement = _props.appElement,\n ariaHideApp = _props.ariaHideApp,\n bodyOpenClassName = _props.bodyOpenClassName;\n // Add body class\n\n bodyClassList.add(bodyOpenClassName);\n // Add aria-hidden to appElement\n if (ariaHideApp) {\n ariaAppHider.hide(appElement);\n }\n }\n }, {\n key: \"beforeClose\",\n value: function beforeClose() {\n var _props2 = this.props,\n appElement = _props2.appElement,\n ariaHideApp = _props2.ariaHideApp,\n bodyOpenClassName = _props2.bodyOpenClassName;\n // Remove class if no more modals are open\n\n bodyClassList.remove(bodyOpenClassName);\n // Reset aria-hidden attribute if all modals have been removed\n if (ariaHideApp && refCount.totalCount() < 1) {\n ariaAppHider.show(appElement);\n }\n }\n\n // Don't steal focus from inner elements\n\n }, {\n key: \"render\",\n value: function render() {\n var _props3 = this.props,\n className = _props3.className,\n overlayClassName = _props3.overlayClassName,\n defaultStyles = _props3.defaultStyles;\n\n var contentStyles = className ? {} : defaultStyles.content;\n var overlayStyles = overlayClassName ? {} : defaultStyles.overlay;\n\n return this.shouldBeClosed() ? null : _react2.default.createElement(\n \"div\",\n {\n ref: this.setOverlayRef,\n className: this.buildClassName(\"overlay\", overlayClassName),\n style: _extends({}, overlayStyles, this.props.style.overlay),\n onClick: this.handleOverlayOnClick,\n onMouseDown: this.handleOverlayOnMouseDown,\n onMouseUp: this.handleOverlayOnMouseUp\n },\n _react2.default.createElement(\n \"div\",\n _extends({\n ref: this.setContentRef,\n style: _extends({}, contentStyles, this.props.style.content),\n className: this.buildClassName(\"content\", className),\n tabIndex: \"-1\",\n onKeyDown: this.handleKeyDown,\n onMouseDown: this.handleContentOnMouseDown,\n onMouseUp: this.handleContentOnMouseUp,\n onClick: this.handleContentOnClick,\n role: this.props.role,\n \"aria-label\": this.props.contentLabel\n }, this.ariaAttributes(this.props.aria || {})),\n this.props.children\n )\n );\n }\n }]);\n\n return ModalPortal;\n}(_react.Component);\n\nModalPortal.defaultProps = {\n style: {\n overlay: {},\n content: {}\n }\n};\nModalPortal.propTypes = {\n isOpen: _propTypes2.default.bool.isRequired,\n defaultStyles: _propTypes2.default.shape({\n content: _propTypes2.default.object,\n overlay: _propTypes2.default.object\n }),\n style: _propTypes2.default.shape({\n content: _propTypes2.default.object,\n overlay: _propTypes2.default.object\n }),\n className: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object]),\n overlayClassName: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object]),\n bodyOpenClassName: _propTypes2.default.string,\n ariaHideApp: _propTypes2.default.bool,\n appElement: _propTypes2.default.instanceOf(_safeHTMLElement2.default),\n onAfterOpen: _propTypes2.default.func,\n onRequestClose: _propTypes2.default.func,\n closeTimeoutMS: _propTypes2.default.number,\n shouldFocusAfterRender: _propTypes2.default.bool,\n shouldCloseOnOverlayClick: _propTypes2.default.bool,\n role: _propTypes2.default.string,\n contentLabel: _propTypes2.default.string,\n aria: _propTypes2.default.object,\n children: _propTypes2.default.node,\n shouldCloseOnEsc: _propTypes2.default.bool\n};\nexports.default = ModalPortal;\nmodule.exports = exports[\"default\"];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-modal/lib/components/ModalPortal.js\n// module id = 47\n// module chunks = 0","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.handleBlur = handleBlur;\nexports.handleFocus = handleFocus;\nexports.markForFocusLater = markForFocusLater;\nexports.returnFocus = returnFocus;\nexports.setupScopedFocus = setupScopedFocus;\nexports.teardownScopedFocus = teardownScopedFocus;\n\nvar _tabbable = require(\"../helpers/tabbable\");\n\nvar _tabbable2 = _interopRequireDefault(_tabbable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar focusLaterElements = [];\nvar modalElement = null;\nvar needToFocus = false;\n\nfunction handleBlur() {\n needToFocus = true;\n}\n\nfunction handleFocus() {\n if (needToFocus) {\n needToFocus = false;\n if (!modalElement) {\n return;\n }\n // need to see how jQuery shims document.on('focusin') so we don't need the\n // setTimeout, firefox doesn't support focusin, if it did, we could focus\n // the element outside of a setTimeout. Side-effect of this implementation\n // is that the document.body gets focus, and then we focus our element right\n // after, seems fine.\n setTimeout(function () {\n if (modalElement.contains(document.activeElement)) {\n return;\n }\n var el = (0, _tabbable2.default)(modalElement)[0] || modalElement;\n el.focus();\n }, 0);\n }\n}\n\nfunction markForFocusLater() {\n focusLaterElements.push(document.activeElement);\n}\n\n/* eslint-disable no-console */\nfunction returnFocus() {\n var toFocus = null;\n try {\n toFocus = focusLaterElements.pop();\n toFocus.focus();\n return;\n } catch (e) {\n console.warn([\"You tried to return focus to\", toFocus, \"but it is not in the DOM anymore\"].join(\" \"));\n }\n}\n/* eslint-enable no-console */\n\nfunction setupScopedFocus(element) {\n modalElement = element;\n\n if (window.addEventListener) {\n window.addEventListener(\"blur\", handleBlur, false);\n document.addEventListener(\"focus\", handleFocus, true);\n } else {\n window.attachEvent(\"onBlur\", handleBlur);\n document.attachEvent(\"onFocus\", handleFocus);\n }\n}\n\nfunction teardownScopedFocus() {\n modalElement = null;\n\n if (window.addEventListener) {\n window.removeEventListener(\"blur\", handleBlur);\n document.removeEventListener(\"focus\", handleFocus);\n } else {\n window.detachEvent(\"onBlur\", handleBlur);\n document.detachEvent(\"onFocus\", handleFocus);\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-modal/lib/helpers/focusManager.js\n// module id = 48\n// module chunks = 0","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = findTabbableDescendants;\n/*!\n * Adapted from jQuery UI core\n *\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/category/ui-core/\n */\n\nvar tabbableNode = /input|select|textarea|button|object/;\n\nfunction hidden(el) {\n return el.offsetWidth <= 0 && el.offsetHeight <= 0 || el.style.display === \"none\";\n}\n\nfunction visible(element) {\n var parentElement = element;\n while (parentElement) {\n if (parentElement === document.body) break;\n if (hidden(parentElement)) return false;\n parentElement = parentElement.parentNode;\n }\n return true;\n}\n\nfunction focusable(element, isTabIndexNotNaN) {\n var nodeName = element.nodeName.toLowerCase();\n var res = tabbableNode.test(nodeName) && !element.disabled || (nodeName === \"a\" ? element.href || isTabIndexNotNaN : isTabIndexNotNaN);\n return res && visible(element);\n}\n\nfunction tabbable(element) {\n var tabIndex = element.getAttribute(\"tabindex\");\n if (tabIndex === null) tabIndex = undefined;\n var isTabIndexNaN = isNaN(tabIndex);\n return (isTabIndexNaN || tabIndex >= 0) && focusable(element, !isTabIndexNaN);\n}\n\nfunction findTabbableDescendants(element) {\n return [].slice.call(element.querySelectorAll(\"*\"), 0).filter(tabbable);\n}\nmodule.exports = exports[\"default\"];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-modal/lib/helpers/tabbable.js\n// module id = 49\n// module chunks = 0","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = scopeTab;\n\nvar _tabbable = require(\"./tabbable\");\n\nvar _tabbable2 = _interopRequireDefault(_tabbable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction scopeTab(node, event) {\n var tabbable = (0, _tabbable2.default)(node);\n if (!tabbable.length) {\n event.preventDefault();\n return;\n }\n var finalTabbable = tabbable[event.shiftKey ? 0 : tabbable.length - 1];\n var leavingFinalTabbable = finalTabbable === document.activeElement ||\n // handle immediate shift+tab after opening with mouse\n node === document.activeElement;\n if (!leavingFinalTabbable) return;\n event.preventDefault();\n var target = tabbable[event.shiftKey ? tabbable.length - 1 : 0];\n target.focus();\n}\nmodule.exports = exports[\"default\"];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-modal/lib/helpers/scopeTab.js\n// module id = 50\n// module chunks = 0","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.assertNodeList = assertNodeList;\nexports.setElement = setElement;\nexports.tryForceFallback = tryForceFallback;\nexports.validateElement = validateElement;\nexports.hide = hide;\nexports.show = show;\nexports.documentNotReadyOrSSRTesting = documentNotReadyOrSSRTesting;\nexports.resetForTesting = resetForTesting;\nvar globalElement = null;\n\nfunction assertNodeList(nodeList, selector) {\n if (!nodeList || !nodeList.length) {\n throw new Error(\"react-modal: No elements were found for selector \" + selector + \".\");\n }\n}\n\nfunction setElement(element) {\n var useElement = element;\n if (typeof useElement === \"string\") {\n var el = document.querySelectorAll(useElement);\n assertNodeList(el, useElement);\n useElement = \"length\" in el ? el[0] : el;\n }\n globalElement = useElement || globalElement;\n return globalElement;\n}\n\nfunction tryForceFallback() {\n if (document && document.body) {\n // force fallback to document.body\n setElement(document.body);\n return true;\n }\n return false;\n}\n\nfunction validateElement(appElement) {\n if (!appElement && !globalElement && !tryForceFallback()) {\n throw new Error([\"react-modal: Cannot fallback to `document.body`, because it is not\", \"ready or available. If you are doing server-side rendering, use this\", \"function to defined an element. `Modal.setAppElement(el)` to make\", \"this accessible\"].join(\" \"));\n }\n}\n\nfunction hide(appElement) {\n validateElement(appElement);\n (appElement || globalElement).setAttribute(\"aria-hidden\", \"true\");\n}\n\nfunction show(appElement) {\n validateElement(appElement);\n (appElement || globalElement).removeAttribute(\"aria-hidden\");\n}\n\nfunction documentNotReadyOrSSRTesting() {\n globalElement = null;\n}\n\nfunction resetForTesting() {\n globalElement = document.body;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-modal/lib/helpers/ariaAppHider.js\n// module id = 51\n// module chunks = 0","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.get = get;\nexports.add = add;\nexports.remove = remove;\nexports.totalCount = totalCount;\nvar classListMap = {};\n\nfunction get() {\n return classListMap;\n}\n\nfunction add(bodyClass) {\n // Set variable and default if none\n if (!classListMap[bodyClass]) {\n classListMap[bodyClass] = 0;\n }\n classListMap[bodyClass] += 1;\n return bodyClass;\n}\n\nfunction remove(bodyClass) {\n if (classListMap[bodyClass]) {\n classListMap[bodyClass] -= 1;\n }\n return bodyClass;\n}\n\nfunction totalCount() {\n return Object.keys(classListMap).reduce(function (acc, curr) {\n return acc + classListMap[curr];\n }, 0);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-modal/lib/helpers/refCount.js\n// module id = 52\n// module chunks = 0","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.add = add;\nexports.remove = remove;\n\nvar _refCount = require(\"./refCount\");\n\nvar refCount = _interopRequireWildcard(_refCount);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction add(bodyClass) {\n // Increment class(es) on refCount tracker and add class(es) to body\n bodyClass.split(\" \").map(refCount.add).forEach(function (className) {\n return document.body.classList.add(className);\n });\n}\n\nfunction remove(bodyClass) {\n var classListMap = refCount.get();\n // Decrement class(es) from the refCount tracker\n // and remove unused class(es) from body\n bodyClass.split(\" \").map(refCount.remove).filter(function (className) {\n return classListMap[className] === 0;\n }).forEach(function (className) {\n return document.body.classList.remove(className);\n });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-modal/lib/helpers/bodyClassList.js\n// module id = 53\n// module chunks = 0","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.canUseDOM = undefined;\n\nvar _exenv = require(\"exenv\");\n\nvar _exenv2 = _interopRequireDefault(_exenv);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar EE = _exenv2.default;\n\nvar SafeHTMLElement = EE.canUseDOM ? window.HTMLElement : {};\n\nvar canUseDOM = exports.canUseDOM = EE.canUseDOM;\n\nexports.default = SafeHTMLElement;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-modal/lib/helpers/safeHTMLElement.js\n// module id = 54\n// module chunks = 0","/*!\n Copyright (c) 2015 Jed Watson.\n Based on code that is Copyright 2013-2015, Facebook, Inc.\n All rights reserved.\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar canUseDOM = !!(\n\t\ttypeof window !== 'undefined' &&\n\t\twindow.document &&\n\t\twindow.document.createElement\n\t);\n\n\tvar ExecutionEnvironment = {\n\n\t\tcanUseDOM: canUseDOM,\n\n\t\tcanUseWorkers: typeof Worker !== 'undefined',\n\n\t\tcanUseEventListeners:\n\t\t\tcanUseDOM && !!(window.addEventListener || window.attachEvent),\n\n\t\tcanUseViewport: canUseDOM && !!window.screen\n\n\t};\n\n\tif (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\tdefine(function () {\n\t\t\treturn ExecutionEnvironment;\n\t\t});\n\t} else if (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = ExecutionEnvironment;\n\t} else {\n\t\twindow.ExecutionEnvironment = ExecutionEnvironment;\n\t}\n\n}());\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/exenv/index.js\n// module id = 55\n// module chunks = 0","/* eslint no-console: 0 */\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport InsertModalHeader from './InsertModalHeader';\nimport InsertModalFooter from './InsertModalFooter';\nimport InsertModalBody from './InsertModalBody';\n\nconst defaultModalClassName = 'react-bs-table-insert-modal';\n\nexport default class InsertModal extends Component {\n\n handleSave = () => {\n const bodyRefs = this.refs.body;\n if (bodyRefs.getFieldValue) {\n this.props.onSave(bodyRefs.getFieldValue());\n } else {\n console.error(`Custom InsertModalBody should implement getFieldValue function\n and should return an object presented as the new row that user input.`);\n }\n }\n\n render() {\n let { headerComponent, footerComponent, bodyComponent } = this.props;\n const {\n columns,\n validateState,\n ignoreEditable,\n onModalClose\n } = this.props;\n const bodyAttr = { columns, validateState, ignoreEditable };\n\n bodyComponent = bodyComponent && bodyComponent(columns, validateState, ignoreEditable);\n\n headerComponent = headerComponent && headerComponent(onModalClose, this.handleSave);\n\n footerComponent = footerComponent && footerComponent(onModalClose, this.handleSave);\n\n if (bodyComponent) {\n bodyComponent = React.cloneElement(bodyComponent, { ref: 'body' });\n }\n\n if (headerComponent && headerComponent.type.name === InsertModalHeader.name) {\n const eventProps = {};\n if (!headerComponent.props.onModalClose) eventProps.onModalClose = onModalClose;\n if (!headerComponent.props.onSave) eventProps.onSave = this.handleSave;\n if (Object.keys(eventProps).length > 0) {\n headerComponent = React.cloneElement(headerComponent, eventProps);\n }\n } else if (headerComponent && headerComponent.type.name !== InsertModalHeader.name) {\n const { className } = headerComponent.props;\n if (typeof className === 'undefined' || className.indexOf('modal-header') === -1) {\n headerComponent = ({ headerComponent }
);\n }\n }\n\n if (footerComponent && footerComponent.type.name === InsertModalFooter.name) {\n const eventProps = {};\n if (!footerComponent.props.onModalClose) eventProps.onModalClose = onModalClose;\n if (!footerComponent.props.onSave) eventProps.onSave = this.handleSave;\n if (Object.keys(eventProps).length > 0) {\n footerComponent = React.cloneElement(footerComponent, eventProps);\n }\n } else if (footerComponent && footerComponent.type.name !== InsertModalFooter.name) {\n const { className } = footerComponent.props;\n if (typeof className === 'undefined' || className.indexOf('modal-footer') === -1) {\n footerComponent = ({ footerComponent }
);\n }\n }\n\n return (\n \n {\n headerComponent ||\n ()\n }\n {\n bodyComponent ||\n ()\n }\n {\n footerComponent ||\n ()\n }\n
\n );\n }\n}\nInsertModal.propTypes = {\n version: PropTypes.string.isRequired,\n columns: PropTypes.array.isRequired,\n validateState: PropTypes.object.isRequired,\n ignoreEditable: PropTypes.bool,\n headerComponent: PropTypes.func,\n bodyComponent: PropTypes.func,\n footerComponent: PropTypes.func,\n onModalClose: PropTypes.func,\n onSave: PropTypes.func\n};\n\nInsertModal.defaultProps = {};\n\n\n\n// WEBPACK FOOTER //\n// src/toolbar/InsertModal.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Util from '../util';\n\nclass InsertModalHeader extends Component {\n\n handleCloseBtnClick = e => {\n const { onModalClose, beforeClose } = this.props;\n beforeClose && beforeClose(e);\n onModalClose();\n }\n\n renderContent(closeBtn) {\n const { version, title: titleText } = this.props;\n const title = { titleText }
;\n if (Util.isBootstrap4(version)) {\n return [ title, closeBtn ];\n } else {\n return (\n \n { closeBtn }\n { title }\n \n );\n }\n }\n\n render() {\n const {\n hideClose,\n className,\n children\n } = this.props;\n\n const closeBtn = hideClose ? null : (\n \n );\n\n const content = children || this.renderContent(closeBtn);\n\n return (\n \n { content }\n
\n );\n }\n}\n\nInsertModalHeader.propTypes = {\n version: PropTypes.string,\n className: PropTypes.string,\n title: PropTypes.string,\n onModalClose: PropTypes.func,\n hideClose: PropTypes.bool,\n beforeClose: PropTypes.func\n};\nInsertModalHeader.defaultProps = {\n version: '3',\n className: '',\n title: 'Add Row',\n onModalClose: undefined,\n hideClose: false,\n beforeClose: undefined\n};\n\nexport default InsertModalHeader;\n\n\n\n// WEBPACK FOOTER //\n// src/toolbar/InsertModalHeader.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Const from '../Const';\n\nclass InsertModalFooter extends Component {\n\n handleCloseBtnClick = e => {\n const { beforeClose, onModalClose } = this.props;\n beforeClose && beforeClose(e);\n onModalClose();\n }\n\n handleSaveBtnClick = e => {\n const { beforeSave, onSave } = this.props;\n beforeSave && beforeSave(e);\n onSave();\n }\n\n render() {\n const {\n className,\n saveBtnText,\n closeBtnText,\n closeBtnContextual,\n saveBtnContextual,\n closeBtnClass,\n saveBtnClass,\n children\n } = this.props;\n\n const content = children || [\n (),\n ()\n ];\n\n return (\n \n { content }\n
\n );\n }\n}\nInsertModalFooter.propTypes = {\n className: PropTypes.string,\n saveBtnText: PropTypes.string,\n closeBtnText: PropTypes.string,\n closeBtnContextual: PropTypes.string,\n saveBtnContextual: PropTypes.string,\n closeBtnClass: PropTypes.string,\n saveBtnClass: PropTypes.string,\n beforeClose: PropTypes.func,\n beforeSave: PropTypes.func,\n onSave: PropTypes.func,\n onModalClose: PropTypes.func\n};\nInsertModalFooter.defaultProps = {\n className: '',\n saveBtnText: Const.SAVE_BTN_TEXT,\n closeBtnText: Const.CLOSE_BTN_TEXT,\n closeBtnContextual: 'btn-default btn-secondary',\n saveBtnContextual: 'btn-primary',\n closeBtnClass: '',\n saveBtnClass: '',\n beforeClose: undefined,\n beforeSave: undefined\n};\n\nexport default InsertModalFooter;\n\n\n\n// WEBPACK FOOTER //\n// src/toolbar/InsertModalFooter.js","/* eslint react/display-name: 0 */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport editor from '../Editor';\n\nclass InsertModalBody extends Component {\n\n getFieldValue() {\n const newRow = {};\n this.props.columns.forEach((column, i) => {\n let inputVal;\n if (column.autoValue) {\n // when you want same auto generate value and not allow edit, example ID field\n const time = new Date().getTime();\n inputVal = typeof column.autoValue === 'function' ?\n column.autoValue() :\n (`autovalue-${time}`);\n } else if (column.hiddenOnInsert || !column.field) {\n inputVal = '';\n } else {\n const dom = this.refs[column.field + i];\n inputVal = dom.value;\n\n if (column.editable && column.editable.type === 'checkbox') {\n const values = inputVal.split(':');\n inputVal = dom.checked ? values[0] : values[1];\n } else if (column.customInsertEditor) {\n inputVal = inputVal || dom.getFieldValue();\n }\n }\n newRow[column.field] = inputVal;\n }, this);\n return newRow;\n }\n\n render() {\n const { columns, validateState, ignoreEditable } = this.props;\n return (\n \n {\n columns.map((column, i) => {\n const {\n editable,\n format,\n field,\n name,\n autoValue,\n hiddenOnInsert,\n customInsertEditor\n } = column;\n const attr = {\n ref: field + i,\n placeholder: editable.placeholder ? editable.placeholder : name\n };\n let fieldElement;\n const defaultValue = editable.defaultValue || undefined;\n if (customInsertEditor) {\n const { getElement } = customInsertEditor;\n fieldElement = getElement(column, attr, 'form-control', ignoreEditable, defaultValue);\n }\n\n // fieldElement = false, means to use default editor when enable custom editor\n // Becasuse some users want to have default editor based on some condition.\n if (!customInsertEditor || fieldElement === false) {\n fieldElement = editor(editable, attr, format, '', defaultValue, ignoreEditable);\n }\n\n if (autoValue || hiddenOnInsert || !column.field) {\n // when you want same auto generate value\n // and not allow edit, for example ID field\n return null;\n }\n const error = validateState[field] ?\n (
{ validateState[field] }) :\n null;\n return (\n
\n \n { fieldElement }\n { error }\n
\n );\n })\n }\n
\n );\n }\n}\nInsertModalBody.propTypes = {\n columns: PropTypes.array,\n validateState: PropTypes.object,\n ignoreEditable: PropTypes.bool\n};\n\nInsertModalBody.defaultProps = {\n validateState: {},\n ignoreEditable: false\n};\n\nexport default InsertModalBody;\n\n\n\n// WEBPACK FOOTER //\n// src/toolbar/InsertModalBody.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Const from '../Const';\n\nconst insertBtnDefaultClass = 'react-bs-table-add-btn';\n\nclass InsertButton extends Component {\n render() {\n const {\n btnContextual,\n className,\n onClick,\n btnGlyphicon,\n btnText,\n children,\n ...rest\n } = this.props;\n const content = children ||\n ( { btnText });\n return (\n \n );\n }\n}\n\nInsertButton.propTypes = {\n btnText: PropTypes.string,\n btnContextual: PropTypes.string,\n className: PropTypes.string,\n onClick: PropTypes.func,\n btnGlyphicon: PropTypes.string\n};\nInsertButton.defaultProps = {\n btnText: Const.INSERT_BTN_TEXT,\n btnContextual: 'btn-info',\n className: '',\n onClick: undefined,\n btnGlyphicon: 'glyphicon-plus fa-plus'\n};\n\nexport default InsertButton;\n\n\n\n// WEBPACK FOOTER //\n// src/toolbar/InsertButton.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Const from '../Const';\n\nconst deleteBtnDefaultClass = 'react-bs-table-del-btn';\n\nclass DeleteButton extends Component {\n render() {\n const {\n btnContextual,\n className,\n onClick,\n btnGlyphicon,\n btnText,\n children,\n ...rest\n } = this.props;\n const content = children ||\n ( { btnText });\n return (\n \n );\n }\n}\n\nDeleteButton.propTypes = {\n btnText: PropTypes.string,\n btnContextual: PropTypes.string,\n className: PropTypes.string,\n onClick: PropTypes.func,\n btnGlyphicon: PropTypes.string\n};\nDeleteButton.defaultProps = {\n btnText: Const.DELETE_BTN_TEXT,\n btnContextual: 'btn-warning',\n className: '',\n onClick: undefined,\n btnGlyphicon: 'glyphicon-trash fa-trash'\n};\n\nexport default DeleteButton;\n\n\n\n// WEBPACK FOOTER //\n// src/toolbar/DeleteButton.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Const from '../Const';\n\nconst exportCsvBtnDefaultClass = 'react-bs-table-csv-btn';\n\nclass ExportCSVButton extends Component {\n render() {\n const {\n btnContextual,\n className,\n onClick,\n btnGlyphicon,\n btnText,\n children,\n ...rest\n } = this.props;\n const content = children ||\n ( { btnText });\n return (\n \n );\n }\n}\n\nExportCSVButton.propTypes = {\n btnText: PropTypes.string,\n btnContextual: PropTypes.string,\n className: PropTypes.string,\n onClick: PropTypes.func,\n btnGlyphicon: PropTypes.string\n};\nExportCSVButton.defaultProps = {\n btnText: Const.EXPORT_CSV_TEXT,\n btnContextual: 'btn-success',\n className: '',\n onClick: undefined,\n btnGlyphicon: 'glyphicon-export fa-download'\n};\n\nexport default ExportCSVButton;\n\n\n\n// WEBPACK FOOTER //\n// src/toolbar/ExportCSVButton.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Const from '../Const';\n\nconst showSelectedOnlyBtnDefaultClass = 'react-bs-table-show-sel-only-btn';\n\nclass ShowSelectedOnlyButton extends Component {\n render() {\n const {\n btnContextual,\n className,\n onClick,\n toggle,\n showAllText,\n showOnlySelectText,\n children,\n ...rest\n } = this.props;\n const content = children ||\n ({ toggle ? showAllText : showOnlySelectText });\n return (\n \n );\n }\n}\n\nShowSelectedOnlyButton.propTypes = {\n showAllText: PropTypes.string,\n showOnlySelectText: PropTypes.string,\n toggle: PropTypes.bool,\n btnContextual: PropTypes.string,\n className: PropTypes.string,\n onClick: PropTypes.func\n};\nShowSelectedOnlyButton.defaultProps = {\n showAllText: Const.SHOW_ALL,\n showOnlySelectText: Const.SHOW_ONLY_SELECT,\n toggle: false,\n btnContextual: 'btn-primary',\n className: '',\n onClick: undefined\n};\n\nexport default ShowSelectedOnlyButton;\n\n\n\n// WEBPACK FOOTER //\n// src/toolbar/ShowSelectedOnlyButton.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\n\nclass SearchField extends Component {\n\n getValue() {\n return ReactDOM.findDOMNode(this).value;\n }\n\n setValue(value) {\n ReactDOM.findDOMNode(this).value = value;\n }\n\n render() {\n const {\n className,\n defaultValue,\n placeholder,\n onKeyUp,\n ...rest\n } = this.props;\n return (\n \n );\n }\n}\n\nSearchField.propTypes = {\n className: PropTypes.string,\n defaultValue: PropTypes.string,\n placeholder: PropTypes.string,\n onKeyUp: PropTypes.func\n};\nSearchField.defaultProps = {\n className: '',\n defaultValue: '',\n placeholder: 'Search',\n onKeyUp: undefined\n};\n\nexport default SearchField;\n\n\n\n// WEBPACK FOOTER //\n// src/toolbar/SearchField.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nconst clearBtnDefaultClass = 'react-bs-table-search-clear-btn';\n\nclass ClearSearchButton extends Component {\n\n render() {\n const {\n btnContextual,\n className,\n onClick,\n btnText,\n children,\n ...rest\n } = this.props;\n const content = children ||\n ({ btnText });\n return (\n \n );\n }\n}\n\nClearSearchButton.propTypes = {\n btnContextual: PropTypes.string,\n className: PropTypes.string,\n btnText: PropTypes.string,\n onClick: PropTypes.func\n};\nClearSearchButton.defaultProps = {\n btnContextual: 'btn-default btn-secondary',\n className: '',\n btnText: 'Clear',\n onClick: undefined\n};\n\nexport default ClearSearchButton;\n\n\n\n// WEBPACK FOOTER //\n// src/toolbar/ClearSearchButton.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Const from './Const';\nimport classSet from 'classnames';\n\nclass TableFilter extends Component {\n\n constructor(props) {\n super(props);\n this.filterObj = {};\n }\n\n handleKeyUp = e => {\n const { value, name } = e.currentTarget;\n if (value.trim() === '') {\n delete this.filterObj[name];\n } else {\n this.filterObj[name] = value;\n }\n this.props.onFilter(this.filterObj);\n }\n\n render() {\n const { striped, condensed, rowSelectType, columns } = this.props;\n const tableClasses = classSet('table', {\n 'table-striped': striped,\n 'table-condensed': condensed\n });\n let selectRowHeader = null;\n\n if (rowSelectType === Const.ROW_SELECT_SINGLE ||\n rowSelectType === Const.ROW_SELECT_MULTI) {\n const style = {\n width: 35,\n paddingLeft: 0,\n paddingRight: 0\n };\n selectRowHeader = (Filter | );\n }\n\n const filterField = columns.map(function(column) {\n const { hidden, width, name } = column;\n const thStyle = {\n display: hidden ? 'none' : null,\n width\n };\n return (\n \n \n \n \n | \n );\n }, this);\n\n return (\n \n \n \n { selectRowHeader }{ filterField }\n
\n \n
\n );\n }\n}\nTableFilter.propTypes = {\n columns: PropTypes.array,\n rowSelectType: PropTypes.string,\n onFilter: PropTypes.func\n};\nexport default TableFilter;\n\n\n\n// WEBPACK FOOTER //\n// src/TableFilter.js","/* eslint no-nested-ternary: 0 */\n/* eslint guard-for-in: 0 */\n/* eslint no-console: 0 */\n/* eslint eqeqeq: 0 */\n/* eslint one-var: 0 */\nimport Const from '../Const';\n\nexport class TableDataStore {\n\n constructor(data) {\n this.data = data;\n this.filteredData = null;\n this.isOnFilter = false;\n this.filterObj = null;\n this.searchText = null;\n this.sortList = [];\n this.pageObj = {};\n this.selected = [];\n this.showOnlySelected = false;\n }\n\n setProps(props) {\n this.keyField = props.keyField;\n this.enablePagination = props.isPagination;\n this.colInfos = props.colInfos;\n this.remote = props.remote;\n this.multiColumnSearch = props.multiColumnSearch;\n // default behaviour if strictSearch prop is not provided: !multiColumnSearch\n this.strictSearch = typeof props.strictSearch === 'undefined' ?\n !props.multiColumnSearch : props.strictSearch;\n this.multiColumnSort = props.multiColumnSort;\n }\n\n clean() {\n this.filteredData = null;\n this.isOnFilter = false;\n this.filterObj = null;\n this.searchText = null;\n this.sortList = [];\n this.pageObj = {};\n this.selected = [];\n }\n\n isSearching() {\n return this.searchText !== null;\n }\n\n isFiltering() {\n return this.filterObj !== null;\n }\n\n setData(data) {\n this.data = data;\n if (this.remote) {\n return;\n }\n\n this._refresh(true);\n }\n\n getColInfos() {\n return this.colInfos;\n }\n\n getSortInfo() {\n return this.sortList;\n }\n\n setSortInfo(order, sortField) {\n if (typeof order !== typeof sortField) {\n throw new Error('The type of sort field and order should be both with String or Array');\n }\n if (Array.isArray(order) && Array.isArray(sortField)) {\n if (order.length !== sortField.length) {\n throw new Error('The length of sort fields and orders should be equivalent');\n }\n order = order.slice().reverse();\n this.sortList = sortField.slice().reverse().map((field, i) => {\n return {\n order: order[i],\n sortField: field\n };\n });\n this.sortList = this.sortList.slice(0, this.multiColumnSort);\n } else {\n const sortObj = {\n order: order,\n sortField: sortField\n };\n\n if (this.multiColumnSort > 1) {\n let i = this.sortList.length - 1;\n let sortFieldInHistory = false;\n\n for (; i >= 0; i--) {\n if (this.sortList[i].sortField === sortField) {\n sortFieldInHistory = true;\n break;\n }\n }\n\n if (sortFieldInHistory) {\n if (i > 0) {\n this.sortList = this.sortList.slice(0, i);\n } else {\n this.sortList = this.sortList.slice(1);\n }\n }\n\n this.sortList.unshift(sortObj);\n this.sortList = this.sortList.slice(0, this.multiColumnSort);\n } else {\n this.sortList = [ sortObj ];\n }\n }\n }\n\n cleanSortInfo() {\n this.sortList = [];\n }\n\n setSelectedRowKey(selectedRowKeys) {\n this.selected = selectedRowKeys;\n }\n\n getRowByKey(keys) {\n // Bad Performance #1164\n // return keys.map(key => {\n // const result = this.data.filter(d => d[this.keyField] === key);\n // if (result.length !== 0) return result[0];\n // });\n const result = [];\n if (!keys || keys.length === 0) {\n return result;\n }\n for (let i = 0; i < this.data.length; i++) {\n const d = this.data[i];\n if (keys.indexOf(d[this.keyField]) > -1) {\n keys = keys.filter(k => k !== d[this.keyField]);\n result.push(d);\n }\n }\n return result;\n }\n\n getSelectedRowKeys() {\n return this.selected;\n }\n\n getCurrentDisplayData() {\n if (this.isOnFilter) return this.filteredData;\n else return this.data;\n }\n\n _refresh(skipSorting) {\n if (this.isOnFilter) {\n if (this.filterObj !== null) this.filter(this.filterObj);\n if (this.searchText !== null) this.search(this.searchText);\n }\n if (!skipSorting && this.sortList.length > 0) {\n this.sort();\n }\n }\n\n ignoreNonSelected() {\n this.showOnlySelected = !this.showOnlySelected;\n if (this.showOnlySelected) {\n this.isOnFilter = true;\n this.filteredData = this.data.filter( row => {\n const result = this.selected.find(x => row[this.keyField] === x);\n return typeof result !== 'undefined' ? true : false;\n });\n } else {\n this.isOnFilter = false;\n }\n }\n\n sort() {\n let currentDisplayData = this.getCurrentDisplayData();\n\n currentDisplayData = this._sort(currentDisplayData);\n\n return this;\n }\n\n page(page, sizePerPage) {\n this.pageObj.end = page * sizePerPage - 1;\n this.pageObj.start = this.pageObj.end - (sizePerPage - 1);\n return this;\n }\n\n edit(newVal, rowIndex, fieldName) {\n const currentDisplayData = this.getCurrentDisplayData();\n let rowKeyCache;\n if (!this.enablePagination) {\n currentDisplayData[rowIndex][fieldName] = newVal;\n rowKeyCache = currentDisplayData[rowIndex][this.keyField];\n } else {\n currentDisplayData[this.pageObj.start + rowIndex][fieldName] = newVal;\n rowKeyCache = currentDisplayData[this.pageObj.start + rowIndex][this.keyField];\n }\n if (this.isOnFilter) {\n this.data.forEach(function(row) {\n if (row[this.keyField] === rowKeyCache) {\n row[fieldName] = newVal;\n }\n }, this);\n if (this.filterObj !== null) this.filter(this.filterObj);\n if (this.searchText !== null) this.search(this.searchText);\n }\n return this;\n }\n\n addAtBegin(newObj) {\n if (!newObj[this.keyField] || newObj[this.keyField].toString() === '') {\n throw new Error(`${this.keyField} can't be empty value.`);\n }\n const currentDisplayData = this.getCurrentDisplayData();\n currentDisplayData.forEach(function(row) {\n if (row[this.keyField].toString() === newObj[this.keyField].toString()) {\n throw new Error(`${this.keyField} ${newObj[this.keyField]} already exists`);\n }\n }, this);\n currentDisplayData.unshift(newObj);\n if (this.isOnFilter) {\n this.data.unshift(newObj);\n }\n this._refresh(false);\n }\n\n add(newObj) {\n const e = this.isValidKey(newObj[this.keyField]);\n if (e) throw new Error(e);\n\n const currentDisplayData = this.getCurrentDisplayData();\n currentDisplayData.push(newObj);\n if (this.isOnFilter) {\n this.data.push(newObj);\n }\n this._refresh(false);\n }\n\n isValidKey = key => {\n if (key === null || key === undefined || key.toString() === '') {\n return `${this.keyField} can't be empty value.`;\n }\n const currentDisplayData = this.getCurrentDisplayData();\n const exist = currentDisplayData.find(row => row[this.keyField].toString() === key.toString());\n if (exist) return `${this.keyField} ${key} already exists`;\n }\n\n remove(rowKey) {\n const currentDisplayData = this.getCurrentDisplayData();\n const result = currentDisplayData.filter(row => {\n return rowKey.indexOf(row[this.keyField]) === -1;\n });\n\n if (this.isOnFilter) {\n this.data = this.data.filter(row => {\n return rowKey.indexOf(row[this.keyField]) === -1;\n });\n this.filteredData = result;\n } else {\n this.data = result;\n }\n }\n\n filter(filterObj) {\n if (Object.keys(filterObj).length === 0) {\n this.filteredData = null;\n this.isOnFilter = false;\n this.filterObj = null;\n if (this.searchText) this._search(this.data);\n } else {\n let source = this.data;\n this.filterObj = filterObj;\n if (this.searchText) {\n this._search(source);\n source = this.filteredData;\n }\n this._filter(source);\n }\n }\n\n filterNumber(targetVal, filterVal, comparator) {\n let valid = true;\n switch (comparator) {\n case '=': {\n if (targetVal != filterVal) {\n valid = false;\n }\n break;\n }\n case '>': {\n if (targetVal <= filterVal) {\n valid = false;\n }\n break;\n }\n case '>=': {\n if (targetVal < filterVal) {\n valid = false;\n }\n break;\n }\n case '<': {\n if (targetVal >= filterVal) {\n valid = false;\n }\n break;\n }\n case '<=': {\n if (targetVal > filterVal) {\n valid = false;\n }\n break;\n }\n case '!=': {\n if (targetVal == filterVal) {\n valid = false;\n }\n break;\n }\n default: {\n console.error('Number comparator provided is not supported');\n break;\n }\n }\n return valid;\n }\n\n filterDate(targetVal, filterVal, comparator) {\n if (!targetVal) return false;\n\n const filterDate = filterVal.getDate();\n const filterMonth = filterVal.getMonth();\n const filterYear = filterVal.getFullYear();\n\n if (typeof targetVal !== 'object') {\n targetVal = new Date(targetVal);\n }\n\n const targetDate = targetVal.getDate();\n const targetMonth = targetVal.getMonth();\n const targetYear = targetVal.getFullYear();\n\n let valid = true;\n switch (comparator) {\n case '=': {\n if (filterDate !== targetDate ||\n filterMonth !== targetMonth ||\n filterYear !== targetYear) {\n valid = false;\n }\n break;\n }\n case '>': {\n if (targetVal <= filterVal) {\n valid = false;\n }\n break;\n }\n case '>=': {\n if (targetYear < filterYear) {\n valid = false;\n } else if (targetYear === filterYear &&\n targetMonth < filterMonth) {\n valid = false;\n } else if (targetYear === filterYear &&\n targetMonth === filterMonth &&\n targetDate < filterDate) {\n valid = false;\n }\n break;\n }\n case '<': {\n if (targetVal >= filterVal) {\n valid = false;\n }\n break;\n }\n case '<=': {\n if (targetYear > filterYear) {\n valid = false;\n } else if (targetYear === filterYear &&\n targetMonth > filterMonth) {\n valid = false;\n } else if (targetYear === filterYear &&\n targetMonth === filterMonth &&\n targetDate > filterDate) {\n valid = false;\n }\n break;\n }\n case '!=': {\n if (filterDate === targetDate &&\n filterMonth === targetMonth &&\n filterYear === targetYear) {\n valid = false;\n }\n break;\n }\n default: {\n console.error('Date comparator provided is not supported');\n break;\n }\n }\n return valid;\n }\n\n filterRegex(targetVal, filterVal) {\n try {\n return new RegExp(filterVal, 'i').test(targetVal);\n } catch (e) {\n return true;\n }\n }\n\n filterCustom(targetVal, filterVal, callbackInfo, cond) {\n if (callbackInfo !== null && typeof callbackInfo === 'object') {\n return callbackInfo.callback(targetVal, callbackInfo.callbackParameters);\n }\n\n return this.filterText(targetVal, filterVal, cond);\n }\n\n filterText(targetVal, filterVal, cond = Const.FILTER_COND_LIKE) {\n targetVal = targetVal.toString();\n filterVal = filterVal.toString();\n if (cond === Const.FILTER_COND_EQ) {\n return targetVal === filterVal;\n } else {\n targetVal = targetVal.toLowerCase();\n filterVal = filterVal.toLowerCase();\n return !(targetVal.indexOf(filterVal) === -1);\n }\n }\n\n /**\n * Filter if targetVal is contained in filterVal.\n */\n filterArray(targetVal, filterVal) {\n // case insensitive\n return filterVal.indexOf(targetVal) > -1;\n }\n\n /* General search function\n * It will search for the text if the input includes that text;\n */\n search(searchText) {\n if (searchText.trim() === '') {\n this.filteredData = null;\n this.isOnFilter = false;\n this.searchText = null;\n if (this.filterObj) this._filter(this.data);\n } else {\n let source = this.data;\n this.searchText = searchText;\n if (this.filterObj) {\n this._filter(source);\n source = this.filteredData;\n }\n this._search(source);\n }\n }\n\n _filter(source) {\n const filterObj = this.filterObj;\n this.filteredData = source.filter((row, r) => {\n let valid = true;\n let filterVal;\n for (const key in filterObj) {\n let targetVal = row[key];\n if (targetVal === null || targetVal === undefined) {\n targetVal = '';\n }\n\n switch (filterObj[key].type) {\n case Const.FILTER_TYPE.NUMBER: {\n filterVal = filterObj[key].value.number;\n break;\n }\n case Const.FILTER_TYPE.CUSTOM: {\n filterVal = (typeof filterObj[key].value === 'object') ?\n undefined :\n (typeof filterObj[key].value === 'string') ?\n filterObj[key].value.toLowerCase() :\n filterObj[key].value;\n break;\n }\n case Const.FILTER_TYPE.DATE: {\n filterVal = filterObj[key].value.date;\n break;\n }\n case Const.FILTER_TYPE.REGEX: {\n filterVal = filterObj[key].value;\n break;\n }\n case Const.FILTER_TYPE.ARRAY: {\n filterVal = filterObj[key].value;\n if (!Array.isArray(filterVal)) {\n throw new Error('Value must be an Array');\n }\n break;\n }\n default: {\n filterVal = filterObj[key].value;\n if (filterVal === undefined) {\n // Support old filter\n filterVal = filterObj[key];\n }\n break;\n }\n }\n let format, filterFormatted, formatExtraData, filterValue;\n if (this.colInfos[key]) {\n format = this.colInfos[key].format;\n filterFormatted = this.colInfos[key].filterFormatted;\n formatExtraData = this.colInfos[key].formatExtraData;\n filterValue = this.colInfos[key].filterValue;\n if (filterFormatted && format) {\n targetVal = format(row[key], row, formatExtraData, r);\n } else if (filterValue) {\n targetVal = filterValue(row[key], row);\n }\n }\n\n switch (filterObj[key].type) {\n case Const.FILTER_TYPE.NUMBER: {\n valid = this.filterNumber(targetVal, filterVal, filterObj[key].value.comparator);\n break;\n }\n case Const.FILTER_TYPE.DATE: {\n valid = this.filterDate(targetVal, filterVal, filterObj[key].value.comparator);\n break;\n }\n case Const.FILTER_TYPE.REGEX: {\n valid = this.filterRegex(targetVal, filterVal);\n break;\n }\n case Const.FILTER_TYPE.CUSTOM: {\n const cond = filterObj[key].props ? filterObj[key].props.cond : Const.FILTER_COND_LIKE;\n valid = this.filterCustom(targetVal, filterVal, filterObj[key].value, cond);\n break;\n }\n case Const.FILTER_TYPE.ARRAY: {\n valid = this.filterArray(targetVal, filterVal);\n break;\n }\n default: {\n if (filterObj[key].type === Const.FILTER_TYPE.SELECT &&\n filterFormatted && filterFormatted && format) {\n filterVal = format(filterVal, row, formatExtraData, r);\n }\n const cond = filterObj[key].props ? filterObj[key].props.cond : Const.FILTER_COND_LIKE;\n valid = this.filterText(targetVal, filterVal, cond);\n break;\n }\n }\n if (!valid) {\n break;\n }\n }\n return valid;\n });\n this.isOnFilter = true;\n }\n\n /*\n * Four different sort modes, all case insensitive:\n * (1) strictSearch && !multiColumnSearch\n * search text must be contained as provided in a single column\n * (2) strictSearch && multiColumnSearch\n * conjunction (AND combination) of whitespace separated terms over multiple columns\n * (3) !strictSearch && !multiColumnSearch\n * conjunction (AND combination) of whitespace separated terms in a single column\n * (4) !strictSearch && multiColumnSearch\n * any of the whitespace separated terms must be contained in any column\n */\n _search(source) {\n let searchTextArray;\n if (this.multiColumnSearch || !this.strictSearch) {\n // ignore leading and trailing whitespaces\n searchTextArray = this.searchText.trim().toLowerCase().split(/\\s+/);\n } else {\n searchTextArray = [ this.searchText.toLowerCase() ];\n }\n const searchTermCount = searchTextArray.length;\n const multipleTerms = searchTermCount > 1;\n const nonStrictMultiCol = multipleTerms && !this.strictSearch && this.multiColumnSearch;\n const nonStrictSingleCol = multipleTerms && !this.strictSearch && !this.multiColumnSearch;\n this.filteredData = source.filter((row, r) => {\n const keys = Object.keys(row);\n // only clone array if necessary\n let searchTerms = multipleTerms ? searchTextArray.slice() : searchTextArray;\n // for loops are ugly, but performance matters here.\n // And you cant break from a forEach.\n // http://jsperf.com/for-vs-foreach/66\n for (let i = 0, keysLength = keys.length; i < keysLength; i++) {\n const key = keys[i];\n const colInfo = this.colInfos[key];\n if (colInfo && colInfo.searchable) {\n const {\n format,\n filterFormatted,\n filterValue,\n formatExtraData\n } = colInfo;\n let targetVal;\n if (filterFormatted && format) {\n targetVal = format(row[key], row, formatExtraData, r);\n } else if (filterValue) {\n targetVal = filterValue(row[key], row);\n } else {\n targetVal = row[key];\n }\n if (targetVal !== null && typeof targetVal !== 'undefined') {\n targetVal = targetVal.toString().toLowerCase();\n if (nonStrictSingleCol && searchTermCount > searchTerms.length) {\n // reset search terms for single column search\n searchTerms = searchTextArray.slice();\n }\n for (let j = searchTerms.length - 1; j > -1; j--) {\n if (targetVal.indexOf(searchTerms[j]) !== -1) {\n if (nonStrictMultiCol || searchTerms.length === 1) {\n // match found: the last or only one\n return true;\n }\n // match found: but there are more search terms to check for\n searchTerms.splice(j, 1);\n } else if (!this.multiColumnSearch) {\n // one of the search terms was not found in this column\n break;\n }\n }\n }\n }\n }\n return false;\n });\n this.isOnFilter = true;\n }\n\n _sort(arr) {\n if (this.sortList.length === 0 || typeof(this.sortList[0]) === 'undefined') {\n return arr;\n }\n\n arr.sort((a, b) => {\n let result = 0;\n\n for (let i = 0; i < this.sortList.length; i++) {\n const sortDetails = this.sortList[i];\n const isDesc = sortDetails.order.toLowerCase() === Const.SORT_DESC;\n\n const { sortFunc, sortFuncExtraData } = this.colInfos[sortDetails.sortField];\n\n if (sortFunc) {\n result = sortFunc(a, b, sortDetails.order, sortDetails.sortField, sortFuncExtraData);\n } else {\n const valueA = a[sortDetails.sortField] == null ? '' : a[sortDetails.sortField];\n const valueB = b[sortDetails.sortField] == null ? '' : b[sortDetails.sortField];\n\n if (isDesc) {\n if (typeof valueB === 'string') {\n result = valueB.localeCompare(valueA);\n } else {\n result = valueA > valueB ? -1 : ((valueA < valueB) ? 1 : 0);\n }\n } else {\n if (typeof valueA === 'string') {\n result = valueA.localeCompare(valueB);\n } else {\n result = valueA < valueB ? -1 : ((valueA > valueB) ? 1 : 0);\n }\n }\n }\n\n if (result !== 0) {\n return result;\n }\n }\n\n return result;\n });\n\n return arr;\n }\n\n getDataIgnoringPagination() {\n return this.getCurrentDisplayData();\n }\n\n get() {\n const _data = this.getCurrentDisplayData();\n\n if (_data.length === 0) return _data;\n\n const remote = typeof this.remote === 'function' ?\n (this.remote(Const.REMOTE))[Const.REMOTE_PAGE] : this.remote;\n\n if (remote || !this.enablePagination) {\n return _data;\n } else {\n const result = [];\n for (let i = this.pageObj.start; i <= this.pageObj.end; i++) {\n result.push(_data[i]);\n if (i + 1 === _data.length) break;\n }\n return result;\n }\n }\n\n getKeyField() {\n return this.keyField;\n }\n\n getDataNum() {\n return this.getCurrentDisplayData().length;\n }\n\n isChangedPage() {\n return this.pageObj.start && this.pageObj.end ? true : false;\n }\n\n isEmpty() {\n return (this.data.length === 0 ||\n this.data === null ||\n this.data === undefined);\n }\n\n getAllRowkey() {\n return this.data.map(row => {\n return row[this.keyField];\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// src/store/TableDataStore.js","/* eslint block-scoped-var: 0 */\n/* eslint vars-on-top: 0 */\n/* eslint no-var: 0 */\n/* eslint no-unused-vars: 0 */\nimport Util from './util';\nimport Const from './Const';\n\nif (Util.canUseDOM()) {\n const filesaver = require('./filesaver');\n var saveAs = filesaver.saveAs;\n}\n\nfunction toString(data, keys, separator, excludeCSVHeader) {\n let dataString = '';\n if (data.length === 0) return dataString;\n\n const headCells = [];\n let rowCount = 0;\n keys.forEach(key => {\n if (key.row > rowCount) {\n rowCount = key.row;\n }\n // rowCount += (key.rowSpan + key.colSpan - 1);\n for (var index = 0; index < key.colSpan; index++) {\n headCells.push(key);\n }\n });\n\n const firstRow = excludeCSVHeader ? 1 : 0;\n for (let i = firstRow; i <= rowCount; i++) {\n dataString += headCells.map(x => {\n if ((x.row + (x.rowSpan - 1)) === i) {\n return `\"${x.header}\"`;\n }\n if (x.row === i && x.rowSpan > 1) {\n return '';\n }\n }).filter(key => {\n return typeof key !== 'undefined';\n }).join(separator) + '\\n';\n }\n\n keys = keys.filter(key => {\n return key.field !== undefined;\n });\n\n data.map(function(row) {\n keys.map(function(col, i) {\n const { field, format, extraData, type } = col;\n let value = typeof format !== 'undefined' ? format(row[field], row, extraData) : row[field];\n value = type === Const.CSV_NUMBER_TYPE ? Number(value) : `\"${value}\"`;\n const cell = typeof value !== 'undefined' ? value : '';\n dataString += cell;\n if (i + 1 < keys.length) dataString += separator;\n });\n\n dataString += '\\n';\n });\n\n return dataString;\n}\n\nconst exportCSV = function(data, keys, filename, separator, noAutoBOM, excludeCSVHeader) {\n const dataString = toString(data, keys, separator, excludeCSVHeader);\n if (typeof window !== 'undefined') {\n noAutoBOM = noAutoBOM === undefined ? true : noAutoBOM;\n saveAs(new Blob([ '\\ufeff', dataString ],\n { type: 'text/plain;charset=utf-8' }),\n filename, noAutoBOM);\n }\n};\n\nexport default exportCSV;\n\n\n\n// WEBPACK FOOTER //\n// src/csv_export_util.js","/* FileSaver.js\n * A saveAs() FileSaver implementation.\n * 1.3.2\n * 2016-06-16 18:25:19\n *\n * By Eli Grey, http://eligrey.com\n * License: MIT\n * See https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md\n */\n\n/*global self */\n/*jslint bitwise: true, indent: 4, laxbreak: true, laxcomma: true, smarttabs: true, plusplus: true */\n\n/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */\n\nvar saveAs = saveAs || (function(view) {\n\t\"use strict\";\n\t// IE <10 is explicitly unsupported\n\tif (typeof view === \"undefined\" || typeof navigator !== \"undefined\" && /MSIE [1-9]\\./.test(navigator.userAgent)) {\n\t\treturn;\n\t}\n\tvar\n\t\t doc = view.document\n\t\t // only get URL when necessary in case Blob.js hasn't overridden it yet\n\t\t, get_URL = function() {\n\t\t\treturn view.URL || view.webkitURL || view;\n\t\t}\n\t\t, save_link = doc.createElementNS(\"http://www.w3.org/1999/xhtml\", \"a\")\n\t\t, can_use_save_link = \"download\" in save_link\n\t\t, click = function(node) {\n\t\t\tvar event = new MouseEvent(\"click\");\n\t\t\tnode.dispatchEvent(event);\n\t\t}\n\t\t, is_safari = /constructor/i.test(view.HTMLElement) || view.safari\n\t\t, is_chrome_ios =/CriOS\\/[\\d]+/.test(navigator.userAgent)\n\t\t, throw_outside = function(ex) {\n\t\t\t(view.setImmediate || view.setTimeout)(function() {\n\t\t\t\tthrow ex;\n\t\t\t}, 0);\n\t\t}\n\t\t, force_saveable_type = \"application/octet-stream\"\n\t\t// the Blob API is fundamentally broken as there is no \"downloadfinished\" event to subscribe to\n\t\t, arbitrary_revoke_timeout = 1000 * 40 // in ms\n\t\t, revoke = function(file) {\n\t\t\tvar revoker = function() {\n\t\t\t\tif (typeof file === \"string\") { // file is an object URL\n\t\t\t\t\tget_URL().revokeObjectURL(file);\n\t\t\t\t} else { // file is a File\n\t\t\t\t\tfile.remove();\n\t\t\t\t}\n\t\t\t};\n\t\t\tsetTimeout(revoker, arbitrary_revoke_timeout);\n\t\t}\n\t\t, dispatch = function(filesaver, event_types, event) {\n\t\t\tevent_types = [].concat(event_types);\n\t\t\tvar i = event_types.length;\n\t\t\twhile (i--) {\n\t\t\t\tvar listener = filesaver[\"on\" + event_types[i]];\n\t\t\t\tif (typeof listener === \"function\") {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlistener.call(filesaver, event || filesaver);\n\t\t\t\t\t} catch (ex) {\n\t\t\t\t\t\tthrow_outside(ex);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t, auto_bom = function(blob) {\n\t\t\t// prepend BOM for UTF-8 XML and text/* types (including HTML)\n\t\t\t// note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF\n\t\t\tif (/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(blob.type)) {\n\t\t\t\treturn new Blob([String.fromCharCode(0xFEFF), blob], {type: blob.type});\n\t\t\t}\n\t\t\treturn blob;\n\t\t}\n\t\t, FileSaver = function(blob, name, no_auto_bom) {\n\t\t\tif (!no_auto_bom) {\n\t\t\t\tblob = auto_bom(blob);\n\t\t\t}\n\t\t\t// First try a.download, then web filesystem, then object URLs\n\t\t\tvar\n\t\t\t\t filesaver = this\n\t\t\t\t, type = blob.type\n\t\t\t\t, force = type === force_saveable_type\n\t\t\t\t, object_url\n\t\t\t\t, dispatch_all = function() {\n\t\t\t\t\tdispatch(filesaver, \"writestart progress write writeend\".split(\" \"));\n\t\t\t\t}\n\t\t\t\t// on any filesys errors revert to saving with object URLs\n\t\t\t\t, fs_error = function() {\n\t\t\t\t\tif ((is_chrome_ios || (force && is_safari)) && view.FileReader) {\n\t\t\t\t\t\t// Safari doesn't allow downloading of blob urls\n\t\t\t\t\t\tvar reader = new FileReader();\n\t\t\t\t\t\treader.onloadend = function() {\n\t\t\t\t\t\t\tvar url = is_chrome_ios ? reader.result : reader.result.replace(/^data:[^;]*;/, 'data:attachment/file;');\n\t\t\t\t\t\t\tvar popup = view.open(url, '_blank');\n\t\t\t\t\t\t\tif(!popup) view.location.href = url;\n\t\t\t\t\t\t\turl=undefined; // release reference before dispatching\n\t\t\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t\t\t\tdispatch_all();\n\t\t\t\t\t\t};\n\t\t\t\t\t\treader.readAsDataURL(blob);\n\t\t\t\t\t\tfilesaver.readyState = filesaver.INIT;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t// don't create more object URLs than needed\n\t\t\t\t\tif (!object_url) {\n\t\t\t\t\t\tobject_url = get_URL().createObjectURL(blob);\n\t\t\t\t\t}\n\t\t\t\t\tif (force) {\n\t\t\t\t\t\tview.location.href = object_url;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar opened = view.open(object_url, \"_blank\");\n\t\t\t\t\t\tif (!opened) {\n\t\t\t\t\t\t\t// Apple does not allow window.open, see https://developer.apple.com/library/safari/documentation/Tools/Conceptual/SafariExtensionGuide/WorkingwithWindowsandTabs/WorkingwithWindowsandTabs.html\n\t\t\t\t\t\t\tview.location.href = object_url;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t\tdispatch_all();\n\t\t\t\t\trevoke(object_url);\n\t\t\t\t}\n\t\t\t;\n\t\t\tfilesaver.readyState = filesaver.INIT;\n\n\t\t\tif (can_use_save_link) {\n\t\t\t\tobject_url = get_URL().createObjectURL(blob);\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\tsave_link.href = object_url;\n\t\t\t\t\tsave_link.download = name;\n\t\t\t\t\tclick(save_link);\n\t\t\t\t\tdispatch_all();\n\t\t\t\t\trevoke(object_url);\n\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfs_error();\n\t\t}\n\t\t, FS_proto = FileSaver.prototype\n\t\t, saveAs = function(blob, name, no_auto_bom) {\n\t\t\treturn new FileSaver(blob, name || blob.name || \"download\", no_auto_bom);\n\t\t}\n\t;\n\t// IE 10+ (native saveAs)\n\tif (typeof navigator !== \"undefined\" && navigator.msSaveOrOpenBlob) {\n\t\treturn function(blob, name, no_auto_bom) {\n\t\t\tname = name || blob.name || \"download\";\n\n\t\t\tif (!no_auto_bom) {\n\t\t\t\tblob = auto_bom(blob);\n\t\t\t}\n\t\t\treturn navigator.msSaveOrOpenBlob(blob, name);\n\t\t};\n\t}\n\n\tFS_proto.abort = function(){};\n\tFS_proto.readyState = FS_proto.INIT = 0;\n\tFS_proto.WRITING = 1;\n\tFS_proto.DONE = 2;\n\n\tFS_proto.error =\n\tFS_proto.onwritestart =\n\tFS_proto.onprogress =\n\tFS_proto.onwrite =\n\tFS_proto.onabort =\n\tFS_proto.onerror =\n\tFS_proto.onwriteend =\n\t\tnull;\n\n\treturn saveAs;\n}(\n\t typeof self !== \"undefined\" && self\n\t|| typeof window !== \"undefined\" && window\n\t|| this.content\n));\n// `self` is undefined in Firefox for Android content script context\n// while `this` is nsIContentFrameMessageManager\n// with an attribute `content` that corresponds to the window\n\nif (typeof module !== \"undefined\" && module.exports) {\n module.exports.saveAs = saveAs;\n} else if ((typeof define !== \"undefined\" && define !== null) && (define.amd !== null)) {\n define(\"FileSaver.js\", function() {\n return saveAs;\n });\n}\n\n\n// WEBPACK FOOTER //\n// src/filesaver.js","module.exports = function() { throw new Error(\"define cannot be used indirect\"); };\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/amd-define.js\n// module id = 70\n// module chunks = 0","module.exports = __webpack_amd_options__;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/amd-options.js\n// module id = 71\n// module chunks = 0","import Const from './Const';\nimport { EventEmitter } from 'events';\n\nexport class Filter extends EventEmitter {\n constructor(data) {\n super(data);\n this.currentFilter = {};\n }\n\n handleFilter(dataField, value, type, filterObj) {\n const filterType = type || Const.FILTER_TYPE.CUSTOM;\n\n const props = {\n cond: filterObj.condition // Only for select and text filter\n };\n\n if (value !== null && typeof value === 'object') {\n // value of the filter is an object\n let hasValue = true;\n for (const prop in value) {\n if (!value[prop] || value[prop] === '') {\n hasValue = false;\n break;\n }\n }\n // if one of the object properties is undefined or empty, we remove the filter\n if (hasValue) {\n this.currentFilter[dataField] = { value: value, type: filterType, props };\n } else {\n delete this.currentFilter[dataField];\n }\n } else if (!value || value.trim() === '') {\n delete this.currentFilter[dataField];\n } else {\n this.currentFilter[dataField] = { value: value.trim(), type: filterType, props };\n }\n this.emit('onFilterChange', this.currentFilter);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// src/Filter.js","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/events/events.js\n// module id = 73\n// module chunks = 0","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nclass ButtonGroup extends Component {\n render() {\n const {\n className,\n sizeClass,\n children,\n ...rest\n } = this.props;\n return (\n \n { children }\n
\n );\n }\n}\n\nButtonGroup.propTypes = {\n sizeClass: PropTypes.string,\n className: PropTypes.string\n};\nButtonGroup.defaultProps = {\n sizeClass: 'btn-group-sm',\n className: ''\n};\n\nexport default ButtonGroup;\n\n\n\n// WEBPACK FOOTER //\n// src/toolbar/ButtonGroup.js"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACtCA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxCA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;AAlBA;AACA;AACA;AACA;AAiBA;;;AAEA;AAAA;AACA;AADA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AARA;AAzBA;AAmCA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;AAAA;AACA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAZA;AACA;AACA;AAaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA;AASA;;;AAEA;AACA;AADA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AADA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAzBA;AACA;AA2BA;AACA;AAIA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AADA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AAQA;AACA;;;AAEA;AACA;AADA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAJA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AADA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;AAOA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AAQA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AAFA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AApBA;AAAA;AACA;AAqBA;AACA;AACA;AACA;AACA;AACA;AACA;AA5BA;AAAA;AACA;AA6BA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAtBA;AAwBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAvEA;AA0EA;AACA;AAEA;AACA;AAlFA;AAqFA;;;AAEA;AACA;AADA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AADA;AAGA;AACA;;;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AADA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AADA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;;;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;;;AAEA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AADA;AAGA;AACA;;;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AAFA;AAAA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;;;AAEA;AACA;AADA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AACA;;;AAEA;AACA;AACA;AACA;AAHA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;;;AAEA;AAAA;AACA;AADA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AAAA;AADA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AAAA;AADA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AADA;AACA;AAEA;AAHA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAJA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;;;AAEA;AACA;AACA;AAFA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AARA;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AALA;AAAA;AAAA;AAAA;AACA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AACA;AAOA;AACA;AAEA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA3BA;AA8BA;AACA;AACA;;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAQA;AACA;AACA;AAAA;AAAA;AACA;AADA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAbA;AAeA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AAQA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAzCA;AA4CA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AADA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAbA;AAgBA;AACA;AACA;;;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AAAA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAGA;AAEA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AAHA;AACA;AACA;AAIA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAlBA;AAoBA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA1FA;AA4FA;AACA;AADA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AACA;AACA;AACA;AACA;AAJA;AAMA;AAhLA;AAkLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAbA;AAeA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA/EA;AAiFA;AACA;AADA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AA7JA;AACA;AA+JA;;;;;;;;;AAn0DA;AACA;;;;;;;;;;ACrBA;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACvLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AC/hBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC/CA;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AC3SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACxNA;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACtEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACnHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACnKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAnEA;AACA;AAqEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AAhFA;AACA;;;;;;;;;;;;;;;;;;;;ACCA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;;;AAZA;AACA;AACA;AACA;AAUA;;;AAEA;AAAA;AACA;AADA;AACA;AADA;AAAA;AAAA;AACA;AACA;AAFA;AAGA;AACA;;;;;;;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AALA;AAAA;AACA;AAMA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AADA;AACA;AAEA;AAEA;AACA;;;AAEA;AAAA;AACA;AACA;AACA;;;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAEA;AAEA;AACA;AAAA;AACA;AAEA;AAEA;AACA;AAAA;AACA;AAEA;AAEA;AACA;AAAA;AACA;AAEA;AAEA;AACA;AAAA;AACA;AAEA;AAEA;AACA;AAAA;AACA;AACA;AAEA;AACA;AApCA;AAsCA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AADA;AAGA;AAAA;AAAA;AACA;AADA;AAJA;AASA;AACA;;;AAEA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAqBA;AACA;AACA;AAFA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AAQA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AADA;AATA;AAcA;;;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAxBA;AA0BA;;;AAEA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AApBA;AAsBA;;;;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAFA;AAIA;AACA;AACA;AACA;AACA;AACA;AAZA;AAcA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA7DA;AACA;AA+DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAnCA;AACA;AAqCA;;;;;;;;;AAvVA;AACA;AA2OA;AACA;;;;;;;;;;;;;;;;ACzPA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AAGA;AACA;AACA;AADA;AAGA;AACA;AAAA;AACA;AADA;AAIA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;AADA;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AAGA;AARA;AAWA;AA/HA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;ACJA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;;;AALA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA;AAAA;AACA;AADA;AACA;AACA;AACA;AACA;AAJA;AAKA;AACA;;;AACA;AACA;AADA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AADA;AAIA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AALA;AAOA;AACA;AACA;AACA;AACA;AACA;AAbA;AAgBA;;;;;;AAGA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AA7BA;AACA;AA+BA;AACA;AACA;AACA;AAFA;AADA;AACA;AAOA;;;;;;;;;AAhJA;AACA;AACA;AACA;AAGA;AACA;;;;;;;;;;;;;;;;;;ACbA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;;;;;AACA;;;AACA;AAAA;AACA;AADA;AACA;AACA;AACA;AACA;AACA;AADA;AAJA;AAOA;AACA;;;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;;;AAEA;AACA;AAAA;AAAA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AACA;AAQA;AACA;AADA;AACA;AAGA;;;;;;;;;AA5EA;AACA;;;;;;;;;;;;;;;;;;ACLA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;;;;;AACA;;;AACA;AAAA;AACA;AADA;AACA;AACA;AACA;AAHA;AAIA;AACA;;;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AACA;AAQA;AACA;AADA;AACA;AAGA;;;;;;;;;AAlEA;AACA;;;;;;;;;;;;;;;;;;ACLA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;;;;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA;AAAA;AACA;AADA;AACA;AACA;AACA;AACA;AADA;AAHA;AAOA;AACA;;;AACA;AACA;AACA;AACA;AACA;AACA;AADA;AAGA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;;;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;;;AAEA;AACA;AADA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AAEA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AALA;AAQA;;;;;;AAGA;AACA;AACA;AACA;AACA;AACA;AALA;AACA;AAOA;;;;;;;;;AA/GA;AACA;AASA;AACA;;;;;;;;;;;;;;;;;;AChBA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;;;;;AACA;AACA;AACA;;;AACA;AAAA;AACA;AADA;AACA;AACA;AACA;AACA;AACA;AADA;AAMA;AACA;AACA;AAZA;AAaA;AACA;;;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AADA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AADA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AADA;AAIA;AACA;AACA;;;AAEA;AACA;AADA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAAA;AACA;AADA;AAIA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;AAGA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAGA;AAPA;AAUA;AACA;AAAA;AACA;AACA;AACA;AAGA;AANA;AASA;AACA;AACA;AACA;AACA;AACA;AA1BA;AAgCA;;;;;;AAGA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAlCA;AACA;AAoCA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAJA;AACA;AASA;;;;;;;;;AAxMA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACRA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;;;;;;;AACA;;;;;;;;;;;AACA;AAAA;AAAA;;;AACA;AAAA;AAAA;;;AACA;AACA;AACA;;;AACA;AACA;AAEA;AACA;AACA;AAEA;;;;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAIA;AACA;AADA;AAGA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAWA;AACA;AACA;AACA;AACA;AAJA;AAAA;AAAA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AADA;AAIA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AADA;AAFA;AADA;AASA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAHA;AAMA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAHA;AAMA;AACA;AACA;AACA;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AApBA;AACA;AAsBA;;;;;;;;;AAnKA;AACA;AAeA;AACA;AAWA;AACA;;;;;;;;;;;;;;;;;;ACtCA;AACA;;;AAAA;AACA;;;;;;;;;;;AACA;;;;;;;;;;;AAEA;AACA;AACA;AAAA;AACA;AACA;AAFA;AAKA;;;;;;AAEA;AACA;AACA;AAFA;AAIA;;;;;;;;;AAfA;AACA;;;;;;;;;;;;;;;;;;ACJA;AACA;;;AAAA;AACA;;;;;;;;;;;AACA;;;;;;;;;;;AAEA;AACA;AACA;AAAA;AACA;AACA;AACA;AAHA;AAMA;;;;;;AAEA;AACA;AACA;AAFA;AAIA;;;;;;;;;AAhBA;AACA;;;;;;;;;;;;;;;;;;ACJA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;;;;;AACA;;;;;;;;;;;AAEA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AAAA;AAEA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAFA;AAKA;AAPA;AAWA;AACA;AApCA;AADA;AAFA;AADA;AA+CA;AAnDA;AAuDA;;;AAEA;AACA;AACA;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AARA;AACA;AAUA;;;;;;;;;AAlFA;AACA;;;;;;;;;;;;;;;;;;;;;;ACLA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;;;;;AACA;;;AACA;AAAA;AACA;AADA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AACA;AACA;AADA;AAFA;AAKA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAGA;AAGA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AApBA;AAuBA;AACA;AACA;AACA;AACA;AACA;AAEA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AAGA;AArBA;AACA;AAuBA;AACA;AAGA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AARA;AAWA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAGA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAHA;AADA;AAQA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AADA;AAFA;AAHA;AAWA;;;AAEA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAFA;AAIA;AACA;AACA;AACA;AACA;AAGA;AACA;AAGA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AADA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AAEA;AAIA;AACA;;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAYA;AACA;AACA;AACA;AACA;AAGA;;AAEA;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAEA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AATA;AAAA;AAAA;AACA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AADA;AACA;AAMA;AAEA;AAEA;AACA;AACA;AAAA;AAAA;AACA;;;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;;;AAEA;AACA;AAAA;AAAA;AACA;;;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AADA;AACA;AADA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AARA;AAYA;;;AAEA;AAAA;AACA;AADA;AACA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAHA;AAMA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAhCA;AAkCA;;;;;;;;;AA7hBA;AACA;;;;;;;;;;;;;;;;;;;;ACVA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;;;AALA;AACA;AACA;AAIA;;;AAEA;AAAA;AACA;AADA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AACA;AAFA;AAGA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;AAAA;AACA;AAAA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAMA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AAGA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AADA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AACA;AAIA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAJA;AAMA;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAZA;AAcA;AACA;AACA;AAFA;AAIA;;;;;;;;;AAhIA;AACA;;;;;;;;;;;;;;;;;;;;;;ACPA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;;;;;AACA;;;AAEA;AAAA;AACA;AADA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AADA;AAAA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;;;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAiBA;AACA;AACA;AAFA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAFA;AAIA;AAJA;AAOA;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAhBA;AACA;AAkBA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AAQA;;;;;;;;;AA3LA;AACA;;;;;;;;;;;;;;;;;;;;;;ACPA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;AAAA;AACA;;;AAAA;AACA;;;;;;;;;;;AACA;;;AACA;AAAA;AACA;AADA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AACA;AAFA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AACA;AAFA;AALA;AASA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;;;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;;;;;AASA;AACA;AARA;AACA;AACA;AACA;AACA;AACA;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AAFA;AAAA;AAAA;AACA;AAGA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA;AACA;AADA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;;;AAEA;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAEA;;;AAAA;AACA;AACA;AACA;AACA;AACA;;;;AAEA;;;AAAA;AACA;AACA;AACA;AACA;AACA;;;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAUA;AAEA;AACA;AACA;AAJA;AAMA;AAjBA;AAAA;AACA;AACA;AAmBA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AADA;AAGA;AAHA;AAMA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AALA;AAQA;;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AACA;AApBA;AACA;AAuBA;;;;;;;;;AAzRA;AACA;;;;;;;;;;;;;;;;;;;;ACTA;AACA;;;AAAA;AACA;;;;;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AAGA;AACA;AAEA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AAIA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AAAA;AACA;AADA;AAIA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAFA;AAAA;AAMA;AACA;AACA;AAAA;AACA;AACA;AAFA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AAGA;AAAA;AACA;AAGA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;;;;;;;;;AAzHA;AACA;;;;;;;;;;;;;;;;;ACJA;AACA;;;;;AACA;AACA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AACA;AAJA;AAMA;AACA;AACA;;;;;;;;AAnBA;;;;;;;;;;;;;;;;;;;ACAA;AACA;;;AAAA;AACA;;;;;;;;;AAJA;AACA;AACA;AACA;AAEA;;;;;;;;;;;AAEA;AAAA;AACA;AACA;AACA;AACA;AADA;AAGA;AAJA;AAMA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AADA;AADA;AAMA;;;;;;AAGA;;;;;;;;;AApBA;AACA;;;;;;;;;;;;;;;;;;;;ACNA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;;;;;AACA;;;AAEA;AAAA;AACA;AADA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AACA;AACA;AADA;AAFA;AAKA;AACA;;;;;;;;;;;;;;;;;;;;;;;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AADA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AAAA;AACA;AACA;AADA;AAGA;AACA;;;AAEA;AACA;AACA;AACA;AADA;AAGA;AACA;;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AADA;AACA;AADA;AACA;AADA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AATA;AACA;AAeA;AACA;AACA;AAAA;AAEA;AAEA;AAAA;AACA;AAAA;AADA;AAIA;AAAA;AACA;AACA;AAFA;AARA;AAgBA;;;AAEA;AAAA;AACA;AAAA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;AACA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AANA;AADA;AAUA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AANA;AASA;AACA;AACA;;;AAEA;AAAA;AACA;AADA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AAGA;AAEA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AALA;AAQA;AACA;AAIA;AACA;AAAA;AACA;AADA;AAIA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AArBA;AACA;AAuBA;AACA;AACA;AAFA;AACA;AAIA;;;;;;;;;AAvUA;AACA;;;;;;;;;;;;;;;;;;ACTA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;;;;;AACA;;;AAEA;AAAA;AACA;AADA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAEA;AACA;;;;;;;;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AAJA;AAMA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AADA;AAIA;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AACA;AAQA;;;;;;;;;AAlCA;AACA;;;;;;;;;;;;;;;;;;ACLA;AACA;;;AAAA;AACA;;;;;;;;;;;AACA;AACA;AACA;;;;;;;;;;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAWA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAFA;AANA;AAWA;AAAA;AAAA;AACA;AADA;AAbA;AAkBA;;;;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AATA;AAWA;AACA;AACA;AACA;AACA;AACA;AALA;AACA;AAQA;;;;;;;;;AA7DA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;ACJA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AACA;AACA;;;AACA;AACA;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;;;AAhBA;AACA;AAIA;AACA;AACA;AACA;AACA;AAQA;;;AAIA;AAAA;AACA;AADA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAJA;AAJA;AAUA;AACA;;;;;;;;;;;;;;;;;;AAkJA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAvKA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AAGA;;;AAEA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AACA;AACA;;;AAEA;AACA;AAAA;AAAA;AACA;;;AAEA;AACA;AAAA;AAAA;AACA;;;AAEA;AAAA;AACA;AAAA;AACA;AACA;AADA;AAGA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;;;AA0BA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AAAA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAJA;AAMA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAJA;AAOA;AACA;AA3EA;AAAA;AAAA;AAAA;AAAA;AACA;AA4EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AARA;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AAXA;AAoBA;AACA;AACA;AAAA;AACA;AADA;AAIA;AAAA;AACA;AADA;AAIA;AACA;AACA;AACA;AAAA;AACA;AACA;AAFA;AAKA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AADA;AAGA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AALA;AAOA;AACA;AACA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AADA;AAFA;AAOA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AADA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAUA;AACA;AACA;AAOA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAJA;AAOA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AAxbA;AACA;AACA;AAybA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAnCA;AACA;AAqCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAZA;AACA;AAcA;;;;;;;;;AAhfA;AACA;;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACzOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACjYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACrCA;AACA;;;AAAA;AACA;;;AACA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;;;AARA;AACA;AAQA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAEA;AACA;AACA;AAGA;AAIA;AAEA;AACA;AACA;AAjBA;AAqBA;;;;;;AAlFA;;;AAoFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AATA;AACA;AAWA;;;;;;;;AAlGA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACZA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;;;;;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAFA;AAKA;AACA;;;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAKA;AACA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAHA;AACA;AAMA;AACA;AACA;AACA;AAAA;AACA;AADA;AAIA;;;;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AACA;AAQA;;;;;;;;;AAjEA;AACA;;;;;;;;;;;;;;;;;;ACLA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;;;;;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAUA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAJA;AAKA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAJA;AACA;AAMA;AACA;AAAA;AACA;AADA;AAIA;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAXA;AAaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AATA;AACA;AAWA;;;;;;;;;AAvEA;AACA;;;;;;;;;;;;;;;;;;ACJA;AACA;;;AAAA;AACA;;;AACA;AACA;;;;;;;;;AALA;AACA;AACA;AAIA;;;;;;;;;;;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AASA;AACA;AACA;AAFA;AAIA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAHA;AAMA;AA5CA;AAgDA;;;;;;AAEA;AACA;AACA;AACA;AAHA;AACA;AAKA;AACA;AACA;AAFA;AACA;AAIA;;;;;;;;;AA9FA;AACA;;;;;;;;;;;;;;;;;;;;ACPA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;;;;;;;AACA;AACA;AACA;;;;;;;;;;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AASA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAFA;AAIA;AAJA;AAOA;;;;;;AAGA;AACA;AACA;AACA;AACA;AACA;AALA;AAOA;AACA;AACA;AACA;AACA;AACA;AALA;AACA;AAOA;;;;;;;;;AAzCA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACPA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;;;;;;;AACA;AACA;AACA;;;;;;;;;;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AASA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAFA;AAIA;AAJA;AAOA;;;;;;AAGA;AACA;AACA;AACA;AACA;AACA;AALA;AAOA;AACA;AACA;AACA;AACA;AACA;AALA;AACA;AAOA;;;;;;;;;AAzCA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACPA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;;;;;;;AACA;AACA;AACA;;;;;;;;;;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AASA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAFA;AAIA;AAJA;AAOA;;;;;;AAGA;AACA;AACA;AACA;AACA;AACA;AALA;AAOA;AACA;AACA;AACA;AACA;AACA;AALA;AACA;AAOA;;;;;;;;;AAzCA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACPA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;;;;;;;AACA;AACA;AACA;;;;;;;;;;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAUA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAJA;AAMA;AANA;AASA;;;;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AACA;AAQA;;;;;;;;;AA9CA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACPA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;;;;;;;AACA;;;;;;;;;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAOA;AAEA;AACA;AACA;AACA;AACA;AACA;AANA;AASA;;;;;;AAGA;AACA;AACA;AACA;AACA;AAJA;AAMA;AACA;AACA;AACA;AACA;AAJA;AACA;AAMA;;;;;;;;;AA5CA;AACA;;;;;;;;;;;;;;;;;;;;ACLA;AACA;;;AAAA;AACA;;;;;;;;;;;;;AACA;AACA;AACA;;;;;;;;;;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAQA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;AAHA;AAKA;AALA;AAQA;;;;;;AAGA;AACA;AACA;AACA;AACA;AAJA;AAMA;AACA;AACA;AACA;AACA;AAJA;AACA;AAMA;;;;;;;;;AAxCA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACNA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;;;;;AACA;;;AAEA;AAAA;AACA;AADA;AACA;AADA;AAAA;AAAA;AACA;AACA;AAFA;AAGA;AACA;;;;;;;;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AAEA;AACA;AACA;AACA;AAHA;AAKA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAFA;AADA;AAOA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AADA;AADA;AADA;AAQA;;;;;;AAEA;AACA;AACA;AACA;AAHA;AAKA;;;;;;;;;AAnEA;AACA;;;;;;;;;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AADA;AACA;;;;;;;AACA;AAEA;AAAA;AACA;AADA;AACA;AADA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;AACA;AAFA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAVA;AAWA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAfA;AACA;AASA;AAAA;AAMA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AAEA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;;;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAxCA;AA0CA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAGA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAGA;AACA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AA1DA;AA4DA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AAKA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAnCA;AAqCA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AA9BA;AAgCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;AAWA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AAGA;;;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;;;;;;;;;;;;;;AAxtBA;;;;;;;;;;;;;;;ACHA;AACA;;;AAAA;AACA;;;;;AANA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAjBA;AAkBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA3BA;AACA;AAgBA;AAAA;AAWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;;;;;;;;;AA/DA;AACA;AAEA;AACA;AAiDA;AACA;;;;;;;;;;;;AC/DA;;;;;;;;;;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAEA;AAFA;AAAA;AAIA;AACA;AALA;AAAA;AAAA;AASA;AACA;AACA;AAXA;AAAA;AAAA;AAeA;AACA;AACA;AACA;AAlBA;AAoBA;AApBA;AAAA;AAAA;AAAA;AAuBA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AA/BA;AAiCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA7CA;AA+CA;AACA;AACA;AACA;AACA;AACA;AACA;AArDA;AAuDA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAMA;AACA;AACA;AARA;AAAA;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAtHA;AAAA;AAyHA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAQA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AA5KA;;;;;;;;;ACfA;;;;;;;ACAA;AACA;AACA;;;;;;;;;;;;;;;;;ACFA;AACA;;;AAAA;AACA;;;;;;;;;AACA;;;AACA;AAAA;AACA;AADA;AACA;AACA;AAFA;AAGA;AACA;;;AACA;AACA;AACA;AACA;AACA;AADA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AAlCA;;;;;;;;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC7SA;AACA;;;AAAA;AACA;;;;;;;;;;;;;AACA;;;;;;;;;;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAMA;AACA;AAAA;AACA;AADA;AAIA;;;;;;AAGA;AACA;AACA;AAFA;AAIA;AACA;AACA;AAFA;AACA;AAIA;;;;;;;;;AAzBA;AACA;;;;;;;;;","sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"react-bootstrap-table.js","sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 19f176b05ebf93d1a39b","webpack:///src/index.js","webpack:///src/BootstrapTable.js","webpack:///external {\"root\":\"React\",\"commonjs2\":\"react\",\"commonjs\":\"react\",\"amd\":\"react\"}","webpack:///./~/prop-types/index.js","webpack:///./~/process/browser.js","webpack:///./~/prop-types/factoryWithTypeCheckers.js","webpack:///./~/fbjs/lib/emptyFunction.js","webpack:///./~/fbjs/lib/invariant.js","webpack:///./~/fbjs/lib/warning.js","webpack:///./~/object-assign/index.js","webpack:///./~/prop-types/lib/ReactPropTypesSecret.js","webpack:///./~/prop-types/checkPropTypes.js","webpack:///./~/prop-types/factoryWithThrowingShims.js","webpack:///./~/classnames/index.js","webpack:///./~/react-s-alert/index.js","webpack:///./~/react-s-alert/dist/SAlert.js","webpack:///./~/react-s-alert/dist/SAlertContent.js","webpack:///external {\"root\":\"ReactDOM\",\"commonjs2\":\"react-dom\",\"commonjs\":\"react-dom\",\"amd\":\"react-dom\"}","webpack:///./~/react-s-alert/dist/s-alert-parts/s-alert-tools.js","webpack:///./~/react-s-alert/dist/s-alert-parts/s-alert-store.js","webpack:///./~/react-s-alert/dist/SAlertContentTmpl.js","webpack:///./~/react-s-alert/dist/s-alert-parts/s-alert-data-prep.js","webpack:///src/Const.js","webpack:///src/TableHeaderColumn.js","webpack:///src/util.js","webpack:///src/filters/Date.js","webpack:///src/filters/Text.js","webpack:///src/filters/Regex.js","webpack:///src/filters/Select.js","webpack:///src/filters/Number.js","webpack:///src/TableHeader.js","webpack:///src/SelectRowHeaderColumn.js","webpack:///src/ExpandRowHeaderColumn.js","webpack:///src/TableFooter.js","webpack:///src/TableBody.js","webpack:///src/TableRow.js","webpack:///src/TableColumn.js","webpack:///src/TableEditColumn.js","webpack:///src/Editor.js","webpack:///src/Notification.js","webpack:///src/ExpandComponent.js","webpack:///src/pagination/PaginationList.js","webpack:///src/pagination/PageButton.js","webpack:///src/pagination/SizePerPageDropDown.js","webpack:///src/toolbar/ToolBar.js","webpack:///./~/react-modal/lib/index.js","webpack:///./~/react-modal/lib/components/Modal.js","webpack:///./~/react-modal/lib/components/ModalPortal.js","webpack:///./~/react-modal/lib/helpers/focusManager.js","webpack:///./~/react-modal/lib/helpers/tabbable.js","webpack:///./~/react-modal/lib/helpers/scopeTab.js","webpack:///./~/react-modal/lib/helpers/ariaAppHider.js","webpack:///./~/react-modal/lib/helpers/refCount.js","webpack:///./~/react-modal/lib/helpers/bodyClassList.js","webpack:///./~/react-modal/lib/helpers/safeHTMLElement.js","webpack:///./~/exenv/index.js","webpack:///src/toolbar/InsertModal.js","webpack:///src/toolbar/InsertModalHeader.js","webpack:///src/toolbar/InsertModalFooter.js","webpack:///src/toolbar/InsertModalBody.js","webpack:///src/toolbar/InsertButton.js","webpack:///src/toolbar/DeleteButton.js","webpack:///src/toolbar/ExportCSVButton.js","webpack:///src/toolbar/ShowSelectedOnlyButton.js","webpack:///src/toolbar/SearchField.js","webpack:///src/toolbar/ClearSearchButton.js","webpack:///src/TableFilter.js","webpack:///src/store/TableDataStore.js","webpack:///src/csv_export_util.js","webpack:///src/filesaver.js","webpack:///(webpack)/buildin/amd-define.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///src/Filter.js","webpack:///./~/events/events.js","webpack:///src/toolbar/ButtonGroup.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"), require(\"react-dom\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\", \"react-dom\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ReactBootstrapTable\"] = factory(require(\"react\"), require(\"react-dom\"));\n\telse\n\t\troot[\"ReactBootstrapTable\"] = factory(root[\"React\"], root[\"ReactDOM\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__, __WEBPACK_EXTERNAL_MODULE_17__) {\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\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\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.loaded = 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// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 19f176b05ebf93d1a39b","import BootstrapTable from './BootstrapTable';\nimport TableHeaderColumn from './TableHeaderColumn';\nimport InsertModalHeader from './toolbar/InsertModalHeader';\nimport InsertModalBody from './toolbar/InsertModalBody';\nimport InsertModalFooter from './toolbar/InsertModalFooter';\nimport InsertButton from './toolbar/InsertButton';\nimport DeleteButton from './toolbar/DeleteButton';\nimport ExportCSVButton from './toolbar/ExportCSVButton';\nimport ShowSelectedOnlyButton from './toolbar/ShowSelectedOnlyButton';\nimport ClearSearchButton from './toolbar/ClearSearchButton';\nimport SearchField from './toolbar/SearchField';\nimport ButtonGroup from './toolbar/ButtonGroup';\nimport SizePerPageDropDown from './pagination/SizePerPageDropDown';\n\nif (typeof window !== 'undefined') {\n window.BootstrapTable = BootstrapTable;\n window.TableHeaderColumn = TableHeaderColumn;\n window.InsertModalHeader = InsertModalHeader;\n window.InsertModalBody = InsertModalBody;\n window.InsertModalFooter = InsertModalFooter;\n window.InsertButton = InsertButton;\n window.DeleteButton = DeleteButton;\n window.ShowSelectedOnlyButton = ShowSelectedOnlyButton;\n window.ExportCSVButton = ExportCSVButton;\n window.ClearSearchButton = ClearSearchButton;\n window.SearchField = SearchField;\n window.ButtonGroup = ButtonGroup;\n window.SizePerPageDropDown = SizePerPageDropDown;\n}\nexport {\n BootstrapTable,\n TableHeaderColumn,\n InsertModalHeader,\n InsertModalBody,\n InsertModalFooter,\n InsertButton,\n DeleteButton,\n ShowSelectedOnlyButton,\n ExportCSVButton,\n ClearSearchButton,\n SearchField,\n ButtonGroup,\n SizePerPageDropDown\n};\n\n\n\n// WEBPACK FOOTER //\n// src/index.js","/* eslint no-alert: 0 */\n/* eslint max-len: 0 */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classSet from 'classnames';\nimport Alert from 'react-s-alert';\nimport Const from './Const';\nimport TableHeaderColumn from './TableHeaderColumn';\nimport TableHeader from './TableHeader';\nimport TableFooter from './TableFooter';\nimport TableBody from './TableBody';\nimport PaginationList from './pagination/PaginationList';\nimport ToolBar from './toolbar/ToolBar';\nimport TableFilter from './TableFilter';\nimport { TableDataStore } from './store/TableDataStore';\nimport Util from './util';\nimport exportCSVUtil from './csv_export_util';\nimport { Filter } from './Filter';\n\n\nclass BootstrapTable extends Component {\n\n constructor(props) {\n super(props);\n this.isIE = false;\n if (Util.canUseDOM()) {\n this.isIE = document.documentMode;\n }\n this.store = new TableDataStore(this.props.data ? this.props.data.slice() : []);\n this.isVerticalScroll = false;\n this.initTable(this.props);\n\n if (this.props.selectRow && this.props.selectRow.selected) {\n const copy = this.props.selectRow.selected.slice();\n this.store.setSelectedRowKey(copy);\n }\n let currPage = Const.PAGE_START_INDEX;\n if (typeof this.props.options.page !== 'undefined') {\n currPage = this.props.options.page;\n } else if (typeof this.props.options.pageStartIndex !== 'undefined') {\n currPage = this.props.options.pageStartIndex;\n }\n\n this._adjustHeaderWidth = this._adjustHeaderWidth.bind(this);\n this._adjustHeight = this._adjustHeight.bind(this);\n this._adjustTable = this._adjustTable.bind(this);\n\n this.state = {\n data: this.getTableData(),\n currPage: currPage,\n expanding: this.props.options.expanding || [],\n sizePerPage: this.props.options.sizePerPage || Const.SIZE_PER_PAGE_LIST[0],\n selectedRowKeys: this.store.getSelectedRowKeys(),\n reset: false,\n x: this.props.keyBoardNav ? 0 : -1,\n y: this.props.keyBoardNav ? 0 : -1\n };\n }\n\n initTable(props) {\n // If columns changed, clean removed columns that had filters\n if (props.children !== this.props.children && this.filter) {\n const nextDataFields = React.Children.map(props.children, column => column.props.dataField);\n React.Children.forEach(this.props.children, column => {\n const { dataField, filter } = column.props;\n if (filter && !nextDataFields.includes(dataField)) {\n // Clear filter\n this.filter.handleFilter(dataField, '', filter.type, filter);\n }\n });\n }\n\n let { keyField } = props;\n\n const isKeyFieldDefined = typeof keyField === 'string' && keyField.length;\n React.Children.forEach(props.children, column => {\n if (column === null || column === undefined) {\n // Skip null and undefined value\n return;\n }\n if (column.props.isKey) {\n if (keyField) {\n throw new Error('Error. Multiple key column detected in TableHeaderColumn.');\n }\n keyField = column.props.dataField;\n }\n if (column.props.filter) {\n // a column contains a filter\n if (!this.filter) {\n // first time create the filter on the BootstrapTable\n this.filter = new Filter();\n }\n // pass the filter to column with filter\n column.props.filter.emitter = this.filter;\n }\n });\n\n // if a column filter was created, add 'onFilterChange' listener\n if (this.filter) {\n this.filter.removeAllListeners('onFilterChange');\n this.filter.on('onFilterChange', (currentFilter) => {\n this.handleFilterData(currentFilter);\n });\n }\n\n this.colInfos = this.getColumnsDescription(props).reduce(( prev, curr ) => {\n prev[curr.name] = curr;\n return prev;\n }, {});\n\n if (!isKeyFieldDefined && !keyField) {\n throw new Error(`Error. No any key column defined in TableHeaderColumn.\n Use 'isKey={true}' to specify a unique column after version 0.5.4.`);\n }\n\n this.store.setProps({\n isPagination: props.pagination,\n keyField: keyField,\n colInfos: this.colInfos,\n multiColumnSearch: props.multiColumnSearch,\n strictSearch: props.strictSearch,\n multiColumnSort: props.multiColumnSort,\n remote: this.props.remote\n });\n }\n\n getTableData() {\n let result = [];\n const { options, pagination } = this.props;\n const sortName = options.defaultSortName || options.sortName;\n const sortOrder = options.defaultSortOrder || options.sortOrder;\n const searchText = options.defaultSearch;\n\n if (sortName && sortOrder) {\n this.store.setSortInfo(sortOrder, sortName);\n if (!this.allowRemote(Const.REMOTE_SORT)) {\n this.store.sort();\n }\n }\n\n if (searchText) {\n this.store.search(searchText);\n }\n\n if (pagination) {\n let page;\n let sizePerPage;\n if (this.store.isChangedPage()) {\n sizePerPage = this.state.sizePerPage;\n page = this.state.currPage;\n } else {\n sizePerPage = options.sizePerPage || Const.SIZE_PER_PAGE_LIST[0];\n page = options.page || 1;\n }\n result = this.store.page(page, sizePerPage).get();\n } else {\n result = this.store.get();\n }\n return result;\n }\n\n getColumnsDescription({ children }) {\n let rowCount = 0;\n React.Children.forEach(children, (column) => {\n if (column === null || column === undefined) {\n // Skip null and undefined value\n return;\n }\n\n if (Number(column.props.row) > rowCount) {\n rowCount = Number(column.props.row);\n }\n });\n return React.Children.map(children, (column, i) => {\n if (column === null || column === undefined) {\n // Return null for empty objects\n return null;\n }\n\n const rowIndex = column.props.row ? Number(column.props.row) : 0;\n const rowSpan = column.props.rowSpan ? Number(column.props.rowSpan) : 1;\n if ((rowSpan + rowIndex) === (rowCount + 1)) {\n const columnDescription = this.getColumnDescription(column);\n\n columnDescription.index = i;\n return columnDescription;\n }\n });\n }\n\n getColumnDescription(column) {\n let columnDescription = {\n name: column.props.dataField,\n align: column.props.dataAlign,\n sort: column.props.dataSort,\n format: column.props.dataFormat,\n formatExtraData: column.props.formatExtraData,\n filterFormatted: column.props.filterFormatted,\n filterValue: column.props.filterValue,\n editable: column.props.editable,\n customEditor: column.props.customEditor,\n hidden: column.props.hidden,\n hiddenOnInsert: column.props.hiddenOnInsert,\n searchable: column.props.searchable,\n className: column.props.columnClassName,\n editClassName: column.props.editColumnClassName,\n invalidEditColumnClassName: column.props.invalidEditColumnClassName,\n columnTitle: column.props.columnTitle,\n width: column.props.width,\n text: column.props.headerText || column.props.children,\n sortFunc: column.props.sortFunc,\n sortFuncExtraData: column.props.sortFuncExtraData,\n export: column.props.export,\n expandable: column.props.expandable,\n attrs: column.props.tdAttr,\n editAttrs: column.props.editTdAttr,\n style: column.props.tdStyle\n };\n\n if (column.type.name !== TableHeaderColumn.name && React.isValidElement(column.props.children)) {\n columnDescription = {\n ...columnDescription,\n ...this.getColumnDescription(React.Children.only(column.props.children))\n };\n }\n\n return columnDescription;\n }\n\n reset() {\n const { pageStartIndex } = this.props.options;\n this.store.clean();\n this.refs.body.setState({ currEditCell: null });\n this.setState(() => {\n return {\n data: this.getTableData(),\n currPage: Util.getFirstPage(pageStartIndex),\n expanding: [],\n sizePerPage: Const.SIZE_PER_PAGE_LIST[0],\n selectedRowKeys: [],\n reset: true\n };\n });\n }\n\n componentWillReceiveProps(nextProps) {\n this.initTable(nextProps);\n const { options, selectRow } = nextProps;\n let { replace } = nextProps;\n replace = replace || this.props.replace;\n\n if (!nextProps.data) {\n return;\n }\n this.store.setData(nextProps.data.slice());\n\n if (!replace) {\n // from #481\n let page = this.state.currPage;\n if (this.props.options.page !== options.page) {\n page = options.page;\n }\n // from #481\n let sizePerPage = this.state.sizePerPage;\n if (this.props.options.sizePerPage !== options.sizePerPage) {\n sizePerPage = options.sizePerPage;\n }\n\n if (this.isRemoteDataSource()) {\n const newState = { sizePerPage, reset: false, currPage: page };\n let data = nextProps.data.slice();\n if (nextProps.pagination && !this.allowRemote(Const.REMOTE_PAGE)) {\n data = this.store.page(page, sizePerPage).get();\n }\n\n if (this.store.isOnFilter) {\n if (this.store.searchText) this.handleSearch(this.store.searchText);\n if (this.store.filterObj) this.handleFilterData(this.store.filterObj);\n newState.currPage = Util.getFirstPage(nextProps.options.pageStartIndex);\n } else {\n if (!this.allowRemote(Const.REMOTE_SORT)) {\n data = this.store.sort().get();\n }\n newState.data = data;\n }\n this.setState(() => newState);\n } else {\n // #125\n // remove !options.page for #709\n if (page > Math.ceil(nextProps.data.length / sizePerPage)) {\n page = 1;\n }\n const sortList = this.store.getSortInfo();\n const sortField = options.sortName;\n const sortOrder = options.sortOrder;\n if (sortField && sortOrder) {\n this.store.setSortInfo(sortOrder, sortField);\n this.store.sort();\n } else if (sortList.length > 0) {\n this.store.sort();\n }\n const data = this.store.page(page, sizePerPage).get();\n this.setState(() => {\n return {\n data,\n currPage: page,\n sizePerPage,\n reset: false\n };\n });\n\n if (this.store.isSearching && options.afterSearch) {\n options.afterSearch(this.store.searchText, this.store.getDataIgnoringPagination());\n }\n\n if (this.store.isFiltering && options.afterColumnFilter) {\n options.afterColumnFilter(this.store.filterObj, this.store.getDataIgnoringPagination());\n }\n }\n\n // If setting the expanded rows is being handled externally\n // then overwrite the current expanded rows.\n if (this.props.options.expanding !== options.expanding) {\n this.setState(() => {\n return {\n expanding: options.expanding || []\n };\n });\n }\n\n if (selectRow && selectRow.selected) {\n // set default select rows to store.\n const copy = selectRow.selected.slice();\n this.store.setSelectedRowKey(copy);\n this.setState(() => {\n return {\n selectedRowKeys: copy,\n reset: false\n };\n });\n }\n } else {\n this.reset();\n }\n }\n\n componentDidMount() {\n this._adjustTable();\n window.addEventListener('resize', this._adjustTable);\n this.refs.body.refs.container.addEventListener('scroll', this._scrollHeader);\n if (this.props.footer) {\n this.refs.body.refs.container.addEventListener('scroll', this._scrollFooter);\n }\n if (this.props.scrollTop) {\n this._scrollTop();\n }\n }\n\n componentWillUnmount() {\n window.removeEventListener('resize', this._adjustTable);\n if (this.refs && this.refs.body && this.refs.body.refs) {\n this.refs.body.refs.container.removeEventListener('scroll', this._scrollHeader);\n if (this.props.footer) {\n this.refs.body.refs.container.removeEventListener('scroll', this._scrollFooter);\n }\n }\n if (this.filter) {\n this.filter.removeAllListeners('onFilterChange');\n }\n }\n\n componentDidUpdate() {\n this._adjustTable();\n if (this.props.options.afterTableComplete) {\n this.props.options.afterTableComplete();\n }\n }\n\n /**\n * Returns true if in the current configuration,\n * the datagrid should load its data remotely.\n *\n * @param {Object} [props] Optional. If not given, this.props will be used\n * @return {Boolean}\n */\n isRemoteDataSource(props) {\n const { remote } = (props || this.props);\n return remote === true || Util.isFunction(remote);\n }\n\n /**\n * Returns true if this action can be handled remote store\n * From #990, Sometimes, we need some actions as remote, some actions are handled by default\n * so function will tell you the target action is can be handled as remote or not.\n * @param {String} [action] Required.\n * @param {Object} [props] Optional. If not given, this.props will be used\n * @return {Boolean}\n */\n allowRemote(action, props) {\n const { remote } = (props || this.props);\n if (typeof remote === 'function') {\n const remoteObj = remote(Const.REMOTE);\n return remoteObj[action];\n } else {\n return remote;\n }\n }\n\n render() {\n const style = {\n height: this.props.height,\n maxHeight: this.props.maxHeight\n };\n\n const columns = this.getColumnsDescription(this.props);\n const sortList = this.store.getSortInfo();\n const pagination = this.renderPagination();\n const toolBar = this.renderToolBar();\n const tableFilter = this.renderTableFilter(columns);\n const isSelectAll = this.isSelectAll();\n const expandColumnOptions = this.props.expandColumnOptions;\n if (typeof expandColumnOptions.expandColumnBeforeSelectColumn === 'undefined') {\n expandColumnOptions.expandColumnBeforeSelectColumn = true;\n }\n const colGroups = Util.renderColGroup(columns, this.props.selectRow, expandColumnOptions, this.props.version);\n const tableFooter = this.renderTableFooter(this.props.footerData, this.state.data, columns, colGroups);\n let sortIndicator = this.props.options.sortIndicator;\n if (typeof this.props.options.sortIndicator === 'undefined') sortIndicator = true;\n\n const { paginationPosition = Const.PAGINATION_POS_BOTTOM } = this.props.options;\n const showPaginationOnTop = paginationPosition !== Const.PAGINATION_POS_BOTTOM;\n const showPaginationOnBottom = paginationPosition !== Const.PAGINATION_POS_TOP;\n const selectRow = { ...this.props.selectRow };\n if (this.props.cellEdit && this.props.cellEdit.mode !== Const.CELL_EDIT_NONE) {\n selectRow.clickToSelect = false;\n }\n\n const { toolbarPosition = Const.TOOLBAR_POS_TOP } = this.props.options;\n const showToolbarOnTop = toolbarPosition !== Const.TOOLBAR_POS_BOTTOM;\n const showToolbarOnBottom = toolbarPosition !== Const.TOOLBAR_POS_TOP;\n\n return (\n \n { showToolbarOnTop ? toolBar : null }\n { showPaginationOnTop ? pagination : null }\n
\n
\n { this.props.children }\n \n
\n {\n tableFooter\n }\n
\n { tableFilter }\n { showPaginationOnBottom ? pagination : null }\n\n { showToolbarOnBottom ? toolBar : null }\n
\n
\n );\n }\n\n isSelectAll() {\n if (this.store.isEmpty()) return false;\n const { selectRow: { unselectable, onlyUnselectVisible } } = this.props;\n const keyField = this.store.getKeyField();\n const allRowKeys = onlyUnselectVisible ?\n this.store.get().map(r => r[keyField]) :\n this.store.getAllRowkey();\n let defaultSelectRowKeys = this.store.getSelectedRowKeys();\n\n if (onlyUnselectVisible) {\n defaultSelectRowKeys = defaultSelectRowKeys.filter(x => x !== allRowKeys);\n }\n\n if (defaultSelectRowKeys.length === 0) return false;\n let match = 0;\n let noFound = 0;\n let unSelectableCnt = 0;\n defaultSelectRowKeys.forEach(selected => {\n if (allRowKeys.indexOf(selected) !== -1) match++;\n else noFound++;\n if (unselectable &&\n unselectable.indexOf(selected) !== -1) unSelectableCnt++;\n });\n\n if (noFound === defaultSelectRowKeys.length) return false;\n if (match === allRowKeys.length) {\n return true;\n } else {\n if (unselectable && match <= unSelectableCnt &&\n unSelectableCnt === unselectable.length) return false;\n else return 'indeterminate';\n }\n // return (match === allRowKeys.length) ? true : 'indeterminate';\n }\n\n cleanSelected() {\n this.store.setSelectedRowKey([]);\n this.setState(() => {\n return {\n selectedRowKeys: [],\n reset: false\n };\n });\n }\n\n cleanSort() {\n this.store.cleanSortInfo();\n this.setState(() => {\n return {\n reset: false\n };\n });\n }\n\n handleSort = (order, sortField) => {\n const { autoCollapse: { sort }, options } = this.props;\n if (options.onSortChange) {\n options.onSortChange(sortField, order, this.props);\n }\n this.store.setSortInfo(order, sortField);\n if (this.allowRemote(Const.REMOTE_SORT)) {\n if (sort) {\n this.setState(() => {\n return {\n expanding: []\n };\n });\n }\n return;\n }\n\n const result = this.store.sort().get();\n this.setState(() => {\n const newState = {\n data: result,\n reset: false\n };\n if (sort) newState.expanding = [];\n return newState;\n });\n }\n\n handleExpandRow = (expanding, rowKey, isRowExpanding) => {\n const { onExpand } = this.props.options;\n if (onExpand) {\n onExpand(rowKey, !isRowExpanding);\n }\n this.setState(() => { return { expanding, reset: false }; }, () => {\n this._adjustHeaderWidth();\n });\n }\n\n handlePaginationData = (page, sizePerPage) => {\n const { onPageChange, pageStartIndex } = this.props.options;\n const emptyTable = this.store.isEmpty();\n if (onPageChange) {\n onPageChange(page, sizePerPage);\n }\n\n const state = {\n sizePerPage,\n reset: false\n };\n if (!emptyTable) state.currPage = page;\n this.setState(() => state);\n\n if (this.allowRemote(Const.REMOTE_PAGE) || emptyTable) {\n return;\n }\n\n const result = this.store.page(Util.getNormalizedPage(pageStartIndex, page), sizePerPage).get();\n this.setState(() => { return { data: result, reset: false }; });\n }\n\n handleMouseLeave = () => {\n if (this.props.options.onMouseLeave) {\n this.props.options.onMouseLeave();\n }\n }\n\n handleMouseEnter = () => {\n if (this.props.options.onMouseEnter) {\n this.props.options.onMouseEnter();\n }\n }\n\n handleRowMouseOut = (row, event) => {\n if (this.props.options.onRowMouseOut) {\n this.props.options.onRowMouseOut(row, event);\n }\n }\n\n handleRowMouseOver = (row, event) => {\n if (this.props.options.onRowMouseOver) {\n this.props.options.onRowMouseOver(row, event);\n }\n }\n\n handleNavigateCell = ({ x: offSetX, y: offSetY, lastEditCell }) => {\n const { pagination } = this.props;\n let { x, y, currPage } = this.state;\n x += offSetX;\n y += offSetY;\n\n const columns = this.store.getColInfos();\n const visibleRowSize = this.state.data.length;\n const visibleColumnSize = Object.keys(columns).filter(k => !columns[k].hidden).length;\n\n if (y >= visibleRowSize) {\n currPage++;\n const lastPage = pagination ? this.refs.pagination.getLastPage() : -1;\n if (currPage <= lastPage) {\n this.handlePaginationData(currPage, this.state.sizePerPage);\n } else {\n return;\n }\n y = 0;\n } else if (y < 0) {\n currPage--;\n if (currPage > 0) {\n this.handlePaginationData(currPage, this.state.sizePerPage);\n } else {\n return;\n }\n y = visibleRowSize - 1;\n } else if (x >= visibleColumnSize) {\n if ((y + 1) === visibleRowSize) {\n currPage++;\n const lastPage = pagination ? this.refs.pagination.getLastPage() : -1;\n if (currPage <= lastPage) {\n this.handlePaginationData(currPage, this.state.sizePerPage);\n } else {\n return;\n }\n y = 0;\n } else {\n y++;\n }\n x = lastEditCell ? 1 : 0;\n } else if (x < 0) {\n x = visibleColumnSize - 1;\n if (y === 0) {\n currPage--;\n if (currPage > 0) {\n this.handlePaginationData(currPage, this.state.sizePerPage);\n } else {\n return;\n }\n y = this.state.sizePerPage - 1;\n } else {\n y--;\n }\n }\n this.setState(() => {\n return {\n x, y, currPage, reset: false\n };\n });\n }\n\n handleRowClick = (row, rowIndex, columnIndex) => {\n const { options, keyBoardNav } = this.props;\n if (options.onRowClick) {\n options.onRowClick(row, columnIndex, rowIndex);\n }\n if (keyBoardNav) {\n let { clickToNav } = typeof keyBoardNav === 'object' ? keyBoardNav : {};\n clickToNav = clickToNav === false ? clickToNav : true;\n if (clickToNav) {\n this.setState(() => {\n return {\n x: columnIndex,\n y: rowIndex,\n reset: false\n };\n });\n }\n }\n }\n\n handleRowDoubleClick = row => {\n if (this.props.options.onRowDoubleClick) {\n this.props.options.onRowDoubleClick(row);\n }\n }\n\n handleSelectAllRow = e => {\n const isSelected = e.currentTarget.checked;\n const keyField = this.store.getKeyField();\n const { selectRow: { onSelectAll, unselectable, selected, onlyUnselectVisible } } = this.props;\n let selectedRowKeys = onlyUnselectVisible ? this.state.selectedRowKeys : [];\n let result = true;\n let rows = this.store.get();\n\n // onlyUnselectVisible default is false, #1276\n if (!isSelected && !onlyUnselectVisible) {\n rows = this.store.getRowByKey(this.state.selectedRowKeys);\n }\n\n if (unselectable && unselectable.length > 0) {\n if (isSelected) {\n rows = rows.filter(r => {\n return unselectable.indexOf(r[keyField]) === -1 ||\n (selected && selected.indexOf(r[keyField]) !== -1);\n });\n } else {\n rows = rows.filter(r => unselectable.indexOf(r[keyField]) === -1);\n }\n }\n\n if (onSelectAll) {\n result = this.props.selectRow.onSelectAll(isSelected, rows);\n }\n\n if (typeof result == 'undefined' || result !== false) {\n if (isSelected) {\n if (Array.isArray(result)) {\n selectedRowKeys = result;\n } else {\n const currentRowKeys = rows.map(r => r[keyField]);\n // onlyUnselectVisible default is false, #1276\n if (onlyUnselectVisible) {\n selectedRowKeys = selectedRowKeys.concat(currentRowKeys);\n } else {\n selectedRowKeys = currentRowKeys;\n }\n }\n } else {\n if (unselectable && selected) {\n selectedRowKeys = selected.filter(r => unselectable.indexOf(r) > -1);\n } else if (onlyUnselectVisible) {\n const currentRowKeys = rows.map(r => r[keyField]);\n selectedRowKeys = selectedRowKeys.filter(k => currentRowKeys.indexOf(k) === -1);\n }\n }\n\n this.store.setSelectedRowKey(selectedRowKeys);\n this.setState(() => { return { selectedRowKeys, reset: false }; });\n }\n }\n\n handleShowOnlySelected = () => {\n this.store.ignoreNonSelected();\n const { pageStartIndex } = this.props.options;\n let result;\n if (this.props.pagination) {\n result = this.store.page(Util.getNormalizedPage(pageStartIndex), this.state.sizePerPage).get();\n } else {\n result = this.store.get();\n }\n this.setState(() => {\n return {\n data: result,\n reset: false,\n currPage: Util.getFirstPage(pageStartIndex)\n };\n });\n }\n\n handleSelectRow = (row, isSelected, e, rowIndex) => {\n let result = true;\n let currSelected = this.store.getSelectedRowKeys();\n const rowKey = row[ this.store.getKeyField() ];\n const { selectRow } = this.props;\n if (selectRow.onSelect) {\n result = selectRow.onSelect(row, isSelected, e, rowIndex);\n }\n\n if (typeof result === 'undefined' || result !== false) {\n if (selectRow.mode === Const.ROW_SELECT_SINGLE) {\n currSelected = isSelected ? [ rowKey ] : [];\n } else {\n if (isSelected) {\n currSelected.push(rowKey);\n } else {\n currSelected = currSelected.filter(key => rowKey !== key);\n }\n }\n\n this.store.setSelectedRowKey(currSelected);\n this.setState(() => {\n return {\n selectedRowKeys: currSelected,\n reset: false\n };\n });\n }\n }\n\n handleEditCell = (newVal, rowIndex, colIndex) => {\n const { beforeSaveCell } = this.props.cellEdit;\n const columns = this.getColumnsDescription(this.props);\n const fieldName = columns[colIndex].name;\n\n const invalid = () => {\n this.setState(() => {\n return {\n data: this.store.get(),\n reset: false\n };\n });\n return;\n };\n\n if (beforeSaveCell) {\n const beforeSaveCellCB = result => {\n this.refs.body.cancelEditCell();\n if (result || result === undefined) {\n this.editCell(newVal, rowIndex, colIndex);\n } else {\n invalid();\n }\n };\n const isValid = beforeSaveCell(this.state.data[rowIndex], fieldName, newVal, beforeSaveCellCB);\n if (isValid === false && typeof isValid !== 'undefined') {\n return invalid();\n } else if (isValid === Const.AWAIT_BEFORE_CELL_EDIT) {\n /* eslint consistent-return: 0 */\n return isValid;\n }\n }\n this.editCell(newVal, rowIndex, colIndex);\n }\n\n editCell(newVal, rowIndex, colIndex) {\n const { onCellEdit } = this.props.options;\n const { afterSaveCell } = this.props.cellEdit;\n const columns = this.getColumnsDescription(this.props);\n const fieldName = columns[colIndex].name;\n if (onCellEdit) {\n newVal = onCellEdit(this.state.data[rowIndex], fieldName, newVal);\n }\n\n if (this.allowRemote(Const.REMOTE_CELL_EDIT)) {\n if (afterSaveCell) {\n afterSaveCell(this.state.data[rowIndex], fieldName, newVal);\n }\n return;\n }\n\n const result = this.store.edit(newVal, rowIndex, fieldName).get();\n this.setState(() => {\n return {\n data: result,\n reset: false\n };\n });\n\n if (afterSaveCell) {\n afterSaveCell(this.state.data[rowIndex], fieldName, newVal);\n }\n }\n\n handleAddRowAtBegin(newObj) {\n try {\n this.store.addAtBegin(newObj);\n } catch (e) {\n return e;\n }\n this._handleAfterAddingRow(newObj, true);\n }\n\n handleAddRow = newObj => {\n let isAsync = false;\n const { onAddRow } = this.props.options;\n\n const afterHandleAddRow = errMsg => {\n if (isAsync) {\n this.refs.toolbar.afterHandleSaveBtnClick(errMsg);\n } else {\n return errMsg;\n }\n };\n\n const afterAddRowCB = errMsg => {\n if (typeof errMsg !== 'undefined' && errMsg !== '') return afterHandleAddRow(errMsg);\n if (this.allowRemote(Const.REMOTE_INSERT_ROW)) {\n if (this.props.options.afterInsertRow) {\n this.props.options.afterInsertRow(newObj);\n }\n return afterHandleAddRow();\n }\n\n try {\n this.store.add(newObj);\n } catch (e) {\n return afterHandleAddRow(e.message);\n }\n this._handleAfterAddingRow(newObj, false);\n return afterHandleAddRow();\n };\n\n if (onAddRow) {\n const colInfos = this.store.getColInfos();\n const errMsg = onAddRow(newObj, colInfos, afterAddRowCB);\n\n if (errMsg !== '' && errMsg !== false) {\n return errMsg;\n } else if (typeof errMsg === 'undefined') {\n return afterAddRowCB();\n } else {\n isAsync = true;\n return !isAsync;\n }\n } else {\n return afterAddRowCB();\n }\n }\n\n getSizePerPage() {\n return this.state.sizePerPage;\n }\n\n getCurrentPage() {\n return this.state.currPage;\n }\n\n getTableDataIgnorePaging() {\n return this.store.getCurrentDisplayData();\n }\n\n getPageByRowKey = rowKey => {\n const { sizePerPage } = this.state;\n const currentData = this.store.getCurrentDisplayData();\n const keyField = this.store.getKeyField();\n const result = currentData.findIndex((x) => x[ keyField ] === rowKey);\n if (result > -1) {\n return parseInt((result / sizePerPage), 10) + 1;\n } else {\n return result;\n }\n }\n\n handleDropRow = rowKeys => {\n const dropRowKeys = rowKeys ? rowKeys : this.store.getSelectedRowKeys();\n // add confirm before the delete action if that option is set.\n if (dropRowKeys && dropRowKeys.length > 0) {\n if (this.props.options.handleConfirmDeleteRow) {\n this.props.options.handleConfirmDeleteRow(() => {\n this.deleteRow(dropRowKeys);\n }, dropRowKeys);\n } else if (confirm('Are you sure you want to delete?')) {\n this.deleteRow(dropRowKeys);\n }\n }\n }\n\n deleteRow(dropRowKeys) {\n const dropRow = this.store.getRowByKey(dropRowKeys);\n const { onDeleteRow, afterDeleteRow, pageStartIndex } = this.props.options;\n\n if (onDeleteRow) {\n onDeleteRow(dropRowKeys, dropRow);\n }\n\n this.store.setSelectedRowKey([]); // clear selected row key\n\n if (this.allowRemote(Const.REMOTE_DROP_ROW)) {\n if (afterDeleteRow) {\n afterDeleteRow(dropRowKeys, dropRow);\n }\n return;\n }\n\n this.store.remove(dropRowKeys); // remove selected Row\n let result;\n if (this.props.pagination) {\n // debugger;\n const { sizePerPage } = this.state;\n const currLastPage = Math.ceil(this.store.getDataNum() / sizePerPage);\n let { currPage } = this.state;\n if (currPage > currLastPage) currPage = currLastPage;\n // console.log(Util.getNormalizedPage(currPage));\n result = this.store.page(Util.getNormalizedPage(pageStartIndex, currPage), sizePerPage).get();\n this.setState(() => {\n return {\n data: result,\n selectedRowKeys: this.store.getSelectedRowKeys(),\n currPage,\n reset: false\n };\n });\n } else {\n result = this.store.get();\n this.setState(() => {\n return {\n data: result,\n reset: false,\n selectedRowKeys: this.store.getSelectedRowKeys()\n };\n });\n }\n if (afterDeleteRow) {\n afterDeleteRow(dropRowKeys, dropRow);\n }\n }\n\n handleFilterData = filterObj => {\n const { autoCollapse: { filter }, options } = this.props;\n const { onFilterChange, pageStartIndex } = options;\n if (onFilterChange) {\n const colInfos = this.store.getColInfos();\n onFilterChange(filterObj, colInfos);\n }\n\n this.setState(() => {\n const newState = {\n currPage: Util.getFirstPage(pageStartIndex),\n reset: false\n };\n if (filter) newState.expanding = [];\n return newState;\n });\n\n if (this.allowRemote(Const.REMOTE_FILTER)) {\n if (this.props.options.afterColumnFilter) {\n this.props.options.afterColumnFilter(filterObj, this.store.getDataIgnoringPagination());\n }\n return;\n }\n\n this.store.filter(filterObj);\n\n const sortList = this.store.getSortInfo();\n\n if (sortList.length > 0) {\n this.store.sort();\n }\n\n let result;\n\n if (this.props.pagination) {\n const { sizePerPage } = this.state;\n result = this.store.page(Util.getNormalizedPage(pageStartIndex), sizePerPage).get();\n } else {\n result = this.store.get();\n }\n if (this.props.options.afterColumnFilter) {\n this.props.options.afterColumnFilter(filterObj,\n this.store.getDataIgnoringPagination());\n }\n this.setState(() => {\n return {\n data: result,\n reset: false\n };\n });\n }\n\n handleExportCSV = () => {\n let result = {};\n\n let { csvFileName } = this.props;\n const { onExportToCSV, exportCSVSeparator, noAutoBOM, excludeCSVHeader } = this.props.options;\n if (onExportToCSV) {\n result = onExportToCSV();\n } else {\n result = this.store.getDataIgnoringPagination();\n }\n const separator = exportCSVSeparator || Const.DEFAULT_CSV_SEPARATOR;\n const keys = [];\n this.props.children.filter(_ => _ != null).map(function(column) {\n if (column.props.export === true ||\n (typeof column.props.export === 'undefined' &&\n column.props.hidden === false)) {\n keys.push({\n field: column.props.dataField,\n type: column.props.csvFieldType,\n format: column.props.csvFormat,\n extraData: column.props.csvFormatExtraData,\n header: column.props.csvHeader || column.props.dataField,\n row: Number(column.props.row) || 0,\n rowSpan: Number(column.props.rowSpan) || 1,\n colSpan: Number(column.props.colSpan) || 1\n });\n }\n });\n\n if (Util.isFunction(csvFileName)) {\n csvFileName = csvFileName();\n }\n\n exportCSVUtil(result, keys, csvFileName, separator, noAutoBOM, excludeCSVHeader);\n }\n\n handleSearch = searchText => {\n // Set search field if this function being called outside\n // but it's not necessary if calling fron inside.\n if (this.refs.toolbar) {\n this.refs.toolbar.setSearchInput(searchText);\n }\n const { autoCollapse: { search } } = this.props;\n const { onSearchChange, pageStartIndex } = this.props.options;\n if (onSearchChange) {\n const colInfos = this.store.getColInfos();\n onSearchChange(searchText, colInfos, this.props.multiColumnSearch);\n }\n\n this.setState(() => {\n const newState = {\n currPage: Util.getFirstPage(pageStartIndex),\n reset: false\n };\n if (search) newState.expanding = [];\n return newState;\n });\n\n if (this.allowRemote(Const.REMOTE_SEARCH)) {\n if (this.props.options.afterSearch) {\n this.props.options.afterSearch(searchText, this.store.getDataIgnoringPagination());\n }\n return;\n }\n\n\n this.store.search(searchText);\n\n const sortList = this.store.getSortInfo();\n\n if (sortList.length > 0) {\n this.store.sort();\n }\n\n let result;\n if (this.props.pagination) {\n const { sizePerPage } = this.state;\n result = this.store.page(Util.getNormalizedPage(pageStartIndex), sizePerPage).get();\n } else {\n result = this.store.get();\n }\n if (this.props.options.afterSearch) {\n this.props.options.afterSearch(searchText,\n this.store.getDataIgnoringPagination());\n }\n this.setState(() => {\n return {\n data: result,\n reset: false\n };\n });\n }\n\n renderPagination() {\n if (this.props.pagination) {\n let dataSize;\n if (this.allowRemote(Const.REMOTE_PAGE)) {\n dataSize = this.props.fetchInfo.dataTotalSize;\n } else {\n dataSize = this.store.getDataNum();\n }\n const { options } = this.props;\n const withFirstAndLast = options.withFirstAndLast === undefined ? true : options.withFirstAndLast;\n if (Math.ceil(dataSize / this.state.sizePerPage) <= 1 &&\n this.props.ignoreSinglePage) return null;\n return (\n \n );\n }\n return null;\n }\n\n renderToolBar() {\n const { exportCSV, selectRow, insertRow, deleteRow, search, children, keyField } = this.props;\n const enableShowOnlySelected = selectRow && selectRow.showOnlySelected;\n const print = typeof this.props.options.printToolBar === 'undefined' ?\n true : this.props.options.printToolBar;\n if (enableShowOnlySelected\n || insertRow\n || deleteRow\n || search\n || exportCSV\n || this.props.options.searchPanel\n || this.props.options.btnGroup\n || this.props.options.toolBar) {\n let columns;\n if (Array.isArray(children)) {\n columns = children.filter(_ => _ != null).map((column, r) => {\n if (!column) return;\n const { props } = column;\n const isKey = props.isKey || keyField === props.dataField;\n return {\n isKey,\n name: props.headerText || props.children,\n field: props.dataField,\n hiddenOnInsert: props.hiddenOnInsert,\n keyValidator: props.keyValidator,\n customInsertEditor: props.customInsertEditor,\n // when you want same auto generate value and not allow edit, example ID field\n autoValue: props.autoValue || false,\n // for create editor, no params for column.editable() indicate that editor for new row\n editable: props.editable && (Util.isFunction(props.editable === 'function')) ? props.editable() : props.editable,\n format: props.dataFormat ? function(value) {\n return props.dataFormat(value, null, props.formatExtraData, r).replace(/<.*?>/g, '');\n } : false\n };\n });\n } else {\n columns = [ {\n name: children.props.headerText || children.props.children,\n field: children.props.dataField,\n editable: children.props.editable,\n customInsertEditor: children.props.customInsertEditor,\n hiddenOnInsert: children.props.hiddenOnInsert,\n keyValidator: children.props.keyValidator\n } ];\n }\n return (\n \n \n
\n );\n } else {\n return null;\n }\n }\n\n renderTableFilter(columns) {\n if (this.props.columnFilter) {\n return (\n \n );\n } else {\n return null;\n }\n }\n\n renderTableFooter(footerData, footerFormatterReturnData, columns, colGroups) {\n if (this.props.footer) {\n let hideSelectColumn = true;\n const { mode } = this.props.selectRow;\n const isSelectRowDefined = Util.isSelectRowDefined(mode);\n if (isSelectRowDefined) {\n hideSelectColumn = this.props.selectRow.hideSelectColumn;\n }\n return (\n \n { footerData }\n \n );\n }\n return null;\n }\n\n _scrollTop = () => {\n const { scrollTop } = this.props;\n if (scrollTop === Const.SCROLL_TOP) {\n this.refs.body.refs.container.scrollTop = 0;\n } else if (scrollTop === Const.SCROLL_BOTTOM) {\n this.refs.body.refs.container.scrollTop = this.refs.body.refs.container.scrollHeight;\n } else if (typeof scrollTop === 'number' && !isNaN(scrollTop)) {\n this.refs.body.refs.container.scrollTop = scrollTop;\n }\n }\n _scrollHeader = (e) => {\n this.refs.header.refs.container.scrollLeft = e.currentTarget.scrollLeft;\n }\n\n _scrollFooter = (e) => {\n if (this.props.footer) {\n this.refs.footer.refs.container.scrollLeft = e.currentTarget.scrollLeft;\n }\n }\n\n _adjustTable() {\n this._adjustHeight();\n if (!this.props.printable) {\n this._adjustHeaderWidth();\n }\n }\n\n _adjustHeaderWidth() {\n const header = this.refs.header.getHeaderColGrouop();\n const tbody = this.refs.body.refs.tbody;\n const bodyHeader = this.refs.body.getHeaderColGrouop();\n const firstRow = tbody.childNodes[0];\n const isScroll = tbody.parentNode.getBoundingClientRect().height >\n tbody.parentNode.parentNode.getBoundingClientRect().height;\n\n const scrollBarWidth = isScroll ? Util.getScrollBarWidth() : 0;\n if (firstRow && this.store.getDataNum()) {\n if (isScroll || this.isVerticalScroll !== isScroll) {\n const cells = firstRow.childNodes;\n for (let i = 0; i < cells.length; i++) {\n const cell = cells[i];\n const computedStyle = window.getComputedStyle(cell);\n let width = parseFloat(computedStyle.width.replace('px', ''));\n if (this.isIE) {\n const paddingLeftWidth = parseFloat(computedStyle.paddingLeft.replace('px', ''));\n const paddingRightWidth = parseFloat(computedStyle.paddingRight.replace('px', ''));\n const borderRightWidth = parseFloat(computedStyle.borderRightWidth.replace('px', ''));\n const borderLeftWidth = parseFloat(computedStyle.borderLeftWidth.replace('px', ''));\n width = width + paddingLeftWidth + paddingRightWidth + borderRightWidth + borderLeftWidth;\n }\n const lastPadding = (cells.length - 1 === i ? scrollBarWidth : 0);\n if (width <= 0) {\n width = 120;\n cell.width = width + lastPadding + 'px';\n }\n const result = width + lastPadding + 'px';\n header[i].style.width = result;\n header[i].style.minWidth = result;\n if (cells.length - 1 === i) {\n bodyHeader[i].style.width = width + 'px';\n bodyHeader[i].style.minWidth = width + 'px';\n } else {\n bodyHeader[i].style.width = result;\n bodyHeader[i].style.minWidth = result;\n }\n }\n }\n } else {\n for (const i in bodyHeader) {\n if (bodyHeader.hasOwnProperty(i)) {\n const child = bodyHeader[i];\n if (child.style) {\n if (child.style.width) {\n header[i].style.width = child.style.width;\n }\n if (child.style.minWidth) {\n header[i].style.minWidth = child.style.minWidth;\n }\n }\n }\n }\n }\n this.isVerticalScroll = isScroll;\n }\n\n _adjustHeight() {\n const { height } = this.props;\n let { maxHeight } = this.props;\n if ((typeof height === 'number' && !isNaN(height)) || height.indexOf('%') === -1) {\n this.refs.body.refs.container.style.height =\n parseFloat(height, 10) - this.refs.header.refs.container.offsetHeight + 'px';\n }\n if (maxHeight) {\n maxHeight = typeof maxHeight === 'number' ?\n maxHeight :\n parseInt(maxHeight.replace('px', ''), 10);\n\n this.refs.body.refs.container.style.maxHeight =\n maxHeight - this.refs.header.refs.container.offsetHeight + 'px';\n }\n }\n\n _handleAfterAddingRow(newObj, atTheBeginning) {\n let result;\n if (this.props.pagination) {\n // if pagination is enabled and inserting row at the end,\n // change page to the last page\n // otherwise, change it to the first page\n const { sizePerPage } = this.state;\n\n if (atTheBeginning) {\n const { pageStartIndex } = this.props.options;\n result = this.store.page(Util.getNormalizedPage(pageStartIndex), sizePerPage).get();\n this.setState(() => {\n return {\n data: result,\n currPage: Util.getFirstPage(pageStartIndex),\n reset: false\n };\n });\n } else {\n const currLastPage = Math.ceil(this.store.getDataNum() / sizePerPage);\n result = this.store.page(currLastPage, sizePerPage).get();\n this.setState(() => {\n return {\n data: result,\n currPage: currLastPage,\n reset: false\n };\n });\n }\n } else {\n result = this.store.get();\n this.setState(() => {\n return {\n data: result,\n reset: false\n };\n });\n }\n\n if (this.props.options.afterInsertRow) {\n this.props.options.afterInsertRow(newObj);\n }\n }\n}\n\nBootstrapTable.propTypes = {\n keyField: PropTypes.string,\n height: PropTypes.oneOfType([ PropTypes.string, PropTypes.number ]),\n maxHeight: PropTypes.oneOfType([ PropTypes.string, PropTypes.number ]),\n data: PropTypes.oneOfType([ PropTypes.array, PropTypes.object ]),\n version: PropTypes.string, // bootstrap version\n remote: PropTypes.oneOfType([ PropTypes.bool, PropTypes.func ]), // remote data, default is false\n replace: PropTypes.oneOfType([ PropTypes.bool, PropTypes.func ]),\n scrollTop: PropTypes.oneOfType([ PropTypes.string, PropTypes.number ]),\n striped: PropTypes.bool,\n bordered: PropTypes.bool,\n hover: PropTypes.bool,\n condensed: PropTypes.bool,\n pagination: PropTypes.bool,\n printable: PropTypes.bool,\n withoutTabIndex: PropTypes.bool,\n keyBoardNav: PropTypes.oneOfType([ PropTypes.bool, PropTypes.object ]),\n searchPlaceholder: PropTypes.string,\n selectRow: PropTypes.shape({\n mode: PropTypes.oneOf([\n Const.ROW_SELECT_NONE,\n Const.ROW_SELECT_SINGLE,\n Const.ROW_SELECT_MULTI\n ]),\n customComponent: PropTypes.func,\n bgColor: PropTypes.oneOfType([ PropTypes.string, PropTypes.func ]),\n selected: PropTypes.array,\n onSelect: PropTypes.func,\n onSelectAll: PropTypes.func,\n clickToSelect: PropTypes.bool,\n hideSelectColumn: PropTypes.bool,\n clickToSelectAndEditCell: PropTypes.bool,\n clickToExpand: PropTypes.bool,\n showOnlySelected: PropTypes.bool,\n unselectable: PropTypes.array,\n columnWidth: PropTypes.oneOfType([ PropTypes.number, PropTypes.string ]),\n onlyUnselectVisible: PropTypes.bool\n }),\n cellEdit: PropTypes.shape({\n mode: PropTypes.string,\n blurToSave: PropTypes.bool,\n blurToEscape: PropTypes.bool,\n beforeSaveCell: PropTypes.func,\n afterSaveCell: PropTypes.func,\n nonEditableRows: PropTypes.func\n }),\n insertRow: PropTypes.bool,\n deleteRow: PropTypes.bool,\n search: PropTypes.bool,\n multiColumnSearch: PropTypes.bool,\n strictSearch: PropTypes.bool,\n columnFilter: PropTypes.bool,\n trClassName: PropTypes.any,\n trStyle: PropTypes.any,\n tableStyle: PropTypes.object,\n containerStyle: PropTypes.object,\n headerStyle: PropTypes.object,\n bodyStyle: PropTypes.object,\n containerClass: PropTypes.string,\n tableContainerClass: PropTypes.string,\n headerContainerClass: PropTypes.string,\n bodyContainerClass: PropTypes.string,\n tableHeaderClass: PropTypes.string,\n tableBodyClass: PropTypes.string,\n tableFooterClass: PropTypes.string,\n options: PropTypes.shape({\n clearSearch: PropTypes.bool,\n sortName: PropTypes.oneOfType([ PropTypes.string, PropTypes.array ]),\n sortOrder: PropTypes.oneOfType([ PropTypes.string, PropTypes.array ]),\n defaultSortName: PropTypes.oneOfType([ PropTypes.string, PropTypes.array ]),\n defaultSortOrder: PropTypes.oneOfType([ PropTypes.string, PropTypes.array ]),\n sortIndicator: PropTypes.bool,\n afterTableComplete: PropTypes.func,\n afterDeleteRow: PropTypes.func,\n afterInsertRow: PropTypes.func,\n afterSearch: PropTypes.func,\n afterColumnFilter: PropTypes.func,\n onRowClick: PropTypes.func,\n onRowDoubleClick: PropTypes.func,\n page: PropTypes.number,\n pageStartIndex: PropTypes.number,\n paginationShowsTotal: PropTypes.oneOfType([ PropTypes.bool, PropTypes.func ]),\n sizePerPageList: PropTypes.array,\n sizePerPage: PropTypes.number,\n paginationSize: PropTypes.number,\n paginationPosition: PropTypes.oneOf([\n Const.PAGINATION_POS_TOP,\n Const.PAGINATION_POS_BOTTOM,\n Const.PAGINATION_POS_BOTH\n ]),\n toolbarPosition: PropTypes.oneOf([\n Const.TOOLBAR_POS_TOP,\n Const.TOOLBAR_POS_BOTTOM,\n Const.TOOLBAR_POS_BOTH\n ]),\n hideSizePerPage: PropTypes.bool,\n hidePageListOnlyOnePage: PropTypes.bool,\n alwaysShowAllBtns: PropTypes.bool,\n withFirstAndLast: PropTypes.bool,\n keepSizePerPageState: PropTypes.bool,\n onSortChange: PropTypes.func,\n onPageChange: PropTypes.func,\n onSizePerPageList: PropTypes.func,\n onFilterChange: PropTypes.func,\n onSearchChange: PropTypes.func,\n onAddRow: PropTypes.func,\n onExportToCSV: PropTypes.func,\n onCellEdit: PropTypes.func,\n noDataText: PropTypes.oneOfType([ PropTypes.string, PropTypes.object ]),\n withoutNoDataText: PropTypes.bool,\n handleConfirmDeleteRow: PropTypes.func,\n prePage: PropTypes.any,\n nextPage: PropTypes.any,\n firstPage: PropTypes.any,\n lastPage: PropTypes.any,\n prePageTitle: PropTypes.string,\n nextPageTitle: PropTypes.string,\n firstPageTitle: PropTypes.string,\n lastPageTitle: PropTypes.string,\n searchDelayTime: PropTypes.number,\n excludeCSVHeader: PropTypes.bool,\n exportCSVText: PropTypes.string,\n exportCSVSeparator: PropTypes.string,\n insertText: PropTypes.string,\n deleteText: PropTypes.string,\n saveText: PropTypes.string,\n closeText: PropTypes.string,\n ignoreEditable: PropTypes.bool,\n defaultSearch: PropTypes.string,\n insertModalHeader: PropTypes.func,\n insertModalBody: PropTypes.func,\n insertModalFooter: PropTypes.func,\n insertModal: PropTypes.func,\n insertBtn: PropTypes.func,\n deleteBtn: PropTypes.func,\n showSelectedOnlyBtn: PropTypes.func,\n exportCSVBtn: PropTypes.func,\n clearSearchBtn: PropTypes.func,\n searchField: PropTypes.func,\n searchPanel: PropTypes.func,\n btnGroup: PropTypes.func,\n toolBar: PropTypes.func,\n sizePerPageDropDown: PropTypes.func,\n paginationPanel: PropTypes.func,\n searchPosition: PropTypes.string,\n expandRowBgColor: PropTypes.string,\n expandBy: PropTypes.string,\n expanding: PropTypes.array,\n onExpand: PropTypes.func,\n onlyOneExpanding: PropTypes.bool,\n expandBodyClass: PropTypes.oneOfType([ PropTypes.string, PropTypes.func ]),\n expandParentClass: PropTypes.oneOfType([ PropTypes.string, PropTypes.func ]),\n beforeShowError: PropTypes.func,\n printToolBar: PropTypes.bool,\n insertFailIndicator: PropTypes.string,\n noAutoBOM: PropTypes.bool\n }),\n fetchInfo: PropTypes.shape({\n dataTotalSize: PropTypes.number\n }),\n exportCSV: PropTypes.bool,\n csvFileName: PropTypes.oneOfType([ PropTypes.string, PropTypes.func ]),\n ignoreSinglePage: PropTypes.bool,\n expandableRow: PropTypes.func,\n expandComponent: PropTypes.func,\n autoCollapse: PropTypes.shape({\n sort: PropTypes.bool,\n filter: PropTypes.bool,\n search: PropTypes.bool\n }),\n expandColumnOptions: PropTypes.shape({\n columnWidth: PropTypes.oneOfType([ PropTypes.number, PropTypes.string ]),\n expandColumnVisible: PropTypes.bool,\n expandColumnComponent: PropTypes.func,\n expandColumnBeforeSelectColumn: PropTypes.bool\n }),\n footer: PropTypes.bool\n};\nBootstrapTable.defaultProps = {\n version: '3',\n replace: false,\n scrollTop: undefined,\n expandComponent: undefined,\n expandableRow: undefined,\n expandColumnOptions: {\n expandColumnVisible: false,\n expandColumnComponent: undefined,\n expandColumnBeforeSelectColumn: true\n },\n height: '100%',\n maxHeight: undefined,\n striped: false,\n bordered: true,\n hover: false,\n condensed: false,\n pagination: false,\n printable: false,\n withoutTabIndex: false,\n keyBoardNav: false,\n searchPlaceholder: undefined,\n selectRow: {\n mode: Const.ROW_SELECT_NONE,\n bgColor: Const.ROW_SELECT_BG_COLOR,\n selected: [],\n onSelect: undefined,\n onSelectAll: undefined,\n clickToSelect: false,\n hideSelectColumn: false,\n clickToSelectAndEditCell: false,\n clickToExpand: false,\n showOnlySelected: false,\n unselectable: [],\n customComponent: undefined,\n onlyUnselectVisible: false\n },\n cellEdit: {\n mode: Const.CELL_EDIT_NONE,\n blurToSave: false,\n blurToEscape: false,\n beforeSaveCell: undefined,\n afterSaveCell: undefined,\n nonEditableRows: undefined\n },\n insertRow: false,\n deleteRow: false,\n search: false,\n multiColumnSearch: false,\n strictSearch: undefined,\n multiColumnSort: 1,\n columnFilter: false,\n trClassName: '',\n trStyle: undefined,\n tableStyle: undefined,\n containerStyle: undefined,\n headerStyle: undefined,\n bodyStyle: undefined,\n containerClass: null,\n tableContainerClass: null,\n headerContainerClass: null,\n bodyContainerClass: null,\n tableHeaderClass: null,\n tableBodyClass: null,\n tableFooterClass: null,\n options: {\n clearSearch: false,\n sortName: undefined,\n sortOrder: undefined,\n defaultSortName: undefined,\n defaultSortOrder: undefined,\n sortIndicator: true,\n afterTableComplete: undefined,\n afterDeleteRow: undefined,\n afterInsertRow: undefined,\n afterSearch: undefined,\n afterColumnFilter: undefined,\n onRowClick: undefined,\n onRowDoubleClick: undefined,\n onMouseLeave: undefined,\n onMouseEnter: undefined,\n onRowMouseOut: undefined,\n onRowMouseOver: undefined,\n page: undefined,\n paginationShowsTotal: false,\n sizePerPageList: Const.SIZE_PER_PAGE_LIST,\n sizePerPage: undefined,\n paginationSize: Const.PAGINATION_SIZE,\n paginationPosition: Const.PAGINATION_POS_BOTTOM,\n toolbarPosition: Const.TOOLBAR_POS_TOP,\n hideSizePerPage: false,\n hidePageListOnlyOnePage: false,\n alwaysShowAllBtns: false,\n withFirstAndLast: true,\n keepSizePerPageState: false,\n onSizePerPageList: undefined,\n noDataText: undefined,\n withoutNoDataText: false,\n handleConfirmDeleteRow: undefined,\n prePage: Const.PRE_PAGE,\n nextPage: Const.NEXT_PAGE,\n firstPage: Const.FIRST_PAGE,\n lastPage: Const.LAST_PAGE,\n prePageTitle: Const.PRE_PAGE_TITLE,\n nextPageTitle: Const.NEXT_PAGE_TITLE,\n firstPageTitle: Const.FIRST_PAGE_TITLE,\n lastPageTitle: Const.LAST_PAGE_TITLE,\n pageStartIndex: 1,\n searchDelayTime: undefined,\n excludeCSVHeader: false,\n exportCSVText: Const.EXPORT_CSV_TEXT,\n exportCSVSeparator: Const.DEFAULT_CSV_SEPARATOR,\n insertText: Const.INSERT_BTN_TEXT,\n deleteText: Const.DELETE_BTN_TEXT,\n saveText: Const.SAVE_BTN_TEXT,\n closeText: Const.CLOSE_BTN_TEXT,\n ignoreEditable: false,\n defaultSearch: '',\n insertModalHeader: undefined,\n insertModalBody: undefined,\n insertModalFooter: undefined,\n insertModal: undefined,\n insertBtn: undefined,\n deleteBtn: undefined,\n showSelectedOnlyBtn: undefined,\n exportCSVBtn: undefined,\n clearSearchBtn: undefined,\n searchField: undefined,\n searchPanel: undefined,\n btnGroup: undefined,\n toolBar: undefined,\n sizePerPageDropDown: undefined,\n paginationPanel: undefined,\n searchPosition: 'right',\n expandRowBgColor: undefined,\n expandBy: Const.EXPAND_BY_ROW,\n expanding: [],\n onExpand: undefined,\n onlyOneExpanding: false,\n expandBodyClass: null,\n expandParentClass: null,\n beforeShowError: undefined,\n printToolBar: true,\n insertFailIndicator: Const.INSERT_FAIL_INDICATOR,\n noAutoBOM: true\n },\n fetchInfo: {\n dataTotalSize: 0\n },\n exportCSV: false,\n csvFileName: 'spreadsheet.csv',\n ignoreSinglePage: false,\n autoCollapse: {\n sort: Const.AUTO_COLLAPSE_WHEN_SORT,\n filter: Const.AUTO_COLLAPSE_WHEN_FILTER,\n search: Const.AUTO_COLLAPSE_WHEN_SEARCH\n },\n footer: false\n};\n\nexport default BootstrapTable;\n\n\n\n// WEBPACK FOOTER //\n// src/BootstrapTable.js","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external {\"root\":\"React\",\"commonjs2\":\"react\",\"commonjs\":\"react\",\"amd\":\"react\"}\n// module id = 2\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n Symbol.for &&\n Symbol.for('react.element')) ||\n 0xeac7;\n\n var isValidElement = function(object) {\n return typeof object === 'object' &&\n object !== null &&\n object.$$typeof === REACT_ELEMENT_TYPE;\n };\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(isValidElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/prop-types/index.js\n// module id = 3\n// module chunks = 0","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/process/browser.js\n// module id = 4\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar checkPropTypes = require('./checkPropTypes');\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n invariant(\n false,\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n warning(\n false,\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `%s` prop on `%s`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.',\n propFullName,\n componentName\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunction.thatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n warning(\n false,\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received %s at index %s.',\n getPostfixForTypeWarning(checker),\n i\n );\n return emptyFunction.thatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/prop-types/factoryWithTypeCheckers.js\n// module id = 5\n// module chunks = 0","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\nfunction makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\n}\n\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/emptyFunction.js\n// module id = 6\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function validateFormat(format) {};\n\nif (process.env.NODE_ENV !== 'production') {\n validateFormat = function validateFormat(format) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n };\n}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\nmodule.exports = invariant;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/invariant.js\n// module id = 7\n// module chunks = 0","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar emptyFunction = require('./emptyFunction');\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = emptyFunction;\n\nif (process.env.NODE_ENV !== 'production') {\n var printWarning = function printWarning(format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n warning = function warning(condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (format.indexOf('Failed Composite propType: ') === 0) {\n return; // Ignore CompositeComponent proptype check.\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/warning.js\n// module id = 8\n// module chunks = 0","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/object-assign/index.js\n// module id = 9\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/prop-types/lib/ReactPropTypesSecret.js\n// module id = 10\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== 'production') {\n var invariant = require('fbjs/lib/invariant');\n var warning = require('fbjs/lib/warning');\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n invariant(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'the `prop-types` package, but received `%s`.', componentName || 'React class', location, typeSpecName, typeof typeSpecs[typeSpecName]);\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error);\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n warning(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : '');\n }\n }\n }\n }\n}\n\nmodule.exports = checkPropTypes;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/prop-types/checkPropTypes.js\n// module id = 11\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n invariant(\n false,\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim\n };\n\n ReactPropTypes.checkPropTypes = emptyFunction;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/prop-types/factoryWithThrowingShims.js\n// module id = 12\n// module chunks = 0","/*!\n Copyright (c) 2016 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tclasses.push(classNames.apply(null, arg));\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/classnames/index.js\n// module id = 13\n// module chunks = 0","module.exports = require('./dist/SAlert');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-s-alert/index.js\n// module id = 14\n// module chunks = 0","(function (global, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(['exports', 'react', './SAlertContent', 'prop-types', './s-alert-parts/s-alert-store', './s-alert-parts/s-alert-tools', './s-alert-parts/s-alert-data-prep'], factory);\n } else if (typeof exports !== \"undefined\") {\n factory(exports, require('react'), require('./SAlertContent'), require('prop-types'), require('./s-alert-parts/s-alert-store'), require('./s-alert-parts/s-alert-tools'), require('./s-alert-parts/s-alert-data-prep'));\n } else {\n var mod = {\n exports: {}\n };\n factory(mod.exports, global.react, global.SAlertContent, global.propTypes, global.sAlertStore, global.sAlertTools, global.sAlertDataPrep);\n global.SAlert = mod.exports;\n }\n})(this, function (exports, _react, _SAlertContent, _propTypes, _sAlertStore, _sAlertTools, _sAlertDataPrep) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _react2 = _interopRequireDefault(_react);\n\n var _SAlertContent2 = _interopRequireDefault(_SAlertContent);\n\n var _propTypes2 = _interopRequireDefault(_propTypes);\n\n var _sAlertStore2 = _interopRequireDefault(_sAlertStore);\n\n var _sAlertTools2 = _interopRequireDefault(_sAlertTools);\n\n var _sAlertDataPrep2 = _interopRequireDefault(_sAlertDataPrep);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var insertFunc = function insertFunc(msg, data, condition) {\n var id = _sAlertTools2.default.randomId();\n _sAlertStore2.default.dispatch({\n type: 'INSERT',\n data: Object.assign({}, data, {\n id: id,\n condition: condition,\n message: msg\n })\n });\n return id;\n };\n\n var SAlert = function (_React$Component) {\n _inherits(SAlert, _React$Component);\n\n function SAlert(props) {\n _classCallCheck(this, SAlert);\n\n var _this = _possibleConstructorReturn(this, (SAlert.__proto__ || Object.getPrototypeOf(SAlert)).call(this, props));\n\n _this.state = {\n dataRight: [],\n dataLeft: [],\n dataTop: [],\n dataBottom: []\n };\n return _this;\n }\n\n _createClass(SAlert, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _this2 = this;\n\n var storeStateLeft = void 0;\n var storeStateRight = void 0;\n var storeStateTop = void 0;\n var storeStateBottom = void 0;\n\n var addToStoreRight = function addToStoreRight() {\n var length = void 0;\n storeStateRight = (0, _sAlertDataPrep2.default)('right') || [];\n length = storeStateRight.length;\n if (_this2.props.stack && _this2.props.stack.limit && length > _this2.props.stack.limit) {\n var id = storeStateRight[0].id;\n _sAlertStore2.default.dispatch({ type: 'REMOVE', data: { id: id } });\n storeStateRight = (0, _sAlertDataPrep2.default)('right') || [];\n }\n _this2.setState({ dataRight: storeStateRight });\n };\n this.unsubStoreRight = _sAlertStore2.default.subscribe(addToStoreRight);\n\n var addToStoreLeft = function addToStoreLeft() {\n var length = void 0;\n storeStateLeft = (0, _sAlertDataPrep2.default)('left') || [];\n length = storeStateLeft.length;\n if (_this2.props.stack && _this2.props.stack.limit && length > _this2.props.stack.limit) {\n var id = storeStateLeft[0].id;\n _sAlertStore2.default.dispatch({ type: 'REMOVE', data: { id: id } });\n storeStateLeft = (0, _sAlertDataPrep2.default)('left') || [];\n }\n _this2.setState({ dataLeft: storeStateLeft });\n };\n this.unsubStoreLeft = _sAlertStore2.default.subscribe(addToStoreLeft);\n\n var addToStoreTop = function addToStoreTop() {\n var length = void 0;\n storeStateTop = (0, _sAlertDataPrep2.default)('full-top') || [];\n length = storeStateTop.length;\n if (_this2.props.stack && _this2.props.stack.limit && length > _this2.props.stack.limit) {\n var id = storeStateTop[0].id;\n _sAlertStore2.default.dispatch({ type: 'REMOVE', data: { id: id } });\n storeStateTop = (0, _sAlertDataPrep2.default)('full-top') || [];\n }\n _this2.setState({ dataTop: storeStateTop });\n };\n this.unsubStoreTop = _sAlertStore2.default.subscribe(addToStoreTop);\n\n var addToStoreBottom = function addToStoreBottom() {\n var length = void 0;\n storeStateBottom = (0, _sAlertDataPrep2.default)('full-bottom') || [];\n length = storeStateBottom.length;\n if (_this2.props.stack && _this2.props.stack.limit && length > _this2.props.stack.limit) {\n var id = storeStateBottom[0].id;\n _sAlertStore2.default.dispatch({ type: 'REMOVE', data: { id: id } });\n storeStateBottom = (0, _sAlertDataPrep2.default)('full-bottom') || [];\n }\n _this2.setState({ dataBottom: storeStateBottom });\n };\n this.unsubStoreBottom = _sAlertStore2.default.subscribe(addToStoreBottom);\n\n // set up global config from global SAlert props\n // only stuff needed for getAlertData\n var globalConfig = {\n contentTemplate: this.props.contentTemplate,\n offset: this.props.offset,\n message: this.props.message,\n stack: this.props.stack,\n html: this.props.html,\n customFields: this.props.customFields,\n position: this.props.position || 'top-right'\n };\n _sAlertTools2.default.setGlobalConfig(globalConfig);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.unsubStoreTop();\n this.unsubStoreBottom();\n this.unsubStoreLeft();\n this.unsubStoreRight();\n }\n }, {\n key: 'render',\n value: function render() {\n var _this3 = this;\n\n var mapFunc = function mapFunc(alert, index) {\n var customKey = 'alert-key-' + alert.id + '-' + alert.position;\n var id = alert.id;\n var condition = _sAlertTools2.default.returnFirstDefined(alert.condition, 'info');\n var message = _sAlertTools2.default.returnFirstDefined(alert.message, _this3.props.message, '');\n var position = _sAlertTools2.default.returnFirstDefined(alert.position, _this3.props.position, 'top-right');\n var offset = _sAlertTools2.default.returnFirstDefined(alert.offset, _this3.props.offset, 0);\n var effect = _sAlertTools2.default.returnFirstDefined(alert.effect, _this3.props.effect);\n var boxPosition = alert.boxPosition;\n var beep = _sAlertTools2.default.returnFirstDefined(alert.beep, _this3.props.beep, false);\n var timeout = _sAlertTools2.default.returnFirstDefined(alert.timeout, _this3.props.timeout, 5000);\n var html = _sAlertTools2.default.returnFirstDefined(alert.html, _this3.props.html);\n var onClose = _sAlertTools2.default.returnFirstDefined(alert.onClose, _this3.props.onClose);\n var onShow = _sAlertTools2.default.returnFirstDefined(alert.onShow, _this3.props.onShow);\n var customFields = _sAlertTools2.default.returnFirstDefined(alert.customFields, _this3.props.customFields);\n var contentTemplate = _this3.props.contentTemplate;\n return _react2.default.createElement(_SAlertContent2.default, {\n key: customKey,\n id: id,\n customFields: customFields,\n condition: condition,\n message: message,\n position: position,\n effect: effect,\n boxPosition: boxPosition,\n beep: beep,\n timeout: timeout,\n html: html,\n onClose: onClose,\n onShow: onShow,\n contentTemplate: contentTemplate });\n };\n var sAlertElemsRight = this.state.dataRight.map(mapFunc);\n var sAlertElemsLeft = this.state.dataLeft.map(mapFunc);\n var sAlertElemsTop = this.state.dataTop.map(mapFunc);\n var sAlertElemsBottom = this.state.dataBottom.map(mapFunc);\n return _react2.default.createElement(\n 'div',\n { className: 's-alert-wrapper' },\n sAlertElemsRight,\n sAlertElemsLeft,\n sAlertElemsTop,\n sAlertElemsBottom\n );\n }\n }], [{\n key: 'info',\n value: function info(msg, data) {\n return insertFunc(msg, data, 'info');\n }\n }, {\n key: 'error',\n value: function error(msg, data) {\n return insertFunc(msg, data, 'error');\n }\n }, {\n key: 'warning',\n value: function warning(msg, data) {\n return insertFunc(msg, data, 'warning');\n }\n }, {\n key: 'success',\n value: function success(msg, data) {\n return insertFunc(msg, data, 'success');\n }\n }, {\n key: 'close',\n value: function close(id) {\n _sAlertStore2.default.dispatch({ type: 'REMOVE', data: { id: id } });\n }\n }, {\n key: 'closeAll',\n value: function closeAll() {\n _sAlertStore2.default.dispatch({ type: 'REMOVEALL' });\n }\n }]);\n\n return SAlert;\n }(_react2.default.Component);\n\n SAlert.propTypes = {\n message: _propTypes2.default.string,\n position: _propTypes2.default.string,\n offset: _propTypes2.default.number,\n stack: _propTypes2.default.oneOfType([_propTypes2.default.bool, _propTypes2.default.object]),\n effect: _propTypes2.default.string,\n beep: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object, _propTypes2.default.bool]),\n timeout: _propTypes2.default.oneOfType([_propTypes2.default.oneOf(['none']), _propTypes2.default.number]),\n html: _propTypes2.default.bool,\n onClose: _propTypes2.default.func,\n onShow: _propTypes2.default.func,\n customFields: _propTypes2.default.object,\n contentTemplate: _propTypes2.default.func\n };\n\n exports.default = SAlert;\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-s-alert/dist/SAlert.js\n// module id = 15\n// module chunks = 0","(function (global, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(['exports', 'react', 'react-dom', 'prop-types', './s-alert-parts/s-alert-tools', './s-alert-parts/s-alert-store', './SAlertContentTmpl'], factory);\n } else if (typeof exports !== \"undefined\") {\n factory(exports, require('react'), require('react-dom'), require('prop-types'), require('./s-alert-parts/s-alert-tools'), require('./s-alert-parts/s-alert-store'), require('./SAlertContentTmpl'));\n } else {\n var mod = {\n exports: {}\n };\n factory(mod.exports, global.react, global.reactDom, global.propTypes, global.sAlertTools, global.sAlertStore, global.SAlertContentTmpl);\n global.SAlertContent = mod.exports;\n }\n})(this, function (exports, _react, _reactDom, _propTypes, _sAlertTools, _sAlertStore, _SAlertContentTmpl) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _react2 = _interopRequireDefault(_react);\n\n var _reactDom2 = _interopRequireDefault(_reactDom);\n\n var _propTypes2 = _interopRequireDefault(_propTypes);\n\n var _sAlertTools2 = _interopRequireDefault(_sAlertTools);\n\n var _sAlertStore2 = _interopRequireDefault(_sAlertStore);\n\n var _SAlertContentTmpl2 = _interopRequireDefault(_SAlertContentTmpl);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var SAlertContent = function (_React$Component) {\n _inherits(SAlertContent, _React$Component);\n\n function SAlertContent(props) {\n _classCallCheck(this, SAlertContent);\n\n return _possibleConstructorReturn(this, (SAlertContent.__proto__ || Object.getPrototypeOf(SAlertContent)).call(this, props));\n }\n\n _createClass(SAlertContent, [{\n key: 'handleCloseAlert',\n value: function handleCloseAlert() {\n var closingTimeout = void 0;\n var alertId = this.props.id;\n var currentAlertElem = _reactDom2.default.findDOMNode(this);\n var animationClose = function animationClose() {\n currentAlertElem.style.display = 'none';\n _sAlertStore2.default.dispatch({ type: 'REMOVE', data: { id: alertId } });\n clearTimeout(closingTimeout);\n };\n if (document.hidden || document.webkitHidden || !currentAlertElem.classList.contains('s-alert-is-effect')) {\n _sAlertStore2.default.dispatch({ type: 'REMOVE', data: { id: alertId } });\n } else {\n currentAlertElem.classList.remove('s-alert-show');\n closingTimeout = setTimeout(function () {\n currentAlertElem.classList.add('s-alert-hide');\n }, 100);\n currentAlertElem.removeEventListener('webkitAnimationEnd', animationClose, false);\n currentAlertElem.removeEventListener('animationend', animationClose, false);\n currentAlertElem.addEventListener('webkitAnimationEnd', animationClose, false);\n currentAlertElem.addEventListener('animationend', animationClose, false);\n }\n // stop audio when closing\n this.alertAudio && this.alertAudio.load();\n }\n }, {\n key: 'componentWillMount',\n value: function componentWillMount() {\n var beep = this.props.beep;\n var condition = this.props.condition;\n if (beep && typeof beep === 'string') {\n this.alertAudio = new Audio(beep);\n this.alertAudio.load();\n this.alertAudio.play();\n }\n if (beep && (typeof beep === 'undefined' ? 'undefined' : _typeof(beep)) === 'object' && condition === 'info') {\n this.alertAudio = new Audio(beep.info);\n this.alertAudio.load();\n this.alertAudio.play();\n }\n if (beep && (typeof beep === 'undefined' ? 'undefined' : _typeof(beep)) === 'object' && condition === 'error') {\n this.alertAudio = new Audio(beep.error);\n this.alertAudio.load();\n this.alertAudio.play();\n }\n if (beep && (typeof beep === 'undefined' ? 'undefined' : _typeof(beep)) === 'object' && condition === 'success') {\n this.alertAudio = new Audio(beep.success);\n this.alertAudio.load();\n this.alertAudio.play();\n }\n if (beep && (typeof beep === 'undefined' ? 'undefined' : _typeof(beep)) === 'object' && condition === 'warning') {\n this.alertAudio = new Audio(beep.warning);\n this.alertAudio.load();\n this.alertAudio.play();\n }\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _this2 = this;\n\n if (typeof this.props.timeout === 'number') {\n this.closeTimer = setTimeout(function () {\n _this2.handleCloseAlert();\n }, this.props.timeout);\n }\n if (this.props.onShow) {\n this.props.onShow();\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (this.closeTimer) {\n clearTimeout(this.closeTimer);\n }\n if (this.props.onClose) {\n this.props.onClose();\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var classNames = 's-alert-box s-alert-' + this.props.condition + ' s-alert-' + this.props.position + ' ' + (this.props.effect ? 's-alert-is-effect s-alert-effect-' + this.props.effect : '') + ' s-alert-show';\n var message = this.props.html ? _react2.default.createElement('span', { dangerouslySetInnerHTML: { __html: this.props.message } }) : this.props.message;\n var styles = this.props.boxPosition ? _sAlertTools2.default.styleToObj(this.props.boxPosition) : {};\n var id = this.props.id;\n var handleClose = this.handleCloseAlert.bind(this);\n var contentTemplate = this.props.contentTemplate || _SAlertContentTmpl2.default;\n var customFields = this.props.customFields || {};\n\n return _react2.default.createElement(contentTemplate, { classNames: classNames, id: id, styles: styles, message: message, handleClose: handleClose, customFields: customFields });\n }\n }]);\n\n return SAlertContent;\n }(_react2.default.Component);\n\n SAlertContent.propTypes = {\n condition: _propTypes2.default.string.isRequired,\n message: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.node]),\n position: _propTypes2.default.string.isRequired,\n boxPosition: _propTypes2.default.string,\n id: _propTypes2.default.string.isRequired,\n effect: _propTypes2.default.string,\n beep: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object, _propTypes2.default.bool]),\n timeout: _propTypes2.default.oneOfType([_propTypes2.default.oneOf(['none']), _propTypes2.default.number]),\n html: _propTypes2.default.bool,\n onClose: _propTypes2.default.func,\n onShow: _propTypes2.default.func,\n customFields: _propTypes2.default.object,\n contentTemplate: _propTypes2.default.func\n };\n\n exports.default = SAlertContent;\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-s-alert/dist/SAlertContent.js\n// module id = 16\n// module chunks = 0","module.exports = __WEBPACK_EXTERNAL_MODULE_17__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external {\"root\":\"ReactDOM\",\"commonjs2\":\"react-dom\",\"commonjs\":\"react-dom\",\"amd\":\"react-dom\"}\n// module id = 17\n// module chunks = 0","(function (global, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(['exports'], factory);\n } else if (typeof exports !== \"undefined\") {\n factory(exports);\n } else {\n var mod = {\n exports: {}\n };\n factory(mod.exports);\n global.sAlertTools = mod.exports;\n }\n})(this, function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n var actualGlobalConfig = void 0;\n\n var sAlertTools = {\n randomId: function randomId() {\n return Math.random().toString(36).split('.')[1];\n },\n returnFirstDefined: function returnFirstDefined() {\n var value = void 0;\n var i = void 0;\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n for (i = 0; i < args.length; i++) {\n if (typeof args[i] !== 'undefined') {\n value = args[i];\n break;\n }\n }\n return value;\n },\n styleToObj: function styleToObj(input) {\n var result = {},\n i = void 0,\n entry = void 0,\n attributes = input && input.split(';').filter(Boolean);\n\n for (i = 0; i < attributes.length; i++) {\n entry = attributes[i].split(':');\n result[entry.splice(0, 1)[0].trim()] = entry.join(':').trim();\n }\n return result;\n },\n setGlobalConfig: function setGlobalConfig(config) {\n if ((typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object') {\n actualGlobalConfig = config;\n }\n },\n getGlobalConfig: function getGlobalConfig() {\n return actualGlobalConfig;\n }\n };\n\n exports.default = sAlertTools;\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-s-alert/dist/s-alert-parts/s-alert-tools.js\n// module id = 18\n// module chunks = 0","(function (global, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(['exports'], factory);\n } else if (typeof exports !== \"undefined\") {\n factory(exports);\n } else {\n var mod = {\n exports: {}\n };\n factory(mod.exports);\n global.sAlertStore = mod.exports;\n }\n})(this, function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n function _toConsumableArray(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n } else {\n return Array.from(arr);\n }\n }\n\n // custom simple store based on a awesome Redux library https://github.com/rackt/redux\n\n var createSAlertStore = function createSAlertStore(reducer) {\n var state = void 0;\n var listeners = [];\n var getState = function getState() {\n return state;\n };\n var dispatch = function dispatch(action) {\n state = reducer(state, action);\n listeners.forEach(function (listener) {\n return listener();\n });\n };\n var subscribe = function subscribe(listener) {\n listeners.push(listener);\n return function () {\n listeners = listeners.filter(function (l) {\n return l !== listener;\n });\n };\n };\n dispatch({});\n return {\n getState: getState, dispatch: dispatch, subscribe: subscribe\n };\n };\n\n var insert = function insert(state, action) {\n return [].concat(_toConsumableArray(state), [action.data]);\n };\n\n var remove = function remove(state, action) {\n var elemToRemoveArray = state.slice().filter(function (item) {\n return item.id === action.data.id;\n });\n if (Array.isArray(elemToRemoveArray)) {\n var elemToRemoveIndex = state.indexOf(elemToRemoveArray[0]);\n return [].concat(_toConsumableArray(state.slice(0, elemToRemoveIndex)), _toConsumableArray(state.slice(elemToRemoveIndex + 1)));\n }\n return state;\n };\n\n var alertsReducer = function alertsReducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var action = arguments[1];\n\n switch (action.type) {\n case 'INSERT':\n return insert(state, action);\n case 'REMOVE':\n return remove(state, action);\n case 'REMOVEALL':\n return [];\n default:\n return state;\n }\n };\n\n var sAlertStore = createSAlertStore(alertsReducer);\n\n exports.default = sAlertStore;\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-s-alert/dist/s-alert-parts/s-alert-store.js\n// module id = 19\n// module chunks = 0","(function (global, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(['exports', 'react', 'prop-types'], factory);\n } else if (typeof exports !== \"undefined\") {\n factory(exports, require('react'), require('prop-types'));\n } else {\n var mod = {\n exports: {}\n };\n factory(mod.exports, global.react, global.propTypes);\n global.SAlertContentTmpl = mod.exports;\n }\n})(this, function (exports, _react, _propTypes) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _react2 = _interopRequireDefault(_react);\n\n var _propTypes2 = _interopRequireDefault(_propTypes);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var SAlertContentTmpl = function (_React$Component) {\n _inherits(SAlertContentTmpl, _React$Component);\n\n function SAlertContentTmpl(props) {\n _classCallCheck(this, SAlertContentTmpl);\n\n return _possibleConstructorReturn(this, (SAlertContentTmpl.__proto__ || Object.getPrototypeOf(SAlertContentTmpl)).call(this, props));\n }\n\n _createClass(SAlertContentTmpl, [{\n key: 'render',\n value: function render() {\n return _react2.default.createElement(\n 'div',\n { className: this.props.classNames, id: this.props.id, style: this.props.styles },\n _react2.default.createElement(\n 'div',\n { className: 's-alert-box-inner' },\n this.props.message\n ),\n _react2.default.createElement('span', { className: 's-alert-close', onClick: this.props.handleClose })\n );\n }\n }]);\n\n return SAlertContentTmpl;\n }(_react2.default.Component);\n\n SAlertContentTmpl.propTypes = {\n id: _propTypes2.default.string.isRequired,\n classNames: _propTypes2.default.string.isRequired,\n styles: _propTypes2.default.object.isRequired,\n message: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object]).isRequired,\n handleClose: _propTypes2.default.func.isRequired,\n customFields: _propTypes2.default.object\n };\n\n exports.default = SAlertContentTmpl;\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-s-alert/dist/SAlertContentTmpl.js\n// module id = 20\n// module chunks = 0","(function (global, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(['exports', 'react', 'react-dom', '../SAlertContent', './s-alert-store', './s-alert-tools'], factory);\n } else if (typeof exports !== \"undefined\") {\n factory(exports, require('react'), require('react-dom'), require('../SAlertContent'), require('./s-alert-store'), require('./s-alert-tools'));\n } else {\n var mod = {\n exports: {}\n };\n factory(mod.exports, global.react, global.reactDom, global.SAlertContent, global.sAlertStore, global.sAlertTools);\n global.sAlertDataPrep = mod.exports;\n }\n})(this, function (exports, _react, _reactDom, _SAlertContent, _sAlertStore, _sAlertTools) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _react2 = _interopRequireDefault(_react);\n\n var _reactDom2 = _interopRequireDefault(_reactDom);\n\n var _SAlertContent2 = _interopRequireDefault(_SAlertContent);\n\n var _sAlertStore2 = _interopRequireDefault(_sAlertStore);\n\n var _sAlertTools2 = _interopRequireDefault(_sAlertTools);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var getAlertData = function getAlertData(sAlertPosition) {\n var positionTop = 0;\n var positionBottom = 0;\n var padding = 0;\n var alerts = {};\n var style = void 0;\n var docElement = void 0;\n var sAlertBoxHeight = void 0;\n var positionTypeTop = void 0;\n var positionTypeBottom = void 0;\n var checkFirst = function checkFirst(type, objId) {\n var collectionOfType = sAlertCollection.filter(function (obj) {\n return obj.position === type || sAlertGlobalConfig.position === type;\n });\n return collectionOfType && collectionOfType[0].id === objId;\n };\n var positionFunc = function positionFunc(position, positionType, alert, docElement, sAlertBoxHeight, reactComponent) {\n padding = aStack.spacing || parseInt(getComputedStyle(_reactDom2.default.findDOMNode(reactComponent))[positionType]);\n if (checkFirst(aPosition, alert.id) && aOffset) {\n position = 0;\n position = position + parseInt(aOffset);\n }\n if (checkFirst(aPosition, alert.id) && aStack.spacing) {\n position = position;\n } else {\n position = position + parseInt(padding);\n }\n style = positionType + ': ' + position + 'px;';\n position = position + sAlertBoxHeight;\n return position;\n };\n\n var sAlertGlobalConfig = _sAlertTools2.default.getGlobalConfig();\n var aStack = void 0;\n var aContentTemplate = void 0;\n var aOffset = void 0;\n var aMessage = void 0;\n var aHtml = void 0;\n var aCustomFields = void 0;\n var aPosition = void 0;\n\n var query = {};\n if (sAlertPosition === 'left') {\n query = function query(item) {\n return item.position === 'top-left' || item.position === 'bottom-left' || !item.position && (sAlertGlobalConfig.position === 'top-left' || sAlertGlobalConfig.position === 'bottom-left');\n };\n }\n if (sAlertPosition === 'right') {\n query = function query(item) {\n return item.position === 'top-right' || item.position === 'bottom-right' || !item.position && (sAlertGlobalConfig.position === 'top-right' || sAlertGlobalConfig.position === 'bottom-right');\n };\n }\n if (sAlertPosition === 'full-top') {\n query = function query(item) {\n return item.position === 'top' || !item.position && sAlertGlobalConfig.position === 'top';\n };\n }\n if (sAlertPosition === 'full-bottom') {\n query = function query(item) {\n return item.position === 'bottom' || !item.position && sAlertGlobalConfig.position === 'bottom';\n };\n }\n\n var currentState = _sAlertStore2.default.getState();\n var sAlertCollection = currentState.slice().filter(query);\n\n return sAlertCollection.map(function (alert) {\n aStack = sAlertGlobalConfig.stack;\n aContentTemplate = sAlertGlobalConfig.contentTemplate;\n aOffset = _sAlertTools2.default.returnFirstDefined(alert.offset, sAlertGlobalConfig.offset);\n aMessage = _sAlertTools2.default.returnFirstDefined(alert.message, sAlertGlobalConfig.message);\n aHtml = _sAlertTools2.default.returnFirstDefined(alert.html, sAlertGlobalConfig.html);\n aCustomFields = _sAlertTools2.default.returnFirstDefined(alert.customFields, sAlertGlobalConfig.customFields);\n aPosition = _sAlertTools2.default.returnFirstDefined(alert.position, sAlertGlobalConfig.position);\n positionTypeTop = aPosition && /top/g.test(aPosition);\n positionTypeBottom = aPosition && /bottom/g.test(aPosition);\n if (aStack) {\n // checking alert box height - needed to calculate position\n docElement = document.createElement('div');\n docElement.classList.add('s-alert-box-height');\n\n // mock element, needed for positions calculations\n var reactElement = _react2.default.createElement(_SAlertContent2.default, {\n key: _sAlertTools2.default.randomId(),\n id: _sAlertTools2.default.randomId(),\n condition: alert.condition,\n message: aMessage,\n position: aPosition,\n effect: alert.effect,\n boxPosition: alert.boxPosition,\n beep: false,\n timeout: 'none',\n html: aHtml,\n contentTemplate: aContentTemplate,\n customFields: aCustomFields\n });\n var reactComponent = _reactDom2.default.render(reactElement, docElement);\n\n document.body.appendChild(docElement);\n sAlertBoxHeight = parseInt(getComputedStyle(_reactDom2.default.findDOMNode(reactComponent))['height']);\n if (positionTypeTop) {\n positionTop = positionFunc(positionTop, 'top', alert, docElement, sAlertBoxHeight, reactComponent);\n }\n if (positionTypeBottom) {\n positionBottom = positionFunc(positionBottom, 'bottom', alert, docElement, sAlertBoxHeight, reactComponent);\n }\n var sAlertComputedStyle = getComputedStyle(_reactDom2.default.findDOMNode(reactComponent));\n if (sAlertPosition === 'left') {\n style = style + 'left: ' + (aStack.spacing || parseInt(sAlertComputedStyle.left)) + 'px;';\n }\n if (sAlertPosition === 'right') {\n style = style + 'right: ' + (aStack.spacing || parseInt(sAlertComputedStyle.right)) + 'px;';\n }\n alerts = Object.assign({}, alert, { boxPosition: style });\n _reactDom2.default.unmountComponentAtNode(docElement);\n docElement.parentNode.removeChild(docElement);\n } else if (aOffset && positionTypeTop) {\n alerts = Object.assign({}, alert, { boxPosition: 'top: ' + parseInt(aOffset) + 'px;' });\n } else if (aOffset && positionTypeBottom) {\n alerts = Object.assign({}, alert, { boxPosition: 'bottom: ' + parseInt(aOffset) + 'px;' });\n } else {\n alerts = alert;\n }\n return alerts;\n });\n };\n\n exports.default = getAlertData;\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-s-alert/dist/s-alert-parts/s-alert-data-prep.js\n// module id = 21\n// module chunks = 0","const CONST_VAR = {\n SORT_DESC: 'desc',\n SORT_ASC: 'asc',\n AWAIT_BEFORE_CELL_EDIT: 1,\n SIZE_PER_PAGE: 10,\n NEXT_PAGE: '>',\n NEXT_PAGE_TITLE: 'next page',\n LAST_PAGE: '>>',\n LAST_PAGE_TITLE: 'last page',\n PRE_PAGE: '<',\n PRE_PAGE_TITLE: 'previous page',\n FIRST_PAGE: '<<',\n FIRST_PAGE_TITLE: 'first page',\n PAGE_START_INDEX: 1,\n ROW_SELECT_BG_COLOR: '',\n ROW_SELECT_NONE: 'none',\n ROW_SELECT_SINGLE: 'radio',\n ROW_SELECT_MULTI: 'checkbox',\n CELL_EDIT_NONE: 'none',\n CELL_EDIT_CLICK: 'click',\n CELL_EDIT_DBCLICK: 'dbclick',\n SIZE_PER_PAGE_LIST: [ 10, 25, 30, 50 ],\n PAGINATION_SIZE: 5,\n PAGINATION_POS_TOP: 'top',\n PAGINATION_POS_BOTTOM: 'bottom',\n PAGINATION_POS_BOTH: 'both',\n TOOLBAR_POS_TOP: 'top',\n TOOLBAR_POS_BOTTOM: 'bottom',\n TOOLBAR_POS_BOTH: 'both',\n NO_DATA_TEXT: 'There is no data to display',\n SHOW_ONLY_SELECT: 'Show Selected Only',\n SHOW_ALL: 'Show All',\n EXPORT_CSV_TEXT: 'Export to CSV',\n INSERT_BTN_TEXT: 'New',\n DELETE_BTN_TEXT: 'Delete',\n SAVE_BTN_TEXT: 'Save',\n CLOSE_BTN_TEXT: 'Close',\n FILTER_DELAY: 500,\n SCROLL_TOP: 'Top',\n SCROLL_BOTTOM: 'Bottom',\n FILTER_TYPE: {\n TEXT: 'TextFilter',\n REGEX: 'RegexFilter',\n SELECT: 'SelectFilter',\n NUMBER: 'NumberFilter',\n DATE: 'DateFilter',\n CUSTOM: 'CustomFilter',\n ARRAY: 'ArrayFilter'\n },\n FILTER_COND_EQ: 'eq',\n FILTER_COND_LIKE: 'like',\n EXPAND_BY_ROW: 'row',\n EXPAND_BY_COL: 'column',\n REMOTE_SORT: 'sort',\n REMOTE_PAGE: 'pagination',\n REMOTE_CELL_EDIT: 'cellEdit',\n REMOTE_INSERT_ROW: 'insertRow',\n REMOTE_DROP_ROW: 'dropRow',\n REMOTE_FILTER: 'filter',\n REMOTE_SEARCH: 'search',\n REMOTE_EXPORT_CSV: 'exportCSV',\n INSERT_FAIL_INDICATOR: 'Validation errors, please check!',\n DEFAULT_CSV_SEPARATOR: ',',\n CSV_STRING_TYPE: 'string',\n CSV_NUMBER_TYPE: 'number',\n AUTO_COLLAPSE_WHEN_SORT: false,\n AUTO_COLLAPSE_WHEN_SEARCH: false,\n AUTO_COLLAPSE_WHEN_FILTER: false\n};\n\nCONST_VAR.REMOTE = {};\nCONST_VAR.REMOTE[CONST_VAR.REMOTE_SORT] = false;\nCONST_VAR.REMOTE[CONST_VAR.REMOTE_PAGE] = false;\nCONST_VAR.REMOTE[CONST_VAR.REMOTE_CELL_EDIT] = false;\nCONST_VAR.REMOTE[CONST_VAR.REMOTE_INSERT_ROW] = false;\nCONST_VAR.REMOTE[CONST_VAR.REMOTE_DROP_ROW] = false;\nCONST_VAR.REMOTE[CONST_VAR.REMOTE_FILTER] = false;\nCONST_VAR.REMOTE[CONST_VAR.REMOTE_SEARCH] = false;\nCONST_VAR.REMOTE[CONST_VAR.REMOTE_EXPORT_CSV] = false;\n\nexport default CONST_VAR;\n\n\n\n// WEBPACK FOOTER //\n// src/Const.js","/* eslint default-case: 0 */\n/* eslint guard-for-in: 0 */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classSet from 'classnames';\nimport Const from './Const';\nimport Util from './util';\nimport DateFilter from './filters/Date';\nimport TextFilter from './filters/Text';\nimport RegexFilter from './filters/Regex';\nimport SelectFilter from './filters/Select';\nimport NumberFilter from './filters/Number';\n\nclass TableHeaderColumn extends Component {\n\n constructor(props) {\n super(props);\n this.handleFilter = this.handleFilter.bind(this);\n }\n\n componentWillReceiveProps(nextProps) {\n if (nextProps.reset) {\n this.cleanFiltered();\n }\n\n // If column not displaying the same dataField, reset the filter accordingly\n if (nextProps.filter && nextProps.dataField !== this.props.dataField) {\n const emitter = nextProps.filter.emitter || {};\n const currentFilter = emitter.currentFilter || {};\n const filter = currentFilter[nextProps.dataField];\n const value = filter ? filter.value : '';\n\n const { ref } = this.getFilters() || {};\n if (this.refs[ref]) {\n this.refs[ref].setState({ value });\n }\n }\n }\n\n handleColumnClick = () => {\n if (this.props.isOnlyHead || !this.props.dataSort) return;\n let { sort: order } = this.props;\n if (!order && this.props.defaultASC) order = Const.SORT_ASC;\n else order = this.props.sort === Const.SORT_DESC ? Const.SORT_ASC : Const.SORT_DESC;\n this.props.onSort(order, this.props.dataField);\n }\n\n handleFilter(value, type) {\n const { filter } = this.props;\n filter.emitter.handleFilter(this.props.dataField, value, type, filter);\n }\n\n getFilters() {\n const { headerText, children } = this.props;\n switch (this.props.filter.type) {\n case Const.FILTER_TYPE.TEXT: {\n return (\n \n );\n }\n case Const.FILTER_TYPE.REGEX: {\n return (\n \n );\n }\n case Const.FILTER_TYPE.SELECT: {\n return (\n \n );\n }\n case Const.FILTER_TYPE.NUMBER: {\n return (\n \n );\n }\n case Const.FILTER_TYPE.DATE: {\n return (\n \n );\n }\n case Const.FILTER_TYPE.CUSTOM: {\n const elm = this.props.filter.getElement(this.handleFilter,\n this.props.filter.customFilterParameters);\n\n return React.cloneElement(elm, { ref: 'customFilter' });\n }\n }\n }\n\n componentDidMount() {\n this.refs['header-col'].setAttribute('data-field', this.props.dataField);\n }\n\n renderDefaultCaret(dataSort, isBootstrap4) {\n if (!dataSort) return null;\n if (isBootstrap4) {\n return (\n \n );\n } else {\n return (\n \n \n \n \n \n \n \n \n );\n }\n }\n\n render() {\n let defaultCaret;\n let sortCaret;\n let sortClass;\n const {\n headerText,\n dataAlign,\n dataField,\n headerAlign,\n headerTitle,\n hidden,\n sort,\n dataSort,\n sortIndicator,\n children,\n caretRender,\n className,\n isOnlyHead,\n version,\n sortHeaderColumnClassName: customSortClass,\n thStyle: style\n } = this.props;\n const thStyle = {\n textAlign: headerAlign || dataAlign,\n display: hidden ? 'none' : null,\n ...style\n };\n const isBootstrap4 = Util.isBootstrap4(version);\n if (!isOnlyHead) {\n if (sortIndicator) {\n defaultCaret = this.renderDefaultCaret(dataSort, isBootstrap4);\n }\n sortCaret = sort ? Util.renderReactSortCaret(sort, isBootstrap4) : defaultCaret;\n if (caretRender) {\n sortCaret = caretRender(sort, dataField);\n }\n }\n\n if (sort) {\n sortClass = Util.isFunction(customSortClass) ?\n customSortClass(sort, dataField) : customSortClass;\n }\n const classes = classSet(\n Util.isFunction(className) ? className() : className,\n !isOnlyHead && dataSort ? 'sort-column' : '',\n sortClass);\n\n const attr = {};\n if (headerTitle) {\n if (typeof children === 'string' && !headerText) {\n attr.title = children;\n } else {\n attr.title = headerText;\n }\n }\n return (\n \n { children }{ sortCaret }\n e.stopPropagation() }>\n { this.props.filter && !isOnlyHead ? this.getFilters() : null }\n \n | \n );\n }\n\n cleanFiltered() {\n if (!this.props.filter) return;\n\n switch (this.props.filter.type) {\n case Const.FILTER_TYPE.TEXT: {\n this.refs.textFilter.cleanFiltered();\n break;\n }\n case Const.FILTER_TYPE.REGEX: {\n this.refs.regexFilter.cleanFiltered();\n break;\n }\n case Const.FILTER_TYPE.SELECT: {\n this.refs.selectFilter.cleanFiltered();\n break;\n }\n case Const.FILTER_TYPE.NUMBER: {\n this.refs.numberFilter.cleanFiltered();\n break;\n }\n case Const.FILTER_TYPE.DATE: {\n this.refs.dateFilter.cleanFiltered();\n break;\n }\n case Const.FILTER_TYPE.CUSTOM: {\n this.refs.customFilter.cleanFiltered();\n break;\n }\n }\n }\n\n applyFilter(val) {\n if (!this.props.filter) return;\n switch (this.props.filter.type) {\n case Const.FILTER_TYPE.TEXT: {\n this.refs.textFilter.applyFilter(val);\n break;\n }\n case Const.FILTER_TYPE.REGEX: {\n this.refs.regexFilter.applyFilter(val);\n break;\n }\n case Const.FILTER_TYPE.SELECT: {\n this.refs.selectFilter.applyFilter(val);\n break;\n }\n case Const.FILTER_TYPE.NUMBER: {\n this.refs.numberFilter.applyFilter(val);\n break;\n }\n case Const.FILTER_TYPE.DATE: {\n this.refs.dateFilter.applyFilter(val);\n break;\n }\n }\n }\n}\n\nconst filterTypeArray = [];\nfor (const key in Const.FILTER_TYPE) {\n filterTypeArray.push(Const.FILTER_TYPE[key]);\n}\n\nTableHeaderColumn.propTypes = {\n dataField: PropTypes.string,\n dataAlign: PropTypes.string,\n headerAlign: PropTypes.string,\n headerTitle: PropTypes.bool,\n headerText: PropTypes.string,\n dataSort: PropTypes.bool,\n onSort: PropTypes.func,\n dataFormat: PropTypes.func,\n csvFormat: PropTypes.func,\n csvHeader: PropTypes.string,\n csvFieldType: PropTypes.oneOf([ Const.CSV_STRING_TYPE, Const.CSV_NUMBER_TYPE ]),\n isKey: PropTypes.bool,\n editable: PropTypes.any,\n hidden: PropTypes.bool,\n hiddenOnInsert: PropTypes.bool,\n searchable: PropTypes.bool,\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func\n ]),\n width: PropTypes.string,\n sortFunc: PropTypes.func,\n sortFuncExtraData: PropTypes.any,\n sortHeaderColumnClassName: PropTypes.any,\n columnClassName: PropTypes.any,\n editColumnClassName: PropTypes.any,\n invalidEditColumnClassName: PropTypes.any,\n columnTitle: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.func,\n PropTypes.string\n ]),\n filterFormatted: PropTypes.bool,\n filterValue: PropTypes.func,\n sort: PropTypes.string,\n caretRender: PropTypes.func,\n formatExtraData: PropTypes.any,\n csvFormatExtraData: PropTypes.any,\n filter: PropTypes.shape({\n type: PropTypes.oneOf(filterTypeArray),\n delay: PropTypes.number,\n options: PropTypes.oneOfType([\n PropTypes.object, // for SelectFilter\n PropTypes.arrayOf(PropTypes.number) // for NumberFilter\n ]),\n numberComparators: PropTypes.arrayOf(PropTypes.string),\n emitter: PropTypes.object,\n placeholder: PropTypes.string,\n getElement: PropTypes.func,\n customFilterParameters: PropTypes.object,\n condition: PropTypes.oneOf([ Const.FILTER_COND_EQ, Const.FILTER_COND_LIKE ])\n }),\n sortIndicator: PropTypes.bool,\n export: PropTypes.bool,\n expandable: PropTypes.bool,\n tdAttr: PropTypes.object,\n editTdAttr: PropTypes.object,\n tdStyle: PropTypes.oneOfType([ PropTypes.func, PropTypes.object ]),\n thStyle: PropTypes.object,\n keyValidator: PropTypes.bool,\n defaultASC: PropTypes.bool\n};\n\nTableHeaderColumn.defaultProps = {\n dataAlign: 'left',\n headerAlign: undefined,\n headerTitle: true,\n dataSort: false,\n dataFormat: undefined,\n csvFormat: undefined,\n csvHeader: undefined,\n csvFieldType: Const.CSV_STRING_TYPE,\n isKey: false,\n editable: true,\n onSort: undefined,\n hidden: false,\n hiddenOnInsert: false,\n searchable: true,\n className: '',\n columnTitle: false,\n width: null,\n sortFunc: undefined,\n columnClassName: '',\n editColumnClassName: '',\n invalidEditColumnClassName: '',\n filterFormatted: false,\n filterValue: undefined,\n sort: undefined,\n formatExtraData: undefined,\n sortFuncExtraData: undefined,\n filter: undefined,\n sortIndicator: true,\n expandable: true,\n tdAttr: undefined,\n editTdAttr: undefined,\n tdStyle: undefined,\n thStyle: undefined,\n keyValidator: false,\n defaultASC: false\n};\n\nexport default TableHeaderColumn;\n\n\n\n// WEBPACK FOOTER //\n// src/TableHeaderColumn.js","/* eslint react/display-name: 0 */\nimport React from 'react';\nimport Const from './Const';\nimport classSet from 'classnames';\n\nexport default {\n renderReactSortCaret(order, isBootstrap4) {\n let orderClass;\n if (isBootstrap4) {\n orderClass = classSet('fa', {\n 'fa-sort-asc': order === Const.SORT_ASC,\n 'fa-sort-desc': order === Const.SORT_DESC\n });\n return (\n \n );\n } else {\n orderClass = classSet('order', {\n 'dropup': order === Const.SORT_ASC\n });\n return (\n \n \n \n );\n }\n },\n\n isFunction(obj) {\n return obj && (typeof obj === 'function');\n },\n\n getScrollBarWidth() {\n const inner = document.createElement('p');\n inner.style.width = '100%';\n inner.style.height = '200px';\n\n const outer = document.createElement('div');\n outer.style.position = 'absolute';\n outer.style.top = '0px';\n outer.style.left = '0px';\n outer.style.visibility = 'hidden';\n outer.style.width = '200px';\n outer.style.height = '150px';\n outer.style.overflow = 'hidden';\n outer.appendChild(inner);\n\n document.body.appendChild(outer);\n const w1 = inner.getBoundingClientRect().width;\n outer.style.overflow = 'scroll';\n let w2 = inner.getBoundingClientRect().width;\n\n if (w1 === w2) w2 = outer.clientWidth;\n\n document.body.removeChild(outer);\n\n return (w1 - w2);\n },\n\n canUseDOM() {\n return typeof window !== 'undefined' && typeof window.document !== 'undefined';\n },\n\n // We calculate an offset here in order to properly fetch the indexed data,\n // despite the page start index not always being 1\n getNormalizedPage(pageStartIndex, page) {\n pageStartIndex = this.getFirstPage(pageStartIndex);\n if (page === undefined) page = pageStartIndex;\n const offset = Math.abs(Const.PAGE_START_INDEX - pageStartIndex);\n return page + offset;\n },\n\n getFirstPage(pageStartIndex) {\n return pageStartIndex !== undefined ? pageStartIndex : Const.PAGE_START_INDEX;\n },\n\n isBootstrap4(version) {\n return version === '4';\n },\n\n isSelectRowDefined(mode) {\n return mode === Const.ROW_SELECT_SINGLE || mode === Const.ROW_SELECT_MULTI;\n },\n\n renderColGroup(columns, selectRow, expandColumnOptions = {}, version) {\n let selectRowHeader = null;\n let expandRowHeader = null;\n const isBootstrap4 = this.isBootstrap4(version);\n const isSelectRowDefined = this.isSelectRowDefined(selectRow.mode);\n const columnWidth = isBootstrap4 ? '38px' : '30px';\n if (isSelectRowDefined) {\n const style = {\n width: selectRow.columnWidth || columnWidth,\n minWidth: selectRow.columnWidth || columnWidth\n };\n if (!selectRow.hideSelectColumn) {\n selectRowHeader = ();\n }\n }\n if (expandColumnOptions.expandColumnVisible) {\n const style = {\n width: expandColumnOptions.columnWidth || columnWidth,\n minWidth: expandColumnOptions.columnWidth || columnWidth\n };\n expandRowHeader = ();\n }\n const theader = columns.map(function(column, i) {\n const style = {\n display: column.hidden ? 'none' : null\n };\n if (column.width) {\n const width = !isNaN(column.width) ? column.width + 'px' : column.width;\n style.width = width;\n /** add min-wdth to fix user assign column width\n not eq offsetWidth in large column table **/\n style.minWidth = width;\n }\n return ();\n });\n\n return (\n \n { expandColumnOptions.expandColumnVisible &&\n expandColumnOptions.expandColumnBeforeSelectColumn &&\n expandRowHeader }\n { selectRowHeader }\n { expandColumnOptions.expandColumnVisible &&\n !expandColumnOptions.expandColumnBeforeSelectColumn &&\n expandRowHeader }\n { theader }\n \n );\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// src/util.js","/* eslint quotes: 0 */\n/* eslint max-len: 0 */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Const from '../Const';\n\nconst legalComparators = [ '=', '>', '>=', '<', '<=', '!=' ];\n\nfunction dateParser(d) {\n return `${d.getFullYear()}-${(\"0\" + (d.getMonth() + 1)).slice(-2)}-${(\"0\" + d.getDate()).slice(-2)}`;\n}\n\nclass DateFilter extends Component {\n constructor(props) {\n super(props);\n this.dateComparators = this.props.dateComparators || legalComparators;\n this.filter = this.filter.bind(this);\n this.onChangeComparator = this.onChangeComparator.bind(this);\n }\n\n setDefaultDate() {\n let defaultDate = '';\n const { defaultValue } = this.props;\n if (defaultValue && defaultValue.date) {\n // Set the appropriate format for the input type=date, i.e. \"YYYY-MM-DD\"\n defaultDate = dateParser(new Date(defaultValue.date));\n }\n return defaultDate;\n }\n\n onChangeComparator(event) {\n let date = this.refs.inputDate.value;\n const comparator = event.target.value;\n if (date === '') {\n return;\n }\n date = new Date(date);\n this.props.filterHandler({ date, comparator }, Const.FILTER_TYPE.DATE);\n }\n\n getComparatorOptions() {\n const optionTags = [];\n optionTags.push();\n for (let i = 0; i < this.dateComparators.length; i++) {\n optionTags.push(\n \n );\n }\n return optionTags;\n }\n\n filter(event) {\n const comparator = this.refs.dateFilterComparator.value;\n const dateValue = event.target.value;\n if (dateValue) {\n this.props.filterHandler({ date: new Date(dateValue), comparator }, Const.FILTER_TYPE.DATE);\n } else {\n this.props.filterHandler(null, Const.FILTER_TYPE.DATE);\n }\n }\n\n cleanFiltered() {\n const value = this.setDefaultDate();\n const comparator = (this.props.defaultValue) ? this.props.defaultValue.comparator : '';\n this.setState(() => { return { isPlaceholderSelected: (value === '') }; });\n this.refs.dateFilterComparator.value = comparator;\n this.refs.inputDate.value = value;\n this.props.filterHandler({ date: new Date(value), comparator }, Const.FILTER_TYPE.DATE);\n }\n\n applyFilter(filterDateObj) {\n const { date, comparator } = filterDateObj;\n this.setState(() => { return { isPlaceholderSelected: (date === '') }; });\n this.refs.dateFilterComparator.value = comparator;\n this.refs.inputDate.value = dateParser(date);\n this.props.filterHandler({ date, comparator }, Const.FILTER_TYPE.DATE);\n }\n\n componentDidMount() {\n const comparator = this.refs.dateFilterComparator.value;\n const dateValue = this.refs.inputDate.value;\n if (comparator && dateValue) {\n this.props.filterHandler({ date: new Date(dateValue), comparator }, Const.FILTER_TYPE.DATE);\n }\n }\n\n render() {\n const { defaultValue, style: { date, comparator } } = this.props;\n return (\n \n \n \n
\n );\n }\n}\n\nDateFilter.propTypes = {\n filterHandler: PropTypes.func.isRequired,\n defaultValue: PropTypes.shape({\n date: PropTypes.object,\n comparator: PropTypes.oneOf(legalComparators)\n }),\n style: PropTypes.shape({\n date: PropTypes.oneOfType([ PropTypes.object ]),\n comparator: PropTypes.oneOfType([ PropTypes.object ])\n }),\n /* eslint consistent-return: 0 */\n dateComparators: function(props, propName) {\n if (!props[propName]) {\n return;\n }\n for (let i = 0; i < props[propName].length; i++) {\n let comparatorIsValid = false;\n for (let j = 0; j < legalComparators.length; j++) {\n if (legalComparators[j] === props[propName][i]) {\n comparatorIsValid = true;\n break;\n }\n }\n if (!comparatorIsValid) {\n return new Error(`Date comparator provided is not supported.\n Use only ${legalComparators}`);\n }\n }\n },\n columnName: PropTypes.any\n};\n\nDateFilter.defaultProps = {\n style: {\n date: null,\n comparator: null\n }\n};\n\n\nexport default DateFilter;\n\n\n\n// WEBPACK FOOTER //\n// src/filters/Date.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Const from '../Const';\n\nclass TextFilter extends Component {\n constructor(props) {\n super(props);\n this.filter = this.filter.bind(this);\n this.timeout = null;\n this.state = {\n value: this.props.defaultValue || ''\n };\n }\n\n filter(event) {\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n const filterValue = event.target.value;\n this.setState(() => { return { value: filterValue }; });\n this.timeout = setTimeout(() => {\n this.props.filterHandler(filterValue, Const.FILTER_TYPE.TEXT);\n }, this.props.delay);\n }\n\n cleanFiltered() {\n const value = this.props.defaultValue ? this.props.defaultValue : '';\n this.setState(() => { return { value }; });\n this.props.filterHandler(value, Const.FILTER_TYPE.TEXT);\n }\n\n applyFilter(filterText) {\n this.setState(() => { return { value: filterText }; });\n this.props.filterHandler(filterText, Const.FILTER_TYPE.TEXT);\n }\n\n componentDidMount() {\n const defaultValue = this.refs.inputText.value;\n if (defaultValue) {\n this.props.filterHandler(defaultValue, Const.FILTER_TYPE.TEXT);\n }\n }\n\n componentWillReceiveProps(nextProps) {\n if (nextProps.defaultValue !== this.props.defaultValue) {\n this.applyFilter(nextProps.defaultValue || '');\n }\n }\n\n componentWillUnmount() {\n clearTimeout(this.timeout);\n }\n\n render() {\n const { placeholder, columnName, style } = this.props;\n return (\n \n );\n }\n}\n\nTextFilter.propTypes = {\n filterHandler: PropTypes.func.isRequired,\n defaultValue: PropTypes.string,\n delay: PropTypes.number,\n placeholder: PropTypes.string,\n columnName: PropTypes.any,\n style: PropTypes.oneOfType([ PropTypes.object ])\n};\n\nTextFilter.defaultProps = {\n delay: Const.FILTER_DELAY\n};\n\nexport default TextFilter;\n\n\n\n// WEBPACK FOOTER //\n// src/filters/Text.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Const from '../Const';\n\nclass RegexFilter extends Component {\n constructor(props) {\n super(props);\n this.filter = this.filter.bind(this);\n this.timeout = null;\n }\n\n filter(event) {\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n const filterValue = event.target.value;\n this.timeout = setTimeout(() => {\n this.props.filterHandler(filterValue, Const.FILTER_TYPE.REGEX);\n }, this.props.delay);\n }\n\n cleanFiltered() {\n const value = this.props.defaultValue ? this.props.defaultValue : '';\n this.refs.inputText.value = value;\n this.props.filterHandler(value, Const.FILTER_TYPE.TEXT);\n }\n\n applyFilter(filterRegx) {\n this.refs.inputText.value = filterRegx;\n this.props.filterHandler(filterRegx, Const.FILTER_TYPE.REGEX);\n }\n\n componentDidMount() {\n const value = this.refs.inputText.value;\n if (value) {\n this.props.filterHandler(value, Const.FILTER_TYPE.REGEX);\n }\n }\n\n componentWillUnmount() {\n clearTimeout(this.timeout);\n }\n\n render() {\n const { defaultValue, placeholder, columnName, style } = this.props;\n return (\n \n );\n }\n}\n\nRegexFilter.propTypes = {\n filterHandler: PropTypes.func.isRequired,\n defaultValue: PropTypes.string,\n delay: PropTypes.number,\n placeholder: PropTypes.string,\n columnName: PropTypes.any,\n style: PropTypes.oneOfType([ PropTypes.object ])\n};\n\nRegexFilter.defaultProps = {\n delay: Const.FILTER_DELAY\n};\n\nexport default RegexFilter;\n\n\n\n// WEBPACK FOOTER //\n// src/filters/Regex.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classSet from 'classnames';\nimport Const from '../Const';\n\nfunction optionsEquals(options1, options2) {\n const keys = Object.keys(options1);\n for (const k in keys) {\n if (options1[k] !== options2[k]) {\n return false;\n }\n }\n return Object.keys(options1).length === Object.keys(options2).length;\n}\n\nclass SelectFilter extends Component {\n constructor(props) {\n super(props);\n this.filter = this.filter.bind(this);\n this.state = {\n isPlaceholderSelected: (this.props.defaultValue === undefined ||\n !this.props.options.hasOwnProperty(this.props.defaultValue))\n };\n }\n\n componentWillReceiveProps() {\n const currentSelectValue = this.refs.selectInput.value;\n const isPlaceholderSelected = !currentSelectValue || currentSelectValue === '';\n this.setState(() => {\n return {\n isPlaceholderSelected\n };\n });\n }\n\n componentDidUpdate(prevProps) {\n let needFilter = false;\n if (this.props.defaultValue !== prevProps.defaultValue) {\n needFilter = true;\n } else if (!optionsEquals(this.props.options, prevProps.options)) {\n needFilter = true;\n }\n if (needFilter) {\n const value = this.refs.selectInput.value;\n if (value) {\n this.props.filterHandler(value, Const.FILTER_TYPE.SELECT);\n }\n }\n }\n\n filter(event) {\n const { value } = event.target;\n this.setState(() => { return { isPlaceholderSelected: (value === '') }; });\n this.props.filterHandler(value, Const.FILTER_TYPE.SELECT);\n }\n\n cleanFiltered() {\n const value = (this.props.defaultValue !== undefined) ? this.props.defaultValue : '';\n this.setState(() => { return { isPlaceholderSelected: (value === '') }; });\n this.refs.selectInput.value = value;\n this.props.filterHandler(value, Const.FILTER_TYPE.SELECT);\n }\n\n applyFilter(filterOption) {\n filterOption = filterOption + '';\n this.setState(() => { return { isPlaceholderSelected: (filterOption === '') }; });\n this.refs.selectInput.value = filterOption;\n this.props.filterHandler(filterOption, Const.FILTER_TYPE.SELECT);\n }\n\n getOptions() {\n const optionTags = [];\n const { options, placeholder, columnName, selectText, withoutEmptyOption } = this.props;\n const selectTextValue = (selectText !== undefined) ? selectText : 'Select';\n if (!withoutEmptyOption) {\n optionTags.push((\n \n ));\n }\n Object.keys(options).map(key => {\n optionTags.push();\n });\n return optionTags;\n }\n\n componentDidMount() {\n const value = this.refs.selectInput.value;\n if (value) {\n this.props.filterHandler(value, Const.FILTER_TYPE.SELECT);\n }\n }\n\n render() {\n const selectClass = classSet('filter', 'select-filter', 'form-control',\n { 'placeholder-selected': this.state.isPlaceholderSelected });\n\n return (\n \n );\n }\n}\n\nSelectFilter.propTypes = {\n filterHandler: PropTypes.func.isRequired,\n options: PropTypes.object.isRequired,\n placeholder: PropTypes.string,\n columnName: PropTypes.any,\n style: PropTypes.oneOfType([ PropTypes.object ])\n};\n\nexport default SelectFilter;\n\n\n\n// WEBPACK FOOTER //\n// src/filters/Select.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classSet from 'classnames';\nimport Const from '../Const';\n\nconst legalComparators = [ '=', '>', '>=', '<', '<=', '!=' ];\n\nclass NumberFilter extends Component {\n constructor(props) {\n super(props);\n this.numberComparators = this.props.numberComparators || legalComparators;\n this.timeout = null;\n this.state = {\n isPlaceholderSelected: (this.props.defaultValue === undefined ||\n this.props.defaultValue.number === undefined ||\n (this.props.options &&\n this.props.options.indexOf(this.props.defaultValue.number) === -1))\n };\n this.onChangeNumber = this.onChangeNumber.bind(this);\n this.onChangeNumberSet = this.onChangeNumberSet.bind(this);\n this.onChangeComparator = this.onChangeComparator.bind(this);\n }\n\n onChangeNumber(event) {\n const comparator = this.refs.numberFilterComparator.value;\n if (comparator === '') {\n return;\n }\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n const filterValue = event.target.value;\n this.timeout = setTimeout(() => {\n this.props.filterHandler({ number: filterValue, comparator }, Const.FILTER_TYPE.NUMBER);\n }, this.props.delay);\n }\n\n onChangeNumberSet(event) {\n const comparator = this.refs.numberFilterComparator.value;\n const { value } = event.target;\n this.setState(() => { return { isPlaceholderSelected: (value === '') }; });\n if (comparator === '') {\n return;\n }\n this.props.filterHandler({ number: value, comparator }, Const.FILTER_TYPE.NUMBER);\n }\n\n onChangeComparator(event) {\n const value = this.refs.numberFilter.value;\n const comparator = event.target.value;\n if (value === '') {\n return;\n }\n this.props.filterHandler({ number: value, comparator }, Const.FILTER_TYPE.NUMBER);\n }\n\n cleanFiltered() {\n const value = (this.props.defaultValue) ? this.props.defaultValue.number : '';\n const comparator = (this.props.defaultValue) ? this.props.defaultValue.comparator : '';\n this.setState(() => { return { isPlaceholderSelected: (value === '') }; });\n this.refs.numberFilterComparator.value = comparator;\n this.refs.numberFilter.value = value;\n this.props.filterHandler({ number: value, comparator }, Const.FILTER_TYPE.NUMBER);\n }\n\n applyFilter(filterObj) {\n const { number, comparator } = filterObj;\n this.setState(() => { return { isPlaceholderSelected: (number === '') }; });\n this.refs.numberFilterComparator.value = comparator;\n this.refs.numberFilter.value = number;\n this.props.filterHandler({ number, comparator }, Const.FILTER_TYPE.NUMBER);\n }\n\n getComparatorOptions() {\n const optionTags = [];\n const { withoutEmptyComparatorOption } = this.props;\n if (!withoutEmptyComparatorOption) {\n optionTags.push();\n }\n for (let i = 0; i < this.numberComparators.length; i++) {\n optionTags.push(\n \n );\n }\n return optionTags;\n }\n\n getNumberOptions() {\n const optionTags = [];\n const { options, withoutEmptyNumberOption } = this.props;\n if (!withoutEmptyNumberOption) {\n optionTags.push(\n \n );\n }\n for (let i = 0; i < options.length; i++) {\n optionTags.push();\n }\n return optionTags;\n }\n\n componentDidMount() {\n const comparator = this.refs.numberFilterComparator.value;\n const number = this.refs.numberFilter.value;\n if (comparator && number) {\n this.props.filterHandler({ number, comparator }, Const.FILTER_TYPE.NUMBER);\n }\n }\n\n componentWillUnmount() {\n clearTimeout(this.timeout);\n }\n\n render() {\n const selectClass = classSet(\n 'select-filter', 'number-filter-input', 'form-control',\n { 'placeholder-selected': this.state.isPlaceholderSelected });\n\n return (\n \n \n {\n (this.props.options) ?\n :\n \n }\n
\n );\n }\n}\n\nNumberFilter.propTypes = {\n filterHandler: PropTypes.func.isRequired,\n options: PropTypes.arrayOf(PropTypes.number),\n defaultValue: PropTypes.shape({\n number: PropTypes.number,\n comparator: PropTypes.oneOf(legalComparators)\n }),\n style: PropTypes.shape({\n number: PropTypes.oneOfType([ PropTypes.object ]),\n comparator: PropTypes.oneOfType([ PropTypes.object ])\n }),\n delay: PropTypes.number,\n /* eslint consistent-return: 0 */\n numberComparators: function(props, propName) {\n if (!props[propName]) {\n return;\n }\n for (let i = 0; i < props[propName].length; i++) {\n let comparatorIsValid = false;\n for (let j = 0; j < legalComparators.length; j++) {\n if (legalComparators[j] === props[propName][i]) {\n comparatorIsValid = true;\n break;\n }\n }\n if (!comparatorIsValid) {\n return new Error(`Number comparator provided is not supported.\n Use only ${legalComparators}`);\n }\n }\n },\n placeholder: PropTypes.string,\n columnName: PropTypes.any,\n withoutEmptyComparatorOption: PropTypes.bool,\n withoutEmptyNumberOption: PropTypes.bool\n};\n\nNumberFilter.defaultProps = {\n delay: Const.FILTER_DELAY,\n withoutEmptyComparatorOption: false,\n withoutEmptyNumberOption: false,\n style: {\n number: null,\n comparator: null\n }\n};\n\nexport default NumberFilter;\n\n\n\n// WEBPACK FOOTER //\n// src/filters/Number.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport Const from './Const';\nimport classSet from 'classnames';\nimport SelectRowHeaderColumn from './SelectRowHeaderColumn';\nimport ExpandRowHeaderColumn from './ExpandRowHeaderColumn';\nimport Utils from './util';\n\nclass Checkbox extends Component {\n componentDidMount() { this.update(this.props.checked); }\n componentWillReceiveProps(props) { this.update(props.checked); }\n update(checked) {\n ReactDOM.findDOMNode(this).indeterminate = checked === 'indeterminate';\n }\n render() {\n return (\n \n );\n }\n}\n\nfunction getSortOrder(sortList, field, enableSort) {\n if (!enableSort) return undefined;\n const result = sortList.filter(sortObj => {\n return sortObj.sortField === field;\n });\n if (result.length > 0) {\n return result[0].order;\n } else {\n return undefined;\n }\n}\n\nclass TableHeader extends Component {\n\n render() {\n const { sortIndicator, sortList, onSort, reset, version, condensed, bordered } = this.props;\n const containerClasses = classSet(\n 'react-bs-container-header',\n 'table-header-wrapper',\n this.props.headerContainerClass);\n const customTableClasses = {\n 'table-bordered': bordered\n };\n if (condensed) {\n if (Utils.isBootstrap4(version)) customTableClasses['table-sm'] = true;\n else customTableClasses['table-condensed'] = true;\n }\n const tableClasses = classSet(\n 'table', 'table-hover', customTableClasses, this.props.tableHeaderClass);\n\n const rowCount = Math.max(...React.Children.map(this.props.children, elm =>\n (elm && elm.props.row) ? Number(elm.props.row) : 0\n ));\n\n const rows = [];\n let rowKey = 0;\n\n rows[0] = [];\n rows[0].push( [\n this.props.expandColumnVisible &&\n this.props.expandColumnBeforeSelectColumn &&\n \n ], [\n this.renderSelectRowHeader(rowCount + 1, rowKey++)\n ], [\n this.props.expandColumnVisible &&\n !this.props.expandColumnBeforeSelectColumn &&\n \n ]);\n\n React.Children.forEach(this.props.children, (elm) => {\n if (elm === null || elm === undefined) {\n // Skip null or undefined elements.\n return;\n }\n const { dataField, dataSort } = elm.props;\n const sort = getSortOrder(sortList, dataField, dataSort);\n const rowIndex = elm.props.row ? Number(elm.props.row) : 0;\n const rowSpan = elm.props.rowSpan ? Number(elm.props.rowSpan) : 1;\n if (rows[rowIndex] === undefined) {\n rows[rowIndex] = [];\n }\n if ((rowSpan + rowIndex) === (rowCount + 1)) {\n rows[rowIndex].push(React.cloneElement(\n elm, { reset, key: rowKey++, onSort, sort, sortIndicator, isOnlyHead: false, version }\n ));\n } else {\n rows[rowIndex].push(React.cloneElement(\n elm, { key: rowKey++, isOnlyHead: true, version }\n ));\n }\n });\n\n const trs = rows.map((row, indexRow)=>{\n return (\n \n { row }\n
\n );\n });\n\n return (\n \n
\n { React.cloneElement(this.props.colGroups, { ref: 'headerGrp' }) }\n \n { trs }\n \n
\n
\n );\n }\n\n getHeaderColGrouop = () => {\n return this.refs.headerGrp.childNodes;\n }\n\n renderSelectRowHeader(rowCount, rowKey) {\n if (this.props.hideSelectColumn) {\n return null;\n } else if (this.props.customComponent) {\n const CustomComponent = this.props.customComponent;\n return (\n \n \n \n );\n } else if (this.props.rowSelectType === Const.ROW_SELECT_SINGLE) {\n return ();\n } else if (this.props.rowSelectType === Const.ROW_SELECT_MULTI) {\n return (\n \n \n \n );\n } else {\n return null;\n }\n }\n}\nTableHeader.propTypes = {\n headerContainerClass: PropTypes.string,\n tableHeaderClass: PropTypes.string,\n style: PropTypes.object,\n rowSelectType: PropTypes.string,\n onSort: PropTypes.func,\n onSelectAllRow: PropTypes.func,\n sortList: PropTypes.array,\n hideSelectColumn: PropTypes.bool,\n bordered: PropTypes.bool,\n condensed: PropTypes.bool,\n isFiltered: PropTypes.bool,\n isSelectAll: PropTypes.oneOf([ true, 'indeterminate', false ]),\n sortIndicator: PropTypes.bool,\n customComponent: PropTypes.func,\n colGroups: PropTypes.element,\n reset: PropTypes.bool,\n expandColumnVisible: PropTypes.bool,\n expandColumnComponent: PropTypes.func,\n expandColumnBeforeSelectColumn: PropTypes.bool,\n version: PropTypes.string\n};\n\nexport default TableHeader;\n\n\n\n// WEBPACK FOOTER //\n// src/TableHeader.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nclass SelectRowHeaderColumn extends Component {\n\n render() {\n return (\n \n { this.props.children }\n | \n );\n }\n}\nSelectRowHeaderColumn.propTypes = {\n children: PropTypes.node,\n rowCount: PropTypes.number\n};\nexport default SelectRowHeaderColumn;\n\n\n\n// WEBPACK FOOTER //\n// src/SelectRowHeaderColumn.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nclass ExpandRowHeaderColumn extends Component {\n\n render() {\n return (\n \n { this.props.children }\n | \n );\n }\n}\nExpandRowHeaderColumn.propTypes = {\n children: PropTypes.node,\n rowCount: PropTypes.number\n};\nexport default ExpandRowHeaderColumn;\n\n\n\n// WEBPACK FOOTER //\n// src/ExpandRowHeaderColumn.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classSet from 'classnames';\n\nclass TableFooter extends Component {\n\n render() {\n const { hideSelectColumn, expandColumnVisible } = this.props;\n const containerClasses = classSet('react-bs-container-footer', 'table-footer-wrapper');\n const tableClasses = classSet('table', 'table-hover', {\n 'table-bordered': this.props.bordered,\n 'table-condensed': this.props.condensed\n }, this.props.tableFooterClass);\n return (\n \n {\n this.props.children.map((footerItem, footerItemIndex) => {\n return (\n
\n \n { React.cloneElement(this.props.colGroups) }\n \n \n { hideSelectColumn ? null : this.renderSelectionOrExpandCol() }\n { !expandColumnVisible ? null : this.renderSelectionOrExpandCol() }\n {\n this.props.columns.map((columnItem, colIndex) => {\n if ( !columnItem.hidden ) {\n const footerObj = footerItem.filter((item) => {\n return item.columnIndex === colIndex;\n });\n let footerData;\n let thAlignment = 'left';\n if (footerObj.length) {\n thAlignment = footerObj[0].align;\n if (footerObj[0].formatter) {\n footerData = footerObj[0].formatter(\n this.props.footerFormatterReturnData\n );\n } else {\n footerData = footerObj[0].label;\n }\n } else {\n footerData = '';\n }\n return (\n \n {\n footerData\n }\n | \n );\n }\n })\n }\n
\n \n
\n \n );\n })\n }\n
\n );\n }\n\n renderSelectionOrExpandCol() {\n return ( | );\n }\n}\nTableFooter.propTypes = {\n tableHeaderClass: PropTypes.string,\n style: PropTypes.object,\n hideSelectColumn: PropTypes.bool,\n expandColumnVisible: PropTypes.bool,\n bordered: PropTypes.bool,\n condensed: PropTypes.bool,\n isFiltered: PropTypes.bool,\n sortIndicator: PropTypes.bool\n};\n\nexport default TableFooter;\n\n\n\n// WEBPACK FOOTER //\n// src/TableFooter.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Utils from './util';\nimport Const from './Const';\nimport TableRow from './TableRow';\nimport TableColumn from './TableColumn';\nimport TableEditColumn from './TableEditColumn';\nimport classSet from 'classnames';\nimport ExpandComponent from './ExpandComponent';\n\nclass TableBody extends Component {\n constructor(props) {\n super(props);\n this.state = {\n currEditCell: null\n };\n }\n\n render() {\n const { cellEdit, beforeShowError, x, y, keyBoardNav, trStyle, version } = this.props;\n const customTableClasses = {\n 'table-striped': this.props.striped,\n 'table-bordered': this.props.bordered,\n 'table-hover': this.props.hover\n };\n if (this.props.condensed) {\n if (Utils.isBootstrap4(version)) customTableClasses['table-sm'] = true;\n else customTableClasses['table-condensed'] = true;\n }\n const tableClasses = classSet('table', customTableClasses, this.props.tableBodyClass);\n\n const noneditableRows = (cellEdit.nonEditableRows && cellEdit.nonEditableRows()) || [];\n const unselectable = this.props.selectRow.unselectable || [];\n const isSelectRowDefined = Utils.isSelectRowDefined(this.props.selectRow.mode);\n const tableHeader = Utils.renderColGroup(this.props.columns,\n this.props.selectRow, this.props.expandColumnOptions, version);\n const inputType = this.props.selectRow.mode === Const.ROW_SELECT_SINGLE ? 'radio' : 'checkbox';\n const CustomComponent = this.props.selectRow.customComponent;\n const enableKeyBoardNav = (keyBoardNav === true || typeof keyBoardNav === 'object');\n const customEditAndNavStyle = typeof keyBoardNav === 'object' ?\n keyBoardNav.customStyleOnEditCell :\n null;\n const customNavStyle = typeof keyBoardNav === 'object' ?\n keyBoardNav.customStyle :\n null;\n const ExpandColumnCustomComponent = this.props.expandColumnOptions.expandColumnComponent;\n let expandColSpan = this.props.columns.filter(col => col && !col.hidden).length;\n if (isSelectRowDefined && !this.props.selectRow.hideSelectColumn) {\n expandColSpan += 1;\n }\n let tabIndex = 1;\n if (this.props.expandColumnOptions.expandColumnVisible) {\n expandColSpan += 1;\n }\n\n let tableRows = this.props.data.map(function(data, r) {\n const tableColumns = this.props.columns.filter(_ => _ != null).map(function(column, i) {\n const fieldValue = data[column.name];\n const isFocusCell = r === y && i === x;\n if (column.name !== this.props.keyField && // Key field can't be edit\n column.editable && // column is editable? default is true, user can set it false\n column.editable.readOnly !== true &&\n this.state.currEditCell !== null &&\n this.state.currEditCell.rid === r &&\n this.state.currEditCell.cid === i &&\n noneditableRows.indexOf(data[this.props.keyField]) === -1) {\n let editable = column.editable;\n const format = column.format ? function(value) {\n return column.format(value, data, column.formatExtraData, r).replace(/<.*?>/g, '');\n } : false;\n if (Utils.isFunction(column.editable)) {\n editable = column.editable(fieldValue, data, r, i);\n }\n\n return (\n \n );\n } else {\n // add by bluespring for className customize\n let formattedValue;\n let columnChild = fieldValue && fieldValue.toString();\n let columnTitle = null;\n let tdClassName = column.className;\n let tdStyles = column.style;\n if (Utils.isFunction(column.className)) {\n tdClassName = column.className(fieldValue, data, r, i);\n }\n\n if (Utils.isFunction(column.style)) {\n tdStyles = column.style(fieldValue, data, r, i);\n }\n\n if (typeof column.format !== 'undefined') {\n formattedValue = column.format(fieldValue, data, column.formatExtraData, r);\n if (!React.isValidElement(formattedValue)) {\n columnChild = (\n \n );\n } else {\n columnChild = formattedValue;\n }\n }\n if (Utils.isFunction(column.columnTitle)) {\n columnTitle = column.columnTitle(fieldValue, data, r, i);\n } else if (typeof column.columnTitle === 'string') {\n columnTitle = column.columnTitle;\n } else if (column.columnTitle) {\n if (formattedValue) columnTitle = formattedValue.toString();\n else if (fieldValue) columnTitle = fieldValue.toString();\n }\n return (\n \n { columnChild }\n \n );\n }\n }, this);\n const key = data[this.props.keyField];\n const disable = unselectable.indexOf(key) !== -1;\n const selected = this.props.selectedRowKeys.indexOf(key) !== -1;\n const selectRowColumn = isSelectRowDefined && !this.props.selectRow.hideSelectColumn ?\n this.renderSelectRowColumn(selected, inputType, disable, CustomComponent, r, data) : null;\n const expandedRowColumn = this.renderExpandRowColumn(\n this.props.expandableRow && this.props.expandableRow(data),\n this.props.expanding.indexOf(key) > -1,\n ExpandColumnCustomComponent, r\n );\n const haveExpandContent = this.props.expandableRow && this.props.expandableRow(data);\n const isExpanding = haveExpandContent && this.props.expanding.indexOf(key) > -1;\n\n // add by bluespring for className customize\n let trClassName = this.props.trClassName;\n if (Utils.isFunction(this.props.trClassName)) {\n trClassName = this.props.trClassName(data, r);\n }\n if (isExpanding && this.props.expandParentClass) {\n trClassName += Utils.isFunction(this.props.expandParentClass) ?\n this.props.expandParentClass(data, r) :\n this.props.expandParentClass;\n }\n const result = [ \n { this.props.expandColumnOptions.expandColumnVisible &&\n this.props.expandColumnOptions.expandColumnBeforeSelectColumn &&\n expandedRowColumn }\n { selectRowColumn }\n { this.props.expandColumnOptions.expandColumnVisible &&\n !this.props.expandColumnOptions.expandColumnBeforeSelectColumn &&\n expandedRowColumn }\n { tableColumns }\n ];\n\n if (haveExpandContent) {\n const expandBodyClass = Utils.isFunction(this.props.expandBodyClass) ?\n this.props.expandBodyClass(data, r, isExpanding) :\n this.props.expandBodyClass;\n result.push(\n \n { this.props.expandComponent(data) }\n \n );\n }\n return (result);\n }, this);\n\n if (tableRows.length === 0 && !this.props.withoutNoDataText) {\n const colSpan = this.props.columns.filter(c => !c.hidden).length\n + ((isSelectRowDefined && !this.props.selectRow.hideSelectColumn) ? 1 : 0)\n + (this.props.expandColumnOptions.expandColumnVisible ? 1 : 0);\n tableRows = [\n \n \n { this.props.noDataText || Const.NO_DATA_TEXT }\n | \n \n ];\n }\n\n return (\n \n
\n { React.cloneElement(tableHeader, { ref: 'header' }) }\n \n { tableRows }\n \n
\n
\n );\n }\n\n handleCellKeyDown = (e, lastEditCell) => {\n e.preventDefault();\n const { keyBoardNav, onNavigateCell, cellEdit } = this.props;\n let offset;\n if (e.keyCode === 37) {\n offset = { x: -1, y: 0 };\n } else if (e.keyCode === 38) {\n offset = { x: 0, y: -1 };\n } else if (e.keyCode === 39 || e.keyCode === 9) {\n offset = { x: 1, y: 0 };\n if (e.keyCode === 9 && lastEditCell) {\n offset = {\n ...offset,\n lastEditCell\n };\n }\n } else if (e.keyCode === 40) {\n offset = { x: 0, y: 1 };\n } else if (e.keyCode === 13) {\n const enterToEdit = typeof keyBoardNav === 'object' ?\n keyBoardNav.enterToEdit :\n false;\n const enterToExpand = typeof keyBoardNav === 'object' ?\n keyBoardNav.enterToExpand :\n false;\n\n if (cellEdit && enterToEdit) {\n this.handleEditCell(e.target.parentElement.rowIndex + 1,\n e.currentTarget.cellIndex, '', e);\n }\n\n if (enterToExpand) {\n this.handleClickCell(this.props.y + 1, this.props.x);\n }\n }\n if (offset && keyBoardNav) {\n onNavigateCell(offset);\n }\n }\n\n handleRowMouseOut = (rowIndex, event) => {\n const targetRow = this.props.data[rowIndex];\n this.props.onRowMouseOut(targetRow, event);\n }\n\n handleRowMouseOver = (rowIndex, event) => {\n const targetRow = this.props.data[rowIndex];\n this.props.onRowMouseOver(targetRow, event);\n }\n\n handleRowClick = (rowIndex, cellIndex) => {\n const { onRowClick, selectRow } = this.props;\n if (Utils.isSelectRowDefined(selectRow.mode)) cellIndex--;\n if (this._isExpandColumnVisible()) cellIndex--;\n onRowClick(this.props.data[rowIndex - 1], rowIndex - 1, cellIndex);\n }\n\n handleRowDoubleClick = rowIndex => {\n const { onRowDoubleClick } = this.props;\n const targetRow = this.props.data[rowIndex];\n onRowDoubleClick(targetRow);\n }\n\n handleSelectRow = (rowIndex, isSelected, e) => {\n let selectedRow;\n const { data, onSelectRow } = this.props;\n data.forEach((row, i) => {\n if (i === rowIndex - 1) {\n selectedRow = row;\n return false;\n }\n });\n onSelectRow(selectedRow, isSelected, e, rowIndex - 1);\n }\n\n handleSelectRowColumChange = (e, rowIndex) => {\n if (!this.props.selectRow.clickToSelect ||\n !this.props.selectRow.clickToSelectAndEditCell) {\n this.handleSelectRow(\n rowIndex + 1,\n e.currentTarget.checked,\n e);\n }\n }\n\n handleClickCell = (rowIndex, columnIndex = -1) => {\n const {\n columns,\n keyField,\n expandBy,\n expandableRow,\n selectRow: {\n mode,\n clickToExpand,\n hideSelectColumn\n },\n onlyOneExpanding\n } = this.props;\n const isSelectRowDefined = Utils.isSelectRowDefined(mode);\n const selectRowAndExpand = isSelectRowDefined && !clickToExpand ? false : true;\n columnIndex = isSelectRowDefined && !hideSelectColumn ? columnIndex - 1 : columnIndex;\n columnIndex = this._isExpandColumnVisible() ? columnIndex - 1 : columnIndex;\n if (expandableRow &&\n selectRowAndExpand &&\n (expandBy === Const.EXPAND_BY_ROW ||\n /* Below will allow expanding trigger by clicking on selection column\n if configure as expanding by column */\n (expandBy === Const.EXPAND_BY_COL && columnIndex < 0) ||\n (expandBy === Const.EXPAND_BY_COL && columns[columnIndex].expandable))) {\n let expanding = this.props.expanding;\n const rowKey = this.props.data[rowIndex - 1][keyField];\n const isRowExpanding = expanding.indexOf(rowKey) > -1;\n\n if (isRowExpanding) { // collapse\n expanding = expanding.filter(k => k !== rowKey);\n } else { // expand\n if (onlyOneExpanding) expanding = [ rowKey ];\n else expanding.push(rowKey);\n }\n this.props.onExpand(expanding, rowKey, isRowExpanding);\n }\n }\n\n handleEditCell = (rowIndex, columnIndex, action, e) => {\n const { selectRow } = this.props;\n const defineSelectRow = Utils.isSelectRowDefined(selectRow.mode);\n const expandColumnVisible = this._isExpandColumnVisible();\n if (defineSelectRow) {\n columnIndex--;\n if (selectRow.hideSelectColumn) columnIndex++;\n }\n if (expandColumnVisible) {\n columnIndex--;\n }\n rowIndex--;\n\n if (action === 'tab') {\n if (defineSelectRow && !selectRow.hideSelectColumn) columnIndex++;\n if (expandColumnVisible) columnIndex++;\n this.handleCompleteEditCell(e.target.value, rowIndex, columnIndex - 1);\n if (columnIndex >= this.props.columns.length) {\n this.handleCellKeyDown(e, true);\n } else {\n this.handleCellKeyDown(e);\n }\n const { nextRIndex, nextCIndex } = this.nextEditableCell(rowIndex, columnIndex);\n rowIndex = nextRIndex;\n columnIndex = nextCIndex;\n }\n\n const stateObj = {\n currEditCell: {\n rid: rowIndex,\n cid: columnIndex\n }\n };\n\n if (this.props.selectRow.clickToSelectAndEditCell &&\n this.props.cellEdit.mode !== Const.CELL_EDIT_DBCLICK) {\n const selected = this.props.selectedRowKeys.indexOf(\n this.props.data[rowIndex][this.props.keyField]) !== -1;\n this.handleSelectRow(rowIndex + 1, !selected, e);\n }\n this.setState(() => stateObj);\n }\n\n nextEditableCell = (rIndex, cIndex) => {\n const { keyField } = this.props;\n let nextRIndex = rIndex;\n let nextCIndex = cIndex;\n let row;\n let column;\n do {\n if (nextCIndex >= this.props.columns.length) {\n nextRIndex++;\n nextCIndex = 0;\n }\n row = this.props.data[nextRIndex];\n column = this.props.columns[nextCIndex];\n if (!row) break;\n let editable = column.editable;\n if (Utils.isFunction(column.editable)) {\n editable = column.editable(column, row, nextRIndex, nextCIndex);\n }\n if (editable && editable.readOnly !== true &&\n !column.hidden && keyField !== column.name) {\n break;\n } else {\n nextCIndex++;\n }\n } while (row);\n return { nextRIndex, nextCIndex };\n }\n\n handleCompleteEditCell = (newVal, rowIndex, columnIndex) => {\n if (newVal !== null) {\n const result = this.props.onEditCell(newVal, rowIndex, columnIndex);\n if (result !== Const.AWAIT_BEFORE_CELL_EDIT) {\n this.setState(() => { return { currEditCell: null }; });\n }\n } else {\n this.setState(() => { return { currEditCell: null }; });\n }\n }\n\n cancelEditCell = () => {\n this.setState(() => { return { currEditCell: null }; });\n }\n\n handleClickonSelectColumn = (e, isSelect, rowIndex, row) => {\n e.stopPropagation();\n if (e.target.tagName === 'TD' &&\n (this.props.selectRow.clickToSelect || this.props.selectRow.clickToSelectAndEditCell)) {\n const unselectable = this.props.selectRow.unselectable || [];\n if (unselectable.indexOf(row[this.props.keyField]) === -1) {\n this.handleSelectRow(rowIndex + 1, isSelect, e);\n this.handleClickCell(rowIndex + 1);\n }\n }\n }\n\n renderSelectRowColumn(selected, inputType, disabled,\n CustomComponent = null, rowIndex = null, row) {\n return (\n {\n this.handleClickonSelectColumn(e, !selected, rowIndex, row);\n } } style={ { textAlign: 'center' } }>\n { CustomComponent ?\n this.handleSelectRowColumChange(e, rowIndex) }/> :\n this.handleSelectRowColumChange(e, rowIndex) }/>\n }\n | \n );\n }\n\n renderExpandRowColumn(isExpandableRow, isExpanded, CustomComponent, rowIndex = null) {\n let content = null;\n if (CustomComponent) {\n content = ();\n } else if (isExpandableRow) {\n content = (isExpanded ? () :\n () );\n } else {\n content = ' ';\n }\n\n return (\n this.handleClickCell(rowIndex + 1) }>\n { content }\n | \n );\n }\n\n _isExpandColumnVisible() {\n return this.props.expandColumnOptions.expandColumnVisible;\n }\n\n getHeaderColGrouop = () => {\n return this.refs.header.childNodes;\n }\n}\nTableBody.propTypes = {\n version: PropTypes.string,\n data: PropTypes.array,\n columns: PropTypes.array,\n striped: PropTypes.bool,\n bordered: PropTypes.bool,\n hover: PropTypes.bool,\n condensed: PropTypes.bool,\n keyField: PropTypes.string,\n selectedRowKeys: PropTypes.array,\n onRowClick: PropTypes.func,\n onRowDoubleClick: PropTypes.func,\n onSelectRow: PropTypes.func,\n noDataText: PropTypes.oneOfType([ PropTypes.string, PropTypes.object ]),\n withoutNoDataText: PropTypes.bool,\n style: PropTypes.object,\n tableBodyClass: PropTypes.string,\n bodyContainerClass: PropTypes.string,\n expandableRow: PropTypes.func,\n expandComponent: PropTypes.func,\n expandRowBgColor: PropTypes.string,\n expandBy: PropTypes.string,\n expanding: PropTypes.array,\n onExpand: PropTypes.func,\n expandBodyClass: PropTypes.oneOfType([ PropTypes.string, PropTypes.func ]),\n expandParentClass: PropTypes.oneOfType([ PropTypes.string, PropTypes.func ]),\n onlyOneExpanding: PropTypes.bool,\n beforeShowError: PropTypes.func,\n keyBoardNav: PropTypes.oneOfType([ PropTypes.bool, PropTypes.object ]),\n x: PropTypes.number,\n y: PropTypes.number,\n onNavigateCell: PropTypes.func,\n withoutTabIndex: PropTypes.bool\n};\nexport default TableBody;\n\n\n\n// WEBPACK FOOTER //\n// src/TableBody.js","/* eslint no-nested-ternary: 0 */\nimport classSet from 'classnames';\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Utils from './util';\n\nclass TableRow extends Component {\n\n constructor(props) {\n super(props);\n this.clickNum = 0;\n }\n\n rowClick = e => {\n const rowIndex = this.props.index + 1;\n const cellIndex = e.target.cellIndex;\n if (this.props.onRowClick) this.props.onRowClick(rowIndex, cellIndex);\n const {\n selectRow, unselectableRow, isSelected, onSelectRow, onExpandRow, dbClickToEdit\n } = this.props;\n if (selectRow) {\n if (selectRow.clickToSelect && !unselectableRow) {\n onSelectRow(rowIndex, !isSelected, e);\n } else if (selectRow.clickToSelectAndEditCell && !unselectableRow) {\n this.clickNum++;\n /** if clickToSelectAndEditCell is enabled,\n * there should be a delay to prevent a selection changed when\n * user dblick to edit cell on same row but different cell\n **/\n setTimeout(() => {\n if (this.clickNum === 1) {\n onSelectRow(rowIndex, !isSelected, e);\n onExpandRow(rowIndex, cellIndex);\n }\n this.clickNum = 0;\n }, 200);\n } else {\n if (dbClickToEdit) {\n this.expandRow(rowIndex, cellIndex);\n }\n }\n }\n }\n\n expandRow = (rowIndex, cellIndex) => {\n this.clickNum++;\n setTimeout(() => {\n if (this.clickNum === 1) {\n this.props.onExpandRow(rowIndex, cellIndex);\n }\n this.clickNum = 0;\n }, 200);\n }\n\n rowDoubleClick = e => {\n if (e.target.tagName !== 'INPUT' &&\n e.target.tagName !== 'SELECT' &&\n e.target.tagName !== 'TEXTAREA') {\n if (this.props.onRowDoubleClick) {\n this.props.onRowDoubleClick(this.props.index);\n }\n }\n }\n\n rowMouseOut = e => {\n const rowIndex = this.props.index;\n if (this.props.onRowMouseOut) {\n this.props.onRowMouseOut(rowIndex, e);\n }\n }\n\n rowMouseOver = e => {\n const rowIndex = this.props.index;\n if (this.props.onRowMouseOver) {\n this.props.onRowMouseOver(rowIndex, e);\n }\n }\n\n render() {\n this.clickNum = 0;\n const { selectRow, row, isSelected, className, index } = this.props;\n let { style } = this.props;\n let backgroundColor = null;\n let selectRowClass = null;\n\n if (selectRow) {\n backgroundColor = Utils.isFunction(selectRow.bgColor) ?\n selectRow.bgColor(row, isSelected) : ( isSelected ? selectRow.bgColor : null);\n\n selectRowClass = Utils.isFunction(selectRow.className) ?\n selectRow.className(row, isSelected) : ( isSelected ? selectRow.className : null);\n }\n\n if (Utils.isFunction(style)) {\n style = style(row, index);\n } else {\n style = { ...style } || {};\n }\n // the bgcolor of row selection always overwrite the bgcolor defined by global.\n if (style && backgroundColor && isSelected) {\n style.backgroundColor = backgroundColor;\n }\n const trCss = {\n style: { ...style },\n className: classSet(selectRowClass, className)\n };\n\n return (\n { this.props.children }
\n );\n }\n}\nTableRow.propTypes = {\n index: PropTypes.number,\n row: PropTypes.any,\n style: PropTypes.any,\n isSelected: PropTypes.bool,\n enableCellEdit: PropTypes.bool,\n onRowClick: PropTypes.func,\n onRowDoubleClick: PropTypes.func,\n onSelectRow: PropTypes.func,\n onExpandRow: PropTypes.func,\n onRowMouseOut: PropTypes.func,\n onRowMouseOver: PropTypes.func,\n unselectableRow: PropTypes.bool\n};\nTableRow.defaultProps = {\n onRowClick: undefined,\n onRowDoubleClick: undefined\n};\nexport default TableRow;\n\n\n\n// WEBPACK FOOTER //\n// src/TableRow.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport Const from './Const';\nimport Util from './util';\n\nclass TableColumn extends Component {\n\n constructor(props) {\n super(props);\n }\n /* eslint no-unused-vars: [0, { \"args\": \"after-used\" }] */\n shouldComponentUpdate(nextProps, nextState) {\n const { children } = this.props;\n let shouldUpdated = this.props.width !== nextProps.width\n || this.props.className !== nextProps.className\n || this.props.hidden !== nextProps.hidden\n || this.props.dataAlign !== nextProps.dataAlign\n || this.props.isFocus !== nextProps.isFocus\n || typeof children !== typeof nextProps.children\n || ('' + this.props.onEdit).toString() !== ('' + nextProps.onEdit).toString();\n\n if (shouldUpdated) {\n return shouldUpdated;\n }\n\n if (typeof children === 'object' && children !== null && children.props !== null) {\n if (children.props.type === 'checkbox' || children.props.type === 'radio') {\n shouldUpdated = shouldUpdated ||\n children.props.type !== nextProps.children.props.type ||\n children.props.checked !== nextProps.children.props.checked ||\n children.props.disabled !== nextProps.children.props.disabled;\n } else {\n shouldUpdated = true;\n }\n } else {\n shouldUpdated = shouldUpdated || children !== nextProps.children;\n }\n\n if (shouldUpdated) {\n return shouldUpdated;\n }\n\n if (!(this.props.cellEdit && nextProps.cellEdit)) {\n return false;\n } else {\n return shouldUpdated\n || this.props.cellEdit.mode !== nextProps.cellEdit.mode;\n }\n }\n\n componentDidMount() {\n const dom = ReactDOM.findDOMNode(this);\n if (this.props.isFocus) {\n dom.focus();\n } else {\n dom.blur();\n }\n }\n\n componentDidUpdate() {\n const dom = ReactDOM.findDOMNode(this);\n if (this.props.isFocus) {\n dom.focus();\n } else {\n dom.blur();\n }\n }\n\n handleCellEdit = e => {\n try {\n if (this.props.cellEdit.mode === Const.CELL_EDIT_DBCLICK) {\n if (document.selection && document.selection.empty) {\n document.selection.empty();\n } else if (window.getSelection) {\n const sel = window.getSelection();\n sel.removeAllRanges();\n }\n }\n } catch (err) {} /* eslint no-empty: 0 */\n this.props.onEdit(\n this.props.rIndex + 1, e.currentTarget.cellIndex, e);\n if (this.props.cellEdit.mode !== Const.CELL_EDIT_DBCLICK) {\n this.props.onClick(this.props.rIndex + 1, e.currentTarget.cellIndex, e);\n }\n }\n\n handleCellClick = e => {\n const { onClick, rIndex } = this.props;\n if (onClick) {\n onClick(rIndex + 1, e.currentTarget.cellIndex, e);\n }\n }\n\n handleKeyDown = e => {\n if (this.props.keyBoardNav) {\n this.props.onKeyDown(e);\n }\n }\n\n render() {\n const {\n children,\n columnTitle,\n dataAlign,\n hidden,\n cellEdit,\n attrs,\n style,\n isFocus,\n keyBoardNav,\n tabIndex,\n customNavStyle,\n withoutTabIndex,\n row\n } = this.props;\n\n let { className } = this.props;\n\n let tdStyle = {\n textAlign: dataAlign,\n display: hidden ? 'none' : null,\n ...style\n };\n\n const opts = {};\n\n if (cellEdit) {\n if (cellEdit.mode === Const.CELL_EDIT_CLICK) {\n opts.onClick = this.handleCellEdit;\n } else if (cellEdit.mode === Const.CELL_EDIT_DBCLICK) {\n opts.onDoubleClick = this.handleCellEdit;\n } else {\n opts.onClick = this.handleCellClick;\n }\n }\n\n if (keyBoardNav && isFocus) {\n opts.onKeyDown = this.handleKeyDown;\n }\n\n if (isFocus) {\n if (customNavStyle) {\n const cusmtStyle = Util.isFunction(customNavStyle) ?\n customNavStyle(children, row) : customNavStyle;\n tdStyle = {\n ...tdStyle,\n ...cusmtStyle\n };\n } else {\n className = `${className} default-focus-cell`;\n }\n }\n\n const attr = {};\n if (!withoutTabIndex) attr.tabIndex = tabIndex;\n return (\n \n { typeof children === 'boolean' ? children.toString() : children }\n | \n );\n }\n}\nTableColumn.propTypes = {\n rIndex: PropTypes.number,\n dataAlign: PropTypes.string,\n hidden: PropTypes.bool,\n className: PropTypes.string,\n columnTitle: PropTypes.string,\n children: PropTypes.node,\n onClick: PropTypes.func,\n attrs: PropTypes.object,\n style: PropTypes.object,\n isFocus: PropTypes.bool,\n onKeyDown: PropTypes.func,\n tabIndex: PropTypes.string,\n withoutTabIndex: PropTypes.bool,\n keyBoardNav: PropTypes.oneOfType([ PropTypes.bool, PropTypes.object ]),\n customNavStyle: PropTypes.oneOfType([ PropTypes.func, PropTypes.object ]),\n row: PropTypes.any /* only used on custom styling for navigation */\n};\n\nTableColumn.defaultProps = {\n dataAlign: 'left',\n withoutTabIndex: false,\n hidden: false,\n className: '',\n isFocus: false,\n keyBoardNav: false\n};\nexport default TableColumn;\n\n\n\n// WEBPACK FOOTER //\n// src/TableColumn.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport editor from './Editor';\nimport { notice } from './Notification.js';\nimport classSet from 'classnames';\nimport Util from './util';\n\nclass TableEditColumn extends Component {\n constructor(props) {\n super(props);\n this.timeouteClear = 0;\n const { fieldValue, row, className } = this.props;\n this.focusInEditor = this.focusInEditor.bind(this);\n this.state = {\n shakeEditor: false,\n className: Util.isFunction(className) ? className(fieldValue, row) : className\n };\n }\n\n valueShortCircuit(value) {\n return value === null || typeof value === 'undefined' ? '' : value;\n }\n\n handleKeyPress = e => {\n if (e.keyCode === 13 || e.keyCode === 9) {\n // Pressed ENTER or TAB\n const value = e.currentTarget.type === 'checkbox' ?\n this._getCheckBoxValue(e) : e.currentTarget.value;\n\n if ((e.keyCode === 9 && this.props.blurToSave) ||\n (!this.validator(value))) {\n return;\n }\n\n if (e.keyCode === 13) {\n this.props.completeEdit(value, this.props.rowIndex, this.props.colIndex);\n } else {\n this.props.onTab(this.props.rowIndex + 1, this.props.colIndex + 1, 'tab', e);\n e.preventDefault();\n }\n } else if (e.keyCode === 27) {\n this.props.completeEdit(\n null, this.props.rowIndex, this.props.colIndex);\n } else if (e.type === 'click' && !this.props.blurToSave) { // textarea click save button\n const value = e.target.parentElement.firstChild.value;\n if (!this.validator(value)) {\n return;\n }\n this.props.completeEdit(\n value, this.props.rowIndex, this.props.colIndex);\n }\n }\n\n handleBlur = e => {\n e.stopPropagation();\n if (this.props.blurToSave) {\n const value = e.currentTarget.type === 'checkbox' ?\n this._getCheckBoxValue(e) : e.currentTarget.value;\n if (!this.validator(value)) {\n return false;\n }\n this.props.completeEdit(\n value, this.props.rowIndex, this.props.colIndex);\n } else if (this.props.blurToEscape) {\n this.props.completeEdit(null, this.props.rowIndex, this.props.colIndex);\n }\n }\n\n handleCustomUpdate = value => {\n if (!this.validator(value)) {\n return;\n }\n this.props.completeEdit(value, this.props.rowIndex, this.props.colIndex);\n }\n\n // modified by iuculanop\n // BEGIN\n validator(value) {\n const ts = this;\n let valid = true;\n if (ts.props.editable.validator) {\n const checkVal = ts.props.editable.validator(value, this.props.row);\n const responseType = typeof checkVal;\n if (responseType !== 'object' && checkVal !== true) {\n valid = false;\n this.notifyToastr('error', checkVal, '');\n } else if (responseType === 'object' && checkVal.isValid !== true) {\n valid = false;\n this.notifyToastr(checkVal.notification.type,\n checkVal.notification.msg,\n checkVal.notification.title);\n }\n if (!valid) {\n // animate input\n ts.clearTimeout();\n const { invalidColumnClassName, row } = this.props;\n const className = Util.isFunction(invalidColumnClassName) ?\n invalidColumnClassName(value, row) :\n invalidColumnClassName;\n ts.setState({ shakeEditor: true, className });\n ts.timeouteClear = setTimeout(() => {\n ts.setState({ shakeEditor: false });\n }, 300);\n this.focusInEditor();\n return valid;\n }\n }\n return valid;\n }\n // END\n\n notifyToastr = (type, message, title) => {\n let toastr = true;\n const { beforeShowError } = this.props;\n if (beforeShowError) {\n toastr = beforeShowError(type, message, title);\n }\n if (toastr) {\n notice(type, message, title);\n }\n }\n\n clearTimeout() {\n if (this.timeouteClear !== 0) {\n clearTimeout(this.timeouteClear);\n this.timeouteClear = 0;\n }\n }\n\n componentDidMount() {\n this.focusInEditor();\n const dom = ReactDOM.findDOMNode(this);\n if (this.props.isFocus) {\n dom.focus();\n } else {\n dom.blur();\n }\n }\n\n componentDidUpdate() {\n const dom = ReactDOM.findDOMNode(this);\n if (this.props.isFocus) {\n dom.focus();\n } else {\n dom.blur();\n }\n }\n\n componentWillUnmount() {\n this.clearTimeout();\n }\n\n focusInEditor() {\n if (this.inputRef && Util.isFunction(this.inputRef.focus)) {\n this.inputRef.focus();\n }\n }\n\n handleClick = e => {\n if (e.target.tagName !== 'TD') {\n e.stopPropagation();\n }\n }\n\n getInputRef = userRef => ref => {\n this.inputRef = ref;\n if (Util.isFunction(userRef)) {\n userRef(ref);\n } else if (typeof userRef === 'string') {\n throw new Error('Ref must be a function');\n }\n }\n\n getHandleKeyPress = customHandler => e => {\n this.handleKeyPress(e);\n if (Util.isFunction(customHandler)) {\n customHandler(e);\n }\n }\n\n getHandleBlur = customHandler => e => {\n this.handleBlur(e);\n if (Util.isFunction(customHandler)) {\n customHandler(e);\n }\n }\n\n render() {\n const {\n editable,\n format,\n customEditor,\n isFocus,\n customStyleWithNav,\n row,\n attrs\n } = this.props;\n const { shakeEditor } = this.state;\n const attr = {\n ...editable.attrs,\n ref: this.getInputRef(editable.attrs && editable.attrs.ref),\n onKeyDown: this.getHandleKeyPress(editable.attrs && editable.attrs.onKeyDown),\n onBlur: this.getHandleBlur(editable.attrs && editable.attrs.onBlur)\n };\n let style = { position: 'relative' };\n let { fieldValue } = this.props;\n let { className } = this.state;\n\n if (editable.placeholder) {\n attr.placeholder = editable.placeholder;\n /* eslint-disable no-console */\n console.warn(\n 'Setting editable.placeholder is deprecated. Use editable.attrs to set input attributes');\n /* eslint-enable no-console */\n }\n\n const editorClass = classSet({ 'animated': shakeEditor, 'shake': shakeEditor });\n fieldValue = fieldValue === 0 ? '0' : fieldValue;\n let cellEditor;\n if (customEditor) {\n const customEditorProps = {\n row,\n ...attr,\n defaultValue: this.valueShortCircuit(fieldValue),\n ...customEditor.customEditorParameters\n };\n cellEditor = customEditor.getElement(this.handleCustomUpdate, customEditorProps);\n } else {\n cellEditor = editor(editable, attr, format, editorClass, this.valueShortCircuit(fieldValue),\n null, row);\n }\n\n if (isFocus) {\n if (customStyleWithNav) {\n const customStyle = Util.isFunction(customStyleWithNav) ?\n customStyleWithNav(fieldValue, row) : customStyleWithNav;\n style = {\n ...style,\n ...customStyle\n };\n } else {\n className = `${className} default-focus-cell`;\n }\n }\n\n return (\n \n { cellEditor }\n | \n );\n }\n\n _getCheckBoxValue(e) {\n let value = '';\n const values = e.currentTarget.value.split(':');\n value = e.currentTarget.checked ? values[0] : values[1];\n return value;\n }\n}\n\nTableEditColumn.propTypes = {\n completeEdit: PropTypes.func,\n rowIndex: PropTypes.number,\n colIndex: PropTypes.number,\n blurToSave: PropTypes.bool,\n blurToEscape: PropTypes.bool,\n editable: PropTypes.oneOfType([ PropTypes.bool, PropTypes.object ]),\n format: PropTypes.oneOfType([ PropTypes.bool, PropTypes.func ]),\n row: PropTypes.any,\n fieldValue: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n PropTypes.number,\n PropTypes.array,\n PropTypes.object\n ]),\n className: PropTypes.any,\n beforeShowError: PropTypes.func,\n isFocus: PropTypes.bool,\n attrs: PropTypes.object,\n customStyleWithNav: PropTypes.oneOfType([ PropTypes.func, PropTypes.object ])\n};\n\n\nexport default TableEditColumn;\n\n\n\n// WEBPACK FOOTER //\n// src/TableEditColumn.js","import Utils from './util';\nimport React from 'react';\n\nconst editor = function(editable, attr, format, editorClass, defaultValue, ignoreEditable, row) {\n if (editable === true ||\n (editable === false && ignoreEditable) ||\n typeof editable === 'string') { // simple declare\n const type = editable ? 'text' : editable;\n return (\n \n );\n } else if (!editable) {\n const type = editable ? 'text' : editable;\n return (\n \n );\n } else if (editable && (editable.type === undefined ||\n editable.type === null ||\n editable.type.trim() === '')) {\n const type = editable ? 'text' : editable;\n return (\n \n );\n } else if (editable.type) {// standard declare\n // put style if exist\n editable.style && (attr.style = editable.style);\n // put class if exist\n attr.className = (editorClass || '') +\n ' form-control editor edit-' +\n editable.type +\n (editable.className ? (' ' + editable.className) : '');\n\n if (editable.type === 'select') {// process select input\n let options = [];\n let { values } = editable.options;\n const { textKey, valueKey } = editable.options;\n if (Utils.isFunction(values)) {\n values = values(row);\n }\n if (Array.isArray(values)) {// only can use arrray data for options\n let text;\n let value;\n options = values.map((option, i) => {\n if (typeof option === 'object') {\n text = textKey ? option[textKey] : option.text;\n value = valueKey ? option[valueKey] : option.value;\n } else {\n text = format ? format(option) : option;\n value = option;\n }\n return (\n \n );\n }\n );\n }\n return (\n \n );\n } else if (editable.type === 'textarea') {// process textarea input\n // put other if exist\n editable.cols && (attr.cols = editable.cols);\n editable.rows && (attr.rows = editable.rows);\n let saveBtn;\n const keyUpHandler = attr.onKeyDown;\n if (keyUpHandler) {\n attr.onKeyDown = function(e) {\n if (e.keyCode !== 13) { // not Pressed ENTER\n keyUpHandler(e);\n }\n };\n saveBtn = (\n \n );\n }\n return (\n \n \n { saveBtn }\n
\n );\n } else if (editable.type === 'checkbox') {\n let values = 'true:false';\n if (editable.options && editable.options.values) {\n // values = editable.options.values.split(':');\n values = editable.options.values;\n }\n attr.className = attr.className.replace('form-control', '');\n attr.className += ' checkbox pull-right';\n\n const checked = defaultValue &&\n defaultValue.toString() === values.split(':')[0] ? true : false;\n\n return (\n \n );\n } else if (editable.type === 'datetime') {\n return (\n \n );\n } else {// process other input type. as password,url,email...\n return (\n \n );\n }\n }\n // default return for other case of editable\n return (\n \n );\n};\n\nexport default editor;\n\n\n\n// WEBPACK FOOTER //\n// src/Editor.js","import Alert from 'react-s-alert';\n\nconst notice = (type, msg, title) => {\n const titleHTML = title ? `${ title }
` : '';\n\n const bodyHTML = `\n ${ titleHTML }\n \n \n ${ msg }\n
\n `;\n\n Alert.error(bodyHTML, {\n position: 'top-right',\n timeout: 3000,\n html: true,\n effect: 'scale'\n });\n};\n\nexport { notice };\n\n\n\n// WEBPACK FOOTER //\n// src/Notification.js","/* eslint max-len: 0 */\n/* eslint no-nested-ternary: 0 */\nimport React, { Component } from 'react';\nimport classSet from 'classnames';\n\nclass ExpandComponent extends Component {\n\n render() {\n const { className } = this.props;\n const trCss = {\n style: {\n backgroundColor: this.props.bgColor\n },\n className: classSet(className)\n };\n return (\n \n \n { this.props.children }\n | \n
\n );\n }\n}\n\nexport default ExpandComponent;\n\n\n\n// WEBPACK FOOTER //\n// src/ExpandComponent.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classSet from 'classnames';\nimport PageButton from './PageButton.js';\nimport SizePerPageDropDown from './SizePerPageDropDown';\nimport Const from '../Const';\nimport Util from '../util';\n\nclass PaginationList extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n open: this.props.open\n };\n }\n\n componentWillReceiveProps() {\n const { keepSizePerPageState } = this.props;\n if (!keepSizePerPageState) {\n this.closeDropDown();\n }\n }\n\n changePage = page => {\n const {\n pageStartIndex,\n prePage,\n currPage,\n nextPage,\n lastPage,\n firstPage,\n sizePerPage,\n keepSizePerPageState\n } = this.props;\n\n if (page === prePage) {\n page = (currPage - 1) < pageStartIndex ? pageStartIndex : currPage - 1;\n } else if (page === nextPage) {\n page = (currPage + 1) > this.lastPage ? this.lastPage : currPage + 1;\n } else if (page === lastPage) {\n page = this.lastPage;\n } else if (page === firstPage) {\n page = pageStartIndex;\n } else {\n page = parseInt(page, 10);\n }\n\n if (keepSizePerPageState) { this.closeDropDown(); }\n\n if (page !== currPage) {\n this.props.changePage(page, sizePerPage);\n }\n }\n\n changeSizePerPage = pageNum => {\n const selectSize = typeof pageNum === 'string' ? parseInt(pageNum, 10) : pageNum;\n let { currPage } = this.props;\n if (selectSize !== this.props.sizePerPage) {\n this.totalPages = Math.ceil(this.props.dataSize / selectSize);\n this.lastPage = this.props.pageStartIndex + this.totalPages - 1;\n if (currPage > this.lastPage) currPage = this.lastPage;\n this.props.changePage(currPage, selectSize);\n if (this.props.onSizePerPageList) {\n this.props.onSizePerPageList(selectSize);\n }\n }\n\n this.closeDropDown();\n }\n\n toggleDropDown = () => {\n this.setState(() => {\n return {\n open: !this.state.open\n };\n });\n }\n\n closeDropDown = () => {\n this.setState(() => {\n return {\n open: false\n };\n });\n }\n\n render() {\n const {\n currPage,\n dataSize,\n sizePerPage,\n sizePerPageList,\n paginationShowsTotal,\n pageStartIndex,\n paginationPanel,\n hidePageListOnlyOnePage\n } = this.props;\n this.totalPages = Math.ceil(dataSize / sizePerPage);\n this.lastPage = this.props.pageStartIndex + this.totalPages - 1;\n const pageBtns = this.makePage(Util.isFunction(paginationPanel));\n const dropdown = this.makeDropDown();\n\n const offset = Math.abs(Const.PAGE_START_INDEX - pageStartIndex);\n let start = ((currPage - pageStartIndex) * sizePerPage);\n start = dataSize === 0 ? 0 : start + 1;\n let to = Math.min((sizePerPage * (currPage + offset) - 1), dataSize);\n if (to >= dataSize) to--;\n let total = paginationShowsTotal ? \n Showing rows { start } to { to + 1 } of { dataSize }\n : null;\n\n if (Util.isFunction(paginationShowsTotal)) {\n total = paginationShowsTotal(start, to + 1, dataSize);\n }\n\n const content = paginationPanel && paginationPanel({\n currPage,\n sizePerPage,\n sizePerPageList,\n pageStartIndex,\n totalPages: this.totalPages,\n changePage: this.changePage,\n toggleDropDown: this.toggleDropDown,\n changeSizePerPage: this.changeSizePerPage,\n components: {\n totalText: total,\n sizePerPageDropdown: dropdown,\n pageList: pageBtns\n }\n });\n\n const hidePageList = hidePageListOnlyOnePage && this.totalPages === 1 ? 'none' : 'block';\n return (\n \n {\n content ||\n [ (\n
\n { total }{ sizePerPageList.length > 1 ? dropdown : null }\n
\n ), (\n
\n { pageBtns }\n
\n ) ]\n }\n
\n );\n }\n\n makeDropDown() {\n let dropdown;\n let dropdownProps;\n let sizePerPageText = '';\n const {\n sizePerPageDropDown,\n hideSizePerPage,\n sizePerPage,\n sizePerPageList\n } = this.props;\n if (sizePerPageDropDown) {\n dropdown = sizePerPageDropDown({\n open: this.state.open,\n hideSizePerPage,\n currSizePerPage: String(sizePerPage),\n sizePerPageList,\n toggleDropDown: this.toggleDropDown,\n changeSizePerPage: this.changeSizePerPage,\n onBlur: this.closeDropDown\n });\n if (dropdown.type.name === SizePerPageDropDown.name) {\n dropdownProps = dropdown.props;\n } else {\n return dropdown;\n }\n }\n\n if (dropdownProps || !dropdown) {\n const sizePerPageOptions = sizePerPageList.map((_sizePerPage) => {\n const pageText = _sizePerPage.text || _sizePerPage;\n const pageNum = _sizePerPage.value || _sizePerPage;\n if (sizePerPage === pageNum) sizePerPageText = pageText;\n return (\n \n {\n e.preventDefault();\n this.changeSizePerPage(pageNum);\n } }>{ pageText }\n \n );\n });\n dropdown = (\n \n );\n }\n return dropdown;\n }\n\n makePage(isCustomPagingPanel = false) {\n const pages = this.getPages();\n const isStart = (page, { currPage, pageStartIndex, firstPage, prePage }) =>\n (currPage === pageStartIndex && (page === firstPage || page === prePage));\n const isEnd = (page, { currPage, nextPage, lastPage }) =>\n (currPage === this.lastPage && (page === nextPage || page === lastPage ));\n const pageBtns = pages\n .filter(function(page) {\n if (this.props.alwaysShowAllBtns) {\n return true;\n }\n return (isStart(page, this.props) || isEnd(page, this.props)) ?\n false :\n true;\n }, this)\n .map(function(page) {\n const isActive = page === this.props.currPage;\n const isDisabled = (isStart(page, this.props) || isEnd(page, this.props)) ?\n true :\n false;\n let title = page + '';\n\n if (page === this.props.nextPage) {\n title = this.props.nextPageTitle;\n } else if (page === this.props.prePage) {\n title = this.props.prePageTitle;\n } else if (page === this.props.firstPage) {\n title = this.props.firstPageTitle;\n } else if (page === this.props.lastPage) {\n title = this.props.lastPageTitle;\n }\n\n return (\n \n { page }\n \n );\n }, this);\n const classname = classSet(\n isCustomPagingPanel ? null : 'react-bootstrap-table-page-btns-ul',\n 'pagination'\n );\n return (\n \n );\n }\n\n getLastPage() {\n return this.lastPage;\n }\n\n getPages() {\n let pages;\n let endPage = this.totalPages;\n if (endPage <= 0) return [];\n let startPage = Math.max(\n this.props.currPage - Math.floor(this.props.paginationSize / 2),\n this.props.pageStartIndex\n );\n endPage = startPage + this.props.paginationSize - 1;\n\n if (endPage > this.lastPage) {\n endPage = this.lastPage;\n startPage = endPage - this.props.paginationSize + 1;\n }\n\n if (startPage !== this.props.pageStartIndex\n && this.totalPages > this.props.paginationSize\n && this.props.withFirstAndLast) {\n pages = [ this.props.firstPage, this.props.prePage ];\n } else if (this.totalPages > 1 || this.props.alwaysShowAllBtns) {\n pages = [ this.props.prePage ];\n } else {\n pages = [];\n }\n\n for (let i = startPage; i <= endPage; i++) {\n if (i >= this.props.pageStartIndex) pages.push(i);\n }\n\n if (endPage <= this.lastPage && pages.length > 1) {\n pages.push(this.props.nextPage);\n }\n if (endPage !== this.lastPage && this.props.withFirstAndLast) {\n pages.push(this.props.lastPage);\n }\n\n return pages;\n }\n}\nPaginationList.propTypes = {\n currPage: PropTypes.number,\n sizePerPage: PropTypes.number,\n dataSize: PropTypes.number,\n changePage: PropTypes.func,\n sizePerPageList: PropTypes.array,\n paginationShowsTotal: PropTypes.oneOfType([ PropTypes.bool, PropTypes.func ]),\n paginationSize: PropTypes.number,\n onSizePerPageList: PropTypes.func,\n prePage: PropTypes.string,\n pageStartIndex: PropTypes.number,\n hideSizePerPage: PropTypes.bool,\n alwaysShowAllBtns: PropTypes.bool,\n withFirstAndLast: PropTypes.bool,\n sizePerPageDropDown: PropTypes.func,\n paginationPanel: PropTypes.func,\n prePageTitle: PropTypes.string,\n nextPageTitle: PropTypes.string,\n firstPageTitle: PropTypes.string,\n lastPageTitle: PropTypes.string,\n hidePageListOnlyOnePage: PropTypes.bool,\n keepSizePerPageState: PropTypes.bool\n};\n\nPaginationList.defaultProps = {\n sizePerPage: Const.SIZE_PER_PAGE,\n pageStartIndex: Const.PAGE_START_INDEX\n};\n\nexport default PaginationList;\n\n\n\n// WEBPACK FOOTER //\n// src/pagination/PaginationList.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classSet from 'classnames';\n\nclass PageButton extends Component {\n\n constructor(props) {\n super(props);\n }\n\n pageBtnClick = e => {\n e.preventDefault();\n this.props.changePage(e.currentTarget.textContent);\n }\n\n render() {\n const classes = classSet({\n 'active': this.props.active,\n 'disabled': this.props.disable,\n 'hidden': this.props.hidden,\n 'page-item': true\n });\n return (\n \n { this.props.children }\n \n );\n }\n}\nPageButton.propTypes = {\n title: PropTypes.string,\n changePage: PropTypes.func,\n active: PropTypes.bool,\n disable: PropTypes.bool,\n hidden: PropTypes.bool,\n children: PropTypes.node\n};\n\nexport default PageButton;\n\n\n\n// WEBPACK FOOTER //\n// src/pagination/PageButton.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nconst sizePerPageDefaultClass = 'react-bs-table-sizePerPage-dropdown';\n\nclass SizePerPageDropDown extends Component {\n render() {\n const {\n open,\n hidden,\n onClick,\n onBlur,\n options,\n className,\n variation,\n btnContextual,\n currSizePerPage\n } = this.props;\n\n const openClass = open ? 'open show' : '';\n const dropDownStyle = { visibility: hidden ? 'hidden' : 'visible' };\n\n return (\n \n \n \n \n );\n }\n}\n\nSizePerPageDropDown.propTypes = {\n open: PropTypes.bool,\n hidden: PropTypes.bool,\n btnContextual: PropTypes.string,\n currSizePerPage: PropTypes.string,\n options: PropTypes.array,\n variation: PropTypes.oneOf([ 'dropdown', 'dropup' ]),\n className: PropTypes.string,\n onClick: PropTypes.func,\n onBlur: PropTypes.func\n};\nSizePerPageDropDown.defaultProps = {\n open: false,\n hidden: false,\n btnContextual: 'btn-default btn-secondary',\n variation: 'dropdown',\n className: ''\n};\n\n\nexport default SizePerPageDropDown;\n\n\n\n// WEBPACK FOOTER //\n// src/pagination/SizePerPageDropDown.js","/* eslint no-console: 0 */\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Modal from 'react-modal';\n// import classSet from 'classnames';\nimport Const from '../Const';\n// import editor from '../Editor';\nimport { notice } from '../Notification.js';\nimport InsertModal from './InsertModal';\nimport InsertButton from './InsertButton';\nimport DeleteButton from './DeleteButton';\nimport ExportCSVButton from './ExportCSVButton';\nimport ShowSelectedOnlyButton from './ShowSelectedOnlyButton';\nimport SearchField from './SearchField';\nimport ClearSearchButton from './ClearSearchButton';\n\nclass ToolBar extends Component {\n\n static modalSeq = 0;\n\n constructor(props) {\n super(props);\n this.timeouteClear = 0;\n this.modalClassName;\n this.state = {\n isInsertModalOpen: false,\n validateState: null,\n shakeEditor: false,\n showSelected: false\n };\n }\n\n componentWillMount() {\n const delay = this.props.searchDelayTime ? this.props.searchDelayTime : 0;\n this.debounceCallback = this.handleDebounce(() => {\n const { seachInput } = this.refs;\n seachInput && this.props.onSearch(seachInput.getValue());\n },\n delay\n );\n }\n\n componentWillReceiveProps(nextProps) {\n if (nextProps.reset) {\n this.setSearchInput('');\n }\n }\n\n componentWillUnmount() {\n this.clearTimeout();\n }\n\n setSearchInput(text) {\n const { seachInput } = this.refs;\n if (seachInput && seachInput.value !== text) {\n seachInput.value = text;\n }\n }\n\n clearTimeout() {\n if (this.timeouteClear) {\n clearTimeout(this.timeouteClear);\n this.timeouteClear = 0;\n }\n }\n\n displayCommonMessage = () => {\n notice('error', this.props.insertFailIndicator, '');\n }\n\n validateNewRow(newRow) {\n const validateState = {};\n let isValid = true;\n let tempMsg;\n let responseType;\n\n this.props.columns.forEach(column => {\n if (column.isKey && column.keyValidator) { // key validator for checking exist key\n tempMsg = this.props.isValidKey(newRow[column.field]);\n if (tempMsg) {\n this.displayCommonMessage();\n isValid = false;\n validateState[column.field] = tempMsg;\n }\n } else if (column.editable && column.editable.validator) { // process validate\n tempMsg = column.editable.validator(newRow[column.field], newRow);\n responseType = typeof tempMsg;\n if (responseType !== 'object' && tempMsg !== true) {\n this.displayCommonMessage();\n isValid = false;\n validateState[column.field] = tempMsg;\n } else if (responseType === 'object' && tempMsg.isValid !== true) {\n notice(\n tempMsg.notification.type,\n tempMsg.notification.msg,\n tempMsg.notification.title);\n isValid = false;\n validateState[column.field] = tempMsg.notification.msg;\n }\n }\n });\n\n if (isValid) {\n return true;\n } else {\n this.clearTimeout();\n // show error in form and shake it\n this.setState(() => { return { validateState, shakeEditor: true }; });\n this.timeouteClear = setTimeout(() => {\n this.setState(() => { return { shakeEditor: false }; });\n }, 300);\n return null;\n }\n }\n\n handleSaveBtnClick = (newRow) => {\n if (!this.validateNewRow(newRow)) { // validation fail\n return;\n }\n const msg = this.props.onAddRow(newRow);\n if (msg !== false) {\n this.afterHandleSaveBtnClick(msg);\n }\n }\n\n afterHandleSaveBtnClick = (msg) => {\n if (msg) {\n notice('error', msg, '');\n this.clearTimeout();\n // shake form and hack prevent modal hide\n this.setState(() => {\n return {\n shakeEditor: true,\n validateState: 'this is hack for prevent bootstrap modal hide'\n };\n });\n // clear animate class\n this.timeouteClear = setTimeout(() => {\n this.setState(() => { return { shakeEditor: false }; });\n }, 300);\n } else {\n // reset state and hide modal hide\n this.setState(() => {\n return {\n validateState: null,\n shakeEditor: false,\n isInsertModalOpen: false\n };\n });\n }\n }\n\n handleModalClose = () => {\n this.setState(() => { return { isInsertModalOpen: false }; });\n }\n\n handleModalOpen = () => {\n this.setState(() => { return { isInsertModalOpen: true }; });\n }\n\n handleShowOnlyToggle = () => {\n this.setState(() => {\n return {\n showSelected: !this.state.showSelected\n };\n });\n this.props.onShowOnlySelected();\n }\n\n handleDropRowBtnClick = () => {\n this.props.onDropRow();\n }\n\n handleCloseBtn() {\n this.refs.warning.style.display = 'none';\n }\n\n handleDebounce = (func, wait, immediate) => {\n let timeout;\n\n return () => {\n const later = () => {\n timeout = null;\n\n if (!immediate) {\n func.apply(this, arguments);\n }\n };\n\n const callNow = immediate && !timeout;\n\n clearTimeout(timeout);\n\n timeout = setTimeout(later, wait || 0);\n\n if (callNow) {\n func.appy(this, arguments);\n }\n };\n }\n\n handleKeyUp = (event) => {\n event.persist();\n this.debounceCallback(event);\n }\n\n handleExportCSV = () => {\n this.props.onExportCSV();\n }\n\n handleClearBtnClick = () => {\n const { seachInput } = this.refs;\n seachInput && seachInput.setValue('');\n this.props.onSearch('');\n }\n\n render() {\n this.modalClassName = 'bs-table-modal-sm' + ToolBar.modalSeq++;\n let toolbar = null;\n let btnGroup = null;\n let insertBtn = null;\n let deleteBtn = null;\n let exportCSVBtn = null;\n let showSelectedOnlyBtn = null;\n\n if (this.props.enableInsert) {\n if (this.props.insertBtn) {\n insertBtn = this.renderCustomBtn(this.props.insertBtn,\n [ this.handleModalOpen ], InsertButton.name, 'onClick', this.handleModalOpen);\n } else {\n insertBtn = (\n \n );\n }\n }\n\n if (this.props.enableDelete) {\n if (this.props.deleteBtn) {\n deleteBtn = this.renderCustomBtn(this.props.deleteBtn,\n [ this.handleDropRowBtnClick ], DeleteButton.name, 'onClick', this.handleDropRowBtnClick);\n } else {\n deleteBtn = (\n \n );\n }\n }\n\n if (this.props.enableShowOnlySelected) {\n if (this.props.showSelectedOnlyBtn) {\n showSelectedOnlyBtn = this.renderCustomBtn(this.props.showSelectedOnlyBtn,\n [ this.handleShowOnlyToggle, this.state.showSelected ], ShowSelectedOnlyButton.name,\n 'onClick', this.handleShowOnlyToggle);\n } else {\n showSelectedOnlyBtn = (\n \n );\n }\n }\n\n if (this.props.enableExportCSV) {\n if (this.props.exportCSVBtn) {\n exportCSVBtn = this.renderCustomBtn(this.props.exportCSVBtn,\n [ this.handleExportCSV ], ExportCSVButton.name, 'onClick', this.handleExportCSV);\n } else {\n exportCSVBtn = (\n \n );\n }\n }\n\n if (this.props.btnGroup) {\n btnGroup = this.props.btnGroup({\n exportCSVBtn,\n insertBtn,\n deleteBtn,\n showSelectedOnlyBtn\n });\n } else {\n btnGroup = (\n \n { exportCSVBtn }\n { insertBtn }\n { deleteBtn }\n { showSelectedOnlyBtn }\n
\n );\n }\n\n const [ searchPanel, searchField, clearBtn ] = this.renderSearchPanel();\n const modal = this.props.enableInsert ? this.renderInsertRowModal() : null;\n\n if (this.props.toolBar) {\n toolbar = this.props.toolBar({\n components: {\n exportCSVBtn,\n insertBtn,\n deleteBtn,\n showSelectedOnlyBtn,\n searchPanel,\n btnGroup,\n searchField,\n clearBtn\n },\n event: {\n openInsertModal: this.handleModalOpen,\n closeInsertModal: this.handleModalClose,\n dropRow: this.handleDropRowBtnClick,\n showOnlyToogle: this.handleShowOnlyToggle,\n exportCSV: this.handleExportCSV,\n search: this.props.onSearch\n }\n });\n } else {\n toolbar = [ (\n \n { this.props.searchPosition === 'left' ? searchPanel : btnGroup }\n
\n ), (\n \n { this.props.searchPosition === 'left' ? btnGroup : searchPanel }\n
\n ) ];\n }\n\n return (\n \n { toolbar }\n { modal }\n
\n );\n }\n\n renderSearchPanel() {\n if (this.props.enableSearch) {\n let classNames = 'form-group form-group-sm react-bs-table-search-form';\n let clearBtn = null;\n let searchField = null;\n let searchPanel = null;\n if (this.props.clearSearch) {\n if (this.props.clearSearchBtn) {\n clearBtn = this.renderCustomBtn(this.props.clearSearchBtn,\n [ this.handleClearBtnClick ], ClearSearchButton.name, 'onClick', this.handleClearBtnClick); /* eslint max-len: 0*/\n } else {\n clearBtn = (\n \n );\n }\n classNames += ' input-group input-group-sm';\n }\n\n if (this.props.searchField) {\n searchField = this.props.searchField({\n search: this.handleKeyUp,\n defaultValue: this.props.defaultSearch,\n placeholder: this.props.searchPlaceholder\n });\n if (searchField.type.name === SearchField.name) {\n searchField = React.cloneElement(searchField, {\n ref: 'seachInput',\n onKeyUp: this.handleKeyUp\n });\n } else {\n searchField = React.cloneElement(searchField, {\n ref: 'seachInput'\n });\n }\n } else {\n searchField = (\n \n );\n }\n if (this.props.searchPanel) {\n searchPanel = this.props.searchPanel({\n searchField, clearBtn,\n search: this.props.onSearch,\n defaultValue: this.props.defaultSearch,\n placeholder: this.props.searchPlaceholder,\n clearBtnClick: this.handleClearBtnClick\n });\n } else {\n searchPanel = (\n \n { searchField }\n \n { clearBtn }\n \n
\n );\n }\n return [ searchPanel, searchField, clearBtn ];\n } else {\n return [];\n }\n }\n\n renderInsertRowModal() {\n const validateState = this.state.validateState || {};\n const {\n version,\n columns,\n ignoreEditable,\n insertModalHeader,\n insertModalBody,\n insertModalFooter,\n insertModal\n } = this.props;\n\n let modal;\n modal = insertModal && insertModal(\n this.handleModalClose,\n this.handleSaveBtnClick,\n columns,\n validateState,\n ignoreEditable\n );\n\n if (!modal) {\n modal = (\n \n );\n }\n\n return (\n \n { modal }\n \n );\n }\n\n renderCustomBtn(cb, params, componentName, eventName, event) {\n let element = cb.apply(null, params);\n if (element.type.name === componentName && !element.props[eventName]) {\n const props = {};\n props[eventName] = event;\n element = React.cloneElement(element, props);\n }\n return element;\n }\n}\n\nToolBar.propTypes = {\n version: PropTypes.string,\n onAddRow: PropTypes.func,\n onDropRow: PropTypes.func,\n onShowOnlySelected: PropTypes.func,\n enableInsert: PropTypes.bool,\n enableDelete: PropTypes.bool,\n enableSearch: PropTypes.bool,\n enableShowOnlySelected: PropTypes.bool,\n columns: PropTypes.array,\n searchPlaceholder: PropTypes.string,\n exportCSVText: PropTypes.string,\n insertText: PropTypes.string,\n deleteText: PropTypes.string,\n saveText: PropTypes.string,\n closeText: PropTypes.string,\n clearSearch: PropTypes.bool,\n ignoreEditable: PropTypes.bool,\n defaultSearch: PropTypes.string,\n insertModalHeader: PropTypes.func,\n insertModalBody: PropTypes.func,\n insertModalFooter: PropTypes.func,\n insertModal: PropTypes.func,\n insertBtn: PropTypes.func,\n deleteBtn: PropTypes.func,\n showSelectedOnlyBtn: PropTypes.func,\n exportCSVBtn: PropTypes.func,\n clearSearchBtn: PropTypes.func,\n searchField: PropTypes.func,\n searchPanel: PropTypes.func,\n btnGroup: PropTypes.func,\n toolBar: PropTypes.func,\n searchPosition: PropTypes.string,\n reset: PropTypes.bool,\n isValidKey: PropTypes.func,\n insertFailIndicator: PropTypes.string\n};\n\nToolBar.defaultProps = {\n reset: false,\n enableInsert: false,\n enableDelete: false,\n enableSearch: false,\n enableShowOnlySelected: false,\n clearSearch: false,\n ignoreEditable: false,\n exportCSVText: Const.EXPORT_CSV_TEXT,\n insertText: Const.INSERT_BTN_TEXT,\n deleteText: Const.DELETE_BTN_TEXT,\n saveText: Const.SAVE_BTN_TEXT,\n closeText: Const.CLOSE_BTN_TEXT\n};\n\nexport default ToolBar;\n\n\n\n// WEBPACK FOOTER //\n// src/toolbar/ToolBar.js","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Modal = require(\"./components/Modal\");\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _Modal2.default;\nmodule.exports = exports[\"default\"];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-modal/lib/index.js\n// module id = 45\n// module chunks = 0","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.bodyOpenClassName = exports.portalClassName = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require(\"react-dom\");\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _ModalPortal = require(\"./ModalPortal\");\n\nvar _ModalPortal2 = _interopRequireDefault(_ModalPortal);\n\nvar _ariaAppHider = require(\"../helpers/ariaAppHider\");\n\nvar ariaAppHider = _interopRequireWildcard(_ariaAppHider);\n\nvar _safeHTMLElement = require(\"../helpers/safeHTMLElement\");\n\nvar _safeHTMLElement2 = _interopRequireDefault(_safeHTMLElement);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar portalClassName = exports.portalClassName = \"ReactModalPortal\";\nvar bodyOpenClassName = exports.bodyOpenClassName = \"ReactModal__Body--open\";\n\nvar isReact16 = _reactDom2.default.createPortal !== undefined;\nvar createPortal = isReact16 ? _reactDom2.default.createPortal : _reactDom2.default.unstable_renderSubtreeIntoContainer;\n\nfunction getParentElement(parentSelector) {\n return parentSelector();\n}\n\nvar Modal = function (_Component) {\n _inherits(Modal, _Component);\n\n function Modal() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Modal);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Modal.__proto__ || Object.getPrototypeOf(Modal)).call.apply(_ref, [this].concat(args))), _this), _this.removePortal = function () {\n !isReact16 && _reactDom2.default.unmountComponentAtNode(_this.node);\n var parent = getParentElement(_this.props.parentSelector);\n parent.removeChild(_this.node);\n }, _this.portalRef = function (ref) {\n _this.portal = ref;\n }, _this.renderPortal = function (props) {\n var portal = createPortal(_this, _react2.default.createElement(_ModalPortal2.default, _extends({ defaultStyles: Modal.defaultStyles }, props)), _this.node);\n _this.portalRef(portal);\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Modal, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (!_safeHTMLElement.canUseDOM) return;\n\n if (!isReact16) {\n this.node = document.createElement(\"div\");\n }\n this.node.className = this.props.portalClassName;\n\n var parent = getParentElement(this.props.parentSelector);\n parent.appendChild(this.node);\n\n !isReact16 && this.renderPortal(this.props);\n }\n }, {\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(newProps) {\n if (!_safeHTMLElement.canUseDOM) return;\n var isOpen = newProps.isOpen;\n // Stop unnecessary renders if modal is remaining closed\n\n if (!this.props.isOpen && !isOpen) return;\n\n var currentParent = getParentElement(this.props.parentSelector);\n var newParent = getParentElement(newProps.parentSelector);\n\n if (newParent !== currentParent) {\n currentParent.removeChild(this.node);\n newParent.appendChild(this.node);\n }\n\n !isReact16 && this.renderPortal(newProps);\n }\n }, {\n key: \"componentWillUpdate\",\n value: function componentWillUpdate(newProps) {\n if (!_safeHTMLElement.canUseDOM) return;\n if (newProps.portalClassName !== this.props.portalClassName) {\n this.node.className = newProps.portalClassName;\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (!_safeHTMLElement.canUseDOM || !this.node || !this.portal) return;\n\n var state = this.portal.state;\n var now = Date.now();\n var closesAt = state.isOpen && this.props.closeTimeoutMS && (state.closesAt || now + this.props.closeTimeoutMS);\n\n if (closesAt) {\n if (!state.beforeClose) {\n this.portal.closeWithTimeout();\n }\n\n setTimeout(this.removePortal, closesAt - now);\n } else {\n this.removePortal();\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n if (!_safeHTMLElement.canUseDOM || !isReact16) {\n return null;\n }\n\n if (!this.node && isReact16) {\n this.node = document.createElement(\"div\");\n }\n\n return createPortal(_react2.default.createElement(_ModalPortal2.default, _extends({\n ref: this.portalRef,\n defaultStyles: Modal.defaultStyles\n }, this.props)), this.node);\n }\n }], [{\n key: \"setAppElement\",\n value: function setAppElement(element) {\n ariaAppHider.setElement(element);\n }\n\n /* eslint-disable react/no-unused-prop-types */\n\n /* eslint-enable react/no-unused-prop-types */\n\n }]);\n\n return Modal;\n}(_react.Component);\n\nModal.propTypes = {\n isOpen: _propTypes2.default.bool.isRequired,\n style: _propTypes2.default.shape({\n content: _propTypes2.default.object,\n overlay: _propTypes2.default.object\n }),\n portalClassName: _propTypes2.default.string,\n bodyOpenClassName: _propTypes2.default.string,\n className: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object]),\n overlayClassName: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object]),\n appElement: _propTypes2.default.instanceOf(_safeHTMLElement2.default),\n onAfterOpen: _propTypes2.default.func,\n onRequestClose: _propTypes2.default.func,\n closeTimeoutMS: _propTypes2.default.number,\n ariaHideApp: _propTypes2.default.bool,\n shouldFocusAfter: _propTypes2.default.bool,\n shouldCloseOnOverlayClick: _propTypes2.default.bool,\n parentSelector: _propTypes2.default.func,\n aria: _propTypes2.default.object,\n role: _propTypes2.default.string,\n contentLabel: _propTypes2.default.string,\n shouldCloseOnEsc: _propTypes2.default.bool\n};\nModal.defaultProps = {\n isOpen: false,\n portalClassName: portalClassName,\n bodyOpenClassName: bodyOpenClassName,\n ariaHideApp: true,\n closeTimeoutMS: 0,\n shouldFocusAfterRender: true,\n shouldCloseOnEsc: true,\n shouldCloseOnOverlayClick: true,\n parentSelector: function parentSelector() {\n return document.body;\n }\n};\nModal.defaultStyles = {\n overlay: {\n position: \"fixed\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: \"rgba(255, 255, 255, 0.75)\"\n },\n content: {\n position: \"absolute\",\n top: \"40px\",\n left: \"40px\",\n right: \"40px\",\n bottom: \"40px\",\n border: \"1px solid #ccc\",\n background: \"#fff\",\n overflow: \"auto\",\n WebkitOverflowScrolling: \"touch\",\n borderRadius: \"4px\",\n outline: \"none\",\n padding: \"20px\"\n }\n};\nexports.default = Modal;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-modal/lib/components/Modal.js\n// module id = 46\n// module chunks = 0","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _focusManager = require(\"../helpers/focusManager\");\n\nvar focusManager = _interopRequireWildcard(_focusManager);\n\nvar _scopeTab = require(\"../helpers/scopeTab\");\n\nvar _scopeTab2 = _interopRequireDefault(_scopeTab);\n\nvar _ariaAppHider = require(\"../helpers/ariaAppHider\");\n\nvar ariaAppHider = _interopRequireWildcard(_ariaAppHider);\n\nvar _refCount = require(\"../helpers/refCount\");\n\nvar refCount = _interopRequireWildcard(_refCount);\n\nvar _bodyClassList = require(\"../helpers/bodyClassList\");\n\nvar bodyClassList = _interopRequireWildcard(_bodyClassList);\n\nvar _safeHTMLElement = require(\"../helpers/safeHTMLElement\");\n\nvar _safeHTMLElement2 = _interopRequireDefault(_safeHTMLElement);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// so that our CSS is statically analyzable\nvar CLASS_NAMES = {\n overlay: \"ReactModal__Overlay\",\n content: \"ReactModal__Content\"\n};\n\nvar TAB_KEY = 9;\nvar ESC_KEY = 27;\n\nvar ModalPortal = function (_Component) {\n _inherits(ModalPortal, _Component);\n\n function ModalPortal(props) {\n _classCallCheck(this, ModalPortal);\n\n var _this = _possibleConstructorReturn(this, (ModalPortal.__proto__ || Object.getPrototypeOf(ModalPortal)).call(this, props));\n\n _this.setFocusAfterRender = function (focus) {\n _this.focusAfterRender = _this.props.shouldFocusAfterRender && focus;\n };\n\n _this.setOverlayRef = function (overlay) {\n _this.overlay = overlay;\n };\n\n _this.setContentRef = function (content) {\n _this.content = content;\n };\n\n _this.afterClose = function () {\n focusManager.returnFocus();\n focusManager.teardownScopedFocus();\n };\n\n _this.open = function () {\n _this.beforeOpen();\n if (_this.state.afterOpen && _this.state.beforeClose) {\n clearTimeout(_this.closeTimer);\n _this.setState({ beforeClose: false });\n } else {\n focusManager.setupScopedFocus(_this.node);\n focusManager.markForFocusLater();\n _this.setState({ isOpen: true }, function () {\n _this.setState({ afterOpen: true });\n\n if (_this.props.isOpen && _this.props.onAfterOpen) {\n _this.props.onAfterOpen();\n }\n });\n }\n };\n\n _this.close = function () {\n _this.beforeClose();\n if (_this.props.closeTimeoutMS > 0) {\n _this.closeWithTimeout();\n } else {\n _this.closeWithoutTimeout();\n }\n };\n\n _this.focusContent = function () {\n return _this.content && !_this.contentHasFocus() && _this.content.focus();\n };\n\n _this.closeWithTimeout = function () {\n var closesAt = Date.now() + _this.props.closeTimeoutMS;\n _this.setState({ beforeClose: true, closesAt: closesAt }, function () {\n _this.closeTimer = setTimeout(_this.closeWithoutTimeout, _this.state.closesAt - Date.now());\n });\n };\n\n _this.closeWithoutTimeout = function () {\n _this.setState({\n beforeClose: false,\n isOpen: false,\n afterOpen: false,\n closesAt: null\n }, _this.afterClose);\n };\n\n _this.handleKeyDown = function (event) {\n if (event.keyCode === TAB_KEY) {\n (0, _scopeTab2.default)(_this.content, event);\n }\n\n if (_this.props.shouldCloseOnEsc && event.keyCode === ESC_KEY) {\n event.preventDefault();\n _this.requestClose(event);\n }\n };\n\n _this.handleOverlayOnClick = function (event) {\n if (_this.shouldClose === null) {\n _this.shouldClose = true;\n }\n\n if (_this.shouldClose && _this.props.shouldCloseOnOverlayClick) {\n if (_this.ownerHandlesClose()) {\n _this.requestClose(event);\n } else {\n _this.focusContent();\n }\n }\n _this.shouldClose = null;\n _this.moveFromContentToOverlay = null;\n };\n\n _this.handleOverlayOnMouseUp = function () {\n if (_this.moveFromContentToOverlay === null) {\n _this.shouldClose = false;\n }\n };\n\n _this.handleContentOnMouseUp = function () {\n _this.shouldClose = false;\n };\n\n _this.handleOverlayOnMouseDown = function () {\n _this.moveFromContentToOverlay = false;\n };\n\n _this.handleContentOnClick = function () {\n _this.shouldClose = false;\n };\n\n _this.handleContentOnMouseDown = function () {\n _this.shouldClose = false;\n _this.moveFromContentToOverlay = false;\n };\n\n _this.requestClose = function (event) {\n return _this.ownerHandlesClose() && _this.props.onRequestClose(event);\n };\n\n _this.ownerHandlesClose = function () {\n return _this.props.onRequestClose;\n };\n\n _this.shouldBeClosed = function () {\n return !_this.state.isOpen && !_this.state.beforeClose;\n };\n\n _this.contentHasFocus = function () {\n return document.activeElement === _this.content || _this.content.contains(document.activeElement);\n };\n\n _this.buildClassName = function (which, additional) {\n var classNames = (typeof additional === \"undefined\" ? \"undefined\" : _typeof(additional)) === \"object\" ? additional : {\n base: CLASS_NAMES[which],\n afterOpen: CLASS_NAMES[which] + \"--after-open\",\n beforeClose: CLASS_NAMES[which] + \"--before-close\"\n };\n var className = classNames.base;\n if (_this.state.afterOpen) {\n className = className + \" \" + classNames.afterOpen;\n }\n if (_this.state.beforeClose) {\n className = className + \" \" + classNames.beforeClose;\n }\n return typeof additional === \"string\" && additional ? className + \" \" + additional : className;\n };\n\n _this.ariaAttributes = function (items) {\n return Object.keys(items).reduce(function (acc, name) {\n acc[\"aria-\" + name] = items[name];\n return acc;\n }, {});\n };\n\n _this.state = {\n afterOpen: false,\n beforeClose: false\n };\n\n _this.shouldClose = null;\n _this.moveFromContentToOverlay = null;\n return _this;\n }\n\n _createClass(ModalPortal, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n // Focus needs to be set when mounting and already open\n if (this.props.isOpen) {\n this.setFocusAfterRender(true);\n this.open();\n }\n }\n }, {\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(newProps) {\n if (process.env.NODE_ENV !== \"production\") {\n if (newProps.bodyOpenClassName !== this.props.bodyOpenClassName) {\n // eslint-disable-next-line no-console\n console.warn('React-Modal: \"bodyOpenClassName\" prop has been modified. ' + \"This may cause unexpected behavior when multiple modals are open.\");\n }\n }\n // Focus only needs to be set once when the modal is being opened\n if (!this.props.isOpen && newProps.isOpen) {\n this.setFocusAfterRender(true);\n this.open();\n } else if (this.props.isOpen && !newProps.isOpen) {\n this.close();\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n if (this.focusAfterRender) {\n this.focusContent();\n this.setFocusAfterRender(false);\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.beforeClose();\n clearTimeout(this.closeTimer);\n }\n }, {\n key: \"beforeOpen\",\n value: function beforeOpen() {\n var _props = this.props,\n appElement = _props.appElement,\n ariaHideApp = _props.ariaHideApp,\n bodyOpenClassName = _props.bodyOpenClassName;\n // Add body class\n\n bodyClassList.add(bodyOpenClassName);\n // Add aria-hidden to appElement\n if (ariaHideApp) {\n ariaAppHider.hide(appElement);\n }\n }\n }, {\n key: \"beforeClose\",\n value: function beforeClose() {\n var _props2 = this.props,\n appElement = _props2.appElement,\n ariaHideApp = _props2.ariaHideApp,\n bodyOpenClassName = _props2.bodyOpenClassName;\n // Remove class if no more modals are open\n\n bodyClassList.remove(bodyOpenClassName);\n // Reset aria-hidden attribute if all modals have been removed\n if (ariaHideApp && refCount.totalCount() < 1) {\n ariaAppHider.show(appElement);\n }\n }\n\n // Don't steal focus from inner elements\n\n }, {\n key: \"render\",\n value: function render() {\n var _props3 = this.props,\n className = _props3.className,\n overlayClassName = _props3.overlayClassName,\n defaultStyles = _props3.defaultStyles;\n\n var contentStyles = className ? {} : defaultStyles.content;\n var overlayStyles = overlayClassName ? {} : defaultStyles.overlay;\n\n return this.shouldBeClosed() ? null : _react2.default.createElement(\n \"div\",\n {\n ref: this.setOverlayRef,\n className: this.buildClassName(\"overlay\", overlayClassName),\n style: _extends({}, overlayStyles, this.props.style.overlay),\n onClick: this.handleOverlayOnClick,\n onMouseDown: this.handleOverlayOnMouseDown,\n onMouseUp: this.handleOverlayOnMouseUp\n },\n _react2.default.createElement(\n \"div\",\n _extends({\n ref: this.setContentRef,\n style: _extends({}, contentStyles, this.props.style.content),\n className: this.buildClassName(\"content\", className),\n tabIndex: \"-1\",\n onKeyDown: this.handleKeyDown,\n onMouseDown: this.handleContentOnMouseDown,\n onMouseUp: this.handleContentOnMouseUp,\n onClick: this.handleContentOnClick,\n role: this.props.role,\n \"aria-label\": this.props.contentLabel\n }, this.ariaAttributes(this.props.aria || {})),\n this.props.children\n )\n );\n }\n }]);\n\n return ModalPortal;\n}(_react.Component);\n\nModalPortal.defaultProps = {\n style: {\n overlay: {},\n content: {}\n }\n};\nModalPortal.propTypes = {\n isOpen: _propTypes2.default.bool.isRequired,\n defaultStyles: _propTypes2.default.shape({\n content: _propTypes2.default.object,\n overlay: _propTypes2.default.object\n }),\n style: _propTypes2.default.shape({\n content: _propTypes2.default.object,\n overlay: _propTypes2.default.object\n }),\n className: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object]),\n overlayClassName: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object]),\n bodyOpenClassName: _propTypes2.default.string,\n ariaHideApp: _propTypes2.default.bool,\n appElement: _propTypes2.default.instanceOf(_safeHTMLElement2.default),\n onAfterOpen: _propTypes2.default.func,\n onRequestClose: _propTypes2.default.func,\n closeTimeoutMS: _propTypes2.default.number,\n shouldFocusAfterRender: _propTypes2.default.bool,\n shouldCloseOnOverlayClick: _propTypes2.default.bool,\n role: _propTypes2.default.string,\n contentLabel: _propTypes2.default.string,\n aria: _propTypes2.default.object,\n children: _propTypes2.default.node,\n shouldCloseOnEsc: _propTypes2.default.bool\n};\nexports.default = ModalPortal;\nmodule.exports = exports[\"default\"];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-modal/lib/components/ModalPortal.js\n// module id = 47\n// module chunks = 0","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.handleBlur = handleBlur;\nexports.handleFocus = handleFocus;\nexports.markForFocusLater = markForFocusLater;\nexports.returnFocus = returnFocus;\nexports.setupScopedFocus = setupScopedFocus;\nexports.teardownScopedFocus = teardownScopedFocus;\n\nvar _tabbable = require(\"../helpers/tabbable\");\n\nvar _tabbable2 = _interopRequireDefault(_tabbable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar focusLaterElements = [];\nvar modalElement = null;\nvar needToFocus = false;\n\nfunction handleBlur() {\n needToFocus = true;\n}\n\nfunction handleFocus() {\n if (needToFocus) {\n needToFocus = false;\n if (!modalElement) {\n return;\n }\n // need to see how jQuery shims document.on('focusin') so we don't need the\n // setTimeout, firefox doesn't support focusin, if it did, we could focus\n // the element outside of a setTimeout. Side-effect of this implementation\n // is that the document.body gets focus, and then we focus our element right\n // after, seems fine.\n setTimeout(function () {\n if (modalElement.contains(document.activeElement)) {\n return;\n }\n var el = (0, _tabbable2.default)(modalElement)[0] || modalElement;\n el.focus();\n }, 0);\n }\n}\n\nfunction markForFocusLater() {\n focusLaterElements.push(document.activeElement);\n}\n\n/* eslint-disable no-console */\nfunction returnFocus() {\n var toFocus = null;\n try {\n toFocus = focusLaterElements.pop();\n toFocus.focus();\n return;\n } catch (e) {\n console.warn([\"You tried to return focus to\", toFocus, \"but it is not in the DOM anymore\"].join(\" \"));\n }\n}\n/* eslint-enable no-console */\n\nfunction setupScopedFocus(element) {\n modalElement = element;\n\n if (window.addEventListener) {\n window.addEventListener(\"blur\", handleBlur, false);\n document.addEventListener(\"focus\", handleFocus, true);\n } else {\n window.attachEvent(\"onBlur\", handleBlur);\n document.attachEvent(\"onFocus\", handleFocus);\n }\n}\n\nfunction teardownScopedFocus() {\n modalElement = null;\n\n if (window.addEventListener) {\n window.removeEventListener(\"blur\", handleBlur);\n document.removeEventListener(\"focus\", handleFocus);\n } else {\n window.detachEvent(\"onBlur\", handleBlur);\n document.detachEvent(\"onFocus\", handleFocus);\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-modal/lib/helpers/focusManager.js\n// module id = 48\n// module chunks = 0","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = findTabbableDescendants;\n/*!\n * Adapted from jQuery UI core\n *\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/category/ui-core/\n */\n\nvar tabbableNode = /input|select|textarea|button|object/;\n\nfunction hidden(el) {\n return el.offsetWidth <= 0 && el.offsetHeight <= 0 || el.style.display === \"none\";\n}\n\nfunction visible(element) {\n var parentElement = element;\n while (parentElement) {\n if (parentElement === document.body) break;\n if (hidden(parentElement)) return false;\n parentElement = parentElement.parentNode;\n }\n return true;\n}\n\nfunction focusable(element, isTabIndexNotNaN) {\n var nodeName = element.nodeName.toLowerCase();\n var res = tabbableNode.test(nodeName) && !element.disabled || (nodeName === \"a\" ? element.href || isTabIndexNotNaN : isTabIndexNotNaN);\n return res && visible(element);\n}\n\nfunction tabbable(element) {\n var tabIndex = element.getAttribute(\"tabindex\");\n if (tabIndex === null) tabIndex = undefined;\n var isTabIndexNaN = isNaN(tabIndex);\n return (isTabIndexNaN || tabIndex >= 0) && focusable(element, !isTabIndexNaN);\n}\n\nfunction findTabbableDescendants(element) {\n return [].slice.call(element.querySelectorAll(\"*\"), 0).filter(tabbable);\n}\nmodule.exports = exports[\"default\"];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-modal/lib/helpers/tabbable.js\n// module id = 49\n// module chunks = 0","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = scopeTab;\n\nvar _tabbable = require(\"./tabbable\");\n\nvar _tabbable2 = _interopRequireDefault(_tabbable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction scopeTab(node, event) {\n var tabbable = (0, _tabbable2.default)(node);\n if (!tabbable.length) {\n event.preventDefault();\n return;\n }\n var finalTabbable = tabbable[event.shiftKey ? 0 : tabbable.length - 1];\n var leavingFinalTabbable = finalTabbable === document.activeElement ||\n // handle immediate shift+tab after opening with mouse\n node === document.activeElement;\n if (!leavingFinalTabbable) return;\n event.preventDefault();\n var target = tabbable[event.shiftKey ? tabbable.length - 1 : 0];\n target.focus();\n}\nmodule.exports = exports[\"default\"];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-modal/lib/helpers/scopeTab.js\n// module id = 50\n// module chunks = 0","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.assertNodeList = assertNodeList;\nexports.setElement = setElement;\nexports.tryForceFallback = tryForceFallback;\nexports.validateElement = validateElement;\nexports.hide = hide;\nexports.show = show;\nexports.documentNotReadyOrSSRTesting = documentNotReadyOrSSRTesting;\nexports.resetForTesting = resetForTesting;\nvar globalElement = null;\n\nfunction assertNodeList(nodeList, selector) {\n if (!nodeList || !nodeList.length) {\n throw new Error(\"react-modal: No elements were found for selector \" + selector + \".\");\n }\n}\n\nfunction setElement(element) {\n var useElement = element;\n if (typeof useElement === \"string\") {\n var el = document.querySelectorAll(useElement);\n assertNodeList(el, useElement);\n useElement = \"length\" in el ? el[0] : el;\n }\n globalElement = useElement || globalElement;\n return globalElement;\n}\n\nfunction tryForceFallback() {\n if (document && document.body) {\n // force fallback to document.body\n setElement(document.body);\n return true;\n }\n return false;\n}\n\nfunction validateElement(appElement) {\n if (!appElement && !globalElement && !tryForceFallback()) {\n throw new Error([\"react-modal: Cannot fallback to `document.body`, because it is not\", \"ready or available. If you are doing server-side rendering, use this\", \"function to defined an element. `Modal.setAppElement(el)` to make\", \"this accessible\"].join(\" \"));\n }\n}\n\nfunction hide(appElement) {\n validateElement(appElement);\n (appElement || globalElement).setAttribute(\"aria-hidden\", \"true\");\n}\n\nfunction show(appElement) {\n validateElement(appElement);\n (appElement || globalElement).removeAttribute(\"aria-hidden\");\n}\n\nfunction documentNotReadyOrSSRTesting() {\n globalElement = null;\n}\n\nfunction resetForTesting() {\n globalElement = document.body;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-modal/lib/helpers/ariaAppHider.js\n// module id = 51\n// module chunks = 0","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.get = get;\nexports.add = add;\nexports.remove = remove;\nexports.totalCount = totalCount;\nvar classListMap = {};\n\nfunction get() {\n return classListMap;\n}\n\nfunction add(bodyClass) {\n // Set variable and default if none\n if (!classListMap[bodyClass]) {\n classListMap[bodyClass] = 0;\n }\n classListMap[bodyClass] += 1;\n return bodyClass;\n}\n\nfunction remove(bodyClass) {\n if (classListMap[bodyClass]) {\n classListMap[bodyClass] -= 1;\n }\n return bodyClass;\n}\n\nfunction totalCount() {\n return Object.keys(classListMap).reduce(function (acc, curr) {\n return acc + classListMap[curr];\n }, 0);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-modal/lib/helpers/refCount.js\n// module id = 52\n// module chunks = 0","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.add = add;\nexports.remove = remove;\n\nvar _refCount = require(\"./refCount\");\n\nvar refCount = _interopRequireWildcard(_refCount);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction add(bodyClass) {\n // Increment class(es) on refCount tracker and add class(es) to body\n bodyClass.split(\" \").map(refCount.add).forEach(function (className) {\n return document.body.classList.add(className);\n });\n}\n\nfunction remove(bodyClass) {\n var classListMap = refCount.get();\n // Decrement class(es) from the refCount tracker\n // and remove unused class(es) from body\n bodyClass.split(\" \").map(refCount.remove).filter(function (className) {\n return classListMap[className] === 0;\n }).forEach(function (className) {\n return document.body.classList.remove(className);\n });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-modal/lib/helpers/bodyClassList.js\n// module id = 53\n// module chunks = 0","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.canUseDOM = undefined;\n\nvar _exenv = require(\"exenv\");\n\nvar _exenv2 = _interopRequireDefault(_exenv);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar EE = _exenv2.default;\n\nvar SafeHTMLElement = EE.canUseDOM ? window.HTMLElement : {};\n\nvar canUseDOM = exports.canUseDOM = EE.canUseDOM;\n\nexports.default = SafeHTMLElement;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-modal/lib/helpers/safeHTMLElement.js\n// module id = 54\n// module chunks = 0","/*!\n Copyright (c) 2015 Jed Watson.\n Based on code that is Copyright 2013-2015, Facebook, Inc.\n All rights reserved.\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar canUseDOM = !!(\n\t\ttypeof window !== 'undefined' &&\n\t\twindow.document &&\n\t\twindow.document.createElement\n\t);\n\n\tvar ExecutionEnvironment = {\n\n\t\tcanUseDOM: canUseDOM,\n\n\t\tcanUseWorkers: typeof Worker !== 'undefined',\n\n\t\tcanUseEventListeners:\n\t\t\tcanUseDOM && !!(window.addEventListener || window.attachEvent),\n\n\t\tcanUseViewport: canUseDOM && !!window.screen\n\n\t};\n\n\tif (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\tdefine(function () {\n\t\t\treturn ExecutionEnvironment;\n\t\t});\n\t} else if (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = ExecutionEnvironment;\n\t} else {\n\t\twindow.ExecutionEnvironment = ExecutionEnvironment;\n\t}\n\n}());\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/exenv/index.js\n// module id = 55\n// module chunks = 0","/* eslint no-console: 0 */\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport InsertModalHeader from './InsertModalHeader';\nimport InsertModalFooter from './InsertModalFooter';\nimport InsertModalBody from './InsertModalBody';\n\nconst defaultModalClassName = 'react-bs-table-insert-modal';\n\nexport default class InsertModal extends Component {\n\n handleSave = () => {\n const bodyRefs = this.refs.body;\n if (bodyRefs.getFieldValue) {\n this.props.onSave(bodyRefs.getFieldValue());\n } else {\n console.error(`Custom InsertModalBody should implement getFieldValue function\n and should return an object presented as the new row that user input.`);\n }\n }\n\n render() {\n let { headerComponent, footerComponent, bodyComponent } = this.props;\n const {\n columns,\n validateState,\n ignoreEditable,\n onModalClose\n } = this.props;\n const bodyAttr = { columns, validateState, ignoreEditable };\n\n bodyComponent = bodyComponent && bodyComponent(columns, validateState, ignoreEditable);\n\n headerComponent = headerComponent && headerComponent(onModalClose, this.handleSave);\n\n footerComponent = footerComponent && footerComponent(onModalClose, this.handleSave);\n\n if (bodyComponent) {\n bodyComponent = React.cloneElement(bodyComponent, { ref: 'body' });\n }\n\n if (headerComponent && headerComponent.type.name === InsertModalHeader.name) {\n const eventProps = {};\n if (!headerComponent.props.onModalClose) eventProps.onModalClose = onModalClose;\n if (!headerComponent.props.onSave) eventProps.onSave = this.handleSave;\n if (Object.keys(eventProps).length > 0) {\n headerComponent = React.cloneElement(headerComponent, eventProps);\n }\n } else if (headerComponent && headerComponent.type.name !== InsertModalHeader.name) {\n const { className } = headerComponent.props;\n if (typeof className === 'undefined' || className.indexOf('modal-header') === -1) {\n headerComponent = ({ headerComponent }
);\n }\n }\n\n if (footerComponent && footerComponent.type.name === InsertModalFooter.name) {\n const eventProps = {};\n if (!footerComponent.props.onModalClose) eventProps.onModalClose = onModalClose;\n if (!footerComponent.props.onSave) eventProps.onSave = this.handleSave;\n if (Object.keys(eventProps).length > 0) {\n footerComponent = React.cloneElement(footerComponent, eventProps);\n }\n } else if (footerComponent && footerComponent.type.name !== InsertModalFooter.name) {\n const { className } = footerComponent.props;\n if (typeof className === 'undefined' || className.indexOf('modal-footer') === -1) {\n footerComponent = ({ footerComponent }
);\n }\n }\n\n return (\n \n {\n headerComponent ||\n ()\n }\n {\n bodyComponent ||\n ()\n }\n {\n footerComponent ||\n ()\n }\n
\n );\n }\n}\nInsertModal.propTypes = {\n version: PropTypes.string.isRequired,\n columns: PropTypes.array.isRequired,\n validateState: PropTypes.object.isRequired,\n ignoreEditable: PropTypes.bool,\n headerComponent: PropTypes.func,\n bodyComponent: PropTypes.func,\n footerComponent: PropTypes.func,\n onModalClose: PropTypes.func,\n onSave: PropTypes.func\n};\n\nInsertModal.defaultProps = {};\n\n\n\n// WEBPACK FOOTER //\n// src/toolbar/InsertModal.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Util from '../util';\n\nclass InsertModalHeader extends Component {\n\n handleCloseBtnClick = e => {\n const { onModalClose, beforeClose } = this.props;\n beforeClose && beforeClose(e);\n onModalClose();\n }\n\n renderContent(closeBtn) {\n const { version, title: titleText } = this.props;\n const title = { titleText }
;\n if (Util.isBootstrap4(version)) {\n return [ title, closeBtn ];\n } else {\n return (\n \n { closeBtn }\n { title }\n \n );\n }\n }\n\n render() {\n const {\n hideClose,\n className,\n children\n } = this.props;\n\n const closeBtn = hideClose ? null : (\n \n );\n\n const content = children || this.renderContent(closeBtn);\n\n return (\n \n { content }\n
\n );\n }\n}\n\nInsertModalHeader.propTypes = {\n version: PropTypes.string,\n className: PropTypes.string,\n title: PropTypes.string,\n onModalClose: PropTypes.func,\n hideClose: PropTypes.bool,\n beforeClose: PropTypes.func\n};\nInsertModalHeader.defaultProps = {\n version: '3',\n className: '',\n title: 'Add Row',\n onModalClose: undefined,\n hideClose: false,\n beforeClose: undefined\n};\n\nexport default InsertModalHeader;\n\n\n\n// WEBPACK FOOTER //\n// src/toolbar/InsertModalHeader.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Const from '../Const';\n\nclass InsertModalFooter extends Component {\n\n handleCloseBtnClick = e => {\n const { beforeClose, onModalClose } = this.props;\n beforeClose && beforeClose(e);\n onModalClose();\n }\n\n handleSaveBtnClick = e => {\n const { beforeSave, onSave } = this.props;\n beforeSave && beforeSave(e);\n onSave();\n }\n\n render() {\n const {\n className,\n saveBtnText,\n closeBtnText,\n closeBtnContextual,\n saveBtnContextual,\n closeBtnClass,\n saveBtnClass,\n children\n } = this.props;\n\n const content = children || [\n (),\n ()\n ];\n\n return (\n \n { content }\n
\n );\n }\n}\nInsertModalFooter.propTypes = {\n className: PropTypes.string,\n saveBtnText: PropTypes.string,\n closeBtnText: PropTypes.string,\n closeBtnContextual: PropTypes.string,\n saveBtnContextual: PropTypes.string,\n closeBtnClass: PropTypes.string,\n saveBtnClass: PropTypes.string,\n beforeClose: PropTypes.func,\n beforeSave: PropTypes.func,\n onSave: PropTypes.func,\n onModalClose: PropTypes.func\n};\nInsertModalFooter.defaultProps = {\n className: '',\n saveBtnText: Const.SAVE_BTN_TEXT,\n closeBtnText: Const.CLOSE_BTN_TEXT,\n closeBtnContextual: 'btn-default btn-secondary',\n saveBtnContextual: 'btn-primary',\n closeBtnClass: '',\n saveBtnClass: '',\n beforeClose: undefined,\n beforeSave: undefined\n};\n\nexport default InsertModalFooter;\n\n\n\n// WEBPACK FOOTER //\n// src/toolbar/InsertModalFooter.js","/* eslint react/display-name: 0 */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport editor from '../Editor';\n\nclass InsertModalBody extends Component {\n\n getFieldValue() {\n const newRow = {};\n this.props.columns.forEach((column, i) => {\n let inputVal;\n if (column.autoValue) {\n // when you want same auto generate value and not allow edit, example ID field\n const time = new Date().getTime();\n inputVal = typeof column.autoValue === 'function' ?\n column.autoValue() :\n (`autovalue-${time}`);\n } else if (column.hiddenOnInsert || !column.field) {\n inputVal = '';\n } else {\n const dom = this.refs[column.field + i];\n inputVal = dom.value;\n\n if (column.editable && column.editable.type === 'checkbox') {\n const values = inputVal.split(':');\n inputVal = dom.checked ? values[0] : values[1];\n } else if (column.customInsertEditor) {\n inputVal = inputVal || dom.getFieldValue();\n }\n }\n newRow[column.field] = inputVal;\n }, this);\n return newRow;\n }\n\n render() {\n const { columns, validateState, ignoreEditable } = this.props;\n return (\n \n {\n columns.map((column, i) => {\n const {\n editable,\n format,\n field,\n name,\n autoValue,\n hiddenOnInsert,\n customInsertEditor\n } = column;\n const attr = {\n ref: field + i,\n placeholder: editable.placeholder ? editable.placeholder : name\n };\n let fieldElement;\n const defaultValue = editable.defaultValue || undefined;\n if (customInsertEditor) {\n const { getElement } = customInsertEditor;\n fieldElement = getElement(column, attr, 'form-control', ignoreEditable, defaultValue);\n }\n\n // fieldElement = false, means to use default editor when enable custom editor\n // Becasuse some users want to have default editor based on some condition.\n if (!customInsertEditor || fieldElement === false) {\n fieldElement = editor(editable, attr, format, '', defaultValue, ignoreEditable);\n }\n\n if (autoValue || hiddenOnInsert || !column.field) {\n // when you want same auto generate value\n // and not allow edit, for example ID field\n return null;\n }\n const error = validateState[field] ?\n (
{ validateState[field] }) :\n null;\n return (\n
\n \n { fieldElement }\n { error }\n
\n );\n })\n }\n
\n );\n }\n}\nInsertModalBody.propTypes = {\n columns: PropTypes.array,\n validateState: PropTypes.object,\n ignoreEditable: PropTypes.bool\n};\n\nInsertModalBody.defaultProps = {\n validateState: {},\n ignoreEditable: false\n};\n\nexport default InsertModalBody;\n\n\n\n// WEBPACK FOOTER //\n// src/toolbar/InsertModalBody.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Const from '../Const';\n\nconst insertBtnDefaultClass = 'react-bs-table-add-btn';\n\nclass InsertButton extends Component {\n render() {\n const {\n btnContextual,\n className,\n onClick,\n btnGlyphicon,\n btnText,\n children,\n ...rest\n } = this.props;\n const content = children ||\n ( { btnText });\n return (\n \n );\n }\n}\n\nInsertButton.propTypes = {\n btnText: PropTypes.string,\n btnContextual: PropTypes.string,\n className: PropTypes.string,\n onClick: PropTypes.func,\n btnGlyphicon: PropTypes.string\n};\nInsertButton.defaultProps = {\n btnText: Const.INSERT_BTN_TEXT,\n btnContextual: 'btn-info',\n className: '',\n onClick: undefined,\n btnGlyphicon: 'glyphicon-plus fa-plus'\n};\n\nexport default InsertButton;\n\n\n\n// WEBPACK FOOTER //\n// src/toolbar/InsertButton.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Const from '../Const';\n\nconst deleteBtnDefaultClass = 'react-bs-table-del-btn';\n\nclass DeleteButton extends Component {\n render() {\n const {\n btnContextual,\n className,\n onClick,\n btnGlyphicon,\n btnText,\n children,\n ...rest\n } = this.props;\n const content = children ||\n ( { btnText });\n return (\n \n );\n }\n}\n\nDeleteButton.propTypes = {\n btnText: PropTypes.string,\n btnContextual: PropTypes.string,\n className: PropTypes.string,\n onClick: PropTypes.func,\n btnGlyphicon: PropTypes.string\n};\nDeleteButton.defaultProps = {\n btnText: Const.DELETE_BTN_TEXT,\n btnContextual: 'btn-warning',\n className: '',\n onClick: undefined,\n btnGlyphicon: 'glyphicon-trash fa-trash'\n};\n\nexport default DeleteButton;\n\n\n\n// WEBPACK FOOTER //\n// src/toolbar/DeleteButton.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Const from '../Const';\n\nconst exportCsvBtnDefaultClass = 'react-bs-table-csv-btn';\n\nclass ExportCSVButton extends Component {\n render() {\n const {\n btnContextual,\n className,\n onClick,\n btnGlyphicon,\n btnText,\n children,\n ...rest\n } = this.props;\n const content = children ||\n ( { btnText });\n return (\n \n );\n }\n}\n\nExportCSVButton.propTypes = {\n btnText: PropTypes.string,\n btnContextual: PropTypes.string,\n className: PropTypes.string,\n onClick: PropTypes.func,\n btnGlyphicon: PropTypes.string\n};\nExportCSVButton.defaultProps = {\n btnText: Const.EXPORT_CSV_TEXT,\n btnContextual: 'btn-success',\n className: '',\n onClick: undefined,\n btnGlyphicon: 'glyphicon-export fa-download'\n};\n\nexport default ExportCSVButton;\n\n\n\n// WEBPACK FOOTER //\n// src/toolbar/ExportCSVButton.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Const from '../Const';\n\nconst showSelectedOnlyBtnDefaultClass = 'react-bs-table-show-sel-only-btn';\n\nclass ShowSelectedOnlyButton extends Component {\n render() {\n const {\n btnContextual,\n className,\n onClick,\n toggle,\n showAllText,\n showOnlySelectText,\n children,\n ...rest\n } = this.props;\n const content = children ||\n ({ toggle ? showAllText : showOnlySelectText });\n return (\n \n );\n }\n}\n\nShowSelectedOnlyButton.propTypes = {\n showAllText: PropTypes.string,\n showOnlySelectText: PropTypes.string,\n toggle: PropTypes.bool,\n btnContextual: PropTypes.string,\n className: PropTypes.string,\n onClick: PropTypes.func\n};\nShowSelectedOnlyButton.defaultProps = {\n showAllText: Const.SHOW_ALL,\n showOnlySelectText: Const.SHOW_ONLY_SELECT,\n toggle: false,\n btnContextual: 'btn-primary',\n className: '',\n onClick: undefined\n};\n\nexport default ShowSelectedOnlyButton;\n\n\n\n// WEBPACK FOOTER //\n// src/toolbar/ShowSelectedOnlyButton.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\n\nclass SearchField extends Component {\n\n getValue() {\n return ReactDOM.findDOMNode(this).value;\n }\n\n setValue(value) {\n ReactDOM.findDOMNode(this).value = value;\n }\n\n render() {\n const {\n className,\n defaultValue,\n placeholder,\n onKeyUp,\n ...rest\n } = this.props;\n return (\n \n );\n }\n}\n\nSearchField.propTypes = {\n className: PropTypes.string,\n defaultValue: PropTypes.string,\n placeholder: PropTypes.string,\n onKeyUp: PropTypes.func\n};\nSearchField.defaultProps = {\n className: '',\n defaultValue: '',\n placeholder: 'Search',\n onKeyUp: undefined\n};\n\nexport default SearchField;\n\n\n\n// WEBPACK FOOTER //\n// src/toolbar/SearchField.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nconst clearBtnDefaultClass = 'react-bs-table-search-clear-btn';\n\nclass ClearSearchButton extends Component {\n\n render() {\n const {\n btnContextual,\n className,\n onClick,\n btnText,\n children,\n ...rest\n } = this.props;\n const content = children ||\n ({ btnText });\n return (\n \n );\n }\n}\n\nClearSearchButton.propTypes = {\n btnContextual: PropTypes.string,\n className: PropTypes.string,\n btnText: PropTypes.string,\n onClick: PropTypes.func\n};\nClearSearchButton.defaultProps = {\n btnContextual: 'btn-default btn-secondary',\n className: '',\n btnText: 'Clear',\n onClick: undefined\n};\n\nexport default ClearSearchButton;\n\n\n\n// WEBPACK FOOTER //\n// src/toolbar/ClearSearchButton.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Const from './Const';\nimport classSet from 'classnames';\n\nclass TableFilter extends Component {\n\n constructor(props) {\n super(props);\n this.filterObj = {};\n }\n\n handleKeyUp = e => {\n const { value, name } = e.currentTarget;\n if (value.trim() === '') {\n delete this.filterObj[name];\n } else {\n this.filterObj[name] = value;\n }\n this.props.onFilter(this.filterObj);\n }\n\n render() {\n const { striped, condensed, rowSelectType, columns } = this.props;\n const tableClasses = classSet('table', {\n 'table-striped': striped,\n 'table-condensed': condensed\n });\n let selectRowHeader = null;\n\n if (rowSelectType === Const.ROW_SELECT_SINGLE ||\n rowSelectType === Const.ROW_SELECT_MULTI) {\n const style = {\n width: 35,\n paddingLeft: 0,\n paddingRight: 0\n };\n selectRowHeader = (Filter | );\n }\n\n const filterField = columns.map(function(column) {\n const { hidden, width, name } = column;\n const thStyle = {\n display: hidden ? 'none' : null,\n width\n };\n return (\n \n \n \n \n | \n );\n }, this);\n\n return (\n \n \n \n { selectRowHeader }{ filterField }\n
\n \n
\n );\n }\n}\nTableFilter.propTypes = {\n columns: PropTypes.array,\n rowSelectType: PropTypes.string,\n onFilter: PropTypes.func\n};\nexport default TableFilter;\n\n\n\n// WEBPACK FOOTER //\n// src/TableFilter.js","/* eslint no-nested-ternary: 0 */\n/* eslint guard-for-in: 0 */\n/* eslint no-console: 0 */\n/* eslint eqeqeq: 0 */\n/* eslint one-var: 0 */\nimport Const from '../Const';\n\nexport class TableDataStore {\n\n constructor(data) {\n this.data = data;\n this.filteredData = null;\n this.isOnFilter = false;\n this.filterObj = null;\n this.searchText = null;\n this.sortList = [];\n this.pageObj = {};\n this.selected = [];\n this.showOnlySelected = false;\n }\n\n setProps(props) {\n this.keyField = props.keyField;\n this.enablePagination = props.isPagination;\n this.colInfos = props.colInfos;\n this.remote = props.remote;\n this.multiColumnSearch = props.multiColumnSearch;\n // default behaviour if strictSearch prop is not provided: !multiColumnSearch\n this.strictSearch = typeof props.strictSearch === 'undefined' ?\n !props.multiColumnSearch : props.strictSearch;\n this.multiColumnSort = props.multiColumnSort;\n }\n\n clean() {\n this.filteredData = null;\n this.isOnFilter = false;\n this.filterObj = null;\n this.searchText = null;\n this.sortList = [];\n this.pageObj = {};\n this.selected = [];\n }\n\n isSearching() {\n return this.searchText !== null;\n }\n\n isFiltering() {\n return this.filterObj !== null;\n }\n\n setData(data) {\n this.data = data;\n if (this.remote) {\n return;\n }\n\n this._refresh(true);\n }\n\n getColInfos() {\n return this.colInfos;\n }\n\n getSortInfo() {\n return this.sortList;\n }\n\n setSortInfo(order, sortField) {\n if (typeof order !== typeof sortField) {\n throw new Error('The type of sort field and order should be both with String or Array');\n }\n if (Array.isArray(order) && Array.isArray(sortField)) {\n if (order.length !== sortField.length) {\n throw new Error('The length of sort fields and orders should be equivalent');\n }\n order = order.slice().reverse();\n this.sortList = sortField.slice().reverse().map((field, i) => {\n return {\n order: order[i],\n sortField: field\n };\n });\n this.sortList = this.sortList.slice(0, this.multiColumnSort);\n } else {\n const sortObj = {\n order: order,\n sortField: sortField\n };\n\n if (this.multiColumnSort > 1) {\n let i = this.sortList.length - 1;\n let sortFieldInHistory = false;\n\n for (; i >= 0; i--) {\n if (this.sortList[i].sortField === sortField) {\n sortFieldInHistory = true;\n break;\n }\n }\n\n if (sortFieldInHistory) {\n if (i > 0) {\n this.sortList = this.sortList.slice(0, i);\n } else {\n this.sortList = this.sortList.slice(1);\n }\n }\n\n this.sortList.unshift(sortObj);\n this.sortList = this.sortList.slice(0, this.multiColumnSort);\n } else {\n this.sortList = [ sortObj ];\n }\n }\n }\n\n cleanSortInfo() {\n this.sortList = [];\n }\n\n setSelectedRowKey(selectedRowKeys) {\n this.selected = selectedRowKeys;\n }\n\n getRowByKey(keys) {\n // Bad Performance #1164\n // return keys.map(key => {\n // const result = this.data.filter(d => d[this.keyField] === key);\n // if (result.length !== 0) return result[0];\n // });\n const result = [];\n if (!keys || keys.length === 0) {\n return result;\n }\n for (let i = 0; i < this.data.length; i++) {\n const d = this.data[i];\n if (keys.indexOf(d[this.keyField]) > -1) {\n keys = keys.filter(k => k !== d[this.keyField]);\n result.push(d);\n }\n }\n return result;\n }\n\n getSelectedRowKeys() {\n return this.selected;\n }\n\n getCurrentDisplayData() {\n if (this.isOnFilter) return this.filteredData;\n else return this.data;\n }\n\n _refresh(skipSorting) {\n if (this.isOnFilter) {\n if (this.filterObj !== null) this.filter(this.filterObj);\n if (this.searchText !== null) this.search(this.searchText);\n }\n if (!skipSorting && this.sortList.length > 0) {\n this.sort();\n }\n }\n\n ignoreNonSelected() {\n this.showOnlySelected = !this.showOnlySelected;\n if (this.showOnlySelected) {\n this.isOnFilter = true;\n this.filteredData = this.data.filter( row => {\n const result = this.selected.find(x => row[this.keyField] === x);\n return typeof result !== 'undefined' ? true : false;\n });\n } else {\n this.isOnFilter = false;\n }\n }\n\n sort() {\n let currentDisplayData = this.getCurrentDisplayData();\n\n currentDisplayData = this._sort(currentDisplayData);\n\n return this;\n }\n\n page(page, sizePerPage) {\n this.pageObj.end = page * sizePerPage - 1;\n this.pageObj.start = this.pageObj.end - (sizePerPage - 1);\n return this;\n }\n\n edit(newVal, rowIndex, fieldName) {\n const currentDisplayData = this.getCurrentDisplayData();\n let rowKeyCache;\n if (!this.enablePagination) {\n currentDisplayData[rowIndex][fieldName] = newVal;\n rowKeyCache = currentDisplayData[rowIndex][this.keyField];\n } else {\n currentDisplayData[this.pageObj.start + rowIndex][fieldName] = newVal;\n rowKeyCache = currentDisplayData[this.pageObj.start + rowIndex][this.keyField];\n }\n if (this.isOnFilter) {\n this.data.forEach(function(row) {\n if (row[this.keyField] === rowKeyCache) {\n row[fieldName] = newVal;\n }\n }, this);\n if (this.filterObj !== null) this.filter(this.filterObj);\n if (this.searchText !== null) this.search(this.searchText);\n }\n return this;\n }\n\n addAtBegin(newObj) {\n if (!newObj[this.keyField] || newObj[this.keyField].toString() === '') {\n throw new Error(`${this.keyField} can't be empty value.`);\n }\n const currentDisplayData = this.getCurrentDisplayData();\n currentDisplayData.forEach(function(row) {\n if (row[this.keyField].toString() === newObj[this.keyField].toString()) {\n throw new Error(`${this.keyField} ${newObj[this.keyField]} already exists`);\n }\n }, this);\n currentDisplayData.unshift(newObj);\n if (this.isOnFilter) {\n this.data.unshift(newObj);\n }\n this._refresh(false);\n }\n\n add(newObj) {\n const e = this.isValidKey(newObj[this.keyField]);\n if (e) throw new Error(e);\n\n const currentDisplayData = this.getCurrentDisplayData();\n currentDisplayData.push(newObj);\n if (this.isOnFilter) {\n this.data.push(newObj);\n }\n this._refresh(false);\n }\n\n isValidKey = key => {\n if (key === null || key === undefined || key.toString() === '') {\n return `${this.keyField} can't be empty value.`;\n }\n const currentDisplayData = this.getCurrentDisplayData();\n const exist = currentDisplayData.find(row => row[this.keyField].toString() === key.toString());\n if (exist) return `${this.keyField} ${key} already exists`;\n }\n\n remove(rowKey) {\n const currentDisplayData = this.getCurrentDisplayData();\n const result = currentDisplayData.filter(row => {\n return rowKey.indexOf(row[this.keyField]) === -1;\n });\n\n if (this.isOnFilter) {\n this.data = this.data.filter(row => {\n return rowKey.indexOf(row[this.keyField]) === -1;\n });\n this.filteredData = result;\n } else {\n this.data = result;\n }\n }\n\n filter(filterObj) {\n if (Object.keys(filterObj).length === 0) {\n this.filteredData = null;\n this.isOnFilter = false;\n this.filterObj = null;\n if (this.searchText) this._search(this.data);\n } else {\n let source = this.data;\n this.filterObj = filterObj;\n if (this.searchText) {\n this._search(source);\n source = this.filteredData;\n }\n this._filter(source);\n }\n }\n\n filterNumber(targetVal, filterVal, comparator) {\n let valid = true;\n switch (comparator) {\n case '=': {\n if (targetVal != filterVal) {\n valid = false;\n }\n break;\n }\n case '>': {\n if (targetVal <= filterVal) {\n valid = false;\n }\n break;\n }\n case '>=': {\n if (targetVal < filterVal) {\n valid = false;\n }\n break;\n }\n case '<': {\n if (targetVal >= filterVal) {\n valid = false;\n }\n break;\n }\n case '<=': {\n if (targetVal > filterVal) {\n valid = false;\n }\n break;\n }\n case '!=': {\n if (targetVal == filterVal) {\n valid = false;\n }\n break;\n }\n default: {\n console.error('Number comparator provided is not supported');\n break;\n }\n }\n return valid;\n }\n\n filterDate(targetVal, filterVal, comparator) {\n if (!targetVal) return false;\n\n const filterDate = filterVal.getDate();\n const filterMonth = filterVal.getMonth();\n const filterYear = filterVal.getFullYear();\n\n if (typeof targetVal !== 'object') {\n targetVal = new Date(targetVal);\n }\n\n const targetDate = targetVal.getDate();\n const targetMonth = targetVal.getMonth();\n const targetYear = targetVal.getFullYear();\n\n let valid = true;\n switch (comparator) {\n case '=': {\n if (filterDate !== targetDate ||\n filterMonth !== targetMonth ||\n filterYear !== targetYear) {\n valid = false;\n }\n break;\n }\n case '>': {\n if (targetVal <= filterVal) {\n valid = false;\n }\n break;\n }\n case '>=': {\n if (targetYear < filterYear) {\n valid = false;\n } else if (targetYear === filterYear &&\n targetMonth < filterMonth) {\n valid = false;\n } else if (targetYear === filterYear &&\n targetMonth === filterMonth &&\n targetDate < filterDate) {\n valid = false;\n }\n break;\n }\n case '<': {\n if (targetVal >= filterVal) {\n valid = false;\n }\n break;\n }\n case '<=': {\n if (targetYear > filterYear) {\n valid = false;\n } else if (targetYear === filterYear &&\n targetMonth > filterMonth) {\n valid = false;\n } else if (targetYear === filterYear &&\n targetMonth === filterMonth &&\n targetDate > filterDate) {\n valid = false;\n }\n break;\n }\n case '!=': {\n if (filterDate === targetDate &&\n filterMonth === targetMonth &&\n filterYear === targetYear) {\n valid = false;\n }\n break;\n }\n default: {\n console.error('Date comparator provided is not supported');\n break;\n }\n }\n return valid;\n }\n\n filterRegex(targetVal, filterVal) {\n try {\n return new RegExp(filterVal, 'i').test(targetVal);\n } catch (e) {\n return true;\n }\n }\n\n filterCustom(targetVal, filterVal, callbackInfo, cond) {\n if (callbackInfo !== null && typeof callbackInfo === 'object') {\n return callbackInfo.callback(targetVal, callbackInfo.callbackParameters);\n }\n\n return this.filterText(targetVal, filterVal, cond);\n }\n\n filterText(targetVal, filterVal, cond = Const.FILTER_COND_LIKE) {\n targetVal = targetVal.toString();\n filterVal = filterVal.toString();\n if (cond === Const.FILTER_COND_EQ) {\n return targetVal === filterVal;\n } else {\n targetVal = targetVal.toLowerCase();\n filterVal = filterVal.toLowerCase();\n return !(targetVal.indexOf(filterVal) === -1);\n }\n }\n\n /**\n * Filter if targetVal is contained in filterVal.\n */\n filterArray(targetVal, filterVal) {\n // case insensitive\n return filterVal.indexOf(targetVal) > -1;\n }\n\n /* General search function\n * It will search for the text if the input includes that text;\n */\n search(searchText) {\n if (searchText.trim() === '') {\n this.filteredData = null;\n this.isOnFilter = false;\n this.searchText = null;\n if (this.filterObj) this._filter(this.data);\n } else {\n let source = this.data;\n this.searchText = searchText;\n if (this.filterObj) {\n this._filter(source);\n source = this.filteredData;\n }\n this._search(source);\n }\n }\n\n _filter(source) {\n const filterObj = this.filterObj;\n this.filteredData = source.filter((row, r) => {\n let valid = true;\n let filterVal;\n for (const key in filterObj) {\n let targetVal = row[key];\n if (targetVal === null || targetVal === undefined) {\n targetVal = '';\n }\n\n switch (filterObj[key].type) {\n case Const.FILTER_TYPE.NUMBER: {\n filterVal = filterObj[key].value.number;\n break;\n }\n case Const.FILTER_TYPE.CUSTOM: {\n filterVal = (typeof filterObj[key].value === 'object') ?\n undefined :\n (typeof filterObj[key].value === 'string') ?\n filterObj[key].value.toLowerCase() :\n filterObj[key].value;\n break;\n }\n case Const.FILTER_TYPE.DATE: {\n filterVal = filterObj[key].value.date;\n break;\n }\n case Const.FILTER_TYPE.REGEX: {\n filterVal = filterObj[key].value;\n break;\n }\n case Const.FILTER_TYPE.ARRAY: {\n filterVal = filterObj[key].value;\n if (!Array.isArray(filterVal)) {\n throw new Error('Value must be an Array');\n }\n break;\n }\n default: {\n filterVal = filterObj[key].value;\n if (filterVal === undefined) {\n // Support old filter\n filterVal = filterObj[key];\n }\n break;\n }\n }\n let format, filterFormatted, formatExtraData, filterValue;\n if (this.colInfos[key]) {\n format = this.colInfos[key].format;\n filterFormatted = this.colInfos[key].filterFormatted;\n formatExtraData = this.colInfos[key].formatExtraData;\n filterValue = this.colInfos[key].filterValue;\n if (filterFormatted && format) {\n targetVal = format(row[key], row, formatExtraData, r);\n } else if (filterValue) {\n targetVal = filterValue(row[key], row);\n }\n }\n\n switch (filterObj[key].type) {\n case Const.FILTER_TYPE.NUMBER: {\n valid = this.filterNumber(targetVal, filterVal, filterObj[key].value.comparator);\n break;\n }\n case Const.FILTER_TYPE.DATE: {\n valid = this.filterDate(targetVal, filterVal, filterObj[key].value.comparator);\n break;\n }\n case Const.FILTER_TYPE.REGEX: {\n valid = this.filterRegex(targetVal, filterVal);\n break;\n }\n case Const.FILTER_TYPE.CUSTOM: {\n const cond = filterObj[key].props ? filterObj[key].props.cond : Const.FILTER_COND_LIKE;\n valid = this.filterCustom(targetVal, filterVal, filterObj[key].value, cond);\n break;\n }\n case Const.FILTER_TYPE.ARRAY: {\n valid = this.filterArray(targetVal, filterVal);\n break;\n }\n default: {\n if (filterObj[key].type === Const.FILTER_TYPE.SELECT &&\n filterFormatted && filterFormatted && format) {\n filterVal = format(filterVal, row, formatExtraData, r);\n }\n const cond = filterObj[key].props ? filterObj[key].props.cond : Const.FILTER_COND_LIKE;\n valid = this.filterText(targetVal, filterVal, cond);\n break;\n }\n }\n if (!valid) {\n break;\n }\n }\n return valid;\n });\n this.isOnFilter = true;\n }\n\n /*\n * Four different sort modes, all case insensitive:\n * (1) strictSearch && !multiColumnSearch\n * search text must be contained as provided in a single column\n * (2) strictSearch && multiColumnSearch\n * conjunction (AND combination) of whitespace separated terms over multiple columns\n * (3) !strictSearch && !multiColumnSearch\n * conjunction (AND combination) of whitespace separated terms in a single column\n * (4) !strictSearch && multiColumnSearch\n * any of the whitespace separated terms must be contained in any column\n */\n _search(source) {\n let searchTextArray;\n if (this.multiColumnSearch || !this.strictSearch) {\n // ignore leading and trailing whitespaces\n searchTextArray = this.searchText.trim().toLowerCase().split(/\\s+/);\n } else {\n searchTextArray = [ this.searchText.toLowerCase() ];\n }\n const searchTermCount = searchTextArray.length;\n const multipleTerms = searchTermCount > 1;\n const nonStrictMultiCol = multipleTerms && !this.strictSearch && this.multiColumnSearch;\n const nonStrictSingleCol = multipleTerms && !this.strictSearch && !this.multiColumnSearch;\n this.filteredData = source.filter((row, r) => {\n const keys = Object.keys(row);\n // only clone array if necessary\n let searchTerms = multipleTerms ? searchTextArray.slice() : searchTextArray;\n // for loops are ugly, but performance matters here.\n // And you cant break from a forEach.\n // http://jsperf.com/for-vs-foreach/66\n for (let i = 0, keysLength = keys.length; i < keysLength; i++) {\n const key = keys[i];\n const colInfo = this.colInfos[key];\n if (colInfo && colInfo.searchable) {\n const {\n format,\n filterFormatted,\n filterValue,\n formatExtraData\n } = colInfo;\n let targetVal;\n if (filterFormatted && format) {\n targetVal = format(row[key], row, formatExtraData, r);\n } else if (filterValue) {\n targetVal = filterValue(row[key], row);\n } else {\n targetVal = row[key];\n }\n if (targetVal !== null && typeof targetVal !== 'undefined') {\n targetVal = targetVal.toString().toLowerCase();\n if (nonStrictSingleCol && searchTermCount > searchTerms.length) {\n // reset search terms for single column search\n searchTerms = searchTextArray.slice();\n }\n for (let j = searchTerms.length - 1; j > -1; j--) {\n if (targetVal.indexOf(searchTerms[j]) !== -1) {\n if (nonStrictMultiCol || searchTerms.length === 1) {\n // match found: the last or only one\n return true;\n }\n // match found: but there are more search terms to check for\n searchTerms.splice(j, 1);\n } else if (!this.multiColumnSearch) {\n // one of the search terms was not found in this column\n break;\n }\n }\n }\n }\n }\n return false;\n });\n this.isOnFilter = true;\n }\n\n _sort(arr) {\n if (this.sortList.length === 0 || typeof(this.sortList[0]) === 'undefined') {\n return arr;\n }\n\n arr.sort((a, b) => {\n let result = 0;\n\n for (let i = 0; i < this.sortList.length; i++) {\n const sortDetails = this.sortList[i];\n const isDesc = sortDetails.order.toLowerCase() === Const.SORT_DESC;\n\n const { sortFunc, sortFuncExtraData } = this.colInfos[sortDetails.sortField];\n\n if (sortFunc) {\n result = sortFunc(a, b, sortDetails.order, sortDetails.sortField, sortFuncExtraData);\n } else {\n const valueA = a[sortDetails.sortField] == null ? '' : a[sortDetails.sortField];\n const valueB = b[sortDetails.sortField] == null ? '' : b[sortDetails.sortField];\n\n if (isDesc) {\n if (typeof valueB === 'string') {\n result = valueB.localeCompare(valueA);\n } else {\n result = valueA > valueB ? -1 : ((valueA < valueB) ? 1 : 0);\n }\n } else {\n if (typeof valueA === 'string') {\n result = valueA.localeCompare(valueB);\n } else {\n result = valueA < valueB ? -1 : ((valueA > valueB) ? 1 : 0);\n }\n }\n }\n\n if (result !== 0) {\n return result;\n }\n }\n\n return result;\n });\n\n return arr;\n }\n\n getDataIgnoringPagination() {\n return this.getCurrentDisplayData();\n }\n\n get() {\n const _data = this.getCurrentDisplayData();\n\n if (_data.length === 0) return _data;\n\n const remote = typeof this.remote === 'function' ?\n (this.remote(Const.REMOTE))[Const.REMOTE_PAGE] : this.remote;\n\n if (remote || !this.enablePagination) {\n return _data;\n } else {\n const result = [];\n for (let i = this.pageObj.start; i <= this.pageObj.end; i++) {\n result.push(_data[i]);\n if (i + 1 === _data.length) break;\n }\n return result;\n }\n }\n\n getKeyField() {\n return this.keyField;\n }\n\n getDataNum() {\n return this.getCurrentDisplayData().length;\n }\n\n isChangedPage() {\n return this.pageObj.start && this.pageObj.end ? true : false;\n }\n\n isEmpty() {\n return (this.data.length === 0 ||\n this.data === null ||\n this.data === undefined);\n }\n\n getAllRowkey() {\n return this.data.map(row => {\n return row[this.keyField];\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// src/store/TableDataStore.js","/* eslint block-scoped-var: 0 */\n/* eslint vars-on-top: 0 */\n/* eslint no-var: 0 */\n/* eslint no-unused-vars: 0 */\nimport Util from './util';\nimport Const from './Const';\n\nif (Util.canUseDOM()) {\n const filesaver = require('./filesaver');\n var saveAs = filesaver.saveAs;\n}\n\nfunction toString(data, keys, separator, excludeCSVHeader) {\n let dataString = '';\n if (data.length === 0) return dataString;\n\n const headCells = [];\n let rowCount = 0;\n keys.forEach(key => {\n if (key.row > rowCount) {\n rowCount = key.row;\n }\n // rowCount += (key.rowSpan + key.colSpan - 1);\n for (var index = 0; index < key.colSpan; index++) {\n headCells.push(key);\n }\n });\n\n const firstRow = excludeCSVHeader ? 1 : 0;\n for (let i = firstRow; i <= rowCount; i++) {\n dataString += headCells.map(x => {\n if ((x.row + (x.rowSpan - 1)) === i) {\n return `\"${x.header}\"`;\n }\n if (x.row === i && x.rowSpan > 1) {\n return '';\n }\n }).filter(key => {\n return typeof key !== 'undefined';\n }).join(separator) + '\\n';\n }\n\n keys = keys.filter(key => {\n return key.field !== undefined;\n });\n\n data.map(function(row) {\n keys.map(function(col, i) {\n const { field, format, extraData, type } = col;\n let value = typeof format !== 'undefined' ? format(row[field], row, extraData) : row[field];\n value = type === Const.CSV_NUMBER_TYPE ? Number(value) : `\"${value}\"`;\n const cell = typeof value !== 'undefined' ? value : '';\n dataString += cell;\n if (i + 1 < keys.length) dataString += separator;\n });\n\n dataString += '\\n';\n });\n\n return dataString;\n}\n\nconst exportCSV = function(data, keys, filename, separator, noAutoBOM, excludeCSVHeader) {\n const dataString = toString(data, keys, separator, excludeCSVHeader);\n if (typeof window !== 'undefined') {\n noAutoBOM = noAutoBOM === undefined ? true : noAutoBOM;\n saveAs(new Blob([ '\\ufeff', dataString ],\n { type: 'text/plain;charset=utf-8' }),\n filename, noAutoBOM);\n }\n};\n\nexport default exportCSV;\n\n\n\n// WEBPACK FOOTER //\n// src/csv_export_util.js","/* FileSaver.js\n * A saveAs() FileSaver implementation.\n * 1.3.2\n * 2016-06-16 18:25:19\n *\n * By Eli Grey, http://eligrey.com\n * License: MIT\n * See https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md\n */\n\n/*global self */\n/*jslint bitwise: true, indent: 4, laxbreak: true, laxcomma: true, smarttabs: true, plusplus: true */\n\n/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */\n\nvar saveAs = saveAs || (function(view) {\n\t\"use strict\";\n\t// IE <10 is explicitly unsupported\n\tif (typeof view === \"undefined\" || typeof navigator !== \"undefined\" && /MSIE [1-9]\\./.test(navigator.userAgent)) {\n\t\treturn;\n\t}\n\tvar\n\t\t doc = view.document\n\t\t // only get URL when necessary in case Blob.js hasn't overridden it yet\n\t\t, get_URL = function() {\n\t\t\treturn view.URL || view.webkitURL || view;\n\t\t}\n\t\t, save_link = doc.createElementNS(\"http://www.w3.org/1999/xhtml\", \"a\")\n\t\t, can_use_save_link = \"download\" in save_link\n\t\t, click = function(node) {\n\t\t\tvar event = new MouseEvent(\"click\");\n\t\t\tnode.dispatchEvent(event);\n\t\t}\n\t\t, is_safari = /constructor/i.test(view.HTMLElement) || view.safari\n\t\t, is_chrome_ios =/CriOS\\/[\\d]+/.test(navigator.userAgent)\n\t\t, throw_outside = function(ex) {\n\t\t\t(view.setImmediate || view.setTimeout)(function() {\n\t\t\t\tthrow ex;\n\t\t\t}, 0);\n\t\t}\n\t\t, force_saveable_type = \"application/octet-stream\"\n\t\t// the Blob API is fundamentally broken as there is no \"downloadfinished\" event to subscribe to\n\t\t, arbitrary_revoke_timeout = 1000 * 40 // in ms\n\t\t, revoke = function(file) {\n\t\t\tvar revoker = function() {\n\t\t\t\tif (typeof file === \"string\") { // file is an object URL\n\t\t\t\t\tget_URL().revokeObjectURL(file);\n\t\t\t\t} else { // file is a File\n\t\t\t\t\tfile.remove();\n\t\t\t\t}\n\t\t\t};\n\t\t\tsetTimeout(revoker, arbitrary_revoke_timeout);\n\t\t}\n\t\t, dispatch = function(filesaver, event_types, event) {\n\t\t\tevent_types = [].concat(event_types);\n\t\t\tvar i = event_types.length;\n\t\t\twhile (i--) {\n\t\t\t\tvar listener = filesaver[\"on\" + event_types[i]];\n\t\t\t\tif (typeof listener === \"function\") {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlistener.call(filesaver, event || filesaver);\n\t\t\t\t\t} catch (ex) {\n\t\t\t\t\t\tthrow_outside(ex);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t, auto_bom = function(blob) {\n\t\t\t// prepend BOM for UTF-8 XML and text/* types (including HTML)\n\t\t\t// note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF\n\t\t\tif (/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(blob.type)) {\n\t\t\t\treturn new Blob([String.fromCharCode(0xFEFF), blob], {type: blob.type});\n\t\t\t}\n\t\t\treturn blob;\n\t\t}\n\t\t, FileSaver = function(blob, name, no_auto_bom) {\n\t\t\tif (!no_auto_bom) {\n\t\t\t\tblob = auto_bom(blob);\n\t\t\t}\n\t\t\t// First try a.download, then web filesystem, then object URLs\n\t\t\tvar\n\t\t\t\t filesaver = this\n\t\t\t\t, type = blob.type\n\t\t\t\t, force = type === force_saveable_type\n\t\t\t\t, object_url\n\t\t\t\t, dispatch_all = function() {\n\t\t\t\t\tdispatch(filesaver, \"writestart progress write writeend\".split(\" \"));\n\t\t\t\t}\n\t\t\t\t// on any filesys errors revert to saving with object URLs\n\t\t\t\t, fs_error = function() {\n\t\t\t\t\tif ((is_chrome_ios || (force && is_safari)) && view.FileReader) {\n\t\t\t\t\t\t// Safari doesn't allow downloading of blob urls\n\t\t\t\t\t\tvar reader = new FileReader();\n\t\t\t\t\t\treader.onloadend = function() {\n\t\t\t\t\t\t\tvar url = is_chrome_ios ? reader.result : reader.result.replace(/^data:[^;]*;/, 'data:attachment/file;');\n\t\t\t\t\t\t\tvar popup = view.open(url, '_blank');\n\t\t\t\t\t\t\tif(!popup) view.location.href = url;\n\t\t\t\t\t\t\turl=undefined; // release reference before dispatching\n\t\t\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t\t\t\tdispatch_all();\n\t\t\t\t\t\t};\n\t\t\t\t\t\treader.readAsDataURL(blob);\n\t\t\t\t\t\tfilesaver.readyState = filesaver.INIT;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t// don't create more object URLs than needed\n\t\t\t\t\tif (!object_url) {\n\t\t\t\t\t\tobject_url = get_URL().createObjectURL(blob);\n\t\t\t\t\t}\n\t\t\t\t\tif (force) {\n\t\t\t\t\t\tview.location.href = object_url;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar opened = view.open(object_url, \"_blank\");\n\t\t\t\t\t\tif (!opened) {\n\t\t\t\t\t\t\t// Apple does not allow window.open, see https://developer.apple.com/library/safari/documentation/Tools/Conceptual/SafariExtensionGuide/WorkingwithWindowsandTabs/WorkingwithWindowsandTabs.html\n\t\t\t\t\t\t\tview.location.href = object_url;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t\tdispatch_all();\n\t\t\t\t\trevoke(object_url);\n\t\t\t\t}\n\t\t\t;\n\t\t\tfilesaver.readyState = filesaver.INIT;\n\n\t\t\tif (can_use_save_link) {\n\t\t\t\tobject_url = get_URL().createObjectURL(blob);\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\tsave_link.href = object_url;\n\t\t\t\t\tsave_link.download = name;\n\t\t\t\t\tclick(save_link);\n\t\t\t\t\tdispatch_all();\n\t\t\t\t\trevoke(object_url);\n\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfs_error();\n\t\t}\n\t\t, FS_proto = FileSaver.prototype\n\t\t, saveAs = function(blob, name, no_auto_bom) {\n\t\t\treturn new FileSaver(blob, name || blob.name || \"download\", no_auto_bom);\n\t\t}\n\t;\n\t// IE 10+ (native saveAs)\n\tif (typeof navigator !== \"undefined\" && navigator.msSaveOrOpenBlob) {\n\t\treturn function(blob, name, no_auto_bom) {\n\t\t\tname = name || blob.name || \"download\";\n\n\t\t\tif (!no_auto_bom) {\n\t\t\t\tblob = auto_bom(blob);\n\t\t\t}\n\t\t\treturn navigator.msSaveOrOpenBlob(blob, name);\n\t\t};\n\t}\n\n\tFS_proto.abort = function(){};\n\tFS_proto.readyState = FS_proto.INIT = 0;\n\tFS_proto.WRITING = 1;\n\tFS_proto.DONE = 2;\n\n\tFS_proto.error =\n\tFS_proto.onwritestart =\n\tFS_proto.onprogress =\n\tFS_proto.onwrite =\n\tFS_proto.onabort =\n\tFS_proto.onerror =\n\tFS_proto.onwriteend =\n\t\tnull;\n\n\treturn saveAs;\n}(\n\t typeof self !== \"undefined\" && self\n\t|| typeof window !== \"undefined\" && window\n\t|| this.content\n));\n// `self` is undefined in Firefox for Android content script context\n// while `this` is nsIContentFrameMessageManager\n// with an attribute `content` that corresponds to the window\n\nif (typeof module !== \"undefined\" && module.exports) {\n module.exports.saveAs = saveAs;\n} else if ((typeof define !== \"undefined\" && define !== null) && (define.amd !== null)) {\n define(\"FileSaver.js\", function() {\n return saveAs;\n });\n}\n\n\n// WEBPACK FOOTER //\n// src/filesaver.js","module.exports = function() { throw new Error(\"define cannot be used indirect\"); };\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/amd-define.js\n// module id = 70\n// module chunks = 0","module.exports = __webpack_amd_options__;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/amd-options.js\n// module id = 71\n// module chunks = 0","import Const from './Const';\nimport { EventEmitter } from 'events';\n\nexport class Filter extends EventEmitter {\n constructor(data) {\n super(data);\n this.currentFilter = {};\n }\n\n handleFilter(dataField, value, type, filterObj) {\n const filterType = type || Const.FILTER_TYPE.CUSTOM;\n\n const props = {\n cond: filterObj.condition // Only for select and text filter\n };\n\n if (value !== null && typeof value === 'object') {\n // value of the filter is an object\n let hasValue = true;\n for (const prop in value) {\n if (!value[prop] || value[prop] === '') {\n hasValue = false;\n break;\n }\n }\n // if one of the object properties is undefined or empty, we remove the filter\n if (hasValue) {\n this.currentFilter[dataField] = { value: value, type: filterType, props };\n } else {\n delete this.currentFilter[dataField];\n }\n } else if (!value || value.trim() === '') {\n delete this.currentFilter[dataField];\n } else {\n this.currentFilter[dataField] = { value: value.trim(), type: filterType, props };\n }\n this.emit('onFilterChange', this.currentFilter);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// src/Filter.js","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/events/events.js\n// module id = 73\n// module chunks = 0","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nclass ButtonGroup extends Component {\n render() {\n const {\n className,\n sizeClass,\n children,\n ...rest\n } = this.props;\n return (\n \n { children }\n
\n );\n }\n}\n\nButtonGroup.propTypes = {\n sizeClass: PropTypes.string,\n className: PropTypes.string\n};\nButtonGroup.defaultProps = {\n sizeClass: 'btn-group-sm',\n className: ''\n};\n\nexport default ButtonGroup;\n\n\n\n// WEBPACK FOOTER //\n// src/toolbar/ButtonGroup.js"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACtCA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxCA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;AAlBA;AACA;AACA;AACA;AAiBA;;;AAEA;AAAA;AACA;AADA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AARA;AAzBA;AAmCA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;AAAA;AACA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAZA;AACA;AACA;AAaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA;AASA;;;AAEA;AACA;AADA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AADA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAzBA;AACA;AA2BA;AACA;AAIA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AADA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AAQA;AACA;;;AAEA;AACA;AADA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAJA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AADA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;AAOA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AAQA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AAFA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AApBA;AAAA;AACA;AAqBA;AACA;AACA;AACA;AACA;AACA;AACA;AA5BA;AAAA;AACA;AA6BA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAtBA;AAwBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAvEA;AA0EA;AACA;AAEA;AACA;AAlFA;AAqFA;;;AAEA;AACA;AADA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AADA;AAGA;AACA;;;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AADA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AADA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;;;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;;;AAEA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AADA;AAGA;AACA;;;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AAFA;AAAA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;;;AAEA;AACA;AADA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AACA;;;AAEA;AACA;AACA;AACA;AAHA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;;;AAEA;AAAA;AACA;AADA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AAAA;AADA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AAAA;AADA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AADA;AACA;AAEA;AAHA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAJA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;;;AAEA;AACA;AACA;AAFA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AARA;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AALA;AAAA;AAAA;AAAA;AACA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AACA;AAOA;AACA;AAEA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA3BA;AA8BA;AACA;AACA;;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAQA;AACA;AACA;AAAA;AAAA;AACA;AADA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAbA;AAeA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AAQA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAzCA;AA4CA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AADA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAbA;AAgBA;AACA;AACA;;;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AAAA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAGA;AAEA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AAHA;AACA;AACA;AAIA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAlBA;AAoBA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA1FA;AA4FA;AACA;AADA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AACA;AACA;AACA;AACA;AAJA;AAMA;AAhLA;AAkLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAbA;AAeA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA/EA;AAiFA;AACA;AADA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AA7JA;AACA;AA+JA;;;;;;;;;AAn0DA;AACA;;;;;;;;;;ACrBA;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACvLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AC/hBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC/CA;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AC3SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACxNA;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACtEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACnHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACnKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAnEA;AACA;AAqEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AAhFA;AACA;;;;;;;;;;;;;;;;;;;;ACCA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;;;AAZA;AACA;AACA;AACA;AAUA;;;AAEA;AAAA;AACA;AADA;AACA;AADA;AAAA;AAAA;AACA;AACA;AAFA;AAGA;AACA;;;;;;;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AALA;AAAA;AACA;AAMA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AADA;AACA;AAEA;AAEA;AACA;;;AAEA;AAAA;AACA;AACA;AACA;;;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAEA;AAEA;AACA;AAAA;AACA;AAEA;AAEA;AACA;AAAA;AACA;AAEA;AAEA;AACA;AAAA;AACA;AAEA;AAEA;AACA;AAAA;AACA;AAEA;AAEA;AACA;AAAA;AACA;AACA;AAEA;AACA;AApCA;AAsCA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AADA;AAGA;AAAA;AAAA;AACA;AADA;AAJA;AASA;AACA;;;AAEA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAqBA;AACA;AACA;AAFA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AAQA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AADA;AATA;AAcA;;;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAxBA;AA0BA;;;AAEA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AApBA;AAsBA;;;;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAFA;AAIA;AACA;AACA;AACA;AACA;AACA;AAZA;AAcA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA7DA;AACA;AA+DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAnCA;AACA;AAqCA;;;;;;;;;AAvVA;AACA;AA2OA;AACA;;;;;;;;;;;;;;;;ACzPA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AAGA;AACA;AACA;AADA;AAGA;AACA;AAAA;AACA;AADA;AAIA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;AADA;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AAGA;AARA;AAWA;AA/HA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;ACJA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;;;AALA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA;AAAA;AACA;AADA;AACA;AACA;AACA;AACA;AAJA;AAKA;AACA;;;AACA;AACA;AADA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AADA;AAIA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AALA;AAOA;AACA;AACA;AACA;AACA;AACA;AAbA;AAgBA;;;;;;AAGA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AA7BA;AACA;AA+BA;AACA;AACA;AACA;AAFA;AADA;AACA;AAOA;;;;;;;;;AAhJA;AACA;AACA;AACA;AAGA;AACA;;;;;;;;;;;;;;;;;;ACbA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;;;;;AACA;;;AACA;AAAA;AACA;AADA;AACA;AACA;AACA;AACA;AACA;AADA;AAJA;AAOA;AACA;;;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;;;AAEA;AACA;AAAA;AAAA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AACA;AAQA;AACA;AADA;AACA;AAGA;;;;;;;;;AA5EA;AACA;;;;;;;;;;;;;;;;;;ACLA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;;;;;AACA;;;AACA;AAAA;AACA;AADA;AACA;AACA;AACA;AAHA;AAIA;AACA;;;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AACA;AAQA;AACA;AADA;AACA;AAGA;;;;;;;;;AAlEA;AACA;;;;;;;;;;;;;;;;;;ACLA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;;;;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA;AAAA;AACA;AADA;AACA;AACA;AACA;AACA;AADA;AAHA;AAOA;AACA;;;AACA;AACA;AACA;AACA;AACA;AACA;AADA;AAGA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;;;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;;;AAEA;AACA;AADA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AAEA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AALA;AAQA;;;;;;AAGA;AACA;AACA;AACA;AACA;AACA;AALA;AACA;AAOA;;;;;;;;;AA/GA;AACA;AASA;AACA;;;;;;;;;;;;;;;;;;AChBA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;;;;;AACA;AACA;AACA;;;AACA;AAAA;AACA;AADA;AACA;AACA;AACA;AACA;AACA;AADA;AAMA;AACA;AACA;AAZA;AAaA;AACA;;;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AADA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AADA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AADA;AAIA;AACA;AACA;;;AAEA;AACA;AADA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAAA;AACA;AADA;AAIA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;AAGA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAGA;AAPA;AAUA;AACA;AAAA;AACA;AACA;AACA;AAGA;AANA;AASA;AACA;AACA;AACA;AACA;AACA;AA1BA;AAgCA;;;;;;AAGA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAlCA;AACA;AAoCA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAJA;AACA;AASA;;;;;;;;;AAxMA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACRA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;;;;;;;AACA;;;;;;;;;;;AACA;AAAA;AAAA;;;AACA;AAAA;AAAA;;;AACA;AACA;AACA;;;AACA;AACA;AAEA;AACA;AACA;AAEA;;;;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAIA;AACA;AADA;AAGA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAWA;AACA;AACA;AACA;AACA;AAJA;AAAA;AAAA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AADA;AAIA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AADA;AAFA;AADA;AASA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAHA;AAMA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAHA;AAMA;AACA;AACA;AACA;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AApBA;AACA;AAsBA;;;;;;;;;AAnKA;AACA;AAeA;AACA;AAWA;AACA;;;;;;;;;;;;;;;;;;ACtCA;AACA;;;AAAA;AACA;;;;;;;;;;;AACA;;;;;;;;;;;AAEA;AACA;AACA;AAAA;AACA;AACA;AAFA;AAKA;;;;;;AAEA;AACA;AACA;AAFA;AAIA;;;;;;;;;AAfA;AACA;;;;;;;;;;;;;;;;;;ACJA;AACA;;;AAAA;AACA;;;;;;;;;;;AACA;;;;;;;;;;;AAEA;AACA;AACA;AAAA;AACA;AACA;AACA;AAHA;AAMA;;;;;;AAEA;AACA;AACA;AAFA;AAIA;;;;;;;;;AAhBA;AACA;;;;;;;;;;;;;;;;;;ACJA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;;;;;AACA;;;;;;;;;;;AAEA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AAAA;AAEA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAFA;AAKA;AAPA;AAWA;AACA;AApCA;AADA;AAFA;AADA;AA+CA;AAnDA;AAuDA;;;AAEA;AACA;AACA;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AARA;AACA;AAUA;;;;;;;;;AAlFA;AACA;;;;;;;;;;;;;;;;;;;;;;ACLA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;;;;;AACA;;;AACA;AAAA;AACA;AADA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AACA;AACA;AADA;AAFA;AAKA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAGA;AAGA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AApBA;AAuBA;AACA;AACA;AACA;AACA;AACA;AAEA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AAGA;AArBA;AACA;AAuBA;AACA;AAGA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AARA;AAWA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAGA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAHA;AADA;AAQA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AADA;AAFA;AAHA;AAWA;;;AAEA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAFA;AAIA;AACA;AACA;AACA;AACA;AAGA;AACA;AAGA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;;;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AADA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AAEA;AAIA;AACA;;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAYA;AACA;AACA;AACA;AACA;AAGA;;AAEA;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAEA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AATA;AAAA;AAAA;AACA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AADA;AACA;AAMA;AAEA;AAEA;AACA;AACA;AAAA;AAAA;AACA;;;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;;;AAEA;AACA;AAAA;AAAA;AACA;;;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AADA;AACA;AADA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AARA;AAYA;;;AAEA;AAAA;AACA;AADA;AACA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAHA;AAMA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAhCA;AAkCA;;;;;;;;;AA7hBA;AACA;;;;;;;;;;;;;;;;;;;;ACVA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;;;AALA;AACA;AACA;AAIA;;;AAEA;AAAA;AACA;AADA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AACA;AAFA;AAGA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;AAAA;AACA;AAAA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAMA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AAGA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AADA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AACA;AAIA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAJA;AAMA;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAZA;AAcA;AACA;AACA;AAFA;AAIA;;;;;;;;;AAhIA;AACA;;;;;;;;;;;;;;;;;;;;;;ACPA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;;;;;AACA;;;AAEA;AAAA;AACA;AADA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AADA;AAAA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;;;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAiBA;AACA;AACA;AAFA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAFA;AAIA;AAJA;AAOA;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAhBA;AACA;AAkBA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AAQA;;;;;;;;;AA3LA;AACA;;;;;;;;;;;;;;;;;;;;;;ACPA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;AAAA;AACA;;;AAAA;AACA;;;;;;;;;;;AACA;;;AACA;AAAA;AACA;AADA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AACA;AAFA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AACA;AAFA;AALA;AASA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;;;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;;;;;AASA;AACA;AARA;AACA;AACA;AACA;AACA;AACA;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AAFA;AAAA;AAAA;AACA;AAGA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA;AACA;AADA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;;;AAEA;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAEA;;;AAAA;AACA;AACA;AACA;AACA;AACA;;;;AAEA;;;AAAA;AACA;AACA;AACA;AACA;AACA;;;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAUA;AAEA;AACA;AACA;AAJA;AAMA;AAjBA;AAAA;AACA;AACA;AAmBA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AADA;AAGA;AAHA;AAMA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AALA;AAQA;;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AACA;AApBA;AACA;AAuBA;;;;;;;;;AAzRA;AACA;;;;;;;;;;;;;;;;;;;;ACTA;AACA;;;AAAA;AACA;;;;;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AAGA;AACA;AAEA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AAIA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AAAA;AACA;AADA;AAIA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAFA;AAAA;AAMA;AACA;AACA;AAAA;AACA;AACA;AAFA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AAGA;AAAA;AACA;AAGA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;;;;;;;;;AAzHA;AACA;;;;;;;;;;;;;;;;;ACJA;AACA;;;;;AACA;AACA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AACA;AAJA;AAMA;AACA;AACA;;;;;;;;AAnBA;;;;;;;;;;;;;;;;;;;ACAA;AACA;;;AAAA;AACA;;;;;;;;;AAJA;AACA;AACA;AACA;AAEA;;;;;;;;;;;AAEA;AAAA;AACA;AACA;AACA;AACA;AADA;AAGA;AAJA;AAMA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AADA;AADA;AAMA;;;;;;AAGA;;;;;;;;;AApBA;AACA;;;;;;;;;;;;;;;;;;;;ACNA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;;;;;AACA;;;AAEA;AAAA;AACA;AADA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AACA;AACA;AADA;AAFA;AAKA;AACA;;;;;;;;;;;;;;;;;;;;;;;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AADA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AAAA;AACA;AACA;AADA;AAGA;AACA;;;AAEA;AACA;AACA;AACA;AADA;AAGA;AACA;;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AADA;AACA;AADA;AACA;AADA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AATA;AACA;AAeA;AACA;AACA;AAAA;AAEA;AAEA;AAAA;AACA;AAAA;AADA;AAIA;AAAA;AACA;AACA;AAFA;AARA;AAgBA;;;AAEA;AAAA;AACA;AAAA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;AACA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AANA;AADA;AAUA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AANA;AASA;AACA;AACA;;;AAEA;AAAA;AACA;AADA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AAGA;AAEA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AALA;AAQA;AACA;AAIA;AACA;AAAA;AACA;AADA;AAIA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AArBA;AACA;AAuBA;AACA;AACA;AAFA;AACA;AAIA;;;;;;;;;AAvUA;AACA;;;;;;;;;;;;;;;;;;ACTA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;;;;;AACA;;;AAEA;AAAA;AACA;AADA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAEA;AACA;;;;;;;;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AAJA;AAMA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AADA;AAIA;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AACA;AAQA;;;;;;;;;AAlCA;AACA;;;;;;;;;;;;;;;;;;ACLA;AACA;;;AAAA;AACA;;;;;;;;;;;AACA;AACA;AACA;;;;;;;;;;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAWA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAFA;AANA;AAWA;AAAA;AAAA;AACA;AADA;AAbA;AAkBA;;;;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AATA;AAWA;AACA;AACA;AACA;AACA;AACA;AALA;AACA;AAQA;;;;;;;;;AA7DA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;ACJA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AACA;AACA;;;AACA;AACA;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;;;AAhBA;AACA;AAIA;AACA;AACA;AACA;AACA;AAQA;;;AAIA;AAAA;AACA;AADA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAJA;AAJA;AAUA;AACA;;;;;;;;;;;;;;;;;;AAkJA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAvKA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AAGA;;;AAEA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AACA;AACA;;;AAEA;AACA;AAAA;AAAA;AACA;;;AAEA;AACA;AAAA;AAAA;AACA;;;AAEA;AAAA;AACA;AAAA;AACA;AACA;AADA;AAGA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;;;AA0BA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AAAA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAJA;AAMA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAJA;AAOA;AACA;AA3EA;AAAA;AAAA;AAAA;AAAA;AACA;AA4EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AARA;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AAXA;AAoBA;AACA;AACA;AAAA;AACA;AADA;AAIA;AAAA;AACA;AADA;AAIA;AACA;AACA;AACA;AAAA;AACA;AACA;AAFA;AAKA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AADA;AAGA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AALA;AAOA;AACA;AACA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AADA;AAFA;AAOA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AADA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAUA;AACA;AACA;AAOA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAJA;AAOA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AAxbA;AACA;AACA;AAybA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAnCA;AACA;AAqCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAZA;AACA;AAcA;;;;;;;;;AAhfA;AACA;;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACzOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACjYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACrCA;AACA;;;AAAA;AACA;;;AACA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;;;AARA;AACA;AAQA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAEA;AACA;AACA;AAGA;AAIA;AAEA;AACA;AACA;AAjBA;AAqBA;;;;;;AAlFA;;;AAoFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AATA;AACA;AAWA;;;;;;;;AAlGA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACZA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;;;;;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAFA;AAKA;AACA;;;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAKA;AACA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAHA;AACA;AAMA;AACA;AACA;AACA;AAAA;AACA;AADA;AAIA;;;;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AACA;AAQA;;;;;;;;;AAjEA;AACA;;;;;;;;;;;;;;;;;;ACLA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;;;;;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAUA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAJA;AAKA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAJA;AACA;AAMA;AACA;AAAA;AACA;AADA;AAIA;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAXA;AAaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AATA;AACA;AAWA;;;;;;;;;AAvEA;AACA;;;;;;;;;;;;;;;;;;ACJA;AACA;;;AAAA;AACA;;;AACA;AACA;;;;;;;;;AALA;AACA;AACA;AAIA;;;;;;;;;;;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AASA;AACA;AACA;AAFA;AAIA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAHA;AAMA;AA5CA;AAgDA;;;;;;AAEA;AACA;AACA;AACA;AAHA;AACA;AAKA;AACA;AACA;AAFA;AACA;AAIA;;;;;;;;;AA9FA;AACA;;;;;;;;;;;;;;;;;;;;ACPA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;;;;;;;AACA;AACA;AACA;;;;;;;;;;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AASA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAFA;AAIA;AAJA;AAOA;;;;;;AAGA;AACA;AACA;AACA;AACA;AACA;AALA;AAOA;AACA;AACA;AACA;AACA;AACA;AALA;AACA;AAOA;;;;;;;;;AAzCA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACPA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;;;;;;;AACA;AACA;AACA;;;;;;;;;;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AASA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAFA;AAIA;AAJA;AAOA;;;;;;AAGA;AACA;AACA;AACA;AACA;AACA;AALA;AAOA;AACA;AACA;AACA;AACA;AACA;AALA;AACA;AAOA;;;;;;;;;AAzCA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACPA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;;;;;;;AACA;AACA;AACA;;;;;;;;;;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AASA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAFA;AAIA;AAJA;AAOA;;;;;;AAGA;AACA;AACA;AACA;AACA;AACA;AALA;AAOA;AACA;AACA;AACA;AACA;AACA;AALA;AACA;AAOA;;;;;;;;;AAzCA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACPA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;;;;;;;AACA;AACA;AACA;;;;;;;;;;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAUA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAJA;AAMA;AANA;AASA;;;;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AACA;AAQA;;;;;;;;;AA9CA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACPA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;;;;;;;AACA;;;;;;;;;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAOA;AAEA;AACA;AACA;AACA;AACA;AACA;AANA;AASA;;;;;;AAGA;AACA;AACA;AACA;AACA;AAJA;AAMA;AACA;AACA;AACA;AACA;AAJA;AACA;AAMA;;;;;;;;;AA5CA;AACA;;;;;;;;;;;;;;;;;;;;ACLA;AACA;;;AAAA;AACA;;;;;;;;;;;;;AACA;AACA;AACA;;;;;;;;;;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAQA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;AAHA;AAKA;AALA;AAQA;;;;;;AAGA;AACA;AACA;AACA;AACA;AAJA;AAMA;AACA;AACA;AACA;AACA;AAJA;AACA;AAMA;;;;;;;;;AAxCA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACNA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;AAAA;AACA;;;;;;;;;;;AACA;;;AAEA;AAAA;AACA;AADA;AACA;AADA;AAAA;AAAA;AACA;AACA;AAFA;AAGA;AACA;;;;;;;;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AAEA;AACA;AACA;AACA;AAHA;AAKA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAFA;AADA;AAOA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AADA;AADA;AADA;AAQA;;;;;;AAEA;AACA;AACA;AACA;AAHA;AAKA;;;;;;;;;AAnEA;AACA;;;;;;;;;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AADA;AACA;;;;;;;AACA;AAEA;AAAA;AACA;AADA;AACA;AADA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;AACA;AAFA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAVA;AAWA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAfA;AACA;AASA;AAAA;AAMA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AAEA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;;;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAxCA;AA0CA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAGA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAGA;AACA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AA1DA;AA4DA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AAKA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAnCA;AAqCA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AA9BA;AAgCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;AAWA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AAGA;;;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;;;;;;;;;;;;;;AAxtBA;;;;;;;;;;;;;;;ACHA;AACA;;;AAAA;AACA;;;;;AANA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAjBA;AAkBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA3BA;AACA;AAgBA;AAAA;AAWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;;;;;;;;;AA/DA;AACA;AAEA;AACA;AAiDA;AACA;;;;;;;;;;;;AC/DA;;;;;;;;;;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAEA;AAFA;AAAA;AAIA;AACA;AALA;AAAA;AAAA;AASA;AACA;AACA;AAXA;AAAA;AAAA;AAeA;AACA;AACA;AACA;AAlBA;AAoBA;AApBA;AAAA;AAAA;AAAA;AAuBA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AA/BA;AAiCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA7CA;AA+CA;AACA;AACA;AACA;AACA;AACA;AACA;AArDA;AAuDA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAMA;AACA;AACA;AARA;AAAA;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAtHA;AAAA;AAyHA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAQA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AA5KA;;;;;;;;;ACfA;;;;;;;ACAA;AACA;AACA;;;;;;;;;;;;;;;;;ACFA;AACA;;;AAAA;AACA;;;;;;;;;AACA;;;AACA;AAAA;AACA;AADA;AACA;AACA;AAFA;AAGA;AACA;;;AACA;AACA;AACA;AACA;AACA;AADA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AAlCA;;;;;;;;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC7SA;AACA;;;AAAA;AACA;;;;;;;;;;;;;AACA;;;;;;;;;;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAMA;AACA;AAAA;AACA;AADA;AAIA;;;;;;AAGA;AACA;AACA;AAFA;AAIA;AACA;AACA;AAFA;AACA;AAIA;;;;;;;;;AAzBA;AACA;;;;;;;;;","sourceRoot":""}
\ No newline at end of file
diff --git a/dist/react-bootstrap-table.min.js b/dist/react-bootstrap-table.min.js
index 751ce606a..db887a838 100644
--- a/dist/react-bootstrap-table.min.js
+++ b/dist/react-bootstrap-table.min.js
@@ -15,7 +15,7 @@ className:"form-group",key:l},u.default.createElement("label",null,i),h,b)}))}}]
*
* http://api.jqueryui.com/category/ui-core/
*/
-var i=/input|select|textarea|button|object/;e.exports=t.default},function(e,t,n){var o,r,a;!function(l,i){r=[t,n(1),n(6),n(2),n(12),n(11),n(71)],o=i,a="function"==typeof o?o.apply(t,r):o,!(void 0!==a&&(e.exports=a))}(this,function(e,t,n,o,r,a,l){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function u(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function f(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(e,"__esModule",{value:!0});var c=i(t),d=i(n),p=i(o),h=i(r),y=i(a),m=i(l),b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},v=function(){function e(e,t){for(var n=0;no&&(o=Number(e.props.row))}),c.default.Children.map(n,function(e,n){if(null===e||void 0===e)return null;var r=e.props.row?Number(e.props.row):0,a=e.props.rowSpan?Number(e.props.rowSpan):1;if(a+r===o+1){var l=t.getColumnDescription(e);return l.index=n,l}})}},{key:"getColumnDescription",value:function(e){var t={name:e.props.dataField,align:e.props.dataAlign,sort:e.props.dataSort,format:e.props.dataFormat,formatExtraData:e.props.formatExtraData,filterFormatted:e.props.filterFormatted,filterValue:e.props.filterValue,editable:e.props.editable,customEditor:e.props.customEditor,hidden:e.props.hidden,hiddenOnInsert:e.props.hiddenOnInsert,searchable:e.props.searchable,className:e.props.columnClassName,editClassName:e.props.editColumnClassName,invalidEditColumnClassName:e.props.invalidEditColumnClassName,columnTitle:e.props.columnTitle,width:e.props.width,text:e.props.headerText||e.props.children,sortFunc:e.props.sortFunc,sortFuncExtraData:e.props.sortFuncExtraData,export:e.props.export,expandable:e.props.expandable,attrs:e.props.tdAttr,editAttrs:e.props.editTdAttr,style:e.props.tdStyle};return e.type.name!==C.default.name&&c.default.isValidElement(e.props.children)&&(t=s({},t,this.getColumnDescription(c.default.Children.only(e.props.children)))),t}},{key:"reset",value:function(){var e=this,t=this.props.options.pageStartIndex;this.store.clean(),this.refs.body.setState({currEditCell:null}),this.setState(function(){return{data:e.getTableData(),currPage:L.default.getFirstPage(t),expanding:[],sizePerPage:g.default.SIZE_PER_PAGE_LIST[0],selectedRowKeys:[],reset:!0}})}},{key:"componentWillReceiveProps",value:function(e){this.initTable(e);var t=e.options,n=e.selectRow,o=e.replace;if(o=o||this.props.replace,e.data)if(this.store.setData(e.data.slice()),o)this.reset();else{var r=this.state.currPage;this.props.options.page!==t.page&&(r=t.page);var a=this.state.sizePerPage;if(this.props.options.sizePerPage!==t.sizePerPage&&(a=t.sizePerPage),this.isRemoteDataSource()){var l={sizePerPage:a,reset:!1,currPage:r},i=e.data.slice();e.pagination&&!this.allowRemote(g.default.REMOTE_PAGE)&&(i=this.store.page(r,a).get()),this.store.isOnFilter?(this.store.searchText&&this.handleSearch(this.store.searchText),this.store.filterObj&&this.handleFilterData(this.store.filterObj),l.currPage=L.default.getFirstPage(e.options.pageStartIndex)):this.allowRemote(g.default.REMOTE_SORT)||(i=this.store.sort().get(),l.data=i),this.setState(function(){return l})}else{r>Math.ceil(e.data.length/a)&&(r=1);var s=this.store.getSortInfo(),u=t.sortName,f=t.sortOrder;u&&f?(this.store.setSortInfo(f,u),this.store.sort()):s.length>0&&this.store.sort();var c=this.store.page(r,a).get();this.setState(function(){return{data:c,currPage:r,sizePerPage:a,reset:!1}}),this.store.isSearching&&t.afterSearch&&t.afterSearch(this.store.searchText,this.store.getDataIgnoringPagination()),this.store.isFiltering&&t.afterColumnFilter&&t.afterColumnFilter(this.store.filterObj,this.store.getDataIgnoringPagination())}if(this.props.options.expanding!==t.expanding&&this.setState(function(){return{expanding:t.expanding||[]}}),n&&n.selected){var d=n.selected.slice();this.store.setSelectedRowKey(d),this.setState(function(){return{selectedRowKeys:d,reset:!1}})}}}},{key:"componentDidMount",value:function(){this._adjustTable(),window.addEventListener("resize",this._adjustTable),this.refs.body.refs.container.addEventListener("scroll",this._scrollHeader),this.props.footer&&this.refs.body.refs.container.addEventListener("scroll",this._scrollFooter),this.props.scrollTop&&this._scrollTop()}},{key:"componentWillUnmount",value:function(){window.removeEventListener("resize",this._adjustTable),this.refs&&this.refs.body&&this.refs.body.refs&&(this.refs.body.refs.container.removeEventListener("scroll",this._scrollHeader),this.props.footer&&this.refs.body.refs.container.removeEventListener("scroll",this._scrollFooter)),this.filter&&this.filter.removeAllListeners("onFilterChange")}},{key:"componentDidUpdate",value:function(){this._adjustTable(),this.props.options.afterTableComplete&&this.props.options.afterTableComplete()}},{key:"isRemoteDataSource",value:function(e){var t=e||this.props,n=t.remote;return n===!0||L.default.isFunction(n)}},{key:"allowRemote",value:function(e,t){var n=t||this.props,o=n.remote;if("function"==typeof o){var r=o(g.default.REMOTE);return r[e]}return o}},{key:"render",value:function(){var e={height:this.props.height,maxHeight:this.props.maxHeight},t=this.getColumnsDescription(this.props),n=this.store.getSortInfo(),o=this.renderPagination(),r=this.renderToolBar(),a=this.renderTableFilter(t),l=this.isSelectAll(),i=this.props.expandColumnOptions;"undefined"==typeof i.expandColumnBeforeSelectColumn&&(i.expandColumnBeforeSelectColumn=!0);var u=L.default.renderColGroup(t,this.props.selectRow,i,this.props.version),f=this.renderTableFooter(this.props.footerData,this.state.data,t,u),d=this.props.options.sortIndicator;"undefined"==typeof this.props.options.sortIndicator&&(d=!0);var p=this.props.options.paginationPosition,h=void 0===p?g.default.PAGINATION_POS_BOTTOM:p,m=h!==g.default.PAGINATION_POS_BOTTOM,v=h!==g.default.PAGINATION_POS_TOP,E=s({},this.props.selectRow);this.props.cellEdit&&this.props.cellEdit.mode!==g.default.CELL_EDIT_NONE&&(E.clickToSelect=!1);var C=this.props.options.toolbarPosition,O=void 0===C?g.default.TOOLBAR_POS_TOP:C,T=O!==g.default.TOOLBAR_POS_BOTTOM,_=O!==g.default.TOOLBAR_POS_TOP;return c.default.createElement("div",{className:(0,y.default)("react-bs-table-container",this.props.className,this.props.containerClass),style:this.props.containerStyle},T?r:null,m?o:null,c.default.createElement("div",{ref:"table",className:(0,y.default)("react-bs-table",{"react-bs-table-bordered":this.props.bordered},this.props.tableContainerClass),style:s({},e,this.props.tableStyle),onMouseEnter:this.handleMouseEnter,onMouseLeave:this.handleMouseLeave},c.default.createElement(w.default,{ref:"header",version:this.props.version,colGroups:u,headerContainerClass:this.props.headerContainerClass,tableHeaderClass:this.props.tableHeaderClass,style:this.props.headerStyle,rowSelectType:this.props.selectRow.mode,customComponent:this.props.selectRow.customComponent,hideSelectColumn:this.props.selectRow.hideSelectColumn,sortList:n,sortIndicator:d,onSort:this.handleSort,onSelectAllRow:this.handleSelectAllRow,bordered:this.props.bordered,condensed:this.props.condensed,isFiltered:!!this.filter,isSelectAll:l,reset:this.state.reset,expandColumnVisible:i.expandColumnVisible,expandColumnComponent:i.expandColumnComponent,expandColumnBeforeSelectColumn:i.expandColumnBeforeSelectColumn},this.props.children),c.default.createElement(P.default,{ref:"body",bodyContainerClass:this.props.bodyContainerClass,tableBodyClass:this.props.tableBodyClass,style:s({},e,this.props.bodyStyle),data:this.state.data,version:this.props.version,expandComponent:this.props.expandComponent,expandableRow:this.props.expandableRow,expandRowBgColor:this.props.options.expandRowBgColor,expandBy:this.props.options.expandBy||g.default.EXPAND_BY_ROW,expandBodyClass:this.props.options.expandBodyClass,expandParentClass:this.props.options.expandParentClass,columns:t,trClassName:this.props.trClassName,trStyle:this.props.trStyle,striped:this.props.striped,bordered:this.props.bordered,hover:this.props.hover,keyField:this.store.getKeyField(),condensed:this.props.condensed,selectRow:E,expandColumnOptions:this.props.expandColumnOptions,cellEdit:this.props.cellEdit,selectedRowKeys:this.state.selectedRowKeys,onRowClick:this.handleRowClick,onRowDoubleClick:this.handleRowDoubleClick,onRowMouseOver:this.handleRowMouseOver,onRowMouseOut:this.handleRowMouseOut,onSelectRow:this.handleSelectRow,noDataText:this.props.options.noDataText,withoutNoDataText:this.props.options.withoutNoDataText,expanding:this.state.expanding,onExpand:this.handleExpandRow,onlyOneExpanding:this.props.options.onlyOneExpanding,beforeShowError:this.props.options.beforeShowError,keyBoardNav:this.props.keyBoardNav,onNavigateCell:this.handleNavigateCell,x:this.state.x,y:this.state.y,withoutTabIndex:this.props.withoutTabIndex,onEditCell:this.handleEditCell}),f),a,v?o:null,_?r:null,c.default.createElement(b.default,{stack:{limit:3}}))}},{key:"isSelectAll",value:function(){if(this.store.isEmpty())return!1;var e=this.props.selectRow,t=e.unselectable,n=e.onlyUnselectVisible,o=this.store.getKeyField(),r=n?this.store.get().map(function(e){return e[o]}):this.store.getAllRowkey(),a=this.store.getSelectedRowKeys();if(n&&(a=a.filter(function(e){return e!==r})),0===a.length)return!1;var l=0,i=0,s=0;return a.forEach(function(e){r.indexOf(e)!==-1?l++:i++,t&&t.indexOf(e)!==-1&&s++}),i!==a.length&&(l===r.length||!(t&&l<=s&&s===t.length)&&"indeterminate")}},{key:"cleanSelected",value:function(){this.store.setSelectedRowKey([]),this.setState(function(){return{selectedRowKeys:[],reset:!1}})}},{key:"cleanSort",value:function(){this.store.cleanSortInfo(),this.setState(function(){return{reset:!1}})}},{key:"editCell",value:function(e,t,n){var o=this.props.options.onCellEdit,r=this.props.cellEdit.afterSaveCell,a=this.getColumnsDescription(this.props),l=a[n].name;if(o&&(e=o(this.state.data[t],l,e)),this.allowRemote(g.default.REMOTE_CELL_EDIT))return void(r&&r(this.state.data[t],l,e));var i=this.store.edit(e,t,l).get();this.setState(function(){return{data:i,reset:!1}}),r&&r(this.state.data[t],l,e)}},{key:"handleAddRowAtBegin",value:function(e){try{this.store.addAtBegin(e)}catch(e){return e}this._handleAfterAddingRow(e,!0)}},{key:"getSizePerPage",value:function(){return this.state.sizePerPage}},{key:"getCurrentPage",value:function(){return this.state.currPage}},{key:"getTableDataIgnorePaging",value:function(){return this.store.getCurrentDisplayData()}},{key:"deleteRow",value:function(e){var t=this,n=this.store.getRowByKey(e),o=this.props.options,r=o.onDeleteRow,a=o.afterDeleteRow,l=o.pageStartIndex;if(r&&r(e,n),this.store.setSelectedRowKey([]),this.allowRemote(g.default.REMOTE_DROP_ROW))return void(a&&a(e,n));this.store.remove(e);var i=void 0;if(this.props.pagination){var s=this.state.sizePerPage,u=Math.ceil(this.store.getDataNum()/s),f=this.state.currPage;f>u&&(f=u),i=this.store.page(L.default.getNormalizedPage(l,f),s).get(),this.setState(function(){return{data:i,selectedRowKeys:t.store.getSelectedRowKeys(),currPage:f,reset:!1}})}else i=this.store.get(),this.setState(function(){return{data:i,reset:!1,selectedRowKeys:t.store.getSelectedRowKeys()}});a&&a(e,n)}},{key:"renderPagination",value:function(){if(this.props.pagination){var e=void 0;e=this.allowRemote(g.default.REMOTE_PAGE)?this.props.fetchInfo.dataTotalSize:this.store.getDataNum();var t=this.props.options,n=void 0===t.withFirstAndLast||t.withFirstAndLast;return Math.ceil(e/this.state.sizePerPage)<=1&&this.props.ignoreSinglePage?null:c.default.createElement("div",{className:"react-bs-table-pagination"},c.default.createElement(k.default,{ref:"pagination",withFirstAndLast:n,alwaysShowAllBtns:t.alwaysShowAllBtns,currPage:this.state.currPage,changePage:this.handlePaginationData,sizePerPage:this.state.sizePerPage,sizePerPageList:t.sizePerPageList||g.default.SIZE_PER_PAGE_LIST,pageStartIndex:t.pageStartIndex,paginationShowsTotal:t.paginationShowsTotal,paginationSize:t.paginationSize||g.default.PAGINATION_SIZE,dataSize:e,onSizePerPageList:t.onSizePerPageList,prePage:t.prePage||g.default.PRE_PAGE,nextPage:t.nextPage||g.default.NEXT_PAGE,firstPage:t.firstPage||g.default.FIRST_PAGE,lastPage:t.lastPage||g.default.LAST_PAGE,prePageTitle:t.prePageTitle||g.default.PRE_PAGE_TITLE,nextPageTitle:t.nextPageTitle||g.default.NEXT_PAGE_TITLE,firstPageTitle:t.firstPageTitle||g.default.FIRST_PAGE_TITLE,lastPageTitle:t.lastPageTitle||g.default.LAST_PAGE_TITLE,hideSizePerPage:t.hideSizePerPage,sizePerPageDropDown:t.sizePerPageDropDown,hidePageListOnlyOnePage:t.hidePageListOnlyOnePage,paginationPanel:t.paginationPanel,keepSizePerPageState:t.keepSizePerPageState,open:!1}))}return null}},{key:"renderToolBar",value:function(){var e=this.props,t=e.exportCSV,n=e.selectRow,o=e.insertRow,r=e.deleteRow,a=e.search,l=e.children,i=e.keyField,s=n&&n.showOnlySelected,u="undefined"==typeof this.props.options.printToolBar||this.props.options.printToolBar;if(s||o||r||a||t||this.props.options.searchPanel||this.props.options.btnGroup||this.props.options.toolBar){var f=void 0;return f=Array.isArray(l)?l.filter(function(e){return null!=e}).map(function(e,t){if(e){var n=e.props,o=n.isKey||i===n.dataField;return{isKey:o,name:n.headerText||n.children,field:n.dataField,hiddenOnInsert:n.hiddenOnInsert,keyValidator:n.keyValidator,customInsertEditor:n.customInsertEditor,autoValue:n.autoValue||!1,editable:n.editable&&L.default.isFunction("function"===n.editable)?n.editable():n.editable,format:!!n.dataFormat&&function(e){return n.dataFormat(e,null,n.formatExtraData,t).replace(/<.*?>/g,"")}}}}):[{name:l.props.headerText||l.props.children,field:l.props.dataField,editable:l.props.editable,customInsertEditor:l.props.customInsertEditor,hiddenOnInsert:l.props.hiddenOnInsert,keyValidator:l.props.keyValidator}],c.default.createElement("div",{className:"react-bs-table-tool-bar "+(u?"":"hidden-print")},c.default.createElement(N.default,{ref:"toolbar",version:this.props.version,defaultSearch:this.props.options.defaultSearch,clearSearch:this.props.options.clearSearch,searchPosition:this.props.options.searchPosition,searchDelayTime:this.props.options.searchDelayTime,enableInsert:o,enableDelete:r,enableSearch:a,enableExportCSV:t,enableShowOnlySelected:s,columns:f,searchPlaceholder:this.props.searchPlaceholder,exportCSVText:this.props.options.exportCSVText,insertText:this.props.options.insertText,deleteText:this.props.options.deleteText,saveText:this.props.options.saveText,closeText:this.props.options.closeText,ignoreEditable:this.props.options.ignoreEditable,onAddRow:this.handleAddRow,onDropRow:this.handleDropRow,onSearch:this.handleSearch,onExportCSV:this.handleExportCSV,onShowOnlySelected:this.handleShowOnlySelected,insertModalHeader:this.props.options.insertModalHeader,insertModalFooter:this.props.options.insertModalFooter,insertModalBody:this.props.options.insertModalBody,insertModal:this.props.options.insertModal,insertBtn:this.props.options.insertBtn,deleteBtn:this.props.options.deleteBtn,showSelectedOnlyBtn:this.props.options.showSelectedOnlyBtn,exportCSVBtn:this.props.options.exportCSVBtn,clearSearchBtn:this.props.options.clearSearchBtn,searchField:this.props.options.searchField,searchPanel:this.props.options.searchPanel,btnGroup:this.props.options.btnGroup,toolBar:this.props.options.toolBar,reset:this.state.reset,isValidKey:this.store.isValidKey,insertFailIndicator:this.props.options.insertFailIndicator||g.default.INSERT_FAIL_INDICATOR}))}return null}},{key:"renderTableFilter",value:function(e){return this.props.columnFilter?c.default.createElement(F.default,{columns:e,rowSelectType:this.props.selectRow.mode,onFilter:this.handleFilterData}):null}},{key:"renderTableFooter",value:function(e,t,n,o){if(this.props.footer){var r=!0,a=this.props.selectRow.mode,l=L.default.isSelectRowDefined(a);return l&&(r=this.props.selectRow.hideSelectColumn),c.default.createElement(_.default,{ref:"footer",columns:n,colGroups:o,footerFormatterReturnData:t,tableFooterClass:this.props.tableFooterClass,style:this.props.headerStyle,hideSelectColumn:r,expandColumnVisible:this.props.expandColumnOptions.expandColumnVisible,bordered:this.props.bordered,condensed:this.props.condensed,isFiltered:!!this.filter,showStickyColumn:this.props.showStickyColumn},e)}return null}},{key:"_adjustTable",value:function(){this._adjustHeight(),this.props.printable||this._adjustHeaderWidth()}},{key:"_adjustHeaderWidth",value:function(){var e=this.refs.header.getHeaderColGrouop(),t=this.refs.body.refs.tbody,n=this.refs.body.getHeaderColGrouop(),o=t.childNodes[0],r=t.parentNode.getBoundingClientRect().height>t.parentNode.parentNode.getBoundingClientRect().height,a=r?L.default.getScrollBarWidth():0;if(o&&this.store.getDataNum()){if(r||this.isVerticalScroll!==r)for(var l=o.childNodes,i=0;i=c){u++;var p=a?e.refs.pagination.getLastPage():-1;if(!(u<=p))return;e.handlePaginationData(u,e.state.sizePerPage),s=0}else if(s<0){if(u--,!(u>0))return;e.handlePaginationData(u,e.state.sizePerPage),s=c-1}else if(i>=d){if(s+1===c){u++;var h=a?e.refs.pagination.getLastPage():-1;if(!(u<=h))return;e.handlePaginationData(u,e.state.sizePerPage),s=0}else s++;i=r?1:0}else if(i<0)if(i=d-1,0===s){if(u--,!(u>0))return;e.handlePaginationData(u,e.state.sizePerPage),s=e.state.sizePerPage-1}else s--;e.setState(function(){return{x:i,y:s,currPage:u,reset:!1}})},this.handleRowClick=function(t,n,o){var r=e.props,a=r.options,l=r.keyBoardNav;if(a.onRowClick&&a.onRowClick(t,o,n),l){var s="object"===("undefined"==typeof l?"undefined":i(l))?l:{},u=s.clickToNav;u=u!==!1||u,u&&e.setState(function(){return{x:o,y:n,reset:!1}})}},this.handleRowDoubleClick=function(t){e.props.options.onRowDoubleClick&&e.props.options.onRowDoubleClick(t)},this.handleSelectAllRow=function(t){var n=t.currentTarget.checked,o=e.store.getKeyField(),r=e.props.selectRow,a=r.onSelectAll,l=r.unselectable,i=r.selected,s=r.onlyUnselectVisible,u=s?e.state.selectedRowKeys:[],f=!0,c=e.store.get();if(n||s||(c=e.store.getRowByKey(e.state.selectedRowKeys)),l&&l.length>0&&(c=n?c.filter(function(e){return l.indexOf(e[o])===-1||i&&i.indexOf(e[o])!==-1}):c.filter(function(e){return l.indexOf(e[o])===-1})),a&&(f=e.props.selectRow.onSelectAll(n,c)),"undefined"==typeof f||f!==!1){if(n)if(Array.isArray(f))u=f;else{var d=c.map(function(e){return e[o]});u=s?u.concat(d):d}else if(l&&i)u=i.filter(function(e){return l.indexOf(e)>-1});else if(s){var p=c.map(function(e){return e[o]});u=u.filter(function(e){return p.indexOf(e)===-1})}e.store.setSelectedRowKey(u),e.setState(function(){return{selectedRowKeys:u,reset:!1}})}},this.handleShowOnlySelected=function(){e.store.ignoreNonSelected();var t=e.props.options.pageStartIndex,n=void 0;n=e.props.pagination?e.store.page(L.default.getNormalizedPage(t),e.state.sizePerPage).get():e.store.get(),e.setState(function(){return{data:n,reset:!1,currPage:L.default.getFirstPage(t)}})},this.handleSelectRow=function(t,n,o,r){var a=!0,l=e.store.getSelectedRowKeys(),i=t[e.store.getKeyField()],s=e.props.selectRow;s.onSelect&&(a=s.onSelect(t,n,o,r)),"undefined"!=typeof a&&a===!1||(s.mode===g.default.ROW_SELECT_SINGLE?l=n?[i]:[]:n?l.push(i):l=l.filter(function(e){return i!==e}),e.store.setSelectedRowKey(l),e.setState(function(){return{selectedRowKeys:l,reset:!1}}))},this.handleEditCell=function(t,n,o){var r=e.props.cellEdit.beforeSaveCell,a=e.getColumnsDescription(e.props),l=a[o].name,i=function(){e.setState(function(){return{data:e.store.get(),reset:!1}})};if(r){var s=function(r){e.refs.body.cancelEditCell(),r||void 0===r?e.editCell(t,n,o):i()},u=r(e.state.data[n],l,t,s);if(u===!1&&"undefined"!=typeof u)return i();if(u===g.default.AWAIT_BEFORE_CELL_EDIT)return u}e.editCell(t,n,o)},this.handleAddRow=function(t){var n=!1,o=e.props.options.onAddRow,r=function(t){return n?void e.refs.toolbar.afterHandleSaveBtnClick(t):t},a=function(n){if("undefined"!=typeof n&&""!==n)return r(n);if(e.allowRemote(g.default.REMOTE_INSERT_ROW))return e.props.options.afterInsertRow&&e.props.options.afterInsertRow(t),r();try{e.store.add(t)}catch(e){return r(e.message)}return e._handleAfterAddingRow(t,!1),r()};if(o){var l=e.store.getColInfos(),i=o(t,l,a);return""!==i&&i!==!1?i:"undefined"==typeof i?a():(n=!0,!n)}return a()},this.getPageByRowKey=function(t){var n=e.state.sizePerPage,o=e.store.getCurrentDisplayData(),r=e.store.getKeyField(),a=o.findIndex(function(e){return e[r]===t});return a>-1?parseInt(a/n,10)+1:a;
+var i=/input|select|textarea|button|object/;e.exports=t.default},function(e,t,n){var o,r,a;!function(l,i){r=[t,n(1),n(6),n(2),n(12),n(11),n(71)],o=i,a="function"==typeof o?o.apply(t,r):o,!(void 0!==a&&(e.exports=a))}(this,function(e,t,n,o,r,a,l){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function u(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function f(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(e,"__esModule",{value:!0});var c=i(t),d=i(n),p=i(o),h=i(r),y=i(a),m=i(l),b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},v=function(){function e(e,t){for(var n=0;no&&(o=Number(e.props.row))}),c.default.Children.map(n,function(e,n){if(null===e||void 0===e)return null;var r=e.props.row?Number(e.props.row):0,a=e.props.rowSpan?Number(e.props.rowSpan):1;if(a+r===o+1){var l=t.getColumnDescription(e);return l.index=n,l}})}},{key:"getColumnDescription",value:function(e){var t={name:e.props.dataField,align:e.props.dataAlign,sort:e.props.dataSort,format:e.props.dataFormat,formatExtraData:e.props.formatExtraData,filterFormatted:e.props.filterFormatted,filterValue:e.props.filterValue,editable:e.props.editable,customEditor:e.props.customEditor,hidden:e.props.hidden,hiddenOnInsert:e.props.hiddenOnInsert,searchable:e.props.searchable,className:e.props.columnClassName,editClassName:e.props.editColumnClassName,invalidEditColumnClassName:e.props.invalidEditColumnClassName,columnTitle:e.props.columnTitle,width:e.props.width,text:e.props.headerText||e.props.children,sortFunc:e.props.sortFunc,sortFuncExtraData:e.props.sortFuncExtraData,export:e.props.export,expandable:e.props.expandable,attrs:e.props.tdAttr,editAttrs:e.props.editTdAttr,style:e.props.tdStyle};return e.type.name!==C.default.name&&c.default.isValidElement(e.props.children)&&(t=s({},t,this.getColumnDescription(c.default.Children.only(e.props.children)))),t}},{key:"reset",value:function(){var e=this,t=this.props.options.pageStartIndex;this.store.clean(),this.refs.body.setState({currEditCell:null}),this.setState(function(){return{data:e.getTableData(),currPage:L.default.getFirstPage(t),expanding:[],sizePerPage:g.default.SIZE_PER_PAGE_LIST[0],selectedRowKeys:[],reset:!0}})}},{key:"componentWillReceiveProps",value:function(e){this.initTable(e);var t=e.options,n=e.selectRow,o=e.replace;if(o=o||this.props.replace,e.data)if(this.store.setData(e.data.slice()),o)this.reset();else{var r=this.state.currPage;this.props.options.page!==t.page&&(r=t.page);var a=this.state.sizePerPage;if(this.props.options.sizePerPage!==t.sizePerPage&&(a=t.sizePerPage),this.isRemoteDataSource()){var l={sizePerPage:a,reset:!1,currPage:r},i=e.data.slice();e.pagination&&!this.allowRemote(g.default.REMOTE_PAGE)&&(i=this.store.page(r,a).get()),this.store.isOnFilter?(this.store.searchText&&this.handleSearch(this.store.searchText),this.store.filterObj&&this.handleFilterData(this.store.filterObj),l.currPage=L.default.getFirstPage(e.options.pageStartIndex)):(this.allowRemote(g.default.REMOTE_SORT)||(i=this.store.sort().get()),l.data=i),this.setState(function(){return l})}else{r>Math.ceil(e.data.length/a)&&(r=1);var s=this.store.getSortInfo(),u=t.sortName,f=t.sortOrder;u&&f?(this.store.setSortInfo(f,u),this.store.sort()):s.length>0&&this.store.sort();var c=this.store.page(r,a).get();this.setState(function(){return{data:c,currPage:r,sizePerPage:a,reset:!1}}),this.store.isSearching&&t.afterSearch&&t.afterSearch(this.store.searchText,this.store.getDataIgnoringPagination()),this.store.isFiltering&&t.afterColumnFilter&&t.afterColumnFilter(this.store.filterObj,this.store.getDataIgnoringPagination())}if(this.props.options.expanding!==t.expanding&&this.setState(function(){return{expanding:t.expanding||[]}}),n&&n.selected){var d=n.selected.slice();this.store.setSelectedRowKey(d),this.setState(function(){return{selectedRowKeys:d,reset:!1}})}}}},{key:"componentDidMount",value:function(){this._adjustTable(),window.addEventListener("resize",this._adjustTable),this.refs.body.refs.container.addEventListener("scroll",this._scrollHeader),this.props.footer&&this.refs.body.refs.container.addEventListener("scroll",this._scrollFooter),this.props.scrollTop&&this._scrollTop()}},{key:"componentWillUnmount",value:function(){window.removeEventListener("resize",this._adjustTable),this.refs&&this.refs.body&&this.refs.body.refs&&(this.refs.body.refs.container.removeEventListener("scroll",this._scrollHeader),this.props.footer&&this.refs.body.refs.container.removeEventListener("scroll",this._scrollFooter)),this.filter&&this.filter.removeAllListeners("onFilterChange")}},{key:"componentDidUpdate",value:function(){this._adjustTable(),this.props.options.afterTableComplete&&this.props.options.afterTableComplete()}},{key:"isRemoteDataSource",value:function(e){var t=e||this.props,n=t.remote;return n===!0||L.default.isFunction(n)}},{key:"allowRemote",value:function(e,t){var n=t||this.props,o=n.remote;if("function"==typeof o){var r=o(g.default.REMOTE);return r[e]}return o}},{key:"render",value:function(){var e={height:this.props.height,maxHeight:this.props.maxHeight},t=this.getColumnsDescription(this.props),n=this.store.getSortInfo(),o=this.renderPagination(),r=this.renderToolBar(),a=this.renderTableFilter(t),l=this.isSelectAll(),i=this.props.expandColumnOptions;"undefined"==typeof i.expandColumnBeforeSelectColumn&&(i.expandColumnBeforeSelectColumn=!0);var u=L.default.renderColGroup(t,this.props.selectRow,i,this.props.version),f=this.renderTableFooter(this.props.footerData,this.state.data,t,u),d=this.props.options.sortIndicator;"undefined"==typeof this.props.options.sortIndicator&&(d=!0);var p=this.props.options.paginationPosition,h=void 0===p?g.default.PAGINATION_POS_BOTTOM:p,m=h!==g.default.PAGINATION_POS_BOTTOM,v=h!==g.default.PAGINATION_POS_TOP,E=s({},this.props.selectRow);this.props.cellEdit&&this.props.cellEdit.mode!==g.default.CELL_EDIT_NONE&&(E.clickToSelect=!1);var C=this.props.options.toolbarPosition,O=void 0===C?g.default.TOOLBAR_POS_TOP:C,T=O!==g.default.TOOLBAR_POS_BOTTOM,_=O!==g.default.TOOLBAR_POS_TOP;return c.default.createElement("div",{className:(0,y.default)("react-bs-table-container",this.props.className,this.props.containerClass),style:this.props.containerStyle},T?r:null,m?o:null,c.default.createElement("div",{ref:"table",className:(0,y.default)("react-bs-table",{"react-bs-table-bordered":this.props.bordered},this.props.tableContainerClass),style:s({},e,this.props.tableStyle),onMouseEnter:this.handleMouseEnter,onMouseLeave:this.handleMouseLeave},c.default.createElement(w.default,{ref:"header",version:this.props.version,colGroups:u,headerContainerClass:this.props.headerContainerClass,tableHeaderClass:this.props.tableHeaderClass,style:this.props.headerStyle,rowSelectType:this.props.selectRow.mode,customComponent:this.props.selectRow.customComponent,hideSelectColumn:this.props.selectRow.hideSelectColumn,sortList:n,sortIndicator:d,onSort:this.handleSort,onSelectAllRow:this.handleSelectAllRow,bordered:this.props.bordered,condensed:this.props.condensed,isFiltered:!!this.filter,isSelectAll:l,reset:this.state.reset,expandColumnVisible:i.expandColumnVisible,expandColumnComponent:i.expandColumnComponent,expandColumnBeforeSelectColumn:i.expandColumnBeforeSelectColumn},this.props.children),c.default.createElement(P.default,{ref:"body",bodyContainerClass:this.props.bodyContainerClass,tableBodyClass:this.props.tableBodyClass,style:s({},e,this.props.bodyStyle),data:this.state.data,version:this.props.version,expandComponent:this.props.expandComponent,expandableRow:this.props.expandableRow,expandRowBgColor:this.props.options.expandRowBgColor,expandBy:this.props.options.expandBy||g.default.EXPAND_BY_ROW,expandBodyClass:this.props.options.expandBodyClass,expandParentClass:this.props.options.expandParentClass,columns:t,trClassName:this.props.trClassName,trStyle:this.props.trStyle,striped:this.props.striped,bordered:this.props.bordered,hover:this.props.hover,keyField:this.store.getKeyField(),condensed:this.props.condensed,selectRow:E,expandColumnOptions:this.props.expandColumnOptions,cellEdit:this.props.cellEdit,selectedRowKeys:this.state.selectedRowKeys,onRowClick:this.handleRowClick,onRowDoubleClick:this.handleRowDoubleClick,onRowMouseOver:this.handleRowMouseOver,onRowMouseOut:this.handleRowMouseOut,onSelectRow:this.handleSelectRow,noDataText:this.props.options.noDataText,withoutNoDataText:this.props.options.withoutNoDataText,expanding:this.state.expanding,onExpand:this.handleExpandRow,onlyOneExpanding:this.props.options.onlyOneExpanding,beforeShowError:this.props.options.beforeShowError,keyBoardNav:this.props.keyBoardNav,onNavigateCell:this.handleNavigateCell,x:this.state.x,y:this.state.y,withoutTabIndex:this.props.withoutTabIndex,onEditCell:this.handleEditCell}),f),a,v?o:null,_?r:null,c.default.createElement(b.default,{stack:{limit:3}}))}},{key:"isSelectAll",value:function(){if(this.store.isEmpty())return!1;var e=this.props.selectRow,t=e.unselectable,n=e.onlyUnselectVisible,o=this.store.getKeyField(),r=n?this.store.get().map(function(e){return e[o]}):this.store.getAllRowkey(),a=this.store.getSelectedRowKeys();if(n&&(a=a.filter(function(e){return e!==r})),0===a.length)return!1;var l=0,i=0,s=0;return a.forEach(function(e){r.indexOf(e)!==-1?l++:i++,t&&t.indexOf(e)!==-1&&s++}),i!==a.length&&(l===r.length||!(t&&l<=s&&s===t.length)&&"indeterminate")}},{key:"cleanSelected",value:function(){this.store.setSelectedRowKey([]),this.setState(function(){return{selectedRowKeys:[],reset:!1}})}},{key:"cleanSort",value:function(){this.store.cleanSortInfo(),this.setState(function(){return{reset:!1}})}},{key:"editCell",value:function(e,t,n){var o=this.props.options.onCellEdit,r=this.props.cellEdit.afterSaveCell,a=this.getColumnsDescription(this.props),l=a[n].name;if(o&&(e=o(this.state.data[t],l,e)),this.allowRemote(g.default.REMOTE_CELL_EDIT))return void(r&&r(this.state.data[t],l,e));var i=this.store.edit(e,t,l).get();this.setState(function(){return{data:i,reset:!1}}),r&&r(this.state.data[t],l,e)}},{key:"handleAddRowAtBegin",value:function(e){try{this.store.addAtBegin(e)}catch(e){return e}this._handleAfterAddingRow(e,!0)}},{key:"getSizePerPage",value:function(){return this.state.sizePerPage}},{key:"getCurrentPage",value:function(){return this.state.currPage}},{key:"getTableDataIgnorePaging",value:function(){return this.store.getCurrentDisplayData()}},{key:"deleteRow",value:function(e){var t=this,n=this.store.getRowByKey(e),o=this.props.options,r=o.onDeleteRow,a=o.afterDeleteRow,l=o.pageStartIndex;if(r&&r(e,n),this.store.setSelectedRowKey([]),this.allowRemote(g.default.REMOTE_DROP_ROW))return void(a&&a(e,n));this.store.remove(e);var i=void 0;if(this.props.pagination){var s=this.state.sizePerPage,u=Math.ceil(this.store.getDataNum()/s),f=this.state.currPage;f>u&&(f=u),i=this.store.page(L.default.getNormalizedPage(l,f),s).get(),this.setState(function(){return{data:i,selectedRowKeys:t.store.getSelectedRowKeys(),currPage:f,reset:!1}})}else i=this.store.get(),this.setState(function(){return{data:i,reset:!1,selectedRowKeys:t.store.getSelectedRowKeys()}});a&&a(e,n)}},{key:"renderPagination",value:function(){if(this.props.pagination){var e=void 0;e=this.allowRemote(g.default.REMOTE_PAGE)?this.props.fetchInfo.dataTotalSize:this.store.getDataNum();var t=this.props.options,n=void 0===t.withFirstAndLast||t.withFirstAndLast;return Math.ceil(e/this.state.sizePerPage)<=1&&this.props.ignoreSinglePage?null:c.default.createElement("div",{className:"react-bs-table-pagination"},c.default.createElement(k.default,{ref:"pagination",withFirstAndLast:n,alwaysShowAllBtns:t.alwaysShowAllBtns,currPage:this.state.currPage,changePage:this.handlePaginationData,sizePerPage:this.state.sizePerPage,sizePerPageList:t.sizePerPageList||g.default.SIZE_PER_PAGE_LIST,pageStartIndex:t.pageStartIndex,paginationShowsTotal:t.paginationShowsTotal,paginationSize:t.paginationSize||g.default.PAGINATION_SIZE,dataSize:e,onSizePerPageList:t.onSizePerPageList,prePage:t.prePage||g.default.PRE_PAGE,nextPage:t.nextPage||g.default.NEXT_PAGE,firstPage:t.firstPage||g.default.FIRST_PAGE,lastPage:t.lastPage||g.default.LAST_PAGE,prePageTitle:t.prePageTitle||g.default.PRE_PAGE_TITLE,nextPageTitle:t.nextPageTitle||g.default.NEXT_PAGE_TITLE,firstPageTitle:t.firstPageTitle||g.default.FIRST_PAGE_TITLE,lastPageTitle:t.lastPageTitle||g.default.LAST_PAGE_TITLE,hideSizePerPage:t.hideSizePerPage,sizePerPageDropDown:t.sizePerPageDropDown,hidePageListOnlyOnePage:t.hidePageListOnlyOnePage,paginationPanel:t.paginationPanel,keepSizePerPageState:t.keepSizePerPageState,open:!1}))}return null}},{key:"renderToolBar",value:function(){var e=this.props,t=e.exportCSV,n=e.selectRow,o=e.insertRow,r=e.deleteRow,a=e.search,l=e.children,i=e.keyField,s=n&&n.showOnlySelected,u="undefined"==typeof this.props.options.printToolBar||this.props.options.printToolBar;if(s||o||r||a||t||this.props.options.searchPanel||this.props.options.btnGroup||this.props.options.toolBar){var f=void 0;return f=Array.isArray(l)?l.filter(function(e){return null!=e}).map(function(e,t){if(e){var n=e.props,o=n.isKey||i===n.dataField;return{isKey:o,name:n.headerText||n.children,field:n.dataField,hiddenOnInsert:n.hiddenOnInsert,keyValidator:n.keyValidator,customInsertEditor:n.customInsertEditor,autoValue:n.autoValue||!1,editable:n.editable&&L.default.isFunction("function"===n.editable)?n.editable():n.editable,format:!!n.dataFormat&&function(e){return n.dataFormat(e,null,n.formatExtraData,t).replace(/<.*?>/g,"")}}}}):[{name:l.props.headerText||l.props.children,field:l.props.dataField,editable:l.props.editable,customInsertEditor:l.props.customInsertEditor,hiddenOnInsert:l.props.hiddenOnInsert,keyValidator:l.props.keyValidator}],c.default.createElement("div",{className:"react-bs-table-tool-bar "+(u?"":"hidden-print")},c.default.createElement(N.default,{ref:"toolbar",version:this.props.version,defaultSearch:this.props.options.defaultSearch,clearSearch:this.props.options.clearSearch,searchPosition:this.props.options.searchPosition,searchDelayTime:this.props.options.searchDelayTime,enableInsert:o,enableDelete:r,enableSearch:a,enableExportCSV:t,enableShowOnlySelected:s,columns:f,searchPlaceholder:this.props.searchPlaceholder,exportCSVText:this.props.options.exportCSVText,insertText:this.props.options.insertText,deleteText:this.props.options.deleteText,saveText:this.props.options.saveText,closeText:this.props.options.closeText,ignoreEditable:this.props.options.ignoreEditable,onAddRow:this.handleAddRow,onDropRow:this.handleDropRow,onSearch:this.handleSearch,onExportCSV:this.handleExportCSV,onShowOnlySelected:this.handleShowOnlySelected,insertModalHeader:this.props.options.insertModalHeader,insertModalFooter:this.props.options.insertModalFooter,insertModalBody:this.props.options.insertModalBody,insertModal:this.props.options.insertModal,insertBtn:this.props.options.insertBtn,deleteBtn:this.props.options.deleteBtn,showSelectedOnlyBtn:this.props.options.showSelectedOnlyBtn,exportCSVBtn:this.props.options.exportCSVBtn,clearSearchBtn:this.props.options.clearSearchBtn,searchField:this.props.options.searchField,searchPanel:this.props.options.searchPanel,btnGroup:this.props.options.btnGroup,toolBar:this.props.options.toolBar,reset:this.state.reset,isValidKey:this.store.isValidKey,insertFailIndicator:this.props.options.insertFailIndicator||g.default.INSERT_FAIL_INDICATOR}))}return null}},{key:"renderTableFilter",value:function(e){return this.props.columnFilter?c.default.createElement(F.default,{columns:e,rowSelectType:this.props.selectRow.mode,onFilter:this.handleFilterData}):null}},{key:"renderTableFooter",value:function(e,t,n,o){if(this.props.footer){var r=!0,a=this.props.selectRow.mode,l=L.default.isSelectRowDefined(a);return l&&(r=this.props.selectRow.hideSelectColumn),c.default.createElement(_.default,{ref:"footer",columns:n,colGroups:o,footerFormatterReturnData:t,tableFooterClass:this.props.tableFooterClass,style:this.props.headerStyle,hideSelectColumn:r,expandColumnVisible:this.props.expandColumnOptions.expandColumnVisible,bordered:this.props.bordered,condensed:this.props.condensed,isFiltered:!!this.filter,showStickyColumn:this.props.showStickyColumn},e)}return null}},{key:"_adjustTable",value:function(){this._adjustHeight(),this.props.printable||this._adjustHeaderWidth()}},{key:"_adjustHeaderWidth",value:function(){var e=this.refs.header.getHeaderColGrouop(),t=this.refs.body.refs.tbody,n=this.refs.body.getHeaderColGrouop(),o=t.childNodes[0],r=t.parentNode.getBoundingClientRect().height>t.parentNode.parentNode.getBoundingClientRect().height,a=r?L.default.getScrollBarWidth():0;if(o&&this.store.getDataNum()){if(r||this.isVerticalScroll!==r)for(var l=o.childNodes,i=0;i=c){u++;var p=a?e.refs.pagination.getLastPage():-1;if(!(u<=p))return;e.handlePaginationData(u,e.state.sizePerPage),s=0}else if(s<0){if(u--,!(u>0))return;e.handlePaginationData(u,e.state.sizePerPage),s=c-1}else if(i>=d){if(s+1===c){u++;var h=a?e.refs.pagination.getLastPage():-1;if(!(u<=h))return;e.handlePaginationData(u,e.state.sizePerPage),s=0}else s++;i=r?1:0}else if(i<0)if(i=d-1,0===s){if(u--,!(u>0))return;e.handlePaginationData(u,e.state.sizePerPage),s=e.state.sizePerPage-1}else s--;e.setState(function(){return{x:i,y:s,currPage:u,reset:!1}})},this.handleRowClick=function(t,n,o){var r=e.props,a=r.options,l=r.keyBoardNav;if(a.onRowClick&&a.onRowClick(t,o,n),l){var s="object"===("undefined"==typeof l?"undefined":i(l))?l:{},u=s.clickToNav;u=u!==!1||u,u&&e.setState(function(){return{x:o,y:n,reset:!1}})}},this.handleRowDoubleClick=function(t){e.props.options.onRowDoubleClick&&e.props.options.onRowDoubleClick(t)},this.handleSelectAllRow=function(t){var n=t.currentTarget.checked,o=e.store.getKeyField(),r=e.props.selectRow,a=r.onSelectAll,l=r.unselectable,i=r.selected,s=r.onlyUnselectVisible,u=s?e.state.selectedRowKeys:[],f=!0,c=e.store.get();if(n||s||(c=e.store.getRowByKey(e.state.selectedRowKeys)),l&&l.length>0&&(c=n?c.filter(function(e){return l.indexOf(e[o])===-1||i&&i.indexOf(e[o])!==-1}):c.filter(function(e){return l.indexOf(e[o])===-1})),a&&(f=e.props.selectRow.onSelectAll(n,c)),"undefined"==typeof f||f!==!1){if(n)if(Array.isArray(f))u=f;else{var d=c.map(function(e){return e[o]});u=s?u.concat(d):d}else if(l&&i)u=i.filter(function(e){return l.indexOf(e)>-1});else if(s){var p=c.map(function(e){return e[o]});u=u.filter(function(e){return p.indexOf(e)===-1})}e.store.setSelectedRowKey(u),e.setState(function(){return{selectedRowKeys:u,reset:!1}})}},this.handleShowOnlySelected=function(){e.store.ignoreNonSelected();var t=e.props.options.pageStartIndex,n=void 0;n=e.props.pagination?e.store.page(L.default.getNormalizedPage(t),e.state.sizePerPage).get():e.store.get(),e.setState(function(){return{data:n,reset:!1,currPage:L.default.getFirstPage(t)}})},this.handleSelectRow=function(t,n,o,r){var a=!0,l=e.store.getSelectedRowKeys(),i=t[e.store.getKeyField()],s=e.props.selectRow;s.onSelect&&(a=s.onSelect(t,n,o,r)),"undefined"!=typeof a&&a===!1||(s.mode===g.default.ROW_SELECT_SINGLE?l=n?[i]:[]:n?l.push(i):l=l.filter(function(e){return i!==e}),e.store.setSelectedRowKey(l),e.setState(function(){return{selectedRowKeys:l,reset:!1}}))},this.handleEditCell=function(t,n,o){var r=e.props.cellEdit.beforeSaveCell,a=e.getColumnsDescription(e.props),l=a[o].name,i=function(){e.setState(function(){return{data:e.store.get(),reset:!1}})};if(r){var s=function(r){e.refs.body.cancelEditCell(),r||void 0===r?e.editCell(t,n,o):i()},u=r(e.state.data[n],l,t,s);if(u===!1&&"undefined"!=typeof u)return i();if(u===g.default.AWAIT_BEFORE_CELL_EDIT)return u}e.editCell(t,n,o)},this.handleAddRow=function(t){var n=!1,o=e.props.options.onAddRow,r=function(t){return n?void e.refs.toolbar.afterHandleSaveBtnClick(t):t},a=function(n){if("undefined"!=typeof n&&""!==n)return r(n);if(e.allowRemote(g.default.REMOTE_INSERT_ROW))return e.props.options.afterInsertRow&&e.props.options.afterInsertRow(t),r();try{e.store.add(t)}catch(e){return r(e.message)}return e._handleAfterAddingRow(t,!1),r()};if(o){var l=e.store.getColInfos(),i=o(t,l,a);return""!==i&&i!==!1?i:"undefined"==typeof i?a():(n=!0,!n)}return a()},this.getPageByRowKey=function(t){var n=e.state.sizePerPage,o=e.store.getCurrentDisplayData(),r=e.store.getKeyField(),a=o.findIndex(function(e){return e[r]===t});return a>-1?parseInt(a/n,10)+1:a;
},this.handleDropRow=function(t){var n=t?t:e.store.getSelectedRowKeys();n&&n.length>0&&(e.props.options.handleConfirmDeleteRow?e.props.options.handleConfirmDeleteRow(function(){e.deleteRow(n)},n):confirm("Are you sure you want to delete?")&&e.deleteRow(n))},this.handleFilterData=function(t){var n=e.props,o=n.autoCollapse.filter,r=n.options,a=r.onFilterChange,l=r.pageStartIndex;if(a){var i=e.store.getColInfos();a(t,i)}if(e.setState(function(){var e={currPage:L.default.getFirstPage(l),reset:!1};return o&&(e.expanding=[]),e}),e.allowRemote(g.default.REMOTE_FILTER))return void(e.props.options.afterColumnFilter&&e.props.options.afterColumnFilter(t,e.store.getDataIgnoringPagination()));e.store.filter(t);var s=e.store.getSortInfo();s.length>0&&e.store.sort();var u=void 0;if(e.props.pagination){var f=e.state.sizePerPage;u=e.store.page(L.default.getNormalizedPage(l),f).get()}else u=e.store.get();e.props.options.afterColumnFilter&&e.props.options.afterColumnFilter(t,e.store.getDataIgnoringPagination()),e.setState(function(){return{data:u,reset:!1}})},this.handleExportCSV=function(){var t={},n=e.props.csvFileName,o=e.props.options,r=o.onExportToCSV,a=o.exportCSVSeparator,l=o.noAutoBOM,i=o.excludeCSVHeader;t=r?r():e.store.getDataIgnoringPagination();var s=a||g.default.DEFAULT_CSV_SEPARATOR,u=[];e.props.children.filter(function(e){return null!=e}).map(function(e){(e.props.export===!0||"undefined"==typeof e.props.export&&e.props.hidden===!1)&&u.push({field:e.props.dataField,type:e.props.csvFieldType,format:e.props.csvFormat,extraData:e.props.csvFormatExtraData,header:e.props.csvHeader||e.props.dataField,row:Number(e.props.row)||0,rowSpan:Number(e.props.rowSpan)||1,colSpan:Number(e.props.colSpan)||1})}),L.default.isFunction(n)&&(n=n()),(0,A.default)(t,u,n,s,l,i)},this.handleSearch=function(t){e.refs.toolbar&&e.refs.toolbar.setSearchInput(t);var n=e.props.autoCollapse.search,o=e.props.options,r=o.onSearchChange,a=o.pageStartIndex;if(r){var l=e.store.getColInfos();r(t,l,e.props.multiColumnSearch)}if(e.setState(function(){var e={currPage:L.default.getFirstPage(a),reset:!1};return n&&(e.expanding=[]),e}),e.allowRemote(g.default.REMOTE_SEARCH))return void(e.props.options.afterSearch&&e.props.options.afterSearch(t,e.store.getDataIgnoringPagination()));e.store.search(t);var i=e.store.getSortInfo();i.length>0&&e.store.sort();var s=void 0;if(e.props.pagination){var u=e.state.sizePerPage;s=e.store.page(L.default.getNormalizedPage(a),u).get()}else s=e.store.get();e.props.options.afterSearch&&e.props.options.afterSearch(t,e.store.getDataIgnoringPagination()),e.setState(function(){return{data:s,reset:!1}})},this._scrollTop=function(){var t=e.props.scrollTop;t===g.default.SCROLL_TOP?e.refs.body.refs.container.scrollTop=0:t===g.default.SCROLL_BOTTOM?e.refs.body.refs.container.scrollTop=e.refs.body.refs.container.scrollHeight:"number"!=typeof t||isNaN(t)||(e.refs.body.refs.container.scrollTop=t)},this._scrollHeader=function(t){e.refs.header.refs.container.scrollLeft=t.currentTarget.scrollLeft},this._scrollFooter=function(t){e.props.footer&&(e.refs.footer.refs.container.scrollLeft=t.currentTarget.scrollLeft)}};V.propTypes={keyField:p.default.string,height:p.default.oneOfType([p.default.string,p.default.number]),maxHeight:p.default.oneOfType([p.default.string,p.default.number]),data:p.default.oneOfType([p.default.array,p.default.object]),version:p.default.string,remote:p.default.oneOfType([p.default.bool,p.default.func]),replace:p.default.oneOfType([p.default.bool,p.default.func]),scrollTop:p.default.oneOfType([p.default.string,p.default.number]),striped:p.default.bool,bordered:p.default.bool,hover:p.default.bool,condensed:p.default.bool,pagination:p.default.bool,printable:p.default.bool,withoutTabIndex:p.default.bool,keyBoardNav:p.default.oneOfType([p.default.bool,p.default.object]),searchPlaceholder:p.default.string,selectRow:p.default.shape({mode:p.default.oneOf([g.default.ROW_SELECT_NONE,g.default.ROW_SELECT_SINGLE,g.default.ROW_SELECT_MULTI]),customComponent:p.default.func,bgColor:p.default.oneOfType([p.default.string,p.default.func]),selected:p.default.array,onSelect:p.default.func,onSelectAll:p.default.func,clickToSelect:p.default.bool,hideSelectColumn:p.default.bool,clickToSelectAndEditCell:p.default.bool,clickToExpand:p.default.bool,showOnlySelected:p.default.bool,unselectable:p.default.array,columnWidth:p.default.oneOfType([p.default.number,p.default.string]),onlyUnselectVisible:p.default.bool}),cellEdit:p.default.shape({mode:p.default.string,blurToSave:p.default.bool,blurToEscape:p.default.bool,beforeSaveCell:p.default.func,afterSaveCell:p.default.func,nonEditableRows:p.default.func}),insertRow:p.default.bool,deleteRow:p.default.bool,search:p.default.bool,multiColumnSearch:p.default.bool,strictSearch:p.default.bool,columnFilter:p.default.bool,trClassName:p.default.any,trStyle:p.default.any,tableStyle:p.default.object,containerStyle:p.default.object,headerStyle:p.default.object,bodyStyle:p.default.object,containerClass:p.default.string,tableContainerClass:p.default.string,headerContainerClass:p.default.string,bodyContainerClass:p.default.string,tableHeaderClass:p.default.string,tableBodyClass:p.default.string,tableFooterClass:p.default.string,options:p.default.shape({clearSearch:p.default.bool,sortName:p.default.oneOfType([p.default.string,p.default.array]),sortOrder:p.default.oneOfType([p.default.string,p.default.array]),defaultSortName:p.default.oneOfType([p.default.string,p.default.array]),defaultSortOrder:p.default.oneOfType([p.default.string,p.default.array]),sortIndicator:p.default.bool,afterTableComplete:p.default.func,afterDeleteRow:p.default.func,afterInsertRow:p.default.func,afterSearch:p.default.func,afterColumnFilter:p.default.func,onRowClick:p.default.func,onRowDoubleClick:p.default.func,page:p.default.number,pageStartIndex:p.default.number,paginationShowsTotal:p.default.oneOfType([p.default.bool,p.default.func]),sizePerPageList:p.default.array,sizePerPage:p.default.number,paginationSize:p.default.number,paginationPosition:p.default.oneOf([g.default.PAGINATION_POS_TOP,g.default.PAGINATION_POS_BOTTOM,g.default.PAGINATION_POS_BOTH]),toolbarPosition:p.default.oneOf([g.default.TOOLBAR_POS_TOP,g.default.TOOLBAR_POS_BOTTOM,g.default.TOOLBAR_POS_BOTH]),hideSizePerPage:p.default.bool,hidePageListOnlyOnePage:p.default.bool,alwaysShowAllBtns:p.default.bool,withFirstAndLast:p.default.bool,keepSizePerPageState:p.default.bool,onSortChange:p.default.func,onPageChange:p.default.func,onSizePerPageList:p.default.func,onFilterChange:p.default.func,onSearchChange:p.default.func,onAddRow:p.default.func,onExportToCSV:p.default.func,onCellEdit:p.default.func,noDataText:p.default.oneOfType([p.default.string,p.default.object]),withoutNoDataText:p.default.bool,handleConfirmDeleteRow:p.default.func,prePage:p.default.any,nextPage:p.default.any,firstPage:p.default.any,lastPage:p.default.any,prePageTitle:p.default.string,nextPageTitle:p.default.string,firstPageTitle:p.default.string,lastPageTitle:p.default.string,searchDelayTime:p.default.number,excludeCSVHeader:p.default.bool,exportCSVText:p.default.string,exportCSVSeparator:p.default.string,insertText:p.default.string,deleteText:p.default.string,saveText:p.default.string,closeText:p.default.string,ignoreEditable:p.default.bool,defaultSearch:p.default.string,insertModalHeader:p.default.func,insertModalBody:p.default.func,insertModalFooter:p.default.func,insertModal:p.default.func,insertBtn:p.default.func,deleteBtn:p.default.func,showSelectedOnlyBtn:p.default.func,exportCSVBtn:p.default.func,clearSearchBtn:p.default.func,searchField:p.default.func,searchPanel:p.default.func,btnGroup:p.default.func,toolBar:p.default.func,sizePerPageDropDown:p.default.func,paginationPanel:p.default.func,searchPosition:p.default.string,expandRowBgColor:p.default.string,expandBy:p.default.string,expanding:p.default.array,onExpand:p.default.func,onlyOneExpanding:p.default.bool,expandBodyClass:p.default.oneOfType([p.default.string,p.default.func]),expandParentClass:p.default.oneOfType([p.default.string,p.default.func]),beforeShowError:p.default.func,printToolBar:p.default.bool,insertFailIndicator:p.default.string,noAutoBOM:p.default.bool}),fetchInfo:p.default.shape({dataTotalSize:p.default.number}),exportCSV:p.default.bool,csvFileName:p.default.oneOfType([p.default.string,p.default.func]),ignoreSinglePage:p.default.bool,expandableRow:p.default.func,expandComponent:p.default.func,autoCollapse:p.default.shape({sort:p.default.bool,filter:p.default.bool,search:p.default.bool}),expandColumnOptions:p.default.shape({columnWidth:p.default.oneOfType([p.default.number,p.default.string]),expandColumnVisible:p.default.bool,expandColumnComponent:p.default.func,expandColumnBeforeSelectColumn:p.default.bool}),footer:p.default.bool},V.defaultProps={version:"3",replace:!1,scrollTop:void 0,expandComponent:void 0,expandableRow:void 0,expandColumnOptions:{expandColumnVisible:!1,expandColumnComponent:void 0,expandColumnBeforeSelectColumn:!0},height:"100%",maxHeight:void 0,striped:!1,bordered:!0,hover:!1,condensed:!1,pagination:!1,printable:!1,withoutTabIndex:!1,keyBoardNav:!1,searchPlaceholder:void 0,selectRow:{mode:g.default.ROW_SELECT_NONE,bgColor:g.default.ROW_SELECT_BG_COLOR,selected:[],onSelect:void 0,onSelectAll:void 0,clickToSelect:!1,hideSelectColumn:!1,clickToSelectAndEditCell:!1,clickToExpand:!1,showOnlySelected:!1,unselectable:[],customComponent:void 0,onlyUnselectVisible:!1},cellEdit:{mode:g.default.CELL_EDIT_NONE,blurToSave:!1,blurToEscape:!1,beforeSaveCell:void 0,afterSaveCell:void 0,nonEditableRows:void 0},insertRow:!1,deleteRow:!1,search:!1,multiColumnSearch:!1,strictSearch:void 0,multiColumnSort:1,columnFilter:!1,trClassName:"",trStyle:void 0,tableStyle:void 0,containerStyle:void 0,headerStyle:void 0,bodyStyle:void 0,containerClass:null,tableContainerClass:null,headerContainerClass:null,bodyContainerClass:null,tableHeaderClass:null,tableBodyClass:null,tableFooterClass:null,options:{clearSearch:!1,sortName:void 0,sortOrder:void 0,defaultSortName:void 0,defaultSortOrder:void 0,sortIndicator:!0,afterTableComplete:void 0,afterDeleteRow:void 0,afterInsertRow:void 0,afterSearch:void 0,afterColumnFilter:void 0,onRowClick:void 0,onRowDoubleClick:void 0,onMouseLeave:void 0,onMouseEnter:void 0,onRowMouseOut:void 0,onRowMouseOver:void 0,page:void 0,paginationShowsTotal:!1,sizePerPageList:g.default.SIZE_PER_PAGE_LIST,sizePerPage:void 0,paginationSize:g.default.PAGINATION_SIZE,paginationPosition:g.default.PAGINATION_POS_BOTTOM,toolbarPosition:g.default.TOOLBAR_POS_TOP,hideSizePerPage:!1,hidePageListOnlyOnePage:!1,alwaysShowAllBtns:!1,withFirstAndLast:!0,keepSizePerPageState:!1,onSizePerPageList:void 0,noDataText:void 0,withoutNoDataText:!1,handleConfirmDeleteRow:void 0,prePage:g.default.PRE_PAGE,nextPage:g.default.NEXT_PAGE,firstPage:g.default.FIRST_PAGE,lastPage:g.default.LAST_PAGE,prePageTitle:g.default.PRE_PAGE_TITLE,nextPageTitle:g.default.NEXT_PAGE_TITLE,firstPageTitle:g.default.FIRST_PAGE_TITLE,lastPageTitle:g.default.LAST_PAGE_TITLE,pageStartIndex:1,searchDelayTime:void 0,excludeCSVHeader:!1,exportCSVText:g.default.EXPORT_CSV_TEXT,exportCSVSeparator:g.default.DEFAULT_CSV_SEPARATOR,insertText:g.default.INSERT_BTN_TEXT,deleteText:g.default.DELETE_BTN_TEXT,saveText:g.default.SAVE_BTN_TEXT,closeText:g.default.CLOSE_BTN_TEXT,ignoreEditable:!1,defaultSearch:"",insertModalHeader:void 0,insertModalBody:void 0,insertModalFooter:void 0,insertModal:void 0,insertBtn:void 0,deleteBtn:void 0,showSelectedOnlyBtn:void 0,exportCSVBtn:void 0,clearSearchBtn:void 0,searchField:void 0,searchPanel:void 0,btnGroup:void 0,toolBar:void 0,sizePerPageDropDown:void 0,paginationPanel:void 0,searchPosition:"right",expandRowBgColor:void 0,expandBy:g.default.EXPAND_BY_ROW,expanding:[],onExpand:void 0,onlyOneExpanding:!1,expandBodyClass:null,expandParentClass:null,beforeShowError:void 0,printToolBar:!0,insertFailIndicator:g.default.INSERT_FAIL_INDICATOR,noAutoBOM:!0},fetchInfo:{dataTotalSize:0},exportCSV:!1,csvFileName:"spreadsheet.csv",ignoreSinglePage:!1,autoCollapse:{sort:g.default.AUTO_COLLAPSE_WHEN_SORT,filter:g.default.AUTO_COLLAPSE_WHEN_FILTER,search:g.default.AUTO_COLLAPSE_WHEN_SEARCH},footer:!1},t.default=V},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var i=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:-1,o=n.props,r=o.columns,a=o.keyField,l=o.expandBy,i=o.expandableRow,s=o.selectRow,u=s.mode,f=s.clickToExpand,c=s.hideSelectColumn,d=o.onlyOneExpanding,p=y.default.isSelectRowDefined(u),h=!(p&&!f);if(t=p&&!c?t-1:t,t=n._isExpandColumnVisible()?t-1:t,i&&h&&(l===b.default.EXPAND_BY_ROW||l===b.default.EXPAND_BY_COL&&t<0||l===b.default.EXPAND_BY_COL&&r[t].expandable)){var m=n.props.expanding,v=n.props.data[e-1][a],g=m.indexOf(v)>-1;g?m=m.filter(function(e){return e!==v}):d?m=[v]:m.push(v),n.props.onExpand(m,v,g)}},n.handleEditCell=function(e,t,o,r){var a=n.props.selectRow,l=y.default.isSelectRowDefined(a.mode),i=n._isExpandColumnVisible();if(l&&(t--,a.hideSelectColumn&&t++),i&&t--,e--,"tab"===o){l&&!a.hideSelectColumn&&t++,i&&t++,n.handleCompleteEditCell(r.target.value,e,t-1),t>=n.props.columns.length?n.handleCellKeyDown(r,!0):n.handleCellKeyDown(r);var s=n.nextEditableCell(e,t),u=s.nextRIndex,f=s.nextCIndex;e=u,t=f}var c={currEditCell:{rid:e,cid:t}};if(n.props.selectRow.clickToSelectAndEditCell&&n.props.cellEdit.mode!==b.default.CELL_EDIT_DBCLICK){var d=n.props.selectedRowKeys.indexOf(n.props.data[e][n.props.keyField])!==-1;n.handleSelectRow(e+1,!d,r)}n.setState(function(){return c})},n.nextEditableCell=function(e,t){var o=n.props.keyField,r=e,a=t,l=void 0,i=void 0;do{if(a>=n.props.columns.length&&(r++,a=0),l=n.props.data[r],i=n.props.columns[a],!l)break;var s=i.editable;if(y.default.isFunction(i.editable)&&(s=i.editable(i,l,r,a)),s&&s.readOnly!==!0&&!i.hidden&&o!==i.name)break;a++}while(l);return{nextRIndex:r,nextCIndex:a}},n.handleCompleteEditCell=function(e,t,o){if(null!==e){var r=n.props.onEditCell(e,t,o);r!==b.default.AWAIT_BEFORE_CELL_EDIT&&n.setState(function(){return{currEditCell:null}})}else n.setState(function(){return{currEditCell:null}})},n.cancelEditCell=function(){n.setState(function(){return{currEditCell:null}})},n.handleClickonSelectColumn=function(e,t,o,r){if(e.stopPropagation(),"TD"===e.target.tagName&&(n.props.selectRow.clickToSelect||n.props.selectRow.clickToSelectAndEditCell)){var a=n.props.selectRow.unselectable||[];a.indexOf(r[n.props.keyField])===-1&&(n.handleSelectRow(o+1,t,e),n.handleClickCell(o+1))}},n.getHeaderColGrouop=function(){return n.refs.header.childNodes},n.state={currEditCell:null},n}return l(t,e),u(t,[{key:"render",value:function(){var e=this.props,t=e.cellEdit,n=e.beforeShowError,o=e.x,r=e.y,a=e.keyBoardNav,l=e.trStyle,s=e.version,u={"table-striped":this.props.striped,"table-bordered":this.props.bordered,"table-hover":this.props.hover};this.props.condensed&&(y.default.isBootstrap4(s)?u["table-sm"]=!0:u["table-condensed"]=!0);var f=(0,_.default)("table",u,this.props.tableBodyClass),d=t.nonEditableRows&&t.nonEditableRows()||[],p=this.props.selectRow.unselectable||[],h=y.default.isSelectRowDefined(this.props.selectRow.mode),m=y.default.renderColGroup(this.props.columns,this.props.selectRow,this.props.expandColumnOptions,s),v=this.props.selectRow.mode===b.default.ROW_SELECT_SINGLE?"radio":"checkbox",E=this.props.selectRow.customComponent,O=a===!0||"object"===("undefined"==typeof a?"undefined":i(a)),T="object"===("undefined"==typeof a?"undefined":i(a))?a.customStyleOnEditCell:null,S="object"===("undefined"==typeof a?"undefined":i(a))?a.customStyle:null,x=this.props.expandColumnOptions.expandColumnComponent,k=this.props.columns.filter(function(e){return e&&!e.hidden}).length;h&&!this.props.selectRow.hideSelectColumn&&(k+=1);var R=1;this.props.expandColumnOptions.expandColumnVisible&&(k+=1);var N=this.props.data.map(function(e,a){var i=this.props.columns.filter(function(e){return null!=e}).map(function(l,i){var s=e[l.name],u=a===r&&i===o;if(l.name!==this.props.keyField&&l.editable&&l.editable.readOnly!==!0&&null!==this.state.currEditCell&&this.state.currEditCell.rid===a&&this.state.currEditCell.cid===i&&d.indexOf(e[this.props.keyField])===-1){var f=l.editable,p=!!l.format&&function(t){return l.format(t,e,l.formatExtraData,a).replace(/<.*?>/g,"")};return y.default.isFunction(l.editable)&&(f=l.editable(s,e,a,i)),c.default.createElement(w.default,{completeEdit:this.handleCompleteEditCell,editable:f,attrs:l.editAttrs,customEditor:l.customEditor,format:!!l.format&&p,key:i,blurToSave:t.blurToSave,blurToEscape:t.blurToEscape,onTab:this.handleEditCell,rowIndex:a,colIndex:i,row:e,fieldValue:s,className:l.editClassName,invalidColumnClassName:l.invalidEditColumnClassName,beforeShowError:n,isFocus:u,customStyleWithNav:T})}var h=void 0,m=s&&s.toString(),b=null,v=l.className,g=l.style;return y.default.isFunction(l.className)&&(v=l.className(s,e,a,i)),y.default.isFunction(l.style)&&(g=l.style(s,e,a,i)),"undefined"!=typeof l.format&&(h=l.format(s,e,l.formatExtraData,a),m=c.default.isValidElement(h)?h:c.default.createElement("div",{dangerouslySetInnerHTML:{__html:h}})),y.default.isFunction(l.columnTitle)?b=l.columnTitle(s,e,a,i):"string"==typeof l.columnTitle?b=l.columnTitle:l.columnTitle&&(h?b=h.toString():s&&(b=s.toString())),c.default.createElement(C.default,{key:i,cIndex:i,rIndex:a,dataAlign:l.align,className:v,columnTitle:b,cellEdit:t,hidden:l.hidden,onEdit:this.handleEditCell,width:l.width,onClick:this.handleClickCell,attrs:l.attrs,style:g,tabIndex:R++ +"",isFocus:u,keyBoardNav:O,onKeyDown:this.handleCellKeyDown,customNavStyle:S,row:e,withoutTabIndex:this.props.withoutTabIndex},m)},this),s=e[this.props.keyField],u=p.indexOf(s)!==-1,f=this.props.selectedRowKeys.indexOf(s)!==-1,m=h&&!this.props.selectRow.hideSelectColumn?this.renderSelectRowColumn(f,v,u,E,a,e):null,_=this.renderExpandRowColumn(this.props.expandableRow&&this.props.expandableRow(e),this.props.expanding.indexOf(s)>-1,x,a),N=this.props.expandableRow&&this.props.expandableRow(e),j=N&&this.props.expanding.indexOf(s)>-1,F=this.props.trClassName;y.default.isFunction(this.props.trClassName)&&(F=this.props.trClassName(e,a)),j&&this.props.expandParentClass&&(F+=y.default.isFunction(this.props.expandParentClass)?this.props.expandParentClass(e,a):this.props.expandParentClass);var I=[c.default.createElement(g.default,{isSelected:f,key:s,className:F,index:a,row:e,selectRow:h?this.props.selectRow:void 0,enableCellEdit:t.mode!==b.default.CELL_EDIT_NONE,onRowClick:this.handleRowClick,onRowDoubleClick:this.handleRowDoubleClick,onRowMouseOver:this.handleRowMouseOver,onRowMouseOut:this.handleRowMouseOut,onSelectRow:this.handleSelectRow,onExpandRow:this.handleClickCell,unselectableRow:u,style:l,dbClickToEdit:t.mode===b.default.CELL_EDIT_DBCLICK},this.props.expandColumnOptions.expandColumnVisible&&this.props.expandColumnOptions.expandColumnBeforeSelectColumn&&_,m,this.props.expandColumnOptions.expandColumnVisible&&!this.props.expandColumnOptions.expandColumnBeforeSelectColumn&&_,i)];if(N){var D=y.default.isFunction(this.props.expandBodyClass)?this.props.expandBodyClass(e,a,j):this.props.expandBodyClass;I.push(c.default.createElement(P.default,{key:s+"-expand",row:e,className:D,bgColor:this.props.expandRowBgColor||this.props.selectRow.bgColor||void 0,hidden:!j,colSpan:k,width:"100%"},this.props.expandComponent(e)))}return I},this);if(0===N.length&&!this.props.withoutNoDataText){var j=this.props.columns.filter(function(e){return!e.hidden}).length+(h&&!this.props.selectRow.hideSelectColumn?1:0)+(this.props.expandColumnOptions.expandColumnVisible?1:0);N=[c.default.createElement(g.default,{key:"##table-empty##",style:l},c.default.createElement("td",{"data-toggle":"collapse",colSpan:j,className:"react-bs-table-no-data"},this.props.noDataText||b.default.NO_DATA_TEXT))]}return c.default.createElement("div",{ref:"container",className:(0,_.default)("react-bs-container-body",this.props.bodyContainerClass),style:this.props.style},c.default.createElement("table",{className:f},c.default.cloneElement(m,{ref:"header"}),c.default.createElement("tbody",{ref:"tbody"},N)))}},{key:"renderSelectRowColumn",value:function(e,t,n){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,r=this,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,l=arguments[5];return c.default.createElement("td",{onClick:function(t){r.handleClickonSelectColumn(t,!e,a,l)},style:{textAlign:"center"}},o?c.default.createElement(o,{type:t,checked:e,disabled:n,rowIndex:a,onChange:function(e){return r.handleSelectRowColumChange(e,a)}}):c.default.createElement("input",{type:t,checked:e,disabled:n,onChange:function(e){return r.handleSelectRowColumChange(e,a)}}))}},{key:"renderExpandRowColumn",value:function(e,t,n){var o=this,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,a=null;return a=n?c.default.createElement(n,{isExpandableRow:e,isExpanded:t}):e?t?c.default.createElement("span",{className:"fa fa-minus glyphicon glyphicon-minus"}):c.default.createElement("span",{className:"fa fa-plus glyphicon glyphicon-plus"}):" ",c.default.createElement("td",{className:"react-bs-table-expand-cell",onClick:function(){return o.handleClickCell(r+1)}},a)}},{key:"_isExpandColumnVisible",value:function(){return this.props.expandColumnOptions.expandColumnVisible}}]),t}(f.Component);x.propTypes={version:p.default.string,data:p.default.array,columns:p.default.array,striped:p.default.bool,bordered:p.default.bool,hover:p.default.bool,condensed:p.default.bool,keyField:p.default.string,selectedRowKeys:p.default.array,onRowClick:p.default.func,onRowDoubleClick:p.default.func,onSelectRow:p.default.func,noDataText:p.default.oneOfType([p.default.string,p.default.object]),withoutNoDataText:p.default.bool,style:p.default.object,tableBodyClass:p.default.string,bodyContainerClass:p.default.string,expandableRow:p.default.func,expandComponent:p.default.func,expandRowBgColor:p.default.string,expandBy:p.default.string,expanding:p.default.array,onExpand:p.default.func,expandBodyClass:p.default.oneOfType([p.default.string,p.default.func]),expandParentClass:p.default.oneOfType([p.default.string,p.default.func]),onlyOneExpanding:p.default.bool,beforeShowError:p.default.func,keyBoardNav:p.default.oneOfType([p.default.bool,p.default.object]),x:p.default.number,y:p.default.number,onNavigateCell:p.default.func,withoutTabIndex:p.default.bool},t.default=x},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{
constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var i=Object.assign||function(e){for(var t=1;t0?o[0].order:void 0}}Object.defineProperty(t,"__esModule",{value:!0});var u=function(){function e(e,t){for(var n=0;nl&&(l=e.row);for(var t=0;t1?"":void 0}).filter(function(e){return"undefined"!=typeof e}).join(n)+"\n"},f=i;f<=l;f++)u(f);return t=t.filter(function(e){return void 0!==e.field}),e.map(function(e){t.map(function(o,a){var l=o.field,i=o.format,u=o.extraData,f=o.type,c="undefined"!=typeof i?i(e[l],e,u):e[l];c=f===s.default.CSV_NUMBER_TYPE?Number(c):'"'+c+'"';var d="undefined"!=typeof c?c:"";r+=d,a+1",">=","<","<=","!="],m=function(e){function t(e){r(this,t);var n=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.dateComparators=n.props.dateComparators||y,n.filter=n.filter.bind(n),n.onChangeComparator=n.onChangeComparator.bind(n),n}return l(t,e),s(t,[{key:"setDefaultDate",value:function(){var e="",t=this.props.defaultValue;return t&&t.date&&(e=i(new Date(t.date))),e}},{key:"onChangeComparator",value:function(e){var t=this.refs.inputDate.value,n=e.target.value;""!==t&&(t=new Date(t),this.props.filterHandler({date:t,comparator:n},h.default.FILTER_TYPE.DATE))}},{key:"getComparatorOptions",value:function(){var e=[];e.push(f.default.createElement("option",{key:"-1"}));for(var t=0;t",">=","<","<=","!="],b=function(e){function t(e){r(this,t);var n=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.numberComparators=n.props.numberComparators||m,n.timeout=null,n.state={isPlaceholderSelected:void 0===n.props.defaultValue||void 0===n.props.defaultValue.number||n.props.options&&n.props.options.indexOf(n.props.defaultValue.number)===-1},n.onChangeNumber=n.onChangeNumber.bind(n),n.onChangeNumberSet=n.onChangeNumberSet.bind(n),n.onChangeComparator=n.onChangeComparator.bind(n),n}return l(t,e),i(t,[{key:"onChangeNumber",value:function(e){var t=this,n=this.refs.numberFilterComparator.value;if(""!==n){this.timeout&&clearTimeout(this.timeout);var o=e.target.value;this.timeout=setTimeout(function(){t.props.filterHandler({number:o,comparator:n},y.default.FILTER_TYPE.NUMBER)},this.props.delay)}}},{key:"onChangeNumberSet",value:function(e){var t=this.refs.numberFilterComparator.value,n=e.target.value;this.setState(function(){return{isPlaceholderSelected:""===n}}),""!==t&&this.props.filterHandler({number:n,comparator:t},y.default.FILTER_TYPE.NUMBER)}},{key:"onChangeComparator",value:function(e){var t=this.refs.numberFilter.value,n=e.target.value;""!==t&&this.props.filterHandler({number:t,comparator:n},y.default.FILTER_TYPE.NUMBER)}},{key:"cleanFiltered",value:function(){var e=this.props.defaultValue?this.props.defaultValue.number:"",t=this.props.defaultValue?this.props.defaultValue.comparator:"";this.setState(function(){return{isPlaceholderSelected:""===e}}),this.refs.numberFilterComparator.value=t,this.refs.numberFilter.value=e,this.props.filterHandler({number:e,comparator:t},y.default.FILTER_TYPE.NUMBER)}},{key:"applyFilter",value:function(e){var t=e.number,n=e.comparator;this.setState(function(){return{isPlaceholderSelected:""===t}}),this.refs.numberFilterComparator.value=n,this.refs.numberFilter.value=t,this.props.filterHandler({number:t,comparator:n},y.default.FILTER_TYPE.NUMBER)}},{key:"getComparatorOptions",value:function(){
var e=[],t=this.props.withoutEmptyComparatorOption;t||e.push(u.default.createElement("option",{key:"-1"}));for(var n=0;nn.lastPage?n.lastPage:a+1:e===i?n.lastPage:e===s?o:parseInt(e,10),f&&n.closeDropDown(),e!==a&&n.props.changePage(e,u)},n.changeSizePerPage=function(e){var t="string"==typeof e?parseInt(e,10):e,o=n.props.currPage;t!==n.props.sizePerPage&&(n.totalPages=Math.ceil(n.props.dataSize/t),n.lastPage=n.props.pageStartIndex+n.totalPages-1,o>n.lastPage&&(o=n.lastPage),n.props.changePage(o,t),n.props.onSizePerPageList&&n.props.onSizePerPageList(t)),n.closeDropDown()},n.toggleDropDown=function(){n.setState(function(){return{open:!n.state.open}})},n.closeDropDown=function(){n.setState(function(){return{open:!1}})},n.state={open:n.props.open},n}return l(t,e),s(t,[{key:"componentWillReceiveProps",value:function(){var e=this.props.keepSizePerPageState;e||this.closeDropDown()}},{key:"render",value:function(){var e=this.props,t=e.currPage,n=e.dataSize,o=e.sizePerPage,r=e.sizePerPageList,a=e.paginationShowsTotal,l=e.pageStartIndex,i=e.paginationPanel,s=e.hidePageListOnlyOnePage;this.totalPages=Math.ceil(n/o),this.lastPage=this.props.pageStartIndex+this.totalPages-1;var u=this.makePage(O.default.isFunction(i)),c=this.makeDropDown(),d=Math.abs(E.default.PAGE_START_INDEX-l),p=(t-l)*o;p=0===n?0:p+1;var h=Math.min(o*(t+d)-1,n);h>=n&&h--;var y=a?f.default.createElement("span",null,"Showing rows ",p," to ",h+1," of ",n):null;O.default.isFunction(a)&&(y=a(p,h+1,n));var m=i&&i({currPage:t,sizePerPage:o,sizePerPageList:r,pageStartIndex:l,totalPages:this.totalPages,changePage:this.changePage,toggleDropDown:this.toggleDropDown,changeSizePerPage:this.changeSizePerPage,components:{totalText:y,sizePerPageDropdown:c,pageList:u}}),b=s&&1===this.totalPages?"none":"block";return f.default.createElement("div",{className:"row",style:{marginTop:15}},m||[f.default.createElement("div",{key:"paging-left",className:"col-md-6 col-xs-6 col-sm-6 col-lg-6"},y,r.length>1?c:null),f.default.createElement("div",{key:"paging-right",style:{display:b},className:"col-md-6 col-xs-6 col-sm-6 col-lg-6"},u)])}},{key:"makeDropDown",value:function(){var e=this,t=void 0,n=void 0,o="",r=this.props,a=r.sizePerPageDropDown,l=r.hideSizePerPage,s=r.sizePerPage,u=r.sizePerPageList;if(a){if(t=a({open:this.state.open,hideSizePerPage:l,currSizePerPage:String(s),sizePerPageList:u,toggleDropDown:this.toggleDropDown,changeSizePerPage:this.changeSizePerPage,onBlur:this.closeDropDown}),t.type.name!==v.default.name)return t;n=t.props}if(n||!t){var c=u.map(function(t){var n=t.text||t,r=t.value||t;return s===r&&(o=n),f.default.createElement("li",{key:n,role:"presentation",className:"dropdown-item"},f.default.createElement("a",{role:"menuitem",tabIndex:"-1",href:"#","data-page":r,onMouseDown:function(t){t.preventDefault(),e.changeSizePerPage(r)}},n))});t=f.default.createElement(v.default,i({open:this.state.open,hidden:l,currSizePerPage:String(o),options:c,onClick:this.toggleDropDown,onBlur:this.closeDropDown},n))}return t}},{key:"makePage",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],n=this.getPages(),o=function(e,t){var n=t.currPage,o=t.pageStartIndex,r=t.firstPage,a=t.prePage;return n===o&&(e===r||e===a)},r=function(t,n){var o=n.currPage,r=n.nextPage,a=n.lastPage;return o===e.lastPage&&(t===r||t===a)},a=n.filter(function(e){return!!this.props.alwaysShowAllBtns||!o(e,this.props)&&!r(e,this.props)},this).map(function(e){var t=e===this.props.currPage,n=!(!o(e,this.props)&&!r(e,this.props)),a=e+"";return e===this.props.nextPage?a=this.props.nextPageTitle:e===this.props.prePage?a=this.props.prePageTitle:e===this.props.firstPage?a=this.props.firstPageTitle:e===this.props.lastPage&&(a=this.props.lastPageTitle),f.default.createElement(m.default,{key:e,title:a,changePage:this.changePage,active:t,disable:n},e)},this),l=(0,h.default)(t?null:"react-bootstrap-table-page-btns-ul","pagination");return f.default.createElement("ul",{className:l},a)}},{key:"getLastPage",value:function(){return this.lastPage}},{key:"getPages",value:function(){var e=void 0,t=this.totalPages;if(t<=0)return[];var n=Math.max(this.props.currPage-Math.floor(this.props.paginationSize/2),this.props.pageStartIndex);t=n+this.props.paginationSize-1,t>this.lastPage&&(t=this.lastPage,n=t-this.props.paginationSize+1),e=n!==this.props.pageStartIndex&&this.totalPages>this.props.paginationSize&&this.props.withFirstAndLast?[this.props.firstPage,this.props.prePage]:this.totalPages>1||this.props.alwaysShowAllBtns?[this.props.prePage]:[];for(var o=n;o<=t;o++)o>=this.props.pageStartIndex&&e.push(o);return t<=this.lastPage&&e.length>1&&e.push(this.props.nextPage),t!==this.lastPage&&this.props.withFirstAndLast&&e.push(this.props.lastPage),e}}]),t}(u.Component);w.propTypes={currPage:d.default.number,sizePerPage:d.default.number,dataSize:d.default.number,changePage:d.default.func,sizePerPageList:d.default.array,paginationShowsTotal:d.default.oneOfType([d.default.bool,d.default.func]),paginationSize:d.default.number,onSizePerPageList:d.default.func,prePage:d.default.string,pageStartIndex:d.default.number,hideSizePerPage:d.default.bool,alwaysShowAllBtns:d.default.bool,withFirstAndLast:d.default.bool,sizePerPageDropDown:d.default.func,paginationPanel:d.default.func,prePageTitle:d.default.string,nextPageTitle:d.default.string,firstPageTitle:d.default.string,lastPageTitle:d.default.string,hidePageListOnlyOnePage:d.default.bool,keepSizePerPageState:d.default.bool},w.defaultProps={sizePerPage:E.default.SIZE_PER_PAGE,pageStartIndex:E.default.PAGE_START_INDEX},t.default=w},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0}),t.TableDataStore=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},l=function(){function e(e,t){for(var n=0;n1){for(var o=this.sortList.length-1,r=!1;o>=0;o--)if(this.sortList[o].sortField===t){r=!0;break}r&&(o>0?this.sortList=this.sortList.slice(0,o):this.sortList=this.sortList.slice(1)),this.sortList.unshift(n),this.sortList=this.sortList.slice(0,this.multiColumnSort)}else this.sortList=[n]}}},{key:"cleanSortInfo",value:function(){this.sortList=[]}},{key:"setSelectedRowKey",value:function(e){this.selected=e}},{key:"getRowByKey",value:function(e){var t=this,n=[];if(!e||0===e.length)return n;for(var o=function(o){var r=t.data[o];e.indexOf(r[t.keyField])>-1&&(e=e.filter(function(e){return e!==r[t.keyField]}),n.push(r))},r=0;r0&&this.sort()}},{key:"ignoreNonSelected",value:function(){var e=this;this.showOnlySelected=!this.showOnlySelected,this.showOnlySelected?(this.isOnFilter=!0,this.filteredData=this.data.filter(function(t){var n=e.selected.find(function(n){return t[e.keyField]===n});return"undefined"!=typeof n})):this.isOnFilter=!1}},{key:"sort",value:function(){var e=this.getCurrentDisplayData();return e=this._sort(e),this}},{key:"page",value:function(e,t){return this.pageObj.end=e*t-1,this.pageObj.start=this.pageObj.end-(t-1),this}},{key:"edit",value:function(e,t,n){var o=this.getCurrentDisplayData(),r=void 0;return this.enablePagination?(o[this.pageObj.start+t][n]=e,r=o[this.pageObj.start+t][this.keyField]):(o[t][n]=e,r=o[t][this.keyField]),this.isOnFilter&&(this.data.forEach(function(t){t[this.keyField]===r&&(t[n]=e)},this),null!==this.filterObj&&this.filter(this.filterObj),null!==this.searchText&&this.search(this.searchText)),this}},{key:"addAtBegin",value:function(e){if(!e[this.keyField]||""===e[this.keyField].toString())throw new Error(this.keyField+" can't be empty value.");var t=this.getCurrentDisplayData();t.forEach(function(t){if(t[this.keyField].toString()===e[this.keyField].toString())throw new Error(this.keyField+" "+e[this.keyField]+" already exists")},this),t.unshift(e),this.isOnFilter&&this.data.unshift(e),this._refresh(!1)}},{key:"add",value:function(e){var t=this.isValidKey(e[this.keyField]);if(t)throw new Error(t);var n=this.getCurrentDisplayData();n.push(e),this.isOnFilter&&this.data.push(e),this._refresh(!1)}},{key:"remove",value:function(e){var t=this,n=this.getCurrentDisplayData(),o=n.filter(function(n){return e.indexOf(n[t.keyField])===-1});this.isOnFilter?(this.data=this.data.filter(function(n){return e.indexOf(n[t.keyField])===-1}),this.filteredData=o):this.data=o}},{key:"filter",value:function(e){if(0===Object.keys(e).length)this.filteredData=null,this.isOnFilter=!1,this.filterObj=null,this.searchText&&this._search(this.data);else{var t=this.data;this.filterObj=e,this.searchText&&(this._search(t),t=this.filteredData),this._filter(t)}}},{key:"filterNumber",value:function(e,t,n){var o=!0;switch(n){case"=":e!=t&&(o=!1);break;case">":e<=t&&(o=!1);break;case">=":e=t&&(o=!1);break;case"<=":e>t&&(o=!1);break;case"!=":e==t&&(o=!1);break;default:console.error("Number comparator provided is not supported")}return o}},{key:"filterDate",value:function e(t,n,o){if(!t)return!1;var e=n.getDate(),r=n.getMonth(),l=n.getFullYear();"object"!==("undefined"==typeof t?"undefined":a(t))&&(t=new Date(t));var i=t.getDate(),s=t.getMonth(),u=t.getFullYear(),f=!0;switch(o){case"=":e===i&&r===s&&l===u||(f=!1);break;case">":t<=n&&(f=!1);break;case">=":u=n&&(f=!1);break;case"<=":u>l?f=!1:u===l&&s>r?f=!1:u===l&&s===r&&i>e&&(f=!1);break;case"!=":e===i&&r===s&&l===u&&(f=!1);break;default:console.error("Date comparator provided is not supported")}return f}},{key:"filterRegex",value:function(e,t){try{return new RegExp(t,"i").test(e)}catch(e){return!0}}},{key:"filterCustom",value:function(e,t,n,o){return null!==n&&"object"===("undefined"==typeof n?"undefined":a(n))?n.callback(e,n.callbackParameters):this.filterText(e,t,o)}},{key:"filterText",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:s.default.FILTER_COND_LIKE;return e=e.toString(),t=t.toString(),n===s.default.FILTER_COND_EQ?e===t:(e=e.toLowerCase(),t=t.toLowerCase(),!(e.indexOf(t)===-1))}},{key:"filterArray",value:function(e,t){return t.indexOf(e)>-1}},{key:"search",value:function(e){if(""===e.trim())this.filteredData=null,this.isOnFilter=!1,this.searchText=null,this.filterObj&&this._filter(this.data);else{var t=this.data;this.searchText=e,this.filterObj&&(this._filter(t),t=this.filteredData),this._search(t)}}},{key:"_filter",value:function(e){var t=this,n=this.filterObj;this.filteredData=e.filter(function(e,o){var r=!0,l=void 0;for(var i in n){var u=e[i];switch(null!==u&&void 0!==u||(u=""),n[i].type){case s.default.FILTER_TYPE.NUMBER:l=n[i].value.number;break;case s.default.FILTER_TYPE.CUSTOM:l="object"===a(n[i].value)?void 0:"string"==typeof n[i].value?n[i].value.toLowerCase():n[i].value;break;case s.default.FILTER_TYPE.DATE:l=n[i].value.date;break;case s.default.FILTER_TYPE.REGEX:l=n[i].value;break;case s.default.FILTER_TYPE.ARRAY:if(l=n[i].value,!Array.isArray(l))throw new Error("Value must be an Array");break;default:l=n[i].value,void 0===l&&(l=n[i])}var f=void 0,c=void 0,d=void 0,p=void 0;switch(t.colInfos[i]&&(f=t.colInfos[i].format,c=t.colInfos[i].filterFormatted,d=t.colInfos[i].formatExtraData,p=t.colInfos[i].filterValue,c&&f?u=f(e[i],e,d,o):p&&(u=p(e[i],e))),n[i].type){case s.default.FILTER_TYPE.NUMBER:r=t.filterNumber(u,l,n[i].value.comparator);break;case s.default.FILTER_TYPE.DATE:r=t.filterDate(u,l,n[i].value.comparator);break;case s.default.FILTER_TYPE.REGEX:r=t.filterRegex(u,l);break;case s.default.FILTER_TYPE.CUSTOM:var h=n[i].props?n[i].props.cond:s.default.FILTER_COND_LIKE;r=t.filterCustom(u,l,n[i].value,h);break;case s.default.FILTER_TYPE.ARRAY:r=t.filterArray(u,l);break;default:n[i].type===s.default.FILTER_TYPE.SELECT&&c&&c&&f&&(l=f(l,e,d,o));var y=n[i].props?n[i].props.cond:s.default.FILTER_COND_LIKE;r=t.filterText(u,l,y)}if(!r)break}return r}),this.isOnFilter=!0}},{key:"_search",value:function(e){var t=this,n=void 0;n=this.multiColumnSearch||!this.strictSearch?this.searchText.trim().toLowerCase().split(/\s+/):[this.searchText.toLowerCase()];var o=n.length,r=o>1,a=r&&!this.strictSearch&&this.multiColumnSearch,l=r&&!this.strictSearch&&!this.multiColumnSearch;this.filteredData=e.filter(function(e,i){for(var s=Object.keys(e),u=r?n.slice():n,f=0,c=s.length;fu.length&&(u=n.slice());for(var g=u.length-1;g>-1;g--)if(v.indexOf(u[g])!==-1){if(a||1===u.length)return!0;u.splice(g,1)}else if(!t.multiColumnSearch)break}}}return!1}),this.isOnFilter=!0}},{key:"_sort",value:function(e){var t=this;return 0===this.sortList.length||"undefined"==typeof this.sortList[0]?e:(e.sort(function(e,n){for(var o=0,r=0;rd?-1:cd?1:0}if(0!==o)return o}return o}),e)}},{key:"getDataIgnoringPagination",value:function(){return this.getCurrentDisplayData()}},{key:"get",value:function(){var e=this.getCurrentDisplayData();if(0===e.length)return e;var t="function"==typeof this.remote?this.remote(s.default.REMOTE)[s.default.REMOTE_PAGE]:this.remote;if(t||!this.enablePagination)return e;for(var n=[],o=this.pageObj.start;o<=this.pageObj.end&&(n.push(e[o]),o+1!==e.length);o++);return n}},{key:"getKeyField",value:function(){return this.keyField}},{key:"getDataNum",value:function(){return this.getCurrentDisplayData().length}},{key:"isChangedPage",value:function(){return!(!this.pageObj.start||!this.pageObj.end)}},{key:"isEmpty",value:function(){return 0===this.data.length||null===this.data||void 0===this.data}},{key:"getAllRowkey",value:function(){var e=this;return this.data.map(function(t){return t[e.keyField]})}}]),e}();t.TableDataStore=u},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t){var n={};for(var o in e)t.indexOf(o)>=0||Object.prototype.hasOwnProperty.call(e,o)&&(n[o]=e[o]);return n}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function l(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);