@itwin/grouping-mapping-widget 0.21.1 → 0.23.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 (259) hide show
  1. package/lib/cjs/WidgetShell/GroupingMapping.js +5 -1
  2. package/lib/cjs/WidgetShell/GroupingMapping.js.map +1 -1
  3. package/lib/cjs/WidgetShell/GroupingMappingContent.js +5 -1
  4. package/lib/cjs/WidgetShell/GroupingMappingContent.js.map +1 -1
  5. package/lib/cjs/common/hooks/useIsMounted.d.ts +2 -0
  6. package/lib/cjs/common/hooks/useIsMounted.js +20 -0
  7. package/lib/cjs/common/hooks/useIsMounted.js.map +1 -0
  8. package/lib/cjs/common/hooks/useMemoizedCollectionPick.d.ts +2 -0
  9. package/lib/cjs/common/hooks/useMemoizedCollectionPick.js +31 -0
  10. package/lib/cjs/common/hooks/useMemoizedCollectionPick.js.map +1 -0
  11. package/lib/cjs/common/utils.d.ts +1 -0
  12. package/lib/cjs/common/utils.js +13 -1
  13. package/lib/cjs/common/utils.js.map +1 -1
  14. package/lib/cjs/components/Constants.d.ts +4 -0
  15. package/lib/cjs/components/Constants.js +13 -0
  16. package/lib/cjs/components/Constants.js.map +1 -0
  17. package/lib/cjs/components/GroupingMappingContext.d.ts +5 -0
  18. package/lib/cjs/components/GroupingMappingContext.js +56 -26
  19. package/lib/cjs/components/GroupingMappingContext.js.map +1 -1
  20. package/lib/cjs/components/Groups/Editing/GroupAction.js +57 -57
  21. package/lib/cjs/components/Groups/Editing/GroupAction.js.map +1 -1
  22. package/lib/cjs/components/Groups/Editing/GroupDetailsActionPanel.d.ts +1 -1
  23. package/lib/cjs/components/Groups/Editing/GroupDetailsActionPanel.js.map +1 -1
  24. package/lib/cjs/components/Groups/GroupItem.js +1 -1
  25. package/lib/cjs/components/Groups/GroupItem.js.map +1 -1
  26. package/lib/cjs/components/Groups/GroupMenuActions.js +5 -1
  27. package/lib/cjs/components/Groups/GroupMenuActions.js.map +1 -1
  28. package/lib/cjs/components/Groups/Groups.d.ts +3 -2
  29. package/lib/cjs/components/Groups/Groups.js +8 -4
  30. package/lib/cjs/components/Groups/Groups.js.map +1 -1
  31. package/lib/cjs/components/Groups/GroupsShowHideButtons.d.ts +2 -2
  32. package/lib/cjs/components/Groups/GroupsShowHideButtons.js +8 -4
  33. package/lib/cjs/components/Groups/GroupsShowHideButtons.js.map +1 -1
  34. package/lib/cjs/components/Groups/GroupsView.js +1 -1
  35. package/lib/cjs/components/Groups/GroupsView.js.map +1 -1
  36. package/lib/cjs/components/Groups/GroupsVisualization.d.ts +1 -1
  37. package/lib/cjs/components/Groups/GroupsVisualization.js +103 -67
  38. package/lib/cjs/components/Groups/GroupsVisualization.js.map +1 -1
  39. package/lib/cjs/components/Groups/GroupsVisualizationActions.d.ts +6 -4
  40. package/lib/cjs/components/Groups/GroupsVisualizationActions.js +8 -6
  41. package/lib/cjs/components/Groups/GroupsVisualizationActions.js.map +1 -1
  42. package/lib/cjs/components/Groups/GroupsVisualizationActions.scss +1 -0
  43. package/lib/cjs/components/Groups/groupsHelpers.d.ts +19 -7
  44. package/lib/cjs/components/Groups/groupsHelpers.js +11 -70
  45. package/lib/cjs/components/Groups/groupsHelpers.js.map +1 -1
  46. package/lib/cjs/components/Groups/hooks/useFetchGroups.d.ts +5 -0
  47. package/lib/cjs/components/Groups/hooks/useFetchGroups.js +18 -0
  48. package/lib/cjs/components/Groups/hooks/useFetchGroups.js.map +1 -0
  49. package/lib/cjs/components/Groups/hooks/useGroupsOperations.d.ts +1 -5
  50. package/lib/cjs/components/Groups/hooks/useGroupsOperations.js +17 -31
  51. package/lib/cjs/components/Groups/hooks/useGroupsOperations.js.map +1 -1
  52. package/lib/cjs/components/Groups/hooks/useKeySetHiliteQueries.d.ts +32 -0
  53. package/lib/cjs/components/Groups/hooks/useKeySetHiliteQueries.js +31 -0
  54. package/lib/cjs/components/Groups/hooks/useKeySetHiliteQueries.js.map +1 -0
  55. package/lib/cjs/components/Groups/hooks/useVisualization.js +4 -4
  56. package/lib/cjs/components/Groups/hooks/useVisualization.js.map +1 -1
  57. package/lib/cjs/components/Mappings/Editing/MappingAction.js +26 -31
  58. package/lib/cjs/components/Mappings/Editing/MappingAction.js.map +1 -1
  59. package/lib/cjs/components/Mappings/Extraction/ExtractionLogCustomFilter.js +5 -1
  60. package/lib/cjs/components/Mappings/Extraction/ExtractionLogCustomFilter.js.map +1 -1
  61. package/lib/cjs/components/Mappings/Extraction/ExtractionMessageModal.d.ts +6 -1
  62. package/lib/cjs/components/Mappings/Extraction/ExtractionMessageModal.js +51 -40
  63. package/lib/cjs/components/Mappings/Extraction/ExtractionMessageModal.js.map +1 -1
  64. package/lib/cjs/components/Mappings/Extraction/ExtractionStatusIcon.d.ts +7 -1
  65. package/lib/cjs/components/Mappings/Extraction/ExtractionStatusIcon.js.map +1 -1
  66. package/lib/cjs/components/Mappings/{ConfirmMappingsImport.d.ts → Import/ConfirmMappingsImport.d.ts} +1 -1
  67. package/lib/cjs/components/Mappings/{ConfirmMappingsImport.js → Import/ConfirmMappingsImport.js} +32 -21
  68. package/lib/cjs/components/Mappings/Import/ConfirmMappingsImport.js.map +1 -0
  69. package/lib/cjs/components/Mappings/Import/MappingImportWizardModal.js +9 -8
  70. package/lib/cjs/components/Mappings/Import/MappingImportWizardModal.js.map +1 -1
  71. package/lib/cjs/components/Mappings/Import/SelectIModel.js +35 -50
  72. package/lib/cjs/components/Mappings/Import/SelectIModel.js.map +1 -1
  73. package/lib/cjs/components/Mappings/Import/SelectITwin.d.ts +6 -1
  74. package/lib/cjs/components/Mappings/Import/SelectITwin.js +44 -53
  75. package/lib/cjs/components/Mappings/Import/SelectITwin.js.map +1 -1
  76. package/lib/cjs/components/Mappings/Import/SelectMappings.js +18 -37
  77. package/lib/cjs/components/Mappings/Import/SelectMappings.js.map +1 -1
  78. package/lib/cjs/components/Mappings/Mappings.js +5 -27
  79. package/lib/cjs/components/Mappings/Mappings.js.map +1 -1
  80. package/lib/cjs/components/Mappings/MappingsView.d.ts +5 -4
  81. package/lib/cjs/components/Mappings/MappingsView.js +33 -7
  82. package/lib/cjs/components/Mappings/MappingsView.js.map +1 -1
  83. package/lib/cjs/components/Mappings/hooks/useFetchExtractionStatus.d.ts +13 -0
  84. package/lib/cjs/components/Mappings/hooks/useFetchExtractionStatus.js +50 -0
  85. package/lib/cjs/components/Mappings/hooks/useFetchExtractionStatus.js.map +1 -0
  86. package/lib/cjs/components/Mappings/hooks/useFetchMappings.d.ts +4 -0
  87. package/lib/cjs/components/Mappings/hooks/useFetchMappings.js +14 -0
  88. package/lib/cjs/components/Mappings/hooks/useFetchMappings.js.map +1 -0
  89. package/lib/cjs/components/Mappings/hooks/useMappingsOperations.d.ts +9 -10
  90. package/lib/cjs/components/Mappings/hooks/useMappingsOperations.js +35 -108
  91. package/lib/cjs/components/Mappings/hooks/useMappingsOperations.js.map +1 -1
  92. package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyAction.js +5 -1
  93. package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyAction.js.map +1 -1
  94. package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyActionWithVisuals.js +16 -21
  95. package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyActionWithVisuals.js.map +1 -1
  96. package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyTable.js +5 -1
  97. package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyTable.js.map +1 -1
  98. package/lib/cjs/components/Properties/CalculatedProperties/SharedCalculatedPropertyForms.js +5 -1
  99. package/lib/cjs/components/Properties/CalculatedProperties/SharedCalculatedPropertyForms.js.map +1 -1
  100. package/lib/cjs/components/Properties/CustomCalculations/CustomCalculationAction.js +5 -1
  101. package/lib/cjs/components/Properties/CustomCalculations/CustomCalculationAction.js.map +1 -1
  102. package/lib/cjs/components/Properties/CustomCalculations/CustomCalculationTable.js +5 -1
  103. package/lib/cjs/components/Properties/CustomCalculations/CustomCalculationTable.js.map +1 -1
  104. package/lib/cjs/components/Properties/GroupColorToggle.js +13 -10
  105. package/lib/cjs/components/Properties/GroupColorToggle.js.map +1 -1
  106. package/lib/cjs/components/Properties/GroupProperties/GroupPropertyAction.js +7 -3
  107. package/lib/cjs/components/Properties/GroupProperties/GroupPropertyAction.js.map +1 -1
  108. package/lib/cjs/components/Properties/GroupProperties/GroupPropertyTable.js +5 -1
  109. package/lib/cjs/components/Properties/GroupProperties/GroupPropertyTable.js.map +1 -1
  110. package/lib/cjs/components/Properties/GroupProperties/SortableHorizontalTile.js +5 -1
  111. package/lib/cjs/components/Properties/GroupProperties/SortableHorizontalTile.js.map +1 -1
  112. package/lib/cjs/components/Properties/PropertyAction.js +5 -1
  113. package/lib/cjs/components/Properties/PropertyAction.js.map +1 -1
  114. package/lib/cjs/components/Properties/PropertyMenu.js +5 -1
  115. package/lib/cjs/components/Properties/PropertyMenu.js.map +1 -1
  116. package/lib/cjs/components/Properties/PropertyMenuWithVisualization.js +5 -1
  117. package/lib/cjs/components/Properties/PropertyMenuWithVisualization.js.map +1 -1
  118. package/lib/cjs/components/Properties/PropertyTable.js +7 -2
  119. package/lib/cjs/components/Properties/PropertyTable.js.map +1 -1
  120. package/lib/cjs/components/SharedComponents/ActionPanel.js +5 -1
  121. package/lib/cjs/components/SharedComponents/ActionPanel.js.map +1 -1
  122. package/lib/cjs/components/SharedComponents/DeleteModal.d.ts +2 -2
  123. package/lib/cjs/components/SharedComponents/DeleteModal.js +20 -20
  124. package/lib/cjs/components/SharedComponents/DeleteModal.js.map +1 -1
  125. package/lib/cjs/components/context/GroupHilitedElementsContext.d.ts +9 -16
  126. package/lib/cjs/components/context/GroupHilitedElementsContext.js +13 -10
  127. package/lib/cjs/components/context/GroupHilitedElementsContext.js.map +1 -1
  128. package/lib/cjs/components/context/GroupingApiConfigContext.js +5 -1
  129. package/lib/cjs/components/context/GroupingApiConfigContext.js.map +1 -1
  130. package/lib/cjs/components/context/PropertiesContext.js +5 -1
  131. package/lib/cjs/components/context/PropertiesContext.js.map +1 -1
  132. package/lib/cjs/components/context/PropertyGridWrapperContext.js +5 -1
  133. package/lib/cjs/components/context/PropertyGridWrapperContext.js.map +1 -1
  134. package/lib/cjs/components/customUI/GroupQueryBuilderCustomUI.js +5 -1
  135. package/lib/cjs/components/customUI/GroupQueryBuilderCustomUI.js.map +1 -1
  136. package/lib/cjs/formula/FormulaFunctionProvider.js +10 -1
  137. package/lib/cjs/formula/FormulaFunctionProvider.js.map +1 -1
  138. package/lib/cjs/grouping-mapping-widget.js +5 -1
  139. package/lib/cjs/grouping-mapping-widget.js.map +1 -1
  140. package/lib/cjs/test/GroupingMappingCustomUI.test.js +5 -1
  141. package/lib/cjs/test/GroupingMappingCustomUI.test.js.map +1 -1
  142. package/lib/cjs/test/MockFactory.js +5 -1
  143. package/lib/cjs/test/MockFactory.js.map +1 -1
  144. package/lib/cjs/test/PropertyFieldsHelpers.d.ts +4 -20
  145. package/lib/cjs/test/test-utils.js +13 -1
  146. package/lib/cjs/test/test-utils.js.map +1 -1
  147. package/lib/esm/common/hooks/useIsMounted.d.ts +2 -0
  148. package/lib/esm/common/hooks/useIsMounted.js +16 -0
  149. package/lib/esm/common/hooks/useIsMounted.js.map +1 -0
  150. package/lib/esm/common/hooks/useMemoizedCollectionPick.d.ts +2 -0
  151. package/lib/esm/common/hooks/useMemoizedCollectionPick.js +27 -0
  152. package/lib/esm/common/hooks/useMemoizedCollectionPick.js.map +1 -0
  153. package/lib/esm/common/utils.d.ts +1 -0
  154. package/lib/esm/common/utils.js +11 -0
  155. package/lib/esm/common/utils.js.map +1 -1
  156. package/lib/esm/components/Constants.d.ts +4 -0
  157. package/lib/esm/components/Constants.js +10 -0
  158. package/lib/esm/components/Constants.js.map +1 -0
  159. package/lib/esm/components/GroupingMappingContext.d.ts +5 -0
  160. package/lib/esm/components/GroupingMappingContext.js +52 -26
  161. package/lib/esm/components/GroupingMappingContext.js.map +1 -1
  162. package/lib/esm/components/Groups/Editing/GroupAction.js +53 -57
  163. package/lib/esm/components/Groups/Editing/GroupAction.js.map +1 -1
  164. package/lib/esm/components/Groups/Editing/GroupDetailsActionPanel.d.ts +1 -1
  165. package/lib/esm/components/Groups/Editing/GroupDetailsActionPanel.js.map +1 -1
  166. package/lib/esm/components/Groups/GroupItem.js +1 -1
  167. package/lib/esm/components/Groups/GroupItem.js.map +1 -1
  168. package/lib/esm/components/Groups/Groups.d.ts +3 -2
  169. package/lib/esm/components/Groups/Groups.js +3 -3
  170. package/lib/esm/components/Groups/Groups.js.map +1 -1
  171. package/lib/esm/components/Groups/GroupsShowHideButtons.d.ts +2 -2
  172. package/lib/esm/components/Groups/GroupsShowHideButtons.js +3 -3
  173. package/lib/esm/components/Groups/GroupsShowHideButtons.js.map +1 -1
  174. package/lib/esm/components/Groups/GroupsView.js +1 -1
  175. package/lib/esm/components/Groups/GroupsView.js.map +1 -1
  176. package/lib/esm/components/Groups/GroupsVisualization.d.ts +1 -1
  177. package/lib/esm/components/Groups/GroupsVisualization.js +100 -68
  178. package/lib/esm/components/Groups/GroupsVisualization.js.map +1 -1
  179. package/lib/esm/components/Groups/GroupsVisualizationActions.d.ts +6 -4
  180. package/lib/esm/components/Groups/GroupsVisualizationActions.js +9 -7
  181. package/lib/esm/components/Groups/GroupsVisualizationActions.js.map +1 -1
  182. package/lib/esm/components/Groups/GroupsVisualizationActions.scss +1 -0
  183. package/lib/esm/components/Groups/groupsHelpers.d.ts +19 -7
  184. package/lib/esm/components/Groups/groupsHelpers.js +10 -67
  185. package/lib/esm/components/Groups/groupsHelpers.js.map +1 -1
  186. package/lib/esm/components/Groups/hooks/useFetchGroups.d.ts +5 -0
  187. package/lib/esm/components/Groups/hooks/useFetchGroups.js +13 -0
  188. package/lib/esm/components/Groups/hooks/useFetchGroups.js.map +1 -0
  189. package/lib/esm/components/Groups/hooks/useGroupsOperations.d.ts +1 -5
  190. package/lib/esm/components/Groups/hooks/useGroupsOperations.js +18 -32
  191. package/lib/esm/components/Groups/hooks/useGroupsOperations.js.map +1 -1
  192. package/lib/esm/components/Groups/hooks/useKeySetHiliteQueries.d.ts +32 -0
  193. package/lib/esm/components/Groups/hooks/useKeySetHiliteQueries.js +25 -0
  194. package/lib/esm/components/Groups/hooks/useKeySetHiliteQueries.js.map +1 -0
  195. package/lib/esm/components/Groups/hooks/useVisualization.js +4 -4
  196. package/lib/esm/components/Groups/hooks/useVisualization.js.map +1 -1
  197. package/lib/esm/components/Mappings/Editing/MappingAction.js +22 -31
  198. package/lib/esm/components/Mappings/Editing/MappingAction.js.map +1 -1
  199. package/lib/esm/components/Mappings/Extraction/ExtractionMessageModal.d.ts +6 -1
  200. package/lib/esm/components/Mappings/Extraction/ExtractionMessageModal.js +46 -39
  201. package/lib/esm/components/Mappings/Extraction/ExtractionMessageModal.js.map +1 -1
  202. package/lib/esm/components/Mappings/Extraction/ExtractionStatusIcon.d.ts +7 -1
  203. package/lib/esm/components/Mappings/Extraction/ExtractionStatusIcon.js.map +1 -1
  204. package/lib/esm/components/Mappings/{ConfirmMappingsImport.d.ts → Import/ConfirmMappingsImport.d.ts} +1 -1
  205. package/lib/esm/components/Mappings/{ConfirmMappingsImport.js → Import/ConfirmMappingsImport.js} +27 -20
  206. package/lib/esm/components/Mappings/Import/ConfirmMappingsImport.js.map +1 -0
  207. package/lib/esm/components/Mappings/Import/MappingImportWizardModal.js +4 -7
  208. package/lib/esm/components/Mappings/Import/MappingImportWizardModal.js.map +1 -1
  209. package/lib/esm/components/Mappings/Import/SelectIModel.js +31 -50
  210. package/lib/esm/components/Mappings/Import/SelectIModel.js.map +1 -1
  211. package/lib/esm/components/Mappings/Import/SelectITwin.d.ts +6 -1
  212. package/lib/esm/components/Mappings/Import/SelectITwin.js +39 -53
  213. package/lib/esm/components/Mappings/Import/SelectITwin.js.map +1 -1
  214. package/lib/esm/components/Mappings/Import/SelectMappings.js +14 -37
  215. package/lib/esm/components/Mappings/Import/SelectMappings.js.map +1 -1
  216. package/lib/esm/components/Mappings/Mappings.js +3 -9
  217. package/lib/esm/components/Mappings/Mappings.js.map +1 -1
  218. package/lib/esm/components/Mappings/MappingsView.d.ts +5 -4
  219. package/lib/esm/components/Mappings/MappingsView.js +10 -7
  220. package/lib/esm/components/Mappings/MappingsView.js.map +1 -1
  221. package/lib/esm/components/Mappings/hooks/useFetchExtractionStatus.d.ts +13 -0
  222. package/lib/esm/components/Mappings/hooks/useFetchExtractionStatus.js +46 -0
  223. package/lib/esm/components/Mappings/hooks/useFetchExtractionStatus.js.map +1 -0
  224. package/lib/esm/components/Mappings/hooks/useFetchMappings.d.ts +4 -0
  225. package/lib/esm/components/Mappings/hooks/useFetchMappings.js +10 -0
  226. package/lib/esm/components/Mappings/hooks/useFetchMappings.js.map +1 -0
  227. package/lib/esm/components/Mappings/hooks/useMappingsOperations.d.ts +9 -10
  228. package/lib/esm/components/Mappings/hooks/useMappingsOperations.js +36 -109
  229. package/lib/esm/components/Mappings/hooks/useMappingsOperations.js.map +1 -1
  230. package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyActionWithVisuals.js +13 -22
  231. package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyActionWithVisuals.js.map +1 -1
  232. package/lib/esm/components/Properties/GroupColorToggle.js +9 -10
  233. package/lib/esm/components/Properties/GroupColorToggle.js.map +1 -1
  234. package/lib/esm/components/Properties/GroupProperties/GroupPropertyAction.js +3 -3
  235. package/lib/esm/components/Properties/GroupProperties/GroupPropertyAction.js.map +1 -1
  236. package/lib/esm/components/Properties/PropertyTable.js +2 -1
  237. package/lib/esm/components/Properties/PropertyTable.js.map +1 -1
  238. package/lib/esm/components/SharedComponents/DeleteModal.d.ts +2 -2
  239. package/lib/esm/components/SharedComponents/DeleteModal.js +16 -20
  240. package/lib/esm/components/SharedComponents/DeleteModal.js.map +1 -1
  241. package/lib/esm/components/context/GroupHilitedElementsContext.d.ts +9 -16
  242. package/lib/esm/components/context/GroupHilitedElementsContext.js +8 -9
  243. package/lib/esm/components/context/GroupHilitedElementsContext.js.map +1 -1
  244. package/lib/esm/formula/FormulaFunctionProvider.js +10 -1
  245. package/lib/esm/formula/FormulaFunctionProvider.js.map +1 -1
  246. package/lib/esm/test/PropertyFieldsHelpers.d.ts +4 -20
  247. package/lib/esm/test/test-utils.js +8 -0
  248. package/lib/esm/test/test-utils.js.map +1 -1
  249. package/package.json +35 -31
  250. package/lib/cjs/components/Mappings/ConfirmMappingsImport.js.map +0 -1
  251. package/lib/cjs/components/context/ExtractionStatusDataContext.d.ts +0 -20
  252. package/lib/cjs/components/context/ExtractionStatusDataContext.js +0 -26
  253. package/lib/cjs/components/context/ExtractionStatusDataContext.js.map +0 -1
  254. package/lib/esm/components/Mappings/ConfirmMappingsImport.js.map +0 -1
  255. package/lib/esm/components/context/ExtractionStatusDataContext.d.ts +0 -20
  256. package/lib/esm/components/context/ExtractionStatusDataContext.js +0 -22
  257. package/lib/esm/components/context/ExtractionStatusDataContext.js.map +0 -1
  258. /package/lib/cjs/components/Mappings/{ConfirmMappingsImport.scss → Import/ConfirmMappingsImport.scss} +0 -0
  259. /package/lib/esm/components/Mappings/{ConfirmMappingsImport.scss → Import/ConfirmMappingsImport.scss} +0 -0
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -33,51 +37,57 @@ const ExtractionLogCustomFilter_1 = require("./ExtractionLogCustomFilter");
33
37
  const GroupingApiConfigContext_1 = require("../../context/GroupingApiConfigContext");
34
38
  const MappingClientContext_1 = require("../../context/MappingClientContext");
35
39
  const useMappingsOperations_1 = require("../hooks/useMappingsOperations");
40
+ const react_query_1 = require("@tanstack/react-query");
41
+ const useMemoizedCollectionPick_1 = require("../../../common/hooks/useMemoizedCollectionPick");
42
+ const useFetchGroups_1 = require("../../Groups/hooks/useFetchGroups");
36
43
  const ExtractionMessageModal = ({ isOpen, onClose, extractionMessageData, timestamp }) => {
37
- const [formattedExtractionMessage, setFormattedExtractionMessage] = (0, react_1.useState)([]);
44
+ const [formattedExtractionMessage, setFormattedExtractionMessage] = (0, react_1.useState)(undefined);
38
45
  const groupingMappingApiConfig = (0, GroupingApiConfigContext_1.useGroupingMappingApiConfig)();
39
46
  const mappingClient = (0, MappingClientContext_1.useMappingClient)();
40
- const { mappings } = (0, useMappingsOperations_1.useMappingsOperations)({ ...groupingMappingApiConfig, mappingClient });
47
+ const { mappings, isLoading: isMappingsLoading } = (0, useMappingsOperations_1.useMappingsOperations)({ ...groupingMappingApiConfig, mappingClient });
41
48
  const [formattedTimestamp, setFormattedTimestamp] = (0, react_1.useState)("");
42
- const getMappingName = (0, react_1.useCallback)(async (mappingId) => {
43
- return mappings.find((mapping) => { return mapping.id === mappingId; })?.mappingName ?? "";
44
- }, [mappings]);
45
- const getGroupNames = (0, react_1.useCallback)(async (mappingId, groupId, groupsCache) => {
46
- const accessToken = await groupingMappingApiConfig.getAccessToken();
47
- if (!groupsCache.has(mappingId)) {
48
- const groups = await mappingClient.getGroups(accessToken, groupingMappingApiConfig.iModelId, mappingId);
49
- groupsCache.set(mappingId, groups);
50
- }
51
- return groupsCache.get(mappingId)?.find((group) => { return group.id === groupId; })?.groupName ?? "";
52
- }, [groupingMappingApiConfig, mappingClient]);
49
+ const getMappingName = (0, react_1.useCallback)((mappingId, mappings) => {
50
+ return mappings.find((mapping) => mapping.id === mappingId)?.mappingName ?? "";
51
+ }, []);
52
+ // Extract groupIds and mappingIds from messages
53
+ const extractionInfo = (0, react_1.useMemo)(() => {
54
+ return extractionMessageData.reduce((acc, message) => {
55
+ const splittedMessage = message.message.split(" ");
56
+ const mappingId = splittedMessage[splittedMessage.indexOf("MappingId:") + 1]?.match(/^([^,]+),$/)?.[1];
57
+ const groupId = splittedMessage[splittedMessage.indexOf("GroupId:") + 1]?.match(/^([^,]+).$/)?.[1];
58
+ if (mappingId && groupId) {
59
+ acc.push({ mappingId, groupId });
60
+ }
61
+ return acc;
62
+ }, []);
63
+ }, [extractionMessageData]);
64
+ // useQueries to fetch all group names
65
+ const groupQueriesResults = (0, react_query_1.useQueries)({
66
+ queries: extractionInfo.map(({ mappingId }) => ({
67
+ queryKey: ["groups", mappingId],
68
+ queryFn: async () => (0, useFetchGroups_1.fetchGroups)(groupingMappingApiConfig.iModelId, mappingId, groupingMappingApiConfig.getAccessToken, mappingClient),
69
+ })),
70
+ });
71
+ // Workaround to get data from useQueries with more stability
72
+ const pickedResult = (0, useMemoizedCollectionPick_1.useMemoizedCollectionPick)(groupQueriesResults, ["data", "error", "isLoading", "isSuccess"]);
53
73
  (0, react_1.useEffect)(() => {
54
- const formatMessages = async () => {
55
- const groupsCache = new Map();
56
- const extractionMessageDataPromises = extractionMessageData.map(async (extractionMessage) => {
57
- {
58
- let replacedMessage = extractionMessage.message;
59
- const splittedMessage = replacedMessage.split(" ");
60
- const mappingId = splittedMessage[splittedMessage.indexOf("MappingId:") + 1].match(/^([^,]+),$/) ?? [];
61
- if (extractionMessage.message.includes("iModel")) {
62
- replacedMessage = replacedMessage.replace(/iModel [\w-]+/, "iModel");
63
- }
64
- if (replacedMessage.includes("MappingId:")) {
65
- const mappingName = await getMappingName(mappingId[1]);
66
- replacedMessage = replacedMessage.replace(/MappingId: [\w-]+/, `Mapping: ${mappingName}`);
67
- }
68
- if (replacedMessage.includes("GroupId:")) {
69
- const groupId = splittedMessage[splittedMessage.indexOf("GroupId:") + 1].match(/^([^,]+).$/) ?? [];
70
- const groupName = await getGroupNames(mappingId[1], groupId[1], groupsCache);
71
- replacedMessage = replacedMessage.replace(/GroupId: [\w-]+/, `Group: ${groupName}`);
72
- }
73
- return { ...extractionMessage, message: replacedMessage };
74
+ if (pickedResult.every((query) => query.isSuccess) && mappings) {
75
+ const formattedMessages = extractionMessageData.map((extractionMessage, index) => {
76
+ let replacedMessage = extractionMessage.message;
77
+ const { mappingId, groupId } = extractionInfo[index];
78
+ const groupName = pickedResult[index].data.find((group) => group.id === groupId)?.groupName;
79
+ if (replacedMessage.includes("MappingId:")) {
80
+ const mappingName = getMappingName(mappingId, mappings);
81
+ replacedMessage = replacedMessage.replace(/MappingId: [\w-]+/, `Mapping: ${mappingName}`);
82
+ }
83
+ if (replacedMessage.includes("GroupId:")) {
84
+ replacedMessage = replacedMessage.replace(/GroupId: [\w-]+/, `Group: ${groupName ? groupName : "<Not Found>"}`);
74
85
  }
86
+ return { ...extractionMessage, message: replacedMessage };
75
87
  });
76
- const newMessages = await Promise.all(extractionMessageDataPromises);
77
- setFormattedExtractionMessage(newMessages);
78
- };
79
- void formatMessages();
80
- }, [extractionMessageData, groupingMappingApiConfig, mappings, mappingClient, getGroupNames, getMappingName]);
88
+ setFormattedExtractionMessage(formattedMessages);
89
+ }
90
+ }, [extractionMessageData, mappings, extractionInfo, getMappingName, pickedResult]);
81
91
  (0, react_1.useEffect)(() => {
82
92
  const newDateTime = new Date(timestamp);
83
93
  const options = {
@@ -119,13 +129,14 @@ const ExtractionMessageModal = ({ isOpen, onClose, extractionMessageData, timest
119
129
  Filter: itwinui_react_1.tableFilters.TextFilter(translatedLabels),
120
130
  },
121
131
  ], [translatedLabels]);
132
+ const isLoading = pickedResult.some((query) => query.isLoading) || isMappingsLoading;
122
133
  return (react_1.default.createElement(itwinui_react_1.Modal, { className: "gmw-message-modal-container", title: "Extraction Logs", isOpen: isOpen, onClose: onClose, closeOnExternalClick: false },
123
134
  react_1.default.createElement(itwinui_react_1.ModalContent, null,
124
135
  react_1.default.createElement("div", { className: "gmw-timestamp-icon" },
125
136
  react_1.default.createElement(itwinui_react_1.Icon, { title: "Extraction Timestamp", size: "medium" },
126
137
  react_1.default.createElement(itwinui_icons_react_1.SvgClock, null)),
127
138
  react_1.default.createElement(itwinui_react_1.Text, null, formattedTimestamp)),
128
- react_1.default.createElement(itwinui_react_1.Table, { columns: columns, data: formattedExtractionMessage, emptyTableContent: "", emptyFilteredTableContent: "No results match filters.", className: "gmw-extraction-message-table-container" })),
139
+ react_1.default.createElement(itwinui_react_1.Table, { columns: columns, data: formattedExtractionMessage ?? [], emptyTableContent: "", emptyFilteredTableContent: "No results match filters.", className: "gmw-extraction-message-table-container", isLoading: isLoading })),
129
140
  react_1.default.createElement(itwinui_react_1.ModalButtonBar, null,
130
141
  react_1.default.createElement(itwinui_react_1.Button, { onClick: onClose, styleType: "high-visibility" }, "Close"))));
131
142
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ExtractionMessageModal.js","sourceRoot":"","sources":["../../../../../src/components/Mappings/Extraction/ExtractionMessageModal.tsx"],"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 { Button, DefaultCell, Icon, Modal, ModalButtonBar, ModalContent, Table, tableFilters, Text } from \"@itwin/itwinui-react\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport type { CreateTypeFromInterface } from \"../../../common/utils\";\nimport type { ExtractionMessageData } from \"../../context/ExtractionStatusDataContext\";\nimport \"./ExtractionMessageModal.scss\";\nimport { SvgClock } from \"@itwin/itwinui-icons-react\";\nimport type { CellRendererProps, Column } from \"react-table\";\nimport { StatusIcon } from \"../../SharedComponents/StatusIcon\";\nimport { ExtractionLogCustomFilter } from \"./ExtractionLogCustomFilter\";\nimport { useGroupingMappingApiConfig } from \"../../context/GroupingApiConfigContext\";\nimport { useMappingClient } from \"../../context/MappingClientContext\";\nimport { useMappingsOperations } from \"../hooks/useMappingsOperations\";\nimport type { Group } from \"@itwin/insights-client\";\n\nexport interface ExtractionMessageModalProps {\n isOpen: boolean;\n onClose: () => void;\n extractionMessageData: ExtractionMessageData[];\n timestamp: string;\n}\n\nexport const ExtractionMessageModal = ({ isOpen, onClose, extractionMessageData, timestamp }: ExtractionMessageModalProps) => {\n const [formattedExtractionMessage, setFormattedExtractionMessage] = useState<ExtractionMessageData[]>([]);\n const groupingMappingApiConfig = useGroupingMappingApiConfig();\n const mappingClient = useMappingClient();\n const { mappings } = useMappingsOperations({...groupingMappingApiConfig, mappingClient});\n const [formattedTimestamp, setFormattedTimestamp] = useState<string>(\"\");\n\n const getMappingName = useCallback(async (mappingId: string) => {\n return mappings.find((mapping) => {return mapping.id === mappingId;})?.mappingName ?? \"\";\n }, [mappings]);\n\n const getGroupNames = useCallback(async (mappingId: string, groupId: string, groupsCache: Map<string, Group[]>) => {\n const accessToken = await groupingMappingApiConfig.getAccessToken();\n if(!groupsCache.has(mappingId)){\n const groups = await mappingClient.getGroups(\n accessToken,\n groupingMappingApiConfig.iModelId,\n mappingId\n );\n groupsCache.set(mappingId, groups);\n }\n return groupsCache.get(mappingId)?.find((group) => {return group.id === groupId;})?.groupName ?? \"\";\n }, [groupingMappingApiConfig, mappingClient]);\n\n useEffect(() => {\n const formatMessages = async () => {\n const groupsCache = new Map<string,Group[]>();\n const extractionMessageDataPromises = extractionMessageData.map(async (extractionMessage) => {\n {\n let replacedMessage = extractionMessage.message;\n const splittedMessage = replacedMessage.split(\" \");\n const mappingId = splittedMessage[splittedMessage.indexOf(\"MappingId:\") + 1].match(/^([^,]+),$/) ?? [];\n if(extractionMessage.message.includes(\"iModel\")){\n replacedMessage = replacedMessage.replace(/iModel [\\w-]+/, \"iModel\");\n }\n if(replacedMessage.includes(\"MappingId:\")){\n const mappingName = await getMappingName(mappingId[1]);\n replacedMessage = replacedMessage.replace(/MappingId: [\\w-]+/, `Mapping: ${mappingName}`);\n }\n if(replacedMessage.includes(\"GroupId:\")){\n const groupId = splittedMessage[splittedMessage.indexOf(\"GroupId:\") + 1].match(/^([^,]+).$/) ?? [];\n const groupName = await getGroupNames(mappingId[1], groupId[1], groupsCache);\n replacedMessage = replacedMessage.replace(/GroupId: [\\w-]+/, `Group: ${groupName}`);\n }\n return {...extractionMessage, message: replacedMessage};\n }\n });\n\n const newMessages = await Promise.all(extractionMessageDataPromises);\n setFormattedExtractionMessage(newMessages);\n };\n void formatMessages();\n }, [extractionMessageData, groupingMappingApiConfig, mappings, mappingClient, getGroupNames, getMappingName]);\n\n useEffect(() => {\n const newDateTime: Date = new Date(timestamp);\n const options: Intl.DateTimeFormatOptions = {\n day: \"numeric\", month: \"numeric\", year: \"numeric\",\n hour: \"2-digit\", minute: \"2-digit\",\n };\n setFormattedTimestamp(newDateTime.toLocaleString(undefined, options));\n }, [timestamp]);\n\n const translatedLabels = useMemo(() => ({\n filter: \"Filter\",\n clear: \"Clear\",\n }), []);\n\n const columns = useMemo(\n (): Column<CreateTypeFromInterface<ExtractionMessageData>>[] => [\n {\n id: \"category\",\n Header: \"Category\",\n accessor: \"category\",\n fieldType: \"text\",\n Filter: ExtractionLogCustomFilter,\n filter: \"equals\",\n },\n {\n id: \"level\",\n Header: \"Level\",\n accessor: \"level\",\n cellRenderer: ({ cellElementProps, cellProps }: CellRendererProps<CreateTypeFromInterface<ExtractionMessageData>>) => {\n const level = cellProps.row.original.level;\n return (\n <DefaultCell\n cellElementProps={cellElementProps}\n cellProps={cellProps}\n startIcon={\n level === \"Error\" ? (\n <StatusIcon status='error' />\n ) : level === \"Warning\" ? (\n <StatusIcon status='warning' />\n ) : level === \"Info\" ? (\n <StatusIcon status='informational' />\n ) : <StatusIcon status='trace' />\n }\n >\n {level}\n </DefaultCell>\n );\n },\n Filter: ExtractionLogCustomFilter,\n filter: \"equals\",\n },\n {\n id: \"message\",\n Header: \"Message\",\n accessor: \"message\",\n width: \"25vw\",\n fieldType: \"text\",\n Filter: tableFilters.TextFilter(translatedLabels),\n },\n ],\n [translatedLabels]\n );\n return (\n <Modal className=\"gmw-message-modal-container\"\n title=\"Extraction Logs\"\n isOpen={isOpen}\n onClose={onClose}\n closeOnExternalClick={false}\n >\n <ModalContent>\n <div className=\"gmw-timestamp-icon\">\n <Icon\n title=\"Extraction Timestamp\"\n size=\"medium\"\n >\n <SvgClock />\n </Icon>\n <Text>{formattedTimestamp}</Text>\n </div>\n <Table<CreateTypeFromInterface<ExtractionMessageData>>\n columns={columns}\n data={formattedExtractionMessage}\n emptyTableContent={\"\"}\n emptyFilteredTableContent=\"No results match filters.\"\n className=\"gmw-extraction-message-table-container\"\n />\n </ModalContent>\n <ModalButtonBar>\n <Button\n onClick={onClose}\n styleType=\"high-visibility\"\n >\n Close\n </Button>\n </ModalButtonBar>\n </Modal>\n );\n};\n"]}
1
+ {"version":3,"file":"ExtractionMessageModal.js","sourceRoot":"","sources":["../../../../../src/components/Mappings/Extraction/ExtractionMessageModal.tsx"],"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 { Button, DefaultCell, Icon, Modal, ModalButtonBar, ModalContent, Table, tableFilters, Text } from \"@itwin/itwinui-react\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport type { CreateTypeFromInterface } from \"../../../common/utils\";\nimport \"./ExtractionMessageModal.scss\";\nimport { SvgClock } from \"@itwin/itwinui-icons-react\";\nimport type { CellRendererProps, Column } from \"react-table\";\nimport { StatusIcon } from \"../../SharedComponents/StatusIcon\";\nimport { ExtractionLogCustomFilter } from \"./ExtractionLogCustomFilter\";\nimport { useGroupingMappingApiConfig } from \"../../context/GroupingApiConfigContext\";\nimport { useMappingClient } from \"../../context/MappingClientContext\";\nimport { useMappingsOperations } from \"../hooks/useMappingsOperations\";\nimport type { Mapping } from \"@itwin/insights-client\";\nimport { useQueries } from \"@tanstack/react-query\";\nimport { useMemoizedCollectionPick } from \"../../../common/hooks/useMemoizedCollectionPick\";\nimport { fetchGroups } from \"../../Groups/hooks/useFetchGroups\";\n\nexport interface ExtractionMessageData {\n date: string;\n category: string;\n level: string;\n message: string;\n}\n\nexport interface ExtractionMessageModalProps {\n isOpen: boolean;\n onClose: () => void;\n extractionMessageData: ExtractionMessageData[];\n timestamp: string;\n}\n\nexport const ExtractionMessageModal = ({ isOpen, onClose, extractionMessageData, timestamp }: ExtractionMessageModalProps) => {\n const [formattedExtractionMessage, setFormattedExtractionMessage] = useState<ExtractionMessageData[] | undefined>(undefined);\n const groupingMappingApiConfig = useGroupingMappingApiConfig();\n const mappingClient = useMappingClient();\n const { mappings, isLoading: isMappingsLoading } = useMappingsOperations({ ...groupingMappingApiConfig, mappingClient });\n const [formattedTimestamp, setFormattedTimestamp] = useState<string>(\"\");\n\n const getMappingName = useCallback((mappingId: string, mappings: Mapping[]) => {\n return mappings.find((mapping) => mapping.id === mappingId)?.mappingName ?? \"\";\n }, []);\n\n // Extract groupIds and mappingIds from messages\n const extractionInfo = useMemo(() => {\n return extractionMessageData.reduce<{\n mappingId: string;\n groupId: string;\n }[]>((acc, message) => {\n const splittedMessage = message.message.split(\" \");\n const mappingId = splittedMessage[splittedMessage.indexOf(\"MappingId:\") + 1]?.match(/^([^,]+),$/)?.[1];\n const groupId = splittedMessage[splittedMessage.indexOf(\"GroupId:\") + 1]?.match(/^([^,]+).$/)?.[1];\n\n if (mappingId && groupId) {\n acc.push({ mappingId, groupId });\n }\n return acc;\n }, []);\n }, [extractionMessageData]);\n\n // useQueries to fetch all group names\n const groupQueriesResults = useQueries({\n queries: extractionInfo.map(({ mappingId }) => ({\n queryKey: [\"groups\", mappingId],\n queryFn: async () => fetchGroups(groupingMappingApiConfig.iModelId, mappingId, groupingMappingApiConfig.getAccessToken, mappingClient),\n })),\n });\n\n // Workaround to get data from useQueries with more stability\n const pickedResult = useMemoizedCollectionPick(groupQueriesResults, [\"data\", \"error\", \"isLoading\", \"isSuccess\"]);\n\n useEffect(() => {\n if (pickedResult.every((query) => query.isSuccess) && mappings) {\n const formattedMessages = extractionMessageData.map((extractionMessage, index) => {\n let replacedMessage: string = extractionMessage.message;\n\n const { mappingId, groupId } = extractionInfo[index];\n const groupName = pickedResult[index].data!.find((group) => group.id === groupId)?.groupName;\n\n if (replacedMessage.includes(\"MappingId:\")) {\n const mappingName = getMappingName(mappingId, mappings);\n replacedMessage = replacedMessage.replace(/MappingId: [\\w-]+/, `Mapping: ${mappingName}`);\n }\n\n if (replacedMessage.includes(\"GroupId:\")) {\n replacedMessage = replacedMessage.replace(/GroupId: [\\w-]+/, `Group: ${groupName ? groupName : \"<Not Found>\"}`);\n }\n\n return { ...extractionMessage, message: replacedMessage };\n });\n\n setFormattedExtractionMessage(formattedMessages);\n }\n }, [extractionMessageData, mappings, extractionInfo, getMappingName, pickedResult]);\n\n useEffect(() => {\n const newDateTime: Date = new Date(timestamp);\n const options: Intl.DateTimeFormatOptions = {\n day: \"numeric\", month: \"numeric\", year: \"numeric\",\n hour: \"2-digit\", minute: \"2-digit\",\n };\n setFormattedTimestamp(newDateTime.toLocaleString(undefined, options));\n }, [timestamp]);\n\n const translatedLabels = useMemo(() => ({\n filter: \"Filter\",\n clear: \"Clear\",\n }), []);\n\n const columns = useMemo(\n (): Column<CreateTypeFromInterface<ExtractionMessageData>>[] => [\n {\n id: \"category\",\n Header: \"Category\",\n accessor: \"category\",\n fieldType: \"text\",\n Filter: ExtractionLogCustomFilter,\n filter: \"equals\",\n },\n {\n id: \"level\",\n Header: \"Level\",\n accessor: \"level\",\n cellRenderer: ({ cellElementProps, cellProps }: CellRendererProps<CreateTypeFromInterface<ExtractionMessageData>>) => {\n const level = cellProps.row.original.level;\n return (\n <DefaultCell\n cellElementProps={cellElementProps}\n cellProps={cellProps}\n startIcon={\n level === \"Error\" ? (\n <StatusIcon status='error' />\n ) : level === \"Warning\" ? (\n <StatusIcon status='warning' />\n ) : level === \"Info\" ? (\n <StatusIcon status='informational' />\n ) : <StatusIcon status='trace' />\n }\n >\n {level}\n </DefaultCell>\n );\n },\n Filter: ExtractionLogCustomFilter,\n filter: \"equals\",\n },\n {\n id: \"message\",\n Header: \"Message\",\n accessor: \"message\",\n width: \"25vw\",\n fieldType: \"text\",\n Filter: tableFilters.TextFilter(translatedLabels),\n },\n ],\n [translatedLabels]\n );\n const isLoading = pickedResult.some((query) => query.isLoading) || isMappingsLoading;\n\n return (\n <Modal className=\"gmw-message-modal-container\"\n title=\"Extraction Logs\"\n isOpen={isOpen}\n onClose={onClose}\n closeOnExternalClick={false}\n >\n <ModalContent>\n <div className=\"gmw-timestamp-icon\">\n <Icon\n title=\"Extraction Timestamp\"\n size=\"medium\"\n >\n <SvgClock />\n </Icon>\n <Text>{formattedTimestamp}</Text>\n </div>\n <Table<CreateTypeFromInterface<ExtractionMessageData>>\n columns={columns}\n data={formattedExtractionMessage ?? []}\n emptyTableContent={\"\"}\n emptyFilteredTableContent=\"No results match filters.\"\n className=\"gmw-extraction-message-table-container\"\n isLoading={isLoading}\n />\n </ModalContent>\n <ModalButtonBar>\n <Button\n onClick={onClose}\n styleType=\"high-visibility\"\n >\n Close\n </Button>\n </ModalButtonBar>\n </Modal>\n );\n};\n"]}
@@ -1,8 +1,14 @@
1
1
  /// <reference types="react" />
2
+ declare type IconStatus = "negative" | "positive" | "warning" | undefined;
3
+ export interface ExtractionStatusData {
4
+ iconStatus: IconStatus;
5
+ iconMessage: string;
6
+ }
2
7
  export interface ExtractionStatusIconProps {
3
- iconStatus: "negative" | "positive" | "warning" | undefined;
8
+ iconStatus: IconStatus;
4
9
  onClick: () => void;
5
10
  iconMessage: string;
6
11
  }
7
12
  export declare const ExtractionStatusIcon: ({ iconStatus, onClick, iconMessage }: ExtractionStatusIconProps) => JSX.Element;
13
+ export {};
8
14
  //# sourceMappingURL=ExtractionStatusIcon.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExtractionStatusIcon.js","sourceRoot":"","sources":["../../../../../src/components/Mappings/Extraction/ExtractionStatusIcon.tsx"],"names":[],"mappings":";;;;;;AAAA;;;+FAG+F;AAC/F,wDAA+E;AAC/E,kDAA0B;AAC1B,oEAAwD;AAQjD,MAAM,oBAAoB,GAAG,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAA6B,EAAE,EAAE;IACtG,OAAO,CACL,8BAAC,uBAAO,IAAC,OAAO,EAAE,WAAW;QAC3B,8BAAC,0BAAU,IAAC,SAAS,EAAC,YAAY,EAAC,OAAO,EAAE,OAAO;YACjD,8BAAC,kCAAkB,IAAC,MAAM,EAAE,UAAU;gBACpC,8BAAC,gCAAU,OAAG,CACK,CACV,CACL,CACX,CAAC;AACJ,CAAC,CAAC;AAVW,QAAA,oBAAoB,wBAU/B","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 { IconButton, NotificationMarker, Tooltip } from \"@itwin/itwinui-react\";\nimport React from \"react\";\nimport { SvgProcess } from \"@itwin/itwinui-icons-react\";\n\nexport interface ExtractionStatusIconProps {\n iconStatus: \"negative\" | \"positive\" | \"warning\" | undefined;\n onClick: () => void;\n iconMessage: string;\n}\n\nexport const ExtractionStatusIcon = ({ iconStatus, onClick, iconMessage }: ExtractionStatusIconProps) => {\n return (\n <Tooltip content={iconMessage}>\n <IconButton styleType='borderless' onClick={onClick}>\n <NotificationMarker status={iconStatus}>\n <SvgProcess />\n </NotificationMarker>\n </IconButton>\n </Tooltip>\n );\n};\n"]}
1
+ {"version":3,"file":"ExtractionStatusIcon.js","sourceRoot":"","sources":["../../../../../src/components/Mappings/Extraction/ExtractionStatusIcon.tsx"],"names":[],"mappings":";;;;;;AAAA;;;+FAG+F;AAC/F,wDAA+E;AAC/E,kDAA0B;AAC1B,oEAAwD;AAcjD,MAAM,oBAAoB,GAAG,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAA6B,EAAE,EAAE;IACtG,OAAO,CACL,8BAAC,uBAAO,IAAC,OAAO,EAAE,WAAW;QAC3B,8BAAC,0BAAU,IAAC,SAAS,EAAC,YAAY,EAAC,OAAO,EAAE,OAAO;YACjD,8BAAC,kCAAkB,IAAC,MAAM,EAAE,UAAU;gBACpC,8BAAC,gCAAU,OAAG,CACK,CACV,CACL,CACX,CAAC;AACJ,CAAC,CAAC;AAVW,QAAA,oBAAoB,wBAU/B","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 { IconButton, NotificationMarker, Tooltip } from \"@itwin/itwinui-react\";\nimport React from \"react\";\nimport { SvgProcess } from \"@itwin/itwinui-icons-react\";\n\ntype IconStatus = \"negative\" | \"positive\" | \"warning\" | undefined;\nexport interface ExtractionStatusData {\n iconStatus: IconStatus;\n iconMessage: string;\n}\n\nexport interface ExtractionStatusIconProps {\n iconStatus: IconStatus;\n onClick: () => void;\n iconMessage: string;\n}\n\nexport const ExtractionStatusIcon = ({ iconStatus, onClick, iconMessage }: ExtractionStatusIconProps) => {\n return (\n <Tooltip content={iconMessage}>\n <IconButton styleType='borderless' onClick={onClick}>\n <NotificationMarker status={iconStatus}>\n <SvgProcess />\n </NotificationMarker>\n </IconButton>\n </Tooltip>\n );\n};\n"]}
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import type { IMappingTyped } from "./Mappings";
2
+ import type { IMappingTyped } from "../Mappings";
3
3
  import "./ConfirmMappingsImport.scss";
4
4
  declare const defaultDisplayStrings: {
5
5
  mappings: string;
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -27,10 +31,10 @@ const itwinui_react_1 = require("@itwin/itwinui-react");
27
31
  const react_1 = __importStar(require("react"));
28
32
  require("./ConfirmMappingsImport.scss");
29
33
  const itwinui_icons_react_1 = require("@itwin/itwinui-icons-react");
30
- const useValidator_1 = __importStar(require("../Properties/hooks/useValidator"));
31
- const utils_1 = require("../../common/utils");
32
- const MappingClientContext_1 = require("../context/MappingClientContext");
33
- const GroupingApiConfigContext_1 = require("../context/GroupingApiConfigContext");
34
+ const useValidator_1 = __importStar(require("../../Properties/hooks/useValidator"));
35
+ const MappingClientContext_1 = require("../../context/MappingClientContext");
36
+ const GroupingApiConfigContext_1 = require("../../context/GroupingApiConfigContext");
37
+ const react_query_1 = require("@tanstack/react-query");
34
38
  const defaultDisplayStrings = {
35
39
  mappings: "Mappings",
36
40
  };
@@ -56,26 +60,33 @@ const ConfirmMappingImport = ({ sourceiModelId, selectedMappings, importing, set
56
60
  };
57
61
  setSelectedMappings(newState);
58
62
  };
63
+ const importMutation = (0, react_query_1.useMutation)({
64
+ mutationFn: async (selectedMapping) => {
65
+ const accessToken = await getAccessToken();
66
+ await mappingClient.copyMapping(accessToken, sourceiModelId, selectedMapping.id, {
67
+ targetIModelId: iModelId,
68
+ mappingName: selectedMapping.mappingName,
69
+ });
70
+ },
71
+ onMutate: async (selectedMapping) => {
72
+ setCurrentlyImporting(selectedMapping.mappingName);
73
+ },
74
+ onSuccess: () => {
75
+ setImportCount((count) => count + 1);
76
+ },
77
+ onError: () => {
78
+ setErrored(true);
79
+ },
80
+ });
59
81
  const onImport = async () => {
60
82
  if (!validator.allValid()) {
61
83
  showValidationMessage(true);
62
84
  return;
63
85
  }
64
86
  setImporting(true);
65
- try {
66
- for (const selectedMapping of selectedMappings) {
67
- setCurrentlyImporting(selectedMapping.mappingName ?? "");
68
- const accessToken = await getAccessToken();
69
- await mappingClient.copyMapping(accessToken, sourceiModelId, selectedMapping.id ?? "", {
70
- targetIModelId: iModelId ?? "",
71
- mappingName: selectedMapping.mappingName ?? "",
72
- });
73
- setImportCount((importCount) => importCount + 1);
74
- }
75
- }
76
- catch (error) {
77
- (0, utils_1.handleError)(error);
78
- setErrored(true);
87
+ setImportCount(0);
88
+ for (const mapping of selectedMappings) {
89
+ await importMutation.mutateAsync(mapping);
79
90
  }
80
91
  };
81
92
  return (react_1.default.createElement(react_1.default.Fragment, null, importing ? (react_1.default.createElement("div", { className: 'gmw-import-progress-container' },
@@ -98,13 +109,13 @@ const ConfirmMappingImport = ({ sourceiModelId, selectedMappings, importing, set
98
109
  ], status: !errored ?
99
110
  importCount === selectedMappings.length ? "positive" : undefined : "negative" })),
100
111
  react_1.default.createElement("div", { className: 'gmw-import-action-panel' },
101
- react_1.default.createElement(itwinui_react_1.Button, { disabled: !errored && importCount !== selectedMappings.length, onClick: () => {
112
+ react_1.default.createElement(itwinui_react_1.Button, { disabled: !errored && importCount === selectedMappings.length, onClick: () => {
102
113
  setImporting(false);
103
114
  setImportCount(0);
104
115
  setCurrentlyImporting("");
105
116
  setErrored(false);
106
117
  } }, "Back"),
107
- react_1.default.createElement(itwinui_react_1.Button, { styleType: 'high-visibility', disabled: !errored && importCount !== selectedMappings.length, onClick: () => onFinish() }, "Close")))) : (react_1.default.createElement("div", { className: 'gmw-rename-confirm-container ' },
118
+ react_1.default.createElement(itwinui_react_1.Button, { styleType: 'high-visibility', disabled: !errored && importCount !== selectedMappings.length, onClick: onFinish }, "Close")))) : (react_1.default.createElement("div", { className: 'gmw-rename-confirm-container ' },
108
119
  react_1.default.createElement("div", { className: 'gmw-mapping-rename-container' },
109
120
  react_1.default.createElement("div", { className: 'gmw-mapping-row-header-container' },
110
121
  react_1.default.createElement("div", { className: 'gmw-mapping-row' },
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfirmMappingsImport.js","sourceRoot":"","sources":["../../../../../src/components/Mappings/Import/ConfirmMappingsImport.tsx"],"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 {\n Button,\n LabeledInput,\n MiddleTextTruncation,\n ProgressLinear,\n Text,\n} from \"@itwin/itwinui-react\";\nimport React, { useEffect, useState } from \"react\";\nimport type { IMappingTyped } from \"../Mappings\";\nimport \"./ConfirmMappingsImport.scss\";\nimport { SvgStatusSuccessHollow } from \"@itwin/itwinui-icons-react\";\nimport useValidator, { NAME_REQUIREMENTS } from \"../../Properties/hooks/useValidator\";\nimport { useMappingClient } from \"../../context/MappingClientContext\";\nimport { useGroupingMappingApiConfig } from \"../../context/GroupingApiConfigContext\";\nimport { useMutation } from \"@tanstack/react-query\";\n\nconst defaultDisplayStrings = {\n mappings: \"Mappings\",\n};\n\ninterface ConfirmMappingImportProps {\n sourceiModelId: string;\n selectedMappings: IMappingTyped[];\n importing: boolean;\n setImporting: React.Dispatch<React.SetStateAction<boolean>>;\n setSelectedMappings: React.Dispatch<React.SetStateAction<IMappingTyped[]>>;\n backFn: () => void;\n onCancel: () => void;\n onFinish: () => void;\n displayStrings?: Partial<typeof defaultDisplayStrings>;\n}\n\nconst ConfirmMappingImport = ({\n sourceiModelId,\n selectedMappings,\n importing,\n setImporting,\n setSelectedMappings,\n backFn,\n onCancel,\n onFinish,\n displayStrings: userDisplayStrings,\n}: ConfirmMappingImportProps) => {\n const { getAccessToken, iModelId } = useGroupingMappingApiConfig();\n const mappingClient = useMappingClient();\n const [importCount, setImportCount] = useState<number>(0);\n const [currentlyImporting, setCurrentlyImporting] = useState<string>(\"\");\n const [validator, showValidationMessage] = useValidator();\n const [errored, setErrored] = useState<boolean>(false);\n\n const displayStrings = React.useMemo(\n () => ({ ...defaultDisplayStrings, ...userDisplayStrings }),\n [userDisplayStrings]\n );\n\n useEffect(() => {\n setSelectedMappings((selectedMappings) =>\n selectedMappings.map((mapping) => ({\n ...mapping,\n mappingName: `${mapping.mappingName}_Copy`,\n })),\n );\n }, [setSelectedMappings]);\n\n const handleChange = (\n e: React.ChangeEvent<HTMLInputElement>,\n index: number,\n ) => {\n const newState = [...selectedMappings];\n newState[index] = {\n ...newState[index],\n mappingName: e.target.value,\n };\n setSelectedMappings(newState);\n };\n\n const importMutation = useMutation({\n mutationFn: async (selectedMapping: IMappingTyped) => {\n const accessToken = await getAccessToken();\n await mappingClient.copyMapping(\n accessToken,\n sourceiModelId,\n selectedMapping.id,\n {\n targetIModelId: iModelId,\n mappingName: selectedMapping.mappingName,\n }\n );\n },\n onMutate: async (selectedMapping: IMappingTyped) => {\n setCurrentlyImporting(selectedMapping.mappingName);\n },\n onSuccess: () => {\n setImportCount((count) => count + 1);\n },\n onError: () => {\n setErrored(true);\n },\n });\n\n const onImport = async () => {\n if (!validator.allValid()) {\n showValidationMessage(true);\n return;\n }\n setImporting(true);\n setImportCount(0);\n for (const mapping of selectedMappings) {\n await importMutation.mutateAsync(mapping);\n }\n };\n\n return (\n <>\n {importing ? (\n <div className='gmw-import-progress-container'>\n <div className='gmw-import-progress-bar'>\n <div className='gmw-import-progress-bar-description'>\n {\n !errored ? importCount !== selectedMappings.length ? (\n <>\n <Text variant='title'>Importing</Text>\n <Text>{`We are currently importing the ${displayStrings.mappings.toLocaleLowerCase()}.`}</Text>\n </>\n ) : (\n <>\n <Text variant='title'>Done!</Text>\n <Text>{`Your imported ${displayStrings.mappings.toLocaleLowerCase()} are ready.`}</Text>\n </>\n ) :\n <>\n <Text variant='title'>Error!</Text>\n <Text>{`Sorry, there was an error importing some or all ${displayStrings.mappings}.`}</Text>\n </>}\n </div>\n <ProgressLinear\n value={(importCount / selectedMappings.length) * 100}\n labels={\n importCount === selectedMappings.length\n ? [\"Import done!\", <SvgStatusSuccessHollow key='0' />]\n : [\n <>\n <Text>Copying</Text>\n <MiddleTextTruncation text={currentlyImporting} />\n </>,\n `${importCount}/${selectedMappings.length}`,\n ]\n }\n status={\n !errored ?\n importCount === selectedMappings.length ? \"positive\" : undefined : \"negative\"\n }\n />\n </div>\n <div className='gmw-import-action-panel'>\n <Button\n disabled={!errored && importCount === selectedMappings.length}\n onClick={() => {\n setImporting(false);\n setImportCount(0);\n setCurrentlyImporting(\"\");\n setErrored(false);\n }}\n >\n Back\n </Button>\n <Button\n styleType='high-visibility'\n disabled={!errored && importCount !== selectedMappings.length}\n onClick={onFinish}\n >\n Close\n </Button>\n </div>\n </div>\n ) : (\n <div className='gmw-rename-confirm-container '>\n <div className='gmw-mapping-rename-container'>\n <div className='gmw-mapping-row-header-container'>\n <div className='gmw-mapping-row'>\n <Text variant='leading'>{displayStrings.mappings}</Text>\n <Text variant='leading'>Description</Text>\n </div>\n </div>\n <div className='gmw-mapping-row-body'>\n {selectedMappings.map((mapping, index) => (\n <div className='gmw-mapping-row-container' key={mapping.id}>\n <div className='gmw-mapping-row'>\n <LabeledInput\n value={mapping.mappingName}\n name={`mapping_${mapping.id}`}\n required\n onChange={(event) => {\n handleChange(event, index);\n validator.showMessageFor(`mapping_${mapping.id}`);\n }}\n message={validator.message(\n `mapping_${mapping.id}`,\n mapping.mappingName,\n NAME_REQUIREMENTS,\n )}\n status={\n validator.message(\n `mapping_${mapping.id}`,\n mapping.mappingName,\n NAME_REQUIREMENTS,\n )\n ? \"negative\"\n : undefined\n }\n onBlur={() => {\n validator.showMessageFor(`mapping_${mapping.id}`);\n }}\n onBlurCapture={(event) => {\n handleChange(event, index);\n validator.showMessageFor(`mapping_${mapping.id}`);\n }}\n />\n <div>{mapping.description}</div>\n </div>\n <div className='gmw-border-div' />\n </div>\n ))}\n </div>\n </div>\n <div className='gmw-import-action-panel'>\n <Button onClick={backFn}>Back</Button>\n <Button styleType='high-visibility' onClick={async () => onImport()}>\n Import\n </Button>\n <Button onClick={onCancel}>Cancel</Button>\n </div>\n </div>\n )}\n </>\n );\n};\n\nexport default ConfirmMappingImport;\n"]}
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -26,10 +30,10 @@ exports.MappingImportWizardModal = void 0;
26
30
  const itwinui_react_1 = require("@itwin/itwinui-react");
27
31
  const itwinui_react_2 = require("@itwin/itwinui-react");
28
32
  const react_1 = __importStar(require("react"));
29
- const ConfirmMappingsImport_1 = __importDefault(require("../ConfirmMappingsImport"));
33
+ const ConfirmMappingsImport_1 = __importDefault(require("./ConfirmMappingsImport"));
30
34
  require("./MappingImportWizardModal.scss");
31
35
  const SelectIModel_1 = __importDefault(require("./SelectIModel"));
32
- const SelectITwin_1 = __importDefault(require("./SelectITwin"));
36
+ const SelectITwin_1 = __importStar(require("./SelectITwin"));
33
37
  const SelectMappings_1 = __importDefault(require("./SelectMappings"));
34
38
  const GroupingApiConfigContext_1 = require("../../context/GroupingApiConfigContext");
35
39
  const IModelsClientContext_1 = require("../../context/IModelsClientContext");
@@ -47,7 +51,7 @@ const defaultDisplayStrings = {
47
51
  const MappingImportWizardModal = ({ show, setShow, onFinish, displayStrings: userDisplayStrings, }) => {
48
52
  const { prefix } = (0, GroupingApiConfigContext_1.useGroupingMappingApiConfig)();
49
53
  const [currentStep, setCurrentStep] = (0, react_1.useState)(0);
50
- const [iTwinType, setITwinType] = (0, react_1.useState)(0);
54
+ const [iTwinType, setITwinType] = (0, react_1.useState)(SelectITwin_1.ITwinType.Favorite);
51
55
  const [selectedITwinId, setSelectedITwinId] = (0, react_1.useState)("");
52
56
  const [selectedIModelId, setSelectedIModelId] = (0, react_1.useState)("");
53
57
  const [selectedMappings, setSelectedMappings] = (0, react_1.useState)([]);
@@ -112,10 +116,7 @@ const MappingImportWizardModal = ({ show, setShow, onFinish, displayStrings: use
112
116
  setSelectedMappings(selectedMappings);
113
117
  setCurrentStep(3);
114
118
  }, onCancel: onClose, backFn: () => setCurrentStep(currentStep - 1), displayStrings: displayStrings })),
115
- currentStep === 3 && (react_1.default.createElement(ConfirmMappingsImport_1.default, { sourceiModelId: selectedIModelId, selectedMappings: selectedMappings, importing: importing, setImporting: setImporting, setSelectedMappings: setSelectedMappings, backFn: () => setCurrentStep(currentStep - 1), onCancel: onClose, onFinish: async () => {
116
- await onClose();
117
- setImporting(false);
118
- }, displayStrings: displayStrings }))));
119
+ currentStep === 3 && (react_1.default.createElement(ConfirmMappingsImport_1.default, { sourceiModelId: selectedIModelId, selectedMappings: selectedMappings, importing: importing, setImporting: setImporting, setSelectedMappings: setSelectedMappings, backFn: () => setCurrentStep(currentStep - 1), onCancel: onClose, onFinish: onClose, displayStrings: displayStrings }))));
119
120
  default:
120
121
  return null;
121
122
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MappingImportWizardModal.js","sourceRoot":"","sources":["../../../../../src/components/Mappings/Import/MappingImportWizardModal.tsx"],"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 type { IModelsClient } from \"@itwin/imodels-client-management\";\nimport type { ITwinsAccessClient } from \"@itwin/itwins-client\";\nimport type { StepProperties } from \"@itwin/itwinui-react\";\nimport { Stepper } from \"@itwin/itwinui-react\";\nimport { Modal } from \"@itwin/itwinui-react\";\nimport React, { useEffect, useRef, useState } from \"react\";\nimport ConfirmMappingImport from \"../ConfirmMappingsImport\";\nimport type { IMappingTyped } from \"../Mappings\";\nimport \"./MappingImportWizardModal.scss\";\nimport SelectIModel from \"./SelectIModel\";\nimport SelectITwin from \"./SelectITwin\";\nimport SelectMappings from \"./SelectMappings\";\nimport { useGroupingMappingApiConfig } from \"../../context/GroupingApiConfigContext\";\nimport { createIModelsClient, IModelsClientContext } from \"../../context/IModelsClientContext\";\nimport { createITwinsClient, ITwinsClientContext } from \"../../context/ITwinsClientContext\";\n\nconst defaultDisplayStrings = {\n mappings: \"Mappings\",\n iTwins: \"iTwins\",\n iTwinNumber: \"Number\",\n iTwinName: \"Name\",\n iTwinStatus: \"Status\",\n iModels: \"iModels\",\n iModelName: \"Name\",\n iModelDescription: \"Description\",\n};\ninterface MappingImportWizardModalProps {\n show: boolean;\n setShow: (show: boolean) => void;\n onFinish: () => Promise<void>;\n displayStrings?: Partial<typeof defaultDisplayStrings>;\n}\n\nexport const MappingImportWizardModal = ({\n show,\n setShow,\n onFinish,\n displayStrings: userDisplayStrings,\n}: MappingImportWizardModalProps) => {\n const { prefix } = useGroupingMappingApiConfig();\n const [currentStep, setCurrentStep] = useState<number>(0);\n const [iTwinType, setITwinType] = useState<number>(0);\n const [selectedITwinId, setSelectedITwinId] = useState<string>(\"\");\n const [selectedIModelId, setSelectedIModelId] = useState<string>(\"\");\n const [selectedMappings, setSelectedMappings] = useState<IMappingTyped[]>([]);\n const [importing, setImporting] = useState<boolean>(false);\n const [iTwinsClient, setITwinsClient] = useState<ITwinsAccessClient>(createITwinsClient(prefix));\n const [iModelsClient, setIModelsClient] = useState<IModelsClient>(createIModelsClient(prefix));\n\n useEffect(() => {\n setITwinsClient(createITwinsClient(prefix));\n setIModelsClient(createIModelsClient(prefix));\n }, [prefix]);\n\n const displayStrings = React.useMemo(\n () => ({ ...defaultDisplayStrings, ...userDisplayStrings }),\n [userDisplayStrings]\n );\n\n const steps = useRef<StepProperties[]>([\n {\n name: \"Select iTwin\",\n description: `Select the source iTwin to bring your ${displayStrings.mappings} from.`,\n },\n {\n name: \"Select iModel\",\n description: \"Select an iModel within the iTwin you have selected.\",\n },\n {\n name: `Select ${displayStrings.mappings}`,\n description: `Select one or more ${displayStrings.mappings} to import.`,\n },\n {\n name: \"Rename & Confirm\",\n description:\n \"Rename and confirm your selections. Click import when finished.\",\n },\n ]);\n\n const onClose = async () => {\n setShow(false);\n setCurrentStep(0);\n await onFinish();\n };\n\n return (\n <Modal\n title={`Import ${displayStrings.mappings}`}\n modalRootId='grouping-mapping-widget'\n isOpen={show}\n closeOnEsc={false}\n closeOnExternalClick={false}\n isDismissible={!importing}\n styleType='fullPage'\n onClose={async () => {\n await onClose();\n }}\n >\n <div className='gmw-import-wizard-body-container'>\n <Stepper\n currentStep={currentStep}\n steps={steps.current}\n onStepClick={\n importing ? undefined : (index: number) => setCurrentStep(index)\n }\n />\n\n {(() => {\n switch (currentStep) {\n case 0:\n return (\n <ITwinsClientContext.Provider value={iTwinsClient}>\n <div className=\"gmw-table-container\">\n <SelectITwin\n onSelect={(iTwinId) => {\n setSelectedITwinId(iTwinId);\n setCurrentStep(1);\n }}\n onCancel={onClose}\n onChangeITwinType={setITwinType}\n displayStrings={displayStrings}\n defaultITwinType={iTwinType}\n />\n </div>\n </ITwinsClientContext.Provider>\n );\n case 1:\n return (\n <IModelsClientContext.Provider value={iModelsClient}>\n <div className=\"gmw-table-container\">\n <SelectIModel\n iTwinId={selectedITwinId}\n onSelect={(iModelId) => {\n setSelectedIModelId(iModelId);\n setCurrentStep(2);\n }}\n backFn={() => setCurrentStep(currentStep - 1)}\n onCancel={onClose}\n />\n </div>\n </IModelsClientContext.Provider>\n );\n case 2:\n case 3:\n // Preserve table state within Select Mappings\n return (\n <>\n <div\n style={{ display: currentStep === 2 ? \"flex\" : \"none\" }}\n className=\"gmw-mapping-container\"\n >\n <SelectMappings\n iModelId={selectedIModelId}\n onSelect={(selectedMappings) => {\n setSelectedMappings(selectedMappings);\n setCurrentStep(3);\n }}\n onCancel={onClose}\n backFn={() => setCurrentStep(currentStep - 1)}\n displayStrings={displayStrings}\n />\n </div>\n {currentStep === 3 && (\n <ConfirmMappingImport\n sourceiModelId={selectedIModelId}\n selectedMappings={selectedMappings}\n importing={importing}\n setImporting={setImporting}\n setSelectedMappings={setSelectedMappings}\n backFn={() => setCurrentStep(currentStep - 1)}\n onCancel={onClose}\n onFinish={async () => {\n await onClose();\n setImporting(false);\n }}\n displayStrings={displayStrings}\n />\n )}\n </>\n );\n default:\n return null;\n }\n })()}\n </div>\n </Modal>\n );\n};\n"]}
1
+ {"version":3,"file":"MappingImportWizardModal.js","sourceRoot":"","sources":["../../../../../src/components/Mappings/Import/MappingImportWizardModal.tsx"],"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 type { IModelsClient } from \"@itwin/imodels-client-management\";\nimport type { ITwinsAccessClient } from \"@itwin/itwins-client\";\nimport type { StepProperties } from \"@itwin/itwinui-react\";\nimport { Stepper } from \"@itwin/itwinui-react\";\nimport { Modal } from \"@itwin/itwinui-react\";\nimport React, { useEffect, useRef, useState } from \"react\";\nimport ConfirmMappingImport from \"./ConfirmMappingsImport\";\nimport type { IMappingTyped } from \"../Mappings\";\nimport \"./MappingImportWizardModal.scss\";\nimport SelectIModel from \"./SelectIModel\";\nimport SelectITwin, { ITwinType } from \"./SelectITwin\";\nimport SelectMappings from \"./SelectMappings\";\nimport { useGroupingMappingApiConfig } from \"../../context/GroupingApiConfigContext\";\nimport { createIModelsClient, IModelsClientContext } from \"../../context/IModelsClientContext\";\nimport { createITwinsClient, ITwinsClientContext } from \"../../context/ITwinsClientContext\";\n\nconst defaultDisplayStrings = {\n mappings: \"Mappings\",\n iTwins: \"iTwins\",\n iTwinNumber: \"Number\",\n iTwinName: \"Name\",\n iTwinStatus: \"Status\",\n iModels: \"iModels\",\n iModelName: \"Name\",\n iModelDescription: \"Description\",\n};\ninterface MappingImportWizardModalProps {\n show: boolean;\n setShow: (show: boolean) => void;\n onFinish: () => Promise<void>;\n displayStrings?: Partial<typeof defaultDisplayStrings>;\n}\n\nexport const MappingImportWizardModal = ({\n show,\n setShow,\n onFinish,\n displayStrings: userDisplayStrings,\n}: MappingImportWizardModalProps) => {\n const { prefix } = useGroupingMappingApiConfig();\n const [currentStep, setCurrentStep] = useState<number>(0);\n const [iTwinType, setITwinType] = useState<ITwinType>(ITwinType.Favorite);\n const [selectedITwinId, setSelectedITwinId] = useState<string>(\"\");\n const [selectedIModelId, setSelectedIModelId] = useState<string>(\"\");\n const [selectedMappings, setSelectedMappings] = useState<IMappingTyped[]>([]);\n const [importing, setImporting] = useState<boolean>(false);\n const [iTwinsClient, setITwinsClient] = useState<ITwinsAccessClient>(createITwinsClient(prefix));\n const [iModelsClient, setIModelsClient] = useState<IModelsClient>(createIModelsClient(prefix));\n\n useEffect(() => {\n setITwinsClient(createITwinsClient(prefix));\n setIModelsClient(createIModelsClient(prefix));\n }, [prefix]);\n\n const displayStrings = React.useMemo(\n () => ({ ...defaultDisplayStrings, ...userDisplayStrings }),\n [userDisplayStrings]\n );\n\n const steps = useRef<StepProperties[]>([\n {\n name: \"Select iTwin\",\n description: `Select the source iTwin to bring your ${displayStrings.mappings} from.`,\n },\n {\n name: \"Select iModel\",\n description: \"Select an iModel within the iTwin you have selected.\",\n },\n {\n name: `Select ${displayStrings.mappings}`,\n description: `Select one or more ${displayStrings.mappings} to import.`,\n },\n {\n name: \"Rename & Confirm\",\n description:\n \"Rename and confirm your selections. Click import when finished.\",\n },\n ]);\n\n const onClose = async () => {\n setShow(false);\n setCurrentStep(0);\n await onFinish();\n };\n\n return (\n <Modal\n title={`Import ${displayStrings.mappings}`}\n modalRootId='grouping-mapping-widget'\n isOpen={show}\n closeOnEsc={false}\n closeOnExternalClick={false}\n isDismissible={!importing}\n styleType='fullPage'\n onClose={async () => {\n await onClose();\n }}\n >\n <div className='gmw-import-wizard-body-container'>\n <Stepper\n currentStep={currentStep}\n steps={steps.current}\n onStepClick={\n importing ? undefined : (index: number) => setCurrentStep(index)\n }\n />\n\n {(() => {\n switch (currentStep) {\n case 0:\n return (\n <ITwinsClientContext.Provider value={iTwinsClient}>\n <div className=\"gmw-table-container\">\n <SelectITwin\n onSelect={(iTwinId) => {\n setSelectedITwinId(iTwinId);\n setCurrentStep(1);\n }}\n onCancel={onClose}\n onChangeITwinType={setITwinType}\n displayStrings={displayStrings}\n defaultITwinType={iTwinType}\n />\n </div>\n </ITwinsClientContext.Provider>\n );\n case 1:\n return (\n <IModelsClientContext.Provider value={iModelsClient}>\n <div className=\"gmw-table-container\">\n <SelectIModel\n iTwinId={selectedITwinId}\n onSelect={(iModelId) => {\n setSelectedIModelId(iModelId);\n setCurrentStep(2);\n }}\n backFn={() => setCurrentStep(currentStep - 1)}\n onCancel={onClose}\n />\n </div>\n </IModelsClientContext.Provider>\n );\n case 2:\n case 3:\n // Preserve table state within Select Mappings\n return (\n <>\n <div\n style={{ display: currentStep === 2 ? \"flex\" : \"none\" }}\n className=\"gmw-mapping-container\"\n >\n <SelectMappings\n iModelId={selectedIModelId}\n onSelect={(selectedMappings) => {\n setSelectedMappings(selectedMappings);\n setCurrentStep(3);\n }}\n onCancel={onClose}\n backFn={() => setCurrentStep(currentStep - 1)}\n displayStrings={displayStrings}\n />\n </div>\n {currentStep === 3 && (\n <ConfirmMappingImport\n sourceiModelId={selectedIModelId}\n selectedMappings={selectedMappings}\n importing={importing}\n setImporting={setImporting}\n setSelectedMappings={setSelectedMappings}\n backFn={() => setCurrentStep(currentStep - 1)}\n onCancel={onClose}\n onFinish={onClose}\n displayStrings={displayStrings}\n />\n )}\n </>\n );\n default:\n return null;\n }\n })()}\n </div>\n </Modal>\n );\n};\n"]}
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -24,68 +28,49 @@ const react_1 = __importStar(require("react"));
24
28
  require("./SelectIModel.scss");
25
29
  const GroupingApiConfigContext_1 = require("../../context/GroupingApiConfigContext");
26
30
  const IModelsClientContext_1 = require("../../context/IModelsClientContext");
27
- const utils_1 = require("../../../common/utils");
31
+ const react_query_1 = require("@tanstack/react-query");
32
+ const imodels_access_frontend_1 = require("@itwin/imodels-access-frontend");
28
33
  const defaultDisplayStrings = {
29
34
  iModels: "iModels",
30
35
  iModelName: "Name",
31
36
  iModelDescription: "Description",
32
37
  };
33
- const fetchIModels = async (setIModels, setIsLoading, getAccessToken, iTwinId, iModelsClient) => {
34
- try {
35
- setIModels([]);
36
- setIsLoading(true);
37
- const iModelIterator = iModelsClient.iModels.getRepresentationList({
38
- authorization: async () => {
39
- const token = await getAccessToken();
40
- const splitToken = token.split(" ");
41
- return {
42
- scheme: splitToken[0],
43
- token: splitToken[1],
44
- };
45
- },
46
- urlParams: {
47
- iTwinId,
48
- },
49
- });
50
- const iModels = [];
51
- for await (const iModel of iModelIterator) {
52
- iModels.push(iModel);
53
- }
54
- setIModels(iModels);
55
- }
56
- catch (error) {
57
- (0, utils_1.handleError)(error.status);
58
- }
59
- finally {
60
- setIsLoading(false);
38
+ const fetchIModels = async (getAccessToken, iTwinId, iModelsClient) => {
39
+ const accessToken = await getAccessToken();
40
+ const authorization = imodels_access_frontend_1.AccessTokenAdapter.toAuthorizationCallback(accessToken);
41
+ const iModelIterator = iModelsClient.iModels.getRepresentationList({
42
+ authorization,
43
+ urlParams: {
44
+ iTwinId,
45
+ },
46
+ });
47
+ const iModels = [];
48
+ for await (const iModel of iModelIterator) {
49
+ iModels.push(iModel);
61
50
  }
51
+ return iModels;
62
52
  };
63
53
  const SelectIModel = ({ iTwinId: iTwinId, onSelect, onCancel, backFn, displayStrings: userDisplayStrings, }) => {
64
54
  const { getAccessToken } = (0, GroupingApiConfigContext_1.useGroupingMappingApiConfig)();
65
55
  const iModelsClient = (0, IModelsClientContext_1.useIModelsClient)();
66
- const [isLoading, setIsLoading] = (0, react_1.useState)(true);
67
- const [iModels, setIModels] = (0, react_1.useState)([]);
68
- (0, react_1.useEffect)(() => {
69
- void fetchIModels(setIModels, setIsLoading, getAccessToken, iTwinId, iModelsClient);
70
- }, [getAccessToken, iModelsClient, setIsLoading, iTwinId]);
56
+ const { data: iModels, isFetching: isLoading } = (0, react_query_1.useQuery)({
57
+ queryKey: ["iModels", iTwinId],
58
+ queryFn: async () => fetchIModels(getAccessToken, iTwinId, iModelsClient),
59
+ initialData: [],
60
+ });
71
61
  const displayStrings = react_1.default.useMemo(() => ({ ...defaultDisplayStrings, ...userDisplayStrings }), [userDisplayStrings]);
72
62
  const iModelsColumns = (0, react_1.useMemo)(() => [
73
63
  {
74
- Header: "Table",
75
- columns: [
76
- {
77
- id: "iModelName",
78
- Header: `${displayStrings.iModelName}`,
79
- accessor: "name",
80
- Filter: itwinui_react_1.tableFilters.TextFilter(),
81
- },
82
- {
83
- id: "iModelDescription",
84
- Header: `${displayStrings.iModelDescription}`,
85
- accessor: "description",
86
- Filter: itwinui_react_1.tableFilters.TextFilter(),
87
- },
88
- ],
64
+ id: "iModelName",
65
+ Header: `${displayStrings.iModelName}`,
66
+ accessor: "name",
67
+ Filter: itwinui_react_1.tableFilters.TextFilter(),
68
+ },
69
+ {
70
+ id: "iModelDescription",
71
+ Header: `${displayStrings.iModelDescription}`,
72
+ accessor: "description",
73
+ Filter: itwinui_react_1.tableFilters.TextFilter(),
89
74
  },
90
75
  ], [displayStrings.iModelName, displayStrings.iModelDescription]);
91
76
  const pageSizeList = (0, react_1.useMemo)(() => [10, 25, 50], []);