@burdenoff/microfe-bigconsole 2026.1005.3 → 2026.1006.1

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 (1442) hide show
  1. package/README.md +22 -0
  2. package/dist/bigconsole/AdminRoot.d.ts +0 -1
  3. package/dist/bigconsole/AdminRoot.js +0 -2
  4. package/dist/bigconsole/AdminRoutes.d.ts +0 -1
  5. package/dist/bigconsole/AdminRoutes.js +0 -2
  6. package/dist/bigconsole/BigConsoleRoot.d.ts +0 -1
  7. package/dist/bigconsole/BigConsoleRoot.js +88 -84
  8. package/dist/bigconsole/BigConsoleRoutes.d.ts +0 -1
  9. package/dist/bigconsole/BigConsoleRoutes.js +39 -5
  10. package/dist/bigconsole/assistant/assistantApi.d.ts +0 -1
  11. package/dist/bigconsole/assistant/assistantApi.js +0 -2
  12. package/dist/bigconsole/assistant/assistantProduct.d.ts +0 -1
  13. package/dist/bigconsole/assistant/assistantProduct.js +0 -2
  14. package/dist/bigconsole/assistant/assistantPrompt.d.ts +0 -1
  15. package/dist/bigconsole/assistant/assistantPrompt.js +0 -2
  16. package/dist/bigconsole/assistant/assistantRunPersistence.d.ts +0 -1
  17. package/dist/bigconsole/assistant/assistantRunPersistence.js +0 -2
  18. package/dist/bigconsole/assistant/assistantRunStore.d.ts +0 -1
  19. package/dist/bigconsole/assistant/assistantRunStore.js +0 -2
  20. package/dist/bigconsole/assistant/assistantRuntime.d.ts +0 -1
  21. package/dist/bigconsole/assistant/assistantRuntime.js +0 -2
  22. package/dist/bigconsole/assistant/attachmentExtract.d.ts +0 -1
  23. package/dist/bigconsole/assistant/attachmentExtract.js +0 -2
  24. package/dist/bigconsole/assistant/conversationHistoryApi.d.ts +0 -1
  25. package/dist/bigconsole/assistant/conversationHistoryApi.js +0 -2
  26. package/dist/bigconsole/assistant/createSandboxAssistantTransport.d.ts +0 -1
  27. package/dist/bigconsole/assistant/createSandboxAssistantTransport.js +0 -2
  28. package/dist/bigconsole/assistant/index.d.ts +0 -1
  29. package/dist/bigconsole/assistant/modes.d.ts +0 -1
  30. package/dist/bigconsole/assistant/modes.js +0 -2
  31. package/dist/bigconsole/assistant/pageContext.d.ts +0 -1
  32. package/dist/bigconsole/assistant/pageContext.js +0 -2
  33. package/dist/bigconsole/assistant/previewController.d.ts +0 -1
  34. package/dist/bigconsole/assistant/previewController.js +0 -2
  35. package/dist/bigconsole/assistant/previewMutationResult.d.ts +0 -1
  36. package/dist/bigconsole/assistant/previewMutationResult.js +0 -2
  37. package/dist/bigconsole/assistant/previewRunAction.d.ts +0 -1
  38. package/dist/bigconsole/assistant/previewRunAction.js +0 -2
  39. package/dist/bigconsole/assistant/product.d.ts +0 -1
  40. package/dist/bigconsole/assistant/product.js +0 -2
  41. package/dist/bigconsole/assistant/recordAdapters.d.ts +0 -1
  42. package/dist/bigconsole/assistant/recordAdapters.js +52 -38
  43. package/dist/bigconsole/assistant/types.d.ts +0 -1
  44. package/dist/bigconsole/assistant/useAssistantRunWorkspace.d.ts +0 -1
  45. package/dist/bigconsole/assistant/useAssistantRunWorkspace.js +0 -2
  46. package/dist/bigconsole/assistant/useWorkspaceWriteAccess.d.ts +0 -1
  47. package/dist/bigconsole/assistant/useWorkspaceWriteAccess.js +0 -2
  48. package/dist/bigconsole/components/DrilldownDashboardRenderer.d.ts +0 -1
  49. package/dist/bigconsole/components/DrilldownDashboardRenderer.js +0 -2
  50. package/dist/bigconsole/components/DrilldownModal.d.ts +0 -1
  51. package/dist/bigconsole/components/DrilldownModal.js +0 -2
  52. package/dist/bigconsole/components/builder/BuilderCanvas.d.ts +0 -1
  53. package/dist/bigconsole/components/builder/BuilderCanvas.js +0 -2
  54. package/dist/bigconsole/components/builder/BuilderTopbar.d.ts +0 -1
  55. package/dist/bigconsole/components/builder/BuilderTopbar.js +0 -2
  56. package/dist/bigconsole/components/builder/DashboardEditorShell.d.ts +0 -1
  57. package/dist/bigconsole/components/builder/DashboardEditorShell.js +0 -2
  58. package/dist/bigconsole/components/builder/WidgetInspector.d.ts +0 -1
  59. package/dist/bigconsole/components/builder/WidgetInspector.js +0 -2
  60. package/dist/bigconsole/components/builder/index.d.ts +0 -1
  61. package/dist/bigconsole/components/builder/inspector/AdvancedSection.d.ts +0 -1
  62. package/dist/bigconsole/components/builder/inspector/AdvancedSection.js +0 -2
  63. package/dist/bigconsole/components/builder/inspector/AppearanceSection.d.ts +0 -1
  64. package/dist/bigconsole/components/builder/inspector/AppearanceSection.js +0 -2
  65. package/dist/bigconsole/components/builder/inspector/DataBindingSection.d.ts +0 -1
  66. package/dist/bigconsole/components/builder/inspector/DataBindingSection.js +0 -2
  67. package/dist/bigconsole/components/builder/inspector/GeneralSection.d.ts +0 -1
  68. package/dist/bigconsole/components/builder/inspector/GeneralSection.js +0 -2
  69. package/dist/bigconsole/components/builder/inspector/LayoutSection.d.ts +0 -1
  70. package/dist/bigconsole/components/builder/inspector/LayoutSection.js +0 -2
  71. package/dist/bigconsole/components/builder/inspector/index.d.ts +0 -1
  72. package/dist/bigconsole/components/common/Section.d.ts +0 -1
  73. package/dist/bigconsole/components/common/Section.js +0 -2
  74. package/dist/bigconsole/components/common/index.d.ts +0 -1
  75. package/dist/bigconsole/components/common/sectionStyles.d.ts +0 -1
  76. package/dist/bigconsole/components/common/sectionStyles.js +0 -2
  77. package/dist/bigconsole/components/dashboard/CreateDashboardDialog.d.ts +0 -1
  78. package/dist/bigconsole/components/dashboard/CreateDashboardDialog.js +0 -2
  79. package/dist/bigconsole/components/dashboard/DashboardCanvas.d.ts +0 -1
  80. package/dist/bigconsole/components/dashboard/DashboardCanvas.js +0 -2
  81. package/dist/bigconsole/components/dashboard/DashboardGrid.d.ts +0 -1
  82. package/dist/bigconsole/components/dashboard/DashboardGrid.js +0 -2
  83. package/dist/bigconsole/components/dashboard/DashboardStatusPill.d.ts +0 -1
  84. package/dist/bigconsole/components/dashboard/DashboardStatusPill.js +0 -2
  85. package/dist/bigconsole/components/dashboard/DashboardToolbar.d.ts +0 -1
  86. package/dist/bigconsole/components/dashboard/DashboardToolbar.js +0 -2
  87. package/dist/bigconsole/components/dashboard/DrilldownBreadcrumb.d.ts +0 -1
  88. package/dist/bigconsole/components/dashboard/DrilldownBreadcrumb.js +63 -64
  89. package/dist/bigconsole/components/dashboard/ExportDashboardDialog.d.ts +0 -1
  90. package/dist/bigconsole/components/dashboard/ExportDashboardDialog.js +0 -2
  91. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterChip.d.ts +0 -1
  92. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterChip.js +0 -2
  93. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.d.ts +0 -1
  94. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.js +0 -2
  95. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterPresetSelector.d.ts +0 -1
  96. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterPresetSelector.js +0 -2
  97. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/GlobalFiltersBar.d.ts +0 -1
  98. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/GlobalFiltersBar.js +0 -2
  99. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/index.d.ts +0 -1
  100. package/dist/bigconsole/components/dashboard/ImportDashboardDialog.d.ts +0 -1
  101. package/dist/bigconsole/components/dashboard/ImportDashboardDialog.js +0 -2
  102. package/dist/bigconsole/components/dashboard/LiveBoardBanner.d.ts +0 -1
  103. package/dist/bigconsole/components/dashboard/LiveBoardBanner.js +0 -2
  104. package/dist/bigconsole/components/dashboard/LiveCanvasToggle.d.ts +0 -1
  105. package/dist/bigconsole/components/dashboard/LiveCanvasToggle.js +0 -2
  106. package/dist/bigconsole/components/dashboard/PageTabsManager/PageTabsManager.d.ts +0 -1
  107. package/dist/bigconsole/components/dashboard/PageTabsManager/PageTabsManager.js +0 -2
  108. package/dist/bigconsole/components/dashboard/PageTabsManager/index.d.ts +0 -1
  109. package/dist/bigconsole/components/dashboard/PublishToStoreDialog.d.ts +0 -1
  110. package/dist/bigconsole/components/dashboard/PublishToStoreDialog.js +0 -2
  111. package/dist/bigconsole/components/dashboard/SavedViewsDropdown/SavedViewsDropdown.d.ts +0 -1
  112. package/dist/bigconsole/components/dashboard/SavedViewsDropdown/SavedViewsDropdown.js +0 -2
  113. package/dist/bigconsole/components/dashboard/SavedViewsDropdown/index.d.ts +0 -1
  114. package/dist/bigconsole/components/dashboard/ShareDialog/EmbedTab.d.ts +0 -1
  115. package/dist/bigconsole/components/dashboard/ShareDialog/EmbedTab.js +97 -108
  116. package/dist/bigconsole/components/dashboard/ShareDialog/ShareDialog.d.ts +0 -1
  117. package/dist/bigconsole/components/dashboard/ShareDialog/ShareDialog.js +0 -2
  118. package/dist/bigconsole/components/dashboard/ShareDialog/index.d.ts +0 -1
  119. package/dist/bigconsole/components/dashboard/StoreTemplatePicker.d.ts +0 -1
  120. package/dist/bigconsole/components/dashboard/StoreTemplatePicker.js +0 -2
  121. package/dist/bigconsole/components/dashboard/TemplateInstallOptions.d.ts +0 -1
  122. package/dist/bigconsole/components/dashboard/TemplateInstallOptions.js +0 -2
  123. package/dist/bigconsole/components/dashboard/TemplateLayoutPreview.d.ts +0 -1
  124. package/dist/bigconsole/components/dashboard/TemplateLayoutPreview.js +0 -2
  125. package/dist/bigconsole/components/dashboard/TemplatePicker/TemplatePicker.d.ts +0 -1
  126. package/dist/bigconsole/components/dashboard/TemplatePicker/index.d.ts +0 -1
  127. package/dist/bigconsole/components/dashboard/TemplateSetupBanner.d.ts +0 -1
  128. package/dist/bigconsole/components/dashboard/TemplateSetupBanner.js +0 -2
  129. package/dist/bigconsole/components/dashboard/WidgetPalette.d.ts +0 -1
  130. package/dist/bigconsole/components/dashboard/WidgetPalette.js +165 -165
  131. package/dist/bigconsole/components/dashboard/index.d.ts +0 -1
  132. package/dist/bigconsole/components/datasink/AlertExecutionHistory.d.ts +0 -1
  133. package/dist/bigconsole/components/datasink/AlertExecutionHistory.js +0 -2
  134. package/dist/bigconsole/components/datasink/AlertRuleEditor.d.ts +0 -1
  135. package/dist/bigconsole/components/datasink/AlertRuleEditor.js +0 -2
  136. package/dist/bigconsole/components/datasink/CacheTTLSelector.d.ts +0 -1
  137. package/dist/bigconsole/components/datasink/CacheTTLSelector.js +0 -2
  138. package/dist/bigconsole/components/datasink/ConfigurationForm.d.ts +0 -1
  139. package/dist/bigconsole/components/datasink/DataPreviewPanel.d.ts +0 -1
  140. package/dist/bigconsole/components/datasink/DataSinkCard.d.ts +0 -1
  141. package/dist/bigconsole/components/datasink/DataSinkCard.js +0 -2
  142. package/dist/bigconsole/components/datasink/DataSinkDataViewer.d.ts +0 -1
  143. package/dist/bigconsole/components/datasink/DataSinkDataViewer.js +0 -2
  144. package/dist/bigconsole/components/datasink/DataSinkDeleteDialog.d.ts +0 -1
  145. package/dist/bigconsole/components/datasink/DataSinkDeleteDialog.js +0 -2
  146. package/dist/bigconsole/components/datasink/DataSinkRefreshConfig.d.ts +0 -1
  147. package/dist/bigconsole/components/datasink/DataSinkRefreshDialog.d.ts +0 -1
  148. package/dist/bigconsole/components/datasink/DataSinkRefreshDialog.js +0 -2
  149. package/dist/bigconsole/components/datasink/DataSinkStatusBadge.d.ts +0 -1
  150. package/dist/bigconsole/components/datasink/DataSinkStatusBadge.js +0 -2
  151. package/dist/bigconsole/components/datasink/DataSinkTableViewer.d.ts +0 -1
  152. package/dist/bigconsole/components/datasink/DataSinkTableViewer.js +0 -2
  153. package/dist/bigconsole/components/datasink/ExportDataSinkDialog.d.ts +0 -1
  154. package/dist/bigconsole/components/datasink/ExportDataSinkDialog.js +0 -2
  155. package/dist/bigconsole/components/datasink/FluidGridsPanel.d.ts +0 -1
  156. package/dist/bigconsole/components/datasink/ImportDataGuideDialog.d.ts +0 -1
  157. package/dist/bigconsole/components/datasink/ImportDataGuideDialog.js +0 -2
  158. package/dist/bigconsole/components/datasink/ImportDataSinkDialog.d.ts +0 -1
  159. package/dist/bigconsole/components/datasink/ImportDataSinkDialog.js +0 -2
  160. package/dist/bigconsole/components/datasink/LinkedParsersPanel.d.ts +0 -1
  161. package/dist/bigconsole/components/datasink/LinkedParsersPanel.js +0 -2
  162. package/dist/bigconsole/components/datasink/LinkedWorkflowsPanel.d.ts +0 -1
  163. package/dist/bigconsole/components/datasink/LinkedWorkflowsPanel.js +0 -2
  164. package/dist/bigconsole/components/datasink/RefreshTypeSelector.d.ts +0 -1
  165. package/dist/bigconsole/components/datasink/RefreshTypeSelector.js +0 -2
  166. package/dist/bigconsole/components/datasink/SetupStateBadge.d.ts +0 -1
  167. package/dist/bigconsole/components/datasink/SetupStateBadge.js +0 -2
  168. package/dist/bigconsole/components/datasink/WorkflowStatusPanel.d.ts +0 -1
  169. package/dist/bigconsole/components/datasink/WorkflowStatusPanel.js +0 -2
  170. package/dist/bigconsole/components/datasink/index.d.ts +0 -1
  171. package/dist/bigconsole/components/embed/EmbedErrorBoundary.d.ts +0 -1
  172. package/dist/bigconsole/components/embed/EmbedErrorBoundary.js +0 -2
  173. package/dist/bigconsole/components/embed/EmbedWidgetRenderer.d.ts +0 -1
  174. package/dist/bigconsole/components/embed/EmbedWidgetRenderer.js +0 -2
  175. package/dist/bigconsole/components/embed/ReadOnlyDashboardRenderer.d.ts +0 -1
  176. package/dist/bigconsole/components/embed/ReadOnlyDashboardRenderer.js +0 -2
  177. package/dist/bigconsole/components/embed/drilldown.d.ts +0 -1
  178. package/dist/bigconsole/components/embed/drilldown.js +0 -2
  179. package/dist/bigconsole/components/embed/index.d.ts +0 -1
  180. package/dist/bigconsole/components/embed/renderer-manifest.d.ts +0 -1
  181. package/dist/bigconsole/components/embed/renderer-manifest.js +0 -2
  182. package/dist/bigconsole/components/embed/types.d.ts +0 -1
  183. package/dist/bigconsole/components/embed/types.js +0 -2
  184. package/dist/bigconsole/components/embed/validate.d.ts +0 -1
  185. package/dist/bigconsole/components/embed/validate.js +0 -2
  186. package/dist/bigconsole/components/embed/widgetShim.d.ts +0 -1
  187. package/dist/bigconsole/components/embed/widgetShim.js +0 -2
  188. package/dist/bigconsole/components/embed/widgets/CalendarEmbed.d.ts +0 -1
  189. package/dist/bigconsole/components/embed/widgets/CalendarEmbed.js +0 -2
  190. package/dist/bigconsole/components/embed/widgets/ChartEmbed.d.ts +0 -1
  191. package/dist/bigconsole/components/embed/widgets/ChartEmbed.js +0 -2
  192. package/dist/bigconsole/components/embed/widgets/EmbedFrame.d.ts +0 -1
  193. package/dist/bigconsole/components/embed/widgets/EmbedFrame.js +0 -2
  194. package/dist/bigconsole/components/embed/widgets/FormEmbed.d.ts +0 -1
  195. package/dist/bigconsole/components/embed/widgets/FormEmbed.js +0 -2
  196. package/dist/bigconsole/components/embed/widgets/GaugeEmbed.d.ts +0 -1
  197. package/dist/bigconsole/components/embed/widgets/GaugeEmbed.js +0 -2
  198. package/dist/bigconsole/components/embed/widgets/HeatmapEmbed.d.ts +0 -1
  199. package/dist/bigconsole/components/embed/widgets/HeatmapEmbed.js +0 -2
  200. package/dist/bigconsole/components/embed/widgets/KanbanEmbed.d.ts +0 -1
  201. package/dist/bigconsole/components/embed/widgets/KanbanEmbed.js +0 -2
  202. package/dist/bigconsole/components/embed/widgets/KpiComparisonEmbed.d.ts +0 -1
  203. package/dist/bigconsole/components/embed/widgets/KpiComparisonEmbed.js +0 -2
  204. package/dist/bigconsole/components/embed/widgets/ListEmbed.d.ts +0 -1
  205. package/dist/bigconsole/components/embed/widgets/ListEmbed.js +0 -2
  206. package/dist/bigconsole/components/embed/widgets/MetricCardEmbed.d.ts +0 -1
  207. package/dist/bigconsole/components/embed/widgets/MetricCardEmbed.js +0 -2
  208. package/dist/bigconsole/components/embed/widgets/PivotEmbed.d.ts +0 -1
  209. package/dist/bigconsole/components/embed/widgets/PivotEmbed.js +0 -2
  210. package/dist/bigconsole/components/embed/widgets/ProgressEmbed.d.ts +0 -1
  211. package/dist/bigconsole/components/embed/widgets/ProgressEmbed.js +0 -2
  212. package/dist/bigconsole/components/embed/widgets/RetentionEmbed.d.ts +0 -1
  213. package/dist/bigconsole/components/embed/widgets/RetentionEmbed.js +0 -2
  214. package/dist/bigconsole/components/embed/widgets/TableEmbed.d.ts +0 -1
  215. package/dist/bigconsole/components/embed/widgets/TableEmbed.js +0 -2
  216. package/dist/bigconsole/components/embed/widgets/TextEmbed.d.ts +0 -1
  217. package/dist/bigconsole/components/embed/widgets/TextEmbed.js +0 -2
  218. package/dist/bigconsole/components/embed/widgets/TimelineEmbed.d.ts +0 -1
  219. package/dist/bigconsole/components/embed/widgets/TimelineEmbed.js +0 -2
  220. package/dist/bigconsole/components/embed/widgets/shared.d.ts +0 -1
  221. package/dist/bigconsole/components/embed/widgets/shared.js +0 -2
  222. package/dist/bigconsole/components/overview/DashboardGuide.d.ts +0 -1
  223. package/dist/bigconsole/components/overview/DashboardGuide.js +0 -2
  224. package/dist/bigconsole/components/overview/DataHealthCard.d.ts +0 -1
  225. package/dist/bigconsole/components/overview/DataHealthCard.js +0 -2
  226. package/dist/bigconsole/components/overview/OverviewQuickActions.d.ts +0 -1
  227. package/dist/bigconsole/components/overview/OverviewQuickActions.js +0 -2
  228. package/dist/bigconsole/components/overview/OverviewStatCard.d.ts +0 -1
  229. package/dist/bigconsole/components/overview/OverviewStatCard.js +0 -2
  230. package/dist/bigconsole/components/overview/RecentDashboardsPanel.d.ts +0 -1
  231. package/dist/bigconsole/components/overview/RecentDashboardsPanel.js +0 -2
  232. package/dist/bigconsole/components/overview/dashboardGuideSteps.d.ts +0 -1
  233. package/dist/bigconsole/components/overview/dashboardGuideSteps.js +0 -2
  234. package/dist/bigconsole/components/overview/index.d.ts +0 -1
  235. package/dist/bigconsole/components/overview/overviewModel.d.ts +0 -1
  236. package/dist/bigconsole/components/overview/overviewModel.js +0 -2
  237. package/dist/bigconsole/components/overview/useOverviewData.d.ts +0 -1
  238. package/dist/bigconsole/components/overview/useOverviewData.js +0 -2
  239. package/dist/bigconsole/components/parser/DataSinkSelector.d.ts +0 -1
  240. package/dist/bigconsole/components/parser/DataSinkSelector.js +0 -2
  241. package/dist/bigconsole/components/parser/ExportParserDialog.d.ts +0 -1
  242. package/dist/bigconsole/components/parser/ExportParserDialog.js +0 -2
  243. package/dist/bigconsole/components/parser/ExpressionEditor.d.ts +0 -1
  244. package/dist/bigconsole/components/parser/ExpressionEditor.js +0 -2
  245. package/dist/bigconsole/components/parser/ImportParserDialog.d.ts +0 -1
  246. package/dist/bigconsole/components/parser/ImportParserDialog.js +0 -2
  247. package/dist/bigconsole/components/parser/ParserBuilder.d.ts +0 -1
  248. package/dist/bigconsole/components/parser/ParserCard.d.ts +0 -1
  249. package/dist/bigconsole/components/parser/ParserCard.js +0 -2
  250. package/dist/bigconsole/components/parser/ParserFormDialog.d.ts +0 -1
  251. package/dist/bigconsole/components/parser/ParserSelector.d.ts +0 -1
  252. package/dist/bigconsole/components/parser/ParserSelector.js +0 -2
  253. package/dist/bigconsole/components/parser/ParserStatusBadge.d.ts +0 -1
  254. package/dist/bigconsole/components/parser/ParserStatusBadge.js +0 -2
  255. package/dist/bigconsole/components/parser/ParserTypeBadge.d.ts +0 -1
  256. package/dist/bigconsole/components/parser/ParserTypeBadge.js +0 -2
  257. package/dist/bigconsole/components/parser/TestPanel.d.ts +0 -1
  258. package/dist/bigconsole/components/parser/index.d.ts +0 -1
  259. package/dist/bigconsole/components/parser/parserFieldStyles.d.ts +0 -1
  260. package/dist/bigconsole/components/pipeline/PipelineCard.d.ts +0 -1
  261. package/dist/bigconsole/components/pipeline/PipelineCard.js +0 -2
  262. package/dist/bigconsole/components/pipeline/PipelineDeleteDialog.d.ts +0 -1
  263. package/dist/bigconsole/components/pipeline/PipelineDeleteDialog.js +0 -2
  264. package/dist/bigconsole/components/pipeline/PipelineScopePicker.d.ts +0 -1
  265. package/dist/bigconsole/components/pipeline/PipelineScopePicker.js +0 -2
  266. package/dist/bigconsole/components/pipeline/PipelineStatusBadge.d.ts +0 -1
  267. package/dist/bigconsole/components/pipeline/PipelineStatusBadge.js +0 -2
  268. package/dist/bigconsole/components/pipeline/index.d.ts +0 -1
  269. package/dist/bigconsole/components/preview/AiPreviewContent.d.ts +0 -1
  270. package/dist/bigconsole/components/preview/AiPreviewContent.js +0 -2
  271. package/dist/bigconsole/components/preview/AiPreviewMiniPanel.d.ts +0 -1
  272. package/dist/bigconsole/components/preview/AiPreviewMiniPanel.js +0 -2
  273. package/dist/bigconsole/components/preview/AiPreviewPanel.d.ts +0 -1
  274. package/dist/bigconsole/components/preview/AiPreviewPanel.js +0 -2
  275. package/dist/bigconsole/components/preview/parserPreview.d.ts +0 -1
  276. package/dist/bigconsole/components/preview/parserPreview.js +0 -2
  277. package/dist/bigconsole/components/preview/previewShared.d.ts +0 -1
  278. package/dist/bigconsole/components/preview/previewShared.js +0 -2
  279. package/dist/bigconsole/components/widgets/ActionConfigDialog.d.ts +0 -1
  280. package/dist/bigconsole/components/widgets/ActionConfigDialog.js +0 -2
  281. package/dist/bigconsole/components/widgets/DrilldownConfigPanel.d.ts +0 -1
  282. package/dist/bigconsole/components/widgets/DrilldownConfigPanel.js +0 -2
  283. package/dist/bigconsole/components/widgets/PropertiesPanel.d.ts +0 -1
  284. package/dist/bigconsole/components/widgets/PropertiesPanel.js +0 -2
  285. package/dist/bigconsole/components/widgets/WidgetErrorBoundary.d.ts +0 -1
  286. package/dist/bigconsole/components/widgets/WidgetErrorBoundary.js +0 -2
  287. package/dist/bigconsole/components/widgets/WidgetHeader.d.ts +0 -1
  288. package/dist/bigconsole/components/widgets/WidgetHeader.js +0 -2
  289. package/dist/bigconsole/components/widgets/WidgetMenu.d.ts +0 -1
  290. package/dist/bigconsole/components/widgets/WidgetMenu.js +0 -2
  291. package/dist/bigconsole/components/widgets/WidgetRegistry.d.ts +0 -1
  292. package/dist/bigconsole/components/widgets/WidgetRegistry.js +0 -3
  293. package/dist/bigconsole/components/widgets/WidgetTypeSelector.d.ts +0 -1
  294. package/dist/bigconsole/components/widgets/WidgetWrapper.d.ts +0 -1
  295. package/dist/bigconsole/components/widgets/WidgetWrapper.js +0 -2
  296. package/dist/bigconsole/components/widgets/actionConfig.d.ts +0 -1
  297. package/dist/bigconsole/components/widgets/actionConfig.js +0 -2
  298. package/dist/bigconsole/components/widgets/adaptive-card/AdaptiveCardWidget.d.ts +0 -1
  299. package/dist/bigconsole/components/widgets/adaptive-card/AdaptiveCardWidget.js +0 -2
  300. package/dist/bigconsole/components/widgets/adaptive-card/index.d.ts +0 -1
  301. package/dist/bigconsole/components/widgets/calendar/CalendarView.d.ts +0 -1
  302. package/dist/bigconsole/components/widgets/calendar/CalendarView.js +0 -2
  303. package/dist/bigconsole/components/widgets/calendar/CalendarWidget.d.ts +0 -1
  304. package/dist/bigconsole/components/widgets/calendar/CalendarWidget.js +0 -2
  305. package/dist/bigconsole/components/widgets/calendar/index.d.ts +0 -1
  306. package/dist/bigconsole/components/widgets/chart/ChartConfig.d.ts +0 -1
  307. package/dist/bigconsole/components/widgets/chart/ChartConfig.js +0 -2
  308. package/dist/bigconsole/components/widgets/chart/ChartLegend.d.ts +0 -1
  309. package/dist/bigconsole/components/widgets/chart/ChartLegend.js +0 -2
  310. package/dist/bigconsole/components/widgets/chart/ChartTooltip.d.ts +0 -1
  311. package/dist/bigconsole/components/widgets/chart/ChartTooltip.js +0 -2
  312. package/dist/bigconsole/components/widgets/chart/ChartWidget.d.ts +0 -1
  313. package/dist/bigconsole/components/widgets/chart/ChartWidget.js +0 -2
  314. package/dist/bigconsole/components/widgets/chart/charts/AreaChart.d.ts +0 -1
  315. package/dist/bigconsole/components/widgets/chart/charts/AreaChart.js +0 -2
  316. package/dist/bigconsole/components/widgets/chart/charts/BarChart.d.ts +0 -1
  317. package/dist/bigconsole/components/widgets/chart/charts/BarChart.js +0 -2
  318. package/dist/bigconsole/components/widgets/chart/charts/ComboChart.d.ts +0 -1
  319. package/dist/bigconsole/components/widgets/chart/charts/ComboChart.js +0 -2
  320. package/dist/bigconsole/components/widgets/chart/charts/FunnelChart.d.ts +0 -1
  321. package/dist/bigconsole/components/widgets/chart/charts/FunnelChart.js +0 -2
  322. package/dist/bigconsole/components/widgets/chart/charts/LineChart.d.ts +0 -1
  323. package/dist/bigconsole/components/widgets/chart/charts/LineChart.js +0 -2
  324. package/dist/bigconsole/components/widgets/chart/charts/PieChart.d.ts +0 -1
  325. package/dist/bigconsole/components/widgets/chart/charts/PieChart.js +0 -2
  326. package/dist/bigconsole/components/widgets/chart/charts/ScatterChart.d.ts +0 -1
  327. package/dist/bigconsole/components/widgets/chart/charts/ScatterChart.js +0 -2
  328. package/dist/bigconsole/components/widgets/chart/charts/WaterfallChart.d.ts +0 -1
  329. package/dist/bigconsole/components/widgets/chart/charts/WaterfallChart.js +0 -2
  330. package/dist/bigconsole/components/widgets/chart/charts/index.d.ts +0 -1
  331. package/dist/bigconsole/components/widgets/chart/charts/referenceElements.d.ts +0 -1
  332. package/dist/bigconsole/components/widgets/chart/charts/referenceElements.js +0 -2
  333. package/dist/bigconsole/components/widgets/chart/charts/types.d.ts +0 -1
  334. package/dist/bigconsole/components/widgets/chart/index.d.ts +0 -1
  335. package/dist/bigconsole/components/widgets/comments/WidgetComments.d.ts +0 -1
  336. package/dist/bigconsole/components/widgets/comments/WidgetComments.js +0 -2
  337. package/dist/bigconsole/components/widgets/custom/CustomWidget.d.ts +0 -1
  338. package/dist/bigconsole/components/widgets/custom/CustomWidget.js +73 -133
  339. package/dist/bigconsole/components/widgets/custom/config.d.ts +0 -1
  340. package/dist/bigconsole/components/widgets/custom/config.js +0 -2
  341. package/dist/bigconsole/components/widgets/custom/index.d.ts +0 -1
  342. package/dist/bigconsole/components/widgets/custom/utils.d.ts +0 -1
  343. package/dist/bigconsole/components/widgets/custom/utils.js +0 -2
  344. package/dist/bigconsole/components/widgets/event-logs/EventLogViewer.d.ts +0 -1
  345. package/dist/bigconsole/components/widgets/event-logs/EventLogViewer.js +0 -2
  346. package/dist/bigconsole/components/widgets/event-logs/index.d.ts +0 -1
  347. package/dist/bigconsole/components/widgets/form/FormWidget.d.ts +0 -1
  348. package/dist/bigconsole/components/widgets/form/FormWidget.js +0 -2
  349. package/dist/bigconsole/components/widgets/form/index.d.ts +0 -1
  350. package/dist/bigconsole/components/widgets/funnel/index.d.ts +0 -1
  351. package/dist/bigconsole/components/widgets/funnel/index.js +0 -2
  352. package/dist/bigconsole/components/widgets/gauge/CircularGauge.d.ts +0 -1
  353. package/dist/bigconsole/components/widgets/gauge/CircularGauge.js +0 -2
  354. package/dist/bigconsole/components/widgets/gauge/GaugeConfig.d.ts +0 -1
  355. package/dist/bigconsole/components/widgets/gauge/GaugeConfig.js +0 -2
  356. package/dist/bigconsole/components/widgets/gauge/GaugeWidget.d.ts +0 -1
  357. package/dist/bigconsole/components/widgets/gauge/GaugeWidget.js +0 -2
  358. package/dist/bigconsole/components/widgets/gauge/LinearGauge.d.ts +0 -1
  359. package/dist/bigconsole/components/widgets/gauge/LinearGauge.js +0 -2
  360. package/dist/bigconsole/components/widgets/gauge/index.d.ts +0 -1
  361. package/dist/bigconsole/components/widgets/heatmap/HeatmapConfig.d.ts +0 -1
  362. package/dist/bigconsole/components/widgets/heatmap/HeatmapConfig.js +0 -2
  363. package/dist/bigconsole/components/widgets/heatmap/HeatmapWidget.d.ts +0 -1
  364. package/dist/bigconsole/components/widgets/heatmap/HeatmapWidget.js +0 -2
  365. package/dist/bigconsole/components/widgets/heatmap/index.d.ts +0 -1
  366. package/dist/bigconsole/components/widgets/iframe-widget/IframeWidget.d.ts +28 -10
  367. package/dist/bigconsole/components/widgets/iframe-widget/IframeWidget.js +115 -44
  368. package/dist/bigconsole/components/widgets/iframe-widget/framePolicy.d.ts +20 -0
  369. package/dist/bigconsole/components/widgets/iframe-widget/framePolicy.js +10 -0
  370. package/dist/bigconsole/components/widgets/iframe-widget/index.d.ts +2 -2
  371. package/dist/bigconsole/components/widgets/iframe-widget/index.js +3 -2
  372. package/dist/bigconsole/components/widgets/index.d.ts +0 -1
  373. package/dist/bigconsole/components/widgets/kanban/KanbanView.d.ts +0 -1
  374. package/dist/bigconsole/components/widgets/kanban/KanbanView.js +0 -2
  375. package/dist/bigconsole/components/widgets/kanban/KanbanWidget.d.ts +0 -1
  376. package/dist/bigconsole/components/widgets/kanban/KanbanWidget.js +0 -2
  377. package/dist/bigconsole/components/widgets/kanban/index.d.ts +0 -1
  378. package/dist/bigconsole/components/widgets/kanban/model.d.ts +0 -1
  379. package/dist/bigconsole/components/widgets/kanban/model.js +0 -2
  380. package/dist/bigconsole/components/widgets/kpi/KPIWidget.d.ts +0 -1
  381. package/dist/bigconsole/components/widgets/kpi/KPIWidget.js +0 -2
  382. package/dist/bigconsole/components/widgets/kpi/index.d.ts +0 -1
  383. package/dist/bigconsole/components/widgets/kpi-comparison/KPIComparisonWidget.d.ts +0 -1
  384. package/dist/bigconsole/components/widgets/kpi-comparison/KPIComparisonWidget.js +0 -2
  385. package/dist/bigconsole/components/widgets/kpi-comparison/index.d.ts +0 -1
  386. package/dist/bigconsole/components/widgets/list/ListConfig.d.ts +0 -1
  387. package/dist/bigconsole/components/widgets/list/ListConfig.js +0 -2
  388. package/dist/bigconsole/components/widgets/list/ListItem.d.ts +0 -1
  389. package/dist/bigconsole/components/widgets/list/ListItem.js +0 -2
  390. package/dist/bigconsole/components/widgets/list/ListWidget.d.ts +0 -1
  391. package/dist/bigconsole/components/widgets/list/ListWidget.js +0 -2
  392. package/dist/bigconsole/components/widgets/list/index.d.ts +0 -1
  393. package/dist/bigconsole/components/widgets/map-widget/MapWidget.d.ts +0 -1
  394. package/dist/bigconsole/components/widgets/map-widget/MapWidget.js +0 -2
  395. package/dist/bigconsole/components/widgets/map-widget/index.d.ts +0 -1
  396. package/dist/bigconsole/components/widgets/metric-card/ComparisonBadge.d.ts +0 -1
  397. package/dist/bigconsole/components/widgets/metric-card/ComparisonBadge.js +0 -2
  398. package/dist/bigconsole/components/widgets/metric-card/MetricCardConfig.d.ts +0 -1
  399. package/dist/bigconsole/components/widgets/metric-card/MetricCardConfig.js +0 -2
  400. package/dist/bigconsole/components/widgets/metric-card/MetricCardWidget.d.ts +0 -1
  401. package/dist/bigconsole/components/widgets/metric-card/MetricCardWidget.js +0 -2
  402. package/dist/bigconsole/components/widgets/metric-card/SparklineChart.d.ts +0 -1
  403. package/dist/bigconsole/components/widgets/metric-card/SparklineChart.js +0 -2
  404. package/dist/bigconsole/components/widgets/metric-card/TrendIndicator.d.ts +0 -1
  405. package/dist/bigconsole/components/widgets/metric-card/TrendIndicator.js +0 -2
  406. package/dist/bigconsole/components/widgets/metric-card/index.d.ts +0 -1
  407. package/dist/bigconsole/components/widgets/pivot-table/PivotTableWidget.d.ts +0 -1
  408. package/dist/bigconsole/components/widgets/pivot-table/PivotTableWidget.js +0 -2
  409. package/dist/bigconsole/components/widgets/pivot-table/index.d.ts +0 -1
  410. package/dist/bigconsole/components/widgets/progress/ProgressBar.d.ts +0 -1
  411. package/dist/bigconsole/components/widgets/progress/ProgressBar.js +0 -2
  412. package/dist/bigconsole/components/widgets/progress/ProgressConfig.d.ts +0 -1
  413. package/dist/bigconsole/components/widgets/progress/ProgressConfig.js +0 -2
  414. package/dist/bigconsole/components/widgets/progress/ProgressWidget.d.ts +0 -1
  415. package/dist/bigconsole/components/widgets/progress/ProgressWidget.js +0 -2
  416. package/dist/bigconsole/components/widgets/progress/index.d.ts +0 -1
  417. package/dist/bigconsole/components/widgets/retention/RetentionWidget.d.ts +0 -1
  418. package/dist/bigconsole/components/widgets/retention/RetentionWidget.js +0 -2
  419. package/dist/bigconsole/components/widgets/retention/index.d.ts +0 -1
  420. package/dist/bigconsole/components/widgets/states/EmptyState.d.ts +0 -1
  421. package/dist/bigconsole/components/widgets/states/EmptyState.js +0 -2
  422. package/dist/bigconsole/components/widgets/states/ErrorState.d.ts +0 -1
  423. package/dist/bigconsole/components/widgets/states/ErrorState.js +0 -2
  424. package/dist/bigconsole/components/widgets/states/LoadingState.d.ts +0 -1
  425. package/dist/bigconsole/components/widgets/states/LoadingState.js +0 -2
  426. package/dist/bigconsole/components/widgets/states/index.d.ts +0 -1
  427. package/dist/bigconsole/components/widgets/table/TableCell.d.ts +0 -1
  428. package/dist/bigconsole/components/widgets/table/TableCell.js +0 -2
  429. package/dist/bigconsole/components/widgets/table/TableConfig.d.ts +0 -1
  430. package/dist/bigconsole/components/widgets/table/TableConfig.js +0 -2
  431. package/dist/bigconsole/components/widgets/table/TableHeader.d.ts +0 -1
  432. package/dist/bigconsole/components/widgets/table/TableHeader.js +0 -2
  433. package/dist/bigconsole/components/widgets/table/TablePagination.d.ts +0 -1
  434. package/dist/bigconsole/components/widgets/table/TablePagination.js +0 -2
  435. package/dist/bigconsole/components/widgets/table/TableWidget.d.ts +0 -1
  436. package/dist/bigconsole/components/widgets/table/TableWidget.js +0 -2
  437. package/dist/bigconsole/components/widgets/table/cellLink.d.ts +0 -1
  438. package/dist/bigconsole/components/widgets/table/cellLink.js +0 -2
  439. package/dist/bigconsole/components/widgets/table/index.d.ts +0 -1
  440. package/dist/bigconsole/components/widgets/text-widget/TextWidget.d.ts +0 -1
  441. package/dist/bigconsole/components/widgets/text-widget/TextWidget.js +110 -29
  442. package/dist/bigconsole/components/widgets/text-widget/index.d.ts +0 -1
  443. package/dist/bigconsole/components/widgets/text-widget/textData.d.ts +6 -1
  444. package/dist/bigconsole/components/widgets/text-widget/textData.js +17 -16
  445. package/dist/bigconsole/components/widgets/timeline/TimelineWidget.d.ts +0 -1
  446. package/dist/bigconsole/components/widgets/timeline/TimelineWidget.js +0 -2
  447. package/dist/bigconsole/components/widgets/timeline/index.d.ts +0 -1
  448. package/dist/bigconsole/components/widgets/utils/conditionalFormat.d.ts +0 -1
  449. package/dist/bigconsole/components/widgets/utils/conditionalFormat.js +0 -2
  450. package/dist/bigconsole/components/widgets/utils/inferFields.d.ts +0 -1
  451. package/dist/bigconsole/components/widgets/utils/inferFields.js +0 -2
  452. package/dist/bigconsole/components/widgets/utils/targetProgress.d.ts +0 -1
  453. package/dist/bigconsole/components/widgets/utils/targetProgress.js +0 -2
  454. package/dist/bigconsole/components/widgets/utils/translate.d.ts +0 -1
  455. package/dist/bigconsole/components/widgets/utils/translate.js +0 -2
  456. package/dist/bigconsole/components/widgets/webhook-config/WebhookConfigPanel.d.ts +0 -1
  457. package/dist/bigconsole/components/widgets/webhook-config/WebhookConfigPanel.js +0 -2
  458. package/dist/bigconsole/components/widgets/webhook-config/index.d.ts +0 -1
  459. package/dist/bigconsole/components/widgets/widget-actions/WidgetActions.d.ts +0 -1
  460. package/dist/bigconsole/components/widgets/widget-actions/WidgetActions.js +0 -2
  461. package/dist/bigconsole/components/widgets/widget-actions/index.d.ts +0 -1
  462. package/dist/bigconsole/components/workflow/DataSinkMultiSelector.d.ts +0 -1
  463. package/dist/bigconsole/components/workflow/WorkflowCard.d.ts +0 -1
  464. package/dist/bigconsole/components/workflow/WorkflowCard.js +0 -2
  465. package/dist/bigconsole/components/workflow/WorkflowDeleteDialog.d.ts +0 -1
  466. package/dist/bigconsole/components/workflow/WorkflowDeleteDialog.js +0 -2
  467. package/dist/bigconsole/components/workflow/WorkflowDesignPreview.d.ts +0 -1
  468. package/dist/bigconsole/components/workflow/WorkflowDesignPreview.js +0 -2
  469. package/dist/bigconsole/components/workflow/WorkflowOpenGuard.d.ts +0 -1
  470. package/dist/bigconsole/components/workflow/WorkflowOpenGuard.js +0 -2
  471. package/dist/bigconsole/components/workflow/WorkflowSinkLinkForm.d.ts +0 -1
  472. package/dist/bigconsole/components/workflow/WorkflowSinkLinkForm.js +0 -2
  473. package/dist/bigconsole/components/workflow/WorkflowStatusBadge.d.ts +0 -1
  474. package/dist/bigconsole/components/workflow/WorkflowStatusBadge.js +0 -2
  475. package/dist/bigconsole/components/workflow/index.d.ts +0 -1
  476. package/dist/bigconsole/constants/backendErrors.d.ts +0 -1
  477. package/dist/bigconsole/constants.d.ts +0 -1
  478. package/dist/bigconsole/constants.js +0 -2
  479. package/dist/bigconsole/context/BigConsoleContext.d.ts +10 -1
  480. package/dist/bigconsole/context/BigConsoleContext.js +47 -32
  481. package/dist/bigconsole/context/index.d.ts +1 -2
  482. package/dist/bigconsole/contexts/CrossFilterContext.d.ts +0 -1
  483. package/dist/bigconsole/contexts/CrossFilterContext.js +0 -2
  484. package/dist/bigconsole/contexts/NavigationContext.d.ts +0 -1
  485. package/dist/bigconsole/contexts/NavigationContext.js +0 -2
  486. package/dist/bigconsole/contexts/index.d.ts +0 -1
  487. package/dist/bigconsole/customWidget/CustomWidgetBuilderSheet.d.ts +0 -1
  488. package/dist/bigconsole/customWidget/CustomWidgetBuilderSheet.js +0 -2
  489. package/dist/bigconsole/customWidget/CustomWidgetProposalPanel.d.ts +0 -1
  490. package/dist/bigconsole/customWidget/CustomWidgetProposalPanel.js +0 -2
  491. package/dist/bigconsole/customWidget/index.d.ts +0 -1
  492. package/dist/bigconsole/customWidget/proposalContract.d.ts +0 -1
  493. package/dist/bigconsole/customWidget/proposalContract.js +0 -2
  494. package/dist/bigconsole/customWidget/proposalSource.d.ts +0 -1
  495. package/dist/bigconsole/customWidget/proposalSource.js +0 -2
  496. package/dist/bigconsole/graphql/apollo-compat.d.ts +0 -1
  497. package/dist/bigconsole/graphql/storeTemplates.d.ts +0 -1
  498. package/dist/bigconsole/graphql/storeTemplates.js +0 -2
  499. package/dist/bigconsole/hooks/index.d.ts +0 -1
  500. package/dist/bigconsole/hooks/useActivePage.d.ts +0 -1
  501. package/dist/bigconsole/hooks/useActivePage.js +0 -2
  502. package/dist/bigconsole/hooks/useAutoRefresh.d.ts +0 -1
  503. package/dist/bigconsole/hooks/useAutoRefresh.js +0 -2
  504. package/dist/bigconsole/hooks/useBigConsoleAnalytics.d.ts +0 -1
  505. package/dist/bigconsole/hooks/useBigConsoleAnalytics.js +0 -2
  506. package/dist/bigconsole/hooks/useBigConsoleSettings.d.ts +0 -1
  507. package/dist/bigconsole/hooks/useBigConsoleSettings.js +0 -2
  508. package/dist/bigconsole/hooks/useCrossFilter.d.ts +0 -1
  509. package/dist/bigconsole/hooks/useCrossFilter.js +0 -2
  510. package/dist/bigconsole/hooks/useDashboardEmbedPolicy.d.ts +0 -1
  511. package/dist/bigconsole/hooks/useDashboardEmbedPolicy.js +0 -2
  512. package/dist/bigconsole/hooks/useDashboardImageExport.d.ts +0 -1
  513. package/dist/bigconsole/hooks/useDashboardImageExport.js +0 -2
  514. package/dist/bigconsole/hooks/useDashboardOperations.d.ts +0 -1
  515. package/dist/bigconsole/hooks/useDashboardOperations.js +0 -2
  516. package/dist/bigconsole/hooks/useDashboardSharing.d.ts +0 -1
  517. package/dist/bigconsole/hooks/useDashboardSharing.js +0 -2
  518. package/dist/bigconsole/hooks/useDashboardTemplates.d.ts +0 -1
  519. package/dist/bigconsole/hooks/useDashboardViews.d.ts +0 -1
  520. package/dist/bigconsole/hooks/useDashboardViews.js +0 -2
  521. package/dist/bigconsole/hooks/useDataSinkAlerts.d.ts +0 -1
  522. package/dist/bigconsole/hooks/useDataSinkAlerts.js +0 -2
  523. package/dist/bigconsole/hooks/useDataSinkOperations.d.ts +7 -1
  524. package/dist/bigconsole/hooks/useDataSinkOperations.js +109 -100
  525. package/dist/bigconsole/hooks/useDataSinkSubscription.d.ts +0 -1
  526. package/dist/bigconsole/hooks/useDataSinkSubscription.js +0 -3
  527. package/dist/bigconsole/hooks/useDrilldown.d.ts +0 -1
  528. package/dist/bigconsole/hooks/useDrilldown.js +69 -70
  529. package/dist/bigconsole/hooks/useDrilldownOperations.d.ts +0 -1
  530. package/dist/bigconsole/hooks/useDrilldownOperations.js +0 -2
  531. package/dist/bigconsole/hooks/useEventLogs.d.ts +0 -1
  532. package/dist/bigconsole/hooks/useEventLogs.js +0 -2
  533. package/dist/bigconsole/hooks/useEventWebhooks.d.ts +0 -1
  534. package/dist/bigconsole/hooks/useEventWebhooks.js +0 -2
  535. package/dist/bigconsole/hooks/useExportDashboard.d.ts +0 -1
  536. package/dist/bigconsole/hooks/useExportDashboard.js +0 -2
  537. package/dist/bigconsole/hooks/useExportDataSink.d.ts +0 -1
  538. package/dist/bigconsole/hooks/useExportDataSink.js +1 -3
  539. package/dist/bigconsole/hooks/useExportParser.d.ts +0 -1
  540. package/dist/bigconsole/hooks/useExportParser.js +0 -2
  541. package/dist/bigconsole/hooks/useFilterPresets.d.ts +0 -1
  542. package/dist/bigconsole/hooks/useFilterPresets.js +0 -2
  543. package/dist/bigconsole/hooks/useFilterUrlSync.d.ts +0 -1
  544. package/dist/bigconsole/hooks/useFilterUrlSync.js +0 -2
  545. package/dist/bigconsole/hooks/useGlobalFilters.d.ts +0 -1
  546. package/dist/bigconsole/hooks/useGlobalFilters.js +0 -2
  547. package/dist/bigconsole/hooks/useImportDashboard.d.ts +0 -1
  548. package/dist/bigconsole/hooks/useImportDashboard.js +0 -2
  549. package/dist/bigconsole/hooks/useImportDataSink.d.ts +0 -1
  550. package/dist/bigconsole/hooks/useImportDataSink.js +102 -92
  551. package/dist/bigconsole/hooks/useImportParser.d.ts +0 -1
  552. package/dist/bigconsole/hooks/useImportParser.js +0 -2
  553. package/dist/bigconsole/hooks/useInstalledWidgets.d.ts +0 -1
  554. package/dist/bigconsole/hooks/useInstalledWidgets.js +0 -2
  555. package/dist/bigconsole/hooks/useModalFocusTrap.d.ts +0 -1
  556. package/dist/bigconsole/hooks/useModalFocusTrap.js +0 -2
  557. package/dist/bigconsole/hooks/usePageOperations.d.ts +0 -1
  558. package/dist/bigconsole/hooks/usePageOperations.js +0 -2
  559. package/dist/bigconsole/hooks/useParserOperations.d.ts +0 -1
  560. package/dist/bigconsole/hooks/useParserOperations.js +0 -2
  561. package/dist/bigconsole/hooks/usePipelineOperations.d.ts +0 -1
  562. package/dist/bigconsole/hooks/usePipelineOperations.js +0 -2
  563. package/dist/bigconsole/hooks/useShareRecipients.d.ts +0 -1
  564. package/dist/bigconsole/hooks/useShareRecipients.js +0 -2
  565. package/dist/bigconsole/hooks/useStoreDashboardTemplates.d.ts +0 -1
  566. package/dist/bigconsole/hooks/useStoreDashboardTemplates.js +0 -2
  567. package/dist/bigconsole/hooks/useWidgetActions.d.ts +0 -1
  568. package/dist/bigconsole/hooks/useWidgetActions.js +0 -2
  569. package/dist/bigconsole/hooks/useWidgetCatalog.d.ts +0 -1
  570. package/dist/bigconsole/hooks/useWidgetCatalog.js +0 -2
  571. package/dist/bigconsole/hooks/useWidgetComments.d.ts +0 -1
  572. package/dist/bigconsole/hooks/useWidgetComments.js +0 -2
  573. package/dist/bigconsole/hooks/useWidgetConfigPersist.d.ts +0 -1
  574. package/dist/bigconsole/hooks/useWidgetConfigPersist.js +0 -2
  575. package/dist/bigconsole/hooks/useWidgetData.d.ts +0 -1
  576. package/dist/bigconsole/hooks/useWidgetData.js +0 -2
  577. package/dist/bigconsole/hooks/useWidgetEvents.d.ts +0 -1
  578. package/dist/bigconsole/hooks/useWidgetEvents.js +0 -2
  579. package/dist/bigconsole/hooks/useWidgetExport.d.ts +0 -1
  580. package/dist/bigconsole/hooks/useWidgetExport.js +0 -2
  581. package/dist/bigconsole/hooks/useWidgetOperations.d.ts +0 -1
  582. package/dist/bigconsole/hooks/useWidgetOperations.js +0 -2
  583. package/dist/bigconsole/hooks/useWorkflowOperations.d.ts +0 -1
  584. package/dist/bigconsole/hooks/useWorkflowOperations.js +0 -2
  585. package/dist/bigconsole/index.d.ts +0 -1
  586. package/dist/bigconsole/modules/dashboard/index.d.ts +0 -1
  587. package/dist/bigconsole/modules/index.d.ts +0 -1
  588. package/dist/bigconsole/modules/renderer/index.d.ts +0 -1
  589. package/dist/bigconsole/modules/widget/index.d.ts +0 -1
  590. package/dist/bigconsole/pages/AdminPage.d.ts +0 -1
  591. package/dist/bigconsole/pages/AdminPage.js +0 -2
  592. package/dist/bigconsole/pages/DashboardBuilderPage.d.ts +0 -1
  593. package/dist/bigconsole/pages/DashboardBuilderPage.js +0 -2
  594. package/dist/bigconsole/pages/DashboardViewPage.d.ts +0 -1
  595. package/dist/bigconsole/pages/DashboardViewPage.js +205 -207
  596. package/dist/bigconsole/pages/DashboardsPage.d.ts +0 -1
  597. package/dist/bigconsole/pages/DashboardsPage.js +0 -2
  598. package/dist/bigconsole/pages/DataParsersPage.d.ts +0 -1
  599. package/dist/bigconsole/pages/DataParsersPage.js +0 -2
  600. package/dist/bigconsole/pages/DataSinkAlertsPage.d.ts +0 -1
  601. package/dist/bigconsole/pages/DataSinkAlertsPage.js +0 -2
  602. package/dist/bigconsole/pages/DataSinkBuilderPage.d.ts +0 -1
  603. package/dist/bigconsole/pages/DataSinkBuilderPage.js +312 -282
  604. package/dist/bigconsole/pages/DataSinkViewPage.d.ts +0 -1
  605. package/dist/bigconsole/pages/DataSinkViewPage.js +256 -257
  606. package/dist/bigconsole/pages/DataSinksPage.d.ts +0 -1
  607. package/dist/bigconsole/pages/DataSinksPage.js +196 -197
  608. package/dist/bigconsole/pages/DataSourcesPage.d.ts +0 -1
  609. package/dist/bigconsole/pages/DataSourcesPage.js +0 -2
  610. package/dist/bigconsole/pages/InsightsPage.d.ts +0 -1
  611. package/dist/bigconsole/pages/InsightsPage.js +0 -2
  612. package/dist/bigconsole/pages/OverviewPage.d.ts +0 -1
  613. package/dist/bigconsole/pages/OverviewPage.js +0 -2
  614. package/dist/bigconsole/pages/ParserBuilderPage.d.ts +0 -1
  615. package/dist/bigconsole/pages/ParserBuilderPage.js +0 -2
  616. package/dist/bigconsole/pages/ParserViewPage.d.ts +0 -1
  617. package/dist/bigconsole/pages/ParserViewPage.js +0 -2
  618. package/dist/bigconsole/pages/PipelineBuilderPage.d.ts +0 -1
  619. package/dist/bigconsole/pages/PipelineBuilderPage.js +0 -2
  620. package/dist/bigconsole/pages/PipelineViewPage.d.ts +0 -1
  621. package/dist/bigconsole/pages/PipelineViewPage.js +0 -2
  622. package/dist/bigconsole/pages/PipelinesPage.d.ts +0 -1
  623. package/dist/bigconsole/pages/PipelinesPage.js +0 -2
  624. package/dist/bigconsole/pages/SettingsPage.d.ts +0 -1
  625. package/dist/bigconsole/pages/SettingsPage.js +0 -2
  626. package/dist/bigconsole/pages/WidgetDemoPage.d.ts +0 -1
  627. package/dist/bigconsole/pages/WidgetDemoPage.js +0 -2
  628. package/dist/bigconsole/pages/WorkflowViewPage.d.ts +0 -1
  629. package/dist/bigconsole/pages/WorkflowViewPage.js +0 -2
  630. package/dist/bigconsole/pages/WorkflowsPage.d.ts +0 -1
  631. package/dist/bigconsole/pages/WorkflowsPage.js +0 -2
  632. package/dist/bigconsole/pages/index.d.ts +0 -1
  633. package/dist/bigconsole/providers/BigConsoleQuotaProvider.d.ts +0 -1
  634. package/dist/bigconsole/providers/BigConsoleQuotaProvider.js +0 -2
  635. package/dist/bigconsole/renderers/adapters/AdaptiveCardRenderer.d.ts +0 -1
  636. package/dist/bigconsole/renderers/adapters/AdaptiveCardRenderer.js +235 -124
  637. package/dist/bigconsole/renderers/adapters/BigConsoleRenderer.d.ts +0 -1
  638. package/dist/bigconsole/renderers/adapters/BigConsoleRenderer.js +0 -2
  639. package/dist/bigconsole/renderers/adapters/BlockKitRenderer.d.ts +6 -2
  640. package/dist/bigconsole/renderers/adapters/BlockKitRenderer.js +155 -157
  641. package/dist/bigconsole/renderers/adapters/CustomRenderer.d.ts +0 -1
  642. package/dist/bigconsole/renderers/adapters/CustomRenderer.js +0 -2
  643. package/dist/bigconsole/renderers/adapters/adaptiveCardContent.d.ts +29 -0
  644. package/dist/bigconsole/renderers/adapters/adaptiveCardContent.js +51 -0
  645. package/dist/bigconsole/renderers/adapters/index.d.ts +0 -1
  646. package/dist/bigconsole/renderers/factory/WidgetRendererFactory.d.ts +0 -1
  647. package/dist/bigconsole/renderers/factory/WidgetRendererFactory.js +0 -2
  648. package/dist/bigconsole/renderers/index.d.ts +0 -1
  649. package/dist/bigconsole/renderers/registry/RendererRegistry.d.ts +0 -1
  650. package/dist/bigconsole/renderers/registry/RendererRegistry.js +0 -2
  651. package/dist/bigconsole/renderers/types/index.d.ts +0 -1
  652. package/dist/bigconsole/renderers/types/renderer.d.ts +0 -1
  653. package/dist/bigconsole/store/dashboardStore.d.ts +0 -1
  654. package/dist/bigconsole/store/dashboardStore.js +0 -2
  655. package/dist/bigconsole/store/dataSinkStore.d.ts +0 -1
  656. package/dist/bigconsole/store/dataSinkStore.js +0 -2
  657. package/dist/bigconsole/store/drilldownStore.d.ts +0 -1
  658. package/dist/bigconsole/store/drilldownStore.js +0 -2
  659. package/dist/bigconsole/store/index.d.ts +0 -1
  660. package/dist/bigconsole/store/parserStore.d.ts +0 -1
  661. package/dist/bigconsole/store/parserStore.js +0 -2
  662. package/dist/bigconsole/store/pipelineStore.d.ts +0 -1
  663. package/dist/bigconsole/store/pipelineStore.js +0 -2
  664. package/dist/bigconsole/store/widgetStore.d.ts +0 -1
  665. package/dist/bigconsole/store/widgetStore.js +0 -2
  666. package/dist/bigconsole/store/workflowStore.d.ts +0 -1
  667. package/dist/bigconsole/store/workflowStore.js +0 -2
  668. package/dist/bigconsole/types/index.d.ts +17 -3
  669. package/dist/bigconsole/utils/alertRules.d.ts +0 -1
  670. package/dist/bigconsole/utils/alertRules.js +0 -2
  671. package/dist/bigconsole/utils/backendError.d.ts +0 -1
  672. package/dist/bigconsole/utils/createDialogParam.d.ts +0 -1
  673. package/dist/bigconsole/utils/createDialogParam.js +0 -2
  674. package/dist/bigconsole/utils/csv.d.ts +0 -1
  675. package/dist/bigconsole/utils/csv.js +0 -2
  676. package/dist/bigconsole/utils/dashboardTemplateContent.d.ts +0 -1
  677. package/dist/bigconsole/utils/dashboardTemplateContent.js +0 -2
  678. package/dist/bigconsole/utils/dataSinkPayload.d.ts +48 -0
  679. package/dist/bigconsole/utils/dataSinkPayload.js +38 -0
  680. package/dist/bigconsole/utils/drilldownParams.d.ts +0 -1
  681. package/dist/bigconsole/utils/drilldownParams.js +0 -2
  682. package/dist/bigconsole/utils/format.d.ts +0 -1
  683. package/dist/bigconsole/utils/format.js +0 -2
  684. package/dist/bigconsole/utils/index.d.ts +2 -1
  685. package/dist/bigconsole/utils/quota.d.ts +0 -1
  686. package/dist/bigconsole/utils/quota.js +0 -2
  687. package/dist/bigconsole/utils/safeUrl.d.ts +79 -0
  688. package/dist/bigconsole/utils/safeUrl.js +93 -0
  689. package/dist/bigconsole/utils/sanitizeHtml.d.ts +16 -0
  690. package/dist/bigconsole/utils/sanitizeHtml.js +67 -0
  691. package/dist/bigconsole/utils/semanticTokens.d.ts +0 -1
  692. package/dist/bigconsole/utils/semanticTokens.js +0 -2
  693. package/dist/bigconsole/utils/templateInstallInputs.d.ts +0 -1
  694. package/dist/bigconsole/utils/templateInstallInputs.js +0 -2
  695. package/dist/bigconsole/utils/widgetBinding.d.ts +0 -1
  696. package/dist/bigconsole/utils/widgetBinding.js +0 -2
  697. package/dist/bigconsole/utils/widgetPositioning.d.ts +0 -1
  698. package/dist/bigconsole/utils/widgetPositioning.js +0 -2
  699. package/dist/bigconsole/utils/widgetTypeMapping.d.ts +0 -1
  700. package/dist/bigconsole/utils/widgetTypeMapping.js +0 -2
  701. package/dist/bigconsole/workflowOpen.d.ts +0 -1
  702. package/dist/bigconsole/workflowOpen.js +0 -2
  703. package/dist/constants/permissions.d.ts +0 -1
  704. package/dist/constants/permissions.js +0 -2
  705. package/dist/generated/global-operations.d.ts +0 -1
  706. package/dist/generated/global-operations.js +0 -2
  707. package/dist/generated/global-types.d.ts +0 -1
  708. package/dist/generated/wspace-operations.d.ts +138 -9
  709. package/dist/generated/wspace-operations.js +281 -242
  710. package/dist/generated/wspace-types.d.ts +0 -1
  711. package/dist/generated/wspace-types.js +0 -2
  712. package/dist/index.d.ts +0 -1
  713. package/dist/node_modules/@e965/xlsx/xlsx.js +0 -2
  714. package/dist/node_modules/dompurify/dist/purify.es.js +800 -0
  715. package/dist/node_modules/pdfjs-dist/build/pdf.js +0 -2
  716. package/dist/shared/hooks/useTr.d.ts +0 -1
  717. package/dist/shared/hooks/useTr.js +0 -2
  718. package/dist/translations/en.d.ts +0 -1
  719. package/dist/utils/nativeBridge.d.ts +0 -1
  720. package/package.json +9 -4
  721. package/dist/bigconsole/AdminRoot.d.ts.map +0 -1
  722. package/dist/bigconsole/AdminRoot.js.map +0 -1
  723. package/dist/bigconsole/AdminRoutes.d.ts.map +0 -1
  724. package/dist/bigconsole/AdminRoutes.js.map +0 -1
  725. package/dist/bigconsole/BigConsoleRoot.d.ts.map +0 -1
  726. package/dist/bigconsole/BigConsoleRoot.js.map +0 -1
  727. package/dist/bigconsole/BigConsoleRoutes.d.ts.map +0 -1
  728. package/dist/bigconsole/BigConsoleRoutes.js.map +0 -1
  729. package/dist/bigconsole/assistant/assistantApi.d.ts.map +0 -1
  730. package/dist/bigconsole/assistant/assistantApi.js.map +0 -1
  731. package/dist/bigconsole/assistant/assistantProduct.d.ts.map +0 -1
  732. package/dist/bigconsole/assistant/assistantProduct.js.map +0 -1
  733. package/dist/bigconsole/assistant/assistantPrompt.d.ts.map +0 -1
  734. package/dist/bigconsole/assistant/assistantPrompt.js.map +0 -1
  735. package/dist/bigconsole/assistant/assistantRunPersistence.d.ts.map +0 -1
  736. package/dist/bigconsole/assistant/assistantRunPersistence.js.map +0 -1
  737. package/dist/bigconsole/assistant/assistantRunStore.d.ts.map +0 -1
  738. package/dist/bigconsole/assistant/assistantRunStore.js.map +0 -1
  739. package/dist/bigconsole/assistant/assistantRuntime.d.ts.map +0 -1
  740. package/dist/bigconsole/assistant/assistantRuntime.js.map +0 -1
  741. package/dist/bigconsole/assistant/attachmentExtract.d.ts.map +0 -1
  742. package/dist/bigconsole/assistant/attachmentExtract.js.map +0 -1
  743. package/dist/bigconsole/assistant/conversationHistoryApi.d.ts.map +0 -1
  744. package/dist/bigconsole/assistant/conversationHistoryApi.js.map +0 -1
  745. package/dist/bigconsole/assistant/createSandboxAssistantTransport.d.ts.map +0 -1
  746. package/dist/bigconsole/assistant/createSandboxAssistantTransport.js.map +0 -1
  747. package/dist/bigconsole/assistant/index.d.ts.map +0 -1
  748. package/dist/bigconsole/assistant/modes.d.ts.map +0 -1
  749. package/dist/bigconsole/assistant/modes.js.map +0 -1
  750. package/dist/bigconsole/assistant/pageContext.d.ts.map +0 -1
  751. package/dist/bigconsole/assistant/pageContext.js.map +0 -1
  752. package/dist/bigconsole/assistant/previewController.d.ts.map +0 -1
  753. package/dist/bigconsole/assistant/previewController.js.map +0 -1
  754. package/dist/bigconsole/assistant/previewMutationResult.d.ts.map +0 -1
  755. package/dist/bigconsole/assistant/previewMutationResult.js.map +0 -1
  756. package/dist/bigconsole/assistant/previewRunAction.d.ts.map +0 -1
  757. package/dist/bigconsole/assistant/previewRunAction.js.map +0 -1
  758. package/dist/bigconsole/assistant/product.d.ts.map +0 -1
  759. package/dist/bigconsole/assistant/product.js.map +0 -1
  760. package/dist/bigconsole/assistant/recordAdapters.d.ts.map +0 -1
  761. package/dist/bigconsole/assistant/recordAdapters.js.map +0 -1
  762. package/dist/bigconsole/assistant/types.d.ts.map +0 -1
  763. package/dist/bigconsole/assistant/useAssistantRunWorkspace.d.ts.map +0 -1
  764. package/dist/bigconsole/assistant/useAssistantRunWorkspace.js.map +0 -1
  765. package/dist/bigconsole/assistant/useWorkspaceWriteAccess.d.ts.map +0 -1
  766. package/dist/bigconsole/assistant/useWorkspaceWriteAccess.js.map +0 -1
  767. package/dist/bigconsole/components/DrilldownDashboardRenderer.d.ts.map +0 -1
  768. package/dist/bigconsole/components/DrilldownDashboardRenderer.js.map +0 -1
  769. package/dist/bigconsole/components/DrilldownModal.d.ts.map +0 -1
  770. package/dist/bigconsole/components/DrilldownModal.js.map +0 -1
  771. package/dist/bigconsole/components/builder/BuilderCanvas.d.ts.map +0 -1
  772. package/dist/bigconsole/components/builder/BuilderCanvas.js.map +0 -1
  773. package/dist/bigconsole/components/builder/BuilderTopbar.d.ts.map +0 -1
  774. package/dist/bigconsole/components/builder/BuilderTopbar.js.map +0 -1
  775. package/dist/bigconsole/components/builder/DashboardEditorShell.d.ts.map +0 -1
  776. package/dist/bigconsole/components/builder/DashboardEditorShell.js.map +0 -1
  777. package/dist/bigconsole/components/builder/WidgetInspector.d.ts.map +0 -1
  778. package/dist/bigconsole/components/builder/WidgetInspector.js.map +0 -1
  779. package/dist/bigconsole/components/builder/index.d.ts.map +0 -1
  780. package/dist/bigconsole/components/builder/inspector/AdvancedSection.d.ts.map +0 -1
  781. package/dist/bigconsole/components/builder/inspector/AdvancedSection.js.map +0 -1
  782. package/dist/bigconsole/components/builder/inspector/AppearanceSection.d.ts.map +0 -1
  783. package/dist/bigconsole/components/builder/inspector/AppearanceSection.js.map +0 -1
  784. package/dist/bigconsole/components/builder/inspector/DataBindingSection.d.ts.map +0 -1
  785. package/dist/bigconsole/components/builder/inspector/DataBindingSection.js.map +0 -1
  786. package/dist/bigconsole/components/builder/inspector/GeneralSection.d.ts.map +0 -1
  787. package/dist/bigconsole/components/builder/inspector/GeneralSection.js.map +0 -1
  788. package/dist/bigconsole/components/builder/inspector/LayoutSection.d.ts.map +0 -1
  789. package/dist/bigconsole/components/builder/inspector/LayoutSection.js.map +0 -1
  790. package/dist/bigconsole/components/builder/inspector/index.d.ts.map +0 -1
  791. package/dist/bigconsole/components/common/Section.d.ts.map +0 -1
  792. package/dist/bigconsole/components/common/Section.js.map +0 -1
  793. package/dist/bigconsole/components/common/index.d.ts.map +0 -1
  794. package/dist/bigconsole/components/common/sectionStyles.d.ts.map +0 -1
  795. package/dist/bigconsole/components/common/sectionStyles.js.map +0 -1
  796. package/dist/bigconsole/components/dashboard/CreateDashboardDialog.d.ts.map +0 -1
  797. package/dist/bigconsole/components/dashboard/CreateDashboardDialog.js.map +0 -1
  798. package/dist/bigconsole/components/dashboard/DashboardCanvas.d.ts.map +0 -1
  799. package/dist/bigconsole/components/dashboard/DashboardCanvas.js.map +0 -1
  800. package/dist/bigconsole/components/dashboard/DashboardGrid.d.ts.map +0 -1
  801. package/dist/bigconsole/components/dashboard/DashboardGrid.js.map +0 -1
  802. package/dist/bigconsole/components/dashboard/DashboardStatusPill.d.ts.map +0 -1
  803. package/dist/bigconsole/components/dashboard/DashboardStatusPill.js.map +0 -1
  804. package/dist/bigconsole/components/dashboard/DashboardToolbar.d.ts.map +0 -1
  805. package/dist/bigconsole/components/dashboard/DashboardToolbar.js.map +0 -1
  806. package/dist/bigconsole/components/dashboard/DrilldownBreadcrumb.d.ts.map +0 -1
  807. package/dist/bigconsole/components/dashboard/DrilldownBreadcrumb.js.map +0 -1
  808. package/dist/bigconsole/components/dashboard/ExportDashboardDialog.d.ts.map +0 -1
  809. package/dist/bigconsole/components/dashboard/ExportDashboardDialog.js.map +0 -1
  810. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterChip.d.ts.map +0 -1
  811. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterChip.js.map +0 -1
  812. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.d.ts.map +0 -1
  813. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.js.map +0 -1
  814. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterPresetSelector.d.ts.map +0 -1
  815. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterPresetSelector.js.map +0 -1
  816. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/GlobalFiltersBar.d.ts.map +0 -1
  817. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/GlobalFiltersBar.js.map +0 -1
  818. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/index.d.ts.map +0 -1
  819. package/dist/bigconsole/components/dashboard/ImportDashboardDialog.d.ts.map +0 -1
  820. package/dist/bigconsole/components/dashboard/ImportDashboardDialog.js.map +0 -1
  821. package/dist/bigconsole/components/dashboard/LiveBoardBanner.d.ts.map +0 -1
  822. package/dist/bigconsole/components/dashboard/LiveBoardBanner.js.map +0 -1
  823. package/dist/bigconsole/components/dashboard/LiveCanvasToggle.d.ts.map +0 -1
  824. package/dist/bigconsole/components/dashboard/LiveCanvasToggle.js.map +0 -1
  825. package/dist/bigconsole/components/dashboard/PageTabsManager/PageTabsManager.d.ts.map +0 -1
  826. package/dist/bigconsole/components/dashboard/PageTabsManager/PageTabsManager.js.map +0 -1
  827. package/dist/bigconsole/components/dashboard/PageTabsManager/index.d.ts.map +0 -1
  828. package/dist/bigconsole/components/dashboard/PublishToStoreDialog.d.ts.map +0 -1
  829. package/dist/bigconsole/components/dashboard/PublishToStoreDialog.js.map +0 -1
  830. package/dist/bigconsole/components/dashboard/SavedViewsDropdown/SavedViewsDropdown.d.ts.map +0 -1
  831. package/dist/bigconsole/components/dashboard/SavedViewsDropdown/SavedViewsDropdown.js.map +0 -1
  832. package/dist/bigconsole/components/dashboard/SavedViewsDropdown/index.d.ts.map +0 -1
  833. package/dist/bigconsole/components/dashboard/ShareDialog/EmbedTab.d.ts.map +0 -1
  834. package/dist/bigconsole/components/dashboard/ShareDialog/EmbedTab.js.map +0 -1
  835. package/dist/bigconsole/components/dashboard/ShareDialog/ShareDialog.d.ts.map +0 -1
  836. package/dist/bigconsole/components/dashboard/ShareDialog/ShareDialog.js.map +0 -1
  837. package/dist/bigconsole/components/dashboard/ShareDialog/index.d.ts.map +0 -1
  838. package/dist/bigconsole/components/dashboard/StoreTemplatePicker.d.ts.map +0 -1
  839. package/dist/bigconsole/components/dashboard/StoreTemplatePicker.js.map +0 -1
  840. package/dist/bigconsole/components/dashboard/TemplateInstallOptions.d.ts.map +0 -1
  841. package/dist/bigconsole/components/dashboard/TemplateInstallOptions.js.map +0 -1
  842. package/dist/bigconsole/components/dashboard/TemplateLayoutPreview.d.ts.map +0 -1
  843. package/dist/bigconsole/components/dashboard/TemplateLayoutPreview.js.map +0 -1
  844. package/dist/bigconsole/components/dashboard/TemplatePicker/TemplatePicker.d.ts.map +0 -1
  845. package/dist/bigconsole/components/dashboard/TemplatePicker/index.d.ts.map +0 -1
  846. package/dist/bigconsole/components/dashboard/TemplateSetupBanner.d.ts.map +0 -1
  847. package/dist/bigconsole/components/dashboard/TemplateSetupBanner.js.map +0 -1
  848. package/dist/bigconsole/components/dashboard/WidgetPalette.d.ts.map +0 -1
  849. package/dist/bigconsole/components/dashboard/WidgetPalette.js.map +0 -1
  850. package/dist/bigconsole/components/dashboard/index.d.ts.map +0 -1
  851. package/dist/bigconsole/components/datasink/AlertExecutionHistory.d.ts.map +0 -1
  852. package/dist/bigconsole/components/datasink/AlertExecutionHistory.js.map +0 -1
  853. package/dist/bigconsole/components/datasink/AlertRuleEditor.d.ts.map +0 -1
  854. package/dist/bigconsole/components/datasink/AlertRuleEditor.js.map +0 -1
  855. package/dist/bigconsole/components/datasink/CacheTTLSelector.d.ts.map +0 -1
  856. package/dist/bigconsole/components/datasink/CacheTTLSelector.js.map +0 -1
  857. package/dist/bigconsole/components/datasink/ConfigurationForm.d.ts.map +0 -1
  858. package/dist/bigconsole/components/datasink/DataPreviewPanel.d.ts.map +0 -1
  859. package/dist/bigconsole/components/datasink/DataSinkCard.d.ts.map +0 -1
  860. package/dist/bigconsole/components/datasink/DataSinkCard.js.map +0 -1
  861. package/dist/bigconsole/components/datasink/DataSinkDataViewer.d.ts.map +0 -1
  862. package/dist/bigconsole/components/datasink/DataSinkDataViewer.js.map +0 -1
  863. package/dist/bigconsole/components/datasink/DataSinkDeleteDialog.d.ts.map +0 -1
  864. package/dist/bigconsole/components/datasink/DataSinkDeleteDialog.js.map +0 -1
  865. package/dist/bigconsole/components/datasink/DataSinkRefreshConfig.d.ts.map +0 -1
  866. package/dist/bigconsole/components/datasink/DataSinkRefreshDialog.d.ts.map +0 -1
  867. package/dist/bigconsole/components/datasink/DataSinkRefreshDialog.js.map +0 -1
  868. package/dist/bigconsole/components/datasink/DataSinkStatusBadge.d.ts.map +0 -1
  869. package/dist/bigconsole/components/datasink/DataSinkStatusBadge.js.map +0 -1
  870. package/dist/bigconsole/components/datasink/DataSinkTableViewer.d.ts.map +0 -1
  871. package/dist/bigconsole/components/datasink/DataSinkTableViewer.js.map +0 -1
  872. package/dist/bigconsole/components/datasink/ExportDataSinkDialog.d.ts.map +0 -1
  873. package/dist/bigconsole/components/datasink/ExportDataSinkDialog.js.map +0 -1
  874. package/dist/bigconsole/components/datasink/FluidGridsPanel.d.ts.map +0 -1
  875. package/dist/bigconsole/components/datasink/ImportDataGuideDialog.d.ts.map +0 -1
  876. package/dist/bigconsole/components/datasink/ImportDataGuideDialog.js.map +0 -1
  877. package/dist/bigconsole/components/datasink/ImportDataSinkDialog.d.ts.map +0 -1
  878. package/dist/bigconsole/components/datasink/ImportDataSinkDialog.js.map +0 -1
  879. package/dist/bigconsole/components/datasink/LinkedParsersPanel.d.ts.map +0 -1
  880. package/dist/bigconsole/components/datasink/LinkedParsersPanel.js.map +0 -1
  881. package/dist/bigconsole/components/datasink/LinkedWorkflowsPanel.d.ts.map +0 -1
  882. package/dist/bigconsole/components/datasink/LinkedWorkflowsPanel.js.map +0 -1
  883. package/dist/bigconsole/components/datasink/RefreshTypeSelector.d.ts.map +0 -1
  884. package/dist/bigconsole/components/datasink/RefreshTypeSelector.js.map +0 -1
  885. package/dist/bigconsole/components/datasink/SetupStateBadge.d.ts.map +0 -1
  886. package/dist/bigconsole/components/datasink/SetupStateBadge.js.map +0 -1
  887. package/dist/bigconsole/components/datasink/WorkflowStatusPanel.d.ts.map +0 -1
  888. package/dist/bigconsole/components/datasink/WorkflowStatusPanel.js.map +0 -1
  889. package/dist/bigconsole/components/datasink/index.d.ts.map +0 -1
  890. package/dist/bigconsole/components/embed/EmbedErrorBoundary.d.ts.map +0 -1
  891. package/dist/bigconsole/components/embed/EmbedErrorBoundary.js.map +0 -1
  892. package/dist/bigconsole/components/embed/EmbedWidgetRenderer.d.ts.map +0 -1
  893. package/dist/bigconsole/components/embed/EmbedWidgetRenderer.js.map +0 -1
  894. package/dist/bigconsole/components/embed/ReadOnlyDashboardRenderer.d.ts.map +0 -1
  895. package/dist/bigconsole/components/embed/ReadOnlyDashboardRenderer.js.map +0 -1
  896. package/dist/bigconsole/components/embed/drilldown.d.ts.map +0 -1
  897. package/dist/bigconsole/components/embed/drilldown.js.map +0 -1
  898. package/dist/bigconsole/components/embed/index.d.ts.map +0 -1
  899. package/dist/bigconsole/components/embed/renderer-manifest.d.ts.map +0 -1
  900. package/dist/bigconsole/components/embed/renderer-manifest.js.map +0 -1
  901. package/dist/bigconsole/components/embed/types.d.ts.map +0 -1
  902. package/dist/bigconsole/components/embed/types.js.map +0 -1
  903. package/dist/bigconsole/components/embed/validate.d.ts.map +0 -1
  904. package/dist/bigconsole/components/embed/validate.js.map +0 -1
  905. package/dist/bigconsole/components/embed/widgetShim.d.ts.map +0 -1
  906. package/dist/bigconsole/components/embed/widgetShim.js.map +0 -1
  907. package/dist/bigconsole/components/embed/widgets/CalendarEmbed.d.ts.map +0 -1
  908. package/dist/bigconsole/components/embed/widgets/CalendarEmbed.js.map +0 -1
  909. package/dist/bigconsole/components/embed/widgets/ChartEmbed.d.ts.map +0 -1
  910. package/dist/bigconsole/components/embed/widgets/ChartEmbed.js.map +0 -1
  911. package/dist/bigconsole/components/embed/widgets/EmbedFrame.d.ts.map +0 -1
  912. package/dist/bigconsole/components/embed/widgets/EmbedFrame.js.map +0 -1
  913. package/dist/bigconsole/components/embed/widgets/FormEmbed.d.ts.map +0 -1
  914. package/dist/bigconsole/components/embed/widgets/FormEmbed.js.map +0 -1
  915. package/dist/bigconsole/components/embed/widgets/GaugeEmbed.d.ts.map +0 -1
  916. package/dist/bigconsole/components/embed/widgets/GaugeEmbed.js.map +0 -1
  917. package/dist/bigconsole/components/embed/widgets/HeatmapEmbed.d.ts.map +0 -1
  918. package/dist/bigconsole/components/embed/widgets/HeatmapEmbed.js.map +0 -1
  919. package/dist/bigconsole/components/embed/widgets/KanbanEmbed.d.ts.map +0 -1
  920. package/dist/bigconsole/components/embed/widgets/KanbanEmbed.js.map +0 -1
  921. package/dist/bigconsole/components/embed/widgets/KpiComparisonEmbed.d.ts.map +0 -1
  922. package/dist/bigconsole/components/embed/widgets/KpiComparisonEmbed.js.map +0 -1
  923. package/dist/bigconsole/components/embed/widgets/ListEmbed.d.ts.map +0 -1
  924. package/dist/bigconsole/components/embed/widgets/ListEmbed.js.map +0 -1
  925. package/dist/bigconsole/components/embed/widgets/MetricCardEmbed.d.ts.map +0 -1
  926. package/dist/bigconsole/components/embed/widgets/MetricCardEmbed.js.map +0 -1
  927. package/dist/bigconsole/components/embed/widgets/PivotEmbed.d.ts.map +0 -1
  928. package/dist/bigconsole/components/embed/widgets/PivotEmbed.js.map +0 -1
  929. package/dist/bigconsole/components/embed/widgets/ProgressEmbed.d.ts.map +0 -1
  930. package/dist/bigconsole/components/embed/widgets/ProgressEmbed.js.map +0 -1
  931. package/dist/bigconsole/components/embed/widgets/RetentionEmbed.d.ts.map +0 -1
  932. package/dist/bigconsole/components/embed/widgets/RetentionEmbed.js.map +0 -1
  933. package/dist/bigconsole/components/embed/widgets/TableEmbed.d.ts.map +0 -1
  934. package/dist/bigconsole/components/embed/widgets/TableEmbed.js.map +0 -1
  935. package/dist/bigconsole/components/embed/widgets/TextEmbed.d.ts.map +0 -1
  936. package/dist/bigconsole/components/embed/widgets/TextEmbed.js.map +0 -1
  937. package/dist/bigconsole/components/embed/widgets/TimelineEmbed.d.ts.map +0 -1
  938. package/dist/bigconsole/components/embed/widgets/TimelineEmbed.js.map +0 -1
  939. package/dist/bigconsole/components/embed/widgets/shared.d.ts.map +0 -1
  940. package/dist/bigconsole/components/embed/widgets/shared.js.map +0 -1
  941. package/dist/bigconsole/components/overview/DashboardGuide.d.ts.map +0 -1
  942. package/dist/bigconsole/components/overview/DashboardGuide.js.map +0 -1
  943. package/dist/bigconsole/components/overview/DataHealthCard.d.ts.map +0 -1
  944. package/dist/bigconsole/components/overview/DataHealthCard.js.map +0 -1
  945. package/dist/bigconsole/components/overview/OverviewQuickActions.d.ts.map +0 -1
  946. package/dist/bigconsole/components/overview/OverviewQuickActions.js.map +0 -1
  947. package/dist/bigconsole/components/overview/OverviewStatCard.d.ts.map +0 -1
  948. package/dist/bigconsole/components/overview/OverviewStatCard.js.map +0 -1
  949. package/dist/bigconsole/components/overview/RecentDashboardsPanel.d.ts.map +0 -1
  950. package/dist/bigconsole/components/overview/RecentDashboardsPanel.js.map +0 -1
  951. package/dist/bigconsole/components/overview/dashboardGuideSteps.d.ts.map +0 -1
  952. package/dist/bigconsole/components/overview/dashboardGuideSteps.js.map +0 -1
  953. package/dist/bigconsole/components/overview/index.d.ts.map +0 -1
  954. package/dist/bigconsole/components/overview/overviewModel.d.ts.map +0 -1
  955. package/dist/bigconsole/components/overview/overviewModel.js.map +0 -1
  956. package/dist/bigconsole/components/overview/useOverviewData.d.ts.map +0 -1
  957. package/dist/bigconsole/components/overview/useOverviewData.js.map +0 -1
  958. package/dist/bigconsole/components/parser/DataSinkSelector.d.ts.map +0 -1
  959. package/dist/bigconsole/components/parser/DataSinkSelector.js.map +0 -1
  960. package/dist/bigconsole/components/parser/ExportParserDialog.d.ts.map +0 -1
  961. package/dist/bigconsole/components/parser/ExportParserDialog.js.map +0 -1
  962. package/dist/bigconsole/components/parser/ExpressionEditor.d.ts.map +0 -1
  963. package/dist/bigconsole/components/parser/ExpressionEditor.js.map +0 -1
  964. package/dist/bigconsole/components/parser/ImportParserDialog.d.ts.map +0 -1
  965. package/dist/bigconsole/components/parser/ImportParserDialog.js.map +0 -1
  966. package/dist/bigconsole/components/parser/ParserBuilder.d.ts.map +0 -1
  967. package/dist/bigconsole/components/parser/ParserCard.d.ts.map +0 -1
  968. package/dist/bigconsole/components/parser/ParserCard.js.map +0 -1
  969. package/dist/bigconsole/components/parser/ParserFormDialog.d.ts.map +0 -1
  970. package/dist/bigconsole/components/parser/ParserSelector.d.ts.map +0 -1
  971. package/dist/bigconsole/components/parser/ParserSelector.js.map +0 -1
  972. package/dist/bigconsole/components/parser/ParserStatusBadge.d.ts.map +0 -1
  973. package/dist/bigconsole/components/parser/ParserStatusBadge.js.map +0 -1
  974. package/dist/bigconsole/components/parser/ParserTypeBadge.d.ts.map +0 -1
  975. package/dist/bigconsole/components/parser/ParserTypeBadge.js.map +0 -1
  976. package/dist/bigconsole/components/parser/TestPanel.d.ts.map +0 -1
  977. package/dist/bigconsole/components/parser/index.d.ts.map +0 -1
  978. package/dist/bigconsole/components/parser/parserFieldStyles.d.ts.map +0 -1
  979. package/dist/bigconsole/components/pipeline/PipelineCard.d.ts.map +0 -1
  980. package/dist/bigconsole/components/pipeline/PipelineCard.js.map +0 -1
  981. package/dist/bigconsole/components/pipeline/PipelineDeleteDialog.d.ts.map +0 -1
  982. package/dist/bigconsole/components/pipeline/PipelineDeleteDialog.js.map +0 -1
  983. package/dist/bigconsole/components/pipeline/PipelineScopePicker.d.ts.map +0 -1
  984. package/dist/bigconsole/components/pipeline/PipelineScopePicker.js.map +0 -1
  985. package/dist/bigconsole/components/pipeline/PipelineStatusBadge.d.ts.map +0 -1
  986. package/dist/bigconsole/components/pipeline/PipelineStatusBadge.js.map +0 -1
  987. package/dist/bigconsole/components/pipeline/index.d.ts.map +0 -1
  988. package/dist/bigconsole/components/preview/AiPreviewContent.d.ts.map +0 -1
  989. package/dist/bigconsole/components/preview/AiPreviewContent.js.map +0 -1
  990. package/dist/bigconsole/components/preview/AiPreviewMiniPanel.d.ts.map +0 -1
  991. package/dist/bigconsole/components/preview/AiPreviewMiniPanel.js.map +0 -1
  992. package/dist/bigconsole/components/preview/AiPreviewPanel.d.ts.map +0 -1
  993. package/dist/bigconsole/components/preview/AiPreviewPanel.js.map +0 -1
  994. package/dist/bigconsole/components/preview/parserPreview.d.ts.map +0 -1
  995. package/dist/bigconsole/components/preview/parserPreview.js.map +0 -1
  996. package/dist/bigconsole/components/preview/previewShared.d.ts.map +0 -1
  997. package/dist/bigconsole/components/preview/previewShared.js.map +0 -1
  998. package/dist/bigconsole/components/widgets/ActionConfigDialog.d.ts.map +0 -1
  999. package/dist/bigconsole/components/widgets/ActionConfigDialog.js.map +0 -1
  1000. package/dist/bigconsole/components/widgets/DrilldownConfigPanel.d.ts.map +0 -1
  1001. package/dist/bigconsole/components/widgets/DrilldownConfigPanel.js.map +0 -1
  1002. package/dist/bigconsole/components/widgets/PropertiesPanel.d.ts.map +0 -1
  1003. package/dist/bigconsole/components/widgets/PropertiesPanel.js.map +0 -1
  1004. package/dist/bigconsole/components/widgets/WidgetErrorBoundary.d.ts.map +0 -1
  1005. package/dist/bigconsole/components/widgets/WidgetErrorBoundary.js.map +0 -1
  1006. package/dist/bigconsole/components/widgets/WidgetHeader.d.ts.map +0 -1
  1007. package/dist/bigconsole/components/widgets/WidgetHeader.js.map +0 -1
  1008. package/dist/bigconsole/components/widgets/WidgetMenu.d.ts.map +0 -1
  1009. package/dist/bigconsole/components/widgets/WidgetMenu.js.map +0 -1
  1010. package/dist/bigconsole/components/widgets/WidgetRegistry.d.ts.map +0 -1
  1011. package/dist/bigconsole/components/widgets/WidgetRegistry.js.map +0 -1
  1012. package/dist/bigconsole/components/widgets/WidgetTypeSelector.d.ts.map +0 -1
  1013. package/dist/bigconsole/components/widgets/WidgetWrapper.d.ts.map +0 -1
  1014. package/dist/bigconsole/components/widgets/WidgetWrapper.js.map +0 -1
  1015. package/dist/bigconsole/components/widgets/actionConfig.d.ts.map +0 -1
  1016. package/dist/bigconsole/components/widgets/actionConfig.js.map +0 -1
  1017. package/dist/bigconsole/components/widgets/adaptive-card/AdaptiveCardWidget.d.ts.map +0 -1
  1018. package/dist/bigconsole/components/widgets/adaptive-card/AdaptiveCardWidget.js.map +0 -1
  1019. package/dist/bigconsole/components/widgets/adaptive-card/index.d.ts.map +0 -1
  1020. package/dist/bigconsole/components/widgets/calendar/CalendarView.d.ts.map +0 -1
  1021. package/dist/bigconsole/components/widgets/calendar/CalendarView.js.map +0 -1
  1022. package/dist/bigconsole/components/widgets/calendar/CalendarWidget.d.ts.map +0 -1
  1023. package/dist/bigconsole/components/widgets/calendar/CalendarWidget.js.map +0 -1
  1024. package/dist/bigconsole/components/widgets/calendar/index.d.ts.map +0 -1
  1025. package/dist/bigconsole/components/widgets/chart/ChartConfig.d.ts.map +0 -1
  1026. package/dist/bigconsole/components/widgets/chart/ChartConfig.js.map +0 -1
  1027. package/dist/bigconsole/components/widgets/chart/ChartLegend.d.ts.map +0 -1
  1028. package/dist/bigconsole/components/widgets/chart/ChartLegend.js.map +0 -1
  1029. package/dist/bigconsole/components/widgets/chart/ChartTooltip.d.ts.map +0 -1
  1030. package/dist/bigconsole/components/widgets/chart/ChartTooltip.js.map +0 -1
  1031. package/dist/bigconsole/components/widgets/chart/ChartWidget.d.ts.map +0 -1
  1032. package/dist/bigconsole/components/widgets/chart/ChartWidget.js.map +0 -1
  1033. package/dist/bigconsole/components/widgets/chart/charts/AreaChart.d.ts.map +0 -1
  1034. package/dist/bigconsole/components/widgets/chart/charts/AreaChart.js.map +0 -1
  1035. package/dist/bigconsole/components/widgets/chart/charts/BarChart.d.ts.map +0 -1
  1036. package/dist/bigconsole/components/widgets/chart/charts/BarChart.js.map +0 -1
  1037. package/dist/bigconsole/components/widgets/chart/charts/ComboChart.d.ts.map +0 -1
  1038. package/dist/bigconsole/components/widgets/chart/charts/ComboChart.js.map +0 -1
  1039. package/dist/bigconsole/components/widgets/chart/charts/FunnelChart.d.ts.map +0 -1
  1040. package/dist/bigconsole/components/widgets/chart/charts/FunnelChart.js.map +0 -1
  1041. package/dist/bigconsole/components/widgets/chart/charts/LineChart.d.ts.map +0 -1
  1042. package/dist/bigconsole/components/widgets/chart/charts/LineChart.js.map +0 -1
  1043. package/dist/bigconsole/components/widgets/chart/charts/PieChart.d.ts.map +0 -1
  1044. package/dist/bigconsole/components/widgets/chart/charts/PieChart.js.map +0 -1
  1045. package/dist/bigconsole/components/widgets/chart/charts/ScatterChart.d.ts.map +0 -1
  1046. package/dist/bigconsole/components/widgets/chart/charts/ScatterChart.js.map +0 -1
  1047. package/dist/bigconsole/components/widgets/chart/charts/WaterfallChart.d.ts.map +0 -1
  1048. package/dist/bigconsole/components/widgets/chart/charts/WaterfallChart.js.map +0 -1
  1049. package/dist/bigconsole/components/widgets/chart/charts/index.d.ts.map +0 -1
  1050. package/dist/bigconsole/components/widgets/chart/charts/referenceElements.d.ts.map +0 -1
  1051. package/dist/bigconsole/components/widgets/chart/charts/referenceElements.js.map +0 -1
  1052. package/dist/bigconsole/components/widgets/chart/charts/types.d.ts.map +0 -1
  1053. package/dist/bigconsole/components/widgets/chart/index.d.ts.map +0 -1
  1054. package/dist/bigconsole/components/widgets/comments/WidgetComments.d.ts.map +0 -1
  1055. package/dist/bigconsole/components/widgets/comments/WidgetComments.js.map +0 -1
  1056. package/dist/bigconsole/components/widgets/custom/CustomWidget.d.ts.map +0 -1
  1057. package/dist/bigconsole/components/widgets/custom/CustomWidget.js.map +0 -1
  1058. package/dist/bigconsole/components/widgets/custom/config.d.ts.map +0 -1
  1059. package/dist/bigconsole/components/widgets/custom/config.js.map +0 -1
  1060. package/dist/bigconsole/components/widgets/custom/index.d.ts.map +0 -1
  1061. package/dist/bigconsole/components/widgets/custom/utils.d.ts.map +0 -1
  1062. package/dist/bigconsole/components/widgets/custom/utils.js.map +0 -1
  1063. package/dist/bigconsole/components/widgets/event-logs/EventLogViewer.d.ts.map +0 -1
  1064. package/dist/bigconsole/components/widgets/event-logs/EventLogViewer.js.map +0 -1
  1065. package/dist/bigconsole/components/widgets/event-logs/index.d.ts.map +0 -1
  1066. package/dist/bigconsole/components/widgets/form/FormWidget.d.ts.map +0 -1
  1067. package/dist/bigconsole/components/widgets/form/FormWidget.js.map +0 -1
  1068. package/dist/bigconsole/components/widgets/form/index.d.ts.map +0 -1
  1069. package/dist/bigconsole/components/widgets/funnel/index.d.ts.map +0 -1
  1070. package/dist/bigconsole/components/widgets/funnel/index.js.map +0 -1
  1071. package/dist/bigconsole/components/widgets/gauge/CircularGauge.d.ts.map +0 -1
  1072. package/dist/bigconsole/components/widgets/gauge/CircularGauge.js.map +0 -1
  1073. package/dist/bigconsole/components/widgets/gauge/GaugeConfig.d.ts.map +0 -1
  1074. package/dist/bigconsole/components/widgets/gauge/GaugeConfig.js.map +0 -1
  1075. package/dist/bigconsole/components/widgets/gauge/GaugeWidget.d.ts.map +0 -1
  1076. package/dist/bigconsole/components/widgets/gauge/GaugeWidget.js.map +0 -1
  1077. package/dist/bigconsole/components/widgets/gauge/LinearGauge.d.ts.map +0 -1
  1078. package/dist/bigconsole/components/widgets/gauge/LinearGauge.js.map +0 -1
  1079. package/dist/bigconsole/components/widgets/gauge/index.d.ts.map +0 -1
  1080. package/dist/bigconsole/components/widgets/heatmap/HeatmapConfig.d.ts.map +0 -1
  1081. package/dist/bigconsole/components/widgets/heatmap/HeatmapConfig.js.map +0 -1
  1082. package/dist/bigconsole/components/widgets/heatmap/HeatmapWidget.d.ts.map +0 -1
  1083. package/dist/bigconsole/components/widgets/heatmap/HeatmapWidget.js.map +0 -1
  1084. package/dist/bigconsole/components/widgets/heatmap/index.d.ts.map +0 -1
  1085. package/dist/bigconsole/components/widgets/iframe-widget/IframeWidget.d.ts.map +0 -1
  1086. package/dist/bigconsole/components/widgets/iframe-widget/IframeWidget.js.map +0 -1
  1087. package/dist/bigconsole/components/widgets/iframe-widget/index.d.ts.map +0 -1
  1088. package/dist/bigconsole/components/widgets/index.d.ts.map +0 -1
  1089. package/dist/bigconsole/components/widgets/kanban/KanbanView.d.ts.map +0 -1
  1090. package/dist/bigconsole/components/widgets/kanban/KanbanView.js.map +0 -1
  1091. package/dist/bigconsole/components/widgets/kanban/KanbanWidget.d.ts.map +0 -1
  1092. package/dist/bigconsole/components/widgets/kanban/KanbanWidget.js.map +0 -1
  1093. package/dist/bigconsole/components/widgets/kanban/index.d.ts.map +0 -1
  1094. package/dist/bigconsole/components/widgets/kanban/model.d.ts.map +0 -1
  1095. package/dist/bigconsole/components/widgets/kanban/model.js.map +0 -1
  1096. package/dist/bigconsole/components/widgets/kpi/KPIWidget.d.ts.map +0 -1
  1097. package/dist/bigconsole/components/widgets/kpi/KPIWidget.js.map +0 -1
  1098. package/dist/bigconsole/components/widgets/kpi/index.d.ts.map +0 -1
  1099. package/dist/bigconsole/components/widgets/kpi-comparison/KPIComparisonWidget.d.ts.map +0 -1
  1100. package/dist/bigconsole/components/widgets/kpi-comparison/KPIComparisonWidget.js.map +0 -1
  1101. package/dist/bigconsole/components/widgets/kpi-comparison/index.d.ts.map +0 -1
  1102. package/dist/bigconsole/components/widgets/list/ListConfig.d.ts.map +0 -1
  1103. package/dist/bigconsole/components/widgets/list/ListConfig.js.map +0 -1
  1104. package/dist/bigconsole/components/widgets/list/ListItem.d.ts.map +0 -1
  1105. package/dist/bigconsole/components/widgets/list/ListItem.js.map +0 -1
  1106. package/dist/bigconsole/components/widgets/list/ListWidget.d.ts.map +0 -1
  1107. package/dist/bigconsole/components/widgets/list/ListWidget.js.map +0 -1
  1108. package/dist/bigconsole/components/widgets/list/index.d.ts.map +0 -1
  1109. package/dist/bigconsole/components/widgets/map-widget/MapWidget.d.ts.map +0 -1
  1110. package/dist/bigconsole/components/widgets/map-widget/MapWidget.js.map +0 -1
  1111. package/dist/bigconsole/components/widgets/map-widget/index.d.ts.map +0 -1
  1112. package/dist/bigconsole/components/widgets/metric-card/ComparisonBadge.d.ts.map +0 -1
  1113. package/dist/bigconsole/components/widgets/metric-card/ComparisonBadge.js.map +0 -1
  1114. package/dist/bigconsole/components/widgets/metric-card/MetricCardConfig.d.ts.map +0 -1
  1115. package/dist/bigconsole/components/widgets/metric-card/MetricCardConfig.js.map +0 -1
  1116. package/dist/bigconsole/components/widgets/metric-card/MetricCardWidget.d.ts.map +0 -1
  1117. package/dist/bigconsole/components/widgets/metric-card/MetricCardWidget.js.map +0 -1
  1118. package/dist/bigconsole/components/widgets/metric-card/SparklineChart.d.ts.map +0 -1
  1119. package/dist/bigconsole/components/widgets/metric-card/SparklineChart.js.map +0 -1
  1120. package/dist/bigconsole/components/widgets/metric-card/TrendIndicator.d.ts.map +0 -1
  1121. package/dist/bigconsole/components/widgets/metric-card/TrendIndicator.js.map +0 -1
  1122. package/dist/bigconsole/components/widgets/metric-card/index.d.ts.map +0 -1
  1123. package/dist/bigconsole/components/widgets/pivot-table/PivotTableWidget.d.ts.map +0 -1
  1124. package/dist/bigconsole/components/widgets/pivot-table/PivotTableWidget.js.map +0 -1
  1125. package/dist/bigconsole/components/widgets/pivot-table/index.d.ts.map +0 -1
  1126. package/dist/bigconsole/components/widgets/progress/ProgressBar.d.ts.map +0 -1
  1127. package/dist/bigconsole/components/widgets/progress/ProgressBar.js.map +0 -1
  1128. package/dist/bigconsole/components/widgets/progress/ProgressConfig.d.ts.map +0 -1
  1129. package/dist/bigconsole/components/widgets/progress/ProgressConfig.js.map +0 -1
  1130. package/dist/bigconsole/components/widgets/progress/ProgressWidget.d.ts.map +0 -1
  1131. package/dist/bigconsole/components/widgets/progress/ProgressWidget.js.map +0 -1
  1132. package/dist/bigconsole/components/widgets/progress/index.d.ts.map +0 -1
  1133. package/dist/bigconsole/components/widgets/retention/RetentionWidget.d.ts.map +0 -1
  1134. package/dist/bigconsole/components/widgets/retention/RetentionWidget.js.map +0 -1
  1135. package/dist/bigconsole/components/widgets/retention/index.d.ts.map +0 -1
  1136. package/dist/bigconsole/components/widgets/states/EmptyState.d.ts.map +0 -1
  1137. package/dist/bigconsole/components/widgets/states/EmptyState.js.map +0 -1
  1138. package/dist/bigconsole/components/widgets/states/ErrorState.d.ts.map +0 -1
  1139. package/dist/bigconsole/components/widgets/states/ErrorState.js.map +0 -1
  1140. package/dist/bigconsole/components/widgets/states/LoadingState.d.ts.map +0 -1
  1141. package/dist/bigconsole/components/widgets/states/LoadingState.js.map +0 -1
  1142. package/dist/bigconsole/components/widgets/states/index.d.ts.map +0 -1
  1143. package/dist/bigconsole/components/widgets/table/TableCell.d.ts.map +0 -1
  1144. package/dist/bigconsole/components/widgets/table/TableCell.js.map +0 -1
  1145. package/dist/bigconsole/components/widgets/table/TableConfig.d.ts.map +0 -1
  1146. package/dist/bigconsole/components/widgets/table/TableConfig.js.map +0 -1
  1147. package/dist/bigconsole/components/widgets/table/TableHeader.d.ts.map +0 -1
  1148. package/dist/bigconsole/components/widgets/table/TableHeader.js.map +0 -1
  1149. package/dist/bigconsole/components/widgets/table/TablePagination.d.ts.map +0 -1
  1150. package/dist/bigconsole/components/widgets/table/TablePagination.js.map +0 -1
  1151. package/dist/bigconsole/components/widgets/table/TableWidget.d.ts.map +0 -1
  1152. package/dist/bigconsole/components/widgets/table/TableWidget.js.map +0 -1
  1153. package/dist/bigconsole/components/widgets/table/cellLink.d.ts.map +0 -1
  1154. package/dist/bigconsole/components/widgets/table/cellLink.js.map +0 -1
  1155. package/dist/bigconsole/components/widgets/table/index.d.ts.map +0 -1
  1156. package/dist/bigconsole/components/widgets/text-widget/TextWidget.d.ts.map +0 -1
  1157. package/dist/bigconsole/components/widgets/text-widget/TextWidget.js.map +0 -1
  1158. package/dist/bigconsole/components/widgets/text-widget/index.d.ts.map +0 -1
  1159. package/dist/bigconsole/components/widgets/text-widget/textData.d.ts.map +0 -1
  1160. package/dist/bigconsole/components/widgets/text-widget/textData.js.map +0 -1
  1161. package/dist/bigconsole/components/widgets/timeline/TimelineWidget.d.ts.map +0 -1
  1162. package/dist/bigconsole/components/widgets/timeline/TimelineWidget.js.map +0 -1
  1163. package/dist/bigconsole/components/widgets/timeline/index.d.ts.map +0 -1
  1164. package/dist/bigconsole/components/widgets/utils/conditionalFormat.d.ts.map +0 -1
  1165. package/dist/bigconsole/components/widgets/utils/conditionalFormat.js.map +0 -1
  1166. package/dist/bigconsole/components/widgets/utils/inferFields.d.ts.map +0 -1
  1167. package/dist/bigconsole/components/widgets/utils/inferFields.js.map +0 -1
  1168. package/dist/bigconsole/components/widgets/utils/targetProgress.d.ts.map +0 -1
  1169. package/dist/bigconsole/components/widgets/utils/targetProgress.js.map +0 -1
  1170. package/dist/bigconsole/components/widgets/utils/translate.d.ts.map +0 -1
  1171. package/dist/bigconsole/components/widgets/utils/translate.js.map +0 -1
  1172. package/dist/bigconsole/components/widgets/webhook-config/WebhookConfigPanel.d.ts.map +0 -1
  1173. package/dist/bigconsole/components/widgets/webhook-config/WebhookConfigPanel.js.map +0 -1
  1174. package/dist/bigconsole/components/widgets/webhook-config/index.d.ts.map +0 -1
  1175. package/dist/bigconsole/components/widgets/widget-actions/WidgetActions.d.ts.map +0 -1
  1176. package/dist/bigconsole/components/widgets/widget-actions/WidgetActions.js.map +0 -1
  1177. package/dist/bigconsole/components/widgets/widget-actions/index.d.ts.map +0 -1
  1178. package/dist/bigconsole/components/workflow/DataSinkMultiSelector.d.ts.map +0 -1
  1179. package/dist/bigconsole/components/workflow/WorkflowCard.d.ts.map +0 -1
  1180. package/dist/bigconsole/components/workflow/WorkflowCard.js.map +0 -1
  1181. package/dist/bigconsole/components/workflow/WorkflowDeleteDialog.d.ts.map +0 -1
  1182. package/dist/bigconsole/components/workflow/WorkflowDeleteDialog.js.map +0 -1
  1183. package/dist/bigconsole/components/workflow/WorkflowDesignPreview.d.ts.map +0 -1
  1184. package/dist/bigconsole/components/workflow/WorkflowDesignPreview.js.map +0 -1
  1185. package/dist/bigconsole/components/workflow/WorkflowOpenGuard.d.ts.map +0 -1
  1186. package/dist/bigconsole/components/workflow/WorkflowOpenGuard.js.map +0 -1
  1187. package/dist/bigconsole/components/workflow/WorkflowSinkLinkForm.d.ts.map +0 -1
  1188. package/dist/bigconsole/components/workflow/WorkflowSinkLinkForm.js.map +0 -1
  1189. package/dist/bigconsole/components/workflow/WorkflowStatusBadge.d.ts.map +0 -1
  1190. package/dist/bigconsole/components/workflow/WorkflowStatusBadge.js.map +0 -1
  1191. package/dist/bigconsole/components/workflow/index.d.ts.map +0 -1
  1192. package/dist/bigconsole/constants/backendErrors.d.ts.map +0 -1
  1193. package/dist/bigconsole/constants.d.ts.map +0 -1
  1194. package/dist/bigconsole/constants.js.map +0 -1
  1195. package/dist/bigconsole/context/BigConsoleContext.d.ts.map +0 -1
  1196. package/dist/bigconsole/context/BigConsoleContext.js.map +0 -1
  1197. package/dist/bigconsole/context/index.d.ts.map +0 -1
  1198. package/dist/bigconsole/contexts/CrossFilterContext.d.ts.map +0 -1
  1199. package/dist/bigconsole/contexts/CrossFilterContext.js.map +0 -1
  1200. package/dist/bigconsole/contexts/NavigationContext.d.ts.map +0 -1
  1201. package/dist/bigconsole/contexts/NavigationContext.js.map +0 -1
  1202. package/dist/bigconsole/contexts/index.d.ts.map +0 -1
  1203. package/dist/bigconsole/customWidget/CustomWidgetBuilderSheet.d.ts.map +0 -1
  1204. package/dist/bigconsole/customWidget/CustomWidgetBuilderSheet.js.map +0 -1
  1205. package/dist/bigconsole/customWidget/CustomWidgetProposalPanel.d.ts.map +0 -1
  1206. package/dist/bigconsole/customWidget/CustomWidgetProposalPanel.js.map +0 -1
  1207. package/dist/bigconsole/customWidget/index.d.ts.map +0 -1
  1208. package/dist/bigconsole/customWidget/proposalContract.d.ts.map +0 -1
  1209. package/dist/bigconsole/customWidget/proposalContract.js.map +0 -1
  1210. package/dist/bigconsole/customWidget/proposalSource.d.ts.map +0 -1
  1211. package/dist/bigconsole/customWidget/proposalSource.js.map +0 -1
  1212. package/dist/bigconsole/graphql/apollo-compat.d.ts.map +0 -1
  1213. package/dist/bigconsole/graphql/storeTemplates.d.ts.map +0 -1
  1214. package/dist/bigconsole/graphql/storeTemplates.js.map +0 -1
  1215. package/dist/bigconsole/hooks/index.d.ts.map +0 -1
  1216. package/dist/bigconsole/hooks/useActivePage.d.ts.map +0 -1
  1217. package/dist/bigconsole/hooks/useActivePage.js.map +0 -1
  1218. package/dist/bigconsole/hooks/useAutoRefresh.d.ts.map +0 -1
  1219. package/dist/bigconsole/hooks/useAutoRefresh.js.map +0 -1
  1220. package/dist/bigconsole/hooks/useBigConsoleAnalytics.d.ts.map +0 -1
  1221. package/dist/bigconsole/hooks/useBigConsoleAnalytics.js.map +0 -1
  1222. package/dist/bigconsole/hooks/useBigConsoleSettings.d.ts.map +0 -1
  1223. package/dist/bigconsole/hooks/useBigConsoleSettings.js.map +0 -1
  1224. package/dist/bigconsole/hooks/useCrossFilter.d.ts.map +0 -1
  1225. package/dist/bigconsole/hooks/useCrossFilter.js.map +0 -1
  1226. package/dist/bigconsole/hooks/useDashboardEmbedPolicy.d.ts.map +0 -1
  1227. package/dist/bigconsole/hooks/useDashboardEmbedPolicy.js.map +0 -1
  1228. package/dist/bigconsole/hooks/useDashboardImageExport.d.ts.map +0 -1
  1229. package/dist/bigconsole/hooks/useDashboardImageExport.js.map +0 -1
  1230. package/dist/bigconsole/hooks/useDashboardOperations.d.ts.map +0 -1
  1231. package/dist/bigconsole/hooks/useDashboardOperations.js.map +0 -1
  1232. package/dist/bigconsole/hooks/useDashboardSharing.d.ts.map +0 -1
  1233. package/dist/bigconsole/hooks/useDashboardSharing.js.map +0 -1
  1234. package/dist/bigconsole/hooks/useDashboardTemplates.d.ts.map +0 -1
  1235. package/dist/bigconsole/hooks/useDashboardViews.d.ts.map +0 -1
  1236. package/dist/bigconsole/hooks/useDashboardViews.js.map +0 -1
  1237. package/dist/bigconsole/hooks/useDataSinkAlerts.d.ts.map +0 -1
  1238. package/dist/bigconsole/hooks/useDataSinkAlerts.js.map +0 -1
  1239. package/dist/bigconsole/hooks/useDataSinkOperations.d.ts.map +0 -1
  1240. package/dist/bigconsole/hooks/useDataSinkOperations.js.map +0 -1
  1241. package/dist/bigconsole/hooks/useDataSinkSubscription.d.ts.map +0 -1
  1242. package/dist/bigconsole/hooks/useDataSinkSubscription.js.map +0 -1
  1243. package/dist/bigconsole/hooks/useDrilldown.d.ts.map +0 -1
  1244. package/dist/bigconsole/hooks/useDrilldown.js.map +0 -1
  1245. package/dist/bigconsole/hooks/useDrilldownOperations.d.ts.map +0 -1
  1246. package/dist/bigconsole/hooks/useDrilldownOperations.js.map +0 -1
  1247. package/dist/bigconsole/hooks/useEventLogs.d.ts.map +0 -1
  1248. package/dist/bigconsole/hooks/useEventLogs.js.map +0 -1
  1249. package/dist/bigconsole/hooks/useEventWebhooks.d.ts.map +0 -1
  1250. package/dist/bigconsole/hooks/useEventWebhooks.js.map +0 -1
  1251. package/dist/bigconsole/hooks/useExportDashboard.d.ts.map +0 -1
  1252. package/dist/bigconsole/hooks/useExportDashboard.js.map +0 -1
  1253. package/dist/bigconsole/hooks/useExportDataSink.d.ts.map +0 -1
  1254. package/dist/bigconsole/hooks/useExportDataSink.js.map +0 -1
  1255. package/dist/bigconsole/hooks/useExportParser.d.ts.map +0 -1
  1256. package/dist/bigconsole/hooks/useExportParser.js.map +0 -1
  1257. package/dist/bigconsole/hooks/useFilterPresets.d.ts.map +0 -1
  1258. package/dist/bigconsole/hooks/useFilterPresets.js.map +0 -1
  1259. package/dist/bigconsole/hooks/useFilterUrlSync.d.ts.map +0 -1
  1260. package/dist/bigconsole/hooks/useFilterUrlSync.js.map +0 -1
  1261. package/dist/bigconsole/hooks/useGlobalFilters.d.ts.map +0 -1
  1262. package/dist/bigconsole/hooks/useGlobalFilters.js.map +0 -1
  1263. package/dist/bigconsole/hooks/useImportDashboard.d.ts.map +0 -1
  1264. package/dist/bigconsole/hooks/useImportDashboard.js.map +0 -1
  1265. package/dist/bigconsole/hooks/useImportDataSink.d.ts.map +0 -1
  1266. package/dist/bigconsole/hooks/useImportDataSink.js.map +0 -1
  1267. package/dist/bigconsole/hooks/useImportParser.d.ts.map +0 -1
  1268. package/dist/bigconsole/hooks/useImportParser.js.map +0 -1
  1269. package/dist/bigconsole/hooks/useInstalledWidgets.d.ts.map +0 -1
  1270. package/dist/bigconsole/hooks/useInstalledWidgets.js.map +0 -1
  1271. package/dist/bigconsole/hooks/useModalFocusTrap.d.ts.map +0 -1
  1272. package/dist/bigconsole/hooks/useModalFocusTrap.js.map +0 -1
  1273. package/dist/bigconsole/hooks/usePageOperations.d.ts.map +0 -1
  1274. package/dist/bigconsole/hooks/usePageOperations.js.map +0 -1
  1275. package/dist/bigconsole/hooks/useParserOperations.d.ts.map +0 -1
  1276. package/dist/bigconsole/hooks/useParserOperations.js.map +0 -1
  1277. package/dist/bigconsole/hooks/usePipelineOperations.d.ts.map +0 -1
  1278. package/dist/bigconsole/hooks/usePipelineOperations.js.map +0 -1
  1279. package/dist/bigconsole/hooks/useShareRecipients.d.ts.map +0 -1
  1280. package/dist/bigconsole/hooks/useShareRecipients.js.map +0 -1
  1281. package/dist/bigconsole/hooks/useStoreDashboardTemplates.d.ts.map +0 -1
  1282. package/dist/bigconsole/hooks/useStoreDashboardTemplates.js.map +0 -1
  1283. package/dist/bigconsole/hooks/useWidgetActions.d.ts.map +0 -1
  1284. package/dist/bigconsole/hooks/useWidgetActions.js.map +0 -1
  1285. package/dist/bigconsole/hooks/useWidgetCatalog.d.ts.map +0 -1
  1286. package/dist/bigconsole/hooks/useWidgetCatalog.js.map +0 -1
  1287. package/dist/bigconsole/hooks/useWidgetComments.d.ts.map +0 -1
  1288. package/dist/bigconsole/hooks/useWidgetComments.js.map +0 -1
  1289. package/dist/bigconsole/hooks/useWidgetConfigPersist.d.ts.map +0 -1
  1290. package/dist/bigconsole/hooks/useWidgetConfigPersist.js.map +0 -1
  1291. package/dist/bigconsole/hooks/useWidgetData.d.ts.map +0 -1
  1292. package/dist/bigconsole/hooks/useWidgetData.js.map +0 -1
  1293. package/dist/bigconsole/hooks/useWidgetEvents.d.ts.map +0 -1
  1294. package/dist/bigconsole/hooks/useWidgetEvents.js.map +0 -1
  1295. package/dist/bigconsole/hooks/useWidgetExport.d.ts.map +0 -1
  1296. package/dist/bigconsole/hooks/useWidgetExport.js.map +0 -1
  1297. package/dist/bigconsole/hooks/useWidgetOperations.d.ts.map +0 -1
  1298. package/dist/bigconsole/hooks/useWidgetOperations.js.map +0 -1
  1299. package/dist/bigconsole/hooks/useWorkflowOperations.d.ts.map +0 -1
  1300. package/dist/bigconsole/hooks/useWorkflowOperations.js.map +0 -1
  1301. package/dist/bigconsole/index.d.ts.map +0 -1
  1302. package/dist/bigconsole/modules/dashboard/index.d.ts.map +0 -1
  1303. package/dist/bigconsole/modules/index.d.ts.map +0 -1
  1304. package/dist/bigconsole/modules/renderer/index.d.ts.map +0 -1
  1305. package/dist/bigconsole/modules/widget/index.d.ts.map +0 -1
  1306. package/dist/bigconsole/pages/AdminPage.d.ts.map +0 -1
  1307. package/dist/bigconsole/pages/AdminPage.js.map +0 -1
  1308. package/dist/bigconsole/pages/DashboardBuilderPage.d.ts.map +0 -1
  1309. package/dist/bigconsole/pages/DashboardBuilderPage.js.map +0 -1
  1310. package/dist/bigconsole/pages/DashboardViewPage.d.ts.map +0 -1
  1311. package/dist/bigconsole/pages/DashboardViewPage.js.map +0 -1
  1312. package/dist/bigconsole/pages/DashboardsPage.d.ts.map +0 -1
  1313. package/dist/bigconsole/pages/DashboardsPage.js.map +0 -1
  1314. package/dist/bigconsole/pages/DataParsersPage.d.ts.map +0 -1
  1315. package/dist/bigconsole/pages/DataParsersPage.js.map +0 -1
  1316. package/dist/bigconsole/pages/DataSinkAlertsPage.d.ts.map +0 -1
  1317. package/dist/bigconsole/pages/DataSinkAlertsPage.js.map +0 -1
  1318. package/dist/bigconsole/pages/DataSinkBuilderPage.d.ts.map +0 -1
  1319. package/dist/bigconsole/pages/DataSinkBuilderPage.js.map +0 -1
  1320. package/dist/bigconsole/pages/DataSinkViewPage.d.ts.map +0 -1
  1321. package/dist/bigconsole/pages/DataSinkViewPage.js.map +0 -1
  1322. package/dist/bigconsole/pages/DataSinksPage.d.ts.map +0 -1
  1323. package/dist/bigconsole/pages/DataSinksPage.js.map +0 -1
  1324. package/dist/bigconsole/pages/DataSourcesPage.d.ts.map +0 -1
  1325. package/dist/bigconsole/pages/DataSourcesPage.js.map +0 -1
  1326. package/dist/bigconsole/pages/InsightsPage.d.ts.map +0 -1
  1327. package/dist/bigconsole/pages/InsightsPage.js.map +0 -1
  1328. package/dist/bigconsole/pages/OverviewPage.d.ts.map +0 -1
  1329. package/dist/bigconsole/pages/OverviewPage.js.map +0 -1
  1330. package/dist/bigconsole/pages/ParserBuilderPage.d.ts.map +0 -1
  1331. package/dist/bigconsole/pages/ParserBuilderPage.js.map +0 -1
  1332. package/dist/bigconsole/pages/ParserViewPage.d.ts.map +0 -1
  1333. package/dist/bigconsole/pages/ParserViewPage.js.map +0 -1
  1334. package/dist/bigconsole/pages/PipelineBuilderPage.d.ts.map +0 -1
  1335. package/dist/bigconsole/pages/PipelineBuilderPage.js.map +0 -1
  1336. package/dist/bigconsole/pages/PipelineViewPage.d.ts.map +0 -1
  1337. package/dist/bigconsole/pages/PipelineViewPage.js.map +0 -1
  1338. package/dist/bigconsole/pages/PipelinesPage.d.ts.map +0 -1
  1339. package/dist/bigconsole/pages/PipelinesPage.js.map +0 -1
  1340. package/dist/bigconsole/pages/SettingsPage.d.ts.map +0 -1
  1341. package/dist/bigconsole/pages/SettingsPage.js.map +0 -1
  1342. package/dist/bigconsole/pages/WidgetDemoPage.d.ts.map +0 -1
  1343. package/dist/bigconsole/pages/WidgetDemoPage.js.map +0 -1
  1344. package/dist/bigconsole/pages/WorkflowViewPage.d.ts.map +0 -1
  1345. package/dist/bigconsole/pages/WorkflowViewPage.js.map +0 -1
  1346. package/dist/bigconsole/pages/WorkflowsPage.d.ts.map +0 -1
  1347. package/dist/bigconsole/pages/WorkflowsPage.js.map +0 -1
  1348. package/dist/bigconsole/pages/index.d.ts.map +0 -1
  1349. package/dist/bigconsole/providers/BigConsoleQuotaProvider.d.ts.map +0 -1
  1350. package/dist/bigconsole/providers/BigConsoleQuotaProvider.js.map +0 -1
  1351. package/dist/bigconsole/renderers/adapters/AdaptiveCardRenderer.d.ts.map +0 -1
  1352. package/dist/bigconsole/renderers/adapters/AdaptiveCardRenderer.js.map +0 -1
  1353. package/dist/bigconsole/renderers/adapters/BigConsoleRenderer.d.ts.map +0 -1
  1354. package/dist/bigconsole/renderers/adapters/BigConsoleRenderer.js.map +0 -1
  1355. package/dist/bigconsole/renderers/adapters/BlockKitRenderer.d.ts.map +0 -1
  1356. package/dist/bigconsole/renderers/adapters/BlockKitRenderer.js.map +0 -1
  1357. package/dist/bigconsole/renderers/adapters/CustomRenderer.d.ts.map +0 -1
  1358. package/dist/bigconsole/renderers/adapters/CustomRenderer.js.map +0 -1
  1359. package/dist/bigconsole/renderers/adapters/index.d.ts.map +0 -1
  1360. package/dist/bigconsole/renderers/factory/WidgetRendererFactory.d.ts.map +0 -1
  1361. package/dist/bigconsole/renderers/factory/WidgetRendererFactory.js.map +0 -1
  1362. package/dist/bigconsole/renderers/index.d.ts.map +0 -1
  1363. package/dist/bigconsole/renderers/registry/RendererRegistry.d.ts.map +0 -1
  1364. package/dist/bigconsole/renderers/registry/RendererRegistry.js.map +0 -1
  1365. package/dist/bigconsole/renderers/types/index.d.ts.map +0 -1
  1366. package/dist/bigconsole/renderers/types/renderer.d.ts.map +0 -1
  1367. package/dist/bigconsole/store/dashboardStore.d.ts.map +0 -1
  1368. package/dist/bigconsole/store/dashboardStore.js.map +0 -1
  1369. package/dist/bigconsole/store/dataSinkStore.d.ts.map +0 -1
  1370. package/dist/bigconsole/store/dataSinkStore.js.map +0 -1
  1371. package/dist/bigconsole/store/drilldownStore.d.ts.map +0 -1
  1372. package/dist/bigconsole/store/drilldownStore.js.map +0 -1
  1373. package/dist/bigconsole/store/index.d.ts.map +0 -1
  1374. package/dist/bigconsole/store/parserStore.d.ts.map +0 -1
  1375. package/dist/bigconsole/store/parserStore.js.map +0 -1
  1376. package/dist/bigconsole/store/pipelineStore.d.ts.map +0 -1
  1377. package/dist/bigconsole/store/pipelineStore.js.map +0 -1
  1378. package/dist/bigconsole/store/widgetStore.d.ts.map +0 -1
  1379. package/dist/bigconsole/store/widgetStore.js.map +0 -1
  1380. package/dist/bigconsole/store/workflowStore.d.ts.map +0 -1
  1381. package/dist/bigconsole/store/workflowStore.js.map +0 -1
  1382. package/dist/bigconsole/types/index.d.ts.map +0 -1
  1383. package/dist/bigconsole/utils/alertRules.d.ts.map +0 -1
  1384. package/dist/bigconsole/utils/alertRules.js.map +0 -1
  1385. package/dist/bigconsole/utils/backendError.d.ts.map +0 -1
  1386. package/dist/bigconsole/utils/createDialogParam.d.ts.map +0 -1
  1387. package/dist/bigconsole/utils/createDialogParam.js.map +0 -1
  1388. package/dist/bigconsole/utils/csv.d.ts.map +0 -1
  1389. package/dist/bigconsole/utils/csv.js.map +0 -1
  1390. package/dist/bigconsole/utils/dashboardTemplateContent.d.ts.map +0 -1
  1391. package/dist/bigconsole/utils/dashboardTemplateContent.js.map +0 -1
  1392. package/dist/bigconsole/utils/drilldownParams.d.ts.map +0 -1
  1393. package/dist/bigconsole/utils/drilldownParams.js.map +0 -1
  1394. package/dist/bigconsole/utils/format.d.ts.map +0 -1
  1395. package/dist/bigconsole/utils/format.js.map +0 -1
  1396. package/dist/bigconsole/utils/index.d.ts.map +0 -1
  1397. package/dist/bigconsole/utils/quota.d.ts.map +0 -1
  1398. package/dist/bigconsole/utils/quota.js.map +0 -1
  1399. package/dist/bigconsole/utils/semanticTokens.d.ts.map +0 -1
  1400. package/dist/bigconsole/utils/semanticTokens.js.map +0 -1
  1401. package/dist/bigconsole/utils/templateInstallInputs.d.ts.map +0 -1
  1402. package/dist/bigconsole/utils/templateInstallInputs.js.map +0 -1
  1403. package/dist/bigconsole/utils/widgetBinding.d.ts.map +0 -1
  1404. package/dist/bigconsole/utils/widgetBinding.js.map +0 -1
  1405. package/dist/bigconsole/utils/widgetPositioning.d.ts.map +0 -1
  1406. package/dist/bigconsole/utils/widgetPositioning.js.map +0 -1
  1407. package/dist/bigconsole/utils/widgetTypeMapping.d.ts.map +0 -1
  1408. package/dist/bigconsole/utils/widgetTypeMapping.js.map +0 -1
  1409. package/dist/bigconsole/workflowOpen.d.ts.map +0 -1
  1410. package/dist/bigconsole/workflowOpen.js.map +0 -1
  1411. package/dist/constants/permissions.d.ts.map +0 -1
  1412. package/dist/constants/permissions.js.map +0 -1
  1413. package/dist/generated/global-operations.d.ts.map +0 -1
  1414. package/dist/generated/global-operations.js.map +0 -1
  1415. package/dist/generated/global-types.d.ts.map +0 -1
  1416. package/dist/generated/wspace-operations.d.ts.map +0 -1
  1417. package/dist/generated/wspace-operations.js.map +0 -1
  1418. package/dist/generated/wspace-types.d.ts.map +0 -1
  1419. package/dist/generated/wspace-types.js.map +0 -1
  1420. package/dist/index.d.ts.map +0 -1
  1421. package/dist/node_modules/@e965/xlsx/xlsx.js.map +0 -1
  1422. package/dist/node_modules/pdfjs-dist/build/pdf.js.map +0 -1
  1423. package/dist/shared/hooks/useTr.d.ts.map +0 -1
  1424. package/dist/shared/hooks/useTr.js.map +0 -1
  1425. package/dist/stories/DashboardGuide.stories.d.ts +0 -15
  1426. package/dist/stories/DashboardGuide.stories.d.ts.map +0 -1
  1427. package/dist/stories/DataSinkStatusBadge.stories.d.ts +0 -12
  1428. package/dist/stories/DataSinkStatusBadge.stories.d.ts.map +0 -1
  1429. package/dist/stories/GaugeWidget.stories.d.ts +0 -58
  1430. package/dist/stories/GaugeWidget.stories.d.ts.map +0 -1
  1431. package/dist/stories/KPIComparisonWidget.stories.d.ts +0 -76
  1432. package/dist/stories/KPIComparisonWidget.stories.d.ts.map +0 -1
  1433. package/dist/stories/LiveCanvasToggle.stories.d.ts +0 -9
  1434. package/dist/stories/LiveCanvasToggle.stories.d.ts.map +0 -1
  1435. package/dist/stories/MetricCardWidget.stories.d.ts +0 -88
  1436. package/dist/stories/MetricCardWidget.stories.d.ts.map +0 -1
  1437. package/dist/stories/ProgressWidget.stories.d.ts +0 -48
  1438. package/dist/stories/ProgressWidget.stories.d.ts.map +0 -1
  1439. package/dist/stories/SetupStateBadge.stories.d.ts +0 -12
  1440. package/dist/stories/SetupStateBadge.stories.d.ts.map +0 -1
  1441. package/dist/translations/en.d.ts.map +0 -1
  1442. package/dist/utils/nativeBridge.d.ts.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"useFilterPresets.js","names":[],"sources":["../../../src/bigconsole/hooks/useFilterPresets.ts"],"sourcesContent":["/**\n * useFilterPresets Hook\n *\n * Manages saved filter presets for dashboards.\n * Presets allow users to save and quickly apply filter combinations.\n *\n * Uses @burdenoff/fe-libs storage hooks for proper storage management (P0.3 compliance).\n */\n\nimport { useCallback, useState, useEffect, useMemo } from 'react';\nimport { useLocalStorage } from '@burdenoff/fe-libs/shared/hooks';\nimport { useGlobalFilterValues, useDashboardStore } from '../store';\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface FilterPreset {\n id: string;\n name: string;\n description?: string;\n values: Record<string, unknown>;\n isDefault?: boolean;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface CreatePresetInput {\n name: string;\n description?: string;\n values?: Record<string, unknown>;\n isDefault?: boolean;\n}\n\nexport interface UpdatePresetInput {\n id: string;\n name?: string;\n description?: string;\n values?: Record<string, unknown>;\n isDefault?: boolean;\n}\n\nexport interface UseFilterPresetsResult {\n presets: FilterPreset[];\n activePresetId: string | null;\n loading: boolean;\n error: Error | null;\n\n // Operations\n loadPresets: (dashboardId: string) => void;\n createPreset: (input: CreatePresetInput) => FilterPreset;\n updatePreset: (input: UpdatePresetInput) => FilterPreset | null;\n deletePreset: (id: string) => boolean;\n applyPreset: (presetId: string) => void;\n saveCurrentAsPreset: (name: string, description?: string) => FilterPreset;\n setDefaultPreset: (presetId: string) => void;\n clearActivePreset: () => void;\n}\n\n// ============================================================================\n// Helpers\n// ============================================================================\n\nconst STORAGE_KEY_PREFIX = 'bigconsole_filter_presets_';\n\nfunction generateId(): string {\n return `preset-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;\n}\n\nfunction getStorageKey(dashboardId: string): string {\n return `${STORAGE_KEY_PREFIX}${dashboardId}`;\n}\n\nfunction getDefaultPresets(): FilterPreset[] {\n const now = new Date().toISOString();\n return [\n {\n id: 'preset-default',\n name: 'Default View',\n description: 'Reset all filters to default values',\n values: {},\n isDefault: true,\n createdAt: now,\n updatedAt: now,\n },\n {\n id: 'preset-last-7-days',\n name: 'Last 7 Days',\n description: 'Show data from the last 7 days',\n values: {\n dateRange: {\n start: new Date(Date.now() - 7 * 24 * 60 * 60 * 1000).toISOString().split('T')[0],\n end: new Date().toISOString().split('T')[0],\n },\n },\n isDefault: false,\n createdAt: now,\n updatedAt: now,\n },\n {\n id: 'preset-last-30-days',\n name: 'Last 30 Days',\n description: 'Show data from the last 30 days',\n values: {\n dateRange: {\n start: new Date(Date.now() - 30 * 24 * 60 * 60 * 1000).toISOString().split('T')[0],\n end: new Date().toISOString().split('T')[0],\n },\n },\n isDefault: false,\n createdAt: now,\n updatedAt: now,\n },\n {\n id: 'preset-this-month',\n name: 'This Month',\n description: 'Show data from the current month',\n values: {\n dateRange: {\n start: new Date(new Date().getFullYear(), new Date().getMonth(), 1).toISOString().split('T')[0],\n end: new Date().toISOString().split('T')[0],\n },\n },\n isDefault: false,\n createdAt: now,\n updatedAt: now,\n },\n {\n id: 'preset-this-quarter',\n name: 'This Quarter',\n description: 'Show data from the current quarter',\n values: {\n dateRange: {\n start: new Date(new Date().getFullYear(), Math.floor(new Date().getMonth() / 3) * 3, 1)\n .toISOString()\n .split('T')[0],\n end: new Date().toISOString().split('T')[0],\n },\n },\n isDefault: false,\n createdAt: now,\n updatedAt: now,\n },\n ];\n}\n\n// ============================================================================\n// Hook\n// ============================================================================\n\nexport function useFilterPresets(dashboardId?: string): UseFilterPresetsResult {\n const [activePresetId, setActivePresetId] = useState<string | null>(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [currentDashboardId, setCurrentDashboardId] = useState<string | null>(dashboardId || null);\n\n // Use fe-libs storage hook for presets persistence (P0.3 compliance)\n const storageKey = useMemo(\n () => (currentDashboardId ? getStorageKey(currentDashboardId) : 'bigconsole_filter_presets_default'),\n [currentDashboardId]\n );\n const [presets, setPresets] = useLocalStorage<FilterPreset[]>(storageKey, getDefaultPresets());\n\n const filterValues = useGlobalFilterValues();\n const setGlobalFilterValues = useDashboardStore((state) => state.setGlobalFilterValues);\n const clearAllGlobalFilters = useDashboardStore((state) => state.clearAllGlobalFilters);\n\n // Load presets for a dashboard\n const loadPresets = useCallback(\n (id: string) => {\n setLoading(true);\n try {\n setCurrentDashboardId(id);\n // The presets will be automatically loaded from storage when currentDashboardId changes\n // due to the useMemo dependency on currentDashboardId\n } catch (err) {\n setError(err instanceof Error ? err : new Error('Failed to load presets'));\n } finally {\n setLoading(false);\n }\n },\n [setCurrentDashboardId]\n );\n\n // Load presets when dashboard ID changes\n useEffect(() => {\n if (dashboardId && dashboardId !== currentDashboardId) {\n setCurrentDashboardId(dashboardId);\n }\n }, [dashboardId, currentDashboardId]);\n\n // Create a new preset\n const createPreset = useCallback(\n (input: CreatePresetInput): FilterPreset => {\n const now = new Date().toISOString();\n const newPreset: FilterPreset = {\n id: generateId(),\n name: input.name,\n description: input.description,\n values: input.values || filterValues,\n isDefault: input.isDefault || false,\n createdAt: now,\n updatedAt: now,\n };\n\n // useLocalStorage hook handles persistence automatically\n setPresets((prev) => [...prev, newPreset]);\n\n return newPreset;\n },\n [filterValues, setPresets]\n );\n\n // Update an existing preset\n const updatePreset = useCallback(\n (input: UpdatePresetInput): FilterPreset | null => {\n const existingPreset = presets.find((p) => p.id === input.id);\n if (!existingPreset) {\n return null;\n }\n\n const updatedPreset: FilterPreset = {\n ...existingPreset,\n name: input.name ?? existingPreset.name,\n description: input.description ?? existingPreset.description,\n values: input.values ?? existingPreset.values,\n isDefault: input.isDefault ?? existingPreset.isDefault,\n updatedAt: new Date().toISOString(),\n };\n\n // useLocalStorage hook handles persistence automatically\n setPresets((prev) => prev.map((p) => (p.id === updatedPreset.id ? updatedPreset : p)));\n\n return updatedPreset;\n },\n [presets, setPresets]\n );\n\n // Delete a preset\n const deletePreset = useCallback(\n (id: string): boolean => {\n const existingPreset = presets.find((p) => p.id === id);\n if (!existingPreset) {\n return false;\n }\n\n // Don't allow deleting the default preset\n if (existingPreset.id === 'preset-default') {\n return false;\n }\n\n // useLocalStorage hook handles persistence automatically\n setPresets((prev) => prev.filter((p) => p.id !== id));\n\n // Clear active preset if it was deleted\n if (activePresetId === id) {\n setActivePresetId(null);\n }\n\n return true;\n },\n [presets, activePresetId, setPresets]\n );\n\n // Apply a preset (set filter values)\n const applyPreset = useCallback(\n (presetId: string) => {\n const preset = presets.find((p) => p.id === presetId);\n if (!preset) {\n return;\n }\n\n // If default preset with empty values, clear all filters\n if (preset.isDefault && Object.keys(preset.values).length === 0) {\n clearAllGlobalFilters();\n } else {\n // Apply preset values\n setGlobalFilterValues(preset.values);\n }\n\n setActivePresetId(presetId);\n },\n [presets, setGlobalFilterValues, clearAllGlobalFilters]\n );\n\n // Save current filter values as a new preset\n const saveCurrentAsPreset = useCallback(\n (name: string, description?: string): FilterPreset => {\n return createPreset({\n name,\n description,\n values: { ...filterValues },\n });\n },\n [createPreset, filterValues]\n );\n\n // Set a preset as the default\n const setDefaultPreset = useCallback(\n (presetId: string) => {\n // useLocalStorage hook handles persistence automatically\n setPresets((prev) =>\n prev.map((p) => ({\n ...p,\n isDefault: p.id === presetId,\n updatedAt: p.id === presetId ? new Date().toISOString() : p.updatedAt,\n }))\n );\n },\n [setPresets]\n );\n\n // Clear active preset\n const clearActivePreset = useCallback(() => {\n setActivePresetId(null);\n }, []);\n\n return {\n presets,\n activePresetId,\n loading,\n error,\n loadPresets,\n createPreset,\n updatePreset,\n deletePreset,\n applyPreset,\n saveCurrentAsPreset,\n setDefaultPreset,\n clearActivePreset,\n };\n}\n\nexport default useFilterPresets;\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useFilterUrlSync.d.ts","sourceRoot":"","sources":["../../../src/bigconsole/hooks/useFilterUrlSync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAWH,UAAU,uBAAuB;IAC/B,kCAAkC;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,iBAAiB;IACzB,8BAA8B;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,0BAA0B;IAC1B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,mDAAmD;IACnD,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,UAAU,mBAAmB;IAC3B,2CAA2C;IAC3C,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,6CAA6C;IAC7C,eAAe,EAAE,MAAM,MAAM,CAAC;IAC9B,uCAAuC;IACvC,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,0CAA0C;IAC1C,iBAAiB,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjD,sCAAsC;IACtC,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;IAC9C,2CAA2C;IAC3C,aAAa,EAAE,OAAO,CAAC;IACvB,8BAA8B;IAC9B,cAAc,EAAE,MAAM,CAAC;CACxB;AAMD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAmCxD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAsE/E;AAkBD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAa9F;AA4CD,mGAAmG;AACnG,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAYzG;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE,MAAM,GAAG,eAAe,CAgBzG;AAMD,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,uBAA4B,GAAG,mBAAmB,CAiL3F;AAED,eAAe,gBAAgB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useFilterUrlSync.js","names":[],"sources":["../../../src/bigconsole/hooks/useFilterUrlSync.ts"],"sourcesContent":["/**\n * useFilterUrlSync Hook\n *\n * Syncs global filter values to URL query parameters for sharing filtered views.\n * Supports all filter types: DATE_RANGE, CATEGORY, TEXT_SEARCH, NUMERIC_RANGE, CUSTOM\n *\n * Also handles drilldown context parameters:\n * - filter_* : Global filter values\n * - ctx_* : Drilldown context values (clicked item data)\n * - drilldown_* : Drilldown metadata (depth, parent, path)\n */\n\nimport { useEffect, useCallback, useRef, useMemo } from 'react';\nimport { useLocation } from 'react-router';\nimport { useGlobalFilterValues, useDashboardStore } from '../store';\nimport { CONTEXT_PARAM_PREFIX, FILTER_PARAM_PREFIX, DRILLDOWN_PARAM_PREFIX } from './useDrilldown';\n\n// ============================================================================\n// Types\n// ============================================================================\n\ninterface UseFilterUrlSyncOptions {\n /** Whether URL sync is enabled */\n enabled?: boolean;\n /** Prefix for URL params (default: 'filter_') */\n paramPrefix?: string;\n /** Debounce delay in ms for URL updates (default: 300) */\n debounceMs?: number;\n}\n\ninterface DrilldownMetadata {\n /** Current drilldown depth */\n depth: number;\n /** Parent dashboard ID */\n parent: string | null;\n /** Array of dashboard IDs in the drilldown path */\n path: string[];\n}\n\ninterface FilterUrlSyncResult {\n /** Manually sync current filters to URL */\n syncToUrl: () => void;\n /** Get shareable URL with current filters */\n getShareableUrl: () => string;\n /** Clear all filter params from URL */\n clearUrlParams: () => void;\n /** Get context params from URL (ctx_*) */\n getContextFromUrl: () => Record<string, unknown>;\n /** Get drilldown metadata from URL */\n getDrilldownMetadata: () => DrilldownMetadata;\n /** Check if currently in drilldown mode */\n isInDrilldown: boolean;\n /** Current drilldown depth */\n drilldownDepth: number;\n}\n\n// ============================================================================\n// Helpers\n// ============================================================================\n\n/**\n * Encode filter value for URL\n */\nexport function encodeFilterValue(value: unknown): string {\n if (value === null || value === undefined) {\n return '';\n }\n\n // Arrays use JSON so category labels containing commas remain distinct.\n if (Array.isArray(value)) {\n return JSON.stringify(value);\n }\n\n // Object types\n if (typeof value === 'object') {\n const obj = value as Record<string, unknown>;\n\n // Range objects retain their shape and optional bounds.\n if (obj.start || obj.end) {\n return JSON.stringify(obj);\n }\n\n // Numeric range.\n if (obj.min !== undefined || obj.max !== undefined) {\n return JSON.stringify(obj);\n }\n\n // Object with value property (category)\n if (obj.value !== undefined) {\n return JSON.stringify(obj.value);\n }\n\n // Generic object - JSON stringify\n return JSON.stringify(obj);\n }\n\n // Simple value\n return JSON.stringify(value);\n}\n\n/**\n * Decode filter value from URL\n */\nexport function decodeFilterValue(encoded: string, filterType?: string): unknown {\n if (!encoded) {\n return undefined;\n }\n\n // Current links use JSON for scalars/arrays to preserve commas, percent\n // sequences and primitive types. Parse that before decoding legacy values.\n try {\n return JSON.parse(encoded);\n } catch {\n // Legacy links use a second encoded layer or range notation.\n }\n\n // URLSearchParams already decodes the outer URL layer. Legacy links encoded\n // each value a second time; accept those without throwing on a literal percent.\n let decoded = encoded;\n try {\n decoded = decodeURIComponent(encoded);\n } catch {\n // A literal percent is valid filter text, not necessarily an escape.\n }\n if (decoded.startsWith('[') || decoded.startsWith('{')) {\n try {\n return JSON.parse(decoded);\n } catch {\n return decoded;\n }\n }\n\n // Date range\n if (filterType === 'DATE_RANGE' || (encoded.includes('T') && encoded.includes(','))) {\n const parts = encoded.split(',');\n if (parts.length === 2) {\n return {\n start: parts[0] || undefined,\n end: parts[1] || undefined,\n };\n }\n }\n\n // Numeric range (check if both parts are numbers)\n if (filterType === 'NUMERIC_RANGE' || /^-?\\d*\\.?\\d*,-?\\d*\\.?\\d*$/.test(encoded)) {\n const parts = encoded.split(',');\n if (parts.length === 2) {\n const min = parts[0] ? parseFloat(parts[0]) : undefined;\n const max = parts[1] ? parseFloat(parts[1]) : undefined;\n if (!isNaN(min as number) || !isNaN(max as number)) {\n return { min, max };\n }\n }\n }\n\n // Multi-select array\n if (encoded.includes(',') && filterType === 'CATEGORY') {\n return encoded.split(',').map((value) => {\n try {\n return decodeURIComponent(value);\n } catch {\n return value;\n }\n });\n }\n\n // Try to parse as JSON\n try {\n return JSON.parse(decoded);\n } catch {\n // Simple value\n return decoded;\n }\n}\n\n/**\n * Decode a context param value from URL\n */\nfunction decodeContextValue(encoded: string): unknown {\n if (!encoded) {\n return undefined;\n }\n const decoded = decodeURIComponent(encoded);\n // Try to parse as JSON\n try {\n return JSON.parse(decoded);\n } catch {\n return decoded;\n }\n}\n\n/**\n * Parse URL search params to filter values\n */\nexport function parseUrlToFilters(search: string, paramPrefix: string): Record<string, unknown> {\n const params = new URLSearchParams(search);\n const filters: Record<string, unknown> = {};\n\n params.forEach((value, key) => {\n if (key.startsWith(paramPrefix)) {\n const filterId = key.slice(paramPrefix.length);\n // Try to detect type from value format\n filters[filterId] = decodeFilterValue(value);\n }\n });\n\n return filters;\n}\n\n/**\n * Parse URL search params to context values\n */\nfunction parseUrlToContext(search: string): Record<string, unknown> {\n const params = new URLSearchParams(search);\n const context: Record<string, unknown> = {};\n\n params.forEach((value, key) => {\n if (key.startsWith(CONTEXT_PARAM_PREFIX)) {\n const contextKey = key.slice(CONTEXT_PARAM_PREFIX.length);\n context[contextKey] = decodeContextValue(value);\n }\n });\n\n return context;\n}\n\n/**\n * Parse drilldown metadata from URL\n */\nfunction parseUrlToDrilldownMetadata(search: string): DrilldownMetadata {\n const params = new URLSearchParams(search);\n const depthStr = params.get(`${DRILLDOWN_PARAM_PREFIX}depth`);\n const parent = params.get(`${DRILLDOWN_PARAM_PREFIX}parent`);\n const pathStr = params.get(`${DRILLDOWN_PARAM_PREFIX}path`);\n\n let path: string[] = [];\n if (pathStr) {\n try {\n path = JSON.parse(decodeURIComponent(pathStr));\n } catch {\n path = [];\n }\n }\n\n return {\n depth: depthStr ? parseInt(depthStr, 10) : 0,\n parent: parent || null,\n path,\n };\n}\n\n/** Current-route values include drilldown context; nothing from the previous board is retained. */\nexport function parseUrlToGlobalFilterValues(search: string, paramPrefix: string): Record<string, unknown> {\n const values = parseUrlToFilters(search, paramPrefix);\n Object.entries(parseUrlToContext(search)).forEach(([key, value]) => {\n values[`ctx_${key}`] = value;\n });\n const metadata = parseUrlToDrilldownMetadata(search);\n if (metadata.depth > 0) {\n values.__drilldown_depth = metadata.depth;\n values.__drilldown_parent = metadata.parent;\n values.__drilldown_path = metadata.path;\n }\n return values;\n}\n\n/**\n * Build URL search params from filter values\n */\nexport function filtersToUrlParams(filters: Record<string, unknown>, paramPrefix: string): URLSearchParams {\n const params = new URLSearchParams();\n\n Object.entries(filters).forEach(([filterId, value]) => {\n // Drilldown context already has ctx_/drilldown_ URL parameters. It is\n // available to widgets through the store, but is not a global filter.\n if (filterId.startsWith('ctx_') || filterId.startsWith('__drilldown_')) return;\n if (value !== undefined && value !== null && value !== '') {\n const encoded = encodeFilterValue(value);\n if (encoded) {\n params.set(`${paramPrefix}${filterId}`, encoded);\n }\n }\n });\n\n return params;\n}\n\n// ============================================================================\n// Hook\n// ============================================================================\n\nexport function useFilterUrlSync(options: UseFilterUrlSyncOptions = {}): FilterUrlSyncResult {\n const { enabled = true, paramPrefix = FILTER_PARAM_PREFIX, debounceMs = 300 } = options;\n\n // Use react-router's useLocation to react to URL changes\n const location = useLocation();\n\n const filterValues = useGlobalFilterValues();\n const setGlobalFilterValues = useDashboardStore((state) => state.setGlobalFilterValues);\n\n const hydratedLocation = useRef('');\n const lastSyncedValues = useRef<string>('');\n const debounceTimer = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n // Compute drilldown state from URL - now reactive to location.search changes\n const drilldownMetadata = useMemo(() => {\n if (typeof window === 'undefined') {\n return { depth: 0, parent: null, path: [] };\n }\n return parseUrlToDrilldownMetadata(location.search);\n }, [location.search]);\n\n const isInDrilldown = drilldownMetadata.depth > 0;\n const drilldownDepth = drilldownMetadata.depth;\n\n // Router navigation (including Back on the same dashboard) makes the URL\n // authoritative. Replace rather than merge so removed parameters clear values.\n useEffect(() => {\n if (!enabled) return;\n if (debounceTimer.current) clearTimeout(debounceTimer.current);\n const urlFilters = parseUrlToGlobalFilterValues(window.location.search, paramPrefix);\n const serialized = JSON.stringify(urlFilters);\n if (JSON.stringify(useDashboardStore.getState().globalFilterValues) !== serialized) {\n setGlobalFilterValues(urlFilters);\n }\n lastSyncedValues.current = serialized;\n hydratedLocation.current = `${location.key}:${location.pathname}:${location.search}`;\n }, [enabled, location.key, location.pathname, location.search, paramPrefix, setGlobalFilterValues]);\n\n // Sync filter values to URL when they change\n useEffect(() => {\n if (!enabled || !hydratedLocation.current) return;\n\n // Another URL-sync instance or the route initialization may have updated the\n // store after this render. Never schedule an old empty snapshot over it.\n if (JSON.stringify(filterValues) !== JSON.stringify(useDashboardStore.getState().globalFilterValues)) return;\n\n const currentValues = JSON.stringify(filterValues);\n\n // Skip if values haven't changed\n if (currentValues === lastSyncedValues.current) {\n return;\n }\n\n // Debounce URL updates\n if (debounceTimer.current) {\n clearTimeout(debounceTimer.current);\n }\n\n const pathname = location.pathname;\n debounceTimer.current = setTimeout(() => {\n if (window.location.pathname !== pathname) return;\n if (JSON.stringify(useDashboardStore.getState().globalFilterValues) !== currentValues) return;\n const params = filtersToUrlParams(filterValues, paramPrefix);\n\n // Get current URL without filter params (but keep other params like ctx_*, drilldown_*)\n const currentParams = new URLSearchParams(window.location.search);\n // Remove existing filter params only\n Array.from(currentParams.keys()).forEach((key) => {\n if (key.startsWith(paramPrefix)) {\n currentParams.delete(key);\n }\n });\n\n // Merge with new filter params\n params.forEach((value, key) => {\n currentParams.set(key, value);\n });\n\n const finalSearch = currentParams.toString();\n const newUrl = finalSearch ? `${window.location.pathname}?${finalSearch}` : window.location.pathname;\n\n // Update URL without triggering navigation\n window.history.replaceState({ ...window.history.state, filters: filterValues }, '', newUrl);\n\n lastSyncedValues.current = currentValues;\n }, debounceMs);\n\n return () => {\n if (debounceTimer.current) {\n clearTimeout(debounceTimer.current);\n }\n };\n }, [enabled, filterValues, paramPrefix, debounceMs, location.pathname, location.key, location.search]);\n\n // Manual sync to URL\n const syncToUrl = useCallback(() => {\n if (!enabled) return;\n\n const params = filtersToUrlParams(filterValues, paramPrefix);\n const currentParams = new URLSearchParams(window.location.search);\n\n // Remove existing filter params only\n Array.from(currentParams.keys()).forEach((key) => {\n if (key.startsWith(paramPrefix)) {\n currentParams.delete(key);\n }\n });\n\n // Merge with new filter params\n params.forEach((value, key) => {\n currentParams.set(key, value);\n });\n\n const finalSearch = currentParams.toString();\n const newUrl = finalSearch ? `${window.location.pathname}?${finalSearch}` : window.location.pathname;\n\n window.history.replaceState({ ...window.history.state, filters: filterValues }, '', newUrl);\n\n lastSyncedValues.current = JSON.stringify(filterValues);\n }, [enabled, filterValues, paramPrefix]);\n\n // Get shareable URL\n const getShareableUrl = useCallback((): string => {\n const params = filtersToUrlParams(filterValues, paramPrefix);\n const baseUrl = `${window.location.origin}${window.location.pathname}`;\n\n // Preserve non-filter params (ctx_*, drilldown_*)\n const currentParams = new URLSearchParams(window.location.search);\n Array.from(currentParams.keys()).forEach((key) => {\n if (!key.startsWith(paramPrefix)) {\n params.set(key, currentParams.get(key) || '');\n }\n });\n\n const search = params.toString();\n return search ? `${baseUrl}?${search}` : baseUrl;\n }, [filterValues, paramPrefix]);\n\n // Clear all filter params from URL\n const clearUrlParams = useCallback(() => {\n const currentParams = new URLSearchParams(window.location.search);\n\n // Remove filter params only (keep ctx_*, drilldown_*)\n Array.from(currentParams.keys()).forEach((key) => {\n if (key.startsWith(paramPrefix)) {\n currentParams.delete(key);\n }\n });\n\n const finalSearch = currentParams.toString();\n const newUrl = finalSearch ? `${window.location.pathname}?${finalSearch}` : window.location.pathname;\n\n // Keep the router's history state (its `key`/`idx`): wiping it breaks Back\n // navigation across drilldowns and page switches (BOFF-7625).\n window.history.replaceState(window.history.state, '', newUrl);\n lastSyncedValues.current = '{}';\n }, [paramPrefix]);\n\n // Get context params from URL\n const getContextFromUrl = useCallback((): Record<string, unknown> => {\n return parseUrlToContext(window.location.search);\n }, []);\n\n // Get drilldown metadata from URL\n const getDrilldownMetadata = useCallback((): DrilldownMetadata => {\n return parseUrlToDrilldownMetadata(window.location.search);\n }, []);\n\n return {\n syncToUrl,\n getShareableUrl,\n clearUrlParams,\n getContextFromUrl,\n getDrilldownMetadata,\n isInDrilldown,\n drilldownDepth,\n };\n}\n\nexport default useFilterUrlSync;\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useGlobalFilters.d.ts","sourceRoot":"","sources":["../../../src/bigconsole/hooks/useGlobalFilters.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useGlobalFilters.js","names":[],"sources":["../../../src/bigconsole/hooks/useGlobalFilters.ts"],"sourcesContent":["/**\n * useGlobalFilters Hook\n *\n * Provides operations for managing dashboard global filters.\n * Supports local-only mode for development/testing when GraphQL backend is unavailable.\n *\n * Uses @burdenoff/fe-libs storage hooks for proper storage management (P0.3 compliance).\n */\n\nimport { useCallback, useState, useRef } from 'react';\nimport { useApolloClient } from '@apollo/client/react';\nimport { useLocalStorage } from '@burdenoff/fe-libs/shared/hooks';\nimport {\n CreateGlobalFilterDocument,\n UpdateGlobalFilterDocument,\n DeleteGlobalFilterDocument,\n ReorderGlobalFiltersDocument,\n GetDashboardDocument,\n} from '../../generated/wspace-operations';\n\n// Enable local-only mode for development (set to false to use GraphQL backend)\nconst USE_LOCAL_MODE = false;\n\n// Helper to generate unique IDs\nfunction generateId(): string {\n return `local-filter-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;\n}\n\n// Local storage key for persisting filters during development\nconst STORAGE_KEY = 'bigconsole_local_filters';\n\n// Type for stored filters by dashboard\ntype StoredFilters = Record<string, GlobalFilter[]>;\n\n// ============================================================================\n// Types\n// ============================================================================\n\n/**\n * Filter types as per spec (03-graphql-contract.md)\n * Spec values: date_range, category, custom, numeric_range, text_search\n */\nexport type FilterType = 'DATE_RANGE' | 'CATEGORY' | 'CUSTOM' | 'NUMERIC_RANGE' | 'TEXT_SEARCH';\n\nexport interface GlobalFilter {\n id: string;\n dashboardId: string;\n name: string;\n type: FilterType;\n config: Record<string, unknown>;\n defaultValue?: unknown;\n isRequired: boolean;\n order: number;\n dependsOn?: string;\n cascadeConfig?: Record<string, unknown>;\n cascadeDepth: number;\n version: number;\n metadata?: Record<string, unknown>;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface CreateGlobalFilterInput {\n dashboardId: string;\n name: string;\n type: FilterType;\n config: Record<string, unknown>;\n defaultValue?: unknown;\n isRequired?: boolean;\n dependsOn?: string;\n cascadeConfig?: Record<string, unknown>;\n metadata?: Record<string, unknown>;\n}\n\nexport interface UpdateGlobalFilterInput {\n id: string;\n name?: string;\n config?: Record<string, unknown>;\n defaultValue?: unknown;\n isRequired?: boolean;\n order?: number;\n dependsOn?: string;\n cascadeConfig?: Record<string, unknown>;\n metadata?: Record<string, unknown>;\n}\n\nexport interface UseGlobalFiltersResult {\n filters: GlobalFilter[];\n activeValues: Record<string, unknown>;\n loading: boolean;\n error: Error | null;\n\n // Operations\n fetchFilters: (dashboardId: string) => Promise<GlobalFilter[]>;\n createFilter: (input: CreateGlobalFilterInput) => Promise<GlobalFilter | null>;\n updateFilter: (input: UpdateGlobalFilterInput) => Promise<GlobalFilter | null>;\n deleteFilter: (id: string) => Promise<boolean>;\n reorderFilters: (dashboardId: string, filterIds: string[]) => Promise<GlobalFilter[]>;\n setFilterValue: (filterId: string, value: unknown) => void;\n resetFilters: () => void;\n getFilterValues: () => Record<string, unknown>;\n}\n\n// ============================================================================\n// Helper Functions\n// ============================================================================\n\nfunction normalizeFilter(data: Record<string, unknown>): GlobalFilter {\n return {\n id: data.id as string,\n dashboardId: data.dashboardId as string,\n name: data.name as string,\n type: data.type as FilterType,\n config: (data.config as Record<string, unknown>) || {},\n defaultValue: data.defaultValue,\n isRequired: (data.isRequired as boolean) || false,\n order: (data.order as number) || 0,\n dependsOn: data.dependsOn as string | undefined,\n cascadeConfig: data.cascadeConfig as Record<string, unknown> | undefined,\n cascadeDepth: (data.cascadeDepth as number) || 0,\n version: (data.version as number) || 1,\n metadata: data.metadata as Record<string, unknown> | undefined,\n createdAt: (data.createdAt as string) || new Date().toISOString(),\n updatedAt: (data.updatedAt as string) || new Date().toISOString(),\n };\n}\n\n// ============================================================================\n// Hook\n// ============================================================================\n\nexport function useGlobalFilters(): UseGlobalFiltersResult {\n const [filters, setFilters] = useState<GlobalFilter[]>([]);\n const [activeValues, setActiveValues] = useState<Record<string, unknown>>({});\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const currentDashboardId = useRef<string>('');\n\n // Use fe-libs storage hook for local mode persistence (P0.3 compliance)\n const [storedFilters, setStoredFilters] = useLocalStorage<StoredFilters>(STORAGE_KEY, {});\n\n const apolloClient = useApolloClient();\n\n // Helper functions that use the fe-libs storage hook\n const loadLocalFilters = useCallback(\n (dashboardId: string): GlobalFilter[] => {\n const dashboardFilters = storedFilters[dashboardId];\n if (dashboardFilters) {\n return dashboardFilters.map((f) => normalizeFilter(f as unknown as Record<string, unknown>));\n }\n return [];\n },\n [storedFilters]\n );\n\n const saveLocalFilters = useCallback(\n (dashboardId: string, newFilters: GlobalFilter[]): void => {\n setStoredFilters((prev) => ({\n ...prev,\n [dashboardId]: newFilters,\n }));\n },\n [setStoredFilters]\n );\n\n // Fetch filters for a dashboard\n const fetchFilters = useCallback(\n async (dashboardId: string): Promise<GlobalFilter[]> => {\n currentDashboardId.current = dashboardId;\n\n // LOCAL MODE: Load from storage via fe-libs hook\n if (USE_LOCAL_MODE) {\n setLoading(true);\n try {\n const localFilters = loadLocalFilters(dashboardId);\n setFilters(localFilters);\n\n // Initialize active values with defaults\n const defaults: Record<string, unknown> = {};\n localFilters.forEach((filter: GlobalFilter) => {\n if (filter.defaultValue !== undefined) {\n defaults[filter.id] = filter.defaultValue;\n }\n });\n setActiveValues((prev) => ({ ...defaults, ...prev }));\n\n return localFilters;\n } finally {\n setLoading(false);\n }\n }\n\n // GRAPHQL MODE: Fetch from backend\n try {\n setLoading(true);\n setError(null);\n\n // Filters are returned as part of the dashboard query\n const result = await apolloClient.query<Record<string, unknown>>({\n query: GetDashboardDocument,\n variables: { id: dashboardId },\n fetchPolicy: 'network-only',\n });\n\n const dashboard = result.data?.getDashboard as Record<string, unknown> | undefined;\n const rawFilters = (dashboard?.globalFilters as Record<string, unknown>[]) || [];\n const normalizedFilters = rawFilters\n .map(normalizeFilter)\n .sort((a: GlobalFilter, b: GlobalFilter) => a.order - b.order);\n\n setFilters(normalizedFilters);\n\n // Initialize active values with defaults\n const defaults: Record<string, unknown> = {};\n normalizedFilters.forEach((filter: GlobalFilter) => {\n if (filter.defaultValue !== undefined) {\n defaults[filter.id] = filter.defaultValue;\n }\n });\n setActiveValues((prev) => ({ ...defaults, ...prev }));\n\n return normalizedFilters;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to fetch filters');\n setError(error);\n return [];\n } finally {\n setLoading(false);\n }\n },\n [apolloClient]\n );\n\n // Create a new filter\n const createFilter = useCallback(\n async (input: CreateGlobalFilterInput): Promise<GlobalFilter | null> => {\n // LOCAL MODE: Create locally and save to localStorage\n if (USE_LOCAL_MODE) {\n setLoading(true);\n try {\n const newFilter: GlobalFilter = {\n id: generateId(),\n dashboardId: input.dashboardId,\n name: input.name,\n type: input.type,\n config: input.config || {},\n defaultValue: input.defaultValue,\n isRequired: input.isRequired || false,\n order: filters.length,\n dependsOn: input.dependsOn,\n cascadeConfig: input.cascadeConfig,\n cascadeDepth: 0,\n version: 1,\n metadata: input.metadata,\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n };\n\n const updatedFilters = [...filters, newFilter].sort((a, b) => a.order - b.order);\n setFilters(updatedFilters);\n saveLocalFilters(input.dashboardId, updatedFilters);\n\n // Set default value if provided\n if (newFilter.defaultValue !== undefined) {\n setActiveValues((prev) => ({ ...prev, [newFilter.id]: newFilter.defaultValue }));\n }\n\n return newFilter;\n } finally {\n setLoading(false);\n }\n }\n\n // GRAPHQL MODE: Create via backend\n try {\n setLoading(true);\n setError(null);\n\n const result = await apolloClient.mutate<Record<string, unknown>>({\n mutation: CreateGlobalFilterDocument,\n variables: { input },\n });\n\n const createResult = result.data?.createGlobalFilter as Record<string, unknown> | undefined;\n if (createResult) {\n const newFilter = normalizeFilter(createResult);\n setFilters((prev) => [...prev, newFilter].sort((a, b) => a.order - b.order));\n\n // Set default value if provided\n if (newFilter.defaultValue !== undefined) {\n setActiveValues((prev) => ({ ...prev, [newFilter.id]: newFilter.defaultValue }));\n }\n\n await fetchFilters(newFilter.dashboardId);\n return newFilter;\n }\n\n return null;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to create filter');\n setError(error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [apolloClient, filters, fetchFilters]\n );\n\n // Update a filter\n const updateFilter = useCallback(\n async (input: UpdateGlobalFilterInput): Promise<GlobalFilter | null> => {\n // LOCAL MODE: Update locally and save to localStorage\n if (USE_LOCAL_MODE) {\n setLoading(true);\n try {\n const existingFilter = filters.find((f) => f.id === input.id);\n if (!existingFilter) {\n return null;\n }\n\n const updatedFilter: GlobalFilter = {\n ...existingFilter,\n name: input.name ?? existingFilter.name,\n config: input.config ?? existingFilter.config,\n defaultValue: input.defaultValue ?? existingFilter.defaultValue,\n isRequired: input.isRequired ?? existingFilter.isRequired,\n order: input.order ?? existingFilter.order,\n dependsOn: input.dependsOn ?? existingFilter.dependsOn,\n cascadeConfig: input.cascadeConfig ?? existingFilter.cascadeConfig,\n metadata: input.metadata ?? existingFilter.metadata,\n version: existingFilter.version + 1,\n updatedAt: new Date().toISOString(),\n };\n\n const updatedFilters = filters\n .map((f) => (f.id === updatedFilter.id ? updatedFilter : f))\n .sort((a, b) => a.order - b.order);\n setFilters(updatedFilters);\n saveLocalFilters(existingFilter.dashboardId, updatedFilters);\n\n return updatedFilter;\n } finally {\n setLoading(false);\n }\n }\n\n // GRAPHQL MODE: Update via backend\n try {\n setLoading(true);\n setError(null);\n\n const result = await apolloClient.mutate<Record<string, unknown>>({\n mutation: UpdateGlobalFilterDocument,\n variables: { input },\n });\n\n const updateResult = result.data?.updateGlobalFilter as Record<string, unknown> | undefined;\n if (updateResult) {\n const updatedFilter = normalizeFilter(updateResult);\n setFilters((prev) =>\n prev.map((f) => (f.id === updatedFilter.id ? updatedFilter : f)).sort((a, b) => a.order - b.order)\n );\n await fetchFilters(updatedFilter.dashboardId);\n return updatedFilter;\n }\n\n return null;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to update filter');\n setError(error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [apolloClient, filters, fetchFilters]\n );\n\n // Delete a filter\n const deleteFilter = useCallback(\n async (id: string): Promise<boolean> => {\n // LOCAL MODE: Delete locally and save to localStorage\n if (USE_LOCAL_MODE) {\n setLoading(true);\n try {\n const existingFilter = filters.find((f) => f.id === id);\n if (!existingFilter) {\n return false;\n }\n\n const updatedFilters = filters.filter((f) => f.id !== id);\n setFilters(updatedFilters);\n saveLocalFilters(existingFilter.dashboardId, updatedFilters);\n\n setActiveValues((prev) => Object.fromEntries(Object.entries(prev).filter(([key]) => key !== id)));\n\n return true;\n } finally {\n setLoading(false);\n }\n }\n\n // GRAPHQL MODE: Delete via backend\n try {\n setLoading(true);\n setError(null);\n\n const result = await apolloClient.mutate<Record<string, unknown>>({\n mutation: DeleteGlobalFilterDocument,\n variables: { id },\n });\n\n if (result.data?.deleteGlobalFilter) {\n setFilters((prev) => prev.filter((f) => f.id !== id));\n setActiveValues((prev) => Object.fromEntries(Object.entries(prev).filter(([key]) => key !== id)));\n return true;\n }\n\n return false;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to delete filter');\n setError(error);\n return false;\n } finally {\n setLoading(false);\n }\n },\n [apolloClient, filters]\n );\n\n // Reorder filters\n const reorderFilters = useCallback(\n async (dashboardId: string, filterIds: string[]): Promise<GlobalFilter[]> => {\n // LOCAL MODE: Reorder locally and save to localStorage\n if (USE_LOCAL_MODE) {\n setLoading(true);\n try {\n const reorderedFilters = filterIds\n .map((id, index) => {\n const filter = filters.find((f) => f.id === id);\n return filter ? { ...filter, order: index } : null;\n })\n .filter((f): f is GlobalFilter => f !== null);\n\n setFilters(reorderedFilters);\n saveLocalFilters(dashboardId, reorderedFilters);\n\n return reorderedFilters;\n } finally {\n setLoading(false);\n }\n }\n\n // GRAPHQL MODE: Reorder via backend\n try {\n setLoading(true);\n setError(null);\n\n const result = await apolloClient.mutate<Record<string, unknown>>({\n mutation: ReorderGlobalFiltersDocument,\n variables: { dashboardId, filterIds },\n });\n\n const reorderResult = result.data?.reorderGlobalFilters as Record<string, unknown>[] | undefined;\n if (reorderResult) {\n const reorderedFilters = reorderResult.map(normalizeFilter);\n setFilters(reorderedFilters);\n return reorderedFilters;\n }\n\n return [];\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to reorder filters');\n setError(error);\n return [];\n } finally {\n setLoading(false);\n }\n },\n [apolloClient, filters]\n );\n\n // Set a filter value locally\n const setFilterValue = useCallback((filterId: string, value: unknown) => {\n setActiveValues((prev) => ({ ...prev, [filterId]: value }));\n }, []);\n\n // Reset all filter values to defaults\n const resetFilters = useCallback(() => {\n const resetDefaults: Record<string, unknown> = {};\n filters.forEach((filter) => {\n if (filter.defaultValue !== undefined) {\n resetDefaults[filter.id] = filter.defaultValue;\n }\n });\n setActiveValues(resetDefaults);\n }, [filters]);\n\n // Get current filter values\n const getFilterValues = useCallback(() => {\n return { ...activeValues };\n }, [activeValues]);\n\n return {\n filters,\n activeValues,\n loading,\n error,\n fetchFilters,\n createFilter,\n updateFilter,\n deleteFilter,\n reorderFilters,\n setFilterValue,\n resetFilters,\n getFilterValues,\n };\n}\n\nexport default useGlobalFilters;\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useImportDashboard.d.ts","sourceRoot":"","sources":["../../../src/bigconsole/hooks/useImportDashboard.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useImportDashboard.js","names":[],"sources":["../../../src/bigconsole/hooks/useImportDashboard.ts"],"sourcesContent":["/**\n * useImportDashboard Hook\n *\n * Provides dashboard import functionality with validation and conflict resolution.\n * Supports both creating new dashboards and updating existing ones on re-import.\n */\n\nimport { useCallback, useState } from 'react';\nimport { useApolloClient } from '@apollo/client/react';\nimport {\n ValidateDashboardImportDocument,\n ImportDashboardDocument,\n UpdateDashboardDocument,\n GetDashboardDocument,\n} from '../../generated/wspace-operations';\nimport type { DashboardFullFieldsFragment } from '../../generated/wspace-operations';\nimport { createBigConsoleQuotaError, isBigConsoleQuotaError } from '../utils/quota';\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface ImportDashboardInfo {\n name: string;\n description?: string;\n pageCount: number;\n widgetCount: number;\n exportedAt?: string;\n exportedFrom?: string;\n schemaVersion: string;\n}\n\nexport interface ImportValidationError {\n code: string;\n message: string;\n path?: string;\n}\n\nexport interface ImportValidationWarning {\n code: string;\n message: string;\n path?: string;\n suggestion?: string;\n}\n\nexport interface ImportValidationResult {\n isValid: boolean;\n dashboardInfo: ImportDashboardInfo;\n errors: ImportValidationError[];\n warnings: ImportValidationWarning[];\n}\n\nexport interface ImportStats {\n pagesCreated: number;\n widgetsCreated: number;\n actionsCreated: number;\n filtersCreated: number;\n translationsCreated: number;\n dataSourcesSkipped: number;\n webhooksSkipped: number;\n}\n\nexport interface ImportDashboardResult {\n success: boolean;\n dashboard?: {\n id: string;\n name: string;\n };\n errorMessage?: string;\n stats?: ImportStats;\n /** Whether the original dashboard was also updated */\n originalUpdated?: boolean;\n /** The original dashboard that was updated (if any) */\n originalDashboard?: {\n id: string;\n name: string;\n };\n /** Whether the entity already exists with no changes (show \"already exists\" popup) */\n alreadyExists?: boolean;\n}\n\nexport interface ImportDashboardOptions {\n /** Override dashboard name (optional) */\n name?: string;\n /** Target visibility (optional, defaults to PRIVATE) */\n visibility?: 'PRIVATE' | 'TEAM' | 'PUBLIC';\n /** Skip validation warnings (default: false) */\n skipWarnings?: boolean;\n}\n\nexport interface UseImportDashboardResult {\n /** Loading state */\n loading: boolean;\n /** Error state */\n error: Error | null;\n /** Last validation result */\n validationResult: ImportValidationResult | null;\n /** Last import result */\n importResult: ImportDashboardResult | null;\n /** Validate import content without importing */\n validateImport: (content: string) => Promise<ImportValidationResult | null>;\n /** Import dashboard from JSON content */\n importDashboard: (content: string, options?: ImportDashboardOptions) => Promise<ImportDashboardResult | null>;\n /** Import dashboard from file */\n importFromFile: (file: File, options?: ImportDashboardOptions) => Promise<ImportDashboardResult | null>;\n /** Clear state */\n clearState: () => void;\n}\n\n// ============================================================================\n// Helper: Read file as text\n// ============================================================================\n\nfunction readFileAsText(file: File): Promise<string> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = (e) => {\n const result = e.target?.result;\n if (typeof result === 'string') {\n resolve(result);\n } else {\n reject(new Error('Failed to read file as text'));\n }\n };\n reader.onerror = () => reject(new Error('Failed to read file'));\n reader.readAsText(file);\n });\n}\n\n/**\n * Recursively remove __typename fields from an object\n * This is necessary because exported data contains __typename fields\n * which are not accepted by GraphQL input types\n */\nfunction stripTypename<T>(obj: T): T {\n if (obj === null || obj === undefined) {\n return obj;\n }\n\n if (Array.isArray(obj)) {\n return obj.map((item) => stripTypename(item)) as T;\n }\n\n if (typeof obj === 'object') {\n const cleaned: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(obj as Record<string, unknown>)) {\n if (key !== '__typename') {\n cleaned[key] = stripTypename(value);\n }\n }\n return cleaned as T;\n }\n\n return obj;\n}\n\n/**\n * Extract dashboard ID from imported JSON content\n * The ID is injected during export for re-import update support\n */\nfunction extractDashboardIdFromContent(content: string): string | null {\n try {\n const parsed = JSON.parse(content);\n // Check both locations where ID might be stored\n return parsed.exportedFrom?.dashboardId || parsed.dashboard?.id || null;\n } catch {\n return null;\n }\n}\n\n// ============================================================================\n// Hook\n// ============================================================================\n\nexport function useImportDashboard(): UseImportDashboardResult {\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [validationResult, setValidationResult] = useState<ImportValidationResult | null>(null);\n const [importResult, setImportResult] = useState<ImportDashboardResult | null>(null);\n\n const apolloClient = useApolloClient();\n\n // Validate import content\n const validateImport = useCallback(\n async (content: string): Promise<ImportValidationResult | null> => {\n try {\n setLoading(true);\n setError(null);\n\n const result = await apolloClient.query<Record<string, unknown>>({\n query: ValidateDashboardImportDocument,\n variables: { content },\n fetchPolicy: 'network-only',\n });\n\n const validation = result.data?.validateDashboardImport as ImportValidationResult | undefined;\n\n if (validation) {\n setValidationResult(validation);\n return validation;\n }\n\n throw new Error('Validation returned empty result');\n } catch (err) {\n const validationError = err instanceof Error ? err : new Error('Failed to validate import');\n setError(validationError);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [apolloClient]\n );\n\n // Import dashboard from JSON content\n // Logic (DECLARATIVE - idempotent re-import):\n // 1. If original dashboard ID exists in JSON, check if original still exists\n // 2. If original exists → UPDATE it with the JSON data (no new copy created)\n // 3. If original doesn't exist → CREATE a new dashboard via ImportDashboard mutation\n // This ensures re-importing the same JSON is idempotent and updates the existing entity\n const importDashboard = useCallback(\n async (content: string, options: ImportDashboardOptions = {}): Promise<ImportDashboardResult | null> => {\n try {\n setLoading(true);\n setError(null);\n\n // Parse the content to get dashboard data\n const parsed = JSON.parse(content);\n const dashboardData = parsed.dashboard;\n\n // Extract original dashboard ID from the JSON (if it was exported from an existing dashboard)\n const originalDashboardId = extractDashboardIdFromContent(content);\n let originalUpdated = false;\n let originalDashboardInfo: { id: string; name: string } | undefined;\n\n // Step 1: Check if original dashboard exists and update it\n if (originalDashboardId) {\n try {\n const getDashboardResult = await apolloClient.query<{ getDashboard?: DashboardFullFieldsFragment }>({\n query: GetDashboardDocument,\n variables: { id: originalDashboardId },\n fetchPolicy: 'network-only',\n });\n\n const existingDashboard = getDashboardResult.data?.getDashboard;\n\n if (existingDashboard) {\n // Compare to detect changes (excluding name - we don't update the original's name)\n const hasChanges =\n (existingDashboard.description || '') !== (dashboardData.description || '') ||\n existingDashboard.category !== dashboardData.category ||\n existingDashboard.visibility !== dashboardData.visibility ||\n JSON.stringify(existingDashboard.layout) !== JSON.stringify(dashboardData.layout) ||\n JSON.stringify(existingDashboard.metadata) !== JSON.stringify(dashboardData.metadata) ||\n JSON.stringify(existingDashboard.context) !== JSON.stringify(dashboardData.context);\n\n // Update original if there are changes\n // Note: We intentionally do NOT update the name - the original keeps its name\n // Use stripTypename to remove __typename fields from nested objects\n if (hasChanges) {\n const updateInput = {\n id: originalDashboardId,\n name: existingDashboard.name, // Keep original name\n description: dashboardData.description || undefined,\n category: dashboardData.category || undefined,\n layout: stripTypename(dashboardData.layout) || undefined,\n visibility: dashboardData.visibility || undefined,\n metadata: stripTypename(dashboardData.metadata) || undefined,\n context: stripTypename(dashboardData.context) || undefined,\n translations: stripTypename(dashboardData.translations) || undefined,\n };\n\n const updateResult = await apolloClient.mutate<{\n updateBigConsoleDashboard?: DashboardFullFieldsFragment;\n }>({\n mutation: UpdateDashboardDocument,\n variables: { input: updateInput },\n });\n\n const updatedDashboard = updateResult.data?.updateBigConsoleDashboard;\n if (updatedDashboard) {\n originalUpdated = true;\n originalDashboardInfo = {\n id: updatedDashboard.id,\n name: updatedDashboard.name,\n };\n }\n } else {\n // No changes - entity already exists with same data\n // Return with alreadyExists flag so UI can show \"already exists\" popup\n originalDashboardInfo = {\n id: existingDashboard.id,\n name: existingDashboard.name,\n };\n const alreadyExistsResult: ImportDashboardResult = {\n success: true,\n dashboard: originalDashboardInfo,\n originalUpdated: false,\n originalDashboard: originalDashboardInfo,\n alreadyExists: true,\n };\n setImportResult(alreadyExistsResult);\n return alreadyExistsResult;\n }\n\n // If original was updated, return success with the updated dashboard info\n const finalResult: ImportDashboardResult = {\n success: true,\n dashboard: originalDashboardInfo,\n originalUpdated,\n originalDashboard: originalDashboardInfo,\n alreadyExists: false,\n };\n setImportResult(finalResult);\n return finalResult;\n }\n // If original doesn't exist, continue to create a new dashboard\n } catch (fetchErr) {\n // Original dashboard fetch failed (might not exist), continue with import\n console.warn('Could not fetch original dashboard:', fetchErr);\n }\n }\n\n // Step 2: Create a NEW dashboard only if original doesn't exist\n // (This happens when importing for the first time, or if original was deleted)\n const result = await apolloClient.mutate<Record<string, unknown>>({\n mutation: ImportDashboardDocument,\n variables: {\n input: {\n content,\n name: options.name,\n visibility: options.visibility,\n skipWarnings: options.skipWarnings ?? false,\n },\n },\n });\n\n if (isBigConsoleQuotaError(result)) {\n throw createBigConsoleQuotaError(result);\n }\n\n const importRes = result.data?.importBigConsoleDashboard as ImportDashboardResult | undefined;\n\n if (importRes) {\n const finalResult: ImportDashboardResult = {\n ...importRes,\n originalUpdated: false,\n originalDashboard: undefined,\n };\n setImportResult(finalResult);\n return finalResult;\n }\n\n throw new Error('Import returned empty result');\n } catch (err) {\n if (isBigConsoleQuotaError(err)) {\n throw err;\n }\n const importError = err instanceof Error ? err : new Error('Failed to import dashboard');\n setError(importError);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [apolloClient]\n );\n\n // Import dashboard from file\n const importFromFile = useCallback(\n async (file: File, options: ImportDashboardOptions = {}): Promise<ImportDashboardResult | null> => {\n try {\n // Validate file type\n if (!file.name.endsWith('.json')) {\n throw new Error('Invalid file type. Please select a JSON file.');\n }\n\n // Read file content\n const content = await readFileAsText(file);\n\n // Validate JSON format\n try {\n JSON.parse(content);\n } catch {\n throw new Error('Invalid JSON format. Please select a valid export file.');\n }\n\n // Perform import\n return await importDashboard(content, options);\n } catch (err) {\n const fileError = err instanceof Error ? err : new Error('Failed to import from file');\n setError(fileError);\n return null;\n }\n },\n [importDashboard]\n );\n\n // Clear state\n const clearState = useCallback(() => {\n setError(null);\n setValidationResult(null);\n setImportResult(null);\n }, []);\n\n return {\n loading,\n error,\n validationResult,\n importResult,\n validateImport,\n importDashboard,\n importFromFile,\n clearState,\n };\n}\n\nexport default useImportDashboard;\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useImportDataSink.d.ts","sourceRoot":"","sources":["../../../src/bigconsole/hooks/useImportDataSink.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,6BAA6B;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,8BAA8B;IAC7C,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACxC,MAAM,EAAE,6BAA6B,EAAE,CAAC;CACzC;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE;QACT,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QACpB,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qDAAqD;IACrD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,sDAAsD;IACtD,gBAAgB,CAAC,EAAE;QACjB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QACpB,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,sFAAsF;IACtF,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,qBAAqB;IACpC,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qEAAqE;IACrE,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,uBAAuB;IACtC,oBAAoB;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,kBAAkB;IAClB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,6BAA6B;IAC7B,gBAAgB,EAAE,8BAA8B,GAAG,IAAI,CAAC;IACxD,yBAAyB;IACzB,YAAY,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC1C,gDAAgD;IAChD,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,8BAA8B,CAAC;IACpE,wCAAwC;IACxC,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,KAAK,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IAC3G,gCAAgC;IAChC,cAAc,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,qBAAqB,KAAK,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IACtG,8CAA8C;IAC9C,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACtD,kBAAkB;IAClB,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAkMD,wBAAgB,iBAAiB,IAAI,uBAAuB,CAyQ3D;AAED,eAAe,iBAAiB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useImportDataSink.js","names":[],"sources":["../../../src/bigconsole/hooks/useImportDataSink.ts"],"sourcesContent":["/**\n * useImportDataSink Hook\n *\n * Provides DataSink import functionality with validation and conflict resolution.\n * Supports both creating new DataSinks and updating existing ones on re-import.\n */\n\nimport { useCallback, useState } from 'react';\nimport { useApolloClient } from '@apollo/client/react';\nimport { CreateDataSinkDocument, UpdateDataSinkDocument, GetDataSinkDocument } from '../../generated/wspace-operations';\nimport type { DataSink, CreateDataSinkInput } from '../types';\nimport { createBigConsoleQuotaError, isBigConsoleQuotaError } from '../utils/quota';\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface ImportDataSinkInfo {\n name: string | null;\n description: string | null;\n key: string;\n status: string;\n setupState: string;\n exportedAt?: string;\n exportedFrom?: string;\n schemaVersion: string;\n}\n\nexport interface ImportDataSinkValidationError {\n code: string;\n message: string;\n path?: string;\n}\n\nexport interface ImportDataSinkValidationResult {\n isValid: boolean;\n dataSinkInfo: ImportDataSinkInfo | null;\n errors: ImportDataSinkValidationError[];\n}\n\nexport interface ImportDataSinkResult {\n success: boolean;\n dataSink?: {\n id: string;\n name: string | null;\n key: string;\n };\n errorMessage?: string;\n /** Whether the original DataSink was also updated */\n originalUpdated?: boolean;\n /** The original DataSink that was updated (if any) */\n originalDataSink?: {\n id: string;\n name: string | null;\n key: string;\n };\n /** Whether the entity already exists with no changes (show \"already exists\" popup) */\n alreadyExists?: boolean;\n}\n\nexport interface ImportDataSinkOptions {\n /** Override DataSink name (optional) */\n name?: string;\n /** Override DataSink key (optional - required to avoid conflicts) */\n key?: string;\n}\n\nexport interface UseImportDataSinkResult {\n /** Loading state */\n loading: boolean;\n /** Error state */\n error: Error | null;\n /** Last validation result */\n validationResult: ImportDataSinkValidationResult | null;\n /** Last import result */\n importResult: ImportDataSinkResult | null;\n /** Validate import content without importing */\n validateImport: (content: string) => ImportDataSinkValidationResult;\n /** Import DataSink from JSON content */\n importDataSink: (content: string, options?: ImportDataSinkOptions) => Promise<ImportDataSinkResult | null>;\n /** Import DataSink from file */\n importFromFile: (file: File, options?: ImportDataSinkOptions) => Promise<ImportDataSinkResult | null>;\n /** Extract DataSink ID from import content */\n extractDataSinkId: (content: string) => string | null;\n /** Clear state */\n clearState: () => void;\n}\n\ninterface ImportedDataSinkPayload {\n id?: string;\n name?: string | null;\n description?: string | null;\n key?: string;\n config?: Record<string, unknown> | null;\n data?: Record<string, unknown>;\n ttl?: number;\n fieldMaskingEnabled?: boolean;\n fieldMaskingRules?: Record<string, unknown> | null;\n status?: string;\n setupState?: string;\n refresh?: DataSink['refresh'];\n exports?: DataSink['exports'];\n alerts?: DataSink['alerts'];\n quota?: DataSink['quota'];\n metadata?: Record<string, unknown> | null;\n}\n\ninterface ParsedDataSinkExport {\n schemaVersion?: string;\n exportedAt?: string;\n exportedFrom?: {\n dataSinkId?: string;\n };\n dataSink?: ImportedDataSinkPayload;\n}\n\n// ============================================================================\n// Helper: Read file as text\n// ============================================================================\n\nfunction readFileAsText(file: File): Promise<string> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = (e) => {\n const result = e.target?.result;\n if (typeof result === 'string') {\n resolve(result);\n } else {\n reject(new Error('Failed to read file as text'));\n }\n };\n reader.onerror = () => reject(new Error('Failed to read file'));\n reader.readAsText(file);\n });\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction resolveDataSinkPayload(\n parsed: ParsedDataSinkExport | ImportedDataSinkPayload\n): ImportedDataSinkPayload | null {\n const wrapped = parsed as ParsedDataSinkExport;\n if (isRecord(wrapped.dataSink)) {\n return wrapped.dataSink as ImportedDataSinkPayload;\n }\n\n // Backward-compatible import for raw DataSink JSON objects.\n if (typeof (parsed as ImportedDataSinkPayload).key === 'string') {\n return parsed as ImportedDataSinkPayload;\n }\n\n return null;\n}\n\nfunction normalizeRefreshInput(refresh: DataSink['refresh'] | undefined): CreateDataSinkInput['refresh'] {\n if (!refresh) {\n return undefined;\n }\n\n return {\n type: refresh.type,\n ...(refresh.schedule ? { schedule: stripTypename(refresh.schedule) } : {}),\n };\n}\n\n/**\n * Recursively remove __typename fields from an object\n * This is necessary because exported data contains __typename fields\n * which are not accepted by GraphQL input types\n */\nfunction stripTypename<T>(obj: T): T {\n if (obj === null || obj === undefined) {\n return obj;\n }\n\n if (Array.isArray(obj)) {\n return obj.map((item) => stripTypename(item)) as T;\n }\n\n if (typeof obj === 'object') {\n const cleaned: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(obj as Record<string, unknown>)) {\n if (key !== '__typename') {\n cleaned[key] = stripTypename(value);\n }\n }\n return cleaned as T;\n }\n\n return obj;\n}\n\n/**\n * Extract DataSink ID from imported JSON content\n * The ID is stored during export for re-import update support\n */\nfunction extractDataSinkIdFromContent(content: string): string | null {\n try {\n const parsed = JSON.parse(content) as ParsedDataSinkExport | ImportedDataSinkPayload;\n const wrapped = parsed as ParsedDataSinkExport;\n // Check both locations where ID might be stored\n return wrapped.exportedFrom?.dataSinkId || wrapped.dataSink?.id || (parsed as ImportedDataSinkPayload).id || null;\n } catch {\n return null;\n }\n}\n\n/**\n * Validate DataSink export content\n */\nfunction validateDataSinkContent(content: string): ImportDataSinkValidationResult {\n const errors: ImportDataSinkValidationError[] = [];\n\n try {\n const parsed = JSON.parse(content) as ParsedDataSinkExport | ImportedDataSinkPayload;\n const wrapped = parsed as ParsedDataSinkExport;\n const dataSink = resolveDataSinkPayload(parsed);\n\n // Check schema version\n if (!wrapped.schemaVersion && !dataSink) {\n errors.push({\n code: 'MISSING_SCHEMA_VERSION',\n message: 'Missing schema version',\n });\n }\n\n // Check dataSink object exists\n if (!dataSink) {\n errors.push({\n code: 'MISSING_DATASINK',\n message: 'This file is not a BigConsole DataSink export. Expected a top-level dataSink object.',\n });\n return { isValid: false, dataSinkInfo: null, errors };\n }\n\n // Validate required fields\n if (!dataSink.key) {\n errors.push({\n code: 'MISSING_KEY',\n message: 'DataSink key is required',\n path: 'dataSink.key',\n });\n }\n\n const dataSinkInfo: ImportDataSinkInfo = {\n name: dataSink.name || null,\n description: dataSink.description || null,\n key: dataSink.key || '',\n status: dataSink.status || 'ready',\n setupState: dataSink.setupState || 'not_started',\n exportedAt: wrapped.exportedAt,\n exportedFrom: wrapped.exportedFrom?.dataSinkId,\n schemaVersion: wrapped.schemaVersion || 'legacy',\n };\n\n return {\n isValid: errors.length === 0,\n dataSinkInfo,\n errors,\n };\n } catch {\n return {\n isValid: false,\n dataSinkInfo: null,\n errors: [\n {\n code: 'INVALID_JSON',\n message: 'Invalid JSON format',\n },\n ],\n };\n }\n}\n\n// ============================================================================\n// Hook\n// ============================================================================\n\nexport function useImportDataSink(): UseImportDataSinkResult {\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [validationResult, setValidationResult] = useState<ImportDataSinkValidationResult | null>(null);\n const [importResult, setImportResult] = useState<ImportDataSinkResult | null>(null);\n\n const apolloClient = useApolloClient();\n\n // Validate import content\n const validateImport = useCallback((content: string): ImportDataSinkValidationResult => {\n const result = validateDataSinkContent(content);\n setValidationResult(result);\n return result;\n }, []);\n\n // Extract DataSink ID from content\n const extractDataSinkId = useCallback((content: string): string | null => {\n return extractDataSinkIdFromContent(content);\n }, []);\n\n // Import DataSink from JSON content\n // Logic (DECLARATIVE - idempotent re-import):\n // 1. If original DataSink ID exists in JSON, check if original still exists\n // 2. If original exists → UPDATE it with the JSON data (no new copy created)\n // 3. If original doesn't exist → CREATE a new DataSink from the JSON\n // This ensures re-importing the same JSON is idempotent and updates the existing entity\n const importDataSink = useCallback(\n async (content: string, options: ImportDataSinkOptions = {}): Promise<ImportDataSinkResult | null> => {\n try {\n setLoading(true);\n setError(null);\n\n // Validate content first\n const validation = validateDataSinkContent(content);\n if (!validation.isValid || !validation.dataSinkInfo) {\n throw new Error(validation.errors[0]?.message || 'Invalid import content');\n }\n\n // Parse the content to get DataSink data\n const parsed = JSON.parse(content) as ParsedDataSinkExport | ImportedDataSinkPayload;\n const dataSinkData = resolveDataSinkPayload(parsed);\n if (!dataSinkData) {\n throw new Error('Missing DataSink payload in import content');\n }\n const hasImportedData = Object.prototype.hasOwnProperty.call(dataSinkData, 'data');\n\n // Extract original DataSink ID from the JSON (if it was exported from an existing DataSink)\n const originalDataSinkId = extractDataSinkIdFromContent(content);\n let originalUpdated = false;\n let originalDataSinkInfo: { id: string; name: string | null; key: string } | undefined;\n\n // Step 1: Check if original DataSink exists and update it\n if (originalDataSinkId) {\n try {\n const getDataSinkResult = await apolloClient.query<{ getDataSink?: DataSink }>({\n query: GetDataSinkDocument,\n variables: { id: originalDataSinkId },\n fetchPolicy: 'network-only',\n });\n\n const existingDataSink = getDataSinkResult.data?.getDataSink;\n\n if (existingDataSink) {\n // Compare to detect changes (excluding name - we don't update the original's name)\n const hasChanges =\n (hasImportedData && JSON.stringify(existingDataSink.data) !== JSON.stringify(dataSinkData.data)) ||\n (existingDataSink.description || '') !== (dataSinkData.description || '') ||\n existingDataSink.ttl !== dataSinkData.ttl ||\n existingDataSink.fieldMaskingEnabled !== (dataSinkData.fieldMaskingEnabled ?? false) ||\n JSON.stringify(existingDataSink.fieldMaskingRules) !== JSON.stringify(dataSinkData.fieldMaskingRules) ||\n JSON.stringify(existingDataSink.refresh) !== JSON.stringify(dataSinkData.refresh) ||\n JSON.stringify(existingDataSink.exports) !== JSON.stringify(dataSinkData.exports) ||\n JSON.stringify(existingDataSink.alerts) !== JSON.stringify(dataSinkData.alerts) ||\n JSON.stringify(existingDataSink.quota) !== JSON.stringify(dataSinkData.quota) ||\n JSON.stringify(existingDataSink.metadata) !== JSON.stringify(dataSinkData.metadata);\n\n // Update original if there are changes\n // Note: We intentionally do NOT update the name - the original keeps its name\n if (hasChanges) {\n const updateInput = {\n id: originalDataSinkId,\n version: existingDataSink.version,\n name: existingDataSink.name, // Keep original name\n description: dataSinkData.description || undefined,\n ...(hasImportedData && { data: stripTypename(dataSinkData.data) }),\n ttl: dataSinkData.ttl ?? undefined,\n fieldMaskingEnabled: dataSinkData.fieldMaskingEnabled ?? false,\n fieldMaskingRules: stripTypename(dataSinkData.fieldMaskingRules) || undefined,\n refresh: normalizeRefreshInput(dataSinkData.refresh),\n exports: stripTypename(dataSinkData.exports) || undefined,\n alerts: stripTypename(dataSinkData.alerts) || undefined,\n quota: stripTypename(dataSinkData.quota) || undefined,\n metadata: stripTypename(dataSinkData.metadata) || undefined,\n };\n\n const updateResult = await apolloClient.mutate<{ updateDataSink?: DataSink }>({\n mutation: UpdateDataSinkDocument,\n variables: { input: updateInput },\n });\n\n const updatedDataSink = updateResult.data?.updateDataSink;\n if (updatedDataSink) {\n originalUpdated = true;\n originalDataSinkInfo = {\n id: updatedDataSink.id,\n name: updatedDataSink.name,\n key: updatedDataSink.key,\n };\n }\n } else {\n // No changes - entity already exists with same data\n // Return with alreadyExists flag so UI can show \"already exists\" popup\n originalDataSinkInfo = {\n id: existingDataSink.id,\n name: existingDataSink.name,\n key: existingDataSink.key,\n };\n const alreadyExistsResult: ImportDataSinkResult = {\n success: true,\n dataSink: originalDataSinkInfo,\n originalUpdated: false,\n originalDataSink: originalDataSinkInfo,\n alreadyExists: true,\n };\n setImportResult(alreadyExistsResult);\n return alreadyExistsResult;\n }\n\n // If original was updated, return success with the updated DataSink info\n const finalResult: ImportDataSinkResult = {\n success: true,\n dataSink: originalDataSinkInfo,\n originalUpdated,\n originalDataSink: originalDataSinkInfo,\n alreadyExists: false,\n };\n setImportResult(finalResult);\n return finalResult;\n }\n // If original doesn't exist, continue to create a new DataSink\n } catch (fetchErr) {\n // Original DataSink fetch failed (might not exist), continue with creating new\n console.warn('Could not fetch original DataSink:', fetchErr);\n }\n }\n\n // Step 2: Create a NEW DataSink only if original doesn't exist\n // (This happens when importing for the first time, or if original was deleted)\n // Use stripTypename to remove __typename fields from nested objects\n const createInput: CreateDataSinkInput = {\n name: options.name || dataSinkData.name || 'Imported DataSink',\n key: options.key || dataSinkData.key || '',\n description: dataSinkData.description || undefined,\n config: stripTypename(dataSinkData.config) || undefined,\n ...(hasImportedData && { data: stripTypename(dataSinkData.data) }),\n ttl: dataSinkData.ttl ?? undefined,\n fieldMaskingEnabled: dataSinkData.fieldMaskingEnabled ?? false,\n fieldMaskingRules: stripTypename(dataSinkData.fieldMaskingRules) || undefined,\n refresh: normalizeRefreshInput(dataSinkData.refresh),\n exports: stripTypename(dataSinkData.exports) || undefined,\n alerts: stripTypename(dataSinkData.alerts) || undefined,\n quota: stripTypename(dataSinkData.quota) || undefined,\n metadata: stripTypename(dataSinkData.metadata) || undefined,\n };\n\n const result = await apolloClient.mutate<{ createDataSink?: DataSink }>({\n mutation: CreateDataSinkDocument,\n variables: { input: createInput },\n });\n\n // A quota refusal (spent, or never provisioned because the org has no\n // billing account yet — BOFF-7913) is thrown to the dialog so it can\n // raise the billing popup instead of a dead-end \"import failed\".\n if (isBigConsoleQuotaError(result)) {\n throw createBigConsoleQuotaError(result);\n }\n\n const createdDataSink = result.data?.createDataSink;\n\n if (createdDataSink) {\n const finalResult: ImportDataSinkResult = {\n success: true,\n dataSink: {\n id: createdDataSink.id,\n name: createdDataSink.name,\n key: createdDataSink.key,\n },\n originalUpdated: false,\n originalDataSink: undefined,\n };\n setImportResult(finalResult);\n return finalResult;\n }\n\n throw new Error('Import returned empty result');\n } catch (err) {\n if (isBigConsoleQuotaError(err)) {\n throw err;\n }\n const importError = err instanceof Error ? err : new Error('Failed to import DataSink');\n setError(importError);\n const failResult: ImportDataSinkResult = {\n success: false,\n errorMessage: importError.message,\n };\n setImportResult(failResult);\n return failResult;\n } finally {\n setLoading(false);\n }\n },\n [apolloClient]\n );\n\n // Import DataSink from file\n const importFromFile = useCallback(\n async (file: File, options: ImportDataSinkOptions = {}): Promise<ImportDataSinkResult | null> => {\n try {\n // Validate file type\n if (!file.name.endsWith('.json')) {\n throw new Error('Invalid file type. Please select a JSON file.');\n }\n\n // Read file content\n const content = await readFileAsText(file);\n\n // Validate JSON format\n try {\n JSON.parse(content);\n } catch {\n throw new Error('Invalid JSON format. Please select a valid export file.');\n }\n\n // Perform import\n return await importDataSink(content, options);\n } catch (err) {\n if (isBigConsoleQuotaError(err)) {\n throw err;\n }\n const fileError = err instanceof Error ? err : new Error('Failed to import from file');\n setError(fileError);\n return null;\n }\n },\n [importDataSink]\n );\n\n // Clear state\n const clearState = useCallback(() => {\n setError(null);\n setValidationResult(null);\n setImportResult(null);\n }, []);\n\n return {\n loading,\n error,\n validationResult,\n importResult,\n validateImport,\n importDataSink,\n importFromFile,\n extractDataSinkId,\n clearState,\n };\n}\n\nexport default useImportDataSink;\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useImportParser.d.ts","sourceRoot":"","sources":["../../../src/bigconsole/hooks/useImportParser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,4BAA4B;IAC3C,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACpC,MAAM,EAAE,2BAA2B,EAAE,CAAC;CACvC;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE;QACP,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,oDAAoD;IACpD,cAAc,CAAC,EAAE;QACf,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,sFAAsF;IACtF,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qCAAqC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,oBAAoB;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,kBAAkB;IAClB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,6BAA6B;IAC7B,gBAAgB,EAAE,4BAA4B,GAAG,IAAI,CAAC;IACtD,yBAAyB;IACzB,YAAY,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACxC,gDAAgD;IAChD,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,4BAA4B,CAAC;IAClE,sCAAsC;IACtC,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,KAAK,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;IACpG,8BAA8B;IAC9B,cAAc,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,mBAAmB,KAAK,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;IACjG,4CAA4C;IAC5C,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACpD,kBAAkB;IAClB,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAkJD,wBAAgB,eAAe,IAAI,qBAAqB,CA2OvD;AAED,eAAe,eAAe,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useImportParser.js","names":[],"sources":["../../../src/bigconsole/hooks/useImportParser.ts"],"sourcesContent":["/**\n * useImportParser Hook\n *\n * Provides parser import functionality with validation and conflict resolution.\n * Supports both creating new parsers and updating existing ones on re-import.\n */\n\nimport { useCallback, useState } from 'react';\nimport { useApolloClient } from '@apollo/client/react';\nimport { CreateParserDocument, UpdateParserDocument, GetParserDocument } from '../../generated/wspace-operations';\nimport type { Parser, ParserType, ParserStatus } from '../types';\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface ImportParserInfo {\n name: string;\n description?: string;\n type: string;\n expression: string;\n inputSinkKey: string;\n outputKey: string;\n exportedAt?: string;\n exportedFrom?: string;\n schemaVersion: string;\n}\n\nexport interface ImportParserValidationError {\n code: string;\n message: string;\n path?: string;\n}\n\nexport interface ImportParserValidationResult {\n isValid: boolean;\n parserInfo: ImportParserInfo | null;\n errors: ImportParserValidationError[];\n}\n\nexport interface ImportParserResult {\n success: boolean;\n parser?: {\n id: string;\n name: string;\n };\n errorMessage?: string;\n /** Whether the original parser was also updated */\n originalUpdated?: boolean;\n /** The original parser that was updated (if any) */\n originalParser?: {\n id: string;\n name: string;\n };\n /** Whether the entity already exists with no changes (show \"already exists\" popup) */\n alreadyExists?: boolean;\n}\n\nexport interface ImportParserOptions {\n /** Target console ID (required for new parsers) */\n consoleId: string;\n /** Override parser name (optional) */\n name?: string;\n /** Override input sink key (optional) */\n inputSinkKey?: string;\n /** Override output key (optional) */\n outputKey?: string;\n}\n\nexport interface UseImportParserResult {\n /** Loading state */\n loading: boolean;\n /** Error state */\n error: Error | null;\n /** Last validation result */\n validationResult: ImportParserValidationResult | null;\n /** Last import result */\n importResult: ImportParserResult | null;\n /** Validate import content without importing */\n validateImport: (content: string) => ImportParserValidationResult;\n /** Import parser from JSON content */\n importParser: (content: string, options: ImportParserOptions) => Promise<ImportParserResult | null>;\n /** Import parser from file */\n importFromFile: (file: File, options: ImportParserOptions) => Promise<ImportParserResult | null>;\n /** Extract parser ID from import content */\n extractParserId: (content: string) => string | null;\n /** Clear state */\n clearState: () => void;\n}\n\n// ============================================================================\n// Helper: Read file as text\n// ============================================================================\n\nfunction readFileAsText(file: File): Promise<string> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = (e) => {\n const result = e.target?.result;\n if (typeof result === 'string') {\n resolve(result);\n } else {\n reject(new Error('Failed to read file as text'));\n }\n };\n reader.onerror = () => reject(new Error('Failed to read file'));\n reader.readAsText(file);\n });\n}\n\n/**\n * Extract parser ID from imported JSON content\n * The ID is stored during export for re-import update support\n */\nfunction extractParserIdFromContent(content: string): string | null {\n try {\n const parsed = JSON.parse(content);\n // Check both locations where ID might be stored\n return parsed.exportedFrom?.parserId || parsed.parser?.id || null;\n } catch {\n return null;\n }\n}\n\n/**\n * Validate parser export content\n */\nfunction validateParserContent(content: string): ImportParserValidationResult {\n const errors: ImportParserValidationError[] = [];\n\n try {\n const parsed = JSON.parse(content);\n\n // Check schema version\n if (!parsed.schemaVersion) {\n errors.push({\n code: 'MISSING_SCHEMA_VERSION',\n message: 'Missing schema version',\n });\n }\n\n // Check parser object exists\n if (!parsed.parser) {\n errors.push({\n code: 'MISSING_PARSER',\n message: 'Missing parser object in export file',\n });\n return { isValid: false, parserInfo: null, errors };\n }\n\n const parser = parsed.parser;\n\n // Validate required fields\n if (!parser.name) {\n errors.push({\n code: 'MISSING_NAME',\n message: 'Parser name is required',\n path: 'parser.name',\n });\n }\n\n if (!parser.type) {\n errors.push({\n code: 'MISSING_TYPE',\n message: 'Parser type is required',\n path: 'parser.type',\n });\n } else if (!['jq', 'jsonata'].includes(parser.type)) {\n errors.push({\n code: 'INVALID_TYPE',\n message: `Invalid parser type: ${parser.type}. Must be 'jq' or 'jsonata'`,\n path: 'parser.type',\n });\n }\n\n if (!parser.expression) {\n errors.push({\n code: 'MISSING_EXPRESSION',\n message: 'Parser expression is required',\n path: 'parser.expression',\n });\n }\n\n if (!parser.inputSinkKey) {\n errors.push({\n code: 'MISSING_INPUT_SINK_KEY',\n message: 'Input sink key is required',\n path: 'parser.inputSinkKey',\n });\n }\n\n if (!parser.outputKey) {\n errors.push({\n code: 'MISSING_OUTPUT_KEY',\n message: 'Output key is required',\n path: 'parser.outputKey',\n });\n }\n\n const parserInfo: ImportParserInfo = {\n name: parser.name || '',\n description: parser.description,\n type: parser.type || '',\n expression: parser.expression || '',\n inputSinkKey: parser.inputSinkKey || '',\n outputKey: parser.outputKey || '',\n exportedAt: parsed.exportedAt,\n exportedFrom: parsed.exportedFrom?.parserId,\n schemaVersion: parsed.schemaVersion || 'unknown',\n };\n\n return {\n isValid: errors.length === 0,\n parserInfo,\n errors,\n };\n } catch (err) {\n return {\n isValid: false,\n parserInfo: null,\n errors: [\n {\n code: 'INVALID_JSON',\n message: 'Invalid JSON format',\n },\n ],\n };\n }\n}\n\n// ============================================================================\n// Hook\n// ============================================================================\n\nexport function useImportParser(): UseImportParserResult {\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [validationResult, setValidationResult] = useState<ImportParserValidationResult | null>(null);\n const [importResult, setImportResult] = useState<ImportParserResult | null>(null);\n\n const apolloClient = useApolloClient();\n\n // Validate import content\n const validateImport = useCallback((content: string): ImportParserValidationResult => {\n const result = validateParserContent(content);\n setValidationResult(result);\n return result;\n }, []);\n\n // Extract parser ID from content\n const extractParserId = useCallback((content: string): string | null => {\n return extractParserIdFromContent(content);\n }, []);\n\n // Import parser from JSON content\n // Logic (DECLARATIVE - idempotent re-import):\n // 1. If original parser ID exists in JSON, check if original still exists\n // 2. If original exists → UPDATE it with the JSON data (no new copy created)\n // 3. If original doesn't exist → CREATE a new parser from the JSON\n // This ensures re-importing the same JSON is idempotent and updates the existing entity\n const importParser = useCallback(\n async (content: string, options: ImportParserOptions): Promise<ImportParserResult | null> => {\n try {\n setLoading(true);\n setError(null);\n\n // Validate content first\n const validation = validateParserContent(content);\n if (!validation.isValid || !validation.parserInfo) {\n throw new Error(validation.errors[0]?.message || 'Invalid import content');\n }\n\n // Parse the content to get parser data\n const parsed = JSON.parse(content);\n const parserData = parsed.parser;\n\n // Extract original parser ID from the JSON (if it was exported from an existing parser)\n const originalParserId = extractParserIdFromContent(content);\n let originalUpdated = false;\n let originalParserInfo: { id: string; name: string } | undefined;\n let originalExists = false;\n\n // Step 1: Check if original parser exists and update it\n if (originalParserId) {\n try {\n const getParserResult = await apolloClient.query<{ parser?: Parser }>({\n query: GetParserDocument,\n variables: { id: originalParserId },\n fetchPolicy: 'network-only',\n });\n\n const existingParser = getParserResult.data?.parser;\n\n if (existingParser) {\n originalExists = true;\n\n // Compare to detect changes (excluding name - we don't update the original's name)\n const hasChanges =\n existingParser.expression !== parserData.expression ||\n existingParser.inputSinkKey !== parserData.inputSinkKey ||\n existingParser.outputKey !== parserData.outputKey ||\n (existingParser.description || '') !== (parserData.description || '') ||\n existingParser.ttl !== parserData.ttl;\n\n // Update original if there are changes\n // Note: We intentionally do NOT update the name - the original keeps its name\n if (hasChanges) {\n const updateInput = {\n name: existingParser.name, // Keep original name\n expression: parserData.expression,\n inputSinkKey: parserData.inputSinkKey,\n outputKey: parserData.outputKey,\n description: parserData.description || undefined,\n ttl: parserData.ttl || undefined,\n status: (parserData.status as ParserStatus) || undefined,\n };\n\n const updateResult = await apolloClient.mutate<{ updateParser?: Parser }>({\n mutation: UpdateParserDocument,\n variables: {\n id: originalParserId,\n input: updateInput,\n version: existingParser.version,\n },\n });\n\n const updatedParser = updateResult.data?.updateParser;\n if (updatedParser) {\n originalUpdated = true;\n originalParserInfo = {\n id: updatedParser.id,\n name: updatedParser.name,\n };\n }\n } else {\n // No changes - entity already exists with same data\n // Return with alreadyExists flag so UI can show \"already exists\" popup\n originalParserInfo = {\n id: existingParser.id,\n name: existingParser.name,\n };\n const alreadyExistsResult: ImportParserResult = {\n success: true,\n parser: originalParserInfo,\n originalUpdated: false,\n originalParser: originalParserInfo,\n alreadyExists: true,\n };\n setImportResult(alreadyExistsResult);\n return alreadyExistsResult;\n }\n\n // If original was updated, return success with the updated parser info\n const finalResult: ImportParserResult = {\n success: true,\n parser: originalParserInfo,\n originalUpdated,\n originalParser: originalParserInfo,\n alreadyExists: false,\n };\n setImportResult(finalResult);\n return finalResult;\n }\n // If original doesn't exist, continue to create a new parser\n } catch (fetchErr) {\n // Original parser fetch failed (might not exist), continue with creating new\n console.warn('Could not fetch original parser:', fetchErr);\n }\n }\n\n // Step 2: Create a NEW parser only if original doesn't exist\n // (This happens when importing for the first time, or if original was deleted)\n const createInput = {\n consoleId: options.consoleId,\n name: options.name || parserData.name,\n type: parserData.type as ParserType,\n expression: parserData.expression,\n inputSinkKey: options.inputSinkKey || parserData.inputSinkKey,\n outputKey: options.outputKey || parserData.outputKey,\n description: parserData.description || undefined,\n ttl: parserData.ttl || undefined,\n };\n\n const result = await apolloClient.mutate<{ createParser?: Parser }>({\n mutation: CreateParserDocument,\n variables: { input: createInput },\n });\n\n const createdParser = result.data?.createParser;\n\n if (createdParser) {\n const finalResult: ImportParserResult = {\n success: true,\n parser: {\n id: createdParser.id,\n name: createdParser.name,\n },\n originalUpdated: false,\n originalParser: undefined,\n };\n setImportResult(finalResult);\n return finalResult;\n }\n\n throw new Error('Import returned empty result');\n } catch (err) {\n const importError = err instanceof Error ? err : new Error('Failed to import parser');\n setError(importError);\n const failResult: ImportParserResult = {\n success: false,\n errorMessage: importError.message,\n };\n setImportResult(failResult);\n return failResult;\n } finally {\n setLoading(false);\n }\n },\n [apolloClient]\n );\n\n // Import parser from file\n const importFromFile = useCallback(\n async (file: File, options: ImportParserOptions): Promise<ImportParserResult | null> => {\n try {\n // Validate file type\n if (!file.name.endsWith('.json')) {\n throw new Error('Invalid file type. Please select a JSON file.');\n }\n\n // Read file content\n const content = await readFileAsText(file);\n\n // Validate JSON format\n try {\n JSON.parse(content);\n } catch {\n throw new Error('Invalid JSON format. Please select a valid export file.');\n }\n\n // Perform import\n return await importParser(content, options);\n } catch (err) {\n const fileError = err instanceof Error ? err : new Error('Failed to import from file');\n setError(fileError);\n return null;\n }\n },\n [importParser]\n );\n\n // Clear state\n const clearState = useCallback(() => {\n setError(null);\n setValidationResult(null);\n setImportResult(null);\n }, []);\n\n return {\n loading,\n error,\n validationResult,\n importResult,\n validateImport,\n importParser,\n importFromFile,\n extractParserId,\n clearState,\n };\n}\n\nexport default useImportParser;\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useInstalledWidgets.d.ts","sourceRoot":"","sources":["../../../src/bigconsole/hooks/useInstalledWidgets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAK7E,MAAM,WAAW,yBAAyB;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,mBAAmB,CAAC,MAAM,GAAE,yBAA8B,GAAG;IAC3E,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;CAC1B,CAyFA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useInstalledWidgets.js","names":[],"sources":["../../../src/bigconsole/hooks/useInstalledWidgets.ts"],"sourcesContent":["/**\n * Hook to fetch store-installed widgets for the dashboard WidgetPalette.\n *\n * Queries workspace installed apps via React Query and the generated\n * GraphQL document, filtering to only enabled widgets and mapping them\n * to WidgetDefinition shape.\n *\n * Accepts workspaceId, apiGatewayUrl, and authToken as parameters\n * (provided by BigConsoleProvider context) instead of parsing the URL.\n */\n\nimport { useEffect, useMemo } from 'react';\nimport { useQuery } from '@tanstack/react-query';\nimport { print } from 'graphql';\nimport { WorkspaceInstalledAppsDocument } from '../../generated/wspace-operations';\nimport type { WorkspaceInstalledAppsQuery } from '../../generated/wspace-operations';\nimport type { WidgetDefinition } from '../components/widgets/WidgetRegistry';\nimport type { WidgetType } from '../types';\n\ntype InstalledApp = WorkspaceInstalledAppsQuery['workspaceInstalledApps'][number];\n\nexport interface UseInstalledWidgetsParams {\n workspaceId?: string;\n apiGatewayUrl?: string;\n authToken?: string;\n /** When false, the query is skipped entirely (e.g. in read-only/view mode). */\n enabled?: boolean;\n}\n\nexport function useInstalledWidgets(params: UseInstalledWidgetsParams = {}): {\n installedWidgets: WidgetDefinition[];\n loading: boolean;\n error: Error | undefined;\n} {\n const { workspaceId, apiGatewayUrl, authToken, enabled = true } = params;\n\n const {\n data: apps,\n isLoading: loading,\n error,\n } = useQuery<InstalledApp[], Error>({\n // Only workspaceId is needed in the cache key. The authToken and apiGatewayUrl are\n // used inside queryFn but should not invalidate the cache on token rotation.\n queryKey: ['installedWidgets', workspaceId],\n queryFn: async () => {\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n 'x-workspace-id': workspaceId!,\n };\n\n if (authToken) {\n headers['Authorization'] = `Bearer ${authToken}`;\n }\n\n const url = apiGatewayUrl ? `${apiGatewayUrl}/workspaces/graphql` : '/workspaces/graphql';\n\n const response = await fetch(url, {\n method: 'POST',\n headers,\n body: JSON.stringify({ query: print(WorkspaceInstalledAppsDocument) }),\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch installed apps: ${response.status}`);\n }\n\n const result: { data?: WorkspaceInstalledAppsQuery; errors?: { message: string }[] } = await response.json();\n\n if (result.errors?.length) {\n throw new Error(result.errors[0].message);\n }\n\n return result.data?.workspaceInstalledApps ?? [];\n },\n enabled: enabled && !!workspaceId,\n // Installed apps change rarely; avoid refetching on every remount.\n staleTime: 5 * 60 * 1000, // 5 minutes\n });\n\n useEffect(() => {\n if (error) {\n console.warn('Failed to fetch installed widgets:', error.message);\n }\n }, [error]);\n\n const installedWidgets = useMemo<WidgetDefinition[]>(() => {\n if (!apps) return [];\n return apps\n .filter((app) => app.type.toLowerCase() === 'widget' && app.isEnabled)\n .map((app) => {\n // manifest is a JSON field from the workspace service.\n // Expected shape: { productId?: string; icon?: string | null; slug?: string }\n const manifest = (app.manifest ?? {}) as Record<string, unknown>;\n return {\n type: 'custom' as WidgetType,\n name: app.displayName,\n description: `Installed: ${app.displayName} v${app.version}`,\n icon: 'Puzzle',\n category: 'Installed' as const,\n // component: null is safe because the render path uses WidgetRendererFactory\n // (which resolves renderers via RendererRegistry, not WidgetDefinition.component).\n // All built-in WIDGET_DEFINITIONS also set component: null for the same reason.\n component: null,\n defaultConfig: {\n componentId: app.appName,\n storeProductId: (manifest.productId as string) ?? null,\n storeIcon: (manifest.icon as string) ?? null,\n isStoreWidget: true,\n },\n defaultSize: { width: 4, height: 4 },\n defaultResponsive: { xs: 12, sm: 6, md: 4, lg: 4 },\n minSize: { width: 2, height: 2 },\n maxSize: { width: 12, height: 12 },\n supportsDataBinding: true,\n supportsDrilldown: false,\n supportsAutoRefresh: true,\n tags: ['installed', 'store', app.appName],\n };\n });\n }, [apps]);\n\n return { installedWidgets, loading, error: error ?? undefined };\n}\n"],"mappings":";;;;;AA6BA,SAAgB,EAAoB,IAAoC,EAAE,EAIxE;CACA,IAAM,EAAE,gBAAa,kBAAe,cAAW,aAAU,OAAS,GAE5D,EACJ,MAAM,GACN,WAAW,GACX,aACE,EAAgC;EAGlC,UAAU,CAAC,oBAAoB,EAAY;EAC3C,SAAS,YAAY;GACnB,IAAM,IAAkC;IACtC,gBAAgB;IAChB,kBAAkB;IACnB;AAED,GAAI,MACF,EAAQ,gBAAmB,UAAU;GAGvC,IAAM,IAAM,IAAgB,GAAG,EAAc,uBAAuB,uBAE9D,IAAW,MAAM,MAAM,GAAK;IAChC,QAAQ;IACR;IACA,MAAM,KAAK,UAAU,EAAE,OAAO,EAAM,EAA+B,EAAE,CAAC;IACvE,CAAC;AAEF,OAAI,CAAC,EAAS,GACZ,OAAU,MAAM,mCAAmC,EAAS,SAAS;GAGvE,IAAM,IAAiF,MAAM,EAAS,MAAM;AAE5G,OAAI,EAAO,QAAQ,OACjB,OAAU,MAAM,EAAO,OAAO,GAAG,QAAQ;AAG3C,UAAO,EAAO,MAAM,0BAA0B,EAAE;;EAElD,SAAS,KAAW,CAAC,CAAC;EAEtB,WAAW,MAAS;EACrB,CAAC;AA4CF,QA1CA,QAAgB;AACd,EAAI,KACF,QAAQ,KAAK,sCAAsC,EAAM,QAAQ;IAElE,CAAC,EAAM,CAAC,EAsCJ;EAAE,kBApCgB,QAClB,IACE,EACJ,QAAQ,MAAQ,EAAI,KAAK,aAAa,KAAK,YAAY,EAAI,UAAU,CACrE,KAAK,MAAQ;GAGZ,IAAM,IAAY,EAAI,YAAY,EAAE;AACpC,UAAO;IACL,MAAM;IACN,MAAM,EAAI;IACV,aAAa,cAAc,EAAI,YAAY,IAAI,EAAI;IACnD,MAAM;IACN,UAAU;IAIV,WAAW;IACX,eAAe;KACb,aAAa,EAAI;KACjB,gBAAiB,EAAS,aAAwB;KAClD,WAAY,EAAS,QAAmB;KACxC,eAAe;KAChB;IACD,aAAa;KAAE,OAAO;KAAG,QAAQ;KAAG;IACpC,mBAAmB;KAAE,IAAI;KAAI,IAAI;KAAG,IAAI;KAAG,IAAI;KAAG;IAClD,SAAS;KAAE,OAAO;KAAG,QAAQ;KAAG;IAChC,SAAS;KAAE,OAAO;KAAI,QAAQ;KAAI;IAClC,qBAAqB;IACrB,mBAAmB;IACnB,qBAAqB;IACrB,MAAM;KAAC;KAAa;KAAS,EAAI;KAAQ;IAC1C;IACD,GAhCc,EAAE,EAiCnB,CAAC,EAAK,CAAC;EAEiB;EAAS,OAAO,KAAS,KAAA;EAAW"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useModalFocusTrap.d.ts","sourceRoot":"","sources":["../../../src/bigconsole/hooks/useModalFocusTrap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAWlD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW,EAAE,CAItE;AAED,MAAM,WAAW,qBAAqB;IACpC,gDAAgD;IAChD,MAAM,EAAE,OAAO,CAAC;IAChB,qDAAqD;IACrD,QAAQ,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IACxC,wBAAwB;IACxB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB;;;OAGG;IACH,eAAe,CAAC,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;CACjD;AAED,wBAAgB,iBAAiB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,EAAE,qBAAqB,GAAG,IAAI,CAyD7G"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useModalFocusTrap.js","names":[],"sources":["../../../src/bigconsole/hooks/useModalFocusTrap.ts"],"sourcesContent":["/**\n * useModalFocusTrap — the keyboard contract for BigConsole's hand-rolled modals.\n *\n * Several dialogs here predate the fe-libs `Dialog`/`AlertDialog` primitives and\n * paint their own scrim + panel. Those primitives wrap Radix and would give this\n * behaviour for free, but swapping them in changes mount/animation semantics, so\n * the dialogs that still hand-roll their overlay need the contract implemented\n * explicitly. Without it a modal is announced as modal while Tab quietly walks\n * out into the page behind the scrim.\n *\n * What this gives a dialog:\n * - focus moves into the panel on open, preferring an explicit entry control\n * (pass the Cancel button for destructive confirmations, so the control\n * under the keyboard is the safe one);\n * - Tab / Shift+Tab cycle inside the panel;\n * - focus returns to whatever opened the dialog when it closes;\n * - Escape closes.\n *\n * Extracted from PipelineDeleteDialog (BOFF-5635) so the sibling dialogs share\n * one implementation instead of three drifting copies.\n */\n\nimport { useEffect, type RefObject } from 'react';\n\nconst FOCUSABLE_SELECTOR = [\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n].join(', ');\n\n/**\n * Focusable descendants in DOM order, minus anything not actually reachable —\n * `getClientRects()` drops `display:none` / `hidden` subtrees, which matters\n * because these panels render conditional blocks (warnings, previews) that come\n * and go while the dialog is open.\n */\nexport function getFocusableChildren(panel: HTMLElement): HTMLElement[] {\n return Array.from(panel.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR)).filter(\n (element) => element.getAttribute('aria-hidden') !== 'true' && element.getClientRects().length > 0\n );\n}\n\nexport interface ModalFocusTrapOptions {\n /** Whether the dialog is currently rendered. */\n isOpen: boolean;\n /** The panel element that owns the modal content. */\n panelRef: RefObject<HTMLElement | null>;\n /** Called on Escape. */\n onClose: () => void;\n /**\n * Control to focus on open. Defaults to the panel itself, which needs\n * `tabIndex={-1}` to be focusable.\n */\n initialFocusRef?: RefObject<HTMLElement | null>;\n}\n\nexport function useModalFocusTrap({ isOpen, panelRef, onClose, initialFocusRef }: ModalFocusTrapOptions): void {\n // Escape closes, Tab stays inside. The listener sits on `document` rather than\n // the panel so a Tab pressed while focus has drifted outside is still pulled\n // back in.\n useEffect(() => {\n if (!isOpen) return;\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n onClose();\n return;\n }\n if (event.key !== 'Tab') return;\n\n const panel = panelRef.current;\n if (!panel) return;\n\n const focusable = getFocusableChildren(panel);\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n\n // Nothing tabbable inside (defensive): park focus on the panel itself\n // rather than letting Tab escape to the page behind the scrim.\n if (!first || !last) {\n event.preventDefault();\n panel.focus();\n return;\n }\n\n const active = document.activeElement;\n const outside = !panel.contains(active);\n\n if (event.shiftKey ? active === first || outside : active === last || outside) {\n event.preventDefault();\n (event.shiftKey ? last : first).focus();\n }\n };\n\n document.addEventListener('keydown', onKeyDown);\n return () => document.removeEventListener('keydown', onKeyDown);\n }, [isOpen, onClose, panelRef]);\n\n // Move focus in on open, hand it back on close.\n useEffect(() => {\n if (!isOpen) return;\n\n const previouslyFocused = document.activeElement instanceof HTMLElement ? document.activeElement : null;\n (initialFocusRef?.current ?? panelRef.current)?.focus();\n\n return () => {\n // The trigger can be gone by now — deleting a row unmounts the button that\n // opened the dialog — in which case there is nothing to restore to.\n if (previouslyFocused?.isConnected) {\n previouslyFocused.focus();\n }\n };\n }, [isOpen, initialFocusRef, panelRef]);\n}\n"],"mappings":";;AAwBA,IAAM,IAAqB;CACzB;CACA;CACA;CACA;CACA;CACA;CACD,CAAC,KAAK,KAAK;AAQZ,SAAgB,EAAqB,GAAmC;AACtE,QAAO,MAAM,KAAK,EAAM,iBAA8B,EAAmB,CAAC,CAAC,QACxE,MAAY,EAAQ,aAAa,cAAc,KAAK,UAAU,EAAQ,gBAAgB,CAAC,SAAS,EAClG;;AAiBH,SAAgB,EAAkB,EAAE,WAAQ,aAAU,YAAS,sBAAgD;AA2C7G,CAvCA,QAAgB;AACd,MAAI,CAAC,EAAQ;EAEb,IAAM,KAAa,MAAyB;AAC1C,OAAI,EAAM,QAAQ,UAAU;AAC1B,OAAS;AACT;;AAEF,OAAI,EAAM,QAAQ,MAAO;GAEzB,IAAM,IAAQ,EAAS;AACvB,OAAI,CAAC,EAAO;GAEZ,IAAM,IAAY,EAAqB,EAAM,EACvC,IAAQ,EAAU,IAClB,IAAO,EAAU,EAAU,SAAS;AAI1C,OAAI,CAAC,KAAS,CAAC,GAAM;AAEnB,IADA,EAAM,gBAAgB,EACtB,EAAM,OAAO;AACb;;GAGF,IAAM,IAAS,SAAS,eAClB,IAAU,CAAC,EAAM,SAAS,EAAO;AAEvC,IAAI,EAAM,WAAW,MAAW,KAAS,IAAU,MAAW,KAAQ,OACpE,EAAM,gBAAgB,GACrB,EAAM,WAAW,IAAO,GAAO,OAAO;;AAK3C,SADA,SAAS,iBAAiB,WAAW,EAAU,QAClC,SAAS,oBAAoB,WAAW,EAAU;IAC9D;EAAC;EAAQ;EAAS;EAAS,CAAC,EAG/B,QAAgB;AACd,MAAI,CAAC,EAAQ;EAEb,IAAM,IAAoB,SAAS,yBAAyB,cAAc,SAAS,gBAAgB;AAGnG,UAFC,GAAiB,WAAW,EAAS,UAAU,OAAO,QAE1C;AAGX,GAAI,GAAmB,eACrB,EAAkB,OAAO;;IAG5B;EAAC;EAAQ;EAAiB;EAAS,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"usePageOperations.d.ts","sourceRoot":"","sources":["../../../src/bigconsole/hooks/usePageOperations.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAY9C,qDAAqD;AACrD,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;AAEtD,UAAU,eAAe;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,UAAU,eAAe;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,UAAU,oBAAoB;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,UAAU,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IACtE,UAAU,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IACtE,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C,YAAY,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,CAAC;CAC3F;AA0BD,wBAAgB,iBAAiB,IAAI,oBAAoB,CA8KxD;AAED,eAAe,iBAAiB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"usePageOperations.js","names":[],"sources":["../../../src/bigconsole/hooks/usePageOperations.ts"],"sourcesContent":["/**\n * usePageOperations Hook\n *\n * Provides CRUD operations for dashboard pages using GraphQL.\n */\n\nimport { useCallback, useState } from 'react';\nimport { useApolloClient } from '@apollo/client/react';\nimport type { DashboardPage } from '../types';\nimport {\n CreateDashboardPageDocument,\n UpdateDashboardPageDocument,\n DeleteDashboardPageDocument,\n ReorderDashboardPagesDocument,\n} from '../../generated/wspace-operations';\n\n// ============================================================================\n// Types\n// ============================================================================\n\n/** PageLayout enum values matching GraphQL schema */\nexport type PageLayout = 'GRID' | 'FLEX' | 'FREEFORM';\n\ninterface CreatePageInput {\n dashboardId: string;\n name: string;\n /** PageLayout enum: GRID, FLEX, or FREEFORM (default: GRID) */\n layout?: PageLayout;\n gridColumns?: number;\n metadata?: Record<string, unknown>;\n context?: Record<string, unknown>;\n}\n\ninterface UpdatePageInput {\n id: string;\n name?: string;\n /** PageLayout enum: GRID, FLEX, or FREEFORM */\n layout?: PageLayout;\n gridColumns?: number;\n /** Display order (only for update, not create) */\n order?: number;\n metadata?: Record<string, unknown>;\n context?: Record<string, unknown>;\n}\n\ninterface PageOperationsResult {\n loading: boolean;\n error: Error | null;\n createPage: (input: CreatePageInput) => Promise<DashboardPage | null>;\n updatePage: (input: UpdatePageInput) => Promise<DashboardPage | null>;\n deletePage: (id: string) => Promise<boolean>;\n reorderPages: (dashboardId: string, pageIds: string[]) => Promise<DashboardPage[] | null>;\n}\n\n// ============================================================================\n// Helper: Normalize page from GraphQL response\n// ============================================================================\n\nfunction normalizePage(data: Record<string, unknown>): DashboardPage {\n const name = data.name as string | undefined;\n return {\n id: data.id as string,\n dashboardId: data.dashboardId as string,\n name,\n slug: name?.toLowerCase().replace(/\\s+/g, '-') || '',\n order: (data.order as number) ?? 0,\n layoutConfig: (data.layout as Record<string, unknown>) || {},\n gridColumns: typeof data.gridColumns === 'number' ? data.gridColumns : 12,\n widgets: [],\n createdAt: (data.createdAt as string) || new Date().toISOString(),\n updatedAt: (data.updatedAt as string) || new Date().toISOString(),\n };\n}\n\n// ============================================================================\n// Hook\n// ============================================================================\n\nexport function usePageOperations(): PageOperationsResult {\n const client = useApolloClient();\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n // Create a new page\n const createPage = useCallback(\n async (input: CreatePageInput): Promise<DashboardPage | null> => {\n setLoading(true);\n setError(null);\n\n try {\n // Build input object - only include fields that exist in CreateDashboardPageInput schema\n // Note: 'order' is not available for create, only for update\n const createInput: Record<string, unknown> = {\n dashboardId: input.dashboardId,\n name: input.name,\n };\n\n // Only include optional fields if provided\n if (input.layout) {\n createInput.layout = input.layout;\n }\n if (input.gridColumns !== undefined) {\n createInput.gridColumns = input.gridColumns;\n }\n if (input.metadata) {\n createInput.metadata = input.metadata;\n }\n if (input.context) {\n createInput.context = input.context;\n }\n\n const { data } = await client.mutate<Record<string, unknown>>({\n mutation: CreateDashboardPageDocument,\n variables: {\n input: createInput,\n },\n });\n\n const createPageResult = data?.createDashboardPage as Record<string, unknown> | undefined;\n if (createPageResult) {\n return normalizePage(createPageResult);\n }\n return null;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to create page');\n setError(error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [client]\n );\n\n // Update an existing page\n const updatePage = useCallback(\n async (input: UpdatePageInput): Promise<DashboardPage | null> => {\n setLoading(true);\n setError(null);\n\n try {\n // Build input object - only include fields that are provided\n const updateInput: Record<string, unknown> = {\n id: input.id,\n };\n\n // Only include optional fields if provided\n if (input.name !== undefined) {\n updateInput.name = input.name;\n }\n if (input.layout) {\n updateInput.layout = input.layout;\n }\n if (input.gridColumns !== undefined) {\n updateInput.gridColumns = input.gridColumns;\n }\n if (input.order !== undefined) {\n updateInput.order = input.order;\n }\n if (input.metadata) {\n updateInput.metadata = input.metadata;\n }\n if (input.context) {\n updateInput.context = input.context;\n }\n\n const { data } = await client.mutate<Record<string, unknown>>({\n mutation: UpdateDashboardPageDocument,\n variables: {\n input: updateInput,\n },\n });\n\n const updatePageResult = data?.updateDashboardPage as Record<string, unknown> | undefined;\n if (updatePageResult) {\n return normalizePage(updatePageResult);\n }\n return null;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to update page');\n setError(error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [client]\n );\n\n // Delete a page\n const deletePage = useCallback(\n async (id: string): Promise<boolean> => {\n setLoading(true);\n setError(null);\n\n try {\n const { data } = await client.mutate<Record<string, unknown>>({\n mutation: DeleteDashboardPageDocument,\n variables: { id },\n });\n\n return data?.deleteDashboardPage === true;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to delete page');\n setError(error);\n return false;\n } finally {\n setLoading(false);\n }\n },\n [client]\n );\n\n // Reorder pages\n const reorderPages = useCallback(\n async (dashboardId: string, pageIds: string[]): Promise<DashboardPage[] | null> => {\n setLoading(true);\n setError(null);\n\n try {\n const { data } = await client.mutate<Record<string, unknown>>({\n mutation: ReorderDashboardPagesDocument,\n variables: {\n dashboardId,\n pageIds,\n },\n });\n\n const reorderResult = data?.reorderDashboardPages as Record<string, unknown>[] | undefined;\n if (reorderResult) {\n return reorderResult.map(normalizePage);\n }\n return null;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to reorder pages');\n setError(error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [client]\n );\n\n return {\n loading,\n error,\n createPage,\n updatePage,\n deletePage,\n reorderPages,\n };\n}\n\nexport default usePageOperations;\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useParserOperations.d.ts","sourceRoot":"","sources":["../../../src/bigconsole/hooks/useParserOperations.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAcH,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAMjE,UAAU,0BAA0B;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,UAAU,iBAAiB;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,UAAU,iBAAiB;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,UAAU,eAAe;IACvB,IAAI,EAAE,UAAU,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IAInB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,gBAAgB;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IAExB,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAqDD,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,0BAA+B;;;;6BA6BvD,aAAa,KAAG,OAAO,CAAC,MAAM,EAAE,CAAC;sBAwCvC,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;0BAiC5B,iBAAiB,KAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;uBAgC7C,MAAM,SAAS,iBAAiB,WAAW,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;uBAgC1E,MAAM,KAAG,OAAO,CAAC,OAAO,CAAC;wBA2BzB,MAAM,KAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;kCAwCzC,eAAe,KAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;;EA+DnE;AAED,eAAe,mBAAmB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useParserOperations.js","names":[],"sources":["../../../src/bigconsole/hooks/useParserOperations.ts"],"sourcesContent":["/**\n * Parser Operations Hook\n *\n * Custom hook for Parser CRUD operations with Apollo Client.\n * Integrates with the Parser Zustand store for state management.\n */\n\nimport { useState, useMemo, useCallback, useEffect } from 'react';\nimport { useApolloClient } from '@apollo/client/react';\nimport { useParserStore } from '../store/parserStore';\nimport {\n ListParsersDocument,\n GetParserDocument,\n CreateParserDocument,\n UpdateParserDocument,\n DeleteParserDocument,\n ExecuteParserDocument,\n TestParserExpressionDocument,\n} from '../../generated/wspace-operations';\nimport type { Parser, ParserType, ParserStatus } from '../types';\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\ninterface UseParserOperationsOptions {\n consoleId?: string;\n skipFetch?: boolean;\n}\n\ninterface ParserFilters {\n type?: ParserType;\n status?: ParserStatus;\n}\n\ninterface CreateParserInput {\n consoleId: string;\n name: string;\n type: ParserType;\n expression: string;\n inputSinkKey: string;\n outputKey: string;\n description?: string;\n ttl?: number;\n}\n\ninterface UpdateParserInput {\n name?: string;\n description?: string;\n type?: ParserType;\n expression?: string;\n inputSinkKey?: string;\n outputKey?: string;\n // Allow explicit null so callers can distinguish \"clear caching\"\n // (send null) from \"don't touch\" (omit the field / undefined).\n ttl?: number | null;\n status?: ParserStatus;\n}\n\ninterface TestParserInput {\n type: ParserType;\n expression: string;\n // Provide EXACTLY ONE of an inline sampleData blob or a DataSink reference\n // (BOFF-5518). With a reference the backend loads the payload server-side, so\n // the client sends only the key — no data blob.\n sampleData?: unknown; // Parsed JSON object (sample mode)\n dataSinkId?: string;\n dataSinkKey?: string; // reference mode\n sampleLimit?: number; // cap rows evaluated server-side\n}\n\ninterface TestParserResult {\n success: boolean;\n output: unknown;\n error: string | null;\n executionTimeMs: number;\n // Sampling metadata for a DataSink-reference test (null for inline sampleData).\n sampled?: boolean | null;\n sampledRows?: number | null;\n totalRows?: number | null;\n}\n\ninterface ExecuteParserResult {\n parserId: string;\n success: boolean;\n output: unknown;\n error: string | null;\n executionTimeMs: number;\n cachedAt: string | null;\n}\n\n// GraphQL Query/Mutation Result Types\ninterface ListParsersResult {\n listParsers?: {\n edges: Array<{ node: Parser }>;\n pageInfo?: { hasNextPage: boolean; endCursor?: string };\n };\n}\n\ninterface GetParserResult {\n parser?: Parser;\n}\n\ninterface CreateParserResult {\n createParser?: Parser;\n}\n\ninterface UpdateParserResult {\n updateParser?: Parser;\n}\n\ninterface DeleteParserResult {\n deleteParser?: boolean;\n}\n\ninterface ExecuteParserMutationResult {\n executeParser?: {\n parserId: string;\n success: boolean;\n output: unknown;\n error: string | null;\n executionTimeMs: number;\n cachedAt: string | null;\n };\n}\n\ninterface TestParserExpressionResult {\n testParserExpression?: {\n success: boolean;\n output: unknown;\n error: string | null;\n executionTimeMs: number;\n sampled?: boolean | null;\n sampledRows?: number | null;\n totalRows?: number | null;\n };\n}\n\n// ============================================================================\n// HOOK\n// ============================================================================\n\nexport function useParserOperations(options: UseParserOperationsOptions = {}) {\n const { consoleId, skipFetch = false } = options;\n\n // Local state\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n // Apollo client\n const client = useApolloClient();\n\n // Store selectors and actions\n const parsersMap = useParserStore((state) => state.parsers);\n const setParsers = useParserStore((state) => state.setParsers);\n const addParser = useParserStore((state) => state.addParser);\n const updateParserInStore = useParserStore((state) => state.updateParser);\n const removeParser = useParserStore((state) => state.removeParser);\n const setParserTesting = useParserStore((state) => state.setParserTesting);\n\n // Memoized array of parsers\n const parsers = useMemo(() => Array.from(parsersMap.values()), [parsersMap]);\n\n // ============================================================================\n // OPERATIONS\n // ============================================================================\n\n /**\n * Fetch all parsers with optional filters\n */\n const fetchParsers = useCallback(\n async (filters?: ParserFilters): Promise<Parser[]> => {\n if (!consoleId) {\n return [];\n }\n\n try {\n setLoading(true);\n setError(null);\n\n const result = await client.query<ListParsersResult>({\n query: ListParsersDocument,\n variables: {\n consoleId,\n type: filters?.type,\n status: filters?.status,\n first: 100,\n },\n fetchPolicy: 'network-only',\n });\n\n const edges = result.data?.listParsers?.edges || [];\n const normalized = edges.map((edge: { node: Parser }) => edge.node);\n\n setParsers(normalized);\n return normalized;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to fetch parsers');\n setError(error);\n return [];\n } finally {\n setLoading(false);\n }\n },\n [client, consoleId, setParsers]\n );\n\n /**\n * Fetch a single parser by ID\n */\n const fetchParser = useCallback(\n async (id: string): Promise<Parser | null> => {\n try {\n setLoading(true);\n setError(null);\n\n const result = await client.query<GetParserResult>({\n query: GetParserDocument,\n variables: { id },\n fetchPolicy: 'network-only',\n });\n\n const parser = result.data?.parser;\n if (parser) {\n addParser(parser);\n return parser;\n }\n\n return null;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to fetch parser');\n setError(error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [client, addParser]\n );\n\n /**\n * Create a new parser\n */\n const createParser = useCallback(\n async (input: CreateParserInput): Promise<Parser | null> => {\n try {\n setLoading(true);\n setError(null);\n\n const result = await client.mutate<CreateParserResult>({\n mutation: CreateParserDocument,\n variables: { input },\n });\n\n const parser = result.data?.createParser;\n if (parser) {\n addParser(parser);\n return parser;\n }\n\n return null;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to create parser');\n setError(error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [client, addParser]\n );\n\n /**\n * Update an existing parser\n */\n const updateParser = useCallback(\n async (id: string, input: UpdateParserInput, version: number): Promise<Parser | null> => {\n try {\n setLoading(true);\n setError(null);\n\n const result = await client.mutate<UpdateParserResult>({\n mutation: UpdateParserDocument,\n variables: { id, input, version },\n });\n\n const parser = result.data?.updateParser;\n if (parser) {\n updateParserInStore(id, parser);\n return parser;\n }\n\n return null;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to update parser');\n setError(error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [client, updateParserInStore]\n );\n\n /**\n * Delete a parser\n */\n const deleteParser = useCallback(\n async (id: string): Promise<boolean> => {\n try {\n setLoading(true);\n setError(null);\n\n await client.mutate<DeleteParserResult>({\n mutation: DeleteParserDocument,\n variables: { id },\n });\n\n removeParser(id);\n return true;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to delete parser');\n setError(error);\n return false;\n } finally {\n setLoading(false);\n }\n },\n [client, removeParser]\n );\n\n /**\n * Execute a parser against its input data sink\n */\n const executeParser = useCallback(\n async (id: string): Promise<ExecuteParserResult | null> => {\n try {\n setLoading(true);\n setError(null);\n setParserTesting(id, true);\n\n const result = await client.mutate<ExecuteParserMutationResult>({\n mutation: ExecuteParserDocument,\n variables: { id },\n });\n\n const execution = result.data?.executeParser;\n if (execution) {\n return {\n parserId: execution.parserId,\n success: execution.success,\n output: execution.output,\n error: execution.error,\n executionTimeMs: execution.executionTimeMs,\n cachedAt: execution.cachedAt,\n };\n }\n\n return null;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to execute parser');\n setError(error);\n return null;\n } finally {\n setLoading(false);\n setParserTesting(id, false);\n }\n },\n [client, setParserTesting]\n );\n\n /**\n * Test a parser expression with sample input\n */\n const testParserExpression = useCallback(\n async (input: TestParserInput): Promise<TestParserResult | null> => {\n try {\n setLoading(true);\n setError(null);\n\n const result = await client.query<TestParserExpressionResult>({\n query: TestParserExpressionDocument,\n variables: { input },\n fetchPolicy: 'network-only',\n });\n\n const testResult = result.data?.testParserExpression;\n if (testResult) {\n return {\n success: testResult.success,\n output: testResult.output,\n error: testResult.error,\n executionTimeMs: testResult.executionTimeMs,\n sampled: testResult.sampled,\n sampledRows: testResult.sampledRows,\n totalRows: testResult.totalRows,\n };\n }\n\n return null;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to test expression');\n setError(error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [client]\n );\n\n /**\n * Refetch all parsers\n */\n const refetch = useCallback(async () => {\n await fetchParsers();\n }, [fetchParsers]);\n\n // Auto-fetch on mount if not skipped\n useEffect(() => {\n if (consoleId && !skipFetch) {\n fetchParsers();\n }\n }, [consoleId, skipFetch, fetchParsers]);\n\n return {\n loading,\n error,\n parsers,\n fetchParsers,\n fetchParser,\n createParser,\n updateParser,\n deleteParser,\n executeParser,\n testParserExpression,\n refetch,\n };\n}\n\nexport default useParserOperations;\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"usePipelineOperations.d.ts","sourceRoot":"","sources":["../../../src/bigconsole/hooks/usePipelineOperations.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgBH,OAAO,KAAK,EACV,QAAQ,EACR,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,UAAU,EACX,MAAM,UAAU,CAAC;AAMlB,UAAU,4BAA4B;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,UAAU,eAAe;IACvB,MAAM,CAAC,EAAE,cAAc,CAAC;CACzB;AAED,UAAU,mBAAmB;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,MAAM,CAAC,EAAE,wBAAwB,EAAE,CAAC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,UAAU,mBAAmB;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,UAAU,wBAAwB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,wBAAwB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,iBAAiB;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,oBAAoB;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAkED,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,4BAAiC;;;;+BAqC3D,eAAe,KAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;wBAyC3C,MAAM,KAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;4BAiC9B,mBAAmB,KAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;yBAgCjD,MAAM,SAAS,mBAAmB,WAAW,MAAM,KAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;yBAgC9E,MAAM,KAAG,OAAO,CAAC,OAAO,CAAC;2BA2BjB,MAAM,SAAS,wBAAwB,WAAW,MAAM,KAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;2BAgCtF,MAAM,SAAS,wBAAwB,WAAW,MAAM,KAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;2BAuCxF,MAAM,WAAW,MAAM,KAAG,OAAO,CAAC,OAAO,CAAC;gCAmCvC,MAAM,YAAY,MAAM,EAAE,WAAW,MAAM,KAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;0BAgC3E,iBAAiB,KAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;6BAoCrD,oBAAoB,KAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;uBAiC3D,MAAM,KAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;iCA2BlC,MAAM,KAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;;EAwD3D;AAED,eAAe,qBAAqB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"usePipelineOperations.js","names":[],"sources":["../../../src/bigconsole/hooks/usePipelineOperations.ts"],"sourcesContent":["/**\n * Pipeline Operations Hook\n *\n * Custom hook for Pipeline CRUD operations with Apollo Client.\n * Integrates with the Pipeline Zustand store for state management.\n */\n\nimport { useState, useMemo, useCallback, useEffect, useRef } from 'react';\nimport { useApolloClient } from '@apollo/client/react';\nimport { usePipelineStore } from '../store/pipelineStore';\nimport {\n ListPipelinesDocument,\n GetPipelineDocument,\n CreatePipelineDocument,\n UpdatePipelineDocument,\n DeletePipelineDocument,\n TestPipelineDocument,\n ExecutePipelineDocument,\n GetPipelineExecutionDocument,\n ListPipelineExecutionsDocument,\n} from '../../generated/wspace-operations';\nimport type {\n Pipeline,\n PipelineStage,\n PipelineStatus,\n PipelineExecution,\n StageErrorHandling,\n ParserType,\n} from '../types';\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\ninterface UsePipelineOperationsOptions {\n consoleId?: string;\n skipFetch?: boolean;\n}\n\ninterface PipelineFilters {\n status?: PipelineStatus;\n}\n\ninterface CreatePipelineInput {\n consoleId: string;\n name: string;\n description?: string;\n status?: PipelineStatus;\n stages?: CreatePipelineStageInput[];\n metadata?: Record<string, unknown>;\n}\n\ninterface UpdatePipelineInput {\n name?: string;\n description?: string;\n status?: PipelineStatus;\n metadata?: Record<string, unknown>;\n}\n\ninterface CreatePipelineStageInput {\n parserId: string;\n parserName?: string;\n parserType?: ParserType;\n expression?: string;\n inputKey?: string;\n outputKey?: string;\n enabled?: boolean;\n onError?: StageErrorHandling;\n fallbackValue?: unknown;\n description?: string;\n}\n\ninterface UpdatePipelineStageInput {\n parserId?: string;\n parserName?: string;\n parserType?: ParserType;\n expression?: string;\n inputKey?: string;\n outputKey?: string;\n enabled?: boolean;\n onError?: StageErrorHandling;\n fallbackValue?: unknown;\n description?: string;\n}\n\ninterface TestPipelineInput {\n pipelineId: string;\n inputData: string; // JSON string\n}\n\ninterface ExecutePipelineInput {\n pipelineId: string;\n inputData?: string; // JSON string\n}\n\n// ============================================================================\n// GRAPHQL RESULT TYPES\n// ============================================================================\n\ninterface ListPipelinesResult {\n listPipelines?: {\n edges: Array<{ node: Pipeline; cursor: string }>;\n pageInfo?: { hasNextPage: boolean; endCursor?: string };\n totalCount?: number;\n };\n}\n\ninterface GetPipelineResult {\n pipeline?: Pipeline;\n}\n\ninterface CreatePipelineResult {\n createPipeline?: Pipeline;\n}\n\ninterface UpdatePipelineResult {\n updatePipeline?: Pipeline;\n}\n\ninterface DeletePipelineResult {\n deletePipeline?: boolean;\n}\n\ninterface AddPipelineStageResult {\n addPipelineStage?: Pipeline;\n}\n\ninterface UpdatePipelineStageResult {\n updatePipelineStage?: PipelineStage;\n}\n\ninterface RemovePipelineStageResult {\n removePipelineStage?: { id: string };\n}\n\ninterface ReorderPipelineStagesResult {\n reorderPipelineStages?: Pipeline;\n}\n\ninterface TestPipelineResult {\n testPipeline?: PipelineExecution;\n}\n\ninterface ExecutePipelineResult {\n executePipeline?: PipelineExecution;\n}\n\ninterface GetPipelineExecutionResult {\n pipelineExecution?: PipelineExecution;\n}\n\ninterface ListPipelineExecutionsResult {\n listPipelineExecutions?: PipelineExecution[];\n}\n\n// ============================================================================\n// HOOK\n// ============================================================================\n\nexport function usePipelineOperations(options: UsePipelineOperationsOptions = {}) {\n const { consoleId, skipFetch = false } = options;\n\n // Local state\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n // Apollo client\n const client = useApolloClient();\n\n // Store selectors and actions\n const pipelinesMap = usePipelineStore((state) => state.pipelines);\n const setPipelines = usePipelineStore((state) => state.setPipelines);\n const addPipeline = usePipelineStore((state) => state.addPipeline);\n const updatePipelineInStore = usePipelineStore((state) => state.updatePipeline);\n const removePipeline = usePipelineStore((state) => state.removePipeline);\n const updateStageInStore = usePipelineStore((state) => state.updateStage);\n const removeStageFromStore = usePipelineStore((state) => state.removeStage);\n const setPipelineTesting = usePipelineStore((state) => state.setPipelineTesting);\n const setTestExecution = usePipelineStore((state) => state.setTestExecution);\n const setIsTestRunning = usePipelineStore((state) => state.setIsTestRunning);\n\n const listRequest = useRef(0);\n // A scope change must never show records belonging to the previous console.\n const pipelines = useMemo(\n () => Array.from(pipelinesMap.values()).filter((pipeline) => !consoleId || pipeline.consoleId === consoleId),\n [pipelinesMap, consoleId]\n );\n\n // ============================================================================\n // OPERATIONS\n // ============================================================================\n\n /**\n * Fetch all pipelines with optional filters\n */\n const fetchPipelines = useCallback(\n async (filters?: PipelineFilters): Promise<Pipeline[]> => {\n if (!consoleId) {\n return [];\n }\n\n const request = ++listRequest.current;\n try {\n setLoading(true);\n setError(null);\n\n const result = await client.query<ListPipelinesResult>({\n query: ListPipelinesDocument,\n variables: {\n consoleId,\n status: filters?.status,\n first: 100,\n },\n fetchPolicy: 'network-only',\n });\n\n const edges = result.data?.listPipelines?.edges || [];\n const normalized = edges.map((edge: { node: Pipeline }) => edge.node);\n\n if (request !== listRequest.current) return [];\n setPipelines(normalized);\n return normalized;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to fetch pipelines');\n if (request === listRequest.current) setError(error);\n return [];\n } finally {\n if (request === listRequest.current) setLoading(false);\n }\n },\n [client, consoleId, setPipelines]\n );\n\n /**\n * Fetch a single pipeline by ID\n */\n const fetchPipeline = useCallback(\n async (id: string): Promise<Pipeline | null> => {\n try {\n setLoading(true);\n setError(null);\n\n const result = await client.query<GetPipelineResult>({\n query: GetPipelineDocument,\n variables: { id },\n fetchPolicy: 'network-only',\n });\n\n const pipeline = result.data?.pipeline;\n if (pipeline) {\n addPipeline(pipeline);\n return pipeline;\n }\n\n return null;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to fetch pipeline');\n setError(error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [client, addPipeline]\n );\n\n /**\n * Create a new pipeline\n */\n const createPipeline = useCallback(\n async (input: CreatePipelineInput): Promise<Pipeline | null> => {\n try {\n setLoading(true);\n setError(null);\n\n const result = await client.mutate<CreatePipelineResult>({\n mutation: CreatePipelineDocument,\n variables: { input },\n });\n\n const pipeline = result.data?.createPipeline;\n if (pipeline) {\n addPipeline(pipeline);\n return pipeline;\n }\n\n return null;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to create pipeline');\n setError(error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [client, addPipeline]\n );\n\n /**\n * Update an existing pipeline\n */\n const updatePipeline = useCallback(\n async (id: string, input: UpdatePipelineInput, version: number): Promise<Pipeline | null> => {\n try {\n setLoading(true);\n setError(null);\n\n const result = await client.mutate<UpdatePipelineResult>({\n mutation: UpdatePipelineDocument,\n variables: { id, input, version },\n });\n\n const pipeline = result.data?.updatePipeline;\n if (pipeline) {\n updatePipelineInStore(id, pipeline);\n return pipeline;\n }\n\n return null;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to update pipeline');\n setError(error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [client, updatePipelineInStore]\n );\n\n /**\n * Delete a pipeline\n */\n const deletePipeline = useCallback(\n async (id: string): Promise<boolean> => {\n try {\n setLoading(true);\n setError(null);\n\n await client.mutate<DeletePipelineResult>({\n mutation: DeletePipelineDocument,\n variables: { id },\n });\n\n removePipeline(id);\n return true;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to delete pipeline');\n setError(error);\n return false;\n } finally {\n setLoading(false);\n }\n },\n [client, removePipeline]\n );\n\n /**\n * Add a stage to a pipeline\n */\n const addStage = useCallback(\n async (pipelineId: string, input: CreatePipelineStageInput, version: number): Promise<Pipeline | null> => {\n try {\n setLoading(true);\n setError(null);\n\n const result = await client.mutate<AddPipelineStageResult>({\n mutation: CreatePipelineDocument, // Note: addStage is not available in schema, using create pipeline\n variables: { pipelineId, input, version },\n });\n\n const pipeline = result.data?.addPipelineStage;\n if (pipeline) {\n updatePipelineInStore(pipelineId, pipeline);\n return pipeline;\n }\n\n return null;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to add stage');\n setError(error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [client, updatePipelineInStore]\n );\n\n /**\n * Update a pipeline stage\n */\n const updateStage = useCallback(\n async (stageId: string, input: UpdatePipelineStageInput, version: number): Promise<PipelineStage | null> => {\n try {\n setLoading(true);\n setError(null);\n\n const result = await client.mutate<UpdatePipelineStageResult>({\n mutation: UpdatePipelineDocument, // Note: updateStage is not available in schema, using update pipeline\n variables: { stageId, input, version },\n });\n\n const stage = result.data?.updatePipelineStage;\n if (stage) {\n // Find pipeline containing this stage and update\n const pipeline = Array.from(pipelinesMap.values()).find((p) => p.stages?.some((s) => s.id === stageId));\n if (pipeline) {\n const stageIndex = pipeline.stages?.findIndex((s) => s.id === stageId);\n if (stageIndex !== undefined && stageIndex >= 0) {\n updateStageInStore(pipeline.id, stageIndex, stage);\n }\n }\n return stage;\n }\n\n return null;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to update stage');\n setError(error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [client, pipelinesMap, updateStageInStore]\n );\n\n /**\n * Remove a stage from a pipeline\n */\n const removeStage = useCallback(\n async (stageId: string, version: number): Promise<boolean> => {\n try {\n setLoading(true);\n setError(null);\n\n await client.mutate<RemovePipelineStageResult>({\n mutation: DeletePipelineDocument, // Note: removeStage is not available in schema\n variables: { stageId, version },\n });\n\n // Find pipeline containing this stage and remove\n const pipeline = Array.from(pipelinesMap.values()).find((p) => p.stages?.some((s) => s.id === stageId));\n if (pipeline) {\n const stageIndex = pipeline.stages?.findIndex((s) => s.id === stageId);\n if (stageIndex !== undefined && stageIndex >= 0) {\n removeStageFromStore(pipeline.id, stageIndex);\n }\n }\n\n return true;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to remove stage');\n setError(error);\n return false;\n } finally {\n setLoading(false);\n }\n },\n [client, pipelinesMap, removeStageFromStore]\n );\n\n /**\n * Reorder stages in a pipeline\n */\n const reorderStages = useCallback(\n async (pipelineId: string, stageIds: string[], version: number): Promise<Pipeline | null> => {\n try {\n setLoading(true);\n setError(null);\n\n const result = await client.mutate<ReorderPipelineStagesResult>({\n mutation: UpdatePipelineDocument, // Note: reorderStages is not available in schema\n variables: { pipelineId, stageIds, version },\n });\n\n const pipeline = result.data?.reorderPipelineStages;\n if (pipeline) {\n updatePipelineInStore(pipelineId, pipeline);\n return pipeline;\n }\n\n return null;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to reorder stages');\n setError(error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [client, updatePipelineInStore]\n );\n\n /**\n * Test a pipeline with sample input (dry run)\n */\n const testPipeline = useCallback(\n async (input: TestPipelineInput): Promise<PipelineExecution | null> => {\n try {\n setLoading(true);\n setError(null);\n setIsTestRunning(true);\n setPipelineTesting(input.pipelineId, true);\n\n const result = await client.mutate<TestPipelineResult>({\n mutation: TestPipelineDocument,\n variables: { input },\n });\n\n const execution = result.data?.testPipeline;\n if (execution) {\n setTestExecution(execution);\n return execution;\n }\n\n return null;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to test pipeline');\n setError(error);\n return null;\n } finally {\n setLoading(false);\n setIsTestRunning(false);\n setPipelineTesting(input.pipelineId, false);\n }\n },\n [client, setIsTestRunning, setPipelineTesting, setTestExecution]\n );\n\n /**\n * Execute a pipeline for real\n */\n const executePipeline = useCallback(\n async (input: ExecutePipelineInput): Promise<PipelineExecution | null> => {\n try {\n setLoading(true);\n setError(null);\n setPipelineTesting(input.pipelineId, true);\n\n const result = await client.mutate<ExecutePipelineResult>({\n mutation: ExecutePipelineDocument,\n variables: { input },\n });\n\n const execution = result.data?.executePipeline;\n if (execution) {\n return execution;\n }\n\n return null;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to execute pipeline');\n setError(error);\n return null;\n } finally {\n setLoading(false);\n setPipelineTesting(input.pipelineId, false);\n }\n },\n [client, setPipelineTesting]\n );\n\n /**\n * Get a specific pipeline execution by ID\n */\n const getExecution = useCallback(\n async (id: string): Promise<PipelineExecution | null> => {\n try {\n setLoading(true);\n setError(null);\n\n const result = await client.query<GetPipelineExecutionResult>({\n query: GetPipelineExecutionDocument,\n variables: { id },\n fetchPolicy: 'network-only',\n });\n\n return result.data?.pipelineExecution || null;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to get execution');\n setError(error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [client]\n );\n\n /**\n * List executions for a pipeline\n */\n const listExecutions = useCallback(\n async (pipelineId: string): Promise<PipelineExecution[]> => {\n try {\n setLoading(true);\n setError(null);\n\n const result = await client.query<ListPipelineExecutionsResult>({\n query: ListPipelineExecutionsDocument,\n variables: { pipelineId, first: 50 },\n fetchPolicy: 'network-only',\n });\n\n return result.data?.listPipelineExecutions || [];\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to list executions');\n setError(error);\n return [];\n } finally {\n setLoading(false);\n }\n },\n [client]\n );\n\n /**\n * Refetch all pipelines\n */\n const refetch = useCallback(async () => {\n await fetchPipelines();\n }, [fetchPipelines]);\n\n // Auto-fetch on mount if not skipped\n useEffect(() => {\n if (consoleId && !skipFetch) {\n fetchPipelines();\n }\n }, [consoleId, skipFetch, fetchPipelines]);\n\n return {\n loading,\n error,\n pipelines,\n fetchPipelines,\n fetchPipeline,\n createPipeline,\n updatePipeline,\n deletePipeline,\n addStage,\n updateStage,\n removeStage,\n reorderStages,\n testPipeline,\n executePipeline,\n getExecution,\n listExecutions,\n refetch,\n };\n}\n\nexport default usePipelineOperations;\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useShareRecipients.d.ts","sourceRoot":"","sources":["../../../src/bigconsole/hooks/useShareRecipients.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAOhE,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,kBAAkB,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACrB;AAUD,iGAAiG;AACjG,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM;;;;;;;;;;EAsLlE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useShareRecipients.js","names":[],"sources":["../../../src/bigconsole/hooks/useShareRecipients.ts"],"sourcesContent":["import { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { useApolloClient } from '@apollo/client/react';\nimport { useBigConsole } from '../context';\nimport type { ShareRecipientType } from './useDashboardSharing';\nimport {\n BigConsoleShareMembersDocument as MEMBERS,\n BigConsoleShareMemberIdentitiesDocument as IDENTITIES,\n BigConsoleShareGroupsDocument as GROUPS,\n} from '../../generated/wspace-operations';\n\nexport interface ShareRecipient {\n id: string;\n name: string;\n email?: string;\n type: ShareRecipientType;\n workspaceId: string;\n}\ninterface DirectoryPage {\n owner: string;\n items: ShareRecipient[];\n loading: boolean;\n error: boolean;\n hasMore: boolean;\n}\nconst EMPTY: DirectoryPage = { owner: '', items: [], loading: false, error: false, hasMore: false };\n\n/** Discover only members/groups of the selected workspace; never use a global user directory. */\nexport function useShareRecipients(enabled: boolean, search: string) {\n const client = useApolloClient();\n const { workspaceId, currentUser } = useBigConsole();\n const owner = `${currentUser?.id ?? ''}|${workspaceId ?? ''}`;\n const activeOwner = useRef<string | null>(null);\n useLayoutEffect(() => {\n activeOwner.current = enabled ? owner : null;\n return () => {\n activeOwner.current = null;\n };\n }, [owner, enabled]);\n const [members, setMembers] = useState(EMPTY);\n const [groups, setGroups] = useState(EMPTY);\n const [pagination, setPagination] = useState({ owner: '', offset: 0 });\n const offset = pagination.owner === owner ? pagination.offset : 0;\n const [retryVersion, setRetryVersion] = useState(0);\n const [groupSearch, setGroupSearch] = useState('');\n useEffect(() => {\n if (enabled) return;\n let cancelled = false;\n void Promise.resolve().then(() => {\n if (!cancelled) setPagination({ owner: '', offset: 0 });\n });\n return () => {\n cancelled = true;\n };\n }, [enabled]);\n useEffect(() => {\n const timer = window.setTimeout(() => setGroupSearch(search.trim()), 250);\n return () => window.clearTimeout(timer);\n }, [search]);\n\n useEffect(() => {\n if (!enabled || !workspaceId || !currentUser?.id) return;\n let cancelled = false;\n void Promise.resolve().then(() => {\n if (cancelled || activeOwner.current !== owner) return;\n setMembers((previous) => ({\n owner,\n items: previous.owner === owner && offset > 0 ? previous.items : [],\n loading: true,\n error: false,\n hasMore: false,\n }));\n });\n const context = { requiredWorkspaceAuth: true, requiredWorkspaceId: workspaceId, queryDeduplication: false };\n const load = async () => {\n try {\n const result = await client.query<{\n workspaceMembers: { items: { userId: string; workspaceId: string; status: string }[]; hasMore: boolean };\n }>({\n query: MEMBERS,\n variables: { workspaceId, offset },\n fetchPolicy: 'no-cache',\n errorPolicy: 'none',\n context,\n });\n const page = result.data?.workspaceMembers;\n if (!page) throw new Error('Directory did not return members');\n const ids = page.items\n .filter((member) => member.workspaceId === workspaceId && member.status.toLowerCase() === 'active')\n .map((member) => member.userId);\n const names: Record<string, { displayName: string; email?: string }> = {};\n // Resolve scoped identities in conservative batches of 50 users.\n for (let index = 0; index < ids.length; index += 50) {\n const identity = await client.query<{\n workspaceMemberIdentities: { userId: string; displayName: string; email?: string | null }[];\n }>({\n query: IDENTITIES,\n variables: { workspaceId, userIds: ids.slice(index, index + 50) },\n fetchPolicy: 'no-cache',\n errorPolicy: 'none',\n context,\n });\n for (const profile of identity.data?.workspaceMemberIdentities ?? []) {\n names[profile.userId] = {\n displayName: profile.displayName,\n ...(profile.email ? { email: profile.email } : {}),\n };\n }\n }\n if (cancelled || activeOwner.current !== owner) return;\n const items: ShareRecipient[] = ids.map((id) => ({\n id,\n name: names[id]?.displayName || id,\n email: names[id]?.email,\n type: 'USER',\n workspaceId,\n }));\n setMembers((previous) => ({\n owner,\n items:\n offset > 0 && previous.owner === owner\n ? [...new Map([...previous.items, ...items].map((item) => [item.id, item])).values()]\n : items,\n loading: false,\n error: false,\n hasMore: page.hasMore,\n }));\n } catch {\n if (!cancelled && activeOwner.current === owner)\n setMembers((previous) => ({\n owner,\n items: previous.owner === owner ? previous.items : [],\n loading: false,\n error: true,\n hasMore: false,\n }));\n }\n };\n void load();\n return () => {\n cancelled = true;\n };\n }, [client, enabled, workspaceId, currentUser?.id, owner, offset, retryVersion]);\n\n useEffect(() => {\n if (!enabled || !workspaceId || !currentUser?.id) return;\n let cancelled = false;\n void Promise.resolve().then(() => {\n if (!cancelled && activeOwner.current === owner) setGroups({ ...EMPTY, owner, loading: true });\n });\n void client\n .query<{\n groups: {\n edges: { node: { id: string; name: string; workspaceId: string } }[];\n pageInfo: { hasNextPage: boolean };\n };\n }>({\n query: GROUPS,\n variables: { search: groupSearch },\n fetchPolicy: 'no-cache',\n errorPolicy: 'none',\n context: { requiredWorkspaceAuth: true, requiredWorkspaceId: workspaceId, queryDeduplication: false },\n })\n .then((result) => {\n if (cancelled || activeOwner.current !== owner) return;\n if (!result.data?.groups) throw new Error('Directory did not return groups');\n setGroups({\n owner,\n items: result.data.groups.edges\n .filter(({ node }) => node.workspaceId === workspaceId)\n .map(({ node }) => ({ id: node.id, name: node.name, type: 'GROUP', workspaceId })),\n loading: false,\n error: false,\n hasMore: result.data.groups.pageInfo.hasNextPage,\n });\n })\n .catch(() => {\n if (!cancelled && activeOwner.current === owner) setGroups({ ...EMPTY, owner, error: true });\n });\n return () => {\n cancelled = true;\n };\n }, [client, enabled, workspaceId, currentUser?.id, owner, groupSearch, retryVersion]);\n\n const memberPage = enabled && members.owner === owner ? members : EMPTY;\n const groupPage = enabled && groups.owner === owner ? groups : EMPTY;\n const results = useMemo(() => {\n const needle = search.trim().toLowerCase();\n return [...memberPage.items, ...groupPage.items].filter(\n (item) =>\n !needle ||\n item.name.toLowerCase().includes(needle) ||\n item.email?.toLowerCase().includes(needle) ||\n item.id.toLowerCase().includes(needle)\n );\n }, [memberPage.items, groupPage.items, search]);\n return {\n results,\n owner,\n workspaceId,\n loading: memberPage.loading || groupPage.loading,\n error: memberPage.error || groupPage.error,\n hasMoreMembers: memberPage.hasMore,\n hasMoreGroups: groupPage.hasMore,\n loadMoreMembers: useCallback(\n () => setPagination((previous) => ({ owner, offset: previous.owner === owner ? previous.offset + 100 : 100 })),\n [owner]\n ),\n retry: useCallback(() => setRetryVersion((previous) => previous + 1), []),\n };\n}\n"],"mappings":"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"}