blob: fd954c1180978d25470682d2086c9f184fd922cb [file] [log] [blame]
/**
* @fileoverview Internal shared types for Polymer
* @externs
*
* @license
* Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
* This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
* The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
* The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
* Code distributed by Google as part of the polymer project is also
* subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
*/
/* eslint-disable no-unused-vars, strict, valid-jsdoc */
/**
* @constructor
* @extends {DocumentFragment}
*/
function StampedTemplate() { }
/** @type {boolean} */
StampedTemplate.prototype.__noInsertionPoint;
/** @type {!Array<!Node>} */
StampedTemplate.prototype.nodeList;
/** @type {!Object<string, !Element>} */
StampedTemplate.prototype.$;
/** @type {!TemplateInfo | undefined} */
StampedTemplate.prototype.templateInfo;
/** @interface */
function NodeInfo() { }
/** @type {string} */
NodeInfo.prototype.id;
/** @type {!Array<{name: string, value: string}>}*/
NodeInfo.prototype.events;
/** @type {boolean} */
NodeInfo.prototype.hasInsertionPoint;
/** @type {!TemplateInfo} */
NodeInfo.prototype.templateInfo;
/** @type {!NodeInfo} */
NodeInfo.prototype.parentInfo;
/** @type {number} */
NodeInfo.prototype.parentIndex;
/** @type {number} */
NodeInfo.prototype.infoIndex;
/** @type {!Array<!Binding>} */
NodeInfo.prototype.bindings;
/** @interface */
function TemplateInfo() { }
/** @type {!Array<!NodeInfo>} */
TemplateInfo.prototype.nodeInfoList;
/** @type {!Array<!Node>} */
TemplateInfo.prototype.nodeList;
/** @type {boolean} */
TemplateInfo.prototype.stripWhitespace;
/** @type {boolean | undefined} */
TemplateInfo.prototype.hasInsertionPoint;
/** @type {!Object} */
TemplateInfo.prototype.hostProps;
/** @type {!Object} */
TemplateInfo.prototype.propertyEffects;
/** @type {TemplateInfo | undefined} */
TemplateInfo.prototype.nextTemplateInfo;
/** @type {TemplateInfo | undefined} */
TemplateInfo.prototype.previousTemplateInfo;
/** @type {!Array<!Node>} */
TemplateInfo.prototype.childNodes;
/** @type {boolean} */
TemplateInfo.prototype.wasPreBound;
/**
* type for HTMLTemplateElement with `_templateInfo`
*
* @constructor
* @extends {HTMLTemplateElement}
*/
function HTMLTemplateElementWithInfo() { }
/** @type {TemplateInfo} */
HTMLTemplateElementWithInfo.prototype._templateInfo;
/**
* @typedef {{
* literal: string,
* compoundIndex: (number | undefined)
* }}
*/
let LiteralBindingPart;
/**
* @typedef {{
* literal: boolean,
* name: string,
* value: (string | number),
* rootProperty: (string | undefined),
* structured: (boolean | undefined),
* wildcard: (boolean | undefined)
* }}
*/
let MethodArg;
/**
* @typedef {{
* methodName: string,
* static: boolean,
* args: !Array<!MethodArg>,
* dynamicFn: (boolean | undefined),
* }}
*/
let MethodSignature;
/**
* @typedef {{
* mode: string,
* negate: boolean,
* source: string,
* dependencies: !Array<(!MethodArg|string)>,
* customEvent: boolean,
* signature: Object,
* event: string
* }}
*/
let ExpressionBindingPart;
/**
* @typedef {LiteralBindingPart | ExpressionBindingPart}
*/
let BindingPart;
/**
* @typedef {{
* kind: string,
* target: string,
* parts: Array<!BindingPart>,
* literal: (string | undefined),
* isCompound: boolean,
* listenerEvent: (string | undefined),
* listenerNegate: (boolean | undefined)
* }}
*/
let Binding;
/**
* @typedef {{
* path: string
* }}
*/
let PathInfo;
/**
* @typedef {{
* forwardHostProp: (function(string, *) | undefined),
* instanceProps: (Object | undefined),
* mutableData: (boolean | undefined),
* notifyInstanceProp: (function(*, string, *) | undefined),
* parentModel: (boolean | undefined)
* }}
*/
let TemplatizeOptions;
/** @record */
function AsyncInterface(){}
/** @type {function(!Function, number=): number} */
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;