File: /var/www/indoadvisory_new/webapp/node_modules/youch/build/chunk-4YEN7HVQ.js
// src/component.ts
import { readFile } from "fs/promises";
var BaseComponent = class {
#cachedStyles;
#cachedScript;
/**
* A flag to know if we are in dev mode or not. In dev mode,
* the styles and scripts are refetched from the disk.
* Otherwise they are cached.
*/
#inDevMode;
/**
* Absolute path to the frontend JavaScript that should be
* injected within the HTML head. The JavaScript does not
* get transpiled, hence it should work cross browser by
* default.
*/
scriptFile;
/**
* Absolute path to the CSS file that should be injected
* within the HTML head.
*/
cssFile;
constructor(devMode) {
this.#inDevMode = devMode;
}
/**
* Returns the styles for the component. The null value
* is not returned if no styles are associated with
* the component
*/
async getStyles() {
if (!this.cssFile) {
return null;
}
if (this.#inDevMode) {
return await readFile(this.cssFile, "utf-8");
}
this.#cachedStyles = this.#cachedStyles ?? await readFile(this.cssFile, "utf-8");
return this.#cachedStyles;
}
/**
* Returns the frontend script for the component. The null
* value is not returned if no styles are associated
* with the component
*/
async getScript() {
if (!this.scriptFile) {
return null;
}
if (this.#inDevMode) {
return await readFile(this.scriptFile, "utf-8");
}
this.#cachedScript = this.#cachedScript ?? await readFile(this.scriptFile, "utf-8");
return this.#cachedScript;
}
};
export {
BaseComponent
};