UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

162 lines (160 loc) • 5.93 kB
/** * DevExtreme (cjs/__internal/core/m_dom_adapter.js) * Version: 24.2.6 * Build date: Mon Mar 17 2025 * * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/ */ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.domAdapter = exports.default = void 0; var _common = require("../../core/utils/common"); var _dependency_injector = _interopRequireDefault(require("../../core/utils/dependency_injector")); var _shadow_dom = require("../../core/utils/shadow_dom"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const ELEMENT_NODE = 1; const TEXT_NODE = 3; const DOCUMENT_NODE = 9; const DOCUMENT_FRAGMENT_NODE = 11; const nativeDOMAdapterStrategy = { querySelectorAll: (element, selector) => element.querySelectorAll(selector), elementMatches(element, selector) { const matches = element.matches || element.matchesSelector || element.mozMatchesSelector || element.msMatchesSelector || element.oMatchesSelector || element.webkitMatchesSelector || (selector => { const doc = element.document || element.ownerDocument; if (!doc) { return false } const items = this.querySelectorAll(doc, selector); for (let i = 0; i < items.length; i++) { if (items[i] === element) { return true } } }); return matches.call(element, selector) }, createElement(tagName, context) { context = context ?? this._document; return context.createElement(tagName) }, createElementNS(ns, tagName, context) { context = context || this._document; return context.createElementNS(ns, tagName) }, createTextNode(text, context) { context = context || this._document; return context.createTextNode(text) }, createAttribute(text, context) { context = context || this._document; return context.createAttribute(text) }, isNode: element => !!element && "object" === typeof element && "nodeType" in element && "nodeName" in element, isElementNode: element => !!element && 1 === element.nodeType, isTextNode: element => element && 3 === element.nodeType, isDocument: element => element && 9 === element.nodeType, isDocumentFragment: element => element && 11 === element.nodeType, removeElement(element) { const parentNode = element && element.parentNode; if (parentNode) { parentNode.removeChild(element) } }, insertElement(parentElement, newElement, nextSiblingElement) { if (parentElement && newElement && parentElement !== newElement) { if (nextSiblingElement) { parentElement.insertBefore(newElement, nextSiblingElement) } else { parentElement.appendChild(newElement) } } }, getAttribute: (element, name) => element.getAttribute(name), setAttribute(element, name, value) { if ("style" === name) { element.style.cssText = value } else { element.setAttribute(name, value) } }, removeAttribute(element, name) { element.removeAttribute(name) }, setProperty(element, name, value) { element[name] = value }, setText(element, text) { if (element) { element.textContent = text } }, setClass(element, className, isAdd) { if (1 === element.nodeType && className) { isAdd ? element.classList.add(className) : element.classList.remove(className) } }, setStyle(element, name, value) { element.style[name] = value || "" }, _document: "undefined" === typeof document ? void 0 : document, getDocument() { return this._document }, getActiveElement(element) { const activeElementHolder = this.getRootNode(element); return activeElementHolder.activeElement }, getRootNode(element) { var _element$getRootNode; return (null === element || void 0 === element || null === (_element$getRootNode = element.getRootNode) || void 0 === _element$getRootNode ? void 0 : _element$getRootNode.call(element)) ?? this._document }, getBody() { return this._document.body }, createDocumentFragment() { return this._document.createDocumentFragment() }, getDocumentElement() { return this._document.documentElement }, getLocation() { return this._document.location }, getSelection() { return this._document.selection }, getReadyState() { return this._document.readyState }, getHead() { return this._document.head }, hasDocumentProperty(property) { return property in this._document }, listen(element, event, callback, options) { if (!element || !("addEventListener" in element)) { return _common.noop } element.addEventListener(event, callback, options); return () => { element.removeEventListener(event, callback) } }, elementsFromPoint(x, y, element) { const activeElementHolder = this.getRootNode(element); if (activeElementHolder.host) { return (0, _shadow_dom.getShadowElementsFromPoint)(x, y, activeElementHolder) } return activeElementHolder.elementsFromPoint(x, y) } }; const domAdapter = exports.domAdapter = (0, _dependency_injector.default)(nativeDOMAdapterStrategy); var _default = exports.default = domAdapter;