@itwin/core-frontend 3.6.0-dev.22 → 3.6.0-dev.32

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 (71) hide show
  1. package/lib/cjs/NoRenderApp.d.ts.map +1 -1
  2. package/lib/cjs/NoRenderApp.js +3 -0
  3. package/lib/cjs/NoRenderApp.js.map +1 -1
  4. package/lib/cjs/Tiles.d.ts +4 -0
  5. package/lib/cjs/Tiles.d.ts.map +1 -1
  6. package/lib/cjs/Tiles.js +11 -0
  7. package/lib/cjs/Tiles.js.map +1 -1
  8. package/lib/cjs/Viewport.d.ts +4 -0
  9. package/lib/cjs/Viewport.d.ts.map +1 -1
  10. package/lib/cjs/Viewport.js +4 -0
  11. package/lib/cjs/Viewport.js.map +1 -1
  12. package/lib/cjs/render/MockRender.d.ts.map +1 -1
  13. package/lib/cjs/render/MockRender.js +3 -0
  14. package/lib/cjs/render/MockRender.js.map +1 -1
  15. package/lib/cjs/tile/TileTreeReference.d.ts +3 -0
  16. package/lib/cjs/tile/TileTreeReference.d.ts.map +1 -1
  17. package/lib/cjs/tile/TileTreeReference.js +3 -0
  18. package/lib/cjs/tile/TileTreeReference.js.map +1 -1
  19. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.d.ts.map +1 -1
  20. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js +1 -2
  21. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  22. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +2 -2
  23. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  24. package/lib/cjs/tile/map/ImageryTileTree.d.ts +1 -0
  25. package/lib/cjs/tile/map/ImageryTileTree.d.ts.map +1 -1
  26. package/lib/cjs/tile/map/ImageryTileTree.js +3 -0
  27. package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
  28. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts +7 -3
  29. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  30. package/lib/cjs/tile/map/MapLayerImageryProvider.js +12 -8
  31. package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
  32. package/lib/cjs/tile/map/MapTiledGraphicsProvider.d.ts +1 -0
  33. package/lib/cjs/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
  34. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js +4 -0
  35. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  36. package/lib/esm/NoRenderApp.d.ts.map +1 -1
  37. package/lib/esm/NoRenderApp.js +3 -0
  38. package/lib/esm/NoRenderApp.js.map +1 -1
  39. package/lib/esm/Tiles.d.ts +4 -0
  40. package/lib/esm/Tiles.d.ts.map +1 -1
  41. package/lib/esm/Tiles.js +11 -0
  42. package/lib/esm/Tiles.js.map +1 -1
  43. package/lib/esm/Viewport.d.ts +4 -0
  44. package/lib/esm/Viewport.d.ts.map +1 -1
  45. package/lib/esm/Viewport.js +4 -0
  46. package/lib/esm/Viewport.js.map +1 -1
  47. package/lib/esm/render/MockRender.d.ts.map +1 -1
  48. package/lib/esm/render/MockRender.js +3 -0
  49. package/lib/esm/render/MockRender.js.map +1 -1
  50. package/lib/esm/tile/TileTreeReference.d.ts +3 -0
  51. package/lib/esm/tile/TileTreeReference.d.ts.map +1 -1
  52. package/lib/esm/tile/TileTreeReference.js +3 -0
  53. package/lib/esm/tile/TileTreeReference.js.map +1 -1
  54. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.d.ts.map +1 -1
  55. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js +1 -2
  56. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  57. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +2 -2
  58. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  59. package/lib/esm/tile/map/ImageryTileTree.d.ts +1 -0
  60. package/lib/esm/tile/map/ImageryTileTree.d.ts.map +1 -1
  61. package/lib/esm/tile/map/ImageryTileTree.js +3 -0
  62. package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
  63. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts +7 -3
  64. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  65. package/lib/esm/tile/map/MapLayerImageryProvider.js +12 -8
  66. package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
  67. package/lib/esm/tile/map/MapTiledGraphicsProvider.d.ts +1 -0
  68. package/lib/esm/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
  69. package/lib/esm/tile/map/MapTiledGraphicsProvider.js +4 -0
  70. package/lib/esm/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  71. package/package.json +20 -20
@@ -1 +1 @@
1
- {"version":3,"file":"MockRender.d.ts","sourceRoot":"","sources":["../../../src/render/MockRender.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MockRender.d.ts","sourceRoot":"","sources":["../../../src/render/MockRender.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.MockRender = void 0;
8
8
  const core_bentley_1 = require("@itwin/core-bentley");
9
+ const core_common_1 = require("@itwin/core-common");
9
10
  const IModelApp_1 = require("../IModelApp");
10
11
  const ViewRect_1 = require("../ViewRect");
11
12
  const GeometryListBuilder_1 = require("./primitives/geometry/GeometryListBuilder");
@@ -160,8 +161,10 @@ var MockRender;
160
161
  */
161
162
  class App {
162
163
  static async startup(opts) {
164
+ var _a;
163
165
  opts = opts ? opts : {};
164
166
  opts.renderSys = this.systemFactory();
167
+ opts.localization = (_a = opts.localization) !== null && _a !== void 0 ? _a : new core_common_1.EmptyLocalization();
165
168
  await IModelApp_1.IModelApp.startup(opts);
166
169
  }
167
170
  static async shutdown() {
@@ -1 +1 @@
1
- {"version":3,"file":"MockRender.js","sourceRoot":"","sources":["../../../src/render/MockRender.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;AAE/F,sDAA8C;AAG9C,4CAA2D;AAE3D,0CAAuC;AAKvC,mFAA6E;AAK7E,mDAA6D;AAG7D,iDAAiF;AACjF,iDAA8C;AAG9C;;;;;;;;;;GAUG;AACH,IAAiB,UAAU,CAiJ1B;AAjJD,WAAiB,UAAU;IACzB,gBAAgB;IAChB,MAAsB,MAAO,SAAQ,2BAAY;QAC/C,YAAuC,OAAqB;YAAI,KAAK,EAAE,CAAC;YAAjC,YAAO,GAAP,OAAO,CAAc;QAAa,CAAC;QAE1E,IAAW,YAAY,KAAmB,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAChE,IAAW,yBAAyB,KAAK,OAAO,KAAK,CAAC,CAAC,CAAC;QACxD,IAAW,gBAAgB,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAW,gBAAgB,CAAC,SAAiB,IAAI,CAAC;QAC3C,WAAW,CAAC,MAAa,IAAI,CAAC;QAC9B,cAAc,CAAC,SAAuB,IAAI,CAAC;QAC3C,iBAAiB,CAAC,KAAkB,IAAI,CAAC;QACzC,gBAAgB,CAAC,KAAiB,IAAI,CAAC;QACvC,SAAS,CAAC,UAAmB,IAAI,CAAC;QAClC,cAAc,KAAK,OAAO,KAAK,CAAC,CAAC,CAAC;QAClC,UAAU,CAAC,KAAe,EAAE,SAAyB,EAAE,QAAwB,EAAE,oBAA6B,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC/I,IAAW,kBAAkB,KAAuB,OAAO,EAAE,CAAC,CAAC,CAAC;QAChE,IAAW,kBAAkB,CAAC,QAA0B,IAAI,CAAC;KAC9D;IAhBqB,iBAAM,SAgB3B,CAAA;IAED,gBAAgB;IAChB,MAAa,cAAe,SAAQ,MAAM;QACxC,YAAmB,MAAoB,EAAmB,OAA0B;YAAI,KAAK,CAAC,MAAM,CAAC,CAAC;YAA5C,YAAO,GAAP,OAAO,CAAmB;QAAmB,CAAC;QAExG,IAAW,QAAQ,KAAK,OAAO,IAAI,mBAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAClG,WAAW,CAAC,KAAe,EAAE,KAAc,IAAI,CAAC;KACxD;IALY,yBAAc,iBAK1B,CAAA;IAED,gBAAgB;IAChB,MAAa,eAAgB,SAAQ,MAAM;QACzC,YAAmB,MAAoB,EAAmB,SAAmB;YAAI,KAAK,CAAC,MAAM,CAAC,CAAC;YAArC,cAAS,GAAT,SAAS,CAAU;QAAmB,CAAC;QAEjG,IAAW,QAAQ,KAAK,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QACzC,WAAW,CAAC,IAAc,EAAE,KAAc,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACrF;IALY,0BAAe,kBAK3B,CAAA;IAED,gBAAgB;IAChB,MAAa,OAAQ,SAAQ,sCAAgB;QAC3C,YAAmB,MAAc,EAAE,OAAoE;YACrG,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACzB,CAAC;KACF;IAJY,kBAAO,UAInB,CAAA;IAED,gBAAgB;IAChB,MAAa,OAAQ,SAAQ,6BAAa;QACxC,gBAAuB,KAAK,EAAE,CAAC,CAAC,CAAC;QAE1B,OAAO,KAAK,CAAC;QACb,iBAAiB,CAAC,MAA+B,IAAU,CAAC;KACpE;IALY,kBAAO,UAKnB,CAAA;IAED,gBAAgB;IAChB,MAAa,IAAK,SAAQ,OAAO;QAC/B,YAAmC,QAAyB;YAAI,KAAK,EAAE,CAAC;YAArC,aAAQ,GAAR,QAAQ,CAAiB;QAAa,CAAC;QAE1D,OAAO;YACrB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ;gBACjC,IAAA,sBAAO,EAAC,OAAO,CAAC,CAAC;YAEnB,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QAC3B,CAAC;KACF;IATY,eAAI,OAShB,CAAA;IAED,gBAAgB;IAChB,MAAa,MAAO,SAAQ,OAAO;QACjC,YAAmC,MAAqB,EAAkB,SAAoB,EAAkB,OAA8B;YAAI,KAAK,EAAE,CAAC;YAAvH,WAAM,GAAN,MAAM,CAAe;YAAkB,cAAS,GAAT,SAAS,CAAW;YAAkB,YAAO,GAAP,OAAO,CAAuB;QAAa,CAAC;QAE5I,OAAO,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;KACrD;IAJY,iBAAM,SAIlB,CAAA;IAED,gBAAgB;IAChB,MAAa,KAAM,SAAQ,OAAO;QAChC,YAAmC,OAAsB,EAAkB,YAAgC,EAAkB,KAA0B;YAAI,KAAK,EAAE,CAAC;YAAhI,YAAO,GAAP,OAAO,CAAe;YAAkB,iBAAY,GAAZ,YAAY,CAAoB;YAAkB,UAAK,GAAL,KAAK,CAAqB;QAAa,CAAC;QAErJ,OAAO;YACrB,IAAA,sBAAO,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;KACF;IANY,gBAAK,QAMjB,CAAA;IAED,gBAAgB;IAChB,MAAa,QAAQ;QACZ,OAAO,KAAW,CAAC;QACnB,iBAAiB,KAAW,CAAC;KACrC;IAHY,mBAAQ,WAGpB,CAAA;IAED,gBAAgB;IAChB,MAAa,WAAW;QACf,OAAO,KAAW,CAAC;QACnB,iBAAiB,KAAW,CAAC;KACrC;IAHY,sBAAW,cAGvB,CAAA;IAED,gBAAgB;IAChB,MAAa,MAAO,SAAQ,2BAAY;QACtC,IAAW,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC;QAC9B,OAAO,KAAW,CAAC;QAC1B,IAAoB,cAAc,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC;QAErD,gBAAuB,KAAK,EAAE,CAAC,CAAC,CAAC;QAE1B,UAAU,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC;QAEvC,YAAY,CAAC,MAAyB,IAAoB,OAAO,IAAI,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;QACpG,qBAAqB,CAAC,IAAc,IAAkB,OAAO,IAAI,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QAE/F,aAAa,CAAC,OAAoE;YACvF,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACpC,CAAC;QAEM,iBAAiB,CAAC,UAA2B,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC/E,mBAAmB,CAAC,MAAqB,EAAE,SAAoB,EAAE,OAA8B,IAAI,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;QACnJ,WAAW,CAAC,OAAsB,EAAE,QAA4B,EAAE,KAA0B,IAAI,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAEpI,UAAU,CAAC,OAAmB,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC;QACzD,cAAc,CAAC,OAAuB,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC;QACjE,iBAAiB,CAAC,OAA0B,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC;QACvE,gBAAgB,CAAC,KAAqB,EAAE,OAAyB,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC;QAC5F,mBAAmB,KAAK,OAAO,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC;QAE/C,kBAAkB,KAAK,OAAO,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC/C,sBAAsB,KAAK,OAAO,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC;QACnD,yBAAyB,KAAK,OAAO,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC;QACtD,iBAAiB,KAAK,OAAO,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC;KAClE;IA9BY,iBAAM,SA8BlB,CAAA;IAKD;;OAEG;IACH,MAAa,GAAG;QAGP,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAuB;YACjD,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACtC,MAAM,qBAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;QACM,MAAM,CAAC,KAAK,CAAC,QAAQ;YAC1B,IAAI,CAAC,aAAa,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,yBAAyB,EAAE,CAAC;YAC3D,MAAM,qBAAS,CAAC,QAAQ,EAAE,CAAC;QAC7B,CAAC;QAES,MAAM,CAAC,yBAAyB,KAAK,OAAO,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC;;IAZvD,iBAAa,GAAkB,GAAG,EAAE,CAAC,GAAG,CAAC,yBAAyB,EAAE,CAAC;IADxE,cAAG,MAcf,CAAA;AACH,CAAC,EAjJgB,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAiJ1B","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport { dispose } from \"@itwin/core-bentley\";\r\nimport { Transform } from \"@itwin/core-geometry\";\r\nimport { ElementAlignedBox3d, PackedFeatureTable } from \"@itwin/core-common\";\r\nimport { IModelApp, IModelAppOptions } from \"../IModelApp\";\r\nimport { IModelConnection } from \"../IModelConnection\";\r\nimport { ViewRect } from \"../ViewRect\";\r\nimport { Decorations } from \"./Decorations\";\r\nimport { GraphicBranch, GraphicBranchOptions } from \"./GraphicBranch\";\r\nimport { CustomGraphicBuilderOptions, ViewportGraphicBuilderOptions } from \"./GraphicBuilder\";\r\nimport { Pixel } from \"./Pixel\";\r\nimport { PrimitiveBuilder } from \"./primitives/geometry/GeometryListBuilder\";\r\nimport { PointCloudArgs } from \"./primitives/PointCloudPrimitive\";\r\nimport { PointStringParams } from \"./primitives/PointStringParams\";\r\nimport { PolylineParams } from \"./primitives/PolylineParams\";\r\nimport { MeshParams } from \"./primitives/VertexTable\";\r\nimport { GraphicList, RenderGraphic } from \"./RenderGraphic\";\r\nimport { RenderMemory } from \"./RenderMemory\";\r\nimport { RenderPlan } from \"./RenderPlan\";\r\nimport { RenderAreaPattern, RenderGeometry, RenderSystem } from \"./RenderSystem\";\r\nimport { RenderTarget } from \"./RenderTarget\";\r\nimport { Scene } from \"./Scene\";\r\n\r\n/** Contains extensible mock implementations of the various components of a RenderSystem, intended for use in tests.\r\n * Use these for tests instead of the default RenderSystem wherever possible because:\r\n * (1) Electron has a bug on Windows in which it fails to obtain a WebGLRenderingContext when running inside a VM (e.g., during CI job); and\r\n * (2) To decouple the logic which uses aspects of the RenderSystem from the full implementation.\r\n * Any and all of these types can be extended for the purposes of specific tests.\r\n * To use this:\r\n * (1) If overriding anything in the implementation supplied herein, pass a SystemFactory function to MockRender.App.systemFactory.\r\n * (2) Call MockRender.App.startup() instead of IModelApp.startup() before tests begin.\r\n * (3) Likewise call MockRender.App.shutdown() when finished. This resets the SystemFactory to its default.\r\n * @internal\r\n */\r\nexport namespace MockRender {\r\n /** @internal */\r\n export abstract class Target extends RenderTarget {\r\n protected constructor(private readonly _system: RenderSystem) { super(); }\r\n\r\n public get renderSystem(): RenderSystem { return this._system; }\r\n public get wantInvertBlackBackground() { return false; }\r\n public get analysisFraction() { return 0; }\r\n public set analysisFraction(_fraction: number) { }\r\n public changeScene(_scene: Scene) { }\r\n public changeDynamics(_dynamics?: GraphicList) { }\r\n public changeDecorations(_decs: Decorations) { }\r\n public changeRenderPlan(_plan: RenderPlan) { }\r\n public drawFrame(_sceneTime?: number) { }\r\n public updateViewRect() { return false; }\r\n public readPixels(_rect: ViewRect, _selector: Pixel.Selector, receiver: Pixel.Receiver, _excludeNonLocatable: boolean) { receiver(undefined); }\r\n public get screenSpaceEffects(): Iterable<string> { return []; }\r\n public set screenSpaceEffects(_effects: Iterable<string>) { }\r\n }\r\n\r\n /** @internal */\r\n export class OnScreenTarget extends Target {\r\n public constructor(system: RenderSystem, private readonly _canvas: HTMLCanvasElement) { super(system); }\r\n\r\n public get viewRect() { return new ViewRect(0, 0, this._canvas.clientWidth, this._canvas.clientHeight); }\r\n public setViewRect(_rect: ViewRect, _temp: boolean) { }\r\n }\r\n\r\n /** @internal */\r\n export class OffScreenTarget extends Target {\r\n public constructor(system: RenderSystem, private readonly _viewRect: ViewRect) { super(system); }\r\n\r\n public get viewRect() { return this._viewRect; }\r\n public setViewRect(rect: ViewRect, _temp: boolean) { this._viewRect.setFrom(rect); }\r\n }\r\n\r\n /** @internal */\r\n export class Builder extends PrimitiveBuilder {\r\n public constructor(system: System, options: CustomGraphicBuilderOptions | ViewportGraphicBuilderOptions) {\r\n super(system, options);\r\n }\r\n }\r\n\r\n /** @internal */\r\n export class Graphic extends RenderGraphic {\r\n public constructor() { super(); }\r\n\r\n public dispose() { }\r\n public collectStatistics(_stats: RenderMemory.Statistics): void { }\r\n }\r\n\r\n /** @internal */\r\n export class List extends Graphic {\r\n public constructor(public readonly graphics: RenderGraphic[]) { super(); }\r\n\r\n public override dispose() {\r\n for (const graphic of this.graphics)\r\n dispose(graphic);\r\n\r\n this.graphics.length = 0;\r\n }\r\n }\r\n\r\n /** @internal */\r\n export class Branch extends Graphic {\r\n public constructor(public readonly branch: GraphicBranch, public readonly transform: Transform, public readonly options?: GraphicBranchOptions) { super(); }\r\n\r\n public override dispose() { this.branch.dispose(); }\r\n }\r\n\r\n /** @internal */\r\n export class Batch extends Graphic {\r\n public constructor(public readonly graphic: RenderGraphic, public readonly featureTable: PackedFeatureTable, public readonly range: ElementAlignedBox3d) { super(); }\r\n\r\n public override dispose() {\r\n dispose(this.graphic);\r\n }\r\n }\r\n\r\n /** @internal */\r\n export class Geometry implements RenderGeometry {\r\n public dispose(): void { }\r\n public collectStatistics(): void { }\r\n }\r\n\r\n /** @internal */\r\n export class AreaPattern implements RenderAreaPattern {\r\n public dispose(): void { }\r\n public collectStatistics(): void { }\r\n }\r\n\r\n /** @internal */\r\n export class System extends RenderSystem {\r\n public get isValid() { return true; }\r\n public dispose(): void { }\r\n public override get maxTextureSize() { return 4096; }\r\n\r\n public constructor() { super(); }\r\n\r\n public doIdleWork(): boolean { return false; }\r\n\r\n public createTarget(canvas: HTMLCanvasElement): OnScreenTarget { return new OnScreenTarget(this, canvas); }\r\n public createOffscreenTarget(rect: ViewRect): RenderTarget { return new OffScreenTarget(this, rect); }\r\n\r\n public createGraphic(options: CustomGraphicBuilderOptions | ViewportGraphicBuilderOptions) {\r\n return new Builder(this, options);\r\n }\r\n\r\n public createGraphicList(primitives: RenderGraphic[]) { return new List(primitives); }\r\n public createGraphicBranch(branch: GraphicBranch, transform: Transform, options?: GraphicBranchOptions) { return new Branch(branch, transform, options); }\r\n public createBatch(graphic: RenderGraphic, features: PackedFeatureTable, range: ElementAlignedBox3d) { return new Batch(graphic, features, range); }\r\n\r\n public override createMesh(_params: MeshParams) { return new Graphic(); }\r\n public override createPolyline(_params: PolylineParams) { return new Graphic(); }\r\n public override createPointString(_params: PointStringParams) { return new Graphic(); }\r\n public override createPointCloud(_args: PointCloudArgs, _imodel: IModelConnection) { return new Graphic(); }\r\n public override createRenderGraphic() { return new Graphic(); }\r\n\r\n public override createMeshGeometry() { return new Geometry(); }\r\n public override createPolylineGeometry() { return new Geometry(); }\r\n public override createPointStringGeometry() { return new Geometry(); }\r\n public override createAreaPattern() { return new AreaPattern(); }\r\n }\r\n\r\n /** @internal */\r\n export type SystemFactory = () => RenderSystem;\r\n\r\n /** An implementation of IModelApp which uses a MockRender.System by default.\r\n * @internal\r\n */\r\n export class App {\r\n public static systemFactory: SystemFactory = () => App.createDefaultRenderSystem();\r\n\r\n public static async startup(opts?: IModelAppOptions): Promise<void> {\r\n opts = opts ? opts : {};\r\n opts.renderSys = this.systemFactory();\r\n await IModelApp.startup(opts);\r\n }\r\n public static async shutdown(): Promise<void> {\r\n this.systemFactory = () => App.createDefaultRenderSystem();\r\n await IModelApp.shutdown();\r\n }\r\n\r\n protected static createDefaultRenderSystem() { return new System(); }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"MockRender.js","sourceRoot":"","sources":["../../../src/render/MockRender.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport { dispose } from \"@itwin/core-bentley\";\r\nimport { Transform } from \"@itwin/core-geometry\";\r\nimport { ElementAlignedBox3d, EmptyLocalization, PackedFeatureTable } from \"@itwin/core-common\";\r\nimport { IModelApp, IModelAppOptions } from \"../IModelApp\";\r\nimport { IModelConnection } from \"../IModelConnection\";\r\nimport { ViewRect } from \"../ViewRect\";\r\nimport { Decorations } from \"./Decorations\";\r\nimport { GraphicBranch, GraphicBranchOptions } from \"./GraphicBranch\";\r\nimport { CustomGraphicBuilderOptions, ViewportGraphicBuilderOptions } from \"./GraphicBuilder\";\r\nimport { Pixel } from \"./Pixel\";\r\nimport { PrimitiveBuilder } from \"./primitives/geometry/GeometryListBuilder\";\r\nimport { PointCloudArgs } from \"./primitives/PointCloudPrimitive\";\r\nimport { PointStringParams } from \"./primitives/PointStringParams\";\r\nimport { PolylineParams } from \"./primitives/PolylineParams\";\r\nimport { MeshParams } from \"./primitives/VertexTable\";\r\nimport { GraphicList, RenderGraphic } from \"./RenderGraphic\";\r\nimport { RenderMemory } from \"./RenderMemory\";\r\nimport { RenderPlan } from \"./RenderPlan\";\r\nimport { RenderAreaPattern, RenderGeometry, RenderSystem } from \"./RenderSystem\";\r\nimport { RenderTarget } from \"./RenderTarget\";\r\nimport { Scene } from \"./Scene\";\r\n\r\n/** Contains extensible mock implementations of the various components of a RenderSystem, intended for use in tests.\r\n * Use these for tests instead of the default RenderSystem wherever possible because:\r\n * (1) Electron has a bug on Windows in which it fails to obtain a WebGLRenderingContext when running inside a VM (e.g., during CI job); and\r\n * (2) To decouple the logic which uses aspects of the RenderSystem from the full implementation.\r\n * Any and all of these types can be extended for the purposes of specific tests.\r\n * To use this:\r\n * (1) If overriding anything in the implementation supplied herein, pass a SystemFactory function to MockRender.App.systemFactory.\r\n * (2) Call MockRender.App.startup() instead of IModelApp.startup() before tests begin.\r\n * (3) Likewise call MockRender.App.shutdown() when finished. This resets the SystemFactory to its default.\r\n * @internal\r\n */\r\nexport namespace MockRender {\r\n /** @internal */\r\n export abstract class Target extends RenderTarget {\r\n protected constructor(private readonly _system: RenderSystem) { super(); }\r\n\r\n public get renderSystem(): RenderSystem { return this._system; }\r\n public get wantInvertBlackBackground() { return false; }\r\n public get analysisFraction() { return 0; }\r\n public set analysisFraction(_fraction: number) { }\r\n public changeScene(_scene: Scene) { }\r\n public changeDynamics(_dynamics?: GraphicList) { }\r\n public changeDecorations(_decs: Decorations) { }\r\n public changeRenderPlan(_plan: RenderPlan) { }\r\n public drawFrame(_sceneTime?: number) { }\r\n public updateViewRect() { return false; }\r\n public readPixels(_rect: ViewRect, _selector: Pixel.Selector, receiver: Pixel.Receiver, _excludeNonLocatable: boolean) { receiver(undefined); }\r\n public get screenSpaceEffects(): Iterable<string> { return []; }\r\n public set screenSpaceEffects(_effects: Iterable<string>) { }\r\n }\r\n\r\n /** @internal */\r\n export class OnScreenTarget extends Target {\r\n public constructor(system: RenderSystem, private readonly _canvas: HTMLCanvasElement) { super(system); }\r\n\r\n public get viewRect() { return new ViewRect(0, 0, this._canvas.clientWidth, this._canvas.clientHeight); }\r\n public setViewRect(_rect: ViewRect, _temp: boolean) { }\r\n }\r\n\r\n /** @internal */\r\n export class OffScreenTarget extends Target {\r\n public constructor(system: RenderSystem, private readonly _viewRect: ViewRect) { super(system); }\r\n\r\n public get viewRect() { return this._viewRect; }\r\n public setViewRect(rect: ViewRect, _temp: boolean) { this._viewRect.setFrom(rect); }\r\n }\r\n\r\n /** @internal */\r\n export class Builder extends PrimitiveBuilder {\r\n public constructor(system: System, options: CustomGraphicBuilderOptions | ViewportGraphicBuilderOptions) {\r\n super(system, options);\r\n }\r\n }\r\n\r\n /** @internal */\r\n export class Graphic extends RenderGraphic {\r\n public constructor() { super(); }\r\n\r\n public dispose() { }\r\n public collectStatistics(_stats: RenderMemory.Statistics): void { }\r\n }\r\n\r\n /** @internal */\r\n export class List extends Graphic {\r\n public constructor(public readonly graphics: RenderGraphic[]) { super(); }\r\n\r\n public override dispose() {\r\n for (const graphic of this.graphics)\r\n dispose(graphic);\r\n\r\n this.graphics.length = 0;\r\n }\r\n }\r\n\r\n /** @internal */\r\n export class Branch extends Graphic {\r\n public constructor(public readonly branch: GraphicBranch, public readonly transform: Transform, public readonly options?: GraphicBranchOptions) { super(); }\r\n\r\n public override dispose() { this.branch.dispose(); }\r\n }\r\n\r\n /** @internal */\r\n export class Batch extends Graphic {\r\n public constructor(public readonly graphic: RenderGraphic, public readonly featureTable: PackedFeatureTable, public readonly range: ElementAlignedBox3d) { super(); }\r\n\r\n public override dispose() {\r\n dispose(this.graphic);\r\n }\r\n }\r\n\r\n /** @internal */\r\n export class Geometry implements RenderGeometry {\r\n public dispose(): void { }\r\n public collectStatistics(): void { }\r\n }\r\n\r\n /** @internal */\r\n export class AreaPattern implements RenderAreaPattern {\r\n public dispose(): void { }\r\n public collectStatistics(): void { }\r\n }\r\n\r\n /** @internal */\r\n export class System extends RenderSystem {\r\n public get isValid() { return true; }\r\n public dispose(): void { }\r\n public override get maxTextureSize() { return 4096; }\r\n\r\n public constructor() { super(); }\r\n\r\n public doIdleWork(): boolean { return false; }\r\n\r\n public createTarget(canvas: HTMLCanvasElement): OnScreenTarget { return new OnScreenTarget(this, canvas); }\r\n public createOffscreenTarget(rect: ViewRect): RenderTarget { return new OffScreenTarget(this, rect); }\r\n\r\n public createGraphic(options: CustomGraphicBuilderOptions | ViewportGraphicBuilderOptions) {\r\n return new Builder(this, options);\r\n }\r\n\r\n public createGraphicList(primitives: RenderGraphic[]) { return new List(primitives); }\r\n public createGraphicBranch(branch: GraphicBranch, transform: Transform, options?: GraphicBranchOptions) { return new Branch(branch, transform, options); }\r\n public createBatch(graphic: RenderGraphic, features: PackedFeatureTable, range: ElementAlignedBox3d) { return new Batch(graphic, features, range); }\r\n\r\n public override createMesh(_params: MeshParams) { return new Graphic(); }\r\n public override createPolyline(_params: PolylineParams) { return new Graphic(); }\r\n public override createPointString(_params: PointStringParams) { return new Graphic(); }\r\n public override createPointCloud(_args: PointCloudArgs, _imodel: IModelConnection) { return new Graphic(); }\r\n public override createRenderGraphic() { return new Graphic(); }\r\n\r\n public override createMeshGeometry() { return new Geometry(); }\r\n public override createPolylineGeometry() { return new Geometry(); }\r\n public override createPointStringGeometry() { return new Geometry(); }\r\n public override createAreaPattern() { return new AreaPattern(); }\r\n }\r\n\r\n /** @internal */\r\n export type SystemFactory = () => RenderSystem;\r\n\r\n /** An implementation of IModelApp which uses a MockRender.System by default.\r\n * @internal\r\n */\r\n export class App {\r\n public static systemFactory: SystemFactory = () => App.createDefaultRenderSystem();\r\n\r\n public static async startup(opts?: IModelAppOptions): Promise<void> {\r\n opts = opts ? opts : {};\r\n opts.renderSys = this.systemFactory();\r\n opts.localization = opts.localization ?? new EmptyLocalization();\r\n await IModelApp.startup(opts);\r\n }\r\n public static async shutdown(): Promise<void> {\r\n this.systemFactory = () => App.createDefaultRenderSystem();\r\n await IModelApp.shutdown();\r\n }\r\n\r\n protected static createDefaultRenderSystem() { return new System(); }\r\n }\r\n}\r\n"]}
@@ -36,6 +36,9 @@ export declare enum TileGraphicType {
36
36
  export declare abstract class TileTreeReference {
37
37
  /** The owner of the currently-referenced [[TileTree]]. Do not store a direct reference to it, because it may change or become disposed at any time. */
38
38
  abstract get treeOwner(): TileTreeOwner;
39
+ /** Force a new tree owner / tile tree to be created for the current tile tree reference
40
+ /* @internal */
41
+ resetTreeOwner(): void;
39
42
  /** Disclose *all* TileTrees use by this reference. This may include things like map tiles used for draping on terrain.
40
43
  * Override this and call super if you have such auxiliary trees.
41
44
  * @note Any tree *NOT* disclosed becomes a candidate for *purging* (being unloaded from memory along with all of its tiles and graphics).
@@ -1 +1 @@
1
- {"version":3,"file":"TileTreeReference.d.ts","sourceRoot":"","sources":["../../../src/tile/TileTreeReference.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TileTreeReference.d.ts","sourceRoot":"","sources":["../../../src/tile/TileTreeReference.ts"],"names":[],"mappings":"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"}
@@ -37,6 +37,9 @@ var TileGraphicType;
37
37
  * @extensions
38
38
  */
39
39
  class TileTreeReference /* implements RenderMemory.Consumer */ {
40
+ /** Force a new tree owner / tile tree to be created for the current tile tree reference
41
+ /* @internal */
42
+ resetTreeOwner() { }
40
43
  /** Disclose *all* TileTrees use by this reference. This may include things like map tiles used for draping on terrain.
41
44
  * Override this and call super if you have such auxiliary trees.
42
45
  * @note Any tree *NOT* disclosed becomes a candidate for *purging* (being unloaded from memory along with all of its tiles and graphics).
@@ -1 +1 @@
1
- {"version":3,"file":"TileTreeReference.js","sourceRoot":"","sources":["../../../src/tile/TileTreeReference.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n\r\nimport { assert, BeTimePoint } from \"@itwin/core-bentley\";\r\nimport { Matrix4d, Range1d, Range3d, Transform } from \"@itwin/core-geometry\";\r\nimport { ElementAlignedBox3d, FeatureAppearanceProvider, FrustumPlanes, HiddenLine, PlanarClipMaskPriority, ViewFlagOverrides } from \"@itwin/core-common\";\r\nimport { HitDetail } from \"../HitDetail\";\r\nimport { FeatureSymbology } from \"../render/FeatureSymbology\";\r\nimport { RenderClipVolume } from \"../render/RenderClipVolume\";\r\nimport { RenderMemory } from \"../render/RenderMemory\";\r\nimport { DecorateContext, SceneContext } from \"../ViewContext\";\r\nimport { ScreenViewport } from \"../Viewport\";\r\nimport {\r\n DisclosedTileTreeSet, GeometryTileTreeReference, MapLayerFeatureInfo, TileDrawArgs, TileGeometryCollector, TileTree, TileTreeLoadStatus, TileTreeOwner,\r\n} from \"./internal\";\r\n\r\n/** Describes the type of graphics produced by a [[TileTreeReference]].\r\n * @public\r\n * @extensions\r\n */\r\nexport enum TileGraphicType {\r\n /** Rendered behind all other geometry without depth. */\r\n BackgroundMap = 0,\r\n /** Rendered with normal scene graphics. */\r\n Scene = 1,\r\n /** Rendered in front of all other geometry. */\r\n Overlay = 2,\r\n}\r\n\r\n/** A reference to a [[TileTree]] suitable for drawing within a [[Viewport]]. The reference does not *own* its tile tree - it merely refers to it by\r\n * way of the tree's [[TileTreeOwner]].\r\n * The specific [[TileTree]] referenced by this object may change based on the current state of the Viewport in which it is drawn - for example,\r\n * as a result of changing the RenderMode, or animation settings, or classification settings, etc.\r\n * A reference to a TileTree is typically associated with a [[ViewState]], a [[DisplayStyleState]], or a [[Viewport]].\r\n * Multiple TileTreeReferences can refer to the same TileTree with different parameters and logic - for example, the same background map tiles can be displayed in two viewports with\r\n * differing levels of transparency.\r\n * @see [[TiledGraphicsProvider]] to supply custom [[TileTreeReference]]s to be drawn within a [[Viewport]].\r\n * @public\r\n * @extensions\r\n */\r\nexport abstract class TileTreeReference /* implements RenderMemory.Consumer */ {\r\n /** The owner of the currently-referenced [[TileTree]]. Do not store a direct reference to it, because it may change or become disposed at any time. */\r\n public abstract get treeOwner(): TileTreeOwner;\r\n\r\n /** Disclose *all* TileTrees use by this reference. This may include things like map tiles used for draping on terrain.\r\n * Override this and call super if you have such auxiliary trees.\r\n * @note Any tree *NOT* disclosed becomes a candidate for *purging* (being unloaded from memory along with all of its tiles and graphics).\r\n */\r\n public discloseTileTrees(trees: DisclosedTileTreeSet): void {\r\n const tree = this.treeOwner.tileTree;\r\n if (undefined !== tree)\r\n trees.add(tree);\r\n }\r\n\r\n /** Adds this reference's graphics to the scene. By default this invokes [[draw]]. */\r\n public addToScene(context: SceneContext): void {\r\n const args = this.createDrawArgs(context);\r\n if (undefined !== args)\r\n this.draw(args);\r\n }\r\n\r\n /** Adds this reference's graphics to the scene. By default this invokes [[TileTree.draw]] on the referenced TileTree, if it is loaded. */\r\n public draw(args: TileDrawArgs): void {\r\n args.tree.draw(args);\r\n }\r\n\r\n /** Optionally return a tooltip describing the hit. */\r\n public async getToolTip(_hit: HitDetail): Promise<HTMLElement | string | undefined> { return undefined; }\r\n\r\n /** Optionally return a MapLayerFeatureInfo object describing the hit.].\r\n * @alpha\r\n */\r\n public async getMapFeatureInfo(_hit: HitDetail): Promise<MapLayerFeatureInfo[] | undefined> { return undefined; }\r\n\r\n /** Optionally add any decorations specific to this reference. For example, map tile trees may add a logo image and/or copyright attributions.\r\n * @note This is currently only invoked for background maps and TiledGraphicsProviders - others have no decorations, but if they did implement this it would not be called.\r\n */\r\n public decorate(_context: DecorateContext): void { }\r\n\r\n /** Unions this reference's range with the supplied range to help compute a volume in world space for fitting a viewport to its contents.\r\n * Override this function if a reference's range should not be included in the fit range, or a range different from its tile tree's range should be used.\r\n */\r\n public unionFitRange(union: Range3d): void {\r\n const contentRange = this.computeWorldContentRange();\r\n if (!contentRange.isNull)\r\n union.extendRange(contentRange);\r\n }\r\n\r\n /** @internal */\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n const tree = this.treeOwner.tileTree;\r\n if (undefined !== tree)\r\n tree.collectStatistics(stats);\r\n }\r\n\r\n /** Return true if the tile tree is fully loaded and ready to draw.\r\n * The default implementation returns true if the tile tree loading process completed (whether it resulted in success or failure).\r\n * @note Do *not* override this property - override [[_isLoadingComplete]] instead..\r\n * @public\r\n */\r\n public get isLoadingComplete(): boolean {\r\n switch (this.treeOwner.loadStatus) {\r\n case TileTreeLoadStatus.NotLoaded:\r\n case TileTreeLoadStatus.Loading:\r\n return false;\r\n case TileTreeLoadStatus.NotFound:\r\n return true; // we tried, and failed, to load.\r\n case TileTreeLoadStatus.Loaded:\r\n return this._isLoadingComplete;\r\n }\r\n }\r\n\r\n /** Override if additional asynchronous loading is required after the tile tree is successfully loaded, to indicate when that loading has completed.\r\n * @public\r\n */\r\n protected get _isLoadingComplete(): boolean {\r\n return true;\r\n }\r\n\r\n /** Create context for drawing the tile tree, if it is ready for drawing.\r\n * TileTreeReferences can override individual portions of the context, e.g. apply their own transform.\r\n * Returns undefined if, e.g., the tile tree is not yet loaded.\r\n */\r\n public createDrawArgs(context: SceneContext): TileDrawArgs | undefined {\r\n const tree = this.treeOwner.load();\r\n if (undefined === tree)\r\n return undefined;\r\n\r\n return new TileDrawArgs({\r\n context,\r\n tree,\r\n now: BeTimePoint.now(),\r\n location: this.computeTransform(tree),\r\n viewFlagOverrides: this.getViewFlagOverrides(tree),\r\n clipVolume: this.getClipVolume(tree),\r\n parentsAndChildrenExclusive: tree.parentsAndChildrenExclusive,\r\n symbologyOverrides: this.getSymbologyOverrides(tree),\r\n appearanceProvider: this.getAppearanceProvider(tree),\r\n hiddenLineSettings: this.getHiddenLineSettings(tree),\r\n animationTransformNodeId: this.getAnimationTransformNodeId(tree),\r\n });\r\n }\r\n\r\n /** @internal */\r\n protected getAnimationTransformNodeId(_tree: TileTree): number | undefined {\r\n return undefined;\r\n }\r\n\r\n /** Supply transform from this tile tree reference's location to iModel coordinate space.\r\n * @returns undefined if the TileTree is not yet loaded.\r\n */\r\n public getLocation(): Transform | undefined {\r\n const tree = this.treeOwner.load();\r\n return undefined !== tree ? this.computeTransform(tree) : undefined;\r\n }\r\n\r\n /** Compute a transform from this tile tree reference's coordinate space to the [[IModelConnection]]'s coordinate space. */\r\n protected computeTransform(tree: TileTree): Transform {\r\n return tree.iModelTransform.clone();\r\n }\r\n\r\n /** Compute the range of this tile tree's contents in world coordinates.\r\n * @returns The content range in world coodinates, or a null range if the tile tree is not loaded or has a null content range.\r\n */\r\n public computeWorldContentRange(): ElementAlignedBox3d {\r\n const range = new Range3d();\r\n const tree = this.treeOwner.tileTree;\r\n if (undefined !== tree && !tree.rootTile.contentRange.isNull)\r\n this.computeTransform(tree).multiplyRange(tree.rootTile.contentRange, range);\r\n\r\n return range;\r\n }\r\n\r\n /** Return the clip volume applied to this reference's tile tree, if any. */\r\n protected getClipVolume(tree: TileTree): RenderClipVolume | undefined {\r\n return tree.clipVolume;\r\n }\r\n\r\n /** Supply overrides that should be applied to the [[ViewState]]'s [ViewFlags]($common) when drawing this tile tree reference. */\r\n protected getViewFlagOverrides(tree: TileTree): ViewFlagOverrides {\r\n return tree.viewFlagOverrides;\r\n }\r\n\r\n /** Return overrides that *replace* any defined for the view. */\r\n protected getSymbologyOverrides(_tree: TileTree): FeatureSymbology.Overrides | undefined {\r\n return undefined;\r\n }\r\n\r\n /** Return a provider that can supplement the view's symbology overrides. */\r\n protected getAppearanceProvider(_tree: TileTree): FeatureAppearanceProvider | undefined {\r\n return undefined;\r\n }\r\n\r\n /** Return hidden line settings to replace those defined for the view. */\r\n protected getHiddenLineSettings(_tree: TileTree): HiddenLine.Settings | undefined {\r\n return undefined;\r\n }\r\n\r\n /* Extend range to include transformed range of this tile tree.\r\n * @internal\r\n */\r\n public accumulateTransformedRange(range: Range3d, matrix: Matrix4d, frustumPlanes?: FrustumPlanes) {\r\n const tree = this.treeOwner.tileTree;\r\n if (undefined === tree)\r\n return;\r\n\r\n const location = this.computeTransform(tree);\r\n tree.accumulateTransformedRange(range, matrix, location, frustumPlanes);\r\n }\r\n\r\n /** @internal */\r\n public getTerrainHeight(_terrainHeights: Range1d): void { }\r\n\r\n /** Return whether the geometry exposed by this tile tree reference should cast shadows on other geometry. */\r\n public get castsShadows(): boolean {\r\n return true;\r\n }\r\n\r\n /** Return whether this reference has global coverage. Mapping data is global and some non-primary models such as the OSM building layer have global coverage */\r\n public get isGlobal(): boolean { return false; }\r\n\r\n /** Return the clip mask priority for this model - models will be clipped by any other viewed model with a higher proirity.\r\n * BIM models have highest prioirty and are never clipped.\r\n * @alpha\r\n */\r\n public get planarclipMaskPriority(): number { return PlanarClipMaskPriority.DesignModel; }\r\n\r\n /** Add attribution logo cards for the tile tree source logo cards to the viewport's logo div. */\r\n public addLogoCards(_cards: HTMLTableElement, _vp: ScreenViewport): void { }\r\n\r\n /** Create a tile tree reference equivalent to this one that also supplies an implementation of [[GeometryTileTreeReference.collectTileGeometry]].\r\n * Return `undefined` if geometry collection is not supported.\r\n * @see [[createGeometryTreeReference]].\r\n * @beta\r\n */\r\n protected _createGeometryTreeReference(): GeometryTileTreeReference | undefined {\r\n return undefined;\r\n }\r\n\r\n /** If defined, supplies the implementation of [[GeometryTileTreeReference.collectTileGeometry]].\r\n * @beta\r\n */\r\n public collectTileGeometry?: (collector: TileGeometryCollector) => void;\r\n\r\n /** A function that can be assigned to [[collectTileGeometry]] to enable geometry collection for references to tile trees that support geometry collection.\r\n * @beta\r\n */\r\n protected _collectTileGeometry(collector: TileGeometryCollector): void {\r\n const tree = this.treeOwner.load();\r\n switch (this.treeOwner.loadStatus) {\r\n case TileTreeLoadStatus.Loaded:\r\n assert(undefined !== tree);\r\n tree.collectTileGeometry(collector);\r\n break;\r\n case TileTreeLoadStatus.Loading:\r\n collector.markLoading();\r\n break;\r\n }\r\n }\r\n\r\n /** Obtain a tile tree reference equivalent to this one that also supplies an implementation of [[GeometryTileTreeReference.collectTileGeometry]], or\r\n * undefined if geometry collection is not supported.\r\n * Currently, only terrain and reality model tiles support geometry collection.\r\n * @note Do not override this method - override [[_createGeometryTreeReference]] instead.\r\n * @beta\r\n */\r\n public createGeometryTreeReference(): GeometryTileTreeReference | undefined {\r\n if (this.collectTileGeometry) {\r\n // Unclear why compiler doesn't detect that `this` satisfies the GeometryTileTreeReference interface...it must be looking only at the types, not this particular instance.\r\n return this as GeometryTileTreeReference;\r\n }\r\n\r\n return this._createGeometryTreeReference();\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"TileTreeReference.js","sourceRoot":"","sources":["../../../src/tile/TileTreeReference.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n\r\nimport { assert, BeTimePoint } from \"@itwin/core-bentley\";\r\nimport { Matrix4d, Range1d, Range3d, Transform } from \"@itwin/core-geometry\";\r\nimport { ElementAlignedBox3d, FeatureAppearanceProvider, FrustumPlanes, HiddenLine, PlanarClipMaskPriority, ViewFlagOverrides } from \"@itwin/core-common\";\r\nimport { HitDetail } from \"../HitDetail\";\r\nimport { FeatureSymbology } from \"../render/FeatureSymbology\";\r\nimport { RenderClipVolume } from \"../render/RenderClipVolume\";\r\nimport { RenderMemory } from \"../render/RenderMemory\";\r\nimport { DecorateContext, SceneContext } from \"../ViewContext\";\r\nimport { ScreenViewport } from \"../Viewport\";\r\nimport {\r\n DisclosedTileTreeSet, GeometryTileTreeReference, MapLayerFeatureInfo, TileDrawArgs, TileGeometryCollector, TileTree, TileTreeLoadStatus, TileTreeOwner,\r\n} from \"./internal\";\r\n\r\n/** Describes the type of graphics produced by a [[TileTreeReference]].\r\n * @public\r\n * @extensions\r\n */\r\nexport enum TileGraphicType {\r\n /** Rendered behind all other geometry without depth. */\r\n BackgroundMap = 0,\r\n /** Rendered with normal scene graphics. */\r\n Scene = 1,\r\n /** Rendered in front of all other geometry. */\r\n Overlay = 2,\r\n}\r\n\r\n/** A reference to a [[TileTree]] suitable for drawing within a [[Viewport]]. The reference does not *own* its tile tree - it merely refers to it by\r\n * way of the tree's [[TileTreeOwner]].\r\n * The specific [[TileTree]] referenced by this object may change based on the current state of the Viewport in which it is drawn - for example,\r\n * as a result of changing the RenderMode, or animation settings, or classification settings, etc.\r\n * A reference to a TileTree is typically associated with a [[ViewState]], a [[DisplayStyleState]], or a [[Viewport]].\r\n * Multiple TileTreeReferences can refer to the same TileTree with different parameters and logic - for example, the same background map tiles can be displayed in two viewports with\r\n * differing levels of transparency.\r\n * @see [[TiledGraphicsProvider]] to supply custom [[TileTreeReference]]s to be drawn within a [[Viewport]].\r\n * @public\r\n * @extensions\r\n */\r\nexport abstract class TileTreeReference /* implements RenderMemory.Consumer */ {\r\n /** The owner of the currently-referenced [[TileTree]]. Do not store a direct reference to it, because it may change or become disposed at any time. */\r\n public abstract get treeOwner(): TileTreeOwner;\r\n\r\n /** Force a new tree owner / tile tree to be created for the current tile tree reference\r\n /* @internal */\r\n public resetTreeOwner() {}\r\n\r\n /** Disclose *all* TileTrees use by this reference. This may include things like map tiles used for draping on terrain.\r\n * Override this and call super if you have such auxiliary trees.\r\n * @note Any tree *NOT* disclosed becomes a candidate for *purging* (being unloaded from memory along with all of its tiles and graphics).\r\n */\r\n public discloseTileTrees(trees: DisclosedTileTreeSet): void {\r\n const tree = this.treeOwner.tileTree;\r\n if (undefined !== tree)\r\n trees.add(tree);\r\n }\r\n\r\n /** Adds this reference's graphics to the scene. By default this invokes [[draw]]. */\r\n public addToScene(context: SceneContext): void {\r\n const args = this.createDrawArgs(context);\r\n if (undefined !== args)\r\n this.draw(args);\r\n }\r\n\r\n /** Adds this reference's graphics to the scene. By default this invokes [[TileTree.draw]] on the referenced TileTree, if it is loaded. */\r\n public draw(args: TileDrawArgs): void {\r\n args.tree.draw(args);\r\n }\r\n\r\n /** Optionally return a tooltip describing the hit. */\r\n public async getToolTip(_hit: HitDetail): Promise<HTMLElement | string | undefined> { return undefined; }\r\n\r\n /** Optionally return a MapLayerFeatureInfo object describing the hit.].\r\n * @alpha\r\n */\r\n public async getMapFeatureInfo(_hit: HitDetail): Promise<MapLayerFeatureInfo[] | undefined> { return undefined; }\r\n\r\n /** Optionally add any decorations specific to this reference. For example, map tile trees may add a logo image and/or copyright attributions.\r\n * @note This is currently only invoked for background maps and TiledGraphicsProviders - others have no decorations, but if they did implement this it would not be called.\r\n */\r\n public decorate(_context: DecorateContext): void { }\r\n\r\n /** Unions this reference's range with the supplied range to help compute a volume in world space for fitting a viewport to its contents.\r\n * Override this function if a reference's range should not be included in the fit range, or a range different from its tile tree's range should be used.\r\n */\r\n public unionFitRange(union: Range3d): void {\r\n const contentRange = this.computeWorldContentRange();\r\n if (!contentRange.isNull)\r\n union.extendRange(contentRange);\r\n }\r\n\r\n /** @internal */\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n const tree = this.treeOwner.tileTree;\r\n if (undefined !== tree)\r\n tree.collectStatistics(stats);\r\n }\r\n\r\n /** Return true if the tile tree is fully loaded and ready to draw.\r\n * The default implementation returns true if the tile tree loading process completed (whether it resulted in success or failure).\r\n * @note Do *not* override this property - override [[_isLoadingComplete]] instead..\r\n * @public\r\n */\r\n public get isLoadingComplete(): boolean {\r\n switch (this.treeOwner.loadStatus) {\r\n case TileTreeLoadStatus.NotLoaded:\r\n case TileTreeLoadStatus.Loading:\r\n return false;\r\n case TileTreeLoadStatus.NotFound:\r\n return true; // we tried, and failed, to load.\r\n case TileTreeLoadStatus.Loaded:\r\n return this._isLoadingComplete;\r\n }\r\n }\r\n\r\n /** Override if additional asynchronous loading is required after the tile tree is successfully loaded, to indicate when that loading has completed.\r\n * @public\r\n */\r\n protected get _isLoadingComplete(): boolean {\r\n return true;\r\n }\r\n\r\n /** Create context for drawing the tile tree, if it is ready for drawing.\r\n * TileTreeReferences can override individual portions of the context, e.g. apply their own transform.\r\n * Returns undefined if, e.g., the tile tree is not yet loaded.\r\n */\r\n public createDrawArgs(context: SceneContext): TileDrawArgs | undefined {\r\n const tree = this.treeOwner.load();\r\n if (undefined === tree)\r\n return undefined;\r\n\r\n return new TileDrawArgs({\r\n context,\r\n tree,\r\n now: BeTimePoint.now(),\r\n location: this.computeTransform(tree),\r\n viewFlagOverrides: this.getViewFlagOverrides(tree),\r\n clipVolume: this.getClipVolume(tree),\r\n parentsAndChildrenExclusive: tree.parentsAndChildrenExclusive,\r\n symbologyOverrides: this.getSymbologyOverrides(tree),\r\n appearanceProvider: this.getAppearanceProvider(tree),\r\n hiddenLineSettings: this.getHiddenLineSettings(tree),\r\n animationTransformNodeId: this.getAnimationTransformNodeId(tree),\r\n });\r\n }\r\n\r\n /** @internal */\r\n protected getAnimationTransformNodeId(_tree: TileTree): number | undefined {\r\n return undefined;\r\n }\r\n\r\n /** Supply transform from this tile tree reference's location to iModel coordinate space.\r\n * @returns undefined if the TileTree is not yet loaded.\r\n */\r\n public getLocation(): Transform | undefined {\r\n const tree = this.treeOwner.load();\r\n return undefined !== tree ? this.computeTransform(tree) : undefined;\r\n }\r\n\r\n /** Compute a transform from this tile tree reference's coordinate space to the [[IModelConnection]]'s coordinate space. */\r\n protected computeTransform(tree: TileTree): Transform {\r\n return tree.iModelTransform.clone();\r\n }\r\n\r\n /** Compute the range of this tile tree's contents in world coordinates.\r\n * @returns The content range in world coodinates, or a null range if the tile tree is not loaded or has a null content range.\r\n */\r\n public computeWorldContentRange(): ElementAlignedBox3d {\r\n const range = new Range3d();\r\n const tree = this.treeOwner.tileTree;\r\n if (undefined !== tree && !tree.rootTile.contentRange.isNull)\r\n this.computeTransform(tree).multiplyRange(tree.rootTile.contentRange, range);\r\n\r\n return range;\r\n }\r\n\r\n /** Return the clip volume applied to this reference's tile tree, if any. */\r\n protected getClipVolume(tree: TileTree): RenderClipVolume | undefined {\r\n return tree.clipVolume;\r\n }\r\n\r\n /** Supply overrides that should be applied to the [[ViewState]]'s [ViewFlags]($common) when drawing this tile tree reference. */\r\n protected getViewFlagOverrides(tree: TileTree): ViewFlagOverrides {\r\n return tree.viewFlagOverrides;\r\n }\r\n\r\n /** Return overrides that *replace* any defined for the view. */\r\n protected getSymbologyOverrides(_tree: TileTree): FeatureSymbology.Overrides | undefined {\r\n return undefined;\r\n }\r\n\r\n /** Return a provider that can supplement the view's symbology overrides. */\r\n protected getAppearanceProvider(_tree: TileTree): FeatureAppearanceProvider | undefined {\r\n return undefined;\r\n }\r\n\r\n /** Return hidden line settings to replace those defined for the view. */\r\n protected getHiddenLineSettings(_tree: TileTree): HiddenLine.Settings | undefined {\r\n return undefined;\r\n }\r\n\r\n /* Extend range to include transformed range of this tile tree.\r\n * @internal\r\n */\r\n public accumulateTransformedRange(range: Range3d, matrix: Matrix4d, frustumPlanes?: FrustumPlanes) {\r\n const tree = this.treeOwner.tileTree;\r\n if (undefined === tree)\r\n return;\r\n\r\n const location = this.computeTransform(tree);\r\n tree.accumulateTransformedRange(range, matrix, location, frustumPlanes);\r\n }\r\n\r\n /** @internal */\r\n public getTerrainHeight(_terrainHeights: Range1d): void { }\r\n\r\n /** Return whether the geometry exposed by this tile tree reference should cast shadows on other geometry. */\r\n public get castsShadows(): boolean {\r\n return true;\r\n }\r\n\r\n /** Return whether this reference has global coverage. Mapping data is global and some non-primary models such as the OSM building layer have global coverage */\r\n public get isGlobal(): boolean { return false; }\r\n\r\n /** Return the clip mask priority for this model - models will be clipped by any other viewed model with a higher proirity.\r\n * BIM models have highest prioirty and are never clipped.\r\n * @alpha\r\n */\r\n public get planarclipMaskPriority(): number { return PlanarClipMaskPriority.DesignModel; }\r\n\r\n /** Add attribution logo cards for the tile tree source logo cards to the viewport's logo div. */\r\n public addLogoCards(_cards: HTMLTableElement, _vp: ScreenViewport): void { }\r\n\r\n /** Create a tile tree reference equivalent to this one that also supplies an implementation of [[GeometryTileTreeReference.collectTileGeometry]].\r\n * Return `undefined` if geometry collection is not supported.\r\n * @see [[createGeometryTreeReference]].\r\n * @beta\r\n */\r\n protected _createGeometryTreeReference(): GeometryTileTreeReference | undefined {\r\n return undefined;\r\n }\r\n\r\n /** If defined, supplies the implementation of [[GeometryTileTreeReference.collectTileGeometry]].\r\n * @beta\r\n */\r\n public collectTileGeometry?: (collector: TileGeometryCollector) => void;\r\n\r\n /** A function that can be assigned to [[collectTileGeometry]] to enable geometry collection for references to tile trees that support geometry collection.\r\n * @beta\r\n */\r\n protected _collectTileGeometry(collector: TileGeometryCollector): void {\r\n const tree = this.treeOwner.load();\r\n switch (this.treeOwner.loadStatus) {\r\n case TileTreeLoadStatus.Loaded:\r\n assert(undefined !== tree);\r\n tree.collectTileGeometry(collector);\r\n break;\r\n case TileTreeLoadStatus.Loading:\r\n collector.markLoading();\r\n break;\r\n }\r\n }\r\n\r\n /** Obtain a tile tree reference equivalent to this one that also supplies an implementation of [[GeometryTileTreeReference.collectTileGeometry]], or\r\n * undefined if geometry collection is not supported.\r\n * Currently, only terrain and reality model tiles support geometry collection.\r\n * @note Do not override this method - override [[_createGeometryTreeReference]] instead.\r\n * @beta\r\n */\r\n public createGeometryTreeReference(): GeometryTileTreeReference | undefined {\r\n if (this.collectTileGeometry) {\r\n // Unclear why compiler doesn't detect that `this` satisfies the GeometryTileTreeReference interface...it must be looking only at the types, not this particular instance.\r\n return this as GeometryTileTreeReference;\r\n }\r\n\r\n return this._createGeometryTreeReference();\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ArcGISImageryProvider.d.ts","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/ArcGISImageryProvider.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAoC,oBAAoB,EAAE,mBAAmB,EAAE,uBAAuB,EAAiC,MAAM,gBAAgB,CAAC;AAIrK;;;;;;GAMG;AACH,8BAAsB,qBAAsB,SAAQ,uBAAuB;IAEzE,SAAS,CAAC,aAAa,EAAE,oBAAoB,GAAC,SAAS,CAAC;IACxD,SAAS,CAAC,gBAAgB,EAAE,mBAAmB,GAAC,SAAS,CAAC;IAC1D,OAAO,CAAC,MAAM,CAAC,aAAa,CAA0B;gBAE1C,QAAQ,EAAE,qBAAqB,EAAE,eAAe,EAAE,OAAO;IAKrE;;;;;OAKG;cACa,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,WAAW;CAkEtD"}
1
+ {"version":3,"file":"ArcGISImageryProvider.d.ts","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/ArcGISImageryProvider.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAoC,oBAAoB,EAAE,mBAAmB,EAAE,uBAAuB,EAAiC,MAAM,gBAAgB,CAAC;AAIrK;;;;;;GAMG;AACH,8BAAsB,qBAAsB,SAAQ,uBAAuB;IAEzE,SAAS,CAAC,aAAa,EAAE,oBAAoB,GAAC,SAAS,CAAC;IACxD,SAAS,CAAC,gBAAgB,EAAE,mBAAmB,GAAC,SAAS,CAAC;IAC1D,OAAO,CAAC,MAAM,CAAC,aAAa,CAA0B;gBAE1C,QAAQ,EAAE,qBAAqB,EAAE,eAAe,EAAE,OAAO;IAKrE;;;;;OAKG;cACa,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,WAAW;CAiEtD"}
@@ -83,8 +83,7 @@ class ArcGISImageryProvider extends internal_1.MapLayerImageryProvider {
83
83
  if (hasTokenError
84
84
  && this.status === internal_1.MapLayerImageryProviderStatus.Valid) {
85
85
  // Only report if status is currently valid (avoid reporting twice the same error)
86
- this.status = internal_1.MapLayerImageryProviderStatus.RequireAuth;
87
- this.onStatusChanged.raiseEvent(this);
86
+ this.setStatus(internal_1.MapLayerImageryProviderStatus.RequireAuth);
88
87
  const msg = IModelApp_1.IModelApp.localization.getLocalizedString("iModelJs:MapLayers.Messages.FetchTooltipTokenError", { layerName: this._settings.name });
89
88
  IModelApp_1.IModelApp.notifications.outputMessage(new NotificationManager_1.NotifyMessageDetails(NotificationManager_1.OutputMessagePriority.Warning, msg));
90
89
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ArcGISImageryProvider.js","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/ArcGISImageryProvider.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n\r\nimport { ImageMapLayerSettings } from \"@itwin/core-common\";\r\nimport { ArcGisErrorCode, ArcGisUtilities, MapLayerAccessClient, MapLayerAccessToken, MapLayerImageryProvider, MapLayerImageryProviderStatus } from \"../../internal\";\r\nimport { IModelApp } from \"../../../IModelApp\";\r\nimport { NotifyMessageDetails, OutputMessagePriority } from \"../../../NotificationManager\";\r\n\r\n/** Base class for ArcGIS map-layer imagery providers.\r\n *\r\n * The initial purpose of this class is to offer shared methods\r\n * to query ArcGIS services and apply the appropriate security token.\r\n * @see [[ArcGISMapLayerImageryProvider]]\r\n * @internal\r\n */\r\nexport abstract class ArcGISImageryProvider extends MapLayerImageryProvider {\r\n\r\n protected _accessClient: MapLayerAccessClient|undefined;\r\n protected _lastAccessToken: MapLayerAccessToken|undefined;\r\n private static _serviceCache = new Map<string, any>();\r\n\r\n constructor(settings: ImageMapLayerSettings, usesCachedTiles: boolean) {\r\n super(settings, usesCachedTiles);\r\n this._accessClient = IModelApp.mapLayerFormatRegistry?.getAccessClient(settings.formatId);\r\n }\r\n\r\n /**\r\n * Make a request to an ArcGIS service using the provided URL and init parameters.\r\n * @param url URL to query\r\n * @param options Custom settings to apply to the request.\r\n * Refer to fetch API for more details (https://developer.mozilla.org/en-US/docs/Web/API/fetch)\r\n */\r\n protected async fetch(url: URL, options?: RequestInit) {\r\n\r\n const urlObj = new URL(url);\r\n try {\r\n if (this._accessClient) {\r\n this._lastAccessToken = await ArcGisUtilities.appendSecurityToken(urlObj, this._accessClient, {\r\n mapLayerUrl: new URL(this._settings.url),\r\n userName: this._settings.userName,\r\n password: this._settings.password });\r\n }\r\n\r\n } catch {\r\n }\r\n\r\n let response = await fetch(urlObj.toString(), options);\r\n let errorCode = await ArcGisUtilities.checkForResponseErrorCode(response.clone());\r\n\r\n if (errorCode !== undefined &&\r\n (errorCode === ArcGisErrorCode.TokenRequired || errorCode === ArcGisErrorCode.InvalidToken) ) {\r\n let hasTokenError = true;\r\n\r\n // **** Legacy token ONLY ***\r\n // Token might have expired, make a second attempt by forcing new token.\r\n if (this._settings.userName && this._settings.userName.length > 0 && this._lastAccessToken ) {\r\n\r\n // Invalidate previously used token to force token re-generation\r\n if (this._accessClient?.invalidateToken !== undefined && this._lastAccessToken !== undefined)\r\n this._accessClient.invalidateToken(this._lastAccessToken);\r\n\r\n const urlObj2 = new URL(url);\r\n if (this._accessClient) {\r\n try {\r\n this._lastAccessToken = await ArcGisUtilities.appendSecurityToken(urlObj, this._accessClient, {mapLayerUrl: urlObj, userName: this._settings.userName, password: this._settings.password });\r\n } catch {\r\n }\r\n }\r\n\r\n // Make a second attempt with refreshed token\r\n response = await fetch(urlObj2.toString(), options);\r\n errorCode = await ArcGisUtilities.checkForResponseErrorCode(response.clone());\r\n if (errorCode !== undefined &&\r\n (errorCode === ArcGisErrorCode.TokenRequired || errorCode === ArcGisErrorCode.InvalidToken) ) {\r\n // OK at this point, if response still contain a token error, we assume end-user will\r\n // have to provide credentials again. Change the layer status so we\r\n // don't make additional invalid requests..\r\n if (this._accessClient?.invalidateToken !== undefined && this._lastAccessToken !== undefined) {\r\n this._accessClient.invalidateToken(this._lastAccessToken);\r\n this._lastAccessToken = undefined;\r\n }\r\n } else {\r\n hasTokenError = false;\r\n }\r\n }\r\n\r\n if (hasTokenError\r\n && this.status === MapLayerImageryProviderStatus.Valid ) {\r\n // Only report if status is currently valid (avoid reporting twice the same error)\r\n this.status = MapLayerImageryProviderStatus.RequireAuth;\r\n this.onStatusChanged.raiseEvent(this);\r\n const msg = IModelApp.localization.getLocalizedString(\"iModelJs:MapLayers.Messages.FetchTooltipTokenError\", { layerName: this._settings.name });\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Warning, msg));\r\n }\r\n\r\n }\r\n return response;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ArcGISImageryProvider.js","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/ArcGISImageryProvider.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAGH,6CAAqK;AACrK,kDAA+C;AAC/C,sEAA2F;AAE3F;;;;;;GAMG;AACH,MAAsB,qBAAsB,SAAQ,kCAAuB;IAMzE,YAAY,QAA+B,EAAE,eAAwB;;QACnE,KAAK,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;QACjC,IAAI,CAAC,aAAa,GAAG,MAAA,qBAAS,CAAC,sBAAsB,0CAAE,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC5F,CAAC;IAED;;;;;OAKG;IACO,KAAK,CAAC,KAAK,CAAC,GAAQ,EAAE,OAAqB;;QAEnD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI;YACF,IAAI,IAAI,CAAC,aAAa,EAAE;gBACtB,IAAI,CAAC,gBAAgB,GAAG,MAAM,0BAAe,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE;oBAC5F,WAAW,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;oBACxC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ;oBACjC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ;iBAAE,CAAC,CAAC;aACxC;SAEF;QAAC,MAAM;SACP;QAED,IAAI,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC;QACvD,IAAI,SAAS,GAAI,MAAM,0BAAe,CAAC,yBAAyB,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QAEnF,IAAI,SAAS,KAAK,SAAS;YACxB,CAAC,SAAS,KAAK,0BAAe,CAAC,aAAa,IAAI,SAAS,KAAK,0BAAe,CAAC,YAAY,CAAC,EAAG;YAC/F,IAAI,aAAa,GAAG,IAAI,CAAC;YAEzB,6BAA6B;YAC7B,wEAAwE;YACxE,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,gBAAgB,EAAG;gBAE3F,gEAAgE;gBAChE,IAAI,CAAA,MAAA,IAAI,CAAC,aAAa,0CAAE,eAAe,MAAK,SAAS,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS;oBAC1F,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBAE5D,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC7B,IAAI,IAAI,CAAC,aAAa,EAAE;oBACtB,IAAI;wBACF,IAAI,CAAC,gBAAgB,GAAG,MAAM,0BAAe,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,EAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;qBAC7L;oBAAC,MAAM;qBACP;iBACF;gBAED,6CAA6C;gBAC7C,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC;gBACpD,SAAS,GAAI,MAAM,0BAAe,CAAC,yBAAyB,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC/E,IAAI,SAAS,KAAK,SAAS;oBACvB,CAAC,SAAS,KAAK,0BAAe,CAAC,aAAa,IAAI,SAAS,KAAK,0BAAe,CAAC,YAAY,CAAC,EAAG;oBAClG,qFAAqF;oBACrF,oEAAoE;oBACpE,2CAA2C;oBACzC,IAAI,CAAA,MAAA,IAAI,CAAC,aAAa,0CAAE,eAAe,MAAK,SAAS,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS,EAAE;wBAC5F,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;wBAC1D,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;qBACnC;iBACF;qBAAM;oBACL,aAAa,GAAG,KAAK,CAAC;iBACvB;aACF;YAED,IAAI,aAAa;mBACX,IAAI,CAAC,MAAM,KAAK,wCAA6B,CAAC,KAAK,EAAG;gBAC1D,kFAAkF;gBAClF,IAAI,CAAC,SAAS,CAAC,wCAA6B,CAAC,WAAW,CAAC,CAAC;gBAC1D,MAAM,GAAG,GAAG,qBAAS,CAAC,YAAY,CAAC,kBAAkB,CAAC,oDAAoD,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;gBAChJ,qBAAS,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,0CAAoB,CAAC,2CAAqB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;aACrG;SAEF;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;;AAjFH,sDAkFC;AA9EgB,mCAAa,GAAG,IAAI,GAAG,EAAe,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n\r\nimport { ImageMapLayerSettings } from \"@itwin/core-common\";\r\nimport { ArcGisErrorCode, ArcGisUtilities, MapLayerAccessClient, MapLayerAccessToken, MapLayerImageryProvider, MapLayerImageryProviderStatus } from \"../../internal\";\r\nimport { IModelApp } from \"../../../IModelApp\";\r\nimport { NotifyMessageDetails, OutputMessagePriority } from \"../../../NotificationManager\";\r\n\r\n/** Base class for ArcGIS map-layer imagery providers.\r\n *\r\n * The initial purpose of this class is to offer shared methods\r\n * to query ArcGIS services and apply the appropriate security token.\r\n * @see [[ArcGISMapLayerImageryProvider]]\r\n * @internal\r\n */\r\nexport abstract class ArcGISImageryProvider extends MapLayerImageryProvider {\r\n\r\n protected _accessClient: MapLayerAccessClient|undefined;\r\n protected _lastAccessToken: MapLayerAccessToken|undefined;\r\n private static _serviceCache = new Map<string, any>();\r\n\r\n constructor(settings: ImageMapLayerSettings, usesCachedTiles: boolean) {\r\n super(settings, usesCachedTiles);\r\n this._accessClient = IModelApp.mapLayerFormatRegistry?.getAccessClient(settings.formatId);\r\n }\r\n\r\n /**\r\n * Make a request to an ArcGIS service using the provided URL and init parameters.\r\n * @param url URL to query\r\n * @param options Custom settings to apply to the request.\r\n * Refer to fetch API for more details (https://developer.mozilla.org/en-US/docs/Web/API/fetch)\r\n */\r\n protected async fetch(url: URL, options?: RequestInit) {\r\n\r\n const urlObj = new URL(url);\r\n try {\r\n if (this._accessClient) {\r\n this._lastAccessToken = await ArcGisUtilities.appendSecurityToken(urlObj, this._accessClient, {\r\n mapLayerUrl: new URL(this._settings.url),\r\n userName: this._settings.userName,\r\n password: this._settings.password });\r\n }\r\n\r\n } catch {\r\n }\r\n\r\n let response = await fetch(urlObj.toString(), options);\r\n let errorCode = await ArcGisUtilities.checkForResponseErrorCode(response.clone());\r\n\r\n if (errorCode !== undefined &&\r\n (errorCode === ArcGisErrorCode.TokenRequired || errorCode === ArcGisErrorCode.InvalidToken) ) {\r\n let hasTokenError = true;\r\n\r\n // **** Legacy token ONLY ***\r\n // Token might have expired, make a second attempt by forcing new token.\r\n if (this._settings.userName && this._settings.userName.length > 0 && this._lastAccessToken ) {\r\n\r\n // Invalidate previously used token to force token re-generation\r\n if (this._accessClient?.invalidateToken !== undefined && this._lastAccessToken !== undefined)\r\n this._accessClient.invalidateToken(this._lastAccessToken);\r\n\r\n const urlObj2 = new URL(url);\r\n if (this._accessClient) {\r\n try {\r\n this._lastAccessToken = await ArcGisUtilities.appendSecurityToken(urlObj, this._accessClient, {mapLayerUrl: urlObj, userName: this._settings.userName, password: this._settings.password });\r\n } catch {\r\n }\r\n }\r\n\r\n // Make a second attempt with refreshed token\r\n response = await fetch(urlObj2.toString(), options);\r\n errorCode = await ArcGisUtilities.checkForResponseErrorCode(response.clone());\r\n if (errorCode !== undefined &&\r\n (errorCode === ArcGisErrorCode.TokenRequired || errorCode === ArcGisErrorCode.InvalidToken) ) {\r\n // OK at this point, if response still contain a token error, we assume end-user will\r\n // have to provide credentials again. Change the layer status so we\r\n // don't make additional invalid requests..\r\n if (this._accessClient?.invalidateToken !== undefined && this._lastAccessToken !== undefined) {\r\n this._accessClient.invalidateToken(this._lastAccessToken);\r\n this._lastAccessToken = undefined;\r\n }\r\n } else {\r\n hasTokenError = false;\r\n }\r\n }\r\n\r\n if (hasTokenError\r\n && this.status === MapLayerImageryProviderStatus.Valid ) {\r\n // Only report if status is currently valid (avoid reporting twice the same error)\r\n this.setStatus(MapLayerImageryProviderStatus.RequireAuth);\r\n const msg = IModelApp.localization.getLocalizedString(\"iModelJs:MapLayers.Messages.FetchTooltipTokenError\", { layerName: this._settings.name });\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Warning, msg));\r\n }\r\n\r\n }\r\n return response;\r\n }\r\n}\r\n"]}
@@ -102,8 +102,8 @@ class ArcGISMapLayerImageryProvider extends internal_1.ArcGISImageryProvider {
102
102
  if (((_a = json === null || json === void 0 ? void 0 : json.error) === null || _a === void 0 ? void 0 : _a.code) === internal_1.ArcGisErrorCode.TokenRequired || ((_b = json === null || json === void 0 ? void 0 : json.error) === null || _b === void 0 ? void 0 : _b.code) === internal_1.ArcGisErrorCode.InvalidToken) {
103
103
  // Check again layer status, it might have change during await.
104
104
  if (this.status === internal_1.MapLayerImageryProviderStatus.Valid) {
105
- this.status = internal_1.MapLayerImageryProviderStatus.RequireAuth;
106
- this.onStatusChanged.raiseEvent(this);
105
+ this.setStatus(internal_1.MapLayerImageryProviderStatus.RequireAuth);
106
+ return; // By returning (i.e not throwing), we ensure the tileTree get created and current provider is preserved to report status.
107
107
  }
108
108
  }
109
109
  if (json !== undefined) {
@@ -1 +1 @@
1
- {"version":3,"file":"ArcGISMapLayerImageryProvider.js","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\nimport { Cartographic, ImageMapLayerSettings, ImageSource, IModelStatus, ServerError } from \"@itwin/core-common\";\r\nimport { IModelApp } from \"../../../IModelApp\";\r\nimport {\r\n ArcGisErrorCode, ArcGISImageryProvider, ArcGISTileMap, ArcGisUtilities,\r\n ImageryMapTile, ImageryMapTileTree, MapCartoRectangle, MapFeatureInfoRecord, MapLayerFeatureInfo,\r\n MapLayerImageryProviderStatus, MapSubLayerFeatureInfo, QuadId,\r\n} from \"../../internal\";\r\nimport { PropertyValueFormat, StandardTypeNames } from \"@itwin/appui-abstract\";\r\nimport { Range2d } from \"@itwin/core-geometry\";\r\nimport { isArray } from \"lodash\";\r\n\r\n/** @internal */\r\nexport class ArcGISMapLayerImageryProvider extends ArcGISImageryProvider {\r\n private _maxDepthFromLod = 0;\r\n private _minDepthFromLod = 0;\r\n private _copyrightText = \"Copyright\";\r\n private _querySupported = false;\r\n private _tileMapSupported = false;\r\n private _tileMap: ArcGISTileMap|undefined;\r\n\r\n public serviceJson: any;\r\n constructor(settings: ImageMapLayerSettings) {\r\n super(settings, false);\r\n this._accessClient = IModelApp.mapLayerFormatRegistry.getAccessClient(settings.formatId);\r\n }\r\n\r\n protected override get _filterByCartoRange() { return false; } // Can't trust footprint ranges (USGS Hydro)\r\n\r\n public override get minimumZoomLevel() { return Math.max(super.minimumZoomLevel, this._minDepthFromLod); }\r\n public override get maximumZoomLevel() { return this._maxDepthFromLod > 0 ? this._maxDepthFromLod : super.maximumZoomLevel; }\r\n\r\n public uintToString(uintArray: any) {\r\n return Buffer.from(uintArray).toJSON();\r\n\r\n }\r\n\r\n private async fetchTile(row: number, column: number, zoomLevel: number) {\r\n const tileUrl: string = await this.constructUrl(row, column, zoomLevel);\r\n if (tileUrl.length === 0)\r\n return undefined;\r\n return this.fetch(new URL(tileUrl), { method: \"GET\" });\r\n }\r\n\r\n public override async loadTile(row: number, column: number, zoomLevel: number): Promise<ImageSource | undefined> {\r\n if ((this.status === MapLayerImageryProviderStatus.RequireAuth)) {\r\n return undefined;\r\n }\r\n\r\n try {\r\n const tileResponse = await this.fetchTile(row, column, zoomLevel);\r\n if (tileResponse === undefined)\r\n return undefined;\r\n\r\n if (!this._hasSuccessfullyFetchedTile) {\r\n this._hasSuccessfullyFetchedTile = true;\r\n }\r\n return await this.getImageFromTileResponse(tileResponse, zoomLevel);\r\n } catch (error) {\r\n return undefined;\r\n }\r\n }\r\n\r\n protected override _generateChildIds(tile: ImageryMapTile, resolveChildren: (childIds: QuadId[]) => void) {\r\n const childIds = this.getPotentialChildIds(tile);\r\n if (tile.quadId.level < Math.max(1, this.minimumZoomLevel-1)) {\r\n resolveChildren(childIds);\r\n return;\r\n }\r\n\r\n if (this._tileMap) {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this._tileMap.getChildrenAvailability(childIds).then((availability) => {\r\n const availableChildIds = new Array<QuadId>();\r\n for (let i = 0; i < availability.length; i++)\r\n if (availability[i])\r\n availableChildIds.push(childIds[i]);\r\n\r\n resolveChildren (availableChildIds);\r\n });\r\n } else if (this._usesCachedTiles && this.cartoRange) {\r\n // Filter children by range\r\n const availableChildIds = new Array<QuadId>();\r\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\r\n for (let i = 0; i < childIds.length; i++) {\r\n const childExtent = this.getEPSG4326Extent(childIds[i].row, childIds[i].column, childIds[i].level);\r\n\r\n const childRange = MapCartoRectangle.fromDegrees(childExtent.longitudeLeft, childExtent.latitudeBottom, childExtent.longitudeRight, childExtent.latitudeTop);\r\n if (childRange.intersectsRange(this.cartoRange)) {\r\n availableChildIds.push(childIds[i]);\r\n }\r\n }\r\n resolveChildren (availableChildIds);\r\n } else {\r\n resolveChildren (childIds); // Resolve all children\r\n }\r\n }\r\n\r\n private isEpsg3857Compatible(tileInfo: any) {\r\n if (tileInfo.spatialReference?.latestWkid !== 3857 || !Array.isArray(tileInfo.lods))\r\n return false;\r\n\r\n const zeroLod = tileInfo.lods[0];\r\n return zeroLod.level === 0 && Math.abs(zeroLod.resolution - 156543.03392800014) < .001;\r\n }\r\n\r\n public override async initialize(): Promise<void> {\r\n\r\n const json = await ArcGisUtilities.getServiceJson(this._settings.url, this._settings.formatId, this._settings.userName, this._settings.password);\r\n if (json === undefined)\r\n throw new ServerError(IModelStatus.ValidationFailed, \"\");\r\n\r\n if (json?.error?.code === ArcGisErrorCode.TokenRequired || json?.error?.code === ArcGisErrorCode.InvalidToken) {\r\n // Check again layer status, it might have change during await.\r\n if (this.status === MapLayerImageryProviderStatus.Valid) {\r\n this.status = MapLayerImageryProviderStatus.RequireAuth;\r\n this.onStatusChanged.raiseEvent(this);\r\n }\r\n }\r\n\r\n if (json !== undefined) {\r\n this.serviceJson = json;\r\n\r\n if (json.capabilities) {\r\n\r\n this._querySupported = json.capabilities.indexOf(\"Query\") >= 0;\r\n this._tileMapSupported = json.capabilities.indexOf(\"Tilemap\") >= 0;\r\n }\r\n if (json.copyrightText)\r\n this._copyrightText = json.copyrightText;\r\n\r\n if (false !== (this._usesCachedTiles = json.tileInfo !== undefined && this.isEpsg3857Compatible(json.tileInfo))) {\r\n if (json.maxScale !== undefined && json.maxScale !== 0 && Array.isArray(json.tileInfo.lods)) {\r\n for (; this._maxDepthFromLod < json.tileInfo.lods.length && json.tileInfo.lods[this._maxDepthFromLod].scale > json.maxScale; this._maxDepthFromLod++)\r\n ;\r\n }\r\n }\r\n\r\n // Create tile map object only if we are going to request tiles from this server and it support tilemap requests.\r\n if (this._usesCachedTiles && this._tileMapSupported) {\r\n this._tileMap = new ArcGISTileMap(this._settings.url, this._settings, json.tileInfo?.lods?.length, this._accessClient);\r\n }\r\n\r\n // Read range using fullextent from service metadata\r\n if (json.fullExtent) {\r\n if (json.fullExtent.spatialReference.latestWkid === 3857 || json.fullExtent.spatialReference.wkid === 102100) {\r\n const range3857 = Range2d.createFrom({\r\n low: {x: json.fullExtent.xmin, y: json.fullExtent.ymin},\r\n high: {x: json.fullExtent.xmax, y: json.fullExtent.ymax} });\r\n\r\n const west = this.getEPSG4326Lon(range3857.xLow);\r\n const south = this.getEPSG4326Lat(range3857.yLow);\r\n const east = this.getEPSG4326Lon(range3857.xHigh);\r\n const north = this.getEPSG4326Lat(range3857.yHigh);\r\n this.cartoRange = MapCartoRectangle.fromDegrees(west, south, east, north);\r\n }\r\n }\r\n\r\n // Read minLOD if available\r\n if (json.minLOD !== undefined) {\r\n const minLod = parseInt(json.minLOD, 10);\r\n if (!Number.isNaN(minLod)) {\r\n this._minDepthFromLod = minLod;\r\n }\r\n } else if (json.minScale) {\r\n // Read min LOD using minScale\r\n const minScale = json.minScale;\r\n if (json.tileInfo?.lods !== undefined && isArray(json.tileInfo.lods)) {\r\n for (const lod of json.tileInfo.lods) {\r\n if (lod.scale < minScale) {\r\n this._minDepthFromLod = lod.level;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n public override addLogoCards(cards: HTMLTableElement): void {\r\n if (!cards.dataset.arcGisLogoCard) {\r\n cards.dataset.arcGisLogoCard = \"true\";\r\n cards.appendChild(IModelApp.makeLogoCard({ heading: \"ArcGIS\", notice: this._copyrightText }));\r\n }\r\n }\r\n\r\n // Translates the provided Cartographic into a EPSG:3857 point, and retrieve information.\r\n // tolerance is in pixels\r\n private async getIdentifyData(quadId: QuadId, carto: Cartographic, tolerance: number): Promise<any> {\r\n const bboxString = this.getEPSG3857ExtentString(quadId.row, quadId.column, quadId.level);\r\n const x = this.getEPSG3857X(carto.longitudeDegrees);\r\n const y = this.getEPSG3857Y(carto.latitudeDegrees);\r\n const tmpUrl = `${this._settings.url}/identify?f=json&tolerance=${tolerance}&returnGeometry=false&sr=3857&imageDisplay=${this.tileSize},${this.tileSize},96&layers=${this.getLayerString(\"visible\")}&geometry=${x},${y}&geometryType=esriGeometryPoint&mapExtent=${bboxString}`;\r\n const urlObj = new URL(tmpUrl);\r\n\r\n const response = await this.fetch(urlObj, { method: \"GET\" } );\r\n return response.json();\r\n }\r\n\r\n // Makes an identify request to ESRI MapService server, and return it as a list of formatted strings\r\n public override async getToolTip(strings: string[], quadId: QuadId, carto: Cartographic, tree: ImageryMapTileTree): Promise<void> {\r\n await super.getToolTip(strings, quadId, carto, tree);\r\n\r\n if (!this._querySupported)\r\n return;\r\n\r\n const stringSet = new Set<string>();\r\n const json = await this.getIdentifyData(quadId, carto, 1);\r\n\r\n if (json && Array.isArray(json.results)) {\r\n for (const result of json.results) {\r\n if (result.attributes !== undefined && result.attributes[result.displayFieldName] !== undefined) {\r\n const thisString = `${result.displayFieldName}: ${result.attributes[result.displayFieldName]}`;\r\n if (!stringSet.has(thisString)) {\r\n strings.push(thisString);\r\n stringSet.add(thisString);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Makes an identify request to ESRI MapService , and return it as a list MapLayerFeatureInfo object\r\n public override async getFeatureInfo(featureInfos: MapLayerFeatureInfo[], quadId: QuadId, carto: Cartographic, _tree: ImageryMapTileTree): Promise<void> {\r\n if (!this._querySupported)\r\n return;\r\n\r\n const json = await this.getIdentifyData(quadId, carto,5 );\r\n if (json && Array.isArray(json.results)) {\r\n const layerInfo: MapLayerFeatureInfo = {layerName: this._settings.name};\r\n\r\n for (const result of json.results) {\r\n\r\n const subLayerInfo: MapSubLayerFeatureInfo = {\r\n subLayerName: result.layerName ?? \"\",\r\n displayFieldName: result.displayFieldName,\r\n records : [],\r\n };\r\n for (const [key, value] of Object.entries(result.attributes)) {\r\n // Convert everything to string for now\r\n const strValue = String(value);\r\n subLayerInfo.records?.push(new MapFeatureInfoRecord (\r\n {valueFormat:PropertyValueFormat.Primitive, value:strValue, displayValue: strValue},\r\n {name: key, displayLabel: key, typename:StandardTypeNames.String}\r\n ));\r\n }\r\n\r\n if (layerInfo.info === undefined) {\r\n layerInfo.info = [];\r\n }\r\n\r\n if (!(layerInfo.info instanceof HTMLElement)) {\r\n layerInfo.info.push(subLayerInfo);\r\n }\r\n\r\n }\r\n\r\n featureInfos.push(layerInfo);\r\n }\r\n }\r\n\r\n protected getLayerString(prefix = \"show\"): string {\r\n const layers = new Array<string>();\r\n this._settings.subLayers.forEach((subLayer) => {\r\n if (this._settings.isSubLayerVisible(subLayer))\r\n layers.push(subLayer.idString);\r\n });\r\n\r\n return `${prefix}: ${layers.join(\",\")} `;\r\n }\r\n\r\n // construct the Url from the desired Tile\r\n public async constructUrl(row: number, column: number, zoomLevel: number): Promise<string> {\r\n let tmpUrl;\r\n if (this._usesCachedTiles) {\r\n tmpUrl = `${this._settings.url}/tile/${zoomLevel}/${row}/${column} `;\r\n } else {\r\n const bboxString = `${this.getEPSG3857ExtentString(row, column, zoomLevel)}&bboxSR=3857`;\r\n tmpUrl = `${this._settings.url}/export?bbox=${bboxString}&size=${this.tileSize},${this.tileSize}&layers=${this.getLayerString()}&format=png&transparent=${this.transparentBackgroundString}&f=image&sr=3857&imagesr=3857`;\r\n }\r\n return tmpUrl;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ArcGISMapLayerImageryProvider.js","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\nimport { Cartographic, ImageMapLayerSettings, ImageSource, IModelStatus, ServerError } from \"@itwin/core-common\";\r\nimport { IModelApp } from \"../../../IModelApp\";\r\nimport {\r\n ArcGisErrorCode, ArcGISImageryProvider, ArcGISTileMap, ArcGisUtilities,\r\n ImageryMapTile, ImageryMapTileTree, MapCartoRectangle, MapFeatureInfoRecord, MapLayerFeatureInfo,\r\n MapLayerImageryProviderStatus, MapSubLayerFeatureInfo, QuadId,\r\n} from \"../../internal\";\r\nimport { PropertyValueFormat, StandardTypeNames } from \"@itwin/appui-abstract\";\r\nimport { Range2d } from \"@itwin/core-geometry\";\r\nimport { isArray } from \"lodash\";\r\n\r\n/** @internal */\r\nexport class ArcGISMapLayerImageryProvider extends ArcGISImageryProvider {\r\n private _maxDepthFromLod = 0;\r\n private _minDepthFromLod = 0;\r\n private _copyrightText = \"Copyright\";\r\n private _querySupported = false;\r\n private _tileMapSupported = false;\r\n private _tileMap: ArcGISTileMap|undefined;\r\n\r\n public serviceJson: any;\r\n constructor(settings: ImageMapLayerSettings) {\r\n super(settings, false);\r\n this._accessClient = IModelApp.mapLayerFormatRegistry.getAccessClient(settings.formatId);\r\n }\r\n\r\n protected override get _filterByCartoRange() { return false; } // Can't trust footprint ranges (USGS Hydro)\r\n\r\n public override get minimumZoomLevel() { return Math.max(super.minimumZoomLevel, this._minDepthFromLod); }\r\n public override get maximumZoomLevel() { return this._maxDepthFromLod > 0 ? this._maxDepthFromLod : super.maximumZoomLevel; }\r\n\r\n public uintToString(uintArray: any) {\r\n return Buffer.from(uintArray).toJSON();\r\n\r\n }\r\n\r\n private async fetchTile(row: number, column: number, zoomLevel: number) {\r\n const tileUrl: string = await this.constructUrl(row, column, zoomLevel);\r\n if (tileUrl.length === 0)\r\n return undefined;\r\n return this.fetch(new URL(tileUrl), { method: \"GET\" });\r\n }\r\n\r\n public override async loadTile(row: number, column: number, zoomLevel: number): Promise<ImageSource | undefined> {\r\n if ((this.status === MapLayerImageryProviderStatus.RequireAuth)) {\r\n return undefined;\r\n }\r\n\r\n try {\r\n const tileResponse = await this.fetchTile(row, column, zoomLevel);\r\n if (tileResponse === undefined)\r\n return undefined;\r\n\r\n if (!this._hasSuccessfullyFetchedTile) {\r\n this._hasSuccessfullyFetchedTile = true;\r\n }\r\n return await this.getImageFromTileResponse(tileResponse, zoomLevel);\r\n } catch (error) {\r\n return undefined;\r\n }\r\n }\r\n\r\n protected override _generateChildIds(tile: ImageryMapTile, resolveChildren: (childIds: QuadId[]) => void) {\r\n const childIds = this.getPotentialChildIds(tile);\r\n if (tile.quadId.level < Math.max(1, this.minimumZoomLevel-1)) {\r\n resolveChildren(childIds);\r\n return;\r\n }\r\n\r\n if (this._tileMap) {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this._tileMap.getChildrenAvailability(childIds).then((availability) => {\r\n const availableChildIds = new Array<QuadId>();\r\n for (let i = 0; i < availability.length; i++)\r\n if (availability[i])\r\n availableChildIds.push(childIds[i]);\r\n\r\n resolveChildren (availableChildIds);\r\n });\r\n } else if (this._usesCachedTiles && this.cartoRange) {\r\n // Filter children by range\r\n const availableChildIds = new Array<QuadId>();\r\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\r\n for (let i = 0; i < childIds.length; i++) {\r\n const childExtent = this.getEPSG4326Extent(childIds[i].row, childIds[i].column, childIds[i].level);\r\n\r\n const childRange = MapCartoRectangle.fromDegrees(childExtent.longitudeLeft, childExtent.latitudeBottom, childExtent.longitudeRight, childExtent.latitudeTop);\r\n if (childRange.intersectsRange(this.cartoRange)) {\r\n availableChildIds.push(childIds[i]);\r\n }\r\n }\r\n resolveChildren (availableChildIds);\r\n } else {\r\n resolveChildren (childIds); // Resolve all children\r\n }\r\n }\r\n\r\n private isEpsg3857Compatible(tileInfo: any) {\r\n if (tileInfo.spatialReference?.latestWkid !== 3857 || !Array.isArray(tileInfo.lods))\r\n return false;\r\n\r\n const zeroLod = tileInfo.lods[0];\r\n return zeroLod.level === 0 && Math.abs(zeroLod.resolution - 156543.03392800014) < .001;\r\n }\r\n\r\n public override async initialize(): Promise<void> {\r\n\r\n const json = await ArcGisUtilities.getServiceJson(this._settings.url, this._settings.formatId, this._settings.userName, this._settings.password);\r\n if (json === undefined)\r\n throw new ServerError(IModelStatus.ValidationFailed, \"\");\r\n\r\n if (json?.error?.code === ArcGisErrorCode.TokenRequired || json?.error?.code === ArcGisErrorCode.InvalidToken) {\r\n // Check again layer status, it might have change during await.\r\n if (this.status === MapLayerImageryProviderStatus.Valid) {\r\n this.setStatus(MapLayerImageryProviderStatus.RequireAuth);\r\n return; // By returning (i.e not throwing), we ensure the tileTree get created and current provider is preserved to report status.\r\n }\r\n }\r\n\r\n if (json !== undefined) {\r\n this.serviceJson = json;\r\n\r\n if (json.capabilities) {\r\n\r\n this._querySupported = json.capabilities.indexOf(\"Query\") >= 0;\r\n this._tileMapSupported = json.capabilities.indexOf(\"Tilemap\") >= 0;\r\n }\r\n if (json.copyrightText)\r\n this._copyrightText = json.copyrightText;\r\n\r\n if (false !== (this._usesCachedTiles = json.tileInfo !== undefined && this.isEpsg3857Compatible(json.tileInfo))) {\r\n if (json.maxScale !== undefined && json.maxScale !== 0 && Array.isArray(json.tileInfo.lods)) {\r\n for (; this._maxDepthFromLod < json.tileInfo.lods.length && json.tileInfo.lods[this._maxDepthFromLod].scale > json.maxScale; this._maxDepthFromLod++)\r\n ;\r\n }\r\n }\r\n\r\n // Create tile map object only if we are going to request tiles from this server and it support tilemap requests.\r\n if (this._usesCachedTiles && this._tileMapSupported) {\r\n this._tileMap = new ArcGISTileMap(this._settings.url, this._settings, json.tileInfo?.lods?.length, this._accessClient);\r\n }\r\n\r\n // Read range using fullextent from service metadata\r\n if (json.fullExtent) {\r\n if (json.fullExtent.spatialReference.latestWkid === 3857 || json.fullExtent.spatialReference.wkid === 102100) {\r\n const range3857 = Range2d.createFrom({\r\n low: {x: json.fullExtent.xmin, y: json.fullExtent.ymin},\r\n high: {x: json.fullExtent.xmax, y: json.fullExtent.ymax} });\r\n\r\n const west = this.getEPSG4326Lon(range3857.xLow);\r\n const south = this.getEPSG4326Lat(range3857.yLow);\r\n const east = this.getEPSG4326Lon(range3857.xHigh);\r\n const north = this.getEPSG4326Lat(range3857.yHigh);\r\n this.cartoRange = MapCartoRectangle.fromDegrees(west, south, east, north);\r\n }\r\n }\r\n\r\n // Read minLOD if available\r\n if (json.minLOD !== undefined) {\r\n const minLod = parseInt(json.minLOD, 10);\r\n if (!Number.isNaN(minLod)) {\r\n this._minDepthFromLod = minLod;\r\n }\r\n } else if (json.minScale) {\r\n // Read min LOD using minScale\r\n const minScale = json.minScale;\r\n if (json.tileInfo?.lods !== undefined && isArray(json.tileInfo.lods)) {\r\n for (const lod of json.tileInfo.lods) {\r\n if (lod.scale < minScale) {\r\n this._minDepthFromLod = lod.level;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n public override addLogoCards(cards: HTMLTableElement): void {\r\n if (!cards.dataset.arcGisLogoCard) {\r\n cards.dataset.arcGisLogoCard = \"true\";\r\n cards.appendChild(IModelApp.makeLogoCard({ heading: \"ArcGIS\", notice: this._copyrightText }));\r\n }\r\n }\r\n\r\n // Translates the provided Cartographic into a EPSG:3857 point, and retrieve information.\r\n // tolerance is in pixels\r\n private async getIdentifyData(quadId: QuadId, carto: Cartographic, tolerance: number): Promise<any> {\r\n const bboxString = this.getEPSG3857ExtentString(quadId.row, quadId.column, quadId.level);\r\n const x = this.getEPSG3857X(carto.longitudeDegrees);\r\n const y = this.getEPSG3857Y(carto.latitudeDegrees);\r\n const tmpUrl = `${this._settings.url}/identify?f=json&tolerance=${tolerance}&returnGeometry=false&sr=3857&imageDisplay=${this.tileSize},${this.tileSize},96&layers=${this.getLayerString(\"visible\")}&geometry=${x},${y}&geometryType=esriGeometryPoint&mapExtent=${bboxString}`;\r\n const urlObj = new URL(tmpUrl);\r\n\r\n const response = await this.fetch(urlObj, { method: \"GET\" } );\r\n return response.json();\r\n }\r\n\r\n // Makes an identify request to ESRI MapService server, and return it as a list of formatted strings\r\n public override async getToolTip(strings: string[], quadId: QuadId, carto: Cartographic, tree: ImageryMapTileTree): Promise<void> {\r\n await super.getToolTip(strings, quadId, carto, tree);\r\n\r\n if (!this._querySupported)\r\n return;\r\n\r\n const stringSet = new Set<string>();\r\n const json = await this.getIdentifyData(quadId, carto, 1);\r\n\r\n if (json && Array.isArray(json.results)) {\r\n for (const result of json.results) {\r\n if (result.attributes !== undefined && result.attributes[result.displayFieldName] !== undefined) {\r\n const thisString = `${result.displayFieldName}: ${result.attributes[result.displayFieldName]}`;\r\n if (!stringSet.has(thisString)) {\r\n strings.push(thisString);\r\n stringSet.add(thisString);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Makes an identify request to ESRI MapService , and return it as a list MapLayerFeatureInfo object\r\n public override async getFeatureInfo(featureInfos: MapLayerFeatureInfo[], quadId: QuadId, carto: Cartographic, _tree: ImageryMapTileTree): Promise<void> {\r\n if (!this._querySupported)\r\n return;\r\n\r\n const json = await this.getIdentifyData(quadId, carto,5 );\r\n if (json && Array.isArray(json.results)) {\r\n const layerInfo: MapLayerFeatureInfo = {layerName: this._settings.name};\r\n\r\n for (const result of json.results) {\r\n\r\n const subLayerInfo: MapSubLayerFeatureInfo = {\r\n subLayerName: result.layerName ?? \"\",\r\n displayFieldName: result.displayFieldName,\r\n records : [],\r\n };\r\n for (const [key, value] of Object.entries(result.attributes)) {\r\n // Convert everything to string for now\r\n const strValue = String(value);\r\n subLayerInfo.records?.push(new MapFeatureInfoRecord (\r\n {valueFormat:PropertyValueFormat.Primitive, value:strValue, displayValue: strValue},\r\n {name: key, displayLabel: key, typename:StandardTypeNames.String}\r\n ));\r\n }\r\n\r\n if (layerInfo.info === undefined) {\r\n layerInfo.info = [];\r\n }\r\n\r\n if (!(layerInfo.info instanceof HTMLElement)) {\r\n layerInfo.info.push(subLayerInfo);\r\n }\r\n\r\n }\r\n\r\n featureInfos.push(layerInfo);\r\n }\r\n }\r\n\r\n protected getLayerString(prefix = \"show\"): string {\r\n const layers = new Array<string>();\r\n this._settings.subLayers.forEach((subLayer) => {\r\n if (this._settings.isSubLayerVisible(subLayer))\r\n layers.push(subLayer.idString);\r\n });\r\n\r\n return `${prefix}: ${layers.join(\",\")} `;\r\n }\r\n\r\n // construct the Url from the desired Tile\r\n public async constructUrl(row: number, column: number, zoomLevel: number): Promise<string> {\r\n let tmpUrl;\r\n if (this._usesCachedTiles) {\r\n tmpUrl = `${this._settings.url}/tile/${zoomLevel}/${row}/${column} `;\r\n } else {\r\n const bboxString = `${this.getEPSG3857ExtentString(row, column, zoomLevel)}&bboxSR=3857`;\r\n tmpUrl = `${this._settings.url}/export?bbox=${bboxString}&size=${this.tileSize},${this.tileSize}&layers=${this.getLayerString()}&format=png&transparent=${this.transparentBackgroundString}&f=image&sr=3857&imagesr=3857`;\r\n }\r\n return tmpUrl;\r\n }\r\n}\r\n"]}
@@ -84,6 +84,7 @@ export declare class ImageryMapLayerTreeReference extends MapLayerTileTreeRefere
84
84
  get castsShadows(): boolean;
85
85
  /** Return the owner of the TileTree to draw. */
86
86
  get treeOwner(): TileTreeOwner;
87
+ resetTreeOwner(): void;
87
88
  get imageryProvider(): MapLayerImageryProvider | undefined;
88
89
  }
89
90
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"ImageryTileTree.d.ts","sourceRoot":"","sources":["../../../../src/tile/map/ImageryTileTree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ImageryTileTree.d.ts","sourceRoot":"","sources":["../../../../src/tile/map/ImageryTileTree.ts"],"names":[],"mappings":"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"}
@@ -273,6 +273,9 @@ class ImageryMapLayerTreeReference extends internal_1.MapLayerTileTreeReference
273
273
  get treeOwner() {
274
274
  return this.iModel.tiles.getTileTreeOwner({ settings: this._layerSettings }, imageryTreeSupplier);
275
275
  }
276
+ resetTreeOwner() {
277
+ return this.iModel.tiles.resetTileTreeOwner({ settings: this._layerSettings }, imageryTreeSupplier);
278
+ }
276
279
  get imageryProvider() {
277
280
  const tree = this.treeOwner.load();
278
281
  if (!tree || !(tree instanceof ImageryMapTileTree))