chromium/third_party/polymer/v3_0/components-chromium/iron-location/iron-location.d.ts

/**
 * DO NOT EDIT
 *
 * This file was automatically generated by
 *   https://github.com/Polymer/tools/tree/master/packages/gen-typescript-declarations
 *
 * To modify these typings, edit the source file(s):
 *   iron-location.js
 */

import {Polymer} from '../polymer/lib/legacy/polymer-fn.js';

import {dom} from '../polymer/lib/legacy/polymer.dom.js';

import {LegacyElementMixin} from '../polymer/lib/legacy/legacy-element-mixin.js';

/**
 * The `iron-location` element manages binding to and from the current URL.
 *
 * iron-location is the first, and lowest level element in the Polymer team's
 * routing system. This is a beta release of iron-location as we continue work
 * on higher level elements, and as such iron-location may undergo breaking
 * changes.
 *
 * #### Properties
 *
 * When the URL is: `/search?query=583#details` iron-location's properties will be:
 *
 *   - path: `'/search'`
 *   - query: `'query=583'`
 *   - hash: `'details'`
 *
 * These bindings are bidirectional. Modifying them will in turn modify the URL.
 *
 * iron-location is only active while it is attached to the document.
 *
 * #### Links
 *
 * While iron-location is active in the document it will intercept clicks on links
 * within your site, updating the URL pushing the updated URL out through the
 * databinding system. iron-location only intercepts clicks with the intent to
 * open in the same window, so middle mouse clicks and ctrl/cmd clicks work fine.
 *
 * You can customize this behavior with the `urlSpaceRegex`.
 *
 * #### Dwell Time
 *
 * iron-location protects against accidental history spamming by only adding
 * entries to the user's history if the URL stays unchanged for `dwellTime`
 * milliseconds.
 */
interface IronLocationElement extends LegacyElementMixin, HTMLElement {

  /**
   * The pathname component of the URL.
   */
  path: string|null|undefined;

  /**
   * The query string portion of the URL.
   */
  query: string|null|undefined;

  /**
   * The hash component of the URL.
   */
  hash: string|null|undefined;

  /**
   * If the user was on a URL for less than `dwellTime` milliseconds, it
   * won't be added to the browser's history, but instead will be replaced
   * by the next entry.
   *
   * This is to prevent large numbers of entries from clogging up the user's
   * browser history. Disable by setting to a negative number.
   */
  dwellTime: number|null|undefined;

  /**
   * A regexp that defines the set of URLs that should be considered part
   * of this web app.
   *
   * Clicking on a link that matches this regex won't result in a full page
   * navigation, but will instead just update the URL state in place.
   *
   * This regexp is given everything after the origin in an absolute
   * URL. So to match just URLs that start with /search/ do:
   *     url-space-regex="^/search/"
   */
  urlSpaceRegex: string|RegExp|null;

  /**
   * A flag that specifies whether the spaces in query that would normally be
   * encoded as %20 should be encoded as +.
   *
   * Given an example text "hello world", it is encoded in query as
   * - "hello%20world" without the parameter
   * - "hello+world" with the parameter
   */
  encodeSpaceAsPlusInQuery: boolean|null|undefined;

  /**
   * urlSpaceRegex, but coerced into a regexp.
   */
  readonly _urlSpaceRegExp: RegExp|null;
  _lastChangedAt: number|null|undefined;
  _initialized: boolean|null|undefined;
  hostAttributes: object|null;
  created(): void;
  attached(): void;
  detached(): void;
  _hashChanged(): void;
  _urlChanged(): void;
  _getUrl(): any;
  _updateUrl(): void;

  /**
   * A necessary evil so that links work as expected. Does its best to
   * bail out early if possible.
   *
   * @param event .
   */
  _globalOnClick(event: MouseEvent|null): void;

  /**
   * Returns the absolute URL of the link (if any) that this click event
   * is clicking on, if we can and should override the resulting full
   * page navigation. Returns null otherwise.
   *
   * @param event .
   * @returns .
   */
  _getSameOriginLinkHref(event: MouseEvent|null): string|null;
  _makeRegExp(urlSpaceRegex: any): any;
}

export {IronLocationElement};

declare global {

  interface HTMLElementTagNameMap {
    "iron-location": IronLocationElement;
  }
}