@aquera/nile-visualization 0.2.0 → 0.3.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 (134) hide show
  1. package/dist/src/index.d.ts +31 -1
  2. package/dist/src/index.js +16 -0
  3. package/dist/src/internal/highcharts-provider.js +45 -0
  4. package/dist/src/internal/types/chart-area-config.type.d.ts +4 -0
  5. package/dist/src/internal/types/chart-area-negative-config.type.d.ts +13 -0
  6. package/dist/src/internal/types/chart-area-negative-config.type.js +2 -0
  7. package/dist/src/internal/types/chart-area-range-config.type.d.ts +12 -0
  8. package/dist/src/internal/types/chart-area-range-config.type.js +2 -0
  9. package/dist/src/internal/types/chart-area-spline-config.type.d.ts +13 -0
  10. package/dist/src/internal/types/chart-area-spline-config.type.js +2 -0
  11. package/dist/src/internal/types/chart-column-drilldown-config.type.d.ts +13 -0
  12. package/dist/src/internal/types/chart-column-drilldown-config.type.js +2 -0
  13. package/dist/src/internal/types/chart-column-pyramid-config.type.d.ts +11 -0
  14. package/dist/src/internal/types/chart-column-pyramid-config.type.js +2 -0
  15. package/dist/src/internal/types/chart-column-range-config.type.d.ts +12 -0
  16. package/dist/src/internal/types/chart-column-range-config.type.js +2 -0
  17. package/dist/src/internal/types/chart-dumbbell-lower-config.type.d.ts +5 -0
  18. package/dist/src/internal/types/chart-dumbbell-lower-config.type.js +2 -0
  19. package/dist/src/internal/types/chart-dumbbell-upper-config.type.d.ts +5 -0
  20. package/dist/src/internal/types/chart-dumbbell-upper-config.type.js +2 -0
  21. package/dist/src/internal/types/chart-euler-config.type.d.ts +10 -0
  22. package/dist/src/internal/types/chart-euler-config.type.js +2 -0
  23. package/dist/src/internal/types/chart-lollipop-config.type.d.ts +11 -0
  24. package/dist/src/internal/types/chart-lollipop-config.type.js +2 -0
  25. package/dist/src/internal/types/chart-polygon-config.type.d.ts +12 -0
  26. package/dist/src/internal/types/chart-polygon-config.type.js +2 -0
  27. package/dist/src/internal/types/chart-radial-bar-config.type.d.ts +16 -0
  28. package/dist/src/internal/types/chart-radial-bar-config.type.js +2 -0
  29. package/dist/src/internal/types/chart-variable-pie-config.type.d.ts +13 -0
  30. package/dist/src/internal/types/chart-variable-pie-config.type.js +2 -0
  31. package/dist/src/internal/types/chart-vector-config.type.d.ts +13 -0
  32. package/dist/src/internal/types/chart-vector-config.type.js +2 -0
  33. package/dist/src/internal/types/chart-xrange-config.type.d.ts +13 -0
  34. package/dist/src/internal/types/chart-xrange-config.type.js +2 -0
  35. package/dist/src/internal/types/index.d.ts +16 -1
  36. package/dist/src/internal/types/primitive-chart-config.type.d.ts +17 -1
  37. package/dist/src/nile-area-negative-chart/index.d.ts +2 -0
  38. package/dist/src/nile-area-negative-chart/index.js +2 -0
  39. package/dist/src/nile-area-negative-chart/nile-area-negative-chart.css.d.ts +1 -0
  40. package/dist/src/nile-area-negative-chart/nile-area-negative-chart.css.js +28 -0
  41. package/dist/src/nile-area-negative-chart/nile-area-negative-chart.d.ts +42 -0
  42. package/dist/src/nile-area-negative-chart/nile-area-negative-chart.js +178 -0
  43. package/dist/src/nile-area-range-chart/index.d.ts +2 -0
  44. package/dist/src/nile-area-range-chart/index.js +2 -0
  45. package/dist/src/nile-area-range-chart/nile-area-range-chart.css.d.ts +1 -0
  46. package/dist/src/nile-area-range-chart/nile-area-range-chart.css.js +28 -0
  47. package/dist/src/nile-area-range-chart/nile-area-range-chart.d.ts +41 -0
  48. package/dist/src/nile-area-range-chart/nile-area-range-chart.js +173 -0
  49. package/dist/src/nile-area-spline-chart/index.d.ts +2 -0
  50. package/dist/src/nile-area-spline-chart/index.js +2 -0
  51. package/dist/src/nile-area-spline-chart/nile-area-spline-chart.css.d.ts +1 -0
  52. package/dist/src/nile-area-spline-chart/nile-area-spline-chart.css.js +28 -0
  53. package/dist/src/nile-area-spline-chart/nile-area-spline-chart.d.ts +41 -0
  54. package/dist/src/nile-area-spline-chart/nile-area-spline-chart.js +174 -0
  55. package/dist/src/nile-chart/index.d.ts +1 -1
  56. package/dist/src/nile-column-drilldown-chart/index.d.ts +2 -0
  57. package/dist/src/nile-column-drilldown-chart/index.js +2 -0
  58. package/dist/src/nile-column-drilldown-chart/nile-column-drilldown-chart.css.d.ts +1 -0
  59. package/dist/src/nile-column-drilldown-chart/nile-column-drilldown-chart.css.js +28 -0
  60. package/dist/src/nile-column-drilldown-chart/nile-column-drilldown-chart.d.ts +49 -0
  61. package/dist/src/nile-column-drilldown-chart/nile-column-drilldown-chart.js +186 -0
  62. package/dist/src/nile-column-pyramid-chart/index.d.ts +2 -0
  63. package/dist/src/nile-column-pyramid-chart/index.js +2 -0
  64. package/dist/src/nile-column-pyramid-chart/nile-column-pyramid-chart.css.d.ts +1 -0
  65. package/dist/src/nile-column-pyramid-chart/nile-column-pyramid-chart.css.js +28 -0
  66. package/dist/src/nile-column-pyramid-chart/nile-column-pyramid-chart.d.ts +39 -0
  67. package/dist/src/nile-column-pyramid-chart/nile-column-pyramid-chart.js +155 -0
  68. package/dist/src/nile-column-range-chart/index.d.ts +2 -0
  69. package/dist/src/nile-column-range-chart/index.js +2 -0
  70. package/dist/src/nile-column-range-chart/nile-column-range-chart.css.d.ts +1 -0
  71. package/dist/src/nile-column-range-chart/nile-column-range-chart.css.js +28 -0
  72. package/dist/src/nile-column-range-chart/nile-column-range-chart.d.ts +40 -0
  73. package/dist/src/nile-column-range-chart/nile-column-range-chart.js +169 -0
  74. package/dist/src/nile-dumbbell-lower-chart/index.d.ts +1 -0
  75. package/dist/src/nile-dumbbell-lower-chart/index.js +2 -0
  76. package/dist/src/nile-dumbbell-lower-chart/nile-dumbbell-lower-chart.css.d.ts +1 -0
  77. package/dist/src/nile-dumbbell-lower-chart/nile-dumbbell-lower-chart.css.js +28 -0
  78. package/dist/src/nile-dumbbell-lower-chart/nile-dumbbell-lower-chart.d.ts +40 -0
  79. package/dist/src/nile-dumbbell-lower-chart/nile-dumbbell-lower-chart.js +214 -0
  80. package/dist/src/nile-dumbbell-upper-chart/index.d.ts +1 -0
  81. package/dist/src/nile-dumbbell-upper-chart/index.js +2 -0
  82. package/dist/src/nile-dumbbell-upper-chart/nile-dumbbell-upper-chart.css.d.ts +1 -0
  83. package/dist/src/nile-dumbbell-upper-chart/nile-dumbbell-upper-chart.css.js +28 -0
  84. package/dist/src/nile-dumbbell-upper-chart/nile-dumbbell-upper-chart.d.ts +40 -0
  85. package/dist/src/nile-dumbbell-upper-chart/nile-dumbbell-upper-chart.js +214 -0
  86. package/dist/src/nile-euler-chart/index.d.ts +2 -0
  87. package/dist/src/nile-euler-chart/index.js +2 -0
  88. package/dist/src/nile-euler-chart/nile-euler-chart.css.d.ts +1 -0
  89. package/dist/src/nile-euler-chart/nile-euler-chart.css.js +28 -0
  90. package/dist/src/nile-euler-chart/nile-euler-chart.d.ts +38 -0
  91. package/dist/src/nile-euler-chart/nile-euler-chart.js +149 -0
  92. package/dist/src/nile-inverted-area-chart/index.d.ts +2 -0
  93. package/dist/src/nile-inverted-area-chart/index.js +2 -0
  94. package/dist/src/nile-inverted-area-chart/nile-inverted-area-chart.css.d.ts +1 -0
  95. package/dist/src/nile-inverted-area-chart/nile-inverted-area-chart.css.js +28 -0
  96. package/dist/src/nile-inverted-area-chart/nile-inverted-area-chart.d.ts +40 -0
  97. package/dist/src/nile-inverted-area-chart/nile-inverted-area-chart.js +173 -0
  98. package/dist/src/nile-lollipop-chart/index.d.ts +2 -0
  99. package/dist/src/nile-lollipop-chart/index.js +2 -0
  100. package/dist/src/nile-lollipop-chart/nile-lollipop-chart.css.d.ts +1 -0
  101. package/dist/src/nile-lollipop-chart/nile-lollipop-chart.css.js +28 -0
  102. package/dist/src/nile-lollipop-chart/nile-lollipop-chart.d.ts +39 -0
  103. package/dist/src/nile-lollipop-chart/nile-lollipop-chart.js +174 -0
  104. package/dist/src/nile-polygon-chart/index.d.ts +2 -0
  105. package/dist/src/nile-polygon-chart/index.js +2 -0
  106. package/dist/src/nile-polygon-chart/nile-polygon-chart.css.d.ts +1 -0
  107. package/dist/src/nile-polygon-chart/nile-polygon-chart.css.js +28 -0
  108. package/dist/src/nile-polygon-chart/nile-polygon-chart.d.ts +41 -0
  109. package/dist/src/nile-polygon-chart/nile-polygon-chart.js +167 -0
  110. package/dist/src/nile-radial-bar-chart/index.d.ts +2 -0
  111. package/dist/src/nile-radial-bar-chart/index.js +2 -0
  112. package/dist/src/nile-radial-bar-chart/nile-radial-bar-chart.css.d.ts +1 -0
  113. package/dist/src/nile-radial-bar-chart/nile-radial-bar-chart.css.js +28 -0
  114. package/dist/src/nile-radial-bar-chart/nile-radial-bar-chart.d.ts +42 -0
  115. package/dist/src/nile-radial-bar-chart/nile-radial-bar-chart.js +191 -0
  116. package/dist/src/nile-variable-pie-chart/index.d.ts +2 -0
  117. package/dist/src/nile-variable-pie-chart/index.js +2 -0
  118. package/dist/src/nile-variable-pie-chart/nile-variable-pie-chart.css.d.ts +1 -0
  119. package/dist/src/nile-variable-pie-chart/nile-variable-pie-chart.css.js +28 -0
  120. package/dist/src/nile-variable-pie-chart/nile-variable-pie-chart.d.ts +42 -0
  121. package/dist/src/nile-variable-pie-chart/nile-variable-pie-chart.js +180 -0
  122. package/dist/src/nile-vector-chart/index.d.ts +2 -0
  123. package/dist/src/nile-vector-chart/index.js +2 -0
  124. package/dist/src/nile-vector-chart/nile-vector-chart.css.d.ts +1 -0
  125. package/dist/src/nile-vector-chart/nile-vector-chart.css.js +28 -0
  126. package/dist/src/nile-vector-chart/nile-vector-chart.d.ts +44 -0
  127. package/dist/src/nile-vector-chart/nile-vector-chart.js +181 -0
  128. package/dist/src/nile-xrange-chart/index.d.ts +2 -0
  129. package/dist/src/nile-xrange-chart/index.js +2 -0
  130. package/dist/src/nile-xrange-chart/nile-xrange-chart.css.d.ts +1 -0
  131. package/dist/src/nile-xrange-chart/nile-xrange-chart.css.js +28 -0
  132. package/dist/src/nile-xrange-chart/nile-xrange-chart.d.ts +44 -0
  133. package/dist/src/nile-xrange-chart/nile-xrange-chart.js +193 -0
  134. package/package.json +1 -1
@@ -0,0 +1,178 @@
1
+ import { __decorate } from "tslib";
2
+ import { customElement, property, query } from 'lit/decorators.js';
3
+ import { html } from 'lit';
4
+ import NileElement from '../internal/nile-element.js';
5
+ import { applySeparatedChartConfig } from '../internal/separated-chart-config.js';
6
+ import { getHighcharts } from '../internal/highcharts-provider.js';
7
+ import { deepMerge } from '../internal/utils.js';
8
+ import { styles } from './nile-area-negative-chart.css.js';
9
+ let NileAreaNegativeChart = class NileAreaNegativeChart extends NileElement {
10
+ constructor() {
11
+ super(...arguments);
12
+ this._hc = null;
13
+ this.chart = null;
14
+ this.resizeObserver = null;
15
+ this.config = null;
16
+ this.chartTitle = '';
17
+ this.chartSubtitle = '';
18
+ this.data = [];
19
+ this.categories = [];
20
+ this.options = {};
21
+ this.loading = false;
22
+ this.height = '400px';
23
+ this.yAxisTitle = '';
24
+ this.threshold = 0;
25
+ }
26
+ applyConfig(cfg) {
27
+ applySeparatedChartConfig(this, cfg);
28
+ }
29
+ connectedCallback() {
30
+ super.connectedCallback();
31
+ if (this.config)
32
+ this.applyConfig(this.config);
33
+ }
34
+ disconnectedCallback() {
35
+ super.disconnectedCallback();
36
+ this.destroyChart();
37
+ this.resizeObserver?.disconnect();
38
+ this.resizeObserver = null;
39
+ }
40
+ firstUpdated() {
41
+ this.initChart();
42
+ this.setupResizeObserver();
43
+ }
44
+ updated(changedProperties) {
45
+ if (changedProperties.has('config') && this.config) {
46
+ this.applyConfig(this.config);
47
+ return;
48
+ }
49
+ const props = [
50
+ 'data',
51
+ 'categories',
52
+ 'chartTitle',
53
+ 'chartSubtitle',
54
+ 'options',
55
+ 'height',
56
+ 'yAxisTitle',
57
+ 'threshold',
58
+ 'loading',
59
+ ];
60
+ if (!props.some(p => changedProperties.has(p)))
61
+ return;
62
+ if (this.loading) {
63
+ this.destroyChart();
64
+ return;
65
+ }
66
+ if (this.chart) {
67
+ this.chart.update(this.buildOptions(), true, true);
68
+ }
69
+ else {
70
+ this.initChart();
71
+ }
72
+ }
73
+ setupResizeObserver() {
74
+ if (!this.chartContainer)
75
+ return;
76
+ this.resizeObserver = new ResizeObserver(() => this.chart?.reflow());
77
+ this.resizeObserver.observe(this.chartContainer);
78
+ }
79
+ buildOptions() {
80
+ const self = this;
81
+ return deepMerge({
82
+ chart: { type: 'area', height: this.height },
83
+ title: { text: this.chartTitle || undefined },
84
+ subtitle: { text: this.chartSubtitle || undefined },
85
+ xAxis: { categories: this.categories },
86
+ yAxis: { title: { text: this.yAxisTitle || undefined } },
87
+ tooltip: { shared: true },
88
+ plotOptions: {
89
+ area: {
90
+ threshold: this.threshold,
91
+ fillOpacity: 0.35,
92
+ },
93
+ series: {
94
+ cursor: 'pointer',
95
+ point: {
96
+ events: {
97
+ click() {
98
+ self.emit('nile-chart-click', {
99
+ point: this,
100
+ category: this.category,
101
+ value: this.y,
102
+ seriesName: this.series.name,
103
+ });
104
+ },
105
+ },
106
+ },
107
+ },
108
+ },
109
+ series: this.data.map(s => ({
110
+ type: 'area',
111
+ name: s.name,
112
+ data: s.data,
113
+ color: s.color,
114
+ negativeColor: s.negativeColor,
115
+ })),
116
+ credits: { enabled: false },
117
+ }, this.options);
118
+ }
119
+ async initChart() {
120
+ if (this.loading || !this.chartContainer)
121
+ return;
122
+ if (!this._hc)
123
+ this._hc = await getHighcharts();
124
+ this.chart = this._hc.chart(this.chartContainer, this.buildOptions());
125
+ this.emit('nile-chart-ready', { chart: this.chart });
126
+ }
127
+ destroyChart() {
128
+ if (this.chart) {
129
+ this.chart.destroy();
130
+ this.chart = null;
131
+ }
132
+ }
133
+ render() {
134
+ if (this.loading) {
135
+ return html `<div class="chart-loading" style="height:${this.height}">Loading...</div>`;
136
+ }
137
+ return html `<div class="chart-container"></div>`;
138
+ }
139
+ };
140
+ NileAreaNegativeChart.styles = styles;
141
+ __decorate([
142
+ query('.chart-container')
143
+ ], NileAreaNegativeChart.prototype, "chartContainer", void 0);
144
+ __decorate([
145
+ property({ type: Object })
146
+ ], NileAreaNegativeChart.prototype, "config", void 0);
147
+ __decorate([
148
+ property({ type: String, attribute: 'chart-title' })
149
+ ], NileAreaNegativeChart.prototype, "chartTitle", void 0);
150
+ __decorate([
151
+ property({ type: String, attribute: 'chart-subtitle' })
152
+ ], NileAreaNegativeChart.prototype, "chartSubtitle", void 0);
153
+ __decorate([
154
+ property({ type: Array })
155
+ ], NileAreaNegativeChart.prototype, "data", void 0);
156
+ __decorate([
157
+ property({ type: Array })
158
+ ], NileAreaNegativeChart.prototype, "categories", void 0);
159
+ __decorate([
160
+ property({ type: Object })
161
+ ], NileAreaNegativeChart.prototype, "options", void 0);
162
+ __decorate([
163
+ property({ type: Boolean, reflect: true })
164
+ ], NileAreaNegativeChart.prototype, "loading", void 0);
165
+ __decorate([
166
+ property({ type: String })
167
+ ], NileAreaNegativeChart.prototype, "height", void 0);
168
+ __decorate([
169
+ property({ type: String, attribute: 'y-axis-title' })
170
+ ], NileAreaNegativeChart.prototype, "yAxisTitle", void 0);
171
+ __decorate([
172
+ property({ type: Number })
173
+ ], NileAreaNegativeChart.prototype, "threshold", void 0);
174
+ NileAreaNegativeChart = __decorate([
175
+ customElement('nile-area-negative-chart')
176
+ ], NileAreaNegativeChart);
177
+ export { NileAreaNegativeChart };
178
+ //# sourceMappingURL=nile-area-negative-chart.js.map
@@ -0,0 +1,2 @@
1
+ export { NileAreaRangeChart } from './nile-area-range-chart.js';
2
+ export type { AreaRangeSeriesData } from './nile-area-range-chart.js';
@@ -0,0 +1,2 @@
1
+ export { NileAreaRangeChart } from './nile-area-range-chart.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ export declare const styles: import("lit").CSSResult;
@@ -0,0 +1,28 @@
1
+ import { css } from 'lit';
2
+ export const styles = css `
3
+ :host {
4
+ display: block;
5
+ width: 100%;
6
+ position: relative;
7
+ }
8
+
9
+ :host([hidden]) {
10
+ display: none;
11
+ }
12
+
13
+ .chart-container {
14
+ width: 100%;
15
+ min-height: var(--nile-height-200px, var(--ng-height-200px));
16
+ }
17
+
18
+ .chart-loading {
19
+ display: flex;
20
+ align-items: center;
21
+ justify-content: center;
22
+ min-height: inherit;
23
+ color: var(--nile-colors-neutral-700, var(--ng-colors-text-secondary-700));
24
+ font-family: var(--nile-font-family-serif, var(--ng-font-family-body));
25
+ font-size: var(--nile-type-scale-3, var(--ng-font-size-text-sm));
26
+ }
27
+ `;
28
+ //# sourceMappingURL=nile-area-range-chart.css.js.map
@@ -0,0 +1,41 @@
1
+ import type { CSSResultGroup, PropertyValues, TemplateResult } from 'lit';
2
+ import type Highcharts from 'highcharts';
3
+ import NileElement from '../internal/nile-element.js';
4
+ import type { SeparatedChartConfigInputType } from '../internal/types/separated-chart-config-input.type.js';
5
+ export interface AreaRangeSeriesData {
6
+ name: string;
7
+ data: [number, number][];
8
+ color?: string;
9
+ fillOpacity?: number;
10
+ }
11
+ export declare class NileAreaRangeChart extends NileElement {
12
+ static styles: CSSResultGroup;
13
+ private _hc;
14
+ private chart;
15
+ private resizeObserver;
16
+ private chartContainer;
17
+ config: SeparatedChartConfigInputType | null;
18
+ chartTitle: string;
19
+ chartSubtitle: string;
20
+ data: AreaRangeSeriesData[];
21
+ categories: string[];
22
+ options: Highcharts.Options;
23
+ loading: boolean;
24
+ height: string;
25
+ yAxisTitle: string;
26
+ private applyConfig;
27
+ connectedCallback(): void;
28
+ disconnectedCallback(): void;
29
+ protected firstUpdated(): void;
30
+ protected updated(changedProperties: PropertyValues): void;
31
+ private setupResizeObserver;
32
+ private buildOptions;
33
+ private initChart;
34
+ private destroyChart;
35
+ render(): TemplateResult;
36
+ }
37
+ declare global {
38
+ interface HTMLElementTagNameMap {
39
+ 'nile-area-range-chart': NileAreaRangeChart;
40
+ }
41
+ }
@@ -0,0 +1,173 @@
1
+ import { __decorate } from "tslib";
2
+ import { customElement, property, query } from 'lit/decorators.js';
3
+ import { html } from 'lit';
4
+ import NileElement from '../internal/nile-element.js';
5
+ import { applySeparatedChartConfig } from '../internal/separated-chart-config.js';
6
+ import { getHighcharts } from '../internal/highcharts-provider.js';
7
+ import { deepMerge } from '../internal/utils.js';
8
+ import { styles } from './nile-area-range-chart.css.js';
9
+ let NileAreaRangeChart = class NileAreaRangeChart extends NileElement {
10
+ constructor() {
11
+ super(...arguments);
12
+ this._hc = null;
13
+ this.chart = null;
14
+ this.resizeObserver = null;
15
+ this.config = null;
16
+ this.chartTitle = '';
17
+ this.chartSubtitle = '';
18
+ this.data = [];
19
+ this.categories = [];
20
+ this.options = {};
21
+ this.loading = false;
22
+ this.height = '400px';
23
+ this.yAxisTitle = '';
24
+ }
25
+ applyConfig(cfg) {
26
+ applySeparatedChartConfig(this, cfg);
27
+ }
28
+ connectedCallback() {
29
+ super.connectedCallback();
30
+ if (this.config)
31
+ this.applyConfig(this.config);
32
+ }
33
+ disconnectedCallback() {
34
+ super.disconnectedCallback();
35
+ this.destroyChart();
36
+ this.resizeObserver?.disconnect();
37
+ this.resizeObserver = null;
38
+ }
39
+ firstUpdated() {
40
+ this.initChart();
41
+ this.setupResizeObserver();
42
+ }
43
+ updated(changedProperties) {
44
+ if (changedProperties.has('config') && this.config) {
45
+ this.applyConfig(this.config);
46
+ return;
47
+ }
48
+ const props = [
49
+ 'data',
50
+ 'categories',
51
+ 'chartTitle',
52
+ 'chartSubtitle',
53
+ 'options',
54
+ 'height',
55
+ 'yAxisTitle',
56
+ 'loading',
57
+ ];
58
+ if (!props.some(p => changedProperties.has(p)))
59
+ return;
60
+ if (this.loading) {
61
+ this.destroyChart();
62
+ return;
63
+ }
64
+ if (this.chart) {
65
+ this.chart.update(this.buildOptions(), true, true);
66
+ }
67
+ else {
68
+ this.initChart();
69
+ }
70
+ }
71
+ setupResizeObserver() {
72
+ if (!this.chartContainer)
73
+ return;
74
+ this.resizeObserver = new ResizeObserver(() => this.chart?.reflow());
75
+ this.resizeObserver.observe(this.chartContainer);
76
+ }
77
+ buildOptions() {
78
+ const self = this;
79
+ return deepMerge({
80
+ chart: { height: this.height },
81
+ title: { text: this.chartTitle || undefined },
82
+ subtitle: { text: this.chartSubtitle || undefined },
83
+ xAxis: { categories: this.categories },
84
+ yAxis: { title: { text: this.yAxisTitle || undefined } },
85
+ tooltip: { shared: true, valueDecimals: 0 },
86
+ plotOptions: {
87
+ arearange: {
88
+ fillOpacity: 0.35,
89
+ },
90
+ series: {
91
+ cursor: 'pointer',
92
+ point: {
93
+ events: {
94
+ click() {
95
+ self.emit('nile-chart-click', {
96
+ point: this,
97
+ category: this.category,
98
+ low: this.low,
99
+ high: this.high,
100
+ seriesName: this.series.name,
101
+ });
102
+ },
103
+ },
104
+ },
105
+ },
106
+ },
107
+ series: this.data.map(s => ({
108
+ type: 'arearange',
109
+ name: s.name,
110
+ data: s.data,
111
+ color: s.color,
112
+ fillOpacity: s.fillOpacity,
113
+ })),
114
+ credits: { enabled: false },
115
+ }, this.options);
116
+ }
117
+ async initChart() {
118
+ if (this.loading || !this.chartContainer)
119
+ return;
120
+ if (!this._hc)
121
+ this._hc = await getHighcharts();
122
+ this.chart = this._hc.chart(this.chartContainer, this.buildOptions());
123
+ this.emit('nile-chart-ready', { chart: this.chart });
124
+ }
125
+ destroyChart() {
126
+ if (this.chart) {
127
+ this.chart.destroy();
128
+ this.chart = null;
129
+ }
130
+ }
131
+ render() {
132
+ if (this.loading) {
133
+ return html `<div class="chart-loading" style="height:${this.height}">Loading...</div>`;
134
+ }
135
+ return html `<div class="chart-container"></div>`;
136
+ }
137
+ };
138
+ NileAreaRangeChart.styles = styles;
139
+ __decorate([
140
+ query('.chart-container')
141
+ ], NileAreaRangeChart.prototype, "chartContainer", void 0);
142
+ __decorate([
143
+ property({ type: Object })
144
+ ], NileAreaRangeChart.prototype, "config", void 0);
145
+ __decorate([
146
+ property({ type: String, attribute: 'chart-title' })
147
+ ], NileAreaRangeChart.prototype, "chartTitle", void 0);
148
+ __decorate([
149
+ property({ type: String, attribute: 'chart-subtitle' })
150
+ ], NileAreaRangeChart.prototype, "chartSubtitle", void 0);
151
+ __decorate([
152
+ property({ type: Array })
153
+ ], NileAreaRangeChart.prototype, "data", void 0);
154
+ __decorate([
155
+ property({ type: Array })
156
+ ], NileAreaRangeChart.prototype, "categories", void 0);
157
+ __decorate([
158
+ property({ type: Object })
159
+ ], NileAreaRangeChart.prototype, "options", void 0);
160
+ __decorate([
161
+ property({ type: Boolean, reflect: true })
162
+ ], NileAreaRangeChart.prototype, "loading", void 0);
163
+ __decorate([
164
+ property({ type: String })
165
+ ], NileAreaRangeChart.prototype, "height", void 0);
166
+ __decorate([
167
+ property({ type: String, attribute: 'y-axis-title' })
168
+ ], NileAreaRangeChart.prototype, "yAxisTitle", void 0);
169
+ NileAreaRangeChart = __decorate([
170
+ customElement('nile-area-range-chart')
171
+ ], NileAreaRangeChart);
172
+ export { NileAreaRangeChart };
173
+ //# sourceMappingURL=nile-area-range-chart.js.map
@@ -0,0 +1,2 @@
1
+ export { NileAreaSplineChart } from './nile-area-spline-chart.js';
2
+ export type { AreaSplineSeriesData } from './nile-area-spline-chart.js';
@@ -0,0 +1,2 @@
1
+ export { NileAreaSplineChart } from './nile-area-spline-chart.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ export declare const styles: import("lit").CSSResult;
@@ -0,0 +1,28 @@
1
+ import { css } from 'lit';
2
+ export const styles = css `
3
+ :host {
4
+ display: block;
5
+ width: 100%;
6
+ position: relative;
7
+ }
8
+
9
+ :host([hidden]) {
10
+ display: none;
11
+ }
12
+
13
+ .chart-container {
14
+ width: 100%;
15
+ min-height: var(--nile-height-200px, var(--ng-height-200px));
16
+ }
17
+
18
+ .chart-loading {
19
+ display: flex;
20
+ align-items: center;
21
+ justify-content: center;
22
+ min-height: inherit;
23
+ color: var(--nile-colors-neutral-700, var(--ng-colors-text-secondary-700));
24
+ font-family: var(--nile-font-family-serif, var(--ng-font-family-body));
25
+ font-size: var(--nile-type-scale-3, var(--ng-font-size-text-sm));
26
+ }
27
+ `;
28
+ //# sourceMappingURL=nile-area-spline-chart.css.js.map
@@ -0,0 +1,41 @@
1
+ import type { CSSResultGroup, PropertyValues, TemplateResult } from 'lit';
2
+ import type Highcharts from 'highcharts';
3
+ import NileElement from '../internal/nile-element.js';
4
+ import type { SeparatedChartConfigInputType } from '../internal/types/separated-chart-config-input.type.js';
5
+ export interface AreaSplineSeriesData {
6
+ name: string;
7
+ data: number[];
8
+ color?: string;
9
+ }
10
+ export declare class NileAreaSplineChart extends NileElement {
11
+ static styles: CSSResultGroup;
12
+ private _hc;
13
+ private chart;
14
+ private resizeObserver;
15
+ private chartContainer;
16
+ config: SeparatedChartConfigInputType | null;
17
+ chartTitle: string;
18
+ chartSubtitle: string;
19
+ data: AreaSplineSeriesData[];
20
+ categories: string[];
21
+ options: Highcharts.Options;
22
+ loading: boolean;
23
+ height: string;
24
+ yAxisTitle: string;
25
+ stacked: boolean;
26
+ private applyConfig;
27
+ connectedCallback(): void;
28
+ disconnectedCallback(): void;
29
+ protected firstUpdated(): void;
30
+ protected updated(changedProperties: PropertyValues): void;
31
+ private setupResizeObserver;
32
+ private buildOptions;
33
+ private initChart;
34
+ private destroyChart;
35
+ render(): TemplateResult;
36
+ }
37
+ declare global {
38
+ interface HTMLElementTagNameMap {
39
+ 'nile-area-spline-chart': NileAreaSplineChart;
40
+ }
41
+ }
@@ -0,0 +1,174 @@
1
+ import { __decorate } from "tslib";
2
+ import { customElement, property, query } from 'lit/decorators.js';
3
+ import { html } from 'lit';
4
+ import NileElement from '../internal/nile-element.js';
5
+ import { applySeparatedChartConfig } from '../internal/separated-chart-config.js';
6
+ import { getHighcharts } from '../internal/highcharts-provider.js';
7
+ import { deepMerge } from '../internal/utils.js';
8
+ import { styles } from './nile-area-spline-chart.css.js';
9
+ let NileAreaSplineChart = class NileAreaSplineChart extends NileElement {
10
+ constructor() {
11
+ super(...arguments);
12
+ this._hc = null;
13
+ this.chart = null;
14
+ this.resizeObserver = null;
15
+ this.config = null;
16
+ this.chartTitle = '';
17
+ this.chartSubtitle = '';
18
+ this.data = [];
19
+ this.categories = [];
20
+ this.options = {};
21
+ this.loading = false;
22
+ this.height = '400px';
23
+ this.yAxisTitle = '';
24
+ this.stacked = false;
25
+ }
26
+ applyConfig(cfg) {
27
+ applySeparatedChartConfig(this, cfg);
28
+ }
29
+ connectedCallback() {
30
+ super.connectedCallback();
31
+ if (this.config)
32
+ this.applyConfig(this.config);
33
+ }
34
+ disconnectedCallback() {
35
+ super.disconnectedCallback();
36
+ this.destroyChart();
37
+ this.resizeObserver?.disconnect();
38
+ this.resizeObserver = null;
39
+ }
40
+ firstUpdated() {
41
+ this.initChart();
42
+ this.setupResizeObserver();
43
+ }
44
+ updated(changedProperties) {
45
+ if (changedProperties.has('config') && this.config) {
46
+ this.applyConfig(this.config);
47
+ return;
48
+ }
49
+ const props = [
50
+ 'data',
51
+ 'categories',
52
+ 'chartTitle',
53
+ 'chartSubtitle',
54
+ 'options',
55
+ 'height',
56
+ 'yAxisTitle',
57
+ 'stacked',
58
+ 'loading',
59
+ ];
60
+ if (!props.some(p => changedProperties.has(p)))
61
+ return;
62
+ if (this.loading) {
63
+ this.destroyChart();
64
+ return;
65
+ }
66
+ if (this.chart) {
67
+ this.chart.update(this.buildOptions(), true, true);
68
+ }
69
+ else {
70
+ this.initChart();
71
+ }
72
+ }
73
+ setupResizeObserver() {
74
+ if (!this.chartContainer)
75
+ return;
76
+ this.resizeObserver = new ResizeObserver(() => this.chart?.reflow());
77
+ this.resizeObserver.observe(this.chartContainer);
78
+ }
79
+ buildOptions() {
80
+ const self = this;
81
+ return deepMerge({
82
+ chart: { type: 'areaspline', height: this.height },
83
+ title: { text: this.chartTitle || undefined },
84
+ subtitle: { text: this.chartSubtitle || undefined },
85
+ xAxis: { categories: this.categories },
86
+ yAxis: { title: { text: this.yAxisTitle || undefined } },
87
+ tooltip: { shared: true },
88
+ plotOptions: {
89
+ areaspline: { stacking: this.stacked ? 'normal' : undefined, fillOpacity: 0.25 },
90
+ series: {
91
+ cursor: 'pointer',
92
+ point: {
93
+ events: {
94
+ click() {
95
+ self.emit('nile-chart-click', {
96
+ point: this,
97
+ category: this.category,
98
+ value: this.y,
99
+ seriesName: this.series.name,
100
+ });
101
+ },
102
+ },
103
+ },
104
+ },
105
+ },
106
+ series: this.data.map(s => ({
107
+ type: 'areaspline',
108
+ name: s.name,
109
+ data: s.data,
110
+ color: s.color,
111
+ })),
112
+ credits: { enabled: false },
113
+ }, this.options);
114
+ }
115
+ async initChart() {
116
+ if (this.loading || !this.chartContainer)
117
+ return;
118
+ if (!this._hc)
119
+ this._hc = await getHighcharts();
120
+ this.chart = this._hc.chart(this.chartContainer, this.buildOptions());
121
+ this.emit('nile-chart-ready', { chart: this.chart });
122
+ }
123
+ destroyChart() {
124
+ if (this.chart) {
125
+ this.chart.destroy();
126
+ this.chart = null;
127
+ }
128
+ }
129
+ render() {
130
+ if (this.loading) {
131
+ return html `<div class="chart-loading" style="height:${this.height}">Loading...</div>`;
132
+ }
133
+ return html `<div class="chart-container"></div>`;
134
+ }
135
+ };
136
+ NileAreaSplineChart.styles = styles;
137
+ __decorate([
138
+ query('.chart-container')
139
+ ], NileAreaSplineChart.prototype, "chartContainer", void 0);
140
+ __decorate([
141
+ property({ type: Object })
142
+ ], NileAreaSplineChart.prototype, "config", void 0);
143
+ __decorate([
144
+ property({ type: String, attribute: 'chart-title' })
145
+ ], NileAreaSplineChart.prototype, "chartTitle", void 0);
146
+ __decorate([
147
+ property({ type: String, attribute: 'chart-subtitle' })
148
+ ], NileAreaSplineChart.prototype, "chartSubtitle", void 0);
149
+ __decorate([
150
+ property({ type: Array })
151
+ ], NileAreaSplineChart.prototype, "data", void 0);
152
+ __decorate([
153
+ property({ type: Array })
154
+ ], NileAreaSplineChart.prototype, "categories", void 0);
155
+ __decorate([
156
+ property({ type: Object })
157
+ ], NileAreaSplineChart.prototype, "options", void 0);
158
+ __decorate([
159
+ property({ type: Boolean, reflect: true })
160
+ ], NileAreaSplineChart.prototype, "loading", void 0);
161
+ __decorate([
162
+ property({ type: String })
163
+ ], NileAreaSplineChart.prototype, "height", void 0);
164
+ __decorate([
165
+ property({ type: String, attribute: 'y-axis-title' })
166
+ ], NileAreaSplineChart.prototype, "yAxisTitle", void 0);
167
+ __decorate([
168
+ property({ type: Boolean })
169
+ ], NileAreaSplineChart.prototype, "stacked", void 0);
170
+ NileAreaSplineChart = __decorate([
171
+ customElement('nile-area-spline-chart')
172
+ ], NileAreaSplineChart);
173
+ export { NileAreaSplineChart };
174
+ //# sourceMappingURL=nile-area-spline-chart.js.map