{"version":3,"file":"styleMap.cjs","names":[],"sources":["../../src/directives/styleMap.ts"],"sourcesContent":["import { computed, type Readable } from '@vielzeug/ripple';\n\nimport { resolveMaybeReactive, sanitizeCssToken, toKebab } from '../utils/dom';\n\ntype StyleInput =\n  | string\n  | number\n  | null\n  | undefined\n  | false\n  | (() => string | number | null | undefined | false)\n  | Readable<string | number | null | undefined | false>;\n\nconst toStyleValue = (value: StyleInput): string => {\n  const resolved = resolveMaybeReactive(value);\n\n  if (resolved == null || resolved === false) return '';\n\n  return sanitizeCssToken(String(resolved));\n};\n\n/**\n * Builds a reactive inline style string from a style object.\n *\n * Takes a record of CSS property names (camelCase) with values that can be:\n * - Static strings/numbers\n * - Functions that return strings/numbers\n * - Signals for reactive updates\n *\n * @example\n * ```ts\n * const color = signal('red');\n * const size = signal(16);\n *\n * html`<div style=${styleMap({\n *   backgroundColor: color,\n *   width: () => `${size.value}px`,\n *   padding: '10px'\n * })}></div>`\n * ```\n */\nexport const styleMap = (record: Record<string, StyleInput>): Readable<string> => {\n  return computed(() => {\n    const declarations: string[] = [];\n\n    for (const [name, input] of Object.entries(record)) {\n      const value = toStyleValue(input);\n\n      if (!value) continue;\n\n      const safeName = sanitizeCssToken(toKebab(name));\n\n      if (!safeName) continue;\n\n      declarations.push(`${safeName}:${value}`);\n    }\n\n    return declarations.join(';');\n  });\n};\n"],"mappings":"sEAaA,IAAM,EAAgB,GAA8B,CAClD,IAAM,EAAW,EAAA,qBAAqB,CAAK,EAI3C,OAFI,GAAY,MAAQ,IAAa,GAAc,GAE5C,EAAA,iBAAiB,OAAO,CAAQ,CAAC,CAC1C,EAsBa,EAAY,IACvB,EAAO,EAAA,SAAA,KAAe,CACpB,IAAM,EAAyB,CAAC,EAEhC,IAAK,GAAM,CAAC,EAAM,KAAU,OAAO,QAAQ,CAAM,EAAG,CAClD,IAAM,EAAQ,EAAa,CAAK,EAEhC,GAAI,CAAC,EAAO,SAEZ,IAAM,EAAW,EAAA,iBAAiB,EAAA,QAAQ,CAAI,CAAC,EAE1C,GAEL,EAAa,KAAK,GAAG,EAAS,GAAG,GAAO,CAC1C,CAEA,OAAO,EAAa,KAAK,GAAG,CAC9B,CAAC"}