import {LitElement, CSSResultGroup} from "lit" import {Constructor} from "../toolbox/handy-types.js" export function mixinCss(...newStyles: (undefined | CSSResultGroup)[]) { return function>(Base: C): C { return class extends Base { static styles = combineStyles( (Base).styles, newStyles, ) } } } function arrayize(item: T | T[]) { return [item].flat() } const notUndefined = (x: any) => x !== undefined function combineStyles( parentStyles: CSSResultGroup, newStyles: (undefined | CSSResultGroup)[] ) { const styles = [ ...(arrayize(parentStyles) ?? []), ...arrayize(newStyles), ] return styles .flat() .filter(notUndefined) }