@itwin/map-layers 3.4.0-dev.9 → 3.4.1

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 (168) hide show
  1. package/CHANGELOG.md +54 -1
  2. package/lib/cjs/MapLayerPreferences.d.ts +88 -88
  3. package/lib/cjs/MapLayerPreferences.js +311 -311
  4. package/lib/cjs/MapLayerPreferences.js.map +1 -1
  5. package/lib/cjs/map-layers.d.ts +6 -6
  6. package/lib/cjs/map-layers.js +22 -22
  7. package/lib/cjs/mapLayers.d.ts +44 -44
  8. package/lib/cjs/mapLayers.js +63 -63
  9. package/lib/cjs/mapLayers.js.map +1 -1
  10. package/lib/cjs/ui/FeatureInfoUiItemsProvider.d.ts +10 -10
  11. package/lib/cjs/ui/FeatureInfoUiItemsProvider.js +50 -50
  12. package/lib/cjs/ui/FeatureInfoUiItemsProvider.js.map +1 -1
  13. package/lib/cjs/ui/Interfaces.d.ts +47 -47
  14. package/lib/cjs/ui/Interfaces.js +2 -2
  15. package/lib/cjs/ui/Interfaces.js.map +1 -1
  16. package/lib/cjs/ui/MapFeatureInfoTool.d.ts +13 -13
  17. package/lib/cjs/ui/MapFeatureInfoTool.d.ts.map +1 -1
  18. package/lib/cjs/ui/MapFeatureInfoTool.js +50 -50
  19. package/lib/cjs/ui/MapFeatureInfoTool.js.map +1 -1
  20. package/lib/cjs/ui/MapLayersUiItemsProvider.d.ts +8 -8
  21. package/lib/cjs/ui/MapLayersUiItemsProvider.js +38 -38
  22. package/lib/cjs/ui/MapLayersUiItemsProvider.js.map +1 -1
  23. package/lib/cjs/ui/widget/AttachLayerPopupButton.d.ts +14 -13
  24. package/lib/cjs/ui/widget/AttachLayerPopupButton.d.ts.map +1 -1
  25. package/lib/cjs/ui/widget/AttachLayerPopupButton.js +338 -338
  26. package/lib/cjs/ui/widget/AttachLayerPopupButton.js.map +1 -1
  27. package/lib/cjs/ui/widget/BasemapPanel.d.ts +8 -4
  28. package/lib/cjs/ui/widget/BasemapPanel.d.ts.map +1 -1
  29. package/lib/cjs/ui/widget/BasemapPanel.js +156 -145
  30. package/lib/cjs/ui/widget/BasemapPanel.js.map +1 -1
  31. package/lib/cjs/ui/widget/BasemapPanel.scss +87 -87
  32. package/lib/cjs/ui/widget/ConfirmMessageDialog.d.ts +21 -21
  33. package/lib/cjs/ui/widget/ConfirmMessageDialog.js +25 -25
  34. package/lib/cjs/ui/widget/ConfirmMessageDialog.js.map +1 -1
  35. package/lib/cjs/ui/widget/FeatureInfoDataProvider.d.ts +40 -40
  36. package/lib/cjs/ui/widget/FeatureInfoDataProvider.js +139 -139
  37. package/lib/cjs/ui/widget/FeatureInfoDataProvider.js.map +1 -1
  38. package/lib/cjs/ui/widget/FeatureInfoWidget.d.ts +7 -7
  39. package/lib/cjs/ui/widget/FeatureInfoWidget.js +71 -71
  40. package/lib/cjs/ui/widget/FeatureInfoWidget.js.map +1 -1
  41. package/lib/cjs/ui/widget/MapLayerDroppable.d.ts +19 -18
  42. package/lib/cjs/ui/widget/MapLayerDroppable.d.ts.map +1 -1
  43. package/lib/cjs/ui/widget/MapLayerDroppable.js +86 -86
  44. package/lib/cjs/ui/widget/MapLayerDroppable.js.map +1 -1
  45. package/lib/cjs/ui/widget/MapLayerManager.d.ts +26 -26
  46. package/lib/cjs/ui/widget/MapLayerManager.d.ts.map +1 -1
  47. package/lib/cjs/ui/widget/MapLayerManager.js +375 -367
  48. package/lib/cjs/ui/widget/MapLayerManager.js.map +1 -1
  49. package/lib/cjs/ui/widget/MapLayerManager.scss +389 -383
  50. package/lib/cjs/ui/widget/MapLayerSettingsMenu.d.ts +12 -9
  51. package/lib/cjs/ui/widget/MapLayerSettingsMenu.d.ts.map +1 -1
  52. package/lib/cjs/ui/widget/MapLayerSettingsMenu.js +83 -83
  53. package/lib/cjs/ui/widget/MapLayerSettingsMenu.js.map +1 -1
  54. package/lib/cjs/ui/widget/MapLayerSettingsPopupButton.d.ts +7 -4
  55. package/lib/cjs/ui/widget/MapLayerSettingsPopupButton.d.ts.map +1 -1
  56. package/lib/cjs/ui/widget/MapLayerSettingsPopupButton.js +65 -65
  57. package/lib/cjs/ui/widget/MapLayerSettingsPopupButton.js.map +1 -1
  58. package/lib/cjs/ui/widget/MapLayerSettingsPopupButton.scss +20 -20
  59. package/lib/cjs/ui/widget/MapLayersWidget.d.ts +11 -11
  60. package/lib/cjs/ui/widget/MapLayersWidget.js +26 -26
  61. package/lib/cjs/ui/widget/MapLayersWidget.js.map +1 -1
  62. package/lib/cjs/ui/widget/MapManagerSettings.d.ts +3 -3
  63. package/lib/cjs/ui/widget/MapManagerSettings.js +200 -200
  64. package/lib/cjs/ui/widget/MapManagerSettings.js.map +1 -1
  65. package/lib/cjs/ui/widget/MapManagerSettings.scss +29 -29
  66. package/lib/cjs/ui/widget/MapUrlDialog.d.ts +22 -22
  67. package/lib/cjs/ui/widget/MapUrlDialog.js +530 -530
  68. package/lib/cjs/ui/widget/MapUrlDialog.js.map +1 -1
  69. package/lib/cjs/ui/widget/MapUrlDialog.scss +87 -87
  70. package/lib/cjs/ui/widget/SubLayersDataProvider.d.ts +20 -20
  71. package/lib/cjs/ui/widget/SubLayersDataProvider.js +76 -76
  72. package/lib/cjs/ui/widget/SubLayersDataProvider.js.map +1 -1
  73. package/lib/cjs/ui/widget/SubLayersPopupButton.d.ts +10 -10
  74. package/lib/cjs/ui/widget/SubLayersPopupButton.js +40 -40
  75. package/lib/cjs/ui/widget/SubLayersPopupButton.js.map +1 -1
  76. package/lib/cjs/ui/widget/SubLayersTree.d.ts +15 -15
  77. package/lib/cjs/ui/widget/SubLayersTree.js +414 -414
  78. package/lib/cjs/ui/widget/SubLayersTree.js.map +1 -1
  79. package/lib/cjs/ui/widget/SubLayersTree.scss +69 -69
  80. package/lib/cjs/ui/widget/TransparencyPopupButton.d.ts +14 -13
  81. package/lib/cjs/ui/widget/TransparencyPopupButton.d.ts.map +1 -1
  82. package/lib/cjs/ui/widget/TransparencyPopupButton.js +47 -47
  83. package/lib/cjs/ui/widget/TransparencyPopupButton.js.map +1 -1
  84. package/lib/cjs/ui/widget/TransparencyPopupButton.scss +36 -32
  85. package/lib/esm/MapLayerPreferences.d.ts +88 -88
  86. package/lib/esm/MapLayerPreferences.js +307 -307
  87. package/lib/esm/MapLayerPreferences.js.map +1 -1
  88. package/lib/esm/map-layers.d.ts +6 -6
  89. package/lib/esm/map-layers.js +10 -10
  90. package/lib/esm/mapLayers.d.ts +44 -44
  91. package/lib/esm/mapLayers.js +59 -59
  92. package/lib/esm/mapLayers.js.map +1 -1
  93. package/lib/esm/ui/FeatureInfoUiItemsProvider.d.ts +10 -10
  94. package/lib/esm/ui/FeatureInfoUiItemsProvider.js +46 -46
  95. package/lib/esm/ui/FeatureInfoUiItemsProvider.js.map +1 -1
  96. package/lib/esm/ui/Interfaces.d.ts +47 -47
  97. package/lib/esm/ui/Interfaces.js +1 -1
  98. package/lib/esm/ui/Interfaces.js.map +1 -1
  99. package/lib/esm/ui/MapFeatureInfoTool.d.ts +13 -13
  100. package/lib/esm/ui/MapFeatureInfoTool.d.ts.map +1 -1
  101. package/lib/esm/ui/MapFeatureInfoTool.js +45 -45
  102. package/lib/esm/ui/MapFeatureInfoTool.js.map +1 -1
  103. package/lib/esm/ui/MapLayersUiItemsProvider.d.ts +8 -8
  104. package/lib/esm/ui/MapLayersUiItemsProvider.js +34 -34
  105. package/lib/esm/ui/MapLayersUiItemsProvider.js.map +1 -1
  106. package/lib/esm/ui/widget/AttachLayerPopupButton.d.ts +14 -13
  107. package/lib/esm/ui/widget/AttachLayerPopupButton.d.ts.map +1 -1
  108. package/lib/esm/ui/widget/AttachLayerPopupButton.js +334 -334
  109. package/lib/esm/ui/widget/AttachLayerPopupButton.js.map +1 -1
  110. package/lib/esm/ui/widget/BasemapPanel.d.ts +8 -4
  111. package/lib/esm/ui/widget/BasemapPanel.d.ts.map +1 -1
  112. package/lib/esm/ui/widget/BasemapPanel.js +152 -141
  113. package/lib/esm/ui/widget/BasemapPanel.js.map +1 -1
  114. package/lib/esm/ui/widget/BasemapPanel.scss +87 -87
  115. package/lib/esm/ui/widget/ConfirmMessageDialog.d.ts +21 -21
  116. package/lib/esm/ui/widget/ConfirmMessageDialog.js +21 -21
  117. package/lib/esm/ui/widget/ConfirmMessageDialog.js.map +1 -1
  118. package/lib/esm/ui/widget/FeatureInfoDataProvider.d.ts +40 -40
  119. package/lib/esm/ui/widget/FeatureInfoDataProvider.js +135 -135
  120. package/lib/esm/ui/widget/FeatureInfoDataProvider.js.map +1 -1
  121. package/lib/esm/ui/widget/FeatureInfoWidget.d.ts +7 -7
  122. package/lib/esm/ui/widget/FeatureInfoWidget.js +67 -67
  123. package/lib/esm/ui/widget/FeatureInfoWidget.js.map +1 -1
  124. package/lib/esm/ui/widget/MapLayerDroppable.d.ts +19 -18
  125. package/lib/esm/ui/widget/MapLayerDroppable.d.ts.map +1 -1
  126. package/lib/esm/ui/widget/MapLayerDroppable.js +82 -82
  127. package/lib/esm/ui/widget/MapLayerDroppable.js.map +1 -1
  128. package/lib/esm/ui/widget/MapLayerManager.d.ts +26 -26
  129. package/lib/esm/ui/widget/MapLayerManager.d.ts.map +1 -1
  130. package/lib/esm/ui/widget/MapLayerManager.js +370 -362
  131. package/lib/esm/ui/widget/MapLayerManager.js.map +1 -1
  132. package/lib/esm/ui/widget/MapLayerManager.scss +389 -383
  133. package/lib/esm/ui/widget/MapLayerSettingsMenu.d.ts +12 -9
  134. package/lib/esm/ui/widget/MapLayerSettingsMenu.d.ts.map +1 -1
  135. package/lib/esm/ui/widget/MapLayerSettingsMenu.js +79 -79
  136. package/lib/esm/ui/widget/MapLayerSettingsMenu.js.map +1 -1
  137. package/lib/esm/ui/widget/MapLayerSettingsPopupButton.d.ts +7 -4
  138. package/lib/esm/ui/widget/MapLayerSettingsPopupButton.d.ts.map +1 -1
  139. package/lib/esm/ui/widget/MapLayerSettingsPopupButton.js +61 -61
  140. package/lib/esm/ui/widget/MapLayerSettingsPopupButton.js.map +1 -1
  141. package/lib/esm/ui/widget/MapLayerSettingsPopupButton.scss +20 -20
  142. package/lib/esm/ui/widget/MapLayersWidget.d.ts +11 -11
  143. package/lib/esm/ui/widget/MapLayersWidget.js +22 -22
  144. package/lib/esm/ui/widget/MapLayersWidget.js.map +1 -1
  145. package/lib/esm/ui/widget/MapManagerSettings.d.ts +3 -3
  146. package/lib/esm/ui/widget/MapManagerSettings.js +196 -196
  147. package/lib/esm/ui/widget/MapManagerSettings.js.map +1 -1
  148. package/lib/esm/ui/widget/MapManagerSettings.scss +29 -29
  149. package/lib/esm/ui/widget/MapUrlDialog.d.ts +22 -22
  150. package/lib/esm/ui/widget/MapUrlDialog.js +526 -526
  151. package/lib/esm/ui/widget/MapUrlDialog.js.map +1 -1
  152. package/lib/esm/ui/widget/MapUrlDialog.scss +87 -87
  153. package/lib/esm/ui/widget/SubLayersDataProvider.d.ts +20 -20
  154. package/lib/esm/ui/widget/SubLayersDataProvider.js +72 -72
  155. package/lib/esm/ui/widget/SubLayersDataProvider.js.map +1 -1
  156. package/lib/esm/ui/widget/SubLayersPopupButton.d.ts +10 -10
  157. package/lib/esm/ui/widget/SubLayersPopupButton.js +36 -36
  158. package/lib/esm/ui/widget/SubLayersPopupButton.js.map +1 -1
  159. package/lib/esm/ui/widget/SubLayersTree.d.ts +15 -15
  160. package/lib/esm/ui/widget/SubLayersTree.js +409 -409
  161. package/lib/esm/ui/widget/SubLayersTree.js.map +1 -1
  162. package/lib/esm/ui/widget/SubLayersTree.scss +69 -69
  163. package/lib/esm/ui/widget/TransparencyPopupButton.d.ts +14 -13
  164. package/lib/esm/ui/widget/TransparencyPopupButton.d.ts.map +1 -1
  165. package/lib/esm/ui/widget/TransparencyPopupButton.js +43 -43
  166. package/lib/esm/ui/widget/TransparencyPopupButton.js.map +1 -1
  167. package/lib/esm/ui/widget/TransparencyPopupButton.scss +36 -32
  168. package/package.json +30 -30
@@ -1,140 +1,140 @@
1
- "use strict";
2
- /*---------------------------------------------------------------------------------------------
3
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
- * See LICENSE.md in the project root for license terms and full copyright notice.
5
- *--------------------------------------------------------------------------------------------*/
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.FeatureInfoDataProvider = exports.MapFeatureInfoLoadState = void 0;
8
- const appui_abstract_1 = require("@itwin/appui-abstract");
9
- const components_react_1 = require("@itwin/components-react");
10
- const core_bentley_1 = require("@itwin/core-bentley");
11
- // import { IPropertyDataProvider, PropertyCategory, PropertyData, PropertyDataChangeEvent } from ""
12
- /**
13
- * Implementation of [IPropertyDataProvider] that uses an associative array.
14
- * @public
15
- */
16
- var MapFeatureInfoLoadState;
17
- (function (MapFeatureInfoLoadState) {
18
- MapFeatureInfoLoadState[MapFeatureInfoLoadState["DataLoadStart"] = 0] = "DataLoadStart";
19
- MapFeatureInfoLoadState[MapFeatureInfoLoadState["DataLoadEnd"] = 1] = "DataLoadEnd";
20
- })(MapFeatureInfoLoadState = exports.MapFeatureInfoLoadState || (exports.MapFeatureInfoLoadState = {}));
21
- class FeatureInfoDataProvider {
22
- constructor(onMapHit) {
23
- this.label = appui_abstract_1.PropertyRecord.fromString("");
24
- this.categories = [];
25
- this.records = {};
26
- this.onDataChanged = new components_react_1.PropertyDataChangeEvent();
27
- this.onDataLoadStateChanged = new core_bentley_1.BeEvent();
28
- this.onDataUpdated = new core_bentley_1.BeEvent();
29
- // eslint-disable-next-line @typescript-eslint/unbound-method
30
- this._removeListener = onMapHit.addListener(this._handleMapHit, this);
31
- }
32
- onUnload() {
33
- this._removeListener();
34
- }
35
- async _handleMapHit(mapHit) {
36
- var _a, _b;
37
- this.records = {};
38
- this.categories = [];
39
- let recordCount = 0;
40
- if (mapHit === null || mapHit === void 0 ? void 0 : mapHit.isMapHit) {
41
- this.onDataLoadStateChanged.raiseEvent(MapFeatureInfoLoadState.DataLoadStart);
42
- const mapInfo = await mapHit.viewport.getMapFeatureInfo(mapHit);
43
- this.onDataLoadStateChanged.raiseEvent(MapFeatureInfoLoadState.DataLoadEnd);
44
- if (mapInfo.layerInfo !== undefined) {
45
- for (const curLayerInfo of mapInfo.layerInfo) {
46
- const layerCatIdx = this.findCategoryIndexByName(curLayerInfo.layerName);
47
- let nbRecords = 0;
48
- const layerCategory = (layerCatIdx === -1 ?
49
- { name: curLayerInfo.layerName, label: curLayerInfo.layerName, expand: true, childCategories: [] }
50
- : this.categories[layerCatIdx]);
51
- if (curLayerInfo.info && !(curLayerInfo.info instanceof HTMLElement)) {
52
- // This is not an HTMLElement, so iterate over each sub-layer info
53
- for (const subLayerInfo of curLayerInfo.info) {
54
- nbRecords++;
55
- const subCatIdx = (_a = layerCategory.childCategories) === null || _a === void 0 ? void 0 : _a.findIndex((testCategory) => {
56
- return testCategory.name === subLayerInfo.subLayerName;
57
- });
58
- let subLayerCategory;
59
- if (subCatIdx === -1) {
60
- subLayerCategory = { name: subLayerInfo.subLayerName, label: subLayerInfo.subLayerName, expand: true };
61
- this.addSubCategory(subLayerCategory.name);
62
- (_b = layerCategory.childCategories) === null || _b === void 0 ? void 0 : _b.push(subLayerCategory);
63
- }
64
- if (subLayerInfo.records) {
65
- for (const record of subLayerInfo.records) {
66
- // Always use the string value for now
67
- this.addProperty(record, subLayerInfo.subLayerName);
68
- }
69
- }
70
- }
71
- }
72
- if (layerCatIdx === -1 && nbRecords > 0)
73
- this.addCategory(layerCategory);
74
- recordCount = recordCount + nbRecords;
75
- }
76
- }
77
- }
78
- this.onDataUpdated.raiseEvent({ recordCount });
79
- this.onDataChanged.raiseEvent();
80
- }
81
- addSubCategory(categoryName) {
82
- this.records[categoryName] = [];
83
- }
84
- addCategory(category) {
85
- const categoryIdx = this.categories.push(category) - 1;
86
- this.records[this.categories[categoryIdx].name] = [];
87
- return categoryIdx;
88
- }
89
- findCategoryIndex(category) {
90
- const index = this.categories.findIndex((testCategory) => {
91
- return testCategory.name === category.name;
92
- });
93
- return index;
94
- }
95
- findCategoryIndexByName(name) {
96
- const index = this.categories.findIndex((testCategory) => {
97
- return testCategory.name === name;
98
- });
99
- return index;
100
- }
101
- addProperty(propertyRecord, categoryName) {
102
- const idx = this.records[categoryName].findIndex((prop) => prop.property.name === propertyRecord.property.name);
103
- if (idx === -1) {
104
- this.records[categoryName].push(propertyRecord);
105
- }
106
- else {
107
- this.records[categoryName][idx].isMerged = true;
108
- this.records[categoryName][idx].isReadonly = true;
109
- }
110
- }
111
- removeProperty(propertyRecord, categoryIdx) {
112
- const index = this.records[this.categories[categoryIdx].name].findIndex((record) => {
113
- return record === propertyRecord;
114
- });
115
- let result = false;
116
- if (index >= 0) {
117
- this.records[this.categories[categoryIdx].name].splice(index, 1);
118
- this.onDataChanged.raiseEvent();
119
- result = true;
120
- }
121
- return result;
122
- }
123
- replaceProperty(propertyRecord, categoryIdx, newRecord) {
124
- const index = this.records[this.categories[categoryIdx].name].findIndex((record) => {
125
- return record === propertyRecord;
126
- });
127
- let result = false;
128
- // istanbul ignore else
129
- if (index >= 0) {
130
- this.records[this.categories[categoryIdx].name].splice(index, 1, newRecord);
131
- result = true;
132
- }
133
- return result;
134
- }
135
- async getData() {
136
- return this;
137
- }
138
- }
139
- exports.FeatureInfoDataProvider = FeatureInfoDataProvider;
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.FeatureInfoDataProvider = exports.MapFeatureInfoLoadState = void 0;
8
+ const appui_abstract_1 = require("@itwin/appui-abstract");
9
+ const components_react_1 = require("@itwin/components-react");
10
+ const core_bentley_1 = require("@itwin/core-bentley");
11
+ // import { IPropertyDataProvider, PropertyCategory, PropertyData, PropertyDataChangeEvent } from ""
12
+ /**
13
+ * Implementation of [IPropertyDataProvider] that uses an associative array.
14
+ * @public
15
+ */
16
+ var MapFeatureInfoLoadState;
17
+ (function (MapFeatureInfoLoadState) {
18
+ MapFeatureInfoLoadState[MapFeatureInfoLoadState["DataLoadStart"] = 0] = "DataLoadStart";
19
+ MapFeatureInfoLoadState[MapFeatureInfoLoadState["DataLoadEnd"] = 1] = "DataLoadEnd";
20
+ })(MapFeatureInfoLoadState = exports.MapFeatureInfoLoadState || (exports.MapFeatureInfoLoadState = {}));
21
+ class FeatureInfoDataProvider {
22
+ constructor(onMapHit) {
23
+ this.label = appui_abstract_1.PropertyRecord.fromString("");
24
+ this.categories = [];
25
+ this.records = {};
26
+ this.onDataChanged = new components_react_1.PropertyDataChangeEvent();
27
+ this.onDataLoadStateChanged = new core_bentley_1.BeEvent();
28
+ this.onDataUpdated = new core_bentley_1.BeEvent();
29
+ // eslint-disable-next-line @typescript-eslint/unbound-method
30
+ this._removeListener = onMapHit.addListener(this._handleMapHit, this);
31
+ }
32
+ onUnload() {
33
+ this._removeListener();
34
+ }
35
+ async _handleMapHit(mapHit) {
36
+ var _a, _b;
37
+ this.records = {};
38
+ this.categories = [];
39
+ let recordCount = 0;
40
+ if (mapHit === null || mapHit === void 0 ? void 0 : mapHit.isMapHit) {
41
+ this.onDataLoadStateChanged.raiseEvent(MapFeatureInfoLoadState.DataLoadStart);
42
+ const mapInfo = await mapHit.viewport.getMapFeatureInfo(mapHit);
43
+ this.onDataLoadStateChanged.raiseEvent(MapFeatureInfoLoadState.DataLoadEnd);
44
+ if (mapInfo.layerInfo !== undefined) {
45
+ for (const curLayerInfo of mapInfo.layerInfo) {
46
+ const layerCatIdx = this.findCategoryIndexByName(curLayerInfo.layerName);
47
+ let nbRecords = 0;
48
+ const layerCategory = (layerCatIdx === -1 ?
49
+ { name: curLayerInfo.layerName, label: curLayerInfo.layerName, expand: true, childCategories: [] }
50
+ : this.categories[layerCatIdx]);
51
+ if (curLayerInfo.info && !(curLayerInfo.info instanceof HTMLElement)) {
52
+ // This is not an HTMLElement, so iterate over each sub-layer info
53
+ for (const subLayerInfo of curLayerInfo.info) {
54
+ nbRecords++;
55
+ const subCatIdx = (_a = layerCategory.childCategories) === null || _a === void 0 ? void 0 : _a.findIndex((testCategory) => {
56
+ return testCategory.name === subLayerInfo.subLayerName;
57
+ });
58
+ let subLayerCategory;
59
+ if (subCatIdx === -1) {
60
+ subLayerCategory = { name: subLayerInfo.subLayerName, label: subLayerInfo.subLayerName, expand: true };
61
+ this.addSubCategory(subLayerCategory.name);
62
+ (_b = layerCategory.childCategories) === null || _b === void 0 ? void 0 : _b.push(subLayerCategory);
63
+ }
64
+ if (subLayerInfo.records) {
65
+ for (const record of subLayerInfo.records) {
66
+ // Always use the string value for now
67
+ this.addProperty(record, subLayerInfo.subLayerName);
68
+ }
69
+ }
70
+ }
71
+ }
72
+ if (layerCatIdx === -1 && nbRecords > 0)
73
+ this.addCategory(layerCategory);
74
+ recordCount = recordCount + nbRecords;
75
+ }
76
+ }
77
+ }
78
+ this.onDataUpdated.raiseEvent({ recordCount });
79
+ this.onDataChanged.raiseEvent();
80
+ }
81
+ addSubCategory(categoryName) {
82
+ this.records[categoryName] = [];
83
+ }
84
+ addCategory(category) {
85
+ const categoryIdx = this.categories.push(category) - 1;
86
+ this.records[this.categories[categoryIdx].name] = [];
87
+ return categoryIdx;
88
+ }
89
+ findCategoryIndex(category) {
90
+ const index = this.categories.findIndex((testCategory) => {
91
+ return testCategory.name === category.name;
92
+ });
93
+ return index;
94
+ }
95
+ findCategoryIndexByName(name) {
96
+ const index = this.categories.findIndex((testCategory) => {
97
+ return testCategory.name === name;
98
+ });
99
+ return index;
100
+ }
101
+ addProperty(propertyRecord, categoryName) {
102
+ const idx = this.records[categoryName].findIndex((prop) => prop.property.name === propertyRecord.property.name);
103
+ if (idx === -1) {
104
+ this.records[categoryName].push(propertyRecord);
105
+ }
106
+ else {
107
+ this.records[categoryName][idx].isMerged = true;
108
+ this.records[categoryName][idx].isReadonly = true;
109
+ }
110
+ }
111
+ removeProperty(propertyRecord, categoryIdx) {
112
+ const index = this.records[this.categories[categoryIdx].name].findIndex((record) => {
113
+ return record === propertyRecord;
114
+ });
115
+ let result = false;
116
+ if (index >= 0) {
117
+ this.records[this.categories[categoryIdx].name].splice(index, 1);
118
+ this.onDataChanged.raiseEvent();
119
+ result = true;
120
+ }
121
+ return result;
122
+ }
123
+ replaceProperty(propertyRecord, categoryIdx, newRecord) {
124
+ const index = this.records[this.categories[categoryIdx].name].findIndex((record) => {
125
+ return record === propertyRecord;
126
+ });
127
+ let result = false;
128
+ // istanbul ignore else
129
+ if (index >= 0) {
130
+ this.records[this.categories[categoryIdx].name].splice(index, 1, newRecord);
131
+ result = true;
132
+ }
133
+ return result;
134
+ }
135
+ async getData() {
136
+ return this;
137
+ }
138
+ }
139
+ exports.FeatureInfoDataProvider = FeatureInfoDataProvider;
140
140
  //# sourceMappingURL=FeatureInfoDataProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FeatureInfoDataProvider.js","sourceRoot":"","sources":["../../../../src/ui/widget/FeatureInfoDataProvider.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport { PropertyRecord } from \"@itwin/appui-abstract\";\r\nimport { IPropertyDataProvider, PropertyCategory, PropertyData, PropertyDataChangeEvent } from \"@itwin/components-react\";\r\nimport { BeEvent } from \"@itwin/core-bentley\";\r\nimport { HitDetail } from \"@itwin/core-frontend\";\r\nimport { MapHitEvent } from \"../Interfaces\";\r\n// import { IPropertyDataProvider, PropertyCategory, PropertyData, PropertyDataChangeEvent } from \"\"\r\n\r\n/**\r\n * Implementation of [IPropertyDataProvider] that uses an associative array.\r\n * @public\r\n */\r\n\r\nexport enum MapFeatureInfoLoadState {DataLoadStart, DataLoadEnd}\r\nexport declare type MapFeatureInfoLoadListener = (state: MapFeatureInfoLoadState) => void;\r\n\r\nexport interface MapFeatureInfoDataUpdate {\r\n recordCount: number;\r\n}\r\nexport declare type MapFeatureInfoDataUpdatedListener = (data: MapFeatureInfoDataUpdate) => void;\r\n\r\nexport class FeatureInfoDataProvider implements IPropertyDataProvider, PropertyData {\r\n private _removeListener: () => void;\r\n public label: PropertyRecord = PropertyRecord.fromString(\"\");\r\n public description?: string;\r\n public categories: PropertyCategory[] = [];\r\n public records: { [categoryName: string]: PropertyRecord[] } = {};\r\n public onDataChanged = new PropertyDataChangeEvent();\r\n public onDataLoadStateChanged = new BeEvent<MapFeatureInfoLoadListener>();\r\n public onDataUpdated = new BeEvent<MapFeatureInfoDataUpdatedListener>();\r\n constructor(onMapHit: MapHitEvent) {\r\n // eslint-disable-next-line @typescript-eslint/unbound-method\r\n this._removeListener = onMapHit.addListener(this._handleMapHit, this);\r\n }\r\n\r\n public onUnload() {\r\n this._removeListener();\r\n }\r\n\r\n private async _handleMapHit(mapHit: HitDetail) {\r\n this.records = {};\r\n this.categories = [];\r\n let recordCount = 0;\r\n if (mapHit?.isMapHit) {\r\n this.onDataLoadStateChanged.raiseEvent(MapFeatureInfoLoadState.DataLoadStart);\r\n const mapInfo = await mapHit.viewport.getMapFeatureInfo(mapHit);\r\n this.onDataLoadStateChanged.raiseEvent(MapFeatureInfoLoadState.DataLoadEnd);\r\n if (mapInfo.layerInfo !== undefined ) {\r\n for (const curLayerInfo of mapInfo.layerInfo) {\r\n const layerCatIdx = this.findCategoryIndexByName(curLayerInfo.layerName);\r\n let nbRecords = 0;\r\n const layerCategory = (\r\n layerCatIdx === -1 ?\r\n {name:curLayerInfo.layerName, label:curLayerInfo.layerName, expand:true, childCategories:[]}\r\n : this.categories[layerCatIdx] );\r\n\r\n if (curLayerInfo.info && !(curLayerInfo.info instanceof HTMLElement)) {\r\n // This is not an HTMLElement, so iterate over each sub-layer info\r\n for (const subLayerInfo of curLayerInfo.info) {\r\n nbRecords++;\r\n const subCatIdx = layerCategory.childCategories?.findIndex((testCategory: PropertyCategory) => {\r\n return testCategory.name === subLayerInfo.subLayerName;\r\n });\r\n let subLayerCategory;\r\n if (subCatIdx === -1) {\r\n subLayerCategory = {name:subLayerInfo.subLayerName, label:subLayerInfo.subLayerName, expand:true};\r\n this.addSubCategory(subLayerCategory.name);\r\n layerCategory.childCategories?.push(subLayerCategory);\r\n }\r\n if (subLayerInfo.records) {\r\n for (const record of subLayerInfo.records) {\r\n // Always use the string value for now\r\n this.addProperty(record, subLayerInfo.subLayerName);\r\n\r\n }\r\n }\r\n }\r\n }\r\n if (layerCatIdx === -1 && nbRecords>0)\r\n this.addCategory(layerCategory);\r\n\r\n recordCount = recordCount + nbRecords;\r\n }\r\n }\r\n }\r\n this.onDataUpdated.raiseEvent({recordCount});\r\n this.onDataChanged.raiseEvent();\r\n }\r\n\r\n public addSubCategory(categoryName: string) {\r\n this.records[categoryName] = [];\r\n }\r\n public addCategory(category: PropertyCategory): number {\r\n const categoryIdx = this.categories.push(category) - 1;\r\n this.records[this.categories[categoryIdx].name] = [];\r\n return categoryIdx;\r\n }\r\n\r\n public findCategoryIndex(category: PropertyCategory): number {\r\n const index = this.categories.findIndex((testCategory: PropertyCategory) => {\r\n return testCategory.name === category.name;\r\n });\r\n return index;\r\n }\r\n public findCategoryIndexByName(name: string): number {\r\n const index = this.categories.findIndex((testCategory: PropertyCategory) => {\r\n return testCategory.name === name;\r\n });\r\n return index;\r\n }\r\n\r\n public addProperty(propertyRecord: PropertyRecord, categoryName: string): void {\r\n const idx = this.records[categoryName].findIndex((prop)=> prop.property.name === propertyRecord.property.name);\r\n if (idx === -1) {\r\n this.records[categoryName].push(propertyRecord);\r\n } else {\r\n this.records[categoryName][idx].isMerged = true;\r\n this.records[categoryName][idx].isReadonly = true;\r\n }\r\n }\r\n\r\n public removeProperty(propertyRecord: PropertyRecord, categoryIdx: number): boolean {\r\n const index = this.records[this.categories[categoryIdx].name].findIndex((record: PropertyRecord) => {\r\n return record === propertyRecord;\r\n });\r\n\r\n let result = false;\r\n\r\n if (index >= 0) {\r\n this.records[this.categories[categoryIdx].name].splice(index, 1);\r\n this.onDataChanged.raiseEvent();\r\n result = true;\r\n }\r\n return result;\r\n }\r\n\r\n public replaceProperty(propertyRecord: PropertyRecord, categoryIdx: number, newRecord: PropertyRecord): boolean {\r\n const index = this.records[this.categories[categoryIdx].name].findIndex((record: PropertyRecord) => {\r\n return record === propertyRecord;\r\n });\r\n\r\n let result = false;\r\n\r\n // istanbul ignore else\r\n if (index >= 0) {\r\n this.records[this.categories[categoryIdx].name].splice(index, 1, newRecord);\r\n result = true;\r\n }\r\n return result;\r\n }\r\n\r\n public async getData(): Promise<PropertyData> {\r\n return this;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"FeatureInfoDataProvider.js","sourceRoot":"","sources":["../../../../src/ui/widget/FeatureInfoDataProvider.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;AAE/F,0DAAwD;AACxD,8DAAyH;AACzH,sDAA8C;AAG9C,oGAAoG;AAEpG;;;GAGG;AAEH,IAAY,uBAAoD;AAAhE,WAAY,uBAAuB;IAAE,uFAAa,CAAA;IAAE,mFAAW,CAAA;AAAA,CAAC,EAApD,uBAAuB,GAAvB,+BAAuB,KAAvB,+BAAuB,QAA6B;AAQhE,MAAa,uBAAuB;IASlC,YAAY,QAAqB;QAP1B,UAAK,GAAmB,+BAAc,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAEtD,eAAU,GAAuB,EAAE,CAAC;QACpC,YAAO,GAAiD,EAAE,CAAC;QAC3D,kBAAa,GAAG,IAAI,0CAAuB,EAAE,CAAC;QAC9C,2BAAsB,GAAG,IAAI,sBAAO,EAA8B,CAAC;QACnE,kBAAa,GAAG,IAAI,sBAAO,EAAqC,CAAC;QAEtE,6DAA6D;QAC7D,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IACxE,CAAC;IAEM,QAAQ;QACb,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,MAAiB;;QAC3C,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,EAAE;YACpB,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAAC;YAC9E,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAChE,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;YAC5E,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAG;gBACpC,KAAK,MAAM,YAAY,IAAI,OAAO,CAAC,SAAS,EAAE;oBAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;oBACzE,IAAI,SAAS,GAAG,CAAC,CAAC;oBAClB,MAAM,aAAa,GAAG,CACpB,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC;wBAClB,EAAC,IAAI,EAAC,YAAY,CAAC,SAAS,EAAE,KAAK,EAAC,YAAY,CAAC,SAAS,EAAE,MAAM,EAAC,IAAI,EAAE,eAAe,EAAC,EAAE,EAAC;wBAC5F,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAE,CAAC;oBAErC,IAAI,YAAY,CAAC,IAAI,IAAI,CAAC,CAAC,YAAY,CAAC,IAAI,YAAY,WAAW,CAAC,EAAE;wBACpE,kEAAkE;wBAClE,KAAK,MAAM,YAAY,IAAI,YAAY,CAAC,IAAI,EAAE;4BAC5C,SAAS,EAAE,CAAC;4BACZ,MAAM,SAAS,GAAG,MAAA,aAAa,CAAC,eAAe,0CAAE,SAAS,CAAC,CAAC,YAA8B,EAAE,EAAE;gCAC5F,OAAO,YAAY,CAAC,IAAI,KAAK,YAAY,CAAC,YAAY,CAAC;4BACzD,CAAC,CAAC,CAAC;4BACH,IAAI,gBAAgB,CAAC;4BACrB,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE;gCACpB,gBAAgB,GAAG,EAAC,IAAI,EAAC,YAAY,CAAC,YAAY,EAAE,KAAK,EAAC,YAAY,CAAC,YAAY,EAAE,MAAM,EAAC,IAAI,EAAC,CAAC;gCAClG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;gCAC3C,MAAA,aAAa,CAAC,eAAe,0CAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;6BACvD;4BACD,IAAI,YAAY,CAAC,OAAO,EAAE;gCACxB,KAAK,MAAM,MAAM,IAAI,YAAY,CAAC,OAAO,EAAE;oCACzC,sCAAsC;oCACtC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,YAAY,CAAC,CAAC;iCAErD;6BACF;yBACF;qBACF;oBACD,IAAI,WAAW,KAAK,CAAC,CAAC,IAAI,SAAS,GAAC,CAAC;wBACnC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;oBAElC,WAAW,GAAG,WAAW,GAAG,SAAS,CAAC;iBACvC;aACF;SACF;QACD,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAC,WAAW,EAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;IAClC,CAAC;IAEM,cAAc,CAAC,YAAoB;QACxC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;IAClC,CAAC;IACM,WAAW,CAAC,QAA0B;QAC3C,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACvD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACrD,OAAO,WAAW,CAAC;IACrB,CAAC;IAEM,iBAAiB,CAAC,QAA0B;QACjD,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,YAA8B,EAAE,EAAE;YACzE,OAAO,YAAY,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC;QAC7C,CAAC,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACf,CAAC;IACM,uBAAuB,CAAC,IAAY;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,YAA8B,EAAE,EAAE;YACzE,OAAO,YAAY,CAAC,IAAI,KAAK,IAAI,CAAC;QACpC,CAAC,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,WAAW,CAAC,cAA8B,EAAE,YAAoB;QACrE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,EAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC/G,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE;YACd,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;SACjD;aAAM;YACL,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;YAChD,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC;SACnD;IACH,CAAC;IAEM,cAAc,CAAC,cAA8B,EAAE,WAAmB;QACvE,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,MAAsB,EAAE,EAAE;YACjG,OAAO,MAAM,KAAK,cAAc,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,IAAI,MAAM,GAAG,KAAK,CAAC;QAEnB,IAAI,KAAK,IAAI,CAAC,EAAE;YACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACjE,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;YAChC,MAAM,GAAG,IAAI,CAAC;SACf;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,eAAe,CAAC,cAA8B,EAAE,WAAmB,EAAE,SAAyB;QACnG,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,MAAsB,EAAE,EAAE;YACjG,OAAO,MAAM,KAAK,cAAc,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,IAAI,MAAM,GAAG,KAAK,CAAC;QAEnB,uBAAuB;QACvB,IAAI,KAAK,IAAI,CAAC,EAAE;YACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;YAC5E,MAAM,GAAG,IAAI,CAAC;SACf;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,OAAO;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AArID,0DAqIC","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*--------------------------------------------------------------------------------------------*/\n\nimport { PropertyRecord } from \"@itwin/appui-abstract\";\nimport { IPropertyDataProvider, PropertyCategory, PropertyData, PropertyDataChangeEvent } from \"@itwin/components-react\";\nimport { BeEvent } from \"@itwin/core-bentley\";\nimport { HitDetail } from \"@itwin/core-frontend\";\nimport { MapHitEvent } from \"../Interfaces\";\n// import { IPropertyDataProvider, PropertyCategory, PropertyData, PropertyDataChangeEvent } from \"\"\n\n/**\n * Implementation of [IPropertyDataProvider] that uses an associative array.\n * @public\n */\n\nexport enum MapFeatureInfoLoadState {DataLoadStart, DataLoadEnd}\nexport declare type MapFeatureInfoLoadListener = (state: MapFeatureInfoLoadState) => void;\n\nexport interface MapFeatureInfoDataUpdate {\n recordCount: number;\n}\nexport declare type MapFeatureInfoDataUpdatedListener = (data: MapFeatureInfoDataUpdate) => void;\n\nexport class FeatureInfoDataProvider implements IPropertyDataProvider, PropertyData {\n private _removeListener: () => void;\n public label: PropertyRecord = PropertyRecord.fromString(\"\");\n public description?: string;\n public categories: PropertyCategory[] = [];\n public records: { [categoryName: string]: PropertyRecord[] } = {};\n public onDataChanged = new PropertyDataChangeEvent();\n public onDataLoadStateChanged = new BeEvent<MapFeatureInfoLoadListener>();\n public onDataUpdated = new BeEvent<MapFeatureInfoDataUpdatedListener>();\n constructor(onMapHit: MapHitEvent) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this._removeListener = onMapHit.addListener(this._handleMapHit, this);\n }\n\n public onUnload() {\n this._removeListener();\n }\n\n private async _handleMapHit(mapHit: HitDetail) {\n this.records = {};\n this.categories = [];\n let recordCount = 0;\n if (mapHit?.isMapHit) {\n this.onDataLoadStateChanged.raiseEvent(MapFeatureInfoLoadState.DataLoadStart);\n const mapInfo = await mapHit.viewport.getMapFeatureInfo(mapHit);\n this.onDataLoadStateChanged.raiseEvent(MapFeatureInfoLoadState.DataLoadEnd);\n if (mapInfo.layerInfo !== undefined ) {\n for (const curLayerInfo of mapInfo.layerInfo) {\n const layerCatIdx = this.findCategoryIndexByName(curLayerInfo.layerName);\n let nbRecords = 0;\n const layerCategory = (\n layerCatIdx === -1 ?\n {name:curLayerInfo.layerName, label:curLayerInfo.layerName, expand:true, childCategories:[]}\n : this.categories[layerCatIdx] );\n\n if (curLayerInfo.info && !(curLayerInfo.info instanceof HTMLElement)) {\n // This is not an HTMLElement, so iterate over each sub-layer info\n for (const subLayerInfo of curLayerInfo.info) {\n nbRecords++;\n const subCatIdx = layerCategory.childCategories?.findIndex((testCategory: PropertyCategory) => {\n return testCategory.name === subLayerInfo.subLayerName;\n });\n let subLayerCategory;\n if (subCatIdx === -1) {\n subLayerCategory = {name:subLayerInfo.subLayerName, label:subLayerInfo.subLayerName, expand:true};\n this.addSubCategory(subLayerCategory.name);\n layerCategory.childCategories?.push(subLayerCategory);\n }\n if (subLayerInfo.records) {\n for (const record of subLayerInfo.records) {\n // Always use the string value for now\n this.addProperty(record, subLayerInfo.subLayerName);\n\n }\n }\n }\n }\n if (layerCatIdx === -1 && nbRecords>0)\n this.addCategory(layerCategory);\n\n recordCount = recordCount + nbRecords;\n }\n }\n }\n this.onDataUpdated.raiseEvent({recordCount});\n this.onDataChanged.raiseEvent();\n }\n\n public addSubCategory(categoryName: string) {\n this.records[categoryName] = [];\n }\n public addCategory(category: PropertyCategory): number {\n const categoryIdx = this.categories.push(category) - 1;\n this.records[this.categories[categoryIdx].name] = [];\n return categoryIdx;\n }\n\n public findCategoryIndex(category: PropertyCategory): number {\n const index = this.categories.findIndex((testCategory: PropertyCategory) => {\n return testCategory.name === category.name;\n });\n return index;\n }\n public findCategoryIndexByName(name: string): number {\n const index = this.categories.findIndex((testCategory: PropertyCategory) => {\n return testCategory.name === name;\n });\n return index;\n }\n\n public addProperty(propertyRecord: PropertyRecord, categoryName: string): void {\n const idx = this.records[categoryName].findIndex((prop)=> prop.property.name === propertyRecord.property.name);\n if (idx === -1) {\n this.records[categoryName].push(propertyRecord);\n } else {\n this.records[categoryName][idx].isMerged = true;\n this.records[categoryName][idx].isReadonly = true;\n }\n }\n\n public removeProperty(propertyRecord: PropertyRecord, categoryIdx: number): boolean {\n const index = this.records[this.categories[categoryIdx].name].findIndex((record: PropertyRecord) => {\n return record === propertyRecord;\n });\n\n let result = false;\n\n if (index >= 0) {\n this.records[this.categories[categoryIdx].name].splice(index, 1);\n this.onDataChanged.raiseEvent();\n result = true;\n }\n return result;\n }\n\n public replaceProperty(propertyRecord: PropertyRecord, categoryIdx: number, newRecord: PropertyRecord): boolean {\n const index = this.records[this.categories[categoryIdx].name].findIndex((record: PropertyRecord) => {\n return record === propertyRecord;\n });\n\n let result = false;\n\n // istanbul ignore else\n if (index >= 0) {\n this.records[this.categories[categoryIdx].name].splice(index, 1, newRecord);\n result = true;\n }\n return result;\n }\n\n public async getData(): Promise<PropertyData> {\n return this;\n }\n}\n"]}
@@ -1,8 +1,8 @@
1
- /// <reference types="react" />
2
- import { MapFeatureInfoOptions } from "../Interfaces";
3
- interface MapFeatureInfoWidgetProps {
4
- featureInfoOpts: MapFeatureInfoOptions;
5
- }
6
- export declare function MapFeatureInfoWidget({ featureInfoOpts }: MapFeatureInfoWidgetProps): JSX.Element;
7
- export {};
1
+ /// <reference types="react" />
2
+ import { MapFeatureInfoOptions } from "../Interfaces";
3
+ interface MapFeatureInfoWidgetProps {
4
+ featureInfoOpts: MapFeatureInfoOptions;
5
+ }
6
+ export declare function MapFeatureInfoWidget({ featureInfoOpts }: MapFeatureInfoWidgetProps): JSX.Element;
7
+ export {};
8
8
  //# sourceMappingURL=FeatureInfoWidget.d.ts.map
@@ -1,72 +1,72 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MapFeatureInfoWidget = 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 = require("react");
9
- const components_react_1 = require("@itwin/components-react");
10
- const core_react_1 = require("@itwin/core-react");
11
- const FeatureInfoDataProvider_1 = require("./FeatureInfoDataProvider");
12
- const itwinui_react_1 = require("@itwin/itwinui-react");
13
- const mapLayers_1 = require("../../mapLayers");
14
- // eslint-disable-next-line @typescript-eslint/naming-convention
15
- function MapFeatureInfoWidget({ featureInfoOpts }) {
16
- var _a;
17
- const dataProvider = React.useRef();
18
- const [loadingData, setLoadingData] = React.useState(false);
19
- const [hasData, setHasData] = React.useState(false);
20
- const [noRecordsMessage] = React.useState(mapLayers_1.MapLayersUI.localization.getLocalizedString("mapLayers:FeatureInfoWidget.NoRecords"));
21
- const handleLoadStateChange = (state) => {
22
- setLoadingData(state === FeatureInfoDataProvider_1.MapFeatureInfoLoadState.DataLoadStart);
23
- };
24
- const handleDataUpdated = (state) => {
25
- setHasData(state.recordCount !== 0);
26
- };
27
- React.useEffect(() => {
28
- if (featureInfoOpts === null || featureInfoOpts === void 0 ? void 0 : featureInfoOpts.onMapHit) {
29
- dataProvider.current = new FeatureInfoDataProvider_1.FeatureInfoDataProvider(featureInfoOpts.onMapHit);
30
- }
31
- return () => {
32
- var _a;
33
- (_a = dataProvider === null || dataProvider === void 0 ? void 0 : dataProvider.current) === null || _a === void 0 ? void 0 : _a.onUnload();
34
- };
35
- }, [featureInfoOpts === null || featureInfoOpts === void 0 ? void 0 : featureInfoOpts.onMapHit]);
36
- React.useEffect(() => {
37
- var _a;
38
- (_a = dataProvider.current) === null || _a === void 0 ? void 0 : _a.onDataUpdated.addListener(handleDataUpdated);
39
- return () => {
40
- var _a;
41
- (_a = dataProvider.current) === null || _a === void 0 ? void 0 : _a.onDataUpdated.removeListener(handleDataUpdated);
42
- };
43
- }, []);
44
- React.useEffect(() => {
45
- var _a;
46
- if (featureInfoOpts === null || featureInfoOpts === void 0 ? void 0 : featureInfoOpts.showLoadProgressAnimation) {
47
- (_a = dataProvider.current) === null || _a === void 0 ? void 0 : _a.onDataLoadStateChanged.addListener(handleLoadStateChange);
48
- return () => {
49
- var _a;
50
- (_a = dataProvider.current) === null || _a === void 0 ? void 0 : _a.onDataLoadStateChanged.removeListener(handleLoadStateChange);
51
- };
52
- }
53
- return;
54
- }, [featureInfoOpts === null || featureInfoOpts === void 0 ? void 0 : featureInfoOpts.showLoadProgressAnimation]);
55
- if (loadingData) {
56
- return (React.createElement(core_react_1.FillCentered, null,
57
- React.createElement(itwinui_react_1.ProgressRadial, { indeterminate: true })));
58
- }
59
- else if (!hasData) {
60
- return (React.createElement(core_react_1.FillCentered, null,
61
- React.createElement("span", null,
62
- React.createElement("i", null, noRecordsMessage))));
63
- }
64
- else {
65
- if (dataProvider.current)
66
- return (React.createElement(components_react_1.PropertyGrid, { dataProvider: dataProvider.current, orientation: core_react_1.Orientation.Vertical, isPropertySelectionEnabled: (_a = featureInfoOpts === null || featureInfoOpts === void 0 ? void 0 : featureInfoOpts.propertyGridOptions) === null || _a === void 0 ? void 0 : _a.isPropertySelectionEnabled }));
67
- else
68
- return (React.createElement(React.Fragment, null));
69
- }
70
- }
71
- exports.MapFeatureInfoWidget = MapFeatureInfoWidget;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MapFeatureInfoWidget = 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 = require("react");
9
+ const components_react_1 = require("@itwin/components-react");
10
+ const core_react_1 = require("@itwin/core-react");
11
+ const FeatureInfoDataProvider_1 = require("./FeatureInfoDataProvider");
12
+ const itwinui_react_1 = require("@itwin/itwinui-react");
13
+ const mapLayers_1 = require("../../mapLayers");
14
+ // eslint-disable-next-line @typescript-eslint/naming-convention
15
+ function MapFeatureInfoWidget({ featureInfoOpts }) {
16
+ var _a;
17
+ const dataProvider = React.useRef();
18
+ const [loadingData, setLoadingData] = React.useState(false);
19
+ const [hasData, setHasData] = React.useState(false);
20
+ const [noRecordsMessage] = React.useState(mapLayers_1.MapLayersUI.localization.getLocalizedString("mapLayers:FeatureInfoWidget.NoRecords"));
21
+ const handleLoadStateChange = (state) => {
22
+ setLoadingData(state === FeatureInfoDataProvider_1.MapFeatureInfoLoadState.DataLoadStart);
23
+ };
24
+ const handleDataUpdated = (state) => {
25
+ setHasData(state.recordCount !== 0);
26
+ };
27
+ React.useEffect(() => {
28
+ if (featureInfoOpts === null || featureInfoOpts === void 0 ? void 0 : featureInfoOpts.onMapHit) {
29
+ dataProvider.current = new FeatureInfoDataProvider_1.FeatureInfoDataProvider(featureInfoOpts.onMapHit);
30
+ }
31
+ return () => {
32
+ var _a;
33
+ (_a = dataProvider === null || dataProvider === void 0 ? void 0 : dataProvider.current) === null || _a === void 0 ? void 0 : _a.onUnload();
34
+ };
35
+ }, [featureInfoOpts === null || featureInfoOpts === void 0 ? void 0 : featureInfoOpts.onMapHit]);
36
+ React.useEffect(() => {
37
+ var _a;
38
+ (_a = dataProvider.current) === null || _a === void 0 ? void 0 : _a.onDataUpdated.addListener(handleDataUpdated);
39
+ return () => {
40
+ var _a;
41
+ (_a = dataProvider.current) === null || _a === void 0 ? void 0 : _a.onDataUpdated.removeListener(handleDataUpdated);
42
+ };
43
+ }, []);
44
+ React.useEffect(() => {
45
+ var _a;
46
+ if (featureInfoOpts === null || featureInfoOpts === void 0 ? void 0 : featureInfoOpts.showLoadProgressAnimation) {
47
+ (_a = dataProvider.current) === null || _a === void 0 ? void 0 : _a.onDataLoadStateChanged.addListener(handleLoadStateChange);
48
+ return () => {
49
+ var _a;
50
+ (_a = dataProvider.current) === null || _a === void 0 ? void 0 : _a.onDataLoadStateChanged.removeListener(handleLoadStateChange);
51
+ };
52
+ }
53
+ return;
54
+ }, [featureInfoOpts === null || featureInfoOpts === void 0 ? void 0 : featureInfoOpts.showLoadProgressAnimation]);
55
+ if (loadingData) {
56
+ return (React.createElement(core_react_1.FillCentered, null,
57
+ React.createElement(itwinui_react_1.ProgressRadial, { indeterminate: true })));
58
+ }
59
+ else if (!hasData) {
60
+ return (React.createElement(core_react_1.FillCentered, null,
61
+ React.createElement("span", null,
62
+ React.createElement("i", null, noRecordsMessage))));
63
+ }
64
+ else {
65
+ if (dataProvider.current)
66
+ return (React.createElement(components_react_1.PropertyGrid, { dataProvider: dataProvider.current, orientation: core_react_1.Orientation.Vertical, isPropertySelectionEnabled: (_a = featureInfoOpts === null || featureInfoOpts === void 0 ? void 0 : featureInfoOpts.propertyGridOptions) === null || _a === void 0 ? void 0 : _a.isPropertySelectionEnabled }));
67
+ else
68
+ return (React.createElement(React.Fragment, null));
69
+ }
70
+ }
71
+ exports.MapFeatureInfoWidget = MapFeatureInfoWidget;
72
72
  //# sourceMappingURL=FeatureInfoWidget.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FeatureInfoWidget.js","sourceRoot":"","sources":["../../../../src/ui/widget/FeatureInfoWidget.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nimport * as React from \"react\";\r\n\r\nimport { PropertyGrid} from \"@itwin/components-react\";\r\nimport { FillCentered, Orientation } from \"@itwin/core-react\";\r\n\r\nimport { FeatureInfoDataProvider, MapFeatureInfoDataUpdate, MapFeatureInfoLoadState } from \"./FeatureInfoDataProvider\";\r\nimport { ProgressRadial } from \"@itwin/itwinui-react\";\r\nimport { MapFeatureInfoOptions } from \"../Interfaces\";\r\nimport { MapLayersUI } from \"../../mapLayers\";\r\n\r\ninterface MapFeatureInfoWidgetProps {\r\n featureInfoOpts: MapFeatureInfoOptions;\r\n}\r\n\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport function MapFeatureInfoWidget({ featureInfoOpts }: MapFeatureInfoWidgetProps) {\r\n\r\n const dataProvider = React.useRef<FeatureInfoDataProvider>();\r\n const [loadingData, setLoadingData] = React.useState<boolean>(false);\r\n const [hasData, setHasData] = React.useState<boolean>(false);\r\n const [noRecordsMessage] = React.useState(MapLayersUI.localization.getLocalizedString(\"mapLayers:FeatureInfoWidget.NoRecords\"));\r\n\r\n const handleLoadStateChange = (state: MapFeatureInfoLoadState) => {\r\n setLoadingData(state === MapFeatureInfoLoadState.DataLoadStart);\r\n };\r\n const handleDataUpdated = (state: MapFeatureInfoDataUpdate) => {\r\n setHasData(state.recordCount !== 0);\r\n };\r\n\r\n React.useEffect(() => {\r\n if (featureInfoOpts?.onMapHit) {\r\n dataProvider.current = new FeatureInfoDataProvider(featureInfoOpts.onMapHit);\r\n }\r\n return () => {\r\n dataProvider?.current?.onUnload();\r\n };\r\n }, [featureInfoOpts?.onMapHit]);\r\n\r\n React.useEffect(() => {\r\n\r\n dataProvider.current?.onDataUpdated.addListener(handleDataUpdated);\r\n return () => {\r\n dataProvider.current?.onDataUpdated.removeListener(handleDataUpdated);\r\n };\r\n\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n if (featureInfoOpts?.showLoadProgressAnimation) {\r\n dataProvider.current?.onDataLoadStateChanged.addListener(handleLoadStateChange);\r\n return () => {\r\n dataProvider.current?.onDataLoadStateChanged.removeListener(handleLoadStateChange);\r\n };\r\n }\r\n return;\r\n\r\n }, [featureInfoOpts?.showLoadProgressAnimation]);\r\n\r\n if (loadingData) {\r\n return (<FillCentered><ProgressRadial indeterminate={true}></ProgressRadial></FillCentered>);\r\n } else if (!hasData) {\r\n return (<FillCentered><span><i>{noRecordsMessage}</i></span></FillCentered>);\r\n } else{\r\n if (dataProvider.current)\r\n return (<PropertyGrid dataProvider={dataProvider.current} orientation={Orientation.Vertical}\r\n isPropertySelectionEnabled={featureInfoOpts?.propertyGridOptions?.isPropertySelectionEnabled} />);\r\n else\r\n return (<></>);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"FeatureInfoWidget.js","sourceRoot":"","sources":["../../../../src/ui/widget/FeatureInfoWidget.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 * as React from \"react\";\n\nimport { PropertyGrid} from \"@itwin/components-react\";\nimport { FillCentered, Orientation } from \"@itwin/core-react\";\n\nimport { FeatureInfoDataProvider, MapFeatureInfoDataUpdate, MapFeatureInfoLoadState } from \"./FeatureInfoDataProvider\";\nimport { ProgressRadial } from \"@itwin/itwinui-react\";\nimport { MapFeatureInfoOptions } from \"../Interfaces\";\nimport { MapLayersUI } from \"../../mapLayers\";\n\ninterface MapFeatureInfoWidgetProps {\n featureInfoOpts: MapFeatureInfoOptions;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function MapFeatureInfoWidget({ featureInfoOpts }: MapFeatureInfoWidgetProps) {\n\n const dataProvider = React.useRef<FeatureInfoDataProvider>();\n const [loadingData, setLoadingData] = React.useState<boolean>(false);\n const [hasData, setHasData] = React.useState<boolean>(false);\n const [noRecordsMessage] = React.useState(MapLayersUI.localization.getLocalizedString(\"mapLayers:FeatureInfoWidget.NoRecords\"));\n\n const handleLoadStateChange = (state: MapFeatureInfoLoadState) => {\n setLoadingData(state === MapFeatureInfoLoadState.DataLoadStart);\n };\n const handleDataUpdated = (state: MapFeatureInfoDataUpdate) => {\n setHasData(state.recordCount !== 0);\n };\n\n React.useEffect(() => {\n if (featureInfoOpts?.onMapHit) {\n dataProvider.current = new FeatureInfoDataProvider(featureInfoOpts.onMapHit);\n }\n return () => {\n dataProvider?.current?.onUnload();\n };\n }, [featureInfoOpts?.onMapHit]);\n\n React.useEffect(() => {\n\n dataProvider.current?.onDataUpdated.addListener(handleDataUpdated);\n return () => {\n dataProvider.current?.onDataUpdated.removeListener(handleDataUpdated);\n };\n\n }, []);\n\n React.useEffect(() => {\n if (featureInfoOpts?.showLoadProgressAnimation) {\n dataProvider.current?.onDataLoadStateChanged.addListener(handleLoadStateChange);\n return () => {\n dataProvider.current?.onDataLoadStateChanged.removeListener(handleLoadStateChange);\n };\n }\n return;\n\n }, [featureInfoOpts?.showLoadProgressAnimation]);\n\n if (loadingData) {\n return (<FillCentered><ProgressRadial indeterminate={true}></ProgressRadial></FillCentered>);\n } else if (!hasData) {\n return (<FillCentered><span><i>{noRecordsMessage}</i></span></FillCentered>);\n } else{\n if (dataProvider.current)\n return (<PropertyGrid dataProvider={dataProvider.current} orientation={Orientation.Vertical}\n isPropertySelectionEnabled={featureInfoOpts?.propertyGridOptions?.isPropertySelectionEnabled} />);\n else\n return (<></>);\n }\n}\n"]}
@@ -1,19 +1,20 @@
1
- /// <reference types="react" />
2
- import { ScreenViewport } from "@itwin/core-frontend";
3
- import { MapTypesOptions, StyleMapLayerSettings } from "../Interfaces";
4
- import "./MapLayerManager.scss";
5
- /** @internal */
6
- interface MapLayerDroppableProps {
7
- isOverlay: boolean;
8
- layersList?: StyleMapLayerSettings[];
9
- mapTypesOptions?: MapTypesOptions;
10
- getContainerForClone: () => HTMLElement;
11
- activeViewport: ScreenViewport;
12
- onMenuItemSelected: (action: string, mapLayerSettings: StyleMapLayerSettings) => void;
13
- onItemVisibilityToggleClicked: (mapLayerSettings: StyleMapLayerSettings) => void;
14
- onItemEdited: () => void;
15
- }
16
- /** @internal */
17
- export declare function MapLayerDroppable(props: MapLayerDroppableProps): JSX.Element;
18
- export {};
1
+ /// <reference types="react" />
2
+ import { ScreenViewport } from "@itwin/core-frontend";
3
+ import { MapTypesOptions, StyleMapLayerSettings } from "../Interfaces";
4
+ import "./MapLayerManager.scss";
5
+ /** @internal */
6
+ interface MapLayerDroppableProps {
7
+ isOverlay: boolean;
8
+ layersList?: StyleMapLayerSettings[];
9
+ mapTypesOptions?: MapTypesOptions;
10
+ getContainerForClone: () => HTMLElement;
11
+ activeViewport: ScreenViewport;
12
+ onMenuItemSelected: (action: string, mapLayerSettings: StyleMapLayerSettings) => void;
13
+ onItemVisibilityToggleClicked: (mapLayerSettings: StyleMapLayerSettings) => void;
14
+ onItemEdited: () => void;
15
+ disabled?: boolean;
16
+ }
17
+ /** @internal */
18
+ export declare function MapLayerDroppable(props: MapLayerDroppableProps): JSX.Element;
19
+ export {};
19
20
  //# sourceMappingURL=MapLayerDroppable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MapLayerDroppable.d.ts","sourceRoot":"","sources":["../../../../src/ui/widget/MapLayerDroppable.tsx"],"names":[],"mappings":";AAWA,OAAO,EAAiC,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAOrF,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAGvE,OAAO,wBAAwB,CAAC;AAIhC,gBAAgB;AAChB,UAAU,sBAAsB;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,qBAAqB,EAAE,CAAC;IACrC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,oBAAoB,EAAE,MAAM,WAAW,CAAC;IACxC,cAAc,EAAE,cAAc,CAAC;IAC/B,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,qBAAqB,KAAK,IAAI,CAAC;IACtF,6BAA6B,EAAE,CAAC,gBAAgB,EAAE,qBAAqB,KAAK,IAAI,CAAC;IACjF,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED,gBAAgB;AAEhB,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,eAwG9D"}
1
+ {"version":3,"file":"MapLayerDroppable.d.ts","sourceRoot":"","sources":["../../../../src/ui/widget/MapLayerDroppable.tsx"],"names":[],"mappings":";AAWA,OAAO,EAAiC,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAOrF,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAGvE,OAAO,wBAAwB,CAAC;AAIhC,gBAAgB;AAChB,UAAU,sBAAsB;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,qBAAqB,EAAE,CAAC;IACrC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,oBAAoB,EAAE,MAAM,WAAW,CAAC;IACxC,cAAc,EAAE,cAAc,CAAC;IAC/B,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,qBAAqB,KAAK,IAAI,CAAC;IACtF,6BAA6B,EAAE,CAAC,gBAAgB,EAAE,qBAAqB,KAAK,IAAI,CAAC;IACjF,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,gBAAgB;AAEhB,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,eAyG9D"}