@sisense/sdk-ui-angular 1.32.0 → 1.34.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 (140) hide show
  1. package/dist/ai/lib/component-wrapper-helpers/context-connectors.d.ts +2 -2
  2. package/dist/ai/lib/components/chatbot.component.d.ts +3 -5
  3. package/dist/ai/lib/components/get-nlg-insights.component.d.ts +3 -5
  4. package/dist/ai/lib/sdk-ai.module.d.ts +0 -1
  5. package/dist/ai/lib/sdk-ui-core-exports.d.ts +1 -1
  6. package/dist/ai/lib/services/ai.service.d.ts +1 -2
  7. package/dist/ai/public-api.d.ts +2 -2
  8. package/dist/esm2020/ai/lib/component-wrapper-helpers/context-connectors.mjs +15 -9
  9. package/dist/esm2020/ai/lib/components/chatbot.component.mjs +10 -13
  10. package/dist/esm2020/ai/lib/components/get-nlg-insights.component.mjs +10 -13
  11. package/dist/esm2020/ai/lib/sdk-ai.module.mjs +2 -3
  12. package/dist/esm2020/ai/lib/sdk-ui-core-exports.mjs +1 -1
  13. package/dist/esm2020/ai/lib/services/ai.service.mjs +2 -3
  14. package/dist/esm2020/ai/public-api.mjs +3 -3
  15. package/dist/esm2020/lib/component-wrapper-helpers/context-connectors.mjs +60 -36
  16. package/dist/esm2020/lib/components/charts/area-chart.component.mjs +1 -2
  17. package/dist/esm2020/lib/components/charts/area-range-chart.component.mjs +1 -2
  18. package/dist/esm2020/lib/components/charts/areamap-chart.component.mjs +1 -2
  19. package/dist/esm2020/lib/components/charts/bar-chart.component.mjs +1 -2
  20. package/dist/esm2020/lib/components/charts/boxplot-chart.component.mjs +1 -2
  21. package/dist/esm2020/lib/components/charts/chart.component.mjs +8 -10
  22. package/dist/esm2020/lib/components/charts/column-chart.component.mjs +1 -2
  23. package/dist/esm2020/lib/components/charts/funnel-chart.component.mjs +1 -2
  24. package/dist/esm2020/lib/components/charts/index.mjs +13 -13
  25. package/dist/esm2020/lib/components/charts/indicator-chart.component.mjs +1 -2
  26. package/dist/esm2020/lib/components/charts/line-chart.component.mjs +1 -2
  27. package/dist/esm2020/lib/components/charts/pie-chart.component.mjs +1 -2
  28. package/dist/esm2020/lib/components/charts/pivot-table.component.mjs +8 -9
  29. package/dist/esm2020/lib/components/charts/polar-chart.component.mjs +1 -2
  30. package/dist/esm2020/lib/components/charts/scatter-chart.component.mjs +1 -2
  31. package/dist/esm2020/lib/components/charts/scattermap-chart.component.mjs +1 -1
  32. package/dist/esm2020/lib/components/charts/sunburst-chart.component.mjs +1 -2
  33. package/dist/esm2020/lib/components/charts/table.component.mjs +8 -10
  34. package/dist/esm2020/lib/components/charts/treemap-chart.component.mjs +1 -2
  35. package/dist/esm2020/lib/components/context-menu.component.mjs +9 -9
  36. package/dist/esm2020/lib/components/dashboard/dashboard-by-id.component.mjs +11 -12
  37. package/dist/esm2020/lib/components/dashboard/dashboard.component.mjs +8 -9
  38. package/dist/esm2020/lib/components/dashboard/index.mjs +2 -2
  39. package/dist/esm2020/lib/components/drilldown-breadcrumbs.component.mjs +8 -9
  40. package/dist/esm2020/lib/components/filters/criteria-filter-tile.component.mjs +8 -9
  41. package/dist/esm2020/lib/components/filters/date-range-filter-tile.component.mjs +8 -9
  42. package/dist/esm2020/lib/components/filters/index.mjs +3 -3
  43. package/dist/esm2020/lib/components/filters/member-filter-tile.component.mjs +8 -9
  44. package/dist/esm2020/lib/components/filters/relative-date-filter-tile.component.mjs +8 -9
  45. package/dist/esm2020/lib/components/index.mjs +4 -4
  46. package/dist/esm2020/lib/components/widgets/chart-widget.component.mjs +8 -10
  47. package/dist/esm2020/lib/components/widgets/dashboard-widget.component.mjs +8 -9
  48. package/dist/esm2020/lib/components/widgets/drilldown-widget.component.mjs +18 -19
  49. package/dist/esm2020/lib/components/widgets/index.mjs +5 -4
  50. package/dist/esm2020/lib/components/widgets/pivot-table-widget.component.mjs +126 -0
  51. package/dist/esm2020/lib/components/widgets/table-widget.component.mjs +8 -9
  52. package/dist/esm2020/lib/components/widgets/widget-by-id.component.mjs +8 -9
  53. package/dist/esm2020/lib/decorators/decorators.module.mjs +1 -1
  54. package/dist/esm2020/lib/decorators/index.mjs +2 -2
  55. package/dist/esm2020/lib/decorators/trackable.decorator.mjs +2 -2
  56. package/dist/esm2020/lib/sdk-ui-core-exports.mjs +2 -2
  57. package/dist/esm2020/lib/sdk-ui.module.mjs +9 -6
  58. package/dist/esm2020/lib/services/dashboard.service.mjs +1 -1
  59. package/dist/esm2020/lib/services/hierarchy.service.mjs +1 -1
  60. package/dist/esm2020/lib/services/index.mjs +4 -4
  61. package/dist/esm2020/lib/services/plugins.service.mjs +1 -1
  62. package/dist/esm2020/lib/services/query.service.mjs +60 -6
  63. package/dist/esm2020/lib/services/sisense-context.service.mjs +1 -1
  64. package/dist/esm2020/lib/services/theme.service.mjs +2 -2
  65. package/dist/esm2020/lib/services/widget.service.mjs +1 -1
  66. package/dist/esm2020/lib/types/chart-event-props.mjs +1 -1
  67. package/dist/esm2020/lib/types/dashboard-config.mjs +2 -0
  68. package/dist/esm2020/lib/types/index.mjs +4 -3
  69. package/dist/esm2020/lib/utilities/dashboard-helpers.mjs +118 -0
  70. package/dist/esm2020/lib/utilities/dashboard-model-translator.mjs +49 -0
  71. package/dist/esm2020/lib/utilities/index.mjs +7 -0
  72. package/dist/esm2020/lib/utilities/widget-model-translator.mjs +304 -0
  73. package/dist/esm2020/public-api.mjs +5 -4
  74. package/dist/esm2020/version.mjs +2 -2
  75. package/dist/fesm2015/sisense-sdk-ui-angular-ai.mjs +32 -36
  76. package/dist/fesm2015/sisense-sdk-ui-angular-ai.mjs.map +1 -1
  77. package/dist/fesm2015/sisense-sdk-ui-angular.mjs +2651 -1987
  78. package/dist/fesm2015/sisense-sdk-ui-angular.mjs.map +1 -1
  79. package/dist/fesm2020/sisense-sdk-ui-angular-ai.mjs +32 -34
  80. package/dist/fesm2020/sisense-sdk-ui-angular-ai.mjs.map +1 -1
  81. package/dist/fesm2020/sisense-sdk-ui-angular.mjs +2653 -1988
  82. package/dist/fesm2020/sisense-sdk-ui-angular.mjs.map +1 -1
  83. package/dist/lib/component-wrapper-helpers/context-connectors.d.ts +5 -5
  84. package/dist/lib/components/charts/area-chart.component.d.ts +1 -2
  85. package/dist/lib/components/charts/area-range-chart.component.d.ts +1 -2
  86. package/dist/lib/components/charts/areamap-chart.component.d.ts +1 -2
  87. package/dist/lib/components/charts/bar-chart.component.d.ts +1 -2
  88. package/dist/lib/components/charts/boxplot-chart.component.d.ts +1 -2
  89. package/dist/lib/components/charts/chart.component.d.ts +1 -2
  90. package/dist/lib/components/charts/column-chart.component.d.ts +1 -2
  91. package/dist/lib/components/charts/funnel-chart.component.d.ts +1 -2
  92. package/dist/lib/components/charts/index.d.ts +12 -12
  93. package/dist/lib/components/charts/indicator-chart.component.d.ts +1 -2
  94. package/dist/lib/components/charts/line-chart.component.d.ts +1 -2
  95. package/dist/lib/components/charts/pie-chart.component.d.ts +1 -2
  96. package/dist/lib/components/charts/pivot-table.component.d.ts +1 -1
  97. package/dist/lib/components/charts/polar-chart.component.d.ts +1 -2
  98. package/dist/lib/components/charts/scatter-chart.component.d.ts +1 -2
  99. package/dist/lib/components/charts/scattermap-chart.component.d.ts +1 -1
  100. package/dist/lib/components/charts/sunburst-chart.component.d.ts +1 -2
  101. package/dist/lib/components/charts/table.component.d.ts +1 -2
  102. package/dist/lib/components/charts/treemap-chart.component.d.ts +1 -2
  103. package/dist/lib/components/context-menu.component.d.ts +1 -1
  104. package/dist/lib/components/dashboard/dashboard-by-id.component.d.ts +10 -7
  105. package/dist/lib/components/dashboard/dashboard.component.d.ts +6 -3
  106. package/dist/lib/components/dashboard/index.d.ts +1 -1
  107. package/dist/lib/components/drilldown-breadcrumbs.component.d.ts +1 -1
  108. package/dist/lib/components/filters/criteria-filter-tile.component.d.ts +1 -1
  109. package/dist/lib/components/filters/date-range-filter-tile.component.d.ts +1 -1
  110. package/dist/lib/components/filters/index.d.ts +2 -2
  111. package/dist/lib/components/filters/member-filter-tile.component.d.ts +1 -1
  112. package/dist/lib/components/filters/relative-date-filter-tile.component.d.ts +1 -1
  113. package/dist/lib/components/index.d.ts +3 -3
  114. package/dist/lib/components/widgets/chart-widget.component.d.ts +1 -2
  115. package/dist/lib/components/widgets/dashboard-widget.component.d.ts +1 -1
  116. package/dist/lib/components/widgets/drilldown-widget.component.d.ts +2 -5
  117. package/dist/lib/components/widgets/index.d.ts +4 -3
  118. package/dist/lib/components/widgets/pivot-table-widget.component.d.ts +127 -0
  119. package/dist/lib/components/widgets/table-widget.component.d.ts +1 -1
  120. package/dist/lib/components/widgets/widget-by-id.component.d.ts +1 -1
  121. package/dist/lib/decorators/index.d.ts +1 -1
  122. package/dist/lib/sdk-ui-core-exports.d.ts +2 -2
  123. package/dist/lib/sdk-ui.module.d.ts +4 -4
  124. package/dist/lib/services/dashboard.service.d.ts +1 -1
  125. package/dist/lib/services/hierarchy.service.d.ts +1 -1
  126. package/dist/lib/services/index.d.ts +3 -3
  127. package/dist/lib/services/plugins.service.d.ts +1 -1
  128. package/dist/lib/services/query.service.d.ts +44 -3
  129. package/dist/lib/services/sisense-context.service.d.ts +1 -1
  130. package/dist/lib/services/theme.service.d.ts +1 -1
  131. package/dist/lib/types/dashboard-config.d.ts +24 -0
  132. package/dist/lib/types/index.d.ts +3 -2
  133. package/dist/lib/utilities/dashboard-helpers.d.ts +104 -0
  134. package/dist/lib/utilities/dashboard-model-translator.d.ts +47 -0
  135. package/dist/lib/utilities/index.d.ts +23 -0
  136. package/dist/lib/utilities/widget-model-translator.d.ts +289 -0
  137. package/dist/package.json +1 -1
  138. package/dist/public-api.d.ts +5 -4
  139. package/dist/version.d.ts +1 -1
  140. package/package.json +7 -7
@@ -0,0 +1,304 @@
1
+ import { widgetModelTranslator as widgetModelTranslatorPreact, } from '@sisense/sdk-ui-preact';
2
+ /**
3
+ * Translates a {@link WidgetModel} to the parameters for executing a query for the widget.
4
+ *
5
+ * @example
6
+ * ```ts
7
+ const widgetModel = await widgetService.getWidgetModel({
8
+ dashboardOid: 'your-dashboard-oid',
9
+ widgetOid: 'your-widget-oid'
10
+ });
11
+ const executeQueryParams = widgetModelTranslator.toExecuteQueryParams(widgetModel);
12
+ const queryResult = await queryService.executeQuery(executeQueryParams);
13
+ * ```
14
+ *
15
+ * Note: this method is not supported for getting pivot query.
16
+ * Use {@link toExecutePivotQueryParams} instead for getting query parameters for the pivot widget.
17
+ */
18
+ export const toExecuteQueryParams = (widgetModel) => {
19
+ return widgetModelTranslatorPreact.toExecuteQueryParams(widgetModel);
20
+ };
21
+ /**
22
+ * Translates a {@link WidgetModel} to the parameters for executing a query for the pivot widget.
23
+ *
24
+ * @example
25
+ * ```ts
26
+ const widgetModel = await widgetService.getWidgetModel({
27
+ dashboardOid: 'your-dashboard-oid',
28
+ widgetOid: 'your-widget-oid'
29
+ });
30
+ const executePivotQueryParams = widgetModelTranslator.toExecutePivotQueryParams(widgetModel);
31
+ const queryResult = await queryService.executePivotQuery(executeQueryParams);
32
+ * ```
33
+ *
34
+ * Note: this method is supported only for getting pivot query.
35
+ * Use {@link toExecuteQueryParams} instead for getting query parameters for non-pivot widgets.
36
+ */
37
+ export const toExecutePivotQueryParams = (widgetModel) => {
38
+ return widgetModelTranslatorPreact.toExecutePivotQueryParams(widgetModel);
39
+ };
40
+ /**
41
+ * Translates a {@link WidgetModel} to the props for rendering a chart.
42
+ *
43
+ * @example
44
+ * ```html
45
+ <csdk-chart
46
+ *ngIf="chartProps"
47
+ [chartType]="chartProps.chartType"
48
+ [dataSet]="chartProps.dataSet"
49
+ [dataOptions]="chartProps.dataOptions"
50
+ [filters]="chartProps.filters"
51
+ [highlights]="chartProps.highlights"
52
+ [styleOptions]="chartProps.styleOptions"
53
+ />
54
+ * ```
55
+ *
56
+ * ```ts
57
+ import { Component } from '@angular/core';
58
+ import {
59
+ type ChartProps
60
+ WidgetService,
61
+ widgetModelTranslator,
62
+ } from '@sisense/sdk-ui-angular';
63
+
64
+ @Component({
65
+ selector: 'app-example',
66
+ templateUrl: './example.component.html',
67
+ styleUrls: ['./example.component.scss'],
68
+ })
69
+ export class ExampleComponent {
70
+ chartProps: ChartProps | null = null;
71
+
72
+ constructor(private widgetService: WidgetService) {}
73
+
74
+ async ngOnInit(): Promise<void> {
75
+ const widgetModel = await widgetService.getWidgetModel({
76
+ dashboardOid: 'your-dashboard-oid',
77
+ widgetOid: 'your-widget-oid'
78
+ });
79
+ this.chartProps = widgetModelTranslator.toChartProps(widgetModel);
80
+ }
81
+ }
82
+ * ```
83
+ *
84
+ * Note: this method is not supported for pivot widgets.
85
+ * Use {@link toPivotTableProps} instead for getting props for the {@link PivotTableComponent}.
86
+ */
87
+ export function toChartProps(widgetModel) {
88
+ return widgetModelTranslatorPreact.toChartProps(widgetModel);
89
+ }
90
+ /**
91
+ * Translates a {@link WidgetModel} to the props for rendering a table.
92
+ *
93
+ * @example
94
+ * ```html
95
+ <csdk-table
96
+ *ngIf="tableProps"
97
+ [dataSet]="tableProps.dataSet"
98
+ [dataOptions]="tableProps.dataOptions"
99
+ [filters]="tableProps.filters"
100
+ [styleOptions]="tableProps.styleOptions"
101
+ />
102
+ * ```
103
+ *
104
+ * ```ts
105
+ import { Component } from '@angular/core';
106
+ import {
107
+ type TableProps
108
+ WidgetService,
109
+ widgetModelTranslator,
110
+ } from '@sisense/sdk-ui-angular';
111
+
112
+ @Component({
113
+ selector: 'app-example',
114
+ templateUrl: './example.component.html',
115
+ styleUrls: ['./example.component.scss'],
116
+ })
117
+ export class ExampleComponent {
118
+ tableProps: TableProps | null = null;
119
+
120
+ constructor(private widgetService: WidgetService) {}
121
+
122
+ async ngOnInit(): Promise<void> {
123
+ const widgetModel = await widgetService.getWidgetModel({
124
+ dashboardOid: 'your-dashboard-oid',
125
+ widgetOid: 'your-widget-oid'
126
+ });
127
+ this.tableProps = widgetModelTranslator.toTableProps(widgetModel);
128
+ }
129
+ }
130
+ * ```
131
+ *
132
+ * Note: this method is not supported for chart and pivot widgets.
133
+ * Use {@link toChartProps} instead for getting props for the {@link ChartComponent}.
134
+ * Use {@link toPivotTableProps} instead for getting props for the {@link PivotTableComponent}.
135
+ */
136
+ export function toTableProps(widgetModel) {
137
+ return widgetModelTranslatorPreact.toTableProps(widgetModel);
138
+ }
139
+ /**
140
+ * Translates a {@link WidgetModel} to the props for rendering a pivot table.
141
+ *
142
+ * @example
143
+ * ```html
144
+ <csdk-pivot-table
145
+ *ngIf="pivotTableProps"
146
+ [dataSet]="pivotTableProps.dataSet"
147
+ [dataOptions]="pivotTableProps.dataOptions"
148
+ [filters]="pivotTableProps.filters"
149
+ [styleOptions]="pivotTableProps.styleOptions"
150
+ />
151
+ * ```
152
+ *
153
+ * ```ts
154
+ import { Component } from '@angular/core';
155
+ import {
156
+ type PivotTableProps
157
+ WidgetService,
158
+ widgetModelTranslator,
159
+ } from '@sisense/sdk-ui-angular';
160
+
161
+ @Component({
162
+ selector: 'app-example',
163
+ templateUrl: './example.component.html',
164
+ styleUrls: ['./example.component.scss'],
165
+ })
166
+ export class ExampleComponent {
167
+ pivotTableProps: PivotTableProps | null = null;
168
+
169
+ constructor(private widgetService: WidgetService) {}
170
+
171
+ async ngOnInit(): Promise<void> {
172
+ const widgetModel = await widgetService.getWidgetModel({
173
+ dashboardOid: 'your-dashboard-oid',
174
+ widgetOid: 'your-widget-oid'
175
+ });
176
+ this.pivotTableProps = widgetModelTranslator.toPivotTableProps(widgetModel);
177
+ }
178
+ }
179
+ * ```
180
+ *
181
+ * Note: this method is not supported for chart or table widgets.
182
+ * Use {@link toChartProps} instead for getting props for the {@link ChartComponent}.
183
+ * Use {@link toTableProps} instead for getting props for the {@link TableComponent}.
184
+ */
185
+ export function toPivotTableProps(widgetModel) {
186
+ return widgetModelTranslatorPreact.toPivotTableProps(widgetModel);
187
+ }
188
+ /**
189
+ * Translates a {@link WidgetModel} to the props for rendering a chart widget.
190
+ *
191
+ * @example
192
+ * ```html
193
+ <csdk-chart-widget
194
+ *ngIf="chartWidgetProps"
195
+ [chartType]="chartWidgetProps.chartType"
196
+ [dataSource]="chartWidgetProps.dataSource"
197
+ [dataOptions]="chartWidgetProps.dataOptions"
198
+ [filters]="chartWidgetProps.filters"
199
+ [highlights]="chartWidgetProps.highlights"
200
+ [styleOptions]="chartWidgetProps.styleOptions"
201
+ />
202
+ * ```
203
+ *
204
+ * ```ts
205
+ import { Component } from '@angular/core';
206
+ import {
207
+ type ChartWidgetProps
208
+ WidgetService,
209
+ widgetModelTranslator,
210
+ } from '@sisense/sdk-ui-angular';
211
+
212
+ @Component({
213
+ selector: 'app-example',
214
+ templateUrl: './example.component.html',
215
+ styleUrls: ['./example.component.scss'],
216
+ })
217
+ export class ExampleComponent {
218
+ chartWidgetProps: ChartWidgetProps | null = null;
219
+
220
+ constructor(private widgetService: WidgetService) {}
221
+
222
+ async ngOnInit(): Promise<void> {
223
+ const widgetModel = await widgetService.getWidgetModel({
224
+ dashboardOid: 'your-dashboard-oid',
225
+ widgetOid: 'your-widget-oid'
226
+ });
227
+ this.chartWidgetProps = widgetModelTranslator.toChartWidgetProps(widgetModel);
228
+ }
229
+ }
230
+ * ```
231
+ *
232
+ * Note: this method is not supported for pivot widgets.
233
+ */
234
+ export function toChartWidgetProps(widgetModel) {
235
+ return widgetModelTranslatorPreact.toChartWidgetProps(widgetModel);
236
+ }
237
+ /**
238
+ * Translates a {@link WidgetModel} to the props for rendering a pivot table widget.
239
+ *
240
+ * @example
241
+ * ```html
242
+ <csdk-pivot-table-widget
243
+ *ngIf="pivotWidgetProps"
244
+ [dataSet]="pivotWidgetProps.dataSet"
245
+ [dataOptions]="pivotWidgetProps.dataOptions"
246
+ [filters]="pivotWidgetProps.filters"
247
+ [styleOptions]="pivotWidgetProps.styleOptions"
248
+ />
249
+ * ```
250
+ *
251
+ * ```ts
252
+ import { Component } from '@angular/core';
253
+ import {
254
+ type PivotTableWidgetProps
255
+ WidgetService,
256
+ widgetModelTranslator,
257
+ } from '@sisense/sdk-ui-angular';
258
+
259
+ @Component({
260
+ selector: 'app-example',
261
+ templateUrl: './example.component.html',
262
+ styleUrls: ['./example.component.scss'],
263
+ })
264
+ export class ExampleComponent {
265
+ pivotWidgetProps: PivotTableWidgetProps | null = null;
266
+
267
+ constructor(private widgetService: WidgetService) {}
268
+
269
+ async ngOnInit(): Promise<void> {
270
+ const widgetModel = await widgetService.getWidgetModel({
271
+ dashboardOid: 'your-dashboard-oid',
272
+ widgetOid: 'your-widget-oid'
273
+ });
274
+ this.pivotWidgetProps = widgetModelTranslator.toPivotTableWidgetProps(widgetModel);
275
+ }
276
+ }
277
+ * ```
278
+ *
279
+ * Note: this method is not supported for chart or table widgets.
280
+ * Use {@link toChartWidgetProps} instead for getting props for the {@link ChartWidgetComponent}.
281
+ */
282
+ export function toPivotTableWidgetProps(widgetModel) {
283
+ return widgetModelTranslatorPreact.toPivotTableWidgetProps(widgetModel);
284
+ }
285
+ /**
286
+ * Translates a {@link WidgetModel} to the props for rendering a text widget.
287
+ *
288
+ * @example
289
+ * ```ts
290
+ const widgetModel = await widgetService.getWidgetModel({
291
+ dashboardOid: 'your-dashboard-oid',
292
+ widgetOid: 'your-widget-oid'
293
+ });
294
+ const textWidgetProps = widgetModelTranslator.toTextWidgetProps(widgetModel);
295
+ * ```
296
+ *
297
+ * Note: this method is not supported for chart or pivot widgets.
298
+ * Use {@link toChartWidgetProps} instead for getting props for the {@link ChartWidgetComponent}.
299
+ * Use {@link toPivotTableWidgetProps} instead for getting props for the pivot table widget.
300
+ */
301
+ export function toTextWidgetProps(widgetModel) {
302
+ return widgetModelTranslatorPreact.toTextWidgetProps(widgetModel);
303
+ }
304
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LW1vZGVsLXRyYW5zbGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3V0aWxpdGllcy93aWRnZXQtbW9kZWwtdHJhbnNsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wscUJBQXFCLElBQUksMkJBQTJCLEdBQ3JELE1BQU0sd0JBQXdCLENBQUM7QUFXaEM7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxXQUF3QixFQUFzQixFQUFFO0lBQ25GLE9BQU8sMkJBQTJCLENBQUMsb0JBQW9CLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDdkUsQ0FBQyxDQUFDO0FBRUY7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsQ0FBQyxXQUF3QixFQUEyQixFQUFFO0lBQzdGLE9BQU8sMkJBQTJCLENBQUMseUJBQXlCLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDNUUsQ0FBQyxDQUFDO0FBRUY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4Q0c7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUFDLFdBQXdCO0lBQ25ELE9BQU8sMkJBQTJCLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQy9ELENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkNHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBQyxXQUF3QjtJQUNuRCxPQUFPLDJCQUEyQixDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUMvRCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTZDRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxXQUF3QjtJQUN4RCxPQUFPLDJCQUEyQixDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3BFLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkNHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUFDLFdBQXdCO0lBQ3pELE9BQU8sMkJBQTJCLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDckUsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRDRztBQUNILE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxXQUF3QjtJQUM5RCxPQUFPLDJCQUEyQixDQUFDLHVCQUF1QixDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQzFFLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsV0FBd0I7SUFDeEQsT0FBTywyQkFBMkIsQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUNwRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgdHlwZSBUZXh0V2lkZ2V0UHJvcHMsXG4gIHR5cGUgV2lkZ2V0TW9kZWwsXG4gIHdpZGdldE1vZGVsVHJhbnNsYXRvciBhcyB3aWRnZXRNb2RlbFRyYW5zbGF0b3JQcmVhY3QsXG59IGZyb20gJ0BzaXNlbnNlL3Nkay11aS1wcmVhY3QnO1xuXG5pbXBvcnQge1xuICBDaGFydFByb3BzLFxuICBDaGFydFdpZGdldFByb3BzLFxuICBQaXZvdFRhYmxlUHJvcHMsXG4gIFBpdm90VGFibGVXaWRnZXRQcm9wcyxcbiAgVGFibGVQcm9wcyxcbn0gZnJvbSAnLi4vY29tcG9uZW50cyc7XG5pbXBvcnQgeyBFeGVjdXRlUGl2b3RRdWVyeVBhcmFtcywgRXhlY3V0ZVF1ZXJ5UGFyYW1zIH0gZnJvbSAnLi4vc2VydmljZXMnO1xuXG4vKipcbiAqIFRyYW5zbGF0ZXMgYSB7QGxpbmsgV2lkZ2V0TW9kZWx9IHRvIHRoZSBwYXJhbWV0ZXJzIGZvciBleGVjdXRpbmcgYSBxdWVyeSBmb3IgdGhlIHdpZGdldC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbmNvbnN0IHdpZGdldE1vZGVsID0gYXdhaXQgd2lkZ2V0U2VydmljZS5nZXRXaWRnZXRNb2RlbCh7XG4gIGRhc2hib2FyZE9pZDogJ3lvdXItZGFzaGJvYXJkLW9pZCcsXG4gIHdpZGdldE9pZDogJ3lvdXItd2lkZ2V0LW9pZCdcbn0pO1xuY29uc3QgZXhlY3V0ZVF1ZXJ5UGFyYW1zID0gd2lkZ2V0TW9kZWxUcmFuc2xhdG9yLnRvRXhlY3V0ZVF1ZXJ5UGFyYW1zKHdpZGdldE1vZGVsKTtcbmNvbnN0IHF1ZXJ5UmVzdWx0ID0gYXdhaXQgcXVlcnlTZXJ2aWNlLmV4ZWN1dGVRdWVyeShleGVjdXRlUXVlcnlQYXJhbXMpO1xuICogYGBgXG4gKlxuICogTm90ZTogdGhpcyBtZXRob2QgaXMgbm90IHN1cHBvcnRlZCBmb3IgZ2V0dGluZyBwaXZvdCBxdWVyeS5cbiAqIFVzZSB7QGxpbmsgdG9FeGVjdXRlUGl2b3RRdWVyeVBhcmFtc30gaW5zdGVhZCBmb3IgZ2V0dGluZyBxdWVyeSBwYXJhbWV0ZXJzIGZvciB0aGUgcGl2b3Qgd2lkZ2V0LlxuICovXG5leHBvcnQgY29uc3QgdG9FeGVjdXRlUXVlcnlQYXJhbXMgPSAod2lkZ2V0TW9kZWw6IFdpZGdldE1vZGVsKTogRXhlY3V0ZVF1ZXJ5UGFyYW1zID0+IHtcbiAgcmV0dXJuIHdpZGdldE1vZGVsVHJhbnNsYXRvclByZWFjdC50b0V4ZWN1dGVRdWVyeVBhcmFtcyh3aWRnZXRNb2RlbCk7XG59O1xuXG4vKipcbiAqIFRyYW5zbGF0ZXMgYSB7QGxpbmsgV2lkZ2V0TW9kZWx9IHRvIHRoZSBwYXJhbWV0ZXJzIGZvciBleGVjdXRpbmcgYSBxdWVyeSBmb3IgdGhlIHBpdm90IHdpZGdldC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbmNvbnN0IHdpZGdldE1vZGVsID0gYXdhaXQgd2lkZ2V0U2VydmljZS5nZXRXaWRnZXRNb2RlbCh7XG4gIGRhc2hib2FyZE9pZDogJ3lvdXItZGFzaGJvYXJkLW9pZCcsXG4gIHdpZGdldE9pZDogJ3lvdXItd2lkZ2V0LW9pZCdcbn0pO1xuY29uc3QgZXhlY3V0ZVBpdm90UXVlcnlQYXJhbXMgPSB3aWRnZXRNb2RlbFRyYW5zbGF0b3IudG9FeGVjdXRlUGl2b3RRdWVyeVBhcmFtcyh3aWRnZXRNb2RlbCk7XG5jb25zdCBxdWVyeVJlc3VsdCA9IGF3YWl0IHF1ZXJ5U2VydmljZS5leGVjdXRlUGl2b3RRdWVyeShleGVjdXRlUXVlcnlQYXJhbXMpO1xuICogYGBgXG4gKlxuICogTm90ZTogdGhpcyBtZXRob2QgaXMgc3VwcG9ydGVkIG9ubHkgZm9yIGdldHRpbmcgcGl2b3QgcXVlcnkuXG4gKiBVc2Uge0BsaW5rIHRvRXhlY3V0ZVF1ZXJ5UGFyYW1zfSBpbnN0ZWFkIGZvciBnZXR0aW5nIHF1ZXJ5IHBhcmFtZXRlcnMgZm9yIG5vbi1waXZvdCB3aWRnZXRzLlxuICovXG5leHBvcnQgY29uc3QgdG9FeGVjdXRlUGl2b3RRdWVyeVBhcmFtcyA9ICh3aWRnZXRNb2RlbDogV2lkZ2V0TW9kZWwpOiBFeGVjdXRlUGl2b3RRdWVyeVBhcmFtcyA9PiB7XG4gIHJldHVybiB3aWRnZXRNb2RlbFRyYW5zbGF0b3JQcmVhY3QudG9FeGVjdXRlUGl2b3RRdWVyeVBhcmFtcyh3aWRnZXRNb2RlbCk7XG59O1xuXG4vKipcbiAqIFRyYW5zbGF0ZXMgYSB7QGxpbmsgV2lkZ2V0TW9kZWx9IHRvIHRoZSBwcm9wcyBmb3IgcmVuZGVyaW5nIGEgY2hhcnQuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbjxjc2RrLWNoYXJ0XG4gICpuZ0lmPVwiY2hhcnRQcm9wc1wiXG4gIFtjaGFydFR5cGVdPVwiY2hhcnRQcm9wcy5jaGFydFR5cGVcIlxuICBbZGF0YVNldF09XCJjaGFydFByb3BzLmRhdGFTZXRcIlxuICBbZGF0YU9wdGlvbnNdPVwiY2hhcnRQcm9wcy5kYXRhT3B0aW9uc1wiXG4gIFtmaWx0ZXJzXT1cImNoYXJ0UHJvcHMuZmlsdGVyc1wiXG4gIFtoaWdobGlnaHRzXT1cImNoYXJ0UHJvcHMuaGlnaGxpZ2h0c1wiXG4gIFtzdHlsZU9wdGlvbnNdPVwiY2hhcnRQcm9wcy5zdHlsZU9wdGlvbnNcIlxuLz5cbiAqIGBgYFxuICpcbiAqIGBgYHRzXG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIHR5cGUgQ2hhcnRQcm9wc1xuICBXaWRnZXRTZXJ2aWNlLFxuICB3aWRnZXRNb2RlbFRyYW5zbGF0b3IsXG59IGZyb20gJ0BzaXNlbnNlL3Nkay11aS1hbmd1bGFyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWV4YW1wbGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vZXhhbXBsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2V4YW1wbGUuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRXhhbXBsZUNvbXBvbmVudCB7XG4gIGNoYXJ0UHJvcHM6IENoYXJ0UHJvcHMgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHdpZGdldFNlcnZpY2U6IFdpZGdldFNlcnZpY2UpIHt9XG5cbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgd2lkZ2V0TW9kZWwgPSBhd2FpdCB3aWRnZXRTZXJ2aWNlLmdldFdpZGdldE1vZGVsKHtcbiAgICAgIGRhc2hib2FyZE9pZDogJ3lvdXItZGFzaGJvYXJkLW9pZCcsXG4gICAgICB3aWRnZXRPaWQ6ICd5b3VyLXdpZGdldC1vaWQnXG4gICAgfSk7XG4gICAgdGhpcy5jaGFydFByb3BzID0gd2lkZ2V0TW9kZWxUcmFuc2xhdG9yLnRvQ2hhcnRQcm9wcyh3aWRnZXRNb2RlbCk7XG4gIH1cbn1cbiAqIGBgYFxuICpcbiAqIE5vdGU6IHRoaXMgbWV0aG9kIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHBpdm90IHdpZGdldHMuXG4gKiBVc2Uge0BsaW5rIHRvUGl2b3RUYWJsZVByb3BzfSBpbnN0ZWFkIGZvciBnZXR0aW5nIHByb3BzIGZvciB0aGUge0BsaW5rIFBpdm90VGFibGVDb21wb25lbnR9LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9DaGFydFByb3BzKHdpZGdldE1vZGVsOiBXaWRnZXRNb2RlbCk6IENoYXJ0UHJvcHMge1xuICByZXR1cm4gd2lkZ2V0TW9kZWxUcmFuc2xhdG9yUHJlYWN0LnRvQ2hhcnRQcm9wcyh3aWRnZXRNb2RlbCk7XG59XG5cbi8qKlxuICogVHJhbnNsYXRlcyBhIHtAbGluayBXaWRnZXRNb2RlbH0gdG8gdGhlIHByb3BzIGZvciByZW5kZXJpbmcgYSB0YWJsZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgaHRtbFxuPGNzZGstdGFibGVcbiAgKm5nSWY9XCJ0YWJsZVByb3BzXCJcbiAgW2RhdGFTZXRdPVwidGFibGVQcm9wcy5kYXRhU2V0XCJcbiAgW2RhdGFPcHRpb25zXT1cInRhYmxlUHJvcHMuZGF0YU9wdGlvbnNcIlxuICBbZmlsdGVyc109XCJ0YWJsZVByb3BzLmZpbHRlcnNcIlxuICBbc3R5bGVPcHRpb25zXT1cInRhYmxlUHJvcHMuc3R5bGVPcHRpb25zXCJcbi8+XG4gKiBgYGBcbiAqXG4gKiBgYGB0c1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICB0eXBlIFRhYmxlUHJvcHNcbiAgV2lkZ2V0U2VydmljZSxcbiAgd2lkZ2V0TW9kZWxUcmFuc2xhdG9yLFxufSBmcm9tICdAc2lzZW5zZS9zZGstdWktYW5ndWxhcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1leGFtcGxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2V4YW1wbGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9leGFtcGxlLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEV4YW1wbGVDb21wb25lbnQge1xuICB0YWJsZVByb3BzOiBUYWJsZVByb3BzIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB3aWRnZXRTZXJ2aWNlOiBXaWRnZXRTZXJ2aWNlKSB7fVxuXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHdpZGdldE1vZGVsID0gYXdhaXQgd2lkZ2V0U2VydmljZS5nZXRXaWRnZXRNb2RlbCh7XG4gICAgICBkYXNoYm9hcmRPaWQ6ICd5b3VyLWRhc2hib2FyZC1vaWQnLFxuICAgICAgd2lkZ2V0T2lkOiAneW91ci13aWRnZXQtb2lkJ1xuICAgIH0pO1xuICAgIHRoaXMudGFibGVQcm9wcyA9IHdpZGdldE1vZGVsVHJhbnNsYXRvci50b1RhYmxlUHJvcHMod2lkZ2V0TW9kZWwpO1xuICB9XG59XG4gKiBgYGBcbiAqXG4gKiBOb3RlOiB0aGlzIG1ldGhvZCBpcyBub3Qgc3VwcG9ydGVkIGZvciBjaGFydCBhbmQgcGl2b3Qgd2lkZ2V0cy5cbiAqIFVzZSB7QGxpbmsgdG9DaGFydFByb3BzfSBpbnN0ZWFkIGZvciBnZXR0aW5nIHByb3BzIGZvciB0aGUge0BsaW5rIENoYXJ0Q29tcG9uZW50fS5cbiAqIFVzZSB7QGxpbmsgdG9QaXZvdFRhYmxlUHJvcHN9IGluc3RlYWQgZm9yIGdldHRpbmcgcHJvcHMgZm9yIHRoZSB7QGxpbmsgUGl2b3RUYWJsZUNvbXBvbmVudH0uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1RhYmxlUHJvcHMod2lkZ2V0TW9kZWw6IFdpZGdldE1vZGVsKTogVGFibGVQcm9wcyB7XG4gIHJldHVybiB3aWRnZXRNb2RlbFRyYW5zbGF0b3JQcmVhY3QudG9UYWJsZVByb3BzKHdpZGdldE1vZGVsKTtcbn1cblxuLyoqXG4gKiBUcmFuc2xhdGVzIGEge0BsaW5rIFdpZGdldE1vZGVsfSB0byB0aGUgcHJvcHMgZm9yIHJlbmRlcmluZyBhIHBpdm90IHRhYmxlLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG48Y3Nkay1waXZvdC10YWJsZVxuICAqbmdJZj1cInBpdm90VGFibGVQcm9wc1wiXG4gIFtkYXRhU2V0XT1cInBpdm90VGFibGVQcm9wcy5kYXRhU2V0XCJcbiAgW2RhdGFPcHRpb25zXT1cInBpdm90VGFibGVQcm9wcy5kYXRhT3B0aW9uc1wiXG4gIFtmaWx0ZXJzXT1cInBpdm90VGFibGVQcm9wcy5maWx0ZXJzXCJcbiAgW3N0eWxlT3B0aW9uc109XCJwaXZvdFRhYmxlUHJvcHMuc3R5bGVPcHRpb25zXCJcbi8+XG4gKiBgYGBcbiAqXG4gKiBgYGB0c1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICB0eXBlIFBpdm90VGFibGVQcm9wc1xuICBXaWRnZXRTZXJ2aWNlLFxuICB3aWRnZXRNb2RlbFRyYW5zbGF0b3IsXG59IGZyb20gJ0BzaXNlbnNlL3Nkay11aS1hbmd1bGFyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWV4YW1wbGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vZXhhbXBsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2V4YW1wbGUuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRXhhbXBsZUNvbXBvbmVudCB7XG4gIHBpdm90VGFibGVQcm9wczogUGl2b3RUYWJsZVByb3BzIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB3aWRnZXRTZXJ2aWNlOiBXaWRnZXRTZXJ2aWNlKSB7fVxuXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHdpZGdldE1vZGVsID0gYXdhaXQgd2lkZ2V0U2VydmljZS5nZXRXaWRnZXRNb2RlbCh7XG4gICAgICBkYXNoYm9hcmRPaWQ6ICd5b3VyLWRhc2hib2FyZC1vaWQnLFxuICAgICAgd2lkZ2V0T2lkOiAneW91ci13aWRnZXQtb2lkJ1xuICAgIH0pO1xuICAgIHRoaXMucGl2b3RUYWJsZVByb3BzID0gd2lkZ2V0TW9kZWxUcmFuc2xhdG9yLnRvUGl2b3RUYWJsZVByb3BzKHdpZGdldE1vZGVsKTtcbiAgfVxufVxuICogYGBgXG4gKlxuICogTm90ZTogdGhpcyBtZXRob2QgaXMgbm90IHN1cHBvcnRlZCBmb3IgY2hhcnQgb3IgdGFibGUgd2lkZ2V0cy5cbiAqIFVzZSB7QGxpbmsgdG9DaGFydFByb3BzfSBpbnN0ZWFkIGZvciBnZXR0aW5nIHByb3BzIGZvciB0aGUge0BsaW5rIENoYXJ0Q29tcG9uZW50fS5cbiAqIFVzZSB7QGxpbmsgdG9UYWJsZVByb3BzfSBpbnN0ZWFkIGZvciBnZXR0aW5nIHByb3BzIGZvciB0aGUge0BsaW5rIFRhYmxlQ29tcG9uZW50fS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvUGl2b3RUYWJsZVByb3BzKHdpZGdldE1vZGVsOiBXaWRnZXRNb2RlbCk6IFBpdm90VGFibGVQcm9wcyB7XG4gIHJldHVybiB3aWRnZXRNb2RlbFRyYW5zbGF0b3JQcmVhY3QudG9QaXZvdFRhYmxlUHJvcHMod2lkZ2V0TW9kZWwpO1xufVxuXG4vKipcbiAqIFRyYW5zbGF0ZXMgYSB7QGxpbmsgV2lkZ2V0TW9kZWx9IHRvIHRoZSBwcm9wcyBmb3IgcmVuZGVyaW5nIGEgY2hhcnQgd2lkZ2V0LlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG48Y3Nkay1jaGFydC13aWRnZXRcbiAgKm5nSWY9XCJjaGFydFdpZGdldFByb3BzXCJcbiAgW2NoYXJ0VHlwZV09XCJjaGFydFdpZGdldFByb3BzLmNoYXJ0VHlwZVwiXG4gIFtkYXRhU291cmNlXT1cImNoYXJ0V2lkZ2V0UHJvcHMuZGF0YVNvdXJjZVwiXG4gIFtkYXRhT3B0aW9uc109XCJjaGFydFdpZGdldFByb3BzLmRhdGFPcHRpb25zXCJcbiAgW2ZpbHRlcnNdPVwiY2hhcnRXaWRnZXRQcm9wcy5maWx0ZXJzXCJcbiAgW2hpZ2hsaWdodHNdPVwiY2hhcnRXaWRnZXRQcm9wcy5oaWdobGlnaHRzXCJcbiAgW3N0eWxlT3B0aW9uc109XCJjaGFydFdpZGdldFByb3BzLnN0eWxlT3B0aW9uc1wiXG4vPlxuICogYGBgXG4gKlxuICogYGBgdHNcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgdHlwZSBDaGFydFdpZGdldFByb3BzXG4gIFdpZGdldFNlcnZpY2UsXG4gIHdpZGdldE1vZGVsVHJhbnNsYXRvcixcbn0gZnJvbSAnQHNpc2Vuc2Uvc2RrLXVpLWFuZ3VsYXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZXhhbXBsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9leGFtcGxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZXhhbXBsZS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBFeGFtcGxlQ29tcG9uZW50IHtcbiAgY2hhcnRXaWRnZXRQcm9wczogQ2hhcnRXaWRnZXRQcm9wcyB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgd2lkZ2V0U2VydmljZTogV2lkZ2V0U2VydmljZSkge31cblxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB3aWRnZXRNb2RlbCA9IGF3YWl0IHdpZGdldFNlcnZpY2UuZ2V0V2lkZ2V0TW9kZWwoe1xuICAgICAgZGFzaGJvYXJkT2lkOiAneW91ci1kYXNoYm9hcmQtb2lkJyxcbiAgICAgIHdpZGdldE9pZDogJ3lvdXItd2lkZ2V0LW9pZCdcbiAgICB9KTtcbiAgICB0aGlzLmNoYXJ0V2lkZ2V0UHJvcHMgPSB3aWRnZXRNb2RlbFRyYW5zbGF0b3IudG9DaGFydFdpZGdldFByb3BzKHdpZGdldE1vZGVsKTtcbiAgfVxufVxuICogYGBgXG4gKlxuICogTm90ZTogdGhpcyBtZXRob2QgaXMgbm90IHN1cHBvcnRlZCBmb3IgcGl2b3Qgd2lkZ2V0cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvQ2hhcnRXaWRnZXRQcm9wcyh3aWRnZXRNb2RlbDogV2lkZ2V0TW9kZWwpOiBDaGFydFdpZGdldFByb3BzIHtcbiAgcmV0dXJuIHdpZGdldE1vZGVsVHJhbnNsYXRvclByZWFjdC50b0NoYXJ0V2lkZ2V0UHJvcHMod2lkZ2V0TW9kZWwpO1xufVxuXG4vKipcbiAqIFRyYW5zbGF0ZXMgYSB7QGxpbmsgV2lkZ2V0TW9kZWx9IHRvIHRoZSBwcm9wcyBmb3IgcmVuZGVyaW5nIGEgcGl2b3QgdGFibGUgd2lkZ2V0LlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG48Y3Nkay1waXZvdC10YWJsZS13aWRnZXRcbiAgKm5nSWY9XCJwaXZvdFdpZGdldFByb3BzXCJcbiAgW2RhdGFTZXRdPVwicGl2b3RXaWRnZXRQcm9wcy5kYXRhU2V0XCJcbiAgW2RhdGFPcHRpb25zXT1cInBpdm90V2lkZ2V0UHJvcHMuZGF0YU9wdGlvbnNcIlxuICBbZmlsdGVyc109XCJwaXZvdFdpZGdldFByb3BzLmZpbHRlcnNcIlxuICBbc3R5bGVPcHRpb25zXT1cInBpdm90V2lkZ2V0UHJvcHMuc3R5bGVPcHRpb25zXCJcbi8+XG4gKiBgYGBcbiAqXG4gKiBgYGB0c1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICB0eXBlIFBpdm90VGFibGVXaWRnZXRQcm9wc1xuICBXaWRnZXRTZXJ2aWNlLFxuICB3aWRnZXRNb2RlbFRyYW5zbGF0b3IsXG59IGZyb20gJ0BzaXNlbnNlL3Nkay11aS1hbmd1bGFyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWV4YW1wbGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vZXhhbXBsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2V4YW1wbGUuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRXhhbXBsZUNvbXBvbmVudCB7XG4gIHBpdm90V2lkZ2V0UHJvcHM6IFBpdm90VGFibGVXaWRnZXRQcm9wcyB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgd2lkZ2V0U2VydmljZTogV2lkZ2V0U2VydmljZSkge31cblxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB3aWRnZXRNb2RlbCA9IGF3YWl0IHdpZGdldFNlcnZpY2UuZ2V0V2lkZ2V0TW9kZWwoe1xuICAgICAgZGFzaGJvYXJkT2lkOiAneW91ci1kYXNoYm9hcmQtb2lkJyxcbiAgICAgIHdpZGdldE9pZDogJ3lvdXItd2lkZ2V0LW9pZCdcbiAgICB9KTtcbiAgICB0aGlzLnBpdm90V2lkZ2V0UHJvcHMgPSB3aWRnZXRNb2RlbFRyYW5zbGF0b3IudG9QaXZvdFRhYmxlV2lkZ2V0UHJvcHMod2lkZ2V0TW9kZWwpO1xuICB9XG59XG4gKiBgYGBcbiAqXG4gKiBOb3RlOiB0aGlzIG1ldGhvZCBpcyBub3Qgc3VwcG9ydGVkIGZvciBjaGFydCBvciB0YWJsZSB3aWRnZXRzLlxuICogVXNlIHtAbGluayB0b0NoYXJ0V2lkZ2V0UHJvcHN9IGluc3RlYWQgZm9yIGdldHRpbmcgcHJvcHMgZm9yIHRoZSB7QGxpbmsgQ2hhcnRXaWRnZXRDb21wb25lbnR9LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9QaXZvdFRhYmxlV2lkZ2V0UHJvcHMod2lkZ2V0TW9kZWw6IFdpZGdldE1vZGVsKTogUGl2b3RUYWJsZVdpZGdldFByb3BzIHtcbiAgcmV0dXJuIHdpZGdldE1vZGVsVHJhbnNsYXRvclByZWFjdC50b1Bpdm90VGFibGVXaWRnZXRQcm9wcyh3aWRnZXRNb2RlbCk7XG59XG5cbi8qKlxuICogVHJhbnNsYXRlcyBhIHtAbGluayBXaWRnZXRNb2RlbH0gdG8gdGhlIHByb3BzIGZvciByZW5kZXJpbmcgYSB0ZXh0IHdpZGdldC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbmNvbnN0IHdpZGdldE1vZGVsID0gYXdhaXQgd2lkZ2V0U2VydmljZS5nZXRXaWRnZXRNb2RlbCh7XG4gIGRhc2hib2FyZE9pZDogJ3lvdXItZGFzaGJvYXJkLW9pZCcsXG4gIHdpZGdldE9pZDogJ3lvdXItd2lkZ2V0LW9pZCdcbn0pO1xuY29uc3QgdGV4dFdpZGdldFByb3BzID0gd2lkZ2V0TW9kZWxUcmFuc2xhdG9yLnRvVGV4dFdpZGdldFByb3BzKHdpZGdldE1vZGVsKTtcbiAqIGBgYFxuICpcbiAqIE5vdGU6IHRoaXMgbWV0aG9kIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIGNoYXJ0IG9yIHBpdm90IHdpZGdldHMuXG4gKiBVc2Uge0BsaW5rIHRvQ2hhcnRXaWRnZXRQcm9wc30gaW5zdGVhZCBmb3IgZ2V0dGluZyBwcm9wcyBmb3IgdGhlIHtAbGluayBDaGFydFdpZGdldENvbXBvbmVudH0uXG4gKiBVc2Uge0BsaW5rIHRvUGl2b3RUYWJsZVdpZGdldFByb3BzfSBpbnN0ZWFkIGZvciBnZXR0aW5nIHByb3BzIGZvciB0aGUgcGl2b3QgdGFibGUgd2lkZ2V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9UZXh0V2lkZ2V0UHJvcHMod2lkZ2V0TW9kZWw6IFdpZGdldE1vZGVsKTogVGV4dFdpZGdldFByb3BzIHtcbiAgcmV0dXJuIHdpZGdldE1vZGVsVHJhbnNsYXRvclByZWFjdC50b1RleHRXaWRnZXRQcm9wcyh3aWRnZXRNb2RlbCk7XG59XG4iXX0=
@@ -1,11 +1,12 @@
1
1
  /**
2
2
  * Public API Surface of @sisense/sdk-ui-angular
3
3
  */
4
- export * from './lib/sdk-ui.module';
5
4
  export * from './lib/components';
6
- export * from './lib/services';
5
+ export * from './lib/sdk-ui.module';
7
6
  export * from './lib/sdk-ui-core-exports';
7
+ export * from './lib/services';
8
+ export * from './lib/utilities';
8
9
  /* Re-exports internal core functionalities to use in dependant angular modules */
9
- export { createThemeContextConnector, createSisenseContextConnector, createPluginsContextConnector, } from './lib/component-wrapper-helpers';
10
+ export { createPluginsContextConnector, createSisenseContextConnector, createThemeContextConnector, } from './lib/component-wrapper-helpers';
10
11
  export { TrackableService } from './lib/decorators';
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYywyQkFBMkIsQ0FBQztBQW9CMUMsa0ZBQWtGO0FBQ2xGLE9BQU8sRUFDTCwyQkFBMkIsRUFDM0IsNkJBQTZCLEVBQzdCLDZCQUE2QixHQUM5QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgQHNpc2Vuc2Uvc2RrLXVpLWFuZ3VsYXJcbiAqL1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2RrLXVpLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Nkay11aS1jb3JlLWV4cG9ydHMnO1xuZXhwb3J0IHR5cGUge1xuICBEYXRhUG9pbnRFdmVudCxcbiAgQXJlYW1hcERhdGFQb2ludEV2ZW50LFxuICBCb3hwbG90RGF0YVBvaW50RXZlbnQsXG4gIFNjYXR0ZXJEYXRhUG9pbnRFdmVudCxcbiAgU2NhdHRlcm1hcERhdGFQb2ludEV2ZW50LFxuICBDaGFydERhdGFQb2ludEV2ZW50LFxuICBEYXRhUG9pbnRzRXZlbnQsXG4gIENoYXJ0RGF0YVBvaW50c0V2ZW50LFxuICBTY2F0dGVyRGF0YVBvaW50c0V2ZW50LFxuICBEYXRhUG9pbnRFdmVudEhhbmRsZXIsXG4gIFNjYXR0ZXJtYXBEYXRhUG9pbnRFdmVudEhhbmRsZXIsXG4gIEFyZWFtYXBEYXRhUG9pbnRFdmVudEhhbmRsZXIsXG4gIEJveHBsb3REYXRhUG9pbnRFdmVudEhhbmRsZXIsXG4gIERhdGFQb2ludHNFdmVudEhhbmRsZXIsXG4gIFNjYXR0ZXJEYXRhUG9pbnRFdmVudEhhbmRsZXIsXG4gIFNjYXR0ZXJEYXRhUG9pbnRzRXZlbnRIYW5kbGVyLFxufSBmcm9tICcuL2xpYi90eXBlcyc7XG5cbi8qIFJlLWV4cG9ydHMgaW50ZXJuYWwgY29yZSBmdW5jdGlvbmFsaXRpZXMgdG8gdXNlIGluIGRlcGVuZGFudCBhbmd1bGFyIG1vZHVsZXMgKi9cbmV4cG9ydCB7XG4gIGNyZWF0ZVRoZW1lQ29udGV4dENvbm5lY3RvcixcbiAgY3JlYXRlU2lzZW5zZUNvbnRleHRDb25uZWN0b3IsXG4gIGNyZWF0ZVBsdWdpbnNDb250ZXh0Q29ubmVjdG9yLFxufSBmcm9tICcuL2xpYi9jb21wb25lbnQtd3JhcHBlci1oZWxwZXJzJztcbmV4cG9ydCB7IFRyYWNrYWJsZVNlcnZpY2UgfSBmcm9tICcuL2xpYi9kZWNvcmF0b3JzJztcbiJdfQ==
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxnQkFBZ0IsQ0FBQztBQXNCL0IsY0FBYyxpQkFBaUIsQ0FBQztBQUVoQyxrRkFBa0Y7QUFDbEYsT0FBTyxFQUNMLDZCQUE2QixFQUM3Qiw2QkFBNkIsRUFDN0IsMkJBQTJCLEdBQzVCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBAc2lzZW5zZS9zZGstdWktYW5ndWxhclxuICovXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Nkay11aS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2RrLXVpLWNvcmUtZXhwb3J0cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcyc7XG5leHBvcnQgdHlwZSB7XG4gIEFyZWFtYXBEYXRhUG9pbnRFdmVudCxcbiAgQXJlYW1hcERhdGFQb2ludEV2ZW50SGFuZGxlcixcbiAgQm94cGxvdERhdGFQb2ludEV2ZW50LFxuICBCb3hwbG90RGF0YVBvaW50RXZlbnRIYW5kbGVyLFxuICBDaGFydERhdGFQb2ludEV2ZW50LFxuICBDaGFydERhdGFQb2ludHNFdmVudCxcbiAgRGFzaGJvYXJkQnlJZENvbmZpZyxcbiAgRGFzaGJvYXJkQ29uZmlnLFxuICBEYXNoYm9hcmRGaWx0ZXJzUGFuZWxDb25maWcsXG4gIERhdGFQb2ludEV2ZW50LFxuICBEYXRhUG9pbnRFdmVudEhhbmRsZXIsXG4gIERhdGFQb2ludHNFdmVudCxcbiAgRGF0YVBvaW50c0V2ZW50SGFuZGxlcixcbiAgU2NhdHRlckRhdGFQb2ludEV2ZW50LFxuICBTY2F0dGVyRGF0YVBvaW50RXZlbnRIYW5kbGVyLFxuICBTY2F0dGVyRGF0YVBvaW50c0V2ZW50LFxuICBTY2F0dGVyRGF0YVBvaW50c0V2ZW50SGFuZGxlcixcbiAgU2NhdHRlcm1hcERhdGFQb2ludEV2ZW50LFxuICBTY2F0dGVybWFwRGF0YVBvaW50RXZlbnRIYW5kbGVyLFxufSBmcm9tICcuL2xpYi90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlsaXRpZXMnO1xuXG4vKiBSZS1leHBvcnRzIGludGVybmFsIGNvcmUgZnVuY3Rpb25hbGl0aWVzIHRvIHVzZSBpbiBkZXBlbmRhbnQgYW5ndWxhciBtb2R1bGVzICovXG5leHBvcnQge1xuICBjcmVhdGVQbHVnaW5zQ29udGV4dENvbm5lY3RvcixcbiAgY3JlYXRlU2lzZW5zZUNvbnRleHRDb25uZWN0b3IsXG4gIGNyZWF0ZVRoZW1lQ29udGV4dENvbm5lY3Rvcixcbn0gZnJvbSAnLi9saWIvY29tcG9uZW50LXdyYXBwZXItaGVscGVycyc7XG5leHBvcnQgeyBUcmFja2FibGVTZXJ2aWNlIH0gZnJvbSAnLi9saWIvZGVjb3JhdG9ycyc7XG4iXX0=
@@ -1,2 +1,2 @@
1
- export default '1.32.0';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsUUFBUSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgJzEuMzIuMCciXX0=
1
+ export default '1.34.0';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsUUFBUSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgJzEuMzQuMCciXX0=
@@ -1,16 +1,11 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { InjectionToken, Injectable, Optional, Inject, Component, ViewChild, Input, NgModule } from '@angular/core';
3
- import { CommonModule } from '@angular/common';
4
3
  import * as i1 from '@sisense/sdk-ui-angular';
5
4
  import { TrackableService, createSisenseContextConnector, createThemeContextConnector, SdkUiModule } from '@sisense/sdk-ui-angular';
6
- import { createContextProviderRenderer, ComponentAdapter, createElement } from '@sisense/sdk-ui-preact';
5
+ import { DataObserver, ComponentAdapter } from '@sisense/sdk-ui-preact';
7
6
  import { CustomAiContextProvider, ChatRestApi, prepareGetNlgInsightsPayload, DEFAULT_RECOMMENDATIONS_COUNT, widgetComposer, prepareGetNlqResultPayload, Chatbot, GetNlgInsights } from '@sisense/sdk-ui-preact/ai';
8
7
  import { __awaiter, __decorate } from 'tslib';
9
-
10
- const rootId = 'preact';
11
- const template = `
12
- <div #${rootId} style="width: 100%; height: 100%"></div>
13
- `;
8
+ import { CommonModule } from '@angular/common';
14
9
 
15
10
  /**
16
11
  * Creates AI context connector
@@ -19,19 +14,28 @@ const template = `
19
14
  * @internal
20
15
  */
21
16
  const createAiContextConnector = (aiService) => {
22
- return {
23
- prepareContext() {
24
- return __awaiter(this, void 0, void 0, function* () {
25
- const api = yield aiService.getApi();
26
- return {
27
- api,
28
- };
29
- });
17
+ const propsObserver = new DataObserver();
18
+ aiService
19
+ .getApi()
20
+ .then((api) => propsObserver.setValue({
21
+ context: {
22
+ api,
30
23
  },
31
- renderContextProvider: createContextProviderRenderer(CustomAiContextProvider),
24
+ }))
25
+ .catch((error) => propsObserver.setValue({
26
+ error,
27
+ }));
28
+ return {
29
+ propsObserver,
30
+ providerComponent: CustomAiContextProvider,
32
31
  };
33
32
  };
34
33
 
34
+ const rootId = 'preact';
35
+ const template = `
36
+ <div #${rootId} style="width: 100%; height: 100%"></div>
37
+ `;
38
+
35
39
  /**
36
40
  * Token used to inject {@link AiContextConfig} into your application.
37
41
  *
@@ -66,7 +70,6 @@ const createAiContextConnector = (aiService) => {
66
70
  * bootstrap: [AppComponent],
67
71
  * })
68
72
  * ```
69
- *
70
73
  * @group Generative AI
71
74
  * @beta
72
75
  */
@@ -205,9 +208,7 @@ export class ExampleComponent {
205
208
  }
206
209
  * ```
207
210
  *
208
- * <img src="media://angular-chatbot-example.png" width="800px" />
209
- * @shortDescription Angular component that renders a chatbot with data topic selection.
210
- *
211
+ * <img src="media://angular-chatbot-example.png" width="500px" />
211
212
  * @group Generative AI
212
213
  * @beta
213
214
  */
@@ -241,7 +242,7 @@ class ChatbotComponent {
241
242
  this.sisenseContextService = sisenseContextService;
242
243
  this.themeService = themeService;
243
244
  this.aiService = aiService;
244
- this.componentAdapter = new ComponentAdapter(() => this.createPreactComponent(), [
245
+ this.componentAdapter = new ComponentAdapter(Chatbot, [
245
246
  createSisenseContextConnector(this.sisenseContextService),
246
247
  createThemeContextConnector(this.themeService),
247
248
  createAiContextConnector(this.aiService),
@@ -251,23 +252,22 @@ class ChatbotComponent {
251
252
  * @internal
252
253
  */
253
254
  ngAfterViewInit() {
254
- this.componentAdapter.render(this.preactRef.nativeElement);
255
+ this.componentAdapter.render(this.preactRef.nativeElement, this.getPreactComponentProps());
255
256
  }
256
257
  /**
257
258
  * @internal
258
259
  */
259
260
  ngOnChanges() {
260
261
  if (this.preactRef) {
261
- this.componentAdapter.render(this.preactRef.nativeElement);
262
+ this.componentAdapter.render(this.preactRef.nativeElement, this.getPreactComponentProps());
262
263
  }
263
264
  }
264
- createPreactComponent() {
265
- const props = {
265
+ getPreactComponentProps() {
266
+ return {
266
267
  width: this.width,
267
268
  height: this.height,
268
269
  config: this.config,
269
270
  };
270
- return createElement(Chatbot, props);
271
271
  }
272
272
  /**
273
273
  * @internal
@@ -335,9 +335,7 @@ export class ExampleComponent {
335
335
  }
336
336
  * ```
337
337
  *
338
- * <img src="media://angular-get-nlg-insights-example.png" width="800px" />
339
- * @shortDescription Angular component that displays NLG insights.
340
- *
338
+ * <img src="media://angular-get-nlg-insights-example.png" width="700px" />
341
339
  * @group Generative AI
342
340
  * @beta
343
341
  */
@@ -371,7 +369,7 @@ class GetNlgInsightsComponent {
371
369
  this.sisenseContextService = sisenseContextService;
372
370
  this.themeService = themeService;
373
371
  this.aiService = aiService;
374
- this.componentAdapter = new ComponentAdapter(() => this.createPreactComponent(), [
372
+ this.componentAdapter = new ComponentAdapter(GetNlgInsights, [
375
373
  createSisenseContextConnector(this.sisenseContextService),
376
374
  createThemeContextConnector(this.themeService),
377
375
  createAiContextConnector(this.aiService),
@@ -381,25 +379,24 @@ class GetNlgInsightsComponent {
381
379
  * @internal
382
380
  */
383
381
  ngAfterViewInit() {
384
- this.componentAdapter.render(this.preactRef.nativeElement);
382
+ this.componentAdapter.render(this.preactRef.nativeElement, this.getPreactComponentProps());
385
383
  }
386
384
  /**
387
385
  * @internal
388
386
  */
389
387
  ngOnChanges() {
390
388
  if (this.preactRef) {
391
- this.componentAdapter.render(this.preactRef.nativeElement);
389
+ this.componentAdapter.render(this.preactRef.nativeElement, this.getPreactComponentProps());
392
390
  }
393
391
  }
394
- createPreactComponent() {
395
- const props = {
392
+ getPreactComponentProps() {
393
+ return {
396
394
  dataSource: this.dataSource,
397
395
  dimensions: this.dimensions,
398
396
  measures: this.measures,
399
397
  filters: this.filters,
400
398
  verbosity: this.verbosity,
401
399
  };
402
- return createElement(GetNlgInsights, props);
403
400
  }
404
401
  /**
405
402
  * @internal
@@ -466,7 +463,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
466
463
  * bootstrap: [AppComponent],
467
464
  * })
468
465
  * ```
469
- *
470
466
  * @group Generative AI
471
467
  * @beta
472
468
  */