util.js 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. /**
  2. * @license
  3. * Copyright 2018 Google Inc.
  4. *
  5. * Permission is hereby granted, free of charge, to any person obtaining a copy
  6. * of this software and associated documentation files (the "Software"), to deal
  7. * in the Software without restriction, including without limitation the rights
  8. * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  9. * copies of the Software, and to permit persons to whom the Software is
  10. * furnished to do so, subject to the following conditions:
  11. *
  12. * The above copyright notice and this permission notice shall be included in
  13. * all copies or substantial portions of the Software.
  14. *
  15. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  16. * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  17. * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  18. * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  19. * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  20. * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  21. * THE SOFTWARE.
  22. */
  23. import { cssClasses } from './constants';
  24. /**
  25. * Stores result from computeHorizontalScrollbarHeight to avoid redundant
  26. * processing.
  27. */
  28. var horizontalScrollbarHeight_;
  29. /**
  30. * Computes the height of browser-rendered horizontal scrollbars using a
  31. * self-created test element. May return 0 (e.g. on OS X browsers under default
  32. * configuration).
  33. */
  34. export function computeHorizontalScrollbarHeight(documentObj, shouldCacheResult) {
  35. if (shouldCacheResult === void 0) { shouldCacheResult = true; }
  36. if (shouldCacheResult && typeof horizontalScrollbarHeight_ !== 'undefined') {
  37. return horizontalScrollbarHeight_;
  38. }
  39. var el = documentObj.createElement('div');
  40. el.classList.add(cssClasses.SCROLL_TEST);
  41. documentObj.body.appendChild(el);
  42. var horizontalScrollbarHeight = el.offsetHeight - el.clientHeight;
  43. documentObj.body.removeChild(el);
  44. if (shouldCacheResult) {
  45. horizontalScrollbarHeight_ = horizontalScrollbarHeight;
  46. }
  47. return horizontalScrollbarHeight;
  48. }
  49. //# sourceMappingURL=util.js.map