@esfaenza/es-charts 15.2.7 → 16.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/{esm2020 → esm2022}/esfaenza-es-charts.mjs +4 -4
  2. package/{esm2020 → esm2022}/lib/adapters/BaseAdapter.mjs +50 -50
  3. package/{esm2020 → esm2022}/lib/adapters/IBaseAdapter.mjs +1 -1
  4. package/{esm2020 → esm2022}/lib/components/base/base-chart.component.mjs +350 -350
  5. package/{esm2020 → esm2022}/lib/components/chart-pager/chart-pager.component.mjs +89 -89
  6. package/{esm2020 → esm2022}/lib/components/specializations/es-area-chart.component.mjs +77 -77
  7. package/{esm2020 → esm2022}/lib/components/specializations/es-chart.component.mjs +122 -122
  8. package/{esm2020 → esm2022}/lib/components/specializations/es-line-chart.component.mjs +112 -112
  9. package/{esm2020 → esm2022}/lib/components/specializations/es-pie-chart.component.mjs +98 -98
  10. package/{esm2020 → esm2022}/lib/components/specializations/es-vertical-2d-chart.component.mjs +95 -95
  11. package/{esm2020 → esm2022}/lib/components/specializations/es-vertical-chart.component.mjs +92 -92
  12. package/{esm2020 → esm2022}/lib/components/specializations/es-vertical-stacked-chart.component.mjs +92 -92
  13. package/{esm2020 → esm2022}/lib/es-charts.module.mjs +67 -67
  14. package/{esm2020 → esm2022}/lib/models/EsChaartsModuleConfig.mjs +5 -5
  15. package/{esm2020 → esm2022}/lib/models/core/ChartDispatcher.mjs +91 -91
  16. package/{esm2020 → esm2022}/lib/models/core/ChartLoader.mjs +212 -212
  17. package/{esm2020 → esm2022}/lib/models/core/ChartThemes.mjs +60 -60
  18. package/{esm2020 → esm2022}/lib/models/data/AreaChartData.mjs +15 -15
  19. package/{esm2020 → esm2022}/lib/models/data/LineChartData.mjs +15 -15
  20. package/{esm2020 → esm2022}/lib/models/data/PagedChartData.mjs +19 -19
  21. package/{esm2020 → esm2022}/lib/models/data/PieChartData.mjs +13 -13
  22. package/{esm2020 → esm2022}/lib/models/data/Vertical2DChartData.mjs +15 -15
  23. package/{esm2020 → esm2022}/lib/models/data/VerticalChartData.mjs +13 -13
  24. package/{esm2020 → esm2022}/lib/models/data/VerticalStackedChartData.mjs +13 -13
  25. package/{esm2020 → esm2022}/lib/models/data/base/DateValue.mjs +10 -10
  26. package/{esm2020 → esm2022}/lib/models/data/base/KeyValue.mjs +10 -10
  27. package/{esm2020 → esm2022}/lib/models/data/base/KeyValueColor.mjs +12 -12
  28. package/{esm2020 → esm2022}/lib/models/data/base/Limit.mjs +15 -15
  29. package/{esm2020 → esm2022}/lib/models/data/base/LineSerie.mjs +27 -27
  30. package/{esm2020 → esm2022}/lib/models/settings/AreaChartSettings.mjs +10 -10
  31. package/{esm2020 → esm2022}/lib/models/settings/LineChartSettings.mjs +10 -10
  32. package/{esm2020 → esm2022}/lib/models/settings/PieChartSettings.mjs +6 -6
  33. package/{esm2020 → esm2022}/lib/models/settings/Vertical2DChartSettings.mjs +10 -10
  34. package/{esm2020 → esm2022}/lib/models/settings/VerticalChartSettings.mjs +10 -10
  35. package/{esm2020 → esm2022}/lib/models/settings/VerticalStackedChartSettings.mjs +10 -10
  36. package/{esm2020 → esm2022}/lib/models/settings/base/BaseInterval.mjs +5 -5
  37. package/{esm2020 → esm2022}/lib/models/settings/base/BaseSettings.mjs +5 -5
  38. package/{esm2020 → esm2022}/lib/models/settings/base/LegendPad.mjs +5 -5
  39. package/esm2022/lib/services/AreaChartService.mjs +157 -0
  40. package/esm2022/lib/services/LineChartService.mjs +392 -0
  41. package/{esm2020 → esm2022}/lib/services/PieChartService.mjs +113 -113
  42. package/{esm2020 → esm2022}/lib/services/Vertical2DChartService.mjs +162 -162
  43. package/{esm2020 → esm2022}/lib/services/VerticalChartService.mjs +113 -113
  44. package/{esm2020 → esm2022}/lib/services/VerticalStackedChartService.mjs +126 -126
  45. package/{esm2020 → esm2022}/lib/services/base/IBaseService.mjs +1 -1
  46. package/{esm2020 → esm2022}/lib/tokens.mjs +13 -13
  47. package/{esm2020 → esm2022}/public-api.mjs +38 -38
  48. package/{fesm2020 → fesm2022}/esfaenza-es-charts.mjs +2728 -2688
  49. package/fesm2022/esfaenza-es-charts.mjs.map +1 -0
  50. package/index.d.ts +5 -5
  51. package/lib/adapters/BaseAdapter.d.ts +40 -40
  52. package/lib/adapters/IBaseAdapter.d.ts +35 -35
  53. package/lib/components/base/base-chart.component.d.ts +304 -304
  54. package/lib/components/chart-pager/chart-pager.component.d.ts +70 -70
  55. package/lib/components/specializations/es-area-chart.component.d.ts +53 -53
  56. package/lib/components/specializations/es-chart.component.d.ts +71 -71
  57. package/lib/components/specializations/es-line-chart.component.d.ts +112 -112
  58. package/lib/components/specializations/es-pie-chart.component.d.ts +81 -81
  59. package/lib/components/specializations/es-vertical-2d-chart.component.d.ts +79 -79
  60. package/lib/components/specializations/es-vertical-chart.component.d.ts +74 -74
  61. package/lib/components/specializations/es-vertical-stacked-chart.component.d.ts +74 -74
  62. package/lib/es-charts.module.d.ts +18 -18
  63. package/lib/models/EsChaartsModuleConfig.d.ts +24 -24
  64. package/lib/models/core/ChartDispatcher.d.ts +46 -46
  65. package/lib/models/core/ChartLoader.d.ts +92 -92
  66. package/lib/models/core/ChartThemes.d.ts +23 -23
  67. package/lib/models/data/AreaChartData.d.ts +22 -22
  68. package/lib/models/data/LineChartData.d.ts +16 -16
  69. package/lib/models/data/PagedChartData.d.ts +23 -23
  70. package/lib/models/data/PieChartData.d.ts +13 -13
  71. package/lib/models/data/Vertical2DChartData.d.ts +27 -27
  72. package/lib/models/data/VerticalChartData.d.ts +13 -13
  73. package/lib/models/data/VerticalStackedChartData.d.ts +21 -21
  74. package/lib/models/data/base/DateValue.d.ts +9 -9
  75. package/lib/models/data/base/KeyValue.d.ts +9 -9
  76. package/lib/models/data/base/KeyValueColor.d.ts +11 -11
  77. package/lib/models/data/base/Limit.d.ts +14 -14
  78. package/lib/models/data/base/LineSerie.d.ts +28 -28
  79. package/lib/models/settings/AreaChartSettings.d.ts +10 -10
  80. package/lib/models/settings/LineChartSettings.d.ts +67 -67
  81. package/lib/models/settings/PieChartSettings.d.ts +34 -34
  82. package/lib/models/settings/Vertical2DChartSettings.d.ts +36 -36
  83. package/lib/models/settings/VerticalChartSettings.d.ts +31 -31
  84. package/lib/models/settings/VerticalStackedChartSettings.d.ts +31 -31
  85. package/lib/models/settings/base/BaseInterval.d.ts +13 -13
  86. package/lib/models/settings/base/BaseSettings.d.ts +67 -67
  87. package/lib/models/settings/base/LegendPad.d.ts +21 -21
  88. package/lib/services/AreaChartService.d.ts +32 -31
  89. package/lib/services/LineChartService.d.ts +48 -47
  90. package/lib/services/PieChartService.d.ts +27 -27
  91. package/lib/services/Vertical2DChartService.d.ts +39 -39
  92. package/lib/services/VerticalChartService.d.ts +33 -33
  93. package/lib/services/VerticalStackedChartService.d.ts +35 -35
  94. package/lib/services/base/IBaseService.d.ts +38 -38
  95. package/lib/tokens.d.ts +13 -13
  96. package/package.json +11 -17
  97. package/public-api.d.ts +35 -35
  98. package/esm2020/lib/services/AreaChartService.mjs +0 -137
  99. package/esm2020/lib/services/LineChartService.mjs +0 -372
  100. package/fesm2015/esfaenza-es-charts.mjs +0 -2829
  101. package/fesm2015/esfaenza-es-charts.mjs.map +0 -1
  102. package/fesm2020/esfaenza-es-charts.mjs.map +0 -1
@@ -1,91 +1,91 @@
1
- import { Injectable, Inject } from '@angular/core';
2
- import { ESC_DEBUG_MODE } from '../../tokens';
3
- import * as i0 from "@angular/core";
4
- /**
5
- * Classe che si occupa del dispatch delle operazioni di rendering dei grafici utilizzando una coda per permettere ad ogni grafico di avere temi e localizzazione custom
6
- */
7
- export class ChartDispatcher {
8
- /**
9
- * @ignore
10
- */
11
- constructor(logs) {
12
- this.logs = logs;
13
- /**
14
- * Coda di inizializzazioni ancora da eseguire. Quando questa è vuota significa che nessuno sta creando grafici
15
- */
16
- this.Initializations = [];
17
- /**
18
- * Lista dei grafici inizializzati e attivi in un dato momento (viene registrata la proprietà **name**). Non è possibile registrare due grafici con lo stesso identificativo
19
- */
20
- this.InitializedGraphs = [];
21
- }
22
- /**
23
- * Registra un grafico da visualizzare insieme alla propria funzione di creazione. Quest'ultima sarà differita fino a che tutti i grafici
24
- * precedentemente registati non hanno finito la fase di inizializzazione
25
- *
26
- * @param {string} name Identificativo del grafico da registrare
27
- * @param {Function} chartCreationFunction Funzione che fisicamente dovrà occuparsi della creazione del grafico
28
- */
29
- register(name, chartCreationFunction) {
30
- if (this.InitializedGraphs.indexOf(name) != -1)
31
- throw "Attempting to register a duplicate chart '" + name + "'. Make sure the 'name' properties of your charts are univoque";
32
- this.log("DISPATCHER: Registering chart creation function execution for " + name);
33
- this.Initializations.push({ name: name, function: chartCreationFunction });
34
- if (this.Initializations.length == 1) {
35
- this.log("DISPATCHER: Initial drain started");
36
- this.drainInitQueues();
37
- }
38
- }
39
- /**
40
- * Deregistra un grafico presente. Chiamata generalmente al dispose del grafico in questione quando non dev'essere più mostrato nella pagina corrente
41
- *
42
- * @param {string} name Identificativo del grafico da deregistrare
43
- */
44
- deregisterGraph(name) {
45
- let index = this.InitializedGraphs.indexOf(name);
46
- if (index == -1) {
47
- //Questo succede quando si cerca di distruggere il grafico mentre sta venendo graficato
48
- this.log("DISPATCHER: Registration missing for chart " + name + " it was probably destroyed during load");
49
- return;
50
- }
51
- this.log("DISPATCHER: Chart deregistered " + name);
52
- this.InitializedGraphs.splice(index, 1);
53
- }
54
- /**
55
- * Metodo che esegue in maniera sequenziale le funzioni di inizializzazione dei grafici finché presenti
56
- * in modo che nessun grafico possa essere inizializzato contemporaneamente ad un altro.
57
- *
58
- * Questo è il punto chiave che permette di avere per ogni grafico temi e locale differenti
59
- */
60
- drainInitQueues() {
61
- let toExecute = this.Initializations[0];
62
- this.log("DISPATCHER: Executing initialization function for chart " + toExecute.name);
63
- toExecute.function().then(() => {
64
- this.log("DISPATCHER: initialization for chart " + toExecute.name + " is done");
65
- this.InitializedGraphs.push(toExecute.name);
66
- this.Initializations.splice(0, 1);
67
- if (this.Initializations.length >= 1) {
68
- this.log("DISPATCHER: Found queued initializations. Continuing");
69
- this.drainInitQueues();
70
- }
71
- else
72
- this.log("DISPATCHER: queue is over, nothing more to do");
73
- });
74
- }
75
- /**
76
- * @ignore
77
- */
78
- log(text) {
79
- if (this.logs)
80
- console.log("@esfaenza/es-charts: " + text);
81
- }
82
- }
83
- ChartDispatcherfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ChartDispatcher, deps: [{ token: ESC_DEBUG_MODE }], target: i0.ɵɵFactoryTarget.Injectable });
84
- ChartDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ChartDispatcher });
85
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ChartDispatcher, decorators: [{
86
- type: Injectable
87
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
88
- type: Inject,
89
- args: [ESC_DEBUG_MODE]
90
- }] }]; } });
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2hhcnREaXNwYXRjaGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtY2hhcnRzL3NyYy9saWIvbW9kZWxzL2NvcmUvQ2hhcnREaXNwYXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBRTlDOztHQUVHO0FBRUgsTUFBTSxPQUFPLGVBQWU7SUFZeEI7O09BRUc7SUFDSCxZQUE0QyxJQUFhO1FBQWIsU0FBSSxHQUFKLElBQUksQ0FBUztRQWJ6RDs7V0FFRztRQUNLLG9CQUFlLEdBQXNDLEVBQUUsQ0FBQztRQUVoRTs7V0FFRztRQUNLLHNCQUFpQixHQUFhLEVBQUUsQ0FBQztJQUtvQixDQUFDO0lBRTlEOzs7Ozs7T0FNRztJQUNJLFFBQVEsQ0FBQyxJQUFZLEVBQUUscUJBQStCO1FBQ3pELElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUMsTUFBTSw0Q0FBNEMsR0FBRyxJQUFJLEdBQUcsZ0VBQWdFLENBQUM7UUFFakksSUFBSSxDQUFDLEdBQUcsQ0FBQyxnRUFBZ0UsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNsRixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixFQUFFLENBQUMsQ0FBQztRQUMzRSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtZQUNsQyxJQUFJLENBQUMsR0FBRyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7WUFDOUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQzFCO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxlQUFlLENBQUMsSUFBWTtRQUMvQixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pELElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxFQUNmO1lBQ0ksdUZBQXVGO1lBQ3ZGLElBQUksQ0FBQyxHQUFHLENBQUMsNkNBQTZDLEdBQUcsSUFBSSxHQUFHLHdDQUF3QyxDQUFDLENBQUM7WUFDMUcsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxpQ0FBaUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUMzQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxlQUFlO1FBQ25CLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLEdBQUcsQ0FBQywwREFBMEQsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdEYsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDM0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyx1Q0FBdUMsR0FBRyxTQUFTLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxDQUFDO1lBQ2hGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNsQyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtnQkFDbEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxzREFBc0QsQ0FBQyxDQUFDO2dCQUNqRSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7YUFDMUI7O2dCQUVHLElBQUksQ0FBQyxHQUFHLENBQUMsK0NBQStDLENBQUMsQ0FBQztRQUNsRSxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7T0FFRztJQUNLLEdBQUcsQ0FBQyxJQUFZO1FBQ3BCLElBQUksSUFBSSxDQUFDLElBQUk7WUFDVCxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ3BELENBQUM7OzRHQW5GUSxlQUFlLGtCQWVKLGNBQWM7Z0hBZnpCLGVBQWU7MkZBQWYsZUFBZTtrQkFEM0IsVUFBVTs7MEJBZ0JNLE1BQU07MkJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgRVNDX0RFQlVHX01PREUgfSBmcm9tICcuLi8uLi90b2tlbnMnO1xyXG5cclxuLyoqXHJcbiAqIENsYXNzZSBjaGUgc2kgb2NjdXBhIGRlbCBkaXNwYXRjaCBkZWxsZSBvcGVyYXppb25pIGRpIHJlbmRlcmluZyBkZWkgZ3JhZmljaSB1dGlsaXp6YW5kbyB1bmEgY29kYSBwZXIgcGVybWV0dGVyZSBhZCBvZ25pIGdyYWZpY28gZGkgYXZlcmUgdGVtaSBlIGxvY2FsaXp6YXppb25lIGN1c3RvbVxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQ2hhcnREaXNwYXRjaGVyIHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENvZGEgZGkgaW5pemlhbGl6emF6aW9uaSBhbmNvcmEgZGEgZXNlZ3VpcmUuIFF1YW5kbyBxdWVzdGEgw6ggdnVvdGEgc2lnbmlmaWNhIGNoZSBuZXNzdW5vIHN0YSBjcmVhbmRvIGdyYWZpY2lcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBJbml0aWFsaXphdGlvbnM6IHsgbmFtZTogc3RyaW5nLCBmdW5jdGlvbjogYW55IH1bXSA9IFtdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTGlzdGEgZGVpIGdyYWZpY2kgaW5pemlhbGl6emF0aSBlIGF0dGl2aSBpbiB1biBkYXRvIG1vbWVudG8gKHZpZW5lIHJlZ2lzdHJhdGEgbGEgcHJvcHJpZXTDoCAqKm5hbWUqKikuIE5vbiDDqCBwb3NzaWJpbGUgcmVnaXN0cmFyZSBkdWUgZ3JhZmljaSBjb24gbG8gc3Rlc3NvIGlkZW50aWZpY2F0aXZvXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgSW5pdGlhbGl6ZWRHcmFwaHM6IHN0cmluZ1tdID0gW107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoRVNDX0RFQlVHX01PREUpIHByaXZhdGUgbG9nczogYm9vbGVhbikgeyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZWdpc3RyYSB1biBncmFmaWNvIGRhIHZpc3VhbGl6emFyZSBpbnNpZW1lIGFsbGEgcHJvcHJpYSBmdW56aW9uZSBkaSBjcmVhemlvbmUuIFF1ZXN0J3VsdGltYSBzYXLDoCBkaWZmZXJpdGEgZmlubyBhIGNoZSB0dXR0aSBpIGdyYWZpY2lcclxuICAgICAqIHByZWNlZGVudGVtZW50ZSByZWdpc3RhdGkgbm9uIGhhbm5vIGZpbml0byBsYSBmYXNlIGRpIGluaXppYWxpenphemlvbmVcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgSWRlbnRpZmljYXRpdm8gZGVsIGdyYWZpY28gZGEgcmVnaXN0cmFyZVxyXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY2hhcnRDcmVhdGlvbkZ1bmN0aW9uIEZ1bnppb25lIGNoZSBmaXNpY2FtZW50ZSBkb3Zyw6Agb2NjdXBhcnNpIGRlbGxhIGNyZWF6aW9uZSBkZWwgZ3JhZmljb1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcmVnaXN0ZXIobmFtZTogc3RyaW5nLCBjaGFydENyZWF0aW9uRnVuY3Rpb246IEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuSW5pdGlhbGl6ZWRHcmFwaHMuaW5kZXhPZihuYW1lKSAhPSAtMSlcclxuICAgICAgICAgICAgdGhyb3cgXCJBdHRlbXB0aW5nIHRvIHJlZ2lzdGVyIGEgZHVwbGljYXRlIGNoYXJ0ICdcIiArIG5hbWUgKyBcIicuIE1ha2Ugc3VyZSB0aGUgJ25hbWUnIHByb3BlcnRpZXMgb2YgeW91ciBjaGFydHMgYXJlIHVuaXZvcXVlXCI7XHJcblxyXG4gICAgICAgIHRoaXMubG9nKFwiRElTUEFUQ0hFUjogUmVnaXN0ZXJpbmcgY2hhcnQgY3JlYXRpb24gZnVuY3Rpb24gZXhlY3V0aW9uIGZvciBcIiArIG5hbWUpO1xyXG4gICAgICAgIHRoaXMuSW5pdGlhbGl6YXRpb25zLnB1c2goeyBuYW1lOiBuYW1lLCBmdW5jdGlvbjogY2hhcnRDcmVhdGlvbkZ1bmN0aW9uIH0pO1xyXG4gICAgICAgIGlmICh0aGlzLkluaXRpYWxpemF0aW9ucy5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgICAgICB0aGlzLmxvZyhcIkRJU1BBVENIRVI6IEluaXRpYWwgZHJhaW4gc3RhcnRlZFwiKTtcclxuICAgICAgICAgICAgdGhpcy5kcmFpbkluaXRRdWV1ZXMoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEZXJlZ2lzdHJhIHVuIGdyYWZpY28gcHJlc2VudGUuIENoaWFtYXRhIGdlbmVyYWxtZW50ZSBhbCBkaXNwb3NlIGRlbCBncmFmaWNvIGluIHF1ZXN0aW9uZSBxdWFuZG8gbm9uIGRldidlc3NlcmUgcGnDuSBtb3N0cmF0byBuZWxsYSBwYWdpbmEgY29ycmVudGVcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgSWRlbnRpZmljYXRpdm8gZGVsIGdyYWZpY28gZGEgZGVyZWdpc3RyYXJlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBkZXJlZ2lzdGVyR3JhcGgobmFtZTogc3RyaW5nKSB7XHJcbiAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5Jbml0aWFsaXplZEdyYXBocy5pbmRleE9mKG5hbWUpO1xyXG4gICAgICAgIGlmIChpbmRleCA9PSAtMSlcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIC8vUXVlc3RvIHN1Y2NlZGUgcXVhbmRvIHNpIGNlcmNhIGRpIGRpc3RydWdnZXJlIGlsIGdyYWZpY28gbWVudHJlIHN0YSB2ZW5lbmRvIGdyYWZpY2F0b1xyXG4gICAgICAgICAgICB0aGlzLmxvZyhcIkRJU1BBVENIRVI6IFJlZ2lzdHJhdGlvbiBtaXNzaW5nIGZvciBjaGFydCBcIiArIG5hbWUgKyBcIiBpdCB3YXMgcHJvYmFibHkgZGVzdHJveWVkIGR1cmluZyBsb2FkXCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmxvZyhcIkRJU1BBVENIRVI6IENoYXJ0IGRlcmVnaXN0ZXJlZCBcIiArIG5hbWUpO1xyXG4gICAgICAgIHRoaXMuSW5pdGlhbGl6ZWRHcmFwaHMuc3BsaWNlKGluZGV4LCAxKVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0b2RvIGNoZSBlc2VndWUgaW4gbWFuaWVyYSBzZXF1ZW56aWFsZSBsZSBmdW56aW9uaSBkaSBpbml6aWFsaXp6YXppb25lIGRlaSBncmFmaWNpIGZpbmNow6kgcHJlc2VudGkgXHJcbiAgICAgKiBpbiBtb2RvIGNoZSBuZXNzdW4gZ3JhZmljbyBwb3NzYSBlc3NlcmUgaW5pemlhbGl6emF0byBjb250ZW1wb3JhbmVhbWVudGUgYWQgdW4gYWx0cm8uXHJcbiAgICAgKiBcclxuICAgICAqIFF1ZXN0byDDqCBpbCBwdW50byBjaGlhdmUgY2hlIHBlcm1ldHRlIGRpIGF2ZXJlIHBlciBvZ25pIGdyYWZpY28gdGVtaSBlIGxvY2FsZSBkaWZmZXJlbnRpXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZHJhaW5Jbml0UXVldWVzKCkge1xyXG4gICAgICAgIGxldCB0b0V4ZWN1dGUgPSB0aGlzLkluaXRpYWxpemF0aW9uc1swXTtcclxuICAgICAgICB0aGlzLmxvZyhcIkRJU1BBVENIRVI6IEV4ZWN1dGluZyBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiBmb3IgY2hhcnQgXCIgKyB0b0V4ZWN1dGUubmFtZSk7XHJcblxyXG4gICAgICAgIHRvRXhlY3V0ZS5mdW5jdGlvbigpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxvZyhcIkRJU1BBVENIRVI6IGluaXRpYWxpemF0aW9uIGZvciBjaGFydCBcIiArIHRvRXhlY3V0ZS5uYW1lICsgXCIgaXMgZG9uZVwiKTtcclxuICAgICAgICAgICAgdGhpcy5Jbml0aWFsaXplZEdyYXBocy5wdXNoKHRvRXhlY3V0ZS5uYW1lKTtcclxuICAgICAgICAgICAgdGhpcy5Jbml0aWFsaXphdGlvbnMuc3BsaWNlKDAsIDEpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5Jbml0aWFsaXphdGlvbnMubGVuZ3RoID49IDEpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9nKFwiRElTUEFUQ0hFUjogRm91bmQgcXVldWVkIGluaXRpYWxpemF0aW9ucy4gQ29udGludWluZ1wiKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZHJhaW5Jbml0UXVldWVzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2coXCJESVNQQVRDSEVSOiBxdWV1ZSBpcyBvdmVyLCBub3RoaW5nIG1vcmUgdG8gZG9cIik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgbG9nKHRleHQ6IHN0cmluZykge1xyXG4gICAgICAgIGlmICh0aGlzLmxvZ3MpXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiQGVzZmFlbnphL2VzLWNoYXJ0czogXCIgKyB0ZXh0KTtcclxuICAgIH1cclxufSJdfQ==
1
+ import { Injectable, Inject } from '@angular/core';
2
+ import { ESC_DEBUG_MODE } from '../../tokens';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * Classe che si occupa del dispatch delle operazioni di rendering dei grafici utilizzando una coda per permettere ad ogni grafico di avere temi e localizzazione custom
6
+ */
7
+ export class ChartDispatcher {
8
+ /**
9
+ * @ignore
10
+ */
11
+ constructor(logs) {
12
+ this.logs = logs;
13
+ /**
14
+ * Coda di inizializzazioni ancora da eseguire. Quando questa è vuota significa che nessuno sta creando grafici
15
+ */
16
+ this.Initializations = [];
17
+ /**
18
+ * Lista dei grafici inizializzati e attivi in un dato momento (viene registrata la proprietà **name**). Non è possibile registrare due grafici con lo stesso identificativo
19
+ */
20
+ this.InitializedGraphs = [];
21
+ }
22
+ /**
23
+ * Registra un grafico da visualizzare insieme alla propria funzione di creazione. Quest'ultima sarà differita fino a che tutti i grafici
24
+ * precedentemente registati non hanno finito la fase di inizializzazione
25
+ *
26
+ * @param {string} name Identificativo del grafico da registrare
27
+ * @param {Function} chartCreationFunction Funzione che fisicamente dovrà occuparsi della creazione del grafico
28
+ */
29
+ register(name, chartCreationFunction) {
30
+ if (this.InitializedGraphs.indexOf(name) != -1)
31
+ throw "Attempting to register a duplicate chart '" + name + "'. Make sure the 'name' properties of your charts are univoque";
32
+ this.log("DISPATCHER: Registering chart creation function execution for " + name);
33
+ this.Initializations.push({ name: name, function: chartCreationFunction });
34
+ if (this.Initializations.length == 1) {
35
+ this.log("DISPATCHER: Initial drain started");
36
+ this.drainInitQueues();
37
+ }
38
+ }
39
+ /**
40
+ * Deregistra un grafico presente. Chiamata generalmente al dispose del grafico in questione quando non dev'essere più mostrato nella pagina corrente
41
+ *
42
+ * @param {string} name Identificativo del grafico da deregistrare
43
+ */
44
+ deregisterGraph(name) {
45
+ let index = this.InitializedGraphs.indexOf(name);
46
+ if (index == -1) {
47
+ //Questo succede quando si cerca di distruggere il grafico mentre sta venendo graficato
48
+ this.log("DISPATCHER: Registration missing for chart " + name + " it was probably destroyed during load");
49
+ return;
50
+ }
51
+ this.log("DISPATCHER: Chart deregistered " + name);
52
+ this.InitializedGraphs.splice(index, 1);
53
+ }
54
+ /**
55
+ * Metodo che esegue in maniera sequenziale le funzioni di inizializzazione dei grafici finché presenti
56
+ * in modo che nessun grafico possa essere inizializzato contemporaneamente ad un altro.
57
+ *
58
+ * Questo è il punto chiave che permette di avere per ogni grafico temi e locale differenti
59
+ */
60
+ drainInitQueues() {
61
+ let toExecute = this.Initializations[0];
62
+ this.log("DISPATCHER: Executing initialization function for chart " + toExecute.name);
63
+ toExecute.function().then(() => {
64
+ this.log("DISPATCHER: initialization for chart " + toExecute.name + " is done");
65
+ this.InitializedGraphs.push(toExecute.name);
66
+ this.Initializations.splice(0, 1);
67
+ if (this.Initializations.length >= 1) {
68
+ this.log("DISPATCHER: Found queued initializations. Continuing");
69
+ this.drainInitQueues();
70
+ }
71
+ else
72
+ this.log("DISPATCHER: queue is over, nothing more to do");
73
+ });
74
+ }
75
+ /**
76
+ * @ignore
77
+ */
78
+ log(text) {
79
+ if (this.logs)
80
+ console.log("@esfaenza/es-charts: " + text);
81
+ }
82
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ChartDispatcher, deps: [{ token: ESC_DEBUG_MODE }], target: i0.ɵɵFactoryTarget.Injectable }); }
83
+ static { thisprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ChartDispatcher }); }
84
+ }
85
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ChartDispatcher, decorators: [{
86
+ type: Injectable
87
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
88
+ type: Inject,
89
+ args: [ESC_DEBUG_MODE]
90
+ }] }]; } });
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2hhcnREaXNwYXRjaGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtY2hhcnRzL3NyYy9saWIvbW9kZWxzL2NvcmUvQ2hhcnREaXNwYXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBRTlDOztHQUVHO0FBRUgsTUFBTSxPQUFPLGVBQWU7SUFZeEI7O09BRUc7SUFDSCxZQUE0QyxJQUFhO1FBQWIsU0FBSSxHQUFKLElBQUksQ0FBUztRQWJ6RDs7V0FFRztRQUNLLG9CQUFlLEdBQXNDLEVBQUUsQ0FBQztRQUVoRTs7V0FFRztRQUNLLHNCQUFpQixHQUFhLEVBQUUsQ0FBQztJQUtvQixDQUFDO0lBRTlEOzs7Ozs7T0FNRztJQUNJLFFBQVEsQ0FBQyxJQUFZLEVBQUUscUJBQStCO1FBQ3pELElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUMsTUFBTSw0Q0FBNEMsR0FBRyxJQUFJLEdBQUcsZ0VBQWdFLENBQUM7UUFFakksSUFBSSxDQUFDLEdBQUcsQ0FBQyxnRUFBZ0UsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNsRixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixFQUFFLENBQUMsQ0FBQztRQUMzRSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtZQUNsQyxJQUFJLENBQUMsR0FBRyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7WUFDOUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQzFCO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxlQUFlLENBQUMsSUFBWTtRQUMvQixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pELElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxFQUNmO1lBQ0ksdUZBQXVGO1lBQ3ZGLElBQUksQ0FBQyxHQUFHLENBQUMsNkNBQTZDLEdBQUcsSUFBSSxHQUFHLHdDQUF3QyxDQUFDLENBQUM7WUFDMUcsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxpQ0FBaUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUMzQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxlQUFlO1FBQ25CLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLEdBQUcsQ0FBQywwREFBMEQsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdEYsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDM0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyx1Q0FBdUMsR0FBRyxTQUFTLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxDQUFDO1lBQ2hGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNsQyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtnQkFDbEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxzREFBc0QsQ0FBQyxDQUFDO2dCQUNqRSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7YUFDMUI7O2dCQUVHLElBQUksQ0FBQyxHQUFHLENBQUMsK0NBQStDLENBQUMsQ0FBQztRQUNsRSxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7T0FFRztJQUNLLEdBQUcsQ0FBQyxJQUFZO1FBQ3BCLElBQUksSUFBSSxDQUFDLElBQUk7WUFDVCxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ3BELENBQUM7K0dBbkZRLGVBQWUsa0JBZUosY0FBYzttSEFmekIsZUFBZTs7NEZBQWYsZUFBZTtrQkFEM0IsVUFBVTs7MEJBZ0JNLE1BQU07MkJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgRVNDX0RFQlVHX01PREUgfSBmcm9tICcuLi8uLi90b2tlbnMnO1xyXG5cclxuLyoqXHJcbiAqIENsYXNzZSBjaGUgc2kgb2NjdXBhIGRlbCBkaXNwYXRjaCBkZWxsZSBvcGVyYXppb25pIGRpIHJlbmRlcmluZyBkZWkgZ3JhZmljaSB1dGlsaXp6YW5kbyB1bmEgY29kYSBwZXIgcGVybWV0dGVyZSBhZCBvZ25pIGdyYWZpY28gZGkgYXZlcmUgdGVtaSBlIGxvY2FsaXp6YXppb25lIGN1c3RvbVxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQ2hhcnREaXNwYXRjaGVyIHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENvZGEgZGkgaW5pemlhbGl6emF6aW9uaSBhbmNvcmEgZGEgZXNlZ3VpcmUuIFF1YW5kbyBxdWVzdGEgw6ggdnVvdGEgc2lnbmlmaWNhIGNoZSBuZXNzdW5vIHN0YSBjcmVhbmRvIGdyYWZpY2lcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBJbml0aWFsaXphdGlvbnM6IHsgbmFtZTogc3RyaW5nLCBmdW5jdGlvbjogYW55IH1bXSA9IFtdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTGlzdGEgZGVpIGdyYWZpY2kgaW5pemlhbGl6emF0aSBlIGF0dGl2aSBpbiB1biBkYXRvIG1vbWVudG8gKHZpZW5lIHJlZ2lzdHJhdGEgbGEgcHJvcHJpZXTDoCAqKm5hbWUqKikuIE5vbiDDqCBwb3NzaWJpbGUgcmVnaXN0cmFyZSBkdWUgZ3JhZmljaSBjb24gbG8gc3Rlc3NvIGlkZW50aWZpY2F0aXZvXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgSW5pdGlhbGl6ZWRHcmFwaHM6IHN0cmluZ1tdID0gW107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoRVNDX0RFQlVHX01PREUpIHByaXZhdGUgbG9nczogYm9vbGVhbikgeyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZWdpc3RyYSB1biBncmFmaWNvIGRhIHZpc3VhbGl6emFyZSBpbnNpZW1lIGFsbGEgcHJvcHJpYSBmdW56aW9uZSBkaSBjcmVhemlvbmUuIFF1ZXN0J3VsdGltYSBzYXLDoCBkaWZmZXJpdGEgZmlubyBhIGNoZSB0dXR0aSBpIGdyYWZpY2lcclxuICAgICAqIHByZWNlZGVudGVtZW50ZSByZWdpc3RhdGkgbm9uIGhhbm5vIGZpbml0byBsYSBmYXNlIGRpIGluaXppYWxpenphemlvbmVcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgSWRlbnRpZmljYXRpdm8gZGVsIGdyYWZpY28gZGEgcmVnaXN0cmFyZVxyXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY2hhcnRDcmVhdGlvbkZ1bmN0aW9uIEZ1bnppb25lIGNoZSBmaXNpY2FtZW50ZSBkb3Zyw6Agb2NjdXBhcnNpIGRlbGxhIGNyZWF6aW9uZSBkZWwgZ3JhZmljb1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcmVnaXN0ZXIobmFtZTogc3RyaW5nLCBjaGFydENyZWF0aW9uRnVuY3Rpb246IEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuSW5pdGlhbGl6ZWRHcmFwaHMuaW5kZXhPZihuYW1lKSAhPSAtMSlcclxuICAgICAgICAgICAgdGhyb3cgXCJBdHRlbXB0aW5nIHRvIHJlZ2lzdGVyIGEgZHVwbGljYXRlIGNoYXJ0ICdcIiArIG5hbWUgKyBcIicuIE1ha2Ugc3VyZSB0aGUgJ25hbWUnIHByb3BlcnRpZXMgb2YgeW91ciBjaGFydHMgYXJlIHVuaXZvcXVlXCI7XHJcblxyXG4gICAgICAgIHRoaXMubG9nKFwiRElTUEFUQ0hFUjogUmVnaXN0ZXJpbmcgY2hhcnQgY3JlYXRpb24gZnVuY3Rpb24gZXhlY3V0aW9uIGZvciBcIiArIG5hbWUpO1xyXG4gICAgICAgIHRoaXMuSW5pdGlhbGl6YXRpb25zLnB1c2goeyBuYW1lOiBuYW1lLCBmdW5jdGlvbjogY2hhcnRDcmVhdGlvbkZ1bmN0aW9uIH0pO1xyXG4gICAgICAgIGlmICh0aGlzLkluaXRpYWxpemF0aW9ucy5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgICAgICB0aGlzLmxvZyhcIkRJU1BBVENIRVI6IEluaXRpYWwgZHJhaW4gc3RhcnRlZFwiKTtcclxuICAgICAgICAgICAgdGhpcy5kcmFpbkluaXRRdWV1ZXMoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEZXJlZ2lzdHJhIHVuIGdyYWZpY28gcHJlc2VudGUuIENoaWFtYXRhIGdlbmVyYWxtZW50ZSBhbCBkaXNwb3NlIGRlbCBncmFmaWNvIGluIHF1ZXN0aW9uZSBxdWFuZG8gbm9uIGRldidlc3NlcmUgcGnDuSBtb3N0cmF0byBuZWxsYSBwYWdpbmEgY29ycmVudGVcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgSWRlbnRpZmljYXRpdm8gZGVsIGdyYWZpY28gZGEgZGVyZWdpc3RyYXJlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBkZXJlZ2lzdGVyR3JhcGgobmFtZTogc3RyaW5nKSB7XHJcbiAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5Jbml0aWFsaXplZEdyYXBocy5pbmRleE9mKG5hbWUpO1xyXG4gICAgICAgIGlmIChpbmRleCA9PSAtMSlcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIC8vUXVlc3RvIHN1Y2NlZGUgcXVhbmRvIHNpIGNlcmNhIGRpIGRpc3RydWdnZXJlIGlsIGdyYWZpY28gbWVudHJlIHN0YSB2ZW5lbmRvIGdyYWZpY2F0b1xyXG4gICAgICAgICAgICB0aGlzLmxvZyhcIkRJU1BBVENIRVI6IFJlZ2lzdHJhdGlvbiBtaXNzaW5nIGZvciBjaGFydCBcIiArIG5hbWUgKyBcIiBpdCB3YXMgcHJvYmFibHkgZGVzdHJveWVkIGR1cmluZyBsb2FkXCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmxvZyhcIkRJU1BBVENIRVI6IENoYXJ0IGRlcmVnaXN0ZXJlZCBcIiArIG5hbWUpO1xyXG4gICAgICAgIHRoaXMuSW5pdGlhbGl6ZWRHcmFwaHMuc3BsaWNlKGluZGV4LCAxKVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0b2RvIGNoZSBlc2VndWUgaW4gbWFuaWVyYSBzZXF1ZW56aWFsZSBsZSBmdW56aW9uaSBkaSBpbml6aWFsaXp6YXppb25lIGRlaSBncmFmaWNpIGZpbmNow6kgcHJlc2VudGkgXHJcbiAgICAgKiBpbiBtb2RvIGNoZSBuZXNzdW4gZ3JhZmljbyBwb3NzYSBlc3NlcmUgaW5pemlhbGl6emF0byBjb250ZW1wb3JhbmVhbWVudGUgYWQgdW4gYWx0cm8uXHJcbiAgICAgKiBcclxuICAgICAqIFF1ZXN0byDDqCBpbCBwdW50byBjaGlhdmUgY2hlIHBlcm1ldHRlIGRpIGF2ZXJlIHBlciBvZ25pIGdyYWZpY28gdGVtaSBlIGxvY2FsZSBkaWZmZXJlbnRpXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZHJhaW5Jbml0UXVldWVzKCkge1xyXG4gICAgICAgIGxldCB0b0V4ZWN1dGUgPSB0aGlzLkluaXRpYWxpemF0aW9uc1swXTtcclxuICAgICAgICB0aGlzLmxvZyhcIkRJU1BBVENIRVI6IEV4ZWN1dGluZyBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiBmb3IgY2hhcnQgXCIgKyB0b0V4ZWN1dGUubmFtZSk7XHJcblxyXG4gICAgICAgIHRvRXhlY3V0ZS5mdW5jdGlvbigpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxvZyhcIkRJU1BBVENIRVI6IGluaXRpYWxpemF0aW9uIGZvciBjaGFydCBcIiArIHRvRXhlY3V0ZS5uYW1lICsgXCIgaXMgZG9uZVwiKTtcclxuICAgICAgICAgICAgdGhpcy5Jbml0aWFsaXplZEdyYXBocy5wdXNoKHRvRXhlY3V0ZS5uYW1lKTtcclxuICAgICAgICAgICAgdGhpcy5Jbml0aWFsaXphdGlvbnMuc3BsaWNlKDAsIDEpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5Jbml0aWFsaXphdGlvbnMubGVuZ3RoID49IDEpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9nKFwiRElTUEFUQ0hFUjogRm91bmQgcXVldWVkIGluaXRpYWxpemF0aW9ucy4gQ29udGludWluZ1wiKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZHJhaW5Jbml0UXVldWVzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2coXCJESVNQQVRDSEVSOiBxdWV1ZSBpcyBvdmVyLCBub3RoaW5nIG1vcmUgdG8gZG9cIik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgbG9nKHRleHQ6IHN0cmluZykge1xyXG4gICAgICAgIGlmICh0aGlzLmxvZ3MpXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiQGVzZmFlbnphL2VzLWNoYXJ0czogXCIgKyB0ZXh0KTtcclxuICAgIH1cclxufSJdfQ==