@itwin/reports-config-widget-react 0.0.7 → 0.1.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 (174) hide show
  1. package/.rush/temp/package-deps_rebuild.json +24 -14
  2. package/.rush/temp/shrinkwrap-deps.json +17 -17
  3. package/CHANGELOG.json +24 -0
  4. package/CHANGELOG.md +15 -1
  5. package/coverage/clover.xml +354 -128
  6. package/coverage/coverage-final.json +17 -8
  7. package/coverage/lcov-report/index.html +36 -21
  8. package/coverage/lcov-report/src/ReportsConfigWidget.ts.html +2 -2
  9. package/coverage/lcov-report/src/index.html +1 -1
  10. package/coverage/lcov-report/src/test/index.html +1 -1
  11. package/coverage/lcov-report/src/test/test-utils.tsx.html +1 -1
  12. package/coverage/lcov-report/src/widget/ReportsConfigUiProvider.tsx.html +1 -1
  13. package/coverage/lcov-report/src/widget/components/ActionPanel.tsx.html +1 -1
  14. package/coverage/lcov-report/src/widget/components/AddMappingsModal.tsx.html +1 -1
  15. package/coverage/lcov-report/src/widget/components/BulkExtractor.ts.html +553 -0
  16. package/coverage/lcov-report/src/widget/components/Constants.ts.html +106 -0
  17. package/coverage/lcov-report/src/widget/components/DeleteModal.tsx.html +4 -4
  18. package/coverage/lcov-report/src/widget/components/Extraction.tsx.html +1 -1
  19. package/coverage/lcov-report/src/widget/components/ExtractionStates/FailedExtractionState.tsx.html +187 -0
  20. package/coverage/lcov-report/src/widget/components/ExtractionStates/QueuedExtractionState.tsx.html +145 -0
  21. package/coverage/lcov-report/src/widget/components/ExtractionStates/RunningExtractionState.tsx.html +139 -0
  22. package/coverage/lcov-report/src/widget/components/ExtractionStates/StartingExtractionState.tsx.html +151 -0
  23. package/coverage/lcov-report/src/widget/components/ExtractionStates/SucceededExtractionState.tsx.html +187 -0
  24. package/coverage/lcov-report/src/widget/components/ExtractionStates/index.html +176 -0
  25. package/coverage/lcov-report/src/widget/components/ExtractionStatus.tsx.html +295 -0
  26. package/coverage/lcov-report/src/widget/components/HorizontalTile.tsx.html +73 -40
  27. package/coverage/lcov-report/src/widget/components/LocalizedTablePaginator.tsx.html +1 -1
  28. package/coverage/lcov-report/src/widget/components/ReportAction.tsx.html +1 -1
  29. package/coverage/lcov-report/src/widget/components/ReportHorizontalTile.tsx.html +478 -0
  30. package/coverage/lcov-report/src/widget/components/ReportMappings.tsx.html +6 -24
  31. package/coverage/lcov-report/src/widget/components/Reports.tsx.html +129 -111
  32. package/coverage/lcov-report/src/widget/components/ReportsContainer.tsx.html +1 -1
  33. package/coverage/lcov-report/src/widget/components/SearchBar.tsx.html +5 -5
  34. package/coverage/lcov-report/src/widget/components/SelectIModel.tsx.html +1 -1
  35. package/coverage/lcov-report/src/widget/components/index.html +83 -23
  36. package/coverage/lcov-report/src/widget/components/utils.tsx.html +3 -3
  37. package/coverage/lcov-report/src/widget/context/ReportsApiConfigContext.tsx.html +4 -4
  38. package/coverage/lcov-report/src/widget/context/index.html +1 -1
  39. package/coverage/lcov-report/src/widget/hooks/index.html +1 -1
  40. package/coverage/lcov-report/src/widget/hooks/useValidator.ts.html +1 -1
  41. package/coverage/lcov-report/src/widget/index.html +1 -1
  42. package/coverage/lcov.info +699 -287
  43. package/jest.config.js +1 -0
  44. package/lib/cjs/tsconfig.tsbuildinfo +1 -1
  45. package/lib/cjs/widget/components/BulkExtractor.d.ts +28 -0
  46. package/lib/cjs/widget/components/BulkExtractor.d.ts.map +1 -0
  47. package/lib/cjs/widget/components/BulkExtractor.js +126 -0
  48. package/lib/cjs/widget/components/BulkExtractor.js.map +1 -0
  49. package/lib/cjs/widget/components/Constants.d.ts +4 -0
  50. package/lib/cjs/widget/components/Constants.d.ts.map +1 -0
  51. package/lib/cjs/widget/components/Constants.js +11 -0
  52. package/lib/cjs/widget/components/Constants.js.map +1 -0
  53. package/lib/cjs/widget/components/ExtractionStates/FailedExtractionState.d.ts +8 -0
  54. package/lib/cjs/widget/components/ExtractionStates/FailedExtractionState.d.ts.map +1 -0
  55. package/lib/cjs/widget/components/ExtractionStates/FailedExtractionState.js +23 -0
  56. package/lib/cjs/widget/components/ExtractionStates/FailedExtractionState.js.map +1 -0
  57. package/lib/cjs/widget/components/ExtractionStates/QueuedExtractionState.d.ts +3 -0
  58. package/lib/cjs/widget/components/ExtractionStates/QueuedExtractionState.d.ts.map +1 -0
  59. package/lib/cjs/widget/components/ExtractionStates/QueuedExtractionState.js +18 -0
  60. package/lib/cjs/widget/components/ExtractionStates/QueuedExtractionState.js.map +1 -0
  61. package/lib/cjs/widget/components/ExtractionStates/RunningExtractionState.d.ts +3 -0
  62. package/lib/cjs/widget/components/ExtractionStates/RunningExtractionState.d.ts.map +1 -0
  63. package/lib/cjs/widget/components/ExtractionStates/RunningExtractionState.js +17 -0
  64. package/lib/cjs/widget/components/ExtractionStates/RunningExtractionState.js.map +1 -0
  65. package/lib/cjs/widget/components/ExtractionStates/StartingExtractionState.d.ts +3 -0
  66. package/lib/cjs/widget/components/ExtractionStates/StartingExtractionState.d.ts.map +1 -0
  67. package/lib/cjs/widget/components/ExtractionStates/StartingExtractionState.js +18 -0
  68. package/lib/cjs/widget/components/ExtractionStates/StartingExtractionState.js.map +1 -0
  69. package/lib/cjs/widget/components/ExtractionStates/SucceededExtractionState.d.ts +8 -0
  70. package/lib/cjs/widget/components/ExtractionStates/SucceededExtractionState.d.ts.map +1 -0
  71. package/lib/cjs/widget/components/ExtractionStates/SucceededExtractionState.js +23 -0
  72. package/lib/cjs/widget/components/ExtractionStates/SucceededExtractionState.js.map +1 -0
  73. package/lib/cjs/widget/components/ExtractionStatus.d.ts +17 -0
  74. package/lib/cjs/widget/components/ExtractionStatus.d.ts.map +1 -0
  75. package/lib/cjs/widget/components/ExtractionStatus.js +76 -0
  76. package/lib/cjs/widget/components/ExtractionStatus.js.map +1 -0
  77. package/lib/cjs/widget/components/ExtractionStatus.scss +27 -0
  78. package/lib/cjs/widget/components/HorizontalTile.d.ts +8 -7
  79. package/lib/cjs/widget/components/HorizontalTile.d.ts.map +1 -1
  80. package/lib/cjs/widget/components/HorizontalTile.js +10 -6
  81. package/lib/cjs/widget/components/HorizontalTile.js.map +1 -1
  82. package/lib/cjs/widget/components/HorizontalTile.scss +42 -22
  83. package/lib/cjs/widget/components/ReportHorizontalTile.d.ts +16 -0
  84. package/lib/cjs/widget/components/ReportHorizontalTile.d.ts.map +1 -0
  85. package/lib/cjs/widget/components/ReportHorizontalTile.js +72 -0
  86. package/lib/cjs/widget/components/ReportHorizontalTile.js.map +1 -0
  87. package/lib/cjs/widget/components/ReportMappings.d.ts.map +1 -1
  88. package/lib/cjs/widget/components/ReportMappings.js +1 -1
  89. package/lib/cjs/widget/components/ReportMappings.js.map +1 -1
  90. package/lib/cjs/widget/components/Reports.d.ts.map +1 -1
  91. package/lib/cjs/widget/components/Reports.js +34 -26
  92. package/lib/cjs/widget/components/Reports.js.map +1 -1
  93. package/lib/cjs/widget/components/Reports.scss +7 -3
  94. package/lib/cjs/widget/components/ReportsContainer.scss +3 -0
  95. package/lib/cjs/widget/components/SearchBar.js +1 -1
  96. package/lib/cjs/widget/components/SearchBar.js.map +1 -1
  97. package/lib/cjs/widget/components/SearchBar.scss +6 -0
  98. package/lib/esm/tsconfig.tsbuildinfo +1 -1
  99. package/lib/esm/widget/components/BulkExtractor.d.ts +28 -0
  100. package/lib/esm/widget/components/BulkExtractor.d.ts.map +1 -0
  101. package/lib/esm/widget/components/BulkExtractor.js +123 -0
  102. package/lib/esm/widget/components/BulkExtractor.js.map +1 -0
  103. package/lib/esm/widget/components/Constants.d.ts +4 -0
  104. package/lib/esm/widget/components/Constants.d.ts.map +1 -0
  105. package/lib/esm/widget/components/Constants.js +8 -0
  106. package/lib/esm/widget/components/Constants.js.map +1 -0
  107. package/lib/esm/widget/components/ExtractionStates/FailedExtractionState.d.ts +8 -0
  108. package/lib/esm/widget/components/ExtractionStates/FailedExtractionState.d.ts.map +1 -0
  109. package/lib/esm/widget/components/ExtractionStates/FailedExtractionState.js +16 -0
  110. package/lib/esm/widget/components/ExtractionStates/FailedExtractionState.js.map +1 -0
  111. package/lib/esm/widget/components/ExtractionStates/QueuedExtractionState.d.ts +3 -0
  112. package/lib/esm/widget/components/ExtractionStates/QueuedExtractionState.d.ts.map +1 -0
  113. package/lib/esm/widget/components/ExtractionStates/QueuedExtractionState.js +11 -0
  114. package/lib/esm/widget/components/ExtractionStates/QueuedExtractionState.js.map +1 -0
  115. package/lib/esm/widget/components/ExtractionStates/RunningExtractionState.d.ts +3 -0
  116. package/lib/esm/widget/components/ExtractionStates/RunningExtractionState.d.ts.map +1 -0
  117. package/lib/esm/widget/components/ExtractionStates/RunningExtractionState.js +10 -0
  118. package/lib/esm/widget/components/ExtractionStates/RunningExtractionState.js.map +1 -0
  119. package/lib/esm/widget/components/ExtractionStates/StartingExtractionState.d.ts +3 -0
  120. package/lib/esm/widget/components/ExtractionStates/StartingExtractionState.d.ts.map +1 -0
  121. package/lib/esm/widget/components/ExtractionStates/StartingExtractionState.js +11 -0
  122. package/lib/esm/widget/components/ExtractionStates/StartingExtractionState.js.map +1 -0
  123. package/lib/esm/widget/components/ExtractionStates/SucceededExtractionState.d.ts +8 -0
  124. package/lib/esm/widget/components/ExtractionStates/SucceededExtractionState.d.ts.map +1 -0
  125. package/lib/esm/widget/components/ExtractionStates/SucceededExtractionState.js +16 -0
  126. package/lib/esm/widget/components/ExtractionStates/SucceededExtractionState.js.map +1 -0
  127. package/lib/esm/widget/components/ExtractionStatus.d.ts +17 -0
  128. package/lib/esm/widget/components/ExtractionStatus.d.ts.map +1 -0
  129. package/lib/esm/widget/components/ExtractionStatus.js +53 -0
  130. package/lib/esm/widget/components/ExtractionStatus.js.map +1 -0
  131. package/lib/esm/widget/components/ExtractionStatus.scss +27 -0
  132. package/lib/esm/widget/components/HorizontalTile.d.ts +8 -7
  133. package/lib/esm/widget/components/HorizontalTile.d.ts.map +1 -1
  134. package/lib/esm/widget/components/HorizontalTile.js +10 -6
  135. package/lib/esm/widget/components/HorizontalTile.js.map +1 -1
  136. package/lib/esm/widget/components/HorizontalTile.scss +42 -22
  137. package/lib/esm/widget/components/ReportHorizontalTile.d.ts +16 -0
  138. package/lib/esm/widget/components/ReportHorizontalTile.d.ts.map +1 -0
  139. package/lib/esm/widget/components/ReportHorizontalTile.js +65 -0
  140. package/lib/esm/widget/components/ReportHorizontalTile.js.map +1 -0
  141. package/lib/esm/widget/components/ReportMappings.d.ts.map +1 -1
  142. package/lib/esm/widget/components/ReportMappings.js +1 -1
  143. package/lib/esm/widget/components/ReportMappings.js.map +1 -1
  144. package/lib/esm/widget/components/Reports.d.ts.map +1 -1
  145. package/lib/esm/widget/components/Reports.js +36 -28
  146. package/lib/esm/widget/components/Reports.js.map +1 -1
  147. package/lib/esm/widget/components/Reports.scss +7 -3
  148. package/lib/esm/widget/components/ReportsContainer.scss +3 -0
  149. package/lib/esm/widget/components/SearchBar.js +1 -1
  150. package/lib/esm/widget/components/SearchBar.js.map +1 -1
  151. package/lib/esm/widget/components/SearchBar.scss +6 -0
  152. package/lib/public/locales/en/ReportsConfigWidget.json +2 -1
  153. package/package.json +5 -2
  154. package/public/locales/en/ReportsConfigWidget.json +2 -1
  155. package/reports-config-widget-react.build.error.log +4 -4
  156. package/reports-config-widget-react.build.log +44 -34
  157. package/src/widget/components/BulkExtractor.ts +156 -0
  158. package/src/widget/components/Constants.ts +7 -0
  159. package/src/widget/components/ExtractionStates/FailedExtractionState.tsx +34 -0
  160. package/src/widget/components/ExtractionStates/QueuedExtractionState.tsx +20 -0
  161. package/src/widget/components/ExtractionStates/RunningExtractionState.tsx +18 -0
  162. package/src/widget/components/ExtractionStates/StartingExtractionState.tsx +22 -0
  163. package/src/widget/components/ExtractionStates/SucceededExtractionState.tsx +34 -0
  164. package/src/widget/components/ExtractionStatus.scss +27 -0
  165. package/src/widget/components/ExtractionStatus.tsx +70 -0
  166. package/src/widget/components/HorizontalTile.scss +42 -22
  167. package/src/widget/components/HorizontalTile.tsx +45 -34
  168. package/src/widget/components/ReportHorizontalTile.tsx +131 -0
  169. package/src/widget/components/ReportMappings.tsx +4 -10
  170. package/src/widget/components/Reports.scss +7 -3
  171. package/src/widget/components/Reports.tsx +66 -60
  172. package/src/widget/components/ReportsContainer.scss +3 -0
  173. package/src/widget/components/SearchBar.scss +6 -0
  174. package/src/widget/components/SearchBar.tsx +1 -1
@@ -0,0 +1,28 @@
1
+ import type { ReportMapping } from "@itwin/insights-client";
2
+ import type { ReportsApiConfig } from "../context/ReportsApiConfigContext";
3
+ import { ExtractionStates } from "./ExtractionStatus";
4
+ export declare type ReportMappingAndMapping = ReportMapping & {
5
+ mappingName: string;
6
+ mappingDescription: string;
7
+ iModelName: string;
8
+ };
9
+ export default class BulkExtractor {
10
+ private _reportRunIds;
11
+ private _reportsClientApi;
12
+ private _extractionClientApi;
13
+ private _accessToken;
14
+ private _reportStates;
15
+ private _timeFetched;
16
+ private _reportIds;
17
+ constructor(apiConfig: ReportsApiConfig, reportIds: string[]);
18
+ private getStates;
19
+ private fetchStates;
20
+ getState(reportId: string): ExtractionStates;
21
+ clearJob(reportId: string): void;
22
+ private static getFinalState;
23
+ private getSingleState;
24
+ startJobs(reportIds: string[]): Promise<void>;
25
+ private runExtraction;
26
+ private fetchReportIModels;
27
+ }
28
+ //# sourceMappingURL=BulkExtractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BulkExtractor.d.ts","sourceRoot":"","sources":["../../../../src/widget/components/BulkExtractor.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,oBAAY,uBAAuB,GAAG,aAAa,GAAG;IACpD,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,aAAa;IAChC,OAAO,CAAC,aAAa,CAA+B;IACpD,OAAO,CAAC,iBAAiB,CAAgB;IACzC,OAAO,CAAC,oBAAoB,CAAmB;IAC/C,OAAO,CAAC,YAAY,CAAwB;IAC5C,OAAO,CAAC,aAAa,CAAuC;IAC5D,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,UAAU,CAAW;gBAEjB,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,EAAE;YAQ9C,SAAS;YA4BT,WAAW;IAIlB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB;IAW5C,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIvC,OAAO,CAAC,MAAM,CAAC,aAAa;YAgBd,cAAc;IAUf,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;YA4B5C,aAAa;YAab,kBAAkB;CAOjC"}
@@ -0,0 +1,123 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ import { ExtractionClient, ExtractorState, REPORTING_BASE_PATH, ReportsClient } from "@itwin/insights-client";
6
+ import { generateUrl, handleError } from "./utils";
7
+ import { ExtractionStates } from "./ExtractionStatus";
8
+ import { STATUS_CHECK_INTERVAL } from "./Constants";
9
+ export default class BulkExtractor {
10
+ constructor(apiConfig, reportIds) {
11
+ this._reportRunIds = new Map();
12
+ this._reportStates = new Map();
13
+ this._timeFetched = new Date();
14
+ const url = generateUrl(REPORTING_BASE_PATH, apiConfig.baseUrl);
15
+ this._reportsClientApi = new ReportsClient(url);
16
+ this._extractionClientApi = new ExtractionClient(url);
17
+ this._accessToken = apiConfig.getAccessToken;
18
+ this._reportIds = reportIds;
19
+ }
20
+ async getStates(reportIds) {
21
+ const stateByReportId = new Map();
22
+ const stateByRunId = new Map();
23
+ for (const reportId of reportIds) {
24
+ const runs = this._reportRunIds.get(reportId);
25
+ if (!runs) {
26
+ stateByReportId.set(reportId, ExtractionStates.None);
27
+ continue;
28
+ }
29
+ const states = [];
30
+ for (const runId of runs) {
31
+ const state = stateByRunId.get(runId);
32
+ if (state) {
33
+ states.push(state);
34
+ }
35
+ else {
36
+ const runState = await this.getSingleState(runId, await this._accessToken());
37
+ states.push(runState);
38
+ stateByRunId.set(runId, runState);
39
+ }
40
+ }
41
+ const finalState = BulkExtractor.getFinalState(states);
42
+ stateByReportId.set(reportId, finalState);
43
+ }
44
+ return stateByReportId;
45
+ }
46
+ async fetchStates() {
47
+ this._reportStates = await this.getStates(this._reportIds);
48
+ }
49
+ getState(reportId) {
50
+ var _a;
51
+ if ((new Date().getTime() - this._timeFetched.getTime()) > STATUS_CHECK_INTERVAL) {
52
+ this._timeFetched = new Date();
53
+ this.fetchStates().catch((e) =>
54
+ /* eslint-disable no-console */
55
+ console.error(e));
56
+ }
57
+ return (_a = this._reportStates.get(reportId)) !== null && _a !== void 0 ? _a : ExtractionStates.None;
58
+ }
59
+ clearJob(reportId) {
60
+ this._reportRunIds.delete(reportId);
61
+ }
62
+ static getFinalState(states) {
63
+ if (states.includes(ExtractorState.Failed))
64
+ return ExtractionStates.Failed;
65
+ if (states.includes(ExtractorState.Queued))
66
+ return ExtractionStates.Queued;
67
+ if (states.includes(ExtractorState.Running))
68
+ return ExtractionStates.Running;
69
+ if (states.includes(ExtractorState.Succeeded))
70
+ return ExtractionStates.Succeeded;
71
+ return ExtractionStates.Failed;
72
+ }
73
+ async getSingleState(runId, accessToken) {
74
+ try {
75
+ const response = await this._extractionClientApi.getExtractionStatus(accessToken, runId);
76
+ return response.state;
77
+ }
78
+ catch (error) {
79
+ handleError(error.status);
80
+ }
81
+ return ExtractorState.Failed;
82
+ }
83
+ async startJobs(reportIds) {
84
+ const reportIModelIds = new Map();
85
+ for (const reportId of reportIds) {
86
+ const reportIModels = await this.fetchReportIModels(reportId);
87
+ reportIModelIds.set(reportId, reportIModels);
88
+ this._reportStates.set(reportId, ExtractionStates.Starting);
89
+ }
90
+ const iModels = new Set(Array.from(reportIModelIds.values()).flat());
91
+ const extractionMapPromise = Array.from(iModels).map(async (iModel) => {
92
+ const run = await this.runExtraction(iModel);
93
+ return [iModel, run];
94
+ });
95
+ const extractionMap = await Promise.all(extractionMapPromise);
96
+ const extractionByIModel = new Map(extractionMap);
97
+ reportIds.forEach((reportId) => {
98
+ const reportIModels = reportIModelIds.get(reportId);
99
+ const runs = [];
100
+ reportIModels.forEach((iModelId) => {
101
+ const runId = extractionByIModel.get(iModelId);
102
+ if (runId)
103
+ runs.push(runId);
104
+ });
105
+ this._reportRunIds.set(reportId, runs);
106
+ });
107
+ }
108
+ async runExtraction(iModelId) {
109
+ try {
110
+ const response = await this._extractionClientApi.runExtraction(await this._accessToken(), iModelId);
111
+ return response.id;
112
+ }
113
+ catch (error) {
114
+ handleError(error.status);
115
+ }
116
+ return undefined;
117
+ }
118
+ async fetchReportIModels(reportId) {
119
+ const reportMappings = await this._reportsClientApi.getReportMappings(await this._accessToken(), reportId);
120
+ return reportMappings.map((x) => x.imodelId);
121
+ }
122
+ }
123
+ //# sourceMappingURL=BulkExtractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BulkExtractor.js","sourceRoot":"","sources":["../../../../src/widget/components/BulkExtractor.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport { ExtractionClient, ExtractorState, REPORTING_BASE_PATH, ReportsClient } from \"@itwin/insights-client\";\nimport type { ReportMapping } from \"@itwin/insights-client\";\nimport { generateUrl, handleError } from \"./utils\";\nimport type { ReportsApiConfig } from \"../context/ReportsApiConfigContext\";\nimport { ExtractionStates } from \"./ExtractionStatus\";\nimport { STATUS_CHECK_INTERVAL } from \"./Constants\";\n\nexport type ReportMappingAndMapping = ReportMapping & {\n mappingName: string;\n mappingDescription: string;\n iModelName: string;\n};\n\nexport default class BulkExtractor {\n private _reportRunIds = new Map<string, string[]>();\n private _reportsClientApi: ReportsClient;\n private _extractionClientApi: ExtractionClient;\n private _accessToken: () => Promise<string>;\n private _reportStates = new Map<string, ExtractionStates>();\n private _timeFetched = new Date();\n private _reportIds: string[];\n\n constructor(apiConfig: ReportsApiConfig, reportIds: string[]) {\n const url = generateUrl(REPORTING_BASE_PATH, apiConfig.baseUrl);\n this._reportsClientApi = new ReportsClient(url);\n this._extractionClientApi = new ExtractionClient(url);\n this._accessToken = apiConfig.getAccessToken;\n this._reportIds = reportIds;\n }\n\n private async getStates(reportIds: string[]): Promise<Map<string, ExtractionStates>> {\n const stateByReportId = new Map<string, ExtractionStates>();\n const stateByRunId = new Map<string, ExtractorState>();\n\n for (const reportId of reportIds) {\n const runs = this._reportRunIds.get(reportId);\n if (!runs) {\n stateByReportId.set(reportId, ExtractionStates.None);\n continue;\n }\n\n const states: ExtractorState[] = [];\n for (const runId of runs) {\n const state = stateByRunId.get(runId);\n if (state) {\n states.push(state);\n } else {\n const runState = await this.getSingleState(runId, await this._accessToken());\n states.push(runState);\n stateByRunId.set(runId, runState);\n }\n }\n const finalState = BulkExtractor.getFinalState(states);\n stateByReportId.set(reportId, finalState);\n }\n return stateByReportId;\n }\n\n private async fetchStates(): Promise<void> {\n this._reportStates = await this.getStates(this._reportIds);\n }\n\n public getState(reportId: string): ExtractionStates {\n if ((new Date().getTime() - this._timeFetched.getTime()) > STATUS_CHECK_INTERVAL) {\n this._timeFetched = new Date();\n this.fetchStates().catch((e) =>\n /* eslint-disable no-console */\n console.error(e)\n );\n }\n return this._reportStates.get(reportId) ?? ExtractionStates.None;\n }\n\n public clearJob(reportId: string): void {\n this._reportRunIds.delete(reportId);\n }\n\n private static getFinalState(states: ExtractorState[]): ExtractionStates {\n if (states.includes(ExtractorState.Failed))\n return ExtractionStates.Failed;\n\n if (states.includes(ExtractorState.Queued))\n return ExtractionStates.Queued;\n\n if (states.includes(ExtractorState.Running))\n return ExtractionStates.Running;\n\n if (states.includes(ExtractorState.Succeeded))\n return ExtractionStates.Succeeded;\n\n return ExtractionStates.Failed;\n }\n\n private async getSingleState(runId: string, accessToken: string): Promise<ExtractorState> {\n try {\n const response = await this._extractionClientApi.getExtractionStatus(accessToken, runId);\n return response.state;\n } catch (error: any) {\n handleError(error.status);\n }\n return ExtractorState.Failed;\n }\n\n public async startJobs(reportIds: string[]): Promise<void> {\n const reportIModelIds = new Map<string, string[]>();\n for (const reportId of reportIds) {\n const reportIModels = await this.fetchReportIModels(reportId);\n reportIModelIds.set(reportId, reportIModels);\n this._reportStates.set(reportId, ExtractionStates.Starting);\n }\n const iModels = new Set(Array.from(reportIModelIds.values()).flat());\n const extractionMapPromise =\n Array.from(iModels).map(async (iModel): Promise<[string, string | undefined]> => {\n const run = await this.runExtraction(iModel);\n return [iModel, run];\n });\n\n const extractionMap = await Promise.all(extractionMapPromise);\n const extractionByIModel = new Map<string, string | undefined>(extractionMap);\n reportIds.forEach((reportId) => {\n const reportIModels = reportIModelIds.get(reportId)!;\n const runs: string[] = [];\n reportIModels.forEach((iModelId) => {\n const runId = extractionByIModel.get(iModelId);\n if (runId)\n runs.push(runId);\n });\n this._reportRunIds.set(reportId, runs);\n });\n }\n\n private async runExtraction(iModelId: string): Promise<string | undefined> {\n try {\n const response = await this._extractionClientApi.runExtraction(\n await this._accessToken(),\n iModelId\n );\n return response.id;\n } catch (error: any) {\n handleError(error.status);\n }\n return undefined;\n }\n\n private async fetchReportIModels(reportId: string): Promise<string[]> {\n const reportMappings = await this._reportsClientApi.getReportMappings(\n await this._accessToken(),\n reportId\n );\n return reportMappings.map((x) => x.imodelId);\n }\n}\n"]}
@@ -0,0 +1,4 @@
1
+ export declare const STATUS_CHECK_INTERVAL = 5000;
2
+ export declare const ANIMATION_DELAY = "5s";
3
+ export declare const ANIMATION_DURATION = "1s";
4
+ //# sourceMappingURL=Constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Constants.d.ts","sourceRoot":"","sources":["../../../../src/widget/components/Constants.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAC1C,eAAO,MAAM,eAAe,OAAO,CAAC;AACpC,eAAO,MAAM,kBAAkB,OAAO,CAAC"}
@@ -0,0 +1,8 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ export const STATUS_CHECK_INTERVAL = 5000;
6
+ export const ANIMATION_DELAY = "5s";
7
+ export const ANIMATION_DURATION = "1s";
8
+ //# sourceMappingURL=Constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Constants.js","sourceRoot":"","sources":["../../../../src/widget/components/Constants.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAC1C,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC;AACpC,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nexport const STATUS_CHECK_INTERVAL = 5000;\nexport const ANIMATION_DELAY = \"5s\";\nexport const ANIMATION_DURATION = \"1s\";\n"]}
@@ -0,0 +1,8 @@
1
+ /// <reference types="react" />
2
+ interface ExtractionStateProps {
3
+ animation: boolean;
4
+ onAnimationEnd: () => void;
5
+ }
6
+ export declare const FailedExtractionState: ({ animation, onAnimationEnd }: ExtractionStateProps) => JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=FailedExtractionState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FailedExtractionState.d.ts","sourceRoot":"","sources":["../../../../../src/widget/components/ExtractionStates/FailedExtractionState.tsx"],"names":[],"mappings":";AASA,UAAU,oBAAoB;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED,eAAO,MAAM,qBAAqB,kCAAmC,oBAAoB,gBAmBxF,CAAC"}
@@ -0,0 +1,16 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ import React from "react";
6
+ import { SvgStatusError } from "@itwin/itwinui-icons-color-react";
7
+ import { ReportsConfigWidget } from "../../../ReportsConfigWidget";
8
+ import { ANIMATION_DELAY, ANIMATION_DURATION } from "../Constants";
9
+ export const FailedExtractionState = ({ animation, onAnimationEnd }) => (React.createElement("div", { title: ReportsConfigWidget.localization.getLocalizedString("ReportsConfigWidget:Failed"), className: "rcw-extraction-status" },
10
+ React.createElement("div", { className: `rcw-status-icon`, style: {
11
+ animationName: animation ? "rcw-fade-out" : "",
12
+ animationDelay: ANIMATION_DELAY,
13
+ animationDuration: ANIMATION_DURATION,
14
+ }, onAnimationEnd: onAnimationEnd },
15
+ React.createElement(SvgStatusError, null))));
16
+ //# sourceMappingURL=FailedExtractionState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FailedExtractionState.js","sourceRoot":"","sources":["../../../../../src/widget/components/ExtractionStates/FailedExtractionState.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAOnE,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,EAAE,SAAS,EAAE,cAAc,EAAwB,EAAE,EAAE,CAAC,CAC5F,6BACE,KAAK,EAAE,mBAAmB,CAAC,YAAY,CAAC,kBAAkB,CACxD,4BAA4B,CAC7B,EACD,SAAS,EAAC,uBAAuB;IAEjC,6BACE,SAAS,EAAE,iBAAiB,EAC5B,KAAK,EAAE;YACL,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;YAC9C,cAAc,EAAE,eAAe;YAC/B,iBAAiB,EAAE,kBAAkB;SACtC,EACD,cAAc,EAAE,cAAc;QAE9B,oBAAC,cAAc,OAAG,CACd,CACF,CACP,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport React from \"react\";\nimport { SvgStatusError } from \"@itwin/itwinui-icons-color-react\";\nimport { ReportsConfigWidget } from \"../../../ReportsConfigWidget\";\nimport { ANIMATION_DELAY, ANIMATION_DURATION } from \"../Constants\";\n\ninterface ExtractionStateProps {\n animation: boolean;\n onAnimationEnd: () => void;\n}\n\nexport const FailedExtractionState = ({ animation, onAnimationEnd }: ExtractionStateProps) => (\n <div\n title={ReportsConfigWidget.localization.getLocalizedString(\n \"ReportsConfigWidget:Failed\"\n )}\n className=\"rcw-extraction-status\"\n >\n <div\n className={`rcw-status-icon`}\n style={{\n animationName: animation ? \"rcw-fade-out\" : \"\",\n animationDelay: ANIMATION_DELAY,\n animationDuration: ANIMATION_DURATION,\n }}\n onAnimationEnd={onAnimationEnd}\n >\n <SvgStatusError />\n </div>\n </div>\n);\n"]}
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ export declare const QueuedExtractionState: () => JSX.Element;
3
+ //# sourceMappingURL=QueuedExtractionState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueuedExtractionState.d.ts","sourceRoot":"","sources":["../../../../../src/widget/components/ExtractionStates/QueuedExtractionState.tsx"],"names":[],"mappings":";AAQA,eAAO,MAAM,qBAAqB,mBAWjC,CAAC"}
@@ -0,0 +1,11 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ import React from "react";
6
+ import { SvgStatusPending } from "@itwin/itwinui-icons-color-react";
7
+ import { ReportsConfigWidget } from "../../../ReportsConfigWidget";
8
+ export const QueuedExtractionState = () => (React.createElement("div", { title: ReportsConfigWidget.localization.getLocalizedString("ReportsConfigWidget:Queued"), className: "rcw-extraction-status" },
9
+ React.createElement("div", { className: "rcw-status-icon" },
10
+ React.createElement(SvgStatusPending, null))));
11
+ //# sourceMappingURL=QueuedExtractionState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueuedExtractionState.js","sourceRoot":"","sources":["../../../../../src/widget/components/ExtractionStates/QueuedExtractionState.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAEnE,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,EAAE,CAAC,CACzC,6BACE,KAAK,EAAE,mBAAmB,CAAC,YAAY,CAAC,kBAAkB,CACxD,4BAA4B,CAC7B,EACD,SAAS,EAAC,uBAAuB;IAEjC,6BAAK,SAAS,EAAC,iBAAiB;QAC9B,oBAAC,gBAAgB,OAAG,CAChB,CACF,CACP,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport React from \"react\";\nimport { SvgStatusPending } from \"@itwin/itwinui-icons-color-react\";\nimport { ReportsConfigWidget } from \"../../../ReportsConfigWidget\";\n\nexport const QueuedExtractionState = () => (\n <div\n title={ReportsConfigWidget.localization.getLocalizedString(\n \"ReportsConfigWidget:Queued\"\n )}\n className=\"rcw-extraction-status\"\n >\n <div className=\"rcw-status-icon\">\n <SvgStatusPending />\n </div>\n </div>\n);\n"]}
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ export declare const RunningExtractionState: () => JSX.Element;
3
+ //# sourceMappingURL=RunningExtractionState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RunningExtractionState.d.ts","sourceRoot":"","sources":["../../../../../src/widget/components/ExtractionStates/RunningExtractionState.tsx"],"names":[],"mappings":";AAQA,eAAO,MAAM,sBAAsB,mBASlC,CAAC"}
@@ -0,0 +1,10 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ import React from "react";
6
+ import { ProgressRadial } from "@itwin/itwinui-react";
7
+ import { ReportsConfigWidget } from "../../../ReportsConfigWidget";
8
+ export const RunningExtractionState = () => (React.createElement("div", { title: ReportsConfigWidget.localization.getLocalizedString("ReportsConfigWidget:Running"), className: "rcw-extraction-status" },
9
+ React.createElement(ProgressRadial, { size: "x-small", indeterminate: true })));
10
+ //# sourceMappingURL=RunningExtractionState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RunningExtractionState.js","sourceRoot":"","sources":["../../../../../src/widget/components/ExtractionStates/RunningExtractionState.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAEnE,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,EAAE,CAAC,CAC1C,6BACE,KAAK,EAAE,mBAAmB,CAAC,YAAY,CAAC,kBAAkB,CACxD,6BAA6B,CAC9B,EACD,SAAS,EAAC,uBAAuB;IAEjC,oBAAC,cAAc,IAAC,IAAI,EAAC,SAAS,EAAC,aAAa,SAAG,CAC3C,CACP,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport React from \"react\";\nimport { ProgressRadial } from \"@itwin/itwinui-react\";\nimport { ReportsConfigWidget } from \"../../../ReportsConfigWidget\";\n\nexport const RunningExtractionState = () => (\n <div\n title={ReportsConfigWidget.localization.getLocalizedString(\n \"ReportsConfigWidget:Running\"\n )}\n className=\"rcw-extraction-status\"\n >\n <ProgressRadial size=\"x-small\" indeterminate />\n </div>\n);\n"]}
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ export declare const StartingExtractionState: () => JSX.Element;
3
+ //# sourceMappingURL=StartingExtractionState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StartingExtractionState.d.ts","sourceRoot":"","sources":["../../../../../src/widget/components/ExtractionStates/StartingExtractionState.tsx"],"names":[],"mappings":";AAQA,eAAO,MAAM,uBAAuB,mBAanC,CAAC"}
@@ -0,0 +1,11 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ import React from "react";
6
+ import { SvgStatusPendingHollow } from "@itwin/itwinui-icons-color-react";
7
+ import { ReportsConfigWidget } from "../../../ReportsConfigWidget";
8
+ export const StartingExtractionState = () => (React.createElement("div", { title: ReportsConfigWidget.localization.getLocalizedString("ReportsConfigWidget:Starting"), className: "rcw-extraction-status" },
9
+ React.createElement("div", { className: "rcw-status-icon" },
10
+ React.createElement(SvgStatusPendingHollow, null))));
11
+ //# sourceMappingURL=StartingExtractionState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StartingExtractionState.js","sourceRoot":"","sources":["../../../../../src/widget/components/ExtractionStates/StartingExtractionState.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAEnE,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,EAAE,CAAC,CAC3C,6BACE,KAAK,EACH,mBAAmB,CAAC,YAAY,CAAC,kBAAkB,CACjD,8BAA8B,CAC/B,EAEH,SAAS,EAAC,uBAAuB;IAEjC,6BAAK,SAAS,EAAC,iBAAiB;QAC9B,oBAAC,sBAAsB,OAAG,CACtB,CACF,CACP,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport React from \"react\";\nimport { SvgStatusPendingHollow } from \"@itwin/itwinui-icons-color-react\";\nimport { ReportsConfigWidget } from \"../../../ReportsConfigWidget\";\n\nexport const StartingExtractionState = () => (\n <div\n title={\n ReportsConfigWidget.localization.getLocalizedString(\n \"ReportsConfigWidget:Starting\"\n )\n }\n className=\"rcw-extraction-status\"\n >\n <div className=\"rcw-status-icon\">\n <SvgStatusPendingHollow />\n </div>\n </div>\n);\n"]}
@@ -0,0 +1,8 @@
1
+ /// <reference types="react" />
2
+ interface ExtractionStateProps {
3
+ animation: boolean;
4
+ onAnimationEnd: () => void;
5
+ }
6
+ export declare const SucceededExtractionState: ({ animation, onAnimationEnd }: ExtractionStateProps) => JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=SucceededExtractionState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SucceededExtractionState.d.ts","sourceRoot":"","sources":["../../../../../src/widget/components/ExtractionStates/SucceededExtractionState.tsx"],"names":[],"mappings":";AASA,UAAU,oBAAoB;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED,eAAO,MAAM,wBAAwB,kCAAmC,oBAAoB,gBAmB3F,CAAC"}
@@ -0,0 +1,16 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ import React from "react";
6
+ import { SvgStatusSuccess } from "@itwin/itwinui-icons-color-react";
7
+ import { ReportsConfigWidget } from "../../../ReportsConfigWidget";
8
+ import { ANIMATION_DELAY, ANIMATION_DURATION } from "../Constants";
9
+ export const SucceededExtractionState = ({ animation, onAnimationEnd }) => (React.createElement("div", { title: ReportsConfigWidget.localization.getLocalizedString("ReportsConfigWidget:Success"), className: "rcw-extraction-status" },
10
+ React.createElement("div", { className: `rcw-status-icon`, style: {
11
+ animationName: animation ? "rcw-fade-out" : "",
12
+ animationDelay: ANIMATION_DELAY,
13
+ animationDuration: ANIMATION_DURATION,
14
+ }, onAnimationEnd: onAnimationEnd },
15
+ React.createElement(SvgStatusSuccess, null))));
16
+ //# sourceMappingURL=SucceededExtractionState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SucceededExtractionState.js","sourceRoot":"","sources":["../../../../../src/widget/components/ExtractionStates/SucceededExtractionState.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAOnE,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,EAAE,SAAS,EAAE,cAAc,EAAwB,EAAE,EAAE,CAAC,CAC/F,6BACE,KAAK,EAAE,mBAAmB,CAAC,YAAY,CAAC,kBAAkB,CACxD,6BAA6B,CAC9B,EACD,SAAS,EAAC,uBAAuB;IAEjC,6BACE,SAAS,EAAE,iBAAiB,EAC5B,KAAK,EAAE;YACL,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;YAC9C,cAAc,EAAE,eAAe;YAC/B,iBAAiB,EAAE,kBAAkB;SACtC,EACD,cAAc,EAAE,cAAc;QAE9B,oBAAC,gBAAgB,OAAG,CAChB,CACF,CACP,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport React from \"react\";\nimport { SvgStatusSuccess } from \"@itwin/itwinui-icons-color-react\";\nimport { ReportsConfigWidget } from \"../../../ReportsConfigWidget\";\nimport { ANIMATION_DELAY, ANIMATION_DURATION } from \"../Constants\";\n\ninterface ExtractionStateProps {\n animation: boolean;\n onAnimationEnd: () => void;\n}\n\nexport const SucceededExtractionState = ({ animation, onAnimationEnd }: ExtractionStateProps) => (\n <div\n title={ReportsConfigWidget.localization.getLocalizedString(\n \"ReportsConfigWidget:Success\"\n )}\n className=\"rcw-extraction-status\"\n >\n <div\n className={`rcw-status-icon`}\n style={{\n animationName: animation ? \"rcw-fade-out\" : \"\",\n animationDelay: ANIMATION_DELAY,\n animationDuration: ANIMATION_DURATION,\n }}\n onAnimationEnd={onAnimationEnd}\n >\n <SvgStatusSuccess />\n </div>\n </div>\n);\n"]}
@@ -0,0 +1,17 @@
1
+ /// <reference types="react" />
2
+ import "./ExtractionStatus.scss";
3
+ export declare enum ExtractionStates {
4
+ None = 0,
5
+ Starting = 1,
6
+ Queued = 2,
7
+ Running = 3,
8
+ Succeeded = 4,
9
+ Failed = 5
10
+ }
11
+ interface ExtractionStatusProps {
12
+ state: ExtractionStates;
13
+ clearExtractionState: () => void;
14
+ }
15
+ export declare const ExtractionStatus: ({ state, clearExtractionState, }: ExtractionStatusProps) => JSX.Element;
16
+ export {};
17
+ //# sourceMappingURL=ExtractionStatus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExtractionStatus.d.ts","sourceRoot":"","sources":["../../../../src/widget/components/ExtractionStatus.tsx"],"names":[],"mappings":";AAMA,OAAO,yBAAyB,CAAC;AAQjC,oBAAY,gBAAgB;IAC1B,IAAI,IAAA;IACJ,QAAQ,IAAA;IACR,MAAM,IAAA;IACN,OAAO,IAAA;IACP,SAAS,IAAA;IACT,MAAM,IAAA;CACP;AAED,UAAU,qBAAqB;IAC7B,KAAK,EAAE,gBAAgB,CAAC;IACxB,oBAAoB,EAAE,MAAM,IAAI,CAAC;CAClC;AAED,eAAO,MAAM,gBAAgB,qCAG1B,qBAAqB,gBAsCvB,CAAC"}
@@ -0,0 +1,53 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ import * as React from "react";
6
+ import { useEffect, useState } from "react";
7
+ import "./ExtractionStatus.scss";
8
+ import { STATUS_CHECK_INTERVAL } from "./Constants";
9
+ import { StartingExtractionState } from "./ExtractionStates/StartingExtractionState";
10
+ import { RunningExtractionState } from "./ExtractionStates/RunningExtractionState";
11
+ import { FailedExtractionState } from "./ExtractionStates/FailedExtractionState";
12
+ import { QueuedExtractionState } from "./ExtractionStates/QueuedExtractionState";
13
+ import { SucceededExtractionState } from "./ExtractionStates/SucceededExtractionState";
14
+ export var ExtractionStates;
15
+ (function (ExtractionStates) {
16
+ ExtractionStates[ExtractionStates["None"] = 0] = "None";
17
+ ExtractionStates[ExtractionStates["Starting"] = 1] = "Starting";
18
+ ExtractionStates[ExtractionStates["Queued"] = 2] = "Queued";
19
+ ExtractionStates[ExtractionStates["Running"] = 3] = "Running";
20
+ ExtractionStates[ExtractionStates["Succeeded"] = 4] = "Succeeded";
21
+ ExtractionStates[ExtractionStates["Failed"] = 5] = "Failed";
22
+ })(ExtractionStates || (ExtractionStates = {}));
23
+ export const ExtractionStatus = ({ state, clearExtractionState, }) => {
24
+ const [fadeOut, setFadeOut] = useState(false);
25
+ const onAnimationEnd = () => {
26
+ clearExtractionState();
27
+ setFadeOut(false);
28
+ };
29
+ useEffect(() => {
30
+ let timer;
31
+ switch (state) {
32
+ case ExtractionStates.Succeeded:
33
+ case ExtractionStates.Failed:
34
+ timer = window.setTimeout(() => setFadeOut(true), STATUS_CHECK_INTERVAL);
35
+ }
36
+ return () => window.clearTimeout(timer);
37
+ }, [state]);
38
+ switch (state) {
39
+ case ExtractionStates.Starting:
40
+ return (React.createElement(StartingExtractionState, null));
41
+ case ExtractionStates.Queued:
42
+ return (React.createElement(QueuedExtractionState, null));
43
+ case ExtractionStates.Running:
44
+ return (React.createElement(RunningExtractionState, null));
45
+ case ExtractionStates.Succeeded:
46
+ return (React.createElement(SucceededExtractionState, { animation: fadeOut, onAnimationEnd: onAnimationEnd }));
47
+ case ExtractionStates.Failed:
48
+ return (React.createElement(FailedExtractionState, { animation: fadeOut, onAnimationEnd: onAnimationEnd }));
49
+ default:
50
+ return React.createElement(React.Fragment, null);
51
+ }
52
+ };
53
+ //# sourceMappingURL=ExtractionStatus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExtractionStatus.js","sourceRoot":"","sources":["../../../../src/widget/components/ExtractionStatus.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,yBAAyB,CAAC;AACjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AACrF,OAAO,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AACnF,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AACjF,OAAO,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAC;AAEvF,MAAM,CAAN,IAAY,gBAOX;AAPD,WAAY,gBAAgB;IAC1B,uDAAI,CAAA;IACJ,+DAAQ,CAAA;IACR,2DAAM,CAAA;IACN,6DAAO,CAAA;IACP,iEAAS,CAAA;IACT,2DAAM,CAAA;AACR,CAAC,EAPW,gBAAgB,KAAhB,gBAAgB,QAO3B;AAOD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,EAC/B,KAAK,EACL,oBAAoB,GACE,EAAE,EAAE;IAC1B,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAC;IAEvD,MAAM,cAAc,GAAG,GAAG,EAAE;QAC1B,oBAAoB,EAAE,CAAC;QACvB,UAAU,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,KAAa,CAAC;QAClB,QAAQ,KAAK,EAAE;YACb,KAAK,gBAAgB,CAAC,SAAS,CAAC;YAChC,KAAK,gBAAgB,CAAC,MAAM;gBAC1B,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,qBAAqB,CAAC,CAAC;SAC5E;QACD,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,QAAQ,KAAK,EAAE;QACb,KAAK,gBAAgB,CAAC,QAAQ;YAC5B,OAAO,CAAC,oBAAC,uBAAuB,OAAG,CAAC,CAAC;QACvC,KAAK,gBAAgB,CAAC,MAAM;YAC1B,OAAO,CAAC,oBAAC,qBAAqB,OAAG,CAAC,CAAC;QACrC,KAAK,gBAAgB,CAAC,OAAO;YAC3B,OAAO,CAAC,oBAAC,sBAAsB,OAAG,CAAC,CAAC;QACtC,KAAK,gBAAgB,CAAC,SAAS;YAC7B,OAAO,CAAC,oBAAC,wBAAwB,IAC/B,SAAS,EAAE,OAAO,EAClB,cAAc,EAAE,cAAc,GAC9B,CAAC,CAAC;QACN,KAAK,gBAAgB,CAAC,MAAM;YAC1B,OAAO,CAAC,oBAAC,qBAAqB,IAC5B,SAAS,EAAE,OAAO,EAClB,cAAc,EAAE,cAAc,GAC9B,CAAC,CAAC;QACN;YACE,OAAO,yCAAK,CAAC;KAChB;AACH,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport * as React from \"react\";\nimport { useEffect, useState } from \"react\";\nimport \"./ExtractionStatus.scss\";\nimport { STATUS_CHECK_INTERVAL } from \"./Constants\";\nimport { StartingExtractionState } from \"./ExtractionStates/StartingExtractionState\";\nimport { RunningExtractionState } from \"./ExtractionStates/RunningExtractionState\";\nimport { FailedExtractionState } from \"./ExtractionStates/FailedExtractionState\";\nimport { QueuedExtractionState } from \"./ExtractionStates/QueuedExtractionState\";\nimport { SucceededExtractionState } from \"./ExtractionStates/SucceededExtractionState\";\n\nexport enum ExtractionStates {\n None,\n Starting,\n Queued,\n Running,\n Succeeded,\n Failed,\n}\n\ninterface ExtractionStatusProps {\n state: ExtractionStates;\n clearExtractionState: () => void;\n}\n\nexport const ExtractionStatus = ({\n state,\n clearExtractionState,\n}: ExtractionStatusProps) => {\n const [fadeOut, setFadeOut] = useState<boolean>(false);\n\n const onAnimationEnd = () => {\n clearExtractionState();\n setFadeOut(false);\n };\n\n useEffect(() => {\n let timer: number;\n switch (state) {\n case ExtractionStates.Succeeded:\n case ExtractionStates.Failed:\n timer = window.setTimeout(() => setFadeOut(true), STATUS_CHECK_INTERVAL);\n }\n return () => window.clearTimeout(timer);\n }, [state]);\n\n switch (state) {\n case ExtractionStates.Starting:\n return (<StartingExtractionState />);\n case ExtractionStates.Queued:\n return (<QueuedExtractionState />);\n case ExtractionStates.Running:\n return (<RunningExtractionState />);\n case ExtractionStates.Succeeded:\n return (<SucceededExtractionState\n animation={fadeOut}\n onAnimationEnd={onAnimationEnd}\n />);\n case ExtractionStates.Failed:\n return (<FailedExtractionState\n animation={fadeOut}\n onAnimationEnd={onAnimationEnd}\n />);\n default:\n return <></>;\n }\n};\n"]}
@@ -0,0 +1,27 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ @import "~@itwin/itwinui-css/scss/variables";
6
+
7
+ .rcw-extraction-status {
8
+ align-items: center;
9
+ margin: auto $iui-s * 2;
10
+ height: 38px;
11
+ display: flex;
12
+
13
+ .rcw-status-icon {
14
+ width: $iui-icons-default;
15
+ height: $iui-icons-default;
16
+ }
17
+ }
18
+
19
+ @keyframes rcw-fade-out {
20
+ 0% {
21
+ opacity: 1;
22
+ }
23
+
24
+ 100% {
25
+ opacity: 0;
26
+ }
27
+ }
@@ -1,13 +1,14 @@
1
1
  import type { ReactNode } from "react";
2
+ import React from "react";
2
3
  import "./HorizontalTile.scss";
3
- interface HorizontalTileProps {
4
+ export interface HorizontalTileProps extends React.ComponentPropsWithoutRef<"div"> {
4
5
  title: string;
5
- button: ReactNode;
6
- subText?: string;
7
- onClickTitle?: () => void;
8
- titleTooltip?: string;
6
+ actionGroup: ReactNode;
7
+ subText: string;
8
+ onClickTitle?: React.MouseEventHandler;
9
+ titleTooltip: string;
9
10
  subtextToolTip?: string;
11
+ selected?: boolean;
10
12
  }
11
- export declare const HorizontalTile: ({ title, subText, onClickTitle, titleTooltip, subtextToolTip, button, }: HorizontalTileProps) => JSX.Element;
12
- export {};
13
+ export declare const HorizontalTile: (props: HorizontalTileProps) => JSX.Element;
13
14
  //# sourceMappingURL=HorizontalTile.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HorizontalTile.d.ts","sourceRoot":"","sources":["../../../../src/widget/components/HorizontalTile.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,uBAAuB,CAAC;AAE/B,UAAU,mBAAmB;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,cAAc,4EAOxB,mBAAmB,gBA+BrB,CAAC"}
1
+ {"version":3,"file":"HorizontalTile.d.ts","sourceRoot":"","sources":["../../../../src/widget/components/HorizontalTile.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,uBAAuB,CAAC;AAG/B,MAAM,WAAW,mBAAoB,SAAQ,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC;IAChF,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,SAAS,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,cAAc,UAAW,mBAAmB,gBA+CxD,CAAC"}
@@ -1,11 +1,15 @@
1
1
  import React from "react";
2
2
  import { Text } from "@itwin/itwinui-react";
3
3
  import "./HorizontalTile.scss";
4
- export const HorizontalTile = ({ title, subText, onClickTitle, titleTooltip, subtextToolTip, button, }) => {
5
- return (React.createElement("div", { className: "rcw-horizontal-tile-container", "data-testid": "horizontal-tile" },
6
- React.createElement("div", { className: "body" },
7
- React.createElement(Text, { className: `body-text ${onClickTitle ? "iui-anchor" : ""}`, onClick: onClickTitle, variant: "body", title: titleTooltip }, title),
8
- subText && (React.createElement(Text, { className: "body-text", isMuted: true, title: subtextToolTip, variant: "small" }, subText))),
9
- React.createElement("div", { className: "action-button", "data-testid": "tile-action-button" }, button)));
4
+ import classNames from "classnames";
5
+ export const HorizontalTile = (props) => {
6
+ const { title, titleTooltip, subText, subtextToolTip, actionGroup, selected, className, onClickTitle, ...rest } = props;
7
+ return (React.createElement("div", { className: classNames("rcw-horizontal-tile-container", { "rcw-horizontal-tile-selected": selected }, className), onClick: rest.onClick, "data-testid": "horizontal-tile" },
8
+ React.createElement("div", { className: "rcw-body-container" },
9
+ React.createElement("div", { className: "rcw-body" },
10
+ React.createElement(Text, { className: classNames("rcw-body-text", { "iui-anchor": !!onClickTitle }), onClick: onClickTitle, variant: "body", title: titleTooltip }, title),
11
+ subText &&
12
+ React.createElement(Text, { className: "rcw-body-text", isMuted: true, title: subtextToolTip, variant: "small" }, subText))),
13
+ React.createElement("div", { className: "rcw-action-button", "data-testid": "tile-action-button" }, actionGroup)));
10
14
  };
11
15
  //# sourceMappingURL=HorizontalTile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HorizontalTile.js","sourceRoot":"","sources":["../../../../src/widget/components/HorizontalTile.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,uBAAuB,CAAC;AAW/B,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAC7B,KAAK,EACL,OAAO,EACP,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,MAAM,GACc,EAAE,EAAE;IACxB,OAAO,CACL,6BACE,SAAS,EAAC,+BAA+B,iBAC7B,iBAAiB;QAE7B,6BAAK,SAAS,EAAC,MAAM;YACnB,oBAAC,IAAI,IACH,SAAS,EAAE,aAAa,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAC1D,OAAO,EAAE,YAAY,EACrB,OAAO,EAAC,MAAM,EACd,KAAK,EAAE,YAAY,IAElB,KAAK,CACD;YACN,OAAO,IAAI,CACV,oBAAC,IAAI,IACH,SAAS,EAAC,WAAW,EACrB,OAAO,EAAE,IAAI,EACb,KAAK,EAAE,cAAc,EACrB,OAAO,EAAC,OAAO,IAEd,OAAO,CACH,CACR,CACG;QACN,6BAAK,SAAS,EAAC,eAAe,iBAAa,oBAAoB,IAC5D,MAAM,CACH,CACF,CACP,CAAC;AACJ,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport type { ReactNode } from \"react\";\nimport React from \"react\";\nimport { Text } from \"@itwin/itwinui-react\";\nimport \"./HorizontalTile.scss\";\n\ninterface HorizontalTileProps {\n title: string;\n button: ReactNode;\n subText?: string;\n onClickTitle?: () => void;\n titleTooltip?: string;\n subtextToolTip?: string;\n}\n\nexport const HorizontalTile = ({\n title,\n subText,\n onClickTitle,\n titleTooltip,\n subtextToolTip,\n button,\n}: HorizontalTileProps) => {\n return (\n <div\n className=\"rcw-horizontal-tile-container\"\n data-testid=\"horizontal-tile\"\n >\n <div className=\"body\">\n <Text\n className={`body-text ${onClickTitle ? \"iui-anchor\" : \"\"}`}\n onClick={onClickTitle}\n variant=\"body\"\n title={titleTooltip}\n >\n {title}\n </Text>\n {subText && (\n <Text\n className=\"body-text\"\n isMuted={true}\n title={subtextToolTip}\n variant=\"small\"\n >\n {subText}\n </Text>\n )}\n </div>\n <div className=\"action-button\" data-testid=\"tile-action-button\">\n {button}\n </div>\n </div>\n );\n};\n"]}
1
+ {"version":3,"file":"HorizontalTile.js","sourceRoot":"","sources":["../../../../src/widget/components/HorizontalTile.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,uBAAuB,CAAC;AAC/B,OAAO,UAAU,MAAM,YAAY,CAAC;AAYpC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAA0B,EAAE,EAAE;IAC3D,MAAM,EACJ,KAAK,EACL,YAAY,EACZ,OAAO,EACP,cAAc,EACd,WAAW,EACX,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,GAAG,IAAI,EACR,GAAG,KAAK,CAAC;IAEV,OAAO,CACL,6BACE,SAAS,EAAE,UAAU,CACnB,+BAA+B,EAC/B,EAAE,8BAA8B,EAAE,QAAQ,EAAE,EAC5C,SAAS,CACV,EACD,OAAO,EAAE,IAAI,CAAC,OAAO,iBACT,iBAAiB;QAE7B,6BAAK,SAAS,EAAC,oBAAoB;YACjC,6BAAK,SAAS,EAAC,UAAU;gBACvB,oBAAC,IAAI,IAAC,SAAS,EAAE,UAAU,CAAC,eAAe,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,EAC5E,OAAO,EAAE,YAAY,EACrB,OAAO,EAAC,MAAM,EACd,KAAK,EAAE,YAAY,IAAG,KAAK,CACtB;gBAEL,OAAO;oBACP,oBAAC,IAAI,IAAC,SAAS,EAAC,eAAe,EAC7B,OAAO,EAAE,IAAI,EACb,KAAK,EAAE,cAAc,EACrB,OAAO,EAAC,OAAO,IAAE,OAAO,CACnB,CAEL,CACF;QACN,6BACE,SAAS,EAAC,mBAAmB,iBACjB,oBAAoB,IAC/B,WAAW,CACR,CACF,CACP,CAAC;AACJ,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport type { ReactNode } from \"react\";\nimport React from \"react\";\nimport { Text } from \"@itwin/itwinui-react\";\nimport \"./HorizontalTile.scss\";\nimport classNames from \"classnames\";\n\nexport interface HorizontalTileProps extends React.ComponentPropsWithoutRef<\"div\"> {\n title: string;\n actionGroup: ReactNode;\n subText: string;\n onClickTitle?: React.MouseEventHandler;\n titleTooltip: string;\n subtextToolTip?: string;\n selected?: boolean;\n}\n\nexport const HorizontalTile = (props: HorizontalTileProps) => {\n const {\n title,\n titleTooltip,\n subText,\n subtextToolTip,\n actionGroup,\n selected,\n className,\n onClickTitle,\n ...rest\n } = props;\n\n return (\n <div\n className={classNames(\n \"rcw-horizontal-tile-container\",\n { \"rcw-horizontal-tile-selected\": selected },\n className\n )}\n onClick={rest.onClick}\n data-testid=\"horizontal-tile\"\n >\n <div className=\"rcw-body-container\">\n <div className=\"rcw-body\">\n <Text className={classNames(\"rcw-body-text\", { \"iui-anchor\": !!onClickTitle })}\n onClick={onClickTitle}\n variant=\"body\"\n title={titleTooltip}>{title}\n </Text>\n {\n subText &&\n <Text className=\"rcw-body-text\"\n isMuted={true}\n title={subtextToolTip}\n variant=\"small\">{subText}\n </Text>\n }\n </div>\n </div>\n <div\n className=\"rcw-action-button\"\n data-testid=\"tile-action-button\">\n {actionGroup}\n </div>\n </div>\n );\n};\n"]}