@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,254 +1,254 @@
1
- "use strict";
2
- /*---------------------------------------------------------------------------------------------
3
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
- * See LICENSE.md in the project root for license terms and full copyright notice.
5
- *--------------------------------------------------------------------------------------------*/
6
- /** @packageDocumentation
7
- * @module ViewDefinitions
8
- */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.DisplayStyle3d = exports.DisplayStyle2d = exports.DisplayStyle = 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
- /** A DisplayStyle defines the parameters for 'styling' the contents of a view.
15
- * Internally a DisplayStyle consists of a dictionary of several named 'styles' describing specific aspects of the display style as a whole.
16
- * Many ViewDefinitions may share the same DisplayStyle.
17
- * @public
18
- */
19
- class DisplayStyle extends Element_1.DefinitionElement {
20
- /** @internal */
21
- static get className() { return "DisplayStyle"; }
22
- /** @internal */
23
- constructor(props, iModel) {
24
- super(props, iModel);
25
- }
26
- /** Create a Code for a DisplayStyle given a name that is meant to be unique within the scope of the specified DefinitionModel.
27
- * @param iModel The IModelDb
28
- * @param scopeModelId The Id of the DefinitionModel that contains the DisplayStyle and provides the scope for its name.
29
- * @param codeValue The DisplayStyle name
30
- */
31
- static createCode(iModel, scopeModelId, codeValue) {
32
- const codeSpec = iModel.codeSpecs.getByName(core_common_1.BisCodeSpec.displayStyle);
33
- return new core_common_1.Code({ spec: codeSpec.id, scope: scopeModelId, value: codeValue });
34
- }
35
- /** @internal */
36
- collectReferenceConcreteIds(referenceIds) {
37
- super.collectReferenceConcreteIds(referenceIds);
38
- for (const [id] of this.settings.subCategoryOverrides) {
39
- referenceIds.addElement(id);
40
- }
41
- for (const excludedElementId of this.settings.excludedElementIds)
42
- referenceIds.addElement(excludedElementId);
43
- if (this.settings.renderTimeline) {
44
- referenceIds.addElement(this.settings.renderTimeline);
45
- }
46
- else {
47
- const script = this.loadScheduleScript();
48
- if (script)
49
- script.script.discloseIds(referenceIds); // eslint-disable-line deprecation/deprecation
50
- }
51
- }
52
- /** @alpha */
53
- static onCloned(context, sourceElementProps, targetElementProps) {
54
- super.onCloned(context, sourceElementProps, targetElementProps);
55
- if (!context.isBetweenIModels || !targetElementProps.jsonProperties?.styles)
56
- return;
57
- const settings = targetElementProps.jsonProperties.styles;
58
- if (settings.subCategoryOvr) {
59
- for (let i = 0; i < settings.subCategoryOvr.length; /* */) {
60
- const ovr = settings.subCategoryOvr[i];
61
- ovr.subCategory = context.findTargetElementId(core_bentley_1.Id64.fromJSON(ovr.subCategory));
62
- if (core_bentley_1.Id64.invalid === ovr.subCategory)
63
- settings.subCategoryOvr.splice(i, 1);
64
- else
65
- i++;
66
- }
67
- }
68
- if (settings.excludedElements) {
69
- const excluded = "string" === typeof settings.excludedElements ? core_bentley_1.CompressedId64Set.decompressArray(settings.excludedElements) : settings.excludedElements;
70
- for (let i = 0; i < excluded.length; /* */) {
71
- const remapped = context.findTargetElementId(excluded[i]);
72
- if (core_bentley_1.Id64.invalid === remapped)
73
- excluded.splice(i, 1);
74
- else
75
- excluded[i++] = remapped;
76
- }
77
- if (0 === excluded.length)
78
- delete settings.excludedElements;
79
- else
80
- settings.excludedElements = core_bentley_1.CompressedId64Set.compressIds(core_bentley_1.OrderedId64Iterable.sortArray(excluded));
81
- }
82
- if (settings.renderTimeline) {
83
- const renderTimeline = context.findTargetElementId(settings.renderTimeline);
84
- if (core_bentley_1.Id64.isValid(renderTimeline))
85
- settings.renderTimeline = renderTimeline;
86
- else
87
- delete settings.renderTimeline;
88
- }
89
- else if (settings.scheduleScript) {
90
- const scheduleScript = Element_1.RenderTimeline.remapScript(context, settings.scheduleScript);
91
- if (scheduleScript.length > 0)
92
- settings.scheduleScript = scheduleScript;
93
- else
94
- delete settings.scheduleScript;
95
- }
96
- }
97
- loadScheduleScript() {
98
- let script;
99
- let sourceId;
100
- if (this.settings.renderTimeline) {
101
- const timeline = this.iModel.elements.tryGetElement(this.settings.renderTimeline);
102
- if (timeline) {
103
- script = core_common_1.RenderSchedule.Script.fromJSON(timeline.scriptProps);
104
- sourceId = timeline.id;
105
- }
106
- }
107
- else if (this.settings.scheduleScriptProps) {
108
- script = core_common_1.RenderSchedule.Script.fromJSON(this.settings.scheduleScriptProps);
109
- sourceId = this.id;
110
- }
111
- return undefined !== sourceId && undefined !== script ? new core_common_1.RenderSchedule.ScriptReference(sourceId, script) : undefined;
112
- }
113
- }
114
- exports.DisplayStyle = DisplayStyle;
115
- /** A DisplayStyle for 2d views.
116
- * @public
117
- */
118
- class DisplayStyle2d extends DisplayStyle {
119
- /** @internal */
120
- constructor(props, iModel) {
121
- super(props, iModel);
122
- this._settings = new core_common_1.DisplayStyleSettings(this.jsonProperties);
123
- }
124
- /** @internal */
125
- static get className() { return "DisplayStyle2d"; }
126
- get settings() { return this._settings; }
127
- /** Create a DisplayStyle2d for use by a ViewDefinition.
128
- * @param iModelDb The iModel
129
- * @param definitionModelId The [[DefinitionModel]]
130
- * @param name The name/CodeValue of the DisplayStyle2d
131
- * @returns The newly constructed DisplayStyle2d element.
132
- * @throws [[IModelError]] if unable to create the element.
133
- */
134
- static create(iModelDb, definitionModelId, name) {
135
- const displayStyleProps = {
136
- classFullName: this.classFullName,
137
- code: this.createCode(iModelDb, definitionModelId, name),
138
- model: definitionModelId,
139
- isPrivate: false,
140
- jsonProperties: {
141
- styles: {
142
- backgroundColor: 0,
143
- monochromeColor: core_common_1.ColorDef.white.toJSON(),
144
- viewflags: core_common_1.ViewFlags.defaults,
145
- },
146
- },
147
- };
148
- return new DisplayStyle2d(displayStyleProps, iModelDb);
149
- }
150
- /** Insert a DisplayStyle2d for use by a ViewDefinition.
151
- * @param iModelDb Insert into this iModel
152
- * @param definitionModelId Insert the new DisplayStyle2d into this DefinitionModel
153
- * @param name The name of the DisplayStyle2d
154
- * @returns The Id of the newly inserted DisplayStyle2d element.
155
- * @throws [[IModelError]] if unable to insert the element.
156
- */
157
- static insert(iModelDb, definitionModelId, name) {
158
- const displayStyle = this.create(iModelDb, definitionModelId, name);
159
- return iModelDb.elements.insertElement(displayStyle.toJSON());
160
- }
161
- }
162
- exports.DisplayStyle2d = DisplayStyle2d;
163
- /** A DisplayStyle for 3d views.
164
- * See [how to create a DisplayStyle3d]$(docs/learning/backend/CreateElements.md#DisplayStyle3d).
165
- * @public
166
- */
167
- class DisplayStyle3d extends DisplayStyle {
168
- /** @internal */
169
- constructor(props, iModel) {
170
- super(props, iModel);
171
- this._settings = new core_common_1.DisplayStyle3dSettings(this.jsonProperties);
172
- }
173
- /** @internal */
174
- static get className() { return "DisplayStyle3d"; }
175
- get settings() { return this._settings; }
176
- /** @internal */
177
- collectReferenceConcreteIds(referenceIds) {
178
- super.collectReferenceConcreteIds(referenceIds);
179
- for (const textureId of this.settings.environment.sky.textureIds)
180
- referenceIds.addElement(textureId);
181
- if (this.settings.planProjectionSettings)
182
- for (const planProjectionSetting of this.settings.planProjectionSettings)
183
- referenceIds.addElement(planProjectionSetting[0]);
184
- }
185
- /** @alpha */
186
- static onCloned(context, sourceElementProps, targetElementProps) {
187
- super.onCloned(context, sourceElementProps, targetElementProps);
188
- if (context.isBetweenIModels) {
189
- const convertTexture = (id) => core_bentley_1.Id64.isValidId64(id) ? context.findTargetElementId(id) : id;
190
- const skyBoxImageProps = targetElementProps?.jsonProperties?.styles?.environment?.sky?.image;
191
- if (skyBoxImageProps?.texture && core_bentley_1.Id64.isValidId64(skyBoxImageProps.texture))
192
- skyBoxImageProps.texture = convertTexture(skyBoxImageProps.texture);
193
- if (skyBoxImageProps?.textures) {
194
- skyBoxImageProps.textures.front = convertTexture(skyBoxImageProps.textures.front);
195
- skyBoxImageProps.textures.back = convertTexture(skyBoxImageProps.textures.back);
196
- skyBoxImageProps.textures.left = convertTexture(skyBoxImageProps.textures.left);
197
- skyBoxImageProps.textures.right = convertTexture(skyBoxImageProps.textures.right);
198
- skyBoxImageProps.textures.top = convertTexture(skyBoxImageProps.textures.top);
199
- skyBoxImageProps.textures.bottom = convertTexture(skyBoxImageProps.textures.bottom);
200
- }
201
- if (targetElementProps?.jsonProperties?.styles?.planProjections) {
202
- const remappedPlanProjections = {};
203
- for (const entry of Object.entries(targetElementProps.jsonProperties.styles.planProjections)) {
204
- const remappedModelId = context.findTargetElementId(entry[0]);
205
- if (core_bentley_1.Id64.isValidId64(remappedModelId)) {
206
- remappedPlanProjections[remappedModelId] = entry[1];
207
- }
208
- }
209
- targetElementProps.jsonProperties.styles.planProjections = remappedPlanProjections;
210
- }
211
- }
212
- }
213
- /** Create a DisplayStyle3d for use by a ViewDefinition.
214
- * @param iModelDb The iModel
215
- * @param definitionModelId The [[DefinitionModel]]
216
- * @param name The name/CodeValue of the DisplayStyle3d
217
- * @returns The newly constructed DisplayStyle3d element.
218
- * @throws [[IModelError]] if unable to create the element.
219
- */
220
- static create(iModelDb, definitionModelId, name, options) {
221
- options = options ?? {};
222
- let viewflags = options.viewFlags?.toJSON();
223
- if (!viewflags)
224
- viewflags = options.viewflags ?? new core_common_1.ViewFlags().toJSON();
225
- const backgroundColor = options.backgroundColor instanceof core_common_1.ColorDef ? options.backgroundColor.toJSON() : options.backgroundColor;
226
- const settings = {
227
- ...options,
228
- viewflags,
229
- backgroundColor,
230
- };
231
- const displayStyleProps = {
232
- classFullName: this.classFullName,
233
- code: this.createCode(iModelDb, definitionModelId, name),
234
- model: definitionModelId,
235
- jsonProperties: { styles: settings },
236
- isPrivate: false,
237
- };
238
- return new DisplayStyle3d(displayStyleProps, iModelDb);
239
- }
240
- /**
241
- * Insert a DisplayStyle3d for use by a ViewDefinition.
242
- * @param iModelDb Insert into this iModel
243
- * @param definitionModelId Insert the new DisplayStyle3d into this [[DefinitionModel]]
244
- * @param name The name of the DisplayStyle3d
245
- * @returns The Id of the newly inserted DisplayStyle3d element.
246
- * @throws [[IModelError]] if unable to insert the element.
247
- */
248
- static insert(iModelDb, definitionModelId, name, options) {
249
- const displayStyle = this.create(iModelDb, definitionModelId, name, options);
250
- return iModelDb.elements.insertElement(displayStyle.toJSON());
251
- }
252
- }
253
- exports.DisplayStyle3d = DisplayStyle3d;
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ /** @packageDocumentation
7
+ * @module ViewDefinitions
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.DisplayStyle3d = exports.DisplayStyle2d = exports.DisplayStyle = 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
+ /** A DisplayStyle defines the parameters for 'styling' the contents of a view.
15
+ * Internally a DisplayStyle consists of a dictionary of several named 'styles' describing specific aspects of the display style as a whole.
16
+ * Many ViewDefinitions may share the same DisplayStyle.
17
+ * @public
18
+ */
19
+ class DisplayStyle extends Element_1.DefinitionElement {
20
+ /** @internal */
21
+ static get className() { return "DisplayStyle"; }
22
+ /** @internal */
23
+ constructor(props, iModel) {
24
+ super(props, iModel);
25
+ }
26
+ /** Create a Code for a DisplayStyle given a name that is meant to be unique within the scope of the specified DefinitionModel.
27
+ * @param iModel The IModelDb
28
+ * @param scopeModelId The Id of the DefinitionModel that contains the DisplayStyle and provides the scope for its name.
29
+ * @param codeValue The DisplayStyle name
30
+ */
31
+ static createCode(iModel, scopeModelId, codeValue) {
32
+ const codeSpec = iModel.codeSpecs.getByName(core_common_1.BisCodeSpec.displayStyle);
33
+ return new core_common_1.Code({ spec: codeSpec.id, scope: scopeModelId, value: codeValue });
34
+ }
35
+ /** @internal */
36
+ collectReferenceConcreteIds(referenceIds) {
37
+ super.collectReferenceConcreteIds(referenceIds);
38
+ for (const [id] of this.settings.subCategoryOverrides) {
39
+ referenceIds.addElement(id);
40
+ }
41
+ for (const excludedElementId of this.settings.excludedElementIds)
42
+ referenceIds.addElement(excludedElementId);
43
+ if (this.settings.renderTimeline) {
44
+ referenceIds.addElement(this.settings.renderTimeline);
45
+ }
46
+ else {
47
+ const script = this.loadScheduleScript();
48
+ if (script)
49
+ script.script.discloseIds(referenceIds); // eslint-disable-line deprecation/deprecation
50
+ }
51
+ }
52
+ /** @alpha */
53
+ static onCloned(context, sourceElementProps, targetElementProps) {
54
+ super.onCloned(context, sourceElementProps, targetElementProps);
55
+ if (!context.isBetweenIModels || !targetElementProps.jsonProperties?.styles)
56
+ return;
57
+ const settings = targetElementProps.jsonProperties.styles;
58
+ if (settings.subCategoryOvr) {
59
+ for (let i = 0; i < settings.subCategoryOvr.length; /* */) {
60
+ const ovr = settings.subCategoryOvr[i];
61
+ ovr.subCategory = context.findTargetElementId(core_bentley_1.Id64.fromJSON(ovr.subCategory));
62
+ if (core_bentley_1.Id64.invalid === ovr.subCategory)
63
+ settings.subCategoryOvr.splice(i, 1);
64
+ else
65
+ i++;
66
+ }
67
+ }
68
+ if (settings.excludedElements) {
69
+ const excluded = "string" === typeof settings.excludedElements ? core_bentley_1.CompressedId64Set.decompressArray(settings.excludedElements) : settings.excludedElements;
70
+ for (let i = 0; i < excluded.length; /* */) {
71
+ const remapped = context.findTargetElementId(excluded[i]);
72
+ if (core_bentley_1.Id64.invalid === remapped)
73
+ excluded.splice(i, 1);
74
+ else
75
+ excluded[i++] = remapped;
76
+ }
77
+ if (0 === excluded.length)
78
+ delete settings.excludedElements;
79
+ else
80
+ settings.excludedElements = core_bentley_1.CompressedId64Set.compressIds(core_bentley_1.OrderedId64Iterable.sortArray(excluded));
81
+ }
82
+ if (settings.renderTimeline) {
83
+ const renderTimeline = context.findTargetElementId(settings.renderTimeline);
84
+ if (core_bentley_1.Id64.isValid(renderTimeline))
85
+ settings.renderTimeline = renderTimeline;
86
+ else
87
+ delete settings.renderTimeline;
88
+ }
89
+ else if (settings.scheduleScript) {
90
+ const scheduleScript = Element_1.RenderTimeline.remapScript(context, settings.scheduleScript);
91
+ if (scheduleScript.length > 0)
92
+ settings.scheduleScript = scheduleScript;
93
+ else
94
+ delete settings.scheduleScript;
95
+ }
96
+ }
97
+ loadScheduleScript() {
98
+ let script;
99
+ let sourceId;
100
+ if (this.settings.renderTimeline) {
101
+ const timeline = this.iModel.elements.tryGetElement(this.settings.renderTimeline);
102
+ if (timeline) {
103
+ script = core_common_1.RenderSchedule.Script.fromJSON(timeline.scriptProps);
104
+ sourceId = timeline.id;
105
+ }
106
+ }
107
+ else if (this.settings.scheduleScriptProps) {
108
+ script = core_common_1.RenderSchedule.Script.fromJSON(this.settings.scheduleScriptProps);
109
+ sourceId = this.id;
110
+ }
111
+ return undefined !== sourceId && undefined !== script ? new core_common_1.RenderSchedule.ScriptReference(sourceId, script) : undefined;
112
+ }
113
+ }
114
+ exports.DisplayStyle = DisplayStyle;
115
+ /** A DisplayStyle for 2d views.
116
+ * @public
117
+ */
118
+ class DisplayStyle2d extends DisplayStyle {
119
+ /** @internal */
120
+ static get className() { return "DisplayStyle2d"; }
121
+ get settings() { return this._settings; }
122
+ /** @internal */
123
+ constructor(props, iModel) {
124
+ super(props, iModel);
125
+ this._settings = new core_common_1.DisplayStyleSettings(this.jsonProperties);
126
+ }
127
+ /** Create a DisplayStyle2d for use by a ViewDefinition.
128
+ * @param iModelDb The iModel
129
+ * @param definitionModelId The [[DefinitionModel]]
130
+ * @param name The name/CodeValue of the DisplayStyle2d
131
+ * @returns The newly constructed DisplayStyle2d element.
132
+ * @throws [[IModelError]] if unable to create the element.
133
+ */
134
+ static create(iModelDb, definitionModelId, name) {
135
+ const displayStyleProps = {
136
+ classFullName: this.classFullName,
137
+ code: this.createCode(iModelDb, definitionModelId, name),
138
+ model: definitionModelId,
139
+ isPrivate: false,
140
+ jsonProperties: {
141
+ styles: {
142
+ backgroundColor: 0,
143
+ monochromeColor: core_common_1.ColorDef.white.toJSON(),
144
+ viewflags: core_common_1.ViewFlags.defaults,
145
+ },
146
+ },
147
+ };
148
+ return new DisplayStyle2d(displayStyleProps, iModelDb);
149
+ }
150
+ /** Insert a DisplayStyle2d for use by a ViewDefinition.
151
+ * @param iModelDb Insert into this iModel
152
+ * @param definitionModelId Insert the new DisplayStyle2d into this DefinitionModel
153
+ * @param name The name of the DisplayStyle2d
154
+ * @returns The Id of the newly inserted DisplayStyle2d element.
155
+ * @throws [[IModelError]] if unable to insert the element.
156
+ */
157
+ static insert(iModelDb, definitionModelId, name) {
158
+ const displayStyle = this.create(iModelDb, definitionModelId, name);
159
+ return iModelDb.elements.insertElement(displayStyle.toJSON());
160
+ }
161
+ }
162
+ exports.DisplayStyle2d = DisplayStyle2d;
163
+ /** A DisplayStyle for 3d views.
164
+ * See [how to create a DisplayStyle3d]$(docs/learning/backend/CreateElements.md#DisplayStyle3d).
165
+ * @public
166
+ */
167
+ class DisplayStyle3d extends DisplayStyle {
168
+ /** @internal */
169
+ static get className() { return "DisplayStyle3d"; }
170
+ get settings() { return this._settings; }
171
+ /** @internal */
172
+ constructor(props, iModel) {
173
+ super(props, iModel);
174
+ this._settings = new core_common_1.DisplayStyle3dSettings(this.jsonProperties);
175
+ }
176
+ /** @internal */
177
+ collectReferenceConcreteIds(referenceIds) {
178
+ super.collectReferenceConcreteIds(referenceIds);
179
+ for (const textureId of this.settings.environment.sky.textureIds)
180
+ referenceIds.addElement(textureId);
181
+ if (this.settings.planProjectionSettings)
182
+ for (const planProjectionSetting of this.settings.planProjectionSettings)
183
+ referenceIds.addElement(planProjectionSetting[0]);
184
+ }
185
+ /** @alpha */
186
+ static onCloned(context, sourceElementProps, targetElementProps) {
187
+ super.onCloned(context, sourceElementProps, targetElementProps);
188
+ if (context.isBetweenIModels) {
189
+ const convertTexture = (id) => core_bentley_1.Id64.isValidId64(id) ? context.findTargetElementId(id) : id;
190
+ const skyBoxImageProps = targetElementProps?.jsonProperties?.styles?.environment?.sky?.image;
191
+ if (skyBoxImageProps?.texture && core_bentley_1.Id64.isValidId64(skyBoxImageProps.texture))
192
+ skyBoxImageProps.texture = convertTexture(skyBoxImageProps.texture);
193
+ if (skyBoxImageProps?.textures) {
194
+ skyBoxImageProps.textures.front = convertTexture(skyBoxImageProps.textures.front);
195
+ skyBoxImageProps.textures.back = convertTexture(skyBoxImageProps.textures.back);
196
+ skyBoxImageProps.textures.left = convertTexture(skyBoxImageProps.textures.left);
197
+ skyBoxImageProps.textures.right = convertTexture(skyBoxImageProps.textures.right);
198
+ skyBoxImageProps.textures.top = convertTexture(skyBoxImageProps.textures.top);
199
+ skyBoxImageProps.textures.bottom = convertTexture(skyBoxImageProps.textures.bottom);
200
+ }
201
+ if (targetElementProps?.jsonProperties?.styles?.planProjections) {
202
+ const remappedPlanProjections = {};
203
+ for (const entry of Object.entries(targetElementProps.jsonProperties.styles.planProjections)) {
204
+ const remappedModelId = context.findTargetElementId(entry[0]);
205
+ if (core_bentley_1.Id64.isValidId64(remappedModelId)) {
206
+ remappedPlanProjections[remappedModelId] = entry[1];
207
+ }
208
+ }
209
+ targetElementProps.jsonProperties.styles.planProjections = remappedPlanProjections;
210
+ }
211
+ }
212
+ }
213
+ /** Create a DisplayStyle3d for use by a ViewDefinition.
214
+ * @param iModelDb The iModel
215
+ * @param definitionModelId The [[DefinitionModel]]
216
+ * @param name The name/CodeValue of the DisplayStyle3d
217
+ * @returns The newly constructed DisplayStyle3d element.
218
+ * @throws [[IModelError]] if unable to create the element.
219
+ */
220
+ static create(iModelDb, definitionModelId, name, options) {
221
+ options = options ?? {};
222
+ let viewflags = options.viewFlags?.toJSON();
223
+ if (!viewflags)
224
+ viewflags = options.viewflags ?? new core_common_1.ViewFlags().toJSON();
225
+ const backgroundColor = options.backgroundColor instanceof core_common_1.ColorDef ? options.backgroundColor.toJSON() : options.backgroundColor;
226
+ const settings = {
227
+ ...options,
228
+ viewflags,
229
+ backgroundColor,
230
+ };
231
+ const displayStyleProps = {
232
+ classFullName: this.classFullName,
233
+ code: this.createCode(iModelDb, definitionModelId, name),
234
+ model: definitionModelId,
235
+ jsonProperties: { styles: settings },
236
+ isPrivate: false,
237
+ };
238
+ return new DisplayStyle3d(displayStyleProps, iModelDb);
239
+ }
240
+ /**
241
+ * Insert a DisplayStyle3d for use by a ViewDefinition.
242
+ * @param iModelDb Insert into this iModel
243
+ * @param definitionModelId Insert the new DisplayStyle3d into this [[DefinitionModel]]
244
+ * @param name The name of the DisplayStyle3d
245
+ * @returns The Id of the newly inserted DisplayStyle3d element.
246
+ * @throws [[IModelError]] if unable to insert the element.
247
+ */
248
+ static insert(iModelDb, definitionModelId, name, options) {
249
+ const displayStyle = this.create(iModelDb, definitionModelId, name, options);
250
+ return iModelDb.elements.insertElement(displayStyle.toJSON());
251
+ }
252
+ }
253
+ exports.DisplayStyle3d = DisplayStyle3d;
254
254
  //# sourceMappingURL=DisplayStyle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DisplayStyle.js","sourceRoot":"","sources":["../../src/DisplayStyle.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 ViewDefinitions\r\n */\r\n\r\nimport { CompressedId64Set, Id64, Id64Array, Id64String, OrderedId64Iterable } from \"@itwin/core-bentley\";\r\nimport {\r\n BisCodeSpec, Code, CodeScopeProps, CodeSpec, ColorDef, DisplayStyle3dProps, DisplayStyle3dSettings, DisplayStyle3dSettingsProps,\r\n DisplayStyleProps, DisplayStyleSettings, EntityReferenceSet, PlanProjectionSettingsProps, RenderSchedule, SkyBoxImageProps, ViewFlags,\r\n} from \"@itwin/core-common\";\r\nimport { DefinitionElement, RenderTimeline } from \"./Element\";\r\nimport { IModelDb } from \"./IModelDb\";\r\nimport { IModelElementCloneContext } from \"./IModelElementCloneContext\";\r\n\r\n/** A DisplayStyle defines the parameters for 'styling' the contents of a view.\r\n * Internally a DisplayStyle consists of a dictionary of several named 'styles' describing specific aspects of the display style as a whole.\r\n * Many ViewDefinitions may share the same DisplayStyle.\r\n * @public\r\n */\r\nexport abstract class DisplayStyle extends DefinitionElement {\r\n /** @internal */\r\n public static override get className(): string { return \"DisplayStyle\"; }\r\n public abstract get settings(): DisplayStyleSettings;\r\n\r\n /** @internal */\r\n protected constructor(props: DisplayStyleProps, iModel: IModelDb) {\r\n super(props, iModel);\r\n }\r\n\r\n /** Create a Code for a DisplayStyle given a name that is meant to be unique within the scope of the specified DefinitionModel.\r\n * @param iModel The IModelDb\r\n * @param scopeModelId The Id of the DefinitionModel that contains the DisplayStyle and provides the scope for its name.\r\n * @param codeValue The DisplayStyle name\r\n */\r\n public static createCode(iModel: IModelDb, scopeModelId: CodeScopeProps, codeValue: string): Code {\r\n const codeSpec: CodeSpec = iModel.codeSpecs.getByName(BisCodeSpec.displayStyle);\r\n return new Code({ spec: codeSpec.id, scope: scopeModelId, value: codeValue });\r\n }\r\n\r\n /** @internal */\r\n protected override collectReferenceConcreteIds(referenceIds: EntityReferenceSet): void {\r\n super.collectReferenceConcreteIds(referenceIds);\r\n for (const [id] of this.settings.subCategoryOverrides) {\r\n referenceIds.addElement(id);\r\n }\r\n\r\n for (const excludedElementId of this.settings.excludedElementIds)\r\n referenceIds.addElement(excludedElementId);\r\n\r\n if (this.settings.renderTimeline) {\r\n referenceIds.addElement(this.settings.renderTimeline);\r\n } else {\r\n const script = this.loadScheduleScript();\r\n if (script)\r\n script.script.discloseIds(referenceIds); // eslint-disable-line deprecation/deprecation\r\n }\r\n }\r\n\r\n /** @alpha */\r\n protected static override onCloned(context: IModelElementCloneContext, sourceElementProps: DisplayStyleProps, targetElementProps: DisplayStyleProps): void {\r\n super.onCloned(context, sourceElementProps, targetElementProps);\r\n\r\n if (!context.isBetweenIModels || !targetElementProps.jsonProperties?.styles)\r\n return;\r\n\r\n const settings = targetElementProps.jsonProperties.styles;\r\n if (settings.subCategoryOvr) {\r\n for (let i = 0; i < settings.subCategoryOvr.length; /* */) {\r\n const ovr = settings.subCategoryOvr[i];\r\n ovr.subCategory = context.findTargetElementId(Id64.fromJSON(ovr.subCategory));\r\n if (Id64.invalid === ovr.subCategory)\r\n settings.subCategoryOvr.splice(i, 1);\r\n else\r\n i++;\r\n }\r\n }\r\n\r\n if (settings.excludedElements) {\r\n const excluded: Id64Array = \"string\" === typeof settings.excludedElements ? CompressedId64Set.decompressArray(settings.excludedElements) : settings.excludedElements;\r\n for (let i = 0; i < excluded.length; /* */) {\r\n const remapped = context.findTargetElementId(excluded[i]);\r\n if (Id64.invalid === remapped)\r\n excluded.splice(i, 1);\r\n else\r\n excluded[i++] = remapped;\r\n }\r\n\r\n if (0 === excluded.length)\r\n delete settings.excludedElements;\r\n else\r\n settings.excludedElements = CompressedId64Set.compressIds(OrderedId64Iterable.sortArray(excluded));\r\n }\r\n\r\n if (settings.renderTimeline) {\r\n const renderTimeline = context.findTargetElementId(settings.renderTimeline);\r\n if (Id64.isValid(renderTimeline))\r\n settings.renderTimeline = renderTimeline;\r\n else\r\n delete settings.renderTimeline;\r\n } else if (settings.scheduleScript) {\r\n const scheduleScript = RenderTimeline.remapScript(context, settings.scheduleScript);\r\n if (scheduleScript.length > 0)\r\n settings.scheduleScript = scheduleScript;\r\n else\r\n delete settings.scheduleScript;\r\n }\r\n }\r\n\r\n public loadScheduleScript(): RenderSchedule.ScriptReference | undefined {\r\n let script;\r\n let sourceId;\r\n if (this.settings.renderTimeline) {\r\n const timeline = this.iModel.elements.tryGetElement<RenderTimeline>(this.settings.renderTimeline);\r\n if (timeline) {\r\n script = RenderSchedule.Script.fromJSON(timeline.scriptProps);\r\n sourceId = timeline.id;\r\n }\r\n } else if (this.settings.scheduleScriptProps) {\r\n script = RenderSchedule.Script.fromJSON(this.settings.scheduleScriptProps);\r\n sourceId = this.id;\r\n }\r\n\r\n return undefined !== sourceId && undefined !== script ? new RenderSchedule.ScriptReference(sourceId, script) : undefined;\r\n }\r\n}\r\n\r\n/** A DisplayStyle for 2d views.\r\n * @public\r\n */\r\nexport class DisplayStyle2d extends DisplayStyle {\r\n /** @internal */\r\n public static override get className(): string { return \"DisplayStyle2d\"; }\r\n private readonly _settings: DisplayStyleSettings;\r\n\r\n public get settings(): DisplayStyleSettings { return this._settings; }\r\n\r\n /** @internal */\r\n public constructor(props: DisplayStyleProps, iModel: IModelDb) {\r\n super(props, iModel);\r\n this._settings = new DisplayStyleSettings(this.jsonProperties);\r\n }\r\n /** Create a DisplayStyle2d for use by a ViewDefinition.\r\n * @param iModelDb The iModel\r\n * @param definitionModelId The [[DefinitionModel]]\r\n * @param name The name/CodeValue of the DisplayStyle2d\r\n * @returns The newly constructed DisplayStyle2d element.\r\n * @throws [[IModelError]] if unable to create the element.\r\n */\r\n public static create(iModelDb: IModelDb, definitionModelId: Id64String, name: string): DisplayStyle2d {\r\n const displayStyleProps: DisplayStyleProps = {\r\n classFullName: this.classFullName,\r\n code: this.createCode(iModelDb, definitionModelId, name),\r\n model: definitionModelId,\r\n isPrivate: false,\r\n jsonProperties: {\r\n styles: {\r\n backgroundColor: 0,\r\n monochromeColor: ColorDef.white.toJSON(),\r\n viewflags: ViewFlags.defaults,\r\n },\r\n },\r\n };\r\n return new DisplayStyle2d(displayStyleProps, iModelDb);\r\n }\r\n /** Insert a DisplayStyle2d for use by a ViewDefinition.\r\n * @param iModelDb Insert into this iModel\r\n * @param definitionModelId Insert the new DisplayStyle2d into this DefinitionModel\r\n * @param name The name of the DisplayStyle2d\r\n * @returns The Id of the newly inserted DisplayStyle2d element.\r\n * @throws [[IModelError]] if unable to insert the element.\r\n */\r\n public static insert(iModelDb: IModelDb, definitionModelId: Id64String, name: string): Id64String {\r\n const displayStyle = this.create(iModelDb, definitionModelId, name);\r\n return iModelDb.elements.insertElement(displayStyle.toJSON());\r\n }\r\n}\r\n\r\n/** Describes initial settings for a new [[DisplayStyle3d]].\r\n * Most properties are inherited from [DisplayStyle3dSettingsProps]($common), but for backwards compatibility reasons, this interface is slightly awkward:\r\n * - It adds a `viewFlags` member that differs only in case and type from [DisplayStyleSettingsProps.viewflags]($common); and\r\n * - It extends the type of [DisplayStyleSettingsProps.backgroundColor]($common) to include [ColorDef]($common).\r\n * These idiosyncrasies will be addressed in a future version of core-backend.\r\n * @see [[DisplayStyle3d.create]].\r\n * @public\r\n */\r\nexport interface DisplayStyleCreationOptions extends Omit<DisplayStyle3dSettingsProps, \"backgroundColor\" | \"scheduleScript\"> {\r\n /** If supplied, the [ViewFlags]($common) applied by the display style.\r\n * If undefined, [DisplayStyle3dSettingsProps.viewflags]($common) will be used if present (note the difference in case); otherwise, default-constructed [ViewFlags]($common) will be used.\r\n */\r\n viewFlags?: ViewFlags;\r\n backgroundColor?: ColorDef | number;\r\n}\r\n\r\n/** A DisplayStyle for 3d views.\r\n * See [how to create a DisplayStyle3d]$(docs/learning/backend/CreateElements.md#DisplayStyle3d).\r\n * @public\r\n */\r\nexport class DisplayStyle3d extends DisplayStyle {\r\n /** @internal */\r\n public static override get className(): string { return \"DisplayStyle3d\"; }\r\n private readonly _settings: DisplayStyle3dSettings;\r\n\r\n public get settings(): DisplayStyle3dSettings { return this._settings; }\r\n\r\n /** @internal */\r\n public constructor(props: DisplayStyle3dProps, iModel: IModelDb) {\r\n super(props, iModel);\r\n this._settings = new DisplayStyle3dSettings(this.jsonProperties);\r\n }\r\n\r\n /** @internal */\r\n protected override collectReferenceConcreteIds(referenceIds: EntityReferenceSet): void {\r\n super.collectReferenceConcreteIds(referenceIds);\r\n for (const textureId of this.settings.environment.sky.textureIds)\r\n referenceIds.addElement(textureId);\r\n\r\n if (this.settings.planProjectionSettings)\r\n for (const planProjectionSetting of this.settings.planProjectionSettings)\r\n referenceIds.addElement(planProjectionSetting[0]);\r\n }\r\n\r\n /** @alpha */\r\n protected static override onCloned(context: IModelElementCloneContext, sourceElementProps: DisplayStyle3dProps, targetElementProps: DisplayStyle3dProps): void {\r\n super.onCloned(context, sourceElementProps, targetElementProps);\r\n if (context.isBetweenIModels) {\r\n const convertTexture = (id: string) => Id64.isValidId64(id) ? context.findTargetElementId(id) : id;\r\n\r\n const skyBoxImageProps: SkyBoxImageProps | undefined = targetElementProps?.jsonProperties?.styles?.environment?.sky?.image;\r\n if (skyBoxImageProps?.texture && Id64.isValidId64(skyBoxImageProps.texture))\r\n skyBoxImageProps.texture = convertTexture(skyBoxImageProps.texture);\r\n\r\n if (skyBoxImageProps?.textures) {\r\n skyBoxImageProps.textures.front = convertTexture(skyBoxImageProps.textures.front);\r\n skyBoxImageProps.textures.back = convertTexture(skyBoxImageProps.textures.back);\r\n skyBoxImageProps.textures.left = convertTexture(skyBoxImageProps.textures.left);\r\n skyBoxImageProps.textures.right = convertTexture(skyBoxImageProps.textures.right);\r\n skyBoxImageProps.textures.top = convertTexture(skyBoxImageProps.textures.top);\r\n skyBoxImageProps.textures.bottom = convertTexture(skyBoxImageProps.textures.bottom);\r\n }\r\n\r\n if (targetElementProps?.jsonProperties?.styles?.planProjections) {\r\n const remappedPlanProjections: { [modelId: string]: PlanProjectionSettingsProps } = {};\r\n for (const entry of Object.entries(targetElementProps.jsonProperties.styles.planProjections)) {\r\n const remappedModelId: Id64String = context.findTargetElementId(entry[0]);\r\n if (Id64.isValidId64(remappedModelId)) {\r\n remappedPlanProjections[remappedModelId] = entry[1];\r\n }\r\n }\r\n targetElementProps.jsonProperties.styles.planProjections = remappedPlanProjections;\r\n }\r\n }\r\n }\r\n\r\n /** Create a DisplayStyle3d for use by a ViewDefinition.\r\n * @param iModelDb The iModel\r\n * @param definitionModelId The [[DefinitionModel]]\r\n * @param name The name/CodeValue of the DisplayStyle3d\r\n * @returns The newly constructed DisplayStyle3d element.\r\n * @throws [[IModelError]] if unable to create the element.\r\n */\r\n public static create(iModelDb: IModelDb, definitionModelId: Id64String, name: string, options?: DisplayStyleCreationOptions): DisplayStyle3d {\r\n options = options ?? {};\r\n let viewflags = options.viewFlags?.toJSON();\r\n if (!viewflags)\r\n viewflags = options.viewflags ?? new ViewFlags().toJSON();\r\n\r\n const backgroundColor = options.backgroundColor instanceof ColorDef ? options.backgroundColor.toJSON() : options.backgroundColor;\r\n\r\n const settings: DisplayStyle3dSettingsProps = {\r\n ...options,\r\n viewflags,\r\n backgroundColor,\r\n };\r\n\r\n const displayStyleProps: DisplayStyle3dProps = {\r\n classFullName: this.classFullName,\r\n code: this.createCode(iModelDb, definitionModelId, name),\r\n model: definitionModelId,\r\n jsonProperties: { styles: settings },\r\n isPrivate: false,\r\n\r\n };\r\n\r\n return new DisplayStyle3d(displayStyleProps, iModelDb);\r\n }\r\n /**\r\n * Insert a DisplayStyle3d for use by a ViewDefinition.\r\n * @param iModelDb Insert into this iModel\r\n * @param definitionModelId Insert the new DisplayStyle3d into this [[DefinitionModel]]\r\n * @param name The name of the DisplayStyle3d\r\n * @returns The Id of the newly inserted DisplayStyle3d element.\r\n * @throws [[IModelError]] if unable to insert the element.\r\n */\r\n public static insert(iModelDb: IModelDb, definitionModelId: Id64String, name: string, options?: DisplayStyleCreationOptions): Id64String {\r\n const displayStyle = this.create(iModelDb, definitionModelId, name, options);\r\n return iModelDb.elements.insertElement(displayStyle.toJSON());\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"DisplayStyle.js","sourceRoot":"","sources":["../../src/DisplayStyle.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 ViewDefinitions\n */\n\nimport { CompressedId64Set, Id64, Id64Array, Id64String, OrderedId64Iterable } from \"@itwin/core-bentley\";\nimport {\n BisCodeSpec, Code, CodeScopeProps, CodeSpec, ColorDef, DisplayStyle3dProps, DisplayStyle3dSettings, DisplayStyle3dSettingsProps,\n DisplayStyleProps, DisplayStyleSettings, EntityReferenceSet, PlanProjectionSettingsProps, RenderSchedule, SkyBoxImageProps, ViewFlags,\n} from \"@itwin/core-common\";\nimport { DefinitionElement, RenderTimeline } from \"./Element\";\nimport { IModelDb } from \"./IModelDb\";\nimport { IModelElementCloneContext } from \"./IModelElementCloneContext\";\n\n/** A DisplayStyle defines the parameters for 'styling' the contents of a view.\n * Internally a DisplayStyle consists of a dictionary of several named 'styles' describing specific aspects of the display style as a whole.\n * Many ViewDefinitions may share the same DisplayStyle.\n * @public\n */\nexport abstract class DisplayStyle extends DefinitionElement {\n /** @internal */\n public static override get className(): string { return \"DisplayStyle\"; }\n public abstract get settings(): DisplayStyleSettings;\n\n /** @internal */\n protected constructor(props: DisplayStyleProps, iModel: IModelDb) {\n super(props, iModel);\n }\n\n /** Create a Code for a DisplayStyle given a name that is meant to be unique within the scope of the specified DefinitionModel.\n * @param iModel The IModelDb\n * @param scopeModelId The Id of the DefinitionModel that contains the DisplayStyle and provides the scope for its name.\n * @param codeValue The DisplayStyle name\n */\n public static createCode(iModel: IModelDb, scopeModelId: CodeScopeProps, codeValue: string): Code {\n const codeSpec: CodeSpec = iModel.codeSpecs.getByName(BisCodeSpec.displayStyle);\n return new Code({ spec: codeSpec.id, scope: scopeModelId, value: codeValue });\n }\n\n /** @internal */\n protected override collectReferenceConcreteIds(referenceIds: EntityReferenceSet): void {\n super.collectReferenceConcreteIds(referenceIds);\n for (const [id] of this.settings.subCategoryOverrides) {\n referenceIds.addElement(id);\n }\n\n for (const excludedElementId of this.settings.excludedElementIds)\n referenceIds.addElement(excludedElementId);\n\n if (this.settings.renderTimeline) {\n referenceIds.addElement(this.settings.renderTimeline);\n } else {\n const script = this.loadScheduleScript();\n if (script)\n script.script.discloseIds(referenceIds); // eslint-disable-line deprecation/deprecation\n }\n }\n\n /** @alpha */\n protected static override onCloned(context: IModelElementCloneContext, sourceElementProps: DisplayStyleProps, targetElementProps: DisplayStyleProps): void {\n super.onCloned(context, sourceElementProps, targetElementProps);\n\n if (!context.isBetweenIModels || !targetElementProps.jsonProperties?.styles)\n return;\n\n const settings = targetElementProps.jsonProperties.styles;\n if (settings.subCategoryOvr) {\n for (let i = 0; i < settings.subCategoryOvr.length; /* */) {\n const ovr = settings.subCategoryOvr[i];\n ovr.subCategory = context.findTargetElementId(Id64.fromJSON(ovr.subCategory));\n if (Id64.invalid === ovr.subCategory)\n settings.subCategoryOvr.splice(i, 1);\n else\n i++;\n }\n }\n\n if (settings.excludedElements) {\n const excluded: Id64Array = \"string\" === typeof settings.excludedElements ? CompressedId64Set.decompressArray(settings.excludedElements) : settings.excludedElements;\n for (let i = 0; i < excluded.length; /* */) {\n const remapped = context.findTargetElementId(excluded[i]);\n if (Id64.invalid === remapped)\n excluded.splice(i, 1);\n else\n excluded[i++] = remapped;\n }\n\n if (0 === excluded.length)\n delete settings.excludedElements;\n else\n settings.excludedElements = CompressedId64Set.compressIds(OrderedId64Iterable.sortArray(excluded));\n }\n\n if (settings.renderTimeline) {\n const renderTimeline = context.findTargetElementId(settings.renderTimeline);\n if (Id64.isValid(renderTimeline))\n settings.renderTimeline = renderTimeline;\n else\n delete settings.renderTimeline;\n } else if (settings.scheduleScript) {\n const scheduleScript = RenderTimeline.remapScript(context, settings.scheduleScript);\n if (scheduleScript.length > 0)\n settings.scheduleScript = scheduleScript;\n else\n delete settings.scheduleScript;\n }\n }\n\n public loadScheduleScript(): RenderSchedule.ScriptReference | undefined {\n let script;\n let sourceId;\n if (this.settings.renderTimeline) {\n const timeline = this.iModel.elements.tryGetElement<RenderTimeline>(this.settings.renderTimeline);\n if (timeline) {\n script = RenderSchedule.Script.fromJSON(timeline.scriptProps);\n sourceId = timeline.id;\n }\n } else if (this.settings.scheduleScriptProps) {\n script = RenderSchedule.Script.fromJSON(this.settings.scheduleScriptProps);\n sourceId = this.id;\n }\n\n return undefined !== sourceId && undefined !== script ? new RenderSchedule.ScriptReference(sourceId, script) : undefined;\n }\n}\n\n/** A DisplayStyle for 2d views.\n * @public\n */\nexport class DisplayStyle2d extends DisplayStyle {\n /** @internal */\n public static override get className(): string { return \"DisplayStyle2d\"; }\n private readonly _settings: DisplayStyleSettings;\n\n public get settings(): DisplayStyleSettings { return this._settings; }\n\n /** @internal */\n public constructor(props: DisplayStyleProps, iModel: IModelDb) {\n super(props, iModel);\n this._settings = new DisplayStyleSettings(this.jsonProperties);\n }\n /** Create a DisplayStyle2d for use by a ViewDefinition.\n * @param iModelDb The iModel\n * @param definitionModelId The [[DefinitionModel]]\n * @param name The name/CodeValue of the DisplayStyle2d\n * @returns The newly constructed DisplayStyle2d element.\n * @throws [[IModelError]] if unable to create the element.\n */\n public static create(iModelDb: IModelDb, definitionModelId: Id64String, name: string): DisplayStyle2d {\n const displayStyleProps: DisplayStyleProps = {\n classFullName: this.classFullName,\n code: this.createCode(iModelDb, definitionModelId, name),\n model: definitionModelId,\n isPrivate: false,\n jsonProperties: {\n styles: {\n backgroundColor: 0,\n monochromeColor: ColorDef.white.toJSON(),\n viewflags: ViewFlags.defaults,\n },\n },\n };\n return new DisplayStyle2d(displayStyleProps, iModelDb);\n }\n /** Insert a DisplayStyle2d for use by a ViewDefinition.\n * @param iModelDb Insert into this iModel\n * @param definitionModelId Insert the new DisplayStyle2d into this DefinitionModel\n * @param name The name of the DisplayStyle2d\n * @returns The Id of the newly inserted DisplayStyle2d element.\n * @throws [[IModelError]] if unable to insert the element.\n */\n public static insert(iModelDb: IModelDb, definitionModelId: Id64String, name: string): Id64String {\n const displayStyle = this.create(iModelDb, definitionModelId, name);\n return iModelDb.elements.insertElement(displayStyle.toJSON());\n }\n}\n\n/** Describes initial settings for a new [[DisplayStyle3d]].\n * Most properties are inherited from [DisplayStyle3dSettingsProps]($common), but for backwards compatibility reasons, this interface is slightly awkward:\n * - It adds a `viewFlags` member that differs only in case and type from [DisplayStyleSettingsProps.viewflags]($common); and\n * - It extends the type of [DisplayStyleSettingsProps.backgroundColor]($common) to include [ColorDef]($common).\n * These idiosyncrasies will be addressed in a future version of core-backend.\n * @see [[DisplayStyle3d.create]].\n * @public\n */\nexport interface DisplayStyleCreationOptions extends Omit<DisplayStyle3dSettingsProps, \"backgroundColor\" | \"scheduleScript\"> {\n /** If supplied, the [ViewFlags]($common) applied by the display style.\n * If undefined, [DisplayStyle3dSettingsProps.viewflags]($common) will be used if present (note the difference in case); otherwise, default-constructed [ViewFlags]($common) will be used.\n */\n viewFlags?: ViewFlags;\n backgroundColor?: ColorDef | number;\n}\n\n/** A DisplayStyle for 3d views.\n * See [how to create a DisplayStyle3d]$(docs/learning/backend/CreateElements.md#DisplayStyle3d).\n * @public\n */\nexport class DisplayStyle3d extends DisplayStyle {\n /** @internal */\n public static override get className(): string { return \"DisplayStyle3d\"; }\n private readonly _settings: DisplayStyle3dSettings;\n\n public get settings(): DisplayStyle3dSettings { return this._settings; }\n\n /** @internal */\n public constructor(props: DisplayStyle3dProps, iModel: IModelDb) {\n super(props, iModel);\n this._settings = new DisplayStyle3dSettings(this.jsonProperties);\n }\n\n /** @internal */\n protected override collectReferenceConcreteIds(referenceIds: EntityReferenceSet): void {\n super.collectReferenceConcreteIds(referenceIds);\n for (const textureId of this.settings.environment.sky.textureIds)\n referenceIds.addElement(textureId);\n\n if (this.settings.planProjectionSettings)\n for (const planProjectionSetting of this.settings.planProjectionSettings)\n referenceIds.addElement(planProjectionSetting[0]);\n }\n\n /** @alpha */\n protected static override onCloned(context: IModelElementCloneContext, sourceElementProps: DisplayStyle3dProps, targetElementProps: DisplayStyle3dProps): void {\n super.onCloned(context, sourceElementProps, targetElementProps);\n if (context.isBetweenIModels) {\n const convertTexture = (id: string) => Id64.isValidId64(id) ? context.findTargetElementId(id) : id;\n\n const skyBoxImageProps: SkyBoxImageProps | undefined = targetElementProps?.jsonProperties?.styles?.environment?.sky?.image;\n if (skyBoxImageProps?.texture && Id64.isValidId64(skyBoxImageProps.texture))\n skyBoxImageProps.texture = convertTexture(skyBoxImageProps.texture);\n\n if (skyBoxImageProps?.textures) {\n skyBoxImageProps.textures.front = convertTexture(skyBoxImageProps.textures.front);\n skyBoxImageProps.textures.back = convertTexture(skyBoxImageProps.textures.back);\n skyBoxImageProps.textures.left = convertTexture(skyBoxImageProps.textures.left);\n skyBoxImageProps.textures.right = convertTexture(skyBoxImageProps.textures.right);\n skyBoxImageProps.textures.top = convertTexture(skyBoxImageProps.textures.top);\n skyBoxImageProps.textures.bottom = convertTexture(skyBoxImageProps.textures.bottom);\n }\n\n if (targetElementProps?.jsonProperties?.styles?.planProjections) {\n const remappedPlanProjections: { [modelId: string]: PlanProjectionSettingsProps } = {};\n for (const entry of Object.entries(targetElementProps.jsonProperties.styles.planProjections)) {\n const remappedModelId: Id64String = context.findTargetElementId(entry[0]);\n if (Id64.isValidId64(remappedModelId)) {\n remappedPlanProjections[remappedModelId] = entry[1];\n }\n }\n targetElementProps.jsonProperties.styles.planProjections = remappedPlanProjections;\n }\n }\n }\n\n /** Create a DisplayStyle3d for use by a ViewDefinition.\n * @param iModelDb The iModel\n * @param definitionModelId The [[DefinitionModel]]\n * @param name The name/CodeValue of the DisplayStyle3d\n * @returns The newly constructed DisplayStyle3d element.\n * @throws [[IModelError]] if unable to create the element.\n */\n public static create(iModelDb: IModelDb, definitionModelId: Id64String, name: string, options?: DisplayStyleCreationOptions): DisplayStyle3d {\n options = options ?? {};\n let viewflags = options.viewFlags?.toJSON();\n if (!viewflags)\n viewflags = options.viewflags ?? new ViewFlags().toJSON();\n\n const backgroundColor = options.backgroundColor instanceof ColorDef ? options.backgroundColor.toJSON() : options.backgroundColor;\n\n const settings: DisplayStyle3dSettingsProps = {\n ...options,\n viewflags,\n backgroundColor,\n };\n\n const displayStyleProps: DisplayStyle3dProps = {\n classFullName: this.classFullName,\n code: this.createCode(iModelDb, definitionModelId, name),\n model: definitionModelId,\n jsonProperties: { styles: settings },\n isPrivate: false,\n\n };\n\n return new DisplayStyle3d(displayStyleProps, iModelDb);\n }\n /**\n * Insert a DisplayStyle3d for use by a ViewDefinition.\n * @param iModelDb Insert into this iModel\n * @param definitionModelId Insert the new DisplayStyle3d into this [[DefinitionModel]]\n * @param name The name of the DisplayStyle3d\n * @returns The Id of the newly inserted DisplayStyle3d element.\n * @throws [[IModelError]] if unable to insert the element.\n */\n public static insert(iModelDb: IModelDb, definitionModelId: Id64String, name: string, options?: DisplayStyleCreationOptions): Id64String {\n const displayStyle = this.create(iModelDb, definitionModelId, name, options);\n return iModelDb.elements.insertElement(displayStyle.toJSON());\n }\n}\n"]}