@itwin/core-frontend 5.9.0-dev.1 → 5.9.0-dev.10

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 (94) hide show
  1. package/CHANGELOG.md +29 -1
  2. package/lib/cjs/BriefcaseConnection.d.ts +4 -1
  3. package/lib/cjs/BriefcaseConnection.d.ts.map +1 -1
  4. package/lib/cjs/BriefcaseConnection.js +6 -3
  5. package/lib/cjs/BriefcaseConnection.js.map +1 -1
  6. package/lib/cjs/BriefcaseTxns.d.ts +58 -1
  7. package/lib/cjs/BriefcaseTxns.d.ts.map +1 -1
  8. package/lib/cjs/BriefcaseTxns.js +65 -0
  9. package/lib/cjs/BriefcaseTxns.js.map +1 -1
  10. package/lib/cjs/ContextRealityModelState.d.ts +2 -0
  11. package/lib/cjs/ContextRealityModelState.d.ts.map +1 -1
  12. package/lib/cjs/ContextRealityModelState.js +4 -0
  13. package/lib/cjs/ContextRealityModelState.js.map +1 -1
  14. package/lib/cjs/SheetViewState.d.ts.map +1 -1
  15. package/lib/cjs/SheetViewState.js +4 -3
  16. package/lib/cjs/SheetViewState.js.map +1 -1
  17. package/lib/cjs/Viewport.d.ts.map +1 -1
  18. package/lib/cjs/Viewport.js +14 -1
  19. package/lib/cjs/Viewport.js.map +1 -1
  20. package/lib/cjs/internal/SheetViewAttachments.d.ts +1 -1
  21. package/lib/cjs/internal/SheetViewAttachments.d.ts.map +1 -1
  22. package/lib/cjs/internal/SheetViewAttachments.js +2 -0
  23. package/lib/cjs/internal/SheetViewAttachments.js.map +1 -1
  24. package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.d.ts +1 -0
  25. package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.d.ts.map +1 -1
  26. package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.js +19 -15
  27. package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.js.map +1 -1
  28. package/lib/cjs/internal/tile/PrimaryTileTree.d.ts +1 -0
  29. package/lib/cjs/internal/tile/PrimaryTileTree.d.ts.map +1 -1
  30. package/lib/cjs/internal/tile/PrimaryTileTree.js +32 -2
  31. package/lib/cjs/internal/tile/PrimaryTileTree.js.map +1 -1
  32. package/lib/cjs/internal/tile/RealityModelTileTree.d.ts +1 -0
  33. package/lib/cjs/internal/tile/RealityModelTileTree.d.ts.map +1 -1
  34. package/lib/cjs/internal/tile/RealityModelTileTree.js +3 -0
  35. package/lib/cjs/internal/tile/RealityModelTileTree.js.map +1 -1
  36. package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts +119 -22
  37. package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  38. package/lib/cjs/quantity-formatting/QuantityFormatter.js +261 -59
  39. package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
  40. package/lib/cjs/tools/PrimitiveTool.d.ts +4 -1
  41. package/lib/cjs/tools/PrimitiveTool.d.ts.map +1 -1
  42. package/lib/cjs/tools/PrimitiveTool.js +5 -2
  43. package/lib/cjs/tools/PrimitiveTool.js.map +1 -1
  44. package/lib/cjs/tools/ToolAdmin.d.ts.map +1 -1
  45. package/lib/cjs/tools/ToolAdmin.js +2 -2
  46. package/lib/cjs/tools/ToolAdmin.js.map +1 -1
  47. package/lib/esm/BriefcaseConnection.d.ts +4 -1
  48. package/lib/esm/BriefcaseConnection.d.ts.map +1 -1
  49. package/lib/esm/BriefcaseConnection.js +6 -3
  50. package/lib/esm/BriefcaseConnection.js.map +1 -1
  51. package/lib/esm/BriefcaseTxns.d.ts +58 -1
  52. package/lib/esm/BriefcaseTxns.d.ts.map +1 -1
  53. package/lib/esm/BriefcaseTxns.js +65 -0
  54. package/lib/esm/BriefcaseTxns.js.map +1 -1
  55. package/lib/esm/ContextRealityModelState.d.ts +2 -0
  56. package/lib/esm/ContextRealityModelState.d.ts.map +1 -1
  57. package/lib/esm/ContextRealityModelState.js +4 -0
  58. package/lib/esm/ContextRealityModelState.js.map +1 -1
  59. package/lib/esm/SheetViewState.d.ts.map +1 -1
  60. package/lib/esm/SheetViewState.js +4 -3
  61. package/lib/esm/SheetViewState.js.map +1 -1
  62. package/lib/esm/Viewport.d.ts.map +1 -1
  63. package/lib/esm/Viewport.js +14 -1
  64. package/lib/esm/Viewport.js.map +1 -1
  65. package/lib/esm/internal/SheetViewAttachments.d.ts +1 -1
  66. package/lib/esm/internal/SheetViewAttachments.d.ts.map +1 -1
  67. package/lib/esm/internal/SheetViewAttachments.js +2 -0
  68. package/lib/esm/internal/SheetViewAttachments.js.map +1 -1
  69. package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.d.ts +1 -0
  70. package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.d.ts.map +1 -1
  71. package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.js +19 -15
  72. package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.js.map +1 -1
  73. package/lib/esm/internal/tile/PrimaryTileTree.d.ts +1 -0
  74. package/lib/esm/internal/tile/PrimaryTileTree.d.ts.map +1 -1
  75. package/lib/esm/internal/tile/PrimaryTileTree.js +33 -3
  76. package/lib/esm/internal/tile/PrimaryTileTree.js.map +1 -1
  77. package/lib/esm/internal/tile/RealityModelTileTree.d.ts +1 -0
  78. package/lib/esm/internal/tile/RealityModelTileTree.d.ts.map +1 -1
  79. package/lib/esm/internal/tile/RealityModelTileTree.js +3 -0
  80. package/lib/esm/internal/tile/RealityModelTileTree.js.map +1 -1
  81. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts +119 -22
  82. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  83. package/lib/esm/quantity-formatting/QuantityFormatter.js +263 -61
  84. package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
  85. package/lib/esm/tools/PrimitiveTool.d.ts +4 -1
  86. package/lib/esm/tools/PrimitiveTool.d.ts.map +1 -1
  87. package/lib/esm/tools/PrimitiveTool.js +5 -2
  88. package/lib/esm/tools/PrimitiveTool.js.map +1 -1
  89. package/lib/esm/tools/ToolAdmin.d.ts.map +1 -1
  90. package/lib/esm/tools/ToolAdmin.js +3 -3
  91. package/lib/esm/tools/ToolAdmin.js.map +1 -1
  92. package/lib/public/scripts/parse-imdl-worker.js +1 -1
  93. package/lib/workers/webpack/parse-imdl-worker.js +1 -1
  94. package/package.json +22 -22
@@ -28,7 +28,7 @@ export declare class SheetViewAttachments implements Disposable {
28
28
  clone(iModel: IModelConnection): SheetViewAttachments;
29
29
  preload(request: HydrateViewStateRequestProps): void;
30
30
  postload(response: HydrateViewStateResponseProps, iModel: IModelConnection): Promise<void>;
31
- reload(sheetModelId: Id64String, iModel: IModelConnection): Promise<void>;
31
+ reload(sheetModelId: Id64String, iModel: IModelConnection): Promise<boolean>;
32
32
  attachToViewport(args: {
33
33
  backgroundColor: ColorDef;
34
34
  sheetModelId: Id64String;
@@ -1 +1 @@
1
- {"version":3,"file":"SheetViewAttachments.d.ts","sourceRoot":"","sources":["../../../src/internal/SheetViewAttachments.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,4BAA4B,EAAE,6BAA6B,EAAe,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC7I,OAAO,EAAE,2BAA2B,EAAE,yBAAyB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACjG,OAAO,EAA4C,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAIvD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AA2LxD;;GAEG;AACH,qBAAa,oBAAqB,YAAW,UAAU;IACrD,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,OAAO,CAAC,CAAuB;IACvC,OAAO,CAAC,SAAS,CAA8B;IAC/C,OAAO,CAAC,aAAa,CAAC,CAA0D;IAChF,OAAO,CAAC,UAAU,CAAC,CAA2B;IAE9C,IAAW,QAAQ,IAAI,MAAM,CAE5B;IAEO,qBAAqB,IAAI,QAAQ,CAAC,QAAQ,CAAC;IAUnD,OAAO;IAIA,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;WAMjB,MAAM,CAAC,aAAa,EAAE,UAAU,EAAE,GAAG,oBAAoB;IAKvE,IAAW,aAAa,IAAI,SAAS,MAAM,EAAE,CAE5C;IAEM,KAAK,CAAC,MAAM,EAAE,gBAAgB,GAAG,oBAAoB;IAIrD,OAAO,CAAC,OAAO,EAAE,4BAA4B,GAAG,IAAI;IAI9C,QAAQ,CAAC,QAAQ,EAAE,6BAA6B,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1F,MAAM,CAAC,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAqB/E,gBAAgB,CAAC,IAAI,EAAE;QAC5B,eAAe,EAAE,QAAQ,CAAC;QAC1B,YAAY,EAAE,UAAU,CAAC;KAC1B,GAAG,IAAI;IAQD,kBAAkB,IAAI,IAAI;IAQ1B,qBAAqB,CAAC,gBAAgB,EAAE,OAAO,GAAG,OAAO;IAazD,iBAAiB,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI;IAMpD,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,UAAU,GAAG,IAAI;IAMvD,UAAU,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAMvC,qBAAqB,CAAC,IAAI,EAAE,yBAAyB,GAAG,QAAQ,GAAG,SAAS;IAS5E,uBAAuB,CAAC,IAAI,EAAE,2BAA2B,GAAG,SAAS,GAAG,SAAS;IAgBxF,0BAA0B;IACnB,uBAAuB,IAAI,OAAO;IAIzC,0BAA0B;IAC1B,IAAW,WAAW,IAAI,MAAM,EAAE,GAAG,SAAS,CAE7C;IAED,0BAA0B;IAC1B,IAAW,eAAe,IAAI,KAAK,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAYjE;IAED,0BAA0B;IAC1B,IAAW,eAAe,IAAI,SAAS,UAAU,EAAE,GAAG,KAAK,CAAC;QAAE,YAAY,EAAE,SAAS,CAAA;KAAE,CAAC,CAGvF;IAED,OAAO,CAAC,aAAa;IAuBrB,OAAO,CAAE,SAAS;IAQlB,OAAO,CAAC,gBAAgB;CAGzB"}
1
+ {"version":3,"file":"SheetViewAttachments.d.ts","sourceRoot":"","sources":["../../../src/internal/SheetViewAttachments.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,4BAA4B,EAAE,6BAA6B,EAAe,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC7I,OAAO,EAAE,2BAA2B,EAAE,yBAAyB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACjG,OAAO,EAA4C,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAIvD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AA2LxD;;GAEG;AACH,qBAAa,oBAAqB,YAAW,UAAU;IACrD,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,OAAO,CAAC,CAAuB;IACvC,OAAO,CAAC,SAAS,CAA8B;IAC/C,OAAO,CAAC,aAAa,CAAC,CAA0D;IAChF,OAAO,CAAC,UAAU,CAAC,CAA2B;IAE9C,IAAW,QAAQ,IAAI,MAAM,CAE5B;IAEO,qBAAqB,IAAI,QAAQ,CAAC,QAAQ,CAAC;IAUnD,OAAO;IAIA,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;WAMjB,MAAM,CAAC,aAAa,EAAE,UAAU,EAAE,GAAG,oBAAoB;IAKvE,IAAW,aAAa,IAAI,SAAS,MAAM,EAAE,CAE5C;IAEM,KAAK,CAAC,MAAM,EAAE,gBAAgB,GAAG,oBAAoB;IAIrD,OAAO,CAAC,OAAO,EAAE,4BAA4B,GAAG,IAAI;IAI9C,QAAQ,CAAC,QAAQ,EAAE,6BAA6B,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1F,MAAM,CAAC,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAyBlF,gBAAgB,CAAC,IAAI,EAAE;QAC5B,eAAe,EAAE,QAAQ,CAAC;QAC1B,YAAY,EAAE,UAAU,CAAC;KAC1B,GAAG,IAAI;IAQD,kBAAkB,IAAI,IAAI;IAQ1B,qBAAqB,CAAC,gBAAgB,EAAE,OAAO,GAAG,OAAO;IAazD,iBAAiB,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI;IAMpD,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,UAAU,GAAG,IAAI;IAMvD,UAAU,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAMvC,qBAAqB,CAAC,IAAI,EAAE,yBAAyB,GAAG,QAAQ,GAAG,SAAS;IAS5E,uBAAuB,CAAC,IAAI,EAAE,2BAA2B,GAAG,SAAS,GAAG,SAAS;IAgBxF,0BAA0B;IACnB,uBAAuB,IAAI,OAAO;IAIzC,0BAA0B;IAC1B,IAAW,WAAW,IAAI,MAAM,EAAE,GAAG,SAAS,CAE7C;IAED,0BAA0B;IAC1B,IAAW,eAAe,IAAI,KAAK,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAYjE;IAED,0BAA0B;IAC1B,IAAW,eAAe,IAAI,SAAS,UAAU,EAAE,GAAG,KAAK,CAAC;QAAE,YAAY,EAAE,SAAS,CAAA;KAAE,CAAC,CAGvF;IAED,OAAO,CAAC,aAAa;IAuBrB,OAAO,CAAE,SAAS;IAQlB,OAAO,CAAC,gBAAgB;CAGzB"}
@@ -215,7 +215,9 @@ class SheetViewAttachments {
215
215
  // We are attached to a Viewport - reload the renderers.
216
216
  this.loadRenderers();
217
217
  }
218
+ return true;
218
219
  }
220
+ return false;
219
221
  }
220
222
  attachToViewport(args) {
221
223
  (0, core_bentley_1.assert)(undefined === this._renderers);
@@ -1 +1 @@
1
- {"version":3,"file":"SheetViewAttachments.js","sourceRoot":"","sources":["../../../src/internal/SheetViewAttachments.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 { ColorDef, HydrateViewStateRequestProps, HydrateViewStateResponseProps, Placement2d, ViewAttachmentProps } from \"@itwin/core-common\";\nimport { ComputeDisplayTransformArgs, GetAttachmentViewportArgs, ViewState } from \"../ViewState\";\nimport { assert, CompressedId64Set, expectDefined, Id64String } from \"@itwin/core-bentley\";\nimport { IModelConnection } from \"../IModelConnection\";\nimport { IModelApp } from \"../IModelApp\";\nimport { createViewAttachmentRenderer, ViewAttachmentRenderer } from \"./ViewAttachmentRenderer\";\nimport { Frustum2d } from \"../Frustum2d\";\nimport { Range3d, Transform } from \"@itwin/core-geometry\";\nimport { SceneContext } from \"../ViewContext\";\nimport { Viewport } from \"../Viewport\";\nimport { RenderMemory } from \"../render/RenderMemory\";\nimport { DisclosedTileTreeSet } from \"../tile/internal\";\n\n/** Represents the current state of the view attachments to be displayed by a SheetViewAttachments. */\ninterface Attachments {\n clone(iModel: IModelConnection): Attachments;\n preload(request: HydrateViewStateRequestProps): void;\n postload(response: HydrateViewStateResponseProps, iModel: IModelConnection): Promise<Attachments>;\n readonly infos?: ViewAttachmentInfo[];\n readonly attachmentIds: readonly string[];\n}\n\n/** The properties describing a view attachment, plus the ViewState created from them. */\ninterface ViewAttachmentInfo extends ViewAttachmentProps {\n attachedView: ViewState;\n}\n\n/** Stateless state for a sheet that has no view attachments. */\nclass EmptyAttachments implements Attachments {\n // We only need one instance of this stateless class.\n private static _instance?: Attachments;\n\n public static get(): Attachments {\n return this._instance ?? (this._instance = new EmptyAttachments());\n }\n\n private constructor() { }\n\n public clone(): Attachments {\n return this;\n }\n\n public preload(): void { }\n\n public async postload(): Promise<Attachments> {\n return this;\n }\n\n public get attachmentIds() {\n return [];\n }\n}\n\n/** Holds the element Ids of the view attachments to be loaded for display. */\nclass AttachmentIds implements Attachments {\n private readonly _ids: Id64String[];\n\n public constructor(ids: Id64String[]) {\n this._ids = ids;\n }\n\n public get attachmentIds() {\n return this._ids;\n }\n\n public clone(): Attachments {\n return new AttachmentIds([...this._ids]);\n }\n\n public preload(request: HydrateViewStateRequestProps): void {\n request.sheetViewAttachmentIds = CompressedId64Set.sortAndCompress(this._ids);\n request.viewStateLoadProps = {\n displayStyle: {\n omitScheduleScriptElementIds: !IModelApp.tileAdmin.enableFrontendScheduleScripts,\n compressExcludedElementIds: true,\n },\n };\n }\n\n public async postload(response: HydrateViewStateResponseProps, iModel: IModelConnection): Promise<Attachments> {\n if (undefined === response.sheetViewViews || undefined === response.sheetViewAttachmentProps) {\n return this;\n }\n\n const viewStateProps = response.sheetViewViews;\n const promises = [];\n for (const viewProps of viewStateProps) {\n const loadView = async () => {\n try {\n if (viewProps === undefined)\n return undefined;\n const view = await iModel.views.convertViewStatePropsToViewState(viewProps);\n return view;\n } catch {\n return undefined;\n }\n };\n promises.push(loadView());\n }\n\n const views = await Promise.all(promises);\n\n const attachmentProps = response.sheetViewAttachmentProps as ViewAttachmentInfo[];\n assert(views.length === attachmentProps.length);\n const infos = [];\n for (let i = 0; i < views.length; i++) {\n const view = views[i];\n if (view && !(view.isSheetView())) {\n const props = attachmentProps[i];\n props.attachedView = view;\n infos.push(props);\n }\n }\n\n return new AttachmentInfos(infos);\n }\n}\n\n/** Fully loaded view attachments. */\nclass AttachmentInfos implements Attachments {\n public readonly infos: ViewAttachmentInfo[];\n\n public constructor(infos: ViewAttachmentInfo[]) {\n this.infos = infos;\n }\n\n public get attachmentIds() {\n return this.infos.map((x) => expectDefined(x.id));\n }\n\n public clone(iModel: IModelConnection): Attachments {\n const infos = this.infos.map((info) => {\n return {\n ...info,\n attachedView: info.attachedView.clone(iModel),\n };\n });\n\n return new AttachmentInfos(infos);\n }\n\n public preload(): void {\n // already loaded.\n }\n\n public async postload(): Promise<Attachments> {\n // already loaded.\n return this;\n }\n}\n\n/** Reloads the attachments after a change to the database. */\nasync function reloadAttachments(sheetModelId: Id64String, iModel: IModelConnection): Promise<Attachments> {\n const ecsql = `SELECT ECInstanceId as attachmentId FROM bis.ViewAttachment WHERE model.Id=${sheetModelId}`;\n const ids: string[] = [];\n for await (const row of iModel.createQueryReader(ecsql)) {\n ids.push(row[0]);\n }\n\n const attachmentProps = await iModel.elements.getProps(ids) as ViewAttachmentInfo[];\n const promises = [];\n for (const attachment of attachmentProps) {\n const loadView = async () => {\n try {\n const view = await iModel.views.load(attachment.view.id);\n return view;\n } catch {\n return undefined;\n }\n };\n\n promises.push(loadView());\n }\n\n const views = await Promise.all(promises);\n assert(views.length === attachmentProps.length);\n\n const infos = [];\n for (let i = 0; i < views.length; i++) {\n const view = views[i];\n if (view && !view.isSheetView()) {\n const props = attachmentProps[i];\n props.attachedView = view;\n infos.push(props);\n }\n }\n\n return new AttachmentInfos(infos);\n}\n\nfunction disposeRenderers(renderers: ViewAttachmentRenderer[] | undefined) {\n if (renderers) {\n for (const renderer of renderers) {\n renderer[Symbol.dispose]();\n }\n }\n}\n\n/** Manages the set of ViewAttachment elements to be rendered by a SheetViewState.\n * Takes care of reloading them after ViewAttachment elements are modified, deleted, or inserted.\n */\nexport class SheetViewAttachments implements Disposable {\n private _impl: Attachments;\n private _reload?: Promise<Attachments>;\n private _maxDepth = Frustum2d.minimumZDistance;\n private _rendererArgs?: { sheetModelId: Id64String, backgroundColor: ColorDef };\n private _renderers?: ViewAttachmentRenderer[];\n\n public get maxDepth(): number {\n return this._maxDepth;\n }\n\n public *getSecondaryViewports(): Iterable<Viewport> {\n if (this._renderers) {\n for (const renderer of this._renderers) {\n if (renderer.viewport) {\n yield renderer.viewport;\n }\n }\n }\n }\n\n private constructor(impl: Attachments) {\n this._impl = impl;\n }\n\n public [Symbol.dispose](): void {\n disposeRenderers(this._renderers);\n this._renderers = this._rendererArgs = undefined;\n this._reload = undefined;\n }\n\n public static create(attachmentIds: Id64String[]): SheetViewAttachments {\n const impl = attachmentIds.length === 0 ? EmptyAttachments.get() : new AttachmentIds([...attachmentIds]);\n return new this(impl);\n }\n\n public get attachmentIds(): readonly string[] {\n return this._impl.attachmentIds;\n }\n\n public clone(iModel: IModelConnection): SheetViewAttachments {\n return new SheetViewAttachments(this._impl.clone(iModel));\n }\n\n public preload(request: HydrateViewStateRequestProps): void {\n this._impl.preload(request);\n }\n\n public async postload(response: HydrateViewStateResponseProps, iModel: IModelConnection): Promise<void> {\n this._impl = await this._impl.postload(response, iModel);\n }\n\n public async reload(sheetModelId: Id64String, iModel: IModelConnection): Promise<void> {\n const renderers = this._renderers;\n const reload = this._reload = reloadAttachments(sheetModelId, iModel);\n const impl = await this._reload;\n\n // We keep the previous renderers until reloading completes, to avoid drawing a blank view while waiting.\n // Afterward, always destroy the previous renderers.\n disposeRenderers(renderers);\n\n // If reload was not called again while we waited...\n if (this._reload === reload) {\n this._impl = impl;\n this._reload = this._renderers = undefined;\n\n if (this._rendererArgs) {\n // We are attached to a Viewport - reload the renderers.\n this.loadRenderers();\n }\n }\n }\n\n public attachToViewport(args: {\n backgroundColor: ColorDef,\n sheetModelId: Id64String,\n }): void {\n assert(undefined === this._renderers);\n assert(undefined === this._rendererArgs);\n\n this._rendererArgs = args;\n this.loadRenderers();\n }\n\n public detachFromViewport(): void {\n assert(undefined !== this._rendererArgs);\n this._rendererArgs = undefined;\n\n disposeRenderers(this._renderers);\n this._renderers = undefined;\n }\n\n public areAllTileTreesLoaded(displayedExtents: Range3d): boolean {\n if (this._reload) {\n return false;\n } else if (!this._renderers) {\n return true;\n }\n\n return this._renderers.every((renderer) => {\n const attachmentRange = Placement2d.fromJSON(renderer.viewAttachmentProps.placement).calculateRange();\n return !attachmentRange.intersectsRangeXY(displayedExtents) || renderer.areAllTileTreesLoaded;\n });\n }\n\n public discloseTileTrees(trees: DisclosedTileTreeSet): void {\n for (const renderer of this.renderers()) {\n trees.disclose(renderer);\n }\n }\n\n public collectStatistics(stats: RenderMemory.Statistics): void {\n for (const renderer of this.renderers()) {\n renderer.collectStatistics(stats);\n }\n }\n\n public addToScene(context: SceneContext): void {\n for (const renderer of this.renderers()) {\n renderer.addToScene(context);\n }\n }\n\n public getAttachmentViewport(args: GetAttachmentViewportArgs): Viewport | undefined {\n const renderer = args.viewAttachmentId ? this.findRendererById(args.viewAttachmentId) : undefined;\n if (!renderer) {\n return undefined;\n }\n\n return args.inSectionDrawingAttachment ? renderer.viewport?.view.getAttachmentViewport({ inSectionDrawingAttachment: true }) : renderer.viewport;\n }\n\n public computeDisplayTransform(args: ComputeDisplayTransformArgs): Transform | undefined {\n const renderer = undefined !== args.viewAttachmentId ? this.findRendererById(args.viewAttachmentId) : undefined;\n const ortho = renderer?.ortho;\n const sheetTransform = ortho?.toSheet;\n if (!sheetTransform) {\n return undefined;\n }\n\n const sectionTransform = args.inSectionDrawingAttachment ? ortho.view.computeDisplayTransform(args) : undefined;\n if (!sectionTransform) {\n return sheetTransform.clone(args.output);\n }\n\n return sheetTransform.multiplyTransformTransform(sectionTransform, args.output);\n }\n\n /** Strictly for tests. */\n public areAllAttachmentsLoaded(): boolean {\n return !this._reload && (!this._renderers || this._renderers.every((x) => x.areAllTileTreesLoaded));\n }\n\n /** Strictly for tests. */\n public get attachments(): object[] | undefined {\n return this._renderers;\n }\n\n /** Strictly for tests. */\n public get attachmentProps(): Array<Readonly<ViewAttachmentProps>> {\n const infos = this._impl.infos;\n if (!infos) {\n return [];\n }\n\n return infos.map((x) => {\n return {\n ...x,\n attachedView: undefined,\n };\n });\n }\n\n /** Strictly for tests. */\n public get attachmentInfos(): readonly Id64String[] | Array<{ attachedView: ViewState }> {\n const infos = this._impl.infos;\n return infos ?? this._impl.attachmentIds;\n }\n\n private loadRenderers(): void {\n const args = this._rendererArgs;\n assert(undefined !== args);\n assert(undefined === this._renderers);\n\n this._maxDepth = Frustum2d.minimumZDistance;\n\n const infos = this._impl.infos;\n if (!infos) {\n return;\n }\n\n this._renderers = infos.map((info) => {\n const renderer = createViewAttachmentRenderer({\n ...args,\n props: info,\n view: info.attachedView,\n });\n this._maxDepth = Math.max(this._maxDepth, renderer.zDepth);\n return renderer;\n });\n }\n\n private *renderers(): Iterable<ViewAttachmentRenderer> {\n if (this._renderers) {\n for (const renderer of this._renderers) {\n yield renderer;\n }\n }\n }\n\n private findRendererById(id: Id64String): ViewAttachmentRenderer | undefined {\n return this._renderers?.find((x) => x.viewAttachmentProps.id === id);\n }\n}\n"]}
1
+ {"version":3,"file":"SheetViewAttachments.js","sourceRoot":"","sources":["../../../src/internal/SheetViewAttachments.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,oDAA6I;AAE7I,sDAA2F;AAE3F,4CAAyC;AACzC,qEAAgG;AAChG,4CAAyC;AAqBzC,gEAAgE;AAChE,MAAM,gBAAgB;IACpB,qDAAqD;IAC7C,MAAM,CAAC,SAAS,CAAe;IAEhC,MAAM,CAAC,GAAG;QACf,OAAO,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,gBAAgB,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,gBAAwB,CAAC;IAElB,KAAK;QACV,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,OAAO,KAAW,CAAC;IAEnB,KAAK,CAAC,QAAQ;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAW,aAAa;QACtB,OAAO,EAAE,CAAC;IACZ,CAAC;CACF;AAED,8EAA8E;AAC9E,MAAM,aAAa;IACA,IAAI,CAAe;IAEpC,YAAmB,GAAiB;QAClC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,CAAC;IAED,IAAW,aAAa;QACtB,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAEM,KAAK;QACV,OAAO,IAAI,aAAa,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3C,CAAC;IAEM,OAAO,CAAC,OAAqC;QAClD,OAAO,CAAC,sBAAsB,GAAG,gCAAiB,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9E,OAAO,CAAC,kBAAkB,GAAG;YAC3B,YAAY,EAAE;gBACZ,4BAA4B,EAAE,CAAC,qBAAS,CAAC,SAAS,CAAC,6BAA6B;gBAChF,0BAA0B,EAAE,IAAI;aACjC;SACF,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,QAAuC,EAAE,MAAwB;QACrF,IAAI,SAAS,KAAK,QAAQ,CAAC,cAAc,IAAI,SAAS,KAAK,QAAQ,CAAC,wBAAwB,EAAE,CAAC;YAC7F,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC;QAC/C,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,KAAK,MAAM,SAAS,IAAI,cAAc,EAAE,CAAC;YACvC,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;gBAC1B,IAAI,CAAC;oBACH,IAAI,SAAS,KAAK,SAAS;wBACzB,OAAO,SAAS,CAAC;oBACnB,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,SAAS,CAAC,CAAC;oBAC5E,OAAO,IAAI,CAAC;gBACd,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,SAAS,CAAC;gBACnB,CAAC;YACH,CAAC,CAAC;YACF,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC5B,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAE1C,MAAM,eAAe,GAAG,QAAQ,CAAC,wBAAgD,CAAC;QAClF,IAAA,qBAAM,EAAC,KAAK,CAAC,MAAM,KAAK,eAAe,CAAC,MAAM,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;gBAClC,MAAM,KAAK,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;gBACjC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;gBAC1B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;QAED,OAAO,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;CACF;AAED,qCAAqC;AACrC,MAAM,eAAe;IACH,KAAK,CAAuB;IAE5C,YAAmB,KAA2B;QAC5C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,IAAW,aAAa;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,4BAAa,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpD,CAAC;IAEM,KAAK,CAAC,MAAwB;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACpC,OAAO;gBACL,GAAG,IAAI;gBACP,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC;aAC9C,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAEM,OAAO;QACZ,kBAAkB;IACpB,CAAC;IAEM,KAAK,CAAC,QAAQ;QACnB,kBAAkB;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,8DAA8D;AAC9D,KAAK,UAAU,iBAAiB,CAAC,YAAwB,EAAE,MAAwB;IACjF,MAAM,KAAK,GAAG,8EAA8E,YAAY,EAAE,CAAC;IAC3G,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;QACxD,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;IAED,MAAM,eAAe,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAyB,CAAC;IACpF,MAAM,QAAQ,GAAG,EAAE,CAAC;IACpB,KAAK,MAAM,UAAU,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;YAC1B,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACzD,OAAO,IAAI,CAAC;YACd,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC,CAAC;QAEF,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC1C,IAAA,qBAAM,EAAC,KAAK,CAAC,MAAM,KAAK,eAAe,CAAC,MAAM,CAAC,CAAC;IAEhD,MAAM,KAAK,GAAG,EAAE,CAAC;IACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;YACjC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;YAC1B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,gBAAgB,CAAC,SAA+C;IACvE,IAAI,SAAS,EAAE,CAAC;QACd,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7B,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAa,oBAAoB;IACvB,KAAK,CAAc;IACnB,OAAO,CAAwB;IAC/B,SAAS,GAAG,qBAAS,CAAC,gBAAgB,CAAC;IACvC,aAAa,CAA2D;IACxE,UAAU,CAA4B;IAE9C,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAEM,CAAC,qBAAqB;QAC3B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACvC,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;oBACtB,MAAM,QAAQ,CAAC,QAAQ,CAAC;gBAC1B,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,YAAoB,IAAiB;QACnC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAEM,CAAC,MAAM,CAAC,OAAO,CAAC;QACrB,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAClC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QACjD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;IAC3B,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,aAA2B;QAC9C,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC;QACzG,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,IAAW,aAAa;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;IAClC,CAAC;IAEM,KAAK,CAAC,MAAwB;QACnC,OAAO,IAAI,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5D,CAAC;IAEM,OAAO,CAAC,OAAqC;QAClD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,QAAuC,EAAE,MAAwB;QACrF,IAAI,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC3D,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,YAAwB,EAAE,MAAwB;QACpE,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,GAAG,iBAAiB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QACtE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;QAEhC,yGAAyG;QACzG,oDAAoD;QACpD,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAE5B,oDAAoD;QACpD,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;YAE3C,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBACvB,wDAAwD;gBACxD,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,gBAAgB,CAAC,IAGvB;QACC,IAAA,qBAAM,EAAC,SAAS,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC;QACtC,IAAA,qBAAM,EAAC,SAAS,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC;QAEzC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAEM,kBAAkB;QACvB,IAAA,qBAAM,EAAC,SAAS,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC;QACzC,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QAE/B,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAClC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,CAAC;IAEM,qBAAqB,CAAC,gBAAyB;QACpD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC;QACf,CAAC;aAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,EAAE;YACxC,MAAM,eAAe,GAAG,yBAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,CAAC;YACtG,OAAO,CAAC,eAAe,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,QAAQ,CAAC,qBAAqB,CAAC;QAChG,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,iBAAiB,CAAC,KAA2B;QAClD,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;YACxC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAEM,iBAAiB,CAAC,KAA8B;QACrD,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;YACxC,QAAQ,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAEM,UAAU,CAAC,OAAqB;QACrC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;YACxC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAEM,qBAAqB,CAAC,IAA+B;QAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAClG,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,qBAAqB,CAAC,EAAE,0BAA0B,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;IACnJ,CAAC;IAEM,uBAAuB,CAAC,IAAiC;QAC9D,MAAM,QAAQ,GAAG,SAAS,KAAK,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAChH,MAAM,KAAK,GAAG,QAAQ,EAAE,KAAK,CAAC;QAC9B,MAAM,cAAc,GAAG,KAAK,EAAE,OAAO,CAAC;QACtC,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAChH,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,OAAO,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3C,CAAC;QAED,OAAO,cAAc,CAAC,0BAA0B,CAAC,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAClF,CAAC;IAED,0BAA0B;IACnB,uBAAuB;QAC5B,OAAO,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC;IACtG,CAAC;IAED,0BAA0B;IAC1B,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,0BAA0B;IAC1B,IAAW,eAAe;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACrB,OAAO;gBACL,GAAG,CAAC;gBACJ,YAAY,EAAE,SAAS;aACxB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,0BAA0B;IAC1B,IAAW,eAAe;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC/B,OAAO,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;IAC3C,CAAC;IAEO,aAAa;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC;QAChC,IAAA,qBAAM,EAAC,SAAS,KAAK,IAAI,CAAC,CAAC;QAC3B,IAAA,qBAAM,EAAC,SAAS,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC;QAEtC,IAAI,CAAC,SAAS,GAAG,qBAAS,CAAC,gBAAgB,CAAC;QAE5C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO;QACT,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACnC,MAAM,QAAQ,GAAG,IAAA,qDAA4B,EAAC;gBAC5C,GAAG,IAAI;gBACP,KAAK,EAAE,IAAI;gBACX,IAAI,EAAE,IAAI,CAAC,YAAY;aACxB,CAAC,CAAC;YACH,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC3D,OAAO,QAAQ,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,CAAC,SAAS;QAChB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACvC,MAAM,QAAQ,CAAC;YACjB,CAAC;QACH,CAAC;IACH,CAAC;IAEO,gBAAgB,CAAC,EAAc;QACrC,OAAO,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACvE,CAAC;CACF;AAzND,oDAyNC","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 { ColorDef, HydrateViewStateRequestProps, HydrateViewStateResponseProps, Placement2d, ViewAttachmentProps } from \"@itwin/core-common\";\nimport { ComputeDisplayTransformArgs, GetAttachmentViewportArgs, ViewState } from \"../ViewState\";\nimport { assert, CompressedId64Set, expectDefined, Id64String } from \"@itwin/core-bentley\";\nimport { IModelConnection } from \"../IModelConnection\";\nimport { IModelApp } from \"../IModelApp\";\nimport { createViewAttachmentRenderer, ViewAttachmentRenderer } from \"./ViewAttachmentRenderer\";\nimport { Frustum2d } from \"../Frustum2d\";\nimport { Range3d, Transform } from \"@itwin/core-geometry\";\nimport { SceneContext } from \"../ViewContext\";\nimport { Viewport } from \"../Viewport\";\nimport { RenderMemory } from \"../render/RenderMemory\";\nimport { DisclosedTileTreeSet } from \"../tile/internal\";\n\n/** Represents the current state of the view attachments to be displayed by a SheetViewAttachments. */\ninterface Attachments {\n clone(iModel: IModelConnection): Attachments;\n preload(request: HydrateViewStateRequestProps): void;\n postload(response: HydrateViewStateResponseProps, iModel: IModelConnection): Promise<Attachments>;\n readonly infos?: ViewAttachmentInfo[];\n readonly attachmentIds: readonly string[];\n}\n\n/** The properties describing a view attachment, plus the ViewState created from them. */\ninterface ViewAttachmentInfo extends ViewAttachmentProps {\n attachedView: ViewState;\n}\n\n/** Stateless state for a sheet that has no view attachments. */\nclass EmptyAttachments implements Attachments {\n // We only need one instance of this stateless class.\n private static _instance?: Attachments;\n\n public static get(): Attachments {\n return this._instance ?? (this._instance = new EmptyAttachments());\n }\n\n private constructor() { }\n\n public clone(): Attachments {\n return this;\n }\n\n public preload(): void { }\n\n public async postload(): Promise<Attachments> {\n return this;\n }\n\n public get attachmentIds() {\n return [];\n }\n}\n\n/** Holds the element Ids of the view attachments to be loaded for display. */\nclass AttachmentIds implements Attachments {\n private readonly _ids: Id64String[];\n\n public constructor(ids: Id64String[]) {\n this._ids = ids;\n }\n\n public get attachmentIds() {\n return this._ids;\n }\n\n public clone(): Attachments {\n return new AttachmentIds([...this._ids]);\n }\n\n public preload(request: HydrateViewStateRequestProps): void {\n request.sheetViewAttachmentIds = CompressedId64Set.sortAndCompress(this._ids);\n request.viewStateLoadProps = {\n displayStyle: {\n omitScheduleScriptElementIds: !IModelApp.tileAdmin.enableFrontendScheduleScripts,\n compressExcludedElementIds: true,\n },\n };\n }\n\n public async postload(response: HydrateViewStateResponseProps, iModel: IModelConnection): Promise<Attachments> {\n if (undefined === response.sheetViewViews || undefined === response.sheetViewAttachmentProps) {\n return this;\n }\n\n const viewStateProps = response.sheetViewViews;\n const promises = [];\n for (const viewProps of viewStateProps) {\n const loadView = async () => {\n try {\n if (viewProps === undefined)\n return undefined;\n const view = await iModel.views.convertViewStatePropsToViewState(viewProps);\n return view;\n } catch {\n return undefined;\n }\n };\n promises.push(loadView());\n }\n\n const views = await Promise.all(promises);\n\n const attachmentProps = response.sheetViewAttachmentProps as ViewAttachmentInfo[];\n assert(views.length === attachmentProps.length);\n const infos = [];\n for (let i = 0; i < views.length; i++) {\n const view = views[i];\n if (view && !(view.isSheetView())) {\n const props = attachmentProps[i];\n props.attachedView = view;\n infos.push(props);\n }\n }\n\n return new AttachmentInfos(infos);\n }\n}\n\n/** Fully loaded view attachments. */\nclass AttachmentInfos implements Attachments {\n public readonly infos: ViewAttachmentInfo[];\n\n public constructor(infos: ViewAttachmentInfo[]) {\n this.infos = infos;\n }\n\n public get attachmentIds() {\n return this.infos.map((x) => expectDefined(x.id));\n }\n\n public clone(iModel: IModelConnection): Attachments {\n const infos = this.infos.map((info) => {\n return {\n ...info,\n attachedView: info.attachedView.clone(iModel),\n };\n });\n\n return new AttachmentInfos(infos);\n }\n\n public preload(): void {\n // already loaded.\n }\n\n public async postload(): Promise<Attachments> {\n // already loaded.\n return this;\n }\n}\n\n/** Reloads the attachments after a change to the database. */\nasync function reloadAttachments(sheetModelId: Id64String, iModel: IModelConnection): Promise<Attachments> {\n const ecsql = `SELECT ECInstanceId as attachmentId FROM bis.ViewAttachment WHERE model.Id=${sheetModelId}`;\n const ids: string[] = [];\n for await (const row of iModel.createQueryReader(ecsql)) {\n ids.push(row[0]);\n }\n\n const attachmentProps = await iModel.elements.getProps(ids) as ViewAttachmentInfo[];\n const promises = [];\n for (const attachment of attachmentProps) {\n const loadView = async () => {\n try {\n const view = await iModel.views.load(attachment.view.id);\n return view;\n } catch {\n return undefined;\n }\n };\n\n promises.push(loadView());\n }\n\n const views = await Promise.all(promises);\n assert(views.length === attachmentProps.length);\n\n const infos = [];\n for (let i = 0; i < views.length; i++) {\n const view = views[i];\n if (view && !view.isSheetView()) {\n const props = attachmentProps[i];\n props.attachedView = view;\n infos.push(props);\n }\n }\n\n return new AttachmentInfos(infos);\n}\n\nfunction disposeRenderers(renderers: ViewAttachmentRenderer[] | undefined) {\n if (renderers) {\n for (const renderer of renderers) {\n renderer[Symbol.dispose]();\n }\n }\n}\n\n/** Manages the set of ViewAttachment elements to be rendered by a SheetViewState.\n * Takes care of reloading them after ViewAttachment elements are modified, deleted, or inserted.\n */\nexport class SheetViewAttachments implements Disposable {\n private _impl: Attachments;\n private _reload?: Promise<Attachments>;\n private _maxDepth = Frustum2d.minimumZDistance;\n private _rendererArgs?: { sheetModelId: Id64String, backgroundColor: ColorDef };\n private _renderers?: ViewAttachmentRenderer[];\n\n public get maxDepth(): number {\n return this._maxDepth;\n }\n\n public *getSecondaryViewports(): Iterable<Viewport> {\n if (this._renderers) {\n for (const renderer of this._renderers) {\n if (renderer.viewport) {\n yield renderer.viewport;\n }\n }\n }\n }\n\n private constructor(impl: Attachments) {\n this._impl = impl;\n }\n\n public [Symbol.dispose](): void {\n disposeRenderers(this._renderers);\n this._renderers = this._rendererArgs = undefined;\n this._reload = undefined;\n }\n\n public static create(attachmentIds: Id64String[]): SheetViewAttachments {\n const impl = attachmentIds.length === 0 ? EmptyAttachments.get() : new AttachmentIds([...attachmentIds]);\n return new this(impl);\n }\n\n public get attachmentIds(): readonly string[] {\n return this._impl.attachmentIds;\n }\n\n public clone(iModel: IModelConnection): SheetViewAttachments {\n return new SheetViewAttachments(this._impl.clone(iModel));\n }\n\n public preload(request: HydrateViewStateRequestProps): void {\n this._impl.preload(request);\n }\n\n public async postload(response: HydrateViewStateResponseProps, iModel: IModelConnection): Promise<void> {\n this._impl = await this._impl.postload(response, iModel);\n }\n\n public async reload(sheetModelId: Id64String, iModel: IModelConnection): Promise<boolean> {\n const renderers = this._renderers;\n const reload = this._reload = reloadAttachments(sheetModelId, iModel);\n const impl = await this._reload;\n\n // We keep the previous renderers until reloading completes, to avoid drawing a blank view while waiting.\n // Afterward, always destroy the previous renderers.\n disposeRenderers(renderers);\n\n // If reload was not called again while we waited...\n if (this._reload === reload) {\n this._impl = impl;\n this._reload = this._renderers = undefined;\n\n if (this._rendererArgs) {\n // We are attached to a Viewport - reload the renderers.\n this.loadRenderers();\n }\n\n return true;\n }\n\n return false;\n }\n\n public attachToViewport(args: {\n backgroundColor: ColorDef,\n sheetModelId: Id64String,\n }): void {\n assert(undefined === this._renderers);\n assert(undefined === this._rendererArgs);\n\n this._rendererArgs = args;\n this.loadRenderers();\n }\n\n public detachFromViewport(): void {\n assert(undefined !== this._rendererArgs);\n this._rendererArgs = undefined;\n\n disposeRenderers(this._renderers);\n this._renderers = undefined;\n }\n\n public areAllTileTreesLoaded(displayedExtents: Range3d): boolean {\n if (this._reload) {\n return false;\n } else if (!this._renderers) {\n return true;\n }\n\n return this._renderers.every((renderer) => {\n const attachmentRange = Placement2d.fromJSON(renderer.viewAttachmentProps.placement).calculateRange();\n return !attachmentRange.intersectsRangeXY(displayedExtents) || renderer.areAllTileTreesLoaded;\n });\n }\n\n public discloseTileTrees(trees: DisclosedTileTreeSet): void {\n for (const renderer of this.renderers()) {\n trees.disclose(renderer);\n }\n }\n\n public collectStatistics(stats: RenderMemory.Statistics): void {\n for (const renderer of this.renderers()) {\n renderer.collectStatistics(stats);\n }\n }\n\n public addToScene(context: SceneContext): void {\n for (const renderer of this.renderers()) {\n renderer.addToScene(context);\n }\n }\n\n public getAttachmentViewport(args: GetAttachmentViewportArgs): Viewport | undefined {\n const renderer = args.viewAttachmentId ? this.findRendererById(args.viewAttachmentId) : undefined;\n if (!renderer) {\n return undefined;\n }\n\n return args.inSectionDrawingAttachment ? renderer.viewport?.view.getAttachmentViewport({ inSectionDrawingAttachment: true }) : renderer.viewport;\n }\n\n public computeDisplayTransform(args: ComputeDisplayTransformArgs): Transform | undefined {\n const renderer = undefined !== args.viewAttachmentId ? this.findRendererById(args.viewAttachmentId) : undefined;\n const ortho = renderer?.ortho;\n const sheetTransform = ortho?.toSheet;\n if (!sheetTransform) {\n return undefined;\n }\n\n const sectionTransform = args.inSectionDrawingAttachment ? ortho.view.computeDisplayTransform(args) : undefined;\n if (!sectionTransform) {\n return sheetTransform.clone(args.output);\n }\n\n return sheetTransform.multiplyTransformTransform(sectionTransform, args.output);\n }\n\n /** Strictly for tests. */\n public areAllAttachmentsLoaded(): boolean {\n return !this._reload && (!this._renderers || this._renderers.every((x) => x.areAllTileTreesLoaded));\n }\n\n /** Strictly for tests. */\n public get attachments(): object[] | undefined {\n return this._renderers;\n }\n\n /** Strictly for tests. */\n public get attachmentProps(): Array<Readonly<ViewAttachmentProps>> {\n const infos = this._impl.infos;\n if (!infos) {\n return [];\n }\n\n return infos.map((x) => {\n return {\n ...x,\n attachedView: undefined,\n };\n });\n }\n\n /** Strictly for tests. */\n public get attachmentInfos(): readonly Id64String[] | Array<{ attachedView: ViewState }> {\n const infos = this._impl.infos;\n return infos ?? this._impl.attachmentIds;\n }\n\n private loadRenderers(): void {\n const args = this._rendererArgs;\n assert(undefined !== args);\n assert(undefined === this._renderers);\n\n this._maxDepth = Frustum2d.minimumZDistance;\n\n const infos = this._impl.infos;\n if (!infos) {\n return;\n }\n\n this._renderers = infos.map((info) => {\n const renderer = createViewAttachmentRenderer({\n ...args,\n props: info,\n view: info.attachedView,\n });\n this._maxDepth = Math.max(this._maxDepth, renderer.zDepth);\n return renderer;\n });\n }\n\n private *renderers(): Iterable<ViewAttachmentRenderer> {\n if (this._renderers) {\n for (const renderer of this._renderers) {\n yield renderer;\n }\n }\n }\n\n private findRendererById(id: Id64String): ViewAttachmentRenderer | undefined {\n return this._renderers?.find((x) => x.viewAttachmentProps.id === id);\n }\n}\n"]}
@@ -30,6 +30,7 @@ export declare class LayerTileTreeReferenceHandler {
30
30
  get layerSettings(): MapLayerSettings[];
31
31
  discloseTileTrees(trees: DisclosedTileTreeSet): void;
32
32
  constructor(ref: LayerTileTreeReference, pIsOverlay: boolean, baseLayerSettings?: BaseLayerSettings, layerSettings?: MapLayerSettings[], mapTile?: boolean);
33
+ detachFromDisplayStyle(): void;
33
34
  initializeLayers(context: SceneContext): boolean;
34
35
  setBaseLayerSettings(baseLayerSettings: BaseLayerSettings): void;
35
36
  clearLayers(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"LayerTileTreeReferenceHandler.d.ts","sourceRoot":"","sources":["../../../../src/internal/tile/LayerTileTreeReferenceHandler.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAsB,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACvG,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAgD,oBAAoB,EAAoD,yBAAyB,EAAsD,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzP,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,gBAAgB;AAChB,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,gBAAgB,CAAC;IACzB,SAAS,EAAE,aAAa,CAAC;IACzB,gBAAgB,EAAE,CAAC,YAAY,CAAC,EAAE,yBAAyB,KAAK,OAAO,CAAC;CACzE;AAED,gBAAgB;AAChB,qBAAa,6BAA6B;IACxC,SAAS,CAAC,QAAQ,CAAC,WAAW,4CAAsD;IAC7E,SAAS,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,yBAAyB,UAAS;IAC5C,SAAS,CAAC,kBAAkB,CAAC,EAAE,iBAAiB,CAAC;IACjD,SAAS,CAAC,gBAAgB,UAAS;IACnC,SAAS,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC;IAChC,SAAS,CAAC,cAAc,EAAE,gBAAgB,EAAE,CAAC;IAC7C,OAAO,CAAC,IAAI,CAAyB;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAsB;IAE9D,IAAW,UAAU,8CAA+B;IACpD,IAAW,SAAS,yBAA8B;IAClD,IAAW,eAAe,YAAoC;IAC9D,IAAW,wBAAwB,YAA6C;IAChF,IAAW,aAAa,uBAAkC;IAEnD,iBAAiB,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI;gBAMxC,GAAG,EAAE,sBAAsB,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB,CAAC,EAAE,iBAAiB,EAAE,aAAa,CAAC,EAAE,gBAAgB,EAAE,EAAE,OAAO,GAAE,OAAe;IA4BjK,gBAAgB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO;IAoFhD,oBAAoB,CAAC,iBAAiB,EAAE,iBAAiB;IA0BzD,WAAW;IAOX,gBAAgB,CAAC,aAAa,EAAE,gBAAgB,EAAE;CAY1D"}
1
+ {"version":3,"file":"LayerTileTreeReferenceHandler.d.ts","sourceRoot":"","sources":["../../../../src/internal/tile/LayerTileTreeReferenceHandler.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAsB,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACvG,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAgD,oBAAoB,EAAoD,yBAAyB,EAAsD,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzP,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,gBAAgB;AAChB,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,gBAAgB,CAAC;IACzB,SAAS,EAAE,aAAa,CAAC;IACzB,gBAAgB,EAAE,CAAC,YAAY,CAAC,EAAE,yBAAyB,KAAK,OAAO,CAAC;CACzE;AAED,gBAAgB;AAChB,qBAAa,6BAA6B;IACxC,SAAS,CAAC,QAAQ,CAAC,WAAW,4CAAsD;IAC7E,SAAS,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,yBAAyB,UAAS;IAC5C,SAAS,CAAC,kBAAkB,CAAC,EAAE,iBAAiB,CAAC;IACjD,SAAS,CAAC,gBAAgB,UAAS;IACnC,SAAS,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC;IAChC,SAAS,CAAC,cAAc,EAAE,gBAAgB,EAAE,CAAC;IAC7C,OAAO,CAAC,IAAI,CAAyB;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAsB;IAE9D,IAAW,UAAU,8CAA+B;IACpD,IAAW,SAAS,yBAA8B;IAClD,IAAW,eAAe,YAAoC;IAC9D,IAAW,wBAAwB,YAA6C;IAChF,IAAW,aAAa,uBAAkC;IAEnD,iBAAiB,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI;gBAMxC,GAAG,EAAE,sBAAsB,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB,CAAC,EAAE,iBAAiB,EAAE,aAAa,CAAC,EAAE,gBAAgB,EAAE,EAAE,OAAO,GAAE,OAAe;IA4BjK,sBAAsB,IAAI,IAAI;IAK9B,gBAAgB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO;IAoFhD,oBAAoB,CAAC,iBAAiB,EAAE,iBAAiB;IA0BzD,WAAW;IAOX,gBAAgB,CAAC,aAAa,EAAE,gBAAgB,EAAE;CAY1D"}
@@ -58,31 +58,35 @@ class LayerTileTreeReferenceHandler {
58
58
  this._layerTrees.push(tree);
59
59
  }
60
60
  }
61
+ detachFromDisplayStyle() {
62
+ this._detachFromDisplayStyle.forEach((f) => f());
63
+ this._detachFromDisplayStyle.length = 0;
64
+ }
61
65
  initializeLayers(context) {
62
66
  // Map tiles handle refresh logic differently
63
67
  if (!this._mapTile) {
64
68
  const removals = this._detachFromDisplayStyle;
65
- const mapImagery = context.viewport.displayStyle.settings.mapImagery;
66
69
  if (0 === removals.length) {
67
70
  removals.push(context.viewport.displayStyle.settings.onMapImageryChanged.addListener((imagery) => {
68
71
  this.setBaseLayerSettings(imagery.backgroundBase);
69
72
  this.setLayerSettings(imagery.backgroundLayers);
70
73
  }));
74
+ removals.push(context.viewport.onChangeView.addListener((vp, previousViewState) => {
75
+ if ((0, internal_1.compareMapLayer)(previousViewState, vp.view)) {
76
+ const currentImagery = vp.displayStyle.settings.mapImagery;
77
+ this.setBaseLayerSettings(currentImagery.backgroundBase);
78
+ this.setLayerSettings(currentImagery.backgroundLayers);
79
+ }
80
+ }));
81
+ removals.push(context.viewport.onViewedModelsChanged.addListener((viewport) => {
82
+ const currentImagery = viewport.displayStyle.settings.mapImagery;
83
+ if (currentImagery.backgroundLayers.length > 0) {
84
+ this.setBaseLayerSettings(currentImagery.backgroundBase);
85
+ this.setLayerSettings(currentImagery.backgroundLayers);
86
+ viewport.invalidateScene();
87
+ }
88
+ }));
71
89
  }
72
- removals.push(context.viewport.onChangeView.addListener((vp, previousViewState) => {
73
- if ((0, internal_1.compareMapLayer)(previousViewState, vp.view)) {
74
- this.setBaseLayerSettings(mapImagery.backgroundBase);
75
- this.setLayerSettings(mapImagery.backgroundLayers);
76
- }
77
- }));
78
- removals.push(context.viewport.onViewedModelsChanged.addListener((viewport) => {
79
- const layers = viewport.displayStyle.settings.mapImagery.backgroundLayers;
80
- if (layers.length > 0) {
81
- this.setBaseLayerSettings(mapImagery.backgroundBase);
82
- this.setLayerSettings(mapImagery.backgroundLayers);
83
- viewport.invalidateScene();
84
- }
85
- }));
86
90
  }
87
91
  let hasLoadedTileTree = false;
88
92
  const layerHandler = this._ref.treeOwner.load()?.layerHandler;
@@ -1 +1 @@
1
- {"version":3,"file":"LayerTileTreeReferenceHandler.js","sourceRoot":"","sources":["../../../../src/internal/tile/LayerTileTreeReferenceHandler.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAAoD;AACpD,oDAAuG;AAEvG,kDAAyP;AAUzP,gBAAgB;AAChB,MAAa,6BAA6B;IACrB,WAAW,GAAG,IAAI,KAAK,EAAyC,CAAC;IAC7E,SAAS,CAAU;IAChB,yBAAyB,GAAG,KAAK,CAAC;IAClC,kBAAkB,CAAqB;IACvC,gBAAgB,GAAG,KAAK,CAAC;IACzB,UAAU,CAAY;IACtB,cAAc,CAAqB;IACrC,IAAI,CAAyB;IACpB,QAAQ,CAAU;IAClB,uBAAuB,GAAmB,EAAE,CAAC;IAE9D,IAAW,UAAU,KAAK,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IACpD,IAAW,SAAS,KAAK,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAClD,IAAW,eAAe,KAAK,OAAO,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC9D,IAAW,wBAAwB,KAAK,OAAO,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;IAChF,IAAW,aAAa,KAAK,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;IAEnD,iBAAiB,CAAC,KAA2B;QAClD,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,UAAU;YACvC,IAAI,WAAW;gBACb,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAClC,CAAC;IAED,YAAmB,GAA2B,EAAE,UAAmB,EAAE,iBAAqC,EAAE,aAAkC,EAAE,UAAmB,KAAK;QACtK,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;QAC5C,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QAExB,IAAI,IAAI,CAAC;QACT,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;YAC7D,IAAI,IAAI,CAAC,kBAAkB,YAAY,8BAAgB,EAAE,CAAC;gBACxD,IAAI,GAAG,IAAA,sCAA2B,EAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACjF,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,GAAG,CAAC,CAAC;YACnE,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC;gBAC1C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,UAAU,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,yBAAyB,GAAG,CAAC,SAAS,KAAK,IAAI,CAAC;YACvD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE9B,IAAI,SAAS,KAAK,IAAI,CAAC,cAAc,EAAE,CAAC;YACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE;gBACjD,IAAI,SAAS,KAAK,CAAC,IAAI,GAAG,IAAA,sCAA2B,EAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACrG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAEM,gBAAgB,CAAC,OAAqB;QAC3C,6CAA6C;QAC7C,IAAG,CAAC,IAAI,CAAC,QAAQ,EAAC,CAAC;YACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,uBAAuB,CAAC;YAC9C,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC;YACrE,IAAI,CAAC,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;gBAC1B,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,OAAqC,EAAE,EAAE;oBAC7H,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;oBAClD,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;gBAClD,CAAC,CAAC,CAAC,CAAC;YACN,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE,iBAAiB,EAAE,EAAE;gBAChF,IAAG,IAAA,0BAAe,EAAC,iBAAiB,EAAE,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC;oBAC9C,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;oBACrD,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC,CAAC,CAAC,CAAC;YACJ,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,EAAE;gBAC5E,MAAM,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,gBAAgB,CAAC;gBAC1E,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACtB,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;oBACrD,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;oBACnD,QAAQ,CAAC,eAAe,EAAE,CAAC;gBAC7B,CAAC;YACH,CAAC,CAAC,CAAC,CAAC;QACN,CAAC;QAED,IAAI,iBAAiB,GAAG,KAAK,CAAC;QAC9B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,YAAY,CAAC;QAC9D,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;YAC/B,OAAO,iBAAiB,CAAC,CAAK,+CAA+C;QAC/E,CAAC;QAED,YAAY,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;QACzB,CAAC;QAED,IAAI,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;QAC5C,6DAA6D;QAC7D,OAAO,SAAS,IAAI,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC;YACnC,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YACjD,IAAI,YAAY,EAAE,QAAQ;gBACxB,MAAM,CAAI,oFAAoF;QAClG,CAAC;QAED,OAAO,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC;YACxD,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YACjD,MAAM,gBAAgB,GAAG,YAAY,IAAI,6BAAkB,CAAC,QAAQ,KAAK,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC;YAC3G,MAAM,iBAAiB,GAAG,YAAY,YAAY,uCAA4B,CAAC;YAC/E,MAAM,cAAc,GAAG,CAAC,iBAAiB,IAAI,CAAC,CAAC,iBAAiB,IAAI,YAAY,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YAE1G,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC9C,uFAAuF;gBACvF,gGAAgG;gBAChG,iBAAiB,GAAG,IAAI,CAAC,CAAC,6EAA6E;gBACvG,SAAS;YACX,CAAC;YAED,4CAA4C;YAC5C,+GAA+G;YAC/G,IAAI,gBAAgB;mBACf,cAAc;mBACd,CAAC,YAAY,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;gBACvD,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;gBAChD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;oBAC5B,iBAAiB,GAAG,IAAI,CAAC;gBAC3B,CAAC;qBAAM,CAAC;oBACN,8DAA8D;oBAC9D,SAAS;gBACX,CAAC;gBAED,sBAAsB;gBACtB,MAAM,gBAAgB,GAAG,IAAI,CAAC,yBAAyB,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC;gBAC7E,IAAI,SAAS,YAAY,6BAAkB,EAAE,CAAC;oBAC5C,YAAY,CAAC,eAAe,CAAC,SAAS,EAAE,YAAY,CAAC,aAAa,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC;gBACnG,CAAC;qBAAM,IAAI,YAAY,YAAY,yCAA8B;oBAC/D,YAAY,CAAC,aAAa,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;QAED,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAEM,oBAAoB,CAAC,iBAAoC;QAC9D,IAAI,IAAI,CAAC;QACT,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;QAE5C,IAAI,iBAAiB,YAAY,8BAAgB,EAAE,CAAC;YAClD,IAAI,GAAG,IAAA,sCAA2B,EAAC,iBAAiB,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC3E,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;YAC5B,IAAI,CAAC,gBAAgB,GAAG,iBAAiB,CAAC,YAAY,GAAG,CAAC,CAAC;QAC7D,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,UAAU,GAAG,iBAAiB,CAAC;YACpC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;QAChE,CAAC;QAED,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,IAAI,CAAC,yBAAyB;gBAChC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;;gBAE3B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,IAAI,IAAI,CAAC,yBAAyB;gBAChC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QAC7B,CAAC;QACD,IAAI,CAAC,yBAAyB,GAAG,IAAI,KAAK,SAAS,CAAC;QACpD,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAEM,WAAW;QAChB,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAC;QAChE,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;YAC/B,YAAY,CAAC,WAAW,EAAE,CAAC;QAC7B,CAAC;IACH,CAAC;IAEM,gBAAgB,CAAC,aAAiC;QACvD,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;QACpC,MAAM,cAAc,GAAG,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAE9D,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,GAAG,cAAc,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAI,wCAAwC;QAC/I,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,MAAM,SAAS,GAAG,CAAC,GAAG,cAAc,CAAC;YACrC,IAAI,SAAS,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;gBACtH,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,IAAA,4BAAa,EAAC,IAAA,sCAA2B,EAAC,aAAa,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAC5H,CAAC;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;CACF;AArLD,sEAqLC","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 Tiles\n */\n\nimport { expectDefined } from \"@itwin/core-bentley\";\nimport { BaseLayerSettings, ColorDef, MapImagerySettings, MapLayerSettings } from \"@itwin/core-common\";\nimport { SceneContext } from \"../../ViewContext\";\nimport { compareMapLayer, createMapLayerTreeReference, DisclosedTileTreeSet, ImageryMapLayerTreeReference, ImageryMapTileTree, MapLayerTileTreeReference, ModelMapLayerTileTreeReference, TileTreeLoadStatus, TileTreeOwner } from \"../../tile/internal\";\nimport { IModelConnection } from \"../../IModelConnection\";\n\n/** @internal */\nexport interface LayerTileTreeReference {\n iModel: IModelConnection;\n treeOwner: TileTreeOwner;\n shouldDrapeLayer: (layerTreeRef?: MapLayerTileTreeReference) => boolean;\n}\n\n/** @internal */\nexport class LayerTileTreeReferenceHandler {\n protected readonly _layerTrees = new Array<MapLayerTileTreeReference | undefined>();\n public isOverlay: boolean;\n protected _baseImageryLayerIncluded = false;\n protected _baseLayerSettings?: BaseLayerSettings;\n protected _baseTransparent = false;\n protected _baseColor?: ColorDef;\n protected _layerSettings: MapLayerSettings[];\n private _ref: LayerTileTreeReference;\n private readonly _mapTile: boolean;\n private readonly _detachFromDisplayStyle: VoidFunction[] = [];\n\n public get layerTrees() { return this._layerTrees; }\n public get baseColor() { return this._baseColor; }\n public get baseTransparent() { return this._baseTransparent; }\n public get baseImageryLayerIncluded() { return this._baseImageryLayerIncluded; }\n public get layerSettings() { return this._layerSettings; }\n\n public discloseTileTrees(trees: DisclosedTileTreeSet): void {\n for (const imageryTree of this.layerTrees)\n if (imageryTree)\n trees.disclose(imageryTree);\n }\n\n public constructor(ref: LayerTileTreeReference, pIsOverlay: boolean, baseLayerSettings?: BaseLayerSettings, layerSettings?: MapLayerSettings[], mapTile: boolean = false) {\n this._ref = ref;\n this._baseLayerSettings = baseLayerSettings;\n this._layerSettings = layerSettings ? layerSettings : [];\n this.isOverlay = pIsOverlay;\n this._mapTile = mapTile;\n\n let tree;\n if (!this.isOverlay && this._baseLayerSettings !== undefined) {\n if (this._baseLayerSettings instanceof MapLayerSettings) {\n tree = createMapLayerTreeReference(this._baseLayerSettings, 0, this._ref.iModel);\n this._baseTransparent = this._baseLayerSettings.transparency > 0;\n } else {\n this._baseColor = this._baseLayerSettings;\n this._baseTransparent = this._baseColor?.getTransparency() > 0;\n }\n }\n\n if (this._baseImageryLayerIncluded = (undefined !== tree))\n this._layerTrees.push(tree);\n\n if (undefined !== this._layerSettings) {\n for (let i = 0; i < this._layerSettings.length; i++)\n if (undefined !== (tree = createMapLayerTreeReference(this._layerSettings[i], i + 1, this._ref.iModel)))\n this._layerTrees.push(tree);\n }\n }\n\n public initializeLayers(context: SceneContext): boolean {\n // Map tiles handle refresh logic differently\n if(!this._mapTile){\n const removals = this._detachFromDisplayStyle;\n const mapImagery = context.viewport.displayStyle.settings.mapImagery;\n if (0 === removals.length) {\n removals.push(context.viewport.displayStyle.settings.onMapImageryChanged.addListener((imagery: Readonly<MapImagerySettings>) => {\n this.setBaseLayerSettings(imagery.backgroundBase);\n this.setLayerSettings(imagery.backgroundLayers);\n }));\n }\n removals.push(context.viewport.onChangeView.addListener((vp, previousViewState) => {\n if(compareMapLayer(previousViewState, vp.view)){\n this.setBaseLayerSettings(mapImagery.backgroundBase);\n this.setLayerSettings(mapImagery.backgroundLayers);\n }\n }));\n removals.push(context.viewport.onViewedModelsChanged.addListener((viewport) => {\n const layers = viewport.displayStyle.settings.mapImagery.backgroundLayers;\n if (layers.length > 0) {\n this.setBaseLayerSettings(mapImagery.backgroundBase);\n this.setLayerSettings(mapImagery.backgroundLayers);\n viewport.invalidateScene();\n }\n }));\n }\n\n let hasLoadedTileTree = false;\n const layerHandler = this._ref.treeOwner.load()?.layerHandler;\n if (undefined === layerHandler) {\n return hasLoadedTileTree; // Not loaded yet - or no layerHandler on tree.\n }\n\n layerHandler.layerImageryTrees.length = 0;\n if (0 === this._layerTrees.length) {\n return !this.isOverlay;\n }\n\n let treeIndex = this._layerTrees.length - 1;\n // Start displaying at the highest completely opaque layer...\n for (; treeIndex >= 1; treeIndex--) {\n const layerTreeRef = this._layerTrees[treeIndex];\n if (layerTreeRef?.isOpaque)\n break; // This layer is completely opaque and will obscure all others so ignore lower ones.\n }\n\n for (; treeIndex < this._layerTrees.length; treeIndex++) {\n const layerTreeRef = this._layerTrees[treeIndex];\n const hasValidTileTree = layerTreeRef && TileTreeLoadStatus.NotFound !== layerTreeRef.treeOwner.loadStatus;\n const isImageryMapLayer = layerTreeRef instanceof ImageryMapLayerTreeReference;\n const isLayerVisible = (isImageryMapLayer || (!isImageryMapLayer && layerTreeRef?.layerSettings.visible));\n\n if (!this._ref.shouldDrapeLayer(layerTreeRef)) {\n // If the layer is not to be displayed, then we should skip adding it to the tile tree.\n // The _shouldDrapeLayerFunc() function is sent in from MapTileTreeReference or RealityTileTree.\n hasLoadedTileTree = true; // ###TODO had to set this to true so addToScene actually works. alternative?\n continue;\n }\n\n // Load tile tree for each configured layer.\n // Note: Non-visible imagery layer are always added to allow proper tile tree scale range visibility reporting.\n if (hasValidTileTree\n && isLayerVisible\n && !layerTreeRef.layerSettings.allSubLayersInvisible) {\n const layerTree = layerTreeRef.treeOwner.load();\n if (layerTree !== undefined) {\n hasLoadedTileTree = true;\n } else {\n // Let's continue, there might be loaded tile tree in the list\n continue;\n }\n\n // Add loaded TileTree\n const baseImageryLayer = this._baseImageryLayerIncluded && (treeIndex === 0);\n if (layerTree instanceof ImageryMapTileTree) {\n layerHandler.addImageryLayer(layerTree, layerTreeRef.layerSettings, treeIndex, baseImageryLayer);\n } else if (layerTreeRef instanceof ModelMapLayerTileTreeReference)\n layerHandler.addModelLayer(layerTreeRef, context);\n }\n }\n\n return hasLoadedTileTree;\n }\n\n public setBaseLayerSettings(baseLayerSettings: BaseLayerSettings) {\n let tree;\n this._baseLayerSettings = baseLayerSettings;\n\n if (baseLayerSettings instanceof MapLayerSettings) {\n tree = createMapLayerTreeReference(baseLayerSettings, 0, this._ref.iModel);\n this._baseColor = undefined;\n this._baseTransparent = baseLayerSettings.transparency > 0;\n } else {\n this._baseColor = baseLayerSettings;\n this._baseTransparent = this._baseColor.getTransparency() > 0;\n }\n\n if (tree) {\n if (this._baseImageryLayerIncluded)\n this._layerTrees[0] = tree;\n else\n this._layerTrees.splice(0, 0, tree);\n } else {\n if (this._baseImageryLayerIncluded)\n this._layerTrees.shift();\n }\n this._baseImageryLayerIncluded = tree !== undefined;\n this.clearLayers();\n }\n\n public clearLayers() {\n const layerHandler = this._ref.treeOwner.tileTree?.layerHandler;\n if (undefined !== layerHandler) {\n layerHandler.clearLayers();\n }\n }\n\n public setLayerSettings(layerSettings: MapLayerSettings[]) {\n this._layerSettings = layerSettings;\n const baseLayerIndex = this._baseImageryLayerIncluded ? 1 : 0;\n\n this._layerTrees.length = Math.min(layerSettings.length + baseLayerIndex, this._layerTrees.length); // Truncate if number of layers reduced.\n for (let i = 0; i < layerSettings.length; i++) {\n const treeIndex = i + baseLayerIndex;\n if (treeIndex >= this._layerTrees.length || !this._layerTrees[treeIndex]?.layerSettings.displayMatches(layerSettings[i]))\n this._layerTrees[treeIndex] = expectDefined(createMapLayerTreeReference(layerSettings[i], treeIndex, this._ref.iModel));\n }\n this.clearLayers();\n }\n}\n"]}
1
+ {"version":3,"file":"LayerTileTreeReferenceHandler.js","sourceRoot":"","sources":["../../../../src/internal/tile/LayerTileTreeReferenceHandler.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 Tiles\n */\n\nimport { expectDefined } from \"@itwin/core-bentley\";\nimport { BaseLayerSettings, ColorDef, MapImagerySettings, MapLayerSettings } from \"@itwin/core-common\";\nimport { SceneContext } from \"../../ViewContext\";\nimport { compareMapLayer, createMapLayerTreeReference, DisclosedTileTreeSet, ImageryMapLayerTreeReference, ImageryMapTileTree, MapLayerTileTreeReference, ModelMapLayerTileTreeReference, TileTreeLoadStatus, TileTreeOwner } from \"../../tile/internal\";\nimport { IModelConnection } from \"../../IModelConnection\";\n\n/** @internal */\nexport interface LayerTileTreeReference {\n iModel: IModelConnection;\n treeOwner: TileTreeOwner;\n shouldDrapeLayer: (layerTreeRef?: MapLayerTileTreeReference) => boolean;\n}\n\n/** @internal */\nexport class LayerTileTreeReferenceHandler {\n protected readonly _layerTrees = new Array<MapLayerTileTreeReference | undefined>();\n public isOverlay: boolean;\n protected _baseImageryLayerIncluded = false;\n protected _baseLayerSettings?: BaseLayerSettings;\n protected _baseTransparent = false;\n protected _baseColor?: ColorDef;\n protected _layerSettings: MapLayerSettings[];\n private _ref: LayerTileTreeReference;\n private readonly _mapTile: boolean;\n private readonly _detachFromDisplayStyle: VoidFunction[] = [];\n\n public get layerTrees() { return this._layerTrees; }\n public get baseColor() { return this._baseColor; }\n public get baseTransparent() { return this._baseTransparent; }\n public get baseImageryLayerIncluded() { return this._baseImageryLayerIncluded; }\n public get layerSettings() { return this._layerSettings; }\n\n public discloseTileTrees(trees: DisclosedTileTreeSet): void {\n for (const imageryTree of this.layerTrees)\n if (imageryTree)\n trees.disclose(imageryTree);\n }\n\n public constructor(ref: LayerTileTreeReference, pIsOverlay: boolean, baseLayerSettings?: BaseLayerSettings, layerSettings?: MapLayerSettings[], mapTile: boolean = false) {\n this._ref = ref;\n this._baseLayerSettings = baseLayerSettings;\n this._layerSettings = layerSettings ? layerSettings : [];\n this.isOverlay = pIsOverlay;\n this._mapTile = mapTile;\n\n let tree;\n if (!this.isOverlay && this._baseLayerSettings !== undefined) {\n if (this._baseLayerSettings instanceof MapLayerSettings) {\n tree = createMapLayerTreeReference(this._baseLayerSettings, 0, this._ref.iModel);\n this._baseTransparent = this._baseLayerSettings.transparency > 0;\n } else {\n this._baseColor = this._baseLayerSettings;\n this._baseTransparent = this._baseColor?.getTransparency() > 0;\n }\n }\n\n if (this._baseImageryLayerIncluded = (undefined !== tree))\n this._layerTrees.push(tree);\n\n if (undefined !== this._layerSettings) {\n for (let i = 0; i < this._layerSettings.length; i++)\n if (undefined !== (tree = createMapLayerTreeReference(this._layerSettings[i], i + 1, this._ref.iModel)))\n this._layerTrees.push(tree);\n }\n }\n\n public detachFromDisplayStyle(): void {\n this._detachFromDisplayStyle.forEach((f) => f());\n this._detachFromDisplayStyle.length = 0;\n }\n\n public initializeLayers(context: SceneContext): boolean {\n // Map tiles handle refresh logic differently\n if(!this._mapTile){\n const removals = this._detachFromDisplayStyle;\n if (0 === removals.length) {\n removals.push(context.viewport.displayStyle.settings.onMapImageryChanged.addListener((imagery: Readonly<MapImagerySettings>) => {\n this.setBaseLayerSettings(imagery.backgroundBase);\n this.setLayerSettings(imagery.backgroundLayers);\n }));\n removals.push(context.viewport.onChangeView.addListener((vp, previousViewState) => {\n if(compareMapLayer(previousViewState, vp.view)){\n const currentImagery = vp.displayStyle.settings.mapImagery;\n this.setBaseLayerSettings(currentImagery.backgroundBase);\n this.setLayerSettings(currentImagery.backgroundLayers);\n }\n }));\n removals.push(context.viewport.onViewedModelsChanged.addListener((viewport) => {\n const currentImagery = viewport.displayStyle.settings.mapImagery;\n if (currentImagery.backgroundLayers.length > 0) {\n this.setBaseLayerSettings(currentImagery.backgroundBase);\n this.setLayerSettings(currentImagery.backgroundLayers);\n viewport.invalidateScene();\n }\n }));\n }\n }\n\n let hasLoadedTileTree = false;\n const layerHandler = this._ref.treeOwner.load()?.layerHandler;\n if (undefined === layerHandler) {\n return hasLoadedTileTree; // Not loaded yet - or no layerHandler on tree.\n }\n\n layerHandler.layerImageryTrees.length = 0;\n if (0 === this._layerTrees.length) {\n return !this.isOverlay;\n }\n\n let treeIndex = this._layerTrees.length - 1;\n // Start displaying at the highest completely opaque layer...\n for (; treeIndex >= 1; treeIndex--) {\n const layerTreeRef = this._layerTrees[treeIndex];\n if (layerTreeRef?.isOpaque)\n break; // This layer is completely opaque and will obscure all others so ignore lower ones.\n }\n\n for (; treeIndex < this._layerTrees.length; treeIndex++) {\n const layerTreeRef = this._layerTrees[treeIndex];\n const hasValidTileTree = layerTreeRef && TileTreeLoadStatus.NotFound !== layerTreeRef.treeOwner.loadStatus;\n const isImageryMapLayer = layerTreeRef instanceof ImageryMapLayerTreeReference;\n const isLayerVisible = (isImageryMapLayer || (!isImageryMapLayer && layerTreeRef?.layerSettings.visible));\n\n if (!this._ref.shouldDrapeLayer(layerTreeRef)) {\n // If the layer is not to be displayed, then we should skip adding it to the tile tree.\n // The _shouldDrapeLayerFunc() function is sent in from MapTileTreeReference or RealityTileTree.\n hasLoadedTileTree = true; // ###TODO had to set this to true so addToScene actually works. alternative?\n continue;\n }\n\n // Load tile tree for each configured layer.\n // Note: Non-visible imagery layer are always added to allow proper tile tree scale range visibility reporting.\n if (hasValidTileTree\n && isLayerVisible\n && !layerTreeRef.layerSettings.allSubLayersInvisible) {\n const layerTree = layerTreeRef.treeOwner.load();\n if (layerTree !== undefined) {\n hasLoadedTileTree = true;\n } else {\n // Let's continue, there might be loaded tile tree in the list\n continue;\n }\n\n // Add loaded TileTree\n const baseImageryLayer = this._baseImageryLayerIncluded && (treeIndex === 0);\n if (layerTree instanceof ImageryMapTileTree) {\n layerHandler.addImageryLayer(layerTree, layerTreeRef.layerSettings, treeIndex, baseImageryLayer);\n } else if (layerTreeRef instanceof ModelMapLayerTileTreeReference)\n layerHandler.addModelLayer(layerTreeRef, context);\n }\n }\n\n return hasLoadedTileTree;\n }\n\n public setBaseLayerSettings(baseLayerSettings: BaseLayerSettings) {\n let tree;\n this._baseLayerSettings = baseLayerSettings;\n\n if (baseLayerSettings instanceof MapLayerSettings) {\n tree = createMapLayerTreeReference(baseLayerSettings, 0, this._ref.iModel);\n this._baseColor = undefined;\n this._baseTransparent = baseLayerSettings.transparency > 0;\n } else {\n this._baseColor = baseLayerSettings;\n this._baseTransparent = this._baseColor.getTransparency() > 0;\n }\n\n if (tree) {\n if (this._baseImageryLayerIncluded)\n this._layerTrees[0] = tree;\n else\n this._layerTrees.splice(0, 0, tree);\n } else {\n if (this._baseImageryLayerIncluded)\n this._layerTrees.shift();\n }\n this._baseImageryLayerIncluded = tree !== undefined;\n this.clearLayers();\n }\n\n public clearLayers() {\n const layerHandler = this._ref.treeOwner.tileTree?.layerHandler;\n if (undefined !== layerHandler) {\n layerHandler.clearLayers();\n }\n }\n\n public setLayerSettings(layerSettings: MapLayerSettings[]) {\n this._layerSettings = layerSettings;\n const baseLayerIndex = this._baseImageryLayerIncluded ? 1 : 0;\n\n this._layerTrees.length = Math.min(layerSettings.length + baseLayerIndex, this._layerTrees.length); // Truncate if number of layers reduced.\n for (let i = 0; i < layerSettings.length; i++) {\n const treeIndex = i + baseLayerIndex;\n if (treeIndex >= this._layerTrees.length || !this._layerTrees[treeIndex]?.layerSettings.displayMatches(layerSettings[i]))\n this._layerTrees[treeIndex] = expectDefined(createMapLayerTreeReference(layerSettings[i], treeIndex, this._ref.iModel));\n }\n this.clearLayers();\n }\n}\n"]}
@@ -45,6 +45,7 @@ declare class PrimaryTreeReference extends TileTreeReference {
45
45
  protected getHiddenLineSettings(_tree: TileTree): HiddenLine.Settings | undefined;
46
46
  get castsShadows(): boolean;
47
47
  protected get isPlanProjection(): boolean;
48
+ detachLayerListeners(): void;
48
49
  discloseTileTrees(trees: DisclosedTileTreeSet): void;
49
50
  protected getClipVolume(_tree: TileTree): RenderClipVolume | undefined;
50
51
  canSupplyToolTip(): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"PrimaryTileTree.d.ts","sourceRoot":"","sources":["../../../../src/internal/tile/PrimaryTileTree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PrimaryTileTree.d.ts","sourceRoot":"","sources":["../../../../src/internal/tile/PrimaryTileTree.ts"],"names":[],"mappings":"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"}
@@ -165,6 +165,9 @@ class PrimaryTreeReference extends internal_1.TileTreeReference {
165
165
  get isPlanProjection() {
166
166
  return false;
167
167
  }
168
+ detachLayerListeners() {
169
+ this._layerRefHandler.detachFromDisplayStyle();
170
+ }
168
171
  discloseTileTrees(trees) {
169
172
  super.discloseTileTrees(trees);
170
173
  this._layerRefHandler.discloseTileTrees(trees);
@@ -525,6 +528,16 @@ class SpatialModelRefs {
525
528
  for (const ref of this._animatedRefs)
526
529
  ref.deactivated = deactivated ?? !ref.deactivated;
527
530
  }
531
+ detachLayerListeners() {
532
+ if (this._primaryRef)
533
+ this._primaryRef.detachLayerListeners();
534
+ else if (this._modelRef instanceof internal_1.RealityModelTileTree.Reference)
535
+ this._modelRef.detachLayerListeners();
536
+ for (const ref of this._animatedRefs)
537
+ ref.detachLayerListeners();
538
+ if (this._sectionCutRef)
539
+ this._sectionCutRef.detachLayerListeners();
540
+ }
528
541
  get _primaryRef() {
529
542
  if (!this._isPrimaryRef)
530
543
  return undefined;
@@ -554,7 +567,16 @@ class SpatialRefs {
554
567
  this._allLoaded = false;
555
568
  }
556
569
  attachToViewport() { }
557
- detachFromViewport() { }
570
+ detachFromViewport() {
571
+ for (const refs of this._refs.values())
572
+ refs.detachLayerListeners();
573
+ for (const refs of this._swapRefs.values())
574
+ refs.detachLayerListeners();
575
+ for (const refs of this._sectionCutOnlyRefs.values())
576
+ refs.detachLayerListeners();
577
+ for (const refs of this._swapSectionCutOnlyRefs.values())
578
+ refs.detachLayerListeners();
579
+ }
558
580
  *[Symbol.iterator]() {
559
581
  this.load();
560
582
  for (const modelRef of this._refs.values())
@@ -640,7 +662,10 @@ class SpatialRefs {
640
662
  prev = this._swapRefs;
641
663
  }
642
664
  let modelRefs = prev.get(modelId);
643
- if (!modelRefs) {
665
+ if (modelRefs) {
666
+ prev.delete(modelId);
667
+ }
668
+ else {
644
669
  const model = this._view.iModel.models.getLoaded(modelId)?.asGeometricModel3d;
645
670
  if (model) {
646
671
  modelRefs = new SpatialModelRefs(model, this._view, excluded);
@@ -651,6 +676,11 @@ class SpatialRefs {
651
676
  if (modelRefs)
652
677
  cur.set(modelId, modelRefs);
653
678
  }
679
+ // Detach event listeners from model refs that are no longer in the selector.
680
+ for (const dropped of this._swapRefs.values())
681
+ dropped.detachLayerListeners();
682
+ for (const dropped of this._swapSectionCutOnlyRefs.values())
683
+ dropped.detachLayerListeners();
654
684
  }
655
685
  }
656
686
  //# sourceMappingURL=PrimaryTileTree.js.map