@widergy/web-utils
Version:
Utility GO! Web utils
122 lines (121 loc) • 5.29 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.isBottom = exports.openBase64 = exports.decodeBase64 = exports.downloadAttachment = exports.downloadPDF = exports.RESIZE_EVENT = exports.isPortrait = exports.isLandscape = exports.isBigScreen = exports.isDesktopHD = exports.isDesktop = exports.isTablet = exports.isMobile = exports.getURLParams = exports.retrieveWidth = exports.isIE = exports.isFirefox = void 0;
const downloadjs_1 = __importDefault(require("downloadjs"));
const isFirefox = () => typeof InstallTrigger !== 'undefined';
exports.isFirefox = isFirefox;
const isIE = () => !!document.documentMode;
exports.isIE = isIE;
const retrieveWidth = () => {
var _a, _b;
return document.compatMode === 'CSS1Compat' && ((_a = document.documentElement) === null || _a === void 0 ? void 0 : _a.offsetWidth)
? document.documentElement.offsetWidth
: ((_b = document.body) === null || _b === void 0 ? void 0 : _b.offsetWidth) || 0;
};
exports.retrieveWidth = retrieveWidth;
const getURLParams = (search, ...paramsToRetrieve) => {
const urlParams = {};
const location = new URLSearchParams(search);
paramsToRetrieve.forEach((paramName) => {
const value = location.get(paramName);
urlParams[paramName] = value;
});
return urlParams;
};
exports.getURLParams = getURLParams;
const isMobile = (mobileBreakpoint) => (0, exports.retrieveWidth)() < mobileBreakpoint;
exports.isMobile = isMobile;
const isTablet = (mobileBreakpoint, tabletBreakpoint) => (0, exports.retrieveWidth)() < tabletBreakpoint && (0, exports.retrieveWidth)() >= mobileBreakpoint;
exports.isTablet = isTablet;
const isDesktop = (tabletBreakpoint) => (0, exports.retrieveWidth)() >= tabletBreakpoint;
exports.isDesktop = isDesktop;
const isDesktopHD = (tabletBreakpoint, hDBreakpoint) => (0, exports.isDesktop)(tabletBreakpoint) && (0, exports.retrieveWidth)() <= hDBreakpoint;
exports.isDesktopHD = isDesktopHD;
const isBigScreen = (hDBreakpoint) => (0, exports.retrieveWidth)() >= hDBreakpoint;
exports.isBigScreen = isBigScreen;
const isLandscape = () => window.matchMedia('(orientation: landscape)').matches;
exports.isLandscape = isLandscape;
const isPortrait = () => window.matchMedia('(orientation: portrait)').matches;
exports.isPortrait = isPortrait;
exports.RESIZE_EVENT = 'resize';
const downloadPDF = (content, fileName, options, tabletBreakpoint) => {
(0, downloadjs_1.default)(content, fileName, 'application/pdf');
setTimeout(() => {
const newBlob = new Blob([content], { type: 'application/pdf' });
const data = window.URL.createObjectURL(newBlob);
const nav = window.navigator;
if (nav && nav.msSaveOrOpenBlob) {
nav.msSaveOrOpenBlob(newBlob);
}
else {
if (options.openOnTab && (0, exports.isDesktop)(tabletBreakpoint)) {
if (options.seeSameTab) {
window.location.replace(data);
}
else
window.open(data, '_blank');
}
}
}, 100);
};
exports.downloadPDF = downloadPDF;
const downloadAttachment = (url, name) => {
const xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = 'blob';
xhr.onload = ({ target }) => (0, downloadjs_1.default)(target.response, name, 'application/octet-stream');
setTimeout(() => xhr.send(), 0);
return xhr;
};
exports.downloadAttachment = downloadAttachment;
const decodeBase64 = (base64) => {
let byteCharacters;
try {
byteCharacters = atob(base64);
}
catch (_a) {
byteCharacters = null;
}
return byteCharacters;
};
exports.decodeBase64 = decodeBase64;
const openBase64 = (base64, contentType) => {
const byteCharacters = atob(base64);
const byteNumbers = new Array(byteCharacters.length);
for (let i = 0; i < byteCharacters.length; i++) {
byteNumbers[i] = byteCharacters.charCodeAt(i);
}
const byteArray = new Uint8Array(byteNumbers);
const blob = new Blob([byteArray], { type: contentType });
const blobUrl = window.URL.createObjectURL(blob);
window.open(blobUrl, '_blank');
};
exports.openBase64 = openBase64;
const isBottom = (ref, height) => {
const refBottom = ref.current && ref.current.getBoundingClientRect().bottom;
return refBottom && (refBottom <= height || refBottom <= window.innerHeight);
};
exports.isBottom = isBottom;
const BROWSER_UTILS = {
isFirefox: exports.isFirefox,
isIE: exports.isIE,
getURLParams: exports.getURLParams,
retrieveWidth: exports.retrieveWidth,
isMobile: exports.isMobile,
isTablet: exports.isTablet,
isDesktop: exports.isDesktop,
downloadPDF: exports.downloadPDF,
isDesktopHD: exports.isDesktopHD,
isBigScreen: exports.isBigScreen,
isLandscape: exports.isLandscape,
isPortrait: exports.isPortrait,
isBottom: exports.isBottom,
RESIZE_EVENT: exports.RESIZE_EVENT,
decodeBase64: exports.decodeBase64,
downloadAttachment: exports.downloadAttachment,
openBase64: exports.openBase64,
};
exports.default = BROWSER_UTILS;