You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
2.8 KiB
62 lines
2.8 KiB
"use strict"; |
|
Object.defineProperty(exports, "__esModule", { value: true }); |
|
var tslib_1 = require("tslib"); |
|
var utils = tslib_1.__importStar(require("./utils")); |
|
exports.default = { |
|
createCSS: function (document, styles, sheet) { |
|
// Strip the query-string |
|
var href = sheet.href || ''; |
|
// If there is no title set, use the filename, minus the extension |
|
var id = "less:" + (sheet.title || utils.extractId(href)); |
|
// If this has already been inserted into the DOM, we may need to replace it |
|
var oldStyleNode = document.getElementById(id); |
|
var keepOldStyleNode = false; |
|
// Create a new stylesheet node for insertion or (if necessary) replacement |
|
var styleNode = document.createElement('style'); |
|
styleNode.setAttribute('type', 'text/css'); |
|
if (sheet.media) { |
|
styleNode.setAttribute('media', sheet.media); |
|
} |
|
styleNode.id = id; |
|
if (!styleNode.styleSheet) { |
|
styleNode.appendChild(document.createTextNode(styles)); |
|
// If new contents match contents of oldStyleNode, don't replace oldStyleNode |
|
keepOldStyleNode = (oldStyleNode !== null && oldStyleNode.childNodes.length > 0 && styleNode.childNodes.length > 0 && |
|
oldStyleNode.firstChild.nodeValue === styleNode.firstChild.nodeValue); |
|
} |
|
var head = document.getElementsByTagName('head')[0]; |
|
// If there is no oldStyleNode, just append; otherwise, only append if we need |
|
// to replace oldStyleNode with an updated stylesheet |
|
if (oldStyleNode === null || keepOldStyleNode === false) { |
|
var nextEl = sheet && sheet.nextSibling || null; |
|
if (nextEl) { |
|
nextEl.parentNode.insertBefore(styleNode, nextEl); |
|
} |
|
else { |
|
head.appendChild(styleNode); |
|
} |
|
} |
|
if (oldStyleNode && keepOldStyleNode === false) { |
|
oldStyleNode.parentNode.removeChild(oldStyleNode); |
|
} |
|
// For IE. |
|
// This needs to happen *after* the style element is added to the DOM, otherwise IE 7 and 8 may crash. |
|
// See http://social.msdn.microsoft.com/Forums/en-US/7e081b65-878a-4c22-8e68-c10d39c2ed32/internet-explorer-crashes-appending-style-element-to-head |
|
if (styleNode.styleSheet) { |
|
try { |
|
styleNode.styleSheet.cssText = styles; |
|
} |
|
catch (e) { |
|
throw new Error('Couldn\'t reassign styleSheet.cssText.'); |
|
} |
|
} |
|
}, |
|
currentScript: function (window) { |
|
var document = window.document; |
|
return document.currentScript || (function () { |
|
var scripts = document.getElementsByTagName('script'); |
|
return scripts[scripts.length - 1]; |
|
})(); |
|
} |
|
}; |
|
//# sourceMappingURL=browser.js.map
|