datatables.net-select 1.7.1 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- /*! Select for DataTables 1.7.0-dev
1
+ /*! Select for DataTables 2.0.1
2
2
  * © SpryMedia Ltd - datatables.net/license/mit
3
3
  */
4
4
 
@@ -43,7 +43,7 @@
43
43
  // Browser
44
44
  factory( jQuery, window, document );
45
45
  }
46
- }(function( $, window, document, undefined ) {
46
+ }(function( $, window, document ) {
47
47
  'use strict';
48
48
  var DataTable = $.fn.dataTable;
49
49
 
@@ -52,11 +52,15 @@ var DataTable = $.fn.dataTable;
52
52
  // Version information for debugger
53
53
  DataTable.select = {};
54
54
 
55
- DataTable.select.version = '1.7.0-dev';
55
+ DataTable.select.version = '2.0.1';
56
56
 
57
57
  DataTable.select.init = function (dt) {
58
58
  var ctx = dt.settings()[0];
59
59
 
60
+ if (!DataTable.versionCheck('2')) {
61
+ throw 'Warning: Select requires DataTables 2 or newer';
62
+ }
63
+
60
64
  if (ctx._select) {
61
65
  return;
62
66
  }
@@ -121,9 +125,12 @@ DataTable.select.init = function (dt) {
121
125
  var info = true;
122
126
  var selector = 'td, th';
123
127
  var className = 'selected';
128
+ var headerCheckbox = true;
124
129
  var setStyle = false;
125
130
 
126
- ctx._select = {};
131
+ ctx._select = {
132
+ infoEls: []
133
+ };
127
134
 
128
135
  // Initialisation customisations
129
136
  if (opts === true) {
@@ -167,6 +174,10 @@ DataTable.select.init = function (dt) {
167
174
  if (opts.className !== undefined) {
168
175
  className = opts.className;
169
176
  }
177
+
178
+ if (opts.headerCheckbox !== undefined) {
179
+ headerCheckbox = opts.headerCheckbox;
180
+ }
170
181
  }
171
182
 
172
183
  dt.select.selector(selector);
@@ -177,27 +188,21 @@ DataTable.select.init = function (dt) {
177
188
  dt.select.info(info);
178
189
  ctx._select.className = className;
179
190
 
180
- // Sort table based on selected rows. Requires Select Datatables extension
181
- $.fn.dataTable.ext.order['select-checkbox'] = function (settings, col) {
182
- return this.api()
183
- .column(col, { order: 'index' })
184
- .nodes()
185
- .map(function (td) {
186
- if (settings._select.items === 'row') {
187
- return $(td).parent().hasClass(settings._select.className);
188
- }
189
- else if (settings._select.items === 'cell') {
190
- return $(td).hasClass(settings._select.className);
191
- }
192
- return false;
193
- });
194
- };
195
-
196
191
  // If the init options haven't enabled select, but there is a selectable
197
192
  // class name, then enable
198
193
  if (!setStyle && $(dt.table().node()).hasClass('selectable')) {
199
194
  dt.select.style('os');
200
195
  }
196
+
197
+ // Insert a checkbox into the header if needed - might need to wait
198
+ // for init complete, or it might already be done
199
+ if (headerCheckbox) {
200
+ initCheckboxHeader(dt);
201
+
202
+ dt.on('init', function () {
203
+ initCheckboxHeader(dt);
204
+ });
205
+ }
201
206
  };
202
207
 
203
208
  /*
@@ -249,6 +254,7 @@ The `_select` object contains the following properties:
249
254
  on the row
250
255
  info:boolean - If the selection summary should be shown in the table
251
256
  information elements
257
+ infoEls:element[] - List of HTML elements with info elements for a table
252
258
  }
253
259
  ```
254
260
 
@@ -433,10 +439,10 @@ function enableMouseSelection(dt) {
433
439
  }
434
440
 
435
441
  var ctx = dt.settings()[0];
436
- var wrapperClass = dt.settings()[0].oClasses.sWrapper.trim().replace(/ +/g, '.');
442
+ var container = dt.table().container();
437
443
 
438
444
  // Ignore clicks inside a sub-table
439
- if ($(e.target).closest('div.' + wrapperClass)[0] != dt.table().container()) {
445
+ if ($(e.target).closest('div.dt-container')[0] != container) {
440
446
  return;
441
447
  }
442
448
 
@@ -534,14 +540,8 @@ function eventTrigger(api, type, args, any) {
534
540
  * @param {DataTable.Api} api DataTable to update
535
541
  * @private
536
542
  */
537
- function info(api) {
538
- var ctx = api.settings()[0];
539
-
540
- if (!ctx._select.info || !ctx.aanFeatures.i) {
541
- return;
542
- }
543
-
544
- if (api.select.style() === 'api') {
543
+ function info(api, node) {
544
+ if (api.select.style() === 'api' || api.select.info() === false) {
545
545
  return;
546
546
  }
547
547
 
@@ -561,22 +561,81 @@ function info(api) {
561
561
  );
562
562
  };
563
563
 
564
- // Internal knowledge of DataTables to loop over all information elements
565
- $.each(ctx.aanFeatures.i, function (i, el) {
566
- el = $(el);
564
+ var el = $(node);
565
+ var output = $('<span class="select-info"/>');
567
566
 
568
- var output = $('<span class="select-info"/>');
569
- add(output, 'row', rows);
570
- add(output, 'column', columns);
571
- add(output, 'cell', cells);
567
+ add(output, 'row', rows);
568
+ add(output, 'column', columns);
569
+ add(output, 'cell', cells);
572
570
 
573
- var exisiting = el.children('span.select-info');
574
- if (exisiting.length) {
575
- exisiting.remove();
576
- }
571
+ var existing = el.children('span.select-info');
577
572
 
578
- if (output.text() !== '') {
579
- el.append(output);
573
+ if (existing.length) {
574
+ existing.remove();
575
+ }
576
+
577
+ if (output.text() !== '') {
578
+ el.append(output);
579
+ }
580
+ }
581
+
582
+ /**
583
+ * Add a checkbox to the header for checkbox columns, allowing all rows to
584
+ * be selected, deselected or just to show the state.
585
+ *
586
+ * @param {*} dt API
587
+ */
588
+ function initCheckboxHeader( dt ) {
589
+ // Find any checkbox column(s)
590
+ dt.columns('.dt-select').every(function () {
591
+ var header = this.header();
592
+
593
+ if (! $('input', header).length) {
594
+ // If no checkbox yet, insert one
595
+ var input = $('<input>')
596
+ .attr({
597
+ class: 'dt-select-checkbox',
598
+ type: 'checkbox',
599
+ 'aria-label': dt.i18n('select.aria.headerCheckbox') || 'Select all rows'
600
+ })
601
+ .appendTo(header)
602
+ .on('change', function () {
603
+ if (this.checked) {
604
+ dt.rows({search: 'applied'}).select();
605
+ }
606
+ else {
607
+ dt.rows({selected: true}).deselect();
608
+ }
609
+ })
610
+ .on('click', function (e) {
611
+ e.stopPropagation();
612
+ });
613
+
614
+ // Update the header checkbox's state when the selection in the
615
+ // table changes
616
+ dt.on('draw select deselect', function (e, pass, type) {
617
+ if (type === 'row' || ! type) {
618
+ var count = dt.rows({selected: true}).count();
619
+ var search = dt.rows({search: 'applied', selected: true}).count();
620
+ var available = dt.rows({search: 'applied'}).count();
621
+
622
+ if (search && search <= count && search === available) {
623
+ input
624
+ .prop('checked', true)
625
+ .prop('indeterminate', false);
626
+ }
627
+ else if (search === 0 && count === 0) {
628
+ input
629
+ .prop('checked', false)
630
+ .prop('indeterminate', false);
631
+ }
632
+ else {
633
+ input
634
+ .prop('checked', false)
635
+ .prop('indeterminate', true);
636
+ }
637
+ }
638
+ });
580
639
  }
581
640
  });
582
641
  }
@@ -602,14 +661,15 @@ function init(ctx) {
602
661
  // This method of attaching to `aoRowCreatedCallback` is a hack until
603
662
  // DataTables has proper events for row manipulation If you are reviewing
604
663
  // this code to create your own plug-ins, please do not do this!
605
- ctx.aoRowCreatedCallback.push({
606
- fn: function (row, data, index) {
664
+ ctx.aoRowCreatedCallback.push(function (row, data, index) {
607
665
  var i, ien;
608
666
  var d = ctx.aoData[index];
609
667
 
610
668
  // Row
611
669
  if (d._select_selected) {
612
- $(row).addClass(ctx._select.className);
670
+ $(row)
671
+ .addClass(ctx._select.className)
672
+ .find('input.dt-select-checkbox').prop('checked', true);
613
673
  }
614
674
 
615
675
  // Cells and columns - if separated out, we would need to do two
@@ -619,12 +679,11 @@ function init(ctx) {
619
679
  ctx.aoColumns[i]._select_selected ||
620
680
  (d._selected_cells && d._selected_cells[i])
621
681
  ) {
622
- $(d.anCells[i]).addClass(ctx._select.className);
682
+ $(d.anCells[i]).addClass(ctx._select.className)
623
683
  }
624
684
  }
625
- },
626
- sName: 'select-deferRender'
627
- });
685
+ }
686
+ );
628
687
 
629
688
  // On Ajax reload we want to reselect all rows which are currently selected,
630
689
  // if there is an rowId (i.e. a unique value to identify each row with)
@@ -668,8 +727,20 @@ function init(ctx) {
668
727
  });
669
728
 
670
729
  // Update the table information element with selected item summary
671
- api.on('draw.dtSelect.dt select.dtSelect.dt deselect.dtSelect.dt info.dt', function () {
672
- info(api);
730
+ api.on('info.dt', function (e, ctx, node) {
731
+ // Store the info node for updating on select / deselect
732
+ if (!ctx._select.infoEls.includes(node)) {
733
+ ctx._select.infoEls.push(node);
734
+ }
735
+
736
+ info(api, node);
737
+ });
738
+
739
+ api.on('select.dtSelect.dt deselect.dtSelect.dt', function () {
740
+ ctx._select.infoEls.forEach(function (el) {
741
+ info(api, el);
742
+ });
743
+
673
744
  api.state.save();
674
745
  });
675
746
 
@@ -697,13 +768,13 @@ function init(ctx) {
697
768
  function rowColumnRange(dt, type, idx, last) {
698
769
  // Add a range of rows from the last selected row to this one
699
770
  var indexes = dt[type + 's']({ search: 'applied' }).indexes();
700
- var idx1 = $.inArray(last, indexes);
701
- var idx2 = $.inArray(idx, indexes);
771
+ var idx1 = indexes.indexOf(last);
772
+ var idx2 = indexes.indexOf(idx);
702
773
 
703
774
  if (!dt[type + 's']({ selected: true }).any() && idx1 === -1) {
704
775
  // select from top to here - slightly odd, but both Windows and Mac OS
705
776
  // do this
706
- indexes.splice($.inArray(idx, indexes) + 1, indexes.length);
777
+ indexes.splice(indexes.indexOf(idx) + 1, indexes.length);
707
778
  }
708
779
  else {
709
780
  // reverse so we can shift click 'up' as well as down
@@ -723,7 +794,7 @@ function rowColumnRange(dt, type, idx, last) {
723
794
  }
724
795
  else {
725
796
  // Deselect range - need to keep the clicked on row selected
726
- indexes.splice($.inArray(idx, indexes), 1);
797
+ indexes.splice(indexes.indexOf(idx), 1);
727
798
  dt[type + 's'](indexes).deselect();
728
799
  }
729
800
  }
@@ -850,8 +921,10 @@ $.each(
850
921
  data = settings[o.prop][indexes[i]];
851
922
 
852
923
  if (
853
- (selected === true && data._select_selected === true) ||
854
- (selected === false && !data._select_selected)
924
+ data && (
925
+ (selected === true && data._select_selected === true) ||
926
+ (selected === false && !data._select_selected)
927
+ )
855
928
  ) {
856
929
  out.push(indexes[i]);
857
930
  }
@@ -875,11 +948,13 @@ DataTable.ext.selector.cell.push(function (settings, opts, cells) {
875
948
  rowData = settings.aoData[cells[i].row];
876
949
 
877
950
  if (
878
- (selected === true &&
879
- rowData._selected_cells &&
880
- rowData._selected_cells[cells[i].column] === true) ||
881
- (selected === false &&
882
- (!rowData._selected_cells || !rowData._selected_cells[cells[i].column]))
951
+ rowData && (
952
+ (selected === true &&
953
+ rowData._selected_cells &&
954
+ rowData._selected_cells[cells[i].column] === true) ||
955
+ (selected === false &&
956
+ (!rowData._selected_cells || !rowData._selected_cells[cells[i].column]))
957
+ )
883
958
  ) {
884
959
  out.push(cells[i]);
885
960
  }
@@ -994,6 +1069,17 @@ apiRegister('select.selector()', function (selector) {
994
1069
  });
995
1070
  });
996
1071
 
1072
+ apiRegister('select.last()', function (set) {
1073
+ let ctx = this.context[0];
1074
+
1075
+ if (set) {
1076
+ ctx._select_lastCell = set;
1077
+ return this;
1078
+ }
1079
+
1080
+ return ctx._select_lastCell;
1081
+ });
1082
+
997
1083
  apiRegisterPlural('rows().select()', 'row().select()', function (select) {
998
1084
  var api = this;
999
1085
 
@@ -1004,8 +1090,37 @@ apiRegisterPlural('rows().select()', 'row().select()', function (select) {
1004
1090
  this.iterator('row', function (ctx, idx) {
1005
1091
  clear(ctx);
1006
1092
 
1007
- ctx.aoData[idx]._select_selected = true;
1008
- $(ctx.aoData[idx].nTr).addClass(ctx._select.className);
1093
+ // There is a good amount of knowledge of DataTables internals in
1094
+ // this function. It _could_ be done without that, but it would hurt
1095
+ // performance (or DT would need new APIs for this work)
1096
+ var dtData = ctx.aoData[idx];
1097
+ var dtColumns = ctx.aoColumns;
1098
+
1099
+ $(dtData.nTr).addClass(ctx._select.className);
1100
+ dtData._select_selected = true;
1101
+
1102
+ for (var i=0 ; i<dtColumns.length ; i++) {
1103
+ var col = dtColumns[i];
1104
+
1105
+ // Regenerate the column type if not present
1106
+ if (col.sType === null) {
1107
+ api.columns().types()
1108
+ }
1109
+
1110
+ if (col.sType === 'select-checkbox') {
1111
+ var cells = dtData.anCells;
1112
+
1113
+ // Make sure the checkbox shows the right state
1114
+ if (cells && cells[i]) {
1115
+ $('input.dt-select-checkbox', cells[i]).prop('checked', true);
1116
+ }
1117
+
1118
+ // Invalidate the sort data for this column, if not already done
1119
+ if (dtData._aSortData !== null) {
1120
+ dtData._aSortData[i] = null;
1121
+ }
1122
+ }
1123
+ }
1009
1124
  });
1010
1125
 
1011
1126
  this.iterator('table', function (ctx, i) {
@@ -1110,9 +1225,36 @@ apiRegisterPlural('rows().deselect()', 'row().deselect()', function () {
1110
1225
  var api = this;
1111
1226
 
1112
1227
  this.iterator('row', function (ctx, idx) {
1113
- ctx.aoData[idx]._select_selected = false;
1228
+ // Like the select action, this has a lot of knowledge about DT internally
1229
+ var dtData = ctx.aoData[idx];
1230
+ var dtColumns = ctx.aoColumns;
1231
+
1232
+ $(dtData.nTr).removeClass(ctx._select.className);
1233
+ dtData._select_selected = false;
1114
1234
  ctx._select_lastCell = null;
1115
- $(ctx.aoData[idx].nTr).removeClass(ctx._select.className);
1235
+
1236
+ for (var i=0 ; i<dtColumns.length ; i++) {
1237
+ var col = dtColumns[i];
1238
+
1239
+ // Regenerate the column type if not present
1240
+ if (col.sType === null) {
1241
+ api.columns().types()
1242
+ }
1243
+
1244
+ if (col.sType === 'select-checkbox') {
1245
+ var cells = dtData.anCells;
1246
+
1247
+ // Make sure the checkbox shows the right state
1248
+ if (cells && cells[i]) {
1249
+ $('input.dt-select-checkbox', dtData.anCells[i]).prop('checked', false);
1250
+ }
1251
+
1252
+ // Invalidate the sort data for this column, if not already done
1253
+ if (dtData._aSortData !== null) {
1254
+ dtData._aSortData[i] = null;
1255
+ }
1256
+ }
1257
+ }
1116
1258
  });
1117
1259
 
1118
1260
  this.iterator('table', function (ctx, i) {
@@ -1198,15 +1340,15 @@ function namespacedEvents(config) {
1198
1340
  }
1199
1341
 
1200
1342
  function enabled(dt, config) {
1201
- if ($.inArray('rows', config.limitTo) !== -1 && dt.rows({ selected: true }).any()) {
1343
+ if (config.limitTo.indexOf('rows') !== -1 && dt.rows({ selected: true }).any()) {
1202
1344
  return true;
1203
1345
  }
1204
1346
 
1205
- if ($.inArray('columns', config.limitTo) !== -1 && dt.columns({ selected: true }).any()) {
1347
+ if (config.limitTo.indexOf('columns') !== -1 && dt.columns({ selected: true }).any()) {
1206
1348
  return true;
1207
1349
  }
1208
1350
 
1209
- if ($.inArray('cells', config.limitTo) !== -1 && dt.cells({ selected: true }).any()) {
1351
+ if (config.limitTo.indexOf('cells') !== -1 && dt.cells({ selected: true }).any()) {
1210
1352
  return true;
1211
1353
  }
1212
1354
 
@@ -1306,34 +1448,23 @@ $.extend(DataTable.ext.buttons, {
1306
1448
  showSelected: {
1307
1449
  text: i18n('showSelected', 'Show only selected'),
1308
1450
  className: 'buttons-show-selected',
1309
- action: function (e, dt, node, conf) {
1310
- // Works by having a filtering function which will reduce to the selected
1311
- // items only. So we can re-reference the function it gets stored in the
1312
- // `conf` object
1313
- if (conf._filter) {
1314
- var idx = DataTable.ext.search.indexOf(conf._filter);
1315
-
1316
- if (idx !== -1) {
1317
- DataTable.ext.search.splice(idx, 1);
1318
- conf._filter = null;
1319
- }
1451
+ action: function (e, dt) {
1452
+ if (dt.search.fixed('dt-select')) {
1453
+ // Remove existing function
1454
+ dt.search.fixed('dt-select', null);
1320
1455
 
1321
1456
  this.active(false);
1322
1457
  }
1323
1458
  else {
1324
- var fn = function (s, data, idx) {
1325
- // Need to be sure we are operating on our table!
1326
- if (s !== dt.settings()[0]) {
1327
- return true;
1328
- }
1329
-
1330
- let row = s.aoData[idx];
1331
-
1332
- return row._select_selected;
1333
- };
1334
-
1335
- conf._filter = fn;
1336
- DataTable.ext.search.push(fn);
1459
+ // Use a fixed filtering function to match on selected rows
1460
+ // This needs to reference the internal aoData since that is
1461
+ // where Select stores its reference for the selected state
1462
+ var dataSrc = dt.settings()[0].aoData;
1463
+
1464
+ dt.search.fixed('dt-select', function (text, data, idx) {
1465
+ // _select_selected is set by Select on the data object for the row
1466
+ return dataSrc[idx]._select_selected;
1467
+ });
1337
1468
 
1338
1469
  this.active(true);
1339
1470
  }
@@ -1362,6 +1493,74 @@ $.each(['Row', 'Column', 'Cell'], function (i, item) {
1362
1493
  };
1363
1494
  });
1364
1495
 
1496
+ DataTable.type('select-checkbox', {
1497
+ className: 'dt-select',
1498
+ detect: function (data) {
1499
+ // Rendering function will tell us if it is a checkbox type
1500
+ return data === 'select-checkbox' ? data : false;
1501
+ },
1502
+ order: {
1503
+ pre: function (d) {
1504
+ return d === 'X' ? -1 : 0;
1505
+ }
1506
+ }
1507
+ });
1508
+
1509
+ $.extend(true, DataTable.defaults.oLanguage, {
1510
+ select: {
1511
+ aria: {
1512
+ rowCheckbox: 'Select row'
1513
+ }
1514
+ }
1515
+ });
1516
+
1517
+ DataTable.render.select = function (valueProp, nameProp) {
1518
+ var valueFn = valueProp ? DataTable.util.get(valueProp) : null;
1519
+ var nameFn = nameProp ? DataTable.util.get(nameProp) : null;
1520
+
1521
+ return function (data, type, row, meta) {
1522
+ var dtRow = meta.settings.aoData[meta.row];
1523
+ var selected = dtRow._select_selected;
1524
+ var ariaLabel = meta.settings.oLanguage.select.aria.rowCheckbox;
1525
+
1526
+ if (type === 'display') {
1527
+ return $('<input>')
1528
+ .attr({
1529
+ 'aria-label': ariaLabel,
1530
+ class: 'dt-select-checkbox',
1531
+ name: nameFn ? nameFn(row) : null,
1532
+ type: 'checkbox',
1533
+ value: valueFn ? valueFn(row) : null,
1534
+ checked: selected
1535
+ })[0];
1536
+ }
1537
+ else if (type === 'type') {
1538
+ return 'select-checkbox';
1539
+ }
1540
+ else if (type === 'filter') {
1541
+ return '';
1542
+ }
1543
+
1544
+ return selected ? 'X' : '';
1545
+ }
1546
+ }
1547
+
1548
+ // Legacy checkbox ordering
1549
+ DataTable.ext.order['select-checkbox'] = function (settings, col) {
1550
+ return this.api()
1551
+ .column(col, { order: 'index' })
1552
+ .nodes()
1553
+ .map(function (td) {
1554
+ if (settings._select.items === 'row') {
1555
+ return $(td).parent().hasClass(settings._select.className);
1556
+ }
1557
+ else if (settings._select.items === 'cell') {
1558
+ return $(td).hasClass(settings._select.className);
1559
+ }
1560
+ return false;
1561
+ });
1562
+ };
1563
+
1365
1564
  $.fn.DataTable.select = DataTable.select;
1366
1565
 
1367
1566
  /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
@@ -1,4 +1,4 @@
1
- /*! Select for DataTables 1.7.0-dev
1
+ /*! Select for DataTables 2.0.1
2
2
  * © SpryMedia Ltd - datatables.net/license/mit
3
3
  */
4
- !function(l){var s,c;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(e){return l(e,window,document)}):"object"==typeof exports?(s=require("jquery"),c=function(e,t){t.fn.dataTable||require("datatables.net")(e,t)},"undefined"==typeof window?module.exports=function(e,t){return e=e||window,t=t||s(e),c(e,t),l(t,e,e.document)}:(c(window,s),module.exports=l(s,window,window.document))):l(jQuery,window,document)}(function(m,i,e,h){"use strict";var _=m.fn.dataTable;function r(n,e,t){function l(t,l){l<t&&(e=l,l=t,t=e);var e,s=!1;return n.columns(":visible").indexes().filter(function(e){return e===t&&(s=!0),e===l?!(s=!1):s})}function s(t,l){var e,s=n.rows({search:"applied"}).indexes(),c=(s.indexOf(t)>s.indexOf(l)&&(e=l,l=t,t=e),!1);return s.filter(function(e){return e===t&&(c=!0),e===l?!(c=!1):c})}var c,t=n.cells({selected:!0}).any()||t?(c=l(t.column,e.column),s(t.row,e.row)):(c=l(0,e.column),s(0,e.row)),t=n.cells(t,c).flatten();n.cells(e,{selected:!0}).any()?n.cells(t).deselect():n.cells(t).select()}function s(e){var t=e.settings()[0]._select.selector;m(e.table().container()).off("mousedown.dtSelect",t).off("mouseup.dtSelect",t).off("click.dtSelect",t),m("body").off("click.dtSelect"+p(e.table().node()))}function c(o){var a,t=m(o.table().container()),l=o.settings()[0],s=l._select.selector;t.on("mousedown.dtSelect",s,function(e){(e.shiftKey||e.metaKey||e.ctrlKey)&&t.css("-moz-user-select","none").one("selectstart.dtSelect",s,function(){return!1}),i.getSelection&&(a=i.getSelection())}).on("mouseup.dtSelect",s,function(){t.css("-moz-user-select","")}).on("click.dtSelect",s,function(e){var t,l=o.select.items();if(a){var s=i.getSelection();if((!s.anchorNode||m(s.anchorNode).closest("table")[0]===o.table().node())&&s!==a)return}var c,s=o.settings()[0],n=o.settings()[0].oClasses.sWrapper.trim().replace(/ +/g,".");m(e.target).closest("div."+n)[0]==o.table().container()&&(n=o.cell(m(e.target).closest("td, th"))).any()&&(c=m.Event("user-select.dt"),u(o,c,[l,n,e]),c.isDefaultPrevented()||(c=n.index(),"row"===l?(t=c.row,w(e,o,s,"row",t)):"column"===l?(t=n.index().column,w(e,o,s,"column",t)):"cell"===l&&(t=n.index(),w(e,o,s,"cell",t)),s._select_lastCell=c))}),m("body").on("click.dtSelect"+p(o.table().node()),function(e){var t;!l._select.blurable||m(e.target).parents().filter(o.table().container()).length||0===m(e.target).parents("html").length||m(e.target).parents("div.DTE").length||(t=m.Event("select-blur.dt"),u(o,t,[e.target,e]),t.isDefaultPrevented()||f(l,!0))})}function u(e,t,l,s){s&&!e.flatten().length||("string"==typeof t&&(t+=".dt"),l.unshift(e),m(e.table().node()).trigger(t,l))}function n(o){var i=new _.Api(o);o._select_init=!0,o.aoRowCreatedCallback.push({fn:function(e,t,l){var s,c,n=o.aoData[l];for(n._select_selected&&m(e).addClass(o._select.className),s=0,c=o.aoColumns.length;s<c;s++)(o.aoColumns[s]._select_selected||n._selected_cells&&n._selected_cells[s])&&m(n.anCells[s]).addClass(o._select.className)},sName:"select-deferRender"}),i.on("preXhr.dt.dtSelect",function(e,t){var l,s;t===i.settings()[0]&&(l=i.rows({selected:!0}).ids(!0).filter(function(e){return e!==h}),s=i.cells({selected:!0}).eq(0).map(function(e){var t=i.row(e.row).id(!0);return t?{row:t,column:e.column}:h}).filter(function(e){return e!==h}),i.one("draw.dt.dtSelect",function(){i.rows(l).select(),s.any()&&s.each(function(e){i.cells(e.row,e.column).select()})}))}),i.on("draw.dtSelect.dt select.dtSelect.dt deselect.dtSelect.dt info.dt",function(){var s,c,n,o,a,e;(e=(s=i).settings()[0])._select.info&&e.aanFeatures.i&&"api"!==s.select.style()&&(c=s.rows({selected:!0}).flatten().length,n=s.columns({selected:!0}).flatten().length,o=s.cells({selected:!0}).flatten().length,a=function(e,t,l){e.append(m('<span class="select-item"/>').append(s.i18n("select."+t+"s",{_:"%d "+t+"s selected",0:"",1:"1 "+t+" selected"},l)))},m.each(e.aanFeatures.i,function(e,t){t=m(t);var l=m('<span class="select-info"/>'),s=(a(l,"row",c),a(l,"column",n),a(l,"cell",o),t.children("span.select-info"));s.length&&s.remove(),""!==l.text()&&t.append(l)})),i.state.save()}),i.on("destroy.dtSelect",function(){m(i.rows({selected:!0}).nodes()).removeClass(i.settings()[0]._select.className),s(i),i.off(".dtSelect"),m("body").off(".dtSelect"+p(i.table().node()))})}function d(e,t,l,s){var c,n=e[t+"s"]({search:"applied"}).indexes(),s=m.inArray(s,n),o=m.inArray(l,n);e[t+"s"]({selected:!0}).any()||-1!==s?(o<s&&(c=o,o=s,s=c),n.splice(o+1,n.length),n.splice(0,s)):n.splice(m.inArray(l,n)+1,n.length),e[t](l,{selected:!0}).any()?(n.splice(m.inArray(l,n),1),e[t+"s"](n).deselect()):e[t+"s"](n).select()}function f(e,t){!t&&"single"!==e._select.style||((t=new _.Api(e)).rows({selected:!0}).deselect(),t.columns({selected:!0}).deselect(),t.cells({selected:!0}).deselect())}function w(e,t,l,s,c){var n=t.select.style(),o=t.select.toggleable(),a=t[s](c,{selected:!0}).any();a&&!o||("os"===n?e.ctrlKey||e.metaKey?t[s](c).select(!a):e.shiftKey?"cell"===s?r(t,c,l._select_lastCell||null):d(t,s,c,l._select_lastCell?l._select_lastCell[s]:null):(o=t[s+"s"]({selected:!0}),a&&1===o.flatten().length?t[s](c).deselect():(o.deselect(),t[s](c).select())):"multi+shift"==n&&e.shiftKey?"cell"===s?r(t,c,l._select_lastCell||null):d(t,s,c,l._select_lastCell?l._select_lastCell[s]:null):t[s](c).select(!a))}function p(e){return e.id.replace(/[^a-zA-Z0-9\-\_]/g,"-")}_.select={},_.select.version="1.7.0-dev",_.select.init=function(c){var e,t,l,s,n,o,a,i,r,u,d,f=c.settings()[0];f._select||(e=c.state.loaded(),t=function(e,t,l){if(null!==l&&l.select!==h){if(c.rows({selected:!0}).any()&&c.rows().deselect(),l.select.rows!==h&&c.rows(l.select.rows).select(),c.columns({selected:!0}).any()&&c.columns().deselect(),l.select.columns!==h&&c.columns(l.select.columns).select(),c.cells({selected:!0}).any()&&c.cells().deselect(),l.select.cells!==h)for(var s=0;s<l.select.cells.length;s++)c.cell(l.select.cells[s].row,l.select.cells[s].column).select();c.state.save()}},c.on("stateSaveParams",function(e,t,l){l.select={},l.select.rows=c.rows({selected:!0}).ids(!0).toArray(),l.select.columns=c.columns({selected:!0})[0],l.select.cells=c.cells({selected:!0})[0].map(function(e){return{row:c.row(e.row).id(!0),column:e.column}})}).on("stateLoadParams",t).one("init",function(){t(0,0,e)}),s=f.oInit.select,l=_.defaults.select,l=s===h?l:s,s="row",i=a=!(o=!(n="api")),r="td, th",d=!(u="selected"),f._select={},!0===l?(n="os",d=!0):"string"==typeof l?(n=l,d=!0):m.isPlainObject(l)&&(l.blurable!==h&&(o=l.blurable),l.toggleable!==h&&(a=l.toggleable),l.info!==h&&(i=l.info),l.items!==h&&(s=l.items),d=(n=l.style!==h?l.style:"os",!0),l.selector!==h&&(r=l.selector),l.className!==h&&(u=l.className)),c.select.selector(r),c.select.items(s),c.select.style(n),c.select.blurable(o),c.select.toggleable(a),c.select.info(i),f._select.className=u,m.fn.dataTable.ext.order["select-checkbox"]=function(t,e){return this.api().column(e,{order:"index"}).nodes().map(function(e){return"row"===t._select.items?m(e).parent().hasClass(t._select.className):"cell"===t._select.items&&m(e).hasClass(t._select.className)})},!d&&m(c.table().node()).hasClass("selectable")&&c.select.style("os"))},m.each([{type:"row",prop:"aoData"},{type:"column",prop:"aoColumns"}],function(e,i){_.ext.selector[i.type].push(function(e,t,l){var s,c=t.selected,n=[];if(!0!==c&&!1!==c)return l;for(var o=0,a=l.length;o<a;o++)s=e[i.prop][l[o]],(!0===c&&!0===s._select_selected||!1===c&&!s._select_selected)&&n.push(l[o]);return n})}),_.ext.selector.cell.push(function(e,t,l){var s,c=t.selected,n=[];if(c===h)return l;for(var o=0,a=l.length;o<a;o++)s=e.aoData[l[o].row],(!0!==c||!s._selected_cells||!0!==s._selected_cells[l[o].column])&&(!1!==c||s._selected_cells&&s._selected_cells[l[o].column])||n.push(l[o]);return n});var t=_.Api.register,l=_.Api.registerPlural;function o(t,l){return function(e){return e.i18n("buttons."+t,l)}}function a(e){e=e._eventNamespace;return"draw.dt.DT"+e+" select.dt.DT"+e+" deselect.dt.DT"+e}t("select()",function(){return this.iterator("table",function(e){_.select.init(new _.Api(e))})}),t("select.blurable()",function(t){return t===h?this.context[0]._select.blurable:this.iterator("table",function(e){e._select.blurable=t})}),t("select.toggleable()",function(t){return t===h?this.context[0]._select.toggleable:this.iterator("table",function(e){e._select.toggleable=t})}),t("select.info()",function(t){return t===h?this.context[0]._select.info:this.iterator("table",function(e){e._select.info=t})}),t("select.items()",function(t){return t===h?this.context[0]._select.items:this.iterator("table",function(e){e._select.items=t,u(new _.Api(e),"selectItems",[t])})}),t("select.style()",function(l){return l===h?this.context[0]._select.style:this.iterator("table",function(e){e._select||_.select.init(new _.Api(e)),e._select_init||n(e),e._select.style=l;var t=new _.Api(e);s(t),"api"!==l&&c(t),u(new _.Api(e),"selectStyle",[l])})}),t("select.selector()",function(t){return t===h?this.context[0]._select.selector:this.iterator("table",function(e){s(new _.Api(e)),e._select.selector=t,"api"!==e._select.style&&c(new _.Api(e))})}),l("rows().select()","row().select()",function(e){var l=this;return!1===e?this.deselect():(this.iterator("row",function(e,t){f(e),e.aoData[t]._select_selected=!0,m(e.aoData[t].nTr).addClass(e._select.className)}),this.iterator("table",function(e,t){u(l,"select",["row",l[t]],!0)}),this)}),t("row().selected()",function(){var e=this.context[0];return!!(e&&this.length&&e.aoData[this[0]]&&e.aoData[this[0]]._select_selected)}),l("columns().select()","column().select()",function(e){var l=this;return!1===e?this.deselect():(this.iterator("column",function(e,t){f(e),e.aoColumns[t]._select_selected=!0;t=new _.Api(e).column(t);m(t.header()).addClass(e._select.className),m(t.footer()).addClass(e._select.className),t.nodes().to$().addClass(e._select.className)}),this.iterator("table",function(e,t){u(l,"select",["column",l[t]],!0)}),this)}),t("column().selected()",function(){var e=this.context[0];return!!(e&&this.length&&e.aoColumns[this[0]]&&e.aoColumns[this[0]]._select_selected)}),l("cells().select()","cell().select()",function(e){var l=this;return!1===e?this.deselect():(this.iterator("cell",function(e,t,l){f(e);t=e.aoData[t];t._selected_cells===h&&(t._selected_cells=[]),t._selected_cells[l]=!0,t.anCells&&m(t.anCells[l]).addClass(e._select.className)}),this.iterator("table",function(e,t){u(l,"select",["cell",l.cells(l[t]).indexes().toArray()],!0)}),this)}),t("cell().selected()",function(){var e=this.context[0];if(e&&this.length){e=e.aoData[this[0][0].row];if(e&&e._selected_cells&&e._selected_cells[this[0][0].column])return!0}return!1}),l("rows().deselect()","row().deselect()",function(){var l=this;return this.iterator("row",function(e,t){e.aoData[t]._select_selected=!1,e._select_lastCell=null,m(e.aoData[t].nTr).removeClass(e._select.className)}),this.iterator("table",function(e,t){u(l,"deselect",["row",l[t]],!0)}),this}),l("columns().deselect()","column().deselect()",function(){var l=this;return this.iterator("column",function(s,e){s.aoColumns[e]._select_selected=!1;var t=new _.Api(s),l=t.column(e);m(l.header()).removeClass(s._select.className),m(l.footer()).removeClass(s._select.className),t.cells(null,e).indexes().each(function(e){var t=s.aoData[e.row],l=t._selected_cells;!t.anCells||l&&l[e.column]||m(t.anCells[e.column]).removeClass(s._select.className)})}),this.iterator("table",function(e,t){u(l,"deselect",["column",l[t]],!0)}),this}),l("cells().deselect()","cell().deselect()",function(){var l=this;return this.iterator("cell",function(e,t,l){t=e.aoData[t];t._selected_cells!==h&&(t._selected_cells[l]=!1),t.anCells&&!e.aoColumns[l]._select_selected&&m(t.anCells[l]).removeClass(e._select.className)}),this.iterator("table",function(e,t){u(l,"deselect",["cell",l[t]],!0)}),this});var v=0;return m.extend(_.ext.buttons,{selected:{text:o("selected","Selected"),className:"buttons-selected",limitTo:["rows","columns","cells"],init:function(l,e,s){var c=this;s._eventNamespace=".select"+v++,l.on(a(s),function(){var e,t;c.enable((e=l,t=s,!(-1===m.inArray("rows",t.limitTo)||!e.rows({selected:!0}).any())||(!(-1===m.inArray("columns",t.limitTo)||!e.columns({selected:!0}).any())||!(-1===m.inArray("cells",t.limitTo)||!e.cells({selected:!0}).any()))))}),this.disable()},destroy:function(e,t,l){e.off(l._eventNamespace)}},selectedSingle:{text:o("selectedSingle","Selected single"),className:"buttons-selected-single",init:function(t,e,l){var s=this;l._eventNamespace=".select"+v++,t.on(a(l),function(){var e=t.rows({selected:!0}).flatten().length+t.columns({selected:!0}).flatten().length+t.cells({selected:!0}).flatten().length;s.enable(1===e)}),this.disable()},destroy:function(e,t,l){e.off(l._eventNamespace)}},selectAll:{text:o("selectAll","Select all"),className:"buttons-select-all",action:function(e,t,l,s){var c=this.select.items(),n=s.selectorModifier;(n?("function"==typeof n&&(n=n.call(t,e,t,l,s)),this[c+"s"](n)):this[c+"s"]()).select()}},selectNone:{text:o("selectNone","Deselect all"),className:"buttons-select-none",action:function(){f(this.settings()[0],!0)},init:function(t,e,l){var s=this;l._eventNamespace=".select"+v++,t.on(a(l),function(){var e=t.rows({selected:!0}).flatten().length+t.columns({selected:!0}).flatten().length+t.cells({selected:!0}).flatten().length;s.enable(0<e)}),this.disable()},destroy:function(e,t,l){e.off(l._eventNamespace)}},showSelected:{text:o("showSelected","Show only selected"),className:"buttons-show-selected",action:function(e,s,t,l){var c;l._filter?(-1!==(c=_.ext.search.indexOf(l._filter))&&(_.ext.search.splice(c,1),l._filter=null),this.active(!1)):(l._filter=c=function(e,t,l){return e!==s.settings()[0]||e.aoData[l]._select_selected},_.ext.search.push(c),this.active(!0)),s.draw()}}}),m.each(["Row","Column","Cell"],function(e,t){var c=t.toLowerCase();_.ext.buttons["select"+t+"s"]={text:o("select"+t+"s","Select "+c+"s"),className:"buttons-select-"+c+"s",action:function(){this.select.items(c)},init:function(e){var s=this;e.on("selectItems.dt.DT",function(e,t,l){s.active(l===c)})}}}),m.fn.DataTable.select=_.select,m(e).on("preInit.dt.dtSelect",function(e,t){"dt"===e.namespace&&_.select.init(new _.Api(t))}),_});
4
+ !function(l){var s,c;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(e){return l(e,window,document)}):"object"==typeof exports?(s=require("jquery"),c=function(e,t){t.fn.dataTable||require("datatables.net")(e,t)},"undefined"==typeof window?module.exports=function(e,t){return e=e||window,t=t||s(e),c(e,t),l(t,e,e.document)}:(c(window,s),module.exports=l(s,window,window.document))):l(jQuery,window,document)}(function(m,i,e){"use strict";var _=m.fn.dataTable;function r(n,e,t){function l(t,l){l<t&&(e=l,l=t,t=e);var e,s=!1;return n.columns(":visible").indexes().filter(function(e){return e===t&&(s=!0),e===l?!(s=!1):s})}function s(t,l){var e,s=n.rows({search:"applied"}).indexes(),c=(s.indexOf(t)>s.indexOf(l)&&(e=l,l=t,t=e),!1);return s.filter(function(e){return e===t&&(c=!0),e===l?!(c=!1):c})}var c,t=n.cells({selected:!0}).any()||t?(c=l(t.column,e.column),s(t.row,e.row)):(c=l(0,e.column),s(0,e.row)),t=n.cells(t,c).flatten();n.cells(e,{selected:!0}).any()?n.cells(t).deselect():n.cells(t).select()}function s(e){var t=e.settings()[0]._select.selector;m(e.table().container()).off("mousedown.dtSelect",t).off("mouseup.dtSelect",t).off("click.dtSelect",t),m("body").off("click.dtSelect"+v(e.table().node()))}function n(o){var a,t=m(o.table().container()),l=o.settings()[0],s=l._select.selector;t.on("mousedown.dtSelect",s,function(e){(e.shiftKey||e.metaKey||e.ctrlKey)&&t.css("-moz-user-select","none").one("selectstart.dtSelect",s,function(){return!1}),i.getSelection&&(a=i.getSelection())}).on("mouseup.dtSelect",s,function(){t.css("-moz-user-select","")}).on("click.dtSelect",s,function(e){var t,l=o.select.items();if(a){var s=i.getSelection();if((!s.anchorNode||m(s.anchorNode).closest("table")[0]===o.table().node())&&s!==a)return}var c,s=o.settings()[0],n=o.table().container();m(e.target).closest("div.dt-container")[0]==n&&(n=o.cell(m(e.target).closest("td, th"))).any()&&(c=m.Event("user-select.dt"),d(o,c,[l,n,e]),c.isDefaultPrevented()||(c=n.index(),"row"===l?(t=c.row,h(e,o,s,"row",t)):"column"===l?(t=n.index().column,h(e,o,s,"column",t)):"cell"===l&&(t=n.index(),h(e,o,s,"cell",t)),s._select_lastCell=c))}),m("body").on("click.dtSelect"+v(o.table().node()),function(e){var t;!l._select.blurable||m(e.target).parents().filter(o.table().container()).length||0===m(e.target).parents("html").length||m(e.target).parents("div.DTE").length||(t=m.Event("select-blur.dt"),d(o,t,[e.target,e]),t.isDefaultPrevented())||f(l,!0)})}function d(e,t,l,s){s&&!e.flatten().length||("string"==typeof t&&(t+=".dt"),l.unshift(e),m(e.table().node()).trigger(t,l))}function a(s,e){var t,l,c,n,o;"api"!==s.select.style()&&!1!==s.select.info()&&(o=s.rows({selected:!0}).flatten().length,t=s.columns({selected:!0}).flatten().length,l=s.cells({selected:!0}).flatten().length,c=function(e,t,l){e.append(m('<span class="select-item"/>').append(s.i18n("select."+t+"s",{_:"%d "+t+"s selected",0:"",1:"1 "+t+" selected"},l)))},e=m(e),c(n=m('<span class="select-info"/>'),"row",o),c(n,"column",t),c(n,"cell",l),(o=e.children("span.select-info")).length&&o.remove(),""!==n.text())&&e.append(n)}function p(o){o.columns(".dt-select").every(function(){var n,e=this.header();m("input",e).length||(n=m("<input>").attr({class:"dt-select-checkbox",type:"checkbox","aria-label":o.i18n("select.aria.headerCheckbox")||"Select all rows"}).appendTo(e).on("change",function(){this.checked?o.rows({search:"applied"}).select():o.rows({selected:!0}).deselect()}).on("click",function(e){e.stopPropagation()}),o.on("draw select deselect",function(e,t,l){var s,c;"row"!==l&&l||(l=o.rows({selected:!0}).count(),s=o.rows({search:"applied",selected:!0}).count(),c=o.rows({search:"applied"}).count(),s&&s<=l&&s===c?n.prop("checked",!0).prop("indeterminate",!1):0===s&&0===l?n.prop("checked",!1).prop("indeterminate",!1):n.prop("checked",!1).prop("indeterminate",!0))}))})}function u(e,t,l,s){var c,n=e[t+"s"]({search:"applied"}).indexes(),s=n.indexOf(s),o=n.indexOf(l);e[t+"s"]({selected:!0}).any()||-1!==s?(o<s&&(c=o,o=s,s=c),n.splice(o+1,n.length),n.splice(0,s)):n.splice(n.indexOf(l)+1,n.length),e[t](l,{selected:!0}).any()?(n.splice(n.indexOf(l),1),e[t+"s"](n).deselect()):e[t+"s"](n).select()}function f(e,t){!t&&"single"!==e._select.style||((t=new _.Api(e)).rows({selected:!0}).deselect(),t.columns({selected:!0}).deselect(),t.cells({selected:!0}).deselect())}function h(e,t,l,s,c){var n=t.select.style(),o=t.select.toggleable(),a=t[s](c,{selected:!0}).any();a&&!o||("os"===n?e.ctrlKey||e.metaKey?t[s](c).select(!a):e.shiftKey?"cell"===s?r(t,c,l._select_lastCell||null):u(t,s,c,l._select_lastCell?l._select_lastCell[s]:null):(o=t[s+"s"]({selected:!0}),a&&1===o.flatten().length?t[s](c).deselect():(o.deselect(),t[s](c).select())):"multi+shift"==n&&e.shiftKey?"cell"===s?r(t,c,l._select_lastCell||null):u(t,s,c,l._select_lastCell?l._select_lastCell[s]:null):t[s](c).select(!a))}function v(e){return e.id.replace(/[^a-zA-Z0-9\-\_]/g,"-")}_.select={},_.select.version="2.0.1",_.select.init=function(c){var e,t,l,s,n,o,a,i,r,d,u,f,h=c.settings()[0];if(!_.versionCheck("2"))throw"Warning: Select requires DataTables 2 or newer";h._select||(e=c.state.loaded(),t=function(e,t,l){if(null!==l&&void 0!==l.select){if(c.rows({selected:!0}).any()&&c.rows().deselect(),void 0!==l.select.rows&&c.rows(l.select.rows).select(),c.columns({selected:!0}).any()&&c.columns().deselect(),void 0!==l.select.columns&&c.columns(l.select.columns).select(),c.cells({selected:!0}).any()&&c.cells().deselect(),void 0!==l.select.cells)for(var s=0;s<l.select.cells.length;s++)c.cell(l.select.cells[s].row,l.select.cells[s].column).select();c.state.save()}},c.on("stateSaveParams",function(e,t,l){l.select={},l.select.rows=c.rows({selected:!0}).ids(!0).toArray(),l.select.columns=c.columns({selected:!0})[0],l.select.cells=c.cells({selected:!0})[0].map(function(e){return{row:c.row(e.row).id(!0),column:e.column}})}).on("stateLoadParams",t).one("init",function(){t(0,0,e)}),s=h.oInit.select,l=_.defaults.select,l=void 0===s?l:s,s="row",r="td, th",d="selected",f=!(u=i=a=!(o=!(n="api"))),h._select={infoEls:[]},!0===l?(n="os",f=!0):"string"==typeof l?(n=l,f=!0):m.isPlainObject(l)&&(void 0!==l.blurable&&(o=l.blurable),void 0!==l.toggleable&&(a=l.toggleable),void 0!==l.info&&(i=l.info),void 0!==l.items&&(s=l.items),f=(n=void 0!==l.style?l.style:"os",!0),void 0!==l.selector&&(r=l.selector),void 0!==l.className&&(d=l.className),void 0!==l.headerCheckbox)&&(u=l.headerCheckbox),c.select.selector(r),c.select.items(s),c.select.style(n),c.select.blurable(o),c.select.toggleable(a),c.select.info(i),h._select.className=d,!f&&m(c.table().node()).hasClass("selectable")&&c.select.style("os"),u&&(p(c),c.on("init",function(){p(c)})))},m.each([{type:"row",prop:"aoData"},{type:"column",prop:"aoColumns"}],function(e,i){_.ext.selector[i.type].push(function(e,t,l){var s,c=t.selected,n=[];if(!0!==c&&!1!==c)return l;for(var o=0,a=l.length;o<a;o++)(s=e[i.prop][l[o]])&&(!0===c&&!0===s._select_selected||!1===c&&!s._select_selected)&&n.push(l[o]);return n})}),_.ext.selector.cell.push(function(e,t,l){var s,c=t.selected,n=[];if(void 0===c)return l;for(var o=0,a=l.length;o<a;o++)(s=e.aoData[l[o].row])&&(!0===c&&s._selected_cells&&!0===s._selected_cells[l[o].column]||!1===c&&(!s._selected_cells||!s._selected_cells[l[o].column]))&&n.push(l[o]);return n});var t=_.Api.register,l=_.Api.registerPlural;function o(t,l){return function(e){return e.i18n("buttons."+t,l)}}function w(e){e=e._eventNamespace;return"draw.dt.DT"+e+" select.dt.DT"+e+" deselect.dt.DT"+e}t("select()",function(){return this.iterator("table",function(e){_.select.init(new _.Api(e))})}),t("select.blurable()",function(t){return void 0===t?this.context[0]._select.blurable:this.iterator("table",function(e){e._select.blurable=t})}),t("select.toggleable()",function(t){return void 0===t?this.context[0]._select.toggleable:this.iterator("table",function(e){e._select.toggleable=t})}),t("select.info()",function(t){return void 0===t?this.context[0]._select.info:this.iterator("table",function(e){e._select.info=t})}),t("select.items()",function(t){return void 0===t?this.context[0]._select.items:this.iterator("table",function(e){e._select.items=t,d(new _.Api(e),"selectItems",[t])})}),t("select.style()",function(l){return void 0===l?this.context[0]._select.style:this.iterator("table",function(e){e._select||_.select.init(new _.Api(e)),e._select_init||(o=e,c=new _.Api(o),o._select_init=!0,o.aoRowCreatedCallback.push(function(e,t,l){var s,c,n=o.aoData[l];for(n._select_selected&&m(e).addClass(o._select.className).find("input.dt-select-checkbox").prop("checked",!0),s=0,c=o.aoColumns.length;s<c;s++)(o.aoColumns[s]._select_selected||n._selected_cells&&n._selected_cells[s])&&m(n.anCells[s]).addClass(o._select.className)}),c.on("preXhr.dt.dtSelect",function(e,t){var l,s;t===c.settings()[0]&&(l=c.rows({selected:!0}).ids(!0).filter(function(e){return void 0!==e}),s=c.cells({selected:!0}).eq(0).map(function(e){var t=c.row(e.row).id(!0);return t?{row:t,column:e.column}:void 0}).filter(function(e){return void 0!==e}),c.one("draw.dt.dtSelect",function(){c.rows(l).select(),s.any()&&s.each(function(e){c.cells(e.row,e.column).select()})}))}),c.on("info.dt",function(e,t,l){t._select.infoEls.includes(l)||t._select.infoEls.push(l),a(c,l)}),c.on("select.dtSelect.dt deselect.dtSelect.dt",function(){o._select.infoEls.forEach(function(e){a(c,e)}),c.state.save()}),c.on("destroy.dtSelect",function(){m(c.rows({selected:!0}).nodes()).removeClass(c.settings()[0]._select.className),s(c),c.off(".dtSelect"),m("body").off(".dtSelect"+v(c.table().node()))})),e._select.style=l;var o,c,t=new _.Api(e);s(t),"api"!==l&&n(t),d(new _.Api(e),"selectStyle",[l])})}),t("select.selector()",function(t){return void 0===t?this.context[0]._select.selector:this.iterator("table",function(e){s(new _.Api(e)),e._select.selector=t,"api"!==e._select.style&&n(new _.Api(e))})}),t("select.last()",function(e){var t=this.context[0];return e?(t._select_lastCell=e,this):t._select_lastCell}),l("rows().select()","row().select()",function(e){var o=this;return!1===e?this.deselect():(this.iterator("row",function(e,t){f(e);var l=e.aoData[t],s=e.aoColumns;m(l.nTr).addClass(e._select.className),l._select_selected=!0;for(var c=0;c<s.length;c++){var n=s[c];null===n.sType&&o.columns().types(),"select-checkbox"===n.sType&&((n=l.anCells)&&n[c]&&m("input.dt-select-checkbox",n[c]).prop("checked",!0),null!==l._aSortData)&&(l._aSortData[c]=null)}}),this.iterator("table",function(e,t){d(o,"select",["row",o[t]],!0)}),this)}),t("row().selected()",function(){var e=this.context[0];return!!(e&&this.length&&e.aoData[this[0]]&&e.aoData[this[0]]._select_selected)}),l("columns().select()","column().select()",function(e){var l=this;return!1===e?this.deselect():(this.iterator("column",function(e,t){f(e),e.aoColumns[t]._select_selected=!0;t=new _.Api(e).column(t);m(t.header()).addClass(e._select.className),m(t.footer()).addClass(e._select.className),t.nodes().to$().addClass(e._select.className)}),this.iterator("table",function(e,t){d(l,"select",["column",l[t]],!0)}),this)}),t("column().selected()",function(){var e=this.context[0];return!!(e&&this.length&&e.aoColumns[this[0]]&&e.aoColumns[this[0]]._select_selected)}),l("cells().select()","cell().select()",function(e){var l=this;return!1===e?this.deselect():(this.iterator("cell",function(e,t,l){f(e);t=e.aoData[t];void 0===t._selected_cells&&(t._selected_cells=[]),t._selected_cells[l]=!0,t.anCells&&m(t.anCells[l]).addClass(e._select.className)}),this.iterator("table",function(e,t){d(l,"select",["cell",l.cells(l[t]).indexes().toArray()],!0)}),this)}),t("cell().selected()",function(){var e=this.context[0];if(e&&this.length){e=e.aoData[this[0][0].row];if(e&&e._selected_cells&&e._selected_cells[this[0][0].column])return!0}return!1}),l("rows().deselect()","row().deselect()",function(){var o=this;return this.iterator("row",function(e,t){var l=e.aoData[t],s=e.aoColumns;m(l.nTr).removeClass(e._select.className),l._select_selected=!1,e._select_lastCell=null;for(var c=0;c<s.length;c++){var n=s[c];null===n.sType&&o.columns().types(),"select-checkbox"===n.sType&&((n=l.anCells)&&n[c]&&m("input.dt-select-checkbox",l.anCells[c]).prop("checked",!1),null!==l._aSortData)&&(l._aSortData[c]=null)}}),this.iterator("table",function(e,t){d(o,"deselect",["row",o[t]],!0)}),this}),l("columns().deselect()","column().deselect()",function(){var l=this;return this.iterator("column",function(s,e){s.aoColumns[e]._select_selected=!1;var t=new _.Api(s),l=t.column(e);m(l.header()).removeClass(s._select.className),m(l.footer()).removeClass(s._select.className),t.cells(null,e).indexes().each(function(e){var t=s.aoData[e.row],l=t._selected_cells;!t.anCells||l&&l[e.column]||m(t.anCells[e.column]).removeClass(s._select.className)})}),this.iterator("table",function(e,t){d(l,"deselect",["column",l[t]],!0)}),this}),l("cells().deselect()","cell().deselect()",function(){var l=this;return this.iterator("cell",function(e,t,l){t=e.aoData[t];void 0!==t._selected_cells&&(t._selected_cells[l]=!1),t.anCells&&!e.aoColumns[l]._select_selected&&m(t.anCells[l]).removeClass(e._select.className)}),this.iterator("table",function(e,t){d(l,"deselect",["cell",l[t]],!0)}),this});var b=0;return m.extend(_.ext.buttons,{selected:{text:o("selected","Selected"),className:"buttons-selected",limitTo:["rows","columns","cells"],init:function(l,e,s){var c=this;s._eventNamespace=".select"+b++,l.on(w(s),function(){var e,t;c.enable((e=l,!(-1===(t=s).limitTo.indexOf("rows")||!e.rows({selected:!0}).any())||!(-1===t.limitTo.indexOf("columns")||!e.columns({selected:!0}).any())||!(-1===t.limitTo.indexOf("cells")||!e.cells({selected:!0}).any())))}),this.disable()},destroy:function(e,t,l){e.off(l._eventNamespace)}},selectedSingle:{text:o("selectedSingle","Selected single"),className:"buttons-selected-single",init:function(t,e,l){var s=this;l._eventNamespace=".select"+b++,t.on(w(l),function(){var e=t.rows({selected:!0}).flatten().length+t.columns({selected:!0}).flatten().length+t.cells({selected:!0}).flatten().length;s.enable(1===e)}),this.disable()},destroy:function(e,t,l){e.off(l._eventNamespace)}},selectAll:{text:o("selectAll","Select all"),className:"buttons-select-all",action:function(e,t,l,s){var c=this.select.items(),n=s.selectorModifier;(n?("function"==typeof n&&(n=n.call(t,e,t,l,s)),this[c+"s"](n)):this[c+"s"]()).select()}},selectNone:{text:o("selectNone","Deselect all"),className:"buttons-select-none",action:function(){f(this.settings()[0],!0)},init:function(t,e,l){var s=this;l._eventNamespace=".select"+b++,t.on(w(l),function(){var e=t.rows({selected:!0}).flatten().length+t.columns({selected:!0}).flatten().length+t.cells({selected:!0}).flatten().length;s.enable(0<e)}),this.disable()},destroy:function(e,t,l){e.off(l._eventNamespace)}},showSelected:{text:o("showSelected","Show only selected"),className:"buttons-show-selected",action:function(e,t){var s;t.search.fixed("dt-select")?(t.search.fixed("dt-select",null),this.active(!1)):(s=t.settings()[0].aoData,t.search.fixed("dt-select",function(e,t,l){return s[l]._select_selected}),this.active(!0)),t.draw()}}}),m.each(["Row","Column","Cell"],function(e,t){var c=t.toLowerCase();_.ext.buttons["select"+t+"s"]={text:o("select"+t+"s","Select "+c+"s"),className:"buttons-select-"+c+"s",action:function(){this.select.items(c)},init:function(e){var s=this;e.on("selectItems.dt.DT",function(e,t,l){s.active(l===c)})}}}),_.type("select-checkbox",{className:"dt-select",detect:function(e){return"select-checkbox"===e&&e},order:{pre:function(e){return"X"===e?-1:0}}}),m.extend(!0,_.defaults.oLanguage,{select:{aria:{rowCheckbox:"Select row"}}}),_.render.select=function(e,t){var n=e?_.util.get(e):null,o=t?_.util.get(t):null;return function(e,t,l,s){var c=s.settings.aoData[s.row]._select_selected,s=s.settings.oLanguage.select.aria.rowCheckbox;return"display"===t?m("<input>").attr({"aria-label":s,class:"dt-select-checkbox",name:o?o(l):null,type:"checkbox",value:n?n(l):null,checked:c})[0]:"type"===t?"select-checkbox":"filter"!==t&&c?"X":""}},_.ext.order["select-checkbox"]=function(t,e){return this.api().column(e,{order:"index"}).nodes().map(function(e){return"row"===t._select.items?m(e).parent().hasClass(t._select.className):"cell"===t._select.items&&m(e).hasClass(t._select.className)})},m.fn.DataTable.select=_.select,m(e).on("preInit.dt.dtSelect",function(e,t){"dt"===e.namespace&&_.select.init(new _.Api(t))}),_});