!function(e,t){"object"==typeof exports?module.exports=t():"function"==typeof define&&define.amd?define("salvattore",[],t):e.salvattore=t()}(this,function(){return window.matchMedia||(window.matchMedia=function(){"use strict";var e=window.styleMedia||window.media;if(!e){var t=document.createElement("style"),n=document.getElementsByTagName("script")[0],r=null;t.type="text/css",t.id="matchmediajs-test",n.parentNode.insertBefore(t,n),r="getComputedStyle"in window&&window.getComputedStyle(t,null)||t.currentStyle,e={matchMedium:function(e){var n="@media "+e+"{ #matchmediajs-test { width: 1px; }}";return t.styleSheet?t.styleSheet.cssText=n:t.textContent=n,"1px"===r.width}}}return function(t){return{matches:e.matchMedium(t||"all"),media:t||"all"}}}()),function(){if(window.matchMedia&&window.matchMedia("all").addListener)return!1;var e=window.matchMedia,t=e("only all").matches,n=!1,r=0,a=[],i=function(t){clearTimeout(r),r=setTimeout(function(){for(var t=0,n=a.length;t<n;t++){var r=a[t].mql,i=a[t].listeners||[],o=e(r.media).matches;if(o!==r.matches){r.matches=o;for(var l=0,c=i.length;l<c;l++)i[l].call(window,r)}}},30)};window.matchMedia=function(r){var o=e(r),l=[],c=0;return o.addListener=function(e){t&&(n||(n=!0,window.addEventListener("resize",i,!0)),0===c&&(c=a.push({mql:o,listeners:l})),l.push(e))},o.removeListener=function(e){for(var t=0,n=l.length;t<n;t++)l[t]===e&&l.splice(t,1)},o}}(),function(){for(var e=0,t=["ms","moz","webkit","o"],n=0;n<t.length&&!window.requestAnimationFrame;++n)window.requestAnimationFrame=window[t[n]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[t[n]+"CancelAnimationFrame"]||window[t[n]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(t,n){var r=(new Date).getTime(),a=Math.max(0,16-(r-e)),i=window.setTimeout(function(){t(r+a)},a);return e=r+a,i}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(e){clearTimeout(e)})}(),function(e,t,n){"use strict";var r={},a=[],i=function(e,t,n){e.dataset?e.dataset[t]=n:e.setAttribute("data-"+t,n)};return r.obtainGridSettings=function(t){var n,r,a=e.getComputedStyle(t,":before").getPropertyValue("content").slice(1,-1),i=a.match(/^\s*(\d+)(?:\s?\.(.+))?\s*$/);return i?(n=i[1],r=(r=i[2])?r.split("."):["column"]):(r=(i=a.match(/^\s*\.(.+)\s+(\d+)\s*$/))[1],(n=i[2])&&(n=n.split("."))),{numberOfColumns:n,columnClasses:r}},r.addColumns=function(e,n){for(var a,o=r.obtainGridSettings(e),l=o.numberOfColumns,c=o.columnClasses,s=new Array(+l),d=t.createDocumentFragment(),u=l;0!=u--;)a="[data-columns] > *:nth-child("+l+"n-"+u+")",s.push(n.querySelectorAll(a));s.forEach(function(e){var n=t.createElement("div"),r=t.createDocumentFragment();n.className=c.join(" "),Array.prototype.forEach.call(e,function(e){r.appendChild(e)}),n.appendChild(r),d.appendChild(n)}),e.appendChild(d),i(e,"columns",l)},r.removeColumns=function(n){var r=t.createRange();r.selectNodeContents(n);var a=Array.prototype.filter.call(r.extractContents().childNodes,function(t){return t instanceof e.HTMLElement}),o=a.length,l=a[0].childNodes.length,c=new Array(l*o);Array.prototype.forEach.call(a,function(e,t){Array.prototype.forEach.call(e.children,function(e,n){c[n*o+t]=e})});var s=t.createElement("div");return i(s,"columns",0),c.filter(function(e){return!!e}).forEach(function(e){s.appendChild(e)}),s},r.recreateColumns=function(t){e.requestAnimationFrame(function(){r.addColumns(t,r.removeColumns(t))})},r.mediaQueryChange=function(e){e.matches&&Array.prototype.forEach.call(a,r.recreateColumns)},r.getCSSRules=function(e){var t;try{t=e.sheet.cssRules||e.sheet.rules}catch(e){return[]}return t||[]},r.getStylesheets=function(){return Array.prototype.concat.call(Array.prototype.slice.call(t.querySelectorAll("style[type='text/css']")),Array.prototype.slice.call(t.querySelectorAll("link[rel='stylesheet']")))},r.mediaRuleHasColumnsSelector=function(e){for(var t,n=e.length;n--;)if((t=e[n]).selectorText&&t.selectorText.match(/\[data-columns\](.*)::?before$/))return!0;return!1},r.scanMediaQueries=function(){var t=[];e.matchMedia&&(r.getStylesheets().forEach(function(n){Array.prototype.forEach.call(r.getCSSRules(n),function(n){n.media&&r.mediaRuleHasColumnsSelector(n.cssRules)&&t.push(e.matchMedia(n.media.mediaText))})}),t.forEach(function(e){e.addListener(r.mediaQueryChange)}))},r.nextElementColumnIndex=function(e,t){var n,r,a=e.children,i=a.length,o=0,l=0;for(r=0;r<i;r++)n=a[r].children.length+(t[r].children||t[r].childNodes).length,0===o&&(o=n),n<o&&(l=r,o=n);return l},r.createFragmentsList=function(e){for(var n=new Array(e),r=0;r!==e;)n[r]=t.createDocumentFragment(),r++;return n},r.appendElements=function(e,t){var n=e.children,a=n.length,i=r.createFragmentsList(a);t.forEach(function(t){var n=r.next_element_column_index(e,i);i[n].appendChild(t)}),Array.prototype.forEach.call(n,function(e,t){e.appendChild(i[t])})},r.prependElements=function(e,n){var a=e.children,i=a.length,o=r.createFragmentsList(i),l=i-1;n.forEach(function(e){var t=o[l];t.insertBefore(e,t.firstChild),0===l?l=i-1:l--}),Array.prototype.forEach.call(a,function(e,t){e.insertBefore(o[t],e.firstChild)});for(var c=t.createDocumentFragment(),s=n.length%i;0!=s--;)c.appendChild(e.lastChild);e.insertBefore(c,e.firstChild)},r.registerGrid=function(n){if("none"!==e.getComputedStyle(n).display){var o=t.createRange();o.selectNodeContents(n);var l=t.createElement("div");l.appendChild(o.extractContents()),i(l,"columns",0),r.addColumns(n,l),a.push(n)}},r.init=function(){var e=t.createElement("style");e.innerHTML="[data-columns]::before{visibility:hidden;position:absolute;font-size:1px;}",t.head.appendChild(e);var n=t.querySelectorAll("[data-columns]");Array.prototype.forEach.call(n,r.registerGrid),r.scanMediaQueries()},r.init(),{appendElements:r.appendElements,prependElements:r.prependElements,registerGrid:r.registerGrid,append_elements:r.appendElements,prepend_elements:r.prependElements,register_grid:r.registerGrid}}(window,window.document)});