// SSSSSSSSSSSSSSS TTTTTTTTTTTTTTTTTTTTTTT OOOOOOOOO PPPPPPPPPPPPPPPPP
// SS:::::::::::::::ST:::::::::::::::::::::T OO:::::::::OO P::::::::::::::::P
// S:::::SSSSSS::::::ST:::::::::::::::::::::T OO:::::::::::::OO P::::::PPPPPP:::::P
// S:::::S SSSSSSST:::::TT:::::::TT:::::TO:::::::OOO:::::::OPP:::::P P:::::P
// S:::::S TTTTTT T:::::T TTTTTTO::::::O O::::::O P::::P P:::::P
// S:::::S T:::::T O:::::O O:::::O P::::P P:::::P
// S::::SSSS P::::PPPPPP:::::P
// SS::::::SSSSS This file is generated. To update it, P:::::::::::::PP
// SSS::::::::SS run roll_closure_compiler. P::::PPPPPPPPP
// SSSSSS::::S P::::P
// S:::::S T:::::T O:::::O O:::::O P::::P
// S:::::S T:::::T O::::::O O::::::O P::::P
// SSSSSSS S:::::S TT:::::::TT O:::::::OOO:::::::OPP::::::PP
// S::::::SSSSSS:::::S T:::::::::T OO:::::::::::::OO P::::::::P
// S:::::::::::::::SS T:::::::::T OO:::::::::OO P::::::::P
// SSSSSSSSSSSSSSS TTTTTTTTTTT OOOOOOOOO PPPPPPPPPP
/*
* Copyright 2016 The Closure Compiler Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @fileoverview Closure compiler externs for the Polymer library.
* Originally part of the Polymer Project. Original license below.
*
* @externs
* @suppress {strictMissingProperties}
* @license
* Copyright (c) 2015 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.
*/
if (Math.random() < 1) {
throw "polymer externs should not be executed";
}
/**
* @param {!{is: string}} descriptor The Polymer descriptor of the element.
* @see https://github.com/Polymer/polymer/blob/0.8-preview/PRIMER.md#custom-element-registration
*/
var Polymer = function(descriptor) {};
/**
* Re-evaluates and applies custom CSS properties based on dynamic
* changes to this element's scope, such as adding or removing classes.
*
* For performance reasons, Polymer's custom CSS property shim relies
* on this explicit signal from the user to indicate when changes have
* been made that affect the values of custom properties.
*
* @param {Object=} properties Properties object which is mixed into
* the document root `customStyle` property. This argument provides a
* shortcut for setting `customStyle` and then calling `updateStyles`.
*
* @see http://polymer.github.io/polymer/
*/
Polymer.updateStyles = function(properties) {};
/** @constructor @extends {HTMLElement} */
var PolymerElement = function() {};
/**
* A mapping from ID to element in this Polymer Element's local DOM.
* @type {!Object}
*/
PolymerElement.prototype.$;
/**
* True if the element has been attached to the DOM.
* @type {boolean}
*/
PolymerElement.prototype.isAttached;
/**
* The root node of the element.
* @type {!Node}
*/
PolymerElement.prototype.root;
/**
* The root node for the element.
* Only exists if running under Shady Dom.
* You usually want to use `this.root`.
*
* @type {?Node|undefined}
*/
PolymerElement.prototype.shadyRoot;
/**
* Returns the first node in this element’s local DOM that matches selector.
* @param {string} selector
* @return {Element} Element found by the selector, or null if not found.
*/
PolymerElement.prototype.$$ = function(selector) {};
/** @type {string} The custom element tag name. */
PolymerElement.prototype.is;
/** @type {null|!HTMLTemplateElement} The element's template. */
PolymerElement.prototype._template;
/** @type {string} The native element this element extends. */
PolymerElement.prototype.extends;
/**
* An array of objects whose properties get added to this element.
* @see https://www.polymer-project.org/1.0/docs/devguide/behaviors.html
* @type {!Array<!Object>|undefined}
*/
PolymerElement.prototype.behaviors;
/**
* A string-separated list of dependent properties that should result in a
* change function being called. These observers differ from single-property
* observers in that the change handler is called asynchronously.
*
* @type {!Object<string, string>|undefined}
*/
PolymerElement.prototype.observers;
/** On create callback. */
PolymerElement.prototype.created = function() {};
/** On ready callback. */
PolymerElement.prototype.ready = function() {};
/** On before register callback. */
PolymerElement.prototype.beforeRegister = function() {};
/** On registered callback. */
PolymerElement.prototype.registered = function() {};
/** On attached to the DOM callback. */
PolymerElement.prototype.attached = function() {};
/** On detached from the DOM callback. */
PolymerElement.prototype.detached = function() {};
/**
* Callback fired when an attribute on the element has been changed.
*
* @param {string} name The name of the attribute that changed.
*/
PolymerElement.prototype.attributeChanged = function(name) {};
/** @typedef {!{
* type: !Function,
* reflectToAttribute: (boolean|undefined),
* readOnly: (boolean|undefined),
* notify: (boolean|undefined),
* value: *,
* computed: (string|undefined),
* observer: (string|undefined)
* }} */
PolymerElement.PropertyConfig;
/** @typedef {!Object<string, (!Function|!PolymerElement.PropertyConfig)>} */
PolymerElement.Properties;
/** @type {!PolymerElement.Properties} */
PolymerElement.prototype.properties;
/** @type {!Object<string, *>} */
PolymerElement.prototype.hostAttributes;
/**
* An object that maps events to event handler function names.
* @type {!Object<string, string>}
*/
PolymerElement.prototype.listeners;
/**
* Force this element to distribute its children to its local dom.
* A user should call `distributeContent` if distribution has been
* invalidated due to changes to selectors on child elements that
* effect distribution that were not made via `Polymer.dom`.
* For example, if an element contains an insertion point with
* `<content select=".foo">` and a `foo` class is added to a child,
* then `distributeContent` must be called to update
* local dom distribution.
* @param {boolean} updateInsertionPoints Shady DOM does not detect
* <content> insertion that is nested in a sub-tree being appended.
* Set to true to distribute to newly added nested <content>'s.
*/
PolymerElement.prototype.distributeContent = function(updateInsertionPoints) {};
/**
* Return the element whose local dom within which this element is contained.
* @type {?Element}
*/
PolymerElement.prototype.domHost;
/**
* Notifies the event binding system of a change to a property.
* @param {string} path The path to set.
* @param {*=} value The value to send in the update notification.
* @param {boolean=} fromAbove When true, specifies that the change came from
* above this element and thus upward notification is not necessary.
* @return {boolean} True if notification actually took place, based on a dirty
* check of whether the new value was already known.
*/
PolymerElement.prototype.notifyPath = function(path, value, fromAbove) {};
/**
* @param {string} path Path that should be notified.
* @param {!Array<!PolymerSplice>} splices Array of splice records indicating
* ordered changes that occurred to the array.
*/
PolymerElement.prototype.notifySplices = function(path, splices) {};
/**
* Convienence method for setting a value to a path and notifying any
* elements bound to the same path.
*
* Note, if any part in the path except for the last is undefined,
* this method does nothing (this method does not throw when
* dereferencing undefined paths).
*
* @param {(string|Array<(string|number)>)} path Path to the value
* to read. The path may be specified as a string (e.g. `foo.bar.baz`)
* or an array of path parts (e.g. `['foo.bar', 'baz']`). Note that
* bracketed expressions are not supported; string-based path parts
* *must* be separated by dots. Note that when dereferencing array
* indices, the index may be used as a dotted part directly
* (e.g. `users.12.name` or `['users', 12, 'name']`).
* @param {*} value Value to set at the specified path.
* @param {Object=} root Root object from which the path is evaluated.
*/
PolymerElement.prototype.set = function(path, value, root) {};
/**
* Convienence method for reading a value from a path.
*
* Note, if any part in the path is undefined, this method returns
* `undefined` (this method does not throw when dereferencing undefined
* paths).
*
* @param {(string|Array<(string|number)>)} path Path to the value
* to read. The path may be specified as a string (e.g. `foo.bar.baz`)
* or an array of path parts (e.g. `['foo.bar', 'baz']`). Note that
* bracketed expressions are not supported; string-based path parts
* *must* be separated by dots. Note that when dereferencing array
* indices, the index may be used as a dotted part directly
* (e.g. `users.12.name` or `['users', 12, 'name']`).
* @param {Object=} root Root object from which the path is evaluated.
* @return {*} Value at the path, or `undefined` if any part of the path
* is undefined.
*/
PolymerElement.prototype.get = function(path, root) {};
/**
* Adds items onto the end of the array at the path specified.
*
* The arguments after `path` and return value match that of
* `Array.prototype.push`.
*
* This method notifies other paths to the same array that a
* splice occurred to the array.
*
* @param {string} path Path to array.
* @param {...*} var_args Items to push onto array
* @return {number} New length of the array.
*/
PolymerElement.prototype.push = function(path, var_args) {};
/**
* Removes an item from the end of array at the path specified.
*
* The arguments after `path` and return value match that of
* `Array.prototype.pop`.
*
* This method notifies other paths to the same array that a
* splice occurred to the array.
*
* @param {string} path Path to array.
* @return {*} Item that was removed.
*/
PolymerElement.prototype.pop = function(path) {};
/**
* Starting from the start index specified, removes 0 or more items
* from the array and inserts 0 or more new itms in their place.
*
* The arguments after `path` and return value match that of
* `Array.prototype.splice`.
*
* This method notifies other paths to the same array that a
* splice occurred to the array.
*
* @param {string} path Path to array.
* @param {number} start Index from which to start removing/inserting.
* @param {number} deleteCount Number of items to remove.
* @param {...*} var_args Items to insert into array.
* @return {!Array} Array of removed items.
*/
PolymerElement.prototype.splice = function(path, start, deleteCount, var_args) {};
/**
* Removes an item from the beginning of array at the path specified.
*
* The arguments after `path` and return value match that of
* `Array.prototype.pop`.
*
* This method notifies other paths to the same array that a
* splice occurred to the array.
*
* @param {string} path Path to array.
* @return {*} Item that was removed.
*/
PolymerElement.prototype.shift = function(path) {};
/**
* Adds items onto the beginning of the array at the path specified.
*
* The arguments after `path` and return value match that of
* `Array.prototype.push`.
*
* This method notifies other paths to the same array that a
* splice occurred to the array.
*
* @param {string} path Path to array.
* @param {...*} var_args Items to insert info array
* @return {number} New length of the array.
*/
PolymerElement.prototype.unshift = function(path, var_args) {};
/**
* Returns a list of element children distributed to this element's
* `<content>`.
*
* If this element contans more than one `<content>` in its
* local DOM, an optional selector may be passed to choose the desired
* content. This method differs from `getContentChildNodes` in that only
* elements are returned.
*
* @param {string=} slctr CSS selector to choose the desired
* `<content>`. Defaults to `content`.
* @return {!Array<!HTMLElement>} List of distributed nodes for the
* `<content>`.
*/
PolymerElement.prototype.getContentChildren = function(slctr) {};
/**
* Returns a list of nodes that are the effective childNodes. The effective
* childNodes list is the same as the element's childNodes except that
* any `<content>` elements are replaced with the list of nodes distributed
* to the `<content>`, the result of its `getDistributedNodes` method.
*
* @return {!Array<!Node>} List of effective child nodes.
*/
PolymerElement.prototype.getEffectiveChildNodes = function() {};
/**
* Returns a list of elements that are the effective children. The effective
* children list is the same as the element's children except that
* any `<content>` elements are replaced with the list of elements
* distributed to the `<content>`.
*
* @return {!Array<!Node>} List of effective children.
*/
PolymerElement.prototype.getEffectiveChildren = function() {};
/**
* Returns a string of text content that is the concatenation of the
* text content's of the element's effective childNodes (the elements
* returned by <a href="#getEffectiveChildNodes>getEffectiveChildNodes</a>.
*
* @return {string} A concatenated string of all effective childNode text
* content.
*/
PolymerElement.prototype.getEffectiveTextContent = function() {};
/**
* Returns the first effective child that match selector.
*
* @param {string} selector
* @return {?HTMLElement}
*/
PolymerElement.prototype.queryEffectiveChildren = function(selector) {};
/**
* Returns a list of effective children that match selector.
*
* @param {string} selector
* @return {!Array<!HTMLElement>}
*/
PolymerElement.prototype.queryAllEffectiveChildren = function(selector) {};
/**
* Fire an event.
*
* @param {string} type An event name.
* @param {*=} detail
* @param {{
* bubbles: (boolean|undefined),
* cancelable: (boolean|undefined),
* node: (!EventTarget|undefined)}=} options
* @return {Object} event
*/
PolymerElement.prototype.fire = function(type, detail, options) {};
/**
* Toggles the named boolean class on the host element, adding the class if
* bool is truthy and removing it if bool is falsey. If node is specified, sets
* the class on node instead of the host element.
* @param {string} name
* @param {boolean=} bool
* @param {HTMLElement=} node
*/
PolymerElement.prototype.toggleClass = function(name, bool, node) {};
/**
* Toggles the named boolean attribute on the host element, adding the attribute
* if bool is truthy and removing it if bool is falsey. If node is specified,
* sets the attribute on node instead of the host element.
* @param {string} name
* @param {boolean=} bool
* @param {HTMLElement=} node
*/
PolymerElement.prototype.toggleAttribute = function(name, bool, node) {};
/**
* Moves a boolean attribute from oldNode to newNode, unsetting the attribute
* (if set) on oldNode and setting it on newNode.
* @param {string} name
* @param {!HTMLElement} newNode
* @param {!HTMLElement} oldNode
*/
PolymerElement.prototype.attributeFollows = function(name, newNode, oldNode) {};
/**
* Convenience method to add an event listener on a given element, late bound to
* a named method on this element.
* @param {!EventTarget} node Element to add event listener to.
* @param {string} eventName Name of event to listen for.
* @param {string} methodName Name of handler method on this to call.
*/
PolymerElement.prototype.listen = function(node, eventName, methodName) {};
/**
* Convenience method to remove an event listener from a given element.
* @param {?EventTarget} node Element to remove event listener from.
* @param {string} eventName Name of event to stop listening for.
* @param {string} methodName Name of handler method on this to remove.
*/
PolymerElement.prototype.unlisten = function(node, eventName, methodName) {};
/**
* Override scrolling behavior to all direction, one direction, or none.
*
* Valid scroll directions:
* 'all': scroll in any direction
* 'x': scroll only in the 'x' direction
* 'y': scroll only in the 'y' direction
* 'none': disable scrolling for this node
*
* @param {string=} direction Direction to allow scrolling Defaults to all.
* @param {HTMLElement=} node Element to apply scroll direction setting.
* Defaults to this.
*/
PolymerElement.prototype.setScrollDirection = function(direction, node) {};
/**
* @param {!Function} method
* @param {number=} wait
* @return {number} A handle which can be used to cancel the job.
*/
PolymerElement.prototype.async = function(method, wait) {};
/**
* @param {...*} var_args
*/
PolymerElement.prototype.factoryImpl = function(var_args) {};
/**
* Apply style scoping to the specified container and all its descendants.
* @param {!Element} container Element to scope.
* @param {boolean} shouldObserve When true, monitors the container for changes
* and re-applies scoping for any future changes.
*/
PolymerElement.prototype.scopeSubtree = function(container, shouldObserve) {};
/**
* Aliases one data path as another, such that path notifications from one
* are routed to the other.
*
* @param {string} to Target path to link.
* @param {string} from Source path to link.
*/
PolymerElement.prototype.linkPaths = function(to, from) {}
/**
* Removes a data path alias previously established with `linkPaths`.
*
* Note, the path to unlink should be the target (`to`) used when
* linking the paths.
*
* @param {string} path Target path to unlink.
*/
PolymerElement.prototype.unlinkPaths = function(path) {}
/**
* Copies own properties (including accessor descriptors) from a source
* object to a target object.
*
* @param {?Object} target Target object to copy properties to.
* @param {?Object} source Source object to copy properties from.
* @return {?Object} Target object that was passed as first argument or source
* object if the target was null.
*/
PolymerElement.prototype.extend = function(target, source) {};
/** @const */
Polymer.Base = {};
/**
* Used by the promise-polyfill on its own.
*
* @param {!Function} method
* @param {number=} wait
* @return {number} A handle which can be used to cancel the job.
*/
Polymer.Base.async = function(method, wait) {};
/**
* @param {string} tag
* @param {!Object=} props
* @return {!Element}
*/
Polymer.Base.create = function(tag, props) {};
/**
* Copies own properties (including accessor descriptors) from a source
* object to a target object.
*
* @param {?Object} target Target object to copy properties to.
* @param {?Object} source Source object to copy properties from.
* @return {?Object} Target object that was passed as first argument or source
* object if the target was null.
*/
Polymer.Base.extend = function(target, source) {};
/**
* Returns a property descriptor object for the property specified.
*
* This method allows introspecting the configuration of a Polymer element's
* properties as configured in its `properties` object. Note, this method
* normalizes shorthand forms of the `properties` object into longhand form.
*
* @param {string} property Name of property to introspect.
* @return {Object} Property descriptor for specified property.
*/
Polymer.Base.getPropertyInfo = function(property) {};
/**
* Dynamically imports an HTML document.
* @param {string} href
* @param {Function=} onload
* @param {Function=} onerror
* @param {boolean=} async
*/
Polymer.Base.importHref = function(href, onload, onerror, async) {};
/**
* Copies props from a source object to a target object.
*
* Note, this method uses a simple `for...in` strategy for enumerating
* properties. To ensure only `ownProperties` are copied from source
* to target and that accessor implementations are copied, use `extend`.
*
* @param {!Object} target Target object to copy properties to.
* @param {?Object} source Source object to copy properties from.
* @return {!Object} Target object that was passed as first argument.
*/
Polymer.Base.mixin = function(target, source) {};
/**
* @param {string|!Array<string|number>} path
* @param {!Object=} root
* @return {*}
*/
Polymer.Base.get = function(path, root) {};
/**
* @param {string} type
* @param {*=} detail
* @param {!Object=} options
* @return {!CustomEvent}
*/
Polymer.Base.fire = function(type, detail, options) {};
/**
* For Polymer internal use only, except for
* github.com/Polymer/polymer/issues/4138
* @type {!function (!Node, ?string, *, ?Object)}
*/
Polymer.Base._computeFinalAnnotationValue;
/**
* @param {...*} var_args
* For Polymer-internal use only.
*/
Polymer.Base._warn = function(var_args) {};
/**
* @param {...*} var_args
* For Polymer-internal use only.
*/
Polymer.Base._error = function(var_args) {};
/** @const */
Polymer.Gestures = {};
/**
* @param {!Node} node
* @param {string} evType
* @param {?Function} handler
* @return {boolean}
* @deprecated Use addListener.
*/
Polymer.Gestures.add = function(node, evType, handler) {};
/**
* @param {!Node} node
* @param {string} evType
* @param {?Function} handler
* @return {boolean}
*/
Polymer.Gestures.addListener = function(node, evType, handler) {};
/**
* Gets the original target of the given event.
*
* Cheaper than Polymer.dom(ev).path[0];
* See https://github.com/Polymer/polymer/blob/master/src/standard/gestures.html#L191
*
* @param {Event} ev .
* @return {Element} The original target of the event.
*/
Polymer.Gestures.findOriginalTarget = function(ev) {};
/**
* @type {!Object}
*/
Polymer.Gestures.gestures = {};
/**
* @param {Node} node
* @param {string} value
*/
Polymer.Gestures.setTouchAction = function(node, value) {};
/**
* @type {!Object}
*/
Polymer.Gestures.gestures.tap = {};
/**
* Reset the tap gesture's state manually
* @type {function()}
*/
Polymer.Gestures.gestures.tap.reset = function() {};
/**
* @param {number} handle
*/
PolymerElement.prototype.cancelAsync = function(handle) {};
/**
* Call debounce to collapse multiple requests for a named task into one
* invocation, which is made after the wait time has elapsed with no new
* request. If no wait time is given, the callback is called at microtask timing
* (guaranteed to be before paint).
* @param {string} jobName
* @param {!Function} callback
* @param {number=} wait
*/
PolymerElement.prototype.debounce = function(jobName, callback, wait) {};
/**
* Cancels an active debouncer without calling the callback.
* @param {string} jobName
*/
PolymerElement.prototype.cancelDebouncer = function(jobName) {};
/**
* Calls the debounced callback immediately and cancels the debouncer.
* @param {string} jobName
*/
PolymerElement.prototype.flushDebouncer = function(jobName) {};
/**
* @param {string} jobName
* @return {boolean} True if the named debounce task is waiting to run.
*/
PolymerElement.prototype.isDebouncerActive = function(jobName) {};
/**
* Applies a CSS transform to the specified node, or this element if no node is
* specified. transform is specified as a string.
* @param {string} transform
* @param {HTMLElement=} node
*/
PolymerElement.prototype.transform = function(transform, node) {};
/**
* Transforms the specified node, or this element if no node is specified.
* @param {number|string} x
* @param {number|string} y
* @param {number|string} z
* @param {HTMLElement=} node
*/
PolymerElement.prototype.translate3d = function(x, y, z, node) {};
/**
* Dynamically imports an HTML document.
* @param {string} href
* @param {Function=} onload
* @param {Function=} onerror
* @param {boolean=} async
*/
PolymerElement.prototype.importHref = function(href, onload, onerror, async) {};
/**
* Checks whether an element is in this element's light DOM tree.
* @param {?Node} node The element to be checked.
* @return {boolean} true if node is in this element's light DOM tree.
*/
PolymerElement.prototype.isLightDescendant = function(node) {};
/**
* Checks whether an element is in this element's local DOM tree.
* @param {?Node} node The element to be checked.
* @return {boolean} true if node is in this element's local DOM tree.
*/
PolymerElement.prototype.isLocalDescendant = function(node) {};
/**
* Delete an element from an array.
* @param {!Array|string} array Path to array from which to remove the item (or
* the array itself).
* @param {*} item Item to remove
* @return {!Array} The array with the item removed.
*/
PolymerElement.prototype.arrayDelete = function(array, item) {};
/**
* Resolve a url to make it relative to the current doc.
* @param {string} url
* @return {string}
*/
PolymerElement.prototype.resolveUrl = function(url) {};
/**
* Re-evaluates and applies custom CSS properties based on dynamic
* changes to this element's scope, such as adding or removing classes
* in this element's local DOM.
*
* For performance reasons, Polymer's custom CSS property shim relies
* on this explicit signal from the user to indicate when changes have
* been made that affect the values of custom properties.
*
* @param {Object=} properties Properties object which, if provided is mixed
* into the element's `customStyle` property. This argument provides a
* shortcut for setting `customStyle` and then calling `updateStyles`.
*/
PolymerElement.prototype.updateStyles = function(properties) {};
/**
* @type {!Object<string, string|undefined>}
*/
PolymerElement.prototype.customStyle;
/**
* Convenience method for creating an element and configuring it.
* @param {string} tagName HTML tag name
* @param {IObject<string, *>=} properties Object of properties to configure on the instance
* @return {!Element}
*/
PolymerElement.prototype.create = function(tagName, properties) {};
/**
* Returns the computed style value for the given property.
* @param {string} property
* @return {string} the computed value
*/
PolymerElement.prototype.getComputedStyleValue = function(property) {};
/**
* Logs a message to the console.
*
* @param {...*} var_args
* @protected
*/
PolymerElement.prototype._log = function(var_args) {};
/**
* Logs a message to the console with a 'warn' level.
*
* @param {...*} var_args
* @protected
*/
PolymerElement.prototype._warn = function(var_args) {};
/**
* Logs a message to the console with an 'error' level.
*
* @param {...*} var_args
* @protected
*/
PolymerElement.prototype._error = function(var_args) {};
/**
* Formats string arguments together for a console log.
*
* @param {...*} var_args
* @return {!Array} The formatted array of args to a log function.
* @protected
*/
PolymerElement.prototype._logf = function(var_args) {};
/** @type {boolean} True after this.ready() has run */
PolymerElement.prototype._readied;
/**
* Do not call this function.
*
* @param {string} path .
* @param {*} value .
*/
PolymerElement.prototype._notifyPathUp = function(path, value) {};
/**
* Do not call this function.
*
* @param {string} path .
* @param {*} value .
*/
PolymerElement.prototype._pathEffector = function(path, value) {};
/**
* Do not call this function.
*
* @param {string} path .
* @param {*} value .
*/
PolymerElement.prototype._propertySetter = function(path, value) {};
/**
* Do not call this function.
*
* @param {string} path .
*/
PolymerElement.prototype._notifyChange = function(path) {};
/**
* A Polymer DOM API for manipulating DOM such that local DOM and light DOM
* trees are properly maintained.
*
* @constructor
*/
var PolymerDomApi = function() {};
/**
* @param {?Node} node
* @return {boolean}
*/
PolymerDomApi.prototype.deepContains = function(node) {};
/** @param {!Node} node */
PolymerDomApi.prototype.appendChild = function(node) {};
/**
* @param {!Node} oldNode
* @param {!Node} newNode
*/
PolymerDomApi.prototype.replaceChild = function(oldNode, newNode) {};
/**
* @param {!Node} node
* @param {?Node} beforeNode
*/
PolymerDomApi.prototype.insertBefore = function(node, beforeNode) {};
/** @param {!Node} node */
PolymerDomApi.prototype.removeChild = function(node) {};
/** @type {!Array<!HTMLElement>} */
PolymerDomApi.prototype.children;
/** @type {!Array<!Node>} */
PolymerDomApi.prototype.childNodes;
/** @type {?Node} */
PolymerDomApi.prototype.parentNode;
/** @type {?Node} */
PolymerDomApi.prototype.firstChild;
/** @type {?Node} */
PolymerDomApi.prototype.lastChild;
/** @type {?HTMLElement} */
PolymerDomApi.prototype.firstElementChild;
/** @type {?HTMLElement} */
PolymerDomApi.prototype.lastElementChild;
/** @type {?Node} */
PolymerDomApi.prototype.previousSibling;
/** @type {?Node} */
PolymerDomApi.prototype.nextSibling;
/** @type {?HTMLElement} */
PolymerDomApi.prototype.previousElementSibling;
/** @type {?HTMLElement} */
PolymerDomApi.prototype.nextElementSibling;
/** @type {string} */
PolymerDomApi.prototype.textContent;
/** @type {string} */
PolymerDomApi.prototype.innerHTML;
/** @type {?HTMLElement} */
PolymerDomApi.prototype.activeElement;
/**
* @param {string} selector
* @return {?HTMLElement}
*/
PolymerDomApi.prototype.querySelector = function(selector) {};
/**
* @param {string} selector
* @return {!Array<!HTMLElement>}
*/
PolymerDomApi.prototype.querySelectorAll = function(selector) {};
/** @return {!Array<!Node>} */
PolymerDomApi.prototype.getDistributedNodes = function() {};
/** @return {!Array<!Node>} */
PolymerDomApi.prototype.getDestinationInsertionPoints = function() {};
/** @return {?Node} */
PolymerDomApi.prototype.getOwnerRoot = function() {};
/**
* @param {string} attribute
* @param {string|number|boolean} value Values are converted to strings with
* ToString, so we accept number and boolean since both convert easily to
* strings.
*/
PolymerDomApi.prototype.setAttribute = function(attribute, value) {};
/** @param {string} attribute */
PolymerDomApi.prototype.removeAttribute = function(attribute) {};
/**
* @typedef {function(!PolymerDomApi.ObserveInfo)}
*/
PolymerDomApi.ObserveCallback;
/**
* @typedef {{
* target: !Node,
* addedNodes: !Array<!Node>,
* removedNodes: !Array<!Node>
* }}
*/
PolymerDomApi.ObserveInfo;
/**
* A virtual type for observer callback handles.
*
* @private @constructor
*/
PolymerDomApi.ObserveHandle = function() {};
/**
* Notifies callers about changes to the element's effective child nodes,
* the same list as returned by `getEffectiveChildNodes`.
*
* @param {!PolymerDomApi.ObserveCallback} callback The supplied callback
* is called with an `info` argument which is an object that provides
* the `target` on which the changes occurred, a list of any nodes
* added in the `addedNodes` array, and nodes removed in the
* `removedNodes` array.
*
* @return {!PolymerDomApi.ObserveHandle} Handle which is the argument to
* `unobserveNodes`.
*/
PolymerDomApi.prototype.observeNodes = function(callback) {};
/**
* Stops observing changes to the element's effective child nodes.
*
* @param {!PolymerDomApi.ObserveHandle} handle The handle for the
* callback that should no longer receive notifications. This
* handle is returned from `observeNodes`.
*/
PolymerDomApi.prototype.unobserveNodes = function(handle) {};
/** @type {?DOMTokenList} */
PolymerDomApi.prototype.classList;
/**
* @param {string} selector
* @return {!Array<!HTMLElement>}
*/
PolymerDomApi.prototype.queryDistributedElements = function(selector) {};
/**
* Returns a list of effective child nodes for this element.
*
* @return {!Array<!HTMLElement>}
*/
PolymerDomApi.prototype.getEffectiveChildNodes = function() {};
/**
* A Polymer Event API.
*
* @constructor
*/
var PolymerEventApi = function() {};
/** @type {?EventTarget} */
PolymerEventApi.prototype.rootTarget;
/** @type {?EventTarget} */
PolymerEventApi.prototype.localTarget;
/** @type {?Array<!Element>|undefined} */
PolymerEventApi.prototype.path;
/** @type {Event} */
PolymerEventApi.prototype.event;
/** @const */
Polymer.Async = {};
/**
* @param {function()} callback
* @param {number=} waitTime
* @return {number}
*/
Polymer.Async.run = function (callback, waitTime) {};
/**
* @param {number} handle
*/
Polymer.Async.cancel = function(handle) {};
/**
* polymer-onerror experiment relies on this private API, so expose it only
* to let the compilation work. Do not use in user code.
*/
Polymer.Async._atEndOfMicrotask = function() {};
/**
* Returns a Polymer-friendly API for manipulating DOM of a specified node or
* an event API for a specified event..
*
* @param {?Node|?Event} nodeOrEvent
* @return {!PolymerDomApi|!PolymerEventApi}
*/
Polymer.dom = function(nodeOrEvent) {};
Polymer.dom.flush = function() {};
/** @constructor */
Polymer.Debouncer = function() {};
Polymer.Debouncer.prototype = {
/**
* @param {function()} callback
* @param {number} wait
*/
go: function(callback, wait) {},
stop: function() {},
complete: function() {}
};
/** @param {!Polymer.Debouncer} debouncer */
Polymer.dom.addDebouncer = function(debouncer) {};
/**
* Returns whether the given object is an instance of a Polymer element.
* @param {*} object
* @return {boolean}
*/
Polymer.isInstance = function(object) {};
/** @const */
Polymer.CaseMap = {};
/**
* Convert a string from dash to camel-case.
* @param {string} dash
* @return {string} The string in camel-case.
*/
Polymer.CaseMap.dashToCamelCase = function(dash) {};
/**
* Convert a string from camel-case to dash format.
* @param {string} camel
* @return {string} The string in dash format.
*/
Polymer.CaseMap.camelToDashCase = function(camel) {};
/**
* A Polymer data structure abstraction.
*
* @param {?Array} userArray
* @constructor
*/
Polymer.Collection = function(userArray) {};
Polymer.Collection.prototype.initMap = function() {};
/**
* @param {*} item
*/
Polymer.Collection.prototype.add = function(item) {};
/**
* @param {number|string} key
*/
Polymer.Collection.prototype.removeKey = function(key) {};
/**
* @param {*} item
* @return {number|string} The key of the item removed.
*/
Polymer.Collection.prototype.remove = function(item) {};
/**
* @param {*} item
* @return {number|string} The key of the item.
*/
Polymer.Collection.prototype.getKey = function(item) {};
/**
* @return {!Array<number|string>} The key of the item removed.
*/
Polymer.Collection.prototype.getKeys = function() {};
/**
* @param {number|string} key
* @param {*} item
*/
Polymer.Collection.prototype.setItem = function(key, item) {};
/**
* @param {number|string} key
* @return {*} The item for the given key if present.
*/
Polymer.Collection.prototype.getItem = function(key) {};
/**
* @return {!Array} The items in the collection
*/
Polymer.Collection.prototype.getItems = function() {};
/**
* @param {!Array} userArray
* @return {!Polymer.Collection} A new Collection wrapping the given array.
*/
Polymer.Collection.get = function(userArray) {};
/**
* @param {!Array} userArray
* @param {!Array<!PolymerSplice>} splices
* @return {!Array<!PolymerKeySplice>} KeySplices with added and removed keys
*/
Polymer.Collection.applySplices = function(userArray, splices) {};
/**
* Settings pulled from
* https://github.com/Polymer/polymer/blob/master/lib/utils/settings.html
* @const
*/
Polymer.Settings = {};
/** @type {string} */
Polymer.Settings.dom;
/** @type {boolean} */
Polymer.Settings.wantShadow;
/** @type {boolean} */
Polymer.Settings.hasShadow;
/** @type {boolean} */
Polymer.Settings.nativeShadow;
/** @type {boolean} */
Polymer.Settings.useShadow;
/** @type {boolean} */
Polymer.Settings.useNativeShadow;
/** @type {boolean} */
Polymer.Settings.useNativeImports;
/** @type {boolean} */
Polymer.Settings.useNativeCustomElements;
/** @type {boolean} */
Polymer.Settings.useNativeCSSProperties;
/**
* @see https://github.com/Polymer/polymer/blob/master/src/lib/template/templatizer.html
* @polymerBehavior
*/
Polymer.Templatizer = {
ctor: function() {},
/**
* @param {?Object=} model
* @return {?Element}
*/
stamp: function(model) {},
/**
* @param {?Element} template
* @param {boolean=} mutableData In Polymer 1.x, passing this argument is a
* no-op.
*/
templatize: function(template, mutableData) {},
/**
* Returns the template "model" associated with a given element, which
* serves as the binding scope for the template instance the element is
* contained in. A template model is an instance of `Polymer.Base`, and
* should be used to manipulate data associated with this template instance.
*
* Example:
*
* var model = modelForElement(el);
* if (model.index < 10) {
* model.set('item.checked', true);
* }
*
* @param {?HTMLElement} el Element for which to return a template model.
* @return {(!PolymerElement)|undefined} Model representing the binding scope for
* the element.
*/
modelForElement: function(el) {},
/**
* @param {function()} fn
* @protected
*/
_debounceTemplate: function(fn) {}
};
/**
* A node produced by Templatizer which has a templateInstance property.
*
* @constructor
* @extends {HTMLElement}
*/
var TemplatizerNode = function() {};
/** @type {?PolymerElement} */
TemplatizerNode.prototype._templateInstance;
/**
* @see https://github.com/Polymer/polymer/blob/1.x/src/lib/template/dom-if.html
* @extends {PolymerElement}
* @constructor
*/
var DomIf = function() {};
/**
* Forces the element to render its content. Normally rendering is
* asynchronous to a provoking change. This is done for efficiency so
* that multiple changes trigger only a single render. The render method
* should be called if, for example, template rendering is required to
* validate application state.
*/
DomIf.prototype.render = function() {};
/**
* @see https://github.com/Polymer/polymer/blob/master/src/lib/template/dom-repeat.html
* @extends {PolymerElement}
* @constructor
*/
var DomRepeatElement = function() {};
/**
* Forces the element to render its content. Normally rendering is
* asynchronous to a provoking change. This is done for efficiency so
* that multiple changes trigger only a single render. The render method
* should be called if, for example, template rendering is required to
* validate application state.
*/
DomRepeatElement.prototype.render = function() {};
/**
* Returns the item associated with a given element stamped by
* this `dom-repeat`.
*
* @param {!HTMLElement} el Element for which to return the item.
* @return {*} Item associated with the element.
*/
DomRepeatElement.prototype.itemForElement = function(el) {};
/**
* Returns the `Polymer.Collection` key associated with a given
* element stamped by this `dom-repeat`.
*
* @param {!HTMLElement} el Element for which to return the key.
* @return {*} Key associated with the element.
*/
DomRepeatElement.prototype.keyForElement = function(el) {};
/**
* Returns the inst index for a given element stamped by this `dom-repeat`.
* If `sort` is provided, the index will reflect the sorted order (rather
* than the original array order).
*
* @param {!HTMLElement} el Element for which to return the index.
* @return {*} Row index associated with the element (note this may
* not correspond to the array index if a user `sort` is applied).
*/
DomRepeatElement.prototype.indexForElement = function(el) {};
/**
* Count of currently rendered items after `filter` (if any) has been applied.
* If "chunking mode" is enabled, `renderedItemCount` is updated each time a
* set of template instances is rendered.
*
* @type {number}
*/
DomRepeatElement.prototype.renderedItemCount;
/**
* Event object for an event handler on a child of a dom-repeat template.
* @see https://www.polymer-project.org/1.0/docs/devguide/templates#handling-events
* @extends {CustomEvent}
* @constructor
* @template T
*/
var DomRepeatEvent = function() {};
/**
* @type {{
* index: number,
* item: T
* }}
*/
DomRepeatEvent.prototype.model;
/**
* @see https://github.com/Polymer/polymer/blob/master/src/lib/template/array-selector.html
* @extends {PolymerElement}
* @constructor
*/
var ArraySelectorElement = function() {};
/**
* Returns whether the item is currently selected.
*
* @param {*} item Item from `items` array to test
* @return {boolean} Whether the item is selected
*/
ArraySelectorElement.prototype.isSelected = function(item) {};
/**
* Clears the selection state.
*/
ArraySelectorElement.prototype.clearSelection = function() {};
/**
* Deselects the given item if it is already selected.
*
* @param {*} item Item from `items` array to deselect
*/
ArraySelectorElement.prototype.deselect = function(item) {};
/**
* Selects the given item. When `toggle` is true, this will automatically
* deselect the item if already selected.
*
* @param {*} item Item from `items` array to select
*/
ArraySelectorElement.prototype.select = function(item) {};
/**
* An Event type fired when moving while finger/button is down.
* state - a string indicating the tracking state:
* + start: fired when tracking is first detected (finger/button down and
* moved past a pre-set distance threshold)
* + track: fired while tracking
* + end: fired when tracking ends
* x - clientX coordinate for event
* y - clientY coordinate for event
* dx - change in pixels horizontally since the first track event
* dy - change in pixels vertically since the first track event
* ddx - change in pixels horizontally since last track event
* ddy - change in pixels vertically since last track event
* hover() - a function that may be called to determine the element currently
* being hovered
*
* @typedef {{
* state: string,
* x: number,
* y: number,
* dx: number,
* dy: number,
* ddx: number,
* ddy: number,
* hover: (function(): Node)
* }}
*/
var PolymerTrackEvent;
/**
* An Event type fired when a finger does down, up, or taps.
* x - clientX coordinate for event
* y - clientY coordinate for event
* sourceEvent - the original DOM event that caused the down action
*
* @typedef {{
* x: number,
* y: number,
* sourceEvent: Event
* }}
*/
var PolymerTouchEvent;
/**
* @typedef {{
* index: number,
* removed: !Array,
* addedCount: number,
* object: !Array,
* type: string,
* }}
*/
var PolymerSplice;
/**
* @typedef {{
* added: !Array<string|number>,
* removed: !Array<string|number>
* }}
*/
var PolymerKeySplice;
/**
* @typedef {{
* indexSplices: ?Array<!PolymerSplice>,
* keySplices: ?Array<!PolymerKeySplice>
* }}
*/
var PolymerSpliceChange;
/**
* The type of the object received by an observer function when deep
* sub-property observation is enabled. See:
* https://www.polymer-project.org/1.0/docs/devguide/properties.html#deep-observation
*
* @typedef {{
* path: string,
* value: (?Object|undefined),
* base: (?Object|undefined)
* }}
*/
var PolymerDeepPropertyChange;
/**
* The interface that iconsets should obey. Iconsets are registered by setting
* their name in the IronMeta 'iconset' db, and a value of type Polymer.Iconset.
*
* Used by iron-icon but needs to live here since iron-icon, iron-iconset, etc don't
* depend on each other at all and talk only through iron-meta.
*
* @interface
*/
Polymer.Iconset = function() {};
/**
* Applies an icon to the given element as a css background image. This
* method does not size the element, and it's usually necessary to set
* the element's height and width so that the background image is visible.
*
* @param {Element} element The element to which the icon is applied.
* @param {string} icon The name of the icon to apply.
* @param {string=} theme (optional) The name or index of the icon to apply.
* @param {number=} scale (optional, defaults to 1) Icon scaling factor.
*/
Polymer.Iconset.prototype.applyIcon = function(
element, icon, theme, scale) {};
/**
* Remove an icon from the given element by undoing the changes effected
* by `applyIcon`.
*
* @param {Element} element The element from which the icon is removed.
*/
Polymer.Iconset.prototype.removeIcon = function(element) {};
Polymer.ResolveUrl = {};
/**
* @param {string} cssText Some CSS text taken from ownerDocument.
* @param {!Document} ownerDocument The source of the css.
* @return {string} The given CSS text with its URLs rewritten to be based on
* the primary document of this window rather than the given ownerDocument.
*/
Polymer.ResolveUrl.resolveCss = function(cssText, ownerDocument) {}
/**
* @param {!Element} element An element whose URL attributes need to be renormed.
* @param {!Document} ownerDocument The document whose URL is the base of the
* element's current attributes.
*/
Polymer.ResolveUrl.resolveAttrs = function(element, ownerDocument) {}
/**
* @param {string} url A url that needs to be renormed.
* @param {?string} baseURI The current base of URL for the URL.
* @return {string} The given url rewritten to be based on
* the primary document of this window rather than the given url.
*/
Polymer.ResolveUrl.resolveUrl = function(url, baseURI) {}
/** @const */
Polymer.RenderStatus = {};
/**
* Makes callback when first render occurs or immediately if render has
* occurred.
* @param {!function()} cb Callback function to be invoked.
*/
Polymer.RenderStatus.whenReady = function(cb) {}
/**
* Queue up function call on next render.
* @param {!Element} element The element on which the function call is made.
* @param {!function()} fn The function called on next render.
* @param {...*} args The function arguments.
*/
Polymer.RenderStatus.afterNextRender = function(element, fn, args) {}
/**
* Static analysis for Polymer.
* @const
*/
var hydrolysis = {};
/**
* A database of Polymer metadata defined in HTML
* @param {boolean} attachAST If true, attach a parse5 compliant AST
* @param {Object=} opt_loader An optional FileLoader used to load
* external resources
*/
hydrolysis.Analyzer = function(attachAST, opt_loader) {};
/**
* Shorthand for transitively loading and processing all imports
* beginning at href.
* @param {string} href The root import to begin loading from.
* @param {Object=} opt_options Any additional options for the load.
*/
hydrolysis.Analyzer.analyze = function(href, opt_options) {};
/**
* Contains information useful for debugging. Should not be used in production
* code and the API may change on short notice.
* @const
*/
Polymer.telemetry = {};
/**
* Number of elements instantiated so far.
* @type {number}
*/
Polymer.telemetry.instanceCount;
/**
* Array of all registered element prototypes. Being prototypes, not all runtime
* properties will be available, but eg. `is` is always there.
* @type {!Array<!PolymerElement>}
*/
Polymer.telemetry.registrations;
/** @const */
Polymer.AppLayout = {};
/** @constructor */
Polymer.AppLayout.LocalDomWithBackground = function(){};
/** @type {!HTMLElement} */
Polymer.AppLayout.LocalDomWithBackground.prototype.backgroundFrontLayer;
/** @type {!HTMLElement} */
Polymer.AppLayout.LocalDomWithBackground.prototype.backgroundRearLayer;
/** @type {!HTMLElement} */
Polymer.AppLayout.LocalDomWithBackground.prototype.background;
/**
* @constructor
* @extends {PolymerElement}
*/
Polymer.AppLayout.ElementWithBackground = function(){};
// TODO(ajo): Follow up with app-layout team and remove private api from this prototype
Polymer.AppLayout.ElementWithBackground.prototype = {
/** @type {!Polymer.AppLayout.LocalDomWithBackground} */
$: null,
/** @return {boolean} True if there's content below the current element */
isContentBelow: function(){},
/** Updates the elements scroll state */
_updateScrollState: function(){},
/** @return {boolean} true if the element is on screen */
isOnScreen: function(){},
/** @type {number} Internal bookkeeping to track screen position */
_deltaHeight: 0,
/** @return {?Element} Element in local dom by id. */
_getDOMRef: function(title){}
}
/** @const */
Polymer.ArraySplice = {};
/**
* Returns an array of splice records indicating the minimum edits required
* to transform the `previous` array into the `current` array.
*
* Splice records are ordered by index and contain the following fields:
* - `index`: index where edit started
* - `removed`: array of removed items from this index
* - `addedCount`: number of items added at this index
*
* This function is based on the Levenshtein "minimum edit distance"
* algorithm. Note that updates are treated as removal followed by addition.
*
* The worst-case time complexity of this algorithm is `O(l * p)`
* l: The length of the current array
* p: The length of the previous array
*
* However, the worst-case complexity is reduced by an `O(n)` optimization
* to detect any shared prefix & suffix between the two arrays and only
* perform the more expensive minimum edit distance calculation over the
* non-shared portions of the arrays.
*
* @param {!Array} current The "changed" array for which splices will be
* calculated.
* @param {!Array} previous The "unchanged" original array to compare
* `current` against to determine the splices.
* @return {!Array} Returns an array of splice record objects. Each of these
* contains: `index` the location where the splice occurred; `removed`
* the array of removed items from this location; `addedCount` the number
* of items added at this location.
*/
Polymer.ArraySplice.calculateSplices = function(current, previous) {};
/**
* @constructor @extends {PolymerElement}
*/
Polymer.DomModule = function() {};
/**
* Retrieves the dom specified by `selector` in the module specified by
* `id`. For example, this.import('foo', 'img');
* @param {string} id
* @param {string=} opt_selector
* @return {?HTMLElement} Returns the dom which matches `selector` in the module
* at the specified `id`.
*/
Polymer.DomModule.import = function(id, opt_selector) {};
/** @const */
Polymer.Path = {
/**
* @param {string=} base
* @param {string=} newBase
* @param {string=} path
* @return {string}
*/
translate: function(base, newBase, path) {},
/**
* @param {string=} base
* @param {string=} wildcard
* @param {string=} path
* @return {boolean}
*/
matches: function(base, wildcard, path) {}
};
/**
* For compatibility with both Polymer 1.0 and 2.0, code may check for certain
* objects and properties which don't exist in Polymer 1.0.
*
* We give those objects and properties the `undefined` type here, because
* the dependency tree will either contain these externs and Polymer 1.0 or
* it will contain Polymer 2.0 which defines the full types.
*/
/** @type {undefined} */
var ShadyDOM;
Polymer.flush;
Polymer.enqueueDebouncer;
Polymer.Async.animationFrame;
Polymer.Async.idlePeriod;
Polymer.Async.microTask;
Polymer.Debouncer.debounce;
Polymer.Templatizer.mutableData;
Polymer.Templatizer.parentModel;
Polymer.Templatizer.forwardHostProp;
Polymer.Templatizer.notifyInstanceProp;
Polymer.Templatizer._setPendingPropertyOrPath;
Polymer.Templatizer._setPendingProperty;
Polymer.Templatizer._instanceProps;
/**
* @param {number} index
* @return {boolean}
*/
ArraySelectorElement.prototype.isIndexSelected = function(index) {};