devexpress-reporting
Version:
DevExpress Reporting provides the capability to develop a reporting application to create and customize reports.
91 lines (90 loc) • 3.69 kB
JavaScript
/**
* DevExpress HTML/JS Reporting (common\utils\_utils.js)
* Version: 24.2.6
* Build date: Mar 18, 2025
* Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
* License: https://www.devexpress.com/Support/EULAs/universal.xml
*/
import { accessibilityFontSizeZoomFactor, createGlobalModuleVariableFunc } from '@devexpress/analytics-core/analytics-internal-native';
import { propertiesGridEditorsPaddingLeft } from '@devexpress/analytics-core/analytics-widgets-internal-native';
import devices from 'devextreme/core/devices';
export const cultureInfo = {};
export const generateGuid = () => {
const getNewQuartet = function (i) {
return Math.floor((1 + Math.random()) * Math.pow(0x10000, i)).toString(16).substring(1);
};
return getNewQuartet(2) + '-' + getNewQuartet(1) + '-' + getNewQuartet(1) + '-' + getNewQuartet(1) + '-' + getNewQuartet(3);
};
const fullscreenEventsList = ['fullscreenchange', 'mozfullscreenchange', 'webkitfullscreenchange', 'MSFullscreenChange'];
export function createFullscreenComputed(element, parent) {
const fullscreen = createGlobalModuleVariableFunc(false, (newVal) => toggleFullscreen(element, newVal));
let func = () => {
const isFullscreen = document.fullscreen || !!document['msFullscreenElement'] || !!document['webkitFullscreenElement'];
fullscreen.notifySubscribers(isFullscreen);
};
addFullscreenListener(document, func);
parent._disposables.push({
dispose: () => {
removeFullscreenListener(document, func);
func = null;
}
});
return fullscreen;
}
export function processZoomFactor(accessibilityCompliant) {
if (!accessibilityCompliant)
return;
const defaultFontSize = 16;
const zoomFactor = (parseInt(window.getComputedStyle(document.documentElement).getPropertyValue('font-size')) || defaultFontSize) / defaultFontSize;
if (zoomFactor !== accessibilityFontSizeZoomFactor()) {
propertiesGridEditorsPaddingLeft(zoomFactor * propertiesGridEditorsPaddingLeft());
accessibilityFontSizeZoomFactor(zoomFactor);
}
}
function addFullscreenListener(element, func) {
fullscreenEventsList.forEach((eventName) => {
element.addEventListener(eventName, func);
});
}
function removeFullscreenListener(element, func) {
fullscreenEventsList.forEach((eventName) => {
element.removeEventListener(eventName, func);
});
}
function showFullscreen(element) {
if (element.requestFullscreen)
element.requestFullscreen();
else if (element['mozRequestFullScreen'])
element['mozRequestFullScreen']();
else if (element['webkitRequestFullscreen'])
element['webkitRequestFullscreen']();
else if (element['msRequestFullscreen']) {
element['msRequestFullscreen']();
}
}
function exitFullscreen() {
if (document.exitFullscreen)
document.exitFullscreen();
else if (document['mozCancelFullScreen'])
document['mozCancelFullScreen']();
else if (document['webkitExitFullscreen'])
document['webkitExitFullscreen']();
else if (document['msExitFullscreen']) {
document['msExitFullscreen']();
}
}
function toggleFullscreen(element, value) {
if (!element)
return;
if (value)
showFullscreen(element);
else
exitFullscreen();
}
export const isMac = devices.real()['mac'];
export const isIOS = devices.real().ios || isMac && window.navigator.maxTouchPoints > 0;
export const isAndroid = devices.real().android;
export const isMobile = isIOS || isAndroid;
export function transformNewLineCharacters(value) {
return value.replace(/(\r\n|\n|\r)/g, '\r\n');
}