@embeddable.com/remarkable-pro 0.3.0 → 0.3.2
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.
- package/dist/AreaChartPro.js +9 -0
- package/dist/AreaChartPro.js.map +1 -0
- package/dist/BarChartDefaultHorizontalPro.js +1 -1
- package/dist/BarChartDefaultPro.js +1 -1
- package/dist/BarChartGroupedHorizontalPro.js +1 -1
- package/dist/BarChartGroupedPro.js +1 -1
- package/dist/BarChartStackedHorizontalPro.js +1 -1
- package/dist/BarChartStackedPro.js +1 -1
- package/dist/BarLineChartPro.js +1 -1
- package/dist/BubbleChartPro.js +1 -1
- package/dist/{ChartCard-CZ0PnrNg.js → ChartCard-HpSv5cY6.js} +3 -3
- package/dist/{ChartCard-CZ0PnrNg.js.map → ChartCard-HpSv5cY6.js.map} +1 -1
- package/dist/{Color.type.emb-BIGAgWMV.js → Color.type.emb-DV4JdSJ1.js} +2 -2
- package/dist/{Color.type.emb-BIGAgWMV.js.map → Color.type.emb-DV4JdSJ1.js.map} +1 -1
- package/dist/ColorEditor.js +3 -3
- package/dist/ComparisonPeriodSelectFieldPro.js +1 -1
- package/dist/DateRangePickerCustomPro.js +1 -1
- package/dist/DateRangeSelectFieldPro.js +1 -1
- package/dist/{DimensionAndMeasureSingleSelectField-CtdvYxT1.js → DimensionAndMeasureSingleSelectField-Cjvt8w1Q.js} +3 -3
- package/dist/{DimensionAndMeasureSingleSelectField-CtdvYxT1.js.map → DimensionAndMeasureSingleSelectField-Cjvt8w1Q.js.map} +1 -1
- package/dist/DimensionMeasureMultiSelectFieldPro.js +1 -1
- package/dist/DimensionSingleSelectFieldPro.js +1 -1
- package/dist/DonutChartPro.js +1 -1
- package/dist/DonutLabelChartPro.js +1 -1
- package/dist/{EditorCard-DOCprGOC.js → EditorCard-G99fWjyz.js} +3 -3
- package/dist/{EditorCard-DOCprGOC.js.map → EditorCard-G99fWjyz.js.map} +1 -1
- package/dist/FilterBuilderPro.js +6 -599
- package/dist/FilterBuilderPro.js.map +1 -1
- package/dist/{GranularitySelectField-Cohuw09B.js → GranularitySelectField-DjBne_Oc.js} +3 -3
- package/dist/{GranularitySelectField-Cohuw09B.js.map → GranularitySelectField-DjBne_Oc.js.map} +1 -1
- package/dist/GranularitySelectFieldPro.js +1 -1
- package/dist/HeatMapPro.js +1 -1
- package/dist/HorizontalDividerPro.js +1 -1
- package/dist/{IconAlertCircle-DUAK1fGK.js → IconAlertCircle-KfXTNipA.js} +2 -2
- package/dist/{IconAlertCircle-DUAK1fGK.js.map → IconAlertCircle-KfXTNipA.js.map} +1 -1
- package/dist/{IconCalendarFilled-CINFYlTl.js → IconCalendarFilled-D5PZLEXY.js} +2 -2
- package/dist/{IconCalendarFilled-CINFYlTl.js.map → IconCalendarFilled-D5PZLEXY.js.map} +1 -1
- package/dist/KpiChartNumberComparisonPro.js +1 -1
- package/dist/KpiChartNumberPro.js +1 -1
- package/dist/LineChartComparisonDefaultPro.js +1 -1
- package/dist/LineChartComparisonWithKpiTabsPro.js +1 -1
- package/dist/LineChartDefaultPro.js +1 -1
- package/dist/LineChartGroupedPro.js +1 -1
- package/dist/LineChartWithKpiTabsPro.js +1 -1
- package/dist/{Markdown.type.emb-BW5a17Dq.js → Markdown.type.emb-Dk3zx_Z_.js} +2 -2
- package/dist/{Markdown.type.emb-BW5a17Dq.js.map → Markdown.type.emb-Dk3zx_Z_.js.map} +1 -1
- package/dist/MarkdownEditor.js +3 -3
- package/dist/MarkdownPro.js +1 -1
- package/dist/MeasureMultiSelectFieldPro.js +1 -1
- package/dist/MeasureSingleSelectFieldPro.js +1 -1
- package/dist/MultiSelectFieldPro.js +1 -1
- package/dist/PieChartPro.js +1 -1
- package/dist/PivotTablePro.js +1 -1
- package/dist/ScatterChartPro.js +1 -1
- package/dist/SingleSelectFieldPro.js +1 -1
- package/dist/TableChartPaginated.js +1 -1
- package/dist/TableScrollable.js +1 -1
- package/dist/TextFieldPro.js +1 -1
- package/dist/{af-DAwLzFyQ.js → af-ZdqBoxvz.js} +3 -3
- package/dist/{af-DAwLzFyQ.js.map → af-ZdqBoxvz.js.map} +1 -1
- package/dist/{am-Du9eFhTc.js → am-CXwRMatH.js} +3 -3
- package/dist/{am-Du9eFhTc.js.map → am-CXwRMatH.js.map} +1 -1
- package/dist/{ar-D5eaA6T8.js → ar-BJFE7Sef.js} +3 -3
- package/dist/{ar-D5eaA6T8.js.map → ar-BJFE7Sef.js.map} +1 -1
- package/dist/{az-fLu9M4tv.js → az-Dt4sn4aC.js} +3 -3
- package/dist/{az-fLu9M4tv.js.map → az-Dt4sn4aC.js.map} +1 -1
- package/dist/{bars.loadData.utils-B0lfGqZc.js → bars.loadData.utils-3UelaqzK.js} +4 -4
- package/dist/{bars.loadData.utils-B0lfGqZc.js.map → bars.loadData.utils-3UelaqzK.js.map} +1 -1
- package/dist/{bars.utils-D8yNEyOY.js → bars.utils-lZnqwfM9.js} +5 -5
- package/dist/{bars.utils-D8yNEyOY.js.map → bars.utils-lZnqwfM9.js.map} +1 -1
- package/dist/{be-CyiOW6mE.js → be-DGrUB3zO.js} +3 -3
- package/dist/{be-CyiOW6mE.js.map → be-DGrUB3zO.js.map} +1 -1
- package/dist/{bg-Dk718QGq.js → bg-COQN-gIK.js} +3 -3
- package/dist/{bg-Dk718QGq.js.map → bg-COQN-gIK.js.map} +1 -1
- package/dist/{bi-C-LmqCP8.js → bi-BO2nWiL3.js} +3 -3
- package/dist/{bi-C-LmqCP8.js.map → bi-BO2nWiL3.js.map} +1 -1
- package/dist/{bm-OBWyGvGY.js → bm-CR4eF7bj.js} +3 -3
- package/dist/{bm-OBWyGvGY.js.map → bm-CR4eF7bj.js.map} +1 -1
- package/dist/{bn-D-xdgrUj.js → bn-C_fBN8Xp.js} +3 -3
- package/dist/{bn-D-xdgrUj.js.map → bn-C_fBN8Xp.js.map} +1 -1
- package/dist/{bo-CoLXee-r.js → bo-BK9OEqED.js} +3 -3
- package/dist/{bo-CoLXee-r.js.map → bo-BK9OEqED.js.map} +1 -1
- package/dist/{br-B_xHrKQ-.js → br-DQKSzpVY.js} +3 -3
- package/dist/{br-B_xHrKQ-.js.map → br-DQKSzpVY.js.map} +1 -1
- package/dist/{bs-CfuyC6Bw.js → bs-Du7exlVK.js} +3 -3
- package/dist/{bs-CfuyC6Bw.js.map → bs-Du7exlVK.js.map} +1 -1
- package/dist/{ca-CmO00L5E.js → ca-B1GdPrYy.js} +3 -3
- package/dist/{ca-CmO00L5E.js.map → ca-B1GdPrYy.js.map} +1 -1
- package/dist/{charts.fillGaps.hooks-CxXM5Ff3.js → charts.fillGaps.hooks-CvS5tfFP.js} +6 -6
- package/dist/{charts.fillGaps.hooks-CxXM5Ff3.js.map → charts.fillGaps.hooks-CvS5tfFP.js.map} +1 -1
- package/dist/charts.utils-LTooRxIg.js +79 -0
- package/dist/charts.utils-LTooRxIg.js.map +1 -0
- package/dist/{component.inputs.constants-BFlnzCwS.js → component.inputs.constants-DYl-U975.js} +4 -4
- package/dist/{component.inputs.constants-BFlnzCwS.js.map → component.inputs.constants-DYl-U975.js.map} +1 -1
- package/dist/components/charts/charts.utils.d.ts.map +1 -1
- package/dist/components/charts/kpis/KpiChartNumberComparisonPro/KpiChartNumberComparisonPro.emb.d.ts +3 -1
- package/dist/components/charts/kpis/KpiChartNumberComparisonPro/KpiChartNumberComparisonPro.emb.d.ts.map +1 -1
- package/dist/components/charts/kpis/KpiChartNumberComparisonPro/definition.d.ts +6 -2
- package/dist/components/charts/kpis/KpiChartNumberComparisonPro/definition.d.ts.map +1 -1
- package/dist/components/charts/kpis/KpiChartNumberPro/KpiChartNumberPro.emb.d.ts +2 -0
- package/dist/components/charts/kpis/KpiChartNumberPro/KpiChartNumberPro.emb.d.ts.map +1 -1
- package/dist/components/charts/kpis/KpiChartNumberPro/definition.d.ts +4 -0
- package/dist/components/charts/kpis/KpiChartNumberPro/definition.d.ts.map +1 -1
- package/dist/components/charts/lines/AreaChartPro/AreaChartPro.emb.d.ts +166 -0
- package/dist/components/charts/lines/AreaChartPro/AreaChartPro.emb.d.ts.map +1 -0
- package/dist/components/charts/lines/AreaChartPro/AreaChartPro.utils.d.ts +27 -0
- package/dist/components/charts/lines/AreaChartPro/AreaChartPro.utils.d.ts.map +1 -0
- package/dist/components/charts/lines/AreaChartPro/AreaChartPro.utils.test.d.ts +2 -0
- package/dist/components/charts/lines/AreaChartPro/AreaChartPro.utils.test.d.ts.map +1 -0
- package/dist/components/charts/lines/AreaChartPro/definition.d.ts +393 -0
- package/dist/components/charts/lines/AreaChartPro/definition.d.ts.map +1 -0
- package/dist/components/charts/lines/AreaChartPro/index.d.ts +9 -0
- package/dist/components/charts/lines/AreaChartPro/index.d.ts.map +1 -0
- package/dist/components/charts/lines/AreaChartPro/index.test.d.ts +2 -0
- package/dist/components/charts/lines/AreaChartPro/index.test.d.ts.map +1 -0
- package/dist/components/charts/lines/LineChartComparisonDefaultPro/LineChartComparisonDefaultPro.emb.d.ts +1 -1
- package/dist/components/charts/lines/LineChartComparisonDefaultPro/definition.d.ts +2 -2
- package/dist/components/charts/lines/LineChartComparisonDefaultPro/definition.d.ts.map +1 -1
- package/dist/components/charts/lines/LineChartComparisonWithKpiTabsPro/LineChartComparisonWithKpiTabsPro.emb.d.ts +3 -1
- package/dist/components/charts/lines/LineChartComparisonWithKpiTabsPro/LineChartComparisonWithKpiTabsPro.emb.d.ts.map +1 -1
- package/dist/components/charts/lines/LineChartComparisonWithKpiTabsPro/definition.d.ts +10 -6
- package/dist/components/charts/lines/LineChartComparisonWithKpiTabsPro/definition.d.ts.map +1 -1
- package/dist/components/charts/lines/LineChartWithKpiTabsPro/LineChartWithKpiTabsPro.emb.d.ts +2 -0
- package/dist/components/charts/lines/LineChartWithKpiTabsPro/LineChartWithKpiTabsPro.emb.d.ts.map +1 -1
- package/dist/components/charts/lines/LineChartWithKpiTabsPro/definition.d.ts +4 -0
- package/dist/components/charts/lines/LineChartWithKpiTabsPro/definition.d.ts.map +1 -1
- package/dist/components/charts/lines/lines.types.d.ts +9 -0
- package/dist/components/charts/lines/lines.types.d.ts.map +1 -1
- package/dist/components/charts/pies/DonutChartPro/DonutChartPro.emb.d.ts +2 -0
- package/dist/components/charts/pies/DonutChartPro/DonutChartPro.emb.d.ts.map +1 -1
- package/dist/components/charts/pies/DonutChartPro/definition.d.ts +4 -0
- package/dist/components/charts/pies/DonutChartPro/definition.d.ts.map +1 -1
- package/dist/components/charts/pies/DonutLabelChartPro/DonutLabelChartPro.emb.d.ts +2 -0
- package/dist/components/charts/pies/DonutLabelChartPro/DonutLabelChartPro.emb.d.ts.map +1 -1
- package/dist/components/charts/pies/DonutLabelChartPro/definition.d.ts +4 -0
- package/dist/components/charts/pies/DonutLabelChartPro/definition.d.ts.map +1 -1
- package/dist/components/charts/pies/PieChartPro/PieChartPro.emb.d.ts +2 -0
- package/dist/components/charts/pies/PieChartPro/PieChartPro.emb.d.ts.map +1 -1
- package/dist/components/charts/pies/PieChartPro/definition.d.ts +4 -0
- package/dist/components/charts/pies/PieChartPro/definition.d.ts.map +1 -1
- package/dist/components/editors/ComparisonPeriodSelectFieldPro/ComparisonPeriodSelectFieldPro.emb.d.ts +1 -1
- package/dist/components/editors/ComparisonPeriodSelectFieldPro/definition.d.ts +3 -3
- package/dist/{cs-BrWGOLEs.js → cs-OPN2C0ef.js} +3 -3
- package/dist/{cs-BrWGOLEs.js.map → cs-OPN2C0ef.js.map} +1 -1
- package/dist/{cv-DZWSoNyJ.js → cv-DMmlEzxH.js} +3 -3
- package/dist/{cv-DZWSoNyJ.js.map → cv-DMmlEzxH.js.map} +1 -1
- package/dist/{cy-DbsO66lQ.js → cy-l_moggQe.js} +3 -3
- package/dist/{cy-DbsO66lQ.js.map → cy-l_moggQe.js.map} +1 -1
- package/dist/{da-BKfIwIo3.js → da-W22SIFso.js} +3 -3
- package/dist/{da-BKfIwIo3.js.map → da-W22SIFso.js.map} +1 -1
- package/dist/dates.utils-DFrGqcoZ.js +169 -0
- package/dist/{dates.utils-BS-h_mUI.js.map → dates.utils-DFrGqcoZ.js.map} +1 -1
- package/dist/{de-CrdlsH_d.js → de-YZTYEOmR.js} +3 -3
- package/dist/{de-CrdlsH_d.js.map → de-YZTYEOmR.js.map} +1 -1
- package/dist/{definition-BPveF-o0.js → definition-1VYzuMo9.js} +31 -29
- package/dist/definition-1VYzuMo9.js.map +1 -0
- package/dist/{definition-DGtAQtwL.js → definition-B4F0jx72.js} +6 -6
- package/dist/{definition-DGtAQtwL.js.map → definition-B4F0jx72.js.map} +1 -1
- package/dist/{definition-JVacQ97-.js → definition-BB01Tker.js} +7 -7
- package/dist/{definition-JVacQ97-.js.map → definition-BB01Tker.js.map} +1 -1
- package/dist/{definition-C-9Q3Ivg.js → definition-Bs8jlVww.js} +8 -6
- package/dist/definition-Bs8jlVww.js.map +1 -0
- package/dist/{definition-CJuA3KVA.js → definition-Bt4uNhtN.js} +22 -20
- package/dist/definition-Bt4uNhtN.js.map +1 -0
- package/dist/{definition-Bi8lf1H-.js → definition-Bt9oWobV.js} +10 -10
- package/dist/{definition-Bi8lf1H-.js.map → definition-Bt9oWobV.js.map} +1 -1
- package/dist/{definition-BR7yIGzM.js → definition-BtFGLZFg.js} +38 -36
- package/dist/definition-BtFGLZFg.js.map +1 -0
- package/dist/{definition-Vo_CL9pX.js → definition-C4t0P1wz.js} +34 -32
- package/dist/definition-C4t0P1wz.js.map +1 -0
- package/dist/{definition-Cxq8rnHN.js → definition-CBKE7nhm.js} +4 -4
- package/dist/{definition-Cxq8rnHN.js.map → definition-CBKE7nhm.js.map} +1 -1
- package/dist/{definition-CbwusFc9.js → definition-CBuEfvdj.js} +6 -6
- package/dist/{definition-CbwusFc9.js.map → definition-CBuEfvdj.js.map} +1 -1
- package/dist/{definition-ISWfhRDt.js → definition-CC9wLJNd.js} +6 -6
- package/dist/{definition-ISWfhRDt.js.map → definition-CC9wLJNd.js.map} +1 -1
- package/dist/{definition-DfRvcWZc.js → definition-CHjP0E6Q.js} +6 -6
- package/dist/{definition-DfRvcWZc.js.map → definition-CHjP0E6Q.js.map} +1 -1
- package/dist/{definition-zEiltTUR.js → definition-CL0Y27Yz.js} +10 -10
- package/dist/{definition-zEiltTUR.js.map → definition-CL0Y27Yz.js.map} +1 -1
- package/dist/{definition-CEsJTFVE.js → definition-CbYDh9Ub.js} +6 -6
- package/dist/{definition-CEsJTFVE.js.map → definition-CbYDh9Ub.js.map} +1 -1
- package/dist/{definition-DQdIv_3r.js → definition-CoLPvc2U.js} +30 -28
- package/dist/definition-CoLPvc2U.js.map +1 -0
- package/dist/definition-CtNshA5a.js +262 -0
- package/dist/definition-CtNshA5a.js.map +1 -0
- package/dist/{definition-D7OtKl-K.js → definition-CvUSTWbU.js} +7 -7
- package/dist/{definition-D7OtKl-K.js.map → definition-CvUSTWbU.js.map} +1 -1
- package/dist/{definition-Cg6fSfVK.js → definition-DCCcpo3n.js} +7 -7
- package/dist/{definition-Cg6fSfVK.js.map → definition-DCCcpo3n.js.map} +1 -1
- package/dist/{definition-COv0u2Kk.js → definition-DDRYN7S1.js} +9 -9
- package/dist/{definition-COv0u2Kk.js.map → definition-DDRYN7S1.js.map} +1 -1
- package/dist/{definition-BTurzVuJ.js → definition-DHsYpa3_.js} +6 -6
- package/dist/{definition-BTurzVuJ.js.map → definition-DHsYpa3_.js.map} +1 -1
- package/dist/{definition-Bts5sDKG.js → definition-DOIIIcT0.js} +6 -6
- package/dist/{definition-Bts5sDKG.js.map → definition-DOIIIcT0.js.map} +1 -1
- package/dist/{definition-D2btBhd5.js → definition-DW9vcya9.js} +5 -5
- package/dist/{definition-D2btBhd5.js.map → definition-DW9vcya9.js.map} +1 -1
- package/dist/{definition--kSyU8z2.js → definition-D_APsOo5.js} +3 -3
- package/dist/{definition--kSyU8z2.js.map → definition-D_APsOo5.js.map} +1 -1
- package/dist/{definition-BSJSGQj9.js → definition-DbRjzqsA.js} +6 -6
- package/dist/{definition-BSJSGQj9.js.map → definition-DbRjzqsA.js.map} +1 -1
- package/dist/{definition-BVvy48Df.js → definition-De2PxrhM.js} +36 -34
- package/dist/definition-De2PxrhM.js.map +1 -0
- package/dist/{definition-CAwD0Puc.js → definition-DfgNZaSg.js} +3 -3
- package/dist/{definition-CAwD0Puc.js.map → definition-DfgNZaSg.js.map} +1 -1
- package/dist/definition-DmskK6py.js +604 -0
- package/dist/definition-DmskK6py.js.map +1 -0
- package/dist/{definition-Bh-Va9Aa.js → definition-DtPY1lz6.js} +10 -10
- package/dist/{definition-Bh-Va9Aa.js.map → definition-DtPY1lz6.js.map} +1 -1
- package/dist/{definition-3x2Ji4jP.js → definition-IhaHieBR.js} +9 -9
- package/dist/{definition-3x2Ji4jP.js.map → definition-IhaHieBR.js.map} +1 -1
- package/dist/{definition-guumiEeC.js → definition-L3bdSclX.js} +11 -11
- package/dist/{definition-guumiEeC.js.map → definition-L3bdSclX.js.map} +1 -1
- package/dist/{definition-DvjcMLKk.js → definition-WLmmLQZs.js} +51 -51
- package/dist/definition-WLmmLQZs.js.map +1 -0
- package/dist/{definition-BkWrwtwm.js → definition-bbEjabtO.js} +7 -7
- package/dist/{definition-BkWrwtwm.js.map → definition-bbEjabtO.js.map} +1 -1
- package/dist/{definition-BZ7Wtvg5.js → definition-eKuaU5xY.js} +16 -16
- package/dist/{definition-BZ7Wtvg5.js.map → definition-eKuaU5xY.js.map} +1 -1
- package/dist/{definition-Fqu3hJFW.js → definition-lIzJ2XJn.js} +9 -9
- package/dist/{definition-Fqu3hJFW.js.map → definition-lIzJ2XJn.js.map} +1 -1
- package/dist/{definition-CwQymrHa.js → definition-lic11MCV.js} +10 -10
- package/dist/{definition-CwQymrHa.js.map → definition-lic11MCV.js.map} +1 -1
- package/dist/{definition-BSbM8rbv.js → definition-uQa3OXxU.js} +7 -7
- package/dist/{definition-BSbM8rbv.js.map → definition-uQa3OXxU.js.map} +1 -1
- package/dist/{definition-hXPLrfc9.js → definition-ukcHRZZl.js} +9 -9
- package/dist/{definition-hXPLrfc9.js.map → definition-ukcHRZZl.js.map} +1 -1
- package/dist/{definition-DFJBFIBQ.js → definition-y2Sn7VTL.js} +7 -7
- package/dist/{definition-DFJBFIBQ.js.map → definition-y2Sn7VTL.js.map} +1 -1
- package/dist/{dimension.utils-DN43DaL5.js → dimension.utils-lPl2Y1D4.js} +4 -4
- package/dist/{dimension.utils-DN43DaL5.js.map → dimension.utils-lPl2Y1D4.js.map} +1 -1
- package/dist/{dimensionsAndMeasures.utils-SAlbbzn4.js → dimensionsAndMeasures.utils-BsJIn37r.js} +2 -2
- package/dist/{dimensionsAndMeasures.utils-SAlbbzn4.js.map → dimensionsAndMeasures.utils-BsJIn37r.js.map} +1 -1
- package/dist/{dv-Dh4TFSto.js → dv-CuSRqQ-u.js} +3 -3
- package/dist/{dv-Dh4TFSto.js.map → dv-CuSRqQ-u.js.map} +1 -1
- package/dist/{el-CaP784j6.js → el-VhiL5PCz.js} +3 -3
- package/dist/{el-CaP784j6.js.map → el-VhiL5PCz.js.map} +1 -1
- package/dist/embeddable-components.json +50 -48
- package/dist/embeddable-theme-0137e.js +5 -5
- package/dist/{en-BmhXArmZ.js → en-CCK_d6yu.js} +2 -2
- package/dist/{en-BmhXArmZ.js.map → en-CCK_d6yu.js.map} +1 -1
- package/dist/{eo-DOiKXgrB.js → eo-BjvzzUrR.js} +3 -3
- package/dist/{eo-DOiKXgrB.js.map → eo-BjvzzUrR.js.map} +1 -1
- package/dist/{es-De5OTRBw.js → es-BAGEQJX0.js} +3 -3
- package/dist/{es-De5OTRBw.js.map → es-BAGEQJX0.js.map} +1 -1
- package/dist/{et-RgcZCs28.js → et-Dug3-Htz.js} +3 -3
- package/dist/{et-RgcZCs28.js.map → et-Dug3-Htz.js.map} +1 -1
- package/dist/{eu-6MM1Hffo.js → eu-B69OX2YQ.js} +3 -3
- package/dist/{eu-6MM1Hffo.js.map → eu-B69OX2YQ.js.map} +1 -1
- package/dist/{fa-BoALQB8o.js → fa-BZRr3jKK.js} +3 -3
- package/dist/{fa-BoALQB8o.js.map → fa-BZRr3jKK.js.map} +1 -1
- package/dist/{fi-MaRmqUmv.js → fi-D4hv61ue.js} +3 -3
- package/dist/{fi-MaRmqUmv.js.map → fi-D4hv61ue.js.map} +1 -1
- package/dist/{fo-CBiFSV60.js → fo-Ctq0i1aV.js} +3 -3
- package/dist/{fo-CBiFSV60.js.map → fo-Ctq0i1aV.js.map} +1 -1
- package/dist/{formatter.utils-Dm_mQlX1.js → formatter.utils-CueRuFiK.js} +3 -3
- package/dist/{formatter.utils-Dm_mQlX1.js.map → formatter.utils-CueRuFiK.js.map} +1 -1
- package/dist/{fr-DHDBWYya.js → fr-DhygZq8E.js} +3 -3
- package/dist/{fr-DHDBWYya.js.map → fr-DhygZq8E.js.map} +1 -1
- package/dist/{fy-DV6ZZDrm.js → fy-CSXKvn3r.js} +3 -3
- package/dist/{fy-DV6ZZDrm.js.map → fy-CSXKvn3r.js.map} +1 -1
- package/dist/{ga-DJ_KCD-J.js → ga-CJWkA_uc.js} +3 -3
- package/dist/{ga-DJ_KCD-J.js.map → ga-CJWkA_uc.js.map} +1 -1
- package/dist/{gd-_B5fwY46.js → gd-S_5eqzIU.js} +3 -3
- package/dist/{gd-_B5fwY46.js.map → gd-S_5eqzIU.js.map} +1 -1
- package/dist/{gl-CU6Q-QQB.js → gl-B4Dahb7f.js} +3 -3
- package/dist/{gl-CU6Q-QQB.js.map → gl-B4Dahb7f.js.map} +1 -1
- package/dist/{granularity.utils-DnAzYxES.js → granularity.utils-C1YICLik.js} +3 -3
- package/dist/{granularity.utils-DnAzYxES.js.map → granularity.utils-C1YICLik.js.map} +1 -1
- package/dist/{gu-DCtPFOwZ.js → gu-jc9pYff5.js} +3 -3
- package/dist/{gu-DCtPFOwZ.js.map → gu-jc9pYff5.js.map} +1 -1
- package/dist/{he-BM6Zo8ky.js → he-Bil3JWh7.js} +3 -3
- package/dist/{he-BM6Zo8ky.js.map → he-Bil3JWh7.js.map} +1 -1
- package/dist/{hi-DaWHWKND.js → hi-nzfVOkjP.js} +3 -3
- package/dist/{hi-DaWHWKND.js.map → hi-nzfVOkjP.js.map} +1 -1
- package/dist/{hr-Cld9Z3VA.js → hr-CjyugdeX.js} +3 -3
- package/dist/{hr-Cld9Z3VA.js.map → hr-CjyugdeX.js.map} +1 -1
- package/dist/{ht-DaHo7yWu.js → ht-BQ0TlnC7.js} +3 -3
- package/dist/{ht-DaHo7yWu.js.map → ht-BQ0TlnC7.js.map} +1 -1
- package/dist/{hu-CLCx4GIQ.js → hu-B_3y1c4Q.js} +3 -3
- package/dist/{hu-CLCx4GIQ.js.map → hu-B_3y1c4Q.js.map} +1 -1
- package/dist/{id-RnWYrGMh.js → id-BPuFW1CX.js} +3 -3
- package/dist/{id-RnWYrGMh.js.map → id-BPuFW1CX.js.map} +1 -1
- package/dist/{index-BcjLDsez.js → index-D_k-7hF4.js} +2 -2
- package/dist/{index-BcjLDsez.js.map → index-D_k-7hF4.js.map} +1 -1
- package/dist/{index-Cddhb628.js → index-DcPl9DUc.js} +11195 -11174
- package/dist/{index-Cddhb628.js.map → index-DcPl9DUc.js.map} +1 -1
- package/dist/{index-NsIiXrla.js → index-DxL0Y4DQ.js} +2 -2
- package/dist/{index-NsIiXrla.js.map → index-DxL0Y4DQ.js.map} +1 -1
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +179 -170
- package/dist/index.js.map +1 -1
- package/dist/{is-CHanTzvE.js → is-B4v_GCbt.js} +3 -3
- package/dist/{is-CHanTzvE.js.map → is-B4v_GCbt.js.map} +1 -1
- package/dist/{isoWeek-BpbQ7E20.js → isoWeek-D6aAznv-.js} +2 -2
- package/dist/{isoWeek-BpbQ7E20.js.map → isoWeek-D6aAznv-.js.map} +1 -1
- package/dist/{it-DCcj_syU.js → it-CxODYFsF.js} +3 -3
- package/dist/{it-DCcj_syU.js.map → it-CxODYFsF.js.map} +1 -1
- package/dist/{ja-D8Bgi38D.js → ja-BLMmIJfq.js} +3 -3
- package/dist/{ja-D8Bgi38D.js.map → ja-BLMmIJfq.js.map} +1 -1
- package/dist/{jv-BKe6XF6Z.js → jv-ByiaGx2H.js} +3 -3
- package/dist/{jv-BKe6XF6Z.js.map → jv-ByiaGx2H.js.map} +1 -1
- package/dist/{ka-CXLrVdxK.js → ka-C_2wD7LP.js} +3 -3
- package/dist/{ka-CXLrVdxK.js.map → ka-C_2wD7LP.js.map} +1 -1
- package/dist/{kk-BtfXc7Co.js → kk-DqcHSPuF.js} +3 -3
- package/dist/{kk-BtfXc7Co.js.map → kk-DqcHSPuF.js.map} +1 -1
- package/dist/{km-BOJGB5oc.js → km-bI1Z3YSM.js} +3 -3
- package/dist/{km-BOJGB5oc.js.map → km-bI1Z3YSM.js.map} +1 -1
- package/dist/{kn-D7OYcUIf.js → kn-DY4uzFfe.js} +3 -3
- package/dist/{kn-D7OYcUIf.js.map → kn-DY4uzFfe.js.map} +1 -1
- package/dist/{ko-BYWzaRQa.js → ko-Cu5cVg3m.js} +3 -3
- package/dist/{ko-BYWzaRQa.js.map → ko-Cu5cVg3m.js.map} +1 -1
- package/dist/{ku-BfzB2eOZ.js → ku-B9wX44de.js} +3 -3
- package/dist/{ku-BfzB2eOZ.js.map → ku-B9wX44de.js.map} +1 -1
- package/dist/{ky-B5PX5RTj.js → ky-mkjISmIi.js} +3 -3
- package/dist/{ky-B5PX5RTj.js.map → ky-mkjISmIi.js.map} +1 -1
- package/dist/{lb-BtZ1S-Sw.js → lb-s_88UK0j.js} +3 -3
- package/dist/{lb-BtZ1S-Sw.js.map → lb-s_88UK0j.js.map} +1 -1
- package/dist/{lo-BiXTbtbH.js → lo-CChg5V22.js} +3 -3
- package/dist/{lo-BiXTbtbH.js.map → lo-CChg5V22.js.map} +1 -1
- package/dist/{lt-BBYVZLQ7.js → lt-jLA41Ben.js} +3 -3
- package/dist/{lt-BBYVZLQ7.js.map → lt-jLA41Ben.js.map} +1 -1
- package/dist/{lv-C9zQiRNd.js → lv-hAoIKgX2.js} +3 -3
- package/dist/{lv-C9zQiRNd.js.map → lv-hAoIKgX2.js.map} +1 -1
- package/dist/{me-DRcMJ7aP.js → me-DNASGX9I.js} +3 -3
- package/dist/{me-DRcMJ7aP.js.map → me-DNASGX9I.js.map} +1 -1
- package/dist/meta/AreaChartPro.meta.json +359 -0
- package/dist/meta/ComparisonPeriodSelectFieldPro.meta.json +1 -1
- package/dist/meta/DonutChartPro.meta.json +2 -0
- package/dist/meta/DonutLabelChartPro.meta.json +2 -0
- package/dist/meta/KpiChartNumberComparisonPro.meta.json +3 -1
- package/dist/meta/KpiChartNumberPro.meta.json +2 -0
- package/dist/meta/LineChartComparisonDefaultPro.meta.json +1 -1
- package/dist/meta/LineChartComparisonWithKpiTabsPro.meta.json +4 -2
- package/dist/meta/LineChartWithKpiTabsPro.meta.json +3 -1
- package/dist/meta/PieChartPro.meta.json +2 -0
- package/dist/meta/index.json +7 -1
- package/dist/{mi-D9_qgnyh.js → mi-NkIEWm1k.js} +3 -3
- package/dist/{mi-D9_qgnyh.js.map → mi-NkIEWm1k.js.map} +1 -1
- package/dist/{mk-DaE9D0RP.js → mk-CJAU95yF.js} +3 -3
- package/dist/{mk-DaE9D0RP.js.map → mk-CJAU95yF.js.map} +1 -1
- package/dist/{ml-CaIcHJJI.js → ml-D91xWhJE.js} +3 -3
- package/dist/{ml-CaIcHJJI.js.map → ml-D91xWhJE.js.map} +1 -1
- package/dist/{mn-CFzG077K.js → mn-CSIv0h5B.js} +3 -3
- package/dist/{mn-CFzG077K.js.map → mn-CSIv0h5B.js.map} +1 -1
- package/dist/{mr-B5UQKlw5.js → mr-D4oIZ_jX.js} +3 -3
- package/dist/{mr-B5UQKlw5.js.map → mr-D4oIZ_jX.js.map} +1 -1
- package/dist/{ms-C7clhiEV.js → ms-DyAE3TXR.js} +3 -3
- package/dist/{ms-C7clhiEV.js.map → ms-DyAE3TXR.js.map} +1 -1
- package/dist/{mt-C3IahlCg.js → mt-DjLJYXqW.js} +3 -3
- package/dist/{mt-C3IahlCg.js.map → mt-DjLJYXqW.js.map} +1 -1
- package/dist/{my-CzZX-BoP.js → my-QAbtttSY.js} +3 -3
- package/dist/{my-CzZX-BoP.js.map → my-QAbtttSY.js.map} +1 -1
- package/dist/{nb-DoFPyqKp.js → nb-CyikWQNu.js} +3 -3
- package/dist/{nb-DoFPyqKp.js.map → nb-CyikWQNu.js.map} +1 -1
- package/dist/{ne-O2dvHPzU.js → ne-CYLhegnF.js} +3 -3
- package/dist/{ne-O2dvHPzU.js.map → ne-CYLhegnF.js.map} +1 -1
- package/dist/{nl-Bqep7EoU.js → nl-Ravjt8yv.js} +3 -3
- package/dist/{nl-Bqep7EoU.js.map → nl-Ravjt8yv.js.map} +1 -1
- package/dist/{nn-CZGMICVk.js → nn-DaylgKbH.js} +3 -3
- package/dist/{nn-CZGMICVk.js.map → nn-DaylgKbH.js.map} +1 -1
- package/dist/{pies.utils-C50IfEz6.js → pies.utils-Rkvaq5Sj.js} +6 -6
- package/dist/{pies.utils-C50IfEz6.js.map → pies.utils-Rkvaq5Sj.js.map} +1 -1
- package/dist/{pl-D9HfHwe5.js → pl-1TvAKJ2i.js} +3 -3
- package/dist/{pl-D9HfHwe5.js.map → pl-1TvAKJ2i.js.map} +1 -1
- package/dist/{preview.data.constants-HvHDcvh2.js → preview.data.constants-B8B82ITM.js} +2 -2
- package/dist/{preview.data.constants-HvHDcvh2.js.map → preview.data.constants-B8B82ITM.js.map} +1 -1
- package/dist/{pt-O1BohoVg.js → pt-BdsacYg2.js} +3 -3
- package/dist/{pt-O1BohoVg.js.map → pt-BdsacYg2.js.map} +1 -1
- package/dist/{quarterOfYear-DUDByudG.js → quarterOfYear-Dixa0hmA.js} +2 -2
- package/dist/{quarterOfYear-DUDByudG.js.map → quarterOfYear-Dixa0hmA.js.map} +1 -1
- package/dist/{ro-B6CPe5VS.js → ro-CgxzoPTb.js} +3 -3
- package/dist/{ro-B6CPe5VS.js.map → ro-CgxzoPTb.js.map} +1 -1
- package/dist/{ru-E1e8ly3v.js → ru-Dc-8D5WF.js} +3 -3
- package/dist/{ru-E1e8ly3v.js.map → ru-Dc-8D5WF.js.map} +1 -1
- package/dist/{rw-B0823xca.js → rw-Qhhg8ROi.js} +3 -3
- package/dist/{rw-B0823xca.js.map → rw-Qhhg8ROi.js.map} +1 -1
- package/dist/{sd-qlrrsmql.js → sd-CGRy0d35.js} +3 -3
- package/dist/{sd-qlrrsmql.js.map → sd-CGRy0d35.js.map} +1 -1
- package/dist/{se-Cg72dF8f.js → se-C0u8D3V7.js} +3 -3
- package/dist/{se-Cg72dF8f.js.map → se-C0u8D3V7.js.map} +1 -1
- package/dist/{si-Be3k0PAd.js → si-D4VvlDtE.js} +3 -3
- package/dist/{si-Be3k0PAd.js.map → si-D4VvlDtE.js.map} +1 -1
- package/dist/{sk-sqlSQDQX.js → sk-D1rCJy6c.js} +3 -3
- package/dist/{sk-sqlSQDQX.js.map → sk-D1rCJy6c.js.map} +1 -1
- package/dist/{sl-DuvA4nyh.js → sl-CDwxu8Jf.js} +3 -3
- package/dist/{sl-DuvA4nyh.js.map → sl-CDwxu8Jf.js.map} +1 -1
- package/dist/{sq-2A47qaxB.js → sq-EG9Spqit.js} +3 -3
- package/dist/{sq-2A47qaxB.js.map → sq-EG9Spqit.js.map} +1 -1
- package/dist/{sr-D04AHtbe.js → sr-DEnvCtDe.js} +3 -3
- package/dist/{sr-D04AHtbe.js.map → sr-DEnvCtDe.js.map} +1 -1
- package/dist/{ss-C7RnuSmJ.js → ss-D2TA96JU.js} +3 -3
- package/dist/{ss-C7RnuSmJ.js.map → ss-D2TA96JU.js.map} +1 -1
- package/dist/{sv-BjV5YUhJ.js → sv-CVix37qq.js} +3 -3
- package/dist/{sv-BjV5YUhJ.js.map → sv-CVix37qq.js.map} +1 -1
- package/dist/{sw-DJcpWwIr.js → sw-BPU86kCc.js} +3 -3
- package/dist/{sw-DJcpWwIr.js.map → sw-BPU86kCc.js.map} +1 -1
- package/dist/{ta-Cv8LgXX_.js → ta-BOZUOxU0.js} +3 -3
- package/dist/{ta-Cv8LgXX_.js.map → ta-BOZUOxU0.js.map} +1 -1
- package/dist/{tables.utils-DdGuZcE0.js → tables.utils-BDvJMU1_.js} +4 -4
- package/dist/{tables.utils-DdGuZcE0.js.map → tables.utils-BDvJMU1_.js.map} +1 -1
- package/dist/{te-DhXcptaM.js → te-Bamoj7pU.js} +3 -3
- package/dist/{te-DhXcptaM.js.map → te-Bamoj7pU.js.map} +1 -1
- package/dist/{tet-sjTmKauo.js → tet-Dasd5QxW.js} +3 -3
- package/dist/{tet-sjTmKauo.js.map → tet-Dasd5QxW.js.map} +1 -1
- package/dist/{tg-B58BQsPV.js → tg-ChqdKEnG.js} +3 -3
- package/dist/{tg-B58BQsPV.js.map → tg-ChqdKEnG.js.map} +1 -1
- package/dist/{th-HYxhJqkn.js → th-Bk5x6TTv.js} +3 -3
- package/dist/{th-HYxhJqkn.js.map → th-Bk5x6TTv.js.map} +1 -1
- package/dist/theme/styles/styles.constants.d.ts +3 -3
- package/dist/theme/theme.types.d.ts +3 -0
- package/dist/theme/theme.types.d.ts.map +1 -1
- package/dist/{theme.constants-DUEhFpuM.js → theme.constants-DsrqrdS6.js} +10 -10
- package/dist/theme.constants-DsrqrdS6.js.map +1 -0
- package/dist/{tk-aEl-lx0e.js → tk-CKTm9znn.js} +3 -3
- package/dist/{tk-aEl-lx0e.js.map → tk-CKTm9znn.js.map} +1 -1
- package/dist/{tlh-DIwUrwDe.js → tlh-COX4xvnq.js} +3 -3
- package/dist/{tlh-DIwUrwDe.js.map → tlh-COX4xvnq.js.map} +1 -1
- package/dist/{tr-P2M4m4BR.js → tr-B-yDJn5U.js} +3 -3
- package/dist/{tr-P2M4m4BR.js.map → tr-B-yDJn5U.js.map} +1 -1
- package/dist/{tzl-DODmrwx7.js → tzl-DsV3R-ms.js} +3 -3
- package/dist/{tzl-DODmrwx7.js.map → tzl-DsV3R-ms.js.map} +1 -1
- package/dist/{tzm-DwNwWCPS.js → tzm-gPfBGwxP.js} +3 -3
- package/dist/{tzm-DwNwWCPS.js.map → tzm-gPfBGwxP.js.map} +1 -1
- package/dist/{uk-BEBo-IMa.js → uk-Buc5wLz4.js} +3 -3
- package/dist/{uk-BEBo-IMa.js.map → uk-Buc5wLz4.js.map} +1 -1
- package/dist/{ur-f87axJGH.js → ur-DwcxoK_m.js} +3 -3
- package/dist/{ur-f87axJGH.js.map → ur-DwcxoK_m.js.map} +1 -1
- package/dist/{utc-CuHWQOSW.js → utc-BW09BhCl.js} +31 -31
- package/dist/utc-BW09BhCl.js.map +1 -0
- package/dist/{uz-BrpPq1Pi.js → uz-QP2FHnf_.js} +3 -3
- package/dist/{uz-BrpPq1Pi.js.map → uz-QP2FHnf_.js.map} +1 -1
- package/dist/{vi-D7D15NKr.js → vi-D27F6exG.js} +3 -3
- package/dist/{vi-D7D15NKr.js.map → vi-D27F6exG.js.map} +1 -1
- package/dist/{x-pseudo-DiuYt9Op.js → x-pseudo-BD9cDlId.js} +3 -3
- package/dist/{x-pseudo-DiuYt9Op.js.map → x-pseudo-BD9cDlId.js.map} +1 -1
- package/dist/{yo-CvjMIPT6.js → yo-BF789QLA.js} +3 -3
- package/dist/{yo-CvjMIPT6.js.map → yo-BF789QLA.js.map} +1 -1
- package/dist/{zh-cn-BIiW9-7h.js → zh-cn-BtfweNvk.js} +3 -3
- package/dist/{zh-cn-BIiW9-7h.js.map → zh-cn-BtfweNvk.js.map} +1 -1
- package/dist/{zh-hk-CxcLBfBZ.js → zh-hk-BnriNqMr.js} +3 -3
- package/dist/{zh-hk-CxcLBfBZ.js.map → zh-hk-BnriNqMr.js.map} +1 -1
- package/dist/{zh-tw-Do8e1tA4.js → zh-tw-DEhWyVul.js} +3 -3
- package/dist/{zh-tw-Do8e1tA4.js.map → zh-tw-DEhWyVul.js.map} +1 -1
- package/package.json +2 -2
- package/dist/charts.utils-BoJ5LrTC.js +0 -67
- package/dist/charts.utils-BoJ5LrTC.js.map +0 -1
- package/dist/dates.utils-BS-h_mUI.js +0 -169
- package/dist/definition-BPveF-o0.js.map +0 -1
- package/dist/definition-BR7yIGzM.js.map +0 -1
- package/dist/definition-BVvy48Df.js.map +0 -1
- package/dist/definition-C-9Q3Ivg.js.map +0 -1
- package/dist/definition-CJuA3KVA.js.map +0 -1
- package/dist/definition-DQdIv_3r.js.map +0 -1
- package/dist/definition-DvjcMLKk.js.map +0 -1
- package/dist/definition-Vo_CL9pX.js.map +0 -1
- package/dist/theme.constants-DUEhFpuM.js.map +0 -1
- package/dist/utc-CuHWQOSW.js.map +0 -1
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
import { a9 as B, g as O, a7 as A, L as z, V as p, a8 as I } from "./index-DcPl9DUc.js";
|
|
2
|
+
import { useTheme as _, definePreview as E } from "@embeddable.com/react";
|
|
3
|
+
import { i as H, r as W } from "./component.utils-oQMZT7TK.js";
|
|
4
|
+
import { C as q } from "./ChartCard-HpSv5cY6.js";
|
|
5
|
+
import { g as J, a as K, l as N } from "./definition-IhaHieBR.js";
|
|
6
|
+
import { g as M } from "./dimension.utils-lPl2Y1D4.js";
|
|
7
|
+
import { s as Q } from "./color.utils-BSg_DFOh.js";
|
|
8
|
+
import { u as U } from "./charts.fillGaps.hooks-CvS5tfFP.js";
|
|
9
|
+
import { C as Z, g as $ } from "./granularity.utils-C1YICLik.js";
|
|
10
|
+
import { p as f } from "./preview.data.constants-B8B82ITM.js";
|
|
11
|
+
import { g as X } from "./clientContext.utils-DpB5KsfX.js";
|
|
12
|
+
const ee = (e, n) => {
|
|
13
|
+
const a = J(e, n);
|
|
14
|
+
return {
|
|
15
|
+
...a,
|
|
16
|
+
datasets: a.datasets.map((i) => ({
|
|
17
|
+
...i,
|
|
18
|
+
fill: !0,
|
|
19
|
+
backgroundColor: Q(i.backgroundColor, 0.9)
|
|
20
|
+
}))
|
|
21
|
+
};
|
|
22
|
+
}, V = (e, n) => e.getDatasetMeta(n).data, P = (e, n, a) => {
|
|
23
|
+
const i = V(e, n);
|
|
24
|
+
for (let r = 0; r < i.length - 1; r++) {
|
|
25
|
+
const l = i[r], o = i[r + 1];
|
|
26
|
+
if (l.x <= a && o.x >= a) {
|
|
27
|
+
const m = (a - l.x) / (o.x - l.x);
|
|
28
|
+
return l.y + m * (o.y - l.y);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
const s = i.at(-1);
|
|
32
|
+
return (s == null ? void 0 : s.x) === a ? s.y : null;
|
|
33
|
+
}, ne = (e, n, a, i, s, r, l) => {
|
|
34
|
+
var g, c, d, x, h;
|
|
35
|
+
if (!n.length) return !1;
|
|
36
|
+
const o = n[0], m = (g = V(e, o.datasetIndex)[o.index]) == null ? void 0 : g.y;
|
|
37
|
+
if (m == null || Math.abs(a - m) > 8) return !1;
|
|
38
|
+
const u = (c = i == null ? void 0 : i.labels) == null ? void 0 : c[o.index], t = (h = (x = (d = i == null ? void 0 : i.datasets) == null ? void 0 : d[o.datasetIndex]) == null ? void 0 : x.data) == null ? void 0 : h[o.index];
|
|
39
|
+
return l({
|
|
40
|
+
dimensionValue: u,
|
|
41
|
+
dimensionTimeRange: M({
|
|
42
|
+
value: u,
|
|
43
|
+
stateGranularity: r,
|
|
44
|
+
dimension: s
|
|
45
|
+
}),
|
|
46
|
+
measureValue: t
|
|
47
|
+
}), !0;
|
|
48
|
+
}, ie = (e, n, a, i, s, r) => {
|
|
49
|
+
var o, m, u;
|
|
50
|
+
const l = ((o = e.chartArea) == null ? void 0 : o.bottom) ?? 1 / 0;
|
|
51
|
+
for (let t = e.data.datasets.length - 1; t >= 0; t--) {
|
|
52
|
+
const g = P(e, t, n), c = t > 0 ? P(e, t - 1, n) : l;
|
|
53
|
+
if (g == null || c == null || a < Math.min(g, c) || a > Math.max(g, c)) continue;
|
|
54
|
+
const d = (u = (m = i == null ? void 0 : i.datasets) == null ? void 0 : m[t]) == null ? void 0 : u.rawLabel;
|
|
55
|
+
r({
|
|
56
|
+
groupingDimensionValue: d,
|
|
57
|
+
groupingDimensionTimeRange: M({
|
|
58
|
+
value: d,
|
|
59
|
+
dimension: s
|
|
60
|
+
})
|
|
61
|
+
});
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
}, ae = ({
|
|
65
|
+
data: e,
|
|
66
|
+
dimension: n,
|
|
67
|
+
groupBy: a,
|
|
68
|
+
granularity: i,
|
|
69
|
+
onPointClicked: s,
|
|
70
|
+
onAreaClicked: r
|
|
71
|
+
}) => ({ event: l, elementAtEvent: o }) => {
|
|
72
|
+
const m = O.getChart(l.target);
|
|
73
|
+
if (!m) return;
|
|
74
|
+
const u = l.nativeEvent.offsetX, t = l.nativeEvent.offsetY;
|
|
75
|
+
s && ne(m, o, t, e, n, i, s) || r && ie(m, u, t, e, a, r);
|
|
76
|
+
}, se = (e, n) => {
|
|
77
|
+
var i, s;
|
|
78
|
+
const a = K(e, n);
|
|
79
|
+
return B(a, {
|
|
80
|
+
scales: { y: { stacked: !0 } },
|
|
81
|
+
interaction: { mode: "index", intersect: !1 },
|
|
82
|
+
...((s = (i = n.charts) == null ? void 0 : i.areaChartPro) == null ? void 0 : s.options) || {}
|
|
83
|
+
});
|
|
84
|
+
}, D = (e) => {
|
|
85
|
+
const n = _();
|
|
86
|
+
H(n);
|
|
87
|
+
const { title: a, description: i, tooltip: s, xAxisLabel: r, yAxisLabel: l } = W(e), {
|
|
88
|
+
hideMenu: o,
|
|
89
|
+
measure: m,
|
|
90
|
+
xAxis: u,
|
|
91
|
+
groupBy: t,
|
|
92
|
+
reverseXAxis: g,
|
|
93
|
+
showLegend: c,
|
|
94
|
+
showLogarithmicScale: d,
|
|
95
|
+
showTooltips: x,
|
|
96
|
+
showValueLabels: h,
|
|
97
|
+
yAxisRangeMax: b,
|
|
98
|
+
yAxisRangeMin: R,
|
|
99
|
+
granularity: L,
|
|
100
|
+
setGranularity: k,
|
|
101
|
+
onPointClicked: w,
|
|
102
|
+
onAreaClicked: F
|
|
103
|
+
} = e, C = U({
|
|
104
|
+
results: e.results,
|
|
105
|
+
dimension: u
|
|
106
|
+
}), y = ee(
|
|
107
|
+
{
|
|
108
|
+
data: C.data,
|
|
109
|
+
dimension: u,
|
|
110
|
+
groupDimension: t,
|
|
111
|
+
measure: m,
|
|
112
|
+
hasMinMaxYAxisRange: R != null || b != null
|
|
113
|
+
},
|
|
114
|
+
n
|
|
115
|
+
), j = ae({
|
|
116
|
+
data: y,
|
|
117
|
+
dimension: u,
|
|
118
|
+
groupBy: t,
|
|
119
|
+
granularity: L,
|
|
120
|
+
onPointClicked: w,
|
|
121
|
+
onAreaClicked: F
|
|
122
|
+
}), S = se(
|
|
123
|
+
{ data: y, dimension: u, groupDimension: t, measure: m },
|
|
124
|
+
n
|
|
125
|
+
), Y = !a && !i && !s;
|
|
126
|
+
return /* @__PURE__ */ A.jsxs(
|
|
127
|
+
q,
|
|
128
|
+
{
|
|
129
|
+
data: C,
|
|
130
|
+
dimensionsAndMeasures: [m, u, t],
|
|
131
|
+
errorMessage: C.error,
|
|
132
|
+
description: i,
|
|
133
|
+
title: a,
|
|
134
|
+
tooltip: s,
|
|
135
|
+
hideMenu: o,
|
|
136
|
+
children: [
|
|
137
|
+
k && /* @__PURE__ */ A.jsx(
|
|
138
|
+
Z,
|
|
139
|
+
{
|
|
140
|
+
hasMarginTop: Y,
|
|
141
|
+
dimension: u,
|
|
142
|
+
onChange: k
|
|
143
|
+
}
|
|
144
|
+
),
|
|
145
|
+
/* @__PURE__ */ A.jsx(
|
|
146
|
+
z,
|
|
147
|
+
{
|
|
148
|
+
data: y,
|
|
149
|
+
reverseXAxis: g,
|
|
150
|
+
showLegend: c,
|
|
151
|
+
showLogarithmicScale: d,
|
|
152
|
+
showTooltips: x,
|
|
153
|
+
showValueLabels: h,
|
|
154
|
+
xAxisLabel: r,
|
|
155
|
+
yAxisLabel: l,
|
|
156
|
+
yAxisRangeMax: b,
|
|
157
|
+
yAxisRangeMin: R,
|
|
158
|
+
options: S,
|
|
159
|
+
onClick: j
|
|
160
|
+
}
|
|
161
|
+
)
|
|
162
|
+
]
|
|
163
|
+
}
|
|
164
|
+
);
|
|
165
|
+
}, Ae = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
166
|
+
__proto__: null,
|
|
167
|
+
default: D
|
|
168
|
+
}, Symbol.toStringTag, { value: "Module" })), oe = {
|
|
169
|
+
...N.meta,
|
|
170
|
+
name: "AreaChartPro",
|
|
171
|
+
label: "Area Chart",
|
|
172
|
+
events: [
|
|
173
|
+
{
|
|
174
|
+
name: "onAreaClicked",
|
|
175
|
+
label: "An area is clicked",
|
|
176
|
+
properties: [
|
|
177
|
+
{
|
|
178
|
+
name: "segmentDimensionValue",
|
|
179
|
+
label: "Clicked segment dimension value",
|
|
180
|
+
type: "string"
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
name: "segmentDimensionTimeRange",
|
|
184
|
+
label: "Clicked segment dimension time range",
|
|
185
|
+
type: "timeRange"
|
|
186
|
+
}
|
|
187
|
+
]
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
name: "onPointClicked",
|
|
191
|
+
label: "A point is clicked",
|
|
192
|
+
properties: [
|
|
193
|
+
{
|
|
194
|
+
name: "axisDimensionValue",
|
|
195
|
+
label: "Clicked axis dimension value",
|
|
196
|
+
type: "string"
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
name: "axisDimensionTimeRange",
|
|
200
|
+
label: "Clicked axis dimension time range",
|
|
201
|
+
type: "timeRange"
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
name: "measureValue",
|
|
205
|
+
label: "Clicked measure value",
|
|
206
|
+
type: "number"
|
|
207
|
+
}
|
|
208
|
+
]
|
|
209
|
+
}
|
|
210
|
+
]
|
|
211
|
+
}, T = {
|
|
212
|
+
xAxis: f.dimension,
|
|
213
|
+
groupBy: f.dimensionGroup,
|
|
214
|
+
measure: f.measure,
|
|
215
|
+
results: f.results1Measure2Dimensions,
|
|
216
|
+
hideMenu: !0
|
|
217
|
+
}, te = E(D, T), v = (e, n, a) => ({
|
|
218
|
+
limit: e.maxResults,
|
|
219
|
+
from: e.dataset,
|
|
220
|
+
select: [n ?? e.xAxis, e.groupBy, e.measure],
|
|
221
|
+
timezone: X(a == null ? void 0 : a.timezone)
|
|
222
|
+
}), G = (e, n, a) => I(v(e, n, a)), re = {
|
|
223
|
+
onAreaClicked: (e) => ({
|
|
224
|
+
segmentDimensionValue: e.groupingDimensionValue ?? p.noFilter(),
|
|
225
|
+
segmentDimensionTimeRange: e.groupingDimensionTimeRange ?? p.noFilter()
|
|
226
|
+
}),
|
|
227
|
+
onPointClicked: (e) => ({
|
|
228
|
+
axisDimensionValue: e.dimensionValue ?? p.noFilter(),
|
|
229
|
+
axisDimensionTimeRange: e.dimensionTimeRange ?? p.noFilter(),
|
|
230
|
+
measureValue: e.measureValue ?? p.noFilter()
|
|
231
|
+
})
|
|
232
|
+
}, le = (e, [n, a], i) => {
|
|
233
|
+
const s = $(e.xAxis, n == null ? void 0 : n.granularity);
|
|
234
|
+
return {
|
|
235
|
+
...e,
|
|
236
|
+
xAxis: s,
|
|
237
|
+
granularity: n == null ? void 0 : n.granularity,
|
|
238
|
+
setGranularity: (r) => a({ granularity: r }),
|
|
239
|
+
results: G(e, s, i)
|
|
240
|
+
};
|
|
241
|
+
}, De = {
|
|
242
|
+
Component: D,
|
|
243
|
+
meta: oe,
|
|
244
|
+
preview: te,
|
|
245
|
+
previewConfig: T,
|
|
246
|
+
config: {
|
|
247
|
+
props: le,
|
|
248
|
+
events: re
|
|
249
|
+
},
|
|
250
|
+
results: {
|
|
251
|
+
loadDataArgs: v,
|
|
252
|
+
loadData: G
|
|
253
|
+
}
|
|
254
|
+
};
|
|
255
|
+
export {
|
|
256
|
+
De as a,
|
|
257
|
+
se as b,
|
|
258
|
+
ae as c,
|
|
259
|
+
ee as g,
|
|
260
|
+
Ae as i
|
|
261
|
+
};
|
|
262
|
+
//# sourceMappingURL=definition-CtNshA5a.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definition-CtNshA5a.js","sources":["../src/components/charts/lines/AreaChartPro/AreaChartPro.utils.ts","../src/components/charts/lines/AreaChartPro/index.tsx","../src/components/charts/lines/AreaChartPro/definition.ts"],"sourcesContent":["import { DataResponse, Dimension, Granularity, Measure } from '@embeddable.com/core';\nimport { Theme } from '../../../../theme/theme.types';\nimport { Chart, ChartData, ChartOptions } from 'chart.js';\nimport { mergician } from 'mergician';\nimport {\n getLineChartGroupedProData,\n getLineChartGroupedProOptions,\n} from '../LineChartGroupedPro/LineChartGroupedPro.utils';\nimport { getTimeRangeFromDimensionValue } from '../../../utils/dimension.utils';\nimport { setColorAlpha } from '../../../../utils/color.utils';\nimport { AreaChartProAreaClickArg, AreaChartProPointClickArg } from '../lines.types';\nimport { ChartClickArgs } from '@embeddable.com/remarkable-ui';\n\nexport const getAreaChartProData = (\n props: {\n data: DataResponse['data'];\n dimension: Dimension;\n groupDimension: Dimension;\n measure: Measure;\n hasMinMaxYAxisRange: boolean;\n },\n theme: Theme,\n): ChartData<'line'> => {\n const data = getLineChartGroupedProData(props, theme);\n\n return {\n ...data,\n datasets: data.datasets.map((dataset) => ({\n ...dataset,\n fill: true,\n backgroundColor: setColorAlpha(dataset.backgroundColor as string, 0.9),\n })),\n };\n};\n\ntype PixelPoint = { x: number; y: number };\n\nconst getPixelPoints = (chart: Chart, datasetIndex: number): PixelPoint[] =>\n chart.getDatasetMeta(datasetIndex).data;\n\nconst interpolateLineY = (chart: Chart, datasetIndex: number, clickX: number): number | null => {\n const points = getPixelPoints(chart, datasetIndex);\n for (let i = 0; i < points.length - 1; i++) {\n const left = points[i]!;\n const right = points[i + 1]!;\n if (left.x <= clickX && right.x >= clickX) {\n const t = (clickX - left.x) / (right.x - left.x);\n return left.y + t * (right.y - left.y);\n }\n }\n const last = points.at(-1);\n return last?.x === clickX ? last.y : null;\n};\n\nconst handlePointClick = (\n chart: Chart,\n elementAtEvent: ChartClickArgs['elementAtEvent'],\n clickY: number,\n data: ChartData<'line'>,\n dimension: Dimension,\n granularity: Granularity | undefined,\n onPointClicked: (arg: AreaChartProPointClickArg) => void,\n): boolean => {\n if (!elementAtEvent.length) return false;\n\n const clicked = elementAtEvent[0]!;\n const pointY = getPixelPoints(chart, clicked.datasetIndex)[clicked.index]?.y;\n if (pointY == null) return false;\n\n if (Math.abs(clickY - pointY) > 8) return false;\n\n const dimensionValue = data?.labels?.[clicked.index] as string | undefined;\n const measureValue = (data?.datasets?.[clicked.datasetIndex] as { data?: unknown[] })?.data?.[\n clicked.index\n ] as number | undefined;\n\n onPointClicked({\n dimensionValue,\n dimensionTimeRange: getTimeRangeFromDimensionValue({\n value: dimensionValue,\n stateGranularity: granularity,\n dimension,\n }),\n measureValue,\n });\n return true;\n};\n\nconst handleAreaClick = (\n chart: Chart,\n clickX: number,\n clickY: number,\n data: ChartData<'line'>,\n groupBy: Dimension,\n onAreaClicked: (arg: AreaChartProAreaClickArg) => void,\n): void => {\n const chartBottom = chart.chartArea?.bottom ?? Infinity;\n\n for (let i = chart.data.datasets.length - 1; i >= 0; i--) {\n const lineY = interpolateLineY(chart, i, clickX);\n const baseY = i > 0 ? interpolateLineY(chart, i - 1, clickX) : chartBottom;\n if (lineY == null || baseY == null) continue;\n if (clickY < Math.min(lineY, baseY) || clickY > Math.max(lineY, baseY)) continue;\n\n const groupingDimensionValue = (data?.datasets?.[i] as { rawLabel?: string })?.rawLabel;\n onAreaClicked({\n groupingDimensionValue,\n groupingDimensionTimeRange: getTimeRangeFromDimensionValue({\n value: groupingDimensionValue,\n dimension: groupBy,\n }),\n });\n return;\n }\n};\n\nexport const createAreaClickHandler =\n ({\n data,\n dimension,\n groupBy,\n granularity,\n onPointClicked,\n onAreaClicked,\n }: {\n data: ChartData<'line'>;\n dimension: Dimension;\n groupBy: Dimension;\n granularity?: Granularity;\n onPointClicked?: (arg: AreaChartProPointClickArg) => void;\n onAreaClicked?: (arg: AreaChartProAreaClickArg) => void;\n }) =>\n ({ event, elementAtEvent }: ChartClickArgs): void => {\n const chart = Chart.getChart(event.target as HTMLCanvasElement);\n if (!chart) return;\n\n const clickX = event.nativeEvent.offsetX;\n const clickY = event.nativeEvent.offsetY;\n\n if (\n onPointClicked &&\n handlePointClick(chart, elementAtEvent, clickY, data, dimension, granularity, onPointClicked)\n )\n return;\n if (onAreaClicked) handleAreaClick(chart, clickX, clickY, data, groupBy, onAreaClicked);\n };\n\nexport const getAreaChartProOptions = (\n options: {\n dimension: Dimension;\n groupDimension: Dimension;\n measure: Measure;\n data: ChartData<'line'>;\n },\n theme: Theme,\n): ChartOptions<'line'> => {\n const lineOptions = getLineChartGroupedProOptions(options, theme);\n\n return mergician(lineOptions, {\n scales: { y: { stacked: true } },\n interaction: { mode: 'index' as const, intersect: false },\n ...(theme.charts?.areaChartPro?.options || {}),\n });\n};\n","import { useTheme } from '@embeddable.com/react';\nimport { Theme } from '../../../../theme/theme.types';\nimport { i18nSetup } from '../../../../theme/i18n/i18n';\nimport { resolveI18nProps } from '../../../component.utils';\nimport { ChartCard } from '../../shared/ChartCard/ChartCard';\nimport { LineChartGroupedProProp } from '../LineChartGroupedPro';\nimport {\n createAreaClickHandler,\n getAreaChartProData,\n getAreaChartProOptions,\n} from './AreaChartPro.utils';\nimport { useFillGaps } from '../../charts.fillGaps.hooks';\nimport { AreaChartProAreaClickArg, AreaChartProPointClickArg } from '../lines.types';\nimport { LineChart } from '@embeddable.com/remarkable-ui';\nimport { ChartGranularitySelectField } from '../../shared/ChartGranularitySelectField/ChartGranularitySelectField';\n\nexport type AreaChartProProps = Omit<LineChartGroupedProProp, 'onLineClicked'> & {\n onPointClicked?: (arg: AreaChartProPointClickArg) => void;\n onAreaClicked?: (arg: AreaChartProAreaClickArg) => void;\n};\n\nconst AreaChartPro = (props: AreaChartProProps) => {\n const theme: Theme = useTheme() as Theme;\n i18nSetup(theme);\n\n const { title, description, tooltip, xAxisLabel, yAxisLabel } = resolveI18nProps(props);\n const {\n hideMenu,\n measure,\n xAxis,\n groupBy,\n reverseXAxis,\n showLegend,\n showLogarithmicScale,\n showTooltips,\n showValueLabels,\n yAxisRangeMax,\n yAxisRangeMin,\n granularity,\n setGranularity,\n onPointClicked,\n onAreaClicked,\n } = props;\n\n const results = useFillGaps({\n results: props.results,\n dimension: xAxis,\n });\n\n const data = getAreaChartProData(\n {\n data: results.data,\n dimension: xAxis,\n groupDimension: groupBy,\n measure,\n hasMinMaxYAxisRange: Boolean(yAxisRangeMin != null || yAxisRangeMax != null),\n },\n theme,\n );\n\n const handleClick = createAreaClickHandler({\n data,\n dimension: xAxis,\n groupBy,\n granularity,\n onPointClicked,\n onAreaClicked,\n });\n\n const options = getAreaChartProOptions(\n { data, dimension: xAxis, groupDimension: groupBy, measure },\n theme,\n );\n\n const granularitySelectorHasMarginTop = !title && !description && !tooltip;\n\n return (\n <ChartCard\n data={results}\n dimensionsAndMeasures={[measure, xAxis, groupBy]}\n errorMessage={results.error}\n description={description}\n title={title}\n tooltip={tooltip}\n hideMenu={hideMenu}\n >\n {setGranularity && (\n <ChartGranularitySelectField\n hasMarginTop={granularitySelectorHasMarginTop}\n dimension={xAxis}\n onChange={setGranularity}\n />\n )}\n <LineChart\n data={data}\n reverseXAxis={reverseXAxis}\n showLegend={showLegend}\n showLogarithmicScale={showLogarithmicScale}\n showTooltips={showTooltips}\n showValueLabels={showValueLabels}\n xAxisLabel={xAxisLabel}\n yAxisLabel={yAxisLabel}\n yAxisRangeMax={yAxisRangeMax}\n yAxisRangeMin={yAxisRangeMin}\n options={options}\n onClick={handleClick}\n />\n </ChartCard>\n );\n};\n\nexport default AreaChartPro;\n","import {\n DataResponse,\n Dimension,\n Granularity,\n LoadDataRequest,\n Value,\n loadData,\n} from '@embeddable.com/core';\nimport { definePreview, EmbeddedComponentMeta, Inputs } from '@embeddable.com/react';\nimport Component from './index';\nimport { AreaChartProAreaClickArg, AreaChartProPointClickArg } from '../lines.types';\nimport { previewData } from '../../../preview.data.constants';\nimport { getDimensionWithGranularity } from '../../utils/granularity.utils';\nimport { ThemeClientContext } from '../../../../theme/theme.types';\nimport { lineChartGroupedPro, LineChartGroupedProState } from '../LineChartGroupedPro/definition';\nimport { getClientContextTimezone } from '../../../../theme/utils/clientContext.utils';\n\nconst meta = {\n ...lineChartGroupedPro.meta,\n name: 'AreaChartPro',\n label: 'Area Chart',\n events: [\n {\n name: 'onAreaClicked',\n label: 'An area is clicked',\n properties: [\n {\n name: 'segmentDimensionValue',\n label: 'Clicked segment dimension value',\n type: 'string',\n },\n {\n name: 'segmentDimensionTimeRange',\n label: 'Clicked segment dimension time range',\n type: 'timeRange',\n },\n ],\n },\n {\n name: 'onPointClicked',\n label: 'A point is clicked',\n properties: [\n {\n name: 'axisDimensionValue',\n label: 'Clicked axis dimension value',\n type: 'string',\n },\n {\n name: 'axisDimensionTimeRange',\n label: 'Clicked axis dimension time range',\n type: 'timeRange',\n },\n {\n name: 'measureValue',\n label: 'Clicked measure value',\n type: 'number',\n },\n ],\n },\n ],\n} as const satisfies EmbeddedComponentMeta;\n\nexport type AreaChartProState = LineChartGroupedProState;\n\nconst previewConfig = {\n xAxis: previewData.dimension,\n groupBy: previewData.dimensionGroup,\n measure: previewData.measure,\n results: previewData.results1Measure2Dimensions,\n hideMenu: true,\n};\n\nconst preview = definePreview(Component, previewConfig);\n\nconst loadDataResultsArgs = (\n inputs: Inputs<typeof meta>,\n xAxis?: Dimension,\n clientContext?: ThemeClientContext,\n): LoadDataRequest => ({\n limit: inputs.maxResults,\n from: inputs.dataset,\n select: [xAxis ?? inputs.xAxis, inputs.groupBy, inputs.measure],\n timezone: getClientContextTimezone(clientContext?.timezone),\n});\n\nconst loadDataResults = (\n inputs: Inputs<typeof meta>,\n xAxis: Dimension,\n clientContext: ThemeClientContext,\n): DataResponse => loadData(loadDataResultsArgs(inputs, xAxis, clientContext));\n\nconst events = {\n onAreaClicked: (value: AreaChartProAreaClickArg) => ({\n segmentDimensionValue: value.groupingDimensionValue ?? Value.noFilter(),\n segmentDimensionTimeRange: value.groupingDimensionTimeRange ?? Value.noFilter(),\n }),\n onPointClicked: (value: AreaChartProPointClickArg) => ({\n axisDimensionValue: value.dimensionValue ?? Value.noFilter(),\n axisDimensionTimeRange: value.dimensionTimeRange ?? Value.noFilter(),\n measureValue: value.measureValue ?? Value.noFilter(),\n }),\n};\n\nconst props = (\n inputs: Inputs<typeof meta>,\n [state, setState]: [AreaChartProState, (state: AreaChartProState) => void],\n clientContext: ThemeClientContext,\n) => {\n const xAxisWithGranularity = getDimensionWithGranularity(inputs.xAxis, state?.granularity);\n\n return {\n ...inputs,\n xAxis: xAxisWithGranularity,\n granularity: state?.granularity,\n setGranularity: (granularity: Granularity) => setState({ granularity }),\n results: loadDataResults(inputs, xAxisWithGranularity, clientContext),\n };\n};\n\nexport const areaChartPro = {\n Component,\n meta,\n preview,\n previewConfig,\n config: {\n props,\n events,\n },\n results: {\n loadDataArgs: loadDataResultsArgs,\n loadData: loadDataResults,\n },\n} as const;\n"],"names":["getAreaChartProData","props","theme","data","getLineChartGroupedProData","dataset","setColorAlpha","getPixelPoints","chart","datasetIndex","interpolateLineY","clickX","points","i","left","right","t","last","handlePointClick","elementAtEvent","clickY","dimension","granularity","onPointClicked","clicked","pointY","_a","dimensionValue","_b","measureValue","_e","_d","_c","getTimeRangeFromDimensionValue","handleAreaClick","groupBy","onAreaClicked","chartBottom","lineY","baseY","groupingDimensionValue","createAreaClickHandler","event","Chart","getAreaChartProOptions","options","lineOptions","getLineChartGroupedProOptions","mergician","AreaChartPro","useTheme","i18nSetup","title","description","tooltip","xAxisLabel","yAxisLabel","resolveI18nProps","hideMenu","measure","xAxis","reverseXAxis","showLegend","showLogarithmicScale","showTooltips","showValueLabels","yAxisRangeMax","yAxisRangeMin","setGranularity","results","useFillGaps","handleClick","granularitySelectorHasMarginTop","jsxs","ChartCard","jsx","ChartGranularitySelectField","LineChart","meta","lineChartGroupedPro","previewConfig","previewData","preview","definePreview","Component","loadDataResultsArgs","inputs","clientContext","getClientContextTimezone","loadDataResults","loadData","events","value","Value","state","setState","xAxisWithGranularity","getDimensionWithGranularity","areaChartPro"],"mappings":"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"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { a7 as C, u as ie, a8 as F } from "./index-
|
|
1
|
+
import { a7 as C, u as ie, a8 as F } from "./index-DcPl9DUc.js";
|
|
2
2
|
import { useTheme as re, definePreview as le } from "@embeddable.com/react";
|
|
3
3
|
import { i as me, r as ue, a as de } from "./component.utils-oQMZT7TK.js";
|
|
4
|
-
import { C as ce } from "./ChartCard-
|
|
4
|
+
import { C as ce } from "./ChartCard-HpSv5cY6.js";
|
|
5
5
|
import { useRef as we, useState as x, useEffect as be } from "react";
|
|
6
|
-
import { u as A } from "./charts.fillGaps.hooks-
|
|
7
|
-
import { b as M } from "./formatter.utils-
|
|
6
|
+
import { u as A } from "./charts.fillGaps.hooks-CvS5tfFP.js";
|
|
7
|
+
import { b as M } from "./formatter.utils-CueRuFiK.js";
|
|
8
8
|
import { u as pe } from "./tables.hooks-fVC_4V5K.js";
|
|
9
|
-
import { i as a, s as f } from "./component.inputs.constants-
|
|
10
|
-
import { p as b } from "./preview.data.constants-
|
|
9
|
+
import { i as a, s as f } from "./component.inputs.constants-DYl-U975.js";
|
|
10
|
+
import { p as b } from "./preview.data.constants-B8B82ITM.js";
|
|
11
11
|
import { g as B } from "./clientContext.utils-DpB5KsfX.js";
|
|
12
12
|
const Re = (e, o) => {
|
|
13
13
|
const s = M(o);
|
|
@@ -260,4 +260,4 @@ export {
|
|
|
260
260
|
Oe as i,
|
|
261
261
|
je as p
|
|
262
262
|
};
|
|
263
|
-
//# sourceMappingURL=definition-
|
|
263
|
+
//# sourceMappingURL=definition-CvUSTWbU.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definition-D7OtKl-K.js","sources":["../src/components/charts/tables/PivotTablePro/PivotPro.utils.ts","../src/utils/array.utils.ts","../src/components/charts/tables/PivotTablePro/index.tsx","../src/components/charts/tables/PivotTablePro/definition.ts"],"sourcesContent":["import { Dimension, Measure } from '@embeddable.com/core';\nimport { Theme } from '../../../../theme/theme.types';\nimport { PivotTableProps } from '@embeddable.com/remarkable-ui';\nimport { getThemeFormatter } from '../../../../theme/formatter/formatter.utils';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport const getPivotMeasures = (\n props: { measures: Measure[]; displayNullAs?: string },\n theme: Theme,\n): PivotTableProps<any>['measures'] => {\n const themeFormatter = getThemeFormatter(theme);\n\n return props.measures.map((measure) => {\n return {\n key: measure.name,\n label: themeFormatter.dimensionOrMeasureTitle(measure),\n showAsPercentage: Boolean(measure.inputs?.showAsPercentage),\n percentageDecimalPlaces: measure.inputs?.decimalPlaces ?? 1,\n accessor: (row) => {\n const value = row[measure.name];\n\n return value == null\n ? props.displayNullAs\n : themeFormatter.data(measure, row[measure.name]);\n },\n };\n });\n};\n\nexport const getPivotDimension = (\n props: { dimension: Dimension },\n theme: Theme,\n): PivotTableProps<any>['rowDimension' | 'columnDimension'] => {\n const themeFormatter = getThemeFormatter(theme);\n\n return {\n key: props.dimension.name,\n label: themeFormatter.dimensionOrMeasureTitle(props.dimension),\n formatValue: (value: string) => themeFormatter.data(props.dimension, value),\n };\n};\n\nexport const getPivotColumnTotalsFor = (\n measures: Measure[],\n): PivotTableProps<any>['columnTotalsFor'] | undefined => {\n return measures.filter((m) => m.inputs?.showColumnTotal).map((m) => m.name);\n};\n\nexport const getPivotRowTotalsFor = (\n measures: Measure[],\n): PivotTableProps<any>['rowTotalsFor'] | undefined => {\n return measures.filter((m) => m.inputs?.showRowTotal).map((m) => m.name);\n};\n","export const sortArrayByProp = <T, K extends keyof T>(\n arr: T[],\n prop: K,\n order: 'asc' | 'desc' = 'asc',\n): T[] => {\n return [...arr].sort((a, b) => {\n if (a[prop] < b[prop]) return order === 'asc' ? -1 : 1;\n if (a[prop] > b[prop]) return order === 'asc' ? 1 : -1;\n return 0;\n });\n};\n","import { useTheme } from '@embeddable.com/react';\nimport { Theme } from '../../../../theme/theme.types';\nimport { i18n, i18nSetup } from '../../../../theme/i18n/i18n';\nimport { ChartCard, ChartCardHeaderProps } from '../../shared/ChartCard/ChartCard';\nimport { resolveI18nProps } from '../../../component.utils';\nimport { DataResponse, Dimension, Measure } from '@embeddable.com/core';\nimport { PivotTable } from '@embeddable.com/remarkable-ui';\nimport { useEffect, useRef, useState } from 'react';\nimport { useFillGaps } from '../../charts.fillGaps.hooks';\nimport {\n getPivotColumnTotalsFor,\n getPivotDimension,\n getPivotMeasures,\n getPivotRowTotalsFor,\n} from './PivotPro.utils';\nimport { useGetTableSortedResults } from '../tables.hooks';\nimport { sortArrayByProp } from '../../../../utils/array.utils';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport type PivotTableProProps = {\n results: DataResponse;\n resultsSubRows?: DataResponse;\n measures: Measure[];\n rowDimension: Dimension;\n subRowDimension?: Dimension;\n columnDimension: Dimension;\n displayNullAs?: string;\n columnWidth?: number;\n firstColumnWidth?: number;\n expandedRowKeys: string[];\n setExpandedRowKey: (expandedRowKeys: string) => void;\n} & ChartCardHeaderProps;\n\nconst PivotTablePro = (props: PivotTableProProps) => {\n const theme = useTheme() as Theme;\n i18nSetup(theme);\n\n const { title, description, tooltip } = resolveI18nProps(props);\n const {\n resultsSubRows,\n measures,\n rowDimension,\n subRowDimension,\n columnDimension,\n displayNullAs,\n columnWidth,\n firstColumnWidth,\n hideMenu,\n expandedRowKeys,\n setExpandedRowKey,\n } = props;\n\n const columnOrder = Array.from(\n new Set((props.results.data ?? []).filter(Boolean).map((d) => d[columnDimension.name])),\n );\n\n const rowOrder = Array.from(\n new Set((props.results.data ?? []).filter(Boolean).map((d) => d[rowDimension.name])),\n );\n\n // Fill gaps for the column dimension\n const resultsColumnDimensionFillGaps = useFillGaps({\n results: props.results,\n dimension: columnDimension,\n });\n\n // Fill gaps for the row dimension\n const resultsRowColumnDimensionFillGaps = useFillGaps({\n results: resultsColumnDimensionFillGaps,\n dimension: rowDimension,\n });\n\n const results = useGetTableSortedResults({\n results: resultsRowColumnDimensionFillGaps,\n columnOrder,\n rowOrder,\n columnDimension,\n rowDimension,\n measures,\n });\n\n const cardContentRef = useRef<HTMLDivElement>(null);\n\n const pivotMeasures = getPivotMeasures({ measures, displayNullAs }, theme);\n const pivotRowDimension = getPivotDimension({ dimension: rowDimension }, theme);\n const pivotSubRowDimension = subRowDimension\n ? getPivotDimension({ dimension: subRowDimension }, theme)\n : undefined;\n const pivotColumnDimension = getPivotDimension({ dimension: columnDimension }, theme);\n const pivotColumnTotalsFor = getPivotColumnTotalsFor(measures);\n const pivotRowTotalsFor = getPivotRowTotalsFor(measures);\n\n const [loadingRows, setLoadingRows] = useState(new Set<string>());\n const [subRowsByRow, setSubRowsByRow] = useState(new Map<string, any[]>());\n\n const handleRowExpand = (rowKey: string) => {\n setLoadingRows((prev) => new Set(prev).add(rowKey));\n setExpandedRowKey(rowKey);\n };\n\n useEffect(() => {\n // No results or no expandedRowKeys, nothing to load\n if (!resultsSubRows || !resultsSubRows?.data || expandedRowKeys.length === 0) {\n return;\n }\n\n const subRowsByRowData = new Map<string, any[]>();\n expandedRowKeys.forEach((rowKey) => {\n const containsSubRow = resultsSubRows.data?.some(\n (row) => String(row[rowDimension.name]) === rowKey,\n );\n\n if (containsSubRow) {\n const subRows =\n resultsSubRows.data?.filter((row) => String(row[rowDimension.name]) === rowKey) ?? [];\n const subRowsSorted = subRowDimension\n ? sortArrayByProp(subRows, subRowDimension.name, 'asc')\n : subRows;\n\n subRowsByRowData.set(rowKey, subRowsSorted);\n setLoadingRows((prev) => {\n const next = new Set(prev);\n next.delete(rowKey);\n return next;\n });\n }\n });\n setSubRowsByRow(subRowsByRowData);\n }, [resultsSubRows, expandedRowKeys, rowDimension, subRowDimension]);\n\n const data: DataResponse = {\n ...props.results,\n isLoading: Boolean(props.results?.isLoading || resultsSubRows?.isLoading),\n };\n\n return (\n <ChartCard\n ref={cardContentRef}\n title={title}\n description={description}\n tooltip={tooltip}\n data={data}\n dimensionsAndMeasures={[rowDimension, columnDimension, ...measures]}\n errorMessage={props.results?.error}\n hideMenu={hideMenu}\n >\n <PivotTable\n firstColumnWidth={firstColumnWidth}\n columnWidth={columnWidth}\n totalLabel={i18n.t('charts.pivotTable.total')}\n data={results}\n measures={pivotMeasures}\n rowDimension={pivotRowDimension}\n columnDimension={pivotColumnDimension}\n columnTotalsFor={pivotColumnTotalsFor}\n rowTotalsFor={pivotRowTotalsFor}\n expandableRows={Boolean(subRowDimension)}\n subRowsByRow={subRowsByRow}\n loadingRows={loadingRows}\n onRowExpand={handleRowExpand}\n subRowDimension={pivotSubRowDimension}\n />\n </ChartCard>\n );\n};\n\nexport default PivotTablePro;\n","import { DataResponse, LoadDataRequest, loadData } from '@embeddable.com/core';\nimport { definePreview, EmbeddedComponentMeta, Inputs } from '@embeddable.com/react';\nimport Component from './index';\nimport { inputs } from '../../../component.inputs.constants';\nimport { subInputs } from '../../../component.subinputs.constants';\nimport { previewData } from '../../../preview.data.constants';\nimport { getClientContextTimezone } from '../../../../theme/utils/clientContext.utils';\nimport { ThemeClientContext } from '../../../../theme/theme.types';\n\nconst meta = {\n name: 'PivotTablePro',\n label: 'Pivot Table',\n description:\n 'Cross-tabulated table — row and column dimensions intersected by one or more measures.',\n category: 'Table Charts',\n inputs: [\n inputs.dataset,\n {\n ...inputs.measures,\n label: 'Measures to display',\n inputs: [\n ...inputs.measures.inputs,\n {\n ...subInputs.boolean,\n name: 'showColumnTotal',\n label: 'Show column total',\n },\n {\n ...subInputs.boolean,\n name: 'showRowTotal',\n label: 'Show row total',\n },\n {\n ...subInputs.boolean,\n name: 'showAsPercentage',\n label: 'Show as percentage',\n description: 'If turned on, other measures may be ignored',\n defaultValue: false,\n },\n ],\n },\n {\n ...inputs.dimensionWithDateBounds,\n label: 'Column dimension',\n name: 'columnDimension',\n },\n {\n ...inputs.dimensionWithDateBounds,\n label: 'Primary row dimension',\n name: 'rowDimension',\n },\n {\n ...inputs.dimension,\n label: 'Secondary row dimension (optional)',\n name: 'subRowDimension',\n required: false,\n description:\n 'When set, each primary row becomes expandable. Clicking a row loads a breakdown by the second dimension.',\n },\n inputs.title,\n inputs.description,\n inputs.tooltip,\n inputs.displayNullAs,\n {\n ...inputs.number,\n name: 'firstColumnWidth',\n label: 'First column width',\n description: 'Set the width in px (e.g. 200)',\n category: 'Component Settings',\n },\n {\n ...inputs.number,\n name: 'columnWidth',\n label: 'Column width',\n description: 'Set the width in px (e.g. 200)',\n category: 'Component Settings',\n },\n inputs.maxResults,\n ],\n} as const satisfies EmbeddedComponentMeta;\n\nexport type PivotTableProState = {\n expandedRowKeys?: string[];\n};\n\nconst previewConfig = {\n measures: [{ ...previewData.measure, inputs: { showRowTotal: true, showColumnTotal: true } }],\n rowDimension: previewData.dimension,\n columnDimension: previewData.dimensionGroup,\n results: previewData.results1Measure2Dimensions,\n hideMenu: true,\n expandedRowKeys: [],\n setExpandedRowKey: () => {},\n};\n\nconst preview = definePreview(Component, previewConfig);\n\nconst loadDataResultsArgs = (\n inputs: Inputs<typeof meta>,\n clientContext?: ThemeClientContext,\n): LoadDataRequest => ({\n from: inputs.dataset,\n select: [inputs.rowDimension, inputs.columnDimension, ...inputs.measures],\n limit: inputs.maxResults,\n countRows: true,\n timezone: getClientContextTimezone(clientContext?.timezone),\n});\n\nconst loadDataResults = (\n inputs: Inputs<typeof meta>,\n clientContext?: ThemeClientContext,\n): DataResponse => loadData(loadDataResultsArgs(inputs, clientContext));\n\nconst loadDataResultsSubRowsArgs = (\n inputs: Inputs<typeof meta>,\n expandedRowKeys: string[],\n clientContext?: ThemeClientContext,\n): LoadDataRequest => ({\n from: inputs.dataset,\n select: [inputs.rowDimension, inputs.subRowDimension, inputs.columnDimension, ...inputs.measures],\n limit: inputs.maxResults,\n countRows: true,\n timezone: getClientContextTimezone(clientContext?.timezone),\n filters: [\n {\n property: inputs.rowDimension,\n operator: 'equals',\n value: expandedRowKeys,\n },\n ],\n});\n\nconst loadDataResultsSubRows = (\n inputs: Inputs<typeof meta>,\n expandedRowKeys: string[],\n clientContext?: ThemeClientContext,\n): DataResponse | undefined => {\n if (expandedRowKeys.length > 0) {\n return loadData(loadDataResultsSubRowsArgs(inputs, expandedRowKeys, clientContext));\n }\n return undefined;\n};\n\nconst props = (\n inputs: Inputs<typeof meta>,\n [state, setState]: [PivotTableProState, (state: PivotTableProState) => void],\n clientContext: ThemeClientContext,\n) => {\n const expandedRowKeys = state?.expandedRowKeys ?? [];\n\n return {\n ...inputs,\n state,\n expandedRowKeys,\n setExpandedRowKey: (rowKey: string) =>\n setState({ expandedRowKeys: [...expandedRowKeys, rowKey] }),\n results: loadDataResults(inputs, clientContext),\n resultsSubRows: loadDataResultsSubRows(inputs, expandedRowKeys, clientContext),\n };\n};\n\nexport const pivotTablePro = {\n Component,\n meta,\n preview,\n previewConfig,\n config: {\n props,\n },\n results: {\n loadDataArgs: loadDataResultsArgs,\n loadData: loadDataResults,\n },\n resultsSubRows: {\n loadDataArgs: loadDataResultsSubRowsArgs,\n loadData: loadDataResultsSubRows,\n },\n} as const;\n"],"names":["getPivotMeasures","props","theme","themeFormatter","getThemeFormatter","measure","_a","_b","row","getPivotDimension","value","getPivotColumnTotalsFor","measures","m","getPivotRowTotalsFor","sortArrayByProp","arr","prop","order","a","b","PivotTablePro","useTheme","i18nSetup","title","description","tooltip","resolveI18nProps","resultsSubRows","rowDimension","subRowDimension","columnDimension","displayNullAs","columnWidth","firstColumnWidth","hideMenu","expandedRowKeys","setExpandedRowKey","columnOrder","d","rowOrder","resultsColumnDimensionFillGaps","useFillGaps","resultsRowColumnDimensionFillGaps","results","useGetTableSortedResults","cardContentRef","useRef","pivotMeasures","pivotRowDimension","pivotSubRowDimension","pivotColumnDimension","pivotColumnTotalsFor","pivotRowTotalsFor","loadingRows","setLoadingRows","useState","subRowsByRow","setSubRowsByRow","handleRowExpand","rowKey","prev","useEffect","subRowsByRowData","subRows","subRowsSorted","next","data","jsx","ChartCard","PivotTable","i18n","meta","inputs","subInputs","previewConfig","previewData","preview","definePreview","Component","loadDataResultsArgs","clientContext","getClientContextTimezone","loadDataResults","loadData","loadDataResultsSubRowsArgs","loadDataResultsSubRows","state","setState","pivotTablePro"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"definition-CvUSTWbU.js","sources":["../src/components/charts/tables/PivotTablePro/PivotPro.utils.ts","../src/utils/array.utils.ts","../src/components/charts/tables/PivotTablePro/index.tsx","../src/components/charts/tables/PivotTablePro/definition.ts"],"sourcesContent":["import { Dimension, Measure } from '@embeddable.com/core';\nimport { Theme } from '../../../../theme/theme.types';\nimport { PivotTableProps } from '@embeddable.com/remarkable-ui';\nimport { getThemeFormatter } from '../../../../theme/formatter/formatter.utils';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport const getPivotMeasures = (\n props: { measures: Measure[]; displayNullAs?: string },\n theme: Theme,\n): PivotTableProps<any>['measures'] => {\n const themeFormatter = getThemeFormatter(theme);\n\n return props.measures.map((measure) => {\n return {\n key: measure.name,\n label: themeFormatter.dimensionOrMeasureTitle(measure),\n showAsPercentage: Boolean(measure.inputs?.showAsPercentage),\n percentageDecimalPlaces: measure.inputs?.decimalPlaces ?? 1,\n accessor: (row) => {\n const value = row[measure.name];\n\n return value == null\n ? props.displayNullAs\n : themeFormatter.data(measure, row[measure.name]);\n },\n };\n });\n};\n\nexport const getPivotDimension = (\n props: { dimension: Dimension },\n theme: Theme,\n): PivotTableProps<any>['rowDimension' | 'columnDimension'] => {\n const themeFormatter = getThemeFormatter(theme);\n\n return {\n key: props.dimension.name,\n label: themeFormatter.dimensionOrMeasureTitle(props.dimension),\n formatValue: (value: string) => themeFormatter.data(props.dimension, value),\n };\n};\n\nexport const getPivotColumnTotalsFor = (\n measures: Measure[],\n): PivotTableProps<any>['columnTotalsFor'] | undefined => {\n return measures.filter((m) => m.inputs?.showColumnTotal).map((m) => m.name);\n};\n\nexport const getPivotRowTotalsFor = (\n measures: Measure[],\n): PivotTableProps<any>['rowTotalsFor'] | undefined => {\n return measures.filter((m) => m.inputs?.showRowTotal).map((m) => m.name);\n};\n","export const sortArrayByProp = <T, K extends keyof T>(\n arr: T[],\n prop: K,\n order: 'asc' | 'desc' = 'asc',\n): T[] => {\n return [...arr].sort((a, b) => {\n if (a[prop] < b[prop]) return order === 'asc' ? -1 : 1;\n if (a[prop] > b[prop]) return order === 'asc' ? 1 : -1;\n return 0;\n });\n};\n","import { useTheme } from '@embeddable.com/react';\nimport { Theme } from '../../../../theme/theme.types';\nimport { i18n, i18nSetup } from '../../../../theme/i18n/i18n';\nimport { ChartCard, ChartCardHeaderProps } from '../../shared/ChartCard/ChartCard';\nimport { resolveI18nProps } from '../../../component.utils';\nimport { DataResponse, Dimension, Measure } from '@embeddable.com/core';\nimport { PivotTable } from '@embeddable.com/remarkable-ui';\nimport { useEffect, useRef, useState } from 'react';\nimport { useFillGaps } from '../../charts.fillGaps.hooks';\nimport {\n getPivotColumnTotalsFor,\n getPivotDimension,\n getPivotMeasures,\n getPivotRowTotalsFor,\n} from './PivotPro.utils';\nimport { useGetTableSortedResults } from '../tables.hooks';\nimport { sortArrayByProp } from '../../../../utils/array.utils';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport type PivotTableProProps = {\n results: DataResponse;\n resultsSubRows?: DataResponse;\n measures: Measure[];\n rowDimension: Dimension;\n subRowDimension?: Dimension;\n columnDimension: Dimension;\n displayNullAs?: string;\n columnWidth?: number;\n firstColumnWidth?: number;\n expandedRowKeys: string[];\n setExpandedRowKey: (expandedRowKeys: string) => void;\n} & ChartCardHeaderProps;\n\nconst PivotTablePro = (props: PivotTableProProps) => {\n const theme = useTheme() as Theme;\n i18nSetup(theme);\n\n const { title, description, tooltip } = resolveI18nProps(props);\n const {\n resultsSubRows,\n measures,\n rowDimension,\n subRowDimension,\n columnDimension,\n displayNullAs,\n columnWidth,\n firstColumnWidth,\n hideMenu,\n expandedRowKeys,\n setExpandedRowKey,\n } = props;\n\n const columnOrder = Array.from(\n new Set((props.results.data ?? []).filter(Boolean).map((d) => d[columnDimension.name])),\n );\n\n const rowOrder = Array.from(\n new Set((props.results.data ?? []).filter(Boolean).map((d) => d[rowDimension.name])),\n );\n\n // Fill gaps for the column dimension\n const resultsColumnDimensionFillGaps = useFillGaps({\n results: props.results,\n dimension: columnDimension,\n });\n\n // Fill gaps for the row dimension\n const resultsRowColumnDimensionFillGaps = useFillGaps({\n results: resultsColumnDimensionFillGaps,\n dimension: rowDimension,\n });\n\n const results = useGetTableSortedResults({\n results: resultsRowColumnDimensionFillGaps,\n columnOrder,\n rowOrder,\n columnDimension,\n rowDimension,\n measures,\n });\n\n const cardContentRef = useRef<HTMLDivElement>(null);\n\n const pivotMeasures = getPivotMeasures({ measures, displayNullAs }, theme);\n const pivotRowDimension = getPivotDimension({ dimension: rowDimension }, theme);\n const pivotSubRowDimension = subRowDimension\n ? getPivotDimension({ dimension: subRowDimension }, theme)\n : undefined;\n const pivotColumnDimension = getPivotDimension({ dimension: columnDimension }, theme);\n const pivotColumnTotalsFor = getPivotColumnTotalsFor(measures);\n const pivotRowTotalsFor = getPivotRowTotalsFor(measures);\n\n const [loadingRows, setLoadingRows] = useState(new Set<string>());\n const [subRowsByRow, setSubRowsByRow] = useState(new Map<string, any[]>());\n\n const handleRowExpand = (rowKey: string) => {\n setLoadingRows((prev) => new Set(prev).add(rowKey));\n setExpandedRowKey(rowKey);\n };\n\n useEffect(() => {\n // No results or no expandedRowKeys, nothing to load\n if (!resultsSubRows || !resultsSubRows?.data || expandedRowKeys.length === 0) {\n return;\n }\n\n const subRowsByRowData = new Map<string, any[]>();\n expandedRowKeys.forEach((rowKey) => {\n const containsSubRow = resultsSubRows.data?.some(\n (row) => String(row[rowDimension.name]) === rowKey,\n );\n\n if (containsSubRow) {\n const subRows =\n resultsSubRows.data?.filter((row) => String(row[rowDimension.name]) === rowKey) ?? [];\n const subRowsSorted = subRowDimension\n ? sortArrayByProp(subRows, subRowDimension.name, 'asc')\n : subRows;\n\n subRowsByRowData.set(rowKey, subRowsSorted);\n setLoadingRows((prev) => {\n const next = new Set(prev);\n next.delete(rowKey);\n return next;\n });\n }\n });\n setSubRowsByRow(subRowsByRowData);\n }, [resultsSubRows, expandedRowKeys, rowDimension, subRowDimension]);\n\n const data: DataResponse = {\n ...props.results,\n isLoading: Boolean(props.results?.isLoading || resultsSubRows?.isLoading),\n };\n\n return (\n <ChartCard\n ref={cardContentRef}\n title={title}\n description={description}\n tooltip={tooltip}\n data={data}\n dimensionsAndMeasures={[rowDimension, columnDimension, ...measures]}\n errorMessage={props.results?.error}\n hideMenu={hideMenu}\n >\n <PivotTable\n firstColumnWidth={firstColumnWidth}\n columnWidth={columnWidth}\n totalLabel={i18n.t('charts.pivotTable.total')}\n data={results}\n measures={pivotMeasures}\n rowDimension={pivotRowDimension}\n columnDimension={pivotColumnDimension}\n columnTotalsFor={pivotColumnTotalsFor}\n rowTotalsFor={pivotRowTotalsFor}\n expandableRows={Boolean(subRowDimension)}\n subRowsByRow={subRowsByRow}\n loadingRows={loadingRows}\n onRowExpand={handleRowExpand}\n subRowDimension={pivotSubRowDimension}\n />\n </ChartCard>\n );\n};\n\nexport default PivotTablePro;\n","import { DataResponse, LoadDataRequest, loadData } from '@embeddable.com/core';\nimport { definePreview, EmbeddedComponentMeta, Inputs } from '@embeddable.com/react';\nimport Component from './index';\nimport { inputs } from '../../../component.inputs.constants';\nimport { subInputs } from '../../../component.subinputs.constants';\nimport { previewData } from '../../../preview.data.constants';\nimport { getClientContextTimezone } from '../../../../theme/utils/clientContext.utils';\nimport { ThemeClientContext } from '../../../../theme/theme.types';\n\nconst meta = {\n name: 'PivotTablePro',\n label: 'Pivot Table',\n description:\n 'Cross-tabulated table — row and column dimensions intersected by one or more measures.',\n category: 'Table Charts',\n inputs: [\n inputs.dataset,\n {\n ...inputs.measures,\n label: 'Measures to display',\n inputs: [\n ...inputs.measures.inputs,\n {\n ...subInputs.boolean,\n name: 'showColumnTotal',\n label: 'Show column total',\n },\n {\n ...subInputs.boolean,\n name: 'showRowTotal',\n label: 'Show row total',\n },\n {\n ...subInputs.boolean,\n name: 'showAsPercentage',\n label: 'Show as percentage',\n description: 'If turned on, other measures may be ignored',\n defaultValue: false,\n },\n ],\n },\n {\n ...inputs.dimensionWithDateBounds,\n label: 'Column dimension',\n name: 'columnDimension',\n },\n {\n ...inputs.dimensionWithDateBounds,\n label: 'Primary row dimension',\n name: 'rowDimension',\n },\n {\n ...inputs.dimension,\n label: 'Secondary row dimension (optional)',\n name: 'subRowDimension',\n required: false,\n description:\n 'When set, each primary row becomes expandable. Clicking a row loads a breakdown by the second dimension.',\n },\n inputs.title,\n inputs.description,\n inputs.tooltip,\n inputs.displayNullAs,\n {\n ...inputs.number,\n name: 'firstColumnWidth',\n label: 'First column width',\n description: 'Set the width in px (e.g. 200)',\n category: 'Component Settings',\n },\n {\n ...inputs.number,\n name: 'columnWidth',\n label: 'Column width',\n description: 'Set the width in px (e.g. 200)',\n category: 'Component Settings',\n },\n inputs.maxResults,\n ],\n} as const satisfies EmbeddedComponentMeta;\n\nexport type PivotTableProState = {\n expandedRowKeys?: string[];\n};\n\nconst previewConfig = {\n measures: [{ ...previewData.measure, inputs: { showRowTotal: true, showColumnTotal: true } }],\n rowDimension: previewData.dimension,\n columnDimension: previewData.dimensionGroup,\n results: previewData.results1Measure2Dimensions,\n hideMenu: true,\n expandedRowKeys: [],\n setExpandedRowKey: () => {},\n};\n\nconst preview = definePreview(Component, previewConfig);\n\nconst loadDataResultsArgs = (\n inputs: Inputs<typeof meta>,\n clientContext?: ThemeClientContext,\n): LoadDataRequest => ({\n from: inputs.dataset,\n select: [inputs.rowDimension, inputs.columnDimension, ...inputs.measures],\n limit: inputs.maxResults,\n countRows: true,\n timezone: getClientContextTimezone(clientContext?.timezone),\n});\n\nconst loadDataResults = (\n inputs: Inputs<typeof meta>,\n clientContext?: ThemeClientContext,\n): DataResponse => loadData(loadDataResultsArgs(inputs, clientContext));\n\nconst loadDataResultsSubRowsArgs = (\n inputs: Inputs<typeof meta>,\n expandedRowKeys: string[],\n clientContext?: ThemeClientContext,\n): LoadDataRequest => ({\n from: inputs.dataset,\n select: [inputs.rowDimension, inputs.subRowDimension, inputs.columnDimension, ...inputs.measures],\n limit: inputs.maxResults,\n countRows: true,\n timezone: getClientContextTimezone(clientContext?.timezone),\n filters: [\n {\n property: inputs.rowDimension,\n operator: 'equals',\n value: expandedRowKeys,\n },\n ],\n});\n\nconst loadDataResultsSubRows = (\n inputs: Inputs<typeof meta>,\n expandedRowKeys: string[],\n clientContext?: ThemeClientContext,\n): DataResponse | undefined => {\n if (expandedRowKeys.length > 0) {\n return loadData(loadDataResultsSubRowsArgs(inputs, expandedRowKeys, clientContext));\n }\n return undefined;\n};\n\nconst props = (\n inputs: Inputs<typeof meta>,\n [state, setState]: [PivotTableProState, (state: PivotTableProState) => void],\n clientContext: ThemeClientContext,\n) => {\n const expandedRowKeys = state?.expandedRowKeys ?? [];\n\n return {\n ...inputs,\n state,\n expandedRowKeys,\n setExpandedRowKey: (rowKey: string) =>\n setState({ expandedRowKeys: [...expandedRowKeys, rowKey] }),\n results: loadDataResults(inputs, clientContext),\n resultsSubRows: loadDataResultsSubRows(inputs, expandedRowKeys, clientContext),\n };\n};\n\nexport const pivotTablePro = {\n Component,\n meta,\n preview,\n previewConfig,\n config: {\n props,\n },\n results: {\n loadDataArgs: loadDataResultsArgs,\n loadData: loadDataResults,\n },\n resultsSubRows: {\n loadDataArgs: loadDataResultsSubRowsArgs,\n loadData: loadDataResultsSubRows,\n },\n} as const;\n"],"names":["getPivotMeasures","props","theme","themeFormatter","getThemeFormatter","measure","_a","_b","row","getPivotDimension","value","getPivotColumnTotalsFor","measures","m","getPivotRowTotalsFor","sortArrayByProp","arr","prop","order","a","b","PivotTablePro","useTheme","i18nSetup","title","description","tooltip","resolveI18nProps","resultsSubRows","rowDimension","subRowDimension","columnDimension","displayNullAs","columnWidth","firstColumnWidth","hideMenu","expandedRowKeys","setExpandedRowKey","columnOrder","d","rowOrder","resultsColumnDimensionFillGaps","useFillGaps","resultsRowColumnDimensionFillGaps","results","useGetTableSortedResults","cardContentRef","useRef","pivotMeasures","pivotRowDimension","pivotSubRowDimension","pivotColumnDimension","pivotColumnTotalsFor","pivotRowTotalsFor","loadingRows","setLoadingRows","useState","subRowsByRow","setSubRowsByRow","handleRowExpand","rowKey","prev","useEffect","subRowsByRowData","subRows","subRowsSorted","next","data","jsx","ChartCard","PivotTable","i18n","meta","inputs","subInputs","previewConfig","previewData","preview","definePreview","Component","loadDataResultsArgs","clientContext","getClientContextTimezone","loadDataResults","loadData","loadDataResultsSubRowsArgs","loadDataResultsSubRows","state","setState","pivotTablePro"],"mappings":"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"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { _ as Y, a3 as P, a9 as q, a7 as F, a as J, V, a8 as Q } from "./index-
|
|
1
|
+
import { _ as Y, a3 as P, a9 as q, a7 as F, a as J, V, a8 as Q } from "./index-DcPl9DUc.js";
|
|
2
2
|
import { useTheme as W, definePreview as Z } from "@embeddable.com/react";
|
|
3
3
|
import { i as ee, r as ae, a as te } from "./component.utils-oQMZT7TK.js";
|
|
4
|
-
import { C as ne } from "./ChartCard-
|
|
5
|
-
import { g as O } from "./dimension.utils-
|
|
6
|
-
import { g as v, b as I } from "./formatter.utils-
|
|
4
|
+
import { C as ne } from "./ChartCard-HpSv5cY6.js";
|
|
5
|
+
import { g as O } from "./dimension.utils-lPl2Y1D4.js";
|
|
6
|
+
import { g as v, b as I } from "./formatter.utils-CueRuFiK.js";
|
|
7
7
|
import { a as se } from "./styles.utils-BfpH_m_W.js";
|
|
8
8
|
import { N as C, g as oe, m as k, r as R } from "./scatter.utils-DV4Kp2Lb.js";
|
|
9
|
-
import { i as n, s as ie } from "./component.inputs.constants-
|
|
10
|
-
import { p as D } from "./preview.data.constants-
|
|
9
|
+
import { i as n, s as ie } from "./component.inputs.constants-DYl-U975.js";
|
|
10
|
+
import { p as D } from "./preview.data.constants-B8B82ITM.js";
|
|
11
11
|
import { g as re } from "./clientContext.utils-DpB5KsfX.js";
|
|
12
12
|
const le = ({
|
|
13
13
|
xMeasure: e,
|
|
@@ -387,4 +387,4 @@ export {
|
|
|
387
387
|
ve as b,
|
|
388
388
|
Se as i
|
|
389
389
|
};
|
|
390
|
-
//# sourceMappingURL=definition-
|
|
390
|
+
//# sourceMappingURL=definition-DCCcpo3n.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definition-Cg6fSfVK.js","sources":["../src/components/charts/scatter/BubbleChartPro/BubbleChartPro.utils.ts","../src/components/charts/scatter/BubbleChartPro/index.tsx","../src/components/charts/scatter/BubbleChartPro/definition.ts"],"sourcesContent":["import { BubbleDataPoint, ChartData, type ChartOptions } from 'chart.js';\nimport { Context } from 'chartjs-plugin-datalabels';\nimport { DataResponse, Dimension, Measure } from '@embeddable.com/core';\nimport { getTimeRangeFromDimensionValue } from '../../../utils/dimension.utils';\nimport { Theme } from '../../../../theme/theme.types';\nimport { getThemeFormatter } from '../../../../theme/formatter/formatter.utils';\nimport { getChartColors, getStyleNumber } from '@embeddable.com/remarkable-ui';\nimport type { ChartClickArgs, BubbleDatasetExtended } from '@embeddable.com/remarkable-ui';\nimport { getDimensionMeasureColor } from '../../../../theme/styles/styles.utils';\nimport type { BubbleChartProOptionsClickArg, BubblePoint } from './BubbleChartPro.types';\nimport { getDimensionFieldName } from '../../../../utils/data.utils';\nimport {\n measureToNullableNumber,\n rawValueToString,\n NULL_GROUP_KEY,\n getScatterScales,\n type RawValue,\n} from '../scatter.utils';\n\nexport const getBubbleChartProOptions = (\n {\n xMeasure,\n yMeasure,\n sizeMeasure,\n noValueLabel,\n bubbleRadiusMax,\n showPointLabels,\n }: {\n xMeasure: Measure;\n yMeasure: Measure;\n sizeMeasure: Measure;\n noValueLabel: string;\n bubbleRadiusMax?: number;\n showPointLabels?: boolean;\n },\n theme: Theme,\n): Partial<ChartOptions<'bubble'>> => {\n const themeFormatter = getThemeFormatter(theme);\n\n const formatValue = (measure: Measure, value: number | null | undefined): string => {\n if (value === null || value === undefined) return noValueLabel;\n return themeFormatter.data(measure, value);\n };\n\n const radiusMax = bubbleRadiusMax ?? 20;\n const labelGap = getStyleNumber('--em-scatterchart-label-stack-gap', '0.25rem');\n const labelLineHeight = getStyleNumber('--em-scatterchart-label-stack-height', '1.25rem');\n\n const getBubbleRadius = (context: Context): number => {\n const ds = context.dataset as BubbleDatasetExtended;\n return ds.bubbleSizes[context.dataIndex] ?? radiusMax;\n };\n\n const captionOffset = (context: Context): number => getBubbleRadius(context) + labelGap;\n\n const valueOffset = (context: Context): number => {\n const r = getBubbleRadius(context);\n if (showPointLabels) return r + labelGap + labelLineHeight + labelGap;\n return r + labelGap;\n };\n\n return {\n scales: getScatterScales(xMeasure, yMeasure, (measure: Measure, value: number) =>\n themeFormatter.data(measure, value),\n ),\n plugins: {\n tooltip: {\n callbacks: {\n label: (ctx) => {\n const ds = ctx.dataset as BubbleDatasetExtended;\n const orig = ds.originalData?.[ctx.dataIndex];\n if (!orig) return '';\n return [\n `${themeFormatter.dimensionOrMeasureTitle(xMeasure)}: ${formatValue(xMeasure, orig.x)}`,\n `${themeFormatter.dimensionOrMeasureTitle(yMeasure)}: ${formatValue(yMeasure, orig.y)}`,\n `${themeFormatter.dimensionOrMeasureTitle(sizeMeasure)}: ${formatValue(sizeMeasure, orig.size)}`,\n ];\n },\n },\n },\n datalabels: {\n labels: {\n value: {\n formatter: (_value: BubbleDataPoint, context: Context) => {\n const ds = context.dataset as BubbleDatasetExtended;\n const orig = ds.originalData?.[context.dataIndex];\n if (!orig) return '';\n return formatValue(sizeMeasure, orig.size);\n },\n anchor: 'center',\n align: 'bottom',\n offset: valueOffset,\n },\n caption: {\n anchor: 'center',\n align: 'bottom',\n offset: captionOffset,\n },\n },\n },\n },\n };\n};\n\nexport const getBubblePointClickData = (\n point: { datasetIndex: number; index: number },\n datasets: ChartData<'bubble', BubblePoint[]>['datasets'],\n data: DataResponse['data'],\n xMeasure: Measure,\n yMeasure: Measure,\n sizeMeasure: Measure,\n pointDimension: Dimension,\n groupByDimension?: Dimension,\n): BubbleChartProOptionsClickArg | null => {\n const rowIdx = datasets[point.datasetIndex]?.data[point.index]?.rowIndex;\n if (rowIdx === undefined) return null;\n const row = data?.[rowIdx] as Record<string, RawValue> | undefined;\n if (!row) return null;\n\n const pointField = getDimensionFieldName(pointDimension);\n const groupField = groupByDimension ? getDimensionFieldName(groupByDimension) : undefined;\n\n const pointDimensionValue = rawValueToString(row[pointField]);\n const groupByDimensionValue = groupField ? rawValueToString(row[groupField]) : null;\n\n return {\n xMeasureValue: rawValueToString(row[xMeasure.name]),\n yMeasureValue: rawValueToString(row[yMeasure.name]),\n sizeMeasureValue: rawValueToString(row[sizeMeasure.name]),\n pointDimensionValue,\n groupByDimensionValue,\n pointDimensionTimeRange: getTimeRangeFromDimensionValue({\n value: pointDimensionValue,\n dimension: pointDimension,\n }),\n groupByDimensionTimeRange: getTimeRangeFromDimensionValue({\n value: groupByDimensionValue ?? undefined,\n dimension: groupByDimension,\n }),\n };\n};\n\nexport const createBubbleClickHandler = ({\n datasets,\n results,\n xMeasure,\n yMeasure,\n sizeMeasure,\n pointDimension,\n groupByDimension,\n onPointClick,\n}: {\n datasets: ChartData<'bubble', BubblePoint[]>['datasets'];\n results: DataResponse;\n xMeasure: Measure;\n yMeasure: Measure;\n sizeMeasure: Measure;\n pointDimension: Dimension;\n groupByDimension?: Dimension;\n onPointClick?: (payload: BubbleChartProOptionsClickArg) => void;\n}): ((args: ChartClickArgs) => void) => {\n return ({ elementAtEvent }) => {\n const element = elementAtEvent[0];\n if (!element) return;\n const clickData = getBubblePointClickData(\n element,\n datasets,\n results.data,\n xMeasure,\n yMeasure,\n sizeMeasure,\n pointDimension,\n groupByDimension,\n );\n if (clickData) onPointClick?.(clickData);\n };\n};\n\nexport const getBubbleChartProData = (\n props: {\n data: DataResponse['data'];\n xMeasure: Measure;\n yMeasure: Measure;\n sizeMeasure: Measure;\n pointDimension: Dimension;\n groupByDimension?: Dimension | null;\n noValueLabel: string;\n pointColor?: string;\n },\n theme: Theme,\n): ChartData<'bubble', BubblePoint[]> => {\n const themeFormatter = getThemeFormatter(theme);\n const chartColors = getChartColors();\n const data = (props.data ?? []) as Record<string, unknown>[];\n const pointField = getDimensionFieldName(props.pointDimension);\n const overrideColor = props.groupByDimension ? undefined : props.pointColor?.trim() || undefined;\n\n if (!data.length) {\n return { datasets: [{ label: '', data: [] }] };\n }\n\n const getColor = (\n color: 'background' | 'border',\n dimensionOrMeasure: Dimension | Measure,\n value: string,\n index: number,\n ) =>\n overrideColor ??\n getDimensionMeasureColor({ dimensionOrMeasure, theme, color, value, index, chartColors });\n\n const buildPoint = (row: Record<string, unknown>, rowIndex: number): BubblePoint => {\n const rawPoint = row[pointField];\n const pointLabel =\n rawPoint == null\n ? props.noValueLabel\n : String(themeFormatter.data(props.pointDimension, rawPoint as string | number | boolean));\n return {\n x: measureToNullableNumber(row[props.xMeasure.name]),\n y: measureToNullableNumber(row[props.yMeasure.name]),\n size: measureToNullableNumber(row[props.sizeMeasure.name]),\n pointLabel,\n label: pointLabel,\n rowIndex,\n };\n };\n\n if (!props.groupByDimension) {\n return {\n datasets: [\n {\n label: themeFormatter.dimensionOrMeasureTitle(props.yMeasure),\n data: data.map((row, i) => buildPoint(row, i)),\n backgroundColor: getColor('background', props.xMeasure, props.xMeasure.name, 0),\n borderColor: getColor('border', props.xMeasure, props.xMeasure.name, 0),\n },\n ],\n };\n }\n\n const groupDim = props.groupByDimension;\n const groupField = getDimensionFieldName(groupDim);\n const bucket = new Map<string, BubblePoint[]>();\n\n data.forEach((row, rowIndex) => {\n const key = row[groupField] == null ? NULL_GROUP_KEY : String(row[groupField]);\n const points = bucket.get(key) ?? [];\n points.push(buildPoint(row, rowIndex));\n bucket.set(key, points);\n });\n\n const sortedKeys = [...bucket.keys()].sort((a, b) => {\n if (a === NULL_GROUP_KEY) return 1;\n if (b === NULL_GROUP_KEY) return -1;\n return a.localeCompare(b);\n });\n\n const datasets = sortedKeys.map((key, index) => {\n const points = bucket.get(key)!;\n const firstRowIndex = points[0]!.rowIndex;\n const groupValue = key === NULL_GROUP_KEY ? null : data[firstRowIndex]?.[groupField];\n const seriesLabel =\n key === NULL_GROUP_KEY\n ? props.noValueLabel\n : themeFormatter.data(groupDim, groupValue as string | number | boolean);\n const colorKey = key === NULL_GROUP_KEY ? `${groupDim.name}.null` : `${groupDim.name}.${key}`;\n\n return {\n label: seriesLabel,\n data: points,\n backgroundColor: getColor('background', groupDim, colorKey, index),\n borderColor: getColor('border', groupDim, colorKey, index),\n };\n });\n\n return { datasets };\n};\n","import { useTheme } from '@embeddable.com/react';\nimport { BubbleChart } from '@embeddable.com/remarkable-ui';\nimport { mergician } from 'mergician';\nimport { DataResponse, Dimension, Measure } from '@embeddable.com/core';\nimport { Theme } from '../../../../theme/theme.types';\nimport { i18nSetup, i18n } from '../../../../theme/i18n/i18n';\nimport { resolveI18nProps } from '../../../component.utils';\nimport { ChartCard, ChartCardHeaderProps } from '../../shared/ChartCard/ChartCard';\nimport {\n createBubbleClickHandler,\n getBubbleChartProData,\n getBubbleChartProOptions,\n} from './BubbleChartPro.utils';\n\nimport type { BubbleChartProOptionsClickArg } from './BubbleChartPro.types';\n\nexport type BubbleChartProProps = {\n xMeasure: Measure;\n yMeasure: Measure;\n bubbleSizeMeasure: Measure;\n pointDimension: Dimension;\n groupByDimension?: Dimension;\n results: DataResponse;\n pointColor?: string;\n showLegend?: boolean;\n showTooltips?: boolean;\n showPointLabels?: boolean;\n showValueLabels?: boolean;\n showLogarithmicScale?: boolean;\n xAxisLabel?: string;\n yAxisLabel?: string;\n xAxisRangeMin?: number;\n xAxisRangeMax?: number;\n yAxisRangeMin?: number;\n yAxisRangeMax?: number;\n reverseXAxis?: boolean;\n bubbleRadiusMin?: number;\n bubbleRadiusMax?: number;\n onPointClick?: (payload: BubbleChartProOptionsClickArg) => void;\n} & ChartCardHeaderProps;\n\nconst BubbleChartPro = (props: BubbleChartProProps) => {\n const theme = useTheme() as Theme;\n i18nSetup(theme);\n\n const {\n xMeasure,\n yMeasure,\n bubbleSizeMeasure: sizeMeasure,\n pointDimension,\n groupByDimension,\n results,\n pointColor,\n showLegend,\n showTooltips,\n showPointLabels,\n showValueLabels,\n showLogarithmicScale,\n xAxisRangeMin,\n xAxisRangeMax,\n yAxisRangeMin,\n yAxisRangeMax,\n reverseXAxis,\n bubbleRadiusMin,\n bubbleRadiusMax,\n onPointClick,\n hideMenu,\n } = props;\n\n const { title, description, tooltip, xAxisLabel, yAxisLabel } = resolveI18nProps(props);\n\n const noValueLabel = i18n.t('charts.scatterChart.noValue');\n\n const chartData = getBubbleChartProData(\n {\n data: results.data,\n xMeasure,\n yMeasure,\n sizeMeasure,\n pointDimension,\n groupByDimension,\n noValueLabel,\n pointColor,\n },\n theme,\n );\n\n const handleClick = createBubbleClickHandler({\n datasets: chartData.datasets,\n results,\n xMeasure,\n yMeasure,\n sizeMeasure,\n pointDimension,\n groupByDimension,\n onPointClick,\n });\n\n const chartOptions = mergician(\n getBubbleChartProOptions(\n {\n xMeasure,\n yMeasure,\n sizeMeasure,\n noValueLabel,\n bubbleRadiusMax,\n showPointLabels,\n },\n theme,\n ),\n theme.charts.bubbleChartPro?.options ?? {},\n );\n\n return (\n <ChartCard\n data={results}\n dimensionsAndMeasures={[\n pointDimension,\n xMeasure,\n yMeasure,\n sizeMeasure,\n ...(groupByDimension ? [groupByDimension] : []),\n ]}\n errorMessage={results.error}\n description={description}\n title={title}\n tooltip={tooltip}\n hideMenu={hideMenu}\n >\n <BubbleChart\n data={chartData}\n options={chartOptions}\n nullBandLabel={noValueLabel}\n showLegend={showLegend && !!groupByDimension}\n showTooltips={showTooltips}\n showPointLabels={showPointLabels}\n showValueLabels={showValueLabels}\n showLogarithmicScale={showLogarithmicScale}\n xAxisLabel={xAxisLabel}\n yAxisLabel={yAxisLabel}\n xAxisRangeMin={xAxisRangeMin}\n xAxisRangeMax={xAxisRangeMax}\n yAxisRangeMin={yAxisRangeMin}\n yAxisRangeMax={yAxisRangeMax}\n reverseXAxis={reverseXAxis}\n bubbleRadiusMin={bubbleRadiusMin}\n bubbleRadiusMax={bubbleRadiusMax}\n onClick={handleClick}\n />\n </ChartCard>\n );\n};\n\nexport default BubbleChartPro;\n","import { DataResponse, LoadDataRequest, Value, loadData } from '@embeddable.com/core';\nimport type { BubbleChartProOptionsClickArg } from './BubbleChartPro.types';\nimport { definePreview, EmbeddedComponentMeta, Inputs } from '@embeddable.com/react';\nimport Component from './index';\nimport { inputs } from '../../../component.inputs.constants';\nimport { subInputs } from '../../../component.subinputs.constants';\nimport { previewData } from '../../../preview.data.constants';\nimport { getClientContextTimezone } from '../../../../theme/utils/clientContext.utils';\nimport { ThemeClientContext } from '../../../../theme/theme.types';\n\nconst meta = {\n name: 'BubbleChartPro',\n label: 'Bubble Chart',\n category: 'Scatter Charts',\n inputs: [\n inputs.dataset,\n inputs.xMeasure,\n inputs.yMeasure,\n { ...inputs.measure, name: 'bubbleSizeMeasure', label: 'Bubble size measure' },\n { ...inputs.dimension, name: 'pointDimension', label: 'Point dimension' },\n {\n ...inputs.dimension,\n name: 'groupByDimension',\n label: 'Group by (optional)',\n required: false,\n },\n {\n ...subInputs.color,\n name: 'pointColor',\n label: 'Point color',\n category: 'Component Settings',\n },\n {\n ...inputs.number,\n name: 'bubbleRadiusMin',\n label: 'Bubble min radius (px)',\n defaultValue: 3,\n category: 'Component Settings',\n },\n {\n ...inputs.number,\n name: 'bubbleRadiusMax',\n label: 'Bubble max radius (px)',\n defaultValue: 20,\n category: 'Component Settings',\n },\n inputs.title,\n inputs.description,\n inputs.tooltip,\n inputs.showLegend,\n inputs.showTooltips,\n {\n ...inputs.boolean,\n name: 'showPointLabels',\n label: 'Show point labels',\n defaultValue: false,\n category: 'Component Settings',\n },\n inputs.showValueLabels,\n inputs.showLogarithmicScale,\n inputs.xAxisLabel,\n inputs.yAxisLabel,\n inputs.reverseXAxis,\n inputs.xAxisRangeMin,\n inputs.xAxisRangeMax,\n inputs.yAxisRangeMin,\n inputs.yAxisRangeMax,\n inputs.maxResults,\n ],\n events: [\n {\n name: 'onPointClick',\n label: 'A point is clicked',\n properties: [\n { name: 'xMeasureValue', label: 'Clicked X measure value', type: 'string' },\n { name: 'yMeasureValue', label: 'Clicked Y measure value', type: 'string' },\n { name: 'pointDimensionValue', label: 'Clicked point dimension value', type: 'string' },\n { name: 'groupByDimensionValue', label: 'Clicked group by value', type: 'string' },\n {\n name: 'pointDimensionTimeRange',\n label: 'Clicked point dimension time range',\n type: 'timeRange',\n },\n {\n name: 'groupByDimensionTimeRange',\n label: 'Clicked group by time range',\n type: 'timeRange',\n },\n { name: 'sizeMeasureValue', label: 'Clicked bubble size value', type: 'string' },\n ],\n },\n ],\n} as const satisfies EmbeddedComponentMeta;\n\nexport type BubbleChartProState = Record<string, never>;\n\nconst previewConfig = {\n dataset: previewData.dataset,\n xMeasure: previewData.measure,\n yMeasure: previewData.measureVariant,\n bubbleSizeMeasure: previewData.measure,\n pointDimension: previewData.dimension,\n results: previewData.results2Measures1Dimension,\n bubbleRadiusMin: 3,\n bubbleRadiusMax: 10,\n showLegend: true,\n hideMenu: true,\n};\n\nconst preview = definePreview(Component, previewConfig);\n\nconst loadDataResultsArgs = (\n inputs: Inputs<typeof meta>,\n clientContext?: ThemeClientContext,\n): LoadDataRequest => ({\n limit: inputs.maxResults,\n from: inputs.dataset,\n select: [\n inputs.xMeasure,\n inputs.yMeasure,\n inputs.bubbleSizeMeasure,\n inputs.pointDimension,\n ...(inputs.groupByDimension ? [inputs.groupByDimension] : []),\n ],\n timezone: getClientContextTimezone(clientContext?.timezone),\n});\n\nconst loadDataResults = (\n inputs: Inputs<typeof meta>,\n clientContext: ThemeClientContext,\n): DataResponse => loadData(loadDataResultsArgs(inputs, clientContext));\n\nconst events = {\n onPointClick: (value: BubbleChartProOptionsClickArg) => ({\n xMeasureValue: value.xMeasureValue ?? Value.noFilter(),\n yMeasureValue: value.yMeasureValue ?? Value.noFilter(),\n sizeMeasureValue: value.sizeMeasureValue ?? Value.noFilter(),\n pointDimensionValue: value.pointDimensionValue ?? Value.noFilter(),\n groupByDimensionValue: value.groupByDimensionValue ?? Value.noFilter(),\n }),\n};\n\nconst props = (\n inputs: Inputs<typeof meta>,\n [_state, _setState]: [BubbleChartProState, (state: BubbleChartProState) => void],\n clientContext: ThemeClientContext,\n) => ({\n ...inputs,\n pointColor: inputs.pointColor as string | undefined,\n results: loadDataResults(inputs, clientContext),\n});\n\nexport const bubbleChartPro = {\n Component,\n meta,\n preview,\n previewConfig,\n config: {\n props,\n events,\n },\n results: {\n loadDataArgs: loadDataResultsArgs,\n loadData: loadDataResults,\n },\n} as const;\n"],"names":["getBubbleChartProOptions","xMeasure","yMeasure","sizeMeasure","noValueLabel","bubbleRadiusMax","showPointLabels","theme","themeFormatter","getThemeFormatter","formatValue","measure","value","radiusMax","labelGap","getStyleNumber","labelLineHeight","getBubbleRadius","context","captionOffset","valueOffset","r","getScatterScales","ctx","orig","_a","_value","getBubblePointClickData","point","datasets","data","pointDimension","groupByDimension","rowIdx","_b","row","pointField","getDimensionFieldName","groupField","pointDimensionValue","rawValueToString","groupByDimensionValue","getTimeRangeFromDimensionValue","createBubbleClickHandler","results","onPointClick","elementAtEvent","element","clickData","getBubbleChartProData","props","chartColors","getChartColors","overrideColor","getColor","color","dimensionOrMeasure","index","getDimensionMeasureColor","buildPoint","rowIndex","rawPoint","pointLabel","measureToNullableNumber","i","groupDim","bucket","key","NULL_GROUP_KEY","points","b","firstRowIndex","groupValue","seriesLabel","colorKey","BubbleChartPro","useTheme","i18nSetup","pointColor","showLegend","showTooltips","showValueLabels","showLogarithmicScale","xAxisRangeMin","xAxisRangeMax","yAxisRangeMin","yAxisRangeMax","reverseXAxis","bubbleRadiusMin","hideMenu","title","description","tooltip","xAxisLabel","yAxisLabel","resolveI18nProps","i18n","chartData","handleClick","chartOptions","mergician","jsx","ChartCard","BubbleChart","meta","inputs","subInputs","previewConfig","previewData","preview","definePreview","Component","loadDataResultsArgs","clientContext","getClientContextTimezone","loadDataResults","loadData","events","Value","_state","_setState","bubbleChartPro"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"definition-DCCcpo3n.js","sources":["../src/components/charts/scatter/BubbleChartPro/BubbleChartPro.utils.ts","../src/components/charts/scatter/BubbleChartPro/index.tsx","../src/components/charts/scatter/BubbleChartPro/definition.ts"],"sourcesContent":["import { BubbleDataPoint, ChartData, type ChartOptions } from 'chart.js';\nimport { Context } from 'chartjs-plugin-datalabels';\nimport { DataResponse, Dimension, Measure } from '@embeddable.com/core';\nimport { getTimeRangeFromDimensionValue } from '../../../utils/dimension.utils';\nimport { Theme } from '../../../../theme/theme.types';\nimport { getThemeFormatter } from '../../../../theme/formatter/formatter.utils';\nimport { getChartColors, getStyleNumber } from '@embeddable.com/remarkable-ui';\nimport type { ChartClickArgs, BubbleDatasetExtended } from '@embeddable.com/remarkable-ui';\nimport { getDimensionMeasureColor } from '../../../../theme/styles/styles.utils';\nimport type { BubbleChartProOptionsClickArg, BubblePoint } from './BubbleChartPro.types';\nimport { getDimensionFieldName } from '../../../../utils/data.utils';\nimport {\n measureToNullableNumber,\n rawValueToString,\n NULL_GROUP_KEY,\n getScatterScales,\n type RawValue,\n} from '../scatter.utils';\n\nexport const getBubbleChartProOptions = (\n {\n xMeasure,\n yMeasure,\n sizeMeasure,\n noValueLabel,\n bubbleRadiusMax,\n showPointLabels,\n }: {\n xMeasure: Measure;\n yMeasure: Measure;\n sizeMeasure: Measure;\n noValueLabel: string;\n bubbleRadiusMax?: number;\n showPointLabels?: boolean;\n },\n theme: Theme,\n): Partial<ChartOptions<'bubble'>> => {\n const themeFormatter = getThemeFormatter(theme);\n\n const formatValue = (measure: Measure, value: number | null | undefined): string => {\n if (value === null || value === undefined) return noValueLabel;\n return themeFormatter.data(measure, value);\n };\n\n const radiusMax = bubbleRadiusMax ?? 20;\n const labelGap = getStyleNumber('--em-scatterchart-label-stack-gap', '0.25rem');\n const labelLineHeight = getStyleNumber('--em-scatterchart-label-stack-height', '1.25rem');\n\n const getBubbleRadius = (context: Context): number => {\n const ds = context.dataset as BubbleDatasetExtended;\n return ds.bubbleSizes[context.dataIndex] ?? radiusMax;\n };\n\n const captionOffset = (context: Context): number => getBubbleRadius(context) + labelGap;\n\n const valueOffset = (context: Context): number => {\n const r = getBubbleRadius(context);\n if (showPointLabels) return r + labelGap + labelLineHeight + labelGap;\n return r + labelGap;\n };\n\n return {\n scales: getScatterScales(xMeasure, yMeasure, (measure: Measure, value: number) =>\n themeFormatter.data(measure, value),\n ),\n plugins: {\n tooltip: {\n callbacks: {\n label: (ctx) => {\n const ds = ctx.dataset as BubbleDatasetExtended;\n const orig = ds.originalData?.[ctx.dataIndex];\n if (!orig) return '';\n return [\n `${themeFormatter.dimensionOrMeasureTitle(xMeasure)}: ${formatValue(xMeasure, orig.x)}`,\n `${themeFormatter.dimensionOrMeasureTitle(yMeasure)}: ${formatValue(yMeasure, orig.y)}`,\n `${themeFormatter.dimensionOrMeasureTitle(sizeMeasure)}: ${formatValue(sizeMeasure, orig.size)}`,\n ];\n },\n },\n },\n datalabels: {\n labels: {\n value: {\n formatter: (_value: BubbleDataPoint, context: Context) => {\n const ds = context.dataset as BubbleDatasetExtended;\n const orig = ds.originalData?.[context.dataIndex];\n if (!orig) return '';\n return formatValue(sizeMeasure, orig.size);\n },\n anchor: 'center',\n align: 'bottom',\n offset: valueOffset,\n },\n caption: {\n anchor: 'center',\n align: 'bottom',\n offset: captionOffset,\n },\n },\n },\n },\n };\n};\n\nexport const getBubblePointClickData = (\n point: { datasetIndex: number; index: number },\n datasets: ChartData<'bubble', BubblePoint[]>['datasets'],\n data: DataResponse['data'],\n xMeasure: Measure,\n yMeasure: Measure,\n sizeMeasure: Measure,\n pointDimension: Dimension,\n groupByDimension?: Dimension,\n): BubbleChartProOptionsClickArg | null => {\n const rowIdx = datasets[point.datasetIndex]?.data[point.index]?.rowIndex;\n if (rowIdx === undefined) return null;\n const row = data?.[rowIdx] as Record<string, RawValue> | undefined;\n if (!row) return null;\n\n const pointField = getDimensionFieldName(pointDimension);\n const groupField = groupByDimension ? getDimensionFieldName(groupByDimension) : undefined;\n\n const pointDimensionValue = rawValueToString(row[pointField]);\n const groupByDimensionValue = groupField ? rawValueToString(row[groupField]) : null;\n\n return {\n xMeasureValue: rawValueToString(row[xMeasure.name]),\n yMeasureValue: rawValueToString(row[yMeasure.name]),\n sizeMeasureValue: rawValueToString(row[sizeMeasure.name]),\n pointDimensionValue,\n groupByDimensionValue,\n pointDimensionTimeRange: getTimeRangeFromDimensionValue({\n value: pointDimensionValue,\n dimension: pointDimension,\n }),\n groupByDimensionTimeRange: getTimeRangeFromDimensionValue({\n value: groupByDimensionValue ?? undefined,\n dimension: groupByDimension,\n }),\n };\n};\n\nexport const createBubbleClickHandler = ({\n datasets,\n results,\n xMeasure,\n yMeasure,\n sizeMeasure,\n pointDimension,\n groupByDimension,\n onPointClick,\n}: {\n datasets: ChartData<'bubble', BubblePoint[]>['datasets'];\n results: DataResponse;\n xMeasure: Measure;\n yMeasure: Measure;\n sizeMeasure: Measure;\n pointDimension: Dimension;\n groupByDimension?: Dimension;\n onPointClick?: (payload: BubbleChartProOptionsClickArg) => void;\n}): ((args: ChartClickArgs) => void) => {\n return ({ elementAtEvent }) => {\n const element = elementAtEvent[0];\n if (!element) return;\n const clickData = getBubblePointClickData(\n element,\n datasets,\n results.data,\n xMeasure,\n yMeasure,\n sizeMeasure,\n pointDimension,\n groupByDimension,\n );\n if (clickData) onPointClick?.(clickData);\n };\n};\n\nexport const getBubbleChartProData = (\n props: {\n data: DataResponse['data'];\n xMeasure: Measure;\n yMeasure: Measure;\n sizeMeasure: Measure;\n pointDimension: Dimension;\n groupByDimension?: Dimension | null;\n noValueLabel: string;\n pointColor?: string;\n },\n theme: Theme,\n): ChartData<'bubble', BubblePoint[]> => {\n const themeFormatter = getThemeFormatter(theme);\n const chartColors = getChartColors();\n const data = (props.data ?? []) as Record<string, unknown>[];\n const pointField = getDimensionFieldName(props.pointDimension);\n const overrideColor = props.groupByDimension ? undefined : props.pointColor?.trim() || undefined;\n\n if (!data.length) {\n return { datasets: [{ label: '', data: [] }] };\n }\n\n const getColor = (\n color: 'background' | 'border',\n dimensionOrMeasure: Dimension | Measure,\n value: string,\n index: number,\n ) =>\n overrideColor ??\n getDimensionMeasureColor({ dimensionOrMeasure, theme, color, value, index, chartColors });\n\n const buildPoint = (row: Record<string, unknown>, rowIndex: number): BubblePoint => {\n const rawPoint = row[pointField];\n const pointLabel =\n rawPoint == null\n ? props.noValueLabel\n : String(themeFormatter.data(props.pointDimension, rawPoint as string | number | boolean));\n return {\n x: measureToNullableNumber(row[props.xMeasure.name]),\n y: measureToNullableNumber(row[props.yMeasure.name]),\n size: measureToNullableNumber(row[props.sizeMeasure.name]),\n pointLabel,\n label: pointLabel,\n rowIndex,\n };\n };\n\n if (!props.groupByDimension) {\n return {\n datasets: [\n {\n label: themeFormatter.dimensionOrMeasureTitle(props.yMeasure),\n data: data.map((row, i) => buildPoint(row, i)),\n backgroundColor: getColor('background', props.xMeasure, props.xMeasure.name, 0),\n borderColor: getColor('border', props.xMeasure, props.xMeasure.name, 0),\n },\n ],\n };\n }\n\n const groupDim = props.groupByDimension;\n const groupField = getDimensionFieldName(groupDim);\n const bucket = new Map<string, BubblePoint[]>();\n\n data.forEach((row, rowIndex) => {\n const key = row[groupField] == null ? NULL_GROUP_KEY : String(row[groupField]);\n const points = bucket.get(key) ?? [];\n points.push(buildPoint(row, rowIndex));\n bucket.set(key, points);\n });\n\n const sortedKeys = [...bucket.keys()].sort((a, b) => {\n if (a === NULL_GROUP_KEY) return 1;\n if (b === NULL_GROUP_KEY) return -1;\n return a.localeCompare(b);\n });\n\n const datasets = sortedKeys.map((key, index) => {\n const points = bucket.get(key)!;\n const firstRowIndex = points[0]!.rowIndex;\n const groupValue = key === NULL_GROUP_KEY ? null : data[firstRowIndex]?.[groupField];\n const seriesLabel =\n key === NULL_GROUP_KEY\n ? props.noValueLabel\n : themeFormatter.data(groupDim, groupValue as string | number | boolean);\n const colorKey = key === NULL_GROUP_KEY ? `${groupDim.name}.null` : `${groupDim.name}.${key}`;\n\n return {\n label: seriesLabel,\n data: points,\n backgroundColor: getColor('background', groupDim, colorKey, index),\n borderColor: getColor('border', groupDim, colorKey, index),\n };\n });\n\n return { datasets };\n};\n","import { useTheme } from '@embeddable.com/react';\nimport { BubbleChart } from '@embeddable.com/remarkable-ui';\nimport { mergician } from 'mergician';\nimport { DataResponse, Dimension, Measure } from '@embeddable.com/core';\nimport { Theme } from '../../../../theme/theme.types';\nimport { i18nSetup, i18n } from '../../../../theme/i18n/i18n';\nimport { resolveI18nProps } from '../../../component.utils';\nimport { ChartCard, ChartCardHeaderProps } from '../../shared/ChartCard/ChartCard';\nimport {\n createBubbleClickHandler,\n getBubbleChartProData,\n getBubbleChartProOptions,\n} from './BubbleChartPro.utils';\n\nimport type { BubbleChartProOptionsClickArg } from './BubbleChartPro.types';\n\nexport type BubbleChartProProps = {\n xMeasure: Measure;\n yMeasure: Measure;\n bubbleSizeMeasure: Measure;\n pointDimension: Dimension;\n groupByDimension?: Dimension;\n results: DataResponse;\n pointColor?: string;\n showLegend?: boolean;\n showTooltips?: boolean;\n showPointLabels?: boolean;\n showValueLabels?: boolean;\n showLogarithmicScale?: boolean;\n xAxisLabel?: string;\n yAxisLabel?: string;\n xAxisRangeMin?: number;\n xAxisRangeMax?: number;\n yAxisRangeMin?: number;\n yAxisRangeMax?: number;\n reverseXAxis?: boolean;\n bubbleRadiusMin?: number;\n bubbleRadiusMax?: number;\n onPointClick?: (payload: BubbleChartProOptionsClickArg) => void;\n} & ChartCardHeaderProps;\n\nconst BubbleChartPro = (props: BubbleChartProProps) => {\n const theme = useTheme() as Theme;\n i18nSetup(theme);\n\n const {\n xMeasure,\n yMeasure,\n bubbleSizeMeasure: sizeMeasure,\n pointDimension,\n groupByDimension,\n results,\n pointColor,\n showLegend,\n showTooltips,\n showPointLabels,\n showValueLabels,\n showLogarithmicScale,\n xAxisRangeMin,\n xAxisRangeMax,\n yAxisRangeMin,\n yAxisRangeMax,\n reverseXAxis,\n bubbleRadiusMin,\n bubbleRadiusMax,\n onPointClick,\n hideMenu,\n } = props;\n\n const { title, description, tooltip, xAxisLabel, yAxisLabel } = resolveI18nProps(props);\n\n const noValueLabel = i18n.t('charts.scatterChart.noValue');\n\n const chartData = getBubbleChartProData(\n {\n data: results.data,\n xMeasure,\n yMeasure,\n sizeMeasure,\n pointDimension,\n groupByDimension,\n noValueLabel,\n pointColor,\n },\n theme,\n );\n\n const handleClick = createBubbleClickHandler({\n datasets: chartData.datasets,\n results,\n xMeasure,\n yMeasure,\n sizeMeasure,\n pointDimension,\n groupByDimension,\n onPointClick,\n });\n\n const chartOptions = mergician(\n getBubbleChartProOptions(\n {\n xMeasure,\n yMeasure,\n sizeMeasure,\n noValueLabel,\n bubbleRadiusMax,\n showPointLabels,\n },\n theme,\n ),\n theme.charts.bubbleChartPro?.options ?? {},\n );\n\n return (\n <ChartCard\n data={results}\n dimensionsAndMeasures={[\n pointDimension,\n xMeasure,\n yMeasure,\n sizeMeasure,\n ...(groupByDimension ? [groupByDimension] : []),\n ]}\n errorMessage={results.error}\n description={description}\n title={title}\n tooltip={tooltip}\n hideMenu={hideMenu}\n >\n <BubbleChart\n data={chartData}\n options={chartOptions}\n nullBandLabel={noValueLabel}\n showLegend={showLegend && !!groupByDimension}\n showTooltips={showTooltips}\n showPointLabels={showPointLabels}\n showValueLabels={showValueLabels}\n showLogarithmicScale={showLogarithmicScale}\n xAxisLabel={xAxisLabel}\n yAxisLabel={yAxisLabel}\n xAxisRangeMin={xAxisRangeMin}\n xAxisRangeMax={xAxisRangeMax}\n yAxisRangeMin={yAxisRangeMin}\n yAxisRangeMax={yAxisRangeMax}\n reverseXAxis={reverseXAxis}\n bubbleRadiusMin={bubbleRadiusMin}\n bubbleRadiusMax={bubbleRadiusMax}\n onClick={handleClick}\n />\n </ChartCard>\n );\n};\n\nexport default BubbleChartPro;\n","import { DataResponse, LoadDataRequest, Value, loadData } from '@embeddable.com/core';\nimport type { BubbleChartProOptionsClickArg } from './BubbleChartPro.types';\nimport { definePreview, EmbeddedComponentMeta, Inputs } from '@embeddable.com/react';\nimport Component from './index';\nimport { inputs } from '../../../component.inputs.constants';\nimport { subInputs } from '../../../component.subinputs.constants';\nimport { previewData } from '../../../preview.data.constants';\nimport { getClientContextTimezone } from '../../../../theme/utils/clientContext.utils';\nimport { ThemeClientContext } from '../../../../theme/theme.types';\n\nconst meta = {\n name: 'BubbleChartPro',\n label: 'Bubble Chart',\n category: 'Scatter Charts',\n inputs: [\n inputs.dataset,\n inputs.xMeasure,\n inputs.yMeasure,\n { ...inputs.measure, name: 'bubbleSizeMeasure', label: 'Bubble size measure' },\n { ...inputs.dimension, name: 'pointDimension', label: 'Point dimension' },\n {\n ...inputs.dimension,\n name: 'groupByDimension',\n label: 'Group by (optional)',\n required: false,\n },\n {\n ...subInputs.color,\n name: 'pointColor',\n label: 'Point color',\n category: 'Component Settings',\n },\n {\n ...inputs.number,\n name: 'bubbleRadiusMin',\n label: 'Bubble min radius (px)',\n defaultValue: 3,\n category: 'Component Settings',\n },\n {\n ...inputs.number,\n name: 'bubbleRadiusMax',\n label: 'Bubble max radius (px)',\n defaultValue: 20,\n category: 'Component Settings',\n },\n inputs.title,\n inputs.description,\n inputs.tooltip,\n inputs.showLegend,\n inputs.showTooltips,\n {\n ...inputs.boolean,\n name: 'showPointLabels',\n label: 'Show point labels',\n defaultValue: false,\n category: 'Component Settings',\n },\n inputs.showValueLabels,\n inputs.showLogarithmicScale,\n inputs.xAxisLabel,\n inputs.yAxisLabel,\n inputs.reverseXAxis,\n inputs.xAxisRangeMin,\n inputs.xAxisRangeMax,\n inputs.yAxisRangeMin,\n inputs.yAxisRangeMax,\n inputs.maxResults,\n ],\n events: [\n {\n name: 'onPointClick',\n label: 'A point is clicked',\n properties: [\n { name: 'xMeasureValue', label: 'Clicked X measure value', type: 'string' },\n { name: 'yMeasureValue', label: 'Clicked Y measure value', type: 'string' },\n { name: 'pointDimensionValue', label: 'Clicked point dimension value', type: 'string' },\n { name: 'groupByDimensionValue', label: 'Clicked group by value', type: 'string' },\n {\n name: 'pointDimensionTimeRange',\n label: 'Clicked point dimension time range',\n type: 'timeRange',\n },\n {\n name: 'groupByDimensionTimeRange',\n label: 'Clicked group by time range',\n type: 'timeRange',\n },\n { name: 'sizeMeasureValue', label: 'Clicked bubble size value', type: 'string' },\n ],\n },\n ],\n} as const satisfies EmbeddedComponentMeta;\n\nexport type BubbleChartProState = Record<string, never>;\n\nconst previewConfig = {\n dataset: previewData.dataset,\n xMeasure: previewData.measure,\n yMeasure: previewData.measureVariant,\n bubbleSizeMeasure: previewData.measure,\n pointDimension: previewData.dimension,\n results: previewData.results2Measures1Dimension,\n bubbleRadiusMin: 3,\n bubbleRadiusMax: 10,\n showLegend: true,\n hideMenu: true,\n};\n\nconst preview = definePreview(Component, previewConfig);\n\nconst loadDataResultsArgs = (\n inputs: Inputs<typeof meta>,\n clientContext?: ThemeClientContext,\n): LoadDataRequest => ({\n limit: inputs.maxResults,\n from: inputs.dataset,\n select: [\n inputs.xMeasure,\n inputs.yMeasure,\n inputs.bubbleSizeMeasure,\n inputs.pointDimension,\n ...(inputs.groupByDimension ? [inputs.groupByDimension] : []),\n ],\n timezone: getClientContextTimezone(clientContext?.timezone),\n});\n\nconst loadDataResults = (\n inputs: Inputs<typeof meta>,\n clientContext: ThemeClientContext,\n): DataResponse => loadData(loadDataResultsArgs(inputs, clientContext));\n\nconst events = {\n onPointClick: (value: BubbleChartProOptionsClickArg) => ({\n xMeasureValue: value.xMeasureValue ?? Value.noFilter(),\n yMeasureValue: value.yMeasureValue ?? Value.noFilter(),\n sizeMeasureValue: value.sizeMeasureValue ?? Value.noFilter(),\n pointDimensionValue: value.pointDimensionValue ?? Value.noFilter(),\n groupByDimensionValue: value.groupByDimensionValue ?? Value.noFilter(),\n }),\n};\n\nconst props = (\n inputs: Inputs<typeof meta>,\n [_state, _setState]: [BubbleChartProState, (state: BubbleChartProState) => void],\n clientContext: ThemeClientContext,\n) => ({\n ...inputs,\n pointColor: inputs.pointColor as string | undefined,\n results: loadDataResults(inputs, clientContext),\n});\n\nexport const bubbleChartPro = {\n Component,\n meta,\n preview,\n previewConfig,\n config: {\n props,\n events,\n },\n results: {\n loadDataArgs: loadDataResultsArgs,\n loadData: loadDataResults,\n },\n} as const;\n"],"names":["getBubbleChartProOptions","xMeasure","yMeasure","sizeMeasure","noValueLabel","bubbleRadiusMax","showPointLabels","theme","themeFormatter","getThemeFormatter","formatValue","measure","value","radiusMax","labelGap","getStyleNumber","labelLineHeight","getBubbleRadius","context","captionOffset","valueOffset","r","getScatterScales","ctx","orig","_a","_value","getBubblePointClickData","point","datasets","data","pointDimension","groupByDimension","rowIdx","_b","row","pointField","getDimensionFieldName","groupField","pointDimensionValue","rawValueToString","groupByDimensionValue","getTimeRangeFromDimensionValue","createBubbleClickHandler","results","onPointClick","elementAtEvent","element","clickData","getBubbleChartProData","props","chartColors","getChartColors","overrideColor","getColor","color","dimensionOrMeasure","index","getDimensionMeasureColor","buildPoint","rowIndex","rawPoint","pointLabel","measureToNullableNumber","i","groupDim","bucket","key","NULL_GROUP_KEY","points","b","firstRowIndex","groupValue","seriesLabel","colorKey","BubbleChartPro","useTheme","i18nSetup","pointColor","showLegend","showTooltips","showValueLabels","showLogarithmicScale","xAxisRangeMin","xAxisRangeMax","yAxisRangeMin","yAxisRangeMax","reverseXAxis","bubbleRadiusMin","hideMenu","title","description","tooltip","xAxisLabel","yAxisLabel","resolveI18nProps","i18n","chartData","handleClick","chartOptions","mergician","jsx","ChartCard","BubbleChart","meta","inputs","subInputs","previewConfig","previewData","preview","definePreview","Component","loadDataResultsArgs","clientContext","getClientContextTimezone","loadDataResults","loadData","events","Value","_state","_setState","bubbleChartPro"],"mappings":";;;;;;;;;;;AAmBO,MAAMA,KAA2B,CACtC;AAAA,EACE,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,aAAAC;AAAA,EACA,cAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,iBAAAC;AACF,GAQAC,MACoC;AACpC,QAAMC,IAAiBC,EAAkBF,CAAK,GAExCG,IAAc,CAACC,GAAkBC,MACjCA,KAAU,OAAoCR,IAC3CI,EAAe,KAAKG,GAASC,CAAK,GAGrCC,IAAYR,KAAmB,IAC/BS,IAAWC,EAAe,qCAAqC,SAAS,GACxEC,IAAkBD,EAAe,wCAAwC,SAAS,GAElFE,IAAkB,CAACC,MACZA,EAAQ,QACT,YAAYA,EAAQ,SAAS,KAAKL,GAGxCM,IAAgB,CAACD,MAA6BD,EAAgBC,CAAO,IAAIJ,GAEzEM,IAAc,CAACF,MAA6B;AAChD,UAAMG,IAAIJ,EAAgBC,CAAO;AACjC,WAAIZ,IAAwBe,IAAIP,IAAWE,IAAkBF,IACtDO,IAAIP;AAAA,EACb;AAEA,SAAO;AAAA,IACL,QAAQQ;AAAA,MAAiBrB;AAAA,MAAUC;AAAA,MAAU,CAACS,GAAkBC,MAC9DJ,EAAe,KAAKG,GAASC,CAAK;AAAA,IAAA;AAAA,IAEpC,SAAS;AAAA,MACP,SAAS;AAAA,QACP,WAAW;AAAA,UACT,OAAO,CAACW,MAAQ;;AAEd,kBAAMC,KAAOC,IADFF,EAAI,QACC,iBAAH,gBAAAE,EAAkBF,EAAI;AACnC,mBAAKC,IACE;AAAA,cACL,GAAGhB,EAAe,wBAAwBP,CAAQ,CAAC,KAAKS,EAAYT,GAAUuB,EAAK,CAAC,CAAC;AAAA,cACrF,GAAGhB,EAAe,wBAAwBN,CAAQ,CAAC,KAAKQ,EAAYR,GAAUsB,EAAK,CAAC,CAAC;AAAA,cACrF,GAAGhB,EAAe,wBAAwBL,CAAW,CAAC,KAAKO,EAAYP,GAAaqB,EAAK,IAAI,CAAC;AAAA,YAAA,IAJ9E;AAAA,UAMpB;AAAA,QAAA;AAAA,MACF;AAAA,MAEF,YAAY;AAAA,QACV,QAAQ;AAAA,UACN,OAAO;AAAA,YACL,WAAW,CAACE,GAAyBR,MAAqB;;AAExD,oBAAMM,KAAOC,IADFP,EAAQ,QACH,iBAAH,gBAAAO,EAAkBP,EAAQ;AACvC,qBAAKM,IACEd,EAAYP,GAAaqB,EAAK,IAAI,IADvB;AAAA,YAEpB;AAAA,YACA,QAAQ;AAAA,YACR,OAAO;AAAA,YACP,QAAQJ;AAAA,UAAA;AAAA,UAEV,SAAS;AAAA,YACP,QAAQ;AAAA,YACR,OAAO;AAAA,YACP,QAAQD;AAAA,UAAA;AAAA,QACV;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEJ,GAEaQ,KAA0B,CACrCC,GACAC,GACAC,GACA7B,GACAC,GACAC,GACA4B,GACAC,MACyC;;AACzC,QAAMC,KAASC,KAAAT,IAAAI,EAASD,EAAM,YAAY,MAA3B,gBAAAH,EAA8B,KAAKG,EAAM,WAAzC,gBAAAM,EAAiD;AAChE,MAAID,MAAW,OAAW,QAAO;AACjC,QAAME,IAAML,KAAA,gBAAAA,EAAOG;AACnB,MAAI,CAACE,EAAK,QAAO;AAEjB,QAAMC,IAAaC,EAAsBN,CAAc,GACjDO,IAAaN,IAAmBK,EAAsBL,CAAgB,IAAI,QAE1EO,IAAsBC,EAAiBL,EAAIC,CAAU,CAAC,GACtDK,IAAwBH,IAAaE,EAAiBL,EAAIG,CAAU,CAAC,IAAI;AAE/E,SAAO;AAAA,IACL,eAAeE,EAAiBL,EAAIlC,EAAS,IAAI,CAAC;AAAA,IAClD,eAAeuC,EAAiBL,EAAIjC,EAAS,IAAI,CAAC;AAAA,IAClD,kBAAkBsC,EAAiBL,EAAIhC,EAAY,IAAI,CAAC;AAAA,IACxD,qBAAAoC;AAAA,IACA,uBAAAE;AAAA,IACA,yBAAyBC,EAA+B;AAAA,MACtD,OAAOH;AAAA,MACP,WAAWR;AAAA,IAAA,CACZ;AAAA,IACD,2BAA2BW,EAA+B;AAAA,MACxD,OAAOD,KAAyB;AAAA,MAChC,WAAWT;AAAA,IAAA,CACZ;AAAA,EAAA;AAEL,GAEaW,KAA2B,CAAC;AAAA,EACvC,UAAAd;AAAA,EACA,SAAAe;AAAA,EACA,UAAA3C;AAAA,EACA,UAAAC;AAAA,EACA,aAAAC;AAAA,EACA,gBAAA4B;AAAA,EACA,kBAAAC;AAAA,EACA,cAAAa;AACF,MAUS,CAAC,EAAE,gBAAAC,QAAqB;AAC7B,QAAMC,IAAUD,EAAe,CAAC;AAChC,MAAI,CAACC,EAAS;AACd,QAAMC,IAAYrB;AAAA,IAChBoB;AAAA,IACAlB;AAAA,IACAe,EAAQ;AAAA,IACR3C;AAAA,IACAC;AAAA,IACAC;AAAA,IACA4B;AAAA,IACAC;AAAA,EAAA;AAEF,EAAIgB,qBAA0BA;AAChC,GAGWC,KAAwB,CACnCC,GAUA3C,MACuC;;AACvC,QAAMC,IAAiBC,EAAkBF,CAAK,GACxC4C,IAAcC,EAAA,GACdtB,IAAQoB,EAAM,QAAQ,CAAA,GACtBd,IAAaC,EAAsBa,EAAM,cAAc,GACvDG,IAAgBH,EAAM,mBAAmB,WAAYzB,IAAAyB,EAAM,eAAN,gBAAAzB,EAAkB,WAAU;AAEvF,MAAI,CAACK,EAAK;AACR,WAAO,EAAE,UAAU,CAAC,EAAE,OAAO,IAAI,MAAM,CAAA,EAAC,CAAG,EAAA;AAG7C,QAAMwB,IAAW,CACfC,GACAC,GACA5C,GACA6C,MAEAJ,KACAK,GAAyB,EAAE,oBAAAF,GAAoB,OAAAjD,GAAO,OAAAgD,GAAO,OAAA3C,GAAO,OAAA6C,GAAO,aAAAN,GAAa,GAEpFQ,IAAa,CAACxB,GAA8ByB,MAAkC;AAClF,UAAMC,IAAW1B,EAAIC,CAAU,GACzB0B,IACJD,KAAY,OACRX,EAAM,eACN,OAAO1C,EAAe,KAAK0C,EAAM,gBAAgBW,CAAqC,CAAC;AAC7F,WAAO;AAAA,MACL,GAAGE,EAAwB5B,EAAIe,EAAM,SAAS,IAAI,CAAC;AAAA,MACnD,GAAGa,EAAwB5B,EAAIe,EAAM,SAAS,IAAI,CAAC;AAAA,MACnD,MAAMa,EAAwB5B,EAAIe,EAAM,YAAY,IAAI,CAAC;AAAA,MACzD,YAAAY;AAAA,MACA,OAAOA;AAAA,MACP,UAAAF;AAAA,IAAA;AAAA,EAEJ;AAEA,MAAI,CAACV,EAAM;AACT,WAAO;AAAA,MACL,UAAU;AAAA,QACR;AAAA,UACE,OAAO1C,EAAe,wBAAwB0C,EAAM,QAAQ;AAAA,UAC5D,MAAMpB,EAAK,IAAI,CAACK,GAAK6B,MAAML,EAAWxB,GAAK6B,CAAC,CAAC;AAAA,UAC7C,iBAAiBV,EAAS,cAAcJ,EAAM,UAAUA,EAAM,SAAS,MAAM,CAAC;AAAA,UAC9E,aAAaI,EAAS,UAAUJ,EAAM,UAAUA,EAAM,SAAS,MAAM,CAAC;AAAA,QAAA;AAAA,MACxE;AAAA,IACF;AAIJ,QAAMe,IAAWf,EAAM,kBACjBZ,IAAaD,EAAsB4B,CAAQ,GAC3CC,wBAAa,IAAA;AAEnB,SAAApC,EAAK,QAAQ,CAACK,GAAKyB,MAAa;AAC9B,UAAMO,IAAMhC,EAAIG,CAAU,KAAK,OAAO8B,IAAiB,OAAOjC,EAAIG,CAAU,CAAC,GACvE+B,IAASH,EAAO,IAAIC,CAAG,KAAK,CAAA;AAClC,IAAAE,EAAO,KAAKV,EAAWxB,GAAKyB,CAAQ,CAAC,GACrCM,EAAO,IAAIC,GAAKE,CAAM;AAAA,EACxB,CAAC,GA0BM,EAAE,UAxBU,CAAC,GAAGH,EAAO,KAAA,CAAM,EAAE,KAAK,CAAC,GAAGI,MACzC,MAAMF,IAAuB,IAC7BE,MAAMF,IAAuB,KAC1B,EAAE,cAAcE,CAAC,CACzB,EAE2B,IAAI,CAACH,GAAKV,MAAU;;AAC9C,UAAMY,IAASH,EAAO,IAAIC,CAAG,GACvBI,IAAgBF,EAAO,CAAC,EAAG,UAC3BG,IAAaL,MAAQC,IAAiB,QAAO3C,IAAAK,EAAKyC,CAAa,MAAlB,gBAAA9C,EAAsBa,IACnEmC,IACJN,MAAQC,IACJlB,EAAM,eACN1C,EAAe,KAAKyD,GAAUO,CAAuC,GACrEE,IAAWP,MAAQC,IAAiB,GAAGH,EAAS,IAAI,UAAU,GAAGA,EAAS,IAAI,IAAIE,CAAG;AAE3F,WAAO;AAAA,MACL,OAAOM;AAAA,MACP,MAAMJ;AAAA,MACN,iBAAiBf,EAAS,cAAcW,GAAUS,GAAUjB,CAAK;AAAA,MACjE,aAAaH,EAAS,UAAUW,GAAUS,GAAUjB,CAAK;AAAA,IAAA;AAAA,EAE7D,CAAC,EAEQ;AACX,GC1OMkB,IAAiB,CAACzB,MAA+B;;AACrD,QAAM3C,IAAQqE,EAAA;AACd,EAAAC,GAAUtE,CAAK;AAEf,QAAM;AAAA,IACJ,UAAAN;AAAA,IACA,UAAAC;AAAA,IACA,mBAAmBC;AAAA,IACnB,gBAAA4B;AAAA,IACA,kBAAAC;AAAA,IACA,SAAAY;AAAA,IACA,YAAAkC;AAAA,IACA,YAAAC;AAAA,IACA,cAAAC;AAAA,IACA,iBAAA1E;AAAA,IACA,iBAAA2E;AAAA,IACA,sBAAAC;AAAA,IACA,eAAAC;AAAA,IACA,eAAAC;AAAA,IACA,eAAAC;AAAA,IACA,eAAAC;AAAA,IACA,cAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,iBAAAnF;AAAA,IACA,cAAAwC;AAAA,IACA,UAAA4C;AAAA,EAAA,IACEvC,GAEE,EAAE,OAAAwC,GAAO,aAAAC,GAAa,SAAAC,GAAS,YAAAC,GAAY,YAAAC,EAAA,IAAeC,GAAiB7C,CAAK,GAEhF9C,IAAe4F,GAAK,EAAE,6BAA6B,GAEnDC,IAAYhD;AAAA,IAChB;AAAA,MACE,MAAML,EAAQ;AAAA,MACd,UAAA3C;AAAA,MACA,UAAAC;AAAA,MACA,aAAAC;AAAA,MACA,gBAAA4B;AAAA,MACA,kBAAAC;AAAA,MACA,cAAA5B;AAAA,MACA,YAAA0E;AAAA,IAAA;AAAA,IAEFvE;AAAA,EAAA,GAGI2F,IAAcvD,GAAyB;AAAA,IAC3C,UAAUsD,EAAU;AAAA,IACpB,SAAArD;AAAA,IACA,UAAA3C;AAAA,IACA,UAAAC;AAAA,IACA,aAAAC;AAAA,IACA,gBAAA4B;AAAA,IACA,kBAAAC;AAAA,IACA,cAAAa;AAAA,EAAA,CACD,GAEKsD,IAAeC;AAAA,IACnBpG;AAAA,MACE;AAAA,QACE,UAAAC;AAAA,QACA,UAAAC;AAAA,QACA,aAAAC;AAAA,QACA,cAAAC;AAAA,QACA,iBAAAC;AAAA,QACA,iBAAAC;AAAA,MAAA;AAAA,MAEFC;AAAA,IAAA;AAAA,MAEFkB,IAAAlB,EAAM,OAAO,mBAAb,gBAAAkB,EAA6B,YAAW,CAAA;AAAA,EAAC;AAG3C,SACE4E,gBAAAA,EAAAA;AAAAA,IAACC;AAAA,IAAA;AAAA,MACC,MAAM1D;AAAA,MACN,uBAAuB;AAAA,QACrBb;AAAA,QACA9B;AAAA,QACAC;AAAA,QACAC;AAAA,QACA,GAAI6B,IAAmB,CAACA,CAAgB,IAAI,CAAA;AAAA,MAAC;AAAA,MAE/C,cAAcY,EAAQ;AAAA,MACtB,aAAA+C;AAAA,MACA,OAAAD;AAAA,MACA,SAAAE;AAAA,MACA,UAAAH;AAAA,MAEA,UAAAY,gBAAAA,EAAAA;AAAAA,QAACE;AAAA,QAAA;AAAA,UACC,MAAMN;AAAA,UACN,SAASE;AAAA,UACT,eAAe/F;AAAA,UACf,YAAY2E,KAAc,CAAC,CAAC/C;AAAA,UAC5B,cAAAgD;AAAA,UACA,iBAAA1E;AAAA,UACA,iBAAA2E;AAAA,UACA,sBAAAC;AAAA,UACA,YAAAW;AAAA,UACA,YAAAC;AAAA,UACA,eAAAX;AAAA,UACA,eAAAC;AAAA,UACA,eAAAC;AAAA,UACA,eAAAC;AAAA,UACA,cAAAC;AAAA,UACA,iBAAAC;AAAA,UACA,iBAAAnF;AAAA,UACA,SAAS6F;AAAA,QAAA;AAAA,MAAA;AAAA,IACX;AAAA,EAAA;AAGN;;;8CC7IMM,KAAO;AAAA,EACX,MAAM;AAAA,EACN,OAAO;AAAA,EACP,UAAU;AAAA,EACV,QAAQ;AAAA,IACNC,EAAO;AAAA,IACPA,EAAO;AAAA,IACPA,EAAO;AAAA,IACP,EAAE,GAAGA,EAAO,SAAS,MAAM,qBAAqB,OAAO,sBAAA;AAAA,IACvD,EAAE,GAAGA,EAAO,WAAW,MAAM,kBAAkB,OAAO,kBAAA;AAAA,IACtD;AAAA,MACE,GAAGA,EAAO;AAAA,MACV,MAAM;AAAA,MACN,OAAO;AAAA,MACP,UAAU;AAAA,IAAA;AAAA,IAEZ;AAAA,MACE,GAAGC,GAAU;AAAA,MACb,MAAM;AAAA,MACN,OAAO;AAAA,MACP,UAAU;AAAA,IAAA;AAAA,IAEZ;AAAA,MACE,GAAGD,EAAO;AAAA,MACV,MAAM;AAAA,MACN,OAAO;AAAA,MACP,cAAc;AAAA,MACd,UAAU;AAAA,IAAA;AAAA,IAEZ;AAAA,MACE,GAAGA,EAAO;AAAA,MACV,MAAM;AAAA,MACN,OAAO;AAAA,MACP,cAAc;AAAA,MACd,UAAU;AAAA,IAAA;AAAA,IAEZA,EAAO;AAAA,IACPA,EAAO;AAAA,IACPA,EAAO;AAAA,IACPA,EAAO;AAAA,IACPA,EAAO;AAAA,IACP;AAAA,MACE,GAAGA,EAAO;AAAA,MACV,MAAM;AAAA,MACN,OAAO;AAAA,MACP,cAAc;AAAA,MACd,UAAU;AAAA,IAAA;AAAA,IAEZA,EAAO;AAAA,IACPA,EAAO;AAAA,IACPA,EAAO;AAAA,IACPA,EAAO;AAAA,IACPA,EAAO;AAAA,IACPA,EAAO;AAAA,IACPA,EAAO;AAAA,IACPA,EAAO;AAAA,IACPA,EAAO;AAAA,IACPA,EAAO;AAAA,EAAA;AAAA,EAET,QAAQ;AAAA,IACN;AAAA,MACE,MAAM;AAAA,MACN,OAAO;AAAA,MACP,YAAY;AAAA,QACV,EAAE,MAAM,iBAAiB,OAAO,2BAA2B,MAAM,SAAA;AAAA,QACjE,EAAE,MAAM,iBAAiB,OAAO,2BAA2B,MAAM,SAAA;AAAA,QACjE,EAAE,MAAM,uBAAuB,OAAO,iCAAiC,MAAM,SAAA;AAAA,QAC7E,EAAE,MAAM,yBAAyB,OAAO,0BAA0B,MAAM,SAAA;AAAA,QACxE;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,UACP,MAAM;AAAA,QAAA;AAAA,QAER;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,UACP,MAAM;AAAA,QAAA;AAAA,QAER,EAAE,MAAM,oBAAoB,OAAO,6BAA6B,MAAM,SAAA;AAAA,MAAS;AAAA,IACjF;AAAA,EACF;AAEJ,GAIME,IAAgB;AAAA,EACpB,SAASC,EAAY;AAAA,EACrB,UAAUA,EAAY;AAAA,EACtB,UAAUA,EAAY;AAAA,EACtB,mBAAmBA,EAAY;AAAA,EAC/B,gBAAgBA,EAAY;AAAA,EAC5B,SAASA,EAAY;AAAA,EACrB,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,YAAY;AAAA,EACZ,UAAU;AACZ,GAEMC,KAAUC,EAAcC,GAAWJ,CAAa,GAEhDK,IAAsB,CAC1BP,GACAQ,OACqB;AAAA,EACrB,OAAOR,EAAO;AAAA,EACd,MAAMA,EAAO;AAAA,EACb,QAAQ;AAAA,IACNA,EAAO;AAAA,IACPA,EAAO;AAAA,IACPA,EAAO;AAAA,IACPA,EAAO;AAAA,IACP,GAAIA,EAAO,mBAAmB,CAACA,EAAO,gBAAgB,IAAI,CAAA;AAAA,EAAC;AAAA,EAE7D,UAAUS,GAAyBD,KAAA,gBAAAA,EAAe,QAAQ;AAC5D,IAEME,IAAkB,CACtBV,GACAQ,MACiBG,EAASJ,EAAoBP,GAAQQ,CAAa,CAAC,GAEhEI,KAAS;AAAA,EACb,cAAc,CAACzG,OAA0C;AAAA,IACvD,eAAeA,EAAM,iBAAiB0G,EAAM,SAAA;AAAA,IAC5C,eAAe1G,EAAM,iBAAiB0G,EAAM,SAAA;AAAA,IAC5C,kBAAkB1G,EAAM,oBAAoB0G,EAAM,SAAA;AAAA,IAClD,qBAAqB1G,EAAM,uBAAuB0G,EAAM,SAAA;AAAA,IACxD,uBAAuB1G,EAAM,yBAAyB0G,EAAM,SAAA;AAAA,EAAS;AAEzE,GAEMpE,KAAQ,CACZuD,GACA,CAACc,GAAQC,CAAS,GAClBP,OACI;AAAA,EACJ,GAAGR;AAAAA,EACH,YAAYA,EAAO;AAAA,EACnB,SAASU,EAAgBV,GAAQQ,CAAa;AAChD,IAEaQ,KAAiB;AAAA,EAAA,WAC5BV;AAAAA,EACA,MAAAP;AAAA,EACA,SAAAK;AAAA,EACA,eAAAF;AAAA,EACA,QAAQ;AAAA,IACN,OAAAzD;AAAA,IACA,QAAAmE;AAAA,EAAA;AAAA,EAEF,SAAS;AAAA,IACP,cAAcL;AAAA,IACd,UAAUG;AAAA,EAAA;AAEd;"}
|