From 8e1f0d249973c585b8d898190fbb8ce1aa71119e Mon Sep 17 00:00:00 2001
From: Commander-lol <ljcapitanio@gmail.com>
Date: Mon, 30 Nov 2015 09:36:59 +0000
Subject: [PATCH] Refactored Polyfills to seperate module

---
 Gruntfile.js        |  2 +-
 dist/tinydom.js     | 11 +++--------
 dist/tinydom.min.js |  2 +-
 src/Core.js         | 16 +---------------
 src/Poly.js         |  9 +++++++++
 5 files changed, 15 insertions(+), 25 deletions(-)
 create mode 100644 src/Poly.js

diff --git a/Gruntfile.js b/Gruntfile.js
index c04657f..40cecc8 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -17,7 +17,7 @@ module.exports = function(grunt) {
                 footer: "\n}());"
             },
             dist: {
-                src: ["src/Core.js", "src/Batch.js", "src/Util.js", "src/Json.js", "src/Ajax.js"],
+                src: ["src/Poly.js", "src/Core.js", "src/Batch.js", "src/Util.js", "src/Json.js", "src/Ajax.js"],
                 dest: "dist/tinydom.js"
             }
         }
diff --git a/dist/tinydom.js b/dist/tinydom.js
index bc7e51e..83a1429 100644
--- a/dist/tinydom.js
+++ b/dist/tinydom.js
@@ -1,21 +1,16 @@
 (function () {
 'use strict';
-var proto,
-    TinyDOMFunction,
-    tinyDOM;
-
 /*
 * Polyfill from https://gist.github.com/elijahmanor/6452535
 */
 if (Element && !Element.prototype.matches) {
-    proto = Element.prototype;
+    var proto = Element.prototype;
     proto.matches = proto.matchesSelector ||
                     proto.mozMatchesSelector || proto.msMatchesSelector ||
                     proto.oMatchesSelector || proto.webkitMatchesSelector;
 }
-/*
-* End Polyfill
-*/
+var TinyDOMFunction,
+    tinyDOM;
 
 TinyDOMFunction = function (selector) {
     var elements, i, e;
diff --git a/dist/tinydom.min.js b/dist/tinydom.min.js
index 8085553..ac79acd 100644
--- a/dist/tinydom.min.js
+++ b/dist/tinydom.min.js
@@ -1,2 +1,2 @@
 /*! tinydom 2015-11-30 */
-!function(){"use strict";var a,b,c;Element&&!Element.prototype.matches&&(a=Element.prototype,a.matches=a.matchesSelector||a.mozMatchesSelector||a.msMatchesSelector||a.oMatchesSelector||a.webkitMatchesSelector),b=function(a){var c,d,e;if(!(this instanceof b))return new b(a);if(null===a||"undefined"==typeof a)this.length=0;else if(a.substring)for(c=document.querySelectorAll(a),this.length=c.length,d=0;d<c.length;d++)e=c.item(d),this[d]=e;else if(a.push){for(d=0;d<a.length;d++)e=a[d],this[d]=e;this.length=a.length}else this[0]=a,this.length=1;return this.apiversion="1",this},c=function(a){return new b(a)},window.μ||(window.μ=c),window.mu||(window.mu=c),c.fn=b.prototype={each:function(a){for(var b=this.length;b--;)a(b,this[b],this);return this},on:function(a,b,c){return"string"==typeof b?this.each(function(d,e){e.addEventListener(a,function(a){var d=a.target,f=!1;do d&&d.matches(b)?(c.call(d,a),f=!0):(d=d.parentNode,d&&d.matches&&d!==e||(f=!0));while(f!==!0)})}):(c=b,this.each(function(b,d){d.addEventListener(a,c)})),this},first:function(){return"undefined"!=typeof this[0]?c(this[0]):null},parent:function(a){var b=this[0].parentNode,d=!0;if(c.exists(a)){for(;null!==b&&b!==document;){if(b.matches(a)){d=!1;break}b=b.parentNode}b=d?null:b}return c(b)},children:function(a){var b,d=this[0].childNodes,e=[];for(b=0;b<d.length;b++)c.isElement(d[b])&&(mu.exists(a)?d[b].matches(a)&&e.push(d[b]):e.push(d[b]));return c(e)},data:function(a,b){return"undefined"!=typeof b?(this.each(function(c,d){d.setAttribute("data-"+a,b)}),this):this[0].getAttribute("data-"+a)},attr:function(a,b){return"undefined"!=typeof b?(this.each(function(c,d){d.setAttribute(a,b)}),this):this[0].getAttribute(a)},"class":function(a,b){return c.exists(b)?this.each(function(c,d){d.classList.toggle(a,b)}):this.each(function(b,c){c.classList.toggle(a)}),this},clear:function(){this.each(function(a,b){for(;b.firstChild;)b.removeChild(b.firstChild)})},trigger:function(a,b,d,e){d=c.exists(d)?d:!0,e=c.exists(e)?e:!0;var f=new CustomEvent(a,b,d,e);return this.each(function(a,b){b.dispatchEvent(f)}),this}},c.ready=function(a){document.addEventListener("DOMContentLoaded",a)},c.isElement=function(a){var b=!1;try{b=a instanceof HTMLElement}catch(c){b=a.nodeType&&1===a.nodeType}return b},c.exists=function(a){return null!==a&&"undefined"!=typeof a},c.byID=function(a){return c(document.getElementById(a))},c.triggerOn=function(a,b,d,e,f){e=c.exists(e)?e:!0,f=c.exists(f)?f:!0,a.dispatchEvent(new CustomEvent(b,d,e,f))},c.json={keys:function(a){var b,c=[];for(b in a)a.hasOwnProperty(b)&&c.push(b);return c},is:function(a){try{return JSON.parse(a),null!==a&&"undefined"!=typeof a}catch(b){return!1}},merge:function(a,b){if(c.exists(a)){if(c.exists(b)){var d;for(d in b)b.hasOwnProperty(d)&&(a[d]=b[d]);return a}return a}return b}},c.ajax=function(a){var b,d,e=new XMLHttpRequest,f={method:"GET",url:"",async:!0,user:null,password:null,responseType:"text",data:null,headers:[],callbacks:{}},g=function(a){return function(b){a(b.currentTarget.response,b)}};if(c.json.merge(f,a),e.responseType=f.responseType,this.exists(f.callbacks))for(b in f.callbacks)f.callbacks.hasOwnProperty(b)&&e.addEventListener(b,g(f.callbacks[b]));for(e.open(f.method,f.url,f.async,f.user,f.password),d=0;d<f.headers.length;d++)e.setRequestHeader(f.headers[d].header,f.headers[d].value);return e.send(f.data),e}}();
+!function(){"use strict";if(Element&&!Element.prototype.matches){var a=Element.prototype;a.matches=a.matchesSelector||a.mozMatchesSelector||a.msMatchesSelector||a.oMatchesSelector||a.webkitMatchesSelector}var b,c;b=function(a){var c,d,e;if(!(this instanceof b))return new b(a);if(null===a||"undefined"==typeof a)this.length=0;else if(a.substring)for(c=document.querySelectorAll(a),this.length=c.length,d=0;d<c.length;d++)e=c.item(d),this[d]=e;else if(a.push){for(d=0;d<a.length;d++)e=a[d],this[d]=e;this.length=a.length}else this[0]=a,this.length=1;return this.apiversion="1",this},c=function(a){return new b(a)},window.μ||(window.μ=c),window.mu||(window.mu=c),c.fn=b.prototype={each:function(a){for(var b=this.length;b--;)a(b,this[b],this);return this},on:function(a,b,c){return"string"==typeof b?this.each(function(d,e){e.addEventListener(a,function(a){var d=a.target,f=!1;do d&&d.matches(b)?(c.call(d,a),f=!0):(d=d.parentNode,d&&d.matches&&d!==e||(f=!0));while(f!==!0)})}):(c=b,this.each(function(b,d){d.addEventListener(a,c)})),this},first:function(){return"undefined"!=typeof this[0]?c(this[0]):null},parent:function(a){var b=this[0].parentNode,d=!0;if(c.exists(a)){for(;null!==b&&b!==document;){if(b.matches(a)){d=!1;break}b=b.parentNode}b=d?null:b}return c(b)},children:function(a){var b,d=this[0].childNodes,e=[];for(b=0;b<d.length;b++)c.isElement(d[b])&&(mu.exists(a)?d[b].matches(a)&&e.push(d[b]):e.push(d[b]));return c(e)},data:function(a,b){return"undefined"!=typeof b?(this.each(function(c,d){d.setAttribute("data-"+a,b)}),this):this[0].getAttribute("data-"+a)},attr:function(a,b){return"undefined"!=typeof b?(this.each(function(c,d){d.setAttribute(a,b)}),this):this[0].getAttribute(a)},"class":function(a,b){return c.exists(b)?this.each(function(c,d){d.classList.toggle(a,b)}):this.each(function(b,c){c.classList.toggle(a)}),this},clear:function(){this.each(function(a,b){for(;b.firstChild;)b.removeChild(b.firstChild)})},trigger:function(a,b,d,e){d=c.exists(d)?d:!0,e=c.exists(e)?e:!0;var f=new CustomEvent(a,b,d,e);return this.each(function(a,b){b.dispatchEvent(f)}),this}},c.ready=function(a){document.addEventListener("DOMContentLoaded",a)},c.isElement=function(a){var b=!1;try{b=a instanceof HTMLElement}catch(c){b=a.nodeType&&1===a.nodeType}return b},c.exists=function(a){return null!==a&&"undefined"!=typeof a},c.byID=function(a){return c(document.getElementById(a))},c.triggerOn=function(a,b,d,e,f){e=c.exists(e)?e:!0,f=c.exists(f)?f:!0,a.dispatchEvent(new CustomEvent(b,d,e,f))},c.json={keys:function(a){var b,c=[];for(b in a)a.hasOwnProperty(b)&&c.push(b);return c},is:function(a){try{return JSON.parse(a),null!==a&&"undefined"!=typeof a}catch(b){return!1}},merge:function(a,b){if(c.exists(a)){if(c.exists(b)){var d;for(d in b)b.hasOwnProperty(d)&&(a[d]=b[d]);return a}return a}return b}},c.ajax=function(a){var b,d,e=new XMLHttpRequest,f={method:"GET",url:"",async:!0,user:null,password:null,responseType:"text",data:null,headers:[],callbacks:{}},g=function(a){return function(b){a(b.currentTarget.response,b)}};if(c.json.merge(f,a),e.responseType=f.responseType,this.exists(f.callbacks))for(b in f.callbacks)f.callbacks.hasOwnProperty(b)&&e.addEventListener(b,g(f.callbacks[b]));for(e.open(f.method,f.url,f.async,f.user,f.password),d=0;d<f.headers.length;d++)e.setRequestHeader(f.headers[d].header,f.headers[d].value);return e.send(f.data),e}}();
diff --git a/src/Core.js b/src/Core.js
index 0993226..ba7a924 100644
--- a/src/Core.js
+++ b/src/Core.js
@@ -1,20 +1,6 @@
-var proto,
-    TinyDOMFunction,
+var TinyDOMFunction,
     tinyDOM;
 
-/*
-* Polyfill from https://gist.github.com/elijahmanor/6452535
-*/
-if (Element && !Element.prototype.matches) {
-    proto = Element.prototype;
-    proto.matches = proto.matchesSelector ||
-                    proto.mozMatchesSelector || proto.msMatchesSelector ||
-                    proto.oMatchesSelector || proto.webkitMatchesSelector;
-}
-/*
-* End Polyfill
-*/
-
 TinyDOMFunction = function (selector) {
     var elements, i, e;
 
diff --git a/src/Poly.js b/src/Poly.js
new file mode 100644
index 0000000..f58ea46
--- /dev/null
+++ b/src/Poly.js
@@ -0,0 +1,9 @@
+/*
+* Polyfill from https://gist.github.com/elijahmanor/6452535
+*/
+if (Element && !Element.prototype.matches) {
+    var proto = Element.prototype;
+    proto.matches = proto.matchesSelector ||
+                    proto.mozMatchesSelector || proto.msMatchesSelector ||
+                    proto.oMatchesSelector || proto.webkitMatchesSelector;
+}
-- 
GitLab