@itwin/core-backend 5.1.0-dev.3 → 5.1.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 (521) hide show
  1. package/CHANGELOG.md +38 -1
  2. package/lib/cjs/BackendHubAccess.js.map +1 -1
  3. package/lib/cjs/BackendLoggerCategory.js.map +1 -1
  4. package/lib/cjs/BisCoreSchema.js +1 -1
  5. package/lib/cjs/BisCoreSchema.js.map +1 -1
  6. package/lib/cjs/BlobContainerService.js.map +1 -1
  7. package/lib/cjs/BriefcaseManager.d.ts +10 -2
  8. package/lib/cjs/BriefcaseManager.d.ts.map +1 -1
  9. package/lib/cjs/BriefcaseManager.js +12 -0
  10. package/lib/cjs/BriefcaseManager.js.map +1 -1
  11. package/lib/cjs/CatalogDb.js.map +1 -1
  12. package/lib/cjs/Category.d.ts +41 -4
  13. package/lib/cjs/Category.d.ts.map +1 -1
  14. package/lib/cjs/Category.js +77 -4
  15. package/lib/cjs/Category.js.map +1 -1
  16. package/lib/cjs/ChangeSummaryManager.js +2 -2
  17. package/lib/cjs/ChangeSummaryManager.js.map +1 -1
  18. package/lib/cjs/ChangedElementsDb.js.map +1 -1
  19. package/lib/cjs/ChangesetECAdaptor.js +242 -242
  20. package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
  21. package/lib/cjs/ChannelControl.js.map +1 -1
  22. package/lib/cjs/CheckpointManager.js.map +1 -1
  23. package/lib/cjs/ClassRegistry.js +5 -5
  24. package/lib/cjs/ClassRegistry.js.map +1 -1
  25. package/lib/cjs/CloudSqlite.js +1 -1
  26. package/lib/cjs/CloudSqlite.js.map +1 -1
  27. package/lib/cjs/CodeService.js.map +1 -1
  28. package/lib/cjs/CodeSpecs.d.ts +1 -1
  29. package/lib/cjs/CodeSpecs.js +1 -1
  30. package/lib/cjs/CodeSpecs.js.map +1 -1
  31. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  32. package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
  33. package/lib/cjs/DevTools.js.map +1 -1
  34. package/lib/cjs/DisplayStyle.d.ts +9 -4
  35. package/lib/cjs/DisplayStyle.d.ts.map +1 -1
  36. package/lib/cjs/DisplayStyle.js +30 -3
  37. package/lib/cjs/DisplayStyle.js.map +1 -1
  38. package/lib/cjs/ECDb.js.map +1 -1
  39. package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
  40. package/lib/cjs/ECSqlStatement.js.map +1 -1
  41. package/lib/cjs/Element.d.ts +216 -60
  42. package/lib/cjs/Element.d.ts.map +1 -1
  43. package/lib/cjs/Element.js +560 -59
  44. package/lib/cjs/Element.js.map +1 -1
  45. package/lib/cjs/ElementAspect.d.ts +7 -7
  46. package/lib/cjs/ElementAspect.d.ts.map +1 -1
  47. package/lib/cjs/ElementAspect.js +7 -7
  48. package/lib/cjs/ElementAspect.js.map +1 -1
  49. package/lib/cjs/ElementGraphics.js.map +1 -1
  50. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  51. package/lib/cjs/Entity.d.ts +43 -3
  52. package/lib/cjs/Entity.d.ts.map +1 -1
  53. package/lib/cjs/Entity.js +59 -1
  54. package/lib/cjs/Entity.js.map +1 -1
  55. package/lib/cjs/EntityReferences.js.map +1 -1
  56. package/lib/cjs/ExportGraphics.d.ts +54 -8
  57. package/lib/cjs/ExportGraphics.d.ts.map +1 -1
  58. package/lib/cjs/ExportGraphics.js +158 -59
  59. package/lib/cjs/ExportGraphics.js.map +1 -1
  60. package/lib/cjs/ExternalSource.js.map +1 -1
  61. package/lib/cjs/FontFile.js.map +1 -1
  62. package/lib/cjs/GeoCoordConfig.js.map +1 -1
  63. package/lib/cjs/GeographicCRSServices.d.ts +6 -2
  64. package/lib/cjs/GeographicCRSServices.d.ts.map +1 -1
  65. package/lib/cjs/GeographicCRSServices.js +1 -1
  66. package/lib/cjs/GeographicCRSServices.js.map +1 -1
  67. package/lib/cjs/GeometrySummary.js +47 -47
  68. package/lib/cjs/GeometrySummary.js.map +1 -1
  69. package/lib/cjs/IModelDb.d.ts +28 -43
  70. package/lib/cjs/IModelDb.d.ts.map +1 -1
  71. package/lib/cjs/IModelDb.js +177 -92
  72. package/lib/cjs/IModelDb.js.map +1 -1
  73. package/lib/cjs/IModelDbFonts.js.map +1 -1
  74. package/lib/cjs/IModelElementCloneContext.js.map +1 -1
  75. package/lib/cjs/IModelHost.d.ts +13 -0
  76. package/lib/cjs/IModelHost.d.ts.map +1 -1
  77. package/lib/cjs/IModelHost.js +6 -0
  78. package/lib/cjs/IModelHost.js.map +1 -1
  79. package/lib/cjs/IModelJsFs.js.map +1 -1
  80. package/lib/cjs/ImageSourceConversion.js.map +1 -1
  81. package/lib/cjs/IpcHost.js.map +1 -1
  82. package/lib/cjs/LineStyle.js.map +1 -1
  83. package/lib/cjs/LocalHub.js +1 -1
  84. package/lib/cjs/LocalHub.js.map +1 -1
  85. package/lib/cjs/LocalhostIpcHost.js.map +1 -1
  86. package/lib/cjs/LockControl.js.map +1 -1
  87. package/lib/cjs/Material.d.ts +19 -0
  88. package/lib/cjs/Material.d.ts.map +1 -1
  89. package/lib/cjs/Material.js +29 -0
  90. package/lib/cjs/Material.js.map +1 -1
  91. package/lib/cjs/Model.d.ts +64 -28
  92. package/lib/cjs/Model.d.ts.map +1 -1
  93. package/lib/cjs/Model.js +115 -27
  94. package/lib/cjs/Model.js.map +1 -1
  95. package/lib/cjs/NativeAppStorage.js.map +1 -1
  96. package/lib/cjs/NativeHost.js.map +1 -1
  97. package/lib/cjs/NavigationRelationship.js.map +1 -1
  98. package/lib/cjs/PromiseMemoizer.js.map +1 -1
  99. package/lib/cjs/PropertyStore.js.map +1 -1
  100. package/lib/cjs/Relationship.js.map +1 -1
  101. package/lib/cjs/RpcBackend.js.map +1 -1
  102. package/lib/cjs/SQLiteDb.js.map +1 -1
  103. package/lib/cjs/Schema.js.map +1 -1
  104. package/lib/cjs/SchemaSync.js.map +1 -1
  105. package/lib/cjs/SchemaUtils.js.map +1 -1
  106. package/lib/cjs/SheetIndex.js.map +1 -1
  107. package/lib/cjs/SqliteChangesetReader.js.map +1 -1
  108. package/lib/cjs/SqliteStatement.js.map +1 -1
  109. package/lib/cjs/Texture.d.ts +1 -1
  110. package/lib/cjs/Texture.js +1 -1
  111. package/lib/cjs/Texture.js.map +1 -1
  112. package/lib/cjs/TileStorage.js.map +1 -1
  113. package/lib/cjs/TxnManager.d.ts +4 -4
  114. package/lib/cjs/TxnManager.d.ts.map +1 -1
  115. package/lib/cjs/TxnManager.js +2 -1
  116. package/lib/cjs/TxnManager.js.map +1 -1
  117. package/lib/cjs/ViewDefinition.d.ts +140 -14
  118. package/lib/cjs/ViewDefinition.d.ts.map +1 -1
  119. package/lib/cjs/ViewDefinition.js +250 -14
  120. package/lib/cjs/ViewDefinition.js.map +1 -1
  121. package/lib/cjs/ViewStateHydrator.js +3 -3
  122. package/lib/cjs/ViewStateHydrator.js.map +1 -1
  123. package/lib/cjs/ViewStore.js.map +1 -1
  124. package/lib/cjs/annotations/FrameGeometry.d.ts +52 -0
  125. package/lib/cjs/annotations/FrameGeometry.d.ts.map +1 -0
  126. package/lib/cjs/annotations/FrameGeometry.js +250 -0
  127. package/lib/cjs/annotations/FrameGeometry.js.map +1 -0
  128. package/lib/cjs/{TextAnnotationElement.d.ts → annotations/TextAnnotationElement.d.ts} +6 -11
  129. package/lib/cjs/annotations/TextAnnotationElement.d.ts.map +1 -0
  130. package/lib/cjs/{TextAnnotationElement.js → annotations/TextAnnotationElement.js} +20 -26
  131. package/lib/cjs/annotations/TextAnnotationElement.js.map +1 -0
  132. package/lib/cjs/annotations/TextAnnotationGeometry.d.ts +31 -0
  133. package/lib/cjs/annotations/TextAnnotationGeometry.d.ts.map +1 -0
  134. package/lib/cjs/annotations/TextAnnotationGeometry.js +83 -0
  135. package/lib/cjs/annotations/TextAnnotationGeometry.js.map +1 -0
  136. package/lib/cjs/annotations/TextBlockGeometry.d.ts +16 -0
  137. package/lib/cjs/annotations/TextBlockGeometry.d.ts.map +1 -0
  138. package/lib/cjs/{TextAnnotationGeometry.js → annotations/TextBlockGeometry.js} +11 -68
  139. package/lib/cjs/annotations/TextBlockGeometry.js.map +1 -0
  140. package/lib/cjs/{TextAnnotationLayout.d.ts → annotations/TextBlockLayout.d.ts} +19 -7
  141. package/lib/cjs/annotations/TextBlockLayout.d.ts.map +1 -0
  142. package/lib/cjs/{TextAnnotationLayout.js → annotations/TextBlockLayout.js} +19 -7
  143. package/lib/cjs/annotations/TextBlockLayout.js.map +1 -0
  144. package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
  145. package/lib/cjs/assets/Settings/Schemas/Base.Schema.json +32 -32
  146. package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +27 -27
  147. package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +94 -94
  148. package/lib/cjs/assets/Settings/backend.setting.json5 +21 -21
  149. package/lib/cjs/core-backend.d.ts +5 -3
  150. package/lib/cjs/core-backend.d.ts.map +1 -1
  151. package/lib/cjs/core-backend.js +5 -6
  152. package/lib/cjs/core-backend.js.map +1 -1
  153. package/lib/cjs/domains/FunctionalElements.js.map +1 -1
  154. package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
  155. package/lib/cjs/domains/GenericElements.js.map +1 -1
  156. package/lib/cjs/domains/GenericSchema.js.map +1 -1
  157. package/lib/cjs/internal/ChangesetConflictArgs.js.map +1 -1
  158. package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
  159. package/lib/cjs/internal/ElementLRUCache.d.ts +28 -0
  160. package/lib/cjs/internal/ElementLRUCache.d.ts.map +1 -0
  161. package/lib/cjs/internal/ElementLRUCache.js +120 -0
  162. package/lib/cjs/internal/ElementLRUCache.js.map +1 -0
  163. package/lib/cjs/internal/FontFileImpl.js.map +1 -1
  164. package/lib/cjs/internal/HubMock.js.map +1 -1
  165. package/lib/cjs/internal/IModelDbFontsImpl.js.map +1 -1
  166. package/lib/cjs/internal/NativePlatform.js.map +1 -1
  167. package/lib/cjs/internal/NoLocks.js.map +1 -1
  168. package/lib/cjs/internal/ServerBasedLocks.js.map +1 -1
  169. package/lib/cjs/internal/Symbols.d.ts +1 -0
  170. package/lib/cjs/internal/Symbols.d.ts.map +1 -1
  171. package/lib/cjs/internal/Symbols.js +2 -1
  172. package/lib/cjs/internal/Symbols.js.map +1 -1
  173. package/lib/cjs/internal/cross-package.js.map +1 -1
  174. package/lib/cjs/internal/workspace/SettingsImpl.js.map +1 -1
  175. package/lib/cjs/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  176. package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -1
  177. package/lib/cjs/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  178. package/lib/cjs/rpc/multipart.js.map +1 -1
  179. package/lib/cjs/rpc/tracing.js.map +1 -1
  180. package/lib/cjs/rpc/web/logging.js.map +1 -1
  181. package/lib/cjs/rpc/web/request.js.map +1 -1
  182. package/lib/cjs/rpc/web/response.js.map +1 -1
  183. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  184. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js +2 -2
  185. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  186. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  187. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  188. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  189. package/lib/cjs/workspace/Settings.js.map +1 -1
  190. package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
  191. package/lib/cjs/workspace/Workspace.js.map +1 -1
  192. package/lib/cjs/workspace/WorkspaceEditor.js.map +1 -1
  193. package/lib/esm/BackendHubAccess.js.map +1 -1
  194. package/lib/esm/BackendLoggerCategory.js.map +1 -1
  195. package/lib/esm/BisCoreSchema.js +1 -1
  196. package/lib/esm/BisCoreSchema.js.map +1 -1
  197. package/lib/esm/BlobContainerService.js.map +1 -1
  198. package/lib/esm/BriefcaseManager.d.ts +10 -2
  199. package/lib/esm/BriefcaseManager.d.ts.map +1 -1
  200. package/lib/esm/BriefcaseManager.js +12 -0
  201. package/lib/esm/BriefcaseManager.js.map +1 -1
  202. package/lib/esm/CatalogDb.js.map +1 -1
  203. package/lib/esm/Category.d.ts +41 -4
  204. package/lib/esm/Category.d.ts.map +1 -1
  205. package/lib/esm/Category.js +77 -4
  206. package/lib/esm/Category.js.map +1 -1
  207. package/lib/esm/ChangeSummaryManager.js +2 -2
  208. package/lib/esm/ChangeSummaryManager.js.map +1 -1
  209. package/lib/esm/ChangedElementsDb.js.map +1 -1
  210. package/lib/esm/ChangesetECAdaptor.js +242 -242
  211. package/lib/esm/ChangesetECAdaptor.js.map +1 -1
  212. package/lib/esm/ChannelControl.js.map +1 -1
  213. package/lib/esm/CheckpointManager.js.map +1 -1
  214. package/lib/esm/ClassRegistry.js +5 -5
  215. package/lib/esm/ClassRegistry.js.map +1 -1
  216. package/lib/esm/CloudSqlite.js +1 -1
  217. package/lib/esm/CloudSqlite.js.map +1 -1
  218. package/lib/esm/CodeService.js.map +1 -1
  219. package/lib/esm/CodeSpecs.d.ts +1 -1
  220. package/lib/esm/CodeSpecs.js +1 -1
  221. package/lib/esm/CodeSpecs.js.map +1 -1
  222. package/lib/esm/ConcurrentQuery.js.map +1 -1
  223. package/lib/esm/CustomViewState3dCreator.js.map +1 -1
  224. package/lib/esm/DevTools.js.map +1 -1
  225. package/lib/esm/DisplayStyle.d.ts +9 -4
  226. package/lib/esm/DisplayStyle.d.ts.map +1 -1
  227. package/lib/esm/DisplayStyle.js +30 -3
  228. package/lib/esm/DisplayStyle.js.map +1 -1
  229. package/lib/esm/ECDb.js.map +1 -1
  230. package/lib/esm/ECSchemaXmlContext.js.map +1 -1
  231. package/lib/esm/ECSqlStatement.js.map +1 -1
  232. package/lib/esm/Element.d.ts +216 -60
  233. package/lib/esm/Element.d.ts.map +1 -1
  234. package/lib/esm/Element.js +563 -62
  235. package/lib/esm/Element.js.map +1 -1
  236. package/lib/esm/ElementAspect.d.ts +7 -7
  237. package/lib/esm/ElementAspect.d.ts.map +1 -1
  238. package/lib/esm/ElementAspect.js +7 -7
  239. package/lib/esm/ElementAspect.js.map +1 -1
  240. package/lib/esm/ElementGraphics.js.map +1 -1
  241. package/lib/esm/ElementTreeWalker.js.map +1 -1
  242. package/lib/esm/Entity.d.ts +43 -3
  243. package/lib/esm/Entity.d.ts.map +1 -1
  244. package/lib/esm/Entity.js +59 -1
  245. package/lib/esm/Entity.js.map +1 -1
  246. package/lib/esm/EntityReferences.js.map +1 -1
  247. package/lib/esm/ExportGraphics.d.ts +54 -8
  248. package/lib/esm/ExportGraphics.d.ts.map +1 -1
  249. package/lib/esm/ExportGraphics.js +156 -58
  250. package/lib/esm/ExportGraphics.js.map +1 -1
  251. package/lib/esm/ExternalSource.js.map +1 -1
  252. package/lib/esm/FontFile.js.map +1 -1
  253. package/lib/esm/GeoCoordConfig.js.map +1 -1
  254. package/lib/esm/GeographicCRSServices.d.ts +6 -2
  255. package/lib/esm/GeographicCRSServices.d.ts.map +1 -1
  256. package/lib/esm/GeographicCRSServices.js +1 -1
  257. package/lib/esm/GeographicCRSServices.js.map +1 -1
  258. package/lib/esm/GeometrySummary.js +47 -47
  259. package/lib/esm/GeometrySummary.js.map +1 -1
  260. package/lib/esm/IModelDb.d.ts +28 -43
  261. package/lib/esm/IModelDb.d.ts.map +1 -1
  262. package/lib/esm/IModelDb.js +180 -95
  263. package/lib/esm/IModelDb.js.map +1 -1
  264. package/lib/esm/IModelDbFonts.js.map +1 -1
  265. package/lib/esm/IModelElementCloneContext.js.map +1 -1
  266. package/lib/esm/IModelHost.d.ts +13 -0
  267. package/lib/esm/IModelHost.d.ts.map +1 -1
  268. package/lib/esm/IModelHost.js +6 -0
  269. package/lib/esm/IModelHost.js.map +1 -1
  270. package/lib/esm/IModelJsFs.js.map +1 -1
  271. package/lib/esm/ImageSourceConversion.js.map +1 -1
  272. package/lib/esm/IpcHost.js.map +1 -1
  273. package/lib/esm/LineStyle.js.map +1 -1
  274. package/lib/esm/LocalHub.js +1 -1
  275. package/lib/esm/LocalHub.js.map +1 -1
  276. package/lib/esm/LocalhostIpcHost.js.map +1 -1
  277. package/lib/esm/LockControl.js.map +1 -1
  278. package/lib/esm/Material.d.ts +19 -0
  279. package/lib/esm/Material.d.ts.map +1 -1
  280. package/lib/esm/Material.js +30 -1
  281. package/lib/esm/Material.js.map +1 -1
  282. package/lib/esm/Model.d.ts +64 -28
  283. package/lib/esm/Model.d.ts.map +1 -1
  284. package/lib/esm/Model.js +116 -28
  285. package/lib/esm/Model.js.map +1 -1
  286. package/lib/esm/NativeAppStorage.js.map +1 -1
  287. package/lib/esm/NativeHost.js.map +1 -1
  288. package/lib/esm/NavigationRelationship.js.map +1 -1
  289. package/lib/esm/PromiseMemoizer.js.map +1 -1
  290. package/lib/esm/PropertyStore.js.map +1 -1
  291. package/lib/esm/Relationship.js.map +1 -1
  292. package/lib/esm/RpcBackend.js.map +1 -1
  293. package/lib/esm/SQLiteDb.js.map +1 -1
  294. package/lib/esm/Schema.js.map +1 -1
  295. package/lib/esm/SchemaSync.js.map +1 -1
  296. package/lib/esm/SchemaUtils.js.map +1 -1
  297. package/lib/esm/SheetIndex.js.map +1 -1
  298. package/lib/esm/SqliteChangesetReader.js.map +1 -1
  299. package/lib/esm/SqliteStatement.js.map +1 -1
  300. package/lib/esm/Texture.d.ts +1 -1
  301. package/lib/esm/Texture.js +1 -1
  302. package/lib/esm/Texture.js.map +1 -1
  303. package/lib/esm/TileStorage.js.map +1 -1
  304. package/lib/esm/TxnManager.d.ts +4 -4
  305. package/lib/esm/TxnManager.d.ts.map +1 -1
  306. package/lib/esm/TxnManager.js +2 -1
  307. package/lib/esm/TxnManager.js.map +1 -1
  308. package/lib/esm/ViewDefinition.d.ts +140 -14
  309. package/lib/esm/ViewDefinition.d.ts.map +1 -1
  310. package/lib/esm/ViewDefinition.js +251 -15
  311. package/lib/esm/ViewDefinition.js.map +1 -1
  312. package/lib/esm/ViewStateHydrator.js +3 -3
  313. package/lib/esm/ViewStateHydrator.js.map +1 -1
  314. package/lib/esm/ViewStore.js.map +1 -1
  315. package/lib/esm/annotations/FrameGeometry.d.ts +52 -0
  316. package/lib/esm/annotations/FrameGeometry.d.ts.map +1 -0
  317. package/lib/esm/annotations/FrameGeometry.js +245 -0
  318. package/lib/esm/annotations/FrameGeometry.js.map +1 -0
  319. package/lib/esm/{TextAnnotationElement.d.ts → annotations/TextAnnotationElement.d.ts} +6 -11
  320. package/lib/esm/annotations/TextAnnotationElement.d.ts.map +1 -0
  321. package/lib/esm/{TextAnnotationElement.js → annotations/TextAnnotationElement.js} +22 -28
  322. package/lib/esm/annotations/TextAnnotationElement.js.map +1 -0
  323. package/lib/esm/annotations/TextAnnotationGeometry.d.ts +31 -0
  324. package/lib/esm/annotations/TextAnnotationGeometry.d.ts.map +1 -0
  325. package/lib/esm/annotations/TextAnnotationGeometry.js +80 -0
  326. package/lib/esm/annotations/TextAnnotationGeometry.js.map +1 -0
  327. package/lib/esm/annotations/TextBlockGeometry.d.ts +16 -0
  328. package/lib/esm/annotations/TextBlockGeometry.d.ts.map +1 -0
  329. package/lib/esm/{TextAnnotationGeometry.js → annotations/TextBlockGeometry.js} +11 -68
  330. package/lib/esm/annotations/TextBlockGeometry.js.map +1 -0
  331. package/lib/esm/{TextAnnotationLayout.d.ts → annotations/TextBlockLayout.d.ts} +19 -7
  332. package/lib/esm/annotations/TextBlockLayout.d.ts.map +1 -0
  333. package/lib/esm/{TextAnnotationLayout.js → annotations/TextBlockLayout.js} +19 -7
  334. package/lib/esm/annotations/TextBlockLayout.js.map +1 -0
  335. package/lib/esm/core-backend.d.ts +5 -3
  336. package/lib/esm/core-backend.d.ts.map +1 -1
  337. package/lib/esm/core-backend.js +5 -3
  338. package/lib/esm/core-backend.js.map +1 -1
  339. package/lib/esm/domains/FunctionalElements.js.map +1 -1
  340. package/lib/esm/domains/FunctionalSchema.js.map +1 -1
  341. package/lib/esm/domains/GenericElements.js.map +1 -1
  342. package/lib/esm/domains/GenericSchema.js.map +1 -1
  343. package/lib/esm/internal/ChangesetConflictArgs.js.map +1 -1
  344. package/lib/esm/internal/ChannelAdmin.js.map +1 -1
  345. package/lib/esm/internal/ElementLRUCache.d.ts +28 -0
  346. package/lib/esm/internal/ElementLRUCache.d.ts.map +1 -0
  347. package/lib/esm/internal/ElementLRUCache.js +116 -0
  348. package/lib/esm/internal/ElementLRUCache.js.map +1 -0
  349. package/lib/esm/internal/FontFileImpl.js.map +1 -1
  350. package/lib/esm/internal/HubMock.js.map +1 -1
  351. package/lib/esm/internal/IModelDbFontsImpl.js.map +1 -1
  352. package/lib/esm/internal/NativePlatform.js.map +1 -1
  353. package/lib/esm/internal/NoLocks.js.map +1 -1
  354. package/lib/esm/internal/ServerBasedLocks.js.map +1 -1
  355. package/lib/esm/internal/Symbols.d.ts +1 -0
  356. package/lib/esm/internal/Symbols.d.ts.map +1 -1
  357. package/lib/esm/internal/Symbols.js +1 -0
  358. package/lib/esm/internal/Symbols.js.map +1 -1
  359. package/lib/esm/internal/cross-package.js.map +1 -1
  360. package/lib/esm/internal/workspace/SettingsImpl.js.map +1 -1
  361. package/lib/esm/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  362. package/lib/esm/internal/workspace/WorkspaceImpl.js.map +1 -1
  363. package/lib/esm/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  364. package/lib/esm/rpc/multipart.js.map +1 -1
  365. package/lib/esm/rpc/tracing.js.map +1 -1
  366. package/lib/esm/rpc/web/logging.js.map +1 -1
  367. package/lib/esm/rpc/web/request.js.map +1 -1
  368. package/lib/esm/rpc/web/response.js.map +1 -1
  369. package/lib/esm/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  370. package/lib/esm/rpc-impl/IModelReadRpcImpl.js +2 -2
  371. package/lib/esm/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  372. package/lib/esm/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  373. package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  374. package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  375. package/lib/esm/test/AdvancedEqual.js.map +1 -1
  376. package/lib/esm/test/AttachDb.test.js +11 -11
  377. package/lib/esm/test/AttachDb.test.js.map +1 -1
  378. package/lib/esm/test/ElementLRUCache.test.d.ts +2 -0
  379. package/lib/esm/test/ElementLRUCache.test.d.ts.map +1 -0
  380. package/lib/esm/test/ElementLRUCache.test.js +212 -0
  381. package/lib/esm/test/ElementLRUCache.test.js.map +1 -0
  382. package/lib/esm/test/GeometryTestUtil.js.map +1 -1
  383. package/lib/esm/test/IModelHost.test.js.map +1 -1
  384. package/lib/esm/test/IModelTestUtils.js.map +1 -1
  385. package/lib/esm/test/ImageSourceConversion.test.js.map +1 -1
  386. package/lib/esm/test/IpcHost.test.js.map +1 -1
  387. package/lib/esm/test/KnownTestLocations.js.map +1 -1
  388. package/lib/esm/test/PrintElementTree.js.map +1 -1
  389. package/lib/esm/test/PropertyDb.test.js.map +1 -1
  390. package/lib/esm/test/RevisionUtility.js.map +1 -1
  391. package/lib/esm/test/SchemaUtils.test.js +25 -25
  392. package/lib/esm/test/SchemaUtils.test.js.map +1 -1
  393. package/lib/esm/test/SequentialLogMatcher.js.map +1 -1
  394. package/lib/esm/test/TestChangeSetUtility.js.map +1 -1
  395. package/lib/esm/test/TestUtils.js.map +1 -1
  396. package/lib/esm/test/annotations/TextAnnotation.test.js +190 -1025
  397. package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -1
  398. package/lib/esm/test/annotations/TextBlock.test.d.ts +2 -0
  399. package/lib/esm/test/annotations/TextBlock.test.d.ts.map +1 -0
  400. package/lib/esm/test/annotations/TextBlock.test.js +969 -0
  401. package/lib/esm/test/annotations/TextBlock.test.js.map +1 -0
  402. package/lib/esm/test/categories/Category.test.js.map +1 -1
  403. package/lib/esm/test/codespec/CodeSpec.test.js.map +1 -1
  404. package/lib/esm/test/ecdb/CTE.test.js +88 -88
  405. package/lib/esm/test/ecdb/CTE.test.js.map +1 -1
  406. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js +15 -15
  407. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js.map +1 -1
  408. package/lib/esm/test/ecdb/ECDb.test.js +86 -65
  409. package/lib/esm/test/ecdb/ECDb.test.js.map +1 -1
  410. package/lib/esm/test/ecdb/ECDbTestHelper.js.map +1 -1
  411. package/lib/esm/test/ecdb/ECSchemaXmlContext.test.js.map +1 -1
  412. package/lib/esm/test/ecdb/ECSqlAst.test.js +65 -65
  413. package/lib/esm/test/ecdb/ECSqlAst.test.js.map +1 -1
  414. package/lib/esm/test/ecdb/ECSqlQuery.test.js +7 -30
  415. package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
  416. package/lib/esm/test/ecdb/ECSqlReader.test.js +16 -16
  417. package/lib/esm/test/ecdb/ECSqlReader.test.js.map +1 -1
  418. package/lib/esm/test/ecdb/ECSqlStatement.test.js +292 -292
  419. package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -1
  420. package/lib/esm/test/ecdb/SqliteStatement.test.js.map +1 -1
  421. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js.map +1 -1
  422. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js +21 -21
  423. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js.map +1 -1
  424. package/lib/esm/test/ecsql/src/ECSqlTestParser.js.map +1 -1
  425. package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js.map +1 -1
  426. package/lib/esm/test/element/DeleteDefinitionElements.test.js.map +1 -1
  427. package/lib/esm/test/element/ElementAspect.test.js +22 -22
  428. package/lib/esm/test/element/ElementAspect.test.js.map +1 -1
  429. package/lib/esm/test/element/ElementDependencyGraph.test.js.map +1 -1
  430. package/lib/esm/test/element/ElementRoundTrip.test.js +139 -139
  431. package/lib/esm/test/element/ElementRoundTrip.test.js.map +1 -1
  432. package/lib/esm/test/element/ExcludedElements.test.js.map +1 -1
  433. package/lib/esm/test/element/ExternalSource.test.js.map +1 -1
  434. package/lib/esm/test/element/NullStructArray.test.js +13 -13
  435. package/lib/esm/test/element/NullStructArray.test.js.map +1 -1
  436. package/lib/esm/test/element/UrlLink.test.js.map +1 -1
  437. package/lib/esm/test/font/FontFile.test.js.map +1 -1
  438. package/lib/esm/test/font/IModelDbFonts.test.js.map +1 -1
  439. package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
  440. package/lib/esm/test/hubaccess/CheckpointManager.test.js.map +1 -1
  441. package/lib/esm/test/imageData.js.map +1 -1
  442. package/lib/esm/test/imodel/ElementTreeWalker.test.js.map +1 -1
  443. package/lib/esm/test/imodel/GetTextureImage.test.js.map +1 -1
  444. package/lib/esm/test/imodel/IModel.test.js +68 -16
  445. package/lib/esm/test/imodel/IModel.test.js.map +1 -1
  446. package/lib/esm/test/imodel/ProjectExtents.test.js.map +1 -1
  447. package/lib/esm/test/imodel/SchemaXmlImport.test.js.map +1 -1
  448. package/lib/esm/test/index.js.map +1 -1
  449. package/lib/esm/test/misc/DevTools.test.js.map +1 -1
  450. package/lib/esm/test/misc/EntitySubClasses.test.js.map +1 -1
  451. package/lib/esm/test/misc/GeoServices.test.js +23 -9
  452. package/lib/esm/test/misc/GeoServices.test.js.map +1 -1
  453. package/lib/esm/test/misc/PromiseMemoizer.test.js.map +1 -1
  454. package/lib/esm/test/native/DgnDbWorker.test.js.map +1 -1
  455. package/lib/esm/test/rpc/response.test.js.map +1 -1
  456. package/lib/esm/test/schema/ClassRegistry.test.js +71 -71
  457. package/lib/esm/test/schema/ClassRegistry.test.js.map +1 -1
  458. package/lib/esm/test/schema/FunctionalDomain.test.js.map +1 -1
  459. package/lib/esm/test/schema/GenericDomain.test.js.map +1 -1
  460. package/lib/esm/test/schema/IModelSchemaContext.test.js.map +1 -1
  461. package/lib/esm/test/sheetindex/SheetIndex.test.js.map +1 -1
  462. package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
  463. package/lib/esm/test/standalone/ChangesetReader.test.js +28 -28
  464. package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
  465. package/lib/esm/test/standalone/CustomViewState3dCreator.test.js.map +1 -1
  466. package/lib/esm/test/standalone/DisplayStyle.test.js.map +1 -1
  467. package/lib/esm/test/standalone/Drawing.test.js.map +1 -1
  468. package/lib/esm/test/standalone/ElementGraphics.test.js.map +1 -1
  469. package/lib/esm/test/standalone/ElementMesh.test.js.map +1 -1
  470. package/lib/esm/test/standalone/ExportGraphics.test.js +67 -15
  471. package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -1
  472. package/lib/esm/test/standalone/GeometryChangeEvents.test.js.map +1 -1
  473. package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
  474. package/lib/esm/test/standalone/HubMock.test.js.map +1 -1
  475. package/lib/esm/test/standalone/IModelLimits.test.d.ts +2 -0
  476. package/lib/esm/test/standalone/IModelLimits.test.d.ts.map +1 -0
  477. package/lib/esm/test/standalone/IModelLimits.test.js +103 -0
  478. package/lib/esm/test/standalone/IModelLimits.test.js.map +1 -0
  479. package/lib/esm/test/standalone/IModelWrite.test.js +27 -27
  480. package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
  481. package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js.map +1 -1
  482. package/lib/esm/test/standalone/MergeConflict.test.js.map +1 -1
  483. package/lib/esm/test/standalone/NativeAppStorage.test.js.map +1 -1
  484. package/lib/esm/test/standalone/RenderMaterialElement.test.js.map +1 -1
  485. package/lib/esm/test/standalone/RenderTimeline.test.js.map +1 -1
  486. package/lib/esm/test/standalone/SQLiteDb.test.js.map +1 -1
  487. package/lib/esm/test/standalone/SchemaUtils.test.js.map +1 -1
  488. package/lib/esm/test/standalone/SectionDrawing.test.js.map +1 -1
  489. package/lib/esm/test/standalone/ServerBasedLocks.test.js.map +1 -1
  490. package/lib/esm/test/standalone/Setting.test.js.map +1 -1
  491. package/lib/esm/test/standalone/Settings.test.js.map +1 -1
  492. package/lib/esm/test/standalone/SettingsSchemas.test.js.map +1 -1
  493. package/lib/esm/test/standalone/SnapshotDb.test.js +20 -1
  494. package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
  495. package/lib/esm/test/standalone/Texture.test.js.map +1 -1
  496. package/lib/esm/test/standalone/TileCache.test.js.map +1 -1
  497. package/lib/esm/test/standalone/TileTree.test.js.map +1 -1
  498. package/lib/esm/test/standalone/TxnManager.test.js +1 -1
  499. package/lib/esm/test/standalone/TxnManager.test.js.map +1 -1
  500. package/lib/esm/test/standalone/ViewDefinition.test.js.map +1 -1
  501. package/lib/esm/test/standalone/ViewStoreDb.test.js.map +1 -1
  502. package/lib/esm/test/standalone/Workspace.test.js.map +1 -1
  503. package/lib/esm/workspace/Settings.js.map +1 -1
  504. package/lib/esm/workspace/SettingsSchemas.js.map +1 -1
  505. package/lib/esm/workspace/Workspace.js.map +1 -1
  506. package/lib/esm/workspace/WorkspaceEditor.js.map +1 -1
  507. package/package.json +12 -12
  508. package/lib/cjs/TextAnnotationElement.d.ts.map +0 -1
  509. package/lib/cjs/TextAnnotationElement.js.map +0 -1
  510. package/lib/cjs/TextAnnotationGeometry.d.ts +0 -32
  511. package/lib/cjs/TextAnnotationGeometry.d.ts.map +0 -1
  512. package/lib/cjs/TextAnnotationGeometry.js.map +0 -1
  513. package/lib/cjs/TextAnnotationLayout.d.ts.map +0 -1
  514. package/lib/cjs/TextAnnotationLayout.js.map +0 -1
  515. package/lib/esm/TextAnnotationElement.d.ts.map +0 -1
  516. package/lib/esm/TextAnnotationElement.js.map +0 -1
  517. package/lib/esm/TextAnnotationGeometry.d.ts +0 -32
  518. package/lib/esm/TextAnnotationGeometry.d.ts.map +0 -1
  519. package/lib/esm/TextAnnotationGeometry.js.map +0 -1
  520. package/lib/esm/TextAnnotationLayout.d.ts.map +0 -1
  521. package/lib/esm/TextAnnotationLayout.js.map +0 -1
@@ -6,12 +6,12 @@
6
6
  * @module Elements
7
7
  */
8
8
  import { CompressedId64Set, Id64, JsonUtils, OrderedId64Array } from "@itwin/core-bentley";
9
- import { BisCodeSpec, Code, ConcreteEntityTypes, IModel, Placement2d, Placement3d, RelatedElement, RenderSchedule, SectionType, TypeDefinition, } from "@itwin/core-common";
10
- import { ClipVector, Range3d, Transform } from "@itwin/core-geometry";
9
+ import { BisCodeSpec, Code, ConcreteEntityTypes, IModel, Placement2d, Placement3d, RelatedElement, RenderSchedule, SectionType, TypeDefinition } from "@itwin/core-common";
10
+ import { ClipVector, Range3d, Transform, YawPitchRollAngles } from "@itwin/core-geometry";
11
11
  import { Entity } from "./Entity";
12
12
  import { DefinitionModel, DrawingModel, PhysicalModel, SectionDrawingModel } from "./Model";
13
13
  import { SubjectOwnsSubjects } from "./NavigationRelationship";
14
- import { _elementWasCreated, _verifyChannel } from "./internal/Symbols";
14
+ import { _cache, _elementWasCreated, _nativeDb, _verifyChannel } from "./internal/Symbols";
15
15
  /** The smallest individually identifiable building block for modeling the real world in an iModel.
16
16
  * Each element represents an [[Entity]] in the real world. Sets of Elements (contained in [[Model]]s) are used to model
17
17
  * other Elements that represent larger scale real world entities. Using this recursive modeling strategy,
@@ -34,7 +34,7 @@ import { _elementWasCreated, _verifyChannel } from "./internal/Symbols";
34
34
  * * [Element Fundamentals]($docs/bis/guide/fundamentals/element-fundamentals.md)
35
35
  * * [Working with schemas and elements in TypeScript]($docs/learning/backend/SchemasAndElementsInTypeScript.md)
36
36
  * * [Creating elements]($docs/learning/backend/CreateElements.md)
37
- * @public
37
+ * @public @preview
38
38
  */
39
39
  export class Element extends Entity {
40
40
  static get className() { return "Element"; }
@@ -61,6 +61,51 @@ export class Element extends Entity {
61
61
  this.userLabel = props.userLabel;
62
62
  this.jsonProperties = { ...props.jsonProperties }; // make sure we have our own copy
63
63
  }
64
+ /**
65
+ * Element custom HandledProps include 'codeValue', 'codeSpec', 'codeScope', 'model', 'parent', 'federationGuid', and 'lastMod'.
66
+ * @inheritdoc
67
+ * @beta
68
+ */
69
+ static _customHandledProps = [
70
+ { propertyName: "codeValue", source: "Class" },
71
+ { propertyName: "codeSpec", source: "Class" },
72
+ { propertyName: "codeScope", source: "Class" },
73
+ { propertyName: "model", source: "Class" },
74
+ { propertyName: "parent", source: "Class" },
75
+ { propertyName: "federationGuid", source: "Class" },
76
+ { propertyName: "lastMod", source: "Class" },
77
+ ];
78
+ /**
79
+ * Element deserializes 'codeValue', 'codeSpec', 'codeScope', 'model', 'parent', and 'federationGuid'.
80
+ * @inheritdoc
81
+ * @beta
82
+ */
83
+ static deserialize(props) {
84
+ const elProps = super.deserialize(props);
85
+ const instance = props.row;
86
+ elProps.code = { value: instance.codeValue ?? "", spec: instance.codeSpec.id, scope: instance.codeScope.id };
87
+ elProps.model = instance.model.id;
88
+ if (instance.parent)
89
+ elProps.parent = instance.parent;
90
+ if (instance.federationGuid)
91
+ elProps.federationGuid = instance.federationGuid;
92
+ return elProps;
93
+ }
94
+ /**
95
+ * Element serialize 'codeValue', 'codeSpec', 'codeScope', 'model', 'parent', and 'federationGuid'.
96
+ * @inheritdoc
97
+ * @beta
98
+ */
99
+ static serialize(props, iModel) {
100
+ const inst = super.serialize(props, iModel);
101
+ inst.codeValue = props.code.value;
102
+ inst.codeSpec = { id: props.code.spec };
103
+ inst.codeScope = { id: props.code.scope };
104
+ inst.model = { id: props.model };
105
+ inst.parent = props.parent;
106
+ inst.federationGuid = props.federationGuid ?? iModel[_nativeDb].newBeGuid();
107
+ return inst;
108
+ }
64
109
  /** Called before a new Element is inserted.
65
110
  * @note throw an exception to disallow the insert
66
111
  * @note If you override this method, you must call super.
@@ -85,6 +130,7 @@ export class Element extends Entity {
85
130
  const locks = arg.iModel.locks;
86
131
  if (locks && !locks.holdsExclusiveLock(arg.model))
87
132
  locks[_elementWasCreated](arg.id);
133
+ arg.iModel.models[_cache].delete(arg.model);
88
134
  }
89
135
  /** Called before an Element is updated.
90
136
  * @note throw an exception to disallow the update
@@ -103,7 +149,10 @@ export class Element extends Entity {
103
149
  * @note `this` is the class of the Element that was updated
104
150
  * @beta
105
151
  */
106
- static onUpdated(_arg) { }
152
+ static onUpdated(arg) {
153
+ arg.iModel.elements[_cache].delete({ id: arg.id });
154
+ arg.iModel.models[_cache].delete(arg.model);
155
+ }
107
156
  /** Called before an Element is deleted.
108
157
  * @note throw an exception to disallow the delete
109
158
  * @note If you override this method, you must call super.
@@ -119,7 +168,10 @@ export class Element extends Entity {
119
168
  * @note `this` is the class of the Element that was deleted
120
169
  * @beta
121
170
  */
122
- static onDeleted(_arg) { }
171
+ static onDeleted(arg) {
172
+ arg.iModel.elements[_cache].delete(arg);
173
+ arg.iModel.models[_cache].delete(arg.model);
174
+ }
123
175
  /** Called when an element with an instance of this class as its parent is about to be deleted.
124
176
  * @note throw an exception if the element should not be deleted
125
177
  * @note implementers should not presume that the element was deleted if this method does not throw,
@@ -132,7 +184,10 @@ export class Element extends Entity {
132
184
  * @note `this` is the class of the parent Element whose child was deleted
133
185
  * @beta
134
186
  */
135
- static onChildDeleted(_arg) { }
187
+ static onChildDeleted(arg) {
188
+ arg.iModel.elements[_cache].delete({ id: arg.parentId });
189
+ arg.iModel.elements[_cache].delete({ id: arg.childId });
190
+ }
136
191
  /** Called when a *new element* with an instance of this class as its parent is about to be inserted.
137
192
  * @note throw an exception if the element should not be inserted
138
193
  * @note `this` is the class of the prospective parent Element.
@@ -143,7 +198,9 @@ export class Element extends Entity {
143
198
  * @note `this` is the class of the parent Element.
144
199
  * @beta
145
200
  */
146
- static onChildInserted(_arg) { }
201
+ static onChildInserted(arg) {
202
+ arg.iModel.elements[_cache].delete({ id: arg.parentId });
203
+ }
147
204
  /** Called when an element with an instance of this class as its parent is about to be updated.
148
205
  * @note throw an exception if the element should not be updated
149
206
  * @note `this` is the class of the parent Element.
@@ -154,7 +211,9 @@ export class Element extends Entity {
154
211
  * @note `this` is the class of the parent Element.
155
212
  * @beta
156
213
  */
157
- static onChildUpdated(_arg) { }
214
+ static onChildUpdated(arg) {
215
+ arg.iModel.elements[_cache].delete({ id: arg.parentId });
216
+ }
158
217
  /** Called when an *existing element* is about to be updated so that an instance of this class will become its new parent.
159
218
  * @note throw an exception if the element should not be added
160
219
  * @note `this` is the class of the prospective parent Element.
@@ -165,7 +224,9 @@ export class Element extends Entity {
165
224
  * @note `this` is the class of the new parent Element.
166
225
  * @beta
167
226
  */
168
- static onChildAdded(_arg) { }
227
+ static onChildAdded(arg) {
228
+ arg.iModel.elements[_cache].delete({ id: arg.parentId });
229
+ }
169
230
  /** Called when an element with an instance of this class as its parent is about to be updated change to a different parent.
170
231
  * @note throw an exception if the element should not be dropped
171
232
  * @note `this` is the class of the parent Element.
@@ -176,7 +237,9 @@ export class Element extends Entity {
176
237
  * @note `this` is the class of the previous parent Element.
177
238
  * @beta
178
239
  */
179
- static onChildDropped(_arg) { }
240
+ static onChildDropped(arg) {
241
+ arg.iModel.elements[_cache].delete({ id: arg.parentId });
242
+ }
180
243
  /** Called when an instance of this class is being *sub-modeled* by a new Model.
181
244
  * @note throw an exception if model should not be inserted
182
245
  * @note `this` is the class of Element to be sub-modeled.
@@ -187,7 +250,11 @@ export class Element extends Entity {
187
250
  * @note `this` is the class of Element that is now sub-modeled.
188
251
  * @beta
189
252
  */
190
- static onSubModelInserted(_arg) { }
253
+ static onSubModelInserted(arg) {
254
+ const id = arg.subModelId;
255
+ arg.iModel.elements[_cache].delete({ id });
256
+ arg.iModel.models[_cache].delete(id);
257
+ }
191
258
  /** Called when a sub-model of an instance of this class is being deleted.
192
259
  * @note throw an exception if model should not be deleted
193
260
  * @note `this` is the class of Element that is sub-modeled.
@@ -198,7 +265,11 @@ export class Element extends Entity {
198
265
  * @note `this` is the class of Element that was sub-modeled.
199
266
  * @beta
200
267
  */
201
- static onSubModelDeleted(_arg) { }
268
+ static onSubModelDeleted(arg) {
269
+ const id = arg.subModelId;
270
+ arg.iModel.elements[_cache].delete({ id });
271
+ arg.iModel.models[_cache].delete(id);
272
+ }
202
273
  /** Called during the iModel transformation process after an Element from the source iModel was *cloned* for the target iModel.
203
274
  * The transformation process automatically handles remapping BisCore properties and those that are properly described in ECSchema.
204
275
  * This callback is only meant to be overridden if there are other Ids in non-standard locations that need to be remapped or other data that needs to be fixed up after the clone.
@@ -327,7 +398,7 @@ export class Element extends Entity {
327
398
  delete() { this.iModel.elements.deleteElement(this.id); }
328
399
  }
329
400
  /** An abstract base class to model real world entities that intrinsically have geometry.
330
- * @public
401
+ * @public @preview
331
402
  */
332
403
  export class GeometricElement extends Element {
333
404
  static get className() { return "GeometricElement"; }
@@ -366,10 +437,34 @@ export class GeometricElement extends Element {
366
437
  ...super.requiredReferenceKeyTypeMap,
367
438
  category: ConcreteEntityTypes.Element,
368
439
  };
440
+ /**
441
+ * GeometricElement custom HandledProps includes 'inSpatialIndex'.
442
+ * @inheritdoc
443
+ * @beta
444
+ */
445
+ static _customHandledProps = [
446
+ { propertyName: "inSpatialIndex", source: "Class" },
447
+ ];
448
+ /**
449
+ * GeometricElement deserializes 'inSpatialIndex'.
450
+ * @inheritdoc
451
+ * @beta
452
+ */
453
+ static deserialize(props) {
454
+ return super.deserialize(props);
455
+ }
456
+ /**
457
+ * GeometricElement serialize 'inSpatialIndex'.
458
+ * @inheritdoc
459
+ * @beta
460
+ */
461
+ static serialize(props, iModel) {
462
+ return super.serialize(props, iModel);
463
+ }
369
464
  }
370
465
  /** An abstract base class to model real world entities that intrinsically have 3d geometry.
371
466
  * See [how to create a GeometricElement3d]($docs/learning/backend/CreateElements.md#GeometricElement3d).
372
- * @public
467
+ * @public @preview
373
468
  */
374
469
  export class GeometricElement3d extends GeometricElement {
375
470
  static get className() { return "GeometricElement3d"; }
@@ -393,16 +488,133 @@ export class GeometricElement3d extends GeometricElement {
393
488
  if (undefined !== this.typeDefinition)
394
489
  referenceIds.addElement(this.typeDefinition.id);
395
490
  }
491
+ /**
492
+ * GeometricElement3d custom HandledProps includes 'category', 'geometryStream', 'origin', 'yaw', 'pitch', 'roll',
493
+ * 'bBoxLow', 'bBoxHigh', and 'typeDefinition'.
494
+ * @inheritdoc
495
+ * @beta
496
+ */
497
+ static _customHandledProps = [
498
+ { propertyName: "category", source: "Class" },
499
+ { propertyName: "geometryStream", source: "Class" },
500
+ { propertyName: "origin", source: "Class" },
501
+ { propertyName: "yaw", source: "Class" },
502
+ { propertyName: "pitch", source: "Class" },
503
+ { propertyName: "roll", source: "Class" },
504
+ { propertyName: "bBoxLow", source: "Class" },
505
+ { propertyName: "bBoxHigh", source: "Class" },
506
+ { propertyName: "typeDefinition", source: "Class" }
507
+ ];
508
+ /**
509
+ * GeometricElement3d deserializes 'category', 'geometryStream', 'origin', 'yaw', 'pitch', 'roll',
510
+ * 'bBoxLow', 'bBoxHigh', and 'typeDefinition'.
511
+ * @inheritdoc
512
+ * @beta
513
+ */
514
+ static deserialize(props) {
515
+ const elProps = super.deserialize(props);
516
+ const instance = props.row;
517
+ elProps.category = instance.category.id;
518
+ const origin = instance.origin ? [instance.origin.x, instance.origin.y, instance.origin.z] : [0, 0, 0];
519
+ let bbox;
520
+ if ("bBoxHigh" in instance && instance.bBoxHigh !== undefined && "bBoxLow" in instance && instance.bBoxLow !== undefined) {
521
+ bbox = {
522
+ low: [instance.bBoxLow.x, instance.bBoxLow.y, instance.bBoxLow.z],
523
+ high: [instance.bBoxHigh.x, instance.bBoxHigh.y, instance.bBoxHigh.z],
524
+ };
525
+ }
526
+ elProps.placement = {
527
+ origin,
528
+ angles: YawPitchRollAngles.createDegrees(instance.yaw ?? 0, instance.pitch ?? 0, instance.roll ?? 0).toJSON(),
529
+ bbox
530
+ };
531
+ if (instance.geometryStream) {
532
+ elProps.geom = props.iModel[_nativeDb].convertOrUpdateGeometrySource({
533
+ is2d: false,
534
+ geom: instance.geometryStream,
535
+ placement: elProps.placement,
536
+ categoryId: elProps.category
537
+ }, "GeometryStreamProps", props.options?.element ?? {}).geom;
538
+ }
539
+ if (instance.typeDefinition) {
540
+ elProps.typeDefinition = instance.typeDefinition;
541
+ }
542
+ return elProps;
543
+ }
544
+ /**
545
+ * GeometricElement3d serializes 'category', 'geometryStream', 'origin', 'yaw', 'pitch', 'roll',
546
+ * 'bBoxLow', 'bBoxHigh', and 'typeDefinition'.
547
+ * @inheritdoc
548
+ * @beta
549
+ */
550
+ static serialize(props, iModel) {
551
+ const inst = super.serialize(props, iModel);
552
+ inst.category = { id: props.category };
553
+ const assignPlacement = (placement) => {
554
+ if (Array.isArray(placement.origin)) {
555
+ inst.origin = { x: placement.origin[0], y: placement.origin[1], z: placement.origin[2] };
556
+ }
557
+ else {
558
+ inst.origin = placement.origin;
559
+ }
560
+ inst.yaw = placement.angles.yaw;
561
+ inst.pitch = placement.angles.pitch;
562
+ inst.roll = placement.angles.roll;
563
+ if (placement.bbox) {
564
+ if (Array.isArray(placement.bbox.low)) {
565
+ inst.bBoxLow = { x: placement.bbox.low[0], y: placement.bbox.low[1], z: placement.bbox.low[2] };
566
+ }
567
+ else {
568
+ inst.bBoxLow = placement.bbox.low;
569
+ }
570
+ if (Array.isArray(placement.bbox.high)) {
571
+ inst.bBoxHigh = { x: placement.bbox.high[0], y: placement.bbox.high[1], z: placement.bbox.high[2] };
572
+ }
573
+ else {
574
+ inst.bBoxHigh = placement.bbox.high;
575
+ }
576
+ }
577
+ };
578
+ if (props.placement) {
579
+ assignPlacement(props.placement);
580
+ }
581
+ if (props.elementGeometryBuilderParams) {
582
+ const source = iModel[_nativeDb].convertOrUpdateGeometrySource({
583
+ builder: props.elementGeometryBuilderParams,
584
+ is2d: true,
585
+ placement: props.placement,
586
+ categoryId: props.category,
587
+ }, "BinaryStream", {});
588
+ inst.geometryStream = source.geom;
589
+ if (source.placement) {
590
+ assignPlacement(source.placement);
591
+ }
592
+ }
593
+ if (props.geom) {
594
+ const source = iModel[_nativeDb].convertOrUpdateGeometrySource({
595
+ geom: props.geom,
596
+ is2d: false,
597
+ placement: props.placement,
598
+ categoryId: props.category,
599
+ }, "BinaryStream", {});
600
+ inst.geometryStream = source.geom;
601
+ if (source.placement) {
602
+ assignPlacement(source.placement);
603
+ }
604
+ }
605
+ inst.typeDefinition = props.typeDefinition;
606
+ return inst;
607
+ }
396
608
  }
397
609
  /** A 3d Graphical Element
398
- * @public
610
+ * @public @preview
399
611
  */
400
612
  export class GraphicalElement3d extends GeometricElement3d {
401
613
  static get className() { return "GraphicalElement3d"; }
402
614
  constructor(props, iModel) { super(props, iModel); }
403
615
  }
404
616
  /** An abstract base class to model information entities that intrinsically have 2d geometry.
405
- * @public
617
+ * @public @preview
406
618
  */
407
619
  export class GeometricElement2d extends GeometricElement {
408
620
  static get className() { return "GeometricElement2d"; }
@@ -421,6 +633,123 @@ export class GeometricElement2d extends GeometricElement {
421
633
  val.typeDefinition = this.typeDefinition;
422
634
  return val;
423
635
  }
636
+ /**
637
+ * GeometricElement2d custom HandledProps includes 'category', 'geometryStream', 'origin', 'rotation',
638
+ * 'bBoxLow', 'bBoxHigh', and 'typeDefinition'.
639
+ * @inheritdoc
640
+ * @beta
641
+ */
642
+ static _customHandledProps = [
643
+ { propertyName: "category", source: "Class" },
644
+ { propertyName: "geometryStream", source: "Class" },
645
+ { propertyName: "origin", source: "Class" },
646
+ { propertyName: "rotation", source: "Class" },
647
+ { propertyName: "bBoxLow", source: "Class" },
648
+ { propertyName: "bBoxHigh", source: "Class" },
649
+ { propertyName: "typeDefinition", source: "Class" }
650
+ ];
651
+ /**
652
+ * GeometricElement2d deserialize 'category', 'geometryStream', 'origin', 'rotation',
653
+ * 'bBoxLow', 'bBoxHigh', and 'typeDefinition'.
654
+ * @inheritdoc
655
+ * @beta
656
+ */
657
+ static deserialize(props) {
658
+ const elProps = super.deserialize(props);
659
+ const instance = props.row;
660
+ elProps.category = instance.category.id;
661
+ const origin = instance.origin ? [instance.origin.x, instance.origin.y] : [0, 0];
662
+ let bbox;
663
+ if ("bBoxHigh" in instance && instance.bBoxHigh !== undefined && "bBoxLow" in instance && instance.bBoxLow !== undefined) {
664
+ bbox = {
665
+ low: [instance.bBoxLow.x, instance.bBoxLow.y],
666
+ high: [instance.bBoxHigh.x, instance.bBoxHigh.y],
667
+ };
668
+ }
669
+ elProps.placement = {
670
+ origin,
671
+ angle: instance.rotation,
672
+ bbox,
673
+ };
674
+ if (instance.geometryStream) {
675
+ const source = props.iModel[_nativeDb].convertOrUpdateGeometrySource({
676
+ is2d: true,
677
+ geom: instance.geometryStream,
678
+ placement: elProps.placement,
679
+ categoryId: elProps.category
680
+ }, "GeometryStreamProps", props.options?.element ?? {});
681
+ elProps.geom = source.geom;
682
+ if (source.placement) {
683
+ elProps.placement = source.placement;
684
+ }
685
+ }
686
+ if (instance.typeDefinition) {
687
+ elProps.typeDefinition = instance.typeDefinition;
688
+ }
689
+ return elProps;
690
+ }
691
+ /**
692
+ * GeometricElement2d serializes 'category', 'geometryStream', 'origin', 'rotation',
693
+ * 'bBoxLow', 'bBoxHigh', and 'typeDefinition'.
694
+ * @inheritdoc
695
+ * @beta
696
+ */
697
+ static serialize(props, iModel) {
698
+ const inst = super.serialize(props, iModel);
699
+ inst.category = { id: props.category };
700
+ const assignPlacement = (placement) => {
701
+ if (Array.isArray(placement.origin)) {
702
+ inst.origin = { x: placement.origin[0], y: placement.origin[1] };
703
+ }
704
+ else {
705
+ inst.origin = placement.origin;
706
+ }
707
+ inst.rotation = placement.angle;
708
+ if (placement.bbox) {
709
+ if (Array.isArray(placement.bbox.low)) {
710
+ inst.bBoxLow = { x: placement.bbox.low[0], y: placement.bbox.low[1] };
711
+ }
712
+ else {
713
+ inst.bBoxLow = placement.bbox.low;
714
+ }
715
+ if (Array.isArray(placement.bbox.high)) {
716
+ inst.bBoxHigh = { x: placement.bbox.high[0], y: placement.bbox.high[1] };
717
+ }
718
+ else {
719
+ inst.bBoxHigh = placement.bbox.high;
720
+ }
721
+ }
722
+ };
723
+ if (props.placement) {
724
+ assignPlacement(props.placement);
725
+ }
726
+ if (props.elementGeometryBuilderParams) {
727
+ const source = iModel[_nativeDb].convertOrUpdateGeometrySource({
728
+ builder: props.elementGeometryBuilderParams,
729
+ is2d: true,
730
+ placement: props.placement,
731
+ categoryId: props.category,
732
+ }, "BinaryStream", {});
733
+ inst.geometryStream = source.geom;
734
+ if (source.placement) {
735
+ assignPlacement(source.placement);
736
+ }
737
+ }
738
+ if (props.geom) {
739
+ const source = iModel[_nativeDb].convertOrUpdateGeometrySource({
740
+ geom: props.geom,
741
+ is2d: true,
742
+ placement: props.placement,
743
+ categoryId: props.category,
744
+ }, "BinaryStream", {});
745
+ inst.geometryStream = source.geom;
746
+ if (source.placement) {
747
+ assignPlacement(source.placement);
748
+ }
749
+ }
750
+ inst.typeDefinition = props.typeDefinition;
751
+ return inst;
752
+ }
424
753
  collectReferenceIds(referenceIds) {
425
754
  super.collectReferenceIds(referenceIds);
426
755
  if (undefined !== this.typeDefinition)
@@ -428,35 +757,35 @@ export class GeometricElement2d extends GeometricElement {
428
757
  }
429
758
  }
430
759
  /** An abstract base class for 2d Geometric Elements that are used to convey information within graphical presentations (like drawings).
431
- * @public
760
+ * @public @preview
432
761
  */
433
762
  export class GraphicalElement2d extends GeometricElement2d {
434
763
  static get className() { return "GraphicalElement2d"; }
435
764
  constructor(props, iModel) { super(props, iModel); }
436
765
  }
437
766
  /** 2d element used to annotate drawings and sheets.
438
- * @public
767
+ * @public @preview
439
768
  */
440
769
  export class AnnotationElement2d extends GraphicalElement2d {
441
770
  static get className() { return "AnnotationElement2d"; }
442
771
  constructor(props, iModel) { super(props, iModel); }
443
772
  }
444
773
  /** 2d element used to persist graphics for use in drawings.
445
- * @public
774
+ * @public @preview
446
775
  */
447
776
  export class DrawingGraphic extends GraphicalElement2d {
448
777
  static get className() { return "DrawingGraphic"; }
449
778
  constructor(props, iModel) { super(props, iModel); }
450
779
  }
451
780
  /** An Element that occupies real world space. Its coordinates are in the project space of its iModel.
452
- * @public
781
+ * @public @preview
453
782
  */
454
783
  export class SpatialElement extends GeometricElement3d {
455
784
  static get className() { return "SpatialElement"; }
456
785
  constructor(props, iModel) { super(props, iModel); }
457
786
  }
458
787
  /** An Element that is spatially located, has mass, and can be *touched*.
459
- * @public
788
+ * @public @preview
460
789
  */
461
790
  export class PhysicalElement extends SpatialElement {
462
791
  static get className() { return "PhysicalElement"; }
@@ -473,14 +802,14 @@ export class PhysicalElement extends SpatialElement {
473
802
  }
474
803
  }
475
804
  /** Identifies a *tracked* real world location but has no mass and cannot be *touched*.
476
- * @public
805
+ * @public @preview
477
806
  */
478
807
  export class SpatialLocationElement extends SpatialElement {
479
808
  static get className() { return "SpatialLocationElement"; }
480
809
  constructor(props, iModel) { super(props, iModel); }
481
810
  }
482
811
  /** A Volume Element is a Spatial Location Element that is restricted to defining a volume.
483
- * @public
812
+ * @public @preview
484
813
  */
485
814
  export class VolumeElement extends SpatialLocationElement {
486
815
  static get className() { return "VolumeElement"; }
@@ -489,7 +818,7 @@ export class VolumeElement extends SpatialLocationElement {
489
818
  /** A SectionDrawingLocation element identifies the location of a [[SectionDrawing]] in the context of a [[SpatialModel]],
490
819
  * enabling [HyperModeling]($hypermodeling).
491
820
  * @note The associated ECClass was added to the BisCore schema in version 1.0.11.
492
- * @public
821
+ * @public @preview
493
822
  */
494
823
  export class SectionDrawingLocation extends SpatialLocationElement {
495
824
  /** The Id of the [[ViewDefinition]] to which this location refers. */
@@ -509,7 +838,7 @@ export class SectionDrawingLocation extends SpatialLocationElement {
509
838
  /** Information Content Element is an abstract base class for modeling pure information entities. Only the
510
839
  * core framework should directly subclass from Information Content Element. Domain and application developers
511
840
  * should start with the most appropriate subclass of Information Content Element.
512
- * @public
841
+ * @public @preview
513
842
  */
514
843
  export class InformationContentElement extends Element {
515
844
  static get className() { return "InformationContentElement"; }
@@ -524,14 +853,14 @@ export class DriverBundleElement extends InformationContentElement {
524
853
  constructor(props, iModel) { super(props, iModel); }
525
854
  }
526
855
  /** Information Reference is an abstract base class for modeling entities whose main purpose is to reference something else.
527
- * @public
856
+ * @public @preview
528
857
  */
529
858
  export class InformationReferenceElement extends InformationContentElement {
530
859
  static get className() { return "InformationReferenceElement"; }
531
860
  constructor(props, iModel) { super(props, iModel); }
532
861
  }
533
862
  /** A Subject is an information element that describes what this repository (or part thereof) is about.
534
- * @public
863
+ * @public @preview
535
864
  */
536
865
  export class Subject extends InformationReferenceElement {
537
866
  static get className() { return "Subject"; }
@@ -588,14 +917,14 @@ export class Subject extends InformationReferenceElement {
588
917
  * For example, a will is a legal document. The will published into a PDF file is an ElectronicDocumentCopy.
589
918
  * The will printed onto paper is a PrintedDocumentCopy.
590
919
  * In this example, the Document only identifies, names, and tracks the content of the will.
591
- * @public
920
+ * @public @preview
592
921
  */
593
922
  export class Document extends InformationContentElement {
594
923
  static get className() { return "Document"; }
595
924
  constructor(props, iModel) { super(props, iModel); }
596
925
  }
597
926
  /** A document that represents a drawing, that is, a two-dimensional graphical representation of engineering data. A Drawing element is usually modelled by a [[DrawingModel]].
598
- * @public
927
+ * @public @preview
599
928
  */
600
929
  export class Drawing extends Document {
601
930
  _scaleFactor;
@@ -603,7 +932,7 @@ export class Drawing extends Document {
603
932
  * size of the [ViewAttachment]($backend) created when attaching the [Drawing]($backend) to a [Sheet]($backend).
604
933
  * Default: 1.
605
934
  * @note Attempting to set this property to a value less than or equal to zero will produce an exception.
606
- * @public
935
+ * @public @preview
607
936
  */
608
937
  get scaleFactor() { return this._scaleFactor; }
609
938
  set scaleFactor(factor) {
@@ -673,7 +1002,7 @@ export class Drawing extends Document {
673
1002
  /** A document that represents a section drawing, that is, a graphical documentation derived from a planar
674
1003
  * section of a spatial view. A SectionDrawing element is modelled by a [[SectionDrawingModel]] or a [[GraphicalModel3d]].
675
1004
  * A [[SectionDrawingLocation]] can associate the drawing with a spatial location, enabling [HyperModeling]($hypermodeling).
676
- * @public
1005
+ * @public @preview
677
1006
  */
678
1007
  export class SectionDrawing extends Drawing {
679
1008
  /** The type of section used to generate the drawing. */
@@ -724,7 +1053,7 @@ export class SectionDrawing extends Drawing {
724
1053
  }
725
1054
  }
726
1055
  /** The template for a SheetBorder
727
- * @public
1056
+ * @public @preview
728
1057
  */
729
1058
  export class SheetBorderTemplate extends Document {
730
1059
  static get className() { return "SheetBorderTemplate"; }
@@ -737,7 +1066,7 @@ export class SheetBorderTemplate extends Document {
737
1066
  }
738
1067
  }
739
1068
  /** The template for a [[Sheet]]
740
- * @public
1069
+ * @public @preview
741
1070
  */
742
1071
  export class SheetTemplate extends Document {
743
1072
  static get className() { return "SheetTemplate"; }
@@ -757,7 +1086,7 @@ export class SheetTemplate extends Document {
757
1086
  }
758
1087
  }
759
1088
  /** A digital representation of a *sheet of paper*. Modeled by a [[SheetModel]].
760
- * @public
1089
+ * @public @preview
761
1090
  */
762
1091
  export class Sheet extends Document {
763
1092
  static get className() { return "Sheet"; }
@@ -789,14 +1118,14 @@ export class Sheet extends Document {
789
1118
  }
790
1119
  /** Information Record Element is an abstract base class for modeling information records. Information Record
791
1120
  * Element is the default choice if no other subclass of Information Content Element makes sense.
792
- * @public
1121
+ * @public @preview
793
1122
  */
794
1123
  export class InformationRecordElement extends InformationContentElement {
795
1124
  static get className() { return "InformationRecordElement"; }
796
1125
  constructor(props, iModel) { super(props, iModel); }
797
1126
  }
798
1127
  /** A Definition Element holds configuration-related information that is meant to be referenced / shared.
799
- * @public
1128
+ * @public @preview
800
1129
  */
801
1130
  export class DefinitionElement extends InformationContentElement {
802
1131
  static get className() { return "DefinitionElement"; }
@@ -806,6 +1135,37 @@ export class DefinitionElement extends InformationContentElement {
806
1135
  super(props, iModel);
807
1136
  this.isPrivate = true === props.isPrivate;
808
1137
  }
1138
+ /**
1139
+ * DefinitionElement custom HandledProps includes 'isPrivate'.
1140
+ * @inheritdoc
1141
+ * @beta
1142
+ */
1143
+ static _customHandledProps = [
1144
+ { propertyName: "isPrivate", source: "Class" },
1145
+ ];
1146
+ /**
1147
+ * DefinitionElement deserializes 'isPrivate'.
1148
+ * @inheritdoc
1149
+ * @beta
1150
+ */
1151
+ static deserialize(props) {
1152
+ const elProps = super.deserialize(props);
1153
+ if (props.row.isPrivate !== undefined)
1154
+ elProps.isPrivate = props.row.isPrivate;
1155
+ return elProps;
1156
+ }
1157
+ /**
1158
+ * DefinitionElement serialize 'isPrivate'.
1159
+ * @inheritdoc
1160
+ * @beta
1161
+ */
1162
+ static serialize(props, iModel) {
1163
+ const inst = super.serialize(props, iModel);
1164
+ if (undefined !== props.isPrivate) {
1165
+ inst.isPrivate = props.isPrivate;
1166
+ }
1167
+ return inst;
1168
+ }
809
1169
  toJSON() {
810
1170
  const val = super.toJSON();
811
1171
  val.isPrivate = this.isPrivate;
@@ -814,14 +1174,14 @@ export class DefinitionElement extends InformationContentElement {
814
1174
  }
815
1175
  /** This abstract class unifies DefinitionGroup and DefinitionContainer for relationship endpoint purposes.
816
1176
  * @note The associated ECClass was added to the BisCore schema in version 1.0.10
817
- * @public
1177
+ * @public @preview
818
1178
  */
819
1179
  export class DefinitionSet extends DefinitionElement {
820
1180
  static get className() { return "DefinitionSet"; }
821
1181
  }
822
1182
  /** A DefinitionContainer exclusively owns a set of DefinitionElements contained within its sub-model (of type DefinitionModel).
823
1183
  * @note The associated ECClass was added to the BisCore schema in version 1.0.10
824
- * @public
1184
+ * @public @preview
825
1185
  */
826
1186
  export class DefinitionContainer extends DefinitionSet {
827
1187
  static get className() { return "DefinitionContainer"; }
@@ -866,7 +1226,7 @@ export class DefinitionContainer extends DefinitionSet {
866
1226
  }
867
1227
  /** A non-exclusive set of DefinitionElements grouped using the DefinitionGroupGroupsDefinitions relationship.
868
1228
  * @note The associated ECClass was added to the BisCore schema in version 1.0.10
869
- * @public
1229
+ * @public @preview
870
1230
  */
871
1231
  export class DefinitionGroup extends DefinitionSet {
872
1232
  static get className() { return "DefinitionGroup"; }
@@ -890,7 +1250,7 @@ export class DefinitionGroup extends DefinitionSet {
890
1250
  }
891
1251
  }
892
1252
  /** Defines a set of properties (the *type*) that may be associated with an element.
893
- * @public
1253
+ * @public @preview
894
1254
  */
895
1255
  export class TypeDefinitionElement extends DefinitionElement {
896
1256
  static get className() { return "TypeDefinitionElement"; }
@@ -915,7 +1275,7 @@ export class RecipeDefinitionElement extends DefinitionElement {
915
1275
  /** Defines a set of properties (the *type*) that can be associated with a Physical Element. A Physical
916
1276
  * Type has a strong correlation with something that can be ordered from a catalog since all instances
917
1277
  * share a common set of properties.
918
- * @public
1278
+ * @public @preview
919
1279
  */
920
1280
  export class PhysicalType extends TypeDefinitionElement {
921
1281
  static get className() { return "PhysicalType"; }
@@ -941,7 +1301,7 @@ export class PhysicalType extends TypeDefinitionElement {
941
1301
  }
942
1302
  }
943
1303
  /** Defines a set of properties (the *type*) that can be associated with a spatial location.
944
- * @public
1304
+ * @public @preview
945
1305
  */
946
1306
  export class SpatialLocationType extends TypeDefinitionElement {
947
1307
  static get className() { return "SpatialLocationType"; }
@@ -1006,7 +1366,7 @@ export class TemplateRecipe3d extends RecipeDefinitionElement {
1006
1366
  }
1007
1367
  }
1008
1368
  /** Defines a set of properties (the *type*) that can be associated with a 2D Graphical Element.
1009
- * @public
1369
+ * @public @preview
1010
1370
  */
1011
1371
  export class GraphicalType2d extends TypeDefinitionElement {
1012
1372
  static get className() { return "GraphicalType2d"; }
@@ -1073,7 +1433,7 @@ export class TemplateRecipe2d extends RecipeDefinitionElement {
1073
1433
  /** An abstract base class for elements that establishes a particular modeling perspective for its parent Subject.
1074
1434
  * Instances are always sub-modeled by a specialization of Model of the appropriate modeling perspective.
1075
1435
  * @see [iModel Information Hierarchy]($docs/bis/guide/data-organization/top-of-the-world), [[Subject]], [[Model]]
1076
- * @public
1436
+ * @public @preview
1077
1437
  */
1078
1438
  export class InformationPartitionElement extends InformationContentElement {
1079
1439
  static get className() { return "InformationPartitionElement"; }
@@ -1099,7 +1459,7 @@ export class InformationPartitionElement extends InformationContentElement {
1099
1459
  /** A DefinitionPartition element establishes a *Definition* modeling perspective for its parent Subject.
1100
1460
  * A DefinitionPartition is always sub-modeled by a DefinitionModel.
1101
1461
  * @see [[DefinitionModel]]
1102
- * @public
1462
+ * @public @preview
1103
1463
  */
1104
1464
  export class DefinitionPartition extends InformationPartitionElement {
1105
1465
  static get className() { return "DefinitionPartition"; }
@@ -1107,7 +1467,7 @@ export class DefinitionPartition extends InformationPartitionElement {
1107
1467
  /** A DocumentPartition element establishes a *Document* modeling perspective for its parent Subject.
1108
1468
  * A DocumentPartition is always sub-modeled by a DocumentListModel.
1109
1469
  * @see [[DocumentListModel]]
1110
- * @public
1470
+ * @public @preview
1111
1471
  */
1112
1472
  export class DocumentPartition extends InformationPartitionElement {
1113
1473
  static get className() { return "DocumentPartition"; }
@@ -1115,7 +1475,7 @@ export class DocumentPartition extends InformationPartitionElement {
1115
1475
  /** A GroupInformationPartition element establishes a *Group Information* modeling perspective for its parent Subject.
1116
1476
  * A GroupInformationPartition is always sub-modeled by a GroupInformationModel.
1117
1477
  * @see [[GroupInformationModel]]
1118
- * @public
1478
+ * @public @preview
1119
1479
  */
1120
1480
  export class GroupInformationPartition extends InformationPartitionElement {
1121
1481
  static get className() { return "GroupInformationPartition"; }
@@ -1124,7 +1484,7 @@ export class GroupInformationPartition extends InformationPartitionElement {
1124
1484
  * A GraphicalPartition3d is always sub-modeled by a GraphicalModel3d.
1125
1485
  * @note The associated ECClass was added to the BisCore schema in version 1.0.8
1126
1486
  * @see [[GraphicalModel3d]]
1127
- * @public
1487
+ * @public @preview
1128
1488
  */
1129
1489
  export class GraphicalPartition3d extends InformationPartitionElement {
1130
1490
  static get className() { return "GraphicalPartition3d"; }
@@ -1132,21 +1492,21 @@ export class GraphicalPartition3d extends InformationPartitionElement {
1132
1492
  /** An InformationRecordPartition element establishes a *Information Record* modeling perspective for its parent Subject.
1133
1493
  * A InformationRecordPartition is always sub-modeled by an InformationRecordModel.
1134
1494
  * @see [[InformationRecordModel]]
1135
- * @public
1495
+ * @public @preview
1136
1496
  */
1137
1497
  export class InformationRecordPartition extends InformationPartitionElement {
1138
1498
  static get className() { return "InformationRecordPartition"; }
1139
1499
  }
1140
1500
  /** A LinkPartition element establishes a *Link* modeling perspective for its parent Subject. A LinkPartition is always sub-modeled by a LinkModel.
1141
1501
  * @see [[LinkModel]]
1142
- * @public
1502
+ * @public @preview
1143
1503
  */
1144
1504
  export class LinkPartition extends InformationPartitionElement {
1145
1505
  static get className() { return "LinkPartition"; }
1146
1506
  }
1147
1507
  /** A PhysicalPartition element establishes a *Physical* modeling perspective for its parent Subject. A PhysicalPartition is always sub-modeled by a PhysicalModel.
1148
1508
  * @see [[PhysicalModel]]
1149
- * @public
1509
+ * @public @preview
1150
1510
  */
1151
1511
  export class PhysicalPartition extends InformationPartitionElement {
1152
1512
  static get className() { return "PhysicalPartition"; }
@@ -1154,7 +1514,7 @@ export class PhysicalPartition extends InformationPartitionElement {
1154
1514
  /** A SpatialLocationPartition element establishes a *SpatialLocation* modeling perspective for its parent Subject.
1155
1515
  * A SpatialLocationPartition is always sub-modeled by a SpatialLocationModel.
1156
1516
  * @see [[SpatialLocationModel]]
1157
- * @public
1517
+ * @public @preview
1158
1518
  */
1159
1519
  export class SpatialLocationPartition extends InformationPartitionElement {
1160
1520
  static get className() { return "SpatialLocationPartition"; }
@@ -1167,13 +1527,13 @@ export class SheetIndexPartition extends InformationPartitionElement {
1167
1527
  static get className() { return "SheetIndexPartition"; }
1168
1528
  }
1169
1529
  /** Group Information is an abstract base class for modeling entities whose main purpose is to reference a group of related elements.
1170
- * @public
1530
+ * @public @preview
1171
1531
  */
1172
1532
  export class GroupInformationElement extends InformationReferenceElement {
1173
1533
  static get className() { return "GroupInformationElement"; }
1174
1534
  }
1175
1535
  /** An information element that specifies a link.
1176
- * @public
1536
+ * @public @preview
1177
1537
  */
1178
1538
  export class LinkElement extends InformationReferenceElement {
1179
1539
  static get className() { return "LinkElement"; }
@@ -1188,7 +1548,7 @@ export class LinkElement extends InformationReferenceElement {
1188
1548
  }
1189
1549
  }
1190
1550
  /** An information element that specifies a URL link.
1191
- * @public
1551
+ * @public @preview
1192
1552
  */
1193
1553
  export class UrlLink extends LinkElement {
1194
1554
  static get className() { return "UrlLink"; }
@@ -1199,6 +1559,36 @@ export class UrlLink extends LinkElement {
1199
1559
  this.description = props.description;
1200
1560
  this.url = props.url;
1201
1561
  }
1562
+ /**
1563
+ * UrlLink custom HandledProps includes 'description', and 'url'.
1564
+ * @inheritdoc
1565
+ * @beta
1566
+ */
1567
+ static _customHandledProps = [
1568
+ { propertyName: "description", source: "Class" },
1569
+ { propertyName: "url", source: "Class" },
1570
+ ];
1571
+ /**
1572
+ * UrlLink deserializes 'description', and 'url'.
1573
+ * @inheritdoc
1574
+ * @beta
1575
+ */
1576
+ static deserialize(props) {
1577
+ const elProps = super.deserialize(props);
1578
+ elProps.description = props.row.description ?? "";
1579
+ elProps.url = props.row.url;
1580
+ return elProps;
1581
+ }
1582
+ /**
1583
+ * UrlLink serializes 'description', and 'url'.
1584
+ * @inheritdoc
1585
+ * @beta
1586
+ */
1587
+ static serialize(props, iModel) {
1588
+ const inst = super.serialize(props, iModel);
1589
+ inst.description = props.description;
1590
+ return inst;
1591
+ }
1202
1592
  toJSON() {
1203
1593
  const val = super.toJSON();
1204
1594
  val.description = this.description;
@@ -1214,7 +1604,7 @@ export class FolderLink extends UrlLink {
1214
1604
  static get className() { return "FolderLink"; }
1215
1605
  }
1216
1606
  /** An information element that links to a repository.
1217
- * @public
1607
+ * @public @preview
1218
1608
  */
1219
1609
  export class RepositoryLink extends UrlLink {
1220
1610
  static get className() { return "RepositoryLink"; }
@@ -1234,7 +1624,7 @@ export class RepositoryLink extends UrlLink {
1234
1624
  }
1235
1625
  }
1236
1626
  /** An information element that links to an embedded file.
1237
- * @public
1627
+ * @public @preview
1238
1628
  */
1239
1629
  export class EmbeddedFileLink extends LinkElement {
1240
1630
  static get className() { return "EmbeddedFileLink"; }
@@ -1242,14 +1632,14 @@ export class EmbeddedFileLink extends LinkElement {
1242
1632
  /** A real world entity is modeled as a Role Element when a set of external circumstances define an important
1243
1633
  * role (one that is worth tracking) that is not intrinsic to the entity playing the role. For example,
1244
1634
  * a person can play the role of a teacher or a rock can play the role of a boundary marker.
1245
- * @public
1635
+ * @public @preview
1246
1636
  */
1247
1637
  export class RoleElement extends Element {
1248
1638
  static get className() { return "RoleElement"; }
1249
1639
  }
1250
1640
  /** A Definition Element that specifies a collection of geometry that is meant to be reused across Geometric
1251
1641
  * Element instances. Leveraging Geometry Parts can help reduce file size and improve display performance.
1252
- * @public
1642
+ * @public @preview
1253
1643
  */
1254
1644
  export class GeometryPart extends DefinitionElement {
1255
1645
  static get className() { return "GeometryPart"; }
@@ -1260,6 +1650,73 @@ export class GeometryPart extends DefinitionElement {
1260
1650
  this.geom = props.geom;
1261
1651
  this.bbox = Range3d.fromJSON(props.bbox);
1262
1652
  }
1653
+ /**
1654
+ * GeometryPart custom HandledProps includes 'geometryStream', 'bBoxHigh', and 'bBoxLow'.
1655
+ * @inheritdoc
1656
+ * @beta
1657
+ */
1658
+ static _customHandledProps = [
1659
+ { propertyName: "geometryStream", source: "Class" },
1660
+ { propertyName: "bBoxLow", source: "Class" },
1661
+ { propertyName: "bBoxHigh", source: "Class" },
1662
+ ];
1663
+ /**
1664
+ * GeometryPart deserializes 'geometryStream', 'bBoxHigh', and 'bBoxLow'.
1665
+ * @inheritdoc
1666
+ * @beta
1667
+ */
1668
+ static deserialize(props) {
1669
+ const elProps = super.deserialize(props);
1670
+ const instance = props.row;
1671
+ if ("bBoxHigh" in instance && instance.bBoxHigh !== undefined && "bBoxLow" in instance && instance.bBoxLow !== undefined) {
1672
+ elProps.bbox = {
1673
+ low: [instance.bBoxLow.x, instance.bBoxLow.y, instance.bBoxLow.z],
1674
+ high: [instance.bBoxHigh.x, instance.bBoxHigh.y, instance.bBoxHigh.z],
1675
+ };
1676
+ }
1677
+ if (instance.geometryStream) {
1678
+ elProps.geom = props.iModel[_nativeDb].convertOrUpdateGeometryPart({
1679
+ geom: instance.geometryStream,
1680
+ is2d: false,
1681
+ bbox: elProps.bbox,
1682
+ }, "GeometryStreamProps", props.options?.element ?? {}).geom;
1683
+ }
1684
+ return elProps;
1685
+ }
1686
+ /**
1687
+ * GeometryPart serialize 'geometryStream', 'bBoxHigh', and 'bBoxLow'.
1688
+ * @inheritdoc
1689
+ * @beta
1690
+ */
1691
+ static serialize(props, iModel) {
1692
+ const inst = super.serialize(props, iModel);
1693
+ if (undefined !== props.geom) {
1694
+ const source = inst.geometryStream = iModel[_nativeDb].convertOrUpdateGeometryPart({
1695
+ geom: props.geom,
1696
+ is2d: false,
1697
+ bbox: props.bbox,
1698
+ }, "BinaryStream", {});
1699
+ inst.geometryStream = source.geom;
1700
+ if (source.bbox) {
1701
+ props.bbox = source.bbox;
1702
+ }
1703
+ }
1704
+ if (undefined !== props.bbox) {
1705
+ if (Array.isArray(props.bbox.low)) {
1706
+ inst.bBoxLow = { x: props.bbox.low[0], y: props.bbox.low[1], z: props.bbox.low[2] };
1707
+ }
1708
+ else {
1709
+ inst.bBoxLow = props.bbox.low;
1710
+ }
1711
+ if (Array.isArray(props.bbox.high)) {
1712
+ inst.bBoxHigh = { x: props.bbox.high[0], y: props.bbox.high[1], z: props.bbox.high[2] };
1713
+ }
1714
+ else {
1715
+ inst.bBoxHigh = props.bbox.high;
1716
+ }
1717
+ }
1718
+ return inst;
1719
+ }
1263
1720
  toJSON() {
1264
1721
  const val = super.toJSON();
1265
1722
  val.geom = this.geom;
@@ -1278,7 +1735,7 @@ export class GeometryPart extends DefinitionElement {
1278
1735
  }
1279
1736
  }
1280
1737
  /** The definition element for a line style
1281
- * @public
1738
+ * @public @preview
1282
1739
  */
1283
1740
  export class LineStyle extends DefinitionElement {
1284
1741
  static get className() { return "LineStyle"; }
@@ -1289,6 +1746,35 @@ export class LineStyle extends DefinitionElement {
1289
1746
  this.description = props.description;
1290
1747
  this.data = props.data;
1291
1748
  }
1749
+ /**
1750
+ * LineStyle custom HandledProps includes 'data'.
1751
+ * @inheritdoc
1752
+ * @beta
1753
+ */
1754
+ static _customHandledProps = [
1755
+ { propertyName: "data", source: "Class" },
1756
+ ];
1757
+ /**
1758
+ * LineStyle deserializes 'data'.
1759
+ * @inheritdoc
1760
+ * @beta
1761
+ */
1762
+ static deserialize(props) {
1763
+ const elProps = super.deserialize(props);
1764
+ const instance = props.row;
1765
+ elProps.data = instance.data ?? "";
1766
+ return elProps;
1767
+ }
1768
+ /**
1769
+ * LineStyle serializes 'data'.
1770
+ * @inheritdoc
1771
+ * @beta
1772
+ */
1773
+ static serialize(props, iModel) {
1774
+ const inst = super.serialize(props, iModel);
1775
+ inst.data = props.data;
1776
+ return inst;
1777
+ }
1292
1778
  /** Create a Code for a LineStyle definition given a name that is meant to be unique within the scope of the specified model.
1293
1779
  * @param iModel The IModel
1294
1780
  * @param scopeModelId The Id of the DefinitionModel that contains the LineStyle and provides the scope for its name.
@@ -1301,7 +1787,7 @@ export class LineStyle extends DefinitionElement {
1301
1787
  }
1302
1788
  /** Describes how to animate a view of a [[GeometricModel]] to show change over time using a [RenderSchedule.Script]($common).
1303
1789
  * @note This class was introduced in version 01.00.13 of the BisCore ECSchema. It should only be used with [[IModelDb]]s containing that version or newer.
1304
- * @public
1790
+ * @public @preview
1305
1791
  */
1306
1792
  export class RenderTimeline extends InformationRecordElement {
1307
1793
  static get className() { return "RenderTimeline"; }
@@ -1326,6 +1812,21 @@ export class RenderTimeline extends InformationRecordElement {
1326
1812
  props.script = JSON.stringify(this.scriptProps);
1327
1813
  return props;
1328
1814
  }
1815
+ /**
1816
+ * RenderTimeline deserialize checks if Schedule Script Element Ids need to be omitted, and if so, removes them.
1817
+ * @inheritdoc
1818
+ * @beta
1819
+ */
1820
+ static deserialize(props) {
1821
+ const elProps = super.deserialize(props);
1822
+ const options = props.options?.element?.renderTimeline;
1823
+ // Omit Schedule Script Element Ids if the option is set
1824
+ if (options?.omitScriptElementIds && elProps.script) {
1825
+ const scriptProps = RenderTimeline.parseScriptProps(elProps.script);
1826
+ elProps.script = JSON.stringify(RenderSchedule.Script.removeScheduleScriptElementIds(scriptProps));
1827
+ }
1828
+ return elProps;
1829
+ }
1329
1830
  static parseScriptProps(json) {
1330
1831
  try {
1331
1832
  return JSON.parse(json);