@xplortech/insights-elements 0.0.1-draft.7729525

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/LICENSE +21 -0
  2. package/README.md +24 -0
  3. package/dist/cjs/apollo-data.esm-by4pfDU4.js +30 -0
  4. package/dist/cjs/apollo-data.esm-by4pfDU4.js.map +1 -0
  5. package/dist/cjs/app-globals-D-MP41KM.js +62 -0
  6. package/dist/cjs/app-globals-D-MP41KM.js.map +1 -0
  7. package/dist/cjs/index-CyoztwkV.js +40 -0
  8. package/dist/cjs/index-CyoztwkV.js.map +1 -0
  9. package/dist/cjs/index-DtrFwwSq.js +1472 -0
  10. package/dist/cjs/index-DtrFwwSq.js.map +1 -0
  11. package/dist/cjs/index.cjs.js +8 -0
  12. package/dist/cjs/index.cjs.js.map +1 -0
  13. package/dist/cjs/insights-bar-chart.cjs.entry.js +42 -0
  14. package/dist/cjs/insights-bar-chart.entry.cjs.js.map +1 -0
  15. package/dist/cjs/insights-chart-base-D6QbrWmD.js +102 -0
  16. package/dist/cjs/insights-chart-base-D6QbrWmD.js.map +1 -0
  17. package/dist/cjs/insights-donut-chart.cjs.entry.js +42 -0
  18. package/dist/cjs/insights-donut-chart.entry.cjs.js.map +1 -0
  19. package/dist/cjs/insights-elements.cjs.js +26 -0
  20. package/dist/cjs/insights-elements.cjs.js.map +1 -0
  21. package/dist/cjs/insights-wrapper.cjs.entry.js +1087 -0
  22. package/dist/cjs/insights-wrapper.entry.cjs.js.map +1 -0
  23. package/dist/cjs/loader.cjs.js +14 -0
  24. package/dist/cjs/loader.cjs.js.map +1 -0
  25. package/dist/collection/collection-manifest.json +15 -0
  26. package/dist/collection/components/insights-bar-chart/insights-bar-chart.css +87 -0
  27. package/dist/collection/components/insights-bar-chart/insights-bar-chart.js +51 -0
  28. package/dist/collection/components/insights-bar-chart/insights-bar-chart.js.map +1 -0
  29. package/dist/collection/components/insights-chart-base.js +213 -0
  30. package/dist/collection/components/insights-chart-base.js.map +1 -0
  31. package/dist/collection/components/insights-donut-chart/insights-donut-chart.css +87 -0
  32. package/dist/collection/components/insights-donut-chart/insights-donut-chart.js +51 -0
  33. package/dist/collection/components/insights-donut-chart/insights-donut-chart.js.map +1 -0
  34. package/dist/collection/components/insights-wrapper/insights-wrapper.css +17 -0
  35. package/dist/collection/components/insights-wrapper/insights-wrapper.js +402 -0
  36. package/dist/collection/components/insights-wrapper/insights-wrapper.js.map +1 -0
  37. package/dist/collection/global/app.js +35 -0
  38. package/dist/collection/global/app.js.map +1 -0
  39. package/dist/collection/index.js +12 -0
  40. package/dist/collection/index.js.map +1 -0
  41. package/dist/collection/utils/chart-types.js +16 -0
  42. package/dist/collection/utils/chart-types.js.map +1 -0
  43. package/dist/collection/utils/code-generator.js +201 -0
  44. package/dist/collection/utils/code-generator.js.map +1 -0
  45. package/dist/collection/utils/insights-context.js +33 -0
  46. package/dist/collection/utils/insights-context.js.map +1 -0
  47. package/dist/components/index.d.ts +33 -0
  48. package/dist/components/index.js +44 -0
  49. package/dist/components/index.js.map +1 -0
  50. package/dist/components/insights-bar-chart.d.ts +11 -0
  51. package/dist/components/insights-bar-chart.js +73 -0
  52. package/dist/components/insights-bar-chart.js.map +1 -0
  53. package/dist/components/insights-donut-chart.d.ts +11 -0
  54. package/dist/components/insights-donut-chart.js +73 -0
  55. package/dist/components/insights-donut-chart.js.map +1 -0
  56. package/dist/components/insights-wrapper.d.ts +11 -0
  57. package/dist/components/insights-wrapper.js +1123 -0
  58. package/dist/components/insights-wrapper.js.map +1 -0
  59. package/dist/components/p-CSTD3N9t.js +37 -0
  60. package/dist/components/p-CSTD3N9t.js.map +1 -0
  61. package/dist/components/p-DFvs3VMW.js +1195 -0
  62. package/dist/components/p-DFvs3VMW.js.map +1 -0
  63. package/dist/components/p-DHA6uI9u.js +9 -0
  64. package/dist/components/p-DHA6uI9u.js.map +1 -0
  65. package/dist/components/p-Dv82-c17.js +100 -0
  66. package/dist/components/p-Dv82-c17.js.map +1 -0
  67. package/dist/esm/apollo-data.esm-DHA6uI9u.js +9 -0
  68. package/dist/esm/apollo-data.esm-DHA6uI9u.js.map +1 -0
  69. package/dist/esm/app-globals-BtE_P06_.js +41 -0
  70. package/dist/esm/app-globals-BtE_P06_.js.map +1 -0
  71. package/dist/esm/index-BAqvP5--.js +1447 -0
  72. package/dist/esm/index-BAqvP5--.js.map +1 -0
  73. package/dist/esm/index-CSTD3N9t.js +37 -0
  74. package/dist/esm/index-CSTD3N9t.js.map +1 -0
  75. package/dist/esm/index.js +2 -0
  76. package/dist/esm/index.js.map +1 -0
  77. package/dist/esm/insights-bar-chart.entry.js +40 -0
  78. package/dist/esm/insights-bar-chart.entry.js.map +1 -0
  79. package/dist/esm/insights-chart-base-uNbdsloe.js +100 -0
  80. package/dist/esm/insights-chart-base-uNbdsloe.js.map +1 -0
  81. package/dist/esm/insights-donut-chart.entry.js +40 -0
  82. package/dist/esm/insights-donut-chart.entry.js.map +1 -0
  83. package/dist/esm/insights-elements.js +22 -0
  84. package/dist/esm/insights-elements.js.map +1 -0
  85. package/dist/esm/insights-wrapper.entry.js +1085 -0
  86. package/dist/esm/insights-wrapper.entry.js.map +1 -0
  87. package/dist/esm/loader.js +12 -0
  88. package/dist/esm/loader.js.map +1 -0
  89. package/dist/index.cjs.js +1 -0
  90. package/dist/index.js +1 -0
  91. package/dist/insights-elements/index.esm.js +2 -0
  92. package/dist/insights-elements/index.esm.js.map +1 -0
  93. package/dist/insights-elements/insights-bar-chart.entry.esm.js.map +1 -0
  94. package/dist/insights-elements/insights-donut-chart.entry.esm.js.map +1 -0
  95. package/dist/insights-elements/insights-elements.esm.js +2 -0
  96. package/dist/insights-elements/insights-elements.esm.js.map +1 -0
  97. package/dist/insights-elements/insights-wrapper.entry.esm.js.map +1 -0
  98. package/dist/insights-elements/loader.esm.js.map +1 -0
  99. package/dist/insights-elements/p-247183e1.entry.js +2 -0
  100. package/dist/insights-elements/p-247183e1.entry.js.map +1 -0
  101. package/dist/insights-elements/p-29ce0a90.entry.js +2 -0
  102. package/dist/insights-elements/p-29ce0a90.entry.js.map +1 -0
  103. package/dist/insights-elements/p-BAqvP5--.js +3 -0
  104. package/dist/insights-elements/p-BAqvP5--.js.map +1 -0
  105. package/dist/insights-elements/p-CSTD3N9t.js +2 -0
  106. package/dist/insights-elements/p-CSTD3N9t.js.map +1 -0
  107. package/dist/insights-elements/p-DE0h_D1B.js +2 -0
  108. package/dist/insights-elements/p-DE0h_D1B.js.map +1 -0
  109. package/dist/insights-elements/p-DHA6uI9u.js +3 -0
  110. package/dist/insights-elements/p-DHA6uI9u.js.map +1 -0
  111. package/dist/insights-elements/p-DVNwzSpV.js +2 -0
  112. package/dist/insights-elements/p-DVNwzSpV.js.map +1 -0
  113. package/dist/insights-elements/p-e48a7068.entry.js +2 -0
  114. package/dist/insights-elements/p-e48a7068.entry.js.map +1 -0
  115. package/dist/types/components/insights-bar-chart/insights-bar-chart.d.ts +9 -0
  116. package/dist/types/components/insights-chart-base.d.ts +54 -0
  117. package/dist/types/components/insights-donut-chart/insights-donut-chart.d.ts +9 -0
  118. package/dist/types/components/insights-wrapper/insights-wrapper.d.ts +46 -0
  119. package/dist/types/components.d.ts +201 -0
  120. package/dist/types/global/app.d.ts +6 -0
  121. package/dist/types/index.d.ts +12 -0
  122. package/dist/types/stencil-public-runtime.d.ts +1756 -0
  123. package/dist/types/utils/chart-types.d.ts +53 -0
  124. package/dist/types/utils/code-generator.d.ts +31 -0
  125. package/dist/types/utils/insights-context.d.ts +39 -0
  126. package/insights-loader/cdn.js +1 -0
  127. package/insights-loader/index.cjs.js +1 -0
  128. package/insights-loader/index.d.ts +24 -0
  129. package/insights-loader/index.es2017.js +1 -0
  130. package/insights-loader/index.js +2 -0
  131. package/loader/index.cjs.js +8 -0
  132. package/loader/index.d.ts +5 -0
  133. package/loader/index.js +7 -0
  134. package/package.json +92 -0
@@ -0,0 +1,51 @@
1
+ import { h } from "@stencil/core";
2
+ import { InsightsChartBase } from "../insights-chart-base";
3
+ export class InsightsDonutChart extends InsightsChartBase {
4
+ constructor() {
5
+ super();
6
+ }
7
+ el = null;
8
+ componentWillLoad() {
9
+ this.fetchChartData();
10
+ }
11
+ handlePropsChange() {
12
+ this.fetchChartData();
13
+ }
14
+ renderChart() {
15
+ if (!this.data || this.data.length === 0) {
16
+ return h("div", { class: "no-data" }, "No data available");
17
+ }
18
+ return (h("div", { class: "chart-container" }, h("apollo-data-donut-chart", { ref: el => {
19
+ if (el) {
20
+ el.adData = this.data;
21
+ el.adSpec = this.spec || {};
22
+ }
23
+ } })));
24
+ }
25
+ render() {
26
+ return (h("div", { key: 'b459affa996f96b3d3c6d3be1b434bfd3bf9a434', class: "insights-donut-chart" }, this.loading && (h("div", { key: 'd657d9c5561521a87e9c89e53604f2f29d4ee672', class: "loading-container" }, h("div", { key: '4bba1ebc4c1ff611c156c89ca172f8a5962c22df', class: "spinner" }), h("p", { key: 'c769618075a47539d7e00c0d88951e9ec230211b' }, "Loading chart data..."))), this.error && (h("div", { key: '4d7222db52e39e475e865d5dd82f800d87f80f6c', class: "error-container" }, h("p", { key: 'a56ae48922b31cd0fe23b682580e05eafd052288', class: "error-message" }, this.error), h("button", { key: '0cd6d156f31fcddc624b1332d012a59f7f265092', onClick: () => this.fetchChartData() }, "Retry"))), !this.loading && !this.error && this.renderChart()));
27
+ }
28
+ static get is() { return "insights-donut-chart"; }
29
+ static get encapsulation() { return "shadow"; }
30
+ static get originalStyleUrls() {
31
+ return {
32
+ "$": ["insights-donut-chart.css"]
33
+ };
34
+ }
35
+ static get styleUrls() {
36
+ return {
37
+ "$": ["insights-donut-chart.css"]
38
+ };
39
+ }
40
+ static get elementRef() { return "el"; }
41
+ static get watchers() {
42
+ return [{
43
+ "propName": "reportName",
44
+ "methodName": "handlePropsChange"
45
+ }, {
46
+ "propName": "filters",
47
+ "methodName": "handlePropsChange"
48
+ }];
49
+ }
50
+ }
51
+ //# sourceMappingURL=insights-donut-chart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insights-donut-chart.js","sourceRoot":"","sources":["../../../src/components/insights-donut-chart/insights-donut-chart.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAO3D,MAAM,OAAO,kBAAmB,SAAQ,iBAA6C;;;;IACxE,EAAE,GAAgB,IAAI,CAAC;IAElC,iBAAiB;QACf,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IAID,iBAAiB;QACf,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IAEO,WAAW;QACjB,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzC,OAAO,WAAK,KAAK,EAAC,SAAS,wBAAwB,CAAC;QACtD,CAAC;QAED,OAAO,CACL,WAAK,KAAK,EAAC,iBAAiB;YAC1B,+BACE,GAAG,EAAE,EAAE,CAAC,EAAE;oBACR,IAAI,EAAE,EAAE,CAAC;wBACP,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;wBACtB,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;oBAC9B,CAAC;gBACH,CAAC,GACD,CACE,CACP,CAAC;IACJ,CAAC;IAED,MAAM;QACJ,OAAO,CACL,4DAAK,KAAK,EAAC,sBAAsB;YAC9B,IAAI,CAAC,OAAO,IAAI,CACf,4DAAK,KAAK,EAAC,mBAAmB;gBAC5B,4DAAK,KAAK,EAAC,SAAS,GAAO;gBAC3B,oFAA4B,CACxB,CACP;YAEA,IAAI,CAAC,KAAK,IAAI,CACb,4DAAK,KAAK,EAAC,iBAAiB;gBAC1B,0DAAG,KAAK,EAAC,eAAe,IAAE,IAAI,CAAC,KAAK,CAAK;gBACzC,+DAAQ,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,YAAgB,CACxD,CACP;YAEA,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,EAAE,CAC/C,CACP,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, h, Watch, Element } from '@stencil/core';\nimport type { DonutDataItem, DonutSpec } from '@xplortech/apollo-data/dist/types/components.d.ts';\nimport { InsightsChartBase } from '../insights-chart-base';\n\n@Component({\n tag: 'insights-donut-chart',\n styleUrl: 'insights-donut-chart.css',\n shadow: true,\n})\nexport class InsightsDonutChart extends InsightsChartBase<DonutDataItem[], DonutSpec> {\n @Element() el: HTMLElement = null;\n\n componentWillLoad() {\n this.fetchChartData();\n }\n\n @Watch('reportName')\n @Watch('filters')\n handlePropsChange() {\n this.fetchChartData();\n }\n\n private renderChart() {\n if (!this.data || this.data.length === 0) {\n return <div class=\"no-data\">No data available</div>;\n }\n\n return (\n <div class=\"chart-container\">\n <apollo-data-donut-chart\n ref={el => {\n if (el) {\n el.adData = this.data;\n el.adSpec = this.spec || {};\n }\n }}\n />\n </div>\n );\n }\n\n render() {\n return (\n <div class=\"insights-donut-chart\">\n {this.loading && (\n <div class=\"loading-container\">\n <div class=\"spinner\"></div>\n <p>Loading chart data...</p>\n </div>\n )}\n\n {this.error && (\n <div class=\"error-container\">\n <p class=\"error-message\">{this.error}</p>\n <button onClick={() => this.fetchChartData()}>Retry</button>\n </div>\n )}\n\n {!this.loading && !this.error && this.renderChart()}\n </div>\n );\n }\n}\n"]}
@@ -0,0 +1,17 @@
1
+ :host {
2
+ display: block;
3
+ }
4
+
5
+ .insights-wrapper {
6
+ width: 100%;
7
+ height: 100%;
8
+ }
9
+
10
+ .loading {
11
+ display: flex;
12
+ align-items: center;
13
+ justify-content: center;
14
+ padding: 20px;
15
+ color: #666;
16
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
17
+ }
@@ -0,0 +1,402 @@
1
+ import { h } from "@stencil/core";
2
+ import insights from "@xplortech/insights-js";
3
+ import { getConfiguration } from "../../utils/insights-context";
4
+ export class InsightsWrapper {
5
+ /**
6
+ * Name of the configuration to use from setupConfiguration
7
+ * Defaults to 'default' if not provided
8
+ */
9
+ configName;
10
+ /**
11
+ * API URL for the insights service (alternative to using configName)
12
+ */
13
+ apiUrl;
14
+ /**
15
+ * Authentication token (optional if using configName)
16
+ */
17
+ token;
18
+ /**
19
+ * Callback to refresh the token (can override configuration)
20
+ */
21
+ onRefreshTokenCallback;
22
+ /**
23
+ * Callback for error and warning events (can override configuration)
24
+ */
25
+ onEventEmittedCallback;
26
+ initialized = false;
27
+ insightsClient;
28
+ currentConfig;
29
+ componentWillLoad() {
30
+ this.initializeClient();
31
+ }
32
+ handlePropsChange() {
33
+ this.initializeClient();
34
+ }
35
+ async initializeClient() {
36
+ try {
37
+ let apiUrl;
38
+ let authToken;
39
+ let refreshTokenCallback;
40
+ let onEventEmittedCallback;
41
+ // Check if using configName or direct props
42
+ if (this.configName || (!this.apiUrl && !this.token)) {
43
+ // Using named configuration
44
+ const config = getConfiguration(this.configName);
45
+ if (!config) {
46
+ const configNameToUse = this.configName || 'default';
47
+ const errorMsg = `Configuration '${configNameToUse}' not found. Please call setupConfiguration() first.`;
48
+ console.error(errorMsg);
49
+ throw new Error(errorMsg);
50
+ }
51
+ apiUrl = config.apiUrl;
52
+ authToken = config.token;
53
+ // Props override configuration
54
+ refreshTokenCallback = this.onRefreshTokenCallback || config.refreshToken;
55
+ onEventEmittedCallback = this.onEventEmittedCallback || config.onEventEmitted;
56
+ // Store config for later use
57
+ this.currentConfig = {
58
+ apiUrl: config.apiUrl,
59
+ refreshToken: refreshTokenCallback,
60
+ onEventEmitted: onEventEmittedCallback,
61
+ };
62
+ // Get initial token from refreshToken callback if provided
63
+ if (refreshTokenCallback) {
64
+ authToken = typeof refreshTokenCallback === 'function' ? await refreshTokenCallback() : refreshTokenCallback;
65
+ }
66
+ // Emit warning through callback if no token
67
+ if (!authToken && onEventEmittedCallback) {
68
+ onEventEmittedCallback({ eventType: 'warning', data: { message: 'No token provided for configuration' } });
69
+ }
70
+ }
71
+ else {
72
+ // Using direct props (backwards compatible)
73
+ if (!this.apiUrl) {
74
+ const errorMsg = 'apiUrl is required when not using configName';
75
+ console.error(errorMsg);
76
+ throw new Error(errorMsg);
77
+ }
78
+ apiUrl = this.apiUrl;
79
+ authToken = this.token;
80
+ refreshTokenCallback = this.onRefreshTokenCallback;
81
+ onEventEmittedCallback = this.onEventEmittedCallback;
82
+ // Store config for later use even with direct props
83
+ this.currentConfig = {
84
+ apiUrl: this.apiUrl,
85
+ refreshToken: refreshTokenCallback,
86
+ onEventEmitted: onEventEmittedCallback,
87
+ };
88
+ }
89
+ // Create the insights client
90
+ this.insightsClient = insights(authToken, {
91
+ apiUrl: apiUrl,
92
+ });
93
+ this.initialized = true;
94
+ }
95
+ catch (error) {
96
+ const errorMsg = error instanceof Error ? error.message : 'Failed to initialize insights client';
97
+ // Emit error through callback if configured
98
+ if (this.currentConfig?.onEventEmitted) {
99
+ this.currentConfig.onEventEmitted({ eventType: 'error', data: { message: errorMsg, error } });
100
+ }
101
+ console.error('Error initializing insights client:', error);
102
+ throw error;
103
+ }
104
+ }
105
+ async handleTokenExpired() {
106
+ // Auto-refresh token if refreshToken callback is configured
107
+ if (this.currentConfig?.refreshToken) {
108
+ try {
109
+ await this.initializeClient();
110
+ }
111
+ catch (error) {
112
+ console.error('Failed to refresh token:', error);
113
+ if (this.currentConfig?.onEventEmitted) {
114
+ this.currentConfig.onEventEmitted({ eventType: 'error', data: { message: 'Failed to refresh token', error } });
115
+ }
116
+ }
117
+ }
118
+ else {
119
+ if (this.currentConfig?.onEventEmitted) {
120
+ this.currentConfig.onEventEmitted({ eventType: 'warning', data: { message: 'Token expired but no refreshToken callback configured' } });
121
+ }
122
+ }
123
+ }
124
+ /**
125
+ * Public method to fetch data for charts
126
+ * This can be called by child chart components
127
+ */
128
+ async fetchData(reportName, query) {
129
+ try {
130
+ const response = await this.insightsClient.getReport(reportName, query);
131
+ return response;
132
+ }
133
+ catch (error) {
134
+ // Check if error is token expiration
135
+ if (error.message && error.message.includes('401')) {
136
+ await this.handleTokenExpired();
137
+ // Retry fetching data after token refresh
138
+ const response = await this.insightsClient.getReport(reportName, query);
139
+ return response;
140
+ }
141
+ throw error;
142
+ }
143
+ }
144
+ /**
145
+ * Helper method to build query from filters
146
+ */
147
+ async buildQuery(filters, getQueryByFilters) {
148
+ if (getQueryByFilters) {
149
+ return getQueryByFilters(filters);
150
+ }
151
+ // Default query builder
152
+ return {
153
+ columns: ['*'],
154
+ ...filters,
155
+ };
156
+ }
157
+ /**
158
+ * Manually refresh the token using the refreshToken callback from configuration
159
+ */
160
+ async manualRefreshToken() {
161
+ if (!this.currentConfig?.refreshToken) {
162
+ throw new Error('No refreshToken callback configured');
163
+ }
164
+ await this.initializeClient();
165
+ }
166
+ render() {
167
+ return (h("div", { key: '8a00c399458b7dff7dff0ac7e50a6217d7c2ad3d', class: "insights-wrapper" }, this.initialized && h("slot", { key: '85f26cab746e109f97ef29288b57377c449b7429' }), !this.initialized && h("div", { key: 'a59a48e70a8ff0258d5112aafeca6bc5a4a620ac', class: "loading" }, "Initializing Insights...")));
168
+ }
169
+ static get is() { return "insights-wrapper"; }
170
+ static get encapsulation() { return "shadow"; }
171
+ static get originalStyleUrls() {
172
+ return {
173
+ "$": ["insights-wrapper.css"]
174
+ };
175
+ }
176
+ static get styleUrls() {
177
+ return {
178
+ "$": ["insights-wrapper.css"]
179
+ };
180
+ }
181
+ static get properties() {
182
+ return {
183
+ "configName": {
184
+ "type": "string",
185
+ "mutable": false,
186
+ "complexType": {
187
+ "original": "string",
188
+ "resolved": "string",
189
+ "references": {}
190
+ },
191
+ "required": false,
192
+ "optional": true,
193
+ "docs": {
194
+ "tags": [],
195
+ "text": "Name of the configuration to use from setupConfiguration\nDefaults to 'default' if not provided"
196
+ },
197
+ "getter": false,
198
+ "setter": false,
199
+ "reflect": false,
200
+ "attribute": "config-name"
201
+ },
202
+ "apiUrl": {
203
+ "type": "string",
204
+ "mutable": false,
205
+ "complexType": {
206
+ "original": "string",
207
+ "resolved": "string",
208
+ "references": {}
209
+ },
210
+ "required": false,
211
+ "optional": true,
212
+ "docs": {
213
+ "tags": [],
214
+ "text": "API URL for the insights service (alternative to using configName)"
215
+ },
216
+ "getter": false,
217
+ "setter": false,
218
+ "reflect": false,
219
+ "attribute": "api-url"
220
+ },
221
+ "token": {
222
+ "type": "string",
223
+ "mutable": false,
224
+ "complexType": {
225
+ "original": "string",
226
+ "resolved": "string",
227
+ "references": {}
228
+ },
229
+ "required": false,
230
+ "optional": true,
231
+ "docs": {
232
+ "tags": [],
233
+ "text": "Authentication token (optional if using configName)"
234
+ },
235
+ "getter": false,
236
+ "setter": false,
237
+ "reflect": false,
238
+ "attribute": "token"
239
+ },
240
+ "onRefreshTokenCallback": {
241
+ "type": "unknown",
242
+ "mutable": false,
243
+ "complexType": {
244
+ "original": "() => Promise<string> | string",
245
+ "resolved": "() => string | Promise<string>",
246
+ "references": {
247
+ "Promise": {
248
+ "location": "global",
249
+ "id": "global::Promise"
250
+ }
251
+ }
252
+ },
253
+ "required": false,
254
+ "optional": true,
255
+ "docs": {
256
+ "tags": [],
257
+ "text": "Callback to refresh the token (can override configuration)"
258
+ },
259
+ "getter": false,
260
+ "setter": false
261
+ },
262
+ "onEventEmittedCallback": {
263
+ "type": "unknown",
264
+ "mutable": false,
265
+ "complexType": {
266
+ "original": "(event: EventData) => void",
267
+ "resolved": "(event: EventData) => void",
268
+ "references": {
269
+ "EventData": {
270
+ "location": "import",
271
+ "path": "../../utils/insights-context",
272
+ "id": "src/utils/insights-context.ts::EventData"
273
+ }
274
+ }
275
+ },
276
+ "required": false,
277
+ "optional": true,
278
+ "docs": {
279
+ "tags": [],
280
+ "text": "Callback for error and warning events (can override configuration)"
281
+ },
282
+ "getter": false,
283
+ "setter": false
284
+ }
285
+ };
286
+ }
287
+ static get states() {
288
+ return {
289
+ "initialized": {}
290
+ };
291
+ }
292
+ static get methods() {
293
+ return {
294
+ "fetchData": {
295
+ "complexType": {
296
+ "signature": "(reportName: string, query: InsightsQuery) => Promise<RawInsightsResponse>",
297
+ "parameters": [{
298
+ "name": "reportName",
299
+ "type": "string",
300
+ "docs": ""
301
+ }, {
302
+ "name": "query",
303
+ "type": "InsightsQuery",
304
+ "docs": ""
305
+ }],
306
+ "references": {
307
+ "Promise": {
308
+ "location": "global",
309
+ "id": "global::Promise"
310
+ },
311
+ "RawInsightsResponse": {
312
+ "location": "import",
313
+ "path": "../../utils/chart-types",
314
+ "id": "src/utils/chart-types.ts::RawInsightsResponse"
315
+ },
316
+ "InsightsQuery": {
317
+ "location": "import",
318
+ "path": "../../utils/chart-types",
319
+ "id": "src/utils/chart-types.ts::InsightsQuery"
320
+ }
321
+ },
322
+ "return": "Promise<RawInsightsResponse>"
323
+ },
324
+ "docs": {
325
+ "text": "Public method to fetch data for charts\nThis can be called by child chart components",
326
+ "tags": []
327
+ }
328
+ },
329
+ "buildQuery": {
330
+ "complexType": {
331
+ "signature": "(filters: ChartFilters, getQueryByFilters?: (filters: ChartFilters) => InsightsQuery) => Promise<InsightsQuery>",
332
+ "parameters": [{
333
+ "name": "filters",
334
+ "type": "ChartFilters",
335
+ "docs": ""
336
+ }, {
337
+ "name": "getQueryByFilters",
338
+ "type": "(filters: ChartFilters) => InsightsQuery",
339
+ "docs": ""
340
+ }],
341
+ "references": {
342
+ "Promise": {
343
+ "location": "global",
344
+ "id": "global::Promise"
345
+ },
346
+ "InsightsQuery": {
347
+ "location": "import",
348
+ "path": "../../utils/chart-types",
349
+ "id": "src/utils/chart-types.ts::InsightsQuery"
350
+ },
351
+ "ChartFilters": {
352
+ "location": "import",
353
+ "path": "../../utils/chart-types",
354
+ "id": "src/utils/chart-types.ts::ChartFilters"
355
+ }
356
+ },
357
+ "return": "Promise<InsightsQuery>"
358
+ },
359
+ "docs": {
360
+ "text": "Helper method to build query from filters",
361
+ "tags": []
362
+ }
363
+ },
364
+ "manualRefreshToken": {
365
+ "complexType": {
366
+ "signature": "() => Promise<void>",
367
+ "parameters": [],
368
+ "references": {
369
+ "Promise": {
370
+ "location": "global",
371
+ "id": "global::Promise"
372
+ }
373
+ },
374
+ "return": "Promise<void>"
375
+ },
376
+ "docs": {
377
+ "text": "Manually refresh the token using the refreshToken callback from configuration",
378
+ "tags": []
379
+ }
380
+ }
381
+ };
382
+ }
383
+ static get watchers() {
384
+ return [{
385
+ "propName": "configName",
386
+ "methodName": "handlePropsChange"
387
+ }, {
388
+ "propName": "apiUrl",
389
+ "methodName": "handlePropsChange"
390
+ }, {
391
+ "propName": "token",
392
+ "methodName": "handlePropsChange"
393
+ }, {
394
+ "propName": "onRefreshTokenCallback",
395
+ "methodName": "handlePropsChange"
396
+ }, {
397
+ "propName": "onEventEmittedCallback",
398
+ "methodName": "handlePropsChange"
399
+ }];
400
+ }
401
+ }
402
+ //# sourceMappingURL=insights-wrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insights-wrapper.js","sourceRoot":"","sources":["../../../src/components/insights-wrapper/insights-wrapper.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Prop, h, Watch, Method, State } from '@stencil/core';\nimport insights from '@xplortech/insights-js';\nimport { getConfiguration, type EventData } from '../../utils/insights-context';\nimport { ChartFilters, InsightsQuery, RawInsightsResponse } from '../../utils/chart-types';\n\n@Component({\n tag: 'insights-wrapper',\n styleUrl: 'insights-wrapper.css',\n shadow: true,\n})\nexport class InsightsWrapper {\n /**\n * Name of the configuration to use from setupConfiguration\n * Defaults to 'default' if not provided\n */\n @Prop() configName?: string;\n\n /**\n * API URL for the insights service (alternative to using configName)\n */\n @Prop() apiUrl?: string;\n\n /**\n * Authentication token (optional if using configName)\n */\n @Prop() token?: string;\n\n /**\n * Callback to refresh the token (can override configuration)\n */\n @Prop() onRefreshTokenCallback?: () => Promise<string> | string;\n\n /**\n * Callback for error and warning events (can override configuration)\n */\n @Prop() onEventEmittedCallback?: (event: EventData) => void;\n\n @State() initialized: boolean = false;\n\n private insightsClient: any;\n private currentConfig?: { apiUrl: string; refreshToken?: () => Promise<string> | string; onEventEmitted?: (event: EventData) => void };\n\n componentWillLoad() {\n this.initializeClient();\n }\n\n @Watch('configName')\n @Watch('apiUrl')\n @Watch('token')\n @Watch('onRefreshTokenCallback')\n @Watch('onEventEmittedCallback')\n handlePropsChange() {\n this.initializeClient();\n }\n\n private async initializeClient() {\n try {\n let apiUrl: string;\n let authToken: string | undefined;\n let refreshTokenCallback: (() => Promise<string> | string) | undefined;\n let onEventEmittedCallback: ((event: EventData) => void) | undefined;\n\n // Check if using configName or direct props\n if (this.configName || (!this.apiUrl && !this.token)) {\n // Using named configuration\n const config = getConfiguration(this.configName);\n if (!config) {\n const configNameToUse = this.configName || 'default';\n const errorMsg = `Configuration '${configNameToUse}' not found. Please call setupConfiguration() first.`;\n console.error(errorMsg);\n throw new Error(errorMsg);\n }\n\n apiUrl = config.apiUrl;\n authToken = config.token;\n // Props override configuration\n refreshTokenCallback = this.onRefreshTokenCallback || config.refreshToken;\n onEventEmittedCallback = this.onEventEmittedCallback || config.onEventEmitted;\n\n // Store config for later use\n this.currentConfig = {\n apiUrl: config.apiUrl,\n refreshToken: refreshTokenCallback,\n onEventEmitted: onEventEmittedCallback,\n };\n\n // Get initial token from refreshToken callback if provided\n if (refreshTokenCallback) {\n authToken = typeof refreshTokenCallback === 'function' ? await refreshTokenCallback() : refreshTokenCallback;\n }\n\n // Emit warning through callback if no token\n if (!authToken && onEventEmittedCallback) {\n onEventEmittedCallback({ eventType: 'warning', data: { message: 'No token provided for configuration' } });\n }\n } else {\n // Using direct props (backwards compatible)\n if (!this.apiUrl) {\n const errorMsg = 'apiUrl is required when not using configName';\n console.error(errorMsg);\n throw new Error(errorMsg);\n }\n apiUrl = this.apiUrl;\n authToken = this.token;\n refreshTokenCallback = this.onRefreshTokenCallback;\n onEventEmittedCallback = this.onEventEmittedCallback;\n\n // Store config for later use even with direct props\n this.currentConfig = {\n apiUrl: this.apiUrl,\n refreshToken: refreshTokenCallback,\n onEventEmitted: onEventEmittedCallback,\n };\n }\n\n // Create the insights client\n this.insightsClient = insights(authToken, {\n apiUrl: apiUrl,\n });\n\n this.initialized = true;\n } catch (error) {\n const errorMsg = error instanceof Error ? error.message : 'Failed to initialize insights client';\n\n // Emit error through callback if configured\n if (this.currentConfig?.onEventEmitted) {\n this.currentConfig.onEventEmitted({ eventType: 'error', data: { message: errorMsg, error } });\n }\n\n console.error('Error initializing insights client:', error);\n throw error;\n }\n }\n\n private async handleTokenExpired() {\n // Auto-refresh token if refreshToken callback is configured\n if (this.currentConfig?.refreshToken) {\n try {\n await this.initializeClient();\n } catch (error) {\n console.error('Failed to refresh token:', error);\n if (this.currentConfig?.onEventEmitted) {\n this.currentConfig.onEventEmitted({ eventType: 'error', data: { message: 'Failed to refresh token', error } });\n }\n }\n } else {\n if (this.currentConfig?.onEventEmitted) {\n this.currentConfig.onEventEmitted({ eventType: 'warning', data: { message: 'Token expired but no refreshToken callback configured' } });\n }\n }\n }\n\n /**\n * Public method to fetch data for charts\n * This can be called by child chart components\n */\n @Method()\n async fetchData(reportName: string, query: InsightsQuery): Promise<RawInsightsResponse> {\n try {\n const response = await this.insightsClient.getReport(reportName, query);\n return response;\n } catch (error) {\n // Check if error is token expiration\n if (error.message && error.message.includes('401')) {\n await this.handleTokenExpired();\n // Retry fetching data after token refresh\n const response = await this.insightsClient.getReport(reportName, query);\n return response;\n }\n throw error;\n }\n }\n\n /**\n * Helper method to build query from filters\n */\n @Method()\n async buildQuery(filters: ChartFilters, getQueryByFilters?: (filters: ChartFilters) => InsightsQuery): Promise<InsightsQuery> {\n if (getQueryByFilters) {\n return getQueryByFilters(filters);\n }\n\n // Default query builder\n return {\n columns: ['*'],\n ...filters,\n };\n }\n\n /**\n * Manually refresh the token using the refreshToken callback from configuration\n */\n @Method()\n async manualRefreshToken() {\n if (!this.currentConfig?.refreshToken) {\n throw new Error('No refreshToken callback configured');\n }\n await this.initializeClient();\n }\n\n render() {\n return (\n <div class=\"insights-wrapper\">\n {this.initialized && <slot></slot>}\n {!this.initialized && <div class=\"loading\">Initializing Insights...</div>}\n </div>\n );\n }\n}\n"]}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Global script for insights-elements
3
+ * Auto-loads apollo-data components when the library initializes
4
+ */
5
+ export default async () => {
6
+ if (typeof window === 'undefined')
7
+ return;
8
+ // Auto-load apollo-data when insights-elements initializes
9
+ try {
10
+ // Determine the base URL for apollo-data based on the current script location
11
+ let apolloDataUrl;
12
+ if (typeof import.meta?.url === 'string') {
13
+ const baseUrl = new URL('.', import.meta.url).href;
14
+ apolloDataUrl = new URL('apollo-data/apollo-data.esm.js', baseUrl).href;
15
+ }
16
+ if (apolloDataUrl) {
17
+ // Try loading from the co-located apollo-data folder first (works for both dev and bundled scenarios)
18
+ try {
19
+ await import(/* @vite-ignore */ apolloDataUrl);
20
+ console.log('✓ apollo-data loaded from co-located bundle', { apolloDataUrl });
21
+ return;
22
+ }
23
+ catch {
24
+ // Fall through to npm package import
25
+ }
26
+ }
27
+ // Fallback: Import from npm package (for bundlers that handle this)
28
+ await import('@xplortech/apollo-data');
29
+ console.log('✓ apollo-data loaded from npm package');
30
+ }
31
+ catch (error) {
32
+ console.warn('ℹ apollo-data not available:', error?.message || error);
33
+ }
34
+ };
35
+ //# sourceMappingURL=app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/global/app.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAe,KAAK,IAAI,EAAE;IACxB,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO;IAE1C,2DAA2D;IAC3D,IAAI,CAAC;QACH,8EAA8E;QAC9E,IAAI,aAAiC,CAAC;QAEtC,IAAI,OAAO,MAAM,CAAC,IAAI,EAAE,GAAG,KAAK,QAAQ,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACnD,aAAa,GAAG,IAAI,GAAG,CAAC,gCAAgC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC;QAC1E,CAAC;QAED,IAAI,aAAa,EAAE,CAAC;YAClB,sGAAsG;YACtG,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;gBAC/C,OAAO,CAAC,GAAG,CAAC,6CAA6C,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC;gBAC9E,OAAO;YACT,CAAC;YAAC,MAAM,CAAC;gBACP,qCAAqC;YACvC,CAAC;QACH,CAAC;QAED,oEAAoE;QACpE,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,8BAA8B,EAAG,KAAe,EAAE,OAAO,IAAI,KAAK,CAAC,CAAC;IACnF,CAAC;AACH,CAAC,CAAC","sourcesContent":["/**\n * Global script for insights-elements\n * Auto-loads apollo-data components when the library initializes\n */\nexport default async () => {\n if (typeof window === 'undefined') return;\n\n // Auto-load apollo-data when insights-elements initializes\n try {\n // Determine the base URL for apollo-data based on the current script location\n let apolloDataUrl: string | undefined;\n\n if (typeof import.meta?.url === 'string') {\n const baseUrl = new URL('.', import.meta.url).href;\n apolloDataUrl = new URL('apollo-data/apollo-data.esm.js', baseUrl).href;\n }\n\n if (apolloDataUrl) {\n // Try loading from the co-located apollo-data folder first (works for both dev and bundled scenarios)\n try {\n await import(/* @vite-ignore */ apolloDataUrl);\n console.log('✓ apollo-data loaded from co-located bundle', { apolloDataUrl });\n return;\n } catch {\n // Fall through to npm package import\n }\n }\n\n // Fallback: Import from npm package (for bundlers that handle this)\n await import('@xplortech/apollo-data');\n console.log('✓ apollo-data loaded from npm package');\n } catch (error) {\n console.warn('ℹ apollo-data not available:', (error as Error)?.message || error);\n }\n};\n"]}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @fileoverview entry point for your component library
3
+ *
4
+ * This is the entry point for your component library. Use this file to export utilities,
5
+ * constants or data structure that accompany your components.
6
+ *
7
+ * DO NOT use this file to export your components. Instead, use the recommended approaches
8
+ * to consume components of this package as outlined in the `README.md`.
9
+ */
10
+ // Export configuration setup function
11
+ export { setupConfiguration } from './utils/insights-context';
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,sCAAsC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC","sourcesContent":["/**\n * @fileoverview entry point for your component library\n *\n * This is the entry point for your component library. Use this file to export utilities,\n * constants or data structure that accompany your components.\n *\n * DO NOT use this file to export your components. Instead, use the recommended approaches\n * to consume components of this package as outlined in the `README.md`.\n */\n\nexport type * from './components.d.ts';\n\n// Export configuration setup function\nexport { setupConfiguration } from './utils/insights-context';\n\n// Export configuration types\nexport type { EventType, EventData, ConfigurationItem, Configuration } from './utils/insights-context';\n"]}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Default implementation of getQueryByFilters
3
+ */
4
+ export const defaultGetQueryByFilters = (filters) => {
5
+ return {
6
+ columns: ['*'],
7
+ ...filters,
8
+ };
9
+ };
10
+ /**
11
+ * Default implementation of normalizeRawResponse
12
+ */
13
+ export const defaultNormalizeRawResponse = (responseData) => {
14
+ return responseData.data || responseData;
15
+ };
16
+ //# sourceMappingURL=chart-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart-types.js","sourceRoot":"","sources":["../../src/utils/chart-types.ts"],"names":[],"mappings":"AAoDA;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,OAAqB,EAAiB,EAAE;IAC/E,OAAO;QACL,OAAO,EAAE,CAAC,GAAG,CAAC;QACd,GAAG,OAAO;KACX,CAAC;AACJ,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,YAAiC,EAAO,EAAE;IACpF,OAAO,YAAY,CAAC,IAAI,IAAI,YAAY,CAAC;AAC3C,CAAC,CAAC","sourcesContent":["/**\n * Filters for chart data queries\n */\nexport interface ChartFilters {\n [key: string]: any;\n}\n\n/**\n * Query structure for insights API\n */\nexport interface InsightsQuery {\n columns: string[];\n [key: string]: any;\n}\n\n/**\n * Raw response from insights API\n */\nexport interface RawInsightsResponse {\n data: any[];\n [key: string]: any;\n}\n\n/**\n * Base props that all chart components will inherit\n */\nexport interface BaseChartProps {\n /**\n * Name of the report to fetch data from\n */\n reportName: string;\n\n /**\n * Filters to apply to the query\n */\n filters?: ChartFilters;\n\n /**\n * Function to transform filters into a query object\n * @param filters - The filters to transform\n * @returns Query object with columns and other parameters\n */\n getQueryByFilters?: (filters: ChartFilters) => InsightsQuery;\n\n /**\n * Function to normalize the raw API response\n * @param responseData - Raw response from the API\n * @returns Normalized data for the chart\n */\n normalizeRawResponse?: (responseData: RawInsightsResponse) => any;\n}\n\n/**\n * Default implementation of getQueryByFilters\n */\nexport const defaultGetQueryByFilters = (filters: ChartFilters): InsightsQuery => {\n return {\n columns: ['*'],\n ...filters,\n };\n};\n\n/**\n * Default implementation of normalizeRawResponse\n */\nexport const defaultNormalizeRawResponse = (responseData: RawInsightsResponse): any => {\n return responseData.data || responseData;\n};\n"]}