{"version":3,"file":"componentUtils.cjs","sources":["../../../../src/components/utils/componentUtils.ts"],"sourcesContent":["import {\n  ComponentKeys,\n  ComponentCategoryKey,\n} from '../ui/props';\n\nexport function pickFirstTruthyKeyByCategory<T extends ComponentCategoryKey>(\n  props: Record<string, unknown>,\n  defaults: Record<string, unknown>,\n  category: T\n): typeof ComponentKeys[T][number] | undefined {\n  const keys = ComponentKeys[category];\n\n  const falsyKeys: string[] = [];\n\n  for (const k of keys) {\n    const p = props[k];\n    if (p === true)\n      return k as typeof ComponentKeys[T][number];\n    if (p === false)\n      falsyKeys.push(k);\n  }\n\n  for (const k of keys) {\n    const d = defaults[k];\n    if (d === true && !falsyKeys.includes(k))\n      return k as typeof ComponentKeys[T][number];\n  }\n\n  return undefined;\n}\n\n/** Categories whose side toggles compose (union) instead of being one-of. */\nexport const MULTI_VALUE_CATEGORIES = new Set<string>(['border', 'margin']);\n\n/**\n * Collect every active key for a composable category (border/margin). Explicit\n * truthy props win over defaults as a set; a `no*` reset (noBorder/noMargin) in\n * the selection overrides all side toggles.\n */\nexport function collectTruthyKeysByCategory<T extends ComponentCategoryKey>(\n  props: Record<string, unknown>,\n  defaults: Record<string, unknown>,\n  category: T\n): string[] {\n  const keys = ComponentKeys[category] as readonly string[];\n\n  const explicitOn = keys.filter(k => props[k] === true);\n  const selected = explicitOn.length > 0\n    ? explicitOn\n    : keys.filter(k => defaults[k] === true && props[k] !== false);\n\n  const reset = selected.find(k => k.startsWith('no'));\n  return reset ? [reset] : selected;\n}\n\n/** Reset key that wins when a multi-value category's truthy keys mix a `no*` reset with side toggles. */\nexport function resetConflictKey(truthyKeys: readonly string[]): string | undefined {\n  const reset = truthyKeys.find(k => k.startsWith('no'));\n  return reset && truthyKeys.length > 1 ? reset : undefined;\n}\n"],"names":["keys","ComponentKeys"],"mappings":";;;;AAKO,SAAS,4BAAA,CACd,KAAA,EACA,QAAA,EACA,QAAA,EAC6C;AAC7C,EAAA,MAAMA,MAAA,GAAOC,mBAAc,QAAQ,CAAA;AAEnC,EAAA,MAAM,YAAsB,EAAC;AAE7B,EAAA,KAAA,MAAW,KAAKD,MAAA,EAAM;AACpB,IAAA,MAAM,CAAA,GAAI,MAAM,CAAC,CAAA;AACjB,IAAA,IAAI,CAAA,KAAM,IAAA;AACR,MAAA,OAAO,CAAA;AACT,IAAA,IAAI,CAAA,KAAM,KAAA;AACR,MAAA,SAAA,CAAU,KAAK,CAAC,CAAA;AAAA,EACpB;AAEA,EAAA,KAAA,MAAW,KAAKA,MAAA,EAAM;AACpB,IAAA,MAAM,CAAA,GAAI,SAAS,CAAC,CAAA;AACpB,IAAA,IAAI,CAAA,KAAM,IAAA,IAAQ,CAAC,SAAA,CAAU,SAAS,CAAC,CAAA;AACrC,MAAA,OAAO,CAAA;AAAA,EACX;AAEA,EAAA,OAAO,MAAA;AACT;AAGO,MAAM,yCAAyB,IAAI,GAAA,CAAY,CAAC,QAAA,EAAU,QAAQ,CAAC;AAOnE,SAAS,2BAAA,CACd,KAAA,EACA,QAAA,EACA,QAAA,EACU;AACV,EAAA,MAAMA,MAAA,GAAOC,mBAAc,QAAQ,CAAA;AAEnC,EAAA,MAAM,aAAaD,MAAA,CAAK,MAAA,CAAO,OAAK,KAAA,CAAM,CAAC,MAAM,IAAI,CAAA;AACrD,EAAA,MAAM,QAAA,GAAW,UAAA,CAAW,MAAA,GAAS,CAAA,GACjC,aACAA,MAAA,CAAK,MAAA,CAAO,CAAA,CAAA,KAAK,QAAA,CAAS,CAAC,CAAA,KAAM,IAAA,IAAQ,KAAA,CAAM,CAAC,MAAM,KAAK,CAAA;AAE/D,EAAA,MAAM,QAAQ,QAAA,CAAS,IAAA,CAAK,OAAK,CAAA,CAAE,UAAA,CAAW,IAAI,CAAC,CAAA;AACnD,EAAA,OAAO,KAAA,GAAQ,CAAC,KAAK,CAAA,GAAI,QAAA;AAC3B;AAGO,SAAS,iBAAiB,UAAA,EAAmD;AAClF,EAAA,MAAM,QAAQ,UAAA,CAAW,IAAA,CAAK,OAAK,CAAA,CAAE,UAAA,CAAW,IAAI,CAAC,CAAA;AACrD,EAAA,OAAO,KAAA,IAAS,UAAA,CAAW,MAAA,GAAS,CAAA,GAAI,KAAA,GAAQ,MAAA;AAClD;;;;;;;"}