UNPKG

@widergy/web-utils

Version:
122 lines (121 loc) 5.29 kB
"use strict"; 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;