@itwin/map-layers 4.0.0-dev.7 → 4.0.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 (199) hide show
  1. package/CHANGELOG.md +746 -848
  2. package/README.md +32 -32
  3. package/lib/cjs/MapLayerPreferences.d.ts +88 -88
  4. package/lib/cjs/MapLayerPreferences.js +312 -312
  5. package/lib/cjs/MapLayerPreferences.js.map +1 -1
  6. package/lib/cjs/map-layers.d.ts +6 -6
  7. package/lib/cjs/map-layers.js +22 -22
  8. package/lib/cjs/mapLayers.d.ts +26 -44
  9. package/lib/cjs/mapLayers.d.ts.map +1 -1
  10. package/lib/cjs/mapLayers.js +34 -63
  11. package/lib/cjs/mapLayers.js.map +1 -1
  12. package/lib/cjs/ui/FeatureInfoUiItemsProvider.d.ts +16 -11
  13. package/lib/cjs/ui/FeatureInfoUiItemsProvider.d.ts.map +1 -1
  14. package/lib/cjs/ui/FeatureInfoUiItemsProvider.js +47 -52
  15. package/lib/cjs/ui/FeatureInfoUiItemsProvider.js.map +1 -1
  16. package/lib/cjs/ui/Interfaces.d.ts +50 -50
  17. package/lib/cjs/ui/Interfaces.js +2 -2
  18. package/lib/cjs/ui/Interfaces.js.map +1 -1
  19. package/lib/cjs/ui/MapFeatureInfoTool.d.ts +13 -13
  20. package/lib/cjs/ui/MapFeatureInfoTool.d.ts.map +1 -1
  21. package/lib/cjs/ui/MapFeatureInfoTool.js +50 -50
  22. package/lib/cjs/ui/MapFeatureInfoTool.js.map +1 -1
  23. package/lib/cjs/ui/MapLayersUiItemsProvider.d.ts +8 -8
  24. package/lib/cjs/ui/MapLayersUiItemsProvider.d.ts.map +1 -1
  25. package/lib/cjs/ui/MapLayersUiItemsProvider.js +35 -38
  26. package/lib/cjs/ui/MapLayersUiItemsProvider.js.map +1 -1
  27. package/lib/cjs/ui/widget/AttachLayerPopupButton.d.ts +13 -14
  28. package/lib/cjs/ui/widget/AttachLayerPopupButton.d.ts.map +1 -1
  29. package/lib/cjs/ui/widget/AttachLayerPopupButton.js +338 -338
  30. package/lib/cjs/ui/widget/AttachLayerPopupButton.js.map +1 -1
  31. package/lib/cjs/ui/widget/BasemapPanel.d.ts +7 -8
  32. package/lib/cjs/ui/widget/BasemapPanel.d.ts.map +1 -1
  33. package/lib/cjs/ui/widget/BasemapPanel.js +156 -156
  34. package/lib/cjs/ui/widget/BasemapPanel.js.map +1 -1
  35. package/lib/cjs/ui/widget/BasemapPanel.scss +87 -87
  36. package/lib/cjs/ui/widget/ConfirmMessageDialog.d.ts +20 -21
  37. package/lib/cjs/ui/widget/ConfirmMessageDialog.d.ts.map +1 -1
  38. package/lib/cjs/ui/widget/ConfirmMessageDialog.js +25 -25
  39. package/lib/cjs/ui/widget/ConfirmMessageDialog.js.map +1 -1
  40. package/lib/cjs/ui/widget/FeatureInfoDataProvider.d.ts +35 -40
  41. package/lib/cjs/ui/widget/FeatureInfoDataProvider.d.ts.map +1 -1
  42. package/lib/cjs/ui/widget/FeatureInfoDataProvider.js +140 -139
  43. package/lib/cjs/ui/widget/FeatureInfoDataProvider.js.map +1 -1
  44. package/lib/cjs/ui/widget/FeatureInfoWidget.d.ts +6 -7
  45. package/lib/cjs/ui/widget/FeatureInfoWidget.d.ts.map +1 -1
  46. package/lib/cjs/ui/widget/FeatureInfoWidget.js +76 -71
  47. package/lib/cjs/ui/widget/FeatureInfoWidget.js.map +1 -1
  48. package/lib/cjs/ui/widget/MapLayerDroppable.d.ts +18 -19
  49. package/lib/cjs/ui/widget/MapLayerDroppable.d.ts.map +1 -1
  50. package/lib/cjs/ui/widget/MapLayerDroppable.js +88 -88
  51. package/lib/cjs/ui/widget/MapLayerDroppable.js.map +1 -1
  52. package/lib/cjs/ui/widget/MapLayerManager.d.ts +26 -26
  53. package/lib/cjs/ui/widget/MapLayerManager.js +403 -403
  54. package/lib/cjs/ui/widget/MapLayerManager.js.map +1 -1
  55. package/lib/cjs/ui/widget/MapLayerManager.scss +409 -409
  56. package/lib/cjs/ui/widget/MapLayerSettingsMenu.d.ts +11 -12
  57. package/lib/cjs/ui/widget/MapLayerSettingsMenu.d.ts.map +1 -1
  58. package/lib/cjs/ui/widget/MapLayerSettingsMenu.js +83 -83
  59. package/lib/cjs/ui/widget/MapLayerSettingsMenu.js.map +1 -1
  60. package/lib/cjs/ui/widget/MapLayerSettingsPopupButton.d.ts +6 -7
  61. package/lib/cjs/ui/widget/MapLayerSettingsPopupButton.d.ts.map +1 -1
  62. package/lib/cjs/ui/widget/MapLayerSettingsPopupButton.js +65 -65
  63. package/lib/cjs/ui/widget/MapLayerSettingsPopupButton.js.map +1 -1
  64. package/lib/cjs/ui/widget/MapLayerSettingsPopupButton.scss +20 -20
  65. package/lib/cjs/ui/widget/MapLayersWidget.d.ts +10 -11
  66. package/lib/cjs/ui/widget/MapLayersWidget.d.ts.map +1 -1
  67. package/lib/cjs/ui/widget/MapLayersWidget.js +31 -31
  68. package/lib/cjs/ui/widget/MapLayersWidget.js.map +1 -1
  69. package/lib/cjs/ui/widget/MapManagerSettings.d.ts +2 -3
  70. package/lib/cjs/ui/widget/MapManagerSettings.d.ts.map +1 -1
  71. package/lib/cjs/ui/widget/MapManagerSettings.js +200 -200
  72. package/lib/cjs/ui/widget/MapManagerSettings.js.map +1 -1
  73. package/lib/cjs/ui/widget/MapManagerSettings.scss +29 -29
  74. package/lib/cjs/ui/widget/MapUrlDialog.d.ts +22 -23
  75. package/lib/cjs/ui/widget/MapUrlDialog.d.ts.map +1 -1
  76. package/lib/cjs/ui/widget/MapUrlDialog.js +533 -527
  77. package/lib/cjs/ui/widget/MapUrlDialog.js.map +1 -1
  78. package/lib/cjs/ui/widget/MapUrlDialog.scss +99 -100
  79. package/lib/cjs/ui/widget/SelectMapFormat.d.ts +17 -18
  80. package/lib/cjs/ui/widget/SelectMapFormat.d.ts.map +1 -1
  81. package/lib/cjs/ui/widget/SelectMapFormat.js +59 -59
  82. package/lib/cjs/ui/widget/SelectMapFormat.js.map +1 -1
  83. package/lib/cjs/ui/widget/SubLayersDataProvider.d.ts +18 -20
  84. package/lib/cjs/ui/widget/SubLayersDataProvider.d.ts.map +1 -1
  85. package/lib/cjs/ui/widget/SubLayersDataProvider.js +75 -76
  86. package/lib/cjs/ui/widget/SubLayersDataProvider.js.map +1 -1
  87. package/lib/cjs/ui/widget/SubLayersPopupButton.d.ts +9 -10
  88. package/lib/cjs/ui/widget/SubLayersPopupButton.d.ts.map +1 -1
  89. package/lib/cjs/ui/widget/SubLayersPopupButton.js +40 -40
  90. package/lib/cjs/ui/widget/SubLayersPopupButton.js.map +1 -1
  91. package/lib/cjs/ui/widget/SubLayersTree.d.ts +14 -15
  92. package/lib/cjs/ui/widget/SubLayersTree.d.ts.map +1 -1
  93. package/lib/cjs/ui/widget/SubLayersTree.js +419 -419
  94. package/lib/cjs/ui/widget/SubLayersTree.js.map +1 -1
  95. package/lib/cjs/ui/widget/SubLayersTree.scss +70 -69
  96. package/lib/cjs/ui/widget/TransparencyPopupButton.d.ts +13 -14
  97. package/lib/cjs/ui/widget/TransparencyPopupButton.d.ts.map +1 -1
  98. package/lib/cjs/ui/widget/TransparencyPopupButton.js +47 -47
  99. package/lib/cjs/ui/widget/TransparencyPopupButton.js.map +1 -1
  100. package/lib/cjs/ui/widget/TransparencyPopupButton.scss +35 -36
  101. package/lib/esm/MapLayerPreferences.d.ts +88 -88
  102. package/lib/esm/MapLayerPreferences.js +308 -308
  103. package/lib/esm/MapLayerPreferences.js.map +1 -1
  104. package/lib/esm/map-layers.d.ts +6 -6
  105. package/lib/esm/map-layers.js +10 -10
  106. package/lib/esm/mapLayers.d.ts +26 -44
  107. package/lib/esm/mapLayers.d.ts.map +1 -1
  108. package/lib/esm/mapLayers.js +30 -59
  109. package/lib/esm/mapLayers.js.map +1 -1
  110. package/lib/esm/ui/FeatureInfoUiItemsProvider.d.ts +16 -11
  111. package/lib/esm/ui/FeatureInfoUiItemsProvider.d.ts.map +1 -1
  112. package/lib/esm/ui/FeatureInfoUiItemsProvider.js +43 -48
  113. package/lib/esm/ui/FeatureInfoUiItemsProvider.js.map +1 -1
  114. package/lib/esm/ui/Interfaces.d.ts +50 -50
  115. package/lib/esm/ui/Interfaces.js +1 -1
  116. package/lib/esm/ui/Interfaces.js.map +1 -1
  117. package/lib/esm/ui/MapFeatureInfoTool.d.ts +13 -13
  118. package/lib/esm/ui/MapFeatureInfoTool.d.ts.map +1 -1
  119. package/lib/esm/ui/MapFeatureInfoTool.js +45 -45
  120. package/lib/esm/ui/MapFeatureInfoTool.js.map +1 -1
  121. package/lib/esm/ui/MapLayersUiItemsProvider.d.ts +8 -8
  122. package/lib/esm/ui/MapLayersUiItemsProvider.d.ts.map +1 -1
  123. package/lib/esm/ui/MapLayersUiItemsProvider.js +31 -34
  124. package/lib/esm/ui/MapLayersUiItemsProvider.js.map +1 -1
  125. package/lib/esm/ui/widget/AttachLayerPopupButton.d.ts +13 -14
  126. package/lib/esm/ui/widget/AttachLayerPopupButton.d.ts.map +1 -1
  127. package/lib/esm/ui/widget/AttachLayerPopupButton.js +334 -334
  128. package/lib/esm/ui/widget/AttachLayerPopupButton.js.map +1 -1
  129. package/lib/esm/ui/widget/BasemapPanel.d.ts +7 -8
  130. package/lib/esm/ui/widget/BasemapPanel.d.ts.map +1 -1
  131. package/lib/esm/ui/widget/BasemapPanel.js +152 -152
  132. package/lib/esm/ui/widget/BasemapPanel.js.map +1 -1
  133. package/lib/esm/ui/widget/BasemapPanel.scss +87 -87
  134. package/lib/esm/ui/widget/ConfirmMessageDialog.d.ts +20 -21
  135. package/lib/esm/ui/widget/ConfirmMessageDialog.d.ts.map +1 -1
  136. package/lib/esm/ui/widget/ConfirmMessageDialog.js +21 -21
  137. package/lib/esm/ui/widget/ConfirmMessageDialog.js.map +1 -1
  138. package/lib/esm/ui/widget/FeatureInfoDataProvider.d.ts +35 -40
  139. package/lib/esm/ui/widget/FeatureInfoDataProvider.d.ts.map +1 -1
  140. package/lib/esm/ui/widget/FeatureInfoDataProvider.js +136 -135
  141. package/lib/esm/ui/widget/FeatureInfoDataProvider.js.map +1 -1
  142. package/lib/esm/ui/widget/FeatureInfoWidget.d.ts +6 -7
  143. package/lib/esm/ui/widget/FeatureInfoWidget.d.ts.map +1 -1
  144. package/lib/esm/ui/widget/FeatureInfoWidget.js +72 -67
  145. package/lib/esm/ui/widget/FeatureInfoWidget.js.map +1 -1
  146. package/lib/esm/ui/widget/MapLayerDroppable.d.ts +18 -19
  147. package/lib/esm/ui/widget/MapLayerDroppable.d.ts.map +1 -1
  148. package/lib/esm/ui/widget/MapLayerDroppable.js +84 -84
  149. package/lib/esm/ui/widget/MapLayerDroppable.js.map +1 -1
  150. package/lib/esm/ui/widget/MapLayerManager.d.ts +26 -26
  151. package/lib/esm/ui/widget/MapLayerManager.js +398 -398
  152. package/lib/esm/ui/widget/MapLayerManager.js.map +1 -1
  153. package/lib/esm/ui/widget/MapLayerManager.scss +409 -409
  154. package/lib/esm/ui/widget/MapLayerSettingsMenu.d.ts +11 -12
  155. package/lib/esm/ui/widget/MapLayerSettingsMenu.d.ts.map +1 -1
  156. package/lib/esm/ui/widget/MapLayerSettingsMenu.js +79 -79
  157. package/lib/esm/ui/widget/MapLayerSettingsMenu.js.map +1 -1
  158. package/lib/esm/ui/widget/MapLayerSettingsPopupButton.d.ts +6 -7
  159. package/lib/esm/ui/widget/MapLayerSettingsPopupButton.d.ts.map +1 -1
  160. package/lib/esm/ui/widget/MapLayerSettingsPopupButton.js +61 -61
  161. package/lib/esm/ui/widget/MapLayerSettingsPopupButton.js.map +1 -1
  162. package/lib/esm/ui/widget/MapLayerSettingsPopupButton.scss +20 -20
  163. package/lib/esm/ui/widget/MapLayersWidget.d.ts +10 -11
  164. package/lib/esm/ui/widget/MapLayersWidget.d.ts.map +1 -1
  165. package/lib/esm/ui/widget/MapLayersWidget.js +27 -27
  166. package/lib/esm/ui/widget/MapLayersWidget.js.map +1 -1
  167. package/lib/esm/ui/widget/MapManagerSettings.d.ts +2 -3
  168. package/lib/esm/ui/widget/MapManagerSettings.d.ts.map +1 -1
  169. package/lib/esm/ui/widget/MapManagerSettings.js +196 -196
  170. package/lib/esm/ui/widget/MapManagerSettings.js.map +1 -1
  171. package/lib/esm/ui/widget/MapManagerSettings.scss +29 -29
  172. package/lib/esm/ui/widget/MapUrlDialog.d.ts +22 -23
  173. package/lib/esm/ui/widget/MapUrlDialog.d.ts.map +1 -1
  174. package/lib/esm/ui/widget/MapUrlDialog.js +529 -523
  175. package/lib/esm/ui/widget/MapUrlDialog.js.map +1 -1
  176. package/lib/esm/ui/widget/MapUrlDialog.scss +99 -100
  177. package/lib/esm/ui/widget/SelectMapFormat.d.ts +17 -18
  178. package/lib/esm/ui/widget/SelectMapFormat.d.ts.map +1 -1
  179. package/lib/esm/ui/widget/SelectMapFormat.js +55 -55
  180. package/lib/esm/ui/widget/SelectMapFormat.js.map +1 -1
  181. package/lib/esm/ui/widget/SubLayersDataProvider.d.ts +18 -20
  182. package/lib/esm/ui/widget/SubLayersDataProvider.d.ts.map +1 -1
  183. package/lib/esm/ui/widget/SubLayersDataProvider.js +71 -72
  184. package/lib/esm/ui/widget/SubLayersDataProvider.js.map +1 -1
  185. package/lib/esm/ui/widget/SubLayersPopupButton.d.ts +9 -10
  186. package/lib/esm/ui/widget/SubLayersPopupButton.d.ts.map +1 -1
  187. package/lib/esm/ui/widget/SubLayersPopupButton.js +36 -36
  188. package/lib/esm/ui/widget/SubLayersPopupButton.js.map +1 -1
  189. package/lib/esm/ui/widget/SubLayersTree.d.ts +14 -15
  190. package/lib/esm/ui/widget/SubLayersTree.d.ts.map +1 -1
  191. package/lib/esm/ui/widget/SubLayersTree.js +414 -414
  192. package/lib/esm/ui/widget/SubLayersTree.js.map +1 -1
  193. package/lib/esm/ui/widget/SubLayersTree.scss +70 -69
  194. package/lib/esm/ui/widget/TransparencyPopupButton.d.ts +13 -14
  195. package/lib/esm/ui/widget/TransparencyPopupButton.d.ts.map +1 -1
  196. package/lib/esm/ui/widget/TransparencyPopupButton.js +43 -43
  197. package/lib/esm/ui/widget/TransparencyPopupButton.js.map +1 -1
  198. package/lib/esm/ui/widget/TransparencyPopupButton.scss +35 -36
  199. package/package.json +39 -38
@@ -1,313 +1,313 @@
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.MapLayerPreferences = exports.MapLayerSourceChangeType = void 0;
8
- const core_frontend_1 = require("@itwin/core-frontend");
9
- const core_bentley_1 = require("@itwin/core-bentley");
10
- const mapLayers_1 = require("./mapLayers");
11
- /** @internal */
12
- var MapLayerSourceChangeType;
13
- (function (MapLayerSourceChangeType) {
14
- MapLayerSourceChangeType[MapLayerSourceChangeType["Added"] = 0] = "Added";
15
- MapLayerSourceChangeType[MapLayerSourceChangeType["Removed"] = 1] = "Removed";
16
- MapLayerSourceChangeType[MapLayerSourceChangeType["Replaced"] = 2] = "Replaced";
17
- })(MapLayerSourceChangeType = exports.MapLayerSourceChangeType || (exports.MapLayerSourceChangeType = {}));
18
- /** A wrapper around user preferences to provide a way to store [[MapLayerSettings]].
19
- *
20
- * Note: This is currently internal only and used directly by the MapLayersExtension. It makes use of the IModelApp.authorizationClient if it exists.
21
- *
22
- * @internal
23
- */
24
- class MapLayerPreferences {
25
- /** Store the Map Layer source preference. If the same setting exists at a higher level, an error will be thrown and the setting will not be updated.
26
- *
27
- * Returns false if the settings object would override some other settings object in a larger scope i.e. storing settings on model when
28
- * a project setting exists with same name or map layer url.
29
- * @param source source to be stored on the setting service
30
- * @param storeOnIModel if true store the settings object on the model, if false store it on the project
31
- */
32
- static async storeSource(source, iTwinId, iModelId, storeOnIModel) {
33
- if (!mapLayers_1.MapLayersUI.iTwinConfig)
34
- return false;
35
- const accessToken = undefined !== core_frontend_1.IModelApp.authorizationClient ? (await core_frontend_1.IModelApp.authorizationClient.getAccessToken()) : undefined;
36
- const sourceJSON = source.toJSON();
37
- const mapLayerSetting = {
38
- url: sourceJSON.url,
39
- name: sourceJSON.name,
40
- formatId: sourceJSON.formatId,
41
- transparentBackground: sourceJSON.transparentBackground,
42
- };
43
- const result = await MapLayerPreferences.delete(sourceJSON.url, sourceJSON.name, iTwinId, iModelId, storeOnIModel);
44
- if (result) {
45
- await mapLayers_1.MapLayersUI.iTwinConfig.save({
46
- accessToken,
47
- content: mapLayerSetting,
48
- namespace: MapLayerPreferences._preferenceNamespace,
49
- key: sourceJSON.name,
50
- iTwinId,
51
- iModelId: storeOnIModel ? iModelId : undefined,
52
- });
53
- MapLayerPreferences.onLayerSourceChanged.raiseEvent(MapLayerSourceChangeType.Added, undefined, core_frontend_1.MapLayerSource.fromJSON(mapLayerSetting));
54
- return true;
55
- }
56
- else {
57
- return false;
58
- }
59
- }
60
- /** Replace the old map layer source with a new map layer source.
61
- *
62
- * The source is replaced at the same level that the original source is defined. (i.e. if the old source is defined at a project level, the new source will also be defined there.)
63
- *
64
- * @param oldSource
65
- * @param newSource
66
- * @param iTwinId
67
- * @param iModelId
68
- */
69
- static async replaceSource(oldSource, newSource, iTwinId, iModelId) {
70
- if (!mapLayers_1.MapLayersUI.iTwinConfig)
71
- return;
72
- const accessToken = undefined !== core_frontend_1.IModelApp.authorizationClient ? (await core_frontend_1.IModelApp.authorizationClient.getAccessToken()) : undefined;
73
- let storeOnIModel = false;
74
- try {
75
- await mapLayers_1.MapLayersUI.iTwinConfig.delete({
76
- accessToken,
77
- namespace: MapLayerPreferences._preferenceNamespace,
78
- key: oldSource.name,
79
- iTwinId,
80
- iModelId,
81
- });
82
- }
83
- catch (_err) {
84
- await mapLayers_1.MapLayersUI.iTwinConfig.delete({
85
- accessToken,
86
- namespace: MapLayerPreferences._preferenceNamespace,
87
- key: oldSource.name,
88
- iTwinId,
89
- });
90
- storeOnIModel = true;
91
- }
92
- const mapLayerSetting = {
93
- url: newSource.url,
94
- name: newSource.name,
95
- formatId: newSource.formatId,
96
- transparentBackground: newSource.transparentBackground,
97
- };
98
- await mapLayers_1.MapLayersUI.iTwinConfig.save({
99
- accessToken,
100
- namespace: MapLayerPreferences._preferenceNamespace,
101
- key: `${MapLayerPreferences._preferenceNamespace}.${newSource.name}`,
102
- iTwinId,
103
- iModelId: storeOnIModel ? iModelId : undefined,
104
- content: mapLayerSetting,
105
- });
106
- MapLayerPreferences.onLayerSourceChanged.raiseEvent(MapLayerSourceChangeType.Replaced, oldSource, newSource);
107
- }
108
- /** Deletes the provided MapLayerSource by name from both the iTwin or iModel level.
109
- *
110
- * @param source The source to delete. The name is used to identify the source.
111
- * @param iTwinId
112
- * @param iModelId
113
- */
114
- static async deleteByName(source, iTwinId, iModelId) {
115
- if (!mapLayers_1.MapLayersUI.iTwinConfig)
116
- return;
117
- const accessToken = undefined !== core_frontend_1.IModelApp.authorizationClient ? (await core_frontend_1.IModelApp.authorizationClient.getAccessToken()) : undefined;
118
- try {
119
- await mapLayers_1.MapLayersUI.iTwinConfig.delete({
120
- accessToken,
121
- namespace: MapLayerPreferences._preferenceNamespace,
122
- key: source.name,
123
- iTwinId,
124
- iModelId,
125
- });
126
- }
127
- catch (_err) {
128
- // failed to store based on iModelId, attempt using iTwinId
129
- await mapLayers_1.MapLayersUI.iTwinConfig.delete({
130
- accessToken,
131
- namespace: MapLayerPreferences._preferenceNamespace,
132
- key: source.name,
133
- iTwinId,
134
- });
135
- }
136
- MapLayerPreferences.onLayerSourceChanged.raiseEvent(MapLayerSourceChangeType.Removed, source, undefined);
137
- }
138
- /** Deletes the current setting with the provided key if it is defined at the same preference level.
139
- *
140
- * If the preference is defined within a different level, false will be returned indicating the setting should not be overriden.
141
- *
142
- * The two potential preference levels are iTwin and iModel.
143
- *
144
- * @param url
145
- * @param name
146
- * @param iTwinId
147
- * @param iModelId
148
- * @param storeOnIModel
149
- */
150
- static async delete(url, name, iTwinId, iModelId, storeOnIModel) {
151
- if (!mapLayers_1.MapLayersUI.iTwinConfig)
152
- return true;
153
- const accessToken = undefined !== core_frontend_1.IModelApp.authorizationClient ? (await core_frontend_1.IModelApp.authorizationClient.getAccessToken()) : undefined;
154
- const iTwinPreferenceByName = await mapLayers_1.MapLayersUI.iTwinConfig.get({
155
- accessToken,
156
- namespace: MapLayerPreferences._preferenceNamespace,
157
- key: name,
158
- iTwinId,
159
- });
160
- if (undefined !== iTwinPreferenceByName && storeOnIModel) {
161
- const errorMessage = core_frontend_1.IModelApp.localization.getLocalizedString("mapLayers:CustomAttach.LayerExistsAsProjectSetting", { layer: iTwinPreferenceByName.name });
162
- core_frontend_1.IModelApp.notifications.outputMessage(new core_frontend_1.NotifyMessageDetails(core_frontend_1.OutputMessagePriority.Error, errorMessage));
163
- return false;
164
- }
165
- else if (iTwinPreferenceByName) {
166
- const infoMessage = core_frontend_1.IModelApp.localization.getLocalizedString("mapLayers:CustomAttach.LayerExistsOverwriting", { layer: iTwinPreferenceByName.name });
167
- core_frontend_1.IModelApp.notifications.outputMessage(new core_frontend_1.NotifyMessageDetails(core_frontend_1.OutputMessagePriority.Info, infoMessage));
168
- await mapLayers_1.MapLayersUI.iTwinConfig.delete({
169
- accessToken,
170
- namespace: MapLayerPreferences._preferenceNamespace,
171
- key: iTwinPreferenceByName.name,
172
- iTwinId,
173
- });
174
- }
175
- // check if setting with url already exists, if it does, delete it
176
- const settingFromUrl = await MapLayerPreferences.getByUrl(url, iTwinId, undefined);
177
- if (settingFromUrl && storeOnIModel) {
178
- const errorMessage = core_frontend_1.IModelApp.localization.getLocalizedString("mapLayers:CustomAttach.LayerWithUrlExistsAsProjectSetting", { url: settingFromUrl.url, name: settingFromUrl.name });
179
- core_frontend_1.IModelApp.notifications.outputMessage(new core_frontend_1.NotifyMessageDetails(core_frontend_1.OutputMessagePriority.Error, errorMessage));
180
- return false;
181
- }
182
- else if (settingFromUrl) {
183
- const infoMessage = core_frontend_1.IModelApp.localization.getLocalizedString("mapLayers:CustomAttach.LayerWithUrlExistsOverwriting", { url: settingFromUrl.url, oldName: settingFromUrl.name, newName: name });
184
- core_frontend_1.IModelApp.notifications.outputMessage(new core_frontend_1.NotifyMessageDetails(core_frontend_1.OutputMessagePriority.Info, infoMessage));
185
- await mapLayers_1.MapLayersUI.iTwinConfig.delete({
186
- accessToken,
187
- namespace: MapLayerPreferences._preferenceNamespace,
188
- key: settingFromUrl.name,
189
- iTwinId,
190
- });
191
- }
192
- if (iModelId) { // delete any settings on model so user can update them if theres collisions
193
- const settingOnIModelFromName = await mapLayers_1.MapLayersUI.iTwinConfig.get({
194
- accessToken,
195
- namespace: MapLayerPreferences._preferenceNamespace,
196
- key: name,
197
- iTwinId,
198
- iModelId,
199
- });
200
- const settingFromUrlOnIModel = await MapLayerPreferences.getByUrl(url, iTwinId, iModelId);
201
- if (settingOnIModelFromName) {
202
- const infoMessage = core_frontend_1.IModelApp.localization.getLocalizedString("mapLayers:CustomAttach.LayerExistsOverwriting", { layer: settingOnIModelFromName.name });
203
- core_frontend_1.IModelApp.notifications.outputMessage(new core_frontend_1.NotifyMessageDetails(core_frontend_1.OutputMessagePriority.Info, infoMessage));
204
- await mapLayers_1.MapLayersUI.iTwinConfig.delete({
205
- accessToken,
206
- namespace: MapLayerPreferences._preferenceNamespace,
207
- key: settingOnIModelFromName.name,
208
- iTwinId,
209
- iModelId,
210
- });
211
- }
212
- if (settingFromUrlOnIModel) {
213
- const infoMessage = core_frontend_1.IModelApp.localization.getLocalizedString("mapLayers:CustomAttach.LayerWithUrlExistsOverwriting", { url: settingFromUrlOnIModel.url, oldName: settingFromUrlOnIModel.name, newName: name });
214
- core_frontend_1.IModelApp.notifications.outputMessage(new core_frontend_1.NotifyMessageDetails(core_frontend_1.OutputMessagePriority.Info, infoMessage));
215
- await mapLayers_1.MapLayersUI.iTwinConfig.delete({
216
- accessToken,
217
- namespace: MapLayerPreferences._preferenceNamespace,
218
- key: settingFromUrlOnIModel.name,
219
- iTwinId,
220
- iModelId,
221
- });
222
- }
223
- }
224
- return true;
225
- }
226
- /** Attempts to get a map layer based off a specific url.
227
- * @param url
228
- * @param iTwinId
229
- * @param iModelId
230
- */
231
- static async getByUrl(url, iTwinId, iModelId) {
232
- var _a;
233
- if (!mapLayers_1.MapLayersUI.iTwinConfig)
234
- return undefined;
235
- const accessToken = undefined !== core_frontend_1.IModelApp.authorizationClient ? (await core_frontend_1.IModelApp.authorizationClient.getAccessToken()) : undefined;
236
- const settingResponse = await mapLayers_1.MapLayersUI.iTwinConfig.get({
237
- accessToken,
238
- namespace: MapLayerPreferences._preferenceNamespace,
239
- key: "",
240
- iTwinId,
241
- iModelId,
242
- });
243
- if (undefined === settingResponse || 0 === settingResponse.length)
244
- return undefined;
245
- let savedMapLayer;
246
- (_a = settingResponse.settingsMap) === null || _a === void 0 ? void 0 : _a.forEach((savedLayer) => {
247
- if (savedLayer.url === url) {
248
- savedMapLayer = savedLayer;
249
- }
250
- });
251
- return savedMapLayer;
252
- }
253
- /** Get all MapLayerSources from the user's preferences, iTwin setting and iModel settings.
254
- * @param iTwinId id of the iTwin
255
- * @param iModelId id of the iModel
256
- * @throws if any of the calls to grab settings fail.
257
- */
258
- static async getSources(iTwinId, iModelId) {
259
- if (!mapLayers_1.MapLayersUI.iTwinConfig)
260
- return [];
261
- const accessToken = undefined !== core_frontend_1.IModelApp.authorizationClient ? (await core_frontend_1.IModelApp.authorizationClient.getAccessToken()) : undefined;
262
- const mapLayerList = [];
263
- try {
264
- const userResultByProject = await mapLayers_1.MapLayersUI.iTwinConfig.get({
265
- accessToken,
266
- namespace: MapLayerPreferences._preferenceNamespace,
267
- key: "",
268
- iTwinId,
269
- });
270
- if (undefined !== userResultByProject)
271
- mapLayerList.push(userResultByProject);
272
- }
273
- catch (err) {
274
- throw new Error(core_frontend_1.IModelApp.localization.getLocalizedString("mapLayers:CustomAttach.ErrorRetrieveUserProject", { errorMessage: err }));
275
- }
276
- try {
277
- const userResultByIModel = await mapLayers_1.MapLayersUI.iTwinConfig.get({
278
- accessToken,
279
- namespace: MapLayerPreferences._preferenceNamespace,
280
- key: "",
281
- iTwinId,
282
- iModelId,
283
- });
284
- if (undefined !== userResultByIModel)
285
- mapLayerList.push(userResultByIModel);
286
- }
287
- catch (err) {
288
- throw new Error(core_frontend_1.IModelApp.localization.getLocalizedString("mapLayers:CustomAttach.ErrorRetrieveUserProject", { errorMessage: err }));
289
- }
290
- const savedMapLayerSources = [];
291
- for (const mapLayer of mapLayerList) {
292
- mapLayer.forEach((savedLayer) => {
293
- const mapLayerSource = core_frontend_1.MapLayerSource.fromJSON(savedLayer);
294
- if (mapLayerSource)
295
- savedMapLayerSources.push(mapLayerSource);
296
- });
297
- }
298
- return savedMapLayerSources;
299
- }
300
- static get _preferenceNamespace() {
301
- return "MapLayerSource-SettingsService";
302
- }
303
- }
304
- exports.MapLayerPreferences = MapLayerPreferences;
305
- /** Event raised whenever a source is added, replaced or removed:
306
- * changeType : Type of changed occurred.
307
- * oldSource : Source that was removed or replaced.
308
- * newSource : Source that was added or replacement of oldSource.
309
- *
310
- * @see [[MapLayerSourceChangeType]]
311
- */
312
- MapLayerPreferences.onLayerSourceChanged = new core_bentley_1.BeEvent(); // Used to notify the frontend that it needs to update its list of available layers
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.MapLayerPreferences = exports.MapLayerSourceChangeType = void 0;
8
+ const core_frontend_1 = require("@itwin/core-frontend");
9
+ const core_bentley_1 = require("@itwin/core-bentley");
10
+ const mapLayers_1 = require("./mapLayers");
11
+ /** @internal */
12
+ var MapLayerSourceChangeType;
13
+ (function (MapLayerSourceChangeType) {
14
+ MapLayerSourceChangeType[MapLayerSourceChangeType["Added"] = 0] = "Added";
15
+ MapLayerSourceChangeType[MapLayerSourceChangeType["Removed"] = 1] = "Removed";
16
+ MapLayerSourceChangeType[MapLayerSourceChangeType["Replaced"] = 2] = "Replaced";
17
+ })(MapLayerSourceChangeType = exports.MapLayerSourceChangeType || (exports.MapLayerSourceChangeType = {}));
18
+ /** A wrapper around user preferences to provide a way to store [[MapLayerSettings]].
19
+ *
20
+ * Note: This is currently internal only and used directly by the MapLayersExtension. It makes use of the IModelApp.authorizationClient if it exists.
21
+ *
22
+ * @internal
23
+ */
24
+ class MapLayerPreferences {
25
+ /** Store the Map Layer source preference. If the same setting exists at a higher level, an error will be thrown and the setting will not be updated.
26
+ *
27
+ * Returns false if the settings object would override some other settings object in a larger scope i.e. storing settings on model when
28
+ * a project setting exists with same name or map layer url.
29
+ * @param source source to be stored on the setting service
30
+ * @param storeOnIModel if true store the settings object on the model, if false store it on the project
31
+ */
32
+ static async storeSource(source, iTwinId, iModelId, storeOnIModel) {
33
+ if (!mapLayers_1.MapLayersUI.iTwinConfig)
34
+ return false;
35
+ const accessToken = undefined !== core_frontend_1.IModelApp.authorizationClient ? (await core_frontend_1.IModelApp.authorizationClient.getAccessToken()) : undefined;
36
+ const sourceJSON = source.toJSON();
37
+ const mapLayerSetting = {
38
+ url: sourceJSON.url,
39
+ name: sourceJSON.name,
40
+ formatId: sourceJSON.formatId,
41
+ transparentBackground: sourceJSON.transparentBackground,
42
+ };
43
+ const result = await MapLayerPreferences.delete(sourceJSON.url, sourceJSON.name, iTwinId, iModelId, storeOnIModel);
44
+ if (result) {
45
+ await mapLayers_1.MapLayersUI.iTwinConfig.save({
46
+ accessToken,
47
+ content: mapLayerSetting,
48
+ namespace: MapLayerPreferences._preferenceNamespace,
49
+ key: sourceJSON.name,
50
+ iTwinId,
51
+ iModelId: storeOnIModel ? iModelId : undefined,
52
+ });
53
+ MapLayerPreferences.onLayerSourceChanged.raiseEvent(MapLayerSourceChangeType.Added, undefined, core_frontend_1.MapLayerSource.fromJSON(mapLayerSetting));
54
+ return true;
55
+ }
56
+ else {
57
+ return false;
58
+ }
59
+ }
60
+ /** Replace the old map layer source with a new map layer source.
61
+ *
62
+ * The source is replaced at the same level that the original source is defined. (i.e. if the old source is defined at a project level, the new source will also be defined there.)
63
+ *
64
+ * @param oldSource
65
+ * @param newSource
66
+ * @param iTwinId
67
+ * @param iModelId
68
+ */
69
+ static async replaceSource(oldSource, newSource, iTwinId, iModelId) {
70
+ if (!mapLayers_1.MapLayersUI.iTwinConfig)
71
+ return;
72
+ const accessToken = undefined !== core_frontend_1.IModelApp.authorizationClient ? (await core_frontend_1.IModelApp.authorizationClient.getAccessToken()) : undefined;
73
+ let storeOnIModel = false;
74
+ try {
75
+ await mapLayers_1.MapLayersUI.iTwinConfig.delete({
76
+ accessToken,
77
+ namespace: MapLayerPreferences._preferenceNamespace,
78
+ key: oldSource.name,
79
+ iTwinId,
80
+ iModelId,
81
+ });
82
+ }
83
+ catch (_err) {
84
+ await mapLayers_1.MapLayersUI.iTwinConfig.delete({
85
+ accessToken,
86
+ namespace: MapLayerPreferences._preferenceNamespace,
87
+ key: oldSource.name,
88
+ iTwinId,
89
+ });
90
+ storeOnIModel = true;
91
+ }
92
+ const mapLayerSetting = {
93
+ url: newSource.url,
94
+ name: newSource.name,
95
+ formatId: newSource.formatId,
96
+ transparentBackground: newSource.transparentBackground,
97
+ };
98
+ await mapLayers_1.MapLayersUI.iTwinConfig.save({
99
+ accessToken,
100
+ namespace: MapLayerPreferences._preferenceNamespace,
101
+ key: `${MapLayerPreferences._preferenceNamespace}.${newSource.name}`,
102
+ iTwinId,
103
+ iModelId: storeOnIModel ? iModelId : undefined,
104
+ content: mapLayerSetting,
105
+ });
106
+ MapLayerPreferences.onLayerSourceChanged.raiseEvent(MapLayerSourceChangeType.Replaced, oldSource, newSource);
107
+ }
108
+ /** Deletes the provided MapLayerSource by name from both the iTwin or iModel level.
109
+ *
110
+ * @param source The source to delete. The name is used to identify the source.
111
+ * @param iTwinId
112
+ * @param iModelId
113
+ */
114
+ static async deleteByName(source, iTwinId, iModelId) {
115
+ if (!mapLayers_1.MapLayersUI.iTwinConfig)
116
+ return;
117
+ const accessToken = undefined !== core_frontend_1.IModelApp.authorizationClient ? (await core_frontend_1.IModelApp.authorizationClient.getAccessToken()) : undefined;
118
+ try {
119
+ await mapLayers_1.MapLayersUI.iTwinConfig.delete({
120
+ accessToken,
121
+ namespace: MapLayerPreferences._preferenceNamespace,
122
+ key: source.name,
123
+ iTwinId,
124
+ iModelId,
125
+ });
126
+ }
127
+ catch (_err) {
128
+ // failed to store based on iModelId, attempt using iTwinId
129
+ await mapLayers_1.MapLayersUI.iTwinConfig.delete({
130
+ accessToken,
131
+ namespace: MapLayerPreferences._preferenceNamespace,
132
+ key: source.name,
133
+ iTwinId,
134
+ });
135
+ }
136
+ MapLayerPreferences.onLayerSourceChanged.raiseEvent(MapLayerSourceChangeType.Removed, source, undefined);
137
+ }
138
+ /** Deletes the current setting with the provided key if it is defined at the same preference level.
139
+ *
140
+ * If the preference is defined within a different level, false will be returned indicating the setting should not be overriden.
141
+ *
142
+ * The two potential preference levels are iTwin and iModel.
143
+ *
144
+ * @param url
145
+ * @param name
146
+ * @param iTwinId
147
+ * @param iModelId
148
+ * @param storeOnIModel
149
+ */
150
+ static async delete(url, name, iTwinId, iModelId, storeOnIModel) {
151
+ if (!mapLayers_1.MapLayersUI.iTwinConfig)
152
+ return true;
153
+ const accessToken = undefined !== core_frontend_1.IModelApp.authorizationClient ? (await core_frontend_1.IModelApp.authorizationClient.getAccessToken()) : undefined;
154
+ const iTwinPreferenceByName = await mapLayers_1.MapLayersUI.iTwinConfig.get({
155
+ accessToken,
156
+ namespace: MapLayerPreferences._preferenceNamespace,
157
+ key: name,
158
+ iTwinId,
159
+ });
160
+ if (undefined !== iTwinPreferenceByName && storeOnIModel) {
161
+ const errorMessage = core_frontend_1.IModelApp.localization.getLocalizedString("mapLayers:CustomAttach.LayerExistsAsProjectSetting", { layer: iTwinPreferenceByName.name });
162
+ core_frontend_1.IModelApp.notifications.outputMessage(new core_frontend_1.NotifyMessageDetails(core_frontend_1.OutputMessagePriority.Error, errorMessage));
163
+ return false;
164
+ }
165
+ else if (iTwinPreferenceByName) {
166
+ const infoMessage = core_frontend_1.IModelApp.localization.getLocalizedString("mapLayers:CustomAttach.LayerExistsOverwriting", { layer: iTwinPreferenceByName.name });
167
+ core_frontend_1.IModelApp.notifications.outputMessage(new core_frontend_1.NotifyMessageDetails(core_frontend_1.OutputMessagePriority.Info, infoMessage));
168
+ await mapLayers_1.MapLayersUI.iTwinConfig.delete({
169
+ accessToken,
170
+ namespace: MapLayerPreferences._preferenceNamespace,
171
+ key: iTwinPreferenceByName.name,
172
+ iTwinId,
173
+ });
174
+ }
175
+ // check if setting with url already exists, if it does, delete it
176
+ const settingFromUrl = await MapLayerPreferences.getByUrl(url, iTwinId, undefined);
177
+ if (settingFromUrl && storeOnIModel) {
178
+ const errorMessage = core_frontend_1.IModelApp.localization.getLocalizedString("mapLayers:CustomAttach.LayerWithUrlExistsAsProjectSetting", { url: settingFromUrl.url, name: settingFromUrl.name });
179
+ core_frontend_1.IModelApp.notifications.outputMessage(new core_frontend_1.NotifyMessageDetails(core_frontend_1.OutputMessagePriority.Error, errorMessage));
180
+ return false;
181
+ }
182
+ else if (settingFromUrl) {
183
+ const infoMessage = core_frontend_1.IModelApp.localization.getLocalizedString("mapLayers:CustomAttach.LayerWithUrlExistsOverwriting", { url: settingFromUrl.url, oldName: settingFromUrl.name, newName: name });
184
+ core_frontend_1.IModelApp.notifications.outputMessage(new core_frontend_1.NotifyMessageDetails(core_frontend_1.OutputMessagePriority.Info, infoMessage));
185
+ await mapLayers_1.MapLayersUI.iTwinConfig.delete({
186
+ accessToken,
187
+ namespace: MapLayerPreferences._preferenceNamespace,
188
+ key: settingFromUrl.name,
189
+ iTwinId,
190
+ });
191
+ }
192
+ if (iModelId) { // delete any settings on model so user can update them if theres collisions
193
+ const settingOnIModelFromName = await mapLayers_1.MapLayersUI.iTwinConfig.get({
194
+ accessToken,
195
+ namespace: MapLayerPreferences._preferenceNamespace,
196
+ key: name,
197
+ iTwinId,
198
+ iModelId,
199
+ });
200
+ const settingFromUrlOnIModel = await MapLayerPreferences.getByUrl(url, iTwinId, iModelId);
201
+ if (settingOnIModelFromName) {
202
+ const infoMessage = core_frontend_1.IModelApp.localization.getLocalizedString("mapLayers:CustomAttach.LayerExistsOverwriting", { layer: settingOnIModelFromName.name });
203
+ core_frontend_1.IModelApp.notifications.outputMessage(new core_frontend_1.NotifyMessageDetails(core_frontend_1.OutputMessagePriority.Info, infoMessage));
204
+ await mapLayers_1.MapLayersUI.iTwinConfig.delete({
205
+ accessToken,
206
+ namespace: MapLayerPreferences._preferenceNamespace,
207
+ key: settingOnIModelFromName.name,
208
+ iTwinId,
209
+ iModelId,
210
+ });
211
+ }
212
+ if (settingFromUrlOnIModel) {
213
+ const infoMessage = core_frontend_1.IModelApp.localization.getLocalizedString("mapLayers:CustomAttach.LayerWithUrlExistsOverwriting", { url: settingFromUrlOnIModel.url, oldName: settingFromUrlOnIModel.name, newName: name });
214
+ core_frontend_1.IModelApp.notifications.outputMessage(new core_frontend_1.NotifyMessageDetails(core_frontend_1.OutputMessagePriority.Info, infoMessage));
215
+ await mapLayers_1.MapLayersUI.iTwinConfig.delete({
216
+ accessToken,
217
+ namespace: MapLayerPreferences._preferenceNamespace,
218
+ key: settingFromUrlOnIModel.name,
219
+ iTwinId,
220
+ iModelId,
221
+ });
222
+ }
223
+ }
224
+ return true;
225
+ }
226
+ /** Attempts to get a map layer based off a specific url.
227
+ * @param url
228
+ * @param iTwinId
229
+ * @param iModelId
230
+ */
231
+ static async getByUrl(url, iTwinId, iModelId) {
232
+ var _a;
233
+ if (!mapLayers_1.MapLayersUI.iTwinConfig)
234
+ return undefined;
235
+ const accessToken = undefined !== core_frontend_1.IModelApp.authorizationClient ? (await core_frontend_1.IModelApp.authorizationClient.getAccessToken()) : undefined;
236
+ const settingResponse = await mapLayers_1.MapLayersUI.iTwinConfig.get({
237
+ accessToken,
238
+ namespace: MapLayerPreferences._preferenceNamespace,
239
+ key: "",
240
+ iTwinId,
241
+ iModelId,
242
+ });
243
+ if (undefined === settingResponse || 0 === settingResponse.length)
244
+ return undefined;
245
+ let savedMapLayer;
246
+ (_a = settingResponse.settingsMap) === null || _a === void 0 ? void 0 : _a.forEach((savedLayer) => {
247
+ if (savedLayer.url === url) {
248
+ savedMapLayer = savedLayer;
249
+ }
250
+ });
251
+ return savedMapLayer;
252
+ }
253
+ /** Get all MapLayerSources from the user's preferences, iTwin setting and iModel settings.
254
+ * @param iTwinId id of the iTwin
255
+ * @param iModelId id of the iModel
256
+ * @throws if any of the calls to grab settings fail.
257
+ */
258
+ static async getSources(iTwinId, iModelId) {
259
+ if (!mapLayers_1.MapLayersUI.iTwinConfig)
260
+ return [];
261
+ const accessToken = undefined !== core_frontend_1.IModelApp.authorizationClient ? (await core_frontend_1.IModelApp.authorizationClient.getAccessToken()) : undefined;
262
+ const mapLayerList = [];
263
+ try {
264
+ const userResultByProject = await mapLayers_1.MapLayersUI.iTwinConfig.get({
265
+ accessToken,
266
+ namespace: MapLayerPreferences._preferenceNamespace,
267
+ key: "",
268
+ iTwinId,
269
+ });
270
+ if (undefined !== userResultByProject)
271
+ mapLayerList.push(userResultByProject);
272
+ }
273
+ catch (err) {
274
+ throw new Error(core_frontend_1.IModelApp.localization.getLocalizedString("mapLayers:CustomAttach.ErrorRetrieveUserProject", { errorMessage: err }));
275
+ }
276
+ try {
277
+ const userResultByIModel = await mapLayers_1.MapLayersUI.iTwinConfig.get({
278
+ accessToken,
279
+ namespace: MapLayerPreferences._preferenceNamespace,
280
+ key: "",
281
+ iTwinId,
282
+ iModelId,
283
+ });
284
+ if (undefined !== userResultByIModel)
285
+ mapLayerList.push(userResultByIModel);
286
+ }
287
+ catch (err) {
288
+ throw new Error(core_frontend_1.IModelApp.localization.getLocalizedString("mapLayers:CustomAttach.ErrorRetrieveUserProject", { errorMessage: err }));
289
+ }
290
+ const savedMapLayerSources = [];
291
+ for (const mapLayer of mapLayerList) {
292
+ mapLayer.forEach((savedLayer) => {
293
+ const mapLayerSource = core_frontend_1.MapLayerSource.fromJSON(savedLayer);
294
+ if (mapLayerSource)
295
+ savedMapLayerSources.push(mapLayerSource);
296
+ });
297
+ }
298
+ return savedMapLayerSources;
299
+ }
300
+ static get _preferenceNamespace() {
301
+ return "MapLayerSource-SettingsService";
302
+ }
303
+ }
304
+ exports.MapLayerPreferences = MapLayerPreferences;
305
+ /** Event raised whenever a source is added, replaced or removed:
306
+ * changeType : Type of changed occurred.
307
+ * oldSource : Source that was removed or replaced.
308
+ * newSource : Source that was added or replacement of oldSource.
309
+ *
310
+ * @see [[MapLayerSourceChangeType]]
311
+ */
312
+ MapLayerPreferences.onLayerSourceChanged = new core_bentley_1.BeEvent(); // Used to notify the frontend that it needs to update its list of available layers
313
313
  //# sourceMappingURL=MapLayerPreferences.js.map