42 lines
917 B
JavaScript
42 lines
917 B
JavaScript
|
|
/**
|
||
|
|
* CSS module.
|
||
|
|
*/
|
||
|
|
export default class CSSModule {
|
||
|
|
url;
|
||
|
|
#window;
|
||
|
|
#source;
|
||
|
|
#exports = null;
|
||
|
|
/**
|
||
|
|
* Constructor.
|
||
|
|
*
|
||
|
|
* @param init Initialization options.
|
||
|
|
*/
|
||
|
|
constructor(init) {
|
||
|
|
this.#window = init.window;
|
||
|
|
this.url = init.url;
|
||
|
|
this.#source = init.source;
|
||
|
|
}
|
||
|
|
/**
|
||
|
|
* Compiles and evaluates the module.
|
||
|
|
*
|
||
|
|
* @returns Module exports.
|
||
|
|
*/
|
||
|
|
async evaluate() {
|
||
|
|
if (this.#exports) {
|
||
|
|
return this.#exports;
|
||
|
|
}
|
||
|
|
const styleSheet = new this.#window.CSSStyleSheet();
|
||
|
|
styleSheet.replaceSync(this.#source);
|
||
|
|
this.#exports = { default: styleSheet };
|
||
|
|
return this.#exports;
|
||
|
|
}
|
||
|
|
/**
|
||
|
|
* Compiles and preloads the module and its imports.
|
||
|
|
*
|
||
|
|
* @returns Promise.
|
||
|
|
*/
|
||
|
|
async preload() {
|
||
|
|
await this.evaluate();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
//# sourceMappingURL=CSSModule.js.map
|