@antscorp/antsomi-genai 1.0.6 → 1.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/dist/Component-5tZ5h_sR.mjs +100 -0
  2. package/dist/Component-5tZ5h_sR.mjs.map +1 -0
  3. package/dist/{Component-CTfDbD_d.mjs → Component-7PEts-s_.mjs} +3342 -3345
  4. package/dist/Component-7PEts-s_.mjs.map +1 -0
  5. package/dist/Component-B83Wd5AE.mjs +83 -0
  6. package/dist/Component-B83Wd5AE.mjs.map +1 -0
  7. package/dist/{Component-DKrH_QkH.mjs → Component-BAZRbStH.mjs} +2 -1
  8. package/dist/Component-BAZRbStH.mjs.map +1 -0
  9. package/dist/Component-BzsuO3n8.mjs +142 -0
  10. package/dist/Component-BzsuO3n8.mjs.map +1 -0
  11. package/dist/Component-CEhBJFCA.mjs +313 -0
  12. package/dist/Component-CEhBJFCA.mjs.map +1 -0
  13. package/dist/Component-DHjdgrfM.mjs +86 -0
  14. package/dist/Component-DHjdgrfM.mjs.map +1 -0
  15. package/dist/Component-G49xxeB4.mjs +241 -0
  16. package/dist/Component-G49xxeB4.mjs.map +1 -0
  17. package/dist/Component-YV3sGbWg.mjs +261 -0
  18. package/dist/Component-YV3sGbWg.mjs.map +1 -0
  19. package/dist/Component-d7cDCRNK.mjs +141 -0
  20. package/dist/Component-d7cDCRNK.mjs.map +1 -0
  21. package/dist/{index-Cmy0W3pf.mjs → index-6GAQ9ihW.mjs} +1210 -1269
  22. package/dist/index-6GAQ9ihW.mjs.map +1 -0
  23. package/dist/{index-CQEJnKKK.mjs → index-BT1TrqjD.mjs} +2 -1
  24. package/dist/index-BT1TrqjD.mjs.map +1 -0
  25. package/dist/index-C64kNXxs.mjs +249 -0
  26. package/dist/index-C64kNXxs.mjs.map +1 -0
  27. package/dist/index-C7wLrNkc.mjs +6 -0
  28. package/dist/index-C7wLrNkc.mjs.map +1 -0
  29. package/dist/{index-sCbsA1DR.mjs → index-CPJ3867M.mjs} +3 -2
  30. package/dist/index-CPJ3867M.mjs.map +1 -0
  31. package/dist/{index-B5HGiE1g.mjs → index-CmRpViq1.mjs} +3561 -3509
  32. package/dist/index-CmRpViq1.mjs.map +1 -0
  33. package/dist/index-D04sfX5-.mjs +6 -0
  34. package/dist/index-D04sfX5-.mjs.map +1 -0
  35. package/dist/{index-j8mMwpTN.mjs → index-DWnKer9T.mjs} +188 -183
  36. package/dist/index-DWnKer9T.mjs.map +1 -0
  37. package/dist/{index-BunB7Zfa.mjs → index-Ddza-lgc.mjs} +3 -2
  38. package/dist/index-Ddza-lgc.mjs.map +1 -0
  39. package/dist/index-DljyD4y3.mjs +6 -0
  40. package/dist/index-DljyD4y3.mjs.map +1 -0
  41. package/dist/{index-DiwQ5kuX.mjs → index-DsNdziRt.mjs} +2 -1
  42. package/dist/index-DsNdziRt.mjs.map +1 -0
  43. package/dist/{index-Dh9EYLoH.mjs → index-Ne7pf9XK.mjs} +22 -21
  44. package/dist/index-Ne7pf9XK.mjs.map +1 -0
  45. package/dist/{index-JaNOziH3.mjs → index-YlVaQR0G.mjs} +3 -2
  46. package/dist/index-YlVaQR0G.mjs.map +1 -0
  47. package/dist/index.es.js +2 -1
  48. package/dist/index.es.js.map +1 -0
  49. package/dist/toNumber-CHl49cGq.mjs +1 -0
  50. package/dist/toNumber-CHl49cGq.mjs.map +1 -0
  51. package/dist/{useGetSchema-B4FeKOfN.mjs → useGetSchema-BYpDKZeF.mjs} +2 -1
  52. package/dist/useGetSchema-BYpDKZeF.mjs.map +1 -0
  53. package/package.json +3 -4
  54. package/dist/Component-BKr0w4Us.mjs +0 -86
  55. package/dist/Component-BgBLJsOt.mjs +0 -316
  56. package/dist/Component-DCaEyotc.mjs +0 -264
  57. package/dist/Component-DOVG-vCq.mjs +0 -144
  58. package/dist/Component-DXg6OcXi.mjs +0 -244
  59. package/dist/Component-Deoa-f1C.mjs +0 -89
  60. package/dist/Component-JWAUzkP5.mjs +0 -103
  61. package/dist/Component-UboAHscO.mjs +0 -145
  62. package/dist/index-DHqQn4M-.mjs +0 -5
  63. package/dist/index-DUG__POS.mjs +0 -5
  64. package/dist/index-RnRjfUZ7.mjs +0 -5
  65. package/dist/index-uqO3Q0gN.mjs +0 -210
@@ -0,0 +1,100 @@
1
+ import { Report as S } from "@antscorp/antsomi-charts";
2
+ import { Spin as x } from "@antscorp/antsomi-ui";
3
+ import h, { forwardRef as C, useState as D, useMemo as w } from "react";
4
+ import { a as N, j as g, a8 as z, U as y } from "./index-CmRpViq1.mjs";
5
+ import { u as E } from "./useGetSchema-BYpDKZeF.mjs";
6
+ import { i as I } from "./index-DWnKer9T.mjs";
7
+ const v = C((t, a) => {
8
+ const { width: i, height: e } = N(t);
9
+ return g.jsx("svg", { viewBox: "0 0 32 32", fill: "currentColor", ...t, ref: a, width: i, height: e, children: g.jsx("g", { transform: "scale(0.03125 0.03125)", children: g.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" }) }) });
10
+ }), R = C((t, a) => {
11
+ const { width: i, height: e } = N(t);
12
+ return g.jsx("svg", { viewBox: "0 0 24 24", fill: "currentColor", xmlns: "http://www.w3.org/2000/svg", ...t, ref: a, width: i, height: e, children: g.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" }) });
13
+ }), L = (t) => {
14
+ const { defaultDateRange: a } = t;
15
+ return { fromRange: a.fromRange, toRange: a.toRange };
16
+ }, b = (t) => {
17
+ const { data: a, settings: i } = t, { rows: e } = a, o = {
18
+ value: 0,
19
+ isNoData: !0,
20
+ conditionalFormattingStyle: {}
21
+ };
22
+ if (e.every((n) => n.value !== void 0)) {
23
+ const { metric: n, conditionalFormatting: d } = i;
24
+ let u = "";
25
+ n.length > 0 && (u = n.at(0)?.name || "");
26
+ const { fromRange: m, toRange: f } = L(i), p = !!(m && f);
27
+ let r = [];
28
+ if (r = u ? e.reduce((s, c) => (c.name === u && c.value && s.push(+c.value), s), []) : [], r && r.length > 0) {
29
+ const s = typeof r[0] < "u" ? +r[0] : 0, c = typeof r[1] < "u" ? +r[1] : 0;
30
+ if (o.isNoData = !1, typeof s == "number" && (o.value = s), p && c > 0) {
31
+ const l = { icon: null, value: Number.NaN };
32
+ s < c ? l.icon = /* @__PURE__ */ h.createElement(R, { size: 14 }) : l.icon = /* @__PURE__ */ h.createElement(v, { size: 14 }), r[0] === null && (l.icon = /* @__PURE__ */ h.createElement(R, { size: 14 })), l.value = c, o.compare = {
33
+ ...o,
34
+ ...l
35
+ };
36
+ } else if (p) {
37
+ const l = {
38
+ color: "",
39
+ icon: null,
40
+ value: Number.NaN
41
+ };
42
+ typeof r[0] == "number" && (r[1] === null || r[1] === 0) && (l.icon = /* @__PURE__ */ h.createElement(v, { size: 14 })), o.compare = l;
43
+ } else
44
+ o.compare = {
45
+ color: "",
46
+ icon: null,
47
+ value: Number.NaN
48
+ };
49
+ o.conditionalFormattingStyle = S.buildConditionalFormatting(
50
+ d,
51
+ n,
52
+ e
53
+ );
54
+ } else
55
+ o.isNoData = !0;
56
+ }
57
+ return { data: o };
58
+ }, j = (t) => {
59
+ const { nodeViewProps: a } = t, {
60
+ extension: { options: i = {} },
61
+ node: e
62
+ } = a, o = `${i.messageId}`, n = parseInt(i.dataSourceId, 10) || 0, [d, u] = D();
63
+ z(() => {
64
+ u(I.parse(e.attrs));
65
+ }, [e.attrs]);
66
+ const { data: m, dataSourceSchema: f, isLoading: p, error: r } = E({
67
+ id: o,
68
+ attrs: d,
69
+ dataSourceId: n,
70
+ enabled: !!d
71
+ }), s = w(() => d && f ? y.nodeView.report.attrsToCompSetting({
72
+ dataSourceSchema: f,
73
+ attrs: d
74
+ }) : null, [d, f]);
75
+ return { data: w(() => m && s ? b({
76
+ data: m,
77
+ settings: s
78
+ }) : null, [m, s])?.data, settings: s, isLoading: p, error: r };
79
+ }, U = (t) => {
80
+ const { chartWrapperSize: a, renderDropdownAction: i } = t, { settings: e, isLoading: o, data: n } = j({ nodeViewProps: t });
81
+ return o || !n || !e || !a ? /* @__PURE__ */ React.createElement(x, { indicatorSize: 20 }) : /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
82
+ S.ScoreCard,
83
+ {
84
+ width: a.width,
85
+ height: a.height,
86
+ style: e.style,
87
+ data: {
88
+ value: n.value,
89
+ compare: n.compare
90
+ },
91
+ conditionalFormatting: e.conditionalFormatting,
92
+ defaultDateRange: e.defaultDateRange,
93
+ metric: e.metric
94
+ }
95
+ ), i(n));
96
+ };
97
+ export {
98
+ U as ScoreCardNodeView
99
+ };
100
+ //# sourceMappingURL=Component-5tZ5h_sR.mjs.map
@@ -0,0 +1 @@
1
+ {"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":"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","x_google_ignoreList":[0,1]}