@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
@@ -0,0 +1,341 @@
1
+ import { Component, EventEmitter, Inject, Input, Optional, Output, ViewChild } from '@angular/core';
2
+ import { Chart } from 'chart.js';
3
+ import AnnotationPlugin from 'chartjs-plugin-annotation';
4
+ import ZoomPlugin from 'chartjs-plugin-zoom';
5
+ import { COMPONENT_LIBRARY, ComponentLibrary } from '../../view-context/utility/componentLibrary';
6
+ import { lastValueFrom } from 'rxjs';
7
+ import { deepMerge } from './smart-diagram.util';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "../api";
10
+ import * as i2 from "./default-smart-diagram-options.provider";
11
+ import * as i3 from "primeng/chart";
12
+ import * as i4 from "../../view-context/utility/componentLibrary";
13
+ export class SmartDiagramComponent {
14
+ constructor(diagramApi, diagramOptionProvider, compLib) {
15
+ this.diagramApi = diagramApi;
16
+ this.diagramOptionProvider = diagramOptionProvider;
17
+ this.plugins = [];
18
+ //Output events
19
+ this.elementSelect = new EventEmitter();
20
+ this.canvasClick = new EventEmitter();
21
+ this.dataClick = new EventEmitter();
22
+ this.componentLibrary = ComponentLibrary;
23
+ this.compLib = compLib ?? ComponentLibrary.PRIMENG;
24
+ Chart.register(AnnotationPlugin);
25
+ Chart.register(ZoomPlugin);
26
+ }
27
+ async load() {
28
+ this.diagramModel = await lastValueFrom(this.diagramApi.load(this.uuid, this.identifier));
29
+ this.setUp();
30
+ }
31
+ ngAfterViewInit() {
32
+ // This will run when we have an input model
33
+ if (!this.diagramModel) {
34
+ this.load();
35
+ }
36
+ }
37
+ ngOnInit() {
38
+ // This will run when we have an input model
39
+ this.setUp();
40
+ }
41
+ setUp() {
42
+ if (!this.diagramModel) {
43
+ return;
44
+ }
45
+ let options = undefined;
46
+ const type = !!this.diagramModel.descriptor?.type ? this.diagramModel.descriptor.type : '';
47
+ const factory = this.diagramOptionProvider.getFactory(type);
48
+ this.type = factory.chartJsType;
49
+ options = factory.createOptions(this.diagramModel.diagramData);
50
+ if (this.diagramModel.descriptor) {
51
+ options = deepMerge(this.convertBackendOptions(this.diagramModel.descriptor), options);
52
+ }
53
+ if (this.options) {
54
+ options = deepMerge(this.options, options);
55
+ }
56
+ this.options = options;
57
+ this.data = factory.transformData(this.diagramModel.diagramData);
58
+ this.applyChartClass();
59
+ }
60
+ convertBackendOptions(descriptor) {
61
+ const options = {
62
+ plugins: {
63
+ legend: {
64
+ display: descriptor.showLegendForChart ?? true,
65
+ },
66
+ ...(descriptor.title
67
+ ? {
68
+ title: {
69
+ display: true,
70
+ text: descriptor.title.content ?? '',
71
+ color: descriptor.title.color
72
+ ? `rgba(${descriptor.title.color.red ?? 0},
73
+ ${descriptor.title.color.green ?? 0},
74
+ ${descriptor.title.color.blue ?? 0},
75
+ ${descriptor.title.color.alpha ?? 1})`
76
+ : '#000000ff',
77
+ font: {
78
+ size: descriptor.title.size ?? undefined,
79
+ weight: descriptor.title.weight ?? undefined,
80
+ style: descriptor.title.style ?? undefined,
81
+ family: descriptor.title.family ?? undefined,
82
+ },
83
+ },
84
+ }
85
+ : {}),
86
+ },
87
+ scales: {},
88
+ };
89
+ if (descriptor.minX !== undefined && descriptor.maxX !== undefined) {
90
+ options.scales.x = {
91
+ ticks: {
92
+ display: descriptor.showLabelsForXAxis ?? true,
93
+ },
94
+ min: descriptor.minX,
95
+ max: descriptor.maxX,
96
+ };
97
+ }
98
+ else {
99
+ options.scales.x = {
100
+ ticks: {
101
+ display: descriptor.showLabelsForXAxis ?? true,
102
+ },
103
+ };
104
+ }
105
+ if (descriptor.minY !== undefined && descriptor.maxY !== undefined) {
106
+ options.scales.y = {
107
+ ticks: {
108
+ display: descriptor.showLabelsForYAxis ?? true,
109
+ },
110
+ min: descriptor.minY,
111
+ max: descriptor.maxY,
112
+ };
113
+ }
114
+ else {
115
+ options.scales.y = {
116
+ ticks: {
117
+ display: descriptor.showLabelsForYAxis ?? true,
118
+ },
119
+ };
120
+ }
121
+ //Create shapes
122
+ if (descriptor.shapes) {
123
+ descriptor.shapes.forEach((shape, index) => {
124
+ options.plugins.annotation = options.plugins.annotation || {};
125
+ options.plugins.annotation.annotations = options.plugins.annotation.annotations || {};
126
+ let borderColor = `rgba(
127
+ ${shape.borderColor?.red ?? 0},
128
+ ${shape.borderColor?.green ?? 0},
129
+ ${shape.borderColor?.blue ?? 0},
130
+ ${shape.borderColor?.alpha ?? 1})`;
131
+ let backgroundColor = `rgba(
132
+ ${shape.backgroundColor?.red ?? 0},
133
+ ${shape.backgroundColor?.green ?? 0},
134
+ ${shape.backgroundColor?.blue ?? 0},
135
+ ${shape.backgroundColor?.alpha ?? 1})`;
136
+ let fontColor = `rgba(
137
+ ${shape.labelText?.color?.red ?? 0},
138
+ ${shape.labelText?.color?.green ?? 0},
139
+ ${shape.labelText?.color?.blue ?? 0},
140
+ ${shape.labelText?.color?.alpha ?? 1})`;
141
+ let borderDash;
142
+ if (shape.borderDashLength && shape.borderDashGap) {
143
+ borderDash = [shape.borderDashLength, shape.borderDashGap];
144
+ }
145
+ else {
146
+ borderDash = undefined;
147
+ }
148
+ const baseAnnotation = {
149
+ type: shape.shapeType ?? 'line',
150
+ backgroundColor: backgroundColor ?? undefined,
151
+ borderColor: borderColor ?? undefined,
152
+ borderWidth: shape.borderWidth ?? 1,
153
+ borderDash: borderDash ?? undefined,
154
+ drawTime: shape.drawTime ?? undefined,
155
+ };
156
+ switch (shape.shapeType) {
157
+ case 'box':
158
+ case 'line':
159
+ case 'ellipse':
160
+ options.plugins.annotation.annotations[`shape${index}`] = {
161
+ ...baseAnnotation,
162
+ xMin: shape.xMin ?? undefined,
163
+ xMax: shape.xMax ?? undefined,
164
+ yMin: shape.yMin ?? undefined,
165
+ yMax: shape.yMax ?? undefined,
166
+ };
167
+ break;
168
+ case 'label':
169
+ options.plugins.annotation.annotations[`shape${index}`] = {
170
+ ...baseAnnotation,
171
+ xValue: shape.xMin ?? undefined,
172
+ yValue: shape.yMin ?? undefined,
173
+ content: shape.labelText?.content ?? undefined,
174
+ textAlign: shape.labelText?.textAlign ?? undefined,
175
+ color: fontColor ?? undefined,
176
+ font: {
177
+ size: shape.labelText?.size ?? undefined,
178
+ weight: shape.labelText?.weight ?? undefined,
179
+ style: shape.labelText?.style ?? undefined,
180
+ },
181
+ backgroundColor: 'transparent',
182
+ borderColor: 'transparent',
183
+ };
184
+ break;
185
+ case 'point':
186
+ case 'polygon':
187
+ options.plugins.annotation.annotations[`shape${index}`] = {
188
+ ...baseAnnotation,
189
+ xValue: shape.xMin ?? undefined,
190
+ yValue: shape.yMin ?? undefined,
191
+ };
192
+ break;
193
+ default:
194
+ // Optionally handle any other shape types
195
+ console.warn(`Unknown shape type: ${shape.shapeType}`);
196
+ break;
197
+ }
198
+ });
199
+ }
200
+ if (descriptor.backgroundColor) {
201
+ let backgroundColor = `rgba(
202
+ ${descriptor.backgroundColor?.red ?? 0},
203
+ ${descriptor.backgroundColor?.green ?? 0},
204
+ ${descriptor.backgroundColor?.blue ?? 0},
205
+ ${descriptor.backgroundColor?.alpha ?? 1})`;
206
+ let id = 'customCanvasBackgroundColor';
207
+ const plugin = {
208
+ id: id,
209
+ beforeDraw: (chart, args, options) => {
210
+ const { ctx, chartArea } = chart;
211
+ ctx.save();
212
+ ctx.globalCompositeOperation = 'destination-over';
213
+ ctx.fillStyle = backgroundColor;
214
+ ctx.fillRect(chartArea.left, chartArea.top, chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);
215
+ ctx.restore();
216
+ },
217
+ };
218
+ this.plugins.push(plugin);
219
+ options.plugins[`${id}`] = {
220
+ color: backgroundColor,
221
+ };
222
+ }
223
+ return options;
224
+ }
225
+ onDataSelect(event) {
226
+ console.log({ event });
227
+ this.elementSelect.emit(event);
228
+ }
229
+ handleChartClick(event) {
230
+ console.log({ event });
231
+ this.canvasClick.emit(event);
232
+ }
233
+ handleOnDataClicked(event) {
234
+ const canvas = event.target;
235
+ const chart = Chart.getChart(canvas);
236
+ if (chart) {
237
+ const elements = chart.getElementsAtEventForMode(event, 'nearest', { intersect: true }, false);
238
+ if (elements.length === 0) {
239
+ return;
240
+ }
241
+ const clickedItems = chart.tooltip?.dataPoints?.map((item) => {
242
+ return {
243
+ datasetIndex: item.datasetIndex,
244
+ itemIndex: item.dataIndex,
245
+ element: item.element,
246
+ };
247
+ });
248
+ console.log({ event, clickedItems });
249
+ this.dataClick.emit({ event, clickedItems });
250
+ }
251
+ }
252
+ getBase64Image() {
253
+ return this.chart?.getBase64Image();
254
+ }
255
+ refresh() {
256
+ return this.chart?.refresh();
257
+ }
258
+ getChart() {
259
+ return this.chart?.chart;
260
+ }
261
+ getVisiblePoints() {
262
+ if (!this.chart)
263
+ return;
264
+ const chartInstance = this.chart.chart;
265
+ if (!chartInstance)
266
+ return;
267
+ const visiblePoints = [];
268
+ chartInstance.data.datasets.forEach((dataset, datasetIndex) => {
269
+ const meta = chartInstance.getDatasetMeta(datasetIndex);
270
+ // Check if the dataset is hidden
271
+ if (!chartInstance.isDatasetVisible(datasetIndex)) {
272
+ return;
273
+ }
274
+ const xMin = meta.xScale.min;
275
+ const xMax = meta.xScale.max;
276
+ const yMin = meta.yScale.min;
277
+ const yMax = meta.yScale.max;
278
+ dataset.data.forEach((point, dataIndex) => {
279
+ const { x, y } = point;
280
+ if (x >= xMin && x <= xMax && y >= yMin && y <= yMax) {
281
+ visiblePoints.push({
282
+ datasetIndex,
283
+ dataIndex,
284
+ x,
285
+ y,
286
+ });
287
+ }
288
+ });
289
+ });
290
+ return visiblePoints;
291
+ }
292
+ applyChartClass() {
293
+ if (!this.chart) {
294
+ return;
295
+ }
296
+ const chartElement = this.chart.el.nativeElement;
297
+ switch (this.type) {
298
+ case 'pie':
299
+ case 'doughnut':
300
+ case 'polarArea':
301
+ case 'radar':
302
+ chartElement.classList.add('pie-aspect-ratio');
303
+ break;
304
+ default:
305
+ chartElement.classList.add('default-aspect-ratio');
306
+ }
307
+ }
308
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartDiagramComponent, deps: [{ token: i1.DiagramServiceService }, { token: i2.DefaultChartOptionsProvider }, { token: COMPONENT_LIBRARY, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
309
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: SmartDiagramComponent, selector: "smart-diagram", inputs: { uuid: "uuid", identifier: "identifier", parent: "parent", diagramModel: "diagramModel", options: "options", plugins: "plugins" }, outputs: { elementSelect: "elementSelect", canvasClick: "canvasClick", dataClick: "dataClick" }, 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: [":host ::ng-deep .default-aspect-ratio div{width:100%;aspect-ratio:1.78}:host ::ng-deep .pie-aspect-ratio div{width:100%;aspect-ratio:1}\n"], dependencies: [{ kind: "component", type: i3.UIChart, selector: "p-chart", inputs: ["type", "plugins", "width", "height", "responsive", "ariaLabel", "ariaLabelledBy", "data", "options"], outputs: ["onDataSelect"] }] }); }
310
+ }
311
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartDiagramComponent, decorators: [{
312
+ type: Component,
313
+ args: [{ selector: 'smart-diagram', 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: [":host ::ng-deep .default-aspect-ratio div{width:100%;aspect-ratio:1.78}:host ::ng-deep .pie-aspect-ratio div{width:100%;aspect-ratio:1}\n"] }]
314
+ }], ctorParameters: () => [{ type: i1.DiagramServiceService }, { type: i2.DefaultChartOptionsProvider }, { type: i4.ComponentLibrary, decorators: [{
315
+ type: Inject,
316
+ args: [COMPONENT_LIBRARY]
317
+ }, {
318
+ type: Optional
319
+ }] }], propDecorators: { chart: [{
320
+ type: ViewChild,
321
+ args: ['chartJSRef']
322
+ }], uuid: [{
323
+ type: Input
324
+ }], identifier: [{
325
+ type: Input
326
+ }], parent: [{
327
+ type: Input
328
+ }], diagramModel: [{
329
+ type: Input
330
+ }], options: [{
331
+ type: Input
332
+ }], plugins: [{
333
+ type: Input
334
+ }], elementSelect: [{
335
+ type: Output
336
+ }], canvasClick: [{
337
+ type: Output
338
+ }], dataClick: [{
339
+ type: Output
340
+ }] } });
341
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtZGlhZ3JhbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1kaWFncmFtL2NvbXBvbmVudC9zbWFydC1kaWFncmFtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LWRpYWdyYW0vY29tcG9uZW50L3NtYXJ0LWRpYWdyYW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRWpDLE9BQU8sZ0JBQWdCLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxVQUFVLE1BQU0scUJBQXFCLENBQUM7QUFFN0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDbEcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7OztBQVFqRCxNQUFNLE9BQU8scUJBQXFCO0lBd0JoQyxZQUNVLFVBQWlDLEVBQ2pDLHFCQUFrRCxFQUNuQixPQUEwQjtRQUZ6RCxlQUFVLEdBQVYsVUFBVSxDQUF1QjtRQUNqQywwQkFBcUIsR0FBckIscUJBQXFCLENBQTZCO1FBZm5ELFlBQU8sR0FBVSxFQUFFLENBQUM7UUFFN0IsZUFBZTtRQUNMLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUN4QyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7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QUFDO1lBQ2hCLEtBQUssV0FBVyxDQUFDO1lBQ2pCLEtBQUssT0FBTztnQkFDVixZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO2dCQUMvQyxNQUFNO1lBQ1I7Z0JBQ0UsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUN2RCxDQUFDO0lBQ0gsQ0FBQzsrR0FyV1UscUJBQXFCLGtHQTJCdEIsaUJBQWlCO21HQTNCaEIscUJBQXFCLHVZQ2hCbEMsZ1lBY0E7OzRGREVhLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxlQUFlOzswQkErQnRCLE1BQU07MkJBQUMsaUJBQWlCOzswQkFBRyxRQUFRO3lDQTFCYixLQUFLO3NCQUE3QixTQUFTO3VCQUFDLFlBQVk7Z0JBR2QsSUFBSTtzQkFBWixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUdHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFHSSxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIElucHV0LCBPcHRpb25hbCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ2hhcnQgfSBmcm9tICdjaGFydC5qcyc7XHJcbmltcG9ydCB7IFVJQ2hhcnQgfSBmcm9tICdwcmltZW5nL2NoYXJ0JztcclxuaW1wb3J0IEFubm90YXRpb25QbHVnaW4gZnJvbSAnY2hhcnRqcy1wbHVnaW4tYW5ub3RhdGlvbic7XHJcbmltcG9ydCBab29tUGx1Z2luIGZyb20gJ2NoYXJ0anMtcGx1Z2luLXpvb20nO1xyXG5pbXBvcnQgeyBEaWFncmFtTW9kZWwsIERpYWdyYW1EZXNjcmlwdG9yLCBEaWFncmFtU2hhcGUsIERpYWdyYW1TZXJ2aWNlU2VydmljZSB9IGZyb20gJy4uL2FwaSc7XHJcbmltcG9ydCB7IENPTVBPTkVOVF9MSUJSQVJZLCBDb21wb25lbnRMaWJyYXJ5IH0gZnJvbSAnLi4vLi4vdmlldy1jb250ZXh0L3V0aWxpdHkvY29tcG9uZW50TGlicmFyeSc7XHJcbmltcG9ydCB7IGxhc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVlcE1lcmdlIH0gZnJvbSAnLi9zbWFydC1kaWFncmFtLnV0aWwnO1xyXG5pbXBvcnQgeyBEZWZhdWx0Q2hhcnRPcHRpb25zUHJvdmlkZXIgfSBmcm9tICcuL2RlZmF1bHQtc21hcnQtZGlhZ3JhbS1vcHRpb25zLnByb3ZpZGVyJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc21hcnQtZGlhZ3JhbScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NtYXJ0LWRpYWdyYW0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NtYXJ0LWRpYWdyYW0uY29tcG9uZW50LmNzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU21hcnREaWFncmFtQ29tcG9uZW50IHtcclxuICBAVmlld0NoaWxkKCdjaGFydEpTUmVmJykgY2hhcnQ/OiBVSUNoYXJ0O1xyXG5cclxuICAvL1dpZGdldCBpbnB1dHNcclxuICBASW5wdXQoKSB1dWlkITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGlkZW50aWZpZXIhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcGFyZW50PzogYW55O1xyXG5cclxuICAvL1N0YW5kYWxvbmUgaW5wdXRzXHJcbiAgQElucHV0KCkgZGlhZ3JhbU1vZGVsPzogRGlhZ3JhbU1vZGVsO1xyXG4gIEBJbnB1dCgpIG9wdGlvbnM/OiBhbnk7XHJcbiAgQElucHV0KCkgcGx1Z2luczogYW55W10gPSBbXTtcclxuXHJcbiAgLy9PdXRwdXQgZXZlbnRzXHJcbiAgQE91dHB1dCgpIGVsZW1lbnRTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgY2FudmFzQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgZGF0YUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIGRhdGE6IGFueTtcclxuICB0eXBlOiBhbnk7XHJcblxyXG4gIGNvbXBMaWI6IENvbXBvbmVudExpYnJhcnk7XHJcbiAgY29tcG9uZW50TGlicmFyeSA9IENvbXBvbmVudExpYnJhcnk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBkaWFncmFtQXBpOiBEaWFncmFtU2VydmljZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRpYWdyYW1PcHRpb25Qcm92aWRlcjogRGVmYXVsdENoYXJ0T3B0aW9uc1Byb3ZpZGVyLFxyXG4gICAgQEluamVjdChDT01QT05FTlRfTElCUkFSWSkgQE9wdGlvbmFsKCkgY29tcExpYj86IENvbXBvbmVudExpYnJhcnlcclxuICApIHtcclxuICAgIHRoaXMuY29tcExpYiA9IGNvbXBMaWIgPz8gQ29tcG9uZW50TGlicmFyeS5QUklNRU5HO1xyXG4gICAgQ2hhcnQucmVnaXN0ZXIoQW5ub3RhdGlvblBsdWdpbik7XHJcbiAgICBDaGFydC5yZWdpc3Rlcihab29tUGx1Z2luKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGxvYWQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLmRpYWdyYW1Nb2RlbCA9IGF3YWl0IGxhc3RWYWx1ZUZyb20odGhpcy5kaWFncmFtQXBpLmxvYWQodGhpcy51dWlkLCB0aGlzLmlkZW50aWZpZXIpKTtcclxuICAgIHRoaXMuc2V0VXAoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIC8vIFRoaXMgd2lsbCBydW4gd2hlbiB3ZSBoYXZlIGFuIGlucHV0IG1vZGVsXHJcbiAgICBpZiAoIXRoaXMuZGlhZ3JhbU1vZGVsKSB7XHJcbiAgICAgIHRoaXMubG9hZCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICAvLyBUaGlzIHdpbGwgcnVuIHdoZW4gd2UgaGF2ZSBhbiBpbnB1dCBtb2RlbFxyXG4gICAgdGhpcy5zZXRVcCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRVcCgpIHtcclxuICAgIGlmICghdGhpcy5kaWFncmFtTW9kZWwpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IG9wdGlvbnMgPSB1bmRlZmluZWQ7XHJcbiAgICBjb25zdCB0eXBlID0gISF0aGlzLmRpYWdyYW1Nb2RlbC5kZXNjcmlwdG9yPy50eXBlID8gdGhpcy5kaWFncmFtTW9kZWwuZGVzY3JpcHRvci50eXBlIDogJyc7XHJcblxyXG4gICAgY29uc3QgZmFjdG9yeSA9IHRoaXMuZGlhZ3JhbU9wdGlvblByb3ZpZGVyLmdldEZhY3RvcnkodHlwZSk7XHJcbiAgICB0aGlzLnR5cGUgPSBmYWN0b3J5LmNoYXJ0SnNUeXBlO1xyXG4gICAgb3B0aW9ucyA9IGZhY3RvcnkuY3JlYXRlT3B0aW9ucyh0aGlzLmRpYWdyYW1Nb2RlbC5kaWFncmFtRGF0YSEpO1xyXG4gICAgaWYgKHRoaXMuZGlhZ3JhbU1vZGVsLmRlc2NyaXB0b3IpIHtcclxuICAgICAgb3B0aW9ucyA9IGRlZXBNZXJnZSh0aGlzLmNvbnZlcnRCYWNrZW5kT3B0aW9ucyh0aGlzLmRpYWdyYW1Nb2RlbC5kZXNjcmlwdG9yKSwgb3B0aW9ucyk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5vcHRpb25zKSB7XHJcbiAgICAgIG9wdGlvbnMgPSBkZWVwTWVyZ2UodGhpcy5vcHRpb25zLCBvcHRpb25zKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xyXG4gICAgdGhpcy5kYXRhID0gZmFjdG9yeS50cmFuc2Zvcm1EYXRhKHRoaXMuZGlhZ3JhbU1vZGVsLmRpYWdyYW1EYXRhISk7XHJcbiAgICB0aGlzLmFwcGx5Q2hhcnRDbGFzcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb252ZXJ0QmFja2VuZE9wdGlvbnMoZGVzY3JpcHRvcjogRGlhZ3JhbURlc2NyaXB0b3IpIHtcclxuICAgIGNvbnN0IG9wdGlvbnM6IGFueSA9IHtcclxuICAgICAgcGx1Z2luczoge1xyXG4gICAgICAgIGxlZ2VuZDoge1xyXG4gICAgICAgICAgZGlzcGxheTogZGVzY3JpcHRvci5zaG93TGVnZW5kRm9yQ2hhcnQgPz8gdHJ1ZSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC4uLihkZXNjcmlwdG9yLnRpdGxlXHJcbiAgICAgICAgICA/IHtcclxuICAgICAgICAgICAgICB0aXRsZToge1xyXG4gICAgICAgICAgICAgICAgZGlzcGxheTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHRleHQ6IGRlc2NyaXB0b3IudGl0bGUuY29udGVudCA/PyAnJyxcclxuICAgICAgICAgICAgICAgIGNvbG9yOiBkZXNjcmlwdG9yLnRpdGxlLmNvbG9yXHJcbiAgICAgICAgICAgICAgICAgID8gYHJnYmEoJHtkZXNjcmlwdG9yLnRpdGxlLmNvbG9yLnJlZCA/PyAwfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAke2Rlc2NyaXB0b3IudGl0bGUuY29sb3IuZ3JlZW4gPz8gMH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgJHtkZXNjcmlwdG9yLnRpdGxlLmNvbG9yLmJsdWUgPz8gMH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgJHtkZXNjcmlwdG9yLnRpdGxlLmNvbG9yLmFscGhhID8/IDF9KWBcclxuICAgICAgICAgICAgICAgICAgOiAnIzAwMDAwMGZmJyxcclxuICAgICAgICAgICAgICAgIGZvbnQ6IHtcclxuICAgICAgICAgICAgICAgICAgc2l6ZTogZGVzY3JpcHRvci50aXRsZS5zaXplID8/IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgICAgd2VpZ2h0OiBkZXNjcmlwdG9yLnRpdGxlLndlaWdodCA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlOiBkZXNjcmlwdG9yLnRpdGxlLnN0eWxlID8/IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgICAgZmFtaWx5OiBkZXNjcmlwdG9yLnRpdGxlLmZhbWlseSA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDoge30pLFxyXG4gICAgICB9LFxyXG4gICAgICBzY2FsZXM6IHt9IGFzIGFueSxcclxuICAgIH07XHJcblxyXG4gICAgaWYgKGRlc2NyaXB0b3IubWluWCAhPT0gdW5kZWZpbmVkICYmIGRlc2NyaXB0b3IubWF4WCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIG9wdGlvbnMuc2NhbGVzLnggPSB7XHJcbiAgICAgICAgdGlja3M6IHtcclxuICAgICAgICAgIGRpc3BsYXk6IGRlc2NyaXB0b3Iuc2hvd0xhYmVsc0ZvclhBeGlzID8/IHRydWUsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBtaW46IGRlc2NyaXB0b3IubWluWCxcclxuICAgICAgICBtYXg6IGRlc2NyaXB0b3IubWF4WCxcclxuICAgICAgfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG9wdGlvbnMuc2NhbGVzLnggPSB7XHJcbiAgICAgICAgdGlja3M6IHtcclxuICAgICAgICAgIGRpc3BsYXk6IGRlc2NyaXB0b3Iuc2hvd0xhYmVsc0ZvclhBeGlzID8/IHRydWUsXHJcbiAgICAgICAgfSxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGlmIChkZXNjcmlwdG9yLm1pblkgIT09IHVuZGVmaW5lZCAmJiBkZXNjcmlwdG9yLm1heFkgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBvcHRpb25zLnNjYWxlcy55ID0ge1xyXG4gICAgICAgIHRpY2tzOiB7XHJcbiAgICAgICAgICBkaXNwbGF5OiBkZXNjcmlwdG9yLnNob3dMYWJlbHNGb3JZQXhpcyA/PyB0cnVlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbWluOiBkZXNjcmlwdG9yLm1pblksXHJcbiAgICAgICAgbWF4OiBkZXNjcmlwdG9yLm1heFksXHJcbiAgICAgIH07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBvcHRpb25zLnNjYWxlcy55ID0ge1xyXG4gICAgICAgIHRpY2tzOiB7XHJcbiAgICAgICAgICBkaXNwbGF5OiBkZXNjcmlwdG9yLnNob3dMYWJlbHNGb3JZQXhpcyA/PyB0cnVlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgLy9DcmVhdGUgc2hhcGVzXHJcbiAgICBpZiAoZGVzY3JpcHRvci5zaGFwZXMpIHtcclxuICAgICAgZGVzY3JpcHRvci5zaGFwZXMuZm9yRWFjaCgoc2hhcGU6IERpYWdyYW1TaGFwZSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIG9wdGlvbnMucGx1Z2lucy5hbm5vdGF0aW9uID0gb3B0aW9ucy5wbHVnaW5zLmFubm90YXRpb24gfHwge307XHJcbiAgICAgICAgb3B0aW9ucy5wbHVnaW5zLmFubm90YXRpb24uYW5ub3RhdGlvbnMgPSBvcHRpb25zLnBsdWdpbnMuYW5ub3RhdGlvbi5hbm5vdGF0aW9ucyB8fCB7fTtcclxuXHJcbiAgICAgICAgbGV0IGJvcmRlckNvbG9yID0gYHJnYmEoXHJcbiAgICAgICAgICR7c2hhcGUuYm9yZGVyQ29sb3I/LnJlZCA/PyAwfSxcclxuICAgICAgICAgJHtzaGFwZS5ib3JkZXJDb2xvcj8uZ3JlZW4gPz8gMH0sXHJcbiAgICAgICAgICR7c2hhcGUuYm9yZGVyQ29sb3I/LmJsdWUgPz8gMH0sXHJcbiAgICAgICAgICR7c2hhcGUuYm9yZGVyQ29sb3I/LmFscGhhID8/IDF9KWA7XHJcbiAgICAgICAgbGV0IGJhY2tncm91bmRDb2xvciA9IGByZ2JhKFxyXG4gICAgICAgICAke3NoYXBlLmJhY2tncm91bmRDb2xvcj8ucmVkID8/IDB9LFxyXG4gICAgICAgICAke3NoYXBlLmJhY2tncm91bmRDb2xvcj8uZ3JlZW4gPz8gMH0sXHJcbiAgICAgICAgICR7c2hhcGUuYmFja2dyb3VuZENvbG9yPy5ibHVlID8/IDB9LFxyXG4gICAgICAgICAke3NoYXBlLmJhY2tncm91bmRDb2xvcj8uYWxwaGEgPz8gMX0pYDtcclxuXHJcbiAgICAgICAgbGV0IGZvbnRDb2xvciA9IGByZ2JhKFxyXG4gICAgICAgICAke3NoYXBlLmxhYmVsVGV4dD8uY29sb3I/LnJlZCA/PyAwfSxcclxuICAgICAgICAgJHtzaGFwZS5sYWJlbFRleHQ/LmNvbG9yPy5ncmVlbiA/PyAwfSxcclxuICAgICAgICAgJHtzaGFwZS5sYWJlbFRleHQ/LmNvbG9yPy5ibHVlID8/IDB9LFxyXG4gICAgICAgICAke3NoYXBlLmxhYmVsVGV4dD8uY29sb3I/LmFscGhhID8/IDF9KWA7XHJcblxyXG4gICAgICAgIGxldCBib3JkZXJEYXNoO1xyXG4gICAgICAgIGlmIChzaGFwZS5ib3JkZXJEYXNoTGVuZ3RoICYmIHNoYXBlLmJvcmRlckRhc2hHYXApIHtcclxuICAgICAgICAgIGJvcmRlckRhc2ggPSBbc2hhcGUuYm9yZGVyRGFzaExlbmd0aCwgc2hhcGUuYm9yZGVyRGFzaEdhcF07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGJvcmRlckRhc2ggPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBiYXNlQW5ub3RhdGlvbiA9IHtcclxuICAgICAgICAgIHR5cGU6IHNoYXBlLnNoYXBlVHlwZSA/PyAnbGluZScsXHJcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGJhY2tncm91bmRDb2xvciA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICBib3JkZXJDb2xvcjogYm9yZGVyQ29sb3IgPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgYm9yZGVyV2lkdGg6IHNoYXBlLmJvcmRlcldpZHRoID8/IDEsXHJcbiAgICAgICAgICBib3JkZXJEYXNoOiBib3JkZXJEYXNoID8/IHVuZGVmaW5lZCxcclxuICAgICAgICAgIGRyYXdUaW1lOiBzaGFwZS5kcmF3VGltZSA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgc3dpdGNoIChzaGFwZS5zaGFwZVR5cGUpIHtcclxuICAgICAgICAgIGNhc2UgJ2JveCc6XHJcbiAgICAgICAgICBjYXNlICdsaW5lJzpcclxuICAgICAgICAgIGNhc2UgJ2VsbGlwc2UnOlxyXG4gICAgICAgICAgICBvcHRpb25zLnBsdWdpbnMuYW5ub3RhdGlvbi5hbm5vdGF0aW9uc1tgc2hhcGUke2luZGV4fWBdID0ge1xyXG4gICAgICAgICAgICAgIC4uLmJhc2VBbm5vdGF0aW9uLFxyXG4gICAgICAgICAgICAgIHhNaW46IHNoYXBlLnhNaW4gPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgIHhNYXg6IHNoYXBlLnhNYXggPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgIHlNaW46IHNoYXBlLnlNaW4gPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgIHlNYXg6IHNoYXBlLnlNYXggPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBjYXNlICdsYWJlbCc6XHJcbiAgICAgICAgICAgIG9wdGlvbnMucGx1Z2lucy5hbm5vdGF0aW9uLmFubm90YXRpb25zW2BzaGFwZSR7aW5kZXh9YF0gPSB7XHJcbiAgICAgICAgICAgICAgLi4uYmFzZUFubm90YXRpb24sXHJcbiAgICAgICAgICAgICAgeFZhbHVlOiBzaGFwZS54TWluID8/IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICB5VmFsdWU6IHNoYXBlLnlNaW4gPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgIGNvbnRlbnQ6IHNoYXBlLmxhYmVsVGV4dD8uY29udGVudCA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgdGV4dEFsaWduOiBzaGFwZS5sYWJlbFRleHQ/LnRleHRBbGlnbiA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgY29sb3I6IGZvbnRDb2xvciA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgZm9udDoge1xyXG4gICAgICAgICAgICAgICAgc2l6ZTogc2hhcGUubGFiZWxUZXh0Py5zaXplID8/IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgIHdlaWdodDogc2hhcGUubGFiZWxUZXh0Py53ZWlnaHQgPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgc3R5bGU6IHNoYXBlLmxhYmVsVGV4dD8uc3R5bGUgPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnLFxyXG4gICAgICAgICAgICAgIGJvcmRlckNvbG9yOiAndHJhbnNwYXJlbnQnLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBjYXNlICdwb2ludCc6XHJcbiAgICAgICAgICBjYXNlICdwb2x5Z29uJzpcclxuICAgICAgICAgICAgb3B0aW9ucy5wbHVnaW5zLmFubm90YXRpb24uYW5ub3RhdGlvbnNbYHNoYXBlJHtpbmRleH1gXSA9IHtcclxuICAgICAgICAgICAgICAuLi5iYXNlQW5ub3RhdGlvbixcclxuICAgICAgICAgICAgICB4VmFsdWU6IHNoYXBlLnhNaW4gPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgIHlWYWx1ZTogc2hhcGUueU1pbiA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIC8vIE9wdGlvbmFsbHkgaGFuZGxlIGFueSBvdGhlciBzaGFwZSB0eXBlc1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYFVua25vd24gc2hhcGUgdHlwZTogJHtzaGFwZS5zaGFwZVR5cGV9YCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGRlc2NyaXB0b3IuYmFja2dyb3VuZENvbG9yKSB7XHJcbiAgICAgIGxldCBiYWNrZ3JvdW5kQ29sb3IgPSBgcmdiYShcclxuICAgICAgICAke2Rlc2NyaXB0b3IuYmFja2dyb3VuZENvbG9yPy5yZWQgPz8gMH0sXHJcbiAgICAgICAgJHtkZXNjcmlwdG9yLmJhY2tncm91bmRDb2xvcj8uZ3JlZW4gPz8gMH0sXHJcbiAgICAgICAgJHtkZXNjcmlwdG9yLmJhY2tncm91bmRDb2xvcj8uYmx1ZSA/PyAwfSxcclxuICAgICAgICAke2Rlc2NyaXB0b3IuYmFja2dyb3VuZENvbG9yPy5hbHBoYSA/PyAxfSlgO1xyXG5cclxuICAgICAgbGV0IGlkID0gJ2N1c3RvbUNhbnZhc0JhY2tncm91bmRDb2xvcic7XHJcbiAgICAgIGNvbnN0IHBsdWdpbiA9IHtcclxuICAgICAgICBpZDogaWQsXHJcbiAgICAgICAgYmVmb3JlRHJhdzogKGNoYXJ0OiBhbnksIGFyZ3M6IGFueSwgb3B0aW9uczogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCB7IGN0eCwgY2hhcnRBcmVhIH0gPSBjaGFydDtcclxuXHJcbiAgICAgICAgICBjdHguc2F2ZSgpO1xyXG4gICAgICAgICAgY3R4Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9ICdkZXN0aW5hdGlvbi1vdmVyJztcclxuICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSBiYWNrZ3JvdW5kQ29sb3I7XHJcbiAgICAgICAgICBjdHguZmlsbFJlY3QoXHJcbiAgICAgICAgICAgIGNoYXJ0QXJlYS5sZWZ0LFxyXG4gICAgICAgICAgICBjaGFydEFyZWEudG9wLFxyXG4gICAgICAgICAgICBjaGFydEFyZWEucmlnaHQgLSBjaGFydEFyZWEubGVmdCxcclxuICAgICAgICAgICAgY2hhcnRBcmVhLmJvdHRvbSAtIGNoYXJ0QXJlYS50b3BcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBjdHgucmVzdG9yZSgpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMucGx1Z2lucy5wdXNoKHBsdWdpbik7XHJcblxyXG4gICAgICBvcHRpb25zLnBsdWdpbnNbYCR7aWR9YF0gPSB7XHJcbiAgICAgICAgY29sb3I6IGJhY2tncm91bmRDb2xvcixcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIHJldHVybiBvcHRpb25zO1xyXG4gIH1cclxuXHJcbiAgb25EYXRhU2VsZWN0KGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnNvbGUubG9nKHsgZXZlbnQgfSk7XHJcbiAgICB0aGlzLmVsZW1lbnRTZWxlY3QuZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVDaGFydENsaWNrKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnNvbGUubG9nKHsgZXZlbnQgfSk7XHJcbiAgICB0aGlzLmNhbnZhc0NsaWNrLmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlT25EYXRhQ2xpY2tlZChldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCBjYW52YXMgPSBldmVudC50YXJnZXQgYXMgSFRNTENhbnZhc0VsZW1lbnQ7XHJcbiAgICBjb25zdCBjaGFydCA9IENoYXJ0LmdldENoYXJ0KGNhbnZhcyk7XHJcblxyXG4gICAgaWYgKGNoYXJ0KSB7XHJcbiAgICAgIGNvbnN0IGVsZW1lbnRzID0gY2hhcnQuZ2V0RWxlbWVudHNBdEV2ZW50Rm9yTW9kZShcclxuICAgICAgICBldmVudCxcclxuICAgICAgICAnbmVhcmVzdCcsXHJcbiAgICAgICAgeyBpbnRlcnNlY3Q6IHRydWUgfSxcclxuICAgICAgICBmYWxzZVxyXG4gICAgICApO1xyXG4gICAgICBpZiAoZWxlbWVudHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGNsaWNrZWRJdGVtcyA9IGNoYXJ0LnRvb2x0aXA/LmRhdGFQb2ludHM/Lm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBkYXRhc2V0SW5kZXg6IGl0ZW0uZGF0YXNldEluZGV4LFxyXG4gICAgICAgICAgaXRlbUluZGV4OiBpdGVtLmRhdGFJbmRleCxcclxuICAgICAgICAgIGVsZW1lbnQ6IGl0ZW0uZWxlbWVudCxcclxuICAgICAgICB9O1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGNvbnNvbGUubG9nKHsgZXZlbnQsIGNsaWNrZWRJdGVtcyB9KTtcclxuICAgICAgdGhpcy5kYXRhQ2xpY2suZW1pdCh7IGV2ZW50LCBjbGlja2VkSXRlbXMgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRCYXNlNjRJbWFnZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmNoYXJ0Py5nZXRCYXNlNjRJbWFnZSgpO1xyXG4gIH1cclxuXHJcbiAgcmVmcmVzaCgpIHtcclxuICAgIHJldHVybiB0aGlzLmNoYXJ0Py5yZWZyZXNoKCk7XHJcbiAgfVxyXG5cclxuICBnZXRDaGFydCgpIHtcclxuICAgIHJldHVybiB0aGlzLmNoYXJ0Py5jaGFydDtcclxuICB9XHJcbiAgZ2V0VmlzaWJsZVBvaW50cygpIHtcclxuICAgIGlmICghdGhpcy5jaGFydCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGNoYXJ0SW5zdGFuY2UgPSB0aGlzLmNoYXJ0LmNoYXJ0O1xyXG4gICAgaWYgKCFjaGFydEluc3RhbmNlKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgdmlzaWJsZVBvaW50czogYW55ID0gW107XHJcblxyXG4gICAgY2hhcnRJbnN0YW5jZS5kYXRhLmRhdGFzZXRzLmZvckVhY2goKGRhdGFzZXQ6IGFueSwgZGF0YXNldEluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgbWV0YSA9IGNoYXJ0SW5zdGFuY2UuZ2V0RGF0YXNldE1ldGEoZGF0YXNldEluZGV4KTtcclxuXHJcbiAgICAgIC8vIENoZWNrIGlmIHRoZSBkYXRhc2V0IGlzIGhpZGRlblxyXG4gICAgICBpZiAoIWNoYXJ0SW5zdGFuY2UuaXNEYXRhc2V0VmlzaWJsZShkYXRhc2V0SW5kZXgpKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCB4TWluID0gbWV0YS54U2NhbGUubWluO1xyXG4gICAgICBjb25zdCB4TWF4ID0gbWV0YS54U2NhbGUubWF4O1xyXG4gICAgICBjb25zdCB5TWluID0gbWV0YS55U2NhbGUubWluO1xyXG4gICAgICBjb25zdCB5TWF4ID0gbWV0YS55U2NhbGUubWF4O1xyXG5cclxuICAgICAgZGF0YXNldC5kYXRhLmZvckVhY2goKHBvaW50OiBhbnksIGRhdGFJbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyB4LCB5IH0gPSBwb2ludDtcclxuXHJcbiAgICAgICAgaWYgKHggPj0geE1pbiAmJiB4IDw9IHhNYXggJiYgeSA+PSB5TWluICYmIHkgPD0geU1heCkge1xyXG4gICAgICAgICAgdmlzaWJsZVBvaW50cy5wdXNoKHtcclxuICAgICAgICAgICAgZGF0YXNldEluZGV4LFxyXG4gICAgICAgICAgICBkYXRhSW5kZXgsXHJcbiAgICAgICAgICAgIHgsXHJcbiAgICAgICAgICAgIHksXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHZpc2libGVQb2ludHM7XHJcbiAgfVxyXG5cclxuICBhcHBseUNoYXJ0Q2xhc3MoKSB7XHJcbiAgICBpZiAoIXRoaXMuY2hhcnQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNoYXJ0RWxlbWVudCA9IHRoaXMuY2hhcnQuZWwubmF0aXZlRWxlbWVudDtcclxuICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XHJcbiAgICAgIGNhc2UgJ3BpZSc6XHJcbiAgICAgIGNhc2UgJ2RvdWdobnV0JzpcclxuICAgICAgY2FzZSAncG9sYXJBcmVhJzpcclxuICAgICAgY2FzZSAncmFkYXInOlxyXG4gICAgICAgIGNoYXJ0RWxlbWVudC5jbGFzc0xpc3QuYWRkKCdwaWUtYXNwZWN0LXJhdGlvJyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgY2hhcnRFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2RlZmF1bHQtYXNwZWN0LXJhdGlvJyk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIkBpZihjb21wTGliID09PSBjb21wb25lbnRMaWJyYXJ5LlBSSU1FTkcpIHtcclxuPHAtY2hhcnRcclxuICAjY2hhcnRKU1JlZlxyXG4gIFt0eXBlXT1cInR5cGVcIlxyXG4gIFtkYXRhXT1cImRhdGFcIlxyXG4gIFtvcHRpb25zXT1cIm9wdGlvbnNcIlxyXG4gIFtwbHVnaW5zXT1cInBsdWdpbnNcIlxyXG4gIChvbkRhdGFTZWxlY3QpPVwib25EYXRhU2VsZWN0KCRldmVudClcIlxyXG4gIChjbGljayk9XCJoYW5kbGVDaGFydENsaWNrKCRldmVudClcIlxyXG4gIChjbGljayk9XCJoYW5kbGVPbkRhdGFDbGlja2VkKCRldmVudClcIlxyXG4vPlxyXG59IEBlbHNlIHtcclxuPHA+T25seSBQcmltZU5nIGNvbXBvbmVudCBsaWJyYXJ5IGlzIHN1cHBvcnRlZDwvcD5cclxufVxyXG4iXX0=
@@ -0,0 +1,39 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { BrowserModule } from '@angular/platform-browser';
3
+ import { ChartModule } from 'primeng/chart';
4
+ import { DefaultChartOptionsProvider as DefaultDiagramOptionsProvider, CUSTOM_DIAGRAM_OPTIONS, barChart, scatterChart, bubbleChart, horizontalBarChart, stackedBarChart, multiAxisLineChart, polarAreaChart, radarChart, doughnutChart, pieChart, } from './default-smart-diagram-options.provider';
5
+ import { SmartDiagramComponent } from './smart-diagram.component';
6
+ import * as i0 from "@angular/core";
7
+ const DEFAULT_PROVIDERS = [
8
+ DefaultDiagramOptionsProvider,
9
+ { provide: CUSTOM_DIAGRAM_OPTIONS, useValue: barChart, multi: true },
10
+ { provide: CUSTOM_DIAGRAM_OPTIONS, useValue: scatterChart, multi: true },
11
+ { provide: CUSTOM_DIAGRAM_OPTIONS, useValue: bubbleChart, multi: true },
12
+ { provide: CUSTOM_DIAGRAM_OPTIONS, useValue: horizontalBarChart, multi: true },
13
+ { provide: CUSTOM_DIAGRAM_OPTIONS, useValue: stackedBarChart, multi: true },
14
+ { provide: CUSTOM_DIAGRAM_OPTIONS, useValue: multiAxisLineChart, multi: true },
15
+ { provide: CUSTOM_DIAGRAM_OPTIONS, useValue: polarAreaChart, multi: true },
16
+ { provide: CUSTOM_DIAGRAM_OPTIONS, useValue: radarChart, multi: true },
17
+ { provide: CUSTOM_DIAGRAM_OPTIONS, useValue: doughnutChart, multi: true },
18
+ { provide: CUSTOM_DIAGRAM_OPTIONS, useValue: pieChart, multi: true },
19
+ ];
20
+ export class SmartDiagramModule {
21
+ static forRoot(providers) {
22
+ return {
23
+ ngModule: SmartDiagramModule,
24
+ providers: [...DEFAULT_PROVIDERS, ...providers],
25
+ };
26
+ }
27
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartDiagramModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
28
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.11", ngImport: i0, type: SmartDiagramModule, declarations: [SmartDiagramComponent], imports: [BrowserModule, ChartModule], exports: [SmartDiagramComponent] }); }
29
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartDiagramModule, imports: [BrowserModule, ChartModule] }); }
30
+ }
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartDiagramModule, decorators: [{
32
+ type: NgModule,
33
+ args: [{
34
+ declarations: [SmartDiagramComponent],
35
+ imports: [BrowserModule, ChartModule],
36
+ exports: [SmartDiagramComponent],
37
+ }]
38
+ }] });
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtZGlhZ3JhbS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1kaWFncmFtL2NvbXBvbmVudC9zbWFydC1kaWFncmFtLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLFFBQVEsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQ0wsMkJBQTJCLElBQUksNkJBQTZCLEVBQzVELHNCQUFzQixFQUN0QixRQUFRLEVBQ1IsWUFBWSxFQUNaLFdBQVcsRUFDWCxrQkFBa0IsRUFDbEIsZUFBZSxFQUNmLGtCQUFrQixFQUNsQixjQUFjLEVBQ2QsVUFBVSxFQUNWLGFBQWEsRUFDYixRQUFRLEdBQ1QsTUFBTSwwQ0FBMEMsQ0FBQztBQUNsRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7QUFFbEUsTUFBTSxpQkFBaUIsR0FBZTtJQUNwQyw2QkFBNkI7SUFDN0IsRUFBRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO0lBQ3BFLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtJQUN4RSxFQUFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7SUFDdkUsRUFBRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7SUFDOUUsRUFBRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO0lBQzNFLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFFBQVEsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO0lBQzlFLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtJQUMxRSxFQUFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7SUFDdEUsRUFBRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO0lBQ3pFLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtDQUNyRSxDQUFDO0FBT0YsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixNQUFNLENBQUMsT0FBTyxDQUFDLFNBQXFCO1FBQ2xDLE9BQU87WUFDTCxRQUFRLEVBQUUsa0JBQWtCO1lBQzVCLFNBQVMsRUFBRSxDQUFDLEdBQUcsaUJBQWlCLEVBQUUsR0FBRyxTQUFTLENBQUM7U0FDaEQsQ0FBQztJQUNKLENBQUM7K0dBTlUsa0JBQWtCO2dIQUFsQixrQkFBa0IsaUJBSmQscUJBQXFCLGFBQzFCLGFBQWEsRUFBRSxXQUFXLGFBQzFCLHFCQUFxQjtnSEFFcEIsa0JBQWtCLFlBSG5CLGFBQWEsRUFBRSxXQUFXOzs0RkFHekIsa0JBQWtCO2tCQUw5QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLHFCQUFxQixDQUFDO29CQUNyQyxPQUFPLEVBQUUsQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDO29CQUNyQyxPQUFPLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztpQkFDakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSwgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQnJvd3Nlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBDaGFydE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY2hhcnQnO1xyXG5pbXBvcnQge1xyXG4gIERlZmF1bHRDaGFydE9wdGlvbnNQcm92aWRlciBhcyBEZWZhdWx0RGlhZ3JhbU9wdGlvbnNQcm92aWRlcixcclxuICBDVVNUT01fRElBR1JBTV9PUFRJT05TLFxyXG4gIGJhckNoYXJ0LFxyXG4gIHNjYXR0ZXJDaGFydCxcclxuICBidWJibGVDaGFydCxcclxuICBob3Jpem9udGFsQmFyQ2hhcnQsXHJcbiAgc3RhY2tlZEJhckNoYXJ0LFxyXG4gIG11bHRpQXhpc0xpbmVDaGFydCxcclxuICBwb2xhckFyZWFDaGFydCxcclxuICByYWRhckNoYXJ0LFxyXG4gIGRvdWdobnV0Q2hhcnQsXHJcbiAgcGllQ2hhcnQsXHJcbn0gZnJvbSAnLi9kZWZhdWx0LXNtYXJ0LWRpYWdyYW0tb3B0aW9ucy5wcm92aWRlcic7XHJcbmltcG9ydCB7IFNtYXJ0RGlhZ3JhbUNvbXBvbmVudCB9IGZyb20gJy4vc21hcnQtZGlhZ3JhbS5jb21wb25lbnQnO1xyXG5cclxuY29uc3QgREVGQVVMVF9QUk9WSURFUlM6IFByb3ZpZGVyW10gPSBbXHJcbiAgRGVmYXVsdERpYWdyYW1PcHRpb25zUHJvdmlkZXIsXHJcbiAgeyBwcm92aWRlOiBDVVNUT01fRElBR1JBTV9PUFRJT05TLCB1c2VWYWx1ZTogYmFyQ2hhcnQsIG11bHRpOiB0cnVlIH0sXHJcbiAgeyBwcm92aWRlOiBDVVNUT01fRElBR1JBTV9PUFRJT05TLCB1c2VWYWx1ZTogc2NhdHRlckNoYXJ0LCBtdWx0aTogdHJ1ZSB9LFxyXG4gIHsgcHJvdmlkZTogQ1VTVE9NX0RJQUdSQU1fT1BUSU9OUywgdXNlVmFsdWU6IGJ1YmJsZUNoYXJ0LCBtdWx0aTogdHJ1ZSB9LFxyXG4gIHsgcHJvdmlkZTogQ1VTVE9NX0RJQUdSQU1fT1BUSU9OUywgdXNlVmFsdWU6IGhvcml6b250YWxCYXJDaGFydCwgbXVsdGk6IHRydWUgfSxcclxuICB7IHByb3ZpZGU6IENVU1RPTV9ESUFHUkFNX09QVElPTlMsIHVzZVZhbHVlOiBzdGFja2VkQmFyQ2hhcnQsIG11bHRpOiB0cnVlIH0sXHJcbiAgeyBwcm92aWRlOiBDVVNUT01fRElBR1JBTV9PUFRJT05TLCB1c2VWYWx1ZTogbXVsdGlBeGlzTGluZUNoYXJ0LCBtdWx0aTogdHJ1ZSB9LFxyXG4gIHsgcHJvdmlkZTogQ1VTVE9NX0RJQUdSQU1fT1BUSU9OUywgdXNlVmFsdWU6IHBvbGFyQXJlYUNoYXJ0LCBtdWx0aTogdHJ1ZSB9LFxyXG4gIHsgcHJvdmlkZTogQ1VTVE9NX0RJQUdSQU1fT1BUSU9OUywgdXNlVmFsdWU6IHJhZGFyQ2hhcnQsIG11bHRpOiB0cnVlIH0sXHJcbiAgeyBwcm92aWRlOiBDVVNUT01fRElBR1JBTV9PUFRJT05TLCB1c2VWYWx1ZTogZG91Z2hudXRDaGFydCwgbXVsdGk6IHRydWUgfSxcclxuICB7IHByb3ZpZGU6IENVU1RPTV9ESUFHUkFNX09QVElPTlMsIHVzZVZhbHVlOiBwaWVDaGFydCwgbXVsdGk6IHRydWUgfSxcclxuXTtcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbU21hcnREaWFncmFtQ29tcG9uZW50XSxcclxuICBpbXBvcnRzOiBbQnJvd3Nlck1vZHVsZSwgQ2hhcnRNb2R1bGVdLFxyXG4gIGV4cG9ydHM6IFtTbWFydERpYWdyYW1Db21wb25lbnRdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU21hcnREaWFncmFtTW9kdWxlIHtcclxuICBzdGF0aWMgZm9yUm9vdChwcm92aWRlcnM6IFByb3ZpZGVyW10pOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFNtYXJ0RGlhZ3JhbU1vZHVsZT4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbmdNb2R1bGU6IFNtYXJ0RGlhZ3JhbU1vZHVsZSxcclxuICAgICAgcHJvdmlkZXJzOiBbLi4uREVGQVVMVF9QUk9WSURFUlMsIC4uLnByb3ZpZGVyc10sXHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,10 @@
1
+ export function deepMerge(target, source) {
2
+ for (const key of Object.keys(source)) {
3
+ if (source[key] instanceof Object && target[key]) {
4
+ Object.assign(source[key], deepMerge(target[key], source[key]));
5
+ }
6
+ }
7
+ Object.assign(target || {}, source);
8
+ return target;
9
+ }
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtZGlhZ3JhbS51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtZGlhZ3JhbS9jb21wb25lbnQvc21hcnQtZGlhZ3JhbS51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxTQUFTLENBQUMsTUFBVyxFQUFFLE1BQVc7SUFDaEQsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDdEMsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksTUFBTSxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2pELE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsRSxDQUFDO0lBQ0gsQ0FBQztJQUNELE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNwQyxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGRlZXBNZXJnZSh0YXJnZXQ6IGFueSwgc291cmNlOiBhbnkpOiBhbnkge1xyXG4gIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHNvdXJjZSkpIHtcclxuICAgIGlmIChzb3VyY2Vba2V5XSBpbnN0YW5jZW9mIE9iamVjdCAmJiB0YXJnZXRba2V5XSkge1xyXG4gICAgICBPYmplY3QuYXNzaWduKHNvdXJjZVtrZXldLCBkZWVwTWVyZ2UodGFyZ2V0W2tleV0sIHNvdXJjZVtrZXldKSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIE9iamVjdC5hc3NpZ24odGFyZ2V0IHx8IHt9LCBzb3VyY2UpO1xyXG4gIHJldHVybiB0YXJnZXQ7XHJcbn1cclxuIl19
@@ -0,0 +1,5 @@
1
+ export * from './component/smart-diagram.module';
2
+ export * from './component/smart-diagram.component';
3
+ export * from './api/model/models';
4
+ export * from './component/default-smart-diagram-options.provider';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1kaWFncmFtL3Byb2plY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsb0RBQW9ELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudC9zbWFydC1kaWFncmFtLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50L3NtYXJ0LWRpYWdyYW0uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9hcGkvbW9kZWwvbW9kZWxzJztcclxuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnQvZGVmYXVsdC1zbWFydC1kaWFncmFtLW9wdGlvbnMucHJvdmlkZXInO1xyXG4iXX0=