utils.js 882 B

123456789101112131415161718192021222324252627282930313233
  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) {
  26. window.open(url, '_blank', 'noopener,noreferrer')?.focus();
  27. }