@ic3/reporting-api 9.0.1 → 9.1.0

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 (292) hide show
  1. package/README.md +1 -1
  2. package/dist/index.cjs +1906 -0
  3. package/dist/index.cjs.map +1 -0
  4. package/dist/index.d.ts +11280 -81
  5. package/dist/index.js +1782 -96
  6. package/dist/index.js.map +1 -1
  7. package/package.json +51 -19
  8. package/dist/ApiUtils.d.ts +0 -57
  9. package/dist/ApiUtils.js +0 -79
  10. package/dist/ApiUtils.js.map +0 -1
  11. package/dist/ILocalizationManager.d.ts +0 -3
  12. package/dist/ILocalizationManager.js +0 -3
  13. package/dist/ILocalizationManager.js.map +0 -1
  14. package/dist/IMigrationManager.d.ts +0 -4
  15. package/dist/IMigrationManager.js +0 -3
  16. package/dist/IMigrationManager.js.map +0 -1
  17. package/dist/INotification.d.ts +0 -84
  18. package/dist/INotification.js +0 -3
  19. package/dist/INotification.js.map +0 -1
  20. package/dist/IOnNewEventJsContext.d.ts +0 -85
  21. package/dist/IOnNewEventJsContext.js +0 -3
  22. package/dist/IOnNewEventJsContext.js.map +0 -1
  23. package/dist/IPluginDefinition.d.ts +0 -41
  24. package/dist/IPluginDefinition.js +0 -3
  25. package/dist/IPluginDefinition.js.map +0 -1
  26. package/dist/IRemotePluginName.d.ts +0 -5
  27. package/dist/IRemotePluginName.js +0 -3
  28. package/dist/IRemotePluginName.js.map +0 -1
  29. package/dist/IThemeManager.d.ts +0 -87
  30. package/dist/IThemeManager.js +0 -8
  31. package/dist/IThemeManager.js.map +0 -1
  32. package/dist/ITidyTableTransformation.d.ts +0 -44
  33. package/dist/ITidyTableTransformation.js +0 -3
  34. package/dist/ITidyTableTransformation.js.map +0 -1
  35. package/dist/ITidyTableTransformationManager.d.ts +0 -4
  36. package/dist/ITidyTableTransformationManager.js +0 -3
  37. package/dist/ITidyTableTransformationManager.js.map +0 -1
  38. package/dist/ITypes.d.ts +0 -43
  39. package/dist/ITypes.js +0 -38
  40. package/dist/ITypes.js.map +0 -1
  41. package/dist/IUserMenuOptionManager.d.ts +0 -13
  42. package/dist/IUserMenuOptionManager.js +0 -3
  43. package/dist/IUserMenuOptionManager.js.map +0 -1
  44. package/dist/IVersionedPluginDefinition.d.ts +0 -8
  45. package/dist/IVersionedPluginDefinition.js +0 -3
  46. package/dist/IVersionedPluginDefinition.js.map +0 -1
  47. package/dist/IWidgetDefaultsManager.d.ts +0 -4
  48. package/dist/IWidgetDefaultsManager.js +0 -3
  49. package/dist/IWidgetDefaultsManager.js.map +0 -1
  50. package/dist/IWidgetManager.d.ts +0 -7
  51. package/dist/IWidgetManager.js +0 -3
  52. package/dist/IWidgetManager.js.map +0 -1
  53. package/dist/IWidgetVariantManager.d.ts +0 -22
  54. package/dist/IWidgetVariantManager.js +0 -3
  55. package/dist/IWidgetVariantManager.js.map +0 -1
  56. package/dist/IcEvent.d.ts +0 -59
  57. package/dist/IcEvent.js +0 -27
  58. package/dist/IcEvent.js.map +0 -1
  59. package/dist/LazyTreeView.d.ts +0 -130
  60. package/dist/LazyTreeView.js +0 -3
  61. package/dist/LazyTreeView.js.map +0 -1
  62. package/dist/Logger.d.ts +0 -13
  63. package/dist/Logger.js +0 -3
  64. package/dist/Logger.js.map +0 -1
  65. package/dist/PublicAmCharts4Base.d.ts +0 -91
  66. package/dist/PublicAmCharts4Base.js +0 -3
  67. package/dist/PublicAmCharts4Base.js.map +0 -1
  68. package/dist/PublicAmchartsData.d.ts +0 -116
  69. package/dist/PublicAmchartsData.js +0 -170
  70. package/dist/PublicAmchartsData.js.map +0 -1
  71. package/dist/PublicCommon.d.ts +0 -1
  72. package/dist/PublicCommon.js +0 -3
  73. package/dist/PublicCommon.js.map +0 -1
  74. package/dist/PublicContext.d.ts +0 -389
  75. package/dist/PublicContext.js +0 -19
  76. package/dist/PublicContext.js.map +0 -1
  77. package/dist/PublicDateShortcutUtils.d.ts +0 -41
  78. package/dist/PublicDateShortcutUtils.js +0 -3
  79. package/dist/PublicDateShortcutUtils.js.map +0 -1
  80. package/dist/PublicI18n.d.ts +0 -8
  81. package/dist/PublicI18n.js +0 -3
  82. package/dist/PublicI18n.js.map +0 -1
  83. package/dist/PublicLayout.d.ts +0 -247
  84. package/dist/PublicLayout.js +0 -3
  85. package/dist/PublicLayout.js.map +0 -1
  86. package/dist/PublicTemplate.d.ts +0 -630
  87. package/dist/PublicTemplate.js +0 -33
  88. package/dist/PublicTemplate.js.map +0 -1
  89. package/dist/PublicTemplateExprForm.d.ts +0 -30
  90. package/dist/PublicTemplateExprForm.js +0 -3
  91. package/dist/PublicTemplateExprForm.js.map +0 -1
  92. package/dist/PublicTemplateForm.d.ts +0 -866
  93. package/dist/PublicTemplateForm.js +0 -122
  94. package/dist/PublicTemplateForm.js.map +0 -1
  95. package/dist/PublicTemplates.d.ts +0 -70
  96. package/dist/PublicTemplates.js +0 -3
  97. package/dist/PublicTemplates.js.map +0 -1
  98. package/dist/PublicTheme.d.ts +0 -1013
  99. package/dist/PublicTheme.js +0 -14
  100. package/dist/PublicTheme.js.map +0 -1
  101. package/dist/PublicTidyColumn.d.ts +0 -755
  102. package/dist/PublicTidyColumn.js +0 -100
  103. package/dist/PublicTidyColumn.js.map +0 -1
  104. package/dist/PublicTidyHistogram.d.ts +0 -81
  105. package/dist/PublicTidyHistogram.js +0 -105
  106. package/dist/PublicTidyHistogram.js.map +0 -1
  107. package/dist/PublicTidyMath.d.ts +0 -175
  108. package/dist/PublicTidyMath.js +0 -3
  109. package/dist/PublicTidyMath.js.map +0 -1
  110. package/dist/PublicTidyTable.d.ts +0 -534
  111. package/dist/PublicTidyTable.js +0 -3
  112. package/dist/PublicTidyTable.js.map +0 -1
  113. package/dist/PublicTidyTableInteractions.d.ts +0 -317
  114. package/dist/PublicTidyTableInteractions.js +0 -31
  115. package/dist/PublicTidyTableInteractions.js.map +0 -1
  116. package/dist/PublicTidyTableTypeGuards.d.ts +0 -6
  117. package/dist/PublicTidyTableTypeGuards.js +0 -36
  118. package/dist/PublicTidyTableTypeGuards.js.map +0 -1
  119. package/dist/PublicTidyTableTypes.d.ts +0 -480
  120. package/dist/PublicTidyTableTypes.js +0 -154
  121. package/dist/PublicTidyTableTypes.js.map +0 -1
  122. package/dist/PublicTidyTree.d.ts +0 -71
  123. package/dist/PublicTidyTree.js +0 -89
  124. package/dist/PublicTidyTree.js.map +0 -1
  125. package/dist/RemoteContainerUtils.d.ts +0 -9
  126. package/dist/RemoteContainerUtils.js +0 -49
  127. package/dist/RemoteContainerUtils.js.map +0 -1
  128. package/dist/ReportingVersion.d.ts +0 -9
  129. package/dist/ReportingVersion.js +0 -13
  130. package/dist/ReportingVersion.js.map +0 -1
  131. package/dist/ThemeAugmentation.d.ts +0 -35
  132. package/dist/ThemeAugmentation.js +0 -3
  133. package/dist/ThemeAugmentation.js.map +0 -1
  134. package/dist/theme/ThemeAIWidgetChatBot.d.ts +0 -49
  135. package/dist/theme/ThemeAIWidgetChatBot.js +0 -19
  136. package/dist/theme/ThemeAIWidgetChatBot.js.map +0 -1
  137. package/dist/theme/ThemeAlertDialog.d.ts +0 -13
  138. package/dist/theme/ThemeAlertDialog.js +0 -17
  139. package/dist/theme/ThemeAlertDialog.js.map +0 -1
  140. package/dist/theme/ThemeAmCharts4.d.ts +0 -1634
  141. package/dist/theme/ThemeAmCharts4.js +0 -84
  142. package/dist/theme/ThemeAmCharts4.js.map +0 -1
  143. package/dist/theme/ThemeApp.d.ts +0 -66
  144. package/dist/theme/ThemeApp.js +0 -64
  145. package/dist/theme/ThemeApp.js.map +0 -1
  146. package/dist/theme/ThemeAppMenuIcon.d.ts +0 -7
  147. package/dist/theme/ThemeAppMenuIcon.js +0 -8
  148. package/dist/theme/ThemeAppMenuIcon.js.map +0 -1
  149. package/dist/theme/ThemeBaseTable.d.ts +0 -122
  150. package/dist/theme/ThemeBaseTable.js +0 -10
  151. package/dist/theme/ThemeBaseTable.js.map +0 -1
  152. package/dist/theme/ThemeCodeMirror.d.ts +0 -4
  153. package/dist/theme/ThemeCodeMirror.js +0 -8
  154. package/dist/theme/ThemeCodeMirror.js.map +0 -1
  155. package/dist/theme/ThemeDatePicker.d.ts +0 -214
  156. package/dist/theme/ThemeDatePicker.js +0 -37
  157. package/dist/theme/ThemeDatePicker.js.map +0 -1
  158. package/dist/theme/ThemeEditorTopBar.d.ts +0 -39
  159. package/dist/theme/ThemeEditorTopBar.js +0 -43
  160. package/dist/theme/ThemeEditorTopBar.js.map +0 -1
  161. package/dist/theme/ThemeEmbeddedReport.d.ts +0 -37
  162. package/dist/theme/ThemeEmbeddedReport.js +0 -9
  163. package/dist/theme/ThemeEmbeddedReport.js.map +0 -1
  164. package/dist/theme/ThemeErrorRenderer.d.ts +0 -51
  165. package/dist/theme/ThemeErrorRenderer.js +0 -55
  166. package/dist/theme/ThemeErrorRenderer.js.map +0 -1
  167. package/dist/theme/ThemeFilter.d.ts +0 -28
  168. package/dist/theme/ThemeFilter.js +0 -3
  169. package/dist/theme/ThemeFilter.js.map +0 -1
  170. package/dist/theme/ThemeFilterAutocomplete.d.ts +0 -58
  171. package/dist/theme/ThemeFilterAutocomplete.js +0 -15
  172. package/dist/theme/ThemeFilterAutocomplete.js.map +0 -1
  173. package/dist/theme/ThemeFilterButtons.d.ts +0 -74
  174. package/dist/theme/ThemeFilterButtons.js +0 -23
  175. package/dist/theme/ThemeFilterButtons.js.map +0 -1
  176. package/dist/theme/ThemeFilterCheckboxRadio.d.ts +0 -52
  177. package/dist/theme/ThemeFilterCheckboxRadio.js +0 -23
  178. package/dist/theme/ThemeFilterCheckboxRadio.js.map +0 -1
  179. package/dist/theme/ThemeFilterPanel.d.ts +0 -243
  180. package/dist/theme/ThemeFilterPanel.js +0 -127
  181. package/dist/theme/ThemeFilterPanel.js.map +0 -1
  182. package/dist/theme/ThemeFilterPanelViewsMenu.d.ts +0 -8
  183. package/dist/theme/ThemeFilterPanelViewsMenu.js +0 -12
  184. package/dist/theme/ThemeFilterPanelViewsMenu.js.map +0 -1
  185. package/dist/theme/ThemeFilterSlider.d.ts +0 -92
  186. package/dist/theme/ThemeFilterSlider.js +0 -41
  187. package/dist/theme/ThemeFilterSlider.js.map +0 -1
  188. package/dist/theme/ThemeFilterSwitch.d.ts +0 -41
  189. package/dist/theme/ThemeFilterSwitch.js +0 -15
  190. package/dist/theme/ThemeFilterSwitch.js.map +0 -1
  191. package/dist/theme/ThemeFilterTree.d.ts +0 -112
  192. package/dist/theme/ThemeFilterTree.js +0 -23
  193. package/dist/theme/ThemeFilterTree.js.map +0 -1
  194. package/dist/theme/ThemeGlobal.d.ts +0 -4
  195. package/dist/theme/ThemeGlobal.js +0 -9
  196. package/dist/theme/ThemeGlobal.js.map +0 -1
  197. package/dist/theme/ThemeGoogle.d.ts +0 -132
  198. package/dist/theme/ThemeGoogle.js +0 -64
  199. package/dist/theme/ThemeGoogle.js.map +0 -1
  200. package/dist/theme/ThemeGoogleHeatMap.d.ts +0 -58
  201. package/dist/theme/ThemeGoogleHeatMap.js +0 -3
  202. package/dist/theme/ThemeGoogleHeatMap.js.map +0 -1
  203. package/dist/theme/ThemeGoogleKmlLayer.d.ts +0 -40
  204. package/dist/theme/ThemeGoogleKmlLayer.js +0 -3
  205. package/dist/theme/ThemeGoogleKmlLayer.js.map +0 -1
  206. package/dist/theme/ThemeGoogleMarker.d.ts +0 -147
  207. package/dist/theme/ThemeGoogleMarker.js +0 -3
  208. package/dist/theme/ThemeGoogleMarker.js.map +0 -1
  209. package/dist/theme/ThemeHomeCard.d.ts +0 -9
  210. package/dist/theme/ThemeHomeCard.js +0 -10
  211. package/dist/theme/ThemeHomeCard.js.map +0 -1
  212. package/dist/theme/ThemeHomeConsole.d.ts +0 -16
  213. package/dist/theme/ThemeHomeConsole.js +0 -20
  214. package/dist/theme/ThemeHomeConsole.js.map +0 -1
  215. package/dist/theme/ThemeHtmlBox.d.ts +0 -33
  216. package/dist/theme/ThemeHtmlBox.js +0 -11
  217. package/dist/theme/ThemeHtmlBox.js.map +0 -1
  218. package/dist/theme/ThemeIc3CustomDrilldownMenu.d.ts +0 -7
  219. package/dist/theme/ThemeIc3CustomDrilldownMenu.js +0 -11
  220. package/dist/theme/ThemeIc3CustomDrilldownMenu.js.map +0 -1
  221. package/dist/theme/ThemeIc3TableCell.d.ts +0 -10
  222. package/dist/theme/ThemeIc3TableCell.js +0 -7
  223. package/dist/theme/ThemeIc3TableCell.js.map +0 -1
  224. package/dist/theme/ThemeIc3TableCellDrilldown.d.ts +0 -12
  225. package/dist/theme/ThemeIc3TableCellDrilldown.js +0 -11
  226. package/dist/theme/ThemeIc3TableCellDrilldown.js.map +0 -1
  227. package/dist/theme/ThemeIc3WidgetBoxSpinner.d.ts +0 -15
  228. package/dist/theme/ThemeIc3WidgetBoxSpinner.js +0 -13
  229. package/dist/theme/ThemeIc3WidgetBoxSpinner.js.map +0 -1
  230. package/dist/theme/ThemeImage.d.ts +0 -30
  231. package/dist/theme/ThemeImage.js +0 -12
  232. package/dist/theme/ThemeImage.js.map +0 -1
  233. package/dist/theme/ThemeKpiBox.d.ts +0 -33
  234. package/dist/theme/ThemeKpiBox.js +0 -3
  235. package/dist/theme/ThemeKpiBox.js.map +0 -1
  236. package/dist/theme/ThemeKpiCard.d.ts +0 -133
  237. package/dist/theme/ThemeKpiCard.js +0 -19
  238. package/dist/theme/ThemeKpiCard.js.map +0 -1
  239. package/dist/theme/ThemeLayout.d.ts +0 -10
  240. package/dist/theme/ThemeLayout.js +0 -14
  241. package/dist/theme/ThemeLayout.js.map +0 -1
  242. package/dist/theme/ThemeLayoutPage.d.ts +0 -24
  243. package/dist/theme/ThemeLayoutPage.js +0 -28
  244. package/dist/theme/ThemeLayoutPage.js.map +0 -1
  245. package/dist/theme/ThemeLazyTreeClasses.d.ts +0 -29
  246. package/dist/theme/ThemeLazyTreeClasses.js +0 -31
  247. package/dist/theme/ThemeLazyTreeClasses.js.map +0 -1
  248. package/dist/theme/ThemeListCounter.d.ts +0 -15
  249. package/dist/theme/ThemeListCounter.js +0 -17
  250. package/dist/theme/ThemeListCounter.js.map +0 -1
  251. package/dist/theme/ThemeMarkdownText.d.ts +0 -27
  252. package/dist/theme/ThemeMarkdownText.js +0 -3
  253. package/dist/theme/ThemeMarkdownText.js.map +0 -1
  254. package/dist/theme/ThemePivotTable.d.ts +0 -93
  255. package/dist/theme/ThemePivotTable.js +0 -31
  256. package/dist/theme/ThemePivotTable.js.map +0 -1
  257. package/dist/theme/ThemePrintButton.d.ts +0 -29
  258. package/dist/theme/ThemePrintButton.js +0 -10
  259. package/dist/theme/ThemePrintButton.js.map +0 -1
  260. package/dist/theme/ThemeQueryBuilderNode.d.ts +0 -13
  261. package/dist/theme/ThemeQueryBuilderNode.js +0 -13
  262. package/dist/theme/ThemeQueryBuilderNode.js.map +0 -1
  263. package/dist/theme/ThemeRegexFilter.d.ts +0 -24
  264. package/dist/theme/ThemeRegexFilter.js +0 -26
  265. package/dist/theme/ThemeRegexFilter.js.map +0 -1
  266. package/dist/theme/ThemeRepetitionWidget.d.ts +0 -57
  267. package/dist/theme/ThemeRepetitionWidget.js +0 -3
  268. package/dist/theme/ThemeRepetitionWidget.js.map +0 -1
  269. package/dist/theme/ThemeReportAppBar.d.ts +0 -17
  270. package/dist/theme/ThemeReportAppBar.js +0 -21
  271. package/dist/theme/ThemeReportAppBar.js.map +0 -1
  272. package/dist/theme/ThemeReportAppLeftPanel.d.ts +0 -8
  273. package/dist/theme/ThemeReportAppLeftPanel.js +0 -12
  274. package/dist/theme/ThemeReportAppLeftPanel.js.map +0 -1
  275. package/dist/theme/ThemeSeparator.d.ts +0 -13
  276. package/dist/theme/ThemeSeparator.js +0 -3
  277. package/dist/theme/ThemeSeparator.js.map +0 -1
  278. package/dist/theme/ThemeSinglePanelFilter.d.ts +0 -18
  279. package/dist/theme/ThemeSinglePanelFilter.js +0 -3
  280. package/dist/theme/ThemeSinglePanelFilter.js.map +0 -1
  281. package/dist/theme/ThemeTable.d.ts +0 -160
  282. package/dist/theme/ThemeTable.js +0 -157
  283. package/dist/theme/ThemeTable.js.map +0 -1
  284. package/dist/theme/ThemeWidgetBox.d.ts +0 -164
  285. package/dist/theme/ThemeWidgetBox.js +0 -124
  286. package/dist/theme/ThemeWidgetBox.js.map +0 -1
  287. package/dist/theme/ThemeWidgetBoxContentMessage.d.ts +0 -11
  288. package/dist/theme/ThemeWidgetBoxContentMessage.js +0 -15
  289. package/dist/theme/ThemeWidgetBoxContentMessage.js.map +0 -1
  290. package/dist/theme/ThemeWidgetFilteredBy.d.ts +0 -5
  291. package/dist/theme/ThemeWidgetFilteredBy.js +0 -9
  292. package/dist/theme/ThemeWidgetFilteredBy.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../src/ReportingVersion.ts","../src/ApiUtils.ts","../src/IcEvent.ts","../src/IThemeManager.ts","../src/PublicTidyTableTypes.ts","../src/PublicAmchartsData.ts","../src/ITypes.ts","../src/PublicContext.ts","../src/PublicTemplate.ts","../src/PublicTemplateForm.ts","../src/PublicTheme.ts","../src/PublicTidyColumn.ts","../src/PublicTidyTableInteractions.ts","../src/PublicTidyTree.ts","../src/PublicTidyHistogram.ts","../src/RemoteContainerUtils.ts","../src/theme/ThemeAlertDialog.ts","../src/theme/ThemeAmCharts4.ts","../src/theme/ThemeApp.ts","../src/theme/ThemeBaseTable.ts","../src/theme/ThemeDatePicker.ts","../src/theme/ThemeEmbeddedReport.ts","../src/theme/ThemeErrorRenderer.ts","../src/theme/ThemeFilterAutocomplete.ts","../src/theme/ThemeFilterButtons.ts","../src/theme/ThemeFilterCheckboxRadio.ts","../src/theme/ThemeFilterPanel.ts","../src/theme/ThemeRegexFilter.ts","../src/theme/ThemeFilterSlider.ts","../src/theme/ThemeLazyTreeClasses.ts","../src/theme/ThemeFilterTree.ts","../src/theme/ThemeGlobal.ts","../src/theme/ThemeGoogle.ts","../src/theme/ThemeHtmlBox.ts","../src/theme/ThemeImage.ts","../src/theme/ThemeKpiCard.ts","../src/theme/ThemeLayout.ts","../src/theme/ThemeLayoutPage.ts","../src/theme/ThemePivotTable.ts","../src/theme/ThemePrintButton.ts","../src/theme/ThemeReportAppBar.ts","../src/theme/ThemeTable.ts","../src/theme/ThemeReportAppLeftPanel.ts","../src/theme/ThemeWidgetBox.ts","../src/theme/ThemeWidgetBoxContentMessage.ts","../src/theme/ThemeWidgetFilteredBy.ts","../src/theme/ThemeIc3TableCell.ts","../src/theme/ThemeIc3WidgetBoxSpinner.ts","../src/theme/ThemeHomeCard.ts","../src/theme/ThemeHomeConsole.ts","../src/theme/ThemeFilterPanelViewsMenu.ts","../src/theme/ThemeIc3CustomDrilldownMenu.ts"],"sourcesContent":["export default class ReportingVersion {\n\n /**\n * e.g., 8.0.0-alpha.1\n */\n public readonly version: string;\n\n public readonly timestamp: string;\n\n constructor(version: string | undefined, timestamp: string | undefined) {\n\n this.version = version ?? \"-\";\n this.timestamp = timestamp ?? \"-\";\n }\n\n public getInfo() {\n return this.version + \" (\" + this.timestamp + \")\";\n }\n\n}\n","import {IPluginDefinition} from \"./IPluginDefinition\";\nimport {IVersionedPluginDefinition} from \"./IVersionedPluginDefinition\";\nimport ReportingVersion from \"./ReportingVersion\";\nimport {FormFieldObject} from \"./PublicTemplateForm\";\nimport {\n IPublicWidgetJsTemplateDefinition,\n IPublicWidgetTemplateDefinition,\n IWrappedWidgetTemplateDefinition\n} from \"./PublicTemplate\";\nimport {IWidgetPublicContext} from \"./PublicContext\";\nimport {WidgetTemplateIDs} from \"./PublicTemplates\";\n\nexport interface AmCharts4WrappedDefinition<WIDGET extends WidgetTemplateIDs> {\n\n /**\n * Some free text used while registering the wrapper (e.g., error purpose).\n */\n readonly registrationInfo: string;\n\n /**\n * e.g., amCharts4.AmCharts4DonutChart\n */\n readonly wrappedWidgetTemplateId: WIDGET;\n\n /**\n * New overall meta-information (e.g., id, groupId, image, etc...).\n */\n readonly props: Partial<IPublicWidgetTemplateDefinition<FormFieldObject>>;\n\n /**\n * Meta-information for the editing of the widget options as well as the actual processing of those options\n * (i.e., AmCharts 4 chart configuration). Lazy-loaded (and the underlying AmCharts 4 library) once required.\n *\n * <pre>\n * export default {\n *\n * hookChartOptionsMeta: () => {\n * ...\n * },\n *\n * hookChartOptions: () => {\n * ...\n * },\n *\n * }\n * </pre>\n */\n readonly hooks: Promise<any>;\n\n}\n\nexport class ApiUtils {\n\n /**\n * Define the form field as being localized.\n */\n public static readonly TAG_I18N_FIELD = \"ic3t_\";\n\n public static makePlugin(definition: IPluginDefinition): () => IVersionedPluginDefinition {\n\n return (): IVersionedPluginDefinition => {\n\n return {\n\n apiVersion: new ReportingVersion(\n \"9.1.0\",\n \"Mon, 23 Feb 2026 14:21:52 GMT\"\n ),\n\n ...definition,\n\n }\n\n }\n }\n\n /**\n * A helper method to create a widget template using the resolveDefinition method.\n * Webpack lazy load of dependencies.\n *\n * @see IPublicWidgetJsTemplateDefinition#resolveDefinition\n */\n public static createLazyJsWidgetTemplateDefinition<OPTIONS extends FormFieldObject>(definition: Omit<IPublicWidgetJsTemplateDefinition<OPTIONS>, \"jsCode\">): IPublicWidgetJsTemplateDefinition<OPTIONS> {\n\n return {\n\n ...definition,\n\n jsCode: (context: IWidgetPublicContext, container: HTMLDivElement) => {\n throw new Error(\"JS Lazy: unexpected jsCode() call!\");\n },\n\n reactComponent: false,\n\n withDrilldownPivotTableLikeAs: false,\n\n }\n\n }\n\n public static resolveAmCharts4WidgetTemplateDefinition<OPTIONS extends FormFieldObject>(definition: IPublicWidgetTemplateDefinition<OPTIONS>, wrapped: IPublicWidgetTemplateDefinition<any>): IPublicWidgetTemplateDefinition<OPTIONS> {\n\n return {\n\n ...wrapped,\n ...definition as any /* since TypeScript 5.0.2 */,\n\n resolveDefinition: undefined,\n jsCode: wrapped.jsCode,\n\n } as IPublicWidgetTemplateDefinition<OPTIONS>\n\n }\n\n /**\n * A utility function creating a wrapper widget template definition for existing AmCharts 4 widgets.\n */\n public static makeAmCharts4WrappedWidgetTemplateDefinition<WIDGET extends WidgetTemplateIDs>(props: AmCharts4WrappedDefinition<WIDGET>): IWrappedWidgetTemplateDefinition<WIDGET> {\n\n return {\n\n registrationInfo: props.registrationInfo,\n wrappedWidgetTemplateId: props.wrappedWidgetTemplateId,\n\n wrapper: (wrapped) => {\n\n return {\n\n ...wrapped /* unresolved */,\n\n ...props.props /* e.g., id, groupId, etc... */,\n\n /**\n * amCharts 4 widgets are loading the amCharts 4 JavaScript library on the fly.\n *\n * This extended widget has to use the resolveDefinition() mechanism as well to be able to re-use\n * the lazy-loaded jsCode (widgets are implemented as IPublicWidgetJsTemplateDefinition).\n */\n resolveDefinition: function (wrappedR) {\n\n const wrappedResolved = ApiUtils.resolveAmCharts4WidgetTemplateDefinition(this, wrappedR!);\n\n return new Promise((resolve, reject) => {\n\n props.hooks.then(definition => resolve({\n\n ...wrappedResolved,\n\n // our (lazy-loaded) widget meta-information and options hook.\n\n chartOptionsMeta: definition.default.hookChartOptionsMeta(wrappedResolved.chartOptionsMeta),\n hookChartOptions: definition.default.hookChartOptions,\n\n })).catch(err => reject(err))\n });\n\n }\n }\n }\n\n } as IWrappedWidgetTemplateDefinition<WIDGET>;\n\n }\n\n}","export const emptySet = \"∅\"\n\nexport enum IcEventType {\n TIDY_SELECTION,\n TIDY_FIRE,\n TIDY_ACTION,\n API,\n IC3_CORE,\n}\n\n/**\n * Event mandatory events as sent by the widgets -> @{eventName}\n */\nexport interface PublicIcEvent {\n\n /**\n * The value of the event\n */\n readonly value: string;\n\n /**\n * The MDX version of the events\n */\n readonly mdx: string;\n\n /**\n * If available the key of the MDX member\n */\n readonly key?: any | any[];\n\n /**\n * These two strings together define an unique id for a widget in a report\n */\n sourceNid?: string;\n sourceWid?: string;\n\n /**\n * special 'tag' to\n */\n isEmpty?: boolean;\n\n /**\n * the type of event\n */\n readonly type?: IcEventType;\n}\n\nexport interface TidyActionEvent extends PublicIcEvent {\n\n readonly type: IcEventType.TIDY_ACTION;\n\n readonly tidyIdxHint: number\n\n}\n\nexport enum WidgetNotificationType {\n\n doAllEvents = \"ic3doAllEvents\",\n\n doCustomAction = \"ic3doCustomAction\",\n\n doExportWidgetData = \"ic3exportWidgetData\",\n\n doExportToExcel = \"ic3exportToExcel\",\n doExportToPNG = \"ic3exportToPNG\",\n doExportToSVG = \"ic3exportToSVG\",\n\n toInitialSelection = 'ic3toInitialSelection',\n\n clearSelection = \"ic3clearSelection\",\n clearState = \"ic3clearState\",\n\n doTemplateUserMenuAction = \"ic3doTemplateUserMenuAction\",\n\n doPrintReport = \"ic3doPrintReport\",\n onWidgetZoom = \"ic3onWidgetZoom\"\n}\n\nexport type WidgetNotificationHandler = { type: WidgetNotificationType; handler: (type: WidgetNotificationType, event: PublicIcEvent) => void }\n","import {CSSInterpolation} from \"@mui/system\";\nimport {Components} from \"@mui/material/styles\";\n\nexport enum EmbeddedThemeNames {\n\n Statos = \"ic3-statos\",\n\n}\n\n/**\n * Default values (e.g., box options, chart options, etc...).\n */\nexport interface IThemeWidgetDefaults {\n\n /**\n * Default values for widget boxes. Lookup order:\n *\n * <pre>\n * plugin-id.template-id.option\n * plugin-id.option\n * option\n * </pre>\n *\n * @see WidgetBoxOptions (ThemeWidgetBox.ts)\n */\n box?: Record<string, any>;\n\n /**\n * Default values for widget chart options. Lookup order:\n *\n * <pre>\n * plugin-id.template-id.option\n * plugin-id.option\n * option\n * </pre>\n *\n * @see IWidgetTemplateChartOptions (PublicTemplates.ts)\n */\n options?: Record<string, any>;\n\n /**\n * Default values for widget icons. These settings override the defaults set in the theme in `widgetIcons`.\n *\n * Lookup order:\n *\n * <pre>\n * plugin-id.template-id.option\n * plugin-id.option\n * option\n * </pre>\n *\n * @see IWidgetIcons (PublicTheme.ts)\n */\n widgetIcons?: Record<string, any>;\n}\n\n/**\n * Sort of named set of predefined options.\n */\n\nexport type IThemeWidgetVariant = {\n props: { variant: string } & Record<string, string>;\n style: CSSInterpolation;\n defaultProps?: Record<string, any>;\n} | {\n props: { variant: string } & Record<string, string>;\n defaultProps: Record<string, any>;\n}\n\n/**\n * Examples:\n * - Change the primary color of the theme to red: `theme.palette.primary.main = \"#ff0000\";`\n * - Change default chart color: `theme.palette.ic3.chartSingleColors.default = \"#ff0000\";`\n * - Change background: `theme.palette.ic3.pageBackgroundColor = \"#ff0000\";`\n * - Change selected color: `theme.palette.ic3.selected = \"#ff0000\";`\n */\nexport type IThemeProcessor = (theme: any, params?: any) => void;\n\nexport interface IThemeManager {\n\n /**\n * Used by IReportDefinition.setThemeProcessorCall().\n */\n registerThemeProcessor(name: string, processor: IThemeProcessor): void;\n\n /**\n * The theme decorator allows to setup the Theme.components and Theme.ic3 using the theme\n * created from its partial options (e.g., using palette, typography, spacing, etc...)\n */\n registerTheme(themeOptions: any, themeDecorator?: (theme: any) => Components, baseTheme?: EmbeddedThemeNames): void;\n\n /**\n * Register editor themes. Change the editor theme in ic3report-config.js by setting defaultEditorThemeId to a\n * themeId from a theme using this method.\n */\n registerEditorTheme(themeOptions: any, themeDecorator?: (theme: any) => Components): void;\n\n}","/**\n * Tidy Column Types\n */\n\nimport {TidyHistogramBucketType} from \"./PublicTidyHistogram\";\nimport {ITidyColumn, ITidyColumnAddValueCopyRow, ITidyColumnAddValueInsert} from \"./PublicTidyColumn\";\nimport {MdxNodeIdentifier} from \"./PublicTidyTable\";\nimport {SelectionMode} from \"./PublicTidyTableInteractions\";\n\nexport enum TidyColumnsType {\n /**\n * Values represent a color, e.g. 'red', 'rbg(10, 10, 10)' or '#fff'. Can be null.\n */\n COLOR = 'color',\n\n LONGITUDE = 'longitude',\n LATITUDE = 'latitude',\n\n /**\n * ISO2 location (country, region, city...) codes\n */\n ISO2_LOCATION_CODE = 'iso2Location',\n\n /**\n * date, time or combination of the two. Can be null.\n */\n DATETIME = 'datetime',\n\n /**\n * numeric data, e.g., double, float, integer, etc. Can be null.\n */\n NUMERIC = 'numeric',\n\n /**\n * Textual data, string type. Can be null.\n */\n CHARACTER = 'character',\n\n /**\n * Boolean data type, true, false. Can be null.\n */\n LOGICAL = 'logical',\n\n /**\n * array of values. Can be null.\n */\n LIST = 'list',\n\n /**\n * Column has values of multiple types\n */\n MIXED = 'mixed',\n\n /**\n * The column type is not known\n */\n UNKNOWN = 'unknown',\n\n /**\n * The column has null values only\n */\n NULL = 'null',\n\n /**\n * Use any to opt-out of type checking\n */\n ANY = 'any'\n}\n\nexport type TidyColumnsSubType =\n \"YEAR\" |\n \"HALF_YEAR\" |\n \"QUARTER\" |\n \"MONTH\" |\n \"WEEK\" |\n \"DAY\" |\n \"DAY_MONTH\" |\n \"DAY_YEAR\" |\n \"HOUR\" |\n \"HALF_HOUR\" |\n \"QUARTER_HOUR\" |\n \"MINUTE\" |\n \"SECOND\"\n ;\n\nexport enum ITidyColumnsSource {\n QUERY = 'query',\n TRANSFORMATION = 'transformation',\n UNKNOWN = 'unknown'\n}\n\n/**\n * Defines a mapping that maps columns to the coordinate system of the widget.\n * The key represents the internal lowercase-name for the mapping, e.g., axis, group, rows, columns.\n * Note that a mapping can have multiple columns, for example, on the Rows.\n */\nexport type ChartTemplateDataMapping = Record<string, ITidyColumn[] | undefined>;\n\n/**\n * Defines an index from column tag (name, mapping, role, etc..) to the name or index of the column in the table.\n * The column tag is converted to lower case.\n */\nexport type TidyColumnIndex = Record<string, string | number>;\n\nexport enum TidyTableMappingColumnSelectorOptions {\n\n ALL = '@IC3_ALL',\n ALL_NUMERIC = '@IC3_ALL_NUMERIC',\n ALL_CHARACTER = '@IC3_ALL_CHARACTER',\n ALL_MEASURES = '@IC3_ALL_MEASURES',\n ALL_AXIS = '@IC3_ALL_AXIS',\n\n}\n\nexport interface TidyTableColumnIdentifier {\n /**\n * Search column by name\n */\n name: string;\n\n /**\n * If we want a property, the name of the column's property.\n */\n property?: string;\n}\n\nexport interface TidyTableRoleSelector {\n /**\n * Search columns by role\n */\n role: string;\n}\n\nexport type TidyTableColumnSelector =\n TidyTableColumnIdentifier\n | TidyTableMappingColumnSelectorOptions\n | TidyTableRoleSelector;\n\nexport type IFormFieldGranularityItem = IFormFieldGranularityItemColumn | IFormFieldGranularityItemRole\n | IFormFieldGranularityItemHierarchy | IFormFieldGranularityColumns;\n\nexport interface IFormFieldGranularityItemColumn {\n type: \"column\";\n\n /**\n * For selecting columns from the tidy table\n */\n name: string;\n}\n\nexport interface IFormFieldGranularityItemRole {\n type: \"role\";\n\n /**\n * For selecting mapping/roles in a chart\n */\n role: string;\n}\n\n/**\n * Only include columns info from this hierarchy in the selection.\n */\nexport interface IFormFieldGranularityItemHierarchy {\n type: \"hierarchy\";\n\n /**\n * Show in editor.\n */\n caption: string;\n\n /**\n * Hierarchy for entity items in columns\n */\n hierarchyIdx: number;\n}\n\n/**\n * When selected, include all column info in the selection.\n */\nexport interface IFormFieldGranularityColumns {\n type: \"all_columns\";\n}\n\n\n/**\n * The coordinate of an MDX axis. If and only if the columns source is from ON 0, the hierIdx is defined.\n */\nexport interface AxisCoordinate {\n /**\n * Object keeping track of the transformation from the original axis to the current column.\n * If this object is undefined, then the column can not be constructed using a coordinate transformation of the axis.\n */\n repetitionInfo?: MdxRepetitionInfo;\n\n /**\n * index of the axis. ON 0, ON 1, etc...\n */\n axisIdx: number;\n\n /**\n * index of the tuple in the axis. E.g. (AF, 2009) in [AF, 2008, AF, 2009, AF, 2010] has index 1.\n */\n tupleIdx?: number;\n\n /**\n * index of the member in the tuple. E.g. AF in (AF, 2009) has index 0 and 2009 has index 1.\n * undefined means use the whole tuple.\n */\n hierIdx?: number;\n}\n\nexport interface MdxRepetitionInfo {\n /**\n * The number of members in the axis (From 'len' in the json axis guts).\n */\n axisLength: number;\n\n /**\n * Number of repetitions for each member. See ITidyBaseColumn > repeat.\n */\n repetition: number;\n}\n\n/**\n * identifier of a column value ( uniqueName if it´s an axis or idx if measure )\n */\nexport type TidyColumnCoordinateUniqueName = MdxNodeIdentifier['uid'];\n\nexport enum IAmcharts4DataKey {\n\n /**\n * Data key for the date/string value of the axis.\n */\n AXIS = \"axis\",\n\n /**\n * Data key for the tidy-row number.\n */\n ROW = \"row\",\n\n /**\n * Data key for accessing the value of a dataItem. Used when there are no groups or levels in the data.\n */\n NULL = \"_\"\n\n}\n\n/**\n * Objects that have this type are used in chart.data in amCharts.\n */\nexport interface IAmCharts4Data {\n\n /**\n * The date/string value of the axis.\n */\n axis: Date | string;\n\n /**\n * The row number of the axis. Uses first row if multiple rows are in the dataItem for the axis.\n */\n row: number;\n\n /**\n * Other values for the series\n */\n [key: string]: any;\n\n}\n\nexport interface IAmCharts4DataTreeMap {\n children: {\n [key: string]: any;\n }[];\n\n [key: string]: any;\n}\n\nexport type ITidyRow = any[];\n\nexport interface MdxInfo {\n\n uniqueName: string;\n // uniqueNameCS: boolean;\n\n /**\n * The key parsed as date|time.\n */\n key: any;\n /**\n * The key as converted to string in the client.\n */\n keyS: string | undefined;\n\n name: string;\n caption: string;\n\n isAll?: boolean;\n\n pun?: string;\n // punCS?: boolean;\n\n /**\n * Children count\n */\n cc?: number;\n\n levelCaption?: string;\n\n /**\n * Relative: starts at 0 + visual depths for ragged dimension.\n */\n levelDepthR: number;\n\n /**\n * Actual MDX level depth\n */\n levelDepth: number;\n\n /**\n * hierUN\n */\n hierUN: string;\n\n}\n\nexport type MdxLevelType =\n \"date\" |\n \"time\"\n ;\n\nexport type MdxLevelSubType =\n \"YEAR\" |\n \"HALF_YEAR\" |\n \"QUARTER\" |\n \"MONTH\" |\n \"WEEK\" |\n \"DAY\" |\n \"DAY_MONTH\" |\n \"DAY_YEAR\" |\n \"HOUR\" |\n \"HALF_HOUR\" |\n \"QUARTER_HOUR\" |\n \"MINUTE\" |\n \"SECOND\"\n ;\n\nexport interface IMdxAxisSeriesInfo {\n\n hierarchyName?: string;\n hierarchyUN?: string;\n hierarchyType?: string;\n\n /**\n * A single level name is being specified in the guts for all the axis values.\n */\n levelUN?: string;\n levelName?: string;\n levelCaption?: string;\n levelType?: MdxLevelType;\n levelSubType?: MdxLevelSubType;\n\n /**\n * The unique name of the default member of the dimension.\n */\n defaultMemberUN?: string;\n defaultMemberName?: string;\n defaultMemberCaption?: string;\n defaultMemberKey?: string;\n}\n\nexport interface EntityItem {\n\n uniqueName: string;\n // uniqueNameCS: boolean;\n\n key?: any;\n\n name: string;\n caption: string;\n\n parentUN?: string;\n // parentUNCS?: boolean;\n\n hierUN?: string;\n\n selected?: boolean;\n empty?: boolean;\n\n tupleUNames?: string[];\n}\n\nexport interface TidyCellError {\n errorCode: string;\n errorDescription: string;\n}\n\n/**\n * This is produced by a hit (click) event\n *\n * it might actually 'select' one or multiple rows in a Tidy table (e.g. all rows for [Time].[2010])\n * it can be defined using one or multiple TidyColumns ( kinda forEachMatchingRow)\n *\n * uniqueNames are used so it survives drill-downs, filter or new queries, in this\n * scenario a coordinate might not longer match any rowIdx\n */\nexport interface ITidyTableSelection {\n /**\n * Fired event value. Arrays are combined into a single event.\n */\n items: EntityItem[];\n}\n\nexport enum SelectionBehaviour {\n /**\n * Clear the event value. Default behaviour.\n */\n CLEAR_EVENT = \"CLEAR_EVENT\",\n\n /**\n * Select all items in the filter.\n */\n SELECT_ALL = \"SELECT_ALL\",\n\n /**\n * Easy to guess\n */\n SELECT_FIRST = \"SELECT_FIRST\",\n\n SELECT_LAST = \"SELECT_LAST\",\n\n /**\n * Select no items in the filter and clear the event.\n */\n SELECT_NONE = \"SELECT_NONE\",\n\n /**\n * Fire the default member. The selection remains empty.\n */\n MDX_DEFAULT = \"MDX_DEFAULT\",\n\n /**\n * Fire the empty set in the event. The selection remains empty.\n */\n EMPTY_SET = \"EMPTY_SET\",\n\n /**\n * The filter can not be empty. The click is canceled. If no initial selection, the first value is used.\n */\n NOT_ALLOW_EMPTY = \"NOT_ALLOW_EMPTY\",\n}\n\nexport enum SortingType {\n ASCENDING = 'ASCENDING',\n DESCENDING = 'DESCENDING',\n KEEP_ORDER = \"KEEP_ORDER\"\n}\n\nexport interface HistogramBucket {\n /**\n * Bucket start range. Undefined = -Infinity.\n */\n from?: number;\n\n /**\n * Bucket end range. Undefined = Infinity.\n */\n to?: number;\n\n /**\n * The name of the bucket\n */\n name?: string;\n}\n\nexport interface HistogramData extends HistogramBucket {\n /**\n * Number of values that fall in the range [from, to).\n */\n count: number;\n\n /**\n * Row indices where the value falls in the bucket\n */\n rows: number[];\n}\n\nexport interface HistogramOptions {\n /**\n * The number of bins to use in the histogram or an object with custom bins. Default = 10.\n *\n * If bins is a number, then the algorithm generates the bins. The included endpoint of the bin is rounded with\n * a precision of 1e10 in the direction that makes the bin larger.\n */\n bins: number | HistogramBucket[];\n\n /**\n * The type of interval. Default = RIGHT_CLOSED.\n */\n intervalType: TidyHistogramBucketType;\n\n /**\n * If true, put the minimum value in the first bucket if intervalType = (from, to] or put the maximum value\n * in the last bucket if intervalType = [from, to).\n * If false, exclude the minimum or maximum value in the above scenario.\n * Default = true.\n */\n includeEndPoints: boolean;\n\n\n}\n\nexport enum InterpolationType {\n NONE = 'none',\n RGB = 'rgb',\n HCL = 'hcl',\n HSL = 'hsl',\n LAB = 'lab'\n}\n\nexport enum InterpolationAppliedTo {\n COLUMNS = \"COLUMNS\",\n ROWS = \"ROWS\",\n TABLE = \"TABLE\"\n}\n\nexport enum SortingMethod {\n NONE = \"NONE\",\n COLUMN = \"COLUMN\"\n}\n\nexport interface ConvertToTypeParseSettings {\n locale?: string;\n dateFormat?: string;\n listSeparator?: string;\n}\n\n/**\n * Interface for adding a single row to a tidy table\n */\nexport interface ITotalRowValues {\n\n /**\n * Keys as column names.\n */\n totalValues: Record<string, ITidyColumnAddValueInsert>;\n\n /**\n * Keys as column names.\n */\n totalTexts: Record<string, ITidyColumnAddValueInsert | ITidyColumnAddValueCopyRow>;\n\n}\n\n/**\n * If we have (date)times available, then\n * YES -> always use them\n * NO -> never use them\n * AUTO -> use them if the level is a date or datetime (in MDX, these are levels of type DAY, HOUR, MINUTE, SECOND).\n */\nexport enum UseDatetimeAxis {\n YES = \"YES\",\n NO = \"NO\",\n AUTO = \"AUTO\"\n}\n\nexport interface ITidyColumnIndex {\n /**\n * Name of the node in the index\n */\n name: string;\n\n /**\n * Display label for index\n */\n label: string;\n\n /**\n * Unique name of mdx member\n */\n mdxUniqueName?: string;\n\n /**\n * Level of mdx member\n */\n mdxLevel?: string;\n}\n\nexport interface WidgetTidySelectionOptions {\n /**\n * If true, the widget responds to selection events.\n */\n isSelectionActive: boolean;\n\n /**\n * User can set the selection mode in the interaction-settings.\n */\n selectionMode: SelectionMode;\n\n /**\n * These columns are considered in the selection.\n */\n selectionGranularity?: IFormFieldGranularityItem[];\n\n /**\n * Behaviour when all items in the filter are selected.\n */\n selectionAllBehaviour?: SelectionBehaviour;\n\n /**\n * Behaviour when the selection is empty, e.g. when no items are selected.\n */\n selectionEmptyBehaviour?: SelectionBehaviour;\n\n /**\n * List with items in the initial selection.\n */\n initSelectionUserDefined?: string[] | string;\n\n /**\n * Column with items in the initial selection. The column has a truthy value for items that are in the initial\n * selection.\n */\n initSelectionColumn?: TidyTableColumnSelector;\n\n\n /**\n * Initialize selection on new query\n */\n initSelectionOnNewQuery?: boolean;\n\n /**\n * Add a chip in the widget header that shows what items are selected.\n */\n showSelectionInWidgetHeader?: boolean;\n\n /**\n * Normally, the widget clears the selection if it is not anymore in the data. Enable this to keep the selection.\n */\n keepSelectionWhenNotInData?:boolean;\n}\n\n// Array with first value always defined. Groups consist of at least one index row.\nexport type GroupRowIndices = [number, ...number[]];\n\nexport interface TreeRowPropsTreeData {\n rowIndex: number;\n nodeId: string;\n isCollapsed: boolean;\n hasChildren: boolean;\n isSelected: boolean;\n}\n\n/**\n * Function filtering the rows of a column / table. Returns true if the row is included, false if the row is excluded.\n */\nexport type TidyRowFilter = (rowIdx: number) => boolean;","import {ITidyColorColumn, ITidyColumn, ITidyNumericColumn} from \"./PublicTidyColumn\";\nimport {ITidyTable} from \"./PublicTidyTable\";\nimport {GroupRowIndices, IAmCharts4Data, IAmcharts4DataKey, TidyColumnsType} from \"./PublicTidyTableTypes\";\n\nexport enum ISeriesValuesType {\n LINE,\n COLUMN,\n TREND,\n DIVERGENT,\n LEFT_SERIES,\n RIGHT_SERIES\n}\n\n\nexport interface ISeriesValues {\n\n type: ISeriesValuesType;\n\n /**\n * Value column.\n * @see {PublicAmchartsData.TAG_VALUE}.\n */\n values: ITidyColumn;\n\n /**\n * Color column.\n * @see {PublicAmchartsData.TAG_COLOR}.\n */\n colors?: ITidyColorColumn;\n\n /**\n * Extra values.\n * @see {PublicAmchartsData.TAG_ADDITIONAL_VALUE}.\n */\n additionalValues?: ITidyColumn;\n\n // Used to identify the parent series value col for trend columns.\n parentValueColIdx?: number;\n\n}\n\n/**\n * Used for managing amcharts data in the Amcharts plugin. This class controls both the creation of the charts\n * data and the creation of the series of that chart.\n */\nexport class PublicAmchartsData {\n\n public static readonly TAG_VALUE = 'v';\n public static readonly TAG_COLOR = 'c';\n public static readonly TAG_ADDITIONAL_VALUE = 'v2';\n\n private readonly onValues: ISeriesValues[];\n private readonly onAxis: ITidyColumn;\n private readonly onLevel: ITidyColumn | undefined;\n private readonly onGroup: ITidyColumn | undefined;\n private readonly table: ITidyTable;\n private readonly disableGroupRecords?: boolean;\n\n constructor(table: ITidyTable, onValues: ISeriesValues[], onAxis: ITidyColumn, onGroup?: ITidyColumn,\n onLevel?: ITidyColumn, disableGroupRecords?: boolean) {\n this.onValues = onValues;\n this.onAxis = onAxis;\n this.onGroup = onGroup;\n this.onLevel = onLevel;\n this.table = table;\n this.disableGroupRecords = disableGroupRecords;\n }\n\n static getSeriesId(groupKey: string, valueColIdx: number): string {\n return groupKey + \".\" + String(valueColIdx);\n }\n\n /**\n * Get the data for the chart.\n */\n getChartData(): IAmCharts4Data[] {\n\n const chartValues: Record<string, ITidyColumn> = {};\n this.onValues.forEach((value, idx) => {\n\n /*\n Divergent series needs to have negative values, but show a positive value when hovered. Thus, the values\n in chart data are set to negative, but the values in the column are not.\n */\n let valueColumn: ITidyColumn;\n if (value.type === ISeriesValuesType.DIVERGENT) {\n valueColumn = value.values.mapToColumn(v => v != null ? -v : null, \"rightValue\", TidyColumnsType.NUMERIC);\n } else {\n valueColumn = value.values;\n }\n\n chartValues[String(idx) + PublicAmchartsData.TAG_VALUE] = valueColumn;\n\n if (value.colors) {\n chartValues[String(idx) + PublicAmchartsData.TAG_COLOR] = value.colors;\n }\n\n if (value.additionalValues) {\n chartValues[String(idx) + PublicAmchartsData.TAG_ADDITIONAL_VALUE] = value.additionalValues;\n }\n\n });\n\n return this.table.toAmcharts4Data(this.onAxis, chartValues, this.onGroup, this.onLevel, undefined, this.disableGroupRecords);\n\n }\n\n /**\n * Create, update and remove series in the chart.\n * @param itemControl map keeping track of current series in the chart.\n * @param seriesControl object controlling the adding/removing/updating of series.\n * @param firstGroupOnly only call the first group.\n */\n updateSeries<T>(itemControl: Map<string, T>, seriesControl: IAmchartsSeriesControl<T>, firstGroupOnly?: boolean): void {\n const group = this.onGroup;\n const updated = new Set<string>();\n\n const forEachSeries = (groupKey: string, groupIdx: GroupRowIndices) => {\n this.onValues.forEach((onValue, idx) => {\n\n if (seriesControl.typeFilter != null && !seriesControl.typeFilter(onValue.type)) {\n return;\n }\n\n const seriesKey = PublicAmchartsData.getSeriesId(groupKey, idx);\n let item = itemControl.get(seriesKey);\n if (item == null) {\n const newItem = seriesControl.create(seriesKey, groupKey,\n seriesKey + PublicAmchartsData.TAG_VALUE,\n seriesKey + PublicAmchartsData.TAG_COLOR, onValue);\n itemControl.set(seriesKey, newItem);\n item = newItem;\n }\n\n seriesControl.update(seriesKey, groupKey, item, onValue, groupIdx);\n updated.add(seriesKey);\n\n });\n };\n\n if (group != null && !this.disableGroupRecords) {\n const index = group.groupBy(true);\n if (firstGroupOnly) {\n const groupIdx = index.values().next();\n if (!groupIdx.done) {\n const firstIndex = groupIdx.value[0];\n const groupKey = group.getAmcharts4GroupKey(firstIndex);\n forEachSeries(groupKey, groupIdx.value);\n }\n } else {\n index.forEach(groupIdx => {\n const groupKey = group.getAmcharts4GroupKey(groupIdx[0]);\n forEachSeries(groupKey, groupIdx);\n });\n }\n } else {\n const groupKey = IAmcharts4DataKey.NULL;\n forEachSeries(groupKey, [0]);\n }\n\n itemControl.forEach((item, key) => {\n if (!updated.has(key)) {\n itemControl.delete(key);\n seriesControl.remove(item);\n }\n });\n }\n\n getAxis(): ITidyColumn {\n return this.onAxis;\n }\n\n getLevel(): ITidyColumn | undefined {\n return this.onLevel;\n }\n\n getGroup(): ITidyColumn | undefined {\n return this.onGroup;\n }\n\n /**\n * Return the nth value column.\n * @param idx n\n */\n getValueColumn(idx: number): ITidyNumericColumn {\n return this.onValues[idx].values;\n }\n\n getValueColumns(): ITidyNumericColumn[] {\n return this.onValues.map(i => i.values);\n }\n\n /**\n * Call a function on each series, and its column\n * @param itemControl map keeping track of current series in the chart.\n */\n forEachSeries<T>(itemControl: Map<string, T>, callback: (col: ITidyNumericColumn, seriesId: string, series: T) => void): void {\n\n this.updateSeries(itemControl, {\n create: () => {\n throw Error(\"SNBH series cannot be created\");\n },\n update: (seriesId, _groupKey, series, sValue, _groupRows) => {\n callback(sValue.values, seriesId, series);\n },\n remove: () => {\n throw Error(\"SNBH series cannot be removed\");\n },\n typeFilter: type => type !== ISeriesValuesType.TREND\n }, true);\n }\n\n /**\n * Returns the first item in the onValues argument of the constructor.\n */\n getFirstValue(): ITidyNumericColumn {\n return this.onValues[0].values;\n }\n\n /**\n * Returns true if and only if multiple non-trend measures are in the chart.\n */\n isMultiMeasure(): boolean {\n return this.onValues.filter(i => i.type !== ISeriesValuesType.TREND).length > 1;\n }\n\n /**\n * Returns the first column used for a series type.\n */\n getFirstColumnOfType(seriesType: ISeriesValuesType): ITidyColumn | undefined {\n return this.onValues.find(i => i.type === seriesType)?.values;\n }\n\n}\n\n/**\n * Controls when to add / remove / dispose / update series. This class exists because using chart.setSeries removes\n * trend-series. This class handles the adding and removing of series and keeps the series in the order of the data.\n */\nexport interface IAmchartsSeriesControl<T> {\n\n /**\n * If defined, only call create, update and remove where `typeFilter(type)` returns true.\n */\n typeFilter?: (type: ISeriesValuesType) => boolean,\n\n /**\n * Create a new series if it is not in itemControl. Use 'add' to add it to the chart.\n * @param seriesId unique id of the series\n * @param groupKey key for the group by (if defined). If not defined, use _\n * @param valueKey series value dataField\n * @param fillKey series fill dataField\n * @param sValue the onValues part used.\n */\n create: (seriesId: string, groupKey: string, valueKey: string, fillKey: string, sValue: ISeriesValues) => T,\n\n /**\n * Update a series.\n * @param seriesId unique id of the series\n * @param groupKey key for the group by (if defined). If not defined, use _\n * @param series the charts series to update\n * @param sValue the onValues part used\n * @param groupRows row indices of the group. Length >= 1.\n */\n update: (seriesId: string, groupKey: string, series: T, sValue: ISeriesValues, groupRows: GroupRowIndices) => void,\n\n /**\n * Destroy an item. Called when the item can be cleared from memory. E.g., dispose() on the series.\n */\n remove: (item: T) => void,\n\n}","export type PaperSizeName = \"A5\" | \"A4\" | \"A3\" | \"B5\" | \"B4\" | \"Letter\" | \"Legal\" | \"Ledger\" | \"JIS-B5\" | \"JIS-B4\";\nexport type PaperOrientation = \"portrait\" | \"landscape\";\nexport type PaperSizeUnits = \"px\" | \"mm\" | \"cm\" | \"in\";\n\nexport enum CompareTextInterpretationType {\n MORE = \"more=better\",\n LESS = \"less=better\",\n NONE = \"none\"\n}\n\nexport enum TargetTextPosition {\n DISABLE = \"DISABLE\",\n ALIGN_TOP = \"ALIGN_TOP\",\n ALIGN_BOTTOM = \"ALIGN_BOTTOM\",\n}\n\nexport enum TargetTextIconSet {\n TREND_ICONS = \"TREND_ICONS\",\n TRIANGLE_ICONS = \"TRIANGLE_ICONS\",\n}\n\nexport enum SparkChartType {\n LINE = 'line',\n COLUMN = 'column'\n}\n\nexport enum SparklinePosition {\n BELOW_VALUE = \"BELOW_VALUE\",\n RIGHT_OF_VALUE = \"RIGHT_OF_VALUE\"\n}\n\nexport enum QueryType {\n MDX = \"mdx\",\n SQL = 'sql',\n EMBEDDED = 'embedded',\n HTTP_CSV = \"HTTP_CSV\"\n}\n\n/**\n * Set to `true` to hide the icon.\n */\nexport interface IWidgetBoxIconsDefinition {\n disableQueryFilter?: boolean;\n disableQueryCellOnError?: boolean;\n disableQueryMaxRowsReached?: boolean;\n // Disable the drilldown back button.\n disableDrilldown?: boolean;\n disableHelp?: boolean;\n disableInteractionSwitch?: boolean;\n}\n\nexport type IUserMenuOptions =\n 'editGadget' |\n 'editWidget' |\n 'deleteWidget' |\n 'deleteGadget' |\n 'convertGadgetToWidget' |\n 'addEventToAllQueries' |\n 'migrateWidget' |\n 'maximize' |\n 'clearSorting' |\n 'showData' |\n 'resetDrilldown' |\n 'clearState' |\n 'clearSelection' |\n 'toInitialSelectionOnEditing' |\n 'toInitialSelection' |\n 'export_xls' |\n 'export_csv' |\n 'export_png' |\n 'export_svg';\n\n\n","import {LazyTreeViewProps} from \"./LazyTreeView\";\nimport {ITidyTable} from \"./PublicTidyTable\";\nimport {ITidyTableTransformation} from \"./ITidyTableTransformation\";\nimport {Theme} from \"@mui/material/styles\";\nimport {ThemeFormatters, ThemeTextFormatter} from \"./PublicTheme\";\nimport {ITidyColumn, ITidyNumericColumn} from \"./PublicTidyColumn\";\nimport {IPublicWidgetTemplateDefinition} from \"./PublicTemplate\";\nimport {ITidyMath} from \"./PublicTidyMath\";\nimport {ILogger} from \"@ic3/common-api\"\nimport {AppNotification} from \"./INotification\";\nimport {WidgetNotificationHandler} from \"./IcEvent\";\nimport {TidyRowFilter} from \"./PublicTidyTableTypes\";\nimport {FormFieldTidyTableExprType} from \"./PublicTemplateForm\";\n\nexport enum WidgetRenderLayoutStatus {\n RENDERING = \"RENDERING\",\n RENDERED = \"RENDERED\",\n}\n\nexport enum WidgetWarningSeverity {\n WARNING,\n ERROR\n}\n\nexport enum IContentMessageType { info, error}\n\nexport interface IPublicContext {\n\n logger(): ILogger;\n\n /**\n * It is the reporting console.\n */\n isAppConsole(): boolean;\n\n /**\n * It is the dashboard viewer.\n */\n isAppReportViewer(): boolean;\n\n /**\n * Is an application in viewer mode.\n */\n isAppReportAppViewer(): boolean;\n\n /**\n * Is an application or dashboard in viewer mode.\n */\n isAppViewer(): boolean;\n\n /**\n * It is the dashboard editor.\n */\n isAppReportEditor(): boolean;\n\n /**\n * It is the dashboard editor with the dashboard in preview mode.\n */\n isAppReportEditorPreview(): boolean;\n\n /**\n * It is the application editor.\n */\n isAppReportAppEditor(): boolean;\n\n /**\n * It is the gadget editor.\n */\n isAppGadgetEditor(): boolean;\n\n /**\n * React, returns true when loaded\n */\n useGoogleMapHook(): boolean | Error;\n\n getTheme(): Theme;\n\n /**\n * Return the formatter for the current user's locale.\n */\n getThemeFormatter(): ThemeFormatters;\n\n getUserName(): string;\n\n getReportName(): string;\n\n getReportPath(): string;\n\n getReportFolderName(): string;\n\n getReportLocale(): string;\n\n /**\n * @param format Formatter. Defaults to `defaultNumber` from the theme.\n */\n getNumberFormatter(format: ThemeTextFormatter | null | undefined): (value: any | undefined) => string;\n\n /**\n * @param format Formatter. Defaults to `defaultDate` or `defaultDatetime` from the theme.\n */\n getDateFormatter(format: ThemeTextFormatter | null | undefined): (value: any | undefined) => string;\n\n /**\n * translate the content of a report (the title of widgets, content of some widgets...). This does use another file\n *\n * aka content localization\n */\n translateContent(content: string, ...args: any[]): string;\n\n /**\n * localized report application tags (e.g. edit, write, save.. )\n */\n localize(name: string, ...args: any[]): string;\n\n /**\n * localized report application error tags\n */\n localizeError(name: string, ...args: any[]): string;\n\n /**\n * Localization for transformations\n */\n localizeTransformationCaption(template: ITidyTableTransformation<any>): { info: string, description?: string };\n\n localizeFormField(pluginId: string, widgetTemplateId: string, name: string, ...args: any[]): [string, string | undefined, string | undefined];\n\n /**\n * markdown to sanitized html\n */\n markdownToHtml(markDown: string): string;\n\n /**\n * A bunch of mathematical functions related to the tidy table.\n */\n tidyMath(): ITidyMath;\n\n /**\n * Create an expression from a field.\n *\n * @param expression typically coming from a widget field so it cannot be null if there is a default value.\n * To prevent usage of the default, pass a string with a single space to make this method return undefined.\n * @param selectedColumns get the row of these columns using `_rowOfSelectedColumns` or `_selectedColumns`.\n * @param isRowSelected function for usage with `totalSelectedOrTotal`. Use tableInter.isSelected(rowIdx).\n */\n createExpression<T extends FormFieldTidyTableExprType>(fieldType: T, field: string, table: ITidyTable, currentColumn: ITidyColumn | undefined, expression: string | undefined, selectedColumns: ITidyColumn[] | undefined, isRowSelected?: TidyRowFilter):\n T extends \"tidyTableColorRowExpr\" | \"tidyTableScaleRowExpr\" | \"tidyTableHtmlRowExpr\" | \"tidyTableNumericRowExpr\" | \"tidyTableStringRowExpr\" | \"tidyTableTextRowExpr\" ? ((rowIdx: number) => string) | undefined : (() => string) | undefined;\n\n /**\n * Not in widget public context because of transformation not applied from a widget context always.\n *\n * @param expression typically coming from a widget field so it cannot be null if there is a default value.\n * To prevent usage of the default, pass an \"empty\" string that makes this method returns\n * undefined.\n * @param selectedColumns get the row of these columns using `_rowOfSelectedColumns` or `_selectedColumns`.\n * @param isRowSelected function for usage with `totalSelectedOrTotal`. Use tableInter.isSelected(rowIdx).\n *\n * @deprecated will be removed in version >=9.1.0. Use `createExpression` instead.\n */\n createTableRowTextExpr(field: string, table: ITidyTable, currentColumn: ITidyColumn | undefined, expression: string | undefined, selectedColumns: ITidyColumn[] | undefined, isRowSelected?: TidyRowFilter): ((rowIdx: number) => string) | undefined;\n\n /**\n * Not in widget public context because of transformation not applied from a widget context always.\n *\n * @param expression typically coming from a widget field so it cannot be null if there is a default value.\n * To prevent usage of the default, pass an \"empty\" string that makes this method returns\n * undefined.\n * @param isRowSelected function for usage with `totalSelectedOrTotal`. Use tableInter.isSelected(rowIdx).\n *\n * @deprecated will be removed in version >=9.1.0. Use `createExpression` instead.\n */\n createTableTextExpr(field: string, table: ITidyTable, currentColumn: ITidyColumn | undefined, expression: string | undefined, isRowSelected?: TidyRowFilter): (() => string) | undefined;\n\n /**\n * Not in widget public context because of transformation not applied from a widget context always.\n *\n * @param expression typically coming from a widget field so it cannot be null if there is a default value.\n * To prevent usage of the default, pass an \"empty\" string that makes this method returns\n * undefined.\n * @param selectedColumns get the row of these columns using `_rowOfSelectedColumns` or `_selectedColumns`.\n * @param isRowSelected function for usage with `totalSelectedOrTotal`. Use tableInter.isSelected(rowIdx).\n *\n * @deprecated will be removed in version >=9.1.0. Use `createExpression` instead.\n */\n createTableRowMarkdownExpr(field: string, table: ITidyTable, currentColumn: ITidyColumn | undefined, expression: string | undefined, selectedColumns: ITidyColumn[] | undefined, isRowSelected?: TidyRowFilter): ((rowIdx: number) => string) | undefined;\n\n /**\n * Not in widget public context because of transformation not applied from a widget context always.\n *\n * @param expression typically coming from a widget field so it cannot be null if there is a default value.\n * To prevent usage of the default, pass an \"empty\" string that makes this method returns\n * undefined.\n * @param selectedColumns get the row of these columns using `_rowOfSelectedColumns` or `_selectedColumns`.\n * @param isRowSelected function for usage with `totalSelectedOrTotal`. Use tableInter.isSelected(rowIdx).\n *\n * @deprecated will be removed in version >=9.1.0. Use `createExpression` instead.\n */\n createTableMarkdownExpr(field: string, table: ITidyTable, currentColumn: ITidyColumn | undefined, expression: string | undefined, selectedColumns: ITidyColumn[] | undefined, isRowSelected?: TidyRowFilter): (() => string) | undefined;\n\n /**\n * Not in widget public context because of transformation not applied from a widget context always.\n *\n * @param expression typically coming from a widget field so it cannot be null if there is a default value.\n * To prevent usage of the default, pass an \"empty\" string that makes this method returns\n * undefined.\n * @param selectedColumns get the row of these columns using `_rowOfSelectedColumns` or `_selectedColumns`.\n * @param isRowSelected function for usage with `totalSelectedOrTotal`. Use tableInter.isSelected(rowIdx).\n *\n * @deprecated will be removed in version >=9.1.0. Use `createExpression` instead.\n */\n createTableRowNumericExpr(field: string, table: ITidyTable, currentColumn: ITidyColumn | undefined, expression: string | undefined, selectedColumns: ITidyColumn[] | undefined, isRowSelected?: TidyRowFilter): ((rowIdx: number) => number | undefined) | undefined;\n\n /**\n * same as createTableRowNumericExpr but returning a string\n * @param selectedColumns get the row of these columns using `_rowOfSelectedColumns` or `_selectedColumns`.\n * @param isRowSelected function for usage with `totalSelectedOrTotal`. Use tableInter.isSelected(rowIdx).\n *\n * @deprecated will be removed in version >=9.1.0. Use `createExpression` instead.\n */\n createTableRowNumericStringExpr(field: string, table: ITidyTable, currentColumn: ITidyColumn | undefined, expression: string | undefined, selectedColumns: ITidyColumn[] | undefined, isRowSelected?: TidyRowFilter): ((rowIdx: number) => string | undefined) | undefined;\n\n /**\n * @param selectedColumns get the row of these columns using `_rowOfSelectedColumns` or `_selectedColumns`.\n * @param isRowSelected function for usage with `totalSelectedOrTotal`. Use tableInter.isSelected(rowIdx).\n *\n * @deprecated will be removed in version >=9.1.0. Use `createExpression` instead.\n */\n createTableScaleRowNumericExpr(field: string, table: ITidyTable, currentColumn: ITidyColumn | undefined, expression: string | undefined, selectedColumns: ITidyColumn[] | undefined, isRowSelected?: TidyRowFilter): ((rowIdx: number) => number | undefined) | undefined;\n\n /**\n * Not in widget public context because of transformation not applied from a widget context always.\n *\n * @param expression typically coming from a widget field so it cannot be null if there is a default value.\n * To prevent usage of the default, pass an \"empty\" string that makes this method returns\n * undefined.\n * @param selectedColumns get the row of these columns using `_rowOfSelectedColumns` or `_selectedColumns`.\n * @param isRowSelected function for usage with `totalSelectedOrTotal`. Use tableInter.isSelected(rowIdx).\n *\n * @deprecated will be removed in version >=9.1.0. Use `createExpression` instead.\n */\n createTableNumericExpr(field: string, table: ITidyTable, currentColumn: ITidyColumn | undefined, expression: string | undefined, selectedColumns: ITidyColumn[] | undefined, isRowSelected?: TidyRowFilter): (() => number | undefined) | undefined;\n\n /**\n * same as createTableNumericExpr but returning a javascript object\n *\n * @deprecated will be removed in version >=9.1.0. Use `createExpression` instead.\n */\n createTableNumericStringExpr(field: string, table: ITidyTable, currentColumn: ITidyColumn | undefined, expression: string | undefined, selectedColumns: ITidyColumn[] | undefined, isRowSelected?: TidyRowFilter): (() => any | undefined) | undefined;\n\n\n /**\n * same as createTableNumericExpr but returning a javascript object\n *\n * @deprecated will be removed in version >=9.1.0. Use `createExpression` instead.\n */\n createTableNumericJSExpr(field: string, table: ITidyTable, currentColumn: ITidyColumn | undefined, expression: string | undefined, selectedColumns: ITidyColumn[] | undefined, isRowSelected?: TidyRowFilter): (() => any | undefined) | undefined;\n\n /**\n * Event methods that do not depend on a Table\n *\n * @see ITidyTableInteractionEvent for more\n */\n\n /**\n * actionName if the action is bound to a channel, clears the event (has no value)\n */\n fireClearEventName(actionName: string): void;\n\n /**\n * actionName if the action is bound to a channel, send an Mdx Event (value,mdx)\n */\n fireMdxEventName(actionName: string, value: string, mdx: string): void;\n\n /**\n * Used for publishing app notifications (e.g., print the report).\n */\n fireAppNotification(notification: AppNotification): void;\n\n formatDate(value: Date | string | undefined | null, format: ThemeTextFormatter | null | undefined, locale?: string): string;\n\n formatNumber(value: number | string | undefined | null, format: ThemeTextFormatter | null | undefined, locale?: string): string;\n\n /**\n * A shortcut for formatNumber( theme.formatter.defaultNumber )\n */\n formatAmount(value: number | string | undefined | null, locale?: string): string;\n\n /**\n * A shortcut for formatNumber( theme.formatter.defaultPercent )\n */\n formatPercent(value: number | string | undefined | null, locale?: string): string;\n\n}\n\nexport interface IWidgetStableContext extends IPublicContext {\n\n getTemplateId(): string;\n\n getNsId(): string;\n\n getWidgetId(): string;\n\n getTemplateId(): string;\n\n isPrintingMode(): boolean;\n\n renderWidgetContentMessage(type: IContentMessageType, message: string): any;\n\n renderLazyTreeView<T>(props: LazyTreeViewProps): T;\n\n wrapWithTooltip(tooltip: string | undefined, wrappedElement: React.ReactElement): React.ReactElement;\n\n onWidgetRenderStatusChange(status: WidgetRenderLayoutStatus): void;\n\n /**\n * Event methods that do not depend on a Table\n *\n * @see ITidyTableInteractionEvent for more\n */\n\n /**\n * returns true if the actionName in bound to a channel\n */\n firesEvent(actionName: string): boolean;\n\n /**\n * actionName if the action is bound to a channel, clears the event (has no value)\n */\n fireClearEvent(actionName: string): void;\n\n /**\n * actionName if the action is bound to a channel, send an Mdx Event (value,mdx)\n */\n fireMdxEvent(actionName: string, value: string, mdx: string): void;\n\n fireMdxEvents(events: { actionName: string, value: string, mdx: string }[]): void;\n\n /**\n * Cypress testing purpose, after a rendering of the chart\n */\n incrementWidgetContentRendering(): void;\n\n getWidgetTemplateDefinition(qualifiedId: string): IPublicWidgetTemplateDefinition<any>;\n\n resolveWidgetTemplateDefinition(definition: IPublicWidgetTemplateDefinition<any>): Promise<IPublicWidgetTemplateDefinition<any>>;\n\n /**\n * React -> combines useReduxOwnProps and setReduxOwnProps with a similar syntax to Redux.useState\n *\n * Note it's NOT the initial value but value if undefined\n */\n useReduxOwnPropsState<T>(fieldName: string, valueIfUndefined?: T): [T, (newValue: T | undefined) => void];\n\n /**\n * React -> useSelector on widgetOwnProps[fieldName]\n */\n useReduxOwnProps<T>(fieldName: string): T;\n\n /**\n * Redux -> set in Redux value in widgetOwnProps[fieldName]\n */\n setReduxOwnProps(fieldName: string, value: any): void;\n\n\n /**\n * Google map\n */\n\n /**\n * React only, like an use function\n *\n * Loads Google map library with the API key as set\n *\n * return\n * true when the google map is ready (lib loaded)\n * error when\n */\n reactUseGoogleMap(): boolean | Error;\n\n /**\n * React only, like an use function\n *\n * reactUseGoogleMap() + rendered the map into the div referenced by ref with mapOptions\n *\n * @param mapOptions google.maps.MapOptions\n * @param ref ref React.RefObject<HTMLDivElement>\n *\n * return\n * undefined if loading\n * {map} google.maps.Map instance when loaded\n * {error} if loaded on error\n */\n reactUseGoogleMapPlus(mapOptions: any, ref: any): undefined | { map?: any; error?: Error };\n\n /**\n * Returns latitude and longitude with the same logic as for internal maps\n *\n *\n */\n getMapCoordinates(table: ITidyTable): [ITidyNumericColumn, ITidyNumericColumn] | [];\n\n getGoogleMapRenderedDelayMS(): number;\n\n /**\n * Displays an warning icon in the widget header showing the warning when the user hovers the icon.\n * Be sure to clear all warnings before rendering using {@see widgetClearWarnings}\n */\n addWidgetWarning(warning: string, severity?: WidgetWarningSeverity): void;\n\n /**\n * Clear the warnings in the widget.\n */\n widgetClearWarnings(): void;\n\n /**\n * Notification\n *\n * like a listener on the components, for React the implementation uses a useEffect, it should\n * NOT be called conditionally.\n */\n useNotification(notifications: WidgetNotificationHandler | WidgetNotificationHandler[], deps: ReadonlyArray<unknown> | undefined): void;\n\n useUserMenu(handler: (userMenu: string) => any | void, deps: ReadonlyArray<unknown> | undefined): void;\n\n /**\n * doExport callback is called on each exportToExcel from the userMenu of the widget\n *\n * if the callback returns a tidyTable, this table will be exported\n * if undefined is returned no further action\n *\n * disabled === true, the doExport function is not used\n */\n onExportToExcel(doExport: undefined | (() => ITidyTable | undefined | null), disabled?: boolean): void;\n\n /**\n * Export the widget data to Excel or CSV.\n * @param table data in the widget (with transformations applied).\n * @param asPivotForExcel If true, convert hierarchical structures to flat columns. Default = false for Excel\n * exports and true for CSV exports.\n * @param rows filter the table by these rows before exporting.\n * @param event object. If `event.format = 'csv'` then this method makes a CSV export. Default is Excel.\n * `event.value` (optional) is the file name of the export.\n */\n exportToExcel(table: ITidyTable, asPivotForExcel: boolean | undefined, rows: number[] | undefined, event?: {\n format?: 'csv' | 'xlsx';\n value?: string;\n }): void;\n\n useUserMenuWidth(): number | undefined;\n\n /**\n * Get the (translated) file name for exporting. Does not include file extension. Method returns 'export-file'\n * if no file name is found.\n * @param defaultName if not undefined, method returns this.\n * @param defaultFileName\n */\n getExportFileName(defaultFileName?: string): string;\n\n /**\n * Returns the report name of the report defining this widget (i.e. could be the embedding)\n */\n getDefiningReportName(): string;\n\n /**\n * Returns the report path of the report defining this widget (i.e. could be the embedding)\n */\n getDefiningReportPath(): string;\n\n /**\n * Returns the report folder name of the report defining this widget (i.e. could be the embedding)\n */\n getDefiningReportFolderName(): string;\n\n}\n\nexport interface IWidgetPublicContext extends IPublicContext {\n /**\n * Context unlikely to change during the lifecycle of a widget\n * more appropriate to use in a React hook context.\n */\n getStableContext(): IWidgetStableContext;\n\n /**\n * Get the width of the widget box in pixels.\n */\n getWidgetWidth(): number | undefined;\n\n /**\n * Get the height of the widget box in pixels.\n */\n getWidgetHeight(): number | undefined;\n\n getWidgetPageNb(): number;\n\n /**\n * Returns true if and only if the widgets has a header (from the chart box settings).\n */\n widgetHasHeader(): boolean;\n\n getBoxSettings(): IPublicWidgetBoxSettings;\n\n /**\n * True if and only if the widget is invisible, e.g., it has display none.\n */\n isInvisible(): boolean;\n\n}\n\nexport interface IPublicWidgetBoxSettings {\n widgetId: string;\n waitingEventOrResult?: string;\n emptyResult?: string;\n}\n\nexport interface IWidgetEditorPublicContext {\n\n /**\n * The variants available in the theme for the edited widget.\n */\n getWidgetVariantIds(componentName?: string): string[];\n\n}","import {ITidyTable} from \"./PublicTidyTable\";\nimport {ITidyTableInteraction} from \"./PublicTidyTableInteractions\";\nimport {IWidgetPublicContext} from \"./PublicContext\";\nimport {FormFieldObject, FormFields, IFormColumnChooserFieldDef} from \"./PublicTemplateForm\";\nimport {IWidgetVariantManager} from \"./IWidgetVariantManager\";\nimport {ReactElement} from \"react\";\nimport {Theme} from \"@mui/material/styles\";\nimport {WidgetTemplateChartOptions, WidgetTemplateIDs} from \"./PublicTemplates\";\nimport {ChartTemplateDataMapping, IFormFieldGranularityItem} from \"./PublicTidyTableTypes\";\nimport {PositionModeOptions, ResizingConstraintOptions} from \"./theme/ThemeWidgetBox\";\nimport {QueryType} from \"./ITypes\";\nimport {ILogger} from \"@ic3/common-api\"\n\nexport interface IRectanglePosition {\n top: number;\n left: number;\n}\n\nexport interface IRectangleSize {\n height: number;\n width: number;\n}\n\nexport interface IRectangle extends IRectanglePosition, IRectangleSize {\n}\n\n/**\n * Widget box configuration when the widget is rendered in the responsive grid layout.\n * This is used instead of the regular rectangle and positionOrder configuration.\n */\nexport interface IWidgetBoxGridLayoutInfo {\n\n /**\n * Handy (same as in IWidgetDefinition).\n */\n widgetId: string;\n\n /**\n * The responsive grid layout is made of a single flex (row) box.\n * The index in the only row of the 'flex' layout.\n */\n position: number;\n\n /**\n * A part of the total number of columns in the 'flex' layout.\n */\n colSpan: number;\n\n /**\n * The actual physical height.\n */\n height: number;\n\n /**\n * The group (i.e., nested grid layout) this widget belongs to.\n */\n group?: IWidgetBoxGroupGridLayoutInfo;\n\n}\n\n/**\n * Support for nested grid layout : a grid item can be a group of widgets rendered as a grid layout.\n *\n * The actual number of columns of this nested grid layout is the colSpan of the group seen as a regular\n * item of the containing grid layout. The group inherit both the column and row spacing of its containing\n * grid layout and has no margin.\n *\n * For the sake of simplicity a group cannot contain a group.\n */\nexport interface IWidgetBoxGroupGridLayoutInfo {\n\n groupId: string;\n\n /**\n * A group is a regular item of its containing grid layout.\n * @see IWidgetBoxGridLayoutInfo\n */\n position: number;\n\n /**\n * A group is a regular item of its containing grid layout.\n * @see IWidgetBoxGridLayoutInfo\n */\n colSpan: number;\n\n /**\n * A group is a regular item of its containing grid layout.\n * @see IWidgetBoxGridLayoutInfo\n */\n height: number;\n\n}\n\nexport interface IWidgetLayoutData {\n\n /**\n * Keep box header settings for additional (i.e., generated) pages.\n */\n keepBoxHeader: boolean;\n\n /**\n * Keep box header settings for additional (i.e., generated) pages.\n */\n keepTableHeader: boolean;\n\n startRow: number;\n endRow: number;\n\n}\n\nexport interface IWidgetLayoutInfo extends IRectangle {\n\n pageNb: number;\n\n positionOrder: number;\n\n gridLayoutInfo?: IWidgetBoxGridLayoutInfo;\n\n data?: IWidgetLayoutData;\n\n resizingConstraint?: ResizingConstraintOptions;\n\n positionMode?: PositionModeOptions;\n\n /**\n * When _ printing _, the widget's layout has been converted and this scale has been applied to compute\n * the new widget size.\n */\n widgetContentScaled?: number;\n\n}\n\nexport type IPublicWidgetTemplateDefinition<T extends FormFieldObject> =\n IPublicWidgetReactTemplateDefinition<T> | IPublicWidgetJsTemplateDefinition<T>;\n\nexport enum IWidgetTemplateMdxBuilderAxisPropsConstraint {\n DateType = 'DateType',\n GeoLatLong = 'GeoLatLong',\n GeoIso2Code = 'GeoIso2Code',\n}\n\nexport interface IWidgetTemplateMdxBuilderAxisProps {\n\n /**\n * Unique name used in the UI and if mdxAxisName not defined for building the query.\n * If name is 'rows' for example, then in the query it will use 'ON \"rows\"'.\n */\n name: string,\n\n /**\n * The axis can be empty\n */\n isOptional?: true;\n\n /**\n * All axes with the same (not null) value for mdxAxisName are put as a tuple on the same axis. And the roles are\n * comma separated.\n */\n mdxAxisName?: string,\n\n /**\n * Disable empty\n */\n disableNonEmpty?: true;\n\n /**\n * For filters add lazy load feature to the axis.\n */\n withLazySearch?: true;\n\n /**\n * Allow only a single member\n */\n singleMember?: true,\n\n /**\n * Allow a multiple hierarchies to build a crossjoin\n */\n multipleHierarchy?: true,\n\n /**\n * Additional constraints for the set/members\n */\n constraint?: IWidgetTemplateMdxBuilderAxisPropsConstraint;\n\n decoration?: {\n with?: string,\n set: string,\n }\n\n /**\n * Show the mdxAxis names in this order in the builder\n */\n showOrder?: number;\n\n /**\n * Allows to overwrite the ON \"rows\"in the MDX query (to be used on modifyDefinition function)\n */\n overwriteAxisName?: string;\n\n /**\n * This is used to give end customers information on the limit of the query (column have 1000 by default, rows 100'000)\n */\n infoForSizing?: \"TIDY_ROW\" | \"TIDY_COL\";\n\n}\n\nexport interface IWidgetTemplateMdxBuilderMapping {\n\n /**\n * The order determines the order of the statements in the query. E.g., the first position is ON 0, the second ON 1,\n * etc., where '0' and '1' are replaced by the name.\n */\n mdxAxis: Readonly<IWidgetTemplateMdxBuilderAxisProps[]>;\n\n /**\n * The generated MDX is for a filter (the cell values are not of interest).\n */\n mdxIsForFilter?: true;\n\n /**\n * The cell values are not needed.\n */\n withoutCellValues?: true;\n\n /**\n * The cell values are not needed if there is a single axis in the query.\n */\n withoutCellValuesSingleAxis?: true;\n\n /**\n * An MDX query if the builder is empty.\n */\n mdxQueryIfEmpty?: boolean;\n\n\n /**\n * model is a IMdxQueryBuilderModel, that is not shared publicly yet\n *\n * returns a modified definition or an MDX statement in a string\n *\n * If we return a string (MDX Statement), the Filters are still going to be appended to the end\n */\n modifyDefinition?: (model: any, definition: IWidgetTemplateMdxBuilderMapping) => IWidgetTemplateMdxBuilderMapping | string,\n}\n\n/**\n * A widget that renders using React.\n *\n * @see FormFieldObject\n */\nexport interface IPublicReactChartTemplate<T extends FormFieldObject> {\n\n /**\n * @param data the actual result of the widget's query\n * @param options the options (possibly edited and/or from the theme) of this widget\n * @param header aka. widget title\n */\n reactElement: (data: IWidgetTemplateTidyData, options: T, header: string) => ReactElement;\n\n}\n\n/**\n * A widget that renders using plain JavaScript/TypeScript.\n *\n * @see FormFieldObject\n */\nexport interface IPublicJsChartTemplate<T extends FormFieldObject> {\n\n /**\n * @param data the actual result of the widget's query\n * @param options the options (possibly edited and/or from the theme) of this widget\n * @param header aka. widget title\n */\n renderJS: (data: IWidgetTemplateTidyData, options: T, header: string) => void;\n\n renderOnResizeJS?: (data: IWidgetTemplateTidyData, options: T, header: string, info: IWidgetLayoutInfo) => void;\n\n dispose: () => void;\n\n}\n\nexport interface IPublicWidgetReactProps<OPTIONS> {\n wContext: IWidgetPublicContext,\n data: IWidgetTemplateTidyData,\n options: OPTIONS,\n widgetHeader: string\n}\n\nexport interface IPublicErrorDefinition {\n\n /**\n * e.g. a user defined javascript error vs a programming error\n */\n expected?: boolean;\n\n name: string;\n args?: any[];\n\n cause?: any;\n\n}\n\nexport interface IPublicWidgetReactMdxResultOnErrorProps {\n\n error: IPublicErrorDefinition;\n\n}\n\n/**\n *\n *\n * @see IPublicReactChartTemplate\n * @see FormFieldObject\n */\nexport interface IPublicWidgetReactTemplateDefinition<OPTIONS extends FormFieldObject> extends IPublicCommonWidgetTemplateDefinition<OPTIONS> {\n\n /**\n * Deprecated: use reactEl instead.\n */\n jsCode?: (context: IWidgetPublicContext) => IPublicReactChartTemplate<OPTIONS>;\n\n /**\n * The React Hook component (function with props as parameter)\n */\n reactEl?: React.FunctionComponent<IPublicWidgetReactProps<OPTIONS>>;\n\n reactElMdxResultOnError? : React.FunctionComponent<IPublicWidgetReactMdxResultOnErrorProps>;\n\n reactComponent: true;\n\n /**\n * Only the widget template meta information is required when starting the application.\n *\n * This method gives the opportunity for a widget template to load (Webpack) its actual jsCode logic when required.\n * For example, AmCharts 4 widgets are loading the AmCharts 4 actual JS libraries once their rendering is actually\n * required.\n *\n * @param definitionW a resolved wrapped widget (extending widget).\n */\n resolveDefinition?: (definitionW?: IPublicWidgetTemplateDefinition<any>) => Promise<IPublicWidgetTemplateDefinition<OPTIONS>>;\n\n}\n\n/**\n * The definition of a widget that renders using plain JavaScript/TypeScript.\n *\n * @see IPublicJsChartTemplate\n * @see FormFieldObject\n */\nexport interface IPublicWidgetJsTemplateDefinition<OPTIONS extends FormFieldObject> extends IPublicCommonWidgetTemplateDefinition<OPTIONS> {\n\n /**\n * Actual widget rendering logic.\n */\n jsCode: (context: IWidgetPublicContext, container: HTMLDivElement) => IPublicJsChartTemplate<OPTIONS>;\n\n reactComponent?: false;\n\n /**\n * Only the widget template meta information is required when starting the application.\n *\n * This method gives the opportunity for a widget template to load (Webpack) its actual jsCode logic when required.\n * For example, AmCharts 4 widgets are loading the AmCharts 4 actual JS libraries once their rendering is actually\n * required.\n *\n * @param definitionW a resolved wrapped widget (extending widget).\n */\n resolveDefinition?: (definitionW?: IPublicWidgetTemplateDefinition<any>) => Promise<IPublicWidgetTemplateDefinition<OPTIONS>>;\n\n}\n\n/**\n * Definition - static - of a widget template\n */\ninterface IPublicCommonWidgetTemplateDefinition<OPTIONS extends FormFieldObject> {\n\n /**\n * [BETA]\n *\n * Introduced to tag a template as part of the AI [BETA] features.\n * Currently used to filter out the template when AI not enabled.\n */\n ai?: true;\n\n /**\n * Used for finding the right documentation of `typeForHelp` is not defined.\n * Determine the widget icon in the widget infos.\n */\n type: WidgetTemplateDefinitionType;\n\n /**\n * Used for finding the right documentation (override `type`).\n */\n typeForHelp?: WidgetTemplateDefinitionType;\n\n /**\n * Unique within the plugin. Must not contain any dot (this is NOT the templateId)\n *\n * The widget chooser is using that id to localize its name and description.\n *\n * <pre>\n * plugin-id.id.$caption, ...\n * plugin-id.id.$caption.description, ...\n * </pre>\n */\n id: string;\n\n /**\n * Internal usage: while investigating lazy registration (setup upon registration).\n */\n debug?: string;\n\n /**\n * Internal usage: the wrapped pluginId.templateId (setup upon registration).\n */\n wrapped?: string;\n\n /**\n * Internal usage: pluginId.templateId (setup upon registration).\n */\n qualifiedId?: string;\n\n /**\n * Internal usage: pluginId (setup upon registration).\n */\n pluginId?: string;\n\n /**\n * Used for localization right now.\n *\n * The widget chooser is using that id to localize its name.\n *\n * <pre>\n * plugin-id.$groupId, ...\n * </pre>\n *\n * Should you like to reuse an existing group, localize the group using an existing one:\n *\n * <pre>\n * MyPlugin.$myMaps, Maps\n * </pre>\n *\n * then widgets defined ih the group \"myMaps\" of the plugin whose id=MyPlugin will be shown\n * in the \"Maps\" group in the widget chooser.\n */\n groupId: string;\n\n /**\n * A way to ensure we do not display in the widget chooser templates that cannot\n * be used because the rendering depends on a given theme.\n */\n dependsOnTheme?: string;\n\n /**\n * A sort of \"preview\" of the widget in the widget chooser. Providing an empty string will display a default image.\n *\n * <pre>\n * import donut from \"./images/donut.svg\";\n *\n * {\n * image: \"donut\",\n * }\n * </pre>\n */\n image: string;\n\n /**\n * No widget box decoration.\n */\n noDecoration?: boolean;\n\n /**\n * No widget *** box *** header (aka. title) is rendered. This widget template is taking care of it.\n */\n withoutHeader?: boolean;\n\n /**\n * No title is being edited/rendered.\n */\n withoutTitle?: boolean;\n\n /**\n * This widget does not require any query for rendering.\n */\n withoutQuery?: boolean;\n\n withoutSelection?: boolean;\n withoutInitialSelection?: boolean;\n withoutDrilldown?: boolean;\n withoutEvents?: boolean;\n\n withoutUserMenu?: boolean;\n withoutGlobalFilter?: boolean;\n\n /**\n * Otherwise the widget box is rendering a floating icon to mention some data errors.\n */\n handleCellsOnError?: boolean;\n\n renderIfNotInViewport?: boolean;\n\n /**\n * This widget needs to render even if its query has not been executed yet. The default is false.\n */\n renderIfQueryNotExecuted?: boolean;\n\n /**\n * Whether or not this widget can expand vertically according to its actual data\n * (e.g., table, repetition widget).\n */\n withOptionAutoExpand?: boolean;\n\n /**\n * When auto-expand applies and the layout is multi-page, this options controls whether the table\n * header is repeating on each page.\n */\n withOptionAutoExpandKeepTableHeader?: boolean;\n\n withOptionAutoExpandHeightNotDependingOnWidth?: boolean;\n\n /**\n * If and only if not null, hide option 'Interactions' > 'Drilldown' > 'Pivot Table Like' and set it default value to withDrilldownPivotTableLikeAs.\n */\n withDrilldownPivotTableLikeAs?: boolean;\n\n /**\n * Extra options for in the widgets user menu when in viewer mode.\n */\n userMenuOptions?: string[];\n\n /**\n * Additional widget user menu options when in editing mode.\n */\n userMenuOptionsOnEditing?: string[];\n\n /**\n * Disables the user menu option to switch between selection and drilldown\n *\n * E.g a Pivot table can manage both modes\n */\n userMenuDisableInteractionMode?: boolean;\n\n /**\n * This widget knows how to render a result without any data.\n */\n handlesNoData?: boolean;\n\n /**\n * This widget knows how to render when it has an empty query result.\n */\n handlesEmptyQuery?: boolean;\n\n /**\n * When the widget is just created, it shows an edit widget button. Set true here to show the widget instead.\n */\n canRenderWithoutUserConfig?: boolean;\n\n /**\n * This widget is responsible to notify its rendered status. Required with asynchronous rendering\n * (e.g., Google maps).\n *\n * @see IWidgetPublicContext#onWidgetRenderStatusChange\n */\n handlesWidgetStatus?: boolean;\n\n eventRoles?: ITemplateEventActionDef;\n\n selection?: {\n /**\n * The default selection granularity.\n */\n defaultGranularityItems?: IFormFieldGranularityItem[];\n\n /**\n * The list of columns/roles that can be part of the selection granularity. The granularity editor shows\n * when there are 2 or more roles.\n */\n granularityItems?: (table: ITidyTable) => IFormFieldGranularityItem[];\n }\n\n mdxBuilderSettings?: IWidgetTemplateMdxBuilderMapping;\n\n /**\n * Setup how to get default mappings from the table and options for this widget.\n * If undefined, it uses the default fallback logic.\n *\n * Note, the mapping keys must be in lower case.\n */\n defaultMapping?: (data: IWidgetTemplateTidyOptions<OPTIONS>) => ChartTemplateDataMapping;\n\n /**\n * The meta information required for editing the widget options.\n */\n chartOptionsMeta?: FormFields<OPTIONS>;\n\n /**\n * An optional hook that allows for modifying the chart options passed as parameter.\n * Used when extending existing widget definition.\n */\n hookChartOptions?: (options: any) => any;\n\n /**\n * When registering a variant add the following field editor meta:\n * <pre>\n * widgetVariant: {\n * fieldType: \"widgetVariant\",\n * localizationTag: \"variant\" // icCube localization,\n * },\n * </pre>\n */\n registerVariants?: (theme: Theme, manager: IWidgetVariantManager) => void;\n\n /**\n * e.g., amCharts4.\n * */\n lazyLibs?: string;\n\n /**\n * Whether or not that component is using React for rendering.\n */\n reactComponent?: boolean;\n\n /**\n * Only the widget template meta information is required when starting the application.\n *\n * This method gives the opportunity for a widget template to load (Webpack) its actual jsCode logic when required.\n * For example, AmCharts 4 widgets are loading the AmCharts 4 actual JS libraries once their rendering is actually\n * required.\n *\n * @param definitionW a resolved wrapped widget (extending widget).\n */\n resolveDefinition?: (definitionW?: IPublicWidgetTemplateDefinition<any>) => Promise<IPublicWidgetTemplateDefinition<OPTIONS>>;\n\n /**\n * When defining new widgets using amCharts 4, this method registers the icCube license.\n */\n registerAmCharts4?: (logger: ILogger, callback: (am4core: any) => void) => void;\n\n /**\n * When opening \"Use Global Filter\" option on Interaction tab\n */\n enableUseGlobalFilter?: boolean;\n\n /**\n * Returns true if the widget fires a global event at initialization (start)\n */\n firesGlobalEventAtStart?: (options: OPTIONS | undefined, templateDef: IPublicWidgetTemplateDefinition<OPTIONS>) => boolean;\n\n /**\n * Limit on the rows of the tidy result to both prevent the server and the browser to process\n * too many items. Set to -1 to have no limit. Note that the server side is defining a limit as well.\n * See icCube/help?ic3topic=dashboards.gettingstarted.Configuration for more details.\n *\n * Note: can be overridden via Dashboards options (ic3report-config.js).\n */\n maxTidyRowCount?: number,\n\n /**\n * List of supported types of query.\n *\n * Defaults: all of them.\n */\n withQueryTypes?: QueryType[];\n\n /**\n * Change the data to show when the user presses show-data from the widget menu.\n * @param ownProps\n */\n getShowHideDataTable?: (table: ITidyTable | undefined, options: OPTIONS, ownProps: any, theme: Theme) => ITidyTable | undefined;\n\n /**\n * For lazy filters or widgets with selection do not clean initial Selection based on initial tidy table\n */\n doNotCleanSelectionOnInitialProps?: true;\n}\n\n/**\n * *********************************************************************************************************************\n * DO NOT CHANGE THEIR VALUE : USED FOR FINDING THE DOCUMENTATION.\n * *********************************************************************************************************************\n */\nexport enum WidgetTemplateDefinitionType {\n Chart = \"chart\",\n Filter = \"filter\",\n Map = \"map\",\n Misc = \"misc\",\n}\n\nexport interface IWidgetTemplateTidyData {\n\n table: ITidyTable;\n inter: ITidyTableInteraction;\n\n}\n\nexport interface IWidgetTemplateTidyOptions<T extends FormFieldObject> {\n table: ITidyTable;\n options: T;\n}\n\nexport interface IChartVisualizationTypedInput<T extends FormFieldObject> {\n\n table: ITidyTable;\n inter: ITidyTableInteraction;\n\n options: T;\n}\n\n/**\n * The mapping meta are all the column that the user can select in the chart options. These options are checked for\n * validity. The widget generates an error if columns are selected that are not in the allowed properties, or if\n * columns are mandatory but there is no selection or fallback.\n */\nexport type IWidgetTemplateDataMappingDef = IFormColumnChooserFieldDef;\n\n/**\n * Predefined roles\n */\nexport enum TemplateEventActionNames {\n SELECTION = 'Selection',\n DRILLDOWN = 'Drilldown',\n\n // Notifications\n ADD_SELECTION = 'AddSelection',\n FILTER_TO_DEFAULT = 'FilterToDefault',\n}\n\n/**\n *\n * Definition of the actions supported by a template\n *\n *\n * ( e.g., publish: 'onClick' )\n */\nexport interface ITemplateEventActionDef {\n\n /**\n * The actions publishing to a channel\n */\n publish?: string[];\n\n /**\n * The actions subscribing to a channel (only new events value are sent, state change)\n */\n subscribe?: string[];\n\n /**\n * The actions being notified by a channel (on each new event generated)\n */\n notify?: string[];\n\n /**\n * The actions publishing to the 'selection' channel (it's internally managed by TidyTableInteraction)\n */\n selectionPublish?: string;\n\n /**\n * The actions subscribing to the 'selection' channel\n */\n selectionSubscribe?: string;\n\n /**\n * Return true if the widget fires the event on its first render. This forces other widgets that use this event\n * to wait before rendering.\n */\n isEventFiredAtStart?: (roleName: string, options: any) => boolean;\n\n}\n\nexport interface IWrappedWidgetTemplateDefinition<WIDGET extends WidgetTemplateIDs> {\n\n /**\n * Some free text used while registering the wrapper (e.g., error purpose).\n */\n readonly registrationInfo: string;\n\n /**\n * e.g., ic3.Table\n */\n readonly wrappedWidgetTemplateId: WIDGET;\n\n /**\n * A function generating the widget template definition based on the wrapped widget template definition.\n */\n readonly wrapper: (wrapped: IPublicWidgetTemplateDefinition<WidgetTemplateChartOptions[WIDGET]>) => IPublicWidgetTemplateDefinition<FormFieldObject>;\n\n}","import {IPublicContext, IWidgetEditorPublicContext} from \"./PublicContext\";\nimport {ITidyColumn} from \"./PublicTidyColumn\";\nimport * as React from \"react\";\nimport {\n ChartTemplateDataMapping,\n IFormFieldGranularityItem,\n TidyColumnsType,\n TidyTableColumnSelector\n} from \"./PublicTidyTableTypes\";\nimport {ITidyTable} from \"./PublicTidyTable\";\nimport {Theme} from \"@mui/material/styles\";\nimport {\n AutocompleteProps,\n AutocompleteRenderInputParams,\n AutocompleteRenderOptionState\n} from \"@mui/material/Autocomplete\";\nimport {IFormTidyTableExprFieldDef} from \"./PublicTemplateExprForm\";\n\nexport type Hook<T, P> = {\n\n hook: (value: T, options: P) => void;\n\n}\n\nexport function formFieldIsSelection(field: IFormFieldDef<any>) {\n return field.group === IFormFieldGroupTypes.Selection;\n}\n\nexport interface IFormFieldDef<DEFAULT_VALUE_TYPE> {\n\n /**\n * The path of the field within the edited bean.\n */\n fieldPath: string;\n\n /**\n * Default: false ,\n *\n * If defaultValue is defined,\n */\n mandatory?: boolean;\n\n /**\n * The default value defined at field level (note: can be defined at Theme level as well).\n */\n defaultValue?: DEFAULT_VALUE_TYPE;\n\n /**\n * Override fieldPath to search for a default value in the Theme.\n */\n defaultValuePath?: string;\n\n /**\n * The optional group a field belongs too\n *\n * @see IFormGroupsFieldDef\n * @see IFormBooleanFieldDef\n */\n group?: string;\n\n /**\n * When defined, the value is added as a prefix to the fieldPath to define the localization tag.\n */\n fieldPrefixTag?: IFormFieldGroupTypes | string;\n\n /**\n * When defined, this tag is used for localization\n */\n localizationTag?: string;\n\n /**\n * Default: \"string\".\n */\n fieldType: FormFieldType;\n\n /**\n * Override default localization.\n */\n fieldDescription?: string;\n\n /**\n * Default: false\n */\n readOnly?: boolean;\n\n /**\n * An optional field path value. The value of this field depends on the value of the dependsOn field.\n */\n dependsOn?: string | string[];\n\n /**\n * Clear the field if the value in the depends-on field changes.\n */\n dependsOnReset?: true;\n\n /**\n * When defined a function that returns the visibility of the field according to the dependsOn value.\n */\n dependsOnVisibility?: boolean | ((dependsOnValue?: any) => boolean);\n\n valueFromDependsOnValue?: (dependsOnValue?: string) => any;\n\n /**\n * When defined a function that returns the visibility of the field.\n */\n visibility?: boolean | ((context: IWidgetEditorPublicContext) => boolean);\n\n /**\n * When defined the content of the field is translated (using context.translateContent).\n *\n * Only works for chart/widgetOptions !!\n */\n translated?: boolean;\n\n /**\n * Allow for group of fields, disabled help in form wrapper\n */\n disableHelpInWrapper?: boolean;\n\n onValueSet?: (value: any) => void;\n}\n\n/**\n * The options (possibly edited and/or from the theme) of a widget.\n *\n * Aka Props\n */\nexport interface FormFieldObject {\n\n // We need this so extends FormFieldObject works (TypeScript uses the definition of the interface not it's name).\n readonly '0242ac130003': '0242ac130003';\n\n}\n\nexport type FormFields<T extends FormFieldObject> = {\n [key in keyof Omit<T, '0242ac130003'>]-?: // make the key mandatory even though the field is optional\n (\n // defaultValue mandatory if the field is non-nullable in T.\n Required<T>[key] extends FormFieldObject ? { defaultValue?: any } :\n undefined extends NonNullable<T>[key] ? { defaultValue?: any } :\n { defaultValue: unknown } | { mandatory: true }\n )\n &\n (\n // A field cannot both be mandatory and have a default value.\n // Only use mandatory when there is an action required by the user.\n Required<T>[key] extends FormFieldObject ? unknown :\n { defaultValue?: any, mandatory?: true } | { defaultValue?: any, mandatory?: false }\n )\n &\n (\n // matching T type with FormFieldType\n Required<T>[key] extends FormFieldObject ? Omit<IFormEmbeddedFieldDef<Required<T>[key]>, 'fieldPath'> :\n Required<T>[key] extends IPaletteDef ? Omit<IFormPaletteEditorFieldDef, 'fieldPath'> :\n Required<T>[key] extends IFormConditionalColorRule[] ? Omit<IFormConditionalColorRulesFieldDef, 'fieldPath'> :\n Required<T>[key] extends IColorDef ? Omit<IFormColorEditorFieldDef, 'fieldPath'> :\n Required<T>[key] extends TidyTableColumnSelector[] ? Omit<IFormColumnChooserMultipleFieldDef, 'fieldPath'> :\n Required<T>[key] extends TidyTableColumnSelector ? Omit<IFormColumnChooserSingleFieldDef, 'fieldPath'> :\n Required<T>[key] extends IFormEventMappingArrayFieldDefType ? Omit<IFormEventMappingArrayFieldDef, 'fieldPath'> :\n Required<T>[key] extends IFormEventArrayFieldDefType ? Omit<IFormEventArrayFieldDef, 'fieldPath'> :\n Required<T>[key] extends IFormSearchAndReplaceArrayFieldDefType ? Omit<IFormSearchAndReplaceArrayFieldDef, 'fieldPath'> :\n Required<T>[key] extends Hook<any, any> ? Omit<IFormHookFieldDef<any>, 'fieldPath'> :\n Required<T>[key] extends boolean ? Omit<IFormBooleanFieldDef, 'fieldPath'> :\n Required<T>[key] extends number ? Omit<IFormNumberFieldDef, 'fieldPath'> :\n Required<T>[key] extends number ? Omit<IFormMaskFieldDef, 'fieldPath'> :\n Required<T>[key] extends string ?\n Omit<IFormOptionFieldSingleDef, 'fieldPath'>\n | Omit<IFormStringFieldDef, 'fieldPath'>\n | Omit<IFormFormatterPickerFieldDef, 'fieldPath'>\n | Omit<IFormWidgetVariantFieldDef, 'fieldPath'>\n | Omit<IFormTidyTableTextExprFieldDef, 'fieldPath'>\n | Omit<IFormTidyTableTextRowExprFieldDef, 'fieldPath'>\n | Omit<IFormTidyTableNumericStringColumnExprFieldDef, 'fieldPath'>\n | Omit<IFormTidyTableHtmlRowExprFieldDef, 'fieldPath'>\n | Omit<IFormTidyTableHtmlExprFieldDef, 'fieldPath'>\n | Omit<IFormTidyTableNumericExprFieldDef, 'fieldPath'>\n | Omit<IFormTidyTableNumericRowExprFieldDef, 'fieldPath'>\n | Omit<IFormTidyTableNumericJSColumnExprFieldDef, 'fieldPath'>\n | Omit<IFormTidyTableColorRowExprFieldDef, 'fieldPath'>\n | Omit<IFormTidyTableStringRowExprFieldDef, 'fieldPath'>\n | Omit<IFormTidyTableScaleRowExprFieldDef, 'fieldPath'>\n | Omit<IFormJsFieldDef, 'fieldPath'>\n | Omit<IFormJsonFieldDef, 'fieldPath'>\n | Omit<IFormMarkdownFieldDef, 'fieldPath'>\n | Omit<IFormOptionFieldReportPathDef, 'fieldPath'>\n | Omit<IFormPropertyChooserBaseDef, 'fieldPath'>\n | Omit<IFormLayoutFieldDef, 'fieldPath'>\n | Omit<IFormLayoutFieldDef, 'fieldPath'>\n | Omit<IFormFilterPanelModelSelectorFieldDef, 'fieldPath'>\n | Omit<IFormShortcutChooserDef<string>, 'fieldPath'>\n | Omit<IFormIconFieldSingleDef, 'fieldPath'>\n :\n\n Required<T>[key] extends string[] ? Omit<IFormOptionFieldMultipleDef, 'fieldPath'>\n | Omit<IFormGroupsFieldDef, 'fieldPath'> | Omit<IFormShortcutChooserDef<string[]>, 'fieldPath'> :\n\n never /* type not supported */\n )\n};\n\nexport enum IFormFieldGroupTypes {\n Selection = 'groupSelection',\n FilterGeneralOption = 'filterGeneralOptionsGroup',\n FilterItem = 'filterItemGroup',\n}\n\nexport type FormFieldType =\n |\n /**\n * @see IFormReportPathFieldDef\n */\n \"appPath\" |\n /**\n * @see IFormAutocompleteFieldDef\n */\n \"autocomplete\" |\n /**\n * @see IFormBooleanFieldDef\n */\n \"boolean\" |\n /**\n * @see IFormColorEditorFieldDef\n */\n \"color\" |\n /**\n * @see IFormColumnChooserFieldDef\n */\n \"columnsChooser\" |\n /**\n * @see IFormColumnSelectionFieldDef\n */\n \"columnSelection\" |\n /**\n * @see IFormConstantsFieldDef\n */\n \"constants\" |\n /**\n * @see IFormArrayStringRecordsFieldDef\n */\n \"eventMappingArray\" |\n\n \"eventArray\" |\n /**\n * @see IFormEmbeddedFieldDef\n */\n \"embedded\" |\n /**\n * @see IFormFileUploaderFieldDef\n */\n \"fileUploader\" |\n /**\n * @see IFormFormatterPickerFieldDef\n */\n \"formatterPicker\" |\n /**\n * @see IFormBooleanFieldDef\n */\n \"fixedBoolean\" |\n /**\n * @see IFormBooleanFieldDef\n */\n \"groupBoolean\" |\n /**\n * @see IFormGroupsFieldDef\n */\n \"groups\" |\n /**\n * @see IFormFunctionFieldDef\n */\n \"hook\" |\n /**\n * @see IFormJsFieldDef\n */\n \"js\" |\n /**\n * @see IFormJsonFieldDef\n */\n \"json\" |\n /**\n * @see IFormMarkdownFieldDef\n */\n \"markdown\" |\n /**\n * @see IFormMaskFieldDef\n */\n \"mask\" |\n /**\n * @see IFormMdxFieldDef\n */\n \"mdxExpression\" |\n /**\n * @see IFormMuiVariantFieldDef\n */\n \"number\" |\n /**\n * @see IFormOptionFieldDef\n */\n \"option\" |\n /**\n * @see IFormColorEditorFieldDef\n */\n \"palette\" |\n /**\n * @see IFormReportPathFieldDef\n */\n \"reportFolder\" |\n /**\n * @see IFormReportPathFieldDef\n */\n \"reportPath\" |\n /**\n * @see IFormReportPermaLinkFieldDef\n */\n \"reportPermaLink\" |\n /**\n * @see IFormStringFieldDef\n */\n \"string\" |\n /**\n * @see IFormTextFieldDef\n */\n \"text\" |\n FormFieldTidyTableExprType |\n /**\n * @see IFormUrlFieldDef\n */\n \"url\" |\n /**\n * @see IFormWidgetVariantFieldDef\n */\n \"widgetVariant\" |\n /**\n * @see IFormGranularitySelectionFieldDef\n */\n \"granularityChooser\" |\n /**\n * @see IFormSearchAndReplaceArrayFieldDefType\n */\n \"searchAndReplaceArray\" |\n /**\n * @see IFormPropertyChooserBaseDef\n */\n \"propertyChooser\" |\n /**\n * @see IFormLayoutFieldDef\n */\n \"layout\" |\n /**\n * @see IFormConditionalColorRulesFieldDef\n */\n \"conditionalColorRules\" |\n /**\n * @see IFormFilterPanelModelSelectorFieldDef\n */\n \"filterPanelModelSelector\" |\n /**\n * @see IFormShortcutChooserDef\n */\n \"shortcutChooser\" |\n /**\n * @see IFormIconFieldSingleDef\n */\n \"icon\"\n ;\n\nexport type FormFieldTidyTableExprType =\n |\n /**\n * @see IFormTidyTableColorRowExprFieldDef\n */\n \"tidyTableColorRowExpr\" |\n /**\n * @see IFormTidyTableHtmlExprFieldDef\n */\n \"tidyTableHtmlExpr\" |\n /**\n * @see IFormTidyTableHtmlRowExprFieldDef\n */\n \"tidyTableHtmlRowExpr\" |\n /**\n * @see IFormTidyTableNumericExprFieldDef\n */\n \"tidyTableNumericExpr\" |\n /**\n * @see IFormTidyTableNumericJSColumnExprFieldDef\n */\n \"tidyTableNumericJSColumnExpr\" |\n /**\n * @see IFormTidyTableNumericRowExprFieldDef\n */\n \"tidyTableNumericRowExpr\" |\n /**\n * @see IFormTidyTableNumericStringColumnExprFieldDef\n */\n \"tidyTableNumericStringColumnExpr\" |\n /**\n * @see IFormTidyTableScaleRowExprFieldDef\n */\n \"tidyTableScaleRowExpr\" |\n /**\n * @see IFormTidyTableTextExprFieldDef\n */\n \"tidyTableTextExpr\" |\n /**\n * @see IFormTidyTableTextRowExprFieldDef\n */\n \"tidyTableTextRowExpr\" |\n /**\n * @see IFormTidyTableStringRowExprFieldDef\n */\n \"tidyTableStringRowExpr\"\n ;\n\n\nexport function isTidyTableExpr(type: FormFieldType): type is FormFieldTidyTableExprType {\n return type === \"tidyTableColorRowExpr\"\n || type === \"tidyTableHtmlExpr\"\n || type === \"tidyTableHtmlRowExpr\"\n || type === \"tidyTableNumericExpr\"\n || type === \"tidyTableNumericJSColumnExpr\"\n || type === \"tidyTableNumericRowExpr\"\n || type === \"tidyTableNumericStringColumnExpr\"\n || type === \"tidyTableScaleRowExpr\"\n || type === \"tidyTableTextExpr\"\n || type === \"tidyTableTextRowExpr\"\n || type === \"tidyTableStringRowExpr\"\n ;\n}\n\nexport function isTidyTableExprJS(type: FormFieldType): boolean {\n return type === \"tidyTableColorRowExpr\"\n || type === \"tidyTableStringRowExpr\"\n || type === \"tidyTableScaleRowExpr\"\n || type === \"tidyTableNumericExpr\"\n || type === \"tidyTableNumericStringColumnExpr\"\n || type === \"tidyTableNumericJSColumnExpr\"\n || type === \"tidyTableNumericRowExpr\"\n ;\n}\n\nexport function isTidyTableExprTable(type: FormFieldType) {\n return type === \"tidyTableHtmlExpr\"\n || type === \"tidyTableTextExpr\"\n || type === \"tidyTableNumericExpr\"\n ;\n}\n\nexport function isTidyTableExprColumn(type: FormFieldType): boolean {\n return type === \"tidyTableNumericStringColumnExpr\"\n || type === \"tidyTableNumericJSColumnExpr\"\n ;\n}\n\nexport function isTidyTableExprRow(type: FormFieldType): boolean {\n return type === \"tidyTableHtmlRowExpr\"\n || type === \"tidyTableTextRowExpr\"\n || type === \"tidyTableNumericRowExpr\"\n || type === \"tidyTableStringRowExpr\"\n || type === \"tidyTableColorRowExpr\"\n || type === \"tidyTableScaleRowExpr\"\n ;\n}\n\nexport function isTidyTableExprNumericString(type: FormFieldType): type is \"tidyTableColorRowExpr\" | \"tidyTableStringRowExpr\" | \"tidyTableNumericStringColumnExpr\" {\n return type === \"tidyTableColorRowExpr\" || type === \"tidyTableStringRowExpr\" || type === \"tidyTableNumericStringColumnExpr\"\n}\n\nexport function isTidyTableExprNumericJS(type: FormFieldType): type is \"tidyTableNumericJSColumnExpr\" {\n return type === \"tidyTableNumericJSColumnExpr\"\n}\n\nexport function isTidyTableExprText(type: FormFieldType): type is \"tidyTableTextExpr\" | \"tidyTableTextRowExpr\" {\n return type === \"tidyTableTextExpr\"\n || type === \"tidyTableTextRowExpr\"\n ;\n}\n\nexport function isTidyTableExprTextHtml(type: FormFieldType): type is \"tidyTableHtmlExpr\" | \"tidyTableHtmlRowExpr\" {\n return type === \"tidyTableHtmlExpr\"\n || type === \"tidyTableHtmlRowExpr\"\n ;\n}\n\nexport function isTidyTableExprNumeric(type: FormFieldType): type is \"tidyTableNumericExpr\" | \"tidyTableNumericRowExpr\" {\n return type === \"tidyTableNumericExpr\"\n || type === \"tidyTableNumericRowExpr\"\n ;\n}\n\nexport function isTidyTableExprScale(type: FormFieldType): type is \"tidyTableScaleRowExpr\" {\n return type === \"tidyTableScaleRowExpr\"\n ;\n}\n\n/**\n * Error messages for field suggestions and value candidates.\n * Put translations in ReportLocalization.csv.\n */\nexport enum AutocompleteNoOptionsText {\n NO_OPTIONS = \"NO_OPTIONS\",\n NO_COLUMNS = \"NO_COLUMNS\",\n NO_QUERY_RESULT = \"NO_QUERY_RESULT\",\n QUERY_HAS_ERROR = \"QUERY_HAS_ERROR\",\n TRANSFORMATION_HAS_ERROR = \"TRANSFORMATION_HAS_ERROR\",\n QUERY_OUTDATED = \"QUERY_OUTDATED\",\n}\n\n/**\n * Show an action button below the options\n */\nexport enum AutocompleteActions {\n ADD_COLOR = \"ADD_COLOR\",\n REFRESH_QUERY = \"REFRESH_QUERY\"\n}\n\nexport type CodeMirrorMode =\n \"plain\" |\n \"mdx\" |\n \"sql\" |\n \"js\" |\n \"json\" |\n \"csv\" |\n \"md\" |\n FormFieldTidyTableExprType\n ;\n\nexport type FormFieldDialogEditorModelType =\n \"unknown\" |\n \"markdown\" |\n \"mdxExpression\" |\n FormFieldTidyTableExprType\n ;\n\nexport interface IColorDef {\n\n /**\n * aka. name\n */\n path: string;\n\n}\n\nexport interface IPaletteDef {\n\n /**\n * aka. name\n */\n path: string;\n\n reversed: boolean;\n\n}\n\nexport interface IOption {\n\n id: string;\n caption: string;\n\n}\n\n/**\n * A generic object.\n *\n * Use the editorConf to provide the list of options to choose from and the function that is displaying\n * the label/caption of the options. Check the editorConf for more configuration.\n *\n * This is quite a generic editor that should not be used directly.\n *\n * @see FormFieldDef\n */\nexport interface IFormAutocompleteFieldDef<OPTION> extends IFormFieldDef<OPTION> {\n\n fieldType: \"autocomplete\",\n\n editorConf: {\n\n multiple?: boolean;\n groupBy?: (option: OPTION | undefined) => string;\n getOptionLabel?: (option: OPTION | undefined | null) => string;\n isOptionEqualToValue?: (option: OPTION | undefined | null, value: OPTION | undefined | null) => boolean;\n\n freeSolo?: boolean;\n\n optionValues?: OPTION[] | ((callback: ((suggestions: OPTION[]) => void), dependsOnValue?: any, param?: {\n theme: Theme\n }) => void);\n\n noOptionsText?: AutocompleteNoOptionsText;\n\n /**\n * Show an action button below the options.\n *\n * If the query is outdated or not run yet, it shows a refresh action instead.\n */\n action?: AutocompleteActions;\n\n renderInput?: (params: AutocompleteRenderInputParams) => React.ReactNode;\n\n renderOption?: (\n props: React.HTMLAttributes<HTMLLIElement>,\n option: OPTION,\n state: AutocompleteRenderOptionState,\n onClose: () => void\n ) => React.ReactNode;\n\n disableClearable?: boolean;\n\n renderTags?: AutocompleteProps<OPTION, any, any, any>['renderTags']\n\n }\n}\n\n/**\n * The \"groupBoolean\" allows for using that field as a group header and as a way\n * to enable/disable the options in the group.\n *\n * @see FormFieldDef\n * @see IFormGroupsFieldDef\n */\nexport interface IFormBooleanFieldDef extends IFormFieldDef<boolean> {\n\n fieldType: \"boolean\" | \"fixedBoolean\" | \"groupBoolean\",\n\n}\n\nexport interface IFormLayoutFieldDef extends IFormFieldDef<string> {\n\n fieldType: \"layout\",\n\n}\n\n/**\n * @see FormFieldDef\n */\nexport interface IFormColorEditorFieldDef extends IFormFieldDef<IColorDef> {\n\n fieldType: \"color\",\n\n}\n\n/**\n * @see FormFieldDef\n *\n * Use the fieldPath to access the column directly in the tidy table with table.getColumnByAlias(...).\n * If multiple columns are in this field, it returns the first column.\n *\n * If the columns chooser is mandatory, the widget or transformation returns an error if there is no column either\n * selected by the user or in the fallback.\n *\n */\nexport type IFormColumnChooserFieldDef = IFormColumnChooserSingleFieldDef | IFormColumnChooserMultipleFieldDef;\n\nexport type IFormColumnChooserSingleFieldDef = IFormColumnChooserBaseDef<TidyTableColumnSelector>;\nexport type IFormColumnChooserMultipleFieldDef = IFormColumnChooserBaseDef<TidyTableColumnSelector[]>;\n\ninterface IFormColumnChooserBaseDef<T extends TidyTableColumnSelector | TidyTableColumnSelector[]> extends IFormFieldDef<T> {\n\n fieldType: \"columnsChooser\",\n\n editorConf?: {\n\n /**\n * The user can select multiple columns / selectors\n */\n multiple?: boolean;\n\n /**\n * The user can select the same column more than once\n */\n allowDuplicate?: boolean;\n\n /**\n * Only columns of this/these type(s) are allowed.\n */\n allowedTypes?: TidyColumnsType[];\n\n /**\n * The user can select properties of columns\n */\n includeProperties?: boolean;\n\n /**\n * The user can choose a selector, see TidyTableMappingColumnSelectorOptions\n */\n includeSelectors?: boolean;\n\n /**\n * The user can select columns based on their role\n */\n includeRoles?: boolean;\n\n /**\n * Search the table for a default column.\n *\n * Set to true to use the default fallback logic:\n *\n * Fallback to a column that has a type that is allowed. Note, properties of columns are not considered.\n *\n * It finds the column to fallback on by\n * 1. role equal to fieldPath and type is allowed,\n * 2. role equal to editorConfig.alias and type is allowed,\n * 3. type is allowed.\n *\n * Already mapped columns are skipped.\n *\n * You can also use your own fallback logic. The currentMapping is the object used when building the mapping\n * from the options meta. It contains the mapped options from metas defined before this meta. Note, the order\n * is important here.\n */\n fallback?: boolean | ((table: ITidyTable, currentMapping: ChartTemplateDataMapping) => ITidyColumn[] | undefined);\n\n /**\n * In the expression editor, use the alias to reference the column. Use the alias in table.getColumnByAlias(...).\n */\n alias?: string;\n }\n\n}\n\nexport interface IFormPropertyChooserBaseDef extends IFormFieldDef<string> {\n\n fieldType: \"propertyChooser\",\n\n editorConf?: {\n\n /**\n * Only columns of this/these type(s) are allowed.\n */\n allowedTypes?: TidyColumnsType[];\n\n }\n\n}\n\n\n/**\n * @see FormFieldDef\n */\nexport interface IFormGranularitySelectionFieldDef extends IFormFieldDef<IFormFieldGranularityItem> {\n\n fieldType: \"granularityChooser\",\n\n editorConf: {\n /*\n * User can select from these items.\n */\n options: (table: ITidyTable) => IFormFieldGranularityItem[];\n }\n\n}\n\n/**\n * @see FormFieldDef\n */\nexport interface IFormColumnSelectionFieldDef extends IFormFieldDef<any> {\n\n fieldType: \"columnSelection\",\n\n editorConf: {\n\n multiple?: boolean;\n\n }\n\n}\n\n/**\n * @see FormFieldDef\n */\nexport interface IFormConstantsFieldDef extends IFormFieldDef<any> {\n\n fieldType: \"constants\",\n\n}\n\n/**\n * @see FormFieldDef\n */\n\nexport type IFormEventMappingArrayFieldDefType = { toEvent: string; fromEvent: string }[];\n\nexport interface IFormEventMappingArrayFieldDef extends IFormFieldDef<IFormEventMappingArrayFieldDefType> {\n\n fieldType: \"eventMappingArray\",\n\n}\n\n/**\n * @see FormFieldDef\n */\n\nexport type IFormSearchAndReplaceArrayFieldDefType = { from?: string; to?: string }[];\n\nexport interface IFormSearchAndReplaceArrayFieldDef extends IFormFieldDef<IFormSearchAndReplaceArrayFieldDefType> {\n\n fieldType: \"searchAndReplaceArray\",\n\n}\n\n/**\n * @see FormFieldDef\n */\n\nexport type IFormEventArrayFieldDefType = { event: string }[];\n\nexport interface IFormEventArrayFieldDef extends IFormFieldDef<IFormEventArrayFieldDefType> {\n\n fieldType: \"eventArray\",\n\n arrayField: string;\n}\n\n/**\n * Contains the ordering of the groups.\n *\n * An optional (and invisible) field that is defining how the groups are ordered (does not need to contain all\n * the groups). When none defined, the groups order depends on the field order themselves.\n *\n * @see FormFieldDef\n * @see IFormBooleanFieldDef\n */\nexport interface IFormGroupsFieldDef extends IFormFieldDef<string[]> {\n\n fieldType: \"groups\",\n groups: string[];\n\n}\n\n/**\n * @see FormFieldDef\n */\nexport interface IFormHookFieldDef<T> extends IFormFieldDef<Hook<T, any>> {\n\n fieldType: \"hook\",\n\n}\n\n/**\n * @see FormFieldDef\n */\nexport interface IFormJsFieldDef extends IFormFieldDef<string> {\n\n fieldType: \"js\",\n\n editorConf?: {\n helpMdFile: string;\n doNotCompleteEventNames?: true;\n }\n}\n\n/**\n * @see FormFieldDef\n */\nexport interface IFormJsonFieldDef extends IFormFieldDef<string> {\n\n fieldType: \"json\",\n\n editorConf?: {\n helpMdFile: string;\n }\n\n}\n\n/**\n * @see FormFieldDef\n */\nexport interface IFormFileUploaderFieldDef extends IFormFieldDef<any> {\n\n fieldType: \"fileUploader\",\n\n editorConf: {\n\n acceptedFileExt?: string;\n dropMessage: string;\n\n }\n\n}\n\n/**\n * @see FormFieldDef\n */\nexport interface IFormMarkdownFieldDef extends IFormFieldDef<string> {\n\n fieldType: \"markdown\",\n\n editorConf?: {\n singleLine: false;\n }\n\n}\n\nexport type MdxExpressionType = \"calcMeasure\" | \"drilldown\";\n\n/**\n * @see FormFieldDef\n */\nexport interface IFormMdxFieldDef extends IFormFieldDef<string> {\n\n fieldType: \"mdxExpression\",\n\n editorConf: {\n\n mdxExpressionType: MdxExpressionType;\n\n metaReadOnly?: boolean;\n schemaName?: string;\n cubeName?: string;\n\n }\n}\n\n/**\n * @see FormFieldDef\n */\nexport interface IFormNumberFieldDef extends IFormFieldDef<number> {\n\n fieldType: \"number\",\n\n}\n\n/**\n * @see FormFieldDef\n */\nexport interface IFormMaskFieldDef extends IFormFieldDef<number> {\n\n fieldType: \"mask\",\n\n editorConf: {\n items: [number, string][];\n name: string;\n }\n}\n\n/**\n * A string that is chosen from the list of available values (aka. options).\n *\n * Typically used to edit an \"enum\" where the user can select the value from a list of \"localized\" options.\n * The editorConf is setup as following:\n * <pre>\n * editorConf: {\n * optionValues: Object.values(SortingType),\n * optionName: \"SortingType\" -- localization purpose\n * }\n * </pre>\n *\n * This editor is not limited to enum as the editorConf.optionValues is accepting a function resolving the\n * actual list of options as an array of {id,caption} objects. E.g., editing a locale, theme, etc...\n *\n * Editing a list of strings is supported using the editorConf.multiple flag.\n *\n * @see FormFieldDef\n */\n\nexport type IFormOptionFieldDef = IFormOptionFieldMultipleDef | IFormOptionFieldSingleDef;\n\nexport interface IFormOptionFieldMultipleDef extends IFormFieldDef<string[]> {\n\n fieldType: \"option\",\n\n editorConf: {\n freeSolo?: boolean;\n\n multiple: true;\n allowDuplicate?: boolean;\n\n optionValues?: string[] | IOption[] | ((callback: ((suggestions: string[] | IOption[]) => void), dependsOnValue?: any) => void);\n optionName?: string;\n\n getCaption?: (id: string) => string;\n }\n}\n\n\nexport interface IFormOptionFieldReportPathDef extends IFormFieldDef<string> {\n\n fieldType: \"reportPath\",\n\n}\n\nexport interface IFormOptionFieldSingleDef extends IFormFieldDef<string> {\n\n fieldType: \"option\",\n\n editorConf: {\n\n freeSolo?: boolean;\n\n multiple?: false;\n allowDuplicate?: boolean;\n\n optionValues?: string[] | IOption[] | ((callback: ((suggestions: string[] | IOption[]) => void), dependsOnValue?: any) => void);\n optionName?: string;\n\n getCaption?: (id: string) => string;\n }\n\n}\n\nexport interface IFormIconFieldSingleDef extends IFormFieldDef<string> {\n\n fieldType: \"icon\";\n\n}\n\nexport interface IFormEmbeddedFieldDef<T extends FormFieldObject> extends IFormFieldDef<T> {\n\n fieldType: \"embedded\",\n\n editorConf: {\n\n fieldPathPrefix: string;\n\n meta: FormFields<T>;\n\n }\n\n}\n\n/**\n * @see FormFieldDef\n */\nexport interface IFormPaletteEditorFieldDef extends IFormFieldDef<IPaletteDef> {\n\n fieldType: \"palette\",\n\n editorConfig?: {\n path: string,\n reversed: boolean\n }\n\n}\n\n/**\n * @see FormFieldDef\n */\nexport interface IFormReportPathFieldDef extends IFormFieldDef<string> {\n\n fieldType: \"appPath\" | \"reportFolder\" | \"reportPath\",\n\n}\n\n/**\n * @see FormFieldDef\n */\nexport interface IFormReportPermaLinkFieldDef extends IFormFieldDef<string> {\n\n fieldType: \"reportPermaLink\",\n\n}\n\n/**\n * Use editorConf.suggestions to provide a list of possible values. Then the editor is an autocomplete\n * displaying the suggestions using the freeSolo mode to enter any kind of value.\n *\n * @see FormFieldDef\n */\nexport interface IFormStringFieldDef extends IFormFieldDef<string> {\n\n fieldType: \"string\" | \"url\" | \"text\",\n\n editorConf?: {\n\n /**\n * A list of possible strings...\n */\n suggestions?: string[] | ((callback: ((candidates: string[]) => void), dependsOnValue?: any) => void);\n\n copyToClipboard?: boolean;\n\n /**\n * Show an error if the value is not valid. Return an empty string if the value is valid.\n */\n valueValidator?: (value: any) => string;\n }\n\n}\n\nexport interface IFormTextFieldDef extends IFormFieldDef<string> {\n\n fieldType: \"text\",\n\n}\n\n\n/**\n * A Markdown text expression containing tidy table value accessor (e.g., Donut's center text).\n * The evaluation context is the table.\n *\n * @see FormFieldDef\n */\nexport interface IFormTidyTableHtmlExprFieldDef extends IFormTidyTableExprFieldDef<\"tidyTableHtmlExpr\"> {\n\n}\n\n/**\n * An Markdown text expression containing tidy table value accessor (e.g., chart's tooltip).\n * The evaluation context is a row.\n *\n * @see FormFieldDef\n */\nexport interface IFormTidyTableHtmlRowExprFieldDef extends IFormTidyTableExprFieldDef<\"tidyTableHtmlRowExpr\"> {\n\n}\n\n/**\n * A numeric expression containing tidy table value accessor (e.g., chart's value axis minimum).\n * The evaluation context is the table.\n *\n * @see FormFieldDef\n */\nexport interface IFormTidyTableNumericExprFieldDef extends IFormTidyTableExprFieldDef<\"tidyTableNumericExpr\"> {\n\n}\n\n/**\n * A string expression containing tidy table value accessor (e.g., chart's value axis minimum).\n * The evaluation context is the table.\n *\n * @see FormFieldDef\n */\nexport interface IFormTidyTableStringRowExprFieldDef extends IFormTidyTableExprFieldDef<\"tidyTableStringRowExpr\"> {\n\n}\n\n/**\n * A color (i.e., string) expression containing tidy table value accessor (e.g., chart's value axis minimum).\n * The evaluation context is the table.\n *\n * @see FormFieldDef\n */\nexport interface IFormTidyTableColorRowExprFieldDef extends IFormTidyTableExprFieldDef<\"tidyTableColorRowExpr\"> {\n\n}\n\n/**\n * A numeric expression containing tidy table value accessor (e.g., chart's value axis minimum).\n * The evaluation context is a row.\n *\n * @see FormFieldDef\n */\nexport interface IFormTidyTableNumericRowExprFieldDef extends IFormTidyTableExprFieldDef<\"tidyTableNumericRowExpr\"> {\n\n}\n\n/**\n * A numeric expression containing tidy table value accessor (e.g., chart's value axis minimum).\n * The evaluation context is a column.\n *\n * @see FormFieldDef\n */\nexport interface IFormTidyTableNumericJSColumnExprFieldDef extends IFormTidyTableExprFieldDef<\"tidyTableNumericJSColumnExpr\"> {\n\n}\n\n/**\n * A numeric expression containing tidy table value accessor (e.g., chart's value axis minimum).\n * The evaluation context is a row.\n *\n * @see FormFieldDef\n */\nexport interface IFormTidyTableScaleRowExprFieldDef extends IFormTidyTableExprFieldDef<\"tidyTableScaleRowExpr\"> {\n\n}\n\n/**\n * A text expression containing tidy table value accessor (e.g., Donut's center text).\n * The evaluation context is the table.\n *\n * @see FormFieldDef\n */\nexport interface IFormTidyTableTextExprFieldDef extends IFormTidyTableExprFieldDef<\"tidyTableTextExpr\"> {\n\n}\n\n/**\n * A text expression containing tidy table value accessor (e.g., cell renderer link).\n * The evaluation context is a row.\n *\n * @see FormFieldDef\n */\nexport interface IFormTidyTableTextRowExprFieldDef extends IFormTidyTableExprFieldDef<\"tidyTableTextRowExpr\"> {\n\n}\n\n/**\n * A text expression containing tidy table value accessor (e.g., cell renderer link).\n * The evaluation context is a column.\n *\n * @see FormFieldDef\n */\nexport interface IFormTidyTableNumericStringColumnExprFieldDef extends IFormTidyTableExprFieldDef<\"tidyTableNumericStringColumnExpr\"> {\n\n}\n\n/**\n * icCube variants (defined in the theme's ic3.widgetVariants).\n *\n * @see FormFieldDef\n */\nexport interface IFormWidgetVariantFieldDef extends IFormFieldDef<string> {\n\n fieldType: \"widgetVariant\",\n\n editorConf?: {\n componentName: string,\n predefinedVariants?: string[];\n }\n}\n\nexport interface IFormFormatterPickerFieldDef extends IFormFieldDef<string> {\n fieldType: \"formatterPicker\"\n}\n\n/**\n * @see FormFieldDef\n */\n\nexport enum ConditionalRuleOperators {\n EQUALS = \"EQUALS\",\n NOT_EQUALS = \"NOT_EQUALS\",\n GREATER_THAN = \"GREATER_THAN\",\n GREATER_EQUAL_THAN = \"GREATER_EQUAL_THAN\",\n SMALLER_THAN = \"SMALLER_THAN\",\n SMALLER_EQUAL_THAN = \"SMALLER_EQUAL_THAN\",\n CONTAINS = \"CONTAINS\",\n NOT_CONTAINS = \"NOT_CONTAINS\",\n STARTS_WITH = \"STARTS_WITH\",\n ENDS_WITH = \"ENDS_WITH\"\n}\n\nexport interface IFormConditionalColorRule {\n operator: ConditionalRuleOperators;\n value?: string;\n color?: IColorDef;\n}\n\nexport interface IFormConditionalColorRulesFieldDef extends IFormFieldDef<IFormConditionalColorRule[]> {\n fieldType: \"conditionalColorRules\"\n}\n\n\n/**\n * @see FormFieldDef\n */\nexport interface IFormFilterPanelModelSelectorFieldDef extends IFormFieldDef<string> {\n fieldType: \"filterPanelModelSelector\"\n}\n\n\nexport type LocalizeContext = Pick<IPublicContext, 'localize'>;\n\nexport interface IFormShortcutChooserDef<T extends string | string[]> extends IFormFieldDef<T> {\n fieldType: \"shortcutChooser\",\n editorConf?: {\n\n getOptions: (deps: any, theme: Theme, context: LocalizeContext) => IOption[];\n\n }\n}\n\n\n// ---------------------------------------------------------------------------------------------------------------------\n// Allows for typing the field meta definitions.\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport type FormFieldDef =\n IFormAutocompleteFieldDef<any> |\n IFormBooleanFieldDef |\n IFormColorEditorFieldDef |\n IFormColumnChooserFieldDef |\n IFormColumnSelectionFieldDef |\n IFormConstantsFieldDef |\n IFormEventArrayFieldDef |\n IFormEventMappingArrayFieldDef |\n IFormFileUploaderFieldDef |\n IFormGroupsFieldDef |\n IFormJsFieldDef |\n IFormMarkdownFieldDef |\n IFormMaskFieldDef |\n IFormMdxFieldDef |\n IFormNumberFieldDef |\n IFormOptionFieldDef |\n IFormOptionFieldSingleDef |\n IFormOptionFieldMultipleDef |\n IFormPaletteEditorFieldDef |\n IFormReportPathFieldDef |\n IFormReportPermaLinkFieldDef |\n IFormStringFieldDef |\n IFormTidyTableHtmlExprFieldDef |\n IFormTidyTableHtmlRowExprFieldDef |\n IFormTidyTableNumericExprFieldDef |\n IFormTidyTableNumericRowExprFieldDef |\n IFormTidyTableStringRowExprFieldDef |\n IFormTidyTableColorRowExprFieldDef |\n IFormTidyTableScaleRowExprFieldDef |\n IFormTidyTableTextExprFieldDef |\n IFormTidyTableTextRowExprFieldDef |\n IFormWidgetVariantFieldDef |\n IFormFormatterPickerFieldDef |\n IFormGranularitySelectionFieldDef |\n IFormSearchAndReplaceArrayFieldDef |\n IFormPropertyChooserBaseDef |\n IFormLayoutFieldDef |\n IFormConditionalColorRulesFieldDef |\n IFormFilterPanelModelSelectorFieldDef |\n IFormShortcutChooserDef<any> |\n IFormIconFieldSingleDef\n ;\n","import {ComponentsOverrides, ComponentsVariants, Interpolation, Theme, TypographyStyle} from \"@mui/material/styles\";\nimport {SvgIcon} from \"@mui/material\";\nimport {IPublicWidgetTemplateDefinition} from \"./PublicTemplate\";\nimport {IWidgetLayoutDefinition} from \"./PublicLayout\";\nimport {IThemeWidgetDefaults} from \"./IThemeManager\";\nimport * as React from \"react\";\nimport {ReactElement} from \"react\";\nimport {Property} from \"csstype\";\nimport {IPublicContext} from \"./PublicContext\";\nimport {\n DatePickerClassKey,\n DatePickerShortcut,\n DateRangePickerShortcut,\n FilterDatePickerProps\n} from \"./theme/ThemeDatePicker\";\nimport {WidgetTemplateChartOptions} from \"./PublicTemplates\";\nimport {IUserMenuOptions, IWidgetBoxIconsDefinition} from \"./ITypes\";\nimport {AIWidgetChatBotClassKey, AIWidgetChatBotStyleProps} from \"./theme/ThemeAIWidgetChatBot\";\nimport {AlertDialogClassKey} from \"./theme/ThemeAlertDialog\";\nimport {AppClassKey, AppDivProps} from \"./theme/ThemeApp\";\nimport {ErrorRendererClassKey} from \"./theme/ThemeErrorRenderer\";\nimport {FilterCheckboxProps, FilterCheckboxRadioClassKey} from \"./theme/ThemeFilterCheckboxRadio\";\nimport {FilterButtonsClassKey, FilterButtonsProps} from \"./theme/ThemeFilterButtons\";\nimport {LazyTreeClassesClassKey, LazyTreeProps} from \"./theme/ThemeLazyTreeClasses\";\nimport {FilterPanelClassesKey, FilterPanelProps} from \"./theme/ThemeFilterPanel\";\nimport {FilterPanelViewsMenuClassesKey} from \"./theme/ThemeFilterPanelViewsMenu\";\nimport {RegexFilterClassesKey, RegexFilterProps} from \"./theme/ThemeRegexFilter\";\nimport {FilterSliderClassKey, FilterSliderProps} from \"./theme/ThemeFilterSlider\";\nimport {ListCounterClassKey, ListCounterProps} from \"./theme/ThemeListCounter\";\nimport {\n FilterTreeClassKey,\n FilterTreePopOverClassKey,\n FilterTreePopOverProps,\n FilterTreeProps\n} from \"./theme/ThemeFilterTree\";\nimport {FilterSwitchClassKey, FilterSwitchProps} from \"./theme/ThemeFilterSwitch\";\nimport {FilterAutocompleteClassesKey, FilterAutocompleteProps} from \"./theme/ThemeFilterAutocomplete\";\nimport {HtmlBoxClassKey, StyledHtmlBoxProps} from \"./theme/ThemeHtmlBox\";\nimport {KpiCardClassKey, KpiCardProps} from \"./theme/ThemeKpiCard\";\nimport {LayoutClassKey} from \"./theme/ThemeLayout\";\nimport {LayoutPageClassKey} from \"./theme/ThemeLayoutPage\";\nimport {PivotTableClassKey, PivotTableProps} from \"./theme/ThemePivotTable\";\nimport {TableClassKey, TableProps} from \"./theme/ThemeTable\";\nimport {ReportAppBarClassKey} from \"./theme/ThemeReportAppBar\";\nimport {WidgetBoxClassKey, WidgetBoxDivProps} from \"./theme/ThemeWidgetBox\";\nimport {WidgetBoxContentMessageClassKey} from \"./theme/ThemeWidgetBoxContentMessage\";\nimport {ReportAppLeftPanelClassKey} from \"./theme/ThemeReportAppLeftPanel\";\nimport {ic3AppMenuIconClassKey, ic3AppMenuItemClassKey, ic3AppMenuItemHeaderClassKey} from \"./theme/ThemeAppMenuIcon\";\nimport {QueryBuilderNodeClassKey, QueryBuilderNodeProps} from \"./theme/ThemeQueryBuilderNode\";\nimport {PrintButtonClassKey, StyledPrintButtonDivProps} from \"./theme/ThemePrintButton\";\nimport {CodeMirrorClassesKey} from \"./theme/ThemeCodeMirror\";\nimport {WidgetFilteredByClassesKey} from \"./theme/ThemeWidgetFilteredBy\";\nimport {Ic3TableCellProps, ThemeIc3TableCellClassesKey} from \"./theme/ThemeIc3TableCell\";\nimport {Ic3TableCellDrilldownProps, ThemeIc3TableCellDrilldownClassesKey} from \"./theme/ThemeIc3TableCellDrilldown\";\nimport {HomeCardClassKey} from \"./theme/ThemeHomeCard\";\nimport {HomeConsoleClassKey} from \"./theme/ThemeHomeConsole\";\nimport {GoogleMarkerVariantChartOptions} from \"./theme/ThemeGoogleMarker\";\nimport {Ic3CustomDrilldownMenuClassesKey} from \"./theme/ThemeIc3CustomDrilldownMenu\";\nimport {Ic3WidgetBoxSpinnerProps, ThemeIc3WidgetBoxSpinnerClassesKey} from \"./theme/ThemeIc3WidgetBoxSpinner\";\nimport {ic3CorePalette, ic3CorePaletteOptions, ic3CoreTheme} from \"@ic3/common-api\";\n\nexport type Ic3ChartVariants = {\n [Name in keyof WidgetTemplateChartOptions]?: Array<{\n props: { variant: string };\n /**\n * Default props define the default options for the widget.\n */\n defaultProps: Partial<WidgetTemplateChartOptions[Name]>;\n }>;\n};\n\nexport type Ic3WidgetComponentVariants = Array<{\n props: { variant: string };\n style: Interpolation<{ theme: Theme }>;\n}>;\n\nexport interface INoSchemaRendererOptions {\n\n missingSchema: string;\n\n}\n\nexport type ThemeTextFormatter = {\n /**\n * Format used in the reporting application.\n */\n formatReport: ((value: any, locale: string) => string) | string;\n\n /**\n * Format used when exporting to Excel.\n */\n formatExcel?: string;\n};\n\nexport type ThemeTextFormatters = Record<string, ThemeTextFormatter> & {\n\n /**\n * The default formatter for displaying date values.\n * Also used in the expressions when using $value.formatDate()$.\n *\n * Default: {\n * formatReport: \"yyyy-MM-dd\"\n * }\n */\n defaultDate: ThemeTextFormatter;\n\n /**\n * The default formatter for displaying datetime values.\n * Also used in the expressions when using $value.formatDate()$.\n *\n * Default: {\n * formatReport: \"yyyy-MM-dd HH:mm:ss\"\n * }\n */\n defaultDatetime: ThemeTextFormatter;\n\n /**\n * The default way to format any number that has no format defined.\n * Used in the expressions when using $value.formatNumber()$.\n *\n * Default: {\n * formatReport: \"#,###.####\"\n * }\n */\n defaultNumber: ThemeTextFormatter;\n\n /**\n * Used in the expressions when using $value.formatAmount()$.\n *\n * Default: {\n * formatReport: \"#,###\"\n * }\n */\n defaultAmount: ThemeTextFormatter;\n\n /**\n * Default formatter for percentage values.\n * Used in the expressions when using $value.formatPercentage()$.\n *\n * Default: {\n * formatReport: \"##.0%\"\n * }\n */\n defaultPercentage: ThemeTextFormatter;\n\n};\n\nexport interface ThemeFormatterPerLocale {\n /**\n * Fallback formatter for when no language is specified or a language is specified that is not defined in this\n * model.\n */\n default: ThemeFormatters;\n\n /**\n * A formatter per locale. Use JAVA locale tags for defining a formatter for that locale, e.g., en, en_US, nl, nl_NL, etc..\n * Longer tags have prio over shorter tags. For example, if the user has locale en_US, the dashboards first use\n * the en_US tag. If it isn't found, it will use the en tag. If that also isn't found, it will use the default.\n */\n [k: string]: ThemeFormatters;\n}\n\nexport function isThemeFormatterPerLocale(x: DeepPartial<ThemeFormatterPerLocale | ThemeFormatters> | undefined): x is ThemeFormatterPerLocale {\n return (x as ThemeFormatterPerLocale)?.['default'] != null;\n}\n\n\nexport type ThemeFormatters = {\n\n text: ThemeTextFormatters,\n\n amCharts4: Amcharts4ThemeDateFormatter;\n\n /**\n * When using #a in a formatter, large values get divided and a letter gets added. Here, you can specify the number\n * to divide by and which letter to add. E.g., 1.000 and 'k' divides numbers between 1.000 and 1.000.000 by a\n * thousand and adds an 'k'.\n */\n bigNumberPrefixes?: {\n number: number;\n suffix: string;\n }[];\n\n /**\n * When using #a in a formatter, small values get multiplied and a letter gets added. Here, you can specify the\n * multiplier and the letter. For example, { \"number\": 1e-6, \"suffix\": \"μ\" }, multiplies numbers between 1e-6 and\n * 1e-9 by 1e6 and adds the letter μ.\n */\n smallNumberPrefixes?: {\n number: number;\n suffix: string;\n }[];\n\n}\n\nexport type ThemeTextFormattersOptions = Record<string, ThemeTextFormatter> & {\n\n defaultDate?: ThemeTextFormatter;\n defaultNumber?: ThemeTextFormatter;\n defaultAmount?: ThemeTextFormatter;\n defaultPercentage?: ThemeTextFormatter;\n\n};\n\ntype Amcharts4ThemeDateFormatter = {\n /**\n * Amcharts date formatter.\n * Read more about the format codes here: https://www.amcharts.com/docs/v4/concepts/formatters/formatting-date-time/#Format_codes\n * Read more about how these settings are used here: https://www.amcharts.com/docs/v4/concepts/axes/date-axis/#Setting_date_formats\n */\n dateFormatter: {\n millisecond: {\n dateFormat: string;\n periodChangeFormat: string;\n },\n second: {\n dateFormat: string;\n periodChangeFormat: string;\n },\n minute: {\n dateFormat: string;\n periodChangeFormat: string;\n },\n hour: {\n dateFormat: string;\n periodChangeFormat: string;\n },\n day: {\n dateFormat: string;\n periodChangeFormat: string;\n },\n week: {\n dateFormat: string;\n periodChangeFormat: string;\n },\n month: {\n dateFormat: string;\n periodChangeFormat: string;\n },\n year: {\n dateFormat: string;\n periodChangeFormat: string;\n },\n }\n}\n\ntype DeepPartial<T> = {\n [P in keyof T]?: T[P] extends Record<string, unknown> ? DeepPartial<T[P]> : T[P];\n}\n\n\nexport interface ic3Palette extends ic3CorePalette {\n\n /**\n * The color for the page background (can be overridden at layout level).\n */\n pageBackgroundColor: Property.Color;\n\n /**\n * The color for a selected item\n */\n selected: Property.Color;\n\n /**\n * For charts, you can define a function that derives the selected color from the color of the clicked item without\n * selection. For example, you can use darken(color) from Mui-Material to get a darker color.\n * @param color the color of the item without selection.\n * @Return the color for the item in the selected state.\n */\n selectedChart?: (color: Property.Color | undefined | null) => Property.Color;\n\n /**\n * The text color for a selected item\n */\n selectedText: Property.Color;\n /**\n * The text background color for a selected item\n */\n selectedBackground: Property.Color;\n\n selectedOpacity: number;\n\n unSelectedOpacity: number;\n\n hoverBackground: Property.Color;\n\n /**\n * List of named color palettes available on chart options\n */\n chartPalettes: { 'default': Property.Color[] } & Record<string, Property.Color[]>;\n\n /**\n * List of named single colors available on chart options\n */\n chartSingleColors: MandatorySingleColors & Record<string, Property.Color>;\n\n /**\n * Report Application Menu\n */\n reportAppMenu: string;\n\n}\n\ninterface MandatorySingleColors {\n\n /**\n * if not defined, primary color of MUI theme\n */\n default: Property.Color;\n /**\n * if not defined, secondary color of MUI theme\n */\n secondary: Property.Color;\n /**\n * if not defined, selection color of ic3.palette theme\n */\n selected: Property.Color;\n /**\n * if not defined, text.disabled MUI theme\n */\n disabled: Property.Color;\n /**\n * if not defined, success MUI theme\n */\n success: Property.Color;\n /**\n * if not defined, error MUI theme\n */\n error: Property.Color;\n /**\n * if not defined, warning MUI theme\n */\n warning: Property.Color;\n /**\n * if not defined, text.primary MUI theme\n */\n text: Property.Color;\n /**\n * if not defined, grey100 MUI theme\n */\n white: Property.Color;\n /**\n * if not defined, grey100 MUI theme\n */\n grey100: Property.Color;\n /**\n * if not defined, grey200 MUI theme\n */\n grey200: Property.Color;\n /**\n * if not defined, grey400 MUI theme\n */\n grey400: Property.Color;\n /**\n * if not defined, grey700 MUI theme\n */\n grey700: Property.Color;\n /**\n * if not defined, grey900 MUI theme (kind of a less agressive black)\n */\n grey900: Property.Color;\n\n}\n\nexport interface ic3PaletteOptions extends ic3CorePaletteOptions {\n\n selected?: Property.Color;\n selectedText?: Property.Color;\n selectedBackground?: Property.Color;\n selectedOpacity?: number;\n\n /**\n * For charts, you can define a function that derives the selected color from the color of the clicked item without\n * selection. For example, you can use darken(color) from Mui-Material to get a darker color.\n * @param color the color of the item without selection.\n * @Return the color for the item in the selected state.\n */\n selectedChart?: (color: Property.Color | undefined | null) => Property.Color;\n\n unSelectedOpacity?: number;\n\n hoverBackground?: Property.Color;\n\n chartPalettes?: { 'default': Property.Color[] } & Record<string, Property.Color[]>;\n chartSingleColors?: Partial<MandatorySingleColors> & Record<string, Property.Color>;\n\n reportAppMenu?: Property.Color;\n}\n\n\nexport interface ic3Typography {\n\n amCharts4: TypographyStyle;\n\n}\n\nexport interface ic3TypographyOptions {\n\n /**\n * Typography for the amCharts plugin.\n */\n amCharts4?: TypographyStyle;\n\n}\n\nexport enum TableRowHeightOptions {\n standard = \"standard\",\n compact = \"compact\",\n small = \"small\"\n}\n\nexport interface ic3Theme extends ic3CoreTheme {\n\n cssClass: string;\n\n waitForFonts?: () => Promise<any>;\n\n formatter: ThemeFormatterPerLocale\n /* for backwards compatibility */\n | ThemeFormatters;\n\n /**\n * For the App Viewer the height of the Application header (css style)\n */\n appViewer?: {\n appTopPanelHeight?: string;\n appTopPanelWithFilterHeight?: string;\n appLeftPanelWidth?: string;\n appLeftPanelCollapsedWidth?: string;\n\n appMenuInnerPercentage?: string; // the size of the button with the icon (css)\n appMenuOuterPercentage?: string; // the inner icons size (css)\n }\n\n /**\n * Icons used in tables and trees\n */\n icons: {\n none: (className: string) => ReactElement | string;\n\n // MDX tree icons\n expanded: (className: string) => ReactElement | string;\n collapse: (className: string) => ReactElement | string;\n loading: (className: string) => ReactElement | string;\n\n // sorting icons\n sort: (className: string) => ReactElement | string;\n sortAsc: (className: string) => ReactElement | string;\n sortDesc: (className: string) => ReactElement | string;\n\n // Datepicker calender icons\n datePickerIcon?: React.ElementType;\n\n // Widget header icons\n menuIcon: JSX.Element;\n statusWaiting: JSX.Element;\n statusWaitingResult: JSX.Element;\n statusRendering: JSX.Element;\n statusDone: JSX.Element;\n queryError: JSX.Element;\n queryWarning: JSX.Element;\n helpIcon: JSX.Element;\n helpIconOutlined: JSX.Element;\n closeQueryIcon: JSX.Element; // Icon for user to close the query (if it's running long)\n interactionModeSelection: JSX.Element;\n interactionModeDrilldown: JSX.Element;\n widgetFilterActive: React.ReactNode | undefined; // Shown in widget header when the widget is filtered.\n\n // Autocomplete / dropdown filter\n autocompleteClearIcon: JSX.Element | undefined;\n autocompletePopupIcon: JSX.Element | undefined;\n\n // Tree\n nodeOpened: JSX.Element;\n nodeClosed: JSX.Element;\n\n // Radio / check boxes\n checkBoxUnselected: React.ReactNode | undefined;\n checkBoxSelected: React.ReactNode | undefined;\n checkIndeterminate: React.ReactNode | undefined;\n radioUnselected: React.ReactNode | undefined;\n radioSelected: React.ReactNode | undefined;\n hasDescendantsIndicatorIcon: React.ReactNode | undefined;\n\n // Filter panel views\n getViewsMenuCustomButtonIcon: (name: string | undefined) => React.ReactNode | undefined;\n\n };\n\n /**\n * Additional icons in the icon cell renderer.\n */\n iconsCellRenderer?: Record<string, typeof SvgIcon>;\n\n palette: {\n darken: (color: string, factor: number) => string;\n lighten: (color: string, factor: number) => string;\n }\n\n table: Record<TableRowHeightOptions, { rowHeight: number; headerRowHeight: number }>;\n\n treeFilter: {\n itemHeight: number;\n }\n\n googleMap: {\n options?: google.maps.MapOptions;\n markerClustererOptions?: MarkerClustererOptions;\n }\n\n drilldown?: {\n /* disables drilldown path in the header and hides the option (if true, like older versions)*/\n disableDrilldownInTitle?: boolean;\n },\n\n userMenu: {\n disableUserMenuEdition: boolean;\n userMenuFilter?: (options: IUserMenuOptions[], templateDef?: IPublicWidgetTemplateDefinition<any>) => IUserMenuOptions[];\n }\n\n widgetIcons?: IWidgetIcons;\n\n widgetBox: {\n\n extraHeight?: number;\n\n contentOffset: {\n top: number;\n left: number;\n };\n };\n\n amCharts4: {\n icons: {\n zoomOutButton?: {\n /**\n * The radius of the corners\n * tl – Top-left corner\n * tr – Top-right corner\n * bl – Bottom-left corner\n * br – Bottom-right corner\n */\n cornerRadius: [number, number, number, number];\n fill: string; // Color of the icon\n stroke: string; // Color of the stroke of the icon\n strokeWidth: number; // Width of the stroke\n hoverColor: string; // Color when hovering\n downColor: string; // Color when mouse down on the button\n }\n },\n },\n\n /**\n * A zoom applied to the widget content when rendered for printing.\n * Defaulted to 0.64.\n */\n widgetContentPrintScale?: number;\n\n /**\n * The first defined layout is used as the default one.\n */\n layouts: IWidgetLayoutDefinition[];\n\n /**\n * Default values (e.g., box options, chart options, etc...).\n */\n widgetDefaults?: IThemeWidgetDefaults;\n\n /**\n * Styling for the sparklines in the sparkline transformation and the KPI card.\n */\n sparklineSettings: {\n\n /**\n * Line sparkline settings.\n */\n line: {\n /**\n * The width of the line in the sparkline\n */\n lineWidth: number;\n\n /**\n * The cursor when the user hovers over the sparkline\n */\n cursor: {\n color: Property.Color;\n\n /**\n * the width of the cursor dot when hovering.\n */\n spotRadius: number;\n\n /**\n * The width of the stroke when hovering\n */\n width: number;\n }\n },\n\n /**\n * Column sparkline settings.\n */\n column: {\n\n /**\n * Radius of the columns rounded corners.\n */\n cornerRadius: number;\n\n /**\n * Space between columns.\n */\n columnSpacing: number;\n\n }\n }\n\n noSchemaRenderer?: (context: IPublicContext, options: INoSchemaRendererOptions) => ReactElement;\n\n /**\n * Options for date/range pickers. Filter panel / date picker filter.\n */\n datePicker: {\n shortcuts: Record<'default', {\n datePickerShortcuts: DatePickerShortcut[],\n rangePickerShortcuts: DateRangePickerShortcut[]\n }> & Record<string, {\n datePickerShortcuts: DatePickerShortcut[],\n rangePickerShortcuts: DateRangePickerShortcut[]\n }>\n }\n\n /**\n * Options for saving the state of all dashboard filters into local storage.\n */\n filterState?: {\n\n /**\n * Set to true to disable auto save for all dashboards/apps and make the option inactive.\n */\n disableFilterStateOption?: boolean;\n\n /**\n * The default value for auto-saving filter setting in the dashboards.\n */\n autosaveFilterStateToSessionStorage?: boolean;\n\n /**\n * The default value for auto-saving filter setting in the application filter panel.\n */\n autosaveReportAppFilterStateToSessionStorage?: boolean;\n\n }\n}\n\nexport interface ic3ThemeOptions {\n\n /**\n * For editor theme, the id to use in your app-local/ic3report-config.js:\n *\n * <pre>\n * options.defaultEditorThemeId = ...\n * </pre>\n */\n id: string;\n\n caption: string;\n\n cssClass?: string;\n\n /**\n * For the App Viewer the height of the Application header (css style)\n */\n appViewer?: {\n appTopPanelHeight?: string;\n appTopPanelWithFilterHeight?: string;\n appLeftPanelWidth?: string;\n appLeftPanelCollapsedWidth?: string;\n }\n\n /**\n * The recommended setup is to use document.fonts.ready here and put document.fonts.load(...) for all your added\n * fonts in the theme definition .ts file.\n */\n waitForFonts?: () => Promise<any>;\n\n formatter?: DeepPartial<ThemeFormatterPerLocale | ThemeFormatters>;\n\n icons?: Partial<ic3Theme['icons']>;\n\n /**\n * Additional icons in the icon cell renderer.\n */\n iconsCellRenderer?: Record<string, typeof SvgIcon>;\n\n table?: Record<TableRowHeightOptions, Partial<{\n rowHeight: number;\n headerRowHeight: number,\n }>>;\n\n treeFilter?: {\n /**\n * Define the height for an item in the tree. This cannot be done using css, because the tree is virtualized and\n * requires a fixed height setting.\n */\n itemHeight?: number;\n }\n\n googleMap?: {\n options?: google.maps.MapOptions;\n }\n\n drilldown?: {\n /* disables drilldown path in the header and hides the option (if true, like older versions)*/\n disableDrilldownInTitle?: boolean;\n },\n\n /**\n * Change the settings for the user menu for some or all widgets.\n */\n userMenu?: {\n /**\n * Set to true to make the user menu option readonly (non-editable) for all widgets.\n */\n disableUserMenuEdition?: boolean;\n /**\n * Filter the items in the user menu. Return an empty array to disable and not show the user menu.\n */\n userMenuFilter?: (options: IUserMenuOptions[], templateDef?: IPublicWidgetTemplateDefinition<any>) => IUserMenuOptions[];\n }\n\n /**\n * Controls the icons to show for all widgets. To hide icons for a single widget, see `widgetDefaults`.\n * @see {ic3ThemeOptions.widgetDefaults}.\n */\n widgetIcons?: IWidgetIcons;\n\n widgetBox?: {\n\n /**\n * Used when computing the height of the widget when (vertical) auto-expand is being applied.\n * E.g., margins, paddings, ...\n */\n extraHeight?: number;\n\n contentOffset: {\n /**\n * Corresponds to the actual height as defined for WidgetBoxClasses.header.\n */\n top: number;\n left: number;\n };\n };\n\n /**\n * Default values (e.g., box options, chart options, etc...).\n */\n widgetDefaults?: IThemeWidgetDefaults;\n\n /**\n * Settings for the filter state.\n */\n filterState?: Partial<ic3Theme['filterState']>;\n\n /**\n * A scale applied to the widget content when rendered for printing.\n * Defaulted to 0.64.\n */\n widgetContentPrintScale?: number;\n\n /**\n * The first defined layout is used as the default one.\n */\n layouts?: IWidgetLayoutDefinition[];\n\n /**\n * Styling for the sparklines in the sparkline transformation and the KPI card\n */\n sparklineSettings?: {\n /**\n * The width of the line in the sparkline\n */\n lineWidth: number;\n\n /**\n * The cursor when the user hovers over the sparkline\n */\n cursor: {\n color: Property.Color;\n\n /**\n * The radius of the dot when hovering\n */\n radius: number;\n\n /**\n * The width of the stroke when hovering\n */\n width: number;\n };\n }\n\n noSchemaRenderer?: (context: IPublicContext, options: INoSchemaRendererOptions) => ReactElement;\n\n /**\n * Theme settings for the editor (application & report).\n */\n editor?: {\n /**\n * Editor logo.\n *\n * Default: icCube logo.\n */\n logo?: string;\n\n /**\n * Alt text for the logo image.\n *\n * Default: \"icCube\".\n */\n logoAlt?: string;\n\n /**\n * Top offset of the edited dashboard page in the editor.\n *\n * Default: 25.\n */\n viewPortOffsetTop?: number;\n\n /**\n * Left offset of the edited dashboard page in the editor.\n *\n * Default: 25.\n */\n viewPortOffsetLeft?: number;\n },\n\n amCharts4?: {\n icons?: {\n zoomOutButton?: {\n /**\n * The radius of the corners\n * tl – Top-left corner\n * tr – Top-right corner\n * bl – Bottom-left corner\n * br – Bottom-right corner\n */\n cornerRadius: [number, number, number, number];\n fill: string; // Color of the icon\n stroke: string; // Color of the stroke of the icon\n strokeWidth: number; // Width of the stroke\n hoverColor: string; // Color when hovering\n downColor: string; // Color when mouse down on the button\n }\n },\n },\n\n datePicker?: DeepPartial<ic3Theme['datePicker']>;\n\n}\n\ninterface IWidgetIcons extends IWidgetBoxIconsDefinition, Record<string, any> {\n /**\n * Set to true to make the widget icon options readonly (non-editable) for all widgets. Also, this enforces to\n * always use the default values set in the theme.\n * @see {ic3ThemeOptions.widgetIcons}\n * @see {ic3ThemeOptions.widgetDefaults}\n */\n disableWidgetIconsEdition?: boolean;\n}\n\nexport interface ic3ComponentNameToClassKey {\n AIWidgetChatBot: AIWidgetChatBotClassKey;\n\n AlertDialog: AlertDialogClassKey;\n App: AppClassKey;\n\n ErrorRenderer: ErrorRendererClassKey;\n\n FilterCheckbox: FilterCheckboxRadioClassKey;\n FilterButtons: FilterButtonsClassKey;\n LazyTreeViewStyled: LazyTreeClassesClassKey;\n FilterPanel: FilterPanelClassesKey;\n FilterPanelViewsMenu: FilterPanelViewsMenuClassesKey;\n Ic3CustomDrilldownMenu: Ic3CustomDrilldownMenuClassesKey;\n RegexFilter: RegexFilterClassesKey;\n FilterSlider: FilterSliderClassKey;\n ListCounter: ListCounterClassKey;\n FilterTree: FilterTreeClassKey;\n Ic3FilterSwitch: FilterSwitchClassKey;\n FilterTreePopOver: FilterTreePopOverClassKey;\n FilterDatePicker: DatePickerClassKey;\n FilterAutocomplete: FilterAutocompleteClassesKey;\n\n HtmlBox: HtmlBoxClassKey;\n KpiCard: KpiCardClassKey;\n Layout: LayoutClassKey;\n\n LayoutPage: LayoutPageClassKey;\n\n PivotTable: PivotTableClassKey;\n Table: TableClassKey;\n\n ReportAppBar: ReportAppBarClassKey;\n\n WidgetBox: WidgetBoxClassKey;\n WidgetBoxContentMessage: WidgetBoxContentMessageClassKey;\n\n ReportAppLeftPanel: ReportAppLeftPanelClassKey;\n\n ic3AppMenuIcon: ic3AppMenuIconClassKey;\n Ic3AppMenuItemHeader: ic3AppMenuItemHeaderClassKey;\n ic3AppMenuItem: ic3AppMenuItemClassKey;\n\n QueryBuilderNode: QueryBuilderNodeClassKey;\n\n PrintButton: PrintButtonClassKey;\n\n CodeMirror: CodeMirrorClassesKey;\n\n WidgetBoxFilteredByTooltip: WidgetFilteredByClassesKey;\n Ic3TableCell: ThemeIc3TableCellClassesKey;\n Ic3TableCellDrilldown: ThemeIc3TableCellDrilldownClassesKey;\n Ic3TableCellError: ThemeIc3TableCellClassesKey;\n\n Ic3WidgetBoxSpinner: ThemeIc3WidgetBoxSpinnerClassesKey;\n\n HomeCard: HomeCardClassKey;\n HomeConsole: HomeConsoleClassKey;\n}\n\nexport interface ic3ComponentsPropsList {\n\n AIWidgetChatBot: AIWidgetChatBotStyleProps;\n\n FilterCheckbox: FilterCheckboxProps;\n FilterButtons: FilterButtonsProps;\n LazyTreeViewStyled: LazyTreeProps;\n FilterPanel: FilterPanelProps;\n RegexFilter: RegexFilterProps;\n FilterSlider: FilterSliderProps;\n ListCounter: ListCounterProps;\n FilterTree: FilterTreeProps;\n Ic3FilterSwitch: FilterSwitchProps;\n FilterTreePopOver: FilterTreePopOverProps;\n FilterDatePicker: FilterDatePickerProps;\n FilterAutocomplete: FilterAutocompleteProps;\n\n HtmlBox: StyledHtmlBoxProps;\n KpiCard: KpiCardProps;\n\n PivotTable: PivotTableProps;\n Table: TableProps;\n\n WidgetBox: WidgetBoxDivProps;\n\n GoogleMarker: GoogleMarkerVariantChartOptions;\n\n App: AppDivProps;\n\n QueryBuilderNode: QueryBuilderNodeProps;\n\n PrintButton: StyledPrintButtonDivProps;\n Ic3TableCell: Ic3TableCellProps;\n Ic3TableCellDrilldown: Ic3TableCellDrilldownProps;\n Ic3TableCellError: Ic3TableCellProps;\n\n Ic3WidgetBoxSpinner: Ic3WidgetBoxSpinnerProps;\n}\n\nexport interface ic3BaseComponents {\n\n AIWidgetChatBot?: {\n styleOverrides?: ComponentsOverrides[\"AIWidgetChatBot\"];\n variants?: ComponentsVariants[\"AIWidgetChatBot\"];\n }\n AlertDialog?: {\n styleOverrides?: ComponentsOverrides[\"AlertDialog\"];\n }\n App?: {\n styleOverrides?: ComponentsOverrides[\"App\"];\n }\n ErrorRenderer?: {\n styleOverrides?: ComponentsOverrides[\"ErrorRenderer\"];\n }\n FilterCheckbox?: {\n styleOverrides?: ComponentsOverrides[\"FilterCheckbox\"];\n variants?: ComponentsVariants[\"FilterCheckbox\"];\n }\n FilterButtons?: {\n styleOverrides?: ComponentsOverrides[\"FilterButtons\"];\n variants?: ComponentsVariants[\"FilterButtons\"];\n }\n LazyTreeViewStyled?: {\n styleOverrides?: ComponentsOverrides[\"LazyTreeViewStyled\"];\n variants?: ComponentsVariants[\"LazyTreeViewStyled\"];\n }\n FilterPanel?: {\n variants?: ComponentsVariants['FilterPanel'];\n styleOverrides?: ComponentsOverrides[\"FilterPanel\"];\n }\n RegexFilter?: {\n variants?: ComponentsVariants['RegexFilter'];\n styleOverrides?: ComponentsOverrides[\"RegexFilter\"];\n }\n FilterSlider?: {\n styleOverrides?: ComponentsOverrides[\"FilterSlider\"];\n variants?: ComponentsVariants[\"FilterSlider\"];\n }\n ListCounter?: {\n styleOverrides?: ComponentsOverrides[\"ListCounter\"];\n variants?: ComponentsVariants[\"ListCounter\"];\n }\n FilterTree?: {\n styleOverrides?: ComponentsOverrides[\"FilterTree\"];\n variants?: ComponentsVariants[\"FilterTree\"];\n },\n FilterTreePopOver?: {\n styleOverrides?: ComponentsOverrides[\"FilterTreePopOver\"];\n variants?: ComponentsVariants[\"FilterTreePopOver\"];\n }\n FilterDatePicker?: {\n styleOverrides?: ComponentsOverrides[\"FilterDatePicker\"];\n variants?: ComponentsVariants[\"FilterDatePicker\"];\n }\n FilterAutocomplete?: {\n styleOverrides?: ComponentsOverrides[\"FilterAutocomplete\"];\n variants?: ComponentsVariants[\"FilterAutocomplete\"];\n },\n FilterAutocompletePopper?: {\n styleOverrides?: ComponentsOverrides[\"MuiPopper\"];\n variants?: ComponentsVariants[\"MuiPopper\"];\n },\n GoogleMarker?: {\n variants?: ComponentsVariants['GoogleMarker'];\n }\n HtmlBox?: {\n styleOverrides?: ComponentsOverrides[\"HtmlBox\"];\n variants?: ComponentsVariants[\"HtmlBox\"];\n }\n KpiCard?: {\n styleOverrides?: ComponentsOverrides[\"KpiCard\"];\n variants?: ComponentsVariants[\"KpiCard\"];\n }\n Layout?: {\n styleOverrides?: ComponentsOverrides[\"Layout\"];\n }\n LayoutPage?: {\n styleOverrides?: ComponentsOverrides[\"LayoutPage\"];\n }\n PivotTable?: {\n variants?: ComponentsVariants['PivotTable'];\n styleOverrides?: ComponentsOverrides[\"PivotTable\"];\n }\n ReportAppBar?: {\n styleOverrides?: ComponentsOverrides[\"ReportAppBar\"];\n }\n ReportAppLeftPanel?: {\n styleOverrides?: ComponentsOverrides[\"ReportAppLeftPanel\"];\n }\n Table?: {\n variants?: ComponentsVariants['Table'];\n styleOverrides?: ComponentsOverrides[\"Table\"];\n }\n WidgetBox?: {\n variants?: ComponentsVariants['WidgetBox'];\n styleOverrides?: ComponentsOverrides[\"WidgetBox\"];\n }\n WidgetBoxContentMessage?: {\n styleOverrides?: ComponentsOverrides[\"WidgetBoxContentMessage\"];\n }\n ic3AppMenuIcon?: {\n styleOverrides?: ComponentsOverrides[\"ic3AppMenuIcon\"];\n },\n Ic3AppMenuItemHeader?: {\n styleOverrides?: ComponentsOverrides[\"Ic3AppMenuItemHeader\"];\n },\n ic3AppMenuItem?: {\n styleOverrides?: ComponentsOverrides[\"ic3AppMenuItem\"];\n }\n QueryBuilderNode?: {\n styleOverrides?: ComponentsOverrides[\"QueryBuilderNode\"]\n }\n PrintButton?: {\n styleOverrides?: ComponentsOverrides[\"PrintButton\"];\n variants?: ComponentsVariants[\"PrintButton\"];\n }\n CodeMirror?: {\n styleOverrides?: ComponentsOverrides[\"CodeMirror\"];\n }\n WidgetBoxFilteredByTooltip?: {\n styleOverrides?: ComponentsOverrides[\"WidgetBoxFilteredByTooltip\"];\n }\n Ic3TableCell?: {\n styleOverrides?: ComponentsOverrides[\"Ic3TableCell\"];\n }\n Ic3TableCellDrilldown?: {\n styleOverrides?: ComponentsOverrides[\"Ic3TableCellDrilldown\"];\n }\n Ic3TableCellError?: {\n styleOverrides?: ComponentsOverrides[\"Ic3TableCellError\"];\n }\n Ic3WidgetBoxSpinner?: {\n defaultProps?: Partial<Ic3WidgetBoxSpinnerProps>;\n styleOverrides?: ComponentsOverrides[\"Ic3WidgetBoxSpinner\"];\n }\n Ic3FilterSwitch?: {\n styleOverrides?: ComponentsOverrides[\"Ic3FilterSwitch\"];\n variants?: ComponentsVariants[\"Ic3FilterSwitch\"];\n }\n \"amCharts4.AmCharts4BubbleChart\"?: {\n variants?: Ic3ChartVariants[\"amCharts4.AmCharts4BubbleChart\"]\n }\n \"amCharts4.AmCharts4ComboChart\"?: {\n variants?: Ic3ChartVariants[\"amCharts4.AmCharts4ComboChart\"]\n }\n \"amCharts4.AmCharts4RegularAreaChart\"?: {\n variants?: Ic3ChartVariants[\"amCharts4.AmCharts4RegularAreaChart\"]\n }\n \"amCharts4.AmCharts4RegularBarChart\"?: {\n variants?: Ic3ChartVariants[\"amCharts4.AmCharts4RegularBarChart\"]\n }\n \"amCharts4.AmCharts4RegularColumnChart\"?: {\n variants?: Ic3ChartVariants[\"amCharts4.AmCharts4RegularColumnChart\"]\n }\n \"amCharts4.AmCharts4RegularLineChart\"?: {\n variants?: Ic3ChartVariants[\"amCharts4.AmCharts4RegularLineChart\"]\n }\n \"amCharts4.AmCharts4ScatterPlot\"?: {\n variants?: Ic3ChartVariants[\"amCharts4.AmCharts4ScatterPlot\"]\n }\n \"amCharts4.AmCharts4StackedAreaChart\"?: {\n variants?: Ic3ChartVariants[\"amCharts4.AmCharts4StackedAreaChart\"]\n }\n \"amCharts4.AmCharts4StackedBarChart\"?: {\n variants?: Ic3ChartVariants[\"amCharts4.AmCharts4StackedBarChart\"]\n }\n \"amCharts4.AmCharts4StackedColumnChart\"?: {\n variants?: Ic3ChartVariants[\"amCharts4.AmCharts4StackedColumnChart\"]\n }\n \"amCharts4.AmCharts4DonutChart\"?: {\n variants?: Ic3ChartVariants[\"amCharts4.AmCharts4DonutChart\"]\n }\n \"amCharts4.AmCharts4GaugeChart\"?: {\n variants?: Ic3ChartVariants[\"amCharts4.AmCharts4GaugeChart\"]\n }\n \"amCharts4.AmCharts4Histogram\"?: {\n variants?: Ic3ChartVariants[\"amCharts4.AmCharts4Histogram\"]\n }\n \"amCharts4.AmCharts4SankeyDiagram\"?: {\n variants?: Ic3ChartVariants[\"amCharts4.AmCharts4SankeyDiagram\"]\n }\n \"amCharts4.AmCharts4TreeMap\"?: {\n variants?: Ic3ChartVariants[\"amCharts4.AmCharts4TreeMap\"]\n }\n \"amCharts4.AmCharts4GeoMap\"?: {\n variants?: Ic3ChartVariants[\"amCharts4.AmCharts4GeoMap\"]\n },\n HomeCard?: {\n styleOverrides?: ComponentsOverrides[\"HomeCard\"]\n },\n HomeConsole?: {\n styleOverrides?: ComponentsOverrides[\"HomeConsole\"]\n }\n}\n","import {\n AxisCoordinate,\n ConvertToTypeParseSettings,\n EntityItem,\n GroupRowIndices,\n IMdxAxisSeriesInfo,\n ITidyColumnIndex,\n ITidyColumnsSource,\n MdxInfo,\n TidyCellError,\n TidyColumnsSubType,\n TidyColumnsType,\n} from \"./PublicTidyTableTypes\";\nimport {TidyActionEvent} from \"./IcEvent\";\nimport {ThemeTextFormatter} from \"./PublicTheme\";\nimport {Property} from \"csstype\";\nimport {AppNotification} from \"./INotification\";\nimport {MdxNodeIdentifier} from \"./PublicTidyTable\";\nimport {IPublicContext} from \"./PublicContext\";\n\nexport interface ITidyColumnTypedValue {\n\n value: any;\n fValue?: string;\n type: TidyColumnsType;\n\n /**\n * Insert this mdx value for this row. Leave undefined to set the mdx info of the row to undefined.\n */\n mdxInfo?: MdxInfo | null;\n\n}\n\nexport type ITidyColumnAddValue = ITidyColumnAddValueInsert | ITidyColumnAddValueCopyRow;\n\nexport interface ITidyColumnAddValueInsert {\n\n options: \"INSERT\";\n\n value: ITidyColumnTypedValue;\n\n}\n\nexport interface ITidyColumnAddValueCopyRow {\n\n options: \"COPY_ROW\";\n\n rowIndex: number;\n\n}\n\n/**\n * Properties with a special meaning\n */\nexport enum ITidyColumnNamedProperties {\n\n /**\n * The value of a cell.\n */\n mdxCellValue = \"value\",\n\n /**\n * The formatted value of a cell. For example, 5003 in euros is formatted as €5,003\n */\n mdxCellFormattedValue = \"formattedValue\",\n\n /**\n * MDX related colorings\n */\n mdxCellBackColor = \"mdxCellBackColor\",\n\n /**\n * MDX related colorings\n */\n mdxCellForeColor = \"mdxCellForeColor\",\n\n /**\n * The format string for the cell value. For example, euros are formatted using €#,###.\n * and percentages using #0.00%.\n */\n mdxCellFormatString = \"mdxCellFormatString\",\n\n /**\n * The main color of the cell\n */\n mdxCellColor = \"color\",\n\n /**\n * Column defined to fire an app. notification.\n *\n * The name of the notification (e.g., print-report).\n */\n appNotificationType = \"appNotificationType\",\n\n /**\n * Column defined to fire an app. notification.\n *\n * The parameters of the notification (e.g., page size, filename, ...) as a JSON or a string.\n */\n appNotificationPayload = \"appNotificationPayload\",\n\n /**\n * Column defined to fire events, the name of the event\n */\n eventName = \"eventName\",\n\n /**\n * Column defined to fire events, the value of the event (e.g. used in title)\n */\n eventValue = \"eventValue\",\n\n /**\n * Column defined to fire events, the mdx value of the event (e.g. used in queries)\n */\n eventMdxValue = \"eventMdxValue\",\n\n /**\n * Column defined as an MDX axis, the unique name of the column (the name is the value of the column).\n * This value is fired when doing selection events.\n * @see {ITidyColumn.getMdxInfo}\n */\n uniqueName = \"uniqueName\",\n\n /**\n * The caption of the selection event to use. Returned by getMdxInfo(..).\n * @see {ITidyColumn.getMdxInfo}\n */\n mdxInfoCaption = \"mdxInfoCaption\",\n\n /**\n * The MdxInfo\n * @see {ITidyColumn.getMdxInfo}\n */\n mdxInfo = \"mdxInfo\",\n\n /**\n * Column defined as an MDX axis, the caption of the column\n */\n caption = \"caption\",\n\n /**\n * Column defined as an MDX axis, the key of the column\n */\n mdxCellKey = \"key\",\n\n /**\n * Show this when hovering over the cell (or the visualisation representing the cell)\n */\n tooltip = \"tooltip\",\n\n /**\n * Name for datetime properties for levels of type Year, Month, Day, Hour, etc..\n */\n datetime = \"datetime\",\n}\n\nexport const CharacterTidyColumnProperties = new Set<string>([\n\n ITidyColumnNamedProperties.mdxCellFormattedValue,\n ITidyColumnNamedProperties.uniqueName,\n\n ITidyColumnNamedProperties.mdxCellFormatString,\n\n ITidyColumnNamedProperties.appNotificationType,\n ITidyColumnNamedProperties.eventName,\n\n ITidyColumnNamedProperties.caption,\n ITidyColumnNamedProperties.tooltip,\n\n]);\n\n/**\n * A copy from XLSX CellObject (we don't want the link to the library !)\n */\nexport interface ITidyColumnXlsxCell {\n /** The raw value of the cell. Can be omitted if a formula is specified. */\n v?: string | number | boolean | Date;\n\n /** Number format string associated with the cell (if requested) */\n z?: string;\n\n /**\n * Back color of the cell.\n */\n c?: string;\n\n /**\n * Text color of the cell (`FORE_COLOR`).\n */\n textColor?: string;\n\n /**\n * Text style bold\n */\n bold?: boolean;\n\n /**\n * Cell contains an error. Value will be red `error`.\n */\n error?: TidyCellError;\n\n /**\n * Font size in px (number)\n */\n fontSize?: number;\n\n /**\n * Font family\n */\n fontFamily?: string;\n\n}\n\nexport interface ITidyColumnHeaderStyle {\n fontSize?: string;\n fontWeight?: string;\n fontFamily?: string;\n}\n\n// Remove null and undefined from T\ntype NonNullable<T> = Exclude<T, null | undefined>;\n\nexport type AllowedColumnType<T> = TidyColumnsType.UNKNOWN\n | TidyColumnsType.MIXED\n | (NonNullable<T> extends Property.Color ? TidyColumnsType.COLOR : TidyColumnsType.UNKNOWN)\n | (NonNullable<T> extends string ? TidyColumnsType.CHARACTER : TidyColumnsType.UNKNOWN)\n | (NonNullable<T> extends number ? TidyColumnsType.NUMERIC | TidyColumnsType.LATITUDE | TidyColumnsType.LONGITUDE : TidyColumnsType.UNKNOWN)\n | (NonNullable<T> extends boolean ? TidyColumnsType.LOGICAL : TidyColumnsType.UNKNOWN)\n | (NonNullable<T> extends any[] ? TidyColumnsType.LIST : TidyColumnsType.UNKNOWN)\n | (NonNullable<T> extends Date ? TidyColumnsType.DATETIME : TidyColumnsType.UNKNOWN)\n | (NonNullable<T> extends unknown ? TidyColumnsType : TidyColumnsType.UNKNOWN)\n | (T extends null ? TidyColumnsType.NULL : TidyColumnsType.UNKNOWN);\n\nexport interface ITidyBaseColumnReadonly<T> {\n\n /**\n * Returns the length of the value array.\n */\n length(): number;\n\n /**\n * Returns true if and only if the column has zero rows.\n */\n isEmpty(): boolean;\n\n getSource(): ITidyColumnsSource;\n\n /**\n * Get the MDX role of the column\n */\n getRole(): string | undefined;\n\n /**\n * Return the type of the column\n */\n getType(): AllowedColumnType<T>;\n\n /**\n * e.g., List<T>.\n */\n getTypeParam(): TidyColumnsType | undefined;\n\n /**\n * E.g., datetime column: YEAR, ...\n */\n getSubType(): TidyColumnsSubType | undefined;\n\n /**\n * Check if column is of type\n * @param type check this type\n */\n is<T extends TidyColumnsType>(type: T): this is ITidyColumnIsType<T>;\n\n /**\n * Returns true if and only if the column is of the type(s) specified\n * @param typesToCheck one or more types to check this column against\n */\n isOfType(...typesToCheck: TidyColumnsType[]): boolean;\n\n /**\n * Returns the name of the column.\n */\n getName(): string;\n\n /**\n * Get the display name of the column. Both the name and the caption form the display name of the column.\n */\n getDisplayName(): string;\n\n /**\n * Returns the caption of the column. The caption is used for displaying localised\n * or custom captions for the axis, header, etc.\n */\n getCaption(): string;\n\n /**\n * Returns the formatter of the column.\n */\n getNumberFormat(): ThemeTextFormatter | undefined;\n\n /**\n * Returns true if the column is a hierarchical structure\n */\n isHierarchy(): boolean;\n\n /**\n * For hierarchical structures the tree depth (starts at zero).\n */\n getLevelDepthR(idx: number): number;\n\n /**\n * Returns the column values.\n */\n getValues(): ReadonlyArray<T>;\n\n /**\n * Get the value of the column at position idx.\n * @param idx the position to return the value of.\n */\n getValue(idx: number): T;\n\n /**\n * Function used for value comparison in sorting and ranking. Return a positive number if a > b, a negative\n * number if a < b and 0 otherwise.\n * @param a value 1\n * @param b value 2\n */\n compare(a: T, b: T): number;\n\n /**\n * Apply a function to the groups of unique values in this column\n *\n * @param useMdx If true, use MDX-unique names to construct groups. If false, use the columns values.\n * Default = false.\n *\n * @returns a map with indexes for each group. Key -> row indeces\n */\n groupBy(useMdx?: boolean): Map<string, GroupRowIndices>;\n\n /**\n * Same as reIndex but creating a new column leaving this column untouched.\n *\n * @see ITidyBaseColumn.reIndex\n */\n reIndexN(index: number[]): ITidyBaseColumn<T>;\n\n /**\n * Returns the color of this columns' header.\n * @param hierarchyIdx return the color of this hierarchy. Use if you have multiple column rows in your table.\n */\n getHeaderColor(hierarchyIdx?: number): string | undefined;\n\n /**\n * Returns the colors of this columns header.\n */\n getHeaderColors(): (string | undefined)[] | string | undefined;\n\n /**\n * Get the style of the header of this column.\n * @param hierarchyIdx return the style of this hierarchy. Use if you have multiple column rows in your table.\n */\n getHeaderStyle(hierarchyIdx?: number): ITidyColumnHeaderStyle | undefined;\n\n}\n\n/**\n * Base interface for nullable column.\n */\nexport interface ITidyBaseColumn<T> extends ITidyBaseColumnReadonly<T> {\n /**\n * Set the color for the columns header\n */\n setHeaderColor(color: (string | undefined)[] | string | undefined): void;\n\n isSameDimensionality(other: ITidyBaseColumn<any>): boolean;\n\n getErrors(): (TidyCellError | undefined)[];\n\n /**\n * If an error occurred in the calculation of cells for a column, then the error can be\n * retrieved using this function.\n * @param idx the row index of the cell to retrieve the error of.\n */\n getError(idx: number): TidyCellError | undefined;\n\n /**\n * Returns first value where callback does not return undefined.\n * @param callback given the row index, outputs a value or undefined.\n */\n findFirst<P>(callback: (idx: number) => P | undefined): P | undefined;\n\n /**\n * returns true if the column as a property defining the formatted value.\n */\n hasFormattedValue(): boolean;\n\n /**\n * Get the formatted value of the column at position idx.\n *\n * undefined - if the formatted_value is not available\n *\n * @param idx the position to return the value of.\n */\n getFormattedValue(idx: number): string | undefined;\n\n /**\n * Return the formatted value. Returns undefined if the value is undefined.\n * If the value has no format, then it uses the default format from the theme.\n *\n * @param idx row index\n * @param context the widget context. Used to access the default formatters. Leave undefined to not use the theme\n * default formatters.\n */\n getFormattedValueOrValue(idx: number, context?: IPublicContext): string | undefined;\n\n getNumberFormatInfo(): string | undefined;\n\n /**\n * Get cell as expected by XLSX library (do not include the interface as it is lazy loaded!).\n * Does not return the format string.\n *\n * @param idx the position to return the value of.\n * @param prettyHierarchy indent hierarchy columns with space-characters. This results in a nice visual hierarchy in\n * Excel.\n */\n getExcelCell(idx: number, prettyHierarchy?: boolean): ITidyColumnXlsxCell | undefined;\n\n /**\n * Returns excel format, best effort\n */\n getExcelFormat(): string | undefined;\n\n /**\n * Returns the type for Material-UI Table/Grid\n */\n getXGridType(): \"string\" | \"number\" | \"date\" | \"dateTime\" | \"boolean\" | undefined;\n\n /**\n * Return the cell decoration of the column at `rowIdx`. If the cell has multiple renderers, this method returns\n * the last added one.\n */\n getCellDecoration(rowIdx: number): PublicTidyColumnCellDecorationRendered | undefined;\n\n /**\n * Returns true if the column has a property of requested name.\n */\n hasProperty(name: ITidyColumnNamedProperties | string): boolean;\n\n /**\n * Returns the color column (if defined).\n *\n * If the column has type 'color', then it returns itself. Else it returns the\n * column of the first property(1) with type 'color' (if it is defined).\n *\n * (1) the fore color property is excluded.\n */\n getColorColumn(): ITidyColorColumn | undefined;\n\n /**\n * Returns the color of a cell (if defined).\n *\n * If the column has type 'color', then it returns the cell value. Else it returns the\n * value at rowIdx of the first property(1) with type 'color' (if it is defined).\n *\n * (1) the fore color property is excluded.\n */\n getColor(rowIdx: number): Property.Color | undefined;\n\n /**\n * Returns the property at the specified property coordinate.\n * @param name name of the property.\n */\n getProperty(name: ITidyColumnNamedProperties | string): ITidyUnknownColumn;\n\n /**\n * Returns the property at the specified property coordinate.\n * @param name name of the property.\n */\n getOptionalProperty(name: ITidyColumnNamedProperties | string): ITidyUnknownColumn | undefined;\n\n /**\n * Get the value of the property for the given property coordinate, and the given row (undefined if the property\n * does not exist).\n * @param name name of the property.\n * @param rowIdx row index for the value to return.\n */\n getPropertyAt(name: ITidyColumnNamedProperties | string, rowIdx: number): any;\n\n /**\n * Return available properties for this column as a list of columns.\n */\n getPropertiesAsColumns(): ITidyUnknownColumn[];\n\n isWithEntityItem(): boolean;\n\n /**\n * Create and return the entity item at position idx for generating events.\n */\n getEntityItem(idx: number): EntityItem | undefined;\n\n /**\n * Get the entity item for the column. Used in column selection.\n * Returns an empty array if no entityItems.\n * @param hierarchyIndices only include these hierarchies for generating the EntityItem. Leave undefined to include\n * all.\n */\n getColumnEntityItem(hierarchyIndices?: number[]): EntityItem[];\n\n /**\n * Get the index of the parent. Returns -1 if the parent is the root.\n * @param idx the index to find the parent of.\n */\n getParentIdx(idx: number): number;\n\n /**\n * Return the descendants of the node in the hierarchy at the index.\n * Returned set excludes the node itself.\n * @param index\n */\n getDescendants(index: number): number[];\n\n /**\n * Returns true if and only if the node in the hierarchy has children.\n */\n hasChildren(index: number): boolean;\n\n /**\n * Returns the children of the node at `index`.\n */\n getChildren(index: number): number[];\n\n /**\n * Return the siblings of the node in the hierarchy at the index.\n * Including the node itself.\n * @param index\n */\n getSiblings(index: number): number[];\n\n /**\n * Get the default member of the dimension that the column represents. Returns undefined\n * if the column is not a MDX dimension.\n */\n getHierarchyDefaultMember(): EntityItem | undefined;\n\n /**\n * Get the array of MDX info in the column.\n * Returns an empty array if no MDX info.\n */\n getMdxInfos(): (MdxInfo | undefined)[];\n\n /**\n * Returns the MDX info at a row index.\n */\n getMdxInfo(idx: number): MdxInfo | undefined;\n\n /**\n * Returns the key from the model. Values with the same key are the same in the underlying model. Rows\n * with the same value but with a different key, are treated as different values.\n * @param rowIdx\n */\n getUid(rowIdx: number): string;\n\n /**\n * Get extra information of the MDX axis used for this column, if available.\n */\n getAxisInfo(): IMdxAxisSeriesInfo | undefined;\n\n /**\n * Get the MDX axis coordinate, if available.\n * @see AxisCoordinate\n */\n getAxisCoordinate(): AxisCoordinate | undefined;\n\n /**\n * Get the axis values in this column.\n *\n * If it is an MDX Axis, the potentially sorted MDX axis (e.g., pivot table sort)\n *\n * If it is not, return undefined\n */\n mdxAxis(): ReadonlyArray<T> | undefined;\n\n /**\n * Get the unique values in this column.\n */\n unique(ignoreNull: boolean): T[];\n\n /**\n * Set the name of the column.\n * @param name set this as the caption of the column.\n *\n * Note, do not use this for columns that are in tables as it can cause duplicate columns in a table.\n * Use setCaption to change the name visible to the user.\n */\n setName(name: string): void;\n\n /**\n * Set the number/date formatter of the column, calculating and adding the 'formattedValue' property.\n */\n setNumberFormat(format: ThemeTextFormatter | undefined): void;\n\n /**\n * Set the caption of the column. The caption is used for displaying localised\n * or custom captions for the axis, header, etc.\n * @param caption set this as the caption of the column.\n */\n setCaption(caption: string): void;\n\n /**\n * Returns true if and only if the column has a caption different from the default. The default caption is the\n * columns name.\n */\n hasCaption(): boolean;\n\n /**\n * Convert the column to another type. This modifies the values to be of that type.\n *\n * If type is datetime, then the settings contain the date locale (default='en_US'), and\n * the dateformat (default = 'yyyy-MM-dd').\n */\n convertToType(type: TidyColumnsType, settings?: ConvertToTypeParseSettings): void;\n\n /**\n * Same as convertToType but creating a new column.\n */\n convertToTypeN(type: TidyColumnsType, settings?: ConvertToTypeParseSettings): ITidyBaseColumn<T>;\n\n /**\n * Create a new column with the content of this column changing both its name and its caption.\n */\n duplicate(name: string, caption: string): ITidyBaseColumn<T>;\n\n /**\n * Change the values of the column.\n * @param values the new values for the column.\n * @param newType the new type for the column. Leave undefined for automatic inference.\n */\n setValues<P>(values: P[], newType?: AllowedColumnType<P>): void;\n\n /**\n * Apply a transformation to all values in the column. Note, this functions alters the values in the column.\n * @param fun function with one parameter. Describes the transformation. In the function, index represents the\n * index of the internal data structure.\n * @param newType new type for the column. Leave blank for auto inference of the type.\n */\n apply<P>(fun: (value: T, index: number) => P, newType?: AllowedColumnType<P>): void;\n\n /**\n * Insert values at a row index.\n * Structure: Map: row idx -> values to insert\n *\n * e.g., add totals.\n */\n insertValues(inserts: Map<number, ITidyColumnAddValue[]>): void;\n\n /**\n * Repeat the values in the column.\n *\n * Examples:\n * column.getValues() --> ['a','b','c']\n * column.repeat(6,1) --> ['a','b','c','a','b','c']\n * column.repeat(6,2) --> ['a','a','b','b','c','c']\n * column.repeat(12,2) --> ['a','a','b','b','c','c','a','a','b','b','c','c']\n *\n * @param newLength new length of the array.\n * @param repetition how many times to repeat each value.\n */\n repeat(newLength: number, repetition?: number): void;\n\n /**\n * Same as repeat but creating a new column leaving this column untouched.\n *\n * @see repeat\n */\n repeatN(newLength: number, repetition?: number): ITidyBaseColumn<T>;\n\n /**\n * Push a value to the end of the column's values.\n */\n pushValue(pushValue: ITidyColumnTypedValue): void;\n\n /**\n * Apply a new index to the column and its properties (e.g., limiting rows, reordering rows, copying rows).\n *\n * Examples:\n * <pre>\n * initial values -> [ 'a', 'b', 'c']\n * reIndex: [2,1,0] -> [ 'c', 'b', 'a']\n * reIndex: [2,2,1] -> [ 'c', 'c', 'b']\n * reIndex: [0,1,2,2] -> [ 'a', 'b', 'c','c']\n * reIndex: [0] -> [ 'a' ]\n * reIndex: [0,5] -> [ 'a', null ]\n * </pre>\n *\n * @param index new row indices\n *\n * @see ITidyColumn.reIndexN\n */\n reIndex(index: number[]): void;\n\n /**\n * Reset the index set using `reIndex`.\n */\n resetIndex(): void;\n\n /**\n * Set the formatted values. Use this if you have the formatted values pre-calculated,\n * or a function to calculate the formatted values.\n * @param caption the caption for the added property.\n */\n setFormattedValues(formattedValues: (string | null)[] | ((value: T | undefined) => string), caption?: string): void;\n\n /**\n * Resets the formatted value\n *\n * @see setFormattedValues\n */\n resetFormat(context: IPublicContext, format: ThemeTextFormatter): void;\n\n /**\n * Set the colors for the column.\n * @param caption the caption for the added property.\n */\n setColors(colors: (Property.Color | null)[], caption?: string): void;\n\n /**\n * Return a new column with transformed values.\n * @param fun function with one parameter. Describes the transformation.\n * @param columnName the name of the new column.\n * @param newType new type for the column. Leave blank for auto inference of the type.\n */\n mapToColumn<P>(fun: (value: T, index: number) => P, columnName: string, newType: AllowedColumnType<P>): ITidyBaseColumn<P>;\n\n /**\n *\n * if it's an mdx axis, for each row of the undelying mdx Axis\n * if no, for each row\n *\n * @see mdxAxis\n */\n mapAxisOrRows<K>(callbackfn: (rowIdx: number, column: ITidyBaseColumn<T>) => K): K[];\n\n /**\n * @param callbackFn if the return value of callbackFn is undefined, then it is not included in the returned array.\n * @param forceMapAllRows if true, also include values returned by callbackFn that are undefined.\n */\n mapAllRows<P>(callbackFn: (index: number, column: ITidyBaseColumn<T>) => P | undefined, forceMapAllRows?: boolean): P[];\n\n /**\n * Map the rows that are visible given a hierarchical axis, and an array of boolean values\n * @param expanded a function indicating for each index if it is expanded or not. If it is collapsed, then all\n * children are not visible.\n * @param fun function to apply.\n */\n mapVisibleRows<P>(expanded: (rowIdx: number) => boolean, fun: (index: number) => P): P[];\n\n /**\n * Apply a function to all visible nodes in the column. A nodes' children are visible if expanded evaluates to\n * true for that node.\n * @param filter Possibly filter the nodes.\n */\n mapTreeVisibleRows<P>(expanded: (rowIdx: number) => boolean, fun: (rowIdx: number, isCollapsed: boolean) => P, filter?: (info: MdxInfo) => boolean): P[];\n\n /**\n * Set a property on the column. If the property already exists, it is overwritten.\n * @param property the column to set as a property. Ensure that the lengths are the same.\n */\n setProperty(property: ITidyColumn): void;\n\n /**\n * Delete a property on the column\n */\n deleteProperty(propertyName: ITidyColumn | string): void;\n\n /**\n * The ITidyTableSelection row identifier for the row (uniqueName if it is an MDX like column).\n */\n getSelectionRowIdentifier(idx: number): string;\n\n /**\n * Returns the row index of the first occurrence where the values of this column equals value.\n * Returns undefined if it did not find the value.\n *\n * @param value value to search for.\n */\n getRowIndexOf(value: T): number | undefined;\n\n /**\n * For a hierarchical columns returns a list of transformed columns as needed by a pivot table like structure.\n * If this column is not hierarchical, return this unchanged.\n *\n * E.g., a columns with Year, Quarter and Month will be converted into 3 columns [Year, Quarter, Month].\n */\n toFlatColumns(nullValue: any, rows: number[] | undefined): ITidyUnknownColumn[];\n\n /**\n * Returns the tree-path for the node, including the node itself. The path starts at the node at rowIdx and contains\n * its parents.\n * @param rowIdx column index of the node.\n */\n getNodePath(rowIdx: number): number[];\n\n /**\n * Returns if present a notification as defined by the properties of the columns.\n */\n getAppNotification(rowIdx: number): AppNotification | undefined;\n\n /**\n * Returns if present an action as defined by the properties of the columns.\n */\n getEventAction(rowIdx: number): [string, TidyActionEvent] | undefined;\n\n mapUniqueNames<T>(uniqueNames: string[], mapper: (idx: number) => T | null | undefined): T[];\n\n /**\n * Add the renderer to the column. If a cell has multiple renderers, it uses the last added renderer.\n *\n * @see {BaseTidyColumnCellDecoration.appliesToCell}.\n */\n setCellDecoration(decoration: PublicTidyColumnCellDecoration): void;\n\n /**\n * Return the index of the column.\n * @see tidyTable.\n */\n getIndex(): ITidyColumnIndex[];\n\n /**\n * undefined if it is not an MDX member column\n */\n getQueryNodeIdentifier(idx: number): MdxNodeIdentifier | undefined;\n\n /**\n * Returns the group key at the row index for use with `table.toAmcharts4Data`.\n */\n getAmcharts4GroupKey(rowIdx: number): string;\n\n /**\n * Mark the column as a total column. Total columns have a different styling and css-class in tables and pivot\n * tables.\n * @param isTotal new value. Set to true to mark this column as a total. Use false to remove the mark.\n * @see isTotalColumn\n */\n setIsTotalColumn(isTotal: boolean): void;\n\n /**\n * Returns true if and only if the column contains total values.\n * @see setTotalColumn\n */\n getIsTotalColumn(): boolean;\n\n /**\n * return true if the column was created from an MDX axis (i.e., [Geo].[Countries] on 0).\n */\n isMdxAxis(): boolean;\n\n addRowValue(insert: ITidyColumnAddValueInsert): void;\n\n /**\n * Returns true if and only if the all the datetime values in the column are dates (and do not have a time\n * component).\n */\n hasOnlyDates(): boolean;\n\n /**\n * Returns the level depth of the column.\n *\n * E.g., if you have a table with `2018`, `2018 Q1` as columns, then the level depths are 0 and 1.\n */\n getColumnLevelDepth(): number;\n\n /**\n * Set the style of the header of this column. Used in tables, and the Excel export.\n * @param style the styles\n * @param hierarchyIdx only set the style of this hierarchy. Default is apply to all hierarchies.\n */\n setHeaderStyle(style: ITidyColumnHeaderStyle | undefined, hierarchyIdx?: number): void;\n}\n\nexport interface BaseTidyColumnCellDecoration {\n\n /**\n * If true, the renderer handles errors in the cells. If false, the table/pivot table renders an error if the cell\n * has one.\n *\n * Use `column.getError(tidyRow)` to get the error of a cell.\n */\n handlesCellsOnError?: boolean;\n\n /**\n * Default (i.e., when not defined) is true.\n */\n handlesBackgroundColor?: boolean;\n\n /**\n * A function that determines if the renderer is applied to a cell. Return true if yes, return false if not.\n * @param rowIdx row index.\n */\n appliesToCell?: (rowIdx: number) => boolean;\n\n /**\n * If an object is returned the underlying code uses emotion CSS function to convert to a className,\n * so you can do className like CSS :\n *\n * ```TypeScript\n * {\n * fontSize: \"0.7rem\",\n * ':hover': {\n * fontSize: \"1.4rem\",\n * }\n * }\n * ```\n */\n cssStyles?: (rowIdx: number) => Record<string, any> | undefined;\n\n}\n\nexport interface ReactTidyColumnCellDecoration extends BaseTidyColumnCellDecoration {\n\n /**\n * False if your renderer returns a React element or if you have no renderer.\n */\n stringRenderer?: false;\n\n /**\n * The cell renders the returned React element. Note that for the Pivot Table, Emotion CSS and JS does not work.\n */\n renderer?: (rowIdx: number) => React.ReactElement;\n\n}\n\nexport interface HtmlTidyColumnCellDecoration extends BaseTidyColumnCellDecoration {\n\n /**\n * True if your renderer returns a HTML string.\n */\n stringRenderer: true;\n\n /**\n * The cell renders the returned string as HTML.\n */\n renderer: (rowIdx: number) => string;\n\n}\n\nexport type PublicTidyColumnCellDecoration = ReactTidyColumnCellDecoration | HtmlTidyColumnCellDecoration;\n\n/**\n * The renderer for a cell at a row index.\n *\n * @see {PublicTidyColumnCellDecoration}\n */\nexport type PublicTidyColumnCellDecorationRendered = ({\n stringRenderer: true;\n renderer: () => string;\n} | {\n stringRenderer?: false;\n renderer?: () => React.ReactElement;\n}) & {\n handlesCellsOnError?: boolean;\n handlesBackgroundColor?: boolean;\n cssStyles?: () => Record<string, any> | undefined;\n}\n\nexport type ITidyColumn = ITidyBaseColumn<any>;\nexport type ITidyUnknownColumn = ITidyBaseColumn<unknown>;\nexport type ITidyNullColumn = ITidyBaseColumn<null>;\nexport type ITidyNumericColumn = ITidyBaseColumn<number | null>;\nexport type ITidyCharacterColumn = ITidyBaseColumn<string | null>;\nexport type ITidyColorColumn = ITidyBaseColumn<Property.Color | null>;\nexport type ITidyDateColumn = ITidyBaseColumn<Date | null>;\nexport type ITidyLogicalColumn = ITidyBaseColumn<boolean | null>;\nexport type ITidyListColumn = ITidyBaseColumn<any[] | null>;\n\nexport type ITidyColumnIsType<T extends TidyColumnsType> =\n T extends TidyColumnsType.ANY ? ITidyColumn :\n T extends TidyColumnsType.COLOR ? ITidyColorColumn :\n T extends TidyColumnsType.LONGITUDE ? ITidyBaseColumn<number | null> :\n T extends TidyColumnsType.LATITUDE ? ITidyBaseColumn<number | null> :\n T extends TidyColumnsType.ISO2_LOCATION_CODE ? ITidyCharacterColumn :\n T extends TidyColumnsType.DATETIME ? ITidyDateColumn :\n T extends TidyColumnsType.NUMERIC ? ITidyNumericColumn :\n T extends TidyColumnsType.CHARACTER ? ITidyCharacterColumn :\n T extends TidyColumnsType.LOGICAL ? ITidyLogicalColumn :\n T extends TidyColumnsType.LIST ? ITidyListColumn :\n T extends TidyColumnsType.MIXED ? ITidyColumn :\n T extends TidyColumnsType.NULL ? ITidyNullColumn :\n ITidyUnknownColumn;","import {\n EntityItem,\n ITidyTableSelection,\n SelectionBehaviour,\n TidyRowFilter,\n WidgetTidySelectionOptions\n} from \"./PublicTidyTableTypes\";\nimport {ITidyBaseColumn, ITidyColumn} from \"./PublicTidyColumn\";\nimport {ILazyTreeViewLoader} from \"./LazyTreeView\";\nimport {PublicIcEvent} from \"./IcEvent\";\nimport {Theme} from \"@mui/material/styles\";\nimport {MdxNodeIdentifier} from \"./PublicTidyTable\";\nimport {AppNotification} from \"./INotification\";\n\nexport enum SelectionMode {\n /**\n * User can only select one item.\n */\n SINGLE = 'SINGLE',\n\n /**\n * User can select multiple items.\n */\n MULTIPLE = 'MULTIPLE'\n}\n\nexport enum TreeFireEventMode {\n ALL_SELECTED = 'ALL_SELECTED',\n /**\n * if all children are selected, fire only the parent\n */\n COMPACT_ON_PARENT = 'COMPACT_ON_PARENT'\n}\n\n\nexport enum TidyPivotTableLikeNodeStatus {\n COLLAPSED,\n EXPANDED,\n NO_CHILDREN_OR_DRILLDOWN,\n WITH_DRILLDOWN,\n LOADING\n}\n\nexport type TidyEvent = MouseEvent | TouchEvent;\n\nexport type IWidgetInteractionMode = \"drilldown\" | \"selection\";\n\nexport interface ITidyTableInteractionSelection {\n\n /**\n * Sets the selection at the creation of the widget.\n */\n initializeSelection(isRangeSelection?: boolean): void;\n\n /**\n * Sets the selection at the creation of the widget: autocomplete-lazy.\n */\n initializeLazySelection(items?: EntityItem[]): void;\n\n /**\n * Returns true if the selection if empty. Returns false otherwise.\n */\n isSelectionEmpty(): boolean;\n\n firstIdxSelected(): number | undefined;\n\n /**\n * A row is selected if all cells in the row are selected\n * @param rowIdx the index of the row\n */\n isSelected(rowIdx: number): boolean;\n\n /**\n * Returns true if and only if the column is selected.\n * @param colIdx index of the column in the tidy table.\n * @param hierIdx optional. Use to check if the hierarchy index is selected. Leave undefined to check the column.\n */\n isColumnSelected(colIdx: number, hierIdx?: number): boolean;\n\n /**\n * Returns true if and only if the cell is selected.\n * @param rowIdx\n */\n isCellSelected(rowIdx: number, colIdx: number): boolean;\n\n /**\n * For the sankey diagram, a row is selected if connecting nodes are in the selection.\n * @param rowIdx the index of the row\n * @param column selection should be in this column\n */\n isSelectedSankey(rowIdx: number, column: ITidyColumn): boolean;\n\n /**\n * map function on selected rows\n */\n mapSelectedRows<T>(callback: (rowIdx: number) => T | null | undefined): T[];\n\n /**\n * Creates a new Column of size Table row count with the following values\n *\n * @param selectedItemValue if the row is selected\n * @param notSelectedItemValue if the row is not selected\n * @param noSelectionValue if defined an the selection is empty, all row values have this value\n */\n applySelectionToNewColumn<T>(selectedItemValue: T, notSelectedItemValue: T, noSelectionValue?: T): ITidyBaseColumn<T>;\n\n /**\n * Handles the row click event for the selection\n * @param rowIdx index of row clicked\n * @param event the mouse event of the click\n */\n handleClickSelection(rowIdx: number, event?: TidyEvent): void;\n\n /**\n * Handles the click event for the selection on a given column.\n *\n * If the column is not part of the selection columns of the widget nothing will happen\n *\n * @param column column index of the tidy table\n * @param event the mouse event of the click\n */\n handleColumnSelection(colIdx: number, event?: TidyEvent): void;\n\n /**\n * Handles the click event for the selection of a given cell\n *\n * If the columns is not part of the selection columns of the widget nothing will happen\n *\n * @param rowIdx row index of clicked cell in the tidy table\n * @param colIdx column index of clicked cell in the tidy table\n * @param event the mouse event of the click\n */\n handleCellSelection(rowIdx: number, colIdx: number, event?: TidyEvent): void;\n\n /**\n * Get the interaction mode:\n * undefined = no interactions in the widget,\n * selection = perform selection interaction,\n * drilldown = perform drilldown interaction.\n */\n getInteractionMode(): IWidgetInteractionMode | undefined;\n\n getColorOnSelection(theme: Theme, color: string | undefined, rowIdx: number): string | undefined;\n\n /**\n * Select multiple rows at once\n */\n handleMultipleRowSelection(rowIds: number[]): void;\n\n /**\n * Perform a row-selection click on multiple rows at the same time. Has similair CTRL functionality as\n * handleClickSelection(...). SHIFT is not supported.\n */\n handleMultipleRowSelectionClick(rowIds: number[], event?: TidyEvent): void;\n\n /**\n * Clear the selection and fire an empty event value. Note, this resets the\n * selection to the initial selection.\n */\n handleClearSelection(): void;\n\n /**\n * Resets the selection to his default/initial state.\n */\n handleToInitialSelection(): void;\n\n /**\n * Get the selection mode (single or multiple) of the interaction object.\n */\n getSelectionMode(): SelectionMode;\n\n /**\n * Set the selection mode of the interaction.\n * @param mode\n */\n setSelectionMode(mode: SelectionMode): void;\n\n /**\n * Set the selection behaviour for when the selection is empty.\n * @param behaviour\n */\n setSelectionEmptyBehaviour(behaviour: SelectionBehaviour): void;\n\n setSelectionAllBehaviour(behaviour: SelectionBehaviour): void;\n\n /**\n * If the selection is on a tree, this determines how the fired event is optimized for the\n * tree structure. Collapsed means that if all children are selected, we only use the parent. Children means\n * that we use leaves only. All means that we fire both parent and child nodes.\n * @param mode\n */\n setTreeFireEventMode(mode: TreeFireEventMode): void;\n\n setTreeCascade(value: boolean): void;\n\n /**\n * the selection will treat a click without ctr or shift as with a ctr key pressed (e.g. check boxes)\n */\n setNoKeyModifierAsCtrl(value?: boolean): void;\n\n /**\n * Set to true to enable selection on the interaction object.\n * @param enabled if true, the selection is enabled. If false, the interaction object does not respond to\n * methods setting the selection (e.g. click).\n */\n setSelectionActive(enabled?: boolean): void;\n\n /**\n * Returns true if the selection is activated, e.g. the interaction object responds to click and other selection\n * events.\n */\n isSelectionActive(): boolean;\n}\n\n\nexport interface ITidyTableDrilldown {\n\n handleDrilldown(rowIdx: number, event: TidyEvent | undefined, stopDrillDownDepth?: number): void;\n\n hasDrilldown(): boolean;\n\n hasNodeDrilldown(nodeInfo: MdxNodeIdentifier, stopDrillDownDepth?: number): boolean;\n\n hasPivotLikeDrilldown(): boolean;\n}\n\nexport interface ITidyTableInteractionEvent {\n\n /**\n * actionName if the action is bound to a channel, sends the events ( e.g. 'onClick' to the channel 'year' )\n *\n * If rowIdx is an empty array, [], fires a mdx empty set event -> ∅\n */\n fireEvent(actionName: string, column: ITidyColumn | ITidyColumn[] | undefined, rowIdx: number | number[]): void;\n\n fireClearEvent(actionName: string): void;\n\n /**\n * actionName if the action is bound to a channel, sends the emptySet event, ∅\n */\n fireEmptySetEvent(actionName: string): void;\n\n /**\n * actionName if the action is bound to a channel, send an Mdx Event (value,mdx)\n */\n fireMdxEvent(actionName: string, value: string, mdx: string): void;\n\n /**\n * returns the value of the event\n */\n getEventValue(actionName: string): PublicIcEvent | undefined;\n\n /**\n * returns true if the actionName in bound to a channel\n */\n firesEvent(actionName: string): boolean;\n\n /**\n * Returns a function that evaluates to true if and only if that row is selected.\n * Returns undefined if there is no selection.\n */\n getIsRowSelectedFilter(): TidyRowFilter | undefined;\n\n}\n\nexport interface ITidyTableInteraction extends ITidyTableInteractionSelection, ITidyTableInteractionEvent, ITidyTableDrilldown {\n\n /**\n * Handles a row hit/click, doing a selection or a drilldown depending on the widget status\n *\n * The column(s) for the selection or the drilldown are based on the widget options/settings\n *\n * This does not fire any event. To fire an event, use fireEvent.\n *\n * @see fireEvent\n */\n handleRowHit(rowIdx: number, event: TidyEvent | undefined): void;\n\n /**\n * Handles a cell click in the tidy table.\n * @param rowIdx row index of the cell\n * @param colIdx column index of the cell\n * @param event mouse/touch event\n *\n * @see handleRowHit\n */\n handleCellHit(rowIdx: number, colIdx: number, event: TidyEvent | undefined): void;\n\n /**\n * Handles a column click in the tidy table.\n * @param colIdx index of clicked column in the tidy table\n * @param event mouse/touch event\n *\n * @see handleRowHit\n */\n handleColumnHit(colIdx: number, event: TidyEvent | undefined): void;\n\n /**\n * Handles a row hit for the sankey diagram. The sankey differs from normal selection because it makes a tuple,\n * not a set.\n */\n handleRowHitSankey(rowIdx: number, column: ITidyColumn, event: TidyEvent | undefined): void;\n\n /**\n * Collapsed / Expand on a column row (i.e. it's a tree)\n */\n toggleCollapse(column: ITidyColumn, rowIdx: number): void;\n\n /**\n * returns the collapse/expand state that has not yet been set by the end user (i.e. first time, on drilldowns..)\n */\n setCollapseUnsetFunction(collapseUnsetFunction?: (nodeInfo: MdxNodeIdentifier) => boolean): void;\n\n /**\n * Map a function to the visible rows only. Used in tree structures with expanded or collapsed items.\n * @param column column to map the values of\n * @param mapper function\n * @param inverse per default, all items are expanded. If inverse is true, all items are collapsed per default.\n */\n mapVisibleRows<T>(column: ITidyColumn, mapper: (index: number) => T, inverse?: boolean): T[];\n\n // mapTreeVisibleRows<T extends ReactElement>(column: ITidyColumn, mapper: (index: number) => T, filter?: (info: MdxInfo) => boolean): T[];\n\n isCollapsed(column: ITidyColumn, rowIdx: number): boolean;\n\n /**\n * Is the node loading\n */\n isLoading(column: ITidyColumn, rowIdx: number): boolean;\n\n setSelectionColumns(columns: ITidyColumn[] | ((oldColumns: ITidyColumn[]) => ITidyColumn[])): void;\n\n /**\n * Change the default drilldown column.\n * @param column column to use for the drill-downs. Use undefined to reset to default.\n */\n setDrilldownColumn(column: ITidyColumn | undefined): void;\n\n /**\n * Pivot Type behavior ( nodes can collapse/expand + drilldown might return some values)\n *\n * pay attention that the query needs to set the flag, pivot table like (to insert data)\n */\n pivotTableLikeDrilldown(event: TidyEvent, column: ITidyColumn, rowIdx: number, stopDrillDownDepth?: number): void;\n\n pivotTableLikeDrilldownOnNode(event: TidyEvent, nodeInfo: MdxNodeIdentifier, stopDrillDownDepth?: number): void;\n\n pivotTableLikeNodeStatus(column: ITidyColumn, rowIdx: number, stopDrillDownDepth?: number): TidyPivotTableLikeNodeStatus;\n\n asLazyTreeViewLoader(column: ITidyColumn): ILazyTreeViewLoader;\n\n getCompactedSelectionNames(): string[] | undefined;\n\n /**\n * Returns true if the column is used for the row selection.\n */\n isSelectable(col: ITidyColumn): boolean;\n\n isHierarchyIdxSelectable(hierIndex: number): boolean;\n\n /**\n * Returns the rows of the items currently in the selection. Note, the item must be present in the current tidy\n * table.\n */\n getSelectedRows(): number[];\n\n // Sort the selection by column-values order if multiple are selected? Tree -> true\n setSortSelectionToColumnOrder(value: boolean): void;\n\n /**\n * Returns compacted selection if TreeFireEventMode === COMPACT_ON_PARENT. Else returns undefined.\n */\n getCompactedSelectionItems(): ITidyTableSelection[] | undefined;\n\n /**\n * Returns the widgets selection options.\n */\n getWidgetSelectionOptions(): WidgetTidySelectionOptions;\n\n /**\n * Returns the selection in the interaction object.\n */\n getSelectedItems(): ITidyTableSelection[];\n\n /**\n * Add an item to the interactions selection.\n */\n setSelection(items: ITidyTableSelection | ITidyTableSelection[]): void;\n\n /**\n * Use for publishing app notifications, e.g., print the report.\n */\n publishAppNotification(notification: AppNotification): void;\n\n /**\n * Get a column from the underlying tidy table.\n * @param columnIdx\n */\n getDrilldownColumn(columnIdx: number): ITidyColumn;\n\n /**\n * Return the selection behaviour when the selection is empty.\n */\n getEmptyMode(): SelectionBehaviour | undefined;\n\n}\n\n","import {ITidyColumn, ITidyNumericColumn} from \"./PublicTidyColumn\";\nimport {GroupRowIndices} from \"./PublicTidyTableTypes\";\n\n/**\n * A tree node that with origin in a TidyColumn\n */\nexport interface TidyTreeNode {\n\n /**\n * The column the tree node was generated from\n */\n originalColumn?: ITidyColumn;\n\n /**\n * The rows that the node is created from. Undefined if and only if the node is the root node.\n */\n rowIds?: GroupRowIndices;\n\n /**\n * The label/value of this node\n */\n nodeLabel: string;\n\n /**\n * Children of this tree\n */\n children: TidyTreeNode[];\n}\n\n/**\n * A tree structure that was generated from a TidyTable.\n *\n * Table:\n * budget type | cc\n * Monthly Budget | Savings\n * Monthly Budget | Mortgage/Rent\n * Yearly Budget | Car Payment\n *\n * converts to <nodeLabel> <rowIds>:\n * root (undefined)\n * |\n * --- Monthly Budget [0,1]\n * | |\n * | --- Savings [0]\n * | |\n * | --- Mortgage/Rent [1]\n * |\n * --- Yearly Budget [3]\n * |\n * --- Car Payment [3]\n *\n */\nexport class TidyTree {\n\n root: TidyTreeNode;\n\n constructor(root?: TidyTreeNode) {\n this.root = {\n nodeLabel: 'root',\n children: [],\n ...root\n };\n }\n\n /**\n * A unique id for each node of the tree\n * returns levelDepth + \"--\" + node.nodeLabel, or \"root\" for the root node.\n */\n static getUniqueId(node: TidyTreeNode, levelDepth: number): string {\n if (node.rowIds == null) {\n return \"root\";\n }\n return levelDepth + \"--\" + node.nodeLabel + \"--\" + (node.rowIds[0]);\n }\n\n /**\n * Performs the specified action on each node of the tree.\n * If callbackfn return false, it will not perform a foreach on it's children.\n * The callback function does not run for the root node.\n * Leveldepth = number of nodes between node and the root node.\n */\n forEach<T>(callbackfn: ForEachNodeCallbackFn<T>, getTopParentStat?: (topParentNode: TidyTreeNode) => T): void {\n\n function forEachNested(children: TidyTreeNode[], levelDepth: number, parent: TidyTreeNode, callbackfn: ForEachNodeCallbackFn<T>, topParentStat?: T) {\n children.forEach((node, idx) => {\n if (callbackfn(node, levelDepth, parent, idx, topParentStat) !== false) {\n forEachNested(node.children, levelDepth + 1, node, callbackfn, topParentStat);\n }\n })\n }\n\n this.root.children.forEach((topParentNode, idx) => {\n const topParentSummary = getTopParentStat != null ? getTopParentStat(topParentNode) : undefined;\n if (callbackfn(topParentNode, 0, this.root, idx, topParentSummary) !== false) {\n forEachNested(topParentNode.children, 1, topParentNode, callbackfn, topParentSummary);\n }\n });\n\n }\n\n /**\n * aggregates all children measures values on parents using aggregation function recursively\n * aggrfn is sum by default\n */\n getNodeValue(node: TidyTreeNode, measure: ITidyNumericColumn): number | null {\n if (node.rowIds == null) {\n return [...measure.getValues()].reduce(sumAggregation);\n }\n if (node.originalColumn?.isHierarchy()) {\n return measure.getValue(node.rowIds[0]);\n }\n const values = node.rowIds.map(i => measure.getValue(i));\n return values.reduce(sumAggregation);\n }\n}\n\nfunction sumAggregation(a: number | null, b: number | null) {\n if (a == null)\n return b;\n if (b == null)\n return a;\n return a + b;\n}\n\n/**\n * Top parent node = the node that is a direct child of root and of which node is a descendant.\n */\nexport type ForEachNodeCallbackFn<T> = (node: TidyTreeNode, levelDepth: number, parent: TidyTreeNode, nodeChildrenIdx: number, parentSummary?: T) => boolean | void;","import {SortingType} from \"./PublicTidyTableTypes\";\nimport {FormFieldObject, FormFields} from \"./PublicTemplateForm\";\n\nexport enum TidyHistogramBucketFormat {\n INTERVAL = 'interval',\n MATH_INTERVAL = 'mathInterval',\n MATH_INTERVAL_REVERSED = 'mathIntervalReversed',\n FROM_ONLY = 'fromOnly',\n TO_ONLY = 'toOnly'\n}\n\nexport enum TidyHistogramBucketType {\n /**\n * [from, to)\n */\n LEFT_CLOSED = 'leftClosed',\n\n /**\n * (from, to]\n */\n RIGHT_CLOSED = 'rightClosed'\n}\n\nexport enum HistogramBinType {\n AUTOMATIC_WITH_BINS = \"automatic\",\n USER_DEFINED = \"userDefined\",\n\n /**\n * Makes sure that the automatic buckets do not consist of floating point numbers with many decimals.\n * E.g., it uses [0, 0.5, 1] instead of [0.001, 0.4955, 0.99]. User cannot set the number of bins however.\n */\n INTERVAL_STEPS = \"roundedIntervals\"\n}\n\nexport interface TidyHistogramOptions extends FormFieldObject {\n\n /**\n * Bucket Mode.\n *\n * Automatically create buckets or define them yourself.\n */\n binType: HistogramBinType;\n\n /**\n * Bucket Count.\n *\n * The number of buckets to auto generate.\n */\n numberOfBins: number;\n\n /**\n * Number of buckets per interval step.\n */\n prettyIntervalCount: number;\n\n /**\n * Custom Buckets.\n *\n * A list of objects `{from,to,name}`. Each object describes the range `from < x <= to`. No `from` or `to`\n * means that the range is unbounded on that side.\n */\n customBins: string;\n\n /**\n * Sort Buckets.\n *\n * Sort the buckets in this order. The sort uses the `from` of each bucket.\n */\n sortBins: SortingType;\n\n /**\n * Bucket Name Format.\n *\n * How to format the names for the bucket. If there is a name in the user defined specification,\n * then the bucket takes that name.\n */\n bucketFormat: TidyHistogramBucketFormat;\n\n /**\n * Bucket Type.\n *\n * Which side of the bucket is closed?\n */\n intervalType: TidyHistogramBucketType;\n\n /**\n * Include row ids of the rows that are in the bucket. Added in the table as a column with array values. E.g.,\n * value [0,4,5] means rows 0, 4 and 5 are in the bucket.\n */\n includeRowIds?: boolean;\n}\n\nexport const TidyHistogramMetaOptions = (group?: string, hideSort = false): FormFields<TidyHistogramOptions> => {\n return {\n 'binType': {\n group,\n fieldType: \"option\",\n editorConf: {\n allowDuplicate: true,\n optionValues: Object.values(HistogramBinType),\n optionName: \"HistogramBinType\"\n },\n defaultValue: HistogramBinType.AUTOMATIC_WITH_BINS\n },\n 'numberOfBins': {\n group,\n fieldType: \"number\",\n defaultValue: 10,\n dependsOn: \"binType\",\n dependsOnVisibility: dependsOnValue => dependsOnValue === HistogramBinType.AUTOMATIC_WITH_BINS\n },\n 'customBins': {\n group,\n fieldType: \"json\",\n defaultValue: '[{\"to\": 10},{\"from\":10,\"to\":100},{\"from\":100}]',\n dependsOn: \"binType\",\n dependsOnVisibility: dependsOnValue => dependsOnValue === HistogramBinType.USER_DEFINED\n },\n 'prettyIntervalCount': {\n group,\n fieldType: \"number\",\n defaultValue: 4,\n dependsOn: \"binType\",\n dependsOnVisibility: dependsOnValue => dependsOnValue === HistogramBinType.INTERVAL_STEPS\n },\n 'sortBins': {\n group,\n fieldType: \"option\",\n editorConf: {\n optionValues: Object.values(SortingType),\n optionName: \"SortingType\",\n },\n defaultValue: SortingType.ASCENDING,\n visibility: !hideSort\n },\n 'bucketFormat': {\n group,\n fieldType: \"option\",\n defaultValue: TidyHistogramBucketFormat.INTERVAL,\n editorConf: {\n optionValues: Object.values(TidyHistogramBucketFormat),\n optionName: \"TidyHistogramBucketFormat\"\n }\n },\n \"intervalType\": {\n group,\n fieldType: 'option',\n defaultValue: TidyHistogramBucketType.RIGHT_CLOSED,\n editorConf: {\n optionValues: Object.values(TidyHistogramBucketType),\n optionName: \"TidyHistogramBucketType\"\n }\n },\n \"includeRowIds\": {\n fieldType: 'boolean',\n visibility: false,\n }\n }\n}\n\nexport const TidyHistogramBucketColName = \"bucket\";\nexport const TidyHistogramCountColName = \"count\";\nexport const TidyHistogramRowIdsName = \"rowIds\";\n","/* eslint @typescript-eslint/ban-ts-comment: 0 */ // --> OFF\n\nexport interface IScriptCallback {\n\n onSuccess: () => void;\n onError: (event: Event | string, source?: string, lineno?: number, colno?: number, error?: Error) => void;\n\n}\n\nexport class RemoteContainerUtils {\n\n public static loadScript(tenant: string | null, url: string, callback: IScriptCallback): void {\n\n if (tenant) {\n tenant = encodeURIComponent(tenant) + \"_\";\n } else {\n tenant = \"\";\n }\n\n url = url + (url.indexOf(\"?\") === -1 ? \"?\" : \"&\") + \"t=\" + tenant + new Date().getTime() /* cache busting */;\n\n console.log(\"[Plugin] setup remote plugin (load-script) [\" + url + \"]\");\n\n const element = document.createElement(\"script\");\n\n element.src = url;\n element.type = \"text/javascript\";\n element.async = true;\n\n element.onload = () => {\n callback.onSuccess();\n };\n\n element.onerror = (event: Event | string, source?: string, lineno?: number, colno?: number, error?: Error) => {\n callback.onError(event, source, lineno, colno, error);\n };\n\n document.head.appendChild(element);\n }\n\n public static loadModule(scope: string, module: string): () => Promise<any> {\n\n // An async function is a function that knows how to expect the possibility\n // of the await keyword being used to invoke asynchronous code.\n\n // So the async keyword is added to functions to tell them to return a promise\n // rather than directly returning the value.\n\n return async (): Promise<any> => {\n\n // Initializes the share scope. This fills it with known provided modules\n // from this build and all remotes.\n\n // @ts-ignore\n await __webpack_init_sharing__(\"default\");\n\n // or get the container somewhere else\n const container = (window as any)[scope];\n\n // Initialize the container, it may provide shared modules\n\n // @ts-ignore\n await container.init(__webpack_share_scopes__.default);\n const factory = await (window as any)[scope].get(module);\n\n const Module = factory();\n return Module;\n };\n }\n\n\n}","export class AlertDialogClasses {\n\n /**\n * Style applied to\n */\n static root = \"ic3AlertDialog-root\";\n\n /**\n * Style applied to\n */\n static formRoot = \"ic3AlertDialog-formRoot\";\n\n static message = \"ic3AlertDialog-message\";\n\n static warning = \"ic3AlertDialog-warning\";\n\n}\n\nexport declare type AlertDialogClassKey = keyof AlertDialogClasses;\n\n","import {FormFieldObject, Hook, IColorDef} from \"../PublicTemplateForm\";\nimport {TidyTableColumnSelector, UseDatetimeAxis} from \"../PublicTidyTableTypes\";\nimport {TidyHistogramOptions} from \"../PublicTidyHistogram\";\nimport {PublicAmCharts4Base} from \"../PublicAmCharts4Base\";\n\nexport enum AxisRangeType {\n LINE = \"single_line\",\n RANGE = 'range',\n LINE_PER_MEASURE = \"LINE_PER_MEASURE\"\n}\n\nexport enum GeoMapChartProjection {\n Albers = 'Albers',\n AlbersUsa = 'AlbersUsa',\n AzimuthalEqualArea = 'AzimuthalEqualArea',\n Eckert6 = 'Eckert6',\n EqualEarth = 'EqualEarth',\n Projection = 'Projection',\n Mercator = 'Mercator',\n Miller = 'Miller',\n NaturalEarth1 = 'NaturalEarth1',\n Orthographic = 'Orthographic',\n Stereographic = 'Stereographic',\n}\n\nexport enum GeoMapChartUnMatchedRegionStrategy {\n USE_DEFAULT_COLOR = 'USE_DEFAULT_COLOR',\n EXCLUDE_FROM_MAP = 'EXCLUDE_FROM_MAP',\n}\n\nexport enum Amcharts4LineSmoothMethod {\n NONE = \"none\",\n TENSION = \"tension\", // See https://www.amcharts.com/docs/v4/chart-types/xy-chart/#Smoothed_lines\n MONOTONE_X = \"monotoneX\", // See https://www.amcharts.com/docs/v4/chart-types/xy-chart/#Alternate_smoothing_algorithm\n MONOTONE_Y = \"monotoneY\" // See https://www.amcharts.com/docs/v4/chart-types/xy-chart/#Alternate_smoothing_algorithm\n}\n\nexport enum TrendLineType {\n\n MEAN = \"MEAN\",\n\n OLS = \"OLS\"\n\n}\n\nexport interface IStrokeStyleProperties extends FormFieldObject {\n /**\n * Stroke color of the border.\n */\n itemStrokeFill?: string;\n\n /**\n * Width of the border.\n */\n itemStrokeWidth: number;\n\n /**\n * Opacity of the border.\n */\n itemStrokeOpacity: number;\n}\n\nexport enum LegendPositionOption {\n \"bottom_left\" = \"bottom_left\",\n \"bottom_center\" = \"bottom_center\",\n \"bottom_right\" = \"bottom_right\",\n \"right_bottom\" = \"right_bottom\",\n \"right_middle\" = \"right_middle\",\n \"right_top\" = \"right_top\",\n \"top_right\" = \"top_right\",\n \"top_center\" = \"top_center\",\n \"top_left\" = \"top_left\",\n \"left_top\" = \"left_top\",\n \"left_middle\" = \"left_middle\",\n \"left_bottom\" = \"left_bottom\"\n}\n\nexport enum OverflowType {\n WRAP = 'WRAP',\n TRUNCATE = 'TRUNCATE',\n NONE = 'NONE'\n}\n\nexport enum CategoryAxisRotateLabels {\n YES = 'YES',\n NO = 'NO'\n}\n\nexport enum SeriesLabelsPosition {\n START = \"START\",\n MIDDLE = \"MIDDLE\",\n END = \"END\",\n OUTSIDE = \"OUTSIDE\"\n}\n\nexport enum SeriesType {\n LINE = \"LINE\",\n COLUMN = \"COLUMN\"\n}\n\nexport enum DrawSeriesOnAxis {\n LEFT = \"left\",\n RIGHT = \"right\"\n}\n\nexport interface IBulletShapeOptions extends FormFieldObject {\n bulletShapeWidth: number;\n bulletShapeHeight: number;\n}\n\nexport interface Am4PieSeriesOptions extends FormFieldObject, IStrokeStyleProperties {\n\n /**\n * Values.\n *\n * Data column (numeric) that defines the value of the slices.\n */\n value: TidyTableColumnSelector;\n\n /**\n * Tooltip.\n *\n * The text displayed as a tooltip on the slices.\n */\n chartCursorTooltipPie: string;\n\n /**\n * Sort Slices.\n *\n * Preferably, the slices of the donut chart are sorted large to small. Enable this options to sort the slices.\n */\n pieSeriesSortSlices: boolean;\n\n /**\n * Colors.\n *\n * Data column that defines the colors of the slices. Using the Category (see the Labels section) as default.\n */\n color?: TidyTableColumnSelector;\n}\n\nexport interface Am4PieLabelOptions extends FormFieldObject {\n\n /**\n * Category.\n *\n * Data column that identifies the slices in the pie chart.\n */\n category: TidyTableColumnSelector;\n\n /**\n * Text.\n *\n * The text displayed on the slices.\n */\n sliceLabelsText: string;\n\n /**\n * Max Width.\n *\n * Maximum width of the label.\n */\n sliceLabelsMaxWidth: number;\n\n /**\n * Overflow Type.\n *\n * What happens when the label is larger than the max width?\n */\n sliceLabelsOverflow?: OverflowType;\n\n /**\n * Align Labels.\n *\n * Align the labels to the left and to the right of the chart.\n */\n sliceLabelsAlignLabels: boolean;\n\n /**\n * Hide labels below this threshold. Can be a number (e.g., 100) or a percentage (e.g., 5%).\n */\n sliceLabelsHideThreshold?: string;\n}\n\nexport interface Am4LabelOptions extends FormFieldObject {\n\n /**\n * Text.\n *\n * The text displayed in the center of the chart.\n * Use a single space to show no text and disable the label.\n */\n labelText: string;\n\n labelTextAlign: 'start' | 'end' | 'middle';\n labelDy: number;\n labelDx: number;\n labelHasBackground: boolean;\n labelBackgroundColor?: IColorDef;\n labelBackgroundOpacity: number;\n labelHorizontalCenter: 'left' | 'middle' | 'right' | 'none';\n labelVerticalCenter: 'bottom' | 'middle' | 'top' | 'none';\n}\n\nexport interface Am4LegendOptions extends FormFieldObject {\n\n /**\n * Legend.\n */\n legendEnabled: boolean;\n\n /**\n * Legend Position.\n */\n legendPosition: LegendPositionOption;\n\n /**\n * Reverse Legend Order.\n *\n * Reverse the items in the legend.\n */\n legendOrderReversed: boolean;\n}\n\nexport interface Am4DonutLegendOptions extends Am4LegendOptions {\n\n /**\n * Legend Label.\n *\n * The HTML contents of the legend labels.\n */\n legendLabel: string;\n\n /**\n * Legend Value.\n *\n * Show a value in the legend next to the label. Leave blank to show no value. The value is rendered as HTML.\n */\n legendValue?: string;\n}\n\nexport interface Am4DonutOptions extends FormFieldObject {\n\n /**\n * Inner Radius.\n *\n * The inner radius of the donut as a percentage of the outer radius. Set to 0 to get a pie chart.\n */\n donutInnerRadius: number;\n\n /**\n * Radius.\n *\n * The radius of the chart as a percentage of the available space.\n */\n donutRadius: number;\n\n /**\n * Start Angle.\n *\n * The donut starts at this angle. \"The angle in degrees is a value between 0 and 360. Note, the angle starts\n * at 3 o'clock and rotates clockwise. An angle of 180 starts the donut at 9 o'clock.\n */\n donutStartAngle: number;\n\n /**\n * End Angle.\n *\n * The angle in degrees is a value between 0 and 360. Note, the angle starts at 3 o'clock and rotates clockwise.\n * An angle of 360 ends the donut at 3 o'clock.\n */\n donutEndAngle: number;\n}\n\nexport interface Am4GaugeHandOptions extends FormFieldObject {\n\n /**\n * Value.\n *\n * The hand will point to this value on the axis. Note, The gauge only considers the first row.\n */\n value: TidyTableColumnSelector;\n\n /**\n * Color.\n *\n * The color of the hand.\n */\n gaugeHandColor: string;\n\n gaugeHandInnerRadius: number;\n gaugeHandStartWidth: number;\n gaugeHandPinDisabled: boolean;\n gaugeHandPinRadius: number;\n}\n\nexport interface Am4GaugeAxisOptions extends FormFieldObject {\n\n /**\n * Minimum.\n *\n * Start value of the axis.\n */\n gaugeAxisMinimum: string;\n\n /**\n * Maximum.\n *\n * End value of the axis.\n */\n gaugeAxisMaximum: string;\n\n /**\n * Format.\n *\n * Format pattern. Examples: integer: `#`; two decimals: `#.00`; thousands/millions: `#a`; currency: `€#`.\n */\n gaugeAxisValueFormat?: string;\n\n /**\n * Min Label Distance.\n *\n * Minimum distance between axis labels.\n */\n gaugeAxisMinGridDistance: number;\n\n /**\n * Axis Ranges.\n *\n * JSON Axis Ranges. For example:\n *\n * <pre>\n * [\n * {\n * \"label\": \"low\",\n * \"start\": 0,\n * \"end\": 50,\n * \"color\": \"red\"\n * },\n * {\n * \"label\": \"high\",\n * \"start\": 50,\n * \"end\": 100,\n * \"color\": \"green\"\n * }\n * ]\n * </pre>\n */\n gaugeAxisRanges?: string;\n\n gaugeAxisShowLabels: boolean;\n gaugeAxisBentLabels: boolean;\n gaugeAxisSwapAxes: boolean;\n gaugeAxisLabelsRadius: number;\n gaugeAxisRadius: number;\n gaugeAxisRangesRadius: number;\n gaugeAxisRangeLabelsRadius: number;\n gaugeAxisRangeOpacity: number;\n}\n\nexport interface Am4GaugeOptions extends FormFieldObject {\n\n /**\n * Radius.\n *\n * The radius of the chart as a percentage of the available space.\n */\n gaugeRadius: number;\n\n gaugeInnerRadius: number;\n gaugeStartAngle: number;\n gaugeEndAngle: number;\n}\n\nexport interface Am4SimpleCategoryAxisOptions extends FormFieldObject {\n\n /**\n * Title Text.\n *\n * The title of the horizontal axis.\n *\n * [Bar Chart]\n *\n * Title Text.\n *\n * The title of the vertical axis.\n */\n xAxisTitleText?: string;\n\n /**\n * Label Spacing.\n *\n * Controls the minimum space between the labels.\n */\n xAxisLabelSpacing?: number;\n\n /**\n * Max Label Width.\n *\n * The maximum width in pixels for the labels.\n */\n xAxisLabelMaxWidth?: number;\n\n /**\n * Label Overflow.\n *\n * Choice of behavior when the label is larger than the max width.\n */\n xAxisLabelOverflow?: OverflowType;\n\n /**\n * Rotate Label.\n *\n * Rotate the labels on the category axis by 45 degrees.\n */\n xAxisRotateLabels?: CategoryAxisRotateLabels;\n\n /**\n * Cell Start Location.\n *\n * Value between 0 and 1 that indicates where the category starts on the grid.\n */\n xAxisCellStartLocation: number;\n\n /**\n * Cell End Location.\n *\n * Value between 0 and 1 that indicates where the category ends on the grid.\n */\n xAxisCellEndLocation: number;\n\n /**\n * Initial Zoom.\n *\n * The start index and the end index seperated by a comma. You can use negative values to get the index from the\n * end of the axis. E.g., `-10,-1` zooms to the last 10 items.\n */\n xAxisInitialZoom?: string;\n\n /**\n * In-place processing of the amCharts 4 category/date axis instance.\n *\n * <pre>\n * ( value: CategoryAxis | DateAxis, options?: Am4SimpleCategoryAxisOptions ) => void;\n * </pre>\n */\n xAxisPostRenderHook?: Hook<any, Am4SimpleCategoryAxisOptions>;\n\n /**\n * Cache the scrollbar state into local storage. The scrollbar state is kept when refreshing the dashboard.\n */\n xAxisSaveZoom?: boolean;\n}\n\nexport interface Am4ValueAxisOptions extends FormFieldObject {\n\n /**\n * Title Text.\n *\n * The title of the vertical axis.\n *\n * [Bar Chart]\n *\n * Title Text.\n *\n * The title of the horizontal axis.\n */\n yAxisTitleText?: string;\n\n /**\n * Minimum.\n *\n * The axis starts at this value.\n */\n yAxisMinimum?: number;\n\n /**\n * Maximum.\n *\n * The axis ends at this value.\n */\n yAxisMaximum?: number;\n\n /**\n * Adjust Minimum By.\n *\n * Expand the calculated axis range by this percentage, making the minimum smaller.\n */\n yAxisExtraMinimum?: number;\n\n /**\n * Adjust Maximum By.\n *\n * Expand the calculated axis range by this percentage, making the maximum larger.\n */\n yAxisExtraMaximum?: number;\n\n /**\n * Always Include Zero.\n *\n * Always show zero in the axis.\n */\n yAxisIncludeZero: boolean;\n\n /**\n * Show Numbers.\n *\n * Display the numbers next to the axis.\n */\n yAxisShowLabels: boolean;\n\n /**\n * Value Format.\n *\n * Format pattern. Examples: integer: `#`; two decimals: `#.00`; thousands/millions: `#a`; currency: `€#`.\n */\n yAxisValueFormat?: string;\n\n /**\n * Maximum number of decimals to allow when placing grid lines and labels on axis.\n *\n * Set it to 0 (zero) to force integer-only axis labels.\n */\n yAxisMaxPrecision?: number;\n\n /**\n * Minimum Grid Distance.\n *\n * The minimum distance between the grid lines.\n */\n yAxisMinGridDistance?: number;\n\n /**\n * Initial Zoom.\n *\n * The start value and the end value seperated by a comma.\n */\n yAxisInitialZoom?: string;\n\n /**\n * Show the grid lines perpendicular to the value axis.\n */\n yAxisShowGridLines: boolean;\n\n /**\n * In-place processing of the amCharts 4 category/date axis instance.\n *\n * <pre>\n * ( value: ValueAxis, options: Am4ValueAxisOptions ) => void;\n * </pre>\n */\n yAxisPostRenderHook?: Hook<any, Am4ValueAxisOptions>;\n\n /**\n * Cache the scrollbar state into local storage. The scrollbar state is kept when refreshing the dashboard.\n */\n yAxisSaveZoom?: boolean;\n}\n\nexport interface Am4DateAxisOptions extends FormFieldObject, Pick<Am4ValueAxisOptions, \"yAxisTitleText\" | \"yAxisMinGridDistance\" | \"yAxisShowGridLines\" | \"yAxisSaveZoom\"> {\n /**\n * In-place processing of the amCharts 4 date axis instance.\n *\n * <pre>\n * ( value: ValueAxis, options: Am4DateAxisOptions ) => void;\n * </pre>\n */\n yAxisPostRenderHook?: Hook<any, Am4DateAxisOptions>;\n}\n\nexport interface Am4SimpleColumnSeriesOptions extends FormFieldObject, IStrokeStyleProperties {\n\n /**\n * Value.\n *\n * Display the distribution of the values in this column.\n */\n value: TidyTableColumnSelector;\n\n /**\n * Group By.\n *\n * Distribution for each group.\n */\n groupBy?: TidyTableColumnSelector;\n\n /**\n * Column Color.\n *\n * A column with colors for the columns in the chart.\n */\n columnSeriesColor?: TidyTableColumnSelector;\n\n /**\n * Tooltip.\n *\n * Show this text when hovering the column in the chart.\n */\n chartCursorTooltipColumn: string;\n\n /**\n * Legend Text.\n *\n * The name of the column series in the legend.\n */\n legendColumnSeriesLabel?: string;\n\n /**\n * Show Value in Legend.\n *\n * Show values in the legend when the user moves the cursor over the chart.\n */\n legendColumnSeriesShowValue: boolean;\n\n /**\n * Clustered.\n *\n * Show the columns in a group next to each other. If false, the chart renders them layered on top of each other.\n */\n clustered: boolean;\n\n /**\n * Fill Opacity.\n *\n * Opacity of the columns fill (excluding the border).\n */\n columnFillOpacity: number;\n}\n\nexport interface Am4ValueLabelOptions extends FormFieldObject {\n\n /**\n * Value Labels.\n *\n * Add a value label for each item in the chart.\n */\n seriesLabelsEnabled: boolean;\n\n /**\n * Label Text.\n */\n seriesLabelsText: string;\n\n /**\n * Label Position.\n *\n * Where to show the label on the item.\n */\n seriesLabelsPosition: SeriesLabelsPosition;\n\n /**\n * Hide Small Labels.\n *\n * Hide labels that don't fit.\n */\n seriesLabelsHideOversize: boolean;\n\n /**\n * Stack Top Text.\n *\n * Text displayed on top of the stack.\n */\n seriesLabelsStackTotalText?: string;\n}\n\nexport interface Am4SecondValueLabelOptions extends FormFieldObject {\n /**\n * @see Am4ValueLabelOptions\n */\n seriesLabelsEnabledSecond: boolean;\n\n /**\n * @see Am4ValueLabelOptions\n */\n seriesLabelsTextSecond: string;\n\n /**\n * @see Am4ValueLabelOptions\n */\n seriesLabelsPositionSecond: SeriesLabelsPosition;\n\n /**\n * @see Am4ValueLabelOptions\n */\n seriesLabelsHideOversizeSecond: boolean;\n\n /**\n * @see Am4ValueLabelOptions\n */\n seriesLabelsStackTotalTextSecond?: string;\n}\n\nexport interface Am4ChartCursorOptions extends FormFieldObject {\n\n /**\n * Chart Cursor.\n */\n chartCursorEnabled: boolean;\n\n /**\n * Chart Cursor Behavior.\n *\n * Action performed when the user drags the cursor.\n */\n chartCursorBehaviour: \"zoomX\" | \"zoomY\" | \"zoomXY\" | \"selectX\" | \"selectY\" | \"selectXY\" | \"panX\" | \"panY\" | \"panXY\" | \"none\";\n}\n\nexport interface Am4ScrollbarOptions extends FormFieldObject {\n\n /**\n * Horizontal Scrollbar.\n */\n EnableScrollbarX: boolean;\n\n /**\n * Horizontal Scrollbar Plot.\n *\n * Show the first series as a plot in the horizontal scrollbar.\n */\n ScrollbarXShowSeries: boolean;\n\n /**\n * Vertical Scrollbar.\n */\n EnableScrollbarY: boolean;\n\n /**\n * Vertical Scrollbar Plot.\n *\n * Show the first series as a plot in the vertical scrollbar.\n */\n ScrollbarYShowSeries: boolean;\n}\n\nexport interface Am4SankeyFlowOptions extends FormFieldObject {\n\n /**\n * Value.\n *\n * Flow values.\n */\n value: TidyTableColumnSelector;\n\n /**\n * Link Fill Opacity.\n *\n * Value between 0 and 1 for the opacity of the links/flows between the nodes.\n */\n linkFillOpacity: number;\n\n /**\n * Flow Tension.\n *\n * Set to 1 for straight flows. Smaller values make the flows curve more.\n */\n flowTension: number;\n\n /**\n * Color Mode.\n */\n colorMode: 'solid' | 'gradient' | 'fromNode' | 'toNode';\n\n /**\n * The tooltip for the node\n */\n flowTooltip?: string;\n}\n\nexport interface Am4SankeyNodeOptions extends FormFieldObject, IStrokeStyleProperties {\n\n /**\n * Width.\n *\n * Depending on the orientation, the width (if horizontal) or height (if vertical) of the node.\n */\n nodeWidth: number;\n\n /**\n * Tooltip for the node\n */\n nodeTooltip?: string;\n}\n\nexport interface Am4SankeyDiagramOptions extends FormFieldObject {\n\n /**\n * Orientation.\n *\n * Show the Sankey from left to right if 'Horizontal' and from top to bottom if 'Vertical'.\n */\n orientation: 'horizontal' | 'vertical';\n\n /**\n * If true, the first column describes the from nodes, and the second column the to nodes.\n */\n useFromToDataDefinition: boolean;\n}\n\nexport interface Am4TreeMapSeriesOptions extends FormFieldObject, IStrokeStyleProperties {\n\n /**\n * First Level.\n *\n * The first level contains the names for the items.\n */\n level0: TidyTableColumnSelector;\n\n /**\n * Second Level.\n *\n * Adds a hierarchy to the first level.\n */\n level1?: TidyTableColumnSelector;\n\n /**\n * Values.\n *\n * Sizes of the boxes.\n */\n value: TidyTableColumnSelector;\n\n /**\n * Color.\n *\n * Column containing colors for the tree items.\n */\n treemapColor?: TidyTableColumnSelector;\n\n /**\n * Labels when labelType is 'html'. Expression for the labels on the tree items.\n */\n labelExpressionHTML: string;\n\n /**\n * Labels when labelType is 'text'. Expression for the labels on the tree items.\n */\n labelExpressionText: string;\n\n /**\n * Label Type.\n *\n * Render the label as text or as HTML.\n */\n labelType: \"html\" | \"text\";\n\n /**\n * Label Overflow.\n *\n * Choice of behavior when the label is larger than the max width.\n */\n labelOverflow?: OverflowType;\n\n /**\n * Tooltips.\n *\n * Expression for the tooltip when hovering a tree item.\n */\n tooltipExpression: string;\n\n /**\n * Corner Radius.\n */\n cornerRadius: number;\n\n /**\n * Layout Algorithm.\n *\n * The algorithm used to divide the area into squares based on their values.\n */\n layoutAlgorithm: \"binaryTree\" | \"dice\" | \"slice\" | \"sliceDice\" | \"squarify\";\n}\n\nexport interface Am4GeoSeriesOptions extends FormFieldObject {\n\n /**\n * Region.\n *\n * Column with [ISO-2 codes](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements)\n * (e.g., US, CH, GB, FR). Note that provinces, regions, departments are available as well (e.g., FR-30).\n */\n region: TidyTableColumnSelector;\n\n /**\n * Region Click Column.\n *\n * If defined, the column that is used to fire the region-click event.\n */\n hitColumn?: TidyTableColumnSelector;\n\n /**\n * Map.\n *\n * The map displayed by the chart. Use any URL to access your own GeoJSON file\n * (e.g., https://customer.com/world.json).\n */\n mapUrl: string;\n\n /**\n * Map Projection.\n */\n mapProjection: GeoMapChartProjection;\n\n /**\n * Initial Zoom.\n *\n * To set the currently displayed zoom open the widget's menu (top right) and click on 'Set Zoom & Center'.\n */\n initialZoom?: number;\n\n /**\n * Initial Latitude.\n *\n * To set the currently displayed latitude open the widget's menu (top right) and click on 'Set Zoom & Center'.\n */\n initialLatitude?: number;\n\n /**\n * Initial Longitude.\n *\n * To set the currently displayed longitude open the widget's menu (top right) and click on 'Set Zoom & Center'.\n */\n initialLongitude?: number;\n\n /**\n * Region Tooltip.\n *\n * The region column is the expression default column.\n */\n tooltip?: string;\n\n /**\n * Unmatched Regions Strategy.\n *\n * Used for missing map regions in the query.\n */\n unmatchedRegionStrategy: GeoMapChartUnMatchedRegionStrategy;\n\n /**\n * Excluded Regions.\n *\n * A comma separated list of country codes that will be excluded from the map (e.g., US, CH, GB).\n */\n excludedRegions?: string;\n\n /**\n * Draggable.\n */\n draggable: boolean;\n\n /**\n * Zoomable.\n */\n zoomable: boolean;\n\n /**\n * Region Color.\n *\n * A column with the colors of the regions.\n */\n regionColorColumn?: TidyTableColumnSelector;\n\n /**\n * Default Region Color.\n *\n * Color used for regions without a value in the 'Region Color' column.\n */\n regionColor: IColorDef;\n\n /**\n * Background Color (Water).\n */\n backgroundColor?: IColorDef;\n}\n\nexport interface Am4SecondValueAxisOptions extends FormFieldObject {\n\n /**\n * Title Text.\n *\n * The title of the vertical axis.\n */\n yAxisSecondTitleText?: string;\n\n /**\n * Minimum.\n *\n * The axis starts at this value.\n */\n yAxisSecondMinimum?: number;\n\n /**\n * Maximum.\n *\n * The axis end at this value.\n */\n yAxisSecondMaximum?: number;\n\n /**\n * Adjust Minimum By.\n *\n * Expand the calculated axis range by this percentage, making the minimum smaller.\n */\n yAxisSecondExtraMinimum?: number;\n\n /**\n * Adjust Maximum By.\n * Expand the calculated axis range by this percentage, making the maximum larger.\n */\n yAxisSecondExtraMaximum?: number;\n\n /**\n * Always Include Zero.\n *\n * Always show zero in the axis.\n */\n yAxisSecondIncludeZero: boolean;\n\n /**\n * Show Numbers.\n *\n * Display the numbers next to the axis.\n */\n yAxisSecondShowLabels: boolean;\n\n /**\n * Value Format.\n *\n * Format pattern. Examples: integer: `#`; two decimals: `#.00`; thousands/millions: `#a`; currency: `€#`.\n */\n yAxisSecondValueFormat?: string;\n\n /**\n * Maximum number of decimals to allow when placing grid lines and labels on axis.\n *\n * Set it to 0 (zero) to force integer-only axis labels.\n */\n yAxisSecondMaxPrecision?: number;\n\n /**\n * Minimum Grid Distance.\n *\n * The minimum distance between the grid lines.\n */\n yAxisSecondMinGridDistance?: number;\n\n /**\n * Initial Zoom.\n *\n * The start value and the end value seperated by a comma.\n */\n yAxisSecondInitialZoom?: string;\n\n /**\n * In-place processing of the amCharts 4 category/date axis instance.\n *\n * <pre>\n * ( value: ValueAxis, options: Am4SecondValueAxisOptions ) => void;\n * </pre>\n */\n yAxisSecondPostRenderHook?: Hook<any, Am4SecondValueAxisOptions>;\n}\n\nexport interface Am4BubbleSeriesOptions extends FormFieldObject, IStrokeStyleProperties {\n\n /**\n * Labels.\n *\n * Names for the bubbles.\n */\n label: TidyTableColumnSelector;\n\n /**\n * X-Values.\n *\n * The x-coordinates of the bubbles.\n */\n valueX: TidyTableColumnSelector;\n\n /**\n * Y-Values.\n *\n * The y-coordinates of the bubbles.\n */\n valueY: TidyTableColumnSelector;\n\n /**\n * Bubble Size\n */\n bubbleSize?: TidyTableColumnSelector;\n\n /**\n * Group.\n *\n * Create a new series for each group.\n */\n group?: TidyTableColumnSelector;\n\n /**\n * Color.\n *\n * Color of the item in the scatter plot.\n */\n scatterSeriesColor?: TidyTableColumnSelector;\n\n /**\n * Tooltip.\n *\n * The text displayed as a tooltip on the points.\n */\n chartCursorTooltipScatter: string;\n\n /**\n * Min Bubble Size.\n *\n * The minimum bubble size in pixels. The bubble with the smallest value for size gets this size.\n */\n minBubbleSize: number;\n\n /**\n * Max Bubble Size.\n *\n * The maximum bubble size in pixels. The bubble with the largest value for size gets this size.\n */\n maxBubbleSize: number;\n\n /**\n * Fill Opacity.\n */\n fillOpacity: number;\n}\n\nexport interface Am4ScatterTrendLineOptions extends FormFieldObject {\n\n /**\n * Trend Line.\n */\n trendLineEnabled: boolean;\n\n /**\n * Trend Line Color.\n *\n * Column containing the color for the trend line.\n */\n trendLineColor?: IColorDef;\n\n /**\n * Stroke Dash Array.\n *\n * Comma separated list of dash-lengths and gap-lengths. Use 0 for solid line.\n */\n trendLineStrokeDashArray: string;\n\n /**\n * Show in Legend.\n *\n * Display the trend line in the legend (if the legend is enabled).\n */\n trendLineShowInLegend: boolean;\n\n /**\n * Per Group.\n *\n * Display a trend line for each group?\n */\n trendLinePerGroup: boolean;\n}\n\nexport interface Am4CategoryDateAxisOptions extends FormFieldObject {\n\n /**\n * If we have (date)times available, then\n * YES -> always use them\n * NO -> never use them\n * AUTO -> use them if the level is a date or datetime (in MDX, these are levels of type DAY, HOUR, MINUTE, SECOND).\n */\n useDatetimeAxis: UseDatetimeAxis;\n\n /**\n * Axis.\n *\n * Displayed on the x-axis.\n *\n * [Scatter Plot Chart]\n *\n * Labels.\n *\n * Column with the label for the point.\n *\n * [Bar Chart]\n *\n * Axis.\n *\n * Displayed on the y-axis.\n *\n * [Stacked Bar Chart]\n *\n * Axis.\n *\n * Displayed on the y-axis.\n */\n axis: TidyTableColumnSelector;\n\n /**\n * Group.\n *\n * Create a new series for each group.\n */\n group?: TidyTableColumnSelector;\n\n /**\n * Level.\n *\n * Adds an extra level to the x-axis.\n *\n * [Bar Chart]\n *\n * Level.\n *\n * Adds an extra level to the y-axis.\n *\n * [Stacked Bar Chart]\n *\n * Level.\n *\n * Adds an extra level to the y-axis.\n */\n level?: TidyTableColumnSelector;\n\n /**\n * Label Text.\n *\n * Labels of the horizontal axis. Does not work with a date axis.\n *\n * [Bar Chart]\n *\n * Label Text.\n *\n * The labels of the vertical axis. Does not work with a date axis.\n */\n xAxisLabelsText: string;\n\n /**\n * Label Tooltip.\n *\n * The HTML contents of the axis tooltip when the user hovers the chart and cursor is active.\n * Does not work with a date axis.\n */\n xAxisLabelTooltipText: string;\n\n /**\n * The date format for the labels that show when the user hovers over the chart with a chart cursor.\n * Leave undefined to use the axis-date format.\n * Read more about the format codes here: https://www.amcharts.com/docs/v4/concepts/formatters/formatting-date-time/#Format_codes\n */\n xAxisLabelTooltipDateFormat?: string;\n\n /**\n * Title Text.\n *\n * The title of the horizontal axis.\n *\n * [Bar Chart]\n *\n * Title Text.\n *\n * The title of the vertical axis\n */\n xAxisTitleText?: string;\n\n /**\n * Label Spacing.\n *\n * Controls the minimum space between the labels.\n */\n xAxisLabelSpacing?: number;\n\n /**\n * Max Label Width.\n *\n * The maximum width in pixels for the labels.\n */\n xAxisLabelMaxWidth?: number;\n\n /**\n * Label Overflow.\n *\n * Choice of behavior when the label is larger than the max width.\n */\n xAxisLabelOverflow?: OverflowType;\n\n /**\n * Rotate Label.\n *\n * Rotate the labels on the category axis by 45 degrees.\n */\n xAxisRotateLabels?: CategoryAxisRotateLabels;\n\n /**\n * Level Label.\n *\n * Edit the HTML of the labels in the levels.\n */\n xAxisLevelLabelsText: string;\n\n /**\n * Cell Start Location.\n *\n * Value between 0 and 1 that indicates where the category starts on the grid.\n */\n xAxisCellStartLocation: number;\n\n /**\n * Cell End Location.\n *\n * Value between 0 and 1 that indicates where the category ends on the grid.\n */\n xAxisCellEndLocation: number;\n\n /**\n * Label Type.\n *\n * Render the label as text or as HTML.\n */\n xAxisLabelType: \"html\" | \"text\";\n\n /**\n * Initial Zoom.\n *\n * The start index and the end index seperated by a comma. You can use negative values to get the index from the\n * end of the axis. E.g., `-10,-1` zooms to the last 10 items.\n */\n xAxisInitialZoom?: string;\n\n /**\n * Show the grid lines perpendicular to the category axis.\n */\n xAxisShowGridLines: boolean;\n\n /**\n * In-place processing of the amCharts 4 category/date axis instance.\n *\n * <pre>\n * ( value: CategoryAxis | DateAxis, options: Am4CategoryDateAxisOptions ) => void;\n * </pre>\n */\n xAxisPostRenderHook?: Hook<any, Am4CategoryDateAxisOptions>;\n\n /**\n * Cache the scrollbar state into local storage. The scrollbar state is kept when refreshing the dashboard.\n */\n xAxisSaveZoom?: boolean;\n}\n\nexport interface Am4ValueAxisRangeOptions extends FormFieldObject {\n\n /**\n * Y-Axis Range.\n *\n * Display a line or a ranged fill/band on the y-axis.\n *\n * [Bar Chart]\n *\n * X-Axis Range.\n *\n * Display a line or a ranged fill / band on the x-axis.\n *\n * [Stacked Bar Chart]\n *\n * X-Axis Range.\n *\n * Display a line or a ranged fill / band on the x-axis.\n */\n axisRangeEnabled: boolean;\n\n /**\n * Type.\n */\n axisRangeType: AxisRangeType;\n\n /**\n * Start Value.\n *\n * Starting value of the range or value of the line.\n */\n axisRangeStart: string;\n\n /**\n * End Value.\n *\n * Ending value for the range.\n */\n axisRangeEnd: string;\n\n /**\n * Label.\n *\n * Label to display on the range.\n */\n axisRangeLabel: string;\n\n /**\n * Inside.\n *\n * If enabled, the range renders the label inside the chart.\n */\n axisRangeLabelInside: boolean;\n\n /**\n * Color.\n *\n * The color of the ranged fill / band or line.\n */\n axisRangeColor?: IColorDef;\n\n /**\n * Range Opacity.\n *\n * The opacity of the ranged fill / band.\n */\n axisRangeFillOpacity: number;\n\n /**\n * Stroke Opacity.\n *\n * The opacity of the line.\n */\n axisRangeStrokeOpacity: number;\n\n /**\n * Stroke Width.\n *\n * The width of the line.\n */\n axisRangeStrokeWidth: number;\n\n /**\n * Stroke Dash Array.\n *\n * Comma separated list of dash-lengths and gap-lengths. Use 0 for solid line.\n */\n axisRangeStrokeDashArray: string;\n\n /**\n * Above.\n *\n * If enabled, the chart renders the range or line above the series.\n */\n axisRangeAboveGrid: boolean;\n}\n\nexport interface Am4LineSeriesOptions extends FormFieldObject, IStrokeStyleProperties, IBulletShapeOptions {\n\n /**\n * [Line Chart]\n *\n * Line Values.\n *\n * A column with values for the line.\n *\n * [Area Chart]\n *\n * Area Values.\n *\n * The values for the area series.\n *\n * [Stacked Area Chart]\n *\n * Area Values.\n *\n * A column with values for the stacked area chart.\n */\n lineValue: TidyTableColumnSelector[];\n\n /**\n * Shape.\n *\n * Use this column to change the shape of the data-point.\n */\n lineBulletShape?: TidyTableColumnSelector;\n\n /**\n * Hide Line Bullets\n */\n hideLineBullets: boolean;\n\n /**\n * Tooltip.\n *\n * The text displayed as a tooltip on the line.\n */\n chartCursorTooltipLine: string;\n\n /**\n * Legend Text.\n *\n * The name of the line series in the legend.\n */\n legendLineSeriesLabel?: string;\n\n /**\n * Show Value in Legend.\n *\n * Show values in the legend when the user moves the cursor over the chart.\n */\n legendLineSeriesShowValue: boolean;\n\n /**\n * Area Fill Opacity.\n *\n * A value on [0, 1], where 0 is fully transparent and 1 is no transparency.\n */\n areaFillOpacity: number;\n\n /**\n * Line Color.\n *\n * A column with colors for the line and bullets in the chart.\n */\n lineSeriesColor?: TidyTableColumnSelector;\n\n /**\n * If true, connect the lines over empty data points.\n */\n connectLineSeries: boolean;\n\n smoothLineMethod: Amcharts4LineSmoothMethod;\n\n /**\n * Smooth the line chart. The tension is a value between 0 (no tension) and 1 (maximum tension).\n */\n smoothLineTensionX: number;\n smoothLineTensionY: number;\n}\n\nexport interface Am4ComboSeriesOptions extends FormFieldObject, IStrokeStyleProperties {\n\n /**\n * Values for the left series. Named line due to legacy.\n */\n lineValue: TidyTableColumnSelector[];\n\n /**\n * Values for the right series. Named column due to legacy.\n */\n columnValue: TidyTableColumnSelector[];\n\n /**\n * Draw the line-series in this axis. Defaults to \"left\".\n */\n lineSeriesDrawOnAxis: DrawSeriesOnAxis;\n\n /**\n * Draw the column-series in this axis. Defaults to \"right\".\n */\n columnSeriesDrawOnAxis: DrawSeriesOnAxis;\n\n /**\n * Type of the left series. Line / Column.\n */\n seriesTypeLeft: SeriesType;\n\n /**\n * Type of the right series. Line / Column.\n */\n seriesTypeRight: SeriesType;\n\n // Options if left series is LINE. @see Am4LineSeriesOptions\n lineBulletShapeLeft?: TidyTableColumnSelector;\n hideLineBulletsLeft: boolean;\n chartCursorTooltipLineLeft: string;\n legendLineSeriesLabelLeft?: string;\n legendLineSeriesShowValueLeft: boolean;\n areaFillOpacityLeft: number;\n lineSeriesColorLeft?: TidyTableColumnSelector;\n connectLineSeriesLeft: boolean;\n smoothLineMethodLeft: Amcharts4LineSmoothMethod;\n smoothLineTensionXLeft: number;\n smoothLineTensionYLeft: number;\n // Options if left series is COLUMN. @see Am4ColumnSeriesOptions\n chartCursorTooltipColumnLeft: string;\n legendColumnSeriesLabelLeft?: string;\n legendColumnSeriesShowValueLeft: boolean;\n columnSeriesColorLeft?: TidyTableColumnSelector;\n\n // Options if right series is LINE. @see Am4LineSeriesOptions\n lineBulletShapeRight?: TidyTableColumnSelector;\n hideLineBulletsRight: boolean;\n chartCursorTooltipLineRight: string;\n legendLineSeriesLabelRight?: string;\n legendLineSeriesShowValueRight: boolean;\n areaFillOpacityRight: number;\n lineSeriesColorRight?: TidyTableColumnSelector;\n connectLineSeriesRight: boolean;\n smoothLineMethodRight: Amcharts4LineSmoothMethod;\n smoothLineTensionXRight: number;\n smoothLineTensionYRight: number;\n // Options if right series is COLUMN. @see Am4ColumnSeriesOptions\n chartCursorTooltipColumnRight: string;\n legendColumnSeriesLabelRight?: string;\n legendColumnSeriesShowValueRight: boolean;\n columnSeriesColorRight?: TidyTableColumnSelector;\n\n}\n\nexport interface Am4ColumnSeriesOptions extends FormFieldObject, IStrokeStyleProperties {\n\n /**\n * [Column Chart]\n *\n * Column Values.\n *\n * A column with values for the series.\n *\n * [Bar Chart]\n *\n * Bar Values.\n *\n * A column with values for the bar series.\n *\n * [Stacked Bar Chart]\n *\n * Bar Values.\n *\n * A column with values for the stacked bar series.\n *\n * [Stacked Column Chart]\n *\n * Values Column.\n *\n * A column with values for the stacked column series.\n */\n columnValue: TidyTableColumnSelector[];\n\n /**\n * Tooltip.\n *\n * Show this text when hovering the column in the chart.\n */\n chartCursorTooltipColumn: string;\n\n /**\n * Legend Text.\n *\n * The name of the column series in the legend.\n */\n legendColumnSeriesLabel?: string;\n\n /**\n * Show Value in Legend.\n *\n * Display values in the legend when the user moves the cursor over the chart.\n */\n legendColumnSeriesShowValue: boolean;\n\n /**\n * Column Color.\n *\n * A column with colors for the columns in the chart.\n */\n columnSeriesColor?: TidyTableColumnSelector;\n}\n\nexport interface Am4GanttSeriesOptions extends Omit<Am4ColumnSeriesOptions, \"columnValue\" | \"legendColumnSeriesShowValue\"> {\n\n /**\n * Start datetime values of the gantt series.\n */\n startValue: TidyTableColumnSelector[];\n\n /**\n * End datetime values of the gantt series.\n */\n endValue: TidyTableColumnSelector[];\n\n /**\n * If true, show groups in the same lane instead of in their separate lanes.\n */\n showGroupsOnSingleLane?: boolean;\n\n}\n\nexport interface Am4DivergentAxisLabelOptions extends FormFieldObject {\n\n /**\n * The text to show in the left label. Use a single space to not show the label.\n */\n leftLabelText: string;\n\n /**\n * The text to show in the right label. Use a single space to not show the label.\n */\n rightLabelText: string;\n\n}\n\nexport interface Am4DivergentBarSeriesOptions extends FormFieldObject, IStrokeStyleProperties {\n\n /**\n * Values for the series on the left\n */\n leftValue: TidyTableColumnSelector;\n\n /**\n * Values for the series on the right\n */\n rightValue: TidyTableColumnSelector;\n\n /**\n * Tooltip.\n *\n * Show this text when hovering the column in the chart.\n */\n chartCursorTooltipColumn: string;\n\n /**\n * Legend Text.\n *\n * The name of the column series in the legend.\n */\n legendColumnSeriesLabel?: string;\n\n /**\n * Show Value in Legend.\n *\n * Display values in the legend when the user moves the cursor over the chart.\n */\n legendColumnSeriesShowValue: boolean;\n}\n\nexport interface Am4TrendLineOptions extends FormFieldObject {\n\n trendLineType: TrendLineType;\n\n /**\n * Trend Line\n */\n trendLineEnabled: boolean;\n\n /**\n * Stroke Dash Array.\n *\n * Comma separated list of dash-lengths and gap-lengths. Use 0 for solid line.\n */\n trendLineStrokeDashArray: string;\n\n /**\n * Show in Legend.\n *\n * Display the trend line in the legend (if the legend is enabled).\n */\n trendLineShowInLegend: boolean;\n\n /**\n * Trend Line Color.\n *\n * Column containing the color for the trend line.\n */\n trendLineColor?: IColorDef;\n\n /**\n * Per Group.\n *\n * Display a trend line for each group?\n */\n trendLinePerGroup: boolean;\n}\n\nexport interface Am4ScatterSeriesOptions extends FormFieldObject, IStrokeStyleProperties, IBulletShapeOptions {\n\n /**\n * Labels.\n *\n * Column with the names for the scatter points.\n */\n label: TidyTableColumnSelector;\n\n /**\n * X-Values\n *\n * Column with the x-coordinates for the scatter points.\n */\n valueX: TidyTableColumnSelector;\n\n /**\n * Y-Values\n *\n * Column with the y-coordinates for the scatter points.\n */\n valueY: TidyTableColumnSelector;\n\n /**\n * Group.\n *\n * Create a new series for each group.\n */\n group?: TidyTableColumnSelector;\n\n /**\n * Color.\n *\n * Color of the item in the scatter plot.\n */\n scatterSeriesColor?: TidyTableColumnSelector;\n\n /**\n * Shape.\n *\n * Use this column to change the shape of the data-point.\n */\n scatterBulletShape?: TidyTableColumnSelector;\n\n /**\n * Tooltip.\n *\n * The text displayed as a tooltip on the points.\n */\n chartCursorTooltipScatter: string;\n}\n\nexport interface Am4ChartOptions extends FormFieldObject {\n\n widgetVariant?: string;\n\n /**\n * Hook to change the chart series, axes and other components. This hook is called for each data or options update\n * and after all the component have updated. You can use it to change the settings in the chart.\n *\n * <pre>\n * ( value: PublicAmchartsBase<amcharts4.Chart, options> ) => void;\n *\n * value.getChart() is returning an instance of amChart 4 class\n * whose name is available in chart options below.\n * </pre>\n */\n postRenderHook?: Hook<PublicAmCharts4Base<any, any>, any>;\n\n /**\n * Called once, directly after the chart is created.\n *\n * <pre>\n * ( chart: amcharts4.Chart, options: Am4ChartOptions ) => void;\n * </pre>\n */\n onChartCreatedHook?: Hook<any, Am4ChartOptions>;\n\n}\n\n/**\n * The corresponding AmCharts 4 chart class is PieChart.\n */\nexport type AmCharts4DonutChartOptions =\n & Am4PieSeriesOptions\n & Am4PieLabelOptions\n & Am4LabelOptions\n & Am4DonutLegendOptions\n & Am4DonutOptions\n & Am4ChartOptions\n ;\n\n/**\n * The corresponding AmCharts 4 chart class is GaugeChart.\n */\nexport type AmCharts4GaugeChartOptions =\n & Am4GaugeHandOptions\n & Am4GaugeAxisOptions\n & Am4LabelOptions\n & Am4GaugeOptions\n & Am4ChartOptions\n ;\n\n/**\n * The corresponding AmCharts 4 chart class is XYChart.\n */\nexport type AmCharts4HistogramOptions =\n Am4SimpleCategoryAxisOptions\n & Am4ValueAxisOptions\n & Am4SimpleColumnSeriesOptions\n & Am4ValueLabelOptions\n & Am4ChartCursorOptions\n & Am4ScrollbarOptions\n & Am4ChartOptions\n & Am4LegendOptions\n & TidyHistogramOptions\n ;\n\n/**\n * The corresponding AmCharts 4 chart class is SankeyDiagram.\n */\nexport type AmCharts4SankeyDiagramOptions =\n Am4SankeyFlowOptions\n & Am4SankeyNodeOptions\n & Am4SankeyDiagramOptions\n & Am4ChartOptions\n ;\n\n/**\n * The corresponding AmCharts 4 chart class is TreeMap.\n */\nexport type AmCharts4TreemapOptions =\n Am4ChartOptions\n & Am4LegendOptions\n & Am4TreeMapSeriesOptions\n ;\n\n/**\n * The corresponding AmCharts 4 chart class is MapChart.\n */\nexport type GeoMapChartOptions =\n Am4GeoSeriesOptions\n ;\n\n/**\n * The corresponding AmCharts 4 chart class is XYChart.\n */\nexport type AmCharts4BubbleChartOptions =\n Am4SecondValueAxisOptions\n & Am4ValueAxisOptions\n & Am4BubbleSeriesOptions\n & Am4ValueLabelOptions\n & Am4ChartCursorOptions\n & Am4ScatterTrendLineOptions\n & Am4ScrollbarOptions\n & Am4LegendOptions\n & Am4ChartOptions\n ;\n\n/**\n * The corresponding AmCharts 4 chart class is XYChart.\n */\nexport type AmCharts4ComboChartOptions =\n & Am4CategoryDateAxisOptions\n & Am4ValueAxisOptions\n & Am4SecondValueAxisOptions\n & Am4ComboSeriesOptions\n & Am4LegendOptions\n & Am4ChartCursorOptions\n & Am4ScrollbarOptions\n & Am4ChartOptions\n & Am4ValueLabelOptions\n & Am4SecondValueLabelOptions\n & Am4ValueAxisRangeOptions\n ;\n\nexport type AmCharts4CoordinateChartOptions =\n Am4TrendLineOptions\n ;\n\n/**\n * The corresponding AmCharts 4 chart class is XYChart.\n */\nexport type AmCharts4RegularAreaChartOptions =\n & Am4CategoryDateAxisOptions\n & Am4ValueAxisOptions\n & Am4LineSeriesOptions\n & Am4LegendOptions\n & Am4ValueLabelOptions\n & Am4ChartCursorOptions\n & Am4TrendLineOptions\n & Am4ScrollbarOptions\n & Am4ValueAxisRangeOptions\n & Am4ChartOptions\n ;\n\n/**\n * The corresponding AmCharts 4 chart class is XYChart.\n */\nexport type AmCharts4RegularBarChartOptions =\n & Am4CategoryDateAxisOptions\n & Am4ValueAxisOptions\n & Am4ColumnSeriesOptions\n & Am4LegendOptions\n & Am4ValueLabelOptions\n & Am4ChartCursorOptions\n & Am4TrendLineOptions\n & Am4ScrollbarOptions\n & Am4ValueAxisRangeOptions\n & Am4ChartOptions\n ;\n\n/**\n * The corresponding AmCharts 4 chart class is XYChart.\n */\nexport type AmCharts4GanttChartOptions =\n & Am4CategoryDateAxisOptions\n & Am4DateAxisOptions\n & Am4GanttSeriesOptions\n & Am4LegendOptions\n & Am4ValueLabelOptions\n & Am4ChartCursorOptions\n & Am4ScrollbarOptions\n & Am4ChartOptions\n ;\n\n/**\n * The corresponding AmCharts 4 chart class is XYChart.\n */\nexport type AmCharts4DivergentBarChartOptions =\n & Am4CategoryDateAxisOptions\n & Am4ValueAxisOptions\n & Am4DivergentBarSeriesOptions\n & Am4LegendOptions\n & Am4ValueLabelOptions\n & Am4ChartCursorOptions\n & Am4ScrollbarOptions\n & Am4ValueAxisRangeOptions\n & Am4ChartOptions\n & Am4DivergentAxisLabelOptions\n ;\n\n/**\n * The corresponding AmCharts 4 chart class is XYChart.\n */\nexport type AmCharts4RegularColumnChartOptions =\n & Am4CategoryDateAxisOptions\n & Am4ValueAxisOptions\n & Am4ValueAxisRangeOptions\n & Am4ColumnSeriesOptions\n & Am4ValueLabelOptions\n & Am4ChartCursorOptions\n & Am4TrendLineOptions\n & Am4ScrollbarOptions\n & Am4ChartOptions\n & Am4LegendOptions\n ;\n\n/**\n * The corresponding AmCharts 4 chart class is XYChart.\n */\nexport type AmCharts4RegularLineChartOptions =\n & Am4CategoryDateAxisOptions\n & Am4ValueAxisOptions\n & Am4LineSeriesOptions\n & Am4LegendOptions\n & Am4ValueLabelOptions\n & Am4ChartCursorOptions\n & Am4TrendLineOptions\n & Am4ScrollbarOptions\n & Am4ChartOptions\n & Am4ValueAxisRangeOptions\n ;\n\n/**\n * The corresponding AmCharts 4 chart class is XYChart.\n */\nexport type AmCharts4ScatterPlotOptions =\n Am4SecondValueAxisOptions\n & Am4ValueAxisOptions\n & Am4ScatterSeriesOptions\n & Am4ValueLabelOptions\n & Am4ChartCursorOptions\n & Am4ScatterTrendLineOptions\n & Am4ScrollbarOptions\n & Am4LegendOptions\n & Am4ChartOptions\n ;\n\n/**\n * The corresponding AmCharts 4 chart class is XYChart.\n */\nexport type AmCharts4StackedAreaChartOptions =\n & Am4CategoryDateAxisOptions\n & Am4ValueAxisOptions\n & Am4LineSeriesOptions\n & Am4LegendOptions\n & Am4ValueLabelOptions\n & Am4ChartCursorOptions\n & Am4TrendLineOptions\n & Am4ScrollbarOptions\n & Am4ChartOptions\n & Am4ValueAxisRangeOptions\n ;\n\n/**\n * The corresponding AmCharts 4 chart class is XYChart.\n */\nexport type AmCharts4StackedBarChartOptions =\n & Am4CategoryDateAxisOptions\n & Am4ValueAxisOptions\n & Am4ColumnSeriesOptions\n & Am4LegendOptions\n & Am4ValueLabelOptions\n & Am4ChartCursorOptions\n & Am4TrendLineOptions\n & Am4ScrollbarOptions\n & Am4ChartOptions\n & Am4ValueAxisRangeOptions\n ;\n\n/**\n * The corresponding AmCharts 4 chart class is XYChart.\n */\nexport type AmCharts4StackedColumnChartOptions =\n & Am4CategoryDateAxisOptions\n & Am4ValueAxisOptions\n & Am4ColumnSeriesOptions\n & Am4ValueLabelOptions\n & Am4ChartCursorOptions\n & Am4TrendLineOptions\n & Am4ScrollbarOptions\n & Am4ChartOptions\n & Am4LegendOptions\n & Am4ValueAxisRangeOptions\n ;\n","import { Theme } from \"@mui/material/styles\";\n\n\nexport class AppClasses {\n /**\n * Style applied to\n */\n static readonly root: string = \"ic3App-root\";\n /**\n * Style applied to\n */\n static readonly topMenu: string = \"ic3App-topMenu\";\n /**\n * Style applied to\n */\n static readonly leftToolbar: string = \"ic3App-toolbar\";\n /**\n * Style applied to\n */\n static readonly drawer: string = \"ic3App-drawer\";\n\n static readonly drawerSmall: string = \"ic3App-drawer-small\";\n /**\n * Dashboard in viewer mode\n */\n static readonly payload: string = \"ic3App-payload\";\n /**\n * Style applied to\n */\n static readonly error: string = \"ic3App-error\";\n /**\n * Style applied to\n */\n static readonly topBar: string = \"ic3App-bar\";\n static readonly topBarInFloating: string = \"ic3App-bar-floating\";\n /**\n * Style applied to\n */\n static readonly leftFilter: string = \"ic3App-leftFilter\";\n /**\n * Style applied to the root div containing the edited dashboard pages.\n */\n static readonly dashboard: string = \"ic3App-dashboard\";\n /**\n * Style applied to\n */\n static readonly zoomWidget: string = \"ic3App-zoomWidget\";\n /**\n * Class added to root when the left filter panel is collapsed.\n */\n static readonly leftPanelCollapsed: string = \"ic3LeftPanelCollapsed\";\n}\n\nexport declare type AppClassKey = keyof AppClasses;\n\nexport interface AppDivProps {\n dashboardTheme: Theme;\n topBarOptions: TopBarOptions;\n leftBarOptions: LeftBarOptions;\n opacity?: string;\n drawerW: string;\n}\n\nexport enum TopBarOptions {\n None,\n EditorMode,\n AppViewerTopFilter,\n AppViewerTopMenu,\n AppViewerTopMenuFloating\n}\n\nexport enum LeftBarOptions {\n None,\n EditorMode,\n AppViewerLeftFilter,\n AppViewerRightFilter,\n}","import {FormFieldObject} from \"../PublicTemplateForm\";\nimport {TableRowHeightOptions} from \"../PublicTheme\";\n\nexport enum TableColumnSizing {\n FLUID = \"FLUID\",\n FIXED = \"FIXED\",\n USER_RESIZABLE = \"USER_RESIZABLE\",\n}\n\nexport interface BaseTableChartOptions extends FormFieldObject {\n\n /**\n * If active, the color defined in the Tidy Table are applied to the table.\n */\n applyHeaderColorDecoration?: boolean;\n\n /**\n * If enabled, show tooltips on every cell in the table (excluding renderers). Default = true.\n */\n cellTooltips: boolean;\n\n /**\n * Save the state of the table in the users browsers local storage.\n */\n saveTableStateLocally?: boolean;\n\n /**\n * Row Height.\n */\n tableSize: TableRowHeightOptions;\n\n /**\n * Width Mode.\n */\n columnSizing: TableColumnSizing;\n\n /**\n * The column widths when columnSizing == FLUID\n *\n * A comma separated list of column widths. Defines how the columns will grow compared to other columns\n * (e.g., 2 means twice as wide as 1). The last value repeats itself.\n */\n columnSizes_FLUID?: string;\n\n /**\n * The column widths when columnSizing == FIXED\n *\n * A comma separated list of column widths. The widths are defined in pixels (without the 'px'). Without any value,\n * similar to the Fluid mode. The 'auto' value means the columns are shrunk to the minimum width required by the\n * cell values and then expanded to fill all the available horizontal space. The last value repeats itself.\n */\n columnSizes_FIXED?: string;\n\n /**\n * The column widths when columnSizing == USER_RESIZABLE\n *\n * A comma separated list of column widths. The widths are defined in pixels (without the 'px'). Without any value,\n * similar to the Fluid mode. The 'auto' value means the columns are shrunk to the minimum width required by the\n * cell values and then expanded to fill all the available horizontal space. The last value repeats itself.\n */\n columnSizes_USER_RESIZABLE?: string;\n\n /**\n * Header Alignment (CSV).\n *\n * A comma separated list of values: 'left', 'center', 'right'. The last value repeats itself.\n */\n columnHeaderAlign: string;\n\n /**\n * Cell Alignment (CSV).\n *\n * A list of values: 'left', 'center', 'right'. The last value repeats itself.\n */\n columnCellAlign: string;\n\n /**\n * Pinned (CSV).\n *\n * A list of boolean values: 'true', 'false'. The last value repeats itself.\n */\n columnPinned: string;\n\n /**\n * Visible (CSV).\n *\n * A list of boolean values: 'true', 'false'. The last value repeats itself.\n */\n columnVisible: string;\n /**\n * Columns Header Menu.\n *\n * Activate the options of the menu in the header of the columns.\n */\n columnHeaderMenu: boolean;\n\n /**\n * Menu (CSV).\n *\n * A list of boolean values: 'true', 'false'. The last value repeats itself.\n */\n columnMenu: string;\n\n /**\n * Sortable (CSV).\n *\n * Display the sort options. A list of boolean values: 'true', 'false'. The last value repeats itself.\n */\n columnSortable: string;\n\n /**\n * Column Ordering (CSV).\n *\n * A list of boolean values: 'true', 'false'. The last value repeats itself.\n */\n columnOrdering: string;\n\n /**\n * Pinnable (CSV).\n *\n * Display the pin options. A list of boolean values: 'true', 'false'. The last value repeats itself.\n */\n columnPinnable: string;\n\n /**\n * Hideable (CSV).\n *\n * Display the show/hide options. A list of boolean values: 'true', 'false'. The last value repeats itself.\n */\n columnHideable: string;\n\n /**\n * Filterable (CSV).\n *\n * Display the filter options. A list of boolean values: 'true', 'false'. The last value repeats itself.\n */\n columnFilterable: string;\n\n /**\n * When exporting to excel, flag use the filtered and sorted version or the orignal table\n */\n exportOriginalTable: boolean;\n}\n","import {SelectionBehaviour, TidyTableColumnSelector} from \"../PublicTidyTableTypes\";\nimport {FormFieldObject} from \"../PublicTemplateForm\";\nimport {PublicDateShortcutUtils} from \"../PublicDateShortcutUtils\";\n\n// TOM : needs clarification\nexport class DatePickerClasses {\n\n /**\n * Style applied to the root element.\n */\n static readonly root = \"ic3DatePicker-root\";\n\n /**\n * Fix div inside the root.\n */\n static readonly container = \"ic3DatePicker-container\";\n\n\n static readonly rowDirection = \"ic3DatePicker-row-direction\";\n\n static readonly columnDirection = \"ic3DatePicker-column-direction\";\n\n /**\n * + Mui DatePicker and/or DateRangePicker classes\n */\n static readonly fieldSeparator = \"ic3DatePicker-fieldSeparator\";\n\n /**\n * Label showing the selected shortcut. Clicking this label opens the shortcut menu.\n */\n static readonly shortcutLabel = \"ic3DatePicker-shortcutLabel\";\n}\n\nexport declare type DatePickerClassKey = keyof DatePickerClasses;\n\nexport enum DatePickerRangeDirection {\n auto = \"AUTO\",\n horizontal = \"HORIZONTAL\",\n vertical = \"VERTICAL\",\n}\n\n/**\n * Date Picker Options (fields of the \"Chart\" tab in the widget editor).\n *\n * <pre>\n * Plugin ID : ic3\n * Widget/Template ID: DatePicker\n * </pre>\n *\n * @see WidgetTemplateChartOptions\n */\nexport interface DatePickerChartOptions extends FormFieldObject {\n\n /**\n * Variant.\n *\n * Allows for selecting a set of preset options. Note that a variant is possibly overriding defined options.\n */\n variant?: string;\n\n /**\n * The label content (i.e Date)\n */\n label?: string;\n\n /**\n * Helper Text.\n *\n * A text below the date picker to help the user when entering the date\n */\n dateHelperText?: string;\n\n /**\n * Input Date Format.\n *\n * The input date format\n */\n dateFormat: string;\n\n /**\n * Initial Date.\n *\n * The initial date. If not defined, the value on the third data row. A 'today' expression can be used:\n * today (+|-) n (d|w|m|y). E.g., today -1w means today minus one week.\n */\n initialDate?: string;\n\n /**\n * Min. Date.\n *\n * The first valid date. If not defined, the value of the first data row.\n * A 'today' expression can be used: today (+|-) n (d|w|m|y). E.g., today -1w means today minus one week.\n */\n minDate?: string;\n\n /**\n * Max. Date.\n *\n * The last valid date. If not defined, the value of the second data row.\n * A 'today' expression can be used: today (+|-) n (d|w|m|y). E.g., today -1w means today minus one week.\n */\n maxDate?: string;\n\n /**\n * Empty Behavior.\n *\n * Controls what to do if the date picker is empty.\n */\n emptyBehaviour: SelectionBehaviour;\n\n /**\n * Date Caption.\n *\n * The caption of the fired event.\n * For example, dd => 22, MM => 02, MMM => Jan, MMMM => January, yyyy => 2025, EEEE => Monday.\n */\n dateToCaption: string;\n\n /**\n * Date Unique Name.\n *\n * The value/unique-name of the fired event. The following variables are available: `HierarchyUName`,\n * `LevelUName`, `anyValidFormatString` (note the back ticks).\n */\n dateToUniqueName: string;\n\n /**\n * Range Picker.\n */\n rangePicker: boolean;\n\n /**\n * Range Picker: Initial End Date.\n *\n * The initial end date. If not defined, the value of the fourth data row. A 'today' expression can be used:\n * today (+|-) n (d|w|m|y). E.g., today -1w means today minus one week.\n */\n initialEndDate?: string;\n\n\n /**\n * The label content for the end date\n */\n endLabel?: string;\n\n // /**\n // * Helper Text for the end date\n // *\n // * A text below the date picker to help the user when entering the date\n // */\n // dateHelperEndText?: string;\n\n /**\n * Range Picker: Center Text.\n *\n * The text being displayed between the two dates.\n */\n centerText?: string;\n\n /**\n * Range Picker: Range Caption.\n *\n * The caption of the fired event. The following variables are available: `startUName`, `startCaption`,\n * `endUName`, `endCaption` (note the back ticks).\n */\n rangeToCaption: string;\n\n /**\n * Range Picker: Range Unique Name.\n *\n * The value/unique-name of the fired event. The following variables are available: `startUName`,\n * `startCaption`, `endUName`, `endCaption` (note the back ticks).\n */\n rangeToUniqueName: string;\n\n /**\n * The direction of the Picker, horizontal/vertical/auto\n *\n * \"auto\" will choose the direction depending on the ration width/height > 0.9\n */\n rangeDirection: DatePickerRangeDirection;\n /**\n * Dates.\n *\n * The column of the tidy table containing the dates to display.\n */\n dates?: TidyTableColumnSelector;\n\n /**\n * Shortcuts\n */\n shortcutsEnabled: boolean;\n\n /**\n *\n */\n shortcutsAnchorDate?: string;\n\n /**\n * From where to source the initial date.\n */\n initialDateFrom: InitialDateFrom;\n\n /**\n * Source the initial date/range from this shortcut.\n */\n initialShortcut?: string;\n\n /**\n * User can choose from the shortcuts in this group. Edit the groups in the theme plugin.\n */\n allowedShortcutGroup: string;\n\n}\n\ninterface IShortcut<D /* date type */, T /* shortcut return type */> {\n /**\n * Show this name in the datepicker.\n *\n * Localize depending on the anchor date:\n * — if undefined, Translate with `shortcutItemsDatePicker.<name>` in the localization.\n * — if present, Translate with `shortcutItemsDatePicker.<name>.$anchor` in the localization. Fallback to translation with no anchor.\n */\n name: string;\n\n /**\n * Return the range of the dates that this shortcut selects. The date to return should be of type\n * Dayjs. See the `dayjs` library. Return `null` to clear the start/end value.\n *\n * A datepicker shortcut returns the date. Return null to reset the date.\n *\n * A range picker shortcut returns a range: [startDate (included), endDate (included)]. Return [null, null] to reset\n * the date.\n *\n * If the date returned is outside the allowed range of dates in the widget, then the datepicker disables the\n * option.\n */\n getValue: (util: PublicDateShortcutUtils<D>) => T;\n\n /**\n * If an anchor date is defined, then this shortcut will show.\n * — true: only show the shortcut when there is an anchor date.\n * — false: do not show this shortcut when there is an anchor date.\n * — undefined: always show the shortcut.\n */\n needsAnchor?: boolean;\n}\n\nexport type DatePickerShortcut<T = any> = IShortcut<T, T | null>;\n\nexport type DateRangePickerShortcut<T = any> = IShortcut<T, [T | null, T | null]>;\n\nexport interface FilterDatePickerProps {\n\n /**\n * Variant defined in the theme. If the theme has variants, then the user can select one.\n */\n variant?: string;\n\n}\n\nexport enum InitialDateFrom {\n MANUAL_DATES = \"manual\",\n SHORTCUT = \"shortcut\",\n}","import {FormFieldObject, IFormEventMappingArrayFieldDefType} from \"../PublicTemplateForm\";\n\n/**\n * Embedded Report Options (fields of the \"Chart\" tab in the widget editor).\n *\n * <pre>\n * Plugin ID : ic3\n * Widget/Template ID: EmbeddedReport\n * </pre>\n *\n * @see WidgetTemplateChartOptions\n */\nexport interface EmbeddedReportChartOptions extends FormFieldObject {\n\n /**\n * Dashboard Name.\n *\n * You can use an event (e.g., @{dashboard-path}).\n */\n \"$-MDX-reportName\": string;\n\n /**\n * Events (from/to).\n *\n * Forwarded events.\n */\n \"@params\"?: IFormEventMappingArrayFieldDefType;\n\n \"@eventsOut\"?: IFormEventMappingArrayFieldDefType;\n\n /**\n * How to export the embedded report to excel.\n */\n exportToExcelMethod: ExportToExcelMethod,\n\n inheritSchemaName: boolean;\n inheritCubeName: boolean;\n\n inheritDisableDefaultSchemaAuthCheck: boolean;\n\n}\n\nexport enum ExportToExcelMethod {\n SHEET_PER_WIDGET = \"SHEET_PER_WIDGET\",\n ONE_TABLE = \"ONE_TABLE\"\n}","export class ErrorRendererClasses {\n\n /**\n * Style applied to\n */\n static root = \"ic3ErrorRenderer-root\";\n /**\n * Style applied to\n */\n static logo = \"ic3ErrorRenderer-logo\";\n /**\n * Style applied to\n */\n static logoW = \"ic3ErrorRenderer-logoW\";\n /**\n * Style applied to\n */\n static info = \"ic3ErrorRenderer-info\";\n /**\n * Style applied to\n */\n static schemaNotAuth = \"ic3ErrorRenderer-schemaNotAuth\";\n /**\n * Style applied to\n */\n static message = \"ic3ErrorRenderer-message\";\n /**\n * Style applied to\n */\n static detailToggle = \"ic3ErrorRenderer-detailToggle\";\n /**\n * Style applied to\n */\n static widget = \"ic3ErrorRenderer-widget\";\n /**\n * Style applied to\n */\n static causeMessage = \"ic3ErrorRenderer-causeMessage\";\n /**\n * Style applied to\n */\n static causeDetailedMessage = \"ic3ErrorRenderer-causeDetailedMessage\";\n /**\n * Style applied to\n */\n static causeDetailedInfo = \"ic3ErrorRenderer-causeDetailedInfo\";\n /**\n * Style applied to\n */\n static causeStacktrace = \"ic3ErrorRenderer-causeStacktrace\";\n}\n\nexport declare type ErrorRendererClassKey = keyof ErrorRendererClasses;\n","import {FilterTidyTableChartOptions} from \"./ThemeFilter\";\n\n// TOM : needs clarification\nexport class FilterAutocompleteClasses {\n\n\n /**\n * Style applied to the muiAutocomplete root element\n *\n * You've all mui classes https://mui.com/material-ui/api/autocomplete/\n */\n static readonly muiAutocomplete = \"MuiAutocomplete-root\";\n\n static readonly action = \"MuiAutocomplete-action\";\n\n}\n\nexport declare type FilterAutocompleteClassesKey = keyof FilterAutocompleteClasses;\n\n/**\n * Filter Autocomplete (aka. Dropdown) Options (fields of the \"Chart\" tab in the widget editor).\n *\n * <pre>\n * Plugin ID : ic3\n * Widget/Template ID: FilterAutocomplete\n * </pre>\n *\n * @see WidgetTemplateChartOptions\n */\nexport interface FilterAutocompleteChartOptions extends FilterTidyTableChartOptions {\n\n /**\n * Variant.\n *\n * Allows for selecting a set of preset options. Note that a variant is possibly overriding defined options.\n */\n variant?: \"fixedHeight\" | \"standard\" | \"filled\" | \"outlined\";\n\n /**\n * Size.\n *\n * Rendered items size.\n */\n size: \"small\" | \"medium\";\n\n\n /**\n * Limit Chips.\n *\n * Maximum number of chips that will be visible\n */\n limitChips: number;\n\n /**\n * Maximum items that allowed in the selection.\n */\n limitSelection?: number;\n\n /**\n * Text to show when the filter is empty.\n */\n placeholderText?: string;\n\n}\n\nexport type FilterAutocompleteProps =\n Pick<FilterAutocompleteChartOptions, 'variant' | 'size'>\n & { hideInput?: boolean }\n & { addHOverflow: boolean }\n & { hideInputForPrinting?: boolean }\n & { hideAdornmentForPrinting?: boolean };","import {FilterTidyTableChartOptions} from \"./ThemeFilter\";\n\nexport class FilterButtonsClasses {\n\n /**\n * Style applied to the root element.\n */\n static readonly container = \"ic3FilterButtons-container\";\n\n /**\n * Style applied to the mui button elements.\n */\n static readonly button = \"ic3FilterSlider-button\";\n\n /**\n * Style applied to the mui group element (if present).\n */\n static readonly group = \"ic3FilterSlider-group\";\n\n /**\n * Slot for MuiButton component(s)\n */\n static readonly muiButton = \"\";\n\n}\n\nexport declare type FilterButtonsClassKey = keyof FilterButtonsClasses;\n\n/**\n * Filter Buttons Options (fields of the \"Chart\" tab in the widget editor).\n *\n * <pre>\n * Plugin ID : ic3\n * Widget/Template ID: FilterButtons\n * </pre>\n *\n * @see WidgetTemplateChartOptions\n */\nexport interface FilterButtonsChartOptions extends FilterTidyTableChartOptions {\n\n /**\n * Variant.\n *\n * Allows for selecting a set of preset options. Note that a variant is possibly overriding defined options.\n */\n variant: \"text\" | \"outlined\" | \"contained\" | string;\n\n /**\n * Size.\n */\n size: \"small\" | \"medium\" | \"large\";\n\n /**\n * Grouped.\n *\n * When grouped, the buttons are rendered horizontally or vertically similarly to a toolbar.\n */\n group?: boolean;\n\n /**\n * Layout (Grouped).\n */\n layout?: \"horizontal\" | \"vertical\";\n\n /**\n * Grid Column Count\n *\n * The buttons will be displayed on a grid. This field sets the number of columns of the grid.\n * Not relevant if the buttons are 'Grouped'.\n */\n columns?: number;\n\n}\n\n/**\n * Props for the FilterButtons root slot.\n */\nexport interface FilterButtonsProps {\n printing: boolean;\n variant?: string;\n grouped: boolean;\n columns?: number;\n}\n\n/**\n * Props for the FilterButtons Container slot.\n */\nexport interface FilterButtonsContainerProps {\n columns?: number;\n}","import {FilterTidyTableChartOptions} from \"./ThemeFilter\";\n\nexport class FilterCheckBoxRadioClasses {\n\n /**\n * Style applied to the root element.\n */\n static readonly root = \"ic3FilterCheckboxRadio-root\";\n\n\n /**\n * Style container for a single Radio or Checkbox\n */\n static readonly radioCheckBoxContainer = \"ic3FilterCheckboxRadio-container\";\n\n\n /**\n * root element class decoration when the items are radio components (single selection)\n */\n static readonly radioFlag = \"ic3FilterCheckboxRadio-Radio\";\n\n /**\n * root element class decoration when the items are checkbox components (multiple selection)\n */\n static readonly checkboxFlag = \"ic3FilterCheckboxRadio-Checkbox\";\n\n}\n\nexport declare type FilterCheckboxRadioClassKey = keyof FilterCheckBoxRadioClasses;\n\n/**\n * Filter Checkboxes Options (fields of the \"Chart\" tab in the widget editor).\n *\n * <pre>\n * Plugin ID : ic3\n * Widget/Template ID: FilterCheckboxRadio\n * </pre>\n *\n * @see WidgetTemplateChartOptions\n */\nexport interface FilterCheckboxRadioChartOptions extends FilterTidyTableChartOptions {\n\n /**\n * Variant.\n *\n * Allows for selecting a set of theme defined variants\n */\n variant?: string;\n\n /**\n * Size.\n */\n size: \"small\" | \"medium\";\n\n /**\n * Grid Column Count.\n *\n * The checkboxes will be displayed on a grid. Set the number of columns of the grid in this field.\n */\n columns?: number;\n\n}\n\nexport interface FilterCheckboxProps {\n variant?: string;\n printing: boolean;\n}","import {FormFieldObject, IFormEventArrayFieldDefType} from \"../PublicTemplateForm\";\n\nexport class FilterPanelClasses {\n /**\n * Main content div\n */\n static readonly mainDiv = \"ic3FilterPanel-root\";\n\n /**\n * Div containing the loading spinner and text\n */\n static readonly loadingDiv = \"ic3FilterPanel-loading\";\n\n /**\n * Div with add filter and remove all filters buttons\n */\n static readonly headerDiv = \"ic3FilterPanel-header\";\n\n /**\n * Div containing the 'Filters' text and the help icon button\n */\n static readonly titleDiv = \"ic3FilterPanel-title\";\n\n /**\n * Div containing the 'Filters' text\n */\n static readonly titleDivText = \"ic3FilterPanel-title-text\";\n\n /**\n * The help button next to the filter panel title\n */\n static readonly titleDivButtons = \"ic3FilterPanel-title-buttons\";\n\n /**\n * Icon to make the filter panel collapsed (only available on App Left Panel)\n */\n static readonly collapsibleIcon = \"ic3FilterPanel-collapsibleIcon\";\n\n /**\n * Icon showing how many filters you have\n */\n static readonly collapsedNumberOfFiltersIcon = \"ic3FilterPanel-collapsedNumberOfFiltersIcon\";\n\n /**\n * Help icon\n */\n static readonly helpIcon = \"ic3FilterPanel-helpIcon\";\n\n /**\n * Menu icon for filter panel views.\n */\n static readonly menuIcon = \"ic3FilterPanel-menuIcon\";\n\n /**\n * Div containing the add and remove all buttons\n */\n static readonly headerDivButtons = \"ic3FilterPanel-header-buttons\";\n\n /**\n * alert\n */\n static readonly alert = \"ic3FilterPanel-alert\";\n\n /**\n * Add button\n */\n static readonly headerDivAddButton = \"ic3FilterPanel-HeaderDivAddButton\";\n\n /**\n * Reset filter button\n */\n static readonly headerDivResetButton = \"ic3FilterPanel-HeaderDivResetButton\";\n\n /**\n * Div of the content root. Used for animation purposes.\n */\n static readonly contentDivRoot = \"ic3FilterPanel-content-root\";\n\n /**\n * Div with the stack of filter items\n */\n static readonly contentDiv = \"ic3FilterPanel-content\";\n\n /**\n * Div with no filters defined text\n */\n static readonly contentNoFilters = \"ic3FilterPanel-NoFilters\";\n\n /**\n * Main filter div\n */\n static readonly filterItemDiv = \"ic3FilterPanel-filterItem\";\n\n /**\n * Main filter div\n */\n static readonly filterItemDivHeader = \"ic3FilterPanel-filterItemHeader\";\n\n /**\n * Div around the filter clear button. Used for showing the tooltip when hovered.\n */\n static readonly filterItemClearButtonContainer = \"ic3FilterPanel-ItemClearButtonContainer\";\n\n /**\n * Class for the clear button itself.\n */\n static readonly filterItemClearButton = \"ic3FilterPanel-ItemClearButton\";\n\n static readonly filterItemRemoveButton = \"ic3FilterPanel-ItemRemoveButton\";\n\n /**\n * Classname for the TextField component\n */\n static readonly inputField = \"ic3FilterPanel-filterInputfield\";\n\n /**\n * Classname for the checkmark 'set' button.\n */\n static readonly inputFieldSetValueButton = \"ic3FilterPanel-inputFieldSetValueButton\";\n\n static readonly dateTimePicker = \"ic3FilterPanel-dateTimePicker\";\n\n /**\n * Classname for the value selector div.\n */\n static readonly valueSelector = \"ic3FilterPanel-valueSelector\";\n\n /**\n * A div with the displayed values for the value selector in preview mode. Only visible when the operator is\n * `Is Any Of` or `Is None Of`.\n */\n static readonly inputFieldPreviewValues = \"ic3FilterPanel-PreviewValue\";\n\n /**\n * Classname for the field label\n */\n static readonly fieldName = \"ic3FilterPanel-fieldName\";\n /**\n\n * Classname for the field label\n */\n static readonly fieldNameExtra = \"ic3FilterPanel-fieldName-extra\";\n\n /**\n * Div with selectable items for filters with few items\n */\n static readonly selectableContent = \"ic3FilterPanel-selectableContent\";\n\n /**\n * Div when it is collapsed\n */\n static readonly collapsedDiv = \"ic3FilterPanel-collapsedDiv\";\n\n}\n\nexport interface FilterPanelProps {\n\n /**\n * Variant defined in the theme. If the theme has variants, then the user can select one.\n */\n variant?: string;\n\n /**\n * If true, grow filter in row direction. If false, grow in column direction.\n */\n filterLayoutHorizontal?: boolean;\n\n /**\n * Available when the filter panel is used in an application.\n * User can collapse the filter panel.\n */\n isCollapsible?: boolean;\n\n /**\n * Available when the filter panel is used in an application.\n * The filter panel is on the right of the application.\n */\n isRightFilterPanel?: boolean;\n}\n\nexport declare type FilterPanelClassesKey = keyof FilterPanelClasses;\n\n/**\n * Filter Panel Options (fields of the \"Chart\" tab in the widget editor).\n *\n * <pre>\n * Plugin ID : ic3\n * Widget/Template ID: FilterPanel\n * </pre>\n *\n * @see WidgetTemplateChartOptions\n */\nexport interface FilterPanelChartOptions extends FormFieldObject {\n\n /**\n * Variant.\n *\n * Allows for selecting a set of preset options. Note that a variant is possibly overriding defined options.\n */\n variant?: string;\n\n /**\n * As Global Filter.\n *\n * In the widget interaction tab, enable 'Use Global Filter' to see the effects of this option.\n *\n * Default value can NOT be changed in a theme or variant\n */\n asGlobalFilter: boolean;\n\n /**\n * Schema Name.\n *\n * Using the schema defined at dashboard level when not defined.\n */\n schemaName?: string;\n\n /**\n * Cube Name.\n *\n * The cube to use. Leave blank to use the default cube.\n */\n cubeName?: string;\n\n /**\n * Allowed Filters.\n *\n * Only show these options in the data field selector.\n * Easily change by clicking 'Set Allowed Filters' in the user menu of the widget header.\n */\n customFilterConfig?: string;\n\n /**\n * These filters are not allowed to be selected by the user. These filters are hidden from the add filter menu.\n */\n notAllowedFiltersConfig?: string;\n\n /**\n * Default Filters.\n *\n * These filters are in the filter panel upon opening the dashboard.\n * Easily change by clicking 'Set Default Filters' in the user menu of the widget header.\n */\n initialFilterConfig?: string;\n\n /**\n * Allow users to save and load filters. Filters are stored in the users' browser.\n */\n enableViews?: boolean;\n\n /**\n * Max number of views a user can have. Empty means unlimited.\n */\n maxNumberOfViews?: number;\n\n /**\n * If true, grow filter in row direction. If false, grow in column direction.\n */\n filterLayoutHorizontal?: boolean;\n\n /**\n * If defined, the filter panel only shows items where this measure is not NULL. This means, for example, that\n * if there is a filter item setting Continent to Asia, then other filters, e.g., country, only show countries\n * with continent Asia.\n */\n measureMdx?: string;\n\n /**\n * Name template for the fields with properties. Use 'levelName' and 'propertyName' as placeholders.\n */\n propertyFieldNameTemplate?: string;\n\n /**\n * Use the simple selection filter if and only if `useSimpleFilterCutoff` is not null and the level\n * has <= `useSimpleFilterCutoff` members.\n */\n useSimpleFilterCutoff?: number;\n\n /**\n * Per default, the filter panel allows users to filter on properties. You can disable that with this option.\n */\n hidePropertyFilters?: boolean;\n\n /**\n * Only allow users to select from these operators.\n */\n allowedOperatorsConfig?: IPGFilterItemFilterType[];\n\n /**\n * Set to `true` to show date picker shortcuts.\n */\n datePickerShortcuts?: boolean;\n\n /**\n * Anchor date when using shortcuts. This expression is evaluated against the time level used.\n */\n shortcutsAnchorDate?: string;\n\n /**\n * User can choose from the shortcuts in this group. Edit the groups in the theme plugin.\n */\n allowedShortcutGroup: string;\n\n /**\n * Add these filters to the filter panel queries.\n */\n eventFilters?: IFormEventArrayFieldDefType;\n}\n\nexport type TextFilterType = \"EQUALS\"\n | \"NOT_EQUALS\"\n | \"STARTS_WITH\"\n | \"ENDS_WITH\"\n | \"CONTAINS\"\n | \"NOT_CONTAINS\"\n | \"REGEX\";\n\nexport type IPGFilterItemFilterType = TextFilterType\n | \"IS_ANY_OF\"\n | \"IS_NONE_OF\"\n | \"GREATER_THAN\"\n | \"GREATER_EQUAL_THAN\"\n | \"SMALLER_THAN\"\n | \"SMALLER_EQUAL_THAN\"\n | \"BETWEEN\"\n | \"IS_EMPTY\"\n | \"IS_NOT_EMPTY\";","export class RegexFilterClasses {\n\n /**\n * Additional root-class when using the preview.\n */\n static readonly previewRoot = \"ic3RegexFilter-previewRoot\";\n\n /**\n * Additional root-class when using the selection box.\n */\n static readonly selectionBoxRoot = \"ic3RegexFilter-selectionBoxRoot\";\n\n /**\n * Class for the div with the search box.\n */\n static readonly searchBoxContainer = \"ic3RegexFilter-searchBoxContainer\";\n\n static readonly reachedLimitText = \"ic3RegexFilter-reachedLimitText\";\n\n static readonly filterPreview = \"ic3RegexFilter-filterPreview\";\n\n static readonly searchContent = \"ic3RegexFilter-searchContent\";\n\n static readonly footer = \"ic3RegexFilter-footer\";\n\n static readonly footerButtons = \"ic3RegexFilter-footerButtons\";\n\n static readonly filterCount = \"ic3RegexFilter-filterCount\";\n\n static readonly selectResultsButton = \"ic3RegexFilter-selectResultsButton\";\n}\n\nexport declare type RegexFilterClassesKey = keyof RegexFilterClasses;\n\nexport interface RegexFilterProps {\n\n}","import {FilterTidyTableChartOptions} from \"./ThemeFilter\";\n\n// TOM : needs clarification\nexport class FilterSliderClasses {\n\n /**\n * Style applied to the root element.\n */\n static readonly root = \"ic3FilterSlider-root\";\n\n /**\n * Style applied to the mui slider element.\n */\n static readonly slider = \"ic3FilterSlider-slider\";\n\n /**\n * Style applied to the tooltip element.\n */\n static readonly tooltip = \"ic3FilterSlider-tooltip\"\n\n /**\n * Slot for MuiSlider component\n */\n static readonly muiSlider = \"\";\n\n /**\n * Slot for Selection Label (below the slider)\n */\n static readonly selectionLabel = \"ic3FilterSlider-SelectionLabel\";\n static readonly emptySelection = \"ic3FilterSlider-EmptySelection\";\n\n /**\n * root modifiers for horizontal or vertical slider\n */\n static readonly horizontal = \"ic3FilterSlider-Horizontal\";\n static readonly vertical = \"ic3FilterSlider-Vertical\";\n\n\n}\n\nexport declare type FilterSliderClassKey = keyof FilterSliderClasses;\n\nexport enum FilterSliderRenderingType {\n\n MARKS = \"MARKS\",\n TOOLTIPS = \"TOOLTIPS\",\n MARKS_WITH_TOOLTIPS = \"MARKS_WITH_TOOLTIPS\",\n NONE = \"NONE\",\n}\n\n/**\n * Filter Slider Options (fields of the \"Chart\" tab in the widget editor).\n *\n * <pre>\n * Plugin ID : ic3\n * Widget/Template ID: FilterSlider\n * </pre>\n *\n * @see WidgetTemplateChartOptions\n */\nexport interface FilterSliderChartOptions extends FilterTidyTableChartOptions {\n\n /**\n * Variant.\n *\n * Allows for selecting a set of preset options. Note that a variant is possibly overriding defined options.\n */\n variant?: string;\n\n /**\n * Size.\n */\n size: \"small\" | \"medium\";\n\n /**\n * Orientation.\n */\n orientation: \"horizontal\" | \"vertical\";\n\n /**\n * Style.\n */\n style: FilterSliderRenderingType;\n\n /**\n * Margins.\n *\n * Left/right (or top/down) margins of the slider.\n */\n margin: number;\n\n /**\n * Mark Each\n *\n * When active, adds a label for each nt step to the mark (1 for each step)\n */\n markLabelEach: number;\n\n /**\n * Selection Label.\n *\n * An optional label under the slider with selection information\n */\n selectionLabel?: string;\n}\n\nexport interface FilterSliderProps {\n variant?: string;\n thumbColor?: string;\n emptySelection: boolean;\n isVertical?: boolean;\n size?: 'small' | 'medium';\n padding: number;\n}","export class LazyTreeClasses {\n\n /**\n * Style applied to the root element.\n */\n static readonly lazyRoot = 'ic3LazyTreeView-root';\n\n /** Styles applied to the search toolbar element */\n static readonly toolbar = 'ic3LazyTreeView-toolbar';\n\n /** Styles applied to the search search input element */\n static readonly input = 'ic3LazyTreeView-toolbar-input';\n\n /** Styles applied to the select filter button (on) */\n static readonly button = 'ic3LazyTreeView-toolbar-button';\n\n /** Styles applied to the select filter button (on) */\n static readonly buttonFilterSelectedOn = 'ic3LazyTreeView-toolbar-buttonOn';\n\n /** Styles applied to the select filter button (off) */\n static readonly buttonFilterSelectedOff = 'ic3LazyTreeView-toolbar-buttonOff';\n\n /** Styles applied to the TreeRoot element */\n static readonly treeRoot = 'ic3LazyTreeView-treeRoot';\n\n /**\n * Item classes\n */\n static readonly itemRoot = 'ic3LazyTreeView-itemRoot';\n\n static readonly itemContainer = 'ic3LazyTreeView-itemContainer';\n\n static readonly leftDiv = 'ic3LazyTreeView-itemLeftDiv';\n\n static readonly itemLabelContainer = 'ic3LazyTreeView-itemLabelContainer';\n\n static readonly itemIcon = 'ic3LazyTreeView-itemIcon';\n}\n\nexport declare type LazyTreeClassesClassKey = keyof LazyTreeClasses;\n\nexport interface LazyTreeProps {\n\n}","import {TreeFireEventMode} from \"../PublicTidyTableInteractions\";\nimport {FilterTidyTableChartOptions} from \"./ThemeFilter\";\nimport {LazyTreeClasses} from \"./ThemeLazyTreeClasses\";\n\nexport class FilterTreeClasses extends LazyTreeClasses {\n\n /**\n * Style applied to the root element.\n */\n static readonly root = \"ic3TreeFilter-root\";\n\n /**\n * Style applied to the tree item without control icons\n */\n static readonly simpleItemLabel = \"ic3TreeFilter-simpleItemLabel\";\n\n /**\n * Style applied to the tree item witht control icons\n */\n static readonly itemLabelWithIcons = \"ic3TreeFilter-itemLabelWithIcons\";\n\n /**\n * + Ic3GlobalClasses\n * + Mui TreeView class names\n */\n\n}\n\nexport class FilterTreePopOverClasses {\n\n}\n\nexport declare type FilterTreeClassKey = keyof FilterTreeClasses;\nexport declare type FilterTreePopOverClassKey = keyof FilterTreePopOverClasses;\n\nexport type FilterFireEventMode =\n TreeFireEventMode.ALL_SELECTED |\n TreeFireEventMode.COMPACT_ON_PARENT\n ;\n\n/**\n * Filter Tree Options (fields of the \"Chart\" tab in the widget editor).\n *\n * <pre>\n * Plugin ID : ic3\n * Widget/Template ID: FilterTree\n * </pre>\n *\n * @see WidgetTemplateChartOptions\n */\nexport interface FilterTreeChartOptions extends FilterTidyTableChartOptions {\n\n /**\n * Variant.\n *\n * Allows for selecting a set of preset options. Note that a variant is possibly overriding defined options.\n */\n variant?: string;\n\n /**\n * Size.\n */\n size: \"small\" | \"medium\";\n\n /**\n * Use Control Icons.\n *\n * Display a checkbox/radiobutton to the left of each item.\n */\n useControlIcons?: boolean;\n\n /**\n * Expand/Collapse Depth.\n *\n * Number of levels initially expanded.\n */\n startOpenDepth: number,\n\n\n /**\n * Cascade Selection.\n *\n * Select all children as well. Does not apply if single selection.\n */\n cascadeSelection: boolean,\n\n /**\n * Fire Mode.\n *\n * When firing an event, do not fire children if the parent is selected (i.e. the filter is used as an MDX filter).\n *\n * Does not apply if single selection.\n */\n fireMode: FilterFireEventMode,\n\n /**\n * Add Search.\n *\n * Add a search bar above the tree.\n */\n addSearch: boolean,\n\n /**\n * Search Placeholder.\n *\n * Text displayed when the search bar is empty.\n */\n searchPlaceholder?: string;\n\n /**\n * Dropdown (aka. Autocomplete).\n *\n * The tree is displayed as a dropdown.\n */\n autoComplete: boolean;\n\n /**\n * Variant.\n */\n autoCompleteVariant?: string;\n\n /**\n * Size (Dropdown/Autocomplete).\n *\n * Rendered items size.\n */\n autoCompleteSize?: 'small' | 'medium';\n\n /**\n * Limit Chips.\n *\n * Maximum number of chips that will be visible\n */\n autoCompleteLimitChips: number;\n}\n\nexport interface FilterTreeProps {\n printing: boolean;\n variant?: string;\n size: 'small' | 'medium';\n}\n\nexport interface FilterTreePopOverProps {\n variant?: string;\n}","export class Ic3GlobalClasses {\n\n static readonly singleSelection = 'ic3-SingleSelection';\n\n static readonly multipleSelection = 'ic3-MultipleSelection';\n}\n\n","import {FormFieldObject} from \"../PublicTemplateForm\";\nimport {TidyTableColumnSelector} from \"../PublicTidyTableTypes\";\n\nexport interface GoogleMapCoordinateChartOptions extends FormFieldObject {\n\n /**\n * Location.\n *\n * A column/member with latitude/longitude properties.\n */\n location?: TidyTableColumnSelector;\n\n /**\n * Latitude.\n *\n * A column/member with latitude properties.\n */\n latitude?: TidyTableColumnSelector;\n\n /**\n * Longitude.\n *\n * A column/member with longitude properties.\n */\n longitude?: TidyTableColumnSelector;\n\n}\n\n/**\n * https://developers.google.com/maps/documentation/javascript/style-reference\n */\nexport enum GoogleMapFeaturesStyles {\n ALL = 'all',\n ADMINISTRATIVE = 'administrative',\n ADMINISTRATIVE_COUNTRY = 'administrative.country',\n ADMINISTRATIVE_LAND_PARCEL = 'administrative.land_parcel',\n ADMINISTRATIVE_LOCALITY = 'administrative.locality',\n ADMINISTRATIVE_NEIGHBORHOOD = 'administrative.neighborhood',\n ADMINISTRATIVE_PROVINCE = 'administrative.province',\n LANDSCAPE = 'landscape',\n LANDSCAPE_MAN_MADE = 'landscape.man_made',\n LANDSCAPE_NATURAL = 'landscape.natural',\n LANDSCAPE_NATURAL_LANDCOVER = 'landscape.natural.landcover',\n LANDSCAPE_NATURAL_TERRAIN = 'landscape_natural.terrain',\n POI = 'poi',\n POI_ATTRACTION = 'poi.attraction',\n POI_BUSINESS = 'poi.business',\n POI_GOVERNMENT = 'poi.government',\n POI_MEDICAL = 'poi.medical',\n POI_PARK = 'poi.park',\n POI_PLACE_OF_WORSHIP = 'poi.place_of_worship',\n POI_SCHOOL = 'poi.school',\n POI_SPORTS_COMPLEX = 'poi.sports_complex',\n ROAD = 'road',\n ROAD_ARTERIAL = 'road.arterial',\n ROAD_HIGHWAY = 'road.highway',\n ROAD_HIGHWAY_CONTROLLED_ACCESS = 'road.highway.controlled_access',\n ROAD_LOCAL = 'road.local',\n TRANSIT = 'transit',\n TRANSIT_LINE = 'transit.line',\n TRANSIT_STATION = 'transit.station',\n TRANSIT_STATION_AIRPORT = 'transit.station.airport',\n TRANSIT_STATION_BUS = 'transit.station.bus',\n TRANSIT_STATION_RAIL = 'transit.station.rail',\n WATER = 'water',\n}\n\nexport enum GoogleMapTypeId {\n /**\n * This map type displays a transparent layer of major streets on satellite\n * images.\n */\n HYBRID = 'hybrid',\n /**\n * This map type displays a normal street map.\n */\n ROADMAP = 'roadmap',\n /**\n * This map type displays satellite images.\n */\n SATELLITE = 'satellite',\n /**\n * This map type displays maps with physical features such as terrain and\n * vegetation.\n */\n TERRAIN = 'terrain',\n}\n\n/**\n * google.maps.MapOptions\n */\nexport interface GoogleMapCommonFieldProps extends FormFieldObject {\n\n /**\n * Map Type.\n */\n mapType: GoogleMapTypeId[];\n\n /**\n * Features.\n */\n showFeatures: GoogleMapFeaturesStyles[];\n\n /**\n * Zoom.\n *\n * To set the currently displayed zoom open the widget's menu (top right) and click on 'Set Zoom & Center'.\n *\n * Integers between zero, and up to the supported <a href=\"https://developers.google.com/maps/documentation/javascript/maxzoom\">maximum zoom level</a>.\n */\n zoom: number;\n\n /**\n * Latitude.\n *\n * To set the currently displayed latitude open the widget's menu (top right) and click on 'Set Zoom & Center'.\n */\n latitude: number;\n\n /**\n * Longitude.\n *\n * To set the currently displayed longitude open the widget's menu (top right) and click on 'Set Zoom & Center'.\n */\n longitude: number;\n\n /**\n * Zoom Control.\n */\n zoomControl?: boolean;\n\n /**\n * Full Screen Control.\n */\n fullscreenControl?: boolean;\n\n /**\n * Street View Control.\n */\n streetViewControl?: boolean;\n\n}\n\nexport interface GoogleMapChartOptions extends FormFieldObject {\n\n /**\n * Internal usage.\n */\n groupsOrder?: string[];\n\n mapOptions: GoogleMapCommonFieldProps;\n\n}\n","export class HtmlBoxClasses {\n /**\n * Style applied to the root element.\n */\n public static root = \"ic3HtmlBox-root\";\n}\n\nexport declare type HtmlBoxClassKey = keyof HtmlBoxClasses;\n\nexport type HtmlBoxVariant =\n |\n \"plain\" |\n /**\n * Used by the editor documentation dialog and text box used for Live Demo documentation.\n */\n \"doc\" |\n /**\n * Used by the dashboard documentation dialog (e.g., filter panel usage, box help icon).\n */\n \"dashboardDoc\" |\n /**\n * Used by the widget box tooltip/help icon.\n */\n \"widgetHelp\" |\n /**\n * Used for help tooltip & tooltip in table\n */\n \"tooltip\" |\n /**\n * Based on dashboard theme definition (h1,h2...)\n */\n \"dashboardTheme\"\n ;\n\nexport interface StyledHtmlBoxProps {\n\n sizing?: boolean;\n sizingW?: number;\n\n variant?: HtmlBoxVariant;\n}","import {FormFieldObject} from \"../PublicTemplateForm\";\n\n/**\n * Image Options (fields of the \"Chart\" tab in the widget editor).\n *\n * <pre>\n * Plugin ID : ic3\n * Widget/Template ID: Image\n * </pre>\n *\n * @see WidgetTemplateChartOptions\n */\nexport interface ImageChartOptions extends FormFieldObject {\n\n /**\n * URL.\n *\n * An absolute or relative URL.\n */\n urlToImage: string;\n\n /**\n * Resize the image, read more here, https://www.w3schools.com/css/css3_object-fit.asp.\n */\n resizeImage: ImageResizingOptions;\n}\n\nexport enum ImageResizingOptions {\n NONE = \"none\",\n FILL = \"fill\",\n CONTAIN = \"contain\",\n COVER = \"cover\",\n SCALE_DOWN = \"scale-down\"\n}\n","import {FormFieldObject} from \"../PublicTemplateForm\";\nimport {TidyTableColumnSelector} from \"../PublicTidyTableTypes\";\nimport {\n CompareTextInterpretationType,\n SparkChartType,\n SparklinePosition,\n TargetTextIconSet,\n TargetTextPosition\n} from \"../ITypes\";\n\nexport class KpiCardClasses {\n\n public static root = \"ic3KpiCard-root\";\n\n public static valuesContent = \"ic3KpiCard-valuesContent\";\n\n public static chartContent = \"ic3KpiCard-chartContent\";\n\n public static valueTitle = \"ic3KpiCard-valueTitle\";\n\n public static valueText = \"ic3KpiCard-valueText\";\n\n public static kpiCompareTextRoot = \"ic3KpiCard-compareTextRoot\";\n\n public static kpiCompareTextRootEmpty = \"ic3KpiCard-emptyCompareTextEmpty\";\n\n public static comparePercentageText = \"ic3KpiCard-comparePercentageText\";\n\n public static compareTargetText = \"ic3KpiCard-compareTargetText\";\n\n public static comparePercentZero = \"ic3KpiCard-comparePercentZero\";\n\n public static comparePercentUp = \"ic3KpiCard-comparePercentUp\";\n\n public static comparePercentDown = \"ic3KpiCard-comparePercentDown\";\n\n}\n\nexport declare type KpiCardClassKey = keyof KpiCardClasses;\n\nexport interface KpiCardProps {\n\n /**\n * Variant defined in the theme. If the theme has variants, then the user can select one.\n */\n variant?: string;\n\n sparklinePosition: SparklinePosition;\n\n targetPosition: TargetTextPosition;\n\n}\n\n/**\n * KPI Card Options (fields of the \"Chart\" tab in the widget editor).\n *\n * <pre>\n * Plugin ID : ic3\n * Widget/Template ID: KpiCard\n * </pre>\n *\n * @see WidgetTemplateChartOptions\n */\nexport interface KpiCartChartOptions extends SparkChartOptionsMeta {\n\n /**\n * Variant defined in the theme. If the theme has variants, then the user can select one.\n */\n variant?: string;\n\n /**\n * Value.\n *\n * The KPI value to show in the widget.\n */\n value: TidyTableColumnSelector;\n\n /**\n * Target.\n *\n * Compare the value with this target value.\n */\n target?: TidyTableColumnSelector;\n\n /**\n * Historical Data.\n *\n * The data for the sparkline. This must be a list of numbers, e.g., [43, 5, 2, 4].\n * The color of the sparkline depends on the trend of the sparkline.\n */\n data?: TidyTableColumnSelector;\n\n /**\n * Title Text.\n *\n * The text above the value.\n */\n titleText: string;\n\n /**\n * Value Text.\n *\n * The text for the value.\n */\n valueText: string;\n\n /**\n * Target Text.\n *\n * The text to display after the percentage difference.\n */\n targetText: string;\n\n /**\n * Interpretation.\n *\n * How to compare the value and the target.\n */\n targetInterpretation: CompareTextInterpretationType;\n\n /**\n * Target Position.\n *\n * Where to display the target.\n */\n targetPosition: TargetTextPosition;\n\n /**\n * Trend Icon.\n *\n * Display the trend icon?\n */\n includeTrendIcon: boolean;\n\n /**\n * Delta for zero value\n *\n * If the target value is below this delta value it is considered as a delta value (rounding issue)\n */\n deltaZero?: number;\n\n /**\n * Icon.\n *\n * The icon that indicate the trend.\n */\n iconSet: TargetTextIconSet;\n\n /**\n * Position.\n *\n * Where to display the sparkline.\n */\n sparklinePosition: SparklinePosition;\n}\n\nexport interface SparkChartOptionsMeta extends FormFieldObject {\n /**\n * Sparkline Type.\n */\n sparkChartType: SparkChartType;\n\n /**\n * Tooltips.\n *\n * Enable tooltips when the user hovers over the sparkline.\n */\n sparklineTooltips: boolean;\n\n /**\n * Fill Mode.\n *\n * Fill the area under the sparkline.\n */\n sparklineHasArea: boolean;\n}\n","export class LayoutClasses {\n\n /**\n * When dragging a box, to keep the cursor on move\n */\n static widgetBoxDragActiveClass = \"ic3SelectedBoxDragActive\";\n\n static widgetSelector = \"ic3WidgetSelected\";\n\n static widgetBoxSelected = \"ic3WidgetBoxSelected\";\n\n static widgetBoxSelectedEx = \"ic3WidgetBoxSelectedEx\";\n\n}\n\nexport declare type LayoutClassKey = keyof LayoutClasses;\n\n","export class LayoutPageClasses {\n\n static root = \"ic3LayoutPage-root\";\n\n /**\n * Style applied to the root element containing the dashboard pages.\n */\n static widgetPage = \"ic3LayoutPage-widgetPage\";\n /**\n * Style applied to\n */\n static widgetPageMargin = \"ic3LayoutPage-widgetPageMargin\";\n /**\n * Style applied to\n */\n static widgetPageGrid = \"ic3LayoutPage-widgetPageGrid\";\n /**\n * Style applied to\n */\n static widgetPageWidgets = \"ic3LayoutPage-widgetPageWidgets\";\n /**\n * Style applied to the page on hover.\n */\n static widgetPagePH = \"ic3LayoutPage-widgetPagePH\";\n\n}\n\nexport declare type LayoutPageClassKey = keyof LayoutPageClasses;\n","import {BaseTableChartOptions} from \"./ThemeBaseTable\";\n\nexport class PivotTableClasses {\n\n static readonly main = \"ic3-pt\";\n\n static readonly cell = \"ic3-pt-cell\";\n\n static readonly totalRow = \"ic3-pt-row.ic3-totalRow\";\n\n static readonly leftHeaderCell = \"ic3-pt-col.lh\";\n\n static readonly leftHeaderTitle = \"ic3-pt-col.lh .ic3-pt-header-label\";\n\n static readonly topHeaderCell = \"ic3-pt-col.th\";\n\n static readonly topHeaderTitle = \"ic3-pt-col.th .ic3-pt-header-label\";\n\n static readonly column = \"ic3-pt-col\";\n\n static readonly columnSeparator = \"ic3-pt .ic3-pt-col-separator\";\n\n static readonly columnSeparatorContent = \"ic3-pt .ic3-pt-col-separator-content\";\n\n static readonly icon = \"ic3-pt-icon\";\n\n static readonly iconSort = \"ic3-pt-icon-sort\";\n\n static readonly emptyHeader = \"ic3-pt-empty-header\";\n\n static readonly selected = \"ic3-pt-selected\";\n\n static readonly hover = \"ic3-pt-hover\";\n\n}\n\n/**\n * List of classNames available\n */\nexport declare type PivotTableClassKey = keyof PivotTableClasses;\n\nexport interface PivotTableProps {\n\n variant?: string;\n}\n\nexport enum PivotTableHoverEffectOptions {\n NONE = 'NONE',\n SELECTION_OR_ROW = 'SELECTION_OR_ROW',\n ROW_OR_COLUMN = 'ROW_OR_COLUMN',\n ROW_AND_COLUMN = 'ROW_AND_COLUMN',\n ROW_ONLY = 'ROW_ONLY',\n COLUMN_ONLY = 'COLUMN_ONLY',\n}\n\n/**\n * Pivot Table Options (fields of the \"Chart\" tab in the widget editor).\n *\n * <pre>\n * Plugin ID : ic3\n * Widget/Template ID: PivotTable\n * </pre>\n *\n * @see WidgetTemplateChartOptions\n */\nexport interface PivotTableChartOptions extends BaseTableChartOptions {\n\n /**\n * Name of a variant. Note that a variant is possibly overriding defined options.\n */\n variant?: string;\n\n /**\n * Left Header Names (CSV).\n *\n * Names of the columns in the left header. A comma separated list of values\n * ($h for the hierarchy name, $l for the level name). The last value repeat itsef.\n */\n cornerText?: string;\n\n /**\n * Sortable (CSV).\n *\n * Display the sort options for the top left header. A list of boolean values: 'true', 'false'. The last value repeats itself.\n */\n leftHeaderSortable: string;\n\n /**\n * Merge Left Header.\n *\n * Use a single cell int the top left corner of the table.\n */\n mergeLeftHeader: boolean;\n\n /**\n * Wrap Top Header.\n *\n * Display the top header content on multiple lines.\n */\n topHeaderWrap: boolean;\n\n /**\n * Flatten Top Header.\n *\n * Removes drilldown and parent/child relations from top header.\n */\n flattenTopHeader: boolean;\n\n /**\n * Left Header Alignment (CSV).\n *\n * The first column (possibly a multi-hierarchy axis). A comma separated list of values:\n * 'left', 'center', 'right'. The last value repeats itself.\n */\n columnLeftHeaderAlign: string;\n\n /**\n * Hover Behavior.\n *\n * Highlight rows and/or columns on hover.\n */\n hoverOptions: PivotTableHoverEffectOptions;\n\n}\n\n","import {FormFieldObject} from \"../PublicTemplateForm\";\nimport {PaperOrientation} from \"../ITypes\";\n\nexport class PrintButtonClasses {\n\n static readonly root: string = \"ic3PrintButton\";\n\n static readonly progress: string = \"ic3PrintButton-progress\";\n\n static readonly cancel: string = \"ic3PrintButton-cancel\";\n\n}\n\nexport declare type PrintButtonClassKey = keyof PrintButtonClasses;\n\n/**\n * Print Button Options (fields of the \"Chart\" tab in the widget editor).\n *\n * <pre>\n * Plugin ID : ic3\n * Widget/Template ID: PrintButton\n * </pre>\n *\n * @see WidgetTemplateChartOptions\n */\nexport interface PrintButtonChartOptions extends FormFieldObject {\n\n caption: string;\n\n variant: \"text\" | \"outlined\" | \"contained\" | string;\n\n withDialog: boolean;\n\n paperSizeName?: string;\n paperOrientation?: PaperOrientation,\n\n \"$-fileName\"?: string;\n\n}\n\nexport interface StyledPrintButtonDivProps {\n\n variant: \"text\" | \"outlined\" | \"contained\" | string;\n\n}","/**\n * A dashboard application (i.e., list of dashboard, global filters...).\n */\nexport class ReportAppBarClasses {\n\n /**\n * Style applied to\n */\n static root = \"ic3AppBar-root\";\n /**\n * Style applied to\n */\n static title = \"ic3AppBar-title\";\n\n static titleC = \"ic3AppBar-titleC\";\n\n static globalFilter = \"ic3AppBar-globalFilter\";\n\n static globalFilterPanel = \"ic3AppBar-globalFilterPanel\";\n\n}\n\nexport declare type ReportAppBarClassKey = keyof ReportAppBarClasses;\n","import {BaseTableChartOptions} from \"./ThemeBaseTable\";\n\n/**\n * List of classNames available\n */\nexport declare type TableClassKey = keyof TableClasses;\n\n\n/**\n * All props of Mui-DataGridPro ( + variant )\n *\n * GridClasses\n *\n * https://mui.com/api/data-grid/data-grid-pro/\n */\nexport interface TableProps {\n\n noHeader: boolean;\n variant?: string;\n printing: boolean;\n}\n\n\n/**\n * Copy of\n * MUI CSS : https://mui.com/api/data-grid/data-grid-pro/#css\n */\nexport class TableClasses {\n /* \tStyles applied to the root element if autoHeight={true}. */\n static readonly 'autoHeight' = \"MuiDataGrid-autoHeight\";\n /* \tStyles applied to the icon of the boolean cell. */\n static readonly 'booleanCell' = \"MuiDataGrid-booleanCell\";\n /* \tStyles applied to the cell element if the cell is editable. */\n static readonly 'cell--editable' = \"MuiDataGrid-cell--editable\";\n /* \tStyles applied to the cell element if the cell is in edit mode. */\n static readonly 'cell--editing' = \"MuiDataGrid-cell--editing\";\n /* \tStyles applied to the cell element if align=\"center\". */\n static readonly 'cell--textCenter' = \"MuiDataGrid-cell--textCenter\";\n /* \tStyles applied to the cell element if align=\"left\". */\n static readonly 'cell--textLeft' = \"MuiDataGrid-cell--textLeft\";\n /* \tStyles applied to the cell element if align=\"right\". */\n static readonly 'cell--textRight' = \"MuiDataGrid-cell--textRight\";\n /* \tStyles applied to the cell element. */\n static readonly 'cell' = \"MuiDataGrid-cell\";\n /* \tStyles applied to the cell checkbox element. */\n static readonly 'cellCheckbox' = \"MuiDataGrid-cellCheckbox\";\n /* \tStyles applied to the selection checkbox element. */\n static readonly 'checkboxInput' = \"MuiDataGrid-checkboxInput\";\n /* \tStyles applied to the column header if headerAlign=\"center\". */\n static readonly 'columnHeader--alignCenter' = \"MuiDataGrid-columnHeader--alignCenter\";\n /* \tStyles applied to the column header if headerAlign=\"left\". */\n static readonly 'columnHeader--alignLeft' = \"MuiDataGrid-columnHeader--alignLeft\";\n /* \tStyles applied to the column header if headerAlign=\"right\". */\n static readonly 'columnHeader--alignRight' = \"MuiDataGrid-columnHeader--alignRight\";\n /* \tStyles applied to the floating column header element when it is dragged. */\n static readonly 'columnHeader--dragging' = \"MuiDataGrid-columnHeader--dragging\";\n /* \tStyles applied to the column header if it is being dragged. */\n static readonly 'columnHeader--moving' = \"MuiDataGrid-columnHeader--moving\";\n /* \tStyles applied to the column header if the type of the column is number. */\n static readonly 'columnHeader--numeric' = \"MuiDataGrid-columnHeader--numeric\";\n /* \tStyles applied to the column header if the column is sortable. */\n static readonly 'columnHeader--sortable' = \"MuiDataGrid-columnHeader--sortable\";\n /* \tStyles applied to the column header if the column is sorted. */\n static readonly 'columnHeader--sorted' = \"MuiDataGrid-columnHeader--sorted\";\n /* \tStyles applied to the column header element. */\n static readonly 'columnHeader' = \"MuiDataGrid-columnHeader\";\n /* \tStyles applied to the header checkbox cell element. */\n static readonly 'columnHeaderCheckbox' = \"MuiDataGrid-columnHeaderCheckbox\";\n /* \tStyles applied to the column header's draggable container element. */\n static readonly 'columnHeaderDraggableContainer' = \"MuiDataGrid-columnHeaderDraggableContainer\";\n /* \tStyles applied to the column headers wrapper if a column is being dragged. */\n static readonly 'columnHeaderDropZone' = \"MuiDataGrid-columnHeaderDropZone\";\n /* \tStyles applied to the column header's title element; */\n static readonly 'columnHeaderTitle' = \"MuiDataGrid-columnHeaderTitle\";\n /* \tStyles applied to the column header's title container element. */\n static readonly 'columnHeaderTitleContainer' = \"MuiDataGrid-columnHeaderTitleContainer\";\n /* \tStyles applied to the column headers. */\n static readonly 'columnHeaders' = \"MuiDataGrid-columnHeaders\";\n /* \tStyles applied to the column header separator if the column is resizable. */\n static readonly 'columnSeparator--resizable' = \"MuiDataGrid-columnSeparator--resizable\";\n /* \tStyles applied to the column header separator if the column is being resized. */\n static readonly 'columnSeparator--resizing' = \"MuiDataGrid-columnSeparator--resizing\";\n /* \tStyles applied to the column header separator if the side is \"left\". */\n static readonly 'columnSeparator--sideLeft' = \"MuiDataGrid-columnSeparator--sideLeft\";\n /* \tStyles applied to the column header separator if the side is \"right\". */\n static readonly 'columnSeparator--sideRight' = \"MuiDataGrid-columnSeparator--sideRight\";\n /* \tStyles applied to the column header separator element. */\n static readonly 'columnSeparator' = \"MuiDataGrid-columnSeparator\";\n /* \tStyles applied to the columns panel element. */\n static readonly 'columnsPanel' = \"MuiDataGrid-columnsPanel\";\n /* \tStyles applied to the columns panel row element. */\n static readonly 'columnsPanelRow' = \"MuiDataGrid-columnsPanelRow\";\n /* \tStyles applied to the panel element. */\n static readonly 'panel' = \"MuiDataGrid-panel\";\n /* \tStyles applied to the panel header element. */\n static readonly 'panelHeader' = \"MuiDataGrid-panelHeader\";\n /* \tStyles applied to the panel wrapper element. */\n static readonly 'panelWrapper' = \"MuiDataGrid-panelWrapper\";\n /* \tStyles applied to the panel content element. */\n static readonly 'panelContent' = \"MuiDataGrid-panelContent\";\n /* \tStyles applied to the panel footer element. */\n static readonly 'panelFooter' = \"MuiDataGrid-panelFooter\";\n /* \tStyles applied to the paper element. */\n static readonly 'paper' = \"MuiDataGrid-paper\";\n /* \tStyles applied to root of the boolean edit component. */\n static readonly 'editBooleanCell' = \"MuiDataGrid-editBooleanCell\";\n /* \tStyles applied to the root of the filter form component. */\n static readonly 'filterForm' = \"MuiDataGrid-filterForm\";\n /* \tStyles applied to the root of the input component. */\n static readonly 'editInputCell' = \"MuiDataGrid-editInputCell\";\n /* \tStyles applied to the filter icon element. */\n static readonly 'filterIcon' = \"MuiDataGrid-filterIcon\";\n /* \tStyles applied to the footer container element. */\n static readonly 'footerContainer' = \"MuiDataGrid-footerContainer\";\n /* \tStyles applied to the column header icon's container. */\n static readonly 'iconButtonContainer' = \"MuiDataGrid-iconButtonContainer\";\n /* \tStyles applied to the column header separator icon element. */\n static readonly 'iconSeparator' = \"MuiDataGrid-iconSeparator\";\n /* \tStyles applied to the main container element. */\n static readonly 'main' = \"MuiDataGrid-main\";\n /* \tStyles applied to the menu element. */\n static readonly 'menu' = \"MuiDataGrid-menu\";\n /* \tStyles applied to the menu icon element. */\n static readonly 'menuIcon' = \"MuiDataGrid-menuIcon\";\n /* \tStyles applied to the menu icon button element. */\n static readonly 'menuIconButton' = \"MuiDataGrid-menuIconButton\";\n /* \tStyles applied to the menu icon element if the menu is open. */\n static readonly 'menuOpen' = \"MuiDataGrid-menuOpen\";\n /* \tStyles applied to the menu list element. */\n static readonly 'menuList' = \"MuiDataGrid-menuList\";\n /* \tStyles applied to the overlay element. */\n static readonly 'overlay' = \"MuiDataGrid-overlay\";\n /* \tStyles applied to the virtualization container. */\n static readonly 'virtualScroller' = \"MuiDataGrid-virtualScroller\";\n /* \tStyles applied to the virtualization content. */\n static readonly 'virtualScrollerContent' = \"MuiDataGrid-virtualScrollerContent\";\n /* \tStyles applied to the virtualization render zone. */\n static readonly 'virtualScrollerRenderZone' = \"MuiDataGrid-virtualScrollerRenderZone\";\n /* \tStyles applied to the pinned columns. */\n static readonly 'pinnedColumns' = \"MuiDataGrid-pinnedColumns\";\n /* \tStyles applied to the left pinned columns. */\n static readonly 'pinnedColumns--left' = \"MuiDataGrid-pinnedColumns--left\";\n /* \tStyles applied to the right pinned columns. */\n static readonly 'pinnedColumns--right' = \"MuiDataGrid-pinnedColumns--right\";\n /* \tStyles applied to the root element. */\n static readonly 'root' = \"MuiDataGrid-root\";\n /* \tStyles applied to the row element if the row is editable. */\n static readonly 'row--editable' = \"MuiDataGrid-row--editable\";\n /* \tStyles applied to the row element if the row is in edit mode. */\n static readonly 'row--editing' = \"MuiDataGrid-row--editing\";\n /* \tStyles applied to the row element. */\n static readonly 'row' = \"MuiDataGrid-row\";\n /* \tStyles applied to the footer row count element to show the total number of rows. Only works when pagination is disabled. */\n static readonly 'rowCount' = \"MuiDataGrid-rowCount\";\n /* \tStyles applied to both scroll area elements. */\n static readonly 'scrollArea' = \"MuiDataGrid-scrollArea\";\n /* \tStyles applied to the left scroll area element. */\n static readonly 'scrollArea--left' = \"MuiDataGrid-scrollArea--left\";\n /* \tStyles applied to the right scroll area element. */\n static readonly 'scrollArea--right' = \"MuiDataGrid-scrollArea--right\";\n /* \tStyles applied to the footer selected row count element. */\n static readonly 'selectedRowCount' = \"MuiDataGrid-selectedRowCount\";\n /* \tStyles applied to the sort icon element. */\n static readonly 'sortIcon' = \"MuiDataGrid-sortIcon\";\n /* \tStyles applied to the toolbar container element. */\n static readonly 'toolbarContainer' = \"MuiDataGrid-toolbarContainer\";\n /* \tStyles applied to the toolbar filter list element. */\n static readonly 'toolbarFilterList' = \"MuiDataGrid-toolbarFilterList\";\n /* \tStyles applied to both the cell and the column header if showColumnRightBorder={true}. */\n static readonly 'withBorder' = \"MuiDataGrid-withBorder\";\n /* \tStyles applied to the root of the grouping column of the tree data. */\n static readonly 'treeDataGroupingCell' = \"MuiDataGrid-treeDataGroupingCell\";\n /* \tStyles applied to the toggle of the grouping column of the tree data. */\n static readonly 'treeDataGroupingCellToggle' = \"MuiDataGrid-treeDataGroupingCellToggle\";\n\n}\n\n/**\n * Table Options (fields of the \"Chart\" tab in the widget editor).\n *\n * <pre>\n * Plugin ID : ic3\n * Widget/Template ID: Table\n * </pre>\n *\n * @see WidgetTemplateChartOptions\n */\nexport interface TableChartOptions extends BaseTableChartOptions {\n\n /**\n * Name of a variant. Note that a variant is possibly overriding defined options.\n */\n variant?: string;\n\n /**\n * Footer.\n *\n * Display a footer. Does not apply when the table is auto-expanding vertically.\n */\n footer: boolean;\n\n /**\n * Add Pagination.\n *\n * Incompatible with 'Row Count' and/or 'Selected Row Count' settings.\n */\n footerPagination: boolean;\n\n /**\n * Add Row Count.\n *\n * Incompatible with 'Pagination'.\n */\n footerRowCount: boolean;\n\n /**\n * Page Size.\n *\n * Set the initial number of rows in one page.\n */\n pageSize: number;\n\n /**\n * Page Size Options (CSV).\n *\n * Select the 'Page Size' dynamically using the component UI. A comma separated list of integer values.\n *\n * E.g., 10,20,50\n */\n rowsPerPageOptions: string;\n\n /**\n * Use column header groups.\n */\n useColumnGrouping: boolean;\n\n /**\n * Use checkbox selection. Adds a column with checkboxes as the first column.\n */\n useCheckboxSelection: boolean;\n\n /**\n * Show the first column as a hierarchy instead of a flat list.\n */\n showHierarchy: boolean;\n\n /**\n * MDX Console support for now.\n */\n showRowNumbers?: boolean;\n\n}\n","export class ReportAppLeftPanelClasses {\n\n static readonly root = \"ic3ReportAppLeftPanel-root\";\n\n static readonly menu = \"ic3ReportAppLeftPanel-menu\";\n\n static readonly title = \"ic3ReportAppLeftPanel-title\";\n\n static readonly filter = \"ic3ReportAppLeftPanel-filter\";\n\n}\n\nexport declare type ReportAppLeftPanelClassKey = keyof ReportAppLeftPanelClasses;\n","export class WidgetBoxClasses {\n\n /**\n * Root Styles applied to the widgetBox\n */\n static readonly root: string = \"ic3WidgetBox\";\n\n\n /**\n * Root Styles applied to the widgetBox root element for a 'standard' widget -> &.className !\n */\n static readonly standard: string = \"ic3WidgetBox-standard\";\n\n /**\n * Root Styles applied to the widgetBox root element for a 'embedded' widget (the widget is inside another widget)\n */\n static readonly embedded: string = \"ic3WidgetBox-embedded\";\n\n /**\n * Root Styles applied to the widgetBox root element for a 'zoomed' widget\n */\n static readonly zoom: string = \"ic3WidgetBox-zoom\";\n\n /**\n * Root Styles applied to the widgetBox root element for a 'no decoration' widget (template definition setting, no borders ...)\n */\n static readonly noDecoration: string = \"ic3WidgetBox-noDecoration\";\n\n /**\n * Styles applied to the widgetBox container element\n */\n static readonly container: string = \"ic3WidgetBox-container\";\n\n /**\n * Styles applied to the template JS content\n */\n static readonly templateJSContent: string = \"ic3WidgetBox-TemplateJS-content\";\n\n /**\n * Styles applied to the template React content\n */\n static readonly templateReactContent: string = \"ic3WidgetBox-TemplateReact-content\";\n\n /**\n * Styles applied to the widgetBox content element (the widget without header and user menu)\n */\n static readonly content: string = \"ic3WidgetBox-content\";\n\n /**\n * Styles applied to child of content (above)\n */\n static readonly contentRoot: string = \"ic3WidgetBox-content-root\";\n\n /**\n * Styles applied to the widgetBox user menu element (the icons for the user menu)\n */\n static readonly userMenu: string = \"ic3WidgetBox-userMenu\";\n\n /**\n * Styles applied to the widgetBox header element\n */\n static readonly header: string = \"ic3WidgetBox-header\";\n\n /**\n * Styles applied to the widgetBox header left element ( title and drilldown )\n */\n static readonly headerLeft: string = \"ic3WidgetBox-headerLeft\";\n\n /**\n * Styles applied to the widgetBox header right element ( user menu )\n */\n static readonly headerRight: string = \"ic3WidgetBox-headerRight\";\n\n /**\n * Styles applied to the header element has no title\n */\n static readonly headerNoTitle: string = \"ic3WidgetBox-headerNoTitle\";\n\n /**\n * Styles applied to the header element container has no title\n */\n static readonly headerNoTitleContainer: string = \"ic3WidgetBox-headerNoTitleContainer\";\n\n /**\n * Styles applied to the widgetBox header Title element\n */\n static readonly headerTitle: string = \"ic3WidgetBox-headerTitle\";\n\n /**\n * Styles applied to the widgetBox header Drilldown element\n */\n static readonly headerLeftSeparator: string = \"ic3WidgetBox-headerLeftSeparator\";\n\n /**\n * Styles applied to the widgetBox header Drilldown element\n */\n static readonly headerDrilldown: string = \"ic3WidgetBox-headerDrilldown\";\n\n /**\n * Root Styles applied to the widgetBox root element when the box is with header\n */\n static readonly withHeader: string = \"ic3WidgetBox-withHeader\";\n\n /**\n * Root Styles applied to the widgetBox root element when the box is without header\n */\n static readonly withoutHeader: string = \"ic3WidgetBox-withoutHeader\";\n\n /**\n * Styles applied to the widgetBox user menu element when the userMenu is open\n */\n static readonly userMenuOpen: string = \"ic3WidgetBox-userMenuOpen\";\n\n /**\n * Styles applied to the widgetBox user menu element when the userMenu id closed\n */\n static readonly userMenuClosed: string = \"ic3WidgetBox-userMenuClosed\";\n\n /**\n * attribute for the root div containing the widgetId\n */\n static readonly widgetIdAttribute: string = \"data-widget-id\";\n\n static readonly nsIdAttribute: string = \"data-ns-id\";\n}\n\nexport declare type WidgetBoxClassKey = keyof WidgetBoxClasses;\n\nexport enum WidgetBoxTooltipType {\n dialog = \"dialog\",\n tooltip = \"tooltip\",\n}\n\nexport enum WidgetBoxVisibilityType {\n default = \"default\",\n invisible = \"invisible\",\n invisibleInPrinting = \"invisibleInPrinting\",\n}\n\nexport enum ResizingConstraintOptions {\n FixedWidthLeftAligned = \"FixedWidthLeftAligned\",\n FixedWidthRightAligned = \"FixedWidthRightAligned\"\n}\n\nexport enum PositionModeOptions {\n Fixed = \"Fixed\",\n}\n\n/**\n * Support for repetition widget | pivot table expanding to make the whole content visible.\n */\nexport interface IWidgetBoxExpandOptions {\n\n active: boolean;\n\n keepBoxHeader: boolean;\n keepTableHeader: boolean;\n onlyWhenPrinting: boolean;\n}\n\nexport interface IWidgetRectangle {\n top: number;\n left: number;\n height: number;\n width: number;\n}\n\n/**\n * Widget Box Options (fields of the \"Box\" tab in the widget editor).\n *\n * @see https://github.com/ic3-software/ic3-demo-plugin-theme\n */\nexport interface WidgetBoxOptions {\n\n /**\n * Name of a variant. Note that a variant is possibly overriding defined options.\n */\n variant?: string;\n\n /**\n * Message that is displayed when the widget cannot render yet\n * (waiting for its initial result or mandatory event value).\n */\n waitingEventOrResult?: string;\n\n /**\n * Use the chart title to define the information displayed in the widget box header.\n */\n withHeader: boolean;\n\n visibility: WidgetBoxVisibilityType;\n\n /**\n * Behavior of the widget when the dashboard is being resized.\n */\n resizingConstraint?: ResizingConstraintOptions\n\n /**\n * The widget will (vertically) expand to fit its content.\n */\n autoExpandContent: IWidgetBoxExpandOptions;\n\n rectangle: IWidgetRectangle;\n\n}\n\nexport interface WidgetBoxDivProps {\n variant: string;\n}","export class WidgetBoxContentMessageClasses {\n\n /**\n * Style applied to the root div of the widget box content.\n */\n static root = \"ic3WidgetBoxContentMessage-root\";\n /**\n * Style applied to the div containing the message.\n */\n static content = \"ic3WidgetBoxContentMessage-content\";\n}\n\nexport declare type WidgetBoxContentMessageClassKey = keyof WidgetBoxContentMessageClasses;\n","export class WidgetFilteredByClasses {\n\n static readonly text: string = \"ic3WidgetFilteredBy-text\";\n static readonly table: string = \"ic3WidgetFilteredBy-table\";\n\n}\n\nexport declare type WidgetFilteredByClassesKey = keyof WidgetFilteredByClasses;","export class ThemeIc3TableCellClasses {\n\n}\n\nexport declare type ThemeIc3TableCellClassesKey = keyof ThemeIc3TableCellClasses;\n\nexport interface Ic3TableCellProps {\n align?: 'left' | 'right' | 'center';\n\n /**\n * True if and only if the cell has a cell-renderer.\n */\n hasRenderer?: boolean;\n}","/**\n * The spinner when a widget is loading.\n */\nexport class ThemeIc3WidgetBoxSpinner {\n\n static readonly overlay = \"Ic3WidgetBoxSpinner-spinnerOverlayEx\";\n\n static readonly spinner = \"Ic3WidgetBoxSpinner-spinner\";\n\n static readonly spinnerProgress = \"Ic3WidgetBoxSpinner-spinnerProgress\";\n\n}\n\nexport declare type ThemeIc3WidgetBoxSpinnerClassesKey = keyof ThemeIc3WidgetBoxSpinner;\n\nexport interface Ic3WidgetBoxSpinnerProps {\n /**\n * Size of the spinner. Default = 48.\n */\n size: number;\n}","\nexport class HomeCardClasses {\n\n static readonly background = \"ic3HomeCard-background\";\n\n static readonly card = \"ic3HomeCard-card\";\n\n static readonly menuIcon = \"ic3HomeCard-menuIcon\";\n\n}\n\nexport declare type HomeCardClassKey = keyof HomeCardClasses;\n\nexport interface HomeCardProps {\n appId: string;\n}","\nexport class HomeConsoleClasses {\n\n static readonly logoBg = \"ic3HomeConsole-logoBg\";\n\n static readonly logoFg = \"ic3HomeConsole-logoFg\";\n\n static readonly logoBgSvg = \"ic3HomeConsole-logoBgSvg\";\n\n static readonly logoFgSvg = \"ic3HomeConsole-logoFgSvg\";\n\n static readonly cardTextureAdmin = \"ic3HomeConsole-cardTextureAdmin\";\n\n static readonly backgroundOthers = \"ic3HomeConsole-backgroundOthers\";\n\n static readonly textureLeft = \"ic3HomeConsole-textureLeft\";\n\n static readonly textureRight = \"ic3HomeConsole-textureRight\";\n\n static readonly customLayout = \"ic3HomeConsole-customLayout\";\n\n static readonly caption = \"ic3HomeConsole-caption\";\n\n static readonly appName = \"ic3HomeConsole-appName\";\n\n static readonly appNameRecent = \"ic3HomeConsole-appName-recent\";\n\n static readonly slogan = \"ic3HomeConsole-slogan\";\n\n}\n\nexport declare type HomeConsoleClassKey = keyof HomeConsoleClasses;\n","export class FilterPanelViewsMenuClasses {\n\n static readonly save = \"ic3FilterPanelViewsMenu-save\";\n\n static readonly view = \"ic3FilterPanelViewsMenu-view\";\n\n static readonly maxViewsReachedText = \"ic3FilterPanelViewsMenu-maxViewsReachedText\";\n\n static readonly viewsText = \"ic3FilterPanelViewsMenu-viewsText\";\n\n static readonly errorText = \"ic3FilterPanelViewsMenu-errorText\";\n\n}\n\nexport declare type FilterPanelViewsMenuClassesKey = keyof FilterPanelViewsMenuClasses;\n","export class Ic3CustomDrilldownMenuClasses {\n\n static readonly header = \"Ic3CustomDrilldownMenu-header\";\n\n static readonly list = \"Ic3CustomDrilldownMenu-list\";\n\n static readonly headerText = \"Ic3CustomDrilldownMenu-headerText\";\n\n static readonly back = \"Ic3CustomDrilldownMenu-back\";\n\n}\n\nexport declare type Ic3CustomDrilldownMenuClassesKey = keyof Ic3CustomDrilldownMenuClasses;\n"],"names":["IcEventType","WidgetNotificationType","EmbeddedThemeNames","TidyColumnsType","ITidyColumnsSource","TidyTableMappingColumnSelectorOptions","IAmcharts4DataKey","SelectionBehaviour","SortingType","InterpolationType","InterpolationAppliedTo","SortingMethod","UseDatetimeAxis","ISeriesValuesType","CompareTextInterpretationType","TargetTextPosition","TargetTextIconSet","SparkChartType","SparklinePosition","QueryType","WidgetRenderLayoutStatus","WidgetWarningSeverity","IContentMessageType","IWidgetTemplateMdxBuilderAxisPropsConstraint","WidgetTemplateDefinitionType","TemplateEventActionNames","IFormFieldGroupTypes","AutocompleteNoOptionsText","AutocompleteActions","ConditionalRuleOperators","TableRowHeightOptions","ITidyColumnNamedProperties","SelectionMode","TreeFireEventMode","TidyPivotTableLikeNodeStatus","callbackfn","TidyHistogramBucketFormat","TidyHistogramBucketType","HistogramBinType","AxisRangeType","GeoMapChartProjection","GeoMapChartUnMatchedRegionStrategy","Amcharts4LineSmoothMethod","TrendLineType","LegendPositionOption","OverflowType","CategoryAxisRotateLabels","SeriesLabelsPosition","SeriesType","DrawSeriesOnAxis","TopBarOptions","LeftBarOptions","TableColumnSizing","DatePickerRangeDirection","InitialDateFrom","ExportToExcelMethod","FilterSliderRenderingType","GoogleMapFeaturesStyles","GoogleMapTypeId","ImageResizingOptions","PivotTableHoverEffectOptions","WidgetBoxTooltipType","WidgetBoxVisibilityType","ResizingConstraintOptions","PositionModeOptions"],"mappings":"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"}