@itwin/frontend-devtools 4.0.0-dev.7 → 4.0.0-dev.72
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 +41 -1
- package/lib/cjs/ClipboardUtilities.d.ts +8 -8
- package/lib/cjs/ClipboardUtilities.js +26 -26
- package/lib/cjs/FrontEndDevTools.d.ts +19 -19
- package/lib/cjs/FrontEndDevTools.js +221 -221
- package/lib/cjs/FrontEndDevTools.js.map +1 -1
- package/lib/cjs/effects/Convolution.d.ts +68 -68
- package/lib/cjs/effects/Convolution.js +148 -148
- package/lib/cjs/effects/Convolution.js.map +1 -1
- package/lib/cjs/effects/EffectTools.d.ts +33 -33
- package/lib/cjs/effects/EffectTools.js +67 -68
- package/lib/cjs/effects/EffectTools.js.map +1 -1
- package/lib/cjs/effects/Explosion.d.ts +12 -12
- package/lib/cjs/effects/Explosion.js +168 -168
- package/lib/cjs/effects/Explosion.js.map +1 -1
- package/lib/cjs/effects/FlipImage.d.ts +30 -30
- package/lib/cjs/effects/FlipImage.js +79 -79
- package/lib/cjs/effects/FlipImage.js.map +1 -1
- package/lib/cjs/effects/LensDistortion.d.ts +34 -34
- package/lib/cjs/effects/LensDistortion.js +88 -88
- package/lib/cjs/effects/LensDistortion.js.map +1 -1
- package/lib/cjs/effects/Random.d.ts +24 -24
- package/lib/cjs/effects/Random.js +49 -49
- package/lib/cjs/effects/Saturation.d.ts +30 -30
- package/lib/cjs/effects/Saturation.js +59 -59
- package/lib/cjs/effects/Saturation.js.map +1 -1
- package/lib/cjs/effects/Snow.d.ts +76 -76
- package/lib/cjs/effects/Snow.js +187 -187
- package/lib/cjs/effects/Snow.js.map +1 -1
- package/lib/cjs/effects/Vignette.d.ts +39 -39
- package/lib/cjs/effects/Vignette.js +79 -79
- package/lib/cjs/effects/Vignette.js.map +1 -1
- package/lib/cjs/frontend-devtools.d.ts +82 -82
- package/lib/cjs/frontend-devtools.js +102 -98
- package/lib/cjs/frontend-devtools.js.map +1 -1
- package/lib/cjs/tools/AnimationIntervalTool.d.ts +15 -15
- package/lib/cjs/tools/AnimationIntervalTool.js +30 -30
- package/lib/cjs/tools/AnimationIntervalTool.js.map +1 -1
- package/lib/cjs/tools/ChangeUnitsTool.d.ts +15 -15
- package/lib/cjs/tools/ChangeUnitsTool.js +41 -41
- package/lib/cjs/tools/ChangeUnitsTool.js.map +1 -1
- package/lib/cjs/tools/ClipTools.d.ts +67 -67
- package/lib/cjs/tools/ClipTools.js +161 -164
- package/lib/cjs/tools/ClipTools.js.map +1 -1
- package/lib/cjs/tools/DisplayStyleTools.d.ts +145 -145
- package/lib/cjs/tools/DisplayStyleTools.js +368 -370
- package/lib/cjs/tools/DisplayStyleTools.js.map +1 -1
- package/lib/cjs/tools/EmphasizeElementsTool.d.ts +60 -60
- package/lib/cjs/tools/EmphasizeElementsTool.js +154 -154
- package/lib/cjs/tools/EmphasizeElementsTool.js.map +1 -1
- package/lib/cjs/tools/FrustumDecoration.d.ts +57 -57
- package/lib/cjs/tools/FrustumDecoration.js +374 -374
- package/lib/cjs/tools/FrustumDecoration.js.map +1 -1
- package/lib/cjs/tools/InspectElementTool.d.ts +42 -42
- package/lib/cjs/tools/InspectElementTool.js +198 -198
- package/lib/cjs/tools/InspectElementTool.js.map +1 -1
- package/lib/cjs/tools/MapLayerTool.d.ts +264 -264
- package/lib/cjs/tools/MapLayerTool.js +507 -507
- package/lib/cjs/tools/MapLayerTool.js.map +1 -1
- package/lib/cjs/tools/MeasureTileLoadTime.d.ts +12 -12
- package/lib/cjs/tools/MeasureTileLoadTime.js +63 -63
- package/lib/cjs/tools/MeasureTileLoadTime.js.map +1 -1
- package/lib/cjs/tools/ModelAppearanceTools.d.ts +86 -86
- package/lib/cjs/tools/ModelAppearanceTools.js +183 -183
- package/lib/cjs/tools/ModelAppearanceTools.js.map +1 -1
- package/lib/cjs/tools/PlanProjectionTools.d.ts +40 -40
- package/lib/cjs/tools/PlanProjectionTools.js +149 -149
- package/lib/cjs/tools/PlanProjectionTools.js.map +1 -1
- package/lib/cjs/tools/PlanarMaskTools.d.ts +182 -182
- package/lib/cjs/tools/PlanarMaskTools.js +391 -393
- package/lib/cjs/tools/PlanarMaskTools.js.map +1 -1
- package/lib/cjs/tools/ProjectExtents.d.ts +41 -41
- package/lib/cjs/tools/ProjectExtents.js +110 -110
- package/lib/cjs/tools/ProjectExtents.js.map +1 -1
- package/lib/cjs/tools/RealityModelTools.d.ts +116 -116
- package/lib/cjs/tools/RealityModelTools.js +281 -281
- package/lib/cjs/tools/RealityModelTools.js.map +1 -1
- package/lib/cjs/tools/RealityTransitionTool.d.ts +25 -25
- package/lib/cjs/tools/RealityTransitionTool.js +115 -116
- package/lib/cjs/tools/RealityTransitionTool.js.map +1 -1
- package/lib/cjs/tools/RenderSystemTools.d.ts +38 -38
- package/lib/cjs/tools/RenderSystemTools.js +69 -70
- package/lib/cjs/tools/RenderSystemTools.js.map +1 -1
- package/lib/cjs/tools/RenderTargetTools.d.ts +107 -107
- package/lib/cjs/tools/RenderTargetTools.d.ts.map +1 -1
- package/lib/cjs/tools/RenderTargetTools.js +174 -174
- package/lib/cjs/tools/RenderTargetTools.js.map +1 -1
- package/lib/cjs/tools/ReportWebGLCompatibilityTool.d.ts +11 -11
- package/lib/cjs/tools/ReportWebGLCompatibilityTool.js +30 -30
- package/lib/cjs/tools/ReportWebGLCompatibilityTool.js.map +1 -1
- package/lib/cjs/tools/SavedViews.d.ts +46 -46
- package/lib/cjs/tools/SavedViews.js +136 -136
- package/lib/cjs/tools/SavedViews.js.map +1 -1
- package/lib/cjs/tools/ScheduleScriptTools.d.ts +37 -37
- package/lib/cjs/tools/ScheduleScriptTools.js +157 -159
- package/lib/cjs/tools/ScheduleScriptTools.js.map +1 -1
- package/lib/cjs/tools/SelectionTools.d.ts +28 -28
- package/lib/cjs/tools/SelectionTools.js +87 -87
- package/lib/cjs/tools/SelectionTools.js.map +1 -1
- package/lib/cjs/tools/SetGpuMemoryLimitTool.d.ts +15 -15
- package/lib/cjs/tools/SetGpuMemoryLimitTool.js +33 -33
- package/lib/cjs/tools/SetGpuMemoryLimitTool.js.map +1 -1
- package/lib/cjs/tools/SourceAspectIdTools.d.ts +40 -40
- package/lib/cjs/tools/SourceAspectIdTools.d.ts.map +1 -1
- package/lib/cjs/tools/SourceAspectIdTools.js +86 -86
- package/lib/cjs/tools/SourceAspectIdTools.js.map +1 -1
- package/lib/cjs/tools/TileRequestDecoration.d.ts +12 -12
- package/lib/cjs/tools/TileRequestDecoration.js +83 -83
- package/lib/cjs/tools/TileRequestDecoration.js.map +1 -1
- package/lib/cjs/tools/TileTreeBoundsDecoration.d.ts +11 -11
- package/lib/cjs/tools/TileTreeBoundsDecoration.js +74 -74
- package/lib/cjs/tools/TileTreeBoundsDecoration.js.map +1 -1
- package/lib/cjs/tools/ToolTipProvider.d.ts +15 -15
- package/lib/cjs/tools/ToolTipProvider.js +66 -66
- package/lib/cjs/tools/ToolTipProvider.js.map +1 -1
- package/lib/cjs/tools/ViewportTools.d.ts +218 -218
- package/lib/cjs/tools/ViewportTools.d.ts.map +1 -1
- package/lib/cjs/tools/ViewportTools.js +516 -516
- package/lib/cjs/tools/ViewportTools.js.map +1 -1
- package/lib/cjs/tools/parseArgs.d.ts +23 -23
- package/lib/cjs/tools/parseArgs.js +51 -51
- package/lib/cjs/tools/parseBoolean.d.ts +8 -8
- package/lib/cjs/tools/parseBoolean.js +26 -26
- package/lib/cjs/tools/parseToggle.d.ts +8 -8
- package/lib/cjs/tools/parseToggle.js +25 -25
- package/lib/cjs/ui/Button.d.ts +29 -29
- package/lib/cjs/ui/Button.d.ts.map +1 -1
- package/lib/cjs/ui/Button.js +26 -26
- package/lib/cjs/ui/CheckBox.d.ts +23 -23
- package/lib/cjs/ui/CheckBox.d.ts.map +1 -1
- package/lib/cjs/ui/CheckBox.js +27 -27
- package/lib/cjs/ui/ColorInput.d.ts +27 -27
- package/lib/cjs/ui/ColorInput.d.ts.map +1 -1
- package/lib/cjs/ui/ColorInput.js +53 -53
- package/lib/cjs/ui/ComboBox.d.ts +28 -28
- package/lib/cjs/ui/ComboBox.d.ts.map +1 -1
- package/lib/cjs/ui/ComboBox.js +42 -42
- package/lib/cjs/ui/DataList.d.ts +27 -27
- package/lib/cjs/ui/DataList.d.ts.map +1 -1
- package/lib/cjs/ui/DataList.js +39 -39
- package/lib/cjs/ui/NestedMenu.d.ts +19 -19
- package/lib/cjs/ui/NestedMenu.d.ts.map +1 -1
- package/lib/cjs/ui/NestedMenu.js +46 -46
- package/lib/cjs/ui/NumericInput.d.ts +35 -35
- package/lib/cjs/ui/NumericInput.d.ts.map +1 -1
- package/lib/cjs/ui/NumericInput.js +61 -61
- package/lib/cjs/ui/RadioBox.d.ts +29 -29
- package/lib/cjs/ui/RadioBox.d.ts.map +1 -1
- package/lib/cjs/ui/RadioBox.js +76 -76
- package/lib/cjs/ui/Slider.d.ts +28 -28
- package/lib/cjs/ui/Slider.d.ts.map +1 -1
- package/lib/cjs/ui/Slider.js +42 -42
- package/lib/cjs/ui/TextBox.d.ts +32 -32
- package/lib/cjs/ui/TextBox.d.ts.map +1 -1
- package/lib/cjs/ui/TextBox.js +56 -56
- package/lib/cjs/widgets/DiagnosticsPanel.d.ts +37 -37
- package/lib/cjs/widgets/DiagnosticsPanel.js +81 -81
- package/lib/cjs/widgets/FpsTracker.d.ts +19 -19
- package/lib/cjs/widgets/FpsTracker.js +56 -56
- package/lib/cjs/widgets/GpuProfiler.d.ts +16 -16
- package/lib/cjs/widgets/GpuProfiler.js +192 -192
- package/lib/cjs/widgets/KeyinField.d.ts +61 -61
- package/lib/cjs/widgets/KeyinField.js +186 -187
- package/lib/cjs/widgets/KeyinField.js.map +1 -1
- package/lib/cjs/widgets/MemoryTracker.d.ts +27 -27
- package/lib/cjs/widgets/MemoryTracker.js +242 -243
- package/lib/cjs/widgets/MemoryTracker.js.map +1 -1
- package/lib/cjs/widgets/RenderCommandBreakdown.d.ts +15 -15
- package/lib/cjs/widgets/RenderCommandBreakdown.js +67 -68
- package/lib/cjs/widgets/RenderCommandBreakdown.js.map +1 -1
- package/lib/cjs/widgets/TileMemoryBreakdown.d.ts +30 -30
- package/lib/cjs/widgets/TileMemoryBreakdown.js +203 -204
- package/lib/cjs/widgets/TileMemoryBreakdown.js.map +1 -1
- package/lib/cjs/widgets/TileStatisticsTracker.d.ts +21 -21
- package/lib/cjs/widgets/TileStatisticsTracker.d.ts.map +1 -1
- package/lib/cjs/widgets/TileStatisticsTracker.js +144 -142
- package/lib/cjs/widgets/TileStatisticsTracker.js.map +1 -1
- package/lib/cjs/widgets/ToolSettingsTracker.d.ts +9 -9
- package/lib/cjs/widgets/ToolSettingsTracker.js +211 -211
- package/lib/cjs/widgets/ToolSettingsTracker.js.map +1 -1
- package/lib/esm/ClipboardUtilities.d.ts +8 -8
- package/lib/esm/ClipboardUtilities.js +22 -22
- package/lib/esm/FrontEndDevTools.d.ts +19 -19
- package/lib/esm/FrontEndDevTools.js +218 -217
- package/lib/esm/FrontEndDevTools.js.map +1 -1
- package/lib/esm/effects/Convolution.d.ts +68 -68
- package/lib/esm/effects/Convolution.js +144 -138
- package/lib/esm/effects/Convolution.js.map +1 -1
- package/lib/esm/effects/EffectTools.d.ts +33 -33
- package/lib/esm/effects/EffectTools.js +63 -62
- package/lib/esm/effects/EffectTools.js.map +1 -1
- package/lib/esm/effects/Explosion.d.ts +12 -12
- package/lib/esm/effects/Explosion.js +165 -164
- package/lib/esm/effects/Explosion.js.map +1 -1
- package/lib/esm/effects/FlipImage.d.ts +30 -30
- package/lib/esm/effects/FlipImage.js +76 -74
- package/lib/esm/effects/FlipImage.js.map +1 -1
- package/lib/esm/effects/LensDistortion.d.ts +34 -34
- package/lib/esm/effects/LensDistortion.js +85 -83
- package/lib/esm/effects/LensDistortion.js.map +1 -1
- package/lib/esm/effects/Random.d.ts +24 -24
- package/lib/esm/effects/Random.js +41 -41
- package/lib/esm/effects/Saturation.d.ts +30 -30
- package/lib/esm/effects/Saturation.js +56 -54
- package/lib/esm/effects/Saturation.js.map +1 -1
- package/lib/esm/effects/Snow.d.ts +76 -76
- package/lib/esm/effects/Snow.js +184 -182
- package/lib/esm/effects/Snow.js.map +1 -1
- package/lib/esm/effects/Vignette.d.ts +39 -39
- package/lib/esm/effects/Vignette.js +76 -74
- package/lib/esm/effects/Vignette.js.map +1 -1
- package/lib/esm/frontend-devtools.d.ts +82 -82
- package/lib/esm/frontend-devtools.js +86 -86
- package/lib/esm/tools/AnimationIntervalTool.d.ts +15 -15
- package/lib/esm/tools/AnimationIntervalTool.js +27 -26
- package/lib/esm/tools/AnimationIntervalTool.js.map +1 -1
- package/lib/esm/tools/ChangeUnitsTool.d.ts +15 -15
- package/lib/esm/tools/ChangeUnitsTool.js +38 -37
- package/lib/esm/tools/ChangeUnitsTool.js.map +1 -1
- package/lib/esm/tools/ClipTools.d.ts +67 -67
- package/lib/esm/tools/ClipTools.js +158 -158
- package/lib/esm/tools/ClipTools.js.map +1 -1
- package/lib/esm/tools/DisplayStyleTools.d.ts +145 -145
- package/lib/esm/tools/DisplayStyleTools.js +364 -356
- package/lib/esm/tools/DisplayStyleTools.js.map +1 -1
- package/lib/esm/tools/EmphasizeElementsTool.d.ts +60 -60
- package/lib/esm/tools/EmphasizeElementsTool.js +150 -145
- package/lib/esm/tools/EmphasizeElementsTool.js.map +1 -1
- package/lib/esm/tools/FrustumDecoration.d.ts +57 -57
- package/lib/esm/tools/FrustumDecoration.js +370 -367
- package/lib/esm/tools/FrustumDecoration.js.map +1 -1
- package/lib/esm/tools/InspectElementTool.d.ts +42 -42
- package/lib/esm/tools/InspectElementTool.js +195 -194
- package/lib/esm/tools/InspectElementTool.js.map +1 -1
- package/lib/esm/tools/MapLayerTool.d.ts +264 -264
- package/lib/esm/tools/MapLayerTool.js +504 -485
- package/lib/esm/tools/MapLayerTool.js.map +1 -1
- package/lib/esm/tools/MeasureTileLoadTime.d.ts +12 -12
- package/lib/esm/tools/MeasureTileLoadTime.js +60 -59
- package/lib/esm/tools/MeasureTileLoadTime.js.map +1 -1
- package/lib/esm/tools/ModelAppearanceTools.d.ts +86 -86
- package/lib/esm/tools/ModelAppearanceTools.js +180 -172
- package/lib/esm/tools/ModelAppearanceTools.js.map +1 -1
- package/lib/esm/tools/PlanProjectionTools.d.ts +40 -40
- package/lib/esm/tools/PlanProjectionTools.js +146 -143
- package/lib/esm/tools/PlanProjectionTools.js.map +1 -1
- package/lib/esm/tools/PlanarMaskTools.d.ts +182 -182
- package/lib/esm/tools/PlanarMaskTools.js +387 -377
- package/lib/esm/tools/PlanarMaskTools.js.map +1 -1
- package/lib/esm/tools/ProjectExtents.d.ts +41 -41
- package/lib/esm/tools/ProjectExtents.js +105 -104
- package/lib/esm/tools/ProjectExtents.js.map +1 -1
- package/lib/esm/tools/RealityModelTools.d.ts +116 -116
- package/lib/esm/tools/RealityModelTools.js +278 -268
- package/lib/esm/tools/RealityModelTools.js.map +1 -1
- package/lib/esm/tools/RealityTransitionTool.d.ts +25 -25
- package/lib/esm/tools/RealityTransitionTool.js +112 -112
- package/lib/esm/tools/RealityTransitionTool.js.map +1 -1
- package/lib/esm/tools/RenderSystemTools.d.ts +38 -38
- package/lib/esm/tools/RenderSystemTools.js +65 -63
- package/lib/esm/tools/RenderSystemTools.js.map +1 -1
- package/lib/esm/tools/RenderTargetTools.d.ts +107 -107
- package/lib/esm/tools/RenderTargetTools.d.ts.map +1 -1
- package/lib/esm/tools/RenderTargetTools.js +169 -159
- package/lib/esm/tools/RenderTargetTools.js.map +1 -1
- package/lib/esm/tools/ReportWebGLCompatibilityTool.d.ts +11 -11
- package/lib/esm/tools/ReportWebGLCompatibilityTool.js +27 -26
- package/lib/esm/tools/ReportWebGLCompatibilityTool.js.map +1 -1
- package/lib/esm/tools/SavedViews.d.ts +46 -46
- package/lib/esm/tools/SavedViews.js +131 -128
- package/lib/esm/tools/SavedViews.js.map +1 -1
- package/lib/esm/tools/ScheduleScriptTools.d.ts +37 -37
- package/lib/esm/tools/ScheduleScriptTools.js +154 -153
- package/lib/esm/tools/ScheduleScriptTools.js.map +1 -1
- package/lib/esm/tools/SelectionTools.d.ts +28 -28
- package/lib/esm/tools/SelectionTools.js +84 -82
- package/lib/esm/tools/SelectionTools.js.map +1 -1
- package/lib/esm/tools/SetGpuMemoryLimitTool.d.ts +15 -15
- package/lib/esm/tools/SetGpuMemoryLimitTool.js +30 -29
- package/lib/esm/tools/SetGpuMemoryLimitTool.js.map +1 -1
- package/lib/esm/tools/SourceAspectIdTools.d.ts +40 -40
- package/lib/esm/tools/SourceAspectIdTools.d.ts.map +1 -1
- package/lib/esm/tools/SourceAspectIdTools.js +82 -80
- package/lib/esm/tools/SourceAspectIdTools.js.map +1 -1
- package/lib/esm/tools/TileRequestDecoration.d.ts +12 -12
- package/lib/esm/tools/TileRequestDecoration.js +80 -79
- package/lib/esm/tools/TileRequestDecoration.js.map +1 -1
- package/lib/esm/tools/TileTreeBoundsDecoration.d.ts +11 -11
- package/lib/esm/tools/TileTreeBoundsDecoration.js +71 -70
- package/lib/esm/tools/TileTreeBoundsDecoration.js.map +1 -1
- package/lib/esm/tools/ToolTipProvider.d.ts +15 -15
- package/lib/esm/tools/ToolTipProvider.js +63 -62
- package/lib/esm/tools/ToolTipProvider.js.map +1 -1
- package/lib/esm/tools/ViewportTools.d.ts +218 -218
- package/lib/esm/tools/ViewportTools.d.ts.map +1 -1
- package/lib/esm/tools/ViewportTools.js +511 -492
- package/lib/esm/tools/ViewportTools.js.map +1 -1
- package/lib/esm/tools/parseArgs.d.ts +23 -23
- package/lib/esm/tools/parseArgs.js +47 -47
- package/lib/esm/tools/parseBoolean.d.ts +8 -8
- package/lib/esm/tools/parseBoolean.js +22 -22
- package/lib/esm/tools/parseToggle.d.ts +8 -8
- package/lib/esm/tools/parseToggle.js +21 -21
- package/lib/esm/ui/Button.d.ts +29 -29
- package/lib/esm/ui/Button.d.ts.map +1 -1
- package/lib/esm/ui/Button.js +22 -22
- package/lib/esm/ui/CheckBox.d.ts +23 -23
- package/lib/esm/ui/CheckBox.d.ts.map +1 -1
- package/lib/esm/ui/CheckBox.js +23 -23
- package/lib/esm/ui/ColorInput.d.ts +27 -27
- package/lib/esm/ui/ColorInput.d.ts.map +1 -1
- package/lib/esm/ui/ColorInput.js +48 -48
- package/lib/esm/ui/ComboBox.d.ts +28 -28
- package/lib/esm/ui/ComboBox.d.ts.map +1 -1
- package/lib/esm/ui/ComboBox.js +38 -38
- package/lib/esm/ui/DataList.d.ts +27 -27
- package/lib/esm/ui/DataList.d.ts.map +1 -1
- package/lib/esm/ui/DataList.js +34 -34
- package/lib/esm/ui/NestedMenu.d.ts +19 -19
- package/lib/esm/ui/NestedMenu.d.ts.map +1 -1
- package/lib/esm/ui/NestedMenu.js +42 -42
- package/lib/esm/ui/NumericInput.d.ts +35 -35
- package/lib/esm/ui/NumericInput.d.ts.map +1 -1
- package/lib/esm/ui/NumericInput.js +56 -56
- package/lib/esm/ui/RadioBox.d.ts +29 -29
- package/lib/esm/ui/RadioBox.d.ts.map +1 -1
- package/lib/esm/ui/RadioBox.js +72 -72
- package/lib/esm/ui/Slider.d.ts +28 -28
- package/lib/esm/ui/Slider.d.ts.map +1 -1
- package/lib/esm/ui/Slider.js +38 -38
- package/lib/esm/ui/TextBox.d.ts +32 -32
- package/lib/esm/ui/TextBox.d.ts.map +1 -1
- package/lib/esm/ui/TextBox.js +52 -52
- package/lib/esm/widgets/DiagnosticsPanel.d.ts +37 -37
- package/lib/esm/widgets/DiagnosticsPanel.js +77 -77
- package/lib/esm/widgets/FpsTracker.d.ts +19 -19
- package/lib/esm/widgets/FpsTracker.js +52 -52
- package/lib/esm/widgets/GpuProfiler.d.ts +16 -16
- package/lib/esm/widgets/GpuProfiler.js +188 -188
- package/lib/esm/widgets/KeyinField.d.ts +61 -61
- package/lib/esm/widgets/KeyinField.js +182 -183
- package/lib/esm/widgets/KeyinField.js.map +1 -1
- package/lib/esm/widgets/MemoryTracker.d.ts +27 -27
- package/lib/esm/widgets/MemoryTracker.js +237 -238
- package/lib/esm/widgets/MemoryTracker.js.map +1 -1
- package/lib/esm/widgets/RenderCommandBreakdown.d.ts +15 -15
- package/lib/esm/widgets/RenderCommandBreakdown.js +63 -64
- package/lib/esm/widgets/RenderCommandBreakdown.js.map +1 -1
- package/lib/esm/widgets/TileMemoryBreakdown.d.ts +30 -30
- package/lib/esm/widgets/TileMemoryBreakdown.js +199 -200
- package/lib/esm/widgets/TileMemoryBreakdown.js.map +1 -1
- package/lib/esm/widgets/TileStatisticsTracker.d.ts +21 -21
- package/lib/esm/widgets/TileStatisticsTracker.d.ts.map +1 -1
- package/lib/esm/widgets/TileStatisticsTracker.js +140 -138
- package/lib/esm/widgets/TileStatisticsTracker.js.map +1 -1
- package/lib/esm/widgets/ToolSettingsTracker.d.ts +9 -9
- package/lib/esm/widgets/ToolSettingsTracker.js +208 -207
- package/lib/esm/widgets/ToolSettingsTracker.js.map +1 -1
- package/package.json +13 -13
|
@@ -1,184 +1,183 @@
|
|
|
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
|
-
*--------------------------------------------------------------------------------------------*/
|
|
5
|
-
/** @packageDocumentation
|
|
6
|
-
* @module Widgets
|
|
7
|
-
*/
|
|
8
|
-
import { IModelApp, MessageBoxIconType, MessageBoxType, ParseAndRunResult } from "@itwin/core-frontend";
|
|
9
|
-
import { createButton } from "../ui/Button";
|
|
10
|
-
import { appendDataListEntries, createDataList } from "../ui/DataList";
|
|
11
|
-
import { createTextBox } from "../ui/TextBox";
|
|
12
|
-
function keyinsToDataListEntries(keyins) {
|
|
13
|
-
const entries = [];
|
|
14
|
-
for (const keyin of keyins) {
|
|
15
|
-
entries.push({ value: keyin });
|
|
16
|
-
}
|
|
17
|
-
return entries;
|
|
18
|
-
}
|
|
19
|
-
/** Controls whether localized and/or non-localized key-in strings appear in a KeyinField's auto-completion list.
|
|
20
|
-
* @beta
|
|
21
|
-
*/
|
|
22
|
-
export var KeyinFieldLocalization;
|
|
23
|
-
(function (KeyinFieldLocalization) {
|
|
24
|
-
/** Include only non-localized key-in strings. */
|
|
25
|
-
KeyinFieldLocalization[KeyinFieldLocalization["NonLocalized"] = 0] = "NonLocalized";
|
|
26
|
-
/** Include only localized key-in strings. */
|
|
27
|
-
KeyinFieldLocalization[KeyinFieldLocalization["Localized"] = 1] = "Localized";
|
|
28
|
-
/** Include localized and non-localized strings for each key-in. */
|
|
29
|
-
KeyinFieldLocalization[KeyinFieldLocalization["Both"] = 2] = "Both";
|
|
30
|
-
})(KeyinFieldLocalization || (KeyinFieldLocalization = {}));
|
|
31
|
-
/** A textbox allowing input of key-ins (localized tool names) combined with a drop-down that lists all registered key-ins, filtered by substring match on the current input.
|
|
32
|
-
* Press `enter` or click the Enter button to run the key-in.
|
|
33
|
-
* @beta
|
|
34
|
-
*/
|
|
35
|
-
export class KeyinField {
|
|
36
|
-
constructor(props) {
|
|
37
|
-
|
|
38
|
-
this.
|
|
39
|
-
this.
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
this.
|
|
70
|
-
this.
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
ev.
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
ev.
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
this._historyIndex
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
this.
|
|
114
|
-
this.
|
|
115
|
-
|
|
116
|
-
this._history.
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
this.
|
|
123
|
-
const
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
//
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
const
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
const
|
|
164
|
-
const
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
}
|
|
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
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
/** @packageDocumentation
|
|
6
|
+
* @module Widgets
|
|
7
|
+
*/
|
|
8
|
+
import { IModelApp, MessageBoxIconType, MessageBoxType, ParseAndRunResult } from "@itwin/core-frontend";
|
|
9
|
+
import { createButton } from "../ui/Button";
|
|
10
|
+
import { appendDataListEntries, createDataList } from "../ui/DataList";
|
|
11
|
+
import { createTextBox } from "../ui/TextBox";
|
|
12
|
+
function keyinsToDataListEntries(keyins) {
|
|
13
|
+
const entries = [];
|
|
14
|
+
for (const keyin of keyins) {
|
|
15
|
+
entries.push({ value: keyin });
|
|
16
|
+
}
|
|
17
|
+
return entries;
|
|
18
|
+
}
|
|
19
|
+
/** Controls whether localized and/or non-localized key-in strings appear in a KeyinField's auto-completion list.
|
|
20
|
+
* @beta
|
|
21
|
+
*/
|
|
22
|
+
export var KeyinFieldLocalization;
|
|
23
|
+
(function (KeyinFieldLocalization) {
|
|
24
|
+
/** Include only non-localized key-in strings. */
|
|
25
|
+
KeyinFieldLocalization[KeyinFieldLocalization["NonLocalized"] = 0] = "NonLocalized";
|
|
26
|
+
/** Include only localized key-in strings. */
|
|
27
|
+
KeyinFieldLocalization[KeyinFieldLocalization["Localized"] = 1] = "Localized";
|
|
28
|
+
/** Include localized and non-localized strings for each key-in. */
|
|
29
|
+
KeyinFieldLocalization[KeyinFieldLocalization["Both"] = 2] = "Both";
|
|
30
|
+
})(KeyinFieldLocalization || (KeyinFieldLocalization = {}));
|
|
31
|
+
/** A textbox allowing input of key-ins (localized tool names) combined with a drop-down that lists all registered key-ins, filtered by substring match on the current input.
|
|
32
|
+
* Press `enter` or click the Enter button to run the key-in.
|
|
33
|
+
* @beta
|
|
34
|
+
*/
|
|
35
|
+
export class KeyinField {
|
|
36
|
+
constructor(props) {
|
|
37
|
+
this._historyLength = 0;
|
|
38
|
+
this._localization = props.localization ?? KeyinFieldLocalization.NonLocalized;
|
|
39
|
+
this.keyins = this.findKeyins();
|
|
40
|
+
const autoCompleteListId = `${props.baseId}_autoComplete`;
|
|
41
|
+
this.autoCompleteList = createDataList({
|
|
42
|
+
parent: props.parent,
|
|
43
|
+
entries: keyinsToDataListEntries(this.keyins),
|
|
44
|
+
id: autoCompleteListId,
|
|
45
|
+
inline: true,
|
|
46
|
+
});
|
|
47
|
+
this.textBox = createTextBox({
|
|
48
|
+
label: props.wantLabel ? "Key-in: " : undefined,
|
|
49
|
+
id: `${props.baseId}_textBox`,
|
|
50
|
+
parent: props.parent,
|
|
51
|
+
handler: () => this.selectAll(),
|
|
52
|
+
keypresshandler: async (_tb, ev) => { await this.handleKeyPress(ev); },
|
|
53
|
+
focushandler: (_tb) => { this.respondToKeyinFocus(); },
|
|
54
|
+
tooltip: "Type the key-in text here",
|
|
55
|
+
inline: true,
|
|
56
|
+
list: autoCompleteListId,
|
|
57
|
+
});
|
|
58
|
+
if (props.wantButton) {
|
|
59
|
+
createButton({
|
|
60
|
+
handler: async (_bt) => { await this.submitKeyin(); },
|
|
61
|
+
parent: props.parent,
|
|
62
|
+
value: "Enter",
|
|
63
|
+
inline: true,
|
|
64
|
+
tooltip: "Click here to execute the key-in",
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
if (undefined !== props.historyLength && props.historyLength > 0) {
|
|
68
|
+
this.textBox.textbox.onkeydown = (ev) => this.handleKeyDown(ev); // eslint-disable-line @typescript-eslint/promise-function-async
|
|
69
|
+
this._historyLength = props.historyLength;
|
|
70
|
+
this._history = [];
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
focus() { this.textBox.textbox.focus(); }
|
|
74
|
+
loseFocus() { this.textBox.textbox.blur(); }
|
|
75
|
+
selectAll() {
|
|
76
|
+
this.textBox.textbox.setSelectionRange(0, this.textBox.textbox.value.length);
|
|
77
|
+
}
|
|
78
|
+
async handleKeyPress(ev) {
|
|
79
|
+
ev.stopPropagation();
|
|
80
|
+
if ("Enter" === ev.key)
|
|
81
|
+
await this.submitKeyin();
|
|
82
|
+
}
|
|
83
|
+
async handleKeyDown(ev) {
|
|
84
|
+
ev.stopPropagation();
|
|
85
|
+
if (undefined === this._history || 0 === this._history.length)
|
|
86
|
+
return;
|
|
87
|
+
// NB: History list is ordered by most to least recent so moving "backwards" means incrementing the index.
|
|
88
|
+
const direction = ev.key === "ArrowDown" ? 1 : (ev.key === "ArrowUp" ? 1 : 0);
|
|
89
|
+
if (0 === direction)
|
|
90
|
+
return;
|
|
91
|
+
ev.preventDefault();
|
|
92
|
+
ev.stopPropagation();
|
|
93
|
+
if (this._historyIndex === undefined) {
|
|
94
|
+
if (direction < 0)
|
|
95
|
+
return;
|
|
96
|
+
else
|
|
97
|
+
this._historyIndex = -1;
|
|
98
|
+
}
|
|
99
|
+
const newIndex = this._historyIndex + direction;
|
|
100
|
+
if (newIndex >= 0 && newIndex < this._history.length) {
|
|
101
|
+
this._historyIndex = newIndex;
|
|
102
|
+
if (this._historyIndex >= 0)
|
|
103
|
+
this.textBox.textbox.value = this._history[newIndex];
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
resetHistoryIndex() {
|
|
107
|
+
this._historyIndex = undefined;
|
|
108
|
+
}
|
|
109
|
+
pushHistory(keyin) {
|
|
110
|
+
if (undefined === this._history)
|
|
111
|
+
return;
|
|
112
|
+
this.textBox.textbox.value = "";
|
|
113
|
+
this.resetHistoryIndex();
|
|
114
|
+
if (this._history.length === 0 || keyin.toLowerCase() !== this._history[0].toLowerCase()) {
|
|
115
|
+
this._history.unshift(keyin);
|
|
116
|
+
if (this._history.length > this._historyLength)
|
|
117
|
+
this._history.pop();
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
async submitKeyin() {
|
|
121
|
+
this.selectAll();
|
|
122
|
+
const textBox = this.textBox.textbox;
|
|
123
|
+
const input = textBox.value;
|
|
124
|
+
this.pushHistory(input);
|
|
125
|
+
let message;
|
|
126
|
+
try {
|
|
127
|
+
switch (await IModelApp.tools.parseAndRun(input)) {
|
|
128
|
+
case ParseAndRunResult.ToolNotFound:
|
|
129
|
+
message = `Cannot find a key-in that matches: ${input}`;
|
|
130
|
+
break;
|
|
131
|
+
case ParseAndRunResult.BadArgumentCount:
|
|
132
|
+
message = "Incorrect number of arguments";
|
|
133
|
+
break;
|
|
134
|
+
case ParseAndRunResult.FailedToRun:
|
|
135
|
+
message = "Key-in failed to run";
|
|
136
|
+
break;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
catch (ex) {
|
|
140
|
+
message = `Key-in produced exception: ${ex}`;
|
|
141
|
+
}
|
|
142
|
+
if (undefined !== message)
|
|
143
|
+
await IModelApp.notifications.openMessageBox(MessageBoxType.MediumAlert, message, MessageBoxIconType.Warning);
|
|
144
|
+
}
|
|
145
|
+
respondToKeyinFocus() {
|
|
146
|
+
this.resetHistoryIndex();
|
|
147
|
+
// Handle case in which new tools were registered since we last populated the auto-complete list.
|
|
148
|
+
// This can occur e.g. as a result of loading a extension, or deferred initialization of a package like markup.
|
|
149
|
+
const keyins = this.findKeyins();
|
|
150
|
+
if (keyins.length > this.keyins.length) {
|
|
151
|
+
const newKeyins = [];
|
|
152
|
+
for (const keyin of keyins)
|
|
153
|
+
if (!this.keyins.includes(keyin)) {
|
|
154
|
+
newKeyins.push(keyin);
|
|
155
|
+
this.keyins.push(keyin);
|
|
156
|
+
}
|
|
157
|
+
if (newKeyins.length > 0)
|
|
158
|
+
appendDataListEntries(this.autoCompleteList, keyinsToDataListEntries(newKeyins));
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
findKeyins() {
|
|
162
|
+
const keyins = [];
|
|
163
|
+
const tools = IModelApp.tools.getToolList();
|
|
164
|
+
for (const tool of tools) {
|
|
165
|
+
switch (this._localization) {
|
|
166
|
+
case KeyinFieldLocalization.Localized:
|
|
167
|
+
keyins.push(tool.keyin);
|
|
168
|
+
break;
|
|
169
|
+
case KeyinFieldLocalization.Both:
|
|
170
|
+
keyins.push(tool.keyin);
|
|
171
|
+
if (tool.keyin === tool.englishKeyin)
|
|
172
|
+
break;
|
|
173
|
+
/* falls through */
|
|
174
|
+
default:
|
|
175
|
+
case KeyinFieldLocalization.NonLocalized:
|
|
176
|
+
keyins.push(tool.englishKeyin);
|
|
177
|
+
break;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
return keyins;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
184
183
|
//# sourceMappingURL=KeyinField.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KeyinField.js","sourceRoot":"","sources":["../../../src/widgets/KeyinField.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\n/** @packageDocumentation\r\n * @module Widgets\r\n */\r\n\r\nimport { IModelApp, MessageBoxIconType, MessageBoxType, ParseAndRunResult } from \"@itwin/core-frontend\";\r\nimport { createButton } from \"../ui/Button\";\r\nimport { appendDataListEntries, createDataList, DataList, DataListEntry } from \"../ui/DataList\";\r\nimport { createTextBox, TextBox } from \"../ui/TextBox\";\r\n\r\nfunction keyinsToDataListEntries(keyins: string[]): DataListEntry[] {\r\n const entries: DataListEntry[] = [];\r\n for (const keyin of keyins) {\r\n entries.push({ value: keyin });\r\n }\r\n\r\n return entries;\r\n}\r\n\r\n/** Controls whether localized and/or non-localized key-in strings appear in a KeyinField's auto-completion list.\r\n * @beta\r\n */\r\nexport enum KeyinFieldLocalization {\r\n /** Include only non-localized key-in strings. */\r\n NonLocalized,\r\n /** Include only localized key-in strings. */\r\n Localized,\r\n /** Include localized and non-localized strings for each key-in. */\r\n Both,\r\n}\r\n\r\n/** Properties controlling how a KeyinField is created.\r\n * @beta\r\n */\r\nexport interface KeyinFieldProps {\r\n /** If supplied, the keyin field's elements will be added as children of this parent element. */\r\n parent?: HTMLElement;\r\n /** Required, unique ID prefix used to produce unique IDs for child elements. */\r\n baseId: string;\r\n /** Default: false. */\r\n wantButton?: boolean;\r\n /** Default: false. */\r\n wantLabel?: boolean;\r\n /** The maximum number of submitted key-ins to store in the history.\r\n * If greater than zero, pressing up/down while the KeyinField has focus will move backwards/forwards through the history.\r\n * Default: zero;\r\n */\r\n historyLength?: number;\r\n /** Controls whether localized and/or non-localized keyin strings appear in the autocompletion list.\r\n * Note: the KeyinField will still accept either localized or non-localized strings; this option only controls what is displayed in the auto-completion list.\r\n * Default: non-localized\r\n */\r\n localization?: KeyinFieldLocalization;\r\n}\r\n\r\n/** A textbox allowing input of key-ins (localized tool names) combined with a drop-down that lists all registered key-ins, filtered by substring match on the current input.\r\n * Press `enter` or click the Enter button to run the key-in.\r\n * @beta\r\n */\r\nexport class KeyinField {\r\n /** @alpha */\r\n public readonly autoCompleteList: DataList;\r\n public readonly textBox: TextBox;\r\n public readonly keyins: string[];\r\n private _historyIndex?: number;\r\n private _historyLength = 0;\r\n private readonly _history: string[] | undefined;\r\n private readonly _localization: KeyinFieldLocalization;\r\n\r\n public constructor(props: KeyinFieldProps) {\r\n this._localization = props.localization ?? KeyinFieldLocalization.NonLocalized;\r\n this.keyins = this.findKeyins();\r\n const autoCompleteListId = `${props.baseId}_autoComplete`;\r\n this.autoCompleteList = createDataList({\r\n parent: props.parent,\r\n entries: keyinsToDataListEntries(this.keyins),\r\n id: autoCompleteListId,\r\n inline: true,\r\n });\r\n\r\n this.textBox = createTextBox({\r\n label: props.wantLabel ? \"Key-in: \" : undefined,\r\n id: `${props.baseId}_textBox`,\r\n parent: props.parent,\r\n handler: () => this.selectAll(),\r\n keypresshandler: async (_tb, ev) => { await this.handleKeyPress(ev); },\r\n focushandler: (_tb) => { this.respondToKeyinFocus(); },\r\n tooltip: \"Type the key-in text here\",\r\n inline: true,\r\n list: autoCompleteListId,\r\n });\r\n\r\n if (props.wantButton) {\r\n createButton({\r\n handler: async (_bt) => { await this.submitKeyin(); },\r\n parent: props.parent,\r\n value: \"Enter\",\r\n inline: true,\r\n tooltip: \"Click here to execute the key-in\",\r\n });\r\n }\r\n\r\n if (undefined !== props.historyLength && props.historyLength > 0) {\r\n this.textBox.textbox.onkeydown = (ev) => this.handleKeyDown(ev); // eslint-disable-line @typescript-eslint/promise-function-async\r\n this._historyLength = props.historyLength;\r\n this._history = [];\r\n }\r\n }\r\n\r\n public focus() { this.textBox.textbox.focus(); }\r\n public loseFocus() { this.textBox.textbox.blur(); }\r\n\r\n public selectAll(): void {\r\n this.textBox.textbox.setSelectionRange(0, this.textBox.textbox.value.length);\r\n }\r\n\r\n private async handleKeyPress(ev: KeyboardEvent): Promise<void> {\r\n ev.stopPropagation();\r\n\r\n if (\"Enter\" === ev.key)\r\n await this.submitKeyin();\r\n }\r\n\r\n private async handleKeyDown(ev: KeyboardEvent): Promise<void> {\r\n ev.stopPropagation();\r\n\r\n if (undefined === this._history || 0 === this._history.length)\r\n return;\r\n\r\n // NB: History list is ordered by most to least recent so moving \"backwards\" means incrementing the index.\r\n const direction = ev.key === \"ArrowDown\" ? 1 : (ev.key === \"ArrowUp\" ? 1 : 0);\r\n if (0 === direction)\r\n return;\r\n\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n\r\n if (this._historyIndex === undefined) {\r\n if (direction < 0)\r\n return;\r\n else\r\n this._historyIndex = -1;\r\n }\r\n\r\n const newIndex = this._historyIndex + direction;\r\n if (newIndex >= 0 && newIndex < this._history.length) {\r\n this._historyIndex = newIndex;\r\n if (this._historyIndex >= 0)\r\n this.textBox.textbox.value = this._history[newIndex];\r\n }\r\n }\r\n\r\n private resetHistoryIndex(): void {\r\n this._historyIndex = undefined;\r\n }\r\n\r\n private pushHistory(keyin: string): void {\r\n if (undefined === this._history)\r\n return;\r\n\r\n this.textBox.textbox.value = \"\";\r\n this.resetHistoryIndex();\r\n if (this._history.length === 0 || keyin.toLowerCase() !== this._history[0].toLowerCase()) {\r\n this._history.unshift(keyin);\r\n if (this._history.length > this._historyLength)\r\n this._history.pop();\r\n }\r\n }\r\n\r\n private async submitKeyin(): Promise<void> {\r\n this.selectAll();\r\n const textBox = this.textBox.textbox;\r\n\r\n const input = textBox.value;\r\n this.pushHistory(input);\r\n\r\n let message: string | undefined;\r\n try {\r\n switch (await IModelApp.tools.parseAndRun(input)) {\r\n case ParseAndRunResult.ToolNotFound:\r\n message = `Cannot find a key-in that matches: ${input}`;\r\n break;\r\n case ParseAndRunResult.BadArgumentCount:\r\n message = \"Incorrect number of arguments\";\r\n break;\r\n case ParseAndRunResult.FailedToRun:\r\n message = \"Key-in failed to run\";\r\n break;\r\n }\r\n } catch (ex) {\r\n message = `Key-in produced exception: ${ex}`;\r\n }\r\n\r\n if (undefined !== message)\r\n await IModelApp.notifications.openMessageBox(MessageBoxType.MediumAlert, message, MessageBoxIconType.Warning);\r\n }\r\n\r\n private respondToKeyinFocus() {\r\n this.resetHistoryIndex();\r\n\r\n // Handle case in which new tools were registered since we last populated the auto-complete list.\r\n // This can occur e.g. as a result of loading a extension, or deferred initialization of a package like markup.\r\n const keyins = this.findKeyins();\r\n if (keyins.length > this.keyins.length) {\r\n const newKeyins: string[] = [];\r\n for (const keyin of keyins)\r\n if (!this.keyins.includes(keyin)) {\r\n newKeyins.push(keyin);\r\n this.keyins.push(keyin);\r\n }\r\n\r\n if (newKeyins.length > 0)\r\n appendDataListEntries(this.autoCompleteList, keyinsToDataListEntries(newKeyins));\r\n }\r\n }\r\n\r\n private findKeyins(): string[] {\r\n const keyins: string[] = [];\r\n const tools = IModelApp.tools.getToolList();\r\n for (const tool of tools) {\r\n switch (this._localization) {\r\n case KeyinFieldLocalization.Localized:\r\n keyins.push(tool.keyin);\r\n break;\r\n case KeyinFieldLocalization.Both:\r\n keyins.push(tool.keyin);\r\n if (tool.keyin === tool.englishKeyin)\r\n break;\r\n /* falls through */\r\n default:\r\n case KeyinFieldLocalization.NonLocalized:\r\n keyins.push(tool.englishKeyin);\r\n break;\r\n }\r\n }\r\n\r\n return keyins;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"KeyinField.js","sourceRoot":"","sources":["../../../src/widgets/KeyinField.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\n/** @packageDocumentation\r\n * @module Widgets\r\n */\r\n\r\nimport { IModelApp, MessageBoxIconType, MessageBoxType, ParseAndRunResult } from \"@itwin/core-frontend\";\r\nimport { createButton } from \"../ui/Button\";\r\nimport { appendDataListEntries, createDataList, DataList, DataListEntry } from \"../ui/DataList\";\r\nimport { createTextBox, TextBox } from \"../ui/TextBox\";\r\n\r\nfunction keyinsToDataListEntries(keyins: string[]): DataListEntry[] {\r\n const entries: DataListEntry[] = [];\r\n for (const keyin of keyins) {\r\n entries.push({ value: keyin });\r\n }\r\n\r\n return entries;\r\n}\r\n\r\n/** Controls whether localized and/or non-localized key-in strings appear in a KeyinField's auto-completion list.\r\n * @beta\r\n */\r\nexport enum KeyinFieldLocalization {\r\n /** Include only non-localized key-in strings. */\r\n NonLocalized,\r\n /** Include only localized key-in strings. */\r\n Localized,\r\n /** Include localized and non-localized strings for each key-in. */\r\n Both,\r\n}\r\n\r\n/** Properties controlling how a KeyinField is created.\r\n * @beta\r\n */\r\nexport interface KeyinFieldProps {\r\n /** If supplied, the keyin field's elements will be added as children of this parent element. */\r\n parent?: HTMLElement;\r\n /** Required, unique ID prefix used to produce unique IDs for child elements. */\r\n baseId: string;\r\n /** Default: false. */\r\n wantButton?: boolean;\r\n /** Default: false. */\r\n wantLabel?: boolean;\r\n /** The maximum number of submitted key-ins to store in the history.\r\n * If greater than zero, pressing up/down while the KeyinField has focus will move backwards/forwards through the history.\r\n * Default: zero;\r\n */\r\n historyLength?: number;\r\n /** Controls whether localized and/or non-localized keyin strings appear in the autocompletion list.\r\n * Note: the KeyinField will still accept either localized or non-localized strings; this option only controls what is displayed in the auto-completion list.\r\n * Default: non-localized\r\n */\r\n localization?: KeyinFieldLocalization;\r\n}\r\n\r\n/** A textbox allowing input of key-ins (localized tool names) combined with a drop-down that lists all registered key-ins, filtered by substring match on the current input.\r\n * Press `enter` or click the Enter button to run the key-in.\r\n * @beta\r\n */\r\nexport class KeyinField {\r\n /** @alpha */\r\n public readonly autoCompleteList: DataList;\r\n public readonly textBox: TextBox;\r\n public readonly keyins: string[];\r\n private _historyIndex?: number;\r\n private _historyLength = 0;\r\n private readonly _history: string[] | undefined;\r\n private readonly _localization: KeyinFieldLocalization;\r\n\r\n public constructor(props: KeyinFieldProps) {\r\n this._localization = props.localization ?? KeyinFieldLocalization.NonLocalized;\r\n this.keyins = this.findKeyins();\r\n const autoCompleteListId = `${props.baseId}_autoComplete`;\r\n this.autoCompleteList = createDataList({\r\n parent: props.parent,\r\n entries: keyinsToDataListEntries(this.keyins),\r\n id: autoCompleteListId,\r\n inline: true,\r\n });\r\n\r\n this.textBox = createTextBox({\r\n label: props.wantLabel ? \"Key-in: \" : undefined,\r\n id: `${props.baseId}_textBox`,\r\n parent: props.parent,\r\n handler: () => this.selectAll(),\r\n keypresshandler: async (_tb, ev) => { await this.handleKeyPress(ev); },\r\n focushandler: (_tb) => { this.respondToKeyinFocus(); },\r\n tooltip: \"Type the key-in text here\",\r\n inline: true,\r\n list: autoCompleteListId,\r\n });\r\n\r\n if (props.wantButton) {\r\n createButton({\r\n handler: async (_bt) => { await this.submitKeyin(); },\r\n parent: props.parent,\r\n value: \"Enter\",\r\n inline: true,\r\n tooltip: \"Click here to execute the key-in\",\r\n });\r\n }\r\n\r\n if (undefined !== props.historyLength && props.historyLength > 0) {\r\n this.textBox.textbox.onkeydown = (ev) => this.handleKeyDown(ev); // eslint-disable-line @typescript-eslint/promise-function-async\r\n this._historyLength = props.historyLength;\r\n this._history = [];\r\n }\r\n }\r\n\r\n public focus() { this.textBox.textbox.focus(); }\r\n public loseFocus() { this.textBox.textbox.blur(); }\r\n\r\n public selectAll(): void {\r\n this.textBox.textbox.setSelectionRange(0, this.textBox.textbox.value.length);\r\n }\r\n\r\n private async handleKeyPress(ev: KeyboardEvent): Promise<void> {\r\n ev.stopPropagation();\r\n\r\n if (\"Enter\" === ev.key)\r\n await this.submitKeyin();\r\n }\r\n\r\n private async handleKeyDown(ev: KeyboardEvent): Promise<void> {\r\n ev.stopPropagation();\r\n\r\n if (undefined === this._history || 0 === this._history.length)\r\n return;\r\n\r\n // NB: History list is ordered by most to least recent so moving \"backwards\" means incrementing the index.\r\n const direction = ev.key === \"ArrowDown\" ? 1 : (ev.key === \"ArrowUp\" ? 1 : 0);\r\n if (0 === direction)\r\n return;\r\n\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n\r\n if (this._historyIndex === undefined) {\r\n if (direction < 0)\r\n return;\r\n else\r\n this._historyIndex = -1;\r\n }\r\n\r\n const newIndex = this._historyIndex + direction;\r\n if (newIndex >= 0 && newIndex < this._history.length) {\r\n this._historyIndex = newIndex;\r\n if (this._historyIndex >= 0)\r\n this.textBox.textbox.value = this._history[newIndex];\r\n }\r\n }\r\n\r\n private resetHistoryIndex(): void {\r\n this._historyIndex = undefined;\r\n }\r\n\r\n private pushHistory(keyin: string): void {\r\n if (undefined === this._history)\r\n return;\r\n\r\n this.textBox.textbox.value = \"\";\r\n this.resetHistoryIndex();\r\n if (this._history.length === 0 || keyin.toLowerCase() !== this._history[0].toLowerCase()) {\r\n this._history.unshift(keyin);\r\n if (this._history.length > this._historyLength)\r\n this._history.pop();\r\n }\r\n }\r\n\r\n private async submitKeyin(): Promise<void> {\r\n this.selectAll();\r\n const textBox = this.textBox.textbox;\r\n\r\n const input = textBox.value;\r\n this.pushHistory(input);\r\n\r\n let message: string | undefined;\r\n try {\r\n switch (await IModelApp.tools.parseAndRun(input)) {\r\n case ParseAndRunResult.ToolNotFound:\r\n message = `Cannot find a key-in that matches: ${input}`;\r\n break;\r\n case ParseAndRunResult.BadArgumentCount:\r\n message = \"Incorrect number of arguments\";\r\n break;\r\n case ParseAndRunResult.FailedToRun:\r\n message = \"Key-in failed to run\";\r\n break;\r\n }\r\n } catch (ex) {\r\n message = `Key-in produced exception: ${ex}`;\r\n }\r\n\r\n if (undefined !== message)\r\n await IModelApp.notifications.openMessageBox(MessageBoxType.MediumAlert, message, MessageBoxIconType.Warning);\r\n }\r\n\r\n private respondToKeyinFocus() {\r\n this.resetHistoryIndex();\r\n\r\n // Handle case in which new tools were registered since we last populated the auto-complete list.\r\n // This can occur e.g. as a result of loading a extension, or deferred initialization of a package like markup.\r\n const keyins = this.findKeyins();\r\n if (keyins.length > this.keyins.length) {\r\n const newKeyins: string[] = [];\r\n for (const keyin of keyins)\r\n if (!this.keyins.includes(keyin)) {\r\n newKeyins.push(keyin);\r\n this.keyins.push(keyin);\r\n }\r\n\r\n if (newKeyins.length > 0)\r\n appendDataListEntries(this.autoCompleteList, keyinsToDataListEntries(newKeyins));\r\n }\r\n }\r\n\r\n private findKeyins(): string[] {\r\n const keyins: string[] = [];\r\n const tools = IModelApp.tools.getToolList();\r\n for (const tool of tools) {\r\n switch (this._localization) {\r\n case KeyinFieldLocalization.Localized:\r\n keyins.push(tool.keyin);\r\n break;\r\n case KeyinFieldLocalization.Both:\r\n keyins.push(tool.keyin);\r\n if (tool.keyin === tool.englishKeyin)\r\n break;\r\n /* falls through */\r\n default:\r\n case KeyinFieldLocalization.NonLocalized:\r\n keyins.push(tool.englishKeyin);\r\n break;\r\n }\r\n }\r\n\r\n return keyins;\r\n }\r\n}\r\n"]}
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
import { Viewport } from "@itwin/core-frontend";
|
|
2
|
-
/** @internal */
|
|
3
|
-
export declare function formatMemory(numBytes: number): string;
|
|
4
|
-
/** Displays GPU memory allocated to tile trees - either all tile trees in the system, or only those associated with a specific Viewport.
|
|
5
|
-
* @beta
|
|
6
|
-
*/
|
|
7
|
-
export declare class MemoryTracker {
|
|
8
|
-
private readonly _stats;
|
|
9
|
-
private readonly _vp;
|
|
10
|
-
private readonly _div;
|
|
11
|
-
private _curIntervalId?;
|
|
12
|
-
private _memIndex;
|
|
13
|
-
private readonly _totalElem;
|
|
14
|
-
private readonly _totalTreesElem;
|
|
15
|
-
private readonly _purgeButton;
|
|
16
|
-
private readonly _textures;
|
|
17
|
-
private readonly _buffers;
|
|
18
|
-
constructor(parent: HTMLElement, vp: Viewport);
|
|
19
|
-
dispose(): void;
|
|
20
|
-
private addSelector;
|
|
21
|
-
private addPurgeButton;
|
|
22
|
-
private addStatistics;
|
|
23
|
-
private clearInterval;
|
|
24
|
-
private change;
|
|
25
|
-
private update;
|
|
26
|
-
private purge;
|
|
27
|
-
}
|
|
1
|
+
import { Viewport } from "@itwin/core-frontend";
|
|
2
|
+
/** @internal */
|
|
3
|
+
export declare function formatMemory(numBytes: number): string;
|
|
4
|
+
/** Displays GPU memory allocated to tile trees - either all tile trees in the system, or only those associated with a specific Viewport.
|
|
5
|
+
* @beta
|
|
6
|
+
*/
|
|
7
|
+
export declare class MemoryTracker {
|
|
8
|
+
private readonly _stats;
|
|
9
|
+
private readonly _vp;
|
|
10
|
+
private readonly _div;
|
|
11
|
+
private _curIntervalId?;
|
|
12
|
+
private _memIndex;
|
|
13
|
+
private readonly _totalElem;
|
|
14
|
+
private readonly _totalTreesElem;
|
|
15
|
+
private readonly _purgeButton;
|
|
16
|
+
private readonly _textures;
|
|
17
|
+
private readonly _buffers;
|
|
18
|
+
constructor(parent: HTMLElement, vp: Viewport);
|
|
19
|
+
dispose(): void;
|
|
20
|
+
private addSelector;
|
|
21
|
+
private addPurgeButton;
|
|
22
|
+
private addStatistics;
|
|
23
|
+
private clearInterval;
|
|
24
|
+
private change;
|
|
25
|
+
private update;
|
|
26
|
+
private purge;
|
|
27
|
+
}
|
|
28
28
|
//# sourceMappingURL=MemoryTracker.d.ts.map
|