export function typeOf(data) {
return Object.prototype.toString.call(data).slice(8, -1).toLowerCase();
}
export const hideMobile = (mobile) => {
return mobile.replace(/^(\d{3})\d{4}(\d{4})$/, "$1****$2")
}
export const uuid = () => {
const temp_url = URL.createObjectURL(new Blob())
const uuid = temp_url.toString()
URL.revokeObjectURL(temp_url)
return uuid.substring(uuid.lastIndexOf('/') + 1)
}
export const launchFullscreen = (element) => {
if (element.requestFullscreen) {
element.requestFullscreen();
} else if (element.mozRequestFullScreen) {
element.mozRequestFullScreen();
} else if (element.msRequestFullscreen) {
element.msRequestFullscreen();
} else if (element.webkitRequestFullscreen) {
element.webkitRequestFullScreen();
}
};
export const exitFullscreen = () => {
if (document.exitFullscreen) {
document.exitFullscreen();
} else if (document.msExitFullscreen) {
document.msExitFullscreen();
} else if (document.mozCancelFullScreen) {
document.mozCancelFullScreen();
} else if (document.webkitExitFullscreen) {
document.webkitExitFullscreen();
}
};
export const foreachTree = (data, callback, childrenName = "children") => {
for (let i = 0; i < data.length; i++) {
callback(data[i]);
if (data[i][childrenName] && data[i][childrenName].length > 0) {
foreachTree(data[i][childrenName], callback, childrenName);
}
}
};
function debounce(callback, wait = 3000, immediate = false) {
let timer = null;
return function (...args) {
if (timer) clearTimeout(timer);
if (immediate && !timer) {
callback.apply(this, args);
}
timer = setTimeout(() => {
callback.apply(this, args);
}, wait);
};
}
function throttle(callback, wait = 1000) {
let previous = 0;
let timer = null;
return function (...args) {
if (timer) clearTimeout(timer);
let now = +new Date();
if (now - previous < wait) {
timer = setTimeout(() => {
callback.apply(this, args);
}, wait);
} else {
previous = now;
callback.apply(this, args);
}
};
}
function once(callback) {
let called = false;
return function () {
if (!called) {
called = true;
callback.apply(this, arguments);
}
};
}
function isIos() {
var u = navigator.userAgent;
return !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);
}
export function genObjectURL(file) {
var url = null;
if (window.createObjectURL != void 0) {
url = window.createObjectURL(file);
} else if (window.URL != void 0) {
url = window.URL.createObjectURL(file);
} else if (window.webkitURL != void 0) {
url = window.webkitURL.createObjectURL(file);
}
return url;
}
export function deepClone(sourceObj) {
return JSON.parse(JSON.stringify(sourceObj));
}
export function deepClonePlus(obj, hash = new WeakMap()) {
if (obj == null) return obj;
if (obj instanceof Date) return new Date(obj);
if (obj instanceof RegExp) return new RegExp(obj);
if (typeof obj !== "object") return obj;
if (hash.get(obj)) return hash.get(obj);
let cloneObj = new obj.constructor();
hash.set(obj, cloneObj);
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
cloneObj[key] = deepClonePlus(obj[key], hash);
}
}
return cloneObj;
}
export function getParameters(URL) {
return JSON.parse(
`{"${decodeURI(URL.split("?")[1])
.replace(/"/g, '\\"')
.replace(/&/g, '","')
.replace(/=/g, '":"')}"}`
);
}