37 lines
1.0 KiB
JavaScript
37 lines
1.0 KiB
JavaScript
|
|
"use strict";
|
||
|
|
|
||
|
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
||
|
|
|
||
|
|
exports.__esModule = true;
|
||
|
|
exports.default = matches;
|
||
|
|
|
||
|
|
var _inDOM = _interopRequireDefault(require("../util/inDOM"));
|
||
|
|
|
||
|
|
var _querySelectorAll = _interopRequireDefault(require("./querySelectorAll"));
|
||
|
|
|
||
|
|
var matchesCache;
|
||
|
|
|
||
|
|
function matches(node, selector) {
|
||
|
|
if (!matchesCache && _inDOM.default) {
|
||
|
|
var body = document.body;
|
||
|
|
var nativeMatch = body.matches || body.matchesSelector || body.webkitMatchesSelector || body.mozMatchesSelector || body.msMatchesSelector;
|
||
|
|
matchesCache = nativeMatch ? function (node, selector) {
|
||
|
|
return nativeMatch.call(node, selector);
|
||
|
|
} : ie8MatchesSelector;
|
||
|
|
}
|
||
|
|
|
||
|
|
return matchesCache ? matchesCache(node, selector) : null;
|
||
|
|
}
|
||
|
|
|
||
|
|
function ie8MatchesSelector(node, selector) {
|
||
|
|
var matches = (0, _querySelectorAll.default)(node.document || node.ownerDocument, selector),
|
||
|
|
i = 0;
|
||
|
|
|
||
|
|
while (matches[i] && matches[i] !== node) {
|
||
|
|
i++;
|
||
|
|
}
|
||
|
|
|
||
|
|
return !!matches[i];
|
||
|
|
}
|
||
|
|
|
||
|
|
module.exports = exports["default"];
|