/// import flatten from "css-flatten" import generateComponentId from "./utils/generateComponentId" const _pastCompIds = new Set() export function hashAndAddRuntimeUSS(style: string) { let compId = generateComponentId(style) if (_pastCompIds.has(compId)) return compId style = `.${compId} {${style}}` style = flatten(style) globalThis.___document.addRuntimeUSS(style) _pastCompIds.add(compId) return compId } /** * Similar to the Emotion api, this function takes a template string and returns * a class name that can be used to style an element. * @param strings * @param values * @returns */ export const emo = function (strings: TemplateStringsArray, ...values: any[]): string { let style = values.reduce((result, expr, index) => { const value = expr return result + (value ? value : "") + strings[index + 1] }, strings[0]) return hashAndAddRuntimeUSS(style) }