mirror of
https://github.com/Polymer/polymer.git
synced 2025-02-25 18:55:30 -06:00
Make Polymer gestures library safe for Closure property renaming (take 2). (#5314)
Make Polymer gestures library safe for Closure property renaming. The issue here was that we were assuming that the method for a given gesture would always match the string name of that gesture, e.g. that if the gesture name was "mousedown" that we could call gestureDefinition.mousedown. In actuality, gestureDefinition.mousedown could be renamed by Closure, which would throw with "undefined is not a function". The fix is to move the GesturesRecognizer type into our externs, which prevents those methods from being renamed.
This commit is contained in:
@@ -164,3 +164,51 @@ function AsyncInterface(){}
|
||||
AsyncInterface.prototype.run;
|
||||
/** @type {function(number): void} */
|
||||
AsyncInterface.prototype.cancel;
|
||||
|
||||
/** @record */
|
||||
let GestureInfo = function(){};
|
||||
/** @type {string|undefined} */
|
||||
GestureInfo.prototype.state;
|
||||
/** @type {boolean|undefined} */
|
||||
GestureInfo.prototype.started;
|
||||
/** @type {!Array<?>|undefined} */
|
||||
GestureInfo.prototype.moves;
|
||||
/** @type {number|undefined} */
|
||||
GestureInfo.prototype.x;
|
||||
/** @type {number|undefined} */
|
||||
GestureInfo.prototype.y;
|
||||
/** @type {boolean|undefined} */
|
||||
GestureInfo.prototype.prevent;
|
||||
/** @type {function(?): void|undefined} */
|
||||
GestureInfo.prototype.addMove;
|
||||
/** @type {null|undefined} */
|
||||
GestureInfo.prototype.movefn;
|
||||
/** @type {null|undefined} */
|
||||
GestureInfo.prototype.upFn;
|
||||
|
||||
/** @record */
|
||||
let GestureRecognizer = function(){};
|
||||
/** @type {string} */
|
||||
GestureRecognizer.prototype.name;
|
||||
/** @type {!Array<string>} */
|
||||
GestureRecognizer.prototype.deps;
|
||||
/** @type {function(): void} */
|
||||
GestureRecognizer.prototype.reset;
|
||||
/** @type {function(MouseEvent): void | undefined} */
|
||||
GestureRecognizer.prototype.mousedown;
|
||||
/** @type {(function(MouseEvent): void | undefined)} */
|
||||
GestureRecognizer.prototype.mousemove;
|
||||
/** @type {(function(MouseEvent): void | undefined)} */
|
||||
GestureRecognizer.prototype.mouseup;
|
||||
/** @type {(function(TouchEvent): void | undefined)} */
|
||||
GestureRecognizer.prototype.touchstart;
|
||||
/** @type {(function(TouchEvent): void | undefined)} */
|
||||
GestureRecognizer.prototype.touchmove;
|
||||
/** @type {(function(TouchEvent): void | undefined)} */
|
||||
GestureRecognizer.prototype.touchend;
|
||||
/** @type {(function(MouseEvent): void | undefined)} */
|
||||
GestureRecognizer.prototype.click;
|
||||
/** @type {!GestureInfo} */
|
||||
GestureRecognizer.prototype.info;
|
||||
/** @type {!Array<string>} */
|
||||
GestureRecognizer.prototype.emits;
|
||||
|
||||
Reference in New Issue
Block a user