{"version":3,"file":"useChartData-D7PvtwdT.cjs","sources":["../src/dashboard/hooks/useChartData.ts"],"sourcesContent":["import { useMemo } from 'react';\nimport type { WidgetProps, ChartDataPoint, FieldMappingOverride } from '../types';\nimport { extractChartContract } from '../types';\nimport { useWidgetFetch } from './useWidgetFetch';\nimport { aggregateChartData } from '../utils/aggregateChartData';\nimport { resolveChartFields } from '../utils/resolveChartFields';\n\nexport interface ChartDataResult {\n  chartData: Record<string, unknown>[];\n  valueKeys: string[];\n  categoryField: string;\n  aliases: Record<string, string>;\n  data: ChartDataPoint[] | null;\n  loading: boolean;\n  error: string | null;\n}\n\n/**\n * Hook centralizado para resolución de datos en widgets de gráficas.\n * Elimina el useMemo duplicado en ChartLine, ChartVentasMensual, ChartBarHorizontal y ChartDonut.\n *\n * Resuelve: field_mapping → userOverride → config_schema → heurística (4 capas).\n * Propaga aliases para labels de leyenda y tooltip.\n */\nexport function useChartData(\n  definition: WidgetProps['definition'],\n  preference: WidgetProps['preference'],\n  period: WidgetProps['period'],\n): ChartDataResult {\n  const { data, loading, error } = useWidgetFetch<ChartDataPoint[]>(\n    definition.widget_id,\n    period,\n    definition.refresh_policy,\n    definition.field_mapping?.rename\n  );\n\n  const resolved = useMemo(() => {\n    if (!data || data.length === 0) {\n      return {\n        chartData: [],\n        valueKeys: [] as string[],\n        categoryField: 'name',\n        aliases: {} as Record<string, string>,\n      };\n    }\n\n    const raw = data as Record<string, unknown>[];\n    const userOverride = preference.config_json?.fieldMapping as FieldMappingOverride | undefined;\n    const { categoryField, valueFields } = resolveChartFields(\n      definition.config_schema,\n      raw,\n      userOverride,\n      definition.field_mapping\n    );\n    const contract = extractChartContract(definition.config_schema);\n    const chartData = aggregateChartData(raw, categoryField, valueFields, contract?.aggregation);\n    const aliases = {\n      ...(definition.field_mapping?.aliases ?? {}),\n      ...(userOverride?.aliases ?? {}),\n    };\n\n    return { chartData, valueKeys: valueFields, categoryField, aliases };\n  }, [data, definition.config_schema, definition.field_mapping, preference.config_json]);\n\n  return { ...resolved, data, loading, error };\n}\n"],"names":["useChartData","definition","preference","period","data","loading","error","useWidgetFetch","useMemo","raw","userOverride","categoryField","valueFields","resolveChartFields","contract","extractChartContract","chartData","aggregateChartData","aliases"],"mappings":"kKAwBO,SAASA,EACdC,EACAC,EACAC,EACiB,CACjB,KAAM,CAAE,KAAAC,EAAM,QAAAC,EAAS,MAAAC,CAAA,EAAUC,EAAAA,eAC/BN,EAAW,UACXE,EACAF,EAAW,eACXA,EAAW,eAAe,MAAA,EA+B5B,MAAO,CAAE,GA5BQO,EAAAA,QAAQ,IAAM,CAC7B,GAAI,CAACJ,GAAQA,EAAK,SAAW,EAC3B,MAAO,CACL,UAAW,CAAA,EACX,UAAW,CAAA,EACX,cAAe,OACf,QAAS,CAAA,CAAC,EAId,MAAMK,EAAML,EACNM,EAAeR,EAAW,aAAa,aACvC,CAAE,cAAAS,EAAe,YAAAC,CAAA,EAAgBC,EAAAA,mBACrCZ,EAAW,cACXQ,EACAC,EACAT,EAAW,aAAA,EAEPa,EAAWC,EAAAA,qBAAqBd,EAAW,aAAa,EACxDe,EAAYC,EAAAA,mBAAmBR,EAAKE,EAAeC,EAAaE,GAAU,WAAW,EACrFI,EAAU,CACd,GAAIjB,EAAW,eAAe,SAAW,CAAA,EACzC,GAAIS,GAAc,SAAW,CAAA,CAAC,EAGhC,MAAO,CAAE,UAAAM,EAAW,UAAWJ,EAAa,cAAAD,EAAe,QAAAO,CAAA,CAC7D,EAAG,CAACd,EAAMH,EAAW,cAAeA,EAAW,cAAeC,EAAW,WAAW,CAAC,EAE/D,KAAAE,EAAM,QAAAC,EAAS,MAAAC,CAAA,CACvC"}