drizzle-cube 0.4.29 → 0.4.30
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/adapters/anthropic-BIva8k1r.cjs +1 -0
- package/dist/adapters/anthropic-B_rg0BhK.js +140 -0
- package/dist/adapters/dist-Boc63-1q.cjs +2 -0
- package/dist/adapters/dist-De5fzUEM.js +581 -0
- package/dist/adapters/express/index.cjs +2 -10
- package/dist/adapters/express/index.js +232 -342
- package/dist/adapters/fastify/index.cjs +2 -10
- package/dist/adapters/fastify/index.js +275 -424
- package/dist/adapters/google-CT4kgmBf.js +154 -0
- package/dist/adapters/google-Dgo9-Kb5.cjs +2 -0
- package/dist/adapters/handler-B8vuFQYP.cjs +25 -0
- package/dist/adapters/handler-D-2-6uLM.js +2951 -0
- package/dist/adapters/hono/index.cjs +2 -10
- package/dist/adapters/hono/index.js +307 -402
- package/dist/adapters/mcp-prompts-BAutSQYA.js +344 -0
- package/dist/adapters/mcp-prompts-DsAkafVn.cjs +5 -0
- package/dist/adapters/mcp-transport-CuugoG8t.js +7821 -0
- package/dist/adapters/mcp-transport-Dpp6hdZe.cjs +253 -0
- package/dist/adapters/nextjs/index.cjs +1 -9
- package/dist/adapters/nextjs/index.js +377 -600
- package/dist/adapters/openai-CjBvA6mK.js +4114 -0
- package/dist/adapters/openai-DhLE0A9Z.cjs +1 -0
- package/dist/adapters/openai-Zjw4Zo4R.js +153 -0
- package/dist/adapters/openai-eJBw3LfQ.cjs +16 -0
- package/dist/adapters/types.cjs +0 -1
- package/dist/adapters/types.js +0 -1
- package/dist/adapters/utils-ChhNGUOF.js +5396 -0
- package/dist/adapters/utils-CwJplXR5.cjs +15 -0
- package/dist/adapters/utils.cjs +1 -19
- package/dist/adapters/utils.js +2 -21333
- package/dist/client/charts.js +15 -186
- package/dist/client/chunks/DashboardEditModal-C076pscL.js +6678 -0
- package/dist/client/chunks/DashboardEditModal-C076pscL.js.map +1 -0
- package/dist/client/chunks/FieldSearchModal-C0DjSWk3.js +2631 -0
- package/dist/client/chunks/FieldSearchModal-C0DjSWk3.js.map +1 -0
- package/dist/client/chunks/RetentionCombinedChart-DuGXc-AP.js +270 -0
- package/dist/client/chunks/RetentionCombinedChart-DuGXc-AP.js.map +1 -0
- package/dist/client/chunks/RetentionCombinedChart.config-DprbXd1N.js +56 -0
- package/dist/client/chunks/RetentionCombinedChart.config-DprbXd1N.js.map +1 -0
- package/dist/client/chunks/RetentionHeatmap-BoGY6mlZ.js +193 -0
- package/dist/client/chunks/RetentionHeatmap-BoGY6mlZ.js.map +1 -0
- package/dist/client/chunks/RetentionHeatmap.config-cbaNExVy.js +25 -0
- package/dist/client/chunks/RetentionHeatmap.config-cbaNExVy.js.map +1 -0
- package/dist/client/chunks/analysis-builder-DF0XntqC.js +6111 -0
- package/dist/client/chunks/analysis-builder-DF0XntqC.js.map +1 -0
- package/dist/client/chunks/analysis-builder-shared-2QhKYbs6.js +3114 -0
- package/dist/client/chunks/analysis-builder-shared-2QhKYbs6.js.map +1 -0
- package/dist/client/chunks/chart-activity-grid-CNES9VBk.js +803 -0
- package/dist/client/chunks/chart-activity-grid-CNES9VBk.js.map +1 -0
- package/dist/client/chunks/chart-area-CRJc3KOu.js +449 -0
- package/dist/client/chunks/chart-area-CRJc3KOu.js.map +1 -0
- package/dist/client/chunks/chart-bar-DD2PjJ5n.js +270 -0
- package/dist/client/chunks/chart-bar-DD2PjJ5n.js.map +1 -0
- package/dist/client/chunks/chart-box-plot-BcqleldJ.js +377 -0
- package/dist/client/chunks/chart-box-plot-BcqleldJ.js.map +1 -0
- package/dist/client/chunks/chart-bubble-BmQkVk4K.js +273 -0
- package/dist/client/chunks/chart-bubble-BmQkVk4K.js.map +1 -0
- package/dist/client/chunks/chart-candlestick-C3Rep469.js +306 -0
- package/dist/client/chunks/chart-candlestick-C3Rep469.js.map +1 -0
- package/dist/client/chunks/chart-config-activity-grid-USo7JrPh.js +51 -0
- package/dist/client/chunks/chart-config-activity-grid-USo7JrPh.js.map +1 -0
- package/dist/client/chunks/chart-config-area-D_ZufYzg.js +93 -0
- package/dist/client/chunks/chart-config-area-D_ZufYzg.js.map +1 -0
- package/dist/client/chunks/chart-config-bar-BCi2Wmd6.js +87 -0
- package/dist/client/chunks/chart-config-bar-BCi2Wmd6.js.map +1 -0
- package/dist/client/chunks/chart-config-box-plot-afKLzJSp.js +35 -0
- package/dist/client/chunks/chart-config-box-plot-afKLzJSp.js.map +1 -0
- package/dist/client/chunks/chart-config-bubble-CgbBjPv8.js +82 -0
- package/dist/client/chunks/chart-config-bubble-CgbBjPv8.js.map +1 -0
- package/dist/client/chunks/chart-config-candlestick-7boGjZ-A.js +72 -0
- package/dist/client/chunks/chart-config-candlestick-7boGjZ-A.js.map +1 -0
- package/dist/client/chunks/chart-config-data-table-Cl7sBasW.js +30 -0
- package/dist/client/chunks/chart-config-data-table-Cl7sBasW.js.map +1 -0
- package/dist/client/chunks/chart-config-funnel-CXPYQtTl.js +93 -0
- package/dist/client/chunks/chart-config-funnel-CXPYQtTl.js.map +1 -0
- package/dist/client/chunks/chart-config-gauge-DUNEUCvh.js +64 -0
- package/dist/client/chunks/chart-config-gauge-DUNEUCvh.js.map +1 -0
- package/dist/client/chunks/chart-config-heat-map-BFf1tO11.js +91 -0
- package/dist/client/chunks/chart-config-heat-map-BFf1tO11.js.map +1 -0
- package/dist/client/chunks/chart-config-kpi-delta-C5k2waIJ.js +94 -0
- package/dist/client/chunks/chart-config-kpi-delta-C5k2waIJ.js.map +1 -0
- package/dist/client/chunks/chart-config-kpi-number-DptOyhk0.js +75 -0
- package/dist/client/chunks/chart-config-kpi-number-DptOyhk0.js.map +1 -0
- package/dist/client/chunks/chart-config-kpi-text-D9DdVWqd.js +47 -0
- package/dist/client/chunks/chart-config-kpi-text-D9DdVWqd.js.map +1 -0
- package/dist/client/chunks/chart-config-line-B3NgLF7K.js +104 -0
- package/dist/client/chunks/chart-config-line-B3NgLF7K.js.map +1 -0
- package/dist/client/chunks/chart-config-markdown-tlfivQTt.js +117 -0
- package/dist/client/chunks/chart-config-markdown-tlfivQTt.js.map +1 -0
- package/dist/client/chunks/chart-config-measure-profile-D7XDwrU2.js +82 -0
- package/dist/client/chunks/chart-config-measure-profile-D7XDwrU2.js.map +1 -0
- package/dist/client/chunks/chart-config-pie-wY0B52PC.js +68 -0
- package/dist/client/chunks/chart-config-pie-wY0B52PC.js.map +1 -0
- package/dist/client/chunks/chart-config-radar-DRpJBy1M.js +49 -0
- package/dist/client/chunks/chart-config-radar-DRpJBy1M.js.map +1 -0
- package/dist/client/chunks/chart-config-radial-bar-DCUpXv9G.js +38 -0
- package/dist/client/chunks/chart-config-radial-bar-DCUpXv9G.js.map +1 -0
- package/dist/client/chunks/chart-config-sankey-CdOhlm4h.js +66 -0
- package/dist/client/chunks/chart-config-sankey-CdOhlm4h.js.map +1 -0
- package/dist/client/chunks/chart-config-scatter-B2su_x8f.js +61 -0
- package/dist/client/chunks/chart-config-scatter-B2su_x8f.js.map +1 -0
- package/dist/client/chunks/chart-config-sunburst-BPdjbk18.js +45 -0
- package/dist/client/chunks/chart-config-sunburst-BPdjbk18.js.map +1 -0
- package/dist/client/chunks/chart-config-tree-map-Cbsh2fe2.js +51 -0
- package/dist/client/chunks/chart-config-tree-map-Cbsh2fe2.js.map +1 -0
- package/dist/client/chunks/chart-config-waterfall-DGmuZfQF.js +59 -0
- package/dist/client/chunks/chart-config-waterfall-DGmuZfQF.js.map +1 -0
- package/dist/client/chunks/chart-data-table-DehW1C1G.js +4088 -0
- package/dist/client/chunks/chart-data-table-DehW1C1G.js.map +1 -0
- package/dist/client/chunks/chart-funnel-BjkpnG5g.js +447 -0
- package/dist/client/chunks/chart-funnel-BjkpnG5g.js.map +1 -0
- package/dist/client/chunks/chart-gauge-BWW_HEfg.js +424 -0
- package/dist/client/chunks/chart-gauge-BWW_HEfg.js.map +1 -0
- package/dist/client/chunks/chart-heat-map-BWuOuDcm.js +236 -0
- package/dist/client/chunks/chart-heat-map-BWuOuDcm.js.map +1 -0
- package/dist/client/chunks/chart-kpi-delta-D5OHtDJx.js +343 -0
- package/dist/client/chunks/chart-kpi-delta-D5OHtDJx.js.map +1 -0
- package/dist/client/chunks/chart-kpi-number-C9zH-aKC.js +326 -0
- package/dist/client/chunks/chart-kpi-number-C9zH-aKC.js.map +1 -0
- package/dist/client/chunks/chart-kpi-text-ChVn3S7j.js +149 -0
- package/dist/client/chunks/chart-kpi-text-ChVn3S7j.js.map +1 -0
- package/dist/client/chunks/chart-line-DOIMkP0b.js +431 -0
- package/dist/client/chunks/chart-line-DOIMkP0b.js.map +1 -0
- package/dist/client/chunks/chart-markdown-DXxc43w1.js +3457 -0
- package/dist/client/chunks/chart-markdown-DXxc43w1.js.map +1 -0
- package/dist/client/chunks/chart-measure-profile-C6wrr9il.js +179 -0
- package/dist/client/chunks/chart-measure-profile-C6wrr9il.js.map +1 -0
- package/dist/client/chunks/chart-pie-BU_FgwDc.js +172 -0
- package/dist/client/chunks/chart-pie-BU_FgwDc.js.map +1 -0
- package/dist/client/chunks/chart-radar-DlufwnAX.js +154 -0
- package/dist/client/chunks/chart-radar-DlufwnAX.js.map +1 -0
- package/dist/client/chunks/chart-radial-bar-B5vS_Aw5.js +148 -0
- package/dist/client/chunks/chart-radial-bar-B5vS_Aw5.js.map +1 -0
- package/dist/client/chunks/chart-sankey-FChb26UX.js +222 -0
- package/dist/client/chunks/chart-sankey-FChb26UX.js.map +1 -0
- package/dist/client/chunks/chart-scatter-DW0cAZ2H.js +255 -0
- package/dist/client/chunks/chart-scatter-DW0cAZ2H.js.map +1 -0
- package/dist/client/chunks/chart-sunburst-Clf-6WxW.js +221 -0
- package/dist/client/chunks/chart-sunburst-Clf-6WxW.js.map +1 -0
- package/dist/client/chunks/chart-tree-map-p_VwUJPF.js +298 -0
- package/dist/client/chunks/chart-tree-map-p_VwUJPF.js.map +1 -0
- package/dist/client/chunks/chart-waterfall-jt44IQ-w.js +237 -0
- package/dist/client/chunks/chart-waterfall-jt44IQ-w.js.map +1 -0
- package/dist/client/chunks/charts-core-CUVzf4cV.js +215 -0
- package/dist/client/chunks/charts-core-CUVzf4cV.js.map +1 -0
- package/dist/client/chunks/charts-loader-AGpph8_I.js +259 -0
- package/dist/client/chunks/charts-loader-AGpph8_I.js.map +1 -0
- package/dist/client/chunks/core-D1TOj17W.js +845 -0
- package/dist/client/chunks/core-D1TOj17W.js.map +1 -0
- package/dist/client/chunks/dist-DDBeV_JI.js +847 -0
- package/dist/client/chunks/dist-DDBeV_JI.js.map +1 -0
- package/dist/client/chunks/javascript-BBwTSo6e.js +438 -0
- package/dist/client/chunks/javascript-BBwTSo6e.js.map +1 -0
- package/dist/client/chunks/json-BpTrLZSh.js +38 -0
- package/dist/client/chunks/json-BpTrLZSh.js.map +1 -0
- package/dist/client/chunks/lazyChartConfigRegistry-BjhxDaSf.js +149 -0
- package/dist/client/chunks/lazyChartConfigRegistry-BjhxDaSf.js.map +1 -0
- package/dist/client/chunks/providers-DX3Vw5kc.js +7 -0
- package/dist/client/chunks/providers-DX3Vw5kc.js.map +1 -0
- package/dist/client/chunks/retention-UEXlSdZ-.js +132 -0
- package/dist/client/chunks/retention-UEXlSdZ-.js.map +1 -0
- package/dist/client/chunks/rolldown-runtime-lc2dmIiU.js +20 -0
- package/dist/client/chunks/schema-visualization-ZugB4Io9.js +1073 -0
- package/dist/client/chunks/schema-visualization-ZugB4Io9.js.map +1 -0
- package/dist/client/chunks/sql-B0chxcEK.js +120 -0
- package/dist/client/chunks/sql-B0chxcEK.js.map +1 -0
- package/dist/client/chunks/syntaxHighlighting-87bOwTxj.js +30 -0
- package/dist/client/chunks/syntaxHighlighting-87bOwTxj.js.map +1 -0
- package/dist/client/chunks/useDebounce-BQjNWndQ.js +1394 -0
- package/dist/client/chunks/useDebounce-BQjNWndQ.js.map +1 -0
- package/dist/client/chunks/useDirtyStateTracking-CgKZWkel.js +66 -0
- package/dist/client/chunks/useDirtyStateTracking-CgKZWkel.js.map +1 -0
- package/dist/client/chunks/useExplainAI-c_bHxZe5.js +203 -0
- package/dist/client/chunks/useExplainAI-c_bHxZe5.js.map +1 -0
- package/dist/client/chunks/useNotebookLayout-BFZ_33Kb.js +37 -0
- package/dist/client/chunks/useNotebookLayout-BFZ_33Kb.js.map +1 -0
- package/dist/client/chunks/utils-A54Ny29G.js +128 -0
- package/dist/client/chunks/utils-A54Ny29G.js.map +1 -0
- package/dist/client/chunks/vendor-CoPBRumI.js +828 -0
- package/dist/client/chunks/vendor-CoPBRumI.js.map +1 -0
- package/dist/client/components.js +4 -18
- package/dist/client/hooks.js +6 -58
- package/dist/client/icons.js +2 -15
- package/dist/client/index.js +1061 -1295
- package/dist/client/index.js.map +1 -1
- package/dist/client/providers.js +3 -9
- package/dist/client/styles.css +2 -1
- package/dist/client/types.d.ts +1 -0
- package/dist/client/utils.js +7 -74
- package/dist/client-bundle-stats.html +1 -1
- package/dist/server/anthropic-BsNspi1r.js +140 -0
- package/dist/server/anthropic-DsCEX6Fm.cjs +1 -0
- package/dist/server/dist-CMWZC51B.js +581 -0
- package/dist/server/dist-DxegvyZF.cjs +2 -0
- package/dist/server/google-BXwMolCu.js +154 -0
- package/dist/server/google-DzQWXFwF.cjs +2 -0
- package/dist/server/index.cjs +109 -129
- package/dist/server/index.js +15089 -34394
- package/dist/server/openai-BPhmb8mi.js +4114 -0
- package/dist/server/openai-CLsoLaue.cjs +1 -0
- package/dist/server/openai-D1kZ5sdM.js +153 -0
- package/dist/server/openai-DkOKbVLC.cjs +16 -0
- package/package.json +5 -5
- package/dist/adapters/anthropic-BTkjgFpT.cjs +0 -1
- package/dist/adapters/anthropic-CTu9E801.js +0 -126
- package/dist/adapters/google-BAK9pnQf.cjs +0 -2
- package/dist/adapters/google-DficVAsJ.js +0 -146
- package/dist/adapters/handler-BHguLZOY.js +0 -2713
- package/dist/adapters/handler-DOIyiFPg.cjs +0 -39
- package/dist/adapters/index-BgCeQBuN.cjs +0 -2
- package/dist/adapters/index-C3PskWTr.js +0 -5353
- package/dist/adapters/index-C45_meK_.js +0 -719
- package/dist/adapters/index-ht4NPca9.cjs +0 -23
- package/dist/adapters/mcp-transport-CWGqDQSI.cjs +0 -259
- package/dist/adapters/mcp-transport-CyeHMDPl.js +0 -11055
- package/dist/adapters/openai-BvA6eLs8.cjs +0 -1
- package/dist/adapters/openai-mcE24du8.js +0 -131
- package/dist/client/charts.js.map +0 -1
- package/dist/client/chunks/RetentionCombinedChart--SnU4Y_I.js +0 -256
- package/dist/client/chunks/RetentionCombinedChart--SnU4Y_I.js.map +0 -1
- package/dist/client/chunks/RetentionCombinedChart.config-Bbp2ghim.js +0 -48
- package/dist/client/chunks/RetentionCombinedChart.config-Bbp2ghim.js.map +0 -1
- package/dist/client/chunks/RetentionHeatmap-BHYU8MXY.js +0 -178
- package/dist/client/chunks/RetentionHeatmap-BHYU8MXY.js.map +0 -1
- package/dist/client/chunks/RetentionHeatmap.config-BWf_-vdj.js +0 -29
- package/dist/client/chunks/RetentionHeatmap.config-BWf_-vdj.js.map +0 -1
- package/dist/client/chunks/analysis-builder-DMFoAkjT.js +0 -6203
- package/dist/client/chunks/analysis-builder-DMFoAkjT.js.map +0 -1
- package/dist/client/chunks/analysis-builder-shared-CunrT3gi.js +0 -3140
- package/dist/client/chunks/analysis-builder-shared-CunrT3gi.js.map +0 -1
- package/dist/client/chunks/chart-activity-grid-DCznpK6N.js +0 -347
- package/dist/client/chunks/chart-activity-grid-DCznpK6N.js.map +0 -1
- package/dist/client/chunks/chart-area-CqKRIUpj.js +0 -234
- package/dist/client/chunks/chart-area-CqKRIUpj.js.map +0 -1
- package/dist/client/chunks/chart-bar-Bl5jvrU_.js +0 -267
- package/dist/client/chunks/chart-bar-Bl5jvrU_.js.map +0 -1
- package/dist/client/chunks/chart-box-plot-CzMb00z_.js +0 -322
- package/dist/client/chunks/chart-box-plot-CzMb00z_.js.map +0 -1
- package/dist/client/chunks/chart-bubble-BF8Z52eW.js +0 -249
- package/dist/client/chunks/chart-bubble-BF8Z52eW.js.map +0 -1
- package/dist/client/chunks/chart-candlestick-ByWS945g.js +0 -269
- package/dist/client/chunks/chart-candlestick-ByWS945g.js.map +0 -1
- package/dist/client/chunks/chart-config-activity-grid-CmOqDuOT.js +0 -50
- package/dist/client/chunks/chart-config-activity-grid-CmOqDuOT.js.map +0 -1
- package/dist/client/chunks/chart-config-area-CK_GVApT.js +0 -77
- package/dist/client/chunks/chart-config-area-CK_GVApT.js.map +0 -1
- package/dist/client/chunks/chart-config-bar-C8uzktxl.js +0 -71
- package/dist/client/chunks/chart-config-bar-C8uzktxl.js.map +0 -1
- package/dist/client/chunks/chart-config-box-plot-D_E_SSc2.js +0 -38
- package/dist/client/chunks/chart-config-box-plot-D_E_SSc2.js.map +0 -1
- package/dist/client/chunks/chart-config-bubble-q3DoQX5F.js +0 -71
- package/dist/client/chunks/chart-config-bubble-q3DoQX5F.js.map +0 -1
- package/dist/client/chunks/chart-config-candlestick-CRCpD43-.js +0 -70
- package/dist/client/chunks/chart-config-candlestick-CRCpD43-.js.map +0 -1
- package/dist/client/chunks/chart-config-data-table-B20Y5JCm.js +0 -28
- package/dist/client/chunks/chart-config-data-table-B20Y5JCm.js.map +0 -1
- package/dist/client/chunks/chart-config-funnel-3eYnGg8M.js +0 -92
- package/dist/client/chunks/chart-config-funnel-3eYnGg8M.js.map +0 -1
- package/dist/client/chunks/chart-config-gauge-CQx9w3d4.js +0 -64
- package/dist/client/chunks/chart-config-gauge-CQx9w3d4.js.map +0 -1
- package/dist/client/chunks/chart-config-heat-map-_wEnTnRA.js +0 -77
- package/dist/client/chunks/chart-config-heat-map-_wEnTnRA.js.map +0 -1
- package/dist/client/chunks/chart-config-kpi-delta-DLGZ2A3X.js +0 -97
- package/dist/client/chunks/chart-config-kpi-delta-DLGZ2A3X.js.map +0 -1
- package/dist/client/chunks/chart-config-kpi-number-K-wzviXF.js +0 -75
- package/dist/client/chunks/chart-config-kpi-number-K-wzviXF.js.map +0 -1
- package/dist/client/chunks/chart-config-kpi-text-BjYqwqaJ.js +0 -47
- package/dist/client/chunks/chart-config-kpi-text-BjYqwqaJ.js.map +0 -1
- package/dist/client/chunks/chart-config-line-JNagi9tf.js +0 -88
- package/dist/client/chunks/chart-config-line-JNagi9tf.js.map +0 -1
- package/dist/client/chunks/chart-config-markdown-BWQSjJpy.js +0 -97
- package/dist/client/chunks/chart-config-markdown-BWQSjJpy.js.map +0 -1
- package/dist/client/chunks/chart-config-measure-profile-ZYaMrtws.js +0 -70
- package/dist/client/chunks/chart-config-measure-profile-ZYaMrtws.js.map +0 -1
- package/dist/client/chunks/chart-config-pie-CNLXb-fr.js +0 -39
- package/dist/client/chunks/chart-config-pie-CNLXb-fr.js.map +0 -1
- package/dist/client/chunks/chart-config-radar-oxHfRAa3.js +0 -44
- package/dist/client/chunks/chart-config-radar-oxHfRAa3.js.map +0 -1
- package/dist/client/chunks/chart-config-radial-bar-_Aw3jAEm.js +0 -37
- package/dist/client/chunks/chart-config-radial-bar-_Aw3jAEm.js.map +0 -1
- package/dist/client/chunks/chart-config-sankey-C8FX9hGF.js +0 -61
- package/dist/client/chunks/chart-config-sankey-C8FX9hGF.js.map +0 -1
- package/dist/client/chunks/chart-config-scatter-DFKM80eO.js +0 -53
- package/dist/client/chunks/chart-config-scatter-DFKM80eO.js.map +0 -1
- package/dist/client/chunks/chart-config-sunburst-BmC0NLTU.js +0 -50
- package/dist/client/chunks/chart-config-sunburst-BmC0NLTU.js.map +0 -1
- package/dist/client/chunks/chart-config-tree-map-DGMbNTaa.js +0 -47
- package/dist/client/chunks/chart-config-tree-map-DGMbNTaa.js.map +0 -1
- package/dist/client/chunks/chart-config-waterfall-DTyXV_fo.js +0 -60
- package/dist/client/chunks/chart-config-waterfall-DTyXV_fo.js.map +0 -1
- package/dist/client/chunks/chart-data-table-HwfF-Ujv.js +0 -293
- package/dist/client/chunks/chart-data-table-HwfF-Ujv.js.map +0 -1
- package/dist/client/chunks/chart-funnel-WmuoWlCq.js +0 -259
- package/dist/client/chunks/chart-funnel-WmuoWlCq.js.map +0 -1
- package/dist/client/chunks/chart-gauge-Cot4By-w.js +0 -374
- package/dist/client/chunks/chart-gauge-Cot4By-w.js.map +0 -1
- package/dist/client/chunks/chart-heat-map-bGNtsZMr.js +0 -231
- package/dist/client/chunks/chart-heat-map-bGNtsZMr.js.map +0 -1
- package/dist/client/chunks/chart-kpi-delta-DeyKMxgq.js +0 -351
- package/dist/client/chunks/chart-kpi-delta-DeyKMxgq.js.map +0 -1
- package/dist/client/chunks/chart-kpi-number-D1z1gxXO.js +0 -476
- package/dist/client/chunks/chart-kpi-number-D1z1gxXO.js.map +0 -1
- package/dist/client/chunks/chart-kpi-text-b7q6KWc0.js +0 -165
- package/dist/client/chunks/chart-kpi-text-b7q6KWc0.js.map +0 -1
- package/dist/client/chunks/chart-line-3Nf-EPqJ.js +0 -450
- package/dist/client/chunks/chart-line-3Nf-EPqJ.js.map +0 -1
- package/dist/client/chunks/chart-markdown-BT_-MBq1.js +0 -2721
- package/dist/client/chunks/chart-markdown-BT_-MBq1.js.map +0 -1
- package/dist/client/chunks/chart-measure-profile-BVjUonqU.js +0 -114
- package/dist/client/chunks/chart-measure-profile-BVjUonqU.js.map +0 -1
- package/dist/client/chunks/chart-pie-DblG6w7g.js +0 -137
- package/dist/client/chunks/chart-pie-DblG6w7g.js.map +0 -1
- package/dist/client/chunks/chart-radar-BHZbeeTg.js +0 -129
- package/dist/client/chunks/chart-radar-BHZbeeTg.js.map +0 -1
- package/dist/client/chunks/chart-radial-bar-AlEJC1Jo.js +0 -119
- package/dist/client/chunks/chart-radial-bar-AlEJC1Jo.js.map +0 -1
- package/dist/client/chunks/chart-sankey-E8vYKjQF.js +0 -189
- package/dist/client/chunks/chart-sankey-E8vYKjQF.js.map +0 -1
- package/dist/client/chunks/chart-scatter-Bbxqi0iw.js +0 -202
- package/dist/client/chunks/chart-scatter-Bbxqi0iw.js.map +0 -1
- package/dist/client/chunks/chart-sunburst-BgnTKolT.js +0 -188
- package/dist/client/chunks/chart-sunburst-BgnTKolT.js.map +0 -1
- package/dist/client/chunks/chart-tree-map-i9LGCLwl.js +0 -284
- package/dist/client/chunks/chart-tree-map-i9LGCLwl.js.map +0 -1
- package/dist/client/chunks/chart-waterfall-BeIhCm83.js +0 -191
- package/dist/client/chunks/chart-waterfall-BeIhCm83.js.map +0 -1
- package/dist/client/chunks/charts-core-BUUO36OM.js +0 -692
- package/dist/client/chunks/charts-core-BUUO36OM.js.map +0 -1
- package/dist/client/chunks/charts-loader-goTYnavu.js +0 -258
- package/dist/client/chunks/charts-loader-goTYnavu.js.map +0 -1
- package/dist/client/chunks/components-BFgYvFq6.js +0 -10066
- package/dist/client/chunks/components-BFgYvFq6.js.map +0 -1
- package/dist/client/chunks/core-Y9e-sNfb.js +0 -1068
- package/dist/client/chunks/core-Y9e-sNfb.js.map +0 -1
- package/dist/client/chunks/flow-utils-CjQZG5qq.js +0 -16
- package/dist/client/chunks/flow-utils-CjQZG5qq.js.map +0 -1
- package/dist/client/chunks/funnel-utils-CyonoNeC.js +0 -135
- package/dist/client/chunks/funnel-utils-CyonoNeC.js.map +0 -1
- package/dist/client/chunks/icons-CwvgmdIP.js +0 -1636
- package/dist/client/chunks/icons-CwvgmdIP.js.map +0 -1
- package/dist/client/chunks/index-CApFCBF9.js +0 -81
- package/dist/client/chunks/index-CApFCBF9.js.map +0 -1
- package/dist/client/chunks/index-_2PSgbkC.js +0 -1046
- package/dist/client/chunks/index-_2PSgbkC.js.map +0 -1
- package/dist/client/chunks/javascript-DII1YQGr.js +0 -659
- package/dist/client/chunks/javascript-DII1YQGr.js.map +0 -1
- package/dist/client/chunks/json-C_6Prymp.js +0 -39
- package/dist/client/chunks/json-C_6Prymp.js.map +0 -1
- package/dist/client/chunks/providers-Ds7DRmnO.js +0 -554
- package/dist/client/chunks/providers-Ds7DRmnO.js.map +0 -1
- package/dist/client/chunks/retention-CzCo8262.js +0 -120
- package/dist/client/chunks/retention-CzCo8262.js.map +0 -1
- package/dist/client/chunks/schema-visualization-B97a1Ybu.js +0 -772
- package/dist/client/chunks/schema-visualization-B97a1Ybu.js.map +0 -1
- package/dist/client/chunks/sql-IeKX8fQ8.js +0 -616
- package/dist/client/chunks/sql-IeKX8fQ8.js.map +0 -1
- package/dist/client/chunks/syntaxHighlighting-DAMSW_A6.js +0 -34
- package/dist/client/chunks/syntaxHighlighting-DAMSW_A6.js.map +0 -1
- package/dist/client/chunks/theme-Dp3hFed1.js +0 -112
- package/dist/client/chunks/theme-Dp3hFed1.js.map +0 -1
- package/dist/client/chunks/useDirtyStateTracking-CyAXd07d.js +0 -1231
- package/dist/client/chunks/useDirtyStateTracking-CyAXd07d.js.map +0 -1
- package/dist/client/chunks/useExplainAI-CfQ_JmF1.js +0 -182
- package/dist/client/chunks/useExplainAI-CfQ_JmF1.js.map +0 -1
- package/dist/client/chunks/vendor-B2EH3V58.js +0 -2892
- package/dist/client/chunks/vendor-B2EH3V58.js.map +0 -1
- package/dist/client/components.js.map +0 -1
- package/dist/client/hooks.js.map +0 -1
- package/dist/client/icons.js.map +0 -1
- package/dist/client/providers.js.map +0 -1
- package/dist/client/utils.js.map +0 -1
- package/dist/server/anthropic-BTkjgFpT.cjs +0 -1
- package/dist/server/anthropic-CTu9E801.js +0 -126
- package/dist/server/google-BAK9pnQf.cjs +0 -2
- package/dist/server/google-DficVAsJ.js +0 -146
- package/dist/server/index-BgCeQBuN.cjs +0 -2
- package/dist/server/index-C3PskWTr.js +0 -5353
- package/dist/server/index-C45_meK_.js +0 -719
- package/dist/server/index-ht4NPca9.cjs +0 -23
- package/dist/server/openai-BvA6eLs8.cjs +0 -1
- package/dist/server/openai-mcE24du8.js +0 -131
|
@@ -1,322 +0,0 @@
|
|
|
1
|
-
import { jsx as e, jsxs as y } from "react/jsx-runtime";
|
|
2
|
-
import L, { useRef as V, useState as Q, useLayoutEffect as T, useMemo as j } from "react";
|
|
3
|
-
import { f as Y, c as D } from "./charts-core-BUUO36OM.js";
|
|
4
|
-
const C = 50;
|
|
5
|
-
function k(r) {
|
|
6
|
-
if (r == null) return null;
|
|
7
|
-
const n = typeof r == "number" ? r : parseFloat(String(r));
|
|
8
|
-
return isNaN(n) ? null : n;
|
|
9
|
-
}
|
|
10
|
-
function U(r, n, c, v, o, x, d, l) {
|
|
11
|
-
const m = k(r[n]), u = k(r[c]), a = k(r[v]), p = k(r[o]), q = k(r[x]);
|
|
12
|
-
return m === null || u === null || a === null || p === null || q === null ? null : { label: d, min: m, q1: u, median: a, q3: p, max: q, color: l };
|
|
13
|
-
}
|
|
14
|
-
function G(r, n, c, v, o, x) {
|
|
15
|
-
const d = k(r[n]), l = k(r[c]), m = k(r[v]);
|
|
16
|
-
if (d === null || l === null || m === null) return null;
|
|
17
|
-
const u = Math.abs(l);
|
|
18
|
-
return {
|
|
19
|
-
label: o,
|
|
20
|
-
min: d - 2 * u,
|
|
21
|
-
q1: d - u,
|
|
22
|
-
median: m,
|
|
23
|
-
q3: d + u,
|
|
24
|
-
max: d + 2 * u,
|
|
25
|
-
color: x
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
function I({
|
|
29
|
-
x: r,
|
|
30
|
-
boxWidth: n,
|
|
31
|
-
minY: c,
|
|
32
|
-
q1Y: v,
|
|
33
|
-
medianY: o,
|
|
34
|
-
q3Y: x,
|
|
35
|
-
maxY: d,
|
|
36
|
-
color: l,
|
|
37
|
-
label: m
|
|
38
|
-
}) {
|
|
39
|
-
const u = n / 2, a = r, p = n * 0.4;
|
|
40
|
-
return /* @__PURE__ */ y("g", { "data-testid": `box-${m}`, children: [
|
|
41
|
-
/* @__PURE__ */ e("line", { x1: a, y1: c, x2: a, y2: d, stroke: l, strokeWidth: 1.5 }),
|
|
42
|
-
/* @__PURE__ */ e(
|
|
43
|
-
"line",
|
|
44
|
-
{
|
|
45
|
-
x1: a - p / 2,
|
|
46
|
-
y1: c,
|
|
47
|
-
x2: a + p / 2,
|
|
48
|
-
y2: c,
|
|
49
|
-
stroke: l,
|
|
50
|
-
strokeWidth: 1.5
|
|
51
|
-
}
|
|
52
|
-
),
|
|
53
|
-
/* @__PURE__ */ e(
|
|
54
|
-
"line",
|
|
55
|
-
{
|
|
56
|
-
x1: a - p / 2,
|
|
57
|
-
y1: d,
|
|
58
|
-
x2: a + p / 2,
|
|
59
|
-
y2: d,
|
|
60
|
-
stroke: l,
|
|
61
|
-
strokeWidth: 1.5
|
|
62
|
-
}
|
|
63
|
-
),
|
|
64
|
-
/* @__PURE__ */ e(
|
|
65
|
-
"rect",
|
|
66
|
-
{
|
|
67
|
-
x: a - u,
|
|
68
|
-
y: Math.min(v, x),
|
|
69
|
-
width: n,
|
|
70
|
-
height: Math.abs(x - v) || 2,
|
|
71
|
-
fill: l,
|
|
72
|
-
fillOpacity: 0.3,
|
|
73
|
-
stroke: l,
|
|
74
|
-
strokeWidth: 1.5
|
|
75
|
-
}
|
|
76
|
-
),
|
|
77
|
-
/* @__PURE__ */ e(
|
|
78
|
-
"line",
|
|
79
|
-
{
|
|
80
|
-
x1: a - u,
|
|
81
|
-
y1: o,
|
|
82
|
-
x2: a + u,
|
|
83
|
-
y2: o,
|
|
84
|
-
stroke: l,
|
|
85
|
-
strokeWidth: 2.5,
|
|
86
|
-
"data-testid": `median-${m}`
|
|
87
|
-
}
|
|
88
|
-
)
|
|
89
|
-
] });
|
|
90
|
-
}
|
|
91
|
-
function J({
|
|
92
|
-
scale: r,
|
|
93
|
-
domainMin: n,
|
|
94
|
-
domainMax: c,
|
|
95
|
-
width: v,
|
|
96
|
-
tickCount: o = 5,
|
|
97
|
-
format: x
|
|
98
|
-
}) {
|
|
99
|
-
const d = j(() => {
|
|
100
|
-
const l = c - n;
|
|
101
|
-
if (l === 0) return [n];
|
|
102
|
-
const m = l / (o - 1);
|
|
103
|
-
return Array.from({ length: o }, (u, a) => n + a * m);
|
|
104
|
-
}, [n, c, o]);
|
|
105
|
-
return /* @__PURE__ */ y("g", { "data-testid": "y-axis", children: [
|
|
106
|
-
d.map((l, m) => /* @__PURE__ */ y("g", { transform: `translate(0, ${r(l)})`, children: [
|
|
107
|
-
/* @__PURE__ */ e("line", { x1: 0, x2: -6, stroke: "currentColor", strokeWidth: 1 }),
|
|
108
|
-
/* @__PURE__ */ e(
|
|
109
|
-
"text",
|
|
110
|
-
{
|
|
111
|
-
x: -10,
|
|
112
|
-
textAnchor: "end",
|
|
113
|
-
dominantBaseline: "middle",
|
|
114
|
-
fontSize: 11,
|
|
115
|
-
fill: "currentColor",
|
|
116
|
-
className: "text-dc-text-secondary",
|
|
117
|
-
children: x ? x(l) : l.toLocaleString()
|
|
118
|
-
}
|
|
119
|
-
),
|
|
120
|
-
/* @__PURE__ */ e("line", { x1: 0, x2: v, stroke: "currentColor", strokeOpacity: 0.1, strokeWidth: 1 })
|
|
121
|
-
] }, m)),
|
|
122
|
-
/* @__PURE__ */ e("line", { y1: r(d[0]), y2: r(d[d.length - 1]), stroke: "currentColor", strokeWidth: 1 })
|
|
123
|
-
] });
|
|
124
|
-
}
|
|
125
|
-
const te = L.memo(function({
|
|
126
|
-
data: n,
|
|
127
|
-
chartConfig: c,
|
|
128
|
-
displayConfig: v = {},
|
|
129
|
-
height: o = "100%",
|
|
130
|
-
colorPalette: x,
|
|
131
|
-
onDataPointClick: d,
|
|
132
|
-
drillEnabled: l
|
|
133
|
-
}) {
|
|
134
|
-
const m = V(null), [u, a] = Q({ width: 0, height: 0 });
|
|
135
|
-
T(() => {
|
|
136
|
-
const i = m.current;
|
|
137
|
-
if (!i) return;
|
|
138
|
-
const s = new ResizeObserver((f) => {
|
|
139
|
-
for (const g of f) {
|
|
140
|
-
const { width: N, height: A } = g.contentRect;
|
|
141
|
-
N > 0 && A > 0 && a({ width: N, height: A });
|
|
142
|
-
}
|
|
143
|
-
});
|
|
144
|
-
s.observe(i);
|
|
145
|
-
const h = i.getBoundingClientRect();
|
|
146
|
-
return h.width > 0 && h.height > 0 && a({ width: h.width, height: h.height }), () => s.disconnect();
|
|
147
|
-
}, []);
|
|
148
|
-
const p = v?.leftYAxisFormat, { xField: q, mode: M, fields: F, configError: E } = j(() => {
|
|
149
|
-
const i = Array.isArray(c?.xAxis) ? c.xAxis[0] : c?.xAxis ?? c?.x, s = Array.isArray(c?.yAxis) ? c.yAxis : [];
|
|
150
|
-
return !i || s.length === 0 ? {
|
|
151
|
-
xField: i,
|
|
152
|
-
mode: "none",
|
|
153
|
-
fields: {},
|
|
154
|
-
configError: "BoxPlot requires an X-Axis dimension and at least one measure in Y-Axis"
|
|
155
|
-
} : s.length >= 5 ? {
|
|
156
|
-
xField: i,
|
|
157
|
-
mode: "5measure",
|
|
158
|
-
fields: {
|
|
159
|
-
minField: s[0],
|
|
160
|
-
q1Field: s[1],
|
|
161
|
-
medianField: s[2],
|
|
162
|
-
q3Field: s[3],
|
|
163
|
-
maxField: s[4]
|
|
164
|
-
},
|
|
165
|
-
configError: null
|
|
166
|
-
} : s.length >= 3 ? {
|
|
167
|
-
xField: i,
|
|
168
|
-
mode: "3measure",
|
|
169
|
-
fields: {
|
|
170
|
-
avgField: s[0],
|
|
171
|
-
stddevField: s[1],
|
|
172
|
-
medianField: s[2]
|
|
173
|
-
},
|
|
174
|
-
configError: null
|
|
175
|
-
} : s.length === 2 ? {
|
|
176
|
-
xField: i,
|
|
177
|
-
mode: "none",
|
|
178
|
-
fields: {},
|
|
179
|
-
configError: "BoxPlot requires 1 measure (auto), 3 (avg/stddev/median), or 5 (min/q1/median/q3/max)"
|
|
180
|
-
} : {
|
|
181
|
-
xField: i,
|
|
182
|
-
mode: "auto",
|
|
183
|
-
fields: { valueField: s[0] },
|
|
184
|
-
configError: null
|
|
185
|
-
};
|
|
186
|
-
}, [c]), R = j(() => {
|
|
187
|
-
if (E || !n || n.length === 0 || M === "none") return [];
|
|
188
|
-
const i = n.slice(0, C), s = x?.colors ?? D, h = [];
|
|
189
|
-
for (let f = 0; f < i.length; f++) {
|
|
190
|
-
const g = i[f], N = q ? String(g[q] ?? `Row ${f + 1}`) : `Row ${f + 1}`, A = s[f % s.length];
|
|
191
|
-
let b = null;
|
|
192
|
-
if (M === "5measure")
|
|
193
|
-
b = U(
|
|
194
|
-
g,
|
|
195
|
-
F.minField,
|
|
196
|
-
F.q1Field,
|
|
197
|
-
F.medianField,
|
|
198
|
-
F.q3Field,
|
|
199
|
-
F.maxField,
|
|
200
|
-
N,
|
|
201
|
-
A
|
|
202
|
-
);
|
|
203
|
-
else if (M === "3measure")
|
|
204
|
-
b = G(g, F.avgField, F.stddevField, F.medianField, N, A);
|
|
205
|
-
else {
|
|
206
|
-
const w = k(g[F.valueField]);
|
|
207
|
-
w !== null && (b = { label: N, min: w, q1: w, median: w, q3: w, max: w, color: A });
|
|
208
|
-
}
|
|
209
|
-
b && h.push(b);
|
|
210
|
-
}
|
|
211
|
-
return h;
|
|
212
|
-
}, [n, q, M, F, x, E]);
|
|
213
|
-
if (!n || n.length === 0)
|
|
214
|
-
return /* @__PURE__ */ e("div", { className: "dc:flex dc:items-center dc:justify-center dc:w-full text-dc-text-muted", style: { height: o }, children: /* @__PURE__ */ y("div", { className: "dc:text-center", children: [
|
|
215
|
-
/* @__PURE__ */ e("div", { className: "dc:text-sm dc:font-semibold dc:mb-1", children: "No data available" }),
|
|
216
|
-
/* @__PURE__ */ e("div", { className: "dc:text-xs text-dc-text-secondary", children: "No data points to display in box plot chart" })
|
|
217
|
-
] }) });
|
|
218
|
-
if (E)
|
|
219
|
-
return /* @__PURE__ */ e("div", { className: "dc:flex dc:items-center dc:justify-center dc:w-full text-dc-warning", style: { height: o }, children: /* @__PURE__ */ y("div", { className: "dc:text-center", children: [
|
|
220
|
-
/* @__PURE__ */ e("div", { className: "dc:text-sm dc:font-semibold dc:mb-1", children: "Configuration Error" }),
|
|
221
|
-
/* @__PURE__ */ e("div", { className: "dc:text-xs", children: E })
|
|
222
|
-
] }) });
|
|
223
|
-
if (R.length === 0)
|
|
224
|
-
return /* @__PURE__ */ e("div", { className: "dc:flex dc:items-center dc:justify-center dc:w-full text-dc-text-muted", style: { height: o }, children: /* @__PURE__ */ y("div", { className: "dc:text-center", children: [
|
|
225
|
-
/* @__PURE__ */ e("div", { className: "dc:text-sm dc:font-semibold dc:mb-1", children: "No valid data" }),
|
|
226
|
-
/* @__PURE__ */ e("div", { className: "dc:text-xs text-dc-text-secondary", children: "Could not compute box plot statistics from the provided data" })
|
|
227
|
-
] }) });
|
|
228
|
-
try {
|
|
229
|
-
const i = { top: 20, right: 20, bottom: 60, left: 60 }, s = u.width || 600, h = typeof o == "number" ? o : u.height || 400, f = Math.max(s - i.left - i.right, 50), g = Math.max(h - i.top - i.bottom, 50), N = R.flatMap((t) => [t.min, t.max]), A = Math.min(...N), b = Math.max(...N), w = (b - A) * 0.1 || 1, S = A - w, O = b + w, X = O - S, $ = (t) => X === 0 ? g / 2 : g - (t - S) / X * g, W = f / R.length, H = Math.min(W * 0.6, 40), _ = n.length > C;
|
|
230
|
-
return /* @__PURE__ */ y("div", { ref: m, className: "dc:relative dc:w-full", style: { height: o }, children: [
|
|
231
|
-
/* @__PURE__ */ e(
|
|
232
|
-
"svg",
|
|
233
|
-
{
|
|
234
|
-
width: "100%",
|
|
235
|
-
height: _ ? "calc(100% - 20px)" : "100%",
|
|
236
|
-
viewBox: `0 0 ${s} ${typeof h == "number" ? h : 400}`,
|
|
237
|
-
preserveAspectRatio: "none",
|
|
238
|
-
"data-testid": "boxplot-svg",
|
|
239
|
-
children: /* @__PURE__ */ y("g", { transform: `translate(${i.left}, ${i.top})`, children: [
|
|
240
|
-
/* @__PURE__ */ e(
|
|
241
|
-
J,
|
|
242
|
-
{
|
|
243
|
-
scale: $,
|
|
244
|
-
domainMin: S,
|
|
245
|
-
domainMax: O,
|
|
246
|
-
width: f,
|
|
247
|
-
tickCount: 5,
|
|
248
|
-
format: p ? (t) => Y(t, p) : void 0
|
|
249
|
-
}
|
|
250
|
-
),
|
|
251
|
-
R.map((t, P) => {
|
|
252
|
-
const z = W * P + W / 2;
|
|
253
|
-
return /* @__PURE__ */ y(
|
|
254
|
-
"g",
|
|
255
|
-
{
|
|
256
|
-
onClick: (B) => {
|
|
257
|
-
d && l && d({
|
|
258
|
-
dataPoint: { ...t },
|
|
259
|
-
clickedField: q ?? "",
|
|
260
|
-
xValue: t.label,
|
|
261
|
-
position: { x: B.clientX, y: B.clientY },
|
|
262
|
-
nativeEvent: B
|
|
263
|
-
});
|
|
264
|
-
},
|
|
265
|
-
cursor: l ? "pointer" : void 0,
|
|
266
|
-
children: [
|
|
267
|
-
/* @__PURE__ */ e("title", { children: `${t.label}: min=${t.min}, Q1=${t.q1}, median=${t.median}, Q3=${t.q3}, max=${t.max}` }),
|
|
268
|
-
/* @__PURE__ */ e(
|
|
269
|
-
I,
|
|
270
|
-
{
|
|
271
|
-
x: z,
|
|
272
|
-
boxWidth: H,
|
|
273
|
-
minY: $(t.min),
|
|
274
|
-
q1Y: $(t.q1),
|
|
275
|
-
medianY: $(t.median),
|
|
276
|
-
q3Y: $(t.q3),
|
|
277
|
-
maxY: $(t.max),
|
|
278
|
-
color: t.color,
|
|
279
|
-
label: t.label
|
|
280
|
-
}
|
|
281
|
-
),
|
|
282
|
-
/* @__PURE__ */ e(
|
|
283
|
-
"text",
|
|
284
|
-
{
|
|
285
|
-
x: z,
|
|
286
|
-
y: g + 20,
|
|
287
|
-
textAnchor: "middle",
|
|
288
|
-
fontSize: 11,
|
|
289
|
-
fill: "currentColor",
|
|
290
|
-
className: "text-dc-text-secondary",
|
|
291
|
-
"data-testid": `x-label-${t.label}`,
|
|
292
|
-
children: t.label
|
|
293
|
-
}
|
|
294
|
-
)
|
|
295
|
-
]
|
|
296
|
-
},
|
|
297
|
-
`${t.label}-${P}`
|
|
298
|
-
);
|
|
299
|
-
})
|
|
300
|
-
] })
|
|
301
|
-
}
|
|
302
|
-
),
|
|
303
|
-
_ && /* @__PURE__ */ y("div", { className: "dc:text-xs text-dc-warning dc:text-center dc:mt-1", children: [
|
|
304
|
-
"Data truncated to ",
|
|
305
|
-
C,
|
|
306
|
-
" groups (original: ",
|
|
307
|
-
n.length,
|
|
308
|
-
")"
|
|
309
|
-
] })
|
|
310
|
-
] });
|
|
311
|
-
} catch (i) {
|
|
312
|
-
return /* @__PURE__ */ e("div", { className: "dc:flex dc:flex-col dc:items-center dc:justify-center dc:w-full text-dc-error dc:p-4", style: { height: o }, children: /* @__PURE__ */ y("div", { className: "dc:text-center", children: [
|
|
313
|
-
/* @__PURE__ */ e("div", { className: "dc:text-sm dc:font-semibold dc:mb-1", children: "Box Plot Chart Error" }),
|
|
314
|
-
/* @__PURE__ */ e("div", { className: "dc:text-xs dc:mb-2", children: i instanceof Error ? i.message : "Unknown rendering error" }),
|
|
315
|
-
/* @__PURE__ */ e("div", { className: "dc:text-xs text-dc-text-muted", children: "Check the data and configuration" })
|
|
316
|
-
] }) });
|
|
317
|
-
}
|
|
318
|
-
});
|
|
319
|
-
export {
|
|
320
|
-
te as default
|
|
321
|
-
};
|
|
322
|
-
//# sourceMappingURL=chart-box-plot-CzMb00z_.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chart-box-plot-CzMb00z_.js","sources":["../../../src/client/components/charts/BoxPlotChart.tsx"],"sourcesContent":["import React, { useLayoutEffect, useMemo, useRef, useState } from 'react'\nimport { CHART_COLORS } from '../../utils/chartConstants'\nimport { formatAxisValue } from '../../utils/chartUtils'\nimport type { ChartProps } from '../../types'\n\nconst MAX_BOXES = 50\n\ninterface BoxStats {\n label: string\n min: number\n q1: number\n median: number\n q3: number\n max: number\n color: string\n}\n\nfunction parseNumeric(v: unknown): number | null {\n if (v === undefined || v === null) return null\n const n = typeof v === 'number' ? v : parseFloat(String(v))\n return isNaN(n) ? null : n\n}\n\nfunction buildFrom5Measures(\n row: Record<string, unknown>,\n minField: string,\n q1Field: string,\n medianField: string,\n q3Field: string,\n maxField: string,\n label: string,\n color: string\n): BoxStats | null {\n const min = parseNumeric(row[minField])\n const q1 = parseNumeric(row[q1Field])\n const median = parseNumeric(row[medianField])\n const q3 = parseNumeric(row[q3Field])\n const max = parseNumeric(row[maxField])\n if (min === null || q1 === null || median === null || q3 === null || max === null) return null\n return { label, min, q1, median, q3, max, color }\n}\n\n/** Build approximate box stats assuming normality: Q1/Q3 at ±1σ, whiskers at ±2σ */\nfunction buildFrom3Measures(\n row: Record<string, unknown>,\n avgField: string,\n stddevField: string,\n medianField: string,\n label: string,\n color: string\n): BoxStats | null {\n const avg = parseNumeric(row[avgField])\n const sd = parseNumeric(row[stddevField])\n const median = parseNumeric(row[medianField])\n if (avg === null || sd === null || median === null) return null\n const absSd = Math.abs(sd)\n return {\n label,\n min: avg - 2 * absSd,\n q1: avg - absSd,\n median,\n q3: avg + absSd,\n max: avg + 2 * absSd,\n color,\n }\n}\n\nfunction BoxElement({\n x,\n boxWidth,\n minY,\n q1Y,\n medianY,\n q3Y,\n maxY,\n color,\n label,\n}: {\n x: number\n boxWidth: number\n minY: number\n q1Y: number\n medianY: number\n q3Y: number\n maxY: number\n color: string\n label: string\n}) {\n const halfWidth = boxWidth / 2\n const whiskerX = x\n const capWidth = boxWidth * 0.4\n\n return (\n <g data-testid={`box-${label}`}>\n {/* Whisker line (min to max) */}\n <line x1={whiskerX} y1={minY} x2={whiskerX} y2={maxY} stroke={color} strokeWidth={1.5} />\n {/* Min cap */}\n <line\n x1={whiskerX - capWidth / 2}\n y1={minY}\n x2={whiskerX + capWidth / 2}\n y2={minY}\n stroke={color}\n strokeWidth={1.5}\n />\n {/* Max cap */}\n <line\n x1={whiskerX - capWidth / 2}\n y1={maxY}\n x2={whiskerX + capWidth / 2}\n y2={maxY}\n stroke={color}\n strokeWidth={1.5}\n />\n {/* IQR Box (Q1 to Q3) */}\n <rect\n x={whiskerX - halfWidth}\n y={Math.min(q1Y, q3Y)}\n width={boxWidth}\n height={Math.abs(q3Y - q1Y) || 2}\n fill={color}\n fillOpacity={0.3}\n stroke={color}\n strokeWidth={1.5}\n />\n {/* Median line */}\n <line\n x1={whiskerX - halfWidth}\n y1={medianY}\n x2={whiskerX + halfWidth}\n y2={medianY}\n stroke={color}\n strokeWidth={2.5}\n data-testid={`median-${label}`}\n />\n </g>\n )\n}\n\nfunction YAxis({\n scale,\n domainMin,\n domainMax,\n width,\n tickCount = 5,\n format,\n}: {\n scale: (v: number) => number\n domainMin: number\n domainMax: number\n width: number\n tickCount?: number\n format?: (v: number) => string\n}) {\n const ticks = useMemo(() => {\n const range = domainMax - domainMin\n if (range === 0) return [domainMin]\n const step = range / (tickCount - 1)\n return Array.from({ length: tickCount }, (_, i) => domainMin + i * step)\n }, [domainMin, domainMax, tickCount])\n\n return (\n <g data-testid=\"y-axis\">\n {ticks.map((tick, i) => (\n <g key={i} transform={`translate(0, ${scale(tick)})`}>\n <line x1={0} x2={-6} stroke=\"currentColor\" strokeWidth={1} />\n <text\n x={-10}\n textAnchor=\"end\"\n dominantBaseline=\"middle\"\n fontSize={11}\n fill=\"currentColor\"\n className=\"text-dc-text-secondary\"\n >\n {format ? format(tick) : tick.toLocaleString()}\n </text>\n <line x1={0} x2={width} stroke=\"currentColor\" strokeOpacity={0.1} strokeWidth={1} />\n </g>\n ))}\n <line y1={scale(ticks[0])} y2={scale(ticks[ticks.length - 1])} stroke=\"currentColor\" strokeWidth={1} />\n </g>\n )\n}\n\nconst BoxPlotChart = React.memo(function BoxPlotChart({\n data,\n chartConfig,\n displayConfig = {},\n height = '100%',\n colorPalette,\n onDataPointClick,\n drillEnabled,\n}: ChartProps) {\n const containerRef = useRef<HTMLDivElement>(null)\n const [dimensions, setDimensions] = useState({ width: 0, height: 0 })\n\n useLayoutEffect(() => {\n const el = containerRef.current\n if (!el) return\n const observer = new ResizeObserver((entries) => {\n for (const entry of entries) {\n const { width, height: h } = entry.contentRect\n if (width > 0 && h > 0) setDimensions({ width, height: h })\n }\n })\n observer.observe(el)\n const rect = el.getBoundingClientRect()\n if (rect.width > 0 && rect.height > 0) setDimensions({ width: rect.width, height: rect.height })\n return () => observer.disconnect()\n }, [])\n\n const yAxisFormat = displayConfig?.leftYAxisFormat\n\n const { xField, mode, fields, configError } = useMemo(() => {\n const xField = Array.isArray(chartConfig?.xAxis)\n ? chartConfig.xAxis[0]\n : chartConfig?.xAxis ?? chartConfig?.x\n\n const yAxisFields: string[] = Array.isArray(chartConfig?.yAxis)\n ? chartConfig.yAxis\n : []\n\n if (!xField || yAxisFields.length === 0) {\n return {\n xField,\n mode: 'none' as const,\n fields: {},\n configError: 'BoxPlot requires an X-Axis dimension and at least one measure in Y-Axis',\n }\n }\n\n // 5-measure mode: yAxis = [min, q1, median, q3, max]\n if (yAxisFields.length >= 5) {\n return {\n xField,\n mode: '5measure' as const,\n fields: {\n minField: yAxisFields[0],\n q1Field: yAxisFields[1],\n medianField: yAxisFields[2],\n q3Field: yAxisFields[3],\n maxField: yAxisFields[4],\n },\n configError: null,\n }\n }\n\n // 3-measure mode: yAxis = [avg, stddev, median]\n if (yAxisFields.length >= 3) {\n return {\n xField,\n mode: '3measure' as const,\n fields: {\n avgField: yAxisFields[0],\n stddevField: yAxisFields[1],\n medianField: yAxisFields[2],\n },\n configError: null,\n }\n }\n\n if (yAxisFields.length === 2) {\n return {\n xField,\n mode: 'none' as const,\n fields: {},\n configError: 'BoxPlot requires 1 measure (auto), 3 (avg/stddev/median), or 5 (min/q1/median/q3/max)',\n }\n }\n\n // Auto mode: use yAxis[0] as the value field (treated as median/value)\n return {\n xField,\n mode: 'auto' as const,\n fields: { valueField: yAxisFields[0] },\n configError: null,\n }\n }, [chartConfig])\n\n const boxes: BoxStats[] = useMemo(() => {\n if (configError || !data || data.length === 0 || mode === 'none') return []\n const rows = (data as Record<string, unknown>[]).slice(0, MAX_BOXES)\n const palette = colorPalette?.colors ?? CHART_COLORS\n\n const results: BoxStats[] = []\n for (let i = 0; i < rows.length; i++) {\n const row = rows[i]\n const label = xField ? String(row[xField] ?? `Row ${i + 1}`) : `Row ${i + 1}`\n const color = palette[i % palette.length]\n\n let box: BoxStats | null = null\n if (mode === '5measure') {\n box = buildFrom5Measures(\n row,\n fields.minField!,\n fields.q1Field!,\n fields.medianField!,\n fields.q3Field!,\n fields.maxField!,\n label,\n color\n )\n } else if (mode === '3measure') {\n box = buildFrom3Measures(row, fields.avgField!, fields.stddevField!, fields.medianField!, label, color)\n } else {\n // Auto: use value as median, build minimal box (value ± 0)\n const v = parseNumeric(row[fields.valueField!])\n if (v !== null) {\n box = { label, min: v, q1: v, median: v, q3: v, max: v, color }\n }\n }\n if (box) results.push(box)\n }\n return results\n }, [data, xField, mode, fields, colorPalette, configError])\n\n if (!data || data.length === 0) {\n return (\n <div className=\"dc:flex dc:items-center dc:justify-center dc:w-full text-dc-text-muted\" style={{ height }}>\n <div className=\"dc:text-center\">\n <div className=\"dc:text-sm dc:font-semibold dc:mb-1\">No data available</div>\n <div className=\"dc:text-xs text-dc-text-secondary\">No data points to display in box plot chart</div>\n </div>\n </div>\n )\n }\n\n if (configError) {\n return (\n <div className=\"dc:flex dc:items-center dc:justify-center dc:w-full text-dc-warning\" style={{ height }}>\n <div className=\"dc:text-center\">\n <div className=\"dc:text-sm dc:font-semibold dc:mb-1\">Configuration Error</div>\n <div className=\"dc:text-xs\">{configError}</div>\n </div>\n </div>\n )\n }\n\n if (boxes.length === 0) {\n return (\n <div className=\"dc:flex dc:items-center dc:justify-center dc:w-full text-dc-text-muted\" style={{ height }}>\n <div className=\"dc:text-center\">\n <div className=\"dc:text-sm dc:font-semibold dc:mb-1\">No valid data</div>\n <div className=\"dc:text-xs text-dc-text-secondary\">\n Could not compute box plot statistics from the provided data\n </div>\n </div>\n </div>\n )\n }\n\n try {\n const margin = { top: 20, right: 20, bottom: 60, left: 60 }\n const containerWidth = dimensions.width || 600\n const containerHeight = typeof height === 'number' ? height : (dimensions.height || 400)\n const innerWidth = Math.max(containerWidth - margin.left - margin.right, 50)\n const innerHeight = Math.max(containerHeight - margin.top - margin.bottom, 50)\n\n const allValues = boxes.flatMap((b) => [b.min, b.max])\n const rawMin = Math.min(...allValues)\n const rawMax = Math.max(...allValues)\n const padding = (rawMax - rawMin) * 0.1 || 1\n const domainMin = rawMin - padding\n const domainMax = rawMax + padding\n\n const domainRange = domainMax - domainMin\n const yScale = (v: number) =>\n domainRange === 0 ? innerHeight / 2 : innerHeight - ((v - domainMin) / domainRange) * innerHeight\n\n const boxSpacing = innerWidth / boxes.length\n const boxWidth = Math.min(boxSpacing * 0.6, 40)\n\n const isTruncated = (data as unknown[]).length > MAX_BOXES\n\n return (\n <div ref={containerRef} className=\"dc:relative dc:w-full\" style={{ height }}>\n <svg\n width=\"100%\"\n height={isTruncated ? `calc(100% - 20px)` : '100%'}\n viewBox={`0 0 ${containerWidth} ${typeof containerHeight === 'number' ? containerHeight : 400}`}\n preserveAspectRatio=\"none\"\n data-testid=\"boxplot-svg\"\n >\n <g transform={`translate(${margin.left}, ${margin.top})`}>\n <YAxis\n scale={yScale}\n domainMin={domainMin}\n domainMax={domainMax}\n width={innerWidth}\n tickCount={5}\n format={yAxisFormat ? (v) => formatAxisValue(v, yAxisFormat) : undefined}\n />\n\n {boxes.map((box, i) => {\n const cx = boxSpacing * i + boxSpacing / 2\n return (\n <g\n key={`${box.label}-${i}`}\n onClick={(event: React.MouseEvent) => {\n if (onDataPointClick && drillEnabled) {\n onDataPointClick({\n dataPoint: { ...box },\n clickedField: xField ?? '',\n xValue: box.label,\n position: { x: event.clientX, y: event.clientY },\n nativeEvent: event,\n })\n }\n }}\n cursor={drillEnabled ? 'pointer' : undefined}\n >\n <title>{`${box.label}: min=${box.min}, Q1=${box.q1}, median=${box.median}, Q3=${box.q3}, max=${box.max}`}</title>\n <BoxElement\n x={cx}\n boxWidth={boxWidth}\n minY={yScale(box.min)}\n q1Y={yScale(box.q1)}\n medianY={yScale(box.median)}\n q3Y={yScale(box.q3)}\n maxY={yScale(box.max)}\n color={box.color}\n label={box.label}\n />\n <text\n x={cx}\n y={innerHeight + 20}\n textAnchor=\"middle\"\n fontSize={11}\n fill=\"currentColor\"\n className=\"text-dc-text-secondary\"\n data-testid={`x-label-${box.label}`}\n >\n {box.label}\n </text>\n </g>\n )\n })}\n </g>\n </svg>\n {isTruncated && (\n <div className=\"dc:text-xs text-dc-warning dc:text-center dc:mt-1\">\n Data truncated to {MAX_BOXES} groups (original: {(data as unknown[]).length})\n </div>\n )}\n </div>\n )\n } catch (error) {\n return (\n <div className=\"dc:flex dc:flex-col dc:items-center dc:justify-center dc:w-full text-dc-error dc:p-4\" style={{ height }}>\n <div className=\"dc:text-center\">\n <div className=\"dc:text-sm dc:font-semibold dc:mb-1\">Box Plot Chart Error</div>\n <div className=\"dc:text-xs dc:mb-2\">{error instanceof Error ? error.message : 'Unknown rendering error'}</div>\n <div className=\"dc:text-xs text-dc-text-muted\">Check the data and configuration</div>\n </div>\n </div>\n )\n }\n})\n\nexport default BoxPlotChart\n"],"names":["MAX_BOXES","parseNumeric","v","buildFrom5Measures","row","minField","q1Field","medianField","q3Field","maxField","label","color","min","q1","median","q3","max","buildFrom3Measures","avgField","stddevField","avg","sd","absSd","BoxElement","x","boxWidth","minY","q1Y","medianY","q3Y","maxY","halfWidth","whiskerX","capWidth","jsxs","jsx","YAxis","scale","domainMin","domainMax","width","tickCount","format","ticks","useMemo","range","step","_","i","tick","BoxPlotChart","React","data","chartConfig","displayConfig","height","colorPalette","onDataPointClick","drillEnabled","containerRef","useRef","dimensions","setDimensions","useState","useLayoutEffect","el","observer","entries","entry","h","rect","yAxisFormat","xField","mode","fields","configError","yAxisFields","boxes","rows","palette","CHART_COLORS","results","box","margin","containerWidth","containerHeight","innerWidth","innerHeight","allValues","b","rawMin","rawMax","padding","domainRange","yScale","boxSpacing","isTruncated","formatAxisValue","cx","event","error"],"mappings":"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"}
|
|
@@ -1,249 +0,0 @@
|
|
|
1
|
-
import { jsx as y, jsxs as te } from "react/jsx-runtime";
|
|
2
|
-
import Ae, { useSyncExternalStore as Fe, useCallback as Se, useRef as ne, useState as oe, useMemo as we, useLayoutEffect as ve, useEffect as ce } from "react";
|
|
3
|
-
import { select as D, scaleLinear as de, extent as ue, scaleSqrt as ze, max as Te, scaleQuantize as $e, scaleOrdinal as me, axisBottom as xe, axisLeft as fe } from "d3";
|
|
4
|
-
import { u as Ne, g as ke, d as ye, i as Ye, e as he, C as pe, h as ge, c as se, f as N } from "./charts-core-BUUO36OM.js";
|
|
5
|
-
import { g as be, s as Re, w as Ve } from "./theme-Dp3hFed1.js";
|
|
6
|
-
const H = {
|
|
7
|
-
listeners: /* @__PURE__ */ new Set(),
|
|
8
|
-
subscribe(S) {
|
|
9
|
-
return this.listeners.add(S), () => this.listeners.delete(S);
|
|
10
|
-
},
|
|
11
|
-
notify() {
|
|
12
|
-
this.listeners.forEach((S) => S());
|
|
13
|
-
}
|
|
14
|
-
};
|
|
15
|
-
Ve(() => {
|
|
16
|
-
H.notify();
|
|
17
|
-
});
|
|
18
|
-
function Be() {
|
|
19
|
-
const S = Fe(
|
|
20
|
-
H.subscribe.bind(H),
|
|
21
|
-
be,
|
|
22
|
-
// Client-side snapshot
|
|
23
|
-
be
|
|
24
|
-
// Server-side snapshot (SSR)
|
|
25
|
-
), p = Se((r) => {
|
|
26
|
-
Re(r), H.notify();
|
|
27
|
-
}, []);
|
|
28
|
-
return { theme: S, setTheme: p };
|
|
29
|
-
}
|
|
30
|
-
const Le = Ae.memo(function({
|
|
31
|
-
data: p,
|
|
32
|
-
chartConfig: r,
|
|
33
|
-
displayConfig: i = {},
|
|
34
|
-
queryObject: E,
|
|
35
|
-
height: W = "100%",
|
|
36
|
-
colorPalette: M
|
|
37
|
-
}) {
|
|
38
|
-
const O = ne(null), w = ne(null), [k, j] = oe({ width: 0, height: 0 }), [Y, q] = oe(!1), { theme: re } = Be(), g = Ne(), s = we(() => ({
|
|
39
|
-
showLegend: i?.showLegend ?? !0,
|
|
40
|
-
showGrid: i?.showGrid ?? !0,
|
|
41
|
-
showTooltip: i?.showTooltip ?? !0,
|
|
42
|
-
minBubbleSize: i?.minBubbleSize ?? 5,
|
|
43
|
-
maxBubbleSize: i?.maxBubbleSize ?? 50,
|
|
44
|
-
bubbleOpacity: i?.bubbleOpacity ?? 0.7,
|
|
45
|
-
xAxisFormat: i?.xAxisFormat,
|
|
46
|
-
leftYAxisFormat: i?.leftYAxisFormat
|
|
47
|
-
}), [
|
|
48
|
-
i?.showLegend,
|
|
49
|
-
i?.showGrid,
|
|
50
|
-
i?.showTooltip,
|
|
51
|
-
i?.minBubbleSize,
|
|
52
|
-
i?.maxBubbleSize,
|
|
53
|
-
i?.bubbleOpacity,
|
|
54
|
-
i?.xAxisFormat,
|
|
55
|
-
i?.leftYAxisFormat
|
|
56
|
-
]);
|
|
57
|
-
return ve(() => {
|
|
58
|
-
let a = 0;
|
|
59
|
-
const d = 10;
|
|
60
|
-
let u, m;
|
|
61
|
-
const n = () => {
|
|
62
|
-
if (w.current) {
|
|
63
|
-
const { width: b, height: o } = w.current.getBoundingClientRect();
|
|
64
|
-
if (b > 0 && o > 0)
|
|
65
|
-
return j({ width: b, height: o }), q(!0), !0;
|
|
66
|
-
}
|
|
67
|
-
return !1;
|
|
68
|
-
};
|
|
69
|
-
if (!n() && a < d) {
|
|
70
|
-
const b = () => {
|
|
71
|
-
!n() && a < d && (a++, m = setTimeout(() => {
|
|
72
|
-
u = requestAnimationFrame(b);
|
|
73
|
-
}, 50 * a));
|
|
74
|
-
};
|
|
75
|
-
u = requestAnimationFrame(b);
|
|
76
|
-
}
|
|
77
|
-
return () => {
|
|
78
|
-
u && cancelAnimationFrame(u), m && clearTimeout(m);
|
|
79
|
-
};
|
|
80
|
-
}, []), ce(() => {
|
|
81
|
-
let a = null;
|
|
82
|
-
const d = () => {
|
|
83
|
-
if (w.current) {
|
|
84
|
-
const { width: u, height: m } = w.current.getBoundingClientRect();
|
|
85
|
-
u > 0 && m > 0 && (j({ width: u, height: m }), Y || q(!0));
|
|
86
|
-
}
|
|
87
|
-
};
|
|
88
|
-
return w.current && (a = new ResizeObserver((u) => {
|
|
89
|
-
for (const m of u) {
|
|
90
|
-
const { width: n, height: v } = m.contentRect;
|
|
91
|
-
n > 0 && v > 0 && (j({ width: n, height: v }), Y || q(!0));
|
|
92
|
-
}
|
|
93
|
-
}), a.observe(w.current), d()), window.addEventListener("resize", d), () => {
|
|
94
|
-
a && a.disconnect(), window.removeEventListener("resize", d);
|
|
95
|
-
};
|
|
96
|
-
}, [Y]), ce(() => {
|
|
97
|
-
if (!p || p.length === 0 || !O.current || !Y || k.width === 0 || (D(O.current).selectAll("*").remove(), !r?.xAxis || !r?.yAxis || !r?.series))
|
|
98
|
-
return;
|
|
99
|
-
const a = Array.isArray(r.xAxis) ? r.xAxis[0] : r.xAxis, d = Array.isArray(r.yAxis) ? r.yAxis[0] : r.yAxis, u = Array.isArray(r.series) ? r.series[0] : r.series, m = Array.isArray(r.sizeField) ? r.sizeField[0] : r.sizeField || d, n = Array.isArray(r.colorField) ? r.colorField[0] : r.colorField;
|
|
100
|
-
if (!a || !d || !u || !m)
|
|
101
|
-
return;
|
|
102
|
-
const v = ke(E, a), b = E?.timeDimensions?.some(
|
|
103
|
-
(e) => e.dimension === a
|
|
104
|
-
) || !1, o = p.map((e) => {
|
|
105
|
-
const t = e[a];
|
|
106
|
-
let l, x;
|
|
107
|
-
if (b && t) {
|
|
108
|
-
const c = String(t);
|
|
109
|
-
let h;
|
|
110
|
-
if (c.match(/^\d{4}-\d{2}-\d{2}[T ]/)) {
|
|
111
|
-
let F = c;
|
|
112
|
-
c.includes(" ") && (F = c.replace(" ", "T").replace("+00", "Z").replace(/\+\d{2}:\d{2}$/, "Z")), !F.endsWith("Z") && !F.includes("+") && (F = F + "Z"), h = new Date(F);
|
|
113
|
-
} else
|
|
114
|
-
h = new Date(c);
|
|
115
|
-
l = isNaN(h.getTime()) ? parseFloat(c) : h.getTime(), x = ye(t, v);
|
|
116
|
-
} else {
|
|
117
|
-
const c = ye(t, v) || t;
|
|
118
|
-
l = typeof c == "string" ? parseFloat(c) : c, x = String(c);
|
|
119
|
-
}
|
|
120
|
-
const f = he(e[d]), $ = he(e[m]), B = e[u];
|
|
121
|
-
return {
|
|
122
|
-
x: l,
|
|
123
|
-
xLabel: x,
|
|
124
|
-
// Store formatted label for tooltip display
|
|
125
|
-
y: f,
|
|
126
|
-
// Type assertion: filter below ensures this is never null
|
|
127
|
-
size: $ !== null ? Math.abs($) : 0,
|
|
128
|
-
// Ensure positive size
|
|
129
|
-
color: n ? e[n] : B,
|
|
130
|
-
series: B,
|
|
131
|
-
label: `${B || "Unknown"}`,
|
|
132
|
-
isValid: Ye(l) && f !== null && $ !== null && $ > 0
|
|
133
|
-
};
|
|
134
|
-
}).filter((e) => e.isValid && e.size > 0);
|
|
135
|
-
if (o.length === 0) return;
|
|
136
|
-
const R = {
|
|
137
|
-
...pe,
|
|
138
|
-
left: pe.left + 30,
|
|
139
|
-
// Add extra 30px left margin for Y-axis label
|
|
140
|
-
bottom: s.showLegend && n ? 100 : 40
|
|
141
|
-
// Add extra space for legend
|
|
142
|
-
}, L = k.width - R.left - R.right, z = k.height - R.top - R.bottom, le = D(O.current).attr("width", k.width).attr("height", k.height), T = le.append("g").attr("transform", `translate(${R.left},${R.top})`), I = de().domain(ue(o, (e) => e.x)).range([0, L]).nice(), C = de().domain(ue(o, (e) => e.y)).range([z, 0]).nice(), Z = ze().domain([0, Te(o, (e) => e.size)]).range([s.minBubbleSize, s.maxBubbleSize]);
|
|
143
|
-
let V, U = !1, X = [];
|
|
144
|
-
if (n && o.length > 0) {
|
|
145
|
-
const e = o.map((t) => {
|
|
146
|
-
const l = t.color;
|
|
147
|
-
return typeof l == "string" ? parseFloat(l) : l;
|
|
148
|
-
}).filter((t) => !isNaN(t));
|
|
149
|
-
if (U = e.length === o.length && e.every((t) => typeof t == "number"), U) {
|
|
150
|
-
const t = Math.min(...e), l = Math.max(...e);
|
|
151
|
-
V = $e().domain([t, l]).range(M?.gradient || ge);
|
|
152
|
-
} else
|
|
153
|
-
X = [...new Set(o.map((t) => String(t.color)))], V = me().domain(X).range(M?.colors || se);
|
|
154
|
-
} else
|
|
155
|
-
V = me().domain(["default"]).range([se[0]]);
|
|
156
|
-
const Q = (e, t) => getComputedStyle(document.documentElement).getPropertyValue(e).trim() || t, ie = re !== "light", A = ie ? Q("--dc-text-muted", "#cbd5e1") : Q("--dc-text-secondary", "#374151"), G = ie ? Q("--dc-border", "#475569") : "#9ca3af";
|
|
157
|
-
if (s.showGrid) {
|
|
158
|
-
const e = T.append("g").attr("class", "grid").attr("transform", `translate(0,${z})`).call(
|
|
159
|
-
xe(I).tickSize(-z).tickFormat(() => "")
|
|
160
|
-
);
|
|
161
|
-
e.selectAll("line").style("stroke", G).style("stroke-dasharray", "3,3").style("opacity", 0.3), e.select(".domain").style("stroke", "none");
|
|
162
|
-
const t = T.append("g").attr("class", "grid").call(
|
|
163
|
-
fe(C).tickSize(-L).tickFormat(() => "")
|
|
164
|
-
);
|
|
165
|
-
t.selectAll("line").style("stroke", G).style("stroke-dasharray", "3,3").style("opacity", 0.3), t.select(".domain").style("stroke", "none");
|
|
166
|
-
}
|
|
167
|
-
const J = xe(I);
|
|
168
|
-
b ? J.tickFormat((e) => {
|
|
169
|
-
const t = new Date(e);
|
|
170
|
-
if (isNaN(t.getTime())) return String(e);
|
|
171
|
-
switch (v?.toLowerCase()) {
|
|
172
|
-
case "year":
|
|
173
|
-
return String(t.getUTCFullYear());
|
|
174
|
-
case "quarter": {
|
|
175
|
-
const l = Math.floor(t.getUTCMonth() / 3) + 1;
|
|
176
|
-
return `${t.getUTCFullYear()}-Q${l}`;
|
|
177
|
-
}
|
|
178
|
-
case "month":
|
|
179
|
-
return `${t.getUTCFullYear()}-${String(t.getUTCMonth() + 1).padStart(2, "0")}`;
|
|
180
|
-
case "week":
|
|
181
|
-
case "day":
|
|
182
|
-
return `${t.getUTCFullYear()}-${String(t.getUTCMonth() + 1).padStart(2, "0")}-${String(t.getUTCDate()).padStart(2, "0")}`;
|
|
183
|
-
case "hour":
|
|
184
|
-
return `${String(t.getUTCMonth() + 1).padStart(2, "0")}-${String(t.getUTCDate()).padStart(2, "0")} ${String(t.getUTCHours()).padStart(2, "0")}:00`;
|
|
185
|
-
default:
|
|
186
|
-
return `${t.getUTCFullYear()}-${String(t.getUTCMonth() + 1).padStart(2, "0")}`;
|
|
187
|
-
}
|
|
188
|
-
}) : s.xAxisFormat && J.tickFormat((e) => N(e, s.xAxisFormat));
|
|
189
|
-
const K = T.append("g").attr("transform", `translate(0,${z})`).call(J);
|
|
190
|
-
K.selectAll("text").style("fill", A), K.selectAll("line, path").style("stroke", G), K.append("text").attr("x", L / 2).attr("y", 35).attr("fill", A).style("text-anchor", "middle").style("font-size", "12px").text(s.xAxisFormat?.label || g(a));
|
|
191
|
-
const ae = fe(C);
|
|
192
|
-
s.leftYAxisFormat && ae.tickFormat((e) => N(e, s.leftYAxisFormat));
|
|
193
|
-
const P = T.append("g").call(ae);
|
|
194
|
-
P.selectAll("text").style("fill", A), P.selectAll("line, path").style("stroke", G), P.append("text").attr("transform", "rotate(-90)").attr("y", -35).attr("x", -z / 2).attr("fill", A).style("text-anchor", "middle").style("font-size", "12px").text(s.leftYAxisFormat?.label || g(d));
|
|
195
|
-
const _ = D("body").append("div").attr("class", "bubble-chart-tooltip").style("position", "absolute").style("padding", "8px").style("background", "rgba(0, 0, 0, 0.8)").style("color", "white").style("border-radius", "4px").style("font-size", "12px").style("pointer-events", "none").style("opacity", 0).style("z-index", 1e3), ee = T.selectAll(".bubble").data(o).enter().append("circle").attr("class", "bubble").attr("cx", (e) => I(e.x)).attr("cy", (e) => C(e.y)).attr("r", (e) => Z(e.size)).style("fill", (e) => n && e.color !== void 0 ? V(U ? e.color : String(e.color)) : se[0]).style("opacity", s.bubbleOpacity).style("stroke", "#fff").style("stroke-width", 1).style("cursor", "pointer");
|
|
196
|
-
if (s.showTooltip && ee.on("mouseover", function(e, t) {
|
|
197
|
-
D(this).transition().duration(200).style("opacity", 1).attr("r", Z(t.size) * 1.1);
|
|
198
|
-
const l = [
|
|
199
|
-
`<strong>${t.series || "Unknown"}</strong>`,
|
|
200
|
-
`${g(a)}: ${t.xLabel || (s.xAxisFormat ? N(t.x, s.xAxisFormat) : t.x)}`,
|
|
201
|
-
`${g(d)}: ${s.leftYAxisFormat ? N(t.y, s.leftYAxisFormat) : t.y}`,
|
|
202
|
-
`${g(m)}: ${s.leftYAxisFormat ? N(t.size, s.leftYAxisFormat) : t.size}`,
|
|
203
|
-
n && t.color ? `${g(n)}: ${t.color}` : ""
|
|
204
|
-
].filter(Boolean).join("<br>");
|
|
205
|
-
_.html(l).style("left", e.pageX + 10 + "px").style("top", e.pageY - 10 + "px").transition().duration(200).style("opacity", 1);
|
|
206
|
-
}).on("mousemove", function(e) {
|
|
207
|
-
_.style("left", e.pageX + 10 + "px").style("top", e.pageY - 10 + "px");
|
|
208
|
-
}).on("mouseout", function(e, t) {
|
|
209
|
-
D(this).transition().duration(200).style("opacity", s.bubbleOpacity).attr("r", Z(t.size)), _.transition().duration(200).style("opacity", 0);
|
|
210
|
-
}), s.showLegend && n)
|
|
211
|
-
if (U) {
|
|
212
|
-
const l = Math.min(...o.map((h) => h.color)), x = Math.max(...o.map((h) => h.color)), f = T.append("g").attr("class", "color-legend").attr("transform", `translate(${L / 2 - 200 / 2}, ${z + 60})`), B = le.append("defs").append("linearGradient").attr("id", "color-scale-gradient").attr("x1", "0%").attr("y1", "0%").attr("x2", "100%").attr("y2", "0%"), c = M?.gradient || ge;
|
|
213
|
-
c.forEach((h, F) => {
|
|
214
|
-
B.append("stop").attr("offset", `${F / (c.length - 1) * 100}%`).attr("stop-color", h);
|
|
215
|
-
}), f.append("rect").attr("width", 200).attr("height", 20).style("fill", "url(#color-scale-gradient)").style("stroke", "#ccc").style("stroke-width", 1), f.append("text").attr("x", 0).attr("y", 35).attr("text-anchor", "start").style("font-size", "11px").style("fill", A).text(s.leftYAxisFormat ? N(l, s.leftYAxisFormat) : l.toFixed(2)), f.append("text").attr("x", 200).attr("y", 35).attr("text-anchor", "end").style("font-size", "11px").style("fill", A).text(s.leftYAxisFormat ? N(x, s.leftYAxisFormat) : x.toFixed(2)), f.append("text").attr("x", 200 / 2).attr("y", -5).attr("text-anchor", "middle").style("font-size", "12px").style("font-weight", "bold").style("fill", A).text(g(n));
|
|
216
|
-
} else {
|
|
217
|
-
const e = X;
|
|
218
|
-
if (e.length > 0) {
|
|
219
|
-
const l = T.append("g").attr("class", "legend").attr("transform", `translate(${L / 2 - e.length * 80 / 2}, ${z + 60})`).selectAll(".legend-item").data(e).enter().append("g").attr("class", "legend-item").attr("transform", (x, f) => `translate(${f * 80}, 0)`).style("cursor", "pointer");
|
|
220
|
-
l.append("circle").attr("cx", 5).attr("cy", 5).attr("r", 5).style("fill", (x) => V(x)).style("opacity", s.bubbleOpacity), l.append("text").attr("x", 15).attr("y", 5).attr("dy", ".35em").style("font-size", "11px").style("fill", A).text((x) => String(x)), l.on("mouseover", function(x, f) {
|
|
221
|
-
ee.transition().duration(200).style("opacity", ($) => n && String($.color) === f ? 1 : 0.2);
|
|
222
|
-
}).on("mouseout", function() {
|
|
223
|
-
ee.transition().duration(200).style("opacity", s.bubbleOpacity);
|
|
224
|
-
});
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
return () => {
|
|
228
|
-
_.remove();
|
|
229
|
-
};
|
|
230
|
-
}, [p, r, s, E, k, Y, M, re, g]), !p || p.length === 0 ? /* @__PURE__ */ y("div", { className: "dc:flex dc:items-center dc:justify-center dc:w-full text-dc-text-muted", style: { height: W }, children: /* @__PURE__ */ te("div", { className: "dc:text-center", children: [
|
|
231
|
-
/* @__PURE__ */ y("div", { className: "dc:text-sm dc:font-semibold dc:mb-1", children: "No data available" }),
|
|
232
|
-
/* @__PURE__ */ y("div", { className: "dc:text-xs text-dc-text-secondary", children: "No data points to display in bubble chart" })
|
|
233
|
-
] }) }) : r?.xAxis && r?.yAxis && r?.series ? /* @__PURE__ */ y("div", { className: "dc:w-full dc:flex-1 dc:flex dc:flex-col dc:relative", style: { height: W, minHeight: "250px", overflow: "hidden" }, children: /* @__PURE__ */ te("div", { ref: w, className: "dc:w-full dc:h-full dc:relative", children: [
|
|
234
|
-
/* @__PURE__ */ y("svg", { ref: O, className: "dc:w-full dc:h-full" }),
|
|
235
|
-
!Y && /* @__PURE__ */ y("div", { className: "dc:absolute dc:inset-0 dc:flex dc:items-center dc:justify-center", children: /* @__PURE__ */ y("div", { className: "text-dc-text-muted dc:text-sm", children: "Measuring chart dimensions..." }) })
|
|
236
|
-
] }) }) : /* @__PURE__ */ y("div", { className: "dc:flex dc:items-center dc:justify-center dc:w-full text-dc-warning", style: { height: W }, children: /* @__PURE__ */ te("div", { className: "dc:text-center", children: [
|
|
237
|
-
/* @__PURE__ */ y("div", { className: "dc:text-sm dc:font-semibold dc:mb-1", children: "Configuration Required" }),
|
|
238
|
-
/* @__PURE__ */ y("div", { className: "dc:text-xs", children: "Bubble chart requires xAxis, yAxis, series, and sizeField dimensions" }),
|
|
239
|
-
/* @__PURE__ */ y("div", { className: "dc:text-xs dc:mt-1", children: "Optional: colorField for bubble coloring" })
|
|
240
|
-
] }) });
|
|
241
|
-
}), He = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
242
|
-
__proto__: null,
|
|
243
|
-
default: Le
|
|
244
|
-
}, Symbol.toStringTag, { value: "Module" }));
|
|
245
|
-
export {
|
|
246
|
-
He as B,
|
|
247
|
-
Be as u
|
|
248
|
-
};
|
|
249
|
-
//# sourceMappingURL=chart-bubble-BF8Z52eW.js.map
|