UNPKG

nuxt-og-image

Version:

Enlightened OG Image generation for Nuxt.

61 lines (60 loc) 1.35 kB
import { defineSatoriTransformer } from "../utils.js"; const BLOCK_ELEMENTS = [ "div", "p", "ul", "ol", "li", "blockquote", "pre", "hr", "table", "dl" ]; const INLINE_ELEMENTS = [ "span", "a", "b", "i", "u", "em", "strong", "code", "abbr", "del", "ins", "mark", "sub", "sup", "small", "p", "h1", "h2", "h3", "h4", "h5" ]; export default defineSatoriTransformer({ filter: (node) => [...INLINE_ELEMENTS, "div"].includes(node.type) && (Array.isArray(node.props?.children) && node.props?.children.length >= 1) && !node.props?.class?.includes("hidden"), transform: (node) => { node.props.style = node.props.style || {}; if (node.props.style?.display && node.props.style?.display !== "flex") { return; } if (node.type === "div") { node.props.style.display = "flex"; if (!node.props?.class?.includes("flex-") && node.props.children.some((child) => BLOCK_ELEMENTS.includes(child.type))) { node.props.style.flexDirection = "column"; return; } } let flexWrap = node.props?.class?.includes("flex-wrap"); if (!node.props?.class?.includes("flex-")) { node.props.style.flexWrap = "wrap"; flexWrap = true; } if (flexWrap && !node.props?.class?.includes("gap")) { node.props.style.gap = "0.2em"; } } });