@itwin/core-common 4.6.0-dev.22 → 4.6.0-dev.23

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 (416) hide show
  1. package/lib/cjs/AmbientOcclusion.js +1 -1
  2. package/lib/cjs/AmbientOcclusion.js.map +1 -1
  3. package/lib/cjs/AnalysisStyle.js +1 -1
  4. package/lib/cjs/AnalysisStyle.js.map +1 -1
  5. package/lib/cjs/Atmosphere.js +12 -12
  6. package/lib/cjs/Atmosphere.js.map +1 -1
  7. package/lib/cjs/BackgroundMapProvider.js +1 -1
  8. package/lib/cjs/BackgroundMapProvider.js.map +1 -1
  9. package/lib/cjs/BackgroundMapSettings.js +1 -1
  10. package/lib/cjs/BackgroundMapSettings.js.map +1 -1
  11. package/lib/cjs/Base64EncodedString.js +1 -1
  12. package/lib/cjs/Base64EncodedString.js.map +1 -1
  13. package/lib/cjs/BlobReader.js.map +1 -1
  14. package/lib/cjs/BriefcaseTypes.js +5 -5
  15. package/lib/cjs/BriefcaseTypes.js.map +1 -1
  16. package/lib/cjs/Camera.js.map +1 -1
  17. package/lib/cjs/ChangedElements.js +1 -1
  18. package/lib/cjs/ChangedElements.js.map +1 -1
  19. package/lib/cjs/ChangesetProps.js +1 -1
  20. package/lib/cjs/ChangesetProps.js.map +1 -1
  21. package/lib/cjs/ClipStyle.js +3 -3
  22. package/lib/cjs/ClipStyle.js.map +1 -1
  23. package/lib/cjs/Code.d.ts +1 -0
  24. package/lib/cjs/Code.d.ts.map +1 -1
  25. package/lib/cjs/Code.js +3 -2
  26. package/lib/cjs/Code.js.map +1 -1
  27. package/lib/cjs/ColorDef.js +1 -1
  28. package/lib/cjs/ColorDef.js.map +1 -1
  29. package/lib/cjs/CommonLoggerCategory.js +1 -1
  30. package/lib/cjs/CommonLoggerCategory.js.map +1 -1
  31. package/lib/cjs/ConcurrentQuery.d.ts +11 -11
  32. package/lib/cjs/ConcurrentQuery.d.ts.map +1 -1
  33. package/lib/cjs/ConcurrentQuery.js +6 -6
  34. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  35. package/lib/cjs/ContextRealityModel.js +5 -5
  36. package/lib/cjs/ContextRealityModel.js.map +1 -1
  37. package/lib/cjs/DisplayStyleSettings.js +1 -1
  38. package/lib/cjs/DisplayStyleSettings.js.map +1 -1
  39. package/lib/cjs/ECSqlReader.js +1 -1
  40. package/lib/cjs/ECSqlReader.js.map +1 -1
  41. package/lib/cjs/ECSqlTypes.js +4 -4
  42. package/lib/cjs/ECSqlTypes.js.map +1 -1
  43. package/lib/cjs/ElementMesh.js.map +1 -1
  44. package/lib/cjs/ElementProps.js +4 -4
  45. package/lib/cjs/ElementProps.js.map +1 -1
  46. package/lib/cjs/EmphasizeElementsProps.js +1 -1
  47. package/lib/cjs/EmphasizeElementsProps.js.map +1 -1
  48. package/lib/cjs/EntityProps.d.ts +2 -2
  49. package/lib/cjs/EntityProps.d.ts.map +1 -1
  50. package/lib/cjs/EntityProps.js +1 -1
  51. package/lib/cjs/EntityProps.js.map +1 -1
  52. package/lib/cjs/EntityReference.js +2 -2
  53. package/lib/cjs/EntityReference.js.map +1 -1
  54. package/lib/cjs/Environment.js +1 -1
  55. package/lib/cjs/Environment.js.map +1 -1
  56. package/lib/cjs/FeatureIndex.js +1 -1
  57. package/lib/cjs/FeatureIndex.js.map +1 -1
  58. package/lib/cjs/FeatureSymbology.js +3 -3
  59. package/lib/cjs/FeatureSymbology.js.map +1 -1
  60. package/lib/cjs/FeatureTable.js +3 -3
  61. package/lib/cjs/FeatureTable.js.map +1 -1
  62. package/lib/cjs/Fonts.js +1 -1
  63. package/lib/cjs/Fonts.js.map +1 -1
  64. package/lib/cjs/Frustum.d.ts.map +1 -1
  65. package/lib/cjs/Frustum.js +3 -1
  66. package/lib/cjs/Frustum.js.map +1 -1
  67. package/lib/cjs/GenericInstanceFilter.js +2 -2
  68. package/lib/cjs/GenericInstanceFilter.js.map +1 -1
  69. package/lib/cjs/GeoCoordinateServices.js +1 -1
  70. package/lib/cjs/GeoCoordinateServices.js.map +1 -1
  71. package/lib/cjs/GeometryParams.js +3 -3
  72. package/lib/cjs/GeometryParams.js.map +1 -1
  73. package/lib/cjs/GeometrySummary.js +1 -1
  74. package/lib/cjs/GeometrySummary.js.map +1 -1
  75. package/lib/cjs/Gradient.js +5 -5
  76. package/lib/cjs/Gradient.js.map +1 -1
  77. package/lib/cjs/GraphicParams.js +1 -1
  78. package/lib/cjs/GraphicParams.js.map +1 -1
  79. package/lib/cjs/GroundPlane.js +1 -1
  80. package/lib/cjs/GroundPlane.js.map +1 -1
  81. package/lib/cjs/HSVColor.js +1 -1
  82. package/lib/cjs/HSVColor.js.map +1 -1
  83. package/lib/cjs/HiddenLine.js +1 -1
  84. package/lib/cjs/HiddenLine.js.map +1 -1
  85. package/lib/cjs/Hilite.js +1 -1
  86. package/lib/cjs/Hilite.js.map +1 -1
  87. package/lib/cjs/IModel.js +1 -1
  88. package/lib/cjs/IModel.js.map +1 -1
  89. package/lib/cjs/IModelVersion.js.map +1 -1
  90. package/lib/cjs/Image.js +2 -2
  91. package/lib/cjs/Image.js.map +1 -1
  92. package/lib/cjs/LightSettings.js +1 -1
  93. package/lib/cjs/LightSettings.js.map +1 -1
  94. package/lib/cjs/LinePixels.js +1 -1
  95. package/lib/cjs/LinePixels.js.map +1 -1
  96. package/lib/cjs/Localization.js.map +1 -1
  97. package/lib/cjs/MapImagerySettings.js +1 -1
  98. package/lib/cjs/MapImagerySettings.js.map +1 -1
  99. package/lib/cjs/MapLayerSettings.js.map +1 -1
  100. package/lib/cjs/MassProperties.js +1 -1
  101. package/lib/cjs/MassProperties.js.map +1 -1
  102. package/lib/cjs/MaterialProps.js +2 -2
  103. package/lib/cjs/MaterialProps.js.map +1 -1
  104. package/lib/cjs/ModelGeometryChanges.js +2 -2
  105. package/lib/cjs/ModelGeometryChanges.js.map +1 -1
  106. package/lib/cjs/NativeAppProps.js +2 -2
  107. package/lib/cjs/NativeAppProps.js.map +1 -1
  108. package/lib/cjs/OctEncodedNormal.js.map +1 -1
  109. package/lib/cjs/PlanarClipMask.js +3 -3
  110. package/lib/cjs/PlanarClipMask.js.map +1 -1
  111. package/lib/cjs/QPoint.js +3 -3
  112. package/lib/cjs/QPoint.js.map +1 -1
  113. package/lib/cjs/RealityDataAccessProps.d.ts +4 -4
  114. package/lib/cjs/RealityDataAccessProps.d.ts.map +1 -1
  115. package/lib/cjs/RealityDataAccessProps.js +1 -1
  116. package/lib/cjs/RealityDataAccessProps.js.map +1 -1
  117. package/lib/cjs/RealityModelDisplaySettings.js +2 -2
  118. package/lib/cjs/RealityModelDisplaySettings.js.map +1 -1
  119. package/lib/cjs/Render.d.ts +2 -2
  120. package/lib/cjs/Render.d.ts.map +1 -1
  121. package/lib/cjs/Render.js +1 -1
  122. package/lib/cjs/Render.js.map +1 -1
  123. package/lib/cjs/RenderMaterial.js +1 -1
  124. package/lib/cjs/RenderMaterial.js.map +1 -1
  125. package/lib/cjs/RenderSchedule.js +1 -1
  126. package/lib/cjs/RenderSchedule.js.map +1 -1
  127. package/lib/cjs/RenderTexture.js +1 -1
  128. package/lib/cjs/RenderTexture.js.map +1 -1
  129. package/lib/cjs/RgbColor.js.map +1 -1
  130. package/lib/cjs/RpcInterface.js.map +1 -1
  131. package/lib/cjs/SkyBox.js +3 -3
  132. package/lib/cjs/SkyBox.js.map +1 -1
  133. package/lib/cjs/SolarCalculate.js.map +1 -1
  134. package/lib/cjs/SolarShadows.js +1 -1
  135. package/lib/cjs/SolarShadows.js.map +1 -1
  136. package/lib/cjs/SpatialClassification.js +2 -2
  137. package/lib/cjs/SpatialClassification.js.map +1 -1
  138. package/lib/cjs/SubCategoryAppearance.js +1 -1
  139. package/lib/cjs/SubCategoryAppearance.js.map +1 -1
  140. package/lib/cjs/SubCategoryOverride.js +1 -1
  141. package/lib/cjs/SubCategoryOverride.js.map +1 -1
  142. package/lib/cjs/TerrainSettings.js +2 -2
  143. package/lib/cjs/TerrainSettings.js.map +1 -1
  144. package/lib/cjs/TextureMapping.js +1 -1
  145. package/lib/cjs/TextureMapping.js.map +1 -1
  146. package/lib/cjs/TextureProps.js +1 -1
  147. package/lib/cjs/TextureProps.js.map +1 -1
  148. package/lib/cjs/ThematicDisplay.js +5 -5
  149. package/lib/cjs/ThematicDisplay.js.map +1 -1
  150. package/lib/cjs/TileProps.js +1 -1
  151. package/lib/cjs/TileProps.js.map +1 -1
  152. package/lib/cjs/Tween.js.map +1 -1
  153. package/lib/cjs/TxnAction.js +1 -1
  154. package/lib/cjs/TxnAction.js.map +1 -1
  155. package/lib/cjs/ViewDetails.js +2 -2
  156. package/lib/cjs/ViewDetails.js.map +1 -1
  157. package/lib/cjs/ViewFlags.js +2 -2
  158. package/lib/cjs/ViewFlags.js.map +1 -1
  159. package/lib/cjs/ViewProps.js +1 -1
  160. package/lib/cjs/ViewProps.js.map +1 -1
  161. package/lib/cjs/WhiteOnWhiteReversalSettings.js +1 -1
  162. package/lib/cjs/WhiteOnWhiteReversalSettings.js.map +1 -1
  163. package/lib/cjs/annotation/TextAnnotation.js.map +1 -1
  164. package/lib/cjs/annotation/TextBlock.js +1 -1
  165. package/lib/cjs/annotation/TextBlock.js.map +1 -1
  166. package/lib/cjs/annotation/TextStyle.js +1 -1
  167. package/lib/cjs/annotation/TextStyle.js.map +1 -1
  168. package/lib/cjs/geometry/AdditionalTransform.js.map +1 -1
  169. package/lib/cjs/geometry/AreaPattern.js +1 -1
  170. package/lib/cjs/geometry/AreaPattern.js.map +1 -1
  171. package/lib/cjs/geometry/Cartographic.js +1 -1
  172. package/lib/cjs/geometry/Cartographic.js.map +1 -1
  173. package/lib/cjs/geometry/CoordinateReferenceSystem.js.map +1 -1
  174. package/lib/cjs/geometry/ElementGeometry.js +3 -3
  175. package/lib/cjs/geometry/ElementGeometry.js.map +1 -1
  176. package/lib/cjs/geometry/ElementGeometryFB.js +1 -1
  177. package/lib/cjs/geometry/ElementGeometryFB.js.map +1 -1
  178. package/lib/cjs/geometry/FrustumPlanes.js +5 -5
  179. package/lib/cjs/geometry/FrustumPlanes.js.map +1 -1
  180. package/lib/cjs/geometry/GeodeticDatum.js.map +1 -1
  181. package/lib/cjs/geometry/GeodeticEllipsoid.js.map +1 -1
  182. package/lib/cjs/geometry/GeometryStream.js +2 -2
  183. package/lib/cjs/geometry/GeometryStream.js.map +1 -1
  184. package/lib/cjs/geometry/LineStyle.js +1 -1
  185. package/lib/cjs/geometry/LineStyle.js.map +1 -1
  186. package/lib/cjs/geometry/Projection.js.map +1 -1
  187. package/lib/cjs/geometry/TextString.js.map +1 -1
  188. package/lib/cjs/ipc/IpcWebSocket.js +3 -3
  189. package/lib/cjs/ipc/IpcWebSocket.js.map +1 -1
  190. package/lib/cjs/ipc/IpcWebSocketTransport.js.map +1 -1
  191. package/lib/cjs/rpc/DevToolsRpcInterface.js +2 -2
  192. package/lib/cjs/rpc/DevToolsRpcInterface.js.map +1 -1
  193. package/lib/cjs/rpc/IModelReadRpcInterface.js +1 -1
  194. package/lib/cjs/rpc/IModelReadRpcInterface.js.map +1 -1
  195. package/lib/cjs/rpc/IModelTileRpcInterface.js +1 -1
  196. package/lib/cjs/rpc/IModelTileRpcInterface.js.map +1 -1
  197. package/lib/cjs/rpc/SnapshotIModelRpcInterface.js +1 -1
  198. package/lib/cjs/rpc/SnapshotIModelRpcInterface.js.map +1 -1
  199. package/lib/cjs/rpc/WipRpcInterface.js +1 -1
  200. package/lib/cjs/rpc/WipRpcInterface.js.map +1 -1
  201. package/lib/cjs/rpc/core/RpcConfiguration.js +6 -6
  202. package/lib/cjs/rpc/core/RpcConfiguration.js.map +1 -1
  203. package/lib/cjs/rpc/core/RpcConstants.js +7 -7
  204. package/lib/cjs/rpc/core/RpcConstants.js.map +1 -1
  205. package/lib/cjs/rpc/core/RpcControl.js +1 -1
  206. package/lib/cjs/rpc/core/RpcControl.js.map +1 -1
  207. package/lib/cjs/rpc/core/RpcInvocation.js +3 -3
  208. package/lib/cjs/rpc/core/RpcInvocation.js.map +1 -1
  209. package/lib/cjs/rpc/core/RpcMarshaling.js +2 -2
  210. package/lib/cjs/rpc/core/RpcMarshaling.js.map +1 -1
  211. package/lib/cjs/rpc/core/RpcOperation.js +2 -3
  212. package/lib/cjs/rpc/core/RpcOperation.js.map +1 -1
  213. package/lib/cjs/rpc/core/RpcPendingQueue.js.map +1 -1
  214. package/lib/cjs/rpc/core/RpcProtocol.js +3 -3
  215. package/lib/cjs/rpc/core/RpcProtocol.js.map +1 -1
  216. package/lib/cjs/rpc/core/RpcPush.js +2 -2
  217. package/lib/cjs/rpc/core/RpcPush.js.map +1 -1
  218. package/lib/cjs/rpc/core/RpcRegistry.js.map +1 -1
  219. package/lib/cjs/rpc/core/RpcRequest.js +1 -1
  220. package/lib/cjs/rpc/core/RpcRequest.js.map +1 -1
  221. package/lib/cjs/rpc/core/RpcRoutingToken.js +1 -1
  222. package/lib/cjs/rpc/core/RpcRoutingToken.js.map +1 -1
  223. package/lib/cjs/rpc/web/BentleyCloudRpcManager.js +1 -1
  224. package/lib/cjs/rpc/web/BentleyCloudRpcManager.js.map +1 -1
  225. package/lib/cjs/rpc/web/BentleyCloudRpcProtocol.js.map +1 -1
  226. package/lib/cjs/rpc/web/RpcMultipart.js +1 -1
  227. package/lib/cjs/rpc/web/RpcMultipart.js.map +1 -1
  228. package/lib/cjs/rpc/web/WebAppRpcLogging.js +8 -8
  229. package/lib/cjs/rpc/web/WebAppRpcLogging.js.map +1 -1
  230. package/lib/cjs/rpc/web/WebAppRpcProtocol.js.map +1 -1
  231. package/lib/cjs/rpc/web/WebAppRpcRequest.js +3 -3
  232. package/lib/cjs/rpc/web/WebAppRpcRequest.js.map +1 -1
  233. package/lib/cjs/rpc/web/multipart/RpcMultipartParser.js.map +1 -1
  234. package/lib/cjs/tile/B3dmTileIO.js.map +1 -1
  235. package/lib/cjs/tile/GltfTileIO.js +2 -2
  236. package/lib/cjs/tile/GltfTileIO.js.map +1 -1
  237. package/lib/cjs/tile/I3dmTileIO.js.map +1 -1
  238. package/lib/cjs/tile/IModelTileIO.js +3 -3
  239. package/lib/cjs/tile/IModelTileIO.js.map +1 -1
  240. package/lib/cjs/tile/TileIO.d.ts +6 -6
  241. package/lib/cjs/tile/TileIO.d.ts.map +1 -1
  242. package/lib/cjs/tile/TileIO.js +2 -2
  243. package/lib/cjs/tile/TileIO.js.map +1 -1
  244. package/lib/cjs/tile/TileMetadata.d.ts +3 -3
  245. package/lib/cjs/tile/TileMetadata.d.ts.map +1 -1
  246. package/lib/cjs/tile/TileMetadata.js +3 -3
  247. package/lib/cjs/tile/TileMetadata.js.map +1 -1
  248. package/lib/cjs/tile/Tileset3dSchema.d.ts.map +1 -1
  249. package/lib/cjs/tile/Tileset3dSchema.js.map +1 -1
  250. package/lib/esm/AnalysisStyle.js +1 -2
  251. package/lib/esm/AnalysisStyle.js.map +1 -1
  252. package/lib/esm/Atmosphere.js +11 -11
  253. package/lib/esm/Atmosphere.js.map +1 -1
  254. package/lib/esm/BackgroundMapProvider.js.map +1 -1
  255. package/lib/esm/BackgroundMapSettings.js.map +1 -1
  256. package/lib/esm/BlobReader.js.map +1 -1
  257. package/lib/esm/Camera.js.map +1 -1
  258. package/lib/esm/ClipStyle.js +3 -6
  259. package/lib/esm/ClipStyle.js.map +1 -1
  260. package/lib/esm/Code.d.ts +1 -0
  261. package/lib/esm/Code.d.ts.map +1 -1
  262. package/lib/esm/Code.js +1 -0
  263. package/lib/esm/Code.js.map +1 -1
  264. package/lib/esm/ColorDef.js +1 -2
  265. package/lib/esm/ColorDef.js.map +1 -1
  266. package/lib/esm/ConcurrentQuery.d.ts +11 -11
  267. package/lib/esm/ConcurrentQuery.d.ts.map +1 -1
  268. package/lib/esm/ConcurrentQuery.js.map +1 -1
  269. package/lib/esm/ContextRealityModel.js.map +1 -1
  270. package/lib/esm/DisplayStyleSettings.js.map +1 -1
  271. package/lib/esm/ECSqlReader.js +1 -2
  272. package/lib/esm/ECSqlReader.js.map +1 -1
  273. package/lib/esm/ECSqlTypes.js.map +1 -1
  274. package/lib/esm/ElementMesh.js.map +1 -1
  275. package/lib/esm/ElementProps.js +1 -2
  276. package/lib/esm/ElementProps.js.map +1 -1
  277. package/lib/esm/EntityProps.d.ts +2 -2
  278. package/lib/esm/EntityProps.d.ts.map +1 -1
  279. package/lib/esm/EntityProps.js.map +1 -1
  280. package/lib/esm/Environment.js +1 -2
  281. package/lib/esm/Environment.js.map +1 -1
  282. package/lib/esm/FeatureSymbology.js +2 -4
  283. package/lib/esm/FeatureSymbology.js.map +1 -1
  284. package/lib/esm/FeatureTable.js.map +1 -1
  285. package/lib/esm/Frustum.d.ts.map +1 -1
  286. package/lib/esm/Frustum.js +2 -0
  287. package/lib/esm/Frustum.js.map +1 -1
  288. package/lib/esm/GeoCoordinateServices.js.map +1 -1
  289. package/lib/esm/GeometryParams.js.map +1 -1
  290. package/lib/esm/Gradient.js +4 -4
  291. package/lib/esm/Gradient.js.map +1 -1
  292. package/lib/esm/GroundPlane.js +1 -2
  293. package/lib/esm/GroundPlane.js.map +1 -1
  294. package/lib/esm/HSVColor.js.map +1 -1
  295. package/lib/esm/HiddenLine.js.map +1 -1
  296. package/lib/esm/IModel.js +1 -2
  297. package/lib/esm/IModel.js.map +1 -1
  298. package/lib/esm/IModelVersion.js.map +1 -1
  299. package/lib/esm/Image.js.map +1 -1
  300. package/lib/esm/LightSettings.js +1 -2
  301. package/lib/esm/LightSettings.js.map +1 -1
  302. package/lib/esm/Localization.js.map +1 -1
  303. package/lib/esm/MapImagerySettings.js.map +1 -1
  304. package/lib/esm/MapLayerSettings.js.map +1 -1
  305. package/lib/esm/ModelGeometryChanges.js.map +1 -1
  306. package/lib/esm/OctEncodedNormal.js.map +1 -1
  307. package/lib/esm/PlanarClipMask.js +1 -2
  308. package/lib/esm/PlanarClipMask.js.map +1 -1
  309. package/lib/esm/QPoint.js.map +1 -1
  310. package/lib/esm/RealityDataAccessProps.d.ts +4 -4
  311. package/lib/esm/RealityDataAccessProps.d.ts.map +1 -1
  312. package/lib/esm/RealityModelDisplaySettings.js +2 -4
  313. package/lib/esm/RealityModelDisplaySettings.js.map +1 -1
  314. package/lib/esm/Render.d.ts +2 -2
  315. package/lib/esm/Render.d.ts.map +1 -1
  316. package/lib/esm/Render.js.map +1 -1
  317. package/lib/esm/RenderSchedule.js.map +1 -1
  318. package/lib/esm/RgbColor.js.map +1 -1
  319. package/lib/esm/RpcInterface.js.map +1 -1
  320. package/lib/esm/SkyBox.js +2 -4
  321. package/lib/esm/SkyBox.js.map +1 -1
  322. package/lib/esm/SolarCalculate.js.map +1 -1
  323. package/lib/esm/SolarShadows.js +1 -2
  324. package/lib/esm/SolarShadows.js.map +1 -1
  325. package/lib/esm/SpatialClassification.js.map +1 -1
  326. package/lib/esm/SubCategoryAppearance.js +1 -2
  327. package/lib/esm/SubCategoryAppearance.js.map +1 -1
  328. package/lib/esm/SubCategoryOverride.js +1 -2
  329. package/lib/esm/SubCategoryOverride.js.map +1 -1
  330. package/lib/esm/TerrainSettings.js.map +1 -1
  331. package/lib/esm/TextureMapping.js.map +1 -1
  332. package/lib/esm/ThematicDisplay.js +1 -2
  333. package/lib/esm/ThematicDisplay.js.map +1 -1
  334. package/lib/esm/Tween.js.map +1 -1
  335. package/lib/esm/ViewDetails.js +1 -2
  336. package/lib/esm/ViewDetails.js.map +1 -1
  337. package/lib/esm/ViewFlags.js +1 -2
  338. package/lib/esm/ViewFlags.js.map +1 -1
  339. package/lib/esm/WhiteOnWhiteReversalSettings.js +1 -2
  340. package/lib/esm/WhiteOnWhiteReversalSettings.js.map +1 -1
  341. package/lib/esm/annotation/TextAnnotation.js.map +1 -1
  342. package/lib/esm/annotation/TextBlock.js.map +1 -1
  343. package/lib/esm/annotation/TextStyle.js +1 -2
  344. package/lib/esm/annotation/TextStyle.js.map +1 -1
  345. package/lib/esm/geometry/AdditionalTransform.js.map +1 -1
  346. package/lib/esm/geometry/AreaPattern.js.map +1 -1
  347. package/lib/esm/geometry/Cartographic.js +1 -2
  348. package/lib/esm/geometry/Cartographic.js.map +1 -1
  349. package/lib/esm/geometry/CoordinateReferenceSystem.js.map +1 -1
  350. package/lib/esm/geometry/ElementGeometry.js.map +1 -1
  351. package/lib/esm/geometry/ElementGeometryFB.js.map +1 -1
  352. package/lib/esm/geometry/FrustumPlanes.js +4 -4
  353. package/lib/esm/geometry/FrustumPlanes.js.map +1 -1
  354. package/lib/esm/geometry/GeodeticDatum.js.map +1 -1
  355. package/lib/esm/geometry/GeodeticEllipsoid.js.map +1 -1
  356. package/lib/esm/geometry/GeometryStream.js.map +1 -1
  357. package/lib/esm/geometry/LineStyle.js.map +1 -1
  358. package/lib/esm/geometry/Projection.js.map +1 -1
  359. package/lib/esm/geometry/TextString.js.map +1 -1
  360. package/lib/esm/ipc/IpcWebSocket.js +1 -2
  361. package/lib/esm/ipc/IpcWebSocket.js.map +1 -1
  362. package/lib/esm/ipc/IpcWebSocketTransport.js.map +1 -1
  363. package/lib/esm/rpc/DevToolsRpcInterface.js +1 -2
  364. package/lib/esm/rpc/DevToolsRpcInterface.js.map +1 -1
  365. package/lib/esm/rpc/IModelReadRpcInterface.js +1 -2
  366. package/lib/esm/rpc/IModelReadRpcInterface.js.map +1 -1
  367. package/lib/esm/rpc/IModelTileRpcInterface.js +1 -2
  368. package/lib/esm/rpc/IModelTileRpcInterface.js.map +1 -1
  369. package/lib/esm/rpc/SnapshotIModelRpcInterface.js +1 -2
  370. package/lib/esm/rpc/SnapshotIModelRpcInterface.js.map +1 -1
  371. package/lib/esm/rpc/WipRpcInterface.js +1 -2
  372. package/lib/esm/rpc/WipRpcInterface.js.map +1 -1
  373. package/lib/esm/rpc/core/RpcConfiguration.js +5 -6
  374. package/lib/esm/rpc/core/RpcConfiguration.js.map +1 -1
  375. package/lib/esm/rpc/core/RpcControl.js +1 -2
  376. package/lib/esm/rpc/core/RpcControl.js.map +1 -1
  377. package/lib/esm/rpc/core/RpcInvocation.js +3 -4
  378. package/lib/esm/rpc/core/RpcInvocation.js.map +1 -1
  379. package/lib/esm/rpc/core/RpcMarshaling.js.map +1 -1
  380. package/lib/esm/rpc/core/RpcOperation.js +1 -2
  381. package/lib/esm/rpc/core/RpcOperation.js.map +1 -1
  382. package/lib/esm/rpc/core/RpcPendingQueue.js.map +1 -1
  383. package/lib/esm/rpc/core/RpcProtocol.js +1 -2
  384. package/lib/esm/rpc/core/RpcProtocol.js.map +1 -1
  385. package/lib/esm/rpc/core/RpcPush.js +2 -4
  386. package/lib/esm/rpc/core/RpcPush.js.map +1 -1
  387. package/lib/esm/rpc/core/RpcRegistry.js.map +1 -1
  388. package/lib/esm/rpc/core/RpcRequest.js +1 -2
  389. package/lib/esm/rpc/core/RpcRequest.js.map +1 -1
  390. package/lib/esm/rpc/core/RpcRoutingToken.js +1 -2
  391. package/lib/esm/rpc/core/RpcRoutingToken.js.map +1 -1
  392. package/lib/esm/rpc/web/BentleyCloudRpcManager.js +1 -2
  393. package/lib/esm/rpc/web/BentleyCloudRpcManager.js.map +1 -1
  394. package/lib/esm/rpc/web/BentleyCloudRpcProtocol.js.map +1 -1
  395. package/lib/esm/rpc/web/RpcMultipart.js +1 -2
  396. package/lib/esm/rpc/web/RpcMultipart.js.map +1 -1
  397. package/lib/esm/rpc/web/WebAppRpcLogging.js +8 -8
  398. package/lib/esm/rpc/web/WebAppRpcLogging.js.map +1 -1
  399. package/lib/esm/rpc/web/WebAppRpcProtocol.js.map +1 -1
  400. package/lib/esm/rpc/web/WebAppRpcRequest.js +3 -4
  401. package/lib/esm/rpc/web/WebAppRpcRequest.js.map +1 -1
  402. package/lib/esm/rpc/web/multipart/RpcMultipartParser.js.map +1 -1
  403. package/lib/esm/tile/B3dmTileIO.js.map +1 -1
  404. package/lib/esm/tile/GltfTileIO.js.map +1 -1
  405. package/lib/esm/tile/I3dmTileIO.js.map +1 -1
  406. package/lib/esm/tile/IModelTileIO.js +1 -2
  407. package/lib/esm/tile/IModelTileIO.js.map +1 -1
  408. package/lib/esm/tile/TileIO.d.ts +6 -6
  409. package/lib/esm/tile/TileIO.d.ts.map +1 -1
  410. package/lib/esm/tile/TileIO.js.map +1 -1
  411. package/lib/esm/tile/TileMetadata.d.ts +3 -3
  412. package/lib/esm/tile/TileMetadata.d.ts.map +1 -1
  413. package/lib/esm/tile/TileMetadata.js.map +1 -1
  414. package/lib/esm/tile/Tileset3dSchema.d.ts.map +1 -1
  415. package/lib/esm/tile/Tileset3dSchema.js.map +1 -1
  416. package/package.json +9 -9
@@ -1 +1 @@
1
- {"version":3,"file":"ViewDetails.js","sourceRoot":"","sources":["../../src/ViewDetails.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 Views\r\n */\r\n\r\nimport { assert, BeEvent, Id64, Id64String, JsonUtils } from \"@itwin/core-bentley\";\r\nimport { ClipVector, ClipVectorProps, Geometry, XAndY } from \"@itwin/core-geometry\";\r\nimport { ModelClipGroupProps, ModelClipGroups } from \"./ModelClipGroup\";\r\n\r\n/** Properties of a [[ViewDefinitionProps]] stored as JSON.\r\n * @see [[ViewDefinitionProps.jsonProperties]].\r\n * @see [[ViewDetails3dProps]] for additional properties specific to 3d views.\r\n * @public\r\n * @extensions\r\n */\r\nexport interface ViewDetailsProps {\r\n /** Id of the aux coord system. Default: invalid. */\r\n acs?: Id64String;\r\n /** Aspect ratio skew (x/y) used to exaggerate the y axis of the view. Default: 1.0. */\r\n aspectSkew?: number;\r\n /** Grid orientation. Default: WorldXY. */\r\n gridOrient?: GridOrientationType;\r\n /** Default: 10. */\r\n gridPerRef?: number;\r\n /** Default: 1.0. */\r\n gridSpaceX?: number;\r\n /** Default: same as gridSpaceX. */\r\n gridSpaceY?: number;\r\n /** Describes the [ClipVector]($core-geometry) applied to the view. */\r\n clip?: ClipVectorProps;\r\n}\r\n\r\n/** Describes the orientation of the grid displayed within a [Viewport]($frontend).\r\n * @public\r\n * @extensions\r\n */\r\nexport enum GridOrientationType {\r\n /** Oriented with the view. */\r\n View = 0,\r\n /** Top */\r\n WorldXY = 1,\r\n /** Right */\r\n WorldYZ = 2,\r\n /** Front */\r\n WorldXZ = 3,\r\n /** Oriented by the auxiliary coordinate system. */\r\n AuxCoord = 4,\r\n}\r\n\r\n/** Properties of a [[ViewDefinition3dProps]] stored as JSON.\r\n * @see [[ViewDefinition3dProps.jsonProperties]].\r\n * @public\r\n * @extensions\r\n */\r\nexport interface ViewDetails3dProps extends ViewDetailsProps {\r\n /** Whether viewing tools are prohibited from operating in 3 dimensions on this view. Default: false. */\r\n disable3dManipulations?: boolean;\r\n /** Defines how to clip groups of models. */\r\n modelClipGroups?: ModelClipGroupProps[];\r\n}\r\n\r\n/** Encapsulates access to optional view details stored in JSON properties.\r\n * @see [[ViewDetailsProps]] for the JSON representation.\r\n * @see [ViewDefinition.details]($backend) and [ViewState.details]($frontend).\r\n * @public\r\n */\r\nexport class ViewDetails {\r\n /** @internal */\r\n protected readonly _json: ViewDetailsProps;\r\n private _clipVector?: ClipVector;\r\n\r\n /** Event raised just before assignment to the [[clipVector]] property. */\r\n public readonly onClipVectorChanged = new BeEvent<(newClip: ClipVector | undefined) => void>();\r\n\r\n /** @internal */\r\n public constructor(jsonProperties: { viewDetails?: ViewDetailsProps }) {\r\n if (!jsonProperties.viewDetails)\r\n jsonProperties.viewDetails = {};\r\n\r\n this._json = jsonProperties.viewDetails;\r\n }\r\n\r\n /** The Id of the auxiliary coordinate system for the view. */\r\n public get auxiliaryCoordinateSystemId(): Id64String {\r\n return Id64.fromJSON(this._json.acs);\r\n }\r\n public set auxiliaryCoordinateSystemId(id: Id64String) {\r\n this._json.acs = Id64.isValidId64(id) ? id : undefined;\r\n }\r\n\r\n /** Maximum aspect ratio skew. Apps can override this by changing its value. */\r\n public static maxSkew = 25;\r\n\r\n /** The aspect ratio skew (x/y, usually 1.0) used to exaggerate the y axis of the view. */\r\n public get aspectRatioSkew(): number {\r\n const maxSkew = ViewDetails.maxSkew;\r\n const skew = JsonUtils.asDouble(this._json.aspectSkew, 1.0);\r\n return Geometry.clamp(skew, 1 / maxSkew, maxSkew);\r\n }\r\n public set aspectRatioSkew(skew: number) {\r\n this._json.aspectSkew = 1.0 !== skew ? skew : undefined;\r\n }\r\n\r\n /** The orientation of the view's grid. */\r\n public get gridOrientation(): GridOrientationType {\r\n return JsonUtils.asInt(this._json.gridOrient, GridOrientationType.WorldXY);\r\n }\r\n public set gridOrientation(orientation: GridOrientationType) {\r\n this._json.gridOrient = GridOrientationType.WorldXY === orientation ? undefined : orientation;\r\n }\r\n\r\n /** The number of grids per ref for the view. */\r\n public get gridsPerRef(): number {\r\n return JsonUtils.asInt(this._json.gridPerRef, 10);\r\n }\r\n public set gridsPerRef(gridsPerRef: number) {\r\n this._json.gridPerRef = 10 === gridsPerRef ? undefined : gridsPerRef;\r\n }\r\n\r\n /** The grid spacing for the view. */\r\n public get gridSpacing(): XAndY {\r\n const x = JsonUtils.asDouble(this._json.gridSpaceX, 1.0);\r\n const y = JsonUtils.asDouble(this._json.gridSpaceY, x);\r\n return { x, y };\r\n }\r\n public set gridSpacing(spacing: XAndY) {\r\n this._json.gridSpaceX = 1.0 !== spacing.x ? spacing.x : undefined;\r\n this._json.gridSpaceY = spacing.x !== spacing.y ? spacing.y : undefined;\r\n }\r\n\r\n /** Clipping volume for the view.\r\n * @note Do *not* modify the returned ClipVector. If you wish to change the ClipVector, clone the returned ClipVector, modify it as desired, and pass the clone back to the setter.\r\n */\r\n public get clipVector(): ClipVector | undefined {\r\n if (undefined === this._clipVector) {\r\n const clip = this._json.clip;\r\n this._clipVector = (undefined !== clip ? ClipVector.fromJSON(clip) : ClipVector.createEmpty());\r\n }\r\n\r\n return this._clipVector.isValid ? this._clipVector : undefined;\r\n }\r\n public set clipVector(clip: ClipVector | undefined) {\r\n const curClip = this.clipVector;\r\n if (curClip === clip)\r\n return;\r\n\r\n if (!curClip) {\r\n assert(undefined !== clip);\r\n\r\n // An empty clip is equivalent to no clip.\r\n if (!clip.isValid)\r\n return;\r\n }\r\n\r\n clip = clip ?? ClipVector.createEmpty();\r\n\r\n this.onClipVectorChanged.raiseEvent(clip.isValid ? clip : undefined);\r\n\r\n this._clipVector = clip;\r\n if (clip.isValid)\r\n this._json.clip = clip.toJSON();\r\n else\r\n delete this._json.clip;\r\n }\r\n\r\n /** Returns the internal JSON representation. This is *not* a copy.\r\n * @internal\r\n */\r\n public getJSON(): Readonly<ViewDetailsProps> {\r\n return this._json;\r\n }\r\n}\r\n\r\n/** Encapsulates access to optional 3d view details stored in JSON properties.\r\n * @see [[ViewDetails3dProps]] for the JSON representation.\r\n * @public\r\n */\r\nexport class ViewDetails3d extends ViewDetails {\r\n private _modelClipGroups?: ModelClipGroups;\r\n\r\n private get _json3d(): ViewDetails3dProps {\r\n return this._json as ViewDetails3dProps;\r\n }\r\n\r\n /** Event raised when just before assignment to the [[modelClipGroups]] property. */\r\n public readonly onModelClipGroupsChanged = new BeEvent<(newGroups: ModelClipGroups) => void>();\r\n\r\n /** @internal */\r\n public constructor(jsonProperties: { viewDetails?: ViewDetails3dProps }) {\r\n super(jsonProperties);\r\n }\r\n\r\n /** Controls whether viewing tools are allowed to operate on the view in 3 dimensions. */\r\n public get allow3dManipulations(): boolean {\r\n return !JsonUtils.asBool(this._json3d.disable3dManipulations, false);\r\n }\r\n public set allow3dManipulations(allow: boolean) {\r\n this._json3d.disable3dManipulations = allow ? undefined : true;\r\n }\r\n\r\n /** Groups of models associated with [ClipVector]($core-geometry)s by which those models should be clipped.\r\n * If the view and the model both have a clip vector defined, geometry in the model will be clipped by the intersection of the two clip vectors.\r\n * [[ViewFlags.clipVolume]] has no effect on model clips, only the view clip - model clips are always applied.\r\n * @note Do **not** modify the returned object directly. Instead, clone it, modify the clone, and pass the clone to the property setter.\r\n */\r\n public get modelClipGroups(): ModelClipGroups {\r\n if (!this._modelClipGroups)\r\n this._modelClipGroups = ModelClipGroups.fromJSON(this._json3d.modelClipGroups);\r\n\r\n return this._modelClipGroups;\r\n }\r\n public set modelClipGroups(groups: ModelClipGroups) {\r\n this.onModelClipGroupsChanged.raiseEvent(groups);\r\n this._modelClipGroups = groups;\r\n this._json3d.modelClipGroups = groups.toJSON();\r\n }\r\n\r\n /** Returns the internal JSON representation. This is *not* a copy.\r\n * @internal\r\n */\r\n public override getJSON(): Readonly<ViewDetails3dProps> {\r\n return this._json3d;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ViewDetails.js","sourceRoot":"","sources":["../../src/ViewDetails.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 Views\r\n */\r\n\r\nimport { assert, BeEvent, Id64, Id64String, JsonUtils } from \"@itwin/core-bentley\";\r\nimport { ClipVector, ClipVectorProps, Geometry, XAndY } from \"@itwin/core-geometry\";\r\nimport { ModelClipGroupProps, ModelClipGroups } from \"./ModelClipGroup\";\r\n\r\n/** Properties of a [[ViewDefinitionProps]] stored as JSON.\r\n * @see [[ViewDefinitionProps.jsonProperties]].\r\n * @see [[ViewDetails3dProps]] for additional properties specific to 3d views.\r\n * @public\r\n * @extensions\r\n */\r\nexport interface ViewDetailsProps {\r\n /** Id of the aux coord system. Default: invalid. */\r\n acs?: Id64String;\r\n /** Aspect ratio skew (x/y) used to exaggerate the y axis of the view. Default: 1.0. */\r\n aspectSkew?: number;\r\n /** Grid orientation. Default: WorldXY. */\r\n gridOrient?: GridOrientationType;\r\n /** Default: 10. */\r\n gridPerRef?: number;\r\n /** Default: 1.0. */\r\n gridSpaceX?: number;\r\n /** Default: same as gridSpaceX. */\r\n gridSpaceY?: number;\r\n /** Describes the [ClipVector]($core-geometry) applied to the view. */\r\n clip?: ClipVectorProps;\r\n}\r\n\r\n/** Describes the orientation of the grid displayed within a [Viewport]($frontend).\r\n * @public\r\n * @extensions\r\n */\r\nexport enum GridOrientationType {\r\n /** Oriented with the view. */\r\n View = 0,\r\n /** Top */\r\n WorldXY = 1,\r\n /** Right */\r\n WorldYZ = 2,\r\n /** Front */\r\n WorldXZ = 3,\r\n /** Oriented by the auxiliary coordinate system. */\r\n AuxCoord = 4,\r\n}\r\n\r\n/** Properties of a [[ViewDefinition3dProps]] stored as JSON.\r\n * @see [[ViewDefinition3dProps.jsonProperties]].\r\n * @public\r\n * @extensions\r\n */\r\nexport interface ViewDetails3dProps extends ViewDetailsProps {\r\n /** Whether viewing tools are prohibited from operating in 3 dimensions on this view. Default: false. */\r\n disable3dManipulations?: boolean;\r\n /** Defines how to clip groups of models. */\r\n modelClipGroups?: ModelClipGroupProps[];\r\n}\r\n\r\n/** Encapsulates access to optional view details stored in JSON properties.\r\n * @see [[ViewDetailsProps]] for the JSON representation.\r\n * @see [ViewDefinition.details]($backend) and [ViewState.details]($frontend).\r\n * @public\r\n */\r\nexport class ViewDetails {\r\n /** @internal */\r\n protected readonly _json: ViewDetailsProps;\r\n private _clipVector?: ClipVector;\r\n\r\n /** Event raised just before assignment to the [[clipVector]] property. */\r\n public readonly onClipVectorChanged = new BeEvent<(newClip: ClipVector | undefined) => void>();\r\n\r\n /** @internal */\r\n public constructor(jsonProperties: { viewDetails?: ViewDetailsProps }) {\r\n if (!jsonProperties.viewDetails)\r\n jsonProperties.viewDetails = {};\r\n\r\n this._json = jsonProperties.viewDetails;\r\n }\r\n\r\n /** The Id of the auxiliary coordinate system for the view. */\r\n public get auxiliaryCoordinateSystemId(): Id64String {\r\n return Id64.fromJSON(this._json.acs);\r\n }\r\n public set auxiliaryCoordinateSystemId(id: Id64String) {\r\n this._json.acs = Id64.isValidId64(id) ? id : undefined;\r\n }\r\n\r\n /** Maximum aspect ratio skew. Apps can override this by changing its value. */\r\n public static maxSkew = 25;\r\n\r\n /** The aspect ratio skew (x/y, usually 1.0) used to exaggerate the y axis of the view. */\r\n public get aspectRatioSkew(): number {\r\n const maxSkew = ViewDetails.maxSkew;\r\n const skew = JsonUtils.asDouble(this._json.aspectSkew, 1.0);\r\n return Geometry.clamp(skew, 1 / maxSkew, maxSkew);\r\n }\r\n public set aspectRatioSkew(skew: number) {\r\n this._json.aspectSkew = 1.0 !== skew ? skew : undefined;\r\n }\r\n\r\n /** The orientation of the view's grid. */\r\n public get gridOrientation(): GridOrientationType {\r\n return JsonUtils.asInt(this._json.gridOrient, GridOrientationType.WorldXY);\r\n }\r\n public set gridOrientation(orientation: GridOrientationType) {\r\n this._json.gridOrient = GridOrientationType.WorldXY === orientation ? undefined : orientation;\r\n }\r\n\r\n /** The number of grids per ref for the view. */\r\n public get gridsPerRef(): number {\r\n return JsonUtils.asInt(this._json.gridPerRef, 10);\r\n }\r\n public set gridsPerRef(gridsPerRef: number) {\r\n this._json.gridPerRef = 10 === gridsPerRef ? undefined : gridsPerRef;\r\n }\r\n\r\n /** The grid spacing for the view. */\r\n public get gridSpacing(): XAndY {\r\n const x = JsonUtils.asDouble(this._json.gridSpaceX, 1.0);\r\n const y = JsonUtils.asDouble(this._json.gridSpaceY, x);\r\n return { x, y };\r\n }\r\n public set gridSpacing(spacing: XAndY) {\r\n this._json.gridSpaceX = 1.0 !== spacing.x ? spacing.x : undefined;\r\n this._json.gridSpaceY = spacing.x !== spacing.y ? spacing.y : undefined;\r\n }\r\n\r\n /** Clipping volume for the view.\r\n * @note Do *not* modify the returned ClipVector. If you wish to change the ClipVector, clone the returned ClipVector, modify it as desired, and pass the clone back to the setter.\r\n */\r\n public get clipVector(): ClipVector | undefined {\r\n if (undefined === this._clipVector) {\r\n const clip = this._json.clip;\r\n this._clipVector = (undefined !== clip ? ClipVector.fromJSON(clip) : ClipVector.createEmpty());\r\n }\r\n\r\n return this._clipVector.isValid ? this._clipVector : undefined;\r\n }\r\n public set clipVector(clip: ClipVector | undefined) {\r\n const curClip = this.clipVector;\r\n if (curClip === clip)\r\n return;\r\n\r\n if (!curClip) {\r\n assert(undefined !== clip);\r\n\r\n // An empty clip is equivalent to no clip.\r\n if (!clip.isValid)\r\n return;\r\n }\r\n\r\n clip = clip ?? ClipVector.createEmpty();\r\n\r\n this.onClipVectorChanged.raiseEvent(clip.isValid ? clip : undefined);\r\n\r\n this._clipVector = clip;\r\n if (clip.isValid)\r\n this._json.clip = clip.toJSON();\r\n else\r\n delete this._json.clip;\r\n }\r\n\r\n /** Returns the internal JSON representation. This is *not* a copy.\r\n * @internal\r\n */\r\n public getJSON(): Readonly<ViewDetailsProps> {\r\n return this._json;\r\n }\r\n}\r\n\r\n/** Encapsulates access to optional 3d view details stored in JSON properties.\r\n * @see [[ViewDetails3dProps]] for the JSON representation.\r\n * @public\r\n */\r\nexport class ViewDetails3d extends ViewDetails {\r\n private _modelClipGroups?: ModelClipGroups;\r\n\r\n private get _json3d(): ViewDetails3dProps {\r\n return this._json as ViewDetails3dProps;\r\n }\r\n\r\n /** Event raised when just before assignment to the [[modelClipGroups]] property. */\r\n public readonly onModelClipGroupsChanged = new BeEvent<(newGroups: ModelClipGroups) => void>();\r\n\r\n /** @internal */\r\n public constructor(jsonProperties: { viewDetails?: ViewDetails3dProps }) {\r\n super(jsonProperties);\r\n }\r\n\r\n /** Controls whether viewing tools are allowed to operate on the view in 3 dimensions. */\r\n public get allow3dManipulations(): boolean {\r\n return !JsonUtils.asBool(this._json3d.disable3dManipulations, false);\r\n }\r\n public set allow3dManipulations(allow: boolean) {\r\n this._json3d.disable3dManipulations = allow ? undefined : true;\r\n }\r\n\r\n /** Groups of models associated with [ClipVector]($core-geometry)s by which those models should be clipped.\r\n * If the view and the model both have a clip vector defined, geometry in the model will be clipped by the intersection of the two clip vectors.\r\n * [[ViewFlags.clipVolume]] has no effect on model clips, only the view clip - model clips are always applied.\r\n * @note Do **not** modify the returned object directly. Instead, clone it, modify the clone, and pass the clone to the property setter.\r\n */\r\n public get modelClipGroups(): ModelClipGroups {\r\n if (!this._modelClipGroups)\r\n this._modelClipGroups = ModelClipGroups.fromJSON(this._json3d.modelClipGroups);\r\n\r\n return this._modelClipGroups;\r\n }\r\n public set modelClipGroups(groups: ModelClipGroups) {\r\n this.onModelClipGroupsChanged.raiseEvent(groups);\r\n this._modelClipGroups = groups;\r\n this._json3d.modelClipGroups = groups.toJSON();\r\n }\r\n\r\n /** Returns the internal JSON representation. This is *not* a copy.\r\n * @internal\r\n */\r\n public override getJSON(): Readonly<ViewDetails3dProps> {\r\n return this._json3d;\r\n }\r\n}\r\n"]}
@@ -64,7 +64,7 @@ function edgesRequired(renderMode, visibleEdges) {
64
64
  * @see [[DisplayStyleSettings.viewFlags]] to define the view flags for a [DisplayStyle]($backend).
65
65
  * @public
66
66
  */
67
- class ViewFlags {
67
+ export class ViewFlags {
68
68
  /** Create a new ViewFlags.
69
69
  * @param flags The properties to initialize. Any properties not specified are initialized to their default values.
70
70
  */
@@ -361,5 +361,4 @@ class ViewFlags {
361
361
  }
362
362
  /** A ViewFlags object with all properties initialized to their default values. */
363
363
  ViewFlags.defaults = new ViewFlags();
364
- export { ViewFlags };
365
364
  //# sourceMappingURL=ViewFlags.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ViewFlags.js","sourceRoot":"","sources":["../../src/ViewFlags.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\n// cspell:ignore ovrs\r\n\r\nimport { JsonUtils, Mutable, NonFunctionPropertiesOf } from \"@itwin/core-bentley\";\r\n\r\n/** Enumerates the available basic rendering modes, as part of a [DisplayStyle]($backend)'s [[ViewFlags]].\r\n * The rendering mode broadly affects various aspects of the display style - in particular, whether and how surfaces and their edges are drawn.\r\n * @public\r\n * @extensions\r\n */\r\nexport enum RenderMode {\r\n /** Renders only the edges of surfaces, with exceptions for planar regions based on their [[FillFlags]].\r\n * Lighting (and by extension, shadows) is not applied.\r\n * [[HiddenLine.Settings]] are not applied - edges use the elements' width, style, and color.\r\n * [[ViewFlags.hiddenEdges]] is ignored - hidden edges are never displayed in wireframe mode.\r\n */\r\n Wireframe = 0,\r\n /** By default, renders surfaces without their edges.\r\n * Lighting and shadows can be applied using [[ViewFlags.lighting]] and [[ViewFlags.shadows]].\r\n * Edges can be enabled using [[ViewFlags.visibleEdges]] and [[ViewFlags.hiddenEdges]], and their appearance customized using [[HiddenLine.Settings]].\r\n * Surfaces can be drawn with transparency, based on [[ViewFlags.transparency]].\r\n */\r\n SmoothShade = 6,\r\n /** Renders surfaces and their edges. By default, edges are drawn in white; this can be overridden using [[HiddenLine.Settings]].\r\n * All surfaces are rendered opaque. If a surface's transparency is below that specified by [[HiddenLine.Settings.transparencyThreshold]], it is not rendered.\r\n * Materials and textures are not applied - surfaces are drawn in their actual colors.\r\n * [[ViewFlags.visibleEdges]] is ignored - visible edges are always drawn. Hidden edges can be enabled using [[ViewFlags.hiddenEdges]].\r\n * Lighting (and by extension, shadows) is not applied.\r\n */\r\n SolidFill = 4,\r\n /** Identical to [[RenderMode.SolidFill]], except:\r\n * - Surfaces are drawn using the [DisplayStyle]($backend)'s background color.\r\n * - Edges are drawn using their surface's colors; this can be overridden using [[HiddenLine.Settings]].\r\n */\r\n HiddenLine = 3,\r\n}\r\n\r\n/** JSON representation of [[ViewFlags]].\r\n * This is a persistence format with some unfortunate quirks that have been retained for backwards compatibility.\r\n * In particular, it supplies three separate flags intended to control lighting - [[noCameraLights]], [[noSourceLights]], and [[noSolarLight]] -\r\n * but there exists only a single [[ViewFlags.lighting]] flag. [[ViewFlags.lighting]] is set to true unless all three of the \"no lighting\" flags are true.\r\n * It also uses awkward negative ([[noConstruct]], [[noTransp]]) and/or abbreviated ([[clipVol]], [[visEdges]]) property names that differ from\r\n * those of the corresponding [[ViewFlags]] properties, making usage of this type in code error-prone.\r\n * Prefer to use [[ViewFlagsProperties]] unless you need to work directly with the persistence format.\r\n * @public\r\n * @extensions\r\n */\r\nexport interface ViewFlagProps {\r\n /** If true, don't display geometry of class [[GeometryClass.Construction]]. */\r\n noConstruct?: boolean;\r\n /** If true, don't display geometry of class [[GeometryClass.Dimension]]. */\r\n noDim?: boolean;\r\n /** If true, don't display geometry of class [[GeometryClass.Pattern]]. */\r\n noPattern?: boolean;\r\n /** If true, all lines are drawn with a width of 1 pixel. */\r\n noWeight?: boolean;\r\n /** If true, don't apply [[LinePixels]] styles. */\r\n noStyle?: boolean;\r\n /** If true, display transparency geometry as opaque. */\r\n noTransp?: boolean;\r\n /** If true, don't show filled planar regions, unless they use [[FillFlags.Always]]. */\r\n noFill?: boolean;\r\n /** If true, display a grid in the view. */\r\n grid?: boolean;\r\n /** If true, display graphics representing the [AuxCoordSystem]($backend). */\r\n acs?: boolean;\r\n /** If true, don't apply [[RenderTexture]]s to surfaces. */\r\n noTexture?: boolean;\r\n /** If true, don't apply [[RenderMaterial]]s to surfaces. */\r\n noMaterial?: boolean;\r\n /** See [[ViewFlagProps]] for how this affects [[ViewFlags.lighting]]. */\r\n noCameraLights?: boolean;\r\n /** See [[ViewFlagProps]] for how this affects [[ViewFlags.lighting]]. */\r\n noSourceLights?: boolean;\r\n /** See [[ViewFlagProps]] for how this affects [[ViewFlags.lighting]]. */\r\n noSolarLight?: boolean;\r\n /** If true, display the edges of surfaces. */\r\n visEdges?: boolean;\r\n /** If true, display the edges of surfaces, even if they are behind other geometry. */\r\n hidEdges?: boolean;\r\n /** If true, display shadows. */\r\n shadows?: boolean;\r\n /** If true, apply the view's clipping volume. Has no effect on other types of clips like [[ModelClipGroups]]. */\r\n clipVol?: boolean;\r\n /** If true, apply the view's [[DisplayStyleSettings.monochromeColor]] and [[DisplayStyleSettings.monochromeMode]] to produce a monochrome image. */\r\n monochrome?: boolean;\r\n /** The basic rendering mode, which affects the behavior of other flags. */\r\n renderMode?: RenderMode;\r\n /** Display a background map. */\r\n backgroundMap?: boolean;\r\n /** If true, apply [[AmbientOcclusion]]. */\r\n ambientOcclusion?: boolean;\r\n /** If true, apply [[ThematicDisplay]]. */\r\n thematicDisplay?: boolean;\r\n /** If true, overlay surfaces with wiremesh to reveal their triangulation. */\r\n wiremesh?: boolean;\r\n /** Controls whether surface discard is always applied regardless of other ViewFlags.\r\n * Surface shaders contain complicated logic to ensure that the edges of a surface always draw in front of the surface, and that planar surfaces sketched coincident with\r\n * non-planar surfaces always draw in front of those non-planar surfaces.\r\n * When this view flag is set to false (the default), then for 3d views if the render mode is wireframe (only edges are displayed) or smooth shader with visible edges turned off (only surfaces are displayed),\r\n * that logic does not execute, potentially improving performance for no degradation in visual quality. In some scenarios - such as wireframe views containing many planar regions with interior fill, or smooth views containing many coincident planar and non-planar surfaces - enabling this view flag improves display quality by forcing that logic to execute.\r\n */\r\n forceSurfaceDiscard?: boolean;\r\n /** Disables the \"white-on-white reversal\" employed by some CAD applications.\r\n * @see [[ViewFlags.whiteOnWhiteReversal]].\r\n */\r\n noWhiteOnWhiteReversal?: boolean;\r\n}\r\n\r\nfunction edgesRequired(renderMode: RenderMode, visibleEdges: boolean): boolean {\r\n return visibleEdges || RenderMode.SmoothShade !== renderMode;\r\n}\r\n\r\n/** Flags controlling how graphics appear within a view.\r\n * A [[ViewFlags]] object is immutable. There are several ways to produce a modified copy of a ViewFlags object:\r\n * ```ts\r\n * // Start with the default values for all properties.\r\n * let vf = ViewFlags.defaults;\r\n * // Change a single boolean property:\r\n * vf = vf.with(\"visibleEdges\", true);\r\n * // Change only the render mode:\r\n * vf = vf.withRenderMode(RenderMode.HiddenLine);\r\n * // Change multiple properties:\r\n * vf = vf.copy({ renderMode: RenderMode.SmoothShade, visibleEdges: true });\r\n * // Reset multiple properties to their default values:\r\n * vf = vf.copy({ renderMode: undefined, visibleEdges: undefined });\r\n *\r\n * ```\r\n * [[with]] and [[withRenderMode]] should be preferred if you only need to change a single property, as they will not create a new object unless\r\n * the new value differs from the current value.\r\n * [[copy]] and [[override]] should be preferred if you need to change multiple properties, as they will create no more than one new object, vs\r\n * each call to [[with]] or [[withRenderMode]] potentially creating a new object.\r\n * @see [[DisplayStyleSettings.viewFlags]] to define the view flags for a [DisplayStyle]($backend).\r\n * @public\r\n */\r\nexport class ViewFlags {\r\n /** The basic rendering mode applied to the view. This modulates the behavior of some of the other flags.\r\n * Default: [[RenderMode.Wireframe]].\r\n * @see [[RenderMode]] for details.\r\n */\r\n public readonly renderMode: RenderMode;\r\n /** Whether to display geometry of class [[GeometryClass.Dimension]]. Default: true. */\r\n public readonly dimensions: boolean;\r\n /** Whether to display geometry of class [[GeometryClass.Pattern]]. Default: true. */\r\n public readonly patterns: boolean;\r\n /** Whether to allow lines and edges to draw with width greater than one pixel. Default: true. */\r\n public readonly weights: boolean;\r\n /** Whether [[LinePixels]] are allowed to apply patterns to lines and edges. If false, they all draw as solid lines. Default: true. */\r\n public readonly styles: boolean;\r\n /** Whether element transparency is applied. If false, transparent geometry is drawn opaque. Default: true.\r\n * @see [[RenderMode]] for render mode-specific behavior.\r\n */\r\n public readonly transparency: boolean;\r\n /** In [[RenderMode.Wireframe]] only, whether to display the interiors of planar regions with [[FillFlags.ByView]]. Default: true. */\r\n public readonly fill: boolean;\r\n /** In [[RenderMode.SmoothShade]], whether to apply [[RenderTexture]]s to surfaces. Default: true. */\r\n public readonly textures: boolean;\r\n /** In [[RenderMode.SmoothShade]], whether to apply [[RenderMaterial]]s to surfaces. Default: true. */\r\n public readonly materials: boolean;\r\n /** Whether to display a graphical representation of the view's [AuxCoordSystem]($backend). Default: false. */\r\n public readonly acsTriad: boolean;\r\n /** Whether to display a grid. Default: false. */\r\n public readonly grid: boolean;\r\n /** In [[RenderMode.SmoothShade]], whether to display the edges of surfaces. Default: false.\r\n * @see [[HiddenLine.Settings]] to customize the appearance of the edges.\r\n */\r\n public readonly visibleEdges: boolean;\r\n /** In any mode except [[RenderMode.Wireframe]], whether to display the edges of surfaces occluded by other geometry.\r\n * This has no effect unless [[visibleEdges]] is also true.\r\n * Default: false.\r\n * @see [[HiddenLine.Settings]] to customize the appearance of the edges.\r\n */\r\n public readonly hiddenEdges: boolean;\r\n /** In [[RenderMode.SmoothShade]], whether to display solar shadows. This has no effect unless [[lighting]] is also true. Default: false.\r\n * @note Rendering shadows can reduce framerate, particularly on less capable graphics hardware or in complex scenes.\r\n */\r\n public readonly shadows: boolean;\r\n /** Whether to apply the view's clip volume to the geometry in the scene.\r\n * Default: true, except when using [[fromJSON]].\r\n * @see [[ViewDetails.clipVector]] to define the view's clip volume.\r\n */\r\n public readonly clipVolume: boolean;\r\n /** Whether to display geometry of class [[GeometryClass.Construction]].\r\n * Default: false, except when using [[fromJSON]].\r\n */\r\n public readonly constructions: boolean;\r\n /** Whether to produce a monochrome image. Default: false.\r\n * @see [DisplayStyleSettings.monochromeColor]($common) to define the monochrome color.\r\n * @see [DisplayStyleSettings.monochromeMode]($common) to define how the monochrome image is produced.\r\n */\r\n public readonly monochrome: boolean;\r\n /** Whether to display background map imagery. Default: false.\r\n * @see [[DisplayStyleSettings.backgroundMap]] to customize the map settings.\r\n */\r\n public readonly backgroundMap: boolean;\r\n /** In [[RenderMode.SmoothShade]], whether to apply [[AmbientOcclusion]]. Default: false. */\r\n public readonly ambientOcclusion: boolean;\r\n /** Whether to apply [[ThematicDisplay]]. Default: false. */\r\n public readonly thematicDisplay: boolean;\r\n /** If true, overlay surfaces with wiremesh to reveal their triangulation. */\r\n public readonly wiremesh: boolean;\r\n /** Controls whether surface discard is always applied regardless of other ViewFlags.\r\n * Surface shaders contain complicated logic to ensure that the edges of a surface always draw in front of the surface, and that planar surfaces sketched coincident with\r\n * non-planar surfaces always draw in front of those non-planar surfaces.\r\n * When this view flag is set to false (the default), then for 3d views if the render mode is wireframe (only edges are displayed) or smooth shader with visible edges turned off (only surfaces are displayed),\r\n * that logic does not execute, potentially improving performance for no degradation in visual quality. In some scenarios - such as wireframe views containing many planar regions with interior fill, or smooth views containing many coincident planar and non-planar surfaces - enabling this view flag improves display quality by forcing that logic to execute.\r\n */\r\n public readonly forceSurfaceDiscard: boolean;\r\n /** Whether to apply white-on-white reversal.\r\n * Some CAD applications use this to cause white geometry to be drawn as black if the view's background color is white.\r\n * When enabled, the [[DisplayStyleSettings]]' [[WhiteOnWhiteReversalSettings]] control how white-on-white reversal is applied.\r\n * Default: true.\r\n */\r\n public readonly whiteOnWhiteReversal: boolean;\r\n\r\n /** In [[RenderMode.SmoothShade]], whether to apply lighting to surfaces.\r\n * Default: false, except when using [[fromJSON]].\r\n * @see [[DisplayStyleSettings.lights]] to customize the light settings.\r\n */\r\n public readonly lighting: boolean;\r\n\r\n /** Create a new ViewFlags.\r\n * @param flags The properties to initialize. Any properties not specified are initialized to their default values.\r\n */\r\n public constructor(flags?: Partial<ViewFlagsProperties>) {\r\n this.renderMode = flags?.renderMode ?? RenderMode.Wireframe;\r\n this.dimensions = flags?.dimensions ?? true;\r\n this.patterns = flags?.patterns ?? true;\r\n this.weights = flags?.weights ?? true;\r\n this.styles = flags?.styles ?? true;\r\n this.transparency = flags?.transparency ?? true;\r\n this.fill = flags?.fill ?? true;\r\n this.textures = flags?.textures ?? true;\r\n this.materials = flags?.materials ?? true;\r\n this.acsTriad = flags?.acsTriad ?? false;\r\n this.grid = flags?.grid ?? false;\r\n this.visibleEdges = flags?.visibleEdges ?? false;\r\n this.hiddenEdges = flags?.hiddenEdges ?? false;\r\n this.shadows = flags?.shadows ?? false;\r\n this.clipVolume = flags?.clipVolume ?? true;\r\n this.constructions = flags?.constructions ?? false;\r\n this.monochrome = flags?.monochrome ?? false;\r\n this.backgroundMap = flags?.backgroundMap ?? false;\r\n this.ambientOcclusion = flags?.ambientOcclusion ?? false;\r\n this.thematicDisplay = flags?.thematicDisplay ?? false;\r\n this.wiremesh = flags?.wiremesh ?? false;\r\n this.forceSurfaceDiscard = flags?.forceSurfaceDiscard ?? false;\r\n this.whiteOnWhiteReversal = flags?.whiteOnWhiteReversal ?? true;\r\n this.lighting = flags?.lighting ?? false;\r\n }\r\n\r\n /** Produce a copy of these ViewFlags with some modified properties. Any properties not explicitly specified by `changedFlags` will retain their current values.\r\n * @param changedFlags Properties to modify.\r\n * @returns A copy of these ViewFlags modified according to the supplied properties.\r\n * @note Any explicitly `undefined` property of `changedFlags` will be set to its default value in the returned ViewFlags.\r\n * @see [[override]] to have `undefined` properties retain their current values.\r\n */\r\n public copy(changedFlags: Partial<ViewFlagsProperties>): ViewFlags {\r\n return JsonUtils.isNonEmptyObject(changedFlags) ? new ViewFlags({ ...this, ...changedFlags }) : this;\r\n }\r\n\r\n /** Produce a copy of these ViewFlags, overriding some of its properties. Any properties not explicitly specified by `overrides` will retain their current values,\r\n * as will any property explicitly set to `undefined`.\r\n * @param overrides The properties to override.\r\n * @see [[copy]] to have `undefined` properties reset to their default values.\r\n */\r\n public override(overrides: Partial<ViewFlagsProperties>): ViewFlags {\r\n // This method can get called very frequently when a RenderTimeline script is applied to the view. Often `overrides` will be an empty object.\r\n // To optimize:\r\n // - Bail as quickly as possible if nothing is actually overridden, without allocating a new ViewFlags.\r\n // - Only make a copy of the input if at least one property is explicitly `undefined`.\r\n let copied = false;\r\n let anyOverridden = false;\r\n\r\n for (const propName of Object.keys(overrides)) {\r\n const key = propName as keyof Partial<ViewFlagsProperties>;\r\n const overrideValue = overrides[key];\r\n if (undefined === overrideValue) {\r\n if (!copied) {\r\n // Don't modify input...\r\n overrides = { ...overrides };\r\n copied = true;\r\n }\r\n\r\n // `undefined` means \"retain existing value\".\r\n delete overrides[key];\r\n } else if (overrideValue !== this[key]) {\r\n anyOverridden = true;\r\n }\r\n }\r\n\r\n return anyOverridden ? this.copy(overrides) : this;\r\n }\r\n\r\n /** Produce a copy of these ViewFlags with a single boolean property changed.\r\n * @param flag The name of the property.\r\n * @param value The value to change the property to.\r\n * @returns A new ViewFlags with the property changed as specified, or `this` if the property already has the specified value.\r\n * @see [[withRenderMode]] to change the [[renderMode]] property.\r\n * @see [[copy]] and [[override]] to change multiple properties.\r\n */\r\n public with(flag: keyof Omit<ViewFlagsProperties, \"renderMode\">, value: boolean): ViewFlags {\r\n if (this[flag] === value)\r\n return this;\r\n\r\n const props: ViewFlagsProperties = { ...this };\r\n props[flag] = value;\r\n return new ViewFlags(props);\r\n }\r\n\r\n /** Produce a copy of these ViewFlags with a different [[renderMode]].\r\n * @param renderMode The new render mode.\r\n * @returns A new ViewFlags with the render mode changed as specified, or `this` if the render mode is already set to the requested value.\r\n * @see [[copy]] and [[override]] to change multiple properties.\r\n */\r\n public withRenderMode(renderMode: RenderMode): ViewFlags {\r\n return renderMode === this.renderMode ? this : this.copy({ renderMode });\r\n }\r\n\r\n /** Adjust view flags for renderer.\r\n * @internal\r\n */\r\n public normalize(): ViewFlags {\r\n switch (this.renderMode) {\r\n case RenderMode.Wireframe:\r\n if (this.visibleEdges || this.hiddenEdges)\r\n return this.copy({ visibleEdges: false, hiddenEdges: false });\r\n break;\r\n case RenderMode.SmoothShade:\r\n if (!this.visibleEdges)\r\n return this.copy({ hiddenEdges: false });\r\n break;\r\n case RenderMode.HiddenLine:\r\n case RenderMode.SolidFill:\r\n if (!this.visibleEdges || this.transparency)\r\n return this.copy({ visibleEdges: true, transparency: false });\r\n break;\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /** Returns true if edges that could be occluded by other geometry are visible for the current [[RenderMode]]. */\r\n public hiddenEdgesVisible(): boolean {\r\n switch (this.renderMode) {\r\n case RenderMode.SolidFill:\r\n case RenderMode.HiddenLine:\r\n return this.hiddenEdges;\r\n case RenderMode.SmoothShade:\r\n return this.visibleEdges && this.hiddenEdges;\r\n }\r\n return true;\r\n }\r\n\r\n /** Returns true if the edges of surfaces should be displayed, based on [[RenderMode]] and the [[visibleEdges]] flag. */\r\n public edgesRequired(): boolean {\r\n return edgesRequired(this.renderMode, this.visibleEdges);\r\n }\r\n\r\n /** Convert to JSON representation.\r\n * Properties are omitted if they match the default values.\r\n */\r\n public toJSON(): ViewFlagProps {\r\n const out: ViewFlagProps = {};\r\n if (!this.constructions)\r\n out.noConstruct = true;\r\n if (!this.dimensions)\r\n out.noDim = true;\r\n if (!this.patterns)\r\n out.noPattern = true;\r\n if (!this.weights)\r\n out.noWeight = true;\r\n if (!this.styles)\r\n out.noStyle = true;\r\n if (!this.transparency)\r\n out.noTransp = true;\r\n if (!this.fill)\r\n out.noFill = true;\r\n if (this.grid)\r\n out.grid = true;\r\n if (this.acsTriad)\r\n out.acs = true;\r\n if (!this.textures)\r\n out.noTexture = true;\r\n if (!this.materials)\r\n out.noMaterial = true;\r\n if (!this.lighting)\r\n out.noCameraLights = out.noSourceLights = out.noSolarLight = true;\r\n if (this.visibleEdges)\r\n out.visEdges = true;\r\n if (this.hiddenEdges)\r\n out.hidEdges = true;\r\n if (this.shadows)\r\n out.shadows = true;\r\n if (this.clipVolume)\r\n out.clipVol = true;\r\n if (this.monochrome)\r\n out.monochrome = true;\r\n if (this.backgroundMap)\r\n out.backgroundMap = true;\r\n if (this.ambientOcclusion)\r\n out.ambientOcclusion = true;\r\n if (this.thematicDisplay)\r\n out.thematicDisplay = true;\r\n if (this.wiremesh)\r\n out.wiremesh = true;\r\n if (this.forceSurfaceDiscard)\r\n out.forceSurfaceDiscard = true;\r\n if (!this.whiteOnWhiteReversal)\r\n out.noWhiteOnWhiteReversal = true;\r\n\r\n out.renderMode = this.renderMode;\r\n return out;\r\n }\r\n\r\n /** Like [[toJSON]], but no properties are omitted. */\r\n public toFullyDefinedJSON(): Required<ViewFlagProps> {\r\n return {\r\n renderMode: this.renderMode,\r\n noConstruct: !this.constructions,\r\n noDim: !this.dimensions,\r\n noPattern: !this.patterns,\r\n noWeight: !this.weights,\r\n noStyle: !this.styles,\r\n noTransp: !this.transparency,\r\n noFill: !this.fill,\r\n grid: this.grid,\r\n acs: this.acsTriad,\r\n noTexture: !this.textures,\r\n noMaterial: !this.materials,\r\n noCameraLights: !this.lighting,\r\n noSourceLights: !this.lighting,\r\n noSolarLight: !this.lighting,\r\n visEdges: this.visibleEdges,\r\n hidEdges: this.hiddenEdges,\r\n shadows: this.shadows,\r\n clipVol: this.clipVolume,\r\n monochrome: this.monochrome,\r\n backgroundMap: this.backgroundMap,\r\n ambientOcclusion: this.ambientOcclusion,\r\n thematicDisplay: this.thematicDisplay,\r\n wiremesh: this.wiremesh,\r\n forceSurfaceDiscard: this.forceSurfaceDiscard,\r\n noWhiteOnWhiteReversal: !this.whiteOnWhiteReversal,\r\n };\r\n }\r\n\r\n /** A ViewFlags object with all properties initialized to their default values. */\r\n public static readonly defaults = new ViewFlags();\r\n\r\n /** Create a ViewFlags.\r\n * @param flags The properties to initialize. Any properties not specified are initialized to their default values.\r\n */\r\n public static create(flags?: Partial<ViewFlagsProperties>): ViewFlags {\r\n return flags && !JsonUtils.isEmptyObject(flags) ? new ViewFlags(flags) : this.defaults;\r\n }\r\n\r\n /** Create a ViewFlags from its JSON representation.\r\n * @note As described in [[ViewFlagProps]], the JSON representation is awkward and error-prone. Prefer to use [[create]] unless you\r\n * need to deal with the persistence format directly.\r\n * @note The default values differ slightly from those used by the constructor and [[create]]:\r\n * - [[clipVolume]] defaults to false.\r\n * - [[constructions]] defaults to true.\r\n * - [[lighting]] defaults to true unless all of [[ViewFlagProps.noSolarLight]], [[ViewFlagProps.noCameraLights]], and [[ViewFlagProps.noSourceLights]] are true.\r\n */\r\n public static fromJSON(json?: ViewFlagProps): ViewFlags {\r\n if (!json)\r\n return this.defaults;\r\n\r\n let renderMode: RenderMode;\r\n const renderModeValue = JsonUtils.asInt(json.renderMode);\r\n if (renderModeValue < RenderMode.HiddenLine)\r\n renderMode = RenderMode.Wireframe;\r\n else if (renderModeValue > RenderMode.SolidFill)\r\n renderMode = RenderMode.SmoothShade;\r\n else\r\n renderMode = renderModeValue;\r\n\r\n const lighting = !JsonUtils.asBool(json.noCameraLights) || !JsonUtils.asBool(json.noSourceLights) || !JsonUtils.asBool(json.noSolarLight);\r\n return new ViewFlags({\r\n renderMode,\r\n lighting,\r\n constructions: !JsonUtils.asBool(json.noConstruct),\r\n dimensions: !JsonUtils.asBool(json.noDim),\r\n patterns: !JsonUtils.asBool(json.noPattern),\r\n weights: !JsonUtils.asBool(json.noWeight),\r\n styles: !JsonUtils.asBool(json.noStyle),\r\n transparency: !JsonUtils.asBool(json.noTransp),\r\n fill: !JsonUtils.asBool(json.noFill),\r\n grid: JsonUtils.asBool(json.grid),\r\n acsTriad: JsonUtils.asBool(json.acs),\r\n textures: !JsonUtils.asBool(json.noTexture),\r\n materials: !JsonUtils.asBool(json.noMaterial),\r\n visibleEdges: JsonUtils.asBool(json.visEdges),\r\n hiddenEdges: JsonUtils.asBool(json.hidEdges),\r\n shadows: JsonUtils.asBool(json.shadows),\r\n clipVolume: JsonUtils.asBool(json.clipVol),\r\n monochrome: JsonUtils.asBool(json.monochrome),\r\n backgroundMap: JsonUtils.asBool(json.backgroundMap),\r\n ambientOcclusion: JsonUtils.asBool(json.ambientOcclusion),\r\n thematicDisplay: JsonUtils.asBool(json.thematicDisplay),\r\n wiremesh: JsonUtils.asBool(json.wiremesh),\r\n forceSurfaceDiscard: JsonUtils.asBool(json.forceSurfaceDiscard),\r\n whiteOnWhiteReversal: !JsonUtils.asBool(json.noWhiteOnWhiteReversal),\r\n });\r\n }\r\n\r\n /** Returns true if `this` and `other` are equivalent. */\r\n public equals(other: Readonly<ViewFlagsProperties>): boolean {\r\n if (this === other)\r\n return true;\r\n\r\n return this.renderMode === other.renderMode\r\n && this.dimensions === other.dimensions\r\n && this.patterns === other.patterns\r\n && this.weights === other.weights\r\n && this.styles === other.styles\r\n && this.transparency === other.transparency\r\n && this.fill === other.fill\r\n && this.textures === other.textures\r\n && this.materials === other.materials\r\n && this.acsTriad === other.acsTriad\r\n && this.grid === other.grid\r\n && this.visibleEdges === other.visibleEdges\r\n && this.hiddenEdges === other.hiddenEdges\r\n && this.lighting === other.lighting\r\n && this.shadows === other.shadows\r\n && this.clipVolume === other.clipVolume\r\n && this.constructions === other.constructions\r\n && this.monochrome === other.monochrome\r\n && this.backgroundMap === other.backgroundMap\r\n && this.ambientOcclusion === other.ambientOcclusion\r\n && this.thematicDisplay === other.thematicDisplay\r\n && this.wiremesh === other.wiremesh\r\n && this.forceSurfaceDiscard === other.forceSurfaceDiscard\r\n && this.whiteOnWhiteReversal === other.whiteOnWhiteReversal;\r\n }\r\n}\r\n\r\n/** A type containing all of the properties of [[ViewFlags]] with none of the methods and with the `readonly` modifiers removed.\r\n * @see [[ViewFlags.create]], [[ViewFlags.copy]], and [[ViewFlags.override]] for methods accepting an object of this type.\r\n * @public\r\n * @extensions\r\n */\r\nexport type ViewFlagsProperties = Mutable<NonFunctionPropertiesOf<ViewFlags>>;\r\n\r\n/** A type that describes how to override selected properties of a [[ViewFlags]].\r\n * @see [[ViewFlags.override]] to apply the overrides to a ViewFlags object.\r\n * @public\r\n * @extensions\r\n */\r\nexport type ViewFlagOverrides = Partial<ViewFlagsProperties>;\r\n"]}
1
+ {"version":3,"file":"ViewFlags.js","sourceRoot":"","sources":["../../src/ViewFlags.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\n// cspell:ignore ovrs\r\n\r\nimport { JsonUtils, Mutable, NonFunctionPropertiesOf } from \"@itwin/core-bentley\";\r\n\r\n/** Enumerates the available basic rendering modes, as part of a [DisplayStyle]($backend)'s [[ViewFlags]].\r\n * The rendering mode broadly affects various aspects of the display style - in particular, whether and how surfaces and their edges are drawn.\r\n * @public\r\n * @extensions\r\n */\r\nexport enum RenderMode {\r\n /** Renders only the edges of surfaces, with exceptions for planar regions based on their [[FillFlags]].\r\n * Lighting (and by extension, shadows) is not applied.\r\n * [[HiddenLine.Settings]] are not applied - edges use the elements' width, style, and color.\r\n * [[ViewFlags.hiddenEdges]] is ignored - hidden edges are never displayed in wireframe mode.\r\n */\r\n Wireframe = 0,\r\n /** By default, renders surfaces without their edges.\r\n * Lighting and shadows can be applied using [[ViewFlags.lighting]] and [[ViewFlags.shadows]].\r\n * Edges can be enabled using [[ViewFlags.visibleEdges]] and [[ViewFlags.hiddenEdges]], and their appearance customized using [[HiddenLine.Settings]].\r\n * Surfaces can be drawn with transparency, based on [[ViewFlags.transparency]].\r\n */\r\n SmoothShade = 6,\r\n /** Renders surfaces and their edges. By default, edges are drawn in white; this can be overridden using [[HiddenLine.Settings]].\r\n * All surfaces are rendered opaque. If a surface's transparency is below that specified by [[HiddenLine.Settings.transparencyThreshold]], it is not rendered.\r\n * Materials and textures are not applied - surfaces are drawn in their actual colors.\r\n * [[ViewFlags.visibleEdges]] is ignored - visible edges are always drawn. Hidden edges can be enabled using [[ViewFlags.hiddenEdges]].\r\n * Lighting (and by extension, shadows) is not applied.\r\n */\r\n SolidFill = 4,\r\n /** Identical to [[RenderMode.SolidFill]], except:\r\n * - Surfaces are drawn using the [DisplayStyle]($backend)'s background color.\r\n * - Edges are drawn using their surface's colors; this can be overridden using [[HiddenLine.Settings]].\r\n */\r\n HiddenLine = 3,\r\n}\r\n\r\n/** JSON representation of [[ViewFlags]].\r\n * This is a persistence format with some unfortunate quirks that have been retained for backwards compatibility.\r\n * In particular, it supplies three separate flags intended to control lighting - [[noCameraLights]], [[noSourceLights]], and [[noSolarLight]] -\r\n * but there exists only a single [[ViewFlags.lighting]] flag. [[ViewFlags.lighting]] is set to true unless all three of the \"no lighting\" flags are true.\r\n * It also uses awkward negative ([[noConstruct]], [[noTransp]]) and/or abbreviated ([[clipVol]], [[visEdges]]) property names that differ from\r\n * those of the corresponding [[ViewFlags]] properties, making usage of this type in code error-prone.\r\n * Prefer to use [[ViewFlagsProperties]] unless you need to work directly with the persistence format.\r\n * @public\r\n * @extensions\r\n */\r\nexport interface ViewFlagProps {\r\n /** If true, don't display geometry of class [[GeometryClass.Construction]]. */\r\n noConstruct?: boolean;\r\n /** If true, don't display geometry of class [[GeometryClass.Dimension]]. */\r\n noDim?: boolean;\r\n /** If true, don't display geometry of class [[GeometryClass.Pattern]]. */\r\n noPattern?: boolean;\r\n /** If true, all lines are drawn with a width of 1 pixel. */\r\n noWeight?: boolean;\r\n /** If true, don't apply [[LinePixels]] styles. */\r\n noStyle?: boolean;\r\n /** If true, display transparency geometry as opaque. */\r\n noTransp?: boolean;\r\n /** If true, don't show filled planar regions, unless they use [[FillFlags.Always]]. */\r\n noFill?: boolean;\r\n /** If true, display a grid in the view. */\r\n grid?: boolean;\r\n /** If true, display graphics representing the [AuxCoordSystem]($backend). */\r\n acs?: boolean;\r\n /** If true, don't apply [[RenderTexture]]s to surfaces. */\r\n noTexture?: boolean;\r\n /** If true, don't apply [[RenderMaterial]]s to surfaces. */\r\n noMaterial?: boolean;\r\n /** See [[ViewFlagProps]] for how this affects [[ViewFlags.lighting]]. */\r\n noCameraLights?: boolean;\r\n /** See [[ViewFlagProps]] for how this affects [[ViewFlags.lighting]]. */\r\n noSourceLights?: boolean;\r\n /** See [[ViewFlagProps]] for how this affects [[ViewFlags.lighting]]. */\r\n noSolarLight?: boolean;\r\n /** If true, display the edges of surfaces. */\r\n visEdges?: boolean;\r\n /** If true, display the edges of surfaces, even if they are behind other geometry. */\r\n hidEdges?: boolean;\r\n /** If true, display shadows. */\r\n shadows?: boolean;\r\n /** If true, apply the view's clipping volume. Has no effect on other types of clips like [[ModelClipGroups]]. */\r\n clipVol?: boolean;\r\n /** If true, apply the view's [[DisplayStyleSettings.monochromeColor]] and [[DisplayStyleSettings.monochromeMode]] to produce a monochrome image. */\r\n monochrome?: boolean;\r\n /** The basic rendering mode, which affects the behavior of other flags. */\r\n renderMode?: RenderMode;\r\n /** Display a background map. */\r\n backgroundMap?: boolean;\r\n /** If true, apply [[AmbientOcclusion]]. */\r\n ambientOcclusion?: boolean;\r\n /** If true, apply [[ThematicDisplay]]. */\r\n thematicDisplay?: boolean;\r\n /** If true, overlay surfaces with wiremesh to reveal their triangulation. */\r\n wiremesh?: boolean;\r\n /** Controls whether surface discard is always applied regardless of other ViewFlags.\r\n * Surface shaders contain complicated logic to ensure that the edges of a surface always draw in front of the surface, and that planar surfaces sketched coincident with\r\n * non-planar surfaces always draw in front of those non-planar surfaces.\r\n * When this view flag is set to false (the default), then for 3d views if the render mode is wireframe (only edges are displayed) or smooth shader with visible edges turned off (only surfaces are displayed),\r\n * that logic does not execute, potentially improving performance for no degradation in visual quality. In some scenarios - such as wireframe views containing many planar regions with interior fill, or smooth views containing many coincident planar and non-planar surfaces - enabling this view flag improves display quality by forcing that logic to execute.\r\n */\r\n forceSurfaceDiscard?: boolean;\r\n /** Disables the \"white-on-white reversal\" employed by some CAD applications.\r\n * @see [[ViewFlags.whiteOnWhiteReversal]].\r\n */\r\n noWhiteOnWhiteReversal?: boolean;\r\n}\r\n\r\nfunction edgesRequired(renderMode: RenderMode, visibleEdges: boolean): boolean {\r\n return visibleEdges || RenderMode.SmoothShade !== renderMode;\r\n}\r\n\r\n/** Flags controlling how graphics appear within a view.\r\n * A [[ViewFlags]] object is immutable. There are several ways to produce a modified copy of a ViewFlags object:\r\n * ```ts\r\n * // Start with the default values for all properties.\r\n * let vf = ViewFlags.defaults;\r\n * // Change a single boolean property:\r\n * vf = vf.with(\"visibleEdges\", true);\r\n * // Change only the render mode:\r\n * vf = vf.withRenderMode(RenderMode.HiddenLine);\r\n * // Change multiple properties:\r\n * vf = vf.copy({ renderMode: RenderMode.SmoothShade, visibleEdges: true });\r\n * // Reset multiple properties to their default values:\r\n * vf = vf.copy({ renderMode: undefined, visibleEdges: undefined });\r\n *\r\n * ```\r\n * [[with]] and [[withRenderMode]] should be preferred if you only need to change a single property, as they will not create a new object unless\r\n * the new value differs from the current value.\r\n * [[copy]] and [[override]] should be preferred if you need to change multiple properties, as they will create no more than one new object, vs\r\n * each call to [[with]] or [[withRenderMode]] potentially creating a new object.\r\n * @see [[DisplayStyleSettings.viewFlags]] to define the view flags for a [DisplayStyle]($backend).\r\n * @public\r\n */\r\nexport class ViewFlags {\r\n /** The basic rendering mode applied to the view. This modulates the behavior of some of the other flags.\r\n * Default: [[RenderMode.Wireframe]].\r\n * @see [[RenderMode]] for details.\r\n */\r\n public readonly renderMode: RenderMode;\r\n /** Whether to display geometry of class [[GeometryClass.Dimension]]. Default: true. */\r\n public readonly dimensions: boolean;\r\n /** Whether to display geometry of class [[GeometryClass.Pattern]]. Default: true. */\r\n public readonly patterns: boolean;\r\n /** Whether to allow lines and edges to draw with width greater than one pixel. Default: true. */\r\n public readonly weights: boolean;\r\n /** Whether [[LinePixels]] are allowed to apply patterns to lines and edges. If false, they all draw as solid lines. Default: true. */\r\n public readonly styles: boolean;\r\n /** Whether element transparency is applied. If false, transparent geometry is drawn opaque. Default: true.\r\n * @see [[RenderMode]] for render mode-specific behavior.\r\n */\r\n public readonly transparency: boolean;\r\n /** In [[RenderMode.Wireframe]] only, whether to display the interiors of planar regions with [[FillFlags.ByView]]. Default: true. */\r\n public readonly fill: boolean;\r\n /** In [[RenderMode.SmoothShade]], whether to apply [[RenderTexture]]s to surfaces. Default: true. */\r\n public readonly textures: boolean;\r\n /** In [[RenderMode.SmoothShade]], whether to apply [[RenderMaterial]]s to surfaces. Default: true. */\r\n public readonly materials: boolean;\r\n /** Whether to display a graphical representation of the view's [AuxCoordSystem]($backend). Default: false. */\r\n public readonly acsTriad: boolean;\r\n /** Whether to display a grid. Default: false. */\r\n public readonly grid: boolean;\r\n /** In [[RenderMode.SmoothShade]], whether to display the edges of surfaces. Default: false.\r\n * @see [[HiddenLine.Settings]] to customize the appearance of the edges.\r\n */\r\n public readonly visibleEdges: boolean;\r\n /** In any mode except [[RenderMode.Wireframe]], whether to display the edges of surfaces occluded by other geometry.\r\n * This has no effect unless [[visibleEdges]] is also true.\r\n * Default: false.\r\n * @see [[HiddenLine.Settings]] to customize the appearance of the edges.\r\n */\r\n public readonly hiddenEdges: boolean;\r\n /** In [[RenderMode.SmoothShade]], whether to display solar shadows. This has no effect unless [[lighting]] is also true. Default: false.\r\n * @note Rendering shadows can reduce framerate, particularly on less capable graphics hardware or in complex scenes.\r\n */\r\n public readonly shadows: boolean;\r\n /** Whether to apply the view's clip volume to the geometry in the scene.\r\n * Default: true, except when using [[fromJSON]].\r\n * @see [[ViewDetails.clipVector]] to define the view's clip volume.\r\n */\r\n public readonly clipVolume: boolean;\r\n /** Whether to display geometry of class [[GeometryClass.Construction]].\r\n * Default: false, except when using [[fromJSON]].\r\n */\r\n public readonly constructions: boolean;\r\n /** Whether to produce a monochrome image. Default: false.\r\n * @see [DisplayStyleSettings.monochromeColor]($common) to define the monochrome color.\r\n * @see [DisplayStyleSettings.monochromeMode]($common) to define how the monochrome image is produced.\r\n */\r\n public readonly monochrome: boolean;\r\n /** Whether to display background map imagery. Default: false.\r\n * @see [[DisplayStyleSettings.backgroundMap]] to customize the map settings.\r\n */\r\n public readonly backgroundMap: boolean;\r\n /** In [[RenderMode.SmoothShade]], whether to apply [[AmbientOcclusion]]. Default: false. */\r\n public readonly ambientOcclusion: boolean;\r\n /** Whether to apply [[ThematicDisplay]]. Default: false. */\r\n public readonly thematicDisplay: boolean;\r\n /** If true, overlay surfaces with wiremesh to reveal their triangulation. */\r\n public readonly wiremesh: boolean;\r\n /** Controls whether surface discard is always applied regardless of other ViewFlags.\r\n * Surface shaders contain complicated logic to ensure that the edges of a surface always draw in front of the surface, and that planar surfaces sketched coincident with\r\n * non-planar surfaces always draw in front of those non-planar surfaces.\r\n * When this view flag is set to false (the default), then for 3d views if the render mode is wireframe (only edges are displayed) or smooth shader with visible edges turned off (only surfaces are displayed),\r\n * that logic does not execute, potentially improving performance for no degradation in visual quality. In some scenarios - such as wireframe views containing many planar regions with interior fill, or smooth views containing many coincident planar and non-planar surfaces - enabling this view flag improves display quality by forcing that logic to execute.\r\n */\r\n public readonly forceSurfaceDiscard: boolean;\r\n /** Whether to apply white-on-white reversal.\r\n * Some CAD applications use this to cause white geometry to be drawn as black if the view's background color is white.\r\n * When enabled, the [[DisplayStyleSettings]]' [[WhiteOnWhiteReversalSettings]] control how white-on-white reversal is applied.\r\n * Default: true.\r\n */\r\n public readonly whiteOnWhiteReversal: boolean;\r\n\r\n /** In [[RenderMode.SmoothShade]], whether to apply lighting to surfaces.\r\n * Default: false, except when using [[fromJSON]].\r\n * @see [[DisplayStyleSettings.lights]] to customize the light settings.\r\n */\r\n public readonly lighting: boolean;\r\n\r\n /** Create a new ViewFlags.\r\n * @param flags The properties to initialize. Any properties not specified are initialized to their default values.\r\n */\r\n public constructor(flags?: Partial<ViewFlagsProperties>) {\r\n this.renderMode = flags?.renderMode ?? RenderMode.Wireframe;\r\n this.dimensions = flags?.dimensions ?? true;\r\n this.patterns = flags?.patterns ?? true;\r\n this.weights = flags?.weights ?? true;\r\n this.styles = flags?.styles ?? true;\r\n this.transparency = flags?.transparency ?? true;\r\n this.fill = flags?.fill ?? true;\r\n this.textures = flags?.textures ?? true;\r\n this.materials = flags?.materials ?? true;\r\n this.acsTriad = flags?.acsTriad ?? false;\r\n this.grid = flags?.grid ?? false;\r\n this.visibleEdges = flags?.visibleEdges ?? false;\r\n this.hiddenEdges = flags?.hiddenEdges ?? false;\r\n this.shadows = flags?.shadows ?? false;\r\n this.clipVolume = flags?.clipVolume ?? true;\r\n this.constructions = flags?.constructions ?? false;\r\n this.monochrome = flags?.monochrome ?? false;\r\n this.backgroundMap = flags?.backgroundMap ?? false;\r\n this.ambientOcclusion = flags?.ambientOcclusion ?? false;\r\n this.thematicDisplay = flags?.thematicDisplay ?? false;\r\n this.wiremesh = flags?.wiremesh ?? false;\r\n this.forceSurfaceDiscard = flags?.forceSurfaceDiscard ?? false;\r\n this.whiteOnWhiteReversal = flags?.whiteOnWhiteReversal ?? true;\r\n this.lighting = flags?.lighting ?? false;\r\n }\r\n\r\n /** Produce a copy of these ViewFlags with some modified properties. Any properties not explicitly specified by `changedFlags` will retain their current values.\r\n * @param changedFlags Properties to modify.\r\n * @returns A copy of these ViewFlags modified according to the supplied properties.\r\n * @note Any explicitly `undefined` property of `changedFlags` will be set to its default value in the returned ViewFlags.\r\n * @see [[override]] to have `undefined` properties retain their current values.\r\n */\r\n public copy(changedFlags: Partial<ViewFlagsProperties>): ViewFlags {\r\n return JsonUtils.isNonEmptyObject(changedFlags) ? new ViewFlags({ ...this, ...changedFlags }) : this;\r\n }\r\n\r\n /** Produce a copy of these ViewFlags, overriding some of its properties. Any properties not explicitly specified by `overrides` will retain their current values,\r\n * as will any property explicitly set to `undefined`.\r\n * @param overrides The properties to override.\r\n * @see [[copy]] to have `undefined` properties reset to their default values.\r\n */\r\n public override(overrides: Partial<ViewFlagsProperties>): ViewFlags {\r\n // This method can get called very frequently when a RenderTimeline script is applied to the view. Often `overrides` will be an empty object.\r\n // To optimize:\r\n // - Bail as quickly as possible if nothing is actually overridden, without allocating a new ViewFlags.\r\n // - Only make a copy of the input if at least one property is explicitly `undefined`.\r\n let copied = false;\r\n let anyOverridden = false;\r\n\r\n for (const propName of Object.keys(overrides)) {\r\n const key = propName as keyof Partial<ViewFlagsProperties>;\r\n const overrideValue = overrides[key];\r\n if (undefined === overrideValue) {\r\n if (!copied) {\r\n // Don't modify input...\r\n overrides = { ...overrides };\r\n copied = true;\r\n }\r\n\r\n // `undefined` means \"retain existing value\".\r\n delete overrides[key];\r\n } else if (overrideValue !== this[key]) {\r\n anyOverridden = true;\r\n }\r\n }\r\n\r\n return anyOverridden ? this.copy(overrides) : this;\r\n }\r\n\r\n /** Produce a copy of these ViewFlags with a single boolean property changed.\r\n * @param flag The name of the property.\r\n * @param value The value to change the property to.\r\n * @returns A new ViewFlags with the property changed as specified, or `this` if the property already has the specified value.\r\n * @see [[withRenderMode]] to change the [[renderMode]] property.\r\n * @see [[copy]] and [[override]] to change multiple properties.\r\n */\r\n public with(flag: keyof Omit<ViewFlagsProperties, \"renderMode\">, value: boolean): ViewFlags {\r\n if (this[flag] === value)\r\n return this;\r\n\r\n const props: ViewFlagsProperties = { ...this };\r\n props[flag] = value;\r\n return new ViewFlags(props);\r\n }\r\n\r\n /** Produce a copy of these ViewFlags with a different [[renderMode]].\r\n * @param renderMode The new render mode.\r\n * @returns A new ViewFlags with the render mode changed as specified, or `this` if the render mode is already set to the requested value.\r\n * @see [[copy]] and [[override]] to change multiple properties.\r\n */\r\n public withRenderMode(renderMode: RenderMode): ViewFlags {\r\n return renderMode === this.renderMode ? this : this.copy({ renderMode });\r\n }\r\n\r\n /** Adjust view flags for renderer.\r\n * @internal\r\n */\r\n public normalize(): ViewFlags {\r\n switch (this.renderMode) {\r\n case RenderMode.Wireframe:\r\n if (this.visibleEdges || this.hiddenEdges)\r\n return this.copy({ visibleEdges: false, hiddenEdges: false });\r\n break;\r\n case RenderMode.SmoothShade:\r\n if (!this.visibleEdges)\r\n return this.copy({ hiddenEdges: false });\r\n break;\r\n case RenderMode.HiddenLine:\r\n case RenderMode.SolidFill:\r\n if (!this.visibleEdges || this.transparency)\r\n return this.copy({ visibleEdges: true, transparency: false });\r\n break;\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /** Returns true if edges that could be occluded by other geometry are visible for the current [[RenderMode]]. */\r\n public hiddenEdgesVisible(): boolean {\r\n switch (this.renderMode) {\r\n case RenderMode.SolidFill:\r\n case RenderMode.HiddenLine:\r\n return this.hiddenEdges;\r\n case RenderMode.SmoothShade:\r\n return this.visibleEdges && this.hiddenEdges;\r\n }\r\n return true;\r\n }\r\n\r\n /** Returns true if the edges of surfaces should be displayed, based on [[RenderMode]] and the [[visibleEdges]] flag. */\r\n public edgesRequired(): boolean {\r\n return edgesRequired(this.renderMode, this.visibleEdges);\r\n }\r\n\r\n /** Convert to JSON representation.\r\n * Properties are omitted if they match the default values.\r\n */\r\n public toJSON(): ViewFlagProps {\r\n const out: ViewFlagProps = {};\r\n if (!this.constructions)\r\n out.noConstruct = true;\r\n if (!this.dimensions)\r\n out.noDim = true;\r\n if (!this.patterns)\r\n out.noPattern = true;\r\n if (!this.weights)\r\n out.noWeight = true;\r\n if (!this.styles)\r\n out.noStyle = true;\r\n if (!this.transparency)\r\n out.noTransp = true;\r\n if (!this.fill)\r\n out.noFill = true;\r\n if (this.grid)\r\n out.grid = true;\r\n if (this.acsTriad)\r\n out.acs = true;\r\n if (!this.textures)\r\n out.noTexture = true;\r\n if (!this.materials)\r\n out.noMaterial = true;\r\n if (!this.lighting)\r\n out.noCameraLights = out.noSourceLights = out.noSolarLight = true;\r\n if (this.visibleEdges)\r\n out.visEdges = true;\r\n if (this.hiddenEdges)\r\n out.hidEdges = true;\r\n if (this.shadows)\r\n out.shadows = true;\r\n if (this.clipVolume)\r\n out.clipVol = true;\r\n if (this.monochrome)\r\n out.monochrome = true;\r\n if (this.backgroundMap)\r\n out.backgroundMap = true;\r\n if (this.ambientOcclusion)\r\n out.ambientOcclusion = true;\r\n if (this.thematicDisplay)\r\n out.thematicDisplay = true;\r\n if (this.wiremesh)\r\n out.wiremesh = true;\r\n if (this.forceSurfaceDiscard)\r\n out.forceSurfaceDiscard = true;\r\n if (!this.whiteOnWhiteReversal)\r\n out.noWhiteOnWhiteReversal = true;\r\n\r\n out.renderMode = this.renderMode;\r\n return out;\r\n }\r\n\r\n /** Like [[toJSON]], but no properties are omitted. */\r\n public toFullyDefinedJSON(): Required<ViewFlagProps> {\r\n return {\r\n renderMode: this.renderMode,\r\n noConstruct: !this.constructions,\r\n noDim: !this.dimensions,\r\n noPattern: !this.patterns,\r\n noWeight: !this.weights,\r\n noStyle: !this.styles,\r\n noTransp: !this.transparency,\r\n noFill: !this.fill,\r\n grid: this.grid,\r\n acs: this.acsTriad,\r\n noTexture: !this.textures,\r\n noMaterial: !this.materials,\r\n noCameraLights: !this.lighting,\r\n noSourceLights: !this.lighting,\r\n noSolarLight: !this.lighting,\r\n visEdges: this.visibleEdges,\r\n hidEdges: this.hiddenEdges,\r\n shadows: this.shadows,\r\n clipVol: this.clipVolume,\r\n monochrome: this.monochrome,\r\n backgroundMap: this.backgroundMap,\r\n ambientOcclusion: this.ambientOcclusion,\r\n thematicDisplay: this.thematicDisplay,\r\n wiremesh: this.wiremesh,\r\n forceSurfaceDiscard: this.forceSurfaceDiscard,\r\n noWhiteOnWhiteReversal: !this.whiteOnWhiteReversal,\r\n };\r\n }\r\n\r\n /** A ViewFlags object with all properties initialized to their default values. */\r\n public static readonly defaults = new ViewFlags();\r\n\r\n /** Create a ViewFlags.\r\n * @param flags The properties to initialize. Any properties not specified are initialized to their default values.\r\n */\r\n public static create(flags?: Partial<ViewFlagsProperties>): ViewFlags {\r\n return flags && !JsonUtils.isEmptyObject(flags) ? new ViewFlags(flags) : this.defaults;\r\n }\r\n\r\n /** Create a ViewFlags from its JSON representation.\r\n * @note As described in [[ViewFlagProps]], the JSON representation is awkward and error-prone. Prefer to use [[create]] unless you\r\n * need to deal with the persistence format directly.\r\n * @note The default values differ slightly from those used by the constructor and [[create]]:\r\n * - [[clipVolume]] defaults to false.\r\n * - [[constructions]] defaults to true.\r\n * - [[lighting]] defaults to true unless all of [[ViewFlagProps.noSolarLight]], [[ViewFlagProps.noCameraLights]], and [[ViewFlagProps.noSourceLights]] are true.\r\n */\r\n public static fromJSON(json?: ViewFlagProps): ViewFlags {\r\n if (!json)\r\n return this.defaults;\r\n\r\n let renderMode: RenderMode;\r\n const renderModeValue = JsonUtils.asInt(json.renderMode);\r\n if (renderModeValue < RenderMode.HiddenLine)\r\n renderMode = RenderMode.Wireframe;\r\n else if (renderModeValue > RenderMode.SolidFill)\r\n renderMode = RenderMode.SmoothShade;\r\n else\r\n renderMode = renderModeValue;\r\n\r\n const lighting = !JsonUtils.asBool(json.noCameraLights) || !JsonUtils.asBool(json.noSourceLights) || !JsonUtils.asBool(json.noSolarLight);\r\n return new ViewFlags({\r\n renderMode,\r\n lighting,\r\n constructions: !JsonUtils.asBool(json.noConstruct),\r\n dimensions: !JsonUtils.asBool(json.noDim),\r\n patterns: !JsonUtils.asBool(json.noPattern),\r\n weights: !JsonUtils.asBool(json.noWeight),\r\n styles: !JsonUtils.asBool(json.noStyle),\r\n transparency: !JsonUtils.asBool(json.noTransp),\r\n fill: !JsonUtils.asBool(json.noFill),\r\n grid: JsonUtils.asBool(json.grid),\r\n acsTriad: JsonUtils.asBool(json.acs),\r\n textures: !JsonUtils.asBool(json.noTexture),\r\n materials: !JsonUtils.asBool(json.noMaterial),\r\n visibleEdges: JsonUtils.asBool(json.visEdges),\r\n hiddenEdges: JsonUtils.asBool(json.hidEdges),\r\n shadows: JsonUtils.asBool(json.shadows),\r\n clipVolume: JsonUtils.asBool(json.clipVol),\r\n monochrome: JsonUtils.asBool(json.monochrome),\r\n backgroundMap: JsonUtils.asBool(json.backgroundMap),\r\n ambientOcclusion: JsonUtils.asBool(json.ambientOcclusion),\r\n thematicDisplay: JsonUtils.asBool(json.thematicDisplay),\r\n wiremesh: JsonUtils.asBool(json.wiremesh),\r\n forceSurfaceDiscard: JsonUtils.asBool(json.forceSurfaceDiscard),\r\n whiteOnWhiteReversal: !JsonUtils.asBool(json.noWhiteOnWhiteReversal),\r\n });\r\n }\r\n\r\n /** Returns true if `this` and `other` are equivalent. */\r\n public equals(other: Readonly<ViewFlagsProperties>): boolean {\r\n if (this === other)\r\n return true;\r\n\r\n return this.renderMode === other.renderMode\r\n && this.dimensions === other.dimensions\r\n && this.patterns === other.patterns\r\n && this.weights === other.weights\r\n && this.styles === other.styles\r\n && this.transparency === other.transparency\r\n && this.fill === other.fill\r\n && this.textures === other.textures\r\n && this.materials === other.materials\r\n && this.acsTriad === other.acsTriad\r\n && this.grid === other.grid\r\n && this.visibleEdges === other.visibleEdges\r\n && this.hiddenEdges === other.hiddenEdges\r\n && this.lighting === other.lighting\r\n && this.shadows === other.shadows\r\n && this.clipVolume === other.clipVolume\r\n && this.constructions === other.constructions\r\n && this.monochrome === other.monochrome\r\n && this.backgroundMap === other.backgroundMap\r\n && this.ambientOcclusion === other.ambientOcclusion\r\n && this.thematicDisplay === other.thematicDisplay\r\n && this.wiremesh === other.wiremesh\r\n && this.forceSurfaceDiscard === other.forceSurfaceDiscard\r\n && this.whiteOnWhiteReversal === other.whiteOnWhiteReversal;\r\n }\r\n}\r\n\r\n/** A type containing all of the properties of [[ViewFlags]] with none of the methods and with the `readonly` modifiers removed.\r\n * @see [[ViewFlags.create]], [[ViewFlags.copy]], and [[ViewFlags.override]] for methods accepting an object of this type.\r\n * @public\r\n * @extensions\r\n */\r\nexport type ViewFlagsProperties = Mutable<NonFunctionPropertiesOf<ViewFlags>>;\r\n\r\n/** A type that describes how to override selected properties of a [[ViewFlags]].\r\n * @see [[ViewFlags.override]] to apply the overrides to a ViewFlags object.\r\n * @public\r\n * @extensions\r\n */\r\nexport type ViewFlagOverrides = Partial<ViewFlagsProperties>;\r\n"]}
@@ -12,7 +12,7 @@
12
12
  * @see [[DisplayStyleSettings.whiteOnWhiteReversal]] to change these settings for a display style.
13
13
  * @public
14
14
  */
15
- class WhiteOnWhiteReversalSettings {
15
+ export class WhiteOnWhiteReversalSettings {
16
16
  constructor(ignoreBackground) {
17
17
  this.ignoreBackgroundColor = ignoreBackground;
18
18
  }
@@ -31,5 +31,4 @@ class WhiteOnWhiteReversalSettings {
31
31
  }
32
32
  WhiteOnWhiteReversalSettings._noIgnore = new WhiteOnWhiteReversalSettings(true);
33
33
  WhiteOnWhiteReversalSettings._ignore = new WhiteOnWhiteReversalSettings(false);
34
- export { WhiteOnWhiteReversalSettings };
35
34
  //# sourceMappingURL=WhiteOnWhiteReversalSettings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WhiteOnWhiteReversalSettings.js","sourceRoot":"","sources":["../../src/WhiteOnWhiteReversalSettings.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAaH;;;;;;GAMG;AACH,MAAa,4BAA4B;IAOvC,YAAoB,gBAAyB;QAC3C,IAAI,CAAC,qBAAqB,GAAG,gBAAgB,CAAC;IAChD,CAAC;IAKD,uCAAuC;IAChC,MAAM,CAAC,QAAQ,CAAC,KAAiC;QACtD,OAAO,KAAK,EAAE,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;IACtE,CAAC;IAED,mHAAmH;IAC5G,MAAM;QACX,OAAO,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAClF,CAAC;IAED,uDAAuD;IAChD,MAAM,CAAC,KAAmC;QAC/C,OAAO,IAAI,KAAK,KAAK,CAAC;IACxB,CAAC;;AAhBc,sCAAS,GAAG,IAAI,4BAA4B,CAAC,IAAI,CAAC,CAAC;AACnD,oCAAO,GAAG,IAAI,4BAA4B,CAAC,KAAK,CAAC,CAAC;SAZtD,4BAA4B","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/** JSON representation of a [[WhiteOnWhiteReversalSettings]].\r\n * @public\r\n * @extensions\r\n */\r\nexport interface WhiteOnWhiteReversalProps {\r\n /** Default: false.\r\n * @see [[WhiteOnWhiteReversalSettings.ignoreBackgroundColor]].\r\n */\r\n ignoreBackgroundColor?: boolean;\r\n}\r\n\r\n/** As part of a [[DisplayStyleSettings]], controls how white-on-white reversal is applied to make white geometry more\r\n * visible in the view.\r\n * By default, pure white geometry is displayed as black instead if the [[DisplayStyleSettings.backgroundColor]] is also pure white.\r\n * These settings are only applied if the display style's [[ViewFlags.whiteOnWhiteReversal]] flag is enabled.\r\n * @see [[DisplayStyleSettings.whiteOnWhiteReversal]] to change these settings for a display style.\r\n * @public\r\n */\r\nexport class WhiteOnWhiteReversalSettings {\r\n /** If true, white-on-white reversal ignores the display style's background color; otherwise, white-on-white reversal applies only\r\n * if the background color is pure white.\r\n * @see [[DisplayStyleSettings.backgroundColor]] to change the background color.\r\n */\r\n public readonly ignoreBackgroundColor: boolean;\r\n\r\n private constructor(ignoreBackground: boolean) {\r\n this.ignoreBackgroundColor = ignoreBackground;\r\n }\r\n\r\n private static _noIgnore = new WhiteOnWhiteReversalSettings(true);\r\n private static _ignore = new WhiteOnWhiteReversalSettings(false);\r\n\r\n /** Create from JSON representation. */\r\n public static fromJSON(props?: WhiteOnWhiteReversalProps): WhiteOnWhiteReversalSettings {\r\n return props?.ignoreBackgroundColor ? this._noIgnore : this._ignore;\r\n }\r\n\r\n /** Convert to JSON representation. The JSON representation is `undefined` if these settings match the defaults. */\r\n public toJSON(): WhiteOnWhiteReversalProps | undefined {\r\n return this.ignoreBackgroundColor ? { ignoreBackgroundColor: true } : undefined;\r\n }\r\n\r\n /** Returns true if `this` is equivalent to `other`. */\r\n public equals(other: WhiteOnWhiteReversalSettings): boolean {\r\n return this === other;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"WhiteOnWhiteReversalSettings.js","sourceRoot":"","sources":["../../src/WhiteOnWhiteReversalSettings.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAaH;;;;;;GAMG;AACH,MAAM,OAAO,4BAA4B;IAOvC,YAAoB,gBAAyB;QAC3C,IAAI,CAAC,qBAAqB,GAAG,gBAAgB,CAAC;IAChD,CAAC;IAKD,uCAAuC;IAChC,MAAM,CAAC,QAAQ,CAAC,KAAiC;QACtD,OAAO,KAAK,EAAE,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;IACtE,CAAC;IAED,mHAAmH;IAC5G,MAAM;QACX,OAAO,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAClF,CAAC;IAED,uDAAuD;IAChD,MAAM,CAAC,KAAmC;QAC/C,OAAO,IAAI,KAAK,KAAK,CAAC;IACxB,CAAC;;AAhBc,sCAAS,GAAG,IAAI,4BAA4B,CAAC,IAAI,CAAC,CAAC;AACnD,oCAAO,GAAG,IAAI,4BAA4B,CAAC,KAAK,CAAC,CAAC","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/** JSON representation of a [[WhiteOnWhiteReversalSettings]].\r\n * @public\r\n * @extensions\r\n */\r\nexport interface WhiteOnWhiteReversalProps {\r\n /** Default: false.\r\n * @see [[WhiteOnWhiteReversalSettings.ignoreBackgroundColor]].\r\n */\r\n ignoreBackgroundColor?: boolean;\r\n}\r\n\r\n/** As part of a [[DisplayStyleSettings]], controls how white-on-white reversal is applied to make white geometry more\r\n * visible in the view.\r\n * By default, pure white geometry is displayed as black instead if the [[DisplayStyleSettings.backgroundColor]] is also pure white.\r\n * These settings are only applied if the display style's [[ViewFlags.whiteOnWhiteReversal]] flag is enabled.\r\n * @see [[DisplayStyleSettings.whiteOnWhiteReversal]] to change these settings for a display style.\r\n * @public\r\n */\r\nexport class WhiteOnWhiteReversalSettings {\r\n /** If true, white-on-white reversal ignores the display style's background color; otherwise, white-on-white reversal applies only\r\n * if the background color is pure white.\r\n * @see [[DisplayStyleSettings.backgroundColor]] to change the background color.\r\n */\r\n public readonly ignoreBackgroundColor: boolean;\r\n\r\n private constructor(ignoreBackground: boolean) {\r\n this.ignoreBackgroundColor = ignoreBackground;\r\n }\r\n\r\n private static _noIgnore = new WhiteOnWhiteReversalSettings(true);\r\n private static _ignore = new WhiteOnWhiteReversalSettings(false);\r\n\r\n /** Create from JSON representation. */\r\n public static fromJSON(props?: WhiteOnWhiteReversalProps): WhiteOnWhiteReversalSettings {\r\n return props?.ignoreBackgroundColor ? this._noIgnore : this._ignore;\r\n }\r\n\r\n /** Convert to JSON representation. The JSON representation is `undefined` if these settings match the defaults. */\r\n public toJSON(): WhiteOnWhiteReversalProps | undefined {\r\n return this.ignoreBackgroundColor ? { ignoreBackgroundColor: true } : undefined;\r\n }\r\n\r\n /** Returns true if `this` is equivalent to `other`. */\r\n public equals(other: WhiteOnWhiteReversalSettings): boolean {\r\n return this === other;\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"TextAnnotation.js","sourceRoot":"","sources":["../../../src/annotation/TextAnnotation.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 Annotation\r\n */\r\n\r\nimport { Point3d, Range2d, Transform, XYZProps, YawPitchRollAngles, YawPitchRollProps } from \"@itwin/core-geometry\";\r\nimport { TextBlock, TextBlockProps } from \"./TextBlock\";\r\n\r\n/**\r\n * Describes the horizontal and vertical alignment of a [[TextAnnotation]]'s text relative to [[TextAnnotation.origin]].\r\n * @beta\r\n * @preview\r\n * @extensions\r\n */\r\nexport interface TextAnnotationAnchor {\r\n /**\r\n * The vertical alignment of the anchor point.\r\n * \"top\" aligns the top of the text with the anchor point.\r\n * \"middle\" aligns the middle of the text with the anchor point.\r\n * \"bottom\" aligns the bottom of the text with the anchor point.\r\n */\r\n vertical: \"top\" | \"middle\" | \"bottom\";\r\n\r\n /**\r\n * The horizontal alignment of the anchor point.\r\n * \"left\" aligns the left side of the text with the anchor point.\r\n * \"center\" aligns the center of the text with the anchor point.\r\n * \"right\" aligns the right side of the text with the anchor point.\r\n */\r\n horizontal: \"left\" | \"center\" | \"right\";\r\n}\r\n\r\n/**\r\n * JSON representation of a [[TextAnnotation]].\r\n * @beta\r\n * @preview\r\n * @extensions\r\n */\r\nexport interface TextAnnotationProps {\r\n /** See [[TextAnnotation.origin]]. Default: [0, 0, 0]*/\r\n origin?: XYZProps;\r\n /** See [[TextAnnotation.orientation]]. Default: no rotation. */\r\n orientation?: YawPitchRollProps;\r\n /** See [[TextAnnotation.textBlock]]. Default: an empty text block. */\r\n textBlock?: TextBlockProps;\r\n /** See [[TextAnnotation.anchor]]. Default: top-left. */\r\n anchor?: TextAnnotationAnchor;\r\n}\r\n\r\n/** Arguments supplied to [[TextAnnotation.create]].\r\n * @beta\r\n * @preview\r\n * @extensions\r\n */\r\nexport interface TextAnnotationCreateArgs {\r\n /** See [[TextAnnotation.origin]]. Default: [0, 0, 0]*/\r\n origin?: Point3d;\r\n /** See [[TextAnnotation.orientation]]. Default: no rotation. */\r\n orientation?: YawPitchRollAngles;\r\n /** See [[TextAnnotation.textBlock]]. Default: an empty text block. */\r\n textBlock?: TextBlock;\r\n /** See [[TextAnnotation.anchor]]. Default: top-left. */\r\n anchor?: TextAnnotationAnchor;\r\n}\r\n/**\r\n * Represents a formatted block of text positioned in 2d or 3d space.\r\n * [TextAnnotation2d]($backend) and [TextAnnotation3d]($backend) elements store a TextAnnotation from which their geometric representation is generated.\r\n * @see [produceTextAnnotationGeometry]($backend) to decompose the annotation into a set of geometric primitives suitable for use with [[GeometryStreamBuilder.appendTextBlock]].\r\n * @beta\r\n * @preview\r\n * @extensions\r\n */\r\nexport class TextAnnotation {\r\n /**\r\n * The point considered to be the origin of the annotation. The [[textBlock]]'s content is justified relative to this point as specified by [[anchor]].\r\n * This point is also considered the origin by [AccuSnap]($frontend) when using [SnapMode.Origin]($frontend).\r\n * Often, the origin is specified by a user clicking in a viewport when placing text annotations interactively.\r\n * @note When defining an annotation for a [TextAnnotation2d]($backend), the `z` component should be zero.\r\n */\r\n public origin: Point3d;\r\n /**\r\n * The rotation of the annotation.\r\n * @note When defining an annotation for a [TextAnnotation2d]($backend), only the `yaw` component (rotation around the Z axis) is used.\r\n */\r\n public orientation: YawPitchRollAngles;\r\n /**\r\n * The formatted document.\r\n */\r\n public textBlock: TextBlock;\r\n /**\r\n * Describes how the [[textBlock]]'s content should be aligned relative to the [[origin]].\r\n */\r\n public anchor: TextAnnotationAnchor;\r\n\r\n private constructor(origin: Point3d, angles: YawPitchRollAngles, textBlock: TextBlock, anchor: TextAnnotationAnchor) {\r\n this.origin = origin;\r\n this.orientation = angles;\r\n this.textBlock = textBlock;\r\n this.anchor = anchor;\r\n }\r\n\r\n /** Creates a new TextAnnotation. */\r\n public static create(args?: TextAnnotationCreateArgs): TextAnnotation {\r\n const origin = args?.origin ?? new Point3d();\r\n const angles = args?.orientation ?? new YawPitchRollAngles();\r\n const textBlock = args?.textBlock ?? TextBlock.createEmpty();\r\n const anchor = args?.anchor ?? { vertical: \"top\", horizontal: \"left\" };\r\n\r\n return new TextAnnotation(origin, angles, textBlock, anchor);\r\n }\r\n\r\n /**\r\n * Creates a new TextAnnotation instance from its JSON representation.\r\n */\r\n public static fromJSON(props: TextAnnotationProps | undefined): TextAnnotation {\r\n return TextAnnotation.create({\r\n origin: props?.origin ? Point3d.fromJSON(props.origin) : undefined,\r\n orientation: props?.orientation ? YawPitchRollAngles.fromJSON(props.orientation) : undefined,\r\n textBlock: props?.textBlock ? TextBlock.create(props.textBlock) : undefined,\r\n anchor: props?.anchor ? { ...props.anchor } : undefined,\r\n });\r\n }\r\n\r\n /**\r\n * Converts this annotation to its JSON representation.\r\n */\r\n public toJSON(): TextAnnotationProps {\r\n const props: TextAnnotationProps = {};\r\n\r\n // Even if the text block is empty, we want to record its style name and overrides, e.g.,\r\n // so the user can pick up where they left off editing it next time.\r\n props.textBlock = this.textBlock.toJSON();\r\n\r\n if (!this.origin.isZero) {\r\n props.origin = this.origin.toJSON();\r\n }\r\n\r\n if (!this.orientation.isIdentity()) {\r\n props.orientation = this.orientation.toJSON();\r\n }\r\n\r\n if (this.anchor.vertical !== \"top\" || this.anchor.horizontal !== \"left\") {\r\n props.anchor = { ...this.anchor };\r\n }\r\n\r\n return props;\r\n }\r\n\r\n /**\r\n * @internal used by produceTextAnnotationGeometry; requires layoutRange computed by layoutTextBlock.\r\n */\r\n public computeDocumentTransform(layoutRange: Range2d): Transform {\r\n const origin = this.origin.clone();\r\n const matrix = this.orientation.toMatrix3d();\r\n\r\n switch (this.anchor.horizontal) {\r\n case \"center\":\r\n origin.x -= layoutRange.xLength() / 2;\r\n break;\r\n case \"right\":\r\n origin.x -= layoutRange.xLength();\r\n break;\r\n }\r\n\r\n switch (this.anchor.vertical) {\r\n case \"middle\":\r\n origin.y += layoutRange.yLength() / 2;\r\n break;\r\n case \"bottom\":\r\n origin.y += layoutRange.yLength();\r\n break;\r\n }\r\n\r\n return Transform.createRefs(origin, matrix);\r\n }\r\n\r\n /** Returns true if this annotation is logically equivalent to `other`. */\r\n public equals(other: TextAnnotation): boolean {\r\n return this.anchor.horizontal === other.anchor.horizontal && this.anchor.vertical === other.anchor.vertical\r\n && this.orientation.isAlmostEqual(other.orientation) && this.origin.isAlmostEqual(other.origin)\r\n && this.textBlock.equals(other.textBlock);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"TextAnnotation.js","sourceRoot":"","sources":["../../../src/annotation/TextAnnotation.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 Annotation\r\n */\r\n\r\nimport { Point3d, Range2d, Transform, XYZProps, YawPitchRollAngles, YawPitchRollProps } from \"@itwin/core-geometry\";\r\nimport { TextBlock, TextBlockProps } from \"./TextBlock\";\r\n\r\n/**\r\n * Describes the horizontal and vertical alignment of a [[TextAnnotation]]'s text relative to [[TextAnnotation.origin]].\r\n * @beta\r\n * @preview\r\n * @extensions\r\n */\r\nexport interface TextAnnotationAnchor {\r\n /**\r\n * The vertical alignment of the anchor point.\r\n * \"top\" aligns the top of the text with the anchor point.\r\n * \"middle\" aligns the middle of the text with the anchor point.\r\n * \"bottom\" aligns the bottom of the text with the anchor point.\r\n */\r\n vertical: \"top\" | \"middle\" | \"bottom\";\r\n\r\n /**\r\n * The horizontal alignment of the anchor point.\r\n * \"left\" aligns the left side of the text with the anchor point.\r\n * \"center\" aligns the center of the text with the anchor point.\r\n * \"right\" aligns the right side of the text with the anchor point.\r\n */\r\n horizontal: \"left\" | \"center\" | \"right\";\r\n}\r\n\r\n/**\r\n * JSON representation of a [[TextAnnotation]].\r\n * @beta\r\n * @preview\r\n * @extensions\r\n */\r\nexport interface TextAnnotationProps {\r\n /** See [[TextAnnotation.origin]]. Default: [0, 0, 0]*/\r\n origin?: XYZProps;\r\n /** See [[TextAnnotation.orientation]]. Default: no rotation. */\r\n orientation?: YawPitchRollProps;\r\n /** See [[TextAnnotation.textBlock]]. Default: an empty text block. */\r\n textBlock?: TextBlockProps;\r\n /** See [[TextAnnotation.anchor]]. Default: top-left. */\r\n anchor?: TextAnnotationAnchor;\r\n}\r\n\r\n/** Arguments supplied to [[TextAnnotation.create]].\r\n * @beta\r\n * @preview\r\n * @extensions\r\n */\r\nexport interface TextAnnotationCreateArgs {\r\n /** See [[TextAnnotation.origin]]. Default: [0, 0, 0]*/\r\n origin?: Point3d;\r\n /** See [[TextAnnotation.orientation]]. Default: no rotation. */\r\n orientation?: YawPitchRollAngles;\r\n /** See [[TextAnnotation.textBlock]]. Default: an empty text block. */\r\n textBlock?: TextBlock;\r\n /** See [[TextAnnotation.anchor]]. Default: top-left. */\r\n anchor?: TextAnnotationAnchor;\r\n}\r\n/**\r\n * Represents a formatted block of text positioned in 2d or 3d space.\r\n * [TextAnnotation2d]($backend) and [TextAnnotation3d]($backend) elements store a TextAnnotation from which their geometric representation is generated.\r\n * @see [produceTextAnnotationGeometry]($backend) to decompose the annotation into a set of geometric primitives suitable for use with [[GeometryStreamBuilder.appendTextBlock]].\r\n * @beta\r\n * @preview\r\n * @extensions\r\n */\r\nexport class TextAnnotation {\r\n /**\r\n * The point considered to be the origin of the annotation. The [[textBlock]]'s content is justified relative to this point as specified by [[anchor]].\r\n * This point is also considered the origin by [AccuSnap]($frontend) when using [SnapMode.Origin]($frontend).\r\n * Often, the origin is specified by a user clicking in a viewport when placing text annotations interactively.\r\n * @note When defining an annotation for a [TextAnnotation2d]($backend), the `z` component should be zero.\r\n */\r\n public origin: Point3d;\r\n /**\r\n * The rotation of the annotation.\r\n * @note When defining an annotation for a [TextAnnotation2d]($backend), only the `yaw` component (rotation around the Z axis) is used.\r\n */\r\n public orientation: YawPitchRollAngles;\r\n /**\r\n * The formatted document.\r\n */\r\n public textBlock: TextBlock;\r\n /**\r\n * Describes how the [[textBlock]]'s content should be aligned relative to the [[origin]].\r\n */\r\n public anchor: TextAnnotationAnchor;\r\n\r\n private constructor(origin: Point3d, angles: YawPitchRollAngles, textBlock: TextBlock, anchor: TextAnnotationAnchor) {\r\n this.origin = origin;\r\n this.orientation = angles;\r\n this.textBlock = textBlock;\r\n this.anchor = anchor;\r\n }\r\n\r\n /** Creates a new TextAnnotation. */\r\n public static create(args?: TextAnnotationCreateArgs): TextAnnotation {\r\n const origin = args?.origin ?? new Point3d();\r\n const angles = args?.orientation ?? new YawPitchRollAngles();\r\n const textBlock = args?.textBlock ?? TextBlock.createEmpty();\r\n const anchor = args?.anchor ?? { vertical: \"top\", horizontal: \"left\" };\r\n\r\n return new TextAnnotation(origin, angles, textBlock, anchor);\r\n }\r\n\r\n /**\r\n * Creates a new TextAnnotation instance from its JSON representation.\r\n */\r\n public static fromJSON(props: TextAnnotationProps | undefined): TextAnnotation {\r\n return TextAnnotation.create({\r\n origin: props?.origin ? Point3d.fromJSON(props.origin) : undefined,\r\n orientation: props?.orientation ? YawPitchRollAngles.fromJSON(props.orientation) : undefined,\r\n textBlock: props?.textBlock ? TextBlock.create(props.textBlock) : undefined,\r\n anchor: props?.anchor ? { ...props.anchor } : undefined,\r\n });\r\n }\r\n\r\n /**\r\n * Converts this annotation to its JSON representation.\r\n */\r\n public toJSON(): TextAnnotationProps {\r\n const props: TextAnnotationProps = {};\r\n\r\n // Even if the text block is empty, we want to record its style name and overrides, e.g.,\r\n // so the user can pick up where they left off editing it next time.\r\n props.textBlock = this.textBlock.toJSON();\r\n\r\n if (!this.origin.isZero) {\r\n props.origin = this.origin.toJSON();\r\n }\r\n\r\n if (!this.orientation.isIdentity()) {\r\n props.orientation = this.orientation.toJSON();\r\n }\r\n\r\n if (this.anchor.vertical !== \"top\" || this.anchor.horizontal !== \"left\") {\r\n props.anchor = { ...this.anchor };\r\n }\r\n\r\n return props;\r\n }\r\n\r\n /**\r\n * @internal used by produceTextAnnotationGeometry; requires layoutRange computed by layoutTextBlock.\r\n */\r\n public computeDocumentTransform(layoutRange: Range2d): Transform {\r\n const origin = this.origin.clone();\r\n const matrix = this.orientation.toMatrix3d();\r\n\r\n switch (this.anchor.horizontal) {\r\n case \"center\":\r\n origin.x -= layoutRange.xLength() / 2;\r\n break;\r\n case \"right\":\r\n origin.x -= layoutRange.xLength();\r\n break;\r\n }\r\n\r\n switch (this.anchor.vertical) {\r\n case \"middle\":\r\n origin.y += layoutRange.yLength() / 2;\r\n break;\r\n case \"bottom\":\r\n origin.y += layoutRange.yLength();\r\n break;\r\n }\r\n\r\n return Transform.createRefs(origin, matrix);\r\n }\r\n\r\n /** Returns true if this annotation is logically equivalent to `other`. */\r\n public equals(other: TextAnnotation): boolean {\r\n return this.anchor.horizontal === other.anchor.horizontal && this.anchor.vertical === other.anchor.vertical\r\n && this.orientation.isAlmostEqual(other.orientation) && this.origin.isAlmostEqual(other.origin)\r\n && this.textBlock.equals(other.textBlock);\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"TextBlock.js","sourceRoot":"","sources":["../../../src/annotation/TextBlock.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 Annotation\r\n */\r\n\r\nimport { TextStyleSettingsProps } from \"./TextStyle\";\r\n\r\n/** Options supplied to [[TextBlockComponent.applyStyle]] to control how the style is applied to the component and its child components.\r\n * @beta\r\n * @preview\r\n * @extensions\r\n */\r\nexport interface ApplyTextStyleOptions {\r\n /** Controls whether any deviations from the style's settings stored in [[TextBlockComponent.styleOverrides]] are retained.\r\n * By default, all overrides are cleared.\r\n */\r\n preserveOverrides?: boolean;\r\n /** Controls whether the style should be recursively applied to the [[Paragraph]]s belonging to a [[TextBlock]] and the [[Run]]s belonging to a [[Paragraph]].\r\n * By default, the style change propagates to child components.\r\n */\r\n preventPropagation?: boolean;\r\n}\r\n\r\n/** The JSON representation of a [[TextBlockComponent]].\r\n * @beta\r\n * @preview\r\n * @extensions\r\n */\r\nexport interface TextBlockComponentProps {\r\n /** The name of a [[TextStyle]] stored in a [Workspace]($backend) from which the base [[TextStyleSettings]] applied to the component originates. */\r\n styleName: string;\r\n /** Deviations from the base [[TextStyleSettings]] defined by the [[TextStyle]] applied to this component.\r\n * This permits you to, e.g., create a [[TextRun]] using \"Arial\" font and override it to use \"Comic Sans\" instead.\r\n */\r\n styleOverrides?: TextStyleSettingsProps;\r\n}\r\n\r\n/** Options supplied to [[TextBlockComponent.stringify]] to control how the content is formatted.\r\n * @beta\r\n * @preview\r\n * @extensions\r\n */\r\nexport interface TextBlockStringifyOptions {\r\n /** A string to insert in between each [[Paragraph]].\r\n * Default: \" \" - a single space.\r\n */\r\n paragraphBreak?: string;\r\n /** A string to insert for each [[LineBreakRun]].\r\n * Default: \" \" - a single space.\r\n */\r\n lineBreak?: string;\r\n /** A string to insert between the numerator and denominator of each [[FractionRun]].\r\n * Default: \"/\"\r\n */\r\n fractionSeparator?: string;\r\n}\r\n\r\n/** Abstract representation of any of the building blocks that make up a [[TextBlock]] document - namely [[Run]]s, [[Paragraph]]s, and [[TextBlock]] itself.\r\n * Each component can specify a [[TextStyle]] that formats its contents and optional [[styleOverrides]] to customize that formatting.\r\n * @beta\r\n * @preview\r\n * @extensions\r\n */\r\nexport abstract class TextBlockComponent {\r\n private _styleName: string;\r\n private _styleOverrides: TextStyleSettingsProps;\r\n\r\n /** @internal */\r\n protected constructor(props: TextBlockComponentProps) {\r\n this._styleName = props.styleName;\r\n this._styleOverrides = { ...props.styleOverrides };\r\n }\r\n\r\n /** The name of the [[TextStyle]] that provides the base formatting for the contents of this component.\r\n * @note Assigning to this property is equivalent to calling [[applyStyle]] with default [[ApplyTextStyleOptions]], which propagates the style change to all of\r\n * the components sub-components and clears any [[styleOverrides]].\r\n */\r\n public get styleName(): string {\r\n return this._styleName;\r\n }\r\n\r\n public set styleName(styleName: string) {\r\n this.applyStyle(styleName);\r\n }\r\n\r\n /** Deviations in individual properties of the [[TextStyle]] specified by [[styleName]].\r\n * For example, if the style uses the \"Arial\" font, you can override that by settings `styleOverrides.fontName` to \"Comic Sans\".\r\n * @see [[clearStyleOverrides]] to reset this to an empty object.\r\n */\r\n public get styleOverrides(): TextStyleSettingsProps {\r\n return this._styleOverrides;\r\n }\r\n\r\n public set styleOverrides(overrides: TextStyleSettingsProps) {\r\n this._styleOverrides = { ...overrides };\r\n }\r\n\r\n /** Reset any [[styleOverrides]] applied to this component's [[TextStyle]]. */\r\n public clearStyleOverrides(): void {\r\n this.styleOverrides = { };\r\n }\r\n\r\n /** Apply the [[TextStyle]] specified by `styleName` to this component, optionally preserving [[styleOverrides]] and/or preventing propagation to sub-components. */\r\n public applyStyle(styleName: string, options?: ApplyTextStyleOptions): void {\r\n this._styleName = styleName;\r\n\r\n if (!(options?.preserveOverrides)) {\r\n this.clearStyleOverrides();\r\n }\r\n }\r\n\r\n /** Returns true if [[styleOverrides]] specifies any deviations from this component's base [[TextStyle]]. */\r\n public get overridesStyle(): boolean {\r\n return Object.keys(this.styleOverrides).length > 0;\r\n }\r\n\r\n /** Create a deep copy of this component. */\r\n public abstract clone(): TextBlockComponent;\r\n\r\n /** Compute a string representation of the contents of this component and all of its sub-components. */\r\n public abstract stringify(options?: TextBlockStringifyOptions): string;\r\n\r\n /** Convert this component to its JSON representation. */\r\n public toJSON(): TextBlockComponentProps {\r\n return {\r\n styleName: this.styleName,\r\n styleOverrides: { ...this.styleOverrides },\r\n };\r\n }\r\n\r\n /** Returns true if `this` is equivalent to `other`. */\r\n public equals(other: TextBlockComponent): boolean {\r\n const myKeys = Object.keys(this.styleOverrides);\r\n const yrKeys = Object.keys(other._styleOverrides);\r\n if (this.styleName !== other.styleName || myKeys.length !== yrKeys.length) {\r\n return false;\r\n }\r\n\r\n for (const name of myKeys) {\r\n const key = name as keyof TextStyleSettingsProps;\r\n if (this.styleOverrides[key] !== other.styleOverrides[key]) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n}\r\n\r\n/**\r\n * @beta\r\n * @preview\r\n * @extensions\r\n */\r\nexport type Run = TextRun | FractionRun | LineBreakRun;\r\n\r\n/** The JSON representation of a [[Run]].\r\n * Use the `type` field to discriminate between the different kinds of runs.\r\n * @beta\r\n * @preview\r\n * @extensions\r\n */\r\nexport type RunProps = TextRunProps | FractionRunProps | LineBreakRunProps;\r\n\r\n/** A sequence of characters within a [[Paragraph]] that share a single style. Runs are the leaf nodes of a [[TextBlock]] document. When laid out for display, a single run may span\r\n * multiple lines, but it will never contain different styling.\r\n * Use the `type` field to discriminate between the different kinds of runs.\r\n * @beta\r\n * @preview\r\n * @extensions\r\n */\r\nexport namespace Run { // eslint-disable-line @typescript-eslint/no-redeclare\r\n /** Create a run from its JSON representation.\r\n * @see [[TextRun.create]], [[FractionRun.create]], and [[LineBreakRun.create]] to create a run directly.\r\n */\r\n export function fromJSON(props: RunProps): Run {\r\n switch (props.type) {\r\n case \"text\": return TextRun.create(props);\r\n case \"fraction\": return FractionRun.create(props);\r\n case \"linebreak\": return LineBreakRun.create(props);\r\n }\r\n }\r\n}\r\n\r\n/** Describes whether the characters of a [[TextRun]] should be displayed normally, in subscript, or in superscript.\r\n * [[TextStyleSettings.superScriptScale]], [[TextStyleSettings.subScriptScale]], [[TextStyleSettings.superScriptOffsetFactor]], and [[TextStyleSettings.subScriptOffsetFactor]]\r\n * affect how the content is rendered.\r\n * @beta\r\n * @preview\r\n * @extensions\r\n */\r\nexport type BaselineShift = \"subscript\" | \"superscript\" | \"none\";\r\n\r\n/** JSON representation of a [[TextRun]].\r\n * @beta\r\n * @preview\r\n * @extensions\r\n */\r\nexport interface TextRunProps extends TextBlockComponentProps {\r\n /** Discriminator field for the [[RunProps]] union. */\r\n readonly type: \"text\";\r\n /** The characters displayed by the run.\r\n * Default: an empty string.\r\n */\r\n content?: string;\r\n /** Whether to display [[content]] as a subscript, superscript, or normally.\r\n * Default: \"none\"\r\n */\r\n baselineShift?: BaselineShift;\r\n}\r\n\r\n/** The most common type of [[Run]], containing a sequence of characters to be displayed using a single style.\r\n * @beta\r\n * @preview\r\n * @extensions\r\n */\r\nexport class TextRun extends TextBlockComponent {\r\n /** Discriminator field for the [[Run]] union. */\r\n public readonly type = \"text\";\r\n /** The sequence of characters to be displayed by the run. */\r\n public content: string;\r\n /** Whether to display [[content]] as a subscript, superscript, or normally. */\r\n public baselineShift: BaselineShift;\r\n\r\n private constructor(props: Omit<TextRunProps, \"type\">) {\r\n super(props);\r\n this.content = props.content ?? \"\";\r\n this.baselineShift = props.baselineShift ?? \"none\";\r\n }\r\n\r\n public override clone(): TextRun {\r\n return new TextRun(this.toJSON());\r\n }\r\n\r\n public override toJSON(): TextRunProps {\r\n return {\r\n ...super.toJSON(),\r\n type: \"text\",\r\n content: this.content,\r\n baselineShift: this.baselineShift,\r\n };\r\n }\r\n\r\n public static create(props: Omit<TextRunProps, \"type\">): TextRun {\r\n return new TextRun(props);\r\n }\r\n\r\n /** Simply returns [[content]]. */\r\n public override stringify(): string {\r\n return this.content;\r\n }\r\n\r\n public override equals(other: TextBlockComponent): boolean {\r\n return other instanceof TextRun && this.content === other.content && this.baselineShift === other.baselineShift && super.equals(other);\r\n }\r\n}\r\n\r\n/** JSON representation of a [[FractionRun]].\r\n * @beta\r\n * @preview\r\n * @extensions\r\n */\r\nexport interface FractionRunProps extends TextBlockComponentProps {\r\n /** Discriminator field for the [[RunProps]] union. */\r\n readonly type: \"fraction\";\r\n /** The text displayed before or above the fraction separator, depending on [[TextStyle.stackedFractionType]]. Default: an empty string. */\r\n numerator?: string;\r\n /** The text displayed after or below the fraction separator, depending on [[TextStyle.stackedFractionType]]. Default: an empty string. */\r\n denominator?: string;\r\n}\r\n\r\n/** A [[Run]] containing a numeric ratio to be displayed as a numerator and denominator separated by a horizontal or diagonal bar.\r\n * @note The [[numerator]] and [[denominator]] are stored as strings. They are not technically required to contain a numeric representation.\r\n * @beta\r\n * @preview\r\n * @extensions\r\n */\r\nexport class FractionRun extends TextBlockComponent {\r\n /** Discriminator field for the [[Run]] union. */\r\n public readonly type = \"fraction\";\r\n /** The fraction's numerator. */\r\n public numerator: string;\r\n /** The fraction's denominator. */\r\n public denominator: string;\r\n\r\n private constructor(props: Omit<FractionRunProps, \"type\">) {\r\n super(props);\r\n this.numerator = props.numerator ?? \"\";\r\n this.denominator = props.denominator ?? \"\";\r\n }\r\n\r\n public override toJSON(): FractionRunProps {\r\n return {\r\n ...super.toJSON(),\r\n type: \"fraction\",\r\n numerator: this.numerator,\r\n denominator: this.denominator,\r\n };\r\n }\r\n\r\n public override clone(): FractionRun {\r\n return new FractionRun(this.toJSON());\r\n }\r\n\r\n public static create(props: Omit<FractionRunProps, \"type\">): FractionRun {\r\n return new FractionRun(props);\r\n }\r\n\r\n /** Formats the fraction as a string with the [[numerator]] and [[denominator]] separated by [[TextBlockStringifyOptions.fractionSeparator]]. */\r\n public override stringify(options?: TextBlockStringifyOptions): string {\r\n const sep = options?.fractionSeparator ?? \"/\";\r\n return `${this.numerator}${sep}${this.denominator}`;\r\n }\r\n\r\n public override equals(other: TextBlockComponent): boolean {\r\n return other instanceof FractionRun && this.numerator === other.numerator && this.denominator === other.denominator && super.equals(other);\r\n }\r\n}\r\n\r\n/** JSON representation of a [[LineBreakRun]].\r\n * @beta\r\n * @preview\r\n * @extensions\r\n */\r\nexport interface LineBreakRunProps extends TextBlockComponentProps {\r\n /** Discriminator field for the [[RunProps]] union. */\r\n readonly type: \"linebreak\";\r\n}\r\n\r\n/** A [[Run]] that represents the end of a line of text within a [[Paragraph]]. It contains no content of its own - it simply causes subsequent content to display on a new line.\r\n * @beta\r\n * @preview\r\n * @extensions\r\n */\r\nexport class LineBreakRun extends TextBlockComponent {\r\n /** Discriminator field for the [[Run]] union. */\r\n public readonly type = \"linebreak\";\r\n\r\n private constructor(props: TextBlockComponentProps) {\r\n super(props);\r\n }\r\n\r\n public override toJSON(): LineBreakRunProps {\r\n return {\r\n ...super.toJSON(),\r\n type: \"linebreak\",\r\n };\r\n }\r\n\r\n public static create(props: TextBlockComponentProps) {\r\n return new LineBreakRun(props);\r\n }\r\n\r\n public override clone(): LineBreakRun {\r\n return new LineBreakRun(this.toJSON());\r\n }\r\n\r\n /** Simply returns [[TextBlockStringifyOptions.lineBreak]]. */\r\n public override stringify(options?: TextBlockStringifyOptions): string {\r\n return options?.lineBreak ?? \" \";\r\n }\r\n\r\n public override equals(other: TextBlockComponent): boolean {\r\n return other instanceof LineBreakRun && super.equals(other);\r\n }\r\n}\r\n\r\n/** JSON representation of a [[Paragraph]].\r\n * @beta\r\n * @preview\r\n * @extensions\r\n */\r\nexport interface ParagraphProps extends TextBlockComponentProps {\r\n /** The collection of [[Run]]s within the paragraph.\r\n * Default: an empty array.\r\n */\r\n runs?: RunProps[];\r\n}\r\n\r\n/** A collection of [[Run]]s within a [[TextBlock]]. Each paragraph within a text block is laid out on a separate line.\r\n * @beta\r\n * @preview\r\n * @extensions\r\n */\r\nexport class Paragraph extends TextBlockComponent {\r\n /** The runs within the paragraph. You can modify the contents of this array to change the content of the paragraph. */\r\n public readonly runs: Run[];\r\n\r\n private constructor(props: ParagraphProps) {\r\n super(props);\r\n this.runs = props.runs?.map((run) => Run.fromJSON(run)) ?? [];\r\n }\r\n\r\n public override toJSON(): ParagraphProps {\r\n return {\r\n ...super.toJSON(),\r\n runs: this.runs.map((run) => run.toJSON()),\r\n };\r\n }\r\n\r\n /** Create a paragraph from its JSON representation. */\r\n public static create(props: ParagraphProps): Paragraph {\r\n return new Paragraph(props);\r\n }\r\n\r\n public override clone(): Paragraph {\r\n return new Paragraph(this.toJSON());\r\n }\r\n\r\n /** Apply the specified style to this [[Paragraph]], and - unless [[ApplyTextStyleOptions.preventPropagation]] is `true` - to all of its [[runs]]. */\r\n public override applyStyle(styleName: string, options?: ApplyTextStyleOptions): void {\r\n super.applyStyle(styleName, options);\r\n if (!(options?.preventPropagation)) {\r\n for (const run of this.runs) {\r\n run.applyStyle(styleName, options);\r\n }\r\n }\r\n }\r\n\r\n /** Compute a string representation of this paragraph by concatenating the string representations of all of its [[runs]]. */\r\n public override stringify(options?: TextBlockStringifyOptions): string {\r\n return this.runs.map((x) => x.stringify(options)).join(\"\");\r\n }\r\n\r\n public override equals(other: TextBlockComponent): boolean {\r\n if (!(other instanceof Paragraph)) {\r\n return false;\r\n }\r\n\r\n if (this.runs.length !== other.runs.length || !super.equals(other)) {\r\n return false;\r\n }\r\n\r\n return this.runs.every((run, index) => run.equals(other.runs[index]));\r\n }\r\n}\r\n\r\n/** Describes the relative alignment of the content of a [[TextBlock]].\r\n * @beta\r\n * @preview\r\n * @extensions\r\n */\r\nexport type TextBlockJustification = \"left\" | \"center\" | \"right\";\r\n\r\n/** JSON representation of a [[TextBlock]].\r\n * @beta\r\n * @preview\r\n * @extensions\r\n */\r\nexport interface TextBlockProps extends TextBlockComponentProps {\r\n /** The width of the document in meters. Lines that would exceed this width are instead wrapped around to the next line.\r\n * A value less than or equal to zero indicates no wrapping is to be applied.\r\n * Default: 0\r\n */\r\n width?: number;\r\n /** The alignment of the document content. Default: \"left\". */\r\n justification?: TextBlockJustification;\r\n /** The paragraphs within the text block. Default: an empty array. */\r\n paragraphs?: ParagraphProps[];\r\n}\r\n\r\n/** Represents a formatted text document consisting of a series of [[Paragraph]]s, each laid out on a separate line and containing their own content in the form of [[Run]]s.\r\n * You can change the content of the document by directly modifying the contents of its [[paragraphs]], or via [[appendParagraph]] and [[appendRun]].\r\n * No word-wrapping is applied to the document unless a [[width]] greater than zero is specified.\r\n * @see [[TextAnnotation]] to position a text block as an annotation in 2d or 3d space.\r\n * @beta\r\n * @preview\r\n * @extensions\r\n */\r\nexport class TextBlock extends TextBlockComponent {\r\n /** The width of the document in meters. Lines that would exceed this width are instead wrapped around to the next line.\r\n * A value less than or equal to zero indicates no wrapping is to be applied.\r\n * Default: 0\r\n */\r\n public width: number;\r\n /** The alignment of the document's content. */\r\n public justification: TextBlockJustification;\r\n /** The ordered list of paragraphs within the document. */\r\n public readonly paragraphs: Paragraph[];\r\n\r\n private constructor(props: TextBlockProps) {\r\n super(props);\r\n this.width = props.width ?? 0;\r\n this.justification = props.justification ?? \"left\";\r\n this.paragraphs = props.paragraphs?.map((x) => Paragraph.create(x)) ?? [];\r\n }\r\n\r\n public override toJSON(): TextBlockProps {\r\n return {\r\n ...super.toJSON(),\r\n width: this.width,\r\n justification: this.justification,\r\n paragraphs: this.paragraphs.map((x) => x.toJSON()),\r\n };\r\n }\r\n\r\n /** Create a text block from its JSON representation. */\r\n public static create(props: TextBlockProps): TextBlock {\r\n return new TextBlock(props);\r\n }\r\n\r\n /** Create an empty text block containing no [[paragraphs]] and an empty [[styleName]]. */\r\n public static createEmpty(): TextBlock {\r\n return TextBlock.create({ styleName: \"\" });\r\n }\r\n\r\n /** Returns true if every paragraph in this text block is empty. */\r\n public get isEmpty(): boolean {\r\n return this.paragraphs.every((p) => p.runs.length === 0);\r\n }\r\n\r\n public override clone(): TextBlock {\r\n return new TextBlock(this.toJSON());\r\n }\r\n\r\n /** Apply the specified style to this block and - unless [[ApplyTextStyleOptions.preventPropagation]] is `true` - to all of its [[paragraphs]]. */\r\n public override applyStyle(styleName: string, options?: ApplyTextStyleOptions): void {\r\n super.applyStyle(styleName, options);\r\n if (!(options?.preventPropagation)) {\r\n for (const paragraph of this.paragraphs) {\r\n paragraph.applyStyle(styleName, options);\r\n }\r\n }\r\n }\r\n\r\n /** Compute a string representation of the document's contents by concatenating the string representations of each of its [[paragraphs]], separated by [[TextBlockStringifyOptions.paragraphBreak]]. */\r\n public stringify(options?: TextBlockStringifyOptions): string {\r\n return this.paragraphs.map((x) => x.stringify(options)).join(options?.paragraphBreak ?? \" \");\r\n }\r\n\r\n /** Add and return a new paragraph.\r\n * If [[paragraphs]] is not empty, the style and overrides of the last [[Paragraph]] in the block will be applied to the new paragraph; otherwise,\r\n * the paragraph will inherit this block's style with no overrides.\r\n */\r\n public appendParagraph(): Paragraph {\r\n const seed = this.paragraphs[0];\r\n const paragraph = Paragraph.create({\r\n styleName: seed?.styleName ?? this.styleName,\r\n styleOverrides: seed?.styleOverrides ?? undefined,\r\n });\r\n\r\n this.paragraphs.push(paragraph);\r\n return paragraph;\r\n }\r\n\r\n /** Append a run to the last [[Paragraph]] in this block.\r\n * If the block contains no [[paragraphs]], a new one will first be created using [[appendParagraph]].\r\n */\r\n public appendRun(run: Run): void {\r\n const paragraph = this.paragraphs[this.paragraphs.length - 1] ?? this.appendParagraph();\r\n paragraph.runs.push(run);\r\n }\r\n\r\n public override equals(other: TextBlockComponent): boolean {\r\n if (!(other instanceof TextBlock)) {\r\n return false;\r\n }\r\n\r\n if (this.width !== other.width || this.justification !== other.justification || this.paragraphs.length !== other.paragraphs.length) {\r\n return false;\r\n }\r\n\r\n return this.paragraphs.every((paragraph, index) => paragraph.equals(other.paragraphs[index]));\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"TextBlock.js","sourceRoot":"","sources":["../../../src/annotation/TextBlock.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAsDH;;;;;GAKG;AACH,MAAM,OAAgB,kBAAkB;IAItC,gBAAgB;IAChB,YAAsB,KAA8B;QAClD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC;QAClC,IAAI,CAAC,eAAe,GAAG,EAAE,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;IACrD,CAAC;IAED;;;OAGG;IACH,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,IAAW,SAAS,CAAC,SAAiB;QACpC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACH,IAAW,cAAc;QACvB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED,IAAW,cAAc,CAAC,SAAiC;QACzD,IAAI,CAAC,eAAe,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC;IAC1C,CAAC;IAED,8EAA8E;IACvE,mBAAmB;QACxB,IAAI,CAAC,cAAc,GAAG,EAAG,CAAC;IAC5B,CAAC;IAED,oKAAoK;IAC7J,UAAU,CAAC,SAAiB,EAAE,OAA+B;QAClE,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAE5B,IAAI,CAAC,CAAC,OAAO,EAAE,iBAAiB,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,4GAA4G;IAC5G,IAAW,cAAc;QACvB,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IACrD,CAAC;IAQD,yDAAyD;IAClD,MAAM;QACX,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,cAAc,EAAE,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE;SAC3C,CAAC;IACJ,CAAC;IAED,uDAAuD;IAChD,MAAM,CAAC,KAAyB;QACrC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAClD,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;YAC1E,OAAO,KAAK,CAAC;QACf,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;YAC1B,MAAM,GAAG,GAAG,IAAoC,CAAC;YACjD,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3D,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAiBD;;;;;;GAMG;AACH,MAAM,KAAW,GAAG,CAWnB;AAXD,WAAiB,GAAG;IAClB;;OAEG;IACH,SAAgB,QAAQ,CAAC,KAAe;QACtC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,MAAM,CAAC,CAAC,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC1C,KAAK,UAAU,CAAC,CAAC,OAAO,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAClD,KAAK,WAAW,CAAC,CAAC,OAAO,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IANe,YAAQ,WAMvB,CAAA;AACH,CAAC,EAXgB,GAAG,KAAH,GAAG,QAWnB;AA6BD;;;;GAIG;AACH,MAAM,OAAO,OAAQ,SAAQ,kBAAkB;IAQ7C,YAAoB,KAAiC;QACnD,KAAK,CAAC,KAAK,CAAC,CAAC;QARf,iDAAiD;QACjC,SAAI,GAAG,MAAM,CAAC;QAQ5B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,IAAI,MAAM,CAAC;IACrD,CAAC;IAEe,KAAK;QACnB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACpC,CAAC;IAEe,MAAM;QACpB,OAAO;YACL,GAAG,KAAK,CAAC,MAAM,EAAE;YACjB,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,aAAa,EAAE,IAAI,CAAC,aAAa;SAClC,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,KAAiC;QACpD,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,kCAAkC;IAClB,SAAS;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAEe,MAAM,CAAC,KAAyB;QAC9C,OAAO,KAAK,YAAY,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,aAAa,KAAK,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzI,CAAC;CACF;AAgBD;;;;;GAKG;AACH,MAAM,OAAO,WAAY,SAAQ,kBAAkB;IAQjD,YAAoB,KAAqC;QACvD,KAAK,CAAC,KAAK,CAAC,CAAC;QARf,iDAAiD;QACjC,SAAI,GAAG,UAAU,CAAC;QAQhC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC;QACvC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC;IAC7C,CAAC;IAEe,MAAM;QACpB,OAAO;YACL,GAAG,KAAK,CAAC,MAAM,EAAE;YACjB,IAAI,EAAE,UAAU;YAChB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC;IACJ,CAAC;IAEe,KAAK;QACnB,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACxC,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,KAAqC;QACxD,OAAO,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,gJAAgJ;IAChI,SAAS,CAAC,OAAmC;QAC3D,MAAM,GAAG,GAAG,OAAO,EAAE,iBAAiB,IAAI,GAAG,CAAC;QAC9C,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACtD,CAAC;IAEe,MAAM,CAAC,KAAyB;QAC9C,OAAO,KAAK,YAAY,WAAW,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,WAAW,KAAK,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7I,CAAC;CACF;AAYD;;;;GAIG;AACH,MAAM,OAAO,YAAa,SAAQ,kBAAkB;IAIlD,YAAoB,KAA8B;QAChD,KAAK,CAAC,KAAK,CAAC,CAAC;QAJf,iDAAiD;QACjC,SAAI,GAAG,WAAW,CAAC;IAInC,CAAC;IAEe,MAAM;QACpB,OAAO;YACL,GAAG,KAAK,CAAC,MAAM,EAAE;YACjB,IAAI,EAAE,WAAW;SAClB,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,KAA8B;QACjD,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAEe,KAAK;QACnB,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,8DAA8D;IAC9C,SAAS,CAAC,OAAmC;QAC3D,OAAO,OAAO,EAAE,SAAS,IAAI,GAAG,CAAC;IACnC,CAAC;IAEe,MAAM,CAAC,KAAyB;QAC9C,OAAO,KAAK,YAAY,YAAY,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9D,CAAC;CACF;AAcD;;;;GAIG;AACH,MAAM,OAAO,SAAU,SAAQ,kBAAkB;IAI/C,YAAoB,KAAqB;QACvC,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAChE,CAAC;IAEe,MAAM;QACpB,OAAO;YACL,GAAG,KAAK,CAAC,MAAM,EAAE;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;SAC3C,CAAC;IACJ,CAAC;IAED,uDAAuD;IAChD,MAAM,CAAC,MAAM,CAAC,KAAqB;QACxC,OAAO,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAEe,KAAK;QACnB,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,qJAAqJ;IACrI,UAAU,CAAC,SAAiB,EAAE,OAA+B;QAC3E,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACrC,IAAI,CAAC,CAAC,OAAO,EAAE,kBAAkB,CAAC,EAAE,CAAC;YACnC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC5B,GAAG,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;IACH,CAAC;IAED,4HAA4H;IAC5G,SAAS,CAAC,OAAmC;QAC3D,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7D,CAAC;IAEe,MAAM,CAAC,KAAyB;QAC9C,IAAI,CAAC,CAAC,KAAK,YAAY,SAAS,CAAC,EAAE,CAAC;YAClC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACnE,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxE,CAAC;CACF;AA0BD;;;;;;;GAOG;AACH,MAAM,OAAO,SAAU,SAAQ,kBAAkB;IAW/C,YAAoB,KAAqB;QACvC,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,IAAI,MAAM,CAAC;QACnD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5E,CAAC;IAEe,MAAM;QACpB,OAAO;YACL,GAAG,KAAK,CAAC,MAAM,EAAE;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACnD,CAAC;IACJ,CAAC;IAED,wDAAwD;IACjD,MAAM,CAAC,MAAM,CAAC,KAAqB;QACxC,OAAO,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,0FAA0F;IACnF,MAAM,CAAC,WAAW;QACvB,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,mEAAmE;IACnE,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;IAC3D,CAAC;IAEe,KAAK;QACnB,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,kJAAkJ;IAClI,UAAU,CAAC,SAAiB,EAAE,OAA+B;QAC3E,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACrC,IAAI,CAAC,CAAC,OAAO,EAAE,kBAAkB,CAAC,EAAE,CAAC;YACnC,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACxC,SAAS,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;IACH,CAAC;IAED,uMAAuM;IAChM,SAAS,CAAC,OAAmC;QAClD,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,IAAI,GAAG,CAAC,CAAC;IAC/F,CAAC;IAED;;;OAGG;IACI,eAAe;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC;YACjC,SAAS,EAAE,IAAI,EAAE,SAAS,IAAI,IAAI,CAAC,SAAS;YAC5C,cAAc,EAAE,IAAI,EAAE,cAAc,IAAI,SAAS;SAClD,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACI,SAAS,CAAC,GAAQ;QACvB,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QACxF,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAEe,MAAM,CAAC,KAAyB;QAC9C,IAAI,CAAC,CAAC,KAAK,YAAY,SAAS,CAAC,EAAE,CAAC;YAClC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,aAAa,KAAK,KAAK,CAAC,aAAa,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YACnI,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAChG,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 Annotation\r\n */\r\n\r\nimport { TextStyleSettingsProps } from \"./TextStyle\";\r\n\r\n/** Options supplied to [[TextBlockComponent.applyStyle]] to control how the style is applied to the component and its child components.\r\n * @beta\r\n * @preview\r\n * @extensions\r\n */\r\nexport interface ApplyTextStyleOptions {\r\n /** Controls whether any deviations from the style's settings stored in [[TextBlockComponent.styleOverrides]] are retained.\r\n * By default, all overrides are cleared.\r\n */\r\n preserveOverrides?: boolean;\r\n /** Controls whether the style should be recursively applied to the [[Paragraph]]s belonging to a [[TextBlock]] and the [[Run]]s belonging to a [[Paragraph]].\r\n * By default, the style change propagates to child components.\r\n */\r\n preventPropagation?: boolean;\r\n}\r\n\r\n/** The JSON representation of a [[TextBlockComponent]].\r\n * @beta\r\n * @preview\r\n * @extensions\r\n */\r\nexport interface TextBlockComponentProps {\r\n /** The name of a [[TextStyle]] stored in a [Workspace]($backend) from which the base [[TextStyleSettings]] applied to the component originates. */\r\n styleName: string;\r\n /** Deviations from the base [[TextStyleSettings]] defined by the [[TextStyle]] applied to this component.\r\n * This permits you to, e.g., create a [[TextRun]] using \"Arial\" font and override it to use \"Comic Sans\" instead.\r\n */\r\n styleOverrides?: TextStyleSettingsProps;\r\n}\r\n\r\n/** Options supplied to [[TextBlockComponent.stringify]] to control how the content is formatted.\r\n * @beta\r\n * @preview\r\n * @extensions\r\n */\r\nexport interface TextBlockStringifyOptions {\r\n /** A string to insert in between each [[Paragraph]].\r\n * Default: \" \" - a single space.\r\n */\r\n paragraphBreak?: string;\r\n /** A string to insert for each [[LineBreakRun]].\r\n * Default: \" \" - a single space.\r\n */\r\n lineBreak?: string;\r\n /** A string to insert between the numerator and denominator of each [[FractionRun]].\r\n * Default: \"/\"\r\n */\r\n fractionSeparator?: string;\r\n}\r\n\r\n/** Abstract representation of any of the building blocks that make up a [[TextBlock]] document - namely [[Run]]s, [[Paragraph]]s, and [[TextBlock]] itself.\r\n * Each component can specify a [[TextStyle]] that formats its contents and optional [[styleOverrides]] to customize that formatting.\r\n * @beta\r\n * @preview\r\n * @extensions\r\n */\r\nexport abstract class TextBlockComponent {\r\n private _styleName: string;\r\n private _styleOverrides: TextStyleSettingsProps;\r\n\r\n /** @internal */\r\n protected constructor(props: TextBlockComponentProps) {\r\n this._styleName = props.styleName;\r\n this._styleOverrides = { ...props.styleOverrides };\r\n }\r\n\r\n /** The name of the [[TextStyle]] that provides the base formatting for the contents of this component.\r\n * @note Assigning to this property is equivalent to calling [[applyStyle]] with default [[ApplyTextStyleOptions]], which propagates the style change to all of\r\n * the components sub-components and clears any [[styleOverrides]].\r\n */\r\n public get styleName(): string {\r\n return this._styleName;\r\n }\r\n\r\n public set styleName(styleName: string) {\r\n this.applyStyle(styleName);\r\n }\r\n\r\n /** Deviations in individual properties of the [[TextStyle]] specified by [[styleName]].\r\n * For example, if the style uses the \"Arial\" font, you can override that by settings `styleOverrides.fontName` to \"Comic Sans\".\r\n * @see [[clearStyleOverrides]] to reset this to an empty object.\r\n */\r\n public get styleOverrides(): TextStyleSettingsProps {\r\n return this._styleOverrides;\r\n }\r\n\r\n public set styleOverrides(overrides: TextStyleSettingsProps) {\r\n this._styleOverrides = { ...overrides };\r\n }\r\n\r\n /** Reset any [[styleOverrides]] applied to this component's [[TextStyle]]. */\r\n public clearStyleOverrides(): void {\r\n this.styleOverrides = { };\r\n }\r\n\r\n /** Apply the [[TextStyle]] specified by `styleName` to this component, optionally preserving [[styleOverrides]] and/or preventing propagation to sub-components. */\r\n public applyStyle(styleName: string, options?: ApplyTextStyleOptions): void {\r\n this._styleName = styleName;\r\n\r\n if (!(options?.preserveOverrides)) {\r\n this.clearStyleOverrides();\r\n }\r\n }\r\n\r\n /** Returns true if [[styleOverrides]] specifies any deviations from this component's base [[TextStyle]]. */\r\n public get overridesStyle(): boolean {\r\n return Object.keys(this.styleOverrides).length > 0;\r\n }\r\n\r\n /** Create a deep copy of this component. */\r\n public abstract clone(): TextBlockComponent;\r\n\r\n /** Compute a string representation of the contents of this component and all of its sub-components. */\r\n public abstract stringify(options?: TextBlockStringifyOptions): string;\r\n\r\n /** Convert this component to its JSON representation. */\r\n public toJSON(): TextBlockComponentProps {\r\n return {\r\n styleName: this.styleName,\r\n styleOverrides: { ...this.styleOverrides },\r\n };\r\n }\r\n\r\n /** Returns true if `this` is equivalent to `other`. */\r\n public equals(other: TextBlockComponent): boolean {\r\n const myKeys = Object.keys(this.styleOverrides);\r\n const yrKeys = Object.keys(other._styleOverrides);\r\n if (this.styleName !== other.styleName || myKeys.length !== yrKeys.length) {\r\n return false;\r\n }\r\n\r\n for (const name of myKeys) {\r\n const key = name as keyof TextStyleSettingsProps;\r\n if (this.styleOverrides[key] !== other.styleOverrides[key]) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n}\r\n\r\n/**\r\n * @beta\r\n * @preview\r\n * @extensions\r\n */\r\nexport type Run = TextRun | FractionRun | LineBreakRun;\r\n\r\n/** The JSON representation of a [[Run]].\r\n * Use the `type` field to discriminate between the different kinds of runs.\r\n * @beta\r\n * @preview\r\n * @extensions\r\n */\r\nexport type RunProps = TextRunProps | FractionRunProps | LineBreakRunProps;\r\n\r\n/** A sequence of characters within a [[Paragraph]] that share a single style. Runs are the leaf nodes of a [[TextBlock]] document. When laid out for display, a single run may span\r\n * multiple lines, but it will never contain different styling.\r\n * Use the `type` field to discriminate between the different kinds of runs.\r\n * @beta\r\n * @preview\r\n * @extensions\r\n */\r\nexport namespace Run { // eslint-disable-line @typescript-eslint/no-redeclare\r\n /** Create a run from its JSON representation.\r\n * @see [[TextRun.create]], [[FractionRun.create]], and [[LineBreakRun.create]] to create a run directly.\r\n */\r\n export function fromJSON(props: RunProps): Run {\r\n switch (props.type) {\r\n case \"text\": return TextRun.create(props);\r\n case \"fraction\": return FractionRun.create(props);\r\n case \"linebreak\": return LineBreakRun.create(props);\r\n }\r\n }\r\n}\r\n\r\n/** Describes whether the characters of a [[TextRun]] should be displayed normally, in subscript, or in superscript.\r\n * [[TextStyleSettings.superScriptScale]], [[TextStyleSettings.subScriptScale]], [[TextStyleSettings.superScriptOffsetFactor]], and [[TextStyleSettings.subScriptOffsetFactor]]\r\n * affect how the content is rendered.\r\n * @beta\r\n * @preview\r\n * @extensions\r\n */\r\nexport type BaselineShift = \"subscript\" | \"superscript\" | \"none\";\r\n\r\n/** JSON representation of a [[TextRun]].\r\n * @beta\r\n * @preview\r\n * @extensions\r\n */\r\nexport interface TextRunProps extends TextBlockComponentProps {\r\n /** Discriminator field for the [[RunProps]] union. */\r\n readonly type: \"text\";\r\n /** The characters displayed by the run.\r\n * Default: an empty string.\r\n */\r\n content?: string;\r\n /** Whether to display [[content]] as a subscript, superscript, or normally.\r\n * Default: \"none\"\r\n */\r\n baselineShift?: BaselineShift;\r\n}\r\n\r\n/** The most common type of [[Run]], containing a sequence of characters to be displayed using a single style.\r\n * @beta\r\n * @preview\r\n * @extensions\r\n */\r\nexport class TextRun extends TextBlockComponent {\r\n /** Discriminator field for the [[Run]] union. */\r\n public readonly type = \"text\";\r\n /** The sequence of characters to be displayed by the run. */\r\n public content: string;\r\n /** Whether to display [[content]] as a subscript, superscript, or normally. */\r\n public baselineShift: BaselineShift;\r\n\r\n private constructor(props: Omit<TextRunProps, \"type\">) {\r\n super(props);\r\n this.content = props.content ?? \"\";\r\n this.baselineShift = props.baselineShift ?? \"none\";\r\n }\r\n\r\n public override clone(): TextRun {\r\n return new TextRun(this.toJSON());\r\n }\r\n\r\n public override toJSON(): TextRunProps {\r\n return {\r\n ...super.toJSON(),\r\n type: \"text\",\r\n content: this.content,\r\n baselineShift: this.baselineShift,\r\n };\r\n }\r\n\r\n public static create(props: Omit<TextRunProps, \"type\">): TextRun {\r\n return new TextRun(props);\r\n }\r\n\r\n /** Simply returns [[content]]. */\r\n public override stringify(): string {\r\n return this.content;\r\n }\r\n\r\n public override equals(other: TextBlockComponent): boolean {\r\n return other instanceof TextRun && this.content === other.content && this.baselineShift === other.baselineShift && super.equals(other);\r\n }\r\n}\r\n\r\n/** JSON representation of a [[FractionRun]].\r\n * @beta\r\n * @preview\r\n * @extensions\r\n */\r\nexport interface FractionRunProps extends TextBlockComponentProps {\r\n /** Discriminator field for the [[RunProps]] union. */\r\n readonly type: \"fraction\";\r\n /** The text displayed before or above the fraction separator, depending on [[TextStyle.stackedFractionType]]. Default: an empty string. */\r\n numerator?: string;\r\n /** The text displayed after or below the fraction separator, depending on [[TextStyle.stackedFractionType]]. Default: an empty string. */\r\n denominator?: string;\r\n}\r\n\r\n/** A [[Run]] containing a numeric ratio to be displayed as a numerator and denominator separated by a horizontal or diagonal bar.\r\n * @note The [[numerator]] and [[denominator]] are stored as strings. They are not technically required to contain a numeric representation.\r\n * @beta\r\n * @preview\r\n * @extensions\r\n */\r\nexport class FractionRun extends TextBlockComponent {\r\n /** Discriminator field for the [[Run]] union. */\r\n public readonly type = \"fraction\";\r\n /** The fraction's numerator. */\r\n public numerator: string;\r\n /** The fraction's denominator. */\r\n public denominator: string;\r\n\r\n private constructor(props: Omit<FractionRunProps, \"type\">) {\r\n super(props);\r\n this.numerator = props.numerator ?? \"\";\r\n this.denominator = props.denominator ?? \"\";\r\n }\r\n\r\n public override toJSON(): FractionRunProps {\r\n return {\r\n ...super.toJSON(),\r\n type: \"fraction\",\r\n numerator: this.numerator,\r\n denominator: this.denominator,\r\n };\r\n }\r\n\r\n public override clone(): FractionRun {\r\n return new FractionRun(this.toJSON());\r\n }\r\n\r\n public static create(props: Omit<FractionRunProps, \"type\">): FractionRun {\r\n return new FractionRun(props);\r\n }\r\n\r\n /** Formats the fraction as a string with the [[numerator]] and [[denominator]] separated by [[TextBlockStringifyOptions.fractionSeparator]]. */\r\n public override stringify(options?: TextBlockStringifyOptions): string {\r\n const sep = options?.fractionSeparator ?? \"/\";\r\n return `${this.numerator}${sep}${this.denominator}`;\r\n }\r\n\r\n public override equals(other: TextBlockComponent): boolean {\r\n return other instanceof FractionRun && this.numerator === other.numerator && this.denominator === other.denominator && super.equals(other);\r\n }\r\n}\r\n\r\n/** JSON representation of a [[LineBreakRun]].\r\n * @beta\r\n * @preview\r\n * @extensions\r\n */\r\nexport interface LineBreakRunProps extends TextBlockComponentProps {\r\n /** Discriminator field for the [[RunProps]] union. */\r\n readonly type: \"linebreak\";\r\n}\r\n\r\n/** A [[Run]] that represents the end of a line of text within a [[Paragraph]]. It contains no content of its own - it simply causes subsequent content to display on a new line.\r\n * @beta\r\n * @preview\r\n * @extensions\r\n */\r\nexport class LineBreakRun extends TextBlockComponent {\r\n /** Discriminator field for the [[Run]] union. */\r\n public readonly type = \"linebreak\";\r\n\r\n private constructor(props: TextBlockComponentProps) {\r\n super(props);\r\n }\r\n\r\n public override toJSON(): LineBreakRunProps {\r\n return {\r\n ...super.toJSON(),\r\n type: \"linebreak\",\r\n };\r\n }\r\n\r\n public static create(props: TextBlockComponentProps) {\r\n return new LineBreakRun(props);\r\n }\r\n\r\n public override clone(): LineBreakRun {\r\n return new LineBreakRun(this.toJSON());\r\n }\r\n\r\n /** Simply returns [[TextBlockStringifyOptions.lineBreak]]. */\r\n public override stringify(options?: TextBlockStringifyOptions): string {\r\n return options?.lineBreak ?? \" \";\r\n }\r\n\r\n public override equals(other: TextBlockComponent): boolean {\r\n return other instanceof LineBreakRun && super.equals(other);\r\n }\r\n}\r\n\r\n/** JSON representation of a [[Paragraph]].\r\n * @beta\r\n * @preview\r\n * @extensions\r\n */\r\nexport interface ParagraphProps extends TextBlockComponentProps {\r\n /** The collection of [[Run]]s within the paragraph.\r\n * Default: an empty array.\r\n */\r\n runs?: RunProps[];\r\n}\r\n\r\n/** A collection of [[Run]]s within a [[TextBlock]]. Each paragraph within a text block is laid out on a separate line.\r\n * @beta\r\n * @preview\r\n * @extensions\r\n */\r\nexport class Paragraph extends TextBlockComponent {\r\n /** The runs within the paragraph. You can modify the contents of this array to change the content of the paragraph. */\r\n public readonly runs: Run[];\r\n\r\n private constructor(props: ParagraphProps) {\r\n super(props);\r\n this.runs = props.runs?.map((run) => Run.fromJSON(run)) ?? [];\r\n }\r\n\r\n public override toJSON(): ParagraphProps {\r\n return {\r\n ...super.toJSON(),\r\n runs: this.runs.map((run) => run.toJSON()),\r\n };\r\n }\r\n\r\n /** Create a paragraph from its JSON representation. */\r\n public static create(props: ParagraphProps): Paragraph {\r\n return new Paragraph(props);\r\n }\r\n\r\n public override clone(): Paragraph {\r\n return new Paragraph(this.toJSON());\r\n }\r\n\r\n /** Apply the specified style to this [[Paragraph]], and - unless [[ApplyTextStyleOptions.preventPropagation]] is `true` - to all of its [[runs]]. */\r\n public override applyStyle(styleName: string, options?: ApplyTextStyleOptions): void {\r\n super.applyStyle(styleName, options);\r\n if (!(options?.preventPropagation)) {\r\n for (const run of this.runs) {\r\n run.applyStyle(styleName, options);\r\n }\r\n }\r\n }\r\n\r\n /** Compute a string representation of this paragraph by concatenating the string representations of all of its [[runs]]. */\r\n public override stringify(options?: TextBlockStringifyOptions): string {\r\n return this.runs.map((x) => x.stringify(options)).join(\"\");\r\n }\r\n\r\n public override equals(other: TextBlockComponent): boolean {\r\n if (!(other instanceof Paragraph)) {\r\n return false;\r\n }\r\n\r\n if (this.runs.length !== other.runs.length || !super.equals(other)) {\r\n return false;\r\n }\r\n\r\n return this.runs.every((run, index) => run.equals(other.runs[index]));\r\n }\r\n}\r\n\r\n/** Describes the relative alignment of the content of a [[TextBlock]].\r\n * @beta\r\n * @preview\r\n * @extensions\r\n */\r\nexport type TextBlockJustification = \"left\" | \"center\" | \"right\";\r\n\r\n/** JSON representation of a [[TextBlock]].\r\n * @beta\r\n * @preview\r\n * @extensions\r\n */\r\nexport interface TextBlockProps extends TextBlockComponentProps {\r\n /** The width of the document in meters. Lines that would exceed this width are instead wrapped around to the next line.\r\n * A value less than or equal to zero indicates no wrapping is to be applied.\r\n * Default: 0\r\n */\r\n width?: number;\r\n /** The alignment of the document content. Default: \"left\". */\r\n justification?: TextBlockJustification;\r\n /** The paragraphs within the text block. Default: an empty array. */\r\n paragraphs?: ParagraphProps[];\r\n}\r\n\r\n/** Represents a formatted text document consisting of a series of [[Paragraph]]s, each laid out on a separate line and containing their own content in the form of [[Run]]s.\r\n * You can change the content of the document by directly modifying the contents of its [[paragraphs]], or via [[appendParagraph]] and [[appendRun]].\r\n * No word-wrapping is applied to the document unless a [[width]] greater than zero is specified.\r\n * @see [[TextAnnotation]] to position a text block as an annotation in 2d or 3d space.\r\n * @beta\r\n * @preview\r\n * @extensions\r\n */\r\nexport class TextBlock extends TextBlockComponent {\r\n /** The width of the document in meters. Lines that would exceed this width are instead wrapped around to the next line.\r\n * A value less than or equal to zero indicates no wrapping is to be applied.\r\n * Default: 0\r\n */\r\n public width: number;\r\n /** The alignment of the document's content. */\r\n public justification: TextBlockJustification;\r\n /** The ordered list of paragraphs within the document. */\r\n public readonly paragraphs: Paragraph[];\r\n\r\n private constructor(props: TextBlockProps) {\r\n super(props);\r\n this.width = props.width ?? 0;\r\n this.justification = props.justification ?? \"left\";\r\n this.paragraphs = props.paragraphs?.map((x) => Paragraph.create(x)) ?? [];\r\n }\r\n\r\n public override toJSON(): TextBlockProps {\r\n return {\r\n ...super.toJSON(),\r\n width: this.width,\r\n justification: this.justification,\r\n paragraphs: this.paragraphs.map((x) => x.toJSON()),\r\n };\r\n }\r\n\r\n /** Create a text block from its JSON representation. */\r\n public static create(props: TextBlockProps): TextBlock {\r\n return new TextBlock(props);\r\n }\r\n\r\n /** Create an empty text block containing no [[paragraphs]] and an empty [[styleName]]. */\r\n public static createEmpty(): TextBlock {\r\n return TextBlock.create({ styleName: \"\" });\r\n }\r\n\r\n /** Returns true if every paragraph in this text block is empty. */\r\n public get isEmpty(): boolean {\r\n return this.paragraphs.every((p) => p.runs.length === 0);\r\n }\r\n\r\n public override clone(): TextBlock {\r\n return new TextBlock(this.toJSON());\r\n }\r\n\r\n /** Apply the specified style to this block and - unless [[ApplyTextStyleOptions.preventPropagation]] is `true` - to all of its [[paragraphs]]. */\r\n public override applyStyle(styleName: string, options?: ApplyTextStyleOptions): void {\r\n super.applyStyle(styleName, options);\r\n if (!(options?.preventPropagation)) {\r\n for (const paragraph of this.paragraphs) {\r\n paragraph.applyStyle(styleName, options);\r\n }\r\n }\r\n }\r\n\r\n /** Compute a string representation of the document's contents by concatenating the string representations of each of its [[paragraphs]], separated by [[TextBlockStringifyOptions.paragraphBreak]]. */\r\n public stringify(options?: TextBlockStringifyOptions): string {\r\n return this.paragraphs.map((x) => x.stringify(options)).join(options?.paragraphBreak ?? \" \");\r\n }\r\n\r\n /** Add and return a new paragraph.\r\n * If [[paragraphs]] is not empty, the style and overrides of the last [[Paragraph]] in the block will be applied to the new paragraph; otherwise,\r\n * the paragraph will inherit this block's style with no overrides.\r\n */\r\n public appendParagraph(): Paragraph {\r\n const seed = this.paragraphs[0];\r\n const paragraph = Paragraph.create({\r\n styleName: seed?.styleName ?? this.styleName,\r\n styleOverrides: seed?.styleOverrides ?? undefined,\r\n });\r\n\r\n this.paragraphs.push(paragraph);\r\n return paragraph;\r\n }\r\n\r\n /** Append a run to the last [[Paragraph]] in this block.\r\n * If the block contains no [[paragraphs]], a new one will first be created using [[appendParagraph]].\r\n */\r\n public appendRun(run: Run): void {\r\n const paragraph = this.paragraphs[this.paragraphs.length - 1] ?? this.appendParagraph();\r\n paragraph.runs.push(run);\r\n }\r\n\r\n public override equals(other: TextBlockComponent): boolean {\r\n if (!(other instanceof TextBlock)) {\r\n return false;\r\n }\r\n\r\n if (this.width !== other.width || this.justification !== other.justification || this.paragraphs.length !== other.paragraphs.length) {\r\n return false;\r\n }\r\n\r\n return this.paragraphs.every((paragraph, index) => paragraph.equals(other.paragraphs[index]));\r\n }\r\n}\r\n"]}
@@ -13,7 +13,7 @@
13
13
  * @preview
14
14
  * @extensions
15
15
  */
16
- class TextStyleSettings {
16
+ export class TextStyleSettings {
17
17
  constructor(props, defaults) {
18
18
  if (!defaults) {
19
19
  defaults = TextStyleSettings.defaultProps;
@@ -72,7 +72,6 @@ TextStyleSettings.defaultProps = {
72
72
  };
73
73
  /** Settings initialized to all default values. */
74
74
  TextStyleSettings.defaults = new TextStyleSettings({});
75
- export { TextStyleSettings };
76
75
  Object.freeze(TextStyleSettings.defaultProps);
77
76
  Object.freeze(TextStyleSettings.defaults);
78
77
  /** A named, immutable [[TextStyleSettings]] stored in a [Workspace]($backend).