ractive
Version:
Next-generation DOM manipulation
2 lines • 46.7 kB
JavaScript
(function(t){"use strict";var e,i;(function(){var t;return e=function(i){var n,r,s;if(i)for(r in i)i.hasOwnProperty(r)&&(this[r]=i[r]);n={preserveWhitespace:!1,append:!1,twoway:!0,modifiers:{},modifyArrays:!0,data:{}};for(r in n)n.hasOwnProperty(r)&&void 0===this[r]&&(this[r]=n[r]);if(i&&i.formatters&&(this.modifiers=i.formatters,"undefined"!=typeof console&&console.warn("The 'formatters' option is deprecated as of v0.2.2 and will be removed in a future version - use 'modifiers' instead (same thing, more accurate name)")),void 0!==this.el&&(this.el=t(this.el)),this._subs={},this._cache={},this._cacheMap={},this._observers={},this._pendingResolution=[],this._defAttrs=[],this.partials)for(r in this.partials)if(this.partials.hasOwnProperty(r)){if(s=this.partials[r],"string"==typeof s){if(!e.compile)throw Error('Missing Ractive.compile - cannot compile partial "'+r+'". Either precompile or use the version that includes the compiler');s=e.compile(s,this)}1===s.length&&"string"==typeof s[0]&&(s=s[0]),this.partials[r]=s}if("string"==typeof this.template){if(!e.compile)throw Error("Missing Ractive.compile - cannot compile template. Either precompile or use the version that includes the compiler");this.template=e.compile(this.template,this)}this.template&&1===this.template.length&&"string"==typeof this.template[0]&&(this.template=this.template[0]),this.el&&this.render({el:this.el,append:this.append})},e.prototype={render:function(e){var n=e.el?t(e.el):this.el;if(!n)throw Error("You must specify a DOM element to render to");e.append||(n.innerHTML=""),e.callback&&(this.callback=e.callback),this.rendered=new i.DomFragment({descriptor:this.template,root:this,parentNode:n}),n.appendChild(this.rendered.docFrag)},teardown:function(){var t;this.rendered.teardown();for(t in this._cacheMap)this._cacheMap.hasOwnProperty(t)&&this._clearCache(t);for(t in this._cache)this._cache.hasOwnProperty(t)&&this._clearCache(t)},set:function(t,e){for(i.isObject(t)?this._setMultiple(t):this._setSingle(t,e);this._defAttrs.length;)this._defAttrs.pop().update().deferred=!1},_setSingle:function(t,e){var n,r,s,o,a,h;for(n=i.isArray(t)?t.slice():i.splitKeypath(t),o=n.join("."),this._clearCache(o),s=this.data;n.length>1;)r=n.shift(),s[r]||(s[r]=/^\s*[0-9]+\s*$/.test(n[0])?[]:{}),s=s[r];for(r=n[0],s[r]=e,this.setting||(this.setting=!0,this.fire("set",o,e),this.fire("set:"+o,e),this.setting=!1),this._notifyObservers(o),a=this._pendingResolution.length;a--;)h=this._pendingResolution.splice(a,1)[0],this._resolveRef(h)||(this._pendingResolution[this._pendingResolution.length]=h)},_setMultiple:function(t){var e;for(e in t)t.hasOwnProperty(e)&&this._setSingle(e,t[e])},_clearCache:function(t){var e,n=this._cacheMap[t];if(this.modifyArrays&&(e=this._cache[t],i.isArray(e)&&!e._ractive.setting&&i.removeKeypath(e,t,this)),delete this._cache[t],n)for(;n.length;)this._clearCache(n.pop())},get:function(t){var e,n,r,s,o,a,h,c;if(i.isArray(t))e=t.slice(),n=e.join(".");else{if(this._cache.hasOwnProperty(t))return this._cache[t];e=i.splitKeypath(t),n=e.join(".")}if(this._cache.hasOwnProperty(n))return this._cache[n];if(r=e.pop(),a=e.length?this.get(e):this.data,s=/^⭆(.+)⭅$/.exec(r))c=i.getModifiersFromString(s[1]),h=this._modify(a,c);else{if("object"!=typeof a||!a.hasOwnProperty(r))return;h=a[r]}return e.length&&(o=e.join("."),this._cacheMap[o]||(this._cacheMap[o]=[]),this._cacheMap[o].push(n)),"function"==typeof h?h=h():this.modifyArrays&&(!i.isArray(h)||h.ractive&&h._ractive.setting||i.addKeypath(h,n,this)),this._cache[n]=h,h},update:function(t){return this._clearCache(t),this._notifyObservers(t),this.fire("update:"+t),this.fire("update",t),this},link:function(t){var e=this;return function(i){e.set(t,i)}},_registerMustache:function(t){var e,i,n;return t.parentFragment&&t.parentFragment.indexRefs.hasOwnProperty(t.descriptor.r)?(n=t.parentFragment.indexRefs[t.descriptor.r],i=t.descriptor.m?this._modify(n,t.descriptor.m):n,t.update(i),void 0):(e=this._resolveRef(t),e||(t.descriptor.m&&t.update(this._modify(void 0,t.descriptor.m)),this._pendingResolution[this._pendingResolution.length]=t),void 0)},_resolveRef:function(t){var e,n,r,s,o,a,h,c;if(e=t.descriptor.r,n=t.contextStack,"."===e)c=n[n.length-1];else{for(r=i.splitKeypath(e),s=r.pop(),n=n.concat();n.length;)if(o=n.pop(),a=i.splitKeypath(o),h=this.get(a.concat(r)),"object"==typeof h&&h.hasOwnProperty(s)){c=o+"."+e;break}c||void 0===this.get(e)||(c=e)}return c?(t.keypath=t.descriptor.m?c+"."+i.stringifyModifiers(t.descriptor.m):c,t.keys=i.splitKeypath(t.keypath),t.observerRefs=this._observe(t),t.update(this.get(t.keypath)),!0):!1},_cancelKeypathResolution:function(t){var e=this._pendingResolution.indexOf(t);-1!==e&&this._pendingResolution.splice(e,1)},_modify:function(t,i){var n,r,s,o,a,h;if(!i)return t;for(r=i.length,n=0;r>n;n+=1)s=i[n],o=s.d,a=s.g||[],h=this.modifiers[o]||e.modifiers[o],h&&(t=h.apply(this,[t].concat(a)));return t},_notifyObservers:function(t){var e,i,n,r,s=this,o=this._observers[t]||[];for(e=0;o.length>e;e+=1)if(n=o[e])for(i=0;n.length>i;i+=1)r=n[i],r.update(s.get(r.keys))},_observe:function(t){var e,n,r=this,s=[],o=t.descriptor.p||0;for(e=function(e){var i;i=r._observers[e]=r._observers[e]||[],i=i[o]=i[o]||[],i[i.length]=t,s[s.length]={keypath:e,priority:o,mustache:t}},n=i.splitKeypath(t.keypath);n.length>1;)e(n.join(".")),n.pop();return e(n[0]),s},_unobserve:function(t){var e,i,n,r,s;if(e=this._observers[t.keypath],e&&(i=e[t.priority])){if(i.indexOf)n=i.indexOf(t.observer);else for(r=0,s=i.length;s>r;r+=1)if(i[r]===t.mustache){n=r;break}-1!==n&&(i.splice(n,1),0===i.length&&delete e[t.priority],0===e.length&&delete this._observers[t.keypath])}},_unobserveAll:function(t){for(;t.length;)this._unobserve(t.shift())}},t=function(t){var e,i;if("undefined"!=typeof window){if(i=window.document,!t)throw Error("No container element specified");if(t.tagName)return t;if("string"==typeof t&&(e=i.getElementById(t),!e&&i.querySelector&&(e=i.querySelector(t)),e.tagName))return e;if(t[0]&&t[0].tagName)return t[0];throw Error("Could not find container element")}},e})(),function(){var t={},e={};i={isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)},isObject:function(t){return"[object Object]"===Object.prototype.toString.call(t)&&"function"!=typeof t},isNumeric:function(t){return!isNaN(parseFloat(t))&&isFinite(t)},splitKeypath:function(t){var i,n,r,s,o,a,h,c;if(e[t])return e[t].concat();if(i=/⭆.+⭅/.test(t),!/\\\./.test(t)&&!i)return e[t]=t.replace(/\[\s*([0-9]+)\s*\]/g,".$1").split("."),e[t].concat();for(a=[],h=t,i&&(n=[],h=h.replace(/⭆(.+)⭅/g,function(t,e){return n[n.length]=e,"⭆x⭅"})),o=0;h.length;){if(s=h.indexOf(".",o),-1===s)c=h,h="";else{if("\\"===h.charAt(s-1)&&"\\"!==h.charAt(s-2)){o=s+1;continue}c=h.substr(0,s),o=0}/\[/.test(c)?a=a.concat(c.replace(/\[\s*([0-9]+)\s*\]/g,".$1").split(".")):a[a.length]=c,h=h.substring(s+1)}if(i)for(r=a.length;r--;)"⭆x⭅"===a[r]&&(a[r]="⭆"+n.pop()+"⭅");return e[t]=a,a.concat()},getModifiersFromString:function(e){var i,n;return t[e]?t[e]:(n=e.split("⤋"),i=n.map(function(t){var e;return e=t.indexOf("["),-1===e?{d:t,g:[]}:{d:t.substr(0,e),g:JSON.parse(t.substring(e))}}),t[e]=i,i)},stringifyModifiers:function(t){var e=t.map(function(t){return t.g&&t.g.length?t.d+JSON.stringify(t.g):t.d});return"⭆"+e.join("⤋")+"⭅"},eventDefns:{}}}(),i.types={TEXT:1,INTERPOLATOR:2,TRIPLE:3,SECTION:4,INVERTED:5,CLOSING:6,ELEMENT:7,PARTIAL:8,COMMENT:9,DELIMCHANGE:10,MUSTACHE:11,TAG:12,ATTR_VALUE_TOKEN:13},function(t){t.Mustache=function(t){this.root=t.root,this.descriptor=t.descriptor,this.parent=t.parent,this.parentFragment=t.parentFragment,this.contextStack=t.contextStack||[],this.index=t.index||0,(t.parentNode||t.anchor)&&(this.parentNode=t.parentNode,this.anchor=t.anchor),this.type=t.descriptor.t,this.root._registerMustache(this),!this.keypath&&this.descriptor.n&&this.update(this.descriptor.m?this.root._modify(!1,this.descriptor.m):!1)},t.Fragment=function(t){var e,i,n,r,s;if(this.parent=t.parent,this.index=t.index,this.items=[],this.indexRefs={},this.parent&&this.parent.parentFragment){r=this.parent.parentFragment.indexRefs;for(s in r)r.hasOwnProperty(s)&&(this.indexRefs[s]=r[s])}for(t.indexRef&&(this.indexRefs[t.indexRef]=t.index),n={root:t.root,parentFragment:this,parent:this,parentNode:t.parentNode,contextStack:t.contextStack},e=t.descriptor?t.descriptor.length:0,i=0;e>i;i+=1)n.descriptor=t.descriptor[i],n.index=i,this.items[this.items.length]=this.createItem(n)},t.sectionUpdate=function(e){var i,n,r,s,o;if(i={descriptor:this.descriptor.f,root:this.root,parentNode:this.parentNode,parent:this},this.parentNode&&(i.anchor=this.parentFragment.findNextNode(this)),n=t.isArray(e),n&&0===e.length&&(r=!0),this.descriptor.n){if(e&&!r)this.length&&(this.unrender(),this.length=0);else if(!this.length)return i.contextStack=this.contextStack,i.index=0,this.fragments[0]=this.createFragment(i),this.length=1,void 0}else if(n){if(e.length<this.length)for(o=this.fragments.splice(e.length,this.length-e.length);o.length;)o.pop().teardown();else if(e.length>this.length)for(s=this.length;e.length>s;s+=1)i.contextStack=this.contextStack.concat(this.keypath+"."+s),i.index=s,this.descriptor.i&&(i.indexRef=this.descriptor.i),this.fragments[s]=this.createFragment(i);this.length=e.length}else t.isObject(e)?this.length||(i.contextStack=this.contextStack.concat(this.keypath),i.index=0,this.fragments[0]=this.createFragment(i),this.length=1):e&&!r?this.length||(i.contextStack=this.contextStack,i.index=0,this.fragments[0]=this.createFragment(i),this.length=1):this.length&&(this.unrender(),this.length=0)}}(i),function(t){t.on=function(t,e){var i,n,r=this;if("object"==typeof t){i=[];for(n in t)t.hasOwnProperty(n)&&(i[i.length]=this.on(n,t[n]));return{cancel:function(){for(;i.length;)i.pop().cancel()}}}return this._subs[t]?this._subs[t].push(e):this._subs[t]=[e],{cancel:function(){r.off(t,e)}}},t.off=function(t,e){var i,n;e||(t?this._subs[t]=[]:this._subs={}),i=this._subs[t],i&&(n=i.indexOf(e),-1!==n&&i.splice(n,1))},t.fire=function(t){var e,i,n,r=this._subs[t];if(r)for(e=Array.prototype.slice.call(arguments,1),i=0,n=r.length;n>i;i+=1)r[i].apply(this,e)}}(e.prototype),function(t,e){t.defineEvent=function(t,i){e.eventDefns[t]=i},t.defineEvent("tap",function(t,e){var i,n,r,s;return r=5,s=400,i=function(t){var i,n,o,a,h;i=t.clientX,n=t.clientY,o=function(t){e(t),h()},a=function(t){(Math.abs(t.clientX-i)>=r||Math.abs(t.clientY-n)>=r)&&h()},h=function(){window.removeEventListener("mousemove",a),window.removeEventListener("mouseup",o)},window.addEventListener("mousemove",a),window.addEventListener("mouseup",o),setTimeout(h,s)},t.addEventListener("mousedown",i),n=function(t){var i,n,o,a,h,c,p;1===t.touches.length&&(o=t.touches[0],a=o.identifier,c=function(t){1!==t.changedTouches.length||t.touches[0].identifier!==a?p():e(t)},h=function(t){var e;(1!==t.touches.length||t.touches[0].identifier!==a)&&p(),e=t.touches[0],(Math.abs(e.clientX-i)>=r||Math.abs(e.clientY-n)>=r)&&p()},p=function(){window.removeEventListener("touchmove",h),window.removeEventListener("touchend",c),window.removeEventListener("touchcancel",p)},window.addEventListener("touchmove",h),window.addEventListener("touchend",c),window.addEventListener("touchcancel",p),setTimeout(p,s))},{teardown:function(){t.removeEventListener("mousedown",i),t.removeEventListener("touchstart",n)}}})}(e,i);var e=e||{},i=i||{};(function(t,e){var i,n,r,s,o,a,h,c,p,u,d,l,f,m,g;t.compile=function(i,r){var s,o,a;return r=r||{},r.sanitize===!0&&(r.sanitize={elements:"applet base basefont body frame frameset head html isindex link meta noframes noscript object param script style title".split(" "),eventAttributes:!0}),t.delimiters=r.delimiters||["{{","}}"],t.tripleDelimiters=r.tripleDelimiters||["{{{","}}}"],s=e.tokenize(i),o=n(s,0,r,r.preserveWhitespace),a=o.toJson(),"string"==typeof a?[a]:a},u=e.types,d="area base br col command embed hr img input keygen link meta param source track wbr".split(" "),l="a abbr acronym address applet area b base basefont bdo big blockquote body br button caption center cite code col colgroup dd del dfn dir div dl dt em fieldset font form frame frameset h1 h2 h3 h4 h5 h6 head hr html i iframe img input ins isindex kbd label legend li link map menu meta noframes noscript object ol optgroup option p param pre q s samp script select small span strike strong style sub sup table tbody td textarea tfoot th thead title tr tt u ul var article aside audio bdi canvas command data datagrid datalist details embed eventsource figcaption figure footer header hgroup keygen mark meter nav output progress ruby rp rt section source summary time track video wbr".split(" "),f="li dd rt rp optgroup option tbody tfoot tr td th".split(" "),m={li:["li"],dt:["dt","dd"],dd:["dt","dd"],p:"address article aside blockquote dir div dl fieldset footer form h1 h2 h3 h4 h5 h6 header hgroup hr menu nav ol p pre section table ul".split(" "),rt:["rt","rp"],rp:["rp","rt"],optgroup:["optgroup"],option:["option","optgroup"],thead:["tbody","tfoot"],tbody:["tbody","tfoot"],tr:["tr"],td:["td","th"],th:["td","th"]},p=function(t){var e,i,n,r;if(r=t.indexOf("["),-1!==r){e=t.substr(0,r),i=t.substring(r,t.length);try{n=JSON.parse(i)}catch(s){throw"Could not parse arguments ("+i+") using JSON.parse"}return{d:e,g:n}}return{d:t}},c={quot:34,amp:38,apos:39,lt:60,gt:62,nbsp:160,iexcl:161,cent:162,pound:163,curren:164,yen:165,brvbar:166,sect:167,uml:168,copy:169,ordf:170,laquo:171,not:172,shy:173,reg:174,macr:175,deg:176,plusmn:177,sup2:178,sup3:179,acute:180,micro:181,para:182,middot:183,cedil:184,sup1:185,ordm:186,raquo:187,frac14:188,frac12:189,frac34:190,iquest:191,Agrave:192,Aacute:193,Acirc:194,Atilde:195,Auml:196,Aring:197,AElig:198,Ccedil:199,Egrave:200,Eacute:201,Ecirc:202,Euml:203,Igrave:204,Iacute:205,Icirc:206,Iuml:207,ETH:208,Ntilde:209,Ograve:210,Oacute:211,Ocirc:212,Otilde:213,Ouml:214,times:215,Oslash:216,Ugrave:217,Uacute:218,Ucirc:219,Uuml:220,Yacute:221,THORN:222,szlig:223,agrave:224,aacute:225,acirc:226,atilde:227,auml:228,aring:229,aelig:230,ccedil:231,egrave:232,eacute:233,ecirc:234,euml:235,igrave:236,iacute:237,icirc:238,iuml:239,eth:240,ntilde:241,ograve:242,oacute:243,ocirc:244,otilde:245,ouml:246,divide:247,oslash:248,ugrave:249,uacute:250,ucirc:251,uuml:252,yacute:253,thorn:254,yuml:255,OElig:338,oelig:339,Scaron:352,scaron:353,Yuml:376,fnof:402,circ:710,tilde:732,Alpha:913,Beta:914,Gamma:915,Delta:916,Epsilon:917,Zeta:918,Eta:919,Theta:920,Iota:921,Kappa:922,Lambda:923,Mu:924,Nu:925,Xi:926,Omicron:927,Pi:928,Rho:929,Sigma:931,Tau:932,Upsilon:933,Phi:934,Chi:935,Psi:936,Omega:937,alpha:945,beta:946,gamma:947,delta:948,epsilon:949,zeta:950,eta:951,theta:952,iota:953,kappa:954,lambda:955,mu:956,nu:957,xi:958,omicron:959,pi:960,rho:961,sigmaf:962,sigma:963,tau:964,upsilon:965,phi:966,chi:967,psi:968,omega:969,thetasym:977,upsih:978,piv:982,ensp:8194,emsp:8195,thinsp:8201,zwnj:8204,zwj:8205,lrm:8206,rlm:8207,ndash:8211,mdash:8212,lsquo:8216,rsquo:8217,sbquo:8218,ldquo:8220,rdquo:8221,bdquo:8222,dagger:8224,Dagger:8225,bull:8226,hellip:8230,permil:8240,prime:8242,Prime:8243,lsaquo:8249,rsaquo:8250,oline:8254,frasl:8260,euro:8364,image:8465,weierp:8472,real:8476,trade:8482,alefsym:8501,larr:8592,uarr:8593,rarr:8594,darr:8595,harr:8596,crarr:8629,lArr:8656,uArr:8657,rArr:8658,dArr:8659,hArr:8660,forall:8704,part:8706,exist:8707,empty:8709,nabla:8711,isin:8712,notin:8713,ni:8715,prod:8719,sum:8721,minus:8722,lowast:8727,radic:8730,prop:8733,infin:8734,ang:8736,and:8743,or:8744,cap:8745,cup:8746,"int":8747,there4:8756,sim:8764,cong:8773,asymp:8776,ne:8800,equiv:8801,le:8804,ge:8805,sub:8834,sup:8835,nsub:8836,sube:8838,supe:8839,oplus:8853,otimes:8855,perp:8869,sdot:8901,lceil:8968,rceil:8969,lfloor:8970,rfloor:8971,lang:9001,rang:9002,loz:9674,spades:9824,clubs:9827,hearts:9829,diams:9830},h=function(t){var e;return e=t.replace(/&([a-zA-Z]+);/,function(t,e){return c[e]?String.fromCharCode(c[e]):t}),e=e.replace(/&#x([0-9]+);/,function(t,e){return String.fromCharCode(parseInt(e,16))}),e=e.replace(/&#([0-9]+);/,function(t,e){return String.fromCharCode(e)})},r=function(t){this.type=u.TEXT,this.text=t.value},r.prototype={toJson:function(){return this.decoded||(this.decoded=h(this.text))},toString:function(){return this.text},decodeCharacterReferences:function(){}},g=/^proxy-([a-z]+)$/,s=function(t,e){var r,s,o,a,h,c,p,l,f,m;if(this.type=u.ELEMENT,this.tag=t.tag,this.parentFragment=e,this.parentElement=e.parentElement,r=t.attributes.items,h=r.length){for(a=[],p=[];h--;)s=r[h],o=s.name.value,e.options.sanitize&&e.options.sanitize.eventAttributes&&"on"===o.toLowerCase().substr(0,2)||((m=g.exec(o))?(l={name:m[1],value:n(s.value.tokens,this.parentFragment.priority+1)},p[p.length]=l):(c={name:o},s.value.isNull||(c.value=n(s.value.tokens,this.parentFragment.priority+1)),a[a.length]=c));a.length&&(this.attributes=a),p.length&&(this.proxies=p)}t.isSelfClosingTag||-1!==d.indexOf(t.tag.toLowerCase())||(f=e.preserveWhitespace||"pre"===this.tag.toLowerCase(),this.fragment=new i(this,e.priority+1,e.options,f))},s.prototype={read:function(t){return this.fragment&&this.fragment.read(t)},toJson:function(t){var e,i,n,r,s,o;if(e={t:u.ELEMENT,e:this.tag},this.attributes)for(e.a={},o=this.attributes.length;o--;)i=this.attributes[o].name,void 0===this.attributes[o].value?n=null:(r=""+this.attributes[o].value,n=r!==!1?r:this.attributes[o].value.toJson()),e.a[i]=n;if(this.fragment&&this.fragment.items.length&&(e.f=this.fragment.toJson(t)),this.proxies)for(e.x={},o=this.proxies.length;o--;)s=this.proxies[o],e.x[s.name]=(r=""+s.value)?r:s.value.toJson();return e},toString:function(){var t,e,i,n,r,s,o;if(-1===l.indexOf(this.tag.toLowerCase()))return!1;if(s=this.fragment?""+this.fragment:"",s===!1)return!1;if(this.proxies)return!1;if(o=-1!==d.indexOf(this.tag.toLowerCase()),t="<"+this.tag,this.attributes)for(e=0,i=this.attributes.length;i>e;e+=1){if(-1!==this.attributes[e].name.indexOf(":"))return!1;if(n=" "+this.attributes[e].name,void 0!==this.attributes[e].value){if(r=""+this.attributes[e].value,r===!1)return!1;""!==r&&(n+="=",n+=/[\s"'=<>`]/.test(r)?'"'+r.replace(/"/g,""")+'"':r)}t+=n}return this.isSelfClosing&&!o?t+="/>":(t+=">",o?t:(t+=s,t+="</"+this.tag+">"))}},o=function(t,e){this.type=u.SECTION,this.parentFragment=e,this.ref=t.ref,this.inverted=t.type===u.INVERTED,this.modifiers=t.modifiers,this.i=t.i,this.fragment=new i(this,e.priority+1,e.options,e.preserveWhitespace)},o.prototype={read:function(t){return this.fragment.read(t)},toJson:function(t){var e;return e={t:u.SECTION,r:this.ref},this.fragment&&(e.f=this.fragment.toJson(t)),this.modifiers&&this.modifiers.length&&(e.m=this.modifiers.map(p)),this.inverted&&(e.n=!0),this.priority&&(e.p=this.parentFragment.priority),this.i&&(e.i=this.i),e},toString:function(){return!1}},a=function(t,e){this.type=t.type,this.priority=e,this.ref=t.ref,this.modifiers=t.modifiers},a.prototype={toJson:function(){var t={t:this.type,r:this.ref};return this.modifiers&&(t.m=this.modifiers.map(p)),this.priority&&(t.p=this.priority),t},toString:function(){return!1}},i=function(t,e,i,n){this.owner=t,this.items=[],this.options=i,this.preserveWhitespace=n,t&&(this.parentElement=t.type===u.ELEMENT?t:t.parentElement),this.priority=e},i.prototype={read:function(t){if(this.sealed)return!1;if(this.isImplicitlyClosedBy(t))return this.seal(),!1;if(this.currentChild){if(this.currentChild.read(t))return!0;this.currentChild=null}return this.isExplicitlyClosedBy(t)?(this.seal(),!0):t.type===u.CLOSING||t.type===u.DELIMCHANGE||t.type===u.COMMENT?!1:t.type===u.SECTION||t.type===u.INVERTED?(this.currentChild=new o(t,this),this.items[this.items.length]=this.currentChild,!0):t.type===u.TAG?(this.currentChild=new s(t,this),this.options.sanitize&&this.options.sanitize.elements&&-1!==this.options.sanitize.elements.indexOf(t.tag.toLowerCase())?!0:(this.items[this.items.length]=this.currentChild,!0)):t.type===u.TEXT||t.type===u.ATTR_VALUE_TOKEN?(this.items[this.items.length]=new r(t),!0):(this.items[this.items.length]=new a(t,this.priority),!0)},isClosedBy:function(t){return this.isImplicitlyClosedBy(t)||this.isExplicitlyClosedBy(t)},isImplicitlyClosedBy:function(t){var e,i,n,r,s;return t.tag&&this.owner&&this.owner.type===u.ELEMENT?(r=this.owner.tag.toLowerCase(),s=t.tag.toLowerCase(),i=this.owner,n=i.parentElement||null,e=m[r],e&&!t.isClosingTag&&-1!==e.indexOf(s)?!0:-1!==f.indexOf(r)&&n&&n.fragment.isClosedBy(t)?!0:"p"===r&&n&&"a"===n.tag.toLowerCase()&&n.fragment.isClosedBy(t)?!0:void 0):!1},isExplicitlyClosedBy:function(t){return this.owner?this.owner.type===u.SECTION&&t.type===u.CLOSING&&t.ref===this.owner.ref?!0:this.owner.type===u.ELEMENT&&this.owner&&t.isClosingTag&&t.tag.toLowerCase()===this.owner.tag.toLowerCase()?!0:void 0:!1},toJson:function(t){var e,i,n,r=[];if(!t&&(n=""+this,n!==!1))return n;for(e=0,i=this.items.length;i>e;e+=1)r[e]=this.items[e].toJson(t);return r},toString:function(){var t,e,i,n="";for(t=0,e=this.items.length;e>t;t+=1){if(i=""+this.items[t],i===!1)return!1;n+=i}return n},seal:function(){var t,e,i,n;if(this.sealed=!0,!this.preserveWhitespace)for(this.owner.type===u.ELEMENT&&(t=this.items[0],t&&t.type===u.TEXT&&(t.text=t.text.replace(/^\s*/,""),""===t.text&&this.items.shift()),e=this.items[this.items.length-1],e&&e.type===u.TEXT&&(e.text=e.text.replace(/\s*$/,""),""===e.text&&this.items.pop())),i=this.items.length;i--;)n=this.items[i],n.type===u.TEXT&&(n.text=n.text.replace(/\s{2,}/g," "));this.items.length||delete this.owner.fragment}},n=function(t,e,n,r){for(var s,o=new i(null,e,n,r);t.length;)s=t.shift(),o.read(s);return o}})(e,i),function(t,e){var i,n,r,s,o,a,h,c,p,u,d,l,f,m,g,v,y,w,b,x,N;e.tokenize=function(t){var e=a.fromString(r(t));return o(s(e.tokens))},a=function(){this.tokens=[],this.buffer=new h},a.prototype={read:function(t){var e,n;if(this.currentToken&&this.currentToken.type!==i.TEXT&&this.currentToken.read(t))return!0;if(this.buffer.read(t))return!0;if(e=this.buffer.convert())return this.currentToken&&this.currentToken.seal(),this.currentToken=this.tokens[this.tokens.length]=e,!0;if(n=this.buffer.release(),this.currentToken){for(;n.length;){for(;n.length&&this.currentToken.read(n.charAt(0));)n=n.substring(1);n.length&&("<"===n.charAt(0)?(this.currentToken=new d,this.currentToken.read("<")):(this.currentToken=new c,this.currentToken.read(n.charAt(0))),this.tokens[this.tokens.length]=this.currentToken,n=n.substring(1))}return!0}return this.currentToken="<"===t?new d:new c,this.currentToken.read(t),this.tokens[this.tokens.length]=this.currentToken,!0},end:function(){this.buffer.isEmpty()||(this.tokens[this.tokens.length]=this.buffer.convert())}},a.fromString=function(t){var e,i,n;for(e=new a,i=0,n=t.length;n>i;)e.read(t.charAt(i)),i+=1;return e.end(),e},h=function(){this.value=""},h.prototype={read:function(e){var i;return this.value+=e,i=this.isPartialMatchOf(t.delimiters[0])||this.isPartialMatchOf(t.tripleDelimiters[0])},convert:function(){var e,i,n,r,s,o;if(i=t.delimiters[0],n=t.tripleDelimiters[0],e=this.value,s=function(){return 0===e.indexOf(n)?new u:void 0},o=function(){return 0===e.indexOf(i)?new p:void 0},r=n.length>i.length?s()||o():o()||s()){for(;this.value.length;)r.read(this.value.charAt(0)),this.value=this.value.substring(1);return r}return!1},release:function(){var t=this.value;return this.value="",t},isEmpty:function(){return!this.value.length},isPartialMatchOf:function(t){return 0===t.indexOf(this.value)}},c=function(){this.type=i.TEXT,this.value=""},c.prototype={read:function(t){return this.sealed?!1:"<"===t?!1:(this.value+=t,!0)},seal:function(){this.sealed=!0}},p=function(){this.value="",this.openingDelimiter=t.delimiters[0],this.closingDelimiter=t.delimiters[1],this.minLength=this.openingDelimiter.length+this.closingDelimiter.length},u=function(){this.value="",this.openingDelimiter=t.tripleDelimiters[0],this.closingDelimiter=t.tripleDelimiters[1],this.minLength=this.openingDelimiter.length+this.closingDelimiter.length,this.type=i.TRIPLE},p.prototype=u.prototype={read:function(t){return this.sealed?!1:(this.value+=t,this.value.length>=this.minLength&&this.value.substr(-this.closingDelimiter.length)===this.closingDelimiter&&this.seal(),!0)},seal:function(){var t,e,n,r,s;this.sealed||(t=this.value.replace(this.openingDelimiter,"").replace(this.closingDelimiter,"").trim(),"="===t.charAt(0)&&(this.changeDelimiters(t),this.type=i.DELIMCHANGE),this.type||(e=t.charAt(0),f[e]?(this.type=f[e],t=t.substring(1).trim()):this.type=i.INTERPOLATOR),this.type===i.SECTION&&(r=/:\s*([a-zA-Z_$][a-zA-Z0-9_$]*)$/,s=r.exec(t),s&&(this.i=s[1],t=t.substr(0,t.length-s[0].length))),n=t.split("|"),this.ref=n.shift().trim(),n.length&&(this.modifiers=n.map(function(t){return t.trim()})),this.sealed=!0)},changeDelimiters:function(e){var n,r;r=/\=\s*([^\s=]+)\s+([^\s=]+)\s*=/.exec(e),n=this.type===i.TRIPLE?t.tripleDelimiters:t.delimiters,n[0]=r[1],n[1]=r[2]}},d=function(){this.type=i.TAG,this.openingBracket=new m,this.closingTagSolidus=new y,this.tagName=new g,this.attributes=new v,this.selfClosingSolidus=new y,this.closingBracket=new w},d.prototype={read:function(t){var e;return this.sealed?!1:(e=this.openingBracket.read(t)||this.closingTagSolidus.read(t)||this.tagName.read(t)||this.attributes.read(t)||this.selfClosingSolidus.read(t)||this.closingBracket.read(t))?(this.closingBracket.sealed&&this.seal(),!0):(this.seal(),!1)},seal:function(){this.tag=this.tagName.value,this.closingTagSolidus.value&&(this.isClosingTag=!0),this.selfClosingSolidus.value&&(this.isSelfClosingTag=!0),this.sealed=!0}},m=function(){},m.prototype={read:function(t){if(this.sealed)return!1;if("<"===t)return this.value="<",this.seal(),!0;throw'Expected "<", saw "'+t+'"'},seal:function(){this.sealed=!0}},g=function(){},g.prototype={read:function(t){return this.sealed?!1:!this.value&&/[a-zA-Z]/.test(t)?(this.value=t,!0):/[a-zA-Z0-9\-]/.test(t)?(this.value+=t,!0):(this.seal(),!1)},seal:function(){this.sealed=!0}},v=function(){this.items=[]},v.prototype={read:function(t){return this.sealed?!1:this.nextItem&&this.nextItem.read(t)?!0:n.test(t)?!0:(this.nextItem=new b,this.nextItem.read(t)?(this.items[this.items.length]=this.nextItem,!0):(this.seal(),!1))},seal:function(){this.sealed=!0}},b=function(){this.name=new x,this.value=new N},b.prototype={read:function(t){return this.sealed?!1:this.name.read(t)?!0:this.name.value?this.value.read(t)?!0:(this.seal(),!1):(this.seal(),!1)},seal:function(){this.sealed=!0}},x=function(){},x.prototype={read:function(t){return this.sealed?!1:this.value?/[_:a-zA-Z0-9\.\-]/.test(t)?(this.value+=t,!0):(this.seal(),!1):/[a-zA-Z_:]/.test(t)?(this.value=t,!0):(this.seal(),!1)},seal:function(){this.sealed=!0}},N=function(){this.tokens=[],this.buffer=new h,this.isNull=!0},N.prototype={read:function(t){var e,i;if(this.sealed)return!1;if(this.isNull)return n.test(t)?!0:"="===t?(this.isNull=!1,!0):!1;if(!this.tokens.length&&!this.quoteMark){if(n.test(t))return!0;if('"'===t||"'"===t)return this.quoteMark=t,!0}if(this.buffer.read(t))return!0;if(e=this.buffer.convert())return this.currentToken&&this.currentToken.seal(),this.currentToken=this.tokens[this.tokens.length]=e,!0;if(i=this.buffer.release(),this.currentToken){for(;i.length;){for(;i.length&&i.charAt(0)!==this.quoteMark&&this.currentToken.read(i.charAt(0));)i=i.substring(1);if(i.length){if(">"===i.charAt(0))return this.seal(),!1;if(i.charAt(0)===this.quoteMark)return this.currentToken.seal(),this.seal(),!0;this.currentToken=new l(this.quoteMark),this.currentToken.read(i.charAt(0)),this.tokens[this.tokens.length]=this.currentToken,i=i.substring(1)}}return!0}return this.currentToken=new l(this.quoteMark),this.currentToken.read(t),this.tokens[this.tokens.length]=this.currentToken,this.currentToken.sealed&&this.seal(),!0},seal:function(){this.sealed=!0}},l=function(t){this.type=i.ATTR_VALUE_TOKEN,this.quoteMark=t||"",this.value=""},l.prototype={read:function(t){return this.sealed?!1:t===this.quoteMark?(this.seal(),!0):this.quoteMark?(this.value+=t,!0):/[\s"'=<>`]/.test(t)?(this.seal(),!1):(this.value+=t,!0)},seal:function(){this.sealed=!0}},y=function(){},y.prototype={read:function(t){return this.sealed?!1:"/"===t?(this.value="/",this.seal(),!0):(this.seal(),!1)},seal:function(){this.sealed=!0}},w=function(){},w.prototype={read:function(t){if(this.sealed)return!1;if(">"===t)return this.value=">",this.seal(),!0;throw'Expected ">", received "'+t+'"'},seal:function(){this.sealed=!0}},r=function(t){var e,i,n;for(n="";t.length;){if(e=t.indexOf("<!--"),i=t.indexOf("-->"),-1===e&&-1===i){n+=t;break}if(-1!==e&&-1===i)throw"Illegal HTML - expected closing comment sequence ('-->')";if(-1!==i&&-1===e||e>i)throw"Illegal HTML - unexpected closing comment sequence ('-->')";n+=t.substr(0,e),t=t.substring(i+3)}return n},s=function(t){var e,n,r,s,o,a;for(o=/^\s*\r?\n/,a=/\r?\n\s*$/,e=2;t.length>e;e+=1)n=t[e],r=t[e-1],s=t[e-2],n.type===i.TEXT&&r.type!==i.TAG&&s.type===i.TEXT&&a.test(s.value)&&o.test(n.value)&&(r.type!==i.INTERPOLATOR&&r.type!==i.TRIPLE&&(s.value=s.value.replace(a,"\n")),n.value=n.value.replace(o,""),""===n.value&&t.splice(e--,1));return t},o=function(t){var e,n,r,s;for(e=0;t.length>e;e+=1)n=t[e],r=t[e-1],s=t[e+1],n.type===i.COMMENT&&(t.splice(e,1),r&&s&&r.type===i.TEXT&&s.type===i.TEXT&&(r.value+=s.value,t.splice(e,1)),e-=1);return t},i=e.types,n=/\s/,f={"#":i.SECTION,"^":i.INVERTED,"/":i.CLOSING,">":i.PARTIAL,"!":i.COMMENT,"&":i.INTERPOLATOR}}(e,i),function(t){var e,i,n,r,s,o,a,h,c,p,u;e=t.types,r={"accept-charset":"acceptCharset",accesskey:"accessKey",bgcolor:"bgColor","class":"className",codebase:"codeBase",colspan:"colSpan",contenteditable:"contentEditable",datetime:"dateTime",dirname:"dirName","for":"htmlFor","http-equiv":"httpEquiv",ismap:"isMap",maxlength:"maxLength",novalidate:"noValidate",pubdate:"pubDate",readonly:"readOnly",rowspan:"rowSpan",tabindex:"tabIndex",usemap:"useMap"},n="undefined"!=typeof window?window.document:null,i=function(t,e){var i,r=[];for(i=n.createElement("div"),i.innerHTML=t;i.firstChild;)r[r.length]=i.firstChild,e.appendChild(i.firstChild);return r},t.DomFragment=function(e){return this.docFrag=n.createDocumentFragment(),"string"==typeof e.descriptor?(this.nodes=i(e.descriptor,this.docFrag),void 0):(t.Fragment.call(this,e),void 0)},t.DomFragment.prototype={createItem:function(t){if("string"==typeof t.descriptor)return new s(t,this.docFrag);switch(t.descriptor.t){case e.INTERPOLATOR:return new c(t,this.docFrag);case e.SECTION:return new u(t,this.docFrag);case e.TRIPLE:return new p(t,this.docFrag);case e.ELEMENT:return new o(t,this.docFrag);case e.PARTIAL:return new a(t,this.docFrag);default:throw"WTF? not sure what happened here..."}},teardown:function(){var t;if(this.nodes)for(;this.nodes.length;)t=this.nodes.pop(),t.parentNode.removeChild(t);else for(;this.items.length;)this.items.pop().teardown()},firstNode:function(){return this.items[0]?this.items[0].firstNode():null},findNextNode:function(t){var e=t.index;return this.items[e+1]?this.items[e+1].firstNode():null}},a=function(e,i){this.fragment=new t.DomFragment({descriptor:e.root.partials[e.descriptor.r]||[],root:e.root,parentNode:e.parentNode,contextStack:e.contextStack,parent:this}),i.appendChild(this.fragment.docFrag)},a.prototype={teardown:function(){this.fragment.teardown()}},s=function(t,e){this.node=n.createTextNode(t.descriptor),this.root=t.root,this.parentNode=t.parentNode,e.appendChild(this.node)},s.prototype={teardown:function(){this.root.el.contains(this.node)&&this.parentNode.removeChild(this.node)},firstNode:function(){return this.node}},o=function(e,i){var r,s,o,a,c,p,u,d;if(r=this.descriptor=e.descriptor,this.root=e.root,this.parentFragment=e.parentFragment,this.parentNode=e.parentNode,this.index=e.index,this.eventListeners=[],this.customEventListeners=[],r.a&&r.a.xmlns){if(s=r.a.xmlns,"string"!=typeof s)throw Error("Namespace attribute cannot contain mustaches")}else s=this.parentNode.namespaceURI;if(this.node=n.createElementNS(s,r.e),r.f&&("string"==typeof r.f&&this.node.namespaceURI===t.namespaces.html?this.node.innerHTML=r.f:(this.children=new t.DomFragment({descriptor:r.f,root:e.root,parentNode:this.node,contextStack:e.contextStack,parent:this}),this.node.appendChild(this.children.docFrag))),r.x)for(o in r.x)r.x.hasOwnProperty(o)&&this.addEventProxy(o,r.x[o],e.contextStack);
this.attributes=[],u=[];for(c in r.a)r.a.hasOwnProperty(c)&&(p=r.a[c],a=new h({parent:this,name:c,value:void 0===p?null:p,root:e.root,parentNode:this.node,contextStack:e.contextStack}),this.attributes[this.attributes.length]=a,a.isBindable&&u.push(a),a.isTwowayNameAttr?d=a:a.update());for(;u.length;)u.pop().bind(this.root.lazy);d&&(d.updateViewModel(),d.update()),i.appendChild(this.node)},o.prototype={addEventProxy:function(e,i,n){var r,s,o,a,h=this;"string"==typeof i?a=function(t){h.root.fire(i,t,h.node)}:(o=new t.TextFragment({descriptor:i,root:this.root,parent:this,contextStack:n}),a=function(t){h.root.fire(o.getValue(),t,h.node)}),(r=t.eventDefns[e])?(s=r(this.node,a),this.customEventListeners[this.customEventListeners.length]=s):void 0!==this.node["on"+e]&&(this.eventListeners[this.eventListeners.length]={n:e,h:a},this.node.addEventListener(e,a))},teardown:function(){var t;for(this.root.el.contains(this.node)&&this.parentNode.removeChild(this.node),this.children&&this.children.teardown();this.attributes.length;)this.attributes.pop().teardown();for(;this.eventListeners.length;)t=this.eventListeners.pop(),this.node.removeEventListener(t.n,t.h);for(;this.customEventListeners.length;)this.customEventListeners.pop().teardown()},firstNode:function(){return this.node},bubble:function(){}},h=function(e){var i,n,s,o,a,h,c,p;if(i=e.name,n=e.value,this.parent=e.parent,s=i.indexOf(":"),-1!==s&&(o=i.substr(0,s),"xmlns"!==o&&(i=i.substring(s+1),this.namespace=t.namespaces[o],!this.namespace)))throw'Unknown namespace ("'+o+'")';return null===n||"string"==typeof n?(this.namespace?e.parentNode.setAttributeNS(this.namespace,i,n):e.parentNode.setAttribute(i,n),void 0):(this.root=e.root,this.parentNode=e.parentNode,this.name=i,this.children=[],this.namespace||e.parentNode.namespaceURI!==t.namespaces.html||(c=this.name.toLowerCase(),p=r[c]||c,void 0!==e.parentNode[p]&&(this.propertyName=p),("boolean"==typeof e.parentNode[p]||"value"===p)&&(this.useProperty=!0)),this.parentFragment=this.parent.parentFragment,this.fragment=new t.TextFragment({descriptor:n,root:this.root,parent:this,contextStack:e.contextStack}),1===this.fragment.items.length&&(this.selfUpdating=!0),this.root.twoway&&(a=this.parent.descriptor.e.toLowerCase(),h=!("name"!==p&&"value"!==p&&"checked"!==p||"input"!==a&&"textarea"!==a&&"select"!==a)),h&&(this.isBindable=!0,"name"===p&&(this.isTwowayNameAttr=!0)),this.ready=!0,this.isTwowayNameAttr||this.update(),void 0)},h.prototype={bind:function(e){var i,n,r=this,s=this.parentNode;if(!this.fragment)return!1;if(1!==this.fragment.items.length||this.fragment.items[0].type!==t.types.INTERPOLATOR)throw"Not a valid two-way data binding candidate - must be a single interpolator";this.interpolator=this.fragment.items[0],i=this.interpolator.keypath||this.interpolator.descriptor.r,-1!==(n=i.indexOf(".⭆"))&&(i=i.substr(0,n)),"checkbox"===s.type||"radio"===s.type?"name"===this.propertyName?(s.name="{{"+i+"}}",this.updateViewModel=function(){s.checked&&r.root.set(i,s.value)}):"checked"===this.propertyName&&(this.updateViewModel=function(){r.root.set(i,s.checked)}):this.updateViewModel=function(){var t;t=r.interpolator.descriptor.m?r.root._modify(s.value,r.interpolator.descriptor.m):s.value,"0"===t?t=0:""!==t&&(t=+t||t),r.root.set(i,t)},this.updateViewModel&&(this.twoway=!0,s.addEventListener("change",this.updateViewModel),s.addEventListener("click",this.updateViewModel),s.addEventListener("blur",this.updateViewModel),e||(s.addEventListener("keyup",this.updateViewModel),s.addEventListener("keydown",this.updateViewModel),s.addEventListener("keypress",this.updateViewModel),s.addEventListener("input",this.updateViewModel)))},teardown:function(){if(this.updateViewModel&&(this.parentNode.removeEventListener("change",this.updateViewModel),this.parentNode.removeEventListener("click",this.updateViewModel),this.parentNode.removeEventListener("blur",this.updateViewModel),this.parentNode.removeEventListener("keyup",this.updateViewModel),this.parentNode.removeEventListener("keydown",this.updateViewModel),this.parentNode.removeEventListener("keypress",this.updateViewModel),this.parentNode.removeEventListener("input",this.updateViewModel)),this.children)for(;this.children.length;)this.children.pop().teardown()},bubble:function(){this.selfUpdating?this.update():this.deferred||(this.root._defAttrs[this.root._defAttrs.length]=this,this.deferred=!0)},update:function(){var t,e;if(!this.ready)return this;if(this.twoway){if(e=this.name.toLowerCase(),this.value=this.interpolator.value,"name"===e&&("checkbox"===this.parentNode.type||"radio"===this.parentNode.type))return this.parentNode.checked=this.value===this.parentNode.value?!0:!1,this;if(n.activeElement===this.parentNode)return this}return t=this.fragment.getValue(),void 0===t&&(t=""),this.useProperty?(this.parentNode[this.propertyName]=t,this):this.namespace?(this.parentNode.setAttributeNS(this.namespace,this.name,t),this):(this.parentNode.setAttribute(this.name,t),this)}},c=function(e,i){this.node=n.createTextNode(""),i.appendChild(this.node),t.Mustache.call(this,e)},c.prototype={teardown:function(){this.observerRefs?this.root._unobserveAll(this.observerRefs):this.root._cancelKeypathResolution(this),this.root.el.contains(this.node)&&this.parentNode.removeChild(this.node)},update:function(t){t!==this.text&&(this.text=t,this.node.data=t)},firstNode:function(){return this.node}},p=function(e,i){this.nodes=[],this.docFrag=n.createDocumentFragment(),this.initialising=!0,t.Mustache.call(this,e),i.appendChild(this.docFrag),this.initialising=!1},p.prototype={teardown:function(){if(this.root.el.contains(this.parentNode))for(;this.nodes.length;)this.parentNode.removeChild(this.nodes.pop());this.observerRefs?this.root._unobserveAll(this.observerRefs):this.root._cancelKeypathResolution(this)},firstNode:function(){return this.nodes[0]?this.nodes[0]:this.parentFragment.findNextNode(this)},update:function(t){if(t!==this.html){for(this.html=t;this.nodes.length;)this.parentNode.removeChild(this.nodes.pop());this.nodes=i(t,this.docFrag),this.initialising||this.parentNode.insertBefore(this.docFrag,this.parentFragment.findNextNode(this))}}},u=function(e,i){this.fragments=[],this.length=0,this.docFrag=n.createDocumentFragment(),this.initialising=!0,t.Mustache.call(this,e),i.appendChild(this.docFrag),this.initialising=!1},u.prototype={teardown:function(){this.unrender(),this.observerRefs?this.root._unobserveAll(this.observerRefs):this.root._cancelKeypathResolution(this)},firstNode:function(){return this.fragments[0]?this.fragments[0].firstNode():this.parentFragment.findNextNode(this)},findNextNode:function(t){return this.fragments[t.index+1]?this.fragments[t.index+1].firstNode():this.parentFragment.findNextNode(this)},unrender:function(){for(;this.fragments.length;)this.fragments.shift().teardown()},update:function(e){t.sectionUpdate.call(this,e),this.initialising||this.parentNode.insertBefore(this.docFrag,this.parentFragment.findNextNode(this))},createFragment:function(e){var i=new t.DomFragment(e);return this.docFrag.appendChild(i.docFrag),i}}}(i),function(t){var e,i,n,r,s;e=t.types,t.TextFragment=function(e){t.Fragment.call(this,e)},t.TextFragment.prototype={createItem:function(t){if("string"==typeof t.descriptor)return new i(t.descriptor);switch(t.descriptor.t){case e.INTERPOLATOR:return new n(t);case e.TRIPLE:return new r(t);case e.SECTION:return new s(t);default:throw"Something went wrong in a rather interesting way"}},bubble:function(){this.value=this.getValue(),this.parent.bubble()},teardown:function(){var t,e;for(t=this.items.length,e=0;t>e;e+=1)this.items[e].teardown()},getValue:function(){var t;return 1===this.items.length&&(t=this.items[0].value,void 0!==t)?t:""+this},toString:function(){return this.items.join("")}},i=function(t){this.text=t},i.prototype={toString:function(){return this.text},teardown:function(){}},n=function(e){t.Mustache.call(this,e)},n.prototype={update:function(t){this.value=t,this.parent.bubble()},teardown:function(){this.observerRefs?this.root._unobserveAll(this.observerRefs):this.root._cancelKeypathResolution(this)},toString:function(){return void 0===this.value?"":this.value}},r=n,s=function(e){this.fragments=[],this.length=0,t.Mustache.call(this,e)},s.prototype={teardown:function(){this.unrender(),this.observerRefs?this.root._unobserveAll(this.observerRefs):this.root._cancelKeypathResolution(this)},unrender:function(){for(;this.fragments.length;)this.fragments.shift().teardown();this.length=0},bubble:function(){this.value=this.fragments.join(""),this.parent.bubble()},update:function(e){t.sectionUpdate.call(this,e),this.value=this.fragments.join(""),this.parent.bubble()},createFragment:function(e){return new t.TextFragment(e)},toString:function(){return this.fragments.join("")}}}(i),e.extend=function(t){var i,n,r;i=this,n=function(){e.apply(this,arguments),this.init&&this.init.apply(this,arguments)};for(r in i.prototype)i.prototype.hasOwnProperty(r)&&(n.prototype[r]=i.prototype[r]);for(r in t)if(t.hasOwnProperty(r)){if(e.prototype.hasOwnProperty(r))throw Error('Cannot override "'+r+'" method or property of Ractive prototype');n.prototype[r]=t[r]}return n.extend=i.extend,n},function(t){var e,i,n,r,s,o,a;e=Object.defineProperty?Object.defineProperty:function(t,e,i){t[e]=i.value},t.addKeypath=function(t,i,r){var s,o,a,h;t._ractive?(s=t._ractive.roots,o=t._ractive.keypathsByIndex,a=s.indexOf(r),-1===a&&(a=s.length,s[a]=r),o[a]||(o[a]=[]),h=o[a],-1===h.indexOf(i)&&(h[h.length]=i)):(e(t,"_ractive",{value:{roots:[r],keypathsByIndex:[[i]]},configurable:!0}),n(t))},t.removeKeypath=function(t,e,i){var n,s,o,a,h;if(!t._ractive)throw Error("Attempted to remove keypath from non-wrapped array. This error is unexpected - please send a bug report to @rich_harris");if(n=t._ractive.roots,o=n.indexOf(i),-1===o)throw Error("Ractive instance was not listed as a dependent of this array. This error is unexpected - please send a bug report to @rich_harris");if(s=t._ractive.keypathsByIndex,a=s[o],h=a.indexOf(e),-1===h)throw Error("Attempted to unlink non-linked keypath from array. This error is unexpected - please send a bug report to @rich_harris");a.splice(h,1),a.length||n.splice(o,1),n.length||r(t)},i=function(t){var e,i,n,r,s,o;for(e=t._ractive.roots,i=t._ractive.keypathsByIndex,s=e.length;s--;)for(n=e[s],r=i[s],o=r.length;o--;)n.set(r[o],t)},s=[],a=["pop","push","reverse","shift","sort","splice","unshift"],a.forEach(function(t){var n=function(){var e=Array.prototype[t].apply(this,arguments);return this._ractive.setting=!0,i(this),this._ractive.setting=!1,e};e(s,t,{value:n})}),o={},o.__proto__?(n=function(t){t.__proto__=s},r=function(t){delete t._ractive,t.__proto__=Array.prototype}):(n=function(t){var i,n;for(i=a.length;i--;)n=a[i],e(t,n,{value:s[n]})},r=function(t){var e;for(e=a.length;e--;)delete t[a[e]];delete t._ractive,console.log("unwrapped array",t)})}(i),e.easing={linear:function(t){return t},easeIn:function(t){return Math.pow(t,3)},easeOut:function(t){return Math.pow(t-1,3)+1},easeInOut:function(t){return 1>(t/=.5)?.5*Math.pow(t,3):.5*(Math.pow(t-2,3)+2)}},function(t,e){var i,n,r;r="undefined"!=typeof window?window:{},function(t,e,i){var n;for(n=0;t.length>n&&!i.requestAnimationFrame;++n)i.requestAnimationFrame=i[t[n]+"RequestAnimationFrame"],i.cancelAnimationFrame=i[t[n]+"CancelAnimationFrame"]||i[t[n]+"CancelRequestAnimationFrame"];i.requestAnimationFrame||(i.requestAnimationFrame=function(t){var n,r,s;return n=Date.now(),r=Math.max(0,16-(n-e)),s=i.setTimeout(function(){t(n+r)},r),e=n+r,s}),i.cancelAnimationFrame||(i.cancelAnimationFrame=function(t){i.clearTimeout(t)})}(["ms","moz","webkit","o"],0,r),n={animations:[],tick:function(){var t,e;for(t=0;this.animations.length>t;t+=1)e=this.animations[t],e.tick()||this.animations.splice(t--,1);this.animations.length?r.requestAnimationFrame(this.boundTick):this.running=!1},boundTick:function(){n.tick()},push:function(t){this.animations[this.animations.length]=t,this.running||(this.running=!0,this.tick())}},i=function(e){var i;this.startTime=Date.now();for(i in e)e.hasOwnProperty(i)&&(this[i]=e[i]);this.interpolator=t.interpolate(this.from,this.to),this.running=!0},i.prototype={tick:function(){var t,e,i,n;return this.running?(n=Date.now(),t=n-this.startTime,t>=this.duration?(this.root.set(this.keys,this.to),this.complete&&this.complete(1),this.running=!1,!1):(e=this.easing?this.easing(t/this.duration):t/this.duration,i=this.interpolator(e),this.root.set(this.keys,i),this.step&&this.step(e,i),!0)):!1},stop:function(){this.running=!1}},t.prototype.animate=function(r,s,o){var a,h,c,p,u;for(o=o||{},p=n.animations.length;p--;)n.animations[p].keypath===r&&n.animations[p].stop();o.easing&&(a="function"==typeof o.easing?o.easing:this.easing&&this.easing[o.easing]?this.easing[o.easing]:t.easing[o.easing],"function"!=typeof a&&(a=null)),h=void 0===o.duration?400:o.duration,u=e.splitKeypath(r),c=new i({keys:u,from:this.get(u),to:s,root:this,duration:h,easing:a,step:o.step,complete:o.complete}),n.push(c)}}(e,i),function(t,e){t.interpolate=function(i,n){if(e.isNumeric(i)&&e.isNumeric(n))return t.interpolators.number(+i,+n);if(e.isArray(i)&&e.isArray(n))return t.interpolators.array(i,n);if(e.isObject(i)&&e.isObject(n))return t.interpolators.object(i,n);throw Error("Could not interpolate values")},t.interpolators={number:function(t,e){var i=e-t;return i?function(e){return t+e*i}:function(){return t}},array:function(e,i){var n,r,s,o;for(n=[],r=[],o=s=Math.min(e.length,i.length);o--;)r[o]=t.interpolate(e[o],i[o]);for(o=s;e.length>o;o+=1)n[o]=e[o];for(o=s;i.length>o;o+=1)n[o]=i[o];return function(t){for(var e=s;e--;)n[e]=r[e](t);return n}},object:function(e,i){var n,r,s,o,a=[];s={},r={};for(o in e)e.hasOwnProperty(o)&&(i.hasOwnProperty(o)?(a[a.length]=o,r[o]=t.interpolate(e[o],i[o])):s[o]=e[o]);for(o in i)i.hasOwnProperty(o)&&!e.hasOwnProperty(o)&&(s[o]=i[o]);return n=a.length,function(t){for(var e,i=n;i--;)e=a[i],s[e]=r[e](t);return s}}}}(e,i),i.namespaces={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"},"undefined"!=typeof module&&module.exports?module.exports=e:"function"==typeof define&&define.amd?define(function(){return e}):t.Ractive=e})(this);