swh.web 0.16.2__py3-none-any.whl → 0.16.4__py3-none-any.whl

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.
Files changed (144) hide show
  1. swh/web/add_forge_now/templates/add-forge-request-dashboard.html +5 -2
  2. swh/web/api/views/origin.py +2 -2
  3. swh/web/archive_coverage/views.py +4 -7
  4. swh/web/badges/__init__.py +1 -1
  5. swh/web/badges/assets/index.js +40 -14
  6. swh/web/browse/assets/browse/browse.css +5 -0
  7. swh/web/browse/assets/browse/sidetabs.js +3 -16
  8. swh/web/browse/templates/browse-iframe.html +10 -7
  9. swh/web/browse/templates/browse-origin-visits.html +2 -2
  10. swh/web/browse/templates/browse-revision.html +5 -3
  11. swh/web/browse/templates/includes/content-display.html +10 -5
  12. swh/web/browse/templates/includes/readme-display.html +3 -2
  13. swh/web/browse/templates/includes/show-metadata.html +3 -2
  14. swh/web/browse/templates/includes/sidetabs.html +9 -7
  15. swh/web/browse/templates/includes/top-navigation.html +2 -1
  16. swh/web/browse/tests/views/test_origin.py +3 -1
  17. swh/web/deposit/templates/deposit-admin.html +6 -1
  18. swh/web/inbound_email/handle_message.py +1 -1
  19. swh/web/inbound_email/tests/test_utils.py +2 -2
  20. swh/web/save_code_now/assets/origin-save-admin.js +5 -2
  21. swh/web/save_code_now/assets/origin-save.js +9 -4
  22. swh/web/static/css/{archive_coverage.70eba3d32ed75472d638.css → archive_coverage.df54ae8fe40453ecd972.css} +2 -2
  23. swh/web/static/css/archive_coverage.df54ae8fe40453ecd972.css.map +1 -0
  24. swh/web/static/css/browse.633076034514e6a3977d.css +2 -0
  25. swh/web/static/css/browse.633076034514e6a3977d.css.map +1 -0
  26. swh/web/static/css/guided_tour.d496a0c252e1bb193496.css +2 -0
  27. swh/web/static/css/{guided_tour.62c03630e944b8b8d9ad.css.map → guided_tour.d496a0c252e1bb193496.css.map} +1 -1
  28. swh/web/static/css/{highlightjs.0c1b181eb006699a4c3e.css → highlightjs.37238c93749cb449800d.css} +2 -2
  29. swh/web/static/css/highlightjs.37238c93749cb449800d.css.map +1 -0
  30. swh/web/static/css/origin_visits.9a796c4df6606bd9905f.css +2 -0
  31. swh/web/static/css/origin_visits.9a796c4df6606bd9905f.css.map +1 -0
  32. swh/web/static/css/vendors.a4844da6ce54cbc04960.css +24 -0
  33. swh/web/static/css/vendors.a4844da6ce54cbc04960.css.map +1 -0
  34. swh/web/static/css/{webapp.4655323082740f1a4862.css → webapp.e995faa24f8c84db0d06.css} +2 -2
  35. swh/web/static/css/webapp.e995faa24f8c84db0d06.css.map +1 -0
  36. swh/web/static/js/add_forge_now.e85d09463e38c1e19632.js +3 -0
  37. swh/web/static/js/add_forge_now.e85d09463e38c1e19632.js.map +1 -0
  38. swh/web/static/js/auth.06c697ab58b81d08ebce.js +3 -0
  39. swh/web/static/js/auth.06c697ab58b81d08ebce.js.map +1 -0
  40. swh/web/static/js/badges.50941e27bf5e4453b0e0.js +3 -0
  41. swh/web/static/js/badges.50941e27bf5e4453b0e0.js.LICENSE.txt +6 -0
  42. swh/web/static/js/badges.50941e27bf5e4453b0e0.js.map +1 -0
  43. swh/web/static/js/browse.3f22819b69002c8b6407.js +3 -0
  44. swh/web/static/js/browse.3f22819b69002c8b6407.js.map +1 -0
  45. swh/web/static/js/deposit.d47e18177b16ccdbdb84.js.map +1 -1
  46. swh/web/static/js/{highlightjs.dc9b8354c69d942fad33.js → highlightjs.516e784a1e62011c7605.js} +3 -3
  47. swh/web/static/js/highlightjs.516e784a1e62011c7605.js.map +1 -0
  48. swh/web/static/js/mailmap.de04f685e56eff5b627f.js +3 -0
  49. swh/web/static/js/mailmap.de04f685e56eff5b627f.js.map +1 -0
  50. swh/web/static/js/mathjax.98ef576f318f1a0b0c4a.js.map +1 -1
  51. swh/web/static/js/pdf.worker.min.js +1 -1
  52. swh/web/static/js/pdfjs.018d9890c044b3612ece.js +3 -0
  53. swh/web/static/js/pdfjs.018d9890c044b3612ece.js.map +1 -0
  54. swh/web/static/js/{revision.ac9293e1b984b4d4d909.js → revision.122a31614a5f9abffc3c.js} +3 -3
  55. swh/web/static/js/revision.122a31614a5f9abffc3c.js.map +1 -0
  56. swh/web/static/js/save_code_now.d4d8fc47420a4badb683.js +3 -0
  57. swh/web/static/js/save_code_now.d4d8fc47420a4badb683.js.map +1 -0
  58. swh/web/static/js/vault.d2ec3dd1d84a8d038a6c.js +3 -0
  59. swh/web/static/js/vault.d2ec3dd1d84a8d038a6c.js.map +1 -0
  60. swh/web/static/js/vendors.f62cb86cf3b92ae280ee.js +3 -0
  61. swh/web/static/js/{vendors.2eeadf2e0831a7a82b6d.js.LICENSE.txt → vendors.f62cb86cf3b92ae280ee.js.LICENSE.txt} +5 -1
  62. swh/web/static/js/vendors.f62cb86cf3b92ae280ee.js.map +1 -0
  63. swh/web/static/js/webapp.e93873983e400db67bf8.js +3 -0
  64. swh/web/static/js/{webapp.26efc059a8f5fe204240.js.LICENSE.txt → webapp.e93873983e400db67bf8.js.LICENSE.txt} +1 -1
  65. swh/web/static/js/webapp.e93873983e400db67bf8.js.map +1 -0
  66. swh/web/static/jssources/@myriaddreamin/highlighter-typst/dist/esm/contrib/hljs/typst-lite.bundle.js +180 -111
  67. swh/web/static/jssources/assets/src/utils/functions.js +5 -5
  68. swh/web/static/jssources/core-js/LICENSE.txt +1 -1
  69. swh/web/static/jssources/core-js/internals/shared-store.js +3 -3
  70. swh/web/static/jssources/core-js/modules/es.object.group-by.js +2 -1
  71. swh/web/static/jssources/datatables.net/js/dataTables.mjs +108 -44
  72. swh/web/static/jssources/datatables.net-fixedheader/js/dataTables.fixedHeader.mjs +10 -4
  73. swh/web/static/jssources/datatables.net-fixedheader/node_modules/datatables.net/js/dataTables.mjs +14027 -0
  74. swh/web/static/jssources/datatables.net-fixedheader-bs5/node_modules/datatables.net/js/dataTables.mjs +14027 -0
  75. swh/web/static/jssources/datatables.net-fixedheader-bs5/node_modules/datatables.net-bs5/js/dataTables.bootstrap5.mjs +81 -0
  76. swh/web/static/jssources/dompurify/dist/purify.es.mjs +35 -12
  77. swh/web/static/jssources/highlightjs-line-numbers.js/src/highlightjs-line-numbers.js +1 -1
  78. swh/web/static/jssources/highlightjs-macaulay2/dist/macaulay2.min.js +3 -3
  79. swh/web/static/jssources/jslicenses.json +1 -1
  80. swh/web/static/jssources/pdfjs-dist/build/pdf.worker.mjs +885 -596
  81. swh/web/static/jssources/pdfjs-dist/legacy/build/pdf.mjs +4982 -4566
  82. swh/web/static/jssources/swh/web/badges/assets/index.js +40 -14
  83. swh/web/static/jssources/swh/web/browse/assets/browse/sidetabs.js +3 -16
  84. swh/web/static/jssources/swh/web/save_code_now/assets/origin-save-admin.js +5 -2
  85. swh/web/static/jssources/swh/web/save_code_now/assets/origin-save.js +9 -4
  86. swh/web/static/jssources/swh/web/vault/assets/vault-ui.js +6 -4
  87. swh/web/static/jssources/swh/web/webapp/assets/webapp/webapp-utils.js +18 -1
  88. swh/web/static/security.txt +3 -0
  89. swh/web/static/webpack-stats.json +240 -235
  90. swh/web/tests/views.py +9 -8
  91. swh/web/utils/archive.py +1 -1
  92. swh/web/utils/swh_templatetags.py +8 -13
  93. swh/web/vault/assets/vault-ui.js +6 -4
  94. swh/web/webapp/assets/webapp/webapp-utils.js +18 -1
  95. swh/web/webapp/assets/webapp/webapp.css +8 -0
  96. swh/web/webapp/templates/layout.html +13 -10
  97. swh/web/webapp/tests/test_views.py +16 -1
  98. {swh_web-0.16.2.dist-info → swh_web-0.16.4.dist-info}/METADATA +2 -3
  99. {swh_web-0.16.2.dist-info → swh_web-0.16.4.dist-info}/RECORD +112 -107
  100. swh/web/static/css/archive_coverage.70eba3d32ed75472d638.css.map +0 -1
  101. swh/web/static/css/browse.0a250d3b07ce628588a5.css +0 -2
  102. swh/web/static/css/browse.0a250d3b07ce628588a5.css.map +0 -1
  103. swh/web/static/css/guided_tour.62c03630e944b8b8d9ad.css +0 -2
  104. swh/web/static/css/highlightjs.0c1b181eb006699a4c3e.css.map +0 -1
  105. swh/web/static/css/origin_visits.88099d68a63f86af2f8e.css +0 -2
  106. swh/web/static/css/origin_visits.88099d68a63f86af2f8e.css.map +0 -1
  107. swh/web/static/css/vendors.1cfc8080eed63af482cf.css +0 -24
  108. swh/web/static/css/vendors.1cfc8080eed63af482cf.css.map +0 -1
  109. swh/web/static/css/webapp.4655323082740f1a4862.css.map +0 -1
  110. swh/web/static/js/add_forge_now.e25d1ad2ab6c45e60b67.js +0 -3
  111. swh/web/static/js/add_forge_now.e25d1ad2ab6c45e60b67.js.map +0 -1
  112. swh/web/static/js/auth.bd2f475f49caa9f84e99.js +0 -3
  113. swh/web/static/js/auth.bd2f475f49caa9f84e99.js.map +0 -1
  114. swh/web/static/js/badges.f02607179ad0264e7522.js +0 -2
  115. swh/web/static/js/badges.f02607179ad0264e7522.js.map +0 -1
  116. swh/web/static/js/browse.fc5d5fafca71e03d2add.js +0 -3
  117. swh/web/static/js/browse.fc5d5fafca71e03d2add.js.map +0 -1
  118. swh/web/static/js/highlightjs.dc9b8354c69d942fad33.js.map +0 -1
  119. swh/web/static/js/mailmap.631c53127ba5511ebda7.js +0 -3
  120. swh/web/static/js/mailmap.631c53127ba5511ebda7.js.map +0 -1
  121. swh/web/static/js/pdfjs.40675676ebcbdde8baab.js +0 -3
  122. swh/web/static/js/pdfjs.40675676ebcbdde8baab.js.map +0 -1
  123. swh/web/static/js/revision.ac9293e1b984b4d4d909.js.map +0 -1
  124. swh/web/static/js/save_code_now.369ff7f28aaf74e7728e.js +0 -3
  125. swh/web/static/js/save_code_now.369ff7f28aaf74e7728e.js.map +0 -1
  126. swh/web/static/js/vault.1229427aed95c78d4ee2.js +0 -3
  127. swh/web/static/js/vault.1229427aed95c78d4ee2.js.map +0 -1
  128. swh/web/static/js/vendors.2eeadf2e0831a7a82b6d.js +0 -3
  129. swh/web/static/js/vendors.2eeadf2e0831a7a82b6d.js.map +0 -1
  130. swh/web/static/js/webapp.26efc059a8f5fe204240.js +0 -3
  131. swh/web/static/js/webapp.26efc059a8f5fe204240.js.map +0 -1
  132. /swh/web/static/js/{add_forge_now.e25d1ad2ab6c45e60b67.js.LICENSE.txt → add_forge_now.e85d09463e38c1e19632.js.LICENSE.txt} +0 -0
  133. /swh/web/static/js/{auth.bd2f475f49caa9f84e99.js.LICENSE.txt → auth.06c697ab58b81d08ebce.js.LICENSE.txt} +0 -0
  134. /swh/web/static/js/{browse.fc5d5fafca71e03d2add.js.LICENSE.txt → browse.3f22819b69002c8b6407.js.LICENSE.txt} +0 -0
  135. /swh/web/static/js/{highlightjs.dc9b8354c69d942fad33.js.LICENSE.txt → highlightjs.516e784a1e62011c7605.js.LICENSE.txt} +0 -0
  136. /swh/web/static/js/{mailmap.631c53127ba5511ebda7.js.LICENSE.txt → mailmap.de04f685e56eff5b627f.js.LICENSE.txt} +0 -0
  137. /swh/web/static/js/{pdfjs.40675676ebcbdde8baab.js.LICENSE.txt → pdfjs.018d9890c044b3612ece.js.LICENSE.txt} +0 -0
  138. /swh/web/static/js/{revision.ac9293e1b984b4d4d909.js.LICENSE.txt → revision.122a31614a5f9abffc3c.js.LICENSE.txt} +0 -0
  139. /swh/web/static/js/{save_code_now.369ff7f28aaf74e7728e.js.LICENSE.txt → save_code_now.d4d8fc47420a4badb683.js.LICENSE.txt} +0 -0
  140. /swh/web/static/js/{vault.1229427aed95c78d4ee2.js.LICENSE.txt → vault.d2ec3dd1d84a8d038a6c.js.LICENSE.txt} +0 -0
  141. {swh_web-0.16.2.dist-info → swh_web-0.16.4.dist-info}/WHEEL +0 -0
  142. {swh_web-0.16.2.dist-info → swh_web-0.16.4.dist-info}/licenses/AUTHORS +0 -0
  143. {swh_web-0.16.2.dist-info → swh_web-0.16.4.dist-info}/licenses/LICENSE +0 -0
  144. {swh_web-0.16.2.dist-info → swh_web-0.16.4.dist-info}/top_level.txt +0 -0
@@ -1,4 +1,4 @@
1
- /*! DataTables 2.3.4
1
+ /*! DataTables 2.3.5
2
2
  * © SpryMedia Ltd - datatables.net/license
3
3
  */
4
4
 
@@ -2902,12 +2902,12 @@ function _fnInvalidate( settings, rowIdx, src, colIdx )
2902
2902
 
2903
2903
  // Max length string. Its a fairly cheep recalculation, so not worth
2904
2904
  // something more complicated
2905
- cols[ colIdx ].maxLenString = null;
2905
+ cols[ colIdx ].wideStrings = null;
2906
2906
  }
2907
2907
  else {
2908
2908
  for ( i=0, iLen=cols.length ; i<iLen ; i++ ) {
2909
2909
  cols[i].sType = null;
2910
- cols[i].maxLenString = null;
2910
+ cols[i].wideStrings = null;
2911
2911
  }
2912
2912
 
2913
2913
  // Update DataTables special `DT_*` attributes for the row
@@ -3448,6 +3448,14 @@ function _fnDraw( oSettings, ajaxComplete )
3448
3448
  {
3449
3449
  var iDataIndex = aiDisplay[j];
3450
3450
  var aoData = oSettings.aoData[ iDataIndex ];
3451
+
3452
+ // Row has been deleted - can't be displayed
3453
+ if (aoData === null)
3454
+ {
3455
+ continue;
3456
+ }
3457
+
3458
+ // Row node hasn't been created yet
3451
3459
  if ( aoData.nTr === null )
3452
3460
  {
3453
3461
  _fnCreateTr( oSettings, iDataIndex );
@@ -5373,7 +5381,7 @@ function _fnCalculateColumnWidths ( settings )
5373
5381
  visibleColumns = _fnGetColumns( settings, 'bVisible' ),
5374
5382
  tableWidthAttr = table.getAttribute('width'), // from DOM element
5375
5383
  tableContainer = table.parentNode,
5376
- i, column, columnIdx;
5384
+ i, j, column, columnIdx;
5377
5385
 
5378
5386
  var styleWidth = table.style.width;
5379
5387
  var containerWidth = _fnWrapperWidth(settings);
@@ -5407,17 +5415,16 @@ function _fnCalculateColumnWidths ( settings )
5407
5415
  false
5408
5416
  );
5409
5417
 
5410
- // Construct a single row, worst case, table with the widest
5411
- // node in the data, assign any user defined widths, then insert it into
5412
- // the DOM and allow the browser to do all the hard work of calculating
5413
- // table widths
5418
+ // Construct a worst case table with the widest, assign any user defined
5419
+ // widths, then insert it into the DOM and allow the browser to do all
5420
+ // the hard work of calculating table widths
5414
5421
  var tmpTable = $(table.cloneNode())
5415
5422
  .css( 'visibility', 'hidden' )
5423
+ .css( 'margin', 0 )
5416
5424
  .removeAttr( 'id' );
5417
5425
 
5418
5426
  // Clean up the table body
5419
5427
  tmpTable.append('<tbody/>')
5420
- var tr = $('<tr/>').appendTo( tmpTable.find('tbody') );
5421
5428
 
5422
5429
  // Clone the table header and footer - we can't use the header / footer
5423
5430
  // from the cloned table, since if scrolling is active, the table's
@@ -5457,23 +5464,37 @@ function _fnCalculateColumnWidths ( settings )
5457
5464
  }
5458
5465
  } );
5459
5466
 
5460
- // Find the widest piece of data for each column and put it into the table
5467
+ // Get the widest strings for each of the visible columns and add them to
5468
+ // our table to create a "worst case"
5469
+ var longestData = [];
5470
+
5461
5471
  for ( i=0 ; i<visibleColumns.length ; i++ ) {
5462
- columnIdx = visibleColumns[i];
5463
- column = columns[ columnIdx ];
5464
-
5465
- var longest = _fnGetMaxLenString(settings, columnIdx);
5466
- var autoClass = _ext.type.className[column.sType];
5467
- var text = longest + column.sContentPadding;
5468
- var insert = longest.indexOf('<') === -1
5469
- ? document.createTextNode(text)
5470
- : text
5471
-
5472
- $('<td/>')
5473
- .addClass(autoClass)
5474
- .addClass(column.sClass)
5475
- .append(insert)
5476
- .appendTo(tr);
5472
+ longestData.push(_fnGetWideStrings(settings, visibleColumns[i]));
5473
+ }
5474
+
5475
+ if (longestData.length) {
5476
+ for ( i=0 ; i<longestData[0].length ; i++ ) {
5477
+ var tr = $('<tr/>').appendTo( tmpTable.find('tbody') );
5478
+
5479
+ for ( j=0 ; j<visibleColumns.length ; j++ ) {
5480
+ columnIdx = visibleColumns[j];
5481
+ column = columns[ columnIdx ];
5482
+
5483
+ var longest = longestData[j][i] || '';
5484
+ var autoClass = _ext.type.className[column.sType];
5485
+ var padding = column.sContentPadding || (scrollX ? '-' : '');
5486
+ var text = longest + padding;
5487
+ var insert = longest.indexOf('<') === -1
5488
+ ? document.createTextNode(text)
5489
+ : text
5490
+
5491
+ $('<td/>')
5492
+ .addClass(autoClass)
5493
+ .addClass(column.sClass)
5494
+ .append(insert)
5495
+ .appendTo(tr);
5496
+ }
5497
+ }
5477
5498
  }
5478
5499
 
5479
5500
  // Tidy the temporary table - remove name attributes so there aren't
@@ -5612,19 +5633,31 @@ function _fnWrapperWidth(settings) {
5612
5633
  }
5613
5634
 
5614
5635
  /**
5615
- * Get the maximum strlen for each data column
5636
+ * Get the widest strings for each column.
5637
+ *
5638
+ * It is very difficult to determine what the widest string actually is due to variable character
5639
+ * width and kerning. Doing an exact calculation with the DOM or even Canvas would kill performance
5640
+ * and this is a critical point, so we use two techniques to determine a collection of the longest
5641
+ * strings from the column, which will likely contain the widest strings:
5642
+ *
5643
+ * 1) Get the top three longest strings from the column
5644
+ * 2) Get the top three widest words (i.e. an unbreakable phrase)
5645
+ *
5616
5646
  * @param {object} settings dataTables settings object
5617
5647
  * @param {int} colIdx column of interest
5618
- * @returns {string} string of the max length
5648
+ * @returns {string[]} Array of the longest strings
5619
5649
  * @memberof DataTable#oApi
5620
5650
  */
5621
- function _fnGetMaxLenString( settings, colIdx )
5651
+ function _fnGetWideStrings( settings, colIdx )
5622
5652
  {
5623
5653
  var column = settings.aoColumns[colIdx];
5624
5654
 
5625
- if (! column.maxLenString) {
5626
- var s, max='', maxLen = -1;
5627
-
5655
+ // Do we need to recalculate (i.e. was invalidated), or just use the cached data?
5656
+ if (! column.wideStrings) {
5657
+ var allStrings = [];
5658
+ var collection = [];
5659
+
5660
+ // Create an array with the string information for the column
5628
5661
  for ( var i=0, iLen=settings.aiDisplayMaster.length ; i<iLen ; i++ ) {
5629
5662
  var rowIdx = settings.aiDisplayMaster[i];
5630
5663
  var data = _fnGetRowDisplay(settings, rowIdx)[colIdx];
@@ -5639,21 +5672,49 @@ function _fnGetMaxLenString( settings, colIdx )
5639
5672
  .replace(/id=".*?"/g, '')
5640
5673
  .replace(/name=".*?"/g, '');
5641
5674
 
5642
- s = _stripHtml(cellString)
5675
+ var s = _stripHtml(cellString)
5643
5676
  .replace( /&nbsp;/g, ' ' );
5644
5677
 
5645
- if ( s.length > maxLen ) {
5646
- // We want the HTML in the string, but the length that
5647
- // is important is the stripped string
5648
- max = cellString;
5649
- maxLen = s.length;
5650
- }
5678
+ collection.push({
5679
+ str: s,
5680
+ len: s.length
5681
+ });
5682
+
5683
+ allStrings.push(s);
5651
5684
  }
5652
5685
 
5653
- column.maxLenString = max;
5686
+ // Order and then cut down to the size we need
5687
+ collection
5688
+ .sort(function (a, b) {
5689
+ return b.len - a.len;
5690
+ })
5691
+ .splice(3);
5692
+
5693
+ column.wideStrings = collection.map(function (item) {
5694
+ return item.str;
5695
+ });
5696
+
5697
+ // Longest unbroken string
5698
+ let parts = allStrings.join(' ').split(' ');
5699
+
5700
+ parts.sort(function (a, b) {
5701
+ return b.length - a.length;
5702
+ });
5703
+
5704
+ if (parts.length) {
5705
+ column.wideStrings.push(parts[0]);
5706
+ }
5707
+
5708
+ if (parts.length > 1) {
5709
+ column.wideStrings.push(parts[1]);
5710
+ }
5711
+
5712
+ if (parts.length > 2) {
5713
+ column.wideStrings.push(parts[3]);
5714
+ }
5654
5715
  }
5655
5716
 
5656
- return column.maxLenString;
5717
+ return column.wideStrings;
5657
5718
  }
5658
5719
 
5659
5720
 
@@ -8994,13 +9055,16 @@ _api_registerPlural( 'columns().titles()', 'column().title()', function (title,
8994
9055
 
8995
9056
  _api_registerPlural( 'columns().types()', 'column().type()', function () {
8996
9057
  return this.iterator( 'column', function ( settings, column ) {
8997
- var type = settings.aoColumns[column].sType;
9058
+ var colObj = settings.aoColumns[column]
9059
+ var type = colObj.sType;
8998
9060
 
8999
9061
  // If the type was invalidated, then resolve it. This actually does
9000
9062
  // all columns at the moment. Would only happen once if getting all
9001
9063
  // column's data types.
9002
9064
  if (! type) {
9003
9065
  _fnColumnTypes(settings);
9066
+
9067
+ type = colObj.sType;
9004
9068
  }
9005
9069
 
9006
9070
  return type;
@@ -10171,7 +10235,7 @@ function cleanHeader(node, className) {
10171
10235
  * @type string
10172
10236
  * @default Version number
10173
10237
  */
10174
- DataTable.version = "2.3.4";
10238
+ DataTable.version = "2.3.5";
10175
10239
 
10176
10240
  /**
10177
10241
  * Private data store, containing all of the settings objects that are
@@ -10473,8 +10537,8 @@ DataTable.models.oColumn = {
10473
10537
  */
10474
10538
  "sWidthOrig": null,
10475
10539
 
10476
- /** Cached string which is the longest in the column */
10477
- maxLenString: null,
10540
+ /** Cached longest strings from a column */
10541
+ wideStrings: null,
10478
10542
 
10479
10543
  /**
10480
10544
  * Store for named searches
@@ -1,4 +1,4 @@
1
- /*! FixedHeader 4.0.4
1
+ /*! FixedHeader 4.0.5
2
2
  * © SpryMedia Ltd - datatables.net/license
3
3
  */
4
4
 
@@ -13,7 +13,7 @@ let $ = jQuery;
13
13
  * @summary FixedHeader
14
14
  * @description Fix a table's header or footer, so it is always visible while
15
15
  * scrolling
16
- * @version 4.0.4
16
+ * @version 4.0.5
17
17
  * @author SpryMedia Ltd
18
18
  * @contact datatables.net
19
19
  *
@@ -446,6 +446,8 @@ $.extend(FixedHeader.prototype, {
446
446
  itemDom.floating.append(itemElement);
447
447
 
448
448
  this._widths(itemDom);
449
+
450
+ return scrollLeftUpdate;
449
451
  }
450
452
  },
451
453
 
@@ -588,7 +590,7 @@ $.extend(FixedHeader.prototype, {
588
590
  else if (mode === 'in') {
589
591
  // Remove the header from the real table and insert into a fixed
590
592
  // positioned floating table clone
591
- this._clone(item, forceChange);
593
+ let scrollLeftUpdate = this._clone(item, forceChange);
592
594
 
593
595
  // Get useful position values
594
596
  var scrollOffset = scrollBody.offset();
@@ -633,6 +635,10 @@ $.extend(FixedHeader.prototype, {
633
635
 
634
636
  importantWidth(position.width);
635
637
 
638
+ if (scrollLeftUpdate) {
639
+ scrollLeftUpdate();
640
+ }
641
+
636
642
  if (item === 'footer') {
637
643
  itemDom.floating.css('top', '');
638
644
  }
@@ -1050,7 +1056,7 @@ $.extend(FixedHeader.prototype, {
1050
1056
  * @type {String}
1051
1057
  * @static
1052
1058
  */
1053
- FixedHeader.version = '4.0.4';
1059
+ FixedHeader.version = '4.0.5';
1054
1060
 
1055
1061
  /**
1056
1062
  * Defaults