diff --git a/front_end/layer_viewer/Layers3DView.js b/front_end/layer_viewer/Layers3DView.js index 8af9e654c8..ae7acf2df8 100644 --- a/front_end/layer_viewer/Layers3DView.js +++ b/front_end/layer_viewer/Layers3DView.js @@ -59,7 +59,7 @@ export class Layers3DView extends UI.Widget.VBox { this._layerViewHost = layerViewHost; this._layerViewHost.registerView(this); - this._transformController = new TransformController(this.contentElement); + this._transformController = new TransformController(/** @type {!HTMLElement} */ (this.contentElement)); this._transformController.addEventListener(TransformControllerEvents.TransformChanged, this._update, this); this._initToolbar(); diff --git a/front_end/layer_viewer/TransformController.js b/front_end/layer_viewer/TransformController.js index 2c312f88bb..6e7b239455 100644 --- a/front_end/layer_viewer/TransformController.js +++ b/front_end/layer_viewer/TransformController.js @@ -2,9 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @ts-nocheck -// TODO(crbug.com/1011811): Enable TypeScript compiler checks - import * as Common from '../common/common.js'; import * as Platform from '../platform/platform.js'; import * as UI from '../ui/ui.js'; @@ -14,12 +11,28 @@ import * as UI from '../ui/ui.js'; */ export class TransformController extends Common.ObjectWrapper.ObjectWrapper { /** - * @param {!Element} element + * @param {!HTMLElement} element * @param {boolean=} disableRotate */ constructor(element, disableRotate) { super(); + /** + * @type {!Object.} + */ this._shortcuts = {}; + /** + * @type {!Modes} + */ + this._mode; + this._scale = 1; + this._offsetX = 0; + this._offsetY = 0; + this._rotateX = 0; + this._rotateY = 0; + this._oldRotateX = 0; + this._oldRotateY = 0; + this._originX = 0; + this._originY = 0; this.element = element; this._registerShortcuts(); UI.UIUtils.installDragHandle( @@ -61,14 +74,23 @@ export class TransformController extends Common.ObjectWrapper.ObjectWrapper { return this._controlPanelToolbar; } + /** + * @param {!Event} event + */ _onKeyDown(event) { - const shortcutKey = UI.KeyboardShortcut.KeyboardShortcut.makeKeyFromEventIgnoringModifiers(event); + const shortcutKey = + UI.KeyboardShortcut.KeyboardShortcut.makeKeyFromEventIgnoringModifiers(/** @type {!KeyboardEvent} */ (event)); const handler = this._shortcuts[shortcutKey]; if (handler && handler(event)) { event.consume(); } } + /** + * + * @param {!Array} keys + * @param {function(!Event=):(boolean|void)} handler + */ _addShortcuts(keys, handler) { for (let i = 0; i < keys.length; ++i) { this._shortcuts[keys[i].key] = handler; @@ -252,23 +274,26 @@ export class TransformController extends Common.ObjectWrapper.ObjectWrapper { const zoomFactor = 1.1; /** @const */ const mouseWheelZoomSpeed = 1 / 120; - const scaleFactor = Math.pow(zoomFactor, event.wheelDeltaY * mouseWheelZoomSpeed); + const mouseEvent = /** @type {*} */ (event); + const scaleFactor = Math.pow(zoomFactor, mouseEvent.wheelDeltaY * mouseWheelZoomSpeed); this._onScale( - scaleFactor, event.clientX - this.element.totalOffsetLeft(), event.clientY - this.element.totalOffsetTop()); + scaleFactor, mouseEvent.clientX - this.element.totalOffsetLeft(), + mouseEvent.clientY - this.element.totalOffsetTop()); } /** * @param {!Event} event */ _onDrag(event) { + const {clientX, clientY} = /** @type {!MouseEvent} */ (event); if (this._mode === Modes.Rotate) { this._onRotate( - this._oldRotateX + (this._originY - event.clientY) / this.element.clientHeight * 180, - this._oldRotateY - (this._originX - event.clientX) / this.element.clientWidth * 180); + this._oldRotateX + (this._originY - clientY) / this.element.clientHeight * 180, + this._oldRotateY - (this._originX - clientX) / this.element.clientWidth * 180); } else { - this._onPan(event.clientX - this._originX, event.clientY - this._originY); - this._originX = event.clientX; - this._originY = event.clientY; + this._onPan(clientX - this._originX, clientY - this._originY); + this._originX = clientX; + this._originY = clientY; } } @@ -285,10 +310,10 @@ export class TransformController extends Common.ObjectWrapper.ObjectWrapper { } _onDragEnd() { - delete this._originX; - delete this._originY; - delete this._oldRotateX; - delete this._oldRotateY; + this._originX = 0; + this._originY = 0; + this._oldRotateX = 0; + this._oldRotateY = 0; } } diff --git a/front_end/timeline/TimelinePaintProfilerView.js b/front_end/timeline/TimelinePaintProfilerView.js index 01c91d9886..fcb73119f6 100644 --- a/front_end/timeline/TimelinePaintProfilerView.js +++ b/front_end/timeline/TimelinePaintProfilerView.js @@ -167,7 +167,8 @@ export class TimelinePaintImageView extends UI.Widget.Widget { this._maskElement = this._imageContainer.createChild('div'); this._imageElement.addEventListener('load', this._updateImagePosition.bind(this), false); - this._transformController = new LayerViewer.TransformController.TransformController(this.contentElement, true); + this._transformController = new LayerViewer.TransformController.TransformController( + /** @type {!HTMLElement} */ (this.contentElement), true); this._transformController.addEventListener( LayerViewer.TransformController.Events.TransformChanged, this._updateImagePosition, this); }