UNPKG

google-closure-library

Version:
209 lines (186 loc) 4.86 kB
/** * @license * Copyright The Closure Library Authors. * SPDX-License-Identifier: Apache-2.0 */ goog.module('goog.dom.element'); goog.module.declareLegacyNamespace(); const NodeType = goog.require('goog.dom.NodeType'); const TagName = goog.require('goog.dom.TagName'); /** @const {string} */ const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml'; /** * Determines if a value is a DOM Element. * @param {*} value * @return {boolean} */ const isElement = (value) => { return goog.isObject(value) && /** @type {!Node} */ (value).nodeType === NodeType.ELEMENT; }; /** * Determines if a value is a DOM HTML Element. * @param {*} value * @return {boolean} */ const isHtmlElement = (value) => { return goog.isObject(value) && isElement(value) && // namespaceURI of old browsers (FF < 3.6, IE < 9) will be null. (!/** @type {!Element} */ (value).namespaceURI || /** @type {!Element} */ (value).namespaceURI === HTML_NAMESPACE); }; /** * Determines if a value is a DOM HTML Element of a specified tag name. For * modern browsers, tags that provide access to special DOM APIs are implemented * as special subclasses of HTMLElement. * @param {*} value * @param {!TagName} tagName * @return {boolean} */ const isHtmlElementOfType = (value, tagName) => { return goog.isObject(value) && isHtmlElement(value) && // Some uncommon JS environments (e.g. Cobalt 9) have issues with tag // capitalization. (/** @type {!HTMLElement} */ (value).tagName.toUpperCase() === tagName.toString()); }; /** * Determines if a value is an <A> Element. * @param {*} value * @return {boolean} */ const isHtmlAnchorElement = (value) => { return isHtmlElementOfType(value, TagName.A); }; /** * Determines if a value is a <BUTTON> Element. * @param {*} value * @return {boolean} */ const isHtmlButtonElement = (value) => { return isHtmlElementOfType(value, TagName.BUTTON); }; /** * Determines if a value is a <LINK> Element. * @param {*} value * @return {boolean} */ const isHtmlLinkElement = (value) => { return isHtmlElementOfType(value, TagName.LINK); }; /** * Determines if a value is an <IMG> Element. * @param {*} value * @return {boolean} */ const isHtmlImageElement = (value) => { return isHtmlElementOfType(value, TagName.IMG); }; /** * Determines if a value is an <AUDIO> Element. * @param {*} value * @return {boolean} */ const isHtmlAudioElement = (value) => { return isHtmlElementOfType(value, TagName.AUDIO); }; /** * Determines if a value is a <VIDEO> Element. * @param {*} value * @return {boolean} */ const isHtmlVideoElement = (value) => { return isHtmlElementOfType(value, TagName.VIDEO); }; /** * Determines if a value is an <INPUT> Element. * @param {*} value * @return {boolean} */ const isHtmlInputElement = (value) => { return isHtmlElementOfType(value, TagName.INPUT); }; /** * Determines if a value is a <TEXTAREA> Element. * @param {*} value * @return {boolean} */ const isHtmlTextAreaElement = (value) => { return isHtmlElementOfType(value, TagName.TEXTAREA); }; /** * Determines if a value is a <CANVAS> Element. * @param {*} value * @return {boolean} */ const isHtmlCanvasElement = (value) => { return isHtmlElementOfType(value, TagName.CANVAS); }; /** * Determines if a value is an <EMBED> Element. * @param {*} value * @return {boolean} */ const isHtmlEmbedElement = (value) => { return isHtmlElementOfType(value, TagName.EMBED); }; /** * Determines if a value is a <FORM> Element. * @param {*} value * @return {boolean} */ const isHtmlFormElement = (value) => { return isHtmlElementOfType(value, TagName.FORM); }; /** * Determines if a value is a <FRAME> Element. * @param {*} value * @return {boolean} */ const isHtmlFrameElement = (value) => { return isHtmlElementOfType(value, TagName.FRAME); }; /** * Determines if a value is an <IFRAME> Element. * @param {*} value * @return {boolean} */ const isHtmlIFrameElement = (value) => { return isHtmlElementOfType(value, TagName.IFRAME); }; /** * Determines if a value is an <OBJECT> Element. * @param {*} value * @return {boolean} */ const isHtmlObjectElement = (value) => { return isHtmlElementOfType(value, TagName.OBJECT); }; /** * Determines if a value is a <SCRIPT> Element. * @param {*} value * @return {boolean} */ const isHtmlScriptElement = (value) => { return isHtmlElementOfType(value, TagName.SCRIPT); }; exports = { isElement, isHtmlElement, isHtmlElementOfType, isHtmlAnchorElement, isHtmlButtonElement, isHtmlLinkElement, isHtmlImageElement, isHtmlAudioElement, isHtmlVideoElement, isHtmlInputElement, isHtmlTextAreaElement, isHtmlCanvasElement, isHtmlEmbedElement, isHtmlFormElement, isHtmlFrameElement, isHtmlIFrameElement, isHtmlObjectElement, isHtmlScriptElement, };