@itwin/core-frontend 4.5.0-dev.3 → 4.5.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 (124) hide show
  1. package/CHANGELOG.md +68 -1
  2. package/LICENSE.md +1 -1
  3. package/lib/cjs/AccuDraw.d.ts +6 -0
  4. package/lib/cjs/AccuDraw.d.ts.map +1 -1
  5. package/lib/cjs/AccuDraw.js +11 -0
  6. package/lib/cjs/AccuDraw.js.map +1 -1
  7. package/lib/cjs/CheckpointConnection.d.ts +7 -7
  8. package/lib/cjs/CheckpointConnection.d.ts.map +1 -1
  9. package/lib/cjs/CheckpointConnection.js +31 -23
  10. package/lib/cjs/CheckpointConnection.js.map +1 -1
  11. package/lib/cjs/IModelApp.js +1 -1
  12. package/lib/cjs/IModelApp.js.map +1 -1
  13. package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.js +1 -1
  14. package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.js.map +1 -1
  15. package/lib/cjs/ViewManager.d.ts.map +1 -1
  16. package/lib/cjs/ViewManager.js +4 -0
  17. package/lib/cjs/ViewManager.js.map +1 -1
  18. package/lib/cjs/core-frontend.d.ts +1 -0
  19. package/lib/cjs/core-frontend.d.ts.map +1 -1
  20. package/lib/cjs/core-frontend.js +1 -0
  21. package/lib/cjs/core-frontend.js.map +1 -1
  22. package/lib/cjs/render/webgl/GLTimer.d.ts.map +1 -1
  23. package/lib/cjs/render/webgl/GLTimer.js +24 -4
  24. package/lib/cjs/render/webgl/GLTimer.js.map +1 -1
  25. package/lib/cjs/request/utils.d.ts +5 -0
  26. package/lib/cjs/request/utils.d.ts.map +1 -1
  27. package/lib/cjs/request/utils.js +11 -1
  28. package/lib/cjs/request/utils.js.map +1 -1
  29. package/lib/cjs/tile/BatchedTileIdMap.d.ts +6 -1
  30. package/lib/cjs/tile/BatchedTileIdMap.d.ts.map +1 -1
  31. package/lib/cjs/tile/BatchedTileIdMap.js +9 -0
  32. package/lib/cjs/tile/BatchedTileIdMap.js.map +1 -1
  33. package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
  34. package/lib/cjs/tile/GltfReader.js +10 -4
  35. package/lib/cjs/tile/GltfReader.js.map +1 -1
  36. package/lib/cjs/tile/RealityTileTree.d.ts +5 -0
  37. package/lib/cjs/tile/RealityTileTree.d.ts.map +1 -1
  38. package/lib/cjs/tile/RealityTileTree.js +1 -1
  39. package/lib/cjs/tile/RealityTileTree.js.map +1 -1
  40. package/lib/cjs/tile/TileAdmin.d.ts +24 -1
  41. package/lib/cjs/tile/TileAdmin.d.ts.map +1 -1
  42. package/lib/cjs/tile/TileAdmin.js +15 -4
  43. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  44. package/lib/cjs/tile/map/CesiumTerrainProvider.d.ts +1 -1
  45. package/lib/cjs/tile/map/CesiumTerrainProvider.d.ts.map +1 -1
  46. package/lib/cjs/tile/map/CesiumTerrainProvider.js +8 -4
  47. package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
  48. package/lib/cjs/tile/map/MapTileTree.d.ts +1 -0
  49. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  50. package/lib/cjs/tile/map/MapTileTree.js +25 -11
  51. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  52. package/lib/cjs/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
  53. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js +16 -0
  54. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  55. package/lib/cjs/tile/map/TerrainMeshProvider.d.ts +2 -0
  56. package/lib/cjs/tile/map/TerrainMeshProvider.d.ts.map +1 -1
  57. package/lib/cjs/tile/map/TerrainMeshProvider.js.map +1 -1
  58. package/lib/cjs/tools/ToolAdmin.d.ts +2 -0
  59. package/lib/cjs/tools/ToolAdmin.d.ts.map +1 -1
  60. package/lib/cjs/tools/ToolAdmin.js +4 -0
  61. package/lib/cjs/tools/ToolAdmin.js.map +1 -1
  62. package/lib/esm/AccuDraw.d.ts +6 -0
  63. package/lib/esm/AccuDraw.d.ts.map +1 -1
  64. package/lib/esm/AccuDraw.js +11 -0
  65. package/lib/esm/AccuDraw.js.map +1 -1
  66. package/lib/esm/CheckpointConnection.d.ts +7 -7
  67. package/lib/esm/CheckpointConnection.d.ts.map +1 -1
  68. package/lib/esm/CheckpointConnection.js +31 -23
  69. package/lib/esm/CheckpointConnection.js.map +1 -1
  70. package/lib/esm/IModelApp.js +1 -1
  71. package/lib/esm/IModelApp.js.map +1 -1
  72. package/lib/esm/RealityDataSourceCesiumIonAssetImpl.js +1 -1
  73. package/lib/esm/RealityDataSourceCesiumIonAssetImpl.js.map +1 -1
  74. package/lib/esm/ViewManager.d.ts.map +1 -1
  75. package/lib/esm/ViewManager.js +4 -0
  76. package/lib/esm/ViewManager.js.map +1 -1
  77. package/lib/esm/core-frontend.d.ts +1 -0
  78. package/lib/esm/core-frontend.d.ts.map +1 -1
  79. package/lib/esm/core-frontend.js +1 -0
  80. package/lib/esm/core-frontend.js.map +1 -1
  81. package/lib/esm/render/webgl/GLTimer.d.ts.map +1 -1
  82. package/lib/esm/render/webgl/GLTimer.js +24 -4
  83. package/lib/esm/render/webgl/GLTimer.js.map +1 -1
  84. package/lib/esm/request/utils.d.ts +5 -0
  85. package/lib/esm/request/utils.d.ts.map +1 -1
  86. package/lib/esm/request/utils.js +9 -0
  87. package/lib/esm/request/utils.js.map +1 -1
  88. package/lib/esm/tile/BatchedTileIdMap.d.ts +6 -1
  89. package/lib/esm/tile/BatchedTileIdMap.d.ts.map +1 -1
  90. package/lib/esm/tile/BatchedTileIdMap.js +9 -0
  91. package/lib/esm/tile/BatchedTileIdMap.js.map +1 -1
  92. package/lib/esm/tile/GltfReader.d.ts.map +1 -1
  93. package/lib/esm/tile/GltfReader.js +10 -4
  94. package/lib/esm/tile/GltfReader.js.map +1 -1
  95. package/lib/esm/tile/RealityTileTree.d.ts +5 -0
  96. package/lib/esm/tile/RealityTileTree.d.ts.map +1 -1
  97. package/lib/esm/tile/RealityTileTree.js +1 -1
  98. package/lib/esm/tile/RealityTileTree.js.map +1 -1
  99. package/lib/esm/tile/TileAdmin.d.ts +24 -1
  100. package/lib/esm/tile/TileAdmin.d.ts.map +1 -1
  101. package/lib/esm/tile/TileAdmin.js +15 -4
  102. package/lib/esm/tile/TileAdmin.js.map +1 -1
  103. package/lib/esm/tile/map/CesiumTerrainProvider.d.ts +1 -1
  104. package/lib/esm/tile/map/CesiumTerrainProvider.d.ts.map +1 -1
  105. package/lib/esm/tile/map/CesiumTerrainProvider.js +9 -5
  106. package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
  107. package/lib/esm/tile/map/MapTileTree.d.ts +1 -0
  108. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  109. package/lib/esm/tile/map/MapTileTree.js +25 -11
  110. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  111. package/lib/esm/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
  112. package/lib/esm/tile/map/MapTiledGraphicsProvider.js +17 -1
  113. package/lib/esm/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  114. package/lib/esm/tile/map/TerrainMeshProvider.d.ts +2 -0
  115. package/lib/esm/tile/map/TerrainMeshProvider.d.ts.map +1 -1
  116. package/lib/esm/tile/map/TerrainMeshProvider.js.map +1 -1
  117. package/lib/esm/tools/ToolAdmin.d.ts +2 -0
  118. package/lib/esm/tools/ToolAdmin.d.ts.map +1 -1
  119. package/lib/esm/tools/ToolAdmin.js +4 -0
  120. package/lib/esm/tools/ToolAdmin.js.map +1 -1
  121. package/lib/public/locales/en/iModelJs.json +2 -1
  122. package/lib/public/scripts/parse-imdl-worker.js +1 -1
  123. package/lib/workers/webpack/parse-imdl-worker.js +1 -1
  124. package/package.json +18 -18
@@ -1 +1 @@
1
- {"version":3,"file":"ViewManager.js","sourceRoot":"","sources":["../../src/ViewManager.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 Views\r\n */\r\nimport { BeEvent, BentleyStatus, BeTimePoint, BeUiEvent, Id64Arg } from \"@itwin/core-bentley\";\r\nimport { GeometryStreamProps } from \"@itwin/core-common\";\r\nimport { HitDetail } from \"./HitDetail\";\r\nimport { IModelApp } from \"./IModelApp\";\r\nimport { IModelConnection } from \"./IModelConnection\";\r\nimport { DisclosedTileTreeSet, TileTree } from \"./tile/internal\";\r\nimport { BeButtonEvent, EventHandled } from \"./tools/Tool\";\r\nimport { ScreenViewport, ViewportDecorator } from \"./Viewport\";\r\nimport { System } from \"./render/webgl/System\";\r\n\r\n/** Interface for drawing [decoration graphics]($docs/learning/frontend/ViewDecorations.md) into, or on top of, the active [[ScreenViewport]]s managed by [[ViewManager]].\r\n * Decorators generate [[Decorations]].\r\n * @public\r\n * @extensions\r\n */\r\nexport interface Decorator extends ViewportDecorator {\r\n /** If the [[decorate]] method created pickable graphics, return true if the supplied Id is from this Decorator.\r\n * @param id The Id of the currently selected pickable graphics.\r\n * @returns true if 'id' belongs to this Decorator\r\n */\r\n testDecorationHit?(id: string): boolean;\r\n\r\n /** If the [[decorate]] method created pickable graphics using a persistent element id instead of a transient id,\r\n * return true if the Decorator wants the opportunity to override the default persistent element behavior for\r\n * the supplied [[HitDetail]].\r\n * - Replace or augment the element's tooltip by implementing [[getDecorationToolTip]].\r\n * - Override the element's snap geometry by implementing [[getDecorationGeometry]].\r\n * - Handle button events as decorator events by implementing [[onDecorationButtonEvent]].\r\n * @param hit The HitDetail of the currently selected persistent element or pickable graphics using a persistent element id.\r\n * @returns true if this Decorator wants to override the default persistent element behavior.\r\n */\r\n overrideElementHit?(hit: HitDetail): boolean;\r\n\r\n /** If [[testDecorationHit]] or [[overrideElementHit]] returned true, implement this method to return the tooltip message for this Decorator.\r\n * @param hit The HitDetail about the decoration that was picked.\r\n * @returns A promise with the HTMLElement or string (that may contain HTML) with the tooltip message.\r\n */\r\n getDecorationToolTip?(hit: HitDetail): Promise<HTMLElement | string>;\r\n\r\n /** If [[testDecorationHit]] or [[overrideElementHit]] returned true, implement this method to handle a button event for this Decorator.\r\n * @param hit The HitDetail about the decoration that was picked.\r\n * @param ev The BeButtonEvent that identified this decoration.\r\n * @returns A Promise that resolves to Yes if event completely handled by decoration and event should not be processed by the calling tool.\r\n */\r\n onDecorationButtonEvent?(hit: HitDetail, ev: BeButtonEvent): Promise<EventHandled>;\r\n\r\n /** If [[testDecorationHit]] or [[overrideElementHit]] returned true, implement this method to return the snappable geometry for this Decorator. Geometry that changes with every cursor motion isn't valid for snapping.\r\n * An example would be an InteractiveTool for placing a linestring. It might wish to allow snapping to accepted segments, the segment from the last accepted point to the current cursor position would not be included\r\n * as snappable geometry and would just be displayed in dynamics.\r\n * @param hit The HitDetail about the decoration that was picked.\r\n * @returns GeometryStreamProps containing world coordinate snappable geometry for this decoration.\r\n */\r\n getDecorationGeometry?(hit: HitDetail): GeometryStreamProps | undefined;\r\n}\r\n\r\n/** Argument for [[ViewManager.onSelectedViewportChanged]]\r\n * @public\r\n * @extensions\r\n */\r\nexport interface SelectedViewportChangedArgs {\r\n current?: ScreenViewport;\r\n previous?: ScreenViewport;\r\n}\r\n\r\n/** An object that can contribute customizations to the tooltip displayed when mousing over an element or other entity in a [[Viewport]].\r\n * @see [[ViewManager.addToolTipProvider]] to register a tooltip provider.\r\n * @public\r\n */\r\nexport interface ToolTipProvider {\r\n /** Augment or replace the tooltip for the specified HitDetail.\r\n * @note To cooperate with other tooltip providers, prefer to *append* information to the input tooltip instead of replacing it entirely.\r\n */\r\n augmentToolTip(hit: HitDetail, tooltip: Promise<HTMLElement | string>): Promise<HTMLElement | string>;\r\n}\r\n\r\n/** The ViewManager holds the list of opened views, plus the *selected view*. It also provides notifications of view open/close and suspend/resume.\r\n * Applications must call [[addViewport]] when new Viewports that should be associated with user events are created.\r\n *\r\n * A single ViewManager is created when [[IModelApp.startup]] is called. It can be accessed via the static member [[IModelApp.viewManager]].\r\n *\r\n * The ViewManager controls the render loop, which causes the contents of each registered [[Viewport]] to update on the screen.\r\n * @public\r\n * @extensions\r\n */\r\nexport class ViewManager implements Iterable<ScreenViewport> {\r\n public inDynamicsMode = false;\r\n public cursor = \"default\";\r\n private readonly _viewports: ScreenViewport[] = [];\r\n public readonly decorators: Decorator[] = [];\r\n private _selectedView?: ScreenViewport;\r\n private _invalidateScenes = false;\r\n private _skipSceneCreation = false;\r\n private _doIdleWork = false;\r\n private _idleWorkTimer?: any;\r\n\r\n /** @internal */\r\n public readonly toolTipProviders: ToolTipProvider[] = [];\r\n\r\n private _beginIdleWork() {\r\n const idleWork = () => {\r\n if (undefined === this._idleWorkTimer)\r\n return;\r\n if (this._viewports.length > 0) {\r\n this._idleWorkTimer = undefined;\r\n return;\r\n }\r\n if (IModelApp.renderSystem.doIdleWork())\r\n this._idleWorkTimer = setTimeout(idleWork, 1);\r\n else\r\n this._idleWorkTimer = undefined;\r\n };\r\n\r\n if (undefined === this._idleWorkTimer)\r\n this._idleWorkTimer = setTimeout(idleWork, 1);\r\n }\r\n\r\n /** @internal */\r\n public onInitialized() {\r\n this.addDecorator(IModelApp.accuSnap);\r\n this.addDecorator(IModelApp.tentativePoint);\r\n this.addDecorator(IModelApp.accuDraw);\r\n this.addDecorator(IModelApp.toolAdmin);\r\n this.cursor = \"default\";\r\n\r\n const options = IModelApp.renderSystem.options;\r\n this._doIdleWork = true === options.doIdleWork;\r\n if (this._doIdleWork)\r\n this._beginIdleWork();\r\n }\r\n\r\n /** @internal */\r\n public onShutDown() {\r\n if (undefined !== this._idleWorkTimer) {\r\n clearTimeout(this._idleWorkTimer);\r\n this._idleWorkTimer = undefined;\r\n }\r\n this._viewports.length = 0;\r\n this.decorators.length = 0;\r\n this.toolTipProviders.length = 0;\r\n this._selectedView = undefined;\r\n }\r\n\r\n /** Returns true if the specified viewport is currently being managed by this ViewManager.\r\n * @see [[addViewport]] to enable management of a viewport and [[dropViewport]] to disable it.\r\n */\r\n public hasViewport(viewport: ScreenViewport) {\r\n return this._viewports.includes(viewport);\r\n }\r\n\r\n /** Called after the selected view changes.\r\n * @param old Previously selected viewport.\r\n * @param current Currently selected viewport.\r\n */\r\n public readonly onSelectedViewportChanged = new BeUiEvent<SelectedViewportChangedArgs>();\r\n\r\n /** Called after a view is opened. This can happen when the iModel is first opened or when a user opens a new view. */\r\n public readonly onViewOpen = new BeUiEvent<ScreenViewport>();\r\n\r\n /** Called after a view is closed. This can happen when the iModel is closed or when a user closes an open view. */\r\n public readonly onViewClose = new BeUiEvent<ScreenViewport>();\r\n\r\n /** Called after a view is suspended. This happens when the application is minimized or, on a tablet, when the application\r\n * is moved to the background.\r\n */\r\n public readonly onViewSuspend = new BeUiEvent<ScreenViewport>();\r\n\r\n /** Called after a suspended view is resumed. This can happen when a minimized application is restored\r\n * or, on a tablet, when the application is moved to the foreground.\r\n */\r\n public readonly onViewResume = new BeUiEvent<ScreenViewport>();\r\n\r\n /** Called at the beginning of each tick of the render loop, before any viewports have been updated.\r\n * The render loop is typically invoked by a requestAnimationFrame() callback. It will not be invoked if the ViewManager is tracking no viewports.\r\n * @note Due to the frequency of this event, avoid performing expensive work inside event listeners.\r\n * @see [[ViewManager.onFinishRender]]\r\n */\r\n public readonly onBeginRender = new BeEvent<() => void>();\r\n\r\n /** Called at the end of each tick of the render loop, after all viewports have been updated.\r\n * The render loop is typically invoked by a requestAnimationFrame() callback. It will not be invoked if the ViewManager is tracking no viewports.\r\n * @note Due to the frequency of this event, avoid performing expensive work inside event listeners.\r\n * @see [[ViewManager.onBeginRender]]\r\n */\r\n public readonly onFinishRender = new BeEvent<() => void>();\r\n\r\n /** @internal */\r\n public endDynamicsMode(): void {\r\n if (!this.inDynamicsMode)\r\n return;\r\n\r\n this.inDynamicsMode = false;\r\n\r\n const cursorVp = IModelApp.toolAdmin.cursorView;\r\n if (cursorVp)\r\n cursorVp.changeDynamics(undefined);\r\n\r\n for (const vp of this._viewports) {\r\n if (vp !== cursorVp)\r\n vp.changeDynamics(undefined);\r\n }\r\n }\r\n\r\n /** @internal */\r\n public beginDynamicsMode() { this.inDynamicsMode = true; }\r\n\r\n /** @internal */\r\n public get doesHostHaveFocus(): boolean { return document.hasFocus(); }\r\n\r\n /** Set the selected [[Viewport]] to undefined. */\r\n public clearSelectedView(): void {\r\n const previousVp = this.selectedView;\r\n this._selectedView = undefined;\r\n this.notifySelectedViewportChanged(previousVp, undefined);\r\n }\r\n\r\n /** Sets the selected [[Viewport]]. */\r\n public async setSelectedView(vp: ScreenViewport | undefined): Promise<BentleyStatus> {\r\n if (undefined === vp)\r\n vp = this.getFirstOpenView();\r\n\r\n if (vp === this.selectedView) // already the selected view\r\n return BentleyStatus.SUCCESS;\r\n\r\n if (undefined === vp) {\r\n this.clearSelectedView();\r\n return BentleyStatus.ERROR;\r\n }\r\n\r\n const previousVp = this.selectedView;\r\n this._selectedView = vp;\r\n\r\n this.notifySelectedViewportChanged(previousVp, vp);\r\n\r\n if (undefined === previousVp)\r\n await IModelApp.toolAdmin.startDefaultTool();\r\n\r\n return BentleyStatus.SUCCESS;\r\n }\r\n\r\n /** @internal */\r\n public notifySelectedViewportChanged(previous: ScreenViewport | undefined, current: ScreenViewport | undefined) {\r\n IModelApp.toolAdmin.onSelectedViewportChanged(previous, current);// eslint-disable-line @typescript-eslint/no-floating-promises\r\n this.onSelectedViewportChanged.emit({ previous, current });\r\n }\r\n\r\n /** The \"selected view\" is the default for certain operations. */\r\n public get selectedView(): ScreenViewport | undefined { return this._selectedView; }\r\n\r\n /** Get the first opened view. */\r\n public getFirstOpenView(): ScreenViewport | undefined { return this._viewports.length > 0 ? this._viewports[0] : undefined; }\r\n\r\n /** Check if only a single viewport is being used. If so, render directly on-screen using its WebGL canvas. Otherwise, render each view offscreen. */\r\n private updateRenderToScreen() {\r\n const renderToScreen = 1 === this._viewports.length;\r\n for (const vp of this)\r\n vp.rendersToScreen = renderToScreen;\r\n }\r\n\r\n /** Add a new Viewport to the list of opened views and create an EventController for it.\r\n * @param newVp the Viewport to add\r\n * @returns SUCCESS if vp was successfully added, ERROR if it was already present.\r\n * @note raises onViewOpen event with newVp.\r\n */\r\n public addViewport(newVp: ScreenViewport): BentleyStatus {\r\n if (this.hasViewport(newVp)) // make sure its not already added\r\n return BentleyStatus.ERROR;\r\n\r\n newVp.onViewManagerAdd();\r\n\r\n this._viewports.push(newVp);\r\n this.updateRenderToScreen();\r\n this.setSelectedView(newVp);// eslint-disable-line @typescript-eslint/no-floating-promises\r\n\r\n // Start up the render loop if necessary.\r\n if (1 === this._viewports.length)\r\n IModelApp.startEventLoop();\r\n\r\n this.onViewOpen.emit(newVp);\r\n\r\n return BentleyStatus.SUCCESS;\r\n }\r\n\r\n /** Remove a Viewport from the list of opened views, and optionally dispose of it.\r\n * Typically a Viewport is dropped when it is no longer of any use to the application, in which case it should also be\r\n * disposed of as it may hold significant GPU resources.\r\n * However in some cases a Viewport may be temporarily dropped to suspend rendering; and subsequently re-added to\r\n * resume rendering - for example, when the Viewport is temporarily hidden by other UI elements.\r\n * In the latter case it is up to the caller to ensure the Viewport is properly disposed of when it is no longer needed.\r\n * Attempting to invoke any function on a Viewport after it has been disposed is an error.\r\n * @param vp the Viewport to remove.\r\n * @param disposeOfViewport Whether or not to dispose of the Viewport. Defaults to true.\r\n * @return SUCCESS if vp was successfully removed, ERROR if it was not present.\r\n * @note raises onViewClose event with vp.\r\n */\r\n public dropViewport(vp: ScreenViewport, disposeOfViewport: boolean = true): BentleyStatus {\r\n const index = this._viewports.indexOf(vp);\r\n if (index === -1)\r\n return BentleyStatus.ERROR;\r\n\r\n this.onViewClose.emit(vp);\r\n\r\n // make sure tools don't think the cursor is still in this viewport\r\n IModelApp.toolAdmin.forgetViewport(vp);\r\n\r\n vp.onViewManagerDrop();\r\n\r\n this._viewports.splice(index, 1);\r\n\r\n if (this.selectedView === vp) // if removed viewport was selectedView, set it to undefined.\r\n this.setSelectedView(undefined);// eslint-disable-line @typescript-eslint/no-floating-promises\r\n\r\n vp.rendersToScreen = false;\r\n this.updateRenderToScreen();\r\n\r\n if (disposeOfViewport)\r\n vp.dispose();\r\n\r\n if (this._doIdleWork && this._viewports.length === 0)\r\n this._beginIdleWork();\r\n\r\n return BentleyStatus.SUCCESS;\r\n }\r\n\r\n /** Iterate over the viewports registered with the view manager. */\r\n public [Symbol.iterator](): Iterator<ScreenViewport> {\r\n return this._viewports[Symbol.iterator]();\r\n }\r\n\r\n /** Force each registered [[Viewport]] to regenerate all of its cached [[Decorations]] on the next frame. If the decorator parameter is specified, only\r\n * the specified decorator will have its cached decorations invalidated for all viewports.\r\n * @see [[Viewport.invalidateCachedDecorations]] to manually remove a decorator's cached decorations from a viewport, forcing them to be regenerated.\r\n * @beta\r\n */\r\n public invalidateCachedDecorationsAllViews(decorator: ViewportDecorator): void {\r\n if (decorator.useCachedDecorations)\r\n for (const vp of this)\r\n vp.invalidateCachedDecorations(decorator);\r\n }\r\n\r\n /** Force each registered [[Viewport]] to regenerate its [[Decorations]] on the next frame. */\r\n public invalidateDecorationsAllViews(): void {\r\n for (const vp of this)\r\n vp.invalidateDecorations();\r\n }\r\n\r\n /** Force each registered [[Viewport]] to regenerate its [[FeatureSymbology.Overrides]] on the next frame.\r\n * This is rarely needed - viewports keep track of their own states to detect when the overrides need to be recreated.\r\n */\r\n public invalidateSymbologyOverridesAllViews(): void {\r\n for (const vp of this)\r\n vp.setFeatureOverrideProviderChanged();\r\n }\r\n\r\n /** @internal */\r\n public onSelectionSetChanged(_iModel: IModelConnection) {\r\n for (const vp of this)\r\n vp.markSelectionSetDirty();\r\n\r\n IModelApp.requestNextAnimation();\r\n }\r\n\r\n /** @internal */\r\n public invalidateViewportScenes(): void {\r\n for (const vp of this)\r\n vp.invalidateScene();\r\n }\r\n\r\n /** @internal */\r\n public validateViewportScenes(): void {\r\n for (const vp of this)\r\n vp.setValidScene();\r\n }\r\n\r\n /** Requests that [[Viewport.createScene]] be invoked for every viewport on the next frame.\r\n * This is rarely useful - viewports keep track of their own states to detect when the scene needs to be recreated.\r\n */\r\n public invalidateScenes(): void {\r\n this._invalidateScenes = true;\r\n IModelApp.requestNextAnimation();\r\n }\r\n\r\n /** @internal */\r\n public get sceneInvalidated(): boolean { return this._invalidateScenes; }\r\n\r\n /** Invoked by ToolAdmin event loop.\r\n * @internal\r\n */\r\n public renderLoop(): void {\r\n if (0 === this._viewports.length)\r\n return;\r\n if (this._skipSceneCreation)\r\n this.validateViewportScenes();\r\n else if (this._invalidateScenes)\r\n this.invalidateViewportScenes();\r\n\r\n this._invalidateScenes = false;\r\n\r\n this.onBeginRender.raiseEvent();\r\n\r\n for (const vp of this._viewports)\r\n vp.renderFrame();\r\n\r\n this.onFinishRender.raiseEvent();\r\n }\r\n\r\n /** Purge TileTrees that haven't been drawn since the specified time point and are not currently in use by any ScreenViewport.\r\n * Intended strictly for debugging purposes - TileAdmin takes care of properly purging.\r\n * @internal\r\n */\r\n public purgeTileTrees(olderThan: BeTimePoint): void {\r\n // A single viewport can display tiles from more than one IModelConnection.\r\n // NOTE: A viewport may be displaying no trees - but we need to record its IModel so we can purge those which are NOT being displayed\r\n // NOTE: That won't catch external tile trees previously used by that viewport.\r\n const trees = new DisclosedTileTreeSet();\r\n const treesByIModel = new Map<IModelConnection, Set<TileTree>>();\r\n for (const vp of this._viewports) {\r\n vp.discloseTileTrees(trees);\r\n if (undefined === treesByIModel.get(vp.iModel))\r\n treesByIModel.set(vp.iModel, new Set<TileTree>());\r\n }\r\n\r\n for (const tree of trees) {\r\n let set = treesByIModel.get(tree.iModel);\r\n if (undefined === set) {\r\n set = new Set<TileTree>();\r\n treesByIModel.set(tree.iModel, set);\r\n }\r\n\r\n set.add(tree);\r\n }\r\n\r\n for (const entry of treesByIModel) {\r\n const iModel = entry[0];\r\n iModel.tiles.purge(olderThan, entry[1]);\r\n }\r\n }\r\n\r\n /** Get the tooltip for a persistent element.\r\n * Calls the backend method [Element.getToolTipMessage]($backend), and replaces all instances of `${localizeTag}` with localized string from IModelApp.i18n.\r\n * @beta\r\n */\r\n public async getElementToolTip(hit: HitDetail): Promise<HTMLElement | string> {\r\n const msg: string[] = await hit.iModel.getToolTipMessage(hit.sourceId); // wait for the locate message(s) from the backend\r\n return IModelApp.formatElementToolTip(msg);\r\n }\r\n\r\n /** Register a new [[ToolTipProvider]] to customize the locate tooltip.\r\n * @param provider The new tooltip provider to add.\r\n * @throws Error if `provider` is already registered.\r\n * @returns a function that may be called to remove this provider (in lieu of calling [[dropToolTipProvider]].)\r\n */\r\n public addToolTipProvider(provider: ToolTipProvider): () => void {\r\n if (this.toolTipProviders.includes(provider))\r\n throw new Error(\"tooltip provider already registered\");\r\n\r\n this.toolTipProviders.push(provider);\r\n return () => this.dropToolTipProvider(provider);\r\n }\r\n\r\n /** Drop (remove) a [[ToolTipProvider]] so it is no longer active.\r\n * @param provider The tooltip provider to drop.\r\n * @note Does nothing if provider is not currently active.\r\n */\r\n public dropToolTipProvider(provider: ToolTipProvider) {\r\n const index = this.toolTipProviders.indexOf(provider);\r\n if (index >= 0)\r\n this.toolTipProviders.splice(index, 1);\r\n }\r\n\r\n /** Add a new [[Decorator]] to display decorations into the active views.\r\n * @param decorator The new decorator to add.\r\n * @throws Error if decorator is already active.\r\n * @returns a function that may be called to remove this decorator (in lieu of calling [[dropDecorator]].)\r\n * @see [[dropDecorator]]\r\n */\r\n public addDecorator(decorator: Decorator): () => void {\r\n if (this.decorators.includes(decorator))\r\n throw new Error(\"decorator already registered\");\r\n\r\n this.decorators.push(decorator);\r\n this.invalidateDecorationsAllViews();\r\n return () => this.dropDecorator(decorator);\r\n }\r\n\r\n /** Drop (remove) a [[Decorator]] so it is no longer active.\r\n * @param decorator The Decorator to drop.\r\n * @returns true if the decorator was found and removed; false if the decorator was not found.\r\n */\r\n public dropDecorator(decorator: Decorator): boolean {\r\n const index = this.decorators.indexOf(decorator);\r\n if (index < 0)\r\n return false;\r\n\r\n this.invalidateCachedDecorationsAllViews(decorator);\r\n this.decorators.splice(index, 1);\r\n this.invalidateDecorationsAllViews();\r\n return true;\r\n }\r\n\r\n /** Get the tooltip for a pickable decoration.\r\n * @internal\r\n */\r\n public async getDecorationToolTip(hit: HitDetail): Promise<HTMLElement | string> {\r\n for (const decorator of this.decorators) {\r\n if (undefined !== decorator.testDecorationHit && undefined !== decorator.getDecorationToolTip && decorator.testDecorationHit(hit.sourceId))\r\n return decorator.getDecorationToolTip(hit);\r\n }\r\n return hit.viewport ? hit.viewport.getToolTip(hit) : \"\";\r\n }\r\n\r\n /** Allow a pickable decoration to handle a button event that identified it for the SelectTool.\r\n * @internal\r\n */\r\n public async onDecorationButtonEvent(hit: HitDetail, ev: BeButtonEvent): Promise<EventHandled> {\r\n for (const decorator of IModelApp.viewManager.decorators) {\r\n if (undefined !== decorator.testDecorationHit && undefined !== decorator.onDecorationButtonEvent && decorator.testDecorationHit(hit.sourceId))\r\n return decorator.onDecorationButtonEvent(hit, ev);\r\n }\r\n return EventHandled.No;\r\n }\r\n\r\n /** Allow a pickable decoration to be snapped to by AccuSnap or TentativePoint.\r\n * @internal\r\n */\r\n public getDecorationGeometry(hit: HitDetail): GeometryStreamProps | undefined {\r\n for (const decorator of IModelApp.viewManager.decorators) {\r\n if (undefined !== decorator.testDecorationHit && undefined !== decorator.getDecorationGeometry && decorator.testDecorationHit(hit.sourceId))\r\n return decorator.getDecorationGeometry(hit);\r\n }\r\n return undefined;\r\n }\r\n\r\n /** Allow a pickable decoration created using a persistent element id to augment or replace the the persistent element's tooltip.\r\n * @internal\r\n */\r\n public async overrideElementToolTip(hit: HitDetail): Promise<HTMLElement | string> {\r\n for (const decorator of this.decorators) {\r\n if (undefined !== decorator.overrideElementHit && undefined !== decorator.getDecorationToolTip && decorator.overrideElementHit(hit))\r\n return decorator.getDecorationToolTip(hit);\r\n }\r\n return this.getElementToolTip(hit);\r\n }\r\n\r\n /** Allow a pickable decoration created using a persistent element id to handle a button event that identified it for the SelectTool.\r\n * @internal\r\n */\r\n public async overrideElementButtonEvent(hit: HitDetail, ev: BeButtonEvent): Promise<EventHandled> {\r\n for (const decorator of IModelApp.viewManager.decorators) {\r\n if (undefined !== decorator.overrideElementHit && undefined !== decorator.onDecorationButtonEvent && decorator.overrideElementHit(hit))\r\n return decorator.onDecorationButtonEvent(hit, ev);\r\n }\r\n return EventHandled.No;\r\n }\r\n\r\n /** Allow a pickable decoration created using a persistent element id to control whether snapping uses the persistent element's geometry.\r\n * @internal\r\n */\r\n public overrideElementGeometry(hit: HitDetail): GeometryStreamProps | undefined {\r\n for (const decorator of IModelApp.viewManager.decorators) {\r\n if (undefined !== decorator.overrideElementHit && undefined !== decorator.getDecorationGeometry && decorator.overrideElementHit(hit))\r\n return decorator.getDecorationGeometry(hit);\r\n }\r\n return undefined;\r\n }\r\n\r\n public get crossHairCursor(): string { return `url(${IModelApp.publicPath}cursors/crosshair.cur), crosshair`; }\r\n public get dynamicsCursor(): string { return `url(${IModelApp.publicPath}cursors/dynamics.cur), move`; }\r\n public get grabCursor(): string { return `url(${IModelApp.publicPath}cursors/openHand.cur), auto`; }\r\n public get grabbingCursor(): string { return `url(${IModelApp.publicPath}cursors/closedHand.cur), auto`; }\r\n public get walkCursor(): string { return `url(${IModelApp.publicPath}cursors/walk.cur), auto`; }\r\n public get rotateCursor(): string { return `url(${IModelApp.publicPath}cursors/rotate.cur), auto`; }\r\n public get lookCursor(): string { return `url(${IModelApp.publicPath}cursors/look.cur), auto`; }\r\n public get zoomCursor(): string { return `url(${IModelApp.publicPath}cursors/zoom.cur), auto`; }\r\n\r\n /** Change the cursor shown in all Viewports.\r\n * @param cursor The new cursor to display. If undefined, the default cursor is used.\r\n */\r\n public setViewCursor(cursor: string = \"default\") {\r\n if (cursor === this.cursor)\r\n return;\r\n this.cursor = cursor;\r\n for (const vp of this._viewports)\r\n vp.setCursor(cursor);\r\n }\r\n\r\n /** Intended strictly as a temporary solution for interactive editing applications, until official support for such apps is implemented.\r\n * Call this after editing one or more models, passing in the Ids of those models, to cause new tiles to be generated reflecting the changes.\r\n * Pass undefined if you are unsure which models changed (this is less efficient as it discards all tiles for all viewed models in all viewports).\r\n * @internal\r\n */\r\n public refreshForModifiedModels(modelIds: Id64Arg | undefined): void {\r\n for (const vp of this._viewports)\r\n vp.refreshForModifiedModels(modelIds);\r\n }\r\n\r\n /** Sets the number of [MSAA]($docs/learning/display/MSAA.md) samples for all currently- and subsequently-opened [[ScreenViewport]]s.\r\n * @param numSamples The number of samples as a power of two. Values of 1 or less indicates anti-aliasing should be disabled. Non-power-of-two values are rounded\r\n * down to the nearest power of two. The maximum number of samples supported depends upon the client's graphics hardware capabilities. Higher values produce\r\n * a higher-quality image but also may also reduce framerate.\r\n * @see [[Viewport.antialiasSamples]] to adjust the number of samples for a specific viewport.\r\n */\r\n public setAntialiasingAllViews(numSamples: number): void {\r\n for (const vp of this)\r\n vp.antialiasSamples = numSamples;\r\n\r\n System.instance.antialiasSamples = numSamples;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ViewManager.js","sourceRoot":"","sources":["../../src/ViewManager.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 Views\r\n */\r\nimport { BeEvent, BentleyStatus, BeTimePoint, BeUiEvent, Id64Arg } from \"@itwin/core-bentley\";\r\nimport { GeometryStreamProps } from \"@itwin/core-common\";\r\nimport { HitDetail } from \"./HitDetail\";\r\nimport { IModelApp } from \"./IModelApp\";\r\nimport { IModelConnection } from \"./IModelConnection\";\r\nimport { DisclosedTileTreeSet, TileTree } from \"./tile/internal\";\r\nimport { BeButtonEvent, EventHandled } from \"./tools/Tool\";\r\nimport { ScreenViewport, ViewportDecorator } from \"./Viewport\";\r\nimport { System } from \"./render/webgl/System\";\r\n\r\n/** Interface for drawing [decoration graphics]($docs/learning/frontend/ViewDecorations.md) into, or on top of, the active [[ScreenViewport]]s managed by [[ViewManager]].\r\n * Decorators generate [[Decorations]].\r\n * @public\r\n * @extensions\r\n */\r\nexport interface Decorator extends ViewportDecorator {\r\n /** If the [[decorate]] method created pickable graphics, return true if the supplied Id is from this Decorator.\r\n * @param id The Id of the currently selected pickable graphics.\r\n * @returns true if 'id' belongs to this Decorator\r\n */\r\n testDecorationHit?(id: string): boolean;\r\n\r\n /** If the [[decorate]] method created pickable graphics using a persistent element id instead of a transient id,\r\n * return true if the Decorator wants the opportunity to override the default persistent element behavior for\r\n * the supplied [[HitDetail]].\r\n * - Replace or augment the element's tooltip by implementing [[getDecorationToolTip]].\r\n * - Override the element's snap geometry by implementing [[getDecorationGeometry]].\r\n * - Handle button events as decorator events by implementing [[onDecorationButtonEvent]].\r\n * @param hit The HitDetail of the currently selected persistent element or pickable graphics using a persistent element id.\r\n * @returns true if this Decorator wants to override the default persistent element behavior.\r\n */\r\n overrideElementHit?(hit: HitDetail): boolean;\r\n\r\n /** If [[testDecorationHit]] or [[overrideElementHit]] returned true, implement this method to return the tooltip message for this Decorator.\r\n * @param hit The HitDetail about the decoration that was picked.\r\n * @returns A promise with the HTMLElement or string (that may contain HTML) with the tooltip message.\r\n */\r\n getDecorationToolTip?(hit: HitDetail): Promise<HTMLElement | string>;\r\n\r\n /** If [[testDecorationHit]] or [[overrideElementHit]] returned true, implement this method to handle a button event for this Decorator.\r\n * @param hit The HitDetail about the decoration that was picked.\r\n * @param ev The BeButtonEvent that identified this decoration.\r\n * @returns A Promise that resolves to Yes if event completely handled by decoration and event should not be processed by the calling tool.\r\n */\r\n onDecorationButtonEvent?(hit: HitDetail, ev: BeButtonEvent): Promise<EventHandled>;\r\n\r\n /** If [[testDecorationHit]] or [[overrideElementHit]] returned true, implement this method to return the snappable geometry for this Decorator. Geometry that changes with every cursor motion isn't valid for snapping.\r\n * An example would be an InteractiveTool for placing a linestring. It might wish to allow snapping to accepted segments, the segment from the last accepted point to the current cursor position would not be included\r\n * as snappable geometry and would just be displayed in dynamics.\r\n * @param hit The HitDetail about the decoration that was picked.\r\n * @returns GeometryStreamProps containing world coordinate snappable geometry for this decoration.\r\n */\r\n getDecorationGeometry?(hit: HitDetail): GeometryStreamProps | undefined;\r\n}\r\n\r\n/** Argument for [[ViewManager.onSelectedViewportChanged]]\r\n * @public\r\n * @extensions\r\n */\r\nexport interface SelectedViewportChangedArgs {\r\n current?: ScreenViewport;\r\n previous?: ScreenViewport;\r\n}\r\n\r\n/** An object that can contribute customizations to the tooltip displayed when mousing over an element or other entity in a [[Viewport]].\r\n * @see [[ViewManager.addToolTipProvider]] to register a tooltip provider.\r\n * @public\r\n */\r\nexport interface ToolTipProvider {\r\n /** Augment or replace the tooltip for the specified HitDetail.\r\n * @note To cooperate with other tooltip providers, prefer to *append* information to the input tooltip instead of replacing it entirely.\r\n */\r\n augmentToolTip(hit: HitDetail, tooltip: Promise<HTMLElement | string>): Promise<HTMLElement | string>;\r\n}\r\n\r\n/** The ViewManager holds the list of opened views, plus the *selected view*. It also provides notifications of view open/close and suspend/resume.\r\n * Applications must call [[addViewport]] when new Viewports that should be associated with user events are created.\r\n *\r\n * A single ViewManager is created when [[IModelApp.startup]] is called. It can be accessed via the static member [[IModelApp.viewManager]].\r\n *\r\n * The ViewManager controls the render loop, which causes the contents of each registered [[Viewport]] to update on the screen.\r\n * @public\r\n * @extensions\r\n */\r\nexport class ViewManager implements Iterable<ScreenViewport> {\r\n public inDynamicsMode = false;\r\n public cursor = \"default\";\r\n private readonly _viewports: ScreenViewport[] = [];\r\n public readonly decorators: Decorator[] = [];\r\n private _selectedView?: ScreenViewport;\r\n private _invalidateScenes = false;\r\n private _skipSceneCreation = false;\r\n private _doIdleWork = false;\r\n private _idleWorkTimer?: any;\r\n\r\n /** @internal */\r\n public readonly toolTipProviders: ToolTipProvider[] = [];\r\n\r\n private _beginIdleWork() {\r\n const idleWork = () => {\r\n if (undefined === this._idleWorkTimer)\r\n return;\r\n if (this._viewports.length > 0) {\r\n this._idleWorkTimer = undefined;\r\n return;\r\n }\r\n if (IModelApp.renderSystem.doIdleWork())\r\n this._idleWorkTimer = setTimeout(idleWork, 1);\r\n else\r\n this._idleWorkTimer = undefined;\r\n };\r\n\r\n if (undefined === this._idleWorkTimer)\r\n this._idleWorkTimer = setTimeout(idleWork, 1);\r\n }\r\n\r\n /** @internal */\r\n public onInitialized() {\r\n this.addDecorator(IModelApp.accuSnap);\r\n this.addDecorator(IModelApp.tentativePoint);\r\n this.addDecorator(IModelApp.accuDraw);\r\n this.addDecorator(IModelApp.toolAdmin);\r\n this.cursor = \"default\";\r\n\r\n const options = IModelApp.renderSystem.options;\r\n this._doIdleWork = true === options.doIdleWork;\r\n if (this._doIdleWork)\r\n this._beginIdleWork();\r\n }\r\n\r\n /** @internal */\r\n public onShutDown() {\r\n if (undefined !== this._idleWorkTimer) {\r\n clearTimeout(this._idleWorkTimer);\r\n this._idleWorkTimer = undefined;\r\n }\r\n this._viewports.map((viewport) => {\r\n if (!viewport.isDisposed)\r\n this.dropViewport(viewport, true);\r\n });\r\n this._viewports.length = 0;\r\n this.decorators.length = 0;\r\n this.toolTipProviders.length = 0;\r\n this._selectedView = undefined;\r\n }\r\n\r\n /** Returns true if the specified viewport is currently being managed by this ViewManager.\r\n * @see [[addViewport]] to enable management of a viewport and [[dropViewport]] to disable it.\r\n */\r\n public hasViewport(viewport: ScreenViewport) {\r\n return this._viewports.includes(viewport);\r\n }\r\n\r\n /** Called after the selected view changes.\r\n * @param old Previously selected viewport.\r\n * @param current Currently selected viewport.\r\n */\r\n public readonly onSelectedViewportChanged = new BeUiEvent<SelectedViewportChangedArgs>();\r\n\r\n /** Called after a view is opened. This can happen when the iModel is first opened or when a user opens a new view. */\r\n public readonly onViewOpen = new BeUiEvent<ScreenViewport>();\r\n\r\n /** Called after a view is closed. This can happen when the iModel is closed or when a user closes an open view. */\r\n public readonly onViewClose = new BeUiEvent<ScreenViewport>();\r\n\r\n /** Called after a view is suspended. This happens when the application is minimized or, on a tablet, when the application\r\n * is moved to the background.\r\n */\r\n public readonly onViewSuspend = new BeUiEvent<ScreenViewport>();\r\n\r\n /** Called after a suspended view is resumed. This can happen when a minimized application is restored\r\n * or, on a tablet, when the application is moved to the foreground.\r\n */\r\n public readonly onViewResume = new BeUiEvent<ScreenViewport>();\r\n\r\n /** Called at the beginning of each tick of the render loop, before any viewports have been updated.\r\n * The render loop is typically invoked by a requestAnimationFrame() callback. It will not be invoked if the ViewManager is tracking no viewports.\r\n * @note Due to the frequency of this event, avoid performing expensive work inside event listeners.\r\n * @see [[ViewManager.onFinishRender]]\r\n */\r\n public readonly onBeginRender = new BeEvent<() => void>();\r\n\r\n /** Called at the end of each tick of the render loop, after all viewports have been updated.\r\n * The render loop is typically invoked by a requestAnimationFrame() callback. It will not be invoked if the ViewManager is tracking no viewports.\r\n * @note Due to the frequency of this event, avoid performing expensive work inside event listeners.\r\n * @see [[ViewManager.onBeginRender]]\r\n */\r\n public readonly onFinishRender = new BeEvent<() => void>();\r\n\r\n /** @internal */\r\n public endDynamicsMode(): void {\r\n if (!this.inDynamicsMode)\r\n return;\r\n\r\n this.inDynamicsMode = false;\r\n\r\n const cursorVp = IModelApp.toolAdmin.cursorView;\r\n if (cursorVp)\r\n cursorVp.changeDynamics(undefined);\r\n\r\n for (const vp of this._viewports) {\r\n if (vp !== cursorVp)\r\n vp.changeDynamics(undefined);\r\n }\r\n }\r\n\r\n /** @internal */\r\n public beginDynamicsMode() { this.inDynamicsMode = true; }\r\n\r\n /** @internal */\r\n public get doesHostHaveFocus(): boolean { return document.hasFocus(); }\r\n\r\n /** Set the selected [[Viewport]] to undefined. */\r\n public clearSelectedView(): void {\r\n const previousVp = this.selectedView;\r\n this._selectedView = undefined;\r\n this.notifySelectedViewportChanged(previousVp, undefined);\r\n }\r\n\r\n /** Sets the selected [[Viewport]]. */\r\n public async setSelectedView(vp: ScreenViewport | undefined): Promise<BentleyStatus> {\r\n if (undefined === vp)\r\n vp = this.getFirstOpenView();\r\n\r\n if (vp === this.selectedView) // already the selected view\r\n return BentleyStatus.SUCCESS;\r\n\r\n if (undefined === vp) {\r\n this.clearSelectedView();\r\n return BentleyStatus.ERROR;\r\n }\r\n\r\n const previousVp = this.selectedView;\r\n this._selectedView = vp;\r\n\r\n this.notifySelectedViewportChanged(previousVp, vp);\r\n\r\n if (undefined === previousVp)\r\n await IModelApp.toolAdmin.startDefaultTool();\r\n\r\n return BentleyStatus.SUCCESS;\r\n }\r\n\r\n /** @internal */\r\n public notifySelectedViewportChanged(previous: ScreenViewport | undefined, current: ScreenViewport | undefined) {\r\n IModelApp.toolAdmin.onSelectedViewportChanged(previous, current);// eslint-disable-line @typescript-eslint/no-floating-promises\r\n this.onSelectedViewportChanged.emit({ previous, current });\r\n }\r\n\r\n /** The \"selected view\" is the default for certain operations. */\r\n public get selectedView(): ScreenViewport | undefined { return this._selectedView; }\r\n\r\n /** Get the first opened view. */\r\n public getFirstOpenView(): ScreenViewport | undefined { return this._viewports.length > 0 ? this._viewports[0] : undefined; }\r\n\r\n /** Check if only a single viewport is being used. If so, render directly on-screen using its WebGL canvas. Otherwise, render each view offscreen. */\r\n private updateRenderToScreen() {\r\n const renderToScreen = 1 === this._viewports.length;\r\n for (const vp of this)\r\n vp.rendersToScreen = renderToScreen;\r\n }\r\n\r\n /** Add a new Viewport to the list of opened views and create an EventController for it.\r\n * @param newVp the Viewport to add\r\n * @returns SUCCESS if vp was successfully added, ERROR if it was already present.\r\n * @note raises onViewOpen event with newVp.\r\n */\r\n public addViewport(newVp: ScreenViewport): BentleyStatus {\r\n if (this.hasViewport(newVp)) // make sure its not already added\r\n return BentleyStatus.ERROR;\r\n\r\n newVp.onViewManagerAdd();\r\n\r\n this._viewports.push(newVp);\r\n this.updateRenderToScreen();\r\n this.setSelectedView(newVp);// eslint-disable-line @typescript-eslint/no-floating-promises\r\n\r\n // Start up the render loop if necessary.\r\n if (1 === this._viewports.length)\r\n IModelApp.startEventLoop();\r\n\r\n this.onViewOpen.emit(newVp);\r\n\r\n return BentleyStatus.SUCCESS;\r\n }\r\n\r\n /** Remove a Viewport from the list of opened views, and optionally dispose of it.\r\n * Typically a Viewport is dropped when it is no longer of any use to the application, in which case it should also be\r\n * disposed of as it may hold significant GPU resources.\r\n * However in some cases a Viewport may be temporarily dropped to suspend rendering; and subsequently re-added to\r\n * resume rendering - for example, when the Viewport is temporarily hidden by other UI elements.\r\n * In the latter case it is up to the caller to ensure the Viewport is properly disposed of when it is no longer needed.\r\n * Attempting to invoke any function on a Viewport after it has been disposed is an error.\r\n * @param vp the Viewport to remove.\r\n * @param disposeOfViewport Whether or not to dispose of the Viewport. Defaults to true.\r\n * @return SUCCESS if vp was successfully removed, ERROR if it was not present.\r\n * @note raises onViewClose event with vp.\r\n */\r\n public dropViewport(vp: ScreenViewport, disposeOfViewport: boolean = true): BentleyStatus {\r\n const index = this._viewports.indexOf(vp);\r\n if (index === -1)\r\n return BentleyStatus.ERROR;\r\n\r\n this.onViewClose.emit(vp);\r\n\r\n // make sure tools don't think the cursor is still in this viewport\r\n IModelApp.toolAdmin.forgetViewport(vp);\r\n\r\n vp.onViewManagerDrop();\r\n\r\n this._viewports.splice(index, 1);\r\n\r\n if (this.selectedView === vp) // if removed viewport was selectedView, set it to undefined.\r\n this.setSelectedView(undefined);// eslint-disable-line @typescript-eslint/no-floating-promises\r\n\r\n vp.rendersToScreen = false;\r\n this.updateRenderToScreen();\r\n\r\n if (disposeOfViewport)\r\n vp.dispose();\r\n\r\n if (this._doIdleWork && this._viewports.length === 0)\r\n this._beginIdleWork();\r\n\r\n return BentleyStatus.SUCCESS;\r\n }\r\n\r\n /** Iterate over the viewports registered with the view manager. */\r\n public [Symbol.iterator](): Iterator<ScreenViewport> {\r\n return this._viewports[Symbol.iterator]();\r\n }\r\n\r\n /** Force each registered [[Viewport]] to regenerate all of its cached [[Decorations]] on the next frame. If the decorator parameter is specified, only\r\n * the specified decorator will have its cached decorations invalidated for all viewports.\r\n * @see [[Viewport.invalidateCachedDecorations]] to manually remove a decorator's cached decorations from a viewport, forcing them to be regenerated.\r\n * @beta\r\n */\r\n public invalidateCachedDecorationsAllViews(decorator: ViewportDecorator): void {\r\n if (decorator.useCachedDecorations)\r\n for (const vp of this)\r\n vp.invalidateCachedDecorations(decorator);\r\n }\r\n\r\n /** Force each registered [[Viewport]] to regenerate its [[Decorations]] on the next frame. */\r\n public invalidateDecorationsAllViews(): void {\r\n for (const vp of this)\r\n vp.invalidateDecorations();\r\n }\r\n\r\n /** Force each registered [[Viewport]] to regenerate its [[FeatureSymbology.Overrides]] on the next frame.\r\n * This is rarely needed - viewports keep track of their own states to detect when the overrides need to be recreated.\r\n */\r\n public invalidateSymbologyOverridesAllViews(): void {\r\n for (const vp of this)\r\n vp.setFeatureOverrideProviderChanged();\r\n }\r\n\r\n /** @internal */\r\n public onSelectionSetChanged(_iModel: IModelConnection) {\r\n for (const vp of this)\r\n vp.markSelectionSetDirty();\r\n\r\n IModelApp.requestNextAnimation();\r\n }\r\n\r\n /** @internal */\r\n public invalidateViewportScenes(): void {\r\n for (const vp of this)\r\n vp.invalidateScene();\r\n }\r\n\r\n /** @internal */\r\n public validateViewportScenes(): void {\r\n for (const vp of this)\r\n vp.setValidScene();\r\n }\r\n\r\n /** Requests that [[Viewport.createScene]] be invoked for every viewport on the next frame.\r\n * This is rarely useful - viewports keep track of their own states to detect when the scene needs to be recreated.\r\n */\r\n public invalidateScenes(): void {\r\n this._invalidateScenes = true;\r\n IModelApp.requestNextAnimation();\r\n }\r\n\r\n /** @internal */\r\n public get sceneInvalidated(): boolean { return this._invalidateScenes; }\r\n\r\n /** Invoked by ToolAdmin event loop.\r\n * @internal\r\n */\r\n public renderLoop(): void {\r\n if (0 === this._viewports.length)\r\n return;\r\n if (this._skipSceneCreation)\r\n this.validateViewportScenes();\r\n else if (this._invalidateScenes)\r\n this.invalidateViewportScenes();\r\n\r\n this._invalidateScenes = false;\r\n\r\n this.onBeginRender.raiseEvent();\r\n\r\n for (const vp of this._viewports)\r\n vp.renderFrame();\r\n\r\n this.onFinishRender.raiseEvent();\r\n }\r\n\r\n /** Purge TileTrees that haven't been drawn since the specified time point and are not currently in use by any ScreenViewport.\r\n * Intended strictly for debugging purposes - TileAdmin takes care of properly purging.\r\n * @internal\r\n */\r\n public purgeTileTrees(olderThan: BeTimePoint): void {\r\n // A single viewport can display tiles from more than one IModelConnection.\r\n // NOTE: A viewport may be displaying no trees - but we need to record its IModel so we can purge those which are NOT being displayed\r\n // NOTE: That won't catch external tile trees previously used by that viewport.\r\n const trees = new DisclosedTileTreeSet();\r\n const treesByIModel = new Map<IModelConnection, Set<TileTree>>();\r\n for (const vp of this._viewports) {\r\n vp.discloseTileTrees(trees);\r\n if (undefined === treesByIModel.get(vp.iModel))\r\n treesByIModel.set(vp.iModel, new Set<TileTree>());\r\n }\r\n\r\n for (const tree of trees) {\r\n let set = treesByIModel.get(tree.iModel);\r\n if (undefined === set) {\r\n set = new Set<TileTree>();\r\n treesByIModel.set(tree.iModel, set);\r\n }\r\n\r\n set.add(tree);\r\n }\r\n\r\n for (const entry of treesByIModel) {\r\n const iModel = entry[0];\r\n iModel.tiles.purge(olderThan, entry[1]);\r\n }\r\n }\r\n\r\n /** Get the tooltip for a persistent element.\r\n * Calls the backend method [Element.getToolTipMessage]($backend), and replaces all instances of `${localizeTag}` with localized string from IModelApp.i18n.\r\n * @beta\r\n */\r\n public async getElementToolTip(hit: HitDetail): Promise<HTMLElement | string> {\r\n const msg: string[] = await hit.iModel.getToolTipMessage(hit.sourceId); // wait for the locate message(s) from the backend\r\n return IModelApp.formatElementToolTip(msg);\r\n }\r\n\r\n /** Register a new [[ToolTipProvider]] to customize the locate tooltip.\r\n * @param provider The new tooltip provider to add.\r\n * @throws Error if `provider` is already registered.\r\n * @returns a function that may be called to remove this provider (in lieu of calling [[dropToolTipProvider]].)\r\n */\r\n public addToolTipProvider(provider: ToolTipProvider): () => void {\r\n if (this.toolTipProviders.includes(provider))\r\n throw new Error(\"tooltip provider already registered\");\r\n\r\n this.toolTipProviders.push(provider);\r\n return () => this.dropToolTipProvider(provider);\r\n }\r\n\r\n /** Drop (remove) a [[ToolTipProvider]] so it is no longer active.\r\n * @param provider The tooltip provider to drop.\r\n * @note Does nothing if provider is not currently active.\r\n */\r\n public dropToolTipProvider(provider: ToolTipProvider) {\r\n const index = this.toolTipProviders.indexOf(provider);\r\n if (index >= 0)\r\n this.toolTipProviders.splice(index, 1);\r\n }\r\n\r\n /** Add a new [[Decorator]] to display decorations into the active views.\r\n * @param decorator The new decorator to add.\r\n * @throws Error if decorator is already active.\r\n * @returns a function that may be called to remove this decorator (in lieu of calling [[dropDecorator]].)\r\n * @see [[dropDecorator]]\r\n */\r\n public addDecorator(decorator: Decorator): () => void {\r\n if (this.decorators.includes(decorator))\r\n throw new Error(\"decorator already registered\");\r\n\r\n this.decorators.push(decorator);\r\n this.invalidateDecorationsAllViews();\r\n return () => this.dropDecorator(decorator);\r\n }\r\n\r\n /** Drop (remove) a [[Decorator]] so it is no longer active.\r\n * @param decorator The Decorator to drop.\r\n * @returns true if the decorator was found and removed; false if the decorator was not found.\r\n */\r\n public dropDecorator(decorator: Decorator): boolean {\r\n const index = this.decorators.indexOf(decorator);\r\n if (index < 0)\r\n return false;\r\n\r\n this.invalidateCachedDecorationsAllViews(decorator);\r\n this.decorators.splice(index, 1);\r\n this.invalidateDecorationsAllViews();\r\n return true;\r\n }\r\n\r\n /** Get the tooltip for a pickable decoration.\r\n * @internal\r\n */\r\n public async getDecorationToolTip(hit: HitDetail): Promise<HTMLElement | string> {\r\n for (const decorator of this.decorators) {\r\n if (undefined !== decorator.testDecorationHit && undefined !== decorator.getDecorationToolTip && decorator.testDecorationHit(hit.sourceId))\r\n return decorator.getDecorationToolTip(hit);\r\n }\r\n return hit.viewport ? hit.viewport.getToolTip(hit) : \"\";\r\n }\r\n\r\n /** Allow a pickable decoration to handle a button event that identified it for the SelectTool.\r\n * @internal\r\n */\r\n public async onDecorationButtonEvent(hit: HitDetail, ev: BeButtonEvent): Promise<EventHandled> {\r\n for (const decorator of IModelApp.viewManager.decorators) {\r\n if (undefined !== decorator.testDecorationHit && undefined !== decorator.onDecorationButtonEvent && decorator.testDecorationHit(hit.sourceId))\r\n return decorator.onDecorationButtonEvent(hit, ev);\r\n }\r\n return EventHandled.No;\r\n }\r\n\r\n /** Allow a pickable decoration to be snapped to by AccuSnap or TentativePoint.\r\n * @internal\r\n */\r\n public getDecorationGeometry(hit: HitDetail): GeometryStreamProps | undefined {\r\n for (const decorator of IModelApp.viewManager.decorators) {\r\n if (undefined !== decorator.testDecorationHit && undefined !== decorator.getDecorationGeometry && decorator.testDecorationHit(hit.sourceId))\r\n return decorator.getDecorationGeometry(hit);\r\n }\r\n return undefined;\r\n }\r\n\r\n /** Allow a pickable decoration created using a persistent element id to augment or replace the the persistent element's tooltip.\r\n * @internal\r\n */\r\n public async overrideElementToolTip(hit: HitDetail): Promise<HTMLElement | string> {\r\n for (const decorator of this.decorators) {\r\n if (undefined !== decorator.overrideElementHit && undefined !== decorator.getDecorationToolTip && decorator.overrideElementHit(hit))\r\n return decorator.getDecorationToolTip(hit);\r\n }\r\n return this.getElementToolTip(hit);\r\n }\r\n\r\n /** Allow a pickable decoration created using a persistent element id to handle a button event that identified it for the SelectTool.\r\n * @internal\r\n */\r\n public async overrideElementButtonEvent(hit: HitDetail, ev: BeButtonEvent): Promise<EventHandled> {\r\n for (const decorator of IModelApp.viewManager.decorators) {\r\n if (undefined !== decorator.overrideElementHit && undefined !== decorator.onDecorationButtonEvent && decorator.overrideElementHit(hit))\r\n return decorator.onDecorationButtonEvent(hit, ev);\r\n }\r\n return EventHandled.No;\r\n }\r\n\r\n /** Allow a pickable decoration created using a persistent element id to control whether snapping uses the persistent element's geometry.\r\n * @internal\r\n */\r\n public overrideElementGeometry(hit: HitDetail): GeometryStreamProps | undefined {\r\n for (const decorator of IModelApp.viewManager.decorators) {\r\n if (undefined !== decorator.overrideElementHit && undefined !== decorator.getDecorationGeometry && decorator.overrideElementHit(hit))\r\n return decorator.getDecorationGeometry(hit);\r\n }\r\n return undefined;\r\n }\r\n\r\n public get crossHairCursor(): string { return `url(${IModelApp.publicPath}cursors/crosshair.cur), crosshair`; }\r\n public get dynamicsCursor(): string { return `url(${IModelApp.publicPath}cursors/dynamics.cur), move`; }\r\n public get grabCursor(): string { return `url(${IModelApp.publicPath}cursors/openHand.cur), auto`; }\r\n public get grabbingCursor(): string { return `url(${IModelApp.publicPath}cursors/closedHand.cur), auto`; }\r\n public get walkCursor(): string { return `url(${IModelApp.publicPath}cursors/walk.cur), auto`; }\r\n public get rotateCursor(): string { return `url(${IModelApp.publicPath}cursors/rotate.cur), auto`; }\r\n public get lookCursor(): string { return `url(${IModelApp.publicPath}cursors/look.cur), auto`; }\r\n public get zoomCursor(): string { return `url(${IModelApp.publicPath}cursors/zoom.cur), auto`; }\r\n\r\n /** Change the cursor shown in all Viewports.\r\n * @param cursor The new cursor to display. If undefined, the default cursor is used.\r\n */\r\n public setViewCursor(cursor: string = \"default\") {\r\n if (cursor === this.cursor)\r\n return;\r\n this.cursor = cursor;\r\n for (const vp of this._viewports)\r\n vp.setCursor(cursor);\r\n }\r\n\r\n /** Intended strictly as a temporary solution for interactive editing applications, until official support for such apps is implemented.\r\n * Call this after editing one or more models, passing in the Ids of those models, to cause new tiles to be generated reflecting the changes.\r\n * Pass undefined if you are unsure which models changed (this is less efficient as it discards all tiles for all viewed models in all viewports).\r\n * @internal\r\n */\r\n public refreshForModifiedModels(modelIds: Id64Arg | undefined): void {\r\n for (const vp of this._viewports)\r\n vp.refreshForModifiedModels(modelIds);\r\n }\r\n\r\n /** Sets the number of [MSAA]($docs/learning/display/MSAA.md) samples for all currently- and subsequently-opened [[ScreenViewport]]s.\r\n * @param numSamples The number of samples as a power of two. Values of 1 or less indicates anti-aliasing should be disabled. Non-power-of-two values are rounded\r\n * down to the nearest power of two. The maximum number of samples supported depends upon the client's graphics hardware capabilities. Higher values produce\r\n * a higher-quality image but also may also reduce framerate.\r\n * @see [[Viewport.antialiasSamples]] to adjust the number of samples for a specific viewport.\r\n */\r\n public setAntialiasingAllViews(numSamples: number): void {\r\n for (const vp of this)\r\n vp.antialiasSamples = numSamples;\r\n\r\n System.instance.antialiasSamples = numSamples;\r\n }\r\n}\r\n"]}
@@ -159,6 +159,7 @@ export * from "./BackgroundMapGeometry";
159
159
  export * from "./ViewCreator2d";
160
160
  export * from "./ViewCreator3d";
161
161
  export * from "./LocalhostIpcApp";
162
+ export * from "./request/utils";
162
163
  export * from "./RealityDataSource";
163
164
  import "./extension/ExtensionRuntime";
164
165
  /** @docs-package-description
@@ -1 +1 @@
1
- {"version":3,"file":"core-frontend.d.ts","sourceRoot":"","sources":["../../src/core-frontend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core-frontend.d.ts","sourceRoot":"","sources":["../../src/core-frontend.ts"],"names":[],"mappings":"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"}
@@ -179,6 +179,7 @@ __exportStar(require("./BackgroundMapGeometry"), exports);
179
179
  __exportStar(require("./ViewCreator2d"), exports);
180
180
  __exportStar(require("./ViewCreator3d"), exports);
181
181
  __exportStar(require("./LocalhostIpcApp"), exports);
182
+ __exportStar(require("./request/utils"), exports);
182
183
  __exportStar(require("./RealityDataSource"), exports);
183
184
  // TODO/FIX: "./extension/ExtensionRuntime" import has to be last to avoid circular dependency errors.
184
185
  require("./extension/ExtensionRuntime");
@@ -1 +1 @@
1
- {"version":3,"file":"core-frontend.js","sourceRoot":"","sources":["../../src/core-frontend.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\nexport * from \"./AccuDraw\";\r\nexport * from \"./AccuSnap\";\r\nexport * from \"./AuxCoordSys\";\r\nexport * from \"./BingLocation\";\r\nexport * from \"./BriefcaseConnection\";\r\nexport * from \"./BriefcaseTxns\";\r\nexport * from \"./CategorySelectorState\";\r\nexport * from \"./ChangeFlags\";\r\nexport * from \"./CheckpointConnection\";\r\nexport * from \"./common/FrontendLoggerCategory\";\r\nexport * from \"./common/gltf/GltfModel\";\r\nexport * from \"./common/gltf/GltfParser\";\r\nexport * from \"./common/gltf/GltfSchema\";\r\nexport * from \"./common/ImageUtil\";\r\nexport * from \"./common/imdl/ImdlModel\";\r\nexport * from \"./common/imdl/ImdlSchema\";\r\nexport * from \"./common/imdl/ParseImdlDocument\";\r\nexport * from \"./common/render/AnimationNodeId\";\r\nexport * from \"./common/render/MaterialParams\";\r\nexport * from \"./common/render/primitives/AuxChannelTable\";\r\nexport * from \"./common/render/primitives/DisplayParams\";\r\nexport * from \"./common/render/primitives/EdgeParams\";\r\nexport * from \"./common/render/primitives/MeshParams\";\r\nexport * from \"./common/render/primitives/MeshPrimitive\";\r\nexport * from \"./common/render/primitives/PointStringParams\";\r\nexport * from \"./common/render/primitives/PolylineParams\";\r\nexport * from \"./common/render/primitives/SurfaceParams\";\r\nexport * from \"./common/render/primitives/VertexIndices\";\r\nexport * from \"./common/render/primitives/VertexTable\";\r\nexport * from \"./common/render/primitives/VertexTableSplitter\";\r\nexport * from \"./common/render/TextureParams\";\r\nexport * from \"./common/ViewRect\";\r\nexport * from \"./common/WorkerProxy\";\r\nexport * from \"./ContextRealityModelState\";\r\nexport * from \"./CoordSystem\";\r\nexport * from \"./DecorationsCache\";\r\nexport * from \"./DevTools\";\r\nexport * from \"./DisplayStyleState\";\r\nexport * from \"./DrawingViewState\";\r\nexport * from \"./ElementLocateManager\";\r\nexport * from \"./EmphasizeElements\";\r\nexport * from \"./EntityState\";\r\nexport * from \"./EnvironmentDecorations\";\r\nexport * from \"./FeatureOverrideProvider\";\r\nexport * from \"./FlashSettings\";\r\nexport * from \"./FrontendHubAccess\";\r\nexport * from \"./Frustum2d\";\r\nexport * from \"./FrustumAnimator\";\r\nexport * from \"./FuzzySearch\";\r\nexport * from \"./GeoServices\";\r\nexport * from \"./GlobeAnimator\";\r\nexport * from \"./GraphicalEditingScope\";\r\nexport * from \"./HitDetail\";\r\nexport * from \"./IModelApp\";\r\nexport * from \"./IModelConnection\";\r\nexport * from \"./IModelRoutingContext\";\r\nexport * from \"./IpcApp\";\r\nexport * from \"./LinePlaneIntersect\";\r\nexport * from \"./MarginPercent\";\r\nexport * from \"./Marker\";\r\nexport * from \"./ModelSelectorState\";\r\nexport * from \"./ModelState\";\r\nexport * from \"./NativeApp\";\r\nexport * from \"./NativeAppLogger\";\r\nexport * from \"./NoRenderApp\";\r\nexport * from \"./NotificationManager\";\r\nexport * from \"./PerModelCategoryVisibility\";\r\nexport * from \"./PlanarClipMaskState\";\r\nexport * from \"./SelectionSet\";\r\nexport * from \"./SheetViewState\";\r\nexport * from \"./SpatialViewState\";\r\nexport * from \"./Sprites\";\r\nexport * from \"./StandardView\";\r\nexport * from \"./SubCategoriesCache\";\r\nexport * from \"./TentativePoint\";\r\nexport * from \"./Tiles\";\r\nexport * from \"./UserPreferences\";\r\nexport * from \"./ViewAnimation\";\r\nexport * from \"./ViewContext\";\r\nexport * from \"./ViewGlobalLocation\";\r\nexport * from \"./ViewingSpace\";\r\nexport * from \"./ViewManager\";\r\nexport * from \"./Viewport\";\r\nexport * from \"./ViewportSync\";\r\nexport * from \"./ViewPose\";\r\nexport * from \"./ViewState\";\r\nexport * from \"./ViewStatus\";\r\nexport * from \"./extension/Extension\";\r\nexport * from \"./extension/providers/LocalExtensionProvider\";\r\nexport * from \"./extension/providers/RemoteExtensionProvider\";\r\nexport * from \"./properties/AngleDescription\";\r\nexport * from \"./properties/FormattedQuantityDescription\";\r\nexport * from \"./properties/LengthDescription\";\r\nexport * from \"./quantity-formatting/QuantityFormatter\";\r\nexport * from \"./quantity-formatting/BaseUnitFormattingSettingsProvider\";\r\nexport * from \"./quantity-formatting/LocalUnitFormatProvider\";\r\nexport * from \"./quantity-formatting/QuantityTypesEditorSpecs\";\r\nexport * from \"./render/CanvasDecoration\";\r\nexport * from \"./render/CreateRenderMaterialArgs\";\r\nexport * from \"./render/CreateTextureArgs\";\r\nexport * from \"./render/Decorations\";\r\nexport * from \"./render/FeatureSymbology\";\r\nexport * from \"./render/FrameStats\";\r\nexport * from \"./render/GraphicBranch\";\r\nexport * from \"./render/GraphicBuilder\";\r\nexport * from \"./render/GraphicPrimitive\";\r\nexport * from \"./render/InstancedGraphicParams\";\r\nexport * from \"./render/MockRender\";\r\nexport * from \"./render/ParticleCollectionBuilder\";\r\nexport * from \"./render/Pixel\";\r\nexport * from \"./render/RealityMeshGraphicParams\";\r\nexport * from \"./render/RealityMeshParams\";\r\nexport * from \"./render/RenderClipVolume\";\r\nexport * from \"./render/RenderGraphic\";\r\nexport * from \"./render/RenderMemory\";\r\nexport * from \"./render/RenderPlan\";\r\nexport * from \"./render/RenderPlanarClassifier\";\r\nexport * from \"./render/RenderSystem\";\r\nexport * from \"./render/RenderTarget\";\r\nexport * from \"./render/Scene\";\r\nexport * from \"./render/ScreenSpaceEffectBuilder\";\r\nexport * from \"./render/VisibleFeature\";\r\nexport * from \"./render/primitives/ColorMap\";\r\nexport * from \"./render/primitives/EdgeParams\";\r\nexport * from \"./render/primitives/PointCloudPrimitive\";\r\nexport * from \"./render/primitives/PointStringParams\";\r\nexport * from \"./render/primitives/Polyface\";\r\nexport * from \"./render/primitives/PolylineParams\";\r\nexport * from \"./render/primitives/Primitives\";\r\nexport * from \"./render/primitives/Strokes\";\r\nexport * from \"./render/primitives/VertexKey\";\r\nexport * from \"./render/primitives/VertexTableBuilder\";\r\nexport * from \"./render/primitives/geometry/GeometryAccumulator\";\r\nexport * from \"./render/primitives/geometry/GeometryList\";\r\nexport * from \"./render/primitives/geometry/GeometryListBuilder\";\r\nexport * from \"./render/primitives/geometry/GeometryPrimitives\";\r\nexport * from \"./render/primitives/mesh/MeshBuilder\";\r\nexport * from \"./render/primitives/mesh/MeshBuilderMap\";\r\nexport * from \"./render/primitives/mesh/MeshPrimitives\";\r\nexport * from \"./render/webgl/IModelFrameLifecycle\";\r\nexport * from \"./render/webgl/PerformanceMetrics\";\r\nexport * from \"./render/webgl/Target\";\r\nexport * from \"./tile/internal\";\r\nexport * from \"./tools/AccuDrawTool\";\r\nexport * from \"./tools/ClipViewTool\";\r\nexport * from \"./tools/EditManipulator\";\r\nexport * from \"./tools/ElementSetTool\";\r\nexport * from \"./tools/EventController\";\r\nexport * from \"./tools/IdleTool\";\r\nexport * from \"./tools/MeasureTool\";\r\nexport * from \"./tools/PrimitiveTool\";\r\nexport * from \"./tools/SelectTool\";\r\nexport * from \"./tools/Tool\";\r\nexport * from \"./tools/ToolSettings\";\r\nexport * from \"./tools/ToolAdmin\";\r\nexport * from \"./tools/ToolAssistance\";\r\nexport * from \"./tools/ViewTool\";\r\nexport * from \"./BackgroundMapGeometry\";\r\nexport * from \"./ViewCreator2d\";\r\nexport * from \"./ViewCreator3d\";\r\nexport * from \"./LocalhostIpcApp\";\r\nexport * from \"./RealityDataSource\";\r\n// TODO/FIX: \"./extension/ExtensionRuntime\" import has to be last to avoid circular dependency errors.\r\nimport \"./extension/ExtensionRuntime\";\r\n\r\n/** @docs-package-description\r\n * The core-frontend package always runs in a web browser. It contains classes for [querying iModels and showing views]($docs/learning/frontend/index.md).\r\n */\r\n\r\n/**\r\n * @docs-group-description IModelApp\r\n * Classes for configuring and administering an iTwin.js application.\r\n * See [the learning articles]($docs/learning/frontend/index.md).\r\n */\r\n/**\r\n * @docs-group-description IModelConnection\r\n * Classes for working with a connection to an [iModel briefcase]($docs/learning/IModels.md)\r\n */\r\n/**\r\n * @docs-group-description ElementState\r\n * Classes for working with the *state* of Elements in the frontend.\r\n * See [the learning articles]($docs/learning/frontend/index.md).\r\n */\r\n/**\r\n * @docs-group-description ModelState\r\n * Classes for working with the *state* of Models in the frontend.\r\n * See [the learning articles]($docs/learning/frontend/index.md).\r\n */\r\n/**\r\n * @docs-group-description Tools\r\n * Classes for [working with Tools]($docs/learning/frontend/Tools.md)\r\n */\r\n/**\r\n * @docs-group-description Measure\r\n * Classes for reporting point to point distances and mass properties of elements.\r\n */\r\n/**\r\n * @docs-group-description Views\r\n * Classes for [working with Views]($docs/learning/frontend/Views.md)\r\n */\r\n/**\r\n * @docs-group-description LocatingElements\r\n * Classes for locating and snapping to elements in views.\r\n * See [the learning articles]($docs/learning/frontend/index.md).\r\n */\r\n/**\r\n * @docs-group-description AccuDraw\r\n * AccuDraw provides helpful assistance for creating and modifying elements in a view.\r\n * See [the learning articles]($docs/learning/frontend/index.md).\r\n */\r\n/**\r\n * @docs-group-description Notifications\r\n * Notifications provide feedback to the user of something of interest.\r\n * See [the learning articles]($docs/learning/frontend/index.md).\r\n */\r\n/**\r\n * @docs-group-description Extensions\r\n * Classes for creating and managing Extensions.\r\n */\r\n/**\r\n * @docs-group-description Properties\r\n * Classes for working with property records and descriptions.\r\n */\r\n/**\r\n * @docs-group-description Rendering\r\n * Classes for rendering the contents of views.\r\n */\r\n/**\r\n * @docs-group-description SelectionSet\r\n * Classes for working with the set of selected elements.\r\n * See [the learning articles]($docs/learning/frontend/index.md).\r\n */\r\n/**\r\n * @docs-group-description NativeApp\r\n * Classes for working with Native Applications\r\n */\r\n/**\r\n * @docs-group-description Utils\r\n * Miscellaneous utility classes.\r\n */\r\n/**\r\n * @docs-group-description Logging\r\n * Logger categories used by this package\r\n */\r\n/**\r\n * @docs-group-description QuantityFormatting\r\n * Classes for formatting and parsing quantity values.\r\n */\r\n/**\r\n * @docs-group-description Tiles\r\n * Classes representing graphics as [hierarchical 3d tiles](https://github.com/CesiumGS/3d-tiles).\r\n */\r\n/**\r\n * @docs-group-description HubAccess\r\n * APIs for working with IModelHub\r\n */\r\n/**\r\n * @docs-group-description UserPreferences\r\n * APIs for working with user preferences in an iModelApp.\r\n * See [the learning articles]($docs/learning/frontend/preferences.md).\r\n */\r\n/**\r\n * @docs-group-description MapLayers\r\n * Classes supporting map layers display.\r\n */\r\n/**\r\n * @docs-group-description TileStorage\r\n * Class for working with cloud storage using iTwin/object-storage cloud providers\r\n*/\r\n"]}
1
+ {"version":3,"file":"core-frontend.js","sourceRoot":"","sources":["../../src/core-frontend.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\nexport * from \"./AccuDraw\";\r\nexport * from \"./AccuSnap\";\r\nexport * from \"./AuxCoordSys\";\r\nexport * from \"./BingLocation\";\r\nexport * from \"./BriefcaseConnection\";\r\nexport * from \"./BriefcaseTxns\";\r\nexport * from \"./CategorySelectorState\";\r\nexport * from \"./ChangeFlags\";\r\nexport * from \"./CheckpointConnection\";\r\nexport * from \"./common/FrontendLoggerCategory\";\r\nexport * from \"./common/gltf/GltfModel\";\r\nexport * from \"./common/gltf/GltfParser\";\r\nexport * from \"./common/gltf/GltfSchema\";\r\nexport * from \"./common/ImageUtil\";\r\nexport * from \"./common/imdl/ImdlModel\";\r\nexport * from \"./common/imdl/ImdlSchema\";\r\nexport * from \"./common/imdl/ParseImdlDocument\";\r\nexport * from \"./common/render/AnimationNodeId\";\r\nexport * from \"./common/render/MaterialParams\";\r\nexport * from \"./common/render/primitives/AuxChannelTable\";\r\nexport * from \"./common/render/primitives/DisplayParams\";\r\nexport * from \"./common/render/primitives/EdgeParams\";\r\nexport * from \"./common/render/primitives/MeshParams\";\r\nexport * from \"./common/render/primitives/MeshPrimitive\";\r\nexport * from \"./common/render/primitives/PointStringParams\";\r\nexport * from \"./common/render/primitives/PolylineParams\";\r\nexport * from \"./common/render/primitives/SurfaceParams\";\r\nexport * from \"./common/render/primitives/VertexIndices\";\r\nexport * from \"./common/render/primitives/VertexTable\";\r\nexport * from \"./common/render/primitives/VertexTableSplitter\";\r\nexport * from \"./common/render/TextureParams\";\r\nexport * from \"./common/ViewRect\";\r\nexport * from \"./common/WorkerProxy\";\r\nexport * from \"./ContextRealityModelState\";\r\nexport * from \"./CoordSystem\";\r\nexport * from \"./DecorationsCache\";\r\nexport * from \"./DevTools\";\r\nexport * from \"./DisplayStyleState\";\r\nexport * from \"./DrawingViewState\";\r\nexport * from \"./ElementLocateManager\";\r\nexport * from \"./EmphasizeElements\";\r\nexport * from \"./EntityState\";\r\nexport * from \"./EnvironmentDecorations\";\r\nexport * from \"./FeatureOverrideProvider\";\r\nexport * from \"./FlashSettings\";\r\nexport * from \"./FrontendHubAccess\";\r\nexport * from \"./Frustum2d\";\r\nexport * from \"./FrustumAnimator\";\r\nexport * from \"./FuzzySearch\";\r\nexport * from \"./GeoServices\";\r\nexport * from \"./GlobeAnimator\";\r\nexport * from \"./GraphicalEditingScope\";\r\nexport * from \"./HitDetail\";\r\nexport * from \"./IModelApp\";\r\nexport * from \"./IModelConnection\";\r\nexport * from \"./IModelRoutingContext\";\r\nexport * from \"./IpcApp\";\r\nexport * from \"./LinePlaneIntersect\";\r\nexport * from \"./MarginPercent\";\r\nexport * from \"./Marker\";\r\nexport * from \"./ModelSelectorState\";\r\nexport * from \"./ModelState\";\r\nexport * from \"./NativeApp\";\r\nexport * from \"./NativeAppLogger\";\r\nexport * from \"./NoRenderApp\";\r\nexport * from \"./NotificationManager\";\r\nexport * from \"./PerModelCategoryVisibility\";\r\nexport * from \"./PlanarClipMaskState\";\r\nexport * from \"./SelectionSet\";\r\nexport * from \"./SheetViewState\";\r\nexport * from \"./SpatialViewState\";\r\nexport * from \"./Sprites\";\r\nexport * from \"./StandardView\";\r\nexport * from \"./SubCategoriesCache\";\r\nexport * from \"./TentativePoint\";\r\nexport * from \"./Tiles\";\r\nexport * from \"./UserPreferences\";\r\nexport * from \"./ViewAnimation\";\r\nexport * from \"./ViewContext\";\r\nexport * from \"./ViewGlobalLocation\";\r\nexport * from \"./ViewingSpace\";\r\nexport * from \"./ViewManager\";\r\nexport * from \"./Viewport\";\r\nexport * from \"./ViewportSync\";\r\nexport * from \"./ViewPose\";\r\nexport * from \"./ViewState\";\r\nexport * from \"./ViewStatus\";\r\nexport * from \"./extension/Extension\";\r\nexport * from \"./extension/providers/LocalExtensionProvider\";\r\nexport * from \"./extension/providers/RemoteExtensionProvider\";\r\nexport * from \"./properties/AngleDescription\";\r\nexport * from \"./properties/FormattedQuantityDescription\";\r\nexport * from \"./properties/LengthDescription\";\r\nexport * from \"./quantity-formatting/QuantityFormatter\";\r\nexport * from \"./quantity-formatting/BaseUnitFormattingSettingsProvider\";\r\nexport * from \"./quantity-formatting/LocalUnitFormatProvider\";\r\nexport * from \"./quantity-formatting/QuantityTypesEditorSpecs\";\r\nexport * from \"./render/CanvasDecoration\";\r\nexport * from \"./render/CreateRenderMaterialArgs\";\r\nexport * from \"./render/CreateTextureArgs\";\r\nexport * from \"./render/Decorations\";\r\nexport * from \"./render/FeatureSymbology\";\r\nexport * from \"./render/FrameStats\";\r\nexport * from \"./render/GraphicBranch\";\r\nexport * from \"./render/GraphicBuilder\";\r\nexport * from \"./render/GraphicPrimitive\";\r\nexport * from \"./render/InstancedGraphicParams\";\r\nexport * from \"./render/MockRender\";\r\nexport * from \"./render/ParticleCollectionBuilder\";\r\nexport * from \"./render/Pixel\";\r\nexport * from \"./render/RealityMeshGraphicParams\";\r\nexport * from \"./render/RealityMeshParams\";\r\nexport * from \"./render/RenderClipVolume\";\r\nexport * from \"./render/RenderGraphic\";\r\nexport * from \"./render/RenderMemory\";\r\nexport * from \"./render/RenderPlan\";\r\nexport * from \"./render/RenderPlanarClassifier\";\r\nexport * from \"./render/RenderSystem\";\r\nexport * from \"./render/RenderTarget\";\r\nexport * from \"./render/Scene\";\r\nexport * from \"./render/ScreenSpaceEffectBuilder\";\r\nexport * from \"./render/VisibleFeature\";\r\nexport * from \"./render/primitives/ColorMap\";\r\nexport * from \"./render/primitives/EdgeParams\";\r\nexport * from \"./render/primitives/PointCloudPrimitive\";\r\nexport * from \"./render/primitives/PointStringParams\";\r\nexport * from \"./render/primitives/Polyface\";\r\nexport * from \"./render/primitives/PolylineParams\";\r\nexport * from \"./render/primitives/Primitives\";\r\nexport * from \"./render/primitives/Strokes\";\r\nexport * from \"./render/primitives/VertexKey\";\r\nexport * from \"./render/primitives/VertexTableBuilder\";\r\nexport * from \"./render/primitives/geometry/GeometryAccumulator\";\r\nexport * from \"./render/primitives/geometry/GeometryList\";\r\nexport * from \"./render/primitives/geometry/GeometryListBuilder\";\r\nexport * from \"./render/primitives/geometry/GeometryPrimitives\";\r\nexport * from \"./render/primitives/mesh/MeshBuilder\";\r\nexport * from \"./render/primitives/mesh/MeshBuilderMap\";\r\nexport * from \"./render/primitives/mesh/MeshPrimitives\";\r\nexport * from \"./render/webgl/IModelFrameLifecycle\";\r\nexport * from \"./render/webgl/PerformanceMetrics\";\r\nexport * from \"./render/webgl/Target\";\r\nexport * from \"./tile/internal\";\r\nexport * from \"./tools/AccuDrawTool\";\r\nexport * from \"./tools/ClipViewTool\";\r\nexport * from \"./tools/EditManipulator\";\r\nexport * from \"./tools/ElementSetTool\";\r\nexport * from \"./tools/EventController\";\r\nexport * from \"./tools/IdleTool\";\r\nexport * from \"./tools/MeasureTool\";\r\nexport * from \"./tools/PrimitiveTool\";\r\nexport * from \"./tools/SelectTool\";\r\nexport * from \"./tools/Tool\";\r\nexport * from \"./tools/ToolSettings\";\r\nexport * from \"./tools/ToolAdmin\";\r\nexport * from \"./tools/ToolAssistance\";\r\nexport * from \"./tools/ViewTool\";\r\nexport * from \"./BackgroundMapGeometry\";\r\nexport * from \"./ViewCreator2d\";\r\nexport * from \"./ViewCreator3d\";\r\nexport * from \"./LocalhostIpcApp\";\r\nexport * from \"./request/utils\";\r\nexport * from \"./RealityDataSource\";\r\n// TODO/FIX: \"./extension/ExtensionRuntime\" import has to be last to avoid circular dependency errors.\r\nimport \"./extension/ExtensionRuntime\";\r\n\r\n/** @docs-package-description\r\n * The core-frontend package always runs in a web browser. It contains classes for [querying iModels and showing views]($docs/learning/frontend/index.md).\r\n */\r\n\r\n/**\r\n * @docs-group-description IModelApp\r\n * Classes for configuring and administering an iTwin.js application.\r\n * See [the learning articles]($docs/learning/frontend/index.md).\r\n */\r\n/**\r\n * @docs-group-description IModelConnection\r\n * Classes for working with a connection to an [iModel briefcase]($docs/learning/IModels.md)\r\n */\r\n/**\r\n * @docs-group-description ElementState\r\n * Classes for working with the *state* of Elements in the frontend.\r\n * See [the learning articles]($docs/learning/frontend/index.md).\r\n */\r\n/**\r\n * @docs-group-description ModelState\r\n * Classes for working with the *state* of Models in the frontend.\r\n * See [the learning articles]($docs/learning/frontend/index.md).\r\n */\r\n/**\r\n * @docs-group-description Tools\r\n * Classes for [working with Tools]($docs/learning/frontend/Tools.md)\r\n */\r\n/**\r\n * @docs-group-description Measure\r\n * Classes for reporting point to point distances and mass properties of elements.\r\n */\r\n/**\r\n * @docs-group-description Views\r\n * Classes for [working with Views]($docs/learning/frontend/Views.md)\r\n */\r\n/**\r\n * @docs-group-description LocatingElements\r\n * Classes for locating and snapping to elements in views.\r\n * See [the learning articles]($docs/learning/frontend/index.md).\r\n */\r\n/**\r\n * @docs-group-description AccuDraw\r\n * AccuDraw provides helpful assistance for creating and modifying elements in a view.\r\n * See [the learning articles]($docs/learning/frontend/index.md).\r\n */\r\n/**\r\n * @docs-group-description Notifications\r\n * Notifications provide feedback to the user of something of interest.\r\n * See [the learning articles]($docs/learning/frontend/index.md).\r\n */\r\n/**\r\n * @docs-group-description Extensions\r\n * Classes for creating and managing Extensions.\r\n */\r\n/**\r\n * @docs-group-description Properties\r\n * Classes for working with property records and descriptions.\r\n */\r\n/**\r\n * @docs-group-description Rendering\r\n * Classes for rendering the contents of views.\r\n */\r\n/**\r\n * @docs-group-description SelectionSet\r\n * Classes for working with the set of selected elements.\r\n * See [the learning articles]($docs/learning/frontend/index.md).\r\n */\r\n/**\r\n * @docs-group-description NativeApp\r\n * Classes for working with Native Applications\r\n */\r\n/**\r\n * @docs-group-description Utils\r\n * Miscellaneous utility classes.\r\n */\r\n/**\r\n * @docs-group-description Logging\r\n * Logger categories used by this package\r\n */\r\n/**\r\n * @docs-group-description QuantityFormatting\r\n * Classes for formatting and parsing quantity values.\r\n */\r\n/**\r\n * @docs-group-description Tiles\r\n * Classes representing graphics as [hierarchical 3d tiles](https://github.com/CesiumGS/3d-tiles).\r\n */\r\n/**\r\n * @docs-group-description HubAccess\r\n * APIs for working with IModelHub\r\n */\r\n/**\r\n * @docs-group-description UserPreferences\r\n * APIs for working with user preferences in an iModelApp.\r\n * See [the learning articles]($docs/learning/frontend/preferences.md).\r\n */\r\n/**\r\n * @docs-group-description MapLayers\r\n * Classes supporting map layers display.\r\n */\r\n/**\r\n * @docs-group-description TileStorage\r\n * Class for working with cloud storage using iTwin/object-storage cloud providers\r\n*/\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"GLTimer.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/GLTimer.ts"],"names":[],"mappings":"AAOA,OAAO,EAAiB,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAqClC;;;;;;;;;;;;;GAaG;AACH,qBAAa,OAAO;IAClB,OAAO,CAAC,UAAU,CAAyB;IAC3C,OAAO,CAAC,WAAW,CAAe;IAClC,OAAO,CAAC,gBAAgB,CAAC,CAAwB;IAEjD,OAAO;WAQO,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAI7C,IAAW,WAAW,IAAI,OAAO,CAAwC;IAEzE,IAAW,eAAe,CAAC,QAAQ,EAAE,qBAAqB,GAAG,SAAS,EAKrE;IAEM,cAAc,CAAC,KAAK,EAAE,MAAM;IAO5B,YAAY;IASZ,UAAU;IAWV,QAAQ;IA8Cf,OAAO,CAAC,yBAAyB;IAQjC,OAAO,CAAC,SAAS;IAgBjB,OAAO,CAAC,QAAQ;CAOjB"}
1
+ {"version":3,"file":"GLTimer.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/GLTimer.ts"],"names":[],"mappings":"AAOA,OAAO,EAAiB,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAsClC;;;;;;;;;;;;;GAaG;AACH,qBAAa,OAAO;IAClB,OAAO,CAAC,UAAU,CAAyB;IAC3C,OAAO,CAAC,WAAW,CAAe;IAClC,OAAO,CAAC,gBAAgB,CAAC,CAAwB;IAEjD,OAAO;WAQO,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAI7C,IAAW,WAAW,IAAI,OAAO,CAAwC;IAEzE,IAAW,eAAe,CAAC,QAAQ,EAAE,qBAAqB,GAAG,SAAS,EAKrE;IAEM,cAAc,CAAC,KAAK,EAAE,MAAM;IAO5B,YAAY;IASZ,UAAU;IAWV,QAAQ;IA0Df,OAAO,CAAC,yBAAyB;IAajC,OAAO,CAAC,SAAS;IAgBjB,OAAO,CAAC,QAAQ;CAYjB"}
@@ -93,9 +93,11 @@ class GLTimer {
93
93
  this.cleanupAfterDisjointEvent(root);
94
94
  return;
95
95
  }
96
- // It takes more one or more frames for results to become available.
96
+ // It takes one or more frames for results to become available.
97
97
  // Only checking time for root since it will always be the last query completed.
98
- if (!this._extension.isResultAvailable(root.query)) {
98
+ // If there are any sibling queries then we will just check the last one.
99
+ const finalQuery = (undefined === root.siblingQueries ? root.query : root.siblingQueries[root.siblingQueries.length - 1]);
100
+ if (!this._extension.isResultAvailable(finalQuery)) {
99
101
  setTimeout(queryCallback, 0);
100
102
  return;
101
103
  }
@@ -103,6 +105,14 @@ class GLTimer {
103
105
  const time = this._extension.getResult(queryEntry.query);
104
106
  this._extension.deleteQuery(queryEntry.query);
105
107
  const result = { label: queryEntry.label, nanoseconds: time };
108
+ if (undefined !== queryEntry.siblingQueries) {
109
+ for (const sib of queryEntry.siblingQueries) {
110
+ const sibTime = this._extension.getResult(sib);
111
+ this._extension.deleteQuery(sib);
112
+ result.nanoseconds += sibTime;
113
+ }
114
+ queryEntry.siblingQueries = undefined;
115
+ }
106
116
  if (queryEntry.children === undefined)
107
117
  return result;
108
118
  result.children = [];
@@ -119,6 +129,11 @@ class GLTimer {
119
129
  }
120
130
  cleanupAfterDisjointEvent(queryEntry) {
121
131
  this._extension.deleteQuery(queryEntry.query);
132
+ if (undefined !== queryEntry.siblingQueries) {
133
+ for (const sib of queryEntry.siblingQueries)
134
+ this._extension.deleteQuery(sib);
135
+ queryEntry.siblingQueries = undefined;
136
+ }
122
137
  if (!queryEntry.children)
123
138
  return;
124
139
  for (const child of queryEntry.children)
@@ -139,8 +154,13 @@ class GLTimer {
139
154
  popQuery() {
140
155
  this._extension.endQuery();
141
156
  this._queryStack.pop();
142
- const activeQuery = this._queryStack[this._queryStack.length - 1];
143
- this._extension.beginQuery(activeQuery.query);
157
+ const lastStackIndex = this._queryStack.length - 1;
158
+ const activeQuery = this._queryStack[lastStackIndex];
159
+ if (undefined === activeQuery.siblingQueries)
160
+ activeQuery.siblingQueries = [];
161
+ const newQuery = this._extension.createQuery();
162
+ activeQuery.siblingQueries.push(newQuery);
163
+ this._extension.beginQuery(newQuery);
144
164
  }
145
165
  }
146
166
  exports.GLTimer = GLTimer;
@@ -1 +1 @@
1
- {"version":3,"file":"GLTimer.js","sourceRoot":"","sources":["../../../../src/render/webgl/GLTimer.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 { BentleyStatus } from \"@itwin/core-bentley\";\r\nimport { IModelError } from \"@itwin/core-common\";\r\nimport { GLTimerResult, GLTimerResultCallback } from \"../RenderSystem\";\r\nimport { System } from \"./System\";\r\n\r\nclass DisjointTimerExtension {\r\n private _e: any; // EXT_disjoint_timer_query, not available in lib.dom.d.ts\r\n private _context: WebGL2RenderingContext;\r\n\r\n public constructor(system: System) {\r\n this._e = system.disjointTimerQuery;\r\n this._context = system.context;\r\n }\r\n\r\n public get isSupported(): boolean { return this._e !== undefined; }\r\n\r\n public didDisjointEventHappen(): boolean {\r\n return this._context.getParameter(this._e.GPU_DISJOINT_EXT);\r\n }\r\n\r\n public createQuery(): WebGLQuery { return this._context.createQuery() as WebGLQuery; }\r\n public deleteQuery(q: WebGLQuery) { this._context.deleteQuery(q); }\r\n\r\n public beginQuery(q: WebGLQuery) { this._context.beginQuery(this._e.TIME_ELAPSED_EXT, q); }\r\n public endQuery() { this._context.endQuery(this._e.TIME_ELAPSED_EXT); }\r\n\r\n public isResultAvailable(q: WebGLQuery): boolean {\r\n return this._context.getQueryParameter(q, this._context.QUERY_RESULT_AVAILABLE);\r\n }\r\n public getResult(q: WebGLQuery): number {\r\n return this._context.getQueryParameter(q, this._context.QUERY_RESULT);\r\n }\r\n}\r\n\r\ninterface QueryEntry {\r\n label: string;\r\n query: WebGLQuery;\r\n children?: QueryEntry[];\r\n}\r\n\r\n/** Record GPU hardware queries to profile independent of CPU.\r\n *\r\n * This is a wrapper around EXT_disjoint_timer_query. The extension should be available in the following browsers:\r\n * * Chrome 67 and later\r\n * * Chromium-based Edge\r\n * * Firefox (with webgl.enable-privileged-extensions set to true in about:config)\r\n *\r\n * EXT_disjoint_timer_query only supports one active query per context without nesting. This wrapper keeps an internal stack to make\r\n * nesting work.\r\n *\r\n * The extension API makes timestamps look like a better solution than disjoint timers, but they are not actually supported.\r\n * See https://bugs.chromium.org/p/chromium/issues/detail?id=595172\r\n * @internal\r\n */\r\nexport class GLTimer {\r\n private _extension: DisjointTimerExtension;\r\n private _queryStack: QueryEntry[];\r\n private _resultsCallback?: GLTimerResultCallback;\r\n\r\n private constructor(system: System) {\r\n this._extension = new DisjointTimerExtension(system);\r\n this._queryStack = [];\r\n this._resultsCallback = undefined;\r\n }\r\n\r\n // This class is necessarily a singleton per context because of the underlying extension it wraps.\r\n // System is expected to call create in its constructor.\r\n public static create(system: System): GLTimer {\r\n return new GLTimer(system);\r\n }\r\n\r\n public get isSupported(): boolean { return this._extension.isSupported; }\r\n\r\n public set resultsCallback(callback: GLTimerResultCallback | undefined) {\r\n if (this._queryStack.length !== 0)\r\n throw new IModelError(BentleyStatus.ERROR, \"Do not set resultsCallback when a frame is already being drawn\");\r\n\r\n this._resultsCallback = callback;\r\n }\r\n\r\n public beginOperation(label: string) {\r\n if (!this._resultsCallback)\r\n return;\r\n\r\n this.pushQuery(label);\r\n }\r\n\r\n public endOperation() {\r\n if (!this._resultsCallback)\r\n return;\r\n if (this._queryStack.length === 0)\r\n throw new IModelError(BentleyStatus.ERROR, \"Mismatched calls to beginOperation/endOperation\");\r\n\r\n this.popQuery();\r\n }\r\n\r\n public beginFrame() {\r\n if (!this._resultsCallback)\r\n return;\r\n if (this._queryStack.length !== 0)\r\n throw new IModelError(BentleyStatus.ERROR, \"Already recording timing for a frame\");\r\n\r\n const query = this._extension.createQuery();\r\n this._extension.beginQuery(query);\r\n this._queryStack.push({ label: \"Total\", query, children: [] });\r\n }\r\n\r\n public endFrame() {\r\n if (!this._resultsCallback)\r\n return;\r\n if (this._queryStack.length !== 1)\r\n throw new IModelError(BentleyStatus.ERROR, \"Missing at least one endOperation call\");\r\n\r\n this._extension.endQuery();\r\n const root = this._queryStack.pop()!;\r\n const userCallback = this._resultsCallback;\r\n\r\n const queryCallback = () => {\r\n if (this._extension.didDisjointEventHappen()) {\r\n // Have to throw away results for this frame after disjoint event occurs.\r\n this.cleanupAfterDisjointEvent(root);\r\n return;\r\n }\r\n\r\n // It takes more one or more frames for results to become available.\r\n // Only checking time for root since it will always be the last query completed.\r\n if (!this._extension.isResultAvailable(root.query)) {\r\n setTimeout(queryCallback, 0);\r\n return;\r\n }\r\n\r\n const processQueryEntry = (queryEntry: QueryEntry): GLTimerResult => {\r\n const time = this._extension.getResult(queryEntry.query);\r\n this._extension.deleteQuery(queryEntry.query);\r\n\r\n const result: GLTimerResult = { label: queryEntry.label, nanoseconds: time };\r\n if (queryEntry.children === undefined)\r\n return result;\r\n\r\n result.children = [];\r\n for (const child of queryEntry.children) {\r\n const childResult = processQueryEntry(child);\r\n result.children.push(childResult);\r\n result.nanoseconds += childResult.nanoseconds;\r\n }\r\n return result;\r\n };\r\n\r\n userCallback(processQueryEntry(root));\r\n };\r\n setTimeout(queryCallback, 0);\r\n }\r\n\r\n private cleanupAfterDisjointEvent(queryEntry: QueryEntry) {\r\n this._extension.deleteQuery(queryEntry.query);\r\n if (!queryEntry.children)\r\n return;\r\n for (const child of queryEntry.children)\r\n this.cleanupAfterDisjointEvent(child);\r\n }\r\n\r\n private pushQuery(label: string) {\r\n this._extension.endQuery();\r\n\r\n const query = this._extension.createQuery();\r\n this._extension.beginQuery(query);\r\n\r\n const activeQuery = this._queryStack[this._queryStack.length - 1];\r\n const queryEntry: QueryEntry = { label, query };\r\n this._queryStack.push(queryEntry);\r\n\r\n if (activeQuery.children === undefined)\r\n activeQuery.children = [queryEntry];\r\n else\r\n activeQuery.children.push(queryEntry);\r\n }\r\n\r\n private popQuery() {\r\n this._extension.endQuery();\r\n this._queryStack.pop();\r\n\r\n const activeQuery = this._queryStack[this._queryStack.length - 1];\r\n this._extension.beginQuery(activeQuery.query);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"GLTimer.js","sourceRoot":"","sources":["../../../../src/render/webgl/GLTimer.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 { BentleyStatus } from \"@itwin/core-bentley\";\r\nimport { IModelError } from \"@itwin/core-common\";\r\nimport { GLTimerResult, GLTimerResultCallback } from \"../RenderSystem\";\r\nimport { System } from \"./System\";\r\n\r\nclass DisjointTimerExtension {\r\n private _e: any; // EXT_disjoint_timer_query, not available in lib.dom.d.ts\r\n private _context: WebGL2RenderingContext;\r\n\r\n public constructor(system: System) {\r\n this._e = system.disjointTimerQuery;\r\n this._context = system.context;\r\n }\r\n\r\n public get isSupported(): boolean { return this._e !== undefined; }\r\n\r\n public didDisjointEventHappen(): boolean {\r\n return this._context.getParameter(this._e.GPU_DISJOINT_EXT);\r\n }\r\n\r\n public createQuery(): WebGLQuery { return this._context.createQuery() as WebGLQuery; }\r\n public deleteQuery(q: WebGLQuery) { this._context.deleteQuery(q); }\r\n\r\n public beginQuery(q: WebGLQuery) { this._context.beginQuery(this._e.TIME_ELAPSED_EXT, q); }\r\n public endQuery() { this._context.endQuery(this._e.TIME_ELAPSED_EXT); }\r\n\r\n public isResultAvailable(q: WebGLQuery): boolean {\r\n return this._context.getQueryParameter(q, this._context.QUERY_RESULT_AVAILABLE);\r\n }\r\n public getResult(q: WebGLQuery): number {\r\n return this._context.getQueryParameter(q, this._context.QUERY_RESULT);\r\n }\r\n}\r\n\r\ninterface QueryEntry {\r\n label: string;\r\n query: WebGLQuery;\r\n siblingQueries?: WebGLQuery[]; // For when the main query is broken up into pieces by intermittent child queries.\r\n children?: QueryEntry[];\r\n}\r\n\r\n/** Record GPU hardware queries to profile independent of CPU.\r\n *\r\n * This is a wrapper around EXT_disjoint_timer_query. The extension should be available in the following browsers:\r\n * * Chrome 67 and later\r\n * * Chromium-based Edge\r\n * * Firefox (with webgl.enable-privileged-extensions set to true in about:config)\r\n *\r\n * EXT_disjoint_timer_query only supports one active query per context without nesting. This wrapper keeps an internal stack to make\r\n * nesting work.\r\n *\r\n * The extension API makes timestamps look like a better solution than disjoint timers, but they are not actually supported.\r\n * See https://bugs.chromium.org/p/chromium/issues/detail?id=595172\r\n * @internal\r\n */\r\nexport class GLTimer {\r\n private _extension: DisjointTimerExtension;\r\n private _queryStack: QueryEntry[];\r\n private _resultsCallback?: GLTimerResultCallback;\r\n\r\n private constructor(system: System) {\r\n this._extension = new DisjointTimerExtension(system);\r\n this._queryStack = [];\r\n this._resultsCallback = undefined;\r\n }\r\n\r\n // This class is necessarily a singleton per context because of the underlying extension it wraps.\r\n // System is expected to call create in its constructor.\r\n public static create(system: System): GLTimer {\r\n return new GLTimer(system);\r\n }\r\n\r\n public get isSupported(): boolean { return this._extension.isSupported; }\r\n\r\n public set resultsCallback(callback: GLTimerResultCallback | undefined) {\r\n if (this._queryStack.length !== 0)\r\n throw new IModelError(BentleyStatus.ERROR, \"Do not set resultsCallback when a frame is already being drawn\");\r\n\r\n this._resultsCallback = callback;\r\n }\r\n\r\n public beginOperation(label: string) {\r\n if (!this._resultsCallback)\r\n return;\r\n\r\n this.pushQuery(label);\r\n }\r\n\r\n public endOperation() {\r\n if (!this._resultsCallback)\r\n return;\r\n if (this._queryStack.length === 0)\r\n throw new IModelError(BentleyStatus.ERROR, \"Mismatched calls to beginOperation/endOperation\");\r\n\r\n this.popQuery();\r\n }\r\n\r\n public beginFrame() {\r\n if (!this._resultsCallback)\r\n return;\r\n if (this._queryStack.length !== 0)\r\n throw new IModelError(BentleyStatus.ERROR, \"Already recording timing for a frame\");\r\n\r\n const query = this._extension.createQuery();\r\n this._extension.beginQuery(query);\r\n this._queryStack.push({ label: \"Total\", query, children: [] });\r\n }\r\n\r\n public endFrame() {\r\n if (!this._resultsCallback)\r\n return;\r\n if (this._queryStack.length !== 1)\r\n throw new IModelError(BentleyStatus.ERROR, \"Missing at least one endOperation call\");\r\n\r\n this._extension.endQuery();\r\n const root = this._queryStack.pop()!;\r\n const userCallback = this._resultsCallback;\r\n\r\n const queryCallback = () => {\r\n if (this._extension.didDisjointEventHappen()) {\r\n // Have to throw away results for this frame after disjoint event occurs.\r\n this.cleanupAfterDisjointEvent(root);\r\n return;\r\n }\r\n\r\n // It takes one or more frames for results to become available.\r\n // Only checking time for root since it will always be the last query completed.\r\n // If there are any sibling queries then we will just check the last one.\r\n const finalQuery = (undefined === root.siblingQueries ? root.query : root.siblingQueries[root.siblingQueries.length-1]);\r\n if (!this._extension.isResultAvailable(finalQuery)) {\r\n setTimeout(queryCallback, 0);\r\n return;\r\n }\r\n\r\n const processQueryEntry = (queryEntry: QueryEntry): GLTimerResult => {\r\n const time = this._extension.getResult(queryEntry.query);\r\n this._extension.deleteQuery(queryEntry.query);\r\n\r\n const result: GLTimerResult = { label: queryEntry.label, nanoseconds: time };\r\n\r\n if (undefined !== queryEntry.siblingQueries) {\r\n for (const sib of queryEntry.siblingQueries) {\r\n const sibTime = this._extension.getResult(sib);\r\n this._extension.deleteQuery(sib);\r\n result.nanoseconds += sibTime;\r\n }\r\n queryEntry.siblingQueries = undefined;\r\n }\r\n\r\n if (queryEntry.children === undefined)\r\n return result;\r\n\r\n result.children = [];\r\n for (const child of queryEntry.children) {\r\n const childResult = processQueryEntry(child);\r\n result.children.push(childResult);\r\n result.nanoseconds += childResult.nanoseconds;\r\n }\r\n return result;\r\n };\r\n\r\n userCallback(processQueryEntry(root));\r\n };\r\n setTimeout(queryCallback, 0);\r\n }\r\n\r\n private cleanupAfterDisjointEvent(queryEntry: QueryEntry) {\r\n this._extension.deleteQuery(queryEntry.query);\r\n if (undefined !== queryEntry.siblingQueries) {\r\n for (const sib of queryEntry.siblingQueries)\r\n this._extension.deleteQuery(sib);\r\n queryEntry.siblingQueries = undefined;\r\n }\r\n if (!queryEntry.children)\r\n return;\r\n for (const child of queryEntry.children)\r\n this.cleanupAfterDisjointEvent(child);\r\n }\r\n\r\n private pushQuery(label: string) {\r\n this._extension.endQuery();\r\n\r\n const query = this._extension.createQuery();\r\n this._extension.beginQuery(query);\r\n\r\n const activeQuery = this._queryStack[this._queryStack.length - 1];\r\n const queryEntry: QueryEntry = { label, query };\r\n this._queryStack.push(queryEntry);\r\n\r\n if (activeQuery.children === undefined)\r\n activeQuery.children = [queryEntry];\r\n else\r\n activeQuery.children.push(queryEntry);\r\n }\r\n\r\n private popQuery() {\r\n this._extension.endQuery();\r\n this._queryStack.pop();\r\n\r\n const lastStackIndex = this._queryStack.length - 1;\r\n const activeQuery = this._queryStack[lastStackIndex];\r\n if (undefined === activeQuery.siblingQueries)\r\n activeQuery.siblingQueries = [];\r\n const newQuery = this._extension.createQuery();\r\n activeQuery.siblingQueries.push(newQuery);\r\n this._extension.beginQuery(newQuery);\r\n }\r\n}\r\n"]}
@@ -15,4 +15,9 @@ export declare function headersIncludeAuthMethod(headers: Headers, query: string
15
15
  export declare function setBasicAuthorization(headers: Headers, credentials: RequestBasicCredentials): void;
16
16
  /** @internal */
17
17
  export declare function setBasicAuthorization(headers: Headers, user: string, password: string): void;
18
+ /**
19
+ * Set number of milliseconds a request can take before automatically being terminated
20
+ * @internal
21
+ */
22
+ export declare function setRequestTimeout(opts: RequestInit, ms: number, abortController?: AbortController): void;
18
23
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/request/utils.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AAEpD;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAWnF;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,uBAAuB,GAAG,IAAI,CAAC;AACpG,gBAAgB;AAChB,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/request/utils.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AAEpD;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAWnF;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,uBAAuB,GAAG,IAAI,CAAC;AACpG,gBAAgB;AAChB,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;AAiB9F;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,eAAe,GAAI,IAAI,CAIzG"}
@@ -4,7 +4,7 @@
4
4
  * See LICENSE.md in the project root for license terms and full copyright notice.
5
5
  *--------------------------------------------------------------------------------------------*/
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.setBasicAuthorization = exports.headersIncludeAuthMethod = void 0;
7
+ exports.setRequestTimeout = exports.setBasicAuthorization = exports.headersIncludeAuthMethod = void 0;
8
8
  const core_common_1 = require("@itwin/core-common");
9
9
  /**
10
10
  * Check whether or not one of the requested authentication method is listed in the HTTP 'WWW-Authenticate' response header
@@ -42,4 +42,14 @@ function setBasicAuthorization(headers, userOrCreds, password) {
42
42
  headers.set("Authorization", `Basic ${core_common_1.Base64EncodedString.encode(`${username}:${pwd}`)}`);
43
43
  }
44
44
  exports.setBasicAuthorization = setBasicAuthorization;
45
+ /**
46
+ * Set number of milliseconds a request can take before automatically being terminated
47
+ * @internal
48
+ */
49
+ function setRequestTimeout(opts, ms, abortController) {
50
+ const controller = abortController ?? new AbortController();
51
+ setTimeout(() => controller.abort(), ms);
52
+ opts.signal = controller.signal;
53
+ }
54
+ exports.setRequestTimeout = setRequestTimeout;
45
55
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/request/utils.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;AAE/F,oDAAyD;AAGzD;;;;;;GAMG;AACH,SAAgB,wBAAwB,CAAC,OAAgB,EAAE,KAAe;IACxE,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACxD,MAAM,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAC,EAAE,CAAA,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAK,qBAAqB;IAC3F,IAAI,eAAe,KAAK,IAAI,EAAE;QAC5B,MAAM,WAAW,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAC,EAAE,CAAA,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC1F,KAAK,MAAM,UAAU,IAAI,cAAc,EAAE;YACvC,IAAI,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAClC,OAAO,IAAI,CAAC;SACf;KACF;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAXD,4DAWC;AAUD,gBAAgB;AAChB,SAAgB,qBAAqB,CAAC,OAAgB,EAAE,WAA2C,EAAE,QAAiB;IACpH,IAAI,QAA0B,CAAC;IAC/B,IAAI,GAAqB,CAAC;IAC1B,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;QACnC,QAAQ,GAAG,WAAW,CAAC;QACvB,GAAG,GAAI,QAAQ,CAAC;KACjB;SAAM;QACL,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC;QAC5B,GAAG,GAAI,WAAW,CAAC,QAAQ,CAAC;KAC7B;IAED,IAAI,QAAQ,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS;QAC7C,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,SAAS,iCAAmB,CAAC,MAAM,CAAC,GAAG,QAAQ,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9F,CAAC;AAbD,sDAaC","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 { Base64EncodedString } from \"@itwin/core-common\";\r\nimport { RequestBasicCredentials } from \"./Request\";\r\n\r\n/**\r\n * Check whether or not one of the requested authentication method is listed in the HTTP 'WWW-Authenticate' response header\r\n * @param headers Headers object\r\n * @param query List of authentication method to lookup (case-insensitive)\r\n * @note For CORS requests, the 'Access-Control-Expose-Headers' header from the server must make the 'WWW-Authenticate' available to the browser, otherwise this won't work.\r\n * @internal\r\n */\r\nexport function headersIncludeAuthMethod(headers: Headers, query: string[]): boolean {\r\n const wwwAuthenticate = headers.get(\"WWW-authenticate\");\r\n const lowerCaseQuery = query.map(((value)=>value.toLowerCase())); // not case-sensitive\r\n if (wwwAuthenticate !== null) {\r\n const authMethods = wwwAuthenticate.split(\",\").map(((value)=>value.toLowerCase().trim()));\r\n for (const queryValue of lowerCaseQuery) {\r\n if (authMethods.includes(queryValue))\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * Set the value of the 'Authorization' header with Basic authentication value\r\n * scheme: 'Authorization: Basic <credentials>'\r\n * @internal\r\n */\r\nexport function setBasicAuthorization(headers: Headers, credentials: RequestBasicCredentials): void;\r\n/** @internal */\r\nexport function setBasicAuthorization(headers: Headers, user: string, password: string): void;\r\n/** @internal */\r\nexport function setBasicAuthorization(headers: Headers, userOrCreds: string|RequestBasicCredentials, password?: string): void {\r\n let username: string|undefined;\r\n let pwd: string|undefined;\r\n if (typeof userOrCreds === \"string\") {\r\n username = userOrCreds;\r\n pwd = password;\r\n } else {\r\n username = userOrCreds.user;\r\n pwd = userOrCreds.password;\r\n }\r\n\r\n if (username !== undefined && pwd !== undefined)\r\n headers.set(\"Authorization\", `Basic ${Base64EncodedString.encode(`${username}:${pwd}`)}`);\r\n}\r\n\r\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/request/utils.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;AAE/F,oDAAyD;AAGzD;;;;;;GAMG;AACH,SAAgB,wBAAwB,CAAC,OAAgB,EAAE,KAAe;IACxE,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACxD,MAAM,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAC,EAAE,CAAA,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAK,qBAAqB;IAC3F,IAAI,eAAe,KAAK,IAAI,EAAE;QAC5B,MAAM,WAAW,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAC,EAAE,CAAA,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC1F,KAAK,MAAM,UAAU,IAAI,cAAc,EAAE;YACvC,IAAI,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAClC,OAAO,IAAI,CAAC;SACf;KACF;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAXD,4DAWC;AAUD,gBAAgB;AAChB,SAAgB,qBAAqB,CAAC,OAAgB,EAAE,WAA2C,EAAE,QAAiB;IACpH,IAAI,QAA0B,CAAC;IAC/B,IAAI,GAAqB,CAAC;IAC1B,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;QACnC,QAAQ,GAAG,WAAW,CAAC;QACvB,GAAG,GAAI,QAAQ,CAAC;KACjB;SAAM;QACL,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC;QAC5B,GAAG,GAAI,WAAW,CAAC,QAAQ,CAAC;KAC7B;IAED,IAAI,QAAQ,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS;QAC7C,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,SAAS,iCAAmB,CAAC,MAAM,CAAC,GAAG,QAAQ,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9F,CAAC;AAbD,sDAaC;AAED;;;GAGG;AACH,SAAgB,iBAAiB,CAAC,IAAiB,EAAE,EAAU,EAAE,eAAiC;IAChG,MAAM,UAAU,GAAG,eAAe,IAAI,IAAI,eAAe,EAAE,CAAC;IAC5D,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IACzC,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;AAClC,CAAC;AAJD,8CAIC","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 { Base64EncodedString } from \"@itwin/core-common\";\r\nimport { RequestBasicCredentials } from \"./Request\";\r\n\r\n/**\r\n * Check whether or not one of the requested authentication method is listed in the HTTP 'WWW-Authenticate' response header\r\n * @param headers Headers object\r\n * @param query List of authentication method to lookup (case-insensitive)\r\n * @note For CORS requests, the 'Access-Control-Expose-Headers' header from the server must make the 'WWW-Authenticate' available to the browser, otherwise this won't work.\r\n * @internal\r\n */\r\nexport function headersIncludeAuthMethod(headers: Headers, query: string[]): boolean {\r\n const wwwAuthenticate = headers.get(\"WWW-authenticate\");\r\n const lowerCaseQuery = query.map(((value)=>value.toLowerCase())); // not case-sensitive\r\n if (wwwAuthenticate !== null) {\r\n const authMethods = wwwAuthenticate.split(\",\").map(((value)=>value.toLowerCase().trim()));\r\n for (const queryValue of lowerCaseQuery) {\r\n if (authMethods.includes(queryValue))\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * Set the value of the 'Authorization' header with Basic authentication value\r\n * scheme: 'Authorization: Basic <credentials>'\r\n * @internal\r\n */\r\nexport function setBasicAuthorization(headers: Headers, credentials: RequestBasicCredentials): void;\r\n/** @internal */\r\nexport function setBasicAuthorization(headers: Headers, user: string, password: string): void;\r\n/** @internal */\r\nexport function setBasicAuthorization(headers: Headers, userOrCreds: string|RequestBasicCredentials, password?: string): void {\r\n let username: string|undefined;\r\n let pwd: string|undefined;\r\n if (typeof userOrCreds === \"string\") {\r\n username = userOrCreds;\r\n pwd = password;\r\n } else {\r\n username = userOrCreds.user;\r\n pwd = userOrCreds.password;\r\n }\r\n\r\n if (username !== undefined && pwd !== undefined)\r\n headers.set(\"Authorization\", `Basic ${Base64EncodedString.encode(`${username}:${pwd}`)}`);\r\n}\r\n\r\n/**\r\n * Set number of milliseconds a request can take before automatically being terminated\r\n * @internal\r\n */\r\nexport function setRequestTimeout(opts: RequestInit, ms: number, abortController?: AbortController ): void {\r\n const controller = abortController ?? new AbortController();\r\n setTimeout(() => controller.abort(), ms);\r\n opts.signal = controller.signal;\r\n}\r\n\r\n"]}
@@ -3,12 +3,13 @@
3
3
  */
4
4
  import { Id64String } from "@itwin/core-bentley";
5
5
  import { IModelConnection } from "../IModelConnection";
6
+ import { BatchTableProperties } from "./internal";
6
7
  /**
7
8
  * Mapping between transient IDs assigned to 3D tiles "features" and batch table properties (and visa versa).
8
9
  * these properties may be present in batched tile sets.
9
10
  * @internal
10
11
  */
11
- export declare class BatchedTileIdMap {
12
+ export declare class BatchedTileIdMap implements BatchTableProperties {
12
13
  private readonly _iModel;
13
14
  private _featureMap?;
14
15
  private _idMap?;
@@ -16,5 +17,9 @@ export declare class BatchedTileIdMap {
16
17
  /** Obtains or allocates the Id64String corresponding to the supplied set of JSON properties. */
17
18
  getBatchId(properties: any): Id64String;
18
19
  getFeatureProperties(id: Id64String): Record<string, any> | undefined;
20
+ entries(): Iterable<{
21
+ id: Id64String;
22
+ properties: Record<string, any>;
23
+ }>;
19
24
  }
20
25
  //# sourceMappingURL=BatchedTileIdMap.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BatchedTileIdMap.d.ts","sourceRoot":"","sources":["../../../src/tile/BatchedTileIdMap.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAU,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD;;;;GAIG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmB;IAC3C,OAAO,CAAC,WAAW,CAAC,CAAmD;IACvE,OAAO,CAAC,MAAM,CAAC,CAAuB;gBAEnB,MAAM,EAAE,gBAAgB;IAI3C,gGAAgG;IACzF,UAAU,CAAC,UAAU,EAAE,GAAG,GAAG,UAAU;IAmBvC,oBAAoB,CAAC,EAAE,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS;CAI7E"}
1
+ {"version":3,"file":"BatchedTileIdMap.d.ts","sourceRoot":"","sources":["../../../src/tile/BatchedTileIdMap.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAU,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD;;;;GAIG;AACH,qBAAa,gBAAiB,YAAW,oBAAoB;IAC3D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmB;IAC3C,OAAO,CAAC,WAAW,CAAC,CAAmD;IACvE,OAAO,CAAC,MAAM,CAAC,CAAuB;gBAEnB,MAAM,EAAE,gBAAgB;IAI3C,gGAAgG;IACzF,UAAU,CAAC,UAAU,EAAE,GAAG,GAAG,UAAU;IAmBvC,oBAAoB,CAAC,EAAE,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS;IAKnE,OAAO,IAAI,QAAQ,CAAC;QAAE,EAAE,EAAE,UAAU,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAE,CAAC;CASlF"}
@@ -39,6 +39,15 @@ class BatchedTileIdMap {
39
39
  const props = this._idMap?.get(id);
40
40
  return typeof props === "object" ? props : undefined;
41
41
  }
42
+ *entries() {
43
+ if (this._idMap) {
44
+ for (const [id, properties] of this._idMap) {
45
+ if (typeof properties === "object") {
46
+ yield { id, properties };
47
+ }
48
+ }
49
+ }
50
+ }
42
51
  }
43
52
  exports.BatchedTileIdMap = BatchedTileIdMap;
44
53
  //# sourceMappingURL=BatchedTileIdMap.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BatchedTileIdMap.js","sourceRoot":"","sources":["../../../src/tile/BatchedTileIdMap.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAAyD;AAGzD;;;;GAIG;AACH,MAAa,gBAAgB;IAK3B,YAAmB,MAAwB;QACzC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAED,gGAAgG;IACzF,UAAU,CAAC,UAAe;QAC/B,IAAI,SAAS,KAAK,IAAI,CAAC,WAAW,IAAI,SAAS,KAAK,IAAI,CAAC,MAAM,EAAE;YAC/D,IAAA,qBAAM,EAAC,SAAS,KAAK,IAAI,CAAC,WAAW,IAAI,SAAS,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC;YACpE,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,EAA+C,CAAC;YAC1E,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,EAAmB,CAAC;SAC1C;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACvC,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,SAAS,KAAK,KAAK,EAAE;YACvB,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;YAC/C,KAAK,GAAG,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC;YAC3B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;SACjC;QAED,OAAO,KAAK,CAAC,EAAE,CAAC;IAClB,CAAC;IAEM,oBAAoB,CAAC,EAAc;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACvD,CAAC;CACF;AAjCD,4CAiCC","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, Id64String } from \"@itwin/core-bentley\";\r\nimport { IModelConnection } from \"../IModelConnection\";\r\n\r\n/**\r\n * Mapping between transient IDs assigned to 3D tiles \"features\" and batch table properties (and visa versa).\r\n * these properties may be present in batched tile sets.\r\n * @internal\r\n */\r\nexport class BatchedTileIdMap {\r\n private readonly _iModel: IModelConnection;\r\n private _featureMap?: Map<string, { id: Id64String, properties: any }>;\r\n private _idMap?: Map<Id64String, any>;\r\n\r\n public constructor(iModel: IModelConnection) {\r\n this._iModel = iModel;\r\n }\r\n\r\n /** Obtains or allocates the Id64String corresponding to the supplied set of JSON properties. */\r\n public getBatchId(properties: any): Id64String {\r\n if (undefined === this._featureMap || undefined === this._idMap) {\r\n assert(undefined === this._featureMap && undefined === this._idMap);\r\n this._featureMap = new Map<string, { id: Id64String, properties: any }>();\r\n this._idMap = new Map<Id64String, any>();\r\n }\r\n\r\n const key = JSON.stringify(properties);\r\n let entry = this._featureMap.get(key);\r\n if (undefined === entry) {\r\n const id = this._iModel.transientIds.getNext();\r\n entry = { id, properties };\r\n this._featureMap.set(key, entry);\r\n this._idMap.set(id, properties);\r\n }\r\n\r\n return entry.id;\r\n }\r\n\r\n public getFeatureProperties(id: Id64String): Record<string, any> | undefined {\r\n const props = this._idMap?.get(id);\r\n return typeof props === \"object\" ? props : undefined;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"BatchedTileIdMap.js","sourceRoot":"","sources":["../../../src/tile/BatchedTileIdMap.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAAyD;AAIzD;;;;GAIG;AACH,MAAa,gBAAgB;IAK3B,YAAmB,MAAwB;QACzC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAED,gGAAgG;IACzF,UAAU,CAAC,UAAe;QAC/B,IAAI,SAAS,KAAK,IAAI,CAAC,WAAW,IAAI,SAAS,KAAK,IAAI,CAAC,MAAM,EAAE;YAC/D,IAAA,qBAAM,EAAC,SAAS,KAAK,IAAI,CAAC,WAAW,IAAI,SAAS,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC;YACpE,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,EAA+C,CAAC;YAC1E,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,EAAmB,CAAC;SAC1C;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACvC,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,SAAS,KAAK,KAAK,EAAE;YACvB,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;YAC/C,KAAK,GAAG,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC;YAC3B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;SACjC;QAED,OAAO,KAAK,CAAC,EAAE,CAAC;IAClB,CAAC;IAEM,oBAAoB,CAAC,EAAc;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACvD,CAAC;IAEM,CAAE,OAAO;QACd,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,KAAK,MAAM,CAAC,EAAE,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;gBAC1C,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;oBAClC,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC;iBAC1B;aACF;SACF;IACH,CAAC;CACF;AA3CD,4CA2CC","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, Id64String } from \"@itwin/core-bentley\";\r\nimport { IModelConnection } from \"../IModelConnection\";\r\nimport { BatchTableProperties } from \"./internal\";\r\n\r\n/**\r\n * Mapping between transient IDs assigned to 3D tiles \"features\" and batch table properties (and visa versa).\r\n * these properties may be present in batched tile sets.\r\n * @internal\r\n */\r\nexport class BatchedTileIdMap implements BatchTableProperties {\r\n private readonly _iModel: IModelConnection;\r\n private _featureMap?: Map<string, { id: Id64String, properties: any }>;\r\n private _idMap?: Map<Id64String, any>;\r\n\r\n public constructor(iModel: IModelConnection) {\r\n this._iModel = iModel;\r\n }\r\n\r\n /** Obtains or allocates the Id64String corresponding to the supplied set of JSON properties. */\r\n public getBatchId(properties: any): Id64String {\r\n if (undefined === this._featureMap || undefined === this._idMap) {\r\n assert(undefined === this._featureMap && undefined === this._idMap);\r\n this._featureMap = new Map<string, { id: Id64String, properties: any }>();\r\n this._idMap = new Map<Id64String, any>();\r\n }\r\n\r\n const key = JSON.stringify(properties);\r\n let entry = this._featureMap.get(key);\r\n if (undefined === entry) {\r\n const id = this._iModel.transientIds.getNext();\r\n entry = { id, properties };\r\n this._featureMap.set(key, entry);\r\n this._idMap.set(id, properties);\r\n }\r\n\r\n return entry.id;\r\n }\r\n\r\n public getFeatureProperties(id: Id64String): Record<string, any> | undefined {\r\n const props = this._idMap?.get(id);\r\n return typeof props === \"object\" ? props : undefined;\r\n }\r\n\r\n public * entries(): Iterable<{ id: Id64String, properties: Record<string, any> }> {\r\n if (this._idMap) {\r\n for (const [id, properties] of this._idMap) {\r\n if (typeof properties === \"object\") {\r\n yield { id, properties };\r\n }\r\n }\r\n }\r\n }\r\n}\r\n"]}