UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

177 lines (140 loc) • 5.69 kB
"use strict"; /* global document, Node */ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; var injector = require("./utils/dependency_injector"); var noop = require("./utils/common").noop; var nativeDOMAdapterStrategy = { querySelectorAll: function querySelectorAll(element, selector) { return element.querySelectorAll(selector); }, elementMatches: function elementMatches(element, selector) { var matches = element.matches || element.matchesSelector || element.mozMatchesSelector || element.msMatchesSelector || element.oMatchesSelector || element.webkitMatchesSelector || function (selector) { var items = this.querySelectorAll(element.document || element.ownerDocument, selector); for (var i = 0; i < items.length; i++) { if (items[i] === element) { return true; } } }.bind(this); return matches.call(element, selector); }, createElement: function createElement(tagName, context) { context = context || this._document; return context.createElement(tagName); }, createElementNS: function createElementNS(ns, tagName, context) { context = context || this._document; return context.createElementNS(ns, tagName); }, createTextNode: function createTextNode(text, context) { context = context || this._document; return context.createTextNode(text); }, isNode: function isNode(element) { return (typeof element === "undefined" ? "undefined" : _typeof(element)) === "object" && "nodeType" in element; }, isElementNode: function isElementNode(element) { return element && element.nodeType === Node.ELEMENT_NODE; }, isTextNode: function isTextNode(element) { return element && element.nodeType === Node.TEXT_NODE; }, isDocument: function isDocument(element) { return element && element.nodeType === Node.DOCUMENT_NODE; }, removeElement: function removeElement(element) { var parentNode = element && element.parentNode; if (parentNode) { parentNode.removeChild(element); } }, insertElement: function insertElement(parentElement, newElement, nextSiblingElement) { if (parentElement && newElement && parentElement !== newElement) { if (nextSiblingElement) { parentElement.insertBefore(newElement, nextSiblingElement); } else { parentElement.appendChild(newElement); } } }, setAttribute: function setAttribute(element, name, value) { element.setAttribute(name, value); }, removeAttribute: function removeAttribute(element, name) { element.removeAttribute(name); }, setProperty: function setProperty(element, name, value) { element[name] = value; }, setText: function setText(element, text) { if (element) { element.textContent = text; } }, setClass: function setClass(element, className, isAdd) { if (element.nodeType === 1 && className) { if (element.classList) { if (isAdd) { element.classList.add(className); } else { element.classList.remove(className); } } else { // IE9 var classNames = element.className.split(" "); var classIndex = classNames.indexOf(className); if (isAdd && classIndex < 0) { element.className = element.className ? element.className + " " + className : className; } if (!isAdd && classIndex >= 0) { classNames.splice(classIndex, 1); element.className = classNames.join(" "); } } } }, setStyle: function setStyle(element, name, value) { element.style[name] = value || ''; }, _document: typeof document === "undefined" ? undefined : document, getDocument: function getDocument() { return this._document; }, getActiveElement: function getActiveElement() { return this._document.activeElement; }, getBody: function getBody() { return this._document.body; }, createDocumentFragment: function createDocumentFragment() { return this._document.createDocumentFragment(); }, getDocumentElement: function getDocumentElement() { return this._document.documentElement; }, getLocation: function getLocation() { return this._document.location; }, getSelection: function getSelection() { return this._document.selection; }, getReadyState: function getReadyState() { return this._document.readyState; }, getHead: function getHead() { return this._document.head; }, hasDocumentProperty: function hasDocumentProperty(property) { return property in this._document; }, listen: function listen(element, event, callback, options) { if (!element || !("addEventListener" in element)) { return noop; } element.addEventListener(event, callback, options); return function () { element.removeEventListener(event, callback); }; } }; module.exports = injector(nativeDOMAdapterStrategy);