@itwin/core-backend 5.0.0-dev.110 → 5.0.0-dev.112

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 (419) hide show
  1. package/CHANGELOG.md +21 -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.map +1 -1
  5. package/lib/cjs/BlobContainerService.js.map +1 -1
  6. package/lib/cjs/BriefcaseManager.js.map +1 -1
  7. package/lib/cjs/CatalogDb.js.map +1 -1
  8. package/lib/cjs/Category.d.ts +37 -0
  9. package/lib/cjs/Category.d.ts.map +1 -1
  10. package/lib/cjs/Category.js +73 -0
  11. package/lib/cjs/Category.js.map +1 -1
  12. package/lib/cjs/ChangeSummaryManager.js +2 -2
  13. package/lib/cjs/ChangeSummaryManager.js.map +1 -1
  14. package/lib/cjs/ChangedElementsDb.js.map +1 -1
  15. package/lib/cjs/ChangesetECAdaptor.js +242 -242
  16. package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
  17. package/lib/cjs/ChannelControl.js.map +1 -1
  18. package/lib/cjs/CheckpointManager.js.map +1 -1
  19. package/lib/cjs/ClassRegistry.js +5 -5
  20. package/lib/cjs/ClassRegistry.js.map +1 -1
  21. package/lib/cjs/CloudSqlite.js.map +1 -1
  22. package/lib/cjs/CodeService.js.map +1 -1
  23. package/lib/cjs/CodeSpecs.js.map +1 -1
  24. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  25. package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
  26. package/lib/cjs/DevTools.js.map +1 -1
  27. package/lib/cjs/DisplayStyle.d.ts +5 -0
  28. package/lib/cjs/DisplayStyle.d.ts.map +1 -1
  29. package/lib/cjs/DisplayStyle.js +27 -0
  30. package/lib/cjs/DisplayStyle.js.map +1 -1
  31. package/lib/cjs/ECDb.js.map +1 -1
  32. package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
  33. package/lib/cjs/ECSqlStatement.js.map +1 -1
  34. package/lib/cjs/Element.d.ts +166 -10
  35. package/lib/cjs/Element.d.ts.map +1 -1
  36. package/lib/cjs/Element.js +510 -9
  37. package/lib/cjs/Element.js.map +1 -1
  38. package/lib/cjs/ElementAspect.js.map +1 -1
  39. package/lib/cjs/ElementGraphics.js.map +1 -1
  40. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  41. package/lib/cjs/Entity.d.ts +41 -1
  42. package/lib/cjs/Entity.d.ts.map +1 -1
  43. package/lib/cjs/Entity.js +58 -0
  44. package/lib/cjs/Entity.js.map +1 -1
  45. package/lib/cjs/EntityReferences.js.map +1 -1
  46. package/lib/cjs/ExportGraphics.js.map +1 -1
  47. package/lib/cjs/ExternalSource.js.map +1 -1
  48. package/lib/cjs/FontFile.js.map +1 -1
  49. package/lib/cjs/GeoCoordConfig.js.map +1 -1
  50. package/lib/cjs/GeographicCRSServices.js.map +1 -1
  51. package/lib/cjs/GeometrySummary.js +47 -47
  52. package/lib/cjs/GeometrySummary.js.map +1 -1
  53. package/lib/cjs/IModelDb.d.ts +19 -36
  54. package/lib/cjs/IModelDb.d.ts.map +1 -1
  55. package/lib/cjs/IModelDb.js +137 -77
  56. package/lib/cjs/IModelDb.js.map +1 -1
  57. package/lib/cjs/IModelDbFonts.js.map +1 -1
  58. package/lib/cjs/IModelElementCloneContext.js.map +1 -1
  59. package/lib/cjs/IModelHost.d.ts +13 -0
  60. package/lib/cjs/IModelHost.d.ts.map +1 -1
  61. package/lib/cjs/IModelHost.js +6 -0
  62. package/lib/cjs/IModelHost.js.map +1 -1
  63. package/lib/cjs/IModelJsFs.js.map +1 -1
  64. package/lib/cjs/ImageSourceConversion.js.map +1 -1
  65. package/lib/cjs/IpcHost.js.map +1 -1
  66. package/lib/cjs/LineStyle.js.map +1 -1
  67. package/lib/cjs/LocalHub.js +1 -1
  68. package/lib/cjs/LocalHub.js.map +1 -1
  69. package/lib/cjs/LocalhostIpcHost.js.map +1 -1
  70. package/lib/cjs/LockControl.js.map +1 -1
  71. package/lib/cjs/Material.d.ts +19 -0
  72. package/lib/cjs/Material.d.ts.map +1 -1
  73. package/lib/cjs/Material.js +29 -0
  74. package/lib/cjs/Material.js.map +1 -1
  75. package/lib/cjs/Model.d.ts +42 -6
  76. package/lib/cjs/Model.d.ts.map +1 -1
  77. package/lib/cjs/Model.js +93 -5
  78. package/lib/cjs/Model.js.map +1 -1
  79. package/lib/cjs/NativeAppStorage.js.map +1 -1
  80. package/lib/cjs/NativeHost.js.map +1 -1
  81. package/lib/cjs/NavigationRelationship.js.map +1 -1
  82. package/lib/cjs/PromiseMemoizer.js.map +1 -1
  83. package/lib/cjs/PropertyStore.js.map +1 -1
  84. package/lib/cjs/Relationship.js.map +1 -1
  85. package/lib/cjs/RpcBackend.js.map +1 -1
  86. package/lib/cjs/SQLiteDb.js.map +1 -1
  87. package/lib/cjs/Schema.js.map +1 -1
  88. package/lib/cjs/SchemaSync.js.map +1 -1
  89. package/lib/cjs/SchemaUtils.js.map +1 -1
  90. package/lib/cjs/SheetIndex.js.map +1 -1
  91. package/lib/cjs/SqliteChangesetReader.js.map +1 -1
  92. package/lib/cjs/SqliteStatement.js.map +1 -1
  93. package/lib/cjs/TextAnnotationElement.js.map +1 -1
  94. package/lib/cjs/TextAnnotationGeometry.js.map +1 -1
  95. package/lib/cjs/TextAnnotationLayout.js.map +1 -1
  96. package/lib/cjs/Texture.js.map +1 -1
  97. package/lib/cjs/TileStorage.js.map +1 -1
  98. package/lib/cjs/TxnManager.d.ts.map +1 -1
  99. package/lib/cjs/TxnManager.js +1 -0
  100. package/lib/cjs/TxnManager.js.map +1 -1
  101. package/lib/cjs/ViewDefinition.d.ts +100 -0
  102. package/lib/cjs/ViewDefinition.d.ts.map +1 -1
  103. package/lib/cjs/ViewDefinition.js +208 -0
  104. package/lib/cjs/ViewDefinition.js.map +1 -1
  105. package/lib/cjs/ViewStateHydrator.js +3 -3
  106. package/lib/cjs/ViewStateHydrator.js.map +1 -1
  107. package/lib/cjs/ViewStore.js.map +1 -1
  108. package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
  109. package/lib/cjs/assets/Settings/Schemas/Base.Schema.json +32 -32
  110. package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +27 -27
  111. package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +94 -94
  112. package/lib/cjs/assets/Settings/backend.setting.json5 +21 -21
  113. package/lib/cjs/core-backend.js.map +1 -1
  114. package/lib/cjs/domains/FunctionalElements.js.map +1 -1
  115. package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
  116. package/lib/cjs/domains/GenericElements.js.map +1 -1
  117. package/lib/cjs/domains/GenericSchema.js.map +1 -1
  118. package/lib/cjs/internal/ChangesetConflictArgs.js.map +1 -1
  119. package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
  120. package/lib/cjs/internal/ElementLRUCache.d.ts +28 -0
  121. package/lib/cjs/internal/ElementLRUCache.d.ts.map +1 -0
  122. package/lib/cjs/internal/ElementLRUCache.js +120 -0
  123. package/lib/cjs/internal/ElementLRUCache.js.map +1 -0
  124. package/lib/cjs/internal/FontFileImpl.js.map +1 -1
  125. package/lib/cjs/internal/HubMock.js.map +1 -1
  126. package/lib/cjs/internal/IModelDbFontsImpl.js.map +1 -1
  127. package/lib/cjs/internal/NativePlatform.js.map +1 -1
  128. package/lib/cjs/internal/NoLocks.js.map +1 -1
  129. package/lib/cjs/internal/ServerBasedLocks.js.map +1 -1
  130. package/lib/cjs/internal/Symbols.d.ts +1 -0
  131. package/lib/cjs/internal/Symbols.d.ts.map +1 -1
  132. package/lib/cjs/internal/Symbols.js +2 -1
  133. package/lib/cjs/internal/Symbols.js.map +1 -1
  134. package/lib/cjs/internal/cross-package.js.map +1 -1
  135. package/lib/cjs/internal/workspace/SettingsImpl.js.map +1 -1
  136. package/lib/cjs/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  137. package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -1
  138. package/lib/cjs/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  139. package/lib/cjs/rpc/multipart.js.map +1 -1
  140. package/lib/cjs/rpc/tracing.js.map +1 -1
  141. package/lib/cjs/rpc/web/logging.js.map +1 -1
  142. package/lib/cjs/rpc/web/request.js.map +1 -1
  143. package/lib/cjs/rpc/web/response.js.map +1 -1
  144. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  145. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js +2 -2
  146. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  147. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  148. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  149. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  150. package/lib/cjs/workspace/Settings.js.map +1 -1
  151. package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
  152. package/lib/cjs/workspace/Workspace.js.map +1 -1
  153. package/lib/cjs/workspace/WorkspaceEditor.js.map +1 -1
  154. package/lib/esm/BackendHubAccess.js.map +1 -1
  155. package/lib/esm/BackendLoggerCategory.js.map +1 -1
  156. package/lib/esm/BisCoreSchema.js.map +1 -1
  157. package/lib/esm/BlobContainerService.js.map +1 -1
  158. package/lib/esm/BriefcaseManager.js.map +1 -1
  159. package/lib/esm/CatalogDb.js.map +1 -1
  160. package/lib/esm/Category.d.ts +37 -0
  161. package/lib/esm/Category.d.ts.map +1 -1
  162. package/lib/esm/Category.js +73 -0
  163. package/lib/esm/Category.js.map +1 -1
  164. package/lib/esm/ChangeSummaryManager.js +2 -2
  165. package/lib/esm/ChangeSummaryManager.js.map +1 -1
  166. package/lib/esm/ChangedElementsDb.js.map +1 -1
  167. package/lib/esm/ChangesetECAdaptor.js +242 -242
  168. package/lib/esm/ChangesetECAdaptor.js.map +1 -1
  169. package/lib/esm/ChannelControl.js.map +1 -1
  170. package/lib/esm/CheckpointManager.js.map +1 -1
  171. package/lib/esm/ClassRegistry.js +5 -5
  172. package/lib/esm/ClassRegistry.js.map +1 -1
  173. package/lib/esm/CloudSqlite.js.map +1 -1
  174. package/lib/esm/CodeService.js.map +1 -1
  175. package/lib/esm/CodeSpecs.js.map +1 -1
  176. package/lib/esm/ConcurrentQuery.js.map +1 -1
  177. package/lib/esm/CustomViewState3dCreator.js.map +1 -1
  178. package/lib/esm/DevTools.js.map +1 -1
  179. package/lib/esm/DisplayStyle.d.ts +5 -0
  180. package/lib/esm/DisplayStyle.d.ts.map +1 -1
  181. package/lib/esm/DisplayStyle.js +27 -0
  182. package/lib/esm/DisplayStyle.js.map +1 -1
  183. package/lib/esm/ECDb.js.map +1 -1
  184. package/lib/esm/ECSchemaXmlContext.js.map +1 -1
  185. package/lib/esm/ECSqlStatement.js.map +1 -1
  186. package/lib/esm/Element.d.ts +166 -10
  187. package/lib/esm/Element.d.ts.map +1 -1
  188. package/lib/esm/Element.js +513 -12
  189. package/lib/esm/Element.js.map +1 -1
  190. package/lib/esm/ElementAspect.js.map +1 -1
  191. package/lib/esm/ElementGraphics.js.map +1 -1
  192. package/lib/esm/ElementTreeWalker.js.map +1 -1
  193. package/lib/esm/Entity.d.ts +41 -1
  194. package/lib/esm/Entity.d.ts.map +1 -1
  195. package/lib/esm/Entity.js +58 -0
  196. package/lib/esm/Entity.js.map +1 -1
  197. package/lib/esm/EntityReferences.js.map +1 -1
  198. package/lib/esm/ExportGraphics.js.map +1 -1
  199. package/lib/esm/ExternalSource.js.map +1 -1
  200. package/lib/esm/FontFile.js.map +1 -1
  201. package/lib/esm/GeoCoordConfig.js.map +1 -1
  202. package/lib/esm/GeographicCRSServices.js.map +1 -1
  203. package/lib/esm/GeometrySummary.js +47 -47
  204. package/lib/esm/GeometrySummary.js.map +1 -1
  205. package/lib/esm/IModelDb.d.ts +19 -36
  206. package/lib/esm/IModelDb.d.ts.map +1 -1
  207. package/lib/esm/IModelDb.js +140 -80
  208. package/lib/esm/IModelDb.js.map +1 -1
  209. package/lib/esm/IModelDbFonts.js.map +1 -1
  210. package/lib/esm/IModelElementCloneContext.js.map +1 -1
  211. package/lib/esm/IModelHost.d.ts +13 -0
  212. package/lib/esm/IModelHost.d.ts.map +1 -1
  213. package/lib/esm/IModelHost.js +6 -0
  214. package/lib/esm/IModelHost.js.map +1 -1
  215. package/lib/esm/IModelJsFs.js.map +1 -1
  216. package/lib/esm/ImageSourceConversion.js.map +1 -1
  217. package/lib/esm/IpcHost.js.map +1 -1
  218. package/lib/esm/LineStyle.js.map +1 -1
  219. package/lib/esm/LocalHub.js +1 -1
  220. package/lib/esm/LocalHub.js.map +1 -1
  221. package/lib/esm/LocalhostIpcHost.js.map +1 -1
  222. package/lib/esm/LockControl.js.map +1 -1
  223. package/lib/esm/Material.d.ts +19 -0
  224. package/lib/esm/Material.d.ts.map +1 -1
  225. package/lib/esm/Material.js +30 -1
  226. package/lib/esm/Material.js.map +1 -1
  227. package/lib/esm/Model.d.ts +42 -6
  228. package/lib/esm/Model.d.ts.map +1 -1
  229. package/lib/esm/Model.js +94 -6
  230. package/lib/esm/Model.js.map +1 -1
  231. package/lib/esm/NativeAppStorage.js.map +1 -1
  232. package/lib/esm/NativeHost.js.map +1 -1
  233. package/lib/esm/NavigationRelationship.js.map +1 -1
  234. package/lib/esm/PromiseMemoizer.js.map +1 -1
  235. package/lib/esm/PropertyStore.js.map +1 -1
  236. package/lib/esm/Relationship.js.map +1 -1
  237. package/lib/esm/RpcBackend.js.map +1 -1
  238. package/lib/esm/SQLiteDb.js.map +1 -1
  239. package/lib/esm/Schema.js.map +1 -1
  240. package/lib/esm/SchemaSync.js.map +1 -1
  241. package/lib/esm/SchemaUtils.js.map +1 -1
  242. package/lib/esm/SheetIndex.js.map +1 -1
  243. package/lib/esm/SqliteChangesetReader.js.map +1 -1
  244. package/lib/esm/SqliteStatement.js.map +1 -1
  245. package/lib/esm/TextAnnotationElement.js.map +1 -1
  246. package/lib/esm/TextAnnotationGeometry.js.map +1 -1
  247. package/lib/esm/TextAnnotationLayout.js.map +1 -1
  248. package/lib/esm/Texture.js.map +1 -1
  249. package/lib/esm/TileStorage.js.map +1 -1
  250. package/lib/esm/TxnManager.d.ts.map +1 -1
  251. package/lib/esm/TxnManager.js +1 -0
  252. package/lib/esm/TxnManager.js.map +1 -1
  253. package/lib/esm/ViewDefinition.d.ts +100 -0
  254. package/lib/esm/ViewDefinition.d.ts.map +1 -1
  255. package/lib/esm/ViewDefinition.js +209 -1
  256. package/lib/esm/ViewDefinition.js.map +1 -1
  257. package/lib/esm/ViewStateHydrator.js +3 -3
  258. package/lib/esm/ViewStateHydrator.js.map +1 -1
  259. package/lib/esm/ViewStore.js.map +1 -1
  260. package/lib/esm/core-backend.js.map +1 -1
  261. package/lib/esm/domains/FunctionalElements.js.map +1 -1
  262. package/lib/esm/domains/FunctionalSchema.js.map +1 -1
  263. package/lib/esm/domains/GenericElements.js.map +1 -1
  264. package/lib/esm/domains/GenericSchema.js.map +1 -1
  265. package/lib/esm/internal/ChangesetConflictArgs.js.map +1 -1
  266. package/lib/esm/internal/ChannelAdmin.js.map +1 -1
  267. package/lib/esm/internal/ElementLRUCache.d.ts +28 -0
  268. package/lib/esm/internal/ElementLRUCache.d.ts.map +1 -0
  269. package/lib/esm/internal/ElementLRUCache.js +116 -0
  270. package/lib/esm/internal/ElementLRUCache.js.map +1 -0
  271. package/lib/esm/internal/FontFileImpl.js.map +1 -1
  272. package/lib/esm/internal/HubMock.js.map +1 -1
  273. package/lib/esm/internal/IModelDbFontsImpl.js.map +1 -1
  274. package/lib/esm/internal/NativePlatform.js.map +1 -1
  275. package/lib/esm/internal/NoLocks.js.map +1 -1
  276. package/lib/esm/internal/ServerBasedLocks.js.map +1 -1
  277. package/lib/esm/internal/Symbols.d.ts +1 -0
  278. package/lib/esm/internal/Symbols.d.ts.map +1 -1
  279. package/lib/esm/internal/Symbols.js +1 -0
  280. package/lib/esm/internal/Symbols.js.map +1 -1
  281. package/lib/esm/internal/cross-package.js.map +1 -1
  282. package/lib/esm/internal/workspace/SettingsImpl.js.map +1 -1
  283. package/lib/esm/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  284. package/lib/esm/internal/workspace/WorkspaceImpl.js.map +1 -1
  285. package/lib/esm/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  286. package/lib/esm/rpc/multipart.js.map +1 -1
  287. package/lib/esm/rpc/tracing.js.map +1 -1
  288. package/lib/esm/rpc/web/logging.js.map +1 -1
  289. package/lib/esm/rpc/web/request.js.map +1 -1
  290. package/lib/esm/rpc/web/response.js.map +1 -1
  291. package/lib/esm/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  292. package/lib/esm/rpc-impl/IModelReadRpcImpl.js +2 -2
  293. package/lib/esm/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  294. package/lib/esm/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  295. package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  296. package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  297. package/lib/esm/test/AdvancedEqual.js.map +1 -1
  298. package/lib/esm/test/AttachDb.test.js +11 -11
  299. package/lib/esm/test/AttachDb.test.js.map +1 -1
  300. package/lib/esm/test/ElementLRUCache.test.d.ts +2 -0
  301. package/lib/esm/test/ElementLRUCache.test.d.ts.map +1 -0
  302. package/lib/esm/test/ElementLRUCache.test.js +212 -0
  303. package/lib/esm/test/ElementLRUCache.test.js.map +1 -0
  304. package/lib/esm/test/GeometryTestUtil.js.map +1 -1
  305. package/lib/esm/test/IModelHost.test.js.map +1 -1
  306. package/lib/esm/test/IModelTestUtils.js.map +1 -1
  307. package/lib/esm/test/ImageSourceConversion.test.js.map +1 -1
  308. package/lib/esm/test/IpcHost.test.js.map +1 -1
  309. package/lib/esm/test/KnownTestLocations.js.map +1 -1
  310. package/lib/esm/test/PrintElementTree.js.map +1 -1
  311. package/lib/esm/test/PropertyDb.test.js.map +1 -1
  312. package/lib/esm/test/RevisionUtility.js.map +1 -1
  313. package/lib/esm/test/SchemaUtils.test.js +25 -25
  314. package/lib/esm/test/SchemaUtils.test.js.map +1 -1
  315. package/lib/esm/test/SequentialLogMatcher.js.map +1 -1
  316. package/lib/esm/test/TestChangeSetUtility.js.map +1 -1
  317. package/lib/esm/test/TestUtils.js.map +1 -1
  318. package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -1
  319. package/lib/esm/test/categories/Category.test.js.map +1 -1
  320. package/lib/esm/test/codespec/CodeSpec.test.js.map +1 -1
  321. package/lib/esm/test/ecdb/CTE.test.js +88 -88
  322. package/lib/esm/test/ecdb/CTE.test.js.map +1 -1
  323. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js +15 -15
  324. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js.map +1 -1
  325. package/lib/esm/test/ecdb/ECDb.test.js +57 -57
  326. package/lib/esm/test/ecdb/ECDb.test.js.map +1 -1
  327. package/lib/esm/test/ecdb/ECDbTestHelper.js.map +1 -1
  328. package/lib/esm/test/ecdb/ECSchemaXmlContext.test.js.map +1 -1
  329. package/lib/esm/test/ecdb/ECSqlAst.test.js +65 -65
  330. package/lib/esm/test/ecdb/ECSqlAst.test.js.map +1 -1
  331. package/lib/esm/test/ecdb/ECSqlQuery.test.js +7 -30
  332. package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
  333. package/lib/esm/test/ecdb/ECSqlReader.test.js +16 -16
  334. package/lib/esm/test/ecdb/ECSqlReader.test.js.map +1 -1
  335. package/lib/esm/test/ecdb/ECSqlStatement.test.js +292 -292
  336. package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -1
  337. package/lib/esm/test/ecdb/SqliteStatement.test.js.map +1 -1
  338. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js.map +1 -1
  339. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js +21 -21
  340. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js.map +1 -1
  341. package/lib/esm/test/ecsql/src/ECSqlTestParser.js.map +1 -1
  342. package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js.map +1 -1
  343. package/lib/esm/test/element/DeleteDefinitionElements.test.js.map +1 -1
  344. package/lib/esm/test/element/ElementAspect.test.js +22 -22
  345. package/lib/esm/test/element/ElementAspect.test.js.map +1 -1
  346. package/lib/esm/test/element/ElementDependencyGraph.test.js.map +1 -1
  347. package/lib/esm/test/element/ElementRoundTrip.test.js +139 -139
  348. package/lib/esm/test/element/ElementRoundTrip.test.js.map +1 -1
  349. package/lib/esm/test/element/ExcludedElements.test.js.map +1 -1
  350. package/lib/esm/test/element/ExternalSource.test.js.map +1 -1
  351. package/lib/esm/test/element/NullStructArray.test.js +13 -13
  352. package/lib/esm/test/element/NullStructArray.test.js.map +1 -1
  353. package/lib/esm/test/element/UrlLink.test.js.map +1 -1
  354. package/lib/esm/test/font/FontFile.test.js.map +1 -1
  355. package/lib/esm/test/font/IModelDbFonts.test.js.map +1 -1
  356. package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
  357. package/lib/esm/test/hubaccess/CheckpointManager.test.js.map +1 -1
  358. package/lib/esm/test/imageData.js.map +1 -1
  359. package/lib/esm/test/imodel/ElementTreeWalker.test.js.map +1 -1
  360. package/lib/esm/test/imodel/GetTextureImage.test.js.map +1 -1
  361. package/lib/esm/test/imodel/IModel.test.js +22 -11
  362. package/lib/esm/test/imodel/IModel.test.js.map +1 -1
  363. package/lib/esm/test/imodel/ProjectExtents.test.js.map +1 -1
  364. package/lib/esm/test/imodel/SchemaXmlImport.test.js.map +1 -1
  365. package/lib/esm/test/index.js.map +1 -1
  366. package/lib/esm/test/misc/DevTools.test.js.map +1 -1
  367. package/lib/esm/test/misc/EntitySubClasses.test.js.map +1 -1
  368. package/lib/esm/test/misc/GeoServices.test.js.map +1 -1
  369. package/lib/esm/test/misc/PromiseMemoizer.test.js.map +1 -1
  370. package/lib/esm/test/native/DgnDbWorker.test.js.map +1 -1
  371. package/lib/esm/test/rpc/response.test.js.map +1 -1
  372. package/lib/esm/test/schema/ClassRegistry.test.js +71 -71
  373. package/lib/esm/test/schema/ClassRegistry.test.js.map +1 -1
  374. package/lib/esm/test/schema/FunctionalDomain.test.js.map +1 -1
  375. package/lib/esm/test/schema/GenericDomain.test.js.map +1 -1
  376. package/lib/esm/test/schema/IModelSchemaContext.test.js.map +1 -1
  377. package/lib/esm/test/sheetindex/SheetIndex.test.js.map +1 -1
  378. package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
  379. package/lib/esm/test/standalone/ChangesetReader.test.js +28 -28
  380. package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
  381. package/lib/esm/test/standalone/CustomViewState3dCreator.test.js.map +1 -1
  382. package/lib/esm/test/standalone/DisplayStyle.test.js.map +1 -1
  383. package/lib/esm/test/standalone/Drawing.test.js.map +1 -1
  384. package/lib/esm/test/standalone/ElementGraphics.test.js.map +1 -1
  385. package/lib/esm/test/standalone/ElementMesh.test.js.map +1 -1
  386. package/lib/esm/test/standalone/ExportGraphics.test.js +14 -14
  387. package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -1
  388. package/lib/esm/test/standalone/GeometryChangeEvents.test.js.map +1 -1
  389. package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
  390. package/lib/esm/test/standalone/HubMock.test.js.map +1 -1
  391. package/lib/esm/test/standalone/IModelWrite.test.js +27 -27
  392. package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
  393. package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js.map +1 -1
  394. package/lib/esm/test/standalone/MergeConflict.test.js.map +1 -1
  395. package/lib/esm/test/standalone/NativeAppStorage.test.js.map +1 -1
  396. package/lib/esm/test/standalone/RenderMaterialElement.test.js.map +1 -1
  397. package/lib/esm/test/standalone/RenderTimeline.test.js.map +1 -1
  398. package/lib/esm/test/standalone/SQLiteDb.test.js.map +1 -1
  399. package/lib/esm/test/standalone/SchemaUtils.test.js.map +1 -1
  400. package/lib/esm/test/standalone/SectionDrawing.test.js.map +1 -1
  401. package/lib/esm/test/standalone/ServerBasedLocks.test.js.map +1 -1
  402. package/lib/esm/test/standalone/Setting.test.js.map +1 -1
  403. package/lib/esm/test/standalone/Settings.test.js.map +1 -1
  404. package/lib/esm/test/standalone/SettingsSchemas.test.js.map +1 -1
  405. package/lib/esm/test/standalone/SnapshotDb.test.js +1 -0
  406. package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
  407. package/lib/esm/test/standalone/Texture.test.js.map +1 -1
  408. package/lib/esm/test/standalone/TileCache.test.js.map +1 -1
  409. package/lib/esm/test/standalone/TileTree.test.js.map +1 -1
  410. package/lib/esm/test/standalone/TxnManager.test.js +1 -1
  411. package/lib/esm/test/standalone/TxnManager.test.js.map +1 -1
  412. package/lib/esm/test/standalone/ViewDefinition.test.js.map +1 -1
  413. package/lib/esm/test/standalone/ViewStoreDb.test.js.map +1 -1
  414. package/lib/esm/test/standalone/Workspace.test.js.map +1 -1
  415. package/lib/esm/workspace/Settings.js.map +1 -1
  416. package/lib/esm/workspace/SettingsSchemas.js.map +1 -1
  417. package/lib/esm/workspace/Workspace.js.map +1 -1
  418. package/lib/esm/workspace/WorkspaceEditor.js.map +1 -1
  419. package/package.json +12 -12
@@ -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,
@@ -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.
@@ -366,6 +437,30 @@ 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).
@@ -393,6 +488,123 @@ 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
610
  * @public
@@ -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)
@@ -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;
@@ -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;
@@ -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;
@@ -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.
@@ -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);