@itwin/core-common 3.3.0-dev.9 → 3.4.0-dev.2

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 (310) hide show
  1. package/CHANGELOG.md +40 -1
  2. package/lib/cjs/AnalysisStyle.d.ts +7 -7
  3. package/lib/cjs/AnalysisStyle.d.ts.map +1 -1
  4. package/lib/cjs/AnalysisStyle.js.map +1 -1
  5. package/lib/cjs/BackgroundMapProvider.d.ts +2 -2
  6. package/lib/cjs/BackgroundMapProvider.js +1 -1
  7. package/lib/cjs/BackgroundMapProvider.js.map +1 -1
  8. package/lib/cjs/BackgroundMapSettings.d.ts +2 -2
  9. package/lib/cjs/BackgroundMapSettings.d.ts.map +1 -1
  10. package/lib/cjs/BackgroundMapSettings.js.map +1 -1
  11. package/lib/cjs/BriefcaseTypes.js.map +1 -1
  12. package/lib/cjs/ChangedEntities.d.ts +1 -1
  13. package/lib/cjs/ChangedEntities.js.map +1 -1
  14. package/lib/cjs/Code.d.ts +7 -7
  15. package/lib/cjs/Code.d.ts.map +1 -1
  16. package/lib/cjs/Code.js +5 -5
  17. package/lib/cjs/Code.js.map +1 -1
  18. package/lib/cjs/ColorDef.d.ts +2 -0
  19. package/lib/cjs/ColorDef.d.ts.map +1 -1
  20. package/lib/cjs/ColorDef.js +4 -0
  21. package/lib/cjs/ColorDef.js.map +1 -1
  22. package/lib/cjs/ContextRealityModel.d.ts +6 -6
  23. package/lib/cjs/ContextRealityModel.d.ts.map +1 -1
  24. package/lib/cjs/ContextRealityModel.js.map +1 -1
  25. package/lib/cjs/DisplayStyleSettings.d.ts +58 -57
  26. package/lib/cjs/DisplayStyleSettings.d.ts.map +1 -1
  27. package/lib/cjs/DisplayStyleSettings.js +23 -26
  28. package/lib/cjs/DisplayStyleSettings.js.map +1 -1
  29. package/lib/cjs/ElementProps.d.ts +6 -6
  30. package/lib/cjs/ElementProps.d.ts.map +1 -1
  31. package/lib/cjs/ElementProps.js.map +1 -1
  32. package/lib/cjs/EmphasizeElementsProps.d.ts +8 -8
  33. package/lib/cjs/EmphasizeElementsProps.d.ts.map +1 -1
  34. package/lib/cjs/EmphasizeElementsProps.js.map +1 -1
  35. package/lib/cjs/EntityProps.d.ts +2 -2
  36. package/lib/cjs/EntityProps.d.ts.map +1 -1
  37. package/lib/cjs/EntityProps.js.map +1 -1
  38. package/lib/cjs/Environment.d.ts +2 -2
  39. package/lib/cjs/Environment.d.ts.map +1 -1
  40. package/lib/cjs/Environment.js.map +1 -1
  41. package/lib/cjs/FeatureIndex.d.ts +0 -1
  42. package/lib/cjs/FeatureIndex.d.ts.map +1 -1
  43. package/lib/cjs/FeatureIndex.js +0 -1
  44. package/lib/cjs/FeatureIndex.js.map +1 -1
  45. package/lib/cjs/FeatureSymbology.d.ts +40 -9
  46. package/lib/cjs/FeatureSymbology.d.ts.map +1 -1
  47. package/lib/cjs/FeatureSymbology.js +41 -6
  48. package/lib/cjs/FeatureSymbology.js.map +1 -1
  49. package/lib/cjs/FeatureTable.d.ts +6 -2
  50. package/lib/cjs/FeatureTable.d.ts.map +1 -1
  51. package/lib/cjs/FeatureTable.js +26 -6
  52. package/lib/cjs/FeatureTable.js.map +1 -1
  53. package/lib/cjs/HiddenLine.d.ts +3 -3
  54. package/lib/cjs/HiddenLine.d.ts.map +1 -1
  55. package/lib/cjs/HiddenLine.js.map +1 -1
  56. package/lib/cjs/IModel.d.ts +9 -6
  57. package/lib/cjs/IModel.d.ts.map +1 -1
  58. package/lib/cjs/IModel.js.map +1 -1
  59. package/lib/cjs/IModelError.d.ts +3 -3
  60. package/lib/cjs/IModelError.d.ts.map +1 -1
  61. package/lib/cjs/IModelError.js +1 -2
  62. package/lib/cjs/IModelError.js.map +1 -1
  63. package/lib/cjs/LightSettings.d.ts +4 -4
  64. package/lib/cjs/LightSettings.d.ts.map +1 -1
  65. package/lib/cjs/LightSettings.js.map +1 -1
  66. package/lib/cjs/MapImagerySettings.d.ts +7 -7
  67. package/lib/cjs/MapImagerySettings.d.ts.map +1 -1
  68. package/lib/cjs/MapImagerySettings.js +3 -3
  69. package/lib/cjs/MapImagerySettings.js.map +1 -1
  70. package/lib/cjs/MapLayerSettings.d.ts +21 -14
  71. package/lib/cjs/MapLayerSettings.d.ts.map +1 -1
  72. package/lib/cjs/MapLayerSettings.js +6 -6
  73. package/lib/cjs/MapLayerSettings.js.map +1 -1
  74. package/lib/cjs/ModelProps.d.ts +1 -1
  75. package/lib/cjs/ModelProps.js.map +1 -1
  76. package/lib/cjs/PlanProjectionSettings.d.ts +4 -4
  77. package/lib/cjs/PlanProjectionSettings.d.ts.map +1 -1
  78. package/lib/cjs/PlanProjectionSettings.js.map +1 -1
  79. package/lib/cjs/PlanarClipMask.d.ts +11 -11
  80. package/lib/cjs/PlanarClipMask.d.ts.map +1 -1
  81. package/lib/cjs/PlanarClipMask.js.map +1 -1
  82. package/lib/cjs/RenderSchedule.d.ts +66 -8
  83. package/lib/cjs/RenderSchedule.d.ts.map +1 -1
  84. package/lib/cjs/RenderSchedule.js +228 -8
  85. package/lib/cjs/RenderSchedule.js.map +1 -1
  86. package/lib/cjs/RgbColor.d.ts +1 -0
  87. package/lib/cjs/RgbColor.d.ts.map +1 -1
  88. package/lib/cjs/RgbColor.js +4 -0
  89. package/lib/cjs/RgbColor.js.map +1 -1
  90. package/lib/cjs/RpcInterface.d.ts.map +1 -1
  91. package/lib/cjs/RpcInterface.js +91 -4
  92. package/lib/cjs/RpcInterface.js.map +1 -1
  93. package/lib/cjs/SpatialClassification.d.ts +9 -9
  94. package/lib/cjs/SpatialClassification.d.ts.map +1 -1
  95. package/lib/cjs/SpatialClassification.js +1 -1
  96. package/lib/cjs/SpatialClassification.js.map +1 -1
  97. package/lib/cjs/SubCategoryAppearance.d.ts +10 -10
  98. package/lib/cjs/SubCategoryAppearance.d.ts.map +1 -1
  99. package/lib/cjs/SubCategoryAppearance.js.map +1 -1
  100. package/lib/cjs/SubCategoryOverride.d.ts +6 -6
  101. package/lib/cjs/SubCategoryOverride.d.ts.map +1 -1
  102. package/lib/cjs/SubCategoryOverride.js.map +1 -1
  103. package/lib/cjs/ViewFlags.d.ts +3 -3
  104. package/lib/cjs/ViewFlags.d.ts.map +1 -1
  105. package/lib/cjs/ViewFlags.js.map +1 -1
  106. package/lib/cjs/ViewProps.d.ts +3 -1
  107. package/lib/cjs/ViewProps.d.ts.map +1 -1
  108. package/lib/cjs/ViewProps.js.map +1 -1
  109. package/lib/cjs/core-common.d.ts +7 -1
  110. package/lib/cjs/core-common.d.ts.map +1 -1
  111. package/lib/cjs/core-common.js +7 -1
  112. package/lib/cjs/core-common.js.map +1 -1
  113. package/lib/cjs/ipc/IpcSession.d.ts +24 -0
  114. package/lib/cjs/ipc/IpcSession.d.ts.map +1 -0
  115. package/lib/cjs/ipc/IpcSession.js +28 -0
  116. package/lib/cjs/ipc/IpcSession.js.map +1 -0
  117. package/lib/cjs/rpc/IModelReadRpcInterface.d.ts +4 -2
  118. package/lib/cjs/rpc/IModelReadRpcInterface.d.ts.map +1 -1
  119. package/lib/cjs/rpc/IModelReadRpcInterface.js +42 -2
  120. package/lib/cjs/rpc/IModelReadRpcInterface.js.map +1 -1
  121. package/lib/cjs/rpc/IModelTileRpcInterface.d.ts.map +1 -1
  122. package/lib/cjs/rpc/IModelTileRpcInterface.js +16 -2
  123. package/lib/cjs/rpc/IModelTileRpcInterface.js.map +1 -1
  124. package/lib/cjs/rpc/core/RpcControl.d.ts +2 -0
  125. package/lib/cjs/rpc/core/RpcControl.d.ts.map +1 -1
  126. package/lib/cjs/rpc/core/RpcControl.js +13 -1
  127. package/lib/cjs/rpc/core/RpcControl.js.map +1 -1
  128. package/lib/cjs/rpc/core/RpcInvocation.d.ts.map +1 -1
  129. package/lib/cjs/rpc/core/RpcInvocation.js +17 -4
  130. package/lib/cjs/rpc/core/RpcInvocation.js.map +1 -1
  131. package/lib/cjs/rpc/core/RpcProtocol.d.ts +6 -2
  132. package/lib/cjs/rpc/core/RpcProtocol.d.ts.map +1 -1
  133. package/lib/cjs/rpc/core/RpcProtocol.js.map +1 -1
  134. package/lib/cjs/rpc/core/RpcRequest.d.ts +11 -6
  135. package/lib/cjs/rpc/core/RpcRequest.d.ts.map +1 -1
  136. package/lib/cjs/rpc/core/RpcRequest.js +12 -14
  137. package/lib/cjs/rpc/core/RpcRequest.js.map +1 -1
  138. package/lib/cjs/rpc/core/RpcSessionInvocation.d.ts +11 -0
  139. package/lib/cjs/rpc/core/RpcSessionInvocation.d.ts.map +1 -0
  140. package/lib/cjs/rpc/core/RpcSessionInvocation.js +60 -0
  141. package/lib/cjs/rpc/core/RpcSessionInvocation.js.map +1 -0
  142. package/lib/cjs/rpc/web/WebAppRpcProtocol.d.ts +0 -5
  143. package/lib/cjs/rpc/web/WebAppRpcProtocol.d.ts.map +1 -1
  144. package/lib/cjs/rpc/web/WebAppRpcProtocol.js +0 -47
  145. package/lib/cjs/rpc/web/WebAppRpcProtocol.js.map +1 -1
  146. package/lib/cjs/rpc/web/WebAppRpcRequest.d.ts +2 -3
  147. package/lib/cjs/rpc/web/WebAppRpcRequest.d.ts.map +1 -1
  148. package/lib/cjs/rpc/web/WebAppRpcRequest.js +25 -20
  149. package/lib/cjs/rpc/web/WebAppRpcRequest.js.map +1 -1
  150. package/lib/cjs/tile/ElementGraphics.d.ts +4 -0
  151. package/lib/cjs/tile/ElementGraphics.d.ts.map +1 -1
  152. package/lib/cjs/tile/ElementGraphics.js.map +1 -1
  153. package/lib/cjs/tile/IModelTileIO.d.ts +2 -2
  154. package/lib/cjs/tile/IModelTileIO.js +2 -2
  155. package/lib/cjs/tile/IModelTileIO.js.map +1 -1
  156. package/lib/esm/AnalysisStyle.d.ts +7 -7
  157. package/lib/esm/AnalysisStyle.d.ts.map +1 -1
  158. package/lib/esm/AnalysisStyle.js.map +1 -1
  159. package/lib/esm/BackgroundMapProvider.d.ts +2 -2
  160. package/lib/esm/BackgroundMapProvider.js +1 -1
  161. package/lib/esm/BackgroundMapProvider.js.map +1 -1
  162. package/lib/esm/BackgroundMapSettings.d.ts +2 -2
  163. package/lib/esm/BackgroundMapSettings.d.ts.map +1 -1
  164. package/lib/esm/BackgroundMapSettings.js.map +1 -1
  165. package/lib/esm/BriefcaseTypes.js.map +1 -1
  166. package/lib/esm/ChangedEntities.d.ts +1 -1
  167. package/lib/esm/ChangedEntities.js.map +1 -1
  168. package/lib/esm/Code.d.ts +7 -7
  169. package/lib/esm/Code.d.ts.map +1 -1
  170. package/lib/esm/Code.js +5 -5
  171. package/lib/esm/Code.js.map +1 -1
  172. package/lib/esm/ColorDef.d.ts +2 -0
  173. package/lib/esm/ColorDef.d.ts.map +1 -1
  174. package/lib/esm/ColorDef.js +4 -0
  175. package/lib/esm/ColorDef.js.map +1 -1
  176. package/lib/esm/ContextRealityModel.d.ts +6 -6
  177. package/lib/esm/ContextRealityModel.d.ts.map +1 -1
  178. package/lib/esm/ContextRealityModel.js.map +1 -1
  179. package/lib/esm/DisplayStyleSettings.d.ts +58 -57
  180. package/lib/esm/DisplayStyleSettings.d.ts.map +1 -1
  181. package/lib/esm/DisplayStyleSettings.js +23 -26
  182. package/lib/esm/DisplayStyleSettings.js.map +1 -1
  183. package/lib/esm/ElementProps.d.ts +6 -6
  184. package/lib/esm/ElementProps.d.ts.map +1 -1
  185. package/lib/esm/ElementProps.js.map +1 -1
  186. package/lib/esm/EmphasizeElementsProps.d.ts +8 -8
  187. package/lib/esm/EmphasizeElementsProps.d.ts.map +1 -1
  188. package/lib/esm/EmphasizeElementsProps.js.map +1 -1
  189. package/lib/esm/EntityProps.d.ts +2 -2
  190. package/lib/esm/EntityProps.d.ts.map +1 -1
  191. package/lib/esm/EntityProps.js.map +1 -1
  192. package/lib/esm/Environment.d.ts +2 -2
  193. package/lib/esm/Environment.d.ts.map +1 -1
  194. package/lib/esm/Environment.js.map +1 -1
  195. package/lib/esm/FeatureIndex.d.ts +0 -1
  196. package/lib/esm/FeatureIndex.d.ts.map +1 -1
  197. package/lib/esm/FeatureIndex.js +0 -1
  198. package/lib/esm/FeatureIndex.js.map +1 -1
  199. package/lib/esm/FeatureSymbology.d.ts +40 -9
  200. package/lib/esm/FeatureSymbology.d.ts.map +1 -1
  201. package/lib/esm/FeatureSymbology.js +41 -6
  202. package/lib/esm/FeatureSymbology.js.map +1 -1
  203. package/lib/esm/FeatureTable.d.ts +6 -2
  204. package/lib/esm/FeatureTable.d.ts.map +1 -1
  205. package/lib/esm/FeatureTable.js +26 -6
  206. package/lib/esm/FeatureTable.js.map +1 -1
  207. package/lib/esm/HiddenLine.d.ts +3 -3
  208. package/lib/esm/HiddenLine.d.ts.map +1 -1
  209. package/lib/esm/HiddenLine.js.map +1 -1
  210. package/lib/esm/IModel.d.ts +9 -6
  211. package/lib/esm/IModel.d.ts.map +1 -1
  212. package/lib/esm/IModel.js.map +1 -1
  213. package/lib/esm/IModelError.d.ts +3 -3
  214. package/lib/esm/IModelError.d.ts.map +1 -1
  215. package/lib/esm/IModelError.js +1 -1
  216. package/lib/esm/IModelError.js.map +1 -1
  217. package/lib/esm/LightSettings.d.ts +4 -4
  218. package/lib/esm/LightSettings.d.ts.map +1 -1
  219. package/lib/esm/LightSettings.js.map +1 -1
  220. package/lib/esm/MapImagerySettings.d.ts +7 -7
  221. package/lib/esm/MapImagerySettings.d.ts.map +1 -1
  222. package/lib/esm/MapImagerySettings.js +3 -3
  223. package/lib/esm/MapImagerySettings.js.map +1 -1
  224. package/lib/esm/MapLayerSettings.d.ts +21 -14
  225. package/lib/esm/MapLayerSettings.d.ts.map +1 -1
  226. package/lib/esm/MapLayerSettings.js +6 -6
  227. package/lib/esm/MapLayerSettings.js.map +1 -1
  228. package/lib/esm/ModelProps.d.ts +1 -1
  229. package/lib/esm/ModelProps.js.map +1 -1
  230. package/lib/esm/PlanProjectionSettings.d.ts +4 -4
  231. package/lib/esm/PlanProjectionSettings.d.ts.map +1 -1
  232. package/lib/esm/PlanProjectionSettings.js.map +1 -1
  233. package/lib/esm/PlanarClipMask.d.ts +11 -11
  234. package/lib/esm/PlanarClipMask.d.ts.map +1 -1
  235. package/lib/esm/PlanarClipMask.js.map +1 -1
  236. package/lib/esm/RenderSchedule.d.ts +66 -8
  237. package/lib/esm/RenderSchedule.d.ts.map +1 -1
  238. package/lib/esm/RenderSchedule.js +229 -9
  239. package/lib/esm/RenderSchedule.js.map +1 -1
  240. package/lib/esm/RgbColor.d.ts +1 -0
  241. package/lib/esm/RgbColor.d.ts.map +1 -1
  242. package/lib/esm/RgbColor.js +4 -0
  243. package/lib/esm/RgbColor.js.map +1 -1
  244. package/lib/esm/RpcInterface.d.ts.map +1 -1
  245. package/lib/esm/RpcInterface.js +91 -4
  246. package/lib/esm/RpcInterface.js.map +1 -1
  247. package/lib/esm/SpatialClassification.d.ts +9 -9
  248. package/lib/esm/SpatialClassification.d.ts.map +1 -1
  249. package/lib/esm/SpatialClassification.js +1 -1
  250. package/lib/esm/SpatialClassification.js.map +1 -1
  251. package/lib/esm/SubCategoryAppearance.d.ts +10 -10
  252. package/lib/esm/SubCategoryAppearance.d.ts.map +1 -1
  253. package/lib/esm/SubCategoryAppearance.js.map +1 -1
  254. package/lib/esm/SubCategoryOverride.d.ts +6 -6
  255. package/lib/esm/SubCategoryOverride.d.ts.map +1 -1
  256. package/lib/esm/SubCategoryOverride.js.map +1 -1
  257. package/lib/esm/ViewFlags.d.ts +3 -3
  258. package/lib/esm/ViewFlags.d.ts.map +1 -1
  259. package/lib/esm/ViewFlags.js.map +1 -1
  260. package/lib/esm/ViewProps.d.ts +3 -1
  261. package/lib/esm/ViewProps.d.ts.map +1 -1
  262. package/lib/esm/ViewProps.js.map +1 -1
  263. package/lib/esm/core-common.d.ts +7 -1
  264. package/lib/esm/core-common.d.ts.map +1 -1
  265. package/lib/esm/core-common.js +7 -1
  266. package/lib/esm/core-common.js.map +1 -1
  267. package/lib/esm/ipc/IpcSession.d.ts +24 -0
  268. package/lib/esm/ipc/IpcSession.d.ts.map +1 -0
  269. package/lib/esm/ipc/IpcSession.js +24 -0
  270. package/lib/esm/ipc/IpcSession.js.map +1 -0
  271. package/lib/esm/rpc/IModelReadRpcInterface.d.ts +4 -2
  272. package/lib/esm/rpc/IModelReadRpcInterface.d.ts.map +1 -1
  273. package/lib/esm/rpc/IModelReadRpcInterface.js +41 -1
  274. package/lib/esm/rpc/IModelReadRpcInterface.js.map +1 -1
  275. package/lib/esm/rpc/IModelTileRpcInterface.d.ts.map +1 -1
  276. package/lib/esm/rpc/IModelTileRpcInterface.js +15 -1
  277. package/lib/esm/rpc/IModelTileRpcInterface.js.map +1 -1
  278. package/lib/esm/rpc/core/RpcControl.d.ts +2 -0
  279. package/lib/esm/rpc/core/RpcControl.d.ts.map +1 -1
  280. package/lib/esm/rpc/core/RpcControl.js +13 -1
  281. package/lib/esm/rpc/core/RpcControl.js.map +1 -1
  282. package/lib/esm/rpc/core/RpcInvocation.d.ts.map +1 -1
  283. package/lib/esm/rpc/core/RpcInvocation.js +18 -5
  284. package/lib/esm/rpc/core/RpcInvocation.js.map +1 -1
  285. package/lib/esm/rpc/core/RpcProtocol.d.ts +6 -2
  286. package/lib/esm/rpc/core/RpcProtocol.d.ts.map +1 -1
  287. package/lib/esm/rpc/core/RpcProtocol.js.map +1 -1
  288. package/lib/esm/rpc/core/RpcRequest.d.ts +11 -6
  289. package/lib/esm/rpc/core/RpcRequest.d.ts.map +1 -1
  290. package/lib/esm/rpc/core/RpcRequest.js +6 -8
  291. package/lib/esm/rpc/core/RpcRequest.js.map +1 -1
  292. package/lib/esm/rpc/core/RpcSessionInvocation.d.ts +11 -0
  293. package/lib/esm/rpc/core/RpcSessionInvocation.d.ts.map +1 -0
  294. package/lib/esm/rpc/core/RpcSessionInvocation.js +56 -0
  295. package/lib/esm/rpc/core/RpcSessionInvocation.js.map +1 -0
  296. package/lib/esm/rpc/web/WebAppRpcProtocol.d.ts +0 -5
  297. package/lib/esm/rpc/web/WebAppRpcProtocol.d.ts.map +1 -1
  298. package/lib/esm/rpc/web/WebAppRpcProtocol.js +0 -47
  299. package/lib/esm/rpc/web/WebAppRpcProtocol.js.map +1 -1
  300. package/lib/esm/rpc/web/WebAppRpcRequest.d.ts +2 -3
  301. package/lib/esm/rpc/web/WebAppRpcRequest.d.ts.map +1 -1
  302. package/lib/esm/rpc/web/WebAppRpcRequest.js +25 -20
  303. package/lib/esm/rpc/web/WebAppRpcRequest.js.map +1 -1
  304. package/lib/esm/tile/ElementGraphics.d.ts +4 -0
  305. package/lib/esm/tile/ElementGraphics.d.ts.map +1 -1
  306. package/lib/esm/tile/ElementGraphics.js.map +1 -1
  307. package/lib/esm/tile/IModelTileIO.d.ts +2 -2
  308. package/lib/esm/tile/IModelTileIO.js +2 -2
  309. package/lib/esm/tile/IModelTileIO.js.map +1 -1
  310. package/package.json +13 -13
@@ -1 +1 @@
1
- {"version":3,"file":"MapLayerSettings.js","sourceRoot":"","sources":["../../src/MapLayerSettings.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/** @packageDocumentation\r\n * @module DisplayStyles\r\n */\r\n\r\nimport { assert, Id64String } from \"@itwin/core-bentley\";\r\nimport { BackgroundMapProvider, BackgroundMapProviderProps, BackgroundMapType } from \"./BackgroundMapProvider\";\r\nimport { DeprecatedBackgroundMapProps } from \"./BackgroundMapSettings\";\r\n\r\n/** @beta */\r\nexport type SubLayerId = string | number;\r\n\r\n/** JSON representation of the settings associated with a map sublayer included within a [[MapLayerProps]].\r\n * A map sub layer represents a set of objects within the layer that can be controlled separately. These\r\n * are produced only from map servers that produce images on demand and are not supported by tiled (cached) servers.\r\n * @see [[MapLayerProps]]\r\n * @beta\r\n */\r\nexport interface MapSubLayerProps {\r\n name: string;\r\n title?: string;\r\n visible?: boolean;\r\n id?: SubLayerId;\r\n parent?: SubLayerId;\r\n children?: SubLayerId[];\r\n}\r\n\r\n/** Normalized representation of a [[MapSubLayerProps]] for which values\r\n * have been validated and default values have been applied where explicit values not defined.\r\n * A map sub layer represents a set of objects within the layer that can be controlled separately. These\r\n * are produced only from map servers that produce images on demand and are not supported by tiled (cached) servers.\r\n * This class can represent a hierarchy, in this case a sub layer is visible only if all its ancestors are also visible.\r\n * @see [[MapLayerSettings]]\r\n * @beta\r\n */\r\nexport class MapSubLayerSettings {\r\n /** Typically Name is a single word used for machine-to-machine communication while the Title is for the benefit of humans (WMS) */\r\n public readonly name: string;\r\n /** Title. */\r\n public readonly title?: string;\r\n /** If true the sub layer is visible. If part of a hierarchy, a sub layer is visible only if its ancestors are also visible. */\r\n public readonly visible: boolean;\r\n /** A unique string or number that may be used to identify the sub layer (ArcGIS) */\r\n public readonly id: SubLayerId;\r\n /** One or more sublayer children */\r\n public readonly children?: SubLayerId[];\r\n /** sublayer parent. */\r\n public readonly parent?: SubLayerId;\r\n\r\n constructor(name: string, title?: string, visible?: boolean, id?: SubLayerId, parent?: SubLayerId, children?: SubLayerId[]) {\r\n this.name = name;\r\n this.title = title;\r\n this.visible = visible !== undefined && visible;\r\n this.id = (id === undefined) ? this.name : id;\r\n this.parent = parent;\r\n this.children = children;\r\n }\r\n\r\n /** Construct from JSON, performing validation and applying default values for undefined fields. */\r\n public static fromJSON(json: MapSubLayerProps): MapSubLayerSettings {\r\n return new MapSubLayerSettings(json.name, json.title, json.visible, (json.id === json.name) ? undefined : json.id, json.parent, json.children);\r\n }\r\n\r\n public toJSON(): MapSubLayerProps {\r\n const props: MapSubLayerProps = { name: this.name, visible: this.visible };\r\n\r\n if (undefined !== this.id && this.id !== this.name)\r\n props.id = this.id;\r\n\r\n if (undefined !== this.title)\r\n props.title = this.title;\r\n\r\n if (this.children)\r\n props.children = [...this.children];\r\n\r\n if (undefined !== this.parent)\r\n props.parent = this.parent;\r\n\r\n return props;\r\n }\r\n\r\n /** Creating a copy of this MapSubLayer, optionally modifying some if its properties */\r\n public clone(changedProps: Partial<MapSubLayerProps>): MapSubLayerSettings {\r\n if (undefined === changedProps)\r\n return this;\r\n\r\n const props = {\r\n name: undefined !== changedProps.name ? changedProps.name : this.name,\r\n id: undefined !== changedProps.id ? changedProps.id : this.id,\r\n visible: undefined !== changedProps.visible ? changedProps.visible : this.visible,\r\n parent: undefined !== changedProps.parent ? changedProps.parent : this.parent,\r\n children: undefined !== changedProps.children ? changedProps.children.slice() : this.children?.slice(),\r\n title: undefined !== changedProps.title ? changedProps.title : this.title,\r\n };\r\n return MapSubLayerSettings.fromJSON(props)!;\r\n }\r\n\r\n /** @internal */\r\n public displayMatches(other: MapSubLayerSettings): boolean {\r\n return this.name === other.name && this.visible === other.visible;\r\n }\r\n\r\n /** return true if this sublayer is named. */\r\n public get isNamed(): boolean { return this.name.length > 0; }\r\n\r\n /** return true if this sublayer is a leaf (has no children) */\r\n public get isLeaf(): boolean { return this.children === undefined || this.children.length === 0; }\r\n\r\n /** return true if this sublayer is an unnamed group */\r\n public get isUnnamedGroup(): boolean { return !this.isLeaf && !this.isNamed; }\r\n\r\n /** return a string representing this sublayer id (converting to string if underlying id is number) */\r\n public get idString(): string { return (typeof this.id === \"number\") ? this.id.toString(10) : this.id; }\r\n}\r\n\r\n/** JSON representation of properties common to both [[ImageMapLayerProps]] and [[ModelMapLayerProps]].\r\n * @see [[MapImageryProps]]\r\n * @beta\r\n */\r\nexport interface CommonMapLayerProps {\r\n /** Controls visibility of layer. Defaults to 'true'. */\r\n visible?: boolean;\r\n\r\n /** A user-friendly name for the layer. */\r\n name: string;\r\n /** A transparency value from 0.0 (fully opaque) to 1.0 (fully transparent) to apply to map graphics when drawing,\r\n * or false to indicate the transparency should not be overridden.\r\n * Default value: 0.\r\n */\r\n transparency?: number;\r\n /** True to indicate background is transparent.\r\n * Default: true.\r\n */\r\n transparentBackground?: boolean;\r\n}\r\n\r\n/** JSON representation of an [[ImageMapLayerSettings]].\r\n * @see [[MapImagerySettings]].\r\n * @beta\r\n */\r\nexport interface ImageMapLayerProps extends CommonMapLayerProps {\r\n /** URL */\r\n url: string;\r\n /** Identifies the map layers source.*/\r\n formatId: string;\r\n /** Source layers. If undefined all layers are displayed. */\r\n subLayers?: MapSubLayerProps[];\r\n /** Access Key for the Layer, like a subscription key or access token.\r\n * ###TODO This does not belong in the props object. It should never be persisted.\r\n */\r\n accessKey?: MapLayerKey;\r\n\r\n /** @internal */\r\n modelId?: never;\r\n}\r\n\r\n/** JSON representation of a [[ModelMapLayerSettings]].\r\n * @see [[MapImagerySettings]].\r\n * @beta\r\n */\r\nexport interface ModelMapLayerProps extends CommonMapLayerProps {\r\n /** The Id of the [GeometricModel]($backend) containing the geometry to be drawn by the layer. */\r\n modelId: Id64String;\r\n\r\n /** @internal */\r\n url?: never;\r\n /** @internal */\r\n formatId?: never;\r\n /** @internal */\r\n subLayers?: never;\r\n /** @internal */\r\n accessKey?: never;\r\n}\r\n\r\n/** JSON representation of a [[MapLayerSettings]].\r\n * @see [[MapImagerySettings]].\r\n * @beta\r\n */\r\nexport type MapLayerProps = ImageMapLayerProps | ModelMapLayerProps;\r\n\r\n/**\r\n * stores key-value pair to be added to all requests made involving map layer.\r\n * @beta\r\n */\r\nexport interface MapLayerKey {\r\n key: string;\r\n value: string;\r\n}\r\n\r\n/** Abstract base class for normalized representation of a [[MapLayerProps]] for which values have been validated and default values have been applied where explicit values not defined.\r\n * This class is extended by [[ImageMapLayerSettings]] and [ModelMapLayerSettings]] to create the settings for image and model based layers.\r\n * One or more map layers may be included within [[MapImagerySettings]] object.\r\n * @see [[MapImagerySettings]]\r\n * @beta\r\n */\r\nexport abstract class MapLayerSettings {\r\n public readonly visible: boolean;\r\n\r\n public readonly name: string;\r\n public readonly transparency: number;\r\n public readonly transparentBackground: boolean;\r\n public abstract get allSubLayersInvisible(): boolean;\r\n public abstract clone(changedProps: Partial<MapLayerProps>): MapLayerSettings;\r\n public abstract toJSON(): MapLayerProps;\r\n\r\n /** @internal */\r\n protected constructor(name: string, visible = true, transparency: number = 0, transparentBackground = true) {\r\n this.name = name;\r\n this.visible = visible;\r\n this.transparentBackground = transparentBackground;\r\n this.transparency = transparency;\r\n }\r\n\r\n /** Create a map layer settings from its JSON representation. */\r\n public static fromJSON(props: MapLayerProps): MapLayerSettings {\r\n return undefined !== props.modelId ? ModelMapLayerSettings.fromJSON(props) : ImageMapLayerSettings.fromJSON(props);\r\n }\r\n\r\n /** @internal */\r\n protected _toJSON(): CommonMapLayerProps {\r\n const props: CommonMapLayerProps = {\r\n name: this.name,\r\n visible: this.visible,\r\n };\r\n\r\n if (0 !== this.transparency)\r\n props.transparency = this.transparency;\r\n\r\n if (this.transparentBackground === false)\r\n props.transparentBackground = this.transparentBackground;\r\n\r\n return props;\r\n }\r\n\r\n /** @internal */\r\n protected cloneProps(changedProps: Partial<MapLayerProps>): CommonMapLayerProps {\r\n return {\r\n name: undefined !== changedProps.name ? changedProps.name : this.name,\r\n visible: undefined !== changedProps.visible ? changedProps.visible : this.visible,\r\n transparency: undefined !== changedProps.transparency ? changedProps.transparency : this.transparency,\r\n transparentBackground: undefined !== changedProps.transparentBackground ? changedProps.transparentBackground : this.transparentBackground,\r\n };\r\n }\r\n\r\n /** @internal */\r\n public displayMatches(other: MapLayerSettings): boolean {\r\n return this.name === other.name && this.visible === other.visible && this.transparency === other.transparency && this.transparentBackground === other.transparentBackground;\r\n }\r\n\r\n /** Return a unique string identifying the layers source... The URL for image layer or modelID for model layer */\r\n public abstract get source(): string;\r\n\r\n /** @internal */\r\n public matchesNameAndSource(name: string, source: string): boolean {\r\n return this.name === name && this.source === source;\r\n }\r\n}\r\n\r\n/** Normalized representation of a [[ImageMapLayerProps]] for which values have been validated and default values have been applied where explicit values not defined.\r\n * Image map layers are created from servers that produce images that represent map tiles. Map layers map also be represented by models.\r\n * One or more map layers may be included within [[MapImagerySettings]] object.\r\n * @see [[MapImagerySettings]]\r\n * @see [[ModelMapLayerSettings]] for model based map layer settings.\r\n * @beta\r\n */\r\nexport class ImageMapLayerSettings extends MapLayerSettings {\r\n public readonly formatId: string;\r\n public readonly url: string;\r\n public userName?: string;\r\n public password?: string;\r\n public accessKey?: MapLayerKey;\r\n public readonly subLayers: MapSubLayerSettings[];\r\n public override get source(): string { return this.url; }\r\n\r\n /** @internal */\r\n protected constructor(props: ImageMapLayerProps) {\r\n const transparentBackground = props.transparentBackground ?? true;\r\n super(props.name, props.visible, props.transparency, transparentBackground);\r\n\r\n this.formatId = props.formatId;\r\n this.url = props.url;\r\n this.accessKey = props.accessKey;\r\n this.subLayers = [];\r\n if (!props.subLayers)\r\n return;\r\n\r\n for (const subLayerProps of props.subLayers) {\r\n const subLayer = MapSubLayerSettings.fromJSON(subLayerProps);\r\n if (subLayer)\r\n this.subLayers.push(subLayer);\r\n }\r\n }\r\n\r\n public static override fromJSON(props: ImageMapLayerProps): ImageMapLayerSettings {\r\n return new this(props);\r\n }\r\n\r\n /** return JSON representation of this MapLayerSettings object */\r\n public override toJSON(): ImageMapLayerProps {\r\n const props = super._toJSON() as ImageMapLayerProps;\r\n props.url = this.url;\r\n props.formatId = this.formatId;\r\n\r\n if (this.subLayers.length > 0)\r\n props.subLayers = this.subLayers.map((x) => x.toJSON());\r\n\r\n return props;\r\n }\r\n\r\n /** Create a copy of this MapLayerSettings, optionally modifying some of its properties.\r\n * @param changedProps JSON representation of the properties to change.\r\n * @returns A MapLayerSettings with all of its properties set to match those of `this`, except those explicitly defined in `changedProps`.\r\n */\r\n public clone(changedProps: Partial<ImageMapLayerProps>): ImageMapLayerSettings {\r\n const clone = ImageMapLayerSettings.fromJSON(this.cloneProps(changedProps));\r\n\r\n // Clone members not part of MapLayerProps\r\n clone.userName = this.userName;\r\n clone.password = this.password;\r\n clone.accessKey = this.accessKey;\r\n\r\n return clone;\r\n }\r\n\r\n /** @internal */\r\n protected override cloneProps(changedProps: Partial<ImageMapLayerProps>): ImageMapLayerProps {\r\n const props = super.cloneProps(changedProps) as ImageMapLayerProps;\r\n\r\n props.formatId = changedProps.formatId ?? this.formatId;\r\n props.url = changedProps.url ?? this.url;\r\n props.accessKey = changedProps.accessKey ?? this.accessKey;\r\n props.subLayers = changedProps.subLayers ?? this.subLayers;\r\n\r\n return props;\r\n }\r\n\r\n /** @internal */\r\n public override displayMatches(other: MapLayerSettings): boolean {\r\n if (! (other instanceof ImageMapLayerSettings) || !super.displayMatches(other))\r\n return false;\r\n\r\n if (this.userName !== other.userName || this.password !== other.password || this.subLayers.length !== other.subLayers.length) {\r\n return false;\r\n }\r\n\r\n for (let i = 0; i < this.subLayers.length; i++)\r\n if (!this.subLayers[i].displayMatches(other.subLayers[i]))\r\n return false;\r\n\r\n return true;\r\n }\r\n\r\n /** Return a sublayer matching id -- or undefined if not found */\r\n public subLayerById(id?: SubLayerId): MapSubLayerSettings | undefined {\r\n return id === undefined ? undefined : this.subLayers.find((subLayer) => subLayer.id === id);\r\n }\r\n\r\n private hasInvisibleAncestors(subLayer?: MapSubLayerSettings): boolean {\r\n if (!subLayer || !subLayer.parent)\r\n return false;\r\n\r\n const parent = this.subLayerById(subLayer.parent);\r\n if (!parent)\r\n return false;\r\n\r\n // Visibility of named group has no impact on the visibility of children (only unnamed group does)\r\n // i.e For WMS, its should be possible to request a child layer when its parent is not visible (if the parent is also named)\r\n return (!parent.visible && !parent.isNamed) || this.hasInvisibleAncestors(parent);\r\n }\r\n\r\n /** Return true if sublayer is visible -- testing ancestors for visibility if they exist. */\r\n public isSubLayerVisible(subLayer: MapSubLayerSettings): boolean {\r\n if (!subLayer.visible)\r\n return false;\r\n\r\n return !this.hasInvisibleAncestors(subLayer);\r\n }\r\n\r\n /** Return true if all sublayers are invisible. */\r\n public get allSubLayersInvisible(): boolean {\r\n if (this.subLayers.length === 0)\r\n return false;\r\n\r\n return this.subLayers.every((subLayer) => (subLayer.isUnnamedGroup || !this.isSubLayerVisible(subLayer)));\r\n }\r\n\r\n /** Return the children for a sublayer */\r\n public getSubLayerChildren(subLayer: MapSubLayerSettings): MapSubLayerSettings[] | undefined {\r\n if (!subLayer.children)\r\n return undefined;\r\n\r\n const children = new Array<MapSubLayerSettings>();\r\n subLayer.children.forEach((childId) => {\r\n const child = this.subLayerById(childId);\r\n if (child !== undefined)\r\n children.push(child);\r\n });\r\n\r\n return children;\r\n }\r\n\r\n /** @internal */\r\n protected static mapTypeName(type: BackgroundMapType) { // TBD.. Localization.\r\n switch (type) {\r\n case BackgroundMapType.Aerial:\r\n return \"Aerial Imagery\";\r\n default:\r\n case BackgroundMapType.Hybrid:\r\n return \"Aerial Imagery with labels\";\r\n case BackgroundMapType.Street:\r\n return \"Streets\";\r\n }\r\n }\r\n\r\n public setCredentials(userName?: string, password?: string) {\r\n this.userName = userName;\r\n this.password = password;\r\n }\r\n}\r\n\r\n/** Normalized representation of a [[ModelMapLayerProps]] for which values have been validated and default values have been applied where explicit values not defined.\r\n * Model map layers are produced from models, typically from two dimensional geometry that may originate in a GIS system.\r\n * One or more map layers may be included within [[MapImagerySettings]] object.\r\n * @see [[MapImagerySettings]]\r\n * @see [[ImageMapLayerSettings]] for image based map layer settings.\r\n * @beta\r\n */\r\nexport class ModelMapLayerSettings extends MapLayerSettings {\r\n public readonly modelId: Id64String;\r\n public override get source(): string { return this.modelId; }\r\n\r\n /** @internal */\r\n protected constructor(modelId: Id64String, name: string, visible = true,\r\n transparency: number = 0, transparentBackground = true) {\r\n super(name, visible, transparency, transparentBackground);\r\n this.modelId = modelId;\r\n }\r\n\r\n /** Construct from JSON, performing validation and applying default values for undefined fields. */\r\n public static override fromJSON(json: ModelMapLayerProps): ModelMapLayerSettings {\r\n const transparentBackground = (json.transparentBackground === undefined) ? true : json.transparentBackground;\r\n return new this(json.modelId, json.name, json.visible, json.transparency, transparentBackground);\r\n }\r\n\r\n /** return JSON representation of this MapLayerSettings object */\r\n public override toJSON(): ModelMapLayerProps {\r\n const props = super._toJSON() as ModelMapLayerProps;\r\n props.modelId = this.modelId;\r\n return props;\r\n }\r\n\r\n /** Create a copy of this MapLayerSettings, optionally modifying some of its properties.\r\n * @param changedProps JSON representation of the properties to change.\r\n * @returns A MapLayerSettings with all of its properties set to match those of `this`, except those explicitly defined in `changedProps`.\r\n */\r\n public clone(changedProps: Partial<ModelMapLayerProps>): ModelMapLayerSettings {\r\n return ModelMapLayerSettings.fromJSON(this.cloneProps(changedProps));\r\n }\r\n\r\n /** @internal */\r\n protected override cloneProps(changedProps: Partial<ModelMapLayerProps>): ModelMapLayerProps {\r\n const props = super.cloneProps(changedProps) as ModelMapLayerProps;\r\n props.modelId = changedProps.modelId ?? this.modelId;\r\n return props;\r\n }\r\n\r\n /** @internal */\r\n public override displayMatches(other: MapLayerSettings): boolean {\r\n if (!(other instanceof ModelMapLayerSettings) || !super.displayMatches(other))\r\n return false;\r\n\r\n return this.modelId === other.modelId;\r\n }\r\n\r\n /** Return true if all sublayers are invisible (always false as model layers do not include sublayers). */\r\n public get allSubLayersInvisible(): boolean {\r\n return false;\r\n }\r\n}\r\n\r\n/** JSON representation of a [[BaseMapLayerSettings]].\r\n * @beta\r\n */\r\nexport interface BaseMapLayerProps extends ImageMapLayerProps {\r\n provider?: BackgroundMapProviderProps;\r\n}\r\n\r\n/** A [[ImageMapLayerSettings]] that can serve as the base layer for a [[MapImagerySettings]].\r\n * The base layer supports all of the same options as any other layer, but also allows for simplified configuration based\r\n * on a small set of known supported [[BackgroundMapProvider]]s like [Bing Maps](https://www.microsoft.com/en-us/maps).\r\n * If the base layer was configured from such a provider, that information will be preserved and can be queried; this allows\r\n * the imagery provider and/or type to be easily modified.\r\n * @see [[MapImagerySettings.backgroundBase]].\r\n * @beta\r\n */\r\nexport class BaseMapLayerSettings extends ImageMapLayerSettings {\r\n private _provider?: BackgroundMapProvider;\r\n\r\n /** The provider from which this base layer was configured, if any. */\r\n public get provider(): BackgroundMapProvider | undefined { return this._provider; }\r\n\r\n /** Create a base layer from its JSON representation.\r\n * TODO: This, MapLayerSettings.fromJSON, and MapSubLayerSettings.fromJSON should never return undefined.\r\n * That means they should not accept undefined for props and should define props such that it fully describes the\r\n * layer - e.g., url and name must be defined.\r\n */\r\n public static override fromJSON(props: BaseMapLayerProps): BaseMapLayerSettings {\r\n const settings = super.fromJSON(props);\r\n assert(settings instanceof BaseMapLayerSettings);\r\n if (props.provider)\r\n settings._provider = BackgroundMapProvider.fromJSON(props.provider);\r\n\r\n return settings;\r\n }\r\n\r\n /** Convert this layer to its JSON representation. */\r\n public override toJSON(): BaseMapLayerProps {\r\n const props = super.toJSON() as BaseMapLayerProps;\r\n if (this.provider)\r\n props.provider = this.provider.toJSON();\r\n\r\n return props;\r\n }\r\n\r\n /** @internal */\r\n public override cloneProps(changedProps: Partial<BaseMapLayerProps>): BaseMapLayerProps {\r\n const props = super.cloneProps(changedProps) as BaseMapLayerProps;\r\n\r\n if (changedProps.provider)\r\n props.provider = changedProps.provider;\r\n else if (this.provider)\r\n props.provider = this.provider.toJSON();\r\n\r\n return props;\r\n }\r\n\r\n /** Create a copy of this layer. */\r\n public override clone(changedProps: Partial<BaseMapLayerProps>): BaseMapLayerSettings {\r\n const prevUrl = this.url;\r\n const clone = BaseMapLayerSettings.fromJSON(this.cloneProps(changedProps))!;\r\n\r\n if (this.provider && prevUrl !== this.url)\r\n clone._provider = undefined;\r\n\r\n return clone;\r\n }\r\n\r\n /** Create a base layer from a BackgroundMapProvider. */\r\n public static fromProvider(provider: BackgroundMapProvider, options?: { invisible?: boolean, transparency?: number }): BaseMapLayerSettings {\r\n let formatId: string, url: string, name: string;\r\n switch (provider.name) {\r\n case \"BingProvider\":\r\n default:\r\n formatId = \"BingMaps\";\r\n\r\n let imagerySet;\r\n switch (provider.type) {\r\n case BackgroundMapType.Street:\r\n imagerySet = \"Road\";\r\n break;\r\n case BackgroundMapType.Aerial:\r\n imagerySet = \"Aerial\";\r\n break;\r\n case BackgroundMapType.Hybrid:\r\n default:\r\n imagerySet = \"AerialWithLabels\";\r\n break;\r\n }\r\n\r\n name = `Bing Maps: ${ImageMapLayerSettings.mapTypeName(provider.type)}`;\r\n url = `https://dev.virtualearth.net/REST/v1/Imagery/Metadata/${imagerySet}?o=json&incl=ImageryProviders&key={bingKey}`;\r\n break;\r\n\r\n case \"MapBoxProvider\":\r\n formatId = \"MapboxImagery\";\r\n name = `MapBox: ${ImageMapLayerSettings.mapTypeName(provider.type)}`;\r\n switch (provider.type) {\r\n case BackgroundMapType.Street:\r\n url = \"https://api.mapbox.com/styles/v1/mapbox/streets-v11/tiles/\";\r\n break;\r\n case BackgroundMapType.Aerial:\r\n url = \"https://api.mapbox.com/styles/v1/mapbox/satellite-v9/tiles/\";\r\n break;\r\n case BackgroundMapType.Hybrid:\r\n url = \"https://api.mapbox.com/styles/v1/mapbox/satellite-streets-v11/tiles/\";\r\n break;\r\n }\r\n\r\n break;\r\n }\r\n\r\n const settings = super.fromJSON({\r\n name,\r\n formatId,\r\n url,\r\n transparentBackground: false,\r\n visible: !options?.invisible,\r\n transparency: options?.transparency,\r\n });\r\n\r\n assert(undefined !== settings);\r\n assert(settings instanceof BaseMapLayerSettings);\r\n\r\n settings._provider = provider;\r\n return settings;\r\n }\r\n\r\n /** @internal */\r\n public static fromBackgroundMapProps(props: DeprecatedBackgroundMapProps): BaseMapLayerSettings {\r\n return this.fromProvider(BackgroundMapProvider.fromBackgroundMapProps(props));\r\n }\r\n\r\n /** @alpha */\r\n public cloneWithProvider(provider: BackgroundMapProvider): BaseMapLayerSettings {\r\n return BaseMapLayerSettings.fromProvider(provider, { invisible: !this.visible, transparency: this.transparency });\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"MapLayerSettings.js","sourceRoot":"","sources":["../../src/MapLayerSettings.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/** @packageDocumentation\r\n * @module MapLayers\r\n */\r\n\r\nimport { assert, Id64String } from \"@itwin/core-bentley\";\r\nimport { BackgroundMapProvider, BackgroundMapProviderProps, BackgroundMapType } from \"./BackgroundMapProvider\";\r\nimport { DeprecatedBackgroundMapProps } from \"./BackgroundMapSettings\";\r\n\r\n/** The current set of supported map layer formats.\r\n * In order to be displayed, a corresponding format must have been registered in the [MapLayerFormatRegistry]($frontend)\r\n * @public\r\n */\r\nexport type ImageryMapLayerFormatId = \"ArcGIS\" | \"BingMaps\" | \"MapboxImagery\" | \"TileURL\" | \"WMS\" | \"WMTS\";\r\n\r\n/** @public */\r\nexport type SubLayerId = string | number;\r\n\r\n/** JSON representation of the settings associated with a map sublayer included within a [[MapLayerProps]].\r\n * A map sub layer represents a set of objects within the layer that can be controlled separately. These\r\n * are produced only from map servers that produce images on demand and are not supported by tiled (cached) servers.\r\n * @see [[MapLayerProps]]\r\n * @public\r\n */\r\nexport interface MapSubLayerProps {\r\n name: string;\r\n title?: string;\r\n visible?: boolean;\r\n id?: SubLayerId;\r\n parent?: SubLayerId;\r\n children?: SubLayerId[];\r\n}\r\n\r\n/** Normalized representation of a [[MapSubLayerProps]] for which values\r\n * have been validated and default values have been applied where explicit values not defined.\r\n * A map sub layer represents a set of objects within the layer that can be controlled separately. These\r\n * are produced only from map servers that produce images on demand and are not supported by tiled (cached) servers.\r\n * This class can represent a hierarchy, in this case a sub layer is visible only if all its ancestors are also visible.\r\n * @see [[MapLayerSettings]]\r\n * @public\r\n */\r\nexport class MapSubLayerSettings {\r\n /** Typically Name is a single word used for machine-to-machine communication while the Title is for the benefit of humans (WMS) */\r\n public readonly name: string;\r\n /** Title. */\r\n public readonly title?: string;\r\n /** If true the sub layer is visible. If part of a hierarchy, a sub layer is visible only if its ancestors are also visible. */\r\n public readonly visible: boolean;\r\n /** A unique string or number that may be used to identify the sub layer (ArcGIS) */\r\n public readonly id: SubLayerId;\r\n /** One or more sublayer children */\r\n public readonly children?: SubLayerId[];\r\n /** sublayer parent. */\r\n public readonly parent?: SubLayerId;\r\n\r\n constructor(name: string, title?: string, visible?: boolean, id?: SubLayerId, parent?: SubLayerId, children?: SubLayerId[]) {\r\n this.name = name;\r\n this.title = title;\r\n this.visible = visible !== undefined && visible;\r\n this.id = (id === undefined) ? this.name : id;\r\n this.parent = parent;\r\n this.children = children;\r\n }\r\n\r\n /** Construct from JSON, performing validation and applying default values for undefined fields. */\r\n public static fromJSON(json: MapSubLayerProps): MapSubLayerSettings {\r\n return new MapSubLayerSettings(json.name, json.title, json.visible, (json.id === json.name) ? undefined : json.id, json.parent, json.children);\r\n }\r\n\r\n public toJSON(): MapSubLayerProps {\r\n const props: MapSubLayerProps = { name: this.name, visible: this.visible };\r\n\r\n if (undefined !== this.id && this.id !== this.name)\r\n props.id = this.id;\r\n\r\n if (undefined !== this.title)\r\n props.title = this.title;\r\n\r\n if (this.children)\r\n props.children = [...this.children];\r\n\r\n if (undefined !== this.parent)\r\n props.parent = this.parent;\r\n\r\n return props;\r\n }\r\n\r\n /** Creating a copy of this MapSubLayer, optionally modifying some if its properties */\r\n public clone(changedProps: Partial<MapSubLayerProps>): MapSubLayerSettings {\r\n if (undefined === changedProps)\r\n return this;\r\n\r\n const props = {\r\n name: undefined !== changedProps.name ? changedProps.name : this.name,\r\n id: undefined !== changedProps.id ? changedProps.id : this.id,\r\n visible: undefined !== changedProps.visible ? changedProps.visible : this.visible,\r\n parent: undefined !== changedProps.parent ? changedProps.parent : this.parent,\r\n children: undefined !== changedProps.children ? changedProps.children.slice() : this.children?.slice(),\r\n title: undefined !== changedProps.title ? changedProps.title : this.title,\r\n };\r\n return MapSubLayerSettings.fromJSON(props)!;\r\n }\r\n\r\n /** @internal */\r\n public displayMatches(other: MapSubLayerSettings): boolean {\r\n return this.name === other.name && this.visible === other.visible;\r\n }\r\n\r\n /** return true if this sublayer is named. */\r\n public get isNamed(): boolean { return this.name.length > 0; }\r\n\r\n /** return true if this sublayer is a leaf (has no children) */\r\n public get isLeaf(): boolean { return this.children === undefined || this.children.length === 0; }\r\n\r\n /** return true if this sublayer is an unnamed group */\r\n public get isUnnamedGroup(): boolean { return !this.isLeaf && !this.isNamed; }\r\n\r\n /** return a string representing this sublayer id (converting to string if underlying id is number) */\r\n public get idString(): string { return (typeof this.id === \"number\") ? this.id.toString(10) : this.id; }\r\n}\r\n\r\n/** JSON representation of properties common to both [[ImageMapLayerProps]] and [[ModelMapLayerProps]].\r\n * @see [[MapImageryProps]]\r\n * @public\r\n */\r\nexport interface CommonMapLayerProps {\r\n /** Controls visibility of layer. Defaults to 'true'. */\r\n visible?: boolean;\r\n\r\n /** A user-friendly name for the layer. */\r\n name: string;\r\n /** A transparency value from 0.0 (fully opaque) to 1.0 (fully transparent) to apply to map graphics when drawing,\r\n * or false to indicate the transparency should not be overridden.\r\n * Default value: 0.\r\n */\r\n transparency?: number;\r\n /** True to indicate background is transparent.\r\n * Default: true.\r\n */\r\n transparentBackground?: boolean;\r\n}\r\n\r\n/** JSON representation of an [[ImageMapLayerSettings]].\r\n * @see [[MapImagerySettings]].\r\n * @see [[ImageryMapLayerFormatId]].\r\n * @public\r\n */\r\nexport interface ImageMapLayerProps extends CommonMapLayerProps {\r\n /** URL */\r\n url: string;\r\n /** Identifies the map layers source.*/\r\n formatId: string;\r\n /** Source layers. If undefined all layers are displayed. */\r\n subLayers?: MapSubLayerProps[];\r\n /** Access Key for the Layer, like a subscription key or access token.\r\n * ###TODO This does not belong in the props object. It should never be persisted.\r\n */\r\n /** @internal */\r\n accessKey?: MapLayerKey;\r\n\r\n /** @internal */\r\n modelId?: never;\r\n}\r\n\r\n/** JSON representation of a [[ModelMapLayerSettings]].\r\n * @see [[MapImagerySettings]].\r\n * @public\r\n */\r\nexport interface ModelMapLayerProps extends CommonMapLayerProps {\r\n /** The Id of the [GeometricModel]($backend) containing the geometry to be drawn by the layer. */\r\n modelId: Id64String;\r\n\r\n /** @internal */\r\n url?: never;\r\n /** @internal */\r\n formatId?: never;\r\n /** @internal */\r\n subLayers?: never;\r\n /** @internal */\r\n accessKey?: never;\r\n}\r\n\r\n/** JSON representation of a [[MapLayerSettings]].\r\n * @see [[MapImagerySettings]].\r\n * @public\r\n */\r\nexport type MapLayerProps = ImageMapLayerProps | ModelMapLayerProps;\r\n\r\n/**\r\n * stores key-value pair to be added to all requests made involving map layer.\r\n * @public\r\n */\r\nexport interface MapLayerKey {\r\n key: string;\r\n value: string;\r\n}\r\n\r\n/** Abstract base class for normalized representation of a [[MapLayerProps]] for which values have been validated and default values have been applied where explicit values not defined.\r\n * This class is extended by [[ImageMapLayerSettings]] and [ModelMapLayerSettings]] to create the settings for image and model based layers.\r\n * One or more map layers may be included within [[MapImagerySettings]] object.\r\n * @see [[MapImagerySettings]]\r\n * @public\r\n */\r\nexport abstract class MapLayerSettings {\r\n public readonly visible: boolean;\r\n\r\n public readonly name: string;\r\n public readonly transparency: number;\r\n public readonly transparentBackground: boolean;\r\n public abstract get allSubLayersInvisible(): boolean;\r\n public abstract clone(changedProps: Partial<MapLayerProps>): MapLayerSettings;\r\n public abstract toJSON(): MapLayerProps;\r\n\r\n /** @internal */\r\n protected constructor(name: string, visible = true, transparency: number = 0, transparentBackground = true) {\r\n this.name = name;\r\n this.visible = visible;\r\n this.transparentBackground = transparentBackground;\r\n this.transparency = transparency;\r\n }\r\n\r\n /** Create a map layer settings from its JSON representation. */\r\n public static fromJSON(props: MapLayerProps): MapLayerSettings {\r\n return undefined !== props.modelId ? ModelMapLayerSettings.fromJSON(props) : ImageMapLayerSettings.fromJSON(props);\r\n }\r\n\r\n /** @internal */\r\n protected _toJSON(): CommonMapLayerProps {\r\n const props: CommonMapLayerProps = {\r\n name: this.name,\r\n visible: this.visible,\r\n };\r\n\r\n if (0 !== this.transparency)\r\n props.transparency = this.transparency;\r\n\r\n if (this.transparentBackground === false)\r\n props.transparentBackground = this.transparentBackground;\r\n\r\n return props;\r\n }\r\n\r\n /** @internal */\r\n protected cloneProps(changedProps: Partial<MapLayerProps>): CommonMapLayerProps {\r\n return {\r\n name: undefined !== changedProps.name ? changedProps.name : this.name,\r\n visible: undefined !== changedProps.visible ? changedProps.visible : this.visible,\r\n transparency: undefined !== changedProps.transparency ? changedProps.transparency : this.transparency,\r\n transparentBackground: undefined !== changedProps.transparentBackground ? changedProps.transparentBackground : this.transparentBackground,\r\n };\r\n }\r\n\r\n /** @internal */\r\n public displayMatches(other: MapLayerSettings): boolean {\r\n return this.name === other.name && this.visible === other.visible && this.transparency === other.transparency && this.transparentBackground === other.transparentBackground;\r\n }\r\n\r\n /** Return a unique string identifying the layers source... The URL for image layer or modelID for model layer */\r\n public abstract get source(): string;\r\n\r\n /** @internal */\r\n public matchesNameAndSource(name: string, source: string): boolean {\r\n return this.name === name && this.source === source;\r\n }\r\n}\r\n\r\n/** Normalized representation of a [[ImageMapLayerProps]] for which values have been validated and default values have been applied where explicit values not defined.\r\n * Image map layers are created from servers that produce images that represent map tiles. Map layers map also be represented by models.\r\n * One or more map layers may be included within [[MapImagerySettings]] object.\r\n * @see [[MapImagerySettings]]\r\n * @see [[ModelMapLayerSettings]] for model based map layer settings.\r\n * @public\r\n */\r\nexport class ImageMapLayerSettings extends MapLayerSettings {\r\n public readonly formatId: string;\r\n public readonly url: string;\r\n public userName?: string;\r\n public password?: string;\r\n public accessKey?: MapLayerKey;\r\n public readonly subLayers: MapSubLayerSettings[];\r\n public override get source(): string { return this.url; }\r\n\r\n /** @internal */\r\n protected constructor(props: ImageMapLayerProps) {\r\n const transparentBackground = props.transparentBackground ?? true;\r\n super(props.name, props.visible, props.transparency, transparentBackground);\r\n\r\n this.formatId = props.formatId;\r\n this.url = props.url;\r\n this.accessKey = props.accessKey;\r\n this.subLayers = [];\r\n if (!props.subLayers)\r\n return;\r\n\r\n for (const subLayerProps of props.subLayers) {\r\n const subLayer = MapSubLayerSettings.fromJSON(subLayerProps);\r\n if (subLayer)\r\n this.subLayers.push(subLayer);\r\n }\r\n }\r\n\r\n public static override fromJSON(props: ImageMapLayerProps): ImageMapLayerSettings {\r\n return new this(props);\r\n }\r\n\r\n /** return JSON representation of this MapLayerSettings object */\r\n public override toJSON(): ImageMapLayerProps {\r\n const props = super._toJSON() as ImageMapLayerProps;\r\n props.url = this.url;\r\n props.formatId = this.formatId;\r\n\r\n if (this.subLayers.length > 0)\r\n props.subLayers = this.subLayers.map((x) => x.toJSON());\r\n\r\n return props;\r\n }\r\n\r\n /** Create a copy of this MapLayerSettings, optionally modifying some of its properties.\r\n * @param changedProps JSON representation of the properties to change.\r\n * @returns A MapLayerSettings with all of its properties set to match those of `this`, except those explicitly defined in `changedProps`.\r\n */\r\n public clone(changedProps: Partial<ImageMapLayerProps>): ImageMapLayerSettings {\r\n const clone = ImageMapLayerSettings.fromJSON(this.cloneProps(changedProps));\r\n\r\n // Clone members not part of MapLayerProps\r\n clone.userName = this.userName;\r\n clone.password = this.password;\r\n clone.accessKey = this.accessKey;\r\n\r\n return clone;\r\n }\r\n\r\n /** @internal */\r\n protected override cloneProps(changedProps: Partial<ImageMapLayerProps>): ImageMapLayerProps {\r\n const props = super.cloneProps(changedProps) as ImageMapLayerProps;\r\n\r\n props.formatId = changedProps.formatId ?? this.formatId;\r\n props.url = changedProps.url ?? this.url;\r\n props.accessKey = changedProps.accessKey ?? this.accessKey;\r\n props.subLayers = changedProps.subLayers ?? this.subLayers;\r\n\r\n return props;\r\n }\r\n\r\n /** @internal */\r\n public override displayMatches(other: MapLayerSettings): boolean {\r\n if (! (other instanceof ImageMapLayerSettings) || !super.displayMatches(other))\r\n return false;\r\n\r\n if (this.userName !== other.userName || this.password !== other.password || this.subLayers.length !== other.subLayers.length) {\r\n return false;\r\n }\r\n\r\n for (let i = 0; i < this.subLayers.length; i++)\r\n if (!this.subLayers[i].displayMatches(other.subLayers[i]))\r\n return false;\r\n\r\n return true;\r\n }\r\n\r\n /** Return a sublayer matching id -- or undefined if not found */\r\n public subLayerById(id?: SubLayerId): MapSubLayerSettings | undefined {\r\n return id === undefined ? undefined : this.subLayers.find((subLayer) => subLayer.id === id);\r\n }\r\n\r\n private hasInvisibleAncestors(subLayer?: MapSubLayerSettings): boolean {\r\n if (!subLayer || !subLayer.parent)\r\n return false;\r\n\r\n const parent = this.subLayerById(subLayer.parent);\r\n if (!parent)\r\n return false;\r\n\r\n // Visibility of named group has no impact on the visibility of children (only unnamed group does)\r\n // i.e For WMS, its should be possible to request a child layer when its parent is not visible (if the parent is also named)\r\n return (!parent.visible && !parent.isNamed) || this.hasInvisibleAncestors(parent);\r\n }\r\n\r\n /** Return true if sublayer is visible -- testing ancestors for visibility if they exist. */\r\n public isSubLayerVisible(subLayer: MapSubLayerSettings): boolean {\r\n if (!subLayer.visible)\r\n return false;\r\n\r\n return !this.hasInvisibleAncestors(subLayer);\r\n }\r\n\r\n /** Return true if all sublayers are invisible. */\r\n public get allSubLayersInvisible(): boolean {\r\n if (this.subLayers.length === 0)\r\n return false;\r\n\r\n return this.subLayers.every((subLayer) => (subLayer.isUnnamedGroup || !this.isSubLayerVisible(subLayer)));\r\n }\r\n\r\n /** Return the children for a sublayer */\r\n public getSubLayerChildren(subLayer: MapSubLayerSettings): MapSubLayerSettings[] | undefined {\r\n if (!subLayer.children)\r\n return undefined;\r\n\r\n const children = new Array<MapSubLayerSettings>();\r\n subLayer.children.forEach((childId) => {\r\n const child = this.subLayerById(childId);\r\n if (child !== undefined)\r\n children.push(child);\r\n });\r\n\r\n return children;\r\n }\r\n\r\n /** @internal */\r\n protected static mapTypeName(type: BackgroundMapType) { // TBD.. Localization.\r\n switch (type) {\r\n case BackgroundMapType.Aerial:\r\n return \"Aerial Imagery\";\r\n default:\r\n case BackgroundMapType.Hybrid:\r\n return \"Aerial Imagery with labels\";\r\n case BackgroundMapType.Street:\r\n return \"Streets\";\r\n }\r\n }\r\n\r\n public setCredentials(userName?: string, password?: string) {\r\n this.userName = userName;\r\n this.password = password;\r\n }\r\n}\r\n\r\n/** Normalized representation of a [[ModelMapLayerProps]] for which values have been validated and default values have been applied where explicit values not defined.\r\n * Model map layers are produced from models, typically from two dimensional geometry that may originate in a GIS system.\r\n * One or more map layers may be included within [[MapImagerySettings]] object.\r\n * @see [[MapImagerySettings]]\r\n * @see [[ImageMapLayerSettings]] for image based map layer settings.\r\n * @public\r\n */\r\nexport class ModelMapLayerSettings extends MapLayerSettings {\r\n public readonly modelId: Id64String;\r\n public override get source(): string { return this.modelId; }\r\n\r\n /** @internal */\r\n protected constructor(modelId: Id64String, name: string, visible = true,\r\n transparency: number = 0, transparentBackground = true) {\r\n super(name, visible, transparency, transparentBackground);\r\n this.modelId = modelId;\r\n }\r\n\r\n /** Construct from JSON, performing validation and applying default values for undefined fields. */\r\n public static override fromJSON(json: ModelMapLayerProps): ModelMapLayerSettings {\r\n const transparentBackground = (json.transparentBackground === undefined) ? true : json.transparentBackground;\r\n return new this(json.modelId, json.name, json.visible, json.transparency, transparentBackground);\r\n }\r\n\r\n /** return JSON representation of this MapLayerSettings object */\r\n public override toJSON(): ModelMapLayerProps {\r\n const props = super._toJSON() as ModelMapLayerProps;\r\n props.modelId = this.modelId;\r\n return props;\r\n }\r\n\r\n /** Create a copy of this MapLayerSettings, optionally modifying some of its properties.\r\n * @param changedProps JSON representation of the properties to change.\r\n * @returns A MapLayerSettings with all of its properties set to match those of `this`, except those explicitly defined in `changedProps`.\r\n */\r\n public clone(changedProps: Partial<ModelMapLayerProps>): ModelMapLayerSettings {\r\n return ModelMapLayerSettings.fromJSON(this.cloneProps(changedProps));\r\n }\r\n\r\n /** @internal */\r\n protected override cloneProps(changedProps: Partial<ModelMapLayerProps>): ModelMapLayerProps {\r\n const props = super.cloneProps(changedProps) as ModelMapLayerProps;\r\n props.modelId = changedProps.modelId ?? this.modelId;\r\n return props;\r\n }\r\n\r\n /** @internal */\r\n public override displayMatches(other: MapLayerSettings): boolean {\r\n if (!(other instanceof ModelMapLayerSettings) || !super.displayMatches(other))\r\n return false;\r\n\r\n return this.modelId === other.modelId;\r\n }\r\n\r\n /** Return true if all sublayers are invisible (always false as model layers do not include sublayers). */\r\n public get allSubLayersInvisible(): boolean {\r\n return false;\r\n }\r\n}\r\n\r\n/** JSON representation of a [[BaseMapLayerSettings]].\r\n * @public\r\n */\r\nexport interface BaseMapLayerProps extends ImageMapLayerProps {\r\n provider?: BackgroundMapProviderProps;\r\n}\r\n\r\n/** A [[ImageMapLayerSettings]] that can serve as the base layer for a [[MapImagerySettings]].\r\n * The base layer supports all of the same options as any other layer, but also allows for simplified configuration based\r\n * on a small set of known supported [[BackgroundMapProvider]]s like [Bing Maps](https://www.microsoft.com/en-us/maps).\r\n * If the base layer was configured from such a provider, that information will be preserved and can be queried; this allows\r\n * the imagery provider and/or type to be easily modified.\r\n * @see [[MapImagerySettings.backgroundBase]].\r\n * @public\r\n */\r\nexport class BaseMapLayerSettings extends ImageMapLayerSettings {\r\n private _provider?: BackgroundMapProvider;\r\n\r\n /** The provider from which this base layer was configured, if any. */\r\n public get provider(): BackgroundMapProvider | undefined { return this._provider; }\r\n\r\n /** Create a base layer from its JSON representation.\r\n * TODO: This, MapLayerSettings.fromJSON, and MapSubLayerSettings.fromJSON should never return undefined.\r\n * That means they should not accept undefined for props and should define props such that it fully describes the\r\n * layer - e.g., url and name must be defined.\r\n */\r\n public static override fromJSON(props: BaseMapLayerProps): BaseMapLayerSettings {\r\n const settings = super.fromJSON(props);\r\n assert(settings instanceof BaseMapLayerSettings);\r\n if (props.provider)\r\n settings._provider = BackgroundMapProvider.fromJSON(props.provider);\r\n\r\n return settings;\r\n }\r\n\r\n /** Convert this layer to its JSON representation. */\r\n public override toJSON(): BaseMapLayerProps {\r\n const props = super.toJSON() as BaseMapLayerProps;\r\n if (this.provider)\r\n props.provider = this.provider.toJSON();\r\n\r\n return props;\r\n }\r\n\r\n /** @internal */\r\n public override cloneProps(changedProps: Partial<BaseMapLayerProps>): BaseMapLayerProps {\r\n const props = super.cloneProps(changedProps) as BaseMapLayerProps;\r\n\r\n if (changedProps.provider)\r\n props.provider = changedProps.provider;\r\n else if (this.provider)\r\n props.provider = this.provider.toJSON();\r\n\r\n return props;\r\n }\r\n\r\n /** Create a copy of this layer. */\r\n public override clone(changedProps: Partial<BaseMapLayerProps>): BaseMapLayerSettings {\r\n const prevUrl = this.url;\r\n const clone = BaseMapLayerSettings.fromJSON(this.cloneProps(changedProps))!;\r\n\r\n if (this.provider && prevUrl !== this.url)\r\n clone._provider = undefined;\r\n\r\n return clone;\r\n }\r\n\r\n /** Create a base layer from a BackgroundMapProvider. */\r\n public static fromProvider(provider: BackgroundMapProvider, options?: { invisible?: boolean, transparency?: number }): BaseMapLayerSettings {\r\n let formatId: string, url: string, name: string;\r\n switch (provider.name) {\r\n case \"BingProvider\":\r\n default:\r\n formatId = \"BingMaps\";\r\n\r\n let imagerySet;\r\n switch (provider.type) {\r\n case BackgroundMapType.Street:\r\n imagerySet = \"Road\";\r\n break;\r\n case BackgroundMapType.Aerial:\r\n imagerySet = \"Aerial\";\r\n break;\r\n case BackgroundMapType.Hybrid:\r\n default:\r\n imagerySet = \"AerialWithLabels\";\r\n break;\r\n }\r\n\r\n name = `Bing Maps: ${ImageMapLayerSettings.mapTypeName(provider.type)}`;\r\n url = `https://dev.virtualearth.net/REST/v1/Imagery/Metadata/${imagerySet}?o=json&incl=ImageryProviders&key={bingKey}`;\r\n break;\r\n\r\n case \"MapBoxProvider\":\r\n formatId = \"MapboxImagery\";\r\n name = `MapBox: ${ImageMapLayerSettings.mapTypeName(provider.type)}`;\r\n switch (provider.type) {\r\n case BackgroundMapType.Street:\r\n url = \"https://api.mapbox.com/styles/v1/mapbox/streets-v11/tiles/\";\r\n break;\r\n case BackgroundMapType.Aerial:\r\n url = \"https://api.mapbox.com/styles/v1/mapbox/satellite-v9/tiles/\";\r\n break;\r\n case BackgroundMapType.Hybrid:\r\n url = \"https://api.mapbox.com/styles/v1/mapbox/satellite-streets-v11/tiles/\";\r\n break;\r\n }\r\n\r\n break;\r\n }\r\n\r\n const settings = super.fromJSON({\r\n name,\r\n formatId,\r\n url,\r\n transparentBackground: false,\r\n visible: !options?.invisible,\r\n transparency: options?.transparency,\r\n });\r\n\r\n assert(undefined !== settings);\r\n assert(settings instanceof BaseMapLayerSettings);\r\n\r\n settings._provider = provider;\r\n return settings;\r\n }\r\n\r\n /** @internal */\r\n public static fromBackgroundMapProps(props: DeprecatedBackgroundMapProps): BaseMapLayerSettings {\r\n return this.fromProvider(BackgroundMapProvider.fromBackgroundMapProps(props));\r\n }\r\n\r\n /** @alpha */\r\n public cloneWithProvider(provider: BackgroundMapProvider): BaseMapLayerSettings {\r\n return BaseMapLayerSettings.fromProvider(provider, { invisible: !this.visible, transparency: this.transparency });\r\n }\r\n}\r\n"]}
@@ -6,7 +6,7 @@ import { XYProps } from "@itwin/core-geometry";
6
6
  import { CodeProps } from "./Code";
7
7
  import { RelatedElementProps } from "./ElementProps";
8
8
  import { EntityProps, EntityQueryParams } from "./EntityProps";
9
- /** Properties that define a [Model]($docs/bis/intro/model-fundamentals)
9
+ /** Properties that define a [Model]($docs/bis/guide/fundamentals/model-fundamentals)
10
10
  * @public
11
11
  * @extensions
12
12
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ModelProps.js","sourceRoot":"","sources":["../../src/ModelProps.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG","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/** @packageDocumentation\r\n * @module Entities\r\n */\r\n\r\nimport { GuidString, Id64String } from \"@itwin/core-bentley\";\r\nimport { XYProps } from \"@itwin/core-geometry\";\r\nimport { CodeProps } from \"./Code\";\r\nimport { RelatedElementProps } from \"./ElementProps\";\r\nimport { EntityProps, EntityQueryParams } from \"./EntityProps\";\r\n\r\n/** Properties that define a [Model]($docs/bis/intro/model-fundamentals)\r\n * @public\r\n * @extensions\r\n */\r\nexport interface ModelProps extends EntityProps {\r\n modeledElement: RelatedElementProps;\r\n name?: string;\r\n parentModel?: Id64String; // NB! Must always match the model of the modeledElement!\r\n isPrivate?: boolean;\r\n isTemplate?: boolean;\r\n jsonProperties?: any;\r\n}\r\n\r\n/** Properties that specify what model should be loaded.\r\n * @public\r\n * @extensions\r\n */\r\nexport interface ModelLoadProps {\r\n id?: Id64String;\r\n code?: CodeProps;\r\n}\r\n\r\n/** Parameters for performing a query on [Model]($backend) classes.\r\n * @public\r\n * @extensions\r\n */\r\nexport interface ModelQueryParams extends EntityQueryParams {\r\n wantTemplate?: boolean;\r\n wantPrivate?: boolean;\r\n}\r\n\r\n/** Properties that describe a [GeometricModel]($backend)\r\n * @public\r\n * @extensions\r\n */\r\nexport interface GeometricModelProps extends ModelProps {\r\n /** A unique identifier that is updated each time a change affecting the appearance of a geometric element within this model\r\n * is committed to the iModel. In other words, between versions of the iModel, if this value is the same you can\r\n * assume the appearance of all of the geometry in the model is the same (Note: other properties of elements may have changed.)\r\n * If undefined, the state of the geometry is unknown.\r\n */\r\n geometryGuid?: GuidString;\r\n}\r\n\r\n/** Properties that define a [GeometricModel2d]($backend)\r\n * @public\r\n * @extensions\r\n */\r\nexport interface GeometricModel2dProps extends GeometricModelProps {\r\n /** The actual coordinates of (0,0) in modeling coordinates. An offset applied to all modeling coordinates. */\r\n globalOrigin?: XYProps;\r\n}\r\n\r\n/** Properties that define a [GeometricModel3d]($backend)\r\n * @public\r\n * @extensions\r\n */\r\nexport interface GeometricModel3dProps extends GeometricModelProps {\r\n /** If true, then the elements in this GeometricModel3d are not in real-world coordinates and will not be in the spatial index. */\r\n isNotSpatiallyLocated?: boolean;\r\n /** If true, then the elements in this GeometricModel3d are expected to be in an XY plane. */\r\n isPlanProjection?: boolean;\r\n}\r\n"]}
1
+ {"version":3,"file":"ModelProps.js","sourceRoot":"","sources":["../../src/ModelProps.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG","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/** @packageDocumentation\r\n * @module Entities\r\n */\r\n\r\nimport { GuidString, Id64String } from \"@itwin/core-bentley\";\r\nimport { XYProps } from \"@itwin/core-geometry\";\r\nimport { CodeProps } from \"./Code\";\r\nimport { RelatedElementProps } from \"./ElementProps\";\r\nimport { EntityProps, EntityQueryParams } from \"./EntityProps\";\r\n\r\n/** Properties that define a [Model]($docs/bis/guide/fundamentals/model-fundamentals)\r\n * @public\r\n * @extensions\r\n */\r\nexport interface ModelProps extends EntityProps {\r\n modeledElement: RelatedElementProps;\r\n name?: string;\r\n parentModel?: Id64String; // NB! Must always match the model of the modeledElement!\r\n isPrivate?: boolean;\r\n isTemplate?: boolean;\r\n jsonProperties?: any;\r\n}\r\n\r\n/** Properties that specify what model should be loaded.\r\n * @public\r\n * @extensions\r\n */\r\nexport interface ModelLoadProps {\r\n id?: Id64String;\r\n code?: CodeProps;\r\n}\r\n\r\n/** Parameters for performing a query on [Model]($backend) classes.\r\n * @public\r\n * @extensions\r\n */\r\nexport interface ModelQueryParams extends EntityQueryParams {\r\n wantTemplate?: boolean;\r\n wantPrivate?: boolean;\r\n}\r\n\r\n/** Properties that describe a [GeometricModel]($backend)\r\n * @public\r\n * @extensions\r\n */\r\nexport interface GeometricModelProps extends ModelProps {\r\n /** A unique identifier that is updated each time a change affecting the appearance of a geometric element within this model\r\n * is committed to the iModel. In other words, between versions of the iModel, if this value is the same you can\r\n * assume the appearance of all of the geometry in the model is the same (Note: other properties of elements may have changed.)\r\n * If undefined, the state of the geometry is unknown.\r\n */\r\n geometryGuid?: GuidString;\r\n}\r\n\r\n/** Properties that define a [GeometricModel2d]($backend)\r\n * @public\r\n * @extensions\r\n */\r\nexport interface GeometricModel2dProps extends GeometricModelProps {\r\n /** The actual coordinates of (0,0) in modeling coordinates. An offset applied to all modeling coordinates. */\r\n globalOrigin?: XYProps;\r\n}\r\n\r\n/** Properties that define a [GeometricModel3d]($backend)\r\n * @public\r\n * @extensions\r\n */\r\nexport interface GeometricModel3dProps extends GeometricModelProps {\r\n /** If true, then the elements in this GeometricModel3d are not in real-world coordinates and will not be in the spatial index. */\r\n isNotSpatiallyLocated?: boolean;\r\n /** If true, then the elements in this GeometricModel3d are expected to be in an XY plane. */\r\n isPlanProjection?: boolean;\r\n}\r\n"]}
@@ -27,13 +27,13 @@ export interface PlanProjectionSettingsProps {
27
27
  * @public
28
28
  */
29
29
  export declare class PlanProjectionSettings {
30
- /** @see [[PlanProjectionSettingsProps.elevation]] */
30
+ /** See [[PlanProjectionSettingsProps.elevation]] */
31
31
  readonly elevation?: number;
32
- /** @see [[PlanProjectionSettingsProps.transparency]] */
32
+ /** See [[PlanProjectionSettingsProps.transparency]] */
33
33
  readonly transparency?: number;
34
- /** @see [[PlanProjectionSettingsProps.overlay]] */
34
+ /** See [[PlanProjectionSettingsProps.overlay]] */
35
35
  readonly overlay: boolean;
36
- /** @see [[PlanProjectionSettingsProps.enforceDisplayPriority]] */
36
+ /** See [[PlanProjectionSettingsProps.enforceDisplayPriority]] */
37
37
  readonly enforceDisplayPriority?: boolean;
38
38
  toJSON(): PlanProjectionSettingsProps;
39
39
  static fromJSON(props: PlanProjectionSettingsProps | undefined): PlanProjectionSettings | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"PlanProjectionSettings.d.ts","sourceRoot":"","sources":["../../src/PlanProjectionSettings.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH;;;GAGG;AACH,MAAM,WAAW,2BAA2B;IAC1C,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4JAA4J;IAC5J,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wJAAwJ;IACxJ,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED;;;;;;GAMG;AACH,qBAAa,sBAAsB;IACjC,qDAAqD;IACrD,SAAgB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnC,wDAAwD;IACxD,SAAgB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtC,mDAAmD;IACnD,SAAgB,OAAO,EAAE,OAAO,CAAC;IACjC,kEAAkE;IAClE,SAAgB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAE1C,MAAM,IAAI,2BAA2B;WAS9B,QAAQ,CAAC,KAAK,EAAE,2BAA2B,GAAG,SAAS,GAAG,sBAAsB,GAAG,SAAS;IAU1G,gBAAgB;gBACG,KAAK,EAAE,2BAA2B;IAYrD;;;OAGG;IACI,KAAK,CAAC,YAAY,CAAC,EAAE,2BAA2B,GAAG,sBAAsB;CAmBjF"}
1
+ {"version":3,"file":"PlanProjectionSettings.d.ts","sourceRoot":"","sources":["../../src/PlanProjectionSettings.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH;;;GAGG;AACH,MAAM,WAAW,2BAA2B;IAC1C,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4JAA4J;IAC5J,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wJAAwJ;IACxJ,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED;;;;;;GAMG;AACH,qBAAa,sBAAsB;IACjC,oDAAoD;IACpD,SAAgB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnC,uDAAuD;IACvD,SAAgB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtC,kDAAkD;IAClD,SAAgB,OAAO,EAAE,OAAO,CAAC;IACjC,iEAAiE;IACjE,SAAgB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAE1C,MAAM,IAAI,2BAA2B;WAS9B,QAAQ,CAAC,KAAK,EAAE,2BAA2B,GAAG,SAAS,GAAG,sBAAsB,GAAG,SAAS;IAU1G,gBAAgB;gBACG,KAAK,EAAE,2BAA2B;IAYrD;;;OAGG;IACI,KAAK,CAAC,YAAY,CAAC,EAAE,2BAA2B,GAAG,sBAAsB;CAmBjF"}
@@ -1 +1 @@
1
- {"version":3,"file":"PlanProjectionSettings.js","sourceRoot":"","sources":["../../src/PlanProjectionSettings.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAqBH;;;;;;GAMG;AACH,MAAM,OAAO,sBAAsB;IA6BjC,gBAAgB;IAChB,YAAmB,KAAkC;QACnD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,KAAK,CAAC,OAAO,CAAC;QACtC,IAAI,CAAC,sBAAsB,GAAG,IAAI,KAAK,KAAK,CAAC,sBAAsB,CAAC;QAEpE,IAAI,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;QACtC,IAAI,SAAS,KAAK,YAAY;YAC5B,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;QAExD,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IA9BM,MAAM;QACX,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,OAAO,EAAE,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YACjD,sBAAsB,EAAE,IAAI,KAAK,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;SAChF,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAC,KAA8C;QACnE,IAAI,SAAS,KAAK,KAAK;YACrB,OAAO,SAAS,CAAC;QAEnB,IAAI,SAAS,KAAK,KAAK,CAAC,SAAS,IAAI,SAAS,KAAK,KAAK,CAAC,YAAY,IAAI,SAAS,KAAK,KAAK,CAAC,OAAO,IAAI,SAAS,KAAK,KAAK,CAAC,sBAAsB;YAChJ,OAAO,SAAS,CAAC;QAEnB,OAAO,IAAI,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAeD;;;OAGG;IACI,KAAK,CAAC,YAA0C;QACrD,IAAI,SAAS,KAAK,YAAY;YAC5B,OAAO,IAAI,CAAC;QAEd,MAAM,KAAK,GAAgC,IAAI,CAAC,MAAM,EAAE,CAAC;QACzD,IAAI,SAAS,KAAK,YAAY,CAAC,SAAS;YACtC,KAAK,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;QAE3C,IAAI,SAAS,KAAK,YAAY,CAAC,YAAY;YACzC,KAAK,CAAC,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC;QAEjD,IAAI,SAAS,KAAK,YAAY,CAAC,OAAO;YACpC,KAAK,CAAC,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC;QAEvC,IAAI,SAAS,KAAK,YAAY,CAAC,sBAAsB;YACnD,KAAK,CAAC,sBAAsB,GAAG,YAAY,CAAC,sBAAsB,CAAC;QAErE,OAAO,IAAI,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;CACF","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/** @packageDocumentation\r\n * @module DisplayStyles\r\n */\r\n\r\n/** Wire format describing [[PlanProjectionSettings]].\r\n * @public\r\n * @extensions\r\n */\r\nexport interface PlanProjectionSettingsProps {\r\n /** If defined, the absolute height in meters at which to display the model. */\r\n elevation?: number;\r\n /** If defined, specifies a uniform transparency applied to all of the geometry in the model, in the range 0.0 (fully opaque) to 1.0 (fully transparent). */\r\n transparency?: number;\r\n /** If defined and true, the model is displayed as an overlay in the view (without depth testing) so that it is always visible behind other geometry. */\r\n overlay?: boolean;\r\n /** If defined and true, subcategory display priority is used to specify the draw order of portions of the model. Geometry belonging to a subcategory with a higher priority\r\n * value is drawn on top of coincident geometry belonging to a subcategory with a lower priority value. The priorities can be modified at display time using\r\n * [FeatureSymbology.Overrides]($frontend). Note that subcategory \"layers\" cross model boundaries; that is, geometry belonging to the same subcategory in different models\r\n * are drawn as part of the same layer.\r\n */\r\n enforceDisplayPriority?: boolean;\r\n}\r\n\r\n/** Describes how to draw a plan projection model. A plan projection model is a [GeometricModel3d]($backend) whose geometry all lies in\r\n * a single XY plane, wherein the Z coordinate of the plane may be arbitrary or flexible. Multiple plan projection models can be combined into one view\r\n * and drawn as \"layers\" with relative priorities.\r\n * @see [[DisplayStyle3dSettings.setPlanProjectionSettings]] to define plan projection settings for a [DisplayStyle3dState]($frontend).\r\n * @see [GeometricModel3d.isPlanProjection]($backend).\r\n * @public\r\n */\r\nexport class PlanProjectionSettings {\r\n /** @see [[PlanProjectionSettingsProps.elevation]] */\r\n public readonly elevation?: number;\r\n /** @see [[PlanProjectionSettingsProps.transparency]] */\r\n public readonly transparency?: number;\r\n /** @see [[PlanProjectionSettingsProps.overlay]] */\r\n public readonly overlay: boolean;\r\n /** @see [[PlanProjectionSettingsProps.enforceDisplayPriority]] */\r\n public readonly enforceDisplayPriority?: boolean;\r\n\r\n public toJSON(): PlanProjectionSettingsProps {\r\n return {\r\n elevation: this.elevation,\r\n transparency: this.transparency,\r\n overlay: true === this.overlay ? true : undefined,\r\n enforceDisplayPriority: true === this.enforceDisplayPriority ? true : undefined,\r\n };\r\n }\r\n\r\n public static fromJSON(props: PlanProjectionSettingsProps | undefined): PlanProjectionSettings | undefined {\r\n if (undefined === props)\r\n return undefined;\r\n\r\n if (undefined === props.elevation && undefined === props.transparency && undefined === props.overlay && undefined === props.enforceDisplayPriority)\r\n return undefined;\r\n\r\n return new PlanProjectionSettings(props);\r\n }\r\n\r\n /** @internal */\r\n public constructor(props: PlanProjectionSettingsProps) {\r\n this.elevation = props.elevation;\r\n this.overlay = true === props.overlay;\r\n this.enforceDisplayPriority = true === props.enforceDisplayPriority;\r\n\r\n let transparency = props.transparency;\r\n if (undefined !== transparency)\r\n transparency = Math.max(0, Math.min(1, transparency));\r\n\r\n this.transparency = transparency;\r\n }\r\n\r\n /** Create a copy of this PlanProjectionSettings, optionally modifying some of its properties.\r\n * @param changedProps JSON representation of the properties to change.\r\n * @returns A PlanProjectionSettings with all of its properties set to match those of `this`, except those explicitly defined in `changedProps`.\r\n */\r\n public clone(changedProps?: PlanProjectionSettingsProps): PlanProjectionSettings {\r\n if (undefined === changedProps)\r\n return this;\r\n\r\n const props: PlanProjectionSettingsProps = this.toJSON();\r\n if (undefined !== changedProps.elevation)\r\n props.elevation = changedProps.elevation;\r\n\r\n if (undefined !== changedProps.transparency)\r\n props.transparency = changedProps.transparency;\r\n\r\n if (undefined !== changedProps.overlay)\r\n props.overlay = changedProps.overlay;\r\n\r\n if (undefined !== changedProps.enforceDisplayPriority)\r\n props.enforceDisplayPriority = changedProps.enforceDisplayPriority;\r\n\r\n return new PlanProjectionSettings(props);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"PlanProjectionSettings.js","sourceRoot":"","sources":["../../src/PlanProjectionSettings.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAqBH;;;;;;GAMG;AACH,MAAM,OAAO,sBAAsB;IA6BjC,gBAAgB;IAChB,YAAmB,KAAkC;QACnD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,KAAK,CAAC,OAAO,CAAC;QACtC,IAAI,CAAC,sBAAsB,GAAG,IAAI,KAAK,KAAK,CAAC,sBAAsB,CAAC;QAEpE,IAAI,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;QACtC,IAAI,SAAS,KAAK,YAAY;YAC5B,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;QAExD,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IA9BM,MAAM;QACX,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,OAAO,EAAE,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YACjD,sBAAsB,EAAE,IAAI,KAAK,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;SAChF,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAC,KAA8C;QACnE,IAAI,SAAS,KAAK,KAAK;YACrB,OAAO,SAAS,CAAC;QAEnB,IAAI,SAAS,KAAK,KAAK,CAAC,SAAS,IAAI,SAAS,KAAK,KAAK,CAAC,YAAY,IAAI,SAAS,KAAK,KAAK,CAAC,OAAO,IAAI,SAAS,KAAK,KAAK,CAAC,sBAAsB;YAChJ,OAAO,SAAS,CAAC;QAEnB,OAAO,IAAI,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAeD;;;OAGG;IACI,KAAK,CAAC,YAA0C;QACrD,IAAI,SAAS,KAAK,YAAY;YAC5B,OAAO,IAAI,CAAC;QAEd,MAAM,KAAK,GAAgC,IAAI,CAAC,MAAM,EAAE,CAAC;QACzD,IAAI,SAAS,KAAK,YAAY,CAAC,SAAS;YACtC,KAAK,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;QAE3C,IAAI,SAAS,KAAK,YAAY,CAAC,YAAY;YACzC,KAAK,CAAC,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC;QAEjD,IAAI,SAAS,KAAK,YAAY,CAAC,OAAO;YACpC,KAAK,CAAC,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC;QAEvC,IAAI,SAAS,KAAK,YAAY,CAAC,sBAAsB;YACnD,KAAK,CAAC,sBAAsB,GAAG,YAAY,CAAC,sBAAsB,CAAC;QAErE,OAAO,IAAI,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;CACF","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/** @packageDocumentation\r\n * @module DisplayStyles\r\n */\r\n\r\n/** Wire format describing [[PlanProjectionSettings]].\r\n * @public\r\n * @extensions\r\n */\r\nexport interface PlanProjectionSettingsProps {\r\n /** If defined, the absolute height in meters at which to display the model. */\r\n elevation?: number;\r\n /** If defined, specifies a uniform transparency applied to all of the geometry in the model, in the range 0.0 (fully opaque) to 1.0 (fully transparent). */\r\n transparency?: number;\r\n /** If defined and true, the model is displayed as an overlay in the view (without depth testing) so that it is always visible behind other geometry. */\r\n overlay?: boolean;\r\n /** If defined and true, subcategory display priority is used to specify the draw order of portions of the model. Geometry belonging to a subcategory with a higher priority\r\n * value is drawn on top of coincident geometry belonging to a subcategory with a lower priority value. The priorities can be modified at display time using\r\n * [FeatureSymbology.Overrides]($frontend). Note that subcategory \"layers\" cross model boundaries; that is, geometry belonging to the same subcategory in different models\r\n * are drawn as part of the same layer.\r\n */\r\n enforceDisplayPriority?: boolean;\r\n}\r\n\r\n/** Describes how to draw a plan projection model. A plan projection model is a [GeometricModel3d]($backend) whose geometry all lies in\r\n * a single XY plane, wherein the Z coordinate of the plane may be arbitrary or flexible. Multiple plan projection models can be combined into one view\r\n * and drawn as \"layers\" with relative priorities.\r\n * @see [[DisplayStyle3dSettings.setPlanProjectionSettings]] to define plan projection settings for a [DisplayStyle3dState]($frontend).\r\n * @see [GeometricModel3d.isPlanProjection]($backend).\r\n * @public\r\n */\r\nexport class PlanProjectionSettings {\r\n /** See [[PlanProjectionSettingsProps.elevation]] */\r\n public readonly elevation?: number;\r\n /** See [[PlanProjectionSettingsProps.transparency]] */\r\n public readonly transparency?: number;\r\n /** See [[PlanProjectionSettingsProps.overlay]] */\r\n public readonly overlay: boolean;\r\n /** See [[PlanProjectionSettingsProps.enforceDisplayPriority]] */\r\n public readonly enforceDisplayPriority?: boolean;\r\n\r\n public toJSON(): PlanProjectionSettingsProps {\r\n return {\r\n elevation: this.elevation,\r\n transparency: this.transparency,\r\n overlay: true === this.overlay ? true : undefined,\r\n enforceDisplayPriority: true === this.enforceDisplayPriority ? true : undefined,\r\n };\r\n }\r\n\r\n public static fromJSON(props: PlanProjectionSettingsProps | undefined): PlanProjectionSettings | undefined {\r\n if (undefined === props)\r\n return undefined;\r\n\r\n if (undefined === props.elevation && undefined === props.transparency && undefined === props.overlay && undefined === props.enforceDisplayPriority)\r\n return undefined;\r\n\r\n return new PlanProjectionSettings(props);\r\n }\r\n\r\n /** @internal */\r\n public constructor(props: PlanProjectionSettingsProps) {\r\n this.elevation = props.elevation;\r\n this.overlay = true === props.overlay;\r\n this.enforceDisplayPriority = true === props.enforceDisplayPriority;\r\n\r\n let transparency = props.transparency;\r\n if (undefined !== transparency)\r\n transparency = Math.max(0, Math.min(1, transparency));\r\n\r\n this.transparency = transparency;\r\n }\r\n\r\n /** Create a copy of this PlanProjectionSettings, optionally modifying some of its properties.\r\n * @param changedProps JSON representation of the properties to change.\r\n * @returns A PlanProjectionSettings with all of its properties set to match those of `this`, except those explicitly defined in `changedProps`.\r\n */\r\n public clone(changedProps?: PlanProjectionSettingsProps): PlanProjectionSettings {\r\n if (undefined === changedProps)\r\n return this;\r\n\r\n const props: PlanProjectionSettingsProps = this.toJSON();\r\n if (undefined !== changedProps.elevation)\r\n props.elevation = changedProps.elevation;\r\n\r\n if (undefined !== changedProps.transparency)\r\n props.transparency = changedProps.transparency;\r\n\r\n if (undefined !== changedProps.overlay)\r\n props.overlay = changedProps.overlay;\r\n\r\n if (undefined !== changedProps.enforceDisplayPriority)\r\n props.enforceDisplayPriority = changedProps.enforceDisplayPriority;\r\n\r\n return new PlanProjectionSettings(props);\r\n }\r\n}\r\n"]}
@@ -46,31 +46,31 @@ export declare enum PlanarClipMaskPriority {
46
46
  export interface PlanarClipMaskProps {
47
47
  /** Controls how the mask geometry is collected */
48
48
  mode: PlanarClipMaskMode;
49
- /** @see [[PlanarClipMaskSettings.modelIds]]. */
49
+ /** See [[PlanarClipMaskSettings.modelIds]]. */
50
50
  modelIds?: CompressedId64Set;
51
- /** @see [[PlanarClipMaskSettings.subCategoryOrElementIds]]. */
51
+ /** See [[PlanarClipMaskSettings.subCategoryOrElementIds]]. */
52
52
  subCategoryOrElementIds?: CompressedId64Set;
53
- /** @see [[PlanarClipMaskSettings.priority]]. */
53
+ /** See [[PlanarClipMaskSettings.priority]]. */
54
54
  priority?: number;
55
- /** @see [[PlanarClipMaskSettings.transparency]]. */
55
+ /** See [[PlanarClipMaskSettings.transparency]]. */
56
56
  transparency?: number;
57
- /** @see PlanarClipMaskSettings.invert */
57
+ /** See PlanarClipMaskSettings.invert */
58
58
  invert?: boolean;
59
59
  }
60
60
  /** Basic arguments supplied to [[PlanarClipMaskSettings.create]].
61
61
  * @public
62
62
  */
63
63
  export interface BasicPlanarClipMaskArgs {
64
- /** @see [[PlanarClipMaskSettings.transparency]]. */
64
+ /** See [[PlanarClipMaskSettings.transparency]]. */
65
65
  transparency?: number;
66
- /** @see [[PlanarClipMaskSettings.invert]]. */
66
+ /** See [[PlanarClipMaskSettings.invert]]. */
67
67
  invert?: boolean;
68
68
  }
69
69
  /** Arguments supplied to [[PlanarClipMaskSettings.create]] to create a mask of [[PlanarClipMaskMode.Models]].
70
70
  * @public
71
71
  */
72
72
  export interface ModelPlanarClipMaskArgs extends BasicPlanarClipMaskArgs {
73
- /** @see [[PlanarClipMaskSettings.modelIds]]. */
73
+ /** See [[PlanarClipMaskSettings.modelIds]]. */
74
74
  modelIds?: Iterable<Id64String>;
75
75
  /** @internal */
76
76
  exclude?: never;
@@ -85,7 +85,7 @@ export interface ModelPlanarClipMaskArgs extends BasicPlanarClipMaskArgs {
85
85
  * @public
86
86
  */
87
87
  export interface ElementPlanarClipMaskArgs extends BasicPlanarClipMaskArgs {
88
- /** @see [[PlanarClipMaskSettings.modelIds]]. */
88
+ /** See [[PlanarClipMaskSettings.modelIds]]. */
89
89
  modelIds?: Iterable<Id64String>;
90
90
  /** The elements used by the mask. @see [[PlanarClipMaskSettings.subCategoryOrElementIds]]. */
91
91
  elementIds: Iterable<Id64String>;
@@ -100,7 +100,7 @@ export interface ElementPlanarClipMaskArgs extends BasicPlanarClipMaskArgs {
100
100
  * @public
101
101
  */
102
102
  export interface SubCategoryPlanarClipMaskArgs extends BasicPlanarClipMaskArgs {
103
- /** @see [[PlanarClipMaskSettings.modelIds]]. */
103
+ /** See [[PlanarClipMaskSettings.modelIds]]. */
104
104
  modelIds?: Iterable<Id64String>;
105
105
  /** The subcategories used by the mask. @see [[PlanarClipMaskSettings.subCategoryOrElementIds]]. */
106
106
  subCategoryIds: Iterable<Id64String>;
@@ -115,7 +115,7 @@ export interface SubCategoryPlanarClipMaskArgs extends BasicPlanarClipMaskArgs {
115
115
  * @public
116
116
  */
117
117
  export interface PriorityPlanarClipMaskArgs extends BasicPlanarClipMaskArgs {
118
- /** @see [[PlanarClipMaskSettings.priority]]. */
118
+ /** See [[PlanarClipMaskSettings.priority]]. */
119
119
  priority: number;
120
120
  /** @internal */
121
121
  exclude?: never;
@@ -1 +1 @@
1
- {"version":3,"file":"PlanarClipMask.d.ts","sourceRoot":"","sources":["../../src/PlanarClipMask.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PlanarClipMask.d.ts","sourceRoot":"","sources":["../../src/PlanarClipMask.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"PlanarClipMask.js","sourceRoot":"","sources":["../../src/PlanarClipMask.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/** @packageDocumentation\r\n * @module DisplayStyles\r\n */\r\n\r\nimport { CompressedId64Set, Id64String, OrderedId64Iterable } from \"@itwin/core-bentley\";\r\n\r\n/** The different modes by which a [[PlanarClipMaskSettings]] collects the geometry used to mask a model.\r\n * @public\r\n * @extensions\r\n */\r\nexport enum PlanarClipMaskMode {\r\n /** No masking. */\r\n None = 0,\r\n /** Mask based on priority. Different types of models have different default priorities as enumerated by [[PlanarClipMaskPriority]].\r\n * For example, background maps have the lowest priority, so they are masked by all other types, while design models have the highest priority and are therefore never masked.\r\n * The priority of a reality model can be overridden by [[PlanarClipMaskSettings.priority]]. This is useful to allow one reality model to mask another overlapping one.\r\n */\r\n Priority = 1,\r\n /** Indicates that masks should be produced from the geometry in a set of [GeometricModel]($backend)s. */\r\n Models = 2,\r\n /** Indicates that masks should be produced from geometry belonging to a set of subcategories. */\r\n IncludeSubCategories = 3,\r\n /** Indicates that masks should be produced from the geometry of a set of [GeometricElement]($backend)s. */\r\n IncludeElements = 4,\r\n /** Indicates that masks should be produced from the geometry of all [GeometricElement]($backend)s in a view, **except** for a specified set of excluded elements. */\r\n ExcludeElements = 5,\r\n}\r\n\r\n/** The default priority values for a [[PlanarClipMaskSettings]], based on model type. Models with a lower priority are masked by models with a higher priority.\r\n * The default can be overridden by [[PlanarClipMaskSettings.priority]].\r\n * @public\r\n * @extensions\r\n */\r\nexport enum PlanarClipMaskPriority {\r\n /** Background map. */\r\n BackgroundMap = -2048,\r\n /** A reality model that spans the globe - e.g., OpenStreetMaps Buildings. */\r\n GlobalRealityModel = -1024,\r\n /** A reality model with a bounded range. */\r\n RealityModel = 0,\r\n /** A design model stored in the [IModelDb]($backend). */\r\n DesignModel = 2048,\r\n}\r\n\r\n/** JSON representation of a [[PlanarClipMaskSettings]].\r\n * @see [[DisplayStyleSettingsProps.planarClipOvr]] and [[ContextRealityModelProps.planarClipMask]].\r\n * @public\r\n * @extensions\r\n */\r\nexport interface PlanarClipMaskProps {\r\n /** Controls how the mask geometry is collected */\r\n mode: PlanarClipMaskMode;\r\n /** @see [[PlanarClipMaskSettings.modelIds]]. */\r\n modelIds?: CompressedId64Set;\r\n /** @see [[PlanarClipMaskSettings.subCategoryOrElementIds]]. */\r\n subCategoryOrElementIds?: CompressedId64Set;\r\n /** @see [[PlanarClipMaskSettings.priority]]. */\r\n priority?: number;\r\n /** @see [[PlanarClipMaskSettings.transparency]]. */\r\n transparency?: number;\r\n /** @see PlanarClipMaskSettings.invert */\r\n invert?: boolean;\r\n}\r\n\r\n/** Basic arguments supplied to [[PlanarClipMaskSettings.create]].\r\n * @public\r\n */\r\nexport interface BasicPlanarClipMaskArgs {\r\n /** @see [[PlanarClipMaskSettings.transparency]]. */\r\n transparency?: number;\r\n /** @see [[PlanarClipMaskSettings.invert]]. */\r\n invert?: boolean;\r\n}\r\n\r\n/** Arguments supplied to [[PlanarClipMaskSettings.create]] to create a mask of [[PlanarClipMaskMode.Models]].\r\n * @public\r\n */\r\nexport interface ModelPlanarClipMaskArgs extends BasicPlanarClipMaskArgs {\r\n /** @see [[PlanarClipMaskSettings.modelIds]]. */\r\n modelIds?: Iterable<Id64String>;\r\n /** @internal */\r\n exclude?: never;\r\n /** @internal */\r\n elementIds?: never;\r\n /** @internal */\r\n subCategoryIds?: never;\r\n /** @internal */\r\n priority?: never;\r\n}\r\n\r\n/** Arguments supplied to [[PlanarClipMaskSettings.create]] to create a mask of [[PlanarClipMaskMode.IncludeElements]] or [[PlanarClipMaskMode.ExcludeElements]].\r\n * @public\r\n */\r\nexport interface ElementPlanarClipMaskArgs extends BasicPlanarClipMaskArgs {\r\n /** @see [[PlanarClipMaskSettings.modelIds]]. */\r\n modelIds?: Iterable<Id64String>;\r\n /** The elements used by the mask. @see [[PlanarClipMaskSettings.subCategoryOrElementIds]]. */\r\n elementIds: Iterable<Id64String>;\r\n /** If true, creates a mask of [[PlanarClipMaskMode.ExcludeElements]]; otherwise, [[PlanarClipMaskMode.IncludeElements]]. */\r\n exclude?: boolean;\r\n /** @internal */\r\n subCategoryIds?: never;\r\n /** @internal */\r\n priority?: never;\r\n}\r\n\r\n/** Arguments supplied to [[PlanarClipMaskSettings.create]] to create a mask of [[PlanarClipMaskMode.IncludeSubCategories]].\r\n * @public\r\n */\r\nexport interface SubCategoryPlanarClipMaskArgs extends BasicPlanarClipMaskArgs {\r\n /** @see [[PlanarClipMaskSettings.modelIds]]. */\r\n modelIds?: Iterable<Id64String>;\r\n /** The subcategories used by the mask. @see [[PlanarClipMaskSettings.subCategoryOrElementIds]]. */\r\n subCategoryIds: Iterable<Id64String>;\r\n /** @internal */\r\n exclude?: never;\r\n /** @internal */\r\n elementIds?: never;\r\n /** @internal */\r\n priority?: never;\r\n}\r\n\r\n/** Arguments supplied to [[PlanarClipMaskSettings.create]] to create a mask of [[PlanarClipMaskMode.Priority]].\r\n * @public\r\n */\r\nexport interface PriorityPlanarClipMaskArgs extends BasicPlanarClipMaskArgs {\r\n /** @see [[PlanarClipMaskSettings.priority]]. */\r\n priority: number;\r\n /** @internal */\r\n exclude?: never;\r\n /** @internal */\r\n elementIds?: never;\r\n /** @internal */\r\n modelIds?: never;\r\n}\r\n\r\n/** Describes how to mask the geometry of one [GeometricModel]($backend) for display. The mask is produced by projecting geometry from any number of other models -\r\n * optionally filtered by [SubCategory]($backend) or by a set of specific [GeometricElement]($backend)s - onto a plane. Regions of the masked model that intersect the\r\n * mask are rendered partially or completely transparent. This is useful for, e.g., making subsurface geometry visible below the background map, or clipping out portions\r\n * of a reality model that intersect a design model.\r\n * @note Currently reality models (including background maps and terrain) can be masked, but design models can only produce masks.\r\n * @see [[DisplayStyleSettings.planarClipMasks]] to define clip masks for a [DisplayStyle]($backend).\r\n * @see [[ContextRealityModel.planarClipMaskSettings]] to apply a clip mask to a context reality model.\r\n * @public\r\n */\r\nexport class PlanarClipMaskSettings {\r\n /** Specifies how the mask geometry is produced. */\r\n public readonly mode: PlanarClipMaskMode;\r\n /** For any mode other than [[PlanarClipMaskMode.Priority]], the Ids of the [GeometricModel]($backend)s containing the geometry used to produce the mask.\r\n * If `undefined`, the set of all models in the view's [ModelSelector]($backend) is used.\r\n * The mask geometry can be filtered by [[subCategoryOrElementIds]].\r\n */\r\n public readonly modelIds?: OrderedId64Iterable;\r\n /** For [[PlanarClipMaskMode.IncludeElements]] or [[PlanarClipMaskMode.ExcludedElements]], the Ids of the [GeometricElement]($backend)s to include or exclude from masking;\r\n * for [[PlanarClipMaskMode.IncludeSubCategories]], the Ids of the subcategories whose geometry contributes to the mask.\r\n */\r\n public readonly subCategoryOrElementIds?: OrderedId64Iterable;\r\n /** For [[PlanarClipMaskMode.Priority]], the priority value. */\r\n public readonly priority?: number;\r\n /** A value between 0 and 1 indicating an override for mask transparency. A transparency of 0 indicates complete masking. 1 is completely transparent (no masking).\r\n If no transparency is defined then the transparencies of the mask elements are used.\r\n */\r\n public readonly transparency?: number;\r\n /** A value of true indicates that the mask should be inverted and only content within the mask should be displayed, in other words the area inside the mask is displayed rather than outside. */\r\n public readonly invert: boolean;\r\n private readonly _modelIds?: CompressedId64Set;\r\n private readonly _subCategoryOrElementIds?: CompressedId64Set;\r\n\r\n /** The compressed representation of [[modelIds]]. */\r\n public get compressedModelIds(): CompressedId64Set | undefined {\r\n return this._modelIds;\r\n }\r\n\r\n /** Create a new [[PlanarClipMaskSettings]] object from its JSON representation. */\r\n public static fromJSON(json?: PlanarClipMaskProps): PlanarClipMaskSettings {\r\n if (!json || undefined === json.mode)\r\n return this.defaults;\r\n\r\n return new PlanarClipMaskSettings(json.mode, json.transparency, json.modelIds, json.subCategoryOrElementIds, json.priority, json.invert);\r\n }\r\n\r\n /** Create a new PlanarClipMaskSettings. */\r\n public static create(args: ModelPlanarClipMaskArgs | ElementPlanarClipMaskArgs | SubCategoryPlanarClipMaskArgs | PriorityPlanarClipMaskArgs): PlanarClipMaskSettings {\r\n const modelIds = args.modelIds ? CompressedId64Set.sortAndCompress(args.modelIds) : undefined;\r\n if (undefined !== args.priority)\r\n return new PlanarClipMaskSettings(PlanarClipMaskMode.Priority, args.transparency, undefined, undefined, args.priority, args.invert);\r\n else if (undefined !== args.subCategoryIds)\r\n return new PlanarClipMaskSettings(PlanarClipMaskMode.IncludeSubCategories, args.transparency, modelIds, CompressedId64Set.sortAndCompress(args.subCategoryIds), undefined, args.invert);\r\n else if (undefined !== args.elementIds)\r\n return new PlanarClipMaskSettings(args.exclude ? PlanarClipMaskMode.ExcludeElements : PlanarClipMaskMode.IncludeElements, args.transparency, modelIds, CompressedId64Set.sortAndCompress(args.elementIds), undefined, args.invert);\r\n else\r\n return new PlanarClipMaskSettings(PlanarClipMaskMode.Models, args.transparency, modelIds, undefined, undefined, args.invert);\r\n }\r\n\r\n /** Create JSON object representing this [[PlanarClipMaskSettings]] */\r\n public toJSON(): PlanarClipMaskProps {\r\n const props: PlanarClipMaskProps = { mode: this.mode };\r\n if (undefined !== this._modelIds)\r\n props.modelIds = this._modelIds;\r\n\r\n if (undefined !== this._subCategoryOrElementIds)\r\n props.subCategoryOrElementIds = this._subCategoryOrElementIds;\r\n\r\n if (undefined !== this.priority)\r\n props.priority = this.priority;\r\n\r\n if (undefined !== this.transparency)\r\n props.transparency = this.transparency;\r\n\r\n if (this.invert)\r\n props.invert = true;\r\n\r\n return props;\r\n }\r\n\r\n /** Returns true if masking is enabled. */\r\n public get isValid(): boolean {\r\n return this.mode !== PlanarClipMaskMode.None;\r\n }\r\n\r\n public equals(other: PlanarClipMaskSettings): boolean {\r\n return this.mode === other.mode &&\r\n this.priority === other.priority &&\r\n this.transparency === other.transparency &&\r\n this.invert === other.invert &&\r\n this._modelIds === other._modelIds &&\r\n this._subCategoryOrElementIds === other._subCategoryOrElementIds;\r\n }\r\n\r\n /** Create a copy of this TerrainSettings, optionally modifying some of its properties.\r\n * @param changedProps JSON representation of the properties to change.\r\n * @returns A PlanarClipMaskSettings with all of its properties set to match those of`this`, except those explicitly defined in `changedProps`.\r\n */\r\n public clone(changedProps?: PlanarClipMaskProps): PlanarClipMaskSettings {\r\n if (undefined === changedProps)\r\n return this;\r\n\r\n return PlanarClipMaskSettings.fromJSON({\r\n ...this.toJSON(),\r\n ...changedProps,\r\n });\r\n }\r\n\r\n private constructor(mode: PlanarClipMaskMode, transparency?: number, modelIds?: CompressedId64Set, subCategoryOrElementIds?: CompressedId64Set, priority?: number, invert?: boolean) {\r\n this.mode = mode;\r\n this._modelIds = modelIds;\r\n this._subCategoryOrElementIds = subCategoryOrElementIds;\r\n this.priority = priority;\r\n this.invert = true === invert;\r\n this.transparency = undefined !== transparency ? Math.max(0, Math.min(1, transparency)) : undefined;\r\n\r\n if (modelIds)\r\n this.modelIds = CompressedId64Set.iterable(modelIds);\r\n\r\n if (subCategoryOrElementIds)\r\n this.subCategoryOrElementIds = CompressedId64Set.iterable(subCategoryOrElementIds);\r\n }\r\n\r\n /** A default PlanarClipMask which masks nothing. */\r\n public static defaults = new PlanarClipMaskSettings(PlanarClipMaskMode.None);\r\n}\r\n"]}
1
+ {"version":3,"file":"PlanarClipMask.js","sourceRoot":"","sources":["../../src/PlanarClipMask.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/** @packageDocumentation\r\n * @module DisplayStyles\r\n */\r\n\r\nimport { CompressedId64Set, Id64String, OrderedId64Iterable } from \"@itwin/core-bentley\";\r\n\r\n/** The different modes by which a [[PlanarClipMaskSettings]] collects the geometry used to mask a model.\r\n * @public\r\n * @extensions\r\n */\r\nexport enum PlanarClipMaskMode {\r\n /** No masking. */\r\n None = 0,\r\n /** Mask based on priority. Different types of models have different default priorities as enumerated by [[PlanarClipMaskPriority]].\r\n * For example, background maps have the lowest priority, so they are masked by all other types, while design models have the highest priority and are therefore never masked.\r\n * The priority of a reality model can be overridden by [[PlanarClipMaskSettings.priority]]. This is useful to allow one reality model to mask another overlapping one.\r\n */\r\n Priority = 1,\r\n /** Indicates that masks should be produced from the geometry in a set of [GeometricModel]($backend)s. */\r\n Models = 2,\r\n /** Indicates that masks should be produced from geometry belonging to a set of subcategories. */\r\n IncludeSubCategories = 3,\r\n /** Indicates that masks should be produced from the geometry of a set of [GeometricElement]($backend)s. */\r\n IncludeElements = 4,\r\n /** Indicates that masks should be produced from the geometry of all [GeometricElement]($backend)s in a view, **except** for a specified set of excluded elements. */\r\n ExcludeElements = 5,\r\n}\r\n\r\n/** The default priority values for a [[PlanarClipMaskSettings]], based on model type. Models with a lower priority are masked by models with a higher priority.\r\n * The default can be overridden by [[PlanarClipMaskSettings.priority]].\r\n * @public\r\n * @extensions\r\n */\r\nexport enum PlanarClipMaskPriority {\r\n /** Background map. */\r\n BackgroundMap = -2048,\r\n /** A reality model that spans the globe - e.g., OpenStreetMaps Buildings. */\r\n GlobalRealityModel = -1024,\r\n /** A reality model with a bounded range. */\r\n RealityModel = 0,\r\n /** A design model stored in the [IModelDb]($backend). */\r\n DesignModel = 2048,\r\n}\r\n\r\n/** JSON representation of a [[PlanarClipMaskSettings]].\r\n * @see [[DisplayStyleSettingsProps.planarClipOvr]] and [[ContextRealityModelProps.planarClipMask]].\r\n * @public\r\n * @extensions\r\n */\r\nexport interface PlanarClipMaskProps {\r\n /** Controls how the mask geometry is collected */\r\n mode: PlanarClipMaskMode;\r\n /** See [[PlanarClipMaskSettings.modelIds]]. */\r\n modelIds?: CompressedId64Set;\r\n /** See [[PlanarClipMaskSettings.subCategoryOrElementIds]]. */\r\n subCategoryOrElementIds?: CompressedId64Set;\r\n /** See [[PlanarClipMaskSettings.priority]]. */\r\n priority?: number;\r\n /** See [[PlanarClipMaskSettings.transparency]]. */\r\n transparency?: number;\r\n /** See PlanarClipMaskSettings.invert */\r\n invert?: boolean;\r\n}\r\n\r\n/** Basic arguments supplied to [[PlanarClipMaskSettings.create]].\r\n * @public\r\n */\r\nexport interface BasicPlanarClipMaskArgs {\r\n /** See [[PlanarClipMaskSettings.transparency]]. */\r\n transparency?: number;\r\n /** See [[PlanarClipMaskSettings.invert]]. */\r\n invert?: boolean;\r\n}\r\n\r\n/** Arguments supplied to [[PlanarClipMaskSettings.create]] to create a mask of [[PlanarClipMaskMode.Models]].\r\n * @public\r\n */\r\nexport interface ModelPlanarClipMaskArgs extends BasicPlanarClipMaskArgs {\r\n /** See [[PlanarClipMaskSettings.modelIds]]. */\r\n modelIds?: Iterable<Id64String>;\r\n /** @internal */\r\n exclude?: never;\r\n /** @internal */\r\n elementIds?: never;\r\n /** @internal */\r\n subCategoryIds?: never;\r\n /** @internal */\r\n priority?: never;\r\n}\r\n\r\n/** Arguments supplied to [[PlanarClipMaskSettings.create]] to create a mask of [[PlanarClipMaskMode.IncludeElements]] or [[PlanarClipMaskMode.ExcludeElements]].\r\n * @public\r\n */\r\nexport interface ElementPlanarClipMaskArgs extends BasicPlanarClipMaskArgs {\r\n /** See [[PlanarClipMaskSettings.modelIds]]. */\r\n modelIds?: Iterable<Id64String>;\r\n /** The elements used by the mask. @see [[PlanarClipMaskSettings.subCategoryOrElementIds]]. */\r\n elementIds: Iterable<Id64String>;\r\n /** If true, creates a mask of [[PlanarClipMaskMode.ExcludeElements]]; otherwise, [[PlanarClipMaskMode.IncludeElements]]. */\r\n exclude?: boolean;\r\n /** @internal */\r\n subCategoryIds?: never;\r\n /** @internal */\r\n priority?: never;\r\n}\r\n\r\n/** Arguments supplied to [[PlanarClipMaskSettings.create]] to create a mask of [[PlanarClipMaskMode.IncludeSubCategories]].\r\n * @public\r\n */\r\nexport interface SubCategoryPlanarClipMaskArgs extends BasicPlanarClipMaskArgs {\r\n /** See [[PlanarClipMaskSettings.modelIds]]. */\r\n modelIds?: Iterable<Id64String>;\r\n /** The subcategories used by the mask. @see [[PlanarClipMaskSettings.subCategoryOrElementIds]]. */\r\n subCategoryIds: Iterable<Id64String>;\r\n /** @internal */\r\n exclude?: never;\r\n /** @internal */\r\n elementIds?: never;\r\n /** @internal */\r\n priority?: never;\r\n}\r\n\r\n/** Arguments supplied to [[PlanarClipMaskSettings.create]] to create a mask of [[PlanarClipMaskMode.Priority]].\r\n * @public\r\n */\r\nexport interface PriorityPlanarClipMaskArgs extends BasicPlanarClipMaskArgs {\r\n /** See [[PlanarClipMaskSettings.priority]]. */\r\n priority: number;\r\n /** @internal */\r\n exclude?: never;\r\n /** @internal */\r\n elementIds?: never;\r\n /** @internal */\r\n modelIds?: never;\r\n}\r\n\r\n/** Describes how to mask the geometry of one [GeometricModel]($backend) for display. The mask is produced by projecting geometry from any number of other models -\r\n * optionally filtered by [SubCategory]($backend) or by a set of specific [GeometricElement]($backend)s - onto a plane. Regions of the masked model that intersect the\r\n * mask are rendered partially or completely transparent. This is useful for, e.g., making subsurface geometry visible below the background map, or clipping out portions\r\n * of a reality model that intersect a design model.\r\n * @note Currently reality models (including background maps and terrain) can be masked, but design models can only produce masks.\r\n * @see [[DisplayStyleSettings.planarClipMasks]] to define clip masks for a [DisplayStyle]($backend).\r\n * @see [[ContextRealityModel.planarClipMaskSettings]] to apply a clip mask to a context reality model.\r\n * @public\r\n */\r\nexport class PlanarClipMaskSettings {\r\n /** Specifies how the mask geometry is produced. */\r\n public readonly mode: PlanarClipMaskMode;\r\n /** For any mode other than [[PlanarClipMaskMode.Priority]], the Ids of the [GeometricModel]($backend)s containing the geometry used to produce the mask.\r\n * If `undefined`, the set of all models in the view's [ModelSelector]($backend) is used.\r\n * The mask geometry can be filtered by [[subCategoryOrElementIds]].\r\n */\r\n public readonly modelIds?: OrderedId64Iterable;\r\n /** For [[PlanarClipMaskMode.IncludeElements]] or [[PlanarClipMaskMode.ExcludedElements]], the Ids of the [GeometricElement]($backend)s to include or exclude from masking;\r\n * for [[PlanarClipMaskMode.IncludeSubCategories]], the Ids of the subcategories whose geometry contributes to the mask.\r\n */\r\n public readonly subCategoryOrElementIds?: OrderedId64Iterable;\r\n /** For [[PlanarClipMaskMode.Priority]], the priority value. */\r\n public readonly priority?: number;\r\n /** A value between 0 and 1 indicating an override for mask transparency. A transparency of 0 indicates complete masking. 1 is completely transparent (no masking).\r\n If no transparency is defined then the transparencies of the mask elements are used.\r\n */\r\n public readonly transparency?: number;\r\n /** A value of true indicates that the mask should be inverted and only content within the mask should be displayed, in other words the area inside the mask is displayed rather than outside. */\r\n public readonly invert: boolean;\r\n private readonly _modelIds?: CompressedId64Set;\r\n private readonly _subCategoryOrElementIds?: CompressedId64Set;\r\n\r\n /** The compressed representation of [[modelIds]]. */\r\n public get compressedModelIds(): CompressedId64Set | undefined {\r\n return this._modelIds;\r\n }\r\n\r\n /** Create a new [[PlanarClipMaskSettings]] object from its JSON representation. */\r\n public static fromJSON(json?: PlanarClipMaskProps): PlanarClipMaskSettings {\r\n if (!json || undefined === json.mode)\r\n return this.defaults;\r\n\r\n return new PlanarClipMaskSettings(json.mode, json.transparency, json.modelIds, json.subCategoryOrElementIds, json.priority, json.invert);\r\n }\r\n\r\n /** Create a new PlanarClipMaskSettings. */\r\n public static create(args: ModelPlanarClipMaskArgs | ElementPlanarClipMaskArgs | SubCategoryPlanarClipMaskArgs | PriorityPlanarClipMaskArgs): PlanarClipMaskSettings {\r\n const modelIds = args.modelIds ? CompressedId64Set.sortAndCompress(args.modelIds) : undefined;\r\n if (undefined !== args.priority)\r\n return new PlanarClipMaskSettings(PlanarClipMaskMode.Priority, args.transparency, undefined, undefined, args.priority, args.invert);\r\n else if (undefined !== args.subCategoryIds)\r\n return new PlanarClipMaskSettings(PlanarClipMaskMode.IncludeSubCategories, args.transparency, modelIds, CompressedId64Set.sortAndCompress(args.subCategoryIds), undefined, args.invert);\r\n else if (undefined !== args.elementIds)\r\n return new PlanarClipMaskSettings(args.exclude ? PlanarClipMaskMode.ExcludeElements : PlanarClipMaskMode.IncludeElements, args.transparency, modelIds, CompressedId64Set.sortAndCompress(args.elementIds), undefined, args.invert);\r\n else\r\n return new PlanarClipMaskSettings(PlanarClipMaskMode.Models, args.transparency, modelIds, undefined, undefined, args.invert);\r\n }\r\n\r\n /** Create JSON object representing this [[PlanarClipMaskSettings]] */\r\n public toJSON(): PlanarClipMaskProps {\r\n const props: PlanarClipMaskProps = { mode: this.mode };\r\n if (undefined !== this._modelIds)\r\n props.modelIds = this._modelIds;\r\n\r\n if (undefined !== this._subCategoryOrElementIds)\r\n props.subCategoryOrElementIds = this._subCategoryOrElementIds;\r\n\r\n if (undefined !== this.priority)\r\n props.priority = this.priority;\r\n\r\n if (undefined !== this.transparency)\r\n props.transparency = this.transparency;\r\n\r\n if (this.invert)\r\n props.invert = true;\r\n\r\n return props;\r\n }\r\n\r\n /** Returns true if masking is enabled. */\r\n public get isValid(): boolean {\r\n return this.mode !== PlanarClipMaskMode.None;\r\n }\r\n\r\n public equals(other: PlanarClipMaskSettings): boolean {\r\n return this.mode === other.mode &&\r\n this.priority === other.priority &&\r\n this.transparency === other.transparency &&\r\n this.invert === other.invert &&\r\n this._modelIds === other._modelIds &&\r\n this._subCategoryOrElementIds === other._subCategoryOrElementIds;\r\n }\r\n\r\n /** Create a copy of this TerrainSettings, optionally modifying some of its properties.\r\n * @param changedProps JSON representation of the properties to change.\r\n * @returns A PlanarClipMaskSettings with all of its properties set to match those of`this`, except those explicitly defined in `changedProps`.\r\n */\r\n public clone(changedProps?: PlanarClipMaskProps): PlanarClipMaskSettings {\r\n if (undefined === changedProps)\r\n return this;\r\n\r\n return PlanarClipMaskSettings.fromJSON({\r\n ...this.toJSON(),\r\n ...changedProps,\r\n });\r\n }\r\n\r\n private constructor(mode: PlanarClipMaskMode, transparency?: number, modelIds?: CompressedId64Set, subCategoryOrElementIds?: CompressedId64Set, priority?: number, invert?: boolean) {\r\n this.mode = mode;\r\n this._modelIds = modelIds;\r\n this._subCategoryOrElementIds = subCategoryOrElementIds;\r\n this.priority = priority;\r\n this.invert = true === invert;\r\n this.transparency = undefined !== transparency ? Math.max(0, Math.min(1, transparency)) : undefined;\r\n\r\n if (modelIds)\r\n this.modelIds = CompressedId64Set.iterable(modelIds);\r\n\r\n if (subCategoryOrElementIds)\r\n this.subCategoryOrElementIds = CompressedId64Set.iterable(subCategoryOrElementIds);\r\n }\r\n\r\n /** A default PlanarClipMask which masks nothing. */\r\n public static defaults = new PlanarClipMaskSettings(PlanarClipMaskMode.None);\r\n}\r\n"]}