import type { FlatTemplatable } from "tempstream"; import { TempstreamJSX } from "tempstream"; import type { ComponentToHTMLArgs, ExtractStructuredComponentArgumentsParsed, JDDContext, } from "@sealcode/jdd"; import { Component, ComponentArguments, insert_nbsp } from "@sealcode/jdd"; import { horizontalScroller } from "../../routes/common/horizontal-scroller/horizontal-scroller.js"; import { htmlEscape } from "escape-goat"; const component_arguments = { title: new ComponentArguments.ShortText(), images: new ComponentArguments.List( new ComponentArguments.Structured({ image: new ComponentArguments.Image(), alt: new ComponentArguments.ShortText().setExampleValues([""]), caption: new ComponentArguments.ShortText().setExampleValues([""]), }) ), } as const; export class HorizontalGallery extends Component { getArguments() { return component_arguments; } getTitle( _: JDDContext, args: ExtractStructuredComponentArgumentsParsed ) { return args.title || null; } toHTML({ args: { title, images }, classes, jdd_context: { render_image }, index, }: ComponentToHTMLArgs): FlatTemplatable { return (
{horizontalScroller({ elements: (images || []).map((image) => ( <>
{render_image(image.image, { sizesAttr: "100vw", container: { width: 800, height: 500, objectFit: "contain", }, alt: image.alt, })}
{image.caption?.trim() ? (
{image.caption}
) : ( "" )} )), render: async ({ scroller, markers }) => (
{scroller} {markers}
), })}
); } }