@itwin/grouping-mapping-widget 0.17.4 → 0.18.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 (200) hide show
  1. package/lib/cjs/formula/FormulaDataTypeResolver.js +4 -4
  2. package/lib/cjs/formula/FormulaDataTypeResolver.js.map +1 -1
  3. package/lib/cjs/formula/FormulaFunctionProvider.js +4 -4
  4. package/lib/cjs/formula/FormulaFunctionProvider.js.map +1 -1
  5. package/lib/cjs/formula/FormulaSplitter.js +12 -12
  6. package/lib/cjs/formula/FormulaSplitter.js.map +1 -1
  7. package/lib/cjs/formula/FormulaTokensDataTypeResolver.js +6 -6
  8. package/lib/cjs/formula/FormulaTokensDataTypeResolver.js.map +1 -1
  9. package/lib/cjs/formula/InfixToPostfixConverter.js +11 -11
  10. package/lib/cjs/formula/InfixToPostfixConverter.js.map +1 -1
  11. package/lib/cjs/grouping-mapping-widget.d.ts +3 -1
  12. package/lib/cjs/grouping-mapping-widget.js +7 -3
  13. package/lib/cjs/grouping-mapping-widget.js.map +1 -1
  14. package/lib/cjs/test/GroupPropertyUtils.test.js +74 -74
  15. package/lib/cjs/test/GroupPropertyUtils.test.js.map +1 -1
  16. package/lib/cjs/test/GroupingMappingCustomUI.test.js +9 -9
  17. package/lib/cjs/test/GroupingMappingCustomUI.test.js.map +1 -1
  18. package/lib/cjs/test/PropertyFieldsHelpers.js +8 -8
  19. package/lib/cjs/test/PropertyFieldsHelpers.js.map +1 -1
  20. package/lib/cjs/test/WidgetHeader.test.js +2 -2
  21. package/lib/cjs/test/WidgetHeader.test.js.map +1 -1
  22. package/lib/cjs/test/test-utils.js +1 -1
  23. package/lib/cjs/test/test-utils.js.map +1 -1
  24. package/lib/cjs/widget/components/BlockingOverlay.js +1 -1
  25. package/lib/cjs/widget/components/BlockingOverlay.js.map +1 -1
  26. package/lib/cjs/widget/components/CalculatedPropertyAction.js +7 -7
  27. package/lib/cjs/widget/components/CalculatedPropertyAction.js.map +1 -1
  28. package/lib/cjs/widget/components/CalculatedPropertyActionWithVisuals.js +21 -21
  29. package/lib/cjs/widget/components/CalculatedPropertyActionWithVisuals.js.map +1 -1
  30. package/lib/cjs/widget/components/CalculatedPropertyTable.js +4 -4
  31. package/lib/cjs/widget/components/CalculatedPropertyTable.js.map +1 -1
  32. package/lib/cjs/widget/components/ConfirmMappingsImport.d.ts +1 -1
  33. package/lib/cjs/widget/components/ConfirmMappingsImport.js +8 -8
  34. package/lib/cjs/widget/components/ConfirmMappingsImport.js.map +1 -1
  35. package/lib/cjs/widget/components/CustomCalculationAction.js +20 -18
  36. package/lib/cjs/widget/components/CustomCalculationAction.js.map +1 -1
  37. package/lib/cjs/widget/components/CustomCalculationTable.js +4 -4
  38. package/lib/cjs/widget/components/CustomCalculationTable.js.map +1 -1
  39. package/lib/cjs/widget/components/DeleteModal.js +2 -2
  40. package/lib/cjs/widget/components/DeleteModal.js.map +1 -1
  41. package/lib/cjs/widget/components/GroupAction.js +16 -16
  42. package/lib/cjs/widget/components/GroupAction.js.map +1 -1
  43. package/lib/cjs/widget/components/GroupColorLegend.js +1 -1
  44. package/lib/cjs/widget/components/GroupColorLegend.js.map +1 -1
  45. package/lib/cjs/widget/components/GroupColorToggle.js +9 -9
  46. package/lib/cjs/widget/components/GroupColorToggle.js.map +1 -1
  47. package/lib/cjs/widget/components/GroupDetails.js +3 -3
  48. package/lib/cjs/widget/components/GroupDetails.js.map +1 -1
  49. package/lib/cjs/widget/components/GroupMenuActions.js +2 -2
  50. package/lib/cjs/widget/components/GroupMenuActions.js.map +1 -1
  51. package/lib/cjs/widget/components/GroupPropertyAction.js +35 -35
  52. package/lib/cjs/widget/components/GroupPropertyAction.js.map +1 -1
  53. package/lib/cjs/widget/components/GroupPropertyTable.js +4 -4
  54. package/lib/cjs/widget/components/GroupPropertyTable.js.map +1 -1
  55. package/lib/cjs/widget/components/GroupPropertyUtils.js +2 -2
  56. package/lib/cjs/widget/components/GroupPropertyUtils.js.map +1 -1
  57. package/lib/cjs/widget/components/Grouping.d.ts +2 -1
  58. package/lib/cjs/widget/components/Grouping.js +16 -13
  59. package/lib/cjs/widget/components/Grouping.js.map +1 -1
  60. package/lib/cjs/widget/components/Grouping.scss +8 -0
  61. package/lib/cjs/widget/components/GroupingMapping.js +5 -5
  62. package/lib/cjs/widget/components/GroupingMapping.js.map +1 -1
  63. package/lib/cjs/widget/components/GroupingMappingContent.js +4 -4
  64. package/lib/cjs/widget/components/GroupingMappingContent.js.map +1 -1
  65. package/lib/cjs/widget/components/GroupingMappingContext.js +24 -21
  66. package/lib/cjs/widget/components/GroupingMappingContext.js.map +1 -1
  67. package/lib/cjs/widget/components/GroupingMappingRouter.js +3 -3
  68. package/lib/cjs/widget/components/GroupingMappingRouter.js.map +1 -1
  69. package/lib/cjs/widget/components/GroupsShowHideButtons.js +3 -3
  70. package/lib/cjs/widget/components/GroupsShowHideButtons.js.map +1 -1
  71. package/lib/cjs/widget/components/GroupsVisualization.js +38 -28
  72. package/lib/cjs/widget/components/GroupsVisualization.js.map +1 -1
  73. package/lib/cjs/widget/components/GroupsVisualizationActions.js +1 -1
  74. package/lib/cjs/widget/components/GroupsVisualizationActions.js.map +1 -1
  75. package/lib/cjs/widget/components/HorizontalTile.js +1 -1
  76. package/lib/cjs/widget/components/HorizontalTile.js.map +1 -1
  77. package/lib/cjs/widget/components/MappingAction.js +9 -9
  78. package/lib/cjs/widget/components/MappingAction.js.map +1 -1
  79. package/lib/cjs/widget/components/MappingImportWizardModal.d.ts +2 -2
  80. package/lib/cjs/widget/components/MappingImportWizardModal.js +13 -13
  81. package/lib/cjs/widget/components/MappingImportWizardModal.js.map +1 -1
  82. package/lib/cjs/widget/components/MappingViewActionGroup.d.ts +12 -0
  83. package/lib/cjs/widget/components/MappingViewActionGroup.js +34 -0
  84. package/lib/cjs/widget/components/MappingViewActionGroup.js.map +1 -0
  85. package/lib/cjs/widget/components/Mappings.d.ts +13 -0
  86. package/lib/cjs/widget/components/Mappings.js +45 -0
  87. package/lib/cjs/widget/components/Mappings.js.map +1 -0
  88. package/lib/cjs/widget/components/MappingsView.d.ts +33 -0
  89. package/lib/cjs/widget/components/MappingsView.js +54 -0
  90. package/lib/cjs/widget/components/MappingsView.js.map +1 -0
  91. package/lib/{esm/widget/components/Mapping.scss → cjs/widget/components/MappingsView.scss} +6 -2
  92. package/lib/cjs/widget/components/PropertyAction.js +7 -7
  93. package/lib/cjs/widget/components/PropertyAction.js.map +1 -1
  94. package/lib/cjs/widget/components/PropertyMenu.js +9 -9
  95. package/lib/cjs/widget/components/PropertyMenu.js.map +1 -1
  96. package/lib/cjs/widget/components/PropertyMenuWithVisualization.js +1 -1
  97. package/lib/cjs/widget/components/PropertyMenuWithVisualization.js.map +1 -1
  98. package/lib/cjs/widget/components/PropertyTable.js +4 -4
  99. package/lib/cjs/widget/components/PropertyTable.js.map +1 -1
  100. package/lib/cjs/widget/components/SelectIModel.js +9 -9
  101. package/lib/cjs/widget/components/SelectIModel.js.map +1 -1
  102. package/lib/cjs/widget/components/SelectITwin.js +10 -10
  103. package/lib/cjs/widget/components/SelectITwin.js.map +1 -1
  104. package/lib/cjs/widget/components/SelectMappings.d.ts +1 -1
  105. package/lib/cjs/widget/components/SelectMappings.js +10 -10
  106. package/lib/cjs/widget/components/SelectMappings.js.map +1 -1
  107. package/lib/cjs/widget/components/SharedCalculatedPropertyForms.js +1 -1
  108. package/lib/cjs/widget/components/SharedCalculatedPropertyForms.js.map +1 -1
  109. package/lib/cjs/widget/components/SortableHorizontalTile.js +2 -2
  110. package/lib/cjs/widget/components/SortableHorizontalTile.js.map +1 -1
  111. package/lib/cjs/widget/components/StatusIcon.js +1 -1
  112. package/lib/cjs/widget/components/StatusIcon.js.map +1 -1
  113. package/lib/cjs/widget/components/context/GroupHilitedElementsContext.d.ts +2 -0
  114. package/lib/cjs/widget/components/context/GroupHilitedElementsContext.js +2 -0
  115. package/lib/cjs/widget/components/context/GroupHilitedElementsContext.js.map +1 -1
  116. package/lib/cjs/widget/components/context/GroupingApiConfigContext.js +1 -1
  117. package/lib/cjs/widget/components/context/GroupingApiConfigContext.js.map +1 -1
  118. package/lib/cjs/widget/components/context/GroupingMappingCustomUIContext.js +2 -2
  119. package/lib/cjs/widget/components/context/GroupingMappingCustomUIContext.js.map +1 -1
  120. package/lib/cjs/widget/components/context/IModelsClientContext.js +2 -2
  121. package/lib/cjs/widget/components/context/IModelsClientContext.js.map +1 -1
  122. package/lib/cjs/widget/components/context/ITwinsClientContext.js +2 -2
  123. package/lib/cjs/widget/components/context/ITwinsClientContext.js.map +1 -1
  124. package/lib/cjs/widget/components/context/MappingClientContext.js +3 -3
  125. package/lib/cjs/widget/components/context/MappingClientContext.js.map +1 -1
  126. package/lib/cjs/widget/components/customUI/GroupQueryBuilderCustomUI.js +10 -10
  127. package/lib/cjs/widget/components/customUI/GroupQueryBuilderCustomUI.js.map +1 -1
  128. package/lib/cjs/widget/components/groupsHelpers.d.ts +1 -1
  129. package/lib/cjs/widget/components/groupsHelpers.js +14 -13
  130. package/lib/cjs/widget/components/groupsHelpers.js.map +1 -1
  131. package/lib/cjs/widget/components/hooks/useMappingsOperations.d.ts +19 -0
  132. package/lib/cjs/widget/components/hooks/useMappingsOperations.js +61 -0
  133. package/lib/cjs/widget/components/hooks/useMappingsOperations.js.map +1 -0
  134. package/lib/cjs/widget/components/utils.d.ts +1 -0
  135. package/lib/cjs/widget/components/utils.js +19 -23
  136. package/lib/cjs/widget/components/utils.js.map +1 -1
  137. package/lib/cjs/widget/components/viewerUtils.js +12 -12
  138. package/lib/cjs/widget/components/viewerUtils.js.map +1 -1
  139. package/lib/cjs/widget/hooks/useFetchData.js +6 -6
  140. package/lib/cjs/widget/hooks/useFetchData.js.map +1 -1
  141. package/lib/cjs/widget/hooks/useFormulaValidation.js +4 -4
  142. package/lib/cjs/widget/hooks/useFormulaValidation.js.map +1 -1
  143. package/lib/cjs/widget/hooks/useValidator.js +1 -1
  144. package/lib/cjs/widget/hooks/useValidator.js.map +1 -1
  145. package/lib/cjs/widget/hooks/useVisualization.js +15 -15
  146. package/lib/cjs/widget/hooks/useVisualization.js.map +1 -1
  147. package/lib/esm/grouping-mapping-widget.d.ts +3 -1
  148. package/lib/esm/grouping-mapping-widget.js +3 -1
  149. package/lib/esm/grouping-mapping-widget.js.map +1 -1
  150. package/lib/esm/widget/components/ConfirmMappingsImport.d.ts +1 -1
  151. package/lib/esm/widget/components/ConfirmMappingsImport.js.map +1 -1
  152. package/lib/esm/widget/components/CustomCalculationAction.js +3 -1
  153. package/lib/esm/widget/components/CustomCalculationAction.js.map +1 -1
  154. package/lib/esm/widget/components/Grouping.d.ts +2 -1
  155. package/lib/esm/widget/components/Grouping.js +7 -4
  156. package/lib/esm/widget/components/Grouping.js.map +1 -1
  157. package/lib/esm/widget/components/Grouping.scss +8 -0
  158. package/lib/esm/widget/components/GroupingMappingContext.js +4 -1
  159. package/lib/esm/widget/components/GroupingMappingContext.js.map +1 -1
  160. package/lib/esm/widget/components/GroupingMappingRouter.js +1 -1
  161. package/lib/esm/widget/components/GroupingMappingRouter.js.map +1 -1
  162. package/lib/esm/widget/components/GroupsVisualization.js +14 -4
  163. package/lib/esm/widget/components/GroupsVisualization.js.map +1 -1
  164. package/lib/esm/widget/components/MappingImportWizardModal.d.ts +2 -2
  165. package/lib/esm/widget/components/MappingImportWizardModal.js.map +1 -1
  166. package/lib/esm/widget/components/MappingViewActionGroup.d.ts +12 -0
  167. package/lib/esm/widget/components/MappingViewActionGroup.js +27 -0
  168. package/lib/esm/widget/components/MappingViewActionGroup.js.map +1 -0
  169. package/lib/esm/widget/components/Mappings.d.ts +13 -0
  170. package/lib/esm/widget/components/Mappings.js +22 -0
  171. package/lib/esm/widget/components/Mappings.js.map +1 -0
  172. package/lib/esm/widget/components/MappingsView.d.ts +33 -0
  173. package/lib/esm/widget/components/MappingsView.js +47 -0
  174. package/lib/esm/widget/components/MappingsView.js.map +1 -0
  175. package/lib/{cjs/widget/components/Mapping.scss → esm/widget/components/MappingsView.scss} +6 -2
  176. package/lib/esm/widget/components/SelectMappings.d.ts +1 -1
  177. package/lib/esm/widget/components/SelectMappings.js.map +1 -1
  178. package/lib/esm/widget/components/context/GroupHilitedElementsContext.d.ts +2 -0
  179. package/lib/esm/widget/components/context/GroupHilitedElementsContext.js +2 -0
  180. package/lib/esm/widget/components/context/GroupHilitedElementsContext.js.map +1 -1
  181. package/lib/esm/widget/components/groupsHelpers.d.ts +1 -1
  182. package/lib/esm/widget/components/groupsHelpers.js +4 -3
  183. package/lib/esm/widget/components/groupsHelpers.js.map +1 -1
  184. package/lib/esm/widget/components/hooks/useMappingsOperations.d.ts +19 -0
  185. package/lib/esm/widget/components/hooks/useMappingsOperations.js +57 -0
  186. package/lib/esm/widget/components/hooks/useMappingsOperations.js.map +1 -0
  187. package/lib/esm/widget/components/utils.d.ts +1 -0
  188. package/lib/esm/widget/components/utils.js +17 -22
  189. package/lib/esm/widget/components/utils.js.map +1 -1
  190. package/lib/esm/widget/hooks/useFormulaValidation.js +1 -1
  191. package/lib/esm/widget/hooks/useFormulaValidation.js.map +1 -1
  192. package/lib/esm/widget/hooks/useVisualization.js +3 -3
  193. package/lib/esm/widget/hooks/useVisualization.js.map +1 -1
  194. package/package.json +2 -2
  195. package/lib/cjs/widget/components/Mapping.d.ts +0 -24
  196. package/lib/cjs/widget/components/Mapping.js +0 -136
  197. package/lib/cjs/widget/components/Mapping.js.map +0 -1
  198. package/lib/esm/widget/components/Mapping.d.ts +0 -24
  199. package/lib/esm/widget/components/Mapping.js +0 -110
  200. package/lib/esm/widget/components/Mapping.js.map +0 -1
@@ -16,14 +16,14 @@ const createDefaultMappingClient = (prefix) => {
16
16
  exports.createDefaultMappingClient = createDefaultMappingClient;
17
17
  const createMappingClient = (clientProp) => {
18
18
  if (undefined === clientProp || typeof clientProp === "string") {
19
- return exports.createDefaultMappingClient(clientProp);
19
+ return (0, exports.createDefaultMappingClient)(clientProp);
20
20
  }
21
21
  return clientProp;
22
22
  };
23
23
  exports.createMappingClient = createMappingClient;
24
- exports.MappingClientContext = react_1.createContext(exports.createDefaultMappingClient());
24
+ exports.MappingClientContext = (0, react_1.createContext)((0, exports.createDefaultMappingClient)());
25
25
  const useMappingClient = () => {
26
- const context = react_1.useContext(exports.MappingClientContext);
26
+ const context = (0, react_1.useContext)(exports.MappingClientContext);
27
27
  if (!context) {
28
28
  throw new Error("useMappingClient should be used within a MappingClientContext provider");
29
29
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MappingClientContext.js","sourceRoot":"","sources":["../../../../../src/widget/components/context/MappingClientContext.ts"],"names":[],"mappings":";;;AAKA,4DAA6E;AAC7E,iCAAkD;AAGlD,MAAM,SAAS,GAAG,CAAC,OAAgB,EAAE,MAAe,EAAE,EAAE;IACtD,IAAI,MAAM,IAAI,OAAO,EAAE;QACrB,OAAO,OAAO,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,MAAM,kBAAkB,CAAC,CAAC;KACxE;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEK,MAAM,0BAA0B,GAAG,CAAC,MAAqB,EAAmB,EAAE;IACnF,MAAM,GAAG,GAAG,SAAS,CAAC,qCAAmB,EAAE,MAAM,CAAC,CAAC;IACnD,OAAO,IAAI,gCAAc,CAAC,GAAG,CAAC,CAAC;AACjC,CAAC,CAAC;AAHW,QAAA,0BAA0B,8BAGrC;AAEK,MAAM,mBAAmB,GAAG,CAAC,UAA0C,EAAE,EAAE;IAChF,IAAI,SAAS,KAAK,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;QAC9D,OAAO,kCAA0B,CAAC,UAA0B,CAAC,CAAC;KAC/D;IACD,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AALW,QAAA,mBAAmB,uBAK9B;AACW,QAAA,oBAAoB,GAAG,qBAAa,CAAkB,kCAA0B,EAAE,CAAC,CAAC;AAE1F,MAAM,gBAAgB,GAAG,GAAG,EAAE;IACnC,MAAM,OAAO,GAAG,kBAAU,CAAC,4BAAoB,CAAC,CAAC;IACjD,IAAI,CAAC,OAAO,EAAE;QACZ,MAAM,IAAI,KAAK,CACb,wEAAwE,CACzE,CAAC;KACH;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AARW,QAAA,gBAAgB,oBAQ3B","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 { IMappingsClient} from \"@itwin/insights-client\";\nimport { MappingsClient, REPORTING_BASE_PATH } from \"@itwin/insights-client\";\nimport { createContext, useContext } from \"react\";\nimport type { ClientPrefix } from \"./GroupingApiConfigContext\";\n\nconst prefixUrl = (baseUrl?: string, prefix?: string) => {\n if (prefix && baseUrl) {\n return baseUrl.replace(\"api.bentley.com\", `${prefix}-api.bentley.com`);\n }\n return baseUrl;\n};\n\nexport const createDefaultMappingClient = (prefix?: ClientPrefix): IMappingsClient => {\n const url = prefixUrl(REPORTING_BASE_PATH, prefix);\n return new MappingsClient(url);\n};\n\nexport const createMappingClient = (clientProp: IMappingsClient | ClientPrefix) => {\n if (undefined === clientProp || typeof clientProp === \"string\") {\n return createDefaultMappingClient(clientProp as ClientPrefix);\n }\n return clientProp;\n};\nexport const MappingClientContext = createContext<IMappingsClient>(createDefaultMappingClient());\n\nexport const useMappingClient = () => {\n const context = useContext(MappingClientContext);\n if (!context) {\n throw new Error(\n \"useMappingClient should be used within a MappingClientContext provider\"\n );\n }\n return context;\n};\n"]}
1
+ {"version":3,"file":"MappingClientContext.js","sourceRoot":"","sources":["../../../../../src/widget/components/context/MappingClientContext.ts"],"names":[],"mappings":";;;AAKA,4DAA6E;AAC7E,iCAAkD;AAGlD,MAAM,SAAS,GAAG,CAAC,OAAgB,EAAE,MAAe,EAAE,EAAE;IACtD,IAAI,MAAM,IAAI,OAAO,EAAE;QACrB,OAAO,OAAO,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,MAAM,kBAAkB,CAAC,CAAC;KACxE;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEK,MAAM,0BAA0B,GAAG,CAAC,MAAqB,EAAmB,EAAE;IACnF,MAAM,GAAG,GAAG,SAAS,CAAC,qCAAmB,EAAE,MAAM,CAAC,CAAC;IACnD,OAAO,IAAI,gCAAc,CAAC,GAAG,CAAC,CAAC;AACjC,CAAC,CAAC;AAHW,QAAA,0BAA0B,8BAGrC;AAEK,MAAM,mBAAmB,GAAG,CAAC,UAA0C,EAAE,EAAE;IAChF,IAAI,SAAS,KAAK,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;QAC9D,OAAO,IAAA,kCAA0B,EAAC,UAA0B,CAAC,CAAC;KAC/D;IACD,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AALW,QAAA,mBAAmB,uBAK9B;AACW,QAAA,oBAAoB,GAAG,IAAA,qBAAa,EAAkB,IAAA,kCAA0B,GAAE,CAAC,CAAC;AAE1F,MAAM,gBAAgB,GAAG,GAAG,EAAE;IACnC,MAAM,OAAO,GAAG,IAAA,kBAAU,EAAC,4BAAoB,CAAC,CAAC;IACjD,IAAI,CAAC,OAAO,EAAE;QACZ,MAAM,IAAI,KAAK,CACb,wEAAwE,CACzE,CAAC;KACH;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AARW,QAAA,gBAAgB,oBAQ3B","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 { IMappingsClient} from \"@itwin/insights-client\";\nimport { MappingsClient, REPORTING_BASE_PATH } from \"@itwin/insights-client\";\nimport { createContext, useContext } from \"react\";\nimport type { ClientPrefix } from \"./GroupingApiConfigContext\";\n\nconst prefixUrl = (baseUrl?: string, prefix?: string) => {\n if (prefix && baseUrl) {\n return baseUrl.replace(\"api.bentley.com\", `${prefix}-api.bentley.com`);\n }\n return baseUrl;\n};\n\nexport const createDefaultMappingClient = (prefix?: ClientPrefix): IMappingsClient => {\n const url = prefixUrl(REPORTING_BASE_PATH, prefix);\n return new MappingsClient(url);\n};\n\nexport const createMappingClient = (clientProp: IMappingsClient | ClientPrefix) => {\n if (undefined === clientProp || typeof clientProp === \"string\") {\n return createDefaultMappingClient(clientProp as ClientPrefix);\n }\n return clientProp;\n};\nexport const MappingClientContext = createContext<IMappingsClient>(createDefaultMappingClient());\n\nexport const useMappingClient = () => {\n const context = useContext(MappingClientContext);\n if (!context) {\n throw new Error(\n \"useMappingClient should be used within a MappingClientContext provider\"\n );\n }\n return context;\n};\n"]}
@@ -52,16 +52,16 @@ const createPropertyDataProvider = async (keys, iModelConnection) => {
52
52
  return dataProvider;
53
53
  };
54
54
  const GroupQueryBuilderCustomUI = ({ updateQuery, isUpdating, resetView, }) => {
55
- const { iModelConnection } = GroupingApiConfigContext_1.useGroupingMappingApiConfig();
55
+ const { iModelConnection } = (0, GroupingApiConfigContext_1.useGroupingMappingApiConfig)();
56
56
  if (!iModelConnection) {
57
57
  throw new Error("This component requires an active iModelConnection.");
58
58
  }
59
- const [size, setSize] = react_1.useState({ width: 0, height: 0 });
60
- const [dataProvider, setDataProvider] = react_1.useState(undefined);
61
- const [currentPropertyList, setCurrentPropertyList] = react_1.useState([]);
62
- const [selectionKeySet, setSelectionKeyset] = react_1.useState(new presentation_common_1.KeySet());
63
- const [queryBuilder, setQueryBuilder] = react_1.useState();
64
- react_1.useEffect(() => {
59
+ const [size, setSize] = (0, react_1.useState)({ width: 0, height: 0 });
60
+ const [dataProvider, setDataProvider] = (0, react_1.useState)(undefined);
61
+ const [currentPropertyList, setCurrentPropertyList] = (0, react_1.useState)([]);
62
+ const [selectionKeySet, setSelectionKeyset] = (0, react_1.useState)(new presentation_common_1.KeySet());
63
+ const [queryBuilder, setQueryBuilder] = (0, react_1.useState)();
64
+ (0, react_1.useEffect)(() => {
65
65
  const onSelectionChanged = async (evt, selectionProvider) => {
66
66
  const selection = selectionProvider.getSelection(evt.imodel, evt.level);
67
67
  const keys = new presentation_common_1.KeySet(selection);
@@ -83,15 +83,15 @@ const GroupQueryBuilderCustomUI = ({ updateQuery, isUpdating, resetView, }) => {
83
83
  /* eslint-disable no-console */
84
84
  console.error(e));
85
85
  };
86
- const resize = react_1.useCallback((width, height) => setSize({ width, height }), []);
87
- const propertyContextValues = react_1.useMemo(() => ({
86
+ const resize = (0, react_1.useCallback)((width, height) => setSize({ width, height }), []);
87
+ const propertyContextValues = (0, react_1.useMemo)(() => ({
88
88
  currentPropertyList,
89
89
  setCurrentPropertyList,
90
90
  queryBuilder,
91
91
  setQuery: updateQuery,
92
92
  isUpdating: isUpdating ?? false,
93
93
  }), [currentPropertyList, isUpdating, queryBuilder, updateQuery]);
94
- const actionButtonRenderers = react_1.useMemo(() => [
94
+ const actionButtonRenderers = (0, react_1.useMemo)(() => [
95
95
  ({ property }) => (react_1.default.createElement(PropertyAction_1.PropertyAction, { property: property })),
96
96
  ], []);
97
97
  return (react_1.default.createElement("div", { className: "gmw-select-query-generator-container" }, !dataProvider || selectionKeySet.size === 0 ? (react_1.default.createElement(itwinui_react_1.Alert, { type: 'informational' }, "Please select on an element within the viewer first, then select properties to generate a group query.")) :
@@ -1 +1 @@
1
- {"version":3,"file":"GroupQueryBuilderCustomUI.js","sourceRoot":"","sources":["../../../../../src/widget/components/customUI/GroupQueryBuilderCustomUI.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 React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { Presentation } from \"@itwin/presentation-frontend\";\nimport type {\n ISelectionProvider,\n SelectionChangeEventArgs,\n} from \"@itwin/presentation-frontend\";\nimport { KeySet } from \"@itwin/presentation-common\";\nimport \"./GroupQueryBuilderCustomUI.scss\";\nimport { QueryBuilder } from \"../QueryBuilder\";\nimport type { GroupingCustomUIProps } from \"./GroupingMappingCustomUI\";\nimport {\n DEFAULT_PROPERTY_GRID_RULESET,\n PresentationPropertyDataProvider,\n} from \"@itwin/presentation-components\";\nimport type { IModelConnection } from \"@itwin/core-frontend\";\nimport type { ActionButtonRendererProps } from \"@itwin/components-react\";\nimport { VirtualizedPropertyGridWithDataProvider } from \"@itwin/components-react\";\nimport { ResizableContainerObserver } from \"@itwin/core-react\";\nimport type { PropertyRecord } from \"@itwin/appui-abstract\";\nimport { PropertyGridWrapperContext } from \"../context/PropertyGridWrapperContext\";\nimport { PropertyAction } from \"../PropertyAction\";\nimport { Alert, Button } from \"@itwin/itwinui-react\";\nimport { useGroupingMappingApiConfig } from \"../context/GroupingApiConfigContext\";\nimport { IModelApp } from \"@itwin/core-frontend\";\n\nconst createPropertyDataProvider = async (\n keys: KeySet,\n iModelConnection: IModelConnection\n): Promise<PresentationPropertyDataProvider> => {\n const dataProvider = new PresentationPropertyDataProvider({\n imodel: iModelConnection,\n ruleset: DEFAULT_PROPERTY_GRID_RULESET,\n });\n dataProvider.keys = keys;\n dataProvider.isNestedPropertyCategoryGroupingEnabled = true;\n const data = await dataProvider.getData();\n const selectedCategory = data.categories.find((category) => category.label === IModelApp.localization.getLocalizedString(\"Presentation:selectedItems.categoryLabel\"));\n if (selectedCategory) {\n selectedCategory.expand = true;\n }\n return dataProvider;\n};\n\ninterface ContainerDimensions {\n width: number;\n height: number;\n}\n\nexport const GroupQueryBuilderCustomUI = ({\n updateQuery,\n isUpdating,\n resetView,\n}: GroupingCustomUIProps) => {\n const { iModelConnection } = useGroupingMappingApiConfig();\n if (!iModelConnection) {\n throw new Error(\"This component requires an active iModelConnection.\");\n }\n const [size, setSize] = useState<ContainerDimensions>({ width: 0, height: 0 });\n const [dataProvider, setDataProvider] =\n useState<PresentationPropertyDataProvider | undefined>(undefined);\n const [currentPropertyList, setCurrentPropertyList] = useState<PropertyRecord[]>([]);\n const [selectionKeySet, setSelectionKeyset] = useState<KeySet>(new KeySet());\n const [queryBuilder, setQueryBuilder] = useState<QueryBuilder | undefined>();\n\n useEffect(() => {\n const onSelectionChanged = async (\n evt: SelectionChangeEventArgs,\n selectionProvider: ISelectionProvider\n ) => {\n const selection = selectionProvider.getSelection(evt.imodel, evt.level);\n const keys = new KeySet(selection);\n setSelectionKeyset(keys);\n const dataProvider = await createPropertyDataProvider(keys, iModelConnection);\n setDataProvider(dataProvider);\n setQueryBuilder(new QueryBuilder(dataProvider));\n };\n\n return iModelConnection\n ? Presentation.selection.selectionChange.addListener(onSelectionChanged)\n : () => { };\n }, [iModelConnection]);\n\n const onClickResetButton = async () => {\n queryBuilder?.resetQueryBuilder();\n updateQuery(\"\");\n setCurrentPropertyList([]);\n if (resetView)\n await resetView().catch((e) =>\n /* eslint-disable no-console */\n console.error(e)\n );\n };\n\n const resize = useCallback((width, height) => setSize({ width, height }), []);\n\n const propertyContextValues = useMemo(\n () => ({\n currentPropertyList,\n setCurrentPropertyList,\n queryBuilder,\n setQuery: updateQuery,\n isUpdating: isUpdating ?? false,\n }),\n [currentPropertyList, isUpdating, queryBuilder, updateQuery]\n );\n\n const actionButtonRenderers = useMemo(\n () => [\n ({ property }: ActionButtonRendererProps) => (\n <PropertyAction property={property} />\n ),\n ],\n []\n );\n\n return (\n <div className=\"gmw-select-query-generator-container\">\n {!dataProvider || selectionKeySet.size === 0 ? (\n <Alert type='informational'>\n Please select on an element within the viewer first, then select properties to generate a group query.\n </Alert>\n ) :\n <>\n <div className=\"gmw-select-property-grid-container\">\n <ResizableContainerObserver onResize={resize} />\n <PropertyGridWrapperContext.Provider value={propertyContextValues}>\n <VirtualizedPropertyGridWithDataProvider\n dataProvider={dataProvider}\n width={size.width}\n height={size.height}\n actionButtonRenderers={actionButtonRenderers}\n />\n </PropertyGridWrapperContext.Provider>\n </div>\n <div className=\"gmw-select-reset-button\">\n <Button\n styleType=\"default\"\n size=\"small\"\n onClick={onClickResetButton}\n >\n Reset\n </Button>\n </div>\n </>\n }\n </div>\n );\n};\n\n"]}
1
+ {"version":3,"file":"GroupQueryBuilderCustomUI.js","sourceRoot":"","sources":["../../../../../src/widget/components/customUI/GroupQueryBuilderCustomUI.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 React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { Presentation } from \"@itwin/presentation-frontend\";\nimport type {\n ISelectionProvider,\n SelectionChangeEventArgs,\n} from \"@itwin/presentation-frontend\";\nimport { KeySet } from \"@itwin/presentation-common\";\nimport \"./GroupQueryBuilderCustomUI.scss\";\nimport { QueryBuilder } from \"../QueryBuilder\";\nimport type { GroupingCustomUIProps } from \"./GroupingMappingCustomUI\";\nimport {\n DEFAULT_PROPERTY_GRID_RULESET,\n PresentationPropertyDataProvider,\n} from \"@itwin/presentation-components\";\nimport type { IModelConnection } from \"@itwin/core-frontend\";\nimport type { ActionButtonRendererProps } from \"@itwin/components-react\";\nimport { VirtualizedPropertyGridWithDataProvider } from \"@itwin/components-react\";\nimport { ResizableContainerObserver } from \"@itwin/core-react\";\nimport type { PropertyRecord } from \"@itwin/appui-abstract\";\nimport { PropertyGridWrapperContext } from \"../context/PropertyGridWrapperContext\";\nimport { PropertyAction } from \"../PropertyAction\";\nimport { Alert, Button } from \"@itwin/itwinui-react\";\nimport { useGroupingMappingApiConfig } from \"../context/GroupingApiConfigContext\";\nimport { IModelApp } from \"@itwin/core-frontend\";\n\nconst createPropertyDataProvider = async (\n keys: KeySet,\n iModelConnection: IModelConnection\n): Promise<PresentationPropertyDataProvider> => {\n const dataProvider = new PresentationPropertyDataProvider({\n imodel: iModelConnection,\n ruleset: DEFAULT_PROPERTY_GRID_RULESET,\n });\n dataProvider.keys = keys;\n dataProvider.isNestedPropertyCategoryGroupingEnabled = true;\n const data = await dataProvider.getData();\n const selectedCategory = data.categories.find((category) => category.label === IModelApp.localization.getLocalizedString(\"Presentation:selectedItems.categoryLabel\"));\n if (selectedCategory) {\n selectedCategory.expand = true;\n }\n return dataProvider;\n};\n\ninterface ContainerDimensions {\n width: number;\n height: number;\n}\n\nexport const GroupQueryBuilderCustomUI = ({\n updateQuery,\n isUpdating,\n resetView,\n}: GroupingCustomUIProps) => {\n const { iModelConnection } = useGroupingMappingApiConfig();\n if (!iModelConnection) {\n throw new Error(\"This component requires an active iModelConnection.\");\n }\n const [size, setSize] = useState<ContainerDimensions>({ width: 0, height: 0 });\n const [dataProvider, setDataProvider] =\n useState<PresentationPropertyDataProvider | undefined>(undefined);\n const [currentPropertyList, setCurrentPropertyList] = useState<PropertyRecord[]>([]);\n const [selectionKeySet, setSelectionKeyset] = useState<KeySet>(new KeySet());\n const [queryBuilder, setQueryBuilder] = useState<QueryBuilder | undefined>();\n\n useEffect(() => {\n const onSelectionChanged = async (\n evt: SelectionChangeEventArgs,\n selectionProvider: ISelectionProvider\n ) => {\n const selection = selectionProvider.getSelection(evt.imodel, evt.level);\n const keys = new KeySet(selection);\n setSelectionKeyset(keys);\n const dataProvider = await createPropertyDataProvider(keys, iModelConnection);\n setDataProvider(dataProvider);\n setQueryBuilder(new QueryBuilder(dataProvider));\n };\n\n return iModelConnection\n ? Presentation.selection.selectionChange.addListener(onSelectionChanged)\n : () => { };\n }, [iModelConnection]);\n\n const onClickResetButton = async () => {\n queryBuilder?.resetQueryBuilder();\n updateQuery(\"\");\n setCurrentPropertyList([]);\n if (resetView)\n await resetView().catch((e) =>\n /* eslint-disable no-console */\n console.error(e)\n );\n };\n\n const resize = useCallback((width, height) => setSize({ width, height }), []);\n\n const propertyContextValues = useMemo(\n () => ({\n currentPropertyList,\n setCurrentPropertyList,\n queryBuilder,\n setQuery: updateQuery,\n isUpdating: isUpdating ?? false,\n }),\n [currentPropertyList, isUpdating, queryBuilder, updateQuery]\n );\n\n const actionButtonRenderers = useMemo(\n () => [\n ({ property }: ActionButtonRendererProps) => (\n <PropertyAction property={property} />\n ),\n ],\n []\n );\n\n return (\n <div className=\"gmw-select-query-generator-container\">\n {!dataProvider || selectionKeySet.size === 0 ? (\n <Alert type='informational'>\n Please select on an element within the viewer first, then select properties to generate a group query.\n </Alert>\n ) :\n <>\n <div className=\"gmw-select-property-grid-container\">\n <ResizableContainerObserver onResize={resize} />\n <PropertyGridWrapperContext.Provider value={propertyContextValues}>\n <VirtualizedPropertyGridWithDataProvider\n dataProvider={dataProvider}\n width={size.width}\n height={size.height}\n actionButtonRenderers={actionButtonRenderers}\n />\n </PropertyGridWrapperContext.Provider>\n </div>\n <div className=\"gmw-select-reset-button\">\n <Button\n styleType=\"default\"\n size=\"small\"\n onClick={onClickResetButton}\n >\n Reset\n </Button>\n </div>\n </>\n }\n </div>\n );\n};\n\n"]}
@@ -5,6 +5,6 @@ export declare const getGroupColor: (index: number) => string;
5
5
  export declare const getHiliteIdsFromGroups: (iModelConnection: IModelConnection, groups: Group[], hilitedElementsQueryCache: React.MutableRefObject<Map<string, QueryCacheItem>>) => Promise<string[]>;
6
6
  export declare const hideGroups: (iModelConnection: IModelConnection, viewGroups: Group[], hilitedElementsQueryCache: React.MutableRefObject<Map<string, QueryCacheItem>>) => Promise<void>;
7
7
  export declare const hideGroup: (iModelConnection: IModelConnection, viewGroup: Group, hilitedElementsQueryCache: React.MutableRefObject<Map<string, QueryCacheItem>>) => Promise<void>;
8
- export declare const visualizeGroupColors: (iModelConnection: IModelConnection, groups: Group[], hiddenGroupsIds: Set<string>, hilitedElementsQueryCache: React.MutableRefObject<Map<string, QueryCacheItem>>, doEmphasizeElements?: boolean) => Promise<void>;
8
+ export declare const visualizeGroupColors: (iModelConnection: IModelConnection, groups: Group[], hiddenGroupsIds: Set<string>, hilitedElementsQueryCache: React.MutableRefObject<Map<string, QueryCacheItem>>, setNumberOfVisualizedGroups: (numberOfVisualizedGroups: number | ((numberOfVisualizedGroups: number) => number)) => void, doEmphasizeElements?: boolean) => Promise<void>;
9
9
  export declare const getHiliteIdsAndKeysetFromGroup: (iModelConnection: IModelConnection, group: Group, hilitedElementsQueryCache: React.MutableRefObject<Map<string, QueryCacheItem>>) => Promise<QueryCacheItem>;
10
10
  //# sourceMappingURL=groupsHelpers.d.ts.map
@@ -20,7 +20,7 @@ const getHiliteIdsFromGroups = async (iModelConnection, groups, hilitedElementsQ
20
20
  for (const group of groups) {
21
21
  if (!distinctQueries.has(group.query)) {
22
22
  distinctQueries.add(group.query);
23
- promises.push(exports.getHiliteIdsAndKeysetFromGroup(iModelConnection, group, hilitedElementsQueryCache));
23
+ promises.push((0, exports.getHiliteIdsAndKeysetFromGroup)(iModelConnection, group, hilitedElementsQueryCache));
24
24
  }
25
25
  }
26
26
  const results = await Promise.all(promises);
@@ -34,30 +34,31 @@ const hideGroups = async (iModelConnection, viewGroups, hilitedElementsQueryCach
34
34
  for (const viewGroup of viewGroups) {
35
35
  if (!distinctQueries.has(viewGroup.query)) {
36
36
  distinctQueries.add(viewGroup.query);
37
- promises.push(exports.hideGroup(iModelConnection, viewGroup, hilitedElementsQueryCache));
37
+ promises.push((0, exports.hideGroup)(iModelConnection, viewGroup, hilitedElementsQueryCache));
38
38
  }
39
39
  }
40
40
  await Promise.all(promises);
41
41
  };
42
42
  exports.hideGroups = hideGroups;
43
43
  const hideGroup = async (iModelConnection, viewGroup, hilitedElementsQueryCache) => {
44
- const result = await exports.getHiliteIdsAndKeysetFromGroup(iModelConnection, viewGroup, hilitedElementsQueryCache);
45
- viewerUtils_1.hideElements(result.ids);
44
+ const result = await (0, exports.getHiliteIdsAndKeysetFromGroup)(iModelConnection, viewGroup, hilitedElementsQueryCache);
45
+ (0, viewerUtils_1.hideElements)(result.ids);
46
46
  };
47
47
  exports.hideGroup = hideGroup;
48
- const processGroupVisualization = async (iModelConnection, group, hiddenGroupsIds, hilitedElementsQueryCache, doEmphasizeElements, groupColor) => {
49
- const result = await exports.getHiliteIdsAndKeysetFromGroup(iModelConnection, group, hilitedElementsQueryCache);
48
+ const processGroupVisualization = async (iModelConnection, group, hiddenGroupsIds, hilitedElementsQueryCache, doEmphasizeElements, groupColor, setNumberOfVisualizedGroups) => {
49
+ const result = await (0, exports.getHiliteIdsAndKeysetFromGroup)(iModelConnection, group, hilitedElementsQueryCache);
50
50
  const hilitedIds = result.ids;
51
- viewerUtils_1.overrideElements(hilitedIds, groupColor, core_common_1.FeatureOverrideType.ColorAndAlpha);
52
- doEmphasizeElements && viewerUtils_1.emphasizeElements(hilitedIds, undefined);
51
+ (0, viewerUtils_1.overrideElements)(hilitedIds, groupColor, core_common_1.FeatureOverrideType.ColorAndAlpha);
52
+ setNumberOfVisualizedGroups((numberOfVisualizedGroups) => numberOfVisualizedGroups + 1);
53
+ doEmphasizeElements && (0, viewerUtils_1.emphasizeElements)(hilitedIds, undefined);
53
54
  return hiddenGroupsIds.has(group.id) ? [] : hilitedIds;
54
55
  };
55
- const visualizeGroupColors = async (iModelConnection, groups, hiddenGroupsIds, hilitedElementsQueryCache, doEmphasizeElements = true) => {
56
- viewerUtils_1.clearEmphasizedOverriddenElements();
57
- const allIdsPromises = groups.map(async (group, index) => processGroupVisualization(iModelConnection, group, hiddenGroupsIds, hilitedElementsQueryCache, doEmphasizeElements, exports.getGroupColor(index)));
56
+ const visualizeGroupColors = async (iModelConnection, groups, hiddenGroupsIds, hilitedElementsQueryCache, setNumberOfVisualizedGroups, doEmphasizeElements = true) => {
57
+ (0, viewerUtils_1.clearEmphasizedOverriddenElements)();
58
+ const allIdsPromises = groups.map(async (group, index) => processGroupVisualization(iModelConnection, group, hiddenGroupsIds, hilitedElementsQueryCache, doEmphasizeElements, (0, exports.getGroupColor)(index), setNumberOfVisualizedGroups));
58
59
  const allIdsArrays = await Promise.all(allIdsPromises);
59
60
  const allIds = allIdsArrays.flat();
60
- await viewerUtils_1.zoomToElements(allIds);
61
+ await (0, viewerUtils_1.zoomToElements)(allIds);
61
62
  };
62
63
  exports.visualizeGroupColors = visualizeGroupColors;
63
64
  const getHiliteIdsAndKeysetFromGroup = async (iModelConnection, group, hilitedElementsQueryCache) => {
@@ -70,7 +71,7 @@ const getHiliteIdsAndKeysetFromGroup = async (iModelConnection, group, hilitedEl
70
71
  if (queryRowCount === 0) {
71
72
  itwinui_react_1.toaster.warning(`${group.groupName}'s query is valid but produced no results.`);
72
73
  }
73
- const result = await viewerUtils_1.getHiliteIds(query, iModelConnection);
74
+ const result = await (0, viewerUtils_1.getHiliteIds)(query, iModelConnection);
74
75
  hilitedElementsQueryCache.current.set(query, result);
75
76
  return result;
76
77
  }
@@ -1 +1 @@
1
- {"version":3,"file":"groupsHelpers.js","sourceRoot":"","sources":["../../../../src/widget/components/groupsHelpers.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 { FeatureOverrideType } from \"@itwin/core-common\";\nimport type { IModelConnection } from \"@itwin/core-frontend\";\nimport type { Group } from \"@itwin/insights-client\";\nimport { toaster } from \"@itwin/itwinui-react\";\nimport { KeySet } from \"@itwin/presentation-common\";\nimport type { QueryCacheItem } from \"./context/GroupHilitedElementsContext\";\nimport { clearEmphasizedOverriddenElements, emphasizeElements, getHiliteIds, hideElements, overrideElements, zoomToElements } from \"./viewerUtils\";\n\nconst goldenAngle = 180 * (3 - Math.sqrt(5));\n\nexport const getGroupColor = function (index: number) {\n return `hsl(${index * goldenAngle + 60}, 100%, 50%)`;\n};\n\nexport const getHiliteIdsFromGroups = async (\n iModelConnection: IModelConnection,\n groups: Group[],\n hilitedElementsQueryCache: React.MutableRefObject<Map<string, QueryCacheItem>>\n) => {\n const distinctQueries = new Set<string>();\n const promises: Promise<{ ids: string[] }>[] = [];\n for (const group of groups) {\n if (!distinctQueries.has(group.query)) {\n distinctQueries.add(group.query);\n promises.push(getHiliteIdsAndKeysetFromGroup(iModelConnection, group, hilitedElementsQueryCache));\n }\n }\n const results = await Promise.all(promises);\n const allIds = results.flatMap((result) => result.ids);\n return allIds;\n};\n\nexport const hideGroups = async (\n iModelConnection: IModelConnection,\n viewGroups: Group[],\n hilitedElementsQueryCache: React.MutableRefObject<Map<string, QueryCacheItem>>\n) => {\n const distinctQueries = new Set<string>();\n const promises: Promise<void>[] = [];\n\n for (const viewGroup of viewGroups) {\n if (!distinctQueries.has(viewGroup.query)) {\n distinctQueries.add(viewGroup.query);\n promises.push(hideGroup(iModelConnection, viewGroup, hilitedElementsQueryCache));\n }\n }\n await Promise.all(promises);\n};\n\nexport const hideGroup = async (\n iModelConnection: IModelConnection,\n viewGroup: Group,\n hilitedElementsQueryCache: React.MutableRefObject<Map<string, QueryCacheItem>>\n) => {\n const result = await getHiliteIdsAndKeysetFromGroup(iModelConnection, viewGroup, hilitedElementsQueryCache);\n hideElements(result.ids);\n};\n\nconst processGroupVisualization = async (\n iModelConnection: IModelConnection,\n group: Group,\n hiddenGroupsIds: Set<string>,\n hilitedElementsQueryCache: React.MutableRefObject<Map<string, QueryCacheItem>>,\n doEmphasizeElements: boolean,\n groupColor: string\n) => {\n const result = await getHiliteIdsAndKeysetFromGroup(iModelConnection, group, hilitedElementsQueryCache);\n const hilitedIds = result.ids;\n overrideElements(hilitedIds, groupColor, FeatureOverrideType.ColorAndAlpha);\n\n doEmphasizeElements && emphasizeElements(hilitedIds, undefined);\n\n return hiddenGroupsIds.has(group.id) ? [] : hilitedIds;\n};\n\nexport const visualizeGroupColors = async (\n iModelConnection: IModelConnection,\n groups: Group[],\n hiddenGroupsIds: Set<string>,\n hilitedElementsQueryCache: React.MutableRefObject<Map<string, QueryCacheItem>>,\n doEmphasizeElements: boolean = true\n) => {\n clearEmphasizedOverriddenElements();\n\n const allIdsPromises = groups.map(async (group, index) =>\n processGroupVisualization(\n iModelConnection,\n group,\n hiddenGroupsIds,\n hilitedElementsQueryCache,\n doEmphasizeElements,\n getGroupColor(index)\n )\n );\n\n const allIdsArrays = await Promise.all(allIdsPromises);\n const allIds = allIdsArrays.flat();\n\n await zoomToElements(allIds);\n};\n\nexport const getHiliteIdsAndKeysetFromGroup = async (\n iModelConnection: IModelConnection,\n group: Group,\n hilitedElementsQueryCache: React.MutableRefObject<Map<string, QueryCacheItem>>\n) => {\n const query = group.query;\n if (hilitedElementsQueryCache.current.has(query)) {\n return hilitedElementsQueryCache.current.get(query) ?? ({ keySet: new KeySet(), ids: [] });\n }\n try {\n const queryRowCount = await iModelConnection.queryRowCount(query);\n if (queryRowCount === 0) {\n toaster.warning(\n `${group.groupName}'s query is valid but produced no results.`\n );\n }\n const result = await getHiliteIds(query, iModelConnection);\n hilitedElementsQueryCache.current.set(query, result);\n return result;\n } catch {\n toaster.negative(\n `Query could not be resolved.`\n );\n return ({ keySet: new KeySet(), ids: [] });\n }\n\n};\n"]}
1
+ {"version":3,"file":"groupsHelpers.js","sourceRoot":"","sources":["../../../../src/widget/components/groupsHelpers.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 { FeatureOverrideType } from \"@itwin/core-common\";\nimport type { IModelConnection } from \"@itwin/core-frontend\";\nimport type { Group } from \"@itwin/insights-client\";\nimport { toaster } from \"@itwin/itwinui-react\";\nimport { KeySet } from \"@itwin/presentation-common\";\nimport type { QueryCacheItem } from \"./context/GroupHilitedElementsContext\";\nimport { clearEmphasizedOverriddenElements, emphasizeElements, getHiliteIds, hideElements, overrideElements, zoomToElements } from \"./viewerUtils\";\n\nconst goldenAngle = 180 * (3 - Math.sqrt(5));\n\nexport const getGroupColor = function (index: number) {\n return `hsl(${index * goldenAngle + 60}, 100%, 50%)`;\n};\n\nexport const getHiliteIdsFromGroups = async (\n iModelConnection: IModelConnection,\n groups: Group[],\n hilitedElementsQueryCache: React.MutableRefObject<Map<string, QueryCacheItem>>\n) => {\n const distinctQueries = new Set<string>();\n const promises: Promise<{ ids: string[] }>[] = [];\n for (const group of groups) {\n if (!distinctQueries.has(group.query)) {\n distinctQueries.add(group.query);\n promises.push(getHiliteIdsAndKeysetFromGroup(iModelConnection, group, hilitedElementsQueryCache));\n }\n }\n const results = await Promise.all(promises);\n const allIds = results.flatMap((result) => result.ids);\n return allIds;\n};\n\nexport const hideGroups = async (\n iModelConnection: IModelConnection,\n viewGroups: Group[],\n hilitedElementsQueryCache: React.MutableRefObject<Map<string, QueryCacheItem>>\n) => {\n const distinctQueries = new Set<string>();\n const promises: Promise<void>[] = [];\n\n for (const viewGroup of viewGroups) {\n if (!distinctQueries.has(viewGroup.query)) {\n distinctQueries.add(viewGroup.query);\n promises.push(hideGroup(iModelConnection, viewGroup, hilitedElementsQueryCache));\n }\n }\n await Promise.all(promises);\n};\n\nexport const hideGroup = async (\n iModelConnection: IModelConnection,\n viewGroup: Group,\n hilitedElementsQueryCache: React.MutableRefObject<Map<string, QueryCacheItem>>\n) => {\n const result = await getHiliteIdsAndKeysetFromGroup(iModelConnection, viewGroup, hilitedElementsQueryCache);\n hideElements(result.ids);\n};\n\nconst processGroupVisualization = async (\n iModelConnection: IModelConnection,\n group: Group,\n hiddenGroupsIds: Set<string>,\n hilitedElementsQueryCache: React.MutableRefObject<Map<string, QueryCacheItem>>,\n doEmphasizeElements: boolean,\n groupColor: string,\n setNumberOfVisualizedGroups: (numberOfVisualizedGroups: number | ((numberOfVisualizedGroups: number) => number)) => void,\n) => {\n const result = await getHiliteIdsAndKeysetFromGroup(iModelConnection, group, hilitedElementsQueryCache);\n const hilitedIds = result.ids;\n overrideElements(hilitedIds, groupColor, FeatureOverrideType.ColorAndAlpha);\n setNumberOfVisualizedGroups((numberOfVisualizedGroups) => numberOfVisualizedGroups + 1);\n\n doEmphasizeElements && emphasizeElements(hilitedIds, undefined);\n\n return hiddenGroupsIds.has(group.id) ? [] : hilitedIds;\n};\n\nexport const visualizeGroupColors = async (\n iModelConnection: IModelConnection,\n groups: Group[],\n hiddenGroupsIds: Set<string>,\n hilitedElementsQueryCache: React.MutableRefObject<Map<string, QueryCacheItem>>,\n setNumberOfVisualizedGroups: (numberOfVisualizedGroups: number | ((numberOfVisualizedGroups: number) => number)) => void,\n doEmphasizeElements: boolean = true,\n) => {\n clearEmphasizedOverriddenElements();\n\n const allIdsPromises = groups.map(async (group, index) =>\n processGroupVisualization(\n iModelConnection,\n group,\n hiddenGroupsIds,\n hilitedElementsQueryCache,\n doEmphasizeElements,\n getGroupColor(index),\n setNumberOfVisualizedGroups,\n )\n );\n\n const allIdsArrays = await Promise.all(allIdsPromises);\n const allIds = allIdsArrays.flat();\n\n await zoomToElements(allIds);\n};\n\nexport const getHiliteIdsAndKeysetFromGroup = async (\n iModelConnection: IModelConnection,\n group: Group,\n hilitedElementsQueryCache: React.MutableRefObject<Map<string, QueryCacheItem>>\n) => {\n const query = group.query;\n if (hilitedElementsQueryCache.current.has(query)) {\n return hilitedElementsQueryCache.current.get(query) ?? ({ keySet: new KeySet(), ids: [] });\n }\n try {\n const queryRowCount = await iModelConnection.queryRowCount(query);\n if (queryRowCount === 0) {\n toaster.warning(\n `${group.groupName}'s query is valid but produced no results.`\n );\n }\n const result = await getHiliteIds(query, iModelConnection);\n hilitedElementsQueryCache.current.set(query, result);\n return result;\n } catch {\n toaster.negative(\n `Query could not be resolved.`\n );\n return ({ keySet: new KeySet(), ids: [] });\n }\n\n};\n"]}
@@ -0,0 +1,19 @@
1
+ /// <reference types="react" />
2
+ import type { IMappingsClient, Mapping } from "@itwin/insights-client";
3
+ import type { GroupingMappingApiConfig } from "../context/GroupingApiConfigContext";
4
+ export interface MappingsOperationsProps extends GroupingMappingApiConfig {
5
+ mappingClient: IMappingsClient;
6
+ }
7
+ export declare const useMappingsOperations: ({ iModelId, getAccessToken, mappingClient }: MappingsOperationsProps) => {
8
+ mappings: Mapping[];
9
+ isLoading: boolean;
10
+ refresh: () => Promise<void>;
11
+ toggleExtraction: (mapping: Mapping) => Promise<void>;
12
+ onDelete: (mapping: Mapping) => Promise<void>;
13
+ setShowDeleteModal: import("react").Dispatch<import("react").SetStateAction<Mapping | undefined>>;
14
+ showDeleteModal: Mapping | undefined;
15
+ isTogglingExtraction: boolean;
16
+ errorMessage: string | undefined;
17
+ setErrorMessage: import("react").Dispatch<import("react").SetStateAction<string | undefined>>;
18
+ };
19
+ //# sourceMappingURL=useMappingsOperations.d.ts.map
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useMappingsOperations = void 0;
4
+ /*---------------------------------------------------------------------------------------------
5
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
6
+ * See LICENSE.md in the project root for license terms and full copyright notice.
7
+ *--------------------------------------------------------------------------------------------*/
8
+ const react_1 = require("react");
9
+ const utils_1 = require("../utils");
10
+ const fetchMappings = async (setMappings, iModelId, setIsLoading, getAccessToken, mappingsClient, setErrorMessage) => {
11
+ try {
12
+ setIsLoading(true);
13
+ const accessToken = await getAccessToken();
14
+ const mappings = await mappingsClient.getMappings(accessToken, iModelId);
15
+ setMappings(mappings.sort((a, b) => a.mappingName.localeCompare(b.mappingName)));
16
+ }
17
+ catch (error) {
18
+ setErrorMessage((0, utils_1.getErrorMessage)(error.status));
19
+ }
20
+ finally {
21
+ setIsLoading(false);
22
+ }
23
+ };
24
+ const useMappingsOperations = ({ iModelId, getAccessToken, mappingClient }) => {
25
+ const [showDeleteModal, setShowDeleteModal] = (0, react_1.useState)(undefined);
26
+ const [isLoading, setIsLoading] = (0, react_1.useState)(true);
27
+ const [mappings, setMappings] = (0, react_1.useState)([]);
28
+ const [errorMessage, setErrorMessage] = (0, react_1.useState)(undefined);
29
+ const [isTogglingExtraction, setIsTogglingExtraction] = (0, react_1.useState)(false);
30
+ (0, react_1.useEffect)(() => {
31
+ void fetchMappings(setMappings, iModelId, setIsLoading, getAccessToken, mappingClient, setErrorMessage);
32
+ }, [getAccessToken, mappingClient, iModelId]);
33
+ const refresh = (0, react_1.useCallback)(async () => {
34
+ setMappings([]);
35
+ await fetchMappings(setMappings, iModelId, setIsLoading, getAccessToken, mappingClient, setErrorMessage);
36
+ }, [getAccessToken, mappingClient, iModelId]);
37
+ const toggleExtraction = (0, react_1.useCallback)(async (mapping) => {
38
+ try {
39
+ setIsTogglingExtraction(true);
40
+ const newState = !mapping.extractionEnabled;
41
+ const accessToken = await getAccessToken();
42
+ await mappingClient.updateMapping(accessToken, iModelId, mapping.id, {
43
+ extractionEnabled: newState,
44
+ });
45
+ }
46
+ catch (error) {
47
+ setErrorMessage((0, utils_1.getErrorMessage)(error.status));
48
+ }
49
+ finally {
50
+ setIsTogglingExtraction(false);
51
+ }
52
+ }, [getAccessToken, iModelId, mappingClient]);
53
+ const onDelete = async (mapping) => {
54
+ const accessToken = await getAccessToken();
55
+ await mappingClient.deleteMapping(accessToken, iModelId, mapping.id);
56
+ await refresh();
57
+ };
58
+ return { mappings, isLoading, refresh, toggleExtraction, onDelete, setShowDeleteModal, showDeleteModal, isTogglingExtraction, errorMessage, setErrorMessage };
59
+ };
60
+ exports.useMappingsOperations = useMappingsOperations;
61
+ //# sourceMappingURL=useMappingsOperations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMappingsOperations.js","sourceRoot":"","sources":["../../../../../src/widget/components/hooks/useMappingsOperations.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 { useCallback, useEffect, useState } from \"react\";\nimport {\n getErrorMessage,\n} from \"../utils\";\nimport type { IMappingsClient, Mapping } from \"@itwin/insights-client\";\nimport type { GroupingMappingApiConfig } from \"../context/GroupingApiConfigContext\";\nimport type { GetAccessTokenFn } from \"../context/GroupingApiConfigContext\";\n\nconst fetchMappings = async (\n setMappings: React.Dispatch<React.SetStateAction<Mapping[]>>,\n iModelId: string,\n setIsLoading: React.Dispatch<React.SetStateAction<boolean>>,\n getAccessToken: GetAccessTokenFn,\n mappingsClient: IMappingsClient,\n setErrorMessage: (message: string | undefined) => void\n) => {\n try {\n setIsLoading(true);\n const accessToken = await getAccessToken();\n const mappings = await mappingsClient.getMappings(accessToken, iModelId);\n setMappings(mappings.sort((a, b) => a.mappingName.localeCompare(b.mappingName)));\n } catch (error: any) {\n setErrorMessage(getErrorMessage(error.status));\n } finally {\n setIsLoading(false);\n }\n};\n\nexport interface MappingsOperationsProps extends GroupingMappingApiConfig {\n mappingClient: IMappingsClient;\n}\n\nexport const useMappingsOperations = ({ iModelId, getAccessToken, mappingClient }: MappingsOperationsProps) => {\n const [showDeleteModal, setShowDeleteModal] = useState<Mapping | undefined>(undefined);\n const [isLoading, setIsLoading] = useState<boolean>(true);\n const [mappings, setMappings] = useState<Mapping[]>([]);\n const [errorMessage, setErrorMessage] = useState<string | undefined>(undefined);\n const [isTogglingExtraction, setIsTogglingExtraction] = useState<boolean>(false);\n\n useEffect(() => {\n void fetchMappings(setMappings, iModelId, setIsLoading, getAccessToken, mappingClient, setErrorMessage);\n }, [getAccessToken, mappingClient, iModelId]);\n\n const refresh = useCallback(async () => {\n setMappings([]);\n await fetchMappings(setMappings, iModelId, setIsLoading, getAccessToken, mappingClient, setErrorMessage);\n }, [getAccessToken, mappingClient, iModelId]);\n\n const toggleExtraction = useCallback(async (mapping: Mapping) => {\n try {\n setIsTogglingExtraction(true);\n const newState = !mapping.extractionEnabled;\n const accessToken = await getAccessToken();\n await mappingClient.updateMapping(accessToken, iModelId, mapping.id, {\n extractionEnabled: newState,\n });\n } catch (error: any) {\n setErrorMessage(getErrorMessage(error.status));\n } finally {\n setIsTogglingExtraction(false);\n }\n }, [getAccessToken, iModelId, mappingClient]);\n\n const onDelete = async (mapping: Mapping) => {\n const accessToken = await getAccessToken();\n await mappingClient.deleteMapping(accessToken, iModelId, mapping.id);\n await refresh();\n };\n\n return { mappings, isLoading, refresh, toggleExtraction, onDelete, setShowDeleteModal, showDeleteModal, isTogglingExtraction, errorMessage, setErrorMessage };\n};\n"]}
@@ -3,6 +3,7 @@ import React from "react";
3
3
  import type { IModelConnection } from "@itwin/core-frontend";
4
4
  export declare const handleInputChange: <T>(e: React.ChangeEvent<HTMLInputElement>, values: T, setValues: (newValues: T) => void) => void;
5
5
  export declare const fetchIdsFromQuery: (query: string, iModelConnection: IModelConnection) => Promise<string[]>;
6
+ export declare const getErrorMessage: (errorStatus: number) => string;
6
7
  export declare const handleError: (errorStatus: number) => void;
7
8
  export declare const LoadingOverlay: () => JSX.Element;
8
9
  interface EmptyMessageProps {
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.LoadingSpinner = exports.EmptyMessage = exports.LoadingOverlay = exports.handleError = exports.fetchIdsFromQuery = exports.handleInputChange = void 0;
6
+ exports.LoadingSpinner = exports.EmptyMessage = exports.LoadingOverlay = exports.handleError = exports.getErrorMessage = exports.fetchIdsFromQuery = exports.handleInputChange = void 0;
7
7
  /*---------------------------------------------------------------------------------------------
8
8
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
9
9
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -46,40 +46,36 @@ const fetchIdsFromQuery = async (query, iModelConnection) => {
46
46
  return ids;
47
47
  };
48
48
  exports.fetchIdsFromQuery = fetchIdsFromQuery;
49
- const handleError = (errorStatus) => {
50
- let errorMessage = "Error! ";
49
+ const getErrorMessage = (errorStatus) => {
51
50
  switch (errorStatus) {
52
51
  case 401:
53
- errorMessage += `You are unauthorized to do this operation.`;
54
- break;
52
+ return "You are unauthorized to do this operation.";
55
53
  case 403:
56
- errorMessage += `You don't have permission to access the requested resource.`;
57
- break;
54
+ return "You don't have permission to access the requested resource.";
58
55
  case 404:
59
- errorMessage += `The requested resource was not found.`;
60
- break;
56
+ return "The requested resource was not found.";
61
57
  case 409:
62
- errorMessage += `This property name is already being used.`;
63
- break;
58
+ return "This property name is already being used.";
64
59
  case 422:
65
- errorMessage += `Unable to process the request.`;
66
- break;
60
+ return "Unable to process the request.";
67
61
  case 429:
68
- errorMessage += `Too many requests.`;
69
- break;
62
+ return "Too many requests.";
70
63
  case 500:
71
- errorMessage += `Internal server error.`;
72
- break;
64
+ return "Internal server error.";
73
65
  case 502:
74
- errorMessage += `Bad gateway.`;
75
- break;
66
+ return "Bad gateway.";
76
67
  case 503:
77
- errorMessage += `Service unavailable.`;
78
- break;
68
+ return "Service unavailable.";
79
69
  default:
80
- errorMessage += `Something went wrong!`;
70
+ return "Something went wrong!";
81
71
  }
82
- itwinui_react_1.toaster.negative(errorMessage);
72
+ };
73
+ exports.getErrorMessage = getErrorMessage;
74
+ const handleError = (errorStatus) => {
75
+ const baseErrorMessage = "Error!";
76
+ const specificErrorMessage = (0, exports.getErrorMessage)(errorStatus);
77
+ const fullErrorMessage = `${baseErrorMessage} ${specificErrorMessage}`;
78
+ itwinui_react_1.toaster.negative(fullErrorMessage);
83
79
  };
84
80
  exports.handleError = handleError;
85
81
  const LoadingOverlay = () => (react_1.default.createElement("div", { className: 'gmw-center-overlay' },
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/widget/components/utils.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 { ProgressRadial, Text, toaster } from \"@itwin/itwinui-react\";\nimport \"./utils.scss\";\nimport React from \"react\";\nimport type { IModelConnection } from \"@itwin/core-frontend\";\nimport { QueryRowFormat } from \"@itwin/core-common\";\n\nexport const handleInputChange = <T,>(\n e: React.ChangeEvent<HTMLInputElement>,\n values: T,\n setValues: (newValues: T) => void,\n) => {\n const { name, value } = e.target;\n\n setValues({\n ...values,\n [name]: value,\n });\n};\n\nexport const fetchIdsFromQuery = async (\n query: string,\n iModelConnection: IModelConnection,\n) => {\n if (query === \"\") {\n return [];\n }\n const ids: string[] = [];\n const rowIterator = iModelConnection.query(query, undefined, {\n rowFormat: QueryRowFormat.UseJsPropertyNames,\n });\n while (true) {\n const { done, value } = await rowIterator.next();\n if (done) {\n break;\n }\n if (Object.keys(value).includes(\"id\")) {\n ids.push(value.id);\n } else if (Object.keys(value).includes(\"element.id\")) {\n ids.push(value[\"element.id\"]);\n } else if (Object.keys(value).includes(\"eCInstanceId\")) {\n ids.push(value.eCInstanceId);\n }\n }\n return ids;\n};\n\nexport const handleError = (errorStatus: number) => {\n let errorMessage = \"Error! \";\n switch (errorStatus) {\n case 401:\n errorMessage += `You are unauthorized to do this operation.`;\n break;\n case 403:\n errorMessage += `You don't have permission to access the requested resource.`;\n break;\n case 404:\n errorMessage += `The requested resource was not found.`;\n break;\n case 409:\n errorMessage += `This property name is already being used.`;\n break;\n case 422:\n errorMessage += `Unable to process the request.`;\n break;\n case 429:\n errorMessage += `Too many requests.`;\n break;\n case 500:\n errorMessage += `Internal server error.`;\n break;\n case 502:\n errorMessage += `Bad gateway.`;\n break;\n case 503:\n errorMessage += `Service unavailable.`;\n break;\n default:\n errorMessage += `Something went wrong!`;\n }\n toaster.negative(errorMessage);\n\n};\n\nexport const LoadingOverlay = () => (\n <div className='gmw-center-overlay'>\n <Text>Loading</Text>\n <ProgressRadial indeterminate />\n <Text>Please wait...</Text>\n </div>\n);\n\ninterface EmptyMessageProps {\n message: string;\n}\n\nexport const EmptyMessage = ({ message }: EmptyMessageProps) => (\n <div className='gmw-center-overlay'>\n <Text>{message}</Text>\n </div>\n);\n\nexport const LoadingSpinner = () => {\n return (\n <div className=\"gmw-loading-spinner\">\n <ProgressRadial size=\"small\" indeterminate />\n </div>\n );\n};\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/widget/components/utils.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 { ProgressRadial, Text, toaster } from \"@itwin/itwinui-react\";\nimport \"./utils.scss\";\nimport React from \"react\";\nimport type { IModelConnection } from \"@itwin/core-frontend\";\nimport { QueryRowFormat } from \"@itwin/core-common\";\n\nexport const handleInputChange = <T,>(\n e: React.ChangeEvent<HTMLInputElement>,\n values: T,\n setValues: (newValues: T) => void,\n) => {\n const { name, value } = e.target;\n\n setValues({\n ...values,\n [name]: value,\n });\n};\n\nexport const fetchIdsFromQuery = async (\n query: string,\n iModelConnection: IModelConnection,\n) => {\n if (query === \"\") {\n return [];\n }\n const ids: string[] = [];\n const rowIterator = iModelConnection.query(query, undefined, {\n rowFormat: QueryRowFormat.UseJsPropertyNames,\n });\n while (true) {\n const { done, value } = await rowIterator.next();\n if (done) {\n break;\n }\n if (Object.keys(value).includes(\"id\")) {\n ids.push(value.id);\n } else if (Object.keys(value).includes(\"element.id\")) {\n ids.push(value[\"element.id\"]);\n } else if (Object.keys(value).includes(\"eCInstanceId\")) {\n ids.push(value.eCInstanceId);\n }\n }\n return ids;\n};\n\nexport const getErrorMessage = (errorStatus: number): string => {\n switch (errorStatus) {\n case 401:\n return \"You are unauthorized to do this operation.\";\n case 403:\n return \"You don't have permission to access the requested resource.\";\n case 404:\n return \"The requested resource was not found.\";\n case 409:\n return \"This property name is already being used.\";\n case 422:\n return \"Unable to process the request.\";\n case 429:\n return \"Too many requests.\";\n case 500:\n return \"Internal server error.\";\n case 502:\n return \"Bad gateway.\";\n case 503:\n return \"Service unavailable.\";\n default:\n return \"Something went wrong!\";\n }\n};\n\nexport const handleError = (errorStatus: number) => {\n const baseErrorMessage = \"Error!\";\n const specificErrorMessage = getErrorMessage(errorStatus);\n const fullErrorMessage = `${baseErrorMessage} ${specificErrorMessage}`;\n\n toaster.negative(fullErrorMessage);\n};\n\nexport const LoadingOverlay = () => (\n <div className='gmw-center-overlay'>\n <Text>Loading</Text>\n <ProgressRadial indeterminate />\n <Text>Please wait...</Text>\n </div>\n);\n\ninterface EmptyMessageProps {\n message: string;\n}\n\nexport const EmptyMessage = ({ message }: EmptyMessageProps) => (\n <div className='gmw-center-overlay'>\n <Text>{message}</Text>\n </div>\n);\n\nexport const LoadingSpinner = () => {\n return (\n <div className=\"gmw-loading-spinner\">\n <ProgressRadial size=\"small\" indeterminate />\n </div>\n );\n};\n"]}
@@ -16,7 +16,7 @@ const isolateElementsByKeys = async (keySet, replace = false) => {
16
16
  const set = await hiliteProvider.getHiliteSet(keySet);
17
17
  if (set.elements) {
18
18
  const ids = [...set.elements];
19
- exports.isolateElements(ids, replace);
19
+ (0, exports.isolateElements)(ids, replace);
20
20
  return ids;
21
21
  }
22
22
  return [];
@@ -27,14 +27,14 @@ const isolateElementsByQuery = async (query, iModelConnection, replace = false)
27
27
  return [];
28
28
  }
29
29
  const vp = core_frontend_1.IModelApp.viewManager.selectedView;
30
- const keySet = await exports.manufactureKeys(query, iModelConnection);
30
+ const keySet = await (0, exports.manufactureKeys)(query, iModelConnection);
31
31
  const hiliteProvider = presentation_frontend_1.HiliteSetProvider.create({
32
32
  imodel: vp.iModel,
33
33
  });
34
34
  const set = await hiliteProvider.getHiliteSet(keySet);
35
35
  if (set.elements) {
36
36
  const ids = [...set.elements];
37
- exports.isolateElements(ids, replace);
37
+ (0, exports.isolateElements)(ids, replace);
38
38
  return ids;
39
39
  }
40
40
  return [];
@@ -81,14 +81,14 @@ const overrideElementsByQuery = async (iModelConnection, query, color, overrideT
81
81
  return [];
82
82
  }
83
83
  const vp = core_frontend_1.IModelApp.viewManager.selectedView;
84
- const keySet = await exports.manufactureKeys(query, iModelConnection);
84
+ const keySet = await (0, exports.manufactureKeys)(query, iModelConnection);
85
85
  const hiliteProvider = presentation_frontend_1.HiliteSetProvider.create({
86
86
  imodel: vp.iModel,
87
87
  });
88
88
  const set = await hiliteProvider.getHiliteSet(keySet);
89
89
  if (set.elements) {
90
90
  const ids = [...set.elements];
91
- exports.overrideElements(ids, color, overrideType);
91
+ (0, exports.overrideElements)(ids, color, overrideType);
92
92
  return ids;
93
93
  }
94
94
  return [];
@@ -127,14 +127,14 @@ const emphasisElementsByQuery = async (iModelConnection, query, defaultAppearanc
127
127
  return [];
128
128
  }
129
129
  const vp = core_frontend_1.IModelApp.viewManager.selectedView;
130
- const keySet = await exports.manufactureKeys(query, iModelConnection);
130
+ const keySet = await (0, exports.manufactureKeys)(query, iModelConnection);
131
131
  const hiliteProvider = presentation_frontend_1.HiliteSetProvider.create({
132
132
  imodel: vp.iModel,
133
133
  });
134
134
  const set = await hiliteProvider.getHiliteSet(keySet);
135
135
  if (set.elements) {
136
136
  const ids = [...set.elements];
137
- exports.emphasizeElements(ids, defaultAppearance, replace);
137
+ (0, exports.emphasizeElements)(ids, defaultAppearance, replace);
138
138
  return ids;
139
139
  }
140
140
  return [];
@@ -151,7 +151,7 @@ const emphasizeElementsByKeys = async (keySet, defaultAppearance = undefined, re
151
151
  const set = await hiliteProvider.getHiliteSet(keySet);
152
152
  if (set.elements) {
153
153
  const ids = [...set.elements];
154
- exports.emphasizeElements(ids, defaultAppearance, replace);
154
+ (0, exports.emphasizeElements)(ids, defaultAppearance, replace);
155
155
  return ids;
156
156
  }
157
157
  return [];
@@ -162,14 +162,14 @@ const visualizeElementsByQuery = async (query, color, iModelConnection, replace
162
162
  return [];
163
163
  }
164
164
  const vp = core_frontend_1.IModelApp.viewManager.selectedView;
165
- const keySet = await exports.manufactureKeys(query, iModelConnection);
165
+ const keySet = await (0, exports.manufactureKeys)(query, iModelConnection);
166
166
  const hiliteProvider = presentation_frontend_1.HiliteSetProvider.create({
167
167
  imodel: vp.iModel,
168
168
  });
169
169
  const set = await hiliteProvider.getHiliteSet(keySet);
170
170
  if (set.elements) {
171
171
  const ids = [...set.elements];
172
- exports.visualizeElements(ids, color, replace, wantEmphasis);
172
+ (0, exports.visualizeElements)(ids, color, replace, wantEmphasis);
173
173
  return ids;
174
174
  }
175
175
  return [];
@@ -186,7 +186,7 @@ const visualizeElementsByKeys = async (keySet, color, replace = false, wantEmpha
186
186
  const set = await hiliteProvider.getHiliteSet(keySet);
187
187
  if (set.elements) {
188
188
  const ids = [...set.elements];
189
- exports.visualizeElements(ids, color, replace, wantEmphasis);
189
+ (0, exports.visualizeElements)(ids, color, replace, wantEmphasis);
190
190
  return ids;
191
191
  }
192
192
  return [];
@@ -237,7 +237,7 @@ const getHiliteIds = async (query, iModelConnection) => {
237
237
  return ({ keySet: new presentation_common_1.KeySet(), ids: [] });
238
238
  }
239
239
  const vp = core_frontend_1.IModelApp.viewManager.selectedView;
240
- const keySet = await exports.manufactureKeys(query, iModelConnection);
240
+ const keySet = await (0, exports.manufactureKeys)(query, iModelConnection);
241
241
  const hiliteProvider = presentation_frontend_1.HiliteSetProvider.create({
242
242
  imodel: vp.iModel,
243
243
  });