Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

main.js 2.9 KiB

il y a 3 ans
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. // Based on https://github.com/react-bootstrap/dom-helpers/blob/master/src/util/inDOM.js
  4. var inDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);
  5. var cachedType;
  6. function _setScrollType(type) {
  7. cachedType = type;
  8. }
  9. exports._setScrollType = _setScrollType;
  10. // Based on the jquery plugin https://github.com/othree/jquery.rtl-scroll-type
  11. function detectScrollType() {
  12. if (cachedType) {
  13. return cachedType;
  14. }
  15. if (!inDOM || !window.document.body) {
  16. return 'indeterminate';
  17. }
  18. var dummy = window.document.createElement('div');
  19. dummy.appendChild(document.createTextNode('ABCD'));
  20. dummy.dir = 'rtl';
  21. dummy.style.fontSize = '14px';
  22. dummy.style.width = '4px';
  23. dummy.style.height = '1px';
  24. dummy.style.position = 'absolute';
  25. dummy.style.top = '-1000px';
  26. dummy.style.overflow = 'scroll';
  27. document.body.appendChild(dummy);
  28. cachedType = 'reverse';
  29. if (dummy.scrollLeft > 0) {
  30. cachedType = 'default';
  31. }
  32. else {
  33. dummy.scrollLeft = 1;
  34. if (dummy.scrollLeft === 0) {
  35. cachedType = 'negative';
  36. }
  37. }
  38. document.body.removeChild(dummy);
  39. return cachedType;
  40. }
  41. exports.detectScrollType = detectScrollType;
  42. // Based on https://stackoverflow.com/a/24394376
  43. function getNormalizedScrollLeft(element, direction) {
  44. var scrollLeft = element.scrollLeft;
  45. // Perform the calculations only when direction is rtl to avoid messing up the ltr bahavior
  46. if (direction !== 'rtl') {
  47. return scrollLeft;
  48. }
  49. var type = detectScrollType();
  50. if (type === 'indeterminate') {
  51. return Number.NaN;
  52. }
  53. switch (type) {
  54. case 'negative':
  55. return element.scrollWidth - element.clientWidth + scrollLeft;
  56. case 'reverse':
  57. return element.scrollWidth - element.clientWidth - scrollLeft;
  58. }
  59. return scrollLeft;
  60. }
  61. exports.getNormalizedScrollLeft = getNormalizedScrollLeft;
  62. function setNormalizedScrollLeft(element, scrollLeft, direction) {
  63. // Perform the calculations only when direction is rtl to avoid messing up the ltr bahavior
  64. if (direction !== 'rtl') {
  65. element.scrollLeft = scrollLeft;
  66. return;
  67. }
  68. var type = detectScrollType();
  69. if (type === 'indeterminate') {
  70. return;
  71. }
  72. switch (type) {
  73. case 'negative':
  74. element.scrollLeft = element.clientWidth - element.scrollWidth + scrollLeft;
  75. break;
  76. case 'reverse':
  77. element.scrollLeft = element.scrollWidth - element.clientWidth - scrollLeft;
  78. break;
  79. default:
  80. element.scrollLeft = scrollLeft;
  81. break;
  82. }
  83. }
  84. exports.setNormalizedScrollLeft = setNormalizedScrollLeft;