@quillsql/react 2.10.31 → 2.10.32

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 (607) hide show
  1. package/dist/cjs/BarList.d.ts +22 -0
  2. package/dist/cjs/BarList.d.ts.map +1 -0
  3. package/dist/cjs/BarList.js +286 -0
  4. package/dist/cjs/Chart.d.ts +42 -0
  5. package/dist/cjs/Chart.d.ts.map +1 -0
  6. package/dist/cjs/Chart.js +360 -0
  7. package/dist/cjs/ChartBuilder.d.ts +46 -0
  8. package/dist/cjs/ChartBuilder.d.ts.map +1 -0
  9. package/dist/cjs/ChartBuilder.js +708 -0
  10. package/dist/cjs/ChartEditor.d.ts +27 -0
  11. package/dist/cjs/ChartEditor.d.ts.map +1 -0
  12. package/dist/cjs/ChartEditor.js +78 -0
  13. package/dist/cjs/Context.d.ts +36 -0
  14. package/dist/cjs/Context.d.ts.map +1 -0
  15. package/dist/cjs/Context.js +230 -0
  16. package/dist/cjs/Dashboard.d.ts +178 -0
  17. package/dist/cjs/Dashboard.d.ts.map +1 -0
  18. package/dist/cjs/Dashboard.js +498 -0
  19. package/dist/cjs/DateRangePicker/Calendar.d.ts +17 -0
  20. package/dist/cjs/DateRangePicker/Calendar.d.ts.map +1 -0
  21. package/dist/cjs/DateRangePicker/Calendar.js +171 -0
  22. package/dist/cjs/DateRangePicker/DateRangePicker.d.ts +39 -0
  23. package/dist/cjs/DateRangePicker/DateRangePicker.d.ts.map +1 -0
  24. package/dist/cjs/DateRangePicker/DateRangePicker.js +150 -0
  25. package/dist/cjs/DateRangePicker/DateRangePickerButton.d.ts +23 -0
  26. package/dist/cjs/DateRangePicker/DateRangePickerButton.d.ts.map +1 -0
  27. package/dist/cjs/DateRangePicker/DateRangePickerButton.js +138 -0
  28. package/dist/cjs/DateRangePicker/QuillDateRangePicker.d.ts +3 -0
  29. package/dist/cjs/DateRangePicker/QuillDateRangePicker.d.ts.map +1 -0
  30. package/dist/cjs/DateRangePicker/QuillDateRangePicker.js +260 -0
  31. package/dist/cjs/DateRangePicker/dateRangePickerUtils.d.ts +80 -0
  32. package/dist/cjs/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -0
  33. package/dist/cjs/DateRangePicker/dateRangePickerUtils.js +549 -0
  34. package/dist/cjs/DateRangePicker/index.d.ts +3 -0
  35. package/dist/cjs/DateRangePicker/index.d.ts.map +1 -0
  36. package/dist/cjs/DateRangePicker/index.js +9 -0
  37. package/dist/cjs/PieChart.d.ts +59 -0
  38. package/dist/cjs/PieChart.d.ts.map +1 -0
  39. package/dist/cjs/PieChart.js +567 -0
  40. package/dist/cjs/QuillProvider.d.ts +58 -0
  41. package/dist/cjs/QuillProvider.d.ts.map +1 -0
  42. package/dist/cjs/QuillProvider.js +34 -0
  43. package/dist/cjs/ReportBuilder.d.ts +41 -0
  44. package/dist/cjs/ReportBuilder.d.ts.map +1 -0
  45. package/dist/cjs/ReportBuilder.js +1004 -0
  46. package/dist/cjs/SQLEditor.d.ts +54 -0
  47. package/dist/cjs/SQLEditor.d.ts.map +1 -0
  48. package/dist/cjs/SQLEditor.js +509 -0
  49. package/dist/cjs/Table.d.ts +26 -0
  50. package/dist/cjs/Table.d.ts.map +1 -0
  51. package/dist/cjs/Table.js +94 -0
  52. package/dist/cjs/TableChart.d.ts +15 -0
  53. package/dist/cjs/TableChart.d.ts.map +1 -0
  54. package/dist/cjs/TableChart.js +317 -0
  55. package/dist/cjs/assets/ArrowDownHeadIcon.d.ts +5 -0
  56. package/dist/cjs/assets/ArrowDownHeadIcon.d.ts.map +1 -0
  57. package/dist/cjs/assets/ArrowDownHeadIcon.js +5 -0
  58. package/dist/cjs/assets/ArrowDownIcon.d.ts +5 -0
  59. package/dist/cjs/assets/ArrowDownIcon.d.ts.map +1 -0
  60. package/dist/cjs/assets/ArrowDownIcon.js +5 -0
  61. package/dist/cjs/assets/ArrowDownRightIcon.d.ts +5 -0
  62. package/dist/cjs/assets/ArrowDownRightIcon.d.ts.map +1 -0
  63. package/dist/cjs/assets/ArrowDownRightIcon.js +5 -0
  64. package/dist/cjs/assets/ArrowLeftHeadIcon.d.ts +5 -0
  65. package/dist/cjs/assets/ArrowLeftHeadIcon.d.ts.map +1 -0
  66. package/dist/cjs/assets/ArrowLeftHeadIcon.js +5 -0
  67. package/dist/cjs/assets/ArrowRightHeadIcon.d.ts +5 -0
  68. package/dist/cjs/assets/ArrowRightHeadIcon.d.ts.map +1 -0
  69. package/dist/cjs/assets/ArrowRightHeadIcon.js +5 -0
  70. package/dist/cjs/assets/ArrowRightIcon.d.ts +5 -0
  71. package/dist/cjs/assets/ArrowRightIcon.d.ts.map +1 -0
  72. package/dist/cjs/assets/ArrowRightIcon.js +5 -0
  73. package/dist/cjs/assets/ArrowUpHeadIcon.d.ts +5 -0
  74. package/dist/cjs/assets/ArrowUpHeadIcon.d.ts.map +1 -0
  75. package/dist/cjs/assets/ArrowUpHeadIcon.js +5 -0
  76. package/dist/cjs/assets/ArrowUpIcon.d.ts +5 -0
  77. package/dist/cjs/assets/ArrowUpIcon.d.ts.map +1 -0
  78. package/dist/cjs/assets/ArrowUpIcon.js +5 -0
  79. package/dist/cjs/assets/ArrowUpRightIcon.d.ts +5 -0
  80. package/dist/cjs/assets/ArrowUpRightIcon.d.ts.map +1 -0
  81. package/dist/cjs/assets/ArrowUpRightIcon.js +5 -0
  82. package/dist/cjs/assets/CalendarIcon.d.ts +5 -0
  83. package/dist/cjs/assets/CalendarIcon.d.ts.map +1 -0
  84. package/dist/cjs/assets/CalendarIcon.js +5 -0
  85. package/dist/cjs/assets/CalendarNormalIcon.d.ts +5 -0
  86. package/dist/cjs/assets/CalendarNormalIcon.d.ts.map +1 -0
  87. package/dist/cjs/assets/CalendarNormalIcon.js +5 -0
  88. package/dist/cjs/assets/DoubleArrowLeftHeadIcon.d.ts +5 -0
  89. package/dist/cjs/assets/DoubleArrowLeftHeadIcon.d.ts.map +1 -0
  90. package/dist/cjs/assets/DoubleArrowLeftHeadIcon.js +5 -0
  91. package/dist/cjs/assets/DoubleArrowRightHeadIcon.d.ts +5 -0
  92. package/dist/cjs/assets/DoubleArrowRightHeadIcon.d.ts.map +1 -0
  93. package/dist/cjs/assets/DoubleArrowRightHeadIcon.js +5 -0
  94. package/dist/cjs/assets/ExclamationFilledIcon.d.ts +5 -0
  95. package/dist/cjs/assets/ExclamationFilledIcon.d.ts.map +1 -0
  96. package/dist/cjs/assets/ExclamationFilledIcon.js +5 -0
  97. package/dist/cjs/assets/FilterIcon.d.ts +5 -0
  98. package/dist/cjs/assets/FilterIcon.d.ts.map +1 -0
  99. package/dist/cjs/assets/FilterIcon.js +5 -0
  100. package/dist/cjs/assets/LoadingSpinner.d.ts +5 -0
  101. package/dist/cjs/assets/LoadingSpinner.d.ts.map +1 -0
  102. package/dist/cjs/assets/LoadingSpinner.js +5 -0
  103. package/dist/cjs/assets/RefreshIcon.d.ts +5 -0
  104. package/dist/cjs/assets/RefreshIcon.d.ts.map +1 -0
  105. package/dist/cjs/assets/RefreshIcon.js +5 -0
  106. package/dist/cjs/assets/SearchIcon.d.ts +5 -0
  107. package/dist/cjs/assets/SearchIcon.d.ts.map +1 -0
  108. package/dist/cjs/assets/SearchIcon.js +5 -0
  109. package/dist/cjs/assets/UpLeftArrowsIcon.d.ts +5 -0
  110. package/dist/cjs/assets/UpLeftArrowsIcon.d.ts.map +1 -0
  111. package/dist/cjs/assets/UpLeftArrowsIcon.js +5 -0
  112. package/dist/cjs/assets/XCircleIcon.d.ts +5 -0
  113. package/dist/cjs/assets/XCircleIcon.d.ts.map +1 -0
  114. package/dist/cjs/assets/XCircleIcon.js +5 -0
  115. package/dist/cjs/assets/XIcon.d.ts +5 -0
  116. package/dist/cjs/assets/XIcon.d.ts.map +1 -0
  117. package/dist/cjs/assets/XIcon.js +5 -0
  118. package/dist/cjs/assets/index.d.ts +22 -0
  119. package/dist/cjs/assets/index.d.ts.map +1 -0
  120. package/dist/cjs/assets/index.js +48 -0
  121. package/dist/cjs/components/Banner/index.d.ts +3 -0
  122. package/dist/cjs/components/Banner/index.d.ts.map +1 -0
  123. package/dist/cjs/components/Banner/index.js +27 -0
  124. package/dist/cjs/components/BigModal/BigModal.d.ts +15 -0
  125. package/dist/cjs/components/BigModal/BigModal.d.ts.map +1 -0
  126. package/dist/cjs/components/BigModal/BigModal.js +87 -0
  127. package/dist/cjs/components/Chart/BarChart.d.ts +18 -0
  128. package/dist/cjs/components/Chart/BarChart.d.ts.map +1 -0
  129. package/dist/cjs/components/Chart/BarChart.js +81 -0
  130. package/dist/cjs/components/Chart/ChartError.d.ts +3 -0
  131. package/dist/cjs/components/Chart/ChartError.d.ts.map +1 -0
  132. package/dist/cjs/components/Chart/ChartError.js +29 -0
  133. package/dist/cjs/components/Chart/ChartSkeleton.d.ts +6 -0
  134. package/dist/cjs/components/Chart/ChartSkeleton.d.ts.map +1 -0
  135. package/dist/cjs/components/Chart/ChartSkeleton.js +20 -0
  136. package/dist/cjs/components/Chart/ChartTooltip.d.ts +29 -0
  137. package/dist/cjs/components/Chart/ChartTooltip.d.ts.map +1 -0
  138. package/dist/cjs/components/Chart/ChartTooltip.js +235 -0
  139. package/dist/cjs/components/Chart/ChartTooltipFrame.d.ts +6 -0
  140. package/dist/cjs/components/Chart/ChartTooltipFrame.d.ts.map +1 -0
  141. package/dist/cjs/components/Chart/ChartTooltipFrame.js +16 -0
  142. package/dist/cjs/components/Chart/ChartTooltipGroup.d.ts +11 -0
  143. package/dist/cjs/components/Chart/ChartTooltipGroup.d.ts.map +1 -0
  144. package/dist/cjs/components/Chart/ChartTooltipGroup.js +29 -0
  145. package/dist/cjs/components/Chart/ChartTooltipRow.d.ts +8 -0
  146. package/dist/cjs/components/Chart/ChartTooltipRow.d.ts.map +1 -0
  147. package/dist/cjs/components/Chart/ChartTooltipRow.js +44 -0
  148. package/dist/cjs/components/Chart/LineChart.d.ts +16 -0
  149. package/dist/cjs/components/Chart/LineChart.d.ts.map +1 -0
  150. package/dist/cjs/components/Chart/LineChart.js +97 -0
  151. package/dist/cjs/components/Dashboard/ChartComponent.d.ts +3 -0
  152. package/dist/cjs/components/Dashboard/ChartComponent.d.ts.map +1 -0
  153. package/dist/cjs/components/Dashboard/ChartComponent.js +64 -0
  154. package/dist/cjs/components/Dashboard/DashboardSection.d.ts +3 -0
  155. package/dist/cjs/components/Dashboard/DashboardSection.d.ts.map +1 -0
  156. package/dist/cjs/components/Dashboard/DashboardSection.js +17 -0
  157. package/dist/cjs/components/Dashboard/DashboardSectionContainer.d.ts +3 -0
  158. package/dist/cjs/components/Dashboard/DashboardSectionContainer.d.ts.map +1 -0
  159. package/dist/cjs/components/Dashboard/DashboardSectionContainer.js +13 -0
  160. package/dist/cjs/components/Dashboard/DataLoader.d.ts +3 -0
  161. package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -0
  162. package/dist/cjs/components/Dashboard/DataLoader.js +74 -0
  163. package/dist/cjs/components/Dashboard/MetricComponent.d.ts +3 -0
  164. package/dist/cjs/components/Dashboard/MetricComponent.d.ts.map +1 -0
  165. package/dist/cjs/components/Dashboard/MetricComponent.js +65 -0
  166. package/dist/cjs/components/Dashboard/TableComponent.d.ts +3 -0
  167. package/dist/cjs/components/Dashboard/TableComponent.d.ts.map +1 -0
  168. package/dist/cjs/components/Dashboard/TableComponent.js +35 -0
  169. package/dist/cjs/components/Dropdown/Dropdown.d.ts +14 -0
  170. package/dist/cjs/components/Dropdown/Dropdown.d.ts.map +1 -0
  171. package/dist/cjs/components/Dropdown/Dropdown.js +99 -0
  172. package/dist/cjs/components/Dropdown/DropdownItem.d.ts +11 -0
  173. package/dist/cjs/components/Dropdown/DropdownItem.d.ts.map +1 -0
  174. package/dist/cjs/components/Dropdown/DropdownItem.js +67 -0
  175. package/dist/cjs/components/Dropdown/index.d.ts +3 -0
  176. package/dist/cjs/components/Dropdown/index.d.ts.map +1 -0
  177. package/dist/cjs/components/Dropdown/index.js +10 -0
  178. package/dist/cjs/components/Modal/Modal.d.ts +15 -0
  179. package/dist/cjs/components/Modal/Modal.d.ts.map +1 -0
  180. package/dist/cjs/components/Modal/Modal.js +90 -0
  181. package/dist/cjs/components/Modal/index.d.ts +2 -0
  182. package/dist/cjs/components/Modal/index.d.ts.map +1 -0
  183. package/dist/cjs/components/Modal/index.js +8 -0
  184. package/dist/cjs/components/QuillCard.d.ts +14 -0
  185. package/dist/cjs/components/QuillCard.d.ts.map +1 -0
  186. package/dist/cjs/components/QuillCard.js +56 -0
  187. package/dist/cjs/components/QuillSelect.d.ts +3 -0
  188. package/dist/cjs/components/QuillSelect.d.ts.map +1 -0
  189. package/dist/cjs/components/QuillSelect.js +128 -0
  190. package/dist/cjs/components/QuillTable.d.ts +3 -0
  191. package/dist/cjs/components/QuillTable.d.ts.map +1 -0
  192. package/dist/cjs/components/QuillTable.js +259 -0
  193. package/dist/cjs/components/UiComponents.d.ts +130 -0
  194. package/dist/cjs/components/UiComponents.d.ts.map +1 -0
  195. package/dist/cjs/components/UiComponents.js +262 -0
  196. package/dist/cjs/components/selectUtils.d.ts +10 -0
  197. package/dist/cjs/components/selectUtils.d.ts.map +1 -0
  198. package/dist/cjs/components/selectUtils.js +47 -0
  199. package/dist/cjs/contexts/BaseColorContext.d.ts +4 -0
  200. package/dist/cjs/contexts/BaseColorContext.d.ts.map +1 -0
  201. package/dist/cjs/contexts/BaseColorContext.js +5 -0
  202. package/dist/cjs/contexts/HoveredValueContext.d.ts +8 -0
  203. package/dist/cjs/contexts/HoveredValueContext.d.ts.map +1 -0
  204. package/dist/cjs/contexts/HoveredValueContext.js +7 -0
  205. package/dist/cjs/contexts/RootStylesContext.d.ts +4 -0
  206. package/dist/cjs/contexts/RootStylesContext.d.ts.map +1 -0
  207. package/dist/cjs/contexts/RootStylesContext.js +5 -0
  208. package/dist/cjs/contexts/SelectedValueContext.d.ts +8 -0
  209. package/dist/cjs/contexts/SelectedValueContext.d.ts.map +1 -0
  210. package/dist/cjs/contexts/SelectedValueContext.js +8 -0
  211. package/dist/cjs/contexts/index.d.ts +5 -0
  212. package/dist/cjs/contexts/index.d.ts.map +1 -0
  213. package/dist/cjs/contexts/index.js +14 -0
  214. package/dist/cjs/hooks/index.d.ts +5 -0
  215. package/dist/cjs/hooks/index.d.ts.map +1 -0
  216. package/dist/cjs/hooks/index.js +14 -0
  217. package/dist/cjs/hooks/useDashboard.d.ts +7 -0
  218. package/dist/cjs/hooks/useDashboard.d.ts.map +1 -0
  219. package/dist/cjs/hooks/useDashboard.js +54 -0
  220. package/dist/cjs/hooks/useExport.d.ts +15 -0
  221. package/dist/cjs/hooks/useExport.d.ts.map +1 -0
  222. package/dist/cjs/hooks/useExport.js +31 -0
  223. package/dist/cjs/hooks/useFormat.d.ts +6 -0
  224. package/dist/cjs/hooks/useFormat.d.ts.map +1 -0
  225. package/dist/cjs/hooks/useFormat.js +25 -0
  226. package/dist/cjs/hooks/useInternalState.d.ts +4 -0
  227. package/dist/cjs/hooks/useInternalState.d.ts.map +1 -0
  228. package/dist/cjs/hooks/useInternalState.js +16 -0
  229. package/dist/cjs/hooks/useOnClickOutside.d.ts +3 -0
  230. package/dist/cjs/hooks/useOnClickOutside.d.ts.map +1 -0
  231. package/dist/cjs/hooks/useOnClickOutside.js +20 -0
  232. package/dist/cjs/hooks/useOnWindowResize.d.ts +5 -0
  233. package/dist/cjs/hooks/useOnWindowResize.d.ts.map +1 -0
  234. package/dist/cjs/hooks/useOnWindowResize.js +16 -0
  235. package/dist/cjs/hooks/useQuill.d.ts +46 -0
  236. package/dist/cjs/hooks/useQuill.d.ts.map +1 -0
  237. package/dist/cjs/hooks/useQuill.js +94 -0
  238. package/dist/cjs/hooks/useSelectOnKeyDown.d.ts +3 -0
  239. package/dist/cjs/hooks/useSelectOnKeyDown.d.ts.map +1 -0
  240. package/dist/cjs/hooks/useSelectOnKeyDown.js +65 -0
  241. package/dist/cjs/index.d.ts +19 -0
  242. package/dist/cjs/index.d.ts.map +1 -0
  243. package/dist/cjs/index.js +38 -0
  244. package/dist/cjs/internals/ReportBuilder/PivotList.d.ts +34 -0
  245. package/dist/cjs/internals/ReportBuilder/PivotList.d.ts.map +1 -0
  246. package/dist/cjs/internals/ReportBuilder/PivotList.js +61 -0
  247. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +62 -0
  248. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -0
  249. package/dist/cjs/internals/ReportBuilder/PivotModal.js +916 -0
  250. package/dist/cjs/internals/ReportBuilder/PivotModal.spec.d.ts +2 -0
  251. package/dist/cjs/internals/ReportBuilder/PivotModal.spec.d.ts.map +1 -0
  252. package/dist/cjs/internals/ReportBuilder/PivotModal.spec.js +213 -0
  253. package/dist/cjs/lib/font.d.ts +14 -0
  254. package/dist/cjs/lib/font.d.ts.map +1 -0
  255. package/dist/cjs/lib/font.js +16 -0
  256. package/dist/cjs/lib/index.d.ts +4 -0
  257. package/dist/cjs/lib/index.d.ts.map +1 -0
  258. package/dist/cjs/lib/index.js +19 -0
  259. package/dist/cjs/lib/inputTypes.d.ts +21 -0
  260. package/dist/cjs/lib/inputTypes.d.ts.map +1 -0
  261. package/dist/cjs/lib/inputTypes.js +56 -0
  262. package/dist/cjs/lib/utils.d.ts +10 -0
  263. package/dist/cjs/lib/utils.d.ts.map +1 -0
  264. package/dist/cjs/lib/utils.js +45 -0
  265. package/dist/cjs/utils/aggregate.d.ts +4 -0
  266. package/dist/cjs/utils/aggregate.d.ts.map +1 -0
  267. package/dist/cjs/utils/aggregate.js +429 -0
  268. package/dist/cjs/utils/axisFormatter.d.ts +20 -0
  269. package/dist/cjs/utils/axisFormatter.d.ts.map +1 -0
  270. package/dist/cjs/utils/axisFormatter.js +194 -0
  271. package/dist/cjs/utils/color.d.ts +13 -0
  272. package/dist/cjs/utils/color.d.ts.map +1 -0
  273. package/dist/cjs/utils/color.js +251 -0
  274. package/dist/cjs/utils/crypto.d.ts +2 -0
  275. package/dist/cjs/utils/crypto.d.ts.map +1 -0
  276. package/dist/cjs/utils/crypto.js +10 -0
  277. package/dist/cjs/utils/csv.d.ts +6 -0
  278. package/dist/cjs/utils/csv.d.ts.map +1 -0
  279. package/dist/cjs/utils/csv.js +80 -0
  280. package/dist/cjs/utils/dashboard.d.ts +12 -0
  281. package/dist/cjs/utils/dashboard.d.ts.map +1 -0
  282. package/dist/cjs/utils/dashboard.js +174 -0
  283. package/dist/cjs/utils/dataFetcher.d.ts +3 -0
  284. package/dist/cjs/utils/dataFetcher.d.ts.map +1 -0
  285. package/dist/cjs/utils/dataFetcher.js +81 -0
  286. package/dist/cjs/utils/dates.d.ts +10 -0
  287. package/dist/cjs/utils/dates.d.ts.map +1 -0
  288. package/dist/cjs/utils/dates.js +37 -0
  289. package/dist/cjs/utils/getDomain.d.ts +8 -0
  290. package/dist/cjs/utils/getDomain.d.ts.map +1 -0
  291. package/dist/cjs/utils/getDomain.js +31 -0
  292. package/dist/cjs/utils/merge.d.ts +2 -0
  293. package/dist/cjs/utils/merge.d.ts.map +1 -0
  294. package/dist/cjs/utils/merge.js +49 -0
  295. package/dist/cjs/utils/styles.d.ts +17 -0
  296. package/dist/cjs/utils/styles.d.ts.map +1 -0
  297. package/dist/cjs/utils/styles.js +20 -0
  298. package/dist/cjs/utils/valueFormatter.d.ts +27 -0
  299. package/dist/cjs/utils/valueFormatter.d.ts.map +1 -0
  300. package/dist/cjs/utils/valueFormatter.js +252 -0
  301. package/dist/cjs/utils/valueFormatterCSV.d.ts +17 -0
  302. package/dist/cjs/utils/valueFormatterCSV.d.ts.map +1 -0
  303. package/dist/cjs/utils/valueFormatterCSV.js +99 -0
  304. package/dist/esm/BarList.d.ts +22 -0
  305. package/dist/esm/BarList.d.ts.map +1 -0
  306. package/dist/esm/BarList.js +279 -0
  307. package/dist/esm/Chart.d.ts +42 -0
  308. package/dist/esm/Chart.d.ts.map +1 -0
  309. package/dist/esm/Chart.js +353 -0
  310. package/dist/esm/ChartBuilder.d.ts +46 -0
  311. package/dist/esm/ChartBuilder.d.ts.map +1 -0
  312. package/dist/esm/ChartBuilder.js +700 -0
  313. package/dist/esm/ChartEditor.d.ts +27 -0
  314. package/dist/esm/ChartEditor.d.ts.map +1 -0
  315. package/dist/esm/ChartEditor.js +72 -0
  316. package/dist/esm/Context.d.ts +36 -0
  317. package/dist/esm/Context.d.ts.map +1 -0
  318. package/dist/esm/Context.js +223 -0
  319. package/dist/esm/Dashboard.d.ts +178 -0
  320. package/dist/esm/Dashboard.d.ts.map +1 -0
  321. package/dist/esm/Dashboard.js +490 -0
  322. package/dist/esm/DateRangePicker/Calendar.d.ts +17 -0
  323. package/dist/esm/DateRangePicker/Calendar.d.ts.map +1 -0
  324. package/dist/esm/DateRangePicker/Calendar.js +167 -0
  325. package/dist/esm/DateRangePicker/DateRangePicker.d.ts +39 -0
  326. package/dist/esm/DateRangePicker/DateRangePicker.d.ts.map +1 -0
  327. package/dist/esm/DateRangePicker/DateRangePicker.js +122 -0
  328. package/dist/esm/DateRangePicker/DateRangePickerButton.d.ts +23 -0
  329. package/dist/esm/DateRangePicker/DateRangePickerButton.d.ts.map +1 -0
  330. package/dist/esm/DateRangePicker/DateRangePickerButton.js +136 -0
  331. package/dist/esm/DateRangePicker/QuillDateRangePicker.d.ts +3 -0
  332. package/dist/esm/DateRangePicker/QuillDateRangePicker.d.ts.map +1 -0
  333. package/dist/esm/DateRangePicker/QuillDateRangePicker.js +256 -0
  334. package/dist/esm/DateRangePicker/dateRangePickerUtils.d.ts +80 -0
  335. package/dist/esm/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -0
  336. package/dist/esm/DateRangePicker/dateRangePickerUtils.js +535 -0
  337. package/dist/esm/DateRangePicker/index.d.ts +3 -0
  338. package/dist/esm/DateRangePicker/index.d.ts.map +1 -0
  339. package/dist/esm/DateRangePicker/index.js +2 -0
  340. package/dist/esm/PieChart.d.ts +59 -0
  341. package/dist/esm/PieChart.d.ts.map +1 -0
  342. package/dist/esm/PieChart.js +533 -0
  343. package/dist/esm/QuillProvider.d.ts +58 -0
  344. package/dist/esm/QuillProvider.d.ts.map +1 -0
  345. package/dist/esm/QuillProvider.js +31 -0
  346. package/dist/esm/ReportBuilder.d.ts +41 -0
  347. package/dist/esm/ReportBuilder.d.ts.map +1 -0
  348. package/dist/esm/ReportBuilder.js +996 -0
  349. package/dist/esm/SQLEditor.d.ts +54 -0
  350. package/dist/esm/SQLEditor.d.ts.map +1 -0
  351. package/dist/esm/SQLEditor.js +500 -0
  352. package/dist/esm/Table.d.ts +26 -0
  353. package/dist/esm/Table.d.ts.map +1 -0
  354. package/dist/esm/Table.js +89 -0
  355. package/dist/esm/TableChart.d.ts +15 -0
  356. package/dist/esm/TableChart.d.ts.map +1 -0
  357. package/dist/esm/TableChart.js +290 -0
  358. package/dist/esm/assets/ArrowDownHeadIcon.d.ts +5 -0
  359. package/dist/esm/assets/ArrowDownHeadIcon.d.ts.map +1 -0
  360. package/dist/esm/assets/ArrowDownHeadIcon.js +3 -0
  361. package/dist/esm/assets/ArrowDownIcon.d.ts +5 -0
  362. package/dist/esm/assets/ArrowDownIcon.d.ts.map +1 -0
  363. package/dist/esm/assets/ArrowDownIcon.js +3 -0
  364. package/dist/esm/assets/ArrowDownRightIcon.d.ts +5 -0
  365. package/dist/esm/assets/ArrowDownRightIcon.d.ts.map +1 -0
  366. package/dist/esm/assets/ArrowDownRightIcon.js +3 -0
  367. package/dist/esm/assets/ArrowLeftHeadIcon.d.ts +5 -0
  368. package/dist/esm/assets/ArrowLeftHeadIcon.d.ts.map +1 -0
  369. package/dist/esm/assets/ArrowLeftHeadIcon.js +3 -0
  370. package/dist/esm/assets/ArrowRightHeadIcon.d.ts +5 -0
  371. package/dist/esm/assets/ArrowRightHeadIcon.d.ts.map +1 -0
  372. package/dist/esm/assets/ArrowRightHeadIcon.js +3 -0
  373. package/dist/esm/assets/ArrowRightIcon.d.ts +5 -0
  374. package/dist/esm/assets/ArrowRightIcon.d.ts.map +1 -0
  375. package/dist/esm/assets/ArrowRightIcon.js +3 -0
  376. package/dist/esm/assets/ArrowUpHeadIcon.d.ts +5 -0
  377. package/dist/esm/assets/ArrowUpHeadIcon.d.ts.map +1 -0
  378. package/dist/esm/assets/ArrowUpHeadIcon.js +3 -0
  379. package/dist/esm/assets/ArrowUpIcon.d.ts +5 -0
  380. package/dist/esm/assets/ArrowUpIcon.d.ts.map +1 -0
  381. package/dist/esm/assets/ArrowUpIcon.js +3 -0
  382. package/dist/esm/assets/ArrowUpRightIcon.d.ts +5 -0
  383. package/dist/esm/assets/ArrowUpRightIcon.d.ts.map +1 -0
  384. package/dist/esm/assets/ArrowUpRightIcon.js +3 -0
  385. package/dist/esm/assets/CalendarIcon.d.ts +5 -0
  386. package/dist/esm/assets/CalendarIcon.d.ts.map +1 -0
  387. package/dist/esm/assets/CalendarIcon.js +3 -0
  388. package/dist/esm/assets/CalendarNormalIcon.d.ts +5 -0
  389. package/dist/esm/assets/CalendarNormalIcon.d.ts.map +1 -0
  390. package/dist/esm/assets/CalendarNormalIcon.js +3 -0
  391. package/dist/esm/assets/DoubleArrowLeftHeadIcon.d.ts +5 -0
  392. package/dist/esm/assets/DoubleArrowLeftHeadIcon.d.ts.map +1 -0
  393. package/dist/esm/assets/DoubleArrowLeftHeadIcon.js +3 -0
  394. package/dist/esm/assets/DoubleArrowRightHeadIcon.d.ts +5 -0
  395. package/dist/esm/assets/DoubleArrowRightHeadIcon.d.ts.map +1 -0
  396. package/dist/esm/assets/DoubleArrowRightHeadIcon.js +3 -0
  397. package/dist/esm/assets/ExclamationFilledIcon.d.ts +5 -0
  398. package/dist/esm/assets/ExclamationFilledIcon.d.ts.map +1 -0
  399. package/dist/esm/assets/ExclamationFilledIcon.js +3 -0
  400. package/dist/esm/assets/FilterIcon.d.ts +5 -0
  401. package/dist/esm/assets/FilterIcon.d.ts.map +1 -0
  402. package/dist/esm/assets/FilterIcon.js +3 -0
  403. package/dist/esm/assets/LoadingSpinner.d.ts +5 -0
  404. package/dist/esm/assets/LoadingSpinner.d.ts.map +1 -0
  405. package/dist/esm/assets/LoadingSpinner.js +3 -0
  406. package/dist/esm/assets/RefreshIcon.d.ts +5 -0
  407. package/dist/esm/assets/RefreshIcon.d.ts.map +1 -0
  408. package/dist/esm/assets/RefreshIcon.js +3 -0
  409. package/dist/esm/assets/SearchIcon.d.ts +5 -0
  410. package/dist/esm/assets/SearchIcon.d.ts.map +1 -0
  411. package/dist/esm/assets/SearchIcon.js +3 -0
  412. package/dist/esm/assets/UpLeftArrowsIcon.d.ts +5 -0
  413. package/dist/esm/assets/UpLeftArrowsIcon.d.ts.map +1 -0
  414. package/dist/esm/assets/UpLeftArrowsIcon.js +3 -0
  415. package/dist/esm/assets/XCircleIcon.d.ts +5 -0
  416. package/dist/esm/assets/XCircleIcon.d.ts.map +1 -0
  417. package/dist/esm/assets/XCircleIcon.js +3 -0
  418. package/dist/esm/assets/XIcon.d.ts +5 -0
  419. package/dist/esm/assets/XIcon.d.ts.map +1 -0
  420. package/dist/esm/assets/XIcon.js +3 -0
  421. package/dist/esm/assets/index.d.ts +22 -0
  422. package/dist/esm/assets/index.d.ts.map +1 -0
  423. package/dist/esm/assets/index.js +21 -0
  424. package/dist/esm/components/Banner/index.d.ts +3 -0
  425. package/dist/esm/components/Banner/index.d.ts.map +1 -0
  426. package/dist/esm/components/Banner/index.js +24 -0
  427. package/dist/esm/components/BigModal/BigModal.d.ts +15 -0
  428. package/dist/esm/components/BigModal/BigModal.d.ts.map +1 -0
  429. package/dist/esm/components/BigModal/BigModal.js +62 -0
  430. package/dist/esm/components/Chart/BarChart.d.ts +18 -0
  431. package/dist/esm/components/Chart/BarChart.d.ts.map +1 -0
  432. package/dist/esm/components/Chart/BarChart.js +75 -0
  433. package/dist/esm/components/Chart/ChartError.d.ts +3 -0
  434. package/dist/esm/components/Chart/ChartError.d.ts.map +1 -0
  435. package/dist/esm/components/Chart/ChartError.js +26 -0
  436. package/dist/esm/components/Chart/ChartSkeleton.d.ts +6 -0
  437. package/dist/esm/components/Chart/ChartSkeleton.d.ts.map +1 -0
  438. package/dist/esm/components/Chart/ChartSkeleton.js +17 -0
  439. package/dist/esm/components/Chart/ChartTooltip.d.ts +29 -0
  440. package/dist/esm/components/Chart/ChartTooltip.d.ts.map +1 -0
  441. package/dist/esm/components/Chart/ChartTooltip.js +229 -0
  442. package/dist/esm/components/Chart/ChartTooltipFrame.d.ts +6 -0
  443. package/dist/esm/components/Chart/ChartTooltipFrame.d.ts.map +1 -0
  444. package/dist/esm/components/Chart/ChartTooltipFrame.js +13 -0
  445. package/dist/esm/components/Chart/ChartTooltipGroup.d.ts +11 -0
  446. package/dist/esm/components/Chart/ChartTooltipGroup.d.ts.map +1 -0
  447. package/dist/esm/components/Chart/ChartTooltipGroup.js +23 -0
  448. package/dist/esm/components/Chart/ChartTooltipRow.d.ts +8 -0
  449. package/dist/esm/components/Chart/ChartTooltipRow.d.ts.map +1 -0
  450. package/dist/esm/components/Chart/ChartTooltipRow.js +41 -0
  451. package/dist/esm/components/Chart/LineChart.d.ts +16 -0
  452. package/dist/esm/components/Chart/LineChart.d.ts.map +1 -0
  453. package/dist/esm/components/Chart/LineChart.js +91 -0
  454. package/dist/esm/components/Dashboard/ChartComponent.d.ts +3 -0
  455. package/dist/esm/components/Dashboard/ChartComponent.d.ts.map +1 -0
  456. package/dist/esm/components/Dashboard/ChartComponent.js +61 -0
  457. package/dist/esm/components/Dashboard/DashboardSection.d.ts +3 -0
  458. package/dist/esm/components/Dashboard/DashboardSection.d.ts.map +1 -0
  459. package/dist/esm/components/Dashboard/DashboardSection.js +14 -0
  460. package/dist/esm/components/Dashboard/DashboardSectionContainer.d.ts +3 -0
  461. package/dist/esm/components/Dashboard/DashboardSectionContainer.d.ts.map +1 -0
  462. package/dist/esm/components/Dashboard/DashboardSectionContainer.js +10 -0
  463. package/dist/esm/components/Dashboard/DataLoader.d.ts +3 -0
  464. package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -0
  465. package/dist/esm/components/Dashboard/DataLoader.js +71 -0
  466. package/dist/esm/components/Dashboard/MetricComponent.d.ts +3 -0
  467. package/dist/esm/components/Dashboard/MetricComponent.d.ts.map +1 -0
  468. package/dist/esm/components/Dashboard/MetricComponent.js +62 -0
  469. package/dist/esm/components/Dashboard/TableComponent.d.ts +3 -0
  470. package/dist/esm/components/Dashboard/TableComponent.d.ts.map +1 -0
  471. package/dist/esm/components/Dashboard/TableComponent.js +29 -0
  472. package/dist/esm/components/Dropdown/Dropdown.d.ts +14 -0
  473. package/dist/esm/components/Dropdown/Dropdown.d.ts.map +1 -0
  474. package/dist/esm/components/Dropdown/Dropdown.js +71 -0
  475. package/dist/esm/components/Dropdown/DropdownItem.d.ts +11 -0
  476. package/dist/esm/components/Dropdown/DropdownItem.d.ts.map +1 -0
  477. package/dist/esm/components/Dropdown/DropdownItem.js +42 -0
  478. package/dist/esm/components/Dropdown/index.d.ts +3 -0
  479. package/dist/esm/components/Dropdown/index.d.ts.map +1 -0
  480. package/dist/esm/components/Dropdown/index.js +2 -0
  481. package/dist/esm/components/Modal/Modal.d.ts +15 -0
  482. package/dist/esm/components/Modal/Modal.d.ts.map +1 -0
  483. package/dist/esm/components/Modal/Modal.js +65 -0
  484. package/dist/esm/components/Modal/index.d.ts +2 -0
  485. package/dist/esm/components/Modal/index.d.ts.map +1 -0
  486. package/dist/esm/components/Modal/index.js +1 -0
  487. package/dist/esm/components/QuillCard.d.ts +14 -0
  488. package/dist/esm/components/QuillCard.d.ts.map +1 -0
  489. package/dist/esm/components/QuillCard.js +52 -0
  490. package/dist/esm/components/QuillSelect.d.ts +3 -0
  491. package/dist/esm/components/QuillSelect.d.ts.map +1 -0
  492. package/dist/esm/components/QuillSelect.js +124 -0
  493. package/dist/esm/components/QuillTable.d.ts +3 -0
  494. package/dist/esm/components/QuillTable.d.ts.map +1 -0
  495. package/dist/esm/components/QuillTable.js +256 -0
  496. package/dist/esm/components/UiComponents.d.ts +130 -0
  497. package/dist/esm/components/UiComponents.d.ts.map +1 -0
  498. package/dist/esm/components/UiComponents.js +248 -0
  499. package/dist/esm/components/selectUtils.d.ts +10 -0
  500. package/dist/esm/components/selectUtils.d.ts.map +1 -0
  501. package/dist/esm/components/selectUtils.js +37 -0
  502. package/dist/esm/contexts/BaseColorContext.d.ts +4 -0
  503. package/dist/esm/contexts/BaseColorContext.d.ts.map +1 -0
  504. package/dist/esm/contexts/BaseColorContext.js +3 -0
  505. package/dist/esm/contexts/HoveredValueContext.d.ts +8 -0
  506. package/dist/esm/contexts/HoveredValueContext.d.ts.map +1 -0
  507. package/dist/esm/contexts/HoveredValueContext.js +5 -0
  508. package/dist/esm/contexts/RootStylesContext.d.ts +4 -0
  509. package/dist/esm/contexts/RootStylesContext.d.ts.map +1 -0
  510. package/dist/esm/contexts/RootStylesContext.js +3 -0
  511. package/dist/esm/contexts/SelectedValueContext.d.ts +8 -0
  512. package/dist/esm/contexts/SelectedValueContext.d.ts.map +1 -0
  513. package/dist/esm/contexts/SelectedValueContext.js +6 -0
  514. package/dist/esm/contexts/index.d.ts +5 -0
  515. package/dist/esm/contexts/index.d.ts.map +1 -0
  516. package/dist/esm/contexts/index.js +4 -0
  517. package/dist/esm/hooks/index.d.ts +5 -0
  518. package/dist/esm/hooks/index.d.ts.map +1 -0
  519. package/dist/esm/hooks/index.js +4 -0
  520. package/dist/esm/hooks/useDashboard.d.ts +7 -0
  521. package/dist/esm/hooks/useDashboard.d.ts.map +1 -0
  522. package/dist/esm/hooks/useDashboard.js +50 -0
  523. package/dist/esm/hooks/useExport.d.ts +15 -0
  524. package/dist/esm/hooks/useExport.d.ts.map +1 -0
  525. package/dist/esm/hooks/useExport.js +27 -0
  526. package/dist/esm/hooks/useFormat.d.ts +6 -0
  527. package/dist/esm/hooks/useFormat.d.ts.map +1 -0
  528. package/dist/esm/hooks/useFormat.js +21 -0
  529. package/dist/esm/hooks/useInternalState.d.ts +4 -0
  530. package/dist/esm/hooks/useInternalState.d.ts.map +1 -0
  531. package/dist/esm/hooks/useInternalState.js +14 -0
  532. package/dist/esm/hooks/useOnClickOutside.d.ts +3 -0
  533. package/dist/esm/hooks/useOnClickOutside.d.ts.map +1 -0
  534. package/dist/esm/hooks/useOnClickOutside.js +18 -0
  535. package/dist/esm/hooks/useOnWindowResize.d.ts +5 -0
  536. package/dist/esm/hooks/useOnWindowResize.d.ts.map +1 -0
  537. package/dist/esm/hooks/useOnWindowResize.js +14 -0
  538. package/dist/esm/hooks/useQuill.d.ts +46 -0
  539. package/dist/esm/hooks/useQuill.d.ts.map +1 -0
  540. package/dist/esm/hooks/useQuill.js +90 -0
  541. package/dist/esm/hooks/useSelectOnKeyDown.d.ts +3 -0
  542. package/dist/esm/hooks/useSelectOnKeyDown.d.ts.map +1 -0
  543. package/dist/esm/hooks/useSelectOnKeyDown.js +63 -0
  544. package/dist/esm/index.d.ts +19 -0
  545. package/dist/esm/index.d.ts.map +1 -0
  546. package/dist/esm/index.js +16 -0
  547. package/dist/esm/internals/ReportBuilder/PivotList.d.ts +34 -0
  548. package/dist/esm/internals/ReportBuilder/PivotList.d.ts.map +1 -0
  549. package/dist/esm/internals/ReportBuilder/PivotList.js +56 -0
  550. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +62 -0
  551. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -0
  552. package/dist/esm/internals/ReportBuilder/PivotModal.js +909 -0
  553. package/dist/esm/internals/ReportBuilder/PivotModal.spec.d.ts +2 -0
  554. package/dist/esm/internals/ReportBuilder/PivotModal.spec.d.ts.map +1 -0
  555. package/dist/esm/internals/ReportBuilder/PivotModal.spec.js +211 -0
  556. package/dist/esm/lib/font.d.ts +14 -0
  557. package/dist/esm/lib/font.d.ts.map +1 -0
  558. package/dist/esm/lib/font.js +13 -0
  559. package/dist/esm/lib/index.d.ts +4 -0
  560. package/dist/esm/lib/index.d.ts.map +1 -0
  561. package/dist/esm/lib/index.js +3 -0
  562. package/dist/esm/lib/inputTypes.d.ts +21 -0
  563. package/dist/esm/lib/inputTypes.d.ts.map +1 -0
  564. package/dist/esm/lib/inputTypes.js +55 -0
  565. package/dist/esm/lib/utils.d.ts +10 -0
  566. package/dist/esm/lib/utils.d.ts.map +1 -0
  567. package/dist/esm/lib/utils.js +35 -0
  568. package/dist/esm/utils/aggregate.d.ts +4 -0
  569. package/dist/esm/utils/aggregate.d.ts.map +1 -0
  570. package/dist/esm/utils/aggregate.js +423 -0
  571. package/dist/esm/utils/axisFormatter.d.ts +20 -0
  572. package/dist/esm/utils/axisFormatter.d.ts.map +1 -0
  573. package/dist/esm/utils/axisFormatter.js +190 -0
  574. package/dist/esm/utils/color.d.ts +13 -0
  575. package/dist/esm/utils/color.d.ts.map +1 -0
  576. package/dist/esm/utils/color.js +247 -0
  577. package/dist/esm/utils/crypto.d.ts +2 -0
  578. package/dist/esm/utils/crypto.d.ts.map +1 -0
  579. package/dist/esm/utils/crypto.js +6 -0
  580. package/dist/esm/utils/csv.d.ts +6 -0
  581. package/dist/esm/utils/csv.d.ts.map +1 -0
  582. package/dist/esm/utils/csv.js +76 -0
  583. package/dist/esm/utils/dashboard.d.ts +12 -0
  584. package/dist/esm/utils/dashboard.d.ts.map +1 -0
  585. package/dist/esm/utils/dashboard.js +170 -0
  586. package/dist/esm/utils/dataFetcher.d.ts +3 -0
  587. package/dist/esm/utils/dataFetcher.d.ts.map +1 -0
  588. package/dist/esm/utils/dataFetcher.js +76 -0
  589. package/dist/esm/utils/dates.d.ts +10 -0
  590. package/dist/esm/utils/dates.d.ts.map +1 -0
  591. package/dist/esm/utils/dates.js +32 -0
  592. package/dist/esm/utils/getDomain.d.ts +8 -0
  593. package/dist/esm/utils/getDomain.d.ts.map +1 -0
  594. package/dist/esm/utils/getDomain.js +28 -0
  595. package/dist/esm/utils/merge.d.ts +2 -0
  596. package/dist/esm/utils/merge.d.ts.map +1 -0
  597. package/dist/esm/utils/merge.js +45 -0
  598. package/dist/esm/utils/styles.d.ts +17 -0
  599. package/dist/esm/utils/styles.d.ts.map +1 -0
  600. package/dist/esm/utils/styles.js +16 -0
  601. package/dist/esm/utils/valueFormatter.d.ts +27 -0
  602. package/dist/esm/utils/valueFormatter.d.ts.map +1 -0
  603. package/dist/esm/utils/valueFormatter.js +246 -0
  604. package/dist/esm/utils/valueFormatterCSV.d.ts +17 -0
  605. package/dist/esm/utils/valueFormatterCSV.d.ts.map +1 -0
  606. package/dist/esm/utils/valueFormatterCSV.js +95 -0
  607. package/package.json +1 -1
@@ -0,0 +1,916 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generatePivotTable = exports.isDateField = exports.generatePivotTableYAxis = exports.PivotModal = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ // @ts-nocheck
6
+ const react_1 = require("react");
7
+ const Context_1 = require("../../Context");
8
+ const dataFetcher_1 = require("../../utils/dataFetcher");
9
+ const assets_1 = require("../../assets");
10
+ const PivotList_1 = require("./PivotList");
11
+ const date_fns_1 = require("date-fns");
12
+ const valueFormatter_1 = require("../../utils/valueFormatter");
13
+ const ChartBuilder_1 = require("../../ChartBuilder");
14
+ const QuillCard_1 = require("../../components/QuillCard");
15
+ const QuillHover = () => {
16
+ return ((0, jsx_runtime_1.jsx)("style", { children: `
17
+ .quill-hover {
18
+ background-color: white;
19
+ }
20
+ .quill-hover:hover {
21
+ background-color: rgba(56, 65, 81, 0.05);
22
+ }
23
+ .quill-tab:active {
24
+ background-color: rgba(56, 65, 81, 0.15);
25
+ }
26
+ ` }));
27
+ };
28
+ const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField, setPivotColumnField, pivotValueField, setPivotValueField, pivotAggregation, setPivotAggregation, popUpTitle, setPopUpTitle, selectedTable, SelectComponent, ButtonComponent, PopoverComponent, HeaderComponent, LabelComponent, TextComponent, selectedPivotIndex, setSelectedPivotIndex, removePivot, selectPivot, showUpdatePivot, setShowUpdatePivot, data, columns, theme, isOpen, setIsOpen, dateRange, createdPivots, setCreatedPivots, recommendedPivots, setRecommendedPivots, triggerButtonText = 'Pivot', showPivotEditButton = false, showEditOnPivotClick = true, selectPivotOnEdit = false, showTrigger = true, rightAlign = false, parentRef, }) => {
29
+ const [isLoading, setIsLoading] = (0, react_1.useState)(false);
30
+ // for testing
31
+ // const [createdPivots, setCreatedPivots] = useState<Pivot[]>([
32
+ // {
33
+ // rowField: 'created_at',
34
+ // rowFieldType: 'date',
35
+ // columnField: undefined,
36
+ // columnFieldType: undefined,
37
+ // valueField: 'amount',
38
+ // aggregationType: 'sum',
39
+ // title: 'sum of amount by created_at',
40
+ // },
41
+ // {
42
+ // rowField: 'merchant',
43
+ // rowFieldType: 'varchar',
44
+ // columnField: 'created_at',
45
+ // columnFieldType: 'date',
46
+ // valueField: 'amount',
47
+ // aggregationType: 'sum',
48
+ // title: 'sum of amount by merchant and created_at',
49
+ // },
50
+ // {
51
+ // rowField: 'created_at',
52
+ // rowFieldType: 'date',
53
+ // columnField: 'merchant',
54
+ // columnFieldType: 'varchar',
55
+ // valueField: 'amount',
56
+ // aggregationType: 'sum',
57
+ // title: 'sum of amount by created_at and merchant',
58
+ // },
59
+ // ]);
60
+ const [pivotUpdateIndex, setPivotUpdateIndex] = (0, react_1.useState)(null);
61
+ const [selectedPivotType, setSelectedPivotType] = (0, react_1.useState)('recommended');
62
+ const [errors, setErrors] = (0, react_1.useState)([]);
63
+ const [client] = (0, react_1.useContext)(Context_1.ClientContext);
64
+ const [divWidth, setDivWidth] = (0, react_1.useState)(0);
65
+ const editModalRef = (0, react_1.useRef)();
66
+ const calculateWidth = () => {
67
+ return editModalRef.current.offsetWidth;
68
+ };
69
+ (0, react_1.useEffect)(() => {
70
+ // Measure the width of the div and update state
71
+ if (editModalRef.current) {
72
+ setDivWidth(calculateWidth());
73
+ }
74
+ // Optional: Handle window resize
75
+ const handleResize = () => {
76
+ if (editModalRef.current) {
77
+ setDivWidth(calculateWidth());
78
+ }
79
+ };
80
+ window.addEventListener('resize', handleResize);
81
+ // Cleanup listener
82
+ return () => {
83
+ window.removeEventListener('resize', handleResize);
84
+ };
85
+ }, []);
86
+ (0, react_1.useEffect)(() => {
87
+ // Measure the width of the div and update state
88
+ if (editModalRef.current) {
89
+ setDivWidth(calculateWidth());
90
+ }
91
+ }, [editModalRef.current, showUpdatePivot]);
92
+ (0, react_1.useEffect)(() => {
93
+ setSelectedPivotIndex(-1);
94
+ setPivotUpdateIndex(null);
95
+ setSelectedPivotType(undefined);
96
+ setPivotRowField(undefined);
97
+ setPivotColumnField(undefined);
98
+ setPivotValueField(undefined);
99
+ setPivotAggregation(undefined);
100
+ setIsOpen(false);
101
+ setErrors([]);
102
+ }, [selectedTable]);
103
+ const columnsToShow = (0, react_1.useMemo)(() => {
104
+ return (columns || []).reduce((map, col) => {
105
+ // only use columns shown in the report builder's table
106
+ // also filter out id
107
+ if (col.field !== 'id' && !col.field.endsWith('_id')) {
108
+ map[col.field] = col.fieldType;
109
+ }
110
+ return map;
111
+ }, {});
112
+ }, [columns]);
113
+ const selectedPivotTable = (0, react_1.useMemo)(() => {
114
+ if (selectedPivotIndex === -1) {
115
+ return null;
116
+ }
117
+ const pivot = createdPivots[selectedPivotIndex];
118
+ const { rows, columns } = generatePivotTable(pivot, data, dateRange);
119
+ return {
120
+ pivot: pivot,
121
+ rows: rows,
122
+ columns: columns,
123
+ };
124
+ }, [selectedPivotIndex, data, dateRange, createdPivots]);
125
+ const columnSelectOptions = (0, react_1.useMemo)(() => {
126
+ return [
127
+ { label: 'Select', value: '' },
128
+ ...Object.keys(columnsToShow).map((key) => {
129
+ return { label: key, value: key };
130
+ }),
131
+ ];
132
+ }, [columnsToShow]);
133
+ const onSelectRecommendedPivot = (pivot, index) => {
134
+ if (showEditOnPivotClick) {
135
+ onEditPivot(pivot, index);
136
+ return;
137
+ }
138
+ if (index === selectedPivotIndex && selectedPivotType === 'recommended') {
139
+ removePivot();
140
+ }
141
+ else {
142
+ selectPivot(pivot, index);
143
+ setSelectedPivotType('recommended');
144
+ }
145
+ setIsOpen(false);
146
+ };
147
+ const onSelectCreatedPivot = (pivot, index) => {
148
+ selectPivot(pivot, index);
149
+ setSelectedPivotType('created');
150
+ setIsOpen(false);
151
+ setPopUpTitle('Add Pivot');
152
+ };
153
+ const onEditPivot = (pivot, index) => {
154
+ setPivotRowField(pivot.rowField);
155
+ setPivotColumnField(pivot.columnField);
156
+ setPivotValueField(pivot.valueField);
157
+ setPivotAggregation(pivot.aggregationType);
158
+ setPivotUpdateIndex(index);
159
+ setShowUpdatePivot(true);
160
+ };
161
+ const onEditRecommendedPivot = (pivot, index) => {
162
+ onEditPivot(pivot, null);
163
+ };
164
+ const refreshPivots = (0, react_1.useCallback)(async () => {
165
+ if (isLoading || Object.keys(columnsToShow).length === 0) {
166
+ return;
167
+ }
168
+ setIsLoading(true);
169
+ const cloudBody = {
170
+ tableSchema: Object.keys(columnsToShow).reduce(function (map, col) {
171
+ // stop ai from seeing date fields. this is meant to stop the ai
172
+ // pivot tables from extracting month and year from the date
173
+ const fieldType = isDateField(columnsToShow[col])
174
+ ? 'string'
175
+ : columnsToShow[col];
176
+ map[col] = fieldType;
177
+ return map;
178
+ }, {}),
179
+ };
180
+ try {
181
+ const resp = await (0, dataFetcher_1.getDataFromCloud)(client, 'pivotai', cloudBody);
182
+ const recommendedPivots = resp?.data?.pivotTables || [];
183
+ // for testing if needed
184
+ // const recommendedPivots = [
185
+ // {
186
+ // title: 'Total Amount by Merchant',
187
+ // rowField: 'merchant',
188
+ // valueField: 'amount',
189
+ // aggregationType: 'sum',
190
+ // },
191
+ // {
192
+ // title: 'Average Amount by User and Category',
193
+ // rowField: 'user_name',
194
+ // columnField: 'category',
195
+ // valueField: 'amount',
196
+ // aggregationType: 'average',
197
+ // },
198
+ // {
199
+ // title: 'Count of Transactions by User and Merchant',
200
+ // rowField: 'user_name',
201
+ // columnField: 'merchant',
202
+ // valueField: 'id',
203
+ // aggregationType: 'count',
204
+ // },
205
+ // {
206
+ // title: 'Total Amount by Merchant and Category',
207
+ // rowField: 'merchant',
208
+ // columnField: 'category',
209
+ // valueField: 'amount',
210
+ // aggregationType: 'sum',
211
+ // },
212
+ // {
213
+ // title: 'Average Amount by Category and Date',
214
+ // rowField: 'category',
215
+ // columnField: 'created_at',
216
+ // valueField: 'amount',
217
+ // aggregationType: 'average',
218
+ // },
219
+ // {
220
+ // title: 'Count of Transactions by Date and Category',
221
+ // rowField: 'created_at',
222
+ // columnField: 'category',
223
+ // valueField: 'id',
224
+ // aggregationType: 'count',
225
+ // },
226
+ // ];
227
+ setRecommendedPivots(recommendedPivots
228
+ .filter((pivot) => pivot.rowField != '')
229
+ .map((pivot) => {
230
+ return {
231
+ ...pivot,
232
+ rowFieldType: columnsToShow[pivot.rowField],
233
+ columnFieldType: columnsToShow[pivot.columnField],
234
+ };
235
+ }));
236
+ // refreshing means the currently selected pivot doesn't exist in the options anymore
237
+ setSelectedPivotIndex(-1);
238
+ }
239
+ catch (e) {
240
+ console.error('Failed parsing pivotai response', e);
241
+ }
242
+ setIsLoading(false);
243
+ }, [selectedTable, data, columnsToShow, isLoading]);
244
+ (0, react_1.useEffect)(() => {
245
+ if (recommendedPivots.length === 0) {
246
+ refreshPivots();
247
+ }
248
+ }, [refreshPivots]);
249
+ const recommendedPivotTables = (0, react_1.useMemo)(() => {
250
+ const pts = recommendedPivots.map((p) => {
251
+ const { rows, columns } = generatePivotTable(p, data, dateRange, 6);
252
+ return { pivot: p, rows, columns };
253
+ });
254
+ return pts;
255
+ }, [recommendedPivots, data]);
256
+ const createdPivotTables = (0, react_1.useMemo)(() => {
257
+ const pts = createdPivots.map((p) => {
258
+ const { rows, columns } = generatePivotTable(p, data, dateRange, 6);
259
+ return { pivot: p, rows, columns };
260
+ });
261
+ return pts;
262
+ }, [createdPivots, data]);
263
+ const samplePivotTable = (0, react_1.useMemo)(() => {
264
+ if (!pivotAggregation || !pivotRowField) {
265
+ return null;
266
+ }
267
+ const pivot = {
268
+ rowField: pivotRowField || '',
269
+ rowFieldType: columnsToShow[pivotRowField || ''],
270
+ columnField: pivotColumnField,
271
+ columnFieldType: columnsToShow[pivotColumnField || ''],
272
+ valueField: pivotValueField || '',
273
+ aggregationType: pivotAggregation || '',
274
+ };
275
+ const { rows, columns } = generatePivotTable(pivot, data, dateRange);
276
+ return { pivot: pivot, rows, columns };
277
+ }, [
278
+ pivotAggregation,
279
+ pivotValueField,
280
+ pivotRowField,
281
+ pivotColumnField,
282
+ columnsToShow,
283
+ ]);
284
+ return ((0, jsx_runtime_1.jsx)("div", { style: { display: 'flex', flexDirection: 'column' }, children: (0, jsx_runtime_1.jsxs)("div", { style: {
285
+ position: 'relative',
286
+ display: 'inline-block',
287
+ textAlign: 'left',
288
+ }, children: [(0, jsx_runtime_1.jsx)("div", { style: {
289
+ display: 'flex',
290
+ flexDirection: 'row',
291
+ alignItems: 'center',
292
+ }, children: selectedPivotIndex !== -1 && ((0, jsx_runtime_1.jsx)("span", { style: {
293
+ height: 10,
294
+ width: 10,
295
+ backgroundColor: theme.primaryButtonColor,
296
+ borderRadius: '50%',
297
+ position: 'absolute',
298
+ top: -2,
299
+ right: -2,
300
+ } })) }), (0, jsx_runtime_1.jsx)(PopoverComponent, { onClose: () => {
301
+ setShowUpdatePivot(false);
302
+ setPopUpTitle('Add Pivot');
303
+ }, style: rightAlign ? { right: 0 } : {}, parentRef: parentRef, showTrigger: showTrigger, label: triggerButtonText, isOpen: isOpen, setIsOpen: setIsOpen, onClick: () => {
304
+ // table is not loaded yet, so pivot button is not clickable
305
+ if (Object.keys(columnsToShow).length === 0) {
306
+ return;
307
+ }
308
+ if (!isOpen && recommendedPivots.length === 0) {
309
+ refreshPivots();
310
+ }
311
+ setShowUpdatePivot(false);
312
+ }, children: (0, jsx_runtime_1.jsx)("div", { children: showUpdatePivot ? ((0, jsx_runtime_1.jsxs)("div", { className: "ref-in-use", ref: editModalRef, style: {
313
+ backgroundColor: 'rgb(255, 255, 255)',
314
+ display: 'flex',
315
+ flexDirection: 'column',
316
+ }, children: [(0, jsx_runtime_1.jsx)(HeaderComponent, { children: popUpTitle }), (0, jsx_runtime_1.jsx)("div", { style: { height: 12 } }), (0, jsx_runtime_1.jsx)("div", { style: { width: divWidth }, children: samplePivotTable ? ((0, jsx_runtime_1.jsx)("div", { style: {
317
+ marginBottom: 20,
318
+ minHeight: 160,
319
+ }, children: (0, jsx_runtime_1.jsx)(PivotList_1.PivotCard, { pivotTable: samplePivotTable, theme: theme, index: 0, onSelectPivot: () => { }, selectedPivotIndex: -1, onEditPivot: () => { }, ButtonComponent: ButtonComponent, showEdit: false, clickable: false, minHeight: 140, LabelComponent: LabelComponent, TextComponent: TextComponent, HeaderComponent: HeaderComponent }) })) : ((0, jsx_runtime_1.jsx)("div", { style: { marginBottom: 20, maxWidth: 470 }, children: (0, jsx_runtime_1.jsx)(QuillCard_1.QuillCard, { theme: theme, clickable: false, children: (0, jsx_runtime_1.jsx)("div", { style: {
320
+ color: theme.secondaryTextColor,
321
+ }, children: "Select a row field and aggregation type to see a preview" }) }) })) }), (0, jsx_runtime_1.jsxs)("div", { style: {
322
+ display: 'flex',
323
+ flexDirection: 'column',
324
+ gap: 10,
325
+ alignItems: 'center',
326
+ justifyContent: 'space-between',
327
+ }, children: [(0, jsx_runtime_1.jsxs)("div", { style: {
328
+ display: 'flex',
329
+ flexDirection: 'row',
330
+ gap: 20,
331
+ marginBottom: 5,
332
+ }, children: [(0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)(LabelComponent, { children: "Row Field" }), (0, jsx_runtime_1.jsx)(SelectComponent, { label: 'Row Field', id: "pivot-row-field", value: pivotRowField, onChange: (e) => {
333
+ setPivotRowField(e === '' ? undefined : e);
334
+ }, options: columnSelectOptions, theme: theme })] }), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)(LabelComponent, { children: "Column Field" }), (0, jsx_runtime_1.jsx)(SelectComponent, { label: 'Column Field', id: "pivot-row-field", value: pivotColumnField, onChange: (e) => {
335
+ setPivotColumnField(e === '' ? undefined : e);
336
+ }, options: columnSelectOptions, theme: theme })] })] }), (0, jsx_runtime_1.jsxs)("div", { style: {
337
+ display: 'flex',
338
+ flexDirection: 'row',
339
+ gap: 20,
340
+ marginBottom: 20,
341
+ }, children: [(0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)(LabelComponent, { children: "Value Field" }), (0, jsx_runtime_1.jsx)(SelectComponent, { label: 'Value Field', id: "pivot-row-field", value: pivotValueField, onChange: (e) => {
342
+ setPivotValueField(e === '' ? undefined : e);
343
+ }, options: pivotAggregation === 'count'
344
+ ? columnSelectOptions
345
+ : columnSelectOptions.filter((option) => {
346
+ return (option.value === '' ||
347
+ ChartBuilder_1.numberFormatOptions.includes(columns.find((col) => col.field === option.value)?.format));
348
+ }), theme: theme })] }), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)(LabelComponent, { children: "Aggregation Type" }), (0, jsx_runtime_1.jsx)(SelectComponent, { label: 'Aggregation Type', id: "pivot-row-field", value: pivotAggregation, theme: theme, onChange: (e) => {
349
+ if (e !== 'count' &&
350
+ pivotValueField &&
351
+ !ChartBuilder_1.numberFormatOptions.includes(columns.find((col) => col.field === pivotValueField)?.format)) {
352
+ setPivotValueField(null);
353
+ }
354
+ setPivotAggregation(e === '' ? undefined : e);
355
+ }, options: ['', 'sum', 'average', 'count'].map((option) => {
356
+ return { label: option || 'Select', value: option };
357
+ }) })] })] })] }), (0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsx)(ButtonComponent, { id: "custom-button", onClick: () => {
358
+ const errors = [];
359
+ if (!pivotRowField) {
360
+ errors.push('Row field cannot be empty');
361
+ }
362
+ if (!pivotValueField && pivotAggregation !== 'count') {
363
+ errors.push("Value field cannot be empty when aggregation is not 'count'");
364
+ }
365
+ if (!pivotAggregation) {
366
+ errors.push('Aggregation cannot be empty');
367
+ }
368
+ if (errors.length === 0) {
369
+ const pivot = {
370
+ rowField: pivotRowField || '',
371
+ rowFieldType: columnsToShow[pivotRowField || ''],
372
+ columnField: pivotColumnField,
373
+ columnFieldType: columnsToShow[pivotColumnField || ''],
374
+ valueField: pivotValueField || '',
375
+ aggregationType: pivotAggregation || '',
376
+ };
377
+ pivot.title = generatePivotTitle(pivot);
378
+ setIsOpen(false);
379
+ setCreatedPivots([pivot]);
380
+ onSelectCreatedPivot(pivot, 0);
381
+ setPopUpTitle('Add Pivot');
382
+ }
383
+ setErrors(errors);
384
+ }, label: popUpTitle }) }), (0, jsx_runtime_1.jsx)("div", { children: errors.length > 0 && ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("div", { style: {
385
+ fontSize: 14,
386
+ marginBottom: '6px',
387
+ marginTop: '12px',
388
+ fontWeight: '600',
389
+ color: theme.secondaryTextColor,
390
+ }, children: "Pivot Errors" }), errors.map((error, index) => ((0, jsx_runtime_1.jsx)("div", { style: {
391
+ borderRadius: 8,
392
+ backgroundColor: '#FF9494',
393
+ paddingLeft: '12px',
394
+ paddingRight: '8px',
395
+ height: 30,
396
+ display: 'flex',
397
+ alignItems: 'center',
398
+ fontSize: 13,
399
+ fontWeight: 'bold',
400
+ fontFamily: theme?.fontFamily,
401
+ color: 'white',
402
+ marginBottom: 5,
403
+ }, children: error }, index)))] })) })] })) : ((0, jsx_runtime_1.jsx)("div", { style: {
404
+ display: 'flex',
405
+ flexDirection: 'column',
406
+ fontFamily: theme?.fontFamily,
407
+ color: theme?.primaryTextColor,
408
+ width: selectedPivotTable ? 500 : 600,
409
+ maxHeight: 600,
410
+ overflowY: 'scroll',
411
+ }, children: selectedPivotIndex >= 0 ? ((0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsx)("div", { onClick: () => {
412
+ setPopUpTitle('Edit Pivot');
413
+ onEditPivot(createdPivots[0], 0);
414
+ }, children: (0, jsx_runtime_1.jsx)(PivotList_1.PivotCard, { pivotTable: {
415
+ pivot: selectedPivotTable?.pivot,
416
+ rows: selectedPivotTable?.rows,
417
+ columns: selectedPivotTable?.columns,
418
+ }, theme: theme, index: 0, onSelectPivot: () => { }, selectedPivotIndex: -1, onEditPivot: () => { }, ButtonComponent: ButtonComponent, showEdit: false, onClose: () => {
419
+ removePivot();
420
+ }, clickable: true, minHeight: 180, LabelComponent: LabelComponent, TextComponent: TextComponent, HeaderComponent: HeaderComponent }) }) })) : ((0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', flexDirection: 'column' }, children: [(0, jsx_runtime_1.jsx)("div", { style: {
421
+ fontWeight: '600',
422
+ marginBottom: 5,
423
+ fontSize: 18,
424
+ }, children: "Recommended Pivots" }), (0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsxs)("div", { onClick: refreshPivots, style: {
425
+ color: theme?.secondaryTextColor,
426
+ cursor: 'pointer',
427
+ marginTop: 0,
428
+ marginBottom: 12,
429
+ display: 'flex',
430
+ flexDirection: 'row',
431
+ alignItems: 'center',
432
+ width: 'min-content',
433
+ fontSize: 14,
434
+ paddingLeft: 8,
435
+ paddingRight: 6,
436
+ paddingTop: 6,
437
+ paddingBottom: 6,
438
+ borderRadius: 5,
439
+ }, className: "quill-hover", children: [(0, jsx_runtime_1.jsx)(QuillHover, {}), (0, jsx_runtime_1.jsx)(assets_1.RefreshIcon, { style: { marginRight: 5 } }), "Refresh"] }) }), isLoading ? ((0, jsx_runtime_1.jsxs)("div", { style: {
440
+ background: theme.backgroundColor,
441
+ width: 250,
442
+ minWidth: 250,
443
+ height: '100%',
444
+ paddingLeft: 20,
445
+ paddingRight: 30,
446
+ paddingTop: 40,
447
+ display: 'flex',
448
+ margin: '0px auto',
449
+ justifyContent: 'center',
450
+ }, children: [(0, jsx_runtime_1.jsx)("div", { style: { height: 100 } }), (0, jsx_runtime_1.jsxs)("svg", { width: "24", height: "24", children: [(0, jsx_runtime_1.jsx)("circle", { cx: "12", cy: "12", r: "9.375", strokeWidth: "3.75", strokeDasharray: "calc(2 * 3.14 * 9.375 / 3) calc(2 * 3.14 * 9.375 * 2 / 3)", strokeDashoffset: "calc(2 * 3.14 * 9.375 / 6)", stroke: theme?.primaryTextColor || '#364153', fill: "none", transform: "rotate(-90 12 12)", children: (0, jsx_runtime_1.jsx)("animateTransform", { attributeName: "transform", attributeType: "XML", type: "rotate", from: "-180 12 12", to: "180 12 12", dur: "0.8s", repeatCount: "indefinite" }) }), (0, jsx_runtime_1.jsx)("circle", { cx: "12", cy: "12", r: "9.375", strokeWidth: "3.75", strokeDasharray: "calc(2 * 3.14 * 9.375 / 3) calc(2 * 3.14 * 9.375 * 1 / 3)", strokeDashoffset: "calc(2 * 3.14 * 9.375 / 3) calc(2 * 3.14 * 9.375 * 2 / 3)", stroke: '#ADB1B9', fill: "none", transform: "rotate(90 12 12)", children: (0, jsx_runtime_1.jsx)("animateTransform", { attributeName: "transform", attributeType: "XML", type: "rotate", from: "0 12 12", to: "360 12 12", dur: "0.8s", repeatCount: "indefinite" }) })] })] })) : ((0, jsx_runtime_1.jsxs)("div", { children: [recommendedPivotTables.length == 0 && ((0, jsx_runtime_1.jsx)("div", { style: { marginBottom: 20 }, children: "There are currently no recommended pivots available." })), (0, jsx_runtime_1.jsx)(PivotList_1.PivotList, { recommendedPivotTables: recommendedPivotTables, createdPivotTables: createdPivotTables, theme: theme, onSelectRecommendedPivot: onSelectRecommendedPivot, onSelectCreatedPivot: onSelectCreatedPivot, selectedPivotIndex: selectedPivotIndex, selectedPivotType: selectedPivotType, ButtonComponent: ButtonComponent, HeaderComponent: HeaderComponent, onEditRecommendedPivot: onEditRecommendedPivot, onEditCreatedPivot: onEditPivot, showCreatePivot: true, showPivotEditButton: showPivotEditButton, LabelComponent: LabelComponent, TextComponent: TextComponent })] }))] })) })) }) })] }) }));
451
+ };
452
+ exports.PivotModal = PivotModal;
453
+ function generatePivotTableYAxis(pivot, cols, format) {
454
+ // Use the column field for the field and label if there is one
455
+ if (pivot.columnField) {
456
+ return cols.slice(1).map(({ field, label }) => ({ field, label, format }));
457
+ }
458
+ // For count aggregations, use 'count' for the label
459
+ if (pivot?.aggregationType === 'count') {
460
+ return [{ field: pivot.valueField, label: 'count', format: format }];
461
+ }
462
+ // For average aggregations, use 'average <label>' for the label
463
+ if (pivot?.aggregationType === 'average') {
464
+ const label = `average ${pivot.valueField}`;
465
+ return [{ field: pivot.valueField, label, format: format }];
466
+ }
467
+ // otherwise use the default (ie. the field label)
468
+ return [
469
+ {
470
+ field: pivot.valueField,
471
+ label: '',
472
+ format: format,
473
+ },
474
+ ];
475
+ }
476
+ exports.generatePivotTableYAxis = generatePivotTableYAxis;
477
+ function generatePivotTitle(pivot) {
478
+ return (0, ChartBuilder_1.snakeCaseToTitleCase)(`${pivot.aggregationType} of ${pivot.valueField} by ${pivot.rowField}${pivot.columnField ? ` and ${pivot.columnField}` : ''}`);
479
+ }
480
+ function castValueToDate(value) {
481
+ if (!value) {
482
+ return null;
483
+ }
484
+ if (typeof value === 'object' && value.value) {
485
+ return new Date(value.value);
486
+ }
487
+ return new Date(value);
488
+ }
489
+ function getDateRange(dateRange, column, data) {
490
+ if (!dateRange || !dateRange[0]) {
491
+ if (data.length == 0 || !data[0][column]) {
492
+ return { start: new Date(), end: new Date() };
493
+ }
494
+ const firstDate = castValueToDate(data[0][column]);
495
+ if (data.length == 1) {
496
+ return {
497
+ start: firstDate || new Date(),
498
+ end: firstDate || new Date(),
499
+ };
500
+ }
501
+ let earliestDate = firstDate;
502
+ let lastestDate = firstDate;
503
+ for (let i = 0; i < data.length; i++) {
504
+ if (data[i][column]) {
505
+ const value = castValueToDate(data[i][column]);
506
+ lastestDate = lastestDate === null ? value : (0, date_fns_1.max)([lastestDate, value]);
507
+ earliestDate =
508
+ earliestDate === null ? value : (0, date_fns_1.min)([earliestDate, value]);
509
+ }
510
+ }
511
+ return { start: earliestDate, end: lastestDate };
512
+ }
513
+ else {
514
+ return { start: dateRange[0], end: dateRange[1] };
515
+ }
516
+ }
517
+ function getDateBuckets(dateRange, column, data) {
518
+ if (!dateRange || !dateRange[0]) {
519
+ return (0, date_fns_1.eachMonthOfInterval)(getDateRange(dateRange, column, data));
520
+ }
521
+ const dayDifference = (0, date_fns_1.differenceInDays)(new Date(dateRange[1]), new Date(dateRange[0]));
522
+ return dayDifferenceToInterval(dayDifference, dateRange);
523
+ }
524
+ function getCompDateBuckets(dateRange, compDateRange, column, data) {
525
+ if (!dateRange || !dateRange[0]) {
526
+ return (0, date_fns_1.eachMonthOfInterval)(getDateRange(dateRange, column, data));
527
+ }
528
+ const dayDifference = (0, date_fns_1.differenceInDays)(new Date(dateRange[1]), new Date(dateRange[0]));
529
+ return dayDifferenceToInterval(dayDifference, compDateRange);
530
+ }
531
+ function dayDifferenceToInterval(dayDifference, dateRange) {
532
+ if (dayDifference < 14) {
533
+ return (0, date_fns_1.eachDayOfInterval)({ start: dateRange[0], end: dateRange[1] });
534
+ }
535
+ else if (dayDifference < 60) {
536
+ return (0, date_fns_1.eachWeekOfInterval)({ start: dateRange[0], end: dateRange[1] }, { weekStartsOn: 1 });
537
+ }
538
+ else if (dayDifference < 365 * 3) {
539
+ return (0, date_fns_1.eachMonthOfInterval)({ start: dateRange[0], end: dateRange[1] });
540
+ }
541
+ else {
542
+ return (0, date_fns_1.eachYearOfInterval)({ start: dateRange[0], end: dateRange[1] });
543
+ }
544
+ }
545
+ function getDateString(value, dateRange) {
546
+ let format;
547
+ if (!dateRange || !dateRange[0]) {
548
+ format = 'MMM_yyyy';
549
+ }
550
+ else {
551
+ const dayDifference = (0, date_fns_1.differenceInDays)(new Date(dateRange[1]), new Date(dateRange[0]));
552
+ if (dayDifference < 14) {
553
+ format = 'MMM_dd_yyyy';
554
+ }
555
+ else if (dayDifference < 60) {
556
+ format = 'MMM_dd-MMM_dd';
557
+ }
558
+ else if (dayDifference < 365 * 3) {
559
+ format = 'MMM_yyyy';
560
+ }
561
+ else {
562
+ format = 'yyyy';
563
+ }
564
+ }
565
+ return (0, valueFormatter_1.valueFormatter)({
566
+ value,
567
+ field: 'date',
568
+ fields: [{ field: 'date', format }],
569
+ });
570
+ }
571
+ function isDateField(fieldType) {
572
+ return (fieldType === 'date' ||
573
+ fieldType === 'datetime' ||
574
+ fieldType === 'timestamp' ||
575
+ fieldType === 'timestamptz');
576
+ }
577
+ exports.isDateField = isDateField;
578
+ const isNullUndefinedOrInvalidDate = (date) => date === null || date === undefined || isNaN(date.getTime());
579
+ // If the value is an object with key value (ie. a BigQuery date) we will
580
+ // return the inner value, otherwise return passed param as-is.
581
+ const handleBigQueryValue = (value) => {
582
+ if (Boolean(value) &&
583
+ typeof value === 'object' &&
584
+ Object.keys(value).length === 1 &&
585
+ value['value']) {
586
+ return value['value'];
587
+ }
588
+ return value;
589
+ };
590
+ // Process out all the BigQuery dates.
591
+ const fixBigQueryData = (data) => {
592
+ const newData = [];
593
+ for (const row of data) {
594
+ const newRow = {};
595
+ for (const key in row) {
596
+ newRow[key] = handleBigQueryValue(row[key]);
597
+ }
598
+ newData.push(newRow);
599
+ }
600
+ return newData;
601
+ };
602
+ function generatePivotTable(pivot, data, dateRange, isComparison, rowLimit = -1, compRange = null) {
603
+ // Handle edge-case for BigQuery objects.
604
+ data = fixBigQueryData(data);
605
+ if (dateRange[0] === null && dateRange[1] === null) {
606
+ dateRange = [new Date(0), (0, date_fns_1.add)(new Date(), { years: 5 })];
607
+ }
608
+ if (!compRange ||
609
+ isNullUndefinedOrInvalidDate(compRange[0]) ||
610
+ isNullUndefinedOrInvalidDate(compRange[1])) {
611
+ compRange = null;
612
+ }
613
+ const pivotRows = [];
614
+ const uniqueRows = (isDateField(pivot.rowFieldType)
615
+ ? getDateBuckets(dateRange, pivot.rowField, data)
616
+ : [...new Set(data.map((item) => item[pivot.rowField]))]).filter((row) => Boolean(row));
617
+ const rowDateRange = pivot.rowField
618
+ ? getDateRange(dateRange, pivot.rowField, data)
619
+ : null;
620
+ const columnDateRange = pivot.columnField
621
+ ? getDateRange(dateRange, pivot.columnField, data)
622
+ : null;
623
+ // If columnField is not provided, we will not be using uniqueColumns
624
+ const uniqueColumns = (pivot.columnField && pivot.columnField.trim()
625
+ ? isDateField(pivot.columnFieldType)
626
+ ? getDateBuckets(dateRange, pivot.columnField, data)
627
+ : [...new Set(data.map((item) => item[pivot.columnField || '']))]
628
+ : [pivot.valueField]).filter((col) => Boolean(col));
629
+ // Map from new dates to their corresponding prior dates
630
+ const COL_DATE_MAP = {};
631
+ const ROW_DATE_MAP = {};
632
+ // add in the comparison columns for all columns in the pivot
633
+ let compUniqueRows = [];
634
+ let compRowDateRange = [];
635
+ if (isComparison) {
636
+ if (pivot.columnField) {
637
+ const col = pivot.columnField;
638
+ const row = pivot.rowField;
639
+ const isDateCol = isDateField(pivot.columnFieldType);
640
+ const isDateRow = isDateField(pivot.rowFieldType);
641
+ data.forEach((item) => {
642
+ if (isDateCol) {
643
+ const key = getDateString(item[col], dateRange);
644
+ const value = getDateString(item[`comparison_${col}`], dateRange);
645
+ COL_DATE_MAP[key] = value;
646
+ }
647
+ if (isDateRow) {
648
+ const key = getDateString(item[row], dateRange);
649
+ const value = getDateString(item[`comparison_${row}`], dateRange);
650
+ ROW_DATE_MAP[key] = value;
651
+ }
652
+ });
653
+ }
654
+ else {
655
+ const primaryColumns = [...uniqueColumns];
656
+ for (const primaryKey of primaryColumns) {
657
+ uniqueColumns.push(`comparison_${primaryKey}`);
658
+ }
659
+ }
660
+ compUniqueRows = (isDateField(pivot.rowFieldType)
661
+ ? getCompDateBuckets(dateRange, compRange ?? dateRange, pivot.rowField, data)
662
+ : [...new Set(data.map((item) => item[pivot.rowField]))]).filter((row) => Boolean(row));
663
+ compRowDateRange = pivot.rowField
664
+ ? getDateRange(compRange ?? dateRange, pivot.rowField, data)
665
+ : null;
666
+ }
667
+ const rowsToGenerate = rowLimit !== -1 && rowLimit <= uniqueRows.length
668
+ ? uniqueRows.slice(0, rowLimit + 1)
669
+ : uniqueRows;
670
+ rowsToGenerate.forEach((rowValue, rowIndex) => {
671
+ const row = {
672
+ [pivot.rowField]: isDateField(pivot.rowFieldType)
673
+ ? getDateString(rowValue, dateRange)
674
+ : rowValue === null
675
+ ? 'Null'
676
+ : rowValue === false
677
+ ? 'False'
678
+ : rowValue === true
679
+ ? 'True'
680
+ : rowValue,
681
+ };
682
+ uniqueColumns.forEach((colValue, colIndex) => {
683
+ let comparisonFilteredData = [];
684
+ let filteredData = [];
685
+ let comparisonValue;
686
+ let value;
687
+ const nextRowValue = isDateField(pivot.rowFieldType)
688
+ ? uniqueRows[rowIndex + 1] ?? (0, date_fns_1.endOfDay)(rowDateRange.end)
689
+ : null;
690
+ const compRowValue = compUniqueRows[rowIndex];
691
+ const compNextRowValue = isDateField(pivot.rowFieldType)
692
+ ? compUniqueRows[rowIndex + 1] ?? (0, date_fns_1.endOfDay)(compRowDateRange.end)
693
+ : null;
694
+ if (pivot.columnField) {
695
+ const nextColumnValue = isDateField(pivot.columnFieldType)
696
+ ? uniqueColumns[colIndex + 1] || (0, date_fns_1.endOfDay)(columnDateRange.end)
697
+ : null;
698
+ // If columnField is provided, filter by both rowField and columnField
699
+ if (isDateField(pivot.columnFieldType) &&
700
+ isDateField(pivot.rowFieldType)) {
701
+ filteredData = data.filter((item) => {
702
+ return ((0, date_fns_1.isWithinInterval)(new Date(item[pivot.rowField]), {
703
+ start: rowValue,
704
+ end: (0, date_fns_1.subMilliseconds)(nextRowValue, 1),
705
+ }) &&
706
+ (0, date_fns_1.isWithinInterval)(new Date(item[pivot.columnField]), {
707
+ start: colValue,
708
+ end: (0, date_fns_1.subMilliseconds)(nextColumnValue, 1),
709
+ }));
710
+ });
711
+ if (isComparison) {
712
+ comparisonFilteredData = data.filter((item) => {
713
+ return ((0, date_fns_1.isWithinInterval)(new Date(item[pivot.rowField]), {
714
+ start: rowValue,
715
+ end: (0, date_fns_1.subMilliseconds)(nextRowValue, 1),
716
+ }) &&
717
+ (0, date_fns_1.isWithinInterval)(new Date(item[pivot.columnField]), {
718
+ start: colValue,
719
+ end: (0, date_fns_1.subMilliseconds)(nextColumnValue, 1),
720
+ }));
721
+ });
722
+ }
723
+ }
724
+ else if (isDateField(pivot.columnFieldType) &&
725
+ !isDateField(pivot.rowFieldType)) {
726
+ filteredData = data.filter((item) => {
727
+ return (item[pivot.rowField] === rowValue &&
728
+ (0, date_fns_1.isWithinInterval)(new Date(item[pivot.columnField]), {
729
+ start: colValue,
730
+ end: (0, date_fns_1.subMilliseconds)(nextColumnValue, 1),
731
+ }));
732
+ });
733
+ if (isComparison) {
734
+ comparisonFilteredData = data.filter((item) => {
735
+ return (item[`comparison_${pivot.rowField}`] === rowValue &&
736
+ (0, date_fns_1.isWithinInterval)(new Date(item[pivot.columnField]), {
737
+ start: colValue,
738
+ end: (0, date_fns_1.subMilliseconds)(nextColumnValue, 1),
739
+ }));
740
+ });
741
+ }
742
+ }
743
+ else if (!isDateField(pivot.columnFieldType) &&
744
+ isDateField(pivot.rowFieldType)) {
745
+ filteredData = data.filter((item) => {
746
+ return ((0, date_fns_1.isWithinInterval)(new Date(item[pivot.rowField]), {
747
+ start: rowValue,
748
+ end: (0, date_fns_1.subMilliseconds)(nextRowValue, 1),
749
+ }) && item[pivot.columnField || ''] === colValue);
750
+ });
751
+ if (isComparison) {
752
+ comparisonFilteredData = data.filter((item) => {
753
+ return ((0, date_fns_1.isWithinInterval)(new Date(item[pivot.rowField]), {
754
+ start: rowValue,
755
+ end: (0, date_fns_1.subMilliseconds)(nextRowValue, 1),
756
+ }) &&
757
+ item[`comparison_${pivot.columnField}` || ''] === colValue);
758
+ });
759
+ }
760
+ }
761
+ else {
762
+ filteredData = data.filter((item) => {
763
+ return (item[pivot.rowField] === rowValue &&
764
+ item[pivot.columnField || ''] === colValue);
765
+ });
766
+ if (isComparison) {
767
+ comparisonFilteredData = data.filter((item) => {
768
+ return (item[`comparison_${pivot.rowField}`] === rowValue &&
769
+ item[`comparison_${pivot.columnField}`] === colValue);
770
+ });
771
+ }
772
+ }
773
+ }
774
+ else {
775
+ // NOTE: For 1D columns, the comparisons are handled inside the colvalue
776
+ // so there is no need to filter for comparisonFilteredData here.
777
+ // If columnField is not provided, filter by rowField only
778
+ if (colValue.startsWith('comparison_')) {
779
+ filteredData = isDateField(pivot.rowFieldType)
780
+ ? data.filter((item) => {
781
+ return (compRowValue &&
782
+ (0, date_fns_1.isWithinInterval)(new Date(item[`comparison_${pivot.rowField}`]), {
783
+ start: compRowValue,
784
+ end: (0, date_fns_1.subMilliseconds)(compNextRowValue, 1),
785
+ }));
786
+ })
787
+ : data.filter((item) => item[`comparison_${pivot.rowField}`] === compRowValue);
788
+ }
789
+ else {
790
+ filteredData = isDateField(pivot.rowFieldType)
791
+ ? data.filter((item) => {
792
+ return (0, date_fns_1.isWithinInterval)(new Date(item[pivot.rowField]), {
793
+ start: rowValue,
794
+ end: (0, date_fns_1.subMilliseconds)(nextRowValue, 1),
795
+ });
796
+ })
797
+ : data.filter((item) => item[pivot.rowField] === rowValue);
798
+ }
799
+ }
800
+ // Aggregation logic remains the same
801
+ const key = pivot.columnField && pivot.columnField.trim()
802
+ ? pivot.valueField
803
+ : colValue;
804
+ switch (pivot.aggregationType) {
805
+ case 'sum':
806
+ value = filteredData.reduce((sum, item) => sum + parseFloat(item[key] ?? 0), 0);
807
+ if (isComparison) {
808
+ comparisonValue = comparisonFilteredData.reduce((sum, item) => sum + parseFloat(item[key] ?? 0), 0);
809
+ }
810
+ break;
811
+ case 'count':
812
+ value = filteredData.length;
813
+ if (isComparison) {
814
+ comparisonValue = comparisonFilteredData.length;
815
+ }
816
+ break;
817
+ case 'average':
818
+ value = filteredData.length
819
+ ? filteredData.reduce((sum, item) => sum + parseFloat(item[key] ?? 0), 0) / filteredData.length
820
+ : 0;
821
+ if (isComparison) {
822
+ comparisonValue = comparisonFilteredData.length
823
+ ? comparisonFilteredData.reduce((sum, item) => sum + parseFloat(item[key] ?? 0), 0) / comparisonFilteredData.length
824
+ : 0;
825
+ }
826
+ break;
827
+ // Implement other aggregation types as needed
828
+ default:
829
+ throw new Error('Unsupported aggregation type');
830
+ }
831
+ // Set the value on the row
832
+ // If columnField is not provided, colValue will be valueField
833
+ row[isDateField(pivot.columnFieldType)
834
+ ? getDateString(colValue, dateRange)
835
+ : colValue] = pivot.aggregationType === 'count' ? value : value.toFixed(2);
836
+ if (isComparison && pivot.columnField) {
837
+ if (isDateField(pivot.columnFieldType)) {
838
+ row[`comparison_${getDateString(colValue, dateRange)}`] =
839
+ pivot.aggregationType === 'count'
840
+ ? comparisonValue
841
+ : comparisonValue.toFixed(2);
842
+ }
843
+ else {
844
+ row[`comparison_${colValue}`] =
845
+ pivot.aggregationType === 'count'
846
+ ? comparisonValue
847
+ : comparisonValue.toFixed(2);
848
+ }
849
+ }
850
+ });
851
+ pivotRows.push(row);
852
+ });
853
+ const columns = [
854
+ {
855
+ label: pivot.rowField === null
856
+ ? 'Null'
857
+ : pivot.rowField === false
858
+ ? 'False'
859
+ : (0, ChartBuilder_1.snakeCaseToTitleCase)(pivot.rowField),
860
+ field: pivot.rowField,
861
+ },
862
+ ...(!pivot.columnField
863
+ ? [
864
+ {
865
+ label: pivot.rowField === null
866
+ ? 'Null'
867
+ : pivot.rowField === false
868
+ ? 'False'
869
+ : `Comparison ${(0, ChartBuilder_1.snakeCaseToTitleCase)(pivot.rowField)}`,
870
+ field: `comparison_${pivot.rowField}`,
871
+ },
872
+ ]
873
+ : []),
874
+ ...uniqueColumns.map((column, index) => {
875
+ const columnName = isDateField(pivot.columnFieldType)
876
+ ? getDateString(column, dateRange)
877
+ : column;
878
+ return {
879
+ label: column === null
880
+ ? 'Null'
881
+ : column === false
882
+ ? 'False'
883
+ : pivot.aggregationType === 'count' &&
884
+ !pivot.columnField &&
885
+ index === 1
886
+ ? 'Count'
887
+ : (0, ChartBuilder_1.snakeCaseToTitleCase)(columnName),
888
+ field: columnName,
889
+ };
890
+ }),
891
+ ...(isComparison && pivot.columnField
892
+ ? uniqueColumns.map((column, index) => {
893
+ const columnName = isDateField(pivot.columnFieldType)
894
+ ? getDateString(column, dateRange)
895
+ : column;
896
+ return {
897
+ label: column === null
898
+ ? 'Null'
899
+ : column === false
900
+ ? 'False'
901
+ : pivot.aggregationType === 'count' &&
902
+ !pivot.columnField &&
903
+ index === 1
904
+ ? 'Comparison Count'
905
+ : isDateField(pivot.columnFieldType)
906
+ ? COL_DATE_MAP[getDateString(column, dateRange)] ??
907
+ 'Comparison'
908
+ : `Comparison ${(0, ChartBuilder_1.snakeCaseToTitleCase)(columnName)}`,
909
+ field: `comparison_${columnName}`,
910
+ };
911
+ })
912
+ : []),
913
+ ];
914
+ return { rows: pivotRows, columns };
915
+ }
916
+ exports.generatePivotTable = generatePivotTable;