utils.js 961 B

1234567891011121314151617181920212223242526272829303132333435
  1. export function throttledDebounce(callback, maxDebounceTimes, debounceDelay) {
  2. let debounceTimeout;
  3. let timesDebounced = 0;
  4. return function () {
  5. if (timesDebounced == maxDebounceTimes) {
  6. clearTimeout(debounceTimeout);
  7. timesDebounced = 0;
  8. callback();
  9. return;
  10. }
  11. clearTimeout(debounceTimeout);
  12. timesDebounced++;
  13. debounceTimeout = setTimeout(() => {
  14. timesDebounced = 0;
  15. callback();
  16. }, debounceDelay);
  17. };
  18. };
  19. export function isElementVisible(element) {
  20. return !!(element.offsetWidth || element.offsetHeight || element.getClientRects().length);
  21. }
  22. export function clamp(value, min, max) {
  23. return Math.min(Math.max(value, min), max);
  24. }
  25. export function openURLInNewTab(url, focus = true) {
  26. const newWindow = window.open(url, '_blank', 'noopener,noreferrer');
  27. if (focus && newWindow != null) newWindow.focus();
  28. }