@itwin/core-backend 4.0.0-dev.10 → 4.0.0-dev.100

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 (270) hide show
  1. package/CHANGELOG.md +68 -1
  2. package/lib/cjs/BackendHubAccess.d.ts +226 -224
  3. package/lib/cjs/BackendHubAccess.d.ts.map +1 -1
  4. package/lib/cjs/BackendHubAccess.js +41 -41
  5. package/lib/cjs/BackendHubAccess.js.map +1 -1
  6. package/lib/cjs/BackendLoggerCategory.d.ts +90 -91
  7. package/lib/cjs/BackendLoggerCategory.d.ts.map +1 -1
  8. package/lib/cjs/BackendLoggerCategory.js +98 -99
  9. package/lib/cjs/BackendLoggerCategory.js.map +1 -1
  10. package/lib/cjs/BisCoreSchema.d.ts +21 -21
  11. package/lib/cjs/BisCoreSchema.js +60 -60
  12. package/lib/cjs/BlobContainerService.d.ts +120 -0
  13. package/lib/cjs/BlobContainerService.d.ts.map +1 -0
  14. package/lib/cjs/BlobContainerService.js +18 -0
  15. package/lib/cjs/BlobContainerService.js.map +1 -0
  16. package/lib/cjs/BriefcaseManager.d.ts +184 -170
  17. package/lib/cjs/BriefcaseManager.d.ts.map +1 -1
  18. package/lib/cjs/BriefcaseManager.js +421 -414
  19. package/lib/cjs/BriefcaseManager.js.map +1 -1
  20. package/lib/cjs/Category.d.ts +153 -153
  21. package/lib/cjs/Category.js +243 -243
  22. package/lib/cjs/Category.js.map +1 -1
  23. package/lib/cjs/ChangeSummaryManager.d.ts +187 -187
  24. package/lib/cjs/ChangeSummaryManager.js +444 -445
  25. package/lib/cjs/ChangeSummaryManager.js.map +1 -1
  26. package/lib/cjs/ChangedElementsDb.d.ts +99 -99
  27. package/lib/cjs/ChangedElementsDb.js +165 -165
  28. package/lib/cjs/ChangedElementsManager.d.ts +39 -39
  29. package/lib/cjs/ChangedElementsManager.js +88 -88
  30. package/lib/cjs/ChannelControl.d.ts +70 -0
  31. package/lib/cjs/ChannelControl.d.ts.map +1 -0
  32. package/lib/cjs/ChannelControl.js +89 -0
  33. package/lib/cjs/ChannelControl.js.map +1 -0
  34. package/lib/cjs/CheckpointManager.d.ts +121 -121
  35. package/lib/cjs/CheckpointManager.d.ts.map +1 -1
  36. package/lib/cjs/CheckpointManager.js +351 -349
  37. package/lib/cjs/CheckpointManager.js.map +1 -1
  38. package/lib/cjs/ClassRegistry.d.ts +79 -79
  39. package/lib/cjs/ClassRegistry.js +249 -245
  40. package/lib/cjs/ClassRegistry.js.map +1 -1
  41. package/lib/cjs/CloudSqlite.d.ts +572 -350
  42. package/lib/cjs/CloudSqlite.d.ts.map +1 -1
  43. package/lib/cjs/CloudSqlite.js +374 -153
  44. package/lib/cjs/CloudSqlite.js.map +1 -1
  45. package/lib/cjs/CodeService.d.ts +399 -396
  46. package/lib/cjs/CodeService.d.ts.map +1 -1
  47. package/lib/cjs/CodeService.js +63 -63
  48. package/lib/cjs/CodeService.js.map +1 -1
  49. package/lib/cjs/CodeSpecs.d.ts +58 -55
  50. package/lib/cjs/CodeSpecs.d.ts.map +1 -1
  51. package/lib/cjs/CodeSpecs.js +154 -124
  52. package/lib/cjs/CodeSpecs.js.map +1 -1
  53. package/lib/cjs/ConcurrentQuery.d.ts +13 -13
  54. package/lib/cjs/ConcurrentQuery.d.ts.map +1 -1
  55. package/lib/cjs/ConcurrentQuery.js +36 -36
  56. package/lib/cjs/CustomViewState3dCreator.d.ts +21 -21
  57. package/lib/cjs/CustomViewState3dCreator.d.ts.map +1 -1
  58. package/lib/cjs/CustomViewState3dCreator.js +80 -81
  59. package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
  60. package/lib/cjs/DevTools.d.ts +74 -71
  61. package/lib/cjs/DevTools.d.ts.map +1 -1
  62. package/lib/cjs/DevTools.js +156 -154
  63. package/lib/cjs/DevTools.js.map +1 -1
  64. package/lib/cjs/DisplayStyle.d.ts +104 -106
  65. package/lib/cjs/DisplayStyle.d.ts.map +1 -1
  66. package/lib/cjs/DisplayStyle.js +251 -256
  67. package/lib/cjs/DisplayStyle.js.map +1 -1
  68. package/lib/cjs/ECDb.d.ts +194 -191
  69. package/lib/cjs/ECDb.d.ts.map +1 -1
  70. package/lib/cjs/ECDb.js +351 -350
  71. package/lib/cjs/ECDb.js.map +1 -1
  72. package/lib/cjs/ECSchemaXmlContext.d.ts +18 -18
  73. package/lib/cjs/ECSchemaXmlContext.d.ts.map +1 -1
  74. package/lib/cjs/ECSchemaXmlContext.js +41 -41
  75. package/lib/cjs/ECSqlStatement.d.ts +473 -473
  76. package/lib/cjs/ECSqlStatement.js +791 -791
  77. package/lib/cjs/Element.d.ts +1105 -1109
  78. package/lib/cjs/Element.d.ts.map +1 -1
  79. package/lib/cjs/Element.js +1416 -1427
  80. package/lib/cjs/Element.js.map +1 -1
  81. package/lib/cjs/ElementAspect.d.ts +175 -179
  82. package/lib/cjs/ElementAspect.d.ts.map +1 -1
  83. package/lib/cjs/ElementAspect.js +202 -211
  84. package/lib/cjs/ElementAspect.js.map +1 -1
  85. package/lib/cjs/ElementGraphics.d.ts +9 -9
  86. package/lib/cjs/ElementGraphics.js +41 -41
  87. package/lib/cjs/ElementGraphics.js.map +1 -1
  88. package/lib/cjs/ElementTreeWalker.d.ts +162 -162
  89. package/lib/cjs/ElementTreeWalker.d.ts.map +1 -1
  90. package/lib/cjs/ElementTreeWalker.js +409 -409
  91. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  92. package/lib/cjs/Entity.d.ts +102 -106
  93. package/lib/cjs/Entity.d.ts.map +1 -1
  94. package/lib/cjs/Entity.js +118 -134
  95. package/lib/cjs/Entity.js.map +1 -1
  96. package/lib/cjs/EntityReferences.d.ts +49 -49
  97. package/lib/cjs/EntityReferences.d.ts.map +1 -1
  98. package/lib/cjs/EntityReferences.js +95 -95
  99. package/lib/cjs/ExportGraphics.d.ts +317 -317
  100. package/lib/cjs/ExportGraphics.d.ts.map +1 -1
  101. package/lib/cjs/ExportGraphics.js +208 -208
  102. package/lib/cjs/ExternalSource.d.ts +95 -96
  103. package/lib/cjs/ExternalSource.d.ts.map +1 -1
  104. package/lib/cjs/ExternalSource.js +130 -131
  105. package/lib/cjs/ExternalSource.js.map +1 -1
  106. package/lib/cjs/GeoCoordConfig.d.ts +19 -19
  107. package/lib/cjs/GeoCoordConfig.js +85 -85
  108. package/lib/cjs/GeoCoordConfig.js.map +1 -1
  109. package/lib/cjs/GeometrySummary.d.ts +4 -4
  110. package/lib/cjs/GeometrySummary.js +333 -333
  111. package/lib/cjs/GeometrySummary.js.map +1 -1
  112. package/lib/cjs/HubMock.d.ts +94 -94
  113. package/lib/cjs/HubMock.js +220 -222
  114. package/lib/cjs/HubMock.js.map +1 -1
  115. package/lib/cjs/IModelCloneContext.d.ts +8 -8
  116. package/lib/cjs/IModelCloneContext.d.ts.map +1 -1
  117. package/lib/cjs/IModelCloneContext.js +15 -15
  118. package/lib/cjs/IModelDb.d.ts +1222 -1196
  119. package/lib/cjs/IModelDb.d.ts.map +1 -1
  120. package/lib/cjs/IModelDb.js +2389 -2392
  121. package/lib/cjs/IModelDb.js.map +1 -1
  122. package/lib/cjs/IModelElementCloneContext.d.ts +89 -89
  123. package/lib/cjs/IModelElementCloneContext.js +159 -159
  124. package/lib/cjs/IModelHost.d.ts +370 -369
  125. package/lib/cjs/IModelHost.d.ts.map +1 -1
  126. package/lib/cjs/IModelHost.js +476 -496
  127. package/lib/cjs/IModelHost.js.map +1 -1
  128. package/lib/cjs/IModelJsFs.d.ts +62 -62
  129. package/lib/cjs/IModelJsFs.js +139 -140
  130. package/lib/cjs/IModelJsFs.js.map +1 -1
  131. package/lib/cjs/IpcHost.d.ts +104 -104
  132. package/lib/cjs/IpcHost.js +276 -278
  133. package/lib/cjs/IpcHost.js.map +1 -1
  134. package/lib/cjs/LineStyle.d.ts +311 -311
  135. package/lib/cjs/LineStyle.js +295 -295
  136. package/lib/cjs/LocalHub.d.ts +162 -162
  137. package/lib/cjs/LocalHub.d.ts.map +1 -1
  138. package/lib/cjs/LocalHub.js +579 -584
  139. package/lib/cjs/LocalHub.js.map +1 -1
  140. package/lib/cjs/LocalhostIpcHost.d.ts +21 -20
  141. package/lib/cjs/LocalhostIpcHost.d.ts.map +1 -1
  142. package/lib/cjs/LocalhostIpcHost.js +79 -81
  143. package/lib/cjs/LocalhostIpcHost.js.map +1 -1
  144. package/lib/cjs/Material.d.ts +131 -131
  145. package/lib/cjs/Material.d.ts.map +1 -1
  146. package/lib/cjs/Material.js +185 -181
  147. package/lib/cjs/Material.js.map +1 -1
  148. package/lib/cjs/Model.d.ts +391 -392
  149. package/lib/cjs/Model.d.ts.map +1 -1
  150. package/lib/cjs/Model.js +487 -485
  151. package/lib/cjs/Model.js.map +1 -1
  152. package/lib/cjs/NativeAppStorage.d.ts +51 -51
  153. package/lib/cjs/NativeAppStorage.js +202 -202
  154. package/lib/cjs/NativeAppStorage.js.map +1 -1
  155. package/lib/cjs/NativeHost.d.ts +52 -52
  156. package/lib/cjs/NativeHost.d.ts.map +1 -1
  157. package/lib/cjs/NativeHost.js +158 -163
  158. package/lib/cjs/NativeHost.js.map +1 -1
  159. package/lib/cjs/NavigationRelationship.d.ts +156 -156
  160. package/lib/cjs/NavigationRelationship.js +225 -225
  161. package/lib/cjs/NavigationRelationship.js.map +1 -1
  162. package/lib/cjs/PromiseMemoizer.d.ts +51 -51
  163. package/lib/cjs/PromiseMemoizer.d.ts.map +1 -1
  164. package/lib/cjs/PromiseMemoizer.js +101 -101
  165. package/lib/cjs/PromiseMemoizer.js.map +1 -1
  166. package/lib/cjs/PropertyStore.d.ts +123 -132
  167. package/lib/cjs/PropertyStore.d.ts.map +1 -1
  168. package/lib/cjs/PropertyStore.js +179 -11
  169. package/lib/cjs/PropertyStore.js.map +1 -1
  170. package/lib/cjs/Relationship.d.ts +413 -416
  171. package/lib/cjs/Relationship.d.ts.map +1 -1
  172. package/lib/cjs/Relationship.js +491 -494
  173. package/lib/cjs/Relationship.js.map +1 -1
  174. package/lib/cjs/RpcBackend.d.ts +5 -5
  175. package/lib/cjs/RpcBackend.js +32 -32
  176. package/lib/cjs/SQLiteDb.d.ts +317 -219
  177. package/lib/cjs/SQLiteDb.d.ts.map +1 -1
  178. package/lib/cjs/SQLiteDb.js +318 -214
  179. package/lib/cjs/SQLiteDb.js.map +1 -1
  180. package/lib/cjs/Schema.d.ts +55 -55
  181. package/lib/cjs/Schema.js +83 -83
  182. package/lib/cjs/Schema.js.map +1 -1
  183. package/lib/cjs/ServerBasedLocks.d.ts +57 -57
  184. package/lib/cjs/ServerBasedLocks.js +168 -168
  185. package/lib/cjs/ServerBasedLocks.js.map +1 -1
  186. package/lib/cjs/SqliteStatement.d.ts +360 -360
  187. package/lib/cjs/SqliteStatement.d.ts.map +1 -1
  188. package/lib/cjs/SqliteStatement.js +586 -586
  189. package/lib/cjs/Texture.d.ts +58 -58
  190. package/lib/cjs/Texture.js +82 -82
  191. package/lib/cjs/Texture.js.map +1 -1
  192. package/lib/cjs/TileStorage.d.ts +44 -18
  193. package/lib/cjs/TileStorage.d.ts.map +1 -1
  194. package/lib/cjs/TileStorage.js +109 -90
  195. package/lib/cjs/TileStorage.js.map +1 -1
  196. package/lib/cjs/TxnManager.d.ts +202 -202
  197. package/lib/cjs/TxnManager.d.ts.map +1 -1
  198. package/lib/cjs/TxnManager.js +356 -356
  199. package/lib/cjs/TxnManager.js.map +1 -1
  200. package/lib/cjs/ViewDefinition.d.ts +429 -439
  201. package/lib/cjs/ViewDefinition.d.ts.map +1 -1
  202. package/lib/cjs/ViewDefinition.js +640 -646
  203. package/lib/cjs/ViewDefinition.js.map +1 -1
  204. package/lib/cjs/ViewStateHydrator.d.ts +13 -13
  205. package/lib/cjs/ViewStateHydrator.js +103 -103
  206. package/lib/cjs/core-backend.d.ts +181 -184
  207. package/lib/cjs/core-backend.d.ts.map +1 -1
  208. package/lib/cjs/core-backend.js +205 -204
  209. package/lib/cjs/core-backend.js.map +1 -1
  210. package/lib/cjs/domains/FunctionalElements.d.ts +101 -101
  211. package/lib/cjs/domains/FunctionalElements.js +145 -145
  212. package/lib/cjs/domains/FunctionalElements.js.map +1 -1
  213. package/lib/cjs/domains/FunctionalSchema.d.ts +13 -13
  214. package/lib/cjs/domains/FunctionalSchema.d.ts.map +1 -1
  215. package/lib/cjs/domains/FunctionalSchema.js +39 -40
  216. package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
  217. package/lib/cjs/domains/GenericElements.d.ts +177 -177
  218. package/lib/cjs/domains/GenericElements.js +263 -263
  219. package/lib/cjs/domains/GenericSchema.d.ts +10 -10
  220. package/lib/cjs/domains/GenericSchema.js +28 -28
  221. package/lib/cjs/rpc/multipart.d.ts +11 -11
  222. package/lib/cjs/rpc/multipart.js +71 -71
  223. package/lib/cjs/rpc/tracing.d.ts +28 -28
  224. package/lib/cjs/rpc/tracing.js +73 -74
  225. package/lib/cjs/rpc/tracing.js.map +1 -1
  226. package/lib/cjs/rpc/web/logging.d.ts +9 -9
  227. package/lib/cjs/rpc/web/logging.js +43 -43
  228. package/lib/cjs/rpc/web/request.d.ts +6 -6
  229. package/lib/cjs/rpc/web/request.js +73 -74
  230. package/lib/cjs/rpc/web/request.js.map +1 -1
  231. package/lib/cjs/rpc/web/response.d.ts +6 -6
  232. package/lib/cjs/rpc/web/response.js +105 -106
  233. package/lib/cjs/rpc/web/response.js.map +1 -1
  234. package/lib/cjs/rpc-impl/DevToolsRpcImpl.d.ts +15 -15
  235. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js +32 -32
  236. package/lib/cjs/rpc-impl/IModelReadRpcImpl.d.ts +47 -47
  237. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js +293 -294
  238. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  239. package/lib/cjs/rpc-impl/IModelTileRpcImpl.d.ts +20 -22
  240. package/lib/cjs/rpc-impl/IModelTileRpcImpl.d.ts.map +1 -1
  241. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js +193 -205
  242. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  243. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.d.ts +36 -36
  244. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js +166 -168
  245. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  246. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.d.ts +16 -16
  247. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js +42 -43
  248. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  249. package/lib/cjs/rpc-impl/WipRpcImpl.d.ts +15 -15
  250. package/lib/cjs/rpc-impl/WipRpcImpl.js +37 -37
  251. package/lib/cjs/workspace/Settings.d.ts +186 -186
  252. package/lib/cjs/workspace/Settings.d.ts.map +1 -1
  253. package/lib/cjs/workspace/Settings.js +155 -155
  254. package/lib/cjs/workspace/Settings.js.map +1 -1
  255. package/lib/cjs/workspace/SettingsSchemas.d.ts +75 -75
  256. package/lib/cjs/workspace/SettingsSchemas.js +190 -191
  257. package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
  258. package/lib/cjs/workspace/Workspace.d.ts +411 -414
  259. package/lib/cjs/workspace/Workspace.d.ts.map +1 -1
  260. package/lib/cjs/workspace/Workspace.js +521 -543
  261. package/lib/cjs/workspace/Workspace.js.map +1 -1
  262. package/package.json +25 -28
  263. package/lib/cjs/AliCloudStorageService.d.ts +0 -24
  264. package/lib/cjs/AliCloudStorageService.d.ts.map +0 -1
  265. package/lib/cjs/AliCloudStorageService.js +0 -72
  266. package/lib/cjs/AliCloudStorageService.js.map +0 -1
  267. package/lib/cjs/CloudStorageBackend.d.ts +0 -59
  268. package/lib/cjs/CloudStorageBackend.d.ts.map +0 -1
  269. package/lib/cjs/CloudStorageBackend.js +0 -174
  270. package/lib/cjs/CloudStorageBackend.js.map +0 -1
@@ -1,647 +1,641 @@
1
- "use strict";
2
- /*---------------------------------------------------------------------------------------------
3
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
- * See LICENSE.md in the project root for license terms and full copyright notice.
5
- *--------------------------------------------------------------------------------------------*/
6
- /** @packageDocumentation
7
- * @module ViewDefinitions
8
- */
9
- var _a, _b, _c, _d;
10
- Object.defineProperty(exports, "__esModule", { value: true });
11
- exports.LightLocation = exports.ViewAttachment = exports.AuxCoordSystemSpatial = exports.AuxCoordSystem3d = exports.AuxCoordSystem2d = exports.AuxCoordSystem = exports.TemplateViewDefinition3d = exports.TemplateViewDefinition2d = exports.SheetViewDefinition = exports.DrawingViewDefinition = exports.ViewDefinition2d = exports.OrthographicViewDefinition = exports.SpatialViewDefinition = exports.ViewDefinition3d = exports.ViewDefinition = exports.CategorySelector = exports.ModelSelector = void 0;
12
- const core_bentley_1 = require("@itwin/core-bentley");
13
- const core_geometry_1 = require("@itwin/core-geometry");
14
- const core_common_1 = require("@itwin/core-common");
15
- const Element_1 = require("./Element");
16
- /** Holds the list of Ids of GeometricModels displayed by a [[SpatialViewDefinition]]. Multiple SpatialViewDefinitions may point to the same ModelSelector.
17
- * @see [ModelSelectorState]($frontend)
18
- * See [how to create a ModelSelector]$(docs/learning/backend/CreateElements.md#ModelSelector).
19
- * @public
20
- */
21
- class ModelSelector extends Element_1.DefinitionElement {
22
- /** @internal */
23
- constructor(props, iModel) {
24
- super(props, iModel);
25
- this.models = props.models;
26
- }
27
- /** @internal */
28
- static get className() { return "ModelSelector"; }
29
- /** @internal */
30
- toJSON() {
31
- const val = super.toJSON();
32
- val.models = this.models;
33
- return val;
34
- }
35
- /** @internal */
36
- collectReferenceConcreteIds(referenceIds) {
37
- super.collectReferenceConcreteIds(referenceIds);
38
- this.models.forEach((modelId) => referenceIds.addModel(modelId));
39
- }
40
- /** Create a Code for a ModelSelector given a name that is meant to be unique within the scope of the specified DefinitionModel.
41
- * @param iModel The IModelDb
42
- * @param scopeModelId The Id of the DefinitionModel that contains the ModelSelector and provides the scope for its name.
43
- * @param codeValue The ModelSelector name
44
- */
45
- static createCode(iModel, scopeModelId, codeValue) {
46
- const codeSpec = iModel.codeSpecs.getByName(core_common_1.BisCodeSpec.modelSelector);
47
- return new core_common_1.Code({ spec: codeSpec.id, scope: scopeModelId, value: codeValue });
48
- }
49
- /**
50
- * Create a ModelSelector to select which Models are displayed by a ViewDefinition.
51
- * @param iModelDb The iModel
52
- * @param definitionModelId The [[DefinitionModel]]
53
- * @param name The name/CodeValue of the ModelSelector
54
- * @param models Array of models to select for display
55
- * @returns The newly constructed ModelSelector element.
56
- * @throws [[IModelError]] if unable to create the element.
57
- */
58
- static create(iModelDb, definitionModelId, name, models) {
59
- const modelSelectorProps = {
60
- classFullName: this.classFullName,
61
- code: this.createCode(iModelDb, definitionModelId, name),
62
- model: definitionModelId,
63
- models,
64
- isPrivate: false,
65
- };
66
- return new ModelSelector(modelSelectorProps, iModelDb);
67
- }
68
- /**
69
- * Insert a ModelSelector to select which Models are displayed by a ViewDefinition.
70
- * @param iModelDb Insert into this iModel
71
- * @param definitionModelId Insert the new ModelSelector into this DefinitionModel
72
- * @param name The name/CodeValue of the ModelSelector
73
- * @param models Array of models to select for display
74
- * @returns The Id of the newly inserted ModelSelector element.
75
- * @throws [[IModelError]] if unable to insert the element.
76
- */
77
- static insert(iModelDb, definitionModelId, name, models) {
78
- const modelSelector = this.create(iModelDb, definitionModelId, name, models);
79
- return iModelDb.elements.insertElement(modelSelector.toJSON());
80
- }
81
- }
82
- exports.ModelSelector = ModelSelector;
83
- /** Holds a list of Ids of Categories to be displayed in a view.
84
- * @see [CategorySelectorState]($frontend)
85
- * See [how to create a CategorySelector]$(docs/learning/backend/CreateElements.md#CategorySelector).
86
- * @public
87
- */
88
- class CategorySelector extends Element_1.DefinitionElement {
89
- /** @internal */
90
- constructor(props, iModel) {
91
- super(props, iModel);
92
- this.categories = props.categories;
93
- }
94
- /** @internal */
95
- static get className() { return "CategorySelector"; }
96
- /** @internal */
97
- toJSON() {
98
- const val = super.toJSON();
99
- val.categories = this.categories;
100
- return val;
101
- }
102
- /** @internal */
103
- collectReferenceConcreteIds(referenceIds) {
104
- super.collectReferenceConcreteIds(referenceIds);
105
- this.categories.forEach((categoryId) => referenceIds.addElement(categoryId));
106
- }
107
- /** Create a Code for a CategorySelector given a name that is meant to be unique within the scope of the specified DefinitionModel.
108
- * @param iModel The IModelDb
109
- * @param scopeModelId The Id of the DefinitionModel that contains the CategorySelector and provides the scope for its name.
110
- * @param codeValue The CategorySelector name
111
- */
112
- static createCode(iModel, scopeModelId, codeValue) {
113
- const codeSpec = iModel.codeSpecs.getByName(core_common_1.BisCodeSpec.categorySelector);
114
- return new core_common_1.Code({ spec: codeSpec.id, scope: scopeModelId, value: codeValue });
115
- }
116
- /**
117
- * Create a CategorySelector to select which categories are displayed by a ViewDefinition.
118
- * @param iModelDb The iModel
119
- * @param definitionModelId The [[DefinitionModel]]
120
- * @param name The name of the CategorySelector
121
- * @param categories Array of categories to select for display
122
- * @returns The newly constructed CategorySelector element.
123
- * @throws [[IModelError]] if unable to create the element.
124
- */
125
- static create(iModelDb, definitionModelId, name, categories) {
126
- const categorySelectorProps = {
127
- classFullName: this.classFullName,
128
- code: this.createCode(iModelDb, definitionModelId, name),
129
- model: definitionModelId,
130
- categories,
131
- isPrivate: false,
132
- };
133
- return new CategorySelector(categorySelectorProps, iModelDb);
134
- }
135
- /**
136
- * Insert a CategorySelector to select which categories are displayed by a ViewDefinition.
137
- * @param iModelDb Insert into this iModel
138
- * @param definitionModelId Insert the new CategorySelector into this DefinitionModel
139
- * @param name The name of the CategorySelector
140
- * @param categories Array of categories to select for display
141
- * @returns The Id of the newly inserted CategorySelector element.
142
- * @throws [[IModelError]] if unable to insert the element.
143
- */
144
- static insert(iModelDb, definitionModelId, name, categories) {
145
- const categorySelector = this.create(iModelDb, definitionModelId, name, categories);
146
- return iModelDb.elements.insertElement(categorySelector.toJSON());
147
- }
148
- }
149
- exports.CategorySelector = CategorySelector;
150
- /**
151
- * The definition element for a view. ViewDefinitions specify the area/volume that is viewed, the Ids of a DisplayStyle and a CategorySelector,
152
- * plus additional view-specific parameters in their [[Element.jsonProperties]].
153
- *
154
- * Subclasses of ViewDefinition determine which model(s) are viewed.
155
- *
156
- * **Example: Obtaining the background color for a view**
157
- * ``` ts
158
- * [[include:ViewDefinition.getBackgroundColor]]
159
- * ```
160
- *
161
- * @note ViewDefinition is only available in the backend. See [ViewState]($frontend) for usage in the frontend.
162
- * @public
163
- */
164
- class ViewDefinition extends (_b = Element_1.DefinitionElement) {
165
- /** @internal */
166
- constructor(props, iModel) {
167
- super(props, iModel);
168
- this.categorySelectorId = core_bentley_1.Id64.fromJSON(props.categorySelectorId);
169
- if (!core_bentley_1.Id64.isValid(this.categorySelectorId))
170
- throw new core_common_1.IModelError(core_bentley_1.IModelStatus.BadArg, `categorySelectorId is invalid`);
171
- this.displayStyleId = core_bentley_1.Id64.fromJSON(props.displayStyleId);
172
- if (!core_bentley_1.Id64.isValid(this.displayStyleId))
173
- throw new core_common_1.IModelError(core_bentley_1.IModelStatus.BadArg, `displayStyleId is invalid`);
174
- }
175
- /** @internal */
176
- static get className() { return "ViewDefinition"; }
177
- /** @internal */
178
- toJSON() {
179
- const json = super.toJSON();
180
- json.categorySelectorId = this.categorySelectorId;
181
- json.displayStyleId = this.displayStyleId;
182
- return json;
183
- }
184
- /** @internal */
185
- collectReferenceConcreteIds(referenceIds) {
186
- super.collectReferenceConcreteIds(referenceIds);
187
- referenceIds.addElement(this.categorySelectorId);
188
- referenceIds.addElement(this.displayStyleId);
189
- const acsId = this.getAuxiliaryCoordinateSystemId();
190
- if (core_bentley_1.Id64.isValidId64(acsId)) {
191
- referenceIds.addElement(acsId);
192
- }
193
- }
194
- /** @internal */
195
- static onCloned(context, sourceElementProps, targetElementProps) {
196
- super.onCloned(context, sourceElementProps, targetElementProps);
197
- if (context.isBetweenIModels && targetElementProps.jsonProperties && targetElementProps.jsonProperties.viewDetails) {
198
- const acsId = core_bentley_1.Id64.fromJSON(targetElementProps.jsonProperties.viewDetails.acs);
199
- if (core_bentley_1.Id64.isValidId64(acsId)) {
200
- targetElementProps.jsonProperties.viewDetails.acs = context.findTargetElementId(acsId);
201
- }
202
- }
203
- }
204
- /** Type guard for `instanceof ViewDefinition3d` */
205
- isView3d() { return this instanceof ViewDefinition3d; }
206
- /** Type guard for 'instanceof ViewDefinition2d` */
207
- isView2d() { return this instanceof ViewDefinition2d; }
208
- /** Type guard for `instanceof SpatialViewDefinition` */
209
- isSpatialView() { return this instanceof SpatialViewDefinition; }
210
- /** Type guard for 'instanceof DrawingViewDefinition' */
211
- isDrawingView() { return this instanceof DrawingViewDefinition; }
212
- /** Load this view's DisplayStyle from the IModelDb. */
213
- loadDisplayStyle() { return this.iModel.elements.getElement(this.displayStyleId); }
214
- /** Load this view's CategorySelector from the IModelDb. */
215
- loadCategorySelector() { return this.iModel.elements.getElement(this.categorySelectorId); }
216
- /** The Id of the AuxiliaryCoordinateSystem for this ViewDefinition, or an invalid Id if no ACS is defined. */
217
- getAuxiliaryCoordinateSystemId() {
218
- return this.details.auxiliaryCoordinateSystemId;
219
- }
220
- /** Set or clear the AuxiliaryCoordinateSystem for this ViewDefinition.
221
- * @param acsId The Id of the new AuxiliaryCoordinateSystem. If `Id64.invalid` is passed, then no AuxiliaryCoordinateSystem will be used.
222
- */
223
- setAuxiliaryCoordinateSystemId(acsId) {
224
- this.details.auxiliaryCoordinateSystemId = acsId;
225
- }
226
- /** Create a Code for a ViewDefinition given a name that is meant to be unique within the scope of the specified DefinitionModel.
227
- * @param iModel The IModelDb
228
- * @param scopeModelId The Id of the DefinitionModel to contain the ViewDefinition and provides the scope for its name.
229
- * @param codeValue The ViewDefinition name
230
- */
231
- static createCode(iModel, scopeModelId, codeValue) {
232
- const codeSpec = iModel.codeSpecs.getByName(core_common_1.BisCodeSpec.viewDefinition);
233
- return new core_common_1.Code({ spec: codeSpec.id, scope: scopeModelId, value: codeValue });
234
- }
235
- }
236
- exports.ViewDefinition = ViewDefinition;
237
- _a = ViewDefinition;
238
- /** @beta */
239
- ViewDefinition.requiredReferenceKeys = [...Reflect.get(_b, "requiredReferenceKeys", _a), "categorySelectorId", "displayStyleId"];
240
- /** @alpha */
241
- ViewDefinition.requiredReferenceKeyTypeMap = {
242
- ...Reflect.get(_b, "requiredReferenceKeyTypeMap", _a),
243
- categorySelectorId: core_common_1.ConcreteEntityTypes.Element,
244
- displayStyleId: core_common_1.ConcreteEntityTypes.Element,
245
- };
246
- /** Defines a view of one or more 3d models.
247
- * @public
248
- */
249
- class ViewDefinition3d extends ViewDefinition {
250
- /** @internal */
251
- constructor(props, iModel) {
252
- super(props, iModel);
253
- this.cameraOn = core_bentley_1.JsonUtils.asBool(props.cameraOn);
254
- this.origin = core_geometry_1.Point3d.fromJSON(props.origin);
255
- this.extents = core_geometry_1.Vector3d.fromJSON(props.extents);
256
- this.angles = core_geometry_1.YawPitchRollAngles.fromJSON(props.angles);
257
- this.camera = new core_common_1.Camera(props.camera);
258
- this._details = new core_common_1.ViewDetails3d(this.jsonProperties);
259
- }
260
- /** @internal */
261
- static get className() { return "ViewDefinition3d"; }
262
- /** @internal */
263
- toJSON() {
264
- const val = super.toJSON();
265
- val.cameraOn = this.cameraOn;
266
- val.origin = this.origin;
267
- val.extents = this.extents;
268
- val.angles = this.angles;
269
- val.camera = this.camera;
270
- return val;
271
- }
272
- /** Provides access to optional detail settings for this view. */
273
- get details() { return this._details; }
274
- /** Load this view's DisplayStyle3d from the IModelDb. */
275
- loadDisplayStyle3d() { return this.iModel.elements.getElement(this.displayStyleId); }
276
- }
277
- exports.ViewDefinition3d = ViewDefinition3d;
278
- /** Defines a view of one or more SpatialModels.
279
- * The list of viewed models is stored by the ModelSelector.
280
- *
281
- * This is how a SpatialViewDefinition selects the elements to display:
282
- *
283
- * SpatialViewDefinition
284
- * * ModelSelector
285
- * * ModelIds -------> SpatialModels <----------GeometricElement3d.Model
286
- * * CategorySelector
287
- * * CategoryIds -----> SpatialCategories <----------GeometricElement3d.Category
288
- * @public
289
- */
290
- class SpatialViewDefinition extends (_d = ViewDefinition3d) {
291
- /** @internal */
292
- constructor(props, iModel) {
293
- super(props, iModel);
294
- this.modelSelectorId = core_bentley_1.Id64.fromJSON(props.modelSelectorId);
295
- if (!core_bentley_1.Id64.isValid(this.modelSelectorId))
296
- throw new core_common_1.IModelError(core_bentley_1.IModelStatus.BadArg, `modelSelectorId is invalid`);
297
- }
298
- /** @internal */
299
- static get className() { return "SpatialViewDefinition"; }
300
- /** @internal */
301
- toJSON() {
302
- const json = super.toJSON();
303
- json.modelSelectorId = this.modelSelectorId;
304
- return json;
305
- }
306
- /** @internal */
307
- collectReferenceConcreteIds(referenceIds) {
308
- super.collectReferenceConcreteIds(referenceIds);
309
- referenceIds.addElement(this.modelSelectorId);
310
- }
311
- /** Load this view's ModelSelector from the IModelDb. */
312
- loadModelSelector() { return this.iModel.elements.getElement(this.modelSelectorId); }
313
- /**
314
- * Create an SpatialViewDefinition with camera.
315
- * @param iModelDb The iModel
316
- * @param definitionModelId The [[DefinitionModel]]
317
- * @param name The name/CodeValue of the view
318
- * @param modelSelectorId The [[ModelSelector]] that this view should use
319
- * @param categorySelectorId The [[CategorySelector]] that this view should use
320
- * @param displayStyleId The [[DisplayStyle3d]] that this view should use
321
- * @param range Defines the view origin and extents
322
- * @param standardView Optionally defines the view's rotation
323
- * @param cameraAngle Camera angle in radians.
324
- * @returns The newly constructed OrthographicViewDefinition element
325
- * @throws [[IModelError]] if there is a problem creating the view
326
- */
327
- static createWithCamera(iModelDb, definitionModelId, name, modelSelectorId, categorySelectorId, displayStyleId, range, standardView = core_geometry_1.StandardViewIndex.Iso, cameraAngle = core_geometry_1.Angle.piOver2Radians) {
328
- const rotation = core_geometry_1.Matrix3d.createStandardWorldToView(standardView);
329
- const angles = core_geometry_1.YawPitchRollAngles.createFromMatrix3d(rotation);
330
- const rotationTransform = core_geometry_1.Transform.createOriginAndMatrix(undefined, rotation);
331
- const rotatedRange = rotationTransform.multiplyRange(range);
332
- const cameraDistance = 2 * (rotatedRange.diagonal().magnitudeXY() / 2.0) / Math.tan(cameraAngle / 2.0);
333
- const cameraLocation = rotatedRange.diagonalFractionToPoint(.5); // Start at center.
334
- cameraLocation.z += cameraDistance; // Back up by camera distance.
335
- rotation.multiplyTransposeVectorInPlace(cameraLocation);
336
- const viewDefinitionProps = {
337
- classFullName: this.classFullName,
338
- model: definitionModelId,
339
- code: this.createCode(iModelDb, definitionModelId, name),
340
- modelSelectorId,
341
- categorySelectorId,
342
- displayStyleId,
343
- origin: rotation.multiplyTransposeXYZ(rotatedRange.low.x, rotatedRange.low.y, rotatedRange.low.z),
344
- extents: rotatedRange.diagonal(),
345
- angles,
346
- cameraOn: true,
347
- camera: { lens: { radians: cameraAngle }, focusDist: cameraDistance, eye: cameraLocation },
348
- };
349
- return new SpatialViewDefinition(viewDefinitionProps, iModelDb);
350
- }
351
- /**
352
- * Insert an SpatialViewDefinition with camera On
353
- * @param iModelDb Insert into this iModel
354
- * @param definitionModelId Insert the new OrthographicViewDefinition into this DefinitionModel
355
- * @param name The name/CodeValue of the view
356
- * @param modelSelectorId The [[ModelSelector]] that this view should use
357
- * @param categorySelectorId The [[CategorySelector]] that this view should use
358
- * @param displayStyleId The [[DisplayStyle3d]] that this view should use
359
- * @param range Defines the view origin and extents
360
- * @param standardView Optionally defines the view's rotation
361
- * @param cameraAngle Camera angle in radians.
362
- * @returns The Id of the newly inserted OrthographicViewDefinition element
363
- * @throws [[IModelError]] if there is an insert problem.
364
- */
365
- static insertWithCamera(iModelDb, definitionModelId, name, modelSelectorId, categorySelectorId, displayStyleId, range, standardView = core_geometry_1.StandardViewIndex.Iso, cameraAngle = core_geometry_1.Angle.piOver2Radians) {
366
- const viewDefinition = this.createWithCamera(iModelDb, definitionModelId, name, modelSelectorId, categorySelectorId, displayStyleId, range, standardView, cameraAngle);
367
- return iModelDb.elements.insertElement(viewDefinition.toJSON());
368
- }
369
- }
370
- exports.SpatialViewDefinition = SpatialViewDefinition;
371
- _c = SpatialViewDefinition;
372
- /** @beta */
373
- SpatialViewDefinition.requiredReferenceKeys = [...Reflect.get(_d, "requiredReferenceKeys", _c), "modelSelectorId"];
374
- /** @alpha */
375
- SpatialViewDefinition.requiredReferenceKeyTypeMap = {
376
- ...Reflect.get(_d, "requiredReferenceKeyTypeMap", _c),
377
- modelSelectorId: core_common_1.ConcreteEntityTypes.Element,
378
- };
379
- /** Defines a spatial view that displays geometry on the image plane using a parallel orthographic projection.
380
- * See [how to create a OrthographicViewDefinition]$(docs/learning/backend/CreateElements.md#OrthographicViewDefinition).
381
- * @public
382
- */
383
- class OrthographicViewDefinition extends SpatialViewDefinition {
384
- /** @internal */
385
- static get className() { return "OrthographicViewDefinition"; }
386
- constructor(props, iModel) { super(props, iModel); }
387
- /**
388
- * Create an OrthographicViewDefinition
389
- * @param iModelDb The iModel
390
- * @param definitionModelId The [[DefinitionModel]]
391
- * @param name The name/CodeValue of the view
392
- * @param modelSelectorId The [[ModelSelector]] that this view should use
393
- * @param categorySelectorId The [[CategorySelector]] that this view should use
394
- * @param displayStyleId The [[DisplayStyle3d]] that this view should use
395
- * @param range Defines the view origin and extents
396
- * @param standardView Optionally defines the view's rotation
397
- * @returns The newly constructed OrthographicViewDefinition element
398
- * @throws [[IModelError]] if there is a problem creating the view
399
- */
400
- static create(iModelDb, definitionModelId, name, modelSelectorId, categorySelectorId, displayStyleId, range, standardView = core_geometry_1.StandardViewIndex.Iso) {
401
- const rotation = core_geometry_1.Matrix3d.createStandardWorldToView(standardView);
402
- const angles = core_geometry_1.YawPitchRollAngles.createFromMatrix3d(rotation);
403
- const rotationTransform = core_geometry_1.Transform.createOriginAndMatrix(undefined, rotation);
404
- const rotatedRange = rotationTransform.multiplyRange(range);
405
- const viewDefinitionProps = {
406
- classFullName: this.classFullName,
407
- model: definitionModelId,
408
- code: this.createCode(iModelDb, definitionModelId, name),
409
- modelSelectorId,
410
- categorySelectorId,
411
- displayStyleId,
412
- origin: rotation.multiplyTransposeXYZ(rotatedRange.low.x, rotatedRange.low.y, rotatedRange.low.z),
413
- extents: rotatedRange.diagonal(),
414
- angles,
415
- cameraOn: false,
416
- camera: new core_common_1.Camera(), // not used when cameraOn === false
417
- };
418
- return new OrthographicViewDefinition(viewDefinitionProps, iModelDb);
419
- }
420
- /**
421
- * Insert an OrthographicViewDefinition
422
- * @param iModelDb Insert into this iModel
423
- * @param definitionModelId Insert the new OrthographicViewDefinition into this DefinitionModel
424
- * @param name The name/CodeValue of the view
425
- * @param modelSelectorId The [[ModelSelector]] that this view should use
426
- * @param categorySelectorId The [[CategorySelector]] that this view should use
427
- * @param displayStyleId The [[DisplayStyle3d]] that this view should use
428
- * @param range Defines the view origin and extents
429
- * @param standardView Optionally defines the view's rotation
430
- * @returns The Id of the newly inserted OrthographicViewDefinition element
431
- * @throws [[IModelError]] if there is an insert problem.
432
- */
433
- static insert(iModelDb, definitionModelId, name, modelSelectorId, categorySelectorId, displayStyleId, range, standardView = core_geometry_1.StandardViewIndex.Iso) {
434
- const viewDefinition = this.create(iModelDb, definitionModelId, name, modelSelectorId, categorySelectorId, displayStyleId, range, standardView);
435
- return iModelDb.elements.insertElement(viewDefinition.toJSON());
436
- }
437
- /** Set a new viewed range without changing the rotation or any other properties. */
438
- setRange(range) {
439
- const rotation = this.angles.toMatrix3d();
440
- const rotationTransform = core_geometry_1.Transform.createOriginAndMatrix(undefined, rotation);
441
- const rotatedRange = rotationTransform.multiplyRange(range);
442
- this.origin = core_geometry_1.Point3d.createFrom(rotation.multiplyTransposeXYZ(rotatedRange.low.x, rotatedRange.low.y, rotatedRange.low.z));
443
- this.extents = rotatedRange.diagonal();
444
- }
445
- }
446
- exports.OrthographicViewDefinition = OrthographicViewDefinition;
447
- /** Defines a view of a single 2d model. Each 2d model has its own coordinate system, so only one may appear per view.
448
- * @public
449
- */
450
- class ViewDefinition2d extends ViewDefinition {
451
- /** @internal */
452
- constructor(props, iModel) {
453
- super(props, iModel);
454
- this.baseModelId = core_bentley_1.Id64.fromJSON(props.baseModelId);
455
- this.origin = core_geometry_1.Point2d.fromJSON(props.origin);
456
- this.delta = core_geometry_1.Point2d.fromJSON(props.delta);
457
- this.angle = core_geometry_1.Angle.fromJSON(props.angle);
458
- this._details = new core_common_1.ViewDetails(this.jsonProperties);
459
- }
460
- /** @internal */
461
- static get className() { return "ViewDefinition2d"; }
462
- /** @internal */
463
- toJSON() {
464
- const val = super.toJSON();
465
- val.baseModelId = this.baseModelId;
466
- val.origin = this.origin;
467
- val.delta = this.delta;
468
- val.angle = this.angle;
469
- return val;
470
- }
471
- /** @internal */
472
- collectReferenceConcreteIds(referenceIds) {
473
- super.collectReferenceConcreteIds(referenceIds);
474
- referenceIds.addElement(this.baseModelId);
475
- }
476
- /** Provides access to optional detail settings for this view. */
477
- get details() { return this._details; }
478
- /** Load this view's DisplayStyle2d from the IModelDb. */
479
- loadDisplayStyle2d() { return this.iModel.elements.getElement(this.displayStyleId); }
480
- }
481
- exports.ViewDefinition2d = ViewDefinition2d;
482
- /** Defines a view of a [[DrawingModel]].
483
- * @public
484
- */
485
- class DrawingViewDefinition extends ViewDefinition2d {
486
- /** @internal */
487
- static get className() { return "DrawingViewDefinition"; }
488
- /** @internal */
489
- constructor(props, iModel) {
490
- super(props, iModel);
491
- }
492
- /** Create a DrawingViewDefinition
493
- * @param iModelDb The iModel
494
- * @param definitionModelId The [[DefinitionModel]]
495
- * @param name The name/CodeValue of the view
496
- * @param baseModelId The base [[DrawingModel]]
497
- * @param categorySelectorId The [[CategorySelector]] that this view should use
498
- * @param displayStyleId The [[DisplayStyle2d]] that this view should use
499
- * @param range Defines the view origin and extents
500
- * @throws [[IModelError]] if there is a problem creating the element.
501
- */
502
- static create(iModelDb, definitionModelId, name, baseModelId, categorySelectorId, displayStyleId, range) {
503
- const viewDefinitionProps = {
504
- classFullName: this.classFullName,
505
- model: definitionModelId,
506
- code: this.createCode(iModelDb, definitionModelId, name),
507
- baseModelId,
508
- categorySelectorId,
509
- displayStyleId,
510
- origin: { x: range.low.x, y: range.low.y },
511
- delta: range.diagonal(),
512
- angle: 0,
513
- };
514
- return new DrawingViewDefinition(viewDefinitionProps, iModelDb);
515
- }
516
- /** Insert a DrawingViewDefinition
517
- * @param iModelDb Insert into this iModel
518
- * @param definitionModelId Insert the new DrawingViewDefinition into this [[DefinitionModel]]
519
- * @param name The name/CodeValue of the view
520
- * @param baseModelId The base [[DrawingModel]]
521
- * @param categorySelectorId The [[CategorySelector]] that this view should use
522
- * @param displayStyleId The [[DisplayStyle2d]] that this view should use
523
- * @param range Defines the view origin and extents
524
- * @throws [[IModelError]] if there is an insert problem.
525
- */
526
- static insert(iModelDb, definitionModelId, name, baseModelId, categorySelectorId, displayStyleId, range) {
527
- const viewDefinition = this.create(iModelDb, definitionModelId, name, baseModelId, categorySelectorId, displayStyleId, range);
528
- return iModelDb.elements.insertElement(viewDefinition.toJSON());
529
- }
530
- }
531
- exports.DrawingViewDefinition = DrawingViewDefinition;
532
- /** Defines a view of a [[SheetModel]].
533
- * @public
534
- */
535
- class SheetViewDefinition extends ViewDefinition2d {
536
- /** @internal */
537
- static get className() { return "SheetViewDefinition"; }
538
- }
539
- exports.SheetViewDefinition = SheetViewDefinition;
540
- /** A ViewDefinition used to display a 2d template model.
541
- * @internal
542
- */
543
- class TemplateViewDefinition2d extends ViewDefinition2d {
544
- /** @internal */
545
- static get className() { return "TemplateViewDefinition2d"; }
546
- }
547
- exports.TemplateViewDefinition2d = TemplateViewDefinition2d;
548
- /** A ViewDefinition used to display a 3d template model.
549
- * @internal
550
- */
551
- class TemplateViewDefinition3d extends ViewDefinition3d {
552
- /** @internal */
553
- static get className() { return "TemplateViewDefinition3d"; }
554
- }
555
- exports.TemplateViewDefinition3d = TemplateViewDefinition3d;
556
- /** An auxiliary coordinate system element. Auxiliary coordinate systems can be used by views to show
557
- * coordinate information in different units and/or orientations.
558
- * @public
559
- */
560
- class AuxCoordSystem extends Element_1.DefinitionElement {
561
- constructor(props, iModel) { super(props, iModel); }
562
- /** @internal */
563
- static get className() { return "AuxCoordSystem"; }
564
- }
565
- exports.AuxCoordSystem = AuxCoordSystem;
566
- /** A 2d auxiliary coordinate system.
567
- * @public
568
- */
569
- class AuxCoordSystem2d extends AuxCoordSystem {
570
- constructor(props, iModel) { super(props, iModel); }
571
- /** @internal */
572
- static get className() { return "AuxCoordSystem2d"; }
573
- /** Create a Code for a AuxCoordSystem2d element given a name that is meant to be unique within the scope of the specified DefinitionModel.
574
- * @param iModel The IModelDb
575
- * @param scopeModelId The Id of the DefinitionModel that contains the AuxCoordSystem2d element and provides the scope for its name.
576
- * @param codeValue The AuxCoordSystem2d name
577
- */
578
- static createCode(iModel, scopeModelId, codeValue) {
579
- const codeSpec = iModel.codeSpecs.getByName(core_common_1.BisCodeSpec.auxCoordSystem2d);
580
- return new core_common_1.Code({ spec: codeSpec.id, scope: scopeModelId, value: codeValue });
581
- }
582
- }
583
- exports.AuxCoordSystem2d = AuxCoordSystem2d;
584
- /** A 3d auxiliary coordinate system.
585
- * @public
586
- */
587
- class AuxCoordSystem3d extends AuxCoordSystem {
588
- constructor(props, iModel) { super(props, iModel); }
589
- /** @internal */
590
- static get className() { return "AuxCoordSystem3d"; }
591
- /** Create a Code for a AuxCoordSystem3d element given a name that is meant to be unique within the scope of the specified DefinitionModel.
592
- * @param iModel The IModelDb
593
- * @param scopeModelId The Id of the DefinitionModel that contains the AuxCoordSystem3d element and provides the scope for its name.
594
- * @param codeValue The AuxCoordSystem3d name
595
- */
596
- static createCode(iModel, scopeModelId, codeValue) {
597
- const codeSpec = iModel.codeSpecs.getByName(core_common_1.BisCodeSpec.auxCoordSystem3d);
598
- return new core_common_1.Code({ spec: codeSpec.id, scope: scopeModelId, value: codeValue });
599
- }
600
- }
601
- exports.AuxCoordSystem3d = AuxCoordSystem3d;
602
- /** A spatial auxiliary coordinate system.
603
- * @public
604
- */
605
- class AuxCoordSystemSpatial extends AuxCoordSystem3d {
606
- /** @internal */
607
- static get className() { return "AuxCoordSystemSpatial"; }
608
- /** Create a Code for a AuxCoordSystemSpatial element given a name that is meant to be unique within the scope of the specified DefinitionModel.
609
- * @param iModel The IModelDb
610
- * @param scopeModelId The Id of the DefinitionModel that contains the AuxCoordSystemSpatial element and provides the scope for its name.
611
- * @param codeValue The AuxCoordSystemSpatial name
612
- */
613
- static createCode(iModel, scopeModelId, codeValue) {
614
- const codeSpec = iModel.codeSpecs.getByName(core_common_1.BisCodeSpec.auxCoordSystemSpatial);
615
- return new core_common_1.Code({ spec: codeSpec.id, scope: scopeModelId, value: codeValue });
616
- }
617
- }
618
- exports.AuxCoordSystemSpatial = AuxCoordSystemSpatial;
619
- /** Represents an *attachment* of a [[ViewDefinition]] to a [[Sheet]].
620
- * @public
621
- */
622
- class ViewAttachment extends Element_1.GraphicalElement2d {
623
- constructor(props, iModel) {
624
- super(props, iModel);
625
- this.view = new core_common_1.RelatedElement(props.view);
626
- // ###NOTE: scale, displayPriority, and clipping vectors are stored in ViewAttachmentProps.jsonProperties.
627
- }
628
- /** @internal */
629
- static get className() { return "ViewAttachment"; }
630
- /** @internal */
631
- collectReferenceConcreteIds(referenceIds) {
632
- super.collectReferenceConcreteIds(referenceIds);
633
- referenceIds.addElement(this.view.id);
634
- }
635
- }
636
- exports.ViewAttachment = ViewAttachment;
637
- /** The position in space of a Light.
638
- * @internal
639
- */
640
- class LightLocation extends Element_1.SpatialLocationElement {
641
- /** @internal */
642
- constructor(props, iModel) { super(props, iModel); }
643
- /** @internal */
644
- static get className() { return "LightLocation"; }
645
- }
646
- exports.LightLocation = LightLocation;
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ /** @packageDocumentation
7
+ * @module ViewDefinitions
8
+ */
9
+ var _a, _b, _c, _d;
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.LightLocation = exports.ViewAttachment = exports.AuxCoordSystemSpatial = exports.AuxCoordSystem3d = exports.AuxCoordSystem2d = exports.AuxCoordSystem = exports.TemplateViewDefinition3d = exports.TemplateViewDefinition2d = exports.SheetViewDefinition = exports.DrawingViewDefinition = exports.ViewDefinition2d = exports.OrthographicViewDefinition = exports.SpatialViewDefinition = exports.ViewDefinition3d = exports.ViewDefinition = exports.CategorySelector = exports.ModelSelector = void 0;
12
+ const core_bentley_1 = require("@itwin/core-bentley");
13
+ const core_geometry_1 = require("@itwin/core-geometry");
14
+ const core_common_1 = require("@itwin/core-common");
15
+ const Element_1 = require("./Element");
16
+ /** Holds the list of Ids of GeometricModels displayed by a [[SpatialViewDefinition]]. Multiple SpatialViewDefinitions may point to the same ModelSelector.
17
+ * @see [ModelSelectorState]($frontend)
18
+ * See [how to create a ModelSelector]$(docs/learning/backend/CreateElements.md#ModelSelector).
19
+ * @public
20
+ */
21
+ class ModelSelector extends Element_1.DefinitionElement {
22
+ /** @internal */
23
+ static get className() { return "ModelSelector"; }
24
+ /** @internal */
25
+ constructor(props, iModel) {
26
+ super(props, iModel);
27
+ this.models = props.models;
28
+ }
29
+ /** @internal */
30
+ toJSON() {
31
+ const val = super.toJSON();
32
+ val.models = this.models;
33
+ return val;
34
+ }
35
+ collectReferenceIds(referenceIds) {
36
+ super.collectReferenceIds(referenceIds);
37
+ this.models.forEach((modelId) => referenceIds.addModel(modelId));
38
+ }
39
+ /** Create a Code for a ModelSelector given a name that is meant to be unique within the scope of the specified DefinitionModel.
40
+ * @param iModel The IModelDb
41
+ * @param scopeModelId The Id of the DefinitionModel that contains the ModelSelector and provides the scope for its name.
42
+ * @param codeValue The ModelSelector name
43
+ */
44
+ static createCode(iModel, scopeModelId, codeValue) {
45
+ const codeSpec = iModel.codeSpecs.getByName(core_common_1.BisCodeSpec.modelSelector);
46
+ return new core_common_1.Code({ spec: codeSpec.id, scope: scopeModelId, value: codeValue });
47
+ }
48
+ /**
49
+ * Create a ModelSelector to select which Models are displayed by a ViewDefinition.
50
+ * @param iModelDb The iModel
51
+ * @param definitionModelId The [[DefinitionModel]]
52
+ * @param name The name/CodeValue of the ModelSelector
53
+ * @param models Array of models to select for display
54
+ * @returns The newly constructed ModelSelector element.
55
+ * @throws [[IModelError]] if unable to create the element.
56
+ */
57
+ static create(iModelDb, definitionModelId, name, models) {
58
+ const modelSelectorProps = {
59
+ classFullName: this.classFullName,
60
+ code: this.createCode(iModelDb, definitionModelId, name),
61
+ model: definitionModelId,
62
+ models,
63
+ isPrivate: false,
64
+ };
65
+ return new ModelSelector(modelSelectorProps, iModelDb);
66
+ }
67
+ /**
68
+ * Insert a ModelSelector to select which Models are displayed by a ViewDefinition.
69
+ * @param iModelDb Insert into this iModel
70
+ * @param definitionModelId Insert the new ModelSelector into this DefinitionModel
71
+ * @param name The name/CodeValue of the ModelSelector
72
+ * @param models Array of models to select for display
73
+ * @returns The Id of the newly inserted ModelSelector element.
74
+ * @throws [[IModelError]] if unable to insert the element.
75
+ */
76
+ static insert(iModelDb, definitionModelId, name, models) {
77
+ const modelSelector = this.create(iModelDb, definitionModelId, name, models);
78
+ return iModelDb.elements.insertElement(modelSelector.toJSON());
79
+ }
80
+ }
81
+ exports.ModelSelector = ModelSelector;
82
+ /** Holds a list of Ids of Categories to be displayed in a view.
83
+ * @see [CategorySelectorState]($frontend)
84
+ * See [how to create a CategorySelector]$(docs/learning/backend/CreateElements.md#CategorySelector).
85
+ * @public
86
+ */
87
+ class CategorySelector extends Element_1.DefinitionElement {
88
+ /** @internal */
89
+ static get className() { return "CategorySelector"; }
90
+ /** @internal */
91
+ constructor(props, iModel) {
92
+ super(props, iModel);
93
+ this.categories = props.categories;
94
+ }
95
+ /** @internal */
96
+ toJSON() {
97
+ const val = super.toJSON();
98
+ val.categories = this.categories;
99
+ return val;
100
+ }
101
+ collectReferenceIds(referenceIds) {
102
+ super.collectReferenceIds(referenceIds);
103
+ this.categories.forEach((categoryId) => referenceIds.addElement(categoryId));
104
+ }
105
+ /** Create a Code for a CategorySelector given a name that is meant to be unique within the scope of the specified DefinitionModel.
106
+ * @param iModel The IModelDb
107
+ * @param scopeModelId The Id of the DefinitionModel that contains the CategorySelector and provides the scope for its name.
108
+ * @param codeValue The CategorySelector name
109
+ */
110
+ static createCode(iModel, scopeModelId, codeValue) {
111
+ const codeSpec = iModel.codeSpecs.getByName(core_common_1.BisCodeSpec.categorySelector);
112
+ return new core_common_1.Code({ spec: codeSpec.id, scope: scopeModelId, value: codeValue });
113
+ }
114
+ /**
115
+ * Create a CategorySelector to select which categories are displayed by a ViewDefinition.
116
+ * @param iModelDb The iModel
117
+ * @param definitionModelId The [[DefinitionModel]]
118
+ * @param name The name of the CategorySelector
119
+ * @param categories Array of categories to select for display
120
+ * @returns The newly constructed CategorySelector element.
121
+ * @throws [[IModelError]] if unable to create the element.
122
+ */
123
+ static create(iModelDb, definitionModelId, name, categories) {
124
+ const categorySelectorProps = {
125
+ classFullName: this.classFullName,
126
+ code: this.createCode(iModelDb, definitionModelId, name),
127
+ model: definitionModelId,
128
+ categories,
129
+ isPrivate: false,
130
+ };
131
+ return new CategorySelector(categorySelectorProps, iModelDb);
132
+ }
133
+ /**
134
+ * Insert a CategorySelector to select which categories are displayed by a ViewDefinition.
135
+ * @param iModelDb Insert into this iModel
136
+ * @param definitionModelId Insert the new CategorySelector into this DefinitionModel
137
+ * @param name The name of the CategorySelector
138
+ * @param categories Array of categories to select for display
139
+ * @returns The Id of the newly inserted CategorySelector element.
140
+ * @throws [[IModelError]] if unable to insert the element.
141
+ */
142
+ static insert(iModelDb, definitionModelId, name, categories) {
143
+ const categorySelector = this.create(iModelDb, definitionModelId, name, categories);
144
+ return iModelDb.elements.insertElement(categorySelector.toJSON());
145
+ }
146
+ }
147
+ exports.CategorySelector = CategorySelector;
148
+ /**
149
+ * The definition element for a view. ViewDefinitions specify the area/volume that is viewed, the Ids of a DisplayStyle and a CategorySelector,
150
+ * plus additional view-specific parameters in their [[Element.jsonProperties]].
151
+ *
152
+ * Subclasses of ViewDefinition determine which model(s) are viewed.
153
+ *
154
+ * **Example: Obtaining the background color for a view**
155
+ * ``` ts
156
+ * [[include:ViewDefinition.getBackgroundColor]]
157
+ * ```
158
+ *
159
+ * @note ViewDefinition is only available in the backend. See [ViewState]($frontend) for usage in the frontend.
160
+ * @public
161
+ */
162
+ class ViewDefinition extends (_b = Element_1.DefinitionElement) {
163
+ /** @internal */
164
+ static get className() { return "ViewDefinition"; }
165
+ /** @internal */
166
+ constructor(props, iModel) {
167
+ super(props, iModel);
168
+ this.categorySelectorId = core_bentley_1.Id64.fromJSON(props.categorySelectorId);
169
+ if (!core_bentley_1.Id64.isValid(this.categorySelectorId))
170
+ throw new core_common_1.IModelError(core_bentley_1.IModelStatus.BadArg, `categorySelectorId is invalid`);
171
+ this.displayStyleId = core_bentley_1.Id64.fromJSON(props.displayStyleId);
172
+ if (!core_bentley_1.Id64.isValid(this.displayStyleId))
173
+ throw new core_common_1.IModelError(core_bentley_1.IModelStatus.BadArg, `displayStyleId is invalid`);
174
+ }
175
+ /** @internal */
176
+ toJSON() {
177
+ const json = super.toJSON();
178
+ json.categorySelectorId = this.categorySelectorId;
179
+ json.displayStyleId = this.displayStyleId;
180
+ return json;
181
+ }
182
+ collectReferenceIds(referenceIds) {
183
+ super.collectReferenceIds(referenceIds);
184
+ referenceIds.addElement(this.categorySelectorId);
185
+ referenceIds.addElement(this.displayStyleId);
186
+ const acsId = this.getAuxiliaryCoordinateSystemId();
187
+ if (core_bentley_1.Id64.isValidId64(acsId)) {
188
+ referenceIds.addElement(acsId);
189
+ }
190
+ }
191
+ /** @internal */
192
+ static onCloned(context, sourceElementProps, targetElementProps) {
193
+ super.onCloned(context, sourceElementProps, targetElementProps);
194
+ if (context.isBetweenIModels && targetElementProps.jsonProperties && targetElementProps.jsonProperties.viewDetails) {
195
+ const acsId = core_bentley_1.Id64.fromJSON(targetElementProps.jsonProperties.viewDetails.acs);
196
+ if (core_bentley_1.Id64.isValidId64(acsId)) {
197
+ targetElementProps.jsonProperties.viewDetails.acs = context.findTargetElementId(acsId);
198
+ }
199
+ }
200
+ }
201
+ /** Type guard for `instanceof ViewDefinition3d` */
202
+ isView3d() { return this instanceof ViewDefinition3d; }
203
+ /** Type guard for 'instanceof ViewDefinition2d` */
204
+ isView2d() { return this instanceof ViewDefinition2d; }
205
+ /** Type guard for `instanceof SpatialViewDefinition` */
206
+ isSpatialView() { return this instanceof SpatialViewDefinition; }
207
+ /** Type guard for 'instanceof DrawingViewDefinition' */
208
+ isDrawingView() { return this instanceof DrawingViewDefinition; }
209
+ /** Load this view's DisplayStyle from the IModelDb. */
210
+ loadDisplayStyle() { return this.iModel.elements.getElement(this.displayStyleId); }
211
+ /** Load this view's CategorySelector from the IModelDb. */
212
+ loadCategorySelector() { return this.iModel.elements.getElement(this.categorySelectorId); }
213
+ /** The Id of the AuxiliaryCoordinateSystem for this ViewDefinition, or an invalid Id if no ACS is defined. */
214
+ getAuxiliaryCoordinateSystemId() {
215
+ return this.details.auxiliaryCoordinateSystemId;
216
+ }
217
+ /** Set or clear the AuxiliaryCoordinateSystem for this ViewDefinition.
218
+ * @param acsId The Id of the new AuxiliaryCoordinateSystem. If `Id64.invalid` is passed, then no AuxiliaryCoordinateSystem will be used.
219
+ */
220
+ setAuxiliaryCoordinateSystemId(acsId) {
221
+ this.details.auxiliaryCoordinateSystemId = acsId;
222
+ }
223
+ /** Create a Code for a ViewDefinition given a name that is meant to be unique within the scope of the specified DefinitionModel.
224
+ * @param iModel The IModelDb
225
+ * @param scopeModelId The Id of the DefinitionModel to contain the ViewDefinition and provides the scope for its name.
226
+ * @param codeValue The ViewDefinition name
227
+ */
228
+ static createCode(iModel, scopeModelId, codeValue) {
229
+ const codeSpec = iModel.codeSpecs.getByName(core_common_1.BisCodeSpec.viewDefinition);
230
+ return new core_common_1.Code({ spec: codeSpec.id, scope: scopeModelId, value: codeValue });
231
+ }
232
+ }
233
+ _a = ViewDefinition;
234
+ /** @beta */
235
+ ViewDefinition.requiredReferenceKeys = [...Reflect.get(_b, "requiredReferenceKeys", _a), "categorySelectorId", "displayStyleId"];
236
+ /** @alpha */
237
+ ViewDefinition.requiredReferenceKeyTypeMap = {
238
+ ...Reflect.get(_b, "requiredReferenceKeyTypeMap", _a),
239
+ categorySelectorId: core_common_1.ConcreteEntityTypes.Element,
240
+ displayStyleId: core_common_1.ConcreteEntityTypes.Element,
241
+ };
242
+ exports.ViewDefinition = ViewDefinition;
243
+ /** Defines a view of one or more 3d models.
244
+ * @public
245
+ */
246
+ class ViewDefinition3d extends ViewDefinition {
247
+ /** @internal */
248
+ static get className() { return "ViewDefinition3d"; }
249
+ /** @internal */
250
+ constructor(props, iModel) {
251
+ super(props, iModel);
252
+ this.cameraOn = core_bentley_1.JsonUtils.asBool(props.cameraOn);
253
+ this.origin = core_geometry_1.Point3d.fromJSON(props.origin);
254
+ this.extents = core_geometry_1.Vector3d.fromJSON(props.extents);
255
+ this.angles = core_geometry_1.YawPitchRollAngles.fromJSON(props.angles);
256
+ this.camera = new core_common_1.Camera(props.camera);
257
+ this._details = new core_common_1.ViewDetails3d(this.jsonProperties);
258
+ }
259
+ /** @internal */
260
+ toJSON() {
261
+ const val = super.toJSON();
262
+ val.cameraOn = this.cameraOn;
263
+ val.origin = this.origin;
264
+ val.extents = this.extents;
265
+ val.angles = this.angles;
266
+ val.camera = this.camera;
267
+ return val;
268
+ }
269
+ /** Provides access to optional detail settings for this view. */
270
+ get details() { return this._details; }
271
+ /** Load this view's DisplayStyle3d from the IModelDb. */
272
+ loadDisplayStyle3d() { return this.iModel.elements.getElement(this.displayStyleId); }
273
+ }
274
+ exports.ViewDefinition3d = ViewDefinition3d;
275
+ /** Defines a view of one or more SpatialModels.
276
+ * The list of viewed models is stored by the ModelSelector.
277
+ *
278
+ * This is how a SpatialViewDefinition selects the elements to display:
279
+ *
280
+ * SpatialViewDefinition
281
+ * * ModelSelector
282
+ * * ModelIds -------> SpatialModels <----------GeometricElement3d.Model
283
+ * * CategorySelector
284
+ * * CategoryIds -----> SpatialCategories <----------GeometricElement3d.Category
285
+ * @public
286
+ */
287
+ class SpatialViewDefinition extends (_d = ViewDefinition3d) {
288
+ /** @internal */
289
+ static get className() { return "SpatialViewDefinition"; }
290
+ /** @internal */
291
+ constructor(props, iModel) {
292
+ super(props, iModel);
293
+ this.modelSelectorId = core_bentley_1.Id64.fromJSON(props.modelSelectorId);
294
+ if (!core_bentley_1.Id64.isValid(this.modelSelectorId))
295
+ throw new core_common_1.IModelError(core_bentley_1.IModelStatus.BadArg, `modelSelectorId is invalid`);
296
+ }
297
+ /** Construct a SpatialViewDefinition from its JSON representation. */
298
+ static fromJSON(props, iModel) {
299
+ return new SpatialViewDefinition({ ...props, classFullName: this.classFullName }, iModel);
300
+ }
301
+ /** Convert this view to its JSON representation. */
302
+ toJSON() {
303
+ const json = super.toJSON();
304
+ json.modelSelectorId = this.modelSelectorId;
305
+ return json;
306
+ }
307
+ collectReferenceIds(referenceIds) {
308
+ super.collectReferenceIds(referenceIds);
309
+ referenceIds.addElement(this.modelSelectorId);
310
+ }
311
+ /** Load this view's ModelSelector from the IModelDb. */
312
+ loadModelSelector() { return this.iModel.elements.getElement(this.modelSelectorId); }
313
+ /**
314
+ * Create a SpatialViewDefinition with the camera turned on.
315
+ * @param iModelDb The iModel
316
+ * @param definitionModelId The [[DefinitionModel]]
317
+ * @param name The name/CodeValue of the view
318
+ * @param modelSelectorId The [[ModelSelector]] that this view should use
319
+ * @param categorySelectorId The [[CategorySelector]] that this view should use
320
+ * @param displayStyleId The [[DisplayStyle3d]] that this view should use
321
+ * @param range Defines the view origin and extents
322
+ * @param standardView Optionally defines the view's rotation
323
+ * @param cameraAngle Camera angle in radians.
324
+ * @returns The newly constructed SpatialViewDefinition element
325
+ * @throws [[IModelError]] if there is a problem creating the view
326
+ */
327
+ static createWithCamera(iModelDb, definitionModelId, name, modelSelectorId, categorySelectorId, displayStyleId, range, standardView = core_geometry_1.StandardViewIndex.Iso, cameraAngle = core_geometry_1.Angle.piOver2Radians) {
328
+ const rotation = core_geometry_1.Matrix3d.createStandardWorldToView(standardView);
329
+ const angles = core_geometry_1.YawPitchRollAngles.createFromMatrix3d(rotation);
330
+ const rotationTransform = core_geometry_1.Transform.createOriginAndMatrix(undefined, rotation);
331
+ const rotatedRange = rotationTransform.multiplyRange(range);
332
+ const cameraDistance = 2 * (rotatedRange.diagonal().magnitudeXY() / 2.0) / Math.tan(cameraAngle / 2.0);
333
+ const cameraLocation = rotatedRange.diagonalFractionToPoint(.5); // Start at center.
334
+ cameraLocation.z += cameraDistance; // Back up by camera distance.
335
+ rotation.multiplyTransposeVectorInPlace(cameraLocation);
336
+ const viewDefinitionProps = {
337
+ classFullName: this.classFullName,
338
+ model: definitionModelId,
339
+ code: this.createCode(iModelDb, definitionModelId, name),
340
+ modelSelectorId,
341
+ categorySelectorId,
342
+ displayStyleId,
343
+ origin: rotation.multiplyTransposeXYZ(rotatedRange.low.x, rotatedRange.low.y, rotatedRange.low.z),
344
+ extents: rotatedRange.diagonal(),
345
+ angles,
346
+ cameraOn: true,
347
+ camera: { lens: { radians: cameraAngle }, focusDist: cameraDistance, eye: cameraLocation },
348
+ };
349
+ return new SpatialViewDefinition(viewDefinitionProps, iModelDb);
350
+ }
351
+ /**
352
+ * Insert an SpatialViewDefinition with the camera turned on.
353
+ * @see [[createWithCamera]] for details.
354
+ * @returns The Id of the newly inserted SpatialViewDefinition element
355
+ * @throws [[IModelError]] if there is an insert problem.
356
+ */
357
+ static insertWithCamera(iModelDb, definitionModelId, name, modelSelectorId, categorySelectorId, displayStyleId, range, standardView = core_geometry_1.StandardViewIndex.Iso, cameraAngle = core_geometry_1.Angle.piOver2Radians) {
358
+ const viewDefinition = this.createWithCamera(iModelDb, definitionModelId, name, modelSelectorId, categorySelectorId, displayStyleId, range, standardView, cameraAngle);
359
+ return iModelDb.elements.insertElement(viewDefinition.toJSON());
360
+ }
361
+ }
362
+ _c = SpatialViewDefinition;
363
+ /** @beta */
364
+ SpatialViewDefinition.requiredReferenceKeys = [...Reflect.get(_d, "requiredReferenceKeys", _c), "modelSelectorId"];
365
+ /** @alpha */
366
+ SpatialViewDefinition.requiredReferenceKeyTypeMap = {
367
+ ...Reflect.get(_d, "requiredReferenceKeyTypeMap", _c),
368
+ modelSelectorId: core_common_1.ConcreteEntityTypes.Element,
369
+ };
370
+ exports.SpatialViewDefinition = SpatialViewDefinition;
371
+ /** Defines a spatial view that displays geometry on the image plane using a parallel orthographic projection.
372
+ * See [how to create a OrthographicViewDefinition]$(docs/learning/backend/CreateElements.md#OrthographicViewDefinition).
373
+ * @public
374
+ */
375
+ class OrthographicViewDefinition extends SpatialViewDefinition {
376
+ /** @internal */
377
+ static get className() { return "OrthographicViewDefinition"; }
378
+ constructor(props, iModel) { super(props, iModel); }
379
+ /**
380
+ * Create an OrthographicViewDefinition
381
+ * @param iModelDb The iModel
382
+ * @param definitionModelId The [[DefinitionModel]]
383
+ * @param name The name/CodeValue of the view
384
+ * @param modelSelectorId The [[ModelSelector]] that this view should use
385
+ * @param categorySelectorId The [[CategorySelector]] that this view should use
386
+ * @param displayStyleId The [[DisplayStyle3d]] that this view should use
387
+ * @param range Defines the view origin and extents
388
+ * @param standardView Optionally defines the view's rotation
389
+ * @returns The newly constructed OrthographicViewDefinition element
390
+ * @throws [[IModelError]] if there is a problem creating the view
391
+ */
392
+ static create(iModelDb, definitionModelId, name, modelSelectorId, categorySelectorId, displayStyleId, range, standardView = core_geometry_1.StandardViewIndex.Iso) {
393
+ const rotation = core_geometry_1.Matrix3d.createStandardWorldToView(standardView);
394
+ const angles = core_geometry_1.YawPitchRollAngles.createFromMatrix3d(rotation);
395
+ const rotationTransform = core_geometry_1.Transform.createOriginAndMatrix(undefined, rotation);
396
+ const rotatedRange = rotationTransform.multiplyRange(range);
397
+ const viewDefinitionProps = {
398
+ classFullName: this.classFullName,
399
+ model: definitionModelId,
400
+ code: this.createCode(iModelDb, definitionModelId, name),
401
+ modelSelectorId,
402
+ categorySelectorId,
403
+ displayStyleId,
404
+ origin: rotation.multiplyTransposeXYZ(rotatedRange.low.x, rotatedRange.low.y, rotatedRange.low.z),
405
+ extents: rotatedRange.diagonal(),
406
+ angles,
407
+ cameraOn: false,
408
+ camera: new core_common_1.Camera(), // not used when cameraOn === false
409
+ };
410
+ return new OrthographicViewDefinition(viewDefinitionProps, iModelDb);
411
+ }
412
+ /**
413
+ * Insert an OrthographicViewDefinition
414
+ * @param iModelDb Insert into this iModel
415
+ * @param definitionModelId Insert the new OrthographicViewDefinition into this DefinitionModel
416
+ * @param name The name/CodeValue of the view
417
+ * @param modelSelectorId The [[ModelSelector]] that this view should use
418
+ * @param categorySelectorId The [[CategorySelector]] that this view should use
419
+ * @param displayStyleId The [[DisplayStyle3d]] that this view should use
420
+ * @param range Defines the view origin and extents
421
+ * @param standardView Optionally defines the view's rotation
422
+ * @returns The Id of the newly inserted OrthographicViewDefinition element
423
+ * @throws [[IModelError]] if there is an insert problem.
424
+ */
425
+ static insert(iModelDb, definitionModelId, name, modelSelectorId, categorySelectorId, displayStyleId, range, standardView = core_geometry_1.StandardViewIndex.Iso) {
426
+ const viewDefinition = this.create(iModelDb, definitionModelId, name, modelSelectorId, categorySelectorId, displayStyleId, range, standardView);
427
+ return iModelDb.elements.insertElement(viewDefinition.toJSON());
428
+ }
429
+ /** Set a new viewed range without changing the rotation or any other properties. */
430
+ setRange(range) {
431
+ const rotation = this.angles.toMatrix3d();
432
+ const rotationTransform = core_geometry_1.Transform.createOriginAndMatrix(undefined, rotation);
433
+ const rotatedRange = rotationTransform.multiplyRange(range);
434
+ this.origin = core_geometry_1.Point3d.createFrom(rotation.multiplyTransposeXYZ(rotatedRange.low.x, rotatedRange.low.y, rotatedRange.low.z));
435
+ this.extents = rotatedRange.diagonal();
436
+ }
437
+ }
438
+ exports.OrthographicViewDefinition = OrthographicViewDefinition;
439
+ /** Defines a view of a single 2d model. Each 2d model has its own coordinate system, so only one may appear per view.
440
+ * @public
441
+ */
442
+ class ViewDefinition2d extends ViewDefinition {
443
+ /** @internal */
444
+ static get className() { return "ViewDefinition2d"; }
445
+ /** @internal */
446
+ constructor(props, iModel) {
447
+ super(props, iModel);
448
+ this.baseModelId = core_bentley_1.Id64.fromJSON(props.baseModelId);
449
+ this.origin = core_geometry_1.Point2d.fromJSON(props.origin);
450
+ this.delta = core_geometry_1.Point2d.fromJSON(props.delta);
451
+ this.angle = core_geometry_1.Angle.fromJSON(props.angle);
452
+ this._details = new core_common_1.ViewDetails(this.jsonProperties);
453
+ }
454
+ /** @internal */
455
+ toJSON() {
456
+ const val = super.toJSON();
457
+ val.baseModelId = this.baseModelId;
458
+ val.origin = this.origin;
459
+ val.delta = this.delta;
460
+ val.angle = this.angle;
461
+ return val;
462
+ }
463
+ collectReferenceIds(referenceIds) {
464
+ super.collectReferenceIds(referenceIds);
465
+ referenceIds.addElement(this.baseModelId);
466
+ }
467
+ /** Provides access to optional detail settings for this view. */
468
+ get details() { return this._details; }
469
+ /** Load this view's DisplayStyle2d from the IModelDb. */
470
+ loadDisplayStyle2d() { return this.iModel.elements.getElement(this.displayStyleId); }
471
+ }
472
+ exports.ViewDefinition2d = ViewDefinition2d;
473
+ /** Defines a view of a [[DrawingModel]].
474
+ * @public
475
+ */
476
+ class DrawingViewDefinition extends ViewDefinition2d {
477
+ /** @internal */
478
+ static get className() { return "DrawingViewDefinition"; }
479
+ /** @internal */
480
+ constructor(props, iModel) {
481
+ super(props, iModel);
482
+ }
483
+ /** Create a DrawingViewDefinition
484
+ * @param iModelDb The iModel
485
+ * @param definitionModelId The [[DefinitionModel]]
486
+ * @param name The name/CodeValue of the view
487
+ * @param baseModelId The base [[DrawingModel]]
488
+ * @param categorySelectorId The [[CategorySelector]] that this view should use
489
+ * @param displayStyleId The [[DisplayStyle2d]] that this view should use
490
+ * @param range Defines the view origin and extents
491
+ * @throws [[IModelError]] if there is a problem creating the element.
492
+ */
493
+ static create(iModelDb, definitionModelId, name, baseModelId, categorySelectorId, displayStyleId, range) {
494
+ const viewDefinitionProps = {
495
+ classFullName: this.classFullName,
496
+ model: definitionModelId,
497
+ code: this.createCode(iModelDb, definitionModelId, name),
498
+ baseModelId,
499
+ categorySelectorId,
500
+ displayStyleId,
501
+ origin: { x: range.low.x, y: range.low.y },
502
+ delta: range.diagonal(),
503
+ angle: 0,
504
+ };
505
+ return new DrawingViewDefinition(viewDefinitionProps, iModelDb);
506
+ }
507
+ /** Construct a DrawingViewDefinition from its JSON representation. */
508
+ static fromJSON(props, iModel) {
509
+ return new DrawingViewDefinition({ ...props, classFullName: this.classFullName }, iModel);
510
+ }
511
+ /** Insert a DrawingViewDefinition
512
+ * @param iModelDb Insert into this iModel
513
+ * @param definitionModelId Insert the new DrawingViewDefinition into this [[DefinitionModel]]
514
+ * @param name The name/CodeValue of the view
515
+ * @param baseModelId The base [[DrawingModel]]
516
+ * @param categorySelectorId The [[CategorySelector]] that this view should use
517
+ * @param displayStyleId The [[DisplayStyle2d]] that this view should use
518
+ * @param range Defines the view origin and extents
519
+ * @throws [[IModelError]] if there is an insert problem.
520
+ */
521
+ static insert(iModelDb, definitionModelId, name, baseModelId, categorySelectorId, displayStyleId, range) {
522
+ const viewDefinition = this.create(iModelDb, definitionModelId, name, baseModelId, categorySelectorId, displayStyleId, range);
523
+ return iModelDb.elements.insertElement(viewDefinition.toJSON());
524
+ }
525
+ }
526
+ exports.DrawingViewDefinition = DrawingViewDefinition;
527
+ /** Defines a view of a [[SheetModel]].
528
+ * @public
529
+ */
530
+ class SheetViewDefinition extends ViewDefinition2d {
531
+ /** @internal */
532
+ static get className() { return "SheetViewDefinition"; }
533
+ }
534
+ exports.SheetViewDefinition = SheetViewDefinition;
535
+ /** A ViewDefinition used to display a 2d template model.
536
+ * @internal
537
+ */
538
+ class TemplateViewDefinition2d extends ViewDefinition2d {
539
+ /** @internal */
540
+ static get className() { return "TemplateViewDefinition2d"; }
541
+ }
542
+ exports.TemplateViewDefinition2d = TemplateViewDefinition2d;
543
+ /** A ViewDefinition used to display a 3d template model.
544
+ * @internal
545
+ */
546
+ class TemplateViewDefinition3d extends ViewDefinition3d {
547
+ /** @internal */
548
+ static get className() { return "TemplateViewDefinition3d"; }
549
+ }
550
+ exports.TemplateViewDefinition3d = TemplateViewDefinition3d;
551
+ /** An auxiliary coordinate system element. Auxiliary coordinate systems can be used by views to show
552
+ * coordinate information in different units and/or orientations.
553
+ * @public
554
+ */
555
+ class AuxCoordSystem extends Element_1.DefinitionElement {
556
+ /** @internal */
557
+ static get className() { return "AuxCoordSystem"; }
558
+ constructor(props, iModel) { super(props, iModel); }
559
+ }
560
+ exports.AuxCoordSystem = AuxCoordSystem;
561
+ /** A 2d auxiliary coordinate system.
562
+ * @public
563
+ */
564
+ class AuxCoordSystem2d extends AuxCoordSystem {
565
+ /** @internal */
566
+ static get className() { return "AuxCoordSystem2d"; }
567
+ constructor(props, iModel) { super(props, iModel); }
568
+ /** Create a Code for a AuxCoordSystem2d element given a name that is meant to be unique within the scope of the specified DefinitionModel.
569
+ * @param iModel The IModelDb
570
+ * @param scopeModelId The Id of the DefinitionModel that contains the AuxCoordSystem2d element and provides the scope for its name.
571
+ * @param codeValue The AuxCoordSystem2d name
572
+ */
573
+ static createCode(iModel, scopeModelId, codeValue) {
574
+ const codeSpec = iModel.codeSpecs.getByName(core_common_1.BisCodeSpec.auxCoordSystem2d);
575
+ return new core_common_1.Code({ spec: codeSpec.id, scope: scopeModelId, value: codeValue });
576
+ }
577
+ }
578
+ exports.AuxCoordSystem2d = AuxCoordSystem2d;
579
+ /** A 3d auxiliary coordinate system.
580
+ * @public
581
+ */
582
+ class AuxCoordSystem3d extends AuxCoordSystem {
583
+ /** @internal */
584
+ static get className() { return "AuxCoordSystem3d"; }
585
+ constructor(props, iModel) { super(props, iModel); }
586
+ /** Create a Code for a AuxCoordSystem3d element given a name that is meant to be unique within the scope of the specified DefinitionModel.
587
+ * @param iModel The IModelDb
588
+ * @param scopeModelId The Id of the DefinitionModel that contains the AuxCoordSystem3d element and provides the scope for its name.
589
+ * @param codeValue The AuxCoordSystem3d name
590
+ */
591
+ static createCode(iModel, scopeModelId, codeValue) {
592
+ const codeSpec = iModel.codeSpecs.getByName(core_common_1.BisCodeSpec.auxCoordSystem3d);
593
+ return new core_common_1.Code({ spec: codeSpec.id, scope: scopeModelId, value: codeValue });
594
+ }
595
+ }
596
+ exports.AuxCoordSystem3d = AuxCoordSystem3d;
597
+ /** A spatial auxiliary coordinate system.
598
+ * @public
599
+ */
600
+ class AuxCoordSystemSpatial extends AuxCoordSystem3d {
601
+ /** @internal */
602
+ static get className() { return "AuxCoordSystemSpatial"; }
603
+ /** Create a Code for a AuxCoordSystemSpatial element given a name that is meant to be unique within the scope of the specified DefinitionModel.
604
+ * @param iModel The IModelDb
605
+ * @param scopeModelId The Id of the DefinitionModel that contains the AuxCoordSystemSpatial element and provides the scope for its name.
606
+ * @param codeValue The AuxCoordSystemSpatial name
607
+ */
608
+ static createCode(iModel, scopeModelId, codeValue) {
609
+ const codeSpec = iModel.codeSpecs.getByName(core_common_1.BisCodeSpec.auxCoordSystemSpatial);
610
+ return new core_common_1.Code({ spec: codeSpec.id, scope: scopeModelId, value: codeValue });
611
+ }
612
+ }
613
+ exports.AuxCoordSystemSpatial = AuxCoordSystemSpatial;
614
+ /** Represents an *attachment* of a [[ViewDefinition]] to a [[Sheet]].
615
+ * @public
616
+ */
617
+ class ViewAttachment extends Element_1.GraphicalElement2d {
618
+ /** @internal */
619
+ static get className() { return "ViewAttachment"; }
620
+ constructor(props, iModel) {
621
+ super(props, iModel);
622
+ this.view = new core_common_1.RelatedElement(props.view);
623
+ // ###NOTE: scale, displayPriority, and clipping vectors are stored in ViewAttachmentProps.jsonProperties.
624
+ }
625
+ collectReferenceIds(referenceIds) {
626
+ super.collectReferenceIds(referenceIds);
627
+ referenceIds.addElement(this.view.id);
628
+ }
629
+ }
630
+ exports.ViewAttachment = ViewAttachment;
631
+ /** The position in space of a Light.
632
+ * @internal
633
+ */
634
+ class LightLocation extends Element_1.SpatialLocationElement {
635
+ /** @internal */
636
+ static get className() { return "LightLocation"; }
637
+ /** @internal */
638
+ constructor(props, iModel) { super(props, iModel); }
639
+ }
640
+ exports.LightLocation = LightLocation;
647
641
  //# sourceMappingURL=ViewDefinition.js.map