summaryrefslogtreecommitdiffstats
path: root/js/vendor/matches-selector/matches-selector.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/vendor/matches-selector/matches-selector.js')
-rw-r--r--js/vendor/matches-selector/matches-selector.js53
1 files changed, 53 insertions, 0 deletions
diff --git a/js/vendor/matches-selector/matches-selector.js b/js/vendor/matches-selector/matches-selector.js
new file mode 100644
index 000000000..482a795e9
--- /dev/null
+++ b/js/vendor/matches-selector/matches-selector.js
@@ -0,0 +1,53 @@
+/**
+ * matchesSelector v2.0.1
+ * matchesSelector( element, '.selector' )
+ * MIT license
+ */
+
+/*jshint browser: true, strict: true, undef: true, unused: true */
+
+( function( window, factory ) {
+ /*global define: false, module: false */
+ 'use strict';
+ // universal module definition
+ if ( typeof define == 'function' && define.amd ) {
+ // AMD
+ define( factory );
+ } else if ( typeof module == 'object' && module.exports ) {
+ // CommonJS
+ module.exports = factory();
+ } else {
+ // browser global
+ window.matchesSelector = factory();
+ }
+
+}( window, function factory() {
+ 'use strict';
+
+ var matchesMethod = ( function() {
+ var ElemProto = Element.prototype;
+ // check for the standard method name first
+ if ( ElemProto.matches ) {
+ return 'matches';
+ }
+ // check un-prefixed
+ if ( ElemProto.matchesSelector ) {
+ return 'matchesSelector';
+ }
+ // check vendor prefixes
+ var prefixes = [ 'webkit', 'moz', 'ms', 'o' ];
+
+ for ( var i=0; i < prefixes.length; i++ ) {
+ var prefix = prefixes[i];
+ var method = prefix + 'MatchesSelector';
+ if ( ElemProto[ method ] ) {
+ return method;
+ }
+ }
+ })();
+
+ return function matchesSelector( elem, selector ) {
+ return elem[ matchesMethod ]( selector );
+ };
+
+}));