@itwin/core-backend 3.5.0-dev.25 → 3.5.0-dev.27

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 (228) 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.js +41 -41
  6. package/lib/cjs/BackendHubAccess.js.map +1 -1
  7. package/lib/cjs/BackendLoggerCategory.d.ts +91 -91
  8. package/lib/cjs/BackendLoggerCategory.js +99 -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/BisCoreSchema.js.map +1 -1
  13. package/lib/cjs/BriefcaseManager.d.ts +165 -165
  14. package/lib/cjs/BriefcaseManager.js +405 -405
  15. package/lib/cjs/BriefcaseManager.js.map +1 -1
  16. package/lib/cjs/Category.d.ts +153 -153
  17. package/lib/cjs/Category.js +243 -243
  18. package/lib/cjs/Category.js.map +1 -1
  19. package/lib/cjs/ChangeSummaryManager.d.ts +187 -187
  20. package/lib/cjs/ChangeSummaryManager.js +445 -445
  21. package/lib/cjs/ChangeSummaryManager.js.map +1 -1
  22. package/lib/cjs/ChangedElementsDb.d.ts +99 -99
  23. package/lib/cjs/ChangedElementsDb.js +165 -165
  24. package/lib/cjs/ChangedElementsDb.js.map +1 -1
  25. package/lib/cjs/ChangedElementsManager.d.ts +39 -39
  26. package/lib/cjs/ChangedElementsManager.js +88 -88
  27. package/lib/cjs/ChangedElementsManager.js.map +1 -1
  28. package/lib/cjs/CheckpointManager.d.ts +120 -120
  29. package/lib/cjs/CheckpointManager.js +343 -343
  30. package/lib/cjs/CheckpointManager.js.map +1 -1
  31. package/lib/cjs/ClassRegistry.d.ts +72 -72
  32. package/lib/cjs/ClassRegistry.js +243 -243
  33. package/lib/cjs/ClassRegistry.js.map +1 -1
  34. package/lib/cjs/CloudSqlite.d.ts +350 -350
  35. package/lib/cjs/CloudSqlite.js +152 -152
  36. package/lib/cjs/CloudSqlite.js.map +1 -1
  37. package/lib/cjs/CloudStorageBackend.d.ts +58 -58
  38. package/lib/cjs/CloudStorageBackend.js +173 -173
  39. package/lib/cjs/CloudStorageBackend.js.map +1 -1
  40. package/lib/cjs/CodeService.d.ts +396 -396
  41. package/lib/cjs/CodeService.js +63 -63
  42. package/lib/cjs/CodeService.js.map +1 -1
  43. package/lib/cjs/CodeSpecs.d.ts +50 -50
  44. package/lib/cjs/CodeSpecs.js +112 -112
  45. package/lib/cjs/CodeSpecs.js.map +1 -1
  46. package/lib/cjs/ConcurrentQuery.d.ts +11 -11
  47. package/lib/cjs/ConcurrentQuery.js +30 -30
  48. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  49. package/lib/cjs/CustomViewState3dCreator.d.ts +21 -21
  50. package/lib/cjs/CustomViewState3dCreator.js +81 -81
  51. package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
  52. package/lib/cjs/DevTools.d.ts +71 -71
  53. package/lib/cjs/DevTools.js +154 -154
  54. package/lib/cjs/DevTools.js.map +1 -1
  55. package/lib/cjs/DisplayStyle.d.ts +106 -106
  56. package/lib/cjs/DisplayStyle.js +256 -256
  57. package/lib/cjs/DisplayStyle.js.map +1 -1
  58. package/lib/cjs/ECDb.d.ts +191 -191
  59. package/lib/cjs/ECDb.js +350 -350
  60. package/lib/cjs/ECDb.js.map +1 -1
  61. package/lib/cjs/ECSchemaXmlContext.d.ts +18 -18
  62. package/lib/cjs/ECSchemaXmlContext.js +41 -41
  63. package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
  64. package/lib/cjs/ECSqlStatement.d.ts +466 -466
  65. package/lib/cjs/ECSqlStatement.js +791 -791
  66. package/lib/cjs/ECSqlStatement.js.map +1 -1
  67. package/lib/cjs/Element.d.ts +1102 -1102
  68. package/lib/cjs/Element.js +1416 -1416
  69. package/lib/cjs/Element.js.map +1 -1
  70. package/lib/cjs/ElementAspect.d.ts +158 -158
  71. package/lib/cjs/ElementAspect.js +186 -186
  72. package/lib/cjs/ElementAspect.js.map +1 -1
  73. package/lib/cjs/ElementGraphics.d.ts +9 -9
  74. package/lib/cjs/ElementGraphics.js +41 -41
  75. package/lib/cjs/ElementGraphics.js.map +1 -1
  76. package/lib/cjs/ElementTreeWalker.d.ts +162 -162
  77. package/lib/cjs/ElementTreeWalker.js +409 -409
  78. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  79. package/lib/cjs/Entity.d.ts +106 -106
  80. package/lib/cjs/Entity.js +134 -134
  81. package/lib/cjs/Entity.js.map +1 -1
  82. package/lib/cjs/EntityReferences.d.ts +49 -49
  83. package/lib/cjs/EntityReferences.js +95 -95
  84. package/lib/cjs/EntityReferences.js.map +1 -1
  85. package/lib/cjs/ExportGraphics.d.ts +317 -317
  86. package/lib/cjs/ExportGraphics.js +208 -208
  87. package/lib/cjs/ExportGraphics.js.map +1 -1
  88. package/lib/cjs/ExternalSource.d.ts +96 -96
  89. package/lib/cjs/ExternalSource.js +131 -131
  90. package/lib/cjs/ExternalSource.js.map +1 -1
  91. package/lib/cjs/GeoCoordConfig.d.ts +19 -19
  92. package/lib/cjs/GeoCoordConfig.js +82 -82
  93. package/lib/cjs/GeoCoordConfig.js.map +1 -1
  94. package/lib/cjs/GeometrySummary.d.ts +4 -4
  95. package/lib/cjs/GeometrySummary.js +380 -380
  96. package/lib/cjs/GeometrySummary.js.map +1 -1
  97. package/lib/cjs/HubMock.d.ts +93 -93
  98. package/lib/cjs/HubMock.js +190 -190
  99. package/lib/cjs/HubMock.js.map +1 -1
  100. package/lib/cjs/IModelCloneContext.d.ts +8 -8
  101. package/lib/cjs/IModelCloneContext.js +15 -15
  102. package/lib/cjs/IModelCloneContext.js.map +1 -1
  103. package/lib/cjs/IModelDb.d.ts +1183 -1183
  104. package/lib/cjs/IModelDb.js +2374 -2374
  105. package/lib/cjs/IModelDb.js.map +1 -1
  106. package/lib/cjs/IModelElementCloneContext.d.ts +89 -89
  107. package/lib/cjs/IModelElementCloneContext.js +159 -159
  108. package/lib/cjs/IModelElementCloneContext.js.map +1 -1
  109. package/lib/cjs/IModelHost.d.ts +369 -369
  110. package/lib/cjs/IModelHost.js +492 -492
  111. package/lib/cjs/IModelHost.js.map +1 -1
  112. package/lib/cjs/IModelJsFs.d.ts +62 -62
  113. package/lib/cjs/IModelJsFs.js +140 -140
  114. package/lib/cjs/IModelJsFs.js.map +1 -1
  115. package/lib/cjs/IpcHost.d.ts +98 -98
  116. package/lib/cjs/IpcHost.js +234 -234
  117. package/lib/cjs/IpcHost.js.map +1 -1
  118. package/lib/cjs/LineStyle.d.ts +311 -311
  119. package/lib/cjs/LineStyle.js +295 -295
  120. package/lib/cjs/LineStyle.js.map +1 -1
  121. package/lib/cjs/LocalHub.d.ts +162 -162
  122. package/lib/cjs/LocalHub.js +587 -587
  123. package/lib/cjs/LocalHub.js.map +1 -1
  124. package/lib/cjs/LocalhostIpcHost.d.ts +20 -20
  125. package/lib/cjs/LocalhostIpcHost.js +81 -81
  126. package/lib/cjs/LocalhostIpcHost.js.map +1 -1
  127. package/lib/cjs/Material.d.ts +103 -103
  128. package/lib/cjs/Material.js +147 -147
  129. package/lib/cjs/Material.js.map +1 -1
  130. package/lib/cjs/Model.d.ts +392 -392
  131. package/lib/cjs/Model.js +485 -485
  132. package/lib/cjs/Model.js.map +1 -1
  133. package/lib/cjs/NativeAppStorage.d.ts +51 -51
  134. package/lib/cjs/NativeAppStorage.js +202 -202
  135. package/lib/cjs/NativeAppStorage.js.map +1 -1
  136. package/lib/cjs/NativeHost.d.ts +52 -52
  137. package/lib/cjs/NativeHost.js +168 -168
  138. package/lib/cjs/NativeHost.js.map +1 -1
  139. package/lib/cjs/NavigationRelationship.d.ts +156 -156
  140. package/lib/cjs/NavigationRelationship.js +225 -225
  141. package/lib/cjs/NavigationRelationship.js.map +1 -1
  142. package/lib/cjs/PromiseMemoizer.d.ts +51 -51
  143. package/lib/cjs/PromiseMemoizer.js +101 -101
  144. package/lib/cjs/PromiseMemoizer.js.map +1 -1
  145. package/lib/cjs/PropertyStore.d.ts +132 -132
  146. package/lib/cjs/PropertyStore.js +11 -11
  147. package/lib/cjs/PropertyStore.js.map +1 -1
  148. package/lib/cjs/Relationship.d.ts +416 -416
  149. package/lib/cjs/Relationship.js +494 -494
  150. package/lib/cjs/Relationship.js.map +1 -1
  151. package/lib/cjs/RpcBackend.d.ts +28 -28
  152. package/lib/cjs/RpcBackend.js +126 -126
  153. package/lib/cjs/RpcBackend.js.map +1 -1
  154. package/lib/cjs/SQLiteDb.d.ts +219 -219
  155. package/lib/cjs/SQLiteDb.js +214 -214
  156. package/lib/cjs/SQLiteDb.js.map +1 -1
  157. package/lib/cjs/Schema.d.ts +55 -55
  158. package/lib/cjs/Schema.js +83 -83
  159. package/lib/cjs/Schema.js.map +1 -1
  160. package/lib/cjs/ServerBasedLocks.d.ts +57 -57
  161. package/lib/cjs/ServerBasedLocks.js +168 -168
  162. package/lib/cjs/ServerBasedLocks.js.map +1 -1
  163. package/lib/cjs/SqliteStatement.d.ts +360 -360
  164. package/lib/cjs/SqliteStatement.js +586 -586
  165. package/lib/cjs/SqliteStatement.js.map +1 -1
  166. package/lib/cjs/Texture.d.ts +58 -58
  167. package/lib/cjs/Texture.js +82 -82
  168. package/lib/cjs/Texture.js.map +1 -1
  169. package/lib/cjs/TileStorage.d.ts +18 -18
  170. package/lib/cjs/TileStorage.js +90 -90
  171. package/lib/cjs/TileStorage.js.map +1 -1
  172. package/lib/cjs/TxnManager.d.ts +202 -202
  173. package/lib/cjs/TxnManager.js +356 -356
  174. package/lib/cjs/TxnManager.js.map +1 -1
  175. package/lib/cjs/ViewDefinition.d.ts +439 -439
  176. package/lib/cjs/ViewDefinition.js +646 -646
  177. package/lib/cjs/ViewDefinition.js.map +1 -1
  178. package/lib/cjs/ViewStateHydrator.d.ts +13 -13
  179. package/lib/cjs/ViewStateHydrator.js +103 -103
  180. package/lib/cjs/ViewStateHydrator.js.map +1 -1
  181. package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
  182. package/lib/cjs/assets/Settings/Schemas/Cloud.Schema.json +67 -67
  183. package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +31 -31
  184. package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +52 -52
  185. package/lib/cjs/assets/Settings/backend.setting.json5 +138 -138
  186. package/lib/cjs/core-backend.d.ts +184 -184
  187. package/lib/cjs/core-backend.js +204 -204
  188. package/lib/cjs/core-backend.js.map +1 -1
  189. package/lib/cjs/domains/FunctionalElements.d.ts +101 -101
  190. package/lib/cjs/domains/FunctionalElements.js +145 -145
  191. package/lib/cjs/domains/FunctionalElements.js.map +1 -1
  192. package/lib/cjs/domains/FunctionalSchema.d.ts +13 -13
  193. package/lib/cjs/domains/FunctionalSchema.js +40 -40
  194. package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
  195. package/lib/cjs/domains/GenericElements.d.ts +177 -177
  196. package/lib/cjs/domains/GenericElements.js +263 -263
  197. package/lib/cjs/domains/GenericElements.js.map +1 -1
  198. package/lib/cjs/domains/GenericSchema.d.ts +10 -10
  199. package/lib/cjs/domains/GenericSchema.js +28 -28
  200. package/lib/cjs/domains/GenericSchema.js.map +1 -1
  201. package/lib/cjs/rpc-impl/DevToolsRpcImpl.d.ts +15 -15
  202. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js +32 -32
  203. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  204. package/lib/cjs/rpc-impl/IModelReadRpcImpl.d.ts +46 -46
  205. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js +287 -287
  206. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  207. package/lib/cjs/rpc-impl/IModelTileRpcImpl.d.ts +22 -22
  208. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js +202 -202
  209. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  210. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.d.ts +36 -36
  211. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js +168 -168
  212. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  213. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.d.ts +16 -16
  214. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js +43 -43
  215. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  216. package/lib/cjs/rpc-impl/WipRpcImpl.d.ts +15 -15
  217. package/lib/cjs/rpc-impl/WipRpcImpl.js +37 -37
  218. package/lib/cjs/rpc-impl/WipRpcImpl.js.map +1 -1
  219. package/lib/cjs/workspace/Settings.d.ts +186 -186
  220. package/lib/cjs/workspace/Settings.js +155 -155
  221. package/lib/cjs/workspace/Settings.js.map +1 -1
  222. package/lib/cjs/workspace/SettingsSchemas.d.ts +75 -75
  223. package/lib/cjs/workspace/SettingsSchemas.js +191 -191
  224. package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
  225. package/lib/cjs/workspace/Workspace.d.ts +414 -414
  226. package/lib/cjs/workspace/Workspace.js +543 -543
  227. package/lib/cjs/workspace/Workspace.js.map +1 -1
  228. 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
+ 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;
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":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module 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"]}