| Server IP : 182.53.201.61 / Your IP : 216.73.217.175 Web Server : Apache/2.2.15 (Fedora) System : Linux km10.dyndns.org 2.6.31.5-127.fc12.i686.PAE #1 SMP Sat Nov 7 21:25:57 EST 2009 i686 User : apache ( 48) PHP Version : 5.3.3 Disable Function : NONE MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /var/www/html/KPI monitor/node_modules/highcharts/es-modules/Accessibility/ |
Upload File : |
/* *
*
* (c) 2009-2026 Highsoft AS
* Author: Øystein Moseng
*
* Handling for Windows High Contrast Mode.
*
* A commercial license may be required depending on use.
* See www.highcharts.com/license
*
*
* */
'use strict';
import H from '../Core/Globals.js';
const { doc, isMS, win } = H;
/* *
*
* Functions
*
* */
/**
* Detect WHCM in the browser.
*
* @function Highcharts#isHighContrastModeActive
* @private
* @return {boolean} Returns true if the browser is in High Contrast mode.
*/
function isHighContrastModeActive() {
// Test BG image for IE
if (isMS && win.getComputedStyle) {
const testDiv = doc.createElement('div');
const imageSrc = 'data:image/gif;base64,' +
'R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==';
testDiv.style.backgroundImage = `url(${imageSrc})`; // #13071
doc.body.appendChild(testDiv);
const bi = (testDiv.currentStyle ||
win.getComputedStyle(testDiv)).backgroundImage;
doc.body.removeChild(testDiv);
return bi === 'none';
}
// Other browsers use the forced-colors standard
return win.matchMedia && win.matchMedia('(forced-colors: active)').matches;
}
/**
* Force high contrast theme for the chart. The default theme is defined in
* a separate file.
*
* @function Highcharts#setHighContrastTheme
* @private
* @param {Highcharts.AccessibilityChart} chart The chart to set the theme of.
* @return {void}
*/
function setHighContrastTheme(chart) {
// We might want to add additional functionality here in the future for
// storing the old state so that we can reset the theme if HC mode is
// disabled. For now, the user will have to reload the page.
chart.highContrastModeActive = true;
// Apply theme to chart
const theme = (chart.options.accessibility.highContrastTheme);
chart.update(theme, false);
const hasCustomColors = theme.colors?.length > 1;
// Force series colors (plotOptions is not enough)
chart.series.forEach(function (s) {
const plotOpts = theme.plotOptions[s.type] || {};
const fillColor = hasCustomColors && s.colorIndex !== void 0 ?
theme.colors[s.colorIndex] :
plotOpts.color || 'window';
const seriesOptions = {
color: plotOpts.color || 'windowText',
colors: hasCustomColors ?
theme.colors : [plotOpts.color || 'windowText'],
borderColor: plotOpts.borderColor || 'window',
fillColor
};
s.update(seriesOptions, false);
if (s.points) {
// Force point colors if existing
s.points.forEach(function (p) {
if (p.options && p.options.color) {
p.update({
color: plotOpts.color || 'windowText',
borderColor: plotOpts.borderColor || 'window'
}, false);
}
});
}
});
// The redraw for each series and after is required for 3D pie
// (workaround)
chart.redraw();
}
/* *
*
* Default Export
*
* */
const whcm = {
isHighContrastModeActive,
setHighContrastTheme
};
export default whcm;