- commit
- 6bd1fb0c6ceef7fa8e9ed5411d77828fefcb5071
- parent
- bb10bf253cbc5b53f864315dd8f0678184230bb1
- Author
- Tobias Bengfort <tobias.bengfort@gmx.net>
- Date
- 2015-08-23 07:22
build
Diffstat
| M | muu.min.js | 2 | +- |
| M | muu.min.js.map | 4 | ++-- |
2 files changed, 3 insertions, 3 deletions
diff --git a/muu.min.js b/muu.min.js
@@ -1,2 +1,2 @@1 -1 !function(e,t){"object"==typeof exports&&exports&&"string"!=typeof exports.nodeName?t(exports):"function"==typeof define&&define.amd?define("mustache",["exports"],t):(e.Mustache={},t(Mustache))}(this,function(e){function t(e){return"function"==typeof e}function n(e){return v(e)?"array":typeof e}function r(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function i(e,t){return null!=e&&"object"==typeof e&&t in e}function o(e,t){return g.call(e,t)}function u(e){return!o(m,e)}function a(e){return String(e).replace(/[&<>"'\/]/g,function(e){return y[e]})}function s(t,n){function i(){if(m&&!y)for(;g.length;)delete d[g.pop()];else g=[];m=!1,y=!1}function o(e){if("string"==typeof e&&(e=e.split(k,2)),!v(e)||2!==e.length)throw new Error("Invalid tags: "+e);a=new RegExp(r(e[0])+"\\s*"),s=new RegExp("\\s*"+r(e[1])),h=new RegExp("\\s*"+r("}"+e[1]))}if(!t)return[];var a,s,h,p=[],d=[],g=[],m=!1,y=!1;o(n||e.tags);for(var A,S,T,q,U,j,L=new f(t);!L.eos();){if(A=L.pos,T=L.scanUntil(a))for(var O=0,N=T.length;N>O;++O)q=T.charAt(O),u(q)?g.push(d.length):y=!0,d.push(["text",q,A,A+1]),A+=1,"\n"===q&&i();if(!L.scan(a))break;if(m=!0,S=L.scan(x)||"name",L.scan(w),"="===S?(T=L.scanUntil(b),L.scan(b),L.scanUntil(s)):"{"===S?(T=L.scanUntil(h),L.scan(E),L.scanUntil(s),S="&"):T=L.scanUntil(s),!L.scan(s))throw new Error("Unclosed tag at "+L.pos);if(U=[S,T,A,L.pos],d.push(U),"#"===S||"^"===S)p.push(U);else if("/"===S){if(j=p.pop(),!j)throw new Error('Unopened section "'+T+'" at '+A);if(j[1]!==T)throw new Error('Unclosed section "'+j[1]+'" at '+A)}else"name"===S||"{"===S||"&"===S?y=!0:"="===S&&o(T)}if(j=p.pop())throw new Error('Unclosed section "'+j[1]+'" at '+L.pos);return l(c(d))}function c(e){for(var t,n,r=[],i=0,o=e.length;o>i;++i)t=e[i],t&&("text"===t[0]&&n&&"text"===n[0]?(n[1]+=t[1],n[3]=t[3]):(r.push(t),n=t));return r}function l(e){for(var t,n,r=[],i=r,o=[],u=0,a=e.length;a>u;++u)switch(t=e[u],t[0]){case"#":case"^":i.push(t),o.push(t),i=t[4]=[];break;case"/":n=o.pop(),n[5]=t[2],i=o.length>0?o[o.length-1][4]:r;break;default:i.push(t)}return r}function f(e){this.string=e,this.tail=e,this.pos=0}function h(e,t){this.view=e,this.cache={".":this.view},this.parent=t}function p(){this.cache={}}var d=Object.prototype.toString,v=Array.isArray||function(e){return"[object Array]"===d.call(e)},g=RegExp.prototype.test,m=/\S/,y={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"},w=/\s*/,k=/\s+/,b=/\s*=/,E=/\s*\}/,x=/#|\^|\/|>|\{|&|=|!/;f.prototype.eos=function(){return""===this.tail},f.prototype.scan=function(e){var t=this.tail.match(e);if(!t||0!==t.index)return"";var n=t[0];return this.tail=this.tail.substring(n.length),this.pos+=n.length,n},f.prototype.scanUntil=function(e){var t,n=this.tail.search(e);switch(n){case-1:t=this.tail,this.tail="";break;case 0:t="";break;default:t=this.tail.substring(0,n),this.tail=this.tail.substring(n)}return this.pos+=t.length,t},h.prototype.push=function(e){return new h(e,this)},h.prototype.lookup=function(e){var n,r=this.cache;if(r.hasOwnProperty(e))n=r[e];else{for(var o,u,a=this,s=!1;a;){if(e.indexOf(".")>0)for(n=a.view,o=e.split("."),u=0;null!=n&&u<o.length;)u===o.length-1&&(s=i(n,o[u])),n=n[o[u++]];else n=a.view[e],s=i(a.view,e);if(s)break;a=a.parent}r[e]=n}return t(n)&&(n=n.call(this.view)),n},p.prototype.clearCache=function(){this.cache={}},p.prototype.parse=function(e,t){var n=this.cache,r=n[e];return null==r&&(r=n[e]=s(e,t)),r},p.prototype.render=function(e,t,n){var r=this.parse(e),i=t instanceof h?t:new h(t);return this.renderTokens(r,i,n,e)},p.prototype.renderTokens=function(e,t,n,r){for(var i,o,u,a="",s=0,c=e.length;c>s;++s)u=void 0,i=e[s],o=i[0],"#"===o?u=this.renderSection(i,t,n,r):"^"===o?u=this.renderInverted(i,t,n,r):">"===o?u=this.renderPartial(i,t,n,r):"&"===o?u=this.unescapedValue(i,t):"name"===o?u=this.escapedValue(i,t):"text"===o&&(u=this.rawValue(i)),void 0!==u&&(a+=u);return a},p.prototype.renderSection=function(e,n,r,i){function o(e){return u.render(e,n,r)}var u=this,a="",s=n.lookup(e[1]);if(s){if(v(s))for(var c=0,l=s.length;l>c;++c)a+=this.renderTokens(e[4],n.push(s[c]),r,i);else if("object"==typeof s||"string"==typeof s||"number"==typeof s)a+=this.renderTokens(e[4],n.push(s),r,i);else if(t(s)){if("string"!=typeof i)throw new Error("Cannot use higher-order sections without the original template");s=s.call(n.view,i.slice(e[3],e[5]),o),null!=s&&(a+=s)}else a+=this.renderTokens(e[4],n,r,i);return a}},p.prototype.renderInverted=function(e,t,n,r){var i=t.lookup(e[1]);return!i||v(i)&&0===i.length?this.renderTokens(e[4],t,n,r):void 0},p.prototype.renderPartial=function(e,n,r){if(r){var i=t(r)?r(e[1]):r[e[1]];return null!=i?this.renderTokens(this.parse(i),n,r,i):void 0}},p.prototype.unescapedValue=function(e,t){var n=t.lookup(e[1]);return null!=n?n:void 0},p.prototype.escapedValue=function(t,n){var r=n.lookup(t[1]);return null!=r?e.escape(r):void 0},p.prototype.rawValue=function(e){return e[1]},e.name="mustache.js",e.version="2.1.3",e.tags=["{{","}}"];var A=new p;e.clearCache=function(){return A.clearCache()},e.parse=function(e,t){return A.parse(e,t)},e.render=function(e,t,r){if("string"!=typeof e)throw new TypeError('Invalid template! Template should be a "string" but "'+n(e)+'" was given as the first argument for mustache#render(template, view, partials)');return A.render(e,t,r)},e.to_html=function(n,r,i,o){var u=e.render(n,r,i);return t(o)?void o(u):u},e.escape=a,e.Scanner=f,e.Context=h,e.Writer=p}),define("muu-js-helpers",[],function(){"use strict";var e={};return e.once=function(e){var t,n=!1;return function(){return n||(t=e.apply(this,arguments),n=!0),t}},e.indexOf=function(e,t){if("indexOf"in e)return e.indexOf(t);for(var n=0;n<e.length;n++)if(e[n]===t)return n;return-1},e.forEach=function(e,t){if("forEach"in e)return e.forEach(t);for(var n=0;n<e.length;n++)t(e[n])},e.map=function(e,t){if("map"in e)return e.map(t);for(var n=[],r=0;r<e.length;r++)n.push(t(e[r]));return n},e.filter=function(e,t){if("filter"in e)return e.filter(t);for(var n=[],r=0;r<e.length;r++)if(t(e[r]))return n.push(e[r]);return n},e.union=function(t){for(var n=[],r=0;r<t.length;r++)for(var i=0;i<t[r].length;i++)-1===e.indexOf(n,t[r][i])&&n.push(t[r][i]);return n},e.difference=function(t,n){for(var r=[],i=0;i<t.length;i++)-1===e.indexOf(n,t[i])&&r.push(t[i]);return r},e}),define("muu-dom-helpers",["muu-js-helpers"],function(e){"use strict";return{ready:function(t){var n=e.once(t);"complete"===document.readyState?n():(document.addEventListener("DOMContentLoaded",n),window.addEventListener("load",n))},getRadio:function(e){for(var t=0;t<e.length;t++)if(e[t].checked)return e[t].value},setRadio:function(e,t){for(var n=0;n<e.length;n++){if(e[n].value===t)return void(e[n].checked=!0);e[n].checked=!1}}}}),define("muu-evmgr",[],function(){"use strict";return function(){var e=this,t={},n=0,r=function(){return n++};e.on=function(n,i){t[n]=t[n]||{};var o=r();return t[n][o]=i,function(){e.off(n,o)}},e.off=function(e,n){void 0===e?t={}:void 0===n?delete t[e]:delete t[e][n]},e.trigger=function(e,n){for(var r in t[e])if(t[e].hasOwnProperty(r)){var i=t[e][r];i(n)}}}}),define("muu-update-dom",["muu-js-helpers"],function(e){"use strict";var t=function(t,n){var r=e.map(t.attributes,function(e){return e.name}),i=e.map(n.attributes,function(e){return e.name});e.forEach(r,function(e){n.hasAttribute(e)||t.removeAttribute(e)}),e.forEach(i,function(e){t.setAttribute(e,n.getAttribute(e))})},n=function(r,i){var o=r.childNodes.length,u=i.childNodes.length;if(r.nodeType===i.nodeType&&r.nodeName===i.nodeName){if(1===r.nodeType){var a=e.filter(r.classList,function(e){return e.startsWith("muu-")});t(r,i),e.forEach(a,function(e){r.classList.add(e)})}else 3===r.nodeType&&(r.nodeValue=i.nodeValue);if(1!==r.nodeType||!r.classList.contains("muu-isolate")){for(var s=0;o>s&&u>s;s++)n(r.childNodes[s],i.childNodes[s]);for(s=u;o>s;s++)r.removeChild(r.childNodes[u]);for(s=o;u>s;s++)r.appendChild(i.childNodes[o])}}else r.parentNode.replaceChild(i,r)};return n}),define("muu-directive",["mustache","muu-dom-helpers","muu-js-helpers","muu-evmgr","muu-update-dom"],function(e,t,n,r,i){"use strict";return function(o,u,a){var s=this,c=new r,l=function(e){var t="data-on"+e.type;if(e.target.hasAttribute(t)){var n=e.target.getAttribute(t);c.trigger(n,e)}};s.update=function(t){var r=document.createElement("div");r.innerHTML=e.render(u,t),i(o,r),n.forEach(["keydown","keyup","click","change","search"],function(e){var t="[data-on"+e+"]";n.forEach(s.querySelectorAll(t),function(t){t.addEventListener(e,l)})}),a.linkAll(s)},s.querySelectorAll=function(e){var t=o.querySelectorAll(e),r=o.querySelectorAll(".muu-isolate"),i=n.union(n.map(r,function(t){return t.querySelectorAll(e)}));return n.difference(t,i)},s.querySelector=function(e){var t=s.querySelectorAll(e);return t.length>0?t[0]:void 0},s.getModel=function(e,r){if(void 0===e){var i={};return n.forEach(s.querySelectorAll("[name]"),function(e){i[e.name]=s.getModel(e.name)}),i}var o=s.querySelector("[name="+e+"]");if("checkbox"===o.type)return o.checked;if("radio"===o.type){var u=s.querySelectorAll("[name="+e+"]");return t.getRadio(u)||r}return o.value||r},s.setModel=function(e,n){var r=s.querySelector("[name="+e+"]");if("checkbox"===r.type)r.checked=n;else if("radio"===r.type){var i=s.querySelectorAll("[name="+e+"]");t.setRadio(i,n)}else r.value=n},s.on=function(e,t){return c.on(e,t)}}}),define("muu",["muu-directive","muu-js-helpers"],function(e,t){"use strict";return function(n){var r=this,i={};r.config=n||{},r.registerDirective=function(e,t,n){return i[e]={template:t,link:n},r},r.registerModule=function(e){return e(r),r},r.link=function(t,n){if(void 0===n&&(n=t.getAttribute("type")),!i.hasOwnProperty(n))throw new Error("Unknown directive type: "+n);var o=i[n].template,u=i[n].link;t.innerHTML="<div></div>";var a=new e(t.children[0],o,r);return u(a,t),t.classList.add("muu-isolate"),t.classList.add("muu-initialised"),r.config.debug&&(t.directive=a),a},r.linkAll=function(e){var n=e.querySelectorAll("muu:not(.muu-initialised)");return t.map(n,function(e){return r.link(e)})}}});-1 1 define("muu-js-helpers",[],function(){"use strict";var e={},t=function(e){return Object.prototype.toString.call(e)};return e.isString=function(e){return"string"==typeof e||"[object String]"===t(e)},e.isArray=Array.isArray,e.isFunction=function(e){return"function"==typeof e},e.once=function(e){var t,n=!1;return function(){return n||(t=e.apply(this,arguments),n=!0),t}},e.indexOf=function(e,t){if("indexOf"in e)return e.indexOf(t);for(var n=0;n<e.length;n++)if(e[n]===t)return n;return-1},e.forEach=function(e,t){if("forEach"in e)return e.forEach(t);for(var n=0;n<e.length;n++)t(e[n])},e.map=function(e,t){if("map"in e)return e.map(t);for(var n=[],r=0;r<e.length;r++)n.push(t(e[r]));return n},e.filter=function(e,t){if("filter"in e)return e.filter(t);for(var n=[],r=0;r<e.length;r++)t(e[r])&&n.push(e[r]);return n},e.union=function(t){for(var n=[],r=0;r<t.length;r++)for(var i=0;i<t[r].length;i++)-1===e.indexOf(n,t[r][i])&&n.push(t[r][i]);return n},e.difference=function(t,n){for(var r=[],i=0;i<t.length;i++)-1===e.indexOf(n,t[i])&&r.push(t[i]);return r},e.flatten=function(t){var n=[];return e.forEach(t,function(t){e.isArray(t)?n=n.concat(e.flatten(t)):n.push(t)}),n},e}),define("muu-dom-helpers",["muu-js-helpers"],function(e){"use strict";var t={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"},n={};return n.DELAY=1e3,n.escapeHtml=function(e){return String(e).replace(/[&<>"'\/]/g,function(e){return t[e]})},n.createEvent=function(e,t){if("function"==typeof CustomEvent)return new CustomEvent(e,{detail:t});var n=document.createEvent("CustomEvent");return n.initCustomEvent(e,!1,!0,t),n},n.on=function(e,t,n){return e.addEventListener(t,n,!1),function(){e.removeEventListener(t,n,!1)}},n.ready=function(t){var r=e.once(t);if("complete"===document.readyState)return r(),function(){};var i=n.on(document,"DOMContentLoaded",r),u=n.on(window,"load",r);return function(){i(),u()}},n.isDescendant=function(e,t){return!!e&&(e===t||n.isDescendant(e.parentNode,t))},n.destroy=function(e,t){var r,i=setInterval(function(){n.isDescendant(e,document)||(t(),r())},n.DELAY);return r=function(){clearInterval(i)}},n.getRadio=function(e){for(var t=0;t<e.length;t++)if(e[t].checked)return e[t].value},n.setRadio=function(e,t){for(var n=0;n<e.length;n++)e[n].value===t?e[n].checked=!0:e[n].checked=!1},n}),define("muu-template",["muu-js-helpers","muu-dom-helpers"],function(e,t){"use strict";var n="{{",r="}}",i=function(e){var n=e.slice(2,-2);if(-1===e.indexOf(":"))return function(e){return t.escapeHtml(e[n]||"")};var r=n.split(",").map(function(e){var t=e.split(":"),n=t[0].trim(),r=t.slice(1).join(":").trim();return[n,r]});return function(e){for(var n=[],i=0;i<r.length;i++){var u=r[i][0],o=r[i][1];e[o]&&n.push(u)}return t.escapeHtml(n.join(" "))}},u=function(t,n){var r=t.slice(3,-2),i=c(n,r),u=i[0],o=i[1],a=function(t){if(e.isArray(t[r])){for(var n="",i=0;i<t[r].length;i++)n+=u(t[r][i]);return n}return t[r]?u(t):""};return[a,o]},o=function(t){var n=t.pop();return e.isArray(n)?(t.push(n[0]),[o(t),n[1]]):(t.push(n),function(n){return t.map(function(t){return e.isString(t)?t:e.isFunction(t)?t(n):void 0}).join("")})},c=function(e,t){var a=e.indexOf(n);if(-1===a){if(void 0===t)return function(){return e};throw new Error("unclosed loop: "+t)}var f=e.slice(0,a),l=e.slice(a),s=l.indexOf(r)+2;if(1===s)throw new Error("unclosed tag: "+l);var d=l.slice(0,s),v=l.slice(s);if(0===d.lastIndexOf("{{#",0)){var h=u(d,v),m=h[0],p=c(h[1],t);return o([f,m,p])}if(0===d.lastIndexOf("{{!",0)){var p=c(v,t);return o([f,p])}if(0===d.lastIndexOf("{{/",0)){if(d.slice(3,-2)===t){var y=function(){return f};return[y,v]}throw new Error("unexpected closing loop: "+d)}var y=i(d),p=c(v,t);return o([f,y,p])};return function(e,t){return c(e)(t)}}),define("muu-update-dom",["muu-js-helpers"],function(e){"use strict";var t=function(t,n){var r=e.map(t.attributes,function(e){return e.name}),i=e.map(n.attributes,function(e){return e.name});e.forEach(r,function(e){n.hasAttribute(e)||"__IE8__"===e.substr(0,7)||t.removeAttribute(e)}),e.forEach(i,function(e){t.getAttribute(e)!==n.getAttribute(e)&&t.setAttribute(e,n.getAttribute(e))})},n=function(r,i){var u=r.childNodes.length,o=i.childNodes.length;if(r.nodeType===i.nodeType&&r.nodeName===i.nodeName&&r.type===i.type){if(1===r.nodeType){var c=e.filter(r.classList,function(e){return 0===e.lastIndexOf("muu-",0)});t(r,i),e.forEach(c,function(e){r.classList.add(e)})}else 3===r.nodeType&&(r.nodeValue=i.nodeValue);if(1!==r.nodeType||!r.classList.contains("muu-isolate")){for(var a=o;u>a;a++)r.removeChild(r.childNodes[o]);for(a=u;o>a;a++)r.appendChild(i.childNodes[u]);for(a=0;u>a&&o>a;a++)n(r.childNodes[a],i.childNodes[a])}}else r.parentNode.replaceChild(i,r)};return n}),define("muu-directive",["muu-dom-helpers","muu-js-helpers","muu-update-dom"],function(e,t,n){"use strict";var r=function(r,i,u){var o=this;r.innerHTML="<div></div>";var c=function(t){var n="data-on"+t.type;if(t.target.hasAttribute(n)){var i=t.target.getAttribute(n),u=e.createEvent("muu-"+i,t);r.dispatchEvent(u)}};this.update=function(a){var f=document.createElement("div");f.innerHTML=u.renderer(i,a),n(r.children[0],f),t.forEach(["keydown","keyup","click","change","search"],function(e){var n="[data-on"+e+"]";t.forEach(o.querySelectorAll(n),function(t){t.addEventListener(e,c,!1)})});var l=e.createEvent("muu-parent-update"),s=this.querySelectorAll("muu.muu-initialised");t.forEach(s,function(e){e.dispatchEvent(l)}),u.linkAll(o)},this.querySelectorAll=function(e){var n=r.querySelectorAll(e),i=r.querySelectorAll(".muu-isolate"),u=t.union(t.map(i,function(t){return t.querySelectorAll(e)}));return t.difference(n,u)},this.querySelector=function(e){var t=o.querySelectorAll(e);return t.length>0?t[0]:void 0},this.getModel=function(n,r){if(void 0===n){var i={};return t.forEach(o.querySelectorAll("[name]"),function(e){i[e.name]=o.getModel(e.name)}),i}var u=o.querySelector("[name="+n+"]");if(void 0===u)return r;if("checkbox"===u.type)return u.checked;if("radio"===u.type){var c=o.querySelectorAll("[name="+n+"]");return e.getRadio(c)||r}return u.value},this.setModel=function(t,n){var r=o.querySelector("[name="+t+"]");if("checkbox"===r.type)r.checked=n;else if("radio"===r.type){var i=o.querySelectorAll("[name="+t+"]");e.setRadio(i,n)}else r.value=n}};return r}),define("muu",["muu-template","muu-directive","muu-js-helpers","muu-dom-helpers"],function(e,t,n,r){"use strict";var i=function(i){var u=this,o={};this.config=i||{},this.renderer=u.config.renderer||e,this.registerDirective=function(e,t,n){return o[e]={template:t,link:n},u},this.registerModule=function(e){return e(u),u},this.link=function(e,n){if(void 0===n&&(n=e.getAttribute("type")),!o.hasOwnProperty(n))throw new Error("Unknown directive type: "+n);var i=o[n].template,c=o[n].link,a=new t(e,i,u),f=c(a,e);return e.classList.add("muu-isolate"),e.classList.add("muu-initialised"),u.config.debug&&(e.directive=a),void 0!==f&&r.destroy(e,f),a},this.linkAll=function(e){var t=n.filter(e.querySelectorAll("muu"),function(e){return!e.classList.contains("muu-initialised")});return n.map(t,function(e){return u.link(e)})}};return i}); 2 2 //# sourceMappingURL=muu.min.js.ma 2 2 \ No newline at end of file
diff --git a/muu.min.js.map b/muu.min.js.map
@@ -1 +1 @@1 -1 {"version":3,"file":"muu.min.js","sources":["../bower_components/mustache/mustache.min.js","muu-js-helpers.js","muu-dom-helpers.js","muu-evmgr.js","muu-update-dom.js","muu-directive.js","muu.js"],"names":["global","factory","exports","nodeName","define","amd","Mustache","this","mustache","isFunction","object","typeStr","obj","isArray","escapeRegExp","string","replace","hasProperty","propName","testRegExp","re","regExpTest","call","isWhitespace","nonSpaceRe","escapeHtml","String","s","entityMap","parseTemplate","template","tags","stripSpace","hasTag","nonSpace","spaces","length","tokens","pop","compileTags","tagsToCompile","split","spaceRe","Error","openingTagRe","RegExp","closingTagRe","closingCurlyRe","sections","start","type","value","chr","token","openSection","scanner","Scanner","eos","pos","scanUntil","i","valueLength","charAt","push","scan","tagRe","whiteRe","equalsRe","curlyRe","nestTokens","squashTokens","lastToken","squashedTokens","numTokens","section","nestedTokens","collector","tail","Context","view","parentContext","cache",".","parent","Writer","objectToString","Object","prototype","toString","Array","test","&","<",">","\"","'","/","match","index","substring","search","lookup","name","hasOwnProperty","names","context","lookupHit","indexOf","clearCache","parse","render","partials","renderTokens","originalTemplate","symbol","buffer","undefined","renderSection","renderInverted","renderPartial","unescapedValue","escapedValue","rawValue","subRender","self","j","slice","escape","version","defaultWriter","TypeError","to_html","send","result","_","once","fn","called","apply","arguments","array","forEach","map","results","filter","union","arrays","difference","a","b","ready","_fn","document","readyState","addEventListener","window","getRadio","options","checked","setRadio","handlers","nextID","getNextID","on","eventName","handler","id","off","trigger","arg","updateAttributes","target","source","targetAttrNames","attributes","item","sourceAttrNames","hasAttribute","removeAttribute","setAttribute","getAttribute","updateDOM","nt","childNodes","ns","nodeType","muuClasses","classList","cls","startsWith","add","nodeValue","contains","removeChild","appendChild","parentNode","replaceChild","$","EvMgr","root","registry","evmgr","eventCallback","event","attrName","update","data","tmp","createElement","innerHTML","eventType","selector","querySelectorAll","element","linkAll","hits","isolations","isolated","isolation","querySelector","all","getModel","_default","model","setModel","callback","Directive","config","directives","registerDirective","link","registerModule","module","directive","children","debug","elements"],"mappings":"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B,SAAAA,EACAwM,KAAAA,GAEA1G,GAGAA,EAAA2G,eAAA,SAAAC,GAEA,MADAA,GAAA5G,GACAA,GAGAA,EAAA0G,KAAA,SAAAjB,EAAAnK,GAKA,GAJA,SAAAA,IACAA,EAAAmK,EAAAjC,aAAA,UAGAgD,EAAA7H,eAAArD,GACA,KAAA,IAAAP,OAAA,2BAAAO,EAGA,IAAApB,GAAAsM,EAAAlL,GAAApB,SACAwM,EAAAF,EAAAlL,GAAAoL,IAEAjB,GAAAJ,UAAA,aAEA,IAAAwB,GAAA,GAAAP,GAAAb,EAAAqB,SAAA,GAAA5M,EAAA8F,EAUA,OATA0G,GAAAG,EAAApB,GAEAA,EAAA1B,UAAAG,IAAA,eACAuB,EAAA1B,UAAAG,IAAA,mBAEAlE,EAAAuG,OAAAQ,QACAtB,EAAAoB,UAAAA,GAGAA,GAGA7G,EAAA0F,QAAA,SAAAf,GAEA,GAAAqC,GAAArC,EAAAa,iBAAA,4BACA,OAAA9E,GAAAQ,IAAA8F,EAAA,SAAAvB,GACA,MAAAzF,GAAA0G,KAAAjB;ANpDA;AACA,ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC9FA,AD+FA;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC3DA,AD4DA;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC1FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sourcesContent":["(function defineMustache(global,factory){if(typeof exports===\"object\"&&exports&&typeof exports.nodeName!==\"string\"){factory(exports)}else if(typeof define===\"function\"&&define.amd){define('mustache',[\"exports\"],factory)}else{global.Mustache={};factory(Mustache)}})(this,function mustacheFactory(mustache){var objectToString=Object.prototype.toString;var isArray=Array.isArray||function isArrayPolyfill(object){return objectToString.call(object)===\"[object Array]\"};function isFunction(object){return typeof object===\"function\"}function typeStr(obj){return isArray(obj)?\"array\":typeof obj}function escapeRegExp(string){return string.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g,\"\\\\$&\")}function hasProperty(obj,propName){return obj!=null&&typeof obj===\"object\"&&propName in obj}var regExpTest=RegExp.prototype.test;function testRegExp(re,string){return regExpTest.call(re,string)}var nonSpaceRe=/\\S/;function isWhitespace(string){return!testRegExp(nonSpaceRe,string)}var entityMap={\"&\":\"&\",\"<\":\"<\",\">\":\">\",'\"':\""\",\"'\":\"'\",\"/\":\"/\"};function escapeHtml(string){return String(string).replace(/[&<>\"'\\/]/g,function fromEntityMap(s){return entityMap[s]})}var whiteRe=/\\s*/;var spaceRe=/\\s+/;var equalsRe=/\\s*=/;var curlyRe=/\\s*\\}/;var tagRe=/#|\\^|\\/|>|\\{|&|=|!/;function parseTemplate(template,tags){if(!template)return[];var sections=[];var tokens=[];var spaces=[];var hasTag=false;var nonSpace=false;function stripSpace(){if(hasTag&&!nonSpace){while(spaces.length)delete tokens[spaces.pop()]}else{spaces=[]}hasTag=false;nonSpace=false}var openingTagRe,closingTagRe,closingCurlyRe;function compileTags(tagsToCompile){if(typeof tagsToCompile===\"string\")tagsToCompile=tagsToCompile.split(spaceRe,2);if(!isArray(tagsToCompile)||tagsToCompile.length!==2)throw new Error(\"Invalid tags: \"+tagsToCompile);openingTagRe=new RegExp(escapeRegExp(tagsToCompile[0])+\"\\\\s*\");closingTagRe=new RegExp(\"\\\\s*\"+escapeRegExp(tagsToCompile[1]));closingCurlyRe=new RegExp(\"\\\\s*\"+escapeRegExp(\"}\"+tagsToCompile[1]))}compileTags(tags||mustache.tags);var scanner=new Scanner(template);var start,type,value,chr,token,openSection;while(!scanner.eos()){start=scanner.pos;value=scanner.scanUntil(openingTagRe);if(value){for(var i=0,valueLength=value.length;i<valueLength;++i){chr=value.charAt(i);if(isWhitespace(chr)){spaces.push(tokens.length)}else{nonSpace=true}tokens.push([\"text\",chr,start,start+1]);start+=1;if(chr===\"\\n\")stripSpace()}}if(!scanner.scan(openingTagRe))break;hasTag=true;type=scanner.scan(tagRe)||\"name\";scanner.scan(whiteRe);if(type===\"=\"){value=scanner.scanUntil(equalsRe);scanner.scan(equalsRe);scanner.scanUntil(closingTagRe)}else if(type===\"{\"){value=scanner.scanUntil(closingCurlyRe);scanner.scan(curlyRe);scanner.scanUntil(closingTagRe);type=\"&\"}else{value=scanner.scanUntil(closingTagRe)}if(!scanner.scan(closingTagRe))throw new Error(\"Unclosed tag at \"+scanner.pos);token=[type,value,start,scanner.pos];tokens.push(token);if(type===\"#\"||type===\"^\"){sections.push(token)}else if(type===\"/\"){openSection=sections.pop();if(!openSection)throw new Error('Unopened section \"'+value+'\" at '+start);if(openSection[1]!==value)throw new Error('Unclosed section \"'+openSection[1]+'\" at '+start)}else if(type===\"name\"||type===\"{\"||type===\"&\"){nonSpace=true}else if(type===\"=\"){compileTags(value)}}openSection=sections.pop();if(openSection)throw new Error('Unclosed section \"'+openSection[1]+'\" at '+scanner.pos);return nestTokens(squashTokens(tokens))}function squashTokens(tokens){var squashedTokens=[];var token,lastToken;for(var i=0,numTokens=tokens.length;i<numTokens;++i){token=tokens[i];if(token){if(token[0]===\"text\"&&lastToken&&lastToken[0]===\"text\"){lastToken[1]+=token[1];lastToken[3]=token[3]}else{squashedTokens.push(token);lastToken=token}}}return squashedTokens}function nestTokens(tokens){var nestedTokens=[];var collector=nestedTokens;var sections=[];var token,section;for(var i=0,numTokens=tokens.length;i<numTokens;++i){token=tokens[i];switch(token[0]){case\"#\":case\"^\":collector.push(token);sections.push(token);collector=token[4]=[];break;case\"/\":section=sections.pop();section[5]=token[2];collector=sections.length>0?sections[sections.length-1][4]:nestedTokens;break;default:collector.push(token)}}return nestedTokens}function Scanner(string){this.string=string;this.tail=string;this.pos=0}Scanner.prototype.eos=function eos(){return this.tail===\"\"};Scanner.prototype.scan=function scan(re){var match=this.tail.match(re);if(!match||match.index!==0)return\"\";var string=match[0];this.tail=this.tail.substring(string.length);this.pos+=string.length;return string};Scanner.prototype.scanUntil=function scanUntil(re){var index=this.tail.search(re),match;switch(index){case-1:match=this.tail;this.tail=\"\";break;case 0:match=\"\";break;default:match=this.tail.substring(0,index);this.tail=this.tail.substring(index)}this.pos+=match.length;return match};function Context(view,parentContext){this.view=view;this.cache={\".\":this.view};this.parent=parentContext}Context.prototype.push=function push(view){return new Context(view,this)};Context.prototype.lookup=function lookup(name){var cache=this.cache;var value;if(cache.hasOwnProperty(name)){value=cache[name]}else{var context=this,names,index,lookupHit=false;while(context){if(name.indexOf(\".\")>0){value=context.view;names=name.split(\".\");index=0;while(value!=null&&index<names.length){if(index===names.length-1)lookupHit=hasProperty(value,names[index]);value=value[names[index++]]}}else{value=context.view[name];lookupHit=hasProperty(context.view,name)}if(lookupHit)break;context=context.parent}cache[name]=value}if(isFunction(value))value=value.call(this.view);return value};function Writer(){this.cache={}}Writer.prototype.clearCache=function clearCache(){this.cache={}};Writer.prototype.parse=function parse(template,tags){var cache=this.cache;var tokens=cache[template];if(tokens==null)tokens=cache[template]=parseTemplate(template,tags);return tokens};Writer.prototype.render=function render(template,view,partials){var tokens=this.parse(template);var context=view instanceof Context?view:new Context(view);return this.renderTokens(tokens,context,partials,template)};Writer.prototype.renderTokens=function renderTokens(tokens,context,partials,originalTemplate){var buffer=\"\";var token,symbol,value;for(var i=0,numTokens=tokens.length;i<numTokens;++i){value=undefined;token=tokens[i];symbol=token[0];if(symbol===\"#\")value=this.renderSection(token,context,partials,originalTemplate);else if(symbol===\"^\")value=this.renderInverted(token,context,partials,originalTemplate);else if(symbol===\">\")value=this.renderPartial(token,context,partials,originalTemplate);else if(symbol===\"&\")value=this.unescapedValue(token,context);else if(symbol===\"name\")value=this.escapedValue(token,context);else if(symbol===\"text\")value=this.rawValue(token);if(value!==undefined)buffer+=value}return buffer};Writer.prototype.renderSection=function renderSection(token,context,partials,originalTemplate){var self=this;var buffer=\"\";var value=context.lookup(token[1]);function subRender(template){return self.render(template,context,partials)}if(!value)return;if(isArray(value)){for(var j=0,valueLength=value.length;j<valueLength;++j){buffer+=this.renderTokens(token[4],context.push(value[j]),partials,originalTemplate)}}else if(typeof value===\"object\"||typeof value===\"string\"||typeof value===\"number\"){buffer+=this.renderTokens(token[4],context.push(value),partials,originalTemplate)}else if(isFunction(value)){if(typeof originalTemplate!==\"string\")throw new Error(\"Cannot use higher-order sections without the original template\");value=value.call(context.view,originalTemplate.slice(token[3],token[5]),subRender);if(value!=null)buffer+=value}else{buffer+=this.renderTokens(token[4],context,partials,originalTemplate)}return buffer};Writer.prototype.renderInverted=function renderInverted(token,context,partials,originalTemplate){var value=context.lookup(token[1]);if(!value||isArray(value)&&value.length===0)return this.renderTokens(token[4],context,partials,originalTemplate)};Writer.prototype.renderPartial=function renderPartial(token,context,partials){if(!partials)return;var value=isFunction(partials)?partials(token[1]):partials[token[1]];if(value!=null)return this.renderTokens(this.parse(value),context,partials,value)};Writer.prototype.unescapedValue=function unescapedValue(token,context){var value=context.lookup(token[1]);if(value!=null)return value};Writer.prototype.escapedValue=function escapedValue(token,context){var value=context.lookup(token[1]);if(value!=null)return mustache.escape(value)};Writer.prototype.rawValue=function rawValue(token){return token[1]};mustache.name=\"mustache.js\";mustache.version=\"2.1.3\";mustache.tags=[\"{{\",\"}}\"];var defaultWriter=new Writer;mustache.clearCache=function clearCache(){return defaultWriter.clearCache()};mustache.parse=function parse(template,tags){return defaultWriter.parse(template,tags)};mustache.render=function render(template,view,partials){if(typeof template!==\"string\"){throw new TypeError('Invalid template! Template should be a \"string\" '+'but \"'+typeStr(template)+'\" was given as the first '+\"argument for mustache#render(template, view, partials)\")}return defaultWriter.render(template,view,partials)};mustache.to_html=function to_html(template,view,partials,send){var result=mustache.render(template,view,partials);if(isFunction(send)){send(result)}else{return result}};mustache.escape=escapeHtml;mustache.Scanner=Scanner;mustache.Context=Context;mustache.Writer=Writer});\n\n","/**\n * Minimal implementation of an underscore/lodash subset.\n */\ndefine('muu-js-helpers',[],function() {\n \"use strict\";\n\n var _ = {};\n\n _.once = function(fn) {\n var result;\n var called = false;\n\n return function() {\n if (!called) {\n result = fn.apply(this, arguments);\n called = true;\n }\n return result;\n };\n };\n\n _.indexOf = function(array, value) {\n if ('indexOf' in array) {\n return array.indexOf(value);\n }\n\n for (var i = 0; i < array.length; i++) {\n if (array[i] === value) {\n return i;\n }\n }\n return -1;\n };\n\n _.forEach = function(array, fn) {\n if ('forEach' in array) {\n return array.forEach(fn);\n }\n\n for (var i = 0; i < array.length; i++) {\n fn(array[i]);\n }\n };\n\n _.map = function(array, fn) {\n if ('map' in array) {\n return array.map(fn);\n }\n\n var results = [];\n for (var i = 0; i < array.length; i++) {\n results.push(fn(array[i]));\n }\n return results;\n };\n\n _.filter = function(array, fn) {\n if ('filter' in array) {\n return array.filter(fn);\n }\n\n var results = [];\n for (var i = 0; i < array.length; i++) {\n if (fn(array[i])) {\n return results.push(array[i]);\n }\n }\n return results;\n };\n\n _.union = function(arrays) {\n var results = [];\n for (var i = 0; i < arrays.length; i++) {\n for (var j = 0; j < arrays[i].length; j++) {\n if (_.indexOf(results, arrays[i][j]) === -1) {\n results.push(arrays[i][j]);\n }\n }\n }\n return results;\n };\n\n _.difference = function(a, b) {\n var results = [];\n for (var i = 0; i < a.length; i++) {\n if (_.indexOf(b, a[i]) === -1) {\n results.push(a[i]);\n }\n }\n return results;\n };\n\n return _;\n});\n\n","define('muu-dom-helpers',['muu-js-helpers'], function(_) {\n \"use strict\";\n\n return {\n ready: function(fn) {\n var _fn = _.once(fn);\n if (document.readyState === \"complete\") {\n _fn();\n } else {\n document.addEventListener(\"DOMContentLoaded\", _fn);\n window.addEventListener(\"load\", _fn);\n }\n },\n getRadio: function(options) {\n for (var i = 0; i < options.length; i++) {\n if (options[i].checked) {\n return options[i].value;\n }\n }\n },\n setRadio: function(options, value) {\n for (var i = 0; i < options.length; i++) {\n if (options[i].value === value) {\n options[i].checked = true;\n return;\n } else {\n options[i].checked = false;\n }\n }\n }\n };\n});\n\n","define('muu-evmgr',[], function() {\n \"use strict\";\n\n /**\n * Generic event handler with on, off and trigger.\n */\n return function() {\n var self = this;\n\n var handlers = {};\n var nextID = 0;\n\n var getNextID = function() {\n return nextID++;\n };\n\n self.on = function(eventName, handler) {\n handlers[eventName] = handlers[eventName] || {};\n var id = getNextID();\n handlers[eventName][id] = handler;\n\n return function() {\n self.off(eventName, id);\n };\n };\n\n self.off = function(eventName, id) {\n if (eventName === void 0) {\n handlers = {};\n } else if (id === void 0) {\n delete handlers[eventName];\n } else {\n delete handlers[eventName][id];\n }\n };\n\n self.trigger = function(eventName, arg) {\n for (var id in handlers[eventName]) {\n if (handlers[eventName].hasOwnProperty(id)) {\n var handler = handlers[eventName][id];\n handler(arg);\n }\n }\n };\n };\n});\n\n","define('muu-update-dom',['muu-js-helpers'], function(_) {\n \"use strict\";\n\n var updateAttributes = function(target, source) {\n var targetAttrNames = _.map(target.attributes, function(item) {\n return item.name;\n });\n var sourceAttrNames = _.map(source.attributes, function(item) {\n return item.name;\n });\n\n _.forEach(targetAttrNames, function(name) {\n if (!source.hasAttribute(name)) {\n target.removeAttribute(name);\n }\n });\n _.forEach(sourceAttrNames, function(name) {\n target.setAttribute(name, source.getAttribute(name));\n });\n };\n\n /**\n * Recreate DOM `source` in `target` by making only small adjustments.\n */\n var updateDOM = function(target, source) {\n var nt = target.childNodes.length;\n var ns = source.childNodes.length;\n\n if (target.nodeType === source.nodeType && target.nodeName === source.nodeName) {\n if (target.nodeType === 1) {\n var muuClasses = _.filter(target.classList, function(cls) {\n return cls.startsWith('muu-');\n });\n updateAttributes(target, source);\n _.forEach(muuClasses, function(cls) {\n target.classList.add(cls);\n });\n } else if (target.nodeType === 3) {\n target.nodeValue = source.nodeValue;\n }\n\n if (target.nodeType !== 1 || !target.classList.contains('muu-isolate')) {\n for (var i = 0; i < nt && i < ns; i++) {\n updateDOM(target.childNodes[i], source.childNodes[i]);\n }\n for (i = ns; i < nt; i++) {\n target.removeChild(target.childNodes[ns]);\n }\n for (i = nt; i < ns; i++) {\n target.appendChild(source.childNodes[nt]);\n }\n }\n } else {\n target.parentNode.replaceChild(source, target);\n }\n };\n\n return updateDOM;\n});\n\n","define('muu-directive',['mustache', 'muu-dom-helpers', 'muu-js-helpers', 'muu-evmgr', 'muu-update-dom'], function(Mustache, $, _, EvMgr, updateDOM) { // jshint ignore:line\n \"use strict\";\n\n return function(root, template, registry) {\n var self = this;\n var evmgr = new EvMgr();\n\n var eventCallback = function(event) {\n var attrName = 'data-on' + event.type;\n if (event.target.hasAttribute(attrName)) {\n var eventName = event.target.getAttribute(attrName);\n evmgr.trigger(eventName, event);\n }\n };\n\n self.update = function(data) {\n var tmp = document.createElement('div');\n tmp.innerHTML = Mustache.render(template, data);\n\n updateDOM(root, tmp);\n\n _.forEach(['keydown', 'keyup', 'click', 'change', 'search'], function(eventType) {\n var selector = '[data-on' + eventType + ']';\n _.forEach(self.querySelectorAll(selector), function(element) {\n element.addEventListener(eventType, eventCallback);\n });\n });\n\n registry.linkAll(self);\n };\n\n self.querySelectorAll = function(selector) {\n var hits = root.querySelectorAll(selector);\n\n // NOTE: querySelectorAll returns all elements in the tree that\n // match the given selector. findAll does the same with *relative\n // selectors* but does not seem to be available yet.\n var isolations = root.querySelectorAll('.muu-isolate');\n var isolated = _.union(_.map(isolations, function(isolation) {\n return isolation.querySelectorAll(selector);\n }));\n\n return _.difference(hits, isolated);\n };\n\n self.querySelector = function(selector) {\n var all = self.querySelectorAll(selector);\n if (all.length > 0) {\n return all[0];\n }\n };\n\n self.getModel = function(name, _default) {\n if (name === void 0) {\n var model = {};\n _.forEach(self.querySelectorAll('[name]'), function(element) {\n model[element.name] = self.getModel(element.name);\n });\n return model;\n } else {\n var element = self.querySelector('[name=' + name + ']');\n if (element.type === 'checkbox') {\n return element.checked;\n } else if (element.type === 'radio') {\n var options = self.querySelectorAll('[name=' + name + ']');\n return $.getRadio(options) || _default;\n } else {\n return element.value || _default;\n }\n }\n };\n\n self.setModel = function(name, value) {\n var element = self.querySelector('[name=' + name + ']');\n if (element.type === 'checkbox') {\n element.checked = value;\n } else if (element.type === 'radio') {\n var options = self.querySelectorAll('[name=' + name + ']');\n $.setRadio(options, value);\n } else {\n element.value = value;\n }\n };\n\n self.on = function(eventName, callback) {\n return evmgr.on(eventName, callback);\n };\n };\n});\n\n","define('muu',['muu-directive', 'muu-js-helpers'], function(Directive, _) {\n \"use strict\";\n\n return function(config) {\n var self = this;\n var directives = {};\n\n self.config = config || {};\n\n self.registerDirective = function(type, template, link) {\n directives[type] = {\n template: template,\n link: link\n };\n return self;\n };\n\n self.registerModule = function(module) {\n module(self);\n return self;\n };\n\n self.link = function(element, type) {\n if (type === void 0) {\n type = element.getAttribute('type');\n }\n\n if (!directives.hasOwnProperty(type)) {\n throw new Error('Unknown directive type: ' + type);\n }\n\n var template = directives[type].template;\n var link = directives[type].link;\n\n element.innerHTML = '<div></div>';\n\n var directive = new Directive(element.children[0], template, self);\n link(directive, element);\n\n element.classList.add('muu-isolate');\n element.classList.add('muu-initialised');\n\n if (self.config.debug) {\n element.directive = directive;\n }\n\n return directive;\n };\n\n self.linkAll = function(root) {\n // NOTE: root may be a DOM Node or a directive\n var elements = root.querySelectorAll('muu:not(.muu-initialised)');\n return _.map(elements, function(element) {\n return self.link(element);\n });\n };\n };\n});\n\n"]1 -1 \ No newline at end of file-1 1 {"version":3,"file":"muu.min.js","sources":["muu-js-helpers.js","muu-dom-helpers.js","muu-template.js","muu-update-dom.js","muu-directive.js","muu.js"],"names":["define","_","objToString","value","Object","prototype","toString","call","isString","isArray","Array","isFunction","once","fn","result","called","apply","this","arguments","indexOf","array","i","length","forEach","map","results","push","filter","union","arrays","j","difference","a","b","flatten","o","item","concat","entityMap","&","<",">","\"","'","/","$","DELAY","escapeHtml","string","String","replace","s","createEvent","type","detail","CustomEvent","event","document","initCustomEvent","on","element","eventName","callback","addEventListener","removeEventListener","ready","_fn","readyState","u1","u2","window","isDescendant","desc","root","parentNode","destroy","unregister","intervalID","setInterval","clearInterval","getRadio","options","checked","setRadio","openTag","closeTag","parseVariableTemplate","template","content","slice","data","pairs","split","pair","v","key","trim","join","parseLoopTemplate","tag","afterTag","tagName","parseTemplate","inner","afterLoop","render","last","pop","loopName","openIndex","Error","beforeTag","tmp","closeIndex","lastIndexOf","loop","after","updateAttributes","target","source","targetAttrNames","attributes","name","sourceAttrNames","hasAttribute","substr","removeAttribute","getAttribute","setAttribute","updateDOM","nt","childNodes","ns","nodeType","nodeName","muuClasses","classList","cls","add","nodeValue","contains","removeChild","appendChild","replaceChild","Directive","registry","self","innerHTML","eventCallback","originalEvent","attrName","dispatchEvent","update","createElement","renderer","children","eventType","selector","querySelectorAll","updateEvent","subDirectives","linkAll","hits","isolations","isolated","isolation","querySelector","all","getModel","_default","model","setModel","muuTemplate","Registry","config","directives","registerDirective","link","registerModule","module","hasOwnProperty","directive","unlink","debug","elements"],"mappings":"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B,KAAArH,MAKA,OAAAiH;ALlIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC/KA,ADgLA;AC/KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACnKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC/KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AClFA,ADmFA;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AClLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sourcesContent":["/**\n * Minimal implementation of an underscore/lodash subset.\n * @module muu-js-helpers\n */\ndefine('muu-js-helpers',[],function() {\n \"use strict\";\n\n /** @lends module:muu-js-helpers */\n var _ = {};\n\n /**\n * @param {object} value\n * @return {string}\n */\n var objToString = function(value) {\n return Object.prototype.toString.call(value);\n };\n\n /**\n * @param {*} value\n * @return {boolean}\n */\n _.isString = function(value) {\n return typeof value === 'string' || objToString(value) === '[object String]';\n };\n\n /**\n * @function\n * @param {*} value\n * @return {boolean}\n */\n _.isArray = Array.isArray;\n\n /**\n * @param {*} value\n * @return {boolean}\n */\n _.isFunction = function(value) {\n return typeof value === 'function';\n };\n\n /**\n * @param {function} fn\n * @return {function}\n */\n _.once = function(fn) {\n var result;\n var called = false;\n\n return function() {\n if (!called) {\n result = fn.apply(this, arguments);\n called = true;\n }\n return result;\n };\n };\n\n /**\n * @param {array} array\n * @param {*} value\n * @return {number}\n */\n _.indexOf = function(array, value) {\n if ('indexOf' in array) {\n return array.indexOf(value);\n }\n\n for (var i = 0; i < array.length; i++) {\n if (array[i] === value) {\n return i;\n }\n }\n return -1;\n };\n\n /**\n * @param {array} array\n * @param {function} fn\n */\n _.forEach = function(array, fn) {\n if ('forEach' in array) {\n return array.forEach(fn);\n }\n\n for (var i = 0; i < array.length; i++) {\n fn(array[i]);\n }\n };\n\n /**\n * @param {array} array\n * @param {function} fn\n * @return {array}\n */\n _.map = function(array, fn) {\n if ('map' in array) {\n return array.map(fn);\n }\n\n var results = [];\n for (var i = 0; i < array.length; i++) {\n results.push(fn(array[i]));\n }\n return results;\n };\n\n /**\n * @param {array} array\n * @param {function} fn\n * @return {array}\n */\n _.filter = function(array, fn) {\n if ('filter' in array) {\n return array.filter(fn);\n }\n\n var results = [];\n for (var i = 0; i < array.length; i++) {\n if (fn(array[i])) {\n results.push(array[i]);\n }\n }\n return results;\n };\n\n /**\n * @param {array[]} arrays\n * @return {array}\n */\n _.union = function(arrays) {\n var results = [];\n for (var i = 0; i < arrays.length; i++) {\n for (var j = 0; j < arrays[i].length; j++) {\n if (_.indexOf(results, arrays[i][j]) === -1) {\n results.push(arrays[i][j]);\n }\n }\n }\n return results;\n };\n\n /**\n * @param {array} a\n * @param {array} b\n * @return {array}\n */\n _.difference = function(a, b) {\n var results = [];\n for (var i = 0; i < a.length; i++) {\n if (_.indexOf(b, a[i]) === -1) {\n results.push(a[i]);\n }\n }\n return results;\n };\n\n /**\n * @param {array} a\n * @return {array}\n */\n _.flatten = function(a) {\n var o = [];\n _.forEach(a, function(item) {\n if (_.isArray(item)) {\n o = o.concat(_.flatten(item));\n } else {\n o.push(item);\n }\n });\n return o;\n };\n\n return _;\n});\n\n","/**\n * DOM related helper functions\n * @module muu-dom-helpers\n */\ndefine('muu-dom-helpers',['muu-js-helpers'], function(_) {\n \"use strict\";\n\n var entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/'\n };\n\n /** @lends module:muu-dom-helpers */\n var $ = {};\n\n $.DELAY = 1000;\n\n /**\n * @param {string} string\n * @return {string} - escaped HTML\n */\n $.escapeHtml = function(string) {\n return String(string).replace(/[&<>\"'\\/]/g, function(s) {\n return entityMap[s];\n });\n };\n\n /**\n * Cross browser custom events.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Creating_and_triggering_events\n *\n * *Note*: IE does not seem to like it when you use existing event names\n * with this.\n *\n * @param {string} type\n * @param {*} detail\n * @return {DOMEvent}\n */\n $.createEvent = function(type, detail) {\n if (typeof CustomEvent === 'function') {\n return new CustomEvent(type, {\n detail: detail\n });\n } else {\n var event = document.createEvent('CustomEvent');\n event.initCustomEvent(type, false, true, detail);\n return event;\n }\n };\n\n /**\n * @param {DOMElement} element\n * @param {string} eventName\n * @param {function} callback\n * @return {Function()} An unregister function\n */\n $.on = function(element, eventName, callback) {\n element.addEventListener(eventName, callback, false);\n return function() {\n element.removeEventListener(eventName, callback, false);\n };\n };\n\n /**\n * @param {function} fn\n * @return {Function()} An unregister function\n */\n $.ready = function(fn) {\n var _fn = _.once(fn);\n if (document.readyState === 'complete') {\n _fn();\n return function() {};\n } else {\n var u1 = $.on(document, 'DOMContentLoaded', _fn);\n var u2 = $.on(window, 'load', _fn);\n return function() {\n u1();\n u2();\n };\n }\n };\n\n $.isDescendant = function(desc, root) {\n return !!desc && (desc === root || $.isDescendant(desc.parentNode, root));\n };\n\n /**\n * Execute a function when `element` is removed from the DOM.\n *\n * @param {DOMElement} element\n * @param {function} fn\n * @return {Function()} An unregister function\n */\n $.destroy = function(element, fn) {\n var unregister;\n\n if (false) {\n var observer = new MutationObserver(function() {\n if (!$.isDescendant(element, document)) {\n fn();\n unregister();\n }\n });\n\n observer.observe(document, {\n childList: true,\n subtree: true\n });\n\n unregister = _.once(function() {\n observer.disconnect();\n observer = undefined;\n });\n } else {\n var intervalID = setInterval(function() {\n if (!$.isDescendant(element, document)) {\n fn();\n unregister();\n }\n }, $.DELAY);\n\n unregister = function() {\n clearInterval(intervalID);\n };\n }\n\n return unregister;\n };\n\n /**\n * @param {DOMElement[]} options\n * @return {string}\n */\n $.getRadio = function(options) {\n for (var i = 0; i < options.length; i++) {\n if (options[i].checked) {\n return options[i].value;\n }\n }\n };\n\n /**\n * @param {DOMElement[]} options\n * @param {string} value\n */\n $.setRadio = function(options, value) {\n for (var i = 0; i < options.length; i++) {\n if (options[i].value === value) {\n options[i].checked = true;\n } else {\n options[i].checked = false;\n }\n }\n };\n\n return $;\n});\n\n","/**\n * minimal mustache insipred templating\n *\n * ## Variables\n *\n * Variables are created with a `{{name}}` tag. These are always escaped.\n *\n * ## Loops\n *\n * Loops render blocks of text a number of times, depending on the value of\n * the key in the current context.\n *\n * A loop begins with a pound and ends with a slash. That is, {{#person}}\n * begins a \"person\" section while {{/person}} ends it.\n *\n * If the value is an array, the block is repeated for each item in that array.\n * In any other case, the block is rendered with the outer scope, but only if\n * the value is truthy.\n *\n * ## Comments\n *\n * Comments begin with a bang and are ignored.\n *\n * ## Pairs\n *\n * Pairs look like JSON objects. The result is a space separated list of all\n * keys with truthy values.\n *\n * ```\n * muuTemplate('{{foo: var1, bar: var2, baz: var3}}', {\n * var1: true,\n * var2: false,\n * var3: true\n * }); // 'foo baz'\n * ```\n *\n * @module muu-template\n * @param {string} template\n * @param {object} data\n * @return {string}\n */\ndefine('muu-template',['muu-js-helpers', 'muu-dom-helpers'], function(_, $) {\n \"use strict\";\n\n var openTag = '{{';\n var closeTag = '}}';\n\n var parseVariableTemplate = function(template) {\n var content = template.slice(2, -2);\n\n if (template.indexOf(':') === -1) {\n return function(data) {\n return $.escapeHtml(data[content] || '');\n };\n } else {\n var pairs = content.split(',').map(function(pair) {\n var v = pair.split(':');\n var key = v[0].trim();\n var value = v.slice(1).join(':').trim();\n return [key, value];\n });\n\n return function(data) {\n var results = [];\n\n for (var i = 0; i < pairs.length; i++) {\n var key = pairs[i][0];\n var value = pairs[i][1];\n\n if (data[value]) {\n results.push(key);\n }\n }\n\n return $.escapeHtml(results.join(' '));\n };\n }\n };\n\n var parseLoopTemplate = function(tag, afterTag) {\n var tagName = tag.slice(3, -2);\n\n var v = parseTemplate(afterTag, tagName);\n var inner = v[0];\n var afterLoop = v[1];\n\n var render = function(data) {\n if (_.isArray(data[tagName])) {\n var result = '';\n for (var i = 0; i < data[tagName].length; i++) {\n result += inner(data[tagName][i]);\n }\n return result;\n } else if (data[tagName]) {\n return inner(data);\n } else {\n return '';\n }\n };\n\n return [render, afterLoop];\n };\n\n var concat = function(a) {\n var last = a.pop();\n\n if (_.isArray(last)) {\n a.push(last[0]);\n return [concat(a), last[1]];\n } else {\n a.push(last);\n\n return function(data) {\n return a.map(function(item) {\n if (_.isString(item)) {\n return item;\n } else if (_.isFunction(item)) {\n return item(data);\n }\n }).join('');\n };\n }\n };\n\n var parseTemplate = function(template, loopName) {\n var openIndex = template.indexOf(openTag);\n if (openIndex === -1) {\n if (loopName === void 0) {\n return function() {\n return template;\n };\n } else {\n throw new Error('unclosed loop: ' + loopName);\n }\n } else {\n var beforeTag = template.slice(0, openIndex);\n var tmp = template.slice(openIndex);\n\n var closeIndex = tmp.indexOf(closeTag) + 2;\n if (closeIndex === 1) {\n throw new Error('unclosed tag: ' + tmp);\n }\n var tag = tmp.slice(0, closeIndex);\n var afterTag = tmp.slice(closeIndex);\n\n if (tag.lastIndexOf('{{#', 0) === 0) {\n var v = parseLoopTemplate(tag, afterTag);\n var loop = v[0];\n var after = parseTemplate(v[1], loopName);\n return concat([beforeTag, loop, after]);\n } else if (tag.lastIndexOf('{{!', 0) === 0) {\n var after = parseTemplate(afterTag, loopName);\n return concat([beforeTag, after]);\n } else if (tag.lastIndexOf('{{/', 0) === 0) {\n if (tag.slice(3, -2) === loopName) {\n var render = function() {\n return beforeTag;\n };\n return [render, afterTag];\n } else {\n throw new Error('unexpected closing loop: ' + tag);\n }\n } else {\n var render = parseVariableTemplate(tag);\n var after = parseTemplate(afterTag, loopName);\n return concat([beforeTag, render, after]);\n }\n }\n };\n\n return function(template, data) {\n return parseTemplate(template)(data);\n };\n});\n\n","/**\n * Recreate DOM `source` in `target` by making only small adjustments.\n *\n * *The following section explains details about the current implementation.\n * These are likely to change in the future.*\n *\n * The algorithms is relatively simple. It just iterates through all top level\n * nodes. If a node has a different `nodeType` (e.g. text or element) or a\n * different `nodeName` (e.g. div or ul) it is replaced completely and the\n * algorithm proceeds with the node's children recursively. Otherwise, only\n * the nodes's attributes are updated.\n *\n * Note that non-attribute properties (e.g. value) are lost in the first case\n * and preserved in the second.\n *\n * If the algorithm encounters an element with the class `muu-isolate` it does\n * not recurse into its children. This way, you can protect dynamically\n * generated content from being overwritten.\n *\n * @module muu-update-dom\n * @param {DOMElement} target\n * @param {DOMElement} source\n */\ndefine('muu-update-dom',['muu-js-helpers'], function(_) {\n \"use strict\";\n\n var updateAttributes = function(target, source) {\n var targetAttrNames = _.map(target.attributes, function(item) {\n return item.name;\n });\n var sourceAttrNames = _.map(source.attributes, function(item) {\n return item.name;\n });\n\n _.forEach(targetAttrNames, function(name) {\n // NOTE: ie8.js creates some attribute\n if (!source.hasAttribute(name) && name.substr(0, 7) !== '__IE8__') {\n target.removeAttribute(name);\n }\n });\n _.forEach(sourceAttrNames, function(name) {\n if (target.getAttribute(name) !== source.getAttribute(name)) {\n target.setAttribute(name, source.getAttribute(name));\n }\n });\n };\n\n var updateDOM = function(target, source) {\n var nt = target.childNodes.length;\n var ns = source.childNodes.length;\n\n if (target.nodeType === source.nodeType && target.nodeName === source.nodeName && target.type === source.type) {\n if (target.nodeType === 1) {\n var muuClasses = _.filter(target.classList, function(cls) {\n return cls.lastIndexOf('muu-', 0) === 0;\n });\n updateAttributes(target, source);\n _.forEach(muuClasses, function(cls) {\n target.classList.add(cls);\n });\n } else if (target.nodeType === 3) {\n target.nodeValue = source.nodeValue;\n }\n\n if (target.nodeType !== 1 || !target.classList.contains('muu-isolate')) {\n for (var i = ns; i < nt; i++) {\n target.removeChild(target.childNodes[ns]);\n }\n for (i = nt; i < ns; i++) {\n target.appendChild(source.childNodes[nt]);\n }\n for (i = 0; i < nt && i < ns; i++) {\n updateDOM(target.childNodes[i], source.childNodes[i]);\n }\n }\n } else {\n target.parentNode.replaceChild(source, target);\n }\n };\n\n return updateDOM;\n});\n\n","/**\n * Exports the {@link Directive} class.\n * @module muu-directive\n */\ndefine('muu-directive',['muu-dom-helpers', 'muu-js-helpers', 'muu-update-dom'], function($, _, updateDOM) {\n \"use strict\";\n\n /**\n * A directive is linked to a DOMElement and manages the DOM tree below\n * that element (excluding any isolated subtrees, e.g. those managed by\n * subdirectives).\n *\n * It provides a set of methods to interact with the managed part of the\n * DOM. This is separated into three distinct parts:\n *\n * - You can push data to the DOM using the {@link Directive#update}\n * method. The DOM will than be updated using the template that was\n * provided at construction.\n * - You can get data from the DOM using the {@link Directive#getModel}\n * method. This is however restricted to form field by design.\n * - You can react to DOM events by specifying an alias for them. In the\n * template, you might for example add the attribute\n * `data-onclick=\"custom\"` to an element. When there is `click` event on\n * that element, a `muu-custom` event will be triggered on the\n * directive's root element.\n *\n * Directives are typically not created directly but via {@link\n * Registry#link}.\n *\n * @constructs Directive\n * @param {DOMElement} root\n * @param {string} template\n * @param {Muu} registry\n */\n var Directive = function(root, template, registry) {\n var self = this;\n\n root.innerHTML = '<div></div>';\n\n var eventCallback = function(originalEvent) {\n var attrName = 'data-on' + originalEvent.type;\n if (originalEvent.target.hasAttribute(attrName)) {\n var eventName = originalEvent.target.getAttribute(attrName);\n var event = $.createEvent('muu-' + eventName, originalEvent);\n root.dispatchEvent(event);\n }\n };\n\n /**\n * Rerender `template` with `data` and push the changes to the DOM.\n *\n * See {@link module:muu-update-dom} for details. The templating system\n * can be defined in the {@link Registry}.\n *\n * @param {Object.<string, *>} data\n */\n this.update = function(data) {\n var tmp = document.createElement('div');\n tmp.innerHTML = registry.renderer(template, data);\n\n updateDOM(root.children[0], tmp);\n\n _.forEach(['keydown', 'keyup', 'click', 'change', 'search'], function(eventType) {\n var selector = '[data-on' + eventType + ']';\n _.forEach(self.querySelectorAll(selector), function(element) {\n element.addEventListener(eventType, eventCallback, false);\n });\n });\n\n var updateEvent = $.createEvent('muu-parent-update');\n var subDirectives = this.querySelectorAll('muu.muu-initialised');\n _.forEach(subDirectives, function(element) {\n element.dispatchEvent(updateEvent);\n });\n\n registry.linkAll(self);\n };\n\n /**\n * A variant of `querySelectorAll` that returns only elements from\n * the managed part of the DOM.\n *\n * @private\n * @param {string} selector\n * @return {DOMElement[]} All child elements that match the given\n * selector and are not isolated.\n */\n this.querySelectorAll = function(selector) {\n var hits = root.querySelectorAll(selector);\n\n // NOTE: querySelectorAll returns all elements in the tree that\n // match the given selector. findAll does the same with *relative\n // selectors* but does not seem to be available yet.\n var isolations = root.querySelectorAll('.muu-isolate');\n var isolated = _.union(_.map(isolations, function(isolation) {\n return isolation.querySelectorAll(selector);\n }));\n\n return _.difference(hits, isolated);\n };\n\n /**\n * A variant of `querySelector` that returns only elements from the\n * managed part of the DOM.\n *\n * @private\n * @param {String} selector\n * @return {DOMElement} First child element that matches the given\n * selector and is not isolated.\n */\n this.querySelector = function(selector) {\n var all = self.querySelectorAll(selector);\n if (all.length > 0) {\n return all[0];\n }\n };\n\n /**\n * Get all model data as a flat object.\n *\n * @return {Object.<string, string|number|boolean>}\n *//**\n * Get the value of a form input by name.\n *\n * In case of a checkbox, returns `boolean`.\n * In case of radioboxes, returns the value of the selected box.\n *\n * @param {string} name\n * @param {*} [_default]\n * @return {string|number|boolean|*}\n */\n this.getModel = function(name, _default) {\n if (name === void 0) {\n var model = {};\n _.forEach(self.querySelectorAll('[name]'), function(element) {\n model[element.name] = self.getModel(element.name);\n });\n return model;\n } else {\n var element = self.querySelector('[name=' + name + ']');\n if (element === void 0) {\n return _default;\n } else if (element.type === 'checkbox') {\n return element.checked;\n } else if (element.type === 'radio') {\n var options = self.querySelectorAll('[name=' + name + ']');\n return $.getRadio(options) || _default;\n } else {\n return element.value;\n }\n }\n };\n\n /**\n * Set the value of a form input by name.\n *\n * In case of a checkbox, sets `element.checked`.\n * In case of radioboxes, selects the box with matching value.\n *\n * @param {string} name\n * @param {string|number|boolean} value\n */\n this.setModel = function(name, value) {\n var element = self.querySelector('[name=' + name + ']');\n if (element.type === 'checkbox') {\n element.checked = value;\n } else if (element.type === 'radio') {\n var options = self.querySelectorAll('[name=' + name + ']');\n $.setRadio(options, value);\n } else {\n element.value = value;\n }\n };\n };\n\n return Directive;\n});\n\n","/**\n * Exports the {@link Registry} class.\n * @module muu\n */\ndefine('muu',['muu-template', 'muu-directive', 'muu-js-helpers', 'muu-dom-helpers'], function(muuTemplate, Directive, _, $) {\n \"use strict\";\n\n /**\n * @constructs Registry\n * @param {object} config The config object may have following properties:\n *\n * - **debug** - `{boolean}` - Enable debug mode. In debug mode,\n * directive objects are available as properties from the DOM as\n * `element.directive`.\n * - **renderer** - `{Function(string, object)}` - The template renderer\n * to be used. Defaults to {@link module:muu-template}.\n */\n var Registry = function(config) {\n var self = this;\n var directives = {};\n\n this.config = config || {};\n this.renderer = self.config.renderer || muuTemplate;\n\n /**\n * Register a new type of {@link Directive}\n *\n * @param {string} type\n * @param {string} template\n * @param {Function(Directive, DOMElement): function} link The link\n * function is called with an instance of {@link Directive} and a\n * DOMElement when {@link Registry#link} is executed.\n *\n * It is the only place where you can access a directive and\n * therefore the place where you define its behavior.\n *\n * This typically means to make an initial call to {@link\n * Directive#update} and to add some event listeners. You should also\n * return an *unlink* function that clears all external references in\n * order to avoid memory leaks.\n * @return {Registry} this\n */\n this.registerDirective = function(type, template, link) {\n directives[type] = {\n template: template,\n link: link\n };\n return self;\n };\n\n /**\n * Shortcut for wrapping calls to {@link Registry} in a function.\n *\n * This can be esepcially helpful if that function is defined in a\n * different module.\n *\n * ```.js\n * define('foobar', [], function() {\n * return function(registry) {\n * registry\n * .registerDirective('foo', '...', function() {...})\n * .registerDirective('bar', '...', function() {...});\n * };\n * });\n *\n * require(['foobar'], function(foobar) {\n * var registry = new Registry();\n * registry.registerModule(foobar);\n * });\n * ```\n *\n * @param {Function(Registry)}\n * @return {Registry} this\n */\n this.registerModule = function(module) {\n module(self);\n return self;\n };\n\n /**\n * Create and initialise a {@link Directive} for `element`.\n *\n * @param {DOMElement} element\n * @param {string} type\n * @return {Directive}\n */\n this.link = function(element, type) {\n if (type === void 0) {\n type = element.getAttribute('type');\n }\n\n if (!directives.hasOwnProperty(type)) {\n throw new Error('Unknown directive type: ' + type);\n }\n\n var template = directives[type].template;\n var link = directives[type].link;\n\n var directive = new Directive(element, template, self);\n var unlink = link(directive, element);\n element.classList.add('muu-isolate');\n element.classList.add('muu-initialised');\n\n if (self.config.debug) {\n element.directive = directive;\n }\n\n if (unlink !== void 0) {\n $.destroy(element, unlink);\n }\n\n return directive;\n };\n\n /**\n * Link all directives that can be found inside `root`.\n *\n * @param {DOMElement} root\n * @return {Directive[]}\n */\n this.linkAll = function(root) {\n // NOTE: root may be a DOM Node or a directive\n var elements = _.filter(root.querySelectorAll('muu'), function(element) {\n return !element.classList.contains('muu-initialised');\n });\n return _.map(elements, function(element) {\n return self.link(element);\n });\n };\n };\n\n return Registry;\n});\n\n"] -1 1 \ No newline at end of file