{"version":3,"file":"Component-DHjdgrfM.mjs","sources":["../src/components/ConversationMessage/extensions/NodeViews/SunburstChart/utils.ts","../src/components/ConversationMessage/extensions/NodeViews/SunburstChart/hooks/useSunburstChartNodeView.ts","../src/components/ConversationMessage/extensions/NodeViews/SunburstChart/Component.tsx"],"sourcesContent":["import type { ReportSunburstChartData } from '@antscorp/antsomi-charts';\nimport type { ApiSunBurstChartData, SunburstChartSettings } from '@/types';\nimport { Utils } from '@/utils';\n\nexport const serializeReportPerfData = (params: {\n\tdata: ApiSunBurstChartData;\n\tsettings: SunburstChartSettings;\n}) => {\n\tconst { data, settings } = params;\n\n\tconst metrics = Utils.helpers.safeParseListField(settings.metric);\n\n\tconst renderMetric = settings.renderMetric\n\t\t? Utils.helpers.safeParseListField(settings.renderMetric)\n\t\t: metrics;\n\n\tconst metric = renderMetric.at(0);\n\n\tconst result: ReportSunburstChartData = [];\n\n\tfor (const row of data.rows) {\n\t\tif (!(row.length > 0 && metric)) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst matchedMetric = row.find(\n\t\t\t(item) => item.name === metric.name && item.aggregationType === metric.aggregation,\n\t\t);\n\n\t\tif (!matchedMetric) {\n\t\t\tthrow new Error('Not found metric');\n\t\t}\n\n\t\tconst arrDimension = row.filter(\n\t\t\t(item) =>\n\t\t\t\titem.semantics.conceptType === 'DIMENSION' && item.aggregationType !== metric.aggregation,\n\t\t);\n\n\t\tlet dimension: Record<string, Record<string, string>> | undefined;\n\n\t\tarrDimension.forEach((item, index) => {\n\t\t\tlet formattedValue: Record<string, string> = {};\n\n\t\t\tif (dimension?.[item.name]) {\n\t\t\t\tformattedValue = dimension[item.name];\n\t\t\t}\n\n\t\t\tformattedValue[index] = item.value;\n\n\t\t\tdimension = {\n\t\t\t\t...dimension,\n\n\t\t\t\t[item.name]: formattedValue,\n\t\t\t};\n\t\t});\n\n\t\tresult.push({\n\t\t\taggregations: [\n\t\t\t\t{\n\t\t\t\t\tname: matchedMetric.name,\n\t\t\t\t\ttype: matchedMetric.aggregationType,\n\t\t\t\t\tvalue: matchedMetric.value,\n\t\t\t\t},\n\t\t\t],\n\t\t\t...dimension,\n\t\t});\n\t}\n\n\treturn result;\n};\n","import type { NodeViewProps } from '@tiptap/react';\nimport { useMemo, useState } from 'react';\nimport { useDeepCompareEffect } from 'use-deep-compare';\nimport { useChartNodeView } from '@/hooks/useChartNodeView';\nimport { SunBurstChartAttrsSchema } from '@/schemas/tiptap';\nimport type { SunBurstChartAttrs } from '@/types/tiptap';\nimport { Utils } from '@/utils';\nimport { serializeReportPerfData } from '../utils';\n\ntype Params = {\n\tnodeViewProps: NodeViewProps;\n};\n\nexport const useSunBurstChartNodeView = (params: Params) => {\n\tconst { nodeViewProps } = params;\n\tconst {\n\t\textension: { options = {} },\n\t\tnode,\n\t} = nodeViewProps;\n\n\tconst messageId = `${options.messageId}`;\n\tconst dataSourceId = parseInt(options.dataSourceId, 10) || 0;\n\n\tconst [attrs, setAttrs] = useState<SunBurstChartAttrs>();\n\n\tconst { data, dataSourceSchema, isLoading, error } = useChartNodeView({\n\t\tid: messageId,\n\t\tattrs,\n\t\tdataSourceId,\n\t\tenabled: !!attrs,\n\t});\n\n\tuseDeepCompareEffect(() => {\n\t\tsetAttrs(SunBurstChartAttrsSchema.parse(node.attrs));\n\t}, [node.attrs]);\n\n\tconst serializedData = useMemo(() => {\n\t\tif (!(data && attrs && dataSourceSchema)) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst settings = Utils.nodeView.report.attrsToCompSetting({\n\t\t\tdataSourceSchema,\n\t\t\tattrs,\n\t\t});\n\n\t\treturn {\n\t\t\tdata: serializeReportPerfData({\n\t\t\t\tdata,\n\t\t\t\tsettings,\n\t\t\t}),\n\n\t\t\tsettings,\n\t\t};\n\t}, [data, attrs, dataSourceSchema]);\n\n\treturn { data: serializedData?.data, settings: serializedData?.settings, isLoading, error };\n};\n","import { Report } from '@antscorp/antsomi-charts';\nimport { Spin } from '@antscorp/antsomi-ui';\nimport type { ChartNodeViewProps } from '@/types/tiptap';\nimport { useSunBurstChartNodeView } from './hooks';\n\nexport const SunburstChartNodeView = (props: ChartNodeViewProps) => {\n\tconst { chartWrapperSize, renderDropdownAction } = props;\n\n\tconst { data, settings, isLoading } = useSunBurstChartNodeView({\n\t\tnodeViewProps: props,\n\t});\n\n\tif (isLoading || !data || !settings) {\n\t\treturn <Spin indicatorSize={20} />;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<Report.SunburstChart\n\t\t\t\tdata={data}\n\t\t\t\tmetric={settings.metric}\n\t\t\t\tdimension={settings.dimension}\n\t\t\t\twidth={chartWrapperSize?.width}\n\t\t\t\theight={chartWrapperSize?.height}\n\t\t\t/>\n\n\t\t\t{renderDropdownAction(data)}\n\t\t</>\n\t);\n};\n"],"names":["serializeReportPerfData","params","data","settings","metrics","Utils","metric","result","row","matchedMetric","item","arrDimension","dimension","index","formattedValue","useSunBurstChartNodeView","nodeViewProps","options","node","messageId","dataSourceId","attrs","setAttrs","useState","dataSourceSchema","isLoading","error","useChartNodeView","useDeepCompareEffect","SunBurstChartAttrsSchema","serializedData","useMemo","SunburstChartNodeView","props","chartWrapperSize","renderDropdownAction","Spin","Report"],"mappings":"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"}