47 lines
1.4 KiB
JavaScript
47 lines
1.4 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.clean = exports.ensure = void 0;
|
|
const platform_1 = require("../platform");
|
|
const cssModules = [];
|
|
function ensure(name, content) {
|
|
const cssModule = cssModules.find((m) => m.name === name);
|
|
if (cssModule) {
|
|
cssModule.loadTimes += 1;
|
|
if (cssModule.loadTimes > 1) {
|
|
return;
|
|
}
|
|
}
|
|
if (!platform_1.Platform.isApplyingHMR()) {
|
|
const styleElement = document.createElement('style');
|
|
styleElement.setAttribute('type', 'text/css');
|
|
styleElement.textContent = content;
|
|
const head = document.querySelector('head');
|
|
if (head) {
|
|
head.insertBefore(styleElement, head.firstChild);
|
|
}
|
|
cssModules.push({
|
|
name,
|
|
loadTimes: 1,
|
|
styleElement,
|
|
});
|
|
}
|
|
}
|
|
exports.ensure = ensure;
|
|
function clean(name) {
|
|
const index = cssModules.findIndex((m) => m.name === name);
|
|
if (index > -1) {
|
|
const cssModule = cssModules[index];
|
|
cssModule.loadTimes -= 1;
|
|
if (cssModule.loadTimes > 0) {
|
|
return;
|
|
}
|
|
let styleElement = cssModule.styleElement;
|
|
if (styleElement && styleElement.parentNode) {
|
|
styleElement.parentNode.removeChild(styleElement);
|
|
}
|
|
styleElement = null;
|
|
cssModules.splice(index, 1);
|
|
}
|
|
}
|
|
exports.clean = clean;
|
|
//# sourceMappingURL=loader.js.map
|