ui/app/utils/css-hackery.js

71 lines
1.3 KiB
JavaScript

export function findRule(selector, sheetTitle) {
var sheet = findSheet(sheetTitle);
var rules;
if ( sheet )
{
try {
rules = sheet.cssRules || sheet.rules;
}
catch (e) {
// You can't read external stylesheets...
return null;
}
for ( var j = 0 ; j < rules.length ; j++ )
{
if ( (rules[j].selectorText||'').toLowerCase() === selector )
{
return rules[j];
}
}
}
return null;
}
export function findSheet(title) {
var sheets = document.styleSheets;
if ( sheets )
{
var sheet;
for ( var i = 0 ; i < sheets.length ; i++ )
{
sheet = sheets[i];
if ( sheet.title === title )
{
return sheet;
}
}
}
return null;
}
export function createSheet(title) {
var style = document.createElement('style');
style.setAttribute('title',title);
style.appendChild(document.createTextNode(''));
document.head.appendChild(style);
return style.sheet;
}
export function addRule(sheet, selector, rules, index) {
if ( sheet.insertRule )
{
sheet.insertRule(selector + "{" + rules + "}", index);
}
else if ( sheet.addRule )
{
sheet.addRule(selector, rules, index);
}
}
export default {
findRule: findRule,
findSheet: findSheet,
createSheet: createSheet,
addRule: addRule,
};