@itwin/core-frontend 5.0.0-dev.4 → 5.0.0-dev.41
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.
- package/CHANGELOG.md +42 -1
- package/lib/cjs/AccuDraw.d.ts +63 -8
- package/lib/cjs/AccuDraw.d.ts.map +1 -1
- package/lib/cjs/AccuDraw.js +118 -16
- package/lib/cjs/AccuDraw.js.map +1 -1
- package/lib/cjs/ApproximateTerrainHeights.js +1 -1
- package/lib/cjs/ApproximateTerrainHeights.js.map +1 -1
- package/lib/cjs/BackgroundMapGeometry.js +5 -5
- package/lib/cjs/BackgroundMapGeometry.js.map +1 -1
- package/lib/cjs/BriefcaseTxns.d.ts +2 -2
- package/lib/cjs/BriefcaseTxns.d.ts.map +1 -1
- package/lib/cjs/BriefcaseTxns.js.map +1 -1
- package/lib/cjs/DrawingViewState.js +9 -9
- package/lib/cjs/DrawingViewState.js.map +1 -1
- package/lib/cjs/GraphicalEditingScope.js +5 -5
- package/lib/cjs/GraphicalEditingScope.js.map +1 -1
- package/lib/cjs/IModelApp.d.ts.map +1 -1
- package/lib/cjs/IModelApp.js +62 -64
- package/lib/cjs/IModelApp.js.map +1 -1
- package/lib/cjs/IModelConnection.d.ts +4 -1
- package/lib/cjs/IModelConnection.d.ts.map +1 -1
- package/lib/cjs/IModelConnection.js +24 -21
- package/lib/cjs/IModelConnection.js.map +1 -1
- package/lib/cjs/IModelRoutingContext.d.ts +0 -3
- package/lib/cjs/IModelRoutingContext.d.ts.map +1 -1
- package/lib/cjs/IModelRoutingContext.js +5 -4
- package/lib/cjs/IModelRoutingContext.js.map +1 -1
- package/lib/cjs/IpcApp.d.ts.map +1 -1
- package/lib/cjs/IpcApp.js +4 -3
- package/lib/cjs/IpcApp.js.map +1 -1
- package/lib/cjs/LocalhostIpcApp.js +1 -1
- package/lib/cjs/LocalhostIpcApp.js.map +1 -1
- package/lib/cjs/NativeApp.js +15 -17
- package/lib/cjs/NativeApp.js.map +1 -1
- package/lib/cjs/NativeAppLogger.js +1 -1
- package/lib/cjs/NativeAppLogger.js.map +1 -1
- package/lib/cjs/NoRenderApp.js +1 -1
- package/lib/cjs/NoRenderApp.js.map +1 -1
- package/lib/cjs/RealityDataSourceTilesetUrlImpl.d.ts +6 -1
- package/lib/cjs/RealityDataSourceTilesetUrlImpl.d.ts.map +1 -1
- package/lib/cjs/RealityDataSourceTilesetUrlImpl.js +14 -2
- package/lib/cjs/RealityDataSourceTilesetUrlImpl.js.map +1 -1
- package/lib/cjs/SelectionSet.d.ts +84 -35
- package/lib/cjs/SelectionSet.d.ts.map +1 -1
- package/lib/cjs/SelectionSet.js +419 -163
- package/lib/cjs/SelectionSet.js.map +1 -1
- package/lib/cjs/Sprites.js +1 -1
- package/lib/cjs/Sprites.js.map +1 -1
- package/lib/cjs/ViewCreator2d.js +3 -3
- package/lib/cjs/ViewCreator2d.js.map +1 -1
- package/lib/cjs/ViewGlobalLocation.js +5 -5
- package/lib/cjs/ViewGlobalLocation.js.map +1 -1
- package/lib/cjs/ViewState.js +2 -2
- package/lib/cjs/ViewState.js.map +1 -1
- package/lib/cjs/ViewingSpace.js +9 -9
- package/lib/cjs/ViewingSpace.js.map +1 -1
- package/lib/cjs/Viewport.js +41 -41
- package/lib/cjs/Viewport.js.map +1 -1
- package/lib/cjs/common/imdl/ImdlSchema.d.ts +4 -0
- package/lib/cjs/common/imdl/ImdlSchema.d.ts.map +1 -1
- package/lib/cjs/common/imdl/ImdlSchema.js.map +1 -1
- package/lib/cjs/common/imdl/ParseImdlDocument.d.ts +1 -1
- package/lib/cjs/common/imdl/ParseImdlDocument.d.ts.map +1 -1
- package/lib/cjs/common/imdl/ParseImdlDocument.js +80 -7
- package/lib/cjs/common/imdl/ParseImdlDocument.js.map +1 -1
- package/lib/cjs/common/internal/render/DisplayParams.js +1 -1
- package/lib/cjs/common/internal/render/DisplayParams.js.map +1 -1
- package/lib/cjs/common/internal/render/GraphicDescriptionBuilderImpl.js +1 -1
- package/lib/cjs/common/internal/render/GraphicDescriptionBuilderImpl.js.map +1 -1
- package/lib/cjs/common/internal/render/GraphicDescriptionContextImpl.js +1 -1
- package/lib/cjs/common/internal/render/GraphicDescriptionContextImpl.js.map +1 -1
- package/lib/cjs/common/internal/render/MeshPrimitives.js +1 -1
- package/lib/cjs/common/internal/render/MeshPrimitives.js.map +1 -1
- package/lib/cjs/internal/render/PrimitiveBuilder.js +1 -1
- package/lib/cjs/internal/render/PrimitiveBuilder.js.map +1 -1
- package/lib/cjs/internal/render/RenderInstancesParamsImpl.js +1 -1
- package/lib/cjs/internal/render/RenderInstancesParamsImpl.js.map +1 -1
- package/lib/cjs/render/MockRender.js +3 -3
- package/lib/cjs/render/MockRender.js.map +1 -1
- package/lib/cjs/render/webgl/BackgroundMapDrape.js +1 -1
- package/lib/cjs/render/webgl/BackgroundMapDrape.js.map +1 -1
- package/lib/cjs/render/webgl/BatchState.js +1 -1
- package/lib/cjs/render/webgl/BatchState.js.map +1 -1
- package/lib/cjs/render/webgl/ColorInfo.js +2 -2
- package/lib/cjs/render/webgl/ColorInfo.js.map +1 -1
- package/lib/cjs/render/webgl/Diagnostics.js +4 -4
- package/lib/cjs/render/webgl/Diagnostics.js.map +1 -1
- package/lib/cjs/render/webgl/DrawCommand.js +4 -4
- package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
- package/lib/cjs/render/webgl/IModelFrameLifecycle.js +4 -4
- package/lib/cjs/render/webgl/IModelFrameLifecycle.js.map +1 -1
- package/lib/cjs/render/webgl/InstancedGeometry.js +3 -3
- package/lib/cjs/render/webgl/InstancedGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/Material.js +4 -4
- package/lib/cjs/render/webgl/Material.js.map +1 -1
- package/lib/cjs/render/webgl/PlanarClassifier.js +1 -1
- package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
- package/lib/cjs/render/webgl/PlanarTextureProjection.js +1 -1
- package/lib/cjs/render/webgl/PlanarTextureProjection.js.map +1 -1
- package/lib/cjs/render/webgl/RenderState.js +1 -1
- package/lib/cjs/render/webgl/RenderState.js.map +1 -1
- package/lib/cjs/render/webgl/Target.js +1 -1
- package/lib/cjs/render/webgl/Target.js.map +1 -1
- package/lib/cjs/render/webgl/Technique.js +39 -39
- package/lib/cjs/render/webgl/Technique.js.map +1 -1
- package/lib/cjs/render/webgl/TechniqueFlags.js +1 -1
- package/lib/cjs/render/webgl/TechniqueFlags.js.map +1 -1
- package/lib/cjs/render/webgl/Texture.js +3 -3
- package/lib/cjs/render/webgl/Texture.js.map +1 -1
- package/lib/cjs/tile/CesiumAssetProvider.js +1 -1
- package/lib/cjs/tile/CesiumAssetProvider.js.map +1 -1
- package/lib/cjs/tile/GltfReader.d.ts +6 -1
- package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
- package/lib/cjs/tile/GltfReader.js +79 -2
- package/lib/cjs/tile/GltfReader.js.map +1 -1
- package/lib/cjs/tile/ImdlParser.js +2 -2
- package/lib/cjs/tile/ImdlParser.js.map +1 -1
- package/lib/cjs/tile/ImdlReader.js +1 -1
- package/lib/cjs/tile/ImdlReader.js.map +1 -1
- package/lib/cjs/tile/MeshoptCompression.d.ts +9 -0
- package/lib/cjs/tile/MeshoptCompression.d.ts.map +1 -1
- package/lib/cjs/tile/MeshoptCompression.js +98 -66
- package/lib/cjs/tile/MeshoptCompression.js.map +1 -1
- package/lib/cjs/tile/map/ArcGISTileMap.js +1 -1
- package/lib/cjs/tile/map/ArcGISTileMap.js.map +1 -1
- package/lib/cjs/tile/map/ArcGisUtilities.js +1 -1
- package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
- package/lib/cjs/tile/map/CesiumTerrainProvider.js +6 -6
- package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +2 -2
- package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js +5 -2
- package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js +2 -2
- package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryTileTree.js +2 -2
- package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryFormats.js +7 -7
- package/lib/cjs/tile/map/MapLayerImageryFormats.js.map +1 -1
- package/lib/cjs/tile/map/MapTile.js +8 -8
- package/lib/cjs/tile/map/MapTile.js.map +1 -1
- package/lib/cjs/tile/map/MapTileAvailability.js +1 -1
- package/lib/cjs/tile/map/MapTileAvailability.js.map +1 -1
- package/lib/cjs/tile/map/MapTileTree.js +9 -9
- package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
- package/lib/cjs/tile/map/MapTilingScheme.js +1 -1
- package/lib/cjs/tile/map/MapTilingScheme.js.map +1 -1
- package/lib/cjs/tile/map/WmsCapabilities.js +2 -2
- package/lib/cjs/tile/map/WmsCapabilities.js.map +1 -1
- package/lib/cjs/tile/map/WmtsCapabilities.js +1 -1
- package/lib/cjs/tile/map/WmtsCapabilities.js.map +1 -1
- package/lib/cjs/tools/AccuDrawTool.d.ts +1 -0
- package/lib/cjs/tools/AccuDrawTool.d.ts.map +1 -1
- package/lib/cjs/tools/AccuDrawTool.js +22 -21
- package/lib/cjs/tools/AccuDrawTool.js.map +1 -1
- package/lib/cjs/tools/ClipViewTool.js +40 -40
- package/lib/cjs/tools/ClipViewTool.js.map +1 -1
- package/lib/cjs/tools/EditManipulator.js +2 -2
- package/lib/cjs/tools/EditManipulator.js.map +1 -1
- package/lib/cjs/tools/ElementSetTool.d.ts.map +1 -1
- package/lib/cjs/tools/ElementSetTool.js +11 -4
- package/lib/cjs/tools/ElementSetTool.js.map +1 -1
- package/lib/cjs/tools/IdleTool.js +2 -2
- package/lib/cjs/tools/IdleTool.js.map +1 -1
- package/lib/cjs/tools/MeasureTool.d.ts.map +1 -1
- package/lib/cjs/tools/MeasureTool.js +39 -39
- package/lib/cjs/tools/MeasureTool.js.map +1 -1
- package/lib/cjs/tools/SelectTool.js +7 -7
- package/lib/cjs/tools/SelectTool.js.map +1 -1
- package/lib/cjs/tools/Tool.js +10 -10
- package/lib/cjs/tools/Tool.js.map +1 -1
- package/lib/cjs/tools/ToolAdmin.d.ts.map +1 -1
- package/lib/cjs/tools/ToolAdmin.js +36 -24
- package/lib/cjs/tools/ToolAdmin.js.map +1 -1
- package/lib/cjs/tools/ToolAssistance.js +19 -19
- package/lib/cjs/tools/ToolAssistance.js.map +1 -1
- package/lib/cjs/tools/ToolSettings.js +63 -63
- package/lib/cjs/tools/ToolSettings.js.map +1 -1
- package/lib/cjs/tools/ViewTool.js +37 -37
- package/lib/cjs/tools/ViewTool.js.map +1 -1
- package/lib/cjs/workers/ImdlParser/Worker.js +2 -2
- package/lib/cjs/workers/ImdlParser/Worker.js.map +1 -1
- package/lib/esm/AccuDraw.d.ts +63 -8
- package/lib/esm/AccuDraw.d.ts.map +1 -1
- package/lib/esm/AccuDraw.js +119 -17
- package/lib/esm/AccuDraw.js.map +1 -1
- package/lib/esm/ApproximateTerrainHeights.js +1 -1
- package/lib/esm/ApproximateTerrainHeights.js.map +1 -1
- package/lib/esm/BackgroundMapGeometry.js +5 -5
- package/lib/esm/BackgroundMapGeometry.js.map +1 -1
- package/lib/esm/BriefcaseTxns.d.ts +2 -2
- package/lib/esm/BriefcaseTxns.d.ts.map +1 -1
- package/lib/esm/BriefcaseTxns.js.map +1 -1
- package/lib/esm/DrawingViewState.js +9 -9
- package/lib/esm/DrawingViewState.js.map +1 -1
- package/lib/esm/GraphicalEditingScope.js +5 -5
- package/lib/esm/GraphicalEditingScope.js.map +1 -1
- package/lib/esm/IModelApp.d.ts.map +1 -1
- package/lib/esm/IModelApp.js +63 -65
- package/lib/esm/IModelApp.js.map +1 -1
- package/lib/esm/IModelConnection.d.ts +4 -1
- package/lib/esm/IModelConnection.d.ts.map +1 -1
- package/lib/esm/IModelConnection.js +20 -17
- package/lib/esm/IModelConnection.js.map +1 -1
- package/lib/esm/IModelRoutingContext.d.ts +0 -3
- package/lib/esm/IModelRoutingContext.d.ts.map +1 -1
- package/lib/esm/IModelRoutingContext.js +3 -2
- package/lib/esm/IModelRoutingContext.js.map +1 -1
- package/lib/esm/IpcApp.d.ts.map +1 -1
- package/lib/esm/IpcApp.js +4 -3
- package/lib/esm/IpcApp.js.map +1 -1
- package/lib/esm/LocalhostIpcApp.js +1 -1
- package/lib/esm/LocalhostIpcApp.js.map +1 -1
- package/lib/esm/NativeApp.js +15 -17
- package/lib/esm/NativeApp.js.map +1 -1
- package/lib/esm/NativeAppLogger.js +1 -1
- package/lib/esm/NativeAppLogger.js.map +1 -1
- package/lib/esm/NoRenderApp.js +1 -1
- package/lib/esm/NoRenderApp.js.map +1 -1
- package/lib/esm/RealityDataSourceTilesetUrlImpl.d.ts +6 -1
- package/lib/esm/RealityDataSourceTilesetUrlImpl.d.ts.map +1 -1
- package/lib/esm/RealityDataSourceTilesetUrlImpl.js +14 -2
- package/lib/esm/RealityDataSourceTilesetUrlImpl.js.map +1 -1
- package/lib/esm/SelectionSet.d.ts +84 -35
- package/lib/esm/SelectionSet.d.ts.map +1 -1
- package/lib/esm/SelectionSet.js +418 -162
- package/lib/esm/SelectionSet.js.map +1 -1
- package/lib/esm/Sprites.js +1 -1
- package/lib/esm/Sprites.js.map +1 -1
- package/lib/esm/ViewCreator2d.js +3 -3
- package/lib/esm/ViewCreator2d.js.map +1 -1
- package/lib/esm/ViewGlobalLocation.js +5 -5
- package/lib/esm/ViewGlobalLocation.js.map +1 -1
- package/lib/esm/ViewState.js +2 -2
- package/lib/esm/ViewState.js.map +1 -1
- package/lib/esm/ViewingSpace.js +9 -9
- package/lib/esm/ViewingSpace.js.map +1 -1
- package/lib/esm/Viewport.js +41 -41
- package/lib/esm/Viewport.js.map +1 -1
- package/lib/esm/common/imdl/ImdlSchema.d.ts +4 -0
- package/lib/esm/common/imdl/ImdlSchema.d.ts.map +1 -1
- package/lib/esm/common/imdl/ImdlSchema.js.map +1 -1
- package/lib/esm/common/imdl/ParseImdlDocument.d.ts +1 -1
- package/lib/esm/common/imdl/ParseImdlDocument.d.ts.map +1 -1
- package/lib/esm/common/imdl/ParseImdlDocument.js +80 -7
- package/lib/esm/common/imdl/ParseImdlDocument.js.map +1 -1
- package/lib/esm/common/internal/render/DisplayParams.js +1 -1
- package/lib/esm/common/internal/render/DisplayParams.js.map +1 -1
- package/lib/esm/common/internal/render/GraphicDescriptionBuilderImpl.js +1 -1
- package/lib/esm/common/internal/render/GraphicDescriptionBuilderImpl.js.map +1 -1
- package/lib/esm/common/internal/render/GraphicDescriptionContextImpl.js +1 -1
- package/lib/esm/common/internal/render/GraphicDescriptionContextImpl.js.map +1 -1
- package/lib/esm/common/internal/render/MeshPrimitives.js +2 -2
- package/lib/esm/common/internal/render/MeshPrimitives.js.map +1 -1
- package/lib/esm/internal/render/PrimitiveBuilder.js +1 -1
- package/lib/esm/internal/render/PrimitiveBuilder.js.map +1 -1
- package/lib/esm/internal/render/RenderInstancesParamsImpl.js +1 -1
- package/lib/esm/internal/render/RenderInstancesParamsImpl.js.map +1 -1
- package/lib/esm/render/MockRender.js +3 -3
- package/lib/esm/render/MockRender.js.map +1 -1
- package/lib/esm/render/webgl/BackgroundMapDrape.js +1 -1
- package/lib/esm/render/webgl/BackgroundMapDrape.js.map +1 -1
- package/lib/esm/render/webgl/BatchState.js +1 -1
- package/lib/esm/render/webgl/BatchState.js.map +1 -1
- package/lib/esm/render/webgl/ColorInfo.js +2 -2
- package/lib/esm/render/webgl/ColorInfo.js.map +1 -1
- package/lib/esm/render/webgl/Diagnostics.js +4 -4
- package/lib/esm/render/webgl/Diagnostics.js.map +1 -1
- package/lib/esm/render/webgl/DrawCommand.js +4 -4
- package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
- package/lib/esm/render/webgl/IModelFrameLifecycle.js +4 -4
- package/lib/esm/render/webgl/IModelFrameLifecycle.js.map +1 -1
- package/lib/esm/render/webgl/InstancedGeometry.js +3 -3
- package/lib/esm/render/webgl/InstancedGeometry.js.map +1 -1
- package/lib/esm/render/webgl/Material.js +4 -4
- package/lib/esm/render/webgl/Material.js.map +1 -1
- package/lib/esm/render/webgl/PlanarClassifier.js +1 -1
- package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
- package/lib/esm/render/webgl/PlanarTextureProjection.js +1 -1
- package/lib/esm/render/webgl/PlanarTextureProjection.js.map +1 -1
- package/lib/esm/render/webgl/RenderState.js +1 -1
- package/lib/esm/render/webgl/RenderState.js.map +1 -1
- package/lib/esm/render/webgl/Target.js +1 -1
- package/lib/esm/render/webgl/Target.js.map +1 -1
- package/lib/esm/render/webgl/Technique.js +39 -39
- package/lib/esm/render/webgl/Technique.js.map +1 -1
- package/lib/esm/render/webgl/TechniqueFlags.js +1 -1
- package/lib/esm/render/webgl/TechniqueFlags.js.map +1 -1
- package/lib/esm/render/webgl/Texture.js +3 -3
- package/lib/esm/render/webgl/Texture.js.map +1 -1
- package/lib/esm/tile/CesiumAssetProvider.js +1 -1
- package/lib/esm/tile/CesiumAssetProvider.js.map +1 -1
- package/lib/esm/tile/GltfReader.d.ts +6 -1
- package/lib/esm/tile/GltfReader.d.ts.map +1 -1
- package/lib/esm/tile/GltfReader.js +79 -2
- package/lib/esm/tile/GltfReader.js.map +1 -1
- package/lib/esm/tile/ImdlParser.js +2 -2
- package/lib/esm/tile/ImdlParser.js.map +1 -1
- package/lib/esm/tile/ImdlReader.js +1 -1
- package/lib/esm/tile/ImdlReader.js.map +1 -1
- package/lib/esm/tile/MeshoptCompression.d.ts +9 -0
- package/lib/esm/tile/MeshoptCompression.d.ts.map +1 -1
- package/lib/esm/tile/MeshoptCompression.js +98 -44
- package/lib/esm/tile/MeshoptCompression.js.map +1 -1
- package/lib/esm/tile/map/ArcGISTileMap.js +1 -1
- package/lib/esm/tile/map/ArcGISTileMap.js.map +1 -1
- package/lib/esm/tile/map/ArcGisUtilities.js +1 -1
- package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
- package/lib/esm/tile/map/CesiumTerrainProvider.js +6 -6
- package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +2 -2
- package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js +5 -2
- package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js +2 -2
- package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryTileTree.js +2 -2
- package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryFormats.js +7 -7
- package/lib/esm/tile/map/MapLayerImageryFormats.js.map +1 -1
- package/lib/esm/tile/map/MapTile.js +8 -8
- package/lib/esm/tile/map/MapTile.js.map +1 -1
- package/lib/esm/tile/map/MapTileAvailability.js +1 -1
- package/lib/esm/tile/map/MapTileAvailability.js.map +1 -1
- package/lib/esm/tile/map/MapTileTree.js +9 -9
- package/lib/esm/tile/map/MapTileTree.js.map +1 -1
- package/lib/esm/tile/map/MapTilingScheme.js +1 -1
- package/lib/esm/tile/map/MapTilingScheme.js.map +1 -1
- package/lib/esm/tile/map/WmsCapabilities.js +2 -2
- package/lib/esm/tile/map/WmsCapabilities.js.map +1 -1
- package/lib/esm/tile/map/WmtsCapabilities.js +1 -1
- package/lib/esm/tile/map/WmtsCapabilities.js.map +1 -1
- package/lib/esm/tools/AccuDrawTool.d.ts +1 -0
- package/lib/esm/tools/AccuDrawTool.d.ts.map +1 -1
- package/lib/esm/tools/AccuDrawTool.js +22 -21
- package/lib/esm/tools/AccuDrawTool.js.map +1 -1
- package/lib/esm/tools/ClipViewTool.js +40 -40
- package/lib/esm/tools/ClipViewTool.js.map +1 -1
- package/lib/esm/tools/EditManipulator.js +2 -2
- package/lib/esm/tools/EditManipulator.js.map +1 -1
- package/lib/esm/tools/ElementSetTool.d.ts.map +1 -1
- package/lib/esm/tools/ElementSetTool.js +11 -4
- package/lib/esm/tools/ElementSetTool.js.map +1 -1
- package/lib/esm/tools/IdleTool.js +2 -2
- package/lib/esm/tools/IdleTool.js.map +1 -1
- package/lib/esm/tools/MeasureTool.d.ts.map +1 -1
- package/lib/esm/tools/MeasureTool.js +40 -40
- package/lib/esm/tools/MeasureTool.js.map +1 -1
- package/lib/esm/tools/SelectTool.js +7 -7
- package/lib/esm/tools/SelectTool.js.map +1 -1
- package/lib/esm/tools/Tool.js +10 -10
- package/lib/esm/tools/Tool.js.map +1 -1
- package/lib/esm/tools/ToolAdmin.d.ts.map +1 -1
- package/lib/esm/tools/ToolAdmin.js +36 -24
- package/lib/esm/tools/ToolAdmin.js.map +1 -1
- package/lib/esm/tools/ToolAssistance.js +19 -19
- package/lib/esm/tools/ToolAssistance.js.map +1 -1
- package/lib/esm/tools/ToolSettings.js +63 -63
- package/lib/esm/tools/ToolSettings.js.map +1 -1
- package/lib/esm/tools/ViewTool.js +37 -37
- package/lib/esm/tools/ViewTool.js.map +1 -1
- package/lib/esm/workers/ImdlParser/Worker.js +2 -2
- package/lib/esm/workers/ImdlParser/Worker.js.map +1 -1
- package/lib/public/locales/en/CoreTools.json +1 -0
- package/lib/public/scripts/parse-imdl-worker.js +1 -1
- package/lib/workers/webpack/parse-imdl-worker.js +1 -1
- package/package.json +20 -21
package/lib/esm/SelectionSet.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*---------------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
-
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
-
*--------------------------------------------------------------------------------------------*/
|
|
2
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
5
|
/** @packageDocumentation
|
|
6
6
|
* @module SelectionSet
|
|
7
7
|
*/
|
|
@@ -13,85 +13,38 @@ import { IModelApp } from "./IModelApp";
|
|
|
13
13
|
*/
|
|
14
14
|
export var SelectionSetEventType;
|
|
15
15
|
(function (SelectionSetEventType) {
|
|
16
|
-
/**
|
|
16
|
+
/** Ids have been added to the set. */
|
|
17
17
|
SelectionSetEventType[SelectionSetEventType["Add"] = 0] = "Add";
|
|
18
|
-
/**
|
|
18
|
+
/** Ids have been removed from the set. */
|
|
19
19
|
SelectionSetEventType[SelectionSetEventType["Remove"] = 1] = "Remove";
|
|
20
|
-
/** Some
|
|
20
|
+
/** Some ids have been added to the set and others have been removed. */
|
|
21
21
|
SelectionSetEventType[SelectionSetEventType["Replace"] = 2] = "Replace";
|
|
22
|
-
/** All
|
|
22
|
+
/** All ids have been removed from the set. */
|
|
23
23
|
SelectionSetEventType[SelectionSetEventType["Clear"] = 3] = "Clear";
|
|
24
24
|
})(SelectionSetEventType || (SelectionSetEventType = {}));
|
|
25
|
-
/**
|
|
25
|
+
/** Holds a set of hilited entities and makes any changes to the set by passing the change
|
|
26
|
+
* function to given `change` callback.
|
|
26
27
|
* @internal
|
|
27
28
|
*/
|
|
28
29
|
class HilitedIds extends Id64.Uint32Set {
|
|
29
|
-
constructor(
|
|
30
|
+
constructor(_change) {
|
|
30
31
|
super();
|
|
31
|
-
this.
|
|
32
|
-
this._iModel = iModel;
|
|
32
|
+
this._change = _change;
|
|
33
33
|
}
|
|
34
34
|
add(low, high) {
|
|
35
|
-
super.add(low, high);
|
|
36
|
-
this.onChanged();
|
|
35
|
+
this._change(() => super.add(low, high));
|
|
37
36
|
}
|
|
38
37
|
delete(low, high) {
|
|
39
|
-
super.delete(low, high);
|
|
40
|
-
this.onChanged();
|
|
38
|
+
this._change(() => super.delete(low, high));
|
|
41
39
|
}
|
|
42
40
|
clear() {
|
|
43
|
-
super.clear();
|
|
44
|
-
this.onChanged();
|
|
41
|
+
this._change(() => super.clear());
|
|
45
42
|
}
|
|
46
43
|
addIds(ids) {
|
|
47
|
-
this.
|
|
44
|
+
this._change(() => super.addIds(ids));
|
|
48
45
|
}
|
|
49
46
|
deleteIds(ids) {
|
|
50
|
-
this.
|
|
51
|
-
}
|
|
52
|
-
onChanged() {
|
|
53
|
-
if (!this._changing)
|
|
54
|
-
IModelApp.viewManager.onSelectionSetChanged(this._iModel);
|
|
55
|
-
}
|
|
56
|
-
change(func) {
|
|
57
|
-
const changing = this._changing;
|
|
58
|
-
this._changing = false;
|
|
59
|
-
func();
|
|
60
|
-
this._changing = changing;
|
|
61
|
-
this.onChanged();
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
/** Keeps the set of hilited elements in sync with the selection set.
|
|
65
|
-
* @internal
|
|
66
|
-
*/
|
|
67
|
-
class HilitedElementIds extends HilitedIds {
|
|
68
|
-
constructor(iModel, syncWithSelectionSet = true) {
|
|
69
|
-
super(iModel);
|
|
70
|
-
this.wantSyncWithSelectionSet = syncWithSelectionSet;
|
|
71
|
-
}
|
|
72
|
-
get wantSyncWithSelectionSet() { return undefined !== this._removeListener; }
|
|
73
|
-
set wantSyncWithSelectionSet(want) {
|
|
74
|
-
if (want === this.wantSyncWithSelectionSet)
|
|
75
|
-
return;
|
|
76
|
-
if (want) {
|
|
77
|
-
const set = this._iModel.selectionSet;
|
|
78
|
-
this._removeListener = set.onChanged.addListener((ev) => this.change(() => this.processSelectionSetEvent(ev)));
|
|
79
|
-
this.processSelectionSetEvent({
|
|
80
|
-
set,
|
|
81
|
-
type: SelectionSetEventType.Add,
|
|
82
|
-
added: set.elements,
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
this._removeListener();
|
|
87
|
-
this._removeListener = undefined;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
processSelectionSetEvent(ev) {
|
|
91
|
-
if (SelectionSetEventType.Add !== ev.type)
|
|
92
|
-
this.deleteIds(ev.removed);
|
|
93
|
-
if (ev.type === SelectionSetEventType.Add || ev.type === SelectionSetEventType.Replace)
|
|
94
|
-
this.addIds(ev.added);
|
|
47
|
+
this._change(() => super.deleteIds(ids));
|
|
95
48
|
}
|
|
96
49
|
}
|
|
97
50
|
/** A set of *hilited* elements for an [[IModelConnection]], by element id.
|
|
@@ -113,8 +66,9 @@ class HilitedElementIds extends HilitedIds {
|
|
|
113
66
|
* @extensions
|
|
114
67
|
*/
|
|
115
68
|
export class HiliteSet {
|
|
116
|
-
|
|
117
|
-
|
|
69
|
+
#mode;
|
|
70
|
+
#selectionChangesListener;
|
|
71
|
+
#changing;
|
|
118
72
|
/** Controls how the sets of hilited [[models]] and [[subcategories]] interact with one another.
|
|
119
73
|
* By default they are treated as a union: a [Feature]($common) is hilited if either its model **or** its subcategory is hilited.
|
|
120
74
|
* This can be changed to an intersection such that a [Feature]($common) is hilited only if both its model **and** subcategory are hilited.
|
|
@@ -122,187 +76,489 @@ export class HiliteSet {
|
|
|
122
76
|
* [[elements]] is always hilited regardless of its model or subcategories.
|
|
123
77
|
*/
|
|
124
78
|
get modelSubCategoryMode() {
|
|
125
|
-
return this
|
|
79
|
+
return this.#mode;
|
|
126
80
|
}
|
|
127
81
|
set modelSubCategoryMode(mode) {
|
|
128
|
-
if (mode === this
|
|
82
|
+
if (mode === this.#mode) {
|
|
129
83
|
return;
|
|
84
|
+
}
|
|
130
85
|
this.onModelSubCategoryModeChanged.raiseEvent(mode);
|
|
131
|
-
this
|
|
86
|
+
this.#mode = mode;
|
|
132
87
|
}
|
|
133
88
|
/** Construct a HiliteSet
|
|
134
89
|
* @param iModel The iModel containing the entities to be hilited.
|
|
135
|
-
* @param syncWithSelectionSet If true, the
|
|
90
|
+
* @param syncWithSelectionSet If true, the hilite set contents will be synchronized with those in the `iModel`'s [[SelectionSet]].
|
|
136
91
|
*/
|
|
137
92
|
constructor(iModel, syncWithSelectionSet = true) {
|
|
138
93
|
this.iModel = iModel;
|
|
139
|
-
this
|
|
94
|
+
this.#mode = "union";
|
|
95
|
+
this.#changing = false;
|
|
140
96
|
/** Event raised just before changing the value of [[modelSubCategoryMode]]. */
|
|
141
97
|
this.onModelSubCategoryModeChanged = new BeEvent();
|
|
142
|
-
this.
|
|
143
|
-
this.subcategories = new HilitedIds(
|
|
144
|
-
this.models = new HilitedIds(
|
|
98
|
+
this.elements = new HilitedIds((func) => this.#change(func));
|
|
99
|
+
this.subcategories = new HilitedIds((func) => this.#change(func));
|
|
100
|
+
this.models = new HilitedIds((func) => this.#change(func));
|
|
101
|
+
this.wantSyncWithSelectionSet = syncWithSelectionSet;
|
|
145
102
|
}
|
|
146
|
-
/** Control whether the
|
|
103
|
+
/** Control whether the hilite set will be synchronized with the contents of the [[SelectionSet]].
|
|
147
104
|
* By default they are synchronized. Applications that override this take responsibility for managing the set of hilited entities.
|
|
148
105
|
* When turning synchronization off, the contents of the HiliteSet will remain unchanged.
|
|
149
106
|
* When turning synchronization on, the current contents of the HiliteSet will be preserved, and the contents of the selection set will be added to them.
|
|
150
107
|
*/
|
|
151
|
-
get wantSyncWithSelectionSet() {
|
|
152
|
-
|
|
108
|
+
get wantSyncWithSelectionSet() {
|
|
109
|
+
return !!this.#selectionChangesListener;
|
|
110
|
+
}
|
|
111
|
+
set wantSyncWithSelectionSet(want) {
|
|
112
|
+
if (want === this.wantSyncWithSelectionSet) {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
if (want) {
|
|
116
|
+
const set = this.iModel.selectionSet;
|
|
117
|
+
this.#selectionChangesListener = set.onChanged.addListener((ev) => this.#processSelectionSetEvent(ev));
|
|
118
|
+
this.add(set.active);
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
this.#selectionChangesListener();
|
|
122
|
+
this.#selectionChangesListener = undefined;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
#onChanged() {
|
|
126
|
+
if (!this.#changing) {
|
|
127
|
+
IModelApp.viewManager.onSelectionSetChanged(this.iModel);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
#change(func) {
|
|
131
|
+
const changing = this.#changing;
|
|
132
|
+
this.#changing = true;
|
|
133
|
+
try {
|
|
134
|
+
func();
|
|
135
|
+
}
|
|
136
|
+
finally {
|
|
137
|
+
this.#changing = changing;
|
|
138
|
+
}
|
|
139
|
+
this.#onChanged();
|
|
140
|
+
}
|
|
141
|
+
#processSelectionSetEvent(ev) {
|
|
142
|
+
switch (ev.type) {
|
|
143
|
+
case SelectionSetEventType.Add:
|
|
144
|
+
return this.add(ev.additions);
|
|
145
|
+
case SelectionSetEventType.Replace:
|
|
146
|
+
return this.#change(() => {
|
|
147
|
+
this.add(ev.additions);
|
|
148
|
+
this.remove(ev.removals);
|
|
149
|
+
});
|
|
150
|
+
case SelectionSetEventType.Remove:
|
|
151
|
+
case SelectionSetEventType.Clear:
|
|
152
|
+
return this.remove(ev.removals);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/** Adds a collection of geometric element, model and subcategory ids to this hilite set. */
|
|
156
|
+
add(additions) {
|
|
157
|
+
this.#change(() => {
|
|
158
|
+
additions.elements && this.elements.addIds(additions.elements);
|
|
159
|
+
additions.models && this.models.addIds(additions.models);
|
|
160
|
+
additions.subcategories && this.subcategories.addIds(additions.subcategories);
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
/** Removes a collection of geometric element, model and subcategory ids from this hilite set. */
|
|
164
|
+
remove(removals) {
|
|
165
|
+
this.#change(() => {
|
|
166
|
+
removals.elements && this.elements.deleteIds(removals.elements);
|
|
167
|
+
removals.models && this.models.deleteIds(removals.models);
|
|
168
|
+
removals.subcategories && this.subcategories.deleteIds(removals.subcategories);
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
/** Replaces ids currently in the hilite set with the given collection. */
|
|
172
|
+
replace(ids) {
|
|
173
|
+
this.#change(() => {
|
|
174
|
+
this.clear();
|
|
175
|
+
this.add(ids);
|
|
176
|
+
});
|
|
177
|
+
}
|
|
153
178
|
/** Remove all elements from the hilited set. */
|
|
154
179
|
clear() {
|
|
155
|
-
this
|
|
156
|
-
|
|
157
|
-
|
|
180
|
+
this.#change(() => {
|
|
181
|
+
this.elements.clear();
|
|
182
|
+
this.models.clear();
|
|
183
|
+
this.subcategories.clear();
|
|
184
|
+
});
|
|
158
185
|
}
|
|
159
186
|
/** Returns true if nothing is hilited. */
|
|
160
|
-
get isEmpty() {
|
|
187
|
+
get isEmpty() {
|
|
188
|
+
return this.elements.isEmpty && this.subcategories.isEmpty && this.models.isEmpty;
|
|
189
|
+
}
|
|
161
190
|
/** Toggle the hilited state of one or more elements.
|
|
162
191
|
* @param arg the ID(s) of the elements whose state is to be toggled.
|
|
163
192
|
* @param onOff True to add the elements to the hilited set, false to remove them.
|
|
193
|
+
* @deprecated in 5.0. Use [[add]], [[remove]], [[replace]] instead.
|
|
164
194
|
*/
|
|
165
195
|
setHilite(arg, onOff) {
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
this.elements.deleteId(id);
|
|
196
|
+
if (onOff) {
|
|
197
|
+
this.add({ elements: arg });
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
this.remove({ elements: arg });
|
|
172
201
|
}
|
|
173
|
-
if (oldSize !== this.elements.size)
|
|
174
|
-
IModelApp.viewManager.onSelectionSetChanged(this.iModel);
|
|
175
202
|
}
|
|
176
203
|
}
|
|
177
|
-
/** A set of *currently selected* elements for an IModelConnection
|
|
178
|
-
*
|
|
204
|
+
/** A set of *currently selected* geometric elements, models and subcategories for an `IModelConnection`.
|
|
205
|
+
* Generally, selected elements are displayed with a customizable hilite effect within a [[Viewport]], see [[HiliteSet]].
|
|
179
206
|
* @see [Hilite.Settings]($common) for customization of the hilite effect.
|
|
180
207
|
* @public
|
|
181
208
|
* @extensions
|
|
182
209
|
*/
|
|
183
210
|
export class SelectionSet {
|
|
211
|
+
#selection;
|
|
184
212
|
/** The IDs of the selected elements.
|
|
185
213
|
* @note Do not modify this set directly. Instead, use methods like [[SelectionSet.add]].
|
|
186
214
|
*/
|
|
187
|
-
get elements() {
|
|
215
|
+
get elements() {
|
|
216
|
+
return this.#selection.elements;
|
|
217
|
+
}
|
|
218
|
+
/** The IDs of the selected models.
|
|
219
|
+
* @note Do not modify this set directly. Instead, use methods like [[SelectionSet.add]].
|
|
220
|
+
*/
|
|
221
|
+
get models() {
|
|
222
|
+
return this.#selection.models;
|
|
223
|
+
}
|
|
224
|
+
/** The IDs of the selected subcategories.
|
|
225
|
+
* @note Do not modify this set directly. Instead, use methods like [[SelectionSet.add]].
|
|
226
|
+
*/
|
|
227
|
+
get subcategories() {
|
|
228
|
+
return this.#selection.subcategories;
|
|
229
|
+
}
|
|
230
|
+
/** Get the active selection as a collection of geometric element, model and subcategory ids.
|
|
231
|
+
* @note Do not modify the sets in returned collection directly. Instead, use methods like [[SelectionSet.add]].
|
|
232
|
+
*/
|
|
233
|
+
get active() {
|
|
234
|
+
return { ...this.#selection };
|
|
235
|
+
}
|
|
188
236
|
constructor(iModel) {
|
|
189
237
|
this.iModel = iModel;
|
|
190
|
-
this
|
|
191
|
-
/** Called whenever elements are added or removed from this SelectionSet */
|
|
238
|
+
/** Called whenever ids are added or removed from this `SelectionSet` */
|
|
192
239
|
this.onChanged = new BeEvent();
|
|
240
|
+
this.#selection = {
|
|
241
|
+
elements: new Set(),
|
|
242
|
+
models: new Set(),
|
|
243
|
+
subcategories: new Set(),
|
|
244
|
+
};
|
|
193
245
|
}
|
|
194
|
-
sendChangedEvent(ev) {
|
|
246
|
+
#sendChangedEvent(ev) {
|
|
195
247
|
IModelApp.viewManager.onSelectionSetChanged(this.iModel);
|
|
196
248
|
this.onChanged.raiseEvent(ev);
|
|
197
249
|
}
|
|
198
250
|
/** Get the number of entries in this selection set. */
|
|
199
|
-
get size() {
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
/**
|
|
251
|
+
get size() {
|
|
252
|
+
return this.elements.size + this.models.size + this.subcategories.size;
|
|
253
|
+
}
|
|
254
|
+
/** Check whether there are any ids in this selection set. */
|
|
255
|
+
get isActive() {
|
|
256
|
+
return this.elements.size > 0 || this.models.size > 0 || this.subcategories.size > 0;
|
|
257
|
+
}
|
|
258
|
+
/** Return true if elemId is in this `SelectionSet`.
|
|
203
259
|
* @see [[isSelected]]
|
|
260
|
+
* @deprecated in 5.0. Use `SelectionSet.elements.has(elemId)` instead.
|
|
204
261
|
*/
|
|
205
|
-
has(elemId) {
|
|
262
|
+
has(elemId) {
|
|
263
|
+
return !!elemId && this.elements.has(elemId);
|
|
264
|
+
}
|
|
206
265
|
/** Query whether an Id is in the selection set.
|
|
207
266
|
* @see [[has]]
|
|
267
|
+
* @deprecated in 5.0. Use `SelectionSet.elements.has(elemId)` instead.
|
|
208
268
|
*/
|
|
209
|
-
isSelected(elemId) {
|
|
269
|
+
isSelected(elemId) {
|
|
270
|
+
return !!elemId && this.elements.has(elemId);
|
|
271
|
+
}
|
|
210
272
|
/** Clear current selection set.
|
|
211
273
|
* @note raises the [[onChanged]] event with [[SelectionSetEventType.Clear]].
|
|
212
274
|
*/
|
|
213
275
|
emptyAll() {
|
|
214
|
-
if (!this.isActive)
|
|
276
|
+
if (!this.isActive) {
|
|
215
277
|
return;
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
this
|
|
278
|
+
}
|
|
279
|
+
const removals = this.#selection;
|
|
280
|
+
this.#selection = {
|
|
281
|
+
elements: new Set(),
|
|
282
|
+
models: new Set(),
|
|
283
|
+
subcategories: new Set(),
|
|
284
|
+
};
|
|
285
|
+
this.#sendChangedEvent({ set: this, type: SelectionSetEventType.Clear, removals, removed: removals.elements });
|
|
219
286
|
}
|
|
220
287
|
/**
|
|
221
288
|
* Add one or more Ids to the current selection set.
|
|
222
289
|
* @param elem The set of Ids to add.
|
|
223
290
|
* @returns true if any elements were added.
|
|
224
291
|
*/
|
|
225
|
-
add(
|
|
226
|
-
return this
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
const oldSize = this.
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
292
|
+
add(adds) {
|
|
293
|
+
return !!this.#add(adds);
|
|
294
|
+
}
|
|
295
|
+
#add(adds, sendEvent = true) {
|
|
296
|
+
const oldSize = this.size;
|
|
297
|
+
const additions = {};
|
|
298
|
+
forEachSelectableType({
|
|
299
|
+
ids: adds,
|
|
300
|
+
elements: (elementIds) => addIds({
|
|
301
|
+
target: this.#selection.elements,
|
|
302
|
+
ids: elementIds,
|
|
303
|
+
onAdd: (id) => (additions.elements ??= []).push(id),
|
|
304
|
+
}),
|
|
305
|
+
models: (modelIds) => addIds({
|
|
306
|
+
target: this.#selection.models,
|
|
307
|
+
ids: modelIds,
|
|
308
|
+
onAdd: (id) => (additions.models ??= []).push(id),
|
|
309
|
+
}),
|
|
310
|
+
subcategories: (subcategoryIds) => addIds({
|
|
311
|
+
target: this.#selection.subcategories,
|
|
312
|
+
ids: subcategoryIds,
|
|
313
|
+
onAdd: (id) => (additions.subcategories ??= []).push(id),
|
|
314
|
+
}),
|
|
315
|
+
});
|
|
316
|
+
const changed = oldSize !== this.size;
|
|
317
|
+
if (!changed) {
|
|
318
|
+
return undefined;
|
|
319
|
+
}
|
|
320
|
+
if (sendEvent) {
|
|
321
|
+
this.#sendChangedEvent({
|
|
322
|
+
type: SelectionSetEventType.Add,
|
|
323
|
+
set: this,
|
|
324
|
+
additions,
|
|
325
|
+
added: additions.elements ?? [],
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
return additions;
|
|
236
329
|
}
|
|
237
330
|
/**
|
|
238
331
|
* Remove one or more Ids from the current selection set.
|
|
239
332
|
* @param elem The set of Ids to remove.
|
|
240
333
|
* @returns true if any elements were removed.
|
|
241
334
|
*/
|
|
242
|
-
remove(
|
|
243
|
-
return this
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
const oldSize = this.
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
335
|
+
remove(removes) {
|
|
336
|
+
return !!this.#remove(removes);
|
|
337
|
+
}
|
|
338
|
+
#remove(removes, sendEvent = true) {
|
|
339
|
+
const oldSize = this.size;
|
|
340
|
+
const removals = {};
|
|
341
|
+
forEachSelectableType({
|
|
342
|
+
ids: removes,
|
|
343
|
+
elements: (elementIds) => removeIds({
|
|
344
|
+
target: this.#selection.elements,
|
|
345
|
+
ids: elementIds,
|
|
346
|
+
onRemove: (id) => (removals.elements ??= []).push(id),
|
|
347
|
+
}),
|
|
348
|
+
models: (modelIds) => removeIds({
|
|
349
|
+
target: this.#selection.models,
|
|
350
|
+
ids: modelIds,
|
|
351
|
+
onRemove: (id) => (removals.models ??= []).push(id),
|
|
352
|
+
}),
|
|
353
|
+
subcategories: (subcategoryIds) => removeIds({
|
|
354
|
+
target: this.#selection.subcategories,
|
|
355
|
+
ids: subcategoryIds,
|
|
356
|
+
onRemove: (id) => (removals.subcategories ??= []).push(id),
|
|
357
|
+
}),
|
|
358
|
+
});
|
|
359
|
+
const changed = oldSize !== this.size;
|
|
360
|
+
if (!changed) {
|
|
361
|
+
return undefined;
|
|
362
|
+
}
|
|
363
|
+
if (sendEvent) {
|
|
364
|
+
this.#sendChangedEvent({
|
|
365
|
+
type: SelectionSetEventType.Remove,
|
|
366
|
+
set: this,
|
|
367
|
+
removals,
|
|
368
|
+
removed: removals.elements ?? [],
|
|
369
|
+
});
|
|
370
|
+
}
|
|
371
|
+
return removals;
|
|
253
372
|
}
|
|
254
373
|
/**
|
|
255
374
|
* Add one set of Ids, and remove another set of Ids. Any Ids that are in both sets are removed.
|
|
256
375
|
* @returns True if any Ids were either added or removed.
|
|
257
376
|
*/
|
|
258
377
|
addAndRemove(adds, removes) {
|
|
259
|
-
const
|
|
260
|
-
const
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
this
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
378
|
+
const additions = this.#add(adds, false);
|
|
379
|
+
const removals = this.#remove(removes, false);
|
|
380
|
+
const addedElements = additions?.elements ?? [];
|
|
381
|
+
const removedElements = removals?.elements ?? [];
|
|
382
|
+
if (additions && removals) {
|
|
383
|
+
this.#sendChangedEvent({
|
|
384
|
+
type: SelectionSetEventType.Replace,
|
|
385
|
+
set: this,
|
|
386
|
+
additions,
|
|
387
|
+
added: addedElements,
|
|
388
|
+
removals,
|
|
389
|
+
removed: removedElements,
|
|
390
|
+
});
|
|
391
|
+
}
|
|
392
|
+
else if (additions) {
|
|
393
|
+
this.#sendChangedEvent({
|
|
394
|
+
type: SelectionSetEventType.Add,
|
|
395
|
+
set: this,
|
|
396
|
+
additions,
|
|
397
|
+
added: addedElements,
|
|
398
|
+
});
|
|
278
399
|
}
|
|
279
|
-
|
|
400
|
+
else if (removals) {
|
|
401
|
+
this.#sendChangedEvent({
|
|
402
|
+
type: SelectionSetEventType.Remove,
|
|
403
|
+
set: this,
|
|
404
|
+
removals,
|
|
405
|
+
removed: removedElements,
|
|
406
|
+
});
|
|
407
|
+
}
|
|
408
|
+
return !!additions || !!removals;
|
|
409
|
+
}
|
|
410
|
+
/** Invert the state of a set of Ids in the `SelectionSet` */
|
|
411
|
+
invert(ids) {
|
|
412
|
+
const adds = {};
|
|
413
|
+
const removes = {};
|
|
414
|
+
forEachSelectableType({
|
|
415
|
+
ids,
|
|
416
|
+
elements: (elementIds) => {
|
|
417
|
+
for (const id of Id64.iterable(elementIds)) {
|
|
418
|
+
((this.elements.has(id) ? removes : adds).elements ??= new Set()).add(id);
|
|
419
|
+
}
|
|
420
|
+
},
|
|
421
|
+
models: (modelIds) => {
|
|
422
|
+
for (const id of Id64.iterable(modelIds)) {
|
|
423
|
+
((this.models.has(id) ? removes : adds).models ??= new Set()).add(id);
|
|
424
|
+
}
|
|
425
|
+
},
|
|
426
|
+
subcategories: (subcategoryIds) => {
|
|
427
|
+
for (const id of Id64.iterable(subcategoryIds)) {
|
|
428
|
+
((this.subcategories.has(id) ? removes : adds).subcategories ??= new Set()).add(id);
|
|
429
|
+
}
|
|
430
|
+
},
|
|
431
|
+
});
|
|
432
|
+
return this.addAndRemove(adds, removes);
|
|
280
433
|
}
|
|
281
434
|
/** Change selection set to be the supplied set of Ids. */
|
|
282
|
-
replace(
|
|
283
|
-
if (areEqual(this
|
|
284
|
-
return;
|
|
285
|
-
const removed = this._elements;
|
|
286
|
-
this._elements = new Set();
|
|
287
|
-
this._add(elem, false);
|
|
288
|
-
if (0 < removed.size) {
|
|
289
|
-
for (const id of Id64.iterable(elem)) {
|
|
290
|
-
if (removed.has(id))
|
|
291
|
-
removed.delete(id);
|
|
292
|
-
}
|
|
435
|
+
replace(ids) {
|
|
436
|
+
if (areEqual(this.#selection, ids)) {
|
|
437
|
+
return false;
|
|
293
438
|
}
|
|
294
|
-
|
|
439
|
+
const previousSelection = this.#selection;
|
|
440
|
+
this.#selection = {
|
|
441
|
+
elements: new Set(),
|
|
442
|
+
models: new Set(),
|
|
443
|
+
subcategories: new Set(),
|
|
444
|
+
};
|
|
445
|
+
this.#add(ids, false);
|
|
446
|
+
const additions = {};
|
|
447
|
+
const removals = {};
|
|
448
|
+
forEachSelectableType({
|
|
449
|
+
ids: this.#selection,
|
|
450
|
+
elements: (elementIds) => {
|
|
451
|
+
removeIds({
|
|
452
|
+
target: previousSelection.elements,
|
|
453
|
+
ids: elementIds,
|
|
454
|
+
onNotFound: (id) => (additions.elements ??= new Set()).add(id),
|
|
455
|
+
});
|
|
456
|
+
if (previousSelection.elements.size > 0) {
|
|
457
|
+
removals.elements = previousSelection.elements;
|
|
458
|
+
}
|
|
459
|
+
},
|
|
460
|
+
models: (modelIds) => {
|
|
461
|
+
removeIds({
|
|
462
|
+
target: previousSelection.models,
|
|
463
|
+
ids: modelIds,
|
|
464
|
+
onNotFound: (id) => (additions.models ??= new Set()).add(id),
|
|
465
|
+
});
|
|
466
|
+
if (previousSelection.models.size > 0) {
|
|
467
|
+
removals.models = previousSelection.models;
|
|
468
|
+
}
|
|
469
|
+
},
|
|
470
|
+
subcategories: (subcategoryIds) => {
|
|
471
|
+
removeIds({
|
|
472
|
+
target: previousSelection.subcategories,
|
|
473
|
+
ids: subcategoryIds,
|
|
474
|
+
onNotFound: (id) => (additions.subcategories ??= new Set()).add(id),
|
|
475
|
+
});
|
|
476
|
+
if (previousSelection.subcategories.size > 0) {
|
|
477
|
+
removals.subcategories = previousSelection.subcategories;
|
|
478
|
+
}
|
|
479
|
+
},
|
|
480
|
+
});
|
|
481
|
+
this.#sendChangedEvent({
|
|
482
|
+
type: SelectionSetEventType.Replace,
|
|
483
|
+
set: this,
|
|
484
|
+
additions,
|
|
485
|
+
added: additions.elements ?? [],
|
|
486
|
+
removals,
|
|
487
|
+
removed: removals.elements ?? [],
|
|
488
|
+
});
|
|
489
|
+
return true;
|
|
295
490
|
}
|
|
296
491
|
}
|
|
492
|
+
function forEachSelectableType({ ids, elements, models, subcategories, }) {
|
|
493
|
+
if (typeof ids === "string" || Array.isArray(ids) || ids instanceof Set) {
|
|
494
|
+
elements(ids);
|
|
495
|
+
return { elements: ids };
|
|
496
|
+
}
|
|
497
|
+
elements(ids.elements ?? []);
|
|
498
|
+
models(ids.models ?? []);
|
|
499
|
+
subcategories(ids.subcategories ?? []);
|
|
500
|
+
return ids;
|
|
501
|
+
}
|
|
297
502
|
function areEqual(lhs, rhs) {
|
|
503
|
+
let result = true;
|
|
504
|
+
forEachSelectableType({
|
|
505
|
+
ids: rhs,
|
|
506
|
+
elements: (elementIds) => {
|
|
507
|
+
if (result && !areIdsEqual(lhs.elements, elementIds)) {
|
|
508
|
+
result = false;
|
|
509
|
+
}
|
|
510
|
+
},
|
|
511
|
+
models: (modelIds) => {
|
|
512
|
+
if (result && !areIdsEqual(lhs.models, modelIds)) {
|
|
513
|
+
result = false;
|
|
514
|
+
}
|
|
515
|
+
},
|
|
516
|
+
subcategories: (subcategoryIds) => {
|
|
517
|
+
if (result && !areIdsEqual(lhs.subcategories, subcategoryIds)) {
|
|
518
|
+
result = false;
|
|
519
|
+
}
|
|
520
|
+
},
|
|
521
|
+
});
|
|
522
|
+
return result;
|
|
523
|
+
}
|
|
524
|
+
function areIdsEqual(lhs, rhs) {
|
|
298
525
|
// Size is unreliable if input can contain duplicates...
|
|
299
|
-
if (Array.isArray(rhs))
|
|
526
|
+
if (Array.isArray(rhs)) {
|
|
300
527
|
rhs = Id64.toIdSet(rhs);
|
|
301
|
-
|
|
528
|
+
}
|
|
529
|
+
if (lhs.size !== Id64.sizeOf(rhs)) {
|
|
302
530
|
return false;
|
|
303
|
-
|
|
304
|
-
|
|
531
|
+
}
|
|
532
|
+
for (const id of Id64.iterable(rhs)) {
|
|
533
|
+
if (!lhs.has(id)) {
|
|
305
534
|
return false;
|
|
535
|
+
}
|
|
536
|
+
}
|
|
306
537
|
return true;
|
|
307
538
|
}
|
|
539
|
+
function addIds({ target, ids, onAdd }) {
|
|
540
|
+
let size = target.size;
|
|
541
|
+
for (const id of Id64.iterable(ids)) {
|
|
542
|
+
target.add(id);
|
|
543
|
+
const newSize = target.size;
|
|
544
|
+
if (newSize !== size) {
|
|
545
|
+
onAdd?.(id);
|
|
546
|
+
}
|
|
547
|
+
size = newSize;
|
|
548
|
+
}
|
|
549
|
+
}
|
|
550
|
+
function removeIds({ target, ids, onRemove, onNotFound, }) {
|
|
551
|
+
let size = target.size;
|
|
552
|
+
for (const id of Id64.iterable(ids)) {
|
|
553
|
+
target.delete(id);
|
|
554
|
+
const newSize = target.size;
|
|
555
|
+
if (newSize !== size) {
|
|
556
|
+
onRemove?.(id);
|
|
557
|
+
}
|
|
558
|
+
else {
|
|
559
|
+
onNotFound?.(id);
|
|
560
|
+
}
|
|
561
|
+
size = newSize;
|
|
562
|
+
}
|
|
563
|
+
}
|
|
308
564
|
//# sourceMappingURL=SelectionSet.js.map
|