@itwin/core-frontend 5.12.0-dev.8 → 5.12.0

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 (82) hide show
  1. package/CHANGELOG.md +23 -1
  2. package/lib/cjs/AccuDraw.d.ts.map +1 -1
  3. package/lib/cjs/AccuDraw.js +10 -9
  4. package/lib/cjs/AccuDraw.js.map +1 -1
  5. package/lib/cjs/AuxCoordSys.d.ts +11 -4
  6. package/lib/cjs/AuxCoordSys.d.ts.map +1 -1
  7. package/lib/cjs/AuxCoordSys.js +12 -6
  8. package/lib/cjs/AuxCoordSys.js.map +1 -1
  9. package/lib/cjs/BriefcaseConnection.js +1 -1
  10. package/lib/cjs/BriefcaseConnection.js.map +1 -1
  11. package/lib/cjs/DrawingViewState.d.ts.map +1 -1
  12. package/lib/cjs/DrawingViewState.js +3 -4
  13. package/lib/cjs/DrawingViewState.js.map +1 -1
  14. package/lib/cjs/EntityState.js +1 -1
  15. package/lib/cjs/EntityState.js.map +1 -1
  16. package/lib/cjs/IModelConnection.d.ts +20 -7
  17. package/lib/cjs/IModelConnection.d.ts.map +1 -1
  18. package/lib/cjs/IModelConnection.js +66 -77
  19. package/lib/cjs/IModelConnection.js.map +1 -1
  20. package/lib/cjs/IpcApp.d.ts +37 -0
  21. package/lib/cjs/IpcApp.d.ts.map +1 -1
  22. package/lib/cjs/IpcApp.js +56 -26
  23. package/lib/cjs/IpcApp.js.map +1 -1
  24. package/lib/cjs/ViewCreator2d.d.ts.map +1 -1
  25. package/lib/cjs/ViewCreator2d.js +7 -9
  26. package/lib/cjs/ViewCreator2d.js.map +1 -1
  27. package/lib/cjs/common/gltf/GltfSchema.d.ts +7 -0
  28. package/lib/cjs/common/gltf/GltfSchema.d.ts.map +1 -1
  29. package/lib/cjs/common/gltf/GltfSchema.js.map +1 -1
  30. package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
  31. package/lib/cjs/tile/GltfReader.js +3 -0
  32. package/lib/cjs/tile/GltfReader.js.map +1 -1
  33. package/lib/cjs/tile/TileRequestChannel.js.map +1 -1
  34. package/lib/cjs/tools/AccuDrawTool.d.ts +20 -3
  35. package/lib/cjs/tools/AccuDrawTool.d.ts.map +1 -1
  36. package/lib/cjs/tools/AccuDrawTool.js +108 -58
  37. package/lib/cjs/tools/AccuDrawTool.js.map +1 -1
  38. package/lib/cjs/tools/ElementSetTool.d.ts.map +1 -1
  39. package/lib/cjs/tools/ElementSetTool.js +1 -2
  40. package/lib/cjs/tools/ElementSetTool.js.map +1 -1
  41. package/lib/esm/AccuDraw.d.ts.map +1 -1
  42. package/lib/esm/AccuDraw.js +11 -10
  43. package/lib/esm/AccuDraw.js.map +1 -1
  44. package/lib/esm/AuxCoordSys.d.ts +11 -4
  45. package/lib/esm/AuxCoordSys.d.ts.map +1 -1
  46. package/lib/esm/AuxCoordSys.js +13 -7
  47. package/lib/esm/AuxCoordSys.js.map +1 -1
  48. package/lib/esm/BriefcaseConnection.js +1 -1
  49. package/lib/esm/BriefcaseConnection.js.map +1 -1
  50. package/lib/esm/DrawingViewState.d.ts.map +1 -1
  51. package/lib/esm/DrawingViewState.js +3 -4
  52. package/lib/esm/DrawingViewState.js.map +1 -1
  53. package/lib/esm/EntityState.js +1 -1
  54. package/lib/esm/EntityState.js.map +1 -1
  55. package/lib/esm/IModelConnection.d.ts +20 -7
  56. package/lib/esm/IModelConnection.d.ts.map +1 -1
  57. package/lib/esm/IModelConnection.js +67 -78
  58. package/lib/esm/IModelConnection.js.map +1 -1
  59. package/lib/esm/IpcApp.d.ts +37 -0
  60. package/lib/esm/IpcApp.d.ts.map +1 -1
  61. package/lib/esm/IpcApp.js +56 -27
  62. package/lib/esm/IpcApp.js.map +1 -1
  63. package/lib/esm/ViewCreator2d.d.ts.map +1 -1
  64. package/lib/esm/ViewCreator2d.js +7 -9
  65. package/lib/esm/ViewCreator2d.js.map +1 -1
  66. package/lib/esm/common/gltf/GltfSchema.d.ts +7 -0
  67. package/lib/esm/common/gltf/GltfSchema.d.ts.map +1 -1
  68. package/lib/esm/common/gltf/GltfSchema.js.map +1 -1
  69. package/lib/esm/tile/GltfReader.d.ts.map +1 -1
  70. package/lib/esm/tile/GltfReader.js +3 -0
  71. package/lib/esm/tile/GltfReader.js.map +1 -1
  72. package/lib/esm/tile/TileRequestChannel.js.map +1 -1
  73. package/lib/esm/tools/AccuDrawTool.d.ts +20 -3
  74. package/lib/esm/tools/AccuDrawTool.d.ts.map +1 -1
  75. package/lib/esm/tools/AccuDrawTool.js +109 -59
  76. package/lib/esm/tools/AccuDrawTool.js.map +1 -1
  77. package/lib/esm/tools/ElementSetTool.d.ts.map +1 -1
  78. package/lib/esm/tools/ElementSetTool.js +1 -2
  79. package/lib/esm/tools/ElementSetTool.js.map +1 -1
  80. package/lib/public/scripts/parse-imdl-worker.js +1 -1
  81. package/lib/workers/webpack/parse-imdl-worker.js +1 -1
  82. package/package.json +24 -24
@@ -40,11 +40,18 @@ export declare abstract class AuxCoordSystemState extends ElementState implement
40
40
  description?: string;
41
41
  static fromProps(props: AuxCoordSystemProps, iModel: IModelConnection): AuxCoordSystemState;
42
42
  /** Create a new AuxCoordSystemState.
43
- * @param acsName the name for the new AuxCoordSystem
44
- * @param iModel the iModel for which the ACS applies.
45
- * @note call this method with the appropriate subclass (e.g. AuxCoordSystemSpatialState, AuxCoordSystem2dState, etc), not on AuxCoordSystemState directly
43
+ * @param _acsName unused, this method creates an empty code as it lacks sufficient information to do otherwise.
44
+ * @param iModel the iModel for which the ACS applies
45
+ * @note Inserting a new named ACS element requires creating a CodeProps for the type of view and the view's definition model.
46
+ * This method doesn't have the information to do this so it creates an empty code.
47
+ * @example
48
+ * ```typescript
49
+ * const codeSpecName = vp.view.isSpatialView() ? BisCodeSpec.auxCoordSystemSpatial : (vp.view.is3d() ? BisCodeSpec.auxCoordSystem3d : BisCodeSpec.auxCoordSystem2d);
50
+ * const codeSpec = await vp.iModel.codeSpecs.getByName(codeSpecName);
51
+ * const code = new Code({ spec: codeSpec.id, scope: vp.view.model, value: acsName });
52
+ * ```
46
53
  */
47
- static createNew(acsName: string, iModel: IModelConnection): AuxCoordSystemState;
54
+ static createNew(_acsName: string, iModel: IModelConnection): AuxCoordSystemState;
48
55
  constructor(props: AuxCoordSystemProps, iModel: IModelConnection);
49
56
  toJSON(): AuxCoordSystemProps;
50
57
  isValidForView(view: ViewState): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"AuxCoordSys.d.ts","sourceRoot":"","sources":["../../src/AuxCoordSys.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AuxCoordSys.d.ts","sourceRoot":"","sources":["../../src/AuxCoordSys.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAA4B,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAuB,KAAK,EAAE,MAAM,EAAsB,MAAM,sBAAsB,CAAC;AACpJ,OAAO,EACL,qBAAqB,EAAE,qBAAqB,EAAE,mBAAmB,EAClE,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC;;;GAGG;AACH,oBAAY,OAAO;IACjB,IAAI,IAAI;IACR,WAAW,IAAI;IACf,WAAW,IAAI;IACf,SAAS,IAAI;CACd;AAED;;;GAGG;AACH,oBAAY,iBAAiB;IAC3B,IAAI,IAAI,CAAE,oCAAoC;IAC9C,MAAM,IAAW;IACjB,YAAY,IAAW;IACvB,MAAM,IAAW;IACjB,YAAY,IAAW;IACvB,QAAQ,KAAW;CACpB;AAgBD;;;GAGG;AACH,8BAAsB,mBAAoB,SAAQ,YAAa,YAAW,mBAAmB;IAC3F,WAA2B,SAAS,WAA+B;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;WAEd,SAAS,CAAC,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,gBAAgB,GAAG,mBAAmB;IAWlG;;;;;;;;;;;OAWG;WACW,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,mBAAmB;gBAIrE,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,gBAAgB;IAKvD,MAAM,IAAI,mBAAmB;IAOtC,cAAc,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO;aAM/B,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO;aACpC,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI;IACpD,wDAAwD;aACxC,WAAW,CAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ;aACxC,WAAW,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI;IAChD,IAAW,IAAI,IAAI,OAAO,CAAkD;IAErE,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAO/C,wDAAwD;IACxD,OAAO,CAAC,MAAM,CAAC,UAAU;IAEzB;;;OAGG;WACW,cAAc,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,GAAG,OAAO;IA+BrG,OAAO,CAAC,gBAAgB;IAoBxB,OAAO,CAAC,YAAY;IA2BpB,OAAO,CAAC,OAAO;IAwDf,6DAA6D;IAC7D,OAAO,CAAC,oBAAoB;IA8BrB,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,iBAAiB;CAKpE;AAED;;;GAGG;AACH,qBAAa,qBAAsB,SAAQ,mBAAoB,YAAW,qBAAqB;IAC7F,WAA2B,SAAS,WAAiC;IACrE,SAAgB,MAAM,EAAE,OAAO,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;gBAExB,KAAK,EAAE,qBAAqB,EAAE,MAAM,EAAE,gBAAgB;IAOlD,MAAM,IAAI,qBAAqB;IAOxC,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO;IACpC,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI;IACpC,WAAW,CAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ;IACxC,WAAW,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI;CAKxC;AAED;;;GAGG;AACH,qBAAa,qBAAsB,SAAQ,mBAAoB,YAAW,qBAAqB;IAC7F,WAA2B,SAAS,WAAiC;IACrE,SAAgB,MAAM,EAAE,OAAO,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;gBAExB,KAAK,EAAE,qBAAqB,EAAE,MAAM,EAAE,gBAAgB;IAUlD,MAAM,IAAI,qBAAqB;IASxC,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO;IACpC,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI;IACpC,WAAW,CAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ;IACxC,WAAW,CAAC,OAAO,EAAE,QAAQ,GAAG,IAAI;CAO5C;AAED;;;GAGG;AACH,qBAAa,0BAA2B,SAAQ,qBAAqB;IACnE,WAA2B,SAAS,WAAsC;CAC3E"}
@@ -55,13 +55,19 @@ class AuxCoordSystemState extends EntityState_1.ElementState {
55
55
  return new AuxCoordSystemSpatialState(props, iModel);
56
56
  }
57
57
  /** Create a new AuxCoordSystemState.
58
- * @param acsName the name for the new AuxCoordSystem
59
- * @param iModel the iModel for which the ACS applies.
60
- * @note call this method with the appropriate subclass (e.g. AuxCoordSystemSpatialState, AuxCoordSystem2dState, etc), not on AuxCoordSystemState directly
58
+ * @param _acsName unused, this method creates an empty code as it lacks sufficient information to do otherwise.
59
+ * @param iModel the iModel for which the ACS applies
60
+ * @note Inserting a new named ACS element requires creating a CodeProps for the type of view and the view's definition model.
61
+ * This method doesn't have the information to do this so it creates an empty code.
62
+ * @example
63
+ * ```typescript
64
+ * const codeSpecName = vp.view.isSpatialView() ? BisCodeSpec.auxCoordSystemSpatial : (vp.view.is3d() ? BisCodeSpec.auxCoordSystem3d : BisCodeSpec.auxCoordSystem2d);
65
+ * const codeSpec = await vp.iModel.codeSpecs.getByName(codeSpecName);
66
+ * const code = new Code({ spec: codeSpec.id, scope: vp.view.model, value: acsName });
67
+ * ```
61
68
  */
62
- static createNew(acsName, iModel) {
63
- const myCode = new core_common_1.Code({ spec: core_common_1.BisCodeSpec.auxCoordSystemSpatial, scope: core_common_1.IModel.dictionaryId.toString(), value: acsName });
64
- return new AuxCoordSystemSpatialState({ model: core_common_1.IModel.dictionaryId, code: myCode, classFullName: this.classFullName }, iModel);
69
+ static createNew(_acsName, iModel) {
70
+ return new AuxCoordSystemSpatialState({ model: core_common_1.IModel.dictionaryId, code: core_common_1.Code.createEmpty(), classFullName: this.classFullName }, iModel);
65
71
  }
66
72
  constructor(props, iModel) {
67
73
  super(props, iModel);
@@ -1 +1 @@
1
- {"version":3,"file":"AuxCoordSys.js","sourceRoot":"","sources":["../../src/AuxCoordSys.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 Views\n */\n\nimport { JsonUtils } from \"@itwin/core-bentley\";\nimport { Angle, AngleSweep, Arc3d, Matrix3d, Point2d, Point3d, Transform, Vector3d, XAndY, XYAndZ, YawPitchRollAngles } from \"@itwin/core-geometry\";\nimport {\n AuxCoordSystem2dProps, AuxCoordSystem3dProps, AuxCoordSystemProps, BisCodeSpec, Code, ColorDef, IModel, LinePixels, Npc,\n} from \"@itwin/core-common\";\nimport { ElementState } from \"./EntityState\";\nimport { IModelConnection } from \"./IModelConnection\";\nimport { GraphicBuilder } from \"./render/GraphicBuilder\";\nimport { DecorateContext } from \"./ViewContext\";\nimport { CoordSystem } from \"./CoordSystem\";\nimport { Viewport } from \"./Viewport\";\nimport { ViewState } from \"./ViewState\";\nimport { GraphicType } from \"./common/render/GraphicType\";\n\n/**\n * @public\n * @extensions\n */\nexport enum ACSType {\n None = 0,\n Rectangular = 1,\n Cylindrical = 2,\n Spherical = 3,\n}\n\n/**\n * @public\n * @extensions\n */\nexport enum ACSDisplayOptions {\n None = 0, // used for testing individual bits.\n Active = (1 << 0),\n Deemphasized = (1 << 1),\n Hilite = (1 << 2),\n CheckVisible = (1 << 3),\n Dynamics = (1 << 4),\n}\n\nconst enum ACSDisplaySizes { // eslint-disable-line no-restricted-syntax\n TriadSizeInches = 0.6,\n ArrowBaseStart = 0.3,\n ArrowBaseWidth = 0.2,\n ArrowTipEnd = 1.25,\n ArrowTipStart = 0.85,\n ArrowTipFlange = 0.75,\n ArrowTipWidth = 0.4,\n ZAxisLength = 0.65,\n LabelStart = 0.4, // eslint-disable-line @typescript-eslint/no-duplicate-enum-values\n LabelEnd = 0.8,\n LabelWidth = 0.15,\n}\n\n/** The state of an AuxCoordSystem element in the frontend\n * @public\n * @extensions\n */\nexport abstract class AuxCoordSystemState extends ElementState implements AuxCoordSystemProps {\n public static override get className() { return \"AuxCoordSystem\"; }\n public type: number;\n public description?: string;\n\n public static fromProps(props: AuxCoordSystemProps, iModel: IModelConnection): AuxCoordSystemState {\n const name = props.classFullName.toLowerCase();\n if (name.endsWith(\"system2d\"))\n return new AuxCoordSystem2dState(props, iModel);\n\n if (name.endsWith(\"system3d\"))\n return new AuxCoordSystem3dState(props, iModel);\n\n return new AuxCoordSystemSpatialState(props, iModel);\n }\n\n /** Create a new AuxCoordSystemState.\n * @param acsName the name for the new AuxCoordSystem\n * @param iModel the iModel for which the ACS applies.\n * @note call this method with the appropriate subclass (e.g. AuxCoordSystemSpatialState, AuxCoordSystem2dState, etc), not on AuxCoordSystemState directly\n */\n public static createNew(acsName: string, iModel: IModelConnection): AuxCoordSystemState {\n const myCode = new Code({ spec: BisCodeSpec.auxCoordSystemSpatial, scope: IModel.dictionaryId.toString(), value: acsName });\n return new AuxCoordSystemSpatialState({ model: IModel.dictionaryId, code: myCode, classFullName: this.classFullName }, iModel);\n }\n\n public constructor(props: AuxCoordSystemProps, iModel: IModelConnection) {\n super(props, iModel);\n this.type = JsonUtils.asInt(props.type, ACSType.None);\n this.description = props.description;\n }\n public override toJSON(): AuxCoordSystemProps {\n const val = super.toJSON() as AuxCoordSystemProps;\n val.type = this.type;\n val.description = this.description;\n return val;\n }\n\n public isValidForView(view: ViewState): boolean {\n if (view.isSpatialView())\n return this instanceof AuxCoordSystemSpatialState;\n return (view.is3d() === this.is3d);\n }\n\n public abstract getOrigin(result?: Point3d): Point3d;\n public abstract setOrigin(val: XYAndZ | XAndY): void;\n /** get a *copy of* the rotation matrix for this ACS. */\n public abstract getRotation(result?: Matrix3d): Matrix3d;\n public abstract setRotation(val: Matrix3d): void;\n public get is3d(): boolean { return this instanceof AuxCoordSystem3dState; }\n\n public drawGrid(context: DecorateContext): void {\n // Called for active ACS when grid orientation is GridOrientationType::ACS.\n const view = context.viewport.view;\n const fixedRepsAuto = Point2d.create(); // limit grid to project extents\n context.drawStandardGrid(this.getOrigin(), this.getRotation(), view.getGridSpacing(), view.getGridsPerRef(), false, fixedRepsAuto);\n }\n\n /** Returns the value, clamped to the supplied range. */\n private static limitRange(min: number, max: number, val: number): number { return Math.max(min, Math.min(max, val)); }\n\n /**\n * Given an origin point, returns whether the point falls within the view or not. If adjustOrigin is set to true, a point outside\n * the view will be modified to fall within the appropriate range.\n */\n public static isOriginInView(drawOrigin: Point3d, viewport: Viewport, adjustOrigin: boolean): boolean {\n const testPtView = viewport.worldToView(drawOrigin);\n const frustum = viewport.getFrustum(CoordSystem.View);\n const screenRange = Point3d.create();\n screenRange.x = frustum.points[Npc._000].distance(frustum.points[Npc._100]);\n screenRange.y = frustum.points[Npc._000].distance(frustum.points[Npc._010]);\n screenRange.z = frustum.points[Npc._000].distance(frustum.points[Npc._001]);\n\n // Check if current acs origin is outside view...\n const inView = (!((testPtView.x < 0 || testPtView.x > screenRange.x) || (testPtView.y < 0 || testPtView.y > screenRange.y)));\n\n if (!adjustOrigin)\n return inView;\n\n if (!inView) {\n const offset = viewport.pixelsFromInches(ACSDisplaySizes.TriadSizeInches);\n testPtView.x = AuxCoordSystemState.limitRange(offset, screenRange.x - offset, testPtView.x);\n testPtView.y = AuxCoordSystemState.limitRange(offset, screenRange.y - offset, testPtView.y);\n }\n\n // Limit point to NPC box to prevent triad from being clipped from display...\n const originPtNpc = viewport.viewToNpc(testPtView);\n originPtNpc.x = AuxCoordSystemState.limitRange(0, 1, originPtNpc.x);\n originPtNpc.y = AuxCoordSystemState.limitRange(0, 1, originPtNpc.y);\n originPtNpc.z = AuxCoordSystemState.limitRange(0, 1, originPtNpc.z);\n viewport.npcToView(originPtNpc, testPtView);\n viewport.viewToWorld(testPtView, drawOrigin);\n\n return inView;\n }\n\n private getAdjustedColor(inColor: ColorDef, isFill: boolean, viewport: Viewport, options: ACSDisplayOptions): ColorDef {\n let color;\n if ((options & ACSDisplayOptions.Hilite) !== ACSDisplayOptions.None) {\n color = viewport.hilite.color;\n } else if ((options & ACSDisplayOptions.Active) !== ACSDisplayOptions.None) {\n color = inColor.equals(ColorDef.white) ? viewport.getContrastToBackgroundColor() : inColor;\n } else {\n color = ColorDef.from(150, 150, 150, 0);\n }\n\n color = color.adjustedForContrast(viewport.view.backgroundColor);\n\n if (isFill)\n color = color.withTransparency((options & (ACSDisplayOptions.Deemphasized | ACSDisplayOptions.Dynamics)) !== ACSDisplayOptions.None ? 225 : 200);\n else\n color = color.withTransparency((options & ACSDisplayOptions.Deemphasized) !== ACSDisplayOptions.None ? 150 : 75);\n\n return color;\n }\n\n private addAxisLabel(builder: GraphicBuilder, axis: number, options: ACSDisplayOptions, vp: Viewport) {\n const color = ColorDef.white;\n const lineColor = this.getAdjustedColor(color, false, vp, options);\n builder.setSymbology(lineColor, lineColor, 2);\n\n const linePts1: Point3d[] = [];\n if (0 === axis) {\n linePts1[0] = Point3d.create(ACSDisplaySizes.LabelStart, -ACSDisplaySizes.LabelWidth);\n linePts1[1] = Point3d.create(ACSDisplaySizes.LabelEnd, ACSDisplaySizes.LabelWidth);\n } else {\n linePts1[0] = Point3d.create(0.0, ACSDisplaySizes.LabelStart);\n linePts1[1] = Point3d.create(0.0, (ACSDisplaySizes.LabelStart + ACSDisplaySizes.LabelEnd) * 0.5);\n }\n builder.addLineString(linePts1);\n\n const linePts2: Point3d[] = []; // NOTE: Don't use same point array, addPointString/addLineString don't deep copy...\n if (0 === axis) {\n linePts2[0] = Point3d.create(ACSDisplaySizes.LabelStart, ACSDisplaySizes.LabelWidth);\n linePts2[1] = Point3d.create(ACSDisplaySizes.LabelEnd, -ACSDisplaySizes.LabelWidth);\n } else {\n linePts2[0] = Point3d.create(ACSDisplaySizes.LabelWidth, ACSDisplaySizes.LabelEnd);\n linePts2[1] = Point3d.create(0.0, (ACSDisplaySizes.LabelStart + ACSDisplaySizes.LabelEnd) * 0.5);\n linePts2[2] = Point3d.create(-ACSDisplaySizes.LabelWidth, ACSDisplaySizes.LabelEnd);\n }\n builder.addLineString(linePts2);\n }\n\n private addAxis(builder: GraphicBuilder, axis: number, options: ACSDisplayOptions, vp: Viewport) {\n const color = (0 === axis ? ColorDef.red : (1 === axis ? ColorDef.green : ColorDef.blue));\n const lineColor = this.getAdjustedColor(color, false, vp, options);\n const fillColor = this.getAdjustedColor(color, true, vp, options);\n\n if (axis === 2) {\n builder.setSymbology(lineColor, lineColor, 6);\n builder.addPointString([Point3d.create(0.0, 0.0, ACSDisplaySizes.ZAxisLength)]); // NOTE: ACS origin point will be drawn separately as a pickable world decoration...\n\n const linePts2: Point3d[] = [Point3d.create(), Point3d.create()]; // NOTE: Don't use same point array, addPointString/addLineString don't deep copy...\n linePts2[1].z = ACSDisplaySizes.ZAxisLength;\n builder.setSymbology(lineColor, lineColor, 1, (options & ACSDisplayOptions.Dynamics) === ACSDisplayOptions.None ? LinePixels.Solid : LinePixels.Code2);\n builder.addLineString(linePts2);\n\n const scale = ACSDisplaySizes.ArrowTipWidth / 2;\n const center = Point3d.create();\n const viewRMatrix = vp.rotation;\n\n const xVec = viewRMatrix.getRow(0);\n const yVec = viewRMatrix.getRow(1);\n\n builder.placement.matrix.multiplyTransposeVectorInPlace(xVec);\n builder.placement.matrix.multiplyTransposeVectorInPlace(yVec);\n\n xVec.normalize(xVec);\n yVec.normalize(yVec);\n\n const ellipse = Arc3d.createScaledXYColumns(center, Matrix3d.createColumns(xVec, yVec, Vector3d.create()), scale, scale, AngleSweep.createStartEnd(Angle.createRadians(0), Angle.createRadians(Math.PI * 2)));\n builder.addArc(ellipse, false, false);\n\n builder.setBlankingFill(fillColor);\n builder.addArc(ellipse, true, true);\n return;\n }\n\n const shapePts: Point3d[] = [];\n shapePts[0] = Point3d.create(ACSDisplaySizes.ArrowTipEnd, 0.0);\n shapePts[1] = Point3d.create(ACSDisplaySizes.ArrowTipFlange, ACSDisplaySizes.ArrowTipWidth);\n shapePts[2] = Point3d.create(ACSDisplaySizes.ArrowTipStart, ACSDisplaySizes.ArrowBaseWidth);\n shapePts[3] = Point3d.create(ACSDisplaySizes.ArrowBaseStart, ACSDisplaySizes.ArrowBaseWidth);\n shapePts[4] = Point3d.create(ACSDisplaySizes.ArrowBaseStart, -ACSDisplaySizes.ArrowBaseWidth);\n shapePts[5] = Point3d.create(ACSDisplaySizes.ArrowTipStart, -ACSDisplaySizes.ArrowBaseWidth);\n shapePts[6] = Point3d.create(ACSDisplaySizes.ArrowTipFlange, -ACSDisplaySizes.ArrowTipWidth);\n shapePts[7] = shapePts[0].clone();\n if (1 === axis)\n shapePts.forEach((tmpPt) => tmpPt.set(tmpPt.y, tmpPt.x));\n\n builder.setSymbology(lineColor, lineColor, 1, (options & ACSDisplayOptions.Dynamics) === ACSDisplayOptions.None ? LinePixels.Solid : LinePixels.Code2);\n builder.addLineString(shapePts);\n\n this.addAxisLabel(builder, axis, options, vp);\n\n builder.setBlankingFill(fillColor);\n builder.addShape(shapePts);\n }\n\n /** Returns a GraphicBuilder for this AuxCoordSystemState. */\n private createGraphicBuilder(context: DecorateContext, options: ACSDisplayOptions): GraphicBuilder {\n const checkOutOfView = (options & ACSDisplayOptions.CheckVisible) !== ACSDisplayOptions.None;\n const drawOrigin = this.getOrigin();\n\n if (checkOutOfView && !AuxCoordSystemState.isOriginInView(drawOrigin, context.viewport, true))\n options = options | ACSDisplayOptions.Deemphasized;\n\n let pixelSize = context.viewport.pixelsFromInches(ACSDisplaySizes.TriadSizeInches);\n\n if ((options & ACSDisplayOptions.Deemphasized) !== ACSDisplayOptions.None)\n pixelSize *= 0.8;\n else if ((options & ACSDisplayOptions.Active) !== ACSDisplayOptions.None)\n pixelSize *= 0.9;\n\n const exaggerate = context.viewport.view.getAspectRatioSkew();\n const scale = context.getPixelSizeAtPoint(drawOrigin) * pixelSize;\n const rMatrix = this.getRotation();\n\n rMatrix.transposeInPlace();\n rMatrix.scaleColumns(scale, scale / exaggerate, scale, rMatrix);\n const transform = Transform.createRefs(drawOrigin, rMatrix);\n\n const builder = context.createGraphicBuilder(GraphicType.WorldOverlay, transform);\n const vp = context.viewport;\n this.addAxis(builder, 0, options, vp);\n this.addAxis(builder, 1, options, vp);\n this.addAxis(builder, 2, options, vp);\n return builder;\n }\n\n public display(context: DecorateContext, options: ACSDisplayOptions) {\n const builder = this.createGraphicBuilder(context, options);\n if (undefined !== builder)\n context.addDecorationFromBuilder(builder);\n }\n}\n\n/** The state of an AuxCoordSystem2d element in the frontend\n * @public\n * @extensions\n */\nexport class AuxCoordSystem2dState extends AuxCoordSystemState implements AuxCoordSystem2dProps {\n public static override get className() { return \"AuxCoordSystem2d\"; }\n public readonly origin: Point2d;\n public angle: number; // in degrees\n private readonly _rMatrix: Matrix3d;\n\n constructor(props: AuxCoordSystem2dProps, iModel: IModelConnection) {\n super(props, iModel);\n this.origin = Point2d.fromJSON(props.origin);\n this.angle = JsonUtils.asDouble(props.angle);\n this._rMatrix = Matrix3d.createRotationAroundVector(Vector3d.unitZ(), Angle.createDegrees(this.angle)) ?? Matrix3d.createIdentity();\n }\n\n public override toJSON(): AuxCoordSystem2dProps {\n const val = super.toJSON() as AuxCoordSystem2dProps;\n val.origin = this.origin;\n val.angle = this.angle;\n return val;\n }\n\n public getOrigin(result?: Point3d): Point3d { return Point3d.createFrom(this.origin, result); }\n public setOrigin(val: XYAndZ | XAndY): void { this.origin.setFrom(val); }\n public getRotation(result?: Matrix3d): Matrix3d { return this._rMatrix.clone(result); }\n public setRotation(val: Matrix3d): void {\n this._rMatrix.setFrom(val);\n const angle = YawPitchRollAngles.createFromMatrix3d(val);\n this.angle = (undefined !== angle ? angle.yaw.degrees : 0.0);\n }\n}\n\n/** The state of an AuxCoordSystem3d element in the frontend\n * @public\n * @extensions\n */\nexport class AuxCoordSystem3dState extends AuxCoordSystemState implements AuxCoordSystem3dProps {\n public static override get className() { return \"AuxCoordSystem3d\"; }\n public readonly origin: Point3d;\n public yaw: number; // in degrees\n public pitch: number; // in degrees\n public roll: number; // in degrees\n private readonly _rMatrix: Matrix3d;\n\n constructor(props: AuxCoordSystem3dProps, iModel: IModelConnection) {\n super(props, iModel);\n this.origin = Point3d.fromJSON(props.origin);\n this.yaw = JsonUtils.asDouble(props.yaw);\n this.pitch = JsonUtils.asDouble(props.pitch);\n this.roll = JsonUtils.asDouble(props.roll);\n const angles = new YawPitchRollAngles(Angle.createDegrees(this.yaw), Angle.createDegrees(this.pitch), Angle.createDegrees(this.roll));\n this._rMatrix = angles.toMatrix3d();\n }\n\n public override toJSON(): AuxCoordSystem3dProps {\n const val = super.toJSON() as AuxCoordSystem3dProps;\n val.origin = this.origin;\n val.yaw = this.yaw;\n val.pitch = this.pitch;\n val.roll = this.roll;\n return val;\n }\n\n public getOrigin(result?: Point3d): Point3d { return Point3d.createFrom(this.origin, result); }\n public setOrigin(val: XYAndZ | XAndY): void { this.origin.setFrom(val); }\n public getRotation(result?: Matrix3d): Matrix3d { return this._rMatrix.clone(result); }\n public setRotation(rMatrix: Matrix3d): void {\n this._rMatrix.setFrom(rMatrix);\n const angles = YawPitchRollAngles.createFromMatrix3d(rMatrix);\n this.yaw = (undefined !== angles ? angles.yaw.degrees : 0.0);\n this.pitch = (undefined !== angles ? angles.pitch.degrees : 0.0);\n this.roll = (undefined !== angles ? angles.roll.degrees : 0.0);\n }\n}\n\n/** The state of an AuxCoordSystemSpatial element in the frontend\n * @public\n * @extensions\n */\nexport class AuxCoordSystemSpatialState extends AuxCoordSystem3dState {\n public static override get className() { return \"AuxCoordSystemSpatial\"; }\n}\n"]}
1
+ {"version":3,"file":"AuxCoordSys.js","sourceRoot":"","sources":["../../src/AuxCoordSys.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 Views\n */\n\nimport { JsonUtils } from \"@itwin/core-bentley\";\nimport { Angle, AngleSweep, Arc3d, Matrix3d, Point2d, Point3d, Transform, Vector3d, XAndY, XYAndZ, YawPitchRollAngles } from \"@itwin/core-geometry\";\nimport {\n AuxCoordSystem2dProps, AuxCoordSystem3dProps, AuxCoordSystemProps, Code, ColorDef, IModel, LinePixels, Npc,\n} from \"@itwin/core-common\";\nimport { ElementState } from \"./EntityState\";\nimport { IModelConnection } from \"./IModelConnection\";\nimport { GraphicBuilder } from \"./render/GraphicBuilder\";\nimport { DecorateContext } from \"./ViewContext\";\nimport { CoordSystem } from \"./CoordSystem\";\nimport { Viewport } from \"./Viewport\";\nimport { ViewState } from \"./ViewState\";\nimport { GraphicType } from \"./common/render/GraphicType\";\n\n/**\n * @public\n * @extensions\n */\nexport enum ACSType {\n None = 0,\n Rectangular = 1,\n Cylindrical = 2,\n Spherical = 3,\n}\n\n/**\n * @public\n * @extensions\n */\nexport enum ACSDisplayOptions {\n None = 0, // used for testing individual bits.\n Active = (1 << 0),\n Deemphasized = (1 << 1),\n Hilite = (1 << 2),\n CheckVisible = (1 << 3),\n Dynamics = (1 << 4),\n}\n\nconst enum ACSDisplaySizes { // eslint-disable-line no-restricted-syntax\n TriadSizeInches = 0.6,\n ArrowBaseStart = 0.3,\n ArrowBaseWidth = 0.2,\n ArrowTipEnd = 1.25,\n ArrowTipStart = 0.85,\n ArrowTipFlange = 0.75,\n ArrowTipWidth = 0.4,\n ZAxisLength = 0.65,\n LabelStart = 0.4, // eslint-disable-line @typescript-eslint/no-duplicate-enum-values\n LabelEnd = 0.8,\n LabelWidth = 0.15,\n}\n\n/** The state of an AuxCoordSystem element in the frontend\n * @public\n * @extensions\n */\nexport abstract class AuxCoordSystemState extends ElementState implements AuxCoordSystemProps {\n public static override get className() { return \"AuxCoordSystem\"; }\n public type: number;\n public description?: string;\n\n public static fromProps(props: AuxCoordSystemProps, iModel: IModelConnection): AuxCoordSystemState {\n const name = props.classFullName.toLowerCase();\n if (name.endsWith(\"system2d\"))\n return new AuxCoordSystem2dState(props, iModel);\n\n if (name.endsWith(\"system3d\"))\n return new AuxCoordSystem3dState(props, iModel);\n\n return new AuxCoordSystemSpatialState(props, iModel);\n }\n\n /** Create a new AuxCoordSystemState.\n * @param _acsName unused, this method creates an empty code as it lacks sufficient information to do otherwise.\n * @param iModel the iModel for which the ACS applies\n * @note Inserting a new named ACS element requires creating a CodeProps for the type of view and the view's definition model.\n * This method doesn't have the information to do this so it creates an empty code.\n * @example\n * ```typescript\n * const codeSpecName = vp.view.isSpatialView() ? BisCodeSpec.auxCoordSystemSpatial : (vp.view.is3d() ? BisCodeSpec.auxCoordSystem3d : BisCodeSpec.auxCoordSystem2d);\n * const codeSpec = await vp.iModel.codeSpecs.getByName(codeSpecName);\n * const code = new Code({ spec: codeSpec.id, scope: vp.view.model, value: acsName });\n * ```\n */\n public static createNew(_acsName: string, iModel: IModelConnection): AuxCoordSystemState {\n return new AuxCoordSystemSpatialState({ model: IModel.dictionaryId, code: Code.createEmpty(), classFullName: this.classFullName }, iModel);\n }\n\n public constructor(props: AuxCoordSystemProps, iModel: IModelConnection) {\n super(props, iModel);\n this.type = JsonUtils.asInt(props.type, ACSType.None);\n this.description = props.description;\n }\n public override toJSON(): AuxCoordSystemProps {\n const val = super.toJSON() as AuxCoordSystemProps;\n val.type = this.type;\n val.description = this.description;\n return val;\n }\n\n public isValidForView(view: ViewState): boolean {\n if (view.isSpatialView())\n return this instanceof AuxCoordSystemSpatialState;\n return (view.is3d() === this.is3d);\n }\n\n public abstract getOrigin(result?: Point3d): Point3d;\n public abstract setOrigin(val: XYAndZ | XAndY): void;\n /** get a *copy of* the rotation matrix for this ACS. */\n public abstract getRotation(result?: Matrix3d): Matrix3d;\n public abstract setRotation(val: Matrix3d): void;\n public get is3d(): boolean { return this instanceof AuxCoordSystem3dState; }\n\n public drawGrid(context: DecorateContext): void {\n // Called for active ACS when grid orientation is GridOrientationType::ACS.\n const view = context.viewport.view;\n const fixedRepsAuto = Point2d.create(); // limit grid to project extents\n context.drawStandardGrid(this.getOrigin(), this.getRotation(), view.getGridSpacing(), view.getGridsPerRef(), false, fixedRepsAuto);\n }\n\n /** Returns the value, clamped to the supplied range. */\n private static limitRange(min: number, max: number, val: number): number { return Math.max(min, Math.min(max, val)); }\n\n /**\n * Given an origin point, returns whether the point falls within the view or not. If adjustOrigin is set to true, a point outside\n * the view will be modified to fall within the appropriate range.\n */\n public static isOriginInView(drawOrigin: Point3d, viewport: Viewport, adjustOrigin: boolean): boolean {\n const testPtView = viewport.worldToView(drawOrigin);\n const frustum = viewport.getFrustum(CoordSystem.View);\n const screenRange = Point3d.create();\n screenRange.x = frustum.points[Npc._000].distance(frustum.points[Npc._100]);\n screenRange.y = frustum.points[Npc._000].distance(frustum.points[Npc._010]);\n screenRange.z = frustum.points[Npc._000].distance(frustum.points[Npc._001]);\n\n // Check if current acs origin is outside view...\n const inView = (!((testPtView.x < 0 || testPtView.x > screenRange.x) || (testPtView.y < 0 || testPtView.y > screenRange.y)));\n\n if (!adjustOrigin)\n return inView;\n\n if (!inView) {\n const offset = viewport.pixelsFromInches(ACSDisplaySizes.TriadSizeInches);\n testPtView.x = AuxCoordSystemState.limitRange(offset, screenRange.x - offset, testPtView.x);\n testPtView.y = AuxCoordSystemState.limitRange(offset, screenRange.y - offset, testPtView.y);\n }\n\n // Limit point to NPC box to prevent triad from being clipped from display...\n const originPtNpc = viewport.viewToNpc(testPtView);\n originPtNpc.x = AuxCoordSystemState.limitRange(0, 1, originPtNpc.x);\n originPtNpc.y = AuxCoordSystemState.limitRange(0, 1, originPtNpc.y);\n originPtNpc.z = AuxCoordSystemState.limitRange(0, 1, originPtNpc.z);\n viewport.npcToView(originPtNpc, testPtView);\n viewport.viewToWorld(testPtView, drawOrigin);\n\n return inView;\n }\n\n private getAdjustedColor(inColor: ColorDef, isFill: boolean, viewport: Viewport, options: ACSDisplayOptions): ColorDef {\n let color;\n if ((options & ACSDisplayOptions.Hilite) !== ACSDisplayOptions.None) {\n color = viewport.hilite.color;\n } else if ((options & ACSDisplayOptions.Active) !== ACSDisplayOptions.None) {\n color = inColor.equals(ColorDef.white) ? viewport.getContrastToBackgroundColor() : inColor;\n } else {\n color = ColorDef.from(150, 150, 150, 0);\n }\n\n color = color.adjustedForContrast(viewport.view.backgroundColor);\n\n if (isFill)\n color = color.withTransparency((options & (ACSDisplayOptions.Deemphasized | ACSDisplayOptions.Dynamics)) !== ACSDisplayOptions.None ? 225 : 200);\n else\n color = color.withTransparency((options & ACSDisplayOptions.Deemphasized) !== ACSDisplayOptions.None ? 150 : 75);\n\n return color;\n }\n\n private addAxisLabel(builder: GraphicBuilder, axis: number, options: ACSDisplayOptions, vp: Viewport) {\n const color = ColorDef.white;\n const lineColor = this.getAdjustedColor(color, false, vp, options);\n builder.setSymbology(lineColor, lineColor, 2);\n\n const linePts1: Point3d[] = [];\n if (0 === axis) {\n linePts1[0] = Point3d.create(ACSDisplaySizes.LabelStart, -ACSDisplaySizes.LabelWidth);\n linePts1[1] = Point3d.create(ACSDisplaySizes.LabelEnd, ACSDisplaySizes.LabelWidth);\n } else {\n linePts1[0] = Point3d.create(0.0, ACSDisplaySizes.LabelStart);\n linePts1[1] = Point3d.create(0.0, (ACSDisplaySizes.LabelStart + ACSDisplaySizes.LabelEnd) * 0.5);\n }\n builder.addLineString(linePts1);\n\n const linePts2: Point3d[] = []; // NOTE: Don't use same point array, addPointString/addLineString don't deep copy...\n if (0 === axis) {\n linePts2[0] = Point3d.create(ACSDisplaySizes.LabelStart, ACSDisplaySizes.LabelWidth);\n linePts2[1] = Point3d.create(ACSDisplaySizes.LabelEnd, -ACSDisplaySizes.LabelWidth);\n } else {\n linePts2[0] = Point3d.create(ACSDisplaySizes.LabelWidth, ACSDisplaySizes.LabelEnd);\n linePts2[1] = Point3d.create(0.0, (ACSDisplaySizes.LabelStart + ACSDisplaySizes.LabelEnd) * 0.5);\n linePts2[2] = Point3d.create(-ACSDisplaySizes.LabelWidth, ACSDisplaySizes.LabelEnd);\n }\n builder.addLineString(linePts2);\n }\n\n private addAxis(builder: GraphicBuilder, axis: number, options: ACSDisplayOptions, vp: Viewport) {\n const color = (0 === axis ? ColorDef.red : (1 === axis ? ColorDef.green : ColorDef.blue));\n const lineColor = this.getAdjustedColor(color, false, vp, options);\n const fillColor = this.getAdjustedColor(color, true, vp, options);\n\n if (axis === 2) {\n builder.setSymbology(lineColor, lineColor, 6);\n builder.addPointString([Point3d.create(0.0, 0.0, ACSDisplaySizes.ZAxisLength)]); // NOTE: ACS origin point will be drawn separately as a pickable world decoration...\n\n const linePts2: Point3d[] = [Point3d.create(), Point3d.create()]; // NOTE: Don't use same point array, addPointString/addLineString don't deep copy...\n linePts2[1].z = ACSDisplaySizes.ZAxisLength;\n builder.setSymbology(lineColor, lineColor, 1, (options & ACSDisplayOptions.Dynamics) === ACSDisplayOptions.None ? LinePixels.Solid : LinePixels.Code2);\n builder.addLineString(linePts2);\n\n const scale = ACSDisplaySizes.ArrowTipWidth / 2;\n const center = Point3d.create();\n const viewRMatrix = vp.rotation;\n\n const xVec = viewRMatrix.getRow(0);\n const yVec = viewRMatrix.getRow(1);\n\n builder.placement.matrix.multiplyTransposeVectorInPlace(xVec);\n builder.placement.matrix.multiplyTransposeVectorInPlace(yVec);\n\n xVec.normalize(xVec);\n yVec.normalize(yVec);\n\n const ellipse = Arc3d.createScaledXYColumns(center, Matrix3d.createColumns(xVec, yVec, Vector3d.create()), scale, scale, AngleSweep.createStartEnd(Angle.createRadians(0), Angle.createRadians(Math.PI * 2)));\n builder.addArc(ellipse, false, false);\n\n builder.setBlankingFill(fillColor);\n builder.addArc(ellipse, true, true);\n return;\n }\n\n const shapePts: Point3d[] = [];\n shapePts[0] = Point3d.create(ACSDisplaySizes.ArrowTipEnd, 0.0);\n shapePts[1] = Point3d.create(ACSDisplaySizes.ArrowTipFlange, ACSDisplaySizes.ArrowTipWidth);\n shapePts[2] = Point3d.create(ACSDisplaySizes.ArrowTipStart, ACSDisplaySizes.ArrowBaseWidth);\n shapePts[3] = Point3d.create(ACSDisplaySizes.ArrowBaseStart, ACSDisplaySizes.ArrowBaseWidth);\n shapePts[4] = Point3d.create(ACSDisplaySizes.ArrowBaseStart, -ACSDisplaySizes.ArrowBaseWidth);\n shapePts[5] = Point3d.create(ACSDisplaySizes.ArrowTipStart, -ACSDisplaySizes.ArrowBaseWidth);\n shapePts[6] = Point3d.create(ACSDisplaySizes.ArrowTipFlange, -ACSDisplaySizes.ArrowTipWidth);\n shapePts[7] = shapePts[0].clone();\n if (1 === axis)\n shapePts.forEach((tmpPt) => tmpPt.set(tmpPt.y, tmpPt.x));\n\n builder.setSymbology(lineColor, lineColor, 1, (options & ACSDisplayOptions.Dynamics) === ACSDisplayOptions.None ? LinePixels.Solid : LinePixels.Code2);\n builder.addLineString(shapePts);\n\n this.addAxisLabel(builder, axis, options, vp);\n\n builder.setBlankingFill(fillColor);\n builder.addShape(shapePts);\n }\n\n /** Returns a GraphicBuilder for this AuxCoordSystemState. */\n private createGraphicBuilder(context: DecorateContext, options: ACSDisplayOptions): GraphicBuilder {\n const checkOutOfView = (options & ACSDisplayOptions.CheckVisible) !== ACSDisplayOptions.None;\n const drawOrigin = this.getOrigin();\n\n if (checkOutOfView && !AuxCoordSystemState.isOriginInView(drawOrigin, context.viewport, true))\n options = options | ACSDisplayOptions.Deemphasized;\n\n let pixelSize = context.viewport.pixelsFromInches(ACSDisplaySizes.TriadSizeInches);\n\n if ((options & ACSDisplayOptions.Deemphasized) !== ACSDisplayOptions.None)\n pixelSize *= 0.8;\n else if ((options & ACSDisplayOptions.Active) !== ACSDisplayOptions.None)\n pixelSize *= 0.9;\n\n const exaggerate = context.viewport.view.getAspectRatioSkew();\n const scale = context.getPixelSizeAtPoint(drawOrigin) * pixelSize;\n const rMatrix = this.getRotation();\n\n rMatrix.transposeInPlace();\n rMatrix.scaleColumns(scale, scale / exaggerate, scale, rMatrix);\n const transform = Transform.createRefs(drawOrigin, rMatrix);\n\n const builder = context.createGraphicBuilder(GraphicType.WorldOverlay, transform);\n const vp = context.viewport;\n this.addAxis(builder, 0, options, vp);\n this.addAxis(builder, 1, options, vp);\n this.addAxis(builder, 2, options, vp);\n return builder;\n }\n\n public display(context: DecorateContext, options: ACSDisplayOptions) {\n const builder = this.createGraphicBuilder(context, options);\n if (undefined !== builder)\n context.addDecorationFromBuilder(builder);\n }\n}\n\n/** The state of an AuxCoordSystem2d element in the frontend\n * @public\n * @extensions\n */\nexport class AuxCoordSystem2dState extends AuxCoordSystemState implements AuxCoordSystem2dProps {\n public static override get className() { return \"AuxCoordSystem2d\"; }\n public readonly origin: Point2d;\n public angle: number; // in degrees\n private readonly _rMatrix: Matrix3d;\n\n constructor(props: AuxCoordSystem2dProps, iModel: IModelConnection) {\n super(props, iModel);\n this.origin = Point2d.fromJSON(props.origin);\n this.angle = JsonUtils.asDouble(props.angle);\n this._rMatrix = Matrix3d.createRotationAroundVector(Vector3d.unitZ(), Angle.createDegrees(this.angle)) ?? Matrix3d.createIdentity();\n }\n\n public override toJSON(): AuxCoordSystem2dProps {\n const val = super.toJSON() as AuxCoordSystem2dProps;\n val.origin = this.origin;\n val.angle = this.angle;\n return val;\n }\n\n public getOrigin(result?: Point3d): Point3d { return Point3d.createFrom(this.origin, result); }\n public setOrigin(val: XYAndZ | XAndY): void { this.origin.setFrom(val); }\n public getRotation(result?: Matrix3d): Matrix3d { return this._rMatrix.clone(result); }\n public setRotation(val: Matrix3d): void {\n this._rMatrix.setFrom(val);\n const angle = YawPitchRollAngles.createFromMatrix3d(val);\n this.angle = (undefined !== angle ? angle.yaw.degrees : 0.0);\n }\n}\n\n/** The state of an AuxCoordSystem3d element in the frontend\n * @public\n * @extensions\n */\nexport class AuxCoordSystem3dState extends AuxCoordSystemState implements AuxCoordSystem3dProps {\n public static override get className() { return \"AuxCoordSystem3d\"; }\n public readonly origin: Point3d;\n public yaw: number; // in degrees\n public pitch: number; // in degrees\n public roll: number; // in degrees\n private readonly _rMatrix: Matrix3d;\n\n constructor(props: AuxCoordSystem3dProps, iModel: IModelConnection) {\n super(props, iModel);\n this.origin = Point3d.fromJSON(props.origin);\n this.yaw = JsonUtils.asDouble(props.yaw);\n this.pitch = JsonUtils.asDouble(props.pitch);\n this.roll = JsonUtils.asDouble(props.roll);\n const angles = new YawPitchRollAngles(Angle.createDegrees(this.yaw), Angle.createDegrees(this.pitch), Angle.createDegrees(this.roll));\n this._rMatrix = angles.toMatrix3d();\n }\n\n public override toJSON(): AuxCoordSystem3dProps {\n const val = super.toJSON() as AuxCoordSystem3dProps;\n val.origin = this.origin;\n val.yaw = this.yaw;\n val.pitch = this.pitch;\n val.roll = this.roll;\n return val;\n }\n\n public getOrigin(result?: Point3d): Point3d { return Point3d.createFrom(this.origin, result); }\n public setOrigin(val: XYAndZ | XAndY): void { this.origin.setFrom(val); }\n public getRotation(result?: Matrix3d): Matrix3d { return this._rMatrix.clone(result); }\n public setRotation(rMatrix: Matrix3d): void {\n this._rMatrix.setFrom(rMatrix);\n const angles = YawPitchRollAngles.createFromMatrix3d(rMatrix);\n this.yaw = (undefined !== angles ? angles.yaw.degrees : 0.0);\n this.pitch = (undefined !== angles ? angles.pitch.degrees : 0.0);\n this.roll = (undefined !== angles ? angles.roll.degrees : 0.0);\n }\n}\n\n/** The state of an AuxCoordSystemSpatial element in the frontend\n * @public\n * @extensions\n */\nexport class AuxCoordSystemSpatialState extends AuxCoordSystem3dState {\n public static override get className() { return \"AuxCoordSystemSpatial\"; }\n}\n"]}
@@ -300,7 +300,7 @@ class BriefcaseConnection extends IModelConnection_1.IModelConnection {
300
300
  */
301
301
  async pushChanges(description) {
302
302
  this.requireTimeline();
303
- return IpcApp_1.IpcApp.appFunctionIpc.pushChanges(this.key, description);
303
+ return this.changeset = await IpcApp_1.IpcApp.appFunctionIpc.pushChanges(this.key, description);
304
304
  }
305
305
  /** The current graphical editing scope, if one is in progress.
306
306
  * @see [[enterEditingScope]] to begin graphical editing.
@@ -1 +1 @@
1
- {"version":3,"file":"BriefcaseConnection.js","sourceRoot":"","sources":["../../src/BriefcaseConnection.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 IModelConnection\n */\n\nimport { assert, BeEvent, CompressedId64Set, Guid, GuidString, Id64Set, Id64String, IModelStatus, OpenMode } from \"@itwin/core-bentley\";\nimport {\n BriefcaseConnectionProps, ChangesetIndex, ChangesetIndexAndId, getPullChangesIpcChannel, IModelError,\n PullChangesOptions as IpcAppPullChangesOptions, LockState, OpenBriefcaseProps, StandaloneOpenOptions,\n} from \"@itwin/core-common\";\nimport { BriefcaseTxns } from \"./BriefcaseTxns\";\nimport { GraphicalEditingScope } from \"./GraphicalEditingScope\";\nimport { IModelApp } from \"./IModelApp\";\nimport { IModelConnection } from \"./IModelConnection\";\nimport { IpcApp } from \"./IpcApp\";\nimport { disposeTileTreesForGeometricModels } from \"./tile/internal\";\nimport { Viewport } from \"./Viewport\";\n\n/**\n * Download progress information.\n * @public\n */\nexport interface DownloadProgressInfo {\n /** Bytes downloaded. */\n loaded: number;\n /** Total size of the download in bytes. */\n total: number;\n}\n\n/**\n * Called to show progress during a download.\n * @public\n */\nexport type OnDownloadProgress = (progress: DownloadProgressInfo) => void;\n\n/**\n * Partial interface of AbortSignal.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal\n * @beta\n */\nexport interface GenericAbortSignal {\n /** Add Listener for abort signal. */\n addEventListener: (type: \"abort\", listener: (this: GenericAbortSignal, ev: any) => any) => void;\n /** Remove Listener for abort signal. */\n removeEventListener: (type: \"abort\", listener: (this: GenericAbortSignal, ev: any) => any) => void;\n}\n\n/**\n * Options for pulling iModel changes.\n * @public\n */\nexport interface PullChangesOptions {\n /** Function called regularly to report progress of changes download. */\n downloadProgressCallback?: OnDownloadProgress;\n /** Interval for calling progress callback (in milliseconds). */\n progressInterval?: number;\n /** Signal for cancelling the download.\n * @beta\n */\n abortSignal?: GenericAbortSignal;\n}\n\n/** Keeps track of changes to models, buffering them until synchronization points.\n * While a GraphicalEditingScope is open, the changes are buffered until the scope exits, at which point they are processed.\n * Otherwise, the buffered changes are processed after undo/redo, commit, or pull+merge changes.\n */\nclass ModelChangeMonitor {\n private _editingScope?: GraphicalEditingScope;\n private readonly _briefcase: BriefcaseConnection;\n private readonly _deletedModels = new Set<string>();\n private readonly _modelIdToGuid = new Map<string, string>();\n private readonly _removals: VoidFunction[] = [];\n\n public constructor(briefcase: BriefcaseConnection) {\n this._briefcase = briefcase;\n\n // Buffer updated geometry guids.\n this._removals.push(briefcase.txns.onModelGeometryChanged.addListener((changes) => {\n for (const change of changes) {\n this._deletedModels.delete(change.id);\n this._modelIdToGuid.set(change.id, change.guid);\n }\n }));\n\n // Buffer deletions of models.\n this._removals.push(briefcase.txns.onModelsChanged.addListener((changes) => {\n if (changes.deleted) {\n for (const id of CompressedId64Set.iterable(changes.deleted)) {\n this._modelIdToGuid.delete(id);\n this._deletedModels.add(id);\n }\n }\n }));\n\n // Outside of an editing scope, we want to update viewport contents after commit, undo/redo, or merging changes.\n const maybeProcess = async () => {\n if (this.editingScope)\n return;\n\n const modelIds = Array.from(this._modelIdToGuid.keys());\n if (modelIds.length > 0)\n await IModelApp.tileAdmin.purgeTileTrees(this._briefcase, modelIds);\n\n this.processBuffered();\n };\n\n this._removals.push(briefcase.txns.onCommitted.addListener(maybeProcess));\n this._removals.push(briefcase.txns.onReplayedExternalTxns.addListener(maybeProcess));\n this._removals.push(briefcase.txns.onAfterUndoRedo.addListener(maybeProcess));\n this._removals.push(briefcase.txns.onChangesPulled.addListener(maybeProcess));\n }\n\n public async close(): Promise<void> {\n for (const removal of this._removals)\n removal();\n\n this._removals.length = 0;\n\n if (this._editingScope) {\n await this._editingScope.exit();\n this._editingScope = undefined;\n }\n }\n\n public get editingScope(): GraphicalEditingScope | undefined {\n return this._editingScope;\n }\n\n public async enterEditingScope(): Promise<GraphicalEditingScope> {\n if (this._editingScope)\n throw new Error(\"Cannot create an editing scope for an iModel that already has one\");\n\n this._editingScope = await GraphicalEditingScope.enter(this._briefcase);\n\n const removeGeomListener = this._editingScope.onGeometryChanges.addListener((changes) => {\n const modelIds = [];\n for (const change of changes)\n modelIds.push(change.id);\n\n this.invalidateScenes(modelIds);\n });\n\n this._editingScope.onExited.addOnce((scope) => {\n assert(scope === this._editingScope);\n this._editingScope = undefined;\n removeGeomListener();\n this.processBuffered();\n });\n\n return this._editingScope;\n }\n\n private processBuffered(): void {\n const models = this._briefcase.models;\n for (const [id, guid] of this._modelIdToGuid) {\n const model = models.getLoaded(id)?.asGeometricModel;\n if (model)\n model.geometryGuid = guid;\n }\n\n const modelIds = new Set<string>(this._modelIdToGuid.keys());\n for (const deleted of this._deletedModels) {\n modelIds.add(deleted);\n models.unload(deleted);\n }\n\n this.invalidateScenes(modelIds);\n disposeTileTreesForGeometricModels(modelIds, this._briefcase);\n\n this._briefcase.onBufferedModelChanges.raiseEvent(modelIds);\n\n this._modelIdToGuid.clear();\n this._deletedModels.clear();\n }\n\n private invalidateScenes(changedModels: Iterable<Id64String>): void {\n for (const user of IModelApp.tileAdmin.tileUsers) {\n if (user instanceof Viewport && user.iModel === this._briefcase) {\n for (const modelId of changedModels) {\n if (user.view.viewsModel(modelId)) {\n user.invalidateScene();\n user.setFeatureOverrideProviderChanged();\n break;\n }\n }\n }\n }\n }\n}\n\n/**\n * Provides access to lock information in the iModel.\n * @see [[BriefcaseConnection.locks]]\n * @alpha\n */\nexport interface LockService {\n /** Get all elements with exclusive locks owned by other briefcases. */\n getExclusiveForeignLocks(): Promise<Id64Set>;\n /** Get all elements with shared locks owned by other briefcases. */\n getSharedForeignLocks(): Promise<Id64Set>;\n /** Check whether it's possible to acquire a lock for the element. */\n checkElementLockAvailability(elementId: Id64String, lock: LockState): Promise<boolean>;\n}\n\n/** Function for creating a [[LockService]] for a [[BriefcaseConnection]].\n * @alpha\n */\nexport type LockServiceFactory = (iModel: BriefcaseConnection) => Promise<LockService>;\n\n/** Settings that can be used to control the behavior of [[Tool]]s that modify a [[BriefcaseConnection]].\n * For example, tools that want to create new elements can consult the briefcase's editor tool settings to\n * determine into which model and category to insert the elements.\n * Specialized tools are free to ignore these settings.\n * @see [[BriefcaseConnection.editorToolSettings]] to query or modify the current settings for a briefcase.\n * @see [CreateElementTool]($editor-frontend) for an example of a tool that uses these settings.\n * @beta\n */\nexport class BriefcaseEditorToolSettings {\n private _category?: Id64String;\n private _model?: Id64String;\n\n /** An event raised just after the default [[category]] is changed. */\n public readonly onCategoryChanged = new BeEvent<(previousCategory: Id64String | undefined) => void>();\n\n /** An event raised just after the default [[model]] is changed. */\n public readonly onModelChanged = new BeEvent<(previousModel: Id64String | undefined) => void>();\n\n /** The [Category]($backend) into which new elements should be inserted by default.\n * Specialized tools are free to ignore this setting and instead use their own logic to select an appropriate category.\n * @see [[onCategoryChanged]] to be notified when this property is modified.\n * @see [CreateElementTool.targetCategory]($editor-frontend) for an example of a tool that uses this setting.\n */\n public get category(): Id64String | undefined {\n return this._category;\n }\n public set category(category: Id64String | undefined) {\n const previousCategory = this.category;\n if (category !== this.category) {\n this._category = category;\n this.onCategoryChanged.raiseEvent(previousCategory);\n }\n }\n\n /** The [Model]($backend) into which new elements should be inserted by default.\n * Specialized tools are free to ignore this setting and instead use their own logic to select an appropriate model.\n * @see [[onModelChanged]] to be notified when this property is modified.\n * @see [CreateElementTool.targetModelId]($editor-frontend) for an example of a tool that uses this setting.\n */\n public get model(): Id64String | undefined {\n return this._model;\n }\n public set model(model: Id64String | undefined) {\n const previousModel = this.model;\n if (model !== this.model) {\n this._model = model;\n this.onModelChanged.raiseEvent(previousModel);\n }\n }\n}\n\n/** A connection to an editable briefcase on the backend. This class uses [Ipc]($docs/learning/IpcInterface.md) to communicate\n * to the backend and may only be used by [[IpcApp]]s.\n * @public\n */\nexport class BriefcaseConnection extends IModelConnection {\n protected _isClosed?: boolean;\n private readonly _modelsMonitor: ModelChangeMonitor;\n private _locks?: LockService;\n\n /** The ID of the briefcase.\n * @beta\n */\n public readonly briefcaseId?: number;\n\n /** Default settings that can be used to control the behavior of [[Tool]]s that modify this briefcase.\n * @beta\n */\n public readonly editorToolSettings = new BriefcaseEditorToolSettings();\n\n /** Manages local changes to the briefcase via [Txns]($docs/learning/InteractiveEditing.md). */\n public readonly txns: BriefcaseTxns;\n\n /** Information about locks held on this iModel.\n * @note This is intended to be used by tools and other UI elements, to provide information about the current lock state. Implementations are expected to cache lock information and so may not reflect changes to locks immediately.\n * @alpha\n */\n public get locks(): LockService | undefined { return this._locks; }\n\n public override isBriefcaseConnection(): this is BriefcaseConnection { return true; }\n\n /** The Guid that identifies the iTwin that owns this iModel. */\n public override get iTwinId(): GuidString { return super.iTwinId ?? Guid.empty; } // GuidString | undefined for IModelConnection, but required for BriefcaseConnection\n\n /** The Guid that identifies this iModel. */\n public override get iModelId(): GuidString { return super.iModelId ?? Guid.empty; } // GuidString | undefined for IModelConnection, but required for BriefcaseConnection\n\n protected constructor(props: BriefcaseConnectionProps, openMode: OpenMode) {\n super(props);\n this._openMode = openMode;\n this.briefcaseId = props.briefcaseId;\n this.txns = new BriefcaseTxns(this);\n this._modelsMonitor = new ModelChangeMonitor(this);\n if (OpenMode.ReadWrite === this._openMode)\n this.txns.onAfterUndoRedo.addListener(async () => { await IModelApp.toolAdmin.restartPrimitiveTool(); });\n\n this.categories.cache.attachToBriefcase(this);\n }\n\n /** Open a BriefcaseConnection to a [BriefcaseDb]($backend). */\n public static async openFile(briefcaseProps: OpenBriefcaseProps): Promise<BriefcaseConnection>;\n\n /** Open a BriefcaseConnection to a [BriefcaseDb]($backend).\n * @alpha\n */\n public static async openFile(briefcaseProps: OpenBriefcaseProps, lockServiceFactory?: LockServiceFactory): Promise<BriefcaseConnection>\n\n public static async openFile(briefcaseProps: OpenBriefcaseProps, lockServiceFactory?: LockServiceFactory): Promise<BriefcaseConnection> {\n const iModelProps = await IpcApp.appFunctionIpc.openBriefcase(briefcaseProps);\n const connection = new this({ ...briefcaseProps, ...iModelProps }, briefcaseProps.readonly ? OpenMode.Readonly : OpenMode.ReadWrite);\n if (lockServiceFactory)\n connection._locks = await lockServiceFactory(connection);\n\n IModelConnection.onOpen.raiseEvent(connection);\n return connection;\n }\n\n /** Open a BriefcaseConnection to a [StandaloneDb]($backend)\n * @note StandaloneDbs, by definition, may not push or pull changes. Attempting to do so will throw exceptions.\n */\n public static async openStandalone(filePath: string, openMode: OpenMode = OpenMode.ReadWrite, opts?: StandaloneOpenOptions): Promise<BriefcaseConnection> {\n const openResponse = await IpcApp.appFunctionIpc.openStandalone(filePath, openMode, opts);\n const connection = new this(openResponse, openMode);\n IModelConnection.onOpen.raiseEvent(connection);\n return connection;\n }\n\n /** Returns `true` if [[close]] has already been called. */\n public get isClosed(): boolean { return this._isClosed === true; }\n\n /**\n * Close this BriefcaseConnection.\n * @note make sure to call [[saveChanges]] before calling this method. Unsaved local changes are abandoned.\n */\n public async close(): Promise<void> {\n if (this.isClosed)\n return;\n\n await this._modelsMonitor.close();\n\n this.beforeClose();\n this.txns[Symbol.dispose]();\n\n this._isClosed = true;\n await IpcApp.appFunctionIpc.closeIModel(this._fileKey);\n }\n\n protected requireTimeline() {\n if (this.iTwinId === Guid.empty)\n throw new IModelError(IModelStatus.WrongIModel, \"iModel has no timeline\");\n }\n\n /** Query if there are any pending Txns in this briefcase that are waiting to be pushed. */\n public async hasPendingTxns(): Promise<boolean> { // eslint-disable-line @itwin/prefer-get\n return this.txns.hasPendingTxns();\n }\n\n /** Commit pending changes to this briefcase.\n * @param description Optional description of the changes.\n * @deprecated in 5.9.0 - will not be removed until after 2027-05-04. Use methods on EditCommand instead.\n */\n public async saveChanges(description?: string): Promise<void> {\n await IpcApp.appFunctionIpc.saveChanges(this.key, description); // eslint-disable-line @typescript-eslint/no-deprecated\n }\n\n /** Abandon pending changes to this briefcase.\n * @deprecated in 5.9.0 - will not be removed until after 2027-05-04. Use methods on EditCommand instead.\n */\n public async abandonChanges(): Promise<void> {\n await IpcApp.appFunctionIpc.abandonChanges(this.key); // eslint-disable-line @typescript-eslint/no-deprecated\n }\n\n /** Pull (and potentially merge if there are local changes) up to a specified changeset from iModelHub into this briefcase\n * @param toIndex The changeset index to pull changes to. If `undefined`, pull all changes.\n * @param options Options for pulling changes.\n * @see [[BriefcaseTxns.onChangesPulled]] for the event dispatched after changes are pulled.\n */\n public async pullChanges(toIndex?: ChangesetIndex, options?: PullChangesOptions): Promise<void> {\n const removeListeners: VoidFunction[] = [];\n const shouldReportProgress = !!options?.downloadProgressCallback;\n\n if (shouldReportProgress) {\n const handleProgress = (_evt: Event, data: { loaded: number, total: number }) => {\n options?.downloadProgressCallback?.(data);\n };\n\n const removeProgressListener = IpcApp.addListener(\n getPullChangesIpcChannel(this.iModelId),\n handleProgress,\n );\n removeListeners.push(removeProgressListener);\n }\n\n if (options?.abortSignal) {\n const abort = () => void IpcApp.appFunctionIpc.cancelPullChangesRequest(this.key);\n options?.abortSignal.addEventListener(\"abort\", abort);\n removeListeners.push(() => options?.abortSignal?.removeEventListener(\"abort\", abort));\n }\n\n this.requireTimeline();\n const ipcAppOptions: IpcAppPullChangesOptions = {\n reportProgress: shouldReportProgress,\n progressInterval: options?.progressInterval,\n enableCancellation: !!options?.abortSignal,\n };\n try {\n this.changeset = await IpcApp.appFunctionIpc.pullChanges(this.key, toIndex, ipcAppOptions);\n } finally {\n removeListeners.forEach((remove) => remove());\n }\n await this.invalidateSchemaViewIfChanged();\n }\n\n /** Create a changeset from local Txns and push to iModelHub. On success, clear Txn table.\n * @param description The description for the changeset\n * @returns the changesetId of the pushed changes\n * @see [[BriefcaseTxns.onChangesPushed]] for the event dispatched after changes are pushed.\n */\n public async pushChanges(description: string): Promise<ChangesetIndexAndId> {\n this.requireTimeline();\n return IpcApp.appFunctionIpc.pushChanges(this.key, description);\n }\n\n /** The current graphical editing scope, if one is in progress.\n * @see [[enterEditingScope]] to begin graphical editing.\n */\n public get editingScope(): GraphicalEditingScope | undefined {\n return this._modelsMonitor.editingScope;\n }\n\n /** Return whether graphical editing is supported for this briefcase. It is not supported if the briefcase is read-only, or the briefcase contains a version of\n * the BisCore ECSchema older than v0.1.11.\n * @see [[enterEditingScope]] to enable graphical editing.\n */\n public async supportsGraphicalEditing(): Promise<boolean> {\n return IpcApp.appFunctionIpc.isGraphicalEditingSupported(this.key);\n }\n\n /** Begin a new graphical editing scope.\n * @throws Error if an editing scope already exists or one could not be created.\n * @see [[GraphicalEditingScope.exit]] to exit the scope.\n * @see [[supportsGraphicalEditing]] to determine whether this method should be expected to succeed.\n * @see [[editingScope]] to obtain the current editing scope, if one is in progress.\n */\n public async enterEditingScope(): Promise<GraphicalEditingScope> {\n return this._modelsMonitor.enterEditingScope();\n }\n\n /** Strictly for tests - dispatched from ModelChangeMonitor.processBuffered.\n * @internal\n */\n public readonly onBufferedModelChanges = new BeEvent<(changedModelIds: Set<string>) => void>();\n}\n"]}
1
+ {"version":3,"file":"BriefcaseConnection.js","sourceRoot":"","sources":["../../src/BriefcaseConnection.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 IModelConnection\n */\n\nimport { assert, BeEvent, CompressedId64Set, Guid, GuidString, Id64Set, Id64String, IModelStatus, OpenMode } from \"@itwin/core-bentley\";\nimport {\n BriefcaseConnectionProps, ChangesetIndex, ChangesetIndexAndId, getPullChangesIpcChannel, IModelError,\n PullChangesOptions as IpcAppPullChangesOptions, LockState, OpenBriefcaseProps, StandaloneOpenOptions,\n} from \"@itwin/core-common\";\nimport { BriefcaseTxns } from \"./BriefcaseTxns\";\nimport { GraphicalEditingScope } from \"./GraphicalEditingScope\";\nimport { IModelApp } from \"./IModelApp\";\nimport { IModelConnection } from \"./IModelConnection\";\nimport { IpcApp } from \"./IpcApp\";\nimport { disposeTileTreesForGeometricModels } from \"./tile/internal\";\nimport { Viewport } from \"./Viewport\";\n\n/**\n * Download progress information.\n * @public\n */\nexport interface DownloadProgressInfo {\n /** Bytes downloaded. */\n loaded: number;\n /** Total size of the download in bytes. */\n total: number;\n}\n\n/**\n * Called to show progress during a download.\n * @public\n */\nexport type OnDownloadProgress = (progress: DownloadProgressInfo) => void;\n\n/**\n * Partial interface of AbortSignal.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal\n * @beta\n */\nexport interface GenericAbortSignal {\n /** Add Listener for abort signal. */\n addEventListener: (type: \"abort\", listener: (this: GenericAbortSignal, ev: any) => any) => void;\n /** Remove Listener for abort signal. */\n removeEventListener: (type: \"abort\", listener: (this: GenericAbortSignal, ev: any) => any) => void;\n}\n\n/**\n * Options for pulling iModel changes.\n * @public\n */\nexport interface PullChangesOptions {\n /** Function called regularly to report progress of changes download. */\n downloadProgressCallback?: OnDownloadProgress;\n /** Interval for calling progress callback (in milliseconds). */\n progressInterval?: number;\n /** Signal for cancelling the download.\n * @beta\n */\n abortSignal?: GenericAbortSignal;\n}\n\n/** Keeps track of changes to models, buffering them until synchronization points.\n * While a GraphicalEditingScope is open, the changes are buffered until the scope exits, at which point they are processed.\n * Otherwise, the buffered changes are processed after undo/redo, commit, or pull+merge changes.\n */\nclass ModelChangeMonitor {\n private _editingScope?: GraphicalEditingScope;\n private readonly _briefcase: BriefcaseConnection;\n private readonly _deletedModels = new Set<string>();\n private readonly _modelIdToGuid = new Map<string, string>();\n private readonly _removals: VoidFunction[] = [];\n\n public constructor(briefcase: BriefcaseConnection) {\n this._briefcase = briefcase;\n\n // Buffer updated geometry guids.\n this._removals.push(briefcase.txns.onModelGeometryChanged.addListener((changes) => {\n for (const change of changes) {\n this._deletedModels.delete(change.id);\n this._modelIdToGuid.set(change.id, change.guid);\n }\n }));\n\n // Buffer deletions of models.\n this._removals.push(briefcase.txns.onModelsChanged.addListener((changes) => {\n if (changes.deleted) {\n for (const id of CompressedId64Set.iterable(changes.deleted)) {\n this._modelIdToGuid.delete(id);\n this._deletedModels.add(id);\n }\n }\n }));\n\n // Outside of an editing scope, we want to update viewport contents after commit, undo/redo, or merging changes.\n const maybeProcess = async () => {\n if (this.editingScope)\n return;\n\n const modelIds = Array.from(this._modelIdToGuid.keys());\n if (modelIds.length > 0)\n await IModelApp.tileAdmin.purgeTileTrees(this._briefcase, modelIds);\n\n this.processBuffered();\n };\n\n this._removals.push(briefcase.txns.onCommitted.addListener(maybeProcess));\n this._removals.push(briefcase.txns.onReplayedExternalTxns.addListener(maybeProcess));\n this._removals.push(briefcase.txns.onAfterUndoRedo.addListener(maybeProcess));\n this._removals.push(briefcase.txns.onChangesPulled.addListener(maybeProcess));\n }\n\n public async close(): Promise<void> {\n for (const removal of this._removals)\n removal();\n\n this._removals.length = 0;\n\n if (this._editingScope) {\n await this._editingScope.exit();\n this._editingScope = undefined;\n }\n }\n\n public get editingScope(): GraphicalEditingScope | undefined {\n return this._editingScope;\n }\n\n public async enterEditingScope(): Promise<GraphicalEditingScope> {\n if (this._editingScope)\n throw new Error(\"Cannot create an editing scope for an iModel that already has one\");\n\n this._editingScope = await GraphicalEditingScope.enter(this._briefcase);\n\n const removeGeomListener = this._editingScope.onGeometryChanges.addListener((changes) => {\n const modelIds = [];\n for (const change of changes)\n modelIds.push(change.id);\n\n this.invalidateScenes(modelIds);\n });\n\n this._editingScope.onExited.addOnce((scope) => {\n assert(scope === this._editingScope);\n this._editingScope = undefined;\n removeGeomListener();\n this.processBuffered();\n });\n\n return this._editingScope;\n }\n\n private processBuffered(): void {\n const models = this._briefcase.models;\n for (const [id, guid] of this._modelIdToGuid) {\n const model = models.getLoaded(id)?.asGeometricModel;\n if (model)\n model.geometryGuid = guid;\n }\n\n const modelIds = new Set<string>(this._modelIdToGuid.keys());\n for (const deleted of this._deletedModels) {\n modelIds.add(deleted);\n models.unload(deleted);\n }\n\n this.invalidateScenes(modelIds);\n disposeTileTreesForGeometricModels(modelIds, this._briefcase);\n\n this._briefcase.onBufferedModelChanges.raiseEvent(modelIds);\n\n this._modelIdToGuid.clear();\n this._deletedModels.clear();\n }\n\n private invalidateScenes(changedModels: Iterable<Id64String>): void {\n for (const user of IModelApp.tileAdmin.tileUsers) {\n if (user instanceof Viewport && user.iModel === this._briefcase) {\n for (const modelId of changedModels) {\n if (user.view.viewsModel(modelId)) {\n user.invalidateScene();\n user.setFeatureOverrideProviderChanged();\n break;\n }\n }\n }\n }\n }\n}\n\n/**\n * Provides access to lock information in the iModel.\n * @see [[BriefcaseConnection.locks]]\n * @alpha\n */\nexport interface LockService {\n /** Get all elements with exclusive locks owned by other briefcases. */\n getExclusiveForeignLocks(): Promise<Id64Set>;\n /** Get all elements with shared locks owned by other briefcases. */\n getSharedForeignLocks(): Promise<Id64Set>;\n /** Check whether it's possible to acquire a lock for the element. */\n checkElementLockAvailability(elementId: Id64String, lock: LockState): Promise<boolean>;\n}\n\n/** Function for creating a [[LockService]] for a [[BriefcaseConnection]].\n * @alpha\n */\nexport type LockServiceFactory = (iModel: BriefcaseConnection) => Promise<LockService>;\n\n/** Settings that can be used to control the behavior of [[Tool]]s that modify a [[BriefcaseConnection]].\n * For example, tools that want to create new elements can consult the briefcase's editor tool settings to\n * determine into which model and category to insert the elements.\n * Specialized tools are free to ignore these settings.\n * @see [[BriefcaseConnection.editorToolSettings]] to query or modify the current settings for a briefcase.\n * @see [CreateElementTool]($editor-frontend) for an example of a tool that uses these settings.\n * @beta\n */\nexport class BriefcaseEditorToolSettings {\n private _category?: Id64String;\n private _model?: Id64String;\n\n /** An event raised just after the default [[category]] is changed. */\n public readonly onCategoryChanged = new BeEvent<(previousCategory: Id64String | undefined) => void>();\n\n /** An event raised just after the default [[model]] is changed. */\n public readonly onModelChanged = new BeEvent<(previousModel: Id64String | undefined) => void>();\n\n /** The [Category]($backend) into which new elements should be inserted by default.\n * Specialized tools are free to ignore this setting and instead use their own logic to select an appropriate category.\n * @see [[onCategoryChanged]] to be notified when this property is modified.\n * @see [CreateElementTool.targetCategory]($editor-frontend) for an example of a tool that uses this setting.\n */\n public get category(): Id64String | undefined {\n return this._category;\n }\n public set category(category: Id64String | undefined) {\n const previousCategory = this.category;\n if (category !== this.category) {\n this._category = category;\n this.onCategoryChanged.raiseEvent(previousCategory);\n }\n }\n\n /** The [Model]($backend) into which new elements should be inserted by default.\n * Specialized tools are free to ignore this setting and instead use their own logic to select an appropriate model.\n * @see [[onModelChanged]] to be notified when this property is modified.\n * @see [CreateElementTool.targetModelId]($editor-frontend) for an example of a tool that uses this setting.\n */\n public get model(): Id64String | undefined {\n return this._model;\n }\n public set model(model: Id64String | undefined) {\n const previousModel = this.model;\n if (model !== this.model) {\n this._model = model;\n this.onModelChanged.raiseEvent(previousModel);\n }\n }\n}\n\n/** A connection to an editable briefcase on the backend. This class uses [Ipc]($docs/learning/IpcInterface.md) to communicate\n * to the backend and may only be used by [[IpcApp]]s.\n * @public\n */\nexport class BriefcaseConnection extends IModelConnection {\n protected _isClosed?: boolean;\n private readonly _modelsMonitor: ModelChangeMonitor;\n private _locks?: LockService;\n\n /** The ID of the briefcase.\n * @beta\n */\n public readonly briefcaseId?: number;\n\n /** Default settings that can be used to control the behavior of [[Tool]]s that modify this briefcase.\n * @beta\n */\n public readonly editorToolSettings = new BriefcaseEditorToolSettings();\n\n /** Manages local changes to the briefcase via [Txns]($docs/learning/InteractiveEditing.md). */\n public readonly txns: BriefcaseTxns;\n\n /** Information about locks held on this iModel.\n * @note This is intended to be used by tools and other UI elements, to provide information about the current lock state. Implementations are expected to cache lock information and so may not reflect changes to locks immediately.\n * @alpha\n */\n public get locks(): LockService | undefined { return this._locks; }\n\n public override isBriefcaseConnection(): this is BriefcaseConnection { return true; }\n\n /** The Guid that identifies the iTwin that owns this iModel. */\n public override get iTwinId(): GuidString { return super.iTwinId ?? Guid.empty; } // GuidString | undefined for IModelConnection, but required for BriefcaseConnection\n\n /** The Guid that identifies this iModel. */\n public override get iModelId(): GuidString { return super.iModelId ?? Guid.empty; } // GuidString | undefined for IModelConnection, but required for BriefcaseConnection\n\n protected constructor(props: BriefcaseConnectionProps, openMode: OpenMode) {\n super(props);\n this._openMode = openMode;\n this.briefcaseId = props.briefcaseId;\n this.txns = new BriefcaseTxns(this);\n this._modelsMonitor = new ModelChangeMonitor(this);\n if (OpenMode.ReadWrite === this._openMode)\n this.txns.onAfterUndoRedo.addListener(async () => { await IModelApp.toolAdmin.restartPrimitiveTool(); });\n\n this.categories.cache.attachToBriefcase(this);\n }\n\n /** Open a BriefcaseConnection to a [BriefcaseDb]($backend). */\n public static async openFile(briefcaseProps: OpenBriefcaseProps): Promise<BriefcaseConnection>;\n\n /** Open a BriefcaseConnection to a [BriefcaseDb]($backend).\n * @alpha\n */\n public static async openFile(briefcaseProps: OpenBriefcaseProps, lockServiceFactory?: LockServiceFactory): Promise<BriefcaseConnection>\n\n public static async openFile(briefcaseProps: OpenBriefcaseProps, lockServiceFactory?: LockServiceFactory): Promise<BriefcaseConnection> {\n const iModelProps = await IpcApp.appFunctionIpc.openBriefcase(briefcaseProps);\n const connection = new this({ ...briefcaseProps, ...iModelProps }, briefcaseProps.readonly ? OpenMode.Readonly : OpenMode.ReadWrite);\n if (lockServiceFactory)\n connection._locks = await lockServiceFactory(connection);\n\n IModelConnection.onOpen.raiseEvent(connection);\n return connection;\n }\n\n /** Open a BriefcaseConnection to a [StandaloneDb]($backend)\n * @note StandaloneDbs, by definition, may not push or pull changes. Attempting to do so will throw exceptions.\n */\n public static async openStandalone(filePath: string, openMode: OpenMode = OpenMode.ReadWrite, opts?: StandaloneOpenOptions): Promise<BriefcaseConnection> {\n const openResponse = await IpcApp.appFunctionIpc.openStandalone(filePath, openMode, opts);\n const connection = new this(openResponse, openMode);\n IModelConnection.onOpen.raiseEvent(connection);\n return connection;\n }\n\n /** Returns `true` if [[close]] has already been called. */\n public get isClosed(): boolean { return this._isClosed === true; }\n\n /**\n * Close this BriefcaseConnection.\n * @note make sure to call [[saveChanges]] before calling this method. Unsaved local changes are abandoned.\n */\n public async close(): Promise<void> {\n if (this.isClosed)\n return;\n\n await this._modelsMonitor.close();\n\n this.beforeClose();\n this.txns[Symbol.dispose]();\n\n this._isClosed = true;\n await IpcApp.appFunctionIpc.closeIModel(this._fileKey);\n }\n\n protected requireTimeline() {\n if (this.iTwinId === Guid.empty)\n throw new IModelError(IModelStatus.WrongIModel, \"iModel has no timeline\");\n }\n\n /** Query if there are any pending Txns in this briefcase that are waiting to be pushed. */\n public async hasPendingTxns(): Promise<boolean> { // eslint-disable-line @itwin/prefer-get\n return this.txns.hasPendingTxns();\n }\n\n /** Commit pending changes to this briefcase.\n * @param description Optional description of the changes.\n * @deprecated in 5.9.0 - will not be removed until after 2027-05-04. Use methods on EditCommand instead.\n */\n public async saveChanges(description?: string): Promise<void> {\n await IpcApp.appFunctionIpc.saveChanges(this.key, description); // eslint-disable-line @typescript-eslint/no-deprecated\n }\n\n /** Abandon pending changes to this briefcase.\n * @deprecated in 5.9.0 - will not be removed until after 2027-05-04. Use methods on EditCommand instead.\n */\n public async abandonChanges(): Promise<void> {\n await IpcApp.appFunctionIpc.abandonChanges(this.key); // eslint-disable-line @typescript-eslint/no-deprecated\n }\n\n /** Pull (and potentially merge if there are local changes) up to a specified changeset from iModelHub into this briefcase\n * @param toIndex The changeset index to pull changes to. If `undefined`, pull all changes.\n * @param options Options for pulling changes.\n * @see [[BriefcaseTxns.onChangesPulled]] for the event dispatched after changes are pulled.\n */\n public async pullChanges(toIndex?: ChangesetIndex, options?: PullChangesOptions): Promise<void> {\n const removeListeners: VoidFunction[] = [];\n const shouldReportProgress = !!options?.downloadProgressCallback;\n\n if (shouldReportProgress) {\n const handleProgress = (_evt: Event, data: { loaded: number, total: number }) => {\n options?.downloadProgressCallback?.(data);\n };\n\n const removeProgressListener = IpcApp.addListener(\n getPullChangesIpcChannel(this.iModelId),\n handleProgress,\n );\n removeListeners.push(removeProgressListener);\n }\n\n if (options?.abortSignal) {\n const abort = () => void IpcApp.appFunctionIpc.cancelPullChangesRequest(this.key);\n options?.abortSignal.addEventListener(\"abort\", abort);\n removeListeners.push(() => options?.abortSignal?.removeEventListener(\"abort\", abort));\n }\n\n this.requireTimeline();\n const ipcAppOptions: IpcAppPullChangesOptions = {\n reportProgress: shouldReportProgress,\n progressInterval: options?.progressInterval,\n enableCancellation: !!options?.abortSignal,\n };\n try {\n this.changeset = await IpcApp.appFunctionIpc.pullChanges(this.key, toIndex, ipcAppOptions);\n } finally {\n removeListeners.forEach((remove) => remove());\n }\n await this.invalidateSchemaViewIfChanged();\n }\n\n /** Create a changeset from local Txns and push to iModelHub. On success, clear Txn table.\n * @param description The description for the changeset\n * @returns the changesetId of the pushed changes\n * @see [[BriefcaseTxns.onChangesPushed]] for the event dispatched after changes are pushed.\n */\n public async pushChanges(description: string): Promise<ChangesetIndexAndId> {\n this.requireTimeline();\n return this.changeset = await IpcApp.appFunctionIpc.pushChanges(this.key, description);\n }\n\n /** The current graphical editing scope, if one is in progress.\n * @see [[enterEditingScope]] to begin graphical editing.\n */\n public get editingScope(): GraphicalEditingScope | undefined {\n return this._modelsMonitor.editingScope;\n }\n\n /** Return whether graphical editing is supported for this briefcase. It is not supported if the briefcase is read-only, or the briefcase contains a version of\n * the BisCore ECSchema older than v0.1.11.\n * @see [[enterEditingScope]] to enable graphical editing.\n */\n public async supportsGraphicalEditing(): Promise<boolean> {\n return IpcApp.appFunctionIpc.isGraphicalEditingSupported(this.key);\n }\n\n /** Begin a new graphical editing scope.\n * @throws Error if an editing scope already exists or one could not be created.\n * @see [[GraphicalEditingScope.exit]] to exit the scope.\n * @see [[supportsGraphicalEditing]] to determine whether this method should be expected to succeed.\n * @see [[editingScope]] to obtain the current editing scope, if one is in progress.\n */\n public async enterEditingScope(): Promise<GraphicalEditingScope> {\n return this._modelsMonitor.enterEditingScope();\n }\n\n /** Strictly for tests - dispatched from ModelChangeMonitor.processBuffered.\n * @internal\n */\n public readonly onBufferedModelChanges = new BeEvent<(changedModelIds: Set<string>) => void>();\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"DrawingViewState.d.ts","sourceRoot":"","sources":["../../src/DrawingViewState.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DrawingViewState.d.ts","sourceRoot":"","sources":["../../src/DrawingViewState.ts"],"names":[],"mappings":"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"}
@@ -310,14 +310,13 @@ class DrawingViewState extends ViewState_1.ViewState2d {
310
310
  let displaySpatialView = false;
311
311
  try {
312
312
  const ecsql = `
313
- SELECT spatialView,
313
+ SELECT spatialView.Id as spatialViewId,
314
314
  json_extract(jsonProperties, '$.drawingToSpatialTransform') as drawingToSpatialTransform,
315
315
  CAST(json_extract(jsonProperties, '$.displaySpatialView') as BOOLEAN) as displaySpatialView
316
316
  FROM bis.SectionDrawing
317
317
  WHERE ECInstanceId=${this.baseModelId}`;
318
- // eslint-disable-next-line @typescript-eslint/no-deprecated
319
- for await (const row of this.iModel.createQueryReader(ecsql, undefined, { rowFormat: core_common_1.QueryRowFormat.UseJsPropertyNames })) {
320
- spatialView = core_bentley_1.Id64.fromJSON(row.spatialView?.id);
318
+ for await (const row of this.iModel.createQueryReader(ecsql, undefined, { rowFormat: core_common_1.QueryRowFormat.UseECSqlPropertyNames })) {
319
+ spatialView = core_bentley_1.Id64.fromJSON(row.spatialViewId);
321
320
  displaySpatialView = !!row.displaySpatialView;
322
321
  try {
323
322
  drawingToSpatialTransform = JSON.parse(row.drawingToSpatialTransform);
@@ -1 +1 @@
1
- {"version":3,"file":"DrawingViewState.js","sourceRoot":"","sources":["../../src/DrawingViewState.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 Views\n */\n\nimport { assert, dispose, Id64, Id64String } from \"@itwin/core-bentley\";\nimport {\n AxisAlignedBox3d, Frustum, HydrateViewStateRequestProps, HydrateViewStateResponseProps, QueryRowFormat, SectionDrawingViewProps, ViewDefinition2dProps, ViewFlagOverrides, ViewStateProps,\n} from \"@itwin/core-common\";\nimport { Constant, Range3d, Transform, TransformProps, Vector3d } from \"@itwin/core-geometry\";\nimport { CategorySelectorState } from \"./CategorySelectorState\";\nimport { CoordSystem } from \"./CoordSystem\";\nimport { DisplayStyle2dState } from \"./DisplayStyleState\";\nimport { Frustum2d } from \"./Frustum2d\";\nimport { IModelApp } from \"./IModelApp\";\nimport { IModelConnection } from \"./IModelConnection\";\nimport { FeatureSymbology } from \"./render/FeatureSymbology\";\nimport { GraphicBranch, GraphicBranchOptions } from \"./render/GraphicBranch\";\nimport { MockRender } from \"./internal/render/MockRender\";\nimport { RenderGraphic } from \"./render/RenderGraphic\";\nimport { Scene } from \"./render/Scene\";\nimport { DisclosedTileTreeSet, TileGraphicType } from \"./tile/internal\";\nimport { SceneContext } from \"./ViewContext\";\nimport { OffScreenViewport, Viewport } from \"./Viewport\";\nimport { ViewRect } from \"./common/ViewRect\";\nimport { AttachToViewportArgs, ComputeDisplayTransformArgs, ExtentLimits, GetAttachmentViewportArgs, ViewState2d, ViewState3d } from \"./ViewState\";\n\n/** Strictly for testing.\n * @internal\n */\nexport interface SectionDrawingInfo {\n readonly spatialView: Id64String;\n readonly drawingToSpatialTransform: Transform;\n}\n\n/** The information required to instantiate a [[SectionAttachment]]. This information is supplied to DrawingViewState constructor via ViewStateProps.\n * The spatial view is obtained asynchronously in DrawingViewState.load(). The SectionAttachment is created in DrawingViewState.attachToViewport and\n * disposed of in DrawingViewState.detachFromViewport.\n */\nclass SectionAttachmentInfo {\n private _spatialView: Id64String | ViewState3d;\n private readonly _drawingToSpatialTransform: Transform;\n private readonly _displaySpatialView: boolean;\n\n public get spatialView(): Id64String | ViewState3d { return this._spatialView; }\n public get wantDisplayed(): boolean {\n return this._displaySpatialView || DrawingViewState.alwaysDisplaySpatialView;\n }\n\n private constructor(spatialView: Id64String | ViewState3d, drawingToSpatialTransform: Transform, displaySpatialView: boolean) {\n this._spatialView = spatialView;\n this._drawingToSpatialTransform = drawingToSpatialTransform;\n this._displaySpatialView = displaySpatialView;\n }\n\n public static fromJSON(props?: SectionDrawingViewProps): SectionAttachmentInfo {\n if (!props)\n return new SectionAttachmentInfo(Id64.invalid, Transform.createIdentity(), false);\n\n return new SectionAttachmentInfo(props.spatialView, Transform.fromJSON(props.drawingToSpatialTransform), true === props.displaySpatialView);\n }\n\n public toJSON(): SectionDrawingViewProps | undefined {\n if (\"string\" === typeof this._spatialView && !Id64.isValidId64(this._spatialView))\n return undefined;\n\n return {\n spatialView: (this._spatialView instanceof ViewState3d) ? this._spatialView.id : this._spatialView,\n drawingToSpatialTransform: this._drawingToSpatialTransform.isIdentity ? undefined : this._drawingToSpatialTransform.toJSON(),\n displaySpatialView: this._displaySpatialView,\n };\n }\n\n public clone(iModel: IModelConnection): SectionAttachmentInfo {\n let spatialView = this._spatialView;\n if (spatialView instanceof ViewState3d)\n spatialView = spatialView.clone(iModel);\n\n return new SectionAttachmentInfo(spatialView, this._drawingToSpatialTransform, this._displaySpatialView);\n }\n\n public preload(options: HydrateViewStateRequestProps): void {\n if (!this.wantDisplayed)\n return;\n\n if (this._spatialView instanceof ViewState3d)\n return;\n\n if (!Id64.isValidId64(this._spatialView))\n return;\n\n options.spatialViewId = this._spatialView;\n options.viewStateLoadProps = {\n displayStyle: {\n omitScheduleScriptElementIds: !IModelApp.tileAdmin.enableFrontendScheduleScripts,\n compressExcludedElementIds: true,\n },\n };\n }\n\n public async load(iModel: IModelConnection): Promise<void> {\n if (!this.wantDisplayed)\n return;\n\n if (this._spatialView instanceof ViewState3d)\n return;\n\n if (!Id64.isValidId64(this._spatialView))\n return;\n\n const spatialView = await iModel.views.load(this._spatialView);\n if (spatialView instanceof ViewState3d)\n this._spatialView = spatialView;\n }\n\n public async postload(options: HydrateViewStateResponseProps, iModel: IModelConnection): Promise<void> {\n let spatialView;\n if (options.spatialViewProps) {\n spatialView = await iModel.views.convertViewStatePropsToViewState(options.spatialViewProps);\n }\n\n if (spatialView instanceof ViewState3d)\n this._spatialView = spatialView;\n }\n\n public createAttachment(toSheet: Transform | undefined): SectionAttachment | undefined {\n if (!this.wantDisplayed || !(this._spatialView instanceof ViewState3d))\n return undefined;\n\n const spatialToDrawing = this._drawingToSpatialTransform.inverse();\n return spatialToDrawing ? new SectionAttachment(this._spatialView, spatialToDrawing, this._drawingToSpatialTransform, toSheet) : undefined;\n }\n\n public get sectionDrawingInfo(): SectionDrawingInfo {\n return {\n drawingToSpatialTransform: this._drawingToSpatialTransform,\n spatialView: this._spatialView instanceof ViewState3d ? this._spatialView.id : this._spatialView,\n };\n }\n}\n\n/** A mostly no-op [[RenderTarget]] for a [[SectionAttachment]]. It allocates no webgl resources. */\nclass SectionTarget extends MockRender.OffScreenTarget {\n private readonly _attachment: SectionAttachment;\n\n public constructor(attachment: SectionAttachment) {\n super(IModelApp.renderSystem, new ViewRect(0, 0, 1, 1));\n this._attachment = attachment;\n }\n\n public override changeScene(scene: Scene): void {\n this._attachment.scene = scene;\n }\n\n public override overrideFeatureSymbology(ovrs: FeatureSymbology.Overrides): void {\n this._attachment.symbologyOverrides = ovrs;\n }\n}\n\n/** Draws the contents of an orthographic [[ViewState3d]] directly into a [[DrawingViewState]], if the associated [SectionDrawing]($backend)\n * specifies it should be. We select tiles for the view in the context of a lightweight offscreen viewport with a no-op [[RenderTarget]], then\n * add the resultant graphics to the drawing view's scene. The attachment is created in DrawingViewState.attachToViewport and disposed of in\n * DrawingViewState.detachFromViewport.\n */\nclass SectionAttachment {\n private readonly _viewFlagOverrides: ViewFlagOverrides;\n public readonly toDrawing: Transform;\n private readonly _fromDrawing: Transform;\n private readonly _viewRect = new ViewRect(0, 0, 1, 1);\n private readonly _originalFrustum = new Frustum();\n private readonly _drawingExtents: Vector3d;\n public readonly viewport: OffScreenViewport;\n private readonly _branchOptions: GraphicBranchOptions;\n public scene?: Scene;\n public symbologyOverrides: FeatureSymbology.Overrides;\n\n public get view(): ViewState3d {\n assert(this.viewport.view instanceof ViewState3d);\n return this.viewport.view;\n }\n\n public get zDepth(): number {\n return this._drawingExtents.z;\n }\n\n public get drawingRange() {\n const frustum3d = this._originalFrustum.transformBy(this.toDrawing);\n return frustum3d.toRange();\n }\n\n public constructor(view: ViewState3d, toDrawing: Transform, fromDrawing: Transform, toSheet: Transform | undefined) {\n // Save the input for clone(). Attach a copy to the viewport.\n this.toDrawing = toDrawing;\n this._fromDrawing = fromDrawing;\n\n this.viewport = OffScreenViewport.createViewport(view, new SectionTarget(this), true);\n\n this.symbologyOverrides = new FeatureSymbology.Overrides(view);\n let clipVolume;\n let clip = this.view.getViewClip();\n if (clip) {\n clip = clip.clone();\n const clipTransform = toSheet ? toSheet.multiplyTransformTransform(this.toDrawing) : this.toDrawing;\n clip.transformInPlace(clipTransform);\n clipVolume = IModelApp.renderSystem.createClipVolume(clip);\n }\n\n this._branchOptions = {\n clipVolume,\n hline: view.getDisplayStyle3d().settings.hiddenLineSettings,\n inSectionDrawingAttachment: true,\n frustum: {\n is3d: true,\n scale: { x: 1, y: 1 },\n },\n contours: view.getDisplayStyle3d().settings.contours\n };\n\n this._viewFlagOverrides = { ...view.viewFlags, lighting: false, shadows: false };\n\n // Save off the original frustum (potentially adjusted by viewport).\n this.viewport.setupFromView();\n this.viewport.viewingSpace.getFrustum(CoordSystem.World, true, this._originalFrustum);\n\n const drawingFrustum = this._originalFrustum.transformBy(this.toDrawing);\n const drawingRange = drawingFrustum.toRange();\n this._drawingExtents = drawingRange.diagonal();\n this._drawingExtents.z = Math.abs(this._drawingExtents.z);\n }\n\n public [Symbol.dispose](): void {\n this.viewport[Symbol.dispose]();\n }\n\n public addToScene(context: SceneContext): void {\n if (context.viewport.freezeScene)\n return;\n\n const pixelSize = context.viewport.getPixelSizeAtPoint();\n if (0 === pixelSize)\n return;\n\n // Adjust offscreen viewport's frustum based on intersection with drawing view frustum.\n const frustum3d = this._originalFrustum.transformBy(this.toDrawing);\n const frustumRange3d = frustum3d.toRange();\n const frustum2d = context.viewport.getWorldFrustum();\n const frustumRange2d = frustum2d.toRange();\n const intersect = frustumRange3d.intersect(frustumRange2d);\n if (intersect.isNull)\n return;\n\n frustum3d.initFromRange(intersect);\n frustum3d.transformBy(this._fromDrawing, frustum3d);\n this.viewport.setupViewFromFrustum(frustum3d);\n\n // Adjust view rect based on size of attachment on screen so tiles of appropriate LOD are selected.\n const width = this._drawingExtents.x * intersect.xLength() / frustumRange3d.xLength();\n const height = this._drawingExtents.y * intersect.yLength() / frustumRange3d.yLength();\n this._viewRect.width = Math.max(1, Math.round(width / pixelSize));\n this._viewRect.height = Math.max(1, Math.round(height / pixelSize));\n this.viewport.setRect(this._viewRect);\n\n // Propagate settings from drawing viewport.\n this.viewport.debugBoundingBoxes = context.viewport.debugBoundingBoxes;\n this.viewport.setTileSizeModifier(context.viewport.tileSizeModifier);\n\n // Create the scene.\n this.viewport.renderFrame();\n const scene = this.scene;\n if (!scene)\n return;\n\n // Extract graphics and insert into drawing's scene context.\n const outputGraphics = (source: RenderGraphic[]) => {\n if (0 === source.length)\n return;\n\n const graphics = new GraphicBranch();\n graphics.setViewFlagOverrides(this._viewFlagOverrides);\n graphics.symbologyOverrides = this.symbologyOverrides;\n\n for (const graphic of source)\n graphics.entries.push(graphic);\n\n const branch = context.createGraphicBranch(graphics, this.toDrawing, this._branchOptions);\n context.outputGraphic(branch);\n };\n\n outputGraphics(scene.foreground);\n context.withGraphicType(TileGraphicType.BackgroundMap, () => outputGraphics(scene.background));\n context.withGraphicType(TileGraphicType.Overlay, () => outputGraphics(scene.overlay));\n\n // Report tile statistics to drawing viewport.\n const tileAdmin = IModelApp.tileAdmin;\n const selectedAndReady = tileAdmin.getTilesForUser(this.viewport);\n const requested = tileAdmin.getRequestsForUser(this.viewport);\n tileAdmin.addExternalTilesForUser(context.viewport, {\n requested: requested?.size ?? 0,\n selected: selectedAndReady?.selected.size ?? 0,\n ready: selectedAndReady?.ready.size ?? 0,\n });\n }\n}\n\n/** A view of a [DrawingModel]($backend)\n * @public\n * @extensions\n */\nexport class DrawingViewState extends ViewState2d {\n public static override get className() { return \"DrawingViewDefinition\"; }\n\n /** Exposed strictly for testing and debugging. Indicates that when loading the view, the spatial view should be displayed even\n * if `SectionDrawing.displaySpatialView` is not `true`.\n * @internal\n */\n public static alwaysDisplaySpatialView = false;\n\n /** Exposed strictly for testing and debugging. Indicates that the 2d graphics should not be displayed.\n * @internal\n */\n public static hideDrawingGraphics = false;\n\n private readonly _viewedExtents: AxisAlignedBox3d;\n private _attachmentInfo: SectionAttachmentInfo;\n private _attachment?: SectionAttachment;\n\n /** Strictly for testing. @internal */\n public get sectionDrawingProps(): SectionDrawingViewProps | undefined {\n return this._attachmentInfo.toJSON();\n }\n\n /** Strictly for testing. @internal */\n public get sectionDrawingInfo() {\n return this._attachmentInfo.sectionDrawingInfo;\n }\n\n /** Strictly for testing. @internal */\n public get attachment(): object | undefined {\n return this._attachment;\n }\n\n /** Strictly for testing. @internal */\n public get attachmentInfo(): { spatialView: Id64String | ViewState3d } {\n return this._attachmentInfo;\n }\n\n public constructor(props: ViewDefinition2dProps, iModel: IModelConnection, categories: CategorySelectorState, displayStyle: DisplayStyle2dState, extents: AxisAlignedBox3d, sectionDrawing?: SectionDrawingViewProps) {\n super(props, iModel, categories, displayStyle);\n if (categories instanceof DrawingViewState) {\n this._viewedExtents = categories._viewedExtents.clone();\n this._attachmentInfo = categories._attachmentInfo.clone(iModel);\n } else {\n this._viewedExtents = extents;\n this._attachmentInfo = SectionAttachmentInfo.fromJSON(sectionDrawing);\n }\n }\n\n /** See [[ViewState.attachToViewport]]. */\n public override attachToViewport(args: AttachToViewportArgs): void {\n super.attachToViewport(args);\n assert(undefined === this._attachment);\n this._attachment = this._attachmentInfo.createAttachment(args.drawingToSheetTransform);\n }\n\n /** See [[ViewState.detachFromViewport]]. */\n public override detachFromViewport(): void {\n super.detachFromViewport();\n this._attachment = dispose(this._attachment);\n }\n\n public override async changeViewedModel(modelId: Id64String): Promise<void> {\n await super.changeViewedModel(modelId);\n const props = await this.querySectionDrawingProps();\n this._attachmentInfo = SectionAttachmentInfo.fromJSON(props);\n\n // super.changeViewedModel() throws if attached to viewport, and attachment only allocated while attached to viewport\n assert(undefined === this._attachment);\n }\n\n private async querySectionDrawingProps(): Promise<SectionDrawingViewProps> {\n let spatialView = Id64.invalid;\n let drawingToSpatialTransform: TransformProps | undefined;\n let displaySpatialView = false;\n try {\n const ecsql = `\n SELECT spatialView,\n json_extract(jsonProperties, '$.drawingToSpatialTransform') as drawingToSpatialTransform,\n CAST(json_extract(jsonProperties, '$.displaySpatialView') as BOOLEAN) as displaySpatialView\n FROM bis.SectionDrawing\n WHERE ECInstanceId=${this.baseModelId}`;\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n for await (const row of this.iModel.createQueryReader(ecsql, undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames })) {\n spatialView = Id64.fromJSON(row.spatialView?.id);\n displaySpatialView = !!row.displaySpatialView;\n try {\n drawingToSpatialTransform = JSON.parse(row.drawingToSpatialTransform);\n } catch {\n // We'll use identity transform.\n }\n\n break;\n }\n } catch {\n // The version of BisCore ECSchema in the iModel is probably too old to contain the SectionDrawing ECClass.\n }\n\n return { spatialView, displaySpatialView, drawingToSpatialTransform };\n }\n\n /** @internal */\n protected override preload(hydrateRequest: HydrateViewStateRequestProps): void {\n assert(!this.isAttachedToViewport);\n super.preload(hydrateRequest);\n this._attachmentInfo.preload(hydrateRequest);\n }\n\n /** @internal */\n protected override async postload(hydrateResponse: HydrateViewStateResponseProps): Promise<void> {\n const promises = [];\n promises.push(super.postload(hydrateResponse));\n promises.push(this._attachmentInfo.postload(hydrateResponse, this.iModel));\n await Promise.all(promises);\n }\n\n public static override createFromProps(props: ViewStateProps, iModel: IModelConnection): DrawingViewState {\n const cat = new CategorySelectorState(props.categorySelectorProps, iModel);\n const displayStyleState = new DisplayStyle2dState(props.displayStyleProps, iModel);\n const extents = props.modelExtents ? Range3d.fromJSON(props.modelExtents) : new Range3d();\n\n // use \"new this\" so subclasses are correct\n return new this(props.viewDefinitionProps as ViewDefinition2dProps, iModel, cat, displayStyleState, extents, props.sectionDrawing);\n }\n\n public override toProps(): ViewStateProps {\n const props = super.toProps();\n props.modelExtents = this._viewedExtents.toJSON();\n props.sectionDrawing = this._attachmentInfo.toJSON();\n return props;\n }\n\n public getViewedExtents(): AxisAlignedBox3d {\n const extents = this._viewedExtents.clone();\n if (this._attachment) {\n extents.extendRange(this._attachment.drawingRange);\n }\n\n return extents;\n }\n\n public get defaultExtentLimits(): ExtentLimits {\n return {\n min: Constant.oneMillimeter,\n max: 3 * Constant.diameterOfEarth,\n };\n }\n\n public override isDrawingView(): this is DrawingViewState { return true; }\n\n /** See [[ViewState.getOrigin]]. */\n public override getOrigin() {\n const origin = super.getOrigin();\n if (this._attachment)\n origin.z = -this._attachment.zDepth;\n\n return origin;\n }\n\n /** See [[ViewState.getExtents]]. */\n public override getExtents() {\n const extents = super.getExtents();\n if (this._attachment)\n extents.z = this._attachment.zDepth + Frustum2d.minimumZDistance;\n\n return extents;\n }\n\n /** @internal */\n public override discloseTileTrees(trees: DisclosedTileTreeSet): void {\n super.discloseTileTrees(trees);\n if (this._attachment)\n trees.disclose(this._attachment.viewport);\n }\n\n /** @internal */\n public override createScene(context: SceneContext): void {\n if (!DrawingViewState.hideDrawingGraphics)\n super.createScene(context);\n\n if (this._attachment)\n this._attachment.addToScene(context);\n }\n\n public override get areAllTileTreesLoaded(): boolean {\n return super.areAllTileTreesLoaded && (!this._attachment || this._attachment.view.areAllTileTreesLoaded);\n }\n\n /** @internal */\n public override get secondaryViewports() {\n return this._attachment ? [this._attachment.viewport] : super.secondaryViewports;\n }\n\n /** @internal */\n public override getAttachmentViewport(args: GetAttachmentViewportArgs): Viewport | undefined {\n const attach = args.inSectionDrawingAttachment ? this._attachment : undefined;\n return attach?.viewport;\n }\n\n /** @beta */\n public override computeDisplayTransform(args: ComputeDisplayTransformArgs): Transform | undefined {\n // ###TODO we're currently ignoring model and element Id in args, assuming irrelevant for drawings.\n // Should probably call super or have super call us.\n const attach = args.inSectionDrawingAttachment ? this._attachment : undefined;\n return attach?.toDrawing.clone(args.output);\n }\n}\n"]}
1
+ {"version":3,"file":"DrawingViewState.js","sourceRoot":"","sources":["../../src/DrawingViewState.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 Views\n */\n\nimport { assert, dispose, Id64, Id64String } from \"@itwin/core-bentley\";\nimport {\n AxisAlignedBox3d, Frustum, HydrateViewStateRequestProps, HydrateViewStateResponseProps, QueryRowFormat, SectionDrawingViewProps, ViewDefinition2dProps, ViewFlagOverrides, ViewStateProps,\n} from \"@itwin/core-common\";\nimport { Constant, Range3d, Transform, TransformProps, Vector3d } from \"@itwin/core-geometry\";\nimport { CategorySelectorState } from \"./CategorySelectorState\";\nimport { CoordSystem } from \"./CoordSystem\";\nimport { DisplayStyle2dState } from \"./DisplayStyleState\";\nimport { Frustum2d } from \"./Frustum2d\";\nimport { IModelApp } from \"./IModelApp\";\nimport { IModelConnection } from \"./IModelConnection\";\nimport { FeatureSymbology } from \"./render/FeatureSymbology\";\nimport { GraphicBranch, GraphicBranchOptions } from \"./render/GraphicBranch\";\nimport { MockRender } from \"./internal/render/MockRender\";\nimport { RenderGraphic } from \"./render/RenderGraphic\";\nimport { Scene } from \"./render/Scene\";\nimport { DisclosedTileTreeSet, TileGraphicType } from \"./tile/internal\";\nimport { SceneContext } from \"./ViewContext\";\nimport { OffScreenViewport, Viewport } from \"./Viewport\";\nimport { ViewRect } from \"./common/ViewRect\";\nimport { AttachToViewportArgs, ComputeDisplayTransformArgs, ExtentLimits, GetAttachmentViewportArgs, ViewState2d, ViewState3d } from \"./ViewState\";\n\n/** Strictly for testing.\n * @internal\n */\nexport interface SectionDrawingInfo {\n readonly spatialView: Id64String;\n readonly drawingToSpatialTransform: Transform;\n}\n\n/** The information required to instantiate a [[SectionAttachment]]. This information is supplied to DrawingViewState constructor via ViewStateProps.\n * The spatial view is obtained asynchronously in DrawingViewState.load(). The SectionAttachment is created in DrawingViewState.attachToViewport and\n * disposed of in DrawingViewState.detachFromViewport.\n */\nclass SectionAttachmentInfo {\n private _spatialView: Id64String | ViewState3d;\n private readonly _drawingToSpatialTransform: Transform;\n private readonly _displaySpatialView: boolean;\n\n public get spatialView(): Id64String | ViewState3d { return this._spatialView; }\n public get wantDisplayed(): boolean {\n return this._displaySpatialView || DrawingViewState.alwaysDisplaySpatialView;\n }\n\n private constructor(spatialView: Id64String | ViewState3d, drawingToSpatialTransform: Transform, displaySpatialView: boolean) {\n this._spatialView = spatialView;\n this._drawingToSpatialTransform = drawingToSpatialTransform;\n this._displaySpatialView = displaySpatialView;\n }\n\n public static fromJSON(props?: SectionDrawingViewProps): SectionAttachmentInfo {\n if (!props)\n return new SectionAttachmentInfo(Id64.invalid, Transform.createIdentity(), false);\n\n return new SectionAttachmentInfo(props.spatialView, Transform.fromJSON(props.drawingToSpatialTransform), true === props.displaySpatialView);\n }\n\n public toJSON(): SectionDrawingViewProps | undefined {\n if (\"string\" === typeof this._spatialView && !Id64.isValidId64(this._spatialView))\n return undefined;\n\n return {\n spatialView: (this._spatialView instanceof ViewState3d) ? this._spatialView.id : this._spatialView,\n drawingToSpatialTransform: this._drawingToSpatialTransform.isIdentity ? undefined : this._drawingToSpatialTransform.toJSON(),\n displaySpatialView: this._displaySpatialView,\n };\n }\n\n public clone(iModel: IModelConnection): SectionAttachmentInfo {\n let spatialView = this._spatialView;\n if (spatialView instanceof ViewState3d)\n spatialView = spatialView.clone(iModel);\n\n return new SectionAttachmentInfo(spatialView, this._drawingToSpatialTransform, this._displaySpatialView);\n }\n\n public preload(options: HydrateViewStateRequestProps): void {\n if (!this.wantDisplayed)\n return;\n\n if (this._spatialView instanceof ViewState3d)\n return;\n\n if (!Id64.isValidId64(this._spatialView))\n return;\n\n options.spatialViewId = this._spatialView;\n options.viewStateLoadProps = {\n displayStyle: {\n omitScheduleScriptElementIds: !IModelApp.tileAdmin.enableFrontendScheduleScripts,\n compressExcludedElementIds: true,\n },\n };\n }\n\n public async load(iModel: IModelConnection): Promise<void> {\n if (!this.wantDisplayed)\n return;\n\n if (this._spatialView instanceof ViewState3d)\n return;\n\n if (!Id64.isValidId64(this._spatialView))\n return;\n\n const spatialView = await iModel.views.load(this._spatialView);\n if (spatialView instanceof ViewState3d)\n this._spatialView = spatialView;\n }\n\n public async postload(options: HydrateViewStateResponseProps, iModel: IModelConnection): Promise<void> {\n let spatialView;\n if (options.spatialViewProps) {\n spatialView = await iModel.views.convertViewStatePropsToViewState(options.spatialViewProps);\n }\n\n if (spatialView instanceof ViewState3d)\n this._spatialView = spatialView;\n }\n\n public createAttachment(toSheet: Transform | undefined): SectionAttachment | undefined {\n if (!this.wantDisplayed || !(this._spatialView instanceof ViewState3d))\n return undefined;\n\n const spatialToDrawing = this._drawingToSpatialTransform.inverse();\n return spatialToDrawing ? new SectionAttachment(this._spatialView, spatialToDrawing, this._drawingToSpatialTransform, toSheet) : undefined;\n }\n\n public get sectionDrawingInfo(): SectionDrawingInfo {\n return {\n drawingToSpatialTransform: this._drawingToSpatialTransform,\n spatialView: this._spatialView instanceof ViewState3d ? this._spatialView.id : this._spatialView,\n };\n }\n}\n\n/** A mostly no-op [[RenderTarget]] for a [[SectionAttachment]]. It allocates no webgl resources. */\nclass SectionTarget extends MockRender.OffScreenTarget {\n private readonly _attachment: SectionAttachment;\n\n public constructor(attachment: SectionAttachment) {\n super(IModelApp.renderSystem, new ViewRect(0, 0, 1, 1));\n this._attachment = attachment;\n }\n\n public override changeScene(scene: Scene): void {\n this._attachment.scene = scene;\n }\n\n public override overrideFeatureSymbology(ovrs: FeatureSymbology.Overrides): void {\n this._attachment.symbologyOverrides = ovrs;\n }\n}\n\n/** Draws the contents of an orthographic [[ViewState3d]] directly into a [[DrawingViewState]], if the associated [SectionDrawing]($backend)\n * specifies it should be. We select tiles for the view in the context of a lightweight offscreen viewport with a no-op [[RenderTarget]], then\n * add the resultant graphics to the drawing view's scene. The attachment is created in DrawingViewState.attachToViewport and disposed of in\n * DrawingViewState.detachFromViewport.\n */\nclass SectionAttachment {\n private readonly _viewFlagOverrides: ViewFlagOverrides;\n public readonly toDrawing: Transform;\n private readonly _fromDrawing: Transform;\n private readonly _viewRect = new ViewRect(0, 0, 1, 1);\n private readonly _originalFrustum = new Frustum();\n private readonly _drawingExtents: Vector3d;\n public readonly viewport: OffScreenViewport;\n private readonly _branchOptions: GraphicBranchOptions;\n public scene?: Scene;\n public symbologyOverrides: FeatureSymbology.Overrides;\n\n public get view(): ViewState3d {\n assert(this.viewport.view instanceof ViewState3d);\n return this.viewport.view;\n }\n\n public get zDepth(): number {\n return this._drawingExtents.z;\n }\n\n public get drawingRange() {\n const frustum3d = this._originalFrustum.transformBy(this.toDrawing);\n return frustum3d.toRange();\n }\n\n public constructor(view: ViewState3d, toDrawing: Transform, fromDrawing: Transform, toSheet: Transform | undefined) {\n // Save the input for clone(). Attach a copy to the viewport.\n this.toDrawing = toDrawing;\n this._fromDrawing = fromDrawing;\n\n this.viewport = OffScreenViewport.createViewport(view, new SectionTarget(this), true);\n\n this.symbologyOverrides = new FeatureSymbology.Overrides(view);\n let clipVolume;\n let clip = this.view.getViewClip();\n if (clip) {\n clip = clip.clone();\n const clipTransform = toSheet ? toSheet.multiplyTransformTransform(this.toDrawing) : this.toDrawing;\n clip.transformInPlace(clipTransform);\n clipVolume = IModelApp.renderSystem.createClipVolume(clip);\n }\n\n this._branchOptions = {\n clipVolume,\n hline: view.getDisplayStyle3d().settings.hiddenLineSettings,\n inSectionDrawingAttachment: true,\n frustum: {\n is3d: true,\n scale: { x: 1, y: 1 },\n },\n contours: view.getDisplayStyle3d().settings.contours\n };\n\n this._viewFlagOverrides = { ...view.viewFlags, lighting: false, shadows: false };\n\n // Save off the original frustum (potentially adjusted by viewport).\n this.viewport.setupFromView();\n this.viewport.viewingSpace.getFrustum(CoordSystem.World, true, this._originalFrustum);\n\n const drawingFrustum = this._originalFrustum.transformBy(this.toDrawing);\n const drawingRange = drawingFrustum.toRange();\n this._drawingExtents = drawingRange.diagonal();\n this._drawingExtents.z = Math.abs(this._drawingExtents.z);\n }\n\n public [Symbol.dispose](): void {\n this.viewport[Symbol.dispose]();\n }\n\n public addToScene(context: SceneContext): void {\n if (context.viewport.freezeScene)\n return;\n\n const pixelSize = context.viewport.getPixelSizeAtPoint();\n if (0 === pixelSize)\n return;\n\n // Adjust offscreen viewport's frustum based on intersection with drawing view frustum.\n const frustum3d = this._originalFrustum.transformBy(this.toDrawing);\n const frustumRange3d = frustum3d.toRange();\n const frustum2d = context.viewport.getWorldFrustum();\n const frustumRange2d = frustum2d.toRange();\n const intersect = frustumRange3d.intersect(frustumRange2d);\n if (intersect.isNull)\n return;\n\n frustum3d.initFromRange(intersect);\n frustum3d.transformBy(this._fromDrawing, frustum3d);\n this.viewport.setupViewFromFrustum(frustum3d);\n\n // Adjust view rect based on size of attachment on screen so tiles of appropriate LOD are selected.\n const width = this._drawingExtents.x * intersect.xLength() / frustumRange3d.xLength();\n const height = this._drawingExtents.y * intersect.yLength() / frustumRange3d.yLength();\n this._viewRect.width = Math.max(1, Math.round(width / pixelSize));\n this._viewRect.height = Math.max(1, Math.round(height / pixelSize));\n this.viewport.setRect(this._viewRect);\n\n // Propagate settings from drawing viewport.\n this.viewport.debugBoundingBoxes = context.viewport.debugBoundingBoxes;\n this.viewport.setTileSizeModifier(context.viewport.tileSizeModifier);\n\n // Create the scene.\n this.viewport.renderFrame();\n const scene = this.scene;\n if (!scene)\n return;\n\n // Extract graphics and insert into drawing's scene context.\n const outputGraphics = (source: RenderGraphic[]) => {\n if (0 === source.length)\n return;\n\n const graphics = new GraphicBranch();\n graphics.setViewFlagOverrides(this._viewFlagOverrides);\n graphics.symbologyOverrides = this.symbologyOverrides;\n\n for (const graphic of source)\n graphics.entries.push(graphic);\n\n const branch = context.createGraphicBranch(graphics, this.toDrawing, this._branchOptions);\n context.outputGraphic(branch);\n };\n\n outputGraphics(scene.foreground);\n context.withGraphicType(TileGraphicType.BackgroundMap, () => outputGraphics(scene.background));\n context.withGraphicType(TileGraphicType.Overlay, () => outputGraphics(scene.overlay));\n\n // Report tile statistics to drawing viewport.\n const tileAdmin = IModelApp.tileAdmin;\n const selectedAndReady = tileAdmin.getTilesForUser(this.viewport);\n const requested = tileAdmin.getRequestsForUser(this.viewport);\n tileAdmin.addExternalTilesForUser(context.viewport, {\n requested: requested?.size ?? 0,\n selected: selectedAndReady?.selected.size ?? 0,\n ready: selectedAndReady?.ready.size ?? 0,\n });\n }\n}\n\n/** A view of a [DrawingModel]($backend)\n * @public\n * @extensions\n */\nexport class DrawingViewState extends ViewState2d {\n public static override get className() { return \"DrawingViewDefinition\"; }\n\n /** Exposed strictly for testing and debugging. Indicates that when loading the view, the spatial view should be displayed even\n * if `SectionDrawing.displaySpatialView` is not `true`.\n * @internal\n */\n public static alwaysDisplaySpatialView = false;\n\n /** Exposed strictly for testing and debugging. Indicates that the 2d graphics should not be displayed.\n * @internal\n */\n public static hideDrawingGraphics = false;\n\n private readonly _viewedExtents: AxisAlignedBox3d;\n private _attachmentInfo: SectionAttachmentInfo;\n private _attachment?: SectionAttachment;\n\n /** Strictly for testing. @internal */\n public get sectionDrawingProps(): SectionDrawingViewProps | undefined {\n return this._attachmentInfo.toJSON();\n }\n\n /** Strictly for testing. @internal */\n public get sectionDrawingInfo() {\n return this._attachmentInfo.sectionDrawingInfo;\n }\n\n /** Strictly for testing. @internal */\n public get attachment(): object | undefined {\n return this._attachment;\n }\n\n /** Strictly for testing. @internal */\n public get attachmentInfo(): { spatialView: Id64String | ViewState3d } {\n return this._attachmentInfo;\n }\n\n public constructor(props: ViewDefinition2dProps, iModel: IModelConnection, categories: CategorySelectorState, displayStyle: DisplayStyle2dState, extents: AxisAlignedBox3d, sectionDrawing?: SectionDrawingViewProps) {\n super(props, iModel, categories, displayStyle);\n if (categories instanceof DrawingViewState) {\n this._viewedExtents = categories._viewedExtents.clone();\n this._attachmentInfo = categories._attachmentInfo.clone(iModel);\n } else {\n this._viewedExtents = extents;\n this._attachmentInfo = SectionAttachmentInfo.fromJSON(sectionDrawing);\n }\n }\n\n /** See [[ViewState.attachToViewport]]. */\n public override attachToViewport(args: AttachToViewportArgs): void {\n super.attachToViewport(args);\n assert(undefined === this._attachment);\n this._attachment = this._attachmentInfo.createAttachment(args.drawingToSheetTransform);\n }\n\n /** See [[ViewState.detachFromViewport]]. */\n public override detachFromViewport(): void {\n super.detachFromViewport();\n this._attachment = dispose(this._attachment);\n }\n\n public override async changeViewedModel(modelId: Id64String): Promise<void> {\n await super.changeViewedModel(modelId);\n const props = await this.querySectionDrawingProps();\n this._attachmentInfo = SectionAttachmentInfo.fromJSON(props);\n\n // super.changeViewedModel() throws if attached to viewport, and attachment only allocated while attached to viewport\n assert(undefined === this._attachment);\n }\n\n private async querySectionDrawingProps(): Promise<SectionDrawingViewProps> {\n let spatialView = Id64.invalid;\n let drawingToSpatialTransform: TransformProps | undefined;\n let displaySpatialView = false;\n try {\n const ecsql = `\n SELECT spatialView.Id as spatialViewId,\n json_extract(jsonProperties, '$.drawingToSpatialTransform') as drawingToSpatialTransform,\n CAST(json_extract(jsonProperties, '$.displaySpatialView') as BOOLEAN) as displaySpatialView\n FROM bis.SectionDrawing\n WHERE ECInstanceId=${this.baseModelId}`;\n\n for await (const row of this.iModel.createQueryReader(ecsql, undefined, { rowFormat: QueryRowFormat.UseECSqlPropertyNames })) {\n spatialView = Id64.fromJSON(row.spatialViewId);\n displaySpatialView = !!row.displaySpatialView;\n try {\n drawingToSpatialTransform = JSON.parse(row.drawingToSpatialTransform);\n } catch {\n // We'll use identity transform.\n }\n\n break;\n }\n } catch {\n // The version of BisCore ECSchema in the iModel is probably too old to contain the SectionDrawing ECClass.\n }\n\n return { spatialView, displaySpatialView, drawingToSpatialTransform };\n }\n\n /** @internal */\n protected override preload(hydrateRequest: HydrateViewStateRequestProps): void {\n assert(!this.isAttachedToViewport);\n super.preload(hydrateRequest);\n this._attachmentInfo.preload(hydrateRequest);\n }\n\n /** @internal */\n protected override async postload(hydrateResponse: HydrateViewStateResponseProps): Promise<void> {\n const promises = [];\n promises.push(super.postload(hydrateResponse));\n promises.push(this._attachmentInfo.postload(hydrateResponse, this.iModel));\n await Promise.all(promises);\n }\n\n public static override createFromProps(props: ViewStateProps, iModel: IModelConnection): DrawingViewState {\n const cat = new CategorySelectorState(props.categorySelectorProps, iModel);\n const displayStyleState = new DisplayStyle2dState(props.displayStyleProps, iModel);\n const extents = props.modelExtents ? Range3d.fromJSON(props.modelExtents) : new Range3d();\n\n // use \"new this\" so subclasses are correct\n return new this(props.viewDefinitionProps as ViewDefinition2dProps, iModel, cat, displayStyleState, extents, props.sectionDrawing);\n }\n\n public override toProps(): ViewStateProps {\n const props = super.toProps();\n props.modelExtents = this._viewedExtents.toJSON();\n props.sectionDrawing = this._attachmentInfo.toJSON();\n return props;\n }\n\n public getViewedExtents(): AxisAlignedBox3d {\n const extents = this._viewedExtents.clone();\n if (this._attachment) {\n extents.extendRange(this._attachment.drawingRange);\n }\n\n return extents;\n }\n\n public get defaultExtentLimits(): ExtentLimits {\n return {\n min: Constant.oneMillimeter,\n max: 3 * Constant.diameterOfEarth,\n };\n }\n\n public override isDrawingView(): this is DrawingViewState { return true; }\n\n /** See [[ViewState.getOrigin]]. */\n public override getOrigin() {\n const origin = super.getOrigin();\n if (this._attachment)\n origin.z = -this._attachment.zDepth;\n\n return origin;\n }\n\n /** See [[ViewState.getExtents]]. */\n public override getExtents() {\n const extents = super.getExtents();\n if (this._attachment)\n extents.z = this._attachment.zDepth + Frustum2d.minimumZDistance;\n\n return extents;\n }\n\n /** @internal */\n public override discloseTileTrees(trees: DisclosedTileTreeSet): void {\n super.discloseTileTrees(trees);\n if (this._attachment)\n trees.disclose(this._attachment.viewport);\n }\n\n /** @internal */\n public override createScene(context: SceneContext): void {\n if (!DrawingViewState.hideDrawingGraphics)\n super.createScene(context);\n\n if (this._attachment)\n this._attachment.addToScene(context);\n }\n\n public override get areAllTileTreesLoaded(): boolean {\n return super.areAllTileTreesLoaded && (!this._attachment || this._attachment.view.areAllTileTreesLoaded);\n }\n\n /** @internal */\n public override get secondaryViewports() {\n return this._attachment ? [this._attachment.viewport] : super.secondaryViewports;\n }\n\n /** @internal */\n public override getAttachmentViewport(args: GetAttachmentViewportArgs): Viewport | undefined {\n const attach = args.inSectionDrawingAttachment ? this._attachment : undefined;\n return attach?.viewport;\n }\n\n /** @beta */\n public override computeDisplayTransform(args: ComputeDisplayTransformArgs): Transform | undefined {\n // ###TODO we're currently ignoring model and element Id in args, assuming irrelevant for drawings.\n // Should probably call super or have super call us.\n const attach = args.inSectionDrawingAttachment ? this._attachment : undefined;\n return attach?.toDrawing.clone(args.output);\n }\n}\n"]}
@@ -97,7 +97,7 @@ class ElementState extends EntityState {
97
97
  toJSON() {
98
98
  const val = super.toJSON();
99
99
  if (core_bentley_1.Id64.isValid(this.code.spec))
100
- val.code = this.code;
100
+ val.code = this.code.toJSON(); // Ensure _value with get accessor is serialized...
101
101
  val.model = this.model;
102
102
  val.parent = this.parent;
103
103
  val.federationGuid = this.federationGuid;