~canonical-sysadmins/wordpress/5.0.2

« back to all changes in this revision

Viewing changes to wp-includes/js/dist/vendor/wp-polyfill-element-closest.js

  • Committer: Barry Price
  • Date: 2018-12-12 05:08:33 UTC
  • mfrom: (1.2.8 upstream)
  • Revision ID: barry.price@canonical.com-20181212050833-y090hmrbmlxy37aa
Merge WP5.0 from upstream

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// element-closest | CC0-1.0 | github.com/jonathantneal/closest
 
2
 
 
3
(function (ElementProto) {
 
4
        if (typeof ElementProto.matches !== 'function') {
 
5
                ElementProto.matches = ElementProto.msMatchesSelector || ElementProto.mozMatchesSelector || ElementProto.webkitMatchesSelector || function matches(selector) {
 
6
                        var element = this;
 
7
                        var elements = (element.document || element.ownerDocument).querySelectorAll(selector);
 
8
                        var index = 0;
 
9
 
 
10
                        while (elements[index] && elements[index] !== element) {
 
11
                                ++index;
 
12
                        }
 
13
 
 
14
                        return Boolean(elements[index]);
 
15
                };
 
16
        }
 
17
 
 
18
        if (typeof ElementProto.closest !== 'function') {
 
19
                ElementProto.closest = function closest(selector) {
 
20
                        var element = this;
 
21
 
 
22
                        while (element && element.nodeType === 1) {
 
23
                                if (element.matches(selector)) {
 
24
                                        return element;
 
25
                                }
 
26
 
 
27
                                element = element.parentNode;
 
28
                        }
 
29
 
 
30
                        return null;
 
31
                };
 
32
        }
 
33
})(window.Element.prototype);