- commit
- a18b7f266da0a6e223ded926d551fb9bf9a67750
- parent
- 000e502aa00f401493c14305b3a3bfe48fac2807
- Author
- Tobias Bengfort <tobias.bengfort@gmx.net>
- Date
- 2016-01-24 17:49
build
Diffstat
| M | dist/muu-core.js | 17 | +++++++++++------ |
| M | dist/muu-core.min.js | 22 | +++++++++++----------- |
| M | dist/muu.js | 21 | +++++++++++++-------- |
| M | dist/muu.min.js | 38 | +++++++++++++++++++------------------- |
4 files changed, 54 insertions, 44 deletions
diff --git a/dist/muu-core.js b/dist/muu-core.js
@@ -49,7 +49,7 @@ 49 49 * @module muu-directive 50 50 * @ignore 51 51 */52 -1 _define('muu-directive', ['muu-dom-helpers', 'muu-js-helpers', 'muu-update-dom'], function($, _, updateDOM) {-1 52 _define('muu-directive', ['muu-dom-helpers', 'muu-js-helpers'], function($, _) { 53 53 "use strict"; 54 54 55 55 /** @@ -87,7 +87,8 @@ 87 87 var eventCallback = function(originalEvent) { 88 88 var element = originalEvent.currentTarget; 89 89 var attrName = 'data-on' + originalEvent.type;90 -1 if (element.hasAttribute(attrName)) {-1 90 var selector = '[' + attrName + ']'; -1 91 if (_.indexOf(self.querySelectorAll(selector), element) !== -1) { 91 92 var eventName = element.getAttribute(attrName); 92 93 var event = $.createEvent( 93 94 'muu-' + eventName, undefined, undefined, originalEvent); @@ -103,9 +104,9 @@ 103 104 * @see The templating system can be defined in the {@link Registry}. 104 105 */ 105 106 this.update = function(data) {106 -1 updateDOM(root, registry.renderer(template, data));-1 107 registry.updateDOM(root, registry.renderer(template, data)); 107 108108 -1 _.forEach(['keydown', 'keyup', 'click', 'change', 'search'], function(eventType) {-1 109 _.forEach(registry.events, function(eventType) { 109 110 var selector = '[data-on' + eventType + ']'; 110 111 _.forEach(self.querySelectorAll(selector), function(element) { 111 112 element.addEventListener(eventType, eventCallback, false); @@ -138,7 +139,7 @@ 138 139 // match the given selector. findAll does the same with *relative 139 140 // selectors* but does not seem to be available yet. 140 141 var isolations = root.querySelectorAll('.muu-isolate');141 -1 var isolated = _.union(_.map(isolations, function(isolation) {-1 142 var isolated = _.union.apply(_, _.map(isolations, function(isolation) { 142 143 return isolation.querySelectorAll(selector); 143 144 })); 144 145 @@ -445,7 +446,7 @@ 445 446 * @module muu-registry 446 447 * @ignore 447 448 */448 -1 _define('muu-registry', ['muu-template', 'muu-directive', 'muu-js-helpers', 'muu-dom-helpers'], function(muuTemplate, Directive, _, $) {-1 449 _define('muu-registry', ['muu-template', 'muu-update-dom', 'muu-directive', 'muu-js-helpers', 'muu-dom-helpers'], function(muuTemplate, muuUpdateDOM, Directive, _, $) { 449 450 "use strict"; 450 451 451 452 /** @@ -457,6 +458,8 @@ 457 458 * `element.directive`. 458 459 * - **renderer** - `{function(string, Object): string}` - The template 459 460 * renderer to be used. Defaults to {@link module:muu-template}. -1 461 * - **updateDOM** - `{function(Node, string)}` - The DOM updater to be -1 462 * used. Defaults to {@link module:muu-update-dom}. 460 463 */ 461 464 var Registry = function(config) { 462 465 var self = this; @@ -464,6 +467,8 @@ 464 467 465 468 this.config = config || {}; 466 469 this.renderer = self.config.renderer || muuTemplate; -1 470 this.updateDOM = self.config.updateDOM || muuUpdateDOM; -1 471 this.events = ['keydown', 'keyup', 'click', 'change', 'search']; 467 472 468 473 /** 469 474 * Register a new type of {@link Directive}
diff --git a/dist/muu-core.min.js b/dist/muu-core.min.js
@@ -1,11 +1,11 @@1 -1 (function(r,p,l){(function(m){"function"===typeof define&&define.amd?define("muu",["lodash"],m):r.muu=m(r._)})(function(m){var n={};n["muu-js-helpers"]={instance:m};var t=function(e,h){for(var f=[],a=0;a<e.length;a++)f.push(h(e[a]));return f};m=function(e,h,f){n[e]={deps:h,factory:f}};var s=function(e){if(!n[e])return l;n[e].instance||(n[e].instance=n[e].factory.apply(l,t(n[e].deps,s)));return n[e].instance};m("muu-directive",["muu-dom-helpers","muu-js-helpers","muu-update-dom"],function(e,h,f){return function(a,2 -1 c,d){var g=this;a.innerHTML="";var q=function(b){var k=b.currentTarget,c="data-on"+b.type;k.hasAttribute(c)&&(k=k.getAttribute(c),b=e.createEvent("muu-"+k,l,l,b),a.dispatchEvent(b))};this.update=function(b){f(a,d.renderer(c,b));h.forEach(["keydown","keyup","click","change","search"],function(b){h.forEach(g.querySelectorAll("[data-on"+b+"]"),function(a){a.addEventListener(b,q,!1)})});var k=e.createEvent("muu-parent-update");b=g.querySelectorAll("muu.muu-initialised");h.forEach(b,function(b){b.dispatchEvent(k)});3 -1 d.linkAll(g)};this.querySelectorAll=function(b){var c=a.querySelectorAll(b),d=a.querySelectorAll(".muu-isolate"),d=h.union(h.map(d,function(a){return a.querySelectorAll(b)}));return h.difference(c,d)};this.querySelector=function(b){b=g.querySelectorAll(b);if(0<b.length)return b[0]};this.on=function(b,c){return e.on(a,"muu-"+b,function(b){return c(b.detail)})};this.getModel=function(b,a){if(b===l){var c={};h.forEach(g.querySelectorAll("[name]"),function(b){c[b.name]=g.getModel(b.name)});return c}var d=4 -1 g.querySelector("[name="+b+"]");return d===l?a:"number"===d.getAttribute("type")?parseFloat(d.value):"checkbox"===d.getAttribute("type")?d.checked:"radio"===d.getAttribute("type")?(d=g.querySelectorAll("[name="+b+"]"),e.getRadio(d)||a):d.value};this.setModel=function(b,a){if(g.getModel(b)!==a){var d=g.querySelector("[name="+b+"]");"checkbox"===d.getAttribute("type")?d.checked=a:"radio"===d.getAttribute("type")?(d=g.querySelectorAll("[name="+b+"]"),e.setRadio(d,a)):d.value=a}}}});m("muu-dom-helpers",5 -1 ["muu-js-helpers"],function(e){var h={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"},f={DELAY:1E3,escapeHtml:function(a){return String(a).replace(/[&<>"'\/]/g,function(a){return h[a]})},createEvent:function(a,c,d,e){if("function"===typeof CustomEvent)return new CustomEvent(a,{detail:e,bubbles:c,cancelable:d});var q=p.createEvent("CustomEvent");q.initCustomEvent(a,c,d,e);return q},on:function(a,c,d){a.addEventListener(c,d,!1);return function(){a.removeEventListener(c,d,!1)}},6 -1 ready:function(a){a=e.once(a);if("complete"===p.readyState)return a(),function(){};var c=f.on(p,"DOMContentLoaded",a),d=f.on(r,"load",a);return function(){c();d()}},isDescendant:function(a,c){return!!a&&(a===c||f.isDescendant(a.parentNode,c))},destroy:function(a,c){var d;if(r.MutationObserver){var g=new MutationObserver(function(){f.isDescendant(a,p)||(c(),d())});g.observe(p,{childList:!0,subtree:!0});d=e.once(function(){g.disconnect();g=l})}else{var q=setInterval(function(){f.isDescendant(a,p)||7 -1 (c(),d())},f.DELAY);d=function(){clearInterval(q)}}return d},getRadio:function(a){for(var c=0;c<a.length;c++)if(a[c].checked)return a[c].value},setRadio:function(a,c){e.forEach(a,function(a){a.checked=a.value===c?!0:!1})}};return f});m("muu",["muu-registry","muu-dom-helpers","muu-location"],function(e,h,f){var a={};a.Registry=e;a.$=h;a.$location=f;return a});m("muu-registry",["muu-template","muu-directive","muu-js-helpers","muu-dom-helpers"],function(e,h,f,a){return function(c){var d=this,g={};this.config=8 -1 c||{};this.renderer=d.config.renderer||e;this.registerDirective=function(a,b,c){g[a]={template:b,link:c};return d};this.registerModule=function(a){a(d);return d};this.link=function(c,b){b===l&&(b=c.getAttribute("type"));if(!g.hasOwnProperty(b))throw Error("Unknown directive type: "+b);var e=g[b].link,f=new h(c,g[b].template,d),e=e(f,c);c.classList.add("muu-isolate");c.classList.add("muu-initialised");d.config.debug&&(c.directive=f);e!==l&&a.destroy(c,e);return f};this.linkAll=function(a){a=f.filter(a.querySelectorAll("muu"),9 -1 function(a){return!a.classList.contains("muu-initialised")});return f.map(a,function(a){return d.link(a)})}}});m("muu-update-dom",["muu-js-helpers"],function(e){var h=function(a,c){var d=e.filter(a.classList,function(a){return 0===a.lastIndexOf("muu-",0)}),g=e.map(a.attributes,function(a){return a.name}),f=e.map(c.attributes,function(a){return a.name});e.forEach(g,function(b){c.hasAttribute(b)||"__IE8__"===b.substr(0,7)||a.removeAttribute(b)});e.forEach(f,function(b){a.getAttribute(b)!==c.getAttribute(b)&&10 -1 a.setAttribute(b,c.getAttribute(b))});e.forEach(d,function(b){a.classList.add(b)})},f=function(a,c){for(var d=a.childNodes.length,e=c.childNodes.length,m=0,b=e;b<d;b++)a.removeChild(a.childNodes[e]);for(b=d;b<e;b++)a.appendChild(c.childNodes[d]);for(b=0;b<d&&b<e;b++){var k=a.childNodes[b],l=c.childNodes[b-m];k.nodeType===l.nodeType&&k.nodeName===l.nodeName&&k.type===l.type?(1===k.nodeType?h(k,l):3===k.nodeType&&(k.nodeValue=l.nodeValue),3===k.nodeType||k.classList.contains("muu-isolate")||f(k,l)):11 -1 (k.parentNode.replaceChild(l,k),m+=1)}};return function(a,c){var d=p.createElement("div");d.innerHTML=c;f(a,d)}});return s("muu")})})(window,document,void 0);-1 1 (function(r,q,n){(function(k){"function"===typeof define&&define.amd?define("muu",["lodash"],k):r.muu=k(r._)})(function(k){var p={};p["muu-js-helpers"]={instance:k};var t=function(d,f){for(var g=[],a=0;a<d.length;a++)g.push(f(d[a]));return g};k=function(d,f,g){p[d]={deps:f,factory:g}};var s=function(d){if(!p[d])return n;p[d].instance||(p[d].instance=p[d].factory.apply(n,t(p[d].deps,s)));return p[d].instance};k("muu-directive",["muu-dom-helpers","muu-js-helpers"],function(d,f){return function(g,a, -1 2 b){var c=this;g.innerHTML="";var m=function(a){var e=a.currentTarget,h="data-on"+a.type;-1!==f.indexOf(c.querySelectorAll("["+h+"]"),e)&&(e=e.getAttribute(h),a=d.createEvent("muu-"+e,n,n,a),g.dispatchEvent(a))};this.update=function(l){b.updateDOM(g,b.renderer(a,l));f.forEach(b.events,function(e){f.forEach(c.querySelectorAll("[data-on"+e+"]"),function(a){a.addEventListener(e,m,!1)})});var e=d.createEvent("muu-parent-update");l=c.querySelectorAll("muu.muu-initialised");f.forEach(l,function(a){a.dispatchEvent(e)}); -1 3 b.linkAll(c)};this.querySelectorAll=function(a){var e=g.querySelectorAll(a),h=g.querySelectorAll(".muu-isolate"),h=f.union.apply(f,f.map(h,function(e){return e.querySelectorAll(a)}));return f.difference(e,h)};this.querySelector=function(a){a=c.querySelectorAll(a);if(0<a.length)return a[0]};this.on=function(a,e){return d.on(g,"muu-"+a,function(a){return e(a.detail)})};this.getModel=function(a,e){if(a===n){var h={};f.forEach(c.querySelectorAll("[name]"),function(a){h[a.name]=c.getModel(a.name)});return h}var b= -1 4 c.querySelector("[name="+a+"]");return b===n?e:"number"===b.getAttribute("type")?parseFloat(b.value):"checkbox"===b.getAttribute("type")?b.checked:"radio"===b.getAttribute("type")?(b=c.querySelectorAll("[name="+a+"]"),d.getRadio(b)||e):b.value};this.setModel=function(a,e){if(c.getModel(a)!==e){var b=c.querySelector("[name="+a+"]");"checkbox"===b.getAttribute("type")?b.checked=e:"radio"===b.getAttribute("type")?(b=c.querySelectorAll("[name="+a+"]"),d.setRadio(b,e)):b.value=e}}}});k("muu-dom-helpers", -1 5 ["muu-js-helpers"],function(d){var f={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"},g={DELAY:1E3,escapeHtml:function(a){return String(a).replace(/[&<>"'\/]/g,function(a){return f[a]})},createEvent:function(a,b,c,d){if("function"===typeof CustomEvent)return new CustomEvent(a,{detail:d,bubbles:b,cancelable:c});var g=q.createEvent("CustomEvent");g.initCustomEvent(a,b,c,d);return g},on:function(a,b,c){a.addEventListener(b,c,!1);return function(){a.removeEventListener(b,c,!1)}}, -1 6 ready:function(a){a=d.once(a);if("complete"===q.readyState)return a(),function(){};var b=g.on(q,"DOMContentLoaded",a),c=g.on(r,"load",a);return function(){b();c()}},isDescendant:function(a,b){return!!a&&(a===b||g.isDescendant(a.parentNode,b))},destroy:function(a,b){var c;if(r.MutationObserver){var f=new MutationObserver(function(){g.isDescendant(a,q)||(b(),c())});f.observe(q,{childList:!0,subtree:!0});c=d.once(function(){f.disconnect();f=n})}else{var l=setInterval(function(){g.isDescendant(a,q)|| -1 7 (b(),c())},g.DELAY);c=function(){clearInterval(l)}}return c},getRadio:function(a){for(var b=0;b<a.length;b++)if(a[b].checked)return a[b].value},setRadio:function(a,b){d.forEach(a,function(a){a.checked=a.value===b?!0:!1})}};return g});k("muu",["muu-registry","muu-dom-helpers","muu-location"],function(d,f,g){var a={};a.Registry=d;a.$=f;a.$location=g;return a});k("muu-registry",["muu-template","muu-update-dom","muu-directive","muu-js-helpers","muu-dom-helpers"],function(d,f,g,a,b){return function(c){var m= -1 8 this,l={};this.config=c||{};this.renderer=m.config.renderer||d;this.updateDOM=m.config.updateDOM||f;this.events=["keydown","keyup","click","change","search"];this.registerDirective=function(a,b,c){l[a]={template:b,link:c};return m};this.registerModule=function(a){a(m);return m};this.link=function(a,c){c===n&&(c=a.getAttribute("type"));if(!l.hasOwnProperty(c))throw Error("Unknown directive type: "+c);var d=l[c].link,f=new g(a,l[c].template,m),d=d(f,a);a.classList.add("muu-isolate");a.classList.add("muu-initialised"); -1 9 m.config.debug&&(a.directive=f);d!==n&&b.destroy(a,d);return f};this.linkAll=function(b){b=a.filter(b.querySelectorAll("muu"),function(a){return!a.classList.contains("muu-initialised")});return a.map(b,function(a){return m.link(a)})}}});k("muu-update-dom",["muu-js-helpers"],function(d){var f=function(a,b){var c=d.filter(a.classList,function(a){return 0===a.lastIndexOf("muu-",0)}),f=d.map(a.attributes,function(a){return a.name}),g=d.map(b.attributes,function(a){return a.name});d.forEach(f,function(c){b.hasAttribute(c)|| -1 10 "__IE8__"===c.substr(0,7)||a.removeAttribute(c)});d.forEach(g,function(c){a.getAttribute(c)!==b.getAttribute(c)&&a.setAttribute(c,b.getAttribute(c))});d.forEach(c,function(b){a.classList.add(b)})},g=function(a,b){for(var c=a.childNodes.length,d=b.childNodes.length,l=0,e=d;e<c;e++)a.removeChild(a.childNodes[d]);for(e=c;e<d;e++)a.appendChild(b.childNodes[c]);for(e=0;e<c&&e<d;e++){var h=a.childNodes[e],k=b.childNodes[e-l];h.nodeType===k.nodeType&&h.nodeName===k.nodeName&&h.type===k.type?(1===h.nodeType? -1 11 f(h,k):3===h.nodeType&&(h.nodeValue=k.nodeValue),3===h.nodeType||h.classList.contains("muu-isolate")||g(h,k)):(h.parentNode.replaceChild(k,h),l+=1)}};return function(a,b){var c=q.createElement("div");c.innerHTML=b;g(a,c)}});return s("muu")})})(window,document,void 0);
diff --git a/dist/muu.js b/dist/muu.js
@@ -49,7 +49,7 @@ 49 49 * @module muu-directive 50 50 * @ignore 51 51 */52 -1 _define('muu-directive', ['muu-dom-helpers', 'muu-js-helpers', 'muu-update-dom'], function($, _, updateDOM) {-1 52 _define('muu-directive', ['muu-dom-helpers', 'muu-js-helpers'], function($, _) { 53 53 "use strict"; 54 54 55 55 /** @@ -87,7 +87,8 @@ 87 87 var eventCallback = function(originalEvent) { 88 88 var element = originalEvent.currentTarget; 89 89 var attrName = 'data-on' + originalEvent.type;90 -1 if (element.hasAttribute(attrName)) {-1 90 var selector = '[' + attrName + ']'; -1 91 if (_.indexOf(self.querySelectorAll(selector), element) !== -1) { 91 92 var eventName = element.getAttribute(attrName); 92 93 var event = $.createEvent( 93 94 'muu-' + eventName, undefined, undefined, originalEvent); @@ -103,9 +104,9 @@ 103 104 * @see The templating system can be defined in the {@link Registry}. 104 105 */ 105 106 this.update = function(data) {106 -1 updateDOM(root, registry.renderer(template, data));-1 107 registry.updateDOM(root, registry.renderer(template, data)); 107 108108 -1 _.forEach(['keydown', 'keyup', 'click', 'change', 'search'], function(eventType) {-1 109 _.forEach(registry.events, function(eventType) { 109 110 var selector = '[data-on' + eventType + ']'; 110 111 _.forEach(self.querySelectorAll(selector), function(element) { 111 112 element.addEventListener(eventType, eventCallback, false); @@ -138,7 +139,7 @@ 138 139 // match the given selector. findAll does the same with *relative 139 140 // selectors* but does not seem to be available yet. 140 141 var isolations = root.querySelectorAll('.muu-isolate');141 -1 var isolated = _.union(_.map(isolations, function(isolation) {-1 142 var isolated = _.union.apply(_, _.map(isolations, function(isolation) { 142 143 return isolation.querySelectorAll(selector); 143 144 })); 144 145 @@ -558,13 +559,13 @@ 558 559 }; 559 560 560 561 /**561 -1 * @param {Array.<Array>} arrays-1 562 * @param {...Array} arrays 562 563 * @return {Array} 563 564 * @nosideeffects 564 565 */ 565 566 _.union = function(arrays) { 566 567 var results = [];567 -1 _.forEach(arrays, function(array) {-1 568 _.forEach(arguments, function(array) { 568 569 _.forEach(array, function(item) { 569 570 if (_.indexOf(results, item) === -1) { 570 571 results.push(item); @@ -784,7 +785,7 @@ 784 785 * @module muu-registry 785 786 * @ignore 786 787 */787 -1 _define('muu-registry', ['muu-template', 'muu-directive', 'muu-js-helpers', 'muu-dom-helpers'], function(muuTemplate, Directive, _, $) {-1 788 _define('muu-registry', ['muu-template', 'muu-update-dom', 'muu-directive', 'muu-js-helpers', 'muu-dom-helpers'], function(muuTemplate, muuUpdateDOM, Directive, _, $) { 788 789 "use strict"; 789 790 790 791 /** @@ -796,6 +797,8 @@ 796 797 * `element.directive`. 797 798 * - **renderer** - `{function(string, Object): string}` - The template 798 799 * renderer to be used. Defaults to {@link module:muu-template}. -1 800 * - **updateDOM** - `{function(Node, string)}` - The DOM updater to be -1 801 * used. Defaults to {@link module:muu-update-dom}. 799 802 */ 800 803 var Registry = function(config) { 801 804 var self = this; @@ -803,6 +806,8 @@ 803 806 804 807 this.config = config || {}; 805 808 this.renderer = self.config.renderer || muuTemplate; -1 809 this.updateDOM = self.config.updateDOM || muuUpdateDOM; -1 810 this.events = ['keydown', 'keyup', 'click', 'change', 'search']; 806 811 807 812 /** 808 813 * Register a new type of {@link Directive}
diff --git a/dist/muu.min.js b/dist/muu.min.js
@@ -1,20 +1,20 @@1 -1 (function(n,k,l){(function(l){"function"===typeof define&&define.amd?define("muu",[],l):n.muu=l(n._)})(function(h){var m={};m["muu-js-helpers"]={instance:h};var t=function(d,c){for(var e=[],a=0;a<d.length;a++)e.push(c(d[a]));return e};h=function(d,c,e){m[d]={deps:c,factory:e}};var s=function(d){if(!m[d])return l;m[d].instance||(m[d].instance=m[d].factory.apply(l,t(m[d].deps,s)));return m[d].instance};h("muu-directive",["muu-dom-helpers","muu-js-helpers","muu-update-dom"],function(d,c,e){return function(a,2 -1 b,g){var f=this;a.innerHTML="";var r=function(b){var c=b.currentTarget,e="data-on"+b.type;c.hasAttribute(e)&&(c=c.getAttribute(e),b=d.createEvent("muu-"+c,l,l,b),a.dispatchEvent(b))};this.update=function(p){e(a,g.renderer(b,p));c.forEach(["keydown","keyup","click","change","search"],function(a){c.forEach(f.querySelectorAll("[data-on"+a+"]"),function(b){b.addEventListener(a,r,!1)})});var u=d.createEvent("muu-parent-update");p=f.querySelectorAll("muu.muu-initialised");c.forEach(p,function(a){a.dispatchEvent(u)});3 -1 g.linkAll(f)};this.querySelectorAll=function(b){var d=a.querySelectorAll(b),e=a.querySelectorAll(".muu-isolate"),e=c.union(c.map(e,function(a){return a.querySelectorAll(b)}));return c.difference(d,e)};this.querySelector=function(a){a=f.querySelectorAll(a);if(0<a.length)return a[0]};this.on=function(b,c){return d.on(a,"muu-"+b,function(a){return c(a.detail)})};this.getModel=function(a,b){if(a===l){var e={};c.forEach(f.querySelectorAll("[name]"),function(a){e[a.name]=f.getModel(a.name)});return e}var g=4 -1 f.querySelector("[name="+a+"]");return g===l?b:"number"===g.getAttribute("type")?parseFloat(g.value):"checkbox"===g.getAttribute("type")?g.checked:"radio"===g.getAttribute("type")?(g=f.querySelectorAll("[name="+a+"]"),d.getRadio(g)||b):g.value};this.setModel=function(a,b){if(f.getModel(a)!==b){var c=f.querySelector("[name="+a+"]");"checkbox"===c.getAttribute("type")?c.checked=b:"radio"===c.getAttribute("type")?(c=f.querySelectorAll("[name="+a+"]"),d.setRadio(c,b)):c.value=b}}}});h("muu-dom-helpers",5 -1 ["muu-js-helpers"],function(d){var c={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"},e={DELAY:1E3,escapeHtml:function(a){return String(a).replace(/[&<>"'\/]/g,function(a){return c[a]})},createEvent:function(a,b,c,d){if("function"===typeof CustomEvent)return new CustomEvent(a,{detail:d,bubbles:b,cancelable:c});var e=k.createEvent("CustomEvent");e.initCustomEvent(a,b,c,d);return e},on:function(a,b,c){a.addEventListener(b,c,!1);return function(){a.removeEventListener(b,c,!1)}},6 -1 ready:function(a){a=d.once(a);if("complete"===k.readyState)return a(),function(){};var b=e.on(k,"DOMContentLoaded",a),c=e.on(n,"load",a);return function(){b();c()}},isDescendant:function(a,b){return!!a&&(a===b||e.isDescendant(a.parentNode,b))},destroy:function(a,b){var c;if(n.MutationObserver){var f=new MutationObserver(function(){e.isDescendant(a,k)||(b(),c())});f.observe(k,{childList:!0,subtree:!0});c=d.once(function(){f.disconnect();f=l})}else{var r=setInterval(function(){e.isDescendant(a,k)||7 -1 (b(),c())},e.DELAY);c=function(){clearInterval(r)}}return c},getRadio:function(a){for(var b=0;b<a.length;b++)if(a[b].checked)return a[b].value},setRadio:function(a,b){d.forEach(a,function(a){a.checked=a.value===b?!0:!1})}};return e});h("muu-js-helpers",[],function(){var d={isString:function(c){return"string"===typeof c||"[object String]"===Object.prototype.toString.call(c)}};d.isArray=Array.isArray;d.isFunction=function(c){return"function"===typeof c};d.once=function(c){var d,a=!1;return function(){a||-1 1 (function(q,l,k){(function(k){"function"===typeof define&&define.amd?define("muu",[],k):q.muu=k(q._)})(function(g){var n={};n["muu-js-helpers"]={instance:g};var t=function(d,c){for(var e=[],a=0;a<d.length;a++)e.push(c(d[a]));return e};g=function(d,c,e){n[d]={deps:c,factory:e}};var s=function(d){if(!n[d])return k;n[d].instance||(n[d].instance=n[d].factory.apply(k,t(n[d].deps,s)));return n[d].instance};g("muu-directive",["muu-dom-helpers","muu-js-helpers"],function(d,c){return function(e,a,b){var h= -1 2 this;e.innerHTML="";var f=function(a){var b=a.currentTarget,m="data-on"+a.type;-1!==c.indexOf(h.querySelectorAll("["+m+"]"),b)&&(b=b.getAttribute(m),a=d.createEvent("muu-"+b,k,k,a),e.dispatchEvent(a))};this.update=function(p){b.updateDOM(e,b.renderer(a,p));c.forEach(b.events,function(a){c.forEach(h.querySelectorAll("[data-on"+a+"]"),function(b){b.addEventListener(a,f,!1)})});var r=d.createEvent("muu-parent-update");p=h.querySelectorAll("muu.muu-initialised");c.forEach(p,function(a){a.dispatchEvent(r)}); -1 3 b.linkAll(h)};this.querySelectorAll=function(a){var b=e.querySelectorAll(a),d=e.querySelectorAll(".muu-isolate"),d=c.union.apply(c,c.map(d,function(b){return b.querySelectorAll(a)}));return c.difference(b,d)};this.querySelector=function(a){a=h.querySelectorAll(a);if(0<a.length)return a[0]};this.on=function(a,b){return d.on(e,"muu-"+a,function(a){return b(a.detail)})};this.getModel=function(a,b){if(a===k){var m={};c.forEach(h.querySelectorAll("[name]"),function(a){m[a.name]=h.getModel(a.name)});return m}var e= -1 4 h.querySelector("[name="+a+"]");return e===k?b:"number"===e.getAttribute("type")?parseFloat(e.value):"checkbox"===e.getAttribute("type")?e.checked:"radio"===e.getAttribute("type")?(e=h.querySelectorAll("[name="+a+"]"),d.getRadio(e)||b):e.value};this.setModel=function(a,b){if(h.getModel(a)!==b){var c=h.querySelector("[name="+a+"]");"checkbox"===c.getAttribute("type")?c.checked=b:"radio"===c.getAttribute("type")?(c=h.querySelectorAll("[name="+a+"]"),d.setRadio(c,b)):c.value=b}}}});g("muu-dom-helpers", -1 5 ["muu-js-helpers"],function(d){var c={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"},e={DELAY:1E3,escapeHtml:function(a){return String(a).replace(/[&<>"'\/]/g,function(a){return c[a]})},createEvent:function(a,b,c,d){if("function"===typeof CustomEvent)return new CustomEvent(a,{detail:d,bubbles:b,cancelable:c});var e=l.createEvent("CustomEvent");e.initCustomEvent(a,b,c,d);return e},on:function(a,b,c){a.addEventListener(b,c,!1);return function(){a.removeEventListener(b,c,!1)}}, -1 6 ready:function(a){a=d.once(a);if("complete"===l.readyState)return a(),function(){};var b=e.on(l,"DOMContentLoaded",a),c=e.on(q,"load",a);return function(){b();c()}},isDescendant:function(a,b){return!!a&&(a===b||e.isDescendant(a.parentNode,b))},destroy:function(a,b){var c;if(q.MutationObserver){var f=new MutationObserver(function(){e.isDescendant(a,l)||(b(),c())});f.observe(l,{childList:!0,subtree:!0});c=d.once(function(){f.disconnect();f=k})}else{var p=setInterval(function(){e.isDescendant(a,l)|| -1 7 (b(),c())},e.DELAY);c=function(){clearInterval(p)}}return c},getRadio:function(a){for(var b=0;b<a.length;b++)if(a[b].checked)return a[b].value},setRadio:function(a,b){d.forEach(a,function(a){a.checked=a.value===b?!0:!1})}};return e});g("muu-js-helpers",[],function(){var d={isString:function(c){return"string"===typeof c||"[object String]"===Object.prototype.toString.call(c)}};d.isArray=Array.isArray;d.isFunction=function(c){return"function"===typeof c};d.once=function(c){var d,a=!1;return function(){a|| 8 8 (d=c.apply(this,arguments),a=!0);return d}};d.indexOf=function(c,d){if("indexOf"in c)return c.indexOf(d);for(var a=c.length,b=0;b<a;b++)if(c[b]===d)return b;return-1};d.forEach=function(c,d){if("forEach"in c)return c.forEach(d);for(var a=c.length,b=0;b<a;b++)d(c[b],b,c)};d.map=function(c,e){if("map"in c)return c.map(e);var a=[];d.forEach(c,function(b){a.push(e(b))});return a};d.filter=function(c,e){if("filter"in c)return c.filter(e);var a=[];d.forEach(c,function(b){e(b)&&a.push(b)});return a};d.union=9 -1 function(c){var e=[];d.forEach(c,function(a){d.forEach(a,function(a){-1===d.indexOf(e,a)&&e.push(a)})});return e};d.difference=function(c,e){for(var a=[],b=0;b<c.length;b++)-1===d.indexOf(e,c[b])&&a.push(c[b]);return a};d.flatten=function(c){var e=[];d.forEach(c,function(a){d.isArray(a)?e=e.concat(d.flatten(a)):e.push(a)});return e};return d});h("muu-location",["muu-search"],function(d){var c={absUrl:function(){return location.href},url:function(a,b){if(a===l)return location.pathname+location.search+10 -1 location.hash;b?history.replaceState(null,null,a):history.pushState(null,null,a);return c},protocol:function(){return location.protocol},host:function(){return location.host},port:function(){return location.port},path:function(a,b){if(a===l)return location.pathname;c.url(a+location.search+location.hash,b);return c}},e=function(a,b){if(a===l)return location.search;a&&"?"!==a[0]&&(a="?"+a);1===a.length&&(a="");c.url(location.pathname+a+location.hash,b);return c};c.search=function(a,b,c){if(a!==l){if(b!==11 -1 l){var f=d.parse(e());f[a]=b;return e(d.unparse(f),c)}return e(d.unparse(a),c)}return d.parse(e())};c.hash=function(a,b){if(a===l)return location.hash?location.hash.slice(1):"";c.url(location.pathname+location.search+"#"+a,b);return c};c.addEventListener=function(a,b){"change"===a&&n.addEventListener("popstate",b,!1);return c};c.removeEventListener=function(a,b){"change"===a&&n.removeEventListener("popstate",b,!1);return c};return c});h("muu-registry",["muu-template","muu-directive","muu-js-helpers",12 -1 "muu-dom-helpers"],function(d,c,e,a){return function(b){var g=this,f={};this.config=b||{};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(b,d){d===l&&(d=b.getAttribute("type"));if(!f.hasOwnProperty(d))throw Error("Unknown directive type: "+d);var e=f[d].link,q=new c(b,f[d].template,g),e=e(q,b);b.classList.add("muu-isolate");b.classList.add("muu-initialised");g.config.debug&&13 -1 (b.directive=q);e!==l&&a.destroy(b,e);return q};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)})}}});h("muu-search",["muu-js-helpers"],function(d){var c={parse:function(a){var b={},c=function(a,c){b.hasOwnProperty(a)?d.isArray(b[a])?b[a].push(c):b[a]=[b[a],c]:b[a]=c};d.forEach(a.substring(1).split("&"),function(a){a=d.map(a.split("="),decodeURIComponent);2===a.length?c(a[0],a[1]):14 -1 a[0]&&c(a[0],!0)});return b}},e=function(a,b){return b===l||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)]};c.unparse=function(a){if(d.isString(a))return a;var b=[],c;for(c in a)a.hasOwnProperty(c)&&(b=b.concat(e(c,a[c])));return 0<b.length?"?"+b.join("&"):""};return c});h("muu-template",["muu-js-helpers","muu-dom-helpers"],function(d,c){var e=function(a,b){return"this"===a?b:b[a]},a=15 -1 function(a){if(-1===a.indexOf(":"))return function(b){(b=e(a,b))||0===b||(b="");return c.escapeHtml(b)};var b=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 g=d.map(d.filter(b,function(b){return e(b[1],a)}),function(a){return a[0]});return c.escapeHtml(g.join(" "))}},b=function(a,b,c){var f=g(b,a);return{render:function(b){var p=e(a,b),g="";c?p||(g+=f.render(b)):d.isArray(p)?d.forEach(p,function(a){g+=f.render(a)}):16 -1 p&&(g+=f.render(b));return g},afterBlock:f.afterBlock}},g=function(c,d){var e=c.indexOf("{{");if(-1===e){if(d===l)return{render:function(){return c},afterBlock:""};throw Error("unclosed loop: "+d);}var f=c.slice(0,e),h=c.slice(e),m=h.indexOf("}}");if(-1===m)throw Error("unclosed tag: "+h);var e=h.slice(2,m),h=h.slice(m+2),m=!0,k={render:function(){return""},afterBlock:h};if(0===e.lastIndexOf("#",0))k=b(e.substr(1),h);else if(0===e.lastIndexOf("^",0))k=b(e.substr(1),h,!0);else if(0===e.lastIndexOf("/",17 -1 0)){if(m=!1,e.substr(1)!==d)throw Error("unexpected closing loop: "+e);}else 0!==e.lastIndexOf("!",0)&&(k.render=a(e));if(m){var n=g(k.afterBlock,d);return{render:function(a){return f+k.render(a)+n.render(a)},afterBlock:n.afterBlock}}return{render:function(a){return f+k.render(a)},afterBlock:k.afterBlock}},f={};return function(a,b){f[a]===l&&(f[a]=g(a));return f[a].render(b)}});h("muu-update-dom",["muu-js-helpers"],function(d){var c=function(a,b){var c=d.filter(a.classList,function(a){return 0===18 -1 a.lastIndexOf("muu-",0)}),e=d.map(a.attributes,function(a){return a.name}),l=d.map(b.attributes,function(a){return a.name});d.forEach(e,function(c){b.hasAttribute(c)||"__IE8__"===c.substr(0,7)||a.removeAttribute(c)});d.forEach(l,function(c){a.getAttribute(c)!==b.getAttribute(c)&&a.setAttribute(c,b.getAttribute(c))});d.forEach(c,function(b){a.classList.add(b)})},e=function(a,b){for(var d=a.childNodes.length,f=b.childNodes.length,l=0,h=f;h<d;h++)a.removeChild(a.childNodes[f]);for(h=d;h<f;h++)a.appendChild(b.childNodes[d]);19 -1 for(h=0;h<d&&h<f;h++){var k=a.childNodes[h],m=b.childNodes[h-l];k.nodeType===m.nodeType&&k.nodeName===m.nodeName&&k.type===m.type?(1===k.nodeType?c(k,m):3===k.nodeType&&(k.nodeValue=m.nodeValue),3===k.nodeType||k.classList.contains("muu-isolate")||e(k,m)):(k.parentNode.replaceChild(m,k),l+=1)}};return function(a,b){var c=k.createElement("div");c.innerHTML=b;e(a,c)}});h("muu",["muu-registry","muu-dom-helpers","muu-location"],function(d,c,e){var a={};a.Registry=d;a.$=c;a.$location=e;return a});return s("muu")})})(window,20 -1 document,void 0);-1 9 function(c){var e=[];d.forEach(arguments,function(a){d.forEach(a,function(a){-1===d.indexOf(e,a)&&e.push(a)})});return e};d.difference=function(c,e){for(var a=[],b=0;b<c.length;b++)-1===d.indexOf(e,c[b])&&a.push(c[b]);return a};d.flatten=function(c){var e=[];d.forEach(c,function(a){d.isArray(a)?e=e.concat(d.flatten(a)):e.push(a)});return e};return d});g("muu-location",["muu-search"],function(d){var c={absUrl:function(){return location.href},url:function(a,b){if(a===k)return location.pathname+location.search+ -1 10 location.hash;b?history.replaceState(null,null,a):history.pushState(null,null,a);return c},protocol:function(){return location.protocol},host:function(){return location.host},port:function(){return location.port},path:function(a,b){if(a===k)return location.pathname;c.url(a+location.search+location.hash,b);return c}},e=function(a,b){if(a===k)return location.search;a&&"?"!==a[0]&&(a="?"+a);1===a.length&&(a="");c.url(location.pathname+a+location.hash,b);return c};c.search=function(a,b,c){if(a!==k){if(b!== -1 11 k){var f=d.parse(e());f[a]=b;return e(d.unparse(f),c)}return e(d.unparse(a),c)}return d.parse(e())};c.hash=function(a,b){if(a===k)return location.hash?location.hash.slice(1):"";c.url(location.pathname+location.search+"#"+a,b);return c};c.addEventListener=function(a,b){"change"===a&&q.addEventListener("popstate",b,!1);return c};c.removeEventListener=function(a,b){"change"===a&&q.removeEventListener("popstate",b,!1);return c};return c});g("muu-registry",["muu-template","muu-update-dom","muu-directive", -1 12 "muu-js-helpers","muu-dom-helpers"],function(d,c,e,a,b){return function(h){var f=this,p={};this.config=h||{};this.renderer=f.config.renderer||d;this.updateDOM=f.config.updateDOM||c;this.events=["keydown","keyup","click","change","search"];this.registerDirective=function(a,b,c){p[a]={template:b,link:c};return f};this.registerModule=function(a){a(f);return f};this.link=function(a,c){c===k&&(c=a.getAttribute("type"));if(!p.hasOwnProperty(c))throw Error("Unknown directive type: "+c);var d=p[c].link,h= -1 13 new e(a,p[c].template,f),d=d(h,a);a.classList.add("muu-isolate");a.classList.add("muu-initialised");f.config.debug&&(a.directive=h);d!==k&&b.destroy(a,d);return h};this.linkAll=function(b){b=a.filter(b.querySelectorAll("muu"),function(a){return!a.classList.contains("muu-initialised")});return a.map(b,function(a){return f.link(a)})}}});g("muu-search",["muu-js-helpers"],function(d){var c={parse:function(a){var b={},c=function(a,c){b.hasOwnProperty(a)?d.isArray(b[a])?b[a].push(c):b[a]=[b[a],c]:b[a]= -1 14 c};d.forEach(a.substring(1).split("&"),function(a){a=d.map(a.split("="),decodeURIComponent);2===a.length?c(a[0],a[1]):a[0]&&c(a[0],!0)});return b}},e=function(a,b){return b===k||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)]};c.unparse=function(a){if(d.isString(a))return a;var b=[],c;for(c in a)a.hasOwnProperty(c)&&(b=b.concat(e(c,a[c])));return 0<b.length?"?"+b.join("&"):""};return c}); -1 15 g("muu-template",["muu-js-helpers","muu-dom-helpers"],function(d,c){var e=function(a,b){return"this"===a?b:b[a]},a=function(a){if(-1===a.indexOf(":"))return function(b){(b=e(a,b))||0===b||(b="");return c.escapeHtml(b)};var b=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 h=d.map(d.filter(b,function(b){return e(b[1],a)}),function(a){return a[0]});return c.escapeHtml(h.join(" "))}},b=function(a,b,c){var f=h(b,a);return{render:function(b){var r= -1 16 e(a,b),h="";c?r||(h+=f.render(b)):d.isArray(r)?d.forEach(r,function(a){h+=f.render(a)}):r&&(h+=f.render(b));return h},afterBlock:f.afterBlock}},h=function(c,d){var e=c.indexOf("{{");if(-1===e){if(d===k)return{render:function(){return c},afterBlock:""};throw Error("unclosed loop: "+d);}var f=c.slice(0,e),g=c.slice(e),n=g.indexOf("}}");if(-1===n)throw Error("unclosed tag: "+g);var e=g.slice(2,n),g=g.slice(n+2),n=!0,l={render:function(){return""},afterBlock:g};if(0===e.lastIndexOf("#",0))l=b(e.substr(1), -1 17 g);else if(0===e.lastIndexOf("^",0))l=b(e.substr(1),g,!0);else if(0===e.lastIndexOf("/",0)){if(n=!1,e.substr(1)!==d)throw Error("unexpected closing loop: "+e);}else 0!==e.lastIndexOf("!",0)&&(l.render=a(e));if(n){var q=h(l.afterBlock,d);return{render:function(a){return f+l.render(a)+q.render(a)},afterBlock:q.afterBlock}}return{render:function(a){return f+l.render(a)},afterBlock:l.afterBlock}},f={};return function(a,b){f[a]===k&&(f[a]=h(a));return f[a].render(b)}});g("muu-update-dom",["muu-js-helpers"], -1 18 function(d){var c=function(a,b){var c=d.filter(a.classList,function(a){return 0===a.lastIndexOf("muu-",0)}),e=d.map(a.attributes,function(a){return a.name}),k=d.map(b.attributes,function(a){return a.name});d.forEach(e,function(c){b.hasAttribute(c)||"__IE8__"===c.substr(0,7)||a.removeAttribute(c)});d.forEach(k,function(c){a.getAttribute(c)!==b.getAttribute(c)&&a.setAttribute(c,b.getAttribute(c))});d.forEach(c,function(b){a.classList.add(b)})},e=function(a,b){for(var d=a.childNodes.length,f=b.childNodes.length, -1 19 k=0,g=f;g<d;g++)a.removeChild(a.childNodes[f]);for(g=d;g<f;g++)a.appendChild(b.childNodes[d]);for(g=0;g<d&&g<f;g++){var m=a.childNodes[g],l=b.childNodes[g-k];m.nodeType===l.nodeType&&m.nodeName===l.nodeName&&m.type===l.type?(1===m.nodeType?c(m,l):3===m.nodeType&&(m.nodeValue=l.nodeValue),3===m.nodeType||m.classList.contains("muu-isolate")||e(m,l)):(m.parentNode.replaceChild(l,m),k+=1)}};return function(a,b){var c=l.createElement("div");c.innerHTML=b;e(a,c)}});g("muu",["muu-registry","muu-dom-helpers", -1 20 "muu-location"],function(d,c,e){var a={};a.Registry=d;a.$=c;a.$location=e;return a});return s("muu")})})(window,document,void 0);