@itwin/core-backend 4.0.0-dev.52 → 4.0.0-dev.54

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 (265) hide show
  1. package/lib/cjs/AliCloudStorageService.d.ts +23 -23
  2. package/lib/cjs/AliCloudStorageService.js +71 -71
  3. package/lib/cjs/AliCloudStorageService.js.map +1 -1
  4. package/lib/cjs/BackendHubAccess.d.ts +224 -224
  5. package/lib/cjs/BackendHubAccess.d.ts.map +1 -1
  6. package/lib/cjs/BackendHubAccess.js +41 -41
  7. package/lib/cjs/BackendHubAccess.js.map +1 -1
  8. package/lib/cjs/BackendLoggerCategory.d.ts +90 -91
  9. package/lib/cjs/BackendLoggerCategory.d.ts.map +1 -1
  10. package/lib/cjs/BackendLoggerCategory.js +98 -99
  11. package/lib/cjs/BackendLoggerCategory.js.map +1 -1
  12. package/lib/cjs/BisCoreSchema.d.ts +21 -21
  13. package/lib/cjs/BisCoreSchema.js +60 -60
  14. package/lib/cjs/BisCoreSchema.js.map +1 -1
  15. package/lib/cjs/BriefcaseManager.d.ts +170 -170
  16. package/lib/cjs/BriefcaseManager.d.ts.map +1 -1
  17. package/lib/cjs/BriefcaseManager.js +408 -408
  18. package/lib/cjs/BriefcaseManager.js.map +1 -1
  19. package/lib/cjs/Category.d.ts +153 -153
  20. package/lib/cjs/Category.js +243 -243
  21. package/lib/cjs/Category.js.map +1 -1
  22. package/lib/cjs/ChangeSummaryManager.d.ts +187 -187
  23. package/lib/cjs/ChangeSummaryManager.js +446 -446
  24. package/lib/cjs/ChangeSummaryManager.js.map +1 -1
  25. package/lib/cjs/ChangedElementsDb.d.ts +99 -99
  26. package/lib/cjs/ChangedElementsDb.js +165 -165
  27. package/lib/cjs/ChangedElementsDb.js.map +1 -1
  28. package/lib/cjs/ChangedElementsManager.d.ts +39 -39
  29. package/lib/cjs/ChangedElementsManager.js +88 -88
  30. package/lib/cjs/ChangedElementsManager.js.map +1 -1
  31. package/lib/cjs/ChannelControl.d.ts +69 -69
  32. package/lib/cjs/ChannelControl.d.ts.map +1 -1
  33. package/lib/cjs/ChannelControl.js +88 -88
  34. package/lib/cjs/ChannelControl.js.map +1 -1
  35. package/lib/cjs/CheckpointManager.d.ts +121 -121
  36. package/lib/cjs/CheckpointManager.d.ts.map +1 -1
  37. package/lib/cjs/CheckpointManager.js +351 -351
  38. package/lib/cjs/CheckpointManager.js.map +1 -1
  39. package/lib/cjs/ClassRegistry.d.ts +79 -79
  40. package/lib/cjs/ClassRegistry.js +254 -249
  41. package/lib/cjs/ClassRegistry.js.map +1 -1
  42. package/lib/cjs/CloudSqlite.d.ts +355 -355
  43. package/lib/cjs/CloudSqlite.js +154 -154
  44. package/lib/cjs/CloudSqlite.js.map +1 -1
  45. package/lib/cjs/CloudStorageBackend.d.ts +58 -58
  46. package/lib/cjs/CloudStorageBackend.js +170 -170
  47. package/lib/cjs/CloudStorageBackend.js.map +1 -1
  48. package/lib/cjs/CodeService.d.ts +396 -396
  49. package/lib/cjs/CodeService.js +63 -63
  50. package/lib/cjs/CodeService.js.map +1 -1
  51. package/lib/cjs/CodeSpecs.d.ts +55 -55
  52. package/lib/cjs/CodeSpecs.js +124 -124
  53. package/lib/cjs/CodeSpecs.js.map +1 -1
  54. package/lib/cjs/ConcurrentQuery.d.ts +13 -13
  55. package/lib/cjs/ConcurrentQuery.d.ts.map +1 -1
  56. package/lib/cjs/ConcurrentQuery.js +36 -36
  57. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  58. package/lib/cjs/CustomViewState3dCreator.d.ts +21 -21
  59. package/lib/cjs/CustomViewState3dCreator.js +82 -82
  60. package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
  61. package/lib/cjs/DevTools.d.ts +74 -73
  62. package/lib/cjs/DevTools.d.ts.map +1 -1
  63. package/lib/cjs/DevTools.js +156 -156
  64. package/lib/cjs/DevTools.js.map +1 -1
  65. package/lib/cjs/DisplayStyle.d.ts +106 -106
  66. package/lib/cjs/DisplayStyle.js +253 -253
  67. package/lib/cjs/DisplayStyle.js.map +1 -1
  68. package/lib/cjs/ECDb.d.ts +194 -194
  69. package/lib/cjs/ECDb.js +353 -353
  70. package/lib/cjs/ECDb.js.map +1 -1
  71. package/lib/cjs/ECSchemaXmlContext.d.ts +18 -18
  72. package/lib/cjs/ECSchemaXmlContext.d.ts.map +1 -1
  73. package/lib/cjs/ECSchemaXmlContext.js +41 -41
  74. package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
  75. package/lib/cjs/ECSqlStatement.d.ts +473 -473
  76. package/lib/cjs/ECSqlStatement.js +791 -791
  77. package/lib/cjs/ECSqlStatement.js.map +1 -1
  78. package/lib/cjs/Element.d.ts +1113 -1113
  79. package/lib/cjs/Element.js +1424 -1424
  80. package/lib/cjs/Element.js.map +1 -1
  81. package/lib/cjs/ElementAspect.d.ts +176 -176
  82. package/lib/cjs/ElementAspect.js +203 -203
  83. package/lib/cjs/ElementAspect.js.map +1 -1
  84. package/lib/cjs/ElementGraphics.d.ts +9 -9
  85. package/lib/cjs/ElementGraphics.js +41 -41
  86. package/lib/cjs/ElementGraphics.js.map +1 -1
  87. package/lib/cjs/ElementTreeWalker.d.ts +162 -162
  88. package/lib/cjs/ElementTreeWalker.d.ts.map +1 -1
  89. package/lib/cjs/ElementTreeWalker.js +409 -409
  90. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  91. package/lib/cjs/Entity.d.ts +106 -106
  92. package/lib/cjs/Entity.d.ts.map +1 -1
  93. package/lib/cjs/Entity.js +134 -134
  94. package/lib/cjs/Entity.js.map +1 -1
  95. package/lib/cjs/EntityReferences.d.ts +49 -49
  96. package/lib/cjs/EntityReferences.d.ts.map +1 -1
  97. package/lib/cjs/EntityReferences.js +95 -95
  98. package/lib/cjs/EntityReferences.js.map +1 -1
  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/ExportGraphics.js.map +1 -1
  103. package/lib/cjs/ExternalSource.d.ts +96 -96
  104. package/lib/cjs/ExternalSource.js +131 -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 +380 -380
  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 -220
  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/IModelCloneContext.js.map +1 -1
  119. package/lib/cjs/IModelDb.d.ts +1216 -1216
  120. package/lib/cjs/IModelDb.d.ts.map +1 -1
  121. package/lib/cjs/IModelDb.js +2387 -2386
  122. package/lib/cjs/IModelDb.js.map +1 -1
  123. package/lib/cjs/IModelElementCloneContext.d.ts +89 -89
  124. package/lib/cjs/IModelElementCloneContext.js +159 -159
  125. package/lib/cjs/IModelElementCloneContext.js.map +1 -1
  126. package/lib/cjs/IModelHost.d.ts +369 -369
  127. package/lib/cjs/IModelHost.js +488 -488
  128. package/lib/cjs/IModelHost.js.map +1 -1
  129. package/lib/cjs/IModelJsFs.d.ts +62 -62
  130. package/lib/cjs/IModelJsFs.js +139 -139
  131. package/lib/cjs/IModelJsFs.js.map +1 -1
  132. package/lib/cjs/IpcHost.d.ts +104 -104
  133. package/lib/cjs/IpcHost.js +276 -276
  134. package/lib/cjs/IpcHost.js.map +1 -1
  135. package/lib/cjs/LineStyle.d.ts +311 -311
  136. package/lib/cjs/LineStyle.js +295 -295
  137. package/lib/cjs/LineStyle.js.map +1 -1
  138. package/lib/cjs/LocalHub.d.ts +162 -162
  139. package/lib/cjs/LocalHub.d.ts.map +1 -1
  140. package/lib/cjs/LocalHub.js +580 -580
  141. package/lib/cjs/LocalHub.js.map +1 -1
  142. package/lib/cjs/LocalhostIpcHost.d.ts +20 -20
  143. package/lib/cjs/LocalhostIpcHost.js +79 -79
  144. package/lib/cjs/LocalhostIpcHost.js.map +1 -1
  145. package/lib/cjs/Material.d.ts +131 -131
  146. package/lib/cjs/Material.js +180 -180
  147. package/lib/cjs/Material.js.map +1 -1
  148. package/lib/cjs/Model.d.ts +392 -392
  149. package/lib/cjs/Model.js +489 -489
  150. package/lib/cjs/Model.js.map +1 -1
  151. package/lib/cjs/NativeAppStorage.d.ts +51 -51
  152. package/lib/cjs/NativeAppStorage.js +202 -202
  153. package/lib/cjs/NativeAppStorage.js.map +1 -1
  154. package/lib/cjs/NativeHost.d.ts +52 -52
  155. package/lib/cjs/NativeHost.js +160 -160
  156. package/lib/cjs/NativeHost.js.map +1 -1
  157. package/lib/cjs/NavigationRelationship.d.ts +156 -156
  158. package/lib/cjs/NavigationRelationship.js +225 -225
  159. package/lib/cjs/NavigationRelationship.js.map +1 -1
  160. package/lib/cjs/PromiseMemoizer.d.ts +51 -51
  161. package/lib/cjs/PromiseMemoizer.d.ts.map +1 -1
  162. package/lib/cjs/PromiseMemoizer.js +101 -101
  163. package/lib/cjs/PromiseMemoizer.js.map +1 -1
  164. package/lib/cjs/PropertyStore.d.ts +132 -132
  165. package/lib/cjs/PropertyStore.js +11 -11
  166. package/lib/cjs/PropertyStore.js.map +1 -1
  167. package/lib/cjs/Relationship.d.ts +416 -416
  168. package/lib/cjs/Relationship.js +494 -494
  169. package/lib/cjs/Relationship.js.map +1 -1
  170. package/lib/cjs/RpcBackend.d.ts +5 -5
  171. package/lib/cjs/RpcBackend.js +32 -32
  172. package/lib/cjs/RpcBackend.js.map +1 -1
  173. package/lib/cjs/SQLiteDb.d.ts +219 -219
  174. package/lib/cjs/SQLiteDb.js +212 -212
  175. package/lib/cjs/SQLiteDb.js.map +1 -1
  176. package/lib/cjs/Schema.d.ts +55 -55
  177. package/lib/cjs/Schema.js +83 -83
  178. package/lib/cjs/Schema.js.map +1 -1
  179. package/lib/cjs/ServerBasedLocks.d.ts +57 -57
  180. package/lib/cjs/ServerBasedLocks.js +168 -168
  181. package/lib/cjs/ServerBasedLocks.js.map +1 -1
  182. package/lib/cjs/SqliteStatement.d.ts +360 -360
  183. package/lib/cjs/SqliteStatement.d.ts.map +1 -1
  184. package/lib/cjs/SqliteStatement.js +586 -586
  185. package/lib/cjs/SqliteStatement.js.map +1 -1
  186. package/lib/cjs/Texture.d.ts +58 -58
  187. package/lib/cjs/Texture.js +82 -82
  188. package/lib/cjs/Texture.js.map +1 -1
  189. package/lib/cjs/TileStorage.d.ts +18 -18
  190. package/lib/cjs/TileStorage.js +87 -87
  191. package/lib/cjs/TileStorage.js.map +1 -1
  192. package/lib/cjs/TxnManager.d.ts +202 -202
  193. package/lib/cjs/TxnManager.d.ts.map +1 -1
  194. package/lib/cjs/TxnManager.js +356 -356
  195. package/lib/cjs/TxnManager.js.map +1 -1
  196. package/lib/cjs/ViewDefinition.d.ts +435 -435
  197. package/lib/cjs/ViewDefinition.js +646 -646
  198. package/lib/cjs/ViewDefinition.js.map +1 -1
  199. package/lib/cjs/ViewStateHydrator.d.ts +13 -13
  200. package/lib/cjs/ViewStateHydrator.js +103 -103
  201. package/lib/cjs/ViewStateHydrator.js.map +1 -1
  202. package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
  203. package/lib/cjs/assets/Settings/Schemas/Cloud.Schema.json +67 -67
  204. package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +31 -31
  205. package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +52 -52
  206. package/lib/cjs/assets/Settings/backend.setting.json5 +138 -138
  207. package/lib/cjs/core-backend.d.ts +185 -185
  208. package/lib/cjs/core-backend.js +209 -205
  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.js +39 -39
  215. package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
  216. package/lib/cjs/domains/GenericElements.d.ts +177 -177
  217. package/lib/cjs/domains/GenericElements.js +263 -263
  218. package/lib/cjs/domains/GenericElements.js.map +1 -1
  219. package/lib/cjs/domains/GenericSchema.d.ts +10 -10
  220. package/lib/cjs/domains/GenericSchema.js +28 -28
  221. package/lib/cjs/domains/GenericSchema.js.map +1 -1
  222. package/lib/cjs/rpc/multipart.d.ts +11 -11
  223. package/lib/cjs/rpc/multipart.js +71 -71
  224. package/lib/cjs/rpc/multipart.js.map +1 -1
  225. package/lib/cjs/rpc/tracing.d.ts +28 -28
  226. package/lib/cjs/rpc/tracing.js +73 -73
  227. package/lib/cjs/rpc/tracing.js.map +1 -1
  228. package/lib/cjs/rpc/web/logging.d.ts +9 -9
  229. package/lib/cjs/rpc/web/logging.js +43 -43
  230. package/lib/cjs/rpc/web/logging.js.map +1 -1
  231. package/lib/cjs/rpc/web/request.d.ts +6 -6
  232. package/lib/cjs/rpc/web/request.js +73 -73
  233. package/lib/cjs/rpc/web/request.js.map +1 -1
  234. package/lib/cjs/rpc/web/response.d.ts +6 -6
  235. package/lib/cjs/rpc/web/response.js +105 -105
  236. package/lib/cjs/rpc/web/response.js.map +1 -1
  237. package/lib/cjs/rpc-impl/DevToolsRpcImpl.d.ts +15 -15
  238. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js +32 -32
  239. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  240. package/lib/cjs/rpc-impl/IModelReadRpcImpl.d.ts +47 -47
  241. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js +293 -293
  242. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  243. package/lib/cjs/rpc-impl/IModelTileRpcImpl.d.ts +22 -22
  244. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js +202 -202
  245. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  246. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.d.ts +36 -36
  247. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js +166 -166
  248. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  249. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.d.ts +16 -16
  250. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js +42 -42
  251. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  252. package/lib/cjs/rpc-impl/WipRpcImpl.d.ts +15 -15
  253. package/lib/cjs/rpc-impl/WipRpcImpl.js +37 -37
  254. package/lib/cjs/rpc-impl/WipRpcImpl.js.map +1 -1
  255. package/lib/cjs/workspace/Settings.d.ts +186 -186
  256. package/lib/cjs/workspace/Settings.d.ts.map +1 -1
  257. package/lib/cjs/workspace/Settings.js +154 -154
  258. package/lib/cjs/workspace/Settings.js.map +1 -1
  259. package/lib/cjs/workspace/SettingsSchemas.d.ts +75 -75
  260. package/lib/cjs/workspace/SettingsSchemas.js +190 -190
  261. package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
  262. package/lib/cjs/workspace/Workspace.d.ts +414 -414
  263. package/lib/cjs/workspace/Workspace.js +537 -537
  264. package/lib/cjs/workspace/Workspace.js.map +1 -1
  265. package/package.json +12 -12
@@ -1,244 +1,244 @@
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 Categories
8
- */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.SpatialCategory = exports.DrawingCategory = exports.Category = exports.SubCategory = void 0;
11
- const core_bentley_1 = require("@itwin/core-bentley");
12
- const core_common_1 = require("@itwin/core-common");
13
- const Element_1 = require("./Element");
14
- const IModelDb_1 = require("./IModelDb");
15
- const NavigationRelationship_1 = require("./NavigationRelationship");
16
- /** Defines the appearance for graphics in Geometric elements
17
- * @public
18
- */
19
- class SubCategory extends Element_1.DefinitionElement {
20
- /** @internal */
21
- constructor(props, iModel) {
22
- super(props, iModel);
23
- this.appearance = new core_common_1.SubCategoryAppearance(props.appearance);
24
- this.description = core_bentley_1.JsonUtils.asString(props.description);
25
- }
26
- /** @internal */
27
- static get className() { return "SubCategory"; }
28
- /** @internal */
29
- toJSON() {
30
- const val = super.toJSON();
31
- val.appearance = this.appearance.toJSON();
32
- if (this.description && this.description.length > 0)
33
- val.description = this.description;
34
- return val;
35
- }
36
- /** Get the SubCategory's name (its Code value). */
37
- getSubCategoryName() { return this.code.value; }
38
- /** Get the Id of the SubCategory. */
39
- getSubCategoryId() { return this.id; }
40
- /** Get the Id of this SubCategory's parent Category. */
41
- getCategoryId() { return this.parent ? this.parent.id : core_bentley_1.Id64.invalid; }
42
- /** Check if this is the default SubCategory of its parent Category. */
43
- get isDefaultSubCategory() { return IModelDb_1.IModelDb.getDefaultSubCategoryId(this.getCategoryId()) === this.getSubCategoryId(); }
44
- /** Create a Code for a SubCategory given a name that is meant to be unique within the scope of the specified parent Category.
45
- * @param iModel The IModel
46
- * @param parentCategoryId The Id of the parent Category that owns the SubCategory and provides the scope for its name.
47
- * @param codeValue The name of the SubCategory
48
- */
49
- static createCode(iModel, parentCategoryId, codeValue) {
50
- const codeSpec = iModel.codeSpecs.getByName(core_common_1.BisCodeSpec.subCategory);
51
- return new core_common_1.Code({ spec: codeSpec.id, scope: parentCategoryId, value: codeValue });
52
- }
53
- /** Create a new SubCategory
54
- * @param iModelDb The iModel
55
- * @param parentCategoryId Create the new SubCategory as a child of this [[Category]]
56
- * @param name The name of the SubCategory
57
- * @param appearance The appearance settings to use for this SubCategory
58
- * @returns The newly constructed SubCategory element.
59
- * @throws [[IModelError]] if unable to create the element.
60
- */
61
- static create(iModelDb, parentCategoryId, name, appearance) {
62
- if (appearance instanceof core_common_1.SubCategoryAppearance)
63
- appearance = appearance.toJSON();
64
- const parentCategory = iModelDb.elements.getElement(parentCategoryId);
65
- const subCategoryProps = {
66
- classFullName: this.classFullName,
67
- model: parentCategory.model,
68
- parent: new NavigationRelationship_1.CategoryOwnsSubCategories(parentCategoryId),
69
- code: this.createCode(iModelDb, parentCategoryId, name),
70
- appearance,
71
- };
72
- return new SubCategory(subCategoryProps, iModelDb);
73
- }
74
- /** Insert a new SubCategory
75
- * @param iModelDb Insert into this iModel
76
- * @param parentCategoryId Insert the new SubCategory as a child of this Category
77
- * @param name The name of the SubCategory
78
- * @param appearance The appearance settings to use for this SubCategory
79
- * @returns The Id of the newly inserted SubCategory element.
80
- * @throws [[IModelError]] if unable to insert the element.
81
- */
82
- static insert(iModelDb, parentCategoryId, name, appearance) {
83
- const subCategory = this.create(iModelDb, parentCategoryId, name, appearance);
84
- return iModelDb.elements.insertElement(subCategory.toJSON());
85
- }
86
- }
87
- exports.SubCategory = SubCategory;
88
- /** A Category element is the target of the `category` member of [[GeometricElement]].
89
- * @public
90
- */
91
- class Category extends Element_1.DefinitionElement {
92
- /** @internal */
93
- constructor(props, iModel) {
94
- super(props, iModel);
95
- this.rank = core_common_1.Rank.User;
96
- this.rank = core_bentley_1.JsonUtils.asInt(props.rank);
97
- this.description = core_bentley_1.JsonUtils.asString(props.description);
98
- }
99
- /** @internal */
100
- static get className() { return "Category"; }
101
- /** @internal */
102
- toJSON() {
103
- const val = super.toJSON();
104
- val.rank = this.rank;
105
- if (this.description && this.description.length > 0)
106
- val.description = this.description;
107
- return val;
108
- }
109
- /** Get the Id of the default SubCategory for this Category. */
110
- myDefaultSubCategoryId() { return IModelDb_1.IModelDb.getDefaultSubCategoryId(this.id); }
111
- /** Set the appearance of the default SubCategory for this Category */
112
- setDefaultAppearance(props) {
113
- if (props instanceof core_common_1.SubCategoryAppearance)
114
- props = props.toJSON();
115
- const subCat = this.iModel.elements.getElement(this.myDefaultSubCategoryId());
116
- subCat.appearance = new core_common_1.SubCategoryAppearance(props);
117
- this.iModel.elements.updateElement(subCat.toJSON());
118
- }
119
- }
120
- exports.Category = Category;
121
- /** Categorizes 2d GeometricElements.
122
- * @public
123
- */
124
- class DrawingCategory extends Category {
125
- /** @internal */
126
- static get className() { return "DrawingCategory"; }
127
- /** Construct a DrawingCategory
128
- * @param opts The properties of the new DrawingCategory
129
- * @param iModel The IModelDb where the DrawingCategory may be inserted.
130
- * @internal
131
- */
132
- constructor(opts, iModel) { super(opts, iModel); }
133
- /** Get the name of the CodeSpec that is used by DrawingCategory objects. */
134
- static getCodeSpecName() { return core_common_1.BisCodeSpec.drawingCategory; }
135
- /** Looks up the CategoryId of a DrawingCategory by model and name */
136
- static queryCategoryIdByName(iModel, scopeModelId, categoryName) {
137
- const code = DrawingCategory.createCode(iModel, scopeModelId, categoryName);
138
- return iModel.elements.queryElementIdByCode(code);
139
- }
140
- /** Create a Code for a DrawingCategory given a name that is meant to be unique within the scope of the specified DefinitionModel.
141
- * @param iModel The IModel
142
- * @param scopeModelId The Id of the DefinitionModel that contains the DrawingCategory and provides the scope for its name.
143
- * @param codeValue The name of the category
144
- * @return A drawing category Code
145
- */
146
- static createCode(iModel, scopeModelId, codeValue) {
147
- const codeSpec = iModel.codeSpecs.getByName(DrawingCategory.getCodeSpecName());
148
- return new core_common_1.Code({ spec: codeSpec.id, scope: scopeModelId, value: codeValue });
149
- }
150
- /** Create a new DrawingCategory
151
- * @param iModelDb The iModel
152
- * @param definitionModelId The [[DefinitionModel]]
153
- * @param name The name of the DrawingCategory
154
- * @returns The newly constructed DrawingCategory element.
155
- * @throws [[IModelError]] if unable to create the element.
156
- */
157
- static create(iModelDb, definitionModelId, name) {
158
- const categoryProps = {
159
- classFullName: this.classFullName,
160
- model: definitionModelId,
161
- code: this.createCode(iModelDb, definitionModelId, name),
162
- isPrivate: false,
163
- };
164
- return new DrawingCategory(categoryProps, iModelDb);
165
- }
166
- /** Insert a new DrawingCategory
167
- * @param iModelDb Insert into this iModel
168
- * @param definitionModelId Insert the new DrawingCategory into this [[DefinitionModel]]
169
- * @param name The name of the DrawingCategory
170
- * @param defaultAppearance The appearance settings to use for the default SubCategory of this DrawingCategory
171
- * @returns The Id of the newly inserted DrawingCategory element.
172
- * @throws [[IModelError]] if unable to insert the element.
173
- */
174
- static insert(iModelDb, definitionModelId, name, defaultAppearance) {
175
- const category = this.create(iModelDb, definitionModelId, name);
176
- const elements = iModelDb.elements;
177
- category.id = elements.insertElement(category.toJSON());
178
- category.setDefaultAppearance(defaultAppearance);
179
- return category.id;
180
- }
181
- }
182
- exports.DrawingCategory = DrawingCategory;
183
- /** Categorizes SpatialElements. See [how to create a SpatialCategory]$(docs/learning/backend/CreateElements.md#SpatialCategory).
184
- * @public
185
- */
186
- class SpatialCategory extends Category {
187
- /** @internal */
188
- static get className() { return "SpatialCategory"; }
189
- /** Construct a SpatialCategory
190
- * @param opts The properties of the new SpatialCategory
191
- * @param iModel The IModelDb where the SpatialCategory may be inserted.
192
- * @internal
193
- */
194
- constructor(opts, iModel) { super(opts, iModel); }
195
- /** Get the name of the CodeSpec that is used by SpatialCategory objects. */
196
- static getCodeSpecName() { return core_common_1.BisCodeSpec.spatialCategory; }
197
- /** Looks up the CategoryId of a SpatialCategory by model and name */
198
- static queryCategoryIdByName(iModel, scopeModelId, categoryName) {
199
- const code = SpatialCategory.createCode(iModel, scopeModelId, categoryName);
200
- return iModel.elements.queryElementIdByCode(code);
201
- }
202
- /** Create a Code for a SpatialCategory given a name that is meant to be unique within the scope of the specified DefinitionModel.
203
- * @param iModel The IModel
204
- * @param scopeModelId The Id of the DefinitionModel that contains the SpatialCategory and provides the scope for its name.
205
- * @param codeValue The name of the category
206
- * @return A spatial category Code
207
- */
208
- static createCode(iModel, scopeModelId, codeValue) {
209
- const codeSpec = iModel.codeSpecs.getByName(SpatialCategory.getCodeSpecName());
210
- return new core_common_1.Code({ spec: codeSpec.id, scope: scopeModelId, value: codeValue });
211
- }
212
- /** Create a new SpatialCategory
213
- * @param iModelDb The iModel
214
- * @param definitionModelId The [[DefinitionModel]]
215
- * @param name The name/CodeValue of the SpatialCategory
216
- * @returns The newly constructed SpatialCategory element.
217
- * @throws [[IModelError]] if unable to create the element.
218
- */
219
- static create(iModelDb, definitionModelId, name) {
220
- const categoryProps = {
221
- classFullName: this.classFullName,
222
- model: definitionModelId,
223
- code: this.createCode(iModelDb, definitionModelId, name),
224
- isPrivate: false,
225
- };
226
- return new SpatialCategory(categoryProps, iModelDb);
227
- }
228
- /** Insert a new SpatialCategory
229
- * @param iModelDb Insert into this iModel
230
- * @param definitionModelId Insert the new SpatialCategory into this DefinitionModel
231
- * @param name The name of the SpatialCategory
232
- * @param defaultAppearance The appearance settings to use for the default SubCategory of this SpatialCategory
233
- * @returns The Id of the newly inserted SpatialCategory element.
234
- * @throws [[IModelError]] if unable to insert the element.
235
- */
236
- static insert(iModelDb, definitionModelId, name, defaultAppearance) {
237
- const category = this.create(iModelDb, definitionModelId, name);
238
- category.id = iModelDb.elements.insertElement(category.toJSON());
239
- category.setDefaultAppearance(defaultAppearance);
240
- return category.id;
241
- }
242
- }
243
- exports.SpatialCategory = SpatialCategory;
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 Categories
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.SpatialCategory = exports.DrawingCategory = exports.Category = exports.SubCategory = void 0;
11
+ const core_bentley_1 = require("@itwin/core-bentley");
12
+ const core_common_1 = require("@itwin/core-common");
13
+ const Element_1 = require("./Element");
14
+ const IModelDb_1 = require("./IModelDb");
15
+ const NavigationRelationship_1 = require("./NavigationRelationship");
16
+ /** Defines the appearance for graphics in Geometric elements
17
+ * @public
18
+ */
19
+ class SubCategory extends Element_1.DefinitionElement {
20
+ /** @internal */
21
+ static get className() { return "SubCategory"; }
22
+ /** @internal */
23
+ constructor(props, iModel) {
24
+ super(props, iModel);
25
+ this.appearance = new core_common_1.SubCategoryAppearance(props.appearance);
26
+ this.description = core_bentley_1.JsonUtils.asString(props.description);
27
+ }
28
+ /** @internal */
29
+ toJSON() {
30
+ const val = super.toJSON();
31
+ val.appearance = this.appearance.toJSON();
32
+ if (this.description && this.description.length > 0)
33
+ val.description = this.description;
34
+ return val;
35
+ }
36
+ /** Get the SubCategory's name (its Code value). */
37
+ getSubCategoryName() { return this.code.value; }
38
+ /** Get the Id of the SubCategory. */
39
+ getSubCategoryId() { return this.id; }
40
+ /** Get the Id of this SubCategory's parent Category. */
41
+ getCategoryId() { return this.parent ? this.parent.id : core_bentley_1.Id64.invalid; }
42
+ /** Check if this is the default SubCategory of its parent Category. */
43
+ get isDefaultSubCategory() { return IModelDb_1.IModelDb.getDefaultSubCategoryId(this.getCategoryId()) === this.getSubCategoryId(); }
44
+ /** Create a Code for a SubCategory given a name that is meant to be unique within the scope of the specified parent Category.
45
+ * @param iModel The IModel
46
+ * @param parentCategoryId The Id of the parent Category that owns the SubCategory and provides the scope for its name.
47
+ * @param codeValue The name of the SubCategory
48
+ */
49
+ static createCode(iModel, parentCategoryId, codeValue) {
50
+ const codeSpec = iModel.codeSpecs.getByName(core_common_1.BisCodeSpec.subCategory);
51
+ return new core_common_1.Code({ spec: codeSpec.id, scope: parentCategoryId, value: codeValue });
52
+ }
53
+ /** Create a new SubCategory
54
+ * @param iModelDb The iModel
55
+ * @param parentCategoryId Create the new SubCategory as a child of this [[Category]]
56
+ * @param name The name of the SubCategory
57
+ * @param appearance The appearance settings to use for this SubCategory
58
+ * @returns The newly constructed SubCategory element.
59
+ * @throws [[IModelError]] if unable to create the element.
60
+ */
61
+ static create(iModelDb, parentCategoryId, name, appearance) {
62
+ if (appearance instanceof core_common_1.SubCategoryAppearance)
63
+ appearance = appearance.toJSON();
64
+ const parentCategory = iModelDb.elements.getElement(parentCategoryId);
65
+ const subCategoryProps = {
66
+ classFullName: this.classFullName,
67
+ model: parentCategory.model,
68
+ parent: new NavigationRelationship_1.CategoryOwnsSubCategories(parentCategoryId),
69
+ code: this.createCode(iModelDb, parentCategoryId, name),
70
+ appearance,
71
+ };
72
+ return new SubCategory(subCategoryProps, iModelDb);
73
+ }
74
+ /** Insert a new SubCategory
75
+ * @param iModelDb Insert into this iModel
76
+ * @param parentCategoryId Insert the new SubCategory as a child of this Category
77
+ * @param name The name of the SubCategory
78
+ * @param appearance The appearance settings to use for this SubCategory
79
+ * @returns The Id of the newly inserted SubCategory element.
80
+ * @throws [[IModelError]] if unable to insert the element.
81
+ */
82
+ static insert(iModelDb, parentCategoryId, name, appearance) {
83
+ const subCategory = this.create(iModelDb, parentCategoryId, name, appearance);
84
+ return iModelDb.elements.insertElement(subCategory.toJSON());
85
+ }
86
+ }
87
+ exports.SubCategory = SubCategory;
88
+ /** A Category element is the target of the `category` member of [[GeometricElement]].
89
+ * @public
90
+ */
91
+ class Category extends Element_1.DefinitionElement {
92
+ /** @internal */
93
+ static get className() { return "Category"; }
94
+ /** @internal */
95
+ constructor(props, iModel) {
96
+ super(props, iModel);
97
+ this.rank = core_common_1.Rank.User;
98
+ this.rank = core_bentley_1.JsonUtils.asInt(props.rank);
99
+ this.description = core_bentley_1.JsonUtils.asString(props.description);
100
+ }
101
+ /** @internal */
102
+ toJSON() {
103
+ const val = super.toJSON();
104
+ val.rank = this.rank;
105
+ if (this.description && this.description.length > 0)
106
+ val.description = this.description;
107
+ return val;
108
+ }
109
+ /** Get the Id of the default SubCategory for this Category. */
110
+ myDefaultSubCategoryId() { return IModelDb_1.IModelDb.getDefaultSubCategoryId(this.id); }
111
+ /** Set the appearance of the default SubCategory for this Category */
112
+ setDefaultAppearance(props) {
113
+ if (props instanceof core_common_1.SubCategoryAppearance)
114
+ props = props.toJSON();
115
+ const subCat = this.iModel.elements.getElement(this.myDefaultSubCategoryId());
116
+ subCat.appearance = new core_common_1.SubCategoryAppearance(props);
117
+ this.iModel.elements.updateElement(subCat.toJSON());
118
+ }
119
+ }
120
+ exports.Category = Category;
121
+ /** Categorizes 2d GeometricElements.
122
+ * @public
123
+ */
124
+ class DrawingCategory extends Category {
125
+ /** @internal */
126
+ static get className() { return "DrawingCategory"; }
127
+ /** Construct a DrawingCategory
128
+ * @param opts The properties of the new DrawingCategory
129
+ * @param iModel The IModelDb where the DrawingCategory may be inserted.
130
+ * @internal
131
+ */
132
+ constructor(opts, iModel) { super(opts, iModel); }
133
+ /** Get the name of the CodeSpec that is used by DrawingCategory objects. */
134
+ static getCodeSpecName() { return core_common_1.BisCodeSpec.drawingCategory; }
135
+ /** Looks up the CategoryId of a DrawingCategory by model and name */
136
+ static queryCategoryIdByName(iModel, scopeModelId, categoryName) {
137
+ const code = DrawingCategory.createCode(iModel, scopeModelId, categoryName);
138
+ return iModel.elements.queryElementIdByCode(code);
139
+ }
140
+ /** Create a Code for a DrawingCategory given a name that is meant to be unique within the scope of the specified DefinitionModel.
141
+ * @param iModel The IModel
142
+ * @param scopeModelId The Id of the DefinitionModel that contains the DrawingCategory and provides the scope for its name.
143
+ * @param codeValue The name of the category
144
+ * @return A drawing category Code
145
+ */
146
+ static createCode(iModel, scopeModelId, codeValue) {
147
+ const codeSpec = iModel.codeSpecs.getByName(DrawingCategory.getCodeSpecName());
148
+ return new core_common_1.Code({ spec: codeSpec.id, scope: scopeModelId, value: codeValue });
149
+ }
150
+ /** Create a new DrawingCategory
151
+ * @param iModelDb The iModel
152
+ * @param definitionModelId The [[DefinitionModel]]
153
+ * @param name The name of the DrawingCategory
154
+ * @returns The newly constructed DrawingCategory element.
155
+ * @throws [[IModelError]] if unable to create the element.
156
+ */
157
+ static create(iModelDb, definitionModelId, name) {
158
+ const categoryProps = {
159
+ classFullName: this.classFullName,
160
+ model: definitionModelId,
161
+ code: this.createCode(iModelDb, definitionModelId, name),
162
+ isPrivate: false,
163
+ };
164
+ return new DrawingCategory(categoryProps, iModelDb);
165
+ }
166
+ /** Insert a new DrawingCategory
167
+ * @param iModelDb Insert into this iModel
168
+ * @param definitionModelId Insert the new DrawingCategory into this [[DefinitionModel]]
169
+ * @param name The name of the DrawingCategory
170
+ * @param defaultAppearance The appearance settings to use for the default SubCategory of this DrawingCategory
171
+ * @returns The Id of the newly inserted DrawingCategory element.
172
+ * @throws [[IModelError]] if unable to insert the element.
173
+ */
174
+ static insert(iModelDb, definitionModelId, name, defaultAppearance) {
175
+ const category = this.create(iModelDb, definitionModelId, name);
176
+ const elements = iModelDb.elements;
177
+ category.id = elements.insertElement(category.toJSON());
178
+ category.setDefaultAppearance(defaultAppearance);
179
+ return category.id;
180
+ }
181
+ }
182
+ exports.DrawingCategory = DrawingCategory;
183
+ /** Categorizes SpatialElements. See [how to create a SpatialCategory]$(docs/learning/backend/CreateElements.md#SpatialCategory).
184
+ * @public
185
+ */
186
+ class SpatialCategory extends Category {
187
+ /** @internal */
188
+ static get className() { return "SpatialCategory"; }
189
+ /** Construct a SpatialCategory
190
+ * @param opts The properties of the new SpatialCategory
191
+ * @param iModel The IModelDb where the SpatialCategory may be inserted.
192
+ * @internal
193
+ */
194
+ constructor(opts, iModel) { super(opts, iModel); }
195
+ /** Get the name of the CodeSpec that is used by SpatialCategory objects. */
196
+ static getCodeSpecName() { return core_common_1.BisCodeSpec.spatialCategory; }
197
+ /** Looks up the CategoryId of a SpatialCategory by model and name */
198
+ static queryCategoryIdByName(iModel, scopeModelId, categoryName) {
199
+ const code = SpatialCategory.createCode(iModel, scopeModelId, categoryName);
200
+ return iModel.elements.queryElementIdByCode(code);
201
+ }
202
+ /** Create a Code for a SpatialCategory given a name that is meant to be unique within the scope of the specified DefinitionModel.
203
+ * @param iModel The IModel
204
+ * @param scopeModelId The Id of the DefinitionModel that contains the SpatialCategory and provides the scope for its name.
205
+ * @param codeValue The name of the category
206
+ * @return A spatial category Code
207
+ */
208
+ static createCode(iModel, scopeModelId, codeValue) {
209
+ const codeSpec = iModel.codeSpecs.getByName(SpatialCategory.getCodeSpecName());
210
+ return new core_common_1.Code({ spec: codeSpec.id, scope: scopeModelId, value: codeValue });
211
+ }
212
+ /** Create a new SpatialCategory
213
+ * @param iModelDb The iModel
214
+ * @param definitionModelId The [[DefinitionModel]]
215
+ * @param name The name/CodeValue of the SpatialCategory
216
+ * @returns The newly constructed SpatialCategory element.
217
+ * @throws [[IModelError]] if unable to create the element.
218
+ */
219
+ static create(iModelDb, definitionModelId, name) {
220
+ const categoryProps = {
221
+ classFullName: this.classFullName,
222
+ model: definitionModelId,
223
+ code: this.createCode(iModelDb, definitionModelId, name),
224
+ isPrivate: false,
225
+ };
226
+ return new SpatialCategory(categoryProps, iModelDb);
227
+ }
228
+ /** Insert a new SpatialCategory
229
+ * @param iModelDb Insert into this iModel
230
+ * @param definitionModelId Insert the new SpatialCategory into this DefinitionModel
231
+ * @param name The name of the SpatialCategory
232
+ * @param defaultAppearance The appearance settings to use for the default SubCategory of this SpatialCategory
233
+ * @returns The Id of the newly inserted SpatialCategory element.
234
+ * @throws [[IModelError]] if unable to insert the element.
235
+ */
236
+ static insert(iModelDb, definitionModelId, name, defaultAppearance) {
237
+ const category = this.create(iModelDb, definitionModelId, name);
238
+ category.id = iModelDb.elements.insertElement(category.toJSON());
239
+ category.setDefaultAppearance(defaultAppearance);
240
+ return category.id;
241
+ }
242
+ }
243
+ exports.SpatialCategory = SpatialCategory;
244
244
  //# sourceMappingURL=Category.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Category.js","sourceRoot":"","sources":["../../src/Category.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Categories\r\n */\r\n\r\nimport { Id64, Id64String, JsonUtils } from \"@itwin/core-bentley\";\r\nimport {\r\n BisCodeSpec, CategoryProps, Code, CodeScopeProps, CodeSpec, ElementProps, Rank, SubCategoryAppearance, SubCategoryProps,\r\n} from \"@itwin/core-common\";\r\nimport { DefinitionElement } from \"./Element\";\r\nimport { IModelDb } from \"./IModelDb\";\r\nimport { CategoryOwnsSubCategories } from \"./NavigationRelationship\";\r\n\r\n/** Defines the appearance for graphics in Geometric elements\r\n * @public\r\n */\r\nexport class SubCategory extends DefinitionElement {\r\n /** @internal */\r\n public static override get className(): string { return \"SubCategory\"; }\r\n /** The Appearance parameters for this SubCategory */\r\n public appearance: SubCategoryAppearance;\r\n /** Optional description of this SubCategory. */\r\n public description?: string;\r\n\r\n /** @internal */\r\n public constructor(props: SubCategoryProps, iModel: IModelDb) {\r\n super(props, iModel);\r\n this.appearance = new SubCategoryAppearance(props.appearance);\r\n this.description = JsonUtils.asString(props.description);\r\n }\r\n\r\n /** @internal */\r\n public override toJSON(): SubCategoryProps {\r\n const val = super.toJSON() as SubCategoryProps;\r\n val.appearance = this.appearance.toJSON();\r\n if (this.description && this.description.length > 0)\r\n val.description = this.description;\r\n return val;\r\n }\r\n\r\n /** Get the SubCategory's name (its Code value). */\r\n public getSubCategoryName(): string { return this.code.value; }\r\n /** Get the Id of the SubCategory. */\r\n public getSubCategoryId(): Id64String { return this.id; }\r\n /** Get the Id of this SubCategory's parent Category. */\r\n public getCategoryId(): Id64String { return this.parent ? this.parent.id : Id64.invalid; }\r\n /** Check if this is the default SubCategory of its parent Category. */\r\n public get isDefaultSubCategory(): boolean { return IModelDb.getDefaultSubCategoryId(this.getCategoryId()) === this.getSubCategoryId(); }\r\n\r\n /** Create a Code for a SubCategory given a name that is meant to be unique within the scope of the specified parent Category.\r\n * @param iModel The IModel\r\n * @param parentCategoryId The Id of the parent Category that owns the SubCategory and provides the scope for its name.\r\n * @param codeValue The name of the SubCategory\r\n */\r\n public static createCode(iModel: IModelDb, parentCategoryId: CodeScopeProps, codeValue: string): Code {\r\n const codeSpec: CodeSpec = iModel.codeSpecs.getByName(BisCodeSpec.subCategory);\r\n return new Code({ spec: codeSpec.id, scope: parentCategoryId, value: codeValue });\r\n }\r\n\r\n /** Create a new SubCategory\r\n * @param iModelDb The iModel\r\n * @param parentCategoryId Create the new SubCategory as a child of this [[Category]]\r\n * @param name The name of the SubCategory\r\n * @param appearance The appearance settings to use for this SubCategory\r\n * @returns The newly constructed SubCategory element.\r\n * @throws [[IModelError]] if unable to create the element.\r\n */\r\n public static create(iModelDb: IModelDb, parentCategoryId: Id64String, name: string, appearance: SubCategoryAppearance.Props | SubCategoryAppearance): SubCategory {\r\n if (appearance instanceof SubCategoryAppearance)\r\n appearance = appearance.toJSON();\r\n\r\n const parentCategory = iModelDb.elements.getElement<Category>(parentCategoryId);\r\n const subCategoryProps: SubCategoryProps = {\r\n classFullName: this.classFullName,\r\n model: parentCategory.model,\r\n parent: new CategoryOwnsSubCategories(parentCategoryId),\r\n code: this.createCode(iModelDb, parentCategoryId, name),\r\n appearance,\r\n };\r\n return new SubCategory(subCategoryProps, iModelDb);\r\n }\r\n\r\n /** Insert a new SubCategory\r\n * @param iModelDb Insert into this iModel\r\n * @param parentCategoryId Insert the new SubCategory as a child of this Category\r\n * @param name The name of the SubCategory\r\n * @param appearance The appearance settings to use for this SubCategory\r\n * @returns The Id of the newly inserted SubCategory element.\r\n * @throws [[IModelError]] if unable to insert the element.\r\n */\r\n public static insert(iModelDb: IModelDb, parentCategoryId: Id64String, name: string, appearance: SubCategoryAppearance.Props | SubCategoryAppearance): Id64String {\r\n const subCategory = this.create(iModelDb, parentCategoryId, name, appearance);\r\n return iModelDb.elements.insertElement(subCategory.toJSON());\r\n }\r\n}\r\n\r\n/** A Category element is the target of the `category` member of [[GeometricElement]].\r\n * @public\r\n */\r\nexport class Category extends DefinitionElement {\r\n /** @internal */\r\n public static override get className(): string { return \"Category\"; }\r\n public rank: Rank = Rank.User;\r\n public description?: string;\r\n\r\n /** @internal */\r\n public constructor(props: CategoryProps, iModel: IModelDb) {\r\n super(props, iModel);\r\n this.rank = JsonUtils.asInt(props.rank);\r\n this.description = JsonUtils.asString(props.description);\r\n }\r\n\r\n /** @internal */\r\n public override toJSON(): CategoryProps {\r\n const val = super.toJSON() as CategoryProps;\r\n val.rank = this.rank;\r\n if (this.description && this.description.length > 0)\r\n val.description = this.description;\r\n return val;\r\n }\r\n\r\n /** Get the Id of the default SubCategory for this Category. */\r\n public myDefaultSubCategoryId(): Id64String { return IModelDb.getDefaultSubCategoryId(this.id); }\r\n\r\n /** Set the appearance of the default SubCategory for this Category */\r\n public setDefaultAppearance(props: SubCategoryAppearance.Props | SubCategoryAppearance): void {\r\n if (props instanceof SubCategoryAppearance)\r\n props = props.toJSON();\r\n\r\n const subCat = this.iModel.elements.getElement<SubCategory>(this.myDefaultSubCategoryId());\r\n subCat.appearance = new SubCategoryAppearance(props);\r\n this.iModel.elements.updateElement(subCat.toJSON());\r\n }\r\n}\r\n\r\n/** Categorizes 2d GeometricElements.\r\n * @public\r\n */\r\nexport class DrawingCategory extends Category {\r\n /** @internal */\r\n public static override get className(): string { return \"DrawingCategory\"; }\r\n\r\n /** Construct a DrawingCategory\r\n * @param opts The properties of the new DrawingCategory\r\n * @param iModel The IModelDb where the DrawingCategory may be inserted.\r\n * @internal\r\n */\r\n public constructor(opts: ElementProps, iModel: IModelDb) { super(opts, iModel); }\r\n\r\n /** Get the name of the CodeSpec that is used by DrawingCategory objects. */\r\n public static getCodeSpecName(): string { return BisCodeSpec.drawingCategory; }\r\n\r\n /** Looks up the CategoryId of a DrawingCategory by model and name */\r\n public static queryCategoryIdByName(iModel: IModelDb, scopeModelId: Id64String, categoryName: string): Id64String | undefined {\r\n const code: Code = DrawingCategory.createCode(iModel, scopeModelId, categoryName);\r\n return iModel.elements.queryElementIdByCode(code);\r\n }\r\n\r\n /** Create a Code for a DrawingCategory given a name that is meant to be unique within the scope of the specified DefinitionModel.\r\n * @param iModel The IModel\r\n * @param scopeModelId The Id of the DefinitionModel that contains the DrawingCategory and provides the scope for its name.\r\n * @param codeValue The name of the category\r\n * @return A drawing category Code\r\n */\r\n public static createCode(iModel: IModelDb, scopeModelId: CodeScopeProps, codeValue: string): Code {\r\n const codeSpec: CodeSpec = iModel.codeSpecs.getByName(DrawingCategory.getCodeSpecName());\r\n return new Code({ spec: codeSpec.id, scope: scopeModelId, value: codeValue });\r\n }\r\n\r\n /** Create a new DrawingCategory\r\n * @param iModelDb The iModel\r\n * @param definitionModelId The [[DefinitionModel]]\r\n * @param name The name of the DrawingCategory\r\n * @returns The newly constructed DrawingCategory element.\r\n * @throws [[IModelError]] if unable to create the element.\r\n */\r\n public static create(iModelDb: IModelDb, definitionModelId: Id64String, name: string): DrawingCategory {\r\n const categoryProps: CategoryProps = {\r\n classFullName: this.classFullName,\r\n model: definitionModelId,\r\n code: this.createCode(iModelDb, definitionModelId, name),\r\n isPrivate: false,\r\n };\r\n return new DrawingCategory(categoryProps, iModelDb);\r\n }\r\n\r\n /** Insert a new DrawingCategory\r\n * @param iModelDb Insert into this iModel\r\n * @param definitionModelId Insert the new DrawingCategory into this [[DefinitionModel]]\r\n * @param name The name of the DrawingCategory\r\n * @param defaultAppearance The appearance settings to use for the default SubCategory of this DrawingCategory\r\n * @returns The Id of the newly inserted DrawingCategory element.\r\n * @throws [[IModelError]] if unable to insert the element.\r\n */\r\n public static insert(iModelDb: IModelDb, definitionModelId: Id64String, name: string, defaultAppearance: SubCategoryAppearance.Props | SubCategoryAppearance): Id64String {\r\n const category = this.create(iModelDb, definitionModelId, name);\r\n const elements = iModelDb.elements;\r\n category.id = elements.insertElement(category.toJSON());\r\n category.setDefaultAppearance(defaultAppearance);\r\n return category.id;\r\n }\r\n}\r\n\r\n/** Categorizes SpatialElements. See [how to create a SpatialCategory]$(docs/learning/backend/CreateElements.md#SpatialCategory).\r\n * @public\r\n */\r\nexport class SpatialCategory extends Category {\r\n /** @internal */\r\n public static override get className(): string { return \"SpatialCategory\"; }\r\n /** Construct a SpatialCategory\r\n * @param opts The properties of the new SpatialCategory\r\n * @param iModel The IModelDb where the SpatialCategory may be inserted.\r\n * @internal\r\n */\r\n public constructor(opts: ElementProps, iModel: IModelDb) { super(opts, iModel); }\r\n\r\n /** Get the name of the CodeSpec that is used by SpatialCategory objects. */\r\n public static getCodeSpecName(): string { return BisCodeSpec.spatialCategory; }\r\n\r\n /** Looks up the CategoryId of a SpatialCategory by model and name */\r\n public static queryCategoryIdByName(iModel: IModelDb, scopeModelId: Id64String, categoryName: string): Id64String | undefined {\r\n const code: Code = SpatialCategory.createCode(iModel, scopeModelId, categoryName);\r\n return iModel.elements.queryElementIdByCode(code);\r\n }\r\n\r\n /** Create a Code for a SpatialCategory given a name that is meant to be unique within the scope of the specified DefinitionModel.\r\n * @param iModel The IModel\r\n * @param scopeModelId The Id of the DefinitionModel that contains the SpatialCategory and provides the scope for its name.\r\n * @param codeValue The name of the category\r\n * @return A spatial category Code\r\n */\r\n public static createCode(iModel: IModelDb, scopeModelId: CodeScopeProps, codeValue: string): Code {\r\n const codeSpec: CodeSpec = iModel.codeSpecs.getByName(SpatialCategory.getCodeSpecName());\r\n return new Code({ spec: codeSpec.id, scope: scopeModelId, value: codeValue });\r\n }\r\n\r\n /** Create a new SpatialCategory\r\n * @param iModelDb The iModel\r\n * @param definitionModelId The [[DefinitionModel]]\r\n * @param name The name/CodeValue of the SpatialCategory\r\n * @returns The newly constructed SpatialCategory element.\r\n * @throws [[IModelError]] if unable to create the element.\r\n */\r\n public static create(iModelDb: IModelDb, definitionModelId: Id64String, name: string): SpatialCategory {\r\n const categoryProps: CategoryProps = {\r\n classFullName: this.classFullName,\r\n model: definitionModelId,\r\n code: this.createCode(iModelDb, definitionModelId, name),\r\n isPrivate: false,\r\n };\r\n return new SpatialCategory(categoryProps, iModelDb);\r\n }\r\n\r\n /** Insert a new SpatialCategory\r\n * @param iModelDb Insert into this iModel\r\n * @param definitionModelId Insert the new SpatialCategory into this DefinitionModel\r\n * @param name The name of the SpatialCategory\r\n * @param defaultAppearance The appearance settings to use for the default SubCategory of this SpatialCategory\r\n * @returns The Id of the newly inserted SpatialCategory element.\r\n * @throws [[IModelError]] if unable to insert the element.\r\n */\r\n public static insert(iModelDb: IModelDb, definitionModelId: Id64String, name: string, defaultAppearance: SubCategoryAppearance.Props | SubCategoryAppearance): Id64String {\r\n const category = this.create(iModelDb, definitionModelId, name);\r\n category.id = iModelDb.elements.insertElement(category.toJSON());\r\n category.setDefaultAppearance(defaultAppearance);\r\n return category.id;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"Category.js","sourceRoot":"","sources":["../../src/Category.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAAkE;AAClE,oDAE4B;AAC5B,uCAA8C;AAC9C,yCAAsC;AACtC,qEAAqE;AAErE;;GAEG;AACH,MAAa,WAAY,SAAQ,2BAAiB;IAChD,gBAAgB;IACT,MAAM,KAAc,SAAS,KAAa,OAAO,aAAa,CAAC,CAAC,CAAC;IAMxE,gBAAgB;IAChB,YAAmB,KAAuB,EAAE,MAAgB;QAC1D,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,IAAI,mCAAqB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC9D,IAAI,CAAC,WAAW,GAAG,wBAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC3D,CAAC;IAED,gBAAgB;IACA,MAAM;QACpB,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,EAAsB,CAAC;QAC/C,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;QAC1C,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;YACjD,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACrC,OAAO,GAAG,CAAC;IACb,CAAC;IAED,mDAAmD;IAC5C,kBAAkB,KAAa,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/D,qCAAqC;IAC9B,gBAAgB,KAAiB,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACzD,wDAAwD;IACjD,aAAa,KAAiB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1F,uEAAuE;IACvE,IAAW,oBAAoB,KAAc,OAAO,mBAAQ,CAAC,uBAAuB,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,KAAK,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;IAEzI;;;;OAIG;IACI,MAAM,CAAC,UAAU,CAAC,MAAgB,EAAE,gBAAgC,EAAE,SAAiB;QAC5F,MAAM,QAAQ,GAAa,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,yBAAW,CAAC,WAAW,CAAC,CAAC;QAC/E,OAAO,IAAI,kBAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IACpF,CAAC;IAED;;;;;;;OAOG;IACI,MAAM,CAAC,MAAM,CAAC,QAAkB,EAAE,gBAA4B,EAAE,IAAY,EAAE,UAA+D;QAClJ,IAAI,UAAU,YAAY,mCAAqB;YAC7C,UAAU,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;QAEnC,MAAM,cAAc,GAAG,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAW,gBAAgB,CAAC,CAAC;QAChF,MAAM,gBAAgB,GAAqB;YACzC,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,KAAK,EAAE,cAAc,CAAC,KAAK;YAC3B,MAAM,EAAE,IAAI,kDAAyB,CAAC,gBAAgB,CAAC;YACvD,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,gBAAgB,EAAE,IAAI,CAAC;YACvD,UAAU;SACX,CAAC;QACF,OAAO,IAAI,WAAW,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;IACrD,CAAC;IAED;;;;;;;OAOG;IACI,MAAM,CAAC,MAAM,CAAC,QAAkB,EAAE,gBAA4B,EAAE,IAAY,EAAE,UAA+D;QAClJ,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;QAC9E,OAAO,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/D,CAAC;CACF;AA9ED,kCA8EC;AAED;;GAEG;AACH,MAAa,QAAS,SAAQ,2BAAiB;IAC7C,gBAAgB;IACT,MAAM,KAAc,SAAS,KAAa,OAAO,UAAU,CAAC,CAAC,CAAC;IAIrE,gBAAgB;IAChB,YAAmB,KAAoB,EAAE,MAAgB;QACvD,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QALhB,SAAI,GAAS,kBAAI,CAAC,IAAI,CAAC;QAM5B,IAAI,CAAC,IAAI,GAAG,wBAAS,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,WAAW,GAAG,wBAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC3D,CAAC;IAED,gBAAgB;IACA,MAAM;QACpB,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,EAAmB,CAAC;QAC5C,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACrB,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;YACjD,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACrC,OAAO,GAAG,CAAC;IACb,CAAC;IAED,+DAA+D;IACxD,sBAAsB,KAAiB,OAAO,mBAAQ,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAEjG,sEAAsE;IAC/D,oBAAoB,CAAC,KAA0D;QACpF,IAAI,KAAK,YAAY,mCAAqB;YACxC,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QAEzB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAc,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;QAC3F,MAAM,CAAC,UAAU,GAAG,IAAI,mCAAqB,CAAC,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACtD,CAAC;CACF;AAlCD,4BAkCC;AAED;;GAEG;AACH,MAAa,eAAgB,SAAQ,QAAQ;IAC3C,gBAAgB;IACT,MAAM,KAAc,SAAS,KAAa,OAAO,iBAAiB,CAAC,CAAC,CAAC;IAE5E;;;;OAIG;IACH,YAAmB,IAAkB,EAAE,MAAgB,IAAI,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAEjF,4EAA4E;IACrE,MAAM,CAAC,eAAe,KAAa,OAAO,yBAAW,CAAC,eAAe,CAAC,CAAC,CAAC;IAE/E,qEAAqE;IAC9D,MAAM,CAAC,qBAAqB,CAAC,MAAgB,EAAE,YAAwB,EAAE,YAAoB;QAClG,MAAM,IAAI,GAAS,eAAe,CAAC,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;QAClF,OAAO,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,UAAU,CAAC,MAAgB,EAAE,YAA4B,EAAE,SAAiB;QACxF,MAAM,QAAQ,GAAa,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,eAAe,CAAC,eAAe,EAAE,CAAC,CAAC;QACzF,OAAO,IAAI,kBAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAChF,CAAC;IAED;;;;;;OAMG;IACI,MAAM,CAAC,MAAM,CAAC,QAAkB,EAAE,iBAA6B,EAAE,IAAY;QAClF,MAAM,aAAa,GAAkB;YACnC,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,KAAK,EAAE,iBAAiB;YACxB,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,iBAAiB,EAAE,IAAI,CAAC;YACxD,SAAS,EAAE,KAAK;SACjB,CAAC;QACF,OAAO,IAAI,eAAe,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC;IAED;;;;;;;OAOG;IACI,MAAM,CAAC,MAAM,CAAC,QAAkB,EAAE,iBAA6B,EAAE,IAAY,EAAE,iBAAsE;QAC1J,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAC;QAChE,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QACnC,QAAQ,CAAC,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACxD,QAAQ,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;QACjD,OAAO,QAAQ,CAAC,EAAE,CAAC;IACrB,CAAC;CACF;AA/DD,0CA+DC;AAED;;GAEG;AACH,MAAa,eAAgB,SAAQ,QAAQ;IAC3C,gBAAgB;IACT,MAAM,KAAc,SAAS,KAAa,OAAO,iBAAiB,CAAC,CAAC,CAAC;IAC5E;;;;OAIG;IACH,YAAmB,IAAkB,EAAE,MAAgB,IAAI,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAEjF,4EAA4E;IACrE,MAAM,CAAC,eAAe,KAAa,OAAO,yBAAW,CAAC,eAAe,CAAC,CAAC,CAAC;IAE/E,qEAAqE;IAC9D,MAAM,CAAC,qBAAqB,CAAC,MAAgB,EAAE,YAAwB,EAAE,YAAoB;QAClG,MAAM,IAAI,GAAS,eAAe,CAAC,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;QAClF,OAAO,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,UAAU,CAAC,MAAgB,EAAE,YAA4B,EAAE,SAAiB;QACxF,MAAM,QAAQ,GAAa,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,eAAe,CAAC,eAAe,EAAE,CAAC,CAAC;QACzF,OAAO,IAAI,kBAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAChF,CAAC;IAED;;;;;;OAMG;IACI,MAAM,CAAC,MAAM,CAAC,QAAkB,EAAE,iBAA6B,EAAE,IAAY;QAClF,MAAM,aAAa,GAAkB;YACnC,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,KAAK,EAAE,iBAAiB;YACxB,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,iBAAiB,EAAE,IAAI,CAAC;YACxD,SAAS,EAAE,KAAK;SACjB,CAAC;QACF,OAAO,IAAI,eAAe,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC;IAED;;;;;;;OAOG;IACI,MAAM,CAAC,MAAM,CAAC,QAAkB,EAAE,iBAA6B,EAAE,IAAY,EAAE,iBAAsE;QAC1J,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAC;QAChE,QAAQ,CAAC,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACjE,QAAQ,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;QACjD,OAAO,QAAQ,CAAC,EAAE,CAAC;IACrB,CAAC;CACF;AA7DD,0CA6DC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Categories\n */\n\nimport { Id64, Id64String, JsonUtils } from \"@itwin/core-bentley\";\nimport {\n BisCodeSpec, CategoryProps, Code, CodeScopeProps, CodeSpec, ElementProps, Rank, SubCategoryAppearance, SubCategoryProps,\n} from \"@itwin/core-common\";\nimport { DefinitionElement } from \"./Element\";\nimport { IModelDb } from \"./IModelDb\";\nimport { CategoryOwnsSubCategories } from \"./NavigationRelationship\";\n\n/** Defines the appearance for graphics in Geometric elements\n * @public\n */\nexport class SubCategory extends DefinitionElement {\n /** @internal */\n public static override get className(): string { return \"SubCategory\"; }\n /** The Appearance parameters for this SubCategory */\n public appearance: SubCategoryAppearance;\n /** Optional description of this SubCategory. */\n public description?: string;\n\n /** @internal */\n public constructor(props: SubCategoryProps, iModel: IModelDb) {\n super(props, iModel);\n this.appearance = new SubCategoryAppearance(props.appearance);\n this.description = JsonUtils.asString(props.description);\n }\n\n /** @internal */\n public override toJSON(): SubCategoryProps {\n const val = super.toJSON() as SubCategoryProps;\n val.appearance = this.appearance.toJSON();\n if (this.description && this.description.length > 0)\n val.description = this.description;\n return val;\n }\n\n /** Get the SubCategory's name (its Code value). */\n public getSubCategoryName(): string { return this.code.value; }\n /** Get the Id of the SubCategory. */\n public getSubCategoryId(): Id64String { return this.id; }\n /** Get the Id of this SubCategory's parent Category. */\n public getCategoryId(): Id64String { return this.parent ? this.parent.id : Id64.invalid; }\n /** Check if this is the default SubCategory of its parent Category. */\n public get isDefaultSubCategory(): boolean { return IModelDb.getDefaultSubCategoryId(this.getCategoryId()) === this.getSubCategoryId(); }\n\n /** Create a Code for a SubCategory given a name that is meant to be unique within the scope of the specified parent Category.\n * @param iModel The IModel\n * @param parentCategoryId The Id of the parent Category that owns the SubCategory and provides the scope for its name.\n * @param codeValue The name of the SubCategory\n */\n public static createCode(iModel: IModelDb, parentCategoryId: CodeScopeProps, codeValue: string): Code {\n const codeSpec: CodeSpec = iModel.codeSpecs.getByName(BisCodeSpec.subCategory);\n return new Code({ spec: codeSpec.id, scope: parentCategoryId, value: codeValue });\n }\n\n /** Create a new SubCategory\n * @param iModelDb The iModel\n * @param parentCategoryId Create the new SubCategory as a child of this [[Category]]\n * @param name The name of the SubCategory\n * @param appearance The appearance settings to use for this SubCategory\n * @returns The newly constructed SubCategory element.\n * @throws [[IModelError]] if unable to create the element.\n */\n public static create(iModelDb: IModelDb, parentCategoryId: Id64String, name: string, appearance: SubCategoryAppearance.Props | SubCategoryAppearance): SubCategory {\n if (appearance instanceof SubCategoryAppearance)\n appearance = appearance.toJSON();\n\n const parentCategory = iModelDb.elements.getElement<Category>(parentCategoryId);\n const subCategoryProps: SubCategoryProps = {\n classFullName: this.classFullName,\n model: parentCategory.model,\n parent: new CategoryOwnsSubCategories(parentCategoryId),\n code: this.createCode(iModelDb, parentCategoryId, name),\n appearance,\n };\n return new SubCategory(subCategoryProps, iModelDb);\n }\n\n /** Insert a new SubCategory\n * @param iModelDb Insert into this iModel\n * @param parentCategoryId Insert the new SubCategory as a child of this Category\n * @param name The name of the SubCategory\n * @param appearance The appearance settings to use for this SubCategory\n * @returns The Id of the newly inserted SubCategory element.\n * @throws [[IModelError]] if unable to insert the element.\n */\n public static insert(iModelDb: IModelDb, parentCategoryId: Id64String, name: string, appearance: SubCategoryAppearance.Props | SubCategoryAppearance): Id64String {\n const subCategory = this.create(iModelDb, parentCategoryId, name, appearance);\n return iModelDb.elements.insertElement(subCategory.toJSON());\n }\n}\n\n/** A Category element is the target of the `category` member of [[GeometricElement]].\n * @public\n */\nexport class Category extends DefinitionElement {\n /** @internal */\n public static override get className(): string { return \"Category\"; }\n public rank: Rank = Rank.User;\n public description?: string;\n\n /** @internal */\n public constructor(props: CategoryProps, iModel: IModelDb) {\n super(props, iModel);\n this.rank = JsonUtils.asInt(props.rank);\n this.description = JsonUtils.asString(props.description);\n }\n\n /** @internal */\n public override toJSON(): CategoryProps {\n const val = super.toJSON() as CategoryProps;\n val.rank = this.rank;\n if (this.description && this.description.length > 0)\n val.description = this.description;\n return val;\n }\n\n /** Get the Id of the default SubCategory for this Category. */\n public myDefaultSubCategoryId(): Id64String { return IModelDb.getDefaultSubCategoryId(this.id); }\n\n /** Set the appearance of the default SubCategory for this Category */\n public setDefaultAppearance(props: SubCategoryAppearance.Props | SubCategoryAppearance): void {\n if (props instanceof SubCategoryAppearance)\n props = props.toJSON();\n\n const subCat = this.iModel.elements.getElement<SubCategory>(this.myDefaultSubCategoryId());\n subCat.appearance = new SubCategoryAppearance(props);\n this.iModel.elements.updateElement(subCat.toJSON());\n }\n}\n\n/** Categorizes 2d GeometricElements.\n * @public\n */\nexport class DrawingCategory extends Category {\n /** @internal */\n public static override get className(): string { return \"DrawingCategory\"; }\n\n /** Construct a DrawingCategory\n * @param opts The properties of the new DrawingCategory\n * @param iModel The IModelDb where the DrawingCategory may be inserted.\n * @internal\n */\n public constructor(opts: ElementProps, iModel: IModelDb) { super(opts, iModel); }\n\n /** Get the name of the CodeSpec that is used by DrawingCategory objects. */\n public static getCodeSpecName(): string { return BisCodeSpec.drawingCategory; }\n\n /** Looks up the CategoryId of a DrawingCategory by model and name */\n public static queryCategoryIdByName(iModel: IModelDb, scopeModelId: Id64String, categoryName: string): Id64String | undefined {\n const code: Code = DrawingCategory.createCode(iModel, scopeModelId, categoryName);\n return iModel.elements.queryElementIdByCode(code);\n }\n\n /** Create a Code for a DrawingCategory given a name that is meant to be unique within the scope of the specified DefinitionModel.\n * @param iModel The IModel\n * @param scopeModelId The Id of the DefinitionModel that contains the DrawingCategory and provides the scope for its name.\n * @param codeValue The name of the category\n * @return A drawing category Code\n */\n public static createCode(iModel: IModelDb, scopeModelId: CodeScopeProps, codeValue: string): Code {\n const codeSpec: CodeSpec = iModel.codeSpecs.getByName(DrawingCategory.getCodeSpecName());\n return new Code({ spec: codeSpec.id, scope: scopeModelId, value: codeValue });\n }\n\n /** Create a new DrawingCategory\n * @param iModelDb The iModel\n * @param definitionModelId The [[DefinitionModel]]\n * @param name The name of the DrawingCategory\n * @returns The newly constructed DrawingCategory element.\n * @throws [[IModelError]] if unable to create the element.\n */\n public static create(iModelDb: IModelDb, definitionModelId: Id64String, name: string): DrawingCategory {\n const categoryProps: CategoryProps = {\n classFullName: this.classFullName,\n model: definitionModelId,\n code: this.createCode(iModelDb, definitionModelId, name),\n isPrivate: false,\n };\n return new DrawingCategory(categoryProps, iModelDb);\n }\n\n /** Insert a new DrawingCategory\n * @param iModelDb Insert into this iModel\n * @param definitionModelId Insert the new DrawingCategory into this [[DefinitionModel]]\n * @param name The name of the DrawingCategory\n * @param defaultAppearance The appearance settings to use for the default SubCategory of this DrawingCategory\n * @returns The Id of the newly inserted DrawingCategory element.\n * @throws [[IModelError]] if unable to insert the element.\n */\n public static insert(iModelDb: IModelDb, definitionModelId: Id64String, name: string, defaultAppearance: SubCategoryAppearance.Props | SubCategoryAppearance): Id64String {\n const category = this.create(iModelDb, definitionModelId, name);\n const elements = iModelDb.elements;\n category.id = elements.insertElement(category.toJSON());\n category.setDefaultAppearance(defaultAppearance);\n return category.id;\n }\n}\n\n/** Categorizes SpatialElements. See [how to create a SpatialCategory]$(docs/learning/backend/CreateElements.md#SpatialCategory).\n * @public\n */\nexport class SpatialCategory extends Category {\n /** @internal */\n public static override get className(): string { return \"SpatialCategory\"; }\n /** Construct a SpatialCategory\n * @param opts The properties of the new SpatialCategory\n * @param iModel The IModelDb where the SpatialCategory may be inserted.\n * @internal\n */\n public constructor(opts: ElementProps, iModel: IModelDb) { super(opts, iModel); }\n\n /** Get the name of the CodeSpec that is used by SpatialCategory objects. */\n public static getCodeSpecName(): string { return BisCodeSpec.spatialCategory; }\n\n /** Looks up the CategoryId of a SpatialCategory by model and name */\n public static queryCategoryIdByName(iModel: IModelDb, scopeModelId: Id64String, categoryName: string): Id64String | undefined {\n const code: Code = SpatialCategory.createCode(iModel, scopeModelId, categoryName);\n return iModel.elements.queryElementIdByCode(code);\n }\n\n /** Create a Code for a SpatialCategory given a name that is meant to be unique within the scope of the specified DefinitionModel.\n * @param iModel The IModel\n * @param scopeModelId The Id of the DefinitionModel that contains the SpatialCategory and provides the scope for its name.\n * @param codeValue The name of the category\n * @return A spatial category Code\n */\n public static createCode(iModel: IModelDb, scopeModelId: CodeScopeProps, codeValue: string): Code {\n const codeSpec: CodeSpec = iModel.codeSpecs.getByName(SpatialCategory.getCodeSpecName());\n return new Code({ spec: codeSpec.id, scope: scopeModelId, value: codeValue });\n }\n\n /** Create a new SpatialCategory\n * @param iModelDb The iModel\n * @param definitionModelId The [[DefinitionModel]]\n * @param name The name/CodeValue of the SpatialCategory\n * @returns The newly constructed SpatialCategory element.\n * @throws [[IModelError]] if unable to create the element.\n */\n public static create(iModelDb: IModelDb, definitionModelId: Id64String, name: string): SpatialCategory {\n const categoryProps: CategoryProps = {\n classFullName: this.classFullName,\n model: definitionModelId,\n code: this.createCode(iModelDb, definitionModelId, name),\n isPrivate: false,\n };\n return new SpatialCategory(categoryProps, iModelDb);\n }\n\n /** Insert a new SpatialCategory\n * @param iModelDb Insert into this iModel\n * @param definitionModelId Insert the new SpatialCategory into this DefinitionModel\n * @param name The name of the SpatialCategory\n * @param defaultAppearance The appearance settings to use for the default SubCategory of this SpatialCategory\n * @returns The Id of the newly inserted SpatialCategory element.\n * @throws [[IModelError]] if unable to insert the element.\n */\n public static insert(iModelDb: IModelDb, definitionModelId: Id64String, name: string, defaultAppearance: SubCategoryAppearance.Props | SubCategoryAppearance): Id64String {\n const category = this.create(iModelDb, definitionModelId, name);\n category.id = iModelDb.elements.insertElement(category.toJSON());\n category.setDefaultAppearance(defaultAppearance);\n return category.id;\n }\n}\n"]}