@quillsql/admin 1.6.1 → 1.6.3

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 (678) hide show
  1. package/dist/cjs/Admin.d.ts +41 -87
  2. package/dist/cjs/Admin.d.ts.map +1 -1
  3. package/dist/cjs/Admin.js +358 -456
  4. package/dist/cjs/AdminProvider.d.ts +108 -50
  5. package/dist/cjs/AdminProvider.d.ts.map +1 -1
  6. package/dist/cjs/AdminProvider.js +390 -208
  7. package/dist/cjs/api/ConnectionClient.d.ts +20 -38
  8. package/dist/cjs/api/ConnectionClient.d.ts.map +1 -1
  9. package/dist/cjs/api/ConnectionClient.js +291 -321
  10. package/dist/cjs/assets/ArrowDownHeadIcon.d.ts.map +1 -1
  11. package/dist/cjs/components/Banner/index.d.ts +0 -1
  12. package/dist/cjs/components/Banner/index.d.ts.map +1 -1
  13. package/dist/cjs/components/Banner/index.js +1 -1
  14. package/dist/cjs/components/CardSection.js +1 -1
  15. package/dist/cjs/components/CardTitle.js +1 -1
  16. package/dist/cjs/components/ClipboardButton.d.ts +8 -0
  17. package/dist/cjs/components/ClipboardButton.d.ts.map +1 -0
  18. package/dist/cjs/components/ClipboardButton.js +74 -0
  19. package/dist/cjs/components/DashboardSelectPopover.d.ts +8 -5
  20. package/dist/cjs/components/DashboardSelectPopover.d.ts.map +1 -1
  21. package/dist/cjs/components/DashboardSelectPopover.js +74 -185
  22. package/dist/cjs/components/DatabaseMismatchCard.d.ts +3 -3
  23. package/dist/cjs/components/DatabaseMismatchCard.d.ts.map +1 -1
  24. package/dist/cjs/components/DatabaseMismatchCard.js +3 -3
  25. package/dist/cjs/components/DatabaseSelector.d.ts.map +1 -1
  26. package/dist/cjs/components/DatabaseSelector.js +10 -2
  27. package/dist/cjs/components/DateRangePicker/SingleDatePicker.d.ts +10 -0
  28. package/dist/cjs/components/DateRangePicker/SingleDatePicker.d.ts.map +1 -0
  29. package/dist/cjs/components/DateRangePicker/SingleDatePicker.js +263 -0
  30. package/dist/cjs/components/DateRangePicker/YearlessDateRangePicker.d.ts +18 -0
  31. package/dist/cjs/components/DateRangePicker/YearlessDateRangePicker.d.ts.map +1 -0
  32. package/dist/cjs/components/DateRangePicker/YearlessDateRangePicker.js +288 -0
  33. package/dist/cjs/components/DateRangePicker/dateRangePickerUtils.d.ts +91 -0
  34. package/dist/cjs/components/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -0
  35. package/dist/cjs/components/DateRangePicker/dateRangePickerUtils.js +898 -0
  36. package/dist/cjs/components/DeleteButton.d.ts +0 -1
  37. package/dist/cjs/components/DeleteButton.d.ts.map +1 -1
  38. package/dist/cjs/components/DeleteButton.js +1 -1
  39. package/dist/cjs/components/DropDownMenu.js +1 -1
  40. package/dist/cjs/components/DropDownMenuWithLabel.d.ts +4 -3
  41. package/dist/cjs/components/DropDownMenuWithLabel.d.ts.map +1 -1
  42. package/dist/cjs/components/DropDownMenuWithLabel.js +56 -29
  43. package/dist/cjs/components/DynamicBanner.d.ts +2 -5
  44. package/dist/cjs/components/DynamicBanner.d.ts.map +1 -1
  45. package/dist/cjs/components/DynamicBanner.js +3 -3
  46. package/dist/cjs/components/EmptyDashboardComponent/index.d.ts +0 -1
  47. package/dist/cjs/components/EmptyDashboardComponent/index.d.ts.map +1 -1
  48. package/dist/cjs/components/EmptyDashboardComponent/index.js +6 -5
  49. package/dist/cjs/components/EmptyVirtualTablesComponent.d.ts +4 -0
  50. package/dist/cjs/components/EmptyVirtualTablesComponent.d.ts.map +1 -0
  51. package/dist/cjs/components/EmptyVirtualTablesComponent.js +41 -0
  52. package/dist/cjs/components/ExternalLink.d.ts +4 -0
  53. package/dist/cjs/components/ExternalLink.d.ts.map +1 -0
  54. package/dist/cjs/components/ExternalLink.js +15 -0
  55. package/dist/cjs/components/FormTooltip.d.ts +8 -0
  56. package/dist/cjs/components/FormTooltip.d.ts.map +1 -0
  57. package/dist/cjs/components/FormTooltip.js +89 -0
  58. package/dist/cjs/components/InputLabel.d.ts +4 -1
  59. package/dist/cjs/components/InputLabel.d.ts.map +1 -1
  60. package/dist/cjs/components/InputLabel.js +13 -8
  61. package/dist/cjs/components/InternalDashboard/ChartSkeleton.d.ts +11 -0
  62. package/dist/cjs/components/InternalDashboard/ChartSkeleton.d.ts.map +1 -0
  63. package/dist/cjs/components/InternalDashboard/ChartSkeleton.js +21 -0
  64. package/dist/cjs/components/InternalDashboard/DashboardFilter.d.ts +20 -0
  65. package/dist/cjs/components/InternalDashboard/DashboardFilter.d.ts.map +1 -0
  66. package/dist/cjs/components/InternalDashboard/DashboardFilter.js +104 -0
  67. package/dist/cjs/components/InternalDashboard/DashboardLoadingComponent.d.ts +7 -0
  68. package/dist/cjs/components/InternalDashboard/DashboardLoadingComponent.d.ts.map +1 -0
  69. package/dist/cjs/components/InternalDashboard/DashboardLoadingComponent.js +22 -0
  70. package/dist/cjs/components/InternalDashboard/DateRangePicker/QuillDateRangePicker.d.ts +37 -0
  71. package/dist/cjs/components/InternalDashboard/DateRangePicker/QuillDateRangePicker.d.ts.map +1 -0
  72. package/dist/cjs/components/InternalDashboard/DateRangePicker/QuillDateRangePicker.js +275 -0
  73. package/dist/cjs/components/InternalDashboard/DateRangePicker/dateRangePickerUtils.d.ts +85 -0
  74. package/dist/cjs/components/InternalDashboard/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -0
  75. package/dist/cjs/components/InternalDashboard/DateRangePicker/dateRangePickerUtils.js +534 -0
  76. package/dist/cjs/components/InternalDashboard/InternalDashboard.d.ts +17 -0
  77. package/dist/cjs/components/InternalDashboard/InternalDashboard.d.ts.map +1 -0
  78. package/dist/cjs/components/InternalDashboard/InternalDashboard.js +1947 -0
  79. package/dist/cjs/components/OrgSelect.d.ts +9 -13
  80. package/dist/cjs/components/OrgSelect.d.ts.map +1 -1
  81. package/dist/cjs/components/OrgSelect.js +136 -119
  82. package/dist/cjs/components/QuillMultiSelectWithCombo.d.ts +30 -0
  83. package/dist/cjs/components/QuillMultiSelectWithCombo.d.ts.map +1 -0
  84. package/dist/cjs/components/QuillMultiSelectWithCombo.js +504 -0
  85. package/dist/cjs/components/QuillPopover.d.ts +11 -0
  86. package/dist/cjs/components/QuillPopover.d.ts.map +1 -0
  87. package/dist/cjs/components/QuillPopover.js +180 -0
  88. package/dist/cjs/components/QuillSelect.d.ts +1 -1
  89. package/dist/cjs/components/QuillSelect.d.ts.map +1 -1
  90. package/dist/cjs/components/QuillSelect.js +38 -16
  91. package/dist/cjs/components/QuillSelectWithCombo.d.ts +22 -0
  92. package/dist/cjs/components/QuillSelectWithCombo.d.ts.map +1 -0
  93. package/dist/cjs/components/QuillSelectWithCombo.js +327 -0
  94. package/dist/cjs/components/QuillTab.d.ts +12 -0
  95. package/dist/cjs/components/QuillTab.d.ts.map +1 -0
  96. package/dist/cjs/components/QuillTab.js +84 -0
  97. package/dist/cjs/components/QuillToolTipPortal.d.ts +11 -0
  98. package/dist/cjs/components/QuillToolTipPortal.d.ts.map +1 -0
  99. package/dist/cjs/components/QuillToolTipPortal.js +108 -0
  100. package/dist/cjs/components/SegmentedControl.d.ts +8 -2
  101. package/dist/cjs/components/SegmentedControl.d.ts.map +1 -1
  102. package/dist/cjs/components/SegmentedControl.js +11 -12
  103. package/dist/cjs/components/SqlTextEditor.d.ts +2 -5
  104. package/dist/cjs/components/SqlTextEditor.d.ts.map +1 -1
  105. package/dist/cjs/components/SqlTextEditor.js +20 -19
  106. package/dist/cjs/components/StepDisplay.d.ts.map +1 -1
  107. package/dist/cjs/components/StepDisplay.js +2 -2
  108. package/dist/cjs/components/Tenants/EditTenant.d.ts +41 -0
  109. package/dist/cjs/components/Tenants/EditTenant.d.ts.map +1 -0
  110. package/dist/cjs/components/Tenants/EditTenant.js +760 -0
  111. package/dist/cjs/components/UiComponents.d.ts +35 -6
  112. package/dist/cjs/components/UiComponents.d.ts.map +1 -1
  113. package/dist/cjs/components/UiComponents.js +226 -28
  114. package/dist/cjs/components/VirtualTableTile.d.ts +7 -0
  115. package/dist/cjs/components/VirtualTableTile.d.ts.map +1 -0
  116. package/dist/cjs/components/VirtualTableTile.js +51 -0
  117. package/dist/cjs/components/index.d.ts +5 -5
  118. package/dist/cjs/components/index.d.ts.map +1 -1
  119. package/dist/cjs/components/index.js +1 -1
  120. package/dist/cjs/constants/dataTypes.d.ts.map +1 -1
  121. package/dist/cjs/constants/dataTypes.js +2 -0
  122. package/dist/cjs/forms/client_onboard/ConnectDatabase.d.ts +15 -6
  123. package/dist/cjs/forms/client_onboard/ConnectDatabase.d.ts.map +1 -1
  124. package/dist/cjs/forms/client_onboard/ConnectDatabase.js +209 -96
  125. package/dist/cjs/forms/client_onboard/ConnectSchema.d.ts +13 -9
  126. package/dist/cjs/forms/client_onboard/ConnectSchema.d.ts.map +1 -1
  127. package/dist/cjs/forms/client_onboard/ConnectSchema.js +158 -236
  128. package/dist/cjs/forms/client_onboard/CreateVirtualTables.d.ts +47 -0
  129. package/dist/cjs/forms/client_onboard/CreateVirtualTables.d.ts.map +1 -0
  130. package/dist/cjs/forms/client_onboard/CreateVirtualTables.js +396 -0
  131. package/dist/cjs/forms/client_onboard/__tests__/ConnectDatabase.test.d.ts +2 -0
  132. package/dist/cjs/forms/client_onboard/__tests__/ConnectDatabase.test.d.ts.map +1 -0
  133. package/dist/cjs/forms/client_onboard/__tests__/ConnectDatabase.test.js +571 -0
  134. package/dist/cjs/forms/client_onboard/__tests__/ConnectSchema.test.d.ts +2 -0
  135. package/dist/cjs/forms/client_onboard/__tests__/ConnectSchema.test.d.ts.map +1 -0
  136. package/dist/cjs/forms/client_onboard/__tests__/ConnectSchema.test.js +459 -0
  137. package/dist/cjs/forms/client_onboard/__tests__/CreateVirtualTables.test.d.ts +2 -0
  138. package/dist/cjs/forms/client_onboard/__tests__/CreateVirtualTables.test.d.ts.map +1 -0
  139. package/dist/cjs/forms/client_onboard/__tests__/CreateVirtualTables.test.js +385 -0
  140. package/dist/cjs/forms/virtual_tables/CreateEditVirtualTable.d.ts +20 -0
  141. package/dist/cjs/forms/virtual_tables/CreateEditVirtualTable.d.ts.map +1 -0
  142. package/dist/cjs/forms/virtual_tables/CreateEditVirtualTable.js +294 -0
  143. package/dist/cjs/hooks/useDashboardManager.d.ts +16 -0
  144. package/dist/cjs/hooks/useDashboardManager.d.ts.map +1 -0
  145. package/dist/cjs/hooks/useDashboardManager.js +113 -0
  146. package/dist/cjs/hooks/useDatabaseSchema.d.ts +5 -0
  147. package/dist/cjs/hooks/useDatabaseSchema.d.ts.map +1 -0
  148. package/dist/cjs/hooks/useDatabaseSchema.js +54 -0
  149. package/dist/cjs/hooks/useItemBeingEdited.d.ts +1 -2
  150. package/dist/cjs/hooks/useItemBeingEdited.d.ts.map +1 -1
  151. package/dist/cjs/hooks/useItemBeingEdited.js +2 -14
  152. package/dist/cjs/hooks/useOnClickOutside.d.ts +4 -1
  153. package/dist/cjs/hooks/useOnClickOutside.d.ts.map +1 -1
  154. package/dist/cjs/hooks/useOnClickOutside.js +50 -7
  155. package/dist/cjs/hooks/useTenants.d.ts +13 -0
  156. package/dist/cjs/hooks/useTenants.d.ts.map +1 -0
  157. package/dist/cjs/hooks/useTenants.js +174 -0
  158. package/dist/cjs/hooks/useThrottle.d.ts +2 -0
  159. package/dist/cjs/hooks/useThrottle.d.ts.map +1 -0
  160. package/dist/cjs/hooks/useThrottle.js +14 -0
  161. package/dist/cjs/icons/CheckCircleIcon.d.ts +5 -0
  162. package/dist/cjs/icons/CheckCircleIcon.d.ts.map +1 -0
  163. package/dist/cjs/icons/CheckCircleIcon.js +5 -0
  164. package/dist/cjs/icons/DownChevronIcon.d.ts +2 -0
  165. package/dist/cjs/icons/DownChevronIcon.d.ts.map +1 -0
  166. package/dist/cjs/icons/DownChevronIcon.js +7 -0
  167. package/dist/cjs/icons/ExclamationFilledIcon.d.ts +5 -0
  168. package/dist/cjs/icons/ExclamationFilledIcon.d.ts.map +1 -0
  169. package/dist/cjs/icons/ExclamationFilledIcon.js +5 -0
  170. package/dist/cjs/icons/ExteriorLinkIcon.d.ts +5 -0
  171. package/dist/cjs/icons/ExteriorLinkIcon.d.ts.map +1 -0
  172. package/dist/cjs/icons/ExteriorLinkIcon.js +5 -0
  173. package/dist/cjs/icons/GlobeIcon.d.ts +5 -0
  174. package/dist/cjs/icons/GlobeIcon.d.ts.map +1 -0
  175. package/dist/cjs/icons/GlobeIcon.js +15 -0
  176. package/dist/cjs/icons/InformationCircleIcon.d.ts +4 -0
  177. package/dist/cjs/icons/InformationCircleIcon.d.ts.map +1 -0
  178. package/dist/cjs/icons/InformationCircleIcon.js +7 -0
  179. package/dist/cjs/icons/LeftChevronIcon.d.ts +2 -0
  180. package/dist/cjs/icons/LeftChevronIcon.d.ts.map +1 -0
  181. package/dist/cjs/icons/LeftChevronIcon.js +7 -0
  182. package/dist/cjs/icons/QuestionMarkCircleIcon.d.ts +5 -0
  183. package/dist/cjs/icons/QuestionMarkCircleIcon.d.ts.map +1 -0
  184. package/dist/cjs/icons/QuestionMarkCircleIcon.js +5 -0
  185. package/dist/cjs/icons/RightChevronIcon.d.ts +2 -0
  186. package/dist/cjs/icons/RightChevronIcon.d.ts.map +1 -0
  187. package/dist/cjs/icons/RightChevronIcon.js +7 -0
  188. package/dist/cjs/icons/XMarkIcon.d.ts +0 -1
  189. package/dist/cjs/icons/XMarkIcon.d.ts.map +1 -1
  190. package/dist/cjs/icons/XMarkIcon.js +1 -1
  191. package/dist/cjs/index.d.ts +2 -3
  192. package/dist/cjs/index.d.ts.map +1 -1
  193. package/dist/cjs/index.js +6 -7
  194. package/dist/cjs/modals/CodePreview.d.ts +6 -0
  195. package/dist/cjs/modals/CodePreview.d.ts.map +1 -0
  196. package/dist/cjs/modals/CodePreview.js +151 -0
  197. package/dist/cjs/modals/EditEnvironmentModal.d.ts +15 -0
  198. package/dist/cjs/modals/EditEnvironmentModal.d.ts.map +1 -0
  199. package/dist/cjs/modals/EditEnvironmentModal.js +551 -0
  200. package/dist/cjs/modals/EditFiltersModal.d.ts +14 -10
  201. package/dist/cjs/modals/EditFiltersModal.d.ts.map +1 -1
  202. package/dist/cjs/modals/EditFiltersModal.js +1219 -263
  203. package/dist/cjs/modals/NewDashboardModal.d.ts +6 -8
  204. package/dist/cjs/modals/NewDashboardModal.d.ts.map +1 -1
  205. package/dist/cjs/modals/NewDashboardModal.js +147 -146
  206. package/dist/cjs/modals/PromoteDashboardModal.d.ts +16 -0
  207. package/dist/cjs/modals/PromoteDashboardModal.d.ts.map +1 -0
  208. package/dist/cjs/modals/PromoteDashboardModal.js +56 -0
  209. package/dist/cjs/modals/PromoteReportModal.d.ts +15 -0
  210. package/dist/cjs/modals/PromoteReportModal.d.ts.map +1 -0
  211. package/dist/cjs/modals/PromoteReportModal.js +128 -0
  212. package/dist/cjs/modals/PromoteViewModal.d.ts +5 -5
  213. package/dist/cjs/modals/PromoteViewModal.d.ts.map +1 -1
  214. package/dist/cjs/modals/PromoteViewModal.js +58 -94
  215. package/dist/cjs/modals/ReorderDashboardModal.d.ts +1 -2
  216. package/dist/cjs/modals/ReorderDashboardModal.d.ts.map +1 -1
  217. package/dist/cjs/modals/ReorderDashboardModal.js +34 -20
  218. package/dist/cjs/modals/SavedQueriesModal.d.ts +7 -0
  219. package/dist/cjs/modals/SavedQueriesModal.d.ts.map +1 -0
  220. package/dist/cjs/modals/SavedQueriesModal.js +128 -0
  221. package/dist/cjs/modals/index.d.ts +0 -1
  222. package/dist/cjs/modals/index.d.ts.map +1 -1
  223. package/dist/cjs/modals/index.js +1 -3
  224. package/dist/cjs/primitives/ButtonPrimitive.d.ts +3 -1
  225. package/dist/cjs/primitives/ButtonPrimitive.d.ts.map +1 -1
  226. package/dist/cjs/primitives/ButtonPrimitive.js +24 -16
  227. package/dist/cjs/primitives/CheckboxPrimitive.d.ts +12 -0
  228. package/dist/cjs/primitives/CheckboxPrimitive.d.ts.map +1 -0
  229. package/dist/cjs/primitives/CheckboxPrimitive.js +29 -0
  230. package/dist/cjs/primitives/HeaderPrimitive.d.ts.map +1 -1
  231. package/dist/cjs/primitives/HeaderPrimitive.js +1 -1
  232. package/dist/cjs/primitives/MiniButtonPrimitive.d.ts +7 -0
  233. package/dist/cjs/primitives/MiniButtonPrimitive.d.ts.map +1 -0
  234. package/dist/cjs/primitives/MiniButtonPrimitive.js +56 -0
  235. package/dist/cjs/primitives/ModalPrimitive.d.ts +2 -10
  236. package/dist/cjs/primitives/ModalPrimitive.d.ts.map +1 -1
  237. package/dist/cjs/primitives/ModalPrimitive.js +6 -6
  238. package/dist/cjs/primitives/PlaceholderPrimitive.d.ts +5 -0
  239. package/dist/cjs/primitives/PlaceholderPrimitive.d.ts.map +1 -0
  240. package/dist/cjs/primitives/PlaceholderPrimitive.js +18 -0
  241. package/dist/cjs/primitives/PopoverPrimitive.d.ts +8 -0
  242. package/dist/cjs/primitives/PopoverPrimitive.d.ts.map +1 -0
  243. package/dist/cjs/primitives/PopoverPrimitive.js +53 -0
  244. package/dist/cjs/primitives/SecondaryButtonPrimitive.d.ts +3 -1
  245. package/dist/cjs/primitives/SecondaryButtonPrimitive.d.ts.map +1 -1
  246. package/dist/cjs/primitives/SecondaryButtonPrimitive.js +13 -10
  247. package/dist/cjs/primitives/TextInputPrimitive.d.ts +7 -2
  248. package/dist/cjs/primitives/TextInputPrimitive.d.ts.map +1 -1
  249. package/dist/cjs/primitives/TextInputPrimitive.js +109 -14
  250. package/dist/cjs/primitives/TogglePrimitive.d.ts +6 -3
  251. package/dist/cjs/primitives/TogglePrimitive.d.ts.map +1 -1
  252. package/dist/cjs/primitives/TogglePrimitive.js +10 -7
  253. package/dist/cjs/primitives/index.d.ts +1 -1
  254. package/dist/cjs/primitives/index.d.ts.map +1 -1
  255. package/dist/cjs/primitives/index.js +3 -3
  256. package/dist/cjs/public_components/ChartQueryBuilder.d.ts +9 -0
  257. package/dist/cjs/public_components/ChartQueryBuilder.d.ts.map +1 -0
  258. package/dist/cjs/public_components/ChartQueryBuilder.js +131 -0
  259. package/dist/cjs/public_components/CreateEnvironment.d.ts +1 -1
  260. package/dist/cjs/public_components/CreateEnvironment.d.ts.map +1 -1
  261. package/dist/cjs/public_components/CreateEnvironment.js +168 -81
  262. package/dist/cjs/public_components/DashboardManager.d.ts +2 -2
  263. package/dist/cjs/public_components/DashboardManager.d.ts.map +1 -1
  264. package/dist/cjs/public_components/DashboardManager.js +346 -187
  265. package/dist/cjs/public_components/EnvSelectPopover.d.ts +12 -0
  266. package/dist/cjs/public_components/EnvSelectPopover.d.ts.map +1 -0
  267. package/dist/cjs/public_components/EnvSelectPopover.js +144 -0
  268. package/dist/cjs/public_components/{SQLViewManager.d.ts → VirtualTableManager.d.ts} +3 -2
  269. package/dist/cjs/public_components/VirtualTableManager.d.ts.map +1 -0
  270. package/dist/cjs/public_components/VirtualTableManager.js +731 -0
  271. package/dist/cjs/public_components/__tests__/CreateEnvironment.test.d.ts +2 -0
  272. package/dist/cjs/public_components/__tests__/CreateEnvironment.test.d.ts.map +1 -0
  273. package/dist/cjs/public_components/__tests__/CreateEnvironment.test.js +685 -0
  274. package/dist/cjs/utils/astProcessing.d.ts +14 -1
  275. package/dist/cjs/utils/astProcessing.d.ts.map +1 -1
  276. package/dist/cjs/utils/astProcessing.js +72 -8
  277. package/dist/cjs/utils/astProcessing.uspec.js +7 -3
  278. package/dist/cjs/utils/columnProcessing.d.ts +12 -0
  279. package/dist/cjs/utils/columnProcessing.d.ts.map +1 -1
  280. package/dist/cjs/utils/columnProcessing.js +173 -7
  281. package/dist/cjs/utils/constants.d.ts +4 -21
  282. package/dist/cjs/utils/constants.d.ts.map +1 -1
  283. package/dist/cjs/utils/constants.js +20 -11
  284. package/dist/cjs/utils/dataEditor.d.ts +4 -3
  285. package/dist/cjs/utils/dataEditor.d.ts.map +1 -1
  286. package/dist/cjs/utils/dataEditor.js +69 -121
  287. package/dist/cjs/utils/dataFetcher.d.ts +20 -2
  288. package/dist/cjs/utils/dataFetcher.d.ts.map +1 -1
  289. package/dist/cjs/utils/dataFetcher.js +46 -56
  290. package/dist/cjs/utils/databases.d.ts +20 -8
  291. package/dist/cjs/utils/databases.d.ts.map +1 -1
  292. package/dist/cjs/utils/databases.js +63 -24
  293. package/dist/cjs/utils/filter.d.ts +222 -0
  294. package/dist/cjs/utils/filter.d.ts.map +1 -0
  295. package/dist/cjs/utils/filter.js +347 -0
  296. package/dist/cjs/utils/monacoAutocomplete.d.ts +2 -1
  297. package/dist/cjs/utils/monacoAutocomplete.d.ts.map +1 -1
  298. package/dist/cjs/utils/monacoAutocomplete.js +149 -44
  299. package/dist/cjs/utils/report.d.ts +120 -0
  300. package/dist/cjs/utils/report.d.ts.map +1 -0
  301. package/dist/cjs/utils/report.js +109 -0
  302. package/dist/cjs/utils/schema.d.ts +41 -29
  303. package/dist/cjs/utils/schema.d.ts.map +1 -1
  304. package/dist/cjs/utils/schema.js +137 -91
  305. package/dist/cjs/utils/table.d.ts +70 -4
  306. package/dist/cjs/utils/table.d.ts.map +1 -1
  307. package/dist/cjs/utils/tenants.d.ts +48 -0
  308. package/dist/cjs/utils/tenants.d.ts.map +1 -0
  309. package/dist/cjs/utils/tenants.js +37 -0
  310. package/dist/cjs/utils/textProcessing.js +1 -2
  311. package/dist/cjs/utils/ui.d.ts +2 -0
  312. package/dist/cjs/utils/ui.d.ts.map +1 -0
  313. package/dist/cjs/utils/ui.js +18 -0
  314. package/dist/cjs/utils/validation.d.ts +2 -0
  315. package/dist/cjs/utils/validation.d.ts.map +1 -0
  316. package/dist/cjs/utils/validation.js +77 -0
  317. package/dist/cjs/utils/validation.uspec.d.ts +2 -0
  318. package/dist/cjs/utils/validation.uspec.d.ts.map +1 -0
  319. package/dist/cjs/utils/validation.uspec.js +53 -0
  320. package/dist/esm/Admin.d.ts +41 -87
  321. package/dist/esm/Admin.d.ts.map +1 -1
  322. package/dist/esm/Admin.js +355 -422
  323. package/dist/esm/AdminProvider.d.ts +108 -50
  324. package/dist/esm/AdminProvider.d.ts.map +1 -1
  325. package/dist/esm/AdminProvider.js +390 -209
  326. package/dist/esm/api/ConnectionClient.d.ts +20 -38
  327. package/dist/esm/api/ConnectionClient.d.ts.map +1 -1
  328. package/dist/esm/api/ConnectionClient.js +280 -306
  329. package/dist/esm/assets/ArrowDownHeadIcon.d.ts.map +1 -1
  330. package/dist/esm/components/Banner/index.d.ts +0 -1
  331. package/dist/esm/components/Banner/index.d.ts.map +1 -1
  332. package/dist/esm/components/ClipboardButton.d.ts +8 -0
  333. package/dist/esm/components/ClipboardButton.d.ts.map +1 -0
  334. package/dist/esm/components/ClipboardButton.js +69 -0
  335. package/dist/esm/components/DashboardSelectPopover.d.ts +8 -5
  336. package/dist/esm/components/DashboardSelectPopover.d.ts.map +1 -1
  337. package/dist/esm/components/DashboardSelectPopover.js +72 -186
  338. package/dist/esm/components/DatabaseMismatchCard.d.ts +3 -3
  339. package/dist/esm/components/DatabaseMismatchCard.d.ts.map +1 -1
  340. package/dist/esm/components/DatabaseMismatchCard.js +2 -2
  341. package/dist/esm/components/DatabaseSelector.d.ts.map +1 -1
  342. package/dist/esm/components/DatabaseSelector.js +9 -1
  343. package/dist/esm/components/DateRangePicker/SingleDatePicker.d.ts +10 -0
  344. package/dist/esm/components/DateRangePicker/SingleDatePicker.d.ts.map +1 -0
  345. package/dist/esm/components/DateRangePicker/SingleDatePicker.js +227 -0
  346. package/dist/esm/components/DateRangePicker/YearlessDateRangePicker.d.ts +18 -0
  347. package/dist/esm/components/DateRangePicker/YearlessDateRangePicker.d.ts.map +1 -0
  348. package/dist/esm/components/DateRangePicker/YearlessDateRangePicker.js +282 -0
  349. package/dist/esm/components/DateRangePicker/dateRangePickerUtils.d.ts +91 -0
  350. package/dist/esm/components/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -0
  351. package/dist/esm/components/DateRangePicker/dateRangePickerUtils.js +883 -0
  352. package/dist/esm/components/DeleteButton.d.ts +0 -1
  353. package/dist/esm/components/DeleteButton.d.ts.map +1 -1
  354. package/dist/esm/components/DropDownMenuWithLabel.d.ts +4 -3
  355. package/dist/esm/components/DropDownMenuWithLabel.d.ts.map +1 -1
  356. package/dist/esm/components/DropDownMenuWithLabel.js +37 -23
  357. package/dist/esm/components/DynamicBanner.d.ts +2 -5
  358. package/dist/esm/components/DynamicBanner.d.ts.map +1 -1
  359. package/dist/esm/components/DynamicBanner.js +2 -2
  360. package/dist/esm/components/EmptyDashboardComponent/index.d.ts +0 -1
  361. package/dist/esm/components/EmptyDashboardComponent/index.d.ts.map +1 -1
  362. package/dist/esm/components/EmptyDashboardComponent/index.js +5 -4
  363. package/dist/esm/components/EmptyVirtualTablesComponent.d.ts +4 -0
  364. package/dist/esm/components/EmptyVirtualTablesComponent.d.ts.map +1 -0
  365. package/dist/esm/components/EmptyVirtualTablesComponent.js +38 -0
  366. package/dist/esm/components/ExternalLink.d.ts +4 -0
  367. package/dist/esm/components/ExternalLink.d.ts.map +1 -0
  368. package/dist/esm/components/ExternalLink.js +9 -0
  369. package/dist/esm/components/FormTooltip.d.ts +8 -0
  370. package/dist/esm/components/FormTooltip.d.ts.map +1 -0
  371. package/dist/esm/components/FormTooltip.js +84 -0
  372. package/dist/esm/components/InputLabel.d.ts +4 -1
  373. package/dist/esm/components/InputLabel.d.ts.map +1 -1
  374. package/dist/esm/components/InputLabel.js +10 -8
  375. package/dist/esm/components/InternalDashboard/ChartSkeleton.d.ts +11 -0
  376. package/dist/esm/components/InternalDashboard/ChartSkeleton.d.ts.map +1 -0
  377. package/dist/esm/components/InternalDashboard/ChartSkeleton.js +16 -0
  378. package/dist/esm/components/InternalDashboard/DashboardFilter.d.ts +20 -0
  379. package/dist/esm/components/InternalDashboard/DashboardFilter.d.ts.map +1 -0
  380. package/dist/esm/components/InternalDashboard/DashboardFilter.js +101 -0
  381. package/dist/esm/components/InternalDashboard/DashboardLoadingComponent.d.ts +7 -0
  382. package/dist/esm/components/InternalDashboard/DashboardLoadingComponent.d.ts.map +1 -0
  383. package/dist/esm/components/InternalDashboard/DashboardLoadingComponent.js +15 -0
  384. package/dist/esm/components/InternalDashboard/DateRangePicker/QuillDateRangePicker.d.ts +37 -0
  385. package/dist/esm/components/InternalDashboard/DateRangePicker/QuillDateRangePicker.d.ts.map +1 -0
  386. package/dist/esm/components/InternalDashboard/DateRangePicker/QuillDateRangePicker.js +269 -0
  387. package/dist/esm/components/InternalDashboard/DateRangePicker/dateRangePickerUtils.d.ts +85 -0
  388. package/dist/esm/components/InternalDashboard/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -0
  389. package/dist/esm/components/InternalDashboard/DateRangePicker/dateRangePickerUtils.js +520 -0
  390. package/dist/esm/components/InternalDashboard/InternalDashboard.d.ts +17 -0
  391. package/dist/esm/components/InternalDashboard/InternalDashboard.d.ts.map +1 -0
  392. package/dist/esm/components/InternalDashboard/InternalDashboard.js +1940 -0
  393. package/dist/esm/components/OrgSelect.d.ts +9 -13
  394. package/dist/esm/components/OrgSelect.d.ts.map +1 -1
  395. package/dist/esm/components/OrgSelect.js +134 -117
  396. package/dist/esm/components/QuillMultiSelectWithCombo.d.ts +30 -0
  397. package/dist/esm/components/QuillMultiSelectWithCombo.d.ts.map +1 -0
  398. package/dist/esm/components/QuillMultiSelectWithCombo.js +466 -0
  399. package/dist/esm/components/QuillPopover.d.ts +11 -0
  400. package/dist/esm/components/QuillPopover.d.ts.map +1 -0
  401. package/dist/esm/components/QuillPopover.js +144 -0
  402. package/dist/esm/components/QuillSelect.d.ts +1 -1
  403. package/dist/esm/components/QuillSelect.d.ts.map +1 -1
  404. package/dist/esm/components/QuillSelect.js +39 -16
  405. package/dist/esm/components/QuillSelectWithCombo.d.ts +22 -0
  406. package/dist/esm/components/QuillSelectWithCombo.d.ts.map +1 -0
  407. package/dist/esm/components/QuillSelectWithCombo.js +291 -0
  408. package/dist/esm/components/QuillTab.d.ts +12 -0
  409. package/dist/esm/components/QuillTab.d.ts.map +1 -0
  410. package/dist/esm/components/QuillTab.js +81 -0
  411. package/dist/esm/components/QuillToolTipPortal.d.ts +11 -0
  412. package/dist/esm/components/QuillToolTipPortal.d.ts.map +1 -0
  413. package/dist/esm/components/QuillToolTipPortal.js +104 -0
  414. package/dist/esm/components/SegmentedControl.d.ts +8 -2
  415. package/dist/esm/components/SegmentedControl.d.ts.map +1 -1
  416. package/dist/esm/components/SegmentedControl.js +10 -10
  417. package/dist/esm/components/SqlTextEditor.d.ts +2 -5
  418. package/dist/esm/components/SqlTextEditor.d.ts.map +1 -1
  419. package/dist/esm/components/SqlTextEditor.js +21 -20
  420. package/dist/esm/components/StepDisplay.d.ts.map +1 -1
  421. package/dist/esm/components/StepDisplay.js +1 -1
  422. package/dist/esm/components/Tenants/EditTenant.d.ts +41 -0
  423. package/dist/esm/components/Tenants/EditTenant.d.ts.map +1 -0
  424. package/dist/esm/components/Tenants/EditTenant.js +754 -0
  425. package/dist/esm/components/UiComponents.d.ts +35 -6
  426. package/dist/esm/components/UiComponents.d.ts.map +1 -1
  427. package/dist/esm/components/UiComponents.js +220 -26
  428. package/dist/esm/components/VirtualTableTile.d.ts +7 -0
  429. package/dist/esm/components/VirtualTableTile.d.ts.map +1 -0
  430. package/dist/esm/components/VirtualTableTile.js +48 -0
  431. package/dist/esm/components/index.d.ts +5 -5
  432. package/dist/esm/components/index.d.ts.map +1 -1
  433. package/dist/esm/components/index.js +5 -5
  434. package/dist/esm/constants/dataTypes.d.ts.map +1 -1
  435. package/dist/esm/constants/dataTypes.js +2 -0
  436. package/dist/esm/forms/client_onboard/ConnectDatabase.d.ts +15 -6
  437. package/dist/esm/forms/client_onboard/ConnectDatabase.d.ts.map +1 -1
  438. package/dist/esm/forms/client_onboard/ConnectDatabase.js +211 -98
  439. package/dist/esm/forms/client_onboard/ConnectSchema.d.ts +13 -9
  440. package/dist/esm/forms/client_onboard/ConnectSchema.d.ts.map +1 -1
  441. package/dist/esm/forms/client_onboard/ConnectSchema.js +160 -238
  442. package/dist/esm/forms/client_onboard/CreateVirtualTables.d.ts +47 -0
  443. package/dist/esm/forms/client_onboard/CreateVirtualTables.d.ts.map +1 -0
  444. package/dist/esm/forms/client_onboard/CreateVirtualTables.js +388 -0
  445. package/dist/esm/forms/client_onboard/__tests__/ConnectDatabase.test.d.ts +2 -0
  446. package/dist/esm/forms/client_onboard/__tests__/ConnectDatabase.test.d.ts.map +1 -0
  447. package/dist/esm/forms/client_onboard/__tests__/ConnectDatabase.test.js +566 -0
  448. package/dist/esm/forms/client_onboard/__tests__/ConnectSchema.test.d.ts +2 -0
  449. package/dist/esm/forms/client_onboard/__tests__/ConnectSchema.test.d.ts.map +1 -0
  450. package/dist/esm/forms/client_onboard/__tests__/ConnectSchema.test.js +454 -0
  451. package/dist/esm/forms/client_onboard/__tests__/CreateVirtualTables.test.d.ts +2 -0
  452. package/dist/esm/forms/client_onboard/__tests__/CreateVirtualTables.test.d.ts.map +1 -0
  453. package/dist/esm/forms/client_onboard/__tests__/CreateVirtualTables.test.js +380 -0
  454. package/dist/esm/forms/virtual_tables/CreateEditVirtualTable.d.ts +20 -0
  455. package/dist/esm/forms/virtual_tables/CreateEditVirtualTable.d.ts.map +1 -0
  456. package/dist/esm/forms/virtual_tables/CreateEditVirtualTable.js +288 -0
  457. package/dist/esm/hooks/useDashboardManager.d.ts +16 -0
  458. package/dist/esm/hooks/useDashboardManager.d.ts.map +1 -0
  459. package/dist/esm/hooks/useDashboardManager.js +109 -0
  460. package/dist/esm/hooks/useDatabaseSchema.d.ts +5 -0
  461. package/dist/esm/hooks/useDatabaseSchema.d.ts.map +1 -0
  462. package/dist/esm/hooks/useDatabaseSchema.js +50 -0
  463. package/dist/esm/hooks/useItemBeingEdited.d.ts +1 -2
  464. package/dist/esm/hooks/useItemBeingEdited.d.ts.map +1 -1
  465. package/dist/esm/hooks/useItemBeingEdited.js +3 -15
  466. package/dist/esm/hooks/useOnClickOutside.d.ts +4 -1
  467. package/dist/esm/hooks/useOnClickOutside.d.ts.map +1 -1
  468. package/dist/esm/hooks/useOnClickOutside.js +49 -8
  469. package/dist/esm/hooks/useTenants.d.ts +13 -0
  470. package/dist/esm/hooks/useTenants.d.ts.map +1 -0
  471. package/dist/esm/hooks/useTenants.js +170 -0
  472. package/dist/esm/hooks/useThrottle.d.ts +2 -0
  473. package/dist/esm/hooks/useThrottle.d.ts.map +1 -0
  474. package/dist/esm/hooks/useThrottle.js +11 -0
  475. package/dist/esm/icons/CheckCircleIcon.d.ts +5 -0
  476. package/dist/esm/icons/CheckCircleIcon.d.ts.map +1 -0
  477. package/dist/esm/icons/CheckCircleIcon.js +3 -0
  478. package/dist/esm/icons/DownChevronIcon.d.ts +2 -0
  479. package/dist/esm/icons/DownChevronIcon.d.ts.map +1 -0
  480. package/dist/esm/icons/DownChevronIcon.js +4 -0
  481. package/dist/esm/icons/ExclamationFilledIcon.d.ts +5 -0
  482. package/dist/esm/icons/ExclamationFilledIcon.d.ts.map +1 -0
  483. package/dist/esm/icons/ExclamationFilledIcon.js +3 -0
  484. package/dist/esm/icons/ExteriorLinkIcon.d.ts +5 -0
  485. package/dist/esm/icons/ExteriorLinkIcon.d.ts.map +1 -0
  486. package/dist/esm/icons/ExteriorLinkIcon.js +3 -0
  487. package/dist/esm/icons/GlobeIcon.d.ts +5 -0
  488. package/dist/esm/icons/GlobeIcon.d.ts.map +1 -0
  489. package/dist/esm/icons/GlobeIcon.js +12 -0
  490. package/dist/esm/icons/InformationCircleIcon.d.ts +4 -0
  491. package/dist/esm/icons/InformationCircleIcon.d.ts.map +1 -0
  492. package/dist/esm/icons/InformationCircleIcon.js +4 -0
  493. package/dist/esm/icons/LeftChevronIcon.d.ts +2 -0
  494. package/dist/esm/icons/LeftChevronIcon.d.ts.map +1 -0
  495. package/dist/esm/icons/LeftChevronIcon.js +4 -0
  496. package/dist/esm/icons/QuestionMarkCircleIcon.d.ts +5 -0
  497. package/dist/esm/icons/QuestionMarkCircleIcon.d.ts.map +1 -0
  498. package/dist/esm/icons/QuestionMarkCircleIcon.js +3 -0
  499. package/dist/esm/icons/RightChevronIcon.d.ts +2 -0
  500. package/dist/esm/icons/RightChevronIcon.d.ts.map +1 -0
  501. package/dist/esm/icons/RightChevronIcon.js +4 -0
  502. package/dist/esm/icons/XMarkIcon.d.ts +0 -1
  503. package/dist/esm/icons/XMarkIcon.d.ts.map +1 -1
  504. package/dist/esm/index.d.ts +2 -3
  505. package/dist/esm/index.d.ts.map +1 -1
  506. package/dist/esm/index.js +3 -3
  507. package/dist/esm/modals/CodePreview.d.ts +6 -0
  508. package/dist/esm/modals/CodePreview.d.ts.map +1 -0
  509. package/dist/esm/modals/CodePreview.js +145 -0
  510. package/dist/esm/modals/EditEnvironmentModal.d.ts +15 -0
  511. package/dist/esm/modals/EditEnvironmentModal.d.ts.map +1 -0
  512. package/dist/esm/modals/EditEnvironmentModal.js +545 -0
  513. package/dist/esm/modals/EditFiltersModal.d.ts +14 -10
  514. package/dist/esm/modals/EditFiltersModal.d.ts.map +1 -1
  515. package/dist/esm/modals/EditFiltersModal.js +1226 -264
  516. package/dist/esm/modals/NewDashboardModal.d.ts +6 -8
  517. package/dist/esm/modals/NewDashboardModal.d.ts.map +1 -1
  518. package/dist/esm/modals/NewDashboardModal.js +148 -146
  519. package/dist/esm/modals/PromoteDashboardModal.d.ts +16 -0
  520. package/dist/esm/modals/PromoteDashboardModal.d.ts.map +1 -0
  521. package/dist/esm/modals/PromoteDashboardModal.js +53 -0
  522. package/dist/esm/modals/PromoteReportModal.d.ts +15 -0
  523. package/dist/esm/modals/PromoteReportModal.d.ts.map +1 -0
  524. package/dist/esm/modals/PromoteReportModal.js +125 -0
  525. package/dist/esm/modals/PromoteViewModal.d.ts +5 -5
  526. package/dist/esm/modals/PromoteViewModal.d.ts.map +1 -1
  527. package/dist/esm/modals/PromoteViewModal.js +58 -94
  528. package/dist/esm/modals/ReorderDashboardModal.d.ts +1 -2
  529. package/dist/esm/modals/ReorderDashboardModal.d.ts.map +1 -1
  530. package/dist/esm/modals/ReorderDashboardModal.js +34 -20
  531. package/dist/esm/modals/SavedQueriesModal.d.ts +7 -0
  532. package/dist/esm/modals/SavedQueriesModal.d.ts.map +1 -0
  533. package/dist/esm/modals/SavedQueriesModal.js +125 -0
  534. package/dist/esm/modals/index.d.ts +0 -1
  535. package/dist/esm/modals/index.d.ts.map +1 -1
  536. package/dist/esm/modals/index.js +0 -1
  537. package/dist/esm/primitives/ButtonPrimitive.d.ts +3 -1
  538. package/dist/esm/primitives/ButtonPrimitive.d.ts.map +1 -1
  539. package/dist/esm/primitives/ButtonPrimitive.js +25 -17
  540. package/dist/esm/primitives/CheckboxPrimitive.d.ts +12 -0
  541. package/dist/esm/primitives/CheckboxPrimitive.d.ts.map +1 -0
  542. package/dist/esm/primitives/CheckboxPrimitive.js +27 -0
  543. package/dist/esm/primitives/HeaderPrimitive.d.ts.map +1 -1
  544. package/dist/esm/primitives/HeaderPrimitive.js +1 -1
  545. package/dist/esm/primitives/MiniButtonPrimitive.d.ts +7 -0
  546. package/dist/esm/primitives/MiniButtonPrimitive.d.ts.map +1 -0
  547. package/dist/esm/primitives/MiniButtonPrimitive.js +54 -0
  548. package/dist/esm/primitives/ModalPrimitive.d.ts +2 -10
  549. package/dist/esm/primitives/ModalPrimitive.d.ts.map +1 -1
  550. package/dist/esm/primitives/ModalPrimitive.js +7 -7
  551. package/dist/esm/primitives/PlaceholderPrimitive.d.ts +5 -0
  552. package/dist/esm/primitives/PlaceholderPrimitive.d.ts.map +1 -0
  553. package/dist/esm/primitives/PlaceholderPrimitive.js +15 -0
  554. package/dist/esm/primitives/PopoverPrimitive.d.ts +8 -0
  555. package/dist/esm/primitives/PopoverPrimitive.d.ts.map +1 -0
  556. package/dist/esm/primitives/PopoverPrimitive.js +49 -0
  557. package/dist/esm/primitives/SecondaryButtonPrimitive.d.ts +3 -1
  558. package/dist/esm/primitives/SecondaryButtonPrimitive.d.ts.map +1 -1
  559. package/dist/esm/primitives/SecondaryButtonPrimitive.js +14 -11
  560. package/dist/esm/primitives/TextInputPrimitive.d.ts +7 -2
  561. package/dist/esm/primitives/TextInputPrimitive.d.ts.map +1 -1
  562. package/dist/esm/primitives/TextInputPrimitive.js +77 -12
  563. package/dist/esm/primitives/TogglePrimitive.d.ts +6 -3
  564. package/dist/esm/primitives/TogglePrimitive.d.ts.map +1 -1
  565. package/dist/esm/primitives/TogglePrimitive.js +10 -7
  566. package/dist/esm/primitives/index.d.ts +1 -1
  567. package/dist/esm/primitives/index.d.ts.map +1 -1
  568. package/dist/esm/primitives/index.js +1 -1
  569. package/dist/esm/public_components/ChartQueryBuilder.d.ts +9 -0
  570. package/dist/esm/public_components/ChartQueryBuilder.d.ts.map +1 -0
  571. package/dist/esm/public_components/ChartQueryBuilder.js +125 -0
  572. package/dist/esm/public_components/CreateEnvironment.d.ts +1 -1
  573. package/dist/esm/public_components/CreateEnvironment.d.ts.map +1 -1
  574. package/dist/esm/public_components/CreateEnvironment.js +152 -75
  575. package/dist/esm/public_components/DashboardManager.d.ts +2 -2
  576. package/dist/esm/public_components/DashboardManager.d.ts.map +1 -1
  577. package/dist/esm/public_components/DashboardManager.js +350 -191
  578. package/dist/esm/public_components/EnvSelectPopover.d.ts +12 -0
  579. package/dist/esm/public_components/EnvSelectPopover.d.ts.map +1 -0
  580. package/dist/esm/public_components/EnvSelectPopover.js +138 -0
  581. package/dist/esm/public_components/{SQLViewManager.d.ts → VirtualTableManager.d.ts} +3 -2
  582. package/dist/esm/public_components/VirtualTableManager.d.ts.map +1 -0
  583. package/dist/esm/public_components/VirtualTableManager.js +723 -0
  584. package/dist/esm/public_components/__tests__/CreateEnvironment.test.d.ts +2 -0
  585. package/dist/esm/public_components/__tests__/CreateEnvironment.test.d.ts.map +1 -0
  586. package/dist/esm/public_components/__tests__/CreateEnvironment.test.js +680 -0
  587. package/dist/esm/utils/astProcessing.d.ts +14 -1
  588. package/dist/esm/utils/astProcessing.d.ts.map +1 -1
  589. package/dist/esm/utils/astProcessing.js +67 -6
  590. package/dist/esm/utils/astProcessing.uspec.js +8 -4
  591. package/dist/esm/utils/columnProcessing.d.ts +12 -0
  592. package/dist/esm/utils/columnProcessing.d.ts.map +1 -1
  593. package/dist/esm/utils/columnProcessing.js +167 -4
  594. package/dist/esm/utils/constants.d.ts +4 -21
  595. package/dist/esm/utils/constants.d.ts.map +1 -1
  596. package/dist/esm/utils/constants.js +18 -9
  597. package/dist/esm/utils/dataEditor.d.ts +4 -3
  598. package/dist/esm/utils/dataEditor.d.ts.map +1 -1
  599. package/dist/esm/utils/dataEditor.js +65 -117
  600. package/dist/esm/utils/dataFetcher.d.ts +20 -2
  601. package/dist/esm/utils/dataFetcher.d.ts.map +1 -1
  602. package/dist/esm/utils/dataFetcher.js +44 -53
  603. package/dist/esm/utils/databases.d.ts +20 -8
  604. package/dist/esm/utils/databases.d.ts.map +1 -1
  605. package/dist/esm/utils/databases.js +60 -21
  606. package/dist/esm/utils/filter.d.ts +222 -0
  607. package/dist/esm/utils/filter.d.ts.map +1 -0
  608. package/dist/esm/utils/filter.js +343 -0
  609. package/dist/esm/utils/monacoAutocomplete.d.ts +2 -1
  610. package/dist/esm/utils/monacoAutocomplete.d.ts.map +1 -1
  611. package/dist/esm/utils/monacoAutocomplete.js +146 -41
  612. package/dist/esm/utils/report.d.ts +120 -0
  613. package/dist/esm/utils/report.d.ts.map +1 -0
  614. package/dist/esm/utils/report.js +106 -0
  615. package/dist/esm/utils/schema.d.ts +41 -29
  616. package/dist/esm/utils/schema.d.ts.map +1 -1
  617. package/dist/esm/utils/schema.js +133 -88
  618. package/dist/esm/utils/table.d.ts +70 -4
  619. package/dist/esm/utils/table.d.ts.map +1 -1
  620. package/dist/esm/utils/tenants.d.ts +48 -0
  621. package/dist/esm/utils/tenants.d.ts.map +1 -0
  622. package/dist/esm/utils/tenants.js +31 -0
  623. package/dist/esm/utils/ui.d.ts +2 -0
  624. package/dist/esm/utils/ui.d.ts.map +1 -0
  625. package/dist/esm/utils/ui.js +14 -0
  626. package/dist/esm/utils/validation.d.ts +2 -0
  627. package/dist/esm/utils/validation.d.ts.map +1 -0
  628. package/dist/esm/utils/validation.js +74 -0
  629. package/dist/esm/utils/validation.uspec.d.ts +2 -0
  630. package/dist/esm/utils/validation.uspec.d.ts.map +1 -0
  631. package/dist/esm/utils/validation.uspec.js +51 -0
  632. package/package.json +22 -9
  633. package/dist/cjs/components/EnvSelectPopover.d.ts +0 -13
  634. package/dist/cjs/components/EnvSelectPopover.d.ts.map +0 -1
  635. package/dist/cjs/components/EnvSelectPopover.js +0 -224
  636. package/dist/cjs/components/SqlViewTile.d.ts +0 -8
  637. package/dist/cjs/components/SqlViewTile.d.ts.map +0 -1
  638. package/dist/cjs/components/SqlViewTile.js +0 -69
  639. package/dist/cjs/forms/client_onboard/CreateSqlViews.d.ts +0 -24
  640. package/dist/cjs/forms/client_onboard/CreateSqlViews.d.ts.map +0 -1
  641. package/dist/cjs/forms/client_onboard/CreateSqlViews.js +0 -250
  642. package/dist/cjs/forms/sql_views/CreateEditSqlView.d.ts +0 -29
  643. package/dist/cjs/forms/sql_views/CreateEditSqlView.d.ts.map +0 -1
  644. package/dist/cjs/forms/sql_views/CreateEditSqlView.js +0 -228
  645. package/dist/cjs/modals/PromoteDashModal.d.ts +0 -17
  646. package/dist/cjs/modals/PromoteDashModal.d.ts.map +0 -1
  647. package/dist/cjs/modals/PromoteDashModal.js +0 -133
  648. package/dist/cjs/primitives/SelectPrimitive.d.ts +0 -16
  649. package/dist/cjs/primitives/SelectPrimitive.d.ts.map +0 -1
  650. package/dist/cjs/primitives/SelectPrimitive.js +0 -43
  651. package/dist/cjs/public_components/DashboardBuilder.d.ts +0 -7
  652. package/dist/cjs/public_components/DashboardBuilder.d.ts.map +0 -1
  653. package/dist/cjs/public_components/DashboardBuilder.js +0 -220
  654. package/dist/cjs/public_components/SQLViewManager.d.ts.map +0 -1
  655. package/dist/cjs/public_components/SQLViewManager.js +0 -563
  656. package/dist/esm/components/EnvSelectPopover.d.ts +0 -13
  657. package/dist/esm/components/EnvSelectPopover.d.ts.map +0 -1
  658. package/dist/esm/components/EnvSelectPopover.js +0 -221
  659. package/dist/esm/components/SqlViewTile.d.ts +0 -8
  660. package/dist/esm/components/SqlViewTile.d.ts.map +0 -1
  661. package/dist/esm/components/SqlViewTile.js +0 -40
  662. package/dist/esm/forms/client_onboard/CreateSqlViews.d.ts +0 -24
  663. package/dist/esm/forms/client_onboard/CreateSqlViews.d.ts.map +0 -1
  664. package/dist/esm/forms/client_onboard/CreateSqlViews.js +0 -242
  665. package/dist/esm/forms/sql_views/CreateEditSqlView.d.ts +0 -29
  666. package/dist/esm/forms/sql_views/CreateEditSqlView.d.ts.map +0 -1
  667. package/dist/esm/forms/sql_views/CreateEditSqlView.js +0 -222
  668. package/dist/esm/modals/PromoteDashModal.d.ts +0 -17
  669. package/dist/esm/modals/PromoteDashModal.d.ts.map +0 -1
  670. package/dist/esm/modals/PromoteDashModal.js +0 -130
  671. package/dist/esm/primitives/SelectPrimitive.d.ts +0 -16
  672. package/dist/esm/primitives/SelectPrimitive.d.ts.map +0 -1
  673. package/dist/esm/primitives/SelectPrimitive.js +0 -41
  674. package/dist/esm/public_components/DashboardBuilder.d.ts +0 -7
  675. package/dist/esm/public_components/DashboardBuilder.d.ts.map +0 -1
  676. package/dist/esm/public_components/DashboardBuilder.js +0 -214
  677. package/dist/esm/public_components/SQLViewManager.d.ts.map +0 -1
  678. package/dist/esm/public_components/SQLViewManager.js +0 -555
@@ -0,0 +1,723 @@
1
+ import { createElement as _createElement } from "react";
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { useEffect, useMemo, useRef, useState } from 'react';
4
+ import { ButtonPrimitive, HeaderPrimitive, ModalPrimitive, SecondaryButtonPrimitive, TextInputPrimitive, } from '../primitives';
5
+ import { useAdmin } from '../AdminProvider';
6
+ import { EnvSelectPopover } from '../components';
7
+ import { defaultTheme, TableCell } from '../Admin';
8
+ import CreateEditVirtualTable from '../forms/virtual_tables/CreateEditVirtualTable';
9
+ import { addVirtualTable, editVirtualTable, deleteVirtualTable as requestDeleteVirtualTable, } from '../utils/dataEditor';
10
+ import { getVirtualTableData } from '../api/ConnectionClient';
11
+ import { LoadingSpinner, MemoizedButton, MemoizedDeleteButton, MemoizedSecondaryButton, QuillToolTip, } from '../components/UiComponents';
12
+ import DatabaseMismatchCard from '../components/DatabaseMismatchCard';
13
+ import TogglePrimitive from '../primitives/TogglePrimitive';
14
+ import { SegmentedControl } from '../components/SegmentedControl';
15
+ import SqlTextEditor from '../components/SqlTextEditor';
16
+ import { Table, useReports, useVirtualTables } from '@quillsql/react';
17
+ import { PromoteViewModal } from '../modals';
18
+ import { Highlight, themes } from 'prism-react-renderer';
19
+ import { EditEnvironmentModal } from '../modals/EditEnvironmentModal';
20
+ import EmptyVirtualTablesComponent from '../components/EmptyVirtualTablesComponent';
21
+ import { QuillSelectComponentWithCombo } from '../components/QuillSelectWithCombo';
22
+ import { onlySingleDatabaseTenant } from '../utils/tenants';
23
+ import { useDatabaseSchema } from '../hooks/useDatabaseSchema';
24
+ import InputLabel from '../components/InputLabel';
25
+ import { useDashboardManager } from '../hooks/useDashboardManager';
26
+ export const getDuplicateColumns = (columns) => {
27
+ if (!columns) {
28
+ return [];
29
+ }
30
+ const columnCount = columns?.reduce((acc, curr) => {
31
+ if (acc[curr.field]) {
32
+ acc[curr.field] += 1;
33
+ }
34
+ else {
35
+ acc[curr.field] = 1;
36
+ }
37
+ return acc;
38
+ }, {});
39
+ return Object.keys(columnCount).filter((column) => columnCount[column] > 1);
40
+ };
41
+ export default function VirtualTableManager({ containerStyle, virtualTable, }) {
42
+ const { data: tables, isLoading: areTablesLoading, reloadAll, refreshSome, loadingTables, } = useVirtualTables();
43
+ const { reloadFilteredReports } = useReports();
44
+ const { setSelectedDashboard } = useDashboardManager();
45
+ const [editModalIsOpen, setEditModalIsOpen] = useState(false);
46
+ const [editQueryView, setEditQueryView] = useState(false);
47
+ const [editVirtualTableId, setEditVirtualTableId] = useState('');
48
+ const [editName, setEditName] = useState('');
49
+ const [editError, setEditError] = useState();
50
+ const [editVirtualTableQuery, setEditVirtualTableQuery] = useState('');
51
+ const [isPromoteViewModalOpen, setIsPromoteViewModalOpen] = useState(false);
52
+ const [editVirtualTableOwnerTenantFields, setEditVirtualTableOwnerTenantFields,] = useState([]);
53
+ const [editEnvironmentModalIsOpen, setEditEnvironmentModalIsOpen] = useState(false);
54
+ // const [allTableData, setAllTableData] = useState<ColumnsByTable[]>([]);
55
+ const [referencedTablesMap, setReferencedTablesMap] = useState({});
56
+ const [referenceFiltersMap, setReferenceFiltersMap] = useState({});
57
+ // const [schemaIsLoading, setSchemaIsLoading] = useState(false);
58
+ const { schema: allTableData, isLoading: schemaIsLoading } = useDatabaseSchema();
59
+ const [customFieldInfo, setCustomFieldInfo] = useState(undefined);
60
+ const [initialVirtualTable, setInitialVirtualTable] = useState(undefined);
61
+ const [submittingVirtualTable, setSubmittingVirtualTable] = useState(false);
62
+ const [noCustomerField, setNoCustomerField] = useState(false);
63
+ const parentRef = useRef(null);
64
+ const { state, dispatch, clientLoading, setClient, getToken, quillFetchWithToken, } = useAdmin();
65
+ const closeEditModal = () => {
66
+ setEditModalIsOpen(false);
67
+ setEditName('');
68
+ setEditVirtualTableQuery('');
69
+ setCustomFieldInfo(undefined);
70
+ };
71
+ const clickTableCell = (table, suppressModal = false) => {
72
+ setEditName(table.name);
73
+ setEditVirtualTableQuery(table.viewQuery);
74
+ setEditVirtualTableOwnerTenantFields(table.ownerTenantFields ?? []);
75
+ setEditVirtualTableId(table._id);
76
+ setInitialVirtualTable(table);
77
+ setEditError(table.broken ? (table.error ?? 'Invalid query') : undefined);
78
+ setCustomFieldInfo(table.customFieldInfo);
79
+ !suppressModal && setEditModalIsOpen(true);
80
+ };
81
+ const reloadTables = async (tables) => {
82
+ const tempClient = {
83
+ name: state.client.name,
84
+ queryEndpoint: state.queryEndpoint ?? '',
85
+ queryHeaders: state.queryHeaders ?? undefined,
86
+ publicKey: state.client._id,
87
+ clientId: state.client._id,
88
+ withCredentials: state.client.withCredentials,
89
+ userId: state.client.userId,
90
+ };
91
+ const { schema: schemaData } = tables
92
+ ? await refreshSome(tempClient, tables)
93
+ : await reloadAll(tempClient, 'svm');
94
+ dispatch({ type: 'SET_TABLES', payload: schemaData });
95
+ if (virtualTable) {
96
+ const table = schemaData.find((table) => table.name === virtualTable);
97
+ if (table) {
98
+ setInitialVirtualTable(table);
99
+ setEditQueryView(true);
100
+ }
101
+ }
102
+ };
103
+ const getReferencedTablesMap = async () => {
104
+ const data = await quillFetchWithToken({
105
+ client: {
106
+ queryEndpoint: state.queryEndpoint,
107
+ clientId: state.client._id,
108
+ withCredentials: !!state.withCredentials,
109
+ queryHeaders: state.queryHeaders,
110
+ },
111
+ task: 'referenced-tables-map',
112
+ metadata: {
113
+ clientId: state.client._id,
114
+ databaseType: state.client.databaseType,
115
+ },
116
+ adminMode: true,
117
+ });
118
+ setReferencedTablesMap(data.data.referencedTablesMap);
119
+ setReferenceFiltersMap(data.data.referenceFiltersMap);
120
+ };
121
+ useEffect(() => {
122
+ if (state.client.id) {
123
+ getReferencedTablesMap();
124
+ }
125
+ }, [state.client.id]);
126
+ const handleModalSubmit = async (submitRequest, query, ownerTenantFields, name, id, columns, customFieldInfo, override) => {
127
+ if (override) {
128
+ setNoCustomerField(true);
129
+ }
130
+ else {
131
+ setNoCustomerField(false);
132
+ }
133
+ try {
134
+ const table = tables?.find((table) => table._id === id);
135
+ const prevTableName = table ? table.name : undefined;
136
+ const trimmedName = name?.trim() || undefined;
137
+ let submitResponse;
138
+ let duplicateColumns = [];
139
+ switch (submitRequest) {
140
+ case 'add':
141
+ if (!trimmedName) {
142
+ alert('No name found');
143
+ return;
144
+ }
145
+ if (tables?.map((table) => table.name).includes(trimmedName)) {
146
+ alert('Name already exists');
147
+ return;
148
+ }
149
+ // determine if there are duplicate names if there are then alert the user
150
+ duplicateColumns = getDuplicateColumns(columns);
151
+ if (duplicateColumns.length > 0) {
152
+ alert(`Ambiguous column names found. Either use aliases or remove the column to make every column name unique: \n\n${duplicateColumns.join('\n')}`);
153
+ return;
154
+ }
155
+ if (!/^[a-z0-9_]+$/.test(trimmedName)) {
156
+ alert('Names can only include lowercase letters, numbers, and underscores');
157
+ return;
158
+ }
159
+ submitResponse = await addVirtualTable(trimmedName, query, customFieldInfo, state, ownerTenantFields, getToken, override);
160
+ break;
161
+ case 'edit':
162
+ if (!id) {
163
+ return;
164
+ }
165
+ if (prevTableName && referencedTablesMap?.[prevTableName]) {
166
+ // This condition is for only query edits
167
+ if (editQueryView) {
168
+ const errorColumns = [];
169
+ referencedTablesMap[prevTableName].forEach((table) => {
170
+ table.referencedColumns.forEach((column) => {
171
+ if (!columns?.find((col) => {
172
+ return col.field === column;
173
+ })) {
174
+ errorColumns.push(`Column '${column}' is referenced by "${table.reportName}" on the "${table.dashboardName}" dashboard`);
175
+ }
176
+ });
177
+ });
178
+ if (errorColumns.length > 0) {
179
+ if (!confirm(`Warning\n\n${errorColumns.join('\n')} \n\n${errorColumns.length > 1 ? 'They' : 'It'} will be deleted off of the referencing report${errorColumns.length > 1 ? 's' : ''}`))
180
+ return;
181
+ }
182
+ }
183
+ else {
184
+ const referencedTableInfo = referencedTablesMap[prevTableName].map((info) => {
185
+ return `"${info.reportName}" on the "${info.dashboardName}" dashboard`;
186
+ });
187
+ if (referenceFiltersMap?.[prevTableName]) {
188
+ const referencedFilterInfo = referenceFiltersMap[prevTableName].map((info) => {
189
+ return `${info.dashboardName} - ${info.filterField}`;
190
+ });
191
+ alert(`Warning\n\n'${prevTableName}' is referenced in the following dashboard filters: \n\n${referencedFilterInfo.join('\n')} \n\nPlease delete those filters before renaming this virtual table.`);
192
+ return;
193
+ }
194
+ if (table && table.broken) {
195
+ alert('Error\n\nThis virtual table has an invalid query. Please fix the query before renaming it.');
196
+ return;
197
+ }
198
+ alert(`Warning\n\n'${prevTableName}' is referenced by: \n${referencedTableInfo.join('\n')} \n\nPlease delete those charts before renaming this virtual table.`);
199
+ return;
200
+ }
201
+ }
202
+ if (!trimmedName) {
203
+ alert('No name found');
204
+ return;
205
+ }
206
+ if (!/^[a-z0-9_]+$/.test(trimmedName)) {
207
+ alert('Names can only include lowercase letters, numbers, and underscores');
208
+ return;
209
+ }
210
+ // determine if there are duplicate names if there are then alert the user
211
+ duplicateColumns = getDuplicateColumns(columns);
212
+ if (duplicateColumns.length > 0) {
213
+ alert(`Ambiguous column names found. Either use aliases or remove the column to make every column name unique: \n\n${duplicateColumns.join('\n')}`);
214
+ return;
215
+ }
216
+ // check if the tableName is present excluding the table with the same id
217
+ if (tables
218
+ ?.filter((table) => table._id !== id)
219
+ .map((table) => table.name)
220
+ .includes(trimmedName)) {
221
+ alert('Name already exists');
222
+ return;
223
+ }
224
+ submitResponse = await editVirtualTable(trimmedName, query, id, customFieldInfo, state, ownerTenantFields, getToken, override);
225
+ reloadFilteredReports((report) => {
226
+ if (report.referencedTables?.includes(prevTableName ?? '')) {
227
+ return true;
228
+ }
229
+ else {
230
+ return false;
231
+ }
232
+ });
233
+ break;
234
+ case 'delete':
235
+ if (prevTableName) {
236
+ submitResponse = await deleteVirtualTable(id, name, prevTableName);
237
+ }
238
+ break;
239
+ default:
240
+ setEditName('');
241
+ setEditVirtualTableQuery(query);
242
+ setEditVirtualTableId('');
243
+ setEditVirtualTableOwnerTenantFields(ownerTenantFields);
244
+ setEditModalIsOpen(true);
245
+ return;
246
+ }
247
+ if (submitResponse?.status !== 'success') {
248
+ alert(`There was an error processing your ${submitRequest} request.`);
249
+ return;
250
+ }
251
+ await reloadTables();
252
+ closeEditModal();
253
+ setEditQueryView(false);
254
+ }
255
+ catch (e) {
256
+ console.error(e);
257
+ }
258
+ };
259
+ const deleteVirtualTable = async (id, name, prevTableName) => {
260
+ const isPlural = (referencedTablesMap?.[prevTableName]?.length ?? 0) > 1 ? 's' : '';
261
+ const filtersIsPlural = (referenceFiltersMap?.[prevTableName]?.length ?? 0) > 1 ? 's' : '';
262
+ if (!confirm('Delete "' + name + '"?'))
263
+ return;
264
+ if (!id) {
265
+ alert('No id found');
266
+ return;
267
+ }
268
+ // Determine if the table is referenced in other charts
269
+ if (referencedTablesMap?.[prevTableName]) {
270
+ const referencedTableInfo = referencedTablesMap[prevTableName].map((info) => {
271
+ return `${info.dashboardName} - ${info.reportName}`;
272
+ });
273
+ alert(`This table is referenced in the following dashboard${isPlural}/chart${isPlural}.\n\n${referencedTableInfo.join('\n')} \n\nPlease delete those charts before deleting this table.`);
274
+ return;
275
+ }
276
+ if (referenceFiltersMap?.[prevTableName]) {
277
+ const referencedFilterInfo = referenceFiltersMap[prevTableName].map((info) => {
278
+ return `${info.dashboardName} - ${info.filterField}`;
279
+ });
280
+ alert(`This table is referenced in the following dashboard filter${filtersIsPlural}.\n\n${referencedFilterInfo.join('\n')} \n\nPlease delete those filters before deleting this table.`);
281
+ return;
282
+ }
283
+ const response = await requestDeleteVirtualTable(id, state, getToken);
284
+ await reloadTables();
285
+ return response;
286
+ };
287
+ const handleEditAddView = async (request, query, ownerTenantFields, name, id, columns, override) => {
288
+ switch (request) {
289
+ case 'edit':
290
+ await handleModalSubmit('edit', query, ownerTenantFields, name, id, columns, undefined, override);
291
+ break;
292
+ default:
293
+ await handleModalSubmit('final-edit', query, ownerTenantFields, undefined, undefined, columns, undefined, override);
294
+ break;
295
+ }
296
+ };
297
+ return (_jsx("div", { style: { ...containerStyle }, children: _jsxs("div", { style: {
298
+ minHeight: '100%',
299
+ display: 'flex',
300
+ flexDirection: 'column',
301
+ paddingTop: '0px',
302
+ position: 'relative',
303
+ }, ref: parentRef, children: [(state.databaseTypeMismatch.show || !editQueryView) && (_jsx("div", { style: {
304
+ // width: 'calc(100vw - 30px)',
305
+ display: 'flex',
306
+ position: 'sticky',
307
+ // position: "fixed",
308
+ backgroundColor: 'white',
309
+ zIndex: 1,
310
+ left: 0,
311
+ right: 0,
312
+ top: 0,
313
+ flexDirection: 'row',
314
+ paddingTop: 12,
315
+ alignItems: 'center',
316
+ justifyContent: 'space-between',
317
+ paddingLeft: '30px',
318
+ paddingRight: '30px',
319
+ borderBottomWidth: 1,
320
+ borderTopWidth: 0,
321
+ borderLeftWidth: 0,
322
+ borderRightWidth: 0,
323
+ borderStyle: 'solid',
324
+ borderColor: state.theme?.borderColor,
325
+ paddingBottom: 20,
326
+ }, children: _jsxs("div", { style: {
327
+ display: 'flex',
328
+ flexDirection: 'row',
329
+ alignItems: 'flex-end',
330
+ justifyContent: 'space-between',
331
+ width: '100%',
332
+ }, children: [_jsx("div", { style: { display: 'flex', flexDirection: 'column' }, children: _jsx(EnvSelectPopover, { clients: state.clients, client: state.client, setClient: (client) => {
333
+ setSelectedDashboard(null);
334
+ setClient(client, true);
335
+ }, onSelectedEditEnvironment: () => {
336
+ setEditEnvironmentModalIsOpen(true);
337
+ }, theme: state.theme, parentRef: parentRef, isLoading: clientLoading }) }), !editQueryView && !state.databaseTypeMismatch.show && (_jsxs("div", { style: {
338
+ display: 'flex',
339
+ flexDirection: 'row',
340
+ gap: 8,
341
+ }, children: [_jsx(SecondaryButtonPrimitive, { onClick: () => {
342
+ reloadTables(tables);
343
+ }, label: "Refresh Tables" }), _jsx(ButtonPrimitive, { onClick: () => {
344
+ setEditName('');
345
+ setEditVirtualTableQuery('');
346
+ setEditVirtualTableId('');
347
+ setInitialVirtualTable(undefined);
348
+ setEditQueryView(true);
349
+ }, label: "Add Virtual Table +" })] }))] }) })), clientLoading || areTablesLoading ? (_jsx("div", { style: {
350
+ display: 'grid',
351
+ gridGap: 24,
352
+ gridTemplateColumns: 'repeat(auto-fill,minmax(460px, 1fr))',
353
+ padding: 25,
354
+ width: '100%',
355
+ }, children: Array.from({ length: 12 }).map((_, i) => (_jsx("div", { style: {
356
+ height: '180px',
357
+ width: '540px',
358
+ }, children: _jsx("div", { style: {
359
+ height: '100%',
360
+ width: '80%',
361
+ boxSizing: 'content-box',
362
+ borderRadius: 8,
363
+ overflow: 'hidden',
364
+ }, children: _jsxs("svg", { width: "100%", height: "100%", xmlns: "http://www.w3.org/2000/svg", xmlnsXlink: "http://www.w3.org/1999/xlink", children: [_jsx("rect", { width: "100%", height: "100%", fill: '#F9F9FA' }), _jsx("defs", { fill: '#F9F9FA', children: _jsxs("linearGradient", { id: "skeletonGradient", x1: "0%", y1: "0%", x2: "10%", y2: "0%", gradientUnits: "userSpaceOnUse", children: [_jsx("stop", { offset: "0%", stopColor: "rgba(255,255,255,0)" }), _jsx("stop", { offset: "50%", stopColor: "#FEFEFE" }), _jsx("stop", { offset: "100%", stopColor: "rgba(255,255,255,0)" }), _jsx("animate", { attributeName: "x1", from: "-100%", to: "100%", dur: "2s", repeatCount: "indefinite" }), _jsx("animate", { attributeName: "x2", from: "-50%", to: "150%", dur: "2s", repeatCount: "indefinite" })] }) }), _jsx("rect", { width: "50%", height: "100%", fill: "url(#skeletonGradient)", children: _jsx("animate", { attributeName: "x", from: "-100%", to: "100%", dur: "2s", repeatCount: "indefinite" }) })] }) }) }, i))) }, 'edit-view-query')) : state.databaseTypeMismatch.show ? (_jsx(DatabaseMismatchCard, { environmentName: state.client.name, environmentDatabaseType: state.client.databaseType, backendDatabaseType: state.databaseTypeMismatch.backendDatabaseType })) : (_jsxs(_Fragment, { children: [!editQueryView ? (tables && tables.length === 0 ? (_jsx(EmptyVirtualTablesComponent, { onClick: () => {
365
+ setEditQueryView(true);
366
+ } })) : (_jsx("div", { style: {
367
+ display: 'grid',
368
+ gridGap: 24,
369
+ gridTemplateColumns: 'repeat(auto-fill,minmax(460px, 1fr))',
370
+ padding: 25,
371
+ }, children: tables && tables?.length ? (_jsxs(_Fragment, { children: [tables.map((table) => (_jsx(TableCell, { table: table, clickTableCellHeader: clickTableCell, clickTableCellBody: () => {
372
+ clickTableCell(table, true);
373
+ setEditQueryView(true);
374
+ }, isLoading: loadingTables[table._id], reloadAction: (table) => reloadTables([table]), hoverActions: (table) => (_jsxs("div", { style: {
375
+ display: 'flex',
376
+ flexDirection: 'row',
377
+ gap: 8,
378
+ }, children: [_jsxs("button", { style: {
379
+ height: 32,
380
+ width: 32,
381
+ color: state.theme?.secondaryTextColor,
382
+ borderRadius: 6,
383
+ outline: 'none',
384
+ cursor: 'pointer',
385
+ fontSize: 14,
386
+ display: 'flex',
387
+ flexDirection: 'row',
388
+ alignItems: 'center',
389
+ }, onClick: (event) => {
390
+ event.stopPropagation();
391
+ clickTableCell(table, true);
392
+ setEditQueryView(true);
393
+ }, className: "secondary-button-quill", children: [_jsx("style", { children: `.secondary-button-quill { background: white } .secondary-button-quill:hover { background: #F4F4F5 }` }), _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", height: 12, width: 12, style: {
394
+ marginLeft: 'auto',
395
+ marginRight: 'auto',
396
+ }, children: _jsx("path", { d: "M21.731 2.269a2.625 2.625 0 0 0-3.712 0l-1.157 1.157 3.712 3.712 1.157-1.157a2.625 2.625 0 0 0 0-3.712ZM19.513 8.199l-3.712-3.712-12.15 12.15a5.25 5.25 0 0 0-1.32 2.214l-.8 2.685a.75.75 0 0 0 .933.933l2.685-.8a5.25 5.25 0 0 0 2.214-1.32L19.513 8.2Z" }) })] }), _jsx("button", { style: {
397
+ height: 32,
398
+ width: 32,
399
+ color: state.theme?.secondaryTextColor,
400
+ borderRadius: 6,
401
+ outline: 'none',
402
+ cursor: 'pointer',
403
+ fontSize: 14,
404
+ display: 'flex',
405
+ flexDirection: 'row',
406
+ alignItems: 'center',
407
+ }, onClick: (event) => {
408
+ event.stopPropagation();
409
+ clickTableCell(table);
410
+ }, className: "secondary-button-quill", children: _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", height: 16, width: 16, style: {
411
+ marginLeft: 'auto',
412
+ marginRight: 'auto',
413
+ }, children: _jsx("path", { fillRule: "evenodd", d: "M11.078 2.25c-.917 0-1.699.663-1.85 1.567L9.05 4.889c-.02.12-.115.26-.297.348a7.493 7.493 0 0 0-.986.57c-.166.115-.334.126-.45.083L6.3 5.508a1.875 1.875 0 0 0-2.282.819l-.922 1.597a1.875 1.875 0 0 0 .432 2.385l.84.692c.095.078.17.229.154.43a7.598 7.598 0 0 0 0 1.139c.015.2-.059.352-.153.43l-.841.692a1.875 1.875 0 0 0-.432 2.385l.922 1.597a1.875 1.875 0 0 0 2.282.818l1.019-.382c.115-.043.283-.031.45.082.312.214.641.405.985.57.182.088.277.228.297.35l.178 1.071c.151.904.933 1.567 1.85 1.567h1.844c.916 0 1.699-.663 1.85-1.567l.178-1.072c.02-.12.114-.26.297-.349.344-.165.673-.356.985-.57.167-.114.335-.125.45-.082l1.02.382a1.875 1.875 0 0 0 2.28-.819l.923-1.597a1.875 1.875 0 0 0-.432-2.385l-.84-.692c-.095-.078-.17-.229-.154-.43a7.614 7.614 0 0 0 0-1.139c-.016-.2.059-.352.153-.43l.84-.692c.708-.582.891-1.59.433-2.385l-.922-1.597a1.875 1.875 0 0 0-2.282-.818l-1.02.382c-.114.043-.282.031-.449-.083a7.49 7.49 0 0 0-.985-.57c-.183-.087-.277-.227-.297-.348l-.179-1.072a1.875 1.875 0 0 0-1.85-1.567h-1.843ZM12 15.75a3.75 3.75 0 1 0 0-7.5 3.75 3.75 0 0 0 0 7.5Z", clipRule: "evenodd" }) }) }), loadingTables[table._id] ? (_jsx("div", { style: {
414
+ width: 32,
415
+ height: 32,
416
+ display: 'flex',
417
+ justifyContent: 'center',
418
+ alignItems: 'center',
419
+ }, children: _jsx(LoadingSpinner, {}) })) : (_jsxs("button", { style: {
420
+ height: 32,
421
+ width: 32,
422
+ color: state.theme?.secondaryTextColor,
423
+ borderRadius: 6,
424
+ outline: 'none',
425
+ cursor: 'pointer',
426
+ fontSize: 14,
427
+ display: 'flex',
428
+ flexDirection: 'row',
429
+ alignItems: 'center',
430
+ }, className: "secondary-button-quill", onClick: (event) => {
431
+ event.stopPropagation();
432
+ reloadTables([table]);
433
+ }, children: [_jsx("style", { children: `.secondary-button-quill { background: white } .secondary-button-quill:hover { background: #F4F4F5 }` }), _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "currentColor", viewBox: "0 0 16 16", strokeWidth: 1.5, height: 16, width: 16, style: {
434
+ marginLeft: 'auto',
435
+ marginRight: 'auto',
436
+ }, children: _jsx("path", { fillRule: "evenodd", d: "M13.836 2.477a.75.75 0 0 1 .75.75v3.182a.75.75 0 0 1-.75.75h-3.182a.75.75 0 0 1 0-1.5h1.37l-.84-.841a4.5 4.5 0 0 0-7.08.932.75.75 0 0 1-1.3-.75 6 6 0 0 1 9.44-1.242l.842.84V3.227a.75.75 0 0 1 .75-.75Zm-.911 7.5A.75.75 0 0 1 13.199 11a6 6 0 0 1-9.44 1.241l-.84-.84v1.371a.75.75 0 0 1-1.5 0V9.591a.75.75 0 0 1 .75-.75H5.35a.75.75 0 0 1 0 1.5H3.98l.841.841a4.5 4.5 0 0 0 7.08-.932.75.75 0 0 1 1.025-.273Z", clipRule: "evenodd" }) })] })), _jsxs("button", { style: {
437
+ height: 32,
438
+ width: 32,
439
+ color: state.theme?.secondaryTextColor,
440
+ borderRadius: 6,
441
+ outline: 'none',
442
+ cursor: 'pointer',
443
+ fontSize: 14,
444
+ display: 'flex',
445
+ flexDirection: 'row',
446
+ alignItems: 'center',
447
+ }, onClick: (event) => {
448
+ event.stopPropagation();
449
+ deleteVirtualTable(table._id, table.name, table.name);
450
+ }, className: "secondary-button-quill", children: [_jsx("style", { children: `.secondary-button-quill { background: white } .secondary-button-quill:hover { background: #F4F4F5 }` }), _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", fill: "currentColor", height: 14, width: 14, style: {
451
+ marginLeft: 'auto',
452
+ marginRight: 'auto',
453
+ }, children: _jsx("path", { fillRule: "evenodd", d: "M8.75 1A2.75 2.75 0 0 0 6 3.75v.443c-.795.077-1.584.176-2.365.298a.75.75 0 1 0 .23 1.482l.149-.022.841 10.518A2.75 2.75 0 0 0 7.596 19h4.807a2.75 2.75 0 0 0 2.742-2.53l.841-10.52.149.023a.75.75 0 0 0 .23-1.482A41.03 41.03 0 0 0 14 4.193V3.75A2.75 2.75 0 0 0 11.25 1h-2.5ZM10 4c.84 0 1.673.025 2.5.075V3.75c0-.69-.56-1.25-1.25-1.25h-2.5c-.69 0-1.25.56-1.25 1.25v.325C8.327 4.025 9.16 4 10 4ZM8.58 7.72a.75.75 0 0 0-1.5.06l.3 7.5a.75.75 0 1 0 1.5-.06l-.3-7.5Zm4.34.06a.75.75 0 1 0-1.5-.06l-.3 7.5a.75.75 0 1 0 1.5.06l.3-7.5Z", clipRule: "evenodd" }) })] })] })) }, table._id))), _jsx(EditEnvironmentModal, { isOpen: editEnvironmentModalIsOpen, setIsOpen: setEditEnvironmentModalIsOpen, onSave: async () => {
454
+ window.location.reload();
455
+ }, ModalComponent: ModalPrimitive, ButtonComponent: ButtonPrimitive, SelectComponent: QuillSelectComponentWithCombo, SecondaryButtonComponent: SecondaryButtonPrimitive, TextInputComponent: TextInputPrimitive, HeaderComponent: HeaderPrimitive }, state.client._id)] })) : (Array.from({ length: 4 }).map((_, i) => (_jsx("div", { style: {
456
+ height: '180px',
457
+ width: '540px',
458
+ }, children: _jsx("div", { style: {
459
+ height: '100%',
460
+ width: '100%',
461
+ boxSizing: 'content-box',
462
+ borderRadius: 8,
463
+ overflow: 'hidden',
464
+ }, children: _jsxs("svg", { width: "100%", height: "100%", xmlns: "http://www.w3.org/2000/svg", xmlnsXlink: "http://www.w3.org/1999/xlink", children: [_jsx("rect", { width: "100%", height: "100%", fill: '#F9F9FA' }), _jsx("defs", { fill: '#F9F9FA', children: _jsxs("linearGradient", { id: "skeletonGradient", x1: "0%", y1: "0%", x2: "10%", y2: "0%", gradientUnits: "userSpaceOnUse", children: [_jsx("stop", { offset: "0%", stopColor: "rgba(255,255,255,0)" }), _jsx("stop", { offset: "50%", stopColor: "#FEFEFE" }), _jsx("stop", { offset: "100%", stopColor: "rgba(255,255,255,0)" }), _jsx("animate", { attributeName: "x1", from: "-100%", to: "100%", dur: "2s", repeatCount: "indefinite" }), _jsx("animate", { attributeName: "x2", from: "-50%", to: "150%", dur: "2s", repeatCount: "indefinite" })] }) }), _jsx("rect", { width: "50%", height: "100%", fill: "url(#skeletonGradient)", children: _jsx("animate", { attributeName: "x", from: "-100%", to: "100%", dur: "2s", repeatCount: "indefinite" }) })] }) }) }, i)))) }, 'edit-view-query'))) : (_jsx(CreateEditVirtualTable, { containerStyle: {}, initialVirtualTable: initialVirtualTable, closeEditVirtualTable: () => setEditQueryView(false), addEditVirtualTable: (request, query, ownerTenantFields, name, id, columns, override) => {
465
+ handleEditAddView(request, query, ownerTenantFields, name, id, columns, override);
466
+ }, allTableData: allTableData ?? [], schemaIsLoading: schemaIsLoading, client: state.client })), _jsx(EditAddViewModal, { viewName: editName, viewQuery: editVirtualTableQuery, viewId: editVirtualTableId, viewOwnerTenantFields: editVirtualTableOwnerTenantFields, editModalIsOpen: editModalIsOpen, customFieldInfo: customFieldInfo, closeEditModal: closeEditModal, error: editError, submit: async (submitRequest, query, ownerTenantFields, name, id, columns, customFieldInfo, noCustomerField) => {
467
+ if (submitRequest !== 'delete') {
468
+ setSubmittingVirtualTable(true);
469
+ }
470
+ await handleModalSubmit(submitRequest, query, ownerTenantFields, name, id, columns, customFieldInfo, noCustomerField);
471
+ setSubmittingVirtualTable(false);
472
+ }, state: state, onEditViewClick: () => setEditQueryView(true), isLoading: submittingVirtualTable, noCustomerField: noCustomerField, setIsPromoteViewModalOpen: setIsPromoteViewModalOpen }), _jsx(PromoteViewModal, { clientId: state.client._id, client: state.client, clients: state.clients, isOpen: isPromoteViewModalOpen, setIsOpen: setIsPromoteViewModalOpen, ModalComponent: ModalPrimitive, HeaderComponent: HeaderPrimitive, ButtonComponent: ButtonPrimitive, view: editName })] }))] }) }));
473
+ }
474
+ function EditAddViewModal({ viewName, viewQuery, viewOwnerTenantFields, viewId, editModalIsOpen, customFieldInfo, error, closeEditModal, submit, state, onEditViewClick = () => { }, isLoading, noCustomerField, setIsPromoteViewModalOpen, }) {
475
+ const [name, setName] = useState(viewName);
476
+ const [query, setQuery] = useState(viewQuery);
477
+ const [id, setId] = useState(viewId);
478
+ const [useCustomField, setUseCustomField] = useState(customFieldInfo ? true : false);
479
+ const [customFieldType, setCustomFieldType] = useState(customFieldInfo ? customFieldInfo.type : 'eav');
480
+ const [customFieldQuery, setCustomFieldQuery] = useState(customFieldInfo ? customFieldInfo.query : '');
481
+ const [runQueryButtonLoading, setRunQueryButtonLoading] = useState(false);
482
+ const [tableData, setTableData] = useState(undefined);
483
+ const [errorInfo, setErrorInfo] = useState({ show: false, message: '' });
484
+ const clientIsSingleTenant = useMemo(() => onlySingleDatabaseTenant(state.client), [state.client]);
485
+ const { getToken } = useAdmin();
486
+ useEffect(() => {
487
+ setCustomFieldQuery(customFieldInfo?.query || '');
488
+ setCustomFieldType(customFieldInfo?.type || 'eav');
489
+ setUseCustomField(customFieldInfo ? true : false);
490
+ }, [customFieldInfo]);
491
+ useEffect(() => {
492
+ setName(viewName);
493
+ }, [viewName]);
494
+ useEffect(() => {
495
+ setQuery(viewQuery);
496
+ }, [viewQuery]);
497
+ useEffect(() => {
498
+ setId(viewId);
499
+ }, [viewId]);
500
+ return (_jsx(ModalPrimitive, { isOpen: editModalIsOpen, onClose: () => {
501
+ setUseCustomField(false);
502
+ setCustomFieldType('eav');
503
+ setCustomFieldQuery('');
504
+ setTableData(undefined);
505
+ setErrorInfo({ show: false, message: '' });
506
+ setName('');
507
+ closeEditModal();
508
+ }, children: _jsxs("div", { style: { height: '100%', overflow: 'scroll', width: '100%' }, children: [_jsxs("div", { style: {
509
+ display: 'flex',
510
+ flexDirection: 'row',
511
+ alignItems: 'center',
512
+ justifyContent: 'space-between',
513
+ paddingBottom: '20px',
514
+ // width: '100%'
515
+ }, children: [_jsx("h1", { style: {
516
+ fontSize: '24px',
517
+ paddingTop: '0px',
518
+ marginTop: '0px',
519
+ marginBottom: '0px',
520
+ fontWeight: 'bold',
521
+ color: '#384151',
522
+ }, children: viewName ? 'Edit Virtual Table' : 'Add Virtual Table' }), _jsx(MemoizedDeleteButton, { onClick: closeEditModal, style: undefined })] }), _jsx(InputLabel, { children: "Name" }), _jsx(TextInputPrimitive, { ref: (input) => editModalIsOpen && !viewName && input?.focus(), placeholder: "Enter view display name...", onChange: (e) => setName(e.target.value), value: name ? name : '' }), _jsx("br", {}), viewOwnerTenantFields.length > 0 && (_jsxs(_Fragment, { children: [_jsx(InputLabel, { tooltip: "Dashboards may only query from virtual tables that share an owner with them. Virtual tables are required to return each of their owners' foreign keys as part of the query.", children: "Owners" }), _jsx("div", { style: {
523
+ flexDirection: 'row',
524
+ display: 'flex',
525
+ gap: 4,
526
+ }, children: viewOwnerTenantFields
527
+ ?.map((tenantField) => {
528
+ return (state.client?.allTenantTypes?.find((t) => t.tenantField === tenantField)?.name || tenantField);
529
+ })
530
+ .map((tenantField) => (_jsx("div", { style: {
531
+ fontWeight: 300,
532
+ fontSize: 12,
533
+ color: defaultTheme?.primaryTextColor,
534
+ padding: 2,
535
+ paddingLeft: 4,
536
+ paddingRight: 4,
537
+ border: '1px solid #E5E7EB',
538
+ borderRadius: 32,
539
+ }, children: tenantField }, tenantField))) }), _jsx("br", {})] })), error && (_jsxs(_Fragment, { children: [_jsx("h3", { style: { color: '#CA3A31' }, children: error }), _jsx("br", {})] })), _jsx(InputLabel, { children: "Query" }), _jsx(Highlight, { theme: themes.nightOwlLight, code: query || '', language: "sql", children: ({ className, tokens, style, getLineProps, getTokenProps }) => (_jsxs("pre", { className: className, style: {
540
+ ...style,
541
+ textAlign: 'left',
542
+ padding: '1em',
543
+ overflow: 'auto',
544
+ height: 132,
545
+ maxWidth: 460,
546
+ borderRadius: 8,
547
+ position: 'relative',
548
+ }, children: [tokens.map((line, i) => (_createElement("div", { ...getLineProps({ line }), key: i, style: {
549
+ wordWrap: 'normal',
550
+ whiteSpace: 'normal',
551
+ } }, line.map((token, key) => (_jsx("span", { ...getTokenProps({ token }) }, key)))))), viewName && (_jsx("div", { style: {
552
+ position: 'absolute',
553
+ bottom: '10px',
554
+ right: '10px',
555
+ }, children: _jsx(MemoizedSecondaryButton, { label: 'Edit Query ↗', onClick: () => {
556
+ closeEditModal();
557
+ onEditViewClick();
558
+ } }) }))] })) }), _jsx("br", {}), state.client?.featureFlags?.customFieldsEnabled && (_jsxs(_Fragment, { children: [_jsx("h3", { style: {
559
+ fontWeight: '600',
560
+ fontSize: '14px',
561
+ marginBottom: '6px',
562
+ color: '#212121',
563
+ }, children: "Custom fields" }), _jsx(TogglePrimitive, { value: useCustomField, onClick: () => {
564
+ setUseCustomField((useCustomField) => !useCustomField);
565
+ }, style: {
566
+ scale: 1.5,
567
+ } }), _jsx("br", {}), useCustomField && (_jsxs(_Fragment, { children: [_jsx("h3", { style: {
568
+ fontWeight: '600',
569
+ fontSize: '14px',
570
+ marginBottom: '6px',
571
+ marginTop: '20px',
572
+ color: '#212121',
573
+ }, children: "Custom field type" }), _jsx(SegmentedControl, { theme: state.theme, value: customFieldType?.toLowerCase(), onChange: (e) => {
574
+ setCustomFieldType(e);
575
+ }, left: { label: 'EAV', value: 'eav' }, right: { label: 'JSON', value: 'json' } }), _jsx("br", {}), _jsx("h3", { style: {
576
+ fontWeight: '600',
577
+ fontSize: '14px',
578
+ marginBottom: '6px',
579
+ color: '#212121',
580
+ }, children: "Custom field query" }), _jsx("h3", { style: {
581
+ fontWeight: '400',
582
+ fontSize: '14px',
583
+ marginBottom: '20px',
584
+ color: '#212121',
585
+ }, children: customFieldType === 'eav'
586
+ ? `A table of custom fields. It must have these columns: ref_table, ref_id, ref_table_id_field, field, value, type${clientIsSingleTenant ? '' : `, ${state.client.customerFieldName.replaceAll('"', '')}`}.`
587
+ : `A table of custom fields. It must have these columns: ref_table, ref_column, field${clientIsSingleTenant ? '' : `, ${state.client.customerFieldName.replaceAll('"', '')}`}.` }), _jsx(SqlTextEditor, { value: customFieldQuery, setValue: (e) => {
588
+ setCustomFieldQuery(e);
589
+ }, setEditorMounted: () => { }, containerStyle: {
590
+ width: 800,
591
+ }, schema: [] }), _jsx("br", {}), _jsx(MemoizedButton, { label: 'Run query', onClick: async () => {
592
+ if (/limit\s+\d+\s*;?\s*$/i.test(customFieldQuery)) {
593
+ setErrorInfo({
594
+ show: true,
595
+ message: 'Error: Please remove the limit at the end of your query.',
596
+ });
597
+ return;
598
+ }
599
+ setErrorInfo({ show: false, message: '' });
600
+ setRunQueryButtonLoading(true);
601
+ const getSqlResults = await getVirtualTableData(state.client._id, customFieldQuery, state.client.databaseType, state.queryEndpoint, getToken);
602
+ if (!getSqlResults.success) {
603
+ setErrorInfo({
604
+ show: true,
605
+ message: getSqlResults.error,
606
+ });
607
+ }
608
+ else {
609
+ setErrorInfo({ show: false, message: '' });
610
+ setTableData(getSqlResults);
611
+ }
612
+ setRunQueryButtonLoading(false);
613
+ } }), _jsx("br", {}), runQueryButtonLoading && (_jsx("div", { style: {
614
+ height: '250px',
615
+ width: '100%',
616
+ display: 'flex',
617
+ justifyContent: 'center',
618
+ alignItems: 'center',
619
+ }, children: _jsx(LoadingSpinner, {}) })), !errorInfo.show && tableData && !runQueryButtonLoading && (_jsx(Table, { rows: tableData.rows, columns: tableData.fields, containerStyle: {
620
+ height: '250px',
621
+ maxWidth: '800px',
622
+ paddingTop: '20px',
623
+ }, hideCSVDownloadButton: true })), errorInfo.show && (_jsx("div", { style: {
624
+ fontSize: 15,
625
+ fontWeight: '400',
626
+ paddingTop: '20px',
627
+ }, children: _jsx("div", { style: {
628
+ padding: 30,
629
+ background: 'rgba(0,0,0,0.02)',
630
+ display: 'inline-block',
631
+ flex: 0,
632
+ borderRadius: 6,
633
+ }, children: errorInfo.message }) }))] }))] })), _jsxs("div", { style: {
634
+ display: 'flex',
635
+ flexDirection: 'row',
636
+ alignItems: 'center',
637
+ justifyContent: 'space-between',
638
+ }, children: [viewName ? (_jsx("div", { style: {
639
+ display: 'flex',
640
+ flexDirection: 'row',
641
+ alignItems: 'center',
642
+ marginTop: 20,
643
+ gap: 8,
644
+ }, children: _jsx(MemoizedButton, { label: "Promote", onClick: () => {
645
+ setIsPromoteViewModalOpen(true);
646
+ }, style: { color: 'black', backgroundColor: 'white' } }) })) : null, _jsxs("div", { style: {
647
+ display: 'flex',
648
+ flexDirection: 'row',
649
+ alignItems: 'center',
650
+ justifyContent: 'flex-end',
651
+ marginTop: 20,
652
+ gap: 8,
653
+ }, children: [viewName && (_jsx(MemoizedButton, { onClick: () => submit('delete', query, viewOwnerTenantFields, name, id), label: "Delete", style: { color: 'red', backgroundColor: 'white' } })), _jsx(QuillToolTip, { text: 'Please run custom field query', enabled: useCustomField && !tableData, textStyle: {
654
+ maxWidth: '200px',
655
+ whiteSpace: 'normal',
656
+ }, children: _jsx(ButtonPrimitive, { onClick: () => {
657
+ if (!name) {
658
+ alert('Please enter a name');
659
+ return;
660
+ }
661
+ let customFieldRefColumns = [];
662
+ if (useCustomField) {
663
+ const fields = tableData?.fields.map((field) => field.field);
664
+ const missingFields = [];
665
+ if (!fields) {
666
+ alert('Custom field query is missing required columns');
667
+ return;
668
+ }
669
+ if (customFieldType === 'eav') {
670
+ // make sure the tableData has the required columns
671
+ [
672
+ 'ref_table',
673
+ 'ref_id',
674
+ 'ref_table_id_field',
675
+ 'field',
676
+ 'value',
677
+ 'type',
678
+ clientIsSingleTenant
679
+ ? ''
680
+ : state.client.customerFieldName.replaceAll('"', ''),
681
+ ].forEach((requiredField) => {
682
+ if (!fields.includes(requiredField) &&
683
+ requiredField !== '') {
684
+ missingFields.push(requiredField);
685
+ }
686
+ });
687
+ }
688
+ else {
689
+ [
690
+ 'ref_table',
691
+ 'field',
692
+ 'ref_column',
693
+ clientIsSingleTenant
694
+ ? ''
695
+ : state.client.customerFieldName.replaceAll('"', ''),
696
+ ].forEach((requiredField) => {
697
+ if (!fields.includes(requiredField) &&
698
+ requiredField !== '') {
699
+ missingFields.push(requiredField);
700
+ }
701
+ });
702
+ }
703
+ if (missingFields.length > 0) {
704
+ alert(`Custom field query is missing required columns: ${missingFields.join(', ')}`);
705
+ return;
706
+ }
707
+ if (customFieldType === 'json') {
708
+ customFieldRefColumns = [
709
+ ...new Set(tableData?.rows?.map((row) => {
710
+ return row['ref_column'];
711
+ })),
712
+ ];
713
+ }
714
+ }
715
+ submit(viewName ? 'edit' : 'add', query, viewOwnerTenantFields, name, id, undefined, useCustomField
716
+ ? {
717
+ type: customFieldType,
718
+ query: customFieldQuery,
719
+ refColumns: customFieldRefColumns,
720
+ }
721
+ : undefined, noCustomerField);
722
+ }, disabled: !name || (useCustomField && !tableData), label: viewName ? 'Save changes' : 'Create virtual table', isLoading: isLoading }) })] })] })] }) }));
723
+ }