strona-czynna/src/back/routes/all-components.page.tsx
Kuba Orlik bec96ac604 Sreact page for editing JDD
Summary: Ref T2764

Reviewers: #testers, kuba-orlik

Reviewed By: #testers, kuba-orlik

Subscribers: kuba-orlik, jenkins-user

Maniphest Tasks: T2764

Differential Revision: https://hub.sealcode.org/D1406
2024-05-05 18:28:46 +02:00

47 lines
1.3 KiB
TypeScript

import type { Context } from "koa";
import { tempstream, TempstreamJSX } from "tempstream";
import { Page } from "@sealcode/sealgen";
import html, { defaultHead } from "../html.js";
import { registry } from "../jdd-components/components.js";
import { documentContainerFromParsed, render, renderEarlyAssets } from "@sealcode/jdd";
import { shuffle } from "../util.js";
import { makeJDDContext } from "../jdd-context.js";
export const actionName = "AllComponents";
export default new (class AllComponentsPage extends Page {
// eslint-disable-next-line @typescript-eslint/no-unused-vars
async canAccess(_: Context) {
return { canAccess: true, message: "" };
}
async render(ctx: Context) {
const components = registry.getAll();
const jdd_context = makeJDDContext(ctx);
const document = await Promise.all(
shuffle(Object.entries(components)).map(
async ([component_name, component]) => {
return {
component_name,
args: await component.getExampleValues(jdd_context),
};
}
)
);
return html(
ctx,
"AllComponents",
<div>
{render(registry, documentContainerFromParsed(document), jdd_context)}
</div>,
{},
(...args) =>
tempstream`${defaultHead(...args)}${renderEarlyAssets(
registry,
documentContainerFromParsed(document),
jdd_context
)}`
);
}
})();