presentation/renderers/lesson.renderer.ts

presentation/renderers/lesson.renderer.ts is a file in Bane's Lab Site. 20 lines of code and 5 definitions.

import { appendChildren, createElement } from "#core/factories/element.factory";
import type { LessonBlock } from "#types/block.types";
import { SPACE } from "#configuration/constants/document.constants";
import { fillMarkup } from "#presentation/renderers/text.renderer";

const paragraph = function paragraph(fields: readonly string[]): Element {
    return fillMarkup(createElement("p", { className: "chapter-text" }), fields.join(SPACE));
};

const paragraphsOf = function paragraphsOf(block: LessonBlock): Element[] {
    const groups = [
        [block.problem, block.failureMode, block.cause],
        [block.principle, block.decision, block.application],
        [block.validation, ...(block.boundary === undefined ? [] : [block.boundary])],
    ];
    return groups.map(paragraph);
};

export const renderLesson = function renderLesson(block: LessonBlock): Element {
    const wrapper = createElement("div", { className: "block-lesson" });
    appendChildren(wrapper, paragraphsOf(block));
    return wrapper;
};