@aquera/nile-visualization 0.1.0 → 0.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 (188) hide show
  1. package/dist/src/index.d.ts +27 -2
  2. package/dist/src/index.js +15 -0
  3. package/dist/src/internal/highcharts-provider.js +45 -0
  4. package/dist/src/internal/separated-chart-config.d.ts +5 -0
  5. package/dist/src/internal/separated-chart-config.js +16 -0
  6. package/dist/src/internal/types/ai-config.type.d.ts +9 -0
  7. package/dist/src/internal/types/ai-config.type.js +2 -0
  8. package/dist/src/internal/types/all-chart-config.type.d.ts +8 -0
  9. package/dist/src/internal/types/all-chart-config.type.js +2 -0
  10. package/dist/src/internal/types/aq-config.type.d.ts +13 -0
  11. package/dist/src/internal/types/aq-config.type.js +2 -0
  12. package/dist/src/internal/types/chart-anomaly-config.type.d.ts +13 -0
  13. package/dist/src/internal/types/chart-anomaly-config.type.js +2 -0
  14. package/dist/src/internal/types/chart-area-config.type.d.ts +13 -0
  15. package/dist/src/internal/types/chart-area-config.type.js +2 -0
  16. package/dist/src/internal/types/chart-bar-config.type.d.ts +12 -0
  17. package/dist/src/internal/types/chart-bar-config.type.js +2 -0
  18. package/dist/src/internal/types/chart-bellcurve-config.type.d.ts +19 -0
  19. package/dist/src/internal/types/chart-bellcurve-config.type.js +2 -0
  20. package/dist/src/internal/types/chart-boxplot-config.type.d.ts +15 -0
  21. package/dist/src/internal/types/chart-boxplot-config.type.js +2 -0
  22. package/dist/src/internal/types/chart-bubble-config.type.d.ts +12 -0
  23. package/dist/src/internal/types/chart-bubble-config.type.js +2 -0
  24. package/dist/src/internal/types/chart-cluster-config.type.d.ts +15 -0
  25. package/dist/src/internal/types/chart-cluster-config.type.js +2 -0
  26. package/dist/src/internal/types/chart-column-config.type.d.ts +12 -0
  27. package/dist/src/internal/types/chart-column-config.type.js +2 -0
  28. package/dist/src/internal/types/chart-config.type.d.ts +16 -0
  29. package/dist/src/internal/types/chart-config.type.js +2 -0
  30. package/dist/src/internal/types/chart-donut-config.type.d.ts +14 -0
  31. package/dist/src/internal/types/chart-donut-config.type.js +2 -0
  32. package/dist/src/internal/types/chart-dumbbell-config.type.d.ts +16 -0
  33. package/dist/src/internal/types/chart-dumbbell-config.type.js +2 -0
  34. package/dist/src/internal/types/chart-fan-config.type.d.ts +17 -0
  35. package/dist/src/internal/types/chart-fan-config.type.js +2 -0
  36. package/dist/src/internal/types/chart-flame-config.type.d.ts +14 -0
  37. package/dist/src/internal/types/chart-flame-config.type.js +2 -0
  38. package/dist/src/internal/types/chart-funnel-config.type.d.ts +12 -0
  39. package/dist/src/internal/types/chart-funnel-config.type.js +2 -0
  40. package/dist/src/internal/types/chart-gauge-config.type.d.ts +14 -0
  41. package/dist/src/internal/types/chart-gauge-config.type.js +2 -0
  42. package/dist/src/internal/types/chart-histogram-config.type.d.ts +19 -0
  43. package/dist/src/internal/types/chart-histogram-config.type.js +2 -0
  44. package/dist/src/internal/types/chart-kpi-config.type.d.ts +21 -0
  45. package/dist/src/internal/types/chart-kpi-config.type.js +2 -0
  46. package/dist/src/internal/types/chart-line-config.type.d.ts +12 -0
  47. package/dist/src/internal/types/chart-line-config.type.js +2 -0
  48. package/dist/src/internal/types/chart-pie-config.type.d.ts +13 -0
  49. package/dist/src/internal/types/chart-pie-config.type.js +2 -0
  50. package/dist/src/internal/types/chart-radar-config.type.d.ts +12 -0
  51. package/dist/src/internal/types/chart-radar-config.type.js +2 -0
  52. package/dist/src/internal/types/chart-scatter-config.type.d.ts +12 -0
  53. package/dist/src/internal/types/chart-scatter-config.type.js +2 -0
  54. package/dist/src/internal/types/chart-spiderweb-config.type.d.ts +12 -0
  55. package/dist/src/internal/types/chart-spiderweb-config.type.js +2 -0
  56. package/dist/src/internal/types/chart-spline-config.type.d.ts +12 -0
  57. package/dist/src/internal/types/chart-spline-config.type.js +2 -0
  58. package/dist/src/internal/types/chart-stacked-config.type.d.ts +15 -0
  59. package/dist/src/internal/types/chart-stacked-config.type.js +2 -0
  60. package/dist/src/internal/types/chart-timeline-config.type.d.ts +15 -0
  61. package/dist/src/internal/types/chart-timeline-config.type.js +2 -0
  62. package/dist/src/internal/types/chart-trendline-config.type.d.ts +13 -0
  63. package/dist/src/internal/types/chart-trendline-config.type.js +2 -0
  64. package/dist/src/internal/types/chart-waterfall-config.type.d.ts +11 -0
  65. package/dist/src/internal/types/chart-waterfall-config.type.js +2 -0
  66. package/dist/src/internal/types/index.d.ts +35 -0
  67. package/dist/src/internal/types/index.js +2 -0
  68. package/dist/src/internal/types/nile-ai-widgets-config-input.type.d.ts +23 -0
  69. package/dist/src/internal/types/nile-ai-widgets-config-input.type.js +2 -0
  70. package/dist/src/internal/types/nile-chart-config-input.type.d.ts +7 -0
  71. package/dist/src/internal/types/nile-chart-config-input.type.js +2 -0
  72. package/dist/src/internal/types/primitive-chart-config.type.d.ts +16 -0
  73. package/dist/src/internal/types/primitive-chart-config.type.js +2 -0
  74. package/dist/src/internal/types/separated-chart-config-input.type.d.ts +7 -0
  75. package/dist/src/internal/types/separated-chart-config-input.type.js +2 -0
  76. package/dist/src/internal/types/switchable-config.type.d.ts +8 -0
  77. package/dist/src/internal/types/switchable-config.type.js +2 -0
  78. package/dist/src/nile-ai-panel/index.d.ts +1 -0
  79. package/dist/src/nile-ai-panel/nile-ai-panel.d.ts +8 -1
  80. package/dist/src/nile-ai-panel/nile-ai-panel.js +34 -0
  81. package/dist/src/nile-ai-sender/index.d.ts +1 -0
  82. package/dist/src/nile-ai-sender/nile-ai-sender.d.ts +8 -1
  83. package/dist/src/nile-ai-sender/nile-ai-sender.js +30 -0
  84. package/dist/src/nile-anomaly-chart/nile-anomaly-chart.d.ts +6 -0
  85. package/dist/src/nile-anomaly-chart/nile-anomaly-chart.js +41 -0
  86. package/dist/src/nile-area-chart/nile-area-chart.d.ts +6 -0
  87. package/dist/src/nile-area-chart/nile-area-chart.js +41 -0
  88. package/dist/src/nile-bar-chart/nile-bar-chart.d.ts +6 -0
  89. package/dist/src/nile-bar-chart/nile-bar-chart.js +40 -1
  90. package/dist/src/nile-bellcurve-chart/index.d.ts +2 -0
  91. package/dist/src/nile-bellcurve-chart/index.js +2 -0
  92. package/dist/src/nile-bellcurve-chart/nile-bellcurve-chart.css.d.ts +1 -0
  93. package/dist/src/nile-bellcurve-chart/nile-bellcurve-chart.css.js +28 -0
  94. package/dist/src/nile-bellcurve-chart/nile-bellcurve-chart.d.ts +49 -0
  95. package/dist/src/nile-bellcurve-chart/nile-bellcurve-chart.js +258 -0
  96. package/dist/src/nile-boxplot-chart/index.d.ts +2 -0
  97. package/dist/src/nile-boxplot-chart/index.js +2 -0
  98. package/dist/src/nile-boxplot-chart/nile-boxplot-chart.css.d.ts +1 -0
  99. package/dist/src/nile-boxplot-chart/nile-boxplot-chart.css.js +28 -0
  100. package/dist/src/nile-boxplot-chart/nile-boxplot-chart.d.ts +58 -0
  101. package/dist/src/nile-boxplot-chart/nile-boxplot-chart.js +235 -0
  102. package/dist/src/nile-bubble-chart/nile-bubble-chart.d.ts +6 -0
  103. package/dist/src/nile-bubble-chart/nile-bubble-chart.js +39 -0
  104. package/dist/src/nile-chart/index.d.ts +3 -1
  105. package/dist/src/nile-chart/index.js +1 -0
  106. package/dist/src/nile-chart/nile-chart-config-builder.d.ts +4 -0
  107. package/dist/src/nile-chart/nile-chart-config-builder.js +13 -0
  108. package/dist/src/nile-chart/nile-chart-config.d.ts +76 -2
  109. package/dist/src/nile-chart/nile-chart.d.ts +16 -2
  110. package/dist/src/nile-chart/nile-chart.js +144 -14
  111. package/dist/src/nile-cluster-chart/index.d.ts +2 -0
  112. package/dist/src/nile-cluster-chart/index.js +2 -0
  113. package/dist/src/nile-cluster-chart/nile-cluster-chart.css.d.ts +1 -0
  114. package/dist/src/nile-cluster-chart/nile-cluster-chart.css.js +28 -0
  115. package/dist/src/nile-cluster-chart/nile-cluster-chart.d.ts +46 -0
  116. package/dist/src/nile-cluster-chart/nile-cluster-chart.js +196 -0
  117. package/dist/src/nile-column-chart/nile-column-chart.d.ts +6 -0
  118. package/dist/src/nile-column-chart/nile-column-chart.js +39 -0
  119. package/dist/src/nile-donut-chart/nile-donut-chart.d.ts +6 -0
  120. package/dist/src/nile-donut-chart/nile-donut-chart.js +43 -0
  121. package/dist/src/nile-dumbbell-chart/index.d.ts +2 -0
  122. package/dist/src/nile-dumbbell-chart/index.js +2 -0
  123. package/dist/src/nile-dumbbell-chart/nile-dumbbell-chart.css.d.ts +1 -0
  124. package/dist/src/nile-dumbbell-chart/nile-dumbbell-chart.css.js +28 -0
  125. package/dist/src/nile-dumbbell-chart/nile-dumbbell-chart.d.ts +50 -0
  126. package/dist/src/nile-dumbbell-chart/nile-dumbbell-chart.js +217 -0
  127. package/dist/src/nile-fan-chart/index.d.ts +2 -0
  128. package/dist/src/nile-fan-chart/index.js +2 -0
  129. package/dist/src/nile-fan-chart/nile-fan-chart.css.d.ts +1 -0
  130. package/dist/src/nile-fan-chart/nile-fan-chart.css.js +28 -0
  131. package/dist/src/nile-fan-chart/nile-fan-chart.d.ts +65 -0
  132. package/dist/src/nile-fan-chart/nile-fan-chart.js +257 -0
  133. package/dist/src/nile-flame-chart/index.d.ts +2 -0
  134. package/dist/src/nile-flame-chart/index.js +2 -0
  135. package/dist/src/nile-flame-chart/nile-flame-chart.css.d.ts +1 -0
  136. package/dist/src/nile-flame-chart/nile-flame-chart.css.js +28 -0
  137. package/dist/src/nile-flame-chart/nile-flame-chart.d.ts +60 -0
  138. package/dist/src/nile-flame-chart/nile-flame-chart.js +311 -0
  139. package/dist/src/nile-funnel-chart/index.d.ts +2 -0
  140. package/dist/src/nile-funnel-chart/index.js +2 -0
  141. package/dist/src/nile-funnel-chart/nile-funnel-chart.css.d.ts +1 -0
  142. package/dist/src/nile-funnel-chart/nile-funnel-chart.css.js +28 -0
  143. package/dist/src/nile-funnel-chart/nile-funnel-chart.d.ts +42 -0
  144. package/dist/src/nile-funnel-chart/nile-funnel-chart.js +189 -0
  145. package/dist/src/nile-gauge-chart/nile-gauge-chart.d.ts +6 -0
  146. package/dist/src/nile-gauge-chart/nile-gauge-chart.js +43 -0
  147. package/dist/src/nile-histogram-chart/index.d.ts +2 -0
  148. package/dist/src/nile-histogram-chart/index.js +2 -0
  149. package/dist/src/nile-histogram-chart/nile-histogram-chart.css.d.ts +1 -0
  150. package/dist/src/nile-histogram-chart/nile-histogram-chart.css.js +28 -0
  151. package/dist/src/nile-histogram-chart/nile-histogram-chart.d.ts +53 -0
  152. package/dist/src/nile-histogram-chart/nile-histogram-chart.js +263 -0
  153. package/dist/src/nile-kpi-chart/index.d.ts +1 -1
  154. package/dist/src/nile-kpi-chart/nile-kpi-chart.d.ts +32 -0
  155. package/dist/src/nile-kpi-chart/nile-kpi-chart.js +60 -0
  156. package/dist/src/nile-line-chart/nile-line-chart.d.ts +6 -0
  157. package/dist/src/nile-line-chart/nile-line-chart.js +39 -0
  158. package/dist/src/nile-pie-chart/nile-pie-chart.d.ts +6 -0
  159. package/dist/src/nile-pie-chart/nile-pie-chart.js +41 -0
  160. package/dist/src/nile-radar-chart/nile-radar-chart.d.ts +6 -0
  161. package/dist/src/nile-radar-chart/nile-radar-chart.js +39 -0
  162. package/dist/src/nile-scatter-chart/nile-scatter-chart.d.ts +6 -0
  163. package/dist/src/nile-scatter-chart/nile-scatter-chart.js +39 -0
  164. package/dist/src/nile-spiderweb-chart/index.d.ts +2 -0
  165. package/dist/src/nile-spiderweb-chart/index.js +2 -0
  166. package/dist/src/nile-spiderweb-chart/nile-spiderweb-chart.css.d.ts +1 -0
  167. package/dist/src/nile-spiderweb-chart/nile-spiderweb-chart.css.js +28 -0
  168. package/dist/src/nile-spiderweb-chart/nile-spiderweb-chart.d.ts +46 -0
  169. package/dist/src/nile-spiderweb-chart/nile-spiderweb-chart.js +191 -0
  170. package/dist/src/nile-spline-chart/nile-spline-chart.d.ts +6 -0
  171. package/dist/src/nile-spline-chart/nile-spline-chart.js +39 -0
  172. package/dist/src/nile-stacked-chart/index.d.ts +2 -0
  173. package/dist/src/nile-stacked-chart/index.js +2 -0
  174. package/dist/src/nile-stacked-chart/nile-stacked-chart.css.d.ts +1 -0
  175. package/dist/src/nile-stacked-chart/nile-stacked-chart.css.js +28 -0
  176. package/dist/src/nile-stacked-chart/nile-stacked-chart.d.ts +47 -0
  177. package/dist/src/nile-stacked-chart/nile-stacked-chart.js +216 -0
  178. package/dist/src/nile-timeline-chart/index.d.ts +2 -0
  179. package/dist/src/nile-timeline-chart/index.js +2 -0
  180. package/dist/src/nile-timeline-chart/nile-timeline-chart.css.d.ts +1 -0
  181. package/dist/src/nile-timeline-chart/nile-timeline-chart.css.js +28 -0
  182. package/dist/src/nile-timeline-chart/nile-timeline-chart.d.ts +58 -0
  183. package/dist/src/nile-timeline-chart/nile-timeline-chart.js +239 -0
  184. package/dist/src/nile-trendline-chart/nile-trendline-chart.d.ts +6 -0
  185. package/dist/src/nile-trendline-chart/nile-trendline-chart.js +41 -0
  186. package/dist/src/nile-waterfall-chart/nile-waterfall-chart.d.ts +6 -0
  187. package/dist/src/nile-waterfall-chart/nile-waterfall-chart.js +37 -0
  188. package/package.json +12 -1
@@ -11,6 +11,8 @@ let NileBarChart = class NileBarChart extends NileElement {
11
11
  this._hc = null;
12
12
  this.chart = null;
13
13
  this.resizeObserver = null;
14
+ /** Full chart configuration. Accepts separated { chart, aq } input. */
15
+ this.config = null;
14
16
  /** The chart title displayed above the chart. */
15
17
  this.chartTitle = '';
16
18
  /** The subtitle displayed below the title. */
@@ -28,6 +30,36 @@ let NileBarChart = class NileBarChart extends NileElement {
28
30
  /** Y-axis title text. */
29
31
  this.yAxisTitle = '';
30
32
  }
33
+ /** Apply { chart, aq } config to individual properties. */
34
+ applyConfig(cfg) {
35
+ const { chart: c, aq } = cfg;
36
+ if (c) {
37
+ const bar = c;
38
+ if (bar.data)
39
+ this.data = bar.data;
40
+ if (bar.categories)
41
+ this.categories = bar.categories;
42
+ if (bar.yAxisTitle)
43
+ this.yAxisTitle = bar.yAxisTitle;
44
+ if (bar.height)
45
+ this.height = bar.height;
46
+ if (bar.loading !== undefined)
47
+ this.loading = bar.loading;
48
+ if (bar.options)
49
+ this.options = bar.options;
50
+ }
51
+ if (aq) {
52
+ if (aq.chartTitle)
53
+ this.chartTitle = aq.chartTitle;
54
+ if (aq.chartSubtitle)
55
+ this.chartSubtitle = aq.chartSubtitle;
56
+ }
57
+ }
58
+ connectedCallback() {
59
+ super.connectedCallback();
60
+ if (this.config)
61
+ this.applyConfig(this.config);
62
+ }
31
63
  disconnectedCallback() {
32
64
  super.disconnectedCallback();
33
65
  this.destroyChart();
@@ -39,6 +71,10 @@ let NileBarChart = class NileBarChart extends NileElement {
39
71
  this.setupResizeObserver();
40
72
  }
41
73
  updated(changedProperties) {
74
+ if (changedProperties.has('config') && this.config) {
75
+ this.applyConfig(this.config);
76
+ return;
77
+ }
42
78
  const chartProps = [
43
79
  'data',
44
80
  'categories',
@@ -59,7 +95,7 @@ let NileBarChart = class NileBarChart extends NileElement {
59
95
  if (this.chart) {
60
96
  this.chart.update(this.buildOptions(), true, true);
61
97
  }
62
- else {
98
+ else if (this.data.length > 0) {
63
99
  this.initChart();
64
100
  }
65
101
  }
@@ -154,6 +190,9 @@ NileBarChart.styles = styles;
154
190
  __decorate([
155
191
  query('.chart-container')
156
192
  ], NileBarChart.prototype, "chartContainer", void 0);
193
+ __decorate([
194
+ property({ type: Object })
195
+ ], NileBarChart.prototype, "config", void 0);
157
196
  __decorate([
158
197
  property({ type: String, attribute: 'chart-title' })
159
198
  ], NileBarChart.prototype, "chartTitle", void 0);
@@ -0,0 +1,2 @@
1
+ export { NileBellcurveChart } from './nile-bellcurve-chart.js';
2
+ export type { BellcurveSamples } from './nile-bellcurve-chart.js';
@@ -0,0 +1,2 @@
1
+ export { NileBellcurveChart } from './nile-bellcurve-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-bellcurve-chart.css.js.map
@@ -0,0 +1,49 @@
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
+ /** One raw measurement per entry; used to derive the curve’s mean and spread. */
6
+ export type BellcurveSamples = number[];
7
+ export declare class NileBellcurveChart extends NileElement {
8
+ static styles: CSSResultGroup;
9
+ private _hc;
10
+ private chart;
11
+ private resizeObserver;
12
+ private chartContainer;
13
+ /** Full chart configuration. Accepts separated `{ chart, aq }` input. */
14
+ config: SeparatedChartConfigInputType | null;
15
+ chartTitle: string;
16
+ chartSubtitle: string;
17
+ /** Raw numeric observations; mean and standard deviation are derived for the fitted curve. */
18
+ data: BellcurveSamples;
19
+ options: Highcharts.Options;
20
+ loading: boolean;
21
+ height: string;
22
+ xAxisTitle: string;
23
+ yAxisTitle: string;
24
+ bellcurveSeriesName: string;
25
+ sourceSeriesName: string;
26
+ bellcurveColor: string;
27
+ bellcurveFill: string;
28
+ /** Standard deviations from the mean spanned by the curve (Highcharts default: 3). */
29
+ intervals: number;
30
+ /** Samples per interval; higher values yield a smoother curve. */
31
+ pointsInInterval: number;
32
+ showLegend: boolean;
33
+ /** Apply `{ chart, aq }` config to individual properties. */
34
+ private applyConfig;
35
+ connectedCallback(): void;
36
+ disconnectedCallback(): void;
37
+ protected firstUpdated(): void;
38
+ protected updated(changedProperties: PropertyValues): void;
39
+ private setupResizeObserver;
40
+ private buildOptions;
41
+ private initChart;
42
+ private destroyChart;
43
+ render(): TemplateResult;
44
+ }
45
+ declare global {
46
+ interface HTMLElementTagNameMap {
47
+ 'nile-bellcurve-chart': NileBellcurveChart;
48
+ }
49
+ }
@@ -0,0 +1,258 @@
1
+ import { __decorate } from "tslib";
2
+ import { customElement, property, query } from 'lit/decorators.js';
3
+ import { html } from 'lit';
4
+ import { getHighcharts } from '../internal/highcharts-provider.js';
5
+ import NileElement from '../internal/nile-element.js';
6
+ import { applySeparatedChartConfig } from '../internal/separated-chart-config.js';
7
+ import { deepMerge } from '../internal/utils.js';
8
+ import { styles } from './nile-bellcurve-chart.css.js';
9
+ const BELLCURVE_BASE_ID = 'nile-bellcurve-base';
10
+ let NileBellcurveChart = class NileBellcurveChart extends NileElement {
11
+ constructor() {
12
+ super(...arguments);
13
+ this._hc = null;
14
+ this.chart = null;
15
+ this.resizeObserver = null;
16
+ /** Full chart configuration. Accepts separated `{ chart, aq }` input. */
17
+ this.config = null;
18
+ this.chartTitle = '';
19
+ this.chartSubtitle = '';
20
+ /** Raw numeric observations; mean and standard deviation are derived for the fitted curve. */
21
+ this.data = [];
22
+ this.options = {};
23
+ this.loading = false;
24
+ this.height = '400px';
25
+ this.xAxisTitle = '';
26
+ this.yAxisTitle = '';
27
+ this.bellcurveSeriesName = '';
28
+ this.sourceSeriesName = '';
29
+ this.bellcurveColor = '#6366f1';
30
+ this.bellcurveFill = 'rgba(99, 102, 241, 0.2)';
31
+ /** Standard deviations from the mean spanned by the curve (Highcharts default: 3). */
32
+ this.intervals = 3;
33
+ /** Samples per interval; higher values yield a smoother curve. */
34
+ this.pointsInInterval = 40;
35
+ this.showLegend = true;
36
+ }
37
+ /** Apply `{ chart, aq }` config to individual properties. */
38
+ applyConfig(cfg) {
39
+ applySeparatedChartConfig(this, cfg);
40
+ }
41
+ connectedCallback() {
42
+ super.connectedCallback();
43
+ if (this.config)
44
+ this.applyConfig(this.config);
45
+ }
46
+ disconnectedCallback() {
47
+ super.disconnectedCallback();
48
+ this.destroyChart();
49
+ this.resizeObserver?.disconnect();
50
+ this.resizeObserver = null;
51
+ }
52
+ firstUpdated() {
53
+ this.initChart();
54
+ this.setupResizeObserver();
55
+ }
56
+ updated(changedProperties) {
57
+ if (changedProperties.has('config') && this.config) {
58
+ this.applyConfig(this.config);
59
+ return;
60
+ }
61
+ const props = [
62
+ 'data',
63
+ 'chartTitle',
64
+ 'chartSubtitle',
65
+ 'options',
66
+ 'height',
67
+ 'xAxisTitle',
68
+ 'yAxisTitle',
69
+ 'bellcurveSeriesName',
70
+ 'sourceSeriesName',
71
+ 'bellcurveColor',
72
+ 'bellcurveFill',
73
+ 'intervals',
74
+ 'pointsInInterval',
75
+ 'showLegend',
76
+ 'loading',
77
+ ];
78
+ if (!props.some(p => changedProperties.has(p)))
79
+ return;
80
+ if (this.loading) {
81
+ this.destroyChart();
82
+ return;
83
+ }
84
+ if (this.chart) {
85
+ this.chart.update(this.buildOptions(), true, true);
86
+ }
87
+ else {
88
+ this.initChart();
89
+ }
90
+ }
91
+ setupResizeObserver() {
92
+ if (!this.chartContainer)
93
+ return;
94
+ this.resizeObserver = new ResizeObserver(() => {
95
+ this.chart?.reflow();
96
+ });
97
+ this.resizeObserver.observe(this.chartContainer);
98
+ }
99
+ buildOptions() {
100
+ const self = this;
101
+ // Bell curve derives mean & σ from the **y** values of the base series (see Highcharts docs).
102
+ // Do not use [x, 0] — that makes every y zero and collapses the curve.
103
+ const scatterData = this.data.map(v => [v, v]);
104
+ const pts = this.pointsInInterval > 0 ? this.pointsInInterval : 40;
105
+ const iv = this.intervals > 0 ? this.intervals : 3;
106
+ return deepMerge({
107
+ chart: { height: this.height },
108
+ title: { text: this.chartTitle || undefined },
109
+ subtitle: { text: this.chartSubtitle || undefined },
110
+ legend: { enabled: this.showLegend },
111
+ xAxis: [
112
+ {
113
+ title: { text: this.xAxisTitle || undefined },
114
+ gridLineWidth: 1,
115
+ },
116
+ ],
117
+ yAxis: [
118
+ {
119
+ title: { text: this.yAxisTitle || 'Density' },
120
+ min: 0,
121
+ gridLineWidth: 1,
122
+ },
123
+ ],
124
+ tooltip: {
125
+ headerFormat: '',
126
+ pointFormat: '<span style="color:{point.color}">●</span> <b>{series.name}</b><br/>' +
127
+ 'x: <b>{point.x:.2f}</b><br/>y: <b>{point.y:.4f}</b>',
128
+ },
129
+ plotOptions: {
130
+ bellcurve: {
131
+ color: this.bellcurveColor,
132
+ fillColor: this.bellcurveFill,
133
+ lineWidth: 2,
134
+ marker: { enabled: false },
135
+ cursor: 'pointer',
136
+ point: {
137
+ events: {
138
+ click() {
139
+ self.emit('nile-chart-click', {
140
+ point: this,
141
+ x: this.x,
142
+ value: this.y,
143
+ seriesName: this.series.name,
144
+ });
145
+ },
146
+ },
147
+ },
148
+ },
149
+ scatter: {
150
+ marker: { enabled: false, radius: 0 },
151
+ enableMouseTracking: false,
152
+ },
153
+ },
154
+ series: [
155
+ {
156
+ type: 'scatter',
157
+ id: BELLCURVE_BASE_ID,
158
+ name: this.sourceSeriesName || 'Observations',
159
+ data: scatterData,
160
+ xAxis: 0,
161
+ yAxis: 0,
162
+ visible: false,
163
+ showInLegend: false,
164
+ },
165
+ {
166
+ type: 'bellcurve',
167
+ name: this.bellcurveSeriesName || 'Normal distribution',
168
+ baseSeries: BELLCURVE_BASE_ID,
169
+ xAxis: 0,
170
+ yAxis: 0,
171
+ intervals: iv,
172
+ pointsInInterval: pts,
173
+ color: this.bellcurveColor,
174
+ fillColor: this.bellcurveFill,
175
+ zIndex: 1,
176
+ },
177
+ ],
178
+ credits: { enabled: false },
179
+ }, this.options);
180
+ }
181
+ async initChart() {
182
+ if (this.loading || !this.chartContainer)
183
+ return;
184
+ if (!this._hc)
185
+ this._hc = await getHighcharts();
186
+ this.chart = this._hc.chart(this.chartContainer, this.buildOptions());
187
+ this.emit('nile-chart-ready', { chart: this.chart });
188
+ }
189
+ destroyChart() {
190
+ if (this.chart) {
191
+ this.chart.destroy();
192
+ this.chart = null;
193
+ }
194
+ }
195
+ render() {
196
+ if (this.loading) {
197
+ return html `<div class="chart-loading" style="height:${this.height}">Loading...</div>`;
198
+ }
199
+ return html `<div class="chart-container"></div>`;
200
+ }
201
+ };
202
+ NileBellcurveChart.styles = styles;
203
+ __decorate([
204
+ query('.chart-container')
205
+ ], NileBellcurveChart.prototype, "chartContainer", void 0);
206
+ __decorate([
207
+ property({ type: Object })
208
+ ], NileBellcurveChart.prototype, "config", void 0);
209
+ __decorate([
210
+ property({ type: String, attribute: 'chart-title' })
211
+ ], NileBellcurveChart.prototype, "chartTitle", void 0);
212
+ __decorate([
213
+ property({ type: String, attribute: 'chart-subtitle' })
214
+ ], NileBellcurveChart.prototype, "chartSubtitle", void 0);
215
+ __decorate([
216
+ property({ type: Array })
217
+ ], NileBellcurveChart.prototype, "data", void 0);
218
+ __decorate([
219
+ property({ type: Object })
220
+ ], NileBellcurveChart.prototype, "options", void 0);
221
+ __decorate([
222
+ property({ type: Boolean, reflect: true })
223
+ ], NileBellcurveChart.prototype, "loading", void 0);
224
+ __decorate([
225
+ property({ type: String })
226
+ ], NileBellcurveChart.prototype, "height", void 0);
227
+ __decorate([
228
+ property({ type: String, attribute: 'x-axis-title' })
229
+ ], NileBellcurveChart.prototype, "xAxisTitle", void 0);
230
+ __decorate([
231
+ property({ type: String, attribute: 'y-axis-title' })
232
+ ], NileBellcurveChart.prototype, "yAxisTitle", void 0);
233
+ __decorate([
234
+ property({ type: String, attribute: 'bellcurve-name' })
235
+ ], NileBellcurveChart.prototype, "bellcurveSeriesName", void 0);
236
+ __decorate([
237
+ property({ type: String, attribute: 'source-name' })
238
+ ], NileBellcurveChart.prototype, "sourceSeriesName", void 0);
239
+ __decorate([
240
+ property({ type: String, attribute: 'bellcurve-color' })
241
+ ], NileBellcurveChart.prototype, "bellcurveColor", void 0);
242
+ __decorate([
243
+ property({ type: String, attribute: 'bellcurve-fill' })
244
+ ], NileBellcurveChart.prototype, "bellcurveFill", void 0);
245
+ __decorate([
246
+ property({ type: Number })
247
+ ], NileBellcurveChart.prototype, "intervals", void 0);
248
+ __decorate([
249
+ property({ type: Number, attribute: 'points-in-interval' })
250
+ ], NileBellcurveChart.prototype, "pointsInInterval", void 0);
251
+ __decorate([
252
+ property({ type: Boolean, attribute: 'show-legend' })
253
+ ], NileBellcurveChart.prototype, "showLegend", void 0);
254
+ NileBellcurveChart = __decorate([
255
+ customElement('nile-bellcurve-chart')
256
+ ], NileBellcurveChart);
257
+ export { NileBellcurveChart };
258
+ //# sourceMappingURL=nile-bellcurve-chart.js.map
@@ -0,0 +1,2 @@
1
+ export { NileBoxplotChart } from './nile-boxplot-chart.js';
2
+ export type { BoxplotBox, BoxplotSeriesData } from './nile-boxplot-chart.js';
@@ -0,0 +1,2 @@
1
+ export { NileBoxplotChart } from './nile-boxplot-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-boxplot-chart.css.js.map
@@ -0,0 +1,58 @@
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
+ /** Five-number summary for one box (whiskers + quartiles + median). */
6
+ export interface BoxplotBox {
7
+ low: number;
8
+ q1: number;
9
+ median: number;
10
+ q3: number;
11
+ high: number;
12
+ /** Optional fill for this box (overrides series color when set). */
13
+ color?: string;
14
+ }
15
+ /** One boxplot series: one box per category in `categories`. */
16
+ export interface BoxplotSeriesData {
17
+ name: string;
18
+ data: BoxplotBox[];
19
+ color?: string;
20
+ }
21
+ export declare class NileBoxplotChart extends NileElement {
22
+ static styles: CSSResultGroup;
23
+ private _hc;
24
+ private chart;
25
+ private resizeObserver;
26
+ private chartContainer;
27
+ /** Full chart configuration. Accepts separated `{ chart, aq }` input. */
28
+ config: SeparatedChartConfigInputType | null;
29
+ chartTitle: string;
30
+ chartSubtitle: string;
31
+ categories: string[];
32
+ data: BoxplotSeriesData[];
33
+ options: Highcharts.Options;
34
+ loading: boolean;
35
+ height: string;
36
+ xAxisTitle: string;
37
+ yAxisTitle: string;
38
+ showLegend: boolean;
39
+ /** When true, draws horizontal boxes (categories on the y-axis). */
40
+ horizontal: boolean;
41
+ /** Apply `{ chart, aq }` config to individual properties. */
42
+ private applyConfig;
43
+ connectedCallback(): void;
44
+ disconnectedCallback(): void;
45
+ protected firstUpdated(): void;
46
+ protected updated(changedProperties: PropertyValues): void;
47
+ private setupResizeObserver;
48
+ private mapSeries;
49
+ private buildOptions;
50
+ private initChart;
51
+ private destroyChart;
52
+ render(): TemplateResult;
53
+ }
54
+ declare global {
55
+ interface HTMLElementTagNameMap {
56
+ 'nile-boxplot-chart': NileBoxplotChart;
57
+ }
58
+ }