drizzle-cube 0.3.13 → 0.3.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/dist/adapters/{compiler-DTOU8IsK.js → compiler-DdcGVWIl.js} +7429 -4165
  2. package/dist/adapters/compiler-mAJDpIQx.cjs +214 -0
  3. package/dist/adapters/express/index.cjs +1 -1
  4. package/dist/adapters/express/index.d.ts +1 -1
  5. package/dist/adapters/express/index.js +1 -1
  6. package/dist/adapters/fastify/index.cjs +1 -1
  7. package/dist/adapters/fastify/index.d.ts +1 -1
  8. package/dist/adapters/fastify/index.js +1 -1
  9. package/dist/adapters/hono/index.cjs +1 -1
  10. package/dist/adapters/hono/index.d.ts +1 -1
  11. package/dist/adapters/hono/index.js +1 -1
  12. package/dist/adapters/nextjs/index.cjs +1 -1
  13. package/dist/adapters/nextjs/index.d.ts +1 -1
  14. package/dist/adapters/nextjs/index.js +1 -1
  15. package/dist/adapters/utils.d.ts +29 -0
  16. package/dist/client/adapters/index.d.ts +2 -0
  17. package/dist/client/adapters/retentionModeAdapter.d.ts +3 -0
  18. package/dist/client/charts.js +12 -12
  19. package/dist/client/chunks/RetentionCombinedChart-CqMAkdcR.js +256 -0
  20. package/dist/client/chunks/RetentionCombinedChart-CqMAkdcR.js.map +1 -0
  21. package/dist/client/chunks/RetentionCombinedChart.config-C-ILIaEb.js +47 -0
  22. package/dist/client/chunks/RetentionCombinedChart.config-C-ILIaEb.js.map +1 -0
  23. package/dist/client/chunks/RetentionHeatmap-Bofadstm.js +178 -0
  24. package/dist/client/chunks/RetentionHeatmap-Bofadstm.js.map +1 -0
  25. package/dist/client/chunks/RetentionHeatmap.config-CIvhc-GT.js +28 -0
  26. package/dist/client/chunks/RetentionHeatmap.config-CIvhc-GT.js.map +1 -0
  27. package/dist/client/chunks/analysis-builder-D0MIKiKS.js +6939 -0
  28. package/dist/client/chunks/analysis-builder-D0MIKiKS.js.map +1 -0
  29. package/dist/client/chunks/analysis-builder-shared-gS0TDC6Y.js +2779 -0
  30. package/dist/client/chunks/analysis-builder-shared-gS0TDC6Y.js.map +1 -0
  31. package/dist/client/chunks/{chart-activity-grid-CuPARsr1.js → chart-activity-grid-B37W8fcE.js} +11 -11
  32. package/dist/client/chunks/{chart-activity-grid-CuPARsr1.js.map → chart-activity-grid-B37W8fcE.js.map} +1 -1
  33. package/dist/client/chunks/{chart-area-cPrJnhLj.js → chart-area-DZcxSVB1.js} +2 -2
  34. package/dist/client/chunks/{chart-area-cPrJnhLj.js.map → chart-area-DZcxSVB1.js.map} +1 -1
  35. package/dist/client/chunks/{chart-bar-D68HFPpa.js → chart-bar-BFAdRj-E.js} +2 -2
  36. package/dist/client/chunks/{chart-bar-D68HFPpa.js.map → chart-bar-BFAdRj-E.js.map} +1 -1
  37. package/dist/client/chunks/{chart-bubble-CquyYfNO.js → chart-bubble-eoCCbl3h.js} +2 -2
  38. package/dist/client/chunks/{chart-bubble-CquyYfNO.js.map → chart-bubble-eoCCbl3h.js.map} +1 -1
  39. package/dist/client/chunks/{chart-config-activity-grid-Bkvx0F-G.js → chart-config-activity-grid-BBSNCbkb.js} +2 -2
  40. package/dist/client/chunks/{chart-config-activity-grid-Bkvx0F-G.js.map → chart-config-activity-grid-BBSNCbkb.js.map} +1 -1
  41. package/dist/client/chunks/{chart-config-area-OApsRaYC.js → chart-config-area-CyyJOO2T.js} +2 -2
  42. package/dist/client/chunks/{chart-config-area-OApsRaYC.js.map → chart-config-area-CyyJOO2T.js.map} +1 -1
  43. package/dist/client/chunks/{chart-config-bar-Dy21oaIA.js → chart-config-bar-BJKGnfLt.js} +2 -2
  44. package/dist/client/chunks/{chart-config-bar-Dy21oaIA.js.map → chart-config-bar-BJKGnfLt.js.map} +1 -1
  45. package/dist/client/chunks/{chart-config-bubble-Chv0SoFm.js → chart-config-bubble-CuSsCHZ4.js} +2 -2
  46. package/dist/client/chunks/{chart-config-bubble-Chv0SoFm.js.map → chart-config-bubble-CuSsCHZ4.js.map} +1 -1
  47. package/dist/client/chunks/{chart-config-data-table-DTIdC35a.js → chart-config-data-table-BhgqwoqT.js} +2 -2
  48. package/dist/client/chunks/{chart-config-data-table-DTIdC35a.js.map → chart-config-data-table-BhgqwoqT.js.map} +1 -1
  49. package/dist/client/chunks/{chart-config-funnel-f17Livgr.js → chart-config-funnel-BlSQYng0.js} +4 -4
  50. package/dist/client/chunks/{chart-config-funnel-f17Livgr.js.map → chart-config-funnel-BlSQYng0.js.map} +1 -1
  51. package/dist/client/chunks/{chart-config-heat-map-DPhNICha.js → chart-config-heat-map-DHQGFZhX.js} +2 -2
  52. package/dist/client/chunks/{chart-config-heat-map-DPhNICha.js.map → chart-config-heat-map-DHQGFZhX.js.map} +1 -1
  53. package/dist/client/chunks/{chart-config-kpi-delta-CCl1d-St.js → chart-config-kpi-delta-yTA5ug_l.js} +2 -2
  54. package/dist/client/chunks/{chart-config-kpi-delta-CCl1d-St.js.map → chart-config-kpi-delta-yTA5ug_l.js.map} +1 -1
  55. package/dist/client/chunks/{chart-config-kpi-number-DkE3eSwH.js → chart-config-kpi-number-nVAwDXzq.js} +2 -2
  56. package/dist/client/chunks/{chart-config-kpi-number-DkE3eSwH.js.map → chart-config-kpi-number-nVAwDXzq.js.map} +1 -1
  57. package/dist/client/chunks/{chart-config-kpi-text-BMbgdxZm.js → chart-config-kpi-text-DZjqsx-b.js} +2 -2
  58. package/dist/client/chunks/{chart-config-kpi-text-BMbgdxZm.js.map → chart-config-kpi-text-DZjqsx-b.js.map} +1 -1
  59. package/dist/client/chunks/{chart-config-line-BnLlRUQE.js → chart-config-line-DR0ThxZy.js} +2 -2
  60. package/dist/client/chunks/{chart-config-line-BnLlRUQE.js.map → chart-config-line-DR0ThxZy.js.map} +1 -1
  61. package/dist/client/chunks/{chart-config-markdown-DIaMFC0Z.js → chart-config-markdown-DZxdGNVQ.js} +2 -2
  62. package/dist/client/chunks/{chart-config-markdown-DIaMFC0Z.js.map → chart-config-markdown-DZxdGNVQ.js.map} +1 -1
  63. package/dist/client/chunks/{chart-config-pie-O9y_T0BQ.js → chart-config-pie-BM5lgH-w.js} +2 -2
  64. package/dist/client/chunks/{chart-config-pie-O9y_T0BQ.js.map → chart-config-pie-BM5lgH-w.js.map} +1 -1
  65. package/dist/client/chunks/{chart-config-radar-CXa0354h.js → chart-config-radar-BBAVIF0S.js} +2 -2
  66. package/dist/client/chunks/{chart-config-radar-CXa0354h.js.map → chart-config-radar-BBAVIF0S.js.map} +1 -1
  67. package/dist/client/chunks/{chart-config-radial-bar-BppJU8-Q.js → chart-config-radial-bar-CTwjDRnB.js} +2 -2
  68. package/dist/client/chunks/{chart-config-radial-bar-BppJU8-Q.js.map → chart-config-radial-bar-CTwjDRnB.js.map} +1 -1
  69. package/dist/client/chunks/{chart-config-sankey-BfBHgL4x.js → chart-config-sankey-CNAgsMQ4.js} +2 -2
  70. package/dist/client/chunks/{chart-config-sankey-BfBHgL4x.js.map → chart-config-sankey-CNAgsMQ4.js.map} +1 -1
  71. package/dist/client/chunks/{chart-config-scatter-BTt8a10R.js → chart-config-scatter-CWvN2E-X.js} +2 -2
  72. package/dist/client/chunks/{chart-config-scatter-BTt8a10R.js.map → chart-config-scatter-CWvN2E-X.js.map} +1 -1
  73. package/dist/client/chunks/{chart-config-sunburst-DNmQpIIx.js → chart-config-sunburst-W_SKwaj0.js} +4 -4
  74. package/dist/client/chunks/{chart-config-sunburst-DNmQpIIx.js.map → chart-config-sunburst-W_SKwaj0.js.map} +1 -1
  75. package/dist/client/chunks/{chart-config-tree-map-HVgG4oa0.js → chart-config-tree-map-CLmRvvMR.js} +2 -2
  76. package/dist/client/chunks/{chart-config-tree-map-HVgG4oa0.js.map → chart-config-tree-map-CLmRvvMR.js.map} +1 -1
  77. package/dist/client/chunks/{chart-data-table-D4WDqbM0.js → chart-data-table-kudRwZxJ.js} +4 -4
  78. package/dist/client/chunks/{chart-data-table-D4WDqbM0.js.map → chart-data-table-kudRwZxJ.js.map} +1 -1
  79. package/dist/client/chunks/{chart-funnel-Csdn4FbN.js → chart-funnel-CA0XJkfh.js} +2 -2
  80. package/dist/client/chunks/{chart-funnel-Csdn4FbN.js.map → chart-funnel-CA0XJkfh.js.map} +1 -1
  81. package/dist/client/chunks/{chart-heat-map-v1afxnjq.js → chart-heat-map-DUy9_pWM.js} +2 -2
  82. package/dist/client/chunks/{chart-heat-map-v1afxnjq.js.map → chart-heat-map-DUy9_pWM.js.map} +1 -1
  83. package/dist/client/chunks/chart-kpi-delta-MIGGCpkG.js +351 -0
  84. package/dist/client/chunks/chart-kpi-delta-MIGGCpkG.js.map +1 -0
  85. package/dist/client/chunks/chart-kpi-number-DM0Brd91.js +473 -0
  86. package/dist/client/chunks/chart-kpi-number-DM0Brd91.js.map +1 -0
  87. package/dist/client/chunks/{chart-kpi-text-CRp8QWYG.js → chart-kpi-text-BAb28V4X.js} +3 -3
  88. package/dist/client/chunks/{chart-kpi-text-CRp8QWYG.js.map → chart-kpi-text-BAb28V4X.js.map} +1 -1
  89. package/dist/client/chunks/{chart-line-DqqE7ky9.js → chart-line-e3h8sa1R.js} +5 -5
  90. package/dist/client/chunks/{chart-line-DqqE7ky9.js.map → chart-line-e3h8sa1R.js.map} +1 -1
  91. package/dist/client/chunks/{chart-pie-B5WBzIRH.js → chart-pie-CFoHYqDB.js} +2 -2
  92. package/dist/client/chunks/{chart-pie-B5WBzIRH.js.map → chart-pie-CFoHYqDB.js.map} +1 -1
  93. package/dist/client/chunks/{chart-radar-DL_dvhA-.js → chart-radar-CPPwkfxj.js} +2 -2
  94. package/dist/client/chunks/{chart-radar-DL_dvhA-.js.map → chart-radar-CPPwkfxj.js.map} +1 -1
  95. package/dist/client/chunks/{chart-radial-bar-DDRo6nz-.js → chart-radial-bar-BdEOM-P1.js} +2 -2
  96. package/dist/client/chunks/{chart-radial-bar-DDRo6nz-.js.map → chart-radial-bar-BdEOM-P1.js.map} +1 -1
  97. package/dist/client/chunks/{chart-sankey-C_bgIfg-.js → chart-sankey-Bbady-8g.js} +2 -2
  98. package/dist/client/chunks/{chart-sankey-C_bgIfg-.js.map → chart-sankey-Bbady-8g.js.map} +1 -1
  99. package/dist/client/chunks/{chart-scatter-DjmJRlK0.js → chart-scatter-JFu0Pv3a.js} +15 -15
  100. package/dist/client/chunks/{chart-scatter-DjmJRlK0.js.map → chart-scatter-JFu0Pv3a.js.map} +1 -1
  101. package/dist/client/chunks/{chart-sunburst-CbMEnaes.js → chart-sunburst-sayxze15.js} +2 -2
  102. package/dist/client/chunks/{chart-sunburst-CbMEnaes.js.map → chart-sunburst-sayxze15.js.map} +1 -1
  103. package/dist/client/chunks/{chart-tree-map-DEfJtJVC.js → chart-tree-map-Ks2xev8b.js} +30 -30
  104. package/dist/client/chunks/{chart-tree-map-DEfJtJVC.js.map → chart-tree-map-Ks2xev8b.js.map} +1 -1
  105. package/dist/client/chunks/chartConfigRegistry-BumUIPw4.js +44 -0
  106. package/dist/client/chunks/{chartConfigRegistry-CiOq-PqX.js.map → chartConfigRegistry-BumUIPw4.js.map} +1 -1
  107. package/dist/client/chunks/charts-_yZ9gBJU.js +230 -0
  108. package/dist/client/chunks/charts-_yZ9gBJU.js.map +1 -0
  109. package/dist/client/chunks/{charts-core-CXrhEEVF.js → charts-core-Bzu9PzMd.js} +10 -10
  110. package/dist/client/chunks/{charts-core-CXrhEEVF.js.map → charts-core-Bzu9PzMd.js.map} +1 -1
  111. package/dist/client/chunks/{charts-loader-BtsnUO4Q.js → charts-loader-cMtx4zHx.js} +30 -28
  112. package/dist/client/chunks/charts-loader-cMtx4zHx.js.map +1 -0
  113. package/dist/client/chunks/{components-BDrlf9Er.js → components-DQuPThfA.js} +3575 -3208
  114. package/dist/client/chunks/components-DQuPThfA.js.map +1 -0
  115. package/dist/client/chunks/{core-B8zw0qRf.js → core-DwOXVb87.js} +2 -2
  116. package/dist/client/chunks/{core-B8zw0qRf.js.map → core-DwOXVb87.js.map} +1 -1
  117. package/dist/client/chunks/hooks-DPRv1Xhb.js +150 -0
  118. package/dist/client/chunks/{hooks-B8Zw5PfL.js.map → hooks-DPRv1Xhb.js.map} +1 -1
  119. package/dist/client/chunks/{icons-NzFHtqeM.js → icons-DRreo6m8.js} +128 -112
  120. package/dist/client/chunks/{icons-NzFHtqeM.js.map → icons-DRreo6m8.js.map} +1 -1
  121. package/dist/client/chunks/{providers-CqCiJTEj.js → providers-BW8D7Wso.js} +2 -2
  122. package/dist/client/chunks/{providers-CqCiJTEj.js.map → providers-BW8D7Wso.js.map} +1 -1
  123. package/dist/client/chunks/retention-CzCo8262.js +120 -0
  124. package/dist/client/chunks/retention-CzCo8262.js.map +1 -0
  125. package/dist/client/chunks/{useDirtyStateTracking-C_mitVwh.js → useDirtyStateTracking-Yu_qQXb-.js} +101 -99
  126. package/dist/client/chunks/useDirtyStateTracking-Yu_qQXb-.js.map +1 -0
  127. package/dist/client/chunks/{vendor-DzzxS7Ay.js → vendor-BSkQZgtm.js} +548 -540
  128. package/dist/client/chunks/vendor-BSkQZgtm.js.map +1 -0
  129. package/dist/client/components/AnalysisBuilder/AnalysisTypeSelector.d.ts +3 -1
  130. package/dist/client/components/AnalysisBuilder/RetentionConfigPanel.d.ts +36 -0
  131. package/dist/client/components/AnalysisBuilder/RetentionModeContent.d.ts +71 -0
  132. package/dist/client/components/AnalysisBuilder/types.d.ts +99 -0
  133. package/dist/client/components/DebugModal.d.ts +2 -1
  134. package/dist/client/components/charts/RetentionCombinedChart.config.d.ts +2 -0
  135. package/dist/client/components/charts/RetentionCombinedChart.d.ts +14 -0
  136. package/dist/client/components/charts/RetentionHeatmap.config.d.ts +2 -0
  137. package/dist/client/components/charts/RetentionHeatmap.d.ts +7 -0
  138. package/dist/client/components.js +2 -2
  139. package/dist/client/hooks/queries/index.d.ts +2 -1
  140. package/dist/client/hooks/queries/useDryRunQuery.d.ts +26 -0
  141. package/dist/client/hooks/queries/useExplainQuery.d.ts +3 -1
  142. package/dist/client/hooks/queries/useFlowQuery.d.ts +5 -0
  143. package/dist/client/hooks/queries/useRetentionQuery.d.ts +67 -0
  144. package/dist/client/hooks/useAnalysisBuilderHook.d.ts +61 -0
  145. package/dist/client/hooks/useAnalysisQueryExecution.d.ts +42 -1
  146. package/dist/client/hooks.js +3 -3
  147. package/dist/client/icons/customIcons.d.ts +7 -0
  148. package/dist/client/icons/types.d.ts +1 -0
  149. package/dist/client/icons.js +1 -1
  150. package/dist/client/index.js +11 -11
  151. package/dist/client/providers.js +1 -1
  152. package/dist/client/stores/analysisBuilderStore.d.ts +86 -1
  153. package/dist/client/stores/dashboardStore.d.ts +2 -1
  154. package/dist/client/stores/slices/index.d.ts +2 -0
  155. package/dist/client/stores/slices/retentionSlice.d.ts +66 -0
  156. package/dist/client/styles.css +1 -1
  157. package/dist/client/types/analysisConfig.d.ts +29 -4
  158. package/dist/client/types/funnel.d.ts +5 -0
  159. package/dist/client/types/retention.d.ts +301 -0
  160. package/dist/client/types.d.ts +6 -3
  161. package/dist/client-bundle-stats.html +1 -1
  162. package/dist/server/index.cjs +76 -54
  163. package/dist/server/index.d.ts +217 -0
  164. package/dist/server/index.js +7363 -4152
  165. package/package.json +5 -2
  166. package/dist/adapters/compiler-CO13DaEb.cjs +0 -192
  167. package/dist/client/chunks/analysis-builder-Dc9NrG_N.js +0 -6013
  168. package/dist/client/chunks/analysis-builder-Dc9NrG_N.js.map +0 -1
  169. package/dist/client/chunks/analysis-builder-shared-B3-UWqQ2.js +0 -2540
  170. package/dist/client/chunks/analysis-builder-shared-B3-UWqQ2.js.map +0 -1
  171. package/dist/client/chunks/chart-kpi-delta-Bs5R5xr4.js +0 -435
  172. package/dist/client/chunks/chart-kpi-delta-Bs5R5xr4.js.map +0 -1
  173. package/dist/client/chunks/chart-kpi-number-Cf4Pgkm9.js +0 -392
  174. package/dist/client/chunks/chart-kpi-number-Cf4Pgkm9.js.map +0 -1
  175. package/dist/client/chunks/chartConfigRegistry-CiOq-PqX.js +0 -44
  176. package/dist/client/chunks/charts-loader-BtsnUO4Q.js.map +0 -1
  177. package/dist/client/chunks/charts-xNubY0vm.js +0 -226
  178. package/dist/client/chunks/charts-xNubY0vm.js.map +0 -1
  179. package/dist/client/chunks/components-BDrlf9Er.js.map +0 -1
  180. package/dist/client/chunks/hooks-B8Zw5PfL.js +0 -123
  181. package/dist/client/chunks/useDirtyStateTracking-C_mitVwh.js.map +0 -1
  182. package/dist/client/chunks/vendor-DzzxS7Ay.js.map +0 -1
@@ -0,0 +1,47 @@
1
+ const e = {
2
+ // RetentionCombinedChart auto-configures from the retention data structure
3
+ // No drop zones needed as the chart maps directly to retention result data
4
+ dropZones: [],
5
+ // Display options
6
+ displayOptionsConfig: [
7
+ {
8
+ key: "retentionDisplayMode",
9
+ label: "Display Mode",
10
+ type: "select",
11
+ defaultValue: "line",
12
+ options: [
13
+ { value: "line", label: "Line Chart" },
14
+ { value: "heatmap", label: "Heatmap Table" },
15
+ { value: "combined", label: "Combined" }
16
+ ],
17
+ description: "Choose how to visualize retention data"
18
+ },
19
+ {
20
+ key: "showLegend",
21
+ label: "Show Legend",
22
+ type: "boolean",
23
+ defaultValue: !0,
24
+ description: "Show the legend for breakdown segments"
25
+ },
26
+ {
27
+ key: "showGrid",
28
+ label: "Show Grid",
29
+ type: "boolean",
30
+ defaultValue: !0,
31
+ description: "Show grid lines on the chart"
32
+ },
33
+ {
34
+ key: "showTooltip",
35
+ label: "Show Tooltip",
36
+ type: "boolean",
37
+ defaultValue: !0,
38
+ description: "Show tooltip on hover with detailed stats"
39
+ }
40
+ ],
41
+ description: "Combined retention visualization with line chart and heatmap modes",
42
+ useCase: "Visualize user retention over time with optional breakdown segmentation"
43
+ };
44
+ export {
45
+ e as retentionCombinedConfig
46
+ };
47
+ //# sourceMappingURL=RetentionCombinedChart.config-C-ILIaEb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RetentionCombinedChart.config-C-ILIaEb.js","sources":["../../../src/client/components/charts/RetentionCombinedChart.config.ts"],"sourcesContent":["/**\n * RetentionCombinedChart Configuration\n *\n * The RetentionCombinedChart visualizes retention analysis data with multiple display modes.\n * It auto-configures from retention data and provides display mode selection.\n */\n\nimport type { ChartTypeConfig } from '../../charts/chartConfigs'\n\nexport const retentionCombinedConfig: ChartTypeConfig = {\n // RetentionCombinedChart auto-configures from the retention data structure\n // No drop zones needed as the chart maps directly to retention result data\n dropZones: [],\n\n // Display options\n displayOptionsConfig: [\n {\n key: 'retentionDisplayMode',\n label: 'Display Mode',\n type: 'select',\n defaultValue: 'line',\n options: [\n { value: 'line', label: 'Line Chart' },\n { value: 'heatmap', label: 'Heatmap Table' },\n { value: 'combined', label: 'Combined' },\n ],\n description: 'Choose how to visualize retention data',\n },\n {\n key: 'showLegend',\n label: 'Show Legend',\n type: 'boolean',\n defaultValue: true,\n description: 'Show the legend for breakdown segments',\n },\n {\n key: 'showGrid',\n label: 'Show Grid',\n type: 'boolean',\n defaultValue: true,\n description: 'Show grid lines on the chart',\n },\n {\n key: 'showTooltip',\n label: 'Show Tooltip',\n type: 'boolean',\n defaultValue: true,\n description: 'Show tooltip on hover with detailed stats',\n },\n ],\n\n description: 'Combined retention visualization with line chart and heatmap modes',\n useCase: 'Visualize user retention over time with optional breakdown segmentation',\n}\n"],"names":["retentionCombinedConfig"],"mappings":"AASO,MAAMA,IAA2C;AAAA;AAAA;AAAA,EAGtD,WAAW,CAAA;AAAA;AAAA,EAGX,sBAAsB;AAAA,IACpB;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,SAAS;AAAA,QACP,EAAE,OAAO,QAAQ,OAAO,aAAA;AAAA,QACxB,EAAE,OAAO,WAAW,OAAO,gBAAA;AAAA,QAC3B,EAAE,OAAO,YAAY,OAAO,WAAA;AAAA,MAAW;AAAA,MAEzC,aAAa;AAAA,IAAA;AAAA,IAEf;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,aAAa;AAAA,IAAA;AAAA,IAEf;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,aAAa;AAAA,IAAA;AAAA,IAEf;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,aAAa;AAAA,IAAA;AAAA,EACf;AAAA,EAGF,aAAa;AAAA,EACb,SAAS;AACX;"}
@@ -0,0 +1,178 @@
1
+ import { jsx as t, jsxs as n } from "react/jsx-runtime";
2
+ import z, { useState as M, useMemo as y } from "react";
3
+ import { i as A } from "./retention-CzCo8262.js";
4
+ function v(s) {
5
+ return `rgba(34, 197, 94, ${0.1 + Math.max(0, Math.min(1, s)) * 0.7})`;
6
+ }
7
+ function L(s) {
8
+ return s > 0.5 ? "#ffffff" : "var(--dc-text)";
9
+ }
10
+ function N(s) {
11
+ if (/^\d{4}-\d{2}$/.test(s))
12
+ return s;
13
+ const r = new Date(s);
14
+ return isNaN(r.getTime()) ? s : r.toLocaleDateString("en-US", { year: "numeric", month: "short" });
15
+ }
16
+ function w(s) {
17
+ return `${Math.round(s * 100)}%`;
18
+ }
19
+ const P = z.memo(function({
20
+ data: r,
21
+ height: u = "100%",
22
+ displayConfig: R
23
+ }) {
24
+ const [l, p] = M(null), h = y(() => {
25
+ if (!r) return null;
26
+ if (A(r))
27
+ return r;
28
+ if (Array.isArray(r) && r.length > 0) {
29
+ const e = r, i = [...new Set(e.map((o) => o.breakdownValue || "All Users"))].sort(), c = [...new Set(e.map((o) => o.period))].sort((o, d) => o - d);
30
+ return {
31
+ rows: e,
32
+ breakdownValues: i.length > 1 || i[0] !== "All Users" ? i : void 0,
33
+ periods: c
34
+ };
35
+ }
36
+ return null;
37
+ }, [r]), x = y(() => {
38
+ if (!h) return null;
39
+ const { rows: e, breakdownValues: i, periods: c } = h, o = i || ["All Users"], d = /* @__PURE__ */ new Map();
40
+ for (const a of e) {
41
+ const m = a.breakdownValue || "All Users";
42
+ d.set(`${m}:${a.period}`, a);
43
+ }
44
+ return o.map((a) => {
45
+ const m = c.map((k) => d.get(`${a}:${k}`) || null), f = m[0]?.cohortSize ?? 0;
46
+ return {
47
+ cohort: a,
48
+ // Keep 'cohort' key for compatibility with rendering
49
+ cohortSize: f,
50
+ periods: m
51
+ };
52
+ });
53
+ }, [h]), S = (e, i, c, o) => {
54
+ if (!o) return;
55
+ const d = e.currentTarget.getBoundingClientRect();
56
+ p({
57
+ cohort: i,
58
+ period: c,
59
+ cohortSize: o.cohortSize,
60
+ retainedUsers: o.retainedUsers,
61
+ retentionRate: o.retentionRate,
62
+ x: d.left + d.width / 2,
63
+ y: d.top
64
+ });
65
+ }, C = () => {
66
+ p(null);
67
+ };
68
+ if (!r || Array.isArray(r) && r.length === 0)
69
+ return /* @__PURE__ */ t(
70
+ "div",
71
+ {
72
+ className: "flex items-center justify-center w-full text-dc-text-muted",
73
+ style: { height: u },
74
+ children: /* @__PURE__ */ n("div", { className: "text-center", children: [
75
+ /* @__PURE__ */ t("div", { className: "text-sm font-semibold mb-1", children: "No data available" }),
76
+ /* @__PURE__ */ t("div", { className: "text-xs text-dc-text-secondary", children: "Configure retention analysis to see results" })
77
+ ] })
78
+ }
79
+ );
80
+ if (!x || x.length === 0)
81
+ return /* @__PURE__ */ t(
82
+ "div",
83
+ {
84
+ className: "flex items-center justify-center w-full text-dc-text-muted",
85
+ style: { height: u },
86
+ children: /* @__PURE__ */ n("div", { className: "text-center", children: [
87
+ /* @__PURE__ */ t("div", { className: "text-sm font-semibold mb-1", children: "Unable to render retention data" }),
88
+ /* @__PURE__ */ t("div", { className: "text-xs text-dc-text-secondary", children: "Data format may be incorrect" })
89
+ ] })
90
+ }
91
+ );
92
+ const b = h?.periods ?? [], U = R?.showLegend ?? !0;
93
+ return /* @__PURE__ */ n("div", { className: "relative w-full h-full overflow-auto", style: { height: u }, children: [
94
+ /* @__PURE__ */ n("table", { className: "w-full border-collapse text-sm", children: [
95
+ /* @__PURE__ */ t("thead", { className: "sticky top-0 bg-dc-bg z-10", children: /* @__PURE__ */ n("tr", { children: [
96
+ /* @__PURE__ */ t("th", { className: "text-left p-2 font-medium text-dc-text border-b border-dc-border min-w-[100px]", children: "Cohort" }),
97
+ /* @__PURE__ */ t("th", { className: "text-right p-2 font-medium text-dc-text border-b border-dc-border min-w-[80px]", children: "Users" }),
98
+ b.map((e) => /* @__PURE__ */ n(
99
+ "th",
100
+ {
101
+ className: "text-center p-2 font-medium text-dc-text border-b border-dc-border min-w-[60px]",
102
+ children: [
103
+ "P",
104
+ e
105
+ ]
106
+ },
107
+ e
108
+ ))
109
+ ] }) }),
110
+ /* @__PURE__ */ t("tbody", { children: x.map((e, i) => /* @__PURE__ */ n("tr", { className: i % 2 === 0 ? "bg-dc-bg" : "bg-dc-surface-secondary", children: [
111
+ /* @__PURE__ */ t("td", { className: "p-2 font-medium text-dc-text border-b border-dc-border whitespace-nowrap", children: N(e.cohort) }),
112
+ /* @__PURE__ */ t("td", { className: "p-2 text-right text-dc-text-secondary border-b border-dc-border", children: e.cohortSize.toLocaleString() }),
113
+ e.periods.map((c, o) => {
114
+ const d = b[o], a = c?.retentionRate ?? 0, m = c ? v(a) : "transparent", g = c ? L(a) : "var(--dc-text-muted)";
115
+ return /* @__PURE__ */ t(
116
+ "td",
117
+ {
118
+ className: "p-2 text-center border-b border-dc-border cursor-default transition-opacity hover:opacity-80",
119
+ style: { backgroundColor: m, color: g },
120
+ onMouseEnter: (f) => S(f, e.cohort, d, c),
121
+ onMouseLeave: C,
122
+ children: c ? w(a) : "-"
123
+ },
124
+ d
125
+ );
126
+ })
127
+ ] }, e.cohort)) })
128
+ ] }),
129
+ U && /* @__PURE__ */ n("div", { className: "flex items-center justify-center mt-4 gap-2 text-xs text-dc-text-secondary", children: [
130
+ /* @__PURE__ */ t("span", { children: "0%" }),
131
+ /* @__PURE__ */ t("div", { className: "flex h-4", children: [0, 0.2, 0.4, 0.6, 0.8, 1].map((e) => /* @__PURE__ */ t(
132
+ "div",
133
+ {
134
+ className: "w-6 h-4",
135
+ style: { backgroundColor: v(e) }
136
+ },
137
+ e
138
+ )) }),
139
+ /* @__PURE__ */ t("span", { children: "100%" })
140
+ ] }),
141
+ l && /* @__PURE__ */ n(
142
+ "div",
143
+ {
144
+ className: "fixed z-50 px-3 py-2 bg-dc-surface border border-dc-border rounded shadow-lg text-sm pointer-events-none",
145
+ style: {
146
+ left: l.x,
147
+ top: l.y - 10,
148
+ transform: "translate(-50%, -100%)"
149
+ },
150
+ children: [
151
+ /* @__PURE__ */ n("div", { className: "font-medium text-dc-text mb-1", children: [
152
+ N(l.cohort),
153
+ " - Period ",
154
+ l.period
155
+ ] }),
156
+ /* @__PURE__ */ n("div", { className: "text-dc-text-secondary space-y-0.5", children: [
157
+ /* @__PURE__ */ n("div", { children: [
158
+ "Cohort Size: ",
159
+ l.cohortSize.toLocaleString()
160
+ ] }),
161
+ /* @__PURE__ */ n("div", { children: [
162
+ "Retained: ",
163
+ l.retainedUsers.toLocaleString()
164
+ ] }),
165
+ /* @__PURE__ */ n("div", { className: "font-medium text-dc-text", children: [
166
+ "Rate: ",
167
+ w(l.retentionRate)
168
+ ] })
169
+ ] })
170
+ ]
171
+ }
172
+ )
173
+ ] });
174
+ });
175
+ export {
176
+ P as default
177
+ };
178
+ //# sourceMappingURL=RetentionHeatmap-Bofadstm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RetentionHeatmap-Bofadstm.js","sources":["../../../src/client/components/charts/RetentionHeatmap.tsx"],"sourcesContent":["/**\n * RetentionHeatmap Component\n *\n * Visualizes retention analysis data as a cohort × period matrix.\n * Displays retention rates with color intensity based on percentage.\n *\n * Features:\n * - Cohort labels in first column (e.g., \"2024-01\", \"2024-02\")\n * - Cohort size in second column\n * - Period columns (P0, P1, P2, ... PN)\n * - Cell background color intensity based on retention rate\n * - Hover tooltip with detailed stats\n */\n\nimport React, { useMemo, useState } from 'react'\nimport type { ChartProps } from '../../types'\nimport type { RetentionChartData, RetentionResultRow } from '../../types/retention'\nimport { isRetentionData } from '../../types/retention'\n\n/**\n * Get color with opacity based on retention rate\n * Uses a green gradient: higher retention = more saturated green\n */\nfunction getRetentionColor(rate: number): string {\n // Clamp rate between 0 and 1\n const clampedRate = Math.max(0, Math.min(1, rate))\n\n // Use CSS variable for theming support\n // Fallback to a green color if CSS var not available\n const alpha = 0.1 + clampedRate * 0.7 // Range from 0.1 to 0.8 opacity\n\n // Green color (success color)\n return `rgba(34, 197, 94, ${alpha})`\n}\n\n/**\n * Get text color that contrasts with background\n */\nfunction getTextColor(rate: number): string {\n // Use dark text for lower rates, light text for higher rates\n return rate > 0.5 ? '#ffffff' : 'var(--dc-text)'\n}\n\n/**\n * Format cohort period for display\n * Converts date strings to readable format\n */\nfunction formatCohortPeriod(cohort: string): string {\n // If it's already in YYYY-MM format, return as-is\n if (/^\\d{4}-\\d{2}$/.test(cohort)) {\n return cohort\n }\n\n // Try to parse as date\n const date = new Date(cohort)\n if (!isNaN(date.getTime())) {\n return date.toLocaleDateString('en-US', { year: 'numeric', month: 'short' })\n }\n\n return cohort\n}\n\n/**\n * Format percentage for display\n */\nfunction formatPercentage(rate: number): string {\n return `${Math.round(rate * 100)}%`\n}\n\ninterface TooltipData {\n cohort: string\n period: number\n cohortSize: number\n retainedUsers: number\n retentionRate: number\n x: number\n y: number\n}\n\n/**\n * RetentionHeatmap Component\n */\nconst RetentionHeatmap = React.memo(function RetentionHeatmap({\n data,\n height = '100%',\n displayConfig,\n}: ChartProps) {\n const [tooltip, setTooltip] = useState<TooltipData | null>(null)\n\n // Parse retention data\n const retentionData = useMemo<RetentionChartData | null>(() => {\n if (!data) return null\n\n // Check if data is already in RetentionChartData format\n if (isRetentionData(data)) {\n return data\n }\n\n // If data is an array of RetentionResultRow, convert it\n if (Array.isArray(data) && data.length > 0) {\n const rows = data as RetentionResultRow[]\n const breakdownValues = [...new Set(rows.map(r => r.breakdownValue || 'All Users'))].sort()\n const periods = [...new Set(rows.map(r => r.period))].sort((a, b) => a - b)\n\n return {\n rows,\n breakdownValues: breakdownValues.length > 1 || breakdownValues[0] !== 'All Users' ? breakdownValues : undefined,\n periods,\n }\n }\n\n return null\n }, [data])\n\n // Build matrix for display\n // In the new simplified format, rows are grouped by breakdownValue (or 'All Users' if no breakdown)\n const matrix = useMemo(() => {\n if (!retentionData) return null\n\n const { rows, breakdownValues, periods } = retentionData\n\n // Determine segments: use breakdownValues if available, otherwise single 'All Users' segment\n const segments = breakdownValues || ['All Users']\n\n // Create a lookup map for quick access: segment:period -> row\n const lookup = new Map<string, RetentionResultRow>()\n for (const row of rows) {\n const segment = row.breakdownValue || 'All Users'\n lookup.set(`${segment}:${row.period}`, row)\n }\n\n // Build matrix structure - one row per segment\n return segments.map((segment: string) => {\n const segmentRows = periods.map(period => {\n const row = lookup.get(`${segment}:${period}`)\n return row || null\n })\n\n // Get cohort size from period 0\n const period0 = segmentRows[0]\n const cohortSize = period0?.cohortSize ?? 0\n\n return {\n cohort: segment, // Keep 'cohort' key for compatibility with rendering\n cohortSize,\n periods: segmentRows,\n }\n })\n }, [retentionData])\n\n // Handle mouse enter on cell\n const handleMouseEnter = (\n event: React.MouseEvent,\n cohort: string,\n period: number,\n row: RetentionResultRow | null\n ) => {\n if (!row) return\n\n const rect = event.currentTarget.getBoundingClientRect()\n setTooltip({\n cohort,\n period,\n cohortSize: row.cohortSize,\n retainedUsers: row.retainedUsers,\n retentionRate: row.retentionRate,\n x: rect.left + rect.width / 2,\n y: rect.top,\n })\n }\n\n const handleMouseLeave = () => {\n setTooltip(null)\n }\n\n // Handle empty/loading states\n if (!data || (Array.isArray(data) && data.length === 0)) {\n return (\n <div\n className=\"flex items-center justify-center w-full text-dc-text-muted\"\n style={{ height }}\n >\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">No data available</div>\n <div className=\"text-xs text-dc-text-secondary\">\n Configure retention analysis to see results\n </div>\n </div>\n </div>\n )\n }\n\n if (!matrix || matrix.length === 0) {\n return (\n <div\n className=\"flex items-center justify-center w-full text-dc-text-muted\"\n style={{ height }}\n >\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">Unable to render retention data</div>\n <div className=\"text-xs text-dc-text-secondary\">\n Data format may be incorrect\n </div>\n </div>\n </div>\n )\n }\n\n const periods = retentionData?.periods ?? []\n const showLegend = displayConfig?.showLegend ?? true\n\n return (\n <div className=\"relative w-full h-full overflow-auto\" style={{ height }}>\n {/* Retention Matrix Table */}\n <table className=\"w-full border-collapse text-sm\">\n <thead className=\"sticky top-0 bg-dc-bg z-10\">\n <tr>\n <th className=\"text-left p-2 font-medium text-dc-text border-b border-dc-border min-w-[100px]\">\n Cohort\n </th>\n <th className=\"text-right p-2 font-medium text-dc-text border-b border-dc-border min-w-[80px]\">\n Users\n </th>\n {periods.map(period => (\n <th\n key={period}\n className=\"text-center p-2 font-medium text-dc-text border-b border-dc-border min-w-[60px]\"\n >\n P{period}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {matrix.map((row, rowIndex) => (\n <tr key={row.cohort} className={rowIndex % 2 === 0 ? 'bg-dc-bg' : 'bg-dc-surface-secondary'}>\n <td className=\"p-2 font-medium text-dc-text border-b border-dc-border whitespace-nowrap\">\n {formatCohortPeriod(row.cohort)}\n </td>\n <td className=\"p-2 text-right text-dc-text-secondary border-b border-dc-border\">\n {row.cohortSize.toLocaleString()}\n </td>\n {row.periods.map((cell, periodIndex) => {\n const period = periods[periodIndex]\n const rate = cell?.retentionRate ?? 0\n const bgColor = cell ? getRetentionColor(rate) : 'transparent'\n const textColor = cell ? getTextColor(rate) : 'var(--dc-text-muted)'\n\n return (\n <td\n key={period}\n className=\"p-2 text-center border-b border-dc-border cursor-default transition-opacity hover:opacity-80\"\n style={{ backgroundColor: bgColor, color: textColor }}\n onMouseEnter={(e) => handleMouseEnter(e, row.cohort, period, cell)}\n onMouseLeave={handleMouseLeave}\n >\n {cell ? formatPercentage(rate) : '-'}\n </td>\n )\n })}\n </tr>\n ))}\n </tbody>\n </table>\n\n {/* Legend */}\n {showLegend && (\n <div className=\"flex items-center justify-center mt-4 gap-2 text-xs text-dc-text-secondary\">\n <span>0%</span>\n <div className=\"flex h-4\">\n {[0, 0.2, 0.4, 0.6, 0.8, 1].map(rate => (\n <div\n key={rate}\n className=\"w-6 h-4\"\n style={{ backgroundColor: getRetentionColor(rate) }}\n />\n ))}\n </div>\n <span>100%</span>\n </div>\n )}\n\n {/* Tooltip */}\n {tooltip && (\n <div\n className=\"fixed z-50 px-3 py-2 bg-dc-surface border border-dc-border rounded shadow-lg text-sm pointer-events-none\"\n style={{\n left: tooltip.x,\n top: tooltip.y - 10,\n transform: 'translate(-50%, -100%)',\n }}\n >\n <div className=\"font-medium text-dc-text mb-1\">\n {formatCohortPeriod(tooltip.cohort)} - Period {tooltip.period}\n </div>\n <div className=\"text-dc-text-secondary space-y-0.5\">\n <div>Cohort Size: {tooltip.cohortSize.toLocaleString()}</div>\n <div>Retained: {tooltip.retainedUsers.toLocaleString()}</div>\n <div className=\"font-medium text-dc-text\">\n Rate: {formatPercentage(tooltip.retentionRate)}\n </div>\n </div>\n </div>\n )}\n </div>\n )\n})\n\nexport default RetentionHeatmap\n"],"names":["getRetentionColor","rate","getTextColor","formatCohortPeriod","cohort","date","formatPercentage","RetentionHeatmap","React","data","height","displayConfig","tooltip","setTooltip","useState","retentionData","useMemo","isRetentionData","rows","breakdownValues","r","periods","a","b","matrix","segments","lookup","row","segment","segmentRows","period","cohortSize","handleMouseEnter","event","rect","handleMouseLeave","jsx","jsxs","showLegend","rowIndex","cell","periodIndex","bgColor","textColor","e"],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ const e = {
2
+ // RetentionHeatmap auto-configures from the retention data structure
3
+ // No drop zones needed as the chart maps directly to cohort × period matrix
4
+ dropZones: [],
5
+ // Display options
6
+ displayOptionsConfig: [
7
+ {
8
+ key: "showLegend",
9
+ label: "Show Legend",
10
+ type: "boolean",
11
+ defaultValue: !0,
12
+ description: "Show the color intensity legend"
13
+ },
14
+ {
15
+ key: "showTooltip",
16
+ label: "Show Tooltip",
17
+ type: "boolean",
18
+ defaultValue: !0,
19
+ description: "Show tooltip on hover with detailed stats"
20
+ }
21
+ ],
22
+ description: "Cohort retention matrix visualization",
23
+ useCase: "Visualize user retention over time by cohort"
24
+ };
25
+ export {
26
+ e as retentionHeatmapConfig
27
+ };
28
+ //# sourceMappingURL=RetentionHeatmap.config-CIvhc-GT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RetentionHeatmap.config-CIvhc-GT.js","sources":["../../../src/client/components/charts/RetentionHeatmap.config.ts"],"sourcesContent":["/**\n * RetentionHeatmap Chart Configuration\n *\n * The RetentionHeatmap is a specialized chart for retention analysis.\n * It auto-configures from retention data and doesn't need typical axis configuration.\n */\n\nimport type { ChartTypeConfig } from '../../charts/chartConfigs'\n\nexport const retentionHeatmapConfig: ChartTypeConfig = {\n // RetentionHeatmap auto-configures from the retention data structure\n // No drop zones needed as the chart maps directly to cohort × period matrix\n dropZones: [],\n\n // Display options\n displayOptionsConfig: [\n {\n key: 'showLegend',\n label: 'Show Legend',\n type: 'boolean',\n defaultValue: true,\n description: 'Show the color intensity legend',\n },\n {\n key: 'showTooltip',\n label: 'Show Tooltip',\n type: 'boolean',\n defaultValue: true,\n description: 'Show tooltip on hover with detailed stats',\n },\n ],\n\n description: 'Cohort retention matrix visualization',\n useCase: 'Visualize user retention over time by cohort',\n}\n"],"names":["retentionHeatmapConfig"],"mappings":"AASO,MAAMA,IAA0C;AAAA;AAAA;AAAA,EAGrD,WAAW,CAAA;AAAA;AAAA,EAGX,sBAAsB;AAAA,IACpB;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,aAAa;AAAA,IAAA;AAAA,IAEf;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,aAAa;AAAA,IAAA;AAAA,EACf;AAAA,EAGF,aAAa;AAAA,EACb,SAAS;AACX;"}