From 2c14d76784cb1b6f978b51a624b9f0dbf6088b76 Mon Sep 17 00:00:00 2001 From: Eser Ozvataf Date: Sun, 20 Sep 2015 14:06:12 +0300 Subject: [PATCH] * updated docs. --- docs/assets/js/laroux.js | 2 +- docs/assets/js/laroux.min.js | 2 +- docs/assets/js/laroux.min.js.map | 2 +- docs/benchmarks.html | 6 +++--- docs/faq.html | 6 +++--- docs/index.html | 6 +++--- docs/snippets.html | 6 +++--- 7 files changed, 15 insertions(+), 15 deletions(-) diff --git a/docs/assets/js/laroux.js b/docs/assets/js/laroux.js index d6a6cf1..6dd8698 100644 --- a/docs/assets/js/laroux.js +++ b/docs/assets/js/laroux.js @@ -1,7 +1,7 @@ /** * laroux.js - A jquery substitute for modern browsers (web bundle) * - * @version v2.1.0 + * @version v2.1.1 * @link https://eserozvataf.github.io/laroux.js * @license Apache-2.0 */ diff --git a/docs/assets/js/laroux.min.js b/docs/assets/js/laroux.min.js index 5cf8b66..384cdb5 100644 --- a/docs/assets/js/laroux.min.js +++ b/docs/assets/js/laroux.min.js @@ -1,7 +1,7 @@ /** * laroux.js - A jquery substitute for modern browsers (web bundle) * - * @version v2.1.0 + * @version v2.1.1 * @link https://eserozvataf.github.io/laroux.js * @license Apache-2.0 */ diff --git a/docs/assets/js/laroux.min.js.map b/docs/assets/js/laroux.min.js.map index 6e451f7..5ec30a5 100644 --- a/docs/assets/js/laroux.min.js.map +++ b/docs/assets/js/laroux.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["laroux.js"],"names":["e","t","n","r","s","o","u","a","require","i","f","Error","code","l","exports","call","length",1,"module","_interopRequireDefault","obj","__esModule","default","Object","defineProperty","value","_larouxDeferredJs","_larouxDeferredJs2","_larouxEventsJs","_larouxEventsJs2","_larouxHelpersJs","_larouxHelpersJs2","ajax","corsDefault","xDomainObject","xmlHttpRequestObject","xDomainRequestObject","xhr","crossDomain","XMLHttpRequest","XDomainRequest","xhrResp","options","response","undefined","datatype","responseText","JSON","parse","eval","responseXML","makeRequest","deferred","cors","url","timer","timeout","setTimeout","abort","reject","onreadystatechange","readyState","clearTimeout","status","res","isSuccess","err","invoke","exception","resolve","progress","getdata","constructor","queryString","buildQueryString","indexOf","jsonp","open","type","xhrFields","hasOwnProperty","headers","j","setRequestHeader","postdata","send","postdatatype","stringify","buildFormData","get","path","values","getJson","getJsonP","method","getScript","post","postJson","Content-Type","./laroux.deferred.js","./laroux.events.js","./laroux.helpers.js",2,"date","shortDateFormat","longDateFormat","timeFormat","monthsShort","monthsLong","strings","now","later","ago","seconds","aminute","minutes","ahour","hours","aday","days","aweek","weeks","amonth","months","ayear","years","parseEpoch","timespan","limitWithWeeks","Math","ceil","getCustomDateString","format","timestamp","Date","replace","match","getFullYear","getYear","getMonth","substr","getDate","hour1","getHours","hour2","getMinutes","getSeconds","getDateDiffString","getTime","absTimespan","abs","past","timespanstring","getShortDateString","includeTime","getLongDateString",3,"_classCallCheck","instance","Constructor","TypeError","_createClass","defineProperties","target","props","descriptor","enumerable","configurable","writable","key","protoProps","staticProps","prototype","Deferred","this","events","eventName","_len","arguments","args","Array","_key","finalEvent","invoked","result","invokeCallback","callbacks","completed","concat","event","callback","shift","apply","_invoke","_len2","_key2","_invoke2","_len3","_key3","push","on","_len4","_key4",4,"delegates","add","item",5,"helpers","uniqueId","getUniqueId","clone","merge","source","keys","_length","mergeNs","ptr","pathSlices","split","_length2","current","rfc3986","uri","regEx","_name","encodeURIComponent","toString","data","FormData","_name2","append","replaceAll","text","dictionary","re","RegExp","join","camelCase","flag","output","currChar","charAt","toUpperCase","antiCamelCase","toLowerCase","quoteAttr","spliceString","index","count","slice","random","min","max","floor","find","iterator","context","some","list","each","arr","testOwnProperties","map","dontSkipReturns","results","aeach","_length3","amap","_length4","aindex","start","_length5","column","shuffle","shuffled","rand","prependArray","items","removeFromArray","targetKey","splice","toArray","getAsArray","NodeList","_length6","getLength","getKeysRecursive","delimiter","prefix","getElement","defaultValue","pos","rest","substring","callAll","scope","parameters","_length7",6,"global","_larouxAjaxJs","_larouxAjaxJs2","_larouxDateJs","_larouxDateJs2","_larouxStoryboardJs","_larouxStoryboardJs2","_larouxTypesJs","_larouxTypesJs2","_larouxTemplatesJs","_larouxTemplatesJs2","_larouxTimersJs","_larouxTimersJs2","_larouxVarsJs","_larouxVarsJs2","_larouxWhenJs","_larouxWhenJs2","laroux","selector","parent","document","querySelectorAll","querySelector","storyboard","types","templates","timers","vars","when","extend","extendNs","readyPassed","ready","setReady","setInterval","ontick","$l","self","window","./laroux.ajax.js","./laroux.date.js","./laroux.storyboard.js","./laroux.templates.js","./laroux.timers.js","./laroux.types.js","./laroux.vars.js","./laroux.when.js",7,"Storyboard","phases","phaseKeys","currentIteration","running","addPhase","checkPromise","promises","phase","fnc","addPromise","phaseId","promise","done","currentPhase",8,"engines","plain","compile","template","render","compiled","model","dict","lastIndex","nextIndex","closeIndex","hogan","Hogan","mustache","Mustache","handlebars","Handlebars","lodash","_","underscore","engine","element","content","nodeType","textContent","nodeValue",9,"set","next","remove","id","currentItem","removeKeys","state","reset","item2",10,"staticKeys","Observable","_callbacks","_onupdate","changes","observe","setRange","valueKey","unobserve","observable",11,"storages","cookie","defaultPath","name","decodeURIComponent","expires","expireValue","toGMTString","local","localStorage","session","sessionStorage","storage",12,"When","queues","remaining","deferredCompleted","check","then","queue","Function","async","is",13,"_larouxCssJs","_larouxCssJs2","anim","fx","interpolate","easing","cos","PI","newanim","startTime","unit","from","object","body","property","documentElement","scrollTop","String","Number","requestAnimationFrame","onframe","setCss","getProperty","style","step","time","scrollTo","finishT","to","../laroux.deferred.js","../laroux.helpers.js","./laroux.css.js",14,"css","hasClass","className","classList","contains","addClass","elements","removeClass","toggleClass","cycleClass","styleName","getComputedStyle","getPropertyValue","setProperty","properties","oldProperties","newStyleName","defaultTransition","setTransitionSingle","transition","transitions","currentTransitions","currentTransitionsArray","transitionProperties","found","trim","localeCompare","webkitTransition","msTransition","setTransition","show","opacity","hide","height","getPropertyCSSValue","getFloatValue","primitiveType","innerHeight","clientHeight","outerHeight","includeMargin","offsetHeight","marginTop","marginBottom","margins","width","innerWidth","clientWidth","outerWidth","offsetWidth","marginLeft","marginRight","top","getBoundingClientRect","left","scrollLeft","aboveTheTop","bottom","belowTheFold","leftOfScreen","right","rightOfScreen","inViewport","rect",15,"dom","docprop","propName","select","selectByClass","getElementsByClassName","selectByTag","getElementsByTagName","selectById","getElementById","selectSingle","attr","attributes","getAttribute","oldAttributes","attributeName","removeAttribute","setAttribute","datanames","oldDatanames","dataName","eventHistory","setEvent","eventname","setEventSingle","callbackWrapper","preventDefault","returnValue","addEventListener","unsetEvent","i1","length1","i2","length2","removeEventListener","dispatchEvent","customEvent","createEvent","initEvent","create","html","frag","createDocumentFragment","temp","createElement","insertAdjacentHTML","firstChild","appendChild","children","elem","createOption","isDefault","option","selectByValue","selectedIndex","clear","hasChildNodes","removeChild","insert","position","prepend","replaceText","cloneReturn","cloneAppend","cloneInsertAfter","cloneInsertBefore","container","newElement","cloneNode","parentNode","insertBefore","nextSibling","Element","parentElement",16,"_larouxDomJs","_larouxDomJs2","forms","ajaxForm","formobj","callbackBegin","serializeFormData","isFormField","tagName","getFormFieldValue","disabled","files","checked","setFormFieldValue","toggleFormEditing","selection","selected","lastDisabled","formdata","serialize","deserialize","../laroux.ajax.js","./laroux.dom.js",17,"_larouxFormsJs","_larouxFormsJs2","keyName","keycode","fromCharCode","assign","wrapper","ev","srcElement","disableInputs","shiftKey","ctrl","ctrlKey","alt","altKey","keyCode","which","./laroux.forms.js",18,"mvc","apps","pauseUpdate","init","appKey","update","rebind","app","modelKeys","boundElements","eventElements","scanElements","binding","bindStringParser","atts","m","binding1","binding2","chldrn","childNodes","boundElement","lastBuffer","buffer","curr",19,"_larouxJs","_larouxJs2","routes","attached","regexConverter","sensitive","strict","regexString","slash","capture","optional","regex","addNamed","converted","params","route","exec","resolved","getNamed","link","previous","go","silent","detach","location","hash","attach","goNamed","reload","../laroux.js",20,"touch","touchStarted","swipeTreshold","precision","tapCount","tapTreshold","longTapTreshold","tapTimer","cached","end","move","locatePointer","targetTouches","pageX","pageY","navigator","msPointerEnabled","onstart","onend","innerEvent","x","y","delta","distance",21,"_larouxAnimJs","_larouxAnimJs2","_larouxKeysJs","_larouxKeysJs2","_larouxMvcJs","_larouxMvcJs2","_larouxRoutesJs","_larouxRoutesJs2","_larouxTouchJs","_larouxTouchJs2","single","array","c","idc","./laroux.anim.js","./laroux.keys.js","./laroux.mvc.js","./laroux.routes.js","./laroux.touch.js"],"mappings":"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","file":"build/dist/web/laroux.min.js","sourcesContent":["/**\n * laroux.js - A jquery substitute for modern browsers (web bundle)\n *\n * @version v2.1.0\n * @link https://eserozvataf.github.io/laroux.js\n * @license Apache-2.0\n */\n(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o 0) {\n url += (url.indexOf('?') < 0 ? '?' : '&') + queryString;\n }\n } else {\n url += (url.indexOf('?') < 0 ? '?' : '&') + options.getdata;\n }\n }\n\n if (options.jsonp !== undefined) {\n url += (url.indexOf('?') < 0 ? '?' : '&') + 'jsonp=' + options.jsonp;\n }\n\n if (!ajax.xDomainObject) {\n xhr.open(options.type, url, true);\n } else {\n xhr.open(options.type, url);\n }\n\n if (options.xhrFields !== undefined) {\n for (var i in options.xhrFields) {\n if (!options.xhrFields.hasOwnProperty(i)) {\n continue;\n }\n\n xhr[i] = options.xhrFields[i];\n }\n }\n\n var headers = options.headers || {};\n\n if (!cors) {\n headers['X-Requested-With'] = 'XMLHttpRequest';\n }\n\n for (var j in headers) {\n if (!headers.hasOwnProperty(j)) {\n continue;\n }\n\n xhr.setRequestHeader(j, headers[j]);\n }\n\n if (options.postdata === undefined || options.postdata === null) {\n xhr.send(null);\n return deferred;\n }\n\n switch (options.postdatatype) {\n case 'json':\n xhr.send(JSON.stringify(options.postdata));\n break;\n case 'form':\n xhr.send(_larouxHelpersJs2['default'].buildFormData(options.postdata));\n break;\n default:\n xhr.send(options.postdata);\n break;\n }\n\n return deferred;\n },\n\n get: function get(path, values, cors) {\n return ajax.makeRequest({\n type: 'GET',\n url: path,\n datatype: 'html',\n getdata: values,\n cors: cors || ajax.corsDefault\n });\n },\n\n getJson: function getJson(path, values, cors) {\n return ajax.makeRequest({\n type: 'GET',\n url: path,\n datatype: 'json',\n getdata: values,\n cors: cors || ajax.corsDefault\n });\n },\n\n getJsonP: function getJsonP(path, values, method, cors) {\n return ajax.makeRequest({\n type: 'GET',\n url: path,\n datatype: 'script',\n getdata: values,\n jsonp: method,\n cors: cors || ajax.corsDefault\n });\n },\n\n getScript: function getScript(path, values, cors) {\n return ajax.makeRequest({\n type: 'GET',\n url: path,\n datatype: 'script',\n getdata: values,\n cors: cors || ajax.corsDefault\n });\n },\n\n post: function post(path, values, cors) {\n return ajax.makeRequest({\n type: 'POST',\n url: path,\n datatype: 'json',\n postdata: values,\n postdatatype: 'form',\n cors: cors || ajax.corsDefault\n });\n },\n\n postJson: function postJson(path, values, cors) {\n return ajax.makeRequest({\n type: 'POST',\n url: path,\n datatype: 'json',\n postdata: values,\n postdatatype: 'json',\n headers: {\n 'Content-Type': 'application/json; charset=UTF-8'\n },\n cors: cors || ajax.corsDefault\n });\n }\n };\n\n return ajax;\n})();\n\nmodule.exports = exports['default'];\n},{\"./laroux.deferred.js\":3,\"./laroux.events.js\":4,\"./laroux.helpers.js\":5}],2:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nexports['default'] = (function () {\n 'use strict';\n\n var date = {\n shortDateFormat: 'dd.MM.yyyy',\n longDateFormat: 'dd MMMM yyyy',\n timeFormat: 'HH:mm',\n\n monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n monthsLong: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n\n strings: {\n now: 'now',\n later: 'later',\n ago: 'ago',\n seconds: 'seconds',\n aminute: 'a minute',\n minutes: 'minutes',\n ahour: 'a hour',\n hours: 'hours',\n aday: 'a day',\n days: 'days',\n aweek: 'a week',\n weeks: 'weeks',\n amonth: 'a month',\n months: 'months',\n ayear: 'a year',\n years: 'years'\n },\n\n parseEpoch: function parseEpoch(timespan, limitWithWeeks) {\n if (timespan < 60 * 1000) {\n timespan = Math.ceil(timespan / 1000);\n\n return timespan + ' ' + date.strings.seconds;\n }\n\n if (timespan < 60 * 60 * 1000) {\n timespan = Math.ceil(timespan / (60 * 1000));\n\n if (timespan === 1) {\n return date.strings.aminute;\n }\n\n return timespan + ' ' + date.strings.minutes;\n }\n\n if (timespan < 24 * 60 * 60 * 1000) {\n timespan = Math.ceil(timespan / (60 * 60 * 1000));\n\n if (timespan === 1) {\n return date.strings.ahour;\n }\n\n return timespan + ' ' + date.strings.hours;\n }\n\n if (timespan < 7 * 24 * 60 * 60 * 1000) {\n timespan = Math.ceil(timespan / (24 * 60 * 60 * 1000));\n\n if (timespan === 1) {\n return date.strings.aday;\n }\n\n return timespan + ' ' + date.strings.days;\n }\n\n if (timespan < 4 * 7 * 24 * 60 * 60 * 1000) {\n timespan = Math.ceil(timespan / (7 * 24 * 60 * 60 * 1000));\n\n if (timespan === 1) {\n return date.strings.aweek;\n }\n\n return timespan + ' ' + date.strings.weeks;\n }\n\n if (limitWithWeeks === true) {\n return null;\n }\n\n if (timespan < 30 * 7 * 24 * 60 * 60 * 1000) {\n timespan = Math.ceil(timespan / (30 * 24 * 60 * 60 * 1000));\n\n if (timespan === 1) {\n return date.strings.amonth;\n }\n\n return timespan + ' ' + date.strings.months;\n }\n\n timespan = Math.ceil(timespan / (365 * 24 * 60 * 60 * 1000));\n\n if (timespan === 1) {\n return date.strings.ayear;\n }\n\n return timespan + ' ' + date.strings.years;\n },\n\n getCustomDateString: function getCustomDateString(format, timestamp) {\n var now = timestamp || new Date();\n\n return format.replace(/yyyy|yy|MMMM|MMM|MM|M|dd|d|hh|h|HH|H|mm|m|ss|s|tt|t/g, function (match) {\n switch (match) {\n case 'yyyy':\n return now.getFullYear();\n\n case 'yy':\n return now.getYear();\n\n case 'MMMM':\n return date.monthsLong[now.getMonth()];\n\n case 'MMM':\n return date.monthsShort[now.getMonth()];\n\n case 'MM':\n return ('0' + (now.getMonth() + 1)).substr(-2, 2);\n\n case 'M':\n return now.getMonth() + 1;\n\n case 'dd':\n return ('0' + now.getDate()).substr(-2, 2);\n\n case 'd':\n return now.getDate();\n\n case 'hh':\n var hour1 = now.getHours();\n return ('0' + (hour1 % 12 > 0 ? hour1 % 12 : 12)).substr(-2, 2);\n\n case 'h':\n var hour2 = now.getHours();\n return hour2 % 12 > 0 ? hour2 % 12 : 12;\n\n case 'HH':\n return ('0' + now.getHours()).substr(-2, 2);\n\n case 'H':\n return now.getHours();\n\n case 'mm':\n return ('0' + now.getMinutes()).substr(-2, 2);\n\n case 'm':\n return now.getMinutes();\n\n case 'ss':\n return ('0' + now.getSeconds()).substr(-2, 2);\n\n case 's':\n return now.getSeconds();\n\n case 'tt':\n if (now.getHours() >= 12) {\n return 'pm';\n }\n\n return 'am';\n\n case 't':\n if (now.getHours() >= 12) {\n return 'p';\n }\n\n return 'a';\n }\n\n return match;\n });\n },\n\n getDateDiffString: function getDateDiffString(timestamp) {\n var now = Date.now(),\n timespan = now - timestamp.getTime(),\n absTimespan = Math.abs(timespan),\n past = timespan > 0;\n\n if (absTimespan <= 3000) {\n return date.strings.now;\n }\n\n var timespanstring = date.parseEpoch(absTimespan, true);\n if (timespanstring !== null) {\n return timespanstring + ' ' + (past ? date.strings.ago : date.strings.later);\n }\n\n return date.getShortDateString(timestamp, true);\n },\n\n getShortDateString: function getShortDateString(timestamp, includeTime) {\n return date.getCustomDateString(includeTime ? date.shortDateFormat + ' ' + date.timeFormat : date.shortDateFormat, timestamp);\n },\n\n getLongDateString: function getLongDateString(timestamp, includeTime) {\n return date.getCustomDateString(includeTime ? date.longDateFormat + ' ' + date.timeFormat : date.longDateFormat, timestamp);\n }\n };\n\n return date;\n})();\n\nmodule.exports = exports['default'];\n},{}],3:[function(require,module,exports){\n/*jslint node: true */\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar _larouxHelpersJs = require('./laroux.helpers.js');\n\nvar _larouxHelpersJs2 = _interopRequireDefault(_larouxHelpersJs);\n\nvar Deferred = (function () {\n function Deferred() {\n _classCallCheck(this, Deferred);\n\n this.events = {};\n }\n\n _createClass(Deferred, [{\n key: 'invoke',\n value: function invoke(eventName) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var finalEvent = eventName === 'done' || eventName === 'fail';\n\n if (eventName in this.events) {\n this.events[eventName].invoked = true;\n this.events[eventName].result = args;\n\n this.invokeCallback(this.events[eventName], args);\n } else {\n this.events[eventName] = { callbacks: [], invoked: true, result: args };\n }\n\n if (finalEvent && 'completed' in this.events) {\n this.invokeCallback(this.events.completed, [eventName].concat(args));\n }\n\n return this;\n }\n }, {\n key: 'invokeCallback',\n value: function invokeCallback(event, args) {\n if (!('callbacks' in event)) {\n return;\n }\n\n var callbacks = event.callbacks;\n\n while (callbacks.length > 0) {\n var callback = callbacks.shift();\n callback.apply(this, args);\n }\n }\n }, {\n key: 'resolve',\n value: function resolve() {\n var _invoke;\n\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return (_invoke = this.invoke).call.apply(_invoke, [this, 'done'].concat(args));\n }\n }, {\n key: 'reject',\n value: function reject() {\n var _invoke2;\n\n for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return (_invoke2 = this.invoke).call.apply(_invoke2, [this, 'fail'].concat(args));\n }\n }, {\n key: 'on',\n value: function on(eventName, callback) {\n if (!(eventName in this.events)) {\n this.events[eventName] = {\n callbacks: [callback],\n invoked: false,\n result: undefined\n };\n\n return this;\n }\n\n var event = this.events[eventName];\n\n if (event.invoked) {\n callback.apply(this, event.result);\n\n return this;\n }\n\n event.callbacks.push(callback);\n\n return this;\n }\n }, {\n key: 'done',\n value: function done(callback) {\n return this.on('done', callback);\n }\n }, {\n key: 'fail',\n value: function fail(callback) {\n return this.on('fail', callback);\n }\n }, {\n key: 'completed',\n value: function completed(callback) {\n return this.on('completed', callback);\n }\n }, {\n key: 'is',\n value: function is(eventName) {\n if (!(eventName in this.events)) {\n return false;\n }\n\n return this.events[eventName].invoked;\n }\n }], [{\n key: 'async',\n value: function async(callback) {\n for (var _len4 = arguments.length, args = Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n\n var deferred = new Deferred();\n\n setTimeout(function () {\n try {\n var result = callback.apply(deferred, args);\n deferred.resolve(result);\n } catch (err) {\n deferred.reject(err);\n }\n }, 0);\n\n return deferred;\n }\n }]);\n\n return Deferred;\n})();\n\nexports['default'] = Deferred;\nmodule.exports = exports['default'];\n},{\"./laroux.helpers.js\":5}],4:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nexports['default'] = (function () {\n 'use strict';\n\n var events = {\n delegates: [],\n\n add: function add(event, callback) {\n events.delegates.push({ event: event, callback: callback });\n },\n\n invoke: function invoke(event, args) {\n for (var item in events.delegates) {\n if (!events.delegates.hasOwnProperty(item)) {\n continue;\n }\n\n if (events.delegates[item].event != event) {\n continue;\n }\n\n events.delegates[item].callback(args);\n }\n }\n };\n\n return events;\n})();\n\nmodule.exports = exports['default'];\n},{}],5:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nexports['default'] = (function () {\n 'use strict';\n\n var helpers = {\n uniqueId: 0,\n\n getUniqueId: function getUniqueId() {\n /*jslint plusplus: true */\n return 'uid-' + ++helpers.uniqueId;\n },\n\n clone: function clone(obj) {\n return JSON.parse(JSON.stringify(obj));\n },\n\n merge: function merge(target, source, clone) {\n var result = clone ? helpers.clone(target) : target,\n keys = Object.keys(source);\n\n for (var i = 0, _length = keys.length; i < _length; i++) {\n var key = keys[i];\n\n if (result[key] instanceof Array) {\n result[key] = result[key].concat(source[key]);\n continue;\n }\n\n if (result[key] instanceof Object) {\n helpers.merge(result[key], source[key]);\n continue;\n }\n\n result[key] = source[key];\n }\n\n return result;\n },\n\n mergeNs: function mergeNs(target, path, source) {\n var ptr = target,\n pathSlices = path.split('.'),\n keys = Object.keys(source);\n\n for (var i = 0, _length2 = pathSlices.length; i < _length2; i++) {\n var current = pathSlices[i];\n\n if (ptr[current] === undefined) {\n ptr[current] = {};\n }\n\n ptr = ptr[current];\n }\n\n if (source !== undefined) {\n // might be replaced w/ $l.merge method\n helpers.merge(ptr, source);\n }\n\n return target;\n },\n\n buildQueryString: function buildQueryString(values, rfc3986) {\n var uri = '',\n regEx = /%20/g;\n\n for (var _name in values) {\n if (!values.hasOwnProperty(_name)) {\n continue;\n }\n\n if (typeof values[_name] !== 'function') {\n if (rfc3986 || false) {\n uri += '&' + encodeURIComponent(_name).replace(regEx, '+') + '=' + encodeURIComponent(values[_name].toString()).replace(regEx, '+');\n } else {\n uri += '&' + encodeURIComponent(_name) + '=' + encodeURIComponent(values[_name].toString());\n }\n }\n }\n\n return uri.substr(1);\n },\n\n buildFormData: function buildFormData(values) {\n var data = new FormData();\n\n for (var _name2 in values) {\n if (!values.hasOwnProperty(_name2)) {\n continue;\n }\n\n if (typeof values[_name2] !== 'function') {\n data.append(_name2, values[_name2]);\n }\n }\n\n return data;\n },\n\n format: function format() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return Array.prototype.shift.call(args).replace(/%s/g, function () {\n return Array.prototype.shift.call(args);\n });\n },\n\n replaceAll: function replaceAll(text, dictionary) {\n var re = new RegExp(Object.keys(dictionary).join('|'), 'g');\n\n return text.replace(re, function (match) {\n return dictionary[match];\n });\n },\n\n camelCase: function camelCase(value) {\n var flag = false;\n var output = '';\n\n for (var j = 0; j < value.length; j++) {\n var currChar = value.charAt(j);\n if (currChar === '-') {\n flag = true;\n continue;\n }\n\n output += !flag ? currChar : currChar.toUpperCase();\n flag = false;\n }\n\n return output;\n },\n\n antiCamelCase: function antiCamelCase(value) {\n var output = '';\n\n for (var j = 0; j < value.length; j++) {\n var currChar = value.charAt(j);\n if (currChar !== '-' && currChar == currChar.toUpperCase()) {\n output += '-' + currChar.toLowerCase();\n continue;\n }\n\n output += currChar;\n }\n\n return output;\n },\n\n quoteAttr: function quoteAttr(value) {\n return value.replace(/&/g, '&').replace(/'/g, ''').replace(/\"/g, '"').replace(//g, '>').replace(/\"/g, '"').replace(/\\r\\n/g, ' ').replace(/[\\r\\n]/g, ' ');\n },\n\n spliceString: function spliceString(value, index, count, add) {\n return value.slice(0, index) + (add || '') + value.slice(index + count);\n },\n\n random: function random(min, max) {\n return min + Math.floor(Math.random() * (max - min + 1));\n },\n\n find: function find(obj, iterator, context) {\n var result = undefined;\n\n obj.some(function (value, index, list) {\n if (iterator.call(context, value, index, list)) {\n result = value;\n return true;\n }\n });\n\n return result;\n },\n\n each: function each(arr, callback, testOwnProperties) {\n for (var item in arr) {\n if (testOwnProperties && !arr.hasOwnProperty(item)) {\n continue;\n }\n\n if (callback(item, arr[item]) === false) {\n break;\n }\n }\n\n return arr;\n },\n\n map: function map(arr, callback, dontSkipReturns, testOwnProperties) {\n var results = [];\n\n for (var item in arr) {\n if (testOwnProperties && !arr.hasOwnProperty(item)) {\n continue;\n }\n\n var result = callback(arr[item], item);\n if (result === false) {\n break;\n }\n\n if (dontSkipReturns || result !== undefined) {\n results.push(result);\n }\n }\n\n return results;\n },\n\n index: function index(arr, value, testOwnProperties) {\n for (var item in arr) {\n if (testOwnProperties && !arr.hasOwnProperty(item)) {\n continue;\n }\n\n if (arr[item] === value) {\n return item;\n }\n }\n\n return null;\n },\n\n aeach: function aeach(arr, callback) {\n for (var i = 0, _length3 = arr.length; i < _length3; i++) {\n if (callback(i, arr[i]) === false) {\n break;\n }\n }\n\n return arr;\n },\n\n amap: function amap(arr, callback, dontSkipReturns) {\n var results = [];\n\n for (var i = 0, _length4 = arr.length; i < _length4; i++) {\n var result = callback(arr[i], i);\n if (result === false) {\n break;\n }\n\n if (dontSkipReturns || result !== undefined) {\n results.push(result);\n }\n }\n\n return results;\n },\n\n aindex: function aindex(arr, value, start) {\n for (var i = start || 0, _length5 = arr.length; i < _length5; i++) {\n if (arr[i] === value) {\n return i;\n }\n }\n\n return -1;\n },\n\n column: function column(obj, key) {\n return helpers.map(obj, function (value) {\n return value[key];\n }, true);\n },\n\n shuffle: function shuffle(obj) {\n var index = 0,\n shuffled = [];\n\n for (var item in obj) {\n if (!obj.hasOwnProperty(item)) {\n continue;\n }\n\n var rand = helpers.random(0, index);\n shuffled[index++] = shuffled[rand];\n shuffled[rand] = obj[item];\n }\n\n return shuffled;\n },\n\n prependArray: function prependArray(obj, value) {\n var length = obj.length,\n items = new Array(length + 1);\n\n items[0] = value;\n for (var i = 0, j = 1; i < length; i++, j++) {\n items[j] = obj[i];\n }\n\n return items;\n },\n\n removeFromArray: function removeFromArray(obj, value) {\n var targetKey = null;\n\n for (var item in obj) {\n if (!obj.hasOwnProperty(item)) {\n continue;\n }\n\n if (obj[item] === value) {\n targetKey = item;\n break;\n }\n }\n\n if (targetKey !== null) {\n obj.splice(targetKey, 1);\n return true;\n }\n\n return false;\n },\n\n toArray: function toArray(obj) {\n var length = obj.length,\n items = new Array(length);\n\n for (var i = 0; i < length; i++) {\n items[i] = obj[i];\n }\n\n return items;\n },\n\n getAsArray: function getAsArray(obj) {\n if (obj instanceof Array) {\n return obj;\n }\n\n if (obj instanceof NodeList) {\n var _length6 = obj.length;\n\n var items = new Array(_length6);\n for (var i = 0; i < _length6; i++) {\n items[i] = obj[i];\n }\n\n return items;\n }\n\n return [obj];\n },\n\n getLength: function getLength(obj) {\n if (obj.constructor === Object) {\n if (obj.length !== undefined) {\n return obj.length;\n }\n\n return Object.keys(obj).length;\n }\n\n return -1;\n },\n\n getKeysRecursive: function getKeysRecursive(obj, delimiter, prefix, keys) {\n if (delimiter === undefined) {\n delimiter = '.';\n }\n\n if (prefix === undefined) {\n prefix = '';\n keys = [];\n }\n\n for (var item in obj) {\n if (!obj.hasOwnProperty(item)) {\n continue;\n }\n\n keys.push(prefix + item);\n\n if (obj[item] !== undefined && obj[item] !== null && obj[item].constructor === Object) {\n helpers.getKeysRecursive(obj[item], delimiter, prefix + item + delimiter, keys);\n continue;\n }\n }\n\n return keys;\n },\n\n getElement: function getElement(obj, path, defaultValue, delimiter) {\n if (defaultValue === undefined) {\n defaultValue = null;\n }\n\n if (delimiter === undefined) {\n delimiter = '.';\n }\n\n var pos = path.indexOf(delimiter);\n var key = undefined;\n var rest = undefined;\n if (pos === -1) {\n key = path;\n rest = null;\n } else {\n key = path.substring(0, pos);\n rest = path.substring(pos + 1);\n }\n\n if (!(key in obj)) {\n return defaultValue;\n }\n\n if (rest === null || rest.length === 0) {\n return obj[key];\n }\n\n return helpers.getElement(obj[key], rest, defaultValue, delimiter);\n },\n\n callAll: function callAll(callbacks, scope, parameters) {\n for (var i = 0, _length7 = callbacks.length; i < _length7; i++) {\n callbacks[i].apply(scope, parameters);\n }\n }\n };\n\n return helpers;\n})();\n\nmodule.exports = exports['default'];\n},{}],6:[function(require,module,exports){\n(function (global){\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _larouxAjaxJs = require('./laroux.ajax.js');\n\nvar _larouxAjaxJs2 = _interopRequireDefault(_larouxAjaxJs);\n\nvar _larouxDateJs = require('./laroux.date.js');\n\nvar _larouxDateJs2 = _interopRequireDefault(_larouxDateJs);\n\nvar _larouxDeferredJs = require('./laroux.deferred.js');\n\nvar _larouxDeferredJs2 = _interopRequireDefault(_larouxDeferredJs);\n\nvar _larouxEventsJs = require('./laroux.events.js');\n\nvar _larouxEventsJs2 = _interopRequireDefault(_larouxEventsJs);\n\nvar _larouxHelpersJs = require('./laroux.helpers.js');\n\nvar _larouxHelpersJs2 = _interopRequireDefault(_larouxHelpersJs);\n\nvar _larouxStoryboardJs = require('./laroux.storyboard.js');\n\nvar _larouxStoryboardJs2 = _interopRequireDefault(_larouxStoryboardJs);\n\nvar _larouxTypesJs = require('./laroux.types.js');\n\nvar _larouxTypesJs2 = _interopRequireDefault(_larouxTypesJs);\n\nvar _larouxTemplatesJs = require('./laroux.templates.js');\n\nvar _larouxTemplatesJs2 = _interopRequireDefault(_larouxTemplatesJs);\n\nvar _larouxTimersJs = require('./laroux.timers.js');\n\nvar _larouxTimersJs2 = _interopRequireDefault(_larouxTimersJs);\n\nvar _larouxVarsJs = require('./laroux.vars.js');\n\nvar _larouxVarsJs2 = _interopRequireDefault(_larouxVarsJs);\n\nvar _larouxWhenJs = require('./laroux.when.js');\n\nvar _larouxWhenJs2 = _interopRequireDefault(_larouxWhenJs);\n\nexports['default'] = (function () {\n 'use strict';\n\n var laroux = function laroux(selector, parent) {\n if (selector instanceof Array) {\n return _larouxHelpersJs2['default'].toArray((parent || document).querySelectorAll(selector));\n }\n\n // FIXME: Laroux: non-chromium optimization, but it runs\n // slowly in chromium\n //\n // let re = /^#([^\\+\\>\\[\\]\\.# ]*)$/.exec(selector);\n // if (re) {\n // return (parent || document).getElementById(re[1]);\n // }\n\n return (parent || document).querySelector(selector);\n };\n\n _larouxHelpersJs2['default'].merge(laroux, _larouxHelpersJs2['default']);\n _larouxHelpersJs2['default'].merge(laroux, {\n ajax: _larouxAjaxJs2['default'],\n date: _larouxDateJs2['default'],\n deferred: _larouxDeferredJs2['default'],\n events: _larouxEventsJs2['default'],\n storyboard: _larouxStoryboardJs2['default'],\n types: _larouxTypesJs2['default'],\n templates: _larouxTemplatesJs2['default'],\n timers: _larouxTimersJs2['default'],\n vars: _larouxVarsJs2['default'],\n when: _larouxWhenJs2['default'],\n\n extend: function extend(source) {\n return _larouxHelpersJs2['default'].merge(laroux, source);\n },\n\n extendNs: function extendNs(path, source) {\n return _larouxHelpersJs2['default'].mergeNs(laroux, path, source);\n },\n\n readyPassed: false,\n\n ready: function ready(callback) {\n if (!laroux.readyPassed) {\n _larouxEventsJs2['default'].add('ContentLoaded', callback);\n return;\n }\n\n callback();\n },\n\n setReady: function setReady() {\n if (!laroux.readyPassed) {\n _larouxEventsJs2['default'].invoke('ContentLoaded');\n setInterval(_larouxTimersJs2['default'].ontick, 100);\n laroux.readyPassed = true;\n }\n }\n });\n\n if (global.$l === undefined) {\n global.$l = laroux;\n }\n\n return laroux;\n})();\n\nmodule.exports = exports['default'];\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"./laroux.ajax.js\":1,\"./laroux.date.js\":2,\"./laroux.deferred.js\":3,\"./laroux.events.js\":4,\"./laroux.helpers.js\":5,\"./laroux.storyboard.js\":7,\"./laroux.templates.js\":8,\"./laroux.timers.js\":9,\"./laroux.types.js\":10,\"./laroux.vars.js\":11,\"./laroux.when.js\":12}],7:[function(require,module,exports){\n(function (global){\n/*jslint node: true */\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar _larouxDeferredJs = require('./laroux.deferred.js');\n\nvar _larouxDeferredJs2 = _interopRequireDefault(_larouxDeferredJs);\n\nvar Storyboard = (function () {\n function Storyboard() {\n _classCallCheck(this, Storyboard);\n\n var self = this;\n\n this.phases = [];\n this.phaseKeys = {};\n this.currentIteration = 0;\n this.running = false;\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n for (var i = 0, _length = args.length; i < _length; i++) {\n this.addPhase(args[i]);\n }\n\n this.checkPromise = function () {\n if (--self.phases[self.currentIteration].promises === 0 && !self.running) {\n self.start();\n }\n };\n }\n\n _createClass(Storyboard, [{\n key: 'addPhase',\n value: function addPhase(key) {\n this.phaseKeys[key] = this.phases.length;\n this.phases.push({\n key: key,\n callbacks: [],\n promises: 0\n });\n }\n }, {\n key: 'add',\n value: function add(phase, fnc) {\n if (fnc instanceof _larouxDeferredJs2['default']) {\n return this.addPromise(phase, fnc);\n }\n\n var phaseId = this.phaseKeys[phase];\n\n if (phaseId < this.currentIteration) {\n // execute immediately if phase is already passed\n fnc.apply(global);\n return;\n }\n\n this.phases[phaseId].callbacks.push(fnc);\n }\n }, {\n key: 'addPromise',\n value: function addPromise(phase, promise) {\n var phaseId = this.phaseKeys[phase];\n\n // skips if phase is already passed\n if (phaseId < this.currentIteration) {\n return;\n }\n\n this.phases[phaseId].promises++;\n promise.done(this.checkPromise);\n }\n }, {\n key: 'start',\n value: function start() {\n this.running = true;\n\n while (this.phases.length > this.currentIteration) {\n var currentPhase = this.phases[this.currentIteration];\n\n while (currentPhase.callbacks.length > 0) {\n var fnc = currentPhase.callbacks.shift();\n fnc.apply(global);\n }\n\n if (currentPhase.promises > 0) {\n break;\n }\n\n this.currentIteration++;\n }\n\n this.running = false;\n }\n }]);\n\n return Storyboard;\n})();\n\nexports['default'] = Storyboard;\nmodule.exports = exports['default'];\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"./laroux.deferred.js\":3}],8:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _larouxHelpersJs = require('./laroux.helpers.js');\n\nvar _larouxHelpersJs2 = _interopRequireDefault(_larouxHelpersJs);\n\nexports['default'] = (function () {\n 'use strict';\n\n var templates = {\n engines: {\n plain: {\n compile: function compile(template, options) {\n return [template, options];\n },\n\n render: function render(compiled, model) {\n var result = compiled[0],\n dict = [],\n lastIndex = 0,\n nextIndex = undefined;\n\n while ((nextIndex = result.indexOf('{{', lastIndex)) !== -1) {\n nextIndex += 2;\n var closeIndex = result.indexOf('}}', nextIndex);\n if (closeIndex === -1) {\n break;\n }\n\n var key = result.substring(nextIndex, closeIndex);\n dict['{{' + key + '}}'] = _larouxHelpersJs2['default'].getElement(model, key, '');\n lastIndex = closeIndex + 2;\n }\n\n return _larouxHelpersJs2['default'].replaceAll(result, dict);\n }\n },\n\n hogan: {\n compile: function compile(template, options) {\n return Hogan.compile(template, options);\n },\n\n render: function render(compiled, model) {\n return compiled.render(model);\n }\n },\n\n mustache: {\n compile: function compile(template, options) {\n return Mustache.compile(template, options);\n },\n\n render: function render(compiled, model) {\n return compiled(model);\n }\n },\n\n handlebars: {\n compile: function compile(template, options) {\n return Handlebars.compile(template, options);\n },\n\n render: function render(compiled, model) {\n return compiled(model);\n }\n },\n\n lodash: {\n compile: function compile(template, options) {\n /*jslint nomen: true */\n return _.compile(template, null, options);\n },\n\n render: function render(compiled, model) {\n return compiled(model);\n }\n },\n\n underscore: {\n compile: function compile(template, options) {\n /*jslint nomen: true */\n return _.compile(template, null, options);\n },\n\n render: function render(compiled, model) {\n return compiled(model);\n }\n }\n },\n engine: 'plain',\n\n apply: function apply(element, model, options) {\n var content = undefined,\n engine = templates.engines[templates.engine];\n\n if (element.nodeType === 1 || element.nodeType === 3 || element.nodeType === 11) {\n content = element.textContent;\n } else {\n content = element.nodeValue;\n }\n\n var compiled = engine.compile(content, options);\n return engine.render(compiled, model);\n }\n\n /*\n insert: function (element, model, target, position, options) {\n let output = templates.apply(element, model, options);\n dom.insert(target, position || 'beforeend', output);\n },\n replace: function (element, model, target, options) {\n let output = templates.apply(element, model, options);\n dom.replace(target, output);\n }\n */\n };\n\n return templates;\n})();\n\nmodule.exports = exports['default'];\n},{\"./laroux.helpers.js\":5}],9:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _larouxHelpersJs = require('./laroux.helpers.js');\n\nvar _larouxHelpersJs2 = _interopRequireDefault(_larouxHelpersJs);\n\nexports['default'] = (function () {\n 'use strict';\n\n var timers = {\n data: [],\n\n set: function set(timer) {\n timer.next = Date.now() + timer.timeout;\n timers.data.push(timer);\n },\n\n remove: function remove(id) {\n var targetKey = null;\n\n for (var item in timers.data) {\n if (!timers.data.hasOwnProperty(item)) {\n continue;\n }\n\n var currentItem = timers.data[item];\n\n if (currentItem.id !== undefined && currentItem.id == id) {\n targetKey = item;\n break;\n }\n }\n\n if (targetKey !== null) {\n timers.data.splice(targetKey, 1);\n return true;\n }\n\n return false;\n },\n\n ontick: function ontick() {\n var now = Date.now(),\n removeKeys = [];\n\n for (var item in timers.data) {\n if (!timers.data.hasOwnProperty(item)) {\n continue;\n }\n\n var currentItem = timers.data[item];\n\n if (currentItem.next <= now) {\n var result = currentItem.ontick(currentItem.state);\n\n if (result !== false && currentItem.reset) {\n currentItem.next = now + currentItem.timeout;\n } else {\n removeKeys = _larouxHelpersJs2['default'].prependArray(removeKeys, item);\n }\n }\n }\n\n for (var item2 in removeKeys) {\n if (!removeKeys.hasOwnProperty(item2)) {\n continue;\n }\n\n timers.data.splice(removeKeys[item2], 1);\n }\n }\n };\n\n return timers;\n})();\n\nmodule.exports = exports['default'];\n},{\"./laroux.helpers.js\":5}],10:[function(require,module,exports){\n/*jslint node: true */\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar _larouxHelpersJs = require('./laroux.helpers.js');\n\nvar _larouxHelpersJs2 = _interopRequireDefault(_larouxHelpersJs);\n\nvar staticKeys = ['_callbacks', '_onupdate'];\n\nvar Observable = (function () {\n function Observable(data) {\n _classCallCheck(this, Observable);\n\n var self = this;\n\n this._callbacks = [];\n this._onupdate = function (changes) {\n _larouxHelpersJs2['default'].callAll(self._callbacks, self, [changes]);\n };\n\n Object.observe(this, this._onupdate);\n\n if (data) {\n this.setRange(data);\n }\n }\n\n _createClass(Observable, [{\n key: 'set',\n value: function set(key, value) {\n if (staticKeys.indexOf(key) === -1) {\n this[key] = value;\n }\n }\n }, {\n key: 'setRange',\n value: function setRange(values) {\n for (var valueKey in values) {\n this.set(valueKey, values[valueKey]);\n }\n }\n }, {\n key: 'get',\n value: function get(key, defaultValue) {\n if (key in this && staticKeys.indexOf(key) === -1) {\n return this[key];\n }\n\n return defaultValue || null;\n }\n }, {\n key: 'getRange',\n value: function getRange(keys) {\n var values = {};\n\n for (var item in keys) {\n values[keys[item]] = this[keys[item]];\n }\n\n return values;\n }\n }, {\n key: 'keys',\n value: function keys() {\n var keys = [];\n\n for (var item in this) {\n if (staticKeys.indexOf(item) === -1) {\n keys.push(item);\n }\n }\n\n return keys;\n }\n }, {\n key: 'length',\n value: function length() {\n return this.keys().length;\n }\n }, {\n key: 'exists',\n value: function exists(key) {\n return key in this;\n }\n }, {\n key: 'remove',\n value: function remove(key) {\n if (staticKeys.indexOf(key) === -1) {\n delete this[key];\n }\n }\n }, {\n key: 'clear',\n value: function clear() {\n for (var item in this) {\n if (!this.hasOwnProperty(item) || staticKeys.indexOf(item) !== -1) {\n continue;\n }\n\n delete this[item];\n }\n }\n }, {\n key: 'observe',\n value: function observe(obj) {\n Object.observe(obj, this._onupdate);\n }\n }, {\n key: 'unobserve',\n value: function unobserve(obj) {\n Object.unobserve(obj);\n }\n }, {\n key: 'on',\n value: function on(callback) {\n this._callbacks.push(callback);\n }\n }, {\n key: 'off',\n value: function off(callback) {\n _larouxHelpersJs2['default'].removeFromArray(this._callbacks, callback);\n }\n }]);\n\n return Observable;\n})();\n\nexports['default'] = (function () {\n var types = {\n observable: Observable\n };\n\n return types;\n})();\n\nmodule.exports = exports['default'];\n},{\"./laroux.helpers.js\":5}],11:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _larouxHelpersJs = require('./laroux.helpers.js');\n\nvar _larouxHelpersJs2 = _interopRequireDefault(_larouxHelpersJs);\n\nexports['default'] = (function () {\n 'use strict';\n\n var vars = {\n storages: {\n cookie: {\n defaultPath: '/',\n\n get: function get(name, defaultValue) {\n var re = new RegExp(encodeURIComponent(name) + '=[^;]+', 'i'),\n match = document.cookie.match(re);\n\n if (!match) {\n return defaultValue || null;\n }\n\n return decodeURIComponent(match[0].split('=')[1]);\n },\n\n set: function set(name, value, expires, path) {\n var expireValue = '';\n if (expires) {\n expireValue = '; expires=' + expires.toGMTString();\n }\n\n document.cookie = encodeURIComponent(name) + '=' + encodeURIComponent(value) + expireValue + '; path=' + (path || vars.storages.cookie.defaultPath);\n },\n\n remove: function remove(name, path) {\n document.cookie = encodeURIComponent(name) + '=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=' + (path || vars.storages.cookie.defaultPath);\n }\n },\n\n local: {\n get: function get(name, defaultValue) {\n if (!(name in localStorage)) {\n return defaultValue || null;\n }\n\n return JSON.parse(localStorage[name]);\n },\n\n set: function set(name, value) {\n localStorage[name] = JSON.stringify(value);\n },\n\n remove: function remove(name) {\n delete localStorage[name];\n }\n },\n\n session: {\n get: function get(name, defaultValue) {\n if (!(name in sessionStorage)) {\n return defaultValue || null;\n }\n\n return JSON.parse(sessionStorage[name]);\n },\n\n set: function set(name, value) {\n sessionStorage[name] = JSON.stringify(value);\n },\n\n remove: function remove(name) {\n delete sessionStorage[name];\n }\n }\n },\n\n get: function get(storage) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return vars.storages[storage].get.apply(this, args);\n },\n\n set: function set(storage) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n return vars.storages[storage].set.apply(this, args);\n },\n\n remove: function remove(storage) {\n for (var _len3 = arguments.length, args = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n\n return vars.storages[storage].remove.apply(this, args);\n }\n };\n\n return vars;\n})();\n\nmodule.exports = exports['default'];\n},{\"./laroux.helpers.js\":5}],12:[function(require,module,exports){\n/*jslint node: true */\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar _larouxDeferredJs = require('./laroux.deferred.js');\n\nvar _larouxDeferredJs2 = _interopRequireDefault(_larouxDeferredJs);\n\nvar _larouxHelpersJs = require('./laroux.helpers.js');\n\nvar _larouxHelpersJs2 = _interopRequireDefault(_larouxHelpersJs);\n\nvar When = (function () {\n function When() {\n _classCallCheck(this, When);\n\n var self = this;\n\n this.queues = [];\n this.remaining = -1;\n\n this.deferredCompleted = function () {\n self.remaining--;\n self.check();\n };\n\n if (arguments.length > 0) {\n this.then.apply(this, arguments);\n }\n }\n\n _createClass(When, [{\n key: 'then',\n value: function then() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n this.queues.push(args);\n this.check();\n\n return this;\n }\n }, {\n key: 'check',\n value: function check() {\n while (this.remaining <= 0) {\n if (this.remaining !== -1) {\n this.queues.shift();\n }\n\n if (this.queues.length === 0) {\n this.remaining = -1;\n break;\n }\n\n var queue = this.queues[0];\n // console.log('queue: ', queue);\n\n this.remaining = 0;\n for (var i = 0, _length = queue.length; i < _length; i++) {\n if (queue[i].constructor === Function) {\n queue[i] = _larouxDeferredJs2['default'].async(queue[i]);\n }\n\n if (queue[i] instanceof _larouxDeferredJs2['default'] && !queue[i].is('completed')) {\n this.remaining++;\n queue[i].completed(this.deferredCompleted);\n }\n }\n }\n }\n }]);\n\n return When;\n})();\n\nexports['default'] = When;\nmodule.exports = exports['default'];\n},{\"./laroux.deferred.js\":3,\"./laroux.helpers.js\":5}],13:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _larouxCssJs = require('./laroux.css.js');\n\nvar _larouxCssJs2 = _interopRequireDefault(_larouxCssJs);\n\nvar _larouxDeferredJs = require('../laroux.deferred.js');\n\nvar _larouxDeferredJs2 = _interopRequireDefault(_larouxDeferredJs);\n\nvar _larouxHelpersJs = require('../laroux.helpers.js');\n\nvar _larouxHelpersJs2 = _interopRequireDefault(_larouxHelpersJs);\n\nexports['default'] = (function () {\n 'use strict';\n\n var anim = {\n data: [],\n\n fx: {\n interpolate: function interpolate(source, target, shift) {\n return source + (target - source) * shift;\n },\n\n easing: function easing(pos) {\n return -Math.cos(pos * Math.PI) / 2 + 0.5;\n }\n },\n\n // {object, property, from, to, time, unit, reset}\n set: function set(newanim) {\n newanim.deferred = new _larouxDeferredJs2['default']();\n\n newanim.startTime = undefined;\n\n if (newanim.unit === null || newanim.unit === undefined) {\n newanim.unit = '';\n }\n\n if (newanim.from === null || newanim.from === undefined) {\n if (newanim.object === document.body && newanim.property === 'scrollTop') {\n newanim.from = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop;\n } else {\n newanim.from = newanim.object[newanim.property];\n }\n }\n\n if (newanim.from.constructor === String) {\n newanim.from = Number(newanim.from);\n }\n\n // if (newanim.id === undefined) {\n // newanim.id = helpers.getUniqueId();\n // }\n\n anim.data.push(newanim);\n if (anim.data.length === 1) {\n requestAnimationFrame(anim.onframe);\n }\n\n return newanim.deferred;\n },\n\n setCss: function setCss(newanim) {\n if (newanim.from === null || newanim.from === undefined) {\n newanim.from = _larouxCssJs2['default'].getProperty(newanim.object, newanim.property);\n }\n\n newanim.object = newanim.object.style;\n newanim.property = _larouxHelpersJs2['default'].camelCase(newanim.property);\n\n return anim.set(newanim);\n },\n\n remove: function remove(id) {\n var targetKey = null;\n\n for (var item in anim.data) {\n if (!anim.data.hasOwnProperty(item)) {\n continue;\n }\n\n var currentItem = anim.data[item];\n\n if (currentItem.id !== undefined && currentItem.id == id) {\n targetKey = item;\n break;\n }\n }\n\n if (targetKey !== null) {\n var deferred = anim.data[targetKey].deferred;\n\n deferred.reject('stop');\n\n anim.data.splice(targetKey, 1);\n return true;\n }\n\n return false;\n },\n\n onframe: function onframe(timestamp) {\n var removeKeys = [];\n\n for (var item in anim.data) {\n if (!anim.data.hasOwnProperty(item)) {\n continue;\n }\n\n var currentItem = anim.data[item];\n if (currentItem.startTime === undefined) {\n currentItem.startTime = timestamp;\n }\n\n anim.step(currentItem, timestamp);\n\n if (timestamp > currentItem.startTime + currentItem.time) {\n if (currentItem.reset === true) {\n currentItem.startTime = timestamp;\n if (currentItem.object === document.body && currentItem.property === 'scrollTop') {\n scrollTo(0, currentItem.from);\n // setTimeout(function () { scrollTo(0, currentItem.from); }, 1);\n } else {\n currentItem.object[currentItem.property] = currentItem.from;\n }\n } else {\n removeKeys = _larouxHelpersJs2['default'].prependArray(removeKeys, item);\n currentItem.deferred.resolve();\n }\n }\n }\n\n for (var item2 in removeKeys) {\n if (!removeKeys.hasOwnProperty(item2)) {\n continue;\n }\n\n anim.data.splice(removeKeys[item2], 1);\n }\n\n if (anim.data.length > 0) {\n requestAnimationFrame(anim.onframe);\n }\n },\n\n step: function step(newanim, timestamp) {\n var finishT = newanim.startTime + newanim.time,\n shift = timestamp > finishT ? 1 : (timestamp - newanim.startTime) / newanim.time;\n\n var value = anim.fx.interpolate(newanim.from, newanim.to, anim.fx.easing(shift)) + newanim.unit;\n\n if (newanim.object === document.body && newanim.property === 'scrollTop') {\n scrollTo(0, value);\n // setTimeout(function () { scrollTo(0, value); }, 1);\n } else {\n newanim.object[newanim.property] = value;\n }\n }\n };\n\n return anim;\n})();\n\nmodule.exports = exports['default'];\n},{\"../laroux.deferred.js\":3,\"../laroux.helpers.js\":5,\"./laroux.css.js\":14}],14:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _larouxHelpersJs = require('../laroux.helpers.js');\n\nvar _larouxHelpersJs2 = _interopRequireDefault(_larouxHelpersJs);\n\nexports['default'] = (function () {\n 'use strict';\n\n var css = {\n // class features\n hasClass: function hasClass(element, className) {\n return element.classList.contains(className);\n },\n\n addClass: function addClass(element, className) {\n var elements = _larouxHelpersJs2['default'].getAsArray(element);\n\n for (var i = 0, _length = elements.length; i < _length; i++) {\n elements[i].classList.add(className);\n }\n },\n\n removeClass: function removeClass(element, className) {\n var elements = _larouxHelpersJs2['default'].getAsArray(element);\n\n for (var i = 0, _length2 = elements.length; i < _length2; i++) {\n elements[i].classList.remove(className);\n }\n },\n\n toggleClass: function toggleClass(element, className) {\n var elements = _larouxHelpersJs2['default'].getAsArray(element);\n\n for (var i = 0, _length3 = elements.length; i < _length3; i++) {\n if (elements[i].classList.contains(className)) {\n elements[i].classList.remove(className);\n } else {\n elements[i].classList.add(className);\n }\n }\n },\n\n cycleClass: function cycleClass(elements, className) {\n for (var i = 0, _length4 = elements.length; i < _length4; i++) {\n if (elements[i].classList.contains(className)) {\n elements[i].classList.remove(className);\n elements[(i + 1) % _length4].classList.add(className);\n return;\n }\n }\n },\n\n // style features\n getProperty: function getProperty(element, styleName) {\n var style = getComputedStyle(element);\n\n styleName = _larouxHelpersJs2['default'].antiCamelCase(styleName);\n\n return style.getPropertyValue(styleName);\n },\n\n setProperty: function setProperty(element, properties, value) {\n var elements = _larouxHelpersJs2['default'].getAsArray(element);\n\n if (typeof properties === 'string') {\n var oldProperties = properties;\n properties = {};\n properties[oldProperties] = value;\n }\n\n for (var styleName in properties) {\n if (!properties.hasOwnProperty(styleName)) {\n continue;\n }\n\n var newStyleName = _larouxHelpersJs2['default'].camelCase(styleName);\n\n for (var i = 0, _length5 = elements.length; i < _length5; i++) {\n elements[i].style[newStyleName] = properties[styleName];\n }\n }\n },\n\n // transition features\n defaultTransition: '2s ease',\n\n setTransitionSingle: function setTransitionSingle(element, transition) {\n var transitions = _larouxHelpersJs2['default'].getAsArray(transition),\n style = getComputedStyle(element),\n currentTransitions = style.getPropertyValue('transition') || style.getPropertyValue('-webkit-transition') || style.getPropertyValue('-ms-transition') || '',\n currentTransitionsArray = undefined;\n\n if (currentTransitions.length > 0) {\n currentTransitionsArray = currentTransitions.split(',');\n } else {\n currentTransitionsArray = [];\n }\n\n for (var item in transitions) {\n if (!transitions.hasOwnProperty(item)) {\n continue;\n }\n\n var styleName = undefined,\n transitionProperties = undefined,\n pos = transitions[item].indexOf(' ');\n\n if (pos !== -1) {\n styleName = transitions[item].substring(0, pos);\n transitionProperties = transitions[item].substring(pos + 1);\n } else {\n styleName = transitions[item];\n transitionProperties = css.defaultTransition;\n }\n\n var found = false;\n for (var j = 0; j < currentTransitionsArray.length; j++) {\n if (currentTransitionsArray[j].trim().localeCompare(styleName) === 0) {\n currentTransitionsArray[j] = styleName + ' ' + transitionProperties;\n found = true;\n break;\n }\n }\n\n if (!found) {\n currentTransitionsArray.push(styleName + ' ' + transitionProperties);\n }\n }\n\n var value = currentTransitionsArray.join(', ');\n\n element.style.transition = value;\n element.style.webkitTransition = value;\n element.style.msTransition = value;\n },\n\n setTransition: function setTransition(element, transition) {\n var elements = _larouxHelpersJs2['default'].getAsArray(element);\n\n for (var i = 0, _length6 = elements.length; i < _length6; i++) {\n css.setTransitionSingle(elements[i], transition);\n }\n },\n\n show: function show(element, transitionProperties) {\n if (transitionProperties !== undefined) {\n css.setTransition(element, 'opacity ' + transitionProperties);\n } else {\n css.setTransition(element, 'opacity');\n }\n\n css.setProperty(element, { opacity: 1 });\n },\n\n hide: function hide(element, transitionProperties) {\n if (transitionProperties !== undefined) {\n css.setTransition(element, 'opacity ' + transitionProperties);\n } else {\n css.setTransition(element, 'opacity');\n }\n\n css.setProperty(element, { opacity: 0 });\n },\n\n // measurement features\n // height of element without padding, margin and border\n height: function height(element) {\n var style = getComputedStyle(element),\n height = style.getPropertyCSSValue('height');\n\n return height.getFloatValue(height.primitiveType);\n },\n\n // height of element with padding but without margin and border\n innerHeight: function innerHeight(element) {\n return element.clientHeight;\n },\n\n // height of element with padding and border but margin optional\n outerHeight: function outerHeight(element, includeMargin) {\n if (includeMargin || false) {\n return element.offsetHeight;\n }\n\n var style = getComputedStyle(element),\n marginTop = style.getPropertyCSSValue('margin-top'),\n marginBottom = style.getPropertyCSSValue('margin-bottom'),\n margins = marginTop.getFloatValue(marginTop.primitiveType) + marginBottom.getFloatValue(marginBottom.primitiveType);\n\n return Math.ceil(element.offsetHeight + margins);\n },\n\n // width of element without padding, margin and border\n width: function width(element) {\n var style = getComputedStyle(element),\n height = style.getPropertyCSSValue('width');\n\n return height.getFloatValue(height.primitiveType);\n },\n\n // width of element with padding but without margin and border\n innerWidth: function innerWidth(element) {\n return element.clientWidth;\n },\n\n // width of element with padding and border but margin optional\n outerWidth: function outerWidth(element, includeMargin) {\n if (includeMargin || false) {\n return element.offsetWidth;\n }\n\n var style = getComputedStyle(element),\n marginLeft = style.getPropertyCSSValue('margin-left'),\n marginRight = style.getPropertyCSSValue('margin-right'),\n margins = marginLeft.getFloatValue(marginLeft.primitiveType) + marginRight.getFloatValue(marginRight.primitiveType);\n\n return Math.ceil(element.offsetWidth + margins);\n },\n\n top: function top(element) {\n return element.getBoundingClientRect().top + (document.documentElement && document.documentElement.scrollTop || document.body.scrollTop);\n },\n\n left: function left(element) {\n return element.getBoundingClientRect().left + (document.documentElement && document.documentElement.scrollLeft || document.body.scrollLeft);\n },\n\n aboveTheTop: function aboveTheTop(element) {\n return element.getBoundingClientRect().bottom <= 0;\n },\n\n belowTheFold: function belowTheFold(element) {\n return element.getBoundingClientRect().top > innerHeight;\n },\n\n leftOfScreen: function leftOfScreen(element) {\n return element.getBoundingClientRect().right <= 0;\n },\n\n rightOfScreen: function rightOfScreen(element) {\n return element.getBoundingClientRect().left > innerWidth;\n },\n\n inViewport: function inViewport(element) {\n var rect = element.getBoundingClientRect();\n\n return !(rect.bottom <= 0 || rect.top > innerHeight || rect.right <= 0 || rect.left > innerWidth);\n }\n };\n\n return css;\n})();\n\nmodule.exports = exports['default'];\n},{\"../laroux.helpers.js\":5}],15:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _larouxHelpersJs = require('../laroux.helpers.js');\n\nvar _larouxHelpersJs2 = _interopRequireDefault(_larouxHelpersJs);\n\nexports['default'] = (function () {\n 'use strict';\n\n var dom = {\n docprop: function docprop(propName) {\n return document.documentElement.classList.contains(propName);\n },\n\n select: function select(selector, parent) {\n return _larouxHelpersJs2['default'].toArray((parent || document).querySelectorAll(selector));\n },\n\n selectByClass: function selectByClass(selector, parent) {\n return _larouxHelpersJs2['default'].toArray((parent || document).getElementsByClassName(selector));\n },\n\n selectByTag: function selectByTag(selector, parent) {\n return _larouxHelpersJs2['default'].toArray((parent || document).getElementsByTagName(selector));\n },\n\n selectById: function selectById(selector, parent) {\n return (parent || document).getElementById(selector);\n },\n\n selectSingle: function selectSingle(selector, parent) {\n return (parent || document).querySelector(selector);\n },\n\n attr: function attr(element, attributes, value) {\n if (value === undefined && attributes.constructor !== Object) {\n return element.getAttribute(attributes);\n }\n\n var elements = _larouxHelpersJs2['default'].getAsArray(element);\n if (typeof attributes === 'string') {\n var oldAttributes = attributes;\n attributes = {};\n attributes[oldAttributes] = value;\n }\n\n for (var attributeName in attributes) {\n if (!attributes.hasOwnProperty(attributeName)) {\n continue;\n }\n\n for (var i = 0, _length = elements.length; i < _length; i++) {\n if (attributes[attributeName] === null) {\n element.removeAttribute(attributeName);\n } else {\n element.setAttribute(attributeName, attributes[attributeName]);\n }\n }\n }\n },\n\n data: function data(element, datanames, value) {\n if (value === undefined && datanames.constructor !== Object) {\n return element.getAttribute('data-' + datanames);\n }\n\n var elements = _larouxHelpersJs2['default'].getAsArray(element);\n if (typeof datanames === 'string') {\n var oldDatanames = datanames;\n datanames = {};\n datanames[oldDatanames] = value;\n }\n\n for (var dataName in datanames) {\n if (!datanames.hasOwnProperty(dataName)) {\n continue;\n }\n\n for (var i = 0, _length2 = elements.length; i < _length2; i++) {\n if (datanames[dataName] === null) {\n element.removeAttribute('data-' + dataName);\n } else {\n element.setAttribute('data-' + dataName, datanames[dataName]);\n }\n }\n }\n },\n\n eventHistory: [],\n setEvent: function setEvent(element, eventname, callback) {\n var elements = _larouxHelpersJs2['default'].getAsArray(element);\n\n for (var i = 0, _length3 = elements.length; i < _length3; i++) {\n dom.setEventSingle(elements[i], eventname, callback);\n }\n },\n\n setEventSingle: function setEventSingle(element, eventname, callback) {\n var callbackWrapper = function callbackWrapper(e) {\n if (callback(e, element) === false) {\n if (e.preventDefault) {\n e.preventDefault();\n } else {\n event.returnValue = false;\n }\n }\n };\n\n dom.eventHistory.push({ element: element, eventname: eventname, callback: callback, callbackWrapper: callbackWrapper });\n element.addEventListener(eventname, callbackWrapper, false);\n },\n\n unsetEvent: function unsetEvent(element, eventname, callback) {\n var elements = _larouxHelpersJs2['default'].getAsArray(element);\n\n for (var i1 = 0, length1 = elements.length; i1 < length1; i1++) {\n for (var i2 = 0, length2 = dom.eventHistory.length; i2 < length2; i2++) {\n var item = dom.eventHistory[i2];\n\n if (item === undefined) {\n continue;\n }\n\n if (item.element !== elements[i1]) {\n continue;\n }\n\n if (eventname !== undefined && item.eventname !== eventname) {\n continue;\n }\n\n if (callback !== undefined && item.callback !== callback) {\n continue;\n }\n\n item.element.removeEventListener(item.eventname, item.callbackWrapper, false);\n delete dom.eventHistory[i2];\n }\n }\n },\n\n dispatchEvent: function dispatchEvent(element, eventname, data) {\n var customEvent = document.createEvent('Event');\n for (var item in data) {\n if (!data.hasOwnProperty(item)) {\n continue;\n }\n\n customEvent[item] = data[item];\n }\n\n customEvent.initEvent(eventname, true, true);\n element.dispatchEvent(customEvent);\n },\n\n create: function create(html) {\n var frag = document.createDocumentFragment(),\n temp = document.createElement('DIV');\n\n temp.insertAdjacentHTML('beforeend', html);\n while (temp.firstChild) {\n frag.appendChild(temp.firstChild);\n }\n\n // nulling out the reference, there is no obvious dispose method\n temp = null;\n\n return frag;\n },\n\n createElement: function createElement(element, attributes, children) {\n var elem = document.createElement(element);\n\n if (attributes !== undefined && attributes.constructor === Object) {\n for (var item in attributes) {\n if (!attributes.hasOwnProperty(item)) {\n continue;\n }\n\n elem.setAttribute(item, attributes[item]);\n }\n }\n\n if (children !== undefined) {\n if (children.constructor === Object) {\n for (var item2 in children) {\n if (!children.hasOwnProperty(item2)) {\n continue;\n }\n\n elem.setAttribute(item2, children[item2]);\n }\n } else if ( /* typeof children === 'string' && */children.length > 0) {\n dom.append(elem, children);\n }\n }\n\n return elem;\n },\n\n createOption: function createOption(element, key, value, isDefault) {\n /* old behaviour, does not support optgroups as parents.\n let count = element.options.length;\n element.options[count] = new Option(value, key);\n if (isDefault === true) {\n element.options.selectedIndex = count - 1;\n }\n */\n\n var option = document.createElement('OPTION');\n option.setAttribute('value', key);\n if (isDefault === true) {\n option.setAttribute('checked', 'checked');\n }\n\n dom.append(option, value);\n element.appendChild(option);\n },\n\n selectByValue: function selectByValue(element, value) {\n for (var i = 0, _length4 = element.options.length; i < _length4; i++) {\n if (element.options[i].getAttribute('value') == value) {\n element.selectedIndex = i;\n break;\n }\n }\n }, /*,\n // TODO: it's redundant for now\n loadImage: function () {\n let images = [];\n for (let i = 0, length = arguments.length; i < length; i++) {\n let image = document.createElement('IMG');\n image.setAttribute('src', arguments[i]);\n images.push(image);\n }\n return images;\n },\n loadAsyncScript: function (path, triggerName, async) {\n let elem = document.createElement('script');\n elem.type = 'text/javascript';\n elem.async = (async !== undefined) ? async : true;\n elem.src = path;\n let loaded = false;\n elem.onload = elem.onreadystatechange = function () {\n if ((elem.readyState && elem.readyState !== 'complete' && elem.readyState !== 'loaded') || loaded) {\n return false;\n }\n elem.onload = elem.onreadystatechange = null;\n loaded = true;\n if (triggerName) {\n if (typeof triggerName === 'function') {\n triggerName();\n } else {\n triggers.ontrigger(triggerName);\n }\n }\n };\n let head = document.getElementsByTagName('head')[0];\n head.appendChild(elem);\n },\n loadAsyncStyle: function (path, triggerName, async) {\n let elem = document.createElement('LINK');\n elem.type = 'text/css';\n elem.async = (async !== undefined) ? async : true;\n elem.href = path;\n elem.rel = 'stylesheet';\n let loaded = false;\n elem.onload = elem.onreadystatechange = function () {\n if ((elem.readyState && elem.readyState !== 'complete' && elem.readyState !== 'loaded') || loaded) {\n return false;\n }\n elem.onload = elem.onreadystatechange = null;\n loaded = true;\n if (triggerName) {\n if (typeof triggerName === 'function') {\n triggerName();\n } else {\n triggers.ontrigger(triggerName);\n }\n }\n };\n let head = document.getElementsByTagName('head')[0];\n head.appendChild(elem);\n },*/\n\n clear: function clear(element) {\n while (element.hasChildNodes()) {\n element.removeChild(element.firstChild);\n }\n },\n\n insert: function insert(element, position, content) {\n element.insertAdjacentHTML(position, content);\n },\n\n prepend: function prepend(element, content) {\n element.insertAdjacentHTML('afterbegin', content);\n },\n\n append: function append(element, content) {\n element.insertAdjacentHTML('beforeend', content);\n },\n\n replace: function replace(element, content) {\n dom.clear(element);\n element.insertAdjacentHTML('afterbegin', content);\n },\n\n replaceText: function replaceText(element, content) {\n // dom.clear(element);\n element.textContent = content;\n },\n\n remove: function remove(element) {\n element.remove();\n },\n\n cloneReturn: 0,\n cloneAppend: 1,\n cloneInsertAfter: 2,\n cloneInsertBefore: 3,\n\n clone: function clone(element, type, container, target) {\n var newElement = element.cloneNode(true);\n\n if (container === undefined) {\n container = element.parentNode;\n }\n if (target === undefined) {\n target = element;\n }\n\n if (type !== undefined && type != dom.cloneReturn) {\n if (type == dom.cloneAppend) {\n container.appendChild(newElement);\n } else if (type == dom.cloneInsertAfter) {\n container.insertBefore(newElement, target.nextSibling);\n } else {\n // type == dom.cloneInsertBefore\n container.insertBefore(newElement, target);\n }\n }\n\n return newElement;\n } /*,\n // TODO: it's redundant for now\n applyOperations: function (element, operations) {\n for (let operation in operations) {\n if (!operations.hasOwnProperty(operation)) {\n continue;\n }\n for (let binding in operations[operation]) {\n if (!operations[operation].hasOwnProperty(binding)) {\n continue;\n }\n let value = operations[operation][binding];\n switch (operation) {\n case 'setprop':\n if (binding.substring(0, 1) === '_') {\n element.setAttribute(binding.substring(1), value);\n continue;\n }\n if (binding === 'content') {\n dom.replace(element, value);\n continue;\n }\n break;\n case 'addprop':\n if (binding.substring(0, 1) === '_') {\n element.setAttribute(binding.substring(1), element.getAttribute(binding.substring(1)) + value);\n continue;\n }\n if (binding === 'content') {\n dom.append(element, value);\n continue;\n }\n break;\n case 'removeprop':\n if (value.substring(0, 1) === '_') {\n element.removeAttribute(value.substring(1));\n continue;\n }\n if (value === 'content') {\n dom.clear(element);\n continue;\n }\n break;\n case 'addclass':\n css.addClass(element, value);\n break;\n case 'removeclass':\n css.removeClass(element, value);\n break;\n case 'addstyle':\n css.setProperty(element, binding, value);\n break;\n case 'removestyle':\n css.setProperty(element, value, 'inherit !important');\n break;\n case 'repeat':\n break;\n default:\n console.log(operation);\n }\n }\n }\n }*/\n };\n\n // a fix for Internet Explorer\n if (typeof Element !== 'undefined') {\n if (Element.prototype.remove === undefined) {\n Element.prototype.remove = function () {\n if (this.parentElement !== null) {\n this.parentElement.removeChild(this);\n }\n };\n }\n }\n\n return dom;\n})();\n\nmodule.exports = exports['default'];\n},{\"../laroux.helpers.js\":5}],16:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _larouxAjaxJs = require('../laroux.ajax.js');\n\nvar _larouxAjaxJs2 = _interopRequireDefault(_larouxAjaxJs);\n\nvar _larouxDomJs = require('./laroux.dom.js');\n\nvar _larouxDomJs2 = _interopRequireDefault(_larouxDomJs);\n\nexports['default'] = (function () {\n 'use strict';\n\n var forms = {\n ajaxForm: function ajaxForm(formobj, callback, callbackBegin) {\n _larouxDomJs2['default'].setEvent(formobj, 'submit', function () {\n if (callbackBegin !== undefined) {\n callbackBegin();\n }\n\n _larouxAjaxJs2['default'].post(formobj.getAttribute('action'), forms.serializeFormData(formobj), callback);\n\n return false;\n });\n },\n\n isFormField: function isFormField(element) {\n if (element.tagName === 'SELECT') {\n return true;\n }\n\n if (element.tagName === 'INPUT') {\n var type = element.getAttribute('type').toUpperCase();\n\n if (type === 'FILE' || type === 'CHECKBOX' || type === 'RADIO' || type === 'TEXT' || type === 'PASSWORD' || type === 'HIDDEN') {\n return true;\n }\n\n return false;\n }\n\n if (element.tagName === 'TEXTAREA') {\n return true;\n }\n\n return false;\n },\n\n getFormFieldValue: function getFormFieldValue(element) {\n if (element.disabled === true) {\n return null;\n }\n\n if (element.tagName === 'SELECT') {\n return element.options[element.selectedIndex].value;\n }\n\n if (element.tagName === 'INPUT') {\n var type = element.getAttribute('type').toUpperCase();\n\n if (type === 'FILE') {\n return element.files[0];\n }\n\n if (type === 'CHECKBOX' || type === 'RADIO') {\n if (element.checked) {\n return element.value;\n }\n\n return null;\n }\n\n if (type === 'TEXT' || type === 'PASSWORD' || type === 'HIDDEN') {\n return element.value;\n }\n\n return null;\n }\n\n if (element.tagName === 'TEXTAREA') {\n return element.value;\n }\n\n return null;\n },\n\n setFormFieldValue: function setFormFieldValue(element, value) {\n if (element.disabled === true) {\n return;\n }\n\n if (element.tagName === 'SELECT') {\n for (var option in element.options) {\n if (!element.options.hasOwnProperty(option)) {\n continue;\n }\n\n if (element.options[option].value == value) {\n element.selectedIndex = option;\n return;\n }\n }\n\n return;\n }\n\n if (element.tagName === 'INPUT') {\n var type = element.getAttribute('type').toUpperCase();\n\n if (type === 'FILE') {\n element.files[0] = value;\n return;\n }\n\n if (type === 'CHECKBOX' || type === 'RADIO') {\n if (value === true || value == element.value) {\n element.checked = true;\n }\n\n return;\n }\n\n if (type === 'TEXT' || type === 'PASSWORD' || type === 'HIDDEN') {\n element.value = value;\n return;\n }\n\n return;\n }\n\n if (element.tagName === 'TEXTAREA') {\n element.value = value;\n return;\n }\n },\n\n toggleFormEditing: function toggleFormEditing(formobj, value) {\n var selection = formobj.querySelectorAll('*[name]');\n\n if (value === undefined) {\n if (formobj.getAttribute('data-last-enabled') === null) {\n formobj.setAttribute('data-last-enabled', 'enabled');\n value = false;\n } else {\n formobj.removeAttribute('data-last-enabled');\n value = true;\n }\n }\n\n for (var selected = 0, _length = selection.length; selected < _length; selected++) {\n if (!forms.isFormField(selection[selected])) {\n continue;\n }\n\n var lastDisabled = selection[selected].getAttribute('data-last-disabled');\n if (!value) {\n if (lastDisabled === null) {\n if (selection[selected].getAttribute('disabled') !== null) {\n selection[selected].setAttribute('data-last-disabled', 'disabled');\n }\n }\n\n selection[selected].setAttribute('disabled', 'disabled');\n continue;\n }\n\n if (lastDisabled !== null) {\n selection[selected].removeAttribute('data-last-disabled');\n } else {\n selection[selected].removeAttribute('disabled');\n }\n }\n },\n\n serializeFormData: function serializeFormData(formobj) {\n var formdata = new FormData();\n var selection = formobj.querySelectorAll('*[name]');\n\n for (var selected = 0, _length2 = selection.length; selected < _length2; selected++) {\n var value = forms.getFormFieldValue(selection[selected]);\n\n if (value !== null) {\n formdata.append(selection[selected].getAttribute('name'), value);\n }\n }\n\n return formdata;\n },\n\n serialize: function serialize(formobj) {\n var values = {};\n var selection = formobj.querySelectorAll('*[name]');\n\n for (var selected = 0, _length3 = selection.length; selected < _length3; selected++) {\n var value = forms.getFormFieldValue(selection[selected]);\n\n if (value !== null) {\n values[selection[selected].getAttribute('name')] = value;\n }\n }\n\n return values;\n },\n\n deserialize: function deserialize(formobj, data) {\n var selection = formobj.querySelectorAll('*[name]');\n\n for (var selected = 0, _length4 = selection.length; selected < _length4; selected++) {\n forms.setFormFieldValue(selection[selected], data[selection[selected].getAttribute('name')]);\n }\n }\n };\n\n return forms;\n})();\n\nmodule.exports = exports['default'];\n},{\"../laroux.ajax.js\":1,\"./laroux.dom.js\":15}],17:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _larouxDomJs = require('./laroux.dom.js');\n\nvar _larouxDomJs2 = _interopRequireDefault(_larouxDomJs);\n\nvar _larouxFormsJs = require('./laroux.forms.js');\n\nvar _larouxFormsJs2 = _interopRequireDefault(_larouxFormsJs);\n\nexports['default'] = (function () {\n 'use strict';\n\n var keys = {\n keyName: function keyName(keycode) {\n keycode = keycode.toLowerCase();\n\n switch (keycode) {\n case 'backspace':\n return 8;\n\n case 'tab':\n return 9;\n\n case 'enter':\n case 'return':\n return 13;\n\n case 'esc':\n case 'escape':\n return 27;\n\n case 'space':\n return 32;\n\n case 'pgup':\n return 33;\n\n case 'pgdn':\n return 34;\n\n case 'end':\n return 35;\n\n case 'home':\n return 36;\n\n case 'left':\n return 37;\n\n case 'up':\n return 38;\n\n case 'right':\n return 39;\n\n case 'down':\n return 40;\n\n case 'insert':\n return 45;\n\n case 'delete':\n return 46;\n\n case 'f1':\n return 112;\n\n case 'f2':\n return 113;\n\n case 'f3':\n return 114;\n\n case 'f4':\n return 115;\n\n case 'f5':\n return 116;\n\n case 'f6':\n return 117;\n\n case 'f7':\n return 118;\n\n case 'f8':\n return 119;\n\n case 'f9':\n return 120;\n\n case 'f10':\n return 121;\n\n case 'f11':\n return 122;\n\n case 'f12':\n return 123;\n\n case ',':\n return 188;\n\n case '.':\n return 190;\n }\n\n return String.fromCharCode(keycode);\n },\n\n // {target, key, shift, ctrl, alt, disableInputs, callback}\n assign: function assign(options) {\n var wrapper = function wrapper(ev) {\n if (!ev) {\n ev = event;\n }\n\n var element = ev.target || ev.srcElement;\n if (element.nodeType === 3 || element.nodeType === 11) {\n // element.nodeType === 1 ||\n element = element.parentNode;\n }\n\n if (options.disableInputs && _larouxFormsJs2['default'].isFormField(element)) {\n return;\n }\n\n if (options.shift && !ev.shiftKey) {\n return;\n }\n\n if (options.ctrl && !ev.ctrlKey) {\n return;\n }\n\n if (options.alt && !ev.altKey) {\n return;\n }\n\n var key = keys.keyName(options.key);\n if (key !== (ev.keyCode || ev.which)) {\n return;\n }\n\n options.callback(ev);\n\n return false;\n };\n\n _larouxDomJs2['default'].setEvent(options.target || document, 'keydown', wrapper);\n }\n };\n\n return keys;\n})();\n\nmodule.exports = exports['default'];\n},{\"./laroux.dom.js\":15,\"./laroux.forms.js\":16}],18:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _larouxDomJs = require('./laroux.dom.js');\n\nvar _larouxDomJs2 = _interopRequireDefault(_larouxDomJs);\n\nvar _larouxHelpersJs = require('../laroux.helpers.js');\n\nvar _larouxHelpersJs2 = _interopRequireDefault(_larouxHelpersJs);\n\nexports['default'] = (function () {\n 'use strict';\n\n var mvc = {\n apps: {},\n pauseUpdate: false,\n\n init: function init(element, model) {\n if (element.constructor === String) {\n element = _larouxDomJs2['default'].selectById(element);\n }\n\n // if (model.constructor !== types.Observable) {\n // model = new types.Observable(model);\n // }\n\n var appKey = element.getAttribute('id');\n\n model.on(function (event) {\n if (!mvc.pauseUpdate) {\n mvc.update(appKey); // , [event.key]\n }\n });\n\n mvc.apps[appKey] = {\n element: element,\n model: model // ,\n // modelKeys: null,\n // boundElements: null,\n // eventElements: null\n };\n\n mvc.rebind(appKey);\n },\n\n rebind: function rebind(appKey) {\n var app = mvc.apps[appKey];\n /*jslint nomen: true */\n app.modelKeys = _larouxHelpersJs2['default'].getKeysRecursive(app.model); // FIXME: works only for $l.types.Observable\n app.boundElements = {};\n app.eventElements = [];\n\n mvc.scanElements(app, app.element);\n mvc.update(appKey);\n\n var callback = function callback(ev, elem) {\n var binding = mvc.bindStringParser(elem.getAttribute('lr-event'));\n // mvc.pauseUpdate = true;\n for (var item in binding) {\n if (item === null || !binding.hasOwnProperty(item)) {\n continue;\n }\n\n if (binding[item].charAt(0) === '\\'') {\n app.model[item] = binding[item].substring(1, binding[item].length - 1);\n } else if (binding[item].substring(0, 5) === 'attr.') {\n app.model[item] = elem.getAttribute(binding[item].substring(5));\n } else if (binding[item].substring(0, 5) === 'prop.') {\n app.model[item] = elem[binding[item].substring(5)];\n }\n }\n // mvc.pauseUpdate = false;\n };\n\n for (var i = 0, _length = app.eventElements.length; i < _length; i++) {\n _larouxDomJs2['default'].setEvent(app.eventElements[i].element, app.eventElements[i].binding[null], callback);\n }\n },\n\n scanElements: function scanElements(app, element) {\n for (var i = 0, atts = element.attributes, m = atts.length; i < m; i++) {\n if (atts[i].name === 'lr-bind') {\n var binding1 = mvc.bindStringParser(atts[i].value);\n\n for (var item in binding1) {\n if (!binding1.hasOwnProperty(item)) {\n continue;\n }\n\n if (app.boundElements[binding1[item]] === undefined) {\n app.boundElements[binding1[item]] = [];\n }\n\n app.boundElements[binding1[item]].push({\n element: element,\n target: item\n });\n }\n } else if (atts[i].name === 'lr-event') {\n var binding2 = mvc.bindStringParser(atts[i].value);\n\n app.eventElements.push({\n element: element,\n binding: binding2\n });\n }\n }\n\n for (var j = 0, chldrn = element.childNodes, n = chldrn.length; j < n; j++) {\n if (chldrn[j].nodeType === 1) {\n mvc.scanElements(app, chldrn[j]);\n }\n }\n },\n\n update: function update(appKey, keys) {\n var app = mvc.apps[appKey];\n\n if (typeof keys === 'undefined') {\n keys = app.modelKeys;\n }\n\n for (var i = 0, length1 = keys.length; i < length1; i++) {\n if (!(keys[i] in app.boundElements)) {\n continue;\n }\n\n var boundElement = app.boundElements[keys[i]],\n value = _larouxHelpersJs2['default'].getElement(app.model, keys[i]);\n\n if (value instanceof Function) {\n value = value.call(app.model);\n }\n\n for (var j = 0, length2 = boundElement.length; j < length2; j++) {\n if (boundElement[j].target.substring(0, 6) === 'style.') {\n boundElement[j].element.style[boundElement[j].target.substring(6)] = value;\n } else if (boundElement[j].target.substring(0, 5) === 'attr.') {\n // FIXME removeAttribute on null value?\n boundElement[j].element.setAttribute(boundElement[j].target.substring(5), value);\n } else if (boundElement[j].target.substring(0, 5) === 'prop.') {\n // FIXME removeAttribute on null value?\n boundElement[j].element[boundElement[j].target.substring(5)] = value;\n }\n }\n }\n },\n\n bindStringParser: function bindStringParser(text) {\n var lastBuffer = null,\n buffer = '',\n state = 0,\n result = {};\n\n for (var i = 0, _length2 = text.length; i < _length2; i++) {\n var curr = text.charAt(i);\n\n if (state === 0) {\n if (curr === ':') {\n state = 1;\n lastBuffer = buffer.trim();\n buffer = '';\n continue;\n }\n }\n\n if (curr === ',') {\n state = 0;\n result[lastBuffer] = buffer.trim();\n buffer = '';\n continue;\n }\n\n buffer += curr;\n }\n\n if (buffer.length > 0) {\n result[lastBuffer] = buffer.trim();\n }\n\n return result;\n }\n };\n\n return mvc;\n})();\n\nmodule.exports = exports['default'];\n},{\"../laroux.helpers.js\":5,\"./laroux.dom.js\":15}],19:[function(require,module,exports){\n(function (global){\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _larouxJs = require('../laroux.js');\n\nvar _larouxJs2 = _interopRequireDefault(_larouxJs);\n\nvar _larouxHelpersJs = require('../laroux.helpers.js');\n\nvar _larouxHelpersJs2 = _interopRequireDefault(_larouxHelpersJs);\n\nexports['default'] = (function () {\n 'use strict';\n\n // routes - partially taken from 'routie' project\n // can be found at: https://github.com/jgallen23/routie\n var routes = {\n map: {},\n attached: false,\n current: null,\n\n regexConverter: function regexConverter(path, sensitive, strict) {\n var keys = [],\n regexString = path.concat(strict ? '' : '/?').replace(/\\/\\(/g, '(?:/').replace(/\\+/g, '__plus__').replace(/(\\/)?(\\.)?:(\\w+)(?:(\\(.*?\\)))?(\\?)?/g, function (_, slash, format, key, capture, optional) {\n keys.push({ name: key, optional: !!optional });\n slash = slash || '';\n\n return '' + (optional ? '' : slash) + '(?:' + (optional ? slash : '') + (format || '') + (capture || (format && '([^/.]+?)' || '([^/]+?)')) + ')' + (optional || '');\n }).replace(/([\\/.])/g, '\\\\$1').replace(/__plus__/g, '(.+)').replace(/\\*/g, '(.*)');\n\n return {\n regex: new RegExp('^' + regexString + '$', sensitive ? '' : 'i'),\n keys: keys\n };\n },\n\n add: function add(path, callback) {\n routes.addNamed(null, path, callback);\n },\n\n addNamed: function addNamed(name, path, callback) {\n if (!(path in routes.map)) {\n var converted = routes.regexConverter(path);\n\n routes.map[path] = {\n name: name,\n callback: callback,\n params: {},\n keys: converted.keys,\n regex: converted.regex\n };\n } else {\n routes.map[path].callback = callback;\n }\n },\n\n get: function get(path) {\n for (var item in routes.map) {\n if (!routes.map.hasOwnProperty(item)) {\n continue;\n }\n\n var route = routes.map[item],\n match = route.regex.exec(path);\n\n if (!match) {\n continue;\n }\n\n var params = {};\n for (var i = 1, _length = match.length; i < _length; i++) {\n var key = route.keys[i - 1];\n\n if (key !== undefined) {\n params[key.name] = typeof match[i] == 'string' ? decodeURIComponent(match[i]) : match[i];\n }\n }\n\n return {\n route: item,\n resolved: path,\n params: params,\n callback: route.callback\n };\n }\n\n return null;\n },\n\n getNamed: function getNamed(name, params) {\n for (var item in routes.map) {\n if (!routes.map.hasOwnProperty(item)) {\n continue;\n }\n\n var route = routes.map[item],\n path = item;\n\n for (var i = 0, _length2 = route.keys.length; i < _length2; i++) {\n var key = route.keys[i];\n\n path = path.replace(':' + key.name, params[key.name] || '');\n }\n\n if (route.name == name) {\n return {\n route: item,\n resolved: path,\n params: params,\n callback: route.callback\n };\n }\n }\n\n return null;\n },\n\n link: function link(name, params) {\n var route = routes.getNamed(name, params);\n\n if (route === null) {\n return null;\n }\n\n return route.resolved;\n },\n\n exec: function exec(route) {\n var previous = routes.current,\n args = _larouxHelpersJs2['default'].map(route.params, function (value) {\n return value;\n });\n\n routes.current = route;\n args.push({\n previous: previous,\n current: routes.current\n });\n\n return route.callback.apply(global, args);\n },\n\n go: function go(path, silent) {\n var attached = routes.attached;\n\n if (silent && attached) {\n routes.detach();\n }\n\n setTimeout(function () {\n global.location.hash = path;\n\n if (silent && attached) {\n setTimeout(function () {\n routes.attach();\n }, 1);\n }\n }, 1);\n },\n\n goNamed: function goNamed(name, params, silent) {\n var path = routes.link(name, params);\n\n if (path === null) {\n return null;\n }\n\n routes.go(path, silent);\n },\n\n reload: function reload() {\n var hash = location.hash.substring(1),\n route = routes.get(hash);\n\n if (route === null) {\n return;\n }\n\n routes.exec(route);\n },\n\n attach: function attach() {\n global.addEventListener('hashchange', routes.reload, false);\n routes.attached = true;\n },\n\n detach: function detach() {\n global.removeEventListener('hashchange', routes.reload);\n routes.attached = false;\n }\n };\n\n _larouxJs2['default'].ready(routes.attach);\n\n return routes;\n})();\n\nmodule.exports = exports['default'];\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"../laroux.helpers.js\":5,\"../laroux.js\":6}],20:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _larouxJs = require('../laroux.js');\n\nvar _larouxJs2 = _interopRequireDefault(_larouxJs);\n\nvar _larouxDomJs = require('./laroux.dom.js');\n\nvar _larouxDomJs2 = _interopRequireDefault(_larouxDomJs);\n\nexports['default'] = (function () {\n 'use strict';\n\n // touch - partially taken from 'tocca.js' project\n // can be found at: https://github.com/GianlucaGuarini/Tocca.js\n var touch = {\n touchStarted: null,\n swipeTreshold: 80,\n precision: 30,\n tapCount: 0,\n tapTreshold: 200,\n longTapTreshold: 800,\n tapTimer: null,\n pos: null,\n cached: null,\n\n events: {\n start: ['touchstart', 'pointerdown', 'MSPointerDown', 'mousedown'],\n end: ['touchend', 'pointerup', 'MSPointerUp', 'mouseup'],\n move: ['touchmove', 'pointermove', 'MSPointerMove', 'mousemove']\n },\n\n locatePointer: function locatePointer(event) {\n if (event.targetTouches) {\n event = event.targetTouches[0];\n }\n\n touch.pos = [event.pageX, event.pageY];\n },\n\n init: function init() {\n var events = [0, navigator.msPointerEnabled ? 2 : 1, 3];\n\n for (var i = 0, _length = events.length; i < _length; i++) {\n _larouxDomJs2['default'].setEventSingle(document, touch.events.start[events[i]], touch.onstart);\n _larouxDomJs2['default'].setEventSingle(document, touch.events.end[events[i]], touch.onend);\n _larouxDomJs2['default'].setEventSingle(document, touch.events.move[events[i]], touch.locatePointer);\n }\n },\n\n onstart: function onstart(event) {\n touch.locatePointer(event);\n touch.cached = [touch.pos[0], touch.pos[1]];\n touch.touchStarted = Date.now();\n /*jslint plusplus: true */\n touch.tapCount++;\n\n var callback = function callback() {\n if (touch.cached[0] >= touch.pos[0] - touch.precision && touch.cached[0] <= touch.pos[0] + touch.precision && touch.cached[1] >= touch.pos[1] - touch.precision && touch.cached[1] <= touch.pos[1] + touch.precision) {\n if (touch.touchStarted === null) {\n _larouxDomJs2['default'].dispatchEvent(event.target, touch.tapCount === 2 ? 'dbltap' : 'tap', {\n innerEvent: event,\n x: touch.pos[0],\n y: touch.pos[1]\n });\n\n touch.tapCount = 0;\n return;\n }\n\n if (Date.now() - touch.touchStarted > touch.longTapTreshold) {\n _larouxDomJs2['default'].dispatchEvent(event.target, 'longtap', {\n innerEvent: event,\n x: touch.pos[0],\n y: touch.pos[1]\n });\n\n touch.touchStarted = null;\n touch.tapCount = 0;\n return;\n }\n\n touch.tapTimer = setTimeout(callback, touch.tapTreshold);\n return;\n }\n\n touch.tapCount = 0;\n };\n\n clearTimeout(touch.tapTimer);\n touch.tapTimer = setTimeout(callback, touch.tapTreshold);\n },\n\n onend: function onend(event) {\n var delta = [touch.pos[0] - touch.cached[0], touch.pos[1] - touch.cached[1]],\n data = {\n innerEvent: event,\n x: touch.pos[0],\n y: touch.pos[1],\n distance: {\n x: Math.abs(delta[0]),\n y: Math.abs(delta[1])\n }\n };\n\n touch.touchStarted = null;\n\n if (delta[0] <= -touch.swipeTreshold) {\n _larouxDomJs2['default'].dispatchEvent(event.target, 'swiperight', data);\n }\n\n if (delta[0] >= touch.swipeTreshold) {\n _larouxDomJs2['default'].dispatchEvent(event.target, 'swipeleft', data);\n }\n\n if (delta[1] <= -touch.swipeTreshold) {\n _larouxDomJs2['default'].dispatchEvent(event.target, 'swipedown', data);\n }\n\n if (delta[1] >= touch.swipeTreshold) {\n _larouxDomJs2['default'].dispatchEvent(event.target, 'swipeup', data);\n }\n }\n };\n\n _larouxJs2['default'].ready(touch.init);\n\n return touch;\n})();\n\nmodule.exports = exports['default'];\n},{\"../laroux.js\":6,\"./laroux.dom.js\":15}],21:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _larouxJs = require('../laroux.js');\n\nvar _larouxJs2 = _interopRequireDefault(_larouxJs);\n\nvar _larouxAnimJs = require('./laroux.anim.js');\n\nvar _larouxAnimJs2 = _interopRequireDefault(_larouxAnimJs);\n\nvar _larouxCssJs = require('./laroux.css.js');\n\nvar _larouxCssJs2 = _interopRequireDefault(_larouxCssJs);\n\nvar _larouxDomJs = require('./laroux.dom.js');\n\nvar _larouxDomJs2 = _interopRequireDefault(_larouxDomJs);\n\nvar _larouxFormsJs = require('./laroux.forms.js');\n\nvar _larouxFormsJs2 = _interopRequireDefault(_larouxFormsJs);\n\nvar _larouxKeysJs = require('./laroux.keys.js');\n\nvar _larouxKeysJs2 = _interopRequireDefault(_larouxKeysJs);\n\nvar _larouxMvcJs = require('./laroux.mvc.js');\n\nvar _larouxMvcJs2 = _interopRequireDefault(_larouxMvcJs);\n\nvar _larouxRoutesJs = require('./laroux.routes.js');\n\nvar _larouxRoutesJs2 = _interopRequireDefault(_larouxRoutesJs);\n\nvar _larouxTouchJs = require('./laroux.touch.js');\n\nvar _larouxTouchJs2 = _interopRequireDefault(_larouxTouchJs);\n\nexports['default'] = (function () {\n 'use strict';\n\n _larouxJs2['default'].extend({\n anim: _larouxAnimJs2['default'],\n css: _larouxCssJs2['default'],\n dom: _larouxDomJs2['default'],\n forms: _larouxFormsJs2['default'],\n keys: _larouxKeysJs2['default'],\n mvc: _larouxMvcJs2['default'],\n routes: _larouxRoutesJs2['default'],\n touch: _larouxTouchJs2['default'],\n\n cached: {\n single: {},\n array: {},\n id: {}\n },\n\n c: function c(selector) {\n if (selector instanceof Array) {\n return _larouxJs2['default'].cached.array[selector] || (_larouxJs2['default'].cached.array[selector] = helpers.toArray(document.querySelectorAll(selector)));\n }\n\n return _larouxJs2['default'].cached.single[selector] || (_larouxJs2['default'].cached.single[selector] = document.querySelector(selector));\n },\n\n id: function id(selector, parent) {\n return (parent || document).getElementById(selector);\n },\n\n idc: function idc(selector) {\n return _larouxJs2['default'].cached.id[selector] || (_larouxJs2['default'].cached.id[selector] = document.getElementById(selector));\n }\n });\n\n if (typeof document !== 'undefined') {\n document.addEventListener('DOMContentLoaded', _larouxJs2['default'].setReady);\n }\n\n return _larouxJs2['default'];\n})();\n\nmodule.exports = exports['default'];\n},{\"../laroux.js\":6,\"./laroux.anim.js\":13,\"./laroux.css.js\":14,\"./laroux.dom.js\":15,\"./laroux.forms.js\":16,\"./laroux.keys.js\":17,\"./laroux.mvc.js\":18,\"./laroux.routes.js\":19,\"./laroux.touch.js\":20}]},{},[21]);\n"],"sourceRoot":"/source/"} \ No newline at end of file +{"version":3,"sources":["laroux.js"],"names":["e","t","n","r","s","o","u","a","require","i","f","Error","code","l","exports","call","length",1,"module","_interopRequireDefault","obj","__esModule","default","Object","defineProperty","value","_larouxDeferredJs","_larouxDeferredJs2","_larouxEventsJs","_larouxEventsJs2","_larouxHelpersJs","_larouxHelpersJs2","ajax","corsDefault","xDomainObject","xmlHttpRequestObject","xDomainRequestObject","xhr","crossDomain","XMLHttpRequest","XDomainRequest","xhrResp","options","response","undefined","datatype","responseText","JSON","parse","eval","responseXML","makeRequest","deferred","cors","url","timer","timeout","setTimeout","abort","reject","onreadystatechange","readyState","clearTimeout","status","res","isSuccess","err","invoke","exception","resolve","progress","getdata","constructor","queryString","buildQueryString","indexOf","jsonp","open","type","xhrFields","hasOwnProperty","headers","j","setRequestHeader","postdata","send","postdatatype","stringify","buildFormData","get","path","values","getJson","getJsonP","method","getScript","post","postJson","Content-Type","./laroux.deferred.js","./laroux.events.js","./laroux.helpers.js",2,"date","shortDateFormat","longDateFormat","timeFormat","monthsShort","monthsLong","strings","now","later","ago","seconds","aminute","minutes","ahour","hours","aday","days","aweek","weeks","amonth","months","ayear","years","parseEpoch","timespan","limitWithWeeks","Math","ceil","getCustomDateString","format","timestamp","Date","replace","match","getFullYear","getYear","getMonth","substr","getDate","hour1","getHours","hour2","getMinutes","getSeconds","getDateDiffString","getTime","absTimespan","abs","past","timespanstring","getShortDateString","includeTime","getLongDateString",3,"_classCallCheck","instance","Constructor","TypeError","_createClass","defineProperties","target","props","descriptor","enumerable","configurable","writable","key","protoProps","staticProps","prototype","Deferred","this","events","eventName","_len","arguments","args","Array","_key","finalEvent","invoked","result","invokeCallback","callbacks","completed","concat","event","callback","shift","apply","_invoke","_len2","_key2","_invoke2","_len3","_key3","push","on","_len4","_key4",4,"delegates","add","item",5,"helpers","uniqueId","getUniqueId","clone","merge","source","keys","_length","mergeNs","ptr","pathSlices","split","_length2","current","rfc3986","uri","regEx","_name","encodeURIComponent","toString","data","FormData","_name2","append","replaceAll","text","dictionary","re","RegExp","join","camelCase","flag","output","currChar","charAt","toUpperCase","antiCamelCase","toLowerCase","quoteAttr","spliceString","index","count","slice","random","min","max","floor","find","iterator","context","some","list","each","arr","testOwnProperties","map","dontSkipReturns","results","aeach","_length3","amap","_length4","aindex","start","_length5","column","shuffle","shuffled","rand","prependArray","items","removeFromArray","targetKey","splice","toArray","getAsArray","NodeList","_length6","getLength","getKeysRecursive","delimiter","prefix","getElement","defaultValue","pos","rest","substring","callAll","scope","parameters","_length7",6,"global","_larouxAjaxJs","_larouxAjaxJs2","_larouxDateJs","_larouxDateJs2","_larouxStoryboardJs","_larouxStoryboardJs2","_larouxTypesJs","_larouxTypesJs2","_larouxTemplatesJs","_larouxTemplatesJs2","_larouxTimersJs","_larouxTimersJs2","_larouxVarsJs","_larouxVarsJs2","_larouxWhenJs","_larouxWhenJs2","laroux","selector","parent","document","querySelectorAll","querySelector","storyboard","types","templates","timers","vars","when","extend","extendNs","readyPassed","ready","setReady","setInterval","ontick","$l","self","window","./laroux.ajax.js","./laroux.date.js","./laroux.storyboard.js","./laroux.templates.js","./laroux.timers.js","./laroux.types.js","./laroux.vars.js","./laroux.when.js",7,"Storyboard","phases","phaseKeys","currentIteration","running","addPhase","checkPromise","promises","phase","fnc","addPromise","phaseId","promise","done","currentPhase",8,"engines","plain","compile","template","render","compiled","model","dict","lastIndex","nextIndex","closeIndex","hogan","Hogan","mustache","Mustache","handlebars","Handlebars","lodash","_","underscore","engine","element","content","nodeType","textContent","nodeValue",9,"set","next","remove","id","currentItem","removeKeys","state","reset","item2",10,"staticKeys","Observable","_callbacks","_onupdate","changes","observe","setRange","valueKey","unobserve","observable",11,"storages","cookie","defaultPath","name","decodeURIComponent","expires","expireValue","toGMTString","local","localStorage","session","sessionStorage","storage",12,"When","queues","remaining","deferredCompleted","check","then","queue","Function","async","is",13,"_larouxCssJs","_larouxCssJs2","anim","fx","interpolate","easing","cos","PI","newanim","startTime","unit","from","object","body","property","documentElement","scrollTop","String","Number","requestAnimationFrame","onframe","setCss","getProperty","style","step","time","scrollTo","finishT","to","../laroux.deferred.js","../laroux.helpers.js","./laroux.css.js",14,"css","hasClass","className","classList","contains","addClass","elements","removeClass","toggleClass","cycleClass","styleName","getComputedStyle","getPropertyValue","setProperty","properties","oldProperties","newStyleName","defaultTransition","setTransitionSingle","transition","transitions","currentTransitions","currentTransitionsArray","transitionProperties","found","trim","localeCompare","webkitTransition","msTransition","setTransition","show","opacity","hide","height","getPropertyCSSValue","getFloatValue","primitiveType","innerHeight","clientHeight","outerHeight","includeMargin","offsetHeight","marginTop","marginBottom","margins","width","innerWidth","clientWidth","outerWidth","offsetWidth","marginLeft","marginRight","top","getBoundingClientRect","left","scrollLeft","aboveTheTop","bottom","belowTheFold","leftOfScreen","right","rightOfScreen","inViewport","rect",15,"dom","docprop","propName","select","selectByClass","getElementsByClassName","selectByTag","getElementsByTagName","selectById","getElementById","selectSingle","attr","attributes","getAttribute","oldAttributes","attributeName","removeAttribute","setAttribute","datanames","oldDatanames","dataName","eventHistory","setEvent","eventname","setEventSingle","callbackWrapper","preventDefault","returnValue","addEventListener","unsetEvent","i1","length1","i2","length2","removeEventListener","dispatchEvent","customEvent","createEvent","initEvent","create","html","frag","createDocumentFragment","temp","createElement","insertAdjacentHTML","firstChild","appendChild","children","elem","createOption","isDefault","option","selectByValue","selectedIndex","clear","hasChildNodes","removeChild","insert","position","prepend","replaceText","cloneReturn","cloneAppend","cloneInsertAfter","cloneInsertBefore","container","newElement","cloneNode","parentNode","insertBefore","nextSibling","Element","parentElement",16,"_larouxDomJs","_larouxDomJs2","forms","ajaxForm","formobj","callbackBegin","serializeFormData","isFormField","tagName","getFormFieldValue","disabled","files","checked","setFormFieldValue","toggleFormEditing","selection","selected","lastDisabled","formdata","serialize","deserialize","../laroux.ajax.js","./laroux.dom.js",17,"_larouxFormsJs","_larouxFormsJs2","keyName","keycode","fromCharCode","assign","wrapper","ev","srcElement","disableInputs","shiftKey","ctrl","ctrlKey","alt","altKey","keyCode","which","./laroux.forms.js",18,"mvc","apps","pauseUpdate","init","appKey","update","rebind","app","modelKeys","boundElements","eventElements","scanElements","binding","bindStringParser","atts","m","binding1","binding2","chldrn","childNodes","boundElement","lastBuffer","buffer","curr",19,"_larouxJs","_larouxJs2","routes","attached","regexConverter","sensitive","strict","regexString","slash","capture","optional","regex","addNamed","converted","params","route","exec","resolved","getNamed","link","previous","go","silent","detach","location","hash","attach","goNamed","reload","../laroux.js",20,"touch","touchStarted","swipeTreshold","precision","tapCount","tapTreshold","longTapTreshold","tapTimer","cached","end","move","locatePointer","targetTouches","pageX","pageY","navigator","msPointerEnabled","onstart","onend","innerEvent","x","y","delta","distance",21,"_larouxAnimJs","_larouxAnimJs2","_larouxKeysJs","_larouxKeysJs2","_larouxMvcJs","_larouxMvcJs2","_larouxRoutesJs","_larouxRoutesJs2","_larouxTouchJs","_larouxTouchJs2","single","array","c","idc","./laroux.anim.js","./laroux.keys.js","./laroux.mvc.js","./laroux.routes.js","./laroux.touch.js"],"mappings":"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","file":"build/dist/web/laroux.min.js","sourcesContent":["/**\n * laroux.js - A jquery substitute for modern browsers (web bundle)\n *\n * @version v2.1.1\n * @link https://eserozvataf.github.io/laroux.js\n * @license Apache-2.0\n */\n(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o 0) {\n url += (url.indexOf('?') < 0 ? '?' : '&') + queryString;\n }\n } else {\n url += (url.indexOf('?') < 0 ? '?' : '&') + options.getdata;\n }\n }\n\n if (options.jsonp !== undefined) {\n url += (url.indexOf('?') < 0 ? '?' : '&') + 'jsonp=' + options.jsonp;\n }\n\n if (!ajax.xDomainObject) {\n xhr.open(options.type, url, true);\n } else {\n xhr.open(options.type, url);\n }\n\n if (options.xhrFields !== undefined) {\n for (var i in options.xhrFields) {\n if (!options.xhrFields.hasOwnProperty(i)) {\n continue;\n }\n\n xhr[i] = options.xhrFields[i];\n }\n }\n\n var headers = options.headers || {};\n\n if (!cors) {\n headers['X-Requested-With'] = 'XMLHttpRequest';\n }\n\n for (var j in headers) {\n if (!headers.hasOwnProperty(j)) {\n continue;\n }\n\n xhr.setRequestHeader(j, headers[j]);\n }\n\n if (options.postdata === undefined || options.postdata === null) {\n xhr.send(null);\n return deferred;\n }\n\n switch (options.postdatatype) {\n case 'json':\n xhr.send(JSON.stringify(options.postdata));\n break;\n case 'form':\n xhr.send(_larouxHelpersJs2['default'].buildFormData(options.postdata));\n break;\n default:\n xhr.send(options.postdata);\n break;\n }\n\n return deferred;\n },\n\n get: function get(path, values, cors) {\n return ajax.makeRequest({\n type: 'GET',\n url: path,\n datatype: 'html',\n getdata: values,\n cors: cors || ajax.corsDefault\n });\n },\n\n getJson: function getJson(path, values, cors) {\n return ajax.makeRequest({\n type: 'GET',\n url: path,\n datatype: 'json',\n getdata: values,\n cors: cors || ajax.corsDefault\n });\n },\n\n getJsonP: function getJsonP(path, values, method, cors) {\n return ajax.makeRequest({\n type: 'GET',\n url: path,\n datatype: 'script',\n getdata: values,\n jsonp: method,\n cors: cors || ajax.corsDefault\n });\n },\n\n getScript: function getScript(path, values, cors) {\n return ajax.makeRequest({\n type: 'GET',\n url: path,\n datatype: 'script',\n getdata: values,\n cors: cors || ajax.corsDefault\n });\n },\n\n post: function post(path, values, cors) {\n return ajax.makeRequest({\n type: 'POST',\n url: path,\n datatype: 'json',\n postdata: values,\n postdatatype: 'form',\n cors: cors || ajax.corsDefault\n });\n },\n\n postJson: function postJson(path, values, cors) {\n return ajax.makeRequest({\n type: 'POST',\n url: path,\n datatype: 'json',\n postdata: values,\n postdatatype: 'json',\n headers: {\n 'Content-Type': 'application/json; charset=UTF-8'\n },\n cors: cors || ajax.corsDefault\n });\n }\n };\n\n return ajax;\n})();\n\nmodule.exports = exports['default'];\n},{\"./laroux.deferred.js\":3,\"./laroux.events.js\":4,\"./laroux.helpers.js\":5}],2:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nexports['default'] = (function () {\n 'use strict';\n\n var date = {\n shortDateFormat: 'dd.MM.yyyy',\n longDateFormat: 'dd MMMM yyyy',\n timeFormat: 'HH:mm',\n\n monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n monthsLong: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n\n strings: {\n now: 'now',\n later: 'later',\n ago: 'ago',\n seconds: 'seconds',\n aminute: 'a minute',\n minutes: 'minutes',\n ahour: 'a hour',\n hours: 'hours',\n aday: 'a day',\n days: 'days',\n aweek: 'a week',\n weeks: 'weeks',\n amonth: 'a month',\n months: 'months',\n ayear: 'a year',\n years: 'years'\n },\n\n parseEpoch: function parseEpoch(timespan, limitWithWeeks) {\n if (timespan < 60 * 1000) {\n timespan = Math.ceil(timespan / 1000);\n\n return timespan + ' ' + date.strings.seconds;\n }\n\n if (timespan < 60 * 60 * 1000) {\n timespan = Math.ceil(timespan / (60 * 1000));\n\n if (timespan === 1) {\n return date.strings.aminute;\n }\n\n return timespan + ' ' + date.strings.minutes;\n }\n\n if (timespan < 24 * 60 * 60 * 1000) {\n timespan = Math.ceil(timespan / (60 * 60 * 1000));\n\n if (timespan === 1) {\n return date.strings.ahour;\n }\n\n return timespan + ' ' + date.strings.hours;\n }\n\n if (timespan < 7 * 24 * 60 * 60 * 1000) {\n timespan = Math.ceil(timespan / (24 * 60 * 60 * 1000));\n\n if (timespan === 1) {\n return date.strings.aday;\n }\n\n return timespan + ' ' + date.strings.days;\n }\n\n if (timespan < 4 * 7 * 24 * 60 * 60 * 1000) {\n timespan = Math.ceil(timespan / (7 * 24 * 60 * 60 * 1000));\n\n if (timespan === 1) {\n return date.strings.aweek;\n }\n\n return timespan + ' ' + date.strings.weeks;\n }\n\n if (limitWithWeeks === true) {\n return null;\n }\n\n if (timespan < 30 * 7 * 24 * 60 * 60 * 1000) {\n timespan = Math.ceil(timespan / (30 * 24 * 60 * 60 * 1000));\n\n if (timespan === 1) {\n return date.strings.amonth;\n }\n\n return timespan + ' ' + date.strings.months;\n }\n\n timespan = Math.ceil(timespan / (365 * 24 * 60 * 60 * 1000));\n\n if (timespan === 1) {\n return date.strings.ayear;\n }\n\n return timespan + ' ' + date.strings.years;\n },\n\n getCustomDateString: function getCustomDateString(format, timestamp) {\n var now = timestamp || new Date();\n\n return format.replace(/yyyy|yy|MMMM|MMM|MM|M|dd|d|hh|h|HH|H|mm|m|ss|s|tt|t/g, function (match) {\n switch (match) {\n case 'yyyy':\n return now.getFullYear();\n\n case 'yy':\n return now.getYear();\n\n case 'MMMM':\n return date.monthsLong[now.getMonth()];\n\n case 'MMM':\n return date.monthsShort[now.getMonth()];\n\n case 'MM':\n return ('0' + (now.getMonth() + 1)).substr(-2, 2);\n\n case 'M':\n return now.getMonth() + 1;\n\n case 'dd':\n return ('0' + now.getDate()).substr(-2, 2);\n\n case 'd':\n return now.getDate();\n\n case 'hh':\n var hour1 = now.getHours();\n return ('0' + (hour1 % 12 > 0 ? hour1 % 12 : 12)).substr(-2, 2);\n\n case 'h':\n var hour2 = now.getHours();\n return hour2 % 12 > 0 ? hour2 % 12 : 12;\n\n case 'HH':\n return ('0' + now.getHours()).substr(-2, 2);\n\n case 'H':\n return now.getHours();\n\n case 'mm':\n return ('0' + now.getMinutes()).substr(-2, 2);\n\n case 'm':\n return now.getMinutes();\n\n case 'ss':\n return ('0' + now.getSeconds()).substr(-2, 2);\n\n case 's':\n return now.getSeconds();\n\n case 'tt':\n if (now.getHours() >= 12) {\n return 'pm';\n }\n\n return 'am';\n\n case 't':\n if (now.getHours() >= 12) {\n return 'p';\n }\n\n return 'a';\n }\n\n return match;\n });\n },\n\n getDateDiffString: function getDateDiffString(timestamp) {\n var now = Date.now(),\n timespan = now - timestamp.getTime(),\n absTimespan = Math.abs(timespan),\n past = timespan > 0;\n\n if (absTimespan <= 3000) {\n return date.strings.now;\n }\n\n var timespanstring = date.parseEpoch(absTimespan, true);\n if (timespanstring !== null) {\n return timespanstring + ' ' + (past ? date.strings.ago : date.strings.later);\n }\n\n return date.getShortDateString(timestamp, true);\n },\n\n getShortDateString: function getShortDateString(timestamp, includeTime) {\n return date.getCustomDateString(includeTime ? date.shortDateFormat + ' ' + date.timeFormat : date.shortDateFormat, timestamp);\n },\n\n getLongDateString: function getLongDateString(timestamp, includeTime) {\n return date.getCustomDateString(includeTime ? date.longDateFormat + ' ' + date.timeFormat : date.longDateFormat, timestamp);\n }\n };\n\n return date;\n})();\n\nmodule.exports = exports['default'];\n},{}],3:[function(require,module,exports){\n/*jslint node: true */\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar _larouxHelpersJs = require('./laroux.helpers.js');\n\nvar _larouxHelpersJs2 = _interopRequireDefault(_larouxHelpersJs);\n\nvar Deferred = (function () {\n function Deferred() {\n _classCallCheck(this, Deferred);\n\n this.events = {};\n }\n\n _createClass(Deferred, [{\n key: 'invoke',\n value: function invoke(eventName) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var finalEvent = eventName === 'done' || eventName === 'fail';\n\n if (eventName in this.events) {\n this.events[eventName].invoked = true;\n this.events[eventName].result = args;\n\n this.invokeCallback(this.events[eventName], args);\n } else {\n this.events[eventName] = { callbacks: [], invoked: true, result: args };\n }\n\n if (finalEvent && 'completed' in this.events) {\n this.invokeCallback(this.events.completed, [eventName].concat(args));\n }\n\n return this;\n }\n }, {\n key: 'invokeCallback',\n value: function invokeCallback(event, args) {\n if (!('callbacks' in event)) {\n return;\n }\n\n var callbacks = event.callbacks;\n\n while (callbacks.length > 0) {\n var callback = callbacks.shift();\n callback.apply(this, args);\n }\n }\n }, {\n key: 'resolve',\n value: function resolve() {\n var _invoke;\n\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return (_invoke = this.invoke).call.apply(_invoke, [this, 'done'].concat(args));\n }\n }, {\n key: 'reject',\n value: function reject() {\n var _invoke2;\n\n for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return (_invoke2 = this.invoke).call.apply(_invoke2, [this, 'fail'].concat(args));\n }\n }, {\n key: 'on',\n value: function on(eventName, callback) {\n if (!(eventName in this.events)) {\n this.events[eventName] = {\n callbacks: [callback],\n invoked: false,\n result: undefined\n };\n\n return this;\n }\n\n var event = this.events[eventName];\n\n if (event.invoked) {\n callback.apply(this, event.result);\n\n return this;\n }\n\n event.callbacks.push(callback);\n\n return this;\n }\n }, {\n key: 'done',\n value: function done(callback) {\n return this.on('done', callback);\n }\n }, {\n key: 'fail',\n value: function fail(callback) {\n return this.on('fail', callback);\n }\n }, {\n key: 'completed',\n value: function completed(callback) {\n return this.on('completed', callback);\n }\n }, {\n key: 'is',\n value: function is(eventName) {\n if (!(eventName in this.events)) {\n return false;\n }\n\n return this.events[eventName].invoked;\n }\n }], [{\n key: 'async',\n value: function async(callback) {\n for (var _len4 = arguments.length, args = Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n\n var deferred = new Deferred();\n\n setTimeout(function () {\n try {\n var result = callback.apply(deferred, args);\n deferred.resolve(result);\n } catch (err) {\n deferred.reject(err);\n }\n }, 0);\n\n return deferred;\n }\n }]);\n\n return Deferred;\n})();\n\nexports['default'] = Deferred;\nmodule.exports = exports['default'];\n},{\"./laroux.helpers.js\":5}],4:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nexports['default'] = (function () {\n 'use strict';\n\n var events = {\n delegates: [],\n\n add: function add(event, callback) {\n events.delegates.push({ event: event, callback: callback });\n },\n\n invoke: function invoke(event, args) {\n for (var item in events.delegates) {\n if (!events.delegates.hasOwnProperty(item)) {\n continue;\n }\n\n if (events.delegates[item].event != event) {\n continue;\n }\n\n events.delegates[item].callback(args);\n }\n }\n };\n\n return events;\n})();\n\nmodule.exports = exports['default'];\n},{}],5:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nexports['default'] = (function () {\n 'use strict';\n\n var helpers = {\n uniqueId: 0,\n\n getUniqueId: function getUniqueId() {\n /*jslint plusplus: true */\n return 'uid-' + ++helpers.uniqueId;\n },\n\n clone: function clone(obj) {\n return JSON.parse(JSON.stringify(obj));\n },\n\n merge: function merge(target, source, clone) {\n var result = clone ? helpers.clone(target) : target,\n keys = Object.keys(source);\n\n for (var i = 0, _length = keys.length; i < _length; i++) {\n var key = keys[i];\n\n if (result[key] instanceof Array) {\n result[key] = result[key].concat(source[key]);\n continue;\n }\n\n if (result[key] instanceof Object) {\n helpers.merge(result[key], source[key]);\n continue;\n }\n\n result[key] = source[key];\n }\n\n return result;\n },\n\n mergeNs: function mergeNs(target, path, source) {\n var ptr = target,\n pathSlices = path.split('.'),\n keys = Object.keys(source);\n\n for (var i = 0, _length2 = pathSlices.length; i < _length2; i++) {\n var current = pathSlices[i];\n\n if (ptr[current] === undefined) {\n ptr[current] = {};\n }\n\n ptr = ptr[current];\n }\n\n if (source !== undefined) {\n // might be replaced w/ $l.merge method\n helpers.merge(ptr, source);\n }\n\n return target;\n },\n\n buildQueryString: function buildQueryString(values, rfc3986) {\n var uri = '',\n regEx = /%20/g;\n\n for (var _name in values) {\n if (!values.hasOwnProperty(_name)) {\n continue;\n }\n\n if (typeof values[_name] !== 'function') {\n if (rfc3986 || false) {\n uri += '&' + encodeURIComponent(_name).replace(regEx, '+') + '=' + encodeURIComponent(values[_name].toString()).replace(regEx, '+');\n } else {\n uri += '&' + encodeURIComponent(_name) + '=' + encodeURIComponent(values[_name].toString());\n }\n }\n }\n\n return uri.substr(1);\n },\n\n buildFormData: function buildFormData(values) {\n var data = new FormData();\n\n for (var _name2 in values) {\n if (!values.hasOwnProperty(_name2)) {\n continue;\n }\n\n if (typeof values[_name2] !== 'function') {\n data.append(_name2, values[_name2]);\n }\n }\n\n return data;\n },\n\n format: function format() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return Array.prototype.shift.call(args).replace(/%s/g, function () {\n return Array.prototype.shift.call(args);\n });\n },\n\n replaceAll: function replaceAll(text, dictionary) {\n var re = new RegExp(Object.keys(dictionary).join('|'), 'g');\n\n return text.replace(re, function (match) {\n return dictionary[match];\n });\n },\n\n camelCase: function camelCase(value) {\n var flag = false;\n var output = '';\n\n for (var j = 0; j < value.length; j++) {\n var currChar = value.charAt(j);\n if (currChar === '-') {\n flag = true;\n continue;\n }\n\n output += !flag ? currChar : currChar.toUpperCase();\n flag = false;\n }\n\n return output;\n },\n\n antiCamelCase: function antiCamelCase(value) {\n var output = '';\n\n for (var j = 0; j < value.length; j++) {\n var currChar = value.charAt(j);\n if (currChar !== '-' && currChar == currChar.toUpperCase()) {\n output += '-' + currChar.toLowerCase();\n continue;\n }\n\n output += currChar;\n }\n\n return output;\n },\n\n quoteAttr: function quoteAttr(value) {\n return value.replace(/&/g, '&').replace(/'/g, ''').replace(/\"/g, '"').replace(//g, '>').replace(/\"/g, '"').replace(/\\r\\n/g, ' ').replace(/[\\r\\n]/g, ' ');\n },\n\n spliceString: function spliceString(value, index, count, add) {\n return value.slice(0, index) + (add || '') + value.slice(index + count);\n },\n\n random: function random(min, max) {\n return min + Math.floor(Math.random() * (max - min + 1));\n },\n\n find: function find(obj, iterator, context) {\n var result = undefined;\n\n obj.some(function (value, index, list) {\n if (iterator.call(context, value, index, list)) {\n result = value;\n return true;\n }\n });\n\n return result;\n },\n\n each: function each(arr, callback, testOwnProperties) {\n for (var item in arr) {\n if (testOwnProperties && !arr.hasOwnProperty(item)) {\n continue;\n }\n\n if (callback(item, arr[item]) === false) {\n break;\n }\n }\n\n return arr;\n },\n\n map: function map(arr, callback, dontSkipReturns, testOwnProperties) {\n var results = [];\n\n for (var item in arr) {\n if (testOwnProperties && !arr.hasOwnProperty(item)) {\n continue;\n }\n\n var result = callback(arr[item], item);\n if (result === false) {\n break;\n }\n\n if (dontSkipReturns || result !== undefined) {\n results.push(result);\n }\n }\n\n return results;\n },\n\n index: function index(arr, value, testOwnProperties) {\n for (var item in arr) {\n if (testOwnProperties && !arr.hasOwnProperty(item)) {\n continue;\n }\n\n if (arr[item] === value) {\n return item;\n }\n }\n\n return null;\n },\n\n aeach: function aeach(arr, callback) {\n for (var i = 0, _length3 = arr.length; i < _length3; i++) {\n if (callback(i, arr[i]) === false) {\n break;\n }\n }\n\n return arr;\n },\n\n amap: function amap(arr, callback, dontSkipReturns) {\n var results = [];\n\n for (var i = 0, _length4 = arr.length; i < _length4; i++) {\n var result = callback(arr[i], i);\n if (result === false) {\n break;\n }\n\n if (dontSkipReturns || result !== undefined) {\n results.push(result);\n }\n }\n\n return results;\n },\n\n aindex: function aindex(arr, value, start) {\n for (var i = start || 0, _length5 = arr.length; i < _length5; i++) {\n if (arr[i] === value) {\n return i;\n }\n }\n\n return -1;\n },\n\n column: function column(obj, key) {\n return helpers.map(obj, function (value) {\n return value[key];\n }, true);\n },\n\n shuffle: function shuffle(obj) {\n var index = 0,\n shuffled = [];\n\n for (var item in obj) {\n if (!obj.hasOwnProperty(item)) {\n continue;\n }\n\n var rand = helpers.random(0, index);\n shuffled[index++] = shuffled[rand];\n shuffled[rand] = obj[item];\n }\n\n return shuffled;\n },\n\n prependArray: function prependArray(obj, value) {\n var length = obj.length,\n items = new Array(length + 1);\n\n items[0] = value;\n for (var i = 0, j = 1; i < length; i++, j++) {\n items[j] = obj[i];\n }\n\n return items;\n },\n\n removeFromArray: function removeFromArray(obj, value) {\n var targetKey = null;\n\n for (var item in obj) {\n if (!obj.hasOwnProperty(item)) {\n continue;\n }\n\n if (obj[item] === value) {\n targetKey = item;\n break;\n }\n }\n\n if (targetKey !== null) {\n obj.splice(targetKey, 1);\n return true;\n }\n\n return false;\n },\n\n toArray: function toArray(obj) {\n var length = obj.length,\n items = new Array(length);\n\n for (var i = 0; i < length; i++) {\n items[i] = obj[i];\n }\n\n return items;\n },\n\n getAsArray: function getAsArray(obj) {\n if (obj instanceof Array) {\n return obj;\n }\n\n if (obj instanceof NodeList) {\n var _length6 = obj.length;\n\n var items = new Array(_length6);\n for (var i = 0; i < _length6; i++) {\n items[i] = obj[i];\n }\n\n return items;\n }\n\n return [obj];\n },\n\n getLength: function getLength(obj) {\n if (obj.constructor === Object) {\n if (obj.length !== undefined) {\n return obj.length;\n }\n\n return Object.keys(obj).length;\n }\n\n return -1;\n },\n\n getKeysRecursive: function getKeysRecursive(obj, delimiter, prefix, keys) {\n if (delimiter === undefined) {\n delimiter = '.';\n }\n\n if (prefix === undefined) {\n prefix = '';\n keys = [];\n }\n\n for (var item in obj) {\n if (!obj.hasOwnProperty(item)) {\n continue;\n }\n\n keys.push(prefix + item);\n\n if (obj[item] !== undefined && obj[item] !== null && obj[item].constructor === Object) {\n helpers.getKeysRecursive(obj[item], delimiter, prefix + item + delimiter, keys);\n continue;\n }\n }\n\n return keys;\n },\n\n getElement: function getElement(obj, path, defaultValue, delimiter) {\n if (defaultValue === undefined) {\n defaultValue = null;\n }\n\n if (delimiter === undefined) {\n delimiter = '.';\n }\n\n var pos = path.indexOf(delimiter);\n var key = undefined;\n var rest = undefined;\n if (pos === -1) {\n key = path;\n rest = null;\n } else {\n key = path.substring(0, pos);\n rest = path.substring(pos + 1);\n }\n\n if (!(key in obj)) {\n return defaultValue;\n }\n\n if (rest === null || rest.length === 0) {\n return obj[key];\n }\n\n return helpers.getElement(obj[key], rest, defaultValue, delimiter);\n },\n\n callAll: function callAll(callbacks, scope, parameters) {\n for (var i = 0, _length7 = callbacks.length; i < _length7; i++) {\n callbacks[i].apply(scope, parameters);\n }\n }\n };\n\n return helpers;\n})();\n\nmodule.exports = exports['default'];\n},{}],6:[function(require,module,exports){\n(function (global){\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _larouxAjaxJs = require('./laroux.ajax.js');\n\nvar _larouxAjaxJs2 = _interopRequireDefault(_larouxAjaxJs);\n\nvar _larouxDateJs = require('./laroux.date.js');\n\nvar _larouxDateJs2 = _interopRequireDefault(_larouxDateJs);\n\nvar _larouxDeferredJs = require('./laroux.deferred.js');\n\nvar _larouxDeferredJs2 = _interopRequireDefault(_larouxDeferredJs);\n\nvar _larouxEventsJs = require('./laroux.events.js');\n\nvar _larouxEventsJs2 = _interopRequireDefault(_larouxEventsJs);\n\nvar _larouxHelpersJs = require('./laroux.helpers.js');\n\nvar _larouxHelpersJs2 = _interopRequireDefault(_larouxHelpersJs);\n\nvar _larouxStoryboardJs = require('./laroux.storyboard.js');\n\nvar _larouxStoryboardJs2 = _interopRequireDefault(_larouxStoryboardJs);\n\nvar _larouxTypesJs = require('./laroux.types.js');\n\nvar _larouxTypesJs2 = _interopRequireDefault(_larouxTypesJs);\n\nvar _larouxTemplatesJs = require('./laroux.templates.js');\n\nvar _larouxTemplatesJs2 = _interopRequireDefault(_larouxTemplatesJs);\n\nvar _larouxTimersJs = require('./laroux.timers.js');\n\nvar _larouxTimersJs2 = _interopRequireDefault(_larouxTimersJs);\n\nvar _larouxVarsJs = require('./laroux.vars.js');\n\nvar _larouxVarsJs2 = _interopRequireDefault(_larouxVarsJs);\n\nvar _larouxWhenJs = require('./laroux.when.js');\n\nvar _larouxWhenJs2 = _interopRequireDefault(_larouxWhenJs);\n\nexports['default'] = (function () {\n 'use strict';\n\n var laroux = function laroux(selector, parent) {\n if (selector instanceof Array) {\n return _larouxHelpersJs2['default'].toArray((parent || document).querySelectorAll(selector));\n }\n\n // FIXME: Laroux: non-chromium optimization, but it runs\n // slowly in chromium\n //\n // let re = /^#([^\\+\\>\\[\\]\\.# ]*)$/.exec(selector);\n // if (re) {\n // return (parent || document).getElementById(re[1]);\n // }\n\n return (parent || document).querySelector(selector);\n };\n\n _larouxHelpersJs2['default'].merge(laroux, _larouxHelpersJs2['default']);\n _larouxHelpersJs2['default'].merge(laroux, {\n ajax: _larouxAjaxJs2['default'],\n date: _larouxDateJs2['default'],\n deferred: _larouxDeferredJs2['default'],\n events: _larouxEventsJs2['default'],\n storyboard: _larouxStoryboardJs2['default'],\n types: _larouxTypesJs2['default'],\n templates: _larouxTemplatesJs2['default'],\n timers: _larouxTimersJs2['default'],\n vars: _larouxVarsJs2['default'],\n when: _larouxWhenJs2['default'],\n\n extend: function extend(source) {\n return _larouxHelpersJs2['default'].merge(laroux, source);\n },\n\n extendNs: function extendNs(path, source) {\n return _larouxHelpersJs2['default'].mergeNs(laroux, path, source);\n },\n\n readyPassed: false,\n\n ready: function ready(callback) {\n if (!laroux.readyPassed) {\n _larouxEventsJs2['default'].add('ContentLoaded', callback);\n return;\n }\n\n callback();\n },\n\n setReady: function setReady() {\n if (!laroux.readyPassed) {\n _larouxEventsJs2['default'].invoke('ContentLoaded');\n setInterval(_larouxTimersJs2['default'].ontick, 100);\n laroux.readyPassed = true;\n }\n }\n });\n\n if (global.$l === undefined) {\n global.$l = laroux;\n }\n\n return laroux;\n})();\n\nmodule.exports = exports['default'];\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"./laroux.ajax.js\":1,\"./laroux.date.js\":2,\"./laroux.deferred.js\":3,\"./laroux.events.js\":4,\"./laroux.helpers.js\":5,\"./laroux.storyboard.js\":7,\"./laroux.templates.js\":8,\"./laroux.timers.js\":9,\"./laroux.types.js\":10,\"./laroux.vars.js\":11,\"./laroux.when.js\":12}],7:[function(require,module,exports){\n(function (global){\n/*jslint node: true */\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar _larouxDeferredJs = require('./laroux.deferred.js');\n\nvar _larouxDeferredJs2 = _interopRequireDefault(_larouxDeferredJs);\n\nvar Storyboard = (function () {\n function Storyboard() {\n _classCallCheck(this, Storyboard);\n\n var self = this;\n\n this.phases = [];\n this.phaseKeys = {};\n this.currentIteration = 0;\n this.running = false;\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n for (var i = 0, _length = args.length; i < _length; i++) {\n this.addPhase(args[i]);\n }\n\n this.checkPromise = function () {\n if (--self.phases[self.currentIteration].promises === 0 && !self.running) {\n self.start();\n }\n };\n }\n\n _createClass(Storyboard, [{\n key: 'addPhase',\n value: function addPhase(key) {\n this.phaseKeys[key] = this.phases.length;\n this.phases.push({\n key: key,\n callbacks: [],\n promises: 0\n });\n }\n }, {\n key: 'add',\n value: function add(phase, fnc) {\n if (fnc instanceof _larouxDeferredJs2['default']) {\n return this.addPromise(phase, fnc);\n }\n\n var phaseId = this.phaseKeys[phase];\n\n if (phaseId < this.currentIteration) {\n // execute immediately if phase is already passed\n fnc.apply(global);\n return;\n }\n\n this.phases[phaseId].callbacks.push(fnc);\n }\n }, {\n key: 'addPromise',\n value: function addPromise(phase, promise) {\n var phaseId = this.phaseKeys[phase];\n\n // skips if phase is already passed\n if (phaseId < this.currentIteration) {\n return;\n }\n\n this.phases[phaseId].promises++;\n promise.done(this.checkPromise);\n }\n }, {\n key: 'start',\n value: function start() {\n this.running = true;\n\n while (this.phases.length > this.currentIteration) {\n var currentPhase = this.phases[this.currentIteration];\n\n while (currentPhase.callbacks.length > 0) {\n var fnc = currentPhase.callbacks.shift();\n fnc.apply(global);\n }\n\n if (currentPhase.promises > 0) {\n break;\n }\n\n this.currentIteration++;\n }\n\n this.running = false;\n }\n }]);\n\n return Storyboard;\n})();\n\nexports['default'] = Storyboard;\nmodule.exports = exports['default'];\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"./laroux.deferred.js\":3}],8:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _larouxHelpersJs = require('./laroux.helpers.js');\n\nvar _larouxHelpersJs2 = _interopRequireDefault(_larouxHelpersJs);\n\nexports['default'] = (function () {\n 'use strict';\n\n var templates = {\n engines: {\n plain: {\n compile: function compile(template, options) {\n return [template, options];\n },\n\n render: function render(compiled, model) {\n var result = compiled[0],\n dict = [],\n lastIndex = 0,\n nextIndex = undefined;\n\n while ((nextIndex = result.indexOf('{{', lastIndex)) !== -1) {\n nextIndex += 2;\n var closeIndex = result.indexOf('}}', nextIndex);\n if (closeIndex === -1) {\n break;\n }\n\n var key = result.substring(nextIndex, closeIndex);\n dict['{{' + key + '}}'] = _larouxHelpersJs2['default'].getElement(model, key, '');\n lastIndex = closeIndex + 2;\n }\n\n return _larouxHelpersJs2['default'].replaceAll(result, dict);\n }\n },\n\n hogan: {\n compile: function compile(template, options) {\n return Hogan.compile(template, options);\n },\n\n render: function render(compiled, model) {\n return compiled.render(model);\n }\n },\n\n mustache: {\n compile: function compile(template, options) {\n return Mustache.compile(template, options);\n },\n\n render: function render(compiled, model) {\n return compiled(model);\n }\n },\n\n handlebars: {\n compile: function compile(template, options) {\n return Handlebars.compile(template, options);\n },\n\n render: function render(compiled, model) {\n return compiled(model);\n }\n },\n\n lodash: {\n compile: function compile(template, options) {\n /*jslint nomen: true */\n return _.compile(template, null, options);\n },\n\n render: function render(compiled, model) {\n return compiled(model);\n }\n },\n\n underscore: {\n compile: function compile(template, options) {\n /*jslint nomen: true */\n return _.compile(template, null, options);\n },\n\n render: function render(compiled, model) {\n return compiled(model);\n }\n }\n },\n engine: 'plain',\n\n apply: function apply(element, model, options) {\n var content = undefined,\n engine = templates.engines[templates.engine];\n\n if (element.nodeType === 1 || element.nodeType === 3 || element.nodeType === 11) {\n content = element.textContent;\n } else {\n content = element.nodeValue;\n }\n\n var compiled = engine.compile(content, options);\n return engine.render(compiled, model);\n }\n\n /*\n insert: function (element, model, target, position, options) {\n let output = templates.apply(element, model, options);\n dom.insert(target, position || 'beforeend', output);\n },\n replace: function (element, model, target, options) {\n let output = templates.apply(element, model, options);\n dom.replace(target, output);\n }\n */\n };\n\n return templates;\n})();\n\nmodule.exports = exports['default'];\n},{\"./laroux.helpers.js\":5}],9:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _larouxHelpersJs = require('./laroux.helpers.js');\n\nvar _larouxHelpersJs2 = _interopRequireDefault(_larouxHelpersJs);\n\nexports['default'] = (function () {\n 'use strict';\n\n var timers = {\n data: [],\n\n set: function set(timer) {\n timer.next = Date.now() + timer.timeout;\n timers.data.push(timer);\n },\n\n remove: function remove(id) {\n var targetKey = null;\n\n for (var item in timers.data) {\n if (!timers.data.hasOwnProperty(item)) {\n continue;\n }\n\n var currentItem = timers.data[item];\n\n if (currentItem.id !== undefined && currentItem.id == id) {\n targetKey = item;\n break;\n }\n }\n\n if (targetKey !== null) {\n timers.data.splice(targetKey, 1);\n return true;\n }\n\n return false;\n },\n\n ontick: function ontick() {\n var now = Date.now(),\n removeKeys = [];\n\n for (var item in timers.data) {\n if (!timers.data.hasOwnProperty(item)) {\n continue;\n }\n\n var currentItem = timers.data[item];\n\n if (currentItem.next <= now) {\n var result = currentItem.ontick(currentItem.state);\n\n if (result !== false && currentItem.reset) {\n currentItem.next = now + currentItem.timeout;\n } else {\n removeKeys = _larouxHelpersJs2['default'].prependArray(removeKeys, item);\n }\n }\n }\n\n for (var item2 in removeKeys) {\n if (!removeKeys.hasOwnProperty(item2)) {\n continue;\n }\n\n timers.data.splice(removeKeys[item2], 1);\n }\n }\n };\n\n return timers;\n})();\n\nmodule.exports = exports['default'];\n},{\"./laroux.helpers.js\":5}],10:[function(require,module,exports){\n/*jslint node: true */\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar _larouxHelpersJs = require('./laroux.helpers.js');\n\nvar _larouxHelpersJs2 = _interopRequireDefault(_larouxHelpersJs);\n\nvar staticKeys = ['_callbacks', '_onupdate'];\n\nvar Observable = (function () {\n function Observable(data) {\n _classCallCheck(this, Observable);\n\n var self = this;\n\n this._callbacks = [];\n this._onupdate = function (changes) {\n _larouxHelpersJs2['default'].callAll(self._callbacks, self, [changes]);\n };\n\n Object.observe(this, this._onupdate);\n\n if (data) {\n this.setRange(data);\n }\n }\n\n _createClass(Observable, [{\n key: 'set',\n value: function set(key, value) {\n if (staticKeys.indexOf(key) === -1) {\n this[key] = value;\n }\n }\n }, {\n key: 'setRange',\n value: function setRange(values) {\n for (var valueKey in values) {\n this.set(valueKey, values[valueKey]);\n }\n }\n }, {\n key: 'get',\n value: function get(key, defaultValue) {\n if (key in this && staticKeys.indexOf(key) === -1) {\n return this[key];\n }\n\n return defaultValue || null;\n }\n }, {\n key: 'getRange',\n value: function getRange(keys) {\n var values = {};\n\n for (var item in keys) {\n values[keys[item]] = this[keys[item]];\n }\n\n return values;\n }\n }, {\n key: 'keys',\n value: function keys() {\n var keys = [];\n\n for (var item in this) {\n if (staticKeys.indexOf(item) === -1) {\n keys.push(item);\n }\n }\n\n return keys;\n }\n }, {\n key: 'length',\n value: function length() {\n return this.keys().length;\n }\n }, {\n key: 'exists',\n value: function exists(key) {\n return key in this;\n }\n }, {\n key: 'remove',\n value: function remove(key) {\n if (staticKeys.indexOf(key) === -1) {\n delete this[key];\n }\n }\n }, {\n key: 'clear',\n value: function clear() {\n for (var item in this) {\n if (!this.hasOwnProperty(item) || staticKeys.indexOf(item) !== -1) {\n continue;\n }\n\n delete this[item];\n }\n }\n }, {\n key: 'observe',\n value: function observe(obj) {\n Object.observe(obj, this._onupdate);\n }\n }, {\n key: 'unobserve',\n value: function unobserve(obj) {\n Object.unobserve(obj);\n }\n }, {\n key: 'on',\n value: function on(callback) {\n this._callbacks.push(callback);\n }\n }, {\n key: 'off',\n value: function off(callback) {\n _larouxHelpersJs2['default'].removeFromArray(this._callbacks, callback);\n }\n }]);\n\n return Observable;\n})();\n\nexports['default'] = (function () {\n var types = {\n observable: Observable\n };\n\n return types;\n})();\n\nmodule.exports = exports['default'];\n},{\"./laroux.helpers.js\":5}],11:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _larouxHelpersJs = require('./laroux.helpers.js');\n\nvar _larouxHelpersJs2 = _interopRequireDefault(_larouxHelpersJs);\n\nexports['default'] = (function () {\n 'use strict';\n\n var vars = {\n storages: {\n cookie: {\n defaultPath: '/',\n\n get: function get(name, defaultValue) {\n var re = new RegExp(encodeURIComponent(name) + '=[^;]+', 'i'),\n match = document.cookie.match(re);\n\n if (!match) {\n return defaultValue || null;\n }\n\n return decodeURIComponent(match[0].split('=')[1]);\n },\n\n set: function set(name, value, expires, path) {\n var expireValue = '';\n if (expires) {\n expireValue = '; expires=' + expires.toGMTString();\n }\n\n document.cookie = encodeURIComponent(name) + '=' + encodeURIComponent(value) + expireValue + '; path=' + (path || vars.storages.cookie.defaultPath);\n },\n\n remove: function remove(name, path) {\n document.cookie = encodeURIComponent(name) + '=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=' + (path || vars.storages.cookie.defaultPath);\n }\n },\n\n local: {\n get: function get(name, defaultValue) {\n if (!(name in localStorage)) {\n return defaultValue || null;\n }\n\n return JSON.parse(localStorage[name]);\n },\n\n set: function set(name, value) {\n localStorage[name] = JSON.stringify(value);\n },\n\n remove: function remove(name) {\n delete localStorage[name];\n }\n },\n\n session: {\n get: function get(name, defaultValue) {\n if (!(name in sessionStorage)) {\n return defaultValue || null;\n }\n\n return JSON.parse(sessionStorage[name]);\n },\n\n set: function set(name, value) {\n sessionStorage[name] = JSON.stringify(value);\n },\n\n remove: function remove(name) {\n delete sessionStorage[name];\n }\n }\n },\n\n get: function get(storage) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return vars.storages[storage].get.apply(this, args);\n },\n\n set: function set(storage) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n return vars.storages[storage].set.apply(this, args);\n },\n\n remove: function remove(storage) {\n for (var _len3 = arguments.length, args = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n\n return vars.storages[storage].remove.apply(this, args);\n }\n };\n\n return vars;\n})();\n\nmodule.exports = exports['default'];\n},{\"./laroux.helpers.js\":5}],12:[function(require,module,exports){\n/*jslint node: true */\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar _larouxDeferredJs = require('./laroux.deferred.js');\n\nvar _larouxDeferredJs2 = _interopRequireDefault(_larouxDeferredJs);\n\nvar _larouxHelpersJs = require('./laroux.helpers.js');\n\nvar _larouxHelpersJs2 = _interopRequireDefault(_larouxHelpersJs);\n\nvar When = (function () {\n function When() {\n _classCallCheck(this, When);\n\n var self = this;\n\n this.queues = [];\n this.remaining = -1;\n\n this.deferredCompleted = function () {\n self.remaining--;\n self.check();\n };\n\n if (arguments.length > 0) {\n this.then.apply(this, arguments);\n }\n }\n\n _createClass(When, [{\n key: 'then',\n value: function then() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n this.queues.push(args);\n this.check();\n\n return this;\n }\n }, {\n key: 'check',\n value: function check() {\n while (this.remaining <= 0) {\n if (this.remaining !== -1) {\n this.queues.shift();\n }\n\n if (this.queues.length === 0) {\n this.remaining = -1;\n break;\n }\n\n var queue = this.queues[0];\n // console.log('queue: ', queue);\n\n this.remaining = 0;\n for (var i = 0, _length = queue.length; i < _length; i++) {\n if (queue[i].constructor === Function) {\n queue[i] = _larouxDeferredJs2['default'].async(queue[i]);\n }\n\n if (queue[i] instanceof _larouxDeferredJs2['default'] && !queue[i].is('completed')) {\n this.remaining++;\n queue[i].completed(this.deferredCompleted);\n }\n }\n }\n }\n }]);\n\n return When;\n})();\n\nexports['default'] = When;\nmodule.exports = exports['default'];\n},{\"./laroux.deferred.js\":3,\"./laroux.helpers.js\":5}],13:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _larouxCssJs = require('./laroux.css.js');\n\nvar _larouxCssJs2 = _interopRequireDefault(_larouxCssJs);\n\nvar _larouxDeferredJs = require('../laroux.deferred.js');\n\nvar _larouxDeferredJs2 = _interopRequireDefault(_larouxDeferredJs);\n\nvar _larouxHelpersJs = require('../laroux.helpers.js');\n\nvar _larouxHelpersJs2 = _interopRequireDefault(_larouxHelpersJs);\n\nexports['default'] = (function () {\n 'use strict';\n\n var anim = {\n data: [],\n\n fx: {\n interpolate: function interpolate(source, target, shift) {\n return source + (target - source) * shift;\n },\n\n easing: function easing(pos) {\n return -Math.cos(pos * Math.PI) / 2 + 0.5;\n }\n },\n\n // {object, property, from, to, time, unit, reset}\n set: function set(newanim) {\n newanim.deferred = new _larouxDeferredJs2['default']();\n\n newanim.startTime = undefined;\n\n if (newanim.unit === null || newanim.unit === undefined) {\n newanim.unit = '';\n }\n\n if (newanim.from === null || newanim.from === undefined) {\n if (newanim.object === document.body && newanim.property === 'scrollTop') {\n newanim.from = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop;\n } else {\n newanim.from = newanim.object[newanim.property];\n }\n }\n\n if (newanim.from.constructor === String) {\n newanim.from = Number(newanim.from);\n }\n\n // if (newanim.id === undefined) {\n // newanim.id = helpers.getUniqueId();\n // }\n\n anim.data.push(newanim);\n if (anim.data.length === 1) {\n requestAnimationFrame(anim.onframe);\n }\n\n return newanim.deferred;\n },\n\n setCss: function setCss(newanim) {\n if (newanim.from === null || newanim.from === undefined) {\n newanim.from = _larouxCssJs2['default'].getProperty(newanim.object, newanim.property);\n }\n\n newanim.object = newanim.object.style;\n newanim.property = _larouxHelpersJs2['default'].camelCase(newanim.property);\n\n return anim.set(newanim);\n },\n\n remove: function remove(id) {\n var targetKey = null;\n\n for (var item in anim.data) {\n if (!anim.data.hasOwnProperty(item)) {\n continue;\n }\n\n var currentItem = anim.data[item];\n\n if (currentItem.id !== undefined && currentItem.id == id) {\n targetKey = item;\n break;\n }\n }\n\n if (targetKey !== null) {\n var deferred = anim.data[targetKey].deferred;\n\n deferred.reject('stop');\n\n anim.data.splice(targetKey, 1);\n return true;\n }\n\n return false;\n },\n\n onframe: function onframe(timestamp) {\n var removeKeys = [];\n\n for (var item in anim.data) {\n if (!anim.data.hasOwnProperty(item)) {\n continue;\n }\n\n var currentItem = anim.data[item];\n if (currentItem.startTime === undefined) {\n currentItem.startTime = timestamp;\n }\n\n anim.step(currentItem, timestamp);\n\n if (timestamp > currentItem.startTime + currentItem.time) {\n if (currentItem.reset === true) {\n currentItem.startTime = timestamp;\n if (currentItem.object === document.body && currentItem.property === 'scrollTop') {\n scrollTo(0, currentItem.from);\n // setTimeout(function () { scrollTo(0, currentItem.from); }, 1);\n } else {\n currentItem.object[currentItem.property] = currentItem.from;\n }\n } else {\n removeKeys = _larouxHelpersJs2['default'].prependArray(removeKeys, item);\n currentItem.deferred.resolve();\n }\n }\n }\n\n for (var item2 in removeKeys) {\n if (!removeKeys.hasOwnProperty(item2)) {\n continue;\n }\n\n anim.data.splice(removeKeys[item2], 1);\n }\n\n if (anim.data.length > 0) {\n requestAnimationFrame(anim.onframe);\n }\n },\n\n step: function step(newanim, timestamp) {\n var finishT = newanim.startTime + newanim.time,\n shift = timestamp > finishT ? 1 : (timestamp - newanim.startTime) / newanim.time;\n\n var value = anim.fx.interpolate(newanim.from, newanim.to, anim.fx.easing(shift)) + newanim.unit;\n\n if (newanim.object === document.body && newanim.property === 'scrollTop') {\n scrollTo(0, value);\n // setTimeout(function () { scrollTo(0, value); }, 1);\n } else {\n newanim.object[newanim.property] = value;\n }\n }\n };\n\n return anim;\n})();\n\nmodule.exports = exports['default'];\n},{\"../laroux.deferred.js\":3,\"../laroux.helpers.js\":5,\"./laroux.css.js\":14}],14:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _larouxHelpersJs = require('../laroux.helpers.js');\n\nvar _larouxHelpersJs2 = _interopRequireDefault(_larouxHelpersJs);\n\nexports['default'] = (function () {\n 'use strict';\n\n var css = {\n // class features\n hasClass: function hasClass(element, className) {\n return element.classList.contains(className);\n },\n\n addClass: function addClass(element, className) {\n var elements = _larouxHelpersJs2['default'].getAsArray(element);\n\n for (var i = 0, _length = elements.length; i < _length; i++) {\n elements[i].classList.add(className);\n }\n },\n\n removeClass: function removeClass(element, className) {\n var elements = _larouxHelpersJs2['default'].getAsArray(element);\n\n for (var i = 0, _length2 = elements.length; i < _length2; i++) {\n elements[i].classList.remove(className);\n }\n },\n\n toggleClass: function toggleClass(element, className) {\n var elements = _larouxHelpersJs2['default'].getAsArray(element);\n\n for (var i = 0, _length3 = elements.length; i < _length3; i++) {\n if (elements[i].classList.contains(className)) {\n elements[i].classList.remove(className);\n } else {\n elements[i].classList.add(className);\n }\n }\n },\n\n cycleClass: function cycleClass(elements, className) {\n for (var i = 0, _length4 = elements.length; i < _length4; i++) {\n if (elements[i].classList.contains(className)) {\n elements[i].classList.remove(className);\n elements[(i + 1) % _length4].classList.add(className);\n return;\n }\n }\n },\n\n // style features\n getProperty: function getProperty(element, styleName) {\n var style = getComputedStyle(element);\n\n styleName = _larouxHelpersJs2['default'].antiCamelCase(styleName);\n\n return style.getPropertyValue(styleName);\n },\n\n setProperty: function setProperty(element, properties, value) {\n var elements = _larouxHelpersJs2['default'].getAsArray(element);\n\n if (typeof properties === 'string') {\n var oldProperties = properties;\n properties = {};\n properties[oldProperties] = value;\n }\n\n for (var styleName in properties) {\n if (!properties.hasOwnProperty(styleName)) {\n continue;\n }\n\n var newStyleName = _larouxHelpersJs2['default'].camelCase(styleName);\n\n for (var i = 0, _length5 = elements.length; i < _length5; i++) {\n elements[i].style[newStyleName] = properties[styleName];\n }\n }\n },\n\n // transition features\n defaultTransition: '2s ease',\n\n setTransitionSingle: function setTransitionSingle(element, transition) {\n var transitions = _larouxHelpersJs2['default'].getAsArray(transition),\n style = getComputedStyle(element),\n currentTransitions = style.getPropertyValue('transition') || style.getPropertyValue('-webkit-transition') || style.getPropertyValue('-ms-transition') || '',\n currentTransitionsArray = undefined;\n\n if (currentTransitions.length > 0) {\n currentTransitionsArray = currentTransitions.split(',');\n } else {\n currentTransitionsArray = [];\n }\n\n for (var item in transitions) {\n if (!transitions.hasOwnProperty(item)) {\n continue;\n }\n\n var styleName = undefined,\n transitionProperties = undefined,\n pos = transitions[item].indexOf(' ');\n\n if (pos !== -1) {\n styleName = transitions[item].substring(0, pos);\n transitionProperties = transitions[item].substring(pos + 1);\n } else {\n styleName = transitions[item];\n transitionProperties = css.defaultTransition;\n }\n\n var found = false;\n for (var j = 0; j < currentTransitionsArray.length; j++) {\n if (currentTransitionsArray[j].trim().localeCompare(styleName) === 0) {\n currentTransitionsArray[j] = styleName + ' ' + transitionProperties;\n found = true;\n break;\n }\n }\n\n if (!found) {\n currentTransitionsArray.push(styleName + ' ' + transitionProperties);\n }\n }\n\n var value = currentTransitionsArray.join(', ');\n\n element.style.transition = value;\n element.style.webkitTransition = value;\n element.style.msTransition = value;\n },\n\n setTransition: function setTransition(element, transition) {\n var elements = _larouxHelpersJs2['default'].getAsArray(element);\n\n for (var i = 0, _length6 = elements.length; i < _length6; i++) {\n css.setTransitionSingle(elements[i], transition);\n }\n },\n\n show: function show(element, transitionProperties) {\n if (transitionProperties !== undefined) {\n css.setTransition(element, 'opacity ' + transitionProperties);\n } else {\n css.setTransition(element, 'opacity');\n }\n\n css.setProperty(element, { opacity: 1 });\n },\n\n hide: function hide(element, transitionProperties) {\n if (transitionProperties !== undefined) {\n css.setTransition(element, 'opacity ' + transitionProperties);\n } else {\n css.setTransition(element, 'opacity');\n }\n\n css.setProperty(element, { opacity: 0 });\n },\n\n // measurement features\n // height of element without padding, margin and border\n height: function height(element) {\n var style = getComputedStyle(element),\n height = style.getPropertyCSSValue('height');\n\n return height.getFloatValue(height.primitiveType);\n },\n\n // height of element with padding but without margin and border\n innerHeight: function innerHeight(element) {\n return element.clientHeight;\n },\n\n // height of element with padding and border but margin optional\n outerHeight: function outerHeight(element, includeMargin) {\n if (includeMargin || false) {\n return element.offsetHeight;\n }\n\n var style = getComputedStyle(element),\n marginTop = style.getPropertyCSSValue('margin-top'),\n marginBottom = style.getPropertyCSSValue('margin-bottom'),\n margins = marginTop.getFloatValue(marginTop.primitiveType) + marginBottom.getFloatValue(marginBottom.primitiveType);\n\n return Math.ceil(element.offsetHeight + margins);\n },\n\n // width of element without padding, margin and border\n width: function width(element) {\n var style = getComputedStyle(element),\n height = style.getPropertyCSSValue('width');\n\n return height.getFloatValue(height.primitiveType);\n },\n\n // width of element with padding but without margin and border\n innerWidth: function innerWidth(element) {\n return element.clientWidth;\n },\n\n // width of element with padding and border but margin optional\n outerWidth: function outerWidth(element, includeMargin) {\n if (includeMargin || false) {\n return element.offsetWidth;\n }\n\n var style = getComputedStyle(element),\n marginLeft = style.getPropertyCSSValue('margin-left'),\n marginRight = style.getPropertyCSSValue('margin-right'),\n margins = marginLeft.getFloatValue(marginLeft.primitiveType) + marginRight.getFloatValue(marginRight.primitiveType);\n\n return Math.ceil(element.offsetWidth + margins);\n },\n\n top: function top(element) {\n return element.getBoundingClientRect().top + (document.documentElement && document.documentElement.scrollTop || document.body.scrollTop);\n },\n\n left: function left(element) {\n return element.getBoundingClientRect().left + (document.documentElement && document.documentElement.scrollLeft || document.body.scrollLeft);\n },\n\n aboveTheTop: function aboveTheTop(element) {\n return element.getBoundingClientRect().bottom <= 0;\n },\n\n belowTheFold: function belowTheFold(element) {\n return element.getBoundingClientRect().top > innerHeight;\n },\n\n leftOfScreen: function leftOfScreen(element) {\n return element.getBoundingClientRect().right <= 0;\n },\n\n rightOfScreen: function rightOfScreen(element) {\n return element.getBoundingClientRect().left > innerWidth;\n },\n\n inViewport: function inViewport(element) {\n var rect = element.getBoundingClientRect();\n\n return !(rect.bottom <= 0 || rect.top > innerHeight || rect.right <= 0 || rect.left > innerWidth);\n }\n };\n\n return css;\n})();\n\nmodule.exports = exports['default'];\n},{\"../laroux.helpers.js\":5}],15:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _larouxHelpersJs = require('../laroux.helpers.js');\n\nvar _larouxHelpersJs2 = _interopRequireDefault(_larouxHelpersJs);\n\nexports['default'] = (function () {\n 'use strict';\n\n var dom = {\n docprop: function docprop(propName) {\n return document.documentElement.classList.contains(propName);\n },\n\n select: function select(selector, parent) {\n return _larouxHelpersJs2['default'].toArray((parent || document).querySelectorAll(selector));\n },\n\n selectByClass: function selectByClass(selector, parent) {\n return _larouxHelpersJs2['default'].toArray((parent || document).getElementsByClassName(selector));\n },\n\n selectByTag: function selectByTag(selector, parent) {\n return _larouxHelpersJs2['default'].toArray((parent || document).getElementsByTagName(selector));\n },\n\n selectById: function selectById(selector, parent) {\n return (parent || document).getElementById(selector);\n },\n\n selectSingle: function selectSingle(selector, parent) {\n return (parent || document).querySelector(selector);\n },\n\n attr: function attr(element, attributes, value) {\n if (value === undefined && attributes.constructor !== Object) {\n return element.getAttribute(attributes);\n }\n\n var elements = _larouxHelpersJs2['default'].getAsArray(element);\n if (typeof attributes === 'string') {\n var oldAttributes = attributes;\n attributes = {};\n attributes[oldAttributes] = value;\n }\n\n for (var attributeName in attributes) {\n if (!attributes.hasOwnProperty(attributeName)) {\n continue;\n }\n\n for (var i = 0, _length = elements.length; i < _length; i++) {\n if (attributes[attributeName] === null) {\n element.removeAttribute(attributeName);\n } else {\n element.setAttribute(attributeName, attributes[attributeName]);\n }\n }\n }\n },\n\n data: function data(element, datanames, value) {\n if (value === undefined && datanames.constructor !== Object) {\n return element.getAttribute('data-' + datanames);\n }\n\n var elements = _larouxHelpersJs2['default'].getAsArray(element);\n if (typeof datanames === 'string') {\n var oldDatanames = datanames;\n datanames = {};\n datanames[oldDatanames] = value;\n }\n\n for (var dataName in datanames) {\n if (!datanames.hasOwnProperty(dataName)) {\n continue;\n }\n\n for (var i = 0, _length2 = elements.length; i < _length2; i++) {\n if (datanames[dataName] === null) {\n element.removeAttribute('data-' + dataName);\n } else {\n element.setAttribute('data-' + dataName, datanames[dataName]);\n }\n }\n }\n },\n\n eventHistory: [],\n setEvent: function setEvent(element, eventname, callback) {\n var elements = _larouxHelpersJs2['default'].getAsArray(element);\n\n for (var i = 0, _length3 = elements.length; i < _length3; i++) {\n dom.setEventSingle(elements[i], eventname, callback);\n }\n },\n\n setEventSingle: function setEventSingle(element, eventname, callback) {\n var callbackWrapper = function callbackWrapper(e) {\n if (callback(e, element) === false) {\n if (e.preventDefault) {\n e.preventDefault();\n } else {\n event.returnValue = false;\n }\n }\n };\n\n dom.eventHistory.push({ element: element, eventname: eventname, callback: callback, callbackWrapper: callbackWrapper });\n element.addEventListener(eventname, callbackWrapper, false);\n },\n\n unsetEvent: function unsetEvent(element, eventname, callback) {\n var elements = _larouxHelpersJs2['default'].getAsArray(element);\n\n for (var i1 = 0, length1 = elements.length; i1 < length1; i1++) {\n for (var i2 = 0, length2 = dom.eventHistory.length; i2 < length2; i2++) {\n var item = dom.eventHistory[i2];\n\n if (item === undefined) {\n continue;\n }\n\n if (item.element !== elements[i1]) {\n continue;\n }\n\n if (eventname !== undefined && item.eventname !== eventname) {\n continue;\n }\n\n if (callback !== undefined && item.callback !== callback) {\n continue;\n }\n\n item.element.removeEventListener(item.eventname, item.callbackWrapper, false);\n delete dom.eventHistory[i2];\n }\n }\n },\n\n dispatchEvent: function dispatchEvent(element, eventname, data) {\n var customEvent = document.createEvent('Event');\n for (var item in data) {\n if (!data.hasOwnProperty(item)) {\n continue;\n }\n\n customEvent[item] = data[item];\n }\n\n customEvent.initEvent(eventname, true, true);\n element.dispatchEvent(customEvent);\n },\n\n create: function create(html) {\n var frag = document.createDocumentFragment(),\n temp = document.createElement('DIV');\n\n temp.insertAdjacentHTML('beforeend', html);\n while (temp.firstChild) {\n frag.appendChild(temp.firstChild);\n }\n\n // nulling out the reference, there is no obvious dispose method\n temp = null;\n\n return frag;\n },\n\n createElement: function createElement(element, attributes, children) {\n var elem = document.createElement(element);\n\n if (attributes !== undefined && attributes.constructor === Object) {\n for (var item in attributes) {\n if (!attributes.hasOwnProperty(item)) {\n continue;\n }\n\n elem.setAttribute(item, attributes[item]);\n }\n }\n\n if (children !== undefined) {\n if (children.constructor === Object) {\n for (var item2 in children) {\n if (!children.hasOwnProperty(item2)) {\n continue;\n }\n\n elem.setAttribute(item2, children[item2]);\n }\n } else if ( /* typeof children === 'string' && */children.length > 0) {\n dom.append(elem, children);\n }\n }\n\n return elem;\n },\n\n createOption: function createOption(element, key, value, isDefault) {\n /* old behaviour, does not support optgroups as parents.\n let count = element.options.length;\n element.options[count] = new Option(value, key);\n if (isDefault === true) {\n element.options.selectedIndex = count - 1;\n }\n */\n\n var option = document.createElement('OPTION');\n option.setAttribute('value', key);\n if (isDefault === true) {\n option.setAttribute('checked', 'checked');\n }\n\n dom.append(option, value);\n element.appendChild(option);\n },\n\n selectByValue: function selectByValue(element, value) {\n for (var i = 0, _length4 = element.options.length; i < _length4; i++) {\n if (element.options[i].getAttribute('value') == value) {\n element.selectedIndex = i;\n break;\n }\n }\n }, /*,\n // TODO: it's redundant for now\n loadImage: function () {\n let images = [];\n for (let i = 0, length = arguments.length; i < length; i++) {\n let image = document.createElement('IMG');\n image.setAttribute('src', arguments[i]);\n images.push(image);\n }\n return images;\n },\n loadAsyncScript: function (path, triggerName, async) {\n let elem = document.createElement('script');\n elem.type = 'text/javascript';\n elem.async = (async !== undefined) ? async : true;\n elem.src = path;\n let loaded = false;\n elem.onload = elem.onreadystatechange = function () {\n if ((elem.readyState && elem.readyState !== 'complete' && elem.readyState !== 'loaded') || loaded) {\n return false;\n }\n elem.onload = elem.onreadystatechange = null;\n loaded = true;\n if (triggerName) {\n if (typeof triggerName === 'function') {\n triggerName();\n } else {\n triggers.ontrigger(triggerName);\n }\n }\n };\n let head = document.getElementsByTagName('head')[0];\n head.appendChild(elem);\n },\n loadAsyncStyle: function (path, triggerName, async) {\n let elem = document.createElement('LINK');\n elem.type = 'text/css';\n elem.async = (async !== undefined) ? async : true;\n elem.href = path;\n elem.rel = 'stylesheet';\n let loaded = false;\n elem.onload = elem.onreadystatechange = function () {\n if ((elem.readyState && elem.readyState !== 'complete' && elem.readyState !== 'loaded') || loaded) {\n return false;\n }\n elem.onload = elem.onreadystatechange = null;\n loaded = true;\n if (triggerName) {\n if (typeof triggerName === 'function') {\n triggerName();\n } else {\n triggers.ontrigger(triggerName);\n }\n }\n };\n let head = document.getElementsByTagName('head')[0];\n head.appendChild(elem);\n },*/\n\n clear: function clear(element) {\n while (element.hasChildNodes()) {\n element.removeChild(element.firstChild);\n }\n },\n\n insert: function insert(element, position, content) {\n element.insertAdjacentHTML(position, content);\n },\n\n prepend: function prepend(element, content) {\n element.insertAdjacentHTML('afterbegin', content);\n },\n\n append: function append(element, content) {\n element.insertAdjacentHTML('beforeend', content);\n },\n\n replace: function replace(element, content) {\n dom.clear(element);\n element.insertAdjacentHTML('afterbegin', content);\n },\n\n replaceText: function replaceText(element, content) {\n // dom.clear(element);\n element.textContent = content;\n },\n\n remove: function remove(element) {\n element.remove();\n },\n\n cloneReturn: 0,\n cloneAppend: 1,\n cloneInsertAfter: 2,\n cloneInsertBefore: 3,\n\n clone: function clone(element, type, container, target) {\n var newElement = element.cloneNode(true);\n\n if (container === undefined) {\n container = element.parentNode;\n }\n if (target === undefined) {\n target = element;\n }\n\n if (type !== undefined && type != dom.cloneReturn) {\n if (type == dom.cloneAppend) {\n container.appendChild(newElement);\n } else if (type == dom.cloneInsertAfter) {\n container.insertBefore(newElement, target.nextSibling);\n } else {\n // type == dom.cloneInsertBefore\n container.insertBefore(newElement, target);\n }\n }\n\n return newElement;\n } /*,\n // TODO: it's redundant for now\n applyOperations: function (element, operations) {\n for (let operation in operations) {\n if (!operations.hasOwnProperty(operation)) {\n continue;\n }\n for (let binding in operations[operation]) {\n if (!operations[operation].hasOwnProperty(binding)) {\n continue;\n }\n let value = operations[operation][binding];\n switch (operation) {\n case 'setprop':\n if (binding.substring(0, 1) === '_') {\n element.setAttribute(binding.substring(1), value);\n continue;\n }\n if (binding === 'content') {\n dom.replace(element, value);\n continue;\n }\n break;\n case 'addprop':\n if (binding.substring(0, 1) === '_') {\n element.setAttribute(binding.substring(1), element.getAttribute(binding.substring(1)) + value);\n continue;\n }\n if (binding === 'content') {\n dom.append(element, value);\n continue;\n }\n break;\n case 'removeprop':\n if (value.substring(0, 1) === '_') {\n element.removeAttribute(value.substring(1));\n continue;\n }\n if (value === 'content') {\n dom.clear(element);\n continue;\n }\n break;\n case 'addclass':\n css.addClass(element, value);\n break;\n case 'removeclass':\n css.removeClass(element, value);\n break;\n case 'addstyle':\n css.setProperty(element, binding, value);\n break;\n case 'removestyle':\n css.setProperty(element, value, 'inherit !important');\n break;\n case 'repeat':\n break;\n default:\n console.log(operation);\n }\n }\n }\n }*/\n };\n\n // a fix for Internet Explorer\n if (typeof Element !== 'undefined') {\n if (Element.prototype.remove === undefined) {\n Element.prototype.remove = function () {\n if (this.parentElement !== null) {\n this.parentElement.removeChild(this);\n }\n };\n }\n }\n\n return dom;\n})();\n\nmodule.exports = exports['default'];\n},{\"../laroux.helpers.js\":5}],16:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _larouxAjaxJs = require('../laroux.ajax.js');\n\nvar _larouxAjaxJs2 = _interopRequireDefault(_larouxAjaxJs);\n\nvar _larouxDomJs = require('./laroux.dom.js');\n\nvar _larouxDomJs2 = _interopRequireDefault(_larouxDomJs);\n\nexports['default'] = (function () {\n 'use strict';\n\n var forms = {\n ajaxForm: function ajaxForm(formobj, callback, callbackBegin) {\n _larouxDomJs2['default'].setEvent(formobj, 'submit', function () {\n if (callbackBegin !== undefined) {\n callbackBegin();\n }\n\n _larouxAjaxJs2['default'].post(formobj.getAttribute('action'), forms.serializeFormData(formobj), callback);\n\n return false;\n });\n },\n\n isFormField: function isFormField(element) {\n if (element.tagName === 'SELECT') {\n return true;\n }\n\n if (element.tagName === 'INPUT') {\n var type = element.getAttribute('type').toUpperCase();\n\n if (type === 'FILE' || type === 'CHECKBOX' || type === 'RADIO' || type === 'TEXT' || type === 'PASSWORD' || type === 'HIDDEN') {\n return true;\n }\n\n return false;\n }\n\n if (element.tagName === 'TEXTAREA') {\n return true;\n }\n\n return false;\n },\n\n getFormFieldValue: function getFormFieldValue(element) {\n if (element.disabled === true) {\n return null;\n }\n\n if (element.tagName === 'SELECT') {\n return element.options[element.selectedIndex].value;\n }\n\n if (element.tagName === 'INPUT') {\n var type = element.getAttribute('type').toUpperCase();\n\n if (type === 'FILE') {\n return element.files[0];\n }\n\n if (type === 'CHECKBOX' || type === 'RADIO') {\n if (element.checked) {\n return element.value;\n }\n\n return null;\n }\n\n if (type === 'TEXT' || type === 'PASSWORD' || type === 'HIDDEN') {\n return element.value;\n }\n\n return null;\n }\n\n if (element.tagName === 'TEXTAREA') {\n return element.value;\n }\n\n return null;\n },\n\n setFormFieldValue: function setFormFieldValue(element, value) {\n if (element.disabled === true) {\n return;\n }\n\n if (element.tagName === 'SELECT') {\n for (var option in element.options) {\n if (!element.options.hasOwnProperty(option)) {\n continue;\n }\n\n if (element.options[option].value == value) {\n element.selectedIndex = option;\n return;\n }\n }\n\n return;\n }\n\n if (element.tagName === 'INPUT') {\n var type = element.getAttribute('type').toUpperCase();\n\n if (type === 'FILE') {\n element.files[0] = value;\n return;\n }\n\n if (type === 'CHECKBOX' || type === 'RADIO') {\n if (value === true || value == element.value) {\n element.checked = true;\n }\n\n return;\n }\n\n if (type === 'TEXT' || type === 'PASSWORD' || type === 'HIDDEN') {\n element.value = value;\n return;\n }\n\n return;\n }\n\n if (element.tagName === 'TEXTAREA') {\n element.value = value;\n return;\n }\n },\n\n toggleFormEditing: function toggleFormEditing(formobj, value) {\n var selection = formobj.querySelectorAll('*[name]');\n\n if (value === undefined) {\n if (formobj.getAttribute('data-last-enabled') === null) {\n formobj.setAttribute('data-last-enabled', 'enabled');\n value = false;\n } else {\n formobj.removeAttribute('data-last-enabled');\n value = true;\n }\n }\n\n for (var selected = 0, _length = selection.length; selected < _length; selected++) {\n if (!forms.isFormField(selection[selected])) {\n continue;\n }\n\n var lastDisabled = selection[selected].getAttribute('data-last-disabled');\n if (!value) {\n if (lastDisabled === null) {\n if (selection[selected].getAttribute('disabled') !== null) {\n selection[selected].setAttribute('data-last-disabled', 'disabled');\n }\n }\n\n selection[selected].setAttribute('disabled', 'disabled');\n continue;\n }\n\n if (lastDisabled !== null) {\n selection[selected].removeAttribute('data-last-disabled');\n } else {\n selection[selected].removeAttribute('disabled');\n }\n }\n },\n\n serializeFormData: function serializeFormData(formobj) {\n var formdata = new FormData();\n var selection = formobj.querySelectorAll('*[name]');\n\n for (var selected = 0, _length2 = selection.length; selected < _length2; selected++) {\n var value = forms.getFormFieldValue(selection[selected]);\n\n if (value !== null) {\n formdata.append(selection[selected].getAttribute('name'), value);\n }\n }\n\n return formdata;\n },\n\n serialize: function serialize(formobj) {\n var values = {};\n var selection = formobj.querySelectorAll('*[name]');\n\n for (var selected = 0, _length3 = selection.length; selected < _length3; selected++) {\n var value = forms.getFormFieldValue(selection[selected]);\n\n if (value !== null) {\n values[selection[selected].getAttribute('name')] = value;\n }\n }\n\n return values;\n },\n\n deserialize: function deserialize(formobj, data) {\n var selection = formobj.querySelectorAll('*[name]');\n\n for (var selected = 0, _length4 = selection.length; selected < _length4; selected++) {\n forms.setFormFieldValue(selection[selected], data[selection[selected].getAttribute('name')]);\n }\n }\n };\n\n return forms;\n})();\n\nmodule.exports = exports['default'];\n},{\"../laroux.ajax.js\":1,\"./laroux.dom.js\":15}],17:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _larouxDomJs = require('./laroux.dom.js');\n\nvar _larouxDomJs2 = _interopRequireDefault(_larouxDomJs);\n\nvar _larouxFormsJs = require('./laroux.forms.js');\n\nvar _larouxFormsJs2 = _interopRequireDefault(_larouxFormsJs);\n\nexports['default'] = (function () {\n 'use strict';\n\n var keys = {\n keyName: function keyName(keycode) {\n keycode = keycode.toLowerCase();\n\n switch (keycode) {\n case 'backspace':\n return 8;\n\n case 'tab':\n return 9;\n\n case 'enter':\n case 'return':\n return 13;\n\n case 'esc':\n case 'escape':\n return 27;\n\n case 'space':\n return 32;\n\n case 'pgup':\n return 33;\n\n case 'pgdn':\n return 34;\n\n case 'end':\n return 35;\n\n case 'home':\n return 36;\n\n case 'left':\n return 37;\n\n case 'up':\n return 38;\n\n case 'right':\n return 39;\n\n case 'down':\n return 40;\n\n case 'insert':\n return 45;\n\n case 'delete':\n return 46;\n\n case 'f1':\n return 112;\n\n case 'f2':\n return 113;\n\n case 'f3':\n return 114;\n\n case 'f4':\n return 115;\n\n case 'f5':\n return 116;\n\n case 'f6':\n return 117;\n\n case 'f7':\n return 118;\n\n case 'f8':\n return 119;\n\n case 'f9':\n return 120;\n\n case 'f10':\n return 121;\n\n case 'f11':\n return 122;\n\n case 'f12':\n return 123;\n\n case ',':\n return 188;\n\n case '.':\n return 190;\n }\n\n return String.fromCharCode(keycode);\n },\n\n // {target, key, shift, ctrl, alt, disableInputs, callback}\n assign: function assign(options) {\n var wrapper = function wrapper(ev) {\n if (!ev) {\n ev = event;\n }\n\n var element = ev.target || ev.srcElement;\n if (element.nodeType === 3 || element.nodeType === 11) {\n // element.nodeType === 1 ||\n element = element.parentNode;\n }\n\n if (options.disableInputs && _larouxFormsJs2['default'].isFormField(element)) {\n return;\n }\n\n if (options.shift && !ev.shiftKey) {\n return;\n }\n\n if (options.ctrl && !ev.ctrlKey) {\n return;\n }\n\n if (options.alt && !ev.altKey) {\n return;\n }\n\n var key = keys.keyName(options.key);\n if (key !== (ev.keyCode || ev.which)) {\n return;\n }\n\n options.callback(ev);\n\n return false;\n };\n\n _larouxDomJs2['default'].setEvent(options.target || document, 'keydown', wrapper);\n }\n };\n\n return keys;\n})();\n\nmodule.exports = exports['default'];\n},{\"./laroux.dom.js\":15,\"./laroux.forms.js\":16}],18:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _larouxDomJs = require('./laroux.dom.js');\n\nvar _larouxDomJs2 = _interopRequireDefault(_larouxDomJs);\n\nvar _larouxHelpersJs = require('../laroux.helpers.js');\n\nvar _larouxHelpersJs2 = _interopRequireDefault(_larouxHelpersJs);\n\nexports['default'] = (function () {\n 'use strict';\n\n var mvc = {\n apps: {},\n pauseUpdate: false,\n\n init: function init(element, model) {\n if (element.constructor === String) {\n element = _larouxDomJs2['default'].selectById(element);\n }\n\n // if (model.constructor !== types.Observable) {\n // model = new types.Observable(model);\n // }\n\n var appKey = element.getAttribute('id');\n\n model.on(function (event) {\n if (!mvc.pauseUpdate) {\n mvc.update(appKey); // , [event.key]\n }\n });\n\n mvc.apps[appKey] = {\n element: element,\n model: model // ,\n // modelKeys: null,\n // boundElements: null,\n // eventElements: null\n };\n\n mvc.rebind(appKey);\n },\n\n rebind: function rebind(appKey) {\n var app = mvc.apps[appKey];\n /*jslint nomen: true */\n app.modelKeys = _larouxHelpersJs2['default'].getKeysRecursive(app.model); // FIXME: works only for $l.types.Observable\n app.boundElements = {};\n app.eventElements = [];\n\n mvc.scanElements(app, app.element);\n mvc.update(appKey);\n\n var callback = function callback(ev, elem) {\n var binding = mvc.bindStringParser(elem.getAttribute('lr-event'));\n // mvc.pauseUpdate = true;\n for (var item in binding) {\n if (item === null || !binding.hasOwnProperty(item)) {\n continue;\n }\n\n if (binding[item].charAt(0) === '\\'') {\n app.model[item] = binding[item].substring(1, binding[item].length - 1);\n } else if (binding[item].substring(0, 5) === 'attr.') {\n app.model[item] = elem.getAttribute(binding[item].substring(5));\n } else if (binding[item].substring(0, 5) === 'prop.') {\n app.model[item] = elem[binding[item].substring(5)];\n }\n }\n // mvc.pauseUpdate = false;\n };\n\n for (var i = 0, _length = app.eventElements.length; i < _length; i++) {\n _larouxDomJs2['default'].setEvent(app.eventElements[i].element, app.eventElements[i].binding[null], callback);\n }\n },\n\n scanElements: function scanElements(app, element) {\n for (var i = 0, atts = element.attributes, m = atts.length; i < m; i++) {\n if (atts[i].name === 'lr-bind') {\n var binding1 = mvc.bindStringParser(atts[i].value);\n\n for (var item in binding1) {\n if (!binding1.hasOwnProperty(item)) {\n continue;\n }\n\n if (app.boundElements[binding1[item]] === undefined) {\n app.boundElements[binding1[item]] = [];\n }\n\n app.boundElements[binding1[item]].push({\n element: element,\n target: item\n });\n }\n } else if (atts[i].name === 'lr-event') {\n var binding2 = mvc.bindStringParser(atts[i].value);\n\n app.eventElements.push({\n element: element,\n binding: binding2\n });\n }\n }\n\n for (var j = 0, chldrn = element.childNodes, n = chldrn.length; j < n; j++) {\n if (chldrn[j].nodeType === 1) {\n mvc.scanElements(app, chldrn[j]);\n }\n }\n },\n\n update: function update(appKey, keys) {\n var app = mvc.apps[appKey];\n\n if (typeof keys === 'undefined') {\n keys = app.modelKeys;\n }\n\n for (var i = 0, length1 = keys.length; i < length1; i++) {\n if (!(keys[i] in app.boundElements)) {\n continue;\n }\n\n var boundElement = app.boundElements[keys[i]],\n value = _larouxHelpersJs2['default'].getElement(app.model, keys[i]);\n\n if (value instanceof Function) {\n value = value.call(app.model);\n }\n\n for (var j = 0, length2 = boundElement.length; j < length2; j++) {\n if (boundElement[j].target.substring(0, 6) === 'style.') {\n boundElement[j].element.style[boundElement[j].target.substring(6)] = value;\n } else if (boundElement[j].target.substring(0, 5) === 'attr.') {\n // FIXME removeAttribute on null value?\n boundElement[j].element.setAttribute(boundElement[j].target.substring(5), value);\n } else if (boundElement[j].target.substring(0, 5) === 'prop.') {\n // FIXME removeAttribute on null value?\n boundElement[j].element[boundElement[j].target.substring(5)] = value;\n }\n }\n }\n },\n\n bindStringParser: function bindStringParser(text) {\n var lastBuffer = null,\n buffer = '',\n state = 0,\n result = {};\n\n for (var i = 0, _length2 = text.length; i < _length2; i++) {\n var curr = text.charAt(i);\n\n if (state === 0) {\n if (curr === ':') {\n state = 1;\n lastBuffer = buffer.trim();\n buffer = '';\n continue;\n }\n }\n\n if (curr === ',') {\n state = 0;\n result[lastBuffer] = buffer.trim();\n buffer = '';\n continue;\n }\n\n buffer += curr;\n }\n\n if (buffer.length > 0) {\n result[lastBuffer] = buffer.trim();\n }\n\n return result;\n }\n };\n\n return mvc;\n})();\n\nmodule.exports = exports['default'];\n},{\"../laroux.helpers.js\":5,\"./laroux.dom.js\":15}],19:[function(require,module,exports){\n(function (global){\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _larouxJs = require('../laroux.js');\n\nvar _larouxJs2 = _interopRequireDefault(_larouxJs);\n\nvar _larouxHelpersJs = require('../laroux.helpers.js');\n\nvar _larouxHelpersJs2 = _interopRequireDefault(_larouxHelpersJs);\n\nexports['default'] = (function () {\n 'use strict';\n\n // routes - partially taken from 'routie' project\n // can be found at: https://github.com/jgallen23/routie\n var routes = {\n map: {},\n attached: false,\n current: null,\n\n regexConverter: function regexConverter(path, sensitive, strict) {\n var keys = [],\n regexString = path.concat(strict ? '' : '/?').replace(/\\/\\(/g, '(?:/').replace(/\\+/g, '__plus__').replace(/(\\/)?(\\.)?:(\\w+)(?:(\\(.*?\\)))?(\\?)?/g, function (_, slash, format, key, capture, optional) {\n keys.push({ name: key, optional: !!optional });\n slash = slash || '';\n\n return '' + (optional ? '' : slash) + '(?:' + (optional ? slash : '') + (format || '') + (capture || (format && '([^/.]+?)' || '([^/]+?)')) + ')' + (optional || '');\n }).replace(/([\\/.])/g, '\\\\$1').replace(/__plus__/g, '(.+)').replace(/\\*/g, '(.*)');\n\n return {\n regex: new RegExp('^' + regexString + '$', sensitive ? '' : 'i'),\n keys: keys\n };\n },\n\n add: function add(path, callback) {\n routes.addNamed(null, path, callback);\n },\n\n addNamed: function addNamed(name, path, callback) {\n if (!(path in routes.map)) {\n var converted = routes.regexConverter(path);\n\n routes.map[path] = {\n name: name,\n callback: callback,\n params: {},\n keys: converted.keys,\n regex: converted.regex\n };\n } else {\n routes.map[path].callback = callback;\n }\n },\n\n get: function get(path) {\n for (var item in routes.map) {\n if (!routes.map.hasOwnProperty(item)) {\n continue;\n }\n\n var route = routes.map[item],\n match = route.regex.exec(path);\n\n if (!match) {\n continue;\n }\n\n var params = {};\n for (var i = 1, _length = match.length; i < _length; i++) {\n var key = route.keys[i - 1];\n\n if (key !== undefined) {\n params[key.name] = typeof match[i] == 'string' ? decodeURIComponent(match[i]) : match[i];\n }\n }\n\n return {\n route: item,\n resolved: path,\n params: params,\n callback: route.callback\n };\n }\n\n return null;\n },\n\n getNamed: function getNamed(name, params) {\n for (var item in routes.map) {\n if (!routes.map.hasOwnProperty(item)) {\n continue;\n }\n\n var route = routes.map[item],\n path = item;\n\n for (var i = 0, _length2 = route.keys.length; i < _length2; i++) {\n var key = route.keys[i];\n\n path = path.replace(':' + key.name, params[key.name] || '');\n }\n\n if (route.name == name) {\n return {\n route: item,\n resolved: path,\n params: params,\n callback: route.callback\n };\n }\n }\n\n return null;\n },\n\n link: function link(name, params) {\n var route = routes.getNamed(name, params);\n\n if (route === null) {\n return null;\n }\n\n return route.resolved;\n },\n\n exec: function exec(route) {\n var previous = routes.current,\n args = _larouxHelpersJs2['default'].map(route.params, function (value) {\n return value;\n });\n\n routes.current = route;\n args.push({\n previous: previous,\n current: routes.current\n });\n\n return route.callback.apply(global, args);\n },\n\n go: function go(path, silent) {\n var attached = routes.attached;\n\n if (silent && attached) {\n routes.detach();\n }\n\n setTimeout(function () {\n global.location.hash = path;\n\n if (silent && attached) {\n setTimeout(function () {\n routes.attach();\n }, 1);\n }\n }, 1);\n },\n\n goNamed: function goNamed(name, params, silent) {\n var path = routes.link(name, params);\n\n if (path === null) {\n return null;\n }\n\n routes.go(path, silent);\n },\n\n reload: function reload() {\n var hash = location.hash.substring(1),\n route = routes.get(hash);\n\n if (route === null) {\n return;\n }\n\n routes.exec(route);\n },\n\n attach: function attach() {\n global.addEventListener('hashchange', routes.reload, false);\n routes.attached = true;\n },\n\n detach: function detach() {\n global.removeEventListener('hashchange', routes.reload);\n routes.attached = false;\n }\n };\n\n _larouxJs2['default'].ready(routes.attach);\n\n return routes;\n})();\n\nmodule.exports = exports['default'];\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"../laroux.helpers.js\":5,\"../laroux.js\":6}],20:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _larouxJs = require('../laroux.js');\n\nvar _larouxJs2 = _interopRequireDefault(_larouxJs);\n\nvar _larouxDomJs = require('./laroux.dom.js');\n\nvar _larouxDomJs2 = _interopRequireDefault(_larouxDomJs);\n\nexports['default'] = (function () {\n 'use strict';\n\n // touch - partially taken from 'tocca.js' project\n // can be found at: https://github.com/GianlucaGuarini/Tocca.js\n var touch = {\n touchStarted: null,\n swipeTreshold: 80,\n precision: 30,\n tapCount: 0,\n tapTreshold: 200,\n longTapTreshold: 800,\n tapTimer: null,\n pos: null,\n cached: null,\n\n events: {\n start: ['touchstart', 'pointerdown', 'MSPointerDown', 'mousedown'],\n end: ['touchend', 'pointerup', 'MSPointerUp', 'mouseup'],\n move: ['touchmove', 'pointermove', 'MSPointerMove', 'mousemove']\n },\n\n locatePointer: function locatePointer(event) {\n if (event.targetTouches) {\n event = event.targetTouches[0];\n }\n\n touch.pos = [event.pageX, event.pageY];\n },\n\n init: function init() {\n var events = [0, navigator.msPointerEnabled ? 2 : 1, 3];\n\n for (var i = 0, _length = events.length; i < _length; i++) {\n _larouxDomJs2['default'].setEventSingle(document, touch.events.start[events[i]], touch.onstart);\n _larouxDomJs2['default'].setEventSingle(document, touch.events.end[events[i]], touch.onend);\n _larouxDomJs2['default'].setEventSingle(document, touch.events.move[events[i]], touch.locatePointer);\n }\n },\n\n onstart: function onstart(event) {\n touch.locatePointer(event);\n touch.cached = [touch.pos[0], touch.pos[1]];\n touch.touchStarted = Date.now();\n /*jslint plusplus: true */\n touch.tapCount++;\n\n var callback = function callback() {\n if (touch.cached[0] >= touch.pos[0] - touch.precision && touch.cached[0] <= touch.pos[0] + touch.precision && touch.cached[1] >= touch.pos[1] - touch.precision && touch.cached[1] <= touch.pos[1] + touch.precision) {\n if (touch.touchStarted === null) {\n _larouxDomJs2['default'].dispatchEvent(event.target, touch.tapCount === 2 ? 'dbltap' : 'tap', {\n innerEvent: event,\n x: touch.pos[0],\n y: touch.pos[1]\n });\n\n touch.tapCount = 0;\n return;\n }\n\n if (Date.now() - touch.touchStarted > touch.longTapTreshold) {\n _larouxDomJs2['default'].dispatchEvent(event.target, 'longtap', {\n innerEvent: event,\n x: touch.pos[0],\n y: touch.pos[1]\n });\n\n touch.touchStarted = null;\n touch.tapCount = 0;\n return;\n }\n\n touch.tapTimer = setTimeout(callback, touch.tapTreshold);\n return;\n }\n\n touch.tapCount = 0;\n };\n\n clearTimeout(touch.tapTimer);\n touch.tapTimer = setTimeout(callback, touch.tapTreshold);\n },\n\n onend: function onend(event) {\n var delta = [touch.pos[0] - touch.cached[0], touch.pos[1] - touch.cached[1]],\n data = {\n innerEvent: event,\n x: touch.pos[0],\n y: touch.pos[1],\n distance: {\n x: Math.abs(delta[0]),\n y: Math.abs(delta[1])\n }\n };\n\n touch.touchStarted = null;\n\n if (delta[0] <= -touch.swipeTreshold) {\n _larouxDomJs2['default'].dispatchEvent(event.target, 'swiperight', data);\n }\n\n if (delta[0] >= touch.swipeTreshold) {\n _larouxDomJs2['default'].dispatchEvent(event.target, 'swipeleft', data);\n }\n\n if (delta[1] <= -touch.swipeTreshold) {\n _larouxDomJs2['default'].dispatchEvent(event.target, 'swipedown', data);\n }\n\n if (delta[1] >= touch.swipeTreshold) {\n _larouxDomJs2['default'].dispatchEvent(event.target, 'swipeup', data);\n }\n }\n };\n\n _larouxJs2['default'].ready(touch.init);\n\n return touch;\n})();\n\nmodule.exports = exports['default'];\n},{\"../laroux.js\":6,\"./laroux.dom.js\":15}],21:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _larouxJs = require('../laroux.js');\n\nvar _larouxJs2 = _interopRequireDefault(_larouxJs);\n\nvar _larouxAnimJs = require('./laroux.anim.js');\n\nvar _larouxAnimJs2 = _interopRequireDefault(_larouxAnimJs);\n\nvar _larouxCssJs = require('./laroux.css.js');\n\nvar _larouxCssJs2 = _interopRequireDefault(_larouxCssJs);\n\nvar _larouxDomJs = require('./laroux.dom.js');\n\nvar _larouxDomJs2 = _interopRequireDefault(_larouxDomJs);\n\nvar _larouxFormsJs = require('./laroux.forms.js');\n\nvar _larouxFormsJs2 = _interopRequireDefault(_larouxFormsJs);\n\nvar _larouxKeysJs = require('./laroux.keys.js');\n\nvar _larouxKeysJs2 = _interopRequireDefault(_larouxKeysJs);\n\nvar _larouxMvcJs = require('./laroux.mvc.js');\n\nvar _larouxMvcJs2 = _interopRequireDefault(_larouxMvcJs);\n\nvar _larouxRoutesJs = require('./laroux.routes.js');\n\nvar _larouxRoutesJs2 = _interopRequireDefault(_larouxRoutesJs);\n\nvar _larouxTouchJs = require('./laroux.touch.js');\n\nvar _larouxTouchJs2 = _interopRequireDefault(_larouxTouchJs);\n\nexports['default'] = (function () {\n 'use strict';\n\n _larouxJs2['default'].extend({\n anim: _larouxAnimJs2['default'],\n css: _larouxCssJs2['default'],\n dom: _larouxDomJs2['default'],\n forms: _larouxFormsJs2['default'],\n keys: _larouxKeysJs2['default'],\n mvc: _larouxMvcJs2['default'],\n routes: _larouxRoutesJs2['default'],\n touch: _larouxTouchJs2['default'],\n\n cached: {\n single: {},\n array: {},\n id: {}\n },\n\n c: function c(selector) {\n if (selector instanceof Array) {\n return _larouxJs2['default'].cached.array[selector] || (_larouxJs2['default'].cached.array[selector] = helpers.toArray(document.querySelectorAll(selector)));\n }\n\n return _larouxJs2['default'].cached.single[selector] || (_larouxJs2['default'].cached.single[selector] = document.querySelector(selector));\n },\n\n id: function id(selector, parent) {\n return (parent || document).getElementById(selector);\n },\n\n idc: function idc(selector) {\n return _larouxJs2['default'].cached.id[selector] || (_larouxJs2['default'].cached.id[selector] = document.getElementById(selector));\n }\n });\n\n if (typeof document !== 'undefined') {\n document.addEventListener('DOMContentLoaded', _larouxJs2['default'].setReady);\n }\n\n return _larouxJs2['default'];\n})();\n\nmodule.exports = exports['default'];\n},{\"../laroux.js\":6,\"./laroux.anim.js\":13,\"./laroux.css.js\":14,\"./laroux.dom.js\":15,\"./laroux.forms.js\":16,\"./laroux.keys.js\":17,\"./laroux.mvc.js\":18,\"./laroux.routes.js\":19,\"./laroux.touch.js\":20}]},{},[21]);\n"],"sourceRoot":"/source/"} \ No newline at end of file diff --git a/docs/benchmarks.html b/docs/benchmarks.html index e7da8b9..df39fda 100644 --- a/docs/benchmarks.html +++ b/docs/benchmarks.html @@ -32,7 +32,7 @@
-

2.1.0

+

2.1.1

@@ -98,7 +98,7 @@

2.1.0

-

laroux.js 2.1.0

+

laroux.js 2.1.1

This project is a jQuery substitute for modern browsers and mobile devices. But instead of offering some wrappers and own dynamics, it simply provides helper functions to achieve the same objectives as jQuery or Zepto.
@@ -450,7 +450,7 @@

jQuery/Zepto

- + diff --git a/docs/faq.html b/docs/faq.html index 5ca28ed..3d300de 100644 --- a/docs/faq.html +++ b/docs/faq.html @@ -31,7 +31,7 @@
-

2.1.0

+

2.1.1

@@ -97,7 +97,7 @@

2.1.0

-

laroux.js 2.1.0

+

laroux.js 2.1.1

This project is a jQuery substitute for modern browsers and mobile devices. But instead of offering some wrappers and own dynamics, it simply provides helper functions to achieve the same objectives as jQuery or Zepto.
@@ -206,7 +206,7 @@

laroux.js is right for you if you:

- + diff --git a/docs/index.html b/docs/index.html index 22c144b..ae2df7a 100644 --- a/docs/index.html +++ b/docs/index.html @@ -32,7 +32,7 @@
-

2.1.0

+

2.1.1

@@ -98,7 +98,7 @@

2.1.0

-

laroux.js 2.1.0

+

laroux.js 2.1.1

This project is a jQuery substitute for modern browsers and mobile devices. But instead of offering some wrappers and own dynamics, it simply provides helper functions to achieve the same objectives as jQuery or Zepto.
@@ -1248,7 +1248,7 @@

Javascript

- + diff --git a/docs/snippets.html b/docs/snippets.html index 9a2436d..156c4c1 100644 --- a/docs/snippets.html +++ b/docs/snippets.html @@ -32,7 +32,7 @@
-

2.1.0

+

2.1.1

@@ -98,7 +98,7 @@

2.1.0

-

laroux.js 2.1.0

+

laroux.js 2.1.1

This project is a jQuery substitute for modern browsers and mobile devices. But instead of offering some wrappers and own dynamics, it simply provides helper functions to achieve the same objectives as jQuery or Zepto.
@@ -170,7 +170,7 @@

Snippet Library

- +