{
let urls = flattenedRandomSelection.map(obj => obj.img_url);
let captions = flattenedRandomSelection.map(obj => obj.captions);
function Gallery() {
const [columns, setColumns] = useState(3);
const images = urls.map((url, index) => ({
url,
caption: captions[index],
}));
const rows = images.reduce(
(rows, image, index) =>
index % columns === 0
? [...rows, [image]]
: [...rows.slice(0, -1), [...rows.slice(-1)[0], image]],
[]
);
return React.createElement(
"div",
null,
React.createElement(
"div",
null,
React.createElement("label", null, "Number of columns: "),
React.createElement("input", {
type: "number",
min: "1",
max: "4",
value: columns,
onChange: (event) => setColumns(event.target.value),
})
),
React.createElement(
"div",
{
style: {
display: "flex",
flexDirection: "column",
gap: "16px",
},
},
rows.map((row, rowIndex) =>
React.createElement(
"div",
{
key: rowIndex,
style: {
display: "grid",
gridTemplateColumns: `repeat(${columns}, 1fr)`,
gap: "16px",
},
},
row.map((image, columnIndex) =>
React.createElement(
"div",
{ key: columnIndex, className: "image-container" },
React.createElement("img", { src: image.url, alt: image.caption }),
React.createElement("div", { className: "caption" }, image.caption)
)
)
)
)
)
);
}
ReactDOM.render(React.createElement(Gallery), document.getElementById("app"));
}