+/* eslint-disable max-classes-per-file */
export function bytesToSize(bytes) {
const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];
if (bytes === 0) return 'n/a';
if (number > 99) return '99+';
return number;
}
+
+export class Debounce {
+ constructor() {
+ this.timeoutId = null;
+ }
+
+ /**
+ * @param {function} func - callback function
+ * @param {number} wait - wait in milliseconds to call func
+ * @returns {func} debounceCallback - to pass arguments to func callback
+ */
+ _(func, wait) {
+ const that = this;
+ return function debounceCallback(...args) {
+ clearTimeout(that.timeoutId);
+ that.timeoutId = setTimeout(() => {
+ func.apply(this, args);
+ that.timeoutId = null;
+ }, wait);
+ };
+ }
+}
+
+export class Throttle {
+ constructor() {
+ this.timeoutId = null;
+ }
+
+ /**
+ * @param {function} func - callback function
+ * @param {number} wait - wait in milliseconds to call func
+ * @returns {function} throttleCallback - to pass arguments to func callback
+ */
+ _(func, wait) {
+ const that = this;
+ return function throttleCallback(...args) {
+ if (that.timeoutId !== null) return;
+ that.timeoutId = setTimeout(() => {
+ func.apply(this, args);
+ that.timeoutId = null;
+ }, wait);
+ };
+ }
+}
+
+export function getUrlPrams(paramName) {
+ const queryString = window.location.search;
+ const urlParams = new URLSearchParams(queryString);
+ return urlParams.get(paramName);
+}