@itwin/core-common 5.2.0-dev.30 → 5.2.0-dev.32

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 (389) hide show
  1. package/lib/cjs/AmbientOcclusion.js.map +1 -1
  2. package/lib/cjs/AnalysisStyle.js.map +1 -1
  3. package/lib/cjs/Atmosphere.js.map +1 -1
  4. package/lib/cjs/AuthorizationClient.js.map +1 -1
  5. package/lib/cjs/BackgroundMapProvider.js.map +1 -1
  6. package/lib/cjs/BackgroundMapSettings.js.map +1 -1
  7. package/lib/cjs/Base64EncodedString.js.map +1 -1
  8. package/lib/cjs/BlobReader.js.map +1 -1
  9. package/lib/cjs/BriefcaseTypes.d.ts +2 -0
  10. package/lib/cjs/BriefcaseTypes.d.ts.map +1 -1
  11. package/lib/cjs/BriefcaseTypes.js.map +1 -1
  12. package/lib/cjs/Camera.js.map +1 -1
  13. package/lib/cjs/CatalogIModel.js.map +1 -1
  14. package/lib/cjs/CesiumIonAssets.js.map +1 -1
  15. package/lib/cjs/ChangedElements.js.map +1 -1
  16. package/lib/cjs/ChangedEntities.js.map +1 -1
  17. package/lib/cjs/ChangesetProps.js.map +1 -1
  18. package/lib/cjs/ClipStyle.js.map +1 -1
  19. package/lib/cjs/Code.js.map +1 -1
  20. package/lib/cjs/ColorByName.js.map +1 -1
  21. package/lib/cjs/ColorDef.js.map +1 -1
  22. package/lib/cjs/CommonLoggerCategory.js.map +1 -1
  23. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  24. package/lib/cjs/ContextRealityModel.js.map +1 -1
  25. package/lib/cjs/ContourDisplay.js.map +1 -1
  26. package/lib/cjs/DisplayStyleSettings.js.map +1 -1
  27. package/lib/cjs/ECSchemaProps.js.map +1 -1
  28. package/lib/cjs/ECSqlReader.js.map +1 -1
  29. package/lib/cjs/ECSqlTypes.js.map +1 -1
  30. package/lib/cjs/ElementMesh.js.map +1 -1
  31. package/lib/cjs/ElementProps.js.map +1 -1
  32. package/lib/cjs/EmphasizeElementsProps.js.map +1 -1
  33. package/lib/cjs/EntityProps.js.map +1 -1
  34. package/lib/cjs/EntityReference.js.map +1 -1
  35. package/lib/cjs/Environment.js.map +1 -1
  36. package/lib/cjs/FeatureIndex.js.map +1 -1
  37. package/lib/cjs/FeatureSymbology.js.map +1 -1
  38. package/lib/cjs/FeatureTable.js.map +1 -1
  39. package/lib/cjs/Fonts.js.map +1 -1
  40. package/lib/cjs/Frustum.js.map +1 -1
  41. package/lib/cjs/GenericInstanceFilter.js.map +1 -1
  42. package/lib/cjs/GeoCoordinateServices.js.map +1 -1
  43. package/lib/cjs/GeometryContainment.js.map +1 -1
  44. package/lib/cjs/GeometryParams.js.map +1 -1
  45. package/lib/cjs/GeometrySummary.js.map +1 -1
  46. package/lib/cjs/Gradient.js.map +1 -1
  47. package/lib/cjs/GraphicParams.js.map +1 -1
  48. package/lib/cjs/GroundPlane.js.map +1 -1
  49. package/lib/cjs/HSLColor.js.map +1 -1
  50. package/lib/cjs/HSVColor.js.map +1 -1
  51. package/lib/cjs/HiddenLine.js.map +1 -1
  52. package/lib/cjs/Hilite.js.map +1 -1
  53. package/lib/cjs/IModel.js.map +1 -1
  54. package/lib/cjs/IModelError.js.map +1 -1
  55. package/lib/cjs/IModelVersion.js.map +1 -1
  56. package/lib/cjs/ITwinCoreErrors.js.map +1 -1
  57. package/lib/cjs/Image.js.map +1 -1
  58. package/lib/cjs/IpcAppProps.js.map +1 -1
  59. package/lib/cjs/LightSettings.js.map +1 -1
  60. package/lib/cjs/LinePixels.js.map +1 -1
  61. package/lib/cjs/Localization.js.map +1 -1
  62. package/lib/cjs/MapImagerySettings.js.map +1 -1
  63. package/lib/cjs/MapLayerSettings.js.map +1 -1
  64. package/lib/cjs/MassProperties.js.map +1 -1
  65. package/lib/cjs/MaterialProps.js.map +1 -1
  66. package/lib/cjs/ModelClipGroup.js.map +1 -1
  67. package/lib/cjs/ModelGeometryChanges.js.map +1 -1
  68. package/lib/cjs/ModelProps.js.map +1 -1
  69. package/lib/cjs/NativeAppProps.js.map +1 -1
  70. package/lib/cjs/OctEncodedNormal.js.map +1 -1
  71. package/lib/cjs/PlanProjectionSettings.js.map +1 -1
  72. package/lib/cjs/PlanarClipMask.js.map +1 -1
  73. package/lib/cjs/QPoint.js.map +1 -1
  74. package/lib/cjs/RealityDataAccessProps.js.map +1 -1
  75. package/lib/cjs/RealityModelDisplaySettings.js.map +1 -1
  76. package/lib/cjs/RenderMaterial.js.map +1 -1
  77. package/lib/cjs/RenderPolyline.js.map +1 -1
  78. package/lib/cjs/RenderTexture.js.map +1 -1
  79. package/lib/cjs/RgbColor.js.map +1 -1
  80. package/lib/cjs/RpcInterface.js.map +1 -1
  81. package/lib/cjs/RpcManager.js.map +1 -1
  82. package/lib/cjs/SessionProps.js.map +1 -1
  83. package/lib/cjs/SkyBox.js.map +1 -1
  84. package/lib/cjs/SolarCalculate.js.map +1 -1
  85. package/lib/cjs/SolarShadows.js.map +1 -1
  86. package/lib/cjs/SpatialClassification.js.map +1 -1
  87. package/lib/cjs/SubCategoryAppearance.js.map +1 -1
  88. package/lib/cjs/SubCategoryOverride.js.map +1 -1
  89. package/lib/cjs/TerrainSettings.js.map +1 -1
  90. package/lib/cjs/TextureMapping.js.map +1 -1
  91. package/lib/cjs/TextureProps.js.map +1 -1
  92. package/lib/cjs/ThematicDisplay.js.map +1 -1
  93. package/lib/cjs/Thumbnail.js.map +1 -1
  94. package/lib/cjs/TileProps.js.map +1 -1
  95. package/lib/cjs/Tween.js.map +1 -1
  96. package/lib/cjs/TxnAction.js.map +1 -1
  97. package/lib/cjs/ViewDetails.js.map +1 -1
  98. package/lib/cjs/ViewFlags.js.map +1 -1
  99. package/lib/cjs/ViewProps.js.map +1 -1
  100. package/lib/cjs/WhiteOnWhiteReversalSettings.js.map +1 -1
  101. package/lib/cjs/annotation/TextAnnotation.js.map +1 -1
  102. package/lib/cjs/annotation/TextBlock.d.ts +113 -94
  103. package/lib/cjs/annotation/TextBlock.d.ts.map +1 -1
  104. package/lib/cjs/annotation/TextBlock.js +227 -94
  105. package/lib/cjs/annotation/TextBlock.js.map +1 -1
  106. package/lib/cjs/annotation/TextBlockGeometryProps.js.map +1 -1
  107. package/lib/cjs/annotation/TextBlockLayoutResult.d.ts +3 -5
  108. package/lib/cjs/annotation/TextBlockLayoutResult.d.ts.map +1 -1
  109. package/lib/cjs/annotation/TextBlockLayoutResult.js.map +1 -1
  110. package/lib/cjs/annotation/TextField.d.ts +86 -0
  111. package/lib/cjs/annotation/TextField.d.ts.map +1 -0
  112. package/lib/cjs/annotation/TextField.js +10 -0
  113. package/lib/cjs/annotation/TextField.js.map +1 -0
  114. package/lib/cjs/annotation/TextStyle.d.ts +63 -1
  115. package/lib/cjs/annotation/TextStyle.d.ts.map +1 -1
  116. package/lib/cjs/annotation/TextStyle.js +44 -4
  117. package/lib/cjs/annotation/TextStyle.js.map +1 -1
  118. package/lib/cjs/core-common.d.ts +1 -0
  119. package/lib/cjs/core-common.d.ts.map +1 -1
  120. package/lib/cjs/core-common.js +1 -0
  121. package/lib/cjs/core-common.js.map +1 -1
  122. package/lib/cjs/domains/FunctionalElementProps.js.map +1 -1
  123. package/lib/cjs/domains/GenericElementProps.js.map +1 -1
  124. package/lib/cjs/geometry/AdditionalTransform.js.map +1 -1
  125. package/lib/cjs/geometry/AreaPattern.js.map +1 -1
  126. package/lib/cjs/geometry/BoundingSphere.js.map +1 -1
  127. package/lib/cjs/geometry/Cartographic.js.map +1 -1
  128. package/lib/cjs/geometry/CoordinateReferenceSystem.js.map +1 -1
  129. package/lib/cjs/geometry/ElementGeometry.js.map +1 -1
  130. package/lib/cjs/geometry/ElementGeometryFB.js.map +1 -1
  131. package/lib/cjs/geometry/FrustumPlanes.js.map +1 -1
  132. package/lib/cjs/geometry/GeodeticDatum.js.map +1 -1
  133. package/lib/cjs/geometry/GeodeticEllipsoid.js.map +1 -1
  134. package/lib/cjs/geometry/GeometryStream.js.map +1 -1
  135. package/lib/cjs/geometry/ImageGraphic.js.map +1 -1
  136. package/lib/cjs/geometry/LineStyle.js.map +1 -1
  137. package/lib/cjs/geometry/Placement.js.map +1 -1
  138. package/lib/cjs/geometry/Projection.js.map +1 -1
  139. package/lib/cjs/geometry/TextString.js.map +1 -1
  140. package/lib/cjs/internal/BackendTypes.js.map +1 -1
  141. package/lib/cjs/internal/PackedFeatureTable.js.map +1 -1
  142. package/lib/cjs/internal/RenderMaterialParams.js.map +1 -1
  143. package/lib/cjs/internal/RenderMesh.js.map +1 -1
  144. package/lib/cjs/internal/RenderTextureParams.js.map +1 -1
  145. package/lib/cjs/internal/Snapping.js.map +1 -1
  146. package/lib/cjs/internal/annotations/FieldFormatter.d.ts +18 -0
  147. package/lib/cjs/internal/annotations/FieldFormatter.d.ts.map +1 -0
  148. package/lib/cjs/internal/annotations/FieldFormatter.js +66 -0
  149. package/lib/cjs/internal/annotations/FieldFormatter.js.map +1 -0
  150. package/lib/cjs/internal/cross-package.d.ts +1 -0
  151. package/lib/cjs/internal/cross-package.d.ts.map +1 -1
  152. package/lib/cjs/internal/cross-package.js +4 -1
  153. package/lib/cjs/internal/cross-package.js.map +1 -1
  154. package/lib/cjs/ipc/IpcSession.js.map +1 -1
  155. package/lib/cjs/ipc/IpcSocket.js.map +1 -1
  156. package/lib/cjs/ipc/IpcWebSocket.js.map +1 -1
  157. package/lib/cjs/ipc/IpcWebSocketTransport.js.map +1 -1
  158. package/lib/cjs/rpc/DevToolsRpcInterface.js.map +1 -1
  159. package/lib/cjs/rpc/IModelReadRpcInterface.js.map +1 -1
  160. package/lib/cjs/rpc/IModelTileRpcInterface.js.map +1 -1
  161. package/lib/cjs/rpc/SnapshotIModelRpcInterface.js.map +1 -1
  162. package/lib/cjs/rpc/TestRpcManager.js.map +1 -1
  163. package/lib/cjs/rpc/core/RpcConfiguration.js.map +1 -1
  164. package/lib/cjs/rpc/core/RpcConstants.js.map +1 -1
  165. package/lib/cjs/rpc/core/RpcControl.js.map +1 -1
  166. package/lib/cjs/rpc/core/RpcInvocation.js.map +1 -1
  167. package/lib/cjs/rpc/core/RpcMarshaling.js.map +1 -1
  168. package/lib/cjs/rpc/core/RpcOperation.js.map +1 -1
  169. package/lib/cjs/rpc/core/RpcPendingQueue.js.map +1 -1
  170. package/lib/cjs/rpc/core/RpcProtocol.js.map +1 -1
  171. package/lib/cjs/rpc/core/RpcPush.js.map +1 -1
  172. package/lib/cjs/rpc/core/RpcRegistry.js.map +1 -1
  173. package/lib/cjs/rpc/core/RpcRequest.js.map +1 -1
  174. package/lib/cjs/rpc/core/RpcRequestContext.js.map +1 -1
  175. package/lib/cjs/rpc/core/RpcRoutingToken.js.map +1 -1
  176. package/lib/cjs/rpc/core/RpcSessionInvocation.js.map +1 -1
  177. package/lib/cjs/rpc/web/BentleyCloudRpcManager.js.map +1 -1
  178. package/lib/cjs/rpc/web/BentleyCloudRpcProtocol.js.map +1 -1
  179. package/lib/cjs/rpc/web/OpenAPI.js.map +1 -1
  180. package/lib/cjs/rpc/web/RpcMultipart.js.map +1 -1
  181. package/lib/cjs/rpc/web/WebAppRpcLogging.js.map +1 -1
  182. package/lib/cjs/rpc/web/WebAppRpcProtocol.js.map +1 -1
  183. package/lib/cjs/rpc/web/WebAppRpcRequest.js.map +1 -1
  184. package/lib/cjs/rpc/web/multipart/RpcMultipartParser.js.map +1 -1
  185. package/lib/cjs/tile/B3dmTileIO.js.map +1 -1
  186. package/lib/cjs/tile/CompositeTileIO.js.map +1 -1
  187. package/lib/cjs/tile/ElementGraphics.js.map +1 -1
  188. package/lib/cjs/tile/GltfTileIO.js.map +1 -1
  189. package/lib/cjs/tile/I3dmTileIO.js.map +1 -1
  190. package/lib/cjs/tile/IModelTileIO.js.map +1 -1
  191. package/lib/cjs/tile/PntsTileIO.js.map +1 -1
  192. package/lib/cjs/tile/TileIO.js.map +1 -1
  193. package/lib/cjs/tile/TileMetadata.js.map +1 -1
  194. package/lib/cjs/tile/Tileset3dSchema.js.map +1 -1
  195. package/lib/esm/AmbientOcclusion.js.map +1 -1
  196. package/lib/esm/AnalysisStyle.js.map +1 -1
  197. package/lib/esm/Atmosphere.js.map +1 -1
  198. package/lib/esm/AuthorizationClient.js.map +1 -1
  199. package/lib/esm/BackgroundMapProvider.js.map +1 -1
  200. package/lib/esm/BackgroundMapSettings.js.map +1 -1
  201. package/lib/esm/Base64EncodedString.js.map +1 -1
  202. package/lib/esm/BlobReader.js.map +1 -1
  203. package/lib/esm/BriefcaseTypes.d.ts +2 -0
  204. package/lib/esm/BriefcaseTypes.d.ts.map +1 -1
  205. package/lib/esm/BriefcaseTypes.js.map +1 -1
  206. package/lib/esm/Camera.js.map +1 -1
  207. package/lib/esm/CatalogIModel.js.map +1 -1
  208. package/lib/esm/CesiumIonAssets.js.map +1 -1
  209. package/lib/esm/ChangedElements.js.map +1 -1
  210. package/lib/esm/ChangedEntities.js.map +1 -1
  211. package/lib/esm/ChangesetProps.js.map +1 -1
  212. package/lib/esm/ClipStyle.js.map +1 -1
  213. package/lib/esm/Code.js.map +1 -1
  214. package/lib/esm/ColorByName.js.map +1 -1
  215. package/lib/esm/ColorDef.js.map +1 -1
  216. package/lib/esm/CommonLoggerCategory.js.map +1 -1
  217. package/lib/esm/ConcurrentQuery.js.map +1 -1
  218. package/lib/esm/ContextRealityModel.js.map +1 -1
  219. package/lib/esm/ContourDisplay.js.map +1 -1
  220. package/lib/esm/DisplayStyleSettings.js.map +1 -1
  221. package/lib/esm/ECSchemaProps.js.map +1 -1
  222. package/lib/esm/ECSqlReader.js.map +1 -1
  223. package/lib/esm/ECSqlTypes.js.map +1 -1
  224. package/lib/esm/ElementMesh.js.map +1 -1
  225. package/lib/esm/ElementProps.js.map +1 -1
  226. package/lib/esm/EmphasizeElementsProps.js.map +1 -1
  227. package/lib/esm/EntityProps.js.map +1 -1
  228. package/lib/esm/EntityReference.js.map +1 -1
  229. package/lib/esm/Environment.js.map +1 -1
  230. package/lib/esm/FeatureIndex.js.map +1 -1
  231. package/lib/esm/FeatureSymbology.js.map +1 -1
  232. package/lib/esm/FeatureTable.js.map +1 -1
  233. package/lib/esm/Fonts.js.map +1 -1
  234. package/lib/esm/Frustum.js.map +1 -1
  235. package/lib/esm/GenericInstanceFilter.js.map +1 -1
  236. package/lib/esm/GeoCoordinateServices.js.map +1 -1
  237. package/lib/esm/GeometryContainment.js.map +1 -1
  238. package/lib/esm/GeometryParams.js.map +1 -1
  239. package/lib/esm/GeometrySummary.js.map +1 -1
  240. package/lib/esm/Gradient.js.map +1 -1
  241. package/lib/esm/GraphicParams.js.map +1 -1
  242. package/lib/esm/GroundPlane.js.map +1 -1
  243. package/lib/esm/HSLColor.js.map +1 -1
  244. package/lib/esm/HSVColor.js.map +1 -1
  245. package/lib/esm/HiddenLine.js.map +1 -1
  246. package/lib/esm/Hilite.js.map +1 -1
  247. package/lib/esm/IModel.js.map +1 -1
  248. package/lib/esm/IModelError.js.map +1 -1
  249. package/lib/esm/IModelVersion.js.map +1 -1
  250. package/lib/esm/ITwinCoreErrors.js.map +1 -1
  251. package/lib/esm/Image.js.map +1 -1
  252. package/lib/esm/IpcAppProps.js.map +1 -1
  253. package/lib/esm/LightSettings.js.map +1 -1
  254. package/lib/esm/LinePixels.js.map +1 -1
  255. package/lib/esm/Localization.js.map +1 -1
  256. package/lib/esm/MapImagerySettings.js.map +1 -1
  257. package/lib/esm/MapLayerSettings.js.map +1 -1
  258. package/lib/esm/MassProperties.js.map +1 -1
  259. package/lib/esm/MaterialProps.js.map +1 -1
  260. package/lib/esm/ModelClipGroup.js.map +1 -1
  261. package/lib/esm/ModelGeometryChanges.js.map +1 -1
  262. package/lib/esm/ModelProps.js.map +1 -1
  263. package/lib/esm/NativeAppProps.js.map +1 -1
  264. package/lib/esm/OctEncodedNormal.js.map +1 -1
  265. package/lib/esm/PlanProjectionSettings.js.map +1 -1
  266. package/lib/esm/PlanarClipMask.js.map +1 -1
  267. package/lib/esm/QPoint.js.map +1 -1
  268. package/lib/esm/RealityDataAccessProps.js.map +1 -1
  269. package/lib/esm/RealityModelDisplaySettings.js.map +1 -1
  270. package/lib/esm/RenderMaterial.js.map +1 -1
  271. package/lib/esm/RenderPolyline.js.map +1 -1
  272. package/lib/esm/RenderTexture.js.map +1 -1
  273. package/lib/esm/RgbColor.js.map +1 -1
  274. package/lib/esm/RpcInterface.js.map +1 -1
  275. package/lib/esm/RpcManager.js.map +1 -1
  276. package/lib/esm/SessionProps.js.map +1 -1
  277. package/lib/esm/SkyBox.js.map +1 -1
  278. package/lib/esm/SolarCalculate.js.map +1 -1
  279. package/lib/esm/SolarShadows.js.map +1 -1
  280. package/lib/esm/SpatialClassification.js.map +1 -1
  281. package/lib/esm/SubCategoryAppearance.js.map +1 -1
  282. package/lib/esm/SubCategoryOverride.js.map +1 -1
  283. package/lib/esm/TerrainSettings.js.map +1 -1
  284. package/lib/esm/TextureMapping.js.map +1 -1
  285. package/lib/esm/TextureProps.js.map +1 -1
  286. package/lib/esm/ThematicDisplay.js.map +1 -1
  287. package/lib/esm/Thumbnail.js.map +1 -1
  288. package/lib/esm/TileProps.js.map +1 -1
  289. package/lib/esm/Tween.js.map +1 -1
  290. package/lib/esm/TxnAction.js.map +1 -1
  291. package/lib/esm/ViewDetails.js.map +1 -1
  292. package/lib/esm/ViewFlags.js.map +1 -1
  293. package/lib/esm/ViewProps.js.map +1 -1
  294. package/lib/esm/WhiteOnWhiteReversalSettings.js.map +1 -1
  295. package/lib/esm/annotation/TextAnnotation.js.map +1 -1
  296. package/lib/esm/annotation/TextBlock.d.ts +113 -94
  297. package/lib/esm/annotation/TextBlock.d.ts.map +1 -1
  298. package/lib/esm/annotation/TextBlock.js +223 -93
  299. package/lib/esm/annotation/TextBlock.js.map +1 -1
  300. package/lib/esm/annotation/TextBlockGeometryProps.js.map +1 -1
  301. package/lib/esm/annotation/TextBlockLayoutResult.d.ts +3 -5
  302. package/lib/esm/annotation/TextBlockLayoutResult.d.ts.map +1 -1
  303. package/lib/esm/annotation/TextBlockLayoutResult.js.map +1 -1
  304. package/lib/esm/annotation/TextField.d.ts +86 -0
  305. package/lib/esm/annotation/TextField.d.ts.map +1 -0
  306. package/lib/esm/annotation/TextField.js +9 -0
  307. package/lib/esm/annotation/TextField.js.map +1 -0
  308. package/lib/esm/annotation/TextStyle.d.ts +63 -1
  309. package/lib/esm/annotation/TextStyle.d.ts.map +1 -1
  310. package/lib/esm/annotation/TextStyle.js +43 -3
  311. package/lib/esm/annotation/TextStyle.js.map +1 -1
  312. package/lib/esm/core-common.d.ts +1 -0
  313. package/lib/esm/core-common.d.ts.map +1 -1
  314. package/lib/esm/core-common.js +1 -0
  315. package/lib/esm/core-common.js.map +1 -1
  316. package/lib/esm/domains/FunctionalElementProps.js.map +1 -1
  317. package/lib/esm/domains/GenericElementProps.js.map +1 -1
  318. package/lib/esm/geometry/AdditionalTransform.js.map +1 -1
  319. package/lib/esm/geometry/AreaPattern.js.map +1 -1
  320. package/lib/esm/geometry/BoundingSphere.js.map +1 -1
  321. package/lib/esm/geometry/Cartographic.js.map +1 -1
  322. package/lib/esm/geometry/CoordinateReferenceSystem.js.map +1 -1
  323. package/lib/esm/geometry/ElementGeometry.js.map +1 -1
  324. package/lib/esm/geometry/ElementGeometryFB.js.map +1 -1
  325. package/lib/esm/geometry/FrustumPlanes.js.map +1 -1
  326. package/lib/esm/geometry/GeodeticDatum.js.map +1 -1
  327. package/lib/esm/geometry/GeodeticEllipsoid.js.map +1 -1
  328. package/lib/esm/geometry/GeometryStream.js.map +1 -1
  329. package/lib/esm/geometry/ImageGraphic.js.map +1 -1
  330. package/lib/esm/geometry/LineStyle.js.map +1 -1
  331. package/lib/esm/geometry/Placement.js.map +1 -1
  332. package/lib/esm/geometry/Projection.js.map +1 -1
  333. package/lib/esm/geometry/TextString.js.map +1 -1
  334. package/lib/esm/internal/BackendTypes.js.map +1 -1
  335. package/lib/esm/internal/PackedFeatureTable.js.map +1 -1
  336. package/lib/esm/internal/RenderMaterialParams.js.map +1 -1
  337. package/lib/esm/internal/RenderMesh.js.map +1 -1
  338. package/lib/esm/internal/RenderTextureParams.js.map +1 -1
  339. package/lib/esm/internal/Snapping.js.map +1 -1
  340. package/lib/esm/internal/annotations/FieldFormatter.d.ts +18 -0
  341. package/lib/esm/internal/annotations/FieldFormatter.d.ts.map +1 -0
  342. package/lib/esm/internal/annotations/FieldFormatter.js +62 -0
  343. package/lib/esm/internal/annotations/FieldFormatter.js.map +1 -0
  344. package/lib/esm/internal/cross-package.d.ts +1 -0
  345. package/lib/esm/internal/cross-package.d.ts.map +1 -1
  346. package/lib/esm/internal/cross-package.js +1 -0
  347. package/lib/esm/internal/cross-package.js.map +1 -1
  348. package/lib/esm/ipc/IpcSession.js.map +1 -1
  349. package/lib/esm/ipc/IpcSocket.js.map +1 -1
  350. package/lib/esm/ipc/IpcWebSocket.js.map +1 -1
  351. package/lib/esm/ipc/IpcWebSocketTransport.js.map +1 -1
  352. package/lib/esm/rpc/DevToolsRpcInterface.js.map +1 -1
  353. package/lib/esm/rpc/IModelReadRpcInterface.js.map +1 -1
  354. package/lib/esm/rpc/IModelTileRpcInterface.js.map +1 -1
  355. package/lib/esm/rpc/SnapshotIModelRpcInterface.js.map +1 -1
  356. package/lib/esm/rpc/TestRpcManager.js.map +1 -1
  357. package/lib/esm/rpc/core/RpcConfiguration.js.map +1 -1
  358. package/lib/esm/rpc/core/RpcConstants.js.map +1 -1
  359. package/lib/esm/rpc/core/RpcControl.js.map +1 -1
  360. package/lib/esm/rpc/core/RpcInvocation.js.map +1 -1
  361. package/lib/esm/rpc/core/RpcMarshaling.js.map +1 -1
  362. package/lib/esm/rpc/core/RpcOperation.js.map +1 -1
  363. package/lib/esm/rpc/core/RpcPendingQueue.js.map +1 -1
  364. package/lib/esm/rpc/core/RpcProtocol.js.map +1 -1
  365. package/lib/esm/rpc/core/RpcPush.js.map +1 -1
  366. package/lib/esm/rpc/core/RpcRegistry.js.map +1 -1
  367. package/lib/esm/rpc/core/RpcRequest.js.map +1 -1
  368. package/lib/esm/rpc/core/RpcRequestContext.js.map +1 -1
  369. package/lib/esm/rpc/core/RpcRoutingToken.js.map +1 -1
  370. package/lib/esm/rpc/core/RpcSessionInvocation.js.map +1 -1
  371. package/lib/esm/rpc/web/BentleyCloudRpcManager.js.map +1 -1
  372. package/lib/esm/rpc/web/BentleyCloudRpcProtocol.js.map +1 -1
  373. package/lib/esm/rpc/web/OpenAPI.js.map +1 -1
  374. package/lib/esm/rpc/web/RpcMultipart.js.map +1 -1
  375. package/lib/esm/rpc/web/WebAppRpcLogging.js.map +1 -1
  376. package/lib/esm/rpc/web/WebAppRpcProtocol.js.map +1 -1
  377. package/lib/esm/rpc/web/WebAppRpcRequest.js.map +1 -1
  378. package/lib/esm/rpc/web/multipart/RpcMultipartParser.js.map +1 -1
  379. package/lib/esm/tile/B3dmTileIO.js.map +1 -1
  380. package/lib/esm/tile/CompositeTileIO.js.map +1 -1
  381. package/lib/esm/tile/ElementGraphics.js.map +1 -1
  382. package/lib/esm/tile/GltfTileIO.js.map +1 -1
  383. package/lib/esm/tile/I3dmTileIO.js.map +1 -1
  384. package/lib/esm/tile/IModelTileIO.js.map +1 -1
  385. package/lib/esm/tile/PntsTileIO.js.map +1 -1
  386. package/lib/esm/tile/TileIO.js.map +1 -1
  387. package/lib/esm/tile/TileMetadata.js.map +1 -1
  388. package/lib/esm/tile/Tileset3dSchema.js.map +1 -1
  389. package/package.json +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"ViewProps.js","sourceRoot":"","sources":["../../src/ViewProps.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AA4OH;;;GAGG;AACH,IAAiB,YAAY,CA0W5B;AA1WD,WAAiB,YAAY;IAE3B;;;;OAIG;IACU,oBAAO,GAAG,OAAO,CAAC;IAkC/B,qGAAqG;IACxF,0BAAa,GAAG,CAAC,EAAiB,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;AAgUnF,CAAC,EA1WgB,YAAY,4BAAZ,YAAY,QA0W5B","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 { CompressedId64Set, Id64Array, Id64String } from \"@itwin/core-bentley\";\r\nimport { AngleProps, Range3dProps, TransformProps, XYProps, XYZProps, YawPitchRollProps } from \"@itwin/core-geometry\";\r\nimport { CameraProps } from \"./Camera\";\r\nimport { DisplayStyleProps, DisplayStyleSettingsProps } from \"./DisplayStyleSettings\";\r\nimport { DefinitionElementProps, DisplayStyleLoadProps, ElementProps, RenderTimelineProps, SheetProps, ViewAttachmentProps } from \"./ElementProps\";\r\nimport { EntityQueryParams } from \"./EntityProps\";\r\nimport { ModelProps } from \"./ModelProps\";\r\nimport { SubCategoryAppearance } from \"./SubCategoryAppearance\";\r\nimport { ViewDetails3dProps, ViewDetailsProps } from \"./ViewDetails\";\r\nimport { ThumbnailProps } from \"./Thumbnail\";\r\nimport { RenderSchedule } from \"./RenderSchedule\";\r\n\r\n/** The id of either an element or an entry in a ViewStore.\r\n * @public\r\n */\r\nexport type ViewIdString = Id64String; // should also include ViewStoreRpc.IdString when that's @public\r\n\r\n/** As part of a [[ViewStateProps]], describes the [[SpatialViewDefinition]] from which a [SectionDrawing]($backend) was generated.\r\n * @see [[SectionDrawingProps]]\r\n * @public\r\n * @extensions\r\n */\r\nexport interface SectionDrawingViewProps {\r\n /** The Id of the spatial view from which the SectionDrawing was generated. */\r\n spatialView: Id64String;\r\n /** If true, the spatial view should be displayed in the context of the drawing view. */\r\n displaySpatialView: boolean;\r\n /** Transform from drawing coordinates to spatial coordinates. If undefined, use identity transform. */\r\n drawingToSpatialTransform?: TransformProps;\r\n}\r\n\r\n/** The response props from the getCustomViewState3dData RPC endpoint\r\n * @internal\r\n */\r\nexport interface CustomViewState3dProps {\r\n modelIds: CompressedId64Set;\r\n modelExtents: Range3dProps;\r\n categoryIds: CompressedId64Set;\r\n}\r\n\r\n/**\r\n * The options passed to the getCustomViewState3dData RPC endpoint.\r\n * @internal\r\n */\r\nexport interface CustomViewState3dCreatorOptions {\r\n modelIds?: CompressedId64Set;\r\n}\r\n\r\n/**\r\n * A result row from querying for subcategories\r\n * @internal\r\n */\r\nexport interface SubCategoryResultRow {\r\n parentId: Id64String;\r\n id: Id64String;\r\n appearance: SubCategoryAppearance.Props;\r\n}\r\n\r\n/**\r\n * Request props for the hydrateViewState RPC endpoint.\r\n * @internal\r\n */\r\nexport interface HydrateViewStateRequestProps {\r\n acsId?: string;\r\n notLoadedModelSelectorStateModels?: CompressedId64Set;\r\n sheetViewAttachmentIds?: CompressedId64Set;\r\n viewStateLoadProps?: ViewStateLoadProps;\r\n baseModelId?: Id64String;\r\n spatialViewId?: Id64String;\r\n}\r\n\r\n/** Response props from the hydrateViewState RPC endpoint.\r\n * @internal\r\n */\r\nexport interface HydrateViewStateResponseProps {\r\n acsElementProps?: ElementProps;\r\n modelSelectorStateModels?: ModelProps[];\r\n // cast this to viewAttachmentInfo[] on the frontend.\r\n sheetViewAttachmentProps?: ViewAttachmentProps[];\r\n sheetViewViews?: (ViewStateProps | undefined)[];\r\n baseModelProps?: ModelProps;\r\n spatialViewProps?: ViewStateProps;\r\n}\r\n\r\n/** Returned from [IModelDb.Views.getViewStateProps]($backend).\r\n * @public\r\n * @extensions\r\n */\r\nexport interface ViewStateProps {\r\n viewDefinitionProps: ViewDefinitionProps;\r\n categorySelectorProps: CategorySelectorProps;\r\n modelSelectorProps?: ModelSelectorProps;\r\n displayStyleProps: DisplayStyleProps;\r\n /** Sheet-specific properties, if this is a view of a [SheetModel]($backend). */\r\n sheetProps?: SheetProps;\r\n /** The Ids of the [ViewAttachment]($backend)s contained within the [SheetModel]($backend), if this is a sheet view. */\r\n sheetAttachments?: Id64Array;\r\n /** For a [DrawingViewState]($frontend), the extents of the [DrawingModel]($backend), used for determining the upper limits of the view's extents. */\r\n modelExtents?: Range3dProps;\r\n /** Information about the [SectionDrawing]($backend) relevant to displaying a drawing view. */\r\n sectionDrawing?: SectionDrawingViewProps;\r\n}\r\n\r\n/** Options for loading a [[ViewStateProps]] via [IModelConnection.Views.load]($frontend) or [IModelDb.Views.getViewStateProps]($backend).\r\n * @public\r\n * @extensions\r\n */\r\nexport interface ViewStateLoadProps {\r\n /** Options for loading the view's [[DisplayStyleProps]]. */\r\n displayStyle?: DisplayStyleLoadProps;\r\n\r\n /**\r\n * bindings for query-based selectors\r\n * @beta\r\n */\r\n queryBindings?: {\r\n modelSelector?: ViewStoreRpc.QueryBindings;\r\n categorySelector?: ViewStoreRpc.QueryBindings;\r\n };\r\n}\r\n\r\n/** Properties that define a ModelSelector\r\n * @public\r\n * @extensions\r\n */\r\nexport interface ModelSelectorProps extends DefinitionElementProps {\r\n models: Id64Array;\r\n}\r\n\r\n/** Properties that define a CategorySelector\r\n * @public\r\n * @extensions\r\n */\r\nexport interface CategorySelectorProps extends DefinitionElementProps {\r\n categories: Id64Array;\r\n}\r\n\r\n/** Parameters for performing a query on [ViewDefinition]($backend) classes.\r\n * @public\r\n * @extensions\r\n */\r\nexport interface ViewQueryParams extends EntityQueryParams {\r\n wantPrivate?: boolean;\r\n}\r\n\r\n/** Parameters used to construct a ViewDefinition\r\n * @public\r\n * @extensions\r\n */\r\nexport interface ViewDefinitionProps extends DefinitionElementProps {\r\n categorySelectorId: ViewIdString;\r\n displayStyleId: ViewIdString;\r\n description?: string;\r\n jsonProperties?: {\r\n /** Additional properties of the view. */\r\n viewDetails?: ViewDetailsProps;\r\n };\r\n}\r\n\r\n/** Parameters to construct a ViewDefinition3d\r\n * @public\r\n * @extensions\r\n */\r\nexport interface ViewDefinition3dProps extends ViewDefinitionProps {\r\n /** if true, camera is valid. */\r\n cameraOn: boolean;\r\n /** The lower left back corner of the view frustum. */\r\n origin: XYZProps;\r\n /** The extent of the view frustum. */\r\n extents: XYZProps;\r\n /** Rotation of the view frustum (could be undefined if going Matrix3d -> YawPitchRoll). */\r\n angles?: YawPitchRollProps;\r\n /** The camera used for this view. */\r\n camera: CameraProps;\r\n jsonProperties?: {\r\n /** Additional properties of the view. */\r\n viewDetails?: ViewDetails3dProps;\r\n };\r\n}\r\n\r\n/** Parameters to construct a SpatialViewDefinition\r\n * @public\r\n * @extensions\r\n */\r\nexport interface SpatialViewDefinitionProps extends ViewDefinition3dProps {\r\n modelSelectorId: ViewIdString;\r\n}\r\n\r\n/** Parameters used to construct a ViewDefinition2d\r\n * @public\r\n * @extensions\r\n */\r\nexport interface ViewDefinition2dProps extends ViewDefinitionProps {\r\n baseModelId: Id64String;\r\n origin: XYProps;\r\n delta: XYProps;\r\n angle: AngleProps;\r\n}\r\n\r\n/**\r\n * @public\r\n * @extensions\r\n */\r\nexport interface AuxCoordSystemProps extends ElementProps {\r\n type?: number;\r\n description?: string;\r\n}\r\n\r\n/** Properties of AuxCoordSystem2d\r\n * @public\r\n * @extensions\r\n */\r\nexport interface AuxCoordSystem2dProps extends AuxCoordSystemProps {\r\n /** Origin of the AuxCoordSystem2d */\r\n origin?: XYProps;\r\n /** Rotation angle */\r\n angle?: AngleProps;\r\n}\r\n\r\n/** Properties of AuxCoordSystem3d\r\n * @public\r\n * @extensions\r\n */\r\nexport interface AuxCoordSystem3dProps extends AuxCoordSystemProps {\r\n /** Origin of the AuxCoordSystem3d */\r\n origin?: XYZProps;\r\n /** Yaw angle */\r\n yaw?: AngleProps;\r\n /** Pitch angle */\r\n pitch?: AngleProps;\r\n /** Roll angle */\r\n roll?: AngleProps;\r\n}\r\n\r\n/**\r\n * Access to a ViewStore from the frontend.\r\n * @beta\r\n */\r\nexport namespace ViewStoreRpc {\r\n\r\n /**\r\n * Version of the Rpc interface. If any methods or interfaces of this API change, this number should\r\n * be incremented according to the rules of semantic versioning. See .\\rpc\\README-RpcInterfaceVersioning.md for more information.\r\n * @internal\r\n */\r\n export const version = \"4.0.0\";\r\n\r\n /** an Id of a View, DisplayStyle, ModelSelector, CategorySelector, or Timeline in a ViewStore.\r\n * Will be a base-36 number with a leading \"@\".\r\n * @public\r\n */\r\n export type IdString = string;\r\n\r\n /**\r\n * A string identifying a group. This may either be a \"group name path\" or the RowString of a group (e.g. either \"group1/design/issues\" or \"@4e3\")\r\n * The syntax is not ambiguous because ViewStoreIdStrings always start with \"@\" and Group names can never contain \"@\".\r\n */\r\n export type ViewGroupSpec = IdString | ViewGroupPath;\r\n\r\n /** The name for a view. */\r\n export type ViewName = string;\r\n\r\n /** The name for a Tag. */\r\n export type TagName = string;\r\n\r\n /** The name of an \"owner\". Should come from the authentication system, so it will be guaranteed unique.\r\n * This name should be chosen by the user rather than their email address.\r\n */\r\n export type OwnerName = string;\r\n\r\n /** The path name of a view group (e.g. \"group1/design/issues\"). Does not include the \"root\" group. */\r\n export type ViewGroupPath = string;\r\n\r\n /** The name for a view group. */\r\n export type ViewGroupName = string;\r\n\r\n /** The name for a view group. */\r\n export type ClassFullName = string;\r\n\r\n /** Determine if a string is an Id of an entry in a ViewStore (base-36 integer with a leading \"@\") */\r\n export const isViewStoreId = (id?: ViewIdString) => true === id?.startsWith(\"@\");\r\n\r\n /** Parameters for querying for views in a ViewStore. */\r\n export interface QueryParams {\r\n /** a list of classFullNames to accept. If not present, all classes are returned. */\r\n readonly classNames?: ClassFullName[];\r\n /** Optional \"LIMIT\" clause to limit the number of views returned. */\r\n readonly limit?: number;\r\n /** Optional \"OFFSET\" clause. Only valid if Limit is also present. */\r\n readonly offset?: number;\r\n /** A string to filter view names. May include wildcards if the `nameCompare` uses LIKE or GLOB (see SQLite documentation for LIKE and GLOB). */\r\n readonly nameSearch?: string;\r\n /** The comparison operator for `nameSearch`. Default is `=` */\r\n readonly nameCompare?: \"GLOB\" | \"LIKE\" | \"NOT GLOB\" | \"NOT LIKE\" | \"=\" | \"<\" | \">\";\r\n /* the Id of the view group to query. If not present, the root group is used. There is no way to query for views from multiple view groups in one request. */\r\n readonly group?: IdString;\r\n /** A list of tags to filter views. If present, only views that have one or more of the tags will be returned. */\r\n readonly tags?: TagName[];\r\n /* The name of an owner for private views. If present, private views owned by the owner will also be returned. Shared views are always returned. */\r\n readonly owner?: OwnerName;\r\n }\r\n\r\n /** Parameters for specifying a Query to select Categories or Models. */\r\n export interface SelectorQuery {\r\n /**\r\n * The full ClassName from which to select. If this SelectorQuery is for Categories, this must be or derive from \"BisCore:Category\".\r\n * If this SelectorQuery is for Models, this must be or derive from \"BisCore:Model\".\r\n */\r\n from: ClassFullName;\r\n /** If true, only return instances of `from`. Otherwise, return instances of `from` and any subclasses of `from`. */\r\n only?: boolean;\r\n /**\r\n * filter for query. If present, only instances of `from` that satisfy the filter will be returned.\r\n * If not supplied, all instances of `from` are returned.\r\n * @note\r\n * This value is used into the ECQuery:`SELECT ECInstanceId FROM ${query.from} WHERE ${query.where}`.\r\n */\r\n where?: string;\r\n /** List of Model or Category ids to add to the query results.\r\n * @note This is only valid if there is a `where` clause. Otherwise all instances of `from` will be returned so there is no value in adding ids.\r\n */\r\n adds?: Id64Array | CompressedId64Set;\r\n /** List of Model or Category Ids to remove from the query results. */\r\n removes?: Id64Array | CompressedId64Set;\r\n }\r\n\r\n /** A Model or Category selector may either be a query or a list of Ids. */\r\n export type SelectorProps = { query: SelectorQuery, ids?: never } | { query?: never, ids: Id64Array | CompressedId64Set };\r\n\r\n /** Information about a View in a ViewStore. */\r\n export interface ViewInfo {\r\n /** The Id of the view. */\r\n id: IdString;\r\n /** The name of the view. */\r\n name?: ViewName;\r\n /** The name of the owner of the view. */\r\n owner?: OwnerName;\r\n /** The className of the view. */\r\n className: ClassFullName;\r\n /** The Id of the view group containing the view. */\r\n groupId: IdString;\r\n /** If true, the view is private (unshared) and will only be returned by queries that specify the owner's name. */\r\n isPrivate: boolean;\r\n /** The Id of a ModelSelector, if the view has one. */\r\n modelSelectorId?: IdString;\r\n /** The Id of the CategorySelector for this view. */\r\n categorySelectorId: IdString;\r\n /** The Id of a DisplayStyle for the view. */\r\n displayStyleId: IdString;\r\n /** a list of tags for the view. */\r\n tags?: TagName[];\r\n }\r\n\r\n /** Information about a ViewGroup in a ViewStore. */\r\n export interface ViewGroupInfo {\r\n /** The Id of this view group. */\r\n id: IdString;\r\n /** The name of this view group. */\r\n name: ViewGroupName;\r\n /** The Id of the parent of this view group. If undefined, this is the root group. */\r\n parent?: IdString;\r\n /** The Id of the default view for this view group. */\r\n defaultView?: IdString;\r\n }\r\n\r\n /** Arguments for adding a new view to a ViewStore. */\r\n export interface AddViewArgs {\r\n /** the properties of the ViewDefinition for the new view. */\r\n readonly viewDefinition: ViewDefinitionProps;\r\n\r\n /**\r\n * The properties of a category selector for the new view.\r\n * @note This value is only used, and should only be present if `viewDefinition.categorySelectorId` **not** a valid\r\n * `IdString`. In that case, a new category selector will be created with these properties and its Id will be used.\r\n * Otherwise, the categorySelectorId from the ViewDefinition is used. If it does not represent a valid category\r\n * selector, an error is thrown.\r\n */\r\n readonly categorySelectorProps?: CategorySelectorProps;\r\n\r\n /** The properties of a model selector for the new view.\r\n * @note This value is only used, and should only be present if `viewDefinition.modelSelectorId` **not** a valid\r\n * `IdString`. In that case, a new model selector will be created with these properties and its Id will be used.\r\n * Otherwise, the modelSelectorId from the ViewDefinition is used. If it does not represent a valid model selector,\r\n * an error is thrown.\r\n */\r\n readonly modelSelectorProps?: ModelSelectorProps;\r\n\r\n /** The properties of a display style for the new view.\r\n * @note This value is only used, and should only be present if `viewDefinition.displayStyleId` **not** a valid\r\n * `IdString`. In that case, a new display style will be created with these properties and its Id will be used.\r\n * Otherwise, the displayStyleId from the ViewDefinition is used. If it does not represent a valid display style, an\r\n * error is thrown.\r\n */\r\n readonly displayStyleProps?: DisplayStyleProps;\r\n\r\n /* the owner of the view. Must be present if isPrivate is true. */\r\n readonly owner?: OwnerName;\r\n\r\n /* the Id of the view group for the view. If not present, the view is added to the root group. */\r\n readonly group?: IdString;\r\n\r\n /* if true, the view is private (unshared). */\r\n readonly isPrivate?: boolean;\r\n\r\n /* an optional list of tags for the view. */\r\n readonly tags?: TagName[];\r\n\r\n /** optional thumbnail for the view. */\r\n readonly thumbnail?: ThumbnailProps;\r\n }\r\n\r\n /** Argument for finding a category selector, model selector, display style, or timeline by name or Id. */\r\n export type NameOrId = { name: string, id?: never } | { id: IdString, name?: never };\r\n\r\n /** Bindings for parameterized values in where clause of SelectorQuery\r\n * @see[[ECSqlStatement.bindValues]]\r\n */\r\n export interface QueryBindings {\r\n bindings?: any[] | object;\r\n }\r\n\r\n /**\r\n * Methods for reading from a ViewStore via Rpc from a frontend via `IModelConnection.views.viewsStoreReader`. These\r\n * methods use the *current* ViewStore for the iModel, and attempt to load the default ViewStore if no ViewStore is\r\n * currently loaded. They will throw exceptions if the request cannot be fulfilled.\r\n * @note The user's accessToken is validated against the ViewStore for every request. For each of these methods, the\r\n * user only needs read permission to the ViewStore.\r\n */\r\n export interface Reader {\r\n /** Find all views owned by the supplied owner name. */\r\n findViewsByOwner(args: { owner: OwnerName }): Promise<ViewInfo[]>;\r\n\r\n /** Get a category selector by Id. Throws if it does not exist. */\r\n getCategorySelector(args: NameOrId & QueryBindings): Promise<CategorySelectorProps>;\r\n\r\n /** Get a display style by Id. Throws if it does not exist. */\r\n getDisplayStyle(args: NameOrId & { opts?: DisplayStyleLoadProps }): Promise<DisplayStyleProps>;\r\n\r\n /** Get a model selector by Id. Throws if it does not exist. */\r\n getModelSelector(args: NameOrId & QueryBindings): Promise<ModelSelectorProps>;\r\n\r\n /** Get a thumbnail for a view. */\r\n getThumbnail(args: { viewId: IdString }): Promise<ThumbnailProps | undefined>;\r\n\r\n /** Get a render timeline by Id. Throws if it does not exist. */\r\n getTimeline(args: NameOrId): Promise<RenderTimelineProps>;\r\n\r\n /** Get a view by name. The name can include the *view group path*, if no `groupId` is supplied. */\r\n getViewByName(arg: { name: ViewName, groupId?: IdString }): Promise<ViewInfo | undefined>;\r\n\r\n /** Get a view definition by viewId. Throws if it does not exist. */\r\n getViewDefinition(args: { viewId: IdString }): Promise<ViewDefinitionProps>;\r\n\r\n /** get the properties of a ViewGroup by id. This will include the defaultViewId, if one exists. */\r\n getViewGroupInfo(args: { groupId?: IdString }): Promise<ViewGroupInfo | undefined>;\r\n\r\n /** Get a list of ViewGroups that are children of the supplied parent. If no parent is supplied, the root group is used.\r\n * Each entry in the list includes the id and name of the ViewGroup.\r\n */\r\n getViewGroups(args: { parent?: ViewGroupSpec }): Promise<{ id: IdString, name: string }[]>;\r\n\r\n /** Get the ViewInfo for a view by Id. Returns undefined if the view does not exist. */\r\n getViewInfo(args: { viewId: IdString }): Promise<ViewInfo | undefined>;\r\n\r\n /** Query for a list of ViewInfos for views that match the supplied [[QueryParams]].\r\n * @note The array will be sorted by name, ascending. To limit the size of the array, supply `limit` and `offset` in the QueryParams.\r\n */\r\n queryViews(queryParams: QueryParams): Promise<ViewInfo[]>;\r\n }\r\n\r\n /**\r\n * Methods for writing to a ViewStore via Rpc from a frontend via `IModelConnection.views.viewsStoreWriter`. These\r\n * methods use the *current* ViewStore for the iModel, and attempt to load the default ViewStore if no ViewStore is\r\n * currently loaded. They will throw exceptions if the request cannot be fulfilled.\r\n * @note The user's accessToken is validated against the ViewStore for every request. For each of these methods, the\r\n * user must have write permission to the ViewStore.\r\n */\r\n export interface Writer {\r\n /**\r\n * Add a category selector to a ViewStore.\r\n * @returns The IdString of the new category selector.\r\n */\r\n addCategorySelector(args: { name?: string, selector: SelectorProps, owner?: OwnerName }): Promise<IdString>;\r\n\r\n /** Add a display style to a ViewStore.\r\n * @returns The IdString of the new display style.\r\n */\r\n addDisplayStyle(args: { name?: string, className: string, settings: DisplayStyleSettingsProps, owner?: OwnerName }): Promise<IdString>;\r\n\r\n /**\r\n * Add a model selector to a ViewStore.\r\n * @returns The IdString of the new model selector.\r\n */\r\n addModelSelector(args: { name?: string, selector: SelectorProps, owner?: OwnerName }): Promise<IdString>;\r\n\r\n /**\r\n * Add a thumbnail for a view. If the view already has a thumbnail, it is replaced.\r\n * If a view is deleted, its thumbnail is also deleted.\r\n * @note The thumbnail must be a valid image in PNG or JPEG format.\r\n */\r\n addOrReplaceThumbnail(args: { viewId: IdString, thumbnail: ThumbnailProps }): Promise<void>;\r\n\r\n /** Add tags to a view. If the view already has tags, the new tags are appended to the existing tags. */\r\n addTagsToView(args: { viewId: IdString, tags: TagName[] }): Promise<void>;\r\n\r\n /** Add a render timeline to a ViewStore.\r\n * @returns The IdString of the new timeline.\r\n */\r\n addTimeline(args: { name?: string, timeline: RenderSchedule.ScriptProps, owner?: OwnerName }): Promise<IdString>;\r\n\r\n /** Add a view to a ViewStore. If no group is supplied, the new view is added to the root view group.\r\n * @returns The IdString of the new view\r\n */\r\n addView(args: AddViewArgs): Promise<IdString>;\r\n\r\n /** Add a view group to a ViewStore. If no parent is supplied, the new group is added to the root view group.\r\n * @returns the IdString of new view group\r\n */\r\n addViewGroup(args: { name: string, parentId?: IdString, owner?: OwnerName }): Promise<IdString>;\r\n\r\n /** Change the default view for a view group. If no group is supplied, this changes the default view for the root view group. */\r\n changeDefaultViewId(args: { defaultView: IdString, group?: ViewGroupSpec }): Promise<void>;\r\n\r\n /** Delete the thumbnail for a view. */\r\n deleteThumbnail(args: { viewId: IdString }): Promise<void>;\r\n\r\n /**\r\n * Delete a view from a ViewStore. If this is the default view for a view group, it cannot be deleted until another\r\n * view is set as the default.\r\n * @note If this view references a category selector, model selector, or display style that is not referenced by any\r\n * other view, *and do not have a name*, they will each also be deleted. If the view has a thumbnail, it is also\r\n * deleted.\r\n */\r\n deleteView(args: { viewId: IdString }): Promise<void>;\r\n\r\n /** Delete a view group from a ViewStore. This will also delete all views in the group. */\r\n deleteViewGroup(args: { name: ViewGroupSpec }): Promise<void>;\r\n\r\n /** Delete a display style from a ViewStore. If the display style is referenced by any view, it cannot be deleted\r\n * and an exception will be thrown.\r\n */\r\n deleteDisplayStyle(args: { id: IdString }): Promise<void>;\r\n\r\n /** Delete a model selector from a ViewStore. If the model selector is referenced by any view, it cannot be deleted\r\n * and an exception will be thrown. */\r\n deleteModelSelector(args: { id: IdString }): Promise<void>;\r\n\r\n /** Delete a category selector from a ViewStore. If the category selector is referenced by any view, it cannot be\r\n * deleted and an exception will be thrown.\r\n */\r\n deleteCategorySelector(args: { id: IdString }): Promise<void>;\r\n\r\n /** Delete a render timeline from a ViewStore. */\r\n deleteTimeline(args: { id: IdString }): Promise<void>;\r\n\r\n /** Delete a tag. This removes it from all views where it was used. */\r\n deleteTag(args: { name: TagName }): Promise<void>;\r\n\r\n /** remove a tag from a view. */\r\n removeTagFromView(args: { viewId: IdString, tag: TagName }): Promise<void>;\r\n\r\n /** Update the properties of a category selector. */\r\n updateCategorySelector(args: NameOrId & { selector: SelectorProps }): Promise<void>;\r\n\r\n /** Update the properties of a display style. */\r\n updateDisplayStyle(args: NameOrId & { className: string, settings: DisplayStyleSettingsProps }): Promise<void>;\r\n\r\n /** Update the properties of a model selector. */\r\n updateModelSelector(args: NameOrId & { selector: SelectorProps }): Promise<void>;\r\n\r\n /** Update the properties of a render timeline. */\r\n updateTimeline(args: NameOrId & { timeline: RenderSchedule.ScriptProps }): Promise<void>;\r\n\r\n /** Update the properties of a view definition. */\r\n updateViewDefinition(args: { viewId: IdString, viewDefinition: ViewDefinitionProps }): Promise<void>;\r\n\r\n /** Change a view from shared to private, or vice versa. If changing to private, the owner must be supplied. */\r\n updateViewShared(arg: { viewId: IdString, isShared: boolean, owner?: string }): Promise<void>;\r\n\r\n /** Set the name of a category selector. */\r\n renameCategorySelector(args: { id: IdString, name?: string }): Promise<void>;\r\n\r\n /** Set the name of a display style. */\r\n renameDisplayStyle(args: { id: IdString, name?: string }): Promise<void>;\r\n\r\n /** Set the name of a model selector. */\r\n renameModelSelector(args: { id: IdString, name?: string }): Promise<void>;\r\n\r\n /** Set the name of a render timeline. */\r\n renameTimeline(args: { id: IdString, name?: string }): Promise<void>;\r\n\r\n /** Set the name of a view. */\r\n renameView(args: { viewId: IdString, name: string }): Promise<void>;\r\n\r\n /** Set the name of a view group. */\r\n renameViewGroup(args: { groupId: IdString, name: string }): Promise<void>;\r\n\r\n /** rename an existing tag. */\r\n renameTag(args: { oldName: TagName, newName: TagName }): Promise<void>;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ViewProps.js","sourceRoot":"","sources":["../../src/ViewProps.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AA4OH;;;GAGG;AACH,IAAiB,YAAY,CA0W5B;AA1WD,WAAiB,YAAY;IAE3B;;;;OAIG;IACU,oBAAO,GAAG,OAAO,CAAC;IAkC/B,qGAAqG;IACxF,0BAAa,GAAG,CAAC,EAAiB,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;AAgUnF,CAAC,EA1WgB,YAAY,4BAAZ,YAAY,QA0W5B","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Views\n */\n\nimport { CompressedId64Set, Id64Array, Id64String } from \"@itwin/core-bentley\";\nimport { AngleProps, Range3dProps, TransformProps, XYProps, XYZProps, YawPitchRollProps } from \"@itwin/core-geometry\";\nimport { CameraProps } from \"./Camera\";\nimport { DisplayStyleProps, DisplayStyleSettingsProps } from \"./DisplayStyleSettings\";\nimport { DefinitionElementProps, DisplayStyleLoadProps, ElementProps, RenderTimelineProps, SheetProps, ViewAttachmentProps } from \"./ElementProps\";\nimport { EntityQueryParams } from \"./EntityProps\";\nimport { ModelProps } from \"./ModelProps\";\nimport { SubCategoryAppearance } from \"./SubCategoryAppearance\";\nimport { ViewDetails3dProps, ViewDetailsProps } from \"./ViewDetails\";\nimport { ThumbnailProps } from \"./Thumbnail\";\nimport { RenderSchedule } from \"./RenderSchedule\";\n\n/** The id of either an element or an entry in a ViewStore.\n * @public\n */\nexport type ViewIdString = Id64String; // should also include ViewStoreRpc.IdString when that's @public\n\n/** As part of a [[ViewStateProps]], describes the [[SpatialViewDefinition]] from which a [SectionDrawing]($backend) was generated.\n * @see [[SectionDrawingProps]]\n * @public\n * @extensions\n */\nexport interface SectionDrawingViewProps {\n /** The Id of the spatial view from which the SectionDrawing was generated. */\n spatialView: Id64String;\n /** If true, the spatial view should be displayed in the context of the drawing view. */\n displaySpatialView: boolean;\n /** Transform from drawing coordinates to spatial coordinates. If undefined, use identity transform. */\n drawingToSpatialTransform?: TransformProps;\n}\n\n/** The response props from the getCustomViewState3dData RPC endpoint\n * @internal\n */\nexport interface CustomViewState3dProps {\n modelIds: CompressedId64Set;\n modelExtents: Range3dProps;\n categoryIds: CompressedId64Set;\n}\n\n/**\n * The options passed to the getCustomViewState3dData RPC endpoint.\n * @internal\n */\nexport interface CustomViewState3dCreatorOptions {\n modelIds?: CompressedId64Set;\n}\n\n/**\n * A result row from querying for subcategories\n * @internal\n */\nexport interface SubCategoryResultRow {\n parentId: Id64String;\n id: Id64String;\n appearance: SubCategoryAppearance.Props;\n}\n\n/**\n * Request props for the hydrateViewState RPC endpoint.\n * @internal\n */\nexport interface HydrateViewStateRequestProps {\n acsId?: string;\n notLoadedModelSelectorStateModels?: CompressedId64Set;\n sheetViewAttachmentIds?: CompressedId64Set;\n viewStateLoadProps?: ViewStateLoadProps;\n baseModelId?: Id64String;\n spatialViewId?: Id64String;\n}\n\n/** Response props from the hydrateViewState RPC endpoint.\n * @internal\n */\nexport interface HydrateViewStateResponseProps {\n acsElementProps?: ElementProps;\n modelSelectorStateModels?: ModelProps[];\n // cast this to viewAttachmentInfo[] on the frontend.\n sheetViewAttachmentProps?: ViewAttachmentProps[];\n sheetViewViews?: (ViewStateProps | undefined)[];\n baseModelProps?: ModelProps;\n spatialViewProps?: ViewStateProps;\n}\n\n/** Returned from [IModelDb.Views.getViewStateProps]($backend).\n * @public\n * @extensions\n */\nexport interface ViewStateProps {\n viewDefinitionProps: ViewDefinitionProps;\n categorySelectorProps: CategorySelectorProps;\n modelSelectorProps?: ModelSelectorProps;\n displayStyleProps: DisplayStyleProps;\n /** Sheet-specific properties, if this is a view of a [SheetModel]($backend). */\n sheetProps?: SheetProps;\n /** The Ids of the [ViewAttachment]($backend)s contained within the [SheetModel]($backend), if this is a sheet view. */\n sheetAttachments?: Id64Array;\n /** For a [DrawingViewState]($frontend), the extents of the [DrawingModel]($backend), used for determining the upper limits of the view's extents. */\n modelExtents?: Range3dProps;\n /** Information about the [SectionDrawing]($backend) relevant to displaying a drawing view. */\n sectionDrawing?: SectionDrawingViewProps;\n}\n\n/** Options for loading a [[ViewStateProps]] via [IModelConnection.Views.load]($frontend) or [IModelDb.Views.getViewStateProps]($backend).\n * @public\n * @extensions\n */\nexport interface ViewStateLoadProps {\n /** Options for loading the view's [[DisplayStyleProps]]. */\n displayStyle?: DisplayStyleLoadProps;\n\n /**\n * bindings for query-based selectors\n * @beta\n */\n queryBindings?: {\n modelSelector?: ViewStoreRpc.QueryBindings;\n categorySelector?: ViewStoreRpc.QueryBindings;\n };\n}\n\n/** Properties that define a ModelSelector\n * @public\n * @extensions\n */\nexport interface ModelSelectorProps extends DefinitionElementProps {\n models: Id64Array;\n}\n\n/** Properties that define a CategorySelector\n * @public\n * @extensions\n */\nexport interface CategorySelectorProps extends DefinitionElementProps {\n categories: Id64Array;\n}\n\n/** Parameters for performing a query on [ViewDefinition]($backend) classes.\n * @public\n * @extensions\n */\nexport interface ViewQueryParams extends EntityQueryParams {\n wantPrivate?: boolean;\n}\n\n/** Parameters used to construct a ViewDefinition\n * @public\n * @extensions\n */\nexport interface ViewDefinitionProps extends DefinitionElementProps {\n categorySelectorId: ViewIdString;\n displayStyleId: ViewIdString;\n description?: string;\n jsonProperties?: {\n /** Additional properties of the view. */\n viewDetails?: ViewDetailsProps;\n };\n}\n\n/** Parameters to construct a ViewDefinition3d\n * @public\n * @extensions\n */\nexport interface ViewDefinition3dProps extends ViewDefinitionProps {\n /** if true, camera is valid. */\n cameraOn: boolean;\n /** The lower left back corner of the view frustum. */\n origin: XYZProps;\n /** The extent of the view frustum. */\n extents: XYZProps;\n /** Rotation of the view frustum (could be undefined if going Matrix3d -> YawPitchRoll). */\n angles?: YawPitchRollProps;\n /** The camera used for this view. */\n camera: CameraProps;\n jsonProperties?: {\n /** Additional properties of the view. */\n viewDetails?: ViewDetails3dProps;\n };\n}\n\n/** Parameters to construct a SpatialViewDefinition\n * @public\n * @extensions\n */\nexport interface SpatialViewDefinitionProps extends ViewDefinition3dProps {\n modelSelectorId: ViewIdString;\n}\n\n/** Parameters used to construct a ViewDefinition2d\n * @public\n * @extensions\n */\nexport interface ViewDefinition2dProps extends ViewDefinitionProps {\n baseModelId: Id64String;\n origin: XYProps;\n delta: XYProps;\n angle: AngleProps;\n}\n\n/**\n * @public\n * @extensions\n */\nexport interface AuxCoordSystemProps extends ElementProps {\n type?: number;\n description?: string;\n}\n\n/** Properties of AuxCoordSystem2d\n * @public\n * @extensions\n */\nexport interface AuxCoordSystem2dProps extends AuxCoordSystemProps {\n /** Origin of the AuxCoordSystem2d */\n origin?: XYProps;\n /** Rotation angle */\n angle?: AngleProps;\n}\n\n/** Properties of AuxCoordSystem3d\n * @public\n * @extensions\n */\nexport interface AuxCoordSystem3dProps extends AuxCoordSystemProps {\n /** Origin of the AuxCoordSystem3d */\n origin?: XYZProps;\n /** Yaw angle */\n yaw?: AngleProps;\n /** Pitch angle */\n pitch?: AngleProps;\n /** Roll angle */\n roll?: AngleProps;\n}\n\n/**\n * Access to a ViewStore from the frontend.\n * @beta\n */\nexport namespace ViewStoreRpc {\n\n /**\n * Version of the Rpc interface. If any methods or interfaces of this API change, this number should\n * be incremented according to the rules of semantic versioning. See .\\rpc\\README-RpcInterfaceVersioning.md for more information.\n * @internal\n */\n export const version = \"4.0.0\";\n\n /** an Id of a View, DisplayStyle, ModelSelector, CategorySelector, or Timeline in a ViewStore.\n * Will be a base-36 number with a leading \"@\".\n * @public\n */\n export type IdString = string;\n\n /**\n * A string identifying a group. This may either be a \"group name path\" or the RowString of a group (e.g. either \"group1/design/issues\" or \"@4e3\")\n * The syntax is not ambiguous because ViewStoreIdStrings always start with \"@\" and Group names can never contain \"@\".\n */\n export type ViewGroupSpec = IdString | ViewGroupPath;\n\n /** The name for a view. */\n export type ViewName = string;\n\n /** The name for a Tag. */\n export type TagName = string;\n\n /** The name of an \"owner\". Should come from the authentication system, so it will be guaranteed unique.\n * This name should be chosen by the user rather than their email address.\n */\n export type OwnerName = string;\n\n /** The path name of a view group (e.g. \"group1/design/issues\"). Does not include the \"root\" group. */\n export type ViewGroupPath = string;\n\n /** The name for a view group. */\n export type ViewGroupName = string;\n\n /** The name for a view group. */\n export type ClassFullName = string;\n\n /** Determine if a string is an Id of an entry in a ViewStore (base-36 integer with a leading \"@\") */\n export const isViewStoreId = (id?: ViewIdString) => true === id?.startsWith(\"@\");\n\n /** Parameters for querying for views in a ViewStore. */\n export interface QueryParams {\n /** a list of classFullNames to accept. If not present, all classes are returned. */\n readonly classNames?: ClassFullName[];\n /** Optional \"LIMIT\" clause to limit the number of views returned. */\n readonly limit?: number;\n /** Optional \"OFFSET\" clause. Only valid if Limit is also present. */\n readonly offset?: number;\n /** A string to filter view names. May include wildcards if the `nameCompare` uses LIKE or GLOB (see SQLite documentation for LIKE and GLOB). */\n readonly nameSearch?: string;\n /** The comparison operator for `nameSearch`. Default is `=` */\n readonly nameCompare?: \"GLOB\" | \"LIKE\" | \"NOT GLOB\" | \"NOT LIKE\" | \"=\" | \"<\" | \">\";\n /* the Id of the view group to query. If not present, the root group is used. There is no way to query for views from multiple view groups in one request. */\n readonly group?: IdString;\n /** A list of tags to filter views. If present, only views that have one or more of the tags will be returned. */\n readonly tags?: TagName[];\n /* The name of an owner for private views. If present, private views owned by the owner will also be returned. Shared views are always returned. */\n readonly owner?: OwnerName;\n }\n\n /** Parameters for specifying a Query to select Categories or Models. */\n export interface SelectorQuery {\n /**\n * The full ClassName from which to select. If this SelectorQuery is for Categories, this must be or derive from \"BisCore:Category\".\n * If this SelectorQuery is for Models, this must be or derive from \"BisCore:Model\".\n */\n from: ClassFullName;\n /** If true, only return instances of `from`. Otherwise, return instances of `from` and any subclasses of `from`. */\n only?: boolean;\n /**\n * filter for query. If present, only instances of `from` that satisfy the filter will be returned.\n * If not supplied, all instances of `from` are returned.\n * @note\n * This value is used into the ECQuery:`SELECT ECInstanceId FROM ${query.from} WHERE ${query.where}`.\n */\n where?: string;\n /** List of Model or Category ids to add to the query results.\n * @note This is only valid if there is a `where` clause. Otherwise all instances of `from` will be returned so there is no value in adding ids.\n */\n adds?: Id64Array | CompressedId64Set;\n /** List of Model or Category Ids to remove from the query results. */\n removes?: Id64Array | CompressedId64Set;\n }\n\n /** A Model or Category selector may either be a query or a list of Ids. */\n export type SelectorProps = { query: SelectorQuery, ids?: never } | { query?: never, ids: Id64Array | CompressedId64Set };\n\n /** Information about a View in a ViewStore. */\n export interface ViewInfo {\n /** The Id of the view. */\n id: IdString;\n /** The name of the view. */\n name?: ViewName;\n /** The name of the owner of the view. */\n owner?: OwnerName;\n /** The className of the view. */\n className: ClassFullName;\n /** The Id of the view group containing the view. */\n groupId: IdString;\n /** If true, the view is private (unshared) and will only be returned by queries that specify the owner's name. */\n isPrivate: boolean;\n /** The Id of a ModelSelector, if the view has one. */\n modelSelectorId?: IdString;\n /** The Id of the CategorySelector for this view. */\n categorySelectorId: IdString;\n /** The Id of a DisplayStyle for the view. */\n displayStyleId: IdString;\n /** a list of tags for the view. */\n tags?: TagName[];\n }\n\n /** Information about a ViewGroup in a ViewStore. */\n export interface ViewGroupInfo {\n /** The Id of this view group. */\n id: IdString;\n /** The name of this view group. */\n name: ViewGroupName;\n /** The Id of the parent of this view group. If undefined, this is the root group. */\n parent?: IdString;\n /** The Id of the default view for this view group. */\n defaultView?: IdString;\n }\n\n /** Arguments for adding a new view to a ViewStore. */\n export interface AddViewArgs {\n /** the properties of the ViewDefinition for the new view. */\n readonly viewDefinition: ViewDefinitionProps;\n\n /**\n * The properties of a category selector for the new view.\n * @note This value is only used, and should only be present if `viewDefinition.categorySelectorId` **not** a valid\n * `IdString`. In that case, a new category selector will be created with these properties and its Id will be used.\n * Otherwise, the categorySelectorId from the ViewDefinition is used. If it does not represent a valid category\n * selector, an error is thrown.\n */\n readonly categorySelectorProps?: CategorySelectorProps;\n\n /** The properties of a model selector for the new view.\n * @note This value is only used, and should only be present if `viewDefinition.modelSelectorId` **not** a valid\n * `IdString`. In that case, a new model selector will be created with these properties and its Id will be used.\n * Otherwise, the modelSelectorId from the ViewDefinition is used. If it does not represent a valid model selector,\n * an error is thrown.\n */\n readonly modelSelectorProps?: ModelSelectorProps;\n\n /** The properties of a display style for the new view.\n * @note This value is only used, and should only be present if `viewDefinition.displayStyleId` **not** a valid\n * `IdString`. In that case, a new display style will be created with these properties and its Id will be used.\n * Otherwise, the displayStyleId from the ViewDefinition is used. If it does not represent a valid display style, an\n * error is thrown.\n */\n readonly displayStyleProps?: DisplayStyleProps;\n\n /* the owner of the view. Must be present if isPrivate is true. */\n readonly owner?: OwnerName;\n\n /* the Id of the view group for the view. If not present, the view is added to the root group. */\n readonly group?: IdString;\n\n /* if true, the view is private (unshared). */\n readonly isPrivate?: boolean;\n\n /* an optional list of tags for the view. */\n readonly tags?: TagName[];\n\n /** optional thumbnail for the view. */\n readonly thumbnail?: ThumbnailProps;\n }\n\n /** Argument for finding a category selector, model selector, display style, or timeline by name or Id. */\n export type NameOrId = { name: string, id?: never } | { id: IdString, name?: never };\n\n /** Bindings for parameterized values in where clause of SelectorQuery\n * @see[[ECSqlStatement.bindValues]]\n */\n export interface QueryBindings {\n bindings?: any[] | object;\n }\n\n /**\n * Methods for reading from a ViewStore via Rpc from a frontend via `IModelConnection.views.viewsStoreReader`. These\n * methods use the *current* ViewStore for the iModel, and attempt to load the default ViewStore if no ViewStore is\n * currently loaded. They will throw exceptions if the request cannot be fulfilled.\n * @note The user's accessToken is validated against the ViewStore for every request. For each of these methods, the\n * user only needs read permission to the ViewStore.\n */\n export interface Reader {\n /** Find all views owned by the supplied owner name. */\n findViewsByOwner(args: { owner: OwnerName }): Promise<ViewInfo[]>;\n\n /** Get a category selector by Id. Throws if it does not exist. */\n getCategorySelector(args: NameOrId & QueryBindings): Promise<CategorySelectorProps>;\n\n /** Get a display style by Id. Throws if it does not exist. */\n getDisplayStyle(args: NameOrId & { opts?: DisplayStyleLoadProps }): Promise<DisplayStyleProps>;\n\n /** Get a model selector by Id. Throws if it does not exist. */\n getModelSelector(args: NameOrId & QueryBindings): Promise<ModelSelectorProps>;\n\n /** Get a thumbnail for a view. */\n getThumbnail(args: { viewId: IdString }): Promise<ThumbnailProps | undefined>;\n\n /** Get a render timeline by Id. Throws if it does not exist. */\n getTimeline(args: NameOrId): Promise<RenderTimelineProps>;\n\n /** Get a view by name. The name can include the *view group path*, if no `groupId` is supplied. */\n getViewByName(arg: { name: ViewName, groupId?: IdString }): Promise<ViewInfo | undefined>;\n\n /** Get a view definition by viewId. Throws if it does not exist. */\n getViewDefinition(args: { viewId: IdString }): Promise<ViewDefinitionProps>;\n\n /** get the properties of a ViewGroup by id. This will include the defaultViewId, if one exists. */\n getViewGroupInfo(args: { groupId?: IdString }): Promise<ViewGroupInfo | undefined>;\n\n /** Get a list of ViewGroups that are children of the supplied parent. If no parent is supplied, the root group is used.\n * Each entry in the list includes the id and name of the ViewGroup.\n */\n getViewGroups(args: { parent?: ViewGroupSpec }): Promise<{ id: IdString, name: string }[]>;\n\n /** Get the ViewInfo for a view by Id. Returns undefined if the view does not exist. */\n getViewInfo(args: { viewId: IdString }): Promise<ViewInfo | undefined>;\n\n /** Query for a list of ViewInfos for views that match the supplied [[QueryParams]].\n * @note The array will be sorted by name, ascending. To limit the size of the array, supply `limit` and `offset` in the QueryParams.\n */\n queryViews(queryParams: QueryParams): Promise<ViewInfo[]>;\n }\n\n /**\n * Methods for writing to a ViewStore via Rpc from a frontend via `IModelConnection.views.viewsStoreWriter`. These\n * methods use the *current* ViewStore for the iModel, and attempt to load the default ViewStore if no ViewStore is\n * currently loaded. They will throw exceptions if the request cannot be fulfilled.\n * @note The user's accessToken is validated against the ViewStore for every request. For each of these methods, the\n * user must have write permission to the ViewStore.\n */\n export interface Writer {\n /**\n * Add a category selector to a ViewStore.\n * @returns The IdString of the new category selector.\n */\n addCategorySelector(args: { name?: string, selector: SelectorProps, owner?: OwnerName }): Promise<IdString>;\n\n /** Add a display style to a ViewStore.\n * @returns The IdString of the new display style.\n */\n addDisplayStyle(args: { name?: string, className: string, settings: DisplayStyleSettingsProps, owner?: OwnerName }): Promise<IdString>;\n\n /**\n * Add a model selector to a ViewStore.\n * @returns The IdString of the new model selector.\n */\n addModelSelector(args: { name?: string, selector: SelectorProps, owner?: OwnerName }): Promise<IdString>;\n\n /**\n * Add a thumbnail for a view. If the view already has a thumbnail, it is replaced.\n * If a view is deleted, its thumbnail is also deleted.\n * @note The thumbnail must be a valid image in PNG or JPEG format.\n */\n addOrReplaceThumbnail(args: { viewId: IdString, thumbnail: ThumbnailProps }): Promise<void>;\n\n /** Add tags to a view. If the view already has tags, the new tags are appended to the existing tags. */\n addTagsToView(args: { viewId: IdString, tags: TagName[] }): Promise<void>;\n\n /** Add a render timeline to a ViewStore.\n * @returns The IdString of the new timeline.\n */\n addTimeline(args: { name?: string, timeline: RenderSchedule.ScriptProps, owner?: OwnerName }): Promise<IdString>;\n\n /** Add a view to a ViewStore. If no group is supplied, the new view is added to the root view group.\n * @returns The IdString of the new view\n */\n addView(args: AddViewArgs): Promise<IdString>;\n\n /** Add a view group to a ViewStore. If no parent is supplied, the new group is added to the root view group.\n * @returns the IdString of new view group\n */\n addViewGroup(args: { name: string, parentId?: IdString, owner?: OwnerName }): Promise<IdString>;\n\n /** Change the default view for a view group. If no group is supplied, this changes the default view for the root view group. */\n changeDefaultViewId(args: { defaultView: IdString, group?: ViewGroupSpec }): Promise<void>;\n\n /** Delete the thumbnail for a view. */\n deleteThumbnail(args: { viewId: IdString }): Promise<void>;\n\n /**\n * Delete a view from a ViewStore. If this is the default view for a view group, it cannot be deleted until another\n * view is set as the default.\n * @note If this view references a category selector, model selector, or display style that is not referenced by any\n * other view, *and do not have a name*, they will each also be deleted. If the view has a thumbnail, it is also\n * deleted.\n */\n deleteView(args: { viewId: IdString }): Promise<void>;\n\n /** Delete a view group from a ViewStore. This will also delete all views in the group. */\n deleteViewGroup(args: { name: ViewGroupSpec }): Promise<void>;\n\n /** Delete a display style from a ViewStore. If the display style is referenced by any view, it cannot be deleted\n * and an exception will be thrown.\n */\n deleteDisplayStyle(args: { id: IdString }): Promise<void>;\n\n /** Delete a model selector from a ViewStore. If the model selector is referenced by any view, it cannot be deleted\n * and an exception will be thrown. */\n deleteModelSelector(args: { id: IdString }): Promise<void>;\n\n /** Delete a category selector from a ViewStore. If the category selector is referenced by any view, it cannot be\n * deleted and an exception will be thrown.\n */\n deleteCategorySelector(args: { id: IdString }): Promise<void>;\n\n /** Delete a render timeline from a ViewStore. */\n deleteTimeline(args: { id: IdString }): Promise<void>;\n\n /** Delete a tag. This removes it from all views where it was used. */\n deleteTag(args: { name: TagName }): Promise<void>;\n\n /** remove a tag from a view. */\n removeTagFromView(args: { viewId: IdString, tag: TagName }): Promise<void>;\n\n /** Update the properties of a category selector. */\n updateCategorySelector(args: NameOrId & { selector: SelectorProps }): Promise<void>;\n\n /** Update the properties of a display style. */\n updateDisplayStyle(args: NameOrId & { className: string, settings: DisplayStyleSettingsProps }): Promise<void>;\n\n /** Update the properties of a model selector. */\n updateModelSelector(args: NameOrId & { selector: SelectorProps }): Promise<void>;\n\n /** Update the properties of a render timeline. */\n updateTimeline(args: NameOrId & { timeline: RenderSchedule.ScriptProps }): Promise<void>;\n\n /** Update the properties of a view definition. */\n updateViewDefinition(args: { viewId: IdString, viewDefinition: ViewDefinitionProps }): Promise<void>;\n\n /** Change a view from shared to private, or vice versa. If changing to private, the owner must be supplied. */\n updateViewShared(arg: { viewId: IdString, isShared: boolean, owner?: string }): Promise<void>;\n\n /** Set the name of a category selector. */\n renameCategorySelector(args: { id: IdString, name?: string }): Promise<void>;\n\n /** Set the name of a display style. */\n renameDisplayStyle(args: { id: IdString, name?: string }): Promise<void>;\n\n /** Set the name of a model selector. */\n renameModelSelector(args: { id: IdString, name?: string }): Promise<void>;\n\n /** Set the name of a render timeline. */\n renameTimeline(args: { id: IdString, name?: string }): Promise<void>;\n\n /** Set the name of a view. */\n renameView(args: { viewId: IdString, name: string }): Promise<void>;\n\n /** Set the name of a view group. */\n renameViewGroup(args: { groupId: IdString, name: string }): Promise<void>;\n\n /** rename an existing tag. */\n renameTag(args: { oldName: TagName, newName: TagName }): Promise<void>;\n }\n}\n"]}
@@ -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;IACvC;;;OAGG;IACa,qBAAqB,CAAU;IAE/C,YAAoB,gBAAyB;QAC3C,IAAI,CAAC,qBAAqB,GAAG,gBAAgB,CAAC;IAChD,CAAC;IAEO,MAAM,CAAC,SAAS,GAAG,IAAI,4BAA4B,CAAC,IAAI,CAAC,CAAC;IAC1D,MAAM,CAAC,OAAO,GAAG,IAAI,4BAA4B,CAAC,KAAK,CAAC,CAAC;IAEjE,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;;AA3BH,oEA4BC","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,MAAa,4BAA4B;IACvC;;;OAGG;IACa,qBAAqB,CAAU;IAE/C,YAAoB,gBAAyB;QAC3C,IAAI,CAAC,qBAAqB,GAAG,gBAAgB,CAAC;IAChD,CAAC;IAEO,MAAM,CAAC,SAAS,GAAG,IAAI,4BAA4B,CAAC,IAAI,CAAC,CAAC;IAC1D,MAAM,CAAC,OAAO,GAAG,IAAI,4BAA4B,CAAC,KAAK,CAAC,CAAC;IAEjE,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;;AA3BH,oEA4BC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module DisplayStyles\n */\n\n/** JSON representation of a [[WhiteOnWhiteReversalSettings]].\n * @public\n * @extensions\n */\nexport interface WhiteOnWhiteReversalProps {\n /** Default: false.\n * @see [[WhiteOnWhiteReversalSettings.ignoreBackgroundColor]].\n */\n ignoreBackgroundColor?: boolean;\n}\n\n/** As part of a [[DisplayStyleSettings]], controls how white-on-white reversal is applied to make white geometry more\n * visible in the view.\n * By default, pure white geometry is displayed as black instead if the [[DisplayStyleSettings.backgroundColor]] is also pure white.\n * These settings are only applied if the display style's [[ViewFlags.whiteOnWhiteReversal]] flag is enabled.\n * @see [[DisplayStyleSettings.whiteOnWhiteReversal]] to change these settings for a display style.\n * @public\n */\nexport class WhiteOnWhiteReversalSettings {\n /** If true, white-on-white reversal ignores the display style's background color; otherwise, white-on-white reversal applies only\n * if the background color is pure white.\n * @see [[DisplayStyleSettings.backgroundColor]] to change the background color.\n */\n public readonly ignoreBackgroundColor: boolean;\n\n private constructor(ignoreBackground: boolean) {\n this.ignoreBackgroundColor = ignoreBackground;\n }\n\n private static _noIgnore = new WhiteOnWhiteReversalSettings(true);\n private static _ignore = new WhiteOnWhiteReversalSettings(false);\n\n /** Create from JSON representation. */\n public static fromJSON(props?: WhiteOnWhiteReversalProps): WhiteOnWhiteReversalSettings {\n return props?.ignoreBackgroundColor ? this._noIgnore : this._ignore;\n }\n\n /** Convert to JSON representation. The JSON representation is `undefined` if these settings match the defaults. */\n public toJSON(): WhiteOnWhiteReversalProps | undefined {\n return this.ignoreBackgroundColor ? { ignoreBackgroundColor: true } : undefined;\n }\n\n /** Returns true if `this` is equivalent to `other`. */\n public equals(other: WhiteOnWhiteReversalSettings): boolean {\n return this === other;\n }\n}\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\nimport { TextStyleSettingsProps } from \"./TextStyle\";\r\n\r\n/** Describes how to compute the \"anchor point\" for a [[TextAnnotation]].\r\n * The anchor point is a point on or inside of the 2d bounding box enclosing the contents of the annotation's [[TextBlock]].\r\n * The annotation can be rotated and translated relative to the anchor point. The anchor point also serves as the snap point\r\n * when [AccuSnap]($frontend) is set to [SnapMode.Origin]($frontend).\r\n * [[TextAnnotation.computeTransform]] will align the anchor point with (0, 0).\r\n * @see [[TextAnnotation]] for a description of how the anchor point is computed.\r\n * @beta\r\n */\r\nexport interface TextAnnotationAnchor {\r\n /**\r\n * The vertical alignment of the anchor point.\r\n * \"top\" aligns the anchor point with the top of the text's bounding box.\r\n * \"middle\" aligns the anchor point with the middle of the text's bounding box.\r\n * \"bottom\" aligns the anchor point with the bottom of the text's bounding box.\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 anchor point with left side of the text's bounding box.\r\n * \"center\" aligns the anchor point with center of the text with's bounding box.\r\n * \"right\" aligns the anchor point with right side of the text's bounding box.\r\n */\r\n horizontal: \"left\" | \"center\" | \"right\";\r\n}\r\n\r\n/**\r\n * Describes how to attach a [[TextAnnotationLeader]] to the frame around a [[TextBlock]].\r\n * Leader can be attached using one of the three modes:\r\n * - KeyPoint: attach to a point on the frame specified by the given curveIndex and fractional position.\r\n * - TextPoint: attach to a point that is projected on to the frame from the point on a particular line of text specified by [[LeaderTextPointOptions]].\r\n * - Nearest: attach to the point on frame that is nearest to [[TextAnnotationLeader.startPoint]].\r\n * @beta\r\n */\r\nexport type LeaderAttachment =\r\n | { mode: \"KeyPoint\"; curveIndex: number; fraction: number }\r\n | { mode: \"TextPoint\"; position: LeaderTextPointOptions }\r\n | { mode: \"Nearest\" };\r\n\r\n/**\r\n * Specifies the possible positions to attach a leader on the frame around a [[TextBlock]]\r\n * when [[TextAnnotationLeader.attachment.mode]] is set to TextPoint.\r\n * TopLeft : attach to a point projected onto the frame from the point on the left side of the first line of text.\r\n * TopRight : attach to a point projected onto the frame from the point on the right side of the first line of text.\r\n * BottomLeft : attach to a point projected onto the frame from the point on the left side of the last line of text.\r\n * BottomRight : attach to a point projected onto the frame from the point on the right side of the last line of text.\r\n * @beta\r\n */\r\nexport type LeaderTextPointOptions = \"TopLeft\" | \"TopRight\" | \"BottomLeft\" | \"BottomRight\"\r\n\r\n/**\r\n * A line that connects a [[TextAnnotation]] to a point in space relative to another element in the iModel.\r\n * A leader is always attached to the frame around the annotation's [[TextBlock]].\r\n * If the frame is not visible, the leader attaches to an invisible rectangular frame around the text block.\r\n * @see [[TextAnnotation.leaders]] for the leaders associated with an annotation.\r\n * @see [[TextStyleSettings.leader]] and [[styleOverrides]] to customize the appearance of leaders.\r\n * @beta\r\n*/\r\nexport interface TextAnnotationLeader {\r\n /** The point where the leader starts.\r\n * This is the point on another element where the leader points to */\r\n startPoint: Point3d;\r\n /** Describes how to attach the leader to the frame around [[textBlock]].*/\r\n attachment: LeaderAttachment;\r\n /** Optional intermediate points that the leader should pass through.\r\n * If not specified, the leader will be a straight line from startPoint to the point on the frame.\r\n * For now, intermediate points are a set of points which create additional LineSegments in the leader, but there could be intermediate shapes instead of straight LineSegments in future*/\r\n intermediatePoints?: Point3d[];\r\n /** Optional style overrides for the leader. If not specified, the leader will use the style defined by [[TextBlock.styleName]] as it is.\r\n * If specified, these overrides will be applied to the style.\r\n */\r\n styleOverrides?: TextStyleSettingsProps;\r\n}\r\n/**\r\n * JSON representation of a [[TextAnnotationLeader]].\r\n * @beta\r\n */\r\nexport interface TextAnnotationLeaderProps {\r\n /** See [[TextAnnotationLeader.startPoint]]. */\r\n startPoint: XYZProps;\r\n /** See [[TextAnnotationLeader.attachment]]. */\r\n attachment: LeaderAttachment;\r\n /** See [[TextAnnotationLeader.intermediatePoints]]. Default: no intermediate points. */\r\n intermediatePoints?: XYZProps[];\r\n /** See [[TextAnnotationLeader.styleOverrides]]. Default: no style overrides. */\r\n styleOverrides?: TextStyleSettingsProps;\r\n}\r\n\r\n/**\r\n * JSON representation of a [[TextAnnotation]].\r\n * @beta\r\n */\r\nexport interface TextAnnotationProps {\r\n /** See [[TextAnnotation.offset]]. Default: [0, 0, 0]. */\r\n offset?: 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 /** See [[TextAnnotation.leader]]. Default: an empty leader array */\r\n leaders?: TextAnnotationLeaderProps[];\r\n}\r\n\r\n/** Arguments supplied to [[TextAnnotation.create]].\r\n * @beta\r\n */\r\nexport interface TextAnnotationCreateArgs {\r\n /** See [[TextAnnotation.offset]]. Default: (0, 0, 0). */\r\n offset?: 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 /** See [[TextAnnotation.leader]]. Default: an empty leader array */\r\n leaders?: TextAnnotationLeader[];\r\n}\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 single TextAnnotation from which their geometric representation is generated.\r\n * Other types of elements may store multiple TextAnnotations, positioned relative to one another.\r\n * The annotation's position and orientation relative to the host element's [Placement]($common) is determined as follows:\r\n * - First, a bounding box is computed enclosing the contents of the [[textBlock].\r\n * - Then, an \"anchor point\" is computed based on the bounding box and the [[anchor]] property. The anchor point can be at one of the four corners of the box, in the middle of one of its four\r\n * edges, or in the center of the box.\r\n * - The [[orientation]] is applied to rotate the box around the anchor point.\r\n * - Finally, the [[offset]] is added to the anchor point to apply translation.\r\n * @see [appendTextAnnotationGeometry]($backend) to construct the geometry and append it to an [[ElementGeometry.Builder]].\r\n * @beta\r\n */\r\nexport class TextAnnotation {\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 /** The formatted document. */\r\n public textBlock: TextBlock;\r\n /** Describes how to compute the [[textBlock]]'s anchor point. */\r\n public anchor: TextAnnotationAnchor;\r\n /** An offset applied to the anchor point that can be used to position annotations within the same geometry stream relative to one another. */\r\n public offset: Point3d;\r\n /** The leaders of the text annotation. */\r\n public leaders?: TextAnnotationLeader[];\r\n\r\n private constructor(offset: Point3d, angles: YawPitchRollAngles, textBlock: TextBlock, anchor: TextAnnotationAnchor, leaders?: TextAnnotationLeader[]) {\r\n this.offset = offset;\r\n this.orientation = angles;\r\n this.textBlock = textBlock;\r\n this.anchor = anchor;\r\n this.leaders = leaders;\r\n }\r\n\r\n /** Creates a new TextAnnotation. */\r\n public static create(args?: TextAnnotationCreateArgs): TextAnnotation {\r\n const offset = args?.offset ?? new Point3d();\r\n const angles = args?.orientation ?? new YawPitchRollAngles();\r\n const textBlock = args?.textBlock ?? TextBlock.create();\r\n const anchor = args?.anchor ?? { vertical: \"top\", horizontal: \"left\" };\r\n const leaders = args?.leaders ?? undefined;\r\n return new TextAnnotation(offset, angles, textBlock, anchor, leaders);\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): TextAnnotation {\r\n return TextAnnotation.create({\r\n offset: props?.offset ? Point3d.fromJSON(props.offset) : 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 leaders: props?.leaders ? props.leaders.map((leader) => ({\r\n startPoint: Point3d.fromJSON(leader.startPoint),\r\n attachment: leader.attachment,\r\n styleOverrides: leader.styleOverrides ?? undefined,\r\n intermediatePoints: leader.intermediatePoints ? leader.intermediatePoints.map((point) => Point3d.fromJSON(point)) : undefined,\r\n })) : 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 ID 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.offset.isZero) {\r\n props.offset = this.offset.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 props.leaders = this.leaders?.map((leader) => ({\r\n startPoint: leader.startPoint.toJSON(),\r\n attachment: leader.attachment,\r\n styleOverrides: leader.styleOverrides ?? undefined,\r\n intermediatePoints: leader.intermediatePoints ? leader.intermediatePoints.map((point) => point.toJSON()) : undefined,\r\n })) ?? undefined;\r\n\r\n return props;\r\n }\r\n\r\n /** Compute the transform that positions and orients this annotation relative to its anchor point, based on the [[textBlock]]'s computed bounding box.\r\n * The anchor point is computed as specified by this annotation's [[anchor]] setting. For example, if the text block is anchored\r\n * at the bottom left, then the transform will be relative to the bottom-left corner of `textBlockExtents`.\r\n * The text block will be rotated around the fixed anchor point according to [[orientation]], then translated by [[offset]].\r\n * The anchor point will coincide with (0, 0, 0) unless an [[offset]] is present.\r\n * If a scale factor is specified, the transform will also scale the annotation by that factor. Usually, this should come from the [[Drawing]] containing the annotation.\r\n * @param boundingBox A box fully containing the [[textBlock]]. This range should include the margins.\r\n * @param scaleFactor A factor by which to scale the annotation. Default: 1 (no scaling).\r\n * @see [[computeAnchorPoint]] to compute the transform's anchor point.\r\n * @see [computeLayoutTextBlockResult]($backend) to lay out a `TextBlock`.\r\n */\r\n public computeTransform(boundingBox: Range2d, scaleFactor: number = 1): Transform {\r\n const anchorPt = this.computeAnchorPoint(boundingBox);\r\n const matrix = this.orientation.toMatrix3d();\r\n\r\n const transform = Transform.createIdentity();\r\n const translation = Transform.createTranslation(this.offset.minus(anchorPt));\r\n const scaleTransform = Transform.createScaleAboutPoint(anchorPt, scaleFactor);\r\n const rotation = Transform.createFixedPointAndMatrix(anchorPt, matrix);\r\n transform.multiplyTransformTransform(translation, transform);\r\n transform.multiplyTransformTransform(scaleTransform, transform);\r\n transform.multiplyTransformTransform(rotation, transform);\r\n return transform;\r\n }\r\n\r\n /** Compute the anchor point of this annotation as specified by [[anchor]].\r\n * @param boundingBox A box fully containing the [[textBlock]].\r\n * @see [[computeTransform]] to compute the transform relative to the anchor point.\r\n */\r\n public computeAnchorPoint(boundingBox: Range2d): Point3d {\r\n let x = boundingBox.low.x;\r\n let y = boundingBox.high.y;\r\n\r\n switch (this.anchor.horizontal) {\r\n case \"center\":\r\n x += boundingBox.xLength() / 2;\r\n break;\r\n case \"right\":\r\n x += boundingBox.xLength();\r\n break;\r\n }\r\n\r\n switch (this.anchor.vertical) {\r\n case \"middle\":\r\n y -= boundingBox.yLength() / 2;\r\n break;\r\n case \"bottom\":\r\n y -= boundingBox.yLength();\r\n break;\r\n }\r\n\r\n return new Point3d(x, y, 0);\r\n }\r\n\r\n /** Returns true if the leaders of this annotation are equal to the leaders of `other`. */\r\n private areLeadersEqual(leadersA?: TextAnnotationLeader[], leadersB?: TextAnnotationLeader[]): boolean {\r\n if (leadersA === leadersB) return true;\r\n if (!leadersA || !leadersB || leadersA.length !== leadersB.length) return false;\r\n\r\n for (let i = 0; i < leadersA.length; ++i) {\r\n const a = leadersA[i];\r\n const b = leadersB[i];\r\n\r\n if (!a.startPoint.isAlmostEqual(b.startPoint)) return false;\r\n if (JSON.stringify(a.attachment) !== JSON.stringify(b.attachment)) return false;\r\n if (JSON.stringify(a.styleOverrides) !== JSON.stringify(b.styleOverrides)) return false;\r\n\r\n const pointsA = a.intermediatePoints ?? [];\r\n const pointsB = b.intermediatePoints ?? [];\r\n if (pointsA.length !== pointsB.length) return false;\r\n for (let j = 0; j < pointsA.length; ++j) {\r\n if (!pointsA[j].isAlmostEqual(pointsB[j])) return false;\r\n }\r\n }\r\n return true;\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 if (this.anchor.horizontal !== other.anchor.horizontal ||\r\n this.anchor.vertical !== other.anchor.vertical ||\r\n !this.orientation.isAlmostEqual(other.orientation) ||\r\n !this.offset.isAlmostEqual(other.offset) ||\r\n !this.textBlock.equals(other.textBlock))\r\n return false;\r\n\r\n return this.areLeadersEqual(this.leaders, other.leaders);\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":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Annotation\n */\n\nimport { Point3d, Range2d, Transform, XYZProps, YawPitchRollAngles, YawPitchRollProps } from \"@itwin/core-geometry\";\nimport { TextBlock, TextBlockProps } from \"./TextBlock\";\nimport { TextStyleSettingsProps } from \"./TextStyle\";\n\n/** Describes how to compute the \"anchor point\" for a [[TextAnnotation]].\n * The anchor point is a point on or inside of the 2d bounding box enclosing the contents of the annotation's [[TextBlock]].\n * The annotation can be rotated and translated relative to the anchor point. The anchor point also serves as the snap point\n * when [AccuSnap]($frontend) is set to [SnapMode.Origin]($frontend).\n * [[TextAnnotation.computeTransform]] will align the anchor point with (0, 0).\n * @see [[TextAnnotation]] for a description of how the anchor point is computed.\n * @beta\n */\nexport interface TextAnnotationAnchor {\n /**\n * The vertical alignment of the anchor point.\n * \"top\" aligns the anchor point with the top of the text's bounding box.\n * \"middle\" aligns the anchor point with the middle of the text's bounding box.\n * \"bottom\" aligns the anchor point with the bottom of the text's bounding box.\n */\n vertical: \"top\" | \"middle\" | \"bottom\";\n\n /**\n * The horizontal alignment of the anchor point.\n * \"left\" aligns the anchor point with left side of the text's bounding box.\n * \"center\" aligns the anchor point with center of the text with's bounding box.\n * \"right\" aligns the anchor point with right side of the text's bounding box.\n */\n horizontal: \"left\" | \"center\" | \"right\";\n}\n\n/**\n * Describes how to attach a [[TextAnnotationLeader]] to the frame around a [[TextBlock]].\n * Leader can be attached using one of the three modes:\n * - KeyPoint: attach to a point on the frame specified by the given curveIndex and fractional position.\n * - TextPoint: attach to a point that is projected on to the frame from the point on a particular line of text specified by [[LeaderTextPointOptions]].\n * - Nearest: attach to the point on frame that is nearest to [[TextAnnotationLeader.startPoint]].\n * @beta\n */\nexport type LeaderAttachment =\n | { mode: \"KeyPoint\"; curveIndex: number; fraction: number }\n | { mode: \"TextPoint\"; position: LeaderTextPointOptions }\n | { mode: \"Nearest\" };\n\n/**\n * Specifies the possible positions to attach a leader on the frame around a [[TextBlock]]\n * when [[TextAnnotationLeader.attachment.mode]] is set to TextPoint.\n * TopLeft : attach to a point projected onto the frame from the point on the left side of the first line of text.\n * TopRight : attach to a point projected onto the frame from the point on the right side of the first line of text.\n * BottomLeft : attach to a point projected onto the frame from the point on the left side of the last line of text.\n * BottomRight : attach to a point projected onto the frame from the point on the right side of the last line of text.\n * @beta\n */\nexport type LeaderTextPointOptions = \"TopLeft\" | \"TopRight\" | \"BottomLeft\" | \"BottomRight\"\n\n/**\n * A line that connects a [[TextAnnotation]] to a point in space relative to another element in the iModel.\n * A leader is always attached to the frame around the annotation's [[TextBlock]].\n * If the frame is not visible, the leader attaches to an invisible rectangular frame around the text block.\n * @see [[TextAnnotation.leaders]] for the leaders associated with an annotation.\n * @see [[TextStyleSettings.leader]] and [[styleOverrides]] to customize the appearance of leaders.\n * @beta\n*/\nexport interface TextAnnotationLeader {\n /** The point where the leader starts.\n * This is the point on another element where the leader points to */\n startPoint: Point3d;\n /** Describes how to attach the leader to the frame around [[textBlock]].*/\n attachment: LeaderAttachment;\n /** Optional intermediate points that the leader should pass through.\n * If not specified, the leader will be a straight line from startPoint to the point on the frame.\n * For now, intermediate points are a set of points which create additional LineSegments in the leader, but there could be intermediate shapes instead of straight LineSegments in future*/\n intermediatePoints?: Point3d[];\n /** Optional style overrides for the leader. If not specified, the leader will use the style defined by [[TextBlock.styleName]] as it is.\n * If specified, these overrides will be applied to the style.\n */\n styleOverrides?: TextStyleSettingsProps;\n}\n/**\n * JSON representation of a [[TextAnnotationLeader]].\n * @beta\n */\nexport interface TextAnnotationLeaderProps {\n /** See [[TextAnnotationLeader.startPoint]]. */\n startPoint: XYZProps;\n /** See [[TextAnnotationLeader.attachment]]. */\n attachment: LeaderAttachment;\n /** See [[TextAnnotationLeader.intermediatePoints]]. Default: no intermediate points. */\n intermediatePoints?: XYZProps[];\n /** See [[TextAnnotationLeader.styleOverrides]]. Default: no style overrides. */\n styleOverrides?: TextStyleSettingsProps;\n}\n\n/**\n * JSON representation of a [[TextAnnotation]].\n * @beta\n */\nexport interface TextAnnotationProps {\n /** See [[TextAnnotation.offset]]. Default: [0, 0, 0]. */\n offset?: XYZProps;\n /** See [[TextAnnotation.orientation]]. Default: no rotation. */\n orientation?: YawPitchRollProps;\n /** See [[TextAnnotation.textBlock]]. Default: an empty text block. */\n textBlock?: TextBlockProps;\n /** See [[TextAnnotation.anchor]]. Default: top-left. */\n anchor?: TextAnnotationAnchor;\n /** See [[TextAnnotation.leader]]. Default: an empty leader array */\n leaders?: TextAnnotationLeaderProps[];\n}\n\n/** Arguments supplied to [[TextAnnotation.create]].\n * @beta\n */\nexport interface TextAnnotationCreateArgs {\n /** See [[TextAnnotation.offset]]. Default: (0, 0, 0). */\n offset?: Point3d;\n /** See [[TextAnnotation.orientation]]. Default: no rotation. */\n orientation?: YawPitchRollAngles;\n /** See [[TextAnnotation.textBlock]]. Default: an empty text block. */\n textBlock?: TextBlock;\n /** See [[TextAnnotation.anchor]]. Default: top-left. */\n anchor?: TextAnnotationAnchor;\n /** See [[TextAnnotation.leader]]. Default: an empty leader array */\n leaders?: TextAnnotationLeader[];\n}\n\n/**\n * Represents a formatted block of text positioned in 2d or 3d space.\n * [TextAnnotation2d]($backend) and [TextAnnotation3d]($backend) elements store a single TextAnnotation from which their geometric representation is generated.\n * Other types of elements may store multiple TextAnnotations, positioned relative to one another.\n * The annotation's position and orientation relative to the host element's [Placement]($common) is determined as follows:\n * - First, a bounding box is computed enclosing the contents of the [[textBlock].\n * - Then, an \"anchor point\" is computed based on the bounding box and the [[anchor]] property. The anchor point can be at one of the four corners of the box, in the middle of one of its four\n * edges, or in the center of the box.\n * - The [[orientation]] is applied to rotate the box around the anchor point.\n * - Finally, the [[offset]] is added to the anchor point to apply translation.\n * @see [appendTextAnnotationGeometry]($backend) to construct the geometry and append it to an [[ElementGeometry.Builder]].\n * @beta\n */\nexport class TextAnnotation {\n /** The rotation of the annotation.\n * @note When defining an annotation for a [TextAnnotation2d]($backend), only the `yaw` component (rotation around the Z axis) is used.\n */\n public orientation: YawPitchRollAngles;\n /** The formatted document. */\n public textBlock: TextBlock;\n /** Describes how to compute the [[textBlock]]'s anchor point. */\n public anchor: TextAnnotationAnchor;\n /** An offset applied to the anchor point that can be used to position annotations within the same geometry stream relative to one another. */\n public offset: Point3d;\n /** The leaders of the text annotation. */\n public leaders?: TextAnnotationLeader[];\n\n private constructor(offset: Point3d, angles: YawPitchRollAngles, textBlock: TextBlock, anchor: TextAnnotationAnchor, leaders?: TextAnnotationLeader[]) {\n this.offset = offset;\n this.orientation = angles;\n this.textBlock = textBlock;\n this.anchor = anchor;\n this.leaders = leaders;\n }\n\n /** Creates a new TextAnnotation. */\n public static create(args?: TextAnnotationCreateArgs): TextAnnotation {\n const offset = args?.offset ?? new Point3d();\n const angles = args?.orientation ?? new YawPitchRollAngles();\n const textBlock = args?.textBlock ?? TextBlock.create();\n const anchor = args?.anchor ?? { vertical: \"top\", horizontal: \"left\" };\n const leaders = args?.leaders ?? undefined;\n return new TextAnnotation(offset, angles, textBlock, anchor, leaders);\n }\n\n /**\n * Creates a new TextAnnotation instance from its JSON representation.\n */\n public static fromJSON(props?: TextAnnotationProps): TextAnnotation {\n return TextAnnotation.create({\n offset: props?.offset ? Point3d.fromJSON(props.offset) : undefined,\n orientation: props?.orientation ? YawPitchRollAngles.fromJSON(props.orientation) : undefined,\n textBlock: props?.textBlock ? TextBlock.create(props.textBlock) : undefined,\n anchor: props?.anchor ? { ...props.anchor } : undefined,\n leaders: props?.leaders ? props.leaders.map((leader) => ({\n startPoint: Point3d.fromJSON(leader.startPoint),\n attachment: leader.attachment,\n styleOverrides: leader.styleOverrides ?? undefined,\n intermediatePoints: leader.intermediatePoints ? leader.intermediatePoints.map((point) => Point3d.fromJSON(point)) : undefined,\n })) : undefined,\n });\n }\n\n /**\n * Converts this annotation to its JSON representation.\n */\n public toJSON(): TextAnnotationProps {\n const props: TextAnnotationProps = {};\n\n // Even if the text block is empty, we want to record its style ID and overrides, e.g.,\n // so the user can pick up where they left off editing it next time.\n props.textBlock = this.textBlock.toJSON();\n\n if (!this.offset.isZero) {\n props.offset = this.offset.toJSON();\n }\n\n if (!this.orientation.isIdentity()) {\n props.orientation = this.orientation.toJSON();\n }\n\n if (this.anchor.vertical !== \"top\" || this.anchor.horizontal !== \"left\") {\n props.anchor = { ...this.anchor };\n }\n\n props.leaders = this.leaders?.map((leader) => ({\n startPoint: leader.startPoint.toJSON(),\n attachment: leader.attachment,\n styleOverrides: leader.styleOverrides ?? undefined,\n intermediatePoints: leader.intermediatePoints ? leader.intermediatePoints.map((point) => point.toJSON()) : undefined,\n })) ?? undefined;\n\n return props;\n }\n\n /** Compute the transform that positions and orients this annotation relative to its anchor point, based on the [[textBlock]]'s computed bounding box.\n * The anchor point is computed as specified by this annotation's [[anchor]] setting. For example, if the text block is anchored\n * at the bottom left, then the transform will be relative to the bottom-left corner of `textBlockExtents`.\n * The text block will be rotated around the fixed anchor point according to [[orientation]], then translated by [[offset]].\n * The anchor point will coincide with (0, 0, 0) unless an [[offset]] is present.\n * If a scale factor is specified, the transform will also scale the annotation by that factor. Usually, this should come from the [[Drawing]] containing the annotation.\n * @param boundingBox A box fully containing the [[textBlock]]. This range should include the margins.\n * @param scaleFactor A factor by which to scale the annotation. Default: 1 (no scaling).\n * @see [[computeAnchorPoint]] to compute the transform's anchor point.\n * @see [computeLayoutTextBlockResult]($backend) to lay out a `TextBlock`.\n */\n public computeTransform(boundingBox: Range2d, scaleFactor: number = 1): Transform {\n const anchorPt = this.computeAnchorPoint(boundingBox);\n const matrix = this.orientation.toMatrix3d();\n\n const transform = Transform.createIdentity();\n const translation = Transform.createTranslation(this.offset.minus(anchorPt));\n const scaleTransform = Transform.createScaleAboutPoint(anchorPt, scaleFactor);\n const rotation = Transform.createFixedPointAndMatrix(anchorPt, matrix);\n transform.multiplyTransformTransform(translation, transform);\n transform.multiplyTransformTransform(scaleTransform, transform);\n transform.multiplyTransformTransform(rotation, transform);\n return transform;\n }\n\n /** Compute the anchor point of this annotation as specified by [[anchor]].\n * @param boundingBox A box fully containing the [[textBlock]].\n * @see [[computeTransform]] to compute the transform relative to the anchor point.\n */\n public computeAnchorPoint(boundingBox: Range2d): Point3d {\n let x = boundingBox.low.x;\n let y = boundingBox.high.y;\n\n switch (this.anchor.horizontal) {\n case \"center\":\n x += boundingBox.xLength() / 2;\n break;\n case \"right\":\n x += boundingBox.xLength();\n break;\n }\n\n switch (this.anchor.vertical) {\n case \"middle\":\n y -= boundingBox.yLength() / 2;\n break;\n case \"bottom\":\n y -= boundingBox.yLength();\n break;\n }\n\n return new Point3d(x, y, 0);\n }\n\n /** Returns true if the leaders of this annotation are equal to the leaders of `other`. */\n private areLeadersEqual(leadersA?: TextAnnotationLeader[], leadersB?: TextAnnotationLeader[]): boolean {\n if (leadersA === leadersB) return true;\n if (!leadersA || !leadersB || leadersA.length !== leadersB.length) return false;\n\n for (let i = 0; i < leadersA.length; ++i) {\n const a = leadersA[i];\n const b = leadersB[i];\n\n if (!a.startPoint.isAlmostEqual(b.startPoint)) return false;\n if (JSON.stringify(a.attachment) !== JSON.stringify(b.attachment)) return false;\n if (JSON.stringify(a.styleOverrides) !== JSON.stringify(b.styleOverrides)) return false;\n\n const pointsA = a.intermediatePoints ?? [];\n const pointsB = b.intermediatePoints ?? [];\n if (pointsA.length !== pointsB.length) return false;\n for (let j = 0; j < pointsA.length; ++j) {\n if (!pointsA[j].isAlmostEqual(pointsB[j])) return false;\n }\n }\n return true;\n }\n\n /** Returns true if this annotation is logically equivalent to `other`. */\n public equals(other: TextAnnotation): boolean {\n if (this.anchor.horizontal !== other.anchor.horizontal ||\n this.anchor.vertical !== other.anchor.vertical ||\n !this.orientation.isAlmostEqual(other.orientation) ||\n !this.offset.isAlmostEqual(other.offset) ||\n !this.textBlock.equals(other.textBlock))\n return false;\n\n return this.areLeadersEqual(this.leaders, other.leaders);\n\n }\n}"]}
@@ -1,8 +1,8 @@
1
1
  /** @packageDocumentation
2
2
  * @module Annotation
3
3
  */
4
- import { Id64String } from "@itwin/core-bentley";
5
- import { TextStyleSettingsProps } from "./TextStyle";
4
+ import { ListMarker, TextStyleSettingsProps } from "./TextStyle";
5
+ import { FieldFormatOptions, FieldPropertyHost, FieldPropertyPath } from "./TextField";
6
6
  /** Options supplied to [[TextBlockComponent.clearStyleOverrides]] to control how the style overrides are cleared on the component and its child components.
7
7
  * @beta
8
8
  */
@@ -41,9 +41,23 @@ export interface TextBlockStringifyOptions {
41
41
  * Default: "undefined" - use "\t".
42
42
  */
43
43
  tabsAsSpaces?: number;
44
+ /** A string to insert in between the list marker and the list item.
45
+ * Default: " " - a single space.
46
+ */
47
+ listMarkerBreak?: string;
44
48
  }
45
- /** Abstract representation of any of the building blocks that make up a [[TextBlock]] document - namely [[Run]]s, [[Paragraph]]s, and [[TextBlock]] itself.
46
- * The [[TextBlock]] can specify an [AnnotationTextStyle]($backend) that formats its contents. Each component can specify an optional [[styleOverrides]] to customize that formatting.
49
+ /**
50
+ * Context information that may be useful when converting a [[TextBlock]] to a string.
51
+ * @beta
52
+ */
53
+ export interface TextBlockStringifyContext {
54
+ /** The current depth of the text block in the document structure. */
55
+ depth: number;
56
+ }
57
+ /**
58
+ * Abstract representation of any of the building blocks that make up a [[TextBlock]] document - namely [[Run]]s and [[StructuralTextBlockComponent]]s.
59
+ * The [[TextBlock]] can specify an [AnnotationTextStyle]($backend) that formats its contents.
60
+ * Each component can specify an optional [[styleOverrides]] to customize that formatting.
47
61
  * @beta
48
62
  */
49
63
  export declare abstract class TextBlockComponent {
@@ -63,7 +77,9 @@ export declare abstract class TextBlockComponent {
63
77
  /** Create a deep copy of this component. */
64
78
  abstract clone(): TextBlockComponent;
65
79
  /** Compute a string representation of the contents of this component and all of its sub-components. */
66
- abstract stringify(options?: TextBlockStringifyOptions): string;
80
+ abstract stringify(options?: TextBlockStringifyOptions, context?: TextBlockStringifyContext): string;
81
+ /** Returns true if this component has no content or children. */
82
+ abstract get isEmpty(): boolean;
67
83
  /**
68
84
  * Returns true if the string representation of this component consists only of whitespace characters.
69
85
  * Useful for checking if the component is visually empty (producing no graphics) or contains only spaces, tabs, or line breaks.
@@ -90,7 +106,7 @@ export type RunProps = TextRunProps | FractionRunProps | TabRunProps | LineBreak
90
106
  */
91
107
  export declare namespace Run {
92
108
  /** Create a run from its JSON representation.
93
- * @see [[TextRun.create]], [[FractionRun.create]], and [[LineBreakRun.create]] to create a run directly.
109
+ * @see [[TextRun.create]], [[FractionRun.create]], [[FieldRun.create]], [[TabRun.create]], and [[LineBreakRun.create]] to create a run directly.
94
110
  */
95
111
  function fromJSON(props: RunProps): Run;
96
112
  }
@@ -129,6 +145,7 @@ export declare class TextRun extends TextBlockComponent {
129
145
  clone(): TextRun;
130
146
  toJSON(): TextRunProps;
131
147
  static create(props?: Omit<TextRunProps, "type">): TextRun;
148
+ get isEmpty(): boolean;
132
149
  /** Simply returns [[content]]. */
133
150
  stringify(): string;
134
151
  equals(other: TextBlockComponent): boolean;
@@ -159,6 +176,7 @@ export declare class FractionRun extends TextBlockComponent {
159
176
  toJSON(): FractionRunProps;
160
177
  clone(): FractionRun;
161
178
  static create(props?: Omit<FractionRunProps, "type">): FractionRun;
179
+ get isEmpty(): boolean;
162
180
  /** Formats the fraction as a string with the [[numerator]] and [[denominator]] separated by [[TextBlockStringifyOptions.fractionSeparator]]. */
163
181
  stringify(options?: TextBlockStringifyOptions): string;
164
182
  equals(other: TextBlockComponent): boolean;
@@ -178,8 +196,9 @@ export declare class LineBreakRun extends TextBlockComponent {
178
196
  readonly type = "linebreak";
179
197
  private constructor();
180
198
  toJSON(): LineBreakRunProps;
181
- static create(props?: TextBlockComponentProps): LineBreakRun;
199
+ static create(props?: Omit<LineBreakRunProps, "type">): LineBreakRun;
182
200
  clone(): LineBreakRun;
201
+ get isEmpty(): boolean;
183
202
  /** Simply returns [[TextBlockStringifyOptions.lineBreak]]. */
184
203
  stringify(options?: TextBlockStringifyOptions): string;
185
204
  equals(other: TextBlockComponent): boolean;
@@ -201,6 +220,7 @@ export declare class TabRun extends TextBlockComponent {
201
220
  toJSON(): TabRunProps;
202
221
  clone(): TabRun;
203
222
  static create(props?: Omit<TabRunProps, "type">): TabRun;
223
+ get isEmpty(): boolean;
204
224
  /**
205
225
  * Converts a [[TabRun]] to its string representation.
206
226
  * If the `tabsAsSpaces` option is provided, returns a string of spaces of the specified length.
@@ -209,56 +229,6 @@ export declare class TabRun extends TextBlockComponent {
209
229
  stringify(options?: TextBlockStringifyOptions): string;
210
230
  equals(other: TextBlockComponent): boolean;
211
231
  }
212
- /** A chain of property accesses that resolves to a primitive value that forms the basis of the displayed content
213
- * of a [[FieldRun]].
214
- * The simplest property paths consist of a [[propertyName]] and nothing else, where `propertyName` identifies
215
- * a primitive property.
216
- * If `propertyName` identifies a struct or array property, then additional [[accessors]] are required to identify the specific value.
217
- * If `propertyName` (including any [[accessors]]) resolves to a JSON property, then additional [[jsonAccessors]] are required to identify a specific value within the JSON.
218
- * Some examples:
219
- * ```
220
- * | Access String | propertyName | accessors | jsonAccessors |
221
- * | ------------- | ------------ | --------- | ------------- |
222
- * | name | "name" | undefined | undefined |
223
- * | spouse.name | "spouse" | [name] | undefined |
224
- * | colors[2] | "colors" | [2] | undefined |
225
- * | spouse.favoriteRestaurants[1].address | "spouse" | ["favoriteRestaurants", 1, "address"] | undefined |
226
- * | jsonProperties.contactInfo.email | "jsonProperties" | undefined | ["contactInfo", "email"] |
227
- * | spouse.jsonProperties.contactInfo.phoneNumbers[0].areaCode | "spouse" | ["jsonProperties"] | ["contactInfo", "phoneNumbers", 0, "areaCode"] |
228
- * ```
229
- * @beta
230
- */
231
- export interface FieldPropertyPath {
232
- /** The name of the BIS property of the [[FieldPropertyHost]] that serves as the root of the path. */
233
- propertyName: string;
234
- /** Property names and/or array indices describing the path from [[propertyName]] to the ultimate BIS property. */
235
- accessors?: Array<string | number>;
236
- /** If [[propertyName]] and [[accessors]] (if defined) resolve to a BIS property of extended type `Json`, property names and/or
237
- * array indices for selecting a primitive value within the JSON.
238
- */
239
- jsonAccessors?: Array<string | number>;
240
- }
241
- /** Describes the source of the property value against which a [[FieldPropertyPath]] is evaluated.
242
- * A field property is always hosted by an [Element]($backend). It may be a property of the element's BIS class itself,
243
- * or that of one of its [ElementAspect]($backend)s.
244
- * The [[schemaName]] and [[className]] should always identify the exact class that contains [[FieldPropertyPath.propertyName]] - not a subclass thereof.
245
- * @beta
246
- */
247
- export interface FieldPropertyHost {
248
- /** The Id of the [Element]($backend) that hosts the property. */
249
- elementId: Id64String;
250
- /** The name of the schema containing the class identified by [[className]]. */
251
- schemaName: string;
252
- /** The name of the exact class (not a subclass) containing the property identified by [[FieldPropertyPath.propertyName]]. */
253
- className: string;
254
- }
255
- /** Placeholder type for a description of how to format the raw property value resolved by a [[FieldPropertyPath]] into a [[FieldRun]]'s display string.
256
- * *** COMING SOON ***
257
- * @beta
258
- */
259
- export interface FieldFormatter {
260
- [k: string]: any;
261
- }
262
232
  /** JSON representation of a [[FieldRun]].
263
233
  * @beta
264
234
  */
@@ -269,15 +239,21 @@ export interface FieldRunProps extends TextBlockComponentProps {
269
239
  propertyHost: FieldPropertyHost;
270
240
  /** Describes how to obtain the property value from [[propertyHost]]. */
271
241
  propertyPath: FieldPropertyPath;
272
- /** Specifies how to format the property value obtained from [[propertyPath]] into a string to be stored in [[cachedContent]]. */
273
- formatter?: FieldFormatter;
274
- /** The field's most recently evaluated display string. */
242
+ /** Specifies how to format the property value obtained from [[propertyPath]] into a string to be stored in [[cachedContent]].
243
+ * The specific options used depend upon the field's [[propertyType]].
244
+ */
245
+ formatOptions?: FieldFormatOptions;
246
+ /** The field's most recently evaluated display string.
247
+ * @note It is unnecessary to specify this when creating a field as part of an element like a [[TextAnnotation2d]], because
248
+ * all of the element's fields will be re-evaluated when inserting or updating the element in the iModel.
249
+ */
275
250
  cachedContent?: string;
276
251
  }
277
252
  /** A [[Run]] that displays the formatted value of a property of some [Element]($backend).
278
253
  * When a [[TextBlock]] containing a [[FieldRun]] is written into the iModel as an [ITextAnnotation]($backend) element,
279
254
  * a dependency is established between the two elements via the [ElementDrivesTextAnnotation]($backend) relationship such that
280
- * whenever the source element specified by [[propertyHost]] is modified, the field(s) in the `ITextAnnotation` element are automatically
255
+ * whenever the source element specified by [[propertyHost]] is modified or the `ITextAnnotation` element is inserted or updated in the iModel,
256
+ * the field(s) in the `ITextAnnotation` element are automatically
281
257
  * recalculated, causing their [[cachedContent]] to update. If the field's display string cannot be evaluated (for example, because the specified element or
282
258
  * property does not exist), then its cached content is set to [[FieldRun.invalidContentIndicator]].
283
259
  * A [[FieldRun]] displays its [[cachedContent]] in the same way that [[TextRun]]s display their `content`, including word wrapping where appropriate.
@@ -292,8 +268,10 @@ export declare class FieldRun extends TextBlockComponent {
292
268
  readonly propertyHost: Readonly<FieldPropertyHost>;
293
269
  /** Describes how to obtain the property value from [[propertyHost]]. */
294
270
  readonly propertyPath: Readonly<FieldPropertyPath>;
295
- /** Specifies how to format the property value obtained from [[propertyPath]] into a string to be stored in [[cachedContent]]. */
296
- readonly formatter?: FieldFormatter;
271
+ /** Specifies how to format the property value obtained from [[propertyPath]] into a string to be stored in [[cachedContent]].
272
+ * The specific options used depend upon the [[FieldPropertyType]].
273
+ */
274
+ readonly formatOptions?: FieldFormatOptions;
297
275
  private _cachedContent;
298
276
  /** The field's most recently evaluated display string. */
299
277
  get cachedContent(): string;
@@ -306,6 +284,7 @@ export declare class FieldRun extends TextBlockComponent {
306
284
  toJSON(): FieldRunProps;
307
285
  /** Create a deep copy of this FieldRun. */
308
286
  clone(): FieldRun;
287
+ get isEmpty(): boolean;
309
288
  /** Convert this FieldRun to a simple string representation. */
310
289
  stringify(): string;
311
290
  /** Returns true if `this` is equivalent to `other`. */
@@ -315,29 +294,49 @@ export declare class FieldRun extends TextBlockComponent {
315
294
  * @beta
316
295
  */
317
296
  export interface ParagraphProps extends TextBlockComponentProps {
318
- /** The collection of [[Run]]s within the paragraph.
319
- * Default: an empty array.
320
- */
321
- runs?: RunProps[];
297
+ children?: Array<ListProps | RunProps>;
322
298
  }
323
- /** A collection of [[Run]]s within a [[TextBlock]]. Each paragraph within a text block is laid out on a separate line.
299
+ /** A collection of [[Run]]s and [[List]]s. Paragraphs can be appended to [[List]]s and [[TextBlock]]s.
300
+ * Each paragraph is laid out on a separate line. If included in a [[List]], the paragraph will be treated as a list item.
324
301
  * @beta
325
302
  */
326
303
  export declare class Paragraph extends TextBlockComponent {
327
- /** The runs within the paragraph. You can modify the contents of this array to change the content of the paragraph. */
328
- readonly runs: Run[];
304
+ readonly type = "paragraph";
305
+ readonly children: Array<List | Run>;
329
306
  private constructor();
330
- toJSON(): ParagraphProps;
331
307
  /** Create a paragraph from its JSON representation. */
332
- static create(props?: ParagraphProps): Paragraph;
308
+ static create(props?: Omit<ParagraphProps, "type">): Paragraph;
309
+ clearStyleOverrides(options?: ClearTextStyleOptions): void;
310
+ get isEmpty(): boolean;
333
311
  clone(): Paragraph;
334
- /**
335
- * Clears any [[styleOverrides]] applied to this Paragraph.
336
- * Will also clear [[styleOverrides]] from all child components unless [[ClearTextStyleOptions.preserveChildrenOverrides]] is `true`.
337
- */
312
+ toJSON(): ParagraphProps;
313
+ /** Compute a string representation of this paragraph by concatenating the string representations of all of its children. */
314
+ stringify(options?: TextBlockStringifyOptions, context?: TextBlockStringifyContext): string;
315
+ equals(other: TextBlockComponent): boolean;
316
+ }
317
+ /** JSON representation of a [[List]].
318
+ * @beta
319
+ */
320
+ export interface ListProps extends TextBlockComponentProps {
321
+ readonly type: "list";
322
+ children?: ParagraphProps[];
323
+ }
324
+ /** A collection of list items ([[Paragraph]]s). Lists can be appended to [[Paragraph]]s.
325
+ * Lists will be laid out on a new line. Each item in a list is laid out on a separate line.
326
+ * @beta
327
+ */
328
+ export declare class List extends TextBlockComponent {
329
+ readonly type = "list";
330
+ readonly children: Paragraph[];
331
+ protected constructor(props?: ListProps);
332
+ /** Create a list from its JSON representation. */
333
+ static create(props?: Omit<ListProps, "type">): List;
338
334
  clearStyleOverrides(options?: ClearTextStyleOptions): void;
339
- /** Compute a string representation of this paragraph by concatenating the string representations of all of its [[runs]]. */
340
- stringify(options?: TextBlockStringifyOptions): string;
335
+ get isEmpty(): boolean;
336
+ clone(): List;
337
+ toJSON(): ListProps;
338
+ /** Compute a string representation of this list by concatenating the string representations of all of its [[children]]. */
339
+ stringify(options?: TextBlockStringifyOptions, context?: TextBlockStringifyContext): string;
341
340
  equals(other: TextBlockComponent): boolean;
342
341
  }
343
342
  /** Describes the relative alignment of the content of a [[TextBlock]].
@@ -370,16 +369,15 @@ export interface TextBlockProps extends TextBlockComponentProps {
370
369
  justification?: TextBlockJustification;
371
370
  /** The margins to surround the document content. Default: 0 margins on all sides */
372
371
  margins?: Partial<TextBlockMargins>;
373
- /** The paragraphs within the text block. Default: an empty array. */
374
- paragraphs?: ParagraphProps[];
372
+ children?: ParagraphProps[];
375
373
  }
376
- /** 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.
377
- * You can change the content of the document by directly modifying the contents of its [[paragraphs]], or via [[appendParagraph]] and [[appendRun]].
374
+ /** Represents a formatted text document consisting of a series of [[Paragraph]]s, each laid out on a separate line and containing their own content.
378
375
  * No word-wrapping is applied to the document unless a [[width]] greater than zero is specified.
379
376
  * @see [[TextAnnotation]] to position a text block as an annotation in 2d or 3d space.
380
377
  * @beta
381
378
  */
382
379
  export declare class TextBlock extends TextBlockComponent {
380
+ readonly children: Paragraph[];
383
381
  /** The width of the document in meters. Lines that would exceed this width are instead wrapped around to the next line if possible.
384
382
  * A value less than or equal to zero indicates no wrapping is to be applied.
385
383
  * Default: 0
@@ -389,31 +387,52 @@ export declare class TextBlock extends TextBlockComponent {
389
387
  justification: TextBlockJustification;
390
388
  /** The margins of the document. */
391
389
  margins: TextBlockMargins;
392
- /** The ordered list of paragraphs within the document. */
393
- readonly paragraphs: Paragraph[];
394
390
  private constructor();
391
+ clearStyleOverrides(options?: ClearTextStyleOptions): void;
395
392
  toJSON(): TextBlockProps;
396
393
  /** Create a text block from its JSON representation. */
397
- static create(props?: TextBlockProps): TextBlock;
394
+ static create(props?: Omit<TextBlockProps, "type">): TextBlock;
398
395
  /** Returns true if every paragraph in this text block is empty. */
399
396
  get isEmpty(): boolean;
400
397
  clone(): TextBlock;
401
- /**
402
- * Clears any [[styleOverrides]] applied to this TextBlock.
403
- * Will also clear [[styleOverrides]] from all child components unless [[ClearTextStyleOptions.preserveChildrenOverrides]] is `true`.
404
- */
405
- clearStyleOverrides(options?: ClearTextStyleOptions): void;
406
- /** Compute a string representation of the document's contents by concatenating the string representations of each of its [[paragraphs]], separated by [[TextBlockStringifyOptions.paragraphBreak]]. */
398
+ /** Compute a string representation of the document's contents by concatenating the string representations of each of its [[children]], separated by [[TextBlockStringifyOptions.paragraphBreak]]. */
407
399
  stringify(options?: TextBlockStringifyOptions): string;
408
400
  /** Add and return a new paragraph.
409
401
  * By default, the paragraph will be created with no [[styleOverrides]], so that it inherits the style of this block.
410
- * @param seedFromLast If true and [[paragraphs]] is not empty, the new paragraph will inherit the style overrides of the last [[Paragraph]] in this block.
402
+ * @param seedFromLast If true and [[children]] is not empty, the new paragraph will inherit the style overrides of the last child in this block.
403
+ * @note Be sure you pass in [[ParagraphProps]] and not [[Paragraph]] or style overrides will be ignored.
411
404
  */
412
- appendParagraph(seedFromLast?: boolean): Paragraph;
405
+ appendParagraph(props?: ParagraphProps, seedFromLast?: boolean): Paragraph;
413
406
  /** Append a run to the last [[Paragraph]] in this block.
414
- * If the block contains no [[paragraphs]], a new one will first be created using [[appendParagraph]].
407
+ * If the block contains no [[children]], a new [[Paragraph]] will first be created using [[appendParagraph]].
415
408
  */
416
409
  appendRun(run: Run): void;
417
410
  equals(other: TextBlockComponent): boolean;
418
411
  }
412
+ /**
413
+ * A union of all the [[TextBlockComponent]]s that can contain other components.
414
+ * @beta
415
+ */
416
+ export type StructuralTextBlockComponent = List | Paragraph | TextBlock;
417
+ /**
418
+ * Recursively traverses a [[StructuralTextBlockComponent]] tree, yielding each child component along with its parent container.
419
+ * This generator enables depth-first iteration over all components in a text block structure, including paragraphs, lists, and runs.
420
+ *
421
+ * @param parent The root container whose children should be traversed.
422
+ * @returns An IterableIterator yielding objects with the child component and its parent container.
423
+ * @beta
424
+ */
425
+ export declare function traverseTextBlockComponent(parent: StructuralTextBlockComponent): IterableIterator<{
426
+ parent: StructuralTextBlockComponent;
427
+ child: List | Paragraph | Run;
428
+ }>;
429
+ /**
430
+ * Returns the formatted marker text for a list item based on the marker type and item number.
431
+ * Supports ordered and unordered list markers, including alphabetic, Roman numeral, and numeric formats.
432
+ * @param marker The type of list marker to use.
433
+ * @param num The item number in the list.
434
+ * @returns The formatted marker string for the list item.
435
+ * @beta
436
+ */
437
+ export declare function getMarkerText(marker: ListMarker, num: number): string;
419
438
  //# sourceMappingURL=TextBlock.d.ts.map