@smartbit4all/ng-client 4.2.70 → 4.2.71

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 (127) hide show
  1. package/esm2022/lib/smart-client/smart-component-api-client.mjs +15 -1
  2. package/esm2022/lib/smart-client/smart.component.mjs +9 -2
  3. package/esm2022/lib/smart-component-layout/api/model/componentWidgetType.mjs +2 -1
  4. package/esm2022/lib/smart-component-layout/api/model/layoutDefinitionDescriptor.mjs +2 -0
  5. package/esm2022/lib/smart-component-layout/api/model/models.mjs +2 -1
  6. package/esm2022/lib/smart-component-layout/api/model/smartComponentLayoutDefinition.mjs +1 -1
  7. package/esm2022/lib/smart-component-layout/smart-component-layout-utility.mjs +18 -1
  8. package/esm2022/lib/smart-component-layout/smart-component-layout.component.mjs +33 -3
  9. package/esm2022/lib/smart-component-layout/smart-component-layout.module.mjs +7 -3
  10. package/esm2022/lib/smart-diagram/api/api/api.mjs +4 -0
  11. package/esm2022/lib/smart-diagram/api/api/diagramService.service.mjs +141 -0
  12. package/esm2022/lib/smart-diagram/api/api.module.mjs +40 -0
  13. package/esm2022/lib/smart-diagram/api/configuration.mjs +91 -0
  14. package/esm2022/lib/smart-diagram/api/encoder.mjs +19 -0
  15. package/esm2022/lib/smart-diagram/api/index.mjs +7 -0
  16. package/esm2022/lib/smart-diagram/api/model/diagramColor.mjs +13 -0
  17. package/esm2022/lib/smart-diagram/api/model/diagramDataContainer.mjs +2 -0
  18. package/esm2022/lib/smart-diagram/api/model/diagramDataItem.mjs +13 -0
  19. package/esm2022/lib/smart-diagram/api/model/diagramDataSet.mjs +2 -0
  20. package/esm2022/lib/smart-diagram/api/model/diagramDescriptor.mjs +2 -0
  21. package/esm2022/lib/smart-diagram/api/model/diagramModel.mjs +2 -0
  22. package/esm2022/lib/smart-diagram/api/model/diagramShape.mjs +2 -0
  23. package/esm2022/lib/smart-diagram/api/model/drawTime.mjs +18 -0
  24. package/esm2022/lib/smart-diagram/api/model/labelText.mjs +2 -0
  25. package/esm2022/lib/smart-diagram/api/model/models.mjs +10 -0
  26. package/esm2022/lib/smart-diagram/api/param.mjs +2 -0
  27. package/esm2022/lib/smart-diagram/api/variables.mjs +9 -0
  28. package/esm2022/lib/smart-diagram/component/default-smart-diagram-options.provider.mjs +289 -0
  29. package/esm2022/lib/smart-diagram/component/smart-diagram.component.mjs +341 -0
  30. package/esm2022/lib/smart-diagram/component/smart-diagram.module.mjs +39 -0
  31. package/esm2022/lib/smart-diagram/component/smart-diagram.util.mjs +10 -0
  32. package/esm2022/lib/smart-diagram/projects.mjs +5 -0
  33. package/esm2022/lib/smart-form/widgets/smartformwidget/smartformwidget.component.mjs +3 -3
  34. package/esm2022/lib/smart-grid/api/grid-api/model/gridExportDescriptor.mjs +1 -12
  35. package/esm2022/lib/smart-grid/api/grid-api/model/gridModel.mjs +1 -1
  36. package/esm2022/lib/smart-grid/smart-grid.component.mjs +4 -3
  37. package/esm2022/lib/smart-table/tables/material-table/material-table.component.mjs +3 -3
  38. package/esm2022/lib/smart-table/tables/table.mjs +1 -1
  39. package/esm2022/projects.mjs +2 -1
  40. package/fesm2022/smartbit4all-ng-client.mjs +1231 -180
  41. package/fesm2022/smartbit4all-ng-client.mjs.map +1 -1
  42. package/lib/smart-client/smart-component-api-client.d.ts +4 -1
  43. package/lib/smart-client/smart.component.d.ts +3 -0
  44. package/lib/smart-component-layout/api/model/componentWidgetType.d.ts +2 -1
  45. package/lib/smart-component-layout/api/model/layoutDefinitionDescriptor.d.ts +19 -0
  46. package/lib/smart-component-layout/api/model/models.d.ts +1 -0
  47. package/lib/smart-component-layout/api/model/smartComponentLayoutDefinition.d.ts +2 -0
  48. package/lib/smart-component-layout/smart-component-layout-utility.d.ts +2 -0
  49. package/lib/smart-component-layout/smart-component-layout.component.d.ts +7 -0
  50. package/lib/smart-component-layout/smart-component-layout.module.d.ts +2 -1
  51. package/lib/smart-diagram/api/api/api.d.ts +3 -0
  52. package/lib/smart-diagram/api/api/diagramService.service.d.ts +36 -0
  53. package/lib/smart-diagram/api/encoder.d.ts +11 -0
  54. package/{src/lib/smart-chart/smart-chart/smart-chart2 → lib/smart-diagram}/api/model/diagramColor.d.ts +2 -2
  55. package/{src/lib/smart-chart/smart-chart/smart-chart2 → lib/smart-diagram}/api/model/diagramDataContainer.d.ts +2 -3
  56. package/{src/lib/smart-chart/smart-chart/smart-chart2 → lib/smart-diagram}/api/model/diagramDataItem.d.ts +3 -3
  57. package/{src/lib/smart-chart/smart-chart/smart-chart2 → lib/smart-diagram}/api/model/diagramDataSet.d.ts +4 -4
  58. package/{src/lib/smart-chart/smart-chart/smart-chart2 → lib/smart-diagram}/api/model/diagramDescriptor.d.ts +10 -9
  59. package/{src/lib/smart-chart/smart-chart/smart-chart2/api/model/diagramUiModel.d.ts → lib/smart-diagram/api/model/diagramModel.d.ts} +5 -4
  60. package/{src/lib/smart-chart/smart-chart/smart-chart2 → lib/smart-diagram}/api/model/diagramShape.d.ts +2 -2
  61. package/{src/lib/smart-chart/smart-chart/smart-chart2 → lib/smart-diagram}/api/model/drawTime.d.ts +2 -2
  62. package/{src/lib/smart-chart/smart-chart/smart-chart2 → lib/smart-diagram}/api/model/labelText.d.ts +2 -2
  63. package/{src/lib/smart-chart/smart-chart/smart-chart2 → lib/smart-diagram}/api/model/models.d.ts +1 -2
  64. package/lib/smart-diagram/component/default-smart-diagram-options.provider.d.ts +32 -0
  65. package/lib/smart-diagram/component/smart-diagram.component.d.ts +40 -0
  66. package/lib/smart-diagram/component/smart-diagram.module.d.ts +11 -0
  67. package/lib/smart-diagram/component/smart-diagram.util.d.ts +1 -0
  68. package/lib/smart-diagram/projects.d.ts +4 -0
  69. package/lib/smart-grid/api/grid-api/model/gridExportDescriptor.d.ts +2 -2
  70. package/lib/smart-grid/api/grid-api/model/gridModel.d.ts +1 -0
  71. package/lib/smart-table/tables/table.d.ts +1 -1
  72. package/package.json +1 -7
  73. package/projects.d.ts +1 -0
  74. package/smartbit4all-ng-client-4.2.71.tgz +0 -0
  75. package/esm2022/src/lib/smart-chart/smart-chart/api/model/chartData.mjs +0 -2
  76. package/esm2022/src/lib/smart-chart/smart-chart/api/model/chartDescriptor.mjs +0 -2
  77. package/esm2022/src/lib/smart-chart/smart-chart/api/model/chartOrientation.mjs +0 -16
  78. package/esm2022/src/lib/smart-chart/smart-chart/api/model/chartType.mjs +0 -21
  79. package/esm2022/src/lib/smart-chart/smart-chart/api/model/chartValue.mjs +0 -13
  80. package/esm2022/src/lib/smart-chart/smart-chart/api/model/models.mjs +0 -7
  81. package/esm2022/src/lib/smart-chart/smart-chart/api/model/pieChartLegendPosition.mjs +0 -16
  82. package/esm2022/src/lib/smart-chart/smart-chart/default-chart-options.provider.mjs +0 -233
  83. package/esm2022/src/lib/smart-chart/smart-chart/smart-chart.component.mjs +0 -285
  84. package/esm2022/src/lib/smart-chart/smart-chart/smart-chart.module.mjs +0 -39
  85. package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/api/api.mjs +0 -2
  86. package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/api.module.mjs +0 -40
  87. package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/configuration.mjs +0 -91
  88. package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/index.mjs +0 -7
  89. package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/model/diagramColor.mjs +0 -13
  90. package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/model/diagramDataContainer.mjs +0 -2
  91. package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/model/diagramDataItem.mjs +0 -13
  92. package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/model/diagramDataSet.mjs +0 -2
  93. package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/model/diagramDataSetConstructionInstruction.mjs +0 -13
  94. package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/model/diagramDescriptor.mjs +0 -2
  95. package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/model/diagramShape.mjs +0 -2
  96. package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/model/diagramUiModel.mjs +0 -2
  97. package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/model/drawTime.mjs +0 -18
  98. package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/model/labelText.mjs +0 -2
  99. package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/model/models.mjs +0 -11
  100. package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/param.mjs +0 -2
  101. package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/variables.mjs +0 -9
  102. package/esm2022/src/lib/smart-chart/smart-chart-projects.mjs +0 -9
  103. package/esm2022/src/lib/smart-chart/smartbit4all-ng-client-src-lib-smart-chart.mjs +0 -5
  104. package/esm2022/src/lib/smart-chart/view-context/utility/componentLibrary.mjs +0 -9
  105. package/fesm2022/smartbit4all-ng-client-src-lib-smart-chart.mjs +0 -686
  106. package/fesm2022/smartbit4all-ng-client-src-lib-smart-chart.mjs.map +0 -1
  107. package/smartbit4all-ng-client-4.2.70.tgz +0 -0
  108. package/src/lib/smart-chart/index.d.ts +0 -5
  109. package/src/lib/smart-chart/smart-chart/api/model/chartData.d.ts +0 -16
  110. package/src/lib/smart-chart/smart-chart/api/model/chartDescriptor.d.ts +0 -37
  111. package/src/lib/smart-chart/smart-chart/api/model/chartOrientation.d.ts +0 -16
  112. package/src/lib/smart-chart/smart-chart/api/model/chartType.d.ts +0 -21
  113. package/src/lib/smart-chart/smart-chart/api/model/chartValue.d.ts +0 -16
  114. package/src/lib/smart-chart/smart-chart/api/model/models.d.ts +0 -6
  115. package/src/lib/smart-chart/smart-chart/api/model/pieChartLegendPosition.d.ts +0 -16
  116. package/src/lib/smart-chart/smart-chart/default-chart-options.provider.d.ts +0 -31
  117. package/src/lib/smart-chart/smart-chart/smart-chart.component.d.ts +0 -33
  118. package/src/lib/smart-chart/smart-chart/smart-chart.module.d.ts +0 -11
  119. package/src/lib/smart-chart/smart-chart/smart-chart2/api/api/api.d.ts +0 -1
  120. package/src/lib/smart-chart/smart-chart/smart-chart2/api/model/diagramDataSetConstructionInstruction.d.ts +0 -21
  121. package/src/lib/smart-chart/smart-chart-projects.d.ts +0 -5
  122. package/src/lib/smart-chart/view-context/utility/componentLibrary.d.ts +0 -6
  123. /package/{src/lib/smart-chart/smart-chart/smart-chart2 → lib/smart-diagram}/api/api.module.d.ts +0 -0
  124. /package/{src/lib/smart-chart/smart-chart/smart-chart2 → lib/smart-diagram}/api/configuration.d.ts +0 -0
  125. /package/{src/lib/smart-chart/smart-chart/smart-chart2 → lib/smart-diagram}/api/index.d.ts +0 -0
  126. /package/{src/lib/smart-chart/smart-chart/smart-chart2 → lib/smart-diagram}/api/param.d.ts +0 -0
  127. /package/{src/lib/smart-chart/smart-chart/smart-chart2 → lib/smart-diagram}/api/variables.d.ts +0 -0
@@ -1,7 +0,0 @@
1
- export * from './chartData';
2
- export * from './chartDescriptor';
3
- export * from './chartOrientation';
4
- export * from './chartType';
5
- export * from './chartValue';
6
- export * from './pieChartLegendPosition';
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtY2hhcnQvYXBpL21vZGVsL21vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYywwQkFBMEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY2hhcnREYXRhJztcclxuZXhwb3J0ICogZnJvbSAnLi9jaGFydERlc2NyaXB0b3InO1xyXG5leHBvcnQgKiBmcm9tICcuL2NoYXJ0T3JpZW50YXRpb24nO1xyXG5leHBvcnQgKiBmcm9tICcuL2NoYXJ0VHlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY2hhcnRWYWx1ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcGllQ2hhcnRMZWdlbmRQb3NpdGlvbic7XHJcbiJdfQ==
@@ -1,16 +0,0 @@
1
- /**
2
- * Chart API
3
- * API for consume charts.
4
- *
5
- * The version of the OpenAPI document: 1.0.0
6
- * Contact: info@it4all.hu
7
- *
8
- * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9
- * https://openapi-generator.tech
10
- * Do not edit the class manually.
11
- */
12
- export const PieChartLegendPosition = {
13
- Right: 'right',
14
- Below: 'below'
15
- };
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGllQ2hhcnRMZWdlbmRQb3NpdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LWNoYXJ0L2FwaS9tb2RlbC9waWVDaGFydExlZ2VuZFBvc2l0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7O0dBVUc7QUFLSCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRztJQUNsQyxLQUFLLEVBQUUsT0FBaUM7SUFDeEMsS0FBSyxFQUFFLE9BQWlDO0NBQzNDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQ2hhcnQgQVBJXHJcbiAqIEFQSSBmb3IgY29uc3VtZSBjaGFydHMuXHJcbiAqXHJcbiAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBPcGVuQVBJIGRvY3VtZW50OiAxLjAuMFxyXG4gKiBDb250YWN0OiBpbmZvQGl0NGFsbC5odVxyXG4gKlxyXG4gKiBOT1RFOiBUaGlzIGNsYXNzIGlzIGF1dG8gZ2VuZXJhdGVkIGJ5IE9wZW5BUEkgR2VuZXJhdG9yIChodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gpLlxyXG4gKiBodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2hcclxuICogRG8gbm90IGVkaXQgdGhlIGNsYXNzIG1hbnVhbGx5LlxyXG4gKi9cclxuXHJcblxyXG5leHBvcnQgdHlwZSBQaWVDaGFydExlZ2VuZFBvc2l0aW9uID0gJ3JpZ2h0JyB8ICdiZWxvdyc7XHJcblxyXG5leHBvcnQgY29uc3QgUGllQ2hhcnRMZWdlbmRQb3NpdGlvbiA9IHtcclxuICAgIFJpZ2h0OiAncmlnaHQnIGFzIFBpZUNoYXJ0TGVnZW5kUG9zaXRpb24sXHJcbiAgICBCZWxvdzogJ2JlbG93JyBhcyBQaWVDaGFydExlZ2VuZFBvc2l0aW9uXHJcbn07XHJcblxyXG4iXX0=
@@ -1,233 +0,0 @@
1
- import { Injectable, InjectionToken, Optional, Inject } from "@angular/core";
2
- import * as i0 from "@angular/core";
3
- export const CUSTOM_CHART_OPTIONS = new InjectionToken("CUSTOM_CHART_OPTIONS");
4
- export function transformDataToBasicDataSets(chartData) {
5
- return {
6
- labels: chartData.labels,
7
- datasets: chartData.items.map((dataset) => {
8
- const color = dataset.dataSetcolor || generateRandomColor();
9
- return {
10
- data: dataset.items.map((item) => item.xValue),
11
- label: dataset.label,
12
- backgroundColor: color,
13
- borderColor: color,
14
- };
15
- }),
16
- };
17
- }
18
- export function transformDataToBarLikeDataSet(chartData) {
19
- return {
20
- labels: chartData.labels,
21
- datasets: chartData.items.map((dataset) => {
22
- return {
23
- data: dataset.items.map((item) => item.xValue),
24
- label: dataset.label,
25
- backgroundColor: dataset.items.map((item) => item.itemColor || generateRandomColor()),
26
- borderColor: dataset.items.map((item) => item.itemColor || generateRandomColor()),
27
- };
28
- }),
29
- };
30
- }
31
- export function transformDataToScatter(chartData) {
32
- return {
33
- datasets: chartData.items.map((dataset) => {
34
- const color = dataset.dataSetcolor || generateRandomColor();
35
- return {
36
- label: dataset.label,
37
- data: dataset.items.map((item) => ({
38
- x: item.xValue,
39
- y: item.yValue,
40
- })),
41
- backgroundColor: color,
42
- borderColor: color,
43
- };
44
- }),
45
- };
46
- }
47
- export function transformDataToBubble(chartData) {
48
- return {
49
- datasets: chartData.items.map((dataset) => {
50
- const color = dataset.dataSetcolor || generateRandomColor();
51
- return {
52
- label: dataset.label,
53
- data: dataset.items.map((item) => ({
54
- x: item.xValue,
55
- y: item.yValue,
56
- r: item.rValue ?? 5,
57
- })),
58
- backgroundColor: color,
59
- borderColor: color,
60
- };
61
- }),
62
- };
63
- }
64
- export const barChart = {
65
- chartType: "bar",
66
- chartJsType: "bar",
67
- createOptions: () => {
68
- return {};
69
- },
70
- transformData: transformDataToBarLikeDataSet,
71
- };
72
- export const horizontalBarChart = {
73
- chartType: "horizontalBar",
74
- chartJsType: "bar",
75
- createOptions: () => {
76
- return {
77
- indexAxis: "y",
78
- };
79
- },
80
- transformData: transformDataToBarLikeDataSet,
81
- };
82
- export const radarChart = {
83
- chartType: "radar",
84
- chartJsType: "radar",
85
- createOptions: () => {
86
- return {};
87
- },
88
- transformData: (chartData) => {
89
- return {
90
- labels: chartData.labels,
91
- datasets: chartData.items.map((dataset) => ({
92
- data: dataset.items.map((item) => item.xValue),
93
- label: dataset.label,
94
- borderColor: dataset.dataSetcolor,
95
- pointBackgroundColor: dataset.dataSetcolor,
96
- pointBorderColor: dataset.dataSetcolor,
97
- pointHoverBackgroundColor: "#000000",
98
- pointHoverBorderColor: dataset.dataSetcolor,
99
- })),
100
- };
101
- },
102
- };
103
- export const stackedBarChart = {
104
- chartType: "stackedBar",
105
- chartJsType: "bar",
106
- createOptions: () => {
107
- return {
108
- scales: {
109
- x: {
110
- stacked: true,
111
- },
112
- y: {
113
- stacked: true,
114
- },
115
- },
116
- };
117
- },
118
- transformData: transformDataToBasicDataSets,
119
- };
120
- export const pieChart = {
121
- chartType: "pie",
122
- chartJsType: "pie",
123
- createOptions: () => {
124
- return {};
125
- },
126
- transformData: transformDataToBarLikeDataSet,
127
- };
128
- export const doughnutChart = {
129
- chartType: "doughnut",
130
- chartJsType: "doughnut",
131
- createOptions: () => {
132
- return {};
133
- },
134
- transformData: transformDataToBarLikeDataSet,
135
- };
136
- export const scatterChart = {
137
- chartType: "scatter",
138
- chartJsType: "scatter",
139
- createOptions: () => {
140
- return {};
141
- },
142
- transformData: transformDataToScatter,
143
- };
144
- export const bubbleChart = {
145
- chartType: "bubble",
146
- chartJsType: "bubble",
147
- createOptions: () => {
148
- return {};
149
- },
150
- transformData: transformDataToBubble,
151
- };
152
- export const multiAxisLineChart = {
153
- chartType: "multiAxisLine",
154
- chartJsType: "line",
155
- createOptions: (chartData) => {
156
- const yAxes = chartData.items.map((dataset, index) => ({
157
- id: `y${index == 1 ? "" : index}`,
158
- type: "linear",
159
- position: index % 2 === 0 ? "left" : "right",
160
- }));
161
- return {
162
- scales: {
163
- ...yAxes.reduce((acc, axis) => {
164
- acc[axis.id] = axis;
165
- return acc;
166
- }, {}),
167
- },
168
- };
169
- },
170
- transformData: (chartData) => {
171
- return {
172
- labels: chartData.labels,
173
- datasets: chartData.items.map((dataset, index) => ({
174
- data: dataset.items.map((item) => item.xValue),
175
- label: dataset.label,
176
- yAxisID: `y${index == 1 ? "" : index}`,
177
- backgroundColor: dataset.dataSetcolor,
178
- borderColor: dataset.dataSetcolor,
179
- })),
180
- };
181
- },
182
- };
183
- export const polarAreaChart = {
184
- chartType: "polarArea",
185
- chartJsType: "polarArea",
186
- createOptions: () => {
187
- return {};
188
- },
189
- transformData: (chartData) => {
190
- return {
191
- labels: chartData.labels,
192
- datasets: chartData.items.map((dataset) => ({
193
- data: dataset.items.map((item) => item.xValue),
194
- label: dataset.label,
195
- borderColor: dataset.items.map((item) => item.itemColor),
196
- backgroundColor: dataset.items.map((item) => item.itemColor),
197
- })),
198
- };
199
- },
200
- };
201
- export class DefaultChartOptionsProvider {
202
- constructor(factories) {
203
- this.factoriesByType = new Map(factories?.map((f) => [f.chartType, f]) ?? []);
204
- }
205
- getFactory(chartType) {
206
- return (this.factoriesByType.get(chartType) ?? {
207
- chartType: chartType,
208
- chartJsType: chartType,
209
- transformData: transformDataToBasicDataSets,
210
- createOptions: () => {
211
- return {};
212
- },
213
- });
214
- }
215
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: DefaultChartOptionsProvider, deps: [{ token: CUSTOM_CHART_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
216
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: DefaultChartOptionsProvider, providedIn: "root" }); }
217
- }
218
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: DefaultChartOptionsProvider, decorators: [{
219
- type: Injectable,
220
- args: [{
221
- providedIn: "root",
222
- }]
223
- }], ctorParameters: () => [{ type: undefined, decorators: [{
224
- type: Inject,
225
- args: [CUSTOM_CHART_OPTIONS]
226
- }, {
227
- type: Optional
228
- }] }] });
229
- function generateRandomColor() {
230
- const random = Math.floor(Math.random() * 16777215).toString(16);
231
- return `#${"000000".substring(0, 6 - random.length) + random}`;
232
- }
233
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1jaGFydC1vcHRpb25zLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtY2hhcnQvZGVmYXVsdC1jaGFydC1vcHRpb25zLnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRzdFLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLElBQUksY0FBYyxDQUNwRCxzQkFBc0IsQ0FDdkIsQ0FBQztBQVNGLE1BQU0sVUFBVSw0QkFBNEIsQ0FDMUMsU0FBK0I7SUFFL0IsT0FBTztRQUNMLE1BQU0sRUFBRSxTQUFTLENBQUMsTUFBTTtRQUN4QixRQUFRLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUN4QyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsWUFBWSxJQUFJLG1CQUFtQixFQUFFLENBQUM7WUFDNUQsT0FBTztnQkFDTCxJQUFJLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7Z0JBQzlDLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztnQkFDcEIsZUFBZSxFQUFFLEtBQUs7Z0JBQ3RCLFdBQVcsRUFBRSxLQUFLO2FBQ25CLENBQUM7UUFDSixDQUFDLENBQUM7S0FDSCxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSw2QkFBNkIsQ0FDM0MsU0FBK0I7SUFFL0IsT0FBTztRQUNMLE1BQU0sRUFBRSxTQUFTLENBQUMsTUFBTTtRQUN4QixRQUFRLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFP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OytHQXZCVSwyQkFBMkIsa0JBRzVCLG9CQUFvQjttSEFIbkIsMkJBQTJCLGNBRjFCLE1BQU07OzRGQUVQLDJCQUEyQjtrQkFIdkMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQUlJLE1BQU07MkJBQUMsb0JBQW9COzswQkFDM0IsUUFBUTs7QUFzQmIsU0FBUyxtQkFBbUI7SUFDMUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pFLE9BQU8sSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDO0FBQ2pFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgT3B0aW9uYWwsIEluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IERpYWdyYW1EYXRhQ29udGFpbmVyIH0gZnJvbSBcIi4vc21hcnQtY2hhcnQyL2FwaVwiO1xyXG5cclxuZXhwb3J0IGNvbnN0IENVU1RPTV9DSEFSVF9PUFRJT05TID0gbmV3IEluamVjdGlvblRva2VuPENoYXJ0SnNGYWN0b3J5PihcclxuICBcIkNVU1RPTV9DSEFSVF9PUFRJT05TXCJcclxuKTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ2hhcnRKc0ZhY3Rvcnkge1xyXG4gIHJlYWRvbmx5IGNoYXJ0VHlwZTogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IGNoYXJ0SnNUeXBlOiBzdHJpbmc7XHJcbiAgY3JlYXRlT3B0aW9ucyhjaGFydERhdGE6IERpYWdyYW1EYXRhQ29udGFpbmVyKTogYW55O1xyXG4gIHRyYW5zZm9ybURhdGEoY2hhcnREYXRhOiBEaWFncmFtRGF0YUNvbnRhaW5lcik6IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybURhdGFUb0Jhc2ljRGF0YVNldHMoXHJcbiAgY2hhcnREYXRhOiBEaWFncmFtRGF0YUNvbnRhaW5lclxyXG4pOiBhbnkge1xyXG4gIHJldHVybiB7XHJcbiAgICBsYWJlbHM6IGNoYXJ0RGF0YS5sYWJlbHMsXHJcbiAgICBkYXRhc2V0czogY2hhcnREYXRhLml0ZW1zLm1hcCgoZGF0YXNldCkgPT4ge1xyXG4gICAgICBjb25zdCBjb2xvciA9IGRhdGFzZXQuZGF0YVNldGNvbG9yIHx8IGdlbmVyYXRlUmFuZG9tQ29sb3IoKTtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBkYXRhOiBkYXRhc2V0Lml0ZW1zLm1hcCgoaXRlbSkgPT4gaXRlbS54VmFsdWUpLFxyXG4gICAgICAgIGxhYmVsOiBkYXRhc2V0LmxhYmVsLFxyXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogY29sb3IsXHJcbiAgICAgICAgYm9yZGVyQ29sb3I6IGNvbG9yLFxyXG4gICAgICB9O1xyXG4gICAgfSksXHJcbiAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybURhdGFUb0Jhckxpa2VEYXRhU2V0KFxyXG4gIGNoYXJ0RGF0YTogRGlhZ3JhbURhdGFDb250YWluZXJcclxuKTogYW55IHtcclxuICByZXR1cm4ge1xyXG4gICAgbGFiZWxzOiBjaGFydERhdGEubGFiZWxzLFxyXG4gICAgZGF0YXNldHM6IGNoYXJ0RGF0YS5pdGVtcy5tYXAoKGRhdGFzZXQpID0+IHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBkYXRhOiBkYXRhc2V0Lml0ZW1zLm1hcCgoaXRlbSkgPT4gaXRlbS54VmFsdWUpLFxyXG4gICAgICAgIGxhYmVsOiBkYXRhc2V0LmxhYmVsLFxyXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogZGF0YXNldC5pdGVtcy5tYXAoXHJcbiAgICAgICAgICAoaXRlbSkgPT4gaXRlbS5pdGVtQ29sb3IgfHwgZ2VuZXJhdGVSYW5kb21Db2xvcigpXHJcbiAgICAgICAgKSxcclxuICAgICAgICBib3JkZXJDb2xvcjogZGF0YXNldC5pdGVtcy5tYXAoXHJcbiAgICAgICAgICAoaXRlbSkgPT4gaXRlbS5pdGVtQ29sb3IgfHwgZ2VuZXJhdGVSYW5kb21Db2xvcigpXHJcbiAgICAgICAgKSxcclxuICAgICAgfTtcclxuICAgIH0pLFxyXG4gIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1EYXRhVG9TY2F0dGVyKGNoYXJ0RGF0YTogRGlhZ3JhbURhdGFDb250YWluZXIpOiBhbnkge1xyXG4gIHJldHVybiB7XHJcbiAgICBkYXRhc2V0czogY2hhcnREYXRhLml0ZW1zLm1hcCgoZGF0YXNldCkgPT4ge1xyXG4gICAgICBjb25zdCBjb2xvciA9IGRhdGFzZXQuZGF0YVNldGNvbG9yIHx8IGdlbmVyYXRlUmFuZG9tQ29sb3IoKTtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBsYWJlbDogZGF0YXNldC5sYWJlbCxcclxuICAgICAgICBkYXRhOiBkYXRhc2V0Lml0ZW1zLm1hcCgoaXRlbSkgPT4gKHtcclxuICAgICAgICAgIHg6IGl0ZW0ueFZhbHVlLFxyXG4gICAgICAgICAgeTogaXRlbS55VmFsdWUsXHJcbiAgICAgICAgfSkpLFxyXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogY29sb3IsXHJcbiAgICAgICAgYm9yZGVyQ29sb3I6IGNvbG9yLFxyXG4gICAgICB9O1xyXG4gICAgfSksXHJcbiAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybURhdGFUb0J1YmJsZShjaGFydERhdGE6IERpYWdyYW1EYXRhQ29udGFpbmVyKTogYW55IHtcclxuICByZXR1cm4ge1xyXG4gICAgZGF0YXNldHM6IGNoYXJ0RGF0YS5pdGVtcy5tYXAoKGRhdGFzZXQpID0+IHtcclxuICAgICAgY29uc3QgY29sb3IgPSBkYXRhc2V0LmRhdGFTZXRjb2xvciB8fCBnZW5lcmF0ZVJhbmRvbUNvbG9yKCk7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgbGFiZWw6IGRhdGFzZXQubGFiZWwsXHJcbiAgICAgICAgZGF0YTogZGF0YXNldC5pdGVtcy5tYXAoKGl0ZW0pID0+ICh7XHJcbiAgICAgICAgICB4OiBpdGVtLnhWYWx1ZSxcclxuICAgICAgICAgIHk6IGl0ZW0ueVZhbHVlLFxyXG4gICAgICAgICAgcjogaXRlbS5yVmFsdWUgPz8gNSxcclxuICAgICAgICB9KSksXHJcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiBjb2xvcixcclxuICAgICAgICBib3JkZXJDb2xvcjogY29sb3IsXHJcbiAgICAgIH07XHJcbiAgICB9KSxcclxuICB9O1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgYmFyQ2hhcnQ6IENoYXJ0SnNGYWN0b3J5ID0ge1xyXG4gIGNoYXJ0VHlwZTogXCJiYXJcIixcclxuICBjaGFydEpzVHlwZTogXCJiYXJcIixcclxuICBjcmVhdGVPcHRpb25zOiAoKSA9PiB7XHJcbiAgICByZXR1cm4ge307XHJcbiAgfSxcclxuICB0cmFuc2Zvcm1EYXRhOiB0cmFuc2Zvcm1EYXRhVG9CYXJMaWtlRGF0YVNldCxcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBob3Jpem9udGFsQmFyQ2hhcnQ6IENoYXJ0SnNGYWN0b3J5ID0ge1xyXG4gIGNoYXJ0VHlwZTogXCJob3Jpem9udGFsQmFyXCIsXHJcbiAgY2hhcnRKc1R5cGU6IFwiYmFyXCIsXHJcbiAgY3JlYXRlT3B0aW9uczogKCkgPT4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgaW5kZXhBeGlzOiBcInlcIixcclxuICAgIH07XHJcbiAgfSxcclxuICB0cmFuc2Zvcm1EYXRhOiB0cmFuc2Zvcm1EYXRhVG9CYXJMaWtlRGF0YVNldCxcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCByYWRhckNoYXJ0OiBDaGFydEpzRmFjdG9yeSA9IHtcclxuICBjaGFydFR5cGU6IFwicmFkYXJcIixcclxuICBjaGFydEpzVHlwZTogXCJyYWRhclwiLFxyXG4gIGNyZWF0ZU9wdGlvbnM6ICgpID0+IHtcclxuICAgIHJldHVybiB7fTtcclxuICB9LFxyXG4gIHRyYW5zZm9ybURhdGE6IChjaGFydERhdGE6IERpYWdyYW1EYXRhQ29udGFpbmVyKTogYW55ID0+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGxhYmVsczogY2hhcnREYXRhLmxhYmVscyxcclxuICAgICAgZGF0YXNldHM6IGNoYXJ0RGF0YS5pdGVtcy5tYXAoKGRhdGFzZXQpID0+ICh7XHJcbiAgICAgICAgZGF0YTogZGF0YXNldC5pdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0ueFZhbHVlKSxcclxuICAgICAgICBsYWJlbDogZGF0YXNldC5sYWJlbCxcclxuICAgICAgICBib3JkZXJDb2xvcjogZGF0YXNldC5kYXRhU2V0Y29sb3IsXHJcbiAgICAgICAgcG9pbnRCYWNrZ3JvdW5kQ29sb3I6IGRhdGFzZXQuZGF0YVNldGNvbG9yLFxyXG4gICAgICAgIHBvaW50Qm9yZGVyQ29sb3I6IGRhdGFzZXQuZGF0YVNldGNvbG9yLFxyXG4gICAgICAgIHBvaW50SG92ZXJCYWNrZ3JvdW5kQ29sb3I6IFwiIzAwMDAwMFwiLFxyXG4gICAgICAgIHBvaW50SG92ZXJCb3JkZXJDb2xvcjogZGF0YXNldC5kYXRhU2V0Y29sb3IsXHJcbiAgICAgIH0pKSxcclxuICAgIH07XHJcbiAgfSxcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBzdGFja2VkQmFyQ2hhcnQ6IENoYXJ0SnNGYWN0b3J5ID0ge1xyXG4gIGNoYXJ0VHlwZTogXCJzdGFja2VkQmFyXCIsXHJcbiAgY2hhcnRKc1R5cGU6IFwiYmFyXCIsXHJcbiAgY3JlYXRlT3B0aW9uczogKCkgPT4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgc2NhbGVzOiB7XHJcbiAgICAgICAgeDoge1xyXG4gICAgICAgICAgc3RhY2tlZDogdHJ1ZSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHk6IHtcclxuICAgICAgICAgIHN0YWNrZWQ6IHRydWUsXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgIH07XHJcbiAgfSxcclxuICB0cmFuc2Zvcm1EYXRhOiB0cmFuc2Zvcm1EYXRhVG9CYXNpY0RhdGFTZXRzLFxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHBpZUNoYXJ0OiBDaGFydEpzRmFjdG9yeSA9IHtcclxuICBjaGFydFR5cGU6IFwicGllXCIsXHJcbiAgY2hhcnRKc1R5cGU6IFwicGllXCIsXHJcbiAgY3JlYXRlT3B0aW9uczogKCkgPT4ge1xyXG4gICAgcmV0dXJuIHt9O1xyXG4gIH0sXHJcbiAgdHJhbnNmb3JtRGF0YTogdHJhbnNmb3JtRGF0YVRvQmFyTGlrZURhdGFTZXQsXHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZG91Z2hudXRDaGFydDogQ2hhcnRKc0ZhY3RvcnkgPSB7XHJcbiAgY2hhcnRUeXBlOiBcImRvdWdobnV0XCIsXHJcbiAgY2hhcnRKc1R5cGU6IFwiZG91Z2hudXRcIixcclxuICBjcmVhdGVPcHRpb25zOiAoKSA9PiB7XHJcbiAgICByZXR1cm4ge307XHJcbiAgfSxcclxuICB0cmFuc2Zvcm1EYXRhOiB0cmFuc2Zvcm1EYXRhVG9CYXJMaWtlRGF0YVNldCxcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBzY2F0dGVyQ2hhcnQ6IENoYXJ0SnNGYWN0b3J5ID0ge1xyXG4gIGNoYXJ0VHlwZTogXCJzY2F0dGVyXCIsXHJcbiAgY2hhcnRKc1R5cGU6IFwic2NhdHRlclwiLFxyXG4gIGNyZWF0ZU9wdGlvbnM6ICgpID0+IHtcclxuICAgIHJldHVybiB7fTtcclxuICB9LFxyXG4gIHRyYW5zZm9ybURhdGE6IHRyYW5zZm9ybURhdGFUb1NjYXR0ZXIsXHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgYnViYmxlQ2hhcnQ6IENoYXJ0SnNGYWN0b3J5ID0ge1xyXG4gIGNoYXJ0VHlwZTogXCJidWJibGVcIixcclxuICBjaGFydEpzVHlwZTogXCJidWJibGVcIixcclxuICBjcmVhdGVPcHRpb25zOiAoKSA9PiB7XHJcbiAgICByZXR1cm4ge307XHJcbiAgfSxcclxuICB0cmFuc2Zvcm1EYXRhOiB0cmFuc2Zvcm1EYXRhVG9CdWJibGUsXHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgbXVsdGlBeGlzTGluZUNoYXJ0OiBDaGFydEpzRmFjdG9yeSA9IHtcclxuICBjaGFydFR5cGU6IFwibXVsdGlBeGlzTGluZVwiLFxyXG4gIGNoYXJ0SnNUeXBlOiBcImxpbmVcIixcclxuICBjcmVhdGVPcHRpb25zOiAoY2hhcnREYXRhOiBEaWFncmFtRGF0YUNvbnRhaW5lcik6IGFueSA9PiB7XHJcbiAgICBjb25zdCB5QXhlcyA9IGNoYXJ0RGF0YS5pdGVtcy5tYXAoKGRhdGFzZXQsIGluZGV4KSA9PiAoe1xyXG4gICAgICBpZDogYHkke2luZGV4ID09IDEgPyBcIlwiIDogaW5kZXh9YCxcclxuICAgICAgdHlwZTogXCJsaW5lYXJcIixcclxuICAgICAgcG9zaXRpb246IGluZGV4ICUgMiA9PT0gMCA/IFwibGVmdFwiIDogXCJyaWdodFwiLFxyXG4gICAgfSkpO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgc2NhbGVzOiB7XHJcbiAgICAgICAgLi4ueUF4ZXMucmVkdWNlKChhY2M6IGFueSwgYXhpcykgPT4ge1xyXG4gICAgICAgICAgYWNjW2F4aXMuaWRdID0gYXhpcztcclxuICAgICAgICAgIHJldHVybiBhY2M7XHJcbiAgICAgICAgfSwge30pLFxyXG4gICAgICB9LFxyXG4gICAgfTtcclxuICB9LFxyXG4gIHRyYW5zZm9ybURhdGE6IChjaGFydERhdGE6IERpYWdyYW1EYXRhQ29udGFpbmVyKTogYW55ID0+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGxhYmVsczogY2hhcnREYXRhLmxhYmVscyxcclxuICAgICAgZGF0YXNldHM6IGNoYXJ0RGF0YS5pdGVtcy5tYXAoKGRhdGFzZXQsIGluZGV4KSA9PiAoe1xyXG4gICAgICAgIGRhdGE6IGRhdGFzZXQuaXRlbXMubWFwKChpdGVtKSA9PiBpdGVtLnhWYWx1ZSksXHJcbiAgICAgICAgbGFiZWw6IGRhdGFzZXQubGFiZWwsXHJcbiAgICAgICAgeUF4aXNJRDogYHkke2luZGV4ID09IDEgPyBcIlwiIDogaW5kZXh9YCxcclxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGRhdGFzZXQuZGF0YVNldGNvbG9yLFxyXG4gICAgICAgIGJvcmRlckNvbG9yOiBkYXRhc2V0LmRhdGFTZXRjb2xvcixcclxuICAgICAgfSkpLFxyXG4gICAgfTtcclxuICB9LFxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHBvbGFyQXJlYUNoYXJ0OiBDaGFydEpzRmFjdG9yeSA9IHtcclxuICBjaGFydFR5cGU6IFwicG9sYXJBcmVhXCIsXHJcbiAgY2hhcnRKc1R5cGU6IFwicG9sYXJBcmVhXCIsXHJcbiAgY3JlYXRlT3B0aW9uczogKCkgPT4ge1xyXG4gICAgcmV0dXJuIHt9O1xyXG4gIH0sXHJcbiAgdHJhbnNmb3JtRGF0YTogKGNoYXJ0RGF0YTogRGlhZ3JhbURhdGFDb250YWluZXIpOiBhbnkgPT4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbGFiZWxzOiBjaGFydERhdGEubGFiZWxzLFxyXG4gICAgICBkYXRhc2V0czogY2hhcnREYXRhLml0ZW1zLm1hcCgoZGF0YXNldCkgPT4gKHtcclxuICAgICAgICBkYXRhOiBkYXRhc2V0Lml0ZW1zLm1hcCgoaXRlbSkgPT4gaXRlbS54VmFsdWUpLFxyXG4gICAgICAgIGxhYmVsOiBkYXRhc2V0LmxhYmVsLFxyXG4gICAgICAgIGJvcmRlckNvbG9yOiBkYXRhc2V0Lml0ZW1zLm1hcCgoaXRlbSkgPT4gaXRlbS5pdGVtQ29sb3IpLFxyXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogZGF0YXNldC5pdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0uaXRlbUNvbG9yKSxcclxuICAgICAgfSkpLFxyXG4gICAgfTtcclxuICB9LFxyXG59O1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46IFwicm9vdFwiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGVmYXVsdENoYXJ0T3B0aW9uc1Byb3ZpZGVyIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IGZhY3Rvcmllc0J5VHlwZTogTWFwPHN0cmluZywgQ2hhcnRKc0ZhY3Rvcnk+O1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdChDVVNUT01fQ0hBUlRfT1BUSU9OUylcclxuICAgIEBPcHRpb25hbCgpXHJcbiAgICBmYWN0b3JpZXM6IENoYXJ0SnNGYWN0b3J5W10gfCB1bmRlZmluZWRcclxuICApIHtcclxuICAgIHRoaXMuZmFjdG9yaWVzQnlUeXBlID0gbmV3IE1hcChcclxuICAgICAgZmFjdG9yaWVzPy5tYXAoKGYpID0+IFtmLmNoYXJ0VHlwZSwgZl0pID8/IFtdXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0RmFjdG9yeShjaGFydFR5cGU6IHN0cmluZyk6IENoYXJ0SnNGYWN0b3J5IHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuZmFjdG9yaWVzQnlUeXBlLmdldChjaGFydFR5cGUpID8/IHtcclxuICAgICAgICBjaGFydFR5cGU6IGNoYXJ0VHlwZSxcclxuICAgICAgICBjaGFydEpzVHlwZTogY2hhcnRUeXBlLFxyXG4gICAgICAgIHRyYW5zZm9ybURhdGE6IHRyYW5zZm9ybURhdGFUb0Jhc2ljRGF0YVNldHMsXHJcbiAgICAgICAgY3JlYXRlT3B0aW9uczogKCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHt9O1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBnZW5lcmF0ZVJhbmRvbUNvbG9yKCk6IHN0cmluZyB7XHJcbiAgY29uc3QgcmFuZG9tID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTY3NzcyMTUpLnRvU3RyaW5nKDE2KTtcclxuICByZXR1cm4gYCMke1wiMDAwMDAwXCIuc3Vic3RyaW5nKDAsIDYgLSByYW5kb20ubGVuZ3RoKSArIHJhbmRvbX1gO1xyXG59XHJcbiJdfQ==
@@ -1,285 +0,0 @@
1
- import { Component, EventEmitter, Inject, Input, Optional, Output, ViewChild, } from "@angular/core";
2
- import { COMPONENT_LIBRARY, ComponentLibrary, } from "../view-context/utility/componentLibrary";
3
- import { Chart } from "chart.js";
4
- import AnnotationPlugin from "chartjs-plugin-annotation";
5
- import ZoomPlugin from "chartjs-plugin-zoom";
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "./default-chart-options.provider";
8
- import * as i2 from "primeng/chart";
9
- import * as i3 from "../view-context/utility/componentLibrary";
10
- export class SmartChartComponent {
11
- constructor(chartOptionProvider, compLib) {
12
- this.chartOptionProvider = chartOptionProvider;
13
- this.plugins = [];
14
- this.dataSelect = new EventEmitter();
15
- this.chartClick = new EventEmitter();
16
- this.onDataClicked = new EventEmitter(); //
17
- this.componentLibrary = ComponentLibrary;
18
- this.compLib = compLib ?? ComponentLibrary.PRIMENG;
19
- Chart.register(AnnotationPlugin);
20
- Chart.register(ZoomPlugin);
21
- }
22
- ngOnInit() {
23
- let options = undefined;
24
- const diagramType = !!this.diagramUiModel.descriptor?.diagramType
25
- ? this.diagramUiModel.descriptor.diagramType
26
- : "";
27
- const factory = this.chartOptionProvider.getFactory(diagramType);
28
- this.type = factory.chartJsType;
29
- options = factory.createOptions(this.diagramUiModel.diagramData);
30
- if (this.diagramUiModel.descriptor) {
31
- options = this.deepMerge(this.convertBackendOptions(this.diagramUiModel.descriptor), options);
32
- }
33
- if (this.options) {
34
- options = this.deepMerge(this.options, options);
35
- }
36
- this.options = options;
37
- this.data = factory.transformData(this.diagramUiModel.diagramData);
38
- }
39
- deepMerge(target, source) {
40
- for (const key of Object.keys(source)) {
41
- if (source[key] instanceof Object && target[key]) {
42
- Object.assign(source[key], this.deepMerge(target[key], source[key]));
43
- }
44
- }
45
- Object.assign(target || {}, source);
46
- return target;
47
- }
48
- convertBackendOptions(descriptor) {
49
- const options = {
50
- plugins: {
51
- legend: {
52
- display: descriptor.showLegendForChart ?? true,
53
- },
54
- },
55
- scales: {},
56
- };
57
- if (descriptor.diagramMinX !== undefined &&
58
- descriptor.diagramMaxX !== undefined) {
59
- options.scales.x = {
60
- ticks: {
61
- display: descriptor.showLabelsForXAxis ?? true,
62
- },
63
- min: descriptor.diagramMinX,
64
- max: descriptor.diagramMaxX,
65
- };
66
- }
67
- else {
68
- options.scales.x = {
69
- ticks: {
70
- display: descriptor.showLabelsForXAxis ?? true,
71
- },
72
- };
73
- }
74
- if (descriptor.diagramMinY !== undefined &&
75
- descriptor.diagramMaxY !== undefined) {
76
- options.scales.y = {
77
- ticks: {
78
- display: descriptor.showLabelsForYAxis ?? true,
79
- },
80
- min: descriptor.diagramMinY,
81
- max: descriptor.diagramMaxY,
82
- };
83
- }
84
- else {
85
- options.scales.y = {
86
- ticks: {
87
- display: descriptor.showLabelsForYAxis ?? true,
88
- },
89
- };
90
- }
91
- //Create shapes
92
- if (descriptor.diagramShapes) {
93
- descriptor.diagramShapes.forEach((shape, index) => {
94
- options.plugins.annotation = options.plugins.annotation || {};
95
- options.plugins.annotation.annotations =
96
- options.plugins.annotation.annotations || {};
97
- let borderColor = `rgba(
98
- ${shape.borderColor?.red ?? 0},
99
- ${shape.borderColor?.green ?? 0},
100
- ${shape.borderColor?.blue ?? 0},
101
- ${shape.borderColor?.alpha ?? 1})`;
102
- let backgroundColor = `rgba(
103
- ${shape.backgroundColor?.red ?? 0},
104
- ${shape.backgroundColor?.green ?? 0},
105
- ${shape.backgroundColor?.blue ?? 0},
106
- ${shape.backgroundColor?.alpha ?? 1})`;
107
- let fontColor = `rgba(
108
- ${shape.labelText?.color?.red ?? 0},
109
- ${shape.labelText?.color?.green ?? 0},
110
- ${shape.labelText?.color?.blue ?? 0},
111
- ${shape.labelText?.color?.alpha ?? 1})`;
112
- let borderDash;
113
- if (shape.borderDashLength && shape.borderDashGap) {
114
- borderDash = [shape.borderDashLength, shape.borderDashGap];
115
- }
116
- else {
117
- borderDash = undefined;
118
- }
119
- const baseAnnotation = {
120
- type: shape.shapeType ?? "line",
121
- backgroundColor: backgroundColor ?? undefined,
122
- borderColor: borderColor ?? undefined,
123
- borderWidth: shape.borderWidth ?? 1,
124
- borderDash: borderDash ?? undefined,
125
- drawTime: shape.drawTime ?? undefined,
126
- };
127
- switch (shape.shapeType) {
128
- case "box":
129
- case "line":
130
- case "ellipse":
131
- options.plugins.annotation.annotations[`shape${index}`] = {
132
- ...baseAnnotation,
133
- xMin: shape.xMin ?? undefined,
134
- xMax: shape.xMax ?? undefined,
135
- yMin: shape.yMin ?? undefined,
136
- yMax: shape.yMax ?? undefined,
137
- };
138
- break;
139
- case "label":
140
- options.plugins.annotation.annotations[`shape${index}`] = {
141
- ...baseAnnotation,
142
- xValue: shape.xMin ?? undefined,
143
- yValue: shape.yMin ?? undefined,
144
- content: shape.labelText?.content ?? undefined,
145
- textAlign: shape.labelText?.textAlign ?? undefined,
146
- color: fontColor ?? undefined,
147
- font: {
148
- size: shape.labelText?.size ?? undefined,
149
- weight: shape.labelText?.weight ?? undefined,
150
- style: shape.labelText?.style ?? undefined,
151
- },
152
- };
153
- break;
154
- case "point":
155
- case "polygon":
156
- options.plugins.annotation.annotations[`shape${index}`] = {
157
- ...baseAnnotation,
158
- xValue: shape.xMin ?? undefined,
159
- yValue: shape.yMin ?? undefined,
160
- };
161
- break;
162
- default:
163
- // Optionally handle any other shape types
164
- console.warn(`Unknown shape type: ${shape.shapeType}`);
165
- break;
166
- }
167
- });
168
- }
169
- if (descriptor.backgroundColor) {
170
- let backgroundColor = `rgba(
171
- ${descriptor.backgroundColor?.red ?? 0},
172
- ${descriptor.backgroundColor?.green ?? 0},
173
- ${descriptor.backgroundColor?.blue ?? 0},
174
- ${descriptor.backgroundColor?.alpha ?? 1})`;
175
- let id = "customCanvasBackgroundColor";
176
- const plugin = {
177
- id: id,
178
- beforeDraw: (chart, args, options) => {
179
- const { ctx, chartArea } = chart;
180
- ctx.save();
181
- ctx.globalCompositeOperation = "destination-over";
182
- ctx.fillStyle = backgroundColor;
183
- ctx.fillRect(chartArea.left, chartArea.top, chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);
184
- ctx.restore();
185
- },
186
- };
187
- this.plugins.push(plugin);
188
- options.plugins[`${id}`] = {
189
- color: backgroundColor,
190
- };
191
- }
192
- return options;
193
- }
194
- onDataSelect(event) {
195
- this.dataSelect.emit(event);
196
- }
197
- handleChartClick(event) {
198
- this.chartClick.emit(event);
199
- }
200
- handleOnDataClicked(event) {
201
- const canvas = event.target;
202
- const chart = Chart.getChart(canvas);
203
- if (chart) {
204
- const elements = chart.getElementsAtEventForMode(event, "nearest", { intersect: true }, false);
205
- if (elements.length === 0) {
206
- return;
207
- }
208
- const clickedItems = chart.tooltip?.dataPoints?.map((item) => {
209
- return {
210
- datasetIndex: item.datasetIndex,
211
- itemIndex: item.dataIndex,
212
- element: item.element,
213
- };
214
- });
215
- this.onDataClicked.emit({ event, clickedItems });
216
- }
217
- }
218
- getBase64Image() {
219
- return this.chart?.getBase64Image();
220
- }
221
- refresh() {
222
- return this.chart?.refresh();
223
- }
224
- getChart() {
225
- return this.chart?.chart;
226
- }
227
- getVisiblePoints() {
228
- if (!this.chart)
229
- return;
230
- const chartInstance = this.chart.chart;
231
- if (!chartInstance)
232
- return;
233
- const visiblePoints = [];
234
- chartInstance.data.datasets.forEach((dataset, datasetIndex) => {
235
- const meta = chartInstance.getDatasetMeta(datasetIndex);
236
- // Check if the dataset is hidden
237
- if (!chartInstance.isDatasetVisible(datasetIndex)) {
238
- return;
239
- }
240
- const xMin = meta.xScale.min;
241
- const xMax = meta.xScale.max;
242
- const yMin = meta.yScale.min;
243
- const yMax = meta.yScale.max;
244
- dataset.data.forEach((point, dataIndex) => {
245
- const { x, y } = point;
246
- if (x >= xMin && x <= xMax && y >= yMin && y <= yMax) {
247
- visiblePoints.push({
248
- datasetIndex,
249
- dataIndex,
250
- x,
251
- y,
252
- });
253
- }
254
- });
255
- });
256
- return visiblePoints;
257
- }
258
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartChartComponent, deps: [{ token: i1.DefaultChartOptionsProvider }, { token: COMPONENT_LIBRARY, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
259
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: SmartChartComponent, selector: "smart-chart", inputs: { diagramUiModel: "diagramUiModel", options: "options", plugins: "plugins" }, outputs: { dataSelect: "dataSelect", chartClick: "chartClick", onDataClicked: "onDataClicked" }, viewQueries: [{ propertyName: "chart", first: true, predicate: ["chartJSRef"], descendants: true }], ngImport: i0, template: "@if(compLib === componentLibrary.PRIMENG) {\r\n<p-chart\r\n #chartJSRef\r\n [type]=\"type\"\r\n [data]=\"data\"\r\n [options]=\"options\"\r\n [plugins]=\"plugins\"\r\n (onDataSelect)=\"onDataSelect($event)\"\r\n (click)=\"handleChartClick($event)\"\r\n (click)=\"handleOnDataClicked($event)\"\r\n/>\r\n} @else {\r\n<p>Only PrimeNg component library is supported</p>\r\n}\r\n", styles: [""], dependencies: [{ kind: "component", type: i2.UIChart, selector: "p-chart", inputs: ["type", "plugins", "width", "height", "responsive", "ariaLabel", "ariaLabelledBy", "data", "options"], outputs: ["onDataSelect"] }] }); }
260
- }
261
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartChartComponent, decorators: [{
262
- type: Component,
263
- args: [{ selector: "smart-chart", template: "@if(compLib === componentLibrary.PRIMENG) {\r\n<p-chart\r\n #chartJSRef\r\n [type]=\"type\"\r\n [data]=\"data\"\r\n [options]=\"options\"\r\n [plugins]=\"plugins\"\r\n (onDataSelect)=\"onDataSelect($event)\"\r\n (click)=\"handleChartClick($event)\"\r\n (click)=\"handleOnDataClicked($event)\"\r\n/>\r\n} @else {\r\n<p>Only PrimeNg component library is supported</p>\r\n}\r\n" }]
264
- }], ctorParameters: () => [{ type: i1.DefaultChartOptionsProvider }, { type: i3.ComponentLibrary, decorators: [{
265
- type: Inject,
266
- args: [COMPONENT_LIBRARY]
267
- }, {
268
- type: Optional
269
- }] }], propDecorators: { chart: [{
270
- type: ViewChild,
271
- args: ["chartJSRef"]
272
- }], diagramUiModel: [{
273
- type: Input
274
- }], options: [{
275
- type: Input
276
- }], plugins: [{
277
- type: Input
278
- }], dataSelect: [{
279
- type: Output
280
- }], chartClick: [{
281
- type: Output
282
- }], onDataClicked: [{
283
- type: Output
284
- }] } });
285
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtY2hhcnQvc21hcnQtY2hhcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtY2hhcnQvc21hcnQtY2hhcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLGdCQUFnQixHQUNqQixNQUFNLDBDQUEwQyxDQUFDO0FBQ2xELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFPakMsT0FBTyxnQkFBZ0IsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLFVBQVUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7QUFPN0MsTUFBTSxPQUFPLG1CQUFtQjtJQWdCOUIsWUFDVSxtQkFBZ0QsRUFDakIsT0FBMEI7UUFEekQsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUE2QjtRQWJqRCxZQUFPLEdBQVUsRUFBRSxDQUFDO1FBRW5CLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3JDLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3JDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQyxDQUFDLEVBQUU7UUFNckQscUJBQWdCLEdBQUcsZ0JBQWdCLENBQUM7UUFNbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLElBQUksZ0JBQWdCLENBQUMsT0FBTyxDQUFDO1FBQ25ELEtBQUssQ0FBQyxRQUFRLENB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bWl0dGVyLFxyXG4gIEluamVjdCxcclxuICBJbnB1dCxcclxuICBPcHRpb25hbCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IERlZmF1bHRDaGFydE9wdGlvbnNQcm92aWRlciB9IGZyb20gXCIuL2RlZmF1bHQtY2hhcnQtb3B0aW9ucy5wcm92aWRlclwiO1xyXG5pbXBvcnQge1xyXG4gIENPTVBPTkVOVF9MSUJSQVJZLFxyXG4gIENvbXBvbmVudExpYnJhcnksXHJcbn0gZnJvbSBcIi4uL3ZpZXctY29udGV4dC91dGlsaXR5L2NvbXBvbmVudExpYnJhcnlcIjtcclxuaW1wb3J0IHsgQ2hhcnQgfSBmcm9tIFwiY2hhcnQuanNcIjtcclxuaW1wb3J0IHsgVUlDaGFydCB9IGZyb20gXCJwcmltZW5nL2NoYXJ0XCI7XHJcbmltcG9ydCB7XHJcbiAgRGlhZ3JhbURlc2NyaXB0b3IsXHJcbiAgRGlhZ3JhbVNoYXBlLFxyXG4gIERpYWdyYW1VaU1vZGVsLFxyXG59IGZyb20gXCIuL3NtYXJ0LWNoYXJ0Mi9hcGlcIjtcclxuaW1wb3J0IEFubm90YXRpb25QbHVnaW4gZnJvbSBcImNoYXJ0anMtcGx1Z2luLWFubm90YXRpb25cIjtcclxuaW1wb3J0IFpvb21QbHVnaW4gZnJvbSBcImNoYXJ0anMtcGx1Z2luLXpvb21cIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcInNtYXJ0LWNoYXJ0XCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9zbWFydC1jaGFydC5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9zbWFydC1jaGFydC5jb21wb25lbnQuY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU21hcnRDaGFydENvbXBvbmVudCB7XHJcbiAgQFZpZXdDaGlsZChcImNoYXJ0SlNSZWZcIikgY2hhcnQ/OiBVSUNoYXJ0O1xyXG4gIEBJbnB1dCgpIGRpYWdyYW1VaU1vZGVsITogRGlhZ3JhbVVpTW9kZWw7XHJcbiAgQElucHV0KCkgb3B0aW9ucz86IGFueTtcclxuICBASW5wdXQoKSBwbHVnaW5zOiBhbnlbXSA9IFtdO1xyXG5cclxuICBAT3V0cHV0KCkgZGF0YVNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBjaGFydENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIG9uRGF0YUNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTsgLy9cclxuXHJcbiAgZGF0YTogYW55O1xyXG4gIHR5cGU6IGFueTtcclxuXHJcbiAgY29tcExpYjogQ29tcG9uZW50TGlicmFyeTtcclxuICBjb21wb25lbnRMaWJyYXJ5ID0gQ29tcG9uZW50TGlicmFyeTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNoYXJ0T3B0aW9uUHJvdmlkZXI6IERlZmF1bHRDaGFydE9wdGlvbnNQcm92aWRlcixcclxuICAgIEBJbmplY3QoQ09NUE9ORU5UX0xJQlJBUlkpIEBPcHRpb25hbCgpIGNvbXBMaWI/OiBDb21wb25lbnRMaWJyYXJ5XHJcbiAgKSB7XHJcbiAgICB0aGlzLmNvbXBMaWIgPSBjb21wTGliID8/IENvbXBvbmVudExpYnJhcnkuUFJJTUVORztcclxuICAgIENoYXJ0LnJlZ2lzdGVyKEFubm90YXRpb25QbHVnaW4pO1xyXG4gICAgQ2hhcnQucmVnaXN0ZXIoWm9vbVBsdWdpbik7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGxldCBvcHRpb25zID0gdW5kZWZpbmVkO1xyXG4gICAgY29uc3QgZGlhZ3JhbVR5cGUgPSAhIXRoaXMuZGlhZ3JhbVVpTW9kZWwuZGVzY3JpcHRvcj8uZGlhZ3JhbVR5cGVcclxuICAgICAgPyB0aGlzLmRpYWdyYW1VaU1vZGVsLmRlc2NyaXB0b3IuZGlhZ3JhbVR5cGVcclxuICAgICAgOiBcIlwiO1xyXG5cclxuICAgIGNvbnN0IGZhY3RvcnkgPSB0aGlzLmNoYXJ0T3B0aW9uUHJvdmlkZXIuZ2V0RmFjdG9yeShkaWFncmFtVHlwZSk7XHJcbiAgICB0aGlzLnR5cGUgPSBmYWN0b3J5LmNoYXJ0SnNUeXBlO1xyXG4gICAgb3B0aW9ucyA9IGZhY3RvcnkuY3JlYXRlT3B0aW9ucyh0aGlzLmRpYWdyYW1VaU1vZGVsLmRpYWdyYW1EYXRhISk7XHJcbiAgICBpZiAodGhpcy5kaWFncmFtVWlNb2RlbC5kZXNjcmlwdG9yKSB7XHJcbiAgICAgIG9wdGlvbnMgPSB0aGlzLmRlZXBNZXJnZShcclxuICAgICAgICB0aGlzLmNvbnZlcnRCYWNrZW5kT3B0aW9ucyh0aGlzLmRpYWdyYW1VaU1vZGVsLmRlc2NyaXB0b3IpLFxyXG4gICAgICAgIG9wdGlvbnNcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm9wdGlvbnMpIHtcclxuICAgICAgb3B0aW9ucyA9IHRoaXMuZGVlcE1lcmdlKHRoaXMub3B0aW9ucywgb3B0aW9ucyk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcclxuICAgIHRoaXMuZGF0YSA9IGZhY3RvcnkudHJhbnNmb3JtRGF0YSh0aGlzLmRpYWdyYW1VaU1vZGVsLmRpYWdyYW1EYXRhISk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRlZXBNZXJnZSh0YXJnZXQ6IGFueSwgc291cmNlOiBhbnkpOiBhbnkge1xyXG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoc291cmNlKSkge1xyXG4gICAgICBpZiAoc291cmNlW2tleV0gaW5zdGFuY2VvZiBPYmplY3QgJiYgdGFyZ2V0W2tleV0pIHtcclxuICAgICAgICBPYmplY3QuYXNzaWduKHNvdXJjZVtrZXldLCB0aGlzLmRlZXBNZXJnZSh0YXJnZXRba2V5XSwgc291cmNlW2tleV0pKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgT2JqZWN0LmFzc2lnbih0YXJnZXQgfHwge30sIHNvdXJjZSk7XHJcbiAgICByZXR1cm4gdGFyZ2V0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb252ZXJ0QmFja2VuZE9wdGlvbnMoZGVzY3JpcHRvcjogRGlhZ3JhbURlc2NyaXB0b3IpIHtcclxuICAgIGNvbnN0IG9wdGlvbnM6IGFueSA9IHtcclxuICAgICAgcGx1Z2luczoge1xyXG4gICAgICAgIGxlZ2VuZDoge1xyXG4gICAgICAgICAgZGlzcGxheTogZGVzY3JpcHRvci5zaG93TGVnZW5kRm9yQ2hhcnQgPz8gdHJ1ZSxcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgICBzY2FsZXM6IHt9IGFzIGFueSxcclxuICAgIH07XHJcbiAgICBpZiAoXHJcbiAgICAgIGRlc2NyaXB0b3IuZGlhZ3JhbU1pblggIT09IHVuZGVmaW5lZCAmJlxyXG4gICAgICBkZXNjcmlwdG9yLmRpYWdyYW1NYXhYICE9PSB1bmRlZmluZWRcclxuICAgICkge1xyXG4gICAgICBvcHRpb25zLnNjYWxlcy54ID0ge1xyXG4gICAgICAgIHRpY2tzOiB7XHJcbiAgICAgICAgICBkaXNwbGF5OiBkZXNjcmlwdG9yLnNob3dMYWJlbHNGb3JYQXhpcyA/PyB0cnVlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbWluOiBkZXNjcmlwdG9yLmRpYWdyYW1NaW5YLFxyXG4gICAgICAgIG1heDogZGVzY3JpcHRvci5kaWFncmFtTWF4WCxcclxuICAgICAgfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG9wdGlvbnMuc2NhbGVzLnggPSB7XHJcbiAgICAgICAgdGlja3M6IHtcclxuICAgICAgICAgIGRpc3BsYXk6IGRlc2NyaXB0b3Iuc2hvd0xhYmVsc0ZvclhBeGlzID8/IHRydWUsXHJcbiAgICAgICAgfSxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGlmIChcclxuICAgICAgZGVzY3JpcHRvci5kaWFncmFtTWluWSAhPT0gdW5kZWZpbmVkICYmXHJcbiAgICAgIGRlc2NyaXB0b3IuZGlhZ3JhbU1heFkgIT09IHVuZGVmaW5lZFxyXG4gICAgKSB7XHJcbiAgICAgIG9wdGlvbnMuc2NhbGVzLnkgPSB7XHJcbiAgICAgICAgdGlja3M6IHtcclxuICAgICAgICAgIGRpc3BsYXk6IGRlc2NyaXB0b3Iuc2hvd0xhYmVsc0ZvcllBeGlzID8/IHRydWUsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBtaW46IGRlc2NyaXB0b3IuZGlhZ3JhbU1pblksXHJcbiAgICAgICAgbWF4OiBkZXNjcmlwdG9yLmRpYWdyYW1NYXhZLFxyXG4gICAgICB9O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgb3B0aW9ucy5zY2FsZXMueSA9IHtcclxuICAgICAgICB0aWNrczoge1xyXG4gICAgICAgICAgZGlzcGxheTogZGVzY3JpcHRvci5zaG93TGFiZWxzRm9yWUF4aXMgPz8gdHJ1ZSxcclxuICAgICAgICB9LFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIC8vQ3JlYXRlIHNoYXBlc1xyXG4gICAgaWYgKGRlc2NyaXB0b3IuZGlhZ3JhbVNoYXBlcykge1xyXG4gICAgICBkZXNjcmlwdG9yLmRpYWdyYW1TaGFwZXMuZm9yRWFjaCgoc2hhcGU6IERpYWdyYW1TaGFwZSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIG9wdGlvbnMucGx1Z2lucy5hbm5vdGF0aW9uID0gb3B0aW9ucy5wbHVnaW5zLmFubm90YXRpb24gfHwge307XHJcbiAgICAgICAgb3B0aW9ucy5wbHVnaW5zLmFubm90YXRpb24uYW5ub3RhdGlvbnMgPVxyXG4gICAgICAgICAgb3B0aW9ucy5wbHVnaW5zLmFubm90YXRpb24uYW5ub3RhdGlvbnMgfHwge307XHJcblxyXG4gICAgICAgIGxldCBib3JkZXJDb2xvciA9IGByZ2JhKFxyXG4gICAgICAgICAke3NoYXBlLmJvcmRlckNvbG9yPy5yZWQgPz8gMH0sXHJcbiAgICAgICAgICR7c2hhcGUuYm9yZGVyQ29sb3I/LmdyZWVuID8/IDB9LFxyXG4gICAgICAgICAke3NoYXBlLmJvcmRlckNvbG9yPy5ibHVlID8/IDB9LFxyXG4gICAgICAgICAke3NoYXBlLmJvcmRlckNvbG9yPy5hbHBoYSA/PyAxfSlgO1xyXG4gICAgICAgIGxldCBiYWNrZ3JvdW5kQ29sb3IgPSBgcmdiYShcclxuICAgICAgICAgJHtzaGFwZS5iYWNrZ3JvdW5kQ29sb3I/LnJlZCA/PyAwfSxcclxuICAgICAgICAgJHtzaGFwZS5iYWNrZ3JvdW5kQ29sb3I/LmdyZWVuID8/IDB9LFxyXG4gICAgICAgICAke3NoYXBlLmJhY2tncm91bmRDb2xvcj8uYmx1ZSA/PyAwfSxcclxuICAgICAgICAgJHtzaGFwZS5iYWNrZ3JvdW5kQ29sb3I/LmFscGhhID8/IDF9KWA7XHJcblxyXG4gICAgICAgIGxldCBmb250Q29sb3IgPSBgcmdiYShcclxuICAgICAgICAgJHtzaGFwZS5sYWJlbFRleHQ/LmNvbG9yPy5yZWQgPz8gMH0sXHJcbiAgICAgICAgICR7c2hhcGUubGFiZWxUZXh0Py5jb2xvcj8uZ3JlZW4gPz8gMH0sXHJcbiAgICAgICAgICR7c2hhcGUubGFiZWxUZXh0Py5jb2xvcj8uYmx1ZSA/PyAwfSxcclxuICAgICAgICAgJHtzaGFwZS5sYWJlbFRleHQ/LmNvbG9yPy5hbHBoYSA/PyAxfSlgO1xyXG5cclxuICAgICAgICBsZXQgYm9yZGVyRGFzaDtcclxuICAgICAgICBpZiAoc2hhcGUuYm9yZGVyRGFzaExlbmd0aCAmJiBzaGFwZS5ib3JkZXJEYXNoR2FwKSB7XHJcbiAgICAgICAgICBib3JkZXJEYXNoID0gW3NoYXBlLmJvcmRlckRhc2hMZW5ndGgsIHNoYXBlLmJvcmRlckRhc2hHYXBdO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBib3JkZXJEYXNoID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgYmFzZUFubm90YXRpb24gPSB7XHJcbiAgICAgICAgICB0eXBlOiBzaGFwZS5zaGFwZVR5cGUgPz8gXCJsaW5lXCIsXHJcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGJhY2tncm91bmRDb2xvciA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICBib3JkZXJDb2xvcjogYm9yZGVyQ29sb3IgPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgYm9yZGVyV2lkdGg6IHNoYXBlLmJvcmRlcldpZHRoID8/IDEsXHJcbiAgICAgICAgICBib3JkZXJEYXNoOiBib3JkZXJEYXNoID8/IHVuZGVmaW5lZCxcclxuICAgICAgICAgIGRyYXdUaW1lOiBzaGFwZS5kcmF3VGltZSA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgc3dpdGNoIChzaGFwZS5zaGFwZVR5cGUpIHtcclxuICAgICAgICAgIGNhc2UgXCJib3hcIjpcclxuICAgICAgICAgIGNhc2UgXCJsaW5lXCI6XHJcbiAgICAgICAgICBjYXNlIFwiZWxsaXBzZVwiOlxyXG4gICAgICAgICAgICBvcHRpb25zLnBsdWdpbnMuYW5ub3RhdGlvbi5hbm5vdGF0aW9uc1tgc2hhcGUke2luZGV4fWBdID0ge1xyXG4gICAgICAgICAgICAgIC4uLmJhc2VBbm5vdGF0aW9uLFxyXG4gICAgICAgICAgICAgIHhNaW46IHNoYXBlLnhNaW4gPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgIHhNYXg6IHNoYXBlLnhNYXggPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgIHlNaW46IHNoYXBlLnlNaW4gPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgIHlNYXg6IHNoYXBlLnlNYXggPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBjYXNlIFwibGFiZWxcIjpcclxuICAgICAgICAgICAgb3B0aW9ucy5wbHVnaW5zLmFubm90YXRpb24uYW5ub3RhdGlvbnNbYHNoYXBlJHtpbmRleH1gXSA9IHtcclxuICAgICAgICAgICAgICAuLi5iYXNlQW5ub3RhdGlvbixcclxuICAgICAgICAgICAgICB4VmFsdWU6IHNoYXBlLnhNaW4gPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgIHlWYWx1ZTogc2hhcGUueU1pbiA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgY29udGVudDogc2hhcGUubGFiZWxUZXh0Py5jb250ZW50ID8/IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICB0ZXh0QWxpZ246IHNoYXBlLmxhYmVsVGV4dD8udGV4dEFsaWduID8/IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICBjb2xvcjogZm9udENvbG9yID8/IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICBmb250OiB7XHJcbiAgICAgICAgICAgICAgICBzaXplOiBzaGFwZS5sYWJlbFRleHQ/LnNpemUgPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgd2VpZ2h0OiBzaGFwZS5sYWJlbFRleHQ/LndlaWdodCA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICBzdHlsZTogc2hhcGUubGFiZWxUZXh0Py5zdHlsZSA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgY2FzZSBcInBvaW50XCI6XHJcbiAgICAgICAgICBjYXNlIFwicG9seWdvblwiOlxyXG4gICAgICAgICAgICBvcHRpb25zLnBsdWdpbnMuYW5ub3RhdGlvbi5hbm5vdGF0aW9uc1tgc2hhcGUke2luZGV4fWBdID0ge1xyXG4gICAgICAgICAgICAgIC4uLmJhc2VBbm5vdGF0aW9uLFxyXG4gICAgICAgICAgICAgIHhWYWx1ZTogc2hhcGUueE1pbiA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgeVZhbHVlOiBzaGFwZS55TWluID8/IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgLy8gT3B0aW9uYWxseSBoYW5kbGUgYW55IG90aGVyIHNoYXBlIHR5cGVzXHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgVW5rbm93biBzaGFwZSB0eXBlOiAke3NoYXBlLnNoYXBlVHlwZX1gKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZGVzY3JpcHRvci5iYWNrZ3JvdW5kQ29sb3IpIHtcclxuICAgICAgbGV0IGJhY2tncm91bmRDb2xvciA9IGByZ2JhKFxyXG4gICAgICAgICR7ZGVzY3JpcHRvci5iYWNrZ3JvdW5kQ29sb3I/LnJlZCA/PyAwfSxcclxuICAgICAgICAke2Rlc2NyaXB0b3IuYmFja2dyb3VuZENvbG9yPy5ncmVlbiA/PyAwfSxcclxuICAgICAgICAke2Rlc2NyaXB0b3IuYmFja2dyb3VuZENvbG9yPy5ibHVlID8/IDB9LFxyXG4gICAgICAgICR7ZGVzY3JpcHRvci5iYWNrZ3JvdW5kQ29sb3I/LmFscGhhID8/IDF9KWA7XHJcblxyXG4gICAgICBsZXQgaWQgPSBcImN1c3RvbUNhbnZhc0JhY2tncm91bmRDb2xvclwiO1xyXG4gICAgICBjb25zdCBwbHVnaW4gPSB7XHJcbiAgICAgICAgaWQ6IGlkLFxyXG4gICAgICAgIGJlZm9yZURyYXc6IChjaGFydDogYW55LCBhcmdzOiBhbnksIG9wdGlvbnM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgeyBjdHgsIGNoYXJ0QXJlYSB9ID0gY2hhcnQ7XHJcblxyXG4gICAgICAgICAgY3R4LnNhdmUoKTtcclxuICAgICAgICAgIGN0eC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gPSBcImRlc3RpbmF0aW9uLW92ZXJcIjtcclxuICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSBiYWNrZ3JvdW5kQ29sb3I7XHJcbiAgICAgICAgICBjdHguZmlsbFJlY3QoXHJcbiAgICAgICAgICAgIGNoYXJ0QXJlYS5sZWZ0LFxyXG4gICAgICAgICAgICBjaGFydEFyZWEudG9wLFxyXG4gICAgICAgICAgICBjaGFydEFyZWEucmlnaHQgLSBjaGFydEFyZWEubGVmdCxcclxuICAgICAgICAgICAgY2hhcnRBcmVhLmJvdHRvbSAtIGNoYXJ0QXJlYS50b3BcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBjdHgucmVzdG9yZSgpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMucGx1Z2lucy5wdXNoKHBsdWdpbik7XHJcblxyXG4gICAgICBvcHRpb25zLnBsdWdpbnNbYCR7aWR9YF0gPSB7XHJcbiAgICAgICAgY29sb3I6IGJhY2tncm91bmRDb2xvcixcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIHJldHVybiBvcHRpb25zO1xyXG4gIH1cclxuXHJcbiAgb25EYXRhU2VsZWN0KGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuZGF0YVNlbGVjdC5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUNoYXJ0Q2xpY2soZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5jaGFydENsaWNrLmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlT25EYXRhQ2xpY2tlZChldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCBjYW52YXMgPSBldmVudC50YXJnZXQgYXMgSFRNTENhbnZhc0VsZW1lbnQ7XHJcbiAgICBjb25zdCBjaGFydCA9IENoYXJ0LmdldENoYXJ0KGNhbnZhcyk7XHJcblxyXG4gICAgaWYgKGNoYXJ0KSB7XHJcbiAgICAgIGNvbnN0IGVsZW1lbnRzID0gY2hhcnQuZ2V0RWxlbWVudHNBdEV2ZW50Rm9yTW9kZShcclxuICAgICAgICBldmVudCxcclxuICAgICAgICBcIm5lYXJlc3RcIixcclxuICAgICAgICB7IGludGVyc2VjdDogdHJ1ZSB9LFxyXG4gICAgICAgIGZhbHNlXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChlbGVtZW50cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgY2xpY2tlZEl0ZW1zID0gY2hhcnQudG9vbHRpcD8uZGF0YVBvaW50cz8ubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGRhdGFzZXRJbmRleDogaXRlbS5kYXRhc2V0SW5kZXgsXHJcbiAgICAgICAgICBpdGVtSW5kZXg6IGl0ZW0uZGF0YUluZGV4LFxyXG4gICAgICAgICAgZWxlbWVudDogaXRlbS5lbGVtZW50LFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5vbkRhdGFDbGlja2VkLmVtaXQoeyBldmVudCwgY2xpY2tlZEl0ZW1zIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0QmFzZTY0SW1hZ2UoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jaGFydD8uZ2V0QmFzZTY0SW1hZ2UoKTtcclxuICB9XHJcblxyXG4gIHJlZnJlc2goKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jaGFydD8ucmVmcmVzaCgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q2hhcnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jaGFydD8uY2hhcnQ7XHJcbiAgfVxyXG4gIGdldFZpc2libGVQb2ludHMoKSB7XHJcbiAgICBpZiAoIXRoaXMuY2hhcnQpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBjaGFydEluc3RhbmNlID0gdGhpcy5jaGFydC5jaGFydDtcclxuICAgIGlmICghY2hhcnRJbnN0YW5jZSkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IHZpc2libGVQb2ludHM6IGFueSA9IFtdO1xyXG5cclxuICAgIGNoYXJ0SW5zdGFuY2UuZGF0YS5kYXRhc2V0cy5mb3JFYWNoKChkYXRhc2V0OiBhbnksIGRhdGFzZXRJbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IG1ldGEgPSBjaGFydEluc3RhbmNlLmdldERhdGFzZXRNZXRhKGRhdGFzZXRJbmRleCk7XHJcblxyXG4gICAgICAvLyBDaGVjayBpZiB0aGUgZGF0YXNldCBpcyBoaWRkZW5cclxuICAgICAgaWYgKCFjaGFydEluc3RhbmNlLmlzRGF0YXNldFZpc2libGUoZGF0YXNldEluZGV4KSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgeE1pbiA9IG1ldGEueFNjYWxlLm1pbjtcclxuICAgICAgY29uc3QgeE1heCA9IG1ldGEueFNjYWxlLm1heDtcclxuICAgICAgY29uc3QgeU1pbiA9IG1ldGEueVNjYWxlLm1pbjtcclxuICAgICAgY29uc3QgeU1heCA9IG1ldGEueVNjYWxlLm1heDtcclxuXHJcbiAgICAgIGRhdGFzZXQuZGF0YS5mb3JFYWNoKChwb2ludDogYW55LCBkYXRhSW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsgeCwgeSB9ID0gcG9pbnQ7XHJcblxyXG4gICAgICAgIGlmICh4ID49IHhNaW4gJiYgeCA8PSB4TWF4ICYmIHkgPj0geU1pbiAmJiB5IDw9IHlNYXgpIHtcclxuICAgICAgICAgIHZpc2libGVQb2ludHMucHVzaCh7XHJcbiAgICAgICAgICAgIGRhdGFzZXRJbmRleCxcclxuICAgICAgICAgICAgZGF0YUluZGV4LFxyXG4gICAgICAgICAgICB4LFxyXG4gICAgICAgICAgICB5LFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiB2aXNpYmxlUG9pbnRzO1xyXG4gIH1cclxufVxyXG4iLCJAaWYoY29tcExpYiA9PT0gY29tcG9uZW50TGlicmFyeS5QUklNRU5HKSB7XHJcbjxwLWNoYXJ0XHJcbiAgI2NoYXJ0SlNSZWZcclxuICBbdHlwZV09XCJ0eXBlXCJcclxuICBbZGF0YV09XCJkYXRhXCJcclxuICBbb3B0aW9uc109XCJvcHRpb25zXCJcclxuICBbcGx1Z2luc109XCJwbHVnaW5zXCJcclxuICAob25EYXRhU2VsZWN0KT1cIm9uRGF0YVNlbGVjdCgkZXZlbnQpXCJcclxuICAoY2xpY2spPVwiaGFuZGxlQ2hhcnRDbGljaygkZXZlbnQpXCJcclxuICAoY2xpY2spPVwiaGFuZGxlT25EYXRhQ2xpY2tlZCgkZXZlbnQpXCJcclxuLz5cclxufSBAZWxzZSB7XHJcbjxwPk9ubHkgUHJpbWVOZyBjb21wb25lbnQgbGlicmFyeSBpcyBzdXBwb3J0ZWQ8L3A+XHJcbn1cclxuIl19