@itwin/frontend-devtools 3.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.
Files changed (244) hide show
  1. package/CHANGELOG.md +723 -0
  2. package/LICENSE.md +9 -0
  3. package/README.md +321 -0
  4. package/lib/ClipboardUtilities.d.ts +9 -0
  5. package/lib/ClipboardUtilities.d.ts.map +1 -0
  6. package/lib/ClipboardUtilities.js +27 -0
  7. package/lib/ClipboardUtilities.js.map +1 -0
  8. package/lib/FrontEndDevTools.d.ts +19 -0
  9. package/lib/FrontEndDevTools.d.ts.map +1 -0
  10. package/lib/FrontEndDevTools.js +203 -0
  11. package/lib/FrontEndDevTools.js.map +1 -0
  12. package/lib/effects/Convolution.d.ts +69 -0
  13. package/lib/effects/Convolution.d.ts.map +1 -0
  14. package/lib/effects/Convolution.js +166 -0
  15. package/lib/effects/Convolution.js.map +1 -0
  16. package/lib/effects/EffectTools.d.ts +34 -0
  17. package/lib/effects/EffectTools.d.ts.map +1 -0
  18. package/lib/effects/EffectTools.js +69 -0
  19. package/lib/effects/EffectTools.js.map +1 -0
  20. package/lib/effects/Explosion.d.ts +13 -0
  21. package/lib/effects/Explosion.d.ts.map +1 -0
  22. package/lib/effects/Explosion.js +168 -0
  23. package/lib/effects/Explosion.js.map +1 -0
  24. package/lib/effects/FlipImage.d.ts +31 -0
  25. package/lib/effects/FlipImage.d.ts.map +1 -0
  26. package/lib/effects/FlipImage.js +100 -0
  27. package/lib/effects/FlipImage.js.map +1 -0
  28. package/lib/effects/LensDistortion.d.ts +35 -0
  29. package/lib/effects/LensDistortion.d.ts.map +1 -0
  30. package/lib/effects/LensDistortion.js +110 -0
  31. package/lib/effects/LensDistortion.js.map +1 -0
  32. package/lib/effects/Random.d.ts +25 -0
  33. package/lib/effects/Random.d.ts.map +1 -0
  34. package/lib/effects/Random.js +50 -0
  35. package/lib/effects/Random.js.map +1 -0
  36. package/lib/effects/Saturation.d.ts +31 -0
  37. package/lib/effects/Saturation.d.ts.map +1 -0
  38. package/lib/effects/Saturation.js +86 -0
  39. package/lib/effects/Saturation.js.map +1 -0
  40. package/lib/effects/Snow.d.ts +77 -0
  41. package/lib/effects/Snow.d.ts.map +1 -0
  42. package/lib/effects/Snow.js +187 -0
  43. package/lib/effects/Snow.js.map +1 -0
  44. package/lib/effects/Vignette.d.ts +40 -0
  45. package/lib/effects/Vignette.d.ts.map +1 -0
  46. package/lib/effects/Vignette.js +109 -0
  47. package/lib/effects/Vignette.js.map +1 -0
  48. package/lib/frontend-devtools.d.ts +82 -0
  49. package/lib/frontend-devtools.d.ts.map +1 -0
  50. package/lib/frontend-devtools.js +98 -0
  51. package/lib/frontend-devtools.js.map +1 -0
  52. package/lib/public/locales/en/FrontendDevTools.json +449 -0
  53. package/lib/public/sprites/particle_explosion.png +0 -0
  54. package/lib/public/sprites/particle_flame.png +0 -0
  55. package/lib/public/sprites/particle_snow.png +0 -0
  56. package/lib/tools/AnimationIntervalTool.d.ts +16 -0
  57. package/lib/tools/AnimationIntervalTool.d.ts.map +1 -0
  58. package/lib/tools/AnimationIntervalTool.js +31 -0
  59. package/lib/tools/AnimationIntervalTool.js.map +1 -0
  60. package/lib/tools/ChangeUnitsTool.d.ts +16 -0
  61. package/lib/tools/ChangeUnitsTool.d.ts.map +1 -0
  62. package/lib/tools/ChangeUnitsTool.js +42 -0
  63. package/lib/tools/ChangeUnitsTool.js.map +1 -0
  64. package/lib/tools/ClipTools.d.ts +68 -0
  65. package/lib/tools/ClipTools.d.ts.map +1 -0
  66. package/lib/tools/ClipTools.js +162 -0
  67. package/lib/tools/ClipTools.js.map +1 -0
  68. package/lib/tools/DisplayStyleTools.d.ts +99 -0
  69. package/lib/tools/DisplayStyleTools.d.ts.map +1 -0
  70. package/lib/tools/DisplayStyleTools.js +242 -0
  71. package/lib/tools/DisplayStyleTools.js.map +1 -0
  72. package/lib/tools/EmphasizeElementsTool.d.ts +61 -0
  73. package/lib/tools/EmphasizeElementsTool.d.ts.map +1 -0
  74. package/lib/tools/EmphasizeElementsTool.js +155 -0
  75. package/lib/tools/EmphasizeElementsTool.js.map +1 -0
  76. package/lib/tools/FrustumDecoration.d.ts +58 -0
  77. package/lib/tools/FrustumDecoration.d.ts.map +1 -0
  78. package/lib/tools/FrustumDecoration.js +372 -0
  79. package/lib/tools/FrustumDecoration.js.map +1 -0
  80. package/lib/tools/InspectElementTool.d.ts +42 -0
  81. package/lib/tools/InspectElementTool.d.ts.map +1 -0
  82. package/lib/tools/InspectElementTool.js +185 -0
  83. package/lib/tools/InspectElementTool.js.map +1 -0
  84. package/lib/tools/MapLayerTool.d.ts +248 -0
  85. package/lib/tools/MapLayerTool.d.ts.map +1 -0
  86. package/lib/tools/MapLayerTool.js +462 -0
  87. package/lib/tools/MapLayerTool.js.map +1 -0
  88. package/lib/tools/MeasureTileLoadTime.d.ts +13 -0
  89. package/lib/tools/MeasureTileLoadTime.d.ts.map +1 -0
  90. package/lib/tools/MeasureTileLoadTime.js +61 -0
  91. package/lib/tools/MeasureTileLoadTime.js.map +1 -0
  92. package/lib/tools/ModelAppearanceTools.d.ts +87 -0
  93. package/lib/tools/ModelAppearanceTools.d.ts.map +1 -0
  94. package/lib/tools/ModelAppearanceTools.js +184 -0
  95. package/lib/tools/ModelAppearanceTools.js.map +1 -0
  96. package/lib/tools/PlanProjectionTools.d.ts +41 -0
  97. package/lib/tools/PlanProjectionTools.d.ts.map +1 -0
  98. package/lib/tools/PlanProjectionTools.js +150 -0
  99. package/lib/tools/PlanProjectionTools.js.map +1 -0
  100. package/lib/tools/PlanarMaskTools.d.ts +182 -0
  101. package/lib/tools/PlanarMaskTools.d.ts.map +1 -0
  102. package/lib/tools/PlanarMaskTools.js +366 -0
  103. package/lib/tools/PlanarMaskTools.js.map +1 -0
  104. package/lib/tools/ProjectExtents.d.ts +41 -0
  105. package/lib/tools/ProjectExtents.d.ts.map +1 -0
  106. package/lib/tools/ProjectExtents.js +108 -0
  107. package/lib/tools/ProjectExtents.js.map +1 -0
  108. package/lib/tools/RealityModelTools.d.ts +117 -0
  109. package/lib/tools/RealityModelTools.d.ts.map +1 -0
  110. package/lib/tools/RealityModelTools.js +269 -0
  111. package/lib/tools/RealityModelTools.js.map +1 -0
  112. package/lib/tools/RealityTransitionTool.d.ts +26 -0
  113. package/lib/tools/RealityTransitionTool.d.ts.map +1 -0
  114. package/lib/tools/RealityTransitionTool.js +110 -0
  115. package/lib/tools/RealityTransitionTool.js.map +1 -0
  116. package/lib/tools/RenderSystemTools.d.ts +46 -0
  117. package/lib/tools/RenderSystemTools.d.ts.map +1 -0
  118. package/lib/tools/RenderSystemTools.js +81 -0
  119. package/lib/tools/RenderSystemTools.js.map +1 -0
  120. package/lib/tools/RenderTargetTools.d.ts +101 -0
  121. package/lib/tools/RenderTargetTools.d.ts.map +1 -0
  122. package/lib/tools/RenderTargetTools.js +167 -0
  123. package/lib/tools/RenderTargetTools.js.map +1 -0
  124. package/lib/tools/ReportWebGLCompatibilityTool.d.ts +12 -0
  125. package/lib/tools/ReportWebGLCompatibilityTool.d.ts.map +1 -0
  126. package/lib/tools/ReportWebGLCompatibilityTool.js +31 -0
  127. package/lib/tools/ReportWebGLCompatibilityTool.js.map +1 -0
  128. package/lib/tools/SavedViews.d.ts +47 -0
  129. package/lib/tools/SavedViews.d.ts.map +1 -0
  130. package/lib/tools/SavedViews.js +137 -0
  131. package/lib/tools/SavedViews.js.map +1 -0
  132. package/lib/tools/SelectionTools.d.ts +17 -0
  133. package/lib/tools/SelectionTools.d.ts.map +1 -0
  134. package/lib/tools/SelectionTools.js +28 -0
  135. package/lib/tools/SelectionTools.js.map +1 -0
  136. package/lib/tools/SetGpuMemoryLimitTool.d.ts +16 -0
  137. package/lib/tools/SetGpuMemoryLimitTool.d.ts.map +1 -0
  138. package/lib/tools/SetGpuMemoryLimitTool.js +34 -0
  139. package/lib/tools/SetGpuMemoryLimitTool.js.map +1 -0
  140. package/lib/tools/SourceAspectIdTools.d.ts +41 -0
  141. package/lib/tools/SourceAspectIdTools.d.ts.map +1 -0
  142. package/lib/tools/SourceAspectIdTools.js +105 -0
  143. package/lib/tools/SourceAspectIdTools.js.map +1 -0
  144. package/lib/tools/TileRequestDecoration.d.ts +13 -0
  145. package/lib/tools/TileRequestDecoration.d.ts.map +1 -0
  146. package/lib/tools/TileRequestDecoration.js +84 -0
  147. package/lib/tools/TileRequestDecoration.js.map +1 -0
  148. package/lib/tools/TileTreeBoundsDecoration.d.ts +12 -0
  149. package/lib/tools/TileTreeBoundsDecoration.d.ts.map +1 -0
  150. package/lib/tools/TileTreeBoundsDecoration.js +75 -0
  151. package/lib/tools/TileTreeBoundsDecoration.js.map +1 -0
  152. package/lib/tools/ToolTipProvider.d.ts +16 -0
  153. package/lib/tools/ToolTipProvider.d.ts.map +1 -0
  154. package/lib/tools/ToolTipProvider.js +67 -0
  155. package/lib/tools/ToolTipProvider.js.map +1 -0
  156. package/lib/tools/ViewportTools.d.ts +194 -0
  157. package/lib/tools/ViewportTools.d.ts.map +1 -0
  158. package/lib/tools/ViewportTools.js +451 -0
  159. package/lib/tools/ViewportTools.js.map +1 -0
  160. package/lib/tools/parseArgs.d.ts +24 -0
  161. package/lib/tools/parseArgs.d.ts.map +1 -0
  162. package/lib/tools/parseArgs.js +52 -0
  163. package/lib/tools/parseArgs.js.map +1 -0
  164. package/lib/tools/parseBoolean.d.ts +9 -0
  165. package/lib/tools/parseBoolean.d.ts.map +1 -0
  166. package/lib/tools/parseBoolean.js +27 -0
  167. package/lib/tools/parseBoolean.js.map +1 -0
  168. package/lib/tools/parseToggle.d.ts +9 -0
  169. package/lib/tools/parseToggle.d.ts.map +1 -0
  170. package/lib/tools/parseToggle.js +26 -0
  171. package/lib/tools/parseToggle.js.map +1 -0
  172. package/lib/ui/Button.d.ts +30 -0
  173. package/lib/ui/Button.d.ts.map +1 -0
  174. package/lib/ui/Button.js +27 -0
  175. package/lib/ui/Button.js.map +1 -0
  176. package/lib/ui/CheckBox.d.ts +24 -0
  177. package/lib/ui/CheckBox.d.ts.map +1 -0
  178. package/lib/ui/CheckBox.js +28 -0
  179. package/lib/ui/CheckBox.js.map +1 -0
  180. package/lib/ui/ColorInput.d.ts +28 -0
  181. package/lib/ui/ColorInput.d.ts.map +1 -0
  182. package/lib/ui/ColorInput.js +54 -0
  183. package/lib/ui/ColorInput.js.map +1 -0
  184. package/lib/ui/ComboBox.d.ts +29 -0
  185. package/lib/ui/ComboBox.d.ts.map +1 -0
  186. package/lib/ui/ComboBox.js +43 -0
  187. package/lib/ui/ComboBox.js.map +1 -0
  188. package/lib/ui/DataList.d.ts +28 -0
  189. package/lib/ui/DataList.d.ts.map +1 -0
  190. package/lib/ui/DataList.js +40 -0
  191. package/lib/ui/DataList.js.map +1 -0
  192. package/lib/ui/NestedMenu.d.ts +20 -0
  193. package/lib/ui/NestedMenu.d.ts.map +1 -0
  194. package/lib/ui/NestedMenu.js +47 -0
  195. package/lib/ui/NestedMenu.js.map +1 -0
  196. package/lib/ui/NumericInput.d.ts +35 -0
  197. package/lib/ui/NumericInput.d.ts.map +1 -0
  198. package/lib/ui/NumericInput.js +60 -0
  199. package/lib/ui/NumericInput.js.map +1 -0
  200. package/lib/ui/RadioBox.d.ts +29 -0
  201. package/lib/ui/RadioBox.d.ts.map +1 -0
  202. package/lib/ui/RadioBox.js +77 -0
  203. package/lib/ui/RadioBox.js.map +1 -0
  204. package/lib/ui/Slider.d.ts +25 -0
  205. package/lib/ui/Slider.d.ts.map +1 -0
  206. package/lib/ui/Slider.js +33 -0
  207. package/lib/ui/Slider.js.map +1 -0
  208. package/lib/ui/TextBox.d.ts +33 -0
  209. package/lib/ui/TextBox.d.ts.map +1 -0
  210. package/lib/ui/TextBox.js +57 -0
  211. package/lib/ui/TextBox.js.map +1 -0
  212. package/lib/widgets/DiagnosticsPanel.d.ts +36 -0
  213. package/lib/widgets/DiagnosticsPanel.d.ts.map +1 -0
  214. package/lib/widgets/DiagnosticsPanel.js +76 -0
  215. package/lib/widgets/DiagnosticsPanel.js.map +1 -0
  216. package/lib/widgets/FpsTracker.d.ts +20 -0
  217. package/lib/widgets/FpsTracker.d.ts.map +1 -0
  218. package/lib/widgets/FpsTracker.js +57 -0
  219. package/lib/widgets/FpsTracker.js.map +1 -0
  220. package/lib/widgets/GpuProfiler.d.ts +17 -0
  221. package/lib/widgets/GpuProfiler.d.ts.map +1 -0
  222. package/lib/widgets/GpuProfiler.js +193 -0
  223. package/lib/widgets/GpuProfiler.js.map +1 -0
  224. package/lib/widgets/KeyinField.d.ts +62 -0
  225. package/lib/widgets/KeyinField.d.ts.map +1 -0
  226. package/lib/widgets/KeyinField.js +188 -0
  227. package/lib/widgets/KeyinField.js.map +1 -0
  228. package/lib/widgets/MemoryTracker.d.ts +28 -0
  229. package/lib/widgets/MemoryTracker.d.ts.map +1 -0
  230. package/lib/widgets/MemoryTracker.js +244 -0
  231. package/lib/widgets/MemoryTracker.js.map +1 -0
  232. package/lib/widgets/TileMemoryBreakdown.d.ts +31 -0
  233. package/lib/widgets/TileMemoryBreakdown.d.ts.map +1 -0
  234. package/lib/widgets/TileMemoryBreakdown.js +205 -0
  235. package/lib/widgets/TileMemoryBreakdown.js.map +1 -0
  236. package/lib/widgets/TileStatisticsTracker.d.ts +22 -0
  237. package/lib/widgets/TileStatisticsTracker.d.ts.map +1 -0
  238. package/lib/widgets/TileStatisticsTracker.js +143 -0
  239. package/lib/widgets/TileStatisticsTracker.js.map +1 -0
  240. package/lib/widgets/ToolSettingsTracker.d.ts +10 -0
  241. package/lib/widgets/ToolSettingsTracker.d.ts.map +1 -0
  242. package/lib/widgets/ToolSettingsTracker.js +182 -0
  243. package/lib/widgets/ToolSettingsTracker.js.map +1 -0
  244. package/package.json +59 -0
@@ -0,0 +1,143 @@
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.TileStatisticsTracker = void 0;
8
+ /** @packageDocumentation
9
+ * @module Widgets
10
+ */
11
+ const core_frontend_1 = require("@itwin/core-frontend");
12
+ const Button_1 = require("../ui/Button");
13
+ const CheckBox_1 = require("../ui/CheckBox");
14
+ const NumericInput_1 = require("../ui/NumericInput");
15
+ function computeProgress(vp) {
16
+ const ready = vp.numReadyTiles;
17
+ const requested = vp.numRequestedTiles;
18
+ const total = ready + requested;
19
+ const ratio = (total > 0) ? (ready / total) : 1.0;
20
+ return Math.round(ratio * 100);
21
+ }
22
+ const statEntries = [
23
+ { getValue: (stats, vp) => { var _a, _b; return stats.numActiveRequests + ((_b = (_a = core_frontend_1.IModelApp.tileAdmin.getTilesForViewport(vp)) === null || _a === void 0 ? void 0 : _a.external.requested) !== null && _b !== void 0 ? _b : 0); }, label: "Active" },
24
+ { getValue: (stats, _vp) => stats.numPendingRequests, label: "Pending" },
25
+ { getValue: (stats, _vp) => stats.numCanceled, label: "Canceled" },
26
+ { getValue: (stats, _vp) => stats.numActiveRequests + stats.numPendingRequests, label: "Total" },
27
+ { getValue: (_stats, vp) => vp.numSelectedTiles, label: "Selected" },
28
+ { getValue: (_stats, vp) => vp.numReadyTiles, label: "Ready" },
29
+ { getValue: (_stats, vp) => computeProgress(vp), label: "Progress" },
30
+ { getValue: (stats, _vp) => stats.totalCompletedRequests, label: "Completed" },
31
+ { getValue: (stats, _vp) => stats.totalTimedOutRequests, label: "Timed Out" },
32
+ { getValue: (stats, _vp) => stats.totalFailedRequests, label: "Failed" },
33
+ { getValue: (stats, _vp) => stats.totalEmptyTiles, label: "Empty" },
34
+ { getValue: (stats, _vp) => stats.totalUndisplayableTiles, label: "Undisplayable" },
35
+ { getValue: (stats, _vp) => stats.totalElidedTiles, label: "Elided" },
36
+ { getValue: (stats, _vp) => stats.totalCacheMisses, label: "Cache Misses" },
37
+ { getValue: (stats, _vp) => stats.totalDispatchedRequests, label: "Dispatched" },
38
+ { getValue: (stats, _vp) => stats.totalAbortedRequests, label: "Aborted" },
39
+ ];
40
+ const indexOfFirstGlobalStatistic = 7; // "Completed"
41
+ /** Outputs statistics related to tile requests including the current number of active, pending, selected, and ready tile requests; as well as cumulative statistics for the session including the number of failed, timed-out, empty, and elided tile requests.
42
+ * @beta
43
+ */
44
+ class TileStatisticsTracker {
45
+ constructor(parent, vp) {
46
+ this._statElements = [];
47
+ this._vp = vp;
48
+ this.addMaxActive(parent);
49
+ (0, CheckBox_1.createCheckBox)({
50
+ parent,
51
+ name: "Track Tile Requests",
52
+ id: "stats_trackMemory",
53
+ handler: (_cb) => this.toggle(),
54
+ });
55
+ this._div = document.createElement("div");
56
+ this._div.style.display = "none";
57
+ this._div.style.textAlign = "right";
58
+ const table = document.createElement("table");
59
+ table.style.width = "100%";
60
+ table.setAttribute("border", "1");
61
+ this._div.appendChild(table);
62
+ const row = document.createElement("tr");
63
+ const frameColumn = document.createElement("td");
64
+ const globalColumn = document.createElement("td");
65
+ frameColumn.style.width = globalColumn.style.width = "50%";
66
+ row.appendChild(frameColumn);
67
+ row.appendChild(globalColumn);
68
+ table.appendChild(row);
69
+ for (let i = 0; i < statEntries.length; i++) {
70
+ const div = document.createElement("div");
71
+ const elem = document.createElement("text");
72
+ this._statElements[i] = elem;
73
+ div.appendChild(elem);
74
+ const column = i >= indexOfFirstGlobalStatistic ? globalColumn : frameColumn;
75
+ column.appendChild(div);
76
+ }
77
+ const resetButton = (0, Button_1.createButton)({
78
+ parent: this._div,
79
+ value: "Reset",
80
+ tooltip: "Reset all cumulative statistics",
81
+ handler: () => this.reset(),
82
+ });
83
+ resetButton.div.style.textAlign = "center";
84
+ parent.appendChild(this._div);
85
+ }
86
+ dispose() {
87
+ this.clearInterval();
88
+ }
89
+ addMaxActive(parent) {
90
+ const div = document.createElement("div");
91
+ const label = document.createElement("label");
92
+ label.style.display = "inline";
93
+ label.htmlFor = "maxActiveRequests";
94
+ label.innerText = "Max Active Requests: ";
95
+ div.appendChild(label);
96
+ (0, NumericInput_1.createNumericInput)({
97
+ parent: div,
98
+ id: "maxActiveRequests",
99
+ display: "inline",
100
+ min: 0,
101
+ step: 1,
102
+ value: core_frontend_1.IModelApp.tileAdmin.channels.rpcConcurrency,
103
+ handler: (value, _input) => this.updateMaxActive(value),
104
+ });
105
+ parent.appendChild(div);
106
+ }
107
+ updateMaxActive(value) {
108
+ core_frontend_1.IModelApp.tileAdmin.channels.setRpcConcurrency(value);
109
+ }
110
+ clearInterval() {
111
+ if (undefined !== this._curIntervalId) {
112
+ clearInterval(this._curIntervalId);
113
+ this._curIntervalId = undefined;
114
+ }
115
+ }
116
+ toggle() {
117
+ if (undefined !== this._curIntervalId) {
118
+ // Currently on - turn off.
119
+ this._div.style.display = "none";
120
+ this.clearInterval();
121
+ }
122
+ else {
123
+ // Currently off - turn on.
124
+ this._div.style.display = "block";
125
+ this.update();
126
+ this._curIntervalId = setInterval(() => this.update(), 500);
127
+ }
128
+ }
129
+ update() {
130
+ const stats = core_frontend_1.IModelApp.tileAdmin.statistics;
131
+ for (let i = 0; i < statEntries.length; i++) {
132
+ const stat = statEntries[i];
133
+ const label = `${stat.label}: ${stat.getValue(stats, this._vp)}`;
134
+ this._statElements[i].innerText = label;
135
+ }
136
+ }
137
+ reset() {
138
+ core_frontend_1.IModelApp.tileAdmin.resetStatistics();
139
+ this.update();
140
+ }
141
+ }
142
+ exports.TileStatisticsTracker = TileStatisticsTracker;
143
+ //# sourceMappingURL=TileStatisticsTracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TileStatisticsTracker.js","sourceRoot":"","sources":["../../src/widgets/TileStatisticsTracker.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module Widgets\n */\n\nimport { IModelApp, TileAdmin, Viewport } from \"@itwin/core-frontend\";\nimport { createButton } from \"../ui/Button\";\nimport { createCheckBox } from \"../ui/CheckBox\";\nimport { createNumericInput } from \"../ui/NumericInput\";\n\ntype GetStatValue = (stats: TileAdmin.Statistics, vp: Viewport) => number;\ninterface StatEntry {\n label: string;\n getValue: GetStatValue;\n}\n\nfunction computeProgress(vp: Viewport): number {\n const ready = vp.numReadyTiles;\n const requested = vp.numRequestedTiles;\n const total = ready + requested;\n const ratio = (total > 0) ? (ready / total) : 1.0;\n return Math.round(ratio * 100);\n}\n\nconst statEntries: StatEntry[] = [\n { getValue: (stats, vp) => stats.numActiveRequests + (IModelApp.tileAdmin.getTilesForViewport(vp)?.external.requested ?? 0), label: \"Active\" },\n { getValue: (stats, _vp) => stats.numPendingRequests, label: \"Pending\" },\n { getValue: (stats, _vp) => stats.numCanceled, label: \"Canceled\" },\n { getValue: (stats, _vp) => stats.numActiveRequests + stats.numPendingRequests, label: \"Total\" },\n { getValue: (_stats, vp) => vp.numSelectedTiles, label: \"Selected\" },\n { getValue: (_stats, vp) => vp.numReadyTiles, label: \"Ready\" },\n { getValue: (_stats, vp) => computeProgress(vp), label: \"Progress\" },\n { getValue: (stats, _vp) => stats.totalCompletedRequests, label: \"Completed\" },\n { getValue: (stats, _vp) => stats.totalTimedOutRequests, label: \"Timed Out\" },\n { getValue: (stats, _vp) => stats.totalFailedRequests, label: \"Failed\" },\n { getValue: (stats, _vp) => stats.totalEmptyTiles, label: \"Empty\" },\n { getValue: (stats, _vp) => stats.totalUndisplayableTiles, label: \"Undisplayable\" },\n { getValue: (stats, _vp) => stats.totalElidedTiles, label: \"Elided\" },\n { getValue: (stats, _vp) => stats.totalCacheMisses, label: \"Cache Misses\" },\n { getValue: (stats, _vp) => stats.totalDispatchedRequests, label: \"Dispatched\" },\n { getValue: (stats, _vp) => stats.totalAbortedRequests, label: \"Aborted\" },\n];\n\nconst indexOfFirstGlobalStatistic = 7; // \"Completed\"\n\n/** Outputs statistics related to tile requests including the current number of active, pending, selected, and ready tile requests; as well as cumulative statistics for the session including the number of failed, timed-out, empty, and elided tile requests.\n * @beta\n */\nexport class TileStatisticsTracker {\n private readonly _statElements: HTMLElement[] = [];\n private readonly _div: HTMLDivElement;\n private readonly _vp: Viewport;\n private _curIntervalId?: NodeJS.Timer;\n\n public constructor(parent: HTMLElement, vp: Viewport) {\n this._vp = vp;\n this.addMaxActive(parent);\n createCheckBox({\n parent,\n name: \"Track Tile Requests\",\n id: \"stats_trackMemory\",\n handler: (_cb) => this.toggle(),\n });\n\n this._div = document.createElement(\"div\");\n this._div.style.display = \"none\";\n this._div.style.textAlign = \"right\";\n\n const table = document.createElement(\"table\");\n table.style.width = \"100%\";\n table.setAttribute(\"border\", \"1\");\n this._div.appendChild(table);\n\n const row = document.createElement(\"tr\");\n const frameColumn = document.createElement(\"td\");\n const globalColumn = document.createElement(\"td\");\n frameColumn.style.width = globalColumn.style.width = \"50%\";\n row.appendChild(frameColumn);\n row.appendChild(globalColumn);\n table.appendChild(row);\n\n for (let i = 0; i < statEntries.length; i++) {\n const div = document.createElement(\"div\");\n const elem = document.createElement(\"text\");\n this._statElements[i] = elem;\n div.appendChild(elem);\n\n const column = i >= indexOfFirstGlobalStatistic ? globalColumn : frameColumn;\n column.appendChild(div);\n }\n\n const resetButton = createButton({\n parent: this._div,\n value: \"Reset\",\n tooltip: \"Reset all cumulative statistics\",\n handler: () => this.reset(),\n });\n resetButton.div.style.textAlign = \"center\";\n\n parent.appendChild(this._div);\n }\n\n public dispose(): void {\n this.clearInterval();\n }\n\n private addMaxActive(parent: HTMLElement): void {\n const div = document.createElement(\"div\");\n\n const label = document.createElement(\"label\");\n label.style.display = \"inline\";\n label.htmlFor = \"maxActiveRequests\";\n label.innerText = \"Max Active Requests: \";\n div.appendChild(label);\n\n createNumericInput({\n parent: div,\n id: \"maxActiveRequests\",\n display: \"inline\",\n min: 0,\n step: 1,\n value: IModelApp.tileAdmin.channels.rpcConcurrency,\n handler: (value, _input) => this.updateMaxActive(value),\n });\n\n parent.appendChild(div);\n }\n\n private updateMaxActive(value: number): void {\n IModelApp.tileAdmin.channels.setRpcConcurrency(value);\n }\n\n private clearInterval(): void {\n if (undefined !== this._curIntervalId) {\n clearInterval(this._curIntervalId);\n this._curIntervalId = undefined;\n }\n }\n\n private toggle(): void {\n if (undefined !== this._curIntervalId) {\n // Currently on - turn off.\n this._div.style.display = \"none\";\n this.clearInterval();\n } else {\n // Currently off - turn on.\n this._div.style.display = \"block\";\n this.update();\n this._curIntervalId = setInterval(() => this.update(), 500);\n }\n }\n\n private update(): void {\n const stats = IModelApp.tileAdmin.statistics;\n for (let i = 0; i < statEntries.length; i++) {\n const stat = statEntries[i];\n const label = `${stat.label}: ${stat.getValue(stats, this._vp)}`;\n this._statElements[i].innerText = label;\n }\n }\n\n private reset(): void {\n IModelApp.tileAdmin.resetStatistics();\n this.update();\n }\n}\n"]}
@@ -0,0 +1,10 @@
1
+ import { Viewport } from "@itwin/core-frontend";
2
+ /** Allows the global settings controlling the behavior of viewing tools to be customized.
3
+ * @alpha
4
+ */
5
+ export declare class ToolSettingsTracker {
6
+ private static _expandToolSettings;
7
+ constructor(parent: HTMLElement, _vp: Viewport);
8
+ dispose(): void;
9
+ }
10
+ //# sourceMappingURL=ToolSettingsTracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolSettingsTracker.d.ts","sourceRoot":"","sources":["../../src/widgets/ToolSettingsTracker.ts"],"names":[],"mappings":"AAUA,OAAO,EAA2C,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAKzF;;GAEG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAS;gBAExB,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,QAAQ;IA0K9C,OAAO,IAAI,IAAI;CACvB"}
@@ -0,0 +1,182 @@
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.ToolSettingsTracker = void 0;
8
+ /** @packageDocumentation
9
+ * @module Widgets
10
+ */
11
+ const core_bentley_1 = require("@itwin/core-bentley");
12
+ const core_frontend_1 = require("@itwin/core-frontend");
13
+ const CheckBox_1 = require("../ui/CheckBox");
14
+ const NestedMenu_1 = require("../ui/NestedMenu");
15
+ const NumericInput_1 = require("../ui/NumericInput");
16
+ /** Allows the global settings controlling the behavior of viewing tools to be customized.
17
+ * @alpha
18
+ */
19
+ class ToolSettingsTracker {
20
+ constructor(parent, _vp) {
21
+ const settingsDiv = document.createElement("div");
22
+ settingsDiv.style.display = "block";
23
+ settingsDiv.style.textAlign = "left";
24
+ (0, NestedMenu_1.createNestedMenu)({
25
+ label: "Tool Settings",
26
+ parent,
27
+ expand: ToolSettingsTracker._expandToolSettings,
28
+ handler: (expanded) => ToolSettingsTracker._expandToolSettings = expanded,
29
+ body: settingsDiv,
30
+ });
31
+ let div = core_frontend_1.IModelApp.makeHTMLElement("div", { parent: settingsDiv });
32
+ (0, CheckBox_1.createCheckBox)({
33
+ parent: div,
34
+ name: "Preserve World Up When Rotating",
35
+ id: "ts_preserveWorldUp",
36
+ isChecked: core_frontend_1.ToolSettings.preserveWorldUp,
37
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
38
+ handler: (_cb) => { core_frontend_1.ToolSettings.preserveWorldUp = !core_frontend_1.ToolSettings.preserveWorldUp; core_frontend_1.IModelApp.toolAdmin.exitViewTool(); },
39
+ });
40
+ div.style.textAlign = "left";
41
+ // We use a static so the expand/collapse state persists after closing and reopening the drop-down.
42
+ settingsDiv.style.display = ToolSettingsTracker._expandToolSettings ? "block" : "none";
43
+ div = core_frontend_1.IModelApp.makeHTMLElement("div", { parent: settingsDiv });
44
+ let label = core_frontend_1.IModelApp.makeHTMLElement("label", { innerText: "Animation Duration (ms): ", parent: div });
45
+ label.style.display = "inline";
46
+ label.htmlFor = "ts_animationTime";
47
+ (0, NumericInput_1.createNumericInput)({
48
+ parent: div,
49
+ id: "ts_animationTime",
50
+ display: "inline",
51
+ min: 0,
52
+ step: 1,
53
+ value: core_frontend_1.ScreenViewport.animation.time.normal.milliseconds,
54
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
55
+ handler: (value, _input) => { core_frontend_1.ScreenViewport.animation.time.normal = core_bentley_1.BeDuration.fromMilliseconds(value); core_frontend_1.IModelApp.toolAdmin.exitViewTool(); },
56
+ });
57
+ div.style.display = "block";
58
+ div.style.textAlign = "left";
59
+ div = core_frontend_1.IModelApp.makeHTMLElement("div", { parent: settingsDiv });
60
+ label = core_frontend_1.IModelApp.makeHTMLElement("label", { innerText: "Pick Radius (inches): ", parent: div });
61
+ label.style.display = "inline";
62
+ label.htmlFor = "ts_viewToolPickRadiusInches";
63
+ label.innerText = "Pick Radius (inches): ";
64
+ (0, NumericInput_1.createNumericInput)({
65
+ parent: div,
66
+ id: "ts_viewToolPickRadiusInches",
67
+ display: "inline",
68
+ min: 0,
69
+ step: 0.01,
70
+ value: core_frontend_1.ToolSettings.viewToolPickRadiusInches,
71
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
72
+ handler: (value, _input) => { core_frontend_1.ToolSettings.viewToolPickRadiusInches = value; core_frontend_1.IModelApp.toolAdmin.exitViewTool(); },
73
+ parseAsFloat: true,
74
+ }, true);
75
+ div.style.display = "block";
76
+ div.style.textAlign = "left";
77
+ div = core_frontend_1.IModelApp.makeHTMLElement("div", { parent: settingsDiv });
78
+ (0, CheckBox_1.createCheckBox)({
79
+ parent: div,
80
+ name: "Walk Enforce Z Up",
81
+ id: "ts_walkEnforceZUp",
82
+ isChecked: core_frontend_1.ToolSettings.walkEnforceZUp,
83
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
84
+ handler: (_cb) => { core_frontend_1.ToolSettings.walkEnforceZUp = !core_frontend_1.ToolSettings.walkEnforceZUp; core_frontend_1.IModelApp.toolAdmin.exitViewTool(); },
85
+ });
86
+ div.style.display = "block";
87
+ div.style.textAlign = "left";
88
+ div = core_frontend_1.IModelApp.makeHTMLElement("div", { parent: settingsDiv });
89
+ label = core_frontend_1.IModelApp.makeHTMLElement("label", { innerText: "Walk Camera Angle (degrees): ", parent: div });
90
+ label.style.display = "inline";
91
+ label.htmlFor = "ts_walkCameraAngle";
92
+ (0, NumericInput_1.createNumericInput)({
93
+ parent: div,
94
+ id: "ts_walkCameraAngle",
95
+ display: "inline",
96
+ min: 0,
97
+ step: 0.1,
98
+ value: core_frontend_1.ToolSettings.walkCameraAngle.degrees,
99
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
100
+ handler: (value, _input) => { core_frontend_1.ToolSettings.walkCameraAngle.setDegrees(value); core_frontend_1.IModelApp.toolAdmin.exitViewTool(); },
101
+ parseAsFloat: true,
102
+ }, true);
103
+ div.style.display = "block";
104
+ div.style.textAlign = "left";
105
+ div = core_frontend_1.IModelApp.makeHTMLElement("div", { parent: settingsDiv });
106
+ label = core_frontend_1.IModelApp.makeHTMLElement("label", { innerText: "Walk Velocity (meters per second): ", parent: div });
107
+ label.style.display = "inline";
108
+ label.htmlFor = "ts_walkVelocity";
109
+ (0, NumericInput_1.createNumericInput)({
110
+ parent: div,
111
+ id: "ts_walkVelocity",
112
+ display: "inline",
113
+ min: 0,
114
+ step: 0.1,
115
+ value: core_frontend_1.ToolSettings.walkVelocity,
116
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
117
+ handler: (value, _input) => { core_frontend_1.ToolSettings.walkVelocity = value; core_frontend_1.IModelApp.toolAdmin.exitViewTool(); },
118
+ parseAsFloat: true,
119
+ }, true);
120
+ div.style.display = "block";
121
+ div.style.textAlign = "left";
122
+ div = core_frontend_1.IModelApp.makeHTMLElement("div", { parent: settingsDiv });
123
+ label = core_frontend_1.IModelApp.makeHTMLElement("label", { innerText: "Wheel Zoom Bump Distance (meters): ", parent: div });
124
+ label.style.display = "inline";
125
+ label.htmlFor = "ts_wheelZoomBumpDistance";
126
+ (0, NumericInput_1.createNumericInput)({
127
+ parent: div,
128
+ id: "ts_wheelZoomBumpDistance",
129
+ display: "inline",
130
+ min: 0,
131
+ step: 0.025,
132
+ value: core_frontend_1.ToolSettings.wheelZoomBumpDistance,
133
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
134
+ handler: (value, _input) => { core_frontend_1.ToolSettings.wheelZoomBumpDistance = value; core_frontend_1.IModelApp.toolAdmin.exitViewTool(); },
135
+ parseAsFloat: true,
136
+ }, true);
137
+ div.style.display = "block";
138
+ div.style.textAlign = "left";
139
+ div = core_frontend_1.IModelApp.makeHTMLElement("div", { parent: settingsDiv });
140
+ label = core_frontend_1.IModelApp.makeHTMLElement("label", { innerText: "Wheel Zoom Ratio: ", parent: div });
141
+ label.style.display = "inline";
142
+ label.htmlFor = "ts_wheelZoomRatio";
143
+ (0, NumericInput_1.createNumericInput)({
144
+ parent: div,
145
+ id: "ts_wheelZoomRatio",
146
+ display: "inline",
147
+ min: 1.0,
148
+ step: 0.025,
149
+ value: core_frontend_1.ToolSettings.wheelZoomRatio,
150
+ handler: async (value, _input) => { core_frontend_1.ToolSettings.wheelZoomRatio = value; return core_frontend_1.IModelApp.toolAdmin.exitViewTool(); },
151
+ parseAsFloat: true,
152
+ }, true);
153
+ div.style.display = "block";
154
+ div.style.textAlign = "left";
155
+ (0, NumericInput_1.createLabeledNumericInput)({
156
+ id: "num_inertiaDamping",
157
+ parent: settingsDiv,
158
+ value: core_frontend_1.ToolSettings.viewingInertia.damping,
159
+ handler: async (value, _) => { core_frontend_1.ToolSettings.viewingInertia.damping = value; return core_frontend_1.IModelApp.toolAdmin.exitViewTool(); },
160
+ min: 0,
161
+ max: 1,
162
+ step: 0.05,
163
+ parseAsFloat: true,
164
+ name: "Inertial damping: ",
165
+ });
166
+ (0, NumericInput_1.createLabeledNumericInput)({
167
+ id: "num_inertiaDuration",
168
+ parent: settingsDiv,
169
+ value: core_frontend_1.ToolSettings.viewingInertia.duration.milliseconds / 1000,
170
+ handler: async (value, _) => { core_frontend_1.ToolSettings.viewingInertia.duration = core_bentley_1.BeDuration.fromMilliseconds(value * 1000); return core_frontend_1.IModelApp.toolAdmin.exitViewTool(); },
171
+ min: 0,
172
+ max: 10,
173
+ step: 0.5,
174
+ parseAsFloat: true,
175
+ name: "Inertial duration (seconds): ",
176
+ });
177
+ }
178
+ dispose() { }
179
+ }
180
+ exports.ToolSettingsTracker = ToolSettingsTracker;
181
+ ToolSettingsTracker._expandToolSettings = false;
182
+ //# sourceMappingURL=ToolSettingsTracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolSettingsTracker.js","sourceRoot":"","sources":["../../src/widgets/ToolSettingsTracker.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;AAE/F;;GAEG;AAEH,sDAAiD;AACjD,wDAAyF;AACzF,6CAAgD;AAChD,iDAAoD;AACpD,qDAAmF;AAEnF;;GAEG;AACH,MAAa,mBAAmB;IAG9B,YAAmB,MAAmB,EAAE,GAAa;QACnD,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAClD,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QACpC,WAAW,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC;QAErC,IAAA,6BAAgB,EAAC;YACf,KAAK,EAAE,eAAe;YACtB,MAAM;YACN,MAAM,EAAE,mBAAmB,CAAC,mBAAmB;YAC/C,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,mBAAmB,CAAC,mBAAmB,GAAG,QAAQ;YACzE,IAAI,EAAE,WAAW;SAClB,CAAC,CAAC;QAEH,IAAI,GAAG,GAAG,yBAAS,CAAC,eAAe,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QACpE,IAAA,yBAAc,EAAC;YACb,MAAM,EAAE,GAAG;YACX,IAAI,EAAE,iCAAiC;YACvC,EAAE,EAAE,oBAAoB;YACxB,SAAS,EAAE,4BAAY,CAAC,eAAe;YACvC,mEAAmE;YACnE,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,GAAG,4BAAY,CAAC,eAAe,GAAG,CAAC,4BAAY,CAAC,eAAe,CAAC,CAAC,yBAAS,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;SACxH,CAAC,CAAC;QACH,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC;QAE7B,mGAAmG;QACnG,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,mBAAmB,CAAC,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;QAEvF,GAAG,GAAG,yBAAS,CAAC,eAAe,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QAChE,IAAI,KAAK,GAAG,yBAAS,CAAC,eAAe,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,2BAA2B,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACxG,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAC;QAC/B,KAAK,CAAC,OAAO,GAAG,kBAAkB,CAAC;QACnC,IAAA,iCAAkB,EAAC;YACjB,MAAM,EAAE,GAAG;YACX,EAAE,EAAE,kBAAkB;YACtB,OAAO,EAAE,QAAQ;YACjB,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,CAAC;YACP,KAAK,EAAE,8BAAc,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY;YACxD,mEAAmE;YACnE,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,8BAAc,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,yBAAU,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,yBAAS,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;SAC/I,CAAC,CAAC;QACH,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QAC5B,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC;QAE7B,GAAG,GAAG,yBAAS,CAAC,eAAe,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QAChE,KAAK,GAAG,yBAAS,CAAC,eAAe,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,wBAAwB,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACjG,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAC;QAC/B,KAAK,CAAC,OAAO,GAAG,6BAA6B,CAAC;QAC9C,KAAK,CAAC,SAAS,GAAG,wBAAwB,CAAC;QAC3C,IAAA,iCAAkB,EAAC;YACjB,MAAM,EAAE,GAAG;YACX,EAAE,EAAE,6BAA6B;YACjC,OAAO,EAAE,QAAQ;YACjB,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,IAAI;YACV,KAAK,EAAE,4BAAY,CAAC,wBAAwB;YAC5C,mEAAmE;YACnE,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,4BAAY,CAAC,wBAAwB,GAAG,KAAK,CAAC,CAAC,yBAAS,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;YAClH,YAAY,EAAE,IAAI;SACnB,EAAE,IAAI,CAAC,CAAC;QACT,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QAC5B,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC;QAE7B,GAAG,GAAG,yBAAS,CAAC,eAAe,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QAChE,IAAA,yBAAc,EAAC;YACb,MAAM,EAAE,GAAG;YACX,IAAI,EAAE,mBAAmB;YACzB,EAAE,EAAE,mBAAmB;YACvB,SAAS,EAAE,4BAAY,CAAC,cAAc;YACtC,mEAAmE;YACnE,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,GAAG,4BAAY,CAAC,cAAc,GAAG,CAAC,4BAAY,CAAC,cAAc,CAAC,CAAC,yBAAS,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;SACtH,CAAC,CAAC;QACH,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QAC5B,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC;QAE7B,GAAG,GAAG,yBAAS,CAAC,eAAe,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QAChE,KAAK,GAAG,yBAAS,CAAC,eAAe,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,+BAA+B,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACxG,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAC;QAC/B,KAAK,CAAC,OAAO,GAAG,oBAAoB,CAAC;QACrC,IAAA,iCAAkB,EAAC;YACjB,MAAM,EAAE,GAAG;YACX,EAAE,EAAE,oBAAoB;YACxB,OAAO,EAAE,QAAQ;YACjB,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,GAAG;YACT,KAAK,EAAE,4BAAY,CAAC,eAAe,CAAC,OAAO;YAC3C,mEAAmE;YACnE,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,4BAAY,CAAC,eAAe,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,yBAAS,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;YACnH,YAAY,EAAE,IAAI;SACnB,EAAE,IAAI,CAAC,CAAC;QACT,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QAC5B,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC;QAE7B,GAAG,GAAG,yBAAS,CAAC,eAAe,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QAChE,KAAK,GAAG,yBAAS,CAAC,eAAe,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,qCAAqC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QAC9G,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAC;QAC/B,KAAK,CAAC,OAAO,GAAG,iBAAiB,CAAC;QAClC,IAAA,iCAAkB,EAAC;YACjB,MAAM,EAAE,GAAG;YACX,EAAE,EAAE,iBAAiB;YACrB,OAAO,EAAE,QAAQ;YACjB,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,GAAG;YACT,KAAK,EAAE,4BAAY,CAAC,YAAY;YAChC,mEAAmE;YACnE,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,4BAAY,CAAC,YAAY,GAAG,KAAK,CAAC,CAAC,yBAAS,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;YACtG,YAAY,EAAE,IAAI;SACnB,EAAE,IAAI,CAAC,CAAC;QACT,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QAC5B,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC;QAE7B,GAAG,GAAG,yBAAS,CAAC,eAAe,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QAChE,KAAK,GAAG,yBAAS,CAAC,eAAe,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,qCAAqC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QAC9G,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAC;QAC/B,KAAK,CAAC,OAAO,GAAG,0BAA0B,CAAC;QAC3C,IAAA,iCAAkB,EAAC;YACjB,MAAM,EAAE,GAAG;YACX,EAAE,EAAE,0BAA0B;YAC9B,OAAO,EAAE,QAAQ;YACjB,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,4BAAY,CAAC,qBAAqB;YACzC,mEAAmE;YACnE,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,4BAAY,CAAC,qBAAqB,GAAG,KAAK,CAAC,CAAC,yBAAS,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;YAC/G,YAAY,EAAE,IAAI;SACnB,EAAE,IAAI,CAAC,CAAC;QACT,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QAC5B,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC;QAE7B,GAAG,GAAG,yBAAS,CAAC,eAAe,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QAChE,KAAK,GAAG,yBAAS,CAAC,eAAe,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QAC7F,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAC;QAC/B,KAAK,CAAC,OAAO,GAAG,mBAAmB,CAAC;QACpC,IAAA,iCAAkB,EAAC;YACjB,MAAM,EAAE,GAAG;YACX,EAAE,EAAE,mBAAmB;YACvB,OAAO,EAAE,QAAQ;YACjB,GAAG,EAAE,GAAG;YACR,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,4BAAY,CAAC,cAAc;YAClC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,4BAAY,CAAC,cAAc,GAAG,KAAK,CAAC,CAAC,OAAO,yBAAS,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;YACrH,YAAY,EAAE,IAAI;SACnB,EAAE,IAAI,CAAC,CAAC;QACT,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QAC5B,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC;QAE7B,IAAA,wCAAyB,EAAC;YACxB,EAAE,EAAE,oBAAoB;YACxB,MAAM,EAAE,WAAW;YACnB,KAAK,EAAE,4BAAY,CAAC,cAAc,CAAC,OAAO;YAC1C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,GAAG,4BAAY,CAAC,cAAc,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,OAAO,yBAAS,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;YACxH,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,IAAI;YACV,YAAY,EAAE,IAAI;YAClB,IAAI,EAAE,oBAAoB;SAC3B,CAAC,CAAC;QACH,IAAA,wCAAyB,EAAC;YACxB,EAAE,EAAE,qBAAqB;YACzB,MAAM,EAAE,WAAW;YACnB,KAAK,EAAE,4BAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI;YAC/D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,GAAG,4BAAY,CAAC,cAAc,CAAC,QAAQ,GAAG,yBAAU,CAAC,gBAAgB,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,yBAAS,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;YAC7J,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,EAAE;YACP,IAAI,EAAE,GAAG;YACT,YAAY,EAAE,IAAI;YAClB,IAAI,EAAE,+BAA+B;SACtC,CAAC,CAAC;IACL,CAAC;IAEM,OAAO,KAAW,CAAC;;AA7K5B,kDA8KC;AA7KgB,uCAAmB,GAAG,KAAK,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module Widgets\n */\n\nimport { BeDuration } from \"@itwin/core-bentley\";\nimport { IModelApp, ScreenViewport, ToolSettings, Viewport } from \"@itwin/core-frontend\";\nimport { createCheckBox } from \"../ui/CheckBox\";\nimport { createNestedMenu } from \"../ui/NestedMenu\";\nimport { createLabeledNumericInput, createNumericInput } from \"../ui/NumericInput\";\n\n/** Allows the global settings controlling the behavior of viewing tools to be customized.\n * @alpha\n */\nexport class ToolSettingsTracker {\n private static _expandToolSettings = false;\n\n public constructor(parent: HTMLElement, _vp: Viewport) {\n const settingsDiv = document.createElement(\"div\");\n settingsDiv.style.display = \"block\";\n settingsDiv.style.textAlign = \"left\";\n\n createNestedMenu({\n label: \"Tool Settings\",\n parent,\n expand: ToolSettingsTracker._expandToolSettings,\n handler: (expanded) => ToolSettingsTracker._expandToolSettings = expanded,\n body: settingsDiv,\n });\n\n let div = IModelApp.makeHTMLElement(\"div\", { parent: settingsDiv });\n createCheckBox({\n parent: div,\n name: \"Preserve World Up When Rotating\",\n id: \"ts_preserveWorldUp\",\n isChecked: ToolSettings.preserveWorldUp,\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n handler: (_cb) => { ToolSettings.preserveWorldUp = !ToolSettings.preserveWorldUp; IModelApp.toolAdmin.exitViewTool(); },\n });\n div.style.textAlign = \"left\";\n\n // We use a static so the expand/collapse state persists after closing and reopening the drop-down.\n settingsDiv.style.display = ToolSettingsTracker._expandToolSettings ? \"block\" : \"none\";\n\n div = IModelApp.makeHTMLElement(\"div\", { parent: settingsDiv });\n let label = IModelApp.makeHTMLElement(\"label\", { innerText: \"Animation Duration (ms): \", parent: div });\n label.style.display = \"inline\";\n label.htmlFor = \"ts_animationTime\";\n createNumericInput({\n parent: div,\n id: \"ts_animationTime\",\n display: \"inline\",\n min: 0,\n step: 1,\n value: ScreenViewport.animation.time.normal.milliseconds,\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n handler: (value, _input) => { ScreenViewport.animation.time.normal = BeDuration.fromMilliseconds(value); IModelApp.toolAdmin.exitViewTool(); },\n });\n div.style.display = \"block\";\n div.style.textAlign = \"left\";\n\n div = IModelApp.makeHTMLElement(\"div\", { parent: settingsDiv });\n label = IModelApp.makeHTMLElement(\"label\", { innerText: \"Pick Radius (inches): \", parent: div });\n label.style.display = \"inline\";\n label.htmlFor = \"ts_viewToolPickRadiusInches\";\n label.innerText = \"Pick Radius (inches): \";\n createNumericInput({\n parent: div,\n id: \"ts_viewToolPickRadiusInches\",\n display: \"inline\",\n min: 0,\n step: 0.01,\n value: ToolSettings.viewToolPickRadiusInches,\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n handler: (value, _input) => { ToolSettings.viewToolPickRadiusInches = value; IModelApp.toolAdmin.exitViewTool(); },\n parseAsFloat: true,\n }, true);\n div.style.display = \"block\";\n div.style.textAlign = \"left\";\n\n div = IModelApp.makeHTMLElement(\"div\", { parent: settingsDiv });\n createCheckBox({\n parent: div,\n name: \"Walk Enforce Z Up\",\n id: \"ts_walkEnforceZUp\",\n isChecked: ToolSettings.walkEnforceZUp,\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n handler: (_cb) => { ToolSettings.walkEnforceZUp = !ToolSettings.walkEnforceZUp; IModelApp.toolAdmin.exitViewTool(); },\n });\n div.style.display = \"block\";\n div.style.textAlign = \"left\";\n\n div = IModelApp.makeHTMLElement(\"div\", { parent: settingsDiv });\n label = IModelApp.makeHTMLElement(\"label\", { innerText: \"Walk Camera Angle (degrees): \", parent: div });\n label.style.display = \"inline\";\n label.htmlFor = \"ts_walkCameraAngle\";\n createNumericInput({\n parent: div,\n id: \"ts_walkCameraAngle\",\n display: \"inline\",\n min: 0,\n step: 0.1,\n value: ToolSettings.walkCameraAngle.degrees,\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n handler: (value, _input) => { ToolSettings.walkCameraAngle.setDegrees(value); IModelApp.toolAdmin.exitViewTool(); },\n parseAsFloat: true,\n }, true);\n div.style.display = \"block\";\n div.style.textAlign = \"left\";\n\n div = IModelApp.makeHTMLElement(\"div\", { parent: settingsDiv });\n label = IModelApp.makeHTMLElement(\"label\", { innerText: \"Walk Velocity (meters per second): \", parent: div });\n label.style.display = \"inline\";\n label.htmlFor = \"ts_walkVelocity\";\n createNumericInput({\n parent: div,\n id: \"ts_walkVelocity\",\n display: \"inline\",\n min: 0,\n step: 0.1,\n value: ToolSettings.walkVelocity,\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n handler: (value, _input) => { ToolSettings.walkVelocity = value; IModelApp.toolAdmin.exitViewTool(); },\n parseAsFloat: true,\n }, true);\n div.style.display = \"block\";\n div.style.textAlign = \"left\";\n\n div = IModelApp.makeHTMLElement(\"div\", { parent: settingsDiv });\n label = IModelApp.makeHTMLElement(\"label\", { innerText: \"Wheel Zoom Bump Distance (meters): \", parent: div });\n label.style.display = \"inline\";\n label.htmlFor = \"ts_wheelZoomBumpDistance\";\n createNumericInput({\n parent: div,\n id: \"ts_wheelZoomBumpDistance\",\n display: \"inline\",\n min: 0,\n step: 0.025,\n value: ToolSettings.wheelZoomBumpDistance,\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n handler: (value, _input) => { ToolSettings.wheelZoomBumpDistance = value; IModelApp.toolAdmin.exitViewTool(); },\n parseAsFloat: true,\n }, true);\n div.style.display = \"block\";\n div.style.textAlign = \"left\";\n\n div = IModelApp.makeHTMLElement(\"div\", { parent: settingsDiv });\n label = IModelApp.makeHTMLElement(\"label\", { innerText: \"Wheel Zoom Ratio: \", parent: div });\n label.style.display = \"inline\";\n label.htmlFor = \"ts_wheelZoomRatio\";\n createNumericInput({\n parent: div,\n id: \"ts_wheelZoomRatio\",\n display: \"inline\",\n min: 1.0,\n step: 0.025,\n value: ToolSettings.wheelZoomRatio,\n handler: async (value, _input) => { ToolSettings.wheelZoomRatio = value; return IModelApp.toolAdmin.exitViewTool(); },\n parseAsFloat: true,\n }, true);\n div.style.display = \"block\";\n div.style.textAlign = \"left\";\n\n createLabeledNumericInput({\n id: \"num_inertiaDamping\",\n parent: settingsDiv,\n value: ToolSettings.viewingInertia.damping,\n handler: async (value, _) => { ToolSettings.viewingInertia.damping = value; return IModelApp.toolAdmin.exitViewTool(); },\n min: 0,\n max: 1,\n step: 0.05,\n parseAsFloat: true,\n name: \"Inertial damping: \",\n });\n createLabeledNumericInput({\n id: \"num_inertiaDuration\",\n parent: settingsDiv,\n value: ToolSettings.viewingInertia.duration.milliseconds / 1000,\n handler: async (value, _) => { ToolSettings.viewingInertia.duration = BeDuration.fromMilliseconds(value * 1000); return IModelApp.toolAdmin.exitViewTool(); },\n min: 0,\n max: 10,\n step: 0.5,\n parseAsFloat: true,\n name: \"Inertial duration (seconds): \",\n });\n }\n\n public dispose(): void { }\n}\n"]}
package/package.json ADDED
@@ -0,0 +1,59 @@
1
+ {
2
+ "name": "@itwin/frontend-devtools",
3
+ "version": "3.0.0-dev.72",
4
+ "description": "Debug menu and supporting UI widgets",
5
+ "main": "lib/frontend-devtools.js",
6
+ "imodeljsSharedLibrary": true,
7
+ "license": "MIT",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "https://github.com/imodeljs/imodeljs/tree/master/core/frontend-devtools"
11
+ },
12
+ "keywords": [
13
+ "Bentley",
14
+ "BIM",
15
+ "iModel",
16
+ "UI",
17
+ "Widget"
18
+ ],
19
+ "author": {
20
+ "name": "Bentley Systems, Inc.",
21
+ "url": "http://www.bentley.com"
22
+ },
23
+ "dependencies": {
24
+ "@itwin/core-bentley": "3.0.0-dev.72",
25
+ "@itwin/core-geometry": "3.0.0-dev.72",
26
+ "@itwin/core-common": "3.0.0-dev.72",
27
+ "@itwin/core-frontend": "3.0.0-dev.72",
28
+ "@itwin/core-i18n": "3.0.0-dev.72",
29
+ "@bentley/itwin-client": "3.0.0-dev.72",
30
+ "file-saver": "^2.0.2"
31
+ },
32
+ "devDependencies": {
33
+ "@itwin/build-tools": "3.0.0-dev.72",
34
+ "@itwin/eslint-plugin": "3.0.0-dev.72",
35
+ "@types/file-saver": "^2.0.1",
36
+ "@types/node": "14.14.31",
37
+ "cpx": "^1.5.0",
38
+ "eslint": "^7.11.0",
39
+ "rimraf": "^3.0.2",
40
+ "typescript": "~4.4.0"
41
+ },
42
+ "eslintConfig": {
43
+ "plugins": [
44
+ "@itwin"
45
+ ],
46
+ "extends": "plugin:@itwin/itwinjs-recommended"
47
+ },
48
+ "scripts": {
49
+ "compile": "npm run build",
50
+ "build": "npm run copy:assets && tsc 1>&2",
51
+ "copy:assets": "cpx \"./public/**/*\" ./lib/public",
52
+ "clean": "rimraf lib .rush/temp/package-deps*.json",
53
+ "docs": "betools docs --includes=../../generated-docs/extract --json=../../generated-docs/core/frontend-devtools/file.json --tsIndexFile=./frontend-devtools.ts --onlyJson",
54
+ "extract-api": "betools extract-api --entry=frontend-devtools",
55
+ "lint": "eslint -f visualstudio \"./src/**/*.ts\" 1>&2",
56
+ "test": "",
57
+ "cover": ""
58
+ }
59
+ }