- commit
- 1bb712422c712541bb4588eb7e057f930c565430
- parent
- 8d6419ff97803e99c18efd4bd9581b0051544983
- Author
- Tobias Bengfort <tobias.bengfort@gmx.net>
- Date
- 2015-08-30 20:46
build
Diffstat
| M | dist/muu-core.js | 30 | +++++++++++++++++++----------- |
| M | dist/muu-core.min.js | 21 | +++++++++++---------- |
| M | dist/muu.js | 30 | +++++++++++++++++++----------- |
| M | dist/muu.min.js | 38 | +++++++++++++++++++------------------- |
4 files changed, 68 insertions, 51 deletions
diff --git a/dist/muu-core.js b/dist/muu-core.js
@@ -85,10 +85,12 @@ 85 85 root.innerHTML = ''; 86 86 87 87 var eventCallback = function(originalEvent) { -1 88 var element = originalEvent.currentTarget; 88 89 var attrName = 'data-on' + originalEvent.type;89 -1 if (originalEvent.target.hasAttribute(attrName)) {90 -1 var eventName = originalEvent.target.getAttribute(attrName);91 -1 var event = $.createEvent('muu-' + eventName, originalEvent);-1 90 if (element.hasAttribute(attrName)) { -1 91 var eventName = element.getAttribute(attrName); -1 92 var event = $.createEvent( -1 93 'muu-' + eventName, undefined, undefined, originalEvent); 92 94 root.dispatchEvent(event); 93 95 } 94 96 }; @@ -190,9 +192,11 @@ 190 192 var element = self.querySelector('[name=' + name + ']'); 191 193 if (element === undefined) { 192 194 return _default;193 -1 } else if (element.type === 'checkbox') {-1 195 } else if (element.getAttribute('type') === 'number') { -1 196 return parseFloat(element.value, 10); -1 197 } else if (element.getAttribute('type') === 'checkbox') { 194 198 return element.checked;195 -1 } else if (element.type === 'radio') {-1 199 } else if (element.getAttribute('type') === 'radio') { 196 200 var options = self.querySelectorAll('[name=' + name + ']'); 197 201 return $.getRadio(options) || _default; 198 202 } else { @@ -212,9 +216,9 @@ 212 216 */ 213 217 this.setModel = function(name, value) { 214 218 var element = self.querySelector('[name=' + name + ']');215 -1 if (element.type === 'checkbox') {-1 219 if (element.getAttribute('type') === 'checkbox') { 216 220 element.checked = value;217 -1 } else if (element.type === 'radio') {-1 221 } else if (element.getAttribute('type') === 'radio') { 218 222 var options = self.querySelectorAll('[name=' + name + ']'); 219 223 $.setRadio(options, value); 220 224 } else { @@ -264,19 +268,23 @@ 264 268 * with this. 265 269 * 266 270 * @param {string} type267 -1 * @param {*} detail-1 271 * @param {boolean} [bubbles] -1 272 * @param {boolean} [cancelable] -1 273 * @param {*} [detail] 268 274 * @return {Event} 269 275 * @see https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Creating_and_triggering_events 270 276 * @nosideeffects 271 277 */272 -1 $.createEvent = function(type, detail) {-1 278 $.createEvent = function(type, bubbles, cancelable, detail) { 273 279 if (typeof CustomEvent === 'function') { 274 280 return new CustomEvent(type, {275 -1 detail: detail-1 281 detail: detail, -1 282 bubbles: bubbles, -1 283 cancelable: cancelable 276 284 }); 277 285 } else { 278 286 var event = document.createEvent('CustomEvent');279 -1 event.initCustomEvent(type, false, true, detail);-1 287 event.initCustomEvent(type, bubbles, cancelable, detail); 280 288 return event; 281 289 } 282 290 };
diff --git a/dist/muu-core.min.js b/dist/muu-core.min.js
@@ -1,10 +1,11 @@1 -1 (function(q,n,p){(function(l){"function"===typeof define&&define.amd?define("muu",["lodash"],l):q.muu=l(q._)})(function(l){var m={};m["muu-js-helpers"]={instance:l};var t=function(e,k){for(var g=[],a=0;a<e.length;a++)g.push(k(e[a]));return g};l=function(e,k,g){m[e]={deps:k,factory:g}};var r=function(e){if(!m[e])return p;m[e].instance||(m[e].instance=m[e].factory.apply(p,t(m[e].deps,r)));return m[e].instance};l("muu-directive",["muu-dom-helpers","muu-js-helpers","muu-update-dom"],function(e,k,g){return function(a,2 -1 b,d){var h=this;a.innerHTML="";var c=function(f){var c="data-on"+f.type;f.target.hasAttribute(c)&&(c=f.target.getAttribute(c),f=e.createEvent("muu-"+c,f),a.dispatchEvent(f))};this.update=function(f){var s=n.createElement("div");s.innerHTML=d.renderer(b,f);g(a,s);k.forEach(["keydown","keyup","click","change","search"],function(a){k.forEach(h.querySelectorAll("[data-on"+a+"]"),function(f){f.addEventListener(a,c,!1)})});var u=e.createEvent("muu-parent-update");f=this.querySelectorAll("muu.muu-initialised");3 -1 k.forEach(f,function(a){a.dispatchEvent(u)});d.linkAll(h)};this.querySelectorAll=function(f){var c=a.querySelectorAll(f),d=a.querySelectorAll(".muu-isolate"),d=k.union(k.map(d,function(a){return a.querySelectorAll(f)}));return k.difference(c,d)};this.querySelector=function(a){a=h.querySelectorAll(a);if(0<a.length)return a[0]};this.getModel=function(a,c){if(a===p){var d={};k.forEach(h.querySelectorAll("[name]"),function(a){d[a.name]=h.getModel(a.name)});return d}var b=h.querySelector("[name="+a+"]");4 -1 return b===p?c:"checkbox"===b.type?b.checked:"radio"===b.type?(b=h.querySelectorAll("[name="+a+"]"),e.getRadio(b)||c):b.value};this.setModel=function(a,c){var b=h.querySelector("[name="+a+"]");"checkbox"===b.type?b.checked=c:"radio"===b.type?(b=h.querySelectorAll("[name="+a+"]"),e.setRadio(b,c)):b.value=c}}});l("muu-dom-helpers",["muu-js-helpers"],function(e){var k={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"},g={DELAY:1E3,escapeHtml:function(a){return String(a).replace(/[&<>"'\/]/g,5 -1 function(a){return k[a]})},createEvent:function(a,b){if("function"===typeof CustomEvent)return new CustomEvent(a,{detail:b});var d=n.createEvent("CustomEvent");d.initCustomEvent(a,!1,!0,b);return d},on:function(a,b,d){a.addEventListener(b,d,!1);return function(){a.removeEventListener(b,d,!1)}},ready:function(a){a=e.once(a);if("complete"===n.readyState)return a(),function(){};var b=g.on(n,"DOMContentLoaded",a),d=g.on(q,"load",a);return function(){b();d()}},isDescendant:function(a,b){return!!a&&(a===6 -1 b||g.isDescendant(a.parentNode,b))},destroy:function(a,b){var d;if(q.MutationObserver){var h=new MutationObserver(function(){g.isDescendant(a,n)||(b(),d())});h.observe(n,{childList:!0,subtree:!0});d=e.once(function(){h.disconnect();h=p})}else{var c=setInterval(function(){g.isDescendant(a,n)||(b(),d())},g.DELAY);d=function(){clearInterval(c)}}return d},getRadio:function(a){for(var b=0;b<a.length;b++)if(a[b].checked)return a[b].value},setRadio:function(a,b){for(var d=0;d<a.length;d++)a[d].checked=a[d].value===7 -1 b?!0:!1}};return g});l("muu",["muu-registry","muu-dom-helpers","muu-location"],function(e,k,g){var a={};a.Registry=e;a.$=k;a.$location=g;return a});l("muu-registry",["muu-template","muu-directive","muu-js-helpers","muu-dom-helpers"],function(e,k,g,a){return function(b){var d=this,h={};this.config=b||{};this.renderer=d.config.renderer||e;this.registerDirective=function(a,b,e){h[a]={template:b,link:e};return d};this.registerModule=function(a){a(d);return d};this.link=function(c,b){b===p&&(b=c.getAttribute("type"));8 -1 if(!h.hasOwnProperty(b))throw Error("Unknown directive type: "+b);var e=h[b].link,g=new k(c,h[b].template,d),e=e(g,c);c.classList.add("muu-isolate");c.classList.add("muu-initialised");d.config.debug&&(c.directive=g);e!==p&&a.destroy(c,e);return g};this.linkAll=function(a){a=g.filter(a.querySelectorAll("muu"),function(a){return!a.classList.contains("muu-initialised")});return g.map(a,function(a){return d.link(a)})}}});l("muu-update-dom",["muu-js-helpers"],function(e){var k=function(a,b){var d=e.map(a.attributes,9 -1 function(a){return a.name}),g=e.map(b.attributes,function(a){return a.name});e.forEach(d,function(c){b.hasAttribute(c)||"__IE8__"===c.substr(0,7)||a.removeAttribute(c)});e.forEach(g,function(c){a.getAttribute(c)!==b.getAttribute(c)&&a.setAttribute(c,b.getAttribute(c))})},g=function(a,b){for(var d=a.childNodes.length,h=b.childNodes.length,c=h;c<d;c++)a.removeChild(a.childNodes[h]);for(c=d;c<h;c++)a.appendChild(b.childNodes[d]);for(c=0;c<d&&c<h;c++){var f=a.childNodes[c],l=b.childNodes[c];if(f.nodeType===10 -1 l.nodeType&&f.nodeName===l.nodeName&&f.type===l.type){if(1===f.nodeType){var m=e.filter(f.classList,function(a){return 0===a.lastIndexOf("muu-",0)});k(f,l);e.forEach(m,function(a){f.classList.add(a)})}else 3===f.nodeType&&(f.nodeValue=l.nodeValue);3===f.nodeType||f.classList.contains("muu-isolate")||g(f,l)}else f.parentNode.replaceChild(l,f)}};return g});return r("muu")})})(window,document,void 0);-1 1 (function(q,p,m){(function(l){"function"===typeof define&&define.amd?define("muu",["lodash"],l):q.muu=l(q._)})(function(l){var n={};n["muu-js-helpers"]={instance:l};var t=function(d,k){for(var g=[],a=0;a<d.length;a++)g.push(k(d[a]));return g};l=function(d,k,g){n[d]={deps:k,factory:g}};var r=function(d){if(!n[d])return m;n[d].instance||(n[d].instance=n[d].factory.apply(m,t(n[d].deps,r)));return n[d].instance};l("muu-directive",["muu-dom-helpers","muu-js-helpers","muu-update-dom"],function(d,k,g){return function(a, -1 2 c,b){var h=this;a.innerHTML="";var e=function(f){var e=f.currentTarget,b="data-on"+f.type;e.hasAttribute(b)&&(e=e.getAttribute(b),f=d.createEvent("muu-"+e,m,m,f),a.dispatchEvent(f))};this.update=function(f){var s=p.createElement("div");s.innerHTML=b.renderer(c,f);g(a,s);k.forEach(["keydown","keyup","click","change","search"],function(a){k.forEach(h.querySelectorAll("[data-on"+a+"]"),function(f){f.addEventListener(a,e,!1)})});var u=d.createEvent("muu-parent-update");f=this.querySelectorAll("muu.muu-initialised"); -1 3 k.forEach(f,function(a){a.dispatchEvent(u)});b.linkAll(h)};this.querySelectorAll=function(f){var e=a.querySelectorAll(f),b=a.querySelectorAll(".muu-isolate"),b=k.union(k.map(b,function(a){return a.querySelectorAll(f)}));return k.difference(e,b)};this.querySelector=function(a){a=h.querySelectorAll(a);if(0<a.length)return a[0]};this.getModel=function(a,e){if(a===m){var b={};k.forEach(h.querySelectorAll("[name]"),function(a){b[a.name]=h.getModel(a.name)});return b}var c=h.querySelector("[name="+a+"]"); -1 4 return c===m?e:"number"===c.getAttribute("type")?parseFloat(c.value,10):"checkbox"===c.getAttribute("type")?c.checked:"radio"===c.getAttribute("type")?(c=h.querySelectorAll("[name="+a+"]"),d.getRadio(c)||e):c.value};this.setModel=function(a,e){var b=h.querySelector("[name="+a+"]");"checkbox"===b.getAttribute("type")?b.checked=e:"radio"===b.getAttribute("type")?(b=h.querySelectorAll("[name="+a+"]"),d.setRadio(b,e)):b.value=e}}});l("muu-dom-helpers",["muu-js-helpers"],function(d){var k={"&":"&", -1 5 "<":"<",">":">",'"':""","'":"'","/":"/"},g={DELAY:1E3,escapeHtml:function(a){return String(a).replace(/[&<>"'\/]/g,function(a){return k[a]})},createEvent:function(a,c,b,d){if("function"===typeof CustomEvent)return new CustomEvent(a,{detail:d,bubbles:c,cancelable:b});var e=p.createEvent("CustomEvent");e.initCustomEvent(a,c,b,d);return e},on:function(a,c,b){a.addEventListener(c,b,!1);return function(){a.removeEventListener(c,b,!1)}},ready:function(a){a=d.once(a);if("complete"=== -1 6 p.readyState)return a(),function(){};var c=g.on(p,"DOMContentLoaded",a),b=g.on(q,"load",a);return function(){c();b()}},isDescendant:function(a,c){return!!a&&(a===c||g.isDescendant(a.parentNode,c))},destroy:function(a,c){var b;if(q.MutationObserver){var h=new MutationObserver(function(){g.isDescendant(a,p)||(c(),b())});h.observe(p,{childList:!0,subtree:!0});b=d.once(function(){h.disconnect();h=m})}else{var e=setInterval(function(){g.isDescendant(a,p)||(c(),b())},g.DELAY);b=function(){clearInterval(e)}}return b}, -1 7 getRadio:function(a){for(var c=0;c<a.length;c++)if(a[c].checked)return a[c].value},setRadio:function(a,c){for(var b=0;b<a.length;b++)a[b].checked=a[b].value===c?!0:!1}};return g});l("muu",["muu-registry","muu-dom-helpers","muu-location"],function(d,k,g){var a={};a.Registry=d;a.$=k;a.$location=g;return a});l("muu-registry",["muu-template","muu-directive","muu-js-helpers","muu-dom-helpers"],function(d,k,g,a){return function(c){var b=this,h={};this.config=c||{};this.renderer=b.config.renderer||d;this.registerDirective= -1 8 function(a,c,d){h[a]={template:c,link:d};return b};this.registerModule=function(a){a(b);return b};this.link=function(e,c){c===m&&(c=e.getAttribute("type"));if(!h.hasOwnProperty(c))throw Error("Unknown directive type: "+c);var d=h[c].link,g=new k(e,h[c].template,b),d=d(g,e);e.classList.add("muu-isolate");e.classList.add("muu-initialised");b.config.debug&&(e.directive=g);d!==m&&a.destroy(e,d);return g};this.linkAll=function(a){a=g.filter(a.querySelectorAll("muu"),function(a){return!a.classList.contains("muu-initialised")}); -1 9 return g.map(a,function(a){return b.link(a)})}}});l("muu-update-dom",["muu-js-helpers"],function(d){var k=function(a,c){var b=d.map(a.attributes,function(a){return a.name}),g=d.map(c.attributes,function(a){return a.name});d.forEach(b,function(b){c.hasAttribute(b)||"__IE8__"===b.substr(0,7)||a.removeAttribute(b)});d.forEach(g,function(b){a.getAttribute(b)!==c.getAttribute(b)&&a.setAttribute(b,c.getAttribute(b))})},g=function(a,c){for(var b=a.childNodes.length,h=c.childNodes.length,e=h;e<b;e++)a.removeChild(a.childNodes[h]); -1 10 for(e=b;e<h;e++)a.appendChild(c.childNodes[b]);for(e=0;e<b&&e<h;e++){var f=a.childNodes[e],l=c.childNodes[e];if(f.nodeType===l.nodeType&&f.nodeName===l.nodeName&&f.type===l.type){if(1===f.nodeType){var m=d.filter(f.classList,function(a){return 0===a.lastIndexOf("muu-",0)});k(f,l);d.forEach(m,function(a){f.classList.add(a)})}else 3===f.nodeType&&(f.nodeValue=l.nodeValue);3===f.nodeType||f.classList.contains("muu-isolate")||g(f,l)}else f.parentNode.replaceChild(l,f)}};return g});return r("muu")})})(window, -1 11 document,void 0);
diff --git a/dist/muu.js b/dist/muu.js
@@ -85,10 +85,12 @@ 85 85 root.innerHTML = ''; 86 86 87 87 var eventCallback = function(originalEvent) { -1 88 var element = originalEvent.currentTarget; 88 89 var attrName = 'data-on' + originalEvent.type;89 -1 if (originalEvent.target.hasAttribute(attrName)) {90 -1 var eventName = originalEvent.target.getAttribute(attrName);91 -1 var event = $.createEvent('muu-' + eventName, originalEvent);-1 90 if (element.hasAttribute(attrName)) { -1 91 var eventName = element.getAttribute(attrName); -1 92 var event = $.createEvent( -1 93 'muu-' + eventName, undefined, undefined, originalEvent); 92 94 root.dispatchEvent(event); 93 95 } 94 96 }; @@ -190,9 +192,11 @@ 190 192 var element = self.querySelector('[name=' + name + ']'); 191 193 if (element === undefined) { 192 194 return _default;193 -1 } else if (element.type === 'checkbox') {-1 195 } else if (element.getAttribute('type') === 'number') { -1 196 return parseFloat(element.value, 10); -1 197 } else if (element.getAttribute('type') === 'checkbox') { 194 198 return element.checked;195 -1 } else if (element.type === 'radio') {-1 199 } else if (element.getAttribute('type') === 'radio') { 196 200 var options = self.querySelectorAll('[name=' + name + ']'); 197 201 return $.getRadio(options) || _default; 198 202 } else { @@ -212,9 +216,9 @@ 212 216 */ 213 217 this.setModel = function(name, value) { 214 218 var element = self.querySelector('[name=' + name + ']');215 -1 if (element.type === 'checkbox') {-1 219 if (element.getAttribute('type') === 'checkbox') { 216 220 element.checked = value;217 -1 } else if (element.type === 'radio') {-1 221 } else if (element.getAttribute('type') === 'radio') { 218 222 var options = self.querySelectorAll('[name=' + name + ']'); 219 223 $.setRadio(options, value); 220 224 } else { @@ -264,19 +268,23 @@ 264 268 * with this. 265 269 * 266 270 * @param {string} type267 -1 * @param {*} detail-1 271 * @param {boolean} [bubbles] -1 272 * @param {boolean} [cancelable] -1 273 * @param {*} [detail] 268 274 * @return {Event} 269 275 * @see https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Creating_and_triggering_events 270 276 * @nosideeffects 271 277 */272 -1 $.createEvent = function(type, detail) {-1 278 $.createEvent = function(type, bubbles, cancelable, detail) { 273 279 if (typeof CustomEvent === 'function') { 274 280 return new CustomEvent(type, {275 -1 detail: detail-1 281 detail: detail, -1 282 bubbles: bubbles, -1 283 cancelable: cancelable 276 284 }); 277 285 } else { 278 286 var event = document.createEvent('CustomEvent');279 -1 event.initCustomEvent(type, false, true, detail);-1 287 event.initCustomEvent(type, bubbles, cancelable, detail); 280 288 return event; 281 289 } 282 290 };
diff --git a/dist/muu.min.js b/dist/muu.min.js
@@ -1,19 +1,19 @@1 -1 (function(r,p,h){(function(h){"function"===typeof define&&define.amd?define("muu",[],h):r.muu=h(r._)})(function(m){var n={};n["muu-js-helpers"]={instance:m};var v=function(c,b){for(var e=[],a=0;a<c.length;a++)e.push(b(c[a]));return e};m=function(c,b,e){n[c]={deps:b,factory:e}};var t=function(c){if(!n[c])return h;n[c].instance||(n[c].instance=n[c].factory.apply(h,v(n[c].deps,t)));return n[c].instance};m("muu-directive",["muu-dom-helpers","muu-js-helpers","muu-update-dom"],function(c,b,e){return function(a,2 -1 d,g){var f=this;a.innerHTML="";var l=function(d){var b="data-on"+d.type;d.target.hasAttribute(b)&&(b=d.target.getAttribute(b),d=c.createEvent("muu-"+b,d),a.dispatchEvent(d))};this.update=function(k){var u=p.createElement("div");u.innerHTML=g.renderer(d,k);e(a,u);b.forEach(["keydown","keyup","click","change","search"],function(a){b.forEach(f.querySelectorAll("[data-on"+a+"]"),function(d){d.addEventListener(a,l,!1)})});var s=c.createEvent("muu-parent-update");k=this.querySelectorAll("muu.muu-initialised");3 -1 b.forEach(k,function(a){a.dispatchEvent(s)});g.linkAll(f)};this.querySelectorAll=function(d){var l=a.querySelectorAll(d),c=a.querySelectorAll(".muu-isolate"),c=b.union(b.map(c,function(a){return a.querySelectorAll(d)}));return b.difference(l,c)};this.querySelector=function(a){a=f.querySelectorAll(a);if(0<a.length)return a[0]};this.getModel=function(a,d){if(a===h){var l={};b.forEach(f.querySelectorAll("[name]"),function(a){l[a.name]=f.getModel(a.name)});return l}var e=f.querySelector("[name="+a+"]");4 -1 return e===h?d:"checkbox"===e.type?e.checked:"radio"===e.type?(e=f.querySelectorAll("[name="+a+"]"),c.getRadio(e)||d):e.value};this.setModel=function(a,d){var b=f.querySelector("[name="+a+"]");"checkbox"===b.type?b.checked=d:"radio"===b.type?(b=f.querySelectorAll("[name="+a+"]"),c.setRadio(b,d)):b.value=d}}});m("muu-dom-helpers",["muu-js-helpers"],function(c){var b={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"},e={DELAY:1E3,escapeHtml:function(a){return String(a).replace(/[&<>"'\/]/g,5 -1 function(a){return b[a]})},createEvent:function(a,d){if("function"===typeof CustomEvent)return new CustomEvent(a,{detail:d});var b=p.createEvent("CustomEvent");b.initCustomEvent(a,!1,!0,d);return b},on:function(a,d,b){a.addEventListener(d,b,!1);return function(){a.removeEventListener(d,b,!1)}},ready:function(a){a=c.once(a);if("complete"===p.readyState)return a(),function(){};var d=e.on(p,"DOMContentLoaded",a),b=e.on(r,"load",a);return function(){d();b()}},isDescendant:function(a,d){return!!a&&(a===6 -1 d||e.isDescendant(a.parentNode,d))},destroy:function(a,d){var b;if(r.MutationObserver){var f=new MutationObserver(function(){e.isDescendant(a,p)||(d(),b())});f.observe(p,{childList:!0,subtree:!0});b=c.once(function(){f.disconnect();f=h})}else{var l=setInterval(function(){e.isDescendant(a,p)||(d(),b())},e.DELAY);b=function(){clearInterval(l)}}return b},getRadio:function(a){for(var d=0;d<a.length;d++)if(a[d].checked)return a[d].value},setRadio:function(a,d){for(var b=0;b<a.length;b++)a[b].checked=a[b].value===7 -1 d?!0:!1}};return e});m("muu-js-helpers",[],function(){var c={isString:function(b){return"string"===typeof b||"[object String]"===Object.prototype.toString.call(b)}};c.isArray=Array.isArray;c.isFunction=function(b){return"function"===typeof b};c.once=function(b){var c,a=!1;return function(){a||(c=b.apply(this,arguments),a=!0);return c}};c.indexOf=function(b,c){if("indexOf"in b)return b.indexOf(c);for(var a=0;a<b.length;a++)if(b[a]===c)return a;return-1};c.forEach=function(b,c){if("forEach"in b)return b.forEach(c);8 -1 for(var a=0;a<b.length;a++)c(b[a])};c.map=function(b,c){if("map"in b)return b.map(c);for(var a=[],d=0;d<b.length;d++)a.push(c(b[d]));return a};c.filter=function(b,c){if("filter"in b)return b.filter(c);for(var a=[],d=0;d<b.length;d++)c(b[d])&&a.push(b[d]);return a};c.union=function(b){for(var e=[],a=0;a<b.length;a++)for(var d=0;d<b[a].length;d++)-1===c.indexOf(e,b[a][d])&&e.push(b[a][d]);return e};c.difference=function(b,e){for(var a=[],d=0;d<b.length;d++)-1===c.indexOf(e,b[d])&&a.push(b[d]);return a};9 -1 c.flatten=function(b){var e=[];c.forEach(b,function(a){c.isArray(a)?e=e.concat(c.flatten(a)):e.push(a)});return e};return c});m("muu-location",["muu-search"],function(c){var b={absUrl:function(){return location.href},url:function(a,d){if(a===h)return location.pathname+location.search+location.hash;d?history.replaceState(null,null,a):history.pushState(null,null,a);return b},protocol:function(){return location.protocol},host:function(){return location.host},port:function(){return location.port},path:function(a,10 -1 d){if(a===h)return location.pathname;b.url(a+location.search+location.hash,d);return b}},e=function(a,d){if(a===h)return location.search;a&&"?"!==a[0]&&(a="?"+a);1===a.length&&(a="");b.url(location.pathname+a+location.hash,d);return b};b.search=function(a,b,g){if(a!==h){if(b!==h){var f=c.parse(e());f[a]=b;return e(c.unparse(f),g)}return e(c.unparse(a),g)}return c.parse(e())};b.hash=function(a,d){if(a===h)return location.hash?location.hash.slice(1):"";b.url(location.pathname+location.search+"#"+a,11 -1 d);return b};b.addEventListener=function(a,d){"change"===a&&r.addEventListener("popstate",d,!1);return b};b.removeEventListener=function(a,d){"change"===a&&r.removeEventListener("popstate",d,!1);return b};return b});m("muu-registry",["muu-template","muu-directive","muu-js-helpers","muu-dom-helpers"],function(c,b,e,a){return function(d){var g=this,f={};this.config=d||{};this.renderer=g.config.renderer||c;this.registerDirective=function(a,b,d){f[a]={template:b,link:d};return g};this.registerModule=12 -1 function(a){a(g);return g};this.link=function(d,c){c===h&&(c=d.getAttribute("type"));if(!f.hasOwnProperty(c))throw Error("Unknown directive type: "+c);var e=f[c].link,s=new b(d,f[c].template,g),e=e(s,d);d.classList.add("muu-isolate");d.classList.add("muu-initialised");g.config.debug&&(d.directive=s);e!==h&&a.destroy(d,e);return s};this.linkAll=function(a){a=e.filter(a.querySelectorAll("muu"),function(a){return!a.classList.contains("muu-initialised")});return e.map(a,function(a){return g.link(a)})}}});13 -1 m("muu-search",["muu-js-helpers"],function(c){var b={parse:function(a){var d={},b=function(a,b){d.hasOwnProperty(a)?c.isArray(d[a])?d[a].push(b):d[a]=[d[a],b]:d[a]=b};c.forEach(a.substring(1).split("&"),function(a){a=c.map(a.split("="),decodeURIComponent);2===a.length?b(a[0],a[1]):a[0]&&b(a[0],!0)});return d}},e=function(a,b){return b===h||null===b||!1===b?[]:c.isArray(b)?c.flatten(c.map(b,function(b){return e(a,b)})):!0===b?[encodeURIComponent(a)]:[encodeURIComponent(a)+"="+encodeURIComponent(b)]};14 -1 b.unparse=function(a){if(c.isString(a))return a;var b=[],g;for(g in a)a.hasOwnProperty(g)&&(b=b.concat(e(g,a[g])));return 0<b.length?"?"+b.join("&"):""};return b});m("muu-template",["muu-js-helpers","muu-dom-helpers"],function(c,b){var e=function(a,b){return"this"===a?b:b[a]},a=function(a){if(-1===a.indexOf(":"))return function(d){return b.escapeHtml(e(a,d)||"")};var d=c.map(a.split(","),function(a){var b=a.split(":");a=b[0].trim();b=b.slice(1).join(":").trim();return[a,b]});return function(a){var l=15 -1 c.map(c.filter(d,function(b){return e(b[1],a)}),function(a){return a[0]});return b.escapeHtml(l.join(" "))}},d=function(a,b,d){var f=g(b,a);return{render:function(b){var g=e(a,b),k="";if(d)g||(k+=f.render(b));else if(c.isArray(g))for(b=0;b<g.length;b++)k+=f.render(g[b]);else g&&(k+=f.render(b));return k},afterBlock:f.afterBlock}},g=function(b,c){var e=b.indexOf("{{");if(-1===e){if(c===h)return{render:function(){return b},afterBlock:""};throw Error("unclosed loop: "+c);}var f=b.slice(0,e),q=b.slice(e),16 -1 m=q.indexOf("}}");if(-1===m)throw Error("unclosed tag: "+q);var e=q.slice(2,m),q=q.slice(m+2),m=!0,n={render:function(){return""},afterBlock:q};if(0===e.lastIndexOf("#",0))n=d(e.substr(1),q);else if(0===e.lastIndexOf("^",0))n=d(e.substr(1),q,!0);else if(0===e.lastIndexOf("/",0)){if(m=!1,e.substr(1)!==c)throw Error("unexpected closing loop: "+e);}else 0!==e.lastIndexOf("!",0)&&(n.render=a(e));if(m){var p=g(n.afterBlock,c);return{render:function(a){return f+n.render(a)+p.render(a)},afterBlock:p.afterBlock}}return{render:function(a){return f+17 -1 n.render(a)},afterBlock:n.afterBlock}},f={};return function(a,b){f[a]===h&&(f[a]=g(a));return f[a].render(b)}});m("muu-update-dom",["muu-js-helpers"],function(c){var b=function(a,b){var e=c.map(a.attributes,function(a){return a.name}),f=c.map(b.attributes,function(a){return a.name});c.forEach(e,function(c){b.hasAttribute(c)||"__IE8__"===c.substr(0,7)||a.removeAttribute(c)});c.forEach(f,function(c){a.getAttribute(c)!==b.getAttribute(c)&&a.setAttribute(c,b.getAttribute(c))})},e=function(a,d){for(var g=18 -1 a.childNodes.length,f=d.childNodes.length,l=f;l<g;l++)a.removeChild(a.childNodes[f]);for(l=g;l<f;l++)a.appendChild(d.childNodes[g]);for(l=0;l<g&&l<f;l++){var k=a.childNodes[l],h=d.childNodes[l];if(k.nodeType===h.nodeType&&k.nodeName===h.nodeName&&k.type===h.type){if(1===k.nodeType){var m=c.filter(k.classList,function(a){return 0===a.lastIndexOf("muu-",0)});b(k,h);c.forEach(m,function(a){k.classList.add(a)})}else 3===k.nodeType&&(k.nodeValue=h.nodeValue);3===k.nodeType||k.classList.contains("muu-isolate")||19 -1 e(k,h)}else k.parentNode.replaceChild(h,k)}};return e});m("muu",["muu-registry","muu-dom-helpers","muu-location"],function(c,b,e){var a={};a.Registry=c;a.$=b;a.$location=e;return a});return t("muu")})})(window,document,void 0);-1 1 (function(r,p,h){(function(h){"function"===typeof define&&define.amd?define("muu",[],h):r.muu=h(r._)})(function(m){var n={};n["muu-js-helpers"]={instance:m};var v=function(d,b){for(var e=[],a=0;a<d.length;a++)e.push(b(d[a]));return e};m=function(d,b,e){n[d]={deps:b,factory:e}};var t=function(d){if(!n[d])return h;n[d].instance||(n[d].instance=n[d].factory.apply(h,v(n[d].deps,t)));return n[d].instance};m("muu-directive",["muu-dom-helpers","muu-js-helpers","muu-update-dom"],function(d,b,e){return function(a, -1 2 c,g){var f=this;a.innerHTML="";var k=function(c){var b=c.currentTarget,k="data-on"+c.type;b.hasAttribute(k)&&(b=b.getAttribute(k),c=d.createEvent("muu-"+b,h,h,c),a.dispatchEvent(c))};this.update=function(l){var u=p.createElement("div");u.innerHTML=g.renderer(c,l);e(a,u);b.forEach(["keydown","keyup","click","change","search"],function(a){b.forEach(f.querySelectorAll("[data-on"+a+"]"),function(c){c.addEventListener(a,k,!1)})});var s=d.createEvent("muu-parent-update");l=this.querySelectorAll("muu.muu-initialised"); -1 3 b.forEach(l,function(a){a.dispatchEvent(s)});g.linkAll(f)};this.querySelectorAll=function(c){var k=a.querySelectorAll(c),d=a.querySelectorAll(".muu-isolate"),d=b.union(b.map(d,function(a){return a.querySelectorAll(c)}));return b.difference(k,d)};this.querySelector=function(a){a=f.querySelectorAll(a);if(0<a.length)return a[0]};this.getModel=function(a,c){if(a===h){var k={};b.forEach(f.querySelectorAll("[name]"),function(a){k[a.name]=f.getModel(a.name)});return k}var e=f.querySelector("[name="+a+"]"); -1 4 return e===h?c:"number"===e.getAttribute("type")?parseFloat(e.value,10):"checkbox"===e.getAttribute("type")?e.checked:"radio"===e.getAttribute("type")?(e=f.querySelectorAll("[name="+a+"]"),d.getRadio(e)||c):e.value};this.setModel=function(a,c){var b=f.querySelector("[name="+a+"]");"checkbox"===b.getAttribute("type")?b.checked=c:"radio"===b.getAttribute("type")?(b=f.querySelectorAll("[name="+a+"]"),d.setRadio(b,c)):b.value=c}}});m("muu-dom-helpers",["muu-js-helpers"],function(d){var b={"&":"&", -1 5 "<":"<",">":">",'"':""","'":"'","/":"/"},e={DELAY:1E3,escapeHtml:function(a){return String(a).replace(/[&<>"'\/]/g,function(a){return b[a]})},createEvent:function(a,c,b,e){if("function"===typeof CustomEvent)return new CustomEvent(a,{detail:e,bubbles:c,cancelable:b});var k=p.createEvent("CustomEvent");k.initCustomEvent(a,c,b,e);return k},on:function(a,c,b){a.addEventListener(c,b,!1);return function(){a.removeEventListener(c,b,!1)}},ready:function(a){a=d.once(a);if("complete"=== -1 6 p.readyState)return a(),function(){};var c=e.on(p,"DOMContentLoaded",a),b=e.on(r,"load",a);return function(){c();b()}},isDescendant:function(a,c){return!!a&&(a===c||e.isDescendant(a.parentNode,c))},destroy:function(a,c){var b;if(r.MutationObserver){var f=new MutationObserver(function(){e.isDescendant(a,p)||(c(),b())});f.observe(p,{childList:!0,subtree:!0});b=d.once(function(){f.disconnect();f=h})}else{var k=setInterval(function(){e.isDescendant(a,p)||(c(),b())},e.DELAY);b=function(){clearInterval(k)}}return b}, -1 7 getRadio:function(a){for(var c=0;c<a.length;c++)if(a[c].checked)return a[c].value},setRadio:function(a,c){for(var b=0;b<a.length;b++)a[b].checked=a[b].value===c?!0:!1}};return e});m("muu-js-helpers",[],function(){var d={isString:function(b){return"string"===typeof b||"[object String]"===Object.prototype.toString.call(b)}};d.isArray=Array.isArray;d.isFunction=function(b){return"function"===typeof b};d.once=function(b){var e,a=!1;return function(){a||(e=b.apply(this,arguments),a=!0);return e}};d.indexOf= -1 8 function(b,e){if("indexOf"in b)return b.indexOf(e);for(var a=0;a<b.length;a++)if(b[a]===e)return a;return-1};d.forEach=function(b,e){if("forEach"in b)return b.forEach(e);for(var a=0;a<b.length;a++)e(b[a])};d.map=function(b,e){if("map"in b)return b.map(e);for(var a=[],c=0;c<b.length;c++)a.push(e(b[c]));return a};d.filter=function(b,e){if("filter"in b)return b.filter(e);for(var a=[],c=0;c<b.length;c++)e(b[c])&&a.push(b[c]);return a};d.union=function(b){for(var e=[],a=0;a<b.length;a++)for(var c=0;c< -1 9 b[a].length;c++)-1===d.indexOf(e,b[a][c])&&e.push(b[a][c]);return e};d.difference=function(b,e){for(var a=[],c=0;c<b.length;c++)-1===d.indexOf(e,b[c])&&a.push(b[c]);return a};d.flatten=function(b){var e=[];d.forEach(b,function(a){d.isArray(a)?e=e.concat(d.flatten(a)):e.push(a)});return e};return d});m("muu-location",["muu-search"],function(d){var b={absUrl:function(){return location.href},url:function(a,c){if(a===h)return location.pathname+location.search+location.hash;c?history.replaceState(null, -1 10 null,a):history.pushState(null,null,a);return b},protocol:function(){return location.protocol},host:function(){return location.host},port:function(){return location.port},path:function(a,c){if(a===h)return location.pathname;b.url(a+location.search+location.hash,c);return b}},e=function(a,c){if(a===h)return location.search;a&&"?"!==a[0]&&(a="?"+a);1===a.length&&(a="");b.url(location.pathname+a+location.hash,c);return b};b.search=function(a,b,g){if(a!==h){if(b!==h){var f=d.parse(e());f[a]=b;return e(d.unparse(f), -1 11 g)}return e(d.unparse(a),g)}return d.parse(e())};b.hash=function(a,c){if(a===h)return location.hash?location.hash.slice(1):"";b.url(location.pathname+location.search+"#"+a,c);return b};b.addEventListener=function(a,c){"change"===a&&r.addEventListener("popstate",c,!1);return b};b.removeEventListener=function(a,c){"change"===a&&r.removeEventListener("popstate",c,!1);return b};return b});m("muu-registry",["muu-template","muu-directive","muu-js-helpers","muu-dom-helpers"],function(d,b,e,a){return function(c){var g= -1 12 this,f={};this.config=c||{};this.renderer=g.config.renderer||d;this.registerDirective=function(a,b,c){f[a]={template:b,link:c};return g};this.registerModule=function(a){a(g);return g};this.link=function(c,e){e===h&&(e=c.getAttribute("type"));if(!f.hasOwnProperty(e))throw Error("Unknown directive type: "+e);var d=f[e].link,s=new b(c,f[e].template,g),d=d(s,c);c.classList.add("muu-isolate");c.classList.add("muu-initialised");g.config.debug&&(c.directive=s);d!==h&&a.destroy(c,d);return s};this.linkAll= -1 13 function(a){a=e.filter(a.querySelectorAll("muu"),function(a){return!a.classList.contains("muu-initialised")});return e.map(a,function(a){return g.link(a)})}}});m("muu-search",["muu-js-helpers"],function(d){var b={parse:function(a){var c={},b=function(a,b){c.hasOwnProperty(a)?d.isArray(c[a])?c[a].push(b):c[a]=[c[a],b]:c[a]=b};d.forEach(a.substring(1).split("&"),function(a){a=d.map(a.split("="),decodeURIComponent);2===a.length?b(a[0],a[1]):a[0]&&b(a[0],!0)});return c}},e=function(a,b){return b===h|| -1 14 null===b||!1===b?[]:d.isArray(b)?d.flatten(d.map(b,function(b){return e(a,b)})):!0===b?[encodeURIComponent(a)]:[encodeURIComponent(a)+"="+encodeURIComponent(b)]};b.unparse=function(a){if(d.isString(a))return a;var b=[],g;for(g in a)a.hasOwnProperty(g)&&(b=b.concat(e(g,a[g])));return 0<b.length?"?"+b.join("&"):""};return b});m("muu-template",["muu-js-helpers","muu-dom-helpers"],function(d,b){var e=function(a,b){return"this"===a?b:b[a]},a=function(a){if(-1===a.indexOf(":"))return function(c){return b.escapeHtml(e(a, -1 15 c)||"")};var c=d.map(a.split(","),function(a){var b=a.split(":");a=b[0].trim();b=b.slice(1).join(":").trim();return[a,b]});return function(a){var k=d.map(d.filter(c,function(b){return e(b[1],a)}),function(a){return a[0]});return b.escapeHtml(k.join(" "))}},c=function(a,b,c){var f=g(b,a);return{render:function(b){var g=e(a,b),l="";if(c)g||(l+=f.render(b));else if(d.isArray(g))for(b=0;b<g.length;b++)l+=f.render(g[b]);else g&&(l+=f.render(b));return l},afterBlock:f.afterBlock}},g=function(b,e){var d= -1 16 b.indexOf("{{");if(-1===d){if(e===h)return{render:function(){return b},afterBlock:""};throw Error("unclosed loop: "+e);}var f=b.slice(0,d),q=b.slice(d),m=q.indexOf("}}");if(-1===m)throw Error("unclosed tag: "+q);var d=q.slice(2,m),q=q.slice(m+2),m=!0,n={render:function(){return""},afterBlock:q};if(0===d.lastIndexOf("#",0))n=c(d.substr(1),q);else if(0===d.lastIndexOf("^",0))n=c(d.substr(1),q,!0);else if(0===d.lastIndexOf("/",0)){if(m=!1,d.substr(1)!==e)throw Error("unexpected closing loop: "+d);}else 0!== -1 17 d.lastIndexOf("!",0)&&(n.render=a(d));if(m){var p=g(n.afterBlock,e);return{render:function(a){return f+n.render(a)+p.render(a)},afterBlock:p.afterBlock}}return{render:function(a){return f+n.render(a)},afterBlock:n.afterBlock}},f={};return function(a,b){f[a]===h&&(f[a]=g(a));return f[a].render(b)}});m("muu-update-dom",["muu-js-helpers"],function(d){var b=function(a,b){var e=d.map(a.attributes,function(a){return a.name}),f=d.map(b.attributes,function(a){return a.name});d.forEach(e,function(d){b.hasAttribute(d)|| -1 18 "__IE8__"===d.substr(0,7)||a.removeAttribute(d)});d.forEach(f,function(d){a.getAttribute(d)!==b.getAttribute(d)&&a.setAttribute(d,b.getAttribute(d))})},e=function(a,c){for(var g=a.childNodes.length,f=c.childNodes.length,k=f;k<g;k++)a.removeChild(a.childNodes[f]);for(k=g;k<f;k++)a.appendChild(c.childNodes[g]);for(k=0;k<g&&k<f;k++){var l=a.childNodes[k],h=c.childNodes[k];if(l.nodeType===h.nodeType&&l.nodeName===h.nodeName&&l.type===h.type){if(1===l.nodeType){var m=d.filter(l.classList,function(a){return 0=== -1 19 a.lastIndexOf("muu-",0)});b(l,h);d.forEach(m,function(a){l.classList.add(a)})}else 3===l.nodeType&&(l.nodeValue=h.nodeValue);3===l.nodeType||l.classList.contains("muu-isolate")||e(l,h)}else l.parentNode.replaceChild(h,l)}};return e});m("muu",["muu-registry","muu-dom-helpers","muu-location"],function(d,b,e){var a={};a.Registry=d;a.$=b;a.$location=e;return a});return t("muu")})})(window,document,void 0);