From cfaef2fd7a2059bda7e059a4cb0b8088bfefdf7b Mon Sep 17 00:00:00 2001 From: koalyptus Date: Tue, 23 Aug 2016 05:22:45 +0000 Subject: [PATCH] publish Docs to gh-pages (auto) branch: master SHA: c5c17c1659e4f1cabcb8217b7c8658d4fc5bcbee range SHA: 48ce8bf3db79...c5c17c1659e4 build id: 154354896 build number: 406 --- docs/ast/source/modules/hash.js.json | 3024 +++++++++-------- docs/class/src/emitter.js~Emitter.html | 2 +- ...pterEzEditTable.js~AdapterEzEditTable.html | 2 +- .../extensions/colOps/colOps.js~ColOps.html | 2 +- .../colsVisibility.js~ColsVisibility.html | 2 +- ...iltersVisibility.js~FiltersVisibility.html | 2 +- ...Sortabletable.js~AdapterSortableTable.html | 2 +- docs/class/src/feature.js~Feature.html | 2 +- .../alternateRows.js~AlternateRows.html | 2 +- .../src/modules/checkList.js~CheckList.html | 2 +- .../modules/clearButton.js~ClearButton.html | 2 +- .../src/modules/dropdown.js~Dropdown.html | 2 +- .../src/modules/gridLayout.js~GridLayout.html | 2 +- docs/class/src/modules/hash.js~Hash.html | 22 +- docs/class/src/modules/help.js~Help.html | 2 +- ...highlightKeywords.js~HighlightKeyword.html | 2 +- docs/class/src/modules/loader.js~Loader.html | 2 +- .../src/modules/noResults.js~NoResults.html | 2 +- docs/class/src/modules/paging.js~Paging.html | 2 +- .../modules/popupFilter.js~PopupFilter.html | 2 +- .../modules/rowsCounter.js~RowsCounter.html | 2 +- docs/class/src/modules/state.js~State.html | 2 +- .../src/modules/statusBar.js~StatusBar.html | 2 +- .../class/src/modules/storage.js~Storage.html | 2 +- .../class/src/tablefilter.js~TableFilter.html | 2 +- docs/dump.json | 1491 ++++---- docs/file/src/array.js.html | 2 +- docs/file/src/const.js.html | 2 +- docs/file/src/cookie.js.html | 2 +- docs/file/src/date.js.html | 2 +- docs/file/src/dom.js.html | 2 +- docs/file/src/emitter.js.html | 2 +- docs/file/src/event.js.html | 2 +- .../advancedGrid/adapterEzEditTable.js.html | 2 +- .../advancedGrid/advancedGrid.js.html | 2 +- .../file/src/extensions/colOps/colOps.js.html | 2 +- .../colsVisibility/colsVisibility.js.html | 2 +- .../filtersVisibility.js.html | 2 +- .../sort/adapterSortabletable.js.html | 2 +- docs/file/src/extensions/sort/sort.js.html | 2 +- docs/file/src/feature.js.html | 2 +- docs/file/src/helpers.js.html | 2 +- docs/file/src/modules/alternateRows.js.html | 2 +- docs/file/src/modules/checkList.js.html | 2 +- docs/file/src/modules/clearButton.js.html | 2 +- docs/file/src/modules/dropdown.js.html | 2 +- docs/file/src/modules/gridLayout.js.html | 2 +- docs/file/src/modules/hash.js.html | 5 +- docs/file/src/modules/help.js.html | 2 +- .../src/modules/highlightKeywords.js.html | 2 +- docs/file/src/modules/loader.js.html | 2 +- docs/file/src/modules/noResults.js.html | 2 +- docs/file/src/modules/paging.js.html | 2 +- docs/file/src/modules/popupFilter.js.html | 2 +- docs/file/src/modules/rowsCounter.js.html | 2 +- docs/file/src/modules/state.js.html | 2 +- docs/file/src/modules/statusBar.js.html | 2 +- docs/file/src/modules/storage.js.html | 2 +- docs/file/src/root.js.html | 2 +- docs/file/src/sort.js.html | 2 +- docs/file/src/string.js.html | 2 +- docs/file/src/tablefilter.js.html | 2 +- docs/file/src/types.js.html | 2 +- docs/identifiers.html | 2 +- docs/index.html | 2 +- docs/package.json | 2 +- docs/source.html | 80 +- docs/variable/index.html | 6 +- 68 files changed, 2460 insertions(+), 2292 deletions(-) diff --git a/docs/ast/source/modules/hash.js.json b/docs/ast/source/modules/hash.js.json index 017f3029..332d15f5 100644 --- a/docs/ast/source/modules/hash.js.json +++ b/docs/ast/source/modules/hash.js.json @@ -561,22 +561,131 @@ "line": 6, "column": 51 } + } + }, + { + "type": "VariableDeclaration", + "declarations": [ + { + "type": "VariableDeclarator", + "id": { + "type": "Identifier", + "name": "encodeURIComponent", + "range": [ + 189, + 207 + ], + "loc": { + "start": { + "line": 7, + "column": 6 + }, + "end": { + "line": 7, + "column": 24 + } + } + }, + "init": { + "type": "MemberExpression", + "computed": false, + "object": { + "type": "Identifier", + "name": "root", + "range": [ + 210, + 214 + ], + "loc": { + "start": { + "line": 7, + "column": 27 + }, + "end": { + "line": 7, + "column": 31 + } + } + }, + "property": { + "type": "Identifier", + "name": "encodeURIComponent", + "range": [ + 215, + 233 + ], + "loc": { + "start": { + "line": 7, + "column": 32 + }, + "end": { + "line": 7, + "column": 50 + } + } + }, + "range": [ + 210, + 233 + ], + "loc": { + "start": { + "line": 7, + "column": 27 + }, + "end": { + "line": 7, + "column": 50 + } + } + }, + "range": [ + 189, + 233 + ], + "loc": { + "start": { + "line": 7, + "column": 6 + }, + "end": { + "line": 7, + "column": 50 + } + } + } + ], + "kind": "const", + "range": [ + 183, + 234 + ], + "loc": { + "start": { + "line": 7, + "column": 0 + }, + "end": { + "line": 7, + "column": 51 + } }, "trailingComments": [ { "type": "Block", "value": "*\n * Checks if browser has onhashchange event\n ", "range": [ - 184, - 235 + 236, + 287 ], "loc": { "start": { - "line": 8, + "line": 9, "column": 0 }, "end": { - "line": 10, + "line": 11, "column": 3 } } @@ -594,16 +703,16 @@ "type": "Identifier", "name": "hasHashChange", "range": [ - 249, - 262 + 301, + 314 ], "loc": { "start": { - "line": 11, + "line": 12, "column": 13 }, "end": { - "line": 11, + "line": 12, "column": 26 } } @@ -624,16 +733,16 @@ "type": "Identifier", "name": "docMode", "range": [ - 281, - 288 + 333, + 340 ], "loc": { "start": { - "line": 12, + "line": 13, "column": 8 }, "end": { - "line": 12, + "line": 13, "column": 15 } } @@ -645,16 +754,16 @@ "type": "Identifier", "name": "root", "range": [ - 291, - 295 + 343, + 347 ], "loc": { "start": { - "line": 12, + "line": 13, "column": 18 }, "end": { - "line": 12, + "line": 13, "column": 22 } } @@ -663,46 +772,46 @@ "type": "Identifier", "name": "documentMode", "range": [ - 296, - 308 + 348, + 360 ], "loc": { "start": { - "line": 12, + "line": 13, "column": 23 }, "end": { - "line": 12, + "line": 13, "column": 35 } } }, "range": [ - 291, - 308 + 343, + 360 ], "loc": { "start": { - "line": 12, + "line": 13, "column": 18 }, "end": { - "line": 12, + "line": 13, "column": 35 } } }, "range": [ - 281, - 308 + 333, + 360 ], "loc": { "start": { - "line": 12, + "line": 13, "column": 8 }, "end": { - "line": 12, + "line": 13, "column": 35 } } @@ -710,16 +819,16 @@ ], "kind": "let", "range": [ - 277, - 309 + 329, + 361 ], "loc": { "start": { - "line": 12, + "line": 13, "column": 4 }, "end": { - "line": 12, + "line": 13, "column": 36 } } @@ -737,16 +846,16 @@ "value": "onhashchange", "raw": "'onhashchange'", "range": [ - 322, - 336 + 374, + 388 ], "loc": { "start": { - "line": 13, + "line": 14, "column": 12 }, "end": { - "line": 13, + "line": 14, "column": 26 } } @@ -755,31 +864,31 @@ "type": "Identifier", "name": "root", "range": [ - 340, - 344 + 392, + 396 ], "loc": { "start": { - "line": 13, + "line": 14, "column": 30 }, "end": { - "line": 13, + "line": 14, "column": 34 } } }, "range": [ - 322, - 344 + 374, + 396 ], "loc": { "start": { - "line": 13, + "line": 14, "column": 12 }, "end": { - "line": 13, + "line": 14, "column": 34 } } @@ -794,16 +903,16 @@ "type": "Identifier", "name": "docMode", "range": [ - 350, - 357 + 402, + 409 ], "loc": { "start": { - "line": 13, + "line": 14, "column": 40 }, "end": { - "line": 13, + "line": 14, "column": 47 } } @@ -812,31 +921,31 @@ "type": "Identifier", "name": "undefined", "range": [ - 362, - 371 + 414, + 423 ], "loc": { "start": { - "line": 13, + "line": 14, "column": 52 }, "end": { - "line": 13, + "line": 14, "column": 61 } } }, "range": [ - 350, - 371 + 402, + 423 ], "loc": { "start": { - "line": 13, + "line": 14, "column": 40 }, "end": { - "line": 13, + "line": 14, "column": 61 } } @@ -848,16 +957,16 @@ "type": "Identifier", "name": "docMode", "range": [ - 375, - 382 + 427, + 434 ], "loc": { "start": { - "line": 13, + "line": 14, "column": 65 }, "end": { - "line": 13, + "line": 14, "column": 72 } } @@ -867,92 +976,92 @@ "value": 7, "raw": "7", "range": [ - 385, - 386 + 437, + 438 ], "loc": { "start": { - "line": 13, + "line": 14, "column": 75 }, "end": { - "line": 13, + "line": 14, "column": 76 } } }, "range": [ - 375, - 386 + 427, + 438 ], "loc": { "start": { - "line": 13, + "line": 14, "column": 65 }, "end": { - "line": 13, + "line": 14, "column": 76 } } }, "range": [ - 350, - 386 + 402, + 438 ], "loc": { "start": { - "line": 13, + "line": 14, "column": 40 }, "end": { - "line": 13, + "line": 14, "column": 76 } } }, "range": [ - 321, - 387 + 373, + 439 ], "loc": { "start": { - "line": 13, + "line": 14, "column": 11 }, "end": { - "line": 13, + "line": 14, "column": 77 } } }, "range": [ - 314, - 388 + 366, + 440 ], "loc": { "start": { - "line": 13, + "line": 14, "column": 4 }, "end": { - "line": 13, + "line": 14, "column": 78 } } } ], "range": [ - 271, - 390 + 323, + 442 ], "loc": { "start": { - "line": 11, + "line": 12, "column": 35 }, "end": { - "line": 14, + "line": 15, "column": 1 } } @@ -960,31 +1069,31 @@ "generator": false, "expression": false, "range": [ - 265, - 390 + 317, + 442 ], "loc": { "start": { - "line": 11, + "line": 12, "column": 29 }, "end": { - "line": 14, + "line": 15, "column": 1 } } }, "range": [ - 249, - 390 + 301, + 442 ], "loc": { "start": { - "line": 11, + "line": 12, "column": 13 }, "end": { - "line": 14, + "line": 15, "column": 1 } } @@ -992,16 +1101,16 @@ ], "kind": "const", "range": [ - 243, - 391 + 295, + 443 ], "loc": { "start": { - "line": 11, + "line": 12, "column": 7 }, "end": { - "line": 14, + "line": 15, "column": 2 } }, @@ -1010,16 +1119,16 @@ "type": "Block", "value": "*\n * Checks if browser has onhashchange event\n ", "range": [ - 184, - 235 + 236, + 287 ], "loc": { "start": { - "line": 8, + "line": 9, "column": 0 }, "end": { - "line": 10, + "line": 11, "column": 3 } } @@ -1030,16 +1139,16 @@ "type": "Block", "value": "*\n * Manages state via URL hash changes\n *\n * @export\n * @class Hash\n ", "range": [ - 393, - 467 + 445, + 519 ], "loc": { "start": { - "line": 16, + "line": 17, "column": 0 }, "end": { - "line": 21, + "line": 22, "column": 3 } } @@ -1049,16 +1158,16 @@ "specifiers": [], "source": null, "range": [ - 236, - 391 + 288, + 443 ], "loc": { "start": { - "line": 11, + "line": 12, "column": 0 }, "end": { - "line": 14, + "line": 15, "column": 2 } }, @@ -1067,16 +1176,16 @@ "type": "Block", "value": "*\n * Checks if browser has onhashchange event\n ", "range": [ - 184, - 235 + 236, + 287 ], "loc": { "start": { - "line": 8, + "line": 9, "column": 0 }, "end": { - "line": 10, + "line": 11, "column": 3 } } @@ -1087,16 +1196,16 @@ "type": "Block", "value": "*\n * Manages state via URL hash changes\n *\n * @export\n * @class Hash\n ", "range": [ - 393, - 467 + 445, + 519 ], "loc": { "start": { - "line": 16, + "line": 17, "column": 0 }, "end": { - "line": 21, + "line": 22, "column": 3 } } @@ -1111,16 +1220,16 @@ "type": "Identifier", "name": "Hash", "range": [ - 481, - 485 + 533, + 537 ], "loc": { "start": { - "line": 22, + "line": 23, "column": 13 }, "end": { - "line": 22, + "line": 23, "column": 17 } } @@ -1135,16 +1244,16 @@ "type": "Identifier", "name": "constructor", "range": [ - 597, - 608 + 649, + 660 ], "loc": { "start": { - "line": 29, + "line": 30, "column": 4 }, "end": { - "line": 29, + "line": 30, "column": 15 } } @@ -1157,16 +1266,16 @@ "type": "Identifier", "name": "state", "range": [ - 609, - 614 + 661, + 666 ], "loc": { "start": { - "line": 29, + "line": 30, "column": 16 }, "end": { - "line": 29, + "line": 30, "column": 21 } } @@ -1186,16 +1295,16 @@ "object": { "type": "ThisExpression", "range": [ - 699, - 703 + 751, + 755 ], "loc": { "start": { - "line": 34, + "line": 35, "column": 8 }, "end": { - "line": 34, + "line": 35, "column": 12 } } @@ -1204,31 +1313,31 @@ "type": "Identifier", "name": "state", "range": [ - 704, - 709 + 756, + 761 ], "loc": { "start": { - "line": 34, + "line": 35, "column": 13 }, "end": { - "line": 34, + "line": 35, "column": 18 } } }, "range": [ - 699, - 709 + 751, + 761 ], "loc": { "start": { - "line": 34, + "line": 35, "column": 8 }, "end": { - "line": 34, + "line": 35, "column": 18 } } @@ -1237,46 +1346,46 @@ "type": "Identifier", "name": "state", "range": [ - 712, - 717 + 764, + 769 ], "loc": { "start": { - "line": 34, + "line": 35, "column": 21 }, "end": { - "line": 34, + "line": 35, "column": 26 } } }, "range": [ - 699, - 717 + 751, + 769 ], "loc": { "start": { - "line": 34, + "line": 35, "column": 8 }, "end": { - "line": 34, + "line": 35, "column": 26 } } }, "range": [ - 699, - 718 + 751, + 770 ], "loc": { "start": { - "line": 34, + "line": 35, "column": 8 }, "end": { - "line": 34, + "line": 35, "column": 27 } }, @@ -1285,16 +1394,16 @@ "type": "Block", "value": "*\n * State object\n * @type {State}\n ", "range": [ - 626, - 690 + 678, + 742 ], "loc": { "start": { - "line": 30, + "line": 31, "column": 8 }, "end": { - "line": 33, + "line": 34, "column": 11 } } @@ -1305,16 +1414,16 @@ "type": "Block", "value": "*\n * Cached URL hash\n * @type {String} Hash string\n * @private\n ", "range": [ - 728, - 828 + 780, + 880 ], "loc": { "start": { - "line": 36, + "line": 37, "column": 8 }, "end": { - "line": 40, + "line": 41, "column": 11 } } @@ -1332,16 +1441,16 @@ "object": { "type": "ThisExpression", "range": [ - 837, - 841 + 889, + 893 ], "loc": { "start": { - "line": 41, + "line": 42, "column": 8 }, "end": { - "line": 41, + "line": 42, "column": 12 } } @@ -1350,31 +1459,31 @@ "type": "Identifier", "name": "lastHash", "range": [ - 842, - 850 + 894, + 902 ], "loc": { "start": { - "line": 41, + "line": 42, "column": 13 }, "end": { - "line": 41, + "line": 42, "column": 21 } } }, "range": [ - 837, - 850 + 889, + 902 ], "loc": { "start": { - "line": 41, + "line": 42, "column": 8 }, "end": { - "line": 41, + "line": 42, "column": 21 } } @@ -1384,46 +1493,46 @@ "value": null, "raw": "null", "range": [ - 853, - 857 + 905, + 909 ], "loc": { "start": { - "line": 41, + "line": 42, "column": 24 }, "end": { - "line": 41, + "line": 42, "column": 28 } } }, "range": [ - 837, - 857 + 889, + 909 ], "loc": { "start": { - "line": 41, + "line": 42, "column": 8 }, "end": { - "line": 41, + "line": 42, "column": 28 } } }, "range": [ - 837, - 858 + 889, + 910 ], "loc": { "start": { - "line": 41, + "line": 42, "column": 8 }, "end": { - "line": 41, + "line": 42, "column": 29 } }, @@ -1432,16 +1541,16 @@ "type": "Block", "value": "*\n * Cached URL hash\n * @type {String} Hash string\n * @private\n ", "range": [ - 728, - 828 + 780, + 880 ], "loc": { "start": { - "line": 36, + "line": 37, "column": 8 }, "end": { - "line": 40, + "line": 41, "column": 11 } } @@ -1452,16 +1561,16 @@ "type": "Block", "value": "*\n * Application event emitter instance\n * @type {Emitter}\n ", "range": [ - 868, - 956 + 920, + 1008 ], "loc": { "start": { - "line": 43, + "line": 44, "column": 8 }, "end": { - "line": 46, + "line": 47, "column": 11 } } @@ -1479,16 +1588,16 @@ "object": { "type": "ThisExpression", "range": [ - 965, - 969 + 1017, + 1021 ], "loc": { "start": { - "line": 47, + "line": 48, "column": 8 }, "end": { - "line": 47, + "line": 48, "column": 12 } } @@ -1497,31 +1606,31 @@ "type": "Identifier", "name": "emitter", "range": [ - 970, - 977 + 1022, + 1029 ], "loc": { "start": { - "line": 47, + "line": 48, "column": 13 }, "end": { - "line": 47, + "line": 48, "column": 20 } } }, "range": [ - 965, - 977 + 1017, + 1029 ], "loc": { "start": { - "line": 47, + "line": 48, "column": 8 }, "end": { - "line": 47, + "line": 48, "column": 20 } } @@ -1533,16 +1642,16 @@ "type": "Identifier", "name": "state", "range": [ - 980, - 985 + 1032, + 1037 ], "loc": { "start": { - "line": 47, + "line": 48, "column": 23 }, "end": { - "line": 47, + "line": 48, "column": 28 } } @@ -1551,61 +1660,61 @@ "type": "Identifier", "name": "emitter", "range": [ - 986, - 993 + 1038, + 1045 ], "loc": { "start": { - "line": 47, + "line": 48, "column": 29 }, "end": { - "line": 47, + "line": 48, "column": 36 } } }, "range": [ - 980, - 993 + 1032, + 1045 ], "loc": { "start": { - "line": 47, + "line": 48, "column": 23 }, "end": { - "line": 47, + "line": 48, "column": 36 } } }, "range": [ - 965, - 993 + 1017, + 1045 ], "loc": { "start": { - "line": 47, + "line": 48, "column": 8 }, "end": { - "line": 47, + "line": 48, "column": 36 } } }, "range": [ - 965, - 994 + 1017, + 1046 ], "loc": { "start": { - "line": 47, + "line": 48, "column": 8 }, "end": { - "line": 47, + "line": 48, "column": 37 } }, @@ -1614,16 +1723,16 @@ "type": "Block", "value": "*\n * Application event emitter instance\n * @type {Emitter}\n ", "range": [ - 868, - 956 + 920, + 1008 ], "loc": { "start": { - "line": 43, + "line": 44, "column": 8 }, "end": { - "line": 46, + "line": 47, "column": 11 } } @@ -1634,16 +1743,16 @@ "type": "Block", "value": "*\n * Bound sync wrapper for future use\n * @private\n ", "range": [ - 1004, - 1084 + 1056, + 1136 ], "loc": { "start": { - "line": 49, + "line": 50, "column": 8 }, "end": { - "line": 52, + "line": 53, "column": 11 } } @@ -1661,16 +1770,16 @@ "object": { "type": "ThisExpression", "range": [ - 1093, - 1097 + 1145, + 1149 ], "loc": { "start": { - "line": 53, + "line": 54, "column": 8 }, "end": { - "line": 53, + "line": 54, "column": 12 } } @@ -1679,31 +1788,31 @@ "type": "Identifier", "name": "boundSync", "range": [ - 1098, - 1107 + 1150, + 1159 ], "loc": { "start": { - "line": 53, + "line": 54, "column": 13 }, "end": { - "line": 53, + "line": 54, "column": 22 } } }, "range": [ - 1093, - 1107 + 1145, + 1159 ], "loc": { "start": { - "line": 53, + "line": 54, "column": 8 }, "end": { - "line": 53, + "line": 54, "column": 22 } } @@ -1713,46 +1822,46 @@ "value": null, "raw": "null", "range": [ - 1110, - 1114 + 1162, + 1166 ], "loc": { "start": { - "line": 53, + "line": 54, "column": 25 }, "end": { - "line": 53, + "line": 54, "column": 29 } } }, "range": [ - 1093, - 1114 + 1145, + 1166 ], "loc": { "start": { - "line": 53, + "line": 54, "column": 8 }, "end": { - "line": 53, + "line": 54, "column": 29 } } }, "range": [ - 1093, - 1115 + 1145, + 1167 ], "loc": { "start": { - "line": 53, + "line": 54, "column": 8 }, "end": { - "line": 53, + "line": 54, "column": 30 } }, @@ -1761,16 +1870,16 @@ "type": "Block", "value": "*\n * Bound sync wrapper for future use\n * @private\n ", "range": [ - 1004, - 1084 + 1056, + 1136 ], "loc": { "start": { - "line": 49, + "line": 50, "column": 8 }, "end": { - "line": 52, + "line": 53, "column": 11 } } @@ -1779,16 +1888,16 @@ } ], "range": [ - 616, - 1121 + 668, + 1173 ], "loc": { "start": { - "line": 29, + "line": 30, "column": 23 }, "end": { - "line": 54, + "line": 55, "column": 5 } } @@ -1796,16 +1905,16 @@ "generator": false, "expression": false, "range": [ - 608, - 1121 + 660, + 1173 ], "loc": { "start": { - "line": 29, + "line": 30, "column": 15 }, "end": { - "line": 54, + "line": 55, "column": 5 } } @@ -1813,16 +1922,16 @@ "kind": "constructor", "computed": false, "range": [ - 597, - 1121 + 649, + 1173 ], "loc": { "start": { - "line": 29, + "line": 30, "column": 4 }, "end": { - "line": 54, + "line": 55, "column": 5 } }, @@ -1831,16 +1940,16 @@ "type": "Block", "value": "*\n * Creates an instance of Hash\n *\n * @param {State} state Instance of State\n ", "range": [ - 493, - 592 + 545, + 644 ], "loc": { "start": { - "line": 24, + "line": 25, "column": 4 }, "end": { - "line": 28, + "line": 29, "column": 7 } } @@ -1851,16 +1960,16 @@ "type": "Block", "value": "*\n * Initializes the Hash object\n ", "range": [ - 1127, - 1173 + 1179, + 1225 ], "loc": { "start": { - "line": 56, + "line": 57, "column": 4 }, "end": { - "line": 58, + "line": 59, "column": 7 } } @@ -1874,16 +1983,16 @@ "type": "Identifier", "name": "init", "range": [ - 1178, - 1182 + 1230, + 1234 ], "loc": { "start": { - "line": 59, + "line": 60, "column": 4 }, "end": { - "line": 59, + "line": 60, "column": 8 } } @@ -1906,48 +2015,48 @@ "type": "Identifier", "name": "hasHashChange", "range": [ - 1200, - 1213 + 1252, + 1265 ], "loc": { "start": { - "line": 60, + "line": 61, "column": 13 }, "end": { - "line": 60, + "line": 61, "column": 26 } } }, "arguments": [], "range": [ - 1200, - 1215 + 1252, + 1267 ], "loc": { "start": { - "line": 60, + "line": 61, "column": 13 }, "end": { - "line": 60, + "line": 61, "column": 28 } } }, "prefix": true, "range": [ - 1199, - 1215 + 1251, + 1267 ], "loc": { "start": { - "line": 60, + "line": 61, "column": 12 }, "end": { - "line": 60, + "line": 61, "column": 28 } } @@ -1959,48 +2068,48 @@ "type": "ReturnStatement", "argument": null, "range": [ - 1231, - 1238 + 1283, + 1290 ], "loc": { "start": { - "line": 61, + "line": 62, "column": 12 }, "end": { - "line": 61, + "line": 62, "column": 19 } } } ], "range": [ - 1217, - 1248 + 1269, + 1300 ], "loc": { "start": { - "line": 60, + "line": 61, "column": 30 }, "end": { - "line": 62, + "line": 63, "column": 9 } } }, "alternate": null, "range": [ - 1195, - 1248 + 1247, + 1300 ], "loc": { "start": { - "line": 60, + "line": 61, "column": 8 }, "end": { - "line": 62, + "line": 63, "column": 9 } } @@ -2016,16 +2125,16 @@ "object": { "type": "ThisExpression", "range": [ - 1258, - 1262 + 1310, + 1314 ], "loc": { "start": { - "line": 64, + "line": 65, "column": 8 }, "end": { - "line": 64, + "line": 65, "column": 12 } } @@ -2034,31 +2143,31 @@ "type": "Identifier", "name": "lastHash", "range": [ - 1263, - 1271 + 1315, + 1323 ], "loc": { "start": { - "line": 64, + "line": 65, "column": 13 }, "end": { - "line": 64, + "line": 65, "column": 21 } } }, "range": [ - 1258, - 1271 + 1310, + 1323 ], "loc": { "start": { - "line": 64, + "line": 65, "column": 8 }, "end": { - "line": 64, + "line": 65, "column": 21 } } @@ -2070,16 +2179,16 @@ "type": "Identifier", "name": "location", "range": [ - 1274, - 1282 + 1326, + 1334 ], "loc": { "start": { - "line": 64, + "line": 65, "column": 24 }, "end": { - "line": 64, + "line": 65, "column": 32 } } @@ -2088,61 +2197,61 @@ "type": "Identifier", "name": "hash", "range": [ - 1283, - 1287 + 1335, + 1339 ], "loc": { "start": { - "line": 64, + "line": 65, "column": 33 }, "end": { - "line": 64, + "line": 65, "column": 37 } } }, "range": [ - 1274, - 1287 + 1326, + 1339 ], "loc": { "start": { - "line": 64, + "line": 65, "column": 24 }, "end": { - "line": 64, + "line": 65, "column": 37 } } }, "range": [ - 1258, - 1287 + 1310, + 1339 ], "loc": { "start": { - "line": 64, + "line": 65, "column": 8 }, "end": { - "line": 64, + "line": 65, "column": 37 } } }, "range": [ - 1258, - 1288 + 1310, + 1340 ], "loc": { "start": { - "line": 64, + "line": 65, "column": 8 }, "end": { - "line": 64, + "line": 65, "column": 38 } }, @@ -2151,16 +2260,16 @@ "type": "Line", "value": "Store a bound sync wrapper", "range": [ - 1297, - 1325 + 1349, + 1377 ], "loc": { "start": { - "line": 65, + "line": 66, "column": 8 }, "end": { - "line": 65, + "line": 66, "column": 36 } } @@ -2178,16 +2287,16 @@ "object": { "type": "ThisExpression", "range": [ - 1334, - 1338 + 1386, + 1390 ], "loc": { "start": { - "line": 66, + "line": 67, "column": 8 }, "end": { - "line": 66, + "line": 67, "column": 12 } } @@ -2196,31 +2305,31 @@ "type": "Identifier", "name": "boundSync", "range": [ - 1339, - 1348 + 1391, + 1400 ], "loc": { "start": { - "line": 66, + "line": 67, "column": 13 }, "end": { - "line": 66, + "line": 67, "column": 22 } } }, "range": [ - 1334, - 1348 + 1386, + 1400 ], "loc": { "start": { - "line": 66, + "line": 67, "column": 8 }, "end": { - "line": 66, + "line": 67, "column": 22 } } @@ -2236,16 +2345,16 @@ "object": { "type": "ThisExpression", "range": [ - 1351, - 1355 + 1403, + 1407 ], "loc": { "start": { - "line": 66, + "line": 67, "column": 25 }, "end": { - "line": 66, + "line": 67, "column": 29 } } @@ -2254,31 +2363,31 @@ "type": "Identifier", "name": "sync", "range": [ - 1356, - 1360 + 1408, + 1412 ], "loc": { "start": { - "line": 66, + "line": 67, "column": 30 }, "end": { - "line": 66, + "line": 67, "column": 34 } } }, "range": [ - 1351, - 1360 + 1403, + 1412 ], "loc": { "start": { - "line": 66, + "line": 67, "column": 25 }, "end": { - "line": 66, + "line": 67, "column": 34 } } @@ -2287,31 +2396,31 @@ "type": "Identifier", "name": "bind", "range": [ - 1361, - 1365 + 1413, + 1417 ], "loc": { "start": { - "line": 66, + "line": 67, "column": 35 }, "end": { - "line": 66, + "line": 67, "column": 39 } } }, "range": [ - 1351, - 1365 + 1403, + 1417 ], "loc": { "start": { - "line": 66, + "line": 67, "column": 25 }, "end": { - "line": 66, + "line": 67, "column": 39 } } @@ -2320,62 +2429,62 @@ { "type": "ThisExpression", "range": [ - 1366, - 1370 + 1418, + 1422 ], "loc": { "start": { - "line": 66, + "line": 67, "column": 40 }, "end": { - "line": 66, + "line": 67, "column": 44 } } } ], "range": [ - 1351, - 1371 + 1403, + 1423 ], "loc": { "start": { - "line": 66, + "line": 67, "column": 25 }, "end": { - "line": 66, + "line": 67, "column": 45 } } }, "range": [ - 1334, - 1371 + 1386, + 1423 ], "loc": { "start": { - "line": 66, + "line": 67, "column": 8 }, "end": { - "line": 66, + "line": 67, "column": 45 } } }, "range": [ - 1334, - 1372 + 1386, + 1424 ], "loc": { "start": { - "line": 66, + "line": 67, "column": 8 }, "end": { - "line": 66, + "line": 67, "column": 46 } }, @@ -2384,16 +2493,16 @@ "type": "Line", "value": "Store a bound sync wrapper", "range": [ - 1297, - 1325 + 1349, + 1377 ], "loc": { "start": { - "line": 65, + "line": 66, "column": 8 }, "end": { - "line": 65, + "line": 66, "column": 36 } } @@ -2413,16 +2522,16 @@ "object": { "type": "ThisExpression", "range": [ - 1381, - 1385 + 1433, + 1437 ], "loc": { "start": { - "line": 67, + "line": 68, "column": 8 }, "end": { - "line": 67, + "line": 68, "column": 12 } } @@ -2431,31 +2540,31 @@ "type": "Identifier", "name": "emitter", "range": [ - 1386, - 1393 + 1438, + 1445 ], "loc": { "start": { - "line": 67, + "line": 68, "column": 13 }, "end": { - "line": 67, + "line": 68, "column": 20 } } }, "range": [ - 1381, - 1393 + 1433, + 1445 ], "loc": { "start": { - "line": 67, + "line": 68, "column": 8 }, "end": { - "line": 67, + "line": 68, "column": 20 } } @@ -2464,31 +2573,31 @@ "type": "Identifier", "name": "on", "range": [ - 1394, - 1396 + 1446, + 1448 ], "loc": { "start": { - "line": 67, + "line": 68, "column": 21 }, "end": { - "line": 67, + "line": 68, "column": 23 } } }, "range": [ - 1381, - 1396 + 1433, + 1448 ], "loc": { "start": { - "line": 67, + "line": 68, "column": 8 }, "end": { - "line": 67, + "line": 68, "column": 23 } } @@ -2502,32 +2611,32 @@ "value": "state-changed", "raw": "'state-changed'", "range": [ - 1398, - 1413 + 1450, + 1465 ], "loc": { "start": { - "line": 67, + "line": 68, "column": 25 }, "end": { - "line": 67, + "line": 68, "column": 40 } } } ], "range": [ - 1397, - 1414 + 1449, + 1466 ], "loc": { "start": { - "line": 67, + "line": 68, "column": 24 }, "end": { - "line": 67, + "line": 68, "column": 41 } } @@ -2540,16 +2649,16 @@ "type": "Identifier", "name": "tf", "range": [ - 1417, - 1419 + 1469, + 1471 ], "loc": { "start": { - "line": 67, + "line": 68, "column": 44 }, "end": { - "line": 67, + "line": 68, "column": 46 } } @@ -2558,16 +2667,16 @@ "type": "Identifier", "name": "state", "range": [ - 1421, - 1426 + 1473, + 1478 ], "loc": { "start": { - "line": 67, + "line": 68, "column": 48 }, "end": { - "line": 67, + "line": 68, "column": 53 } } @@ -2581,16 +2690,16 @@ "object": { "type": "ThisExpression", "range": [ - 1431, - 1435 + 1483, + 1487 ], "loc": { "start": { - "line": 67, + "line": 68, "column": 58 }, "end": { - "line": 67, + "line": 68, "column": 62 } } @@ -2599,31 +2708,31 @@ "type": "Identifier", "name": "update", "range": [ - 1436, - 1442 + 1488, + 1494 ], "loc": { "start": { - "line": 67, + "line": 68, "column": 63 }, "end": { - "line": 67, + "line": 68, "column": 69 } } }, "range": [ - 1431, - 1442 + 1483, + 1494 ], "loc": { "start": { - "line": 67, + "line": 68, "column": 58 }, "end": { - "line": 67, + "line": 68, "column": 69 } } @@ -2633,32 +2742,32 @@ "type": "Identifier", "name": "state", "range": [ - 1443, - 1448 + 1495, + 1500 ], "loc": { "start": { - "line": 67, + "line": 68, "column": 70 }, "end": { - "line": 67, + "line": 68, "column": 75 } } } ], "range": [ - 1431, - 1449 + 1483, + 1501 ], "loc": { "start": { - "line": 67, + "line": 68, "column": 58 }, "end": { - "line": 67, + "line": 68, "column": 76 } } @@ -2666,47 +2775,47 @@ "generator": false, "expression": true, "range": [ - 1416, - 1449 + 1468, + 1501 ], "loc": { "start": { - "line": 67, + "line": 68, "column": 43 }, "end": { - "line": 67, + "line": 68, "column": 76 } } } ], "range": [ - 1381, - 1450 + 1433, + 1502 ], "loc": { "start": { - "line": 67, + "line": 68, "column": 8 }, "end": { - "line": 67, + "line": 68, "column": 77 } } }, "range": [ - 1381, - 1451 + 1433, + 1503 ], "loc": { "start": { - "line": 67, + "line": 68, "column": 8 }, "end": { - "line": 67, + "line": 68, "column": 78 } } @@ -2724,16 +2833,16 @@ "object": { "type": "ThisExpression", "range": [ - 1460, - 1464 + 1512, + 1516 ], "loc": { "start": { - "line": 68, + "line": 69, "column": 8 }, "end": { - "line": 68, + "line": 69, "column": 12 } } @@ -2742,31 +2851,31 @@ "type": "Identifier", "name": "emitter", "range": [ - 1465, - 1472 + 1517, + 1524 ], "loc": { "start": { - "line": 68, + "line": 69, "column": 13 }, "end": { - "line": 68, + "line": 69, "column": 20 } } }, "range": [ - 1460, - 1472 + 1512, + 1524 ], "loc": { "start": { - "line": 68, + "line": 69, "column": 8 }, "end": { - "line": 68, + "line": 69, "column": 20 } } @@ -2775,31 +2884,31 @@ "type": "Identifier", "name": "on", "range": [ - 1473, - 1475 + 1525, + 1527 ], "loc": { "start": { - "line": 68, + "line": 69, "column": 21 }, "end": { - "line": 68, + "line": 69, "column": 23 } } }, "range": [ - 1460, - 1475 + 1512, + 1527 ], "loc": { "start": { - "line": 68, + "line": 69, "column": 8 }, "end": { - "line": 68, + "line": 69, "column": 23 } } @@ -2813,177 +2922,33 @@ "value": "initialized", "raw": "'initialized'", "range": [ - 1477, - 1490 + 1529, + 1542 ], "loc": { "start": { - "line": 68, + "line": 69, "column": 25 }, "end": { - "line": 68, + "line": 69, "column": 38 } } } ], "range": [ - 1476, - 1491 - ], - "loc": { - "start": { - "line": 68, - "column": 24 - }, - "end": { - "line": 68, - "column": 39 - } - } - }, - { - "type": "MemberExpression", - "computed": false, - "object": { - "type": "ThisExpression", - "range": [ - 1493, - 1497 - ], - "loc": { - "start": { - "line": 68, - "column": 41 - }, - "end": { - "line": 68, - "column": 45 - } - } - }, - "property": { - "type": "Identifier", - "name": "boundSync", - "range": [ - 1498, - 1507 - ], - "loc": { - "start": { - "line": 68, - "column": 46 - }, - "end": { - "line": 68, - "column": 55 - } - } - }, - "range": [ - 1493, - 1507 - ], - "loc": { - "start": { - "line": 68, - "column": 41 - }, - "end": { - "line": 68, - "column": 55 - } - } - } - ], - "range": [ - 1460, - 1508 - ], - "loc": { - "start": { - "line": 68, - "column": 8 - }, - "end": { - "line": 68, - "column": 56 - } - } - }, - "range": [ - 1460, - 1509 - ], - "loc": { - "start": { - "line": 68, - "column": 8 - }, - "end": { - "line": 68, - "column": 57 - } - } - }, - { - "type": "ExpressionStatement", - "expression": { - "type": "CallExpression", - "callee": { - "type": "Identifier", - "name": "addEvt", - "range": [ - 1518, - 1524 - ], - "loc": { - "start": { - "line": 69, - "column": 8 - }, - "end": { - "line": 69, - "column": 14 - } - } - }, - "arguments": [ - { - "type": "Identifier", - "name": "root", - "range": [ - 1525, - 1529 - ], - "loc": { - "start": { - "line": 69, - "column": 15 - }, - "end": { - "line": 69, - "column": 19 - } - } - }, - { - "type": "Literal", - "value": "hashchange", - "raw": "'hashchange'", - "range": [ - 1531, + 1528, 1543 ], "loc": { "start": { "line": 69, - "column": 21 + "column": 24 }, "end": { "line": 69, - "column": 33 + "column": 39 } } }, @@ -2999,11 +2964,11 @@ "loc": { "start": { "line": 69, - "column": 35 + "column": 41 }, "end": { "line": 69, - "column": 39 + "column": 45 } } }, @@ -3017,11 +2982,11 @@ "loc": { "start": { "line": 69, - "column": 40 + "column": 46 }, "end": { "line": 69, - "column": 49 + "column": 55 } } }, @@ -3032,17 +2997,17 @@ "loc": { "start": { "line": 69, - "column": 35 + "column": 41 }, "end": { "line": 69, - "column": 49 + "column": 55 } } } ], "range": [ - 1518, + 1512, 1560 ], "loc": { @@ -3052,12 +3017,12 @@ }, "end": { "line": 69, - "column": 50 + "column": 56 } } }, "range": [ - 1518, + 1512, 1561 ], "loc": { @@ -3067,22 +3032,166 @@ }, "end": { "line": 69, + "column": 57 + } + } + }, + { + "type": "ExpressionStatement", + "expression": { + "type": "CallExpression", + "callee": { + "type": "Identifier", + "name": "addEvt", + "range": [ + 1570, + 1576 + ], + "loc": { + "start": { + "line": 70, + "column": 8 + }, + "end": { + "line": 70, + "column": 14 + } + } + }, + "arguments": [ + { + "type": "Identifier", + "name": "root", + "range": [ + 1577, + 1581 + ], + "loc": { + "start": { + "line": 70, + "column": 15 + }, + "end": { + "line": 70, + "column": 19 + } + } + }, + { + "type": "Literal", + "value": "hashchange", + "raw": "'hashchange'", + "range": [ + 1583, + 1595 + ], + "loc": { + "start": { + "line": 70, + "column": 21 + }, + "end": { + "line": 70, + "column": 33 + } + } + }, + { + "type": "MemberExpression", + "computed": false, + "object": { + "type": "ThisExpression", + "range": [ + 1597, + 1601 + ], + "loc": { + "start": { + "line": 70, + "column": 35 + }, + "end": { + "line": 70, + "column": 39 + } + } + }, + "property": { + "type": "Identifier", + "name": "boundSync", + "range": [ + 1602, + 1611 + ], + "loc": { + "start": { + "line": 70, + "column": 40 + }, + "end": { + "line": 70, + "column": 49 + } + } + }, + "range": [ + 1597, + 1611 + ], + "loc": { + "start": { + "line": 70, + "column": 35 + }, + "end": { + "line": 70, + "column": 49 + } + } + } + ], + "range": [ + 1570, + 1612 + ], + "loc": { + "start": { + "line": 70, + "column": 8 + }, + "end": { + "line": 70, + "column": 50 + } + } + }, + "range": [ + 1570, + 1613 + ], + "loc": { + "start": { + "line": 70, + "column": 8 + }, + "end": { + "line": 70, "column": 51 } } } ], "range": [ - 1185, - 1567 + 1237, + 1619 ], "loc": { "start": { - "line": 59, + "line": 60, "column": 11 }, "end": { - "line": 70, + "line": 71, "column": 5 } } @@ -3090,16 +3199,16 @@ "generator": false, "expression": false, "range": [ - 1182, - 1567 + 1234, + 1619 ], "loc": { "start": { - "line": 59, + "line": 60, "column": 8 }, "end": { - "line": 70, + "line": 71, "column": 5 } } @@ -3107,16 +3216,16 @@ "kind": "method", "computed": false, "range": [ - 1178, - 1567 + 1230, + 1619 ], "loc": { "start": { - "line": 59, + "line": 60, "column": 4 }, "end": { - "line": 70, + "line": 71, "column": 5 } }, @@ -3125,16 +3234,16 @@ "type": "Block", "value": "*\n * Initializes the Hash object\n ", "range": [ - 1127, - 1173 + 1179, + 1225 ], "loc": { "start": { - "line": 56, + "line": 57, "column": 4 }, "end": { - "line": 58, + "line": 59, "column": 7 } } @@ -3145,16 +3254,16 @@ "type": "Block", "value": "*\n * Updates the URL hash based on a state change\n *\n * @param {State} state Instance of State\n ", "range": [ - 1573, - 1689 + 1625, + 1741 ], "loc": { "start": { - "line": 72, + "line": 73, "column": 4 }, "end": { - "line": 76, + "line": 77, "column": 7 } } @@ -3168,16 +3277,16 @@ "type": "Identifier", "name": "update", "range": [ - 1694, - 1700 + 1746, + 1752 ], "loc": { "start": { - "line": 77, + "line": 78, "column": 4 }, "end": { - "line": 77, + "line": 78, "column": 10 } } @@ -3190,16 +3299,16 @@ "type": "Identifier", "name": "state", "range": [ - 1701, - 1706 + 1753, + 1758 ], "loc": { "start": { - "line": 77, + "line": 78, "column": 11 }, "end": { - "line": 77, + "line": 78, "column": 16 } } @@ -3217,16 +3326,16 @@ "type": "Identifier", "name": "hash", "range": [ - 1722, - 1726 + 1774, + 1778 ], "loc": { "start": { - "line": 78, + "line": 79, "column": 12 }, "end": { - "line": 78, + "line": 79, "column": 16 } } @@ -3242,16 +3351,16 @@ }, "tail": false, "range": [ - 1729, - 1733 + 1781, + 1785 ], "loc": { "start": { - "line": 78, + "line": 79, "column": 19 }, "end": { - "line": 78, + "line": 79, "column": 23 } } @@ -3264,17 +3373,17 @@ }, "tail": true, "range": [ - 1754, - 1756 + 1826, + 1828 ], "loc": { "start": { - "line": 78, - "column": 44 + "line": 79, + "column": 64 }, "end": { - "line": 78, - "column": 46 + "line": 79, + "column": 66 } } } @@ -3283,139 +3392,176 @@ { "type": "CallExpression", "callee": { - "type": "MemberExpression", - "computed": false, - "object": { - "type": "Identifier", - "name": "JSON", - "range": [ - 1733, - 1737 - ], - "loc": { - "start": { - "line": 78, - "column": 23 - }, - "end": { - "line": 78, - "column": 27 - } - } - }, - "property": { - "type": "Identifier", - "name": "stringify", - "range": [ - 1738, - 1747 - ], - "loc": { - "start": { - "line": 78, - "column": 28 - }, - "end": { - "line": 78, - "column": 37 - } - } - }, + "type": "Identifier", + "name": "encodeURIComponent", "range": [ - 1733, - 1747 + 1785, + 1803 ], "loc": { "start": { - "line": 78, + "line": 79, "column": 23 }, "end": { - "line": 78, - "column": 37 + "line": 79, + "column": 41 } } }, "arguments": [ { - "type": "Identifier", - "name": "state", + "type": "CallExpression", + "callee": { + "type": "MemberExpression", + "computed": false, + "object": { + "type": "Identifier", + "name": "JSON", + "range": [ + 1804, + 1808 + ], + "loc": { + "start": { + "line": 79, + "column": 42 + }, + "end": { + "line": 79, + "column": 46 + } + } + }, + "property": { + "type": "Identifier", + "name": "stringify", + "range": [ + 1809, + 1818 + ], + "loc": { + "start": { + "line": 79, + "column": 47 + }, + "end": { + "line": 79, + "column": 56 + } + } + }, + "range": [ + 1804, + 1818 + ], + "loc": { + "start": { + "line": 79, + "column": 42 + }, + "end": { + "line": 79, + "column": 56 + } + } + }, + "arguments": [ + { + "type": "Identifier", + "name": "state", + "range": [ + 1819, + 1824 + ], + "loc": { + "start": { + "line": 79, + "column": 57 + }, + "end": { + "line": 79, + "column": 62 + } + } + } + ], "range": [ - 1748, - 1753 + 1804, + 1825 ], "loc": { "start": { - "line": 78, - "column": 38 + "line": 79, + "column": 42 }, "end": { - "line": 78, - "column": 43 + "line": 79, + "column": 63 } } } ], "range": [ - 1733, - 1754 + 1785, + 1826 ], "loc": { "start": { - "line": 78, + "line": 79, "column": 23 }, "end": { - "line": 78, - "column": 44 + "line": 79, + "column": 64 } } } ], "range": [ - 1729, - 1756 + 1781, + 1828 ], "loc": { "start": { - "line": 78, + "line": 79, "column": 19 }, "end": { - "line": 78, - "column": 46 + "line": 79, + "column": 66 } } }, "range": [ - 1722, - 1756 + 1774, + 1828 ], "loc": { "start": { - "line": 78, + "line": 79, "column": 12 }, "end": { - "line": 78, - "column": 46 + "line": 79, + "column": 66 } } } ], "kind": "let", "range": [ - 1718, - 1757 + 1770, + 1829 ], "loc": { "start": { - "line": 78, + "line": 79, "column": 8 }, "end": { - "line": 78, - "column": 47 + "line": 79, + "column": 67 } } }, @@ -3430,16 +3576,16 @@ "object": { "type": "ThisExpression", "range": [ - 1770, - 1774 + 1842, + 1846 ], "loc": { "start": { - "line": 79, + "line": 80, "column": 12 }, "end": { - "line": 79, + "line": 80, "column": 16 } } @@ -3448,31 +3594,31 @@ "type": "Identifier", "name": "lastHash", "range": [ - 1775, - 1783 + 1847, + 1855 ], "loc": { "start": { - "line": 79, + "line": 80, "column": 17 }, "end": { - "line": 79, + "line": 80, "column": 25 } } }, "range": [ - 1770, - 1783 + 1842, + 1855 ], "loc": { "start": { - "line": 79, + "line": 80, "column": 12 }, "end": { - "line": 79, + "line": 80, "column": 25 } } @@ -3481,31 +3627,31 @@ "type": "Identifier", "name": "hash", "range": [ - 1788, - 1792 + 1860, + 1864 ], "loc": { "start": { - "line": 79, + "line": 80, "column": 30 }, "end": { - "line": 79, + "line": 80, "column": 34 } } }, "range": [ - 1770, - 1792 + 1842, + 1864 ], "loc": { "start": { - "line": 79, + "line": 80, "column": 12 }, "end": { - "line": 79, + "line": 80, "column": 34 } } @@ -3517,48 +3663,48 @@ "type": "ReturnStatement", "argument": null, "range": [ - 1808, - 1815 + 1880, + 1887 ], "loc": { "start": { - "line": 80, + "line": 81, "column": 12 }, "end": { - "line": 80, + "line": 81, "column": 19 } } } ], "range": [ - 1794, - 1825 + 1866, + 1897 ], "loc": { "start": { - "line": 79, + "line": 80, "column": 36 }, "end": { - "line": 81, + "line": 82, "column": 9 } } }, "alternate": null, "range": [ - 1766, - 1825 + 1838, + 1897 ], "loc": { "start": { - "line": 79, + "line": 80, "column": 8 }, "end": { - "line": 81, + "line": 82, "column": 9 } } @@ -3575,16 +3721,16 @@ "type": "Identifier", "name": "location", "range": [ - 1835, - 1843 + 1907, + 1915 ], "loc": { "start": { - "line": 83, + "line": 84, "column": 8 }, "end": { - "line": 83, + "line": 84, "column": 16 } } @@ -3593,31 +3739,31 @@ "type": "Identifier", "name": "hash", "range": [ - 1844, - 1848 + 1916, + 1920 ], "loc": { "start": { - "line": 83, + "line": 84, "column": 17 }, "end": { - "line": 83, + "line": 84, "column": 21 } } }, "range": [ - 1835, - 1848 + 1907, + 1920 ], "loc": { "start": { - "line": 83, + "line": 84, "column": 8 }, "end": { - "line": 83, + "line": 84, "column": 21 } } @@ -3626,46 +3772,46 @@ "type": "Identifier", "name": "hash", "range": [ - 1851, - 1855 + 1923, + 1927 ], "loc": { "start": { - "line": 83, + "line": 84, "column": 24 }, "end": { - "line": 83, + "line": 84, "column": 28 } } }, "range": [ - 1835, - 1855 + 1907, + 1927 ], "loc": { "start": { - "line": 83, + "line": 84, "column": 8 }, "end": { - "line": 83, + "line": 84, "column": 28 } } }, "range": [ - 1835, - 1856 + 1907, + 1928 ], "loc": { "start": { - "line": 83, + "line": 84, "column": 8 }, "end": { - "line": 83, + "line": 84, "column": 29 } } @@ -3681,16 +3827,16 @@ "object": { "type": "ThisExpression", "range": [ - 1865, - 1869 + 1937, + 1941 ], "loc": { "start": { - "line": 84, + "line": 85, "column": 8 }, "end": { - "line": 84, + "line": 85, "column": 12 } } @@ -3699,31 +3845,31 @@ "type": "Identifier", "name": "lastHash", "range": [ - 1870, - 1878 + 1942, + 1950 ], "loc": { "start": { - "line": 84, + "line": 85, "column": 13 }, "end": { - "line": 84, + "line": 85, "column": 21 } } }, "range": [ - 1865, - 1878 + 1937, + 1950 ], "loc": { "start": { - "line": 84, + "line": 85, "column": 8 }, "end": { - "line": 84, + "line": 85, "column": 21 } } @@ -3732,62 +3878,62 @@ "type": "Identifier", "name": "hash", "range": [ - 1881, - 1885 + 1953, + 1957 ], "loc": { "start": { - "line": 84, + "line": 85, "column": 24 }, "end": { - "line": 84, + "line": 85, "column": 28 } } }, "range": [ - 1865, - 1885 + 1937, + 1957 ], "loc": { "start": { - "line": 84, + "line": 85, "column": 8 }, "end": { - "line": 84, + "line": 85, "column": 28 } } }, "range": [ - 1865, - 1886 + 1937, + 1958 ], "loc": { "start": { - "line": 84, + "line": 85, "column": 8 }, "end": { - "line": 84, + "line": 85, "column": 29 } } } ], "range": [ - 1708, - 1892 + 1760, + 1964 ], "loc": { "start": { - "line": 77, + "line": 78, "column": 18 }, "end": { - "line": 85, + "line": 86, "column": 5 } } @@ -3795,16 +3941,16 @@ "generator": false, "expression": false, "range": [ - 1700, - 1892 + 1752, + 1964 ], "loc": { "start": { - "line": 77, + "line": 78, "column": 10 }, "end": { - "line": 85, + "line": 86, "column": 5 } } @@ -3812,16 +3958,16 @@ "kind": "method", "computed": false, "range": [ - 1694, - 1892 + 1746, + 1964 ], "loc": { "start": { - "line": 77, + "line": 78, "column": 4 }, "end": { - "line": 85, + "line": 86, "column": 5 } }, @@ -3830,16 +3976,16 @@ "type": "Block", "value": "*\n * Updates the URL hash based on a state change\n *\n * @param {State} state Instance of State\n ", "range": [ - 1573, - 1689 + 1625, + 1741 ], "loc": { "start": { - "line": 72, + "line": 73, "column": 4 }, "end": { - "line": 76, + "line": 77, "column": 7 } } @@ -3850,16 +3996,16 @@ "type": "Block", "value": "*\n * Converts a URL hash into a state JSON object\n *\n * @param {String} hash URL hash fragment\n * @returns {Object} JSON object\n ", "range": [ - 1898, - 2051 + 1970, + 2123 ], "loc": { "start": { - "line": 87, + "line": 88, "column": 4 }, "end": { - "line": 92, + "line": 93, "column": 7 } } @@ -3873,16 +4019,16 @@ "type": "Identifier", "name": "parse", "range": [ - 2056, - 2061 + 2128, + 2133 ], "loc": { "start": { - "line": 93, + "line": 94, "column": 4 }, "end": { - "line": 93, + "line": 94, "column": 9 } } @@ -3895,16 +4041,16 @@ "type": "Identifier", "name": "hash", "range": [ - 2062, - 2066 + 2134, + 2138 ], "loc": { "start": { - "line": 93, + "line": 94, "column": 10 }, "end": { - "line": 93, + "line": 94, "column": 14 } } @@ -3927,16 +4073,16 @@ "type": "Identifier", "name": "hash", "range": [ - 2082, - 2086 + 2154, + 2158 ], "loc": { "start": { - "line": 94, + "line": 95, "column": 12 }, "end": { - "line": 94, + "line": 95, "column": 16 } } @@ -3945,31 +4091,31 @@ "type": "Identifier", "name": "indexOf", "range": [ - 2087, - 2094 + 2159, + 2166 ], "loc": { "start": { - "line": 94, + "line": 95, "column": 17 }, "end": { - "line": 94, + "line": 95, "column": 24 } } }, "range": [ - 2082, - 2094 + 2154, + 2166 ], "loc": { "start": { - "line": 94, + "line": 95, "column": 12 }, "end": { - "line": 94, + "line": 95, "column": 24 } } @@ -3980,32 +4126,32 @@ "value": "#", "raw": "'#'", "range": [ - 2095, - 2098 + 2167, + 2170 ], "loc": { "start": { - "line": 94, + "line": 95, "column": 25 }, "end": { - "line": 94, + "line": 95, "column": 28 } } } ], "range": [ - 2082, - 2099 + 2154, + 2171 ], "loc": { "start": { - "line": 94, + "line": 95, "column": 12 }, "end": { - "line": 94, + "line": 95, "column": 29 } } @@ -4018,47 +4164,47 @@ "value": 1, "raw": "1", "range": [ - 2105, - 2106 + 2177, + 2178 ], "loc": { "start": { - "line": 94, + "line": 95, "column": 35 }, "end": { - "line": 94, + "line": 95, "column": 36 } } }, "prefix": true, "range": [ - 2104, - 2106 + 2176, + 2178 ], "loc": { "start": { - "line": 94, + "line": 95, "column": 34 }, "end": { - "line": 94, + "line": 95, "column": 36 } } }, "range": [ - 2082, - 2106 + 2154, + 2178 ], "loc": { "start": { - "line": 94, + "line": 95, "column": 12 }, "end": { - "line": 94, + "line": 95, "column": 36 } } @@ -4073,63 +4219,63 @@ "value": null, "raw": "null", "range": [ - 2129, - 2133 + 2201, + 2205 ], "loc": { "start": { - "line": 95, + "line": 96, "column": 19 }, "end": { - "line": 95, + "line": 96, "column": 23 } } }, "range": [ - 2122, - 2134 + 2194, + 2206 ], "loc": { "start": { - "line": 95, + "line": 96, "column": 12 }, "end": { - "line": 95, + "line": 96, "column": 24 } } } ], "range": [ - 2108, - 2144 + 2180, + 2216 ], "loc": { "start": { - "line": 94, + "line": 95, "column": 38 }, "end": { - "line": 96, + "line": 97, "column": 9 } } }, "alternate": null, "range": [ - 2078, - 2144 + 2150, + 2216 ], "loc": { "start": { - "line": 94, + "line": 95, "column": 8 }, "end": { - "line": 96, + "line": 97, "column": 9 } } @@ -4143,16 +4289,16 @@ "type": "Identifier", "name": "hash", "range": [ - 2153, - 2157 + 2225, + 2229 ], "loc": { "start": { - "line": 97, + "line": 98, "column": 8 }, "end": { - "line": 97, + "line": 98, "column": 12 } } @@ -4166,16 +4312,16 @@ "type": "Identifier", "name": "hash", "range": [ - 2160, - 2164 + 2232, + 2236 ], "loc": { "start": { - "line": 97, + "line": 98, "column": 15 }, "end": { - "line": 97, + "line": 98, "column": 19 } } @@ -4184,31 +4330,31 @@ "type": "Identifier", "name": "substr", "range": [ - 2165, - 2171 + 2237, + 2243 ], "loc": { "start": { - "line": 97, + "line": 98, "column": 20 }, "end": { - "line": 97, + "line": 98, "column": 26 } } }, "range": [ - 2160, - 2171 + 2232, + 2243 ], "loc": { "start": { - "line": 97, + "line": 98, "column": 15 }, "end": { - "line": 97, + "line": 98, "column": 26 } } @@ -4219,62 +4365,62 @@ "value": 1, "raw": "1", "range": [ - 2172, - 2173 + 2244, + 2245 ], "loc": { "start": { - "line": 97, + "line": 98, "column": 27 }, "end": { - "line": 97, + "line": 98, "column": 28 } } } ], "range": [ - 2160, - 2174 + 2232, + 2246 ], "loc": { "start": { - "line": 97, + "line": 98, "column": 15 }, "end": { - "line": 97, + "line": 98, "column": 29 } } }, "range": [ - 2153, - 2174 + 2225, + 2246 ], "loc": { "start": { - "line": 97, + "line": 98, "column": 8 }, "end": { - "line": 97, + "line": 98, "column": 29 } } }, "range": [ - 2153, - 2175 + 2225, + 2247 ], "loc": { "start": { - "line": 97, + "line": 98, "column": 8 }, "end": { - "line": 97, + "line": 98, "column": 30 } } @@ -4290,16 +4436,16 @@ "type": "Identifier", "name": "JSON", "range": [ - 2191, - 2195 + 2263, + 2267 ], "loc": { "start": { - "line": 98, + "line": 99, "column": 15 }, "end": { - "line": 98, + "line": 99, "column": 19 } } @@ -4308,31 +4454,31 @@ "type": "Identifier", "name": "parse", "range": [ - 2196, - 2201 + 2268, + 2273 ], "loc": { "start": { - "line": 98, + "line": 99, "column": 20 }, "end": { - "line": 98, + "line": 99, "column": 25 } } }, "range": [ - 2191, - 2201 + 2263, + 2273 ], "loc": { "start": { - "line": 98, + "line": 99, "column": 15 }, "end": { - "line": 98, + "line": 99, "column": 25 } } @@ -4344,16 +4490,16 @@ "type": "Identifier", "name": "decodeURIComponent", "range": [ - 2202, - 2220 + 2274, + 2292 ], "loc": { "start": { - "line": 98, + "line": 99, "column": 26 }, "end": { - "line": 98, + "line": 99, "column": 44 } } @@ -4363,79 +4509,79 @@ "type": "Identifier", "name": "hash", "range": [ - 2221, - 2225 + 2293, + 2297 ], "loc": { "start": { - "line": 98, + "line": 99, "column": 45 }, "end": { - "line": 98, + "line": 99, "column": 49 } } } ], "range": [ - 2202, - 2226 + 2274, + 2298 ], "loc": { "start": { - "line": 98, + "line": 99, "column": 26 }, "end": { - "line": 98, + "line": 99, "column": 50 } } } ], "range": [ - 2191, - 2227 + 2263, + 2299 ], "loc": { "start": { - "line": 98, + "line": 99, "column": 15 }, "end": { - "line": 98, + "line": 99, "column": 51 } } }, "range": [ - 2184, - 2228 + 2256, + 2300 ], "loc": { "start": { - "line": 98, + "line": 99, "column": 8 }, "end": { - "line": 98, + "line": 99, "column": 52 } } } ], "range": [ - 2068, - 2234 + 2140, + 2306 ], "loc": { "start": { - "line": 93, + "line": 94, "column": 16 }, "end": { - "line": 99, + "line": 100, "column": 5 } } @@ -4443,16 +4589,16 @@ "generator": false, "expression": false, "range": [ - 2061, - 2234 + 2133, + 2306 ], "loc": { "start": { - "line": 93, + "line": 94, "column": 9 }, "end": { - "line": 99, + "line": 100, "column": 5 } } @@ -4460,16 +4606,16 @@ "kind": "method", "computed": false, "range": [ - 2056, - 2234 + 2128, + 2306 ], "loc": { "start": { - "line": 93, + "line": 94, "column": 4 }, "end": { - "line": 99, + "line": 100, "column": 5 } }, @@ -4478,16 +4624,16 @@ "type": "Block", "value": "*\n * Converts a URL hash into a state JSON object\n *\n * @param {String} hash URL hash fragment\n * @returns {Object} JSON object\n ", "range": [ - 1898, - 2051 + 1970, + 2123 ], "loc": { "start": { - "line": 87, + "line": 88, "column": 4 }, "end": { - "line": 92, + "line": 93, "column": 7 } } @@ -4498,16 +4644,16 @@ "type": "Block", "value": "*\n * Applies current hash state to features\n ", "range": [ - 2240, - 2297 + 2312, + 2369 ], "loc": { "start": { - "line": 101, + "line": 102, "column": 4 }, "end": { - "line": 103, + "line": 104, "column": 7 } } @@ -4521,16 +4667,16 @@ "type": "Identifier", "name": "sync", "range": [ - 2302, - 2306 + 2374, + 2378 ], "loc": { "start": { - "line": 104, + "line": 105, "column": 4 }, "end": { - "line": 104, + "line": 105, "column": 8 } } @@ -4551,16 +4697,16 @@ "type": "Identifier", "name": "state", "range": [ - 2323, - 2328 + 2395, + 2400 ], "loc": { "start": { - "line": 105, + "line": 106, "column": 12 }, "end": { - "line": 105, + "line": 106, "column": 17 } } @@ -4573,16 +4719,16 @@ "object": { "type": "ThisExpression", "range": [ - 2331, - 2335 + 2403, + 2407 ], "loc": { "start": { - "line": 105, + "line": 106, "column": 20 }, "end": { - "line": 105, + "line": 106, "column": 24 } } @@ -4591,31 +4737,31 @@ "type": "Identifier", "name": "parse", "range": [ - 2336, - 2341 + 2408, + 2413 ], "loc": { "start": { - "line": 105, + "line": 106, "column": 25 }, "end": { - "line": 105, + "line": 106, "column": 30 } } }, "range": [ - 2331, - 2341 + 2403, + 2413 ], "loc": { "start": { - "line": 105, + "line": 106, "column": 20 }, "end": { - "line": 105, + "line": 106, "column": 30 } } @@ -4628,16 +4774,16 @@ "type": "Identifier", "name": "location", "range": [ - 2342, - 2350 + 2414, + 2422 ], "loc": { "start": { - "line": 105, + "line": 106, "column": 31 }, "end": { - "line": 105, + "line": 106, "column": 39 } } @@ -4646,62 +4792,62 @@ "type": "Identifier", "name": "hash", "range": [ - 2351, - 2355 + 2423, + 2427 ], "loc": { "start": { - "line": 105, + "line": 106, "column": 40 }, "end": { - "line": 105, + "line": 106, "column": 44 } } }, "range": [ - 2342, - 2355 + 2414, + 2427 ], "loc": { "start": { - "line": 105, + "line": 106, "column": 31 }, "end": { - "line": 105, + "line": 106, "column": 44 } } } ], "range": [ - 2331, - 2356 + 2403, + 2428 ], "loc": { "start": { - "line": 105, + "line": 106, "column": 20 }, "end": { - "line": 105, + "line": 106, "column": 45 } } }, "range": [ - 2323, - 2356 + 2395, + 2428 ], "loc": { "start": { - "line": 105, + "line": 106, "column": 12 }, "end": { - "line": 105, + "line": 106, "column": 45 } } @@ -4709,16 +4855,16 @@ ], "kind": "let", "range": [ - 2319, - 2357 + 2391, + 2429 ], "loc": { "start": { - "line": 105, + "line": 106, "column": 8 }, "end": { - "line": 105, + "line": 106, "column": 46 } } @@ -4732,32 +4878,32 @@ "type": "Identifier", "name": "state", "range": [ - 2371, - 2376 + 2443, + 2448 ], "loc": { "start": { - "line": 106, + "line": 107, "column": 13 }, "end": { - "line": 106, + "line": 107, "column": 18 } } }, "prefix": true, "range": [ - 2370, - 2376 + 2442, + 2448 ], "loc": { "start": { - "line": 106, + "line": 107, "column": 12 }, "end": { - "line": 106, + "line": 107, "column": 18 } } @@ -4769,48 +4915,48 @@ "type": "ReturnStatement", "argument": null, "range": [ - 2392, - 2399 + 2464, + 2471 ], "loc": { "start": { - "line": 107, + "line": 108, "column": 12 }, "end": { - "line": 107, + "line": 108, "column": 19 } } } ], "range": [ - 2378, - 2409 + 2450, + 2481 ], "loc": { "start": { - "line": 106, + "line": 107, "column": 20 }, "end": { - "line": 108, + "line": 109, "column": 9 } } }, "alternate": null, "range": [ - 2366, - 2409 + 2438, + 2481 ], "loc": { "start": { - "line": 106, + "line": 107, "column": 8 }, "end": { - "line": 108, + "line": 109, "column": 9 } }, @@ -4819,16 +4965,16 @@ "type": "Line", "value": " override current state with persisted one and sync features", "range": [ - 2418, - 2480 + 2490, + 2552 ], "loc": { "start": { - "line": 109, + "line": 110, "column": 8 }, "end": { - "line": 109, + "line": 110, "column": 70 } } @@ -4848,16 +4994,16 @@ "object": { "type": "ThisExpression", "range": [ - 2489, - 2493 + 2561, + 2565 ], "loc": { "start": { - "line": 110, + "line": 111, "column": 8 }, "end": { - "line": 110, + "line": 111, "column": 12 } } @@ -4866,31 +5012,31 @@ "type": "Identifier", "name": "state", "range": [ - 2494, - 2499 + 2566, + 2571 ], "loc": { "start": { - "line": 110, + "line": 111, "column": 13 }, "end": { - "line": 110, + "line": 111, "column": 18 } } }, "range": [ - 2489, - 2499 + 2561, + 2571 ], "loc": { "start": { - "line": 110, + "line": 111, "column": 8 }, "end": { - "line": 110, + "line": 111, "column": 18 } } @@ -4899,31 +5045,31 @@ "type": "Identifier", "name": "overrideAndSync", "range": [ - 2500, - 2515 + 2572, + 2587 ], "loc": { "start": { - "line": 110, + "line": 111, "column": 19 }, "end": { - "line": 110, + "line": 111, "column": 34 } } }, "range": [ - 2489, - 2515 + 2561, + 2587 ], "loc": { "start": { - "line": 110, + "line": 111, "column": 8 }, "end": { - "line": 110, + "line": 111, "column": 34 } } @@ -4933,47 +5079,47 @@ "type": "Identifier", "name": "state", "range": [ - 2516, - 2521 + 2588, + 2593 ], "loc": { "start": { - "line": 110, + "line": 111, "column": 35 }, "end": { - "line": 110, + "line": 111, "column": 40 } } } ], "range": [ - 2489, - 2522 + 2561, + 2594 ], "loc": { "start": { - "line": 110, + "line": 111, "column": 8 }, "end": { - "line": 110, + "line": 111, "column": 41 } } }, "range": [ - 2489, - 2523 + 2561, + 2595 ], "loc": { "start": { - "line": 110, + "line": 111, "column": 8 }, "end": { - "line": 110, + "line": 111, "column": 42 } }, @@ -4982,16 +5128,16 @@ "type": "Line", "value": " override current state with persisted one and sync features", "range": [ - 2418, - 2480 + 2490, + 2552 ], "loc": { "start": { - "line": 109, + "line": 110, "column": 8 }, "end": { - "line": 109, + "line": 110, "column": 70 } } @@ -5000,16 +5146,16 @@ } ], "range": [ - 2309, - 2529 + 2381, + 2601 ], "loc": { "start": { - "line": 104, + "line": 105, "column": 11 }, "end": { - "line": 111, + "line": 112, "column": 5 } } @@ -5017,16 +5163,16 @@ "generator": false, "expression": false, "range": [ - 2306, - 2529 + 2378, + 2601 ], "loc": { "start": { - "line": 104, + "line": 105, "column": 8 }, "end": { - "line": 111, + "line": 112, "column": 5 } } @@ -5034,16 +5180,16 @@ "kind": "method", "computed": false, "range": [ - 2302, - 2529 + 2374, + 2601 ], "loc": { "start": { - "line": 104, + "line": 105, "column": 4 }, "end": { - "line": 111, + "line": 112, "column": 5 } }, @@ -5052,16 +5198,16 @@ "type": "Block", "value": "*\n * Applies current hash state to features\n ", "range": [ - 2240, - 2297 + 2312, + 2369 ], "loc": { "start": { - "line": 101, + "line": 102, "column": 4 }, "end": { - "line": 103, + "line": 104, "column": 7 } } @@ -5072,16 +5218,16 @@ "type": "Block", "value": "*\n * Release Hash event subscriptions and clear fields\n ", "range": [ - 2535, - 2603 + 2607, + 2675 ], "loc": { "start": { - "line": 113, + "line": 114, "column": 4 }, "end": { - "line": 115, + "line": 116, "column": 7 } } @@ -5095,16 +5241,16 @@ "type": "Identifier", "name": "destroy", "range": [ - 2608, - 2615 + 2680, + 2687 ], "loc": { "start": { - "line": 116, + "line": 117, "column": 4 }, "end": { - "line": 116, + "line": 117, "column": 11 } } @@ -5129,16 +5275,16 @@ "object": { "type": "ThisExpression", "range": [ - 2628, - 2632 + 2700, + 2704 ], "loc": { "start": { - "line": 117, + "line": 118, "column": 8 }, "end": { - "line": 117, + "line": 118, "column": 12 } } @@ -5147,31 +5293,31 @@ "type": "Identifier", "name": "emitter", "range": [ - 2633, - 2640 + 2705, + 2712 ], "loc": { "start": { - "line": 117, + "line": 118, "column": 13 }, "end": { - "line": 117, + "line": 118, "column": 20 } } }, "range": [ - 2628, - 2640 + 2700, + 2712 ], "loc": { "start": { - "line": 117, + "line": 118, "column": 8 }, "end": { - "line": 117, + "line": 118, "column": 20 } } @@ -5180,31 +5326,31 @@ "type": "Identifier", "name": "off", "range": [ - 2641, - 2644 + 2713, + 2716 ], "loc": { "start": { - "line": 117, + "line": 118, "column": 21 }, "end": { - "line": 117, + "line": 118, "column": 24 } } }, "range": [ - 2628, - 2644 + 2700, + 2716 ], "loc": { "start": { - "line": 117, + "line": 118, "column": 8 }, "end": { - "line": 117, + "line": 118, "column": 24 } } @@ -5218,32 +5364,32 @@ "value": "state-changed", "raw": "'state-changed'", "range": [ - 2646, - 2661 + 2718, + 2733 ], "loc": { "start": { - "line": 117, + "line": 118, "column": 26 }, "end": { - "line": 117, + "line": 118, "column": 41 } } } ], "range": [ - 2645, - 2662 + 2717, + 2734 ], "loc": { "start": { - "line": 117, + "line": 118, "column": 25 }, "end": { - "line": 117, + "line": 118, "column": 42 } } @@ -5256,16 +5402,16 @@ "type": "Identifier", "name": "tf", "range": [ - 2665, - 2667 + 2737, + 2739 ], "loc": { "start": { - "line": 117, + "line": 118, "column": 45 }, "end": { - "line": 117, + "line": 118, "column": 47 } } @@ -5274,16 +5420,16 @@ "type": "Identifier", "name": "state", "range": [ - 2669, - 2674 + 2741, + 2746 ], "loc": { "start": { - "line": 117, + "line": 118, "column": 49 }, "end": { - "line": 117, + "line": 118, "column": 54 } } @@ -5297,16 +5443,16 @@ "object": { "type": "ThisExpression", "range": [ - 2679, - 2683 + 2751, + 2755 ], "loc": { "start": { - "line": 117, + "line": 118, "column": 59 }, "end": { - "line": 117, + "line": 118, "column": 63 } } @@ -5315,31 +5461,31 @@ "type": "Identifier", "name": "update", "range": [ - 2684, - 2690 + 2756, + 2762 ], "loc": { "start": { - "line": 117, + "line": 118, "column": 64 }, "end": { - "line": 117, + "line": 118, "column": 70 } } }, "range": [ - 2679, - 2690 + 2751, + 2762 ], "loc": { "start": { - "line": 117, + "line": 118, "column": 59 }, "end": { - "line": 117, + "line": 118, "column": 70 } } @@ -5349,32 +5495,32 @@ "type": "Identifier", "name": "state", "range": [ - 2691, - 2696 + 2763, + 2768 ], "loc": { "start": { - "line": 117, + "line": 118, "column": 71 }, "end": { - "line": 117, + "line": 118, "column": 76 } } } ], "range": [ - 2679, - 2697 + 2751, + 2769 ], "loc": { "start": { - "line": 117, + "line": 118, "column": 59 }, "end": { - "line": 117, + "line": 118, "column": 77 } } @@ -5382,47 +5528,47 @@ "generator": false, "expression": true, "range": [ - 2664, - 2697 + 2736, + 2769 ], "loc": { "start": { - "line": 117, + "line": 118, "column": 44 }, "end": { - "line": 117, + "line": 118, "column": 77 } } } ], "range": [ - 2628, - 2698 + 2700, + 2770 ], "loc": { "start": { - "line": 117, + "line": 118, "column": 8 }, "end": { - "line": 117, + "line": 118, "column": 78 } } }, "range": [ - 2628, - 2699 + 2700, + 2771 ], "loc": { "start": { - "line": 117, + "line": 118, "column": 8 }, "end": { - "line": 117, + "line": 118, "column": 79 } } @@ -5440,16 +5586,16 @@ "object": { "type": "ThisExpression", "range": [ - 2708, - 2712 + 2780, + 2784 ], "loc": { "start": { - "line": 118, + "line": 119, "column": 8 }, "end": { - "line": 118, + "line": 119, "column": 12 } } @@ -5458,31 +5604,31 @@ "type": "Identifier", "name": "emitter", "range": [ - 2713, - 2720 + 2785, + 2792 ], "loc": { "start": { - "line": 118, + "line": 119, "column": 13 }, "end": { - "line": 118, + "line": 119, "column": 20 } } }, "range": [ - 2708, - 2720 + 2780, + 2792 ], "loc": { "start": { - "line": 118, + "line": 119, "column": 8 }, "end": { - "line": 118, + "line": 119, "column": 20 } } @@ -5491,31 +5637,31 @@ "type": "Identifier", "name": "off", "range": [ - 2721, - 2724 + 2793, + 2796 ], "loc": { "start": { - "line": 118, + "line": 119, "column": 21 }, "end": { - "line": 118, + "line": 119, "column": 24 } } }, "range": [ - 2708, - 2724 + 2780, + 2796 ], "loc": { "start": { - "line": 118, + "line": 119, "column": 8 }, "end": { - "line": 118, + "line": 119, "column": 24 } } @@ -5529,32 +5675,32 @@ "value": "initialized", "raw": "'initialized'", "range": [ - 2726, - 2739 + 2798, + 2811 ], "loc": { "start": { - "line": 118, + "line": 119, "column": 26 }, "end": { - "line": 118, + "line": 119, "column": 39 } } } ], "range": [ - 2725, - 2740 + 2797, + 2812 ], "loc": { "start": { - "line": 118, + "line": 119, "column": 25 }, "end": { - "line": 118, + "line": 119, "column": 40 } } @@ -5565,16 +5711,16 @@ "object": { "type": "ThisExpression", "range": [ - 2742, - 2746 + 2814, + 2818 ], "loc": { "start": { - "line": 118, + "line": 119, "column": 42 }, "end": { - "line": 118, + "line": 119, "column": 46 } } @@ -5583,62 +5729,62 @@ "type": "Identifier", "name": "boundSync", "range": [ - 2747, - 2756 + 2819, + 2828 ], "loc": { "start": { - "line": 118, + "line": 119, "column": 47 }, "end": { - "line": 118, + "line": 119, "column": 56 } } }, "range": [ - 2742, - 2756 + 2814, + 2828 ], "loc": { "start": { - "line": 118, + "line": 119, "column": 42 }, "end": { - "line": 118, + "line": 119, "column": 56 } } } ], "range": [ - 2708, - 2757 + 2780, + 2829 ], "loc": { "start": { - "line": 118, + "line": 119, "column": 8 }, "end": { - "line": 118, + "line": 119, "column": 57 } } }, "range": [ - 2708, - 2758 + 2780, + 2830 ], "loc": { "start": { - "line": 118, + "line": 119, "column": 8 }, "end": { - "line": 118, + "line": 119, "column": 58 } } @@ -5651,16 +5797,16 @@ "type": "Identifier", "name": "removeEvt", "range": [ - 2767, - 2776 + 2839, + 2848 ], "loc": { "start": { - "line": 119, + "line": 120, "column": 8 }, "end": { - "line": 119, + "line": 120, "column": 17 } } @@ -5670,16 +5816,16 @@ "type": "Identifier", "name": "root", "range": [ - 2777, - 2781 + 2849, + 2853 ], "loc": { "start": { - "line": 119, + "line": 120, "column": 18 }, "end": { - "line": 119, + "line": 120, "column": 22 } } @@ -5689,16 +5835,16 @@ "value": "hashchange", "raw": "'hashchange'", "range": [ - 2783, - 2795 + 2855, + 2867 ], "loc": { "start": { - "line": 119, + "line": 120, "column": 24 }, "end": { - "line": 119, + "line": 120, "column": 36 } } @@ -5709,16 +5855,16 @@ "object": { "type": "ThisExpression", "range": [ - 2797, - 2801 + 2869, + 2873 ], "loc": { "start": { - "line": 119, + "line": 120, "column": 38 }, "end": { - "line": 119, + "line": 120, "column": 42 } } @@ -5727,62 +5873,62 @@ "type": "Identifier", "name": "boundSync", "range": [ - 2802, - 2811 + 2874, + 2883 ], "loc": { "start": { - "line": 119, + "line": 120, "column": 43 }, "end": { - "line": 119, + "line": 120, "column": 52 } } }, "range": [ - 2797, - 2811 + 2869, + 2883 ], "loc": { "start": { - "line": 119, + "line": 120, "column": 38 }, "end": { - "line": 119, + "line": 120, "column": 52 } } } ], "range": [ - 2767, - 2812 + 2839, + 2884 ], "loc": { "start": { - "line": 119, + "line": 120, "column": 8 }, "end": { - "line": 119, + "line": 120, "column": 53 } } }, "range": [ - 2767, - 2813 + 2839, + 2885 ], "loc": { "start": { - "line": 119, + "line": 120, "column": 8 }, "end": { - "line": 119, + "line": 120, "column": 54 } } @@ -5798,16 +5944,16 @@ "object": { "type": "ThisExpression", "range": [ - 2823, - 2827 + 2895, + 2899 ], "loc": { "start": { - "line": 121, + "line": 122, "column": 8 }, "end": { - "line": 121, + "line": 122, "column": 12 } } @@ -5816,31 +5962,31 @@ "type": "Identifier", "name": "state", "range": [ - 2828, - 2833 + 2900, + 2905 ], "loc": { "start": { - "line": 121, + "line": 122, "column": 13 }, "end": { - "line": 121, + "line": 122, "column": 18 } } }, "range": [ - 2823, - 2833 + 2895, + 2905 ], "loc": { "start": { - "line": 121, + "line": 122, "column": 8 }, "end": { - "line": 121, + "line": 122, "column": 18 } } @@ -5850,46 +5996,46 @@ "value": null, "raw": "null", "range": [ - 2836, - 2840 + 2908, + 2912 ], "loc": { "start": { - "line": 121, + "line": 122, "column": 21 }, "end": { - "line": 121, + "line": 122, "column": 25 } } }, "range": [ - 2823, - 2840 + 2895, + 2912 ], "loc": { "start": { - "line": 121, + "line": 122, "column": 8 }, "end": { - "line": 121, + "line": 122, "column": 25 } } }, "range": [ - 2823, - 2841 + 2895, + 2913 ], "loc": { "start": { - "line": 121, + "line": 122, "column": 8 }, "end": { - "line": 121, + "line": 122, "column": 26 } } @@ -5905,16 +6051,16 @@ "object": { "type": "ThisExpression", "range": [ - 2850, - 2854 + 2922, + 2926 ], "loc": { "start": { - "line": 122, + "line": 123, "column": 8 }, "end": { - "line": 122, + "line": 123, "column": 12 } } @@ -5923,31 +6069,31 @@ "type": "Identifier", "name": "lastHash", "range": [ - 2855, - 2863 + 2927, + 2935 ], "loc": { "start": { - "line": 122, + "line": 123, "column": 13 }, "end": { - "line": 122, + "line": 123, "column": 21 } } }, "range": [ - 2850, - 2863 + 2922, + 2935 ], "loc": { "start": { - "line": 122, + "line": 123, "column": 8 }, "end": { - "line": 122, + "line": 123, "column": 21 } } @@ -5957,46 +6103,46 @@ "value": null, "raw": "null", "range": [ - 2866, - 2870 + 2938, + 2942 ], "loc": { "start": { - "line": 122, + "line": 123, "column": 24 }, "end": { - "line": 122, + "line": 123, "column": 28 } } }, "range": [ - 2850, - 2870 + 2922, + 2942 ], "loc": { "start": { - "line": 122, + "line": 123, "column": 8 }, "end": { - "line": 122, + "line": 123, "column": 28 } } }, "range": [ - 2850, - 2871 + 2922, + 2943 ], "loc": { "start": { - "line": 122, + "line": 123, "column": 8 }, "end": { - "line": 122, + "line": 123, "column": 29 } } @@ -6012,16 +6158,16 @@ "object": { "type": "ThisExpression", "range": [ - 2880, - 2884 + 2952, + 2956 ], "loc": { "start": { - "line": 123, + "line": 124, "column": 8 }, "end": { - "line": 123, + "line": 124, "column": 12 } } @@ -6030,31 +6176,31 @@ "type": "Identifier", "name": "emitter", "range": [ - 2885, - 2892 + 2957, + 2964 ], "loc": { "start": { - "line": 123, + "line": 124, "column": 13 }, "end": { - "line": 123, + "line": 124, "column": 20 } } }, "range": [ - 2880, - 2892 + 2952, + 2964 ], "loc": { "start": { - "line": 123, + "line": 124, "column": 8 }, "end": { - "line": 123, + "line": 124, "column": 20 } } @@ -6064,62 +6210,62 @@ "value": null, "raw": "null", "range": [ - 2895, - 2899 + 2967, + 2971 ], "loc": { "start": { - "line": 123, + "line": 124, "column": 23 }, "end": { - "line": 123, + "line": 124, "column": 27 } } }, "range": [ - 2880, - 2899 + 2952, + 2971 ], "loc": { "start": { - "line": 123, + "line": 124, "column": 8 }, "end": { - "line": 123, + "line": 124, "column": 27 } } }, "range": [ - 2880, - 2900 + 2952, + 2972 ], "loc": { "start": { - "line": 123, + "line": 124, "column": 8 }, "end": { - "line": 123, + "line": 124, "column": 28 } } } ], "range": [ - 2618, - 2906 + 2690, + 2978 ], "loc": { "start": { - "line": 116, + "line": 117, "column": 14 }, "end": { - "line": 124, + "line": 125, "column": 5 } } @@ -6127,16 +6273,16 @@ "generator": false, "expression": false, "range": [ - 2615, - 2906 + 2687, + 2978 ], "loc": { "start": { - "line": 116, + "line": 117, "column": 11 }, "end": { - "line": 124, + "line": 125, "column": 5 } } @@ -6144,16 +6290,16 @@ "kind": "method", "computed": false, "range": [ - 2608, - 2906 + 2680, + 2978 ], "loc": { "start": { - "line": 116, + "line": 117, "column": 4 }, "end": { - "line": 124, + "line": 125, "column": 5 } }, @@ -6162,16 +6308,16 @@ "type": "Block", "value": "*\n * Release Hash event subscriptions and clear fields\n ", "range": [ - 2535, - 2603 + 2607, + 2675 ], "loc": { "start": { - "line": 113, + "line": 114, "column": 4 }, "end": { - "line": 115, + "line": 116, "column": 7 } } @@ -6181,31 +6327,31 @@ } ], "range": [ - 486, - 2908 + 538, + 2980 ], "loc": { "start": { - "line": 22, + "line": 23, "column": 18 }, "end": { - "line": 125, + "line": 126, "column": 1 } } }, "range": [ - 475, - 2908 + 527, + 2980 ], "loc": { "start": { - "line": 22, + "line": 23, "column": 7 }, "end": { - "line": 125, + "line": 126, "column": 1 } }, @@ -6214,16 +6360,16 @@ "type": "Block", "value": "*\n * Manages state via URL hash changes\n *\n * @export\n * @class Hash\n ", "range": [ - 393, - 467 + 445, + 519 ], "loc": { "start": { - "line": 16, + "line": 17, "column": 0 }, "end": { - "line": 21, + "line": 22, "column": 3 } } @@ -6234,16 +6380,16 @@ "specifiers": [], "source": null, "range": [ - 468, - 2908 + 520, + 2980 ], "loc": { "start": { - "line": 22, + "line": 23, "column": 0 }, "end": { - "line": 125, + "line": 126, "column": 1 } }, @@ -6252,16 +6398,16 @@ "type": "Block", "value": "*\n * Manages state via URL hash changes\n *\n * @export\n * @class Hash\n ", "range": [ - 393, - 467 + 445, + 519 ], "loc": { "start": { - "line": 16, + "line": 17, "column": 0 }, "end": { - "line": 21, + "line": 22, "column": 3 } } @@ -6272,7 +6418,7 @@ "sourceType": "module", "range": [ 0, - 2908 + 2980 ], "loc": { "start": { @@ -6280,7 +6426,7 @@ "column": 0 }, "end": { - "line": 125, + "line": 126, "column": 1 } }, @@ -6289,16 +6435,16 @@ "type": "Block", "value": "*\n * Checks if browser has onhashchange event\n ", "range": [ - 184, - 235 + 236, + 287 ], "loc": { "start": { - "line": 8, + "line": 9, "column": 0 }, "end": { - "line": 10, + "line": 11, "column": 3 } } @@ -6307,16 +6453,16 @@ "type": "Block", "value": "*\n * Manages state via URL hash changes\n *\n * @export\n * @class Hash\n ", "range": [ - 393, - 467 + 445, + 519 ], "loc": { "start": { - "line": 16, + "line": 17, "column": 0 }, "end": { - "line": 21, + "line": 22, "column": 3 } } @@ -6325,16 +6471,16 @@ "type": "Block", "value": "*\n * Creates an instance of Hash\n *\n * @param {State} state Instance of State\n ", "range": [ - 493, - 592 + 545, + 644 ], "loc": { "start": { - "line": 24, + "line": 25, "column": 4 }, "end": { - "line": 28, + "line": 29, "column": 7 } } @@ -6343,16 +6489,16 @@ "type": "Block", "value": "*\n * State object\n * @type {State}\n ", "range": [ - 626, - 690 + 678, + 742 ], "loc": { "start": { - "line": 30, + "line": 31, "column": 8 }, "end": { - "line": 33, + "line": 34, "column": 11 } } @@ -6361,16 +6507,16 @@ "type": "Block", "value": "*\n * Cached URL hash\n * @type {String} Hash string\n * @private\n ", "range": [ - 728, - 828 + 780, + 880 ], "loc": { "start": { - "line": 36, + "line": 37, "column": 8 }, "end": { - "line": 40, + "line": 41, "column": 11 } } @@ -6379,16 +6525,16 @@ "type": "Block", "value": "*\n * Application event emitter instance\n * @type {Emitter}\n ", "range": [ - 868, - 956 + 920, + 1008 ], "loc": { "start": { - "line": 43, + "line": 44, "column": 8 }, "end": { - "line": 46, + "line": 47, "column": 11 } } @@ -6397,16 +6543,16 @@ "type": "Block", "value": "*\n * Bound sync wrapper for future use\n * @private\n ", "range": [ - 1004, - 1084 + 1056, + 1136 ], "loc": { "start": { - "line": 49, + "line": 50, "column": 8 }, "end": { - "line": 52, + "line": 53, "column": 11 } } @@ -6415,16 +6561,16 @@ "type": "Block", "value": "*\n * Initializes the Hash object\n ", "range": [ - 1127, - 1173 + 1179, + 1225 ], "loc": { "start": { - "line": 56, + "line": 57, "column": 4 }, "end": { - "line": 58, + "line": 59, "column": 7 } } @@ -6433,16 +6579,16 @@ "type": "Line", "value": "Store a bound sync wrapper", "range": [ - 1297, - 1325 + 1349, + 1377 ], "loc": { "start": { - "line": 65, + "line": 66, "column": 8 }, "end": { - "line": 65, + "line": 66, "column": 36 } } @@ -6451,16 +6597,16 @@ "type": "Block", "value": "*\n * Updates the URL hash based on a state change\n *\n * @param {State} state Instance of State\n ", "range": [ - 1573, - 1689 + 1625, + 1741 ], "loc": { "start": { - "line": 72, + "line": 73, "column": 4 }, "end": { - "line": 76, + "line": 77, "column": 7 } } @@ -6469,16 +6615,16 @@ "type": "Block", "value": "*\n * Converts a URL hash into a state JSON object\n *\n * @param {String} hash URL hash fragment\n * @returns {Object} JSON object\n ", "range": [ - 1898, - 2051 + 1970, + 2123 ], "loc": { "start": { - "line": 87, + "line": 88, "column": 4 }, "end": { - "line": 92, + "line": 93, "column": 7 } } @@ -6487,16 +6633,16 @@ "type": "Block", "value": "*\n * Applies current hash state to features\n ", "range": [ - 2240, - 2297 + 2312, + 2369 ], "loc": { "start": { - "line": 101, + "line": 102, "column": 4 }, "end": { - "line": 103, + "line": 104, "column": 7 } } @@ -6505,16 +6651,16 @@ "type": "Line", "value": " override current state with persisted one and sync features", "range": [ - 2418, - 2480 + 2490, + 2552 ], "loc": { "start": { - "line": 109, + "line": 110, "column": 8 }, "end": { - "line": 109, + "line": 110, "column": 70 } } @@ -6523,16 +6669,16 @@ "type": "Block", "value": "*\n * Release Hash event subscriptions and clear fields\n ", "range": [ - 2535, - 2603 + 2607, + 2675 ], "loc": { "start": { - "line": 113, + "line": 114, "column": 4 }, "end": { - "line": 115, + "line": 116, "column": 7 } } diff --git a/docs/class/src/emitter.js~Emitter.html b/docs/class/src/emitter.js~Emitter.html index b02d7e16..99946a7e 100644 --- a/docs/class/src/emitter.js~Emitter.html +++ b/docs/class/src/emitter.js~Emitter.html @@ -3,7 +3,7 @@ - Emitter | tablefilter v0.2.56 API Document + Emitter | tablefilter v0.2.57 API Document diff --git a/docs/class/src/extensions/advancedGrid/adapterEzEditTable.js~AdapterEzEditTable.html b/docs/class/src/extensions/advancedGrid/adapterEzEditTable.js~AdapterEzEditTable.html index 524492b8..95e3cda2 100644 --- a/docs/class/src/extensions/advancedGrid/adapterEzEditTable.js~AdapterEzEditTable.html +++ b/docs/class/src/extensions/advancedGrid/adapterEzEditTable.js~AdapterEzEditTable.html @@ -3,7 +3,7 @@ - AdapterEzEditTable | tablefilter v0.2.56 API Document + AdapterEzEditTable | tablefilter v0.2.57 API Document diff --git a/docs/class/src/extensions/colOps/colOps.js~ColOps.html b/docs/class/src/extensions/colOps/colOps.js~ColOps.html index e9a99bc9..8bc2fa78 100644 --- a/docs/class/src/extensions/colOps/colOps.js~ColOps.html +++ b/docs/class/src/extensions/colOps/colOps.js~ColOps.html @@ -3,7 +3,7 @@ - ColOps | tablefilter v0.2.56 API Document + ColOps | tablefilter v0.2.57 API Document diff --git a/docs/class/src/extensions/colsVisibility/colsVisibility.js~ColsVisibility.html b/docs/class/src/extensions/colsVisibility/colsVisibility.js~ColsVisibility.html index 4e20b3f4..616659ea 100644 --- a/docs/class/src/extensions/colsVisibility/colsVisibility.js~ColsVisibility.html +++ b/docs/class/src/extensions/colsVisibility/colsVisibility.js~ColsVisibility.html @@ -3,7 +3,7 @@ - ColsVisibility | tablefilter v0.2.56 API Document + ColsVisibility | tablefilter v0.2.57 API Document diff --git a/docs/class/src/extensions/filtersVisibility/filtersVisibility.js~FiltersVisibility.html b/docs/class/src/extensions/filtersVisibility/filtersVisibility.js~FiltersVisibility.html index bac715d2..af656ef8 100644 --- a/docs/class/src/extensions/filtersVisibility/filtersVisibility.js~FiltersVisibility.html +++ b/docs/class/src/extensions/filtersVisibility/filtersVisibility.js~FiltersVisibility.html @@ -3,7 +3,7 @@ - FiltersVisibility | tablefilter v0.2.56 API Document + FiltersVisibility | tablefilter v0.2.57 API Document diff --git a/docs/class/src/extensions/sort/adapterSortabletable.js~AdapterSortableTable.html b/docs/class/src/extensions/sort/adapterSortabletable.js~AdapterSortableTable.html index 5b4a656c..f7301f81 100644 --- a/docs/class/src/extensions/sort/adapterSortabletable.js~AdapterSortableTable.html +++ b/docs/class/src/extensions/sort/adapterSortabletable.js~AdapterSortableTable.html @@ -3,7 +3,7 @@ - AdapterSortableTable | tablefilter v0.2.56 API Document + AdapterSortableTable | tablefilter v0.2.57 API Document diff --git a/docs/class/src/feature.js~Feature.html b/docs/class/src/feature.js~Feature.html index 972b9b38..bc67d57a 100644 --- a/docs/class/src/feature.js~Feature.html +++ b/docs/class/src/feature.js~Feature.html @@ -3,7 +3,7 @@ - Feature | tablefilter v0.2.56 API Document + Feature | tablefilter v0.2.57 API Document diff --git a/docs/class/src/modules/alternateRows.js~AlternateRows.html b/docs/class/src/modules/alternateRows.js~AlternateRows.html index 727e6f9c..b1ca159a 100644 --- a/docs/class/src/modules/alternateRows.js~AlternateRows.html +++ b/docs/class/src/modules/alternateRows.js~AlternateRows.html @@ -3,7 +3,7 @@ - AlternateRows | tablefilter v0.2.56 API Document + AlternateRows | tablefilter v0.2.57 API Document diff --git a/docs/class/src/modules/checkList.js~CheckList.html b/docs/class/src/modules/checkList.js~CheckList.html index d99c7ece..8cd76998 100644 --- a/docs/class/src/modules/checkList.js~CheckList.html +++ b/docs/class/src/modules/checkList.js~CheckList.html @@ -3,7 +3,7 @@ - CheckList | tablefilter v0.2.56 API Document + CheckList | tablefilter v0.2.57 API Document diff --git a/docs/class/src/modules/clearButton.js~ClearButton.html b/docs/class/src/modules/clearButton.js~ClearButton.html index 0d50f9a5..e3aee167 100644 --- a/docs/class/src/modules/clearButton.js~ClearButton.html +++ b/docs/class/src/modules/clearButton.js~ClearButton.html @@ -3,7 +3,7 @@ - ClearButton | tablefilter v0.2.56 API Document + ClearButton | tablefilter v0.2.57 API Document diff --git a/docs/class/src/modules/dropdown.js~Dropdown.html b/docs/class/src/modules/dropdown.js~Dropdown.html index 40329c0f..d4d3d58c 100644 --- a/docs/class/src/modules/dropdown.js~Dropdown.html +++ b/docs/class/src/modules/dropdown.js~Dropdown.html @@ -3,7 +3,7 @@ - Dropdown | tablefilter v0.2.56 API Document + Dropdown | tablefilter v0.2.57 API Document diff --git a/docs/class/src/modules/gridLayout.js~GridLayout.html b/docs/class/src/modules/gridLayout.js~GridLayout.html index 9ec4c423..fe3dd592 100644 --- a/docs/class/src/modules/gridLayout.js~GridLayout.html +++ b/docs/class/src/modules/gridLayout.js~GridLayout.html @@ -3,7 +3,7 @@ - GridLayout | tablefilter v0.2.56 API Document + GridLayout | tablefilter v0.2.57 API Document diff --git a/docs/class/src/modules/hash.js~Hash.html b/docs/class/src/modules/hash.js~Hash.html index 28f0a830..b70fb35b 100644 --- a/docs/class/src/modules/hash.js~Hash.html +++ b/docs/class/src/modules/hash.js~Hash.html @@ -3,7 +3,7 @@ - Hash | tablefilter v0.2.56 API Document + Hash | tablefilter v0.2.57 API Document @@ -115,13 +115,13 @@
-
import {Hash} from 'tablefilter/src/modules/hash.js'
+
import {Hash} from 'tablefilter/src/modules/hash.js'
public class - | source + | source
@@ -402,7 +402,7 @@ - source + source @@ -463,7 +463,7 @@ - source + source @@ -504,7 +504,7 @@ - source + source @@ -548,7 +548,7 @@ - source + source @@ -589,7 +589,7 @@ - source + source @@ -630,7 +630,7 @@ - source + source @@ -699,7 +699,7 @@ - source + source @@ -740,7 +740,7 @@ - source + source diff --git a/docs/class/src/modules/help.js~Help.html b/docs/class/src/modules/help.js~Help.html index 54fa0efe..fdf54c25 100644 --- a/docs/class/src/modules/help.js~Help.html +++ b/docs/class/src/modules/help.js~Help.html @@ -3,7 +3,7 @@ - Help | tablefilter v0.2.56 API Document + Help | tablefilter v0.2.57 API Document diff --git a/docs/class/src/modules/highlightKeywords.js~HighlightKeyword.html b/docs/class/src/modules/highlightKeywords.js~HighlightKeyword.html index 0f2c1ca6..8eac01f8 100644 --- a/docs/class/src/modules/highlightKeywords.js~HighlightKeyword.html +++ b/docs/class/src/modules/highlightKeywords.js~HighlightKeyword.html @@ -3,7 +3,7 @@ - HighlightKeyword | tablefilter v0.2.56 API Document + HighlightKeyword | tablefilter v0.2.57 API Document diff --git a/docs/class/src/modules/loader.js~Loader.html b/docs/class/src/modules/loader.js~Loader.html index ea12a109..ead51f92 100644 --- a/docs/class/src/modules/loader.js~Loader.html +++ b/docs/class/src/modules/loader.js~Loader.html @@ -3,7 +3,7 @@ - Loader | tablefilter v0.2.56 API Document + Loader | tablefilter v0.2.57 API Document diff --git a/docs/class/src/modules/noResults.js~NoResults.html b/docs/class/src/modules/noResults.js~NoResults.html index 163ed9ee..39dc5532 100644 --- a/docs/class/src/modules/noResults.js~NoResults.html +++ b/docs/class/src/modules/noResults.js~NoResults.html @@ -3,7 +3,7 @@ - NoResults | tablefilter v0.2.56 API Document + NoResults | tablefilter v0.2.57 API Document diff --git a/docs/class/src/modules/paging.js~Paging.html b/docs/class/src/modules/paging.js~Paging.html index 667c1ffa..2a5582d7 100644 --- a/docs/class/src/modules/paging.js~Paging.html +++ b/docs/class/src/modules/paging.js~Paging.html @@ -3,7 +3,7 @@ - Paging | tablefilter v0.2.56 API Document + Paging | tablefilter v0.2.57 API Document diff --git a/docs/class/src/modules/popupFilter.js~PopupFilter.html b/docs/class/src/modules/popupFilter.js~PopupFilter.html index 4751db01..a7118c52 100644 --- a/docs/class/src/modules/popupFilter.js~PopupFilter.html +++ b/docs/class/src/modules/popupFilter.js~PopupFilter.html @@ -3,7 +3,7 @@ - PopupFilter | tablefilter v0.2.56 API Document + PopupFilter | tablefilter v0.2.57 API Document diff --git a/docs/class/src/modules/rowsCounter.js~RowsCounter.html b/docs/class/src/modules/rowsCounter.js~RowsCounter.html index df20e50b..75ad8945 100644 --- a/docs/class/src/modules/rowsCounter.js~RowsCounter.html +++ b/docs/class/src/modules/rowsCounter.js~RowsCounter.html @@ -3,7 +3,7 @@ - RowsCounter | tablefilter v0.2.56 API Document + RowsCounter | tablefilter v0.2.57 API Document diff --git a/docs/class/src/modules/state.js~State.html b/docs/class/src/modules/state.js~State.html index fae7b949..8811ef56 100644 --- a/docs/class/src/modules/state.js~State.html +++ b/docs/class/src/modules/state.js~State.html @@ -3,7 +3,7 @@ - State | tablefilter v0.2.56 API Document + State | tablefilter v0.2.57 API Document diff --git a/docs/class/src/modules/statusBar.js~StatusBar.html b/docs/class/src/modules/statusBar.js~StatusBar.html index 66c029f8..53476b90 100644 --- a/docs/class/src/modules/statusBar.js~StatusBar.html +++ b/docs/class/src/modules/statusBar.js~StatusBar.html @@ -3,7 +3,7 @@ - StatusBar | tablefilter v0.2.56 API Document + StatusBar | tablefilter v0.2.57 API Document diff --git a/docs/class/src/modules/storage.js~Storage.html b/docs/class/src/modules/storage.js~Storage.html index d76d1eb9..3a407fea 100644 --- a/docs/class/src/modules/storage.js~Storage.html +++ b/docs/class/src/modules/storage.js~Storage.html @@ -3,7 +3,7 @@ - Storage | tablefilter v0.2.56 API Document + Storage | tablefilter v0.2.57 API Document diff --git a/docs/class/src/tablefilter.js~TableFilter.html b/docs/class/src/tablefilter.js~TableFilter.html index 4fd841c1..c6049f03 100644 --- a/docs/class/src/tablefilter.js~TableFilter.html +++ b/docs/class/src/tablefilter.js~TableFilter.html @@ -3,7 +3,7 @@ - TableFilter | tablefilter v0.2.56 API Document + TableFilter | tablefilter v0.2.57 API Document diff --git a/docs/dump.json b/docs/dump.json index dcaf2c2f..df433d6a 100644 --- a/docs/dump.json +++ b/docs/dump.json @@ -8466,7 +8466,7 @@ "access": null, "description": null, "lineNumber": 1, - "content": "import {addEvt, removeEvt} from '../event';\nimport {root} from '../root';\n\nconst JSON = root.JSON;\nconst location = root.location;\nconst decodeURIComponent = root.decodeURIComponent;\n\n/**\n * Checks if browser has onhashchange event\n */\nexport const hasHashChange = () => {\n let docMode = root.documentMode;\n return ('onhashchange' in root) && (docMode === undefined || docMode > 7);\n};\n\n/**\n * Manages state via URL hash changes\n *\n * @export\n * @class Hash\n */\nexport class Hash {\n\n /**\n * Creates an instance of Hash\n *\n * @param {State} state Instance of State\n */\n constructor(state) {\n /**\n * State object\n * @type {State}\n */\n this.state = state;\n\n /**\n * Cached URL hash\n * @type {String} Hash string\n * @private\n */\n this.lastHash = null;\n\n /**\n * Application event emitter instance\n * @type {Emitter}\n */\n this.emitter = state.emitter;\n\n /**\n * Bound sync wrapper for future use\n * @private\n */\n this.boundSync = null;\n }\n\n /**\n * Initializes the Hash object\n */\n init() {\n if (!hasHashChange()) {\n return;\n }\n\n this.lastHash = location.hash;\n //Store a bound sync wrapper\n this.boundSync = this.sync.bind(this);\n this.emitter.on(['state-changed'], (tf, state) => this.update(state));\n this.emitter.on(['initialized'], this.boundSync);\n addEvt(root, 'hashchange', this.boundSync);\n }\n\n /**\n * Updates the URL hash based on a state change\n *\n * @param {State} state Instance of State\n */\n update(state) {\n let hash = `#${JSON.stringify(state)}`;\n if (this.lastHash === hash) {\n return;\n }\n\n location.hash = hash;\n this.lastHash = hash;\n }\n\n /**\n * Converts a URL hash into a state JSON object\n *\n * @param {String} hash URL hash fragment\n * @returns {Object} JSON object\n */\n parse(hash) {\n if (hash.indexOf('#') === -1) {\n return null;\n }\n hash = hash.substr(1);\n return JSON.parse(decodeURIComponent(hash));\n }\n\n /**\n * Applies current hash state to features\n */\n sync() {\n let state = this.parse(location.hash);\n if (!state) {\n return;\n }\n // override current state with persisted one and sync features\n this.state.overrideAndSync(state);\n }\n\n /**\n * Release Hash event subscriptions and clear fields\n */\n destroy() {\n this.emitter.off(['state-changed'], (tf, state) => this.update(state));\n this.emitter.off(['initialized'], this.boundSync);\n removeEvt(root, 'hashchange', this.boundSync);\n\n this.state = null;\n this.lastHash = null;\n this.emitter = null;\n }\n}\n" + "content": "import {addEvt, removeEvt} from '../event';\nimport {root} from '../root';\n\nconst JSON = root.JSON;\nconst location = root.location;\nconst decodeURIComponent = root.decodeURIComponent;\nconst encodeURIComponent = root.encodeURIComponent;\n\n/**\n * Checks if browser has onhashchange event\n */\nexport const hasHashChange = () => {\n let docMode = root.documentMode;\n return ('onhashchange' in root) && (docMode === undefined || docMode > 7);\n};\n\n/**\n * Manages state via URL hash changes\n *\n * @export\n * @class Hash\n */\nexport class Hash {\n\n /**\n * Creates an instance of Hash\n *\n * @param {State} state Instance of State\n */\n constructor(state) {\n /**\n * State object\n * @type {State}\n */\n this.state = state;\n\n /**\n * Cached URL hash\n * @type {String} Hash string\n * @private\n */\n this.lastHash = null;\n\n /**\n * Application event emitter instance\n * @type {Emitter}\n */\n this.emitter = state.emitter;\n\n /**\n * Bound sync wrapper for future use\n * @private\n */\n this.boundSync = null;\n }\n\n /**\n * Initializes the Hash object\n */\n init() {\n if (!hasHashChange()) {\n return;\n }\n\n this.lastHash = location.hash;\n //Store a bound sync wrapper\n this.boundSync = this.sync.bind(this);\n this.emitter.on(['state-changed'], (tf, state) => this.update(state));\n this.emitter.on(['initialized'], this.boundSync);\n addEvt(root, 'hashchange', this.boundSync);\n }\n\n /**\n * Updates the URL hash based on a state change\n *\n * @param {State} state Instance of State\n */\n update(state) {\n let hash = `#${encodeURIComponent(JSON.stringify(state))}`;\n if (this.lastHash === hash) {\n return;\n }\n\n location.hash = hash;\n this.lastHash = hash;\n }\n\n /**\n * Converts a URL hash into a state JSON object\n *\n * @param {String} hash URL hash fragment\n * @returns {Object} JSON object\n */\n parse(hash) {\n if (hash.indexOf('#') === -1) {\n return null;\n }\n hash = hash.substr(1);\n return JSON.parse(decodeURIComponent(hash));\n }\n\n /**\n * Applies current hash state to features\n */\n sync() {\n let state = this.parse(location.hash);\n if (!state) {\n return;\n }\n // override current state with persisted one and sync features\n this.state.overrideAndSync(state);\n }\n\n /**\n * Release Hash event subscriptions and clear fields\n */\n destroy() {\n this.emitter.off(['state-changed'], (tf, state) => this.update(state));\n this.emitter.off(['initialized'], this.boundSync);\n removeEvt(root, 'hashchange', this.boundSync);\n\n this.state = null;\n this.lastHash = null;\n this.emitter = null;\n }\n}\n" }, { "__docId__": 391, @@ -8536,15 +8536,16 @@ "kind": "variable", "static": true, "variation": null, - "name": "hasHashChange", + "name": "encodeURIComponent", "memberof": "src/modules/hash.js", - "longname": "src/modules/hash.js~hasHashChange", + "longname": "src/modules/hash.js~encodeURIComponent", "access": null, - "export": true, + "export": false, "importPath": "tablefilter/src/modules/hash.js", - "importStyle": "{hasHashChange}", - "description": "Checks if browser has onhashchange event", - "lineNumber": 11, + "importStyle": null, + "description": null, + "lineNumber": 7, + "undocument": true, "type": { "types": [ "*" @@ -8553,6 +8554,26 @@ }, { "__docId__": 395, + "kind": "variable", + "static": true, + "variation": null, + "name": "hasHashChange", + "memberof": "src/modules/hash.js", + "longname": "src/modules/hash.js~hasHashChange", + "access": null, + "export": true, + "importPath": "tablefilter/src/modules/hash.js", + "importStyle": "{hasHashChange}", + "description": "Checks if browser has onhashchange event", + "lineNumber": 12, + "type": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 396, "kind": "class", "static": true, "variation": null, @@ -8564,7 +8585,7 @@ "importPath": "tablefilter/src/modules/hash.js", "importStyle": "{Hash}", "description": "Manages state via URL hash changes", - "lineNumber": 22, + "lineNumber": 23, "unknown": [ { "tagName": "@export", @@ -8578,7 +8599,7 @@ "interface": false }, { - "__docId__": 396, + "__docId__": 397, "kind": "constructor", "static": false, "variation": null, @@ -8587,7 +8608,7 @@ "longname": "src/modules/hash.js~Hash#constructor", "access": null, "description": "Creates an instance of Hash", - "lineNumber": 29, + "lineNumber": 30, "params": [ { "nullable": null, @@ -8603,7 +8624,7 @@ "generator": false }, { - "__docId__": 397, + "__docId__": 398, "kind": "member", "static": false, "variation": null, @@ -8612,7 +8633,7 @@ "longname": "src/modules/hash.js~Hash#state", "access": null, "description": "State object", - "lineNumber": 34, + "lineNumber": 35, "type": { "nullable": null, "types": [ @@ -8623,7 +8644,7 @@ } }, { - "__docId__": 398, + "__docId__": 399, "kind": "member", "static": false, "variation": null, @@ -8632,7 +8653,7 @@ "longname": "src/modules/hash.js~Hash#lastHash", "access": "private", "description": "Cached URL hash", - "lineNumber": 41, + "lineNumber": 42, "type": { "nullable": null, "types": [ @@ -8643,7 +8664,7 @@ } }, { - "__docId__": 399, + "__docId__": 400, "kind": "member", "static": false, "variation": null, @@ -8652,7 +8673,7 @@ "longname": "src/modules/hash.js~Hash#emitter", "access": null, "description": "Application event emitter instance", - "lineNumber": 47, + "lineNumber": 48, "type": { "nullable": null, "types": [ @@ -8663,7 +8684,7 @@ } }, { - "__docId__": 400, + "__docId__": 401, "kind": "member", "static": false, "variation": null, @@ -8672,7 +8693,7 @@ "longname": "src/modules/hash.js~Hash#boundSync", "access": "private", "description": "Bound sync wrapper for future use", - "lineNumber": 53, + "lineNumber": 54, "type": { "types": [ "*" @@ -8680,7 +8701,7 @@ } }, { - "__docId__": 401, + "__docId__": 402, "kind": "method", "static": false, "variation": null, @@ -8689,12 +8710,12 @@ "longname": "src/modules/hash.js~Hash#init", "access": null, "description": "Initializes the Hash object", - "lineNumber": 59, + "lineNumber": 60, "params": [], "generator": false }, { - "__docId__": 402, + "__docId__": 403, "kind": "member", "static": false, "variation": null, @@ -8703,25 +8724,7 @@ "longname": "src/modules/hash.js~Hash#lastHash", "access": null, "description": null, - "lineNumber": 64, - "undocument": true, - "type": { - "types": [ - "*" - ] - } - }, - { - "__docId__": 403, - "kind": "member", - "static": false, - "variation": null, - "name": "boundSync", - "memberof": "src/modules/hash.js~Hash", - "longname": "src/modules/hash.js~Hash#boundSync", - "access": null, - "description": null, - "lineNumber": 66, + "lineNumber": 65, "undocument": true, "type": { "types": [ @@ -8731,6 +8734,24 @@ }, { "__docId__": 404, + "kind": "member", + "static": false, + "variation": null, + "name": "boundSync", + "memberof": "src/modules/hash.js~Hash", + "longname": "src/modules/hash.js~Hash#boundSync", + "access": null, + "description": null, + "lineNumber": 67, + "undocument": true, + "type": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 405, "kind": "method", "static": false, "variation": null, @@ -8739,7 +8760,7 @@ "longname": "src/modules/hash.js~Hash#update", "access": null, "description": "Updates the URL hash based on a state change", - "lineNumber": 77, + "lineNumber": 78, "params": [ { "nullable": null, @@ -8755,7 +8776,7 @@ "generator": false }, { - "__docId__": 405, + "__docId__": 406, "kind": "member", "static": false, "variation": null, @@ -8764,7 +8785,7 @@ "longname": "src/modules/hash.js~Hash#lastHash", "access": null, "description": null, - "lineNumber": 84, + "lineNumber": 85, "undocument": true, "type": { "types": [ @@ -8773,7 +8794,7 @@ } }, { - "__docId__": 406, + "__docId__": 407, "kind": "method", "static": false, "variation": null, @@ -8782,7 +8803,7 @@ "longname": "src/modules/hash.js~Hash#parse", "access": null, "description": "Converts a URL hash into a state JSON object", - "lineNumber": 93, + "lineNumber": 94, "unknown": [ { "tagName": "@returns", @@ -8812,7 +8833,7 @@ "generator": false }, { - "__docId__": 407, + "__docId__": 408, "kind": "method", "static": false, "variation": null, @@ -8821,12 +8842,12 @@ "longname": "src/modules/hash.js~Hash#sync", "access": null, "description": "Applies current hash state to features", - "lineNumber": 104, + "lineNumber": 105, "params": [], "generator": false }, { - "__docId__": 408, + "__docId__": 409, "kind": "method", "static": false, "variation": null, @@ -8835,36 +8856,18 @@ "longname": "src/modules/hash.js~Hash#destroy", "access": null, "description": "Release Hash event subscriptions and clear fields", - "lineNumber": 116, + "lineNumber": 117, "params": [], "generator": false }, - { - "__docId__": 409, - "kind": "member", - "static": false, - "variation": null, - "name": "state", - "memberof": "src/modules/hash.js~Hash", - "longname": "src/modules/hash.js~Hash#state", - "access": null, - "description": null, - "lineNumber": 121, - "undocument": true, - "type": { - "types": [ - "*" - ] - } - }, { "__docId__": 410, "kind": "member", "static": false, "variation": null, - "name": "lastHash", + "name": "state", "memberof": "src/modules/hash.js~Hash", - "longname": "src/modules/hash.js~Hash#lastHash", + "longname": "src/modules/hash.js~Hash#state", "access": null, "description": null, "lineNumber": 122, @@ -8880,9 +8883,9 @@ "kind": "member", "static": false, "variation": null, - "name": "emitter", + "name": "lastHash", "memberof": "src/modules/hash.js~Hash", - "longname": "src/modules/hash.js~Hash#emitter", + "longname": "src/modules/hash.js~Hash#lastHash", "access": null, "description": null, "lineNumber": 123, @@ -8895,6 +8898,24 @@ }, { "__docId__": 412, + "kind": "member", + "static": false, + "variation": null, + "name": "emitter", + "memberof": "src/modules/hash.js~Hash", + "longname": "src/modules/hash.js~Hash#emitter", + "access": null, + "description": null, + "lineNumber": 124, + "undocument": true, + "type": { + "types": [ + "*" + ] + } + }, + { + "__docId__": 413, "kind": "file", "static": true, "variation": null, @@ -8907,7 +8928,7 @@ "content": "import {Feature} from '../feature';\nimport {createElm, createText, elm, removeElm} from '../dom';\nimport {addEvt} from '../event';\nimport {NONE} from '../const';\n\nconst WIKI_URL = 'https://github.com/koalyptus/TableFilter/wiki/' +\n '4.-Filter-operators';\nconst WEBSITE_URL = 'http://koalyptus.github.io/TableFilter/';\n\n/**\n * Help UI component\n */\nexport class Help extends Feature {\n\n /**\n * Creates an instance of Help.\n * @param {TableFilter} tf TableFilter instance\n */\n constructor(tf) {\n super(tf, 'help');\n\n var f = this.config;\n\n /**\n * ID of main custom container element\n * @type {String}\n */\n this.tgtId = f.help_instructions_target_id || null;\n\n /**\n * ID of custom container element for instructions\n * @type {String}\n */\n this.contTgtId = f.help_instructions_container_target_id ||\n null;\n\n /**\n * Instructions text (accepts HTML)\n * @type {String}\n */\n this.instrText = f.help_instructions_text ?\n f.help_instructions_text :\n 'Use the filters above each column to filter and limit table ' +\n 'data. Advanced searches can be performed by using the following ' +\n 'operators:
<, <=, >, ' +\n '>=, =, *, !, {, }, ' +\n '||,&&, [empty], [nonempty], ' +\n 'rgx:
' +\n 'Learn more
';\n\n /**\n * Instructions HTML\n * @type {String}\n */\n this.instrHtml = f.help_instructions_html || null;\n\n /**\n * Help button text ('?')\n * @type {String}\n */\n this.btnText = f.help_instructions_btn_text || '?';\n\n /**\n * Custom help button HTML\n * @type {String}\n */\n this.btnHtml = f.help_instructions_btn_html || null;\n\n /**\n * Css class for help button\n * @type {String}\n */\n this.btnCssClass = f.help_instructions_btn_css_class || 'helpBtn';\n\n /**\n * Css class for help container element\n * @type {String}\n */\n this.contCssClass = f.help_instructions_container_css_class ||\n 'helpCont';\n\n /**\n * Stores button DOM element\n * @type {DOMElement}\n */\n this.btn = null;\n\n /**\n * Stores help container DOM element\n * @type {DOMElement}\n */\n this.cont = null;\n\n /**\n * Default HTML appended to instructions text\n * @type {String}\n */\n this.defaultHtml = '

TableFilter ' +\n 'v' + tf.version + '

' + '' + WEBSITE_URL + '' +\n '
©2015-' + tf.year + ' {AUTHOR}' +\n '
' +\n 'Close
';\n\n /**\n * Prefix for help main container ID\n * @type {String}\n * @private\n */\n this.prfxHelpSpan = 'helpSpan_';\n\n /**\n * Prefix for help instructions container ID\n * @type {String}\n * @private\n */\n this.prfxHelpDiv = 'helpDiv_';\n\n this.emitter.on(['init-help'], () => this.init());\n }\n\n /**\n * Initialise Help instance\n */\n init() {\n if (this.initialized) {\n return;\n }\n\n var tf = this.tf;\n\n var helpspan = createElm('span', ['id', this.prfxHelpSpan + tf.id]);\n var helpdiv = createElm('div', ['id', this.prfxHelpDiv + tf.id]);\n\n //help button is added to defined element\n if (!this.tgtId) {\n tf.setToolbar();\n }\n var targetEl = !this.tgtId ? tf.rDiv : elm(this.tgtId);\n targetEl.appendChild(helpspan);\n\n var divContainer = !this.contTgtId ? helpspan : elm(this.contTgtId);\n\n if (!this.btnHtml) {\n divContainer.appendChild(helpdiv);\n var helplink = createElm('a', ['href', 'javascript:void(0);']);\n helplink.className = this.btnCssClass;\n helplink.appendChild(createText(this.btnText));\n helpspan.appendChild(helplink);\n addEvt(helplink, 'click', () => this.toggle());\n } else {\n helpspan.innerHTML = this.btnHtml;\n var helpEl = helpspan.firstChild;\n addEvt(helpEl, 'click', () => this.toggle());\n divContainer.appendChild(helpdiv);\n }\n\n if (!this.instrHtml) {\n helpdiv.innerHTML = this.instrText;\n helpdiv.className = this.contCssClass;\n addEvt(helpdiv, 'dblclick', () => this.toggle());\n } else {\n if (this.contTgtId) {\n divContainer.appendChild(helpdiv);\n }\n helpdiv.innerHTML = this.instrHtml;\n if (!this.contTgtId) {\n helpdiv.className = this.contCssClass;\n addEvt(helpdiv, 'dblclick', () => this.toggle());\n }\n }\n helpdiv.innerHTML += this.defaultHtml;\n addEvt(helpdiv, 'click', () => this.toggle());\n\n this.cont = helpdiv;\n this.btn = helpspan;\n /**\n * @inherited\n */\n this.initialized = true;\n }\n\n /**\n * Toggle help pop-up\n */\n toggle() {\n // check only if explicitily set to false as in this case undefined\n // signifies the help feature is enabled by default\n if (this.enabled === false) {\n return;\n }\n var divDisplay = this.cont.style.display;\n if (divDisplay === '' || divDisplay === NONE) {\n this.cont.style.display = 'inline';\n } else {\n this.cont.style.display = NONE;\n }\n }\n\n /**\n * Remove help UI\n */\n destroy() {\n if (!this.initialized) {\n return;\n }\n removeElm(this.btn);\n this.btn = null;\n if (!this.cont) {\n return;\n }\n removeElm(this.cont);\n this.cont = null;\n this.initialized = false;\n }\n\n}\n" }, { - "__docId__": 413, + "__docId__": 414, "kind": "variable", "static": true, "variation": null, @@ -8928,7 +8949,7 @@ } }, { - "__docId__": 414, + "__docId__": 415, "kind": "variable", "static": true, "variation": null, @@ -8949,7 +8970,7 @@ } }, { - "__docId__": 415, + "__docId__": 416, "kind": "class", "static": true, "variation": null, @@ -8968,7 +8989,7 @@ ] }, { - "__docId__": 416, + "__docId__": 417, "kind": "constructor", "static": false, "variation": null, @@ -8993,7 +9014,7 @@ "generator": false }, { - "__docId__": 417, + "__docId__": 418, "kind": "member", "static": false, "variation": null, @@ -9013,7 +9034,7 @@ } }, { - "__docId__": 418, + "__docId__": 419, "kind": "member", "static": false, "variation": null, @@ -9033,7 +9054,7 @@ } }, { - "__docId__": 419, + "__docId__": 420, "kind": "member", "static": false, "variation": null, @@ -9053,7 +9074,7 @@ } }, { - "__docId__": 420, + "__docId__": 421, "kind": "member", "static": false, "variation": null, @@ -9073,7 +9094,7 @@ } }, { - "__docId__": 421, + "__docId__": 422, "kind": "member", "static": false, "variation": null, @@ -9093,7 +9114,7 @@ } }, { - "__docId__": 422, + "__docId__": 423, "kind": "member", "static": false, "variation": null, @@ -9113,7 +9134,7 @@ } }, { - "__docId__": 423, + "__docId__": 424, "kind": "member", "static": false, "variation": null, @@ -9133,7 +9154,7 @@ } }, { - "__docId__": 424, + "__docId__": 425, "kind": "member", "static": false, "variation": null, @@ -9153,7 +9174,7 @@ } }, { - "__docId__": 425, + "__docId__": 426, "kind": "member", "static": false, "variation": null, @@ -9173,7 +9194,7 @@ } }, { - "__docId__": 426, + "__docId__": 427, "kind": "member", "static": false, "variation": null, @@ -9193,7 +9214,7 @@ } }, { - "__docId__": 427, + "__docId__": 428, "kind": "member", "static": false, "variation": null, @@ -9213,7 +9234,7 @@ } }, { - "__docId__": 428, + "__docId__": 429, "kind": "member", "static": false, "variation": null, @@ -9233,7 +9254,7 @@ } }, { - "__docId__": 429, + "__docId__": 430, "kind": "member", "static": false, "variation": null, @@ -9253,7 +9274,7 @@ } }, { - "__docId__": 430, + "__docId__": 431, "kind": "method", "static": false, "variation": null, @@ -9267,7 +9288,7 @@ "generator": false }, { - "__docId__": 431, + "__docId__": 432, "kind": "member", "static": false, "variation": null, @@ -9285,7 +9306,7 @@ } }, { - "__docId__": 432, + "__docId__": 433, "kind": "member", "static": false, "variation": null, @@ -9303,7 +9324,7 @@ } }, { - "__docId__": 433, + "__docId__": 434, "kind": "member", "static": false, "variation": null, @@ -9326,7 +9347,7 @@ } }, { - "__docId__": 434, + "__docId__": 435, "kind": "method", "static": false, "variation": null, @@ -9340,7 +9361,7 @@ "generator": false }, { - "__docId__": 435, + "__docId__": 436, "kind": "method", "static": false, "variation": null, @@ -9354,7 +9375,7 @@ "generator": false }, { - "__docId__": 436, + "__docId__": 437, "kind": "member", "static": false, "variation": null, @@ -9372,7 +9393,7 @@ } }, { - "__docId__": 437, + "__docId__": 438, "kind": "member", "static": false, "variation": null, @@ -9390,7 +9411,7 @@ } }, { - "__docId__": 438, + "__docId__": 439, "kind": "member", "static": false, "variation": null, @@ -9408,7 +9429,7 @@ } }, { - "__docId__": 439, + "__docId__": 440, "kind": "file", "static": true, "variation": null, @@ -9421,7 +9442,7 @@ "content": "import {createText, createElm, getText} from '../dom';\nimport {isArray} from '../types';\n\n/**\n * Highlight matched keywords upon filtering\n *\n * @export\n * @class HighlightKeyword\n */\nexport class HighlightKeyword {\n\n /**\n * Creates an instance of HighlightKeyword\n * @param {TableFilter} tf TableFilter instance\n */\n constructor(tf) {\n let f = tf.config();\n\n /**\n * Css class for highlighted term\n * @type {String}\n */\n this.highlightCssClass = f.highlight_css_class || 'keyword';\n\n /**\n * TableFilter instance\n * @type {TableFilter}\n */\n this.tf = tf;\n\n /**\n * TableFilter's emitter instance\n * @type {Emitter}\n */\n this.emitter = tf.emitter;\n }\n\n /**\n * Initializes HighlightKeyword instance\n */\n init() {\n this.emitter.on(\n ['before-filtering', 'destroy'],\n () => this.unhighlightAll()\n );\n this.emitter.on(\n ['highlight-keyword'],\n (tf, cell, word) =>\n this.highlight(cell, word, this.highlightCssClass)\n );\n }\n\n /**\n * Highlight occurences of searched term in passed node\n * @param {Node} node\n * @param {String} word Searched term\n * @param {String} cssClass Css class name\n *\n * TODO: refactor this method\n */\n highlight(node, word, cssClass) {\n // Iterate into this nodes childNodes\n if (node.hasChildNodes) {\n let children = node.childNodes;\n for (let i = 0; i < children.length; i++) {\n this.highlight(children[i], word, cssClass);\n }\n }\n\n if (node.nodeType === 3) {\n let tempNodeVal = node.nodeValue.toLowerCase();\n let tempWordVal = word.toLowerCase();\n if (tempNodeVal.indexOf(tempWordVal) !== -1) {\n let pn = node.parentNode;\n if (pn && pn.className !== cssClass) {\n // word not highlighted yet\n let nv = node.nodeValue,\n ni = tempNodeVal.indexOf(tempWordVal),\n // Create a load of replacement nodes\n before = createText(nv.substr(0, ni)),\n docWordVal = nv.substr(ni, word.length),\n after = createText(nv.substr(ni + word.length)),\n hiwordtext = createText(docWordVal),\n hiword = createElm('span');\n hiword.className = cssClass;\n hiword.appendChild(hiwordtext);\n pn.insertBefore(before, node);\n pn.insertBefore(hiword, node);\n pn.insertBefore(after, node);\n pn.removeChild(node);\n }\n }\n }\n }\n\n /**\n * Removes highlight to nodes matching passed string\n * @param {String} word\n * @param {String} cssClass Css class to remove\n */\n unhighlight(word, cssClass) {\n let highlightedNodes = this.tf.tbl.querySelectorAll(`.${cssClass}`);\n for (let i = 0; i < highlightedNodes.length; i++) {\n let n = highlightedNodes[i];\n let nodeVal = getText(n),\n tempNodeVal = nodeVal.toLowerCase(),\n tempWordVal = word.toLowerCase();\n\n if (tempNodeVal.indexOf(tempWordVal) !== -1) {\n n.parentNode.replaceChild(createText(nodeVal), n);\n }\n }\n }\n\n /**\n * Clear all occurrences of highlighted nodes\n */\n unhighlightAll() {\n if (!this.tf.highlightKeywords) {\n return;\n }\n // iterate filters values to unhighlight all values\n this.tf.getFiltersValue().forEach((val) => {\n if (isArray(val)) {\n val.forEach((item) =>\n this.unhighlight(item, this.highlightCssClass));\n } else {\n this.unhighlight(val, this.highlightCssClass);\n }\n });\n }\n\n /**\n * Remove feature\n */\n destroy() {\n this.emitter.off(\n ['before-filtering', 'destroy'],\n () => this.unhighlightAll()\n );\n this.emitter.off(\n ['highlight-keyword'],\n (tf, cell, word) =>\n this.highlight(cell, word, this.highlightCssClass)\n );\n }\n}\n" }, { - "__docId__": 440, + "__docId__": 441, "kind": "class", "static": true, "variation": null, @@ -9447,7 +9468,7 @@ "interface": false }, { - "__docId__": 441, + "__docId__": 442, "kind": "constructor", "static": false, "variation": null, @@ -9472,7 +9493,7 @@ "generator": false }, { - "__docId__": 442, + "__docId__": 443, "kind": "member", "static": false, "variation": null, @@ -9492,7 +9513,7 @@ } }, { - "__docId__": 443, + "__docId__": 444, "kind": "member", "static": false, "variation": null, @@ -9512,7 +9533,7 @@ } }, { - "__docId__": 444, + "__docId__": 445, "kind": "member", "static": false, "variation": null, @@ -9532,7 +9553,7 @@ } }, { - "__docId__": 445, + "__docId__": 446, "kind": "method", "static": false, "variation": null, @@ -9546,7 +9567,7 @@ "generator": false }, { - "__docId__": 446, + "__docId__": 447, "kind": "method", "static": false, "variation": null, @@ -9591,7 +9612,7 @@ "generator": false }, { - "__docId__": 447, + "__docId__": 448, "kind": "method", "static": false, "variation": null, @@ -9626,7 +9647,7 @@ "generator": false }, { - "__docId__": 448, + "__docId__": 449, "kind": "method", "static": false, "variation": null, @@ -9640,7 +9661,7 @@ "generator": false }, { - "__docId__": 449, + "__docId__": 450, "kind": "method", "static": false, "variation": null, @@ -9654,7 +9675,7 @@ "generator": false }, { - "__docId__": 450, + "__docId__": 451, "kind": "file", "static": true, "variation": null, @@ -9667,7 +9688,7 @@ "content": "import {Feature} from '../feature';\nimport {createElm, createText, elm, removeElm} from '../dom';\nimport {isFn} from '../types';\nimport {root} from '../root';\nimport {NONE} from '../const';\n\n/**\n * Activity indicator\n *\n * @export\n * @class Loader\n * @extends {Feature}\n */\nexport class Loader extends Feature {\n\n /**\n * Creates an instance of Loader.\n *\n * @param {TableFilter} tf TableFilter instance\n */\n constructor(tf) {\n super(tf, 'loader');\n\n let f = this.config;\n\n /**\n * ID of custom container element\n * @type {String}\n */\n this.targetId = f.loader_target_id || null;\n\n /**\n * Loader container DOM element\n * @type {DOMElement}\n */\n this.cont = null;\n\n /**\n * Text displayed when indicator is visible\n * @type {String}\n */\n this.text = f.loader_text || 'Loading...';\n\n /**\n * Custom HTML injected in Loader's container element\n * @type {String}\n */\n this.html = f.loader_html || null;\n\n /**\n * Css class for Loader's container element\n * @type {String}\n */\n this.cssClass = f.loader_css_class || 'loader';\n\n /**\n * Close delay in milliseconds\n * @type {Number}\n */\n this.closeDelay = 250;\n\n /**\n * Callback fired when loader is displayed\n * @type {Function}\n */\n this.onShow = isFn(f.on_show_loader) ? f.on_show_loader : null;\n\n /**\n * Callback fired when loader is closed\n * @type {Function}\n */\n this.onHide = isFn(f.on_hide_loader) ? f.on_hide_loader : null;\n\n /**\n * Prefix for container ID\n * @type {String}\n * @private\n */\n this.prfx = 'load_';\n }\n\n /**\n * Initializes Loader instance\n */\n init() {\n if (this.initialized) {\n return;\n }\n\n let tf = this.tf;\n let emitter = this.emitter;\n\n let containerDiv = createElm('div', ['id', this.prfx + tf.id]);\n containerDiv.className = this.cssClass;\n\n let targetEl = !this.targetId ?\n tf.tbl.parentNode : elm(this.targetId);\n if (!this.targetId) {\n targetEl.insertBefore(containerDiv, tf.tbl);\n } else {\n targetEl.appendChild(containerDiv);\n }\n this.cont = containerDiv;\n if (!this.html) {\n this.cont.appendChild(createText(this.text));\n } else {\n this.cont.innerHTML = this.html;\n }\n\n this.show(NONE);\n\n // Subscribe to events\n emitter.on([\n 'before-filtering',\n 'before-populating-filter',\n 'before-page-change',\n 'before-clearing-filters',\n 'before-page-length-change',\n 'before-reset-page',\n 'before-reset-page-length',\n 'before-loading-extensions',\n 'before-loading-themes'],\n () => this.show('')\n );\n emitter.on([\n 'after-filtering',\n 'after-populating-filter',\n 'after-page-change',\n 'after-clearing-filters',\n 'after-page-length-change',\n 'after-reset-page',\n 'after-reset-page-length',\n 'after-loading-extensions',\n 'after-loading-themes'],\n () => this.show(NONE)\n );\n\n /**\n * @inherited\n */\n this.initialized = true;\n }\n\n /**\n * Shows or hides activity indicator\n * @param {String} Two possible values: '' or 'none'\n */\n show(p) {\n if (!this.isEnabled()) {\n return;\n }\n\n let displayLoader = () => {\n if (!this.cont) {\n return;\n }\n if (this.onShow && p !== NONE) {\n this.onShow.call(null, this);\n }\n this.cont.style.display = p;\n if (this.onHide && p === NONE) {\n this.onHide.call(null, this);\n }\n };\n\n let t = p === NONE ? this.closeDelay : 1;\n root.setTimeout(displayLoader, t);\n }\n\n /**\n * Removes feature\n */\n destroy() {\n if (!this.initialized) {\n return;\n }\n\n let emitter = this.emitter;\n\n removeElm(this.cont);\n this.cont = null;\n\n // Unsubscribe to events\n emitter.off([\n 'before-filtering',\n 'before-populating-filter',\n 'before-page-change',\n 'before-clearing-filters',\n 'before-page-length-change',\n 'before-reset-page',\n 'before-reset-page-length',\n 'before-loading-extensions',\n 'before-loading-themes'],\n () => this.show('')\n );\n emitter.off([\n 'after-filtering',\n 'after-populating-filter',\n 'after-page-change',\n 'after-clearing-filters',\n 'after-page-length-change',\n 'after-reset-page',\n 'after-reset-page-length',\n 'after-loading-extensions',\n 'after-loading-themes'],\n () => this.show(NONE)\n );\n\n this.initialized = false;\n }\n}\n" }, { - "__docId__": 451, + "__docId__": 452, "kind": "class", "static": true, "variation": null, @@ -9696,7 +9717,7 @@ ] }, { - "__docId__": 452, + "__docId__": 453, "kind": "constructor", "static": false, "variation": null, @@ -9721,7 +9742,7 @@ "generator": false }, { - "__docId__": 453, + "__docId__": 454, "kind": "member", "static": false, "variation": null, @@ -9741,7 +9762,7 @@ } }, { - "__docId__": 454, + "__docId__": 455, "kind": "member", "static": false, "variation": null, @@ -9761,7 +9782,7 @@ } }, { - "__docId__": 455, + "__docId__": 456, "kind": "member", "static": false, "variation": null, @@ -9781,7 +9802,7 @@ } }, { - "__docId__": 456, + "__docId__": 457, "kind": "member", "static": false, "variation": null, @@ -9801,7 +9822,7 @@ } }, { - "__docId__": 457, + "__docId__": 458, "kind": "member", "static": false, "variation": null, @@ -9821,7 +9842,7 @@ } }, { - "__docId__": 458, + "__docId__": 459, "kind": "member", "static": false, "variation": null, @@ -9841,7 +9862,7 @@ } }, { - "__docId__": 459, + "__docId__": 460, "kind": "member", "static": false, "variation": null, @@ -9861,7 +9882,7 @@ } }, { - "__docId__": 460, + "__docId__": 461, "kind": "member", "static": false, "variation": null, @@ -9881,7 +9902,7 @@ } }, { - "__docId__": 461, + "__docId__": 462, "kind": "member", "static": false, "variation": null, @@ -9901,7 +9922,7 @@ } }, { - "__docId__": 462, + "__docId__": 463, "kind": "method", "static": false, "variation": null, @@ -9915,7 +9936,7 @@ "generator": false }, { - "__docId__": 463, + "__docId__": 464, "kind": "member", "static": false, "variation": null, @@ -9933,7 +9954,7 @@ } }, { - "__docId__": 464, + "__docId__": 465, "kind": "member", "static": false, "variation": null, @@ -9956,7 +9977,7 @@ } }, { - "__docId__": 465, + "__docId__": 466, "kind": "method", "static": false, "variation": null, @@ -9981,7 +10002,7 @@ "generator": false }, { - "__docId__": 466, + "__docId__": 467, "kind": "method", "static": false, "variation": null, @@ -9995,7 +10016,7 @@ "generator": false }, { - "__docId__": 467, + "__docId__": 468, "kind": "member", "static": false, "variation": null, @@ -10013,7 +10034,7 @@ } }, { - "__docId__": 468, + "__docId__": 469, "kind": "member", "static": false, "variation": null, @@ -10031,7 +10052,7 @@ } }, { - "__docId__": 469, + "__docId__": 470, "kind": "file", "static": true, "variation": null, @@ -10044,7 +10065,7 @@ "content": "import {Feature} from '../feature';\nimport {createElm, elm, removeElm} from '../dom';\nimport {isEmpty, isFn} from '../types';\nimport {NONE} from '../const';\n\n/**\n * UI when filtering yields no matches\n * @export\n * @class NoResults\n * @extends {Feature}\n */\nexport class NoResults extends Feature {\n\n /**\n * Creates an instance of NoResults\n * @param {TableFilter} tf TableFilter instance\n */\n constructor(tf) {\n super(tf, 'noResults');\n\n //configuration object\n let f = this.config.no_results_message;\n\n /**\n * Text (accepts HTML)\n * @type {String}\n */\n this.content = f.content || 'No results';\n\n /**\n * Custom container DOM element\n * @type {DOMElement}\n */\n this.customContainer = f.custom_container || null;\n\n /**\n * ID of custom container element\n * @type {String}\n */\n this.customContainerId = f.custom_container_id || null;\n\n /**\n * Indicates if UI is contained in a external element\n * @type {Boolean}\n * @private\n */\n this.isExternal = !isEmpty(this.customContainer) ||\n !isEmpty(this.customContainerId);\n\n /**\n * Css class assigned to container element\n * @type {String}\n */\n this.cssClass = f.css_class || 'no-results';\n\n /**\n * Stores container DOM element\n * @type {DOMElement}\n */\n this.cont = null;\n\n /**\n * Callback fired before the message is displayed\n * @type {Function}\n */\n this.onBeforeShow = isFn(f.on_before_show_msg) ?\n f.on_before_show_msg : null;\n\n /**\n * Callback fired after the message is displayed\n * @type {Function}\n */\n this.onAfterShow = isFn(f.on_after_show_msg) ?\n f.on_after_show_msg : null;\n\n /**\n * Callback fired before the message is hidden\n * @type {Function}\n */\n this.onBeforeHide = isFn(f.on_before_hide_msg) ?\n f.on_before_hide_msg : null;\n\n /**\n * Callback fired after the message is hidden\n * @type {Function}\n */\n this.onAfterHide = isFn(f.on_after_hide_msg) ?\n f.on_after_hide_msg : null;\n\n /**\n * Prefix for container ID\n * @type {String}\n * @private\n */\n this.prfx = 'nores_';\n }\n\n /**\n * Initializes NoResults instance\n */\n init() {\n if (this.initialized) {\n return;\n }\n let tf = this.tf;\n let target = this.customContainer || elm(this.customContainerId) ||\n tf.tbl;\n\n //container\n let cont = createElm('div', ['id', this.prfx + tf.id]);\n cont.className = this.cssClass;\n cont.innerHTML = this.content;\n\n if (this.isExternal) {\n target.appendChild(cont);\n } else {\n target.parentNode.insertBefore(cont, target.nextSibling);\n }\n\n this.cont = cont;\n\n // subscribe to after-filtering event\n this.emitter.on(['after-filtering'], () => this.toggle());\n\n /**\n * @inherited\n */\n this.initialized = true;\n\n this.hide();\n }\n\n /**\n * Toggle no results message\n */\n toggle() {\n if (this.tf.getValidRowsNb() > 0) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n /**\n * Show no results message\n */\n show() {\n if (!this.initialized || !this.isEnabled()) {\n return;\n }\n\n if (this.onBeforeShow) {\n this.onBeforeShow.call(null, this.tf, this);\n }\n\n this.setWidth();\n this.cont.style.display = 'block';\n\n if (this.onAfterShow) {\n this.onAfterShow.call(null, this.tf, this);\n }\n }\n\n /**\n * Hide no results message\n */\n hide() {\n if (!this.initialized || !this.isEnabled()) {\n return;\n }\n\n if (this.onBeforeHide) {\n this.onBeforeHide.call(null, this.tf, this);\n }\n\n this.cont.style.display = NONE;\n\n if (this.onAfterHide) {\n this.onAfterHide.call(null, this.tf, this);\n }\n }\n\n /**\n * Sets no results container width\n * @private\n */\n setWidth() {\n if (!this.initialized || this.isExternal || !this.isEnabled()) {\n return;\n }\n let tf = this.tf;\n if (tf.gridLayout) {\n let gridLayout = tf.feature('gridLayout');\n this.cont.style.width = gridLayout.tblCont.clientWidth + 'px';\n } else {\n this.cont.style.width = (tf.tbl.tHead ? tf.tbl.tHead.clientWidth :\n tf.tbl.tBodies[0].clientWidth) + 'px';\n }\n }\n\n /**\n * Remove feature\n */\n destroy() {\n if (!this.initialized) {\n return;\n }\n removeElm(this.cont);\n this.cont = null;\n // unsubscribe to after-filtering event\n this.emitter.off(['after-filtering'], () => this.toggle());\n\n this.initialized = false;\n }\n}\n" }, { - "__docId__": 470, + "__docId__": 471, "kind": "class", "static": true, "variation": null, @@ -10073,7 +10094,7 @@ ] }, { - "__docId__": 471, + "__docId__": 472, "kind": "constructor", "static": false, "variation": null, @@ -10098,7 +10119,7 @@ "generator": false }, { - "__docId__": 472, + "__docId__": 473, "kind": "member", "static": false, "variation": null, @@ -10118,7 +10139,7 @@ } }, { - "__docId__": 473, + "__docId__": 474, "kind": "member", "static": false, "variation": null, @@ -10138,7 +10159,7 @@ } }, { - "__docId__": 474, + "__docId__": 475, "kind": "member", "static": false, "variation": null, @@ -10158,7 +10179,7 @@ } }, { - "__docId__": 475, + "__docId__": 476, "kind": "member", "static": false, "variation": null, @@ -10178,7 +10199,7 @@ } }, { - "__docId__": 476, + "__docId__": 477, "kind": "member", "static": false, "variation": null, @@ -10198,7 +10219,7 @@ } }, { - "__docId__": 477, + "__docId__": 478, "kind": "member", "static": false, "variation": null, @@ -10218,7 +10239,7 @@ } }, { - "__docId__": 478, + "__docId__": 479, "kind": "member", "static": false, "variation": null, @@ -10238,7 +10259,7 @@ } }, { - "__docId__": 479, + "__docId__": 480, "kind": "member", "static": false, "variation": null, @@ -10258,7 +10279,7 @@ } }, { - "__docId__": 480, + "__docId__": 481, "kind": "member", "static": false, "variation": null, @@ -10278,7 +10299,7 @@ } }, { - "__docId__": 481, + "__docId__": 482, "kind": "member", "static": false, "variation": null, @@ -10298,7 +10319,7 @@ } }, { - "__docId__": 482, + "__docId__": 483, "kind": "member", "static": false, "variation": null, @@ -10318,7 +10339,7 @@ } }, { - "__docId__": 483, + "__docId__": 484, "kind": "method", "static": false, "variation": null, @@ -10332,7 +10353,7 @@ "generator": false }, { - "__docId__": 484, + "__docId__": 485, "kind": "member", "static": false, "variation": null, @@ -10350,7 +10371,7 @@ } }, { - "__docId__": 485, + "__docId__": 486, "kind": "member", "static": false, "variation": null, @@ -10373,7 +10394,7 @@ } }, { - "__docId__": 486, + "__docId__": 487, "kind": "method", "static": false, "variation": null, @@ -10387,7 +10408,7 @@ "generator": false }, { - "__docId__": 487, + "__docId__": 488, "kind": "method", "static": false, "variation": null, @@ -10401,7 +10422,7 @@ "generator": false }, { - "__docId__": 488, + "__docId__": 489, "kind": "method", "static": false, "variation": null, @@ -10415,7 +10436,7 @@ "generator": false }, { - "__docId__": 489, + "__docId__": 490, "kind": "method", "static": false, "variation": null, @@ -10429,7 +10450,7 @@ "generator": false }, { - "__docId__": 490, + "__docId__": 491, "kind": "method", "static": false, "variation": null, @@ -10443,7 +10464,7 @@ "generator": false }, { - "__docId__": 491, + "__docId__": 492, "kind": "member", "static": false, "variation": null, @@ -10461,7 +10482,7 @@ } }, { - "__docId__": 492, + "__docId__": 493, "kind": "member", "static": false, "variation": null, @@ -10479,7 +10500,7 @@ } }, { - "__docId__": 493, + "__docId__": 494, "kind": "file", "static": true, "variation": null, @@ -10492,7 +10513,7 @@ "content": "import {Feature} from '../feature';\nimport {createElm, createOpt, createText, elm, removeElm} from '../dom';\nimport {isArray, isFn, isNull} from '../types';\nimport {addEvt, keyCode, removeEvt} from '../event';\nimport {INPUT, SELECT, NONE, ENTER_KEY} from '../const';\n\n/**\n * Paging UI component\n * @export\n * @class Paging\n * @extends {Feature}\n */\nexport class Paging extends Feature {\n\n /**\n * Creates an instance of Paging\n * @param {TableFilter} tf TableFilter instance\n */\n constructor(tf) {\n super(tf, 'paging');\n\n // Configuration object\n var f = this.config;\n\n /**\n * Css class for the paging buttons (previous, next, etc.)\n * @type {String}\n */\n this.btnPageCssClass = f.paging_btn_css_class || 'pgInp';\n\n /**\n * Main select DOM element\n * @type {DOMElement}\n */\n this.pagingSlc = null;\n\n /**\n * Results per page select DOM element\n * @type {DOMElement}\n */\n this.resultsPerPageSlc = null;\n\n /**\n * ID of custom container element\n * @type {String}\n */\n this.pagingTgtId = f.paging_target_id || null;\n\n /**\n * Number of rows contained in a page\n * @type {Number}\n */\n this.pagingLength = !isNaN(f.paging_length) ? f.paging_length : 10;\n\n /**\n * ID of custom container element for the results per page selector\n * @type {String}\n */\n this.resultsPerPageTgtId = f.results_per_page_target_id || null;\n\n /**\n * Css class for the paging select element\n * @type {String}\n */\n this.pgSlcCssClass = f.paging_slc_css_class || 'pgSlc';\n\n /**\n * Css class for the paging input element\n * @type {String}\n */\n this.pgInpCssClass = f.paging_inp_css_class || 'pgNbInp';\n\n /**\n * Label and values for the results per page select, example of usage:\n * ['Records: ', [10,25,50,100]]\n * @type {Array}\n */\n this.resultsPerPage = f.results_per_page || null;\n\n /**\n * Determines if results per page is configured\n * @type {Boolean}\n */\n this.hasResultsPerPage = isArray(this.resultsPerPage);\n\n /**\n * Css class for the results per page select\n * @type {String}\n */\n this.resultsSlcCssClass = f.results_slc_css_class || 'rspg';\n\n /**\n * Css class for the label preceding results per page select\n * @type {String}\n */\n this.resultsSpanCssClass = f.results_span_css_class || 'rspgSpan';\n\n /**\n * Index of the first row of current page\n * @type {Number}\n * @private\n */\n this.startPagingRow = 0;\n\n /**\n * Total number of pages\n * @type {Number}\n * @private\n */\n this.nbPages = 0;\n\n /**\n * Current page number\n * @type {Number}\n * @private\n */\n this.currentPageNb = 1;\n\n /**\n * Next page button text\n * @type {String}\n */\n this.btnNextPageText = f.btn_next_page_text || '>';\n\n /**\n * Previous page button text\n * @type {String}\n */\n this.btnPrevPageText = f.btn_prev_page_text || '<';\n\n /**\n * Last page button text\n * @type {String}\n */\n this.btnLastPageText = f.btn_last_page_text || '>|';\n\n /**\n * First page button text\n * @type {String}\n */\n this.btnFirstPageText = f.btn_first_page_text || '|<';\n\n /**\n * Next page button HTML\n * @type {String}\n */\n this.btnNextPageHtml = f.btn_next_page_html ||\n (!tf.enableIcons ? null :\n '');\n\n /**\n * Previous page button HTML\n * @type {String}\n */\n this.btnPrevPageHtml = f.btn_prev_page_html ||\n (!tf.enableIcons ? null :\n '');\n\n /**\n * First page button HTML\n * @type {String}\n */\n this.btnFirstPageHtml = f.btn_first_page_html ||\n (!tf.enableIcons ? null :\n '');\n\n /**\n * Last page button HTML\n * @type {String}\n */\n this.btnLastPageHtml = f.btn_last_page_html ||\n (!tf.enableIcons ? null :\n '');\n\n /**\n * Text preceeding page selector drop-down\n * @type {String}\n */\n this.pageText = f.page_text || ' Page ';\n\n /**\n * Text after page selector drop-down\n * @type {String}\n */\n this.ofText = f.of_text || ' of ';\n\n /**\n * Css class for the span containing total number of pages\n * @type {String}\n */\n this.nbPgSpanCssClass = f.nb_pages_css_class || 'nbpg';\n\n /**\n * Determines if paging buttons are enabled (default: true)\n * @type {Boolean}\n */\n this.hasPagingBtns = f.paging_btns === false ? false : true;\n\n /**\n * Defines page selector type, two possible values: 'select', 'input'\n * @type {String}\n */\n this.pageSelectorType = f.page_selector_type || SELECT;\n\n /**\n * Callback fired before the page is changed\n * @type {Function}\n */\n this.onBeforeChangePage = isFn(f.on_before_change_page) ?\n f.on_before_change_page : null;\n\n /**\n * Callback fired after the page is changed\n * @type {Function}\n */\n this.onAfterChangePage = isFn(f.on_after_change_page) ?\n f.on_after_change_page : null;\n\n /**\n * Element IDs prefixes\n */\n /**\n * Page select\n * @type {String}\n * @private\n */\n this.prfxSlcPages = 'slcPages_';\n /**\n * Results per page select\n * @type {String}\n * @private\n */\n this.prfxSlcResults = 'slcResults_';\n /**\n * Label preciding results per page select\n * @type {String}\n * @private\n */\n this.prfxSlcResultsTxt = 'slcResultsTxt_';\n /**\n * Span containing next page button\n * @type {String}\n * @private\n */\n this.prfxBtnNextSpan = 'btnNextSpan_';\n /**\n * Span containing previous page button\n * @type {String}\n * @private\n */\n this.prfxBtnPrevSpan = 'btnPrevSpan_';\n /**\n * Span containing last page button\n * @type {String}\n * @private\n */\n this.prfxBtnLastSpan = 'btnLastSpan_';\n /**\n * Span containing first page button\n * @type {String}\n * @private\n */\n this.prfxBtnFirstSpan = 'btnFirstSpan_';\n /**\n * Next button\n * @type {String}\n * @private\n */\n this.prfxBtnNext = 'btnNext_';\n /**\n * Previous button\n * @type {String}\n * @private\n */\n this.prfxBtnPrev = 'btnPrev_';\n /**\n * Last button\n * @type {String}\n * @private\n */\n this.prfxBtnLast = 'btnLast_';\n /**\n * First button\n * @type {String}\n * @private\n */\n this.prfxBtnFirst = 'btnFirst_';\n /**\n * Span for tot nb pages\n * @type {String}\n * @private\n */\n this.prfxPgSpan = 'pgspan_';\n /**\n * Span preceding pages select (contains 'Page')\n * @type {String}\n * @private\n */\n this.prfxPgBeforeSpan = 'pgbeforespan_';\n /**\n * Span following pages select (contains ' of ')\n * @type {String}\n * @private\n */\n this.prfxPgAfterSpan = 'pgafterspan_';\n\n var start_row = tf.refRow;\n var nrows = tf.getRowsNb(true);\n //calculates page nb\n this.nbPages = Math.ceil((nrows - start_row) / this.pagingLength);\n\n var o = this;\n /**\n * Paging DOM events handlers\n * @type {String}\n * @private\n */\n this.evt = {\n slcIndex() {\n return (o.pageSelectorType === SELECT) ?\n o.pagingSlc.options.selectedIndex :\n parseInt(o.pagingSlc.value, 10) - 1;\n },\n nbOpts() {\n return (o.pageSelectorType === SELECT) ?\n parseInt(o.pagingSlc.options.length, 10) - 1 :\n (o.nbPages - 1);\n },\n next() {\n var nextIndex = o.evt.slcIndex() < o.evt.nbOpts() ?\n o.evt.slcIndex() + 1 : 0;\n o.changePage(nextIndex);\n },\n prev() {\n var prevIndex = o.evt.slcIndex() > 0 ?\n o.evt.slcIndex() - 1 : o.evt.nbOpts();\n o.changePage(prevIndex);\n },\n last() {\n o.changePage(o.evt.nbOpts());\n },\n first() {\n o.changePage(0);\n },\n _detectKey(e) {\n var key = keyCode(e);\n if (key === ENTER_KEY) {\n if (tf.sorted) {\n tf.filter();\n o.changePage(o.evt.slcIndex());\n } else {\n o.changePage();\n }\n this.blur();\n }\n },\n slcPagesChange: null,\n nextEvt: null,\n prevEvt: null,\n lastEvt: null,\n firstEvt: null\n };\n }\n\n /**\n * Initialize DOM elements\n */\n init() {\n var slcPages;\n var tf = this.tf;\n var evt = this.evt;\n\n if (this.initialized) {\n return;\n }\n\n // Check resultsPerPage is in expected format and initialise the\n // results per page component\n if (this.hasResultsPerPage) {\n if (this.resultsPerPage.length < 2) {\n this.hasResultsPerPage = false;\n } else {\n this.pagingLength = this.resultsPerPage[1][0];\n this.setResultsPerPage();\n }\n }\n\n evt.slcPagesChange = (event) => {\n var slc = event.target;\n this.changePage(slc.selectedIndex);\n };\n\n // Paging drop-down list selector\n if (this.pageSelectorType === SELECT) {\n slcPages = createElm(SELECT, ['id', this.prfxSlcPages + tf.id]);\n slcPages.className = this.pgSlcCssClass;\n addEvt(slcPages, 'change', evt.slcPagesChange);\n }\n\n // Paging input selector\n if (this.pageSelectorType === INPUT) {\n slcPages = createElm(INPUT,\n ['id', this.prfxSlcPages + tf.id],\n ['value', this.currentPageNb]\n );\n slcPages.className = this.pgInpCssClass;\n addEvt(slcPages, 'keypress', evt._detectKey);\n }\n\n // btns containers\n var btnNextSpan = createElm(\n 'span', ['id', this.prfxBtnNextSpan + tf.id]);\n var btnPrevSpan = createElm(\n 'span', ['id', this.prfxBtnPrevSpan + tf.id]);\n var btnLastSpan = createElm(\n 'span', ['id', this.prfxBtnLastSpan + tf.id]);\n var btnFirstSpan = createElm(\n 'span', ['id', this.prfxBtnFirstSpan + tf.id]);\n\n if (this.hasPagingBtns) {\n // Next button\n if (!this.btnNextPageHtml) {\n var btn_next = createElm(INPUT,\n ['id', this.prfxBtnNext + tf.id],\n ['type', 'button'],\n ['value', this.btnNextPageText],\n ['title', 'Next']\n );\n btn_next.className = this.btnPageCssClass;\n addEvt(btn_next, 'click', evt.next);\n btnNextSpan.appendChild(btn_next);\n } else {\n btnNextSpan.innerHTML = this.btnNextPageHtml;\n addEvt(btnNextSpan, 'click', evt.next);\n }\n // Previous button\n if (!this.btnPrevPageHtml) {\n var btn_prev = createElm(INPUT,\n ['id', this.prfxBtnPrev + tf.id],\n ['type', 'button'],\n ['value', this.btnPrevPageText],\n ['title', 'Previous']\n );\n btn_prev.className = this.btnPageCssClass;\n addEvt(btn_prev, 'click', evt.prev);\n btnPrevSpan.appendChild(btn_prev);\n } else {\n btnPrevSpan.innerHTML = this.btnPrevPageHtml;\n addEvt(btnPrevSpan, 'click', evt.prev);\n }\n // Last button\n if (!this.btnLastPageHtml) {\n var btn_last = createElm(INPUT,\n ['id', this.prfxBtnLast + tf.id],\n ['type', 'button'],\n ['value', this.btnLastPageText],\n ['title', 'Last']\n );\n btn_last.className = this.btnPageCssClass;\n addEvt(btn_last, 'click', evt.last);\n btnLastSpan.appendChild(btn_last);\n } else {\n btnLastSpan.innerHTML = this.btnLastPageHtml;\n addEvt(btnLastSpan, 'click', evt.last);\n }\n // First button\n if (!this.btnFirstPageHtml) {\n var btn_first = createElm(INPUT,\n ['id', this.prfxBtnFirst + tf.id],\n ['type', 'button'],\n ['value', this.btnFirstPageText],\n ['title', 'First']\n );\n btn_first.className = this.btnPageCssClass;\n addEvt(btn_first, 'click', evt.first);\n btnFirstSpan.appendChild(btn_first);\n } else {\n btnFirstSpan.innerHTML = this.btnFirstPageHtml;\n addEvt(btnFirstSpan, 'click', evt.first);\n }\n }\n\n // paging elements (buttons+drop-down list) are added to defined element\n if (!this.pagingTgtId) {\n tf.setToolbar();\n }\n var targetEl = !this.pagingTgtId ? tf.mDiv : elm(this.pagingTgtId);\n targetEl.appendChild(btnFirstSpan);\n targetEl.appendChild(btnPrevSpan);\n\n var pgBeforeSpan = createElm(\n 'span', ['id', this.prfxPgBeforeSpan + tf.id]);\n pgBeforeSpan.appendChild(createText(this.pageText));\n pgBeforeSpan.className = this.nbPgSpanCssClass;\n targetEl.appendChild(pgBeforeSpan);\n targetEl.appendChild(slcPages);\n var pgAfterSpan = createElm(\n 'span', ['id', this.prfxPgAfterSpan + tf.id]);\n pgAfterSpan.appendChild(createText(this.ofText));\n pgAfterSpan.className = this.nbPgSpanCssClass;\n targetEl.appendChild(pgAfterSpan);\n var pgspan = createElm('span', ['id', this.prfxPgSpan + tf.id]);\n pgspan.className = this.nbPgSpanCssClass;\n pgspan.appendChild(createText(' ' + this.nbPages + ' '));\n targetEl.appendChild(pgspan);\n targetEl.appendChild(btnNextSpan);\n targetEl.appendChild(btnLastSpan);\n this.pagingSlc = elm(this.prfxSlcPages + tf.id);\n\n this.setPagingInfo();\n\n if (!tf.fltGrid) {\n tf.validateAllRows();\n this.setPagingInfo(tf.validRowsIndex);\n }\n\n this.emitter.on(['after-filtering'], () => this.resetPagingInfo());\n this.emitter.on(['change-page'],\n (tf, pageNumber) => this.setPage(pageNumber));\n this.emitter.on(['change-page-results'],\n (tf, pageLength) => this.changeResultsPerPage(pageLength));\n\n /**\n * @inherited\n */\n this.initialized = true;\n }\n\n /**\n * Reset paging when filters are already instantiated\n * @param {Boolean} filterTable Execute filtering once paging instanciated\n */\n reset(filterTable = false) {\n var tf = this.tf;\n if (this.isEnabled()) {\n return;\n }\n this.enable();\n this.init();\n\n if (filterTable) {\n tf.filter();\n }\n }\n\n /**\n * Reset paging info from scratch after a filtering process\n */\n resetPagingInfo() {\n this.startPagingRow = 0;\n this.currentPageNb = 1;\n this.setPagingInfo(this.tf.validRowsIndex);\n }\n\n /**\n * Calculate number of pages based on valid rows\n * Refresh paging select according to number of pages\n * @param {Array} validRows Collection of valid rows\n */\n setPagingInfo(validRows) {\n var tf = this.tf;\n var mdiv = !this.pagingTgtId ? tf.mDiv : elm(this.pagingTgtId);\n var pgspan = elm(this.prfxPgSpan + tf.id);\n\n //store valid rows indexes\n tf.validRowsIndex = validRows || tf.getValidRows(true);\n\n //calculate nb of pages\n this.nbPages = Math.ceil(tf.validRowsIndex.length / this.pagingLength);\n //refresh page nb span\n pgspan.innerHTML = this.nbPages;\n //select clearing shortcut\n if (this.pageSelectorType === SELECT) {\n this.pagingSlc.innerHTML = '';\n }\n\n if (this.nbPages > 0) {\n mdiv.style.visibility = 'visible';\n if (this.pageSelectorType === SELECT) {\n for (var z = 0; z < this.nbPages; z++) {\n var opt = createOpt(z + 1, z * this.pagingLength, false);\n this.pagingSlc.options[z] = opt;\n }\n } else {\n //input type\n this.pagingSlc.value = this.currentPageNb;\n }\n\n } else {\n /*** if no results paging select and buttons are hidden ***/\n mdiv.style.visibility = 'hidden';\n }\n this.groupByPage(tf.validRowsIndex);\n }\n\n /**\n * Group table rows by page and display valid rows\n * @param {Array} validRows Collection of valid rows\n */\n groupByPage(validRows) {\n var tf = this.tf;\n var rows = tf.tbl.rows;\n var startPagingRow = parseInt(this.startPagingRow, 10);\n var endPagingRow = startPagingRow + parseInt(this.pagingLength, 10);\n\n //store valid rows indexes\n if (validRows) {\n tf.validRowsIndex = validRows;\n }\n\n //this loop shows valid rows of current page\n for (var h = 0, len = tf.getValidRowsNb(true); h < len; h++) {\n var validRowIdx = tf.validRowsIndex[h];\n var r = rows[validRowIdx];\n var isRowValid = r.getAttribute('validRow');\n var rowDisplayed = false;\n\n if (h >= startPagingRow && h < endPagingRow) {\n if (isNull(isRowValid) || Boolean(isRowValid === 'true')) {\n r.style.display = '';\n rowDisplayed = true;\n }\n } else {\n r.style.display = NONE;\n }\n this.emitter.emit('row-paged', tf, validRowIdx, h, rowDisplayed);\n }\n\n // broadcast grouping by page\n this.emitter.emit('grouped-by-page', tf, this);\n }\n\n /**\n * Return the current page number\n * @return {Number} Page number\n */\n getPage() {\n return this.currentPageNb;\n }\n\n /**\n * Show page defined by passed argument (string or number):\n * @param {String}/{Number} cmd possible string values: 'next',\n * 'previous', 'last', 'first' or page number as per param\n */\n setPage(cmd) {\n var tf = this.tf;\n if (!tf.isInitialized() || !this.isEnabled()) {\n return;\n }\n var btnEvt = this.evt,\n cmdtype = typeof cmd;\n if (cmdtype === 'string') {\n switch (cmd.toLowerCase()) {\n case 'next':\n btnEvt.next();\n break;\n case 'previous':\n btnEvt.prev();\n break;\n case 'last':\n btnEvt.last();\n break;\n case 'first':\n btnEvt.first();\n break;\n default:\n btnEvt.next();\n break;\n }\n }\n else if (cmdtype === 'number') {\n this.changePage(cmd - 1);\n }\n }\n\n /**\n * Generates UI elements for the number of results per page drop-down\n */\n setResultsPerPage() {\n var tf = this.tf;\n var evt = this.evt;\n\n if (this.resultsPerPageSlc || !this.resultsPerPage) {\n return;\n }\n\n evt.slcResultsChange = (ev) => {\n this.onChangeResultsPerPage();\n ev.target.blur();\n };\n\n var slcR = createElm(SELECT, ['id', this.prfxSlcResults + tf.id]);\n slcR.className = this.resultsSlcCssClass;\n var slcRText = this.resultsPerPage[0],\n slcROpts = this.resultsPerPage[1];\n var slcRSpan = createElm(\n 'span', ['id', this.prfxSlcResultsTxt + tf.id]);\n slcRSpan.className = this.resultsSpanCssClass;\n\n // results per page select is added to external element\n if (!this.resultsPerPageTgtId) {\n tf.setToolbar();\n }\n var targetEl = !this.resultsPerPageTgtId ?\n tf.rDiv : elm(this.resultsPerPageTgtId);\n slcRSpan.appendChild(createText(slcRText));\n\n var help = tf.feature('help');\n if (help && help.btn) {\n help.btn.parentNode.insertBefore(slcRSpan, help.btn);\n help.btn.parentNode.insertBefore(slcR, help.btn);\n } else {\n targetEl.appendChild(slcRSpan);\n targetEl.appendChild(slcR);\n }\n\n for (var r = 0; r < slcROpts.length; r++) {\n var currOpt = new Option(slcROpts[r], slcROpts[r], false, false);\n slcR.options[r] = currOpt;\n }\n addEvt(slcR, 'change', evt.slcResultsChange);\n this.resultsPerPageSlc = slcR;\n }\n\n /**\n * Remove number of results per page UI elements\n */\n removeResultsPerPage() {\n var tf = this.tf;\n if (!tf.isInitialized() || !this.resultsPerPageSlc ||\n !this.resultsPerPage) {\n return;\n }\n var slcR = this.resultsPerPageSlc,\n slcRSpan = elm(this.prfxSlcResultsTxt + tf.id);\n if (slcR) {\n removeElm(slcR);\n }\n if (slcRSpan) {\n removeElm(slcRSpan);\n }\n this.resultsPerPageSlc = null;\n }\n\n /**\n * Change the page based on passed index\n * @param {Number} index Index of the page (0-n)\n */\n changePage(index) {\n var tf = this.tf;\n\n if (!this.isEnabled()) {\n return;\n }\n\n this.emitter.emit('before-page-change', tf, (index + 1));\n\n if (index === null) {\n index = this.pageSelectorType === SELECT ?\n this.pagingSlc.options.selectedIndex : this.pagingSlc.value - 1;\n }\n if (index >= 0 && index <= (this.nbPages - 1)) {\n if (this.onBeforeChangePage) {\n this.onBeforeChangePage.call(null, this, (index + 1));\n }\n this.currentPageNb = parseInt(index, 10) + 1;\n if (this.pageSelectorType === SELECT) {\n this.pagingSlc.options[index].selected = true;\n } else {\n this.pagingSlc.value = this.currentPageNb;\n }\n\n this.startPagingRow = (this.pageSelectorType === SELECT) ?\n this.pagingSlc.value : (index * this.pagingLength);\n\n this.groupByPage();\n\n if (this.onAfterChangePage) {\n this.onAfterChangePage.call(null, this, (index + 1));\n }\n }\n\n this.emitter.emit('after-page-change', tf, (index + 1));\n }\n\n /**\n * Change the number of results per page based on passed value\n * @param {String} val The number of results per page\n */\n changeResultsPerPage(val) {\n if (!this.isEnabled() || isNaN(val)) {\n return;\n }\n\n this.resultsPerPageSlc.value = val;\n this.onChangeResultsPerPage();\n }\n\n /**\n * Change rows according to page results drop-down\n */\n onChangeResultsPerPage() {\n var tf = this.tf;\n\n if (!this.isEnabled()) {\n return;\n }\n\n this.emitter.emit('before-page-length-change', tf);\n\n var slcR = this.resultsPerPageSlc;\n var slcIndex = slcR.selectedIndex;\n var slcPagesSelIndex = (this.pageSelectorType === SELECT) ?\n this.pagingSlc.selectedIndex :\n parseInt(this.pagingSlc.value - 1, 10);\n this.pagingLength = parseInt(slcR.options[slcIndex].value, 10);\n this.startPagingRow = this.pagingLength * slcPagesSelIndex;\n\n if (!isNaN(this.pagingLength)) {\n if (this.startPagingRow >= tf.nbFilterableRows) {\n this.startPagingRow = (tf.nbFilterableRows - this.pagingLength);\n }\n this.setPagingInfo();\n\n if (this.pageSelectorType === SELECT) {\n var slcIdx =\n (this.pagingSlc.options.length - 1 <= slcPagesSelIndex) ?\n (this.pagingSlc.options.length - 1) : slcPagesSelIndex;\n this.pagingSlc.options[slcIdx].selected = true;\n }\n }\n\n this.emitter.emit('after-page-length-change', tf, this.pagingLength);\n }\n\n /**\n * Re-set page nb at page re-load\n */\n resetPage() {\n var tf = this.tf;\n if (!this.isEnabled()) {\n return;\n }\n this.emitter.emit('before-reset-page', tf);\n var pgNb = tf.feature('store').getPageNb();\n if (pgNb !== '') {\n this.changePage((pgNb - 1));\n }\n this.emitter.emit('after-reset-page', tf, pgNb);\n }\n\n /**\n * Re-set page length value at page re-load\n */\n resetPageLength() {\n var tf = this.tf;\n if (!this.isEnabled()) {\n return;\n }\n this.emitter.emit('before-reset-page-length', tf);\n var pglenIndex = tf.feature('store').getPageLength();\n\n if (pglenIndex !== '') {\n this.resultsPerPageSlc.options[pglenIndex].selected = true;\n this.changeResultsPerPage();\n }\n this.emitter.emit('after-reset-page-length', tf, pglenIndex);\n }\n\n /**\n * Remove paging feature\n */\n destroy() {\n var tf = this.tf;\n\n if (!this.initialized) {\n return;\n }\n // btns containers\n var btnNextSpan = elm(this.prfxBtnNextSpan + tf.id);\n var btnPrevSpan = elm(this.prfxBtnPrevSpan + tf.id);\n var btnLastSpan = elm(this.prfxBtnLastSpan + tf.id);\n var btnFirstSpan = elm(this.prfxBtnFirstSpan + tf.id);\n //span containing 'Page' text\n var pgBeforeSpan = elm(this.prfxPgBeforeSpan + tf.id);\n //span containing 'of' text\n var pgAfterSpan = elm(this.prfxPgAfterSpan + tf.id);\n //span containing nb of pages\n var pgspan = elm(this.prfxPgSpan + tf.id);\n\n var evt = this.evt;\n\n if (this.pagingSlc) {\n if (this.pageSelectorType === SELECT) {\n removeEvt(this.pagingSlc, 'change', evt.slcPagesChange);\n }\n else if (this.pageSelectorType === INPUT) {\n removeEvt(this.pagingSlc, 'keypress', evt._detectKey);\n }\n removeElm(this.pagingSlc);\n }\n\n if (btnNextSpan) {\n removeEvt(btnNextSpan, 'click', evt.next);\n removeElm(btnNextSpan);\n }\n\n if (btnPrevSpan) {\n removeEvt(btnPrevSpan, 'click', evt.prev);\n removeElm(btnPrevSpan);\n }\n\n if (btnLastSpan) {\n removeEvt(btnLastSpan, 'click', evt.last);\n removeElm(btnLastSpan);\n }\n\n if (btnFirstSpan) {\n removeEvt(btnFirstSpan, 'click', evt.first);\n removeElm(btnFirstSpan);\n }\n\n if (pgBeforeSpan) {\n removeElm(pgBeforeSpan);\n }\n\n if (pgAfterSpan) {\n removeElm(pgAfterSpan);\n }\n\n if (pgspan) {\n removeElm(pgspan);\n }\n\n if (this.hasResultsPerPage) {\n this.removeResultsPerPage();\n }\n\n this.emitter.off(['after-filtering'], () => this.resetPagingInfo());\n this.emitter.off(['change-page'],\n (tf, pageNumber) => this.setPage(pageNumber));\n this.emitter.off(['change-page-results'],\n (tf, pageLength) => this.changeResultsPerPage(pageLength));\n\n this.pagingSlc = null;\n this.nbPages = 0;\n this.disable();\n this.initialized = false;\n }\n}\n" }, { - "__docId__": 494, + "__docId__": 495, "kind": "class", "static": true, "variation": null, @@ -10521,7 +10542,7 @@ ] }, { - "__docId__": 495, + "__docId__": 496, "kind": "constructor", "static": false, "variation": null, @@ -10546,7 +10567,7 @@ "generator": false }, { - "__docId__": 496, + "__docId__": 497, "kind": "member", "static": false, "variation": null, @@ -10566,7 +10587,7 @@ } }, { - "__docId__": 497, + "__docId__": 498, "kind": "member", "static": false, "variation": null, @@ -10586,7 +10607,7 @@ } }, { - "__docId__": 498, + "__docId__": 499, "kind": "member", "static": false, "variation": null, @@ -10606,7 +10627,7 @@ } }, { - "__docId__": 499, + "__docId__": 500, "kind": "member", "static": false, "variation": null, @@ -10626,7 +10647,7 @@ } }, { - "__docId__": 500, + "__docId__": 501, "kind": "member", "static": false, "variation": null, @@ -10646,7 +10667,7 @@ } }, { - "__docId__": 501, + "__docId__": 502, "kind": "member", "static": false, "variation": null, @@ -10666,7 +10687,7 @@ } }, { - "__docId__": 502, + "__docId__": 503, "kind": "member", "static": false, "variation": null, @@ -10686,7 +10707,7 @@ } }, { - "__docId__": 503, + "__docId__": 504, "kind": "member", "static": false, "variation": null, @@ -10706,7 +10727,7 @@ } }, { - "__docId__": 504, + "__docId__": 505, "kind": "member", "static": false, "variation": null, @@ -10726,7 +10747,7 @@ } }, { - "__docId__": 505, + "__docId__": 506, "kind": "member", "static": false, "variation": null, @@ -10746,7 +10767,7 @@ } }, { - "__docId__": 506, + "__docId__": 507, "kind": "member", "static": false, "variation": null, @@ -10766,7 +10787,7 @@ } }, { - "__docId__": 507, + "__docId__": 508, "kind": "member", "static": false, "variation": null, @@ -10786,7 +10807,7 @@ } }, { - "__docId__": 508, + "__docId__": 509, "kind": "member", "static": false, "variation": null, @@ -10806,7 +10827,7 @@ } }, { - "__docId__": 509, + "__docId__": 510, "kind": "member", "static": false, "variation": null, @@ -10826,7 +10847,7 @@ } }, { - "__docId__": 510, + "__docId__": 511, "kind": "member", "static": false, "variation": null, @@ -10846,7 +10867,7 @@ } }, { - "__docId__": 511, + "__docId__": 512, "kind": "member", "static": false, "variation": null, @@ -10866,7 +10887,7 @@ } }, { - "__docId__": 512, + "__docId__": 513, "kind": "member", "static": false, "variation": null, @@ -10886,7 +10907,7 @@ } }, { - "__docId__": 513, + "__docId__": 514, "kind": "member", "static": false, "variation": null, @@ -10906,7 +10927,7 @@ } }, { - "__docId__": 514, + "__docId__": 515, "kind": "member", "static": false, "variation": null, @@ -10926,7 +10947,7 @@ } }, { - "__docId__": 515, + "__docId__": 516, "kind": "member", "static": false, "variation": null, @@ -10946,7 +10967,7 @@ } }, { - "__docId__": 516, + "__docId__": 517, "kind": "member", "static": false, "variation": null, @@ -10966,7 +10987,7 @@ } }, { - "__docId__": 517, + "__docId__": 518, "kind": "member", "static": false, "variation": null, @@ -10986,7 +11007,7 @@ } }, { - "__docId__": 518, + "__docId__": 519, "kind": "member", "static": false, "variation": null, @@ -11006,7 +11027,7 @@ } }, { - "__docId__": 519, + "__docId__": 520, "kind": "member", "static": false, "variation": null, @@ -11026,7 +11047,7 @@ } }, { - "__docId__": 520, + "__docId__": 521, "kind": "member", "static": false, "variation": null, @@ -11046,7 +11067,7 @@ } }, { - "__docId__": 521, + "__docId__": 522, "kind": "member", "static": false, "variation": null, @@ -11066,7 +11087,7 @@ } }, { - "__docId__": 522, + "__docId__": 523, "kind": "member", "static": false, "variation": null, @@ -11086,7 +11107,7 @@ } }, { - "__docId__": 523, + "__docId__": 524, "kind": "member", "static": false, "variation": null, @@ -11106,7 +11127,7 @@ } }, { - "__docId__": 524, + "__docId__": 525, "kind": "member", "static": false, "variation": null, @@ -11126,7 +11147,7 @@ } }, { - "__docId__": 525, + "__docId__": 526, "kind": "member", "static": false, "variation": null, @@ -11146,7 +11167,7 @@ } }, { - "__docId__": 526, + "__docId__": 527, "kind": "member", "static": false, "variation": null, @@ -11166,7 +11187,7 @@ } }, { - "__docId__": 527, + "__docId__": 528, "kind": "member", "static": false, "variation": null, @@ -11186,7 +11207,7 @@ } }, { - "__docId__": 528, + "__docId__": 529, "kind": "member", "static": false, "variation": null, @@ -11206,7 +11227,7 @@ } }, { - "__docId__": 529, + "__docId__": 530, "kind": "member", "static": false, "variation": null, @@ -11226,7 +11247,7 @@ } }, { - "__docId__": 530, + "__docId__": 531, "kind": "member", "static": false, "variation": null, @@ -11246,7 +11267,7 @@ } }, { - "__docId__": 531, + "__docId__": 532, "kind": "member", "static": false, "variation": null, @@ -11266,7 +11287,7 @@ } }, { - "__docId__": 532, + "__docId__": 533, "kind": "member", "static": false, "variation": null, @@ -11286,7 +11307,7 @@ } }, { - "__docId__": 533, + "__docId__": 534, "kind": "member", "static": false, "variation": null, @@ -11306,7 +11327,7 @@ } }, { - "__docId__": 534, + "__docId__": 535, "kind": "member", "static": false, "variation": null, @@ -11326,7 +11347,7 @@ } }, { - "__docId__": 535, + "__docId__": 536, "kind": "member", "static": false, "variation": null, @@ -11346,7 +11367,7 @@ } }, { - "__docId__": 536, + "__docId__": 537, "kind": "member", "static": false, "variation": null, @@ -11366,7 +11387,7 @@ } }, { - "__docId__": 537, + "__docId__": 538, "kind": "member", "static": false, "variation": null, @@ -11386,7 +11407,7 @@ } }, { - "__docId__": 538, + "__docId__": 539, "kind": "member", "static": false, "variation": null, @@ -11406,7 +11427,7 @@ } }, { - "__docId__": 539, + "__docId__": 540, "kind": "member", "static": false, "variation": null, @@ -11426,7 +11447,7 @@ } }, { - "__docId__": 540, + "__docId__": 541, "kind": "member", "static": false, "variation": null, @@ -11444,7 +11465,7 @@ } }, { - "__docId__": 541, + "__docId__": 542, "kind": "member", "static": false, "variation": null, @@ -11464,7 +11485,7 @@ } }, { - "__docId__": 542, + "__docId__": 543, "kind": "method", "static": false, "variation": null, @@ -11478,7 +11499,7 @@ "generator": false }, { - "__docId__": 543, + "__docId__": 544, "kind": "member", "static": false, "variation": null, @@ -11496,7 +11517,7 @@ } }, { - "__docId__": 544, + "__docId__": 545, "kind": "member", "static": false, "variation": null, @@ -11514,7 +11535,7 @@ } }, { - "__docId__": 545, + "__docId__": 546, "kind": "member", "static": false, "variation": null, @@ -11532,7 +11553,7 @@ } }, { - "__docId__": 546, + "__docId__": 547, "kind": "member", "static": false, "variation": null, @@ -11555,7 +11576,7 @@ } }, { - "__docId__": 547, + "__docId__": 548, "kind": "method", "static": false, "variation": null, @@ -11580,7 +11601,7 @@ "generator": false }, { - "__docId__": 548, + "__docId__": 549, "kind": "method", "static": false, "variation": null, @@ -11594,7 +11615,7 @@ "generator": false }, { - "__docId__": 549, + "__docId__": 550, "kind": "member", "static": false, "variation": null, @@ -11612,7 +11633,7 @@ } }, { - "__docId__": 550, + "__docId__": 551, "kind": "member", "static": false, "variation": null, @@ -11630,7 +11651,7 @@ } }, { - "__docId__": 551, + "__docId__": 552, "kind": "method", "static": false, "variation": null, @@ -11655,7 +11676,7 @@ "generator": false }, { - "__docId__": 552, + "__docId__": 553, "kind": "member", "static": false, "variation": null, @@ -11673,7 +11694,7 @@ } }, { - "__docId__": 553, + "__docId__": 554, "kind": "method", "static": false, "variation": null, @@ -11698,7 +11719,7 @@ "generator": false }, { - "__docId__": 554, + "__docId__": 555, "kind": "method", "static": false, "variation": null, @@ -11720,7 +11741,7 @@ "generator": false }, { - "__docId__": 555, + "__docId__": 556, "kind": "method", "static": false, "variation": null, @@ -11745,7 +11766,7 @@ "generator": false }, { - "__docId__": 556, + "__docId__": 557, "kind": "method", "static": false, "variation": null, @@ -11759,7 +11780,7 @@ "generator": false }, { - "__docId__": 557, + "__docId__": 558, "kind": "member", "static": false, "variation": null, @@ -11777,7 +11798,7 @@ } }, { - "__docId__": 558, + "__docId__": 559, "kind": "method", "static": false, "variation": null, @@ -11791,7 +11812,7 @@ "generator": false }, { - "__docId__": 559, + "__docId__": 560, "kind": "member", "static": false, "variation": null, @@ -11809,7 +11830,7 @@ } }, { - "__docId__": 560, + "__docId__": 561, "kind": "method", "static": false, "variation": null, @@ -11834,7 +11855,7 @@ "generator": false }, { - "__docId__": 561, + "__docId__": 562, "kind": "member", "static": false, "variation": null, @@ -11852,7 +11873,7 @@ } }, { - "__docId__": 562, + "__docId__": 563, "kind": "member", "static": false, "variation": null, @@ -11870,7 +11891,7 @@ } }, { - "__docId__": 563, + "__docId__": 564, "kind": "method", "static": false, "variation": null, @@ -11895,7 +11916,7 @@ "generator": false }, { - "__docId__": 564, + "__docId__": 565, "kind": "method", "static": false, "variation": null, @@ -11909,7 +11930,7 @@ "generator": false }, { - "__docId__": 565, + "__docId__": 566, "kind": "member", "static": false, "variation": null, @@ -11927,7 +11948,7 @@ } }, { - "__docId__": 566, + "__docId__": 567, "kind": "member", "static": false, "variation": null, @@ -11945,7 +11966,7 @@ } }, { - "__docId__": 567, + "__docId__": 568, "kind": "member", "static": false, "variation": null, @@ -11963,7 +11984,7 @@ } }, { - "__docId__": 568, + "__docId__": 569, "kind": "method", "static": false, "variation": null, @@ -11977,7 +11998,7 @@ "generator": false }, { - "__docId__": 569, + "__docId__": 570, "kind": "method", "static": false, "variation": null, @@ -11991,7 +12012,7 @@ "generator": false }, { - "__docId__": 570, + "__docId__": 571, "kind": "method", "static": false, "variation": null, @@ -12005,7 +12026,7 @@ "generator": false }, { - "__docId__": 571, + "__docId__": 572, "kind": "member", "static": false, "variation": null, @@ -12023,7 +12044,7 @@ } }, { - "__docId__": 572, + "__docId__": 573, "kind": "member", "static": false, "variation": null, @@ -12041,7 +12062,7 @@ } }, { - "__docId__": 573, + "__docId__": 574, "kind": "member", "static": false, "variation": null, @@ -12059,7 +12080,7 @@ } }, { - "__docId__": 574, + "__docId__": 575, "kind": "file", "static": true, "variation": null, @@ -12072,7 +12093,7 @@ "content": "import {Feature} from '../feature';\nimport {isFn} from '../types';\nimport {createElm, removeElm} from '../dom';\nimport {addEvt, cancelEvt, stopEvt, targetEvt} from '../event';\nimport {INPUT, NONE} from '../const';\n\n/**\n * Pop-up filter component\n * @export\n * @class PopupFilter\n * @extends {Feature}\n */\nexport class PopupFilter extends Feature {\n\n /**\n * Creates an instance of PopupFilter\n * @param {TableFilter} tf TableFilter instance\n */\n constructor(tf) {\n super(tf, 'popupFilters');\n\n // Configuration object\n let f = this.config;\n\n // Enable external filters\n tf.isExternalFlt = true;\n tf.externalFltTgtIds = [];\n\n /**\n * Filter icon path\n * @type {String}\n */\n this.iconPath = f.popup_filters_image ||\n tf.themesPath + 'icn_filter.gif';\n\n /**\n * Active filter icon path\n * @type {string}\n */\n this.activeIconPath = f.popup_filters_image_active ||\n tf.themesPath + 'icn_filterActive.gif';\n\n /**\n * HTML for the filter icon\n * @type {string}\n */\n this.iconHtml = f.popup_filters_image_html ||\n '\"Column';\n\n /**\n * Css class assigned to filter container element\n * @type {String}\n */\n this.containerCssClass = f.popup_div_css_class || 'popUpFilter';\n\n /**\n * Callback fired before a popup filter is opened\n * @type {Function}\n */\n this.onBeforeOpen = isFn(f.on_before_popup_filter_open) ?\n f.on_before_popup_filter_open : null;\n\n /**\n * Callback fired after a popup filter is opened\n * @type {Function}\n */\n this.onAfterOpen = isFn(f.on_after_popup_filter_open) ?\n f.on_after_popup_filter_open : null;\n\n /**\n * Callback fired before a popup filter is closed\n * @type {Function}\n */\n this.onBeforeClose = isFn(f.on_before_popup_filter_close) ?\n f.on_before_popup_filter_close : null;\n\n /**\n * Callback fired after a popup filter is closed\n * @type {Function}\n */\n this.onAfterClose = isFn(f.on_after_popup_filter_close) ?\n f.on_after_popup_filter_close : null;\n\n /**\n * Collection of filters spans\n * @type {Array}\n * @private\n */\n this.fltSpans = [];\n\n /**\n * Collection of filters icons\n * @type {Array}\n * @private\n */\n this.fltIcons = [];\n\n /**\n * Collection of filters icons cached after pop-up filters are removed\n * @type {Array}\n * @private\n */\n this.filtersCache = null;\n\n /**\n * Collection of filters containers\n * @type {Array}\n * @private\n */\n this.fltElms = this.filtersCache || [];\n\n /**\n * Ensure filter's container element width matches column width\n * @type {Boolean}\n */\n this.adjustToContainer = true;\n\n /**\n * Prefix for pop-up filter span ID\n * @type {String}\n * @private\n */\n this.prfxSpan = 'popUpSpan_';\n\n /**\n * Prefix for pop-up filter container ID\n * @type {String}\n * @private\n */\n this.prfxDiv = 'popUpDiv_';\n }\n\n /**\n * Click event handler for pop-up filter icon\n * @private\n */\n onClick(evt) {\n let elm = targetEvt(evt).parentNode,\n colIndex = parseInt(elm.getAttribute('ci'), 10);\n\n this.closeAll(colIndex);\n this.toggle(colIndex);\n\n if (this.adjustToContainer) {\n let popUpDiv = this.fltElms[colIndex],\n header = this.tf.getHeaderElement(colIndex),\n headerWidth = header.clientWidth * 0.95;\n popUpDiv.style.width = parseInt(headerWidth, 10) + 'px';\n }\n cancelEvt(evt);\n stopEvt(evt);\n }\n\n /**\n * Initialize DOM elements\n */\n init() {\n if (this.initialized) {\n return;\n }\n\n let tf = this.tf;\n\n // Override headers row index if no grouped headers\n if (tf.headersRow <= 1) {\n tf.headersRow = 0;\n }\n\n for (let i = 0; i < tf.nbCells; i++) {\n if (tf.getFilterType(i) === NONE) {\n continue;\n }\n let popUpSpan = createElm(\n 'span',\n ['id', this.prfxSpan + tf.id + '_' + i],\n ['ci', i]\n );\n popUpSpan.innerHTML = this.iconHtml;\n let header = tf.getHeaderElement(i);\n header.appendChild(popUpSpan);\n addEvt(popUpSpan, 'click', (evt) => this.onClick(evt));\n this.fltSpans[i] = popUpSpan;\n this.fltIcons[i] = popUpSpan.firstChild;\n }\n\n // subscribe to events\n this.emitter.on(['before-filtering'], () => this.buildIcons());\n this.emitter.on(['after-filtering'], () => this.closeAll());\n this.emitter.on(['cell-processed'],\n (tf, cellIndex) => this.buildIcon(cellIndex, true));\n this.emitter.on(['filters-row-inserted'], () => this.tf.headersRow++);\n this.emitter.on(['before-filter-init'],\n (tf, colIndex) => this.build(colIndex));\n\n /**\n * @inherited\n */\n this.initialized = true;\n }\n\n /**\n * Reset previously destroyed feature\n */\n reset() {\n this.enable();\n this.init();\n this.buildAll();\n }\n\n /**\n * Build all pop-up filters elements\n */\n buildAll() {\n for (let i = 0; i < this.filtersCache.length; i++) {\n this.build(i, this.filtersCache[i]);\n }\n }\n\n /**\n * Build a specified pop-up filter elements\n * @param {Number} colIndex Column index\n * @param {Object} div Optional container DOM element\n */\n build(colIndex, div) {\n let tf = this.tf;\n let popUpDiv = !div ?\n createElm('div',\n ['id', this.prfxDiv + tf.id + '_' + colIndex]) :\n div;\n popUpDiv.className = this.containerCssClass;\n tf.externalFltTgtIds.push(popUpDiv.id);\n let header = tf.getHeaderElement(colIndex);\n header.insertBefore(popUpDiv, header.firstChild);\n addEvt(popUpDiv, 'click', (evt) => stopEvt(evt));\n this.fltElms[colIndex] = popUpDiv;\n }\n\n /**\n * Toogle visibility of specified filter\n * @param {Number} colIndex Column index\n */\n toggle(colIndex) {\n let tf = this.tf,\n popUpFltElm = this.fltElms[colIndex];\n\n if (popUpFltElm.style.display === NONE ||\n popUpFltElm.style.display === '') {\n if (this.onBeforeOpen) {\n this.onBeforeOpen.call(\n null, this, this.fltElms[colIndex], colIndex);\n }\n popUpFltElm.style.display = 'block';\n if (tf.getFilterType(colIndex) === INPUT) {\n let flt = tf.getFilterElement(colIndex);\n if (flt) {\n flt.focus();\n }\n }\n if (this.onAfterOpen) {\n this.onAfterOpen.call(\n null, this, this.fltElms[colIndex], colIndex);\n }\n } else {\n if (this.onBeforeClose) {\n this.onBeforeClose.call(\n null, this, this.fltElms[colIndex], colIndex);\n }\n popUpFltElm.style.display = NONE;\n if (this.onAfterClose) {\n this.onAfterClose.call(\n null, this, this.fltElms[colIndex], colIndex);\n }\n }\n }\n\n /**\n * Close all filters excepted for the specified one if any\n * @param {Number} exceptIdx Column index of the filter to not close\n */\n closeAll(exceptIdx) {\n for (let i = 0; i < this.fltElms.length; i++) {\n if (i === exceptIdx) {\n continue;\n }\n let popUpFltElm = this.fltElms[i];\n if (popUpFltElm) {\n popUpFltElm.style.display = NONE;\n }\n }\n }\n\n /**\n * Build all the icons representing the pop-up filters\n */\n buildIcons() {\n for (let i = 0; i < this.fltIcons.length; i++) {\n this.buildIcon(i, false);\n }\n }\n\n /**\n * Apply specified icon state\n * @param {Number} colIndex Column index\n * @param {Boolean} active Apply active state\n */\n buildIcon(colIndex, active) {\n if (this.fltIcons[colIndex]) {\n this.fltIcons[colIndex].src = active ?\n this.activeIconPath : this.iconPath;\n }\n }\n\n /**\n * Remove pop-up filters\n */\n destroy() {\n if (!this.initialized) {\n return;\n }\n\n this.filtersCache = [];\n for (let i = 0; i < this.fltElms.length; i++) {\n let popUpFltElm = this.fltElms[i],\n popUpFltSpan = this.fltSpans[i],\n popUpFltImg = this.fltIcons[i];\n if (popUpFltElm) {\n removeElm(popUpFltElm);\n this.filtersCache[i] = popUpFltElm;\n }\n popUpFltElm = null;\n if (popUpFltSpan) {\n removeElm(popUpFltSpan);\n }\n popUpFltSpan = null;\n if (popUpFltImg) {\n removeElm(popUpFltImg);\n }\n popUpFltImg = null;\n }\n this.fltElms = [];\n this.fltSpans = [];\n this.fltIcons = [];\n\n // unsubscribe to events\n this.emitter.off(['before-filtering'], () => this.buildIcons());\n this.emitter.off(['after-filtering'], () => this.closeAll());\n this.emitter.off(['cell-processed'],\n (tf, cellIndex) => this.buildIcon(cellIndex, true));\n this.emitter.off(['filters-row-inserted'], () => this.tf.headersRow++);\n this.emitter.off(['before-filter-init'],\n (tf, colIndex) => this.build(colIndex));\n\n this.initialized = false;\n }\n\n}\n" }, { - "__docId__": 575, + "__docId__": 576, "kind": "class", "static": true, "variation": null, @@ -12101,7 +12122,7 @@ ] }, { - "__docId__": 576, + "__docId__": 577, "kind": "constructor", "static": false, "variation": null, @@ -12126,7 +12147,7 @@ "generator": false }, { - "__docId__": 577, + "__docId__": 578, "kind": "member", "static": false, "variation": null, @@ -12146,7 +12167,7 @@ } }, { - "__docId__": 578, + "__docId__": 579, "kind": "member", "static": false, "variation": null, @@ -12166,7 +12187,7 @@ } }, { - "__docId__": 579, + "__docId__": 580, "kind": "member", "static": false, "variation": null, @@ -12186,7 +12207,7 @@ } }, { - "__docId__": 580, + "__docId__": 581, "kind": "member", "static": false, "variation": null, @@ -12206,7 +12227,7 @@ } }, { - "__docId__": 581, + "__docId__": 582, "kind": "member", "static": false, "variation": null, @@ -12226,7 +12247,7 @@ } }, { - "__docId__": 582, + "__docId__": 583, "kind": "member", "static": false, "variation": null, @@ -12246,7 +12267,7 @@ } }, { - "__docId__": 583, + "__docId__": 584, "kind": "member", "static": false, "variation": null, @@ -12266,7 +12287,7 @@ } }, { - "__docId__": 584, + "__docId__": 585, "kind": "member", "static": false, "variation": null, @@ -12286,7 +12307,7 @@ } }, { - "__docId__": 585, + "__docId__": 586, "kind": "member", "static": false, "variation": null, @@ -12306,7 +12327,7 @@ } }, { - "__docId__": 586, + "__docId__": 587, "kind": "member", "static": false, "variation": null, @@ -12326,7 +12347,7 @@ } }, { - "__docId__": 587, + "__docId__": 588, "kind": "member", "static": false, "variation": null, @@ -12346,7 +12367,7 @@ } }, { - "__docId__": 588, + "__docId__": 589, "kind": "member", "static": false, "variation": null, @@ -12366,7 +12387,7 @@ } }, { - "__docId__": 589, + "__docId__": 590, "kind": "member", "static": false, "variation": null, @@ -12386,7 +12407,7 @@ } }, { - "__docId__": 590, + "__docId__": 591, "kind": "member", "static": false, "variation": null, @@ -12406,7 +12427,7 @@ } }, { - "__docId__": 591, + "__docId__": 592, "kind": "member", "static": false, "variation": null, @@ -12426,7 +12447,7 @@ } }, { - "__docId__": 592, + "__docId__": 593, "kind": "method", "static": false, "variation": null, @@ -12447,7 +12468,7 @@ "generator": false }, { - "__docId__": 593, + "__docId__": 594, "kind": "method", "static": false, "variation": null, @@ -12461,7 +12482,7 @@ "generator": false }, { - "__docId__": 594, + "__docId__": 595, "kind": "member", "static": false, "variation": null, @@ -12484,7 +12505,7 @@ } }, { - "__docId__": 595, + "__docId__": 596, "kind": "method", "static": false, "variation": null, @@ -12498,7 +12519,7 @@ "generator": false }, { - "__docId__": 596, + "__docId__": 597, "kind": "method", "static": false, "variation": null, @@ -12512,7 +12533,7 @@ "generator": false }, { - "__docId__": 597, + "__docId__": 598, "kind": "method", "static": false, "variation": null, @@ -12547,7 +12568,7 @@ "generator": false }, { - "__docId__": 598, + "__docId__": 599, "kind": "method", "static": false, "variation": null, @@ -12572,7 +12593,7 @@ "generator": false }, { - "__docId__": 599, + "__docId__": 600, "kind": "method", "static": false, "variation": null, @@ -12597,7 +12618,7 @@ "generator": false }, { - "__docId__": 600, + "__docId__": 601, "kind": "method", "static": false, "variation": null, @@ -12611,7 +12632,7 @@ "generator": false }, { - "__docId__": 601, + "__docId__": 602, "kind": "method", "static": false, "variation": null, @@ -12646,7 +12667,7 @@ "generator": false }, { - "__docId__": 602, + "__docId__": 603, "kind": "method", "static": false, "variation": null, @@ -12660,7 +12681,7 @@ "generator": false }, { - "__docId__": 603, + "__docId__": 604, "kind": "member", "static": false, "variation": null, @@ -12678,7 +12699,7 @@ } }, { - "__docId__": 604, + "__docId__": 605, "kind": "member", "static": false, "variation": null, @@ -12696,7 +12717,7 @@ } }, { - "__docId__": 605, + "__docId__": 606, "kind": "member", "static": false, "variation": null, @@ -12714,7 +12735,7 @@ } }, { - "__docId__": 606, + "__docId__": 607, "kind": "member", "static": false, "variation": null, @@ -12732,7 +12753,7 @@ } }, { - "__docId__": 607, + "__docId__": 608, "kind": "member", "static": false, "variation": null, @@ -12750,7 +12771,7 @@ } }, { - "__docId__": 608, + "__docId__": 609, "kind": "file", "static": true, "variation": null, @@ -12763,7 +12784,7 @@ "content": "import {Feature} from '../feature';\nimport {createElm, createText, elm, removeElm} from '../dom';\nimport {isFn} from '../types';\n\n/**\n * Rows counter UI component\n * @export\n * @class RowsCounter\n * @extends {Feature}\n */\nexport class RowsCounter extends Feature {\n\n /**\n * Creates an instance of RowsCounter\n * @param {TableFilter} tf TableFilter instance\n */\n constructor(tf) {\n super(tf, 'rowsCounter');\n\n // TableFilter configuration\n let f = this.config;\n\n /**\n * ID of custom container element\n * @type {String}\n */\n this.targetId = f.rows_counter_target_id || null;\n\n /**\n * Container DOM element\n * @type {DOMElement}\n * @private\n */\n this.container = null;\n\n /**\n * Container DOM element for label displaying the total number of rows\n * @type {DOMElement}\n * @private\n */\n this.label = null;\n\n /**\n * Text preceding the total number of rows\n * @type {String}\n */\n this.text = f.rows_counter_text || 'Rows: ';\n\n /**\n * Separator symbol appearing between the first and last visible rows of\n * current page when paging is enabled. ie: Rows: 31-40 / 70\n * @type {String}\n */\n this.fromToTextSeparator = f.from_to_text_separator || '-';\n\n /**\n * Separator symbol appearing between the first and last visible rows of\n * current page and the total number of filterable rows when paging is\n * enabled. ie: Rows: 31-40 / 70\n * @type {String}\n */\n this.overText = f.over_text || ' / ';\n\n /**\n * Css class for container element\n * @type {String}\n */\n this.cssClass = f.tot_rows_css_class || 'tot';\n\n /**\n * Prefix for container ID\n * @type {String}\n * @private\n */\n this.prfxCounter = 'counter_';\n\n /**\n * Prefix for DOM element containing the counter\n * @type {String}\n * @private\n */\n this.prfxLabel = 'totrows_span_';\n\n /**\n * Prefix for label preceding the counter\n * @type {String}\n * @private\n */\n this.prfxText = 'totRowsTextSpan_';\n\n /**\n * Callback fired before the counter is refreshed\n * @type {Function}\n */\n this.onBeforeRefreshCounter = isFn(f.on_before_refresh_counter) ?\n f.on_before_refresh_counter : null;\n\n /**\n * Callback fired after the counter is refreshed\n * @type {Function}\n */\n this.onAfterRefreshCounter = isFn(f.on_after_refresh_counter) ?\n f.on_after_refresh_counter : null;\n }\n\n /**\n * Initializes RowsCounter instance\n */\n init() {\n if (this.initialized) {\n return;\n }\n\n let tf = this.tf;\n\n //rows counter container\n let countDiv = createElm('div', ['id', this.prfxCounter + tf.id]);\n countDiv.className = this.cssClass;\n //rows counter label\n let countSpan = createElm('span', ['id', this.prfxLabel + tf.id]);\n let countText = createElm('span', ['id', this.prfxText + tf.id]);\n countText.appendChild(createText(this.text));\n\n // counter is added to defined element\n if (!this.targetId) {\n tf.setToolbar();\n }\n let targetEl = !this.targetId ? tf.lDiv : elm(this.targetId);\n\n //default container: 'lDiv'\n if (!this.targetId) {\n countDiv.appendChild(countText);\n countDiv.appendChild(countSpan);\n targetEl.appendChild(countDiv);\n }\n else {\n //custom container, no need to append statusDiv\n targetEl.appendChild(countText);\n targetEl.appendChild(countSpan);\n }\n this.container = countDiv;\n this.label = countSpan;\n\n // subscribe to events\n this.emitter.on(['after-filtering', 'grouped-by-page'],\n () => this.refresh(tf.getValidRowsNb()));\n this.emitter.on(['rows-changed'], () => this.refresh());\n\n /**\n * @inherited\n */\n this.initialized = true;\n this.refresh();\n }\n\n /**\n * Refreshes the rows counter\n * @param {Number} p Optional parameter the total number of rows to display\n * @returns\n */\n refresh(p) {\n if (!this.initialized || !this.isEnabled()) {\n return;\n }\n\n let tf = this.tf;\n\n if (this.onBeforeRefreshCounter) {\n this.onBeforeRefreshCounter.call(null, tf, this.label);\n }\n\n let totTxt;\n if (!tf.paging) {\n if (p && p !== '') {\n totTxt = p;\n } else {\n totTxt = tf.getFilterableRowsNb() - tf.nbHiddenRows;\n }\n } else {\n let paging = tf.feature('paging');\n if (paging) {\n //paging start row\n let pagingStartRow = parseInt(paging.startPagingRow, 10) +\n ((tf.getValidRowsNb() > 0) ? 1 : 0);\n let pagingEndRow =\n (pagingStartRow + paging.pagingLength) - 1 <=\n tf.getValidRowsNb() ?\n pagingStartRow + paging.pagingLength - 1 :\n tf.getValidRowsNb();\n totTxt = pagingStartRow + this.fromToTextSeparator +\n pagingEndRow + this.overText + tf.getValidRowsNb();\n }\n }\n\n this.label.innerHTML = totTxt;\n if (this.onAfterRefreshCounter) {\n this.onAfterRefreshCounter.call(null, tf, this.label, totTxt);\n }\n }\n\n /**\n * Remove feature\n */\n destroy() {\n if (!this.initialized) {\n return;\n }\n\n if (!this.targetId && this.container) {\n removeElm(this.container);\n } else {\n elm(this.targetId).innerHTML = '';\n }\n this.label = null;\n this.container = null;\n\n // unsubscribe to events\n this.emitter.off(['after-filtering', 'grouped-by-page'],\n () => this.refresh(tf.getValidRowsNb()));\n this.emitter.off(['rows-changed'], () => this.refresh());\n\n this.initialized = false;\n }\n}\n" }, { - "__docId__": 609, + "__docId__": 610, "kind": "class", "static": true, "variation": null, @@ -12792,7 +12813,7 @@ ] }, { - "__docId__": 610, + "__docId__": 611, "kind": "constructor", "static": false, "variation": null, @@ -12817,7 +12838,7 @@ "generator": false }, { - "__docId__": 611, + "__docId__": 612, "kind": "member", "static": false, "variation": null, @@ -12837,7 +12858,7 @@ } }, { - "__docId__": 612, + "__docId__": 613, "kind": "member", "static": false, "variation": null, @@ -12857,7 +12878,7 @@ } }, { - "__docId__": 613, + "__docId__": 614, "kind": "member", "static": false, "variation": null, @@ -12877,7 +12898,7 @@ } }, { - "__docId__": 614, + "__docId__": 615, "kind": "member", "static": false, "variation": null, @@ -12897,7 +12918,7 @@ } }, { - "__docId__": 615, + "__docId__": 616, "kind": "member", "static": false, "variation": null, @@ -12917,7 +12938,7 @@ } }, { - "__docId__": 616, + "__docId__": 617, "kind": "member", "static": false, "variation": null, @@ -12937,7 +12958,7 @@ } }, { - "__docId__": 617, + "__docId__": 618, "kind": "member", "static": false, "variation": null, @@ -12957,7 +12978,7 @@ } }, { - "__docId__": 618, + "__docId__": 619, "kind": "member", "static": false, "variation": null, @@ -12977,7 +12998,7 @@ } }, { - "__docId__": 619, + "__docId__": 620, "kind": "member", "static": false, "variation": null, @@ -12997,7 +13018,7 @@ } }, { - "__docId__": 620, + "__docId__": 621, "kind": "member", "static": false, "variation": null, @@ -13017,7 +13038,7 @@ } }, { - "__docId__": 621, + "__docId__": 622, "kind": "member", "static": false, "variation": null, @@ -13037,7 +13058,7 @@ } }, { - "__docId__": 622, + "__docId__": 623, "kind": "member", "static": false, "variation": null, @@ -13057,7 +13078,7 @@ } }, { - "__docId__": 623, + "__docId__": 624, "kind": "method", "static": false, "variation": null, @@ -13071,7 +13092,7 @@ "generator": false }, { - "__docId__": 624, + "__docId__": 625, "kind": "member", "static": false, "variation": null, @@ -13089,7 +13110,7 @@ } }, { - "__docId__": 625, + "__docId__": 626, "kind": "member", "static": false, "variation": null, @@ -13107,7 +13128,7 @@ } }, { - "__docId__": 626, + "__docId__": 627, "kind": "member", "static": false, "variation": null, @@ -13130,7 +13151,7 @@ } }, { - "__docId__": 627, + "__docId__": 628, "kind": "method", "static": false, "variation": null, @@ -13161,7 +13182,7 @@ "generator": false }, { - "__docId__": 628, + "__docId__": 629, "kind": "method", "static": false, "variation": null, @@ -13175,7 +13196,7 @@ "generator": false }, { - "__docId__": 629, + "__docId__": 630, "kind": "member", "static": false, "variation": null, @@ -13193,7 +13214,7 @@ } }, { - "__docId__": 630, + "__docId__": 631, "kind": "member", "static": false, "variation": null, @@ -13211,7 +13232,7 @@ } }, { - "__docId__": 631, + "__docId__": 632, "kind": "member", "static": false, "variation": null, @@ -13229,7 +13250,7 @@ } }, { - "__docId__": 632, + "__docId__": 633, "kind": "file", "static": true, "variation": null, @@ -13242,7 +13263,7 @@ "content": "import {Feature} from '../feature';\nimport {Hash} from './hash';\nimport {Storage} from './storage';\nimport {isEmpty} from '../string';\nimport {isArray, isNull, isString, isUndef} from '../types';\n\n/**\n * Features state object persistable with localStorage, cookie or URL hash\n *\n * @export\n * @class State\n * @extends {Feature}\n */\nexport class State extends Feature {\n\n /**\n * Creates an instance of State\n * @param {TableFilter} tf TableFilter instance\n */\n constructor(tf) {\n super(tf, 'state');\n\n let cfg = this.config.state;\n\n /**\n * Determines whether state is persisted with URL hash\n * @type {Boolean}\n */\n this.enableHash = cfg === true ||\n (isArray(cfg.types) && cfg.types.indexOf('hash') !== -1);\n\n /**\n * Determines whether state is persisted with localStorage\n * @type {Boolean}\n */\n this.enableLocalStorage = isArray(cfg.types) &&\n cfg.types.indexOf('local_storage') !== -1;\n\n /**\n * Determines whether state is persisted with localStorage\n * @type {Boolean}\n */\n this.enableCookie = isArray(cfg.types) &&\n cfg.types.indexOf('cookie') !== -1;\n\n /**\n * Persist filters values, enabled by default\n * @type {Boolean}\n */\n this.persistFilters = cfg.filters === false ? false : true;\n\n /**\n * Persist current page number when paging is enabled\n * @type {Boolean}\n */\n this.persistPageNumber = Boolean(cfg.page_number);\n\n /**\n * Persist page length when paging is enabled\n * @type {Boolean}\n */\n this.persistPageLength = Boolean(cfg.page_length);\n\n /**\n * Persist column sorting\n * @type {Boolean}\n */\n this.persistSort = Boolean(cfg.sort);\n\n /**\n * Persist columns visibility\n * @type {Boolean}\n */\n this.persistColsVisibility = Boolean(cfg.columns_visibility);\n\n /**\n * Persist filters row visibility\n * @type {Boolean}\n */\n this.persistFiltersVisibility = Boolean(cfg.filters_visibility);\n\n /**\n * Cookie duration in hours\n * @type {Boolean}\n */\n this.cookieDuration = !isNaN(cfg.cookie_duration) ?\n parseInt(cfg.cookie_duration, 10) : 87600;\n\n /**\n * Enable Storage if localStorage or cookie is required\n * @type {Boolean}\n * @private\n */\n this.enableStorage = this.enableLocalStorage || this.enableCookie;\n\n /**\n * Storage instance if storage is required\n * @type {Storage}\n * @private\n */\n this.storage = null;\n\n /**\n * Hash instance if URL hash is required\n * @type {Boolean}\n * @private\n */\n this.hash = null;\n\n /**\n * Current page number\n * @type {Number}\n * @private\n */\n this.pageNb = null;\n\n /**\n * Current page length\n * @type {Number}\n * @private\n */\n this.pageLength = null;\n\n /**\n * Current column sorting\n * @type {Object}\n * @private\n */\n this.sort = null;\n\n /**\n * Current hidden columns\n * @type {Object}\n * @private\n */\n this.hiddenCols = null;\n\n /**\n * Filters row visibility\n * @type {Boolean}\n * @private\n */\n this.filtersVisibility = null;\n\n /**\n * State object\n * @type {Object}\n * @private\n */\n this.state = {};\n\n /**\n * Prefix for column ID\n * @type {String}\n * @private\n */\n this.prfxCol = 'col_';\n\n /**\n * Prefix for page number ID\n * @type {String}\n * @private\n */\n this.pageNbKey = 'page';\n\n /**\n * Prefix for page length ID\n * @type {String}\n * @private\n */\n this.pageLengthKey = 'page_length';\n\n /**\n * Prefix for filters visibility ID\n * @type {String}\n * @private\n */\n this.filtersVisKey = 'filters_visibility';\n }\n\n /**\n * Initializes State instance\n */\n init() {\n if (this.initialized) {\n return;\n }\n\n this.emitter.on(['after-filtering'], () => this.update());\n this.emitter.on(['after-page-change', 'after-clearing-filters'],\n (tf, pageNb) => this.updatePage(pageNb));\n this.emitter.on(['after-page-length-change'],\n (tf, pageLength) => this.updatePageLength(pageLength));\n this.emitter.on(['column-sorted'],\n (tf, index, descending) => this.updateSort(index, descending));\n this.emitter.on(['sort-initialized'], () => this._syncSort());\n this.emitter.on(['columns-visibility-initialized'],\n () => this._syncColsVisibility());\n this.emitter.on(['column-shown', 'column-hidden'], (tf, feature,\n colIndex, hiddenCols) => this.updateColsVisibility(hiddenCols));\n this.emitter.on(['filters-visibility-initialized'],\n () => this._syncFiltersVisibility());\n this.emitter.on(['filters-toggled'],\n (tf, extension, visible) => this.updateFiltersVisibility(visible));\n\n if (this.enableHash) {\n this.hash = new Hash(this);\n this.hash.init();\n }\n if (this.enableStorage) {\n this.storage = new Storage(this);\n this.storage.init();\n }\n\n /**\n * @inherited\n */\n this.initialized = true;\n }\n\n\n /**\n * Update state object based on current features state\n */\n update() {\n if (!this.isEnabled()) {\n return;\n }\n let state = this.state;\n let tf = this.tf;\n\n if (this.persistFilters) {\n let filterValues = tf.getFiltersValue();\n\n filterValues.forEach((val, idx) => {\n let key = `${this.prfxCol}${idx}`;\n\n if (isString(val) && isEmpty(val)) {\n if (state.hasOwnProperty(key)) {\n state[key].flt = undefined;\n }\n } else {\n state[key] = state[key] || {};\n state[key].flt = val;\n }\n });\n }\n\n if (this.persistPageNumber) {\n if (isNull(this.pageNb)) {\n state[this.pageNbKey] = undefined;\n } else {\n state[this.pageNbKey] = this.pageNb;\n }\n }\n\n if (this.persistPageLength) {\n if (isNull(this.pageLength)) {\n state[this.pageLengthKey] = undefined;\n } else {\n state[this.pageLengthKey] = this.pageLength;\n }\n }\n\n if (this.persistSort) {\n if (!isNull(this.sort)) {\n // Remove previuosly sorted column\n Object.keys(state).forEach((key) => {\n if (key.indexOf(this.prfxCol) !== -1 && state[key]) {\n state[key].sort = undefined;\n }\n });\n\n let key = `${this.prfxCol}${this.sort.column}`;\n state[key] = state[key] || {};\n state[key].sort = { descending: this.sort.descending };\n }\n }\n\n if (this.persistColsVisibility) {\n if (!isNull(this.hiddenCols)) {\n // Clear previuosly hidden columns\n Object.keys(state).forEach((key) => {\n if (key.indexOf(this.prfxCol) !== -1 && state[key]) {\n state[key].hidden = undefined;\n }\n });\n\n this.hiddenCols.forEach((colIdx) => {\n let key = `${this.prfxCol}${colIdx}`;\n state[key] = state[key] || {};\n state[key].hidden = true;\n });\n }\n }\n\n if (this.persistFiltersVisibility) {\n if (isNull(this.filtersVisibility)) {\n state[this.filtersVisKey] = undefined;\n } else {\n state[this.filtersVisKey] = this.filtersVisibility;\n }\n }\n\n this.emitter.emit('state-changed', tf, state);\n }\n\n /**\n * Refresh page number field on page number changes\n *\n * @param {Number} pageNb Current page number\n */\n updatePage(pageNb) {\n this.pageNb = pageNb;\n this.update();\n }\n\n /**\n * Refresh page length field on page length changes\n *\n * @param {Number} pageLength Current page length value\n */\n updatePageLength(pageLength) {\n this.pageLength = pageLength;\n this.update();\n }\n\n /**\n * Refresh column sorting information on sort changes\n *\n * @param index {Number} Column index\n * @param {Boolean} descending Descending manner\n */\n updateSort(index, descending) {\n this.sort = {\n column: index,\n descending: descending\n };\n this.update();\n }\n\n /**\n * Refresh hidden columns information on columns visibility changes\n *\n * @param {Array} hiddenCols Columns indexes\n */\n updateColsVisibility(hiddenCols) {\n this.hiddenCols = hiddenCols;\n this.update();\n }\n\n /**\n * Refresh filters visibility on filters visibility change\n *\n * @param {Boolean} visible Visibility flad\n */\n updateFiltersVisibility(visible) {\n this.filtersVisibility = visible;\n this.update();\n }\n\n /**\n * Override state field\n *\n * @param state State object\n */\n override(state) {\n this.state = state;\n }\n\n /**\n * Sync stored features state\n */\n sync() {\n let state = this.state;\n let tf = this.tf;\n\n this._syncFilters();\n\n if (this.persistPageNumber) {\n let pageNumber = state[this.pageNbKey];\n this.emitter.emit('change-page', tf, pageNumber);\n }\n\n if (this.persistPageLength) {\n let pageLength = state[this.pageLengthKey];\n this.emitter.emit('change-page-results', tf, pageLength);\n }\n\n this._syncSort();\n this._syncColsVisibility();\n this._syncFiltersVisibility();\n }\n\n /**\n * Override current state with passed one and sync features\n *\n * @param {Object} state State object\n */\n overrideAndSync(state) {\n // To prevent state to react to features changes, state is temporarily\n // disabled\n this.disable();\n // State is overriden with passed state object\n this.override(state);\n // New hash state is applied to features\n this.sync();\n // State is re-enabled\n this.enable();\n }\n\n /**\n * Sync filters with stored values and filter table\n *\n * @private\n */\n _syncFilters() {\n if (!this.persistFilters) {\n return;\n }\n let state = this.state;\n let tf = this.tf;\n\n Object.keys(state).forEach((key) => {\n if (key.indexOf(this.prfxCol) !== -1) {\n let colIdx = parseInt(key.replace(this.prfxCol, ''), 10);\n let val = state[key].flt;\n tf.setFilterValue(colIdx, val);\n }\n });\n\n tf.filter();\n }\n\n /**\n * Sync sorted column with stored sorting information and sort table\n *\n * @private\n */\n _syncSort() {\n if (!this.persistSort) {\n return;\n }\n let state = this.state;\n let tf = this.tf;\n\n Object.keys(state).forEach((key) => {\n if (key.indexOf(this.prfxCol) !== -1) {\n let colIdx = parseInt(key.replace(this.prfxCol, ''), 10);\n if (!isUndef(state[key].sort)) {\n let sort = state[key].sort;\n this.emitter.emit('sort', tf, colIdx, sort.descending);\n }\n }\n });\n }\n\n /**\n * Sync hidden columns with stored information\n *\n * @private\n */\n _syncColsVisibility() {\n if (!this.persistColsVisibility) {\n return;\n }\n let state = this.state;\n let tf = this.tf;\n let hiddenCols = [];\n\n Object.keys(state).forEach((key) => {\n if (key.indexOf(this.prfxCol) !== -1) {\n let colIdx = parseInt(key.replace(this.prfxCol, ''), 10);\n if (!isUndef(state[key].hidden)) {\n hiddenCols.push(colIdx);\n }\n }\n });\n\n hiddenCols.forEach((colIdx) => {\n this.emitter.emit('hide-column', tf, colIdx);\n });\n }\n\n /**\n * Sync filters visibility with stored information\n *\n * @private\n */\n _syncFiltersVisibility() {\n if (!this.persistFiltersVisibility) {\n return;\n }\n let state = this.state;\n let tf = this.tf;\n let filtersVisibility = state[this.filtersVisKey];\n\n this.filtersVisibility = filtersVisibility;\n this.emitter.emit('show-filters', tf, filtersVisibility);\n }\n\n /**\n * Destroy State instance\n */\n destroy() {\n if (!this.initialized) {\n return;\n }\n\n this.state = {};\n\n this.emitter.off(['after-filtering'], () => this.update());\n this.emitter.off(['after-page-change', 'after-clearing-filters'],\n (tf, pageNb) => this.updatePage(pageNb));\n this.emitter.off(['after-page-length-change'],\n (tf, index) => this.updatePageLength(index));\n this.emitter.off(['column-sorted'],\n (tf, index, descending) => this.updateSort(index, descending));\n this.emitter.off(['sort-initialized'], () => this._syncSort());\n this.emitter.off(['columns-visibility-initialized'],\n () => this._syncColsVisibility());\n this.emitter.off(['column-shown', 'column-hidden'], (tf, feature,\n colIndex, hiddenCols) => this.updateColsVisibility(hiddenCols));\n this.emitter.off(['filters-visibility-initialized'],\n () => this._syncFiltersVisibility());\n this.emitter.off(['filters-toggled'],\n (tf, extension, visible) => this.updateFiltersVisibility(visible));\n\n if (this.enableHash) {\n this.hash.destroy();\n this.hash = null;\n }\n\n if (this.enableStorage) {\n this.storage.destroy();\n this.storage = null;\n }\n\n this.initialized = false;\n }\n}\n" }, { - "__docId__": 633, + "__docId__": 634, "kind": "class", "static": true, "variation": null, @@ -13271,7 +13292,7 @@ ] }, { - "__docId__": 634, + "__docId__": 635, "kind": "constructor", "static": false, "variation": null, @@ -13296,7 +13317,7 @@ "generator": false }, { - "__docId__": 635, + "__docId__": 636, "kind": "member", "static": false, "variation": null, @@ -13316,7 +13337,7 @@ } }, { - "__docId__": 636, + "__docId__": 637, "kind": "member", "static": false, "variation": null, @@ -13336,7 +13357,7 @@ } }, { - "__docId__": 637, + "__docId__": 638, "kind": "member", "static": false, "variation": null, @@ -13356,7 +13377,7 @@ } }, { - "__docId__": 638, + "__docId__": 639, "kind": "member", "static": false, "variation": null, @@ -13376,7 +13397,7 @@ } }, { - "__docId__": 639, + "__docId__": 640, "kind": "member", "static": false, "variation": null, @@ -13396,7 +13417,7 @@ } }, { - "__docId__": 640, + "__docId__": 641, "kind": "member", "static": false, "variation": null, @@ -13416,7 +13437,7 @@ } }, { - "__docId__": 641, + "__docId__": 642, "kind": "member", "static": false, "variation": null, @@ -13436,7 +13457,7 @@ } }, { - "__docId__": 642, + "__docId__": 643, "kind": "member", "static": false, "variation": null, @@ -13456,7 +13477,7 @@ } }, { - "__docId__": 643, + "__docId__": 644, "kind": "member", "static": false, "variation": null, @@ -13476,7 +13497,7 @@ } }, { - "__docId__": 644, + "__docId__": 645, "kind": "member", "static": false, "variation": null, @@ -13496,7 +13517,7 @@ } }, { - "__docId__": 645, + "__docId__": 646, "kind": "member", "static": false, "variation": null, @@ -13516,7 +13537,7 @@ } }, { - "__docId__": 646, + "__docId__": 647, "kind": "member", "static": false, "variation": null, @@ -13536,7 +13557,7 @@ } }, { - "__docId__": 647, + "__docId__": 648, "kind": "member", "static": false, "variation": null, @@ -13556,7 +13577,7 @@ } }, { - "__docId__": 648, + "__docId__": 649, "kind": "member", "static": false, "variation": null, @@ -13576,7 +13597,7 @@ } }, { - "__docId__": 649, + "__docId__": 650, "kind": "member", "static": false, "variation": null, @@ -13596,7 +13617,7 @@ } }, { - "__docId__": 650, + "__docId__": 651, "kind": "member", "static": false, "variation": null, @@ -13616,7 +13637,7 @@ } }, { - "__docId__": 651, + "__docId__": 652, "kind": "member", "static": false, "variation": null, @@ -13636,7 +13657,7 @@ } }, { - "__docId__": 652, + "__docId__": 653, "kind": "member", "static": false, "variation": null, @@ -13656,7 +13677,7 @@ } }, { - "__docId__": 653, + "__docId__": 654, "kind": "member", "static": false, "variation": null, @@ -13676,7 +13697,7 @@ } }, { - "__docId__": 654, + "__docId__": 655, "kind": "member", "static": false, "variation": null, @@ -13696,7 +13717,7 @@ } }, { - "__docId__": 655, + "__docId__": 656, "kind": "member", "static": false, "variation": null, @@ -13716,7 +13737,7 @@ } }, { - "__docId__": 656, + "__docId__": 657, "kind": "member", "static": false, "variation": null, @@ -13736,7 +13757,7 @@ } }, { - "__docId__": 657, + "__docId__": 658, "kind": "member", "static": false, "variation": null, @@ -13756,7 +13777,7 @@ } }, { - "__docId__": 658, + "__docId__": 659, "kind": "method", "static": false, "variation": null, @@ -13770,7 +13791,7 @@ "generator": false }, { - "__docId__": 659, + "__docId__": 660, "kind": "member", "static": false, "variation": null, @@ -13788,7 +13809,7 @@ } }, { - "__docId__": 660, + "__docId__": 661, "kind": "member", "static": false, "variation": null, @@ -13806,7 +13827,7 @@ } }, { - "__docId__": 661, + "__docId__": 662, "kind": "member", "static": false, "variation": null, @@ -13829,7 +13850,7 @@ } }, { - "__docId__": 662, + "__docId__": 663, "kind": "method", "static": false, "variation": null, @@ -13843,7 +13864,7 @@ "generator": false }, { - "__docId__": 663, + "__docId__": 664, "kind": "method", "static": false, "variation": null, @@ -13868,7 +13889,7 @@ "generator": false }, { - "__docId__": 664, + "__docId__": 665, "kind": "member", "static": false, "variation": null, @@ -13886,7 +13907,7 @@ } }, { - "__docId__": 665, + "__docId__": 666, "kind": "method", "static": false, "variation": null, @@ -13911,7 +13932,7 @@ "generator": false }, { - "__docId__": 666, + "__docId__": 667, "kind": "member", "static": false, "variation": null, @@ -13929,7 +13950,7 @@ } }, { - "__docId__": 667, + "__docId__": 668, "kind": "method", "static": false, "variation": null, @@ -13964,7 +13985,7 @@ "generator": false }, { - "__docId__": 668, + "__docId__": 669, "kind": "member", "static": false, "variation": null, @@ -13982,7 +14003,7 @@ } }, { - "__docId__": 669, + "__docId__": 670, "kind": "method", "static": false, "variation": null, @@ -14007,7 +14028,7 @@ "generator": false }, { - "__docId__": 670, + "__docId__": 671, "kind": "member", "static": false, "variation": null, @@ -14025,7 +14046,7 @@ } }, { - "__docId__": 671, + "__docId__": 672, "kind": "method", "static": false, "variation": null, @@ -14050,7 +14071,7 @@ "generator": false }, { - "__docId__": 672, + "__docId__": 673, "kind": "member", "static": false, "variation": null, @@ -14068,7 +14089,7 @@ } }, { - "__docId__": 673, + "__docId__": 674, "kind": "method", "static": false, "variation": null, @@ -14093,7 +14114,7 @@ "generator": false }, { - "__docId__": 674, + "__docId__": 675, "kind": "member", "static": false, "variation": null, @@ -14111,7 +14132,7 @@ } }, { - "__docId__": 675, + "__docId__": 676, "kind": "method", "static": false, "variation": null, @@ -14125,7 +14146,7 @@ "generator": false }, { - "__docId__": 676, + "__docId__": 677, "kind": "method", "static": false, "variation": null, @@ -14150,7 +14171,7 @@ "generator": false }, { - "__docId__": 677, + "__docId__": 678, "kind": "method", "static": false, "variation": null, @@ -14164,7 +14185,7 @@ "generator": false }, { - "__docId__": 678, + "__docId__": 679, "kind": "method", "static": false, "variation": null, @@ -14178,7 +14199,7 @@ "generator": false }, { - "__docId__": 679, + "__docId__": 680, "kind": "method", "static": false, "variation": null, @@ -14192,7 +14213,7 @@ "generator": false }, { - "__docId__": 680, + "__docId__": 681, "kind": "method", "static": false, "variation": null, @@ -14206,7 +14227,7 @@ "generator": false }, { - "__docId__": 681, + "__docId__": 682, "kind": "member", "static": false, "variation": null, @@ -14224,7 +14245,7 @@ } }, { - "__docId__": 682, + "__docId__": 683, "kind": "method", "static": false, "variation": null, @@ -14238,7 +14259,7 @@ "generator": false }, { - "__docId__": 683, + "__docId__": 684, "kind": "member", "static": false, "variation": null, @@ -14256,7 +14277,7 @@ } }, { - "__docId__": 684, + "__docId__": 685, "kind": "member", "static": false, "variation": null, @@ -14274,7 +14295,7 @@ } }, { - "__docId__": 685, + "__docId__": 686, "kind": "member", "static": false, "variation": null, @@ -14292,7 +14313,7 @@ } }, { - "__docId__": 686, + "__docId__": 687, "kind": "member", "static": false, "variation": null, @@ -14310,7 +14331,7 @@ } }, { - "__docId__": 687, + "__docId__": 688, "kind": "file", "static": true, "variation": null, @@ -14323,7 +14344,7 @@ "content": "import {Feature} from '../feature';\nimport {root} from '../root';\nimport {createElm, createText, elm, removeElm} from '../dom';\nimport {isFn} from '../types';\n\n/**\n * Status bar UI component\n * @export\n * @class StatusBar\n * @extends {Feature}\n */\nexport class StatusBar extends Feature {\n\n /**\n * Creates an instance of StatusBar\n * @param {TableFilter} tf TableFilter instance\n */\n constructor(tf) {\n super(tf, 'statusBar');\n\n // Configuration object\n let f = this.config;\n\n /**\n * ID of custom container element\n * @type {String}\n */\n this.targetId = f.status_bar_target_id || null;\n\n /**\n * Container DOM element\n * @type {DOMElement}\n * @private\n */\n this.container = null;\n\n /**\n * Message container DOM element\n * @type {DOMElement}\n * @private\n */\n this.msgContainer = null;\n\n /**\n * Label container DOM element\n * @type {DOMElement}\n * @private\n */\n this.labelContainer = null;\n\n /**\n * Text preceding status message\n * @type {String}\n */\n this.text = f.status_bar_text || '';\n\n /**\n * Css class for container element\n * @type {String}\n */\n this.cssClass = f.status_bar_css_class || 'status';\n\n /**\n * Message visibility duration in milliseconds\n * @type {Number}\n * @private\n */\n this.delay = 250;\n\n /**\n * Callback fired before the message is displayed\n * @type {Function}\n */\n this.onBeforeShowMsg = isFn(f.on_before_show_msg) ?\n f.on_before_show_msg : null;\n\n /**\n * Callback fired after the message is displayed\n * @type {Function}\n */\n this.onAfterShowMsg = isFn(f.on_after_show_msg) ?\n f.on_after_show_msg : null;\n\n /**\n * Message appearing upon filtering\n * @type {String}\n */\n this.msgFilter = f.msg_filter || 'Filtering data...';\n\n /**\n * Message appearing when a drop-down filter is populated\n * @type {String}\n */\n this.msgPopulate = f.msg_populate || 'Populating filter...';\n\n /**\n * Message appearing when a checklist filter is populated\n * @type {String}\n */\n this.msgPopulateCheckList = f.msg_populate_checklist ||\n 'Populating list...';\n\n /**\n * Message appearing when a pagination page is changed\n * @type {String}\n */\n this.msgChangePage = f.msg_change_page || 'Collecting paging data...';\n\n /**\n * Message appearing when filters are cleared\n * @type {String}\n */\n this.msgClear = f.msg_clear || 'Clearing filters...';\n\n /**\n * Message appearing when the page length is changed\n * @type {String}\n */\n this.msgChangeResults = f.msg_change_results ||\n 'Changing results per page...';\n\n /**\n * Message appearing when the page is re-set\n * @type {String}\n */\n this.msgResetPage = f.msg_reset_page || 'Re-setting page...';\n\n /**\n * Message appearing when the page length is re-set\n * @type {String}\n */\n this.msgResetPageLength = f.msg_reset_page_length ||\n 'Re-setting page length...';\n\n /**\n * Message appearing upon column sorting\n * @type {String}\n */\n this.msgSort = f.msg_sort || 'Sorting data...';\n\n /**\n * Message appearing when extensions are loading\n * @type {String}\n */\n this.msgLoadExtensions = f.msg_load_extensions ||\n 'Loading extensions...';\n\n /**\n * Message appearing when themes are loading\n * @type {String}\n */\n this.msgLoadThemes = f.msg_load_themes || 'Loading theme(s)...';\n\n /**\n * Prefix for container ID\n * @type {String}\n * @private\n */\n this.prfxCont = 'status_';\n\n /**\n * Prefix for label container ID\n * @type {String}\n * @private\n */\n this.prfxLabel = 'statusSpan_';\n\n /**\n * Prefix for text preceding the message\n * @type {String}\n * @private\n */\n this.prfxText = 'statusText_';\n }\n\n /**\n * Initializes StatusBar instance\n */\n init() {\n if (this.initialized) {\n return;\n }\n\n let tf = this.tf;\n let emitter = this.emitter;\n\n //status bar container\n let statusDiv = createElm('div', ['id', this.prfxCont + tf.id]);\n statusDiv.className = this.cssClass;\n\n //status bar label\n let statusSpan = createElm('span', ['id', this.prfxLabel + tf.id]);\n //preceding text\n let statusSpanText = createElm('span', ['id', this.prfxText + tf.id]);\n statusSpanText.appendChild(createText(this.text));\n\n // target element container\n if (!this.targetId) {\n tf.setToolbar();\n }\n let targetEl = (!this.targetId) ? tf.lDiv : elm(this.targetId);\n\n //default container: 'lDiv'\n if (!this.targetId) {\n statusDiv.appendChild(statusSpanText);\n statusDiv.appendChild(statusSpan);\n targetEl.appendChild(statusDiv);\n } else {\n // custom container, no need to append statusDiv\n targetEl.appendChild(statusSpanText);\n targetEl.appendChild(statusSpan);\n }\n\n this.container = statusDiv;\n this.msgContainer = statusSpan;\n this.labelContainer = statusSpanText;\n\n // Subscribe to events\n emitter.on(['before-filtering'], () => this.message(this.msgFilter));\n emitter.on(['before-populating-filter'],\n () => this.message(this.msgPopulate));\n emitter.on(['before-page-change'],\n () => this.message(this.msgChangePage));\n emitter.on(['before-clearing-filters'], () =>\n this.message(this.msgClear));\n emitter.on(['before-page-length-change'],\n () => this.message(this.msgChangeResults));\n emitter.on(['before-reset-page'],\n () => this.message(this.msgResetPage));\n emitter.on(['before-reset-page-length'],\n () => this.message(this.msgResetPageLength));\n emitter.on(['before-loading-extensions'],\n () => this.message(this.msgLoadExtensions));\n emitter.on(['before-loading-themes'],\n () => this.message(this.msgLoadThemes));\n\n emitter.on([\n 'after-filtering',\n 'after-populating-filter',\n 'after-page-change',\n 'after-clearing-filters',\n 'after-page-length-change',\n 'after-reset-page',\n 'after-reset-page-length',\n 'after-loading-extensions',\n 'after-loading-themes'],\n () => this.message('')\n );\n\n /**\n * @inherited\n */\n this.initialized = true;\n }\n\n /**\n * Display status message\n * @param {String} [t=''] Message to be displayed\n */\n message(t = '') {\n if (!this.isEnabled()) {\n return;\n }\n\n if (this.onBeforeShowMsg) {\n this.onBeforeShowMsg.call(null, this.tf, t);\n }\n\n let d = t === '' ? this.delay : 1;\n root.setTimeout(() => {\n if (!this.initialized) {\n return;\n }\n this.msgContainer.innerHTML = t;\n if (this.onAfterShowMsg) {\n this.onAfterShowMsg.call(null, this.tf, t);\n }\n }, d);\n }\n\n /**\n * Destroy StatusBar instance\n */\n destroy() {\n if (!this.initialized) {\n return;\n }\n\n let emitter = this.emitter;\n\n this.container.innerHTML = '';\n if (!this.targetId) {\n removeElm(this.container);\n }\n this.labelContainer = null;\n this.msgContainer = null;\n this.container = null;\n\n // Unsubscribe to events\n emitter.off(['before-filtering'], () => this.message(this.msgFilter));\n emitter.off(['before-populating-filter'],\n () => this.message(this.msgPopulate));\n emitter.off(['before-page-change'],\n () => this.message(this.msgChangePage));\n emitter.off(['before-clearing-filters'],\n () => this.message(this.msgClear));\n emitter.off(['before-page-length-change'],\n () => this.message(this.msgChangeResults));\n emitter.off(['before-reset-page'], () =>\n this.message(this.msgResetPage));\n emitter.off(['before-reset-page-length'],\n () => this.message(this.msgResetPageLength));\n emitter.off(['before-loading-extensions'],\n () => this.message(this.msgLoadExtensions));\n emitter.off(['before-loading-themes'],\n () => this.message(this.msgLoadThemes));\n\n emitter.off([\n 'after-filtering',\n 'after-populating-filter',\n 'after-page-change',\n 'after-clearing-filters',\n 'after-page-length-change',\n 'after-reset-page',\n 'after-reset-page-length',\n 'after-loading-extensions',\n 'after-loading-themes'],\n () => this.message('')\n );\n\n this.initialized = false;\n }\n}\n" }, { - "__docId__": 688, + "__docId__": 689, "kind": "class", "static": true, "variation": null, @@ -14352,7 +14373,7 @@ ] }, { - "__docId__": 689, + "__docId__": 690, "kind": "constructor", "static": false, "variation": null, @@ -14377,7 +14398,7 @@ "generator": false }, { - "__docId__": 690, + "__docId__": 691, "kind": "member", "static": false, "variation": null, @@ -14397,7 +14418,7 @@ } }, { - "__docId__": 691, + "__docId__": 692, "kind": "member", "static": false, "variation": null, @@ -14417,7 +14438,7 @@ } }, { - "__docId__": 692, + "__docId__": 693, "kind": "member", "static": false, "variation": null, @@ -14437,7 +14458,7 @@ } }, { - "__docId__": 693, + "__docId__": 694, "kind": "member", "static": false, "variation": null, @@ -14457,7 +14478,7 @@ } }, { - "__docId__": 694, + "__docId__": 695, "kind": "member", "static": false, "variation": null, @@ -14477,7 +14498,7 @@ } }, { - "__docId__": 695, + "__docId__": 696, "kind": "member", "static": false, "variation": null, @@ -14497,7 +14518,7 @@ } }, { - "__docId__": 696, + "__docId__": 697, "kind": "member", "static": false, "variation": null, @@ -14517,7 +14538,7 @@ } }, { - "__docId__": 697, + "__docId__": 698, "kind": "member", "static": false, "variation": null, @@ -14537,7 +14558,7 @@ } }, { - "__docId__": 698, + "__docId__": 699, "kind": "member", "static": false, "variation": null, @@ -14557,7 +14578,7 @@ } }, { - "__docId__": 699, + "__docId__": 700, "kind": "member", "static": false, "variation": null, @@ -14577,7 +14598,7 @@ } }, { - "__docId__": 700, + "__docId__": 701, "kind": "member", "static": false, "variation": null, @@ -14597,7 +14618,7 @@ } }, { - "__docId__": 701, + "__docId__": 702, "kind": "member", "static": false, "variation": null, @@ -14617,7 +14638,7 @@ } }, { - "__docId__": 702, + "__docId__": 703, "kind": "member", "static": false, "variation": null, @@ -14637,7 +14658,7 @@ } }, { - "__docId__": 703, + "__docId__": 704, "kind": "member", "static": false, "variation": null, @@ -14657,7 +14678,7 @@ } }, { - "__docId__": 704, + "__docId__": 705, "kind": "member", "static": false, "variation": null, @@ -14677,7 +14698,7 @@ } }, { - "__docId__": 705, + "__docId__": 706, "kind": "member", "static": false, "variation": null, @@ -14697,7 +14718,7 @@ } }, { - "__docId__": 706, + "__docId__": 707, "kind": "member", "static": false, "variation": null, @@ -14717,7 +14738,7 @@ } }, { - "__docId__": 707, + "__docId__": 708, "kind": "member", "static": false, "variation": null, @@ -14737,7 +14758,7 @@ } }, { - "__docId__": 708, + "__docId__": 709, "kind": "member", "static": false, "variation": null, @@ -14757,7 +14778,7 @@ } }, { - "__docId__": 709, + "__docId__": 710, "kind": "member", "static": false, "variation": null, @@ -14777,7 +14798,7 @@ } }, { - "__docId__": 710, + "__docId__": 711, "kind": "member", "static": false, "variation": null, @@ -14797,7 +14818,7 @@ } }, { - "__docId__": 711, + "__docId__": 712, "kind": "member", "static": false, "variation": null, @@ -14817,7 +14838,7 @@ } }, { - "__docId__": 712, + "__docId__": 713, "kind": "member", "static": false, "variation": null, @@ -14837,7 +14858,7 @@ } }, { - "__docId__": 713, + "__docId__": 714, "kind": "method", "static": false, "variation": null, @@ -14851,7 +14872,7 @@ "generator": false }, { - "__docId__": 714, + "__docId__": 715, "kind": "member", "static": false, "variation": null, @@ -14869,7 +14890,7 @@ } }, { - "__docId__": 715, + "__docId__": 716, "kind": "member", "static": false, "variation": null, @@ -14887,7 +14908,7 @@ } }, { - "__docId__": 716, + "__docId__": 717, "kind": "member", "static": false, "variation": null, @@ -14905,7 +14926,7 @@ } }, { - "__docId__": 717, + "__docId__": 718, "kind": "member", "static": false, "variation": null, @@ -14928,7 +14949,7 @@ } }, { - "__docId__": 718, + "__docId__": 719, "kind": "method", "static": false, "variation": null, @@ -14955,7 +14976,7 @@ "generator": false }, { - "__docId__": 719, + "__docId__": 720, "kind": "method", "static": false, "variation": null, @@ -14969,7 +14990,7 @@ "generator": false }, { - "__docId__": 720, + "__docId__": 721, "kind": "member", "static": false, "variation": null, @@ -14987,7 +15008,7 @@ } }, { - "__docId__": 721, + "__docId__": 722, "kind": "member", "static": false, "variation": null, @@ -15005,7 +15026,7 @@ } }, { - "__docId__": 722, + "__docId__": 723, "kind": "member", "static": false, "variation": null, @@ -15023,7 +15044,7 @@ } }, { - "__docId__": 723, + "__docId__": 724, "kind": "member", "static": false, "variation": null, @@ -15041,7 +15062,7 @@ } }, { - "__docId__": 724, + "__docId__": 725, "kind": "file", "static": true, "variation": null, @@ -15054,7 +15075,7 @@ "content": "\nimport Cookie from '../cookie';\nimport {root} from '../root';\n\nconst JSON = root.JSON;\nconst localStorage = root.localStorage;\nconst location = root.location;\n\n/**\n * Checks if browser has Storage feature\n */\nexport const hasStorage = () => {\n return 'Storage' in root;\n};\n\n/**\n * Stores the features state in browser's local storage or cookie\n *\n * @export\n * @class Storage\n */\nexport class Storage {\n\n /**\n * Creates an instance of Storage\n *\n * @param {State} state Instance of State\n */\n constructor(state) {\n\n /**\n * State object\n * @type {State}\n * @private\n */\n this.state = state;\n\n /**\n * TableFilter object\n * @type {TableFilter}\n * @private\n */\n this.tf = state.tf;\n\n /**\n * Persist with local storage\n * @type {Boolean}\n * @private\n */\n this.enableLocalStorage = state.enableLocalStorage && hasStorage();\n\n /**\n * Persist with cookie\n * @type {Boolean}\n * @private\n */\n this.enableCookie = state.enableCookie && !this.enableLocalStorage;\n\n /**\n * Emitter object\n * @type {Emitter}\n * @private\n */\n this.emitter = state.emitter;\n\n /**\n * Cookie duration in hours from state object\n * @type {Number}\n * @private\n */\n this.duration = state.cookieDuration;\n }\n\n\n /**\n * Initializes the Storage object\n */\n init() {\n this.emitter.on(['state-changed'], (tf, state) => this.save(state));\n this.emitter.on(['initialized'], () => this.sync());\n }\n\n /**\n * Persists the features state on state changes\n *\n * @param {State} state Instance of State\n */\n save(state) {\n if (this.enableLocalStorage) {\n localStorage[this.getKey()] = JSON.stringify(state);\n } else {\n Cookie.write(this.getKey(), JSON.stringify(state), this.duration);\n }\n }\n\n /**\n * Turns stored string into a State JSON object\n *\n * @returns {Object} JSON object\n */\n retrieve() {\n let state = null;\n if (this.enableLocalStorage) {\n state = localStorage[this.getKey()];\n } else {\n state = Cookie.read(this.getKey());\n }\n\n if (!state) {\n return null;\n }\n return JSON.parse(state);\n }\n\n /**\n * Removes persisted state from storage\n */\n remove() {\n if (this.enableLocalStorage) {\n localStorage.removeItem(this.getKey());\n } else {\n Cookie.remove(this.getKey());\n }\n }\n\n /**\n * Applies persisted state to features\n */\n sync() {\n let state = this.retrieve();\n if (!state) {\n return;\n }\n // override current state with persisted one and sync features\n this.state.overrideAndSync(state);\n }\n\n /**\n * Returns the storage key\n *\n * @returns {String} Key\n */\n getKey() {\n return JSON.stringify({\n key: `${this.tf.prfxTf}_${this.tf.id}`,\n path: location.pathname\n });\n }\n\n /**\n * Release Storage event subscriptions and clear fields\n */\n destroy() {\n this.emitter.off(['state-changed'], (tf, state) => this.save(state));\n this.emitter.off(['initialized'], () => this.sync());\n\n this.remove();\n\n this.state = null;\n this.emitter = null;\n }\n}\n" }, { - "__docId__": 725, + "__docId__": 726, "kind": "variable", "static": true, "variation": null, @@ -15075,7 +15096,7 @@ } }, { - "__docId__": 726, + "__docId__": 727, "kind": "variable", "static": true, "variation": null, @@ -15096,7 +15117,7 @@ } }, { - "__docId__": 727, + "__docId__": 728, "kind": "variable", "static": true, "variation": null, @@ -15117,7 +15138,7 @@ } }, { - "__docId__": 728, + "__docId__": 729, "kind": "variable", "static": true, "variation": null, @@ -15137,7 +15158,7 @@ } }, { - "__docId__": 729, + "__docId__": 730, "kind": "class", "static": true, "variation": null, @@ -15163,7 +15184,7 @@ "interface": false }, { - "__docId__": 730, + "__docId__": 731, "kind": "constructor", "static": false, "variation": null, @@ -15188,7 +15209,7 @@ "generator": false }, { - "__docId__": 731, + "__docId__": 732, "kind": "member", "static": false, "variation": null, @@ -15208,7 +15229,7 @@ } }, { - "__docId__": 732, + "__docId__": 733, "kind": "member", "static": false, "variation": null, @@ -15228,7 +15249,7 @@ } }, { - "__docId__": 733, + "__docId__": 734, "kind": "member", "static": false, "variation": null, @@ -15248,7 +15269,7 @@ } }, { - "__docId__": 734, + "__docId__": 735, "kind": "member", "static": false, "variation": null, @@ -15268,7 +15289,7 @@ } }, { - "__docId__": 735, + "__docId__": 736, "kind": "member", "static": false, "variation": null, @@ -15288,7 +15309,7 @@ } }, { - "__docId__": 736, + "__docId__": 737, "kind": "member", "static": false, "variation": null, @@ -15308,7 +15329,7 @@ } }, { - "__docId__": 737, + "__docId__": 738, "kind": "method", "static": false, "variation": null, @@ -15322,7 +15343,7 @@ "generator": false }, { - "__docId__": 738, + "__docId__": 739, "kind": "method", "static": false, "variation": null, @@ -15347,7 +15368,7 @@ "generator": false }, { - "__docId__": 739, + "__docId__": 740, "kind": "method", "static": false, "variation": null, @@ -15375,7 +15396,7 @@ "generator": false }, { - "__docId__": 740, + "__docId__": 741, "kind": "method", "static": false, "variation": null, @@ -15389,7 +15410,7 @@ "generator": false }, { - "__docId__": 741, + "__docId__": 742, "kind": "method", "static": false, "variation": null, @@ -15403,7 +15424,7 @@ "generator": false }, { - "__docId__": 742, + "__docId__": 743, "kind": "method", "static": false, "variation": null, @@ -15431,7 +15452,7 @@ "generator": false }, { - "__docId__": 743, + "__docId__": 744, "kind": "method", "static": false, "variation": null, @@ -15445,7 +15466,7 @@ "generator": false }, { - "__docId__": 744, + "__docId__": 745, "kind": "member", "static": false, "variation": null, @@ -15463,7 +15484,7 @@ } }, { - "__docId__": 745, + "__docId__": 746, "kind": "member", "static": false, "variation": null, @@ -15481,7 +15502,7 @@ } }, { - "__docId__": 746, + "__docId__": 747, "kind": "file", "static": true, "variation": null, @@ -15494,7 +15515,7 @@ "content": "/**\n * Export window or global object depending on the environment\n */\nexport const root = (typeof self === 'object' && self.self === self && self) ||\n (typeof global === 'object' && global.global === global && global) ||\n this;\n" }, { - "__docId__": 747, + "__docId__": 748, "kind": "variable", "static": true, "variation": null, @@ -15514,7 +15535,7 @@ } }, { - "__docId__": 748, + "__docId__": 749, "kind": "file", "static": true, "variation": null, @@ -15527,7 +15548,7 @@ "content": "/**\n * Sorting utilities\n */\n\n/**\n * Case insensitive compare function for passed strings\n * @param {String} First string\n * @param {String} Second string\n * @return {Number} -1 if first string lower than second one\n * 0 if first string same order as second one\n * 1 if first string greater than second one\n */\nexport const ignoreCase = (a, b) => {\n let x = a.toLowerCase();\n let y = b.toLowerCase();\n return ((x < y) ? -1 : ((x > y) ? 1 : 0));\n}\n\n/**\n * Sorts passed numbers in a ascending manner\n * @param {Number} First number\n * @param {Number} Second number\n * @param {Number} Negative, zero or positive number\n */\nexport const numSortAsc = (a, b) => (a - b);\n\n/**\n * Sorts passed numbers in a descending manner\n * @param {Number} First number\n * @param {Number} Second number\n * @param {Number} Negative, zero or positive number\n */\nexport const numSortDesc = (a, b) => (b - a);\n" }, { - "__docId__": 749, + "__docId__": 750, "kind": "variable", "static": true, "variation": null, @@ -15577,7 +15598,7 @@ } }, { - "__docId__": 750, + "__docId__": 751, "kind": "variable", "static": true, "variation": null, @@ -15629,7 +15650,7 @@ } }, { - "__docId__": 751, + "__docId__": 752, "kind": "variable", "static": true, "variation": null, @@ -15681,7 +15702,7 @@ } }, { - "__docId__": 752, + "__docId__": 753, "kind": "file", "static": true, "variation": null, @@ -15694,7 +15715,7 @@ "content": "/**\n * String utilities\n */\n\n/**\n * Removes whitespace from both sides of passed string\n * @param {String} text\n * @return {String}\n */\nexport const trim = text => {\n if (text.trim) {\n return text.trim();\n }\n return text.replace(/^\\s*|\\s*$/g, '');\n}\n\n/**\n * Checks if passed string is empty\n * @param {String} text\n * @return {Boolean}\n */\nexport const isEmpty = (text) => trim(text) === '';\n\n/**\n * Makes regex safe string by escaping special characters from passed string\n * @param {String} text\n * @return {String} escaped string\n */\nexport const rgxEsc = text => {\n let chars = /[-\\/\\\\^$*+?.()|[\\]{}]/g;\n let escMatch = '\\\\$&';\n return String(text).replace(chars, escMatch);\n}\n\n/**\n * Returns passed string as lowercase if caseSensitive flag set false. By\n * default it returns the string with no casing changes.\n * @param {String} text\n * @return {String} string\n */\nexport const matchCase = (text, caseSensitive = false) => {\n if (!caseSensitive) {\n return text.toLowerCase();\n }\n return text;\n}\n\n/**\n * Checks if passed data contains the searched term\n * @param {String} term Searched term\n * @param {String} data Data string\n * @param {Boolean} exactMatch Exact match\n * @param {Boolean} caseSensitive Case sensitive\n * @return {Boolean}\n */\nexport const contains =\n (term, data, exactMatch = false, caseSensitive = false) => {\n // Improved by Cedric Wartel (cwl) automatic exact match for selects and\n // special characters are now filtered\n let regexp;\n let modifier = caseSensitive ? 'g' : 'gi';\n if (exactMatch) {\n regexp = new RegExp('(^\\\\s*)' + rgxEsc(term) + '(\\\\s*$)',\n modifier);\n } else {\n regexp = new RegExp(rgxEsc(term), modifier);\n }\n return regexp.test(data);\n }\n" }, { - "__docId__": 753, + "__docId__": 754, "kind": "variable", "static": true, "variation": null, @@ -15734,7 +15755,7 @@ } }, { - "__docId__": 754, + "__docId__": 755, "kind": "variable", "static": true, "variation": null, @@ -15774,7 +15795,7 @@ } }, { - "__docId__": 755, + "__docId__": 756, "kind": "variable", "static": true, "variation": null, @@ -15814,7 +15835,7 @@ } }, { - "__docId__": 756, + "__docId__": 757, "kind": "variable", "static": true, "variation": null, @@ -15854,7 +15875,7 @@ } }, { - "__docId__": 757, + "__docId__": 758, "kind": "variable", "static": true, "variation": null, @@ -15924,7 +15945,7 @@ } }, { - "__docId__": 758, + "__docId__": 759, "kind": "file", "static": true, "variation": null, @@ -15937,7 +15958,7 @@ "content": "import {addEvt, cancelEvt, stopEvt, targetEvt, keyCode} from './event';\nimport {\n addClass, createElm, createOpt, elm, getText, getFirstTextNode, hasClass,\n removeClass, removeElm, tag\n} from './dom';\nimport {contains, matchCase, rgxEsc, trim} from './string';\nimport {isEmpty as isEmptyString} from './string';\nimport {isArray, isEmpty, isFn, isNumber, isObj, isString, isUndef}\nfrom './types';\nimport {formatDate, isValidDate} from './date';\nimport {removeNbFormat} from './helpers';\n\nimport {root} from './root';\nimport {Emitter} from './emitter';\nimport {GridLayout} from './modules/gridLayout';\nimport {Loader} from './modules/loader';\nimport {HighlightKeyword} from './modules/highlightKeywords';\nimport {PopupFilter} from './modules/popupFilter';\nimport {Dropdown} from './modules/dropdown';\nimport {CheckList} from './modules/checkList';\nimport {RowsCounter} from './modules/rowsCounter';\nimport {StatusBar} from './modules/statusBar';\nimport {Paging} from './modules/paging';\nimport {ClearButton} from './modules/clearButton';\nimport {Help} from './modules/help';\nimport {AlternateRows} from './modules/alternateRows';\nimport {NoResults} from './modules/noResults';\nimport {State} from './modules/state';\n\nimport {\n INPUT, SELECT, MULTIPLE, CHECKLIST, NONE,\n ENTER_KEY, TAB_KEY, ESC_KEY, UP_ARROW_KEY, DOWN_ARROW_KEY,\n CELL_TAG, AUTO_FILTER_DELAY\n} from './const';\n\nlet doc = root.document;\n\n/**\n * Makes HTML tables filterable and a bit more :)\n *\n * @export\n * @class TableFilter\n */\nexport class TableFilter {\n\n /**\n * Creates an instance of TableFilter\n * requires `table` or `id` arguments, `row` and `configuration` optional\n * @param {DOMElement} table Table DOM element\n * @param {String} id Table id\n * @param {Number} row index indicating the 1st row\n * @param {Object} configuration object\n */\n constructor(...args) {\n /**\n * ID of current instance\n * @type {String}\n * @private\n */\n this.id = null;\n\n /**\n * Current version\n * @type {String}\n */\n this.version = '{VERSION}';\n\n /**\n * Current year\n * @type {Number}\n * @private\n */\n this.year = new Date().getFullYear();\n\n /**\n * HTML Table DOM element\n * @type {DOMElement}\n */\n this.tbl = null;\n\n /**\n * Calculated row's index from which starts filtering once filters\n * are generated\n * @type {Number}\n */\n this.refRow = null;\n\n /**\n * Index of the headers row\n * @type {Number}\n * @private\n */\n this.headersRow = null;\n\n /**\n * Configuration object\n * @type {Object}\n * @private\n */\n this.cfg = {};\n\n /**\n * Number of rows that can be filtered\n * @type {Number}\n * @private\n */\n this.nbFilterableRows = 0;\n\n /**\n * Number of cells in the reference row\n * @type {Number}\n * @private\n */\n this.nbCells = null;\n\n let startRow;\n\n // TODO: use for-of\n args.forEach((arg) => {\n if (typeof arg === 'object' && arg.nodeName === 'TABLE') {\n this.tbl = arg;\n this.id = arg.id || `tf_${new Date().getTime()}_`;\n } else if (isString(arg)) {\n this.id = arg;\n this.tbl = elm(arg);\n } else if (isNumber(arg)) {\n startRow = arg;\n } else if (isObj(arg)) {\n this.cfg = arg;\n }\n });\n\n if (!this.tbl || this.tbl.nodeName !== 'TABLE' ||\n this.getRowsNb() === 0) {\n throw new Error(`Could not instantiate TableFilter: HTML table\n DOM element not found.`);\n }\n\n // configuration object\n let f = this.cfg;\n\n /**\n * Event emitter instance\n * @type {Emitter}\n */\n this.emitter = new Emitter();\n\n //Start row et cols nb\n this.refRow = isUndef(startRow) ? 2 : (startRow + 1);\n try { this.nbCells = this.getCellsNb(this.refRow); }\n catch (e) { this.nbCells = this.getCellsNb(0); }\n\n /**\n * Base path for static assets\n * @type {String}\n */\n this.basePath = f.base_path || 'tablefilter/';\n\n /*** filters' grid properties ***/\n\n /**\n * Enable/disable filters\n * @type {Boolean}\n */\n this.fltGrid = f.grid === false ? false : true;\n\n /**\n * Enable/disable grid layout (fixed headers)\n * @type {Boolean}\n */\n this.gridLayout = Boolean(f.grid_layout);\n\n /**\n * Filters row index\n * @type {Number}\n */\n this.filtersRowIndex = isNaN(f.filters_row_index) ?\n 0 : f.filters_row_index;\n\n /**\n * Headers row index\n * @type {Number}\n */\n this.headersRow = isNaN(f.headers_row_index) ?\n (this.filtersRowIndex === 0 ? 1 : 0) : f.headers_row_index;\n\n /**\n * Define the type of cell containing a filter (td/th)\n * @type {String}\n */\n this.fltCellTag = isString(f.filters_cell_tag) ?\n f.filters_cell_tag : CELL_TAG;\n\n /**\n * List of filters IDs\n * @type {Array}\n * @private\n */\n this.fltIds = [];\n\n /**\n * List of valid rows indexes (rows visible upon filtering)\n * @type {Array}\n * @private\n */\n this.validRowsIndex = [];\n\n /**\n * Toolbar's container DOM element\n * @type {DOMElement}\n * @private\n */\n this.infDiv = null;\n\n /**\n * Left-side inner container DOM element (rows counter in toolbar)\n * @type {DOMElement}\n * @private\n */\n this.lDiv = null;\n\n /**\n * Right-side inner container DOM element (reset button,\n * page length selector in toolbar)\n * @type {DOMElement}\n * @private\n */\n this.rDiv = null;\n\n /**\n * Middle inner container DOM element (paging elements in toolbar)\n * @type {DOMElement}\n * @private\n */\n this.mDiv = null;\n\n /**\n * Css class for toolbar's container DOM element\n * @type {String}\n */\n this.infDivCssClass = f.inf_div_css_class || 'inf';\n\n /**\n * Css class for left-side inner container DOM element\n * @type {String}\n */\n this.lDivCssClass = f.left_div_css_class || 'ldiv';\n\n /**\n * Css class for right-side inner container DOM element\n * @type {String}\n */\n this.rDivCssClass = f.right_div_css_class || 'rdiv';\n\n /**\n * Css class for middle inner container DOM element\n * @type {String}\n */\n this.mDivCssClass = f.middle_div_css_class || 'mdiv';\n\n /*** filters' grid appearance ***/\n /**\n * Path for stylesheets\n * @type {String}\n */\n this.stylePath = f.style_path || this.basePath + 'style/';\n\n /**\n * Main stylesheet path\n * @type {String}\n */\n this.stylesheet = f.stylesheet || this.stylePath + 'tablefilter.css';\n\n /**\n * Main stylesheet ID\n * @type {String}\n * @private\n */\n this.stylesheetId = this.id + '_style';\n\n /**\n * Css class for the filters row\n * @type {String}\n */\n this.fltsRowCssClass = f.flts_row_css_class || 'fltrow';\n\n /**\n * Enable/disable icons (paging, reset button)\n * @type {Boolean}\n */\n this.enableIcons = f.enable_icons === false ? false : true;\n\n /**\n * Enable/disable alternating rows\n * @type {Boolean}\n */\n this.alternateRows = Boolean(f.alternate_rows);\n\n /**\n * Indicate whether columns widths are set\n * @type {Boolean}\n * @private\n */\n this.hasColWidths = isArray(f.col_widths);\n\n /**\n * Columns widths array\n * @type {Array}\n */\n this.colWidths = this.hasColWidths ? f.col_widths : [];\n\n /**\n * Css class for a filter element\n * @type {String}\n */\n this.fltCssClass = f.flt_css_class || 'flt';\n\n /**\n * Css class for multiple select filters\n * @type {String}\n */\n this.fltMultiCssClass = f.flt_multi_css_class || 'flt_multi';\n\n /**\n * Css class for small filter (when submit button is active)\n * @type {String}\n */\n this.fltSmallCssClass = f.flt_small_css_class || 'flt_s';\n\n /**\n * Css class for single filter type\n * @type {String}\n */\n this.singleFltCssClass = f.single_flt_css_class || 'single_flt';\n\n /*** filters' grid behaviours ***/\n\n /**\n * Enable/disable enter key for input type filters\n * @type {Boolean}\n */\n this.enterKey = f.enter_key === false ? false : true;\n\n /**\n * Callback fired before filtering process starts\n * @type {Function}\n */\n this.onBeforeFilter = isFn(f.on_before_filter) ?\n f.on_before_filter : null;\n\n /**\n * Callback fired after filtering process is completed\n * @type {Function}\n */\n this.onAfterFilter = isFn(f.on_after_filter) ? f.on_after_filter : null;\n\n /**\n * Enable/disable case sensitivity filtering\n * @type {Boolean}\n */\n this.caseSensitive = Boolean(f.case_sensitive);\n\n /**\n * Indicate whether exact match filtering is enabled on a per column\n * basis\n * @type {Boolean}\n * @private\n */\n this.hasExactMatchByCol = isArray(f.columns_exact_match);\n\n /**\n * Exact match filtering per column array\n * @type {Array}\n */\n this.exactMatchByCol = this.hasExactMatchByCol ?\n f.columns_exact_match : [];\n\n /**\n * Globally enable/disable exact match filtering\n * @type {Boolean}\n */\n this.exactMatch = Boolean(f.exact_match);\n\n /**\n * Enable/disable linked filters filtering mode\n * @type {Boolean}\n */\n this.linkedFilters = Boolean(f.linked_filters);\n\n /**\n * Enable/disable readonly state for excluded options when\n * linked filters filtering mode is on\n * @type {Boolean}\n */\n this.disableExcludedOptions = Boolean(f.disable_excluded_options);\n\n /**\n * Active filter ID\n * @type {String}\n * @private\n */\n this.activeFilterId = null;\n\n /**\n * Enable/disable always visible rows, excluded from filtering\n * @type {Boolean}\n */\n this.hasVisibleRows = Boolean(f.rows_always_visible);\n\n /**\n * List of row indexes to be excluded from filtering\n * @type {Array}\n */\n this.visibleRows = this.hasVisibleRows ? f.rows_always_visible : [];\n\n /**\n * Enable/disable external filters generation\n * @type {Boolean}\n */\n this.isExternalFlt = Boolean(f.external_flt_grid);\n\n /**\n * List of containers IDs where external filters will be generated\n * @type {Array}\n */\n this.externalFltTgtIds = f.external_flt_grid_ids || [];\n\n /**\n * Callback fired after filters are generated\n * @type {Function}\n */\n this.onFiltersLoaded = isFn(f.on_filters_loaded) ?\n f.on_filters_loaded : null;\n\n /**\n * Enable/disable single filter filtering all columns\n * @type {Boolean}\n */\n this.singleSearchFlt = Boolean(f.single_filter);\n\n /**\n * Callback fired after a row is validated during filtering\n * @type {Function}\n */\n this.onRowValidated = isFn(f.on_row_validated) ?\n f.on_row_validated : null;\n\n /**\n * List of columns implementing custom filtering\n * @type {Array}\n */\n this.customCellDataCols = f.custom_cell_data_cols ?\n f.custom_cell_data_cols : [];\n\n /**\n * Delegate function for retrieving cell data with custom logic\n * @type {Function}\n */\n this.customCellData = isFn(f.custom_cell_data) ?\n f.custom_cell_data : null;\n\n /**\n * Global watermark text for input filter type or watermark for each\n * filter if an array is supplied\n * @type {String|Array}\n */\n this.watermark = f.watermark || '';\n\n /**\n * Indicate whether watermark is on a per column basis\n * @type {Boolean}\n * @private\n */\n this.isWatermarkArray = isArray(this.watermark);\n\n /**\n * Toolbar's custom container ID\n * @type {String}\n */\n this.toolBarTgtId = f.toolbar_target_id || null;\n\n /**\n * Indicate whether help UI component is disabled\n * @type {Boolean}\n */\n this.help = isUndef(f.help_instructions) ?\n undefined : Boolean(f.help_instructions);\n\n /**\n * Indicate whether pop-up filters UI is enabled\n * @type {Boolean}\n */\n this.popupFilters = Boolean(f.popup_filters);\n\n /**\n * Indicate whether filtered (active) columns indicator is enabled\n * @type {Boolean}\n */\n this.markActiveColumns = Boolean(f.mark_active_columns);\n\n /**\n * Css class for filtered (active) columns\n * @type {String}\n */\n this.activeColumnsCssClass = f.active_columns_css_class ||\n 'activeHeader';\n\n /**\n * Callback fired before a column is marked as filtered\n * @type {Function}\n */\n this.onBeforeActiveColumn = isFn(f.on_before_active_column) ?\n f.on_before_active_column : null;\n\n /**\n * Callback fired after a column is marked as filtered\n * @type {Function}\n */\n this.onAfterActiveColumn = isFn(f.on_after_active_column) ?\n f.on_after_active_column : null;\n\n /*** select filter's customisation and behaviours ***/\n /**\n * Text for clear option in drop-down filter types (1st option)\n * @type {String}\n */\n this.displayAllText = f.display_all_text || 'Clear';\n\n /**\n * Indicate whether empty option is enabled in drop-down filter types\n * @type {Boolean}\n */\n this.enableEmptyOption = Boolean(f.enable_empty_option);\n\n /**\n * Text for empty option in drop-down filter types\n * @type {String}\n */\n this.emptyText = f.empty_text || '(Empty)';\n\n /**\n * Indicate whether non-empty option is enabled in drop-down filter\n * types\n * @type {Boolean}\n */\n this.enableNonEmptyOption = Boolean(f.enable_non_empty_option);\n\n /**\n * Text for non-empty option in drop-down filter types\n * @type {String}\n */\n this.nonEmptyText = f.non_empty_text || '(Non empty)';\n\n /**\n * Indicate whether drop-down filter types filter the table by default\n * on change event\n * @type {Boolean}\n */\n this.onSlcChange = f.on_change === false ? false : true;\n\n /**\n * Indicate whether options in drop-down filter types are sorted in a\n * alpha-numeric manner by default\n * @type {Boolean}\n */\n this.sortSlc = f.sort_select === false ? false : true;\n\n /**\n * Indicate whether options in drop-down filter types are sorted in a\n * ascending numeric manner\n * @type {Boolean}\n */\n this.isSortNumAsc = Boolean(f.sort_num_asc);\n\n /**\n * List of columns implementing options sorting in a ascending numeric\n * manner\n * @type {Array}\n */\n this.sortNumAsc = this.isSortNumAsc ? f.sort_num_asc : [];\n\n /**\n * Indicate whether options in drop-down filter types are sorted in a\n * descending numeric manner\n * @type {Boolean}\n */\n this.isSortNumDesc = Boolean(f.sort_num_desc);\n\n /**\n * List of columns implementing options sorting in a descending numeric\n * manner\n * @type {Array}\n */\n this.sortNumDesc = this.isSortNumDesc ? f.sort_num_desc : [];\n\n /**\n * Indicate whether drop-down filter types are populated on demand at\n * first usage\n * @type {Boolean}\n */\n this.loadFltOnDemand = Boolean(f.load_filters_on_demand);\n\n /**\n * Indicate whether custom drop-down filter options are implemented\n * @type {Boolean}\n */\n this.hasCustomOptions = isObj(f.custom_options);\n\n /**\n * Custom options definition of a per column basis, ie:\n *\tcustom_options: {\n * cols:[0, 1],\n * texts: [\n * ['a0', 'b0', 'c0'],\n * ['a1', 'b1', 'c1']\n * ],\n * values: [\n * ['a0', 'b0', 'c0'],\n * ['a1', 'b1', 'c1']\n * ],\n * sorts: [false, true]\n * }\n *\n * @type {Object}\n */\n this.customOptions = f.custom_options;\n\n /*** Filter operators ***/\n this.rgxOperator = f.regexp_operator || 'rgx:';\n this.emOperator = f.empty_operator || '[empty]';\n this.nmOperator = f.nonempty_operator || '[nonempty]';\n this.orOperator = f.or_operator || '||';\n this.anOperator = f.and_operator || '&&';\n this.grOperator = f.greater_operator || '>';\n this.lwOperator = f.lower_operator || '<';\n this.leOperator = f.lower_equal_operator || '<=';\n this.geOperator = f.greater_equal_operator || '>=';\n this.dfOperator = f.different_operator || '!';\n this.lkOperator = f.like_operator || '*';\n this.eqOperator = f.equal_operator || '=';\n this.stOperator = f.start_with_operator || '{';\n this.enOperator = f.end_with_operator || '}';\n this.curExp = f.cur_exp || '^[¥£€$]';\n this.separator = f.separator || ',';\n\n //show/hides rows counter\n this.rowsCounter = Boolean(f.rows_counter);\n\n //show/hides status bar\n this.statusBar = Boolean(f.status_bar);\n\n //enables/disables loader/spinner indicator\n this.loader = Boolean(f.loader);\n\n /*** validation - reset buttons/links ***/\n //show/hides filter's validation button\n this.displayBtn = Boolean(f.btn);\n //defines validation button text\n this.btnText = f.btn_text || (!this.enableIcons ? 'Go' : '');\n //defines css class for validation button\n this.btnCssClass = f.btn_css_class ||\n (!this.enableIcons ? 'btnflt' : 'btnflt_icon');\n //show/hides reset link\n this.btnReset = Boolean(f.btn_reset);\n //defines css class for reset button\n this.btnResetCssClass = f.btn_reset_css_class || 'reset';\n //callback function before filters are cleared\n this.onBeforeReset = isFn(f.on_before_reset) ?\n f.on_before_reset : null;\n //callback function after filters are cleared\n this.onAfterReset = isFn(f.on_after_reset) ? f.on_after_reset : null;\n\n /*** paging ***/\n //enables/disables table paging\n this.paging = Boolean(f.paging);\n this.nbHiddenRows = 0; //nb hidden rows\n\n /*** autofilter on typing ***/\n //Auto filtering, table is filtered when user stops typing\n this.autoFilter = Boolean(f.auto_filter);\n //onkeyup delay timer (msecs)\n this.autoFilterDelay = !isNaN(f.auto_filter_delay) ?\n f.auto_filter_delay : AUTO_FILTER_DELAY;\n //typing indicator\n this.isUserTyping = null;\n this.autoFilterTimer = null;\n\n /*** keyword highlighting ***/\n //enables/disables keyword highlighting\n this.highlightKeywords = Boolean(f.highlight_keywords);\n\n /*** No results feature ***/\n this.noResults = isObj(f.no_results_message) ||\n Boolean(f.no_results_message);\n\n // state persisstence\n this.state = isObj(f.state) || Boolean(f.state);\n\n /*** data types ***/\n //defines default date type (european DMY)\n this.defaultDateType = f.default_date_type || 'DMY';\n //defines default thousands separator US = ',' EU = '.'\n this.thousandsSeparator = f.thousands_separator || ',';\n //defines default decimal separator\n //US & javascript = '.' EU = ','\n this.decimalSeparator = f.decimal_separator || '.';\n //enables number format per column\n this.hasColNbFormat = isArray(f.col_number_format);\n //array containing columns nb formats\n this.colNbFormat = this.hasColNbFormat ? f.col_number_format : null;\n //enables date type per column\n this.hasColDateType = isArray(f.col_date_type);\n //array containing columns date type\n this.colDateType = this.hasColDateType ? f.col_date_type : null;\n\n /*** ids prefixes ***/\n //css class name added to table\n this.prfxTf = 'TF';\n //filters (inputs - selects)\n this.prfxFlt = 'flt';\n //validation button\n this.prfxValButton = 'btn';\n //container div for paging elements, rows counter etc.\n this.prfxInfDiv = 'inf_';\n //left div\n this.prfxLDiv = 'ldiv_';\n //right div\n this.prfxRDiv = 'rdiv_';\n //middle div\n this.prfxMDiv = 'mdiv_';\n //responsive table css class\n this.prfxResponsive = 'resp';\n\n /*** extensions ***/\n //imports external script\n this.extensions = f.extensions;\n this.hasExtensions = isArray(this.extensions);\n\n /*** themes ***/\n this.enableDefaultTheme = Boolean(f.enable_default_theme);\n //imports themes\n this.hasThemes = (this.enableDefaultTheme || isArray(f.themes));\n this.themes = f.themes || [];\n //themes path\n this.themesPath = f.themes_path || this.stylePath + 'themes/';\n\n //responsive table\n this.responsive = Boolean(f.responsive);\n\n // Features registry\n this.Mod = {};\n\n // Extensions registry\n this.ExtRegistry = {};\n }\n\n /**\n * Initialise features and layout\n */\n init() {\n if (this.initialized) {\n return;\n }\n\n let Mod = this.Mod;\n let n = this.singleSearchFlt ? 1 : this.nbCells;\n let inpclass;\n\n //loads stylesheet if not imported\n this.import(this.stylesheetId, this.stylesheet, null, 'link');\n\n //loads theme\n if (this.hasThemes) {\n this.loadThemes();\n }\n\n // Instantiate help feature and initialise only if set true\n if (!Mod.help) {\n Mod.help = new Help(this);\n }\n if (this.help) {\n Mod.help.init();\n }\n\n if (this.state) {\n if (!Mod.state) {\n Mod.state = new State(this);\n }\n Mod.state.init();\n }\n\n if (this.gridLayout) {\n if (!Mod.gridLayout) {\n Mod.gridLayout = new GridLayout(this);\n }\n Mod.gridLayout.init();\n }\n\n if (this.loader) {\n if (!Mod.loader) {\n Mod.loader = new Loader(this);\n }\n Mod.loader.init();\n }\n\n if (this.highlightKeywords) {\n Mod.highlightKeyword = new HighlightKeyword(this);\n Mod.highlightKeyword.init();\n }\n\n if (this.popupFilters) {\n if (!Mod.popupFilter) {\n Mod.popupFilter = new PopupFilter(this);\n }\n Mod.popupFilter.init();\n }\n\n //filters grid is not generated\n if (!this.fltGrid) {\n this._initNoFilters();\n } else {\n let fltrow = this._insertFiltersRow();\n\n this.nbFilterableRows = this.getRowsNb();\n\n // Generate filters\n for (let i = 0; i < n; i++) {\n this.emitter.emit('before-filter-init', this, i);\n\n let fltcell = createElm(this.fltCellTag),\n col = this.getFilterType(i);\n\n if (this.singleSearchFlt) {\n fltcell.colSpan = this.nbCells;\n }\n if (!this.gridLayout) {\n fltrow.appendChild(fltcell);\n }\n inpclass = (i === n - 1 && this.displayBtn) ?\n this.fltSmallCssClass : this.fltCssClass;\n\n //only 1 input for single search\n if (this.singleSearchFlt) {\n col = INPUT;\n inpclass = this.singleFltCssClass;\n }\n\n //drop-down filters\n if (col === SELECT || col === MULTIPLE) {\n if (!Mod.dropdown) {\n Mod.dropdown = new Dropdown(this);\n }\n Mod.dropdown.init(i, this.isExternalFlt, fltcell);\n }\n // checklist\n else if (col === CHECKLIST) {\n if (!Mod.checkList) {\n Mod.checkList = new CheckList(this);\n }\n Mod.checkList.init(i, this.isExternalFlt, fltcell);\n } else {\n this._buildInputFilter(i, inpclass, fltcell);\n }\n\n // this adds submit button\n if (i === n - 1 && this.displayBtn) {\n this._buildSubmitButton(i, fltcell);\n }\n\n this.emitter.emit('after-filter-init', this, i);\n }\n\n this.emitter.on(['filter-focus'],\n (tf, filter) => this.setActiveFilterId(filter.id));\n\n }//if this.fltGrid\n\n /* Features */\n if (this.hasVisibleRows) {\n this.emitter.on(['after-filtering'],\n () => this.enforceVisibility());\n this.enforceVisibility();\n }\n if (this.rowsCounter) {\n Mod.rowsCounter = new RowsCounter(this);\n Mod.rowsCounter.init();\n }\n if (this.statusBar) {\n Mod.statusBar = new StatusBar(this);\n Mod.statusBar.init();\n }\n if (this.paging) {\n if (!Mod.paging) {\n Mod.paging = new Paging(this);\n Mod.paging.init();\n } else {\n Mod.paging.reset();\n }\n }\n if (this.btnReset) {\n Mod.clearButton = new ClearButton(this);\n Mod.clearButton.init();\n }\n\n if (this.hasColWidths && !this.gridLayout) {\n this.setColWidths();\n }\n if (this.alternateRows) {\n Mod.alternateRows = new AlternateRows(this);\n Mod.alternateRows.init();\n }\n if (this.noResults) {\n if (!Mod.noResults) {\n Mod.noResults = new NoResults(this);\n }\n Mod.noResults.init();\n }\n\n //TF css class is added to table\n if (!this.gridLayout) {\n addClass(this.tbl, this.prfxTf);\n if (this.responsive) {\n addClass(this.tbl, this.prfxResponsive);\n }\n }\n\n /* Loads extensions */\n if (this.hasExtensions) {\n this.initExtensions();\n }\n\n // Subscribe to events\n if (this.markActiveColumns) {\n this.emitter.on(['before-filtering'],\n () => this.clearActiveColumns());\n this.emitter.on(['cell-processed'],\n (tf, colIndex) => this.markActiveColumn(colIndex));\n }\n if (this.linkedFilters) {\n this.emitter.on(['after-filtering'], () => this.linkFilters());\n }\n\n this.initialized = true;\n\n if (this.onFiltersLoaded) {\n this.onFiltersLoaded.call(null, this);\n }\n this.emitter.emit('initialized', this);\n }\n\n /**\n * Detect key\n * @param {Event} evt\n */\n detectKey(evt) {\n if (!this.enterKey) {\n return;\n }\n if (evt) {\n let key = keyCode(evt);\n if (key === ENTER_KEY) {\n this.filter();\n cancelEvt(evt);\n stopEvt(evt);\n } else {\n this.isUserTyping = true;\n root.clearInterval(this.autoFilterTimer);\n this.autoFilterTimer = null;\n }\n }\n }\n\n /**\n * Filter's keyup event: if auto-filter on, detect user is typing and filter\n * columns\n * @param {Event} evt\n */\n onKeyUp(evt) {\n if (!this.autoFilter) {\n return;\n }\n let key = keyCode(evt);\n this.isUserTyping = false;\n\n function filter() {\n root.clearInterval(this.autoFilterTimer);\n this.autoFilterTimer = null;\n if (!this.isUserTyping) {\n this.filter();\n this.isUserTyping = null;\n }\n }\n\n if (key !== ENTER_KEY && key !== TAB_KEY && key !== ESC_KEY &&\n key !== UP_ARROW_KEY && key !== DOWN_ARROW_KEY) {\n if (this.autoFilterTimer === null) {\n this.autoFilterTimer = root.setInterval(filter.bind(this),\n this.autoFilterDelay);\n }\n } else {\n root.clearInterval(this.autoFilterTimer);\n this.autoFilterTimer = null;\n }\n }\n\n /**\n * Filter's keydown event: if auto-filter on, detect user is typing\n */\n onKeyDown() {\n if (this.autoFilter) {\n this.isUserTyping = true;\n }\n }\n\n /**\n * Filter's focus event\n * @param {Event} evt\n */\n onInpFocus(evt) {\n let elm = targetEvt(evt);\n this.emitter.emit('filter-focus', this, elm);\n }\n\n /**\n * Filter's blur event: if auto-filter on, clear interval on filter blur\n */\n onInpBlur() {\n if (this.autoFilter) {\n this.isUserTyping = false;\n root.clearInterval(this.autoFilterTimer);\n }\n this.emitter.emit('filter-blur', this);\n }\n\n /**\n * Insert filters row at initialization\n */\n _insertFiltersRow() {\n if (this.gridLayout) {\n return;\n }\n let fltrow;\n\n let thead = tag(this.tbl, 'thead');\n if (thead.length > 0) {\n fltrow = thead[0].insertRow(this.filtersRowIndex);\n } else {\n fltrow = this.tbl.insertRow(this.filtersRowIndex);\n }\n\n fltrow.className = this.fltsRowCssClass;\n\n if (this.isExternalFlt) {\n fltrow.style.display = NONE;\n }\n\n this.emitter.emit('filters-row-inserted', this, fltrow);\n return fltrow;\n }\n\n /**\n * Initialize filtersless table\n */\n _initNoFilters() {\n if (this.fltGrid) {\n return;\n }\n this.refRow = this.refRow > 0 ? this.refRow - 1 : 0;\n this.nbFilterableRows = this.getRowsNb();\n }\n\n /**\n * Build input filter type\n * @param {Number} colIndex Column index\n * @param {String} cssClass Css class applied to filter\n * @param {DOMElement} container Container DOM element\n */\n _buildInputFilter(colIndex, cssClass, container) {\n let col = this.getFilterType(colIndex);\n let externalFltTgtId = this.isExternalFlt ?\n this.externalFltTgtIds[colIndex] : null;\n let inptype = col === INPUT ? 'text' : 'hidden';\n let inp = createElm(INPUT,\n ['id', this.prfxFlt + colIndex + '_' + this.id],\n ['type', inptype], ['ct', colIndex]);\n\n if (inptype !== 'hidden' && this.watermark) {\n inp.setAttribute('placeholder',\n this.isWatermarkArray ? (this.watermark[colIndex] || '') :\n this.watermark\n );\n }\n inp.className = cssClass || this.fltCssClass;\n addEvt(inp, 'focus', (evt) => this.onInpFocus(evt));\n\n //filter is appended in custom element\n if (externalFltTgtId) {\n elm(externalFltTgtId).appendChild(inp);\n } else {\n container.appendChild(inp);\n }\n\n this.fltIds.push(inp.id);\n\n addEvt(inp, 'keypress', (evt) => this.detectKey(evt));\n addEvt(inp, 'keydown', () => this.onKeyDown());\n addEvt(inp, 'keyup', (evt) => this.onKeyUp(evt));\n addEvt(inp, 'blur', () => this.onInpBlur());\n }\n\n /**\n * Build submit button\n * @param {Number} colIndex Column index\n * @param {DOMElement} container Container DOM element\n */\n _buildSubmitButton(colIndex, container) {\n let externalFltTgtId = this.isExternalFlt ?\n this.externalFltTgtIds[colIndex] : null;\n let btn = createElm(INPUT,\n ['id', this.prfxValButton + colIndex + '_' + this.id],\n ['type', 'button'], ['value', this.btnText]);\n btn.className = this.btnCssClass;\n\n //filter is appended in custom element\n if (externalFltTgtId) {\n elm(externalFltTgtId).appendChild(btn);\n } else {\n container.appendChild(btn);\n }\n\n addEvt(btn, 'click', () => this.filter());\n }\n\n /**\n * Return a feature instance for a given name\n * @param {String} name Name of the feature\n * @return {Object}\n */\n feature(name) {\n return this.Mod[name];\n }\n\n /**\n * Initialise all the extensions defined in the configuration object\n */\n initExtensions() {\n let exts = this.extensions;\n // Set config's publicPath dynamically for Webpack...\n __webpack_public_path__ = this.basePath;\n\n this.emitter.emit('before-loading-extensions', this);\n for (let i = 0, len = exts.length; i < len; i++) {\n let ext = exts[i];\n if (!this.ExtRegistry[ext.name]) {\n this.loadExtension(ext);\n }\n }\n this.emitter.emit('after-loading-extensions', this);\n }\n\n /**\n * Load an extension module\n * @param {Object} ext Extension config object\n */\n loadExtension(ext) {\n if (!ext || !ext.name) {\n return;\n }\n\n let name = ext.name;\n let path = ext.path;\n let modulePath;\n\n if (name && path) {\n modulePath = ext.path + name;\n } else {\n name = name.replace('.js', '');\n modulePath = 'extensions/{}/{}'.replace(/{}/g, name);\n }\n\n // Require pattern for Webpack\n require(['./' + modulePath], (mod) => {\n /* eslint-disable */\n let inst = new mod.default(this, ext);\n /* eslint-enable */\n inst.init();\n this.ExtRegistry[name] = inst;\n });\n }\n\n /**\n * Get an extension instance\n * @param {String} name Name of the extension\n * @return {Object} Extension instance\n */\n extension(name) {\n return this.ExtRegistry[name];\n }\n\n /**\n * Check passed extension name exists\n * @param {String} name Name of the extension\n * @return {Boolean}\n */\n hasExtension(name) {\n return !isEmpty(this.ExtRegistry[name]);\n }\n\n /**\n * Destroy all the extensions defined in the configuration object\n */\n destroyExtensions() {\n let exts = this.extensions;\n\n for (let i = 0, len = exts.length; i < len; i++) {\n let ext = exts[i];\n let extInstance = this.ExtRegistry[ext.name];\n if (extInstance) {\n extInstance.destroy();\n this.ExtRegistry[ext.name] = undefined;\n }\n }\n }\n\n /**\n * Load themes defined in the configuration object\n */\n loadThemes() {\n let themes = this.themes;\n this.emitter.emit('before-loading-themes', this);\n\n //Default theme config\n if (this.enableDefaultTheme) {\n let defaultTheme = { name: 'default' };\n this.themes.push(defaultTheme);\n }\n if (isArray(themes)) {\n for (let i = 0, len = themes.length; i < len; i++) {\n let theme = themes[i];\n let name = theme.name;\n let path = theme.path;\n let styleId = this.prfxTf + name;\n if (name && !path) {\n path = this.themesPath + name + '/' + name + '.css';\n }\n else if (!name && theme.path) {\n name = 'theme{0}'.replace('{0}', i);\n }\n\n if (!this.isImported(path, 'link')) {\n this.import(styleId, path, null, 'link');\n }\n }\n }\n\n //Some elements need to be overriden for default theme\n //Reset button\n this.btnResetText = null;\n this.btnResetHtml = '';\n\n //Paging buttons\n this.btnPrevPageHtml = '';\n this.btnNextPageHtml = '';\n this.btnFirstPageHtml = '';\n this.btnLastPageHtml = '';\n\n //Loader\n this.loader = true;\n this.loaderHtml = '
';\n this.loaderText = null;\n\n this.emitter.emit('after-loading-themes', this);\n }\n\n /**\n * Return stylesheet DOM element for a given theme name\n * @return {DOMElement} stylesheet element\n */\n getStylesheet(name = 'default') {\n return elm(this.prfxTf + name);\n }\n\n /**\n * Destroy filter grid\n */\n destroy() {\n if (!this.initialized) {\n return;\n }\n\n let Mod = this.Mod;\n let emitter = this.emitter;\n\n if (this.isExternalFlt && !this.popupFilters) {\n this.removeExternalFlts();\n }\n if (this.infDiv) {\n this.removeToolbar();\n }\n if (this.markActiveColumns) {\n this.clearActiveColumns();\n emitter.off(['before-filtering'], () => this.clearActiveColumns());\n emitter.off(['cell-processed'],\n (tf, colIndex) => this.markActiveColumn(colIndex));\n }\n if (this.hasExtensions) {\n this.destroyExtensions();\n }\n\n this.validateAllRows();\n\n if (this.fltGrid && !this.gridLayout) {\n this.tbl.deleteRow(this.filtersRowIndex);\n }\n\n // broadcast destroy event\n emitter.emit('destroy', this);\n\n // Destroy modules\n // TODO: subcribe modules to destroy event instead\n Object.keys(Mod).forEach(function (key) {\n let feature = Mod[key];\n if (feature && isFn(feature.destroy)) {\n feature.destroy();\n }\n });\n\n // unsubscribe to events\n if (this.hasVisibleRows) {\n emitter.off(['after-filtering'], () => this.enforceVisibility());\n }\n if (this.linkedFilters) {\n emitter.off(['after-filtering'], () => this.linkFilters());\n }\n this.emitter.off(['filter-focus'],\n (tf, filter) => this.setActiveFilterId(filter.id));\n\n removeClass(this.tbl, this.prfxTf);\n removeClass(this.tbl, this.prfxResponsive);\n\n this.nbHiddenRows = 0;\n this.validRowsIndex = [];\n this.fltIds = [];\n this.initialized = false;\n }\n\n /**\n * Generate container element for paging, reset button, rows counter etc.\n */\n setToolbar() {\n if (this.infDiv) {\n return;\n }\n\n /*** container div ***/\n let infdiv = createElm('div', ['id', this.prfxInfDiv + this.id]);\n infdiv.className = this.infDivCssClass;\n\n //custom container\n if (this.toolBarTgtId) {\n elm(this.toolBarTgtId).appendChild(infdiv);\n }\n //grid-layout\n else if (this.gridLayout) {\n let gridLayout = this.Mod.gridLayout;\n gridLayout.tblMainCont.appendChild(infdiv);\n infdiv.className = gridLayout.infDivCssClass;\n }\n //default location: just above the table\n else {\n let cont = createElm('caption');\n cont.appendChild(infdiv);\n this.tbl.insertBefore(cont, this.tbl.firstChild);\n }\n this.infDiv = elm(this.prfxInfDiv + this.id);\n\n /*** left div containing rows # displayer ***/\n let ldiv = createElm('div', ['id', this.prfxLDiv + this.id]);\n ldiv.className = this.lDivCssClass;\n infdiv.appendChild(ldiv);\n this.lDiv = elm(this.prfxLDiv + this.id);\n\n /*** right div containing reset button\n + nb results per page select ***/\n let rdiv = createElm('div', ['id', this.prfxRDiv + this.id]);\n rdiv.className = this.rDivCssClass;\n infdiv.appendChild(rdiv);\n this.rDiv = elm(this.prfxRDiv + this.id);\n\n /*** mid div containing paging elements ***/\n let mdiv = createElm('div', ['id', this.prfxMDiv + this.id]);\n mdiv.className = this.mDivCssClass;\n infdiv.appendChild(mdiv);\n this.mDiv = elm(this.prfxMDiv + this.id);\n\n // emit help initialisation only if undefined\n if (isUndef(this.help)) {\n // explicitily set enabled field to true to initialise help by\n // default, only if setting is undefined\n this.Mod.help.enabled = true;\n this.emitter.emit('init-help', this);\n }\n }\n\n /**\n * Remove toolbar container element\n */\n removeToolbar() {\n if (!this.infDiv) {\n return;\n }\n removeElm(this.infDiv);\n this.infDiv = null;\n\n let tbl = this.tbl;\n let captions = tag(tbl, 'caption');\n if (captions.length > 0) {\n [].forEach.call(captions, (elm) => tbl.removeChild(elm));\n }\n }\n\n /**\n * Remove all the external column filters\n */\n removeExternalFlts() {\n if (!this.isExternalFlt) {\n return;\n }\n let ids = this.externalFltTgtIds,\n len = ids.length;\n for (let ct = 0; ct < len; ct++) {\n let externalFltTgtId = ids[ct],\n externalFlt = elm(externalFltTgtId);\n if (externalFlt) {\n externalFlt.innerHTML = '';\n }\n }\n }\n\n /**\n * Check if given column implements a filter with custom options\n * @param {Number} colIndex Column's index\n * @return {Boolean}\n */\n isCustomOptions(colIndex) {\n return this.hasCustomOptions &&\n this.customOptions.cols.indexOf(colIndex) !== -1;\n }\n\n /**\n * Returns an array [[value0, value1 ...],[text0, text1 ...]] with the\n * custom options values and texts\n * @param {Number} colIndex Column's index\n * @return {Array}\n */\n getCustomOptions(colIndex) {\n if (isEmpty(colIndex) || !this.isCustomOptions(colIndex)) {\n return;\n }\n\n let customOptions = this.customOptions;\n let cols = customOptions.cols;\n let optTxt = [], optArray = [];\n let index = cols.indexOf(colIndex);\n let slcValues = customOptions.values[index];\n let slcTexts = customOptions.texts[index];\n let slcSort = customOptions.sorts[index];\n\n for (let r = 0, len = slcValues.length; r < len; r++) {\n optArray.push(slcValues[r]);\n if (slcTexts[r]) {\n optTxt.push(slcTexts[r]);\n } else {\n optTxt.push(slcValues[r]);\n }\n }\n if (slcSort) {\n optArray.sort();\n optTxt.sort();\n }\n return [optArray, optTxt];\n }\n\n /**\n * Filter the table by retrieving the data from each cell in every single\n * row and comparing it to the search term for current column. A row is\n * hidden when all the search terms are not found in inspected row.\n */\n filter() {\n if (!this.fltGrid || !this.initialized) {\n return;\n }\n //invoke onbefore callback\n if (this.onBeforeFilter) {\n this.onBeforeFilter.call(null, this);\n }\n this.emitter.emit('before-filtering', this);\n\n let row = this.tbl.rows,\n nbRows = this.getRowsNb(true),\n hiddenRows = 0;\n\n this.validRowsIndex = [];\n // search args re-init\n let searchArgs = this.getFiltersValue();\n\n let numCellData;\n let nbFormat;\n let re_le = new RegExp(this.leOperator),\n re_ge = new RegExp(this.geOperator),\n re_l = new RegExp(this.lwOperator),\n re_g = new RegExp(this.grOperator),\n re_d = new RegExp(this.dfOperator),\n re_lk = new RegExp(rgxEsc(this.lkOperator)),\n re_eq = new RegExp(this.eqOperator),\n re_st = new RegExp(this.stOperator),\n re_en = new RegExp(this.enOperator),\n // re_an = new RegExp(this.anOperator),\n // re_cr = new RegExp(this.curExp),\n re_em = this.emOperator,\n re_nm = this.nmOperator,\n re_re = new RegExp(rgxEsc(this.rgxOperator));\n\n //keyword highlighting\n function highlight(str, ok, cell) {\n /*jshint validthis:true */\n if (this.highlightKeywords && ok) {\n str = str.replace(re_lk, '');\n str = str.replace(re_eq, '');\n str = str.replace(re_st, '');\n str = str.replace(re_en, '');\n let w = str;\n if (re_le.test(str) || re_ge.test(str) || re_l.test(str) ||\n re_g.test(str) || re_d.test(str)) {\n w = getText(cell);\n }\n if (w !== '') {\n this.emitter.emit('highlight-keyword', this, cell, w);\n }\n }\n }\n\n //looks for search argument in current row\n function hasArg(sA, cellData, j) {\n sA = matchCase(sA, this.caseSensitive);\n\n let occurence;\n let dtType = this.hasColDateType ?\n this.colDateType[j] : this.defaultDateType;\n\n //Search arg operator tests\n let hasLO = re_l.test(sA),\n hasLE = re_le.test(sA),\n hasGR = re_g.test(sA),\n hasGE = re_ge.test(sA),\n hasDF = re_d.test(sA),\n hasEQ = re_eq.test(sA),\n hasLK = re_lk.test(sA),\n // hasAN = re_an.test(sA),\n hasST = re_st.test(sA),\n hasEN = re_en.test(sA),\n hasEM = (re_em === sA),\n hasNM = (re_nm === sA),\n hasRE = re_re.test(sA);\n\n //Search arg dates tests\n let isLDate = hasLO && isValidDate(sA.replace(re_l, ''), dtType);\n let isLEDate = hasLE && isValidDate(sA.replace(re_le, ''), dtType);\n let isGDate = hasGR && isValidDate(sA.replace(re_g, ''), dtType);\n let isGEDate = hasGE && isValidDate(sA.replace(re_ge, ''), dtType);\n let isDFDate = hasDF && isValidDate(sA.replace(re_d, ''), dtType);\n let isEQDate = hasEQ && isValidDate(sA.replace(re_eq, ''), dtType);\n\n let dte1, dte2;\n //dates\n if (isValidDate(cellData, dtType)) {\n dte1 = formatDate(cellData, dtType);\n // lower date\n if (isLDate) {\n dte2 = formatDate(sA.replace(re_l, ''), dtType);\n occurence = dte1 < dte2;\n }\n // lower equal date\n else if (isLEDate) {\n dte2 = formatDate(sA.replace(re_le, ''), dtType);\n occurence = dte1 <= dte2;\n }\n // greater equal date\n else if (isGEDate) {\n dte2 = formatDate(sA.replace(re_ge, ''), dtType);\n occurence = dte1 >= dte2;\n }\n // greater date\n else if (isGDate) {\n dte2 = formatDate(sA.replace(re_g, ''), dtType);\n occurence = dte1 > dte2;\n }\n // different date\n else if (isDFDate) {\n dte2 = formatDate(sA.replace(re_d, ''), dtType);\n occurence = dte1.toString() !== dte2.toString();\n }\n // equal date\n else if (isEQDate) {\n dte2 = formatDate(sA.replace(re_eq, ''), dtType);\n occurence = dte1.toString() === dte2.toString();\n }\n // searched keyword with * operator doesn't have to be a date\n else if (re_lk.test(sA)) {// like date\n occurence = contains(sA.replace(re_lk, ''), cellData,\n false, this.caseSensitive);\n }\n else if (isValidDate(sA, dtType)) {\n dte2 = formatDate(sA, dtType);\n occurence = dte1.toString() === dte2.toString();\n }\n //empty\n else if (hasEM) {\n occurence = isEmptyString(cellData);\n }\n //non-empty\n else if (hasNM) {\n occurence = !isEmptyString(cellData);\n } else {\n occurence = contains(sA, cellData, this.isExactMatch(j),\n this.caseSensitive);\n }\n }\n\n else {\n //first numbers need to be formated\n if (this.hasColNbFormat && this.colNbFormat[j]) {\n numCellData = removeNbFormat(cellData, this.colNbFormat[j]);\n nbFormat = this.colNbFormat[j];\n } else {\n if (this.thousandsSeparator === ',' &&\n this.decimalSeparator === '.') {\n numCellData = removeNbFormat(cellData, 'us');\n nbFormat = 'us';\n } else {\n numCellData = removeNbFormat(cellData, 'eu');\n nbFormat = 'eu';\n }\n }\n\n // first checks if there is any operator (<,>,<=,>=,!,*,=,{,},\n // rgx:)\n // lower equal\n if (hasLE) {\n occurence = numCellData <= removeNbFormat(\n sA.replace(re_le, ''), nbFormat);\n }\n //greater equal\n else if (hasGE) {\n occurence = numCellData >= removeNbFormat(\n sA.replace(re_ge, ''), nbFormat);\n }\n //lower\n else if (hasLO) {\n occurence = numCellData < removeNbFormat(\n sA.replace(re_l, ''), nbFormat);\n }\n //greater\n else if (hasGR) {\n occurence = numCellData > removeNbFormat(\n sA.replace(re_g, ''), nbFormat);\n }\n //different\n else if (hasDF) {\n occurence = contains(sA.replace(re_d, ''), cellData,\n false, this.caseSensitive) ? false : true;\n }\n //like\n else if (hasLK) {\n occurence = contains(sA.replace(re_lk, ''), cellData,\n false, this.caseSensitive);\n }\n //equal\n else if (hasEQ) {\n occurence = contains(sA.replace(re_eq, ''), cellData,\n true, this.caseSensitive);\n }\n //starts with\n else if (hasST) {\n occurence = cellData.indexOf(sA.replace(re_st, '')) === 0 ?\n true : false;\n }\n //ends with\n else if (hasEN) {\n let searchArg = sA.replace(re_en, '');\n occurence =\n cellData.lastIndexOf(searchArg, cellData.length - 1) ===\n (cellData.length - 1) - (searchArg.length - 1) &&\n cellData.lastIndexOf(searchArg, cellData.length - 1)\n > -1 ? true : false;\n }\n //empty\n else if (hasEM) {\n occurence = isEmptyString(cellData);\n }\n //non-empty\n else if (hasNM) {\n occurence = !isEmptyString(cellData);\n }\n //regexp\n else if (hasRE) {\n //in case regexp fires an exception\n try {\n //operator is removed\n let srchArg = sA.replace(re_re, '');\n let rgx = new RegExp(srchArg);\n occurence = rgx.test(cellData);\n } catch (ex) {\n occurence = false;\n }\n } else {\n // If numeric type data, perform a strict equality test and\n // fallback to unformatted number string comparison\n if (numCellData && this.hasColNbFormat &&\n this.colNbFormat[j] && !this.singleSearchFlt) {\n // removeNbFormat can return 0 for strings which are not\n // formatted numbers, in that case return the original\n // string. TODO: handle this in removeNbFormat\n sA = removeNbFormat(sA, nbFormat) || sA;\n occurence = numCellData === sA ||\n contains(sA.toString(), numCellData.toString(),\n this.isExactMatch(j), this.caseSensitive);\n } else {\n // Finally test search term is contained in cell data\n occurence = contains(sA, cellData, this.isExactMatch(j),\n this.caseSensitive);\n }\n }\n\n }//else\n return occurence;\n }//fn\n\n for (let k = this.refRow; k < nbRows; k++) {\n // already filtered rows display re-init\n row[k].style.display = '';\n\n let cells = row[k].cells;\n let nchilds = cells.length;\n\n // checks if row has exact cell #\n if (nchilds !== this.nbCells) {\n continue;\n }\n\n let occurence = [],\n isRowValid = true,\n //only for single filter search\n singleFltRowValid = false;\n\n // this loop retrieves cell data\n for (let j = 0; j < nchilds; j++) {\n //searched keyword\n let sA = searchArgs[this.singleSearchFlt ? 0 : j];\n\n if (sA === '') {\n continue;\n }\n\n let cellData = matchCase(this.getCellData(cells[j]),\n this.caseSensitive);\n\n //multiple search parameter operator ||\n let sAOrSplit = sA.toString().split(this.orOperator),\n //multiple search || parameter boolean\n hasMultiOrSA = sAOrSplit.length > 1,\n //multiple search parameter operator &&\n sAAndSplit = sA.toString().split(this.anOperator),\n //multiple search && parameter boolean\n hasMultiAndSA = sAAndSplit.length > 1;\n\n //detect operators or array query\n if (isArray(sA) || hasMultiOrSA || hasMultiAndSA) {\n let cS,\n s,\n occur = false;\n if (isArray(sA)) {\n s = sA;\n } else {\n s = hasMultiOrSA ? sAOrSplit : sAAndSplit;\n }\n // TODO: improve clarity/readability of this block\n for (let w = 0, len = s.length; w < len; w++) {\n cS = trim(s[w]);\n occur = hasArg.call(this, cS, cellData, j);\n highlight.call(this, cS, occur, cells[j]);\n if ((hasMultiOrSA && occur) ||\n (hasMultiAndSA && !occur)) {\n break;\n }\n if (isArray(sA) && occur) {\n break;\n }\n }\n occurence[j] = occur;\n\n }\n //single search parameter\n else {\n occurence[j] = hasArg.call(this, trim(sA), cellData, j);\n highlight.call(this, sA, occurence[j], cells[j]);\n }//else single param\n\n if (!occurence[j]) {\n isRowValid = false;\n }\n if (this.singleSearchFlt && occurence[j]) {\n singleFltRowValid = true;\n }\n\n this.emitter.emit('cell-processed', this, j, cells[j]);\n }//for j\n\n if (this.singleSearchFlt && singleFltRowValid) {\n isRowValid = true;\n }\n\n if (!isRowValid) {\n this.validateRow(k, false);\n hiddenRows++;\n } else {\n this.validateRow(k, true);\n }\n\n this.emitter.emit('row-processed', this, k,\n this.validRowsIndex.length, isRowValid);\n }// for k\n\n this.nbHiddenRows = hiddenRows;\n\n //invokes onafterfilter callback\n if (this.onAfterFilter) {\n this.onAfterFilter.call(null, this);\n }\n\n this.emitter.emit('after-filtering', this, searchArgs);\n }\n\n /**\n * Return the data of a specified column\n * @param {Number} colIndex Column index\n * @param {Boolean} includeHeaders Optional: include headers row\n * @param {Boolean} num Optional: return unformatted number\n * @param {Array} exclude Optional: list of row indexes to be excluded\n * @return {Array} Flat list of data for a column\n */\n getColValues(colIndex, includeHeaders = false, num = false, exclude = []) {\n if (!this.fltGrid) {\n return;\n }\n let row = this.tbl.rows;\n let nbRows = this.getRowsNb(true);\n let colValues = [];\n\n if (includeHeaders) {\n colValues.push(this.getHeadersText()[colIndex]);\n }\n\n for (let i = this.refRow; i < nbRows; i++) {\n let isExludedRow = false;\n // checks if current row index appears in exclude array\n if (exclude.length > 0) {\n isExludedRow = exclude.indexOf(i) !== -1;\n }\n let cell = row[i].cells,\n nchilds = cell.length;\n\n // checks if row has exact cell # and is not excluded\n if (nchilds === this.nbCells && !isExludedRow) {\n // this loop retrieves cell data\n for (let j = 0; j < nchilds; j++) {\n if (j !== colIndex || row[i].style.display !== '') {\n continue;\n }\n let cellData = this.getCellData(cell[j]),\n nbFormat = this.colNbFormat ?\n this.colNbFormat[colIndex] : undefined,\n data = num ? removeNbFormat(cellData, nbFormat) :\n cellData;\n colValues.push(data);\n }\n }\n }\n return colValues;\n }\n\n /**\n * Return the filter's value of a specified column\n * @param {Number} index Column index\n * @return {String} Filter value\n */\n getFilterValue(index) {\n if (!this.fltGrid) {\n return;\n }\n let fltValue = '';\n let flt = this.getFilterElement(index);\n if (!flt) {\n return fltValue;\n }\n\n let fltColType = this.getFilterType(index);\n if (fltColType !== MULTIPLE && fltColType !== CHECKLIST) {\n fltValue = flt.value;\n }\n //mutiple select\n else if (fltColType === MULTIPLE) {\n fltValue = this.feature('dropdown').getValues(index);\n }\n //checklist\n else if (fltColType === CHECKLIST) {\n fltValue = this.feature('checkList').getValues(index);\n }\n //return an empty string if collection is empty or contains a single\n //empty string\n if (isArray(fltValue) && fltValue.length === 0 ||\n (fltValue.length === 1 && fltValue[0] === '')) {\n fltValue = '';\n }\n\n return fltValue;\n }\n\n /**\n * Return the filters' values\n * @return {Array} List of filters' values\n */\n getFiltersValue() {\n if (!this.fltGrid) {\n return;\n }\n let searchArgs = [];\n for (let i = 0, len = this.fltIds.length; i < len; i++) {\n let fltValue = this.getFilterValue(i);\n if (isArray(fltValue)) {\n searchArgs.push(fltValue);\n } else {\n searchArgs.push(trim(fltValue));\n }\n }\n return searchArgs;\n }\n\n /**\n * Return the ID of a specified column's filter\n * @param {Number} index Column's index\n * @return {String} ID of the filter element\n */\n getFilterId(index) {\n if (!this.fltGrid) {\n return;\n }\n return this.fltIds[index];\n }\n\n /**\n * Return the list of ids of filters matching a specified type.\n * Note: hidden filters are also returned\n *\n * @param {String} type Filter type string ('input', 'select', 'multiple',\n * 'checklist')\n * @param {Boolean} bool If true returns columns indexes instead of IDs\n * @return {[type]} List of element IDs or column indexes\n */\n getFiltersByType(type, bool) {\n if (!this.fltGrid) {\n return;\n }\n let arr = [];\n for (let i = 0, len = this.fltIds.length; i < len; i++) {\n let fltType = this.getFilterType(i);\n if (fltType === type.toLowerCase()) {\n let a = bool ? i : this.fltIds[i];\n arr.push(a);\n }\n }\n return arr;\n }\n\n /**\n * Return the filter's DOM element for a given column\n * @param {Number} index Column's index\n * @return {DOMElement}\n */\n getFilterElement(index) {\n let fltId = this.fltIds[index];\n return elm(fltId);\n }\n\n /**\n * Return the number of cells for a given row index\n * @param {Number} rowIndex Index of the row\n * @return {Number} Number of cells\n */\n getCellsNb(rowIndex = 0) {\n let tr = this.tbl.rows[rowIndex];\n return tr.cells.length;\n }\n\n /**\n * Return the number of filterable rows starting from reference row if\n * defined\n * @param {Boolean} includeHeaders Include the headers row\n * @return {Number} Number of filterable rows\n */\n getRowsNb(includeHeaders) {\n let s = isUndef(this.refRow) ? 0 : this.refRow;\n let ntrs = this.tbl.rows.length;\n if (includeHeaders) {\n s = 0;\n }\n return parseInt(ntrs - s, 10);\n }\n\n /**\n * Return the data of a given cell\n * @param {DOMElement} cell Cell's DOM object\n * @return {String}\n */\n getCellData(cell) {\n let idx = cell.cellIndex;\n //Check for customCellData callback\n if (this.customCellData &&\n this.customCellDataCols.indexOf(idx) !== -1) {\n return this.customCellData.call(null, this, cell, idx);\n } else {\n return getText(cell);\n }\n }\n\n /**\n * Return the table data with following format:\n * [\n * [rowIndex, [value0, value1...]],\n * [rowIndex, [value0, value1...]]\n * ]\n * @param {Boolean} includeHeaders Optional: include headers row\n * @param {Boolean} excludeHiddenCols Optional: exclude hidden columns\n * @return {Array}\n *\n * TODO: provide an API returning data in JSON format\n */\n getTableData(includeHeaders = false, excludeHiddenCols = false) {\n let rows = this.tbl.rows;\n let nbRows = this.getRowsNb(true);\n let tblData = [];\n if (includeHeaders) {\n let headers = this.getHeadersText(excludeHiddenCols);\n tblData.push([this.getHeadersRowIndex(), headers]);\n }\n for (let k = this.refRow; k < nbRows; k++) {\n let rowData = [k, []];\n let cells = rows[k].cells;\n for (let j = 0, len = cells.length; j < len; j++) {\n if (excludeHiddenCols && this.hasExtension('colsVisibility')) {\n if (this.extension('colsVisibility').isColHidden(j)) {\n continue;\n }\n }\n let cellData = this.getCellData(cells[j]);\n rowData[1].push(cellData);\n }\n tblData.push(rowData);\n }\n return tblData;\n }\n\n /**\n * Return the filtered data with following format:\n * [\n * [rowIndex, [value0, value1...]],\n * [rowIndex, [value0, value1...]]\n * ]\n * @param {Boolean} includeHeaders Optional: include headers row\n * @param {Boolean} excludeHiddenCols Optional: exclude hidden columns\n * @return {Array}\n *\n * TODO: provide an API returning data in JSON format\n */\n getFilteredData(includeHeaders = false, excludeHiddenCols = false) {\n if (!this.validRowsIndex) {\n return [];\n }\n let rows = this.tbl.rows,\n filteredData = [];\n if (includeHeaders) {\n let headers = this.getHeadersText(excludeHiddenCols);\n filteredData.push([this.getHeadersRowIndex(), headers]);\n }\n\n let validRows = this.getValidRows(true);\n for (let i = 0; i < validRows.length; i++) {\n let rData = [this.validRowsIndex[i], []],\n cells = rows[this.validRowsIndex[i]].cells;\n for (let k = 0; k < cells.length; k++) {\n if (excludeHiddenCols && this.hasExtension('colsVisibility')) {\n if (this.extension('colsVisibility').isColHidden(k)) {\n continue;\n }\n }\n let cellData = this.getCellData(cells[k]);\n rData[1].push(cellData);\n }\n filteredData.push(rData);\n }\n return filteredData;\n }\n\n /**\n * Return the filtered data for a given column index\n * @param {Number} colIndex Colmun's index\n * @param {Boolean} includeHeaders Optional: include headers row\n * @return {Array} Flat list of values ['val0','val1','val2'...]\n *\n * TODO: provide an API returning data in JSON format\n */\n getFilteredDataCol(colIndex, includeHeaders = false) {\n if (isUndef(colIndex)) {\n return [];\n }\n let data = this.getFilteredData(),\n colData = [];\n if (includeHeaders) {\n colData.push(this.getHeadersText()[colIndex]);\n }\n for (let i = 0, len = data.length; i < len; i++) {\n let r = data[i],\n //cols values of current row\n d = r[1],\n //data of searched column\n c = d[colIndex];\n colData.push(c);\n }\n return colData;\n }\n\n /**\n * Get the display value of a row\n * @param {HTMLTableRowElement} row DOM element of the row\n * @return {String} Usually 'none' or ''\n */\n getRowDisplay(row) {\n return row.style.display;\n }\n\n /**\n * Validate/invalidate row by setting the 'validRow' attribute on the row\n * @param {Number} rowIndex Index of the row\n * @param {Boolean} isValid\n */\n validateRow(rowIndex, isValid) {\n let row = this.tbl.rows[rowIndex];\n if (!row || typeof isValid !== 'boolean') {\n return;\n }\n\n // always visible rows are valid\n if (this.hasVisibleRows && this.visibleRows.indexOf(rowIndex) !== -1) {\n isValid = true;\n }\n\n let displayFlag = isValid ? '' : NONE,\n validFlag = isValid ? 'true' : 'false';\n row.style.display = displayFlag;\n\n if (this.paging) {\n row.setAttribute('validRow', validFlag);\n }\n\n if (isValid) {\n if (this.validRowsIndex.indexOf(rowIndex) === -1) {\n this.validRowsIndex.push(rowIndex);\n }\n\n if (this.onRowValidated) {\n this.onRowValidated.call(null, this, rowIndex);\n }\n\n this.emitter.emit('row-validated', this, rowIndex);\n }\n }\n\n /**\n * Validate all filterable rows\n */\n validateAllRows() {\n if (!this.initialized) {\n return;\n }\n this.validRowsIndex = [];\n for (let k = this.refRow; k < this.nbFilterableRows; k++) {\n this.validateRow(k, true);\n }\n }\n\n /**\n * Set search value to a given filter\n * @param {Number} index Column's index\n * @param {String or Array} query searcharg Search term\n */\n setFilterValue(index, query = '') {\n if (!this.fltGrid) {\n return;\n }\n let slc = this.getFilterElement(index),\n fltColType = this.getFilterType(index);\n\n if (fltColType !== MULTIPLE && fltColType !== CHECKLIST) {\n if (this.loadFltOnDemand && !this.initialized) {\n this.emitter.emit('build-select-filter', this, index,\n this.linkedFilters, this.isExternalFlt);\n }\n slc.value = query;\n }\n //multiple selects\n else if (fltColType === MULTIPLE) {\n let values = isArray(query) ? query :\n query.split(' ' + this.orOperator + ' ');\n\n if (this.loadFltOnDemand && !this.initialized) {\n this.emitter.emit('build-select-filter', this, index,\n this.linkedFilters, this.isExternalFlt);\n }\n\n this.emitter.emit('select-options', this, index, values);\n }\n //checklist\n else if (fltColType === CHECKLIST) {\n let values = [];\n if (this.loadFltOnDemand && !this.initialized) {\n this.emitter.emit('build-checklist-filter', this, index,\n this.isExternalFlt);\n }\n if (isArray(query)) {\n values = query;\n } else {\n query = matchCase(query, this.caseSensitive);\n values = query.split(' ' + this.orOperator + ' ');\n }\n\n this.emitter.emit('select-checklist-options', this, index, values);\n }\n }\n\n /**\n * Set them columns' widths as per configuration\n * @param {Element} tbl DOM element\n */\n setColWidths(tbl) {\n if (!this.hasColWidths) {\n return;\n }\n tbl = tbl || this.tbl;\n\n let nbCols = this.nbCells;\n let colWidths = this.colWidths;\n let colTags = tag(tbl, 'col');\n let tblHasColTag = colTags.length > 0;\n let frag = !tblHasColTag ? doc.createDocumentFragment() : null;\n for (let k = 0; k < nbCols; k++) {\n let col;\n if (tblHasColTag) {\n col = colTags[k];\n } else {\n col = createElm('col', ['id', this.id + '_col_' + k]);\n frag.appendChild(col);\n }\n col.style.width = colWidths[k];\n }\n if (!tblHasColTag) {\n tbl.insertBefore(frag, tbl.firstChild);\n }\n }\n\n /**\n * Makes defined rows always visible\n */\n enforceVisibility() {\n if (!this.hasVisibleRows) {\n return;\n }\n let nbRows = this.getRowsNb(true);\n for (let i = 0, len = this.visibleRows.length; i < len; i++) {\n let row = this.visibleRows[i];\n //row index cannot be > nrows\n if (row <= nbRows) {\n this.validateRow(row, true);\n }\n }\n }\n\n /**\n * Clear all the filters' values\n */\n clearFilters() {\n if (!this.fltGrid) {\n return;\n }\n\n this.emitter.emit('before-clearing-filters', this);\n\n if (this.onBeforeReset) {\n this.onBeforeReset.call(null, this, this.getFiltersValue());\n }\n for (let i = 0, len = this.fltIds.length; i < len; i++) {\n this.setFilterValue(i, '');\n }\n\n this.filter();\n\n if (this.onAfterReset) {\n this.onAfterReset.call(null, this);\n }\n this.emitter.emit('after-clearing-filters', this);\n }\n\n /**\n * Clears filtered columns visual indicator (background color)\n */\n clearActiveColumns() {\n for (let i = 0, len = this.getCellsNb(this.headersRow); i < len; i++) {\n removeClass(this.getHeaderElement(i), this.activeColumnsCssClass);\n }\n }\n\n /**\n * Mark currently filtered column\n * @param {Number} colIndex Column index\n */\n markActiveColumn(colIndex) {\n let header = this.getHeaderElement(colIndex);\n if (hasClass(header, this.activeColumnsCssClass)) {\n return;\n }\n if (this.onBeforeActiveColumn) {\n this.onBeforeActiveColumn.call(null, this, colIndex);\n }\n addClass(header, this.activeColumnsCssClass);\n if (this.onAfterActiveColumn) {\n this.onAfterActiveColumn.call(null, this, colIndex);\n }\n }\n\n /**\n * Return the ID of the current active filter\n * @returns {String}\n */\n getActiveFilterId() {\n return this.activeFilterId;\n }\n\n /**\n * Set the ID of the current active filter\n * @param {String} filterId Element ID\n */\n setActiveFilterId(filterId) {\n this.activeFilterId = filterId;\n }\n\n /**\n * Return the column index for a given filter ID\n * @param {string} [filterId=''] Filter ID\n * @returns {Number} Column index\n */\n getColumnIndexFromFilterId(filterId = '') {\n let idx = filterId.split('_')[0];\n idx = idx.split(this.prfxFlt)[1];\n return parseInt(idx, 10);\n }\n\n /**\n * Make specified column's filter active\n * @param colIndex Index of a column\n */\n activateFilter(colIndex) {\n if (isUndef(colIndex)) {\n return;\n }\n this.setActiveFilterId(this.getFilterId(colIndex));\n }\n\n /**\n * Refresh the filters subject to linking ('select', 'multiple',\n * 'checklist' type)\n */\n linkFilters() {\n if (!this.linkedFilters || !this.activeFilterId) {\n return;\n }\n let slcA1 = this.getFiltersByType(SELECT, true),\n slcA2 = this.getFiltersByType(MULTIPLE, true),\n slcA3 = this.getFiltersByType(CHECKLIST, true),\n slcIndex = slcA1.concat(slcA2);\n slcIndex = slcIndex.concat(slcA3);\n\n let activeIdx = this.getColumnIndexFromFilterId(this.activeFilterId);\n\n for (let i = 0, len = slcIndex.length; i < len; i++) {\n let curSlc = elm(this.fltIds[slcIndex[i]]);\n let slcSelectedValue = this.getFilterValue(slcIndex[i]);\n\n // Welcome to cyclomatic complexity hell :)\n // TODO: simplify/refactor if statement\n if (activeIdx !== slcIndex[i] ||\n (this.paging && slcA1.indexOf(slcIndex[i]) !== -1 &&\n activeIdx === slcIndex[i]) ||\n (!this.paging && (slcA3.indexOf(slcIndex[i]) !== -1 ||\n slcA2.indexOf(slcIndex[i]) !== -1)) ||\n slcSelectedValue === this.displayAllText) {\n\n //1st option needs to be inserted\n if (this.loadFltOnDemand) {\n let opt0 = createOpt(this.displayAllText, '');\n curSlc.innerHTML = '';\n curSlc.appendChild(opt0);\n }\n\n if (slcA3.indexOf(slcIndex[i]) !== -1) {\n this.emitter.emit('build-checklist-filter', this,\n slcIndex[i]);\n } else {\n this.emitter.emit('build-select-filter', this, slcIndex[i],\n true);\n }\n\n this.setFilterValue(slcIndex[i], slcSelectedValue);\n }\n }\n }\n\n /**\n * Determines if passed filter column implements exact query match\n * @param {Number} colIndex [description]\n * @return {Boolean} [description]\n */\n isExactMatch(colIndex) {\n let fltType = this.getFilterType(colIndex);\n return this.exactMatchByCol[colIndex] || this.exactMatch ||\n fltType !== INPUT;\n }\n\n /**\n * Check if passed script or stylesheet is already imported\n * @param {String} filePath Ressource path\n * @param {String} type Possible values: 'script' or 'link'\n * @return {Boolean}\n */\n isImported(filePath, type = 'script') {\n let imported = false,\n attr = type === 'script' ? 'src' : 'href',\n files = tag(doc, type);\n for (let i = 0, len = files.length; i < len; i++) {\n if (isUndef(files[i][attr])) {\n continue;\n }\n if (files[i][attr].match(filePath)) {\n imported = true;\n break;\n }\n }\n return imported;\n }\n\n /**\n * Import script or stylesheet\n * @param {String} fileId Ressource ID\n * @param {String} filePath Ressource path\n * @param {Function} callback Callback\n * @param {String} type Possible values: 'script' or 'link'\n */\n import(fileId, filePath, callback, type = 'script') {\n if (this.isImported(filePath, type)) {\n return;\n }\n let o = this,\n isLoaded = false,\n file,\n head = tag(doc, 'head')[0];\n\n if (type.toLowerCase() === 'link') {\n file = createElm('link',\n ['id', fileId], ['type', 'text/css'],\n ['rel', 'stylesheet'], ['href', filePath]\n );\n } else {\n file = createElm('script',\n ['id', fileId],\n ['type', 'text/javascript'], ['src', filePath]\n );\n }\n\n //Browser <> IE onload event works only for scripts, not for stylesheets\n file.onload = file.onreadystatechange = () => {\n if (!isLoaded &&\n (!this.readyState || this.readyState === 'loaded' ||\n this.readyState === 'complete')) {\n isLoaded = true;\n if (typeof callback === 'function') {\n callback.call(null, o);\n }\n }\n };\n file.onerror = function () {\n throw new Error(`TableFilter could not load: ${filePath}`);\n };\n head.appendChild(file);\n }\n\n /**\n * Check if table has filters grid\n * @return {Boolean}\n */\n isInitialized() {\n return this.initialized;\n }\n\n /**\n * Get list of filter IDs\n * @return {[type]} [description]\n */\n getFiltersId() {\n return this.fltIds || [];\n }\n\n /**\n * Get filtered (valid) rows indexes\n * @param {Boolean} reCalc Force calculation of filtered rows list\n * @return {Array} List of row indexes\n */\n getValidRows(reCalc) {\n if (!reCalc) {\n return this.validRowsIndex;\n }\n\n let nbRows = this.getRowsNb(true);\n this.validRowsIndex = [];\n for (let k = this.refRow; k < nbRows; k++) {\n let r = this.tbl.rows[k];\n if (!this.paging) {\n if (this.getRowDisplay(r) !== NONE) {\n this.validRowsIndex.push(r.rowIndex);\n }\n } else {\n if (r.getAttribute('validRow') === 'true' ||\n r.getAttribute('validRow') === null) {\n this.validRowsIndex.push(r.rowIndex);\n }\n }\n }\n return this.validRowsIndex;\n }\n\n /**\n * Get the index of the row containing the filters\n * @return {Number}\n */\n getFiltersRowIndex() {\n return this.filtersRowIndex;\n }\n\n /**\n * Get the index of the headers row\n * @return {Number}\n */\n getHeadersRowIndex() {\n return this.headersRow;\n }\n\n /**\n * Get the row index from where the filtering process start (1st filterable\n * row)\n * @return {Number}\n */\n getStartRowIndex() {\n return this.refRow;\n }\n\n /**\n * Get the index of the last row\n * @return {Number}\n */\n getLastRowIndex() {\n let nbRows = this.getRowsNb(true);\n return (nbRows - 1);\n }\n\n /**\n * Get the header DOM element for a given column index\n * @param {Number} colIndex Column index\n * @return {Element}\n */\n getHeaderElement(colIndex) {\n let table = this.gridLayout ? this.Mod.gridLayout.headTbl : this.tbl;\n let tHead = tag(table, 'thead');\n let headersRow = this.headersRow;\n let header;\n for (let i = 0; i < this.nbCells; i++) {\n if (i !== colIndex) {\n continue;\n }\n if (tHead.length === 0) {\n header = table.rows[headersRow].cells[i];\n }\n if (tHead.length === 1) {\n header = tHead[0].rows[headersRow].cells[i];\n }\n break;\n }\n return header;\n }\n\n /**\n * Return the list of headers' text\n * @param {Boolean} excludeHiddenCols Optional: exclude hidden columns\n * @return {Array} list of headers' text\n */\n getHeadersText(excludeHiddenCols = false) {\n let headers = [];\n for (let j = 0; j < this.nbCells; j++) {\n if (excludeHiddenCols && this.hasExtension('colsVisibility')) {\n if (this.extension('colsVisibility').isColHidden(j)) {\n continue;\n }\n }\n let header = this.getHeaderElement(j);\n let headerText = getFirstTextNode(header);\n headers.push(headerText);\n }\n return headers;\n }\n\n /**\n * Return the filter type for a specified column\n * @param {Number} colIndex Column's index\n * @return {String}\n */\n getFilterType(colIndex) {\n let colType = this.cfg['col_' + colIndex];\n return !colType ? INPUT : colType.toLowerCase();\n }\n\n /**\n * Get the total number of filterable rows\n * @return {Number}\n */\n getFilterableRowsNb() {\n return this.getRowsNb(false);\n }\n\n /**\n * Return the total number of valid rows\n * @param {Boolean} [reCalc=false] Forces calculation of filtered rows\n * @returns {Number}\n */\n getValidRowsNb(reCalc = false) {\n return this.getValidRows(reCalc).length;\n }\n\n /**\n * Get the configuration object (literal object)\n * @return {Object}\n */\n config() {\n return this.cfg;\n }\n}\n" }, { - "__docId__": 759, + "__docId__": 760, "kind": "variable", "static": true, "variation": null, @@ -15958,7 +15979,7 @@ } }, { - "__docId__": 760, + "__docId__": 761, "kind": "class", "static": true, "variation": null, @@ -15984,7 +16005,7 @@ "interface": false }, { - "__docId__": 761, + "__docId__": 762, "kind": "constructor", "static": false, "variation": null, @@ -16039,7 +16060,7 @@ "generator": false }, { - "__docId__": 762, + "__docId__": 763, "kind": "member", "static": false, "variation": null, @@ -16059,7 +16080,7 @@ } }, { - "__docId__": 763, + "__docId__": 764, "kind": "member", "static": false, "variation": null, @@ -16079,7 +16100,7 @@ } }, { - "__docId__": 764, + "__docId__": 765, "kind": "member", "static": false, "variation": null, @@ -16099,7 +16120,7 @@ } }, { - "__docId__": 765, + "__docId__": 766, "kind": "member", "static": false, "variation": null, @@ -16119,7 +16140,7 @@ } }, { - "__docId__": 766, + "__docId__": 767, "kind": "member", "static": false, "variation": null, @@ -16139,7 +16160,7 @@ } }, { - "__docId__": 767, + "__docId__": 768, "kind": "member", "static": false, "variation": null, @@ -16159,7 +16180,7 @@ } }, { - "__docId__": 768, + "__docId__": 769, "kind": "member", "static": false, "variation": null, @@ -16179,7 +16200,7 @@ } }, { - "__docId__": 769, + "__docId__": 770, "kind": "member", "static": false, "variation": null, @@ -16199,7 +16220,7 @@ } }, { - "__docId__": 770, + "__docId__": 771, "kind": "member", "static": false, "variation": null, @@ -16219,7 +16240,7 @@ } }, { - "__docId__": 771, + "__docId__": 772, "kind": "member", "static": false, "variation": null, @@ -16237,7 +16258,7 @@ } }, { - "__docId__": 772, + "__docId__": 773, "kind": "member", "static": false, "variation": null, @@ -16255,7 +16276,7 @@ } }, { - "__docId__": 773, + "__docId__": 774, "kind": "member", "static": false, "variation": null, @@ -16273,7 +16294,7 @@ } }, { - "__docId__": 774, + "__docId__": 775, "kind": "member", "static": false, "variation": null, @@ -16291,7 +16312,7 @@ } }, { - "__docId__": 775, + "__docId__": 776, "kind": "member", "static": false, "variation": null, @@ -16309,7 +16330,7 @@ } }, { - "__docId__": 776, + "__docId__": 777, "kind": "member", "static": false, "variation": null, @@ -16329,7 +16350,7 @@ } }, { - "__docId__": 777, + "__docId__": 778, "kind": "member", "static": false, "variation": null, @@ -16347,7 +16368,7 @@ } }, { - "__docId__": 778, + "__docId__": 779, "kind": "member", "static": false, "variation": null, @@ -16365,7 +16386,7 @@ } }, { - "__docId__": 779, + "__docId__": 780, "kind": "member", "static": false, "variation": null, @@ -16383,7 +16404,7 @@ } }, { - "__docId__": 780, + "__docId__": 781, "kind": "member", "static": false, "variation": null, @@ -16403,7 +16424,7 @@ } }, { - "__docId__": 781, + "__docId__": 782, "kind": "member", "static": false, "variation": null, @@ -16423,7 +16444,7 @@ } }, { - "__docId__": 782, + "__docId__": 783, "kind": "member", "static": false, "variation": null, @@ -16443,7 +16464,7 @@ } }, { - "__docId__": 783, + "__docId__": 784, "kind": "member", "static": false, "variation": null, @@ -16463,7 +16484,7 @@ } }, { - "__docId__": 784, + "__docId__": 785, "kind": "member", "static": false, "variation": null, @@ -16483,7 +16504,7 @@ } }, { - "__docId__": 785, + "__docId__": 786, "kind": "member", "static": false, "variation": null, @@ -16503,7 +16524,7 @@ } }, { - "__docId__": 786, + "__docId__": 787, "kind": "member", "static": false, "variation": null, @@ -16523,7 +16544,7 @@ } }, { - "__docId__": 787, + "__docId__": 788, "kind": "member", "static": false, "variation": null, @@ -16543,7 +16564,7 @@ } }, { - "__docId__": 788, + "__docId__": 789, "kind": "member", "static": false, "variation": null, @@ -16563,7 +16584,7 @@ } }, { - "__docId__": 789, + "__docId__": 790, "kind": "member", "static": false, "variation": null, @@ -16583,7 +16604,7 @@ } }, { - "__docId__": 790, + "__docId__": 791, "kind": "member", "static": false, "variation": null, @@ -16603,7 +16624,7 @@ } }, { - "__docId__": 791, + "__docId__": 792, "kind": "member", "static": false, "variation": null, @@ -16623,7 +16644,7 @@ } }, { - "__docId__": 792, + "__docId__": 793, "kind": "member", "static": false, "variation": null, @@ -16643,7 +16664,7 @@ } }, { - "__docId__": 793, + "__docId__": 794, "kind": "member", "static": false, "variation": null, @@ -16663,7 +16684,7 @@ } }, { - "__docId__": 794, + "__docId__": 795, "kind": "member", "static": false, "variation": null, @@ -16683,7 +16704,7 @@ } }, { - "__docId__": 795, + "__docId__": 796, "kind": "member", "static": false, "variation": null, @@ -16703,7 +16724,7 @@ } }, { - "__docId__": 796, + "__docId__": 797, "kind": "member", "static": false, "variation": null, @@ -16723,7 +16744,7 @@ } }, { - "__docId__": 797, + "__docId__": 798, "kind": "member", "static": false, "variation": null, @@ -16743,7 +16764,7 @@ } }, { - "__docId__": 798, + "__docId__": 799, "kind": "member", "static": false, "variation": null, @@ -16763,7 +16784,7 @@ } }, { - "__docId__": 799, + "__docId__": 800, "kind": "member", "static": false, "variation": null, @@ -16783,7 +16804,7 @@ } }, { - "__docId__": 800, + "__docId__": 801, "kind": "member", "static": false, "variation": null, @@ -16803,7 +16824,7 @@ } }, { - "__docId__": 801, + "__docId__": 802, "kind": "member", "static": false, "variation": null, @@ -16823,7 +16844,7 @@ } }, { - "__docId__": 802, + "__docId__": 803, "kind": "member", "static": false, "variation": null, @@ -16843,7 +16864,7 @@ } }, { - "__docId__": 803, + "__docId__": 804, "kind": "member", "static": false, "variation": null, @@ -16863,7 +16884,7 @@ } }, { - "__docId__": 804, + "__docId__": 805, "kind": "member", "static": false, "variation": null, @@ -16883,7 +16904,7 @@ } }, { - "__docId__": 805, + "__docId__": 806, "kind": "member", "static": false, "variation": null, @@ -16903,7 +16924,7 @@ } }, { - "__docId__": 806, + "__docId__": 807, "kind": "member", "static": false, "variation": null, @@ -16923,7 +16944,7 @@ } }, { - "__docId__": 807, + "__docId__": 808, "kind": "member", "static": false, "variation": null, @@ -16943,7 +16964,7 @@ } }, { - "__docId__": 808, + "__docId__": 809, "kind": "member", "static": false, "variation": null, @@ -16963,7 +16984,7 @@ } }, { - "__docId__": 809, + "__docId__": 810, "kind": "member", "static": false, "variation": null, @@ -16983,7 +17004,7 @@ } }, { - "__docId__": 810, + "__docId__": 811, "kind": "member", "static": false, "variation": null, @@ -17003,7 +17024,7 @@ } }, { - "__docId__": 811, + "__docId__": 812, "kind": "member", "static": false, "variation": null, @@ -17023,7 +17044,7 @@ } }, { - "__docId__": 812, + "__docId__": 813, "kind": "member", "static": false, "variation": null, @@ -17043,7 +17064,7 @@ } }, { - "__docId__": 813, + "__docId__": 814, "kind": "member", "static": false, "variation": null, @@ -17063,7 +17084,7 @@ } }, { - "__docId__": 814, + "__docId__": 815, "kind": "member", "static": false, "variation": null, @@ -17083,7 +17104,7 @@ } }, { - "__docId__": 815, + "__docId__": 816, "kind": "member", "static": false, "variation": null, @@ -17103,7 +17124,7 @@ } }, { - "__docId__": 816, + "__docId__": 817, "kind": "member", "static": false, "variation": null, @@ -17123,7 +17144,7 @@ } }, { - "__docId__": 817, + "__docId__": 818, "kind": "member", "static": false, "variation": null, @@ -17143,7 +17164,7 @@ } }, { - "__docId__": 818, + "__docId__": 819, "kind": "member", "static": false, "variation": null, @@ -17163,7 +17184,7 @@ } }, { - "__docId__": 819, + "__docId__": 820, "kind": "member", "static": false, "variation": null, @@ -17183,7 +17204,7 @@ } }, { - "__docId__": 820, + "__docId__": 821, "kind": "member", "static": false, "variation": null, @@ -17203,7 +17224,7 @@ } }, { - "__docId__": 821, + "__docId__": 822, "kind": "member", "static": false, "variation": null, @@ -17223,7 +17244,7 @@ } }, { - "__docId__": 822, + "__docId__": 823, "kind": "member", "static": false, "variation": null, @@ -17243,7 +17264,7 @@ } }, { - "__docId__": 823, + "__docId__": 824, "kind": "member", "static": false, "variation": null, @@ -17263,7 +17284,7 @@ } }, { - "__docId__": 824, + "__docId__": 825, "kind": "member", "static": false, "variation": null, @@ -17283,7 +17304,7 @@ } }, { - "__docId__": 825, + "__docId__": 826, "kind": "member", "static": false, "variation": null, @@ -17303,7 +17324,7 @@ } }, { - "__docId__": 826, + "__docId__": 827, "kind": "member", "static": false, "variation": null, @@ -17323,7 +17344,7 @@ } }, { - "__docId__": 827, + "__docId__": 828, "kind": "member", "static": false, "variation": null, @@ -17344,7 +17365,7 @@ } }, { - "__docId__": 828, + "__docId__": 829, "kind": "member", "static": false, "variation": null, @@ -17364,7 +17385,7 @@ } }, { - "__docId__": 829, + "__docId__": 830, "kind": "member", "static": false, "variation": null, @@ -17384,7 +17405,7 @@ } }, { - "__docId__": 830, + "__docId__": 831, "kind": "member", "static": false, "variation": null, @@ -17404,7 +17425,7 @@ } }, { - "__docId__": 831, + "__docId__": 832, "kind": "member", "static": false, "variation": null, @@ -17424,7 +17445,7 @@ } }, { - "__docId__": 832, + "__docId__": 833, "kind": "member", "static": false, "variation": null, @@ -17444,7 +17465,7 @@ } }, { - "__docId__": 833, + "__docId__": 834, "kind": "member", "static": false, "variation": null, @@ -17464,7 +17485,7 @@ } }, { - "__docId__": 834, + "__docId__": 835, "kind": "member", "static": false, "variation": null, @@ -17484,7 +17505,7 @@ } }, { - "__docId__": 835, + "__docId__": 836, "kind": "member", "static": false, "variation": null, @@ -17504,7 +17525,7 @@ } }, { - "__docId__": 836, + "__docId__": 837, "kind": "member", "static": false, "variation": null, @@ -17524,7 +17545,7 @@ } }, { - "__docId__": 837, + "__docId__": 838, "kind": "member", "static": false, "variation": null, @@ -17544,7 +17565,7 @@ } }, { - "__docId__": 838, + "__docId__": 839, "kind": "member", "static": false, "variation": null, @@ -17564,7 +17585,7 @@ } }, { - "__docId__": 839, + "__docId__": 840, "kind": "member", "static": false, "variation": null, @@ -17584,7 +17605,7 @@ } }, { - "__docId__": 840, + "__docId__": 841, "kind": "member", "static": false, "variation": null, @@ -17604,7 +17625,7 @@ } }, { - "__docId__": 841, + "__docId__": 842, "kind": "member", "static": false, "variation": null, @@ -17624,7 +17645,7 @@ } }, { - "__docId__": 842, + "__docId__": 843, "kind": "member", "static": false, "variation": null, @@ -17644,7 +17665,7 @@ } }, { - "__docId__": 843, + "__docId__": 844, "kind": "member", "static": false, "variation": null, @@ -17664,7 +17685,7 @@ } }, { - "__docId__": 844, + "__docId__": 845, "kind": "member", "static": false, "variation": null, @@ -17684,7 +17705,7 @@ } }, { - "__docId__": 845, + "__docId__": 846, "kind": "member", "static": false, "variation": null, @@ -17704,7 +17725,7 @@ } }, { - "__docId__": 846, + "__docId__": 847, "kind": "member", "static": false, "variation": null, @@ -17724,7 +17745,7 @@ } }, { - "__docId__": 847, + "__docId__": 848, "kind": "member", "static": false, "variation": null, @@ -17744,7 +17765,7 @@ } }, { - "__docId__": 848, + "__docId__": 849, "kind": "member", "static": false, "variation": null, @@ -17764,7 +17785,7 @@ } }, { - "__docId__": 849, + "__docId__": 850, "kind": "member", "static": false, "variation": null, @@ -17784,7 +17805,7 @@ } }, { - "__docId__": 850, + "__docId__": 851, "kind": "member", "static": false, "variation": null, @@ -17801,7 +17822,7 @@ } }, { - "__docId__": 851, + "__docId__": 852, "kind": "member", "static": false, "variation": null, @@ -17819,7 +17840,7 @@ } }, { - "__docId__": 852, + "__docId__": 853, "kind": "member", "static": false, "variation": null, @@ -17837,7 +17858,7 @@ } }, { - "__docId__": 853, + "__docId__": 854, "kind": "member", "static": false, "variation": null, @@ -17855,7 +17876,7 @@ } }, { - "__docId__": 854, + "__docId__": 855, "kind": "member", "static": false, "variation": null, @@ -17873,7 +17894,7 @@ } }, { - "__docId__": 855, + "__docId__": 856, "kind": "member", "static": false, "variation": null, @@ -17891,7 +17912,7 @@ } }, { - "__docId__": 856, + "__docId__": 857, "kind": "member", "static": false, "variation": null, @@ -17909,7 +17930,7 @@ } }, { - "__docId__": 857, + "__docId__": 858, "kind": "member", "static": false, "variation": null, @@ -17927,7 +17948,7 @@ } }, { - "__docId__": 858, + "__docId__": 859, "kind": "member", "static": false, "variation": null, @@ -17945,7 +17966,7 @@ } }, { - "__docId__": 859, + "__docId__": 860, "kind": "member", "static": false, "variation": null, @@ -17963,7 +17984,7 @@ } }, { - "__docId__": 860, + "__docId__": 861, "kind": "member", "static": false, "variation": null, @@ -17981,7 +18002,7 @@ } }, { - "__docId__": 861, + "__docId__": 862, "kind": "member", "static": false, "variation": null, @@ -17999,7 +18020,7 @@ } }, { - "__docId__": 862, + "__docId__": 863, "kind": "member", "static": false, "variation": null, @@ -18017,7 +18038,7 @@ } }, { - "__docId__": 863, + "__docId__": 864, "kind": "member", "static": false, "variation": null, @@ -18035,7 +18056,7 @@ } }, { - "__docId__": 864, + "__docId__": 865, "kind": "member", "static": false, "variation": null, @@ -18053,7 +18074,7 @@ } }, { - "__docId__": 865, + "__docId__": 866, "kind": "member", "static": false, "variation": null, @@ -18071,7 +18092,7 @@ } }, { - "__docId__": 866, + "__docId__": 867, "kind": "member", "static": false, "variation": null, @@ -18089,7 +18110,7 @@ } }, { - "__docId__": 867, + "__docId__": 868, "kind": "member", "static": false, "variation": null, @@ -18107,7 +18128,7 @@ } }, { - "__docId__": 868, + "__docId__": 869, "kind": "member", "static": false, "variation": null, @@ -18125,7 +18146,7 @@ } }, { - "__docId__": 869, + "__docId__": 870, "kind": "member", "static": false, "variation": null, @@ -18142,7 +18163,7 @@ } }, { - "__docId__": 870, + "__docId__": 871, "kind": "member", "static": false, "variation": null, @@ -18160,7 +18181,7 @@ } }, { - "__docId__": 871, + "__docId__": 872, "kind": "member", "static": false, "variation": null, @@ -18178,7 +18199,7 @@ } }, { - "__docId__": 872, + "__docId__": 873, "kind": "member", "static": false, "variation": null, @@ -18196,7 +18217,7 @@ } }, { - "__docId__": 873, + "__docId__": 874, "kind": "member", "static": false, "variation": null, @@ -18214,7 +18235,7 @@ } }, { - "__docId__": 874, + "__docId__": 875, "kind": "member", "static": false, "variation": null, @@ -18232,7 +18253,7 @@ } }, { - "__docId__": 875, + "__docId__": 876, "kind": "member", "static": false, "variation": null, @@ -18250,7 +18271,7 @@ } }, { - "__docId__": 876, + "__docId__": 877, "kind": "member", "static": false, "variation": null, @@ -18267,7 +18288,7 @@ } }, { - "__docId__": 877, + "__docId__": 878, "kind": "member", "static": false, "variation": null, @@ -18285,7 +18306,7 @@ } }, { - "__docId__": 878, + "__docId__": 879, "kind": "member", "static": false, "variation": null, @@ -18302,7 +18323,7 @@ } }, { - "__docId__": 879, + "__docId__": 880, "kind": "member", "static": false, "variation": null, @@ -18320,7 +18341,7 @@ } }, { - "__docId__": 880, + "__docId__": 881, "kind": "member", "static": false, "variation": null, @@ -18338,7 +18359,7 @@ } }, { - "__docId__": 881, + "__docId__": 882, "kind": "member", "static": false, "variation": null, @@ -18356,7 +18377,7 @@ } }, { - "__docId__": 882, + "__docId__": 883, "kind": "member", "static": false, "variation": null, @@ -18373,7 +18394,7 @@ } }, { - "__docId__": 883, + "__docId__": 884, "kind": "member", "static": false, "variation": null, @@ -18390,7 +18411,7 @@ } }, { - "__docId__": 884, + "__docId__": 885, "kind": "member", "static": false, "variation": null, @@ -18408,7 +18429,7 @@ } }, { - "__docId__": 885, + "__docId__": 886, "kind": "member", "static": false, "variation": null, @@ -18425,7 +18446,7 @@ } }, { - "__docId__": 886, + "__docId__": 887, "kind": "member", "static": false, "variation": null, @@ -18443,7 +18464,7 @@ } }, { - "__docId__": 887, + "__docId__": 888, "kind": "member", "static": false, "variation": null, @@ -18461,7 +18482,7 @@ } }, { - "__docId__": 888, + "__docId__": 889, "kind": "member", "static": false, "variation": null, @@ -18479,7 +18500,7 @@ } }, { - "__docId__": 889, + "__docId__": 890, "kind": "member", "static": false, "variation": null, @@ -18497,7 +18518,7 @@ } }, { - "__docId__": 890, + "__docId__": 891, "kind": "member", "static": false, "variation": null, @@ -18515,7 +18536,7 @@ } }, { - "__docId__": 891, + "__docId__": 892, "kind": "member", "static": false, "variation": null, @@ -18533,7 +18554,7 @@ } }, { - "__docId__": 892, + "__docId__": 893, "kind": "member", "static": false, "variation": null, @@ -18550,7 +18571,7 @@ } }, { - "__docId__": 893, + "__docId__": 894, "kind": "member", "static": false, "variation": null, @@ -18568,7 +18589,7 @@ } }, { - "__docId__": 894, + "__docId__": 895, "kind": "member", "static": false, "variation": null, @@ -18586,7 +18607,7 @@ } }, { - "__docId__": 895, + "__docId__": 896, "kind": "member", "static": false, "variation": null, @@ -18604,7 +18625,7 @@ } }, { - "__docId__": 896, + "__docId__": 897, "kind": "member", "static": false, "variation": null, @@ -18622,7 +18643,7 @@ } }, { - "__docId__": 897, + "__docId__": 898, "kind": "member", "static": false, "variation": null, @@ -18640,7 +18661,7 @@ } }, { - "__docId__": 898, + "__docId__": 899, "kind": "member", "static": false, "variation": null, @@ -18658,7 +18679,7 @@ } }, { - "__docId__": 899, + "__docId__": 900, "kind": "member", "static": false, "variation": null, @@ -18676,7 +18697,7 @@ } }, { - "__docId__": 900, + "__docId__": 901, "kind": "member", "static": false, "variation": null, @@ -18693,7 +18714,7 @@ } }, { - "__docId__": 901, + "__docId__": 902, "kind": "member", "static": false, "variation": null, @@ -18711,7 +18732,7 @@ } }, { - "__docId__": 902, + "__docId__": 903, "kind": "member", "static": false, "variation": null, @@ -18728,7 +18749,7 @@ } }, { - "__docId__": 903, + "__docId__": 904, "kind": "member", "static": false, "variation": null, @@ -18746,7 +18767,7 @@ } }, { - "__docId__": 904, + "__docId__": 905, "kind": "member", "static": false, "variation": null, @@ -18764,7 +18785,7 @@ } }, { - "__docId__": 905, + "__docId__": 906, "kind": "member", "static": false, "variation": null, @@ -18782,7 +18803,7 @@ } }, { - "__docId__": 906, + "__docId__": 907, "kind": "member", "static": false, "variation": null, @@ -18800,7 +18821,7 @@ } }, { - "__docId__": 907, + "__docId__": 908, "kind": "member", "static": false, "variation": null, @@ -18818,7 +18839,7 @@ } }, { - "__docId__": 908, + "__docId__": 909, "kind": "member", "static": false, "variation": null, @@ -18836,7 +18857,7 @@ } }, { - "__docId__": 909, + "__docId__": 910, "kind": "method", "static": false, "variation": null, @@ -18850,7 +18871,7 @@ "generator": false }, { - "__docId__": 910, + "__docId__": 911, "kind": "member", "static": false, "variation": null, @@ -18868,7 +18889,7 @@ } }, { - "__docId__": 911, + "__docId__": 912, "kind": "member", "static": false, "variation": null, @@ -18886,7 +18907,7 @@ } }, { - "__docId__": 912, + "__docId__": 913, "kind": "method", "static": false, "variation": null, @@ -18911,7 +18932,7 @@ "generator": false }, { - "__docId__": 913, + "__docId__": 914, "kind": "member", "static": false, "variation": null, @@ -18929,7 +18950,7 @@ } }, { - "__docId__": 914, + "__docId__": 915, "kind": "member", "static": false, "variation": null, @@ -18947,7 +18968,7 @@ } }, { - "__docId__": 915, + "__docId__": 916, "kind": "method", "static": false, "variation": null, @@ -18972,7 +18993,7 @@ "generator": false }, { - "__docId__": 916, + "__docId__": 917, "kind": "member", "static": false, "variation": null, @@ -18990,7 +19011,7 @@ } }, { - "__docId__": 917, + "__docId__": 918, "kind": "member", "static": false, "variation": null, @@ -19008,7 +19029,7 @@ } }, { - "__docId__": 918, + "__docId__": 919, "kind": "member", "static": false, "variation": null, @@ -19026,7 +19047,7 @@ } }, { - "__docId__": 919, + "__docId__": 920, "kind": "member", "static": false, "variation": null, @@ -19044,7 +19065,7 @@ } }, { - "__docId__": 920, + "__docId__": 921, "kind": "member", "static": false, "variation": null, @@ -19062,7 +19083,7 @@ } }, { - "__docId__": 921, + "__docId__": 922, "kind": "method", "static": false, "variation": null, @@ -19076,7 +19097,7 @@ "generator": false }, { - "__docId__": 922, + "__docId__": 923, "kind": "member", "static": false, "variation": null, @@ -19094,7 +19115,7 @@ } }, { - "__docId__": 923, + "__docId__": 924, "kind": "method", "static": false, "variation": null, @@ -19119,7 +19140,7 @@ "generator": false }, { - "__docId__": 924, + "__docId__": 925, "kind": "method", "static": false, "variation": null, @@ -19133,7 +19154,7 @@ "generator": false }, { - "__docId__": 925, + "__docId__": 926, "kind": "member", "static": false, "variation": null, @@ -19151,7 +19172,7 @@ } }, { - "__docId__": 926, + "__docId__": 927, "kind": "method", "static": false, "variation": null, @@ -19170,7 +19191,7 @@ "generator": false }, { - "__docId__": 927, + "__docId__": 928, "kind": "method", "static": false, "variation": null, @@ -19184,7 +19205,7 @@ "generator": false }, { - "__docId__": 928, + "__docId__": 929, "kind": "member", "static": false, "variation": null, @@ -19202,7 +19223,7 @@ } }, { - "__docId__": 929, + "__docId__": 930, "kind": "member", "static": false, "variation": null, @@ -19220,7 +19241,7 @@ } }, { - "__docId__": 930, + "__docId__": 931, "kind": "method", "static": false, "variation": null, @@ -19265,7 +19286,7 @@ "generator": false }, { - "__docId__": 931, + "__docId__": 932, "kind": "method", "static": false, "variation": null, @@ -19300,7 +19321,7 @@ "generator": false }, { - "__docId__": 932, + "__docId__": 933, "kind": "method", "static": false, "variation": null, @@ -19333,7 +19354,7 @@ "generator": false }, { - "__docId__": 933, + "__docId__": 934, "kind": "method", "static": false, "variation": null, @@ -19347,7 +19368,7 @@ "generator": false }, { - "__docId__": 934, + "__docId__": 935, "kind": "method", "static": false, "variation": null, @@ -19372,7 +19393,7 @@ "generator": false }, { - "__docId__": 935, + "__docId__": 936, "kind": "method", "static": false, "variation": null, @@ -19405,7 +19426,7 @@ "generator": false }, { - "__docId__": 936, + "__docId__": 937, "kind": "method", "static": false, "variation": null, @@ -19438,7 +19459,7 @@ "generator": false }, { - "__docId__": 937, + "__docId__": 938, "kind": "method", "static": false, "variation": null, @@ -19452,7 +19473,7 @@ "generator": false }, { - "__docId__": 938, + "__docId__": 939, "kind": "method", "static": false, "variation": null, @@ -19466,7 +19487,7 @@ "generator": false }, { - "__docId__": 939, + "__docId__": 940, "kind": "member", "static": false, "variation": null, @@ -19484,7 +19505,7 @@ } }, { - "__docId__": 940, + "__docId__": 941, "kind": "member", "static": false, "variation": null, @@ -19502,7 +19523,7 @@ } }, { - "__docId__": 941, + "__docId__": 942, "kind": "member", "static": false, "variation": null, @@ -19520,7 +19541,7 @@ } }, { - "__docId__": 942, + "__docId__": 943, "kind": "member", "static": false, "variation": null, @@ -19538,7 +19559,7 @@ } }, { - "__docId__": 943, + "__docId__": 944, "kind": "member", "static": false, "variation": null, @@ -19556,7 +19577,7 @@ } }, { - "__docId__": 944, + "__docId__": 945, "kind": "member", "static": false, "variation": null, @@ -19574,7 +19595,7 @@ } }, { - "__docId__": 945, + "__docId__": 946, "kind": "member", "static": false, "variation": null, @@ -19592,7 +19613,7 @@ } }, { - "__docId__": 946, + "__docId__": 947, "kind": "member", "static": false, "variation": null, @@ -19610,7 +19631,7 @@ } }, { - "__docId__": 947, + "__docId__": 948, "kind": "member", "static": false, "variation": null, @@ -19628,7 +19649,7 @@ } }, { - "__docId__": 948, + "__docId__": 949, "kind": "method", "static": false, "variation": null, @@ -19660,7 +19681,7 @@ "generator": false }, { - "__docId__": 949, + "__docId__": 950, "kind": "method", "static": false, "variation": null, @@ -19674,7 +19695,7 @@ "generator": false }, { - "__docId__": 950, + "__docId__": 951, "kind": "member", "static": false, "variation": null, @@ -19692,7 +19713,7 @@ } }, { - "__docId__": 951, + "__docId__": 952, "kind": "member", "static": false, "variation": null, @@ -19710,7 +19731,7 @@ } }, { - "__docId__": 952, + "__docId__": 953, "kind": "member", "static": false, "variation": null, @@ -19728,7 +19749,7 @@ } }, { - "__docId__": 953, + "__docId__": 954, "kind": "member", "static": false, "variation": null, @@ -19746,7 +19767,7 @@ } }, { - "__docId__": 954, + "__docId__": 955, "kind": "method", "static": false, "variation": null, @@ -19760,7 +19781,7 @@ "generator": false }, { - "__docId__": 955, + "__docId__": 956, "kind": "member", "static": false, "variation": null, @@ -19778,7 +19799,7 @@ } }, { - "__docId__": 956, + "__docId__": 957, "kind": "member", "static": false, "variation": null, @@ -19796,7 +19817,7 @@ } }, { - "__docId__": 957, + "__docId__": 958, "kind": "member", "static": false, "variation": null, @@ -19814,7 +19835,7 @@ } }, { - "__docId__": 958, + "__docId__": 959, "kind": "member", "static": false, "variation": null, @@ -19832,7 +19853,7 @@ } }, { - "__docId__": 959, + "__docId__": 960, "kind": "method", "static": false, "variation": null, @@ -19846,7 +19867,7 @@ "generator": false }, { - "__docId__": 960, + "__docId__": 961, "kind": "member", "static": false, "variation": null, @@ -19864,7 +19885,7 @@ } }, { - "__docId__": 961, + "__docId__": 962, "kind": "method", "static": false, "variation": null, @@ -19878,7 +19899,7 @@ "generator": false }, { - "__docId__": 962, + "__docId__": 963, "kind": "method", "static": false, "variation": null, @@ -19911,7 +19932,7 @@ "generator": false }, { - "__docId__": 963, + "__docId__": 964, "kind": "method", "static": false, "variation": null, @@ -19944,7 +19965,7 @@ "generator": false }, { - "__docId__": 964, + "__docId__": 965, "kind": "method", "static": false, "variation": null, @@ -19958,7 +19979,7 @@ "generator": false }, { - "__docId__": 965, + "__docId__": 966, "kind": "member", "static": false, "variation": null, @@ -19976,7 +19997,7 @@ } }, { - "__docId__": 966, + "__docId__": 967, "kind": "member", "static": false, "variation": null, @@ -19994,7 +20015,7 @@ } }, { - "__docId__": 967, + "__docId__": 968, "kind": "method", "static": false, "variation": null, @@ -20057,7 +20078,7 @@ "generator": false }, { - "__docId__": 968, + "__docId__": 969, "kind": "method", "static": false, "variation": null, @@ -20090,7 +20111,7 @@ "generator": false }, { - "__docId__": 969, + "__docId__": 970, "kind": "method", "static": false, "variation": null, @@ -20112,7 +20133,7 @@ "generator": false }, { - "__docId__": 970, + "__docId__": 971, "kind": "method", "static": false, "variation": null, @@ -20145,7 +20166,7 @@ "generator": false }, { - "__docId__": 971, + "__docId__": 972, "kind": "method", "static": false, "variation": null, @@ -20188,7 +20209,7 @@ "generator": false }, { - "__docId__": 972, + "__docId__": 973, "kind": "method", "static": false, "variation": null, @@ -20221,7 +20242,7 @@ "generator": false }, { - "__docId__": 973, + "__docId__": 974, "kind": "method", "static": false, "variation": null, @@ -20254,7 +20275,7 @@ "generator": false }, { - "__docId__": 974, + "__docId__": 975, "kind": "method", "static": false, "variation": null, @@ -20287,7 +20308,7 @@ "generator": false }, { - "__docId__": 975, + "__docId__": 976, "kind": "method", "static": false, "variation": null, @@ -20320,7 +20341,7 @@ "generator": false }, { - "__docId__": 976, + "__docId__": 977, "kind": "method", "static": false, "variation": null, @@ -20363,7 +20384,7 @@ "generator": false }, { - "__docId__": 977, + "__docId__": 978, "kind": "method", "static": false, "variation": null, @@ -20406,7 +20427,7 @@ "generator": false }, { - "__docId__": 978, + "__docId__": 979, "kind": "method", "static": false, "variation": null, @@ -20449,7 +20470,7 @@ "generator": false }, { - "__docId__": 979, + "__docId__": 980, "kind": "method", "static": false, "variation": null, @@ -20482,7 +20503,7 @@ "generator": false }, { - "__docId__": 980, + "__docId__": 981, "kind": "method", "static": false, "variation": null, @@ -20517,7 +20538,7 @@ "generator": false }, { - "__docId__": 981, + "__docId__": 982, "kind": "method", "static": false, "variation": null, @@ -20531,7 +20552,7 @@ "generator": false }, { - "__docId__": 982, + "__docId__": 983, "kind": "member", "static": false, "variation": null, @@ -20549,7 +20570,7 @@ } }, { - "__docId__": 983, + "__docId__": 984, "kind": "method", "static": false, "variation": null, @@ -20584,7 +20605,7 @@ "generator": false }, { - "__docId__": 984, + "__docId__": 985, "kind": "method", "static": false, "variation": null, @@ -20609,7 +20630,7 @@ "generator": false }, { - "__docId__": 985, + "__docId__": 986, "kind": "method", "static": false, "variation": null, @@ -20623,7 +20644,7 @@ "generator": false }, { - "__docId__": 986, + "__docId__": 987, "kind": "method", "static": false, "variation": null, @@ -20637,7 +20658,7 @@ "generator": false }, { - "__docId__": 987, + "__docId__": 988, "kind": "method", "static": false, "variation": null, @@ -20651,7 +20672,7 @@ "generator": false }, { - "__docId__": 988, + "__docId__": 989, "kind": "method", "static": false, "variation": null, @@ -20676,7 +20697,7 @@ "generator": false }, { - "__docId__": 989, + "__docId__": 990, "kind": "method", "static": false, "variation": null, @@ -20704,7 +20725,7 @@ "generator": false }, { - "__docId__": 990, + "__docId__": 991, "kind": "method", "static": false, "variation": null, @@ -20729,7 +20750,7 @@ "generator": false }, { - "__docId__": 991, + "__docId__": 992, "kind": "member", "static": false, "variation": null, @@ -20747,7 +20768,7 @@ } }, { - "__docId__": 992, + "__docId__": 993, "kind": "method", "static": false, "variation": null, @@ -20788,7 +20809,7 @@ "generator": false }, { - "__docId__": 993, + "__docId__": 994, "kind": "method", "static": false, "variation": null, @@ -20813,7 +20834,7 @@ "generator": false }, { - "__docId__": 994, + "__docId__": 995, "kind": "method", "static": false, "variation": null, @@ -20827,7 +20848,7 @@ "generator": false }, { - "__docId__": 995, + "__docId__": 996, "kind": "method", "static": false, "variation": null, @@ -20860,7 +20881,7 @@ "generator": false }, { - "__docId__": 996, + "__docId__": 997, "kind": "method", "static": false, "variation": null, @@ -20903,7 +20924,7 @@ "generator": false }, { - "__docId__": 997, + "__docId__": 998, "kind": "method", "static": false, "variation": null, @@ -20958,7 +20979,7 @@ "generator": false }, { - "__docId__": 998, + "__docId__": 999, "kind": "method", "static": false, "variation": null, @@ -20980,7 +21001,7 @@ "generator": false }, { - "__docId__": 999, + "__docId__": 1000, "kind": "method", "static": false, "variation": null, @@ -21002,7 +21023,7 @@ "generator": false }, { - "__docId__": 1000, + "__docId__": 1001, "kind": "method", "static": false, "variation": null, @@ -21035,7 +21056,7 @@ "generator": false }, { - "__docId__": 1001, + "__docId__": 1002, "kind": "member", "static": false, "variation": null, @@ -21053,7 +21074,7 @@ } }, { - "__docId__": 1002, + "__docId__": 1003, "kind": "method", "static": false, "variation": null, @@ -21075,7 +21096,7 @@ "generator": false }, { - "__docId__": 1003, + "__docId__": 1004, "kind": "method", "static": false, "variation": null, @@ -21097,7 +21118,7 @@ "generator": false }, { - "__docId__": 1004, + "__docId__": 1005, "kind": "method", "static": false, "variation": null, @@ -21119,7 +21140,7 @@ "generator": false }, { - "__docId__": 1005, + "__docId__": 1006, "kind": "method", "static": false, "variation": null, @@ -21141,7 +21162,7 @@ "generator": false }, { - "__docId__": 1006, + "__docId__": 1007, "kind": "method", "static": false, "variation": null, @@ -21174,7 +21195,7 @@ "generator": false }, { - "__docId__": 1007, + "__docId__": 1008, "kind": "method", "static": false, "variation": null, @@ -21207,7 +21228,7 @@ "generator": false }, { - "__docId__": 1008, + "__docId__": 1009, "kind": "method", "static": false, "variation": null, @@ -21240,7 +21261,7 @@ "generator": false }, { - "__docId__": 1009, + "__docId__": 1010, "kind": "method", "static": false, "variation": null, @@ -21262,7 +21283,7 @@ "generator": false }, { - "__docId__": 1010, + "__docId__": 1011, "kind": "method", "static": false, "variation": null, @@ -21303,7 +21324,7 @@ "generator": false }, { - "__docId__": 1011, + "__docId__": 1012, "kind": "method", "static": false, "variation": null, @@ -21325,7 +21346,7 @@ "generator": false }, { - "__docId__": 1012, + "__docId__": 1013, "kind": "file", "static": true, "variation": null, @@ -21338,7 +21359,7 @@ "content": "\n/**\n * Types utilities\n */\n\nconst UNDEFINED = void 0;\n\n/**\n * Check passed argument is an object\n * @param {Object} obj\n * @return {Boolean}\n */\nexport const isObj =\n obj => Object.prototype.toString.call(obj) === '[object Object]';\n\n/**\n * Check passed argument is a function\n * @param {Function} obj\n * @return {Boolean}\n */\nexport const isFn =\n obj => Object.prototype.toString.call(obj) === '[object Function]';\n\n/**\n * Check passed argument is an array\n * @param {Array} obj\n * @return {Boolean}\n */\nexport const isArray =\n obj => Object.prototype.toString.call(obj) === '[object Array]';\n\n/**\n * Check passed argument is a string\n * @param {String} obj objue\n * @returns {Boolean}\n */\nexport const isString =\n obj => Object.prototype.toString.call(obj) === '[object String]';\n\n/**\n * Check passed argument is a number\n * @param {Number} obj\n * @returns {Boolean}\n */\nexport const isNumber =\n obj => Object.prototype.toString.call(obj) === '[object Number]';\n\n/**\n * Check passed argument is undefined\n * @param {Any} obj\n * @return {Boolean}\n */\nexport const isUndef = obj => obj === UNDEFINED;\n\n/**\n * Check passed argument is null\n * @param {Any} obj\n * @return {Boolean}\n */\nexport const isNull = obj => obj === null;\n\n/**\n * Check passed argument is empty (undefined, null or empty string)\n * @param {Any} obj\n * @return {Boolean}\n */\nexport const isEmpty = obj => isUndef(obj) || isNull(obj) || obj.length === 0;\n" }, { - "__docId__": 1013, + "__docId__": 1014, "kind": "variable", "static": true, "variation": null, @@ -21358,7 +21379,7 @@ } }, { - "__docId__": 1014, + "__docId__": 1015, "kind": "variable", "static": true, "variation": null, @@ -21398,7 +21419,7 @@ } }, { - "__docId__": 1015, + "__docId__": 1016, "kind": "variable", "static": true, "variation": null, @@ -21438,7 +21459,7 @@ } }, { - "__docId__": 1016, + "__docId__": 1017, "kind": "variable", "static": true, "variation": null, @@ -21478,7 +21499,7 @@ } }, { - "__docId__": 1017, + "__docId__": 1018, "kind": "variable", "static": true, "variation": null, @@ -21524,7 +21545,7 @@ } }, { - "__docId__": 1018, + "__docId__": 1019, "kind": "variable", "static": true, "variation": null, @@ -21570,7 +21591,7 @@ } }, { - "__docId__": 1019, + "__docId__": 1020, "kind": "variable", "static": true, "variation": null, @@ -21610,7 +21631,7 @@ } }, { - "__docId__": 1020, + "__docId__": 1021, "kind": "variable", "static": true, "variation": null, @@ -21650,7 +21671,7 @@ } }, { - "__docId__": 1021, + "__docId__": 1022, "kind": "variable", "static": true, "variation": null, @@ -21690,7 +21711,7 @@ } }, { - "__docId__": 1023, + "__docId__": 1024, "kind": "external", "static": true, "variation": null, @@ -21703,7 +21724,7 @@ "builtinExternal": true }, { - "__docId__": 1024, + "__docId__": 1025, "kind": "external", "static": true, "variation": null, @@ -21716,7 +21737,7 @@ "builtinExternal": true }, { - "__docId__": 1025, + "__docId__": 1026, "kind": "external", "static": true, "variation": null, @@ -21729,7 +21750,7 @@ "builtinExternal": true }, { - "__docId__": 1026, + "__docId__": 1027, "kind": "external", "static": true, "variation": null, @@ -21742,7 +21763,7 @@ "builtinExternal": true }, { - "__docId__": 1027, + "__docId__": 1028, "kind": "external", "static": true, "variation": null, @@ -21755,7 +21776,7 @@ "builtinExternal": true }, { - "__docId__": 1028, + "__docId__": 1029, "kind": "external", "static": true, "variation": null, @@ -21768,7 +21789,7 @@ "builtinExternal": true }, { - "__docId__": 1029, + "__docId__": 1030, "kind": "external", "static": true, "variation": null, @@ -21781,7 +21802,7 @@ "builtinExternal": true }, { - "__docId__": 1030, + "__docId__": 1031, "kind": "external", "static": true, "variation": null, @@ -21794,7 +21815,7 @@ "builtinExternal": true }, { - "__docId__": 1031, + "__docId__": 1032, "kind": "external", "static": true, "variation": null, @@ -21807,7 +21828,7 @@ "builtinExternal": true }, { - "__docId__": 1032, + "__docId__": 1033, "kind": "external", "static": true, "variation": null, @@ -21820,7 +21841,7 @@ "builtinExternal": true }, { - "__docId__": 1033, + "__docId__": 1034, "kind": "external", "static": true, "variation": null, @@ -21833,7 +21854,7 @@ "builtinExternal": true }, { - "__docId__": 1034, + "__docId__": 1035, "kind": "external", "static": true, "variation": null, @@ -21846,7 +21867,7 @@ "builtinExternal": true }, { - "__docId__": 1035, + "__docId__": 1036, "kind": "external", "static": true, "variation": null, @@ -21859,7 +21880,7 @@ "builtinExternal": true }, { - "__docId__": 1036, + "__docId__": 1037, "kind": "external", "static": true, "variation": null, @@ -21872,7 +21893,7 @@ "builtinExternal": true }, { - "__docId__": 1037, + "__docId__": 1038, "kind": "external", "static": true, "variation": null, @@ -21885,7 +21906,7 @@ "builtinExternal": true }, { - "__docId__": 1038, + "__docId__": 1039, "kind": "external", "static": true, "variation": null, @@ -21898,7 +21919,7 @@ "builtinExternal": true }, { - "__docId__": 1039, + "__docId__": 1040, "kind": "external", "static": true, "variation": null, @@ -21911,7 +21932,7 @@ "builtinExternal": true }, { - "__docId__": 1040, + "__docId__": 1041, "kind": "external", "static": true, "variation": null, @@ -21924,7 +21945,7 @@ "builtinExternal": true }, { - "__docId__": 1041, + "__docId__": 1042, "kind": "external", "static": true, "variation": null, @@ -21937,7 +21958,7 @@ "builtinExternal": true }, { - "__docId__": 1042, + "__docId__": 1043, "kind": "external", "static": true, "variation": null, @@ -21950,7 +21971,7 @@ "builtinExternal": true }, { - "__docId__": 1043, + "__docId__": 1044, "kind": "external", "static": true, "variation": null, @@ -21963,7 +21984,7 @@ "builtinExternal": true }, { - "__docId__": 1044, + "__docId__": 1045, "kind": "external", "static": true, "variation": null, @@ -21976,7 +21997,7 @@ "builtinExternal": true }, { - "__docId__": 1045, + "__docId__": 1046, "kind": "external", "static": true, "variation": null, @@ -21989,7 +22010,7 @@ "builtinExternal": true }, { - "__docId__": 1046, + "__docId__": 1047, "kind": "external", "static": true, "variation": null, @@ -22002,7 +22023,7 @@ "builtinExternal": true }, { - "__docId__": 1047, + "__docId__": 1048, "kind": "external", "static": true, "variation": null, @@ -22015,7 +22036,7 @@ "builtinExternal": true }, { - "__docId__": 1048, + "__docId__": 1049, "kind": "external", "static": true, "variation": null, @@ -22028,7 +22049,7 @@ "builtinExternal": true }, { - "__docId__": 1049, + "__docId__": 1050, "kind": "external", "static": true, "variation": null, @@ -22041,7 +22062,7 @@ "builtinExternal": true }, { - "__docId__": 1050, + "__docId__": 1051, "kind": "external", "static": true, "variation": null, @@ -22054,7 +22075,7 @@ "builtinExternal": true }, { - "__docId__": 1051, + "__docId__": 1052, "kind": "external", "static": true, "variation": null, @@ -22067,7 +22088,7 @@ "builtinExternal": true }, { - "__docId__": 1052, + "__docId__": 1053, "kind": "external", "static": true, "variation": null, @@ -22080,7 +22101,7 @@ "builtinExternal": true }, { - "__docId__": 1053, + "__docId__": 1054, "kind": "external", "static": true, "variation": null, @@ -22093,7 +22114,7 @@ "builtinExternal": true }, { - "__docId__": 1054, + "__docId__": 1055, "kind": "external", "static": true, "variation": null, @@ -22106,7 +22127,7 @@ "builtinExternal": true }, { - "__docId__": 1055, + "__docId__": 1056, "kind": "external", "static": true, "variation": null, @@ -22119,7 +22140,7 @@ "builtinExternal": true }, { - "__docId__": 1056, + "__docId__": 1057, "kind": "external", "static": true, "variation": null, @@ -22132,7 +22153,7 @@ "builtinExternal": true }, { - "__docId__": 1057, + "__docId__": 1058, "kind": "external", "static": true, "variation": null, @@ -22145,7 +22166,7 @@ "builtinExternal": true }, { - "__docId__": 1058, + "__docId__": 1059, "kind": "external", "static": true, "variation": null, @@ -22158,7 +22179,7 @@ "builtinExternal": true }, { - "__docId__": 1059, + "__docId__": 1060, "kind": "external", "static": true, "variation": null, @@ -22171,7 +22192,7 @@ "builtinExternal": true }, { - "__docId__": 1060, + "__docId__": 1061, "kind": "external", "static": true, "variation": null, @@ -22184,7 +22205,7 @@ "builtinExternal": true }, { - "__docId__": 1061, + "__docId__": 1062, "kind": "external", "static": true, "variation": null, @@ -22197,7 +22218,7 @@ "builtinExternal": true }, { - "__docId__": 1062, + "__docId__": 1063, "kind": "external", "static": true, "variation": null, @@ -22210,7 +22231,7 @@ "builtinExternal": true }, { - "__docId__": 1063, + "__docId__": 1064, "kind": "external", "static": true, "variation": null, @@ -22223,7 +22244,7 @@ "builtinExternal": true }, { - "__docId__": 1064, + "__docId__": 1065, "kind": "external", "static": true, "variation": null, @@ -22236,7 +22257,7 @@ "builtinExternal": true }, { - "__docId__": 1065, + "__docId__": 1066, "kind": "external", "static": true, "variation": null, @@ -22249,7 +22270,7 @@ "builtinExternal": true }, { - "__docId__": 1066, + "__docId__": 1067, "kind": "external", "static": true, "variation": null, @@ -22262,7 +22283,7 @@ "builtinExternal": true }, { - "__docId__": 1067, + "__docId__": 1068, "kind": "external", "static": true, "variation": null, @@ -22275,7 +22296,7 @@ "builtinExternal": true }, { - "__docId__": 1068, + "__docId__": 1069, "kind": "external", "static": true, "variation": null, @@ -22288,7 +22309,7 @@ "builtinExternal": true }, { - "__docId__": 1069, + "__docId__": 1070, "kind": "external", "static": true, "variation": null, @@ -22301,7 +22322,7 @@ "builtinExternal": true }, { - "__docId__": 1071, + "__docId__": 1072, "kind": "external", "static": true, "variation": null, @@ -22314,7 +22335,7 @@ "builtinExternal": true }, { - "__docId__": 1072, + "__docId__": 1073, "kind": "external", "static": true, "variation": null, @@ -22327,7 +22348,7 @@ "builtinExternal": true }, { - "__docId__": 1073, + "__docId__": 1074, "kind": "external", "static": true, "variation": null, @@ -22340,7 +22361,7 @@ "builtinExternal": true }, { - "__docId__": 1074, + "__docId__": 1075, "kind": "external", "static": true, "variation": null, @@ -22353,7 +22374,7 @@ "builtinExternal": true }, { - "__docId__": 1075, + "__docId__": 1076, "kind": "external", "static": true, "variation": null, @@ -22366,7 +22387,7 @@ "builtinExternal": true }, { - "__docId__": 1076, + "__docId__": 1077, "kind": "external", "static": true, "variation": null, @@ -22379,7 +22400,7 @@ "builtinExternal": true }, { - "__docId__": 1077, + "__docId__": 1078, "kind": "external", "static": true, "variation": null, @@ -22392,7 +22413,7 @@ "builtinExternal": true }, { - "__docId__": 1078, + "__docId__": 1079, "kind": "external", "static": true, "variation": null, diff --git a/docs/file/src/array.js.html b/docs/file/src/array.js.html index 3a97d0e0..aaf0007e 100644 --- a/docs/file/src/array.js.html +++ b/docs/file/src/array.js.html @@ -3,7 +3,7 @@ - src/array.js | tablefilter v0.2.56 API Document + src/array.js | tablefilter v0.2.57 API Document diff --git a/docs/file/src/const.js.html b/docs/file/src/const.js.html index 5690cf6e..35a4fa71 100644 --- a/docs/file/src/const.js.html +++ b/docs/file/src/const.js.html @@ -3,7 +3,7 @@ - src/const.js | tablefilter v0.2.56 API Document + src/const.js | tablefilter v0.2.57 API Document diff --git a/docs/file/src/cookie.js.html b/docs/file/src/cookie.js.html index 2707df18..ea6c0939 100644 --- a/docs/file/src/cookie.js.html +++ b/docs/file/src/cookie.js.html @@ -3,7 +3,7 @@ - src/cookie.js | tablefilter v0.2.56 API Document + src/cookie.js | tablefilter v0.2.57 API Document diff --git a/docs/file/src/date.js.html b/docs/file/src/date.js.html index 52a2cfc7..f1171832 100644 --- a/docs/file/src/date.js.html +++ b/docs/file/src/date.js.html @@ -3,7 +3,7 @@ - src/date.js | tablefilter v0.2.56 API Document + src/date.js | tablefilter v0.2.57 API Document diff --git a/docs/file/src/dom.js.html b/docs/file/src/dom.js.html index 86bf04be..fb334db0 100644 --- a/docs/file/src/dom.js.html +++ b/docs/file/src/dom.js.html @@ -3,7 +3,7 @@ - src/dom.js | tablefilter v0.2.56 API Document + src/dom.js | tablefilter v0.2.57 API Document diff --git a/docs/file/src/emitter.js.html b/docs/file/src/emitter.js.html index 0517b8b1..577f4eb5 100644 --- a/docs/file/src/emitter.js.html +++ b/docs/file/src/emitter.js.html @@ -3,7 +3,7 @@ - src/emitter.js | tablefilter v0.2.56 API Document + src/emitter.js | tablefilter v0.2.57 API Document diff --git a/docs/file/src/event.js.html b/docs/file/src/event.js.html index ea647287..a6b725f8 100644 --- a/docs/file/src/event.js.html +++ b/docs/file/src/event.js.html @@ -3,7 +3,7 @@ - src/event.js | tablefilter v0.2.56 API Document + src/event.js | tablefilter v0.2.57 API Document diff --git a/docs/file/src/extensions/advancedGrid/adapterEzEditTable.js.html b/docs/file/src/extensions/advancedGrid/adapterEzEditTable.js.html index dac2b540..02124e20 100644 --- a/docs/file/src/extensions/advancedGrid/adapterEzEditTable.js.html +++ b/docs/file/src/extensions/advancedGrid/adapterEzEditTable.js.html @@ -3,7 +3,7 @@ - src/extensions/advancedGrid/adapterEzEditTable.js | tablefilter v0.2.56 API Document + src/extensions/advancedGrid/adapterEzEditTable.js | tablefilter v0.2.57 API Document diff --git a/docs/file/src/extensions/advancedGrid/advancedGrid.js.html b/docs/file/src/extensions/advancedGrid/advancedGrid.js.html index 0b8dd631..576688d3 100644 --- a/docs/file/src/extensions/advancedGrid/advancedGrid.js.html +++ b/docs/file/src/extensions/advancedGrid/advancedGrid.js.html @@ -3,7 +3,7 @@ - src/extensions/advancedGrid/advancedGrid.js | tablefilter v0.2.56 API Document + src/extensions/advancedGrid/advancedGrid.js | tablefilter v0.2.57 API Document diff --git a/docs/file/src/extensions/colOps/colOps.js.html b/docs/file/src/extensions/colOps/colOps.js.html index c5181b95..da2f19fb 100644 --- a/docs/file/src/extensions/colOps/colOps.js.html +++ b/docs/file/src/extensions/colOps/colOps.js.html @@ -3,7 +3,7 @@ - src/extensions/colOps/colOps.js | tablefilter v0.2.56 API Document + src/extensions/colOps/colOps.js | tablefilter v0.2.57 API Document diff --git a/docs/file/src/extensions/colsVisibility/colsVisibility.js.html b/docs/file/src/extensions/colsVisibility/colsVisibility.js.html index b2967442..0a75225d 100644 --- a/docs/file/src/extensions/colsVisibility/colsVisibility.js.html +++ b/docs/file/src/extensions/colsVisibility/colsVisibility.js.html @@ -3,7 +3,7 @@ - src/extensions/colsVisibility/colsVisibility.js | tablefilter v0.2.56 API Document + src/extensions/colsVisibility/colsVisibility.js | tablefilter v0.2.57 API Document diff --git a/docs/file/src/extensions/filtersVisibility/filtersVisibility.js.html b/docs/file/src/extensions/filtersVisibility/filtersVisibility.js.html index bdc6ea04..c29ea575 100644 --- a/docs/file/src/extensions/filtersVisibility/filtersVisibility.js.html +++ b/docs/file/src/extensions/filtersVisibility/filtersVisibility.js.html @@ -3,7 +3,7 @@ - src/extensions/filtersVisibility/filtersVisibility.js | tablefilter v0.2.56 API Document + src/extensions/filtersVisibility/filtersVisibility.js | tablefilter v0.2.57 API Document diff --git a/docs/file/src/extensions/sort/adapterSortabletable.js.html b/docs/file/src/extensions/sort/adapterSortabletable.js.html index 874d27d4..c10f0bec 100644 --- a/docs/file/src/extensions/sort/adapterSortabletable.js.html +++ b/docs/file/src/extensions/sort/adapterSortabletable.js.html @@ -3,7 +3,7 @@ - src/extensions/sort/adapterSortabletable.js | tablefilter v0.2.56 API Document + src/extensions/sort/adapterSortabletable.js | tablefilter v0.2.57 API Document diff --git a/docs/file/src/extensions/sort/sort.js.html b/docs/file/src/extensions/sort/sort.js.html index 24762773..98bac7bb 100644 --- a/docs/file/src/extensions/sort/sort.js.html +++ b/docs/file/src/extensions/sort/sort.js.html @@ -3,7 +3,7 @@ - src/extensions/sort/sort.js | tablefilter v0.2.56 API Document + src/extensions/sort/sort.js | tablefilter v0.2.57 API Document diff --git a/docs/file/src/feature.js.html b/docs/file/src/feature.js.html index 775ec71c..2f943ae1 100644 --- a/docs/file/src/feature.js.html +++ b/docs/file/src/feature.js.html @@ -3,7 +3,7 @@ - src/feature.js | tablefilter v0.2.56 API Document + src/feature.js | tablefilter v0.2.57 API Document diff --git a/docs/file/src/helpers.js.html b/docs/file/src/helpers.js.html index 17167c7e..e39f415a 100644 --- a/docs/file/src/helpers.js.html +++ b/docs/file/src/helpers.js.html @@ -3,7 +3,7 @@ - src/helpers.js | tablefilter v0.2.56 API Document + src/helpers.js | tablefilter v0.2.57 API Document diff --git a/docs/file/src/modules/alternateRows.js.html b/docs/file/src/modules/alternateRows.js.html index 9a318d70..ab95bd5c 100644 --- a/docs/file/src/modules/alternateRows.js.html +++ b/docs/file/src/modules/alternateRows.js.html @@ -3,7 +3,7 @@ - src/modules/alternateRows.js | tablefilter v0.2.56 API Document + src/modules/alternateRows.js | tablefilter v0.2.57 API Document diff --git a/docs/file/src/modules/checkList.js.html b/docs/file/src/modules/checkList.js.html index b771bbea..5e3b4a5d 100644 --- a/docs/file/src/modules/checkList.js.html +++ b/docs/file/src/modules/checkList.js.html @@ -3,7 +3,7 @@ - src/modules/checkList.js | tablefilter v0.2.56 API Document + src/modules/checkList.js | tablefilter v0.2.57 API Document diff --git a/docs/file/src/modules/clearButton.js.html b/docs/file/src/modules/clearButton.js.html index 924e2015..9b48ac05 100644 --- a/docs/file/src/modules/clearButton.js.html +++ b/docs/file/src/modules/clearButton.js.html @@ -3,7 +3,7 @@ - src/modules/clearButton.js | tablefilter v0.2.56 API Document + src/modules/clearButton.js | tablefilter v0.2.57 API Document diff --git a/docs/file/src/modules/dropdown.js.html b/docs/file/src/modules/dropdown.js.html index 4bdcabca..f70316c5 100644 --- a/docs/file/src/modules/dropdown.js.html +++ b/docs/file/src/modules/dropdown.js.html @@ -3,7 +3,7 @@ - src/modules/dropdown.js | tablefilter v0.2.56 API Document + src/modules/dropdown.js | tablefilter v0.2.57 API Document diff --git a/docs/file/src/modules/gridLayout.js.html b/docs/file/src/modules/gridLayout.js.html index 0e3c8e4c..9311be09 100644 --- a/docs/file/src/modules/gridLayout.js.html +++ b/docs/file/src/modules/gridLayout.js.html @@ -3,7 +3,7 @@ - src/modules/gridLayout.js | tablefilter v0.2.56 API Document + src/modules/gridLayout.js | tablefilter v0.2.57 API Document diff --git a/docs/file/src/modules/hash.js.html b/docs/file/src/modules/hash.js.html index 847060f0..ce9411f1 100644 --- a/docs/file/src/modules/hash.js.html +++ b/docs/file/src/modules/hash.js.html @@ -3,7 +3,7 @@ - src/modules/hash.js | tablefilter v0.2.56 API Document + src/modules/hash.js | tablefilter v0.2.57 API Document @@ -121,6 +121,7 @@ import {root} from '../root'; const JSON = root.JSON; const location = root.location; const decodeURIComponent = root.decodeURIComponent; +const encodeURIComponent = root.encodeURIComponent; /** * Checks if browser has onhashchange event @@ -192,7 +193,7 @@ export class Hash { * @param {State} state Instance of State */ update(state) { - let hash = `#${JSON.stringify(state)}`; + let hash = `#${encodeURIComponent(JSON.stringify(state))}`; if (this.lastHash === hash) { return; } diff --git a/docs/file/src/modules/help.js.html b/docs/file/src/modules/help.js.html index 0f8ba355..64761a76 100644 --- a/docs/file/src/modules/help.js.html +++ b/docs/file/src/modules/help.js.html @@ -3,7 +3,7 @@ - src/modules/help.js | tablefilter v0.2.56 API Document + src/modules/help.js | tablefilter v0.2.57 API Document diff --git a/docs/file/src/modules/highlightKeywords.js.html b/docs/file/src/modules/highlightKeywords.js.html index 87a3f2d2..6a61dfb9 100644 --- a/docs/file/src/modules/highlightKeywords.js.html +++ b/docs/file/src/modules/highlightKeywords.js.html @@ -3,7 +3,7 @@ - src/modules/highlightKeywords.js | tablefilter v0.2.56 API Document + src/modules/highlightKeywords.js | tablefilter v0.2.57 API Document diff --git a/docs/file/src/modules/loader.js.html b/docs/file/src/modules/loader.js.html index e82d3789..1a46121c 100644 --- a/docs/file/src/modules/loader.js.html +++ b/docs/file/src/modules/loader.js.html @@ -3,7 +3,7 @@ - src/modules/loader.js | tablefilter v0.2.56 API Document + src/modules/loader.js | tablefilter v0.2.57 API Document diff --git a/docs/file/src/modules/noResults.js.html b/docs/file/src/modules/noResults.js.html index c61b033b..5742d6ab 100644 --- a/docs/file/src/modules/noResults.js.html +++ b/docs/file/src/modules/noResults.js.html @@ -3,7 +3,7 @@ - src/modules/noResults.js | tablefilter v0.2.56 API Document + src/modules/noResults.js | tablefilter v0.2.57 API Document diff --git a/docs/file/src/modules/paging.js.html b/docs/file/src/modules/paging.js.html index b8a3c622..2b210b30 100644 --- a/docs/file/src/modules/paging.js.html +++ b/docs/file/src/modules/paging.js.html @@ -3,7 +3,7 @@ - src/modules/paging.js | tablefilter v0.2.56 API Document + src/modules/paging.js | tablefilter v0.2.57 API Document diff --git a/docs/file/src/modules/popupFilter.js.html b/docs/file/src/modules/popupFilter.js.html index a3138e18..a37ac09f 100644 --- a/docs/file/src/modules/popupFilter.js.html +++ b/docs/file/src/modules/popupFilter.js.html @@ -3,7 +3,7 @@ - src/modules/popupFilter.js | tablefilter v0.2.56 API Document + src/modules/popupFilter.js | tablefilter v0.2.57 API Document diff --git a/docs/file/src/modules/rowsCounter.js.html b/docs/file/src/modules/rowsCounter.js.html index efbe2a68..3cc1e385 100644 --- a/docs/file/src/modules/rowsCounter.js.html +++ b/docs/file/src/modules/rowsCounter.js.html @@ -3,7 +3,7 @@ - src/modules/rowsCounter.js | tablefilter v0.2.56 API Document + src/modules/rowsCounter.js | tablefilter v0.2.57 API Document diff --git a/docs/file/src/modules/state.js.html b/docs/file/src/modules/state.js.html index f3fb965a..981d6568 100644 --- a/docs/file/src/modules/state.js.html +++ b/docs/file/src/modules/state.js.html @@ -3,7 +3,7 @@ - src/modules/state.js | tablefilter v0.2.56 API Document + src/modules/state.js | tablefilter v0.2.57 API Document diff --git a/docs/file/src/modules/statusBar.js.html b/docs/file/src/modules/statusBar.js.html index e0f74506..3be95790 100644 --- a/docs/file/src/modules/statusBar.js.html +++ b/docs/file/src/modules/statusBar.js.html @@ -3,7 +3,7 @@ - src/modules/statusBar.js | tablefilter v0.2.56 API Document + src/modules/statusBar.js | tablefilter v0.2.57 API Document diff --git a/docs/file/src/modules/storage.js.html b/docs/file/src/modules/storage.js.html index 11cd1e63..a45e7430 100644 --- a/docs/file/src/modules/storage.js.html +++ b/docs/file/src/modules/storage.js.html @@ -3,7 +3,7 @@ - src/modules/storage.js | tablefilter v0.2.56 API Document + src/modules/storage.js | tablefilter v0.2.57 API Document diff --git a/docs/file/src/root.js.html b/docs/file/src/root.js.html index d2084087..ed0c31b3 100644 --- a/docs/file/src/root.js.html +++ b/docs/file/src/root.js.html @@ -3,7 +3,7 @@ - src/root.js | tablefilter v0.2.56 API Document + src/root.js | tablefilter v0.2.57 API Document diff --git a/docs/file/src/sort.js.html b/docs/file/src/sort.js.html index 9c79e71f..e872d640 100644 --- a/docs/file/src/sort.js.html +++ b/docs/file/src/sort.js.html @@ -3,7 +3,7 @@ - src/sort.js | tablefilter v0.2.56 API Document + src/sort.js | tablefilter v0.2.57 API Document diff --git a/docs/file/src/string.js.html b/docs/file/src/string.js.html index b01c75b8..d0af822a 100644 --- a/docs/file/src/string.js.html +++ b/docs/file/src/string.js.html @@ -3,7 +3,7 @@ - src/string.js | tablefilter v0.2.56 API Document + src/string.js | tablefilter v0.2.57 API Document diff --git a/docs/file/src/tablefilter.js.html b/docs/file/src/tablefilter.js.html index 9ebaa37f..14219854 100644 --- a/docs/file/src/tablefilter.js.html +++ b/docs/file/src/tablefilter.js.html @@ -3,7 +3,7 @@ - src/tablefilter.js | tablefilter v0.2.56 API Document + src/tablefilter.js | tablefilter v0.2.57 API Document diff --git a/docs/file/src/types.js.html b/docs/file/src/types.js.html index accc61a1..287fa87c 100644 --- a/docs/file/src/types.js.html +++ b/docs/file/src/types.js.html @@ -3,7 +3,7 @@ - src/types.js | tablefilter v0.2.56 API Document + src/types.js | tablefilter v0.2.57 API Document diff --git a/docs/identifiers.html b/docs/identifiers.html index 5efc63e9..86584254 100644 --- a/docs/identifiers.html +++ b/docs/identifiers.html @@ -3,7 +3,7 @@ - Index | tablefilter v0.2.56 API Document + Index | tablefilter v0.2.57 API Document diff --git a/docs/index.html b/docs/index.html index e01ac7ec..f6d4f534 100644 --- a/docs/index.html +++ b/docs/index.html @@ -3,7 +3,7 @@ - tablefilter v0.2.56 API Document + tablefilter v0.2.57 API Document diff --git a/docs/package.json b/docs/package.json index 60dd6aad..cb95a113 100644 --- a/docs/package.json +++ b/docs/package.json @@ -1,6 +1,6 @@ { "name": "tablefilter", - "version": "0.2.56", + "version": "0.2.57", "description": "A Javascript library making HTML tables filterable and a bit more", "license": "MIT", "author": { diff --git a/docs/source.html b/docs/source.html index 707d03fc..ad45a6a9 100644 --- a/docs/source.html +++ b/docs/source.html @@ -3,7 +3,7 @@ - Source | tablefilter v0.2.56 API Document + Source | tablefilter v0.2.57 API Document @@ -135,7 +135,7 @@ 100 %1/1 545 byte 22 - 2016-08-04 07:51:28 (UTC) + 2016-08-03 05:14:34 (UTC) src/const.js @@ -155,7 +155,7 @@ 100 %13/13 1133 byte 84 - 2016-08-04 07:51:28 (UTC) + 2016-08-03 05:14:34 (UTC) src/cookie.js @@ -163,7 +163,7 @@ - 1412 byte 57 - 2016-08-04 07:51:28 (UTC) + 2016-08-03 05:14:34 (UTC) src/date.js @@ -172,7 +172,7 @@ 100 %2/2 5770 byte 183 - 2016-08-04 07:51:28 (UTC) + 2016-08-03 05:14:34 (UTC) src/dom.js @@ -191,7 +191,7 @@ 100 %12/12 4787 byte 191 - 2016-08-04 07:51:28 (UTC) + 2016-08-03 05:14:34 (UTC) src/emitter.js @@ -199,7 +199,7 @@ 100 %6/6 1323 byte 53 - 2016-08-04 07:51:28 (UTC) + 2016-08-03 05:14:34 (UTC) src/event.js @@ -212,7 +212,7 @@ 100 %6/6 2378 byte 102 - 2016-08-04 07:51:28 (UTC) + 2016-08-03 05:14:34 (UTC) src/extensions/advancedGrid/adapterEzEditTable.js @@ -220,7 +220,7 @@ 35 %5/14 18245 byte 459 - 2016-08-04 07:51:28 (UTC) + 2016-08-03 05:14:34 (UTC) src/extensions/advancedGrid/advancedGrid.js @@ -228,7 +228,7 @@ - 90 byte 2 - 2016-08-04 07:51:28 (UTC) + 2016-08-03 05:14:34 (UTC) src/extensions/colOps/colOps.js @@ -236,7 +236,7 @@ 22 %2/9 12868 byte 329 - 2016-08-04 07:51:28 (UTC) + 2016-08-03 05:14:34 (UTC) src/extensions/colsVisibility/colsVisibility.js @@ -244,7 +244,7 @@ 17 %10/57 18064 byte 546 - 2016-08-04 07:51:28 (UTC) + 2016-08-03 05:14:34 (UTC) src/extensions/filtersVisibility/filtersVisibility.js @@ -252,7 +252,7 @@ 18 %6/33 6337 byte 202 - 2016-08-04 07:51:28 (UTC) + 2016-08-03 05:14:34 (UTC) src/extensions/sort/adapterSortabletable.js @@ -260,7 +260,7 @@ 11 %3/26 14150 byte 432 - 2016-08-04 07:51:28 (UTC) + 2016-08-03 05:14:34 (UTC) src/extensions/sort/sort.js @@ -268,7 +268,7 @@ - 197 byte 8 - 2016-08-04 07:51:28 (UTC) + 2016-08-03 05:14:34 (UTC) src/feature.js @@ -276,7 +276,7 @@ 100 %14/14 1761 byte 94 - 2016-08-04 07:51:28 (UTC) + 2016-08-03 05:14:34 (UTC) src/helpers.js @@ -284,7 +284,7 @@ 100 %1/1 448 byte 19 - 2016-08-04 07:51:28 (UTC) + 2016-08-03 05:14:34 (UTC) src/modules/alternateRows.js @@ -292,7 +292,7 @@ 100 %9/9 3527 byte 140 - 2016-08-04 07:51:28 (UTC) + 2016-08-03 05:14:34 (UTC) src/modules/checkList.js @@ -300,7 +300,7 @@ 100 %21/21 18567 byte 567 - 2016-08-04 07:51:28 (UTC) + 2016-08-03 05:14:34 (UTC) src/modules/clearButton.js @@ -308,7 +308,7 @@ 100 %9/9 3090 byte 127 - 2016-08-04 07:51:28 (UTC) + 2016-08-03 05:14:34 (UTC) src/modules/dropdown.js @@ -316,7 +316,7 @@ 100 %13/13 13641 byte 432 - 2016-08-04 07:51:28 (UTC) + 2016-08-03 05:14:34 (UTC) src/modules/gridLayout.js @@ -324,16 +324,16 @@ 80 %16/20 14595 byte 504 - 2016-08-04 07:51:28 (UTC) + 2016-08-03 05:14:34 (UTC) src/modules/hash.js Hash hasHashChange 100 %10/10 - 2909 byte - 125 - 2016-08-04 07:51:28 (UTC) + 2981 byte + 126 + 2016-08-03 05:14:34 (UTC) src/modules/help.js @@ -341,7 +341,7 @@ 100 %17/17 6347 byte 217 - 2016-08-04 07:51:28 (UTC) + 2016-08-03 05:14:34 (UTC) src/modules/highlightKeywords.js @@ -349,7 +349,7 @@ 100 %10/10 4434 byte 147 - 2016-08-04 07:51:28 (UTC) + 2016-08-03 05:14:34 (UTC) src/modules/loader.js @@ -357,7 +357,7 @@ 100 %14/14 5298 byte 211 - 2016-08-04 07:51:28 (UTC) + 2016-08-03 05:14:34 (UTC) src/modules/noResults.js @@ -365,7 +365,7 @@ 100 %17/17 5178 byte 215 - 2016-08-04 07:51:28 (UTC) + 2016-08-03 05:14:34 (UTC) src/modules/paging.js @@ -373,7 +373,7 @@ 100 %45/45 29379 byte 955 - 2016-08-04 07:51:28 (UTC) + 2016-08-03 05:14:34 (UTC) src/modules/popupFilter.js @@ -381,7 +381,7 @@ 100 %21/21 10205 byte 356 - 2016-08-04 07:51:28 (UTC) + 2016-08-03 05:14:34 (UTC) src/modules/rowsCounter.js @@ -389,7 +389,7 @@ 100 %13/13 6357 byte 224 - 2016-08-04 07:51:28 (UTC) + 2016-08-03 05:14:34 (UTC) src/modules/state.js @@ -397,7 +397,7 @@ 100 %24/24 14771 byte 541 - 2016-08-04 07:51:28 (UTC) + 2016-08-03 05:14:34 (UTC) src/modules/statusBar.js @@ -405,7 +405,7 @@ 100 %22/22 9553 byte 333 - 2016-08-04 07:51:28 (UTC) + 2016-08-03 05:14:34 (UTC) src/modules/storage.js @@ -414,7 +414,7 @@ 100 %10/10 3544 byte 162 - 2016-08-04 07:51:28 (UTC) + 2016-08-03 05:14:34 (UTC) src/root.js @@ -422,7 +422,7 @@ 100 %1/1 235 byte 6 - 2016-08-04 07:51:28 (UTC) + 2016-08-03 05:14:34 (UTC) src/sort.js @@ -432,7 +432,7 @@ 100 %3/3 930 byte 33 - 2016-08-04 07:51:28 (UTC) + 2016-08-03 05:14:34 (UTC) src/string.js @@ -444,7 +444,7 @@ 100 %5/5 1854 byte 69 - 2016-08-04 07:51:28 (UTC) + 2016-08-03 05:14:34 (UTC) src/tablefilter.js @@ -452,7 +452,7 @@ 70 %137/195 84785 byte 2676 - 2016-08-04 07:51:28 (UTC) + 2016-08-03 05:14:34 (UTC) src/types.js @@ -467,7 +467,7 @@ 100 %8/8 1451 byte 67 - 2016-08-04 07:51:28 (UTC) + 2016-08-03 05:14:34 (UTC) diff --git a/docs/variable/index.html b/docs/variable/index.html index 78fae32a..b5a455b0 100644 --- a/docs/variable/index.html +++ b/docs/variable/index.html @@ -3,7 +3,7 @@ - Variable | tablefilter v0.2.56 API Document + Variable | tablefilter v0.2.57 API Document @@ -2762,11 +2762,11 @@ propagation of the event.

- source + source -
import {hasHashChange} from 'tablefilter/src/modules/hash.js'
+
import {hasHashChange} from 'tablefilter/src/modules/hash.js'

Checks if browser has onhashchange event