import { CollectionItem } from "sealious"; import { FilePointer, PathFilePointer } from "@sealcode/file-manager"; import { FlatTemplatable, tempstream } from "tempstream"; import { MultipleFiles, MultipleFilesOptions } from "./multiple-files.js"; import { MultipleFiles as MultipleFilesField } from "../fields/multiple-files.js"; import { KoaResponsiveImageRouter } from "koa-responsive-image-router"; export class MultipleImages extends MultipleFiles { constructor( public field: MultipleFilesField, public imageRouter: KoaResponsiveImageRouter, options?: Partial ) { super(field, options); } getClassModifiers() { return ["multiple-files--photos"]; } getInputAttributes() { return { ...super.getInputAttributes(), accept: "image/*" }; } async renderFileItem( fileItem: CollectionItem, file: FilePointer ): Promise { if (!(file instanceof PathFilePointer)) { return ""; } const path = await file.getPath(); if (!path) { return "missing file"; } return tempstream /* HTML */ `
  • ${this.imageRouter.image(path, { resolutions: [150, 300], sizesAttr: "150px", alt: "", })} ${(await file.getOriginalFilename()) || "no filename"} ${this.renderFileRemoveButton(fileItem)}
  • `; } }