Initial commit: 11ty website with Fire/Frost branding
This commit is contained in:
85
node_modules/@11ty/eleventy/src/TemplateBehavior.js
generated
vendored
Normal file
85
node_modules/@11ty/eleventy/src/TemplateBehavior.js
generated
vendored
Normal file
@@ -0,0 +1,85 @@
|
||||
import { isPlainObject } from "@11ty/eleventy-utils";
|
||||
|
||||
class TemplateBehavior {
|
||||
#isRenderOptional;
|
||||
|
||||
constructor(config) {
|
||||
this.render = true;
|
||||
this.write = true;
|
||||
this.outputFormat = null;
|
||||
|
||||
if (!config) {
|
||||
throw new Error("Missing config argument in TemplateBehavior");
|
||||
}
|
||||
this.config = config;
|
||||
}
|
||||
|
||||
// Render override set to false
|
||||
isRenderableDisabled() {
|
||||
return this.renderableOverride === false;
|
||||
}
|
||||
|
||||
isRenderableOptional() {
|
||||
return this.#isRenderOptional;
|
||||
}
|
||||
|
||||
// undefined (fallback), true, false
|
||||
setRenderableOverride(renderableOverride) {
|
||||
if (renderableOverride === "optional") {
|
||||
this.#isRenderOptional = true;
|
||||
this.renderableOverride = undefined;
|
||||
} else {
|
||||
this.#isRenderOptional = false;
|
||||
this.renderableOverride = renderableOverride;
|
||||
}
|
||||
}
|
||||
|
||||
// permalink *has* a build key or output is json/ndjson
|
||||
isRenderable() {
|
||||
return this.renderableOverride ?? (this.render || this.isRenderForced());
|
||||
}
|
||||
|
||||
setOutputFormat(format) {
|
||||
this.outputFormat = format;
|
||||
}
|
||||
|
||||
isRenderForced() {
|
||||
return this.outputFormat === "json" || this.outputFormat === "ndjson";
|
||||
}
|
||||
|
||||
isWriteable() {
|
||||
return this.write;
|
||||
}
|
||||
|
||||
// Duplicate logic with TemplatePermalink constructor
|
||||
setRenderViaDataCascade(data) {
|
||||
// render is false *only* if `build` key does not exist in permalink objects (both in data and eleventyComputed)
|
||||
// (note that permalink: false means it won’t write but will still render)
|
||||
|
||||
let keys = new Set();
|
||||
if (isPlainObject(data.permalink)) {
|
||||
for (let key of Object.keys(data.permalink)) {
|
||||
keys.add(key);
|
||||
}
|
||||
}
|
||||
|
||||
let computedKey = this.config.keys.computed;
|
||||
if (computedKey in data && isPlainObject(data[computedKey]?.permalink)) {
|
||||
for (let key of Object.keys(data[computedKey].permalink)) {
|
||||
keys.add(key);
|
||||
}
|
||||
}
|
||||
|
||||
if (keys.size) {
|
||||
this.render = keys.has("build");
|
||||
}
|
||||
}
|
||||
|
||||
setFromPermalink(templatePermalink) {
|
||||
// this.render is duplicated between TemplatePermalink and `setRenderViaDataCascade` above
|
||||
this.render = templatePermalink._isRendered;
|
||||
|
||||
this.write = templatePermalink._writeToFileSystem;
|
||||
}
|
||||
}
|
||||
export default TemplateBehavior;
|
||||
Reference in New Issue
Block a user