{"version":3,"file":"Component-5tZ5h_sR.mjs","sources":["../node_modules/@antscorp/antsomi-ui/es/components/icons/ArrowGrowIcon.js","../node_modules/@antscorp/antsomi-ui/es/components/icons/ArrowLineIcon.js","../src/components/ConversationMessage/extensions/NodeViews/ScoreCard/utils.tsx","../src/components/ConversationMessage/extensions/NodeViews/ScoreCard/hooks/useScoreCardNodeView.ts","../src/components/ConversationMessage/extensions/NodeViews/ScoreCard/Component.tsx"],"sourcesContent":["import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { forwardRef } from 'react';\nimport { useIcon } from './hooks/useIcon';\nexport const ArrowGrowIcon = forwardRef((props, ref) => {\n    const { width, height } = useIcon(props);\n    return (_jsx(\"svg\", { viewBox: \"0 0 32 32\", fill: \"currentColor\", ...props, ref: ref, width: width, height: height, children: _jsx(\"g\", { transform: \"scale(0.03125 0.03125)\", children: _jsx(\"path\", { d: \"M389.74 204.8v80.64h270.72l-476.16 476.16 57.6 57.6 476.16-476.16v270.72h80.64v-408.96z\" }) }) }));\n});\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { forwardRef } from 'react';\nimport { useIcon } from './hooks/useIcon';\nexport const ArrowLineIcon = forwardRef((props, ref) => {\n    const { width, height } = useIcon(props);\n    return (_jsx(\"svg\", { viewBox: \"0 0 24 24\", fill: \"currentColor\", xmlns: \"http://www.w3.org/2000/svg\", ...props, ref: ref, width: width, height: height, children: _jsx(\"path\", { d: \"M17.3463 15.6478L6.53566 4.83719C6.31986 4.62856 6.02554 4.5 5.70118 4.5C5.03779 4.5 4.5 5.03779 4.5 5.70118C4.5 6.02554 4.62856 6.31986 4.83751 6.53599L4.83719 6.53566L15.6478 17.3463L13.4941 19.5H19.5V13.4941L17.3463 15.6478Z\", fill: \"currentColor\" }) }));\n});\n","import { Report } from '@antscorp/antsomi-charts';\nimport { ArrowGrowIcon, ArrowLineIcon } from '@antscorp/antsomi-ui/es/components/icons';\nimport React from 'react';\nimport type { ApiScoreCardData, ScoreCardSettings } from '@/types';\n\nconst getRange = (settings: ScoreCardSettings): { fromRange: string; toRange: string } => {\n\tconst { defaultDateRange } = settings;\n\n\treturn { fromRange: defaultDateRange.fromRange, toRange: defaultDateRange.toRange };\n};\n\nexport const serializeReportPerfData = (params: {\n\tdata: ApiScoreCardData;\n\tsettings: ScoreCardSettings;\n}) => {\n\tconst { data, settings } = params;\n\n\tconst { rows } = data;\n\n\ttype TCompare = {\n\t\ticon: React.ReactNode;\n\t\tvalue: number;\n\t\tcolor?: string;\n\t};\n\n\tconst newState: {\n\t\tvalue: number;\n\t\tisNoData: boolean;\n\t\tcompare?: TCompare;\n\t\tconditionalFormattingStyle: Record<\n\t\t\tstring,\n\t\t\t{\n\t\t\t\t[key: string]: {\n\t\t\t\t\tcolor: string;\n\t\t\t\t\tbackgroundColor: string;\n\t\t\t\t};\n\t\t\t}\n\t\t>;\n\t} = {\n\t\tvalue: 0,\n\t\tisNoData: true,\n\t\tconditionalFormattingStyle: {},\n\t};\n\n\tif (rows.every((row) => row.value !== undefined)) {\n\t\tconst { metric: metrics, conditionalFormatting } = settings;\n\n\t\t// Check dimension moved metric\n\t\tlet metricName = '';\n\n\t\tif (metrics.length > 0) {\n\t\t\tmetricName = metrics.at(0)?.name || '';\n\t\t}\n\n\t\tconst { fromRange, toRange } = getRange(settings);\n\n\t\tconst isCompare = !!(fromRange && toRange);\n\n\t\tlet values: number[] = [];\n\n\t\tvalues = metricName\n\t\t\t? rows.reduce<number[]>((arr, cur) => {\n\t\t\t\t\tif (cur.name === metricName && cur.value) {\n\t\t\t\t\t\tarr.push(+cur.value);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn arr;\n\t\t\t\t}, [])\n\t\t\t: [];\n\n\t\tif (values && values.length > 0) {\n\t\t\tconst value = typeof values[0] !== 'undefined' ? +values[0] : 0;\n\n\t\t\tconst valueCompare = typeof values[1] !== 'undefined' ? +values[1] : 0;\n\n\t\t\tnewState.isNoData = false;\n\n\t\t\tif (typeof value === 'number') {\n\t\t\t\tnewState.value = value;\n\t\t\t}\n\n\t\t\tif (isCompare && valueCompare > 0) {\n\t\t\t\tconst compare: TCompare = { icon: null, value: Number.NaN };\n\n\t\t\t\tif (value < valueCompare) {\n\t\t\t\t\tcompare.icon = <ArrowLineIcon size={14} />;\n\t\t\t\t} else {\n\t\t\t\t\tcompare.icon = <ArrowGrowIcon size={14} />;\n\t\t\t\t}\n\n\t\t\t\t// Case value is missing data\n\t\t\t\tif (values[0] === null) {\n\t\t\t\t\tcompare.icon = <ArrowLineIcon size={14} />;\n\t\t\t\t}\n\n\t\t\t\tcompare.value = valueCompare;\n\n\t\t\t\tnewState.compare = {\n\t\t\t\t\t...newState,\n\t\t\t\t\t...compare,\n\t\t\t\t};\n\t\t\t} else if (isCompare) {\n\t\t\t\tconst compare: TCompare = {\n\t\t\t\t\tcolor: '',\n\t\t\t\t\ticon: null,\n\t\t\t\t\tvalue: Number.NaN,\n\t\t\t\t};\n\n\t\t\t\t// Case valueCompare is missing data\n\t\t\t\tif (typeof values[0] === 'number' && (values[1] === null || values[1] === 0)) {\n\t\t\t\t\tcompare.icon = <ArrowGrowIcon size={14} />;\n\t\t\t\t}\n\n\t\t\t\tnewState.compare = compare;\n\t\t\t} else {\n\t\t\t\tnewState.compare = {\n\t\t\t\t\tcolor: '',\n\t\t\t\t\ticon: null,\n\t\t\t\t\tvalue: Number.NaN,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// Conditional Formatting\n\t\t\tnewState.conditionalFormattingStyle = Report.buildConditionalFormatting(\n\t\t\t\tconditionalFormatting,\n\t\t\t\tmetrics,\n\t\t\t\trows,\n\t\t\t);\n\t\t} else {\n\t\t\tnewState.isNoData = true;\n\t\t}\n\t}\n\n\treturn { data: newState };\n};\n","import { useMemo, useState } from 'react';\nimport { useDeepCompareEffect } from 'use-deep-compare';\nimport { useChartNodeView } from '@/hooks/useChartNodeView';\nimport { ScoreCardAttrsSchema } from '@/schemas/tiptap';\nimport type { ChartNodeViewProps, ScoreCardAttrs } from '@/types/tiptap';\nimport { Utils } from '@/utils';\nimport { serializeReportPerfData } from '../utils';\n\ntype Params = {\n\tnodeViewProps: ChartNodeViewProps;\n};\n\nexport const useScoreCardNodeView = (params: Params) => {\n\tconst { nodeViewProps } = params;\n\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<ScoreCardAttrs>();\n\n\tuseDeepCompareEffect(() => {\n\t\tsetAttrs(ScoreCardAttrsSchema.parse(node.attrs));\n\t}, [node.attrs]);\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\tconst settings = useMemo(() => {\n\t\tif (!(attrs && dataSourceSchema)) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn Utils.nodeView.report.attrsToCompSetting({\n\t\t\tdataSourceSchema,\n\t\t\tattrs,\n\t\t});\n\t}, [attrs, dataSourceSchema]);\n\n\tconst serializedData = useMemo(() => {\n\t\tif (!(data && settings)) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn serializeReportPerfData({\n\t\t\tdata,\n\t\t\tsettings,\n\t\t});\n\t}, [data, settings]);\n\n\treturn { data: serializedData?.data, settings, isLoading, error };\n};\n","import { Report } from '@antscorp/antsomi-charts';\nimport { Spin } from '@antscorp/antsomi-ui';\nimport type { ChartNodeViewProps } from '@/types/tiptap';\nimport { useScoreCardNodeView } from './hooks';\n\nexport const ScoreCardNodeView = (props: ChartNodeViewProps) => {\n\tconst { chartWrapperSize, renderDropdownAction } = props;\n\n\tconst { settings, isLoading, data } = useScoreCardNodeView({ nodeViewProps: props });\n\n\tif (isLoading || !data || !settings || !chartWrapperSize) {\n\t\treturn <Spin indicatorSize={20} />;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<Report.ScoreCard\n\t\t\t\twidth={chartWrapperSize.width}\n\t\t\t\theight={chartWrapperSize.height}\n\t\t\t\tstyle={settings.style}\n\t\t\t\tdata={{\n\t\t\t\t\tvalue: data.value,\n\t\t\t\t\tcompare: data.compare,\n\t\t\t\t}}\n\t\t\t\tconditionalFormatting={settings.conditionalFormatting}\n\t\t\t\tdefaultDateRange={settings.defaultDateRange}\n\t\t\t\tmetric={settings.metric}\n\t\t\t/>\n\n\t\t\t{renderDropdownAction(data)}\n\t\t</>\n\t);\n};\n"],"names":["ArrowGrowIcon","forwardRef","props","ref","width","height","useIcon","_jsx","ArrowLineIcon","getRange","settings","defaultDateRange","serializeReportPerfData","params","data","rows","newState","row","metrics","conditionalFormatting","metricName","fromRange","toRange","isCompare","values","arr","cur","value","valueCompare","compare","React","Report","useScoreCardNodeView","nodeViewProps","options","node","messageId","dataSourceId","attrs","setAttrs","useState","useDeepCompareEffect","ScoreCardAttrsSchema","dataSourceSchema","isLoading","error","useChartNodeView","useMemo","Utils","ScoreCardNodeView","chartWrapperSize","renderDropdownAction","Spin"],"mappings":";;;;;;AAGO,MAAMA,IAAgBC,EAAW,CAACC,GAAOC,MAAQ;AACpD,QAAM,EAAE,OAAAC,GAAO,QAAAC,MAAWC,EAAQJ,CAAK;AACvC,SAAQK,EAAAA,IAAK,OAAO,EAAE,SAAS,aAAa,MAAM,gBAAgB,GAAGL,GAAO,KAAKC,GAAK,OAAOC,GAAO,QAAQC,GAAQ,UAAUE,EAAAA,IAAK,KAAK,EAAE,WAAW,0BAA0B,UAAUA,MAAK,QAAQ,EAAE,GAAG,0FAAyF,CAAE,EAAC,CAAE,EAAC,CAAE;AAChT,CAAC,GCHYC,IAAgBP,EAAW,CAACC,GAAOC,MAAQ;AACpD,QAAM,EAAE,OAAAC,GAAO,QAAAC,MAAWC,EAAQJ,CAAK;AACvC,SAAQK,MAAK,OAAO,EAAE,SAAS,aAAa,MAAM,gBAAgB,OAAO,8BAA8B,GAAGL,GAAO,KAAKC,GAAK,OAAOC,GAAO,QAAQC,GAAQ,UAAUE,EAAAA,IAAK,QAAQ,EAAE,GAAG,uOAAuO,MAAM,eAAc,CAAE,EAAC,CAAE;AACzb,CAAC,GCDKE,IAAW,CAACC,MAAwE;AACzF,QAAM,EAAE,kBAAAC,MAAqBD;AAE7B,SAAO,EAAE,WAAWC,EAAiB,WAAW,SAASA,EAAiB,QAAA;AAC3E,GAEaC,IAA0B,CAACC,MAGlC;AACL,QAAM,EAAE,MAAAC,GAAM,UAAAJ,EAAA,IAAaG,GAErB,EAAE,MAAAE,MAASD,GAQXE,IAaF;AAAA,IACH,OAAO;AAAA,IACP,UAAU;AAAA,IACV,4BAA4B,CAAA;AAAA,EAAC;AAG9B,MAAID,EAAK,MAAM,CAACE,MAAQA,EAAI,UAAU,MAAS,GAAG;AACjD,UAAM,EAAE,QAAQC,GAAS,uBAAAC,EAAA,IAA0BT;AAGnD,QAAIU,IAAa;AAEjB,IAAIF,EAAQ,SAAS,MACpBE,IAAaF,EAAQ,GAAG,CAAC,GAAG,QAAQ;AAGrC,UAAM,EAAE,WAAAG,GAAW,SAAAC,MAAYb,EAASC,CAAQ,GAE1Ca,IAAY,CAAC,EAAEF,KAAaC;AAElC,QAAIE,IAAmB,CAAA;AAYvB,QAVAA,IAASJ,IACNL,EAAK,OAAiB,CAACU,GAAKC,OACxBA,EAAI,SAASN,KAAcM,EAAI,SAClCD,EAAI,KAAK,CAACC,EAAI,KAAK,GAGbD,IACL,CAAA,CAAE,IACJ,CAAA,GAECD,KAAUA,EAAO,SAAS,GAAG;AAChC,YAAMG,IAAQ,OAAOH,EAAO,CAAC,IAAM,MAAc,CAACA,EAAO,CAAC,IAAI,GAExDI,IAAe,OAAOJ,EAAO,CAAC,IAAM,MAAc,CAACA,EAAO,CAAC,IAAI;AAQrE,UANAR,EAAS,WAAW,IAEhB,OAAOW,KAAU,aACpBX,EAAS,QAAQW,IAGdJ,KAAaK,IAAe,GAAG;AAClC,cAAMC,IAAoB,EAAE,MAAM,MAAM,OAAO,OAAO,IAAA;AAEtD,QAAIF,IAAQC,IACXC,EAAQ,OAAOC,gBAAAA,EAAA,cAACtB,GAAA,EAAc,MAAM,IAAI,IAExCqB,EAAQ,OAAOC,gBAAAA,EAAA,cAAC9B,GAAA,EAAc,MAAM,IAAI,GAIrCwB,EAAO,CAAC,MAAM,SACjBK,EAAQ,OAAOC,gBAAAA,EAAA,cAACtB,GAAA,EAAc,MAAM,IAAI,IAGzCqB,EAAQ,QAAQD,GAEhBZ,EAAS,UAAU;AAAA,UAClB,GAAGA;AAAA,UACH,GAAGa;AAAA,QAAA;AAAA,MAEL,WAAWN,GAAW;AACrB,cAAMM,IAAoB;AAAA,UACzB,OAAO;AAAA,UACP,MAAM;AAAA,UACN,OAAO,OAAO;AAAA,QAAA;AAIf,QAAI,OAAOL,EAAO,CAAC,KAAM,aAAaA,EAAO,CAAC,MAAM,QAAQA,EAAO,CAAC,MAAM,OACzEK,EAAQ,OAAOC,gBAAAA,EAAA,cAAC9B,GAAA,EAAc,MAAM,IAAI,IAGzCgB,EAAS,UAAUa;AAAA,MACpB;AACC,QAAAb,EAAS,UAAU;AAAA,UAClB,OAAO;AAAA,UACP,MAAM;AAAA,UACN,OAAO,OAAO;AAAA,QAAA;AAKhB,MAAAA,EAAS,6BAA6Be,EAAO;AAAA,QAC5CZ;AAAA,QACAD;AAAA,QACAH;AAAA,MAAA;AAAA,IAEF;AACC,MAAAC,EAAS,WAAW;AAAA,EAEtB;AAEA,SAAO,EAAE,MAAMA,EAAA;AAChB,GC1HagB,IAAuB,CAACnB,MAAmB;AACvD,QAAM,EAAE,eAAAoB,MAAkBpB,GAEpB;AAAA,IACL,WAAW,EAAE,SAAAqB,IAAU,GAAC;AAAA,IACxB,MAAAC;AAAA,EAAA,IACGF,GAEEG,IAAY,GAAGF,EAAQ,SAAS,IAChCG,IAAe,SAASH,EAAQ,cAAc,EAAE,KAAK,GAErD,CAACI,GAAOC,CAAQ,IAAIC,EAAA;AAE1B,EAAAC,EAAqB,MAAM;AAC1B,IAAAF,EAASG,EAAqB,MAAMP,EAAK,KAAK,CAAC;AAAA,EAChD,GAAG,CAACA,EAAK,KAAK,CAAC;AAEf,QAAM,EAAE,MAAArB,GAAM,kBAAA6B,GAAkB,WAAAC,GAAW,OAAAC,EAAA,IAAUC,EAAiB;AAAA,IACrE,IAAIV;AAAA,IACJ,OAAAE;AAAA,IACA,cAAAD;AAAA,IACA,SAAS,CAAC,CAACC;AAAA,EAAA,CACX,GAEK5B,IAAWqC,EAAQ,MAClBT,KAASK,IAIRK,EAAM,SAAS,OAAO,mBAAmB;AAAA,IAC/C,kBAAAL;AAAA,IACA,OAAAL;AAAA,EAAA,CACA,IANO,MAON,CAACA,GAAOK,CAAgB,CAAC;AAa5B,SAAO,EAAE,MAXcI,EAAQ,MACxBjC,KAAQJ,IAIPE,EAAwB;AAAA,IAC9B,MAAAE;AAAA,IACA,UAAAJ;AAAA,EAAA,CACA,IANO,MAON,CAACI,GAAMJ,CAAQ,CAAC,GAEY,MAAM,UAAAA,GAAU,WAAAkC,GAAW,OAAAC,EAAA;AAC3D,GCtDaI,IAAoB,CAAC/C,MAA8B;AAC/D,QAAM,EAAE,kBAAAgD,GAAkB,sBAAAC,EAAA,IAAyBjD,GAE7C,EAAE,UAAAQ,GAAU,WAAAkC,GAAW,MAAA9B,EAAA,IAASkB,EAAqB,EAAE,eAAe9B,GAAO;AAEnF,SAAI0C,KAAa,CAAC9B,KAAQ,CAACJ,KAAY,CAACwC,IAChC,sBAAA,cAACE,GAAA,EAAK,eAAe,GAAA,CAAI,IAIhC,sBAAA,cAAA,MAAA,UAAA,MACC,sBAAA;AAAA,IAACrB,EAAO;AAAA,IAAP;AAAA,MACA,OAAOmB,EAAiB;AAAA,MACxB,QAAQA,EAAiB;AAAA,MACzB,OAAOxC,EAAS;AAAA,MAChB,MAAM;AAAA,QACL,OAAOI,EAAK;AAAA,QACZ,SAASA,EAAK;AAAA,MAAA;AAAA,MAEf,uBAAuBJ,EAAS;AAAA,MAChC,kBAAkBA,EAAS;AAAA,MAC3B,QAAQA,EAAS;AAAA,IAAA;AAAA,EAAA,GAGjByC,EAAqBrC,CAAI,CAC3B;AAEF;","x_google_ignoreList":[0,1]}