80 lines
3.6 KiB
JavaScript
80 lines
3.6 KiB
JavaScript
"use strict";
|
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
if (k2 === undefined) k2 = k;
|
|
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
}) : (function(o, m, k, k2) {
|
|
if (k2 === undefined) k2 = k;
|
|
o[k2] = m[k];
|
|
}));
|
|
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
}) : function(o, v) {
|
|
o["default"] = v;
|
|
});
|
|
var __importStar = (this && this.__importStar) || function (mod) {
|
|
if (mod && mod.__esModule) return mod;
|
|
var result = {};
|
|
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
__setModuleDefault(result, mod);
|
|
return result;
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
var utils = __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
|