avalon-rails 1.5.5 → 1.5.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,3 @@
1
- !function(e,t){"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("Avalon requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){function n(){avalon.config.debug&&console.log.apply(console,arguments)}function r(){return Object.create(null)}function i(e){return Function.apply(o,e)}function o(){}function l(e,t){"string"==typeof e&&(e=e.match(_t)||[]);for(var n={},a=void 0!==t?t:1,r=0,i=e.length;i>r;r++)n[e[r]]=a;return n}function s(){if(e.VBArray){var t=document.documentMode;return t?t:e.XMLHttpRequest?7:6}return 0/0}function c(e){if(e&&"object"==typeof e){var t=e.length,n=zt.call(e);if(/(Array|List|Collection|Map|Arguments)\]$/.test(n))return!0;if("[object Object]"===n&&t===t>>>0)return!0}return!1}function u(e,t){if(e&&e.childNodes)for(var n,a=e.childNodes,r=0;n=a[r++];)if(n.tagName){var i=Pt.createElementNS(sn,n.tagName.toLowerCase());Wt.forEach.call(n.attributes,function(e){i.setAttribute(e.name,e.value)}),u(n,i),t.appendChild(i)}}function f(e){for(var t in e)if(Ut.call(e,t)){var n=e[t];"function"==typeof f.plugins[t]?f.plugins[t](n):"object"==typeof f[t]?avalon.mix(f[t],n):f[t]=n}return this}function d(e){return(e+"").replace(mn,"\\$&")}function p(e,t){var n=this.$events||(this.$events={}),a=n[e]||(n[e]=[]);if("function"==typeof t){var r=t;r.uniqueNumber=Math.random(),t={element:Jt,type:"user-watcher",handler:o,vmodels:[this],expr:e,uniqueNumber:r.uniqueNumber},t.wildcard=/\*/.test(e)}if(t.update)t.oneTime||avalon.Array.ensure(a,t);else{if(/\w\.*\B/.test(e)){t.getter=o;var i=this;t.update=function(){var e=this.fireArgs||[];e[2]&&t.handler.apply(i,e),delete this.fireArgs},a.sync=!0,avalon.Array.ensure(a,t)}else avalon.injectBinding(t);r&&(t.handler=r)}return function(){t.update=t.getter=t.handler=o,t.element=Pt.createElement("a")}}function v(e,t){var n=this.$events;if(n&&n[e]){t&&(t[2]=e);var a=n[e];m(a,t);var r=this.$up;r&&(this.$pathname&&v.call(r,this.$pathname+"."+e,t),v.call(r,"*."+e,t))}else{if(r=this.$up,this.$ups){for(var i in this.$ups)v.call(this.$ups[i],i+"."+e,t);return}if(r){var o=this.$pathname;""===o&&(o="*");var l=o+"."+e;a=l.split("."),-1===a.indexOf("*")?(v.call(r,l,t),a[1]="*",v.call(r,a.join("."),t)):v.call(r,l,t)}}}function h(e,t){for(;;){if(e.$watch){var n=e.$events||(e.$events={}),a=n[t]||(n[t]=[]);return void kn.collectDependency(a)}if(e=e.$up,!e)break;t=e.$pathname+"."+t}}function m(e,t){if(e){new Date-An>444&&"object"==typeof e[0]&&D();for(var n,a=[],r=[],i=0;n=e[i++];)"user-watcher"===n.type?a.push(n):r.push(n);if(f.async){for(ma.render(),i=0;n=r[i++];)if(n.update){var o=S(n);ma.queue[o]||(ma.queue[o]=1,ma.queue.push(n))}}else for(i=0;n=r[i++];)n.update&&n.update();for(i=0;n=a[i++];)(t&&t[2]===n.expr||n.wildcard)&&(n.fireArgs=t),n.update()}}function g(e,t){return t=t||{},t.watch=!0,b(e,t)}function y(){}function b(e,t){function a(e){return u[e]===!0}if(!e||e.$id&&e.$accessors||e.nodeName&&e.nodeType>0)return e;t=t||Ft;var r=t.force||Ft,i=t.old,o=i&&i.$accessors||Ft,s=new y,c={},u={},f=[],d=[],h={};e.$skipArray&&(h=l(e.$skipArray),delete e.$skipArray);var m=e.$computed;if(m){delete e.$computed;for(var g in m)u[g]=!0,function(e,t){var n;c[e]={get:function(){return n=t.get.call(this)},set:function(a){if("function"==typeof t.set){var r=n;t.set.call(this,a);var i=this[e];this.$fire&&i!==r&&this.$fire(e,i,r)}},enumerable:!0,configurable:!0}}(g,m[g])}for(g in e){var b=e[g];bn[g]||(u[g]=!0),"function"==typeof b||b&&b.nodeName&&b.nodeType>0||!r[g]&&("$"===g.charAt(0)||bn[g]||h[g])?f.push(g):$(b)?(n("warning:计算属性建议放在$computed对象中统一定义"),function(e,t){var n;c[e]={get:function(){return n=t.get.call(this)},set:function(a){if("function"==typeof t.set){var r=n;t.set.call(this,a);var i=this[e];this.$fire&&i!==r&&this.$fire(e,i,r)}},enumerable:!0,configurable:!0}}(g,b)):(d.push(g),c[g]=o[g]?o[g]:x(g,b))}c.$model=$n,s=Object.defineProperties(s,c,e),f.forEach(function(t){s[t]=e[t]}),T(s,"$ups",null),T(s,"$id","anonymous"),T(s,"$up",i?i.$up:null),T(s,"$track",Object.keys(u)),T(s,"$active",!1),T(s,"$pathname",i?i.$pathname:""),T(s,"$accessors",c),T(s,"hasOwnProperty",a),t.watch&&(T(s,"$watch",function(){return p.apply(s,arguments)}),T(s,"$fire",function(e,t){if(0===e.indexOf("all!")){var n=e.slice(4);for(var a in avalon.vmodels){var r=avalon.vmodels[a];r.$fire&&r.$fire.apply(r,[n,t])}}else v.call(s,e,[t])})),d.forEach(function(t){var n=i&&i[t],a=s[t]=e[t];a&&"object"==typeof a&&(a.$up=s,a.$pathname=t),v.call(s,t,[a,n])});for(g in m)b=s[g];return s.$active=!0,s}function $(e){if(e&&"object"==typeof e){for(var t in e)if("get"!==t&&"set"!==t)return!1;return"function"==typeof e.get}}function x(e,t){var n,t=0/0;return{get:function(){return this.$active&&h(this,e),t},set:function(a){if(t!==a){var r=t;n=w(a,t),n?t=n:(n=void 0,t=a),Object(n)===n&&(n.$pathname=e,n.$up=this),this.$active&&v.call(this,e,[t,r])}},enumerable:!0,configurable:!0}}function w(e,t,n,a){if(Array.isArray(e))return C(e,t,a);if(avalon.isPlainObject(e)){if(t&&"object"==typeof t){var r=Object.keys(e),i=Object.keys(t);if(r.join(";")===i.join(";")){for(var o in e)e.hasOwnProperty(o)&&(t[o]=e[o]);return t}t.$active=!1}return b(e,{old:t,watch:a})}return n?e:void 0}function C(e,t,n){if(t){var a=[0,t.length].concat(e);return t.splice.apply(t,a),t}for(var r in Cn)e[r]=Cn[r];T(e,"$up",null),T(e,"$pathname",""),T(e,"$track",N(e.length)),e._=b({length:0/0},{watch:!0}),e._.length=e.length,e._.$watch("length",function(t,n){v.call(e.$up,e.$pathname+".length",[t,n])}),n&&T(e,"$watch",function(){return p.apply(e,arguments)}),Object.defineProperty(e,"$model",$n);for(var i=0,o=e.length;o>i;i++){var l=e[i]=w(e[i],0,1,1);Object(l)===l&&(l.$up=e)}return e}function T(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!1,configurable:!0})}function k(e){var t=avalon.type(e);if("array"===t){for(var n=[],a=0;a<e.length;a++)n[a]=k(e[a]);return n}if("object"===t){var r={};for(a in e)if(e.hasOwnProperty(a)){var i=e[a];r[a]=i&&i.nodeType?i:k(i)}return r}return e}function E(e,t){for(var n={},a=0,r=t.length;r>a;a++){n[a]=e[a];var i=t[a];i in n?(e[a]=n[i],delete n[i]):e[a]=e[i]}}function N(e){for(var t=[],n=0;e>n;n++)t[n]=en("$proxy$each");return t}function A(e,t,n){switch(t){case"push":case"unshift":n=N(n.length);break;case"splice":if(n.length>2){{n[1],n.length-2}n=[n[0],n[1]].concat(N(n.length-2))}}Array.prototype[t].apply(e,n)}function O(e,t){t.oneTime||e&&avalon.Array.ensure(e,t)&&t.element&&(j(t,e),new Date-An>444&&D())}function M(e,t){for(var n,a=[],r=0;n=e[r++];)a.push(t?n.$id:n.$key);return a.join(";")}function S(e){if(!e.uniqueNumber){var t=e.element;e.uniqueNumber=t?1!==t.nodeType?e.type+"-"+S(t.parentNode)+"-"+ ++En:e.name+"-"+S(t):++En}return e.uniqueNumber}function j(e,t){var n=e.lists||(e.lists=[]),a=S(e);avalon.Array.ensure(n,t),t.$uuid=t.$uuid||en(),Nn[a]||(Nn[a]=1,Nn.push(e))}function D(e){for(var t=Nn.length,n=t,a=[],r={},i={};e=Nn[--t];){var o=e.type;i[o]?i[o]++:(i[o]=1,a.push(o))}var l=!1;if(a.forEach(function(e){On[e]!==i[e]&&(r[e]=1,l=!0)}),t=n,l)for(;e=Nn[--t];)if(null!==e.element){if(r[e.type]&&H(e.element)){Nn.splice(t,1),delete Nn[e.uniqueNumber];for(var s,c=e.lists,u=0;s=c[u++];)avalon.Array.remove(c,s),avalon.Array.remove(s,e);L(e)}}else Nn.splice(t,1);On=i,An=new Date}function L(e){delete Nn[e.uniqueNumber],e.element=null,e.rollback&&e.rollback();for(var t in e)e[t]=null}function H(e){try{{e.parentNode.nodeType}}catch(t){return!0}return e.ifRemove&&!Jt.contains(e.ifRemove)&&qt===e.parentNode?(e.parentNode&&e.parentNode.removeChild(e),!0):e.msRetain?0:1===e.nodeType?!Jt.contains(e):!avalon.contains(Jt,e)}function P(e){return e.replace(/([a-z\d])([A-Z]+)/g,"$1-$2").toLowerCase()}function R(e){return e.indexOf("-")<0&&e.indexOf("_")<0?e:e.replace(/[-_][^-_]/g,function(e){return e.charAt(1).toUpperCase()})}function q(e){try{if("object"==typeof e)return e;e="true"===e?!0:"false"===e?!1:"null"===e?null:+e+""===e?+e:Pn.test(e)?JSON.parse(e):e}catch(t){}return e}function B(e){return e.window&&e.document?e:9===e.nodeType?e.defaultView:!1}function F(e,t){if(e.offsetWidth<=0){var n=getComputedStyle(e,null);if(_n.test(n.display)){var a={node:e};for(var r in Fn)a[r]=n[r],e.style[r]=Fn[r];t.push(a)}var i=e.parentNode;i&&1===i.nodeType&&F(i,t)}}function _(e){var t=e.tagName.toLowerCase();return"input"===t&&/checkbox|radio/.test(e.type)?"checked":t}function I(e,t){var n=[],a=!!t;t=t||0;for(var r="unknown",o="",l=0;l<e.length;l++){var s=e.charAt(l);if("'"===s||'"'===s)"unknown"===r?r=s:r===s&&(r="unknown");else if("\\"===s)("'"===r||'"'===r)&&l++;else if(Yn.test(s))"unknown"===r?(r="variable",o=s):"maybePath"===r?(o=n.pop(),o+="."+s,r="variable"):"variable"===r&&(o+=s);else if(/\w/.test(s))"variable"===r&&(o+=s);else if("."===s)"variable"===r&&o&&(n.push(o),o="",r="maybePath");else if("["===s){if("variable"===r||"maybePath"===r){o&&(n.push(o),o="");var c=n.length,u=n[c-1],f=I(e.slice(l),l);if(f.length)n[c-1]=u+".*",n=f.concat(n);else{var d=e.slice(l+1,f.i);try{var p=i(["return "+d])();n[c-1]=u+"."+p}catch(v){}}r="maybePath",l=f.i}}else if("]"===s){if(a)return n.i=l+t,V(n,o),n}else Un.test(s)&&"\r"!==s&&"\n"!==s?"variable"===r&&(V(n,o)&&(r="maybePath"),o=""):(V(n,o),r="unknown",o="")}return V(n,o),n}function V(e,t){return t&&!Vn[t]?(e.push(t),!0):void 0}function X(e,t,n,a){for(var r,i=[],o=" = "+n+".",l=e.length;r=e[--l];)for(var s,c=r.split("."),u=c[0];s=c.shift();)t.hasOwnProperty(s)&&(i.push(u+o+u),a.observers.push({v:t,p:r}),e.splice(l,1));return i}function Y(e){e=e.trim();var t=Wn.get(e);if(t)return t.concat();for(var n,a=I(e),r={},i=[],o=0;n=a[o++];)r[n]||(r[n]=1,i.push(n));return Wn.put(e,i).concat()}function U(e,t,n){var a=n.filters;"string"==typeof a&&a.trim()&&!n._filters&&(n._filters=W(a.trim()));var r=Y(e),o=new Date-0,l=[],s=[],c=[];n.observers=[];for(var u=0,f=t.length;f>u;u++)if(r.length){var d="vm"+o+"_"+u;s.push(d),c.push(t[u]),l.push.apply(l,X(r,t[u],d,n))}n.args=c;var p=n.type,v=t.map(function(e){return String(e.$id).replace(zn,"$1")})+e+p,h=Gn.get(v);if(h){if("duplex"===p){var m=Gn.get(v+"setter");n.setter=m.apply(m,n.args)}return n.getter=h}if(l.length||l.push("fix"+o),"duplex"===p){var g={};l.forEach(function(e){var t=e.split("=");g[t[0].trim()]=t[1].trim()}),e=e.replace(/[\$\w]+/,function(e){return g[e]?g[e]:e});var y=i(s.concat("'use strict';return function(vvv){"+e+" = vvv\n}\n"));Gn.put(v+"setter",y),n.setter=y.apply(y,n.args)}if("on"===p){-1===e.indexOf("(")?e+=".call(this, $event)":e=e.replace("(",".call(this,"),s.push("$event"),e="\nreturn "+e+";";var b=e.lastIndexOf("\nreturn"),$=e.slice(0,b),x=e.slice(b);e=$+"\n"+x}else e="\nreturn "+e+";";return h=i(s.concat("'use strict';\nvar "+l.join(",\n")+e)),Gn.put(v,h)}function z(e){var t=pn.test(e);if(t){var n=it(e);return 1===n.length?n[0].expr:n.map(function(e){return e.type?"("+e.expr+")":ta(e.expr)}).join(" + ")}return e}function W(e){return e=e.replace(Zn,"").replace(Jn,function(){return"],|"}).replace(Kn,function(e,t){return"["+ta(t)}).replace(Qn,function(){return'"],["'}).replace(ea,function(){return'",'})+"]",i(["return ["+e+"]"])()}function G(e,t,n){var a=setTimeout(function(){var r=e.innerHTML;clearTimeout(a),r===n?t():G(e,t,r)})}function Z(e,t){var n=e.getAttribute("avalonctrl")||t.$id;e.setAttribute("avalonctrl",n),t.$events&&(t.$events.expr=e.tagName+'[avalonctrl="'+n+'"]')}function J(e,t){for(var n,a=0;n=e[a++];)n.vmodels=t,on[n.type].init(n),avalon.injectBinding(n),n.getter&&1===n.element.nodeType&&n.element.removeAttribute(n.name);e.length=0}function K(e,t){return e.priority-t.priority}function Q(e,t,a){var r=!0;if(t.length){for(var i,o=e.attributes,l=[],s={},c=0;i=o[c++];){var u=i.name;if(!s[u]&&(s[u]=1,i.specified&&(a=u.match(oa)))){var f=a[1],d=a[2]||"",p=i.value;if(la[f]?(d=f,f="on"):sa[f]&&(d=f,f="attr",u="ms-"+f+"-"+d,n("warning!请改用"+u+"代替"+i.name+"!")),on[f]){var v=p.replace(ia,""),h=p!==v,m={type:f,param:d,element:e,name:u,expr:v,oneTime:h,priority:(on[f].priority||10*f.charCodeAt(0))+(Number(d.replace(/\D/g,""))||0)};if("html"===f||"text"===f){var g=rt(p).filters;m.expr=m.expr.replace(g,""),m.filters=g.replace(da,function(){return m.type="html",m.group=1,""}).trim()}else if("duplex"===f)var y=u;else if("ms-if-loop"===u)m.priority+=100;else if("ms-attr-value"===u)var b=u;l.push(m)}}}if(l.length){for(l.sort(K),y&&b&&"text"===e.type&&n("warning!一个控件不能同时定义ms-attr-value与"+y),c=0;m=l[c];c++){if(f=m.type,ca.test(f))return J(l.slice(0,c+1),t);r&&(r=!ua.test(f))}J(l,t)}}r&&!na[e.tagName]&&(ra&&ra(e),tt(e,t))}function et(e){for(var t,n=e.attributes,a={},r=0;t=n[r++];)t.specified&&!fa.test(t.name)&&(a[R(t.name)]=q(t.value));return a}function tt(e,t){var n=avalon.slice(e.childNodes);nt(n,t)}function nt(e,t){for(var n,a=0;n=e[a++];)switch(n.nodeType){case 1:var r=n;if(!r.msResolved&&r.parentNode&&1===r.parentNode.nodeType){var i=st(r);if(i){var o=r.localName?r.localName.replace(i+":",""):r.nodeName,l=i+":"+R(o);ga.push({library:i,element:r,fullName:l,widget:o,vmodels:t,name:"widget"}),avalon.components[l]&&avalon.component(l)}}at(n,t),n.msHasEvent&&avalon.fireDom(n,"datasetchanged",{bubble:n.msHasEvent});break;case 3:pn.test(n.nodeValue)&&ot(n,t,a)}}function at(e,t,n){var a=e.getAttribute("ms-skip"),r=e.getAttributeNode("ms-important"),i=e.getAttributeNode("ms-controller");if("string"!=typeof a){if(n=r||i){var o=avalon.vmodels[n.value];if(!o)return;t=n===r?[o]:[o].concat(t),e.removeAttribute(n.name),e.classList.remove(n.name),Z(e,o)}Q(e,t)}}function rt(e){if(e.indexOf("|")>0){var t=e.replace(va,function(e){return Array(e.length+1).join("1")}),n=t.replace(pa,"ᄢ㍄").indexOf("|");if(n>-1)return{type:"text",filters:e.slice(n).trim(),expr:e.slice(0,n)}}return{type:"text",expr:e,filters:""}}function it(e){for(var t,n,a=[],r=0;;){if(n=e.indexOf(fn,r),-1===n)break;if(t=e.slice(r,n),t&&a.push({expr:t}),r=n+fn.length,n=e.indexOf(dn,r),-1===n)break;t=e.slice(r,n),t&&a.push(rt(t,r)),r=n+dn.length}return t=e.slice(r),t&&a.push({expr:t}),a}function ot(e,t,n){var a=[],r=it(e.data);if(r.length){for(var i,o=0;i=r[o++];){var l=Pt.createTextNode(i.expr);i.type&&(i.expr=i.expr.replace(ia,function(){return i.oneTime=!0,""}),i.element=l,i.filters=i.filters.replace(da,function(){return i.type="html",""}),i.pos=1e3*n+o,a.push(i)),Kt.appendChild(l)}e.parentNode.replaceChild(Kt,e),a.length&&J(a,t)}}function lt(e,t){if(t)for(var n,a=0;n=e[a++];)if(n.hasOwnProperty(t)&&"object"==typeof n[t]){var r=n[t];return r.$model||r}return{}}function st(e){if(e.scopeName&&"HTML"!==e.scopeName)return e.scopeName;var t=e.nodeName.toLowerCase(),n=t.indexOf(":");return n>0?t.slice(0,n):void 0}function ct(e){return null==e?"":e}function ut(e,t,n){return t.param.replace(It,function(a){var r=avalon.duplexHooks[a];r&&"function"==typeof r[n]&&(e=r[n](e,t))}),e}function ft(){for(var e=Oa.length-1;e>=0;e--){var t=Oa[e];t()===!1&&Oa.splice(e,1)}Oa.length||clearInterval(Aa)}function dt(e,t){if(!e||1!==e.nodeType)return null;if(t)var n=t.effectName,a=t.effectDriver;else n=e.getAttribute("data-effect-name"),a=e.getAttribute("data-effect-driver");if(!n||!a)return null;var r=Ra.pop()||new ht;return r.el=e,r.driver=a,r.useCss="j"!==a,r.useCss&&(t&&avalon(e).addClass(t.effectClass),r.cssEvent="t"===a?Sa:ja),r.name=n,r.callbacks=avalon.effects[n]||{},r}function pt(e,t){var n=e.getAttribute("data-effect-name");if(n){t.effectName=n,t.effectDriver=e.getAttribute("data-effect-driver");var a=+e.getAttribute("data-effect-stagger");t.effectLeaveStagger=+e.getAttribute("data-effect-leave-stagger")||a,t.effectEnterStagger=+e.getAttribute("data-effect-enter-stagger")||a,t.effectClass=e.className||0/0}}function vt(e){return e.replace(/^[\S]/g,function(e){return e.toUpperCase()})}function ht(){}function mt(e,t){var n=e.callbacks[t+"Class"];return"string"==typeof n?n:"function"==typeof n?n():e.name+"-"+t}function gt(e,t,n){var a=e.callbacks[t];a&&a.call(e,e.el,n)}function yt(e,t,n){var a=e.templateCache&&e.templateCache[t];if(a){for(var r,i=Pt.createDocumentFragment();r=a.firstChild;)i.appendChild(r);return i}return avalon.parseHTML(n)}function bt(e){for(var t=Pt.createDocumentFragment(),n=0,a=e.length;a>n;n++)t.appendChild(e[n]);return t}function $t(e,t,n){for(var a,r=0;a=e[r++];)a.className===n.effectClass&&avalon.effect.apply(a,t,o,o,n)}function xt(e,t,n){return e?setTimeout(t,++n*e):t(),n}function wt(e,t){for(var n=Kt.cloneNode(!1),a=e,r=a.nodeValue,i=t&&Math.max(+t.staggerIndex,0),l=avalon.slice(a.parentNode.childNodes),s=l.indexOf(a);;){var c=l[--s];if(!c||0===String(c.nodeValue).indexOf(r))break;t&&c.className===t.effectClass?(e=c,function(e){t.staggerIndex=xt(t.effectLeaveStagger,function(){avalon.effect.apply(e,0,o,function(){n.appendChild(e)},t)},i)}(c)):n.insertBefore(c,n.firstChild)}return n.appendChild(a),n}function Ct(e,t,n,a,r){var i=e.template.cloneNode(!0),o=avalon.slice(i.childNodes);i.appendChild(n.$anchor),r&&t.appendChild(i);var l=[n].concat(e.vmodels),s={nodes:o,vmodels:l,content:i};a.push(s)}function Tt(e){var t="object"===e.xtype?At:kt,n=t(e),a=n.$anchor||(n.$anchor=e.element.cloneNode(!1));return a.nodeValue=e.signature,n.$outer=e.$outer,n}function kt(e,t){for(var n=e.param||"el",a=0,r=Xa.length;r>a;a++){var i=Xa[a];if(i&&i.hasOwnProperty(n)){Xa.splice(a,1),t=i;break}}return t||(t=Et(n)),t}function Et(e){var t={$outer:{},$index:0,$oldIndex:0,$anchor:null,$first:!1,$last:!1,$remove:avalon.noop};t[e]=0/0;var n={$last:1,$first:1,$index:1};n[e]=1;var a=g(t,{force:n});return a.$id=en("$proxy$each"),a}function Nt(e,t,n){if("array"===n){e.$remove=function(){t.$repeat.removeAt(e.$index)};var a=t.param;e.$watch(a,function(n){var a=e.$index;t.$repeat[a]=n})}else e.$watch("$val",function(n){t.$repeat[e.$key]=n})}function At(){return Ya.pop()||Ot()}function Ot(){var e=g({$key:"",$val:0/0,$index:0,$oldIndex:0,$outer:{},$anchor:null},{force:{$key:1,$val:1,$index:1}});return e.$id=en("$proxy$with"),e}function Mt(e,t,n){var a=e[t];if(a){var r=0===a.$id.indexOf("$proxy$each")?Xa:Ya;a.$outer={};for(var i in a.$events){var o=a.$events[i];Array.isArray(o)&&(o.length=0,i===n?a[n]=0/0:"$val"===i&&(a.$val=0/0))}r.unshift(a)>f.maxRepeatSize&&r.pop(),delete e[t]}}function St(e,t){var n="_"+e;if(!St[n]){var a=Pt.createElement(e);Jt.appendChild(a),t=Zt?getComputedStyle(a,null).display:a.currentStyle.display,Jt.removeChild(a),St[n]=t}return St[n]}function jt(e,t,n,a){e=(e+"").replace(/[^0-9+\-Ee.]/g,"");var r=isFinite(+e)?+e:0,i=isFinite(+t)?Math.abs(t):3,o=a||",",l=n||".",s="",c=function(e,t){var n=Math.pow(10,t);return""+(Math.round(e*n)/n).toFixed(t)};return s=(i?c(r,i):""+Math.round(r)).split("."),s[0].length>3&&(s[0]=s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g,o)),(s[1]||"").length<i&&(s[1]=s[1]||"",s[1]+=new Array(i-s[1].length+1).join("0")),s.join(l)}function Dt(){return/iPad|iPhone|iPod/i.test(or)&&!e.MSStream?"backdropFilter"in document.documentElement.style?9:e.indexedDB?8:e.SpeechSynthesisUtterance?7:e.webkitAudioContext?6:e.matchMedia?5:e.history&&"pushState"in e.history?4:3:0/0}function Lt(e,t){return t&&ur.forEach(function(n){e[n]=t[n]}),e}var Ht=Date.now(),Pt=e.document,Rt=Pt.head;Rt.insertAdjacentHTML("afterBegin",'<avalon ms-skip class="avalonHide"><style id="avalonStyle">.avalonHide{ display: none!important }</style></avalon>');var qt=Rt.firstChild,Bt="$"+Ht,Ft={},_t=/[^, ]+/g,It=/\w+/g,Vt=/^\[object SVG\w*Element\]$/,Xt=/^\[object (?:Window|DOMWindow|global)\]$/,Yt=Object.prototype,Ut=Yt.hasOwnProperty,zt=Yt.toString,Wt=Array.prototype,Gt=Wt.slice,Zt=e.dispatchEvent,Jt=Pt.documentElement,Kt=Pt.createDocumentFragment(),Qt=(Pt.createElement("div"),{});"Boolean Number String Function Array Date RegExp Object Error".replace(_t,function(e){Qt["[object "+e+"]"]=e.toLowerCase()});var en=function(e){return e=e||"avalon",String(Math.random()+Math.random()).replace(/\d\.\d{4}/,e)},tn=s();avalon=function(e){return new avalon.init(e)},avalon.nextTick=new function(){function t(){for(var e=r.length,t=0;e>t;t++)r[t]();r=r.slice(e)}var n=e.setImmediate,a=e.MutationObserver;if(n)return n.bind(e);var r=[];if(a){var i=document.createTextNode("avalon");new a(t).observe(i,{characterData:!0});var o=!1;return function(e){r.push(e),o=!o,i.data=o}}return function(e){setTimeout(e,4)}},avalon.init=function(e){this[0]=this.element=e},avalon.fn=avalon.prototype=avalon.init.prototype,avalon.type=function(e){return null==e?String(e):"object"==typeof e||"function"==typeof e?Qt[zt.call(e)]||"object":typeof e};var nn=function(e){return"[object Function]"===zt.call(e)};avalon.isFunction=nn,avalon.isWindow=function(e){return Xt.test(zt.call(e))},avalon.isPlainObject=function(e){return"[object Object]"===zt.call(e)&&Object.getPrototypeOf(e)===Yt},avalon.mix=avalon.fn.mix=function(){var e,t,n,a,r,i,o=arguments[0]||{},l=1,s=arguments.length,c=!1;for("boolean"==typeof o&&(c=o,o=arguments[1]||{},l++),"object"==typeof o||nn(o)||(o={}),l===s&&(o=this,l--);s>l;l++)if(null!=(e=arguments[l]))for(t in e)n=o[t],a=e[t],o!==a&&(c&&a&&(avalon.isPlainObject(a)||(r=Array.isArray(a)))?(r?(r=!1,i=n&&Array.isArray(n)?n:[]):i=n&&avalon.isPlainObject(n)?n:{},o[t]=avalon.mix(c,i,a)):void 0!==a&&(o[t]=a));return o},avalon.mix({rword:_t,subscribers:Bt,version:1.55,ui:{},log:n,slice:function(e,t,n){return Gt.call(e,t,n)},noop:o,error:function(e,t){throw new(t||Error)(e)},oneObject:l,range:function(e,t,n){n||(n=1),null==t&&(t=e||0,e=0);for(var a=-1,r=Math.max(0,Math.ceil((t-e)/n)),i=new Array(r);++a<r;)i[a]=e,e+=n;return i},eventHooks:{},bind:function(e,t,n,a){var r=avalon.eventHooks,i=r[t];return"object"==typeof i&&(t=i.type||t,a=i.phase||!!a,n=i.fn?i.fn(e,n):n),e.addEventListener(t,n,a),n},unbind:function(e,t,n,a){var r=avalon.eventHooks,i=r[t],l=n||o;"object"==typeof i&&(t=i.type||t,a=i.phase||!!a),e.removeEventListener(t,l,a)},css:function(e,t,n){e instanceof avalon&&(e=e[0]);var a,r=/[_-]/.test(t)?R(t):t;if(t=avalon.cssName(r)||r,void 0===n||"boolean"==typeof n){a=Rn[r+":get"]||Rn["@:get"],"background"===t&&(t="backgroundColor");var i=a(e,t);return n===!0?parseFloat(i)||0:i}if(""===n)e.style[t]="";else{if(null==n||n!==n)return;isFinite(n)&&!avalon.cssNumber[r]&&(n+="px"),a=Rn[r+":set"]||Rn["@:set"],a(e,t,n)}},each:function(e,t){if(e){var n=0;if(c(e))for(var a=e.length;a>n&&t(n,e[n])!==!1;n++);else for(n in e)if(e.hasOwnProperty(n)&&t(n,e[n])===!1)break}},getWidgetData:function(e,t){var n=avalon(e).data(),a={};for(var r in n)0===r.indexOf(t)&&(a[r.replace(t,"").replace(/\w/,function(e){return e.toLowerCase()})]=n[r]);return a},Array:{ensure:function(e,t){return-1===e.indexOf(t)?e.push(t):void 0},removeAt:function(e,t){return!!e.splice(t,1).length},remove:function(e,t){var n=e.indexOf(t);return~n?avalon.Array.removeAt(e,n):!1}}});var an=avalon.bindingHandlers={},rn=avalon.bindingExecutors={},on=avalon.directives={};avalon.directive=function(e,t){return an[e]=t.init=t.init||o,rn[e]=t.update=t.update||o,on[e]=t};var ln=new function(){function e(e){this.size=0,this.limit=e,this.head=this.tail=void 0,this._keymap={}}var t=e.prototype;return t.put=function(e,t){var n={key:e,value:t};return this._keymap[e]=n,this.tail?(this.tail.newer=n,n.older=this.tail):this.head=n,this.tail=n,this.size===this.limit?this.shift():this.size++,t},t.shift=function(){var e=this.head;e&&(this.head=this.head.newer,this.head.older=e.newer=e.older=this._keymap[e.key]=void 0,delete this._keymap[e.key])},t.get=function(e){var t=this._keymap[e];if(void 0!==t)return t===this.tail?t.value:(t.newer&&(t===this.head&&(this.head=t.newer),t.newer.older=t.older),t.older&&(t.older.newer=t.newer),t.newer=void 0,t.older=this.tail,this.tail&&(this.tail.newer=t),this.tail=t,t.value)},e};if(Pt.contains||(Node.prototype.contains=function(e){return!!(16&this.compareDocumentPosition(e))}),avalon.contains=function(e,t){try{for(;t=t.parentNode;)if(t===e)return!0;return!1}catch(n){return!1}},e.SVGElement){var sn="http://www.w3.org/2000/svg",cn=Pt.createElementNS(sn,"svg");cn.innerHTML='<circle cx="50" cy="50" r="40" fill="red" />',Vt.test(cn.firstChild)||Object.defineProperties(SVGElement.prototype,{outerHTML:{enumerable:!0,configurable:!0,get:function(){return(new XMLSerializer).serializeToString(this)},set:function(e){var t=this.tagName.toLowerCase(),n=this.parentNode,a=avalon.parseHTML(e);if("svg"===t)n.insertBefore(a,this);else{var r=Pt.createDocumentFragment();u(a,r),n.insertBefore(r,this)}n.removeChild(this)}},innerHTML:{enumerable:!0,configurable:!0,get:function(){var e=this.outerHTML,t=new RegExp("<"+this.nodeName+'\\b(?:(["\'])[^"]*?(\\1)|[^>])*>',"i"),n=new RegExp("</"+this.nodeName+">$","i");return e.replace(t,"").replace(n,"")},set:function(e){if(avalon.clearHTML){avalon.clearHTML(this);var t=avalon.parseHTML(e);u(t,this)}}}})}var un=avalon.eventHooks;"onmouseenter"in Jt||avalon.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){un[e]={type:t,fn:function(t,n){return function(a){var r=a.relatedTarget;return r&&(r===t||16&t.compareDocumentPosition(r))?void 0:(delete a.type,a.type=e,n.call(t,a))}}}}),avalon.each({AnimationEvent:"animationend",WebKitAnimationEvent:"webkitAnimationEnd"},function(t,n){e[t]&&!un.animationend&&(un.animationend={type:n})}),void 0===Pt.onmousewheel&&(un.mousewheel={type:"wheel",fn:function(e,t){return function(n){n.wheelDeltaY=n.wheelDelta=n.deltaY>0?-120:120,n.wheelDeltaX=0,Object.defineProperty(n,"type",{value:"mousewheel"}),t.call(e,n)}}});var fn,dn,pn,vn,hn,mn=/[-.*+?^${}()|[\]\/\\]/g,gn={interpolate:function(e){if(fn=e[0],dn=e[1],fn===dn){throw new SyntaxError("openTag!==closeTag")}f.openTag=fn,f.closeTag=dn;var t=d(fn),n=d(dn);pn=new RegExp(t+"(.*?)"+n),vn=new RegExp(t+"(.*?)"+n,"g"),hn=new RegExp(t+".*?"+n+"|\\sms-")}};f.async=!0,f.debug=!0,f.plugins=gn,f.plugins.interpolate(["{{","}}"]),f.paths={},f.shim={},f.maxRepeatSize=100,avalon.config=f;var yn=avalon.vmodels={};avalon.define=function(e){var t=e.$id;t||n("warning: vm必须指定$id");var a=g(e);return a.$id=t,yn[t]=a};var bn=l("$id,$watch,$fire,$events,$model,$skipArray,$active,$pathname,$up,$ups,$track,$accessors"),$n={get:function(){return k(this)},set:o,enumerable:!1,configurable:!0},xn=["push","pop","shift","unshift","splice"],wn=Array.prototype,Cn={notify:function(){v.call(this.$up,this.$pathname)},set:function(e,t){if(e>>>0===e&&this[e]!==t){if(e>this.length)throw Error(e+"set方法的第一个参数不能大于原数组长度");v.call(this.$up,this.$pathname+".*",[t,this[e]]),this.splice(e,1,t)}},contains:function(e){return-1!==this.indexOf(e)},ensure:function(e){return this.contains(e)||this.push(e),this},pushArray:function(e){return this.push.apply(this,e)},remove:function(e){return this.removeAt(this.indexOf(e))},removeAt:function(e){return e>>>0===e?this.splice(e,1):[]},size:function(){return this._.length},removeAll:function(e){if(Array.isArray(e))for(var t=this.length-1;t>=0;t--)-1!==e.indexOf(this[t])&&(Tn.call(this.$track,t,1),Tn.call(this,t,1));else if("function"==typeof e)for(t=this.length-1;t>=0;t--){var n=this[t];e(n,t)&&(Tn.call(this.$track,t,1),Tn.call(this,t,1))}else Tn.call(this.$track,0,this.length),Tn.call(this,0,this.length);Zt||(this.$model=k(this)),this.notify(),this._.length=this.length},clear:function(){return this.removeAll()}},Tn=wn.splice;xn.forEach(function(e){var t=wn[e];Cn[e]=function(){for(var n=[],a=0,r=arguments.length;r>a;a++)n[a]=w(arguments[a],0,1,1);var i=t.apply(this,n);return A(this.$track,e,n),Zt||(this.$model=k(this)),this.notify(),this._.length=this.length,i}}),"sort,reverse".replace(_t,function(e){Cn[e]=function(){var t=this.concat(),n=this,a=Math.random(),r=[],i=!1;wn[e].apply(n,arguments);for(var o=0,l=t.length;l>o;o++){var s=n[o],c=t[o];if(s===c)r.push(o);else{var u=t.indexOf(s);r.push(u),t[u]=a,i=!0}}return i&&(E(this.$track,r),Zt||(this.$model=k(this)),this.notify()),this}});var kn=function(){var e,t=[];return{begin:function(n){t.push(e),e=n},end:function(){e=t.pop()},collectDependency:function(t){e&&e.callback(t)}}}();avalon.injectBinding=function(e){e.handler=e.handler||on[e.type].update||o,e.update=function(){var t=!1;e.getter||(t=!0,kn.begin({callback:function(t){O(t,e)}}),e.getter=U(e.expr,e.vmodels,e),e.observers.forEach(function(t){t.v.$watch(t.p,e)}),delete e.observers);try{var a,r,i=e.fireArgs;if(delete e.fireArgs,i?(a=i[0],r=i[1]):a="on"===e.type?e.getter+"":e.getter.apply(0,e.args),r="undefined"==typeof r?e.oldValue:r,e._filters&&(a=Ka.$filter.apply(0,[a].concat(e._filters))),e.signature){var o=avalon.type(a);if("array"!==o&&"object"!==o)throw Error("warning:"+e.expr+"只能是对象或数组");e.xtype=o;var l=M(e.proxies||[],o),s=a.$track||("array"===o?N(a.length):Object.keys(a));e.track=s,l!==s.join(";")&&(e.handler(a,r),e.oldValue=1)}else(Array.isArray(a)?a.length===(r&&r.length):1)?"oldValue"in e&&a===r||(e.handler(a,r),e.oldValue=a):(e.handler(a,r),e.oldValue=a.concat())}catch(c){delete e.getter,n("warning:exception throwed in [avalon.injectBinding] ",c);var u=e.element;u&&3===u.nodeType&&(u.nodeValue=fn+(e.oneTime?"::":"")+e.expr+dn)}finally{t&&kn.end()}},e.update()};var En=0,Nn=avalon.$$subscribers=[],An=new Date,On={},Mn=new function(){avalon.mix(this,{option:Pt.createElement("select"),thead:Pt.createElement("table"),td:Pt.createElement("tr"),area:Pt.createElement("map"),tr:Pt.createElement("tbody"),col:Pt.createElement("colgroup"),legend:Pt.createElement("fieldset"),_default:Pt.createElement("div"),g:Pt.createElementNS("http://www.w3.org/2000/svg","svg")}),this.optgroup=this.option,this.tbody=this.tfoot=this.colgroup=this.caption=this.thead,this.th=this.td};String("circle,defs,ellipse,image,line,path,polygon,polyline,rect,symbol,text,use").replace(_t,function(e){Mn[e]=Mn.g});var Sn=/<([\w:]+)/,jn=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,Dn=l(["","text/javascript","text/ecmascript","application/ecmascript","application/javascript"]),Ln=Pt.createElement("script"),Hn=/<|&#?\w+;/;avalon.parseHTML=function(e){var t=Kt.cloneNode(!1);if("string"!=typeof e)return t;if(!Hn.test(e))return t.appendChild(Pt.createTextNode(e)),t;e=e.replace(jn,"<$1></$2>").trim();var n,a=(Sn.exec(e)||["",""])[1].toLowerCase(),r=Mn[a]||Mn._default;r.innerHTML=e;var i=r.getElementsByTagName("script");if(i.length)for(var o,l=0;o=i[l++];)if(Dn[o.type]){var s=Ln.cloneNode(!1);Wt.forEach.call(o.attributes,function(e){s.setAttribute(e.name,e.value)}),s.text=o.text,o.parentNode.replaceChild(s,o)}for(;n=r.firstChild;)t.appendChild(n);return t},avalon.innerHTML=function(e,t){var n=this.parseHTML(t);this.clearHTML(e).appendChild(n)},avalon.clearHTML=function(e){for(e.textContent="";e.firstChild;)e.removeChild(e.firstChild);return e},"add,remove".replace(_t,function(e){avalon.fn[e+"Class"]=function(t){var n=this[0];return t&&"string"==typeof t&&n&&1===n.nodeType&&t.replace(/\S+/g,function(t){n.classList[e](t)}),this}}),avalon.fn.mix({hasClass:function(e){var t=this[0]||{};return 1===t.nodeType&&t.classList.contains(e)},toggleClass:function(e,t){for(var n,a=0,r=String(e).split(/\s+/),i="boolean"==typeof t;n=r[a++];){var o=i?t:!this.hasClass(n);this[o?"addClass":"removeClass"](n)}return this},attr:function(e,t){return 2===arguments.length?(this[0].setAttribute(e,t),this):this[0].getAttribute(e)},data:function(e,t){switch(e="data-"+P(e||""),arguments.length){case 2:return this.attr(e,t),this;case 1:var n=this.attr(e);return q(n);case 0:var a={};return Wt.forEach.call(this[0].attributes,function(t){t&&(e=t.name,e.indexOf("data-")||(e=R(e.slice(5)),a[e]=q(t.value)))}),a}},removeData:function(e){return e="data-"+P(e),this[0].removeAttribute(e),this},css:function(e,t){if(avalon.isPlainObject(e))for(var n in e)avalon.css(this,n,e[n]);else var a=avalon.css(this,e,t);return void 0!==a?a:this},position:function(){var e,t,n=this[0],a={top:0,left:0};if(n)return"fixed"===this.css("position")?t=n.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),"HTML"!==e[0].tagName&&(a=e.offset()),a.top+=avalon.css(e[0],"borderTopWidth",!0),a.left+=avalon.css(e[0],"borderLeftWidth",!0),a.top-=e.scrollTop(),a.left-=e.scrollLeft()),{top:t.top-a.top-avalon.css(n,"marginTop",!0),left:t.left-a.left-avalon.css(n,"marginLeft",!0)}},offsetParent:function(){for(var e=this[0].offsetParent;e&&"static"===avalon.css(e,"position");)e=e.offsetParent;
2
- return avalon(e||Jt)},bind:function(e,t,n){return this[0]?avalon.bind(this[0],e,t,n):void 0},unbind:function(e,t,n){return this[0]&&avalon.unbind(this[0],e,t,n),this},val:function(e){var t=this[0];if(t&&1===t.nodeType){var n=0===arguments.length,a=n?":get":":set",r=In[_(t)+a];if(r)var i=r(t,e);else{if(n)return(t.value||"").replace(/\r/g,"");t.value=e}}return n?i:this}}),Jt.dataset&&(avalon.fn.data=function(e,t){e=e&&R(e);var n=this[0].dataset;switch(arguments.length){case 2:return n[e]=t,this;case 1:return t=n[e],q(t);case 0:var a=r();for(e in n)a[e]=q(n[e]);return a}});var Pn=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/;avalon.parseJSON=JSON.parse,avalon.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){avalon.fn[e]=function(n){var a=this[0]||{},r=B(a),i="scrollTop"===e;return arguments.length?void(r?r.scrollTo(i?r[t]:n,i?n:r[t]):a[e]=n):r?r[t]:a[e]}});var Rn=avalon.cssHooks=r(),qn=["","-webkit-","-moz-","-ms-"],Bn={"float":"cssFloat"};avalon.cssNumber=l("animationIterationCount,animationIterationCount,columnCount,order,flex,flexGrow,flexShrink,fillOpacity,fontWeight,lineHeight,opacity,orphans,widows,zIndex,zoom"),avalon.cssName=function(e,t,n){if(Bn[e])return Bn[e];t=t||Jt.style;for(var a=0,r=qn.length;r>a;a++)if(n=R(qn[a]+e),n in t)return Bn[e]=n;return null},Rn["@:set"]=function(e,t,n){e.style[t]=n},Rn["@:get"]=function(e,t){if(!e||!e.style)throw new Error("getComputedStyle要求传入一个节点 "+e);var n,a=getComputedStyle(e);return a&&(n="filter"===t?a.getPropertyValue(t):a[t],""===n&&(n=e.style[t])),n},Rn["opacity:get"]=function(e){var t=Rn["@:get"](e,"opacity");return""===t?"1":t},"top,left".replace(_t,function(e){Rn[e+":get"]=function(t){var n=Rn["@:get"](t,e);return/px$/.test(n)?n:avalon(t).position()[e]+"px"}});var Fn={position:"absolute",visibility:"hidden",display:"block"},_n=/^(none|table(?!-c[ea]).+)/;"Width,Height".replace(_t,function(e){var t=e.toLowerCase(),n="client"+e,a="scroll"+e,r="offset"+e;Rn[t+":get"]=function(t,n,a){var i=-4;"number"==typeof a&&(i=a),n="Width"===e?["Left","Right"]:["Top","Bottom"];var o=t[r];return 2===i?o+avalon.css(t,"margin"+n[0],!0)+avalon.css(t,"margin"+n[1],!0):(0>i&&(o=o-avalon.css(t,"border"+n[0]+"Width",!0)-avalon.css(t,"border"+n[1]+"Width",!0)),-4===i&&(o=o-avalon.css(t,"padding"+n[0],!0)-avalon.css(t,"padding"+n[1],!0)),o)},Rn[t+"&get"]=function(e){var n=[];F(e,n);for(var a,r=Rn[t+":get"](e),i=0;a=n[i++];){e=a.node;for(var o in a)"string"==typeof a[o]&&(e.style[o]=a[o])}return r},avalon.fn[t]=function(i){var o=this[0];if(0===arguments.length){if(o.setTimeout)return o["inner"+e];if(9===o.nodeType){var l=o.documentElement;return Math.max(o.body[a],l[a],o.body[r],l[r],l[n])}return Rn[t+"&get"](o)}return this.css(t,i)},avalon.fn["inner"+e]=function(){return Rn[t+":get"](this[0],void 0,-2)},avalon.fn["outer"+e]=function(e){return Rn[t+":get"](this[0],void 0,e===!0?2:0)}}),avalon.fn.offset=function(){var e=this[0];try{var t=e.getBoundingClientRect();if(t.width||t.height||e.getClientRects().length){var n=e.ownerDocument,a=n.documentElement,r=n.defaultView;return{top:t.top+r.pageYOffset-a.clientTop,left:t.left+r.pageXOffset-a.clientLeft}}}catch(i){return{left:0,top:0}}};var In={"select:get":function(e,t){for(var n,a=e.options,r=e.selectedIndex,i="select-one"===e.type||0>r,o=i?null:[],l=i?r+1:a.length,s=0>r?l:i?r:0;l>s;s++)if(n=a[s],(n.selected||s===r)&&!n.disabled){if(t=n.value,i)return t;o.push(t)}return o},"select:set":function(e,t,n){t=[].concat(t);for(var a,r=0;a=e.options[r++];)(a.selected=t.indexOf(a.value)>-1)&&(n=!0);n||(e.selectedIndex=-1)}},Vn={},Xn=["break,case,catch,continue,debugger,default,delete,do,else,false","finally,for,function,if,in,instanceof,new,null,return,switch,this","throw,true,try,typeof,var,void,while,with","abstract,boolean,byte,char,class,const,double,enum,export,extends","final,float,goto,implements,import,int,interface,long,native","package,private,protected,public,short,static,super,synchronized","throws,transient,volatile","arguments,let,yield,undefined"].join(",");Xn.replace(/\w+/g,function(e){Vn[e]=!0});var Yn=/[a-z_$]/i,Un=/[\s\uFEFF\xA0]/,zn=/(\$proxy\$[a-z]+)\d+$/,Wn=new ln(218),Gn=new ln(128);avalon.normalizeExpr=z,avalon.parseExprProxy=U;var Zn=/\)\s*$/,Jn=/\)\s*\|/g,Kn=/\|\s*([$\w]+)/g,Qn=/"\s*\["/g,ea=/"\s*\(/g,ta=JSON.stringify;avalon.scan=function(e,t){e=e||Jt;var n=t?[].concat(t):[];at(e,n)};var na=l("area,base,basefont,br,col,command,embed,hr,img,input,link,meta,param,source,track,wbr,noscript,script,style,textarea".toUpperCase()),aa=function(e,t,n){var a=e.getAttribute(t);if(a)for(var r,i=0;r=n[i++];)if(r.hasOwnProperty(a)&&"function"==typeof r[a])return r[a]},ra=tn&&e.MutationObserver?function(e){for(var t,n=e.firstChild;n;){var a=n.nextSibling;3===n.nodeType?t?(t.nodeValue+=n.nodeValue,e.removeChild(n)):t=n:t=null,n=a}}:0,ia=/^\s*::/,oa=/ms-(\w+)-?(.*)/,la=l("animationend,blur,change,input,click,dblclick,focus,keydown,keypress,keyup,mousedown,mouseenter,mouseleave,mousemove,mouseout,mouseover,mouseup,scan,scroll,submit"),sa=l("value,title,alt,checked,selected,disabled,readonly,enabled,href,src"),ca=/^if|widget|repeat$/,ua=/^each|with|html|include$/,fa=/^(ms-\S+|data-\S+|on[a-z]+|id|style|class|tabindex)$/,da=/\|\s*html(?:\b|$)/,pa=/\|\|/g,va=/(['"])(\\\1|.)+?\1/g,ha=function(){this.queue=[]};ha.prototype={render:function(e){if(!this.locked){this.locked=e?Jt.offsetHeight+10:1;var t=this;avalon.nextTick(function(){t.flush()})}},flush:function(){for(var e,t=0;e=this.queue[t++];)e.update&&e.update();this.locked=0,this.queue=[]}};var ma=new ha,ga=[],ya=[],ba={$construct:function(){return avalon.mix.apply(null,arguments)},$ready:o,$init:o,$dispose:o,$container:null,$childReady:o,$replace:!1,$extend:null,$$template:function(e){return e}};avalon.components={},avalon.component=function(t,n){n&&(avalon.components[t]=avalon.mix({},ba,n));for(var a,r=0;a=ga[r];r++)t===a.fullName&&(ga.splice(r,1),r--,function(n,a,r,i){var o=1,l=n.library,s=avalon.libraries[l]||ba,c=et(r),u=lt(n.vmodels,c.config||n.widget),f=c.$id||c.identifier||en(i);delete c.config,delete c.$id,delete c.identifier;var d={},p=avalon.components[a.$extend];p?(avalon.mix(!0,d,p),d=p.$construct.call(r,d,{},{})):avalon.mix(!0,d,a),d=avalon.components[t].$construct.call(r,d,u,c),d.$refs={},d.$id=f;var v=d.$slot,h=d.$replace,m=d.$container,g=d.$template;delete d.$slot,delete d.$replace,delete d.$container,delete d.$construct;var y=avalon.define(d)||{};r.msResolved=1,y.$init(y,r),s.$init(y,r);for(var b,$,x=r.childNodes,w={},C=0;$=x[C++];){var T=1===$.nodeType&&$.getAttribute("slot")||v;T&&(w[T]?w[T].push($):w[T]=[$])}y.$$template&&(avalon.clearHTML(r),r.innerHTML=y.$$template(g));for(C in w)if(y.hasOwnProperty(C)){var k=w[C];if(k.length){for(var E=Kt.cloneNode(!0),N=0;b=k[N++];)E.appendChild(b);y[C]=E}w[C]=null}w=null;var A=r.firstChild;h&&(A=r.firstChild,r.parentNode.replaceChild(A,r),A.msResolved=1,r=n.element=A),m&&m.appendChild(r),avalon.fireDom(r,"datasetchanged",{library:l,vm:y,childReady:1});var O=0,M=avalon.bind(r,"datasetchanged",function(t){if(t.childReady&&t.library===l&&(o+=t.childReady,y!==t.vm&&(y.$refs[t.vm.$id]=t.vm,-1===t.childReady&&(O++,y.$childReady(y,r,t)),t.stopPropagation())),0===o){var a=setTimeout(function(){clearTimeout(a),y.$ready(y,r,n.vmodels),s.$ready(y,r,n.vmodels)},O?Math.max(17*O,100):17);avalon.unbind(r,"datasetchanged",M),n.rollback=function(){try{y.$dispose(y,r),s.$dispose(y,r)}catch(e){}delete avalon.vmodels[y.$id]},j(n,ya),e.chrome&&r.addEventListener("DOMNodeRemovedFromDocument",function(){setTimeout(D)})}});if(at(r,[y].concat(n.vmodels)),avalon.vmodels[y.$id]=y,r.childNodes.length)var S=setTimeout(function(){clearTimeout(S),avalon.fireDom(r,"datasetchanged",{library:l,vm:y,childReady:-1})},17);else avalon.fireDom(r,"datasetchanged",{library:l,vm:y,childReady:-1})}(a,avalon.components[t],a.element,a.widget))},avalon.fireDom=function(e,t,n){if(Pt.createEvent){var a=Pt.createEvent("Events");a.initEvent(t,!0,!0,n),avalon.mix(a,n),e.dispatchEvent(a)}else Jt.contains(e)&&(a=Pt.createEventObject(),avalon.mix(a,n),e.fireEvent("on"+t,a))},avalon.libraries=[],avalon.library=function(e,t){Pt.namespaces&&Pt.namespaces.add(e,"http://www.w3.org/1999/xhtml"),avalon.libraries[e]=avalon.mix({$init:o,$ready:o,$dispose:o},t||{})},avalon.library("ms");var $a=["autofocus,autoplay,async,allowTransparency,checked,controls","declare,disabled,defer,defaultChecked,defaultSelected","contentEditable,isMap,loop,multiple,noHref,noResize,noShade","open,readOnly,selected"].join(","),xa={};$a.replace(_t,function(e){xa[e.toLowerCase()]=e});var wa={"accept-charset":"acceptCharset","char":"ch",charoff:"chOff","class":"className","for":"htmlFor","http-equiv":"httpEquiv"},Ca=["accessKey,bgColor,cellPadding,cellSpacing,codeBase,codeType,colSpan","dateTime,defaultValue,frameBorder,longDesc,maxLength,marginWidth,marginHeight","rowSpan,tabIndex,useMap,vSpace,valueType,vAlign"].join(",");Ca.replace(_t,function(e){wa[e.toLowerCase()]=e});var Ta=avalon.directive("attr",{init:function(e){if(e.expr=z(e.expr.trim()),"include"===e.type){var t=e.element;pt(t,e),e.includeRendered=aa(t,"data-include-rendered",e.vmodels),e.includeLoaded=aa(t,"data-include-loaded",e.vmodels);var n=e.includeReplace=!!avalon(t).data("includeReplace");avalon(t).data("includeCache")&&(e.templateCache={}),e.start=Pt.createComment("ms-include"),e.end=Pt.createComment("ms-include-end"),n?(e.element=e.end,e._element=t,t.parentNode.insertBefore(e.start,t),t.parentNode.insertBefore(e.end,t.nextSibling)):(t.insertBefore(e.start,t.firstChild),t.appendChild(e.end))}},update:function(t){var n=this.element,a=this.param;if("href"===a||"src"===a){if("string"!=typeof t||Jt.hasAttribute||(t=t.replace(/&amp;/g,"&")),n[a]=t,e.chrome&&"EMBED"===n.tagName){var r=n.parentNode,i=document.createComment("ms-src");r.replaceChild(i,n),r.replaceChild(n,i)}}else{var o=t===!1||null===t||void 0===t;!Zt&&wa[a]&&(a=wa[a]);var l=xa[a];if("boolean"==typeof n[l]&&(n[l]=!!t,t||(o=!0)),o)return n.removeAttribute(a);var s=Vt.test(n)?!1:Pt.namespaces&&isVML(n)?!0:a in n.cloneNode(!1);s?n[a]=t+"":n.setAttribute(a,t)}}});"title,alt,src,value,css,include,href".replace(_t,function(e){on[e]=Ta}),avalon.directive("class",{init:function(e){var t=e.param,a=e.type;if(!t||isFinite(t)?(e.param="",on.effect.init(e)):(n("ms-"+a+'-xxx="yyy"这种用法已经过时,请使用ms-'+a+'="xxx:yyy"'),e.expr="["+ta(t)+","+e.expr+"]",e.oldStyle=t),"hover"===a||"active"===a){if(!e.hasBindEvent){var r=e.element,i=avalon(r),o="mouseenter",l="mouseleave";if("active"===a){r.tabIndex=r.tabIndex||-1,o="mousedown",l="mouseup";var s=i.bind("mouseleave",function(){e.toggleClass&&i.removeClass(e.newClass)})}}var c=i.bind(o,function(){e.toggleClass&&i.addClass(e.newClass)}),u=i.bind(l,function(){e.toggleClass&&i.removeClass(e.newClass)});e.rollback=function(){i.unbind("mouseleave",s),i.unbind(o,c),i.unbind(l,u)},e.hasBindEvent=!0}},update:function(e){var t=this,n=avalon(this.element);t.newClass=e[0],t.toggleClass=!!e[1],t.oldClass&&t.newClass!==t.oldClass&&n.removeClass(t.oldClass),t.oldClass=t.newClass,"class"===t.type&&(t.oldStyle?n.toggleClass(t.oldStyle,!!e[1]):n.toggleClass(t.newClass,t.toggleClass))}}),"hover,active".replace(_t,function(e){on[e]=on["class"]}),avalon.directive("css",{init:on.attr.init,update:function(e){avalon(this.element).css(this.param,e)}}),avalon.directive("data",{priority:100,update:function(e){var t=this.element,n="data-"+this.param;e&&"object"==typeof e?t[n]=e:t.setAttribute(n,String(e))}});{var ka=/^(?:checkbox|radio)$/,Ea=/^(?:radio|checked)$/,Na=/^(file|button|reset|submit|checkbox|radio|range)$/;avalon.directive("duplex",{priority:2e3,init:function(e,t){function a(t){e.changed.call(this,t,e)}function r(){d=!0}function i(){d=!1}var s=e.element,c=e.vmodels;e.changed=aa(s,"data-duplex-changed",c)||o;var u=[],f=l("string,number,boolean,checked");"radio"===s.type&&""===e.param&&(e.param="checked"),e.param.replace(It,function(a){ka.test(s.type)&&Ea.test(a)&&("radio"===a&&n("ms-duplex-radio已经更名为ms-duplex-checked"),a="checked",e.isChecked=!0,e.xtype="radio"),"bool"===a?(a="boolean",n("ms-duplex-bool已经更名为ms-duplex-boolean")):"text"===a&&(a="string",n("ms-duplex-text已经更名为ms-duplex-string")),f[a]&&(t=!0),avalon.Array.ensure(u,a)}),t||u.push("string"),e.param=u.join("-"),e.xtype||(e.xtype="SELECT"===s.tagName?"select":"checkbox"===s.type?"checkbox":"radio"===s.type?"radio":/^change/.test(s.getAttribute("data-duplex-event"))?"change":"input"),e.bound=function(t,n){s.addEventListener(t,n,!1);var a=e.rollback;e.rollback=function(){s.avalonSetter=null,avalon.unbind(s,t,n),a&&a()}};var d=!1,p=function(){var t=s.value;if(!d&&t!==e.oldValue&&null!==e.pipe){var n=e.pipe(t,e,"get");e.setter(n),a.call(s,n)}};switch(e.xtype){case"radio":e.bound("click",function(){var t=e.pipe(s.value,e,"get");e.setter(t),a.call(s,t)});break;case"checkbox":e.bound("change",function(){var t=s.checked?"ensure":"remove",r=e.getter.apply(0,e.vmodels);Array.isArray(r)||(n("ms-duplex应用于checkbox上要对应一个数组"),r=[r]);var i=e.pipe(s.value,e,"get");avalon.Array[t](r,i),a.call(s,r)});break;case"change":e.bound("change",p);break;case"input":tn?e.bound("input",p):(e.bound("input",p),e.bound("compositionstart",r),e.bound("compositionend",i),e.bound("DOMAutoComplete",p));break;case"select":e.bound("change",function(){var t=avalon(s).val();if(t=Array.isArray(t)?t.map(function(t){return e.pipe(t,e,"get")}):e.pipe(t,e,"get"),t+""!==e.oldValue)try{e.setter(t)}catch(a){n(a)}}),e.bound("datasetchanged",function(t){if("selectDuplex"===t.bubble){var n=e._value,r=Array.isArray(n)?n.map(String):n+"";avalon(s).val(r),s.oldValue=r+"",a.call(s,r)}})}"input"!==e.xtype||Na.test(s.type)||("hidden"!==s.type&&(e.bound("focus",function(){s.msFocus=!0}),e.bound("blur",function(){s.msFocus=!1})),s.avalonSetter=p,Ma(function(){if(Jt.contains(s))s.msFocus||e.oldValue===s.value||p();else if(!s.msRetain)return!1}))},update:function(e){var t,n=this.element,a=this;if(!this.init){for(var r in avalon.vmodels){var i=avalon.vmodels[r];i.$fire("avalon-ms-duplex-init",a)}var o=a.pipe||(a.pipe=ut);o(null,a,"init"),this.init=1}switch(this.xtype){case"input":case"change":if(t=this.pipe(e,this,"set"),t!==this.oldValue){var l=!1;if(n.msFocus)try{var s=n.selectionStart,c=n.selectionEnd;if(s===c){var u=s;l=!0}}catch(f){}n.value=this.oldValue=t,l&&(n.selectionStart=n.selectionEnd=u)}break;case"radio":t=a.isChecked?!!e:e+""===n.value,n.checked=t;break;case"checkbox":var d=[].concat(e);t=this.pipe(n.value,this,"get"),n.checked=d.indexOf(t)>-1;break;case"select":a._value=e,n.msHasEvent?avalon.fireDom(n,"datasetchanged",{bubble:n.msHasEvent}):n.msHasEvent="selectDuplex"}"select"!==a.xtype&&a.changed.call(n,t,a)}})}avalon.duplexHooks={checked:{get:function(e,t){return!t.oldValue}},string:{get:function(e){return e},set:ct},"boolean":{get:function(e){return"true"===e},set:ct},number:{get:function(e,t){var n=parseFloat(e);if(-e===-n)return n;var a=/strong|medium|weak/.exec(t.element.getAttribute("data-duplex-number"))||["medium"];switch(a[0]){case"strong":return 0;case"medium":return""===e?"":0;case"weak":return e}},set:ct}};var Aa,Oa=[];avalon.tick=function(e){1===Oa.push(e)&&(Aa=setInterval(ft,60))};var Ma=o;!new function(){function e(e){t[this.tagName].call(this,e),!this.msFocus&&this.avalonSetter&&this.avalonSetter()}try{var t={},n=HTMLInputElement.prototype,a=HTMLTextAreaElement.prototype,r=HTMLInputElement.prototype;Object.getOwnPropertyNames(r),t.INPUT=Object.getOwnPropertyDescriptor(n,"value").set,Object.defineProperty(n,"value",{set:e}),t.TEXTAREA=Object.getOwnPropertyDescriptor(a,"value").set,Object.defineProperty(a,"value",{set:e})}catch(i){Ma=avalon.tick}},avalon.directive("effect",{priority:5,init:function(e){var t,n,a=e.expr,r=a.replace(vn,function(e){return e.replace(/./g,"0")}).indexOf(":");-1===r?(t=a,n=!0):(t=a.slice(0,r),n=a.slice(r+1)),t=pn.test(a)?z(t):ta(t),e.expr="["+t+","+n+"]"},update:function(t){var n=t[0],a=this.element;if(a.getAttribute("data-effect-name")!==n){a.removeAttribute("data-effect-driver");var r=a.style,i=e.getComputedStyle?e.getComputedStyle(a):null,o=!1;if(i&&(Da||La)){var l=r[Ha]||i[Ha];l&&"0s"!==l&&(a.setAttribute("data-effect-driver","t"),o=!0),o||(l=r[Pa]||i[Pa],l&&"0s"!==l&&(a.setAttribute("data-effect-driver","a"),o=!0))}o||avalon.effects[n]&&(a.setAttribute("data-effect-driver","j"),o=!0),o&&a.setAttribute("data-effect-name",n)}}}),avalon.effects={},avalon.effect=function(e,t){avalon.effects[e]=t};var Sa,ja,Da=!1,La=!1,Ha=avalon.cssName("transition-duration"),Pa=avalon.cssName("animation-duration");!new function(){var t,n={TransitionEvent:"transitionend",WebKitTransitionEvent:"webkitTransitionEnd",OTransitionEvent:"oTransitionEnd",otransitionEvent:"otransitionEnd"};for(var a in n){if(e[a]){t=n[a];break}try{{document.createEvent(a)}t=n[a];break}catch(r){}}"string"==typeof t&&(Da=!0,Sa=t),n={AnimationEvent:"animationend",WebKitAnimationEvent:"webkitAnimationEnd"};var i;for(a in n)if(e[a]){i=n[a];break}"string"==typeof i&&(Da=!0,ja=i)};var Ra=[],qa=new ha;ht.prototype={contrustor:ht,enterClass:function(){return mt(this,"enter")},leaveClass:function(){return mt(this,"leave")},actionFun:function(e,t,n){if(!document.hidden){var a=this,r=a.el,i="leave"===e;e=i?"leave":"enter";var o=i?"enter":"leave";gt(a,"abort"+vt(o)),gt(a,"before"+vt(e)),i||t(r);var l=function(o){r.removeEventListener(a.cssEvent,a.cssCallback),i?(t(r),avalon(r).removeClass(a.cssClass)):"a"===a.driver&&avalon(r).removeClass(a.cssClass),o!==!0&&(gt(a,"after"+vt(e)),n&&n(r)),a.dispose()};a.useCss?(a.cssCallback&&a.cssCallback(!0),a.cssClass=mt(a,e),a.cssCallback=l,a.update=function(){r.addEventListener(a.cssEvent,a.cssCallback),i||"t"!==a.driver||avalon(r).removeClass(a.cssClass)},avalon(r).addClass(a.cssClass),qa.render(!0),qa.queue.push(a)):gt(a,e,l)}},enter:function(){this.actionFun.apply(this,["enter"].concat(avalon.slice(arguments)))},leave:function(){this.actionFun.apply(this,["leave"].concat(avalon.slice(arguments)))},dispose:function(){this.update=this.cssCallback=null,Ra.unshift(this)>100&&Ra.pop()}};var Ba=function(e,t){var n=Gt.call(arguments,0);"function"!=typeof n[2]&&n.splice(2,0,o),"function"!=typeof n[3]&&n.splice(3,0,o);var a=n[2],r=n[3],i=n[4],l=dt(e,i);if(!l)return a(),r(),!1;var s=t?"enter":"leave";l[s](a,r)};avalon.mix(avalon.effect,{apply:Ba,append:function(e,t,n,a){return Ba(e,1,function(){t.appendChild(e)},n,a)},before:function(e,t,n,a){return Ba(e,1,function(){t.parentNode.insertBefore(e,t)},n,a)},remove:function(e,t,n,a){return Ba(e,0,function(){e.parentNode===t&&t.removeChild(e)},n,a)}}),avalon.directive("html",{update:function(e){var t=this,n=this.element,a=1!==n.nodeType,r=a?n.parentNode:n;if(r){if(e=null==e?"":e,3===n.nodeType){var i=en("html");r.insertBefore(Pt.createComment(i),n),t.element=Pt.createComment(i+":end"),r.replaceChild(t.element,n),n=t.element}if("object"!=typeof e)var o=avalon.parseHTML(String(e));else if(11===e.nodeType)o=e;else if(1===e.nodeType||e.item){var l=1===e.nodeType?e.childNodes:e.item;for(o=Kt.cloneNode(!0);l[0];)o.appendChild(l[0])}if(l=avalon.slice(o.childNodes),a){for(var s=n.nodeValue.slice(0,-4);;){var c=n.previousSibling;if(!c||8===c.nodeType&&c.nodeValue===s)break;r.removeChild(c)}r.insertBefore(o,n)}else avalon.clearHTML(n).appendChild(o);nt(l,t.vmodels)}}}),avalon.directive("if",{priority:10,update:function(e){function t(){r.getAttribute(a.name)&&(r.removeAttribute(a.name),Q(r,a.vmodels)),a.rollback=null}var n,a=this,r=this.element,i=a.stamp=+new Date,o=function(){i===a.stamp&&(a.recoverNode=null)};a.recoverNode&&a.recoverNode();try{if(!r.parentNode)return;n=r.parentNode}catch(l){return}if(e){if(8===r.nodeType){var s=a.keep,c=avalon.effect.apply(s,1,function(){i===a.stamp&&(r.parentNode.replaceChild(s,r),r=a.element=s,s.getAttribute("_required")&&(r.required=!0,r.removeAttribute("_required")),r.querySelectorAll&&avalon.each(r.querySelectorAll("[_required=true]"),function(e){e.required=!0,e.removeAttribute("_required")}),t())},o);c=c===!1}c||t()}else if(1===r.nodeType){r.required===!0&&(r.required=!1,r.setAttribute("_required","true"));try{avalon.each(r.querySelectorAll(":required"),function(e){r.required=!1,e.setAttribute("_required","true")})}catch(l){}var u=a.element=Pt.createComment("ms-if"),f=r.nextSibling;a.recoverNode=function(){a.recoverNode=null,u.parentNode!==n&&(n.insertBefore(u,f),a.keep=r)},avalon.effect.apply(r,0,function(){a.recoverNode=null,i===a.stamp&&(r.parentNode.replaceChild(u,r),a.keep=r,qt.appendChild(r),a.rollback=function(){r.parentNode===qt&&qt.removeChild(r)})},o)}}});var Fa=function(){return new e.XMLHttpRequest},_a=avalon.templateCache={};avalon.directive("include",{init:on.attr.init,update:function(e){var t=this,a=this.element,r=t.vmodels,i=t.includeRendered,o=t.effectName&&t.effectClass,l=t.templateCache,s=t.includeReplace,c=t.includeLoaded,u=s?a.parentNode:a,f=t._element;t.recoverNodes=t.recoverNodes||avalon.noop;var d=function(n){var d=t._stamp=+new Date;if(c){var p=c.apply(u,[n].concat(r));"string"==typeof p&&(n=p)}i&&G(u,function(){i.call(u)},0/0);var v=t.includeLastID||"_default";t.includeLastID=e;var h=l&&l[v]||Pt.createElement(a.tagName||t._element.tagName);o&&(h.className=o,u.insertBefore(h,t.start)),(l||{})[v]=h;var m=t.recoverNodes();for(m&&u.insertBefore(m,t.end);;){var g=t.start.nextSibling;if(!g||g===h||g===t.end)break;h.appendChild(g)}avalon.effect.remove(h,u,function(){l&&d===t._stamp&&qt.appendChild(h)},t);var y=u,b=avalon.noop,$=avalon.noop,x=yt(t,e,n),w=avalon.slice(x.childNodes);s&&o?(y=f,y.innerHTML="",y.setAttribute("ms-skip","true"),u.insertBefore(y,t.end.nextSibling),b=function(){y.insertBefore(x,null)},$=function(){t.recoverNodes=avalon.noop,d===t._stamp&&(x=bt(w),u.insertBefore(x,t.end),nt(w,r)),y.parentNode===u&&u.removeChild(y)},t.recoverNodes=function(){return t.recoverNodes=avalon.noop,bt(w)}):b=function(){u.insertBefore(x,t.end),nt(w,r)},avalon.effect.apply(y,"enter",b,$)};if("src"===t.param)if("string"==typeof _a[e])avalon.nextTick(function(){d(_a[e])});else if(Array.isArray(_a[e]))_a[e].push(d);else{var p=Fa();p.onload=function(){for(var t,n=p.responseText,a=0;t=_a[e][a++];)t(n);_a[e]=n},p.onerror=function(){n("ms-include load ["+e+"] error")},_a[e]=[d],p.open("GET",e,!0),"withCredentials"in p&&(p.withCredentials=!0),p.setRequestHeader("X-Requested-With","XMLHttpRequest"),p.send(null)}else{var v=e&&1===e.nodeType?e:Pt.getElementById(e);v&&avalon.nextTick(function(){d(v.value||v.innerText||v.innerHTML)})}}});var Ia=/\(([^)]*)\)/,Va=avalon.directive("on",{priority:3e3,init:function(e){var t=e.expr;e.type="on";var n=e.param.replace(/-\d+$/,"");if("function"==typeof Va[n+"Hook"]&&Va[n+"Hook"](e),t.indexOf("(")>0&&t.indexOf(")")>-1){var a=(t.match(Ia)||["",""])[1].trim();(""===a||"$event"===a)&&(t=t.replace(Ia,""))}e.expr=t},update:function(e){var t=this,n=this.element;e=function(e){var n=t.getter||o;return n.apply(this,t.args.concat(e))};var a=t.param.replace(/-\d+$/,"");if("scan"===a)e.call(n,{type:a});else if("function"==typeof t.specialBind)t.specialBind(n,e);else var r=avalon.bind(n,a,e);t.rollback=function(){"function"==typeof t.specialUnbind?t.specialUnbind():avalon.unbind(n,a,r)}}});avalon.directive("repeat",{priority:90,init:function(e){var t=e.type;e.cache={},e.enterCount=0;var n=e.element;if(1===n.nodeType){n.removeAttribute(e.name),pt(n,e),e.param=e.param||"el",e.sortedCallback=aa(n,"data-with-sorted",e.vmodels);var a=aa(n,"data-"+t+"-rendered",e.vmodels),r=en(t),i=Pt.createComment(r+":start"),o=e.element=Pt.createComment(r+":end");if(e.signature=r,e.start=i,e.template=Kt.cloneNode(!1),"repeat"===t){var l=n.parentNode;l.replaceChild(o,n),l.insertBefore(i,o),e.template.appendChild(n)}else{for(;n.firstChild;)e.template.appendChild(n.firstChild);n.appendChild(i),n.appendChild(o),l=n}if(e.element=o,a)var s=avalon.bind(l,"datasetchanged",function(){a.apply(l,l.args),avalon.unbind(l,"datasetchanged",s),l.msRendered=a})}},update:function(e,t){var n=this,a=this.xtype;this.enterCount+=1;var r=!t;if(r){n.$outer={};var i="$key",o="$val";"array"===a&&(i="$first",o="$last");for(var l,s=0;l=n.vmodels[s++];)if(l.hasOwnProperty(i)&&l.hasOwnProperty(o)){n.$outer=l;break}}var c=this.track;if(n.sortedCallback){var u=n.sortedCallback.call($,c);u&&Array.isArray(u)&&(c=u)}var d="move";n.$repeat=e;var p=[],v=r&&Kt.cloneNode(!1),h=[],m=this.param,g=avalon.mix({},this.cache),y=this.element,b=c.length,$=y.parentNode;for(s=0;b>s;s++){var x=c[s],w=g[x];if(w)p.push({}),g[x]=!0;else{if(w=Tt(this),w.$up=null,"array"===a){d="add",w.$id=x;var C=e[s];w[m]=C,Object(C)===C&&(C.$ups=C.$ups||{},C.$ups[m]=w)}else d="append",w.$key=x,w.$val=e[x];this.cache[x]=w;var T=w.$anchor||(w.$anchor=y.cloneNode(!1));T.nodeValue=this.signature,Ct(n,v,w,p,r&&!n.effectDriver),Nt(w,n,a)}1===this.enterCount&&(w.$active=!1,w.$oldIndex=w.$index,w.$active=!0,w.$index=s),"array"===a?(w.$first=0===s,w.$last=s===b-1):w.$val=k(e[x]),h.push(w)}if(this.proxies=h,r&&!n.effectDriver)$.insertBefore(v,y),p.forEach(function(e){nt(e.nodes||[],e.vmodels),e.nodes=e.vmodels=null});else{var E=n.staggerIndex=0;for(x in g)g[x]!==!0&&(d="del",wt(g[x].$anchor,n),Mt(this.cache,x,m),g[x]=null);for(s=0;b>s;s++){w=h[s],x="array"===a?w.$id:w.$key;var N=h[s-1],A=N?N.$anchor:n.start;g[x]?w.$index!==w.$oldIndex&&!function(e,t){E=xt(n.effectEnterStagger,function(){var a=wt(e.$anchor),r=avalon.slice(a.childNodes);$.insertBefore(a,t.nextSibling),$t(r,1,n)},E)}(w,A):!function(e,t){var a=e.nodes,r=e.vmodels;a&&(E=xt(n.effectEnterStagger,function(){$.insertBefore(e.content,t.nextSibling),nt(a,r),$t(a,1,n)},E)),e.nodes=e.vmodels=null}(p[s],A)}}if(!e.$track)for(x in this.cache)Mt(this.cache,x,m);!function(e){$.args=e,$.msRendered&&$.msRendered.apply($,e)}(f.newWatch?arguments:[d]);var O=setTimeout(function(){clearTimeout(O),avalon.fireDom($,"datasetchanged",{bubble:$.msHasEvent})});this.enterCount-=1}}),"with,each".replace(_t,function(e){on[e]=avalon.mix({},on.repeat,{priority:1400})});var Xa=[],Ya=[];avalon.directive("text",{update:function(e){var t=this.element;if(e=null==e?"":e,3===t.nodeType)try{t.data=e}catch(n){}else t.textContent=e}}),avalon.parseDisplay=St,avalon.directive("visible",{init:function(e){pt(e.element,e)},update:function(e){var t,n=this,a=this.element,r=!this.effectName;return this.stamp?(t=this.stamp=+new Date,void(e?avalon.effect.apply(a,1,function(){if(t===n.stamp){var e=a.getAttribute("data-effect-driver")||"a";r&&(a.style.display=n.display||""),("a"===e||"t"===e)&&"none"===avalon(a).css("display")&&(a.style.display=n.display||St(a.nodeName))}}):avalon.effect.apply(a,0,function(){t===n.stamp&&(a.style.display="none")}))):(t=this.stamp=+new Date,void(e?(a.style.display=n.display||"","none"===avalon(a).css("display")&&(a.style.display=n.display=St(a.nodeName))):a.style.display="none"))}});var Ua=/<script[^>]*>([\S\s]*?)<\/script\s*>/gim,za=/\s+(on[^=\s]+)(?:=("[^"]*"|'[^']*'|[^\s>]+))?/g,Wa=/<\w+\b(?:(["'])[^"]*?(\1)|[^>])*>/gi,Ga={a:/\b(href)\=("javascript[^"]*"|'javascript[^']*')/gi,img:/\b(src)\=("javascript[^"]*"|'javascript[^']*')/gi,form:/\b(action)\=("javascript[^"]*"|'javascript[^']*')/gi},Za=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,Ja=/([^\#-~| |!])/g,Ka=avalon.filters={uppercase:function(e){return e.toUpperCase()},lowercase:function(e){return e.toLowerCase()},truncate:function(e,t,n){return t=t||30,n="string"==typeof n?n:"...",e.length>t?e.slice(0,t-n.length)+n:String(e)},$filter:function(e){for(var t=1,n=arguments.length;n>t;t++){var a=arguments[t],r=avalon.filters[a[0]];if("function"==typeof r){var i=[e].concat(a.slice(1));e=r.apply(null,i)}}return e},camelize:R,sanitize:function(e){return e.replace(Ua,"").replace(Wa,function(e){var t=e.toLowerCase().match(/<(\w+)\s/);if(t){var n=Ga[t[1]];n&&(e=e.replace(n,function(e,t,n){var a=n.charAt(0);return t+"="+a+"javascript:void(0)"+a}))}return e.replace(za," ").replace(/\s+/g," ")})},escape:function(e){return String(e).replace(/&/g,"&amp;").replace(Za,function(e){var t=e.charCodeAt(0),n=e.charCodeAt(1);return"&#"+(1024*(t-55296)+(n-56320)+65536)+";"}).replace(Ja,function(e){return"&#"+e.charCodeAt(0)+";"}).replace(/</g,"&lt;").replace(/>/g,"&gt;")},currency:function(e,t,n){return(t||"¥")+jt(e,isFinite(n)?n:2)},number:jt};!new function(){function e(e){return parseInt(e,10)||0}function t(e,t,n){var a="";for(0>e&&(a="-",e=-e),e=""+e;e.length<t;)e="0"+e;return n&&(e=e.substr(e.length-t)),a+e}function n(e,n,a,r){return function(i){var o=i["get"+e]();return(a>0||o>-a)&&(o+=a),0===o&&-12===a&&(o=12),t(o,n,r)}}function a(e,t){return function(n,a){var r=n["get"+e](),i=(t?"SHORT"+e:e).toUpperCase();return a[i][r]}}function r(e){var n=-1*e.getTimezoneOffset(),a=n>=0?"+":"";return a+=t(Math[n>0?"floor":"ceil"](n/60),2)+t(Math.abs(n%60),2)}function i(e,t){return e.getHours()<12?t.AMPMS[0]:t.AMPMS[1]}var o={yyyy:n("FullYear",4),yy:n("FullYear",2,0,!0),y:n("FullYear",1),MMMM:a("Month"),MMM:a("Month",!0),MM:n("Month",2,1),M:n("Month",1,1),dd:n("Date",2),d:n("Date",1),HH:n("Hours",2),H:n("Hours",1),hh:n("Hours",2,-12),h:n("Hours",1,-12),mm:n("Minutes",2),m:n("Minutes",1),ss:n("Seconds",2),s:n("Seconds",1),sss:n("Milliseconds",3),EEEE:a("Day"),EEE:a("Day",!0),a:i,Z:r},l=/((?:[^yMdHhmsaZE']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z))(.*)/,s=/^\/Date\((\d+)\)\/$/;Ka.date=function(t,n){var a,r,i=Ka.date.locate,c="",u=[];if(n=n||"mediumDate",n=i[n]||n,"string"==typeof t)if(/^\d+$/.test(t))t=e(t);else if(s.test(t))t=+RegExp.$1;else{var f=t.trim(),d=[0,0,0,0,0,0,0],p=new Date(0);f=f.replace(/^(\d+)\D(\d+)\D(\d+)/,function(t,n,a,r){var i=4===r.length?[r,n,a]:[n,a,r];return d[0]=e(i[0]),d[1]=e(i[1])-1,d[2]=e(i[2]),""});var v=p.setFullYear,h=p.setHours;f=f.replace(/[T\s](\d+):(\d+):?(\d+)?\.?(\d)?/,function(t,n,a,r,i){return d[3]=e(n),d[4]=e(a),d[5]=e(r),i&&(d[6]=Math.round(1e3*parseFloat("0."+i))),""});var m=0,g=0;f=f.replace(/Z|([+-])(\d\d):?(\d\d)/,function(t,n,a,r){return v=p.setUTCFullYear,h=p.setUTCHours,n&&(m=e(n+a),g=e(n+r)),""}),d[3]-=m,d[4]-=g,v.apply(p,d.slice(0,3)),h.apply(p,d.slice(3)),t=p}if("number"==typeof t&&(t=new Date(t)),"date"===avalon.type(t)){for(;n;)r=l.exec(n),r?(u=u.concat(r.slice(1)),n=u.pop()):(u.push(n),n=null);return u.forEach(function(e){a=o[e],c+=a?a(t,i):e.replace(/(^'|'$)/g,"").replace(/''/g,"'")}),c}};var c={AMPMS:{0:"上午",1:"下午"},DAY:{0:"星期日",1:"星期一",2:"星期二",3:"星期三",4:"星期四",5:"星期五",6:"星期六"},MONTH:{0:"1月",1:"2月",2:"3月",3:"4月",4:"5月",5:"6月",6:"7月",7:"8月",8:"9月",9:"10月",10:"11月",11:"12月"},SHORTDAY:{0:"周日",1:"周一",2:"周二",3:"周三",4:"周四",5:"周五",6:"周六"},fullDate:"y年M月d日EEEE",longDate:"y年M月d日",medium:"yyyy-M-d H:mm:ss",mediumDate:"yyyy-M-d",mediumTime:"H:mm:ss","short":"yy-M-d ah:mm",shortDate:"yy-M-d",shortTime:"ah:mm"};c.SHORTMONTH=c.MONTH,Ka.date.locate=c};var Qa=avalon.modules={"domReady!":{exports:avalon,state:3},avalon:{exports:avalon,state:4}};Qa.exports=Qa.avalon;var er,tr=e.require,nr=e.define;gn.loader=function(t){var n=er&&t;e.require=n?er:tr,e.define=n?er.define:nr},new function(){function t(e,t){var a="js";e=e.replace(/^(\w+)\!/,function(e,t){return a=t,""}),"ready"===a&&(n("debug: ready!已经被废弃,请使用domReady!"),a="domReady");var r="";e=e.replace(H,function(e){return r=e,""});var i="."+a,o=/js|css/.test(i)?i:"";e=e.replace(/\.[a-z0-9]+$/g,function(e){return e===i?(o=e,""):e});var l=avalon.mix({query:r,ext:o,res:a,name:e,toUrl:m},t);return l.toUrl(e),l}function i(e){var t=e.name,n=e.res,a=Qa[t],r=t&&e.urlNoQuery;if(a&&a.state>=1)return t;if(a=Qa[r],a&&a.state>=3)return er(a.deps||[],a.factory,r),r;if(t&&!a){a=Qa[r]={id:r,state:1};var i=function(r){L[n]=r,r.load(t,e,function(e){arguments.length&&void 0!==e&&(a.exports=e),a.state=4,c()})};L[n]?i(L[n]):er([n],i)}return t?r:n+"!"}function l(e,t){for(var n,a=0;n=e[a++];)if(4!==Qa[n].state&&(n===t||l(Qa[n].deps,t)))return!0}function s(e,t){var a=d(e.src);return e.onload=e.onerror=null,t?(setTimeout(function(){Rt.removeChild(e),e=null}),void n("debug: 加载 "+a+" 失败"+t+" "+!Qa[a].state)):!0}function c(){e:for(var e,t=k.length;e=k[--t];){var n=Qa[e],a=n.deps;if(a){for(var r,i=0;r=a[i];i++)if(4!==Object(Qa[r]).state)continue e;4!==n.state&&(k.splice(t,1),h(n.id,n.deps,n.factory),c())
3
- }}}function u(e,t,a){var r=Pt.createElement("script");r.className=Bt,r.onload=function(){var r=E.pop();r&&r.require(t),a&&a(),n("debug: 已成功加载 "+e),t&&k.push(t),c()},r.onerror=function(){s(r,!0)},Rt.insertBefore(r,Rt.firstChild),r.src=e,n("debug: 正准备加载 "+e)}function d(e){return(e||"").replace(H,"")}function p(e){return/^(?:[a-z]+:)?\/\//i.test(String(e))}function v(){var e;try{a.b.c()}catch(t){e=t.stack}if(e)return e=e.split(/[@ ]/g).pop(),e="("===e[0]?e.slice(1,-1):e.replace(/\s/,""),d(e.replace(/(:\d+)?:\d+$/i,""));for(var n,r=Rt.getElementsByTagName("script"),i=r.length;n=r[--i];)if(n.className===Bt&&"interactive"===n.readyState){var o=n.src;return n.className=d(o)}}function h(t,a,i){var o=Object(Qa[t]);o.state=4;for(var l,s=0,c=[];l=a[s++];)if("exports"===l){var u=o.exports||(o.exports=r());c.push(u)}else c.push(Qa[l].exports);try{var f=i.apply(e,c)}catch(d){n("执行["+t+"]模块的factory抛错: ",d)}return void 0!==f&&(o.exports=f),P.test(t)&&delete Qa[t],delete o.factory,f}function m(e){0===e.indexOf(this.res+"!")&&(e=e.slice(this.res.length+1));var t=e,n=0,a=this.baseUrl,r=this.parentUrl||a;x(e,f.paths,function(e,a){t=t.replace(a,e),n=1}),n||x(e,f.packages,function(e,n,a){t=t.replace(a.name,a.location)}),this.mapUrl&&x(this.mapUrl,f.map,function(e){x(t,e,function(e,n){t=t.replace(n,e),r=a})});var i=this.ext;i&&n&&t.slice(-i.length)===i&&(t=t.slice(0,-i.length)),p(t)||(r=this.built||/^\w/.test(t)?a:r,t=C(r,t));var o=t+i;return t=o+this.query,o=t.replace(H,function(e){return this.query=e,""}),x(e,f.urlArgs,function(e){t+=(-1===t.indexOf("?")?"?":"&")+e}),this.url=t,this.urlNoQuery=o}function g(e,t,n){var a=$(e,t,n);return a.sort(w),a}function y(e){return new RegExp("^"+e+"(/|$)")}function b(t){return function(){var n;return t.init&&(n=t.init.apply(e,arguments)),n||t.exports&&T(t.exports)}}function $(e,t,n){var a=[];for(var r in e){var i={name:r,val:e[r]};a.push(i),i.reg="*"===r&&t?/^/:y(r),n&&"*"!==r&&(i.reg=new RegExp("/"+r.replace(/^\//,"")+"(/|$)"))}return a}function x(e,t,n){t=t||[];for(var a,r=0;a=t[r++];)if(a.reg.test(e))return n(a.val,a.name,a),!1}function w(e,t){var n=e.name,a=t.name;return"*"===a?-1:"*"===n?1:a.length-n.length}function C(e,t){if("/"!==e.charAt(e.length-1)&&(e+="/"),"./"===t.slice(0,2))return e+t.slice(2);if(".."===t.slice(0,2)){for(e+=t;R.test(e);)e=e.replace(R,"");return e}return"/"===t.slice(0,1)?e+t.slice(1):e+t}function T(t){if(!t)return t;var n=e;return t.split(".").forEach(function(e){n=n[e]}),n}var k=[],E=[],N=/\.js$/i,A=[],O=!1;er=avalon.require=function(e,n,a,l){if(O){Array.isArray(e)||avalon.error("require方法的第一个参数应为数组 "+e);var s=[],u=r(),d=a||"callback"+setTimeout("1");l=l||r(),l.baseUrl=f.baseUrl;var p=!!l.built;if(a&&(l.parentUrl=a.substr(0,a.lastIndexOf("/")),l.mapUrl=a.replace(N,"")),p){var v=t(l.defineName,l);d=v.urlNoQuery}else e.forEach(function(e){var n=t(e,l),a=i(n);a&&(u[a]||(s.push(a),u[a]="司徒正美"))});var h=Qa[d];h&&4===h.state||(Qa[d]={id:d,deps:p?e.concat():s,factory:n||o,state:3}),h||k.push(d),c()}else if(A.push(avalon.slice(arguments)),arguments.length<=2){O=!0;for(var m,g=A.splice(0,A.length);m=g.shift();)er.apply(null,m)}},er.define=function(e,t,n){"string"!=typeof e&&(n=t,t=e,e="anonymous"),Array.isArray(t)||(n=t,t=[]);var a={built:!O,defineName:e},r=[t,n,a];n.require=function(e){if(r.splice(2,0,e),Qa[e]){Qa[e].state=3;var t=!1;try{t=l(Qa[e].deps,e)}catch(a){}t&&avalon.error(e+"模块与之前的模块存在循环依赖,请不要直接用script标签引入"+e+"模块")}delete n.require,er.apply(null,r)};var i=a.built?"unknown":v();if(i){var o=Qa[i];o&&(o.state=2),n.require(i)}else E.push(n)},er.config=f,er.define.amd=Qa;var M=f["orig.paths"]=r(),S=f["orig.map"]=r(),j=f.packages=[],D=f["orig.args"]=r();avalon.mix(gn,{paths:function(e){avalon.mix(M,e),f.paths=g(M)},map:function(e){avalon.mix(S,e);var t=g(S,1,1);avalon.each(t,function(e,t){t.val=g(t.val)}),f.map=t},packages:function(e){e=e.concat(j);for(var t,n=r(),a=[],i=0;t=e[i++];){t="string"==typeof t?{name:t}:t;var o=t.name;if(!n[o]){var l=C(t.location||o,t.main||"main");l=l.replace(N,""),a.push(t),n[o]=t.location=l,t.reg=y(o)}}f.packages=a.sort()},urlArgs:function(e){"string"==typeof e&&(e={"*":e}),avalon.mix(D,e),f.urlArgs=g(D,1)},baseUrl:function(e){if(!p(e)){var t=Rt.getElementsByTagName("base")[0];t&&Rt.removeChild(t);var n=Pt.createElement("a");n.href=e,e=n.href,t&&Rt.insertBefore(t,Rt.firstChild)}e.length>3&&(f.baseUrl=e)},shim:function(e){for(var t in e){var n=e[t];Array.isArray(n)&&(n=e[t]={deps:n}),n.exportsFn||!n.exports&&!n.init||(n.exportsFn=b(n))}f.shim=e}});var L=er.plugins={domReady:{load:o},js:{load:function(e,t,n){var a=t.url,r=t.urlNoQuery,i=f.shim[e.replace(N,"")];i?er(i.deps||[],function(){var e=avalon.slice(arguments);u(a,r,function(){n(i.exportsFn?i.exportsFn.apply(0,e):void 0)})}):u(a,r)}},css:{load:function(e,t,a){var r=t.url;Rt.insertAdjacentHTML("afterBegin",'<link rel="stylesheet" href="'+r+'">'),n("debug: 已成功加载 "+r),a()}},text:{load:function(e,t,a){var r=t.url,i=Fa();i.onload=function(){var e=i.status;e>399&&600>e?avalon.error(r+" 对应资源不存在或没有开启 CORS"):(n("debug: 已成功加载 "+r),a(i.responseText))};var o="_="+(new Date-0),l=-1===r.indexOf("?")?r+"?"+o:r+"&"+o;i.open("GET",l,!0),"withCredentials"in i&&(i.withCredentials=!0),i.setRequestHeader("X-Requested-With","XMLHttpRequest"),i.send(),n("debug: 正准备加载 "+r)}}};er.checkDeps=c;var H=/(\?[^#]*)$/,P=/^callback\d+$/,R=/\/\w+\/\.\./,q=Pt.scripts[Pt.scripts.length-1],B=q.getAttribute("data-main");if(B){gn.baseUrl(B);var F=f.baseUrl;f.baseUrl=F.slice(0,F.lastIndexOf("/")+1),u(F.replace(N,"")+".js")}else{var _=d(q.src);f.baseUrl=_.slice(0,_.lastIndexOf("/")+1)}};var ar,rr=[],ir=function(e){ar=!0;var t=avalon.require;for(t&&t.checkDeps&&(Qa["domReady!"].state=4,t.checkDeps());e=rr.shift();)e(avalon)};"complete"===Pt.readyState?setTimeout(ir):Pt.addEventListener("DOMContentLoaded",ir),e.addEventListener("load",ir),avalon.ready=function(e){ar?e(avalon):rr.push(e)},avalon.config({loader:!0}),avalon.ready(function(){avalon.scan(Pt.body)});var or=navigator.userAgent.toLowerCase(),lr=or.indexOf("android")>0,sr=Dt(),cr=avalon.gestureHooks={pointers:{},start:function(e,t){for(var n=0;n<e.changedTouches.length;n++){var a=e.changedTouches[n],r={startTouch:Lt({},a),startTime:Date.now(),status:"tapping",element:e.target};cr.pointers[a.identifier]=r,t(r,a)}},move:function(e,t){for(var n=0;n<e.changedTouches.length;n++){var a=e.changedTouches[n],r=cr.pointers[a.identifier];if(!r)return;"lastTouch"in r||(r.lastTouch=r.startTouch,r.lastTime=r.startTime,r.deltaX=r.deltaY=r.duration=r.distance=0);var i=Date.now()-r.lastTime;if(i>0){var o=70;i>o&&(i=o),r.duration+i>o&&(r.duration=o-i),r.duration+=i,r.lastTouch=Lt({},a),r.lastTime=Date.now(),r.deltaX=a.clientX-r.startTouch.clientX,r.deltaY=a.clientY-r.startTouch.clientY;var l=r.deltaX*r.deltaX,s=r.deltaY*r.deltaY;r.distance=Math.sqrt(l+s),r.isVertical=s>l,t(r,a)}}},end:function(e,t){for(var n=0;n<e.changedTouches.length;n++){var a=e.changedTouches[n],r=a.identifier,i=cr.pointers[r];i&&(t(i,a),delete cr.pointers[r])}},fire:function(e,t,n){if(e){var a=document.createEvent("Events");a.initEvent(t,!0,!0),avalon.mix(a,n),e.dispatchEvent(a)}},add:function(e,t){function n(e){t.touchmove(e)}function a(e){t.touchend(e),document.removeEventListener("touchmove",n),document.removeEventListener("touchend",a),document.removeEventListener("touchcancel",r)}function r(e){t.touchcancel(e),document.removeEventListener("touchmove",n),document.removeEventListener("touchend",a),document.removeEventListener("touchcancel",r)}t.events.forEach(function(i){avalon.eventHooks[i]={fn:function(i,o){return i["touch-"+e]||(i["touch-"+e]="1",i.addEventListener("touchstart",function(e){t.touchstart(e),document.addEventListener("touchmove",n),document.addEventListener("touchend",a),document.addEventListener("touchcancel",r)})),o}}})}},ur=["screenX","screenY","clientX","clientY","pageX","pageY"],fr=!!navigator.pointerEnabled||!!navigator.msPointerEnabled;fr&&(Jt.style.msTouchAction=Jt.style.touchAction="none");var dr={events:["tap"],touchBoundary:10,tapDelay:200,needClick:function(e){switch(e.nodeName.toLowerCase()){case"button":case"select":case"textarea":if(e.disabled)return!0;break;case"input":if(sr&&"file"===e.type||e.disabled)return!0;break;case"label":case"iframe":case"video":return!0}return!1},needFocus:function(e){switch(e.nodeName.toLowerCase()){case"textarea":case"select":return!0;case"input":switch(e.type){case"button":case"checkbox":case"file":case"image":case"radio":case"submit":return!1}return!e.disabled&&!e.readOnly;default:return!1}},focus:function(e){var t,n=e.type;sr&&e.setSelectionRange&&0!==n.indexOf("date")&&"time"!==n&&"month"!==n?(t=e.value.length,e.setSelectionRange(t,t)):e.focus()},findControl:function(e){return void 0!==e.control?e.control:e.htmlFor?document.getElementById(e.htmlFor):e.querySelector("button, input:not([type=hidden]), keygen, meter, output, progress, select, textarea")},fixTarget:function(t){return 3===t.nodeType?t.parentNode:e.SVGElementInstance&&t instanceof SVGElementInstance?t.correspondingUseElement:t},updateScrollParent:function(e){var t=e.tapScrollParent;if(!t||!t.contains(e)){var n=e;do{if(n.scrollHeight>n.offsetHeight){t=n,e.tapScrollParent=n;break}n=n.parentElement}while(n)}t&&(t.lastScrollTop=t.scrollTop)},touchHasMoved:function(e){var t=e.changedTouches[0],n=dr.touchBoundary;return Math.abs(t.pageX-dr.touchStartX)>n||Math.abs(t.pageY-dr.touchStartY)>n},findType:function(e){return lr&&"select"===e.tagName.toLowerCase()?"mousedown":"click"},sendClick:function(t,n){cr.fire(t,"tap",{touchEvent:n});var a,r;document.activeElement&&document.activeElement!==t&&document.activeElement.blur(),r=n.changedTouches[0],a=document.createEvent("MouseEvents"),a.initMouseEvent(dr.findType(t),!0,!0,e,1,r.screenX,r.screenY,r.clientX,r.clientY,!1,!1,!1,!1,0,null),a.touchEvent=n,t.dispatchEvent(a)},touchstart:function(t){if(1!==t.targetTouches.length)return!0;var n=dr.fixTarget(t.target),a=t.targetTouches[0];if(sr){var r=e.getSelection();if(r.rangeCount&&!r.isCollapsed)return!0;var i=a.identifier;if(i&&isFinite(dr.lastTouchIdentifier)&&dr.lastTouchIdentifier===i)return t.preventDefault(),!1;dr.lastTouchIdentifier=i,dr.updateScrollParent(n)}dr.status="tapping",dr.startTime=Date.now(),dr.element=n,dr.pageX=a.pageX,dr.pageY=a.pageY,dr.startTime-dr.lastTime<dr.tapDelay&&t.preventDefault()},touchmove:function(e){return"tapping"!==dr.status?!0:void((dr.element!==dr.fixTarget(e.target)||dr.touchHasMoved(e))&&(dr.status=dr.element=0))},touchend:function(t){var n=dr.element,a=Date.now();if(!n||a-dr.startTime>dr.tapDelay)return!0;dr.lastTime=a;var r=dr.startTime;if(dr.status=dr.startTime=0,targetTagName=n.tagName.toLowerCase(),"label"===targetTagName){cr.fire(n,"tap",{touchEvent:t});var i=dr.findControl(n);i&&(dr.focus(n),n=i)}else if(dr.needFocus(n))return a-r>100||sr&&e.top!==e&&"input"===targetTagName?(dr.element=0,!1):(dr.focus(n),lr&&dr.sendClick(n,t),!1);if(sr){var o=n.tapScrollParent;if(o&&o.lastScrollTop!==o.scrollTop)return!0}dr.needClick(n)||(t.preventDefault(),dr.sendClick(n,t))},touchcancel:function(){dr.startTime=dr.element=0}};cr.add("tap",dr);var pr={events:["longtap","doubletap"],cancelPress:function(e){clearTimeout(e.pressingHandler),e.pressingHandler=null},touchstart:function(e){cr.start(e,function(t,n){t.pressingHandler=setTimeout(function(){"tapping"===t.status&&cr.fire(e.target,"longtap",{touch:n,touchEvent:e}),pr.cancelPress(t)},500),1!==e.changedTouches.length&&(t.status=0)})},touchmove:function(e){cr.move(e,function(e){e.distance>10&&e.pressingHandler&&(pr.cancelPress(e),"tapping"===e.status&&(e.status="panning"))})},touchend:function(e){cr.end(e,function(t,n){pr.cancelPress(t),"tapping"===t.status&&(t.lastTime=Date.now(),pr.lastTap&&t.lastTime-pr.lastTap.lastTime<300&&cr.fire(t.element,"doubletap",{touch:n,touchEvent:e}),pr.lastTap=t)})},touchcancel:function(e){cr.end(e,function(e){pr.cancelPress(e)})}};cr.add("press",pr);var vr={events:["swipe","swipeleft","swiperight","swipeup","swipedown"],getAngle:function(e,t){var n=Math.atan2(t,e),a=Math.round(180*n/Math.PI);return 0>a?360-Math.abs(a):a},getDirection:function(e,t){var n=vr.getAngle(e,t);return 45>=n&&n>=0?"left":360>=n&&n>=315?"left":n>=135&&225>=n?"right":n>45&&135>n?"down":"up"},touchstart:function(e){cr.start(e,o)},touchmove:function(e){cr.move(e,o)},touchend:function(e){1===e.changedTouches.length&&cr.end(e,function(t,n){var a=t.distance>30&&t.distance/t.duration>.65;if(a){var r={deltaX:t.deltaX,deltaY:t.deltaY,touch:n,touchEvent:e,direction:vr.getDirection(t.deltaX,t.deltaY),isVertical:t.isVertical},i=t.element;cr.fire(i,"swipe",r),cr.fire(i,"swipe"+r.direction,r)}})}};vr.touchcancel=vr.touchend,cr.add("swipe",vr),"function"==typeof define&&define.amd&&define("avalon",[],function(){return avalon});var hr=e.avalon;return avalon.noConflict=function(t){return t&&e.avalon===avalon&&(e.avalon=hr),avalon},void 0===t&&(e.avalon=avalon),avalon});
1
+ !function(e,t){"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("Avalon requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){function n(){avalon.config.debug&&console.log.apply(console,arguments)}function r(){return Object.create(null)}function i(){}function o(e){return Function.apply(i,e)}function l(e,t){"string"==typeof e&&(e=e.match(Bt)||[]);for(var n={},a=void 0!==t?t:1,r=0,i=e.length;i>r;r++)n[e[r]]=a;return n}function s(e){if(e&&"object"==typeof e){var t=e.length,n=Ut.call(e);if(/(Array|List|Collection|Map|Arguments)\]$/.test(n))return!0;if("[object Object]"===n&&t===t>>>0)return!0}return!1}function c(e,t){if(e&&e.childNodes)for(var n,a=e.childNodes,r=0;n=a[r++];)if(n.tagName){var i=Ht.createElementNS(on,n.tagName.toLowerCase());zt.forEach.call(n.attributes,function(e){i.setAttribute(e.name,e.value)}),c(n,i),t.appendChild(i)}}function u(e){for(var t in e)if(Yt.call(e,t)){var n=e[t];"function"==typeof u.plugins[t]?u.plugins[t](n):"object"==typeof u[t]?avalon.mix(u[t],n):u[t]=n}return this}function f(e){return(e+"").replace(vn,"\\$&")}function d(e,t){var n=this.$events||(this.$events={}),a=n[e]||(n[e]=[]);if("function"==typeof t){var r=t;r.uniqueNumber=Math.random(),t={element:Zt,type:"user-watcher",handler:i,vmodels:[this],expr:e,uniqueNumber:r.uniqueNumber},t.wildcard=/\*/.test(e)}if(t.update)t.oneTime||avalon.Array.ensure(a,t);else{if(/\w\.*\B/.test(e)||"*"===e){t.getter=i;var o=this;t.update=function(){var e=this.fireArgs||[];e[2]&&t.handler.apply(o,e),delete this.fireArgs},a.sync=!0,avalon.Array.ensure(a,t)}else avalon.injectBinding(t);r&&(t.handler=r)}return function(){t.update=t.getter=t.handler=i,t.element=Ht.createElement("a")}}function p(e,t){var n=this.$events;if(n&&n[e]){t&&(t[2]=e);var a=n[e];if(h(a,t),t&&n["*"]&&!/\./.test(e))for(var r,i=0;r=n["*"][i++];)try{r.handler.apply(this,t)}catch(o){}var l=this.$up;l&&(this.$pathname&&p.call(l,this.$pathname+"."+e,t),p.call(l,"*."+e,t))}else{if(l=this.$up,this.$ups){for(var s in this.$ups)p.call(this.$ups[s],s+"."+e,t);return}if(l){var c=this.$pathname;""===c&&(c="*");var u=c+"."+e;a=u.split("."),-1===a.indexOf("*")?(p.call(l,u,t),a[1]="*",p.call(l,a.join("."),t)):p.call(l,u,t)}}}function v(e,t){for(;;){if(e.$watch){var n=e.$events||(e.$events={}),a=n[t]||(n[t]=[]);return void Cn.collectDependency(a)}if(e=e.$up,!e)break;t=e.$pathname+"."+t}}function h(e,t){if(e){new Date-En>444&&"object"==typeof e[0]&&j();for(var n,a=[],r=[],i=0;n=e[i++];)"user-watcher"===n.type?a.push(n):r.push(n);if(u.async){for(va.render(),i=0;n=r[i++];)if(n.update){var o=S(n);va.queue[o]||(va.queue[o]=1,va.queue.push(n))}}else for(i=0;n=r[i++];)n.update&&n.update();for(i=0;n=a[i++];)(t&&t[2]===n.expr||n.wildcard)&&(n.fireArgs=t),n.update()}}function m(e,t){return t=t||{},t.watch=!0,y(e,t)}function g(){}function y(e,t){function a(e){return u[e]===!0}if(!e||e.$id&&e.$accessors||e.nodeName&&e.nodeType>0)return e;t=t||Ft;var r=t.force||Ft,i=t.old,o=i&&i.$accessors||Ft,s=new g,c={},u={},f=[],v=[],h={};e.$skipArray&&(h=l(e.$skipArray),delete e.$skipArray);var m=e.$computed;if(m){delete e.$computed;for(var y in m)u[y]=!0,function(e,t){var n;c[e]={get:function(){return n=t.get.call(this)},set:function(a){if("function"==typeof t.set){var r=n;t.set.call(this,a);var i=this[e];this.$fire&&i!==r&&this.$fire(e,i,r)}},enumerable:!0,configurable:!0}}(y,m[y])}for(y in e){var x=e[y];gn[y]||(u[y]=!0),"function"==typeof x||x&&x.nodeName&&x.nodeType>0||!r[y]&&("$"===y.charAt(0)||gn[y]||h[y])?f.push(y):b(x)?(n("warning:计算属性建议放在$computed对象中统一定义"),function(e,t){var n;c[e]={get:function(){return n=t.get.call(this)},set:function(a){if("function"==typeof t.set){var r=n;t.set.call(this,a);var i=this[e];this.$fire&&i!==r&&this.$fire(e,i,r)}},enumerable:!0,configurable:!0}}(y,x)):(v.push(y),c[y]=o[y]?o[y]:$(y,x))}c.$model=yn,s=Object.defineProperties(s,c,e),f.forEach(function(t){s[t]=e[t]}),C(s,"$ups",null),C(s,"$id","anonymous"),C(s,"$up",i?i.$up:null),C(s,"$track",Object.keys(u)),C(s,"$active",!1),C(s,"$pathname",i?i.$pathname:""),C(s,"$accessors",c),C(s,"hasOwnProperty",a),t.watch&&(C(s,"$watch",function(){return d.apply(s,arguments)}),C(s,"$fire",function(e,t){if(0===e.indexOf("all!")){var n=e.slice(4);for(var a in avalon.vmodels){var r=avalon.vmodels[a];r.$fire&&r.$fire.apply(r,[n,t])}}else p.call(s,e,[t])})),v.forEach(function(t){var n=i&&i[t],a=s[t]=e[t];a&&"object"==typeof a&&(a.$up=s,a.$pathname=t),p.call(s,t,[a,n])});for(y in m)x=s[y];return s.$active=!0,s}function b(e){if(e&&"object"==typeof e){for(var t in e)if("get"!==t&&"set"!==t)return!1;return"function"==typeof e.get}}function $(e,t){var n,t=0/0;return{get:function(){return this.$active&&v(this,e),t},set:function(a){if(t!==a){var r=t;n=x(a,t),n?t=n:(n=void 0,t=a),Object(n)===n&&(n.$pathname=e,n.$up=this),this.$active&&p.call(this,e,[t,r])}},enumerable:!0,configurable:!0}}function x(e,t,n,a){if(Array.isArray(e))return w(e,t,a);if(avalon.isPlainObject(e)){if(t&&"object"==typeof t){var r=Object.keys(e),i=Object.keys(t);if(r.join(";")===i.join(";")){for(var o in e)e.hasOwnProperty(o)&&(t[o]=e[o]);return t}t.$active=!1}return y(e,{old:t,watch:a})}return n?e:void 0}function w(e,t,n){if(t&&t.splice){var a=[0,t.length].concat(e);return t.splice.apply(t,a),t}for(var r in xn)e[r]=xn[r];C(e,"$up",null),C(e,"$pathname",""),C(e,"$track",E(e.length)),e._=y({length:0/0},{watch:!0}),e._.length=e.length,e._.$watch("length",function(t,n){p.call(e.$up,e.$pathname+".length",[t,n])}),n&&C(e,"$watch",function(){return d.apply(e,arguments)}),Object.defineProperty(e,"$model",yn);for(var i=0,o=e.length;o>i;i++){var l=e[i]=x(e[i],0,1,1);Object(l)===l&&(l.$up=e)}return e}function C(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!1,configurable:!0})}function T(e){var t=avalon.type(e);if("array"===t){for(var n=[],a=0;a<e.length;a++)n[a]=T(e[a]);return n}if("object"===t){var r={};for(a in e)if(e.hasOwnProperty(a)){var i=e[a];r[a]=i&&i.nodeType?i:T(i)}return r}return e}function k(e,t){for(var n={},a=0,r=t.length;r>a;a++){n[a]=e[a];var i=t[a];i in n?(e[a]=n[i],delete n[i]):e[a]=e[i]}}function E(e){for(var t=[],n=0;e>n;n++)t[n]=en("$proxy$each");return t}function N(e,t,n){switch(t){case"push":case"unshift":n=E(n.length);break;case"splice":if(n.length>2){{n[1],n.length-2}n=[n[0],n[1]].concat(E(n.length-2))}}Array.prototype[t].apply(e,n)}function A(e,t){t.oneTime||e&&avalon.Array.ensure(e,t)&&t.element&&(M(t,e),new Date-En>444&&j())}function O(e,t){for(var n,a=[],r=0;n=e[r++];)a.push(t?n.$id:n.$key);return a.join(";")}function S(e){if(!e.uniqueNumber){var t=e.element;e.uniqueNumber=t?1!==t.nodeType?e.type+"-"+S(t.parentNode)+"-"+ ++Tn:e.name+"-"+S(t):++Tn}return e.uniqueNumber}function M(e,t){var n=e.lists||(e.lists=[]),a=S(e);avalon.Array.ensure(n,t),t.$uuid=t.$uuid||en(),kn[a]||(kn[a]=1,kn.push(e))}function j(e){for(var t=kn.length,n=t,a=[],r={},i={};e=kn[--t];){var o=e.type;i[o]?i[o]++:(i[o]=1,a.push(o))}var l=!1;if(a.forEach(function(e){Nn[e]!==i[e]&&(r[e]=1,l=!0)}),t=n,l)for(;e=kn[--t];)if(null!==e.element){if(r[e.type]&&L(e.element)){kn.splice(t,1),delete kn[e.uniqueNumber];for(var s,c=e.lists,u=0;s=c[u++];)avalon.Array.remove(c,s),avalon.Array.remove(s,e);D(e)}}else kn.splice(t,1);Nn=i,En=new Date}function D(e){delete kn[e.uniqueNumber],e.element=null,e.rollback&&e.rollback();for(var t in e)e[t]=null}function L(e){try{{e.parentNode.nodeType}}catch(t){return!0}return e.ifRemove&&!Zt.contains(e.ifRemove)&&Rt===e.parentNode?(e.parentNode&&e.parentNode.removeChild(e),!0):e.msRetain?0:1===e.nodeType?!Zt.contains(e):!avalon.contains(Zt,e)}function H(e){return e.replace(/([a-z\d])([A-Z]+)/g,"$1-$2").toLowerCase()}function P(e){return e.indexOf("-")<0&&e.indexOf("_")<0?e:e.replace(/[-_][^-_]/g,function(e){return e.charAt(1).toUpperCase()})}function R(e){try{if("object"==typeof e)return e;e="true"===e?!0:"false"===e?!1:"null"===e?null:+e+""===e?+e:Ln.test(e)?JSON.parse(e):e}catch(t){}return e}function q(e){return e.window&&e.document?e:9===e.nodeType?e.defaultView:!1}function F(e,t){if(e.offsetWidth<=0){var n=getComputedStyle(e,null);if(Fn.test(n.display)){var a={node:e};for(var r in qn)a[r]=n[r],e.style[r]=qn[r];t.push(a)}var i=e.parentNode;i&&1===i.nodeType&&F(i,t)}}function B(e){var t=e.tagName.toLowerCase();return"input"===t&&/checkbox|radio/.test(e.type)?"checked":t}function _(e,t){var n=[],a=!!t;t=t||0;for(var r="unknown",i="",l=0;l<e.length;l++){var s=e.charAt(l);if("'"===s||'"'===s)"unknown"===r?r=s:r===s&&(r="unknown");else if("\\"===s)("'"===r||'"'===r)&&l++;else if(Vn.test(s))"unknown"===r?(r="variable",i=s):"maybePath"===r?(i=n.pop(),i+="."+s,r="variable"):"variable"===r&&(i+=s);else if(/\w/.test(s))"variable"===r&&(i+=s);else if("."===s)"variable"===r&&i&&(n.push(i),i="",r="maybePath");else if("["===s){if("variable"===r||"maybePath"===r){i&&(n.push(i),i="");var c=n.length,u=n[c-1],f=_(e.slice(l),l);if(f.length)n[c-1]=u+".*",n=f.concat(n);else{var d=e.slice(l+1,f.i);try{var p=o(["return "+d])();n[c-1]=u+"."+p}catch(v){}}r="maybePath",l=f.i}}else if("]"===s){if(a)return n.i=l+t,I(n,i),n}else Xn.test(s)&&"\r"!==s&&"\n"!==s?"variable"===r&&(I(n,i)&&(r="maybePath"),i=""):(I(n,i),r="unknown",i="")}return I(n,i),n}function I(e,t){return t&&!_n[t]?(e.push(t),!0):void 0}function V(e,t,n,a){for(var r,i=[],o=" = "+n+".",l=e.length;r=e[--l];)for(var s,c=r.split("."),u=c[0];s=c.shift();)t.hasOwnProperty(s)&&(i.push(u+o+u),a.observers.push({v:t,p:r}),e.splice(l,1));return i}function X(e){e=e.trim();var t=Un.get(e);if(t)return t.concat();for(var n,a=_(e),r={},i=[],o=0;n=a[o++];)r[n]||(r[n]=1,i.push(n));return Un.put(e,i).concat()}function Y(e,t,n){var a=n.filters;"string"==typeof a&&a.trim()&&!n._filters&&(n._filters=z(a.trim()));var r=X(e),i=new Date-0,l=[],s=[],c=[];n.observers=[];for(var u=0,f=t.length;f>u;u++)if(r.length){var d="vm"+i+"_"+u;s.push(d),c.push(t[u]),l.push.apply(l,V(r,t[u],d,n))}n.args=c;var p=n.type,v=t.map(function(e){return String(e.$id).replace(Yn,"$1")})+e+p,h=zn.get(v);if(h){if("duplex"===p){var m=zn.get(v+"setter");n.setter=m.apply(m,n.args)}return n.getter=h}if(l.length||l.push("fix"+i),"duplex"===p){var g={};l.forEach(function(e){var t=e.split("=");g[t[0].trim()]=t[1].trim()}),e=e.replace(/[\$\w]+/,function(e){return g[e]?g[e]:e});var y=o(s.concat("'use strict';return function(vvv){"+e+" = vvv\n}\n"));zn.put(v+"setter",y),n.setter=y.apply(y,n.args)}if("on"===p){-1===e.indexOf("(")?e+=".call(this, $event)":e=e.replace("(",".call(this,"),s.push("$event"),e="\nreturn "+e+";";var b=e.lastIndexOf("\nreturn"),$=e.slice(0,b),x=e.slice(b);e=$+"\n"+x}else e="\nreturn "+e+";";return h=o(s.concat("'use strict';\nvar "+l.join(",\n")+e)),zn.put(v,h)}function U(e){var t=fn.test(e);if(t){var n=rt(e);return 1===n.length?n[0].expr:n.map(function(e){return e.type?"("+e.expr+")":Qn(e.expr)}).join(" + ")}return e}function z(e){return e=e.replace(Wn,"").replace(Gn,function(){return"],|"}).replace(Zn,function(e,t){return"["+Qn(t)}).replace(Jn,function(){return'"],["'}).replace(Kn,function(){return'",'})+"]",o(["return ["+e+"]"])()}function W(e,t,n){var a=setTimeout(function(){var r=e.innerHTML;clearTimeout(a),r===n?t():W(e,t,r)})}function G(e,t){var n=e.getAttribute("avalonctrl")||t.$id;e.setAttribute("avalonctrl",n),t.$events&&(t.$events.expr=e.tagName+'[avalonctrl="'+n+'"]')}function Z(e,t){for(var n,a=0;n=e[a++];)n.vmodels=t,an[n.type].init(n),avalon.injectBinding(n),n.getter&&1===n.element.nodeType&&n.element.removeAttribute(n.name);e.length=0}function J(e,t){return e.priority-t.priority}function K(e,t){for(var n,a=e.attributes,r={},i=0;n=a[i++];){var o=n.name;if(n.specified&&!la.test(o)){var l=P(n.name);r[l]=/^on\-[\w-]+$/.test(o)?ta(e,o,t):R(n.value)}}return r}function Q(e,t,a){var r=!0;if(t.length){for(var i,o=e.attributes,l=[],s={},c=0;i=o[c++];){var u=i.name;if(!s[u]&&(s[u]=1,i.specified&&(a=u.match(ra)))){var f=a[1],d=a[2]||"",p=i.value;if(ia[f]?(d=f,f="on"):oa[f]&&(d=f,f="attr",u="ms-"+f+"-"+d,n("warning!请改用"+u+"代替"+i.name+"!")),an[f]){var v=p.replace(aa,""),h=p!==v,m={type:f,param:d,element:e,name:u,expr:v,oneTime:h,priority:(an[f].priority||10*f.charCodeAt(0))+(Number(d.replace(/\D/g,""))||0)};if("html"===f||"text"===f){var g=at(p).filters;m.expr=m.expr.replace(g,""),m.filters=g.replace(ua,function(){return m.type="html",m.group=1,""}).trim()}else if("duplex"===f)var y=u;else if("ms-if-loop"===u)m.priority+=100;else if("ms-attr-value"===u)var b=u;l.push(m)}}}if(l.length){for(l.sort(J),y&&b&&"text"===e.type&&n("warning!一个控件不能同时定义ms-attr-value与"+y),c=0;m=l[c];c++){if(f=m.type,sa.test(f))return Z(l.slice(0,c+1),t);r&&(r=!ca.test(f))}Z(l,t)}}r&&!ea[e.tagName]&&(na&&na(e),et(e,t))}function et(e,t){var n=avalon.slice(e.childNodes);tt(n,t)}function tt(e,t){function n(e){setTimeout(function(){avalon.component(e)})}for(var a,r=0;a=e[r++];)switch(a.nodeType){case 1:var i=a;if(!i.msResolved&&i.parentNode&&1===i.parentNode.nodeType){var o=lt(i);if(o){var l=i.localName?i.localName.replace(o+":",""):i.nodeName,s=o+":"+P(l);ha.push({library:o,element:i,fullName:s,widget:l,vmodels:t,name:"widget"}),avalon.components[s]&&n(s)}}nt(a,t),a.msHasEvent&&avalon.fireDom(a,"datasetchanged",{bubble:a.msHasEvent});break;case 3:fn.test(a.nodeValue)&&it(a,t,r)}}function nt(e,t,n){var a=e.getAttribute("ms-skip"),r=e.getAttributeNode("ms-important"),i=e.getAttributeNode("ms-controller");if("string"!=typeof a){if(n=r||i){var o=avalon.vmodels[n.value];if(!o)return;t=n===r?[o]:[o].concat(t),e.removeAttribute(n.name),e.classList.remove(n.name),G(e,o)}Q(e,t),o&&setTimeout(function(){o.$fire("ms-scan-end",e)})}}function at(e){if(e.indexOf("|")>0){var t=e.replace(da,function(e){return Array(e.length+1).join("1")}),n=t.replace(fa,"ᄢ㍄").indexOf("|");if(n>-1)return{type:"text",filters:e.slice(n).trim(),expr:e.slice(0,n)}}return{type:"text",expr:e,filters:""}}function rt(e){for(var t,n,a=[],r=0;;){if(n=e.indexOf(cn,r),-1===n)break;if(t=e.slice(r,n),t&&a.push({expr:t}),r=n+cn.length,n=e.indexOf(un,r),-1===n)break;t=e.slice(r,n),t&&a.push(at(t,r)),r=n+un.length}return t=e.slice(r),t&&a.push({expr:t}),a}function it(e,t,n){var a=[],r=rt(e.data);if(r.length){for(var i,o=0;i=r[o++];){var l=Ht.createTextNode(i.expr);i.type&&(i.expr=i.expr.replace(aa,function(){return i.oneTime=!0,""}),i.element=l,i.filters=i.filters.replace(ua,function(){return i.type="html",""}),i.pos=1e3*n+o,a.push(i)),Jt.appendChild(l)}e.parentNode.replaceChild(Jt,e),a.length&&Z(a,t)}}function ot(e,t){if(t)for(var n,a=0;n=e[a++];)if(n.hasOwnProperty(t)&&"object"==typeof n[t]){var r=n[t];return r.$model||r}return{}}function lt(e){if(e.scopeName&&"HTML"!==e.scopeName)return e.scopeName;var t=e.nodeName.toLowerCase(),n=t.indexOf(":");return n>0?t.slice(0,n):void 0}function st(e){return null==e?"":e}function ct(e,t,n){return t.param.replace(_t,function(a){var r=avalon.duplexHooks[a];r&&"function"==typeof r[n]&&(e=r[n](e,t))}),e}function ut(){for(var e=Na.length-1;e>=0;e--){var t=Na[e];t()===!1&&Na.splice(e,1)}Na.length||clearInterval(Ea)}function ft(e,t){if(!e||1!==e.nodeType)return null;if(t)var n=t.effectName,a=t.effectDriver;else n=e.getAttribute("data-effect-name"),a=e.getAttribute("data-effect-driver");if(!n||!a)return null;var r=Ha.pop()||new vt;return r.el=e,r.driver=a,r.useCss="j"!==a,r.useCss&&(t&&avalon(e).addClass(t.effectClass),r.cssEvent="t"===a?Oa:Sa),r.name=n,r.callbacks=avalon.effects[n]||{},r}function dt(e,t){var n=e.getAttribute("data-effect-name");if(n){t.effectName=n,t.effectDriver=e.getAttribute("data-effect-driver");var a=+e.getAttribute("data-effect-stagger");t.effectLeaveStagger=+e.getAttribute("data-effect-leave-stagger")||a,t.effectEnterStagger=+e.getAttribute("data-effect-enter-stagger")||a,t.effectClass=e.className||0/0}}function pt(e){return e.replace(/^[\S]/g,function(e){return e.toUpperCase()})}function vt(){}function ht(e,t){var n=e.callbacks[t+"Class"];return"string"==typeof n?n:"function"==typeof n?n():e.name+"-"+t}function mt(e,t,n){var a=e.callbacks[t];a&&a.call(e,e.el,n)}function gt(e,t,n){var a=e.templateCache&&e.templateCache[t];if(a){for(var r,i=Ht.createDocumentFragment();r=a.firstChild;)i.appendChild(r);return i}return avalon.parseHTML(n)}function yt(e){for(var t=Ht.createDocumentFragment(),n=0,a=e.length;a>n;n++)t.appendChild(e[n]);return t}function bt(e,t,n){for(var a,r=0;a=e[r++];)a.className===n.effectClass&&avalon.effect.apply(a,t,i,i,n)}function $t(e,t,n){return e?setTimeout(t,++n*e):t(),n}function xt(e,t){for(var n=Jt.cloneNode(!1),a=e,r=a.nodeValue,o=t&&Math.max(+t.staggerIndex,0),l=avalon.slice(a.parentNode.childNodes),s=l.indexOf(a);;){var c=l[--s];if(!c||0===String(c.nodeValue).indexOf(r))break;t&&c.className===t.effectClass?(e=c,function(e){t.staggerIndex=$t(t.effectLeaveStagger,function(){avalon.effect.apply(e,0,i,function(){n.appendChild(e)},t)},o)}(c)):n.insertBefore(c,n.firstChild)}return n.appendChild(a),n}function wt(e,t,n,a,r){var i=e.template.cloneNode(!0),o=avalon.slice(i.childNodes);i.appendChild(n.$anchor),r&&t.appendChild(i);var l=[n].concat(e.vmodels),s={nodes:o,vmodels:l,content:i};a.push(s)}function Ct(e){var t="object"===e.xtype?Nt:Tt,n=t(e),a=n.$anchor||(n.$anchor=e.element.cloneNode(!1));return a.nodeValue=e.signature,n.$outer=e.$outer,n}function Tt(e,t){for(var n=e.param||"el",a=0,r=Ia.length;r>a;a++){var i=Ia[a];if(i&&i.hasOwnProperty(n)){Ia.splice(a,1),t=i;break}}return t||(t=kt(n)),t}function kt(e){var t={$outer:{},$index:0,$oldIndex:0,$anchor:null,$first:!1,$last:!1,$remove:avalon.noop};t[e]=0/0;var n={$last:1,$first:1,$index:1};n[e]=1;var a=m(t,{force:n});return a.$id=en("$proxy$each"),a}function Et(e,t,n){if("array"===n){e.$remove=function(){t.$repeat.removeAt(e.$index)};var a=t.param;e.$watch(a,function(n){var a=e.$index;t.$repeat[a]=n})}else e.$watch("$val",function(n){t.$repeat[e.$key]=n})}function Nt(){return Va.pop()||At()}function At(){var e=m({$key:"",$val:0/0,$index:0,$oldIndex:0,$outer:{},$anchor:null},{force:{$key:1,$val:1,$index:1}});return e.$id=en("$proxy$with"),e}function Ot(e,t,n){var a=e[t];if(a){var r=0===a.$id.indexOf("$proxy$each")?Ia:Va;a.$outer={};for(var i in a.$events){var o=a.$events[i];Array.isArray(o)&&(o.length=0,i===n?a[n]=0/0:"$val"===i&&(a.$val=0/0))}r.unshift(a)>u.maxRepeatSize&&r.pop(),delete e[t]}}function St(e,t){var n="_"+e;if(!St[n]){var a=Ht.createElement(e);Zt.appendChild(a),t=Gt?getComputedStyle(a,null).display:a.currentStyle.display,Zt.removeChild(a),St[n]=t}return St[n]}function Mt(e,t,n,a){e=(e+"").replace(/[^0-9+\-Ee.]/g,"");var r=isFinite(+e)?+e:0,i=isFinite(+t)?Math.abs(t):3,o=a||",",l=n||".",s="",c=function(e,t){var n=Math.pow(10,t);return""+(Math.round(e*n)/n).toFixed(t)};return s=(i?c(r,i):""+Math.round(r)).split("."),s[0].length>3&&(s[0]=s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g,o)),(s[1]||"").length<i&&(s[1]=s[1]||"",s[1]+=new Array(i-s[1].length+1).join("0")),s.join(l)}function jt(){return/iPad|iPhone|iPod/i.test(rr)&&!e.MSStream?"backdropFilter"in document.documentElement.style?9:e.indexedDB?8:e.SpeechSynthesisUtterance?7:e.webkitAudioContext?6:e.matchMedia?5:e.history&&"pushState"in e.history?4:3:0/0}function Dt(e,t){return t&&sr.forEach(function(n){e[n]=t[n]}),e}var Lt=Date.now(),Ht=e.document,Pt=Ht.head;Pt.insertAdjacentHTML("afterBegin",'<avalon ms-skip class="avalonHide"><style id="avalonStyle">.avalonHide{ display: none!important }</style></avalon>');var Rt=Pt.firstChild,qt="$"+Lt,Ft={},Bt=/[^, ]+/g,_t=/\w+/g,It=/^\[object SVG\w*Element\]$/,Vt=/^\[object (?:Window|DOMWindow|global)\]$/,Xt=Object.prototype,Yt=Xt.hasOwnProperty,Ut=Xt.toString,zt=Array.prototype,Wt=zt.slice,Gt=e.dispatchEvent,Zt=Ht.documentElement,Jt=Ht.createDocumentFragment(),Kt=(Ht.createElement("div"),{});"Boolean Number String Function Array Date RegExp Object Error".replace(Bt,function(e){Kt["[object "+e+"]"]=e.toLowerCase()});var Qt=0/0;e.VBArray&&(Qt=document.documentMode||(e.XMLHttpRequest?7:6));var en=function(e){return e=e||"avalon",String(Math.random()+Math.random()).replace(/\d\.\d{4}/,e)};avalon=function(e){return new avalon.init(e)},avalon.nextTick=new function(){function t(){for(var e=r.length,t=0;e>t;t++)r[t]();r=r.slice(e)}var n=e.setImmediate,a=e.MutationObserver;if(n)return n.bind(e);var r=[];if(a){var i=document.createTextNode("avalon");new a(t).observe(i,{characterData:!0});var o=!1;return function(e){r.push(e),o=!o,i.data=o}}return function(e){setTimeout(e,4)}},avalon.init=function(e){this[0]=this.element=e},avalon.fn=avalon.prototype=avalon.init.prototype,avalon.type=function(e){return null==e?String(e):"object"==typeof e||"function"==typeof e?Kt[Ut.call(e)]||"object":typeof e},avalon.isFunction=function(e){return"[object Function]"===Ut.call(e)},avalon.isWindow=function(e){return Vt.test(Ut.call(e))},avalon.isPlainObject=function(e){return"[object Object]"===Ut.call(e)&&Object.getPrototypeOf(e)===Xt},avalon.mix=avalon.fn.mix=function(){var e,t,n,a,r,i,o=arguments[0]||{},l=1,s=arguments.length,c=!1;for("boolean"==typeof o&&(c=o,o=arguments[1]||{},l++),"object"==typeof o||avalon.isFunction(o)||(o={}),l===s&&(o=this,l--);s>l;l++)if(null!=(e=arguments[l]))for(t in e)n=o[t],a=e[t],o!==a&&(c&&a&&(avalon.isPlainObject(a)||(r=Array.isArray(a)))?(r?(r=!1,i=n&&Array.isArray(n)?n:[]):i=n&&avalon.isPlainObject(n)?n:{},o[t]=avalon.mix(c,i,a)):void 0!==a&&(o[t]=a));return o},avalon.mix({rword:Bt,subscribers:qt,version:1.56,ui:{},log:n,slice:function(e,t,n){return Wt.call(e,t,n)},noop:i,error:function(e,t){throw new(t||Error)(e)},oneObject:l,range:function(e,t,n){n||(n=1),null==t&&(t=e||0,e=0);for(var a=-1,r=Math.max(0,Math.ceil((t-e)/n)),i=new Array(r);++a<r;)i[a]=e,e+=n;return i},eventHooks:{},bind:function(e,t,n,a){var r=avalon.eventHooks,i=r[t];return"object"==typeof i&&(t=i.type||t,a=i.phase||!!a,n=i.fn?i.fn(e,n):n),e.addEventListener(t,n,a),n},unbind:function(e,t,n,a){var r=avalon.eventHooks,o=r[t],l=n||i;"object"==typeof o&&(t=o.type||t,a=o.phase||!!a),e.removeEventListener(t,l,a)},css:function(e,t,n){e instanceof avalon&&(e=e[0]);var a,r=/[_-]/.test(t)?P(t):t;if(t=avalon.cssName(r)||r,void 0===n||"boolean"==typeof n){a=Hn[r+":get"]||Hn["@:get"],"background"===t&&(t="backgroundColor");var i=a(e,t);return n===!0?parseFloat(i)||0:i}if(""===n)e.style[t]="";else{if(null==n||n!==n)return;isFinite(n)&&!avalon.cssNumber[r]&&(n+="px"),a=Hn[r+":set"]||Hn["@:set"],a(e,t,n)}},each:function(e,t){if(e){var n=0;if(s(e))for(var a=e.length;a>n&&t(n,e[n])!==!1;n++);else for(n in e)if(e.hasOwnProperty(n)&&t(n,e[n])===!1)break}},getWidgetData:function(e,t){var n=avalon(e).data(),a={};for(var r in n)0===r.indexOf(t)&&(a[r.replace(t,"").replace(/\w/,function(e){return e.toLowerCase()})]=n[r]);return a},Array:{ensure:function(e,t){return-1===e.indexOf(t)?e.push(t):void 0},removeAt:function(e,t){return!!e.splice(t,1).length},remove:function(e,t){var n=e.indexOf(t);return~n?avalon.Array.removeAt(e,n):!1}}});var tn=avalon.bindingHandlers={},nn=avalon.bindingExecutors={},an=avalon.directives={};avalon.directive=function(e,t){return tn[e]=t.init=t.init||i,nn[e]=t.update=t.update||i,an[e]=t};var rn=new function(){function e(e){this.size=0,this.limit=e,this.head=this.tail=void 0,this._keymap={}}var t=e.prototype;return t.put=function(e,t){var n={key:e,value:t};return this._keymap[e]=n,this.tail?(this.tail.newer=n,n.older=this.tail):this.head=n,this.tail=n,this.size===this.limit?this.shift():this.size++,t},t.shift=function(){var e=this.head;e&&(this.head=this.head.newer,this.head.older=e.newer=e.older=this._keymap[e.key]=void 0,delete this._keymap[e.key])},t.get=function(e){var t=this._keymap[e];if(void 0!==t)return t===this.tail?t.value:(t.newer&&(t===this.head&&(this.head=t.newer),t.newer.older=t.older),t.older&&(t.older.newer=t.newer),t.newer=void 0,t.older=this.tail,this.tail&&(this.tail.newer=t),this.tail=t,t.value)},e};if(Ht.contains||(Node.prototype.contains=function(e){return!!(16&this.compareDocumentPosition(e))}),avalon.contains=function(e,t){try{for(;t=t.parentNode;)if(t===e)return!0;return!1}catch(n){return!1}},e.SVGElement){var on="http://www.w3.org/2000/svg",ln=Ht.createElementNS(on,"svg");ln.innerHTML='<circle cx="50" cy="50" r="40" fill="red" />',It.test(ln.firstChild)||Object.defineProperties(SVGElement.prototype,{outerHTML:{enumerable:!0,configurable:!0,get:function(){return(new XMLSerializer).serializeToString(this)},set:function(e){var t=this.tagName.toLowerCase(),n=this.parentNode,a=avalon.parseHTML(e);if("svg"===t)n.insertBefore(a,this);else{var r=Ht.createDocumentFragment();c(a,r),n.insertBefore(r,this)}n.removeChild(this)}},innerHTML:{enumerable:!0,configurable:!0,get:function(){var e=this.outerHTML,t=new RegExp("<"+this.nodeName+'\\b(?:(["\'])[^"]*?(\\1)|[^>])*>',"i"),n=new RegExp("</"+this.nodeName+">$","i");return e.replace(t,"").replace(n,"")},set:function(e){if(avalon.clearHTML){avalon.clearHTML(this);var t=avalon.parseHTML(e);c(t,this)}}}})}var sn=avalon.eventHooks;"onmouseenter"in Zt||avalon.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){sn[e]={type:t,fn:function(t,n){return function(a){var r=a.relatedTarget;return r&&(r===t||16&t.compareDocumentPosition(r))?void 0:(delete a.type,a.type=e,n.call(t,a))}}}}),avalon.each({AnimationEvent:"animationend",WebKitAnimationEvent:"webkitAnimationEnd"},function(t,n){e[t]&&!sn.animationend&&(sn.animationend={type:n})}),void 0===Ht.onmousewheel&&(sn.mousewheel={type:"wheel",fn:function(e,t){return function(n){n.wheelDeltaY=n.wheelDelta=n.deltaY>0?-120:120,n.wheelDeltaX=0,Object.defineProperty(n,"type",{value:"mousewheel"}),t.call(e,n)}}}),avalon.config=u;var cn,un,fn,dn,pn,vn=/[-.*+?^${}()|[\]\/\\]/g,hn={interpolate:function(e){if(cn=e[0],un=e[1],cn===un){throw new SyntaxError("openTag!==closeTag")}u.openTag=cn,u.closeTag=un;var t=f(cn),n=f(un);fn=new RegExp(t+"(.*?)"+n),dn=new RegExp(t+"(.*?)"+n,"g"),pn=new RegExp(t+".*?"+n+"|\\sms-")}};u.plugins=hn,u.plugins.interpolate(["{{","}}"]),u.async=!0,u.debug=!0,u.paths={},u.shim={},u.maxRepeatSize=100;var mn=avalon.vmodels={};avalon.define=function(e){var t=e.$id;t||n("warning: vm必须指定$id");var a=m(e);return a.$id=t,mn[t]=a};var gn=l("$id,$watch,$fire,$events,$model,$skipArray,$active,$pathname,$up,$ups,$track,$accessors"),yn={get:function(){return T(this)},set:i,enumerable:!1,configurable:!0},bn=["push","pop","shift","unshift","splice"],$n=Array.prototype,xn={notify:function(){p.call(this.$up,this.$pathname)},set:function(e,t){if(e>>>0===e&&this[e]!==t){if(e>this.length)throw Error(e+"set方法的第一个参数不能大于原数组长度");p.call(this.$up,this.$pathname+".*",[t,this[e]]),this.splice(e,1,t)}},contains:function(e){return-1!==this.indexOf(e)},ensure:function(e){return this.contains(e)||this.push(e),this},pushArray:function(e){return this.push.apply(this,e)},remove:function(e){return this.removeAt(this.indexOf(e))},removeAt:function(e){return e>>>0===e?this.splice(e,1):[]},size:function(){return this._.length},removeAll:function(e){if(Array.isArray(e))for(var t=this.length-1;t>=0;t--)-1!==e.indexOf(this[t])&&(wn.call(this.$track,t,1),wn.call(this,t,1));else if("function"==typeof e)for(t=this.length-1;t>=0;t--){var n=this[t];e(n,t)&&(wn.call(this.$track,t,1),wn.call(this,t,1))}else wn.call(this.$track,0,this.length),wn.call(this,0,this.length);Gt||(this.$model=T(this)),this.notify(),this._.length=this.length},clear:function(){return this.removeAll()}},wn=$n.splice;bn.forEach(function(e){var t=$n[e];xn[e]=function(){for(var n=[],a=0,r=arguments.length;r>a;a++)n[a]=x(arguments[a],0,1,1);var i=t.apply(this,n);return N(this.$track,e,n),Gt||(this.$model=T(this)),this.notify(),this._.length=this.length,i}}),"sort,reverse".replace(Bt,function(e){xn[e]=function(){var t=this.concat(),n=this,a=Math.random(),r=[],i=!1;$n[e].apply(n,arguments);for(var o=0,l=t.length;l>o;o++){var s=n[o],c=t[o];if(s===c)r.push(o);else{var u=t.indexOf(s);r.push(u),t[u]=a,i=!0}}return i&&(k(this.$track,r),Gt||(this.$model=T(this)),this.notify()),this}});var Cn=function(){var e,t=[];return{begin:function(n){t.push(e),e=n},end:function(){e=t.pop()},collectDependency:function(t){e&&e.callback(t)}}}();avalon.injectBinding=function(e){e.handler=e.handler||an[e.type].update||i,e.update=function(){var t=!1;e.getter||(t=!0,Cn.begin({callback:function(t){A(t,e)}}),e.getter=Y(e.expr,e.vmodels,e),e.observers.forEach(function(t){t.v.$watch(t.p,e)}),delete e.observers);try{var a,r,i=e.fireArgs;if(delete e.fireArgs,i)a=i[0],r=i[1];else if("on"===e.type)a=e.getter+"";else try{a=e.getter.apply(0,e.args)}catch(o){a=null}if(r="undefined"==typeof r?e.oldValue:r,e._filters&&(a=Za.$filter.apply(0,[a].concat(e._filters))),e.signature){var l=avalon.type(a);if("array"!==l&&"object"!==l)throw Error("warning:"+e.expr+"只能是对象或数组");e.xtype=l;var s=O(e.proxies||[],l),c=a.$track||("array"===l?E(a.length):Object.keys(a));e.track=c,s!==c.join(";")&&(e.handler(a,r),e.oldValue=1)}else(Array.isArray(a)?a.length===(r&&r.length):1)?"oldValue"in e&&a===r||(e.handler(a,r),e.oldValue=a):(e.handler(a,r),e.oldValue=a.concat())}catch(u){delete e.getter,n("warning:exception throwed in [avalon.injectBinding] ",u);var f=e.element;f&&3===f.nodeType&&(f.nodeValue=cn+(e.oneTime?"::":"")+e.expr+un)}finally{t&&Cn.end()}},e.update()};var Tn=0,kn=avalon.$$subscribers=[],En=new Date,Nn={},An=new function(){avalon.mix(this,{option:Ht.createElement("select"),thead:Ht.createElement("table"),td:Ht.createElement("tr"),area:Ht.createElement("map"),tr:Ht.createElement("tbody"),col:Ht.createElement("colgroup"),legend:Ht.createElement("fieldset"),_default:Ht.createElement("div"),g:Ht.createElementNS("http://www.w3.org/2000/svg","svg")}),this.optgroup=this.option,this.tbody=this.tfoot=this.colgroup=this.caption=this.thead,this.th=this.td};String("circle,defs,ellipse,image,line,path,polygon,polyline,rect,symbol,text,use").replace(Bt,function(e){An[e]=An.g});var On=/<([\w:]+)/,Sn=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,Mn=l(["","text/javascript","text/ecmascript","application/ecmascript","application/javascript"]),jn=Ht.createElement("script"),Dn=/<|&#?\w+;/;avalon.parseHTML=function(e){var t=Jt.cloneNode(!1);if("string"!=typeof e)return t;if(!Dn.test(e))return t.appendChild(Ht.createTextNode(e)),t;e=e.replace(Sn,"<$1></$2>").trim();var n,a=(On.exec(e)||["",""])[1].toLowerCase(),r=An[a]||An._default;r.innerHTML=e;var i=r.getElementsByTagName("script");if(i.length)for(var o,l=0;o=i[l++];)if(Mn[o.type]){var s=jn.cloneNode(!1);zt.forEach.call(o.attributes,function(e){s.setAttribute(e.name,e.value)}),s.text=o.text,o.parentNode.replaceChild(s,o)}for(;n=r.firstChild;)t.appendChild(n);return t},avalon.innerHTML=function(e,t){var n=this.parseHTML(t);this.clearHTML(e).appendChild(n)},avalon.clearHTML=function(e){for(e.textContent="";e.firstChild;)e.removeChild(e.firstChild);return e},"add,remove".replace(Bt,function(e){avalon.fn[e+"Class"]=function(t){var n=this[0];return t&&"string"==typeof t&&n&&1===n.nodeType&&t.replace(/\S+/g,function(t){n.classList[e](t)}),this}}),avalon.fn.mix({hasClass:function(e){var t=this[0]||{};return 1===t.nodeType&&t.classList.contains(e)},toggleClass:function(e,t){for(var n,a=0,r=String(e).split(/\s+/),i="boolean"==typeof t;n=r[a++];){var o=i?t:!this.hasClass(n);this[o?"addClass":"removeClass"](n)}return this},attr:function(e,t){return 2===arguments.length?(this[0].setAttribute(e,t),this):this[0].getAttribute(e)},data:function(e,t){switch(e="data-"+H(e||""),arguments.length){case 2:return this.attr(e,t),this;case 1:var n=this.attr(e);return R(n);case 0:var a={};return zt.forEach.call(this[0].attributes,function(t){t&&(e=t.name,e.indexOf("data-")||(e=P(e.slice(5)),a[e]=R(t.value)))}),a}},removeData:function(e){return e="data-"+H(e),this[0].removeAttribute(e),this},css:function(e,t){if(avalon.isPlainObject(e))for(var n in e)avalon.css(this,n,e[n]);else var a=avalon.css(this,e,t);return void 0!==a?a:this},position:function(){var e,t,n=this[0],a={top:0,left:0};if(n)return"fixed"===this.css("position")?t=n.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),"HTML"!==e[0].tagName&&(a=e.offset()),a.top+=avalon.css(e[0],"borderTopWidth",!0),a.left+=avalon.css(e[0],"borderLeftWidth",!0),a.top-=e.scrollTop(),a.left-=e.scrollLeft()),{top:t.top-a.top-avalon.css(n,"marginTop",!0),left:t.left-a.left-avalon.css(n,"marginLeft",!0)}
2
+ },offsetParent:function(){for(var e=this[0].offsetParent;e&&"static"===avalon.css(e,"position");)e=e.offsetParent;return avalon(e||Zt)},bind:function(e,t,n){return this[0]?avalon.bind(this[0],e,t,n):void 0},unbind:function(e,t,n){return this[0]&&avalon.unbind(this[0],e,t,n),this},val:function(e){var t=this[0];if(t&&1===t.nodeType){var n=0===arguments.length,a=n?":get":":set",r=Bn[B(t)+a];if(r)var i=r(t,e);else{if(n)return(t.value||"").replace(/\r/g,"");t.value=e}}return n?i:this}}),Zt.dataset&&(avalon.fn.data=function(e,t){e=e&&P(e);var n=this[0].dataset;switch(arguments.length){case 2:return n[e]=t,this;case 1:return t=n[e],R(t);case 0:var a=r();for(e in n)a[e]=R(n[e]);return a}});var Ln=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/;avalon.parseJSON=JSON.parse,avalon.fireDom=function(e,t,n){var a=Ht.createEvent("Events");a.initEvent(t,!0,!0),avalon.mix(a,n),e.dispatchEvent(a)},avalon.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){avalon.fn[e]=function(n){var a=this[0]||{},r=q(a),i="scrollTop"===e;return arguments.length?void(r?r.scrollTo(i?r[t]:n,i?n:r[t]):a[e]=n):r?r[t]:a[e]}});var Hn=avalon.cssHooks=r(),Pn=["","-webkit-","-moz-","-ms-"],Rn={"float":"cssFloat"};avalon.cssNumber=l("animationIterationCount,animationIterationCount,columnCount,order,flex,flexGrow,flexShrink,fillOpacity,fontWeight,lineHeight,opacity,orphans,widows,zIndex,zoom"),avalon.cssName=function(e,t,n){if(Rn[e])return Rn[e];t=t||Zt.style;for(var a=0,r=Pn.length;r>a;a++)if(n=P(Pn[a]+e),n in t)return Rn[e]=n;return null},Hn["@:set"]=function(e,t,n){e.style[t]=n},Hn["@:get"]=function(e,t){if(!e||!e.style)throw new Error("getComputedStyle要求传入一个节点 "+e);var n,a=getComputedStyle(e);return a&&(n="filter"===t?a.getPropertyValue(t):a[t],""===n&&(n=e.style[t])),n},Hn["opacity:get"]=function(e){var t=Hn["@:get"](e,"opacity");return""===t?"1":t},"top,left".replace(Bt,function(e){Hn[e+":get"]=function(t){var n=Hn["@:get"](t,e);return/px$/.test(n)?n:avalon(t).position()[e]+"px"}});var qn={position:"absolute",visibility:"hidden",display:"block"},Fn=/^(none|table(?!-c[ea]).+)/;"Width,Height".replace(Bt,function(e){var t=e.toLowerCase(),n="client"+e,a="scroll"+e,r="offset"+e;Hn[t+":get"]=function(t,n,a){var i=-4;"number"==typeof a&&(i=a),n="Width"===e?["Left","Right"]:["Top","Bottom"];var o=t[r];return 2===i?o+avalon.css(t,"margin"+n[0],!0)+avalon.css(t,"margin"+n[1],!0):(0>i&&(o=o-avalon.css(t,"border"+n[0]+"Width",!0)-avalon.css(t,"border"+n[1]+"Width",!0)),-4===i&&(o=o-avalon.css(t,"padding"+n[0],!0)-avalon.css(t,"padding"+n[1],!0)),o)},Hn[t+"&get"]=function(e){var n=[];F(e,n);for(var a,r=Hn[t+":get"](e),i=0;a=n[i++];){e=a.node;for(var o in a)"string"==typeof a[o]&&(e.style[o]=a[o])}return r},avalon.fn[t]=function(i){var o=this[0];if(0===arguments.length){if(o.setTimeout)return o["inner"+e];if(9===o.nodeType){var l=o.documentElement;return Math.max(o.body[a],l[a],o.body[r],l[r],l[n])}return Hn[t+"&get"](o)}return this.css(t,i)},avalon.fn["inner"+e]=function(){return Hn[t+":get"](this[0],void 0,-2)},avalon.fn["outer"+e]=function(e){return Hn[t+":get"](this[0],void 0,e===!0?2:0)}}),avalon.fn.offset=function(){var e=this[0];try{var t=e.getBoundingClientRect();if(t.width||t.height||e.getClientRects().length){var n=e.ownerDocument,a=n.documentElement,r=n.defaultView;return{top:t.top+r.pageYOffset-a.clientTop,left:t.left+r.pageXOffset-a.clientLeft}}}catch(i){return{left:0,top:0}}};var Bn={"select:get":function(e,t){for(var n,a=e.options,r=e.selectedIndex,i="select-one"===e.type||0>r,o=i?null:[],l=i?r+1:a.length,s=0>r?l:i?r:0;l>s;s++)if(n=a[s],(n.selected||s===r)&&!n.disabled){if(t=n.value,i)return t;o.push(t)}return o},"select:set":function(e,t,n){t=[].concat(t);for(var a,r=0;a=e.options[r++];)(a.selected=t.indexOf(a.value)>-1)&&(n=!0);n||(e.selectedIndex=-1)}},_n={},In=["break,case,catch,continue,debugger,default,delete,do,else,false","finally,for,function,if,in,instanceof,new,null,return,switch,this","throw,true,try,typeof,var,void,while,with","abstract,boolean,byte,char,class,const,double,enum,export,extends","final,float,goto,implements,import,int,interface,long,native","package,private,protected,public,short,static,super,synchronized","throws,transient,volatile","arguments,let,yield,undefined"].join(",");In.replace(/\w+/g,function(e){_n[e]=!0});var Vn=/[a-z_$]/i,Xn=/[\s\uFEFF\xA0]/,Yn=/(\$proxy\$[a-z]+)\d+$/,Un=new rn(218),zn=new rn(128);avalon.normalizeExpr=U,avalon.parseExprProxy=Y;var Wn=/\)\s*$/,Gn=/\)\s*\|/g,Zn=/\|\s*([$\w]+)/g,Jn=/"\s*\["/g,Kn=/"\s*\(/g,Qn=JSON.stringify;avalon.scan=function(e,t){e=e||Zt;var n=t?[].concat(t):[];nt(e,n)};var ea=l("area,base,basefont,br,col,command,embed,hr,img,input,link,meta,param,source,track,wbr,noscript,script,style,textarea".toUpperCase()),ta=function(e,t,n){var a=e.getAttribute(t);if(a)for(var r,i=0;r=n[i++];)if(r.hasOwnProperty(a)&&"function"==typeof r[a])return r[a]},na=Qt&&e.MutationObserver?function(e){for(var t,n=e.firstChild;n;){var a=n.nextSibling;3===n.nodeType?t?(t.nodeValue+=n.nodeValue,e.removeChild(n)):t=n:t=null,n=a}}:0,aa=/^\s*::/,ra=/ms-(\w+)-?(.*)/,ia=l("animationend,blur,change,input,click,dblclick,focus,keydown,keypress,keyup,mousedown,mouseenter,mouseleave,mousemove,mouseout,mouseover,mouseup,scan,scroll,submit"),oa=l("value,title,alt,checked,selected,disabled,readonly,enabled,href,src"),la=/^(ms-\S+|data-\S+|on[a-z]+|id|style|class)$/,sa=/^if|widget|repeat$/,ca=/^each|with|html|include$/,ua=/\|\s*html(?:\b|$)/,fa=/\|\|/g,da=/(['"])(\\\1|.)+?\1/g,pa=function(){this.queue=[]};pa.prototype={render:function(e){if(!this.locked){this.locked=e?Zt.offsetHeight+10:1;var t=this;avalon.nextTick(function(){t.flush()})}},flush:function(){for(var e,t=0;e=this.queue[t++];)e.update&&e.update();this.locked=0,this.queue=[]}};var va=new pa,ha=[],ma=[],ga={$construct:function(){return avalon.mix.apply(null,arguments)},$ready:i,$init:i,$dispose:i,$container:null,$childReady:i,$replace:!1,$extend:null,$$template:function(e){return e}};avalon.components={},avalon.component=function(t,n){n&&(avalon.components[t]=avalon.mix({},ga,n));for(var a,r=0;a=ha[r];r++)t===a.fullName&&(ha.splice(r,1),r--,function(n,a,r,i){if(!avalon.contains(Ht,r)||r.msResolved)return void avalon.Array.remove(ha,n);var o=1,l=n.library,s=avalon.libraries[l]||ga;if(!r.getAttribute("ms-attr-identifier")){var c=K(r,n.vmodels),u=ot(n.vmodels,c.config||n.fullName),f=c.$id||c.identifier||en(i);delete c.config,delete c.$id,delete c.identifier;var d={},p=avalon.components[a.$extend];p?(avalon.mix(!0,d,p),d=p.$construct.call(r,d,{},{})):avalon.mix(!0,d,a),d=avalon.components[t].$construct.call(r,d,u,c),d.$refs={},d.$id=f;var v=d.$slot,h=d.$replace,m=d.$container,g=d.$template;delete d.$slot,delete d.$replace,delete d.$container,delete d.$construct;var y=avalon.define(d)||{};r.msResolved=1,y.$init(y,r),s.$init(y,r);for(var b,$,x=r.childNodes,w={},C=0;$=x[C++];){var T=1===$.nodeType&&$.getAttribute("slot")||v;T&&(w[T]?w[T].push($):w[T]=[$])}y.$$template&&(avalon.clearHTML(r),r.innerHTML=y.$$template(g));for(C in w)if(y.hasOwnProperty(C)){var k=w[C];if(k.length){for(var E=Jt.cloneNode(!0),N=0;b=k[N++];)E.appendChild(b);y[C]=E}w[C]=null}w=null;var A=r.children[0]||r.firstChild;if(h){r.parentNode.replaceChild(A,r),A.msResolved=1;var O=r.style.cssText,S=r.className;r=n.element=A,r.style.cssText+=";"+O,S&&avalon(r).addClass(S)}m&&m.appendChild(r),avalon.fireDom(r,"datasetchanged",{library:l,vm:y,childReady:1});var D=0,L=avalon.bind(r,"datasetchanged",function(t){if(t.childReady&&t.library===l&&(o+=t.childReady,y!==t.vm&&(y.$refs[t.vm.$id]=t.vm,-1===t.childReady&&(D++,y.$childReady(y,r,t)),t.stopPropagation())),0===o){var a=setTimeout(function(){clearTimeout(a),y.$ready(y,r,n.vmodels),s.$ready(y,r,n.vmodels)},D?Math.max(17*D,100):17);avalon.unbind(r,"datasetchanged",L),n.rollback=function(){try{y.$dispose(y,r),s.$dispose(y,r)}catch(e){}delete avalon.vmodels[y.$id]},M(n,ma),e.chrome&&r.addEventListener("DOMNodeRemovedFromDocument",function(){setTimeout(j)})}});if(nt(r,[y].concat(n.vmodels)),avalon.vmodels[y.$id]=y,r.childNodes.length)var H=setTimeout(function(){clearTimeout(H),avalon.fireDom(r,"datasetchanged",{library:l,vm:y,childReady:-1})},17);else avalon.fireDom(r,"datasetchanged",{library:l,vm:y,childReady:-1})}}(a,avalon.components[t],a.element,a.widget))},avalon.libraries=[],avalon.library=function(e,t){Ht.namespaces&&Ht.namespaces.add(e,"http://www.w3.org/1999/xhtml"),avalon.libraries[e]=avalon.mix({$init:i,$ready:i,$dispose:i},t||{})},avalon.library("ms");var ya=["autofocus,autoplay,async,allowTransparency,checked,controls","declare,disabled,defer,defaultChecked,defaultSelected","contentEditable,isMap,loop,multiple,noHref,noResize,noShade","open,readOnly,selected"].join(","),ba={};ya.replace(Bt,function(e){ba[e.toLowerCase()]=e});var $a={"accept-charset":"acceptCharset","char":"ch",charoff:"chOff","class":"className","for":"htmlFor","http-equiv":"httpEquiv"},xa=["accessKey,bgColor,cellPadding,cellSpacing,codeBase,codeType,colSpan","dateTime,defaultValue,frameBorder,longDesc,maxLength,marginWidth,marginHeight","rowSpan,tabIndex,useMap,vSpace,valueType,vAlign"].join(",");xa.replace(Bt,function(e){$a[e.toLowerCase()]=e});var wa=avalon.directive("attr",{init:function(e){if(e.expr=U(e.expr.trim()),"include"===e.type){var t=e.element;dt(t,e),e.includeRendered=ta(t,"data-include-rendered",e.vmodels),e.includeLoaded=ta(t,"data-include-loaded",e.vmodels);var n=e.includeReplace=!!avalon(t).data("includeReplace");avalon(t).data("includeCache")&&(e.templateCache={}),e.start=Ht.createComment("ms-include"),e.end=Ht.createComment("ms-include-end"),n?(e.element=e.end,e._element=t,t.parentNode.insertBefore(e.start,t),t.parentNode.insertBefore(e.end,t.nextSibling)):(t.insertBefore(e.start,t.firstChild),t.appendChild(e.end))}},update:function(t){var n=this.element,a=this.param;if("href"===a||"src"===a){if("string"!=typeof t||Zt.hasAttribute||(t=t.replace(/&amp;/g,"&")),n[a]=t,e.chrome&&"EMBED"===n.tagName){var r=n.parentNode,i=document.createComment("ms-src");r.replaceChild(i,n),r.replaceChild(n,i)}}else{var o=t===!1||null===t||void 0===t;!Gt&&$a[a]&&(a=$a[a]);var l=ba[a];if("boolean"==typeof n[l]&&(n[l]=!!t,t||(o=!0)),o)return n.removeAttribute(a);var s=It.test(n)?!1:Ht.namespaces&&isVML(n)?!0:a in n.cloneNode(!1);s?n[a]=t+"":n.setAttribute(a,t)}}});"title,alt,src,value,css,include,href".replace(Bt,function(e){an[e]=wa}),avalon.directive("class",{init:function(e){var t=e.param,a=e.type;if(!t||isFinite(t)?(e.param="",an.effect.init(e)):(n("ms-"+a+'-xxx="yyy"这种用法已经过时,请使用ms-'+a+'="xxx:yyy"'),e.expr="["+Qn(t)+","+e.expr+"]",e.oldStyle=t),"hover"===a||"active"===a){if(!e.hasBindEvent){var r=e.element,i=avalon(r),o="mouseenter",l="mouseleave";if("active"===a){r.tabIndex=r.tabIndex||-1,o="mousedown",l="mouseup";var s=i.bind("mouseleave",function(){e.toggleClass&&i.removeClass(e.newClass)})}}var c=i.bind(o,function(){e.toggleClass&&i.addClass(e.newClass)}),u=i.bind(l,function(){e.toggleClass&&i.removeClass(e.newClass)});e.rollback=function(){i.unbind("mouseleave",s),i.unbind(o,c),i.unbind(l,u)},e.hasBindEvent=!0}},update:function(e){var t=this,n=avalon(this.element);t.newClass=e[0],t.toggleClass=!!e[1],t.oldClass&&t.newClass!==t.oldClass&&n.removeClass(t.oldClass),t.oldClass=t.newClass,"class"===t.type&&(t.oldStyle?n.toggleClass(t.oldStyle,!!e[1]):n.toggleClass(t.newClass,t.toggleClass))}}),"hover,active".replace(Bt,function(e){an[e]=an["class"]}),avalon.directive("css",{init:an.attr.init,update:function(e){avalon(this.element).css(this.param,e)}}),avalon.directive("data",{priority:100,update:function(e){var t=this.element,n="data-"+this.param;e&&"object"==typeof e?t[n]=e:t.setAttribute(n,String(e))}});{var Ca=/^(?:checkbox|radio)$/,Ta=/^(?:radio|checked)$/,ka=/^(file|button|reset|submit|checkbox|radio|range)$/;avalon.directive("duplex",{priority:2e3,init:function(e,t){function a(t){e.changed.call(this,t,e)}function r(){p=!0}function o(){p=!1}var s=e.element,c=e.vmodels;e.changed=ta(s,"data-duplex-changed",c)||i;var u=[],f=l("string,number,boolean,checked");"radio"===s.type&&""===e.param&&(e.param="checked"),e.param.replace(_t,function(a){Ca.test(s.type)&&Ta.test(a)&&("radio"===a&&n("ms-duplex-radio已经更名为ms-duplex-checked"),a="checked",e.isChecked=!0,e.xtype="radio"),"bool"===a?(a="boolean",n("ms-duplex-bool已经更名为ms-duplex-boolean")):"text"===a&&(a="string",n("ms-duplex-text已经更名为ms-duplex-string")),f[a]&&(t=!0),avalon.Array.ensure(u,a)}),t||u.push("string"),e.param=u.join("-"),e.xtype||(e.xtype="SELECT"===s.tagName?"select":"checkbox"===s.type?"checkbox":"radio"===s.type?"radio":/^change/.test(s.getAttribute("data-duplex-event"))?"change":"input");var d=e.bound=function(t,n){s.addEventListener(t,n,!1);var a=e.rollback;e.rollback=function(){s.avalonSetter=null,avalon.unbind(s,t,n),a&&a()}},p=!1,v=function(){var t=s.value;if(!p&&t!==e.oldValue&&null!==e.pipe){var n=e.pipe(t,e,"get");e.oldValue=t,e.setter(n),a.call(s,n)}};switch(e.xtype){case"radio":d("click",function(){var t=e.pipe(s.value,e,"get");e.setter(t),a.call(s,t)});break;case"checkbox":d("change",function(){var t=s.checked?"ensure":"remove",r=e.getter.apply(0,e.vmodels);Array.isArray(r)||(n("ms-duplex应用于checkbox上要对应一个数组"),r=[r]);var i=e.pipe(s.value,e,"get");avalon.Array[t](r,i),a.call(s,r)});break;case"change":d("change",v);break;case"input":d("input",v),d("keyup",v),Qt||(d("compositionstart",r),d("compositionend",o),d("DOMAutoComplete",v));break;case"select":d("change",function(){var t=avalon(s).val();if(t=Array.isArray(t)?t.map(function(t){return e.pipe(t,e,"get")}):e.pipe(t,e,"get"),t+""!==e.oldValue)try{e.setter(t)}catch(a){n(a)}}),d("datasetchanged",function(t){if("selectDuplex"===t.bubble){var n=e._value,r=Array.isArray(n)?n.map(String):n+"";avalon(s).val(r),s.oldValue=r+"",a.call(s,r)}})}"input"!==e.xtype||ka.test(s.type)||("hidden"!==s.type&&(d("focus",function(){s.msFocus=!0}),d("blur",function(){s.msFocus=!1})),s.avalonSetter=v,Aa(function(){if(Zt.contains(s))s.msFocus||v();else if(!s.msRetain)return!1}))},update:function(e){var t,n=this.element,a=this;if(!this.init){for(var r in avalon.vmodels){var i=avalon.vmodels[r];i.$fire("avalon-ms-duplex-init",a)}var o=a.pipe||(a.pipe=ct);o(null,a,"init"),this.init=1}switch(this.xtype){case"input":case"change":if(t=this.pipe(e,this,"set"),t!==this.oldValue){var l=!1;if(n.msFocus)try{var s=n.selectionStart,c=n.selectionEnd;if(s===c){var u=s;l=!0}}catch(f){}n.value=this.oldValue=t,l&&!n.readOnly&&(n.selectionStart=n.selectionEnd=u)}break;case"radio":t=a.isChecked?!!e:e+""===n.value,n.checked=t;break;case"checkbox":var d=[].concat(e);t=this.pipe(n.value,this,"get"),n.checked=d.indexOf(t)>-1;break;case"select":a._value=e,n.msHasEvent?avalon.fireDom(n,"datasetchanged",{bubble:n.msHasEvent}):n.msHasEvent="selectDuplex"}}})}avalon.duplexHooks={checked:{get:function(e,t){return!t.oldValue}},string:{get:function(e){return e},set:st},"boolean":{get:function(e){return"true"===e},set:st},number:{get:function(e,t){var n=parseFloat(e);if(-e===-n)return n;var a=/strong|medium|weak/.exec(t.element.getAttribute("data-duplex-number"))||["medium"];switch(a[0]){case"strong":return 0;case"medium":return""===e?"":0;case"weak":return e}},set:st}};var Ea,Na=[];avalon.tick=function(e){1===Na.push(e)&&(Ea=setInterval(ut,60))};var Aa=i;!new function(){function e(e){t[this.tagName].call(this,e),!this.msFocus&&this.avalonSetter&&this.avalonSetter()}try{var t={},n=HTMLInputElement.prototype,a=HTMLTextAreaElement.prototype,r=HTMLInputElement.prototype;Object.getOwnPropertyNames(r),t.INPUT=Object.getOwnPropertyDescriptor(n,"value").set,Object.defineProperty(n,"value",{set:e}),t.TEXTAREA=Object.getOwnPropertyDescriptor(a,"value").set,Object.defineProperty(a,"value",{set:e})}catch(i){Aa=avalon.tick}},avalon.directive("effect",{priority:5,init:function(e){var t,n,a=e.expr,r=a.replace(dn,function(e){return e.replace(/./g,"0")}).indexOf(":");-1===r?(t=a,n=!0):(t=a.slice(0,r),n=a.slice(r+1)),t=fn.test(a)?U(t):Qn(t),e.expr="["+t+","+n+"]"},update:function(t){var n=t[0],a=this.element;if(a.getAttribute("data-effect-name")!==n){a.removeAttribute("data-effect-driver");var r=a.style,i=e.getComputedStyle?e.getComputedStyle(a):null,o=!1;if(i&&(Ma||ja)){var l=r[Da]||i[Da];l&&"0s"!==l&&(a.setAttribute("data-effect-driver","t"),o=!0),o||(l=r[La]||i[La],l&&"0s"!==l&&(a.setAttribute("data-effect-driver","a"),o=!0))}o||avalon.effects[n]&&(a.setAttribute("data-effect-driver","j"),o=!0),o&&a.setAttribute("data-effect-name",n)}}}),avalon.effects={},avalon.effect=function(e,t){avalon.effects[e]=t};var Oa,Sa,Ma=!1,ja=!1,Da=avalon.cssName("transition-duration"),La=avalon.cssName("animation-duration");!new function(){var t,n={TransitionEvent:"transitionend",WebKitTransitionEvent:"webkitTransitionEnd",OTransitionEvent:"oTransitionEnd",otransitionEvent:"otransitionEnd"};for(var a in n){if(e[a]){t=n[a];break}try{{document.createEvent(a)}t=n[a];break}catch(r){}}"string"==typeof t&&(Ma=!0,Oa=t),n={AnimationEvent:"animationend",WebKitAnimationEvent:"webkitAnimationEnd"};var i;for(a in n)if(e[a]){i=n[a];break}"string"==typeof i&&(Ma=!0,Sa=i)};var Ha=[],Pa=new pa;vt.prototype={contrustor:vt,enterClass:function(){return ht(this,"enter")},leaveClass:function(){return ht(this,"leave")},actionFun:function(e,t,n){if(!document.hidden){var a=this,r=a.el,i="leave"===e;e=i?"leave":"enter";var o=i?"enter":"leave";mt(a,"abort"+pt(o)),mt(a,"before"+pt(e)),i||t(r);var l=function(o){r.removeEventListener(a.cssEvent,a.cssCallback),i?(t(r),avalon(r).removeClass(a.cssClass)):"a"===a.driver&&avalon(r).removeClass(a.cssClass),o!==!0&&(mt(a,"after"+pt(e)),n&&n(r)),a.dispose()};a.useCss?(a.cssCallback&&a.cssCallback(!0),a.cssClass=ht(a,e),a.cssCallback=l,a.update=function(){r.addEventListener(a.cssEvent,a.cssCallback),i||"t"!==a.driver||avalon(r).removeClass(a.cssClass)},avalon(r).addClass(a.cssClass),Pa.render(!0),Pa.queue.push(a)):mt(a,e,l)}},enter:function(){this.actionFun.apply(this,["enter"].concat(avalon.slice(arguments)))},leave:function(){this.actionFun.apply(this,["leave"].concat(avalon.slice(arguments)))},dispose:function(){this.update=this.cssCallback=null,Ha.unshift(this)>100&&Ha.pop()}};var Ra=function(e,t){var n=Wt.call(arguments,0);"function"!=typeof n[2]&&n.splice(2,0,i),"function"!=typeof n[3]&&n.splice(3,0,i);var a=n[2],r=n[3],o=n[4],l=ft(e,o);if(!l)return a(),r(),!1;var s=t?"enter":"leave";l[s](a,r)};avalon.mix(avalon.effect,{apply:Ra,append:function(e,t,n,a){return Ra(e,1,function(){t.appendChild(e)},n,a)},before:function(e,t,n,a){return Ra(e,1,function(){t.parentNode.insertBefore(e,t)},n,a)},remove:function(e,t,n,a){return Ra(e,0,function(){e.parentNode===t&&t.removeChild(e)},n,a)}}),avalon.directive("html",{update:function(e){var t=this,n=this.element,a=1!==n.nodeType,r=a?n.parentNode:n;if(r){if(e=null==e?"":e,3===n.nodeType){var i=en("html");r.insertBefore(Ht.createComment(i),n),t.element=Ht.createComment(i+":end"),r.replaceChild(t.element,n),n=t.element}if("object"!=typeof e)var o=avalon.parseHTML(String(e));else if(11===e.nodeType)o=e;else if(1===e.nodeType||e.item){var l=1===e.nodeType?e.childNodes:e.item;for(o=Jt.cloneNode(!0);l[0];)o.appendChild(l[0])}if(l=avalon.slice(o.childNodes),a){for(var s=n.nodeValue.slice(0,-4);;){var c=n.previousSibling;if(!c||8===c.nodeType&&c.nodeValue===s)break;r.removeChild(c)}r.insertBefore(o,n)}else avalon.clearHTML(n).appendChild(o);tt(l,t.vmodels)}}}),avalon.directive("if",{priority:10,update:function(e){function t(){r.getAttribute(a.name)&&(r.removeAttribute(a.name),Q(r,a.vmodels)),a.rollback=null}var n,a=this,r=this.element,i=a.stamp=+new Date,o=function(){i===a.stamp&&(a.recoverNode=null)};a.recoverNode&&a.recoverNode();try{if(!r.parentNode)return;n=r.parentNode}catch(l){return}if(e){if(8===r.nodeType){var s=a.keep,c=avalon.effect.apply(s,1,function(){i===a.stamp&&(r.parentNode.replaceChild(s,r),r=a.element=s,s.getAttribute("_required")&&(r.required=!0,r.removeAttribute("_required")),r.querySelectorAll&&avalon.each(r.querySelectorAll("[_required=true]"),function(e){e.required=!0,e.removeAttribute("_required")}),t())},o);c=c===!1}c||t()}else if(1===r.nodeType){r.required===!0&&(r.required=!1,r.setAttribute("_required","true"));try{avalon.each(r.querySelectorAll(":required"),function(e){r.required=!1,e.setAttribute("_required","true")})}catch(l){}var u=a.element=Ht.createComment("ms-if"),f=r.nextSibling;a.recoverNode=function(){a.recoverNode=null,u.parentNode!==n&&(n.insertBefore(u,f),a.keep=r)},avalon.effect.apply(r,0,function(){a.recoverNode=null,i===a.stamp&&(r.parentNode.replaceChild(u,r),a.keep=r,Rt.appendChild(r),a.rollback=function(){r.parentNode===Rt&&Rt.removeChild(r)})},o)}}});var qa=function(){return new e.XMLHttpRequest},Fa=avalon.templateCache={};avalon.directive("include",{init:an.attr.init,update:function(e){var t=this,a=this.element,r=t.vmodels,i=t.includeRendered,o=t.effectName&&t.effectClass,l=t.templateCache,s=t.includeReplace,c=t.includeLoaded,u=s?a.parentNode:a,f=t._element;t.recoverNodes=t.recoverNodes||avalon.noop;var d=function(n){var d=t._stamp=+new Date;if(c){var p=c.apply(u,[n].concat(r));"string"==typeof p&&(n=p)}i&&W(u,function(){i.call(u)},0/0);var v=t.includeLastID||"_default";t.includeLastID=e;var h=l&&l[v]||Ht.createElement(a.tagName||t._element.tagName);o&&(h.className=o,u.insertBefore(h,t.start)),(l||{})[v]=h;var m=t.recoverNodes();for(m&&u.insertBefore(m,t.end);;){var g=t.start.nextSibling;if(!g||g===h||g===t.end)break;h.appendChild(g)}avalon.effect.remove(h,u,function(){l&&d===t._stamp&&Rt.appendChild(h)},t);var y=u,b=avalon.noop,$=avalon.noop,x=gt(t,e,n),w=avalon.slice(x.childNodes);s&&o?(y=f,y.innerHTML="",y.setAttribute("ms-skip","true"),u.insertBefore(y,t.end.nextSibling),b=function(){y.insertBefore(x,null)},$=function(){t.recoverNodes=avalon.noop,d===t._stamp&&(x=yt(w),u.insertBefore(x,t.end),tt(w,r)),y.parentNode===u&&u.removeChild(y)},t.recoverNodes=function(){return t.recoverNodes=avalon.noop,yt(w)}):b=function(){u.insertBefore(x,t.end),tt(w,r)},avalon.effect.apply(y,"enter",b,$)};if("src"===t.param)if("string"==typeof Fa[e])avalon.nextTick(function(){d(Fa[e])});else if(Array.isArray(Fa[e]))Fa[e].push(d);else{var p=qa();p.onload=function(){for(var t,n=p.responseText,a=0;t=Fa[e][a++];)t(n);Fa[e]=n},p.onerror=function(){n("ms-include load ["+e+"] error")},Fa[e]=[d],p.open("GET",e,!0),"withCredentials"in p&&(p.withCredentials=!0),p.setRequestHeader("X-Requested-With","XMLHttpRequest"),p.send(null)}else{var v=e&&1===e.nodeType?e:Ht.getElementById(e);v&&avalon.nextTick(function(){d(v.value||v.innerText||v.innerHTML)})}}});var Ba=/\(([^)]*)\)/,_a=avalon.directive("on",{priority:3e3,init:function(e){var t=e.expr;e.type="on";var n=e.param.replace(/-\d+$/,"");if("function"==typeof _a[n+"Hook"]&&_a[n+"Hook"](e),t.indexOf("(")>0&&t.indexOf(")")>-1){var a=(t.match(Ba)||["",""])[1].trim();(""===a||"$event"===a)&&(t=t.replace(Ba,""))}e.expr=t},update:function(e){var t=this,n=this.element;e=function(e){var n=t.getter||i;return n.apply(this,t.args.concat(e))};var a=t.param.replace(/-\d+$/,"");if("scan"===a)e.call(n,{type:a});else if("function"==typeof t.specialBind)t.specialBind(n,e);else var r=avalon.bind(n,a,e);t.rollback=function(){"function"==typeof t.specialUnbind?t.specialUnbind():avalon.unbind(n,a,r)}}});avalon.directive("repeat",{priority:90,init:function(e){var t=e.type;e.cache={},e.enterCount=0;var n=e.element;if(1===n.nodeType){n.removeAttribute(e.name),dt(n,e),e.param=e.param||"el",e.sortedCallback=ta(n,"data-with-sorted",e.vmodels);var a=ta(n,"data-"+t+"-rendered",e.vmodels),r=en(t),i=Ht.createComment(r+":start"),o=e.element=Ht.createComment(r+":end");if(e.signature=r,e.start=i,e.template=Jt.cloneNode(!1),"repeat"===t){var l=n.parentNode;l.replaceChild(o,n),l.insertBefore(i,o),e.template.appendChild(n)}else{for(;n.firstChild;)e.template.appendChild(n.firstChild);n.appendChild(i),n.appendChild(o),l=n}if(e.element=o,a)var s=avalon.bind(l,"datasetchanged",function(){a.apply(l,l.args),avalon.unbind(l,"datasetchanged",s),l.msRendered=a})}},update:function(e,t){var n=this,a=this.xtype;this.enterCount+=1;var r=!t;if(r){n.$outer={};var i="$key",o="$val";"array"===a&&(i="$first",o="$last");for(var l,s=0;l=n.vmodels[s++];)if(l.hasOwnProperty(i)&&l.hasOwnProperty(o)){n.$outer=l;break}}var c=this.track;if(n.sortedCallback){var f=n.sortedCallback.call($,c);f&&Array.isArray(f)&&(c=f)}var d="move";n.$repeat=e;var p=[],v=r&&Jt.cloneNode(!1),h=[],m=this.param,g=avalon.mix({},this.cache),y=this.element,b=c.length,$=y.parentNode;for(s=0;b>s;s++){var x=c[s],w=g[x];if(w)p.push({}),g[x]=!0;else{if(w=Ct(this),w.$up=null,"array"===a){d="add",w.$id=x;var C=e[s];w[m]=C,Object(C)===C&&(C.$ups=C.$ups||{},C.$ups[m]=w)}else d="append",w.$key=x,w.$val=e[x];this.cache[x]=w;var k=w.$anchor||(w.$anchor=y.cloneNode(!1));k.nodeValue=this.signature,wt(n,v,w,p,r&&!n.effectDriver),Et(w,n,a)}1===this.enterCount&&(w.$active=!1,w.$oldIndex=w.$index,w.$active=!0,w.$index=s),"array"===a?(w.$first=0===s,w.$last=s===b-1):w.$val=T(e[x]),h.push(w)}if(this.proxies=h,r&&!n.effectDriver)$.insertBefore(v,y),p.forEach(function(e){tt(e.nodes||[],e.vmodels),e.nodes=e.vmodels=null});else{var E=n.staggerIndex=0;for(x in g)g[x]!==!0&&(d="del",xt(g[x].$anchor,n),Ot(this.cache,x,m),g[x]=null);for(s=0;b>s;s++){w=h[s],x="array"===a?w.$id:w.$key;var N=h[s-1],A=N?N.$anchor:n.start;g[x]?w.$index!==w.$oldIndex&&!function(e,t){E=$t(n.effectEnterStagger,function(){var a=xt(e.$anchor),r=avalon.slice(a.childNodes);$.insertBefore(a,t.nextSibling),bt(r,1,n)},E)}(w,A):!function(e,t){var a=e.nodes,r=e.vmodels;a&&(E=$t(n.effectEnterStagger,function(){$.insertBefore(e.content,t.nextSibling),tt(a,r),bt(a,1,n)},E)),e.nodes=e.vmodels=null}(p[s],A)}}if(!e.$track)for(x in this.cache)Ot(this.cache,x,m);!function(e){$.args=e,$.msRendered&&$.msRendered.apply($,e)}(u.newWatch?arguments:[d]);var O=setTimeout(function(){clearTimeout(O),avalon.fireDom($,"datasetchanged",{bubble:$.msHasEvent})});this.enterCount-=1}}),"with,each".replace(Bt,function(e){an[e]=avalon.mix({},an.repeat,{priority:1400})});var Ia=[],Va=[];avalon.directive("text",{update:function(e){var t=this.element;if(e=null==e?"":e,3===t.nodeType)try{t.data=e}catch(n){}else t.textContent=e}}),avalon.parseDisplay=St,avalon.directive("visible",{init:function(e){dt(e.element,e)},update:function(e){var t,n=this,a=this.element,r=!this.effectName;return this.stamp?(t=this.stamp=+new Date,void(e?avalon.effect.apply(a,1,function(){if(t===n.stamp){var e=a.getAttribute("data-effect-driver")||"a";r&&(a.style.display=n.display||""),("a"===e||"t"===e)&&"none"===avalon(a).css("display")&&(a.style.display=n.display||St(a.nodeName))}}):avalon.effect.apply(a,0,function(){t===n.stamp&&(a.style.display="none")}))):(t=this.stamp=+new Date,void(e?(a.style.display=n.display||"","none"===avalon(a).css("display")&&(a.style.display=n.display=St(a.nodeName))):a.style.display="none"))}});var Xa=/<script[^>]*>([\S\s]*?)<\/script\s*>/gim,Ya=/\s+(on[^=\s]+)(?:=("[^"]*"|'[^']*'|[^\s>]+))?/g,Ua=/<\w+\b(?:(["'])[^"]*?(\1)|[^>])*>/gi,za={a:/\b(href)\=("javascript[^"]*"|'javascript[^']*')/gi,img:/\b(src)\=("javascript[^"]*"|'javascript[^']*')/gi,form:/\b(action)\=("javascript[^"]*"|'javascript[^']*')/gi},Wa=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,Ga=/([^\#-~| |!])/g,Za=avalon.filters={uppercase:function(e){return e.toUpperCase()},lowercase:function(e){return e.toLowerCase()},truncate:function(e,t,n){return t=t||30,n="string"==typeof n?n:"...",e.length>t?e.slice(0,t-n.length)+n:String(e)},$filter:function(e){for(var t=1,n=arguments.length;n>t;t++){var a=arguments[t],r=avalon.filters[a[0]];if("function"==typeof r){var i=[e].concat(a.slice(1));e=r.apply(null,i)}}return e},camelize:P,sanitize:function(e){return e.replace(Xa,"").replace(Ua,function(e){var t=e.toLowerCase().match(/<(\w+)\s/);if(t){var n=za[t[1]];n&&(e=e.replace(n,function(e,t,n){var a=n.charAt(0);return t+"="+a+"javascript:void(0)"+a}))}return e.replace(Ya," ").replace(/\s+/g," ")})},escape:function(e){return String(e).replace(/&/g,"&amp;").replace(Wa,function(e){var t=e.charCodeAt(0),n=e.charCodeAt(1);return"&#"+(1024*(t-55296)+(n-56320)+65536)+";"}).replace(Ga,function(e){return"&#"+e.charCodeAt(0)+";"}).replace(/</g,"&lt;").replace(/>/g,"&gt;")},currency:function(e,t,n){return(t||"¥")+Mt(e,isFinite(n)?n:2)},number:Mt};!new function(){function e(e){return parseInt(e,10)||0}function t(e,t,n){var a="";for(0>e&&(a="-",e=-e),e=""+e;e.length<t;)e="0"+e;return n&&(e=e.substr(e.length-t)),a+e}function n(e,n,a,r){return function(i){var o=i["get"+e]();return(a>0||o>-a)&&(o+=a),0===o&&-12===a&&(o=12),t(o,n,r)}}function a(e,t){return function(n,a){var r=n["get"+e](),i=(t?"SHORT"+e:e).toUpperCase();return a[i][r]}}function r(e){var n=-1*e.getTimezoneOffset(),a=n>=0?"+":"";return a+=t(Math[n>0?"floor":"ceil"](n/60),2)+t(Math.abs(n%60),2)}function i(e,t){return e.getHours()<12?t.AMPMS[0]:t.AMPMS[1]}var o={yyyy:n("FullYear",4),yy:n("FullYear",2,0,!0),y:n("FullYear",1),MMMM:a("Month"),MMM:a("Month",!0),MM:n("Month",2,1),M:n("Month",1,1),dd:n("Date",2),d:n("Date",1),HH:n("Hours",2),H:n("Hours",1),hh:n("Hours",2,-12),h:n("Hours",1,-12),mm:n("Minutes",2),m:n("Minutes",1),ss:n("Seconds",2),s:n("Seconds",1),sss:n("Milliseconds",3),EEEE:a("Day"),EEE:a("Day",!0),a:i,Z:r},l=/((?:[^yMdHhmsaZE']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z))(.*)/,s=/^\/Date\((\d+)\)\/$/;Za.date=function(t,n){var a,r,i=Za.date.locate,c="",u=[];if(n=n||"mediumDate",n=i[n]||n,"string"==typeof t)if(/^\d+$/.test(t))t=e(t);else if(s.test(t))t=+RegExp.$1;else{var f=t.trim(),d=[0,0,0,0,0,0,0],p=new Date(0);f=f.replace(/^(\d+)\D(\d+)\D(\d+)/,function(t,n,a,r){var i=4===r.length?[r,n,a]:[n,a,r];return d[0]=e(i[0]),d[1]=e(i[1])-1,d[2]=e(i[2]),""});var v=p.setFullYear,h=p.setHours;f=f.replace(/[T\s](\d+):(\d+):?(\d+)?\.?(\d)?/,function(t,n,a,r,i){return d[3]=e(n),d[4]=e(a),d[5]=e(r),i&&(d[6]=Math.round(1e3*parseFloat("0."+i))),""});var m=0,g=0;f=f.replace(/Z|([+-])(\d\d):?(\d\d)/,function(t,n,a,r){return v=p.setUTCFullYear,h=p.setUTCHours,n&&(m=e(n+a),g=e(n+r)),""}),d[3]-=m,d[4]-=g,v.apply(p,d.slice(0,3)),h.apply(p,d.slice(3)),t=p}if("number"==typeof t&&(t=new Date(t)),"date"===avalon.type(t)){for(;n;)r=l.exec(n),r?(u=u.concat(r.slice(1)),n=u.pop()):(u.push(n),n=null);return u.forEach(function(e){a=o[e],c+=a?a(t,i):e.replace(/(^'|'$)/g,"").replace(/''/g,"'")}),c}};var c={AMPMS:{0:"上午",1:"下午"},DAY:{0:"星期日",1:"星期一",2:"星期二",3:"星期三",4:"星期四",5:"星期五",6:"星期六"},MONTH:{0:"1月",1:"2月",2:"3月",3:"4月",4:"5月",5:"6月",6:"7月",7:"8月",8:"9月",9:"10月",10:"11月",11:"12月"},SHORTDAY:{0:"周日",1:"周一",2:"周二",3:"周三",4:"周四",5:"周五",6:"周六"},fullDate:"y年M月d日EEEE",longDate:"y年M月d日",medium:"yyyy-M-d H:mm:ss",mediumDate:"yyyy-M-d",mediumTime:"H:mm:ss","short":"yy-M-d ah:mm",shortDate:"yy-M-d",shortTime:"ah:mm"};c.SHORTMONTH=c.MONTH,Za.date.locate=c};var Ja=avalon.modules={"domReady!":{exports:avalon,state:3},avalon:{exports:avalon,state:4}};Ja.exports=Ja.avalon;var Ka,Qa=e.require,er=e.define;hn.loader=function(t){var n=Ka&&t;e.require=n?Ka:Qa,e.define=n?Ka.define:er},new function(){function t(e,t){var a="js";e=e.replace(/^(\w+)\!/,function(e,t){return a=t,""}),"ready"===a&&(n("debug: ready!已经被废弃,请使用domReady!"),a="domReady");var r="";e=e.replace(H,function(e){return r=e,""});var i="."+a,o=/js|css/.test(i)?i:"";e=e.replace(/\.[a-z0-9]+$/g,function(e){return e===i?(o=e,""):e});var l=avalon.mix({query:r,ext:o,res:a,name:e,toUrl:m},t);return l.toUrl(e),l}function o(e){var t=e.name,n=e.res,a=Ja[t],r=t&&e.urlNoQuery;if(a&&a.state>=1)return t;if(a=Ja[r],a&&a.state>=3)return Ka(a.deps||[],a.factory,r),r;if(t&&!a){a=Ja[r]={id:r,state:1};var i=function(r){L[n]=r,r.load(t,e,function(e){arguments.length&&void 0!==e&&(a.exports=e),a.state=4,c()})};L[n]?i(L[n]):Ka([n],i)}return t?r:n+"!"}function l(e,t){for(var n,a=0;n=e[a++];)if(4!==Ja[n].state&&(n===t||l(Ja[n].deps,t)))return!0}function s(e,t){var a=d(e.src);return e.onload=e.onerror=null,t?(setTimeout(function(){Pt.removeChild(e),e=null}),void n("debug: 加载 "+a+" 失败"+t+" "+!Ja[a].state)):!0}function c(){e:for(var e,t=k.length;e=k[--t];){var n=Ja[e],a=n.deps;if(a){for(var r,i=0;r=a[i];i++)if(4!==Object(Ja[r]).state)continue e;
3
+ 4!==n.state&&(k.splice(t,1),h(n.id,n.deps,n.factory),c())}}}function f(e,t,a){var r=Ht.createElement("script");r.className=qt,r.onload=function(){var r=E.pop();r&&r.require(t),a&&a(),n("debug: 已成功加载 "+e),t&&k.push(t),c()},r.onerror=function(){s(r,!0)},Pt.insertBefore(r,Pt.firstChild),r.src=e,n("debug: 正准备加载 "+e)}function d(e){return(e||"").replace(H,"")}function p(e){return/^(?:[a-z]+:)?\/\//i.test(String(e))}function v(){var e;try{a.b.c()}catch(t){e=t.stack}if(e)return e=e.split(/[@ ]/g).pop(),e="("===e[0]?e.slice(1,-1):e.replace(/\s/,""),d(e.replace(/(:\d+)?:\d+$/i,""));for(var n,r=Pt.getElementsByTagName("script"),i=r.length;n=r[--i];)if(n.className===qt&&"interactive"===n.readyState){var o=n.src;return n.className=d(o)}}function h(t,a,i){var o=Object(Ja[t]);o.state=4;for(var l,s=0,c=[];l=a[s++];)if("exports"===l){var u=o.exports||(o.exports=r());c.push(u)}else c.push(Ja[l].exports);try{var f=i.apply(e,c)}catch(d){n("执行["+t+"]模块的factory抛错: ",d)}return void 0!==f&&(o.exports=f),P.test(t)&&delete Ja[t],delete o.factory,f}function m(e){0===e.indexOf(this.res+"!")&&(e=e.slice(this.res.length+1));var t=e,n=0,a=this.baseUrl,r=this.parentUrl||a;x(e,u.paths,function(e,a){t=t.replace(a,e),n=1}),n||x(e,u.packages,function(e,n,a){t=t.replace(a.name,a.location)}),this.mapUrl&&x(this.mapUrl,u.map,function(e){x(t,e,function(e,n){t=t.replace(n,e),r=a})});var i=this.ext;i&&n&&t.slice(-i.length)===i&&(t=t.slice(0,-i.length)),p(t)||(r=this.built||/^\w/.test(t)?a:r,t=C(r,t));var o=t+i;return t=o+this.query,o=t.replace(H,function(e){return this.query=e,""}),x(e,u.urlArgs,function(e){t+=(-1===t.indexOf("?")?"?":"&")+e}),this.url=t,this.urlNoQuery=o}function g(e,t,n){var a=$(e,t,n);return a.sort(w),a}function y(e){return new RegExp("^"+e+"(/|$)")}function b(t){return function(){var n;return t.init&&(n=t.init.apply(e,arguments)),n||t.exports&&T(t.exports)}}function $(e,t,n){var a=[];for(var r in e){var i={name:r,val:e[r]};a.push(i),i.reg="*"===r&&t?/^/:y(r),n&&"*"!==r&&(i.reg=new RegExp("/"+r.replace(/^\//,"")+"(/|$)"))}return a}function x(e,t,n){t=t||[];for(var a,r=0;a=t[r++];)if(a.reg.test(e))return n(a.val,a.name,a),!1}function w(e,t){var n=e.name,a=t.name;return"*"===a?-1:"*"===n?1:a.length-n.length}function C(e,t){if("/"!==e.charAt(e.length-1)&&(e+="/"),"./"===t.slice(0,2))return e+t.slice(2);if(".."===t.slice(0,2)){for(e+=t;R.test(e);)e=e.replace(R,"");return e}return"/"===t.slice(0,1)?e+t.slice(1):e+t}function T(t){if(!t)return t;var n=e;return t.split(".").forEach(function(e){n=n[e]}),n}var k=[],E=[],N=/\.js$/i,A=[],O=!1;Ka=avalon.require=function(e,n,a,l){if(O){Array.isArray(e)||avalon.error("require方法的第一个参数应为数组 "+e);var s=[],f=r(),d=a||"callback"+setTimeout("1");l=l||r(),l.baseUrl=u.baseUrl;var p=!!l.built;if(a&&(l.parentUrl=a.substr(0,a.lastIndexOf("/")),l.mapUrl=a.replace(N,"")),p){var v=t(l.defineName,l);d=v.urlNoQuery}else e.forEach(function(e){var n=t(e,l),a=o(n);a&&(f[a]||(s.push(a),f[a]="司徒正美"))});var h=Ja[d];h&&4===h.state||(Ja[d]={id:d,deps:p?e.concat():s,factory:n||i,state:3}),h||k.push(d),c()}else if(A.push(avalon.slice(arguments)),arguments.length<=2){O=!0;for(var m,g=A.splice(0,A.length);m=g.shift();)Ka.apply(null,m)}},Ka.define=function(e,t,n){"string"!=typeof e&&(n=t,t=e,e="anonymous"),Array.isArray(t)||(n=t,t=[]);var a={built:!O,defineName:e},r=[t,n,a];n.require=function(e){if(r.splice(2,0,e),Ja[e]){Ja[e].state=3;var t=!1;try{t=l(Ja[e].deps,e)}catch(a){}t&&avalon.error(e+"模块与之前的模块存在循环依赖,请不要直接用script标签引入"+e+"模块")}delete n.require,Ka.apply(null,r)};var i=a.built?"unknown":v();if(i){var o=Ja[i];o&&(o.state=2),n.require(i)}else E.push(n)},Ka.config=u,Ka.define.amd=Ja;var S=u["orig.paths"]=r(),M=u["orig.map"]=r(),j=u.packages=[],D=u["orig.args"]=r();avalon.mix(hn,{paths:function(e){avalon.mix(S,e),u.paths=g(S)},map:function(e){avalon.mix(M,e);var t=g(M,1,1);avalon.each(t,function(e,t){t.val=g(t.val)}),u.map=t},packages:function(e){e=e.concat(j);for(var t,n=r(),a=[],i=0;t=e[i++];){t="string"==typeof t?{name:t}:t;var o=t.name;if(!n[o]){var l=C(t.location||o,t.main||"main");l=l.replace(N,""),a.push(t),n[o]=t.location=l,t.reg=y(o)}}u.packages=a.sort()},urlArgs:function(e){"string"==typeof e&&(e={"*":e}),avalon.mix(D,e),u.urlArgs=g(D,1)},baseUrl:function(e){if(!p(e)){var t=Pt.getElementsByTagName("base")[0];t&&Pt.removeChild(t);var n=Ht.createElement("a");n.href=e,e=n.href,t&&Pt.insertBefore(t,Pt.firstChild)}e.length>3&&(u.baseUrl=e)},shim:function(e){for(var t in e){var n=e[t];Array.isArray(n)&&(n=e[t]={deps:n}),n.exportsFn||!n.exports&&!n.init||(n.exportsFn=b(n))}u.shim=e}});var L=Ka.plugins={domReady:{load:i},js:{load:function(e,t,n){var a=t.url,r=t.urlNoQuery,i=u.shim[e.replace(N,"")];i?Ka(i.deps||[],function(){var e=avalon.slice(arguments);f(a,r,function(){n(i.exportsFn?i.exportsFn.apply(0,e):void 0)})}):f(a,r)}},css:{load:function(e,t,a){var r=t.url;Pt.insertAdjacentHTML("afterBegin",'<link rel="stylesheet" href="'+r+'">'),n("debug: 已成功加载 "+r),a()}},text:{load:function(e,t,a){var r=t.url,i=qa();i.onload=function(){var e=i.status;e>399&&600>e?avalon.error(r+" 对应资源不存在或没有开启 CORS"):(n("debug: 已成功加载 "+r),a(i.responseText))};var o="_="+(new Date-0),l=-1===r.indexOf("?")?r+"?"+o:r+"&"+o;i.open("GET",l,!0),"withCredentials"in i&&(i.withCredentials=!0),i.setRequestHeader("X-Requested-With","XMLHttpRequest"),i.send(),n("debug: 正准备加载 "+r)}}};Ka.checkDeps=c;var H=/(\?[^#]*)$/,P=/^callback\d+$/,R=/\/\w+\/\.\./,q=Ht.scripts[Ht.scripts.length-1],F=q.getAttribute("data-main");if(F){hn.baseUrl(F);var B=u.baseUrl;u.baseUrl=B.slice(0,B.lastIndexOf("/")+1),f(B.replace(N,"")+".js")}else{var _=d(q.src);u.baseUrl=_.slice(0,_.lastIndexOf("/")+1)}};var tr,nr=[],ar=function(e){tr=!0;var t=avalon.require;for(t&&t.checkDeps&&(Ja["domReady!"].state=4,t.checkDeps());e=nr.shift();)e(avalon)};"complete"===Ht.readyState?setTimeout(ar):Ht.addEventListener("DOMContentLoaded",ar),e.addEventListener("load",ar),avalon.ready=function(e){tr?e(avalon):nr.push(e)},avalon.config({loader:!0}),avalon.ready(function(){avalon.scan(Ht.body)});var rr=navigator.userAgent.toLowerCase(),ir=rr.indexOf("android")>0,or=jt(),lr=avalon.gestureHooks={pointers:{},start:function(e,t){for(var n=0;n<e.changedTouches.length;n++){var a=e.changedTouches[n],r={startTouch:Dt({},a),startTime:Date.now(),status:"tapping",element:e.target};lr.pointers[a.identifier]=r,t(r,a)}},move:function(e,t){for(var n=0;n<e.changedTouches.length;n++){var a=e.changedTouches[n],r=lr.pointers[a.identifier];if(!r)return;"lastTouch"in r||(r.lastTouch=r.startTouch,r.lastTime=r.startTime,r.deltaX=r.deltaY=r.duration=r.distance=0);var i=Date.now()-r.lastTime;if(i>0){var o=70;i>o&&(i=o),r.duration+i>o&&(r.duration=o-i),r.duration+=i,r.lastTouch=Dt({},a),r.lastTime=Date.now(),r.deltaX=a.clientX-r.startTouch.clientX,r.deltaY=a.clientY-r.startTouch.clientY;var l=r.deltaX*r.deltaX,s=r.deltaY*r.deltaY;r.distance=Math.sqrt(l+s),r.isVertical=s>l,t(r,a)}}},end:function(e,t){for(var n=0;n<e.changedTouches.length;n++){var a=e.changedTouches[n],r=a.identifier,i=lr.pointers[r];i&&(t(i,a),delete lr.pointers[r])}},fire:function(e,t,n){if(e){var a=document.createEvent("Events");a.initEvent(t,!0,!0),avalon.mix(a,n),e.dispatchEvent(a)}},add:function(e,t){function n(e){t.touchmove(e)}function a(e){t.touchend(e),document.removeEventListener("touchmove",n),document.removeEventListener("touchend",a),document.removeEventListener("touchcancel",r)}function r(e){t.touchcancel(e),document.removeEventListener("touchmove",n),document.removeEventListener("touchend",a),document.removeEventListener("touchcancel",r)}t.events.forEach(function(i){avalon.eventHooks[i]={fn:function(i,o){return i["touch-"+e]||(i["touch-"+e]="1",i.addEventListener("touchstart",function(e){t.touchstart(e),document.addEventListener("touchmove",n),document.addEventListener("touchend",a),document.addEventListener("touchcancel",r)})),o}}})}},sr=["screenX","screenY","clientX","clientY","pageX","pageY"],cr=!!navigator.pointerEnabled||!!navigator.msPointerEnabled;cr&&(Zt.style.msTouchAction=Zt.style.touchAction="none");var ur={events:["tap"],touchBoundary:10,tapDelay:200,needClick:function(e){switch(e.nodeName.toLowerCase()){case"button":case"select":case"textarea":if(e.disabled)return!0;break;case"input":if(or&&"file"===e.type||e.disabled)return!0;break;case"label":case"iframe":case"video":return!0}return!1},needFocus:function(e){switch(e.nodeName.toLowerCase()){case"textarea":case"select":return!0;case"input":switch(e.type){case"button":case"checkbox":case"file":case"image":case"radio":case"submit":return!1}return!e.disabled&&!e.readOnly;default:return!1}},focus:function(e){var t,n=e.type;or&&e.setSelectionRange&&0!==n.indexOf("date")&&"time"!==n&&"month"!==n?(t=e.value.length,e.setSelectionRange(t,t)):e.focus()},findControl:function(e){return void 0!==e.control?e.control:e.htmlFor?document.getElementById(e.htmlFor):e.querySelector("button, input:not([type=hidden]), keygen, meter, output, progress, select, textarea")},fixTarget:function(t){return 3===t.nodeType?t.parentNode:e.SVGElementInstance&&t instanceof SVGElementInstance?t.correspondingUseElement:t},updateScrollParent:function(e){var t=e.tapScrollParent;if(!t||!t.contains(e)){var n=e;do{if(n.scrollHeight>n.offsetHeight){t=n,e.tapScrollParent=n;break}n=n.parentElement}while(n)}t&&(t.lastScrollTop=t.scrollTop)},touchHasMoved:function(e){var t=e.changedTouches[0],n=ur.touchBoundary;return Math.abs(t.pageX-ur.touchStartX)>n||Math.abs(t.pageY-ur.touchStartY)>n},findType:function(e){return ir&&"select"===e.tagName.toLowerCase()?"mousedown":"click"},sendClick:function(t,n){lr.fire(t,"tap",{touchEvent:n});var a,r;document.activeElement&&document.activeElement!==t&&document.activeElement.blur(),r=n.changedTouches[0],a=document.createEvent("MouseEvents"),a.initMouseEvent(ur.findType(t),!0,!0,e,1,r.screenX,r.screenY,r.clientX,r.clientY,!1,!1,!1,!1,0,null),a.touchEvent=n,t.dispatchEvent(a)},touchstart:function(t){if(1!==t.targetTouches.length)return!0;var n=ur.fixTarget(t.target),a=t.targetTouches[0];if(or){var r=e.getSelection();if(r.rangeCount&&!r.isCollapsed)return!0;var i=a.identifier;if(i&&isFinite(ur.lastTouchIdentifier)&&ur.lastTouchIdentifier===i)return t.preventDefault(),!1;ur.lastTouchIdentifier=i,ur.updateScrollParent(n)}ur.status="tapping",ur.startTime=Date.now(),ur.element=n,ur.pageX=a.pageX,ur.pageY=a.pageY,ur.startTime-ur.lastTime<ur.tapDelay&&t.preventDefault()},touchmove:function(e){return"tapping"!==ur.status?!0:void((ur.element!==ur.fixTarget(e.target)||ur.touchHasMoved(e))&&(ur.status=ur.element=0))},touchend:function(t){var n=ur.element,a=Date.now();if(!n||a-ur.startTime>ur.tapDelay)return!0;ur.lastTime=a;var r=ur.startTime;if(ur.status=ur.startTime=0,targetTagName=n.tagName.toLowerCase(),"label"===targetTagName){lr.fire(n,"tap",{touchEvent:t});var i=ur.findControl(n);i&&(ur.focus(n),n=i)}else if(ur.needFocus(n))return a-r>100||or&&e.top!==e&&"input"===targetTagName?(ur.element=0,!1):(ur.focus(n),ir&&ur.sendClick(n,t),!1);if(or){var o=n.tapScrollParent;if(o&&o.lastScrollTop!==o.scrollTop)return!0}ur.needClick(n)||(t.preventDefault(),ur.sendClick(n,t))},touchcancel:function(){ur.startTime=ur.element=0}};lr.add("tap",ur);var fr={events:["longtap","doubletap"],cancelPress:function(e){clearTimeout(e.pressingHandler),e.pressingHandler=null},touchstart:function(e){lr.start(e,function(t,n){t.pressingHandler=setTimeout(function(){"tapping"===t.status&&lr.fire(e.target,"longtap",{touch:n,touchEvent:e}),fr.cancelPress(t)},500),1!==e.changedTouches.length&&(t.status=0)})},touchmove:function(e){lr.move(e,function(e){e.distance>10&&e.pressingHandler&&(fr.cancelPress(e),"tapping"===e.status&&(e.status="panning"))})},touchend:function(e){lr.end(e,function(t,n){fr.cancelPress(t),"tapping"===t.status&&(t.lastTime=Date.now(),fr.lastTap&&t.lastTime-fr.lastTap.lastTime<300&&lr.fire(t.element,"doubletap",{touch:n,touchEvent:e}),fr.lastTap=t)})},touchcancel:function(e){lr.end(e,function(e){fr.cancelPress(e)})}};lr.add("press",fr);var dr={events:["swipe","swipeleft","swiperight","swipeup","swipedown"],getAngle:function(e,t){return 180*Math.atan2(t,e)/Math.PI},getDirection:function(e,t){var n=dr.getAngle(e,t);return-45>n&&n>-135?"up":n>=45&&315>n?"down":n>-45&&45>=n?"right":"left"},touchstart:function(e){lr.start(e,i)},touchmove:function(e){lr.move(e,i)},touchend:function(e){1===e.changedTouches.length&&lr.end(e,function(t,n){var a=t.distance>30&&t.distance/t.duration>.65;if(a){var r={deltaX:t.deltaX,deltaY:t.deltaY,touch:n,touchEvent:e,direction:dr.getDirection(t.deltaX,t.deltaY),isVertical:t.isVertical},i=t.element;lr.fire(i,"swipe",r),lr.fire(i,"swipe"+r.direction,r)}})}};dr.touchcancel=dr.touchend,lr.add("swipe",dr),"function"==typeof define&&define.amd&&define("avalon",[],function(){return avalon});var pr=e.avalon;return avalon.noConflict=function(t){return t&&e.avalon===avalon&&(e.avalon=pr),avalon},void 0===t&&(e.avalon=avalon),avalon});
@@ -5,7 +5,7 @@
5
5
  http://weibo.com/jslouvre/
6
6
 
7
7
  Released under the MIT license
8
- avalon.mobile.shim.js 1.5.5 built in 2015.10.30
8
+ avalon.mobile.shim.js 1.5.6 built in 2015.12.1
9
9
  mobile
10
10
  ==================================================*/
11
11
  (function(global, factory) {
@@ -31,8 +31,9 @@
31
31
  }(typeof window !== "undefined" ? window : this, function(window, noGlobal){
32
32
 
33
33
  /*********************************************************************
34
- * 全局变量及方法 *
34
+ * 全局变量及方法 *
35
35
  **********************************************************************/
36
+
36
37
  var expose = Date.now()
37
38
  //http://stackoverflow.com/questions/7290086/javascript-use-strict-and-nicks-find-global-function
38
39
  var DOC = window.document
@@ -46,6 +47,7 @@ function log() {
46
47
  console.log.apply(console, arguments)
47
48
  }
48
49
  }
50
+
49
51
  /**
50
52
  * Creates a new object without a prototype. This object is useful for lookup without having to
51
53
  * guard against prototypically inherited properties via hasOwnProperty.
@@ -61,11 +63,9 @@ function createMap() {
61
63
 
62
64
  var subscribers = "$" + expose
63
65
 
64
- var stopRepeatAssign = false
65
66
  var nullObject = {} //作用类似于noop,只用于代码防御,千万不要在它上面添加属性
66
67
  var rword = /[^, ]+/g //切割字符串为一个个小块,以空格或豆号分开它们,结合replace实现字符串的forEach
67
68
  var rw20g = /\w+/g
68
- var rcomplexType = /^(?:object|array)$/
69
69
  var rsvg = /^\[object SVG\w*Element\]$/
70
70
  var rwindow = /^\[object (?:Window|DOMWindow|global)\]$/
71
71
  var oproto = Object.prototype
@@ -81,10 +81,16 @@ var class2type = {}
81
81
  "Boolean Number String Function Array Date RegExp Object Error".replace(rword, function (name) {
82
82
  class2type["[object " + name + "]"] = name.toLowerCase()
83
83
  })
84
- function scpCompile(array){
85
- return Function.apply(noop,array)
84
+
85
+ var IEVersion = NaN
86
+ if (window.VBArray) {
87
+ IEVersion = document.documentMode || (window.XMLHttpRequest ? 7 : 6)
86
88
  }
89
+
87
90
  function noop(){}
91
+ function scpCompile(array){
92
+ return Function.apply(noop, array)
93
+ }
88
94
 
89
95
  function oneObject(array, val) {
90
96
  if (typeof array === "string") {
@@ -103,21 +109,11 @@ var generateID = function (prefix) {
103
109
  prefix = prefix || "avalon"
104
110
  return String(Math.random() + Math.random()).replace(/\d\.\d{4}/, prefix)
105
111
  }
106
- function IE() {
107
- if (window.VBArray) {
108
- var mode = document.documentMode
109
- return mode ? mode : window.XMLHttpRequest ? 7 : 6
110
- } else {
111
- return NaN
112
- }
113
- }
114
- var IEVersion = IE()
115
112
 
116
113
  avalon = function (el) { //创建jQuery式的无new 实例化结构
117
114
  return new avalon.init(el)
118
115
  }
119
116
 
120
-
121
117
  /*视浏览器情况采用最快的异步回调*/
122
118
  avalon.nextTick = new function () {// jshint ignore:line
123
119
  var tickImmediate = window.setImmediate
@@ -151,9 +147,11 @@ avalon.nextTick = new function () {// jshint ignore:line
151
147
  setTimeout(fn, 4)
152
148
  }
153
149
  }// jshint ignore:line
150
+
154
151
  /*********************************************************************
155
152
  * avalon的静态方法定义区 *
156
153
  **********************************************************************/
154
+
157
155
  avalon.init = function (el) {
158
156
  this[0] = this.element = el
159
157
  }
@@ -169,18 +167,15 @@ avalon.type = function (obj) { //取得目标的类型
169
167
  typeof obj
170
168
  }
171
169
 
172
- var isFunction = function (fn) {
170
+ avalon.isFunction = function (fn) {
173
171
  return serialize.call(fn) === "[object Function]"
174
172
  }
175
173
 
176
- avalon.isFunction = isFunction
177
-
178
174
  avalon.isWindow = function (obj) {
179
175
  return rwindow.test(serialize.call(obj))
180
176
  }
181
177
 
182
178
  /*判定是否是一个朴素的javascript对象(Object),不是DOM对象,不是BOM对象,不是自定义类的实例*/
183
-
184
179
  avalon.isPlainObject = function (obj) {
185
180
  // 简单的 typeof obj === "object"检测,会致使用isPlainObject(window)在opera下通不过
186
181
  return serialize.call(obj) === "[object Object]" && Object.getPrototypeOf(obj) === oproto
@@ -202,7 +197,7 @@ avalon.mix = avalon.fn.mix = function () {
202
197
  }
203
198
 
204
199
  //确保接受方为一个复杂的数据类型
205
- if (typeof target !== "object" && !isFunction(target)) {
200
+ if (typeof target !== "object" && !avalon.isFunction(target)) {
206
201
  target = {}
207
202
  }
208
203
 
@@ -242,14 +237,10 @@ avalon.mix = avalon.fn.mix = function () {
242
237
  return target
243
238
  }
244
239
 
245
- function _number(a, len) { //用于模拟slice, splice的效果
246
- a = Math.floor(a) || 0
247
- return a < 0 ? Math.max(len + a, 0) : Math.min(a, len);
248
- }
249
240
  avalon.mix({
250
241
  rword: rword,
251
242
  subscribers: subscribers,
252
- version: 1.55,
243
+ version: 1.56,
253
244
  ui: {},
254
245
  log: log,
255
246
  slice: function (nodes, start, end) {
@@ -397,9 +388,9 @@ var directives = avalon.directives = {}
397
388
  avalon.directive = function (name, obj) {
398
389
  bindingHandlers[name] = obj.init = (obj.init || noop)
399
390
  bindingExecutors[name] = obj.update = (obj.update || noop)
400
-
401
391
  return directives[name] = obj
402
392
  }
393
+
403
394
  /*判定是否类数组,如节点集合,纯数组,arguments与拥有非负整数的length属性的纯JS对象*/
404
395
  function isArrayLike(obj) {
405
396
  if (obj && typeof obj === "object") {
@@ -414,7 +405,6 @@ function isArrayLike(obj) {
414
405
  return false
415
406
  }
416
407
 
417
-
418
408
  // https://github.com/rsms/js-lru
419
409
  var Cache = new function() {// jshint ignore:line
420
410
  function LRU(maxLength) {
@@ -492,6 +482,7 @@ var Cache = new function() {// jshint ignore:line
492
482
  /*********************************************************************
493
483
  * DOM 底层补丁 *
494
484
  **********************************************************************/
485
+
495
486
  //safari5+是把contains方法放在Element.prototype上而不是Node.prototype
496
487
  if (!DOC.contains) {
497
488
  Node.prototype.contains = function (arg) {
@@ -632,6 +623,7 @@ if (DOC.onmousewheel === void 0) {
632
623
  }
633
624
  }
634
625
  }
626
+
635
627
  /*********************************************************************
636
628
  * 配置系统 *
637
629
  **********************************************************************/
@@ -651,6 +643,8 @@ function kernel(settings) {
651
643
  }
652
644
  return this
653
645
  }
646
+ avalon.config = kernel
647
+
654
648
  var openTag, closeTag, rexpr, rexprg, rbind, rregexp = /[-.*+?^${}()|[\]\/\\]/g
655
649
 
656
650
  function escapeRegExp(target) {
@@ -681,18 +675,20 @@ var plugins = {
681
675
  rbind = new RegExp(o + ".*?" + c + "|\\sms-")
682
676
  }
683
677
  }
684
- kernel.async =true
685
- kernel.debug = true
686
678
  kernel.plugins = plugins
687
679
  kernel.plugins['interpolate'](["{{", "}}"])
680
+
681
+ kernel.async =true
682
+ kernel.debug = true
688
683
  kernel.paths = {}
689
684
  kernel.shim = {}
690
685
  kernel.maxRepeatSize = 100
691
- avalon.config = kernel
686
+
692
687
  function $watch(expr, binding) {
693
688
  var $events = this.$events || (this.$events = {})
694
689
 
695
690
  var queue = $events[expr] || ($events[expr] = [])
691
+
696
692
  if (typeof binding === "function") {
697
693
  var backup = binding
698
694
  backup.uniqueNumber = Math.random()
@@ -708,7 +704,7 @@ function $watch(expr, binding) {
708
704
  }
709
705
 
710
706
  if (!binding.update) {
711
- if (/\w\.*\B/.test(expr)) {
707
+ if (/\w\.*\B/.test(expr) || expr === "*") {
712
708
  binding.getter = noop
713
709
  var host = this
714
710
  binding.update = function () {
@@ -741,6 +737,14 @@ function $emit(key, args) {
741
737
  }
742
738
  var arr = event[key]
743
739
  notifySubscribers(arr, args)
740
+ if (args && event["*"] && !/\./.test(key)) {
741
+ for (var sub, k = 0; sub = event["*"][k++]; ) {
742
+ try {
743
+ sub.handler.apply(this, args)
744
+ } catch (e) {
745
+ }
746
+ }
747
+ }
744
748
  var parent = this.$up
745
749
  if (parent) {
746
750
  if (this.$pathname) {
@@ -751,10 +755,10 @@ function $emit(key, args) {
751
755
  }
752
756
  } else {
753
757
  parent = this.$up
754
-
755
- if(this.$ups ){
756
- for(var i in this.$ups){
757
- $emit.call(this.$ups[i], i+"."+key, args)//以确切的值往上冒泡
758
+
759
+ if (this.$ups) {
760
+ for (var i in this.$ups) {
761
+ $emit.call(this.$ups[i], i + "." + key, args)//以确切的值往上冒泡
758
762
  }
759
763
  return
760
764
  }
@@ -775,7 +779,6 @@ function $emit(key, args) {
775
779
  }
776
780
  }
777
781
 
778
-
779
782
  function collectDependency(el, key) {
780
783
  do {
781
784
  if (el.$watch) {
@@ -794,7 +797,6 @@ function collectDependency(el, key) {
794
797
  } while (true)
795
798
  }
796
799
 
797
-
798
800
  function notifySubscribers(subs, args) {
799
801
  if (!subs)
800
802
  return
@@ -835,6 +837,7 @@ function notifySubscribers(subs, args) {
835
837
  sub.update()
836
838
  }
837
839
  }
840
+
838
841
  //avalon最核心的方法的两个方法之一(另一个是avalon.scan),返回一个ViewModel(VM)
839
842
  var VMODELS = avalon.vmodels = {} //所有vmodel都储存在这里
840
843
  avalon.define = function (source) {
@@ -914,7 +917,6 @@ function observeObject(source, options) {
914
917
  }
915
918
  }
916
919
 
917
-
918
920
  for (name in source) {
919
921
  var value = source[name]
920
922
  if (!$$skipArray[name])
@@ -954,7 +956,6 @@ function observeObject(source, options) {
954
956
  }
955
957
  }
956
958
 
957
-
958
959
  accessors["$model"] = $modelDescriptor
959
960
  $vmodel = Object.defineProperties($vmodel, accessors, source)
960
961
  function trackBy(name) {
@@ -1007,6 +1008,7 @@ function observeObject(source, options) {
1007
1008
  $vmodel.$active = true
1008
1009
  return $vmodel
1009
1010
  }
1011
+
1010
1012
  /*
1011
1013
  新的VM拥有如下私有属性
1012
1014
  $id: vm.id
@@ -1094,7 +1096,7 @@ function observe(obj, old, hasReturn, watch) {
1094
1096
  }
1095
1097
 
1096
1098
  function observeArray(array, old, watch) {
1097
- if (old) {
1099
+ if (old && old.splice) {
1098
1100
  var args = [0, old.length].concat(array)
1099
1101
  old.splice.apply(old, args)
1100
1102
  return old
@@ -1121,7 +1123,6 @@ function observeArray(array, old, watch) {
1121
1123
  })
1122
1124
  }
1123
1125
 
1124
-
1125
1126
  Object.defineProperty(array, "$model", $modelDescriptor)
1126
1127
 
1127
1128
  for (var j = 0, n = array.length; j < n; j++) {
@@ -1176,7 +1177,6 @@ var $modelDescriptor = {
1176
1177
  configurable: true
1177
1178
  }
1178
1179
 
1179
-
1180
1180
  /*********************************************************************
1181
1181
  * 监控数组(与ms-each, ms-repeat配合使用) *
1182
1182
  **********************************************************************/
@@ -1253,6 +1253,7 @@ var newProto = {
1253
1253
  return this.removeAll()
1254
1254
  }
1255
1255
  }
1256
+
1256
1257
  var _splice = arrayProto.splice
1257
1258
  arrayMethods.forEach(function (method) {
1258
1259
  var original = arrayProto[method]
@@ -1345,9 +1346,11 @@ function addTrack(track, method, args) {
1345
1346
  }
1346
1347
  Array.prototype[method].apply(track, args)
1347
1348
  }
1349
+
1348
1350
  /*********************************************************************
1349
- * 依赖调度系统 *
1351
+ * 依赖调度系统 *
1350
1352
  **********************************************************************/
1353
+
1351
1354
  //检测两个对象间的依赖关系
1352
1355
  var dependencyDetection = (function () {
1353
1356
  var outerFrames = []
@@ -1369,6 +1372,7 @@ var dependencyDetection = (function () {
1369
1372
  }
1370
1373
  };
1371
1374
  })()
1375
+
1372
1376
  //将绑定对象注入到其依赖项的订阅数组中
1373
1377
  var roneval = /^on$/
1374
1378
 
@@ -1401,7 +1405,11 @@ avalon.injectBinding = function (binding) {
1401
1405
  if (binding.type === "on") {
1402
1406
  a = binding.getter + ""
1403
1407
  } else {
1404
- a = binding.getter.apply(0, binding.args)
1408
+ try {
1409
+ a = binding.getter.apply(0, binding.args)
1410
+ } catch (ex) {
1411
+ a = null
1412
+ }
1405
1413
  }
1406
1414
  } else {
1407
1415
  a = args[0]
@@ -1448,7 +1456,6 @@ avalon.injectBinding = function (binding) {
1448
1456
  binding.update()
1449
1457
  }
1450
1458
 
1451
-
1452
1459
  //将依赖项(比它高层的访问器或构建视图刷新函数的绑定对象)注入到订阅者数组
1453
1460
  function injectDependency(list, binding) {
1454
1461
  if (binding.oneTime)
@@ -1461,7 +1468,6 @@ function injectDependency(list, binding) {
1461
1468
  }
1462
1469
  }
1463
1470
 
1464
-
1465
1471
  function getProxyIds(a, isArray) {
1466
1472
  var ret = []
1467
1473
  for (var i = 0, el; el = a[i++]; ) {
@@ -1473,6 +1479,7 @@ function getProxyIds(a, isArray) {
1473
1479
  /*********************************************************************
1474
1480
  * 定时GC回收机制 *
1475
1481
  **********************************************************************/
1482
+
1476
1483
  var disposeCount = 0
1477
1484
  var disposeQueue = avalon.$$subscribers = []
1478
1485
  var beginTime = new Date()
@@ -1579,11 +1586,10 @@ function shouldDispose(el) {
1579
1586
  return el.msRetain ? 0 : (el.nodeType === 1 ? !root.contains(el) : !avalon.contains(root, el))
1580
1587
  }
1581
1588
 
1582
-
1583
-
1584
1589
  /************************************************************************
1585
- * HTML处理(parseHTML, innerHTML, clearHTML) *
1586
- **************************************************************************/
1590
+ * HTML处理(parseHTML, innerHTML, clearHTML) *
1591
+ *************************************************************************/
1592
+
1587
1593
  //parseHTML的辅助变量
1588
1594
  var tagHooks = new function() {// jshint ignore:line
1589
1595
  avalon.mix(this, {
@@ -1601,15 +1607,16 @@ var tagHooks = new function() {// jshint ignore:line
1601
1607
  this.tbody = this.tfoot = this.colgroup = this.caption = this.thead
1602
1608
  this.th = this.td
1603
1609
  }// jshint ignore:line
1604
-
1605
1610
  String("circle,defs,ellipse,image,line,path,polygon,polyline,rect,symbol,text,use").replace(rword, function(tag) {
1606
1611
  tagHooks[tag] = tagHooks.g //处理SVG
1607
1612
  })
1613
+
1608
1614
  var rtagName = /<([\w:]+)/
1609
1615
  var rxhtml = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig
1610
1616
  var scriptTypes = oneObject(["", "text/javascript", "text/ecmascript", "application/ecmascript", "application/javascript"])
1611
1617
  var script = DOC.createElement("script")
1612
1618
  var rhtml = /<|&#?\w+;/
1619
+
1613
1620
  avalon.parseHTML = function(html) {
1614
1621
  var fragment = avalonFragment.cloneNode(false)
1615
1622
  if (typeof html !== "string" ) {
@@ -1659,7 +1666,7 @@ avalon.clearHTML = function(node) {
1659
1666
  }
1660
1667
 
1661
1668
  /*********************************************************************
1662
- * avalon的原型方法定义区 *
1669
+ * avalon的原型方法定义区 *
1663
1670
  **********************************************************************/
1664
1671
 
1665
1672
  function hyphen(target) {
@@ -1680,7 +1687,7 @@ function camelize(target) {
1680
1687
  "add,remove".replace(rword, function (method) {
1681
1688
  avalon.fn[method + "Class"] = function (cls) {
1682
1689
  var el = this[0]
1683
- //https://developer.mozilla.org/zh-CN/docs/Mozilla/Firefox/Releases/26
1690
+ //https://developer.mozilla.org/zh-CN/docs/Mozilla/Firefox/Releases/26
1684
1691
  if (cls && typeof cls === "string" && el && el.nodeType === 1) {
1685
1692
  cls.replace(/\S+/g, function (c) {
1686
1693
  el.classList[method](c)
@@ -1716,24 +1723,24 @@ avalon.fn.mix({
1716
1723
  data: function (name, value) {
1717
1724
  name = "data-" + hyphen(name || "")
1718
1725
  switch (arguments.length) {
1719
- case 2:
1720
- this.attr(name, value)
1721
- return this
1722
- case 1:
1723
- var val = this.attr(name)
1724
- return parseData(val)
1725
- case 0:
1726
- var ret = {}
1727
- ap.forEach.call(this[0].attributes, function (attr) {
1728
- if (attr) {
1729
- name = attr.name
1730
- if (!name.indexOf("data-")) {
1731
- name = camelize(name.slice(5))
1732
- ret[name] = parseData(attr.value)
1726
+ case 2:
1727
+ this.attr(name, value)
1728
+ return this
1729
+ case 1:
1730
+ var val = this.attr(name)
1731
+ return parseData(val)
1732
+ case 0:
1733
+ var ret = {}
1734
+ ap.forEach.call(this[0].attributes, function (attr) {
1735
+ if (attr) {
1736
+ name = attr.name
1737
+ if (!name.indexOf("data-")) {
1738
+ name = camelize(name.slice(5))
1739
+ ret[name] = parseData(attr.value)
1740
+ }
1733
1741
  }
1734
- }
1735
- })
1736
- return ret
1742
+ })
1743
+ return ret
1737
1744
  }
1738
1745
  },
1739
1746
  removeData: function (name) {
@@ -1753,11 +1760,11 @@ avalon.fn.mix({
1753
1760
  },
1754
1761
  position: function () {
1755
1762
  var offsetParent, offset,
1756
- elem = this[0],
1757
- parentOffset = {
1758
- top: 0,
1759
- left: 0
1760
- };
1763
+ elem = this[0],
1764
+ parentOffset = {
1765
+ top: 0,
1766
+ left: 0
1767
+ };
1761
1768
  if (!elem) {
1762
1769
  return
1763
1770
  }
@@ -1771,7 +1778,7 @@ avalon.fn.mix({
1771
1778
  }
1772
1779
  parentOffset.top += avalon.css(offsetParent[0], "borderTopWidth", true)
1773
1780
  parentOffset.left += avalon.css(offsetParent[0], "borderLeftWidth", true)
1774
- // Subtract offsetParent scroll positions
1781
+ // Subtract offsetParent scroll positions
1775
1782
  parentOffset.top -= offsetParent.scrollTop()
1776
1783
  parentOffset.left -= offsetParent.scrollLeft()
1777
1784
  }
@@ -1821,18 +1828,18 @@ if (root.dataset) {
1821
1828
  name = name && camelize(name)
1822
1829
  var dataset = this[0].dataset
1823
1830
  switch (arguments.length) {
1824
- case 2:
1825
- dataset[name] = val
1826
- return this
1827
- case 1:
1828
- val = dataset[name]
1829
- return parseData(val)
1830
- case 0:
1831
- var ret = createMap()
1832
- for (name in dataset) {
1833
- ret[name] = parseData(dataset[name])
1834
- }
1835
- return ret
1831
+ case 2:
1832
+ dataset[name] = val
1833
+ return this
1834
+ case 1:
1835
+ val = dataset[name]
1836
+ return parseData(val)
1837
+ case 0:
1838
+ var ret = createMap()
1839
+ for (name in dataset) {
1840
+ ret[name] = parseData(dataset[name])
1841
+ }
1842
+ return ret
1836
1843
  }
1837
1844
  }
1838
1845
  }
@@ -1844,19 +1851,28 @@ function parseData(data) {
1844
1851
  if (typeof data === "object")
1845
1852
  return data
1846
1853
  data = data === "true" ? true :
1847
- data === "false" ? false :
1848
- data === "null" ? null : +data + "" === data ? +data : rbrace.test(data) ? JSON.parse(data) : data
1849
- } catch (e) {}
1854
+ data === "false" ? false :
1855
+ data === "null" ? null : +data + "" === data ? +data : rbrace.test(data) ? JSON.parse(data) : data
1856
+ } catch (e) {
1857
+ }
1850
1858
  return data
1851
1859
  }
1860
+
1861
+ avalon.fireDom = function (elem, type, opts) {
1862
+ var hackEvent = DOC.createEvent("Events");
1863
+ hackEvent.initEvent(type, true, true)
1864
+ avalon.mix(hackEvent, opts)
1865
+ elem.dispatchEvent(hackEvent)
1866
+ }
1867
+
1852
1868
  avalon.each({
1853
1869
  scrollLeft: "pageXOffset",
1854
1870
  scrollTop: "pageYOffset"
1855
1871
  }, function (method, prop) {
1856
1872
  avalon.fn[method] = function (val) {
1857
1873
  var node = this[0] || {},
1858
- win = getWindow(node),
1859
- top = method === "scrollTop"
1874
+ win = getWindow(node),
1875
+ top = method === "scrollTop"
1860
1876
  if (!arguments.length) {
1861
1877
  return win ? win[prop] : node[method]
1862
1878
  } else {
@@ -1920,7 +1936,7 @@ cssHooks["opacity:get"] = function (node) {
1920
1936
  cssHooks[name + ":get"] = function (node) {
1921
1937
  var computed = cssHooks["@:get"](node, name)
1922
1938
  return /px$/.test(computed) ? computed :
1923
- avalon(node).position()[name] + "px"
1939
+ avalon(node).position()[name] + "px"
1924
1940
  }
1925
1941
  })
1926
1942
  var cssShow = {
@@ -1953,9 +1969,9 @@ function showHidden(node, array) {
1953
1969
 
1954
1970
  "Width,Height".replace(rword, function (name) { //fix 481
1955
1971
  var method = name.toLowerCase(),
1956
- clientProp = "client" + name,
1957
- scrollProp = "scroll" + name,
1958
- offsetProp = "offset" + name
1972
+ clientProp = "client" + name,
1973
+ scrollProp = "scroll" + name,
1974
+ offsetProp = "offset" + name
1959
1975
  cssHooks[method + ":get"] = function (node, which, override) {
1960
1976
  var boxSizing = -4
1961
1977
  if (typeof override === "number") {
@@ -1978,7 +1994,7 @@ function showHidden(node, array) {
1978
1994
  var hidden = [];
1979
1995
  showHidden(node, hidden);
1980
1996
  var val = cssHooks[method + ":get"](node)
1981
- for (var i = 0, obj; obj = hidden[i++];) {
1997
+ for (var i = 0, obj; obj = hidden[i++]; ) {
1982
1998
  node = obj.node
1983
1999
  for (var n in obj) {
1984
2000
  if (typeof obj[n] === "string") {
@@ -1996,9 +2012,9 @@ function showHidden(node, array) {
1996
2012
  }
1997
2013
  if (node.nodeType === 9) { //取得页面尺寸
1998
2014
  var doc = node.documentElement
1999
- //FF chrome html.scrollHeight< body.scrollHeight
2000
- //IE 标准模式 : html.scrollHeight> body.scrollHeight
2001
- //IE 怪异模式 : html.scrollHeight 最大等于可视窗口多一点?
2015
+ //FF chrome html.scrollHeight< body.scrollHeight
2016
+ //IE 标准模式 : html.scrollHeight> body.scrollHeight
2017
+ //IE 怪异模式 : html.scrollHeight 最大等于可视窗口多一点?
2002
2018
  return Math.max(node.body[scrollProp], doc[scrollProp], node.body[offsetProp], doc[offsetProp], doc[clientProp])
2003
2019
  }
2004
2020
  return cssHooks[method + "&get"](node)
@@ -2014,28 +2030,28 @@ function showHidden(node, array) {
2014
2030
  }
2015
2031
  })
2016
2032
  avalon.fn.offset = function () { //取得距离页面左右角的坐标
2017
- var node = this[0]
2018
- try {
2019
- var rect = node.getBoundingClientRect()
2020
- // Make sure element is not hidden (display: none) or disconnected
2021
- // https://github.com/jquery/jquery/pull/2043/files#r23981494
2022
- if (rect.width || rect.height || node.getClientRects().length) {
2023
- var doc = node.ownerDocument
2024
- var root = doc.documentElement
2025
- var win = doc.defaultView
2026
- return {
2027
- top: rect.top + win.pageYOffset - root.clientTop,
2028
- left: rect.left + win.pageXOffset - root.clientLeft
2029
- }
2030
- }
2031
- } catch (e) {
2033
+ var node = this[0]
2034
+ try {
2035
+ var rect = node.getBoundingClientRect()
2036
+ // Make sure element is not hidden (display: none) or disconnected
2037
+ // https://github.com/jquery/jquery/pull/2043/files#r23981494
2038
+ if (rect.width || rect.height || node.getClientRects().length) {
2039
+ var doc = node.ownerDocument
2040
+ var root = doc.documentElement
2041
+ var win = doc.defaultView
2032
2042
  return {
2033
- left: 0,
2034
- top: 0
2043
+ top: rect.top + win.pageYOffset - root.clientTop,
2044
+ left: rect.left + win.pageXOffset - root.clientLeft
2035
2045
  }
2036
2046
  }
2047
+ } catch (e) {
2048
+ return {
2049
+ left: 0,
2050
+ top: 0
2051
+ }
2037
2052
  }
2038
- //=============================val相关=======================
2053
+ }
2054
+ //=============================val相关=======================
2039
2055
 
2040
2056
  function getValType(elem) {
2041
2057
  var ret = elem.tagName.toLowerCase()
@@ -2044,16 +2060,16 @@ function getValType(elem) {
2044
2060
  var valHooks = {
2045
2061
  "select:get": function (node, value) {
2046
2062
  var option, options = node.options,
2047
- index = node.selectedIndex,
2048
- one = node.type === "select-one" || index < 0,
2049
- values = one ? null : [],
2050
- max = one ? index + 1 : options.length,
2051
- i = index < 0 ? max : one ? index : 0
2063
+ index = node.selectedIndex,
2064
+ one = node.type === "select-one" || index < 0,
2065
+ values = one ? null : [],
2066
+ max = one ? index + 1 : options.length,
2067
+ i = index < 0 ? max : one ? index : 0
2052
2068
  for (; i < max; i++) {
2053
2069
  option = options[i]
2054
- //旧式IE在reset后不会改变selected,需要改用i === index判定
2055
- //我们过滤所有disabled的option元素,但在safari5下,如果设置select为disable,那么其所有孩子都disable
2056
- //因此当一个元素为disable,需要检测其是否显式设置了disable及其父节点的disable情况
2070
+ //旧式IE在reset后不会改变selected,需要改用i === index判定
2071
+ //我们过滤所有disabled的option元素,但在safari5下,如果设置select为disable,那么其所有孩子都disable
2072
+ //因此当一个元素为disable,需要检测其是否显式设置了disable及其父节点的disable情况
2057
2073
  if ((option.selected || i === index) && !option.disabled) {
2058
2074
  value = option.value
2059
2075
  if (one) {
@@ -2067,7 +2083,7 @@ var valHooks = {
2067
2083
  },
2068
2084
  "select:set": function (node, values, optionSet) {
2069
2085
  values = [].concat(values) //强制转换为数组
2070
- for (var i = 0, el; el = node.options[i++];) {
2086
+ for (var i = 0, el; el = node.options[i++]; ) {
2071
2087
  if ((el.selected = values.indexOf(el.value) > -1)) {
2072
2088
  optionSet = true
2073
2089
  }
@@ -2090,13 +2106,13 @@ var keys = ["break,case,catch,continue,debugger,default,delete,do,else,false",
2090
2106
  keys.replace(/\w+/g, function (a) {
2091
2107
  keyMap[a] = true
2092
2108
  })
2109
+
2093
2110
  var ridentStart = /[a-z_$]/i
2094
2111
  var rwhiteSpace = /[\s\uFEFF\xA0]/
2095
2112
  function getIdent(input, lastIndex) {
2096
2113
  var result = []
2097
2114
  var subroutine = !!lastIndex
2098
2115
  lastIndex = lastIndex || 0
2099
-
2100
2116
  //将表达式中的标识符抽取出来
2101
2117
  var state = "unknown"
2102
2118
  var variable = ""
@@ -2180,12 +2196,14 @@ function getIdent(input, lastIndex) {
2180
2196
  addVar(result, variable)
2181
2197
  return result
2182
2198
  }
2199
+
2183
2200
  function addVar(array, element) {
2184
2201
  if (element && !keyMap[element]) {
2185
2202
  array.push(element)
2186
2203
  return true
2187
2204
  }
2188
2205
  }
2206
+
2189
2207
  function addAssign(vars, vmodel, name, binding) {
2190
2208
  var ret = [],
2191
2209
  prefix = " = " + name + "."
@@ -2207,6 +2225,7 @@ function addAssign(vars, vmodel, name, binding) {
2207
2225
  }
2208
2226
  return ret
2209
2227
  }
2228
+
2210
2229
  var rproxy = /(\$proxy\$[a-z]+)\d+$/
2211
2230
  var variablePool = new Cache(218)
2212
2231
  //缓存求值函数,以便多次利用
@@ -2309,7 +2328,6 @@ function parseExpr(expr, vmodels, binding) {
2309
2328
  return evaluatorPool.put(exprId, getter)
2310
2329
 
2311
2330
  }
2312
- //========
2313
2331
 
2314
2332
  function normalizeExpr(code) {
2315
2333
  var hasExpr = rexpr.test(code) //比如ms-class="width{{w}}"的情况
@@ -2354,10 +2372,13 @@ function parseFilter(filters) {
2354
2372
  /* jshint ignore:end */
2355
2373
 
2356
2374
  }
2375
+
2357
2376
  /*********************************************************************
2358
2377
  * 编译系统 *
2359
2378
  **********************************************************************/
2379
+
2360
2380
  var quote = JSON.stringify
2381
+
2361
2382
  /*********************************************************************
2362
2383
  * 扫描系统 *
2363
2384
  **********************************************************************/
@@ -2383,7 +2404,6 @@ function checkScan(elem, callback, innerHTML) {
2383
2404
  })
2384
2405
  }
2385
2406
 
2386
-
2387
2407
  function createSignalTower(elem, vmodel) {
2388
2408
  var id = elem.getAttribute("avalonctrl") || vmodel.$id
2389
2409
  elem.setAttribute("avalonctrl", id)
@@ -2444,6 +2464,26 @@ function bindingSorter(a, b) {
2444
2464
  return a.priority - b.priority
2445
2465
  }
2446
2466
 
2467
+ var rnoCollect = /^(ms-\S+|data-\S+|on[a-z]+|id|style|class)$/
2468
+ var ronattr = /^on\-[\w-]+$/
2469
+ function getOptionsFromTag(elem, vmodels) {
2470
+ var attributes = elem.attributes
2471
+ var ret = {}
2472
+ for (var i = 0, attr; attr = attributes[i++]; ) {
2473
+ var name = attr.name
2474
+ if (attr.specified && !rnoCollect.test(name)) {
2475
+ var camelizeName = camelize(attr.name)
2476
+ if (/^on\-[\w-]+$/.test(name)) {
2477
+ ret[camelizeName] = getBindingCallback(elem, name, vmodels)
2478
+ } else {
2479
+ ret[camelizeName] = parseData(attr.value)
2480
+ }
2481
+ }
2482
+
2483
+ }
2484
+ return ret
2485
+ }
2486
+
2447
2487
  function scanAttr(elem, vmodels, match) {
2448
2488
  var scanNode = true
2449
2489
  if (vmodels.length) {
@@ -2531,28 +2571,21 @@ function scanAttr(elem, vmodels, match) {
2531
2571
  var rnoscanAttrBinding = /^if|widget|repeat$/
2532
2572
  var rnoscanNodeBinding = /^each|with|html|include$/
2533
2573
 
2534
- var rnoCollect = /^(ms-\S+|data-\S+|on[a-z]+|id|style|class|tabindex)$/
2535
- function getOptionsFromTag(elem) {
2536
- var attributes = elem.attributes
2537
- var ret = {}
2538
- for (var i = 0, attr; attr = attributes[i++]; ) {
2539
- if (attr.specified && !rnoCollect.test(attr.name)) {
2540
- ret[camelize(attr.name)] = parseData(attr.value)
2541
- }
2542
- }
2543
- return ret
2544
- }
2545
2574
  function scanNodeList(parent, vmodels) {
2546
2575
  var nodes = avalon.slice(parent.childNodes)
2547
2576
  scanNodeArray(nodes, vmodels)
2548
2577
  }
2549
2578
 
2550
-
2551
2579
  function scanNodeArray(nodes, vmodels) {
2580
+ function _delay_component(name) {
2581
+ setTimeout(function () {
2582
+ avalon.component(name)
2583
+ })
2584
+ }
2552
2585
  for (var i = 0, node; node = nodes[i++]; ) {
2553
2586
  switch (node.nodeType) {
2554
2587
  case 1:
2555
- var elem = node, fn
2588
+ var elem = node
2556
2589
  if (!elem.msResolved && elem.parentNode && elem.parentNode.nodeType === 1) {
2557
2590
  var library = isWidget(elem)
2558
2591
  if (library) {
@@ -2567,11 +2600,14 @@ function scanNodeArray(nodes, vmodels) {
2567
2600
  name: "widget"
2568
2601
  })
2569
2602
  if (avalon.components[fullName]) {
2570
- avalon.component(fullName)
2603
+ //确保所有ms-attr-name扫描完再处理
2604
+ _delay_component(fullName)
2571
2605
  }
2572
2606
  }
2573
2607
  }
2574
- scanTag(node, vmodels) //扫描元素节点
2608
+
2609
+ scanTag(node, vmodels) //扫描元素节点
2610
+
2575
2611
  if (node.msHasEvent) {
2576
2612
  avalon.fireDom(node, "datasetchanged", {
2577
2613
  bubble: node.msHasEvent
@@ -2589,7 +2625,6 @@ function scanNodeArray(nodes, vmodels) {
2589
2625
  }
2590
2626
  }
2591
2627
 
2592
-
2593
2628
  function scanTag(elem, vmodels, node) {
2594
2629
  //扫描顺序 ms-skip(0) --> ms-important(1) --> ms-controller(2) --> ms-if(10) --> ms-repeat(100)
2595
2630
  //--> ms-if-loop(110) --> ms-attr(970) ...--> ms-each(1400)-->ms-with(1500)--〉ms-duplex(2000)垫后
@@ -2610,6 +2645,12 @@ function scanTag(elem, vmodels, node) {
2610
2645
  createSignalTower(elem, newVmodel)
2611
2646
  }
2612
2647
  scanAttr(elem, vmodels) //扫描特性节点
2648
+
2649
+ if (newVmodel) {
2650
+ setTimeout(function () {
2651
+ newVmodel.$fire("ms-scan-end", elem)
2652
+ })
2653
+ }
2613
2654
  }
2614
2655
  var rhasHtml = /\|\s*html(?:\b|$)/,
2615
2656
  r11a = /\|\|/g,
@@ -2700,8 +2741,6 @@ function scanText(textNode, vmodels, index) {
2700
2741
  }
2701
2742
  }
2702
2743
 
2703
-
2704
-
2705
2744
  //使用来自游戏界的双缓冲技术,减少对视图的冗余刷新
2706
2745
  var Buffer = function () {
2707
2746
  this.queue = []
@@ -2726,6 +2765,7 @@ Buffer.prototype = {
2726
2765
  }
2727
2766
 
2728
2767
  var buffer = new Buffer()
2768
+
2729
2769
  var componentQueue = []
2730
2770
  var widgetList = []
2731
2771
  var componentHooks = {
@@ -2744,7 +2784,6 @@ var componentHooks = {
2744
2784
  }
2745
2785
  }
2746
2786
 
2747
-
2748
2787
  avalon.components = {}
2749
2788
  avalon.component = function (name, opts) {
2750
2789
  if (opts) {
@@ -2756,15 +2795,24 @@ avalon.component = function (name, opts) {
2756
2795
  i--;
2757
2796
 
2758
2797
  (function (host, hooks, elem, widget) {
2759
-
2798
+ //如果elem已从Document里移除,直接返回
2799
+ //issuse : https://github.com/RubyLouvre/avalon2/issues/40
2800
+ if (!avalon.contains(DOC, elem) || elem.msResolved) {
2801
+ avalon.Array.remove(componentQueue, host)
2802
+ return
2803
+ }
2804
+
2760
2805
  var dependencies = 1
2761
2806
  var library = host.library
2762
2807
  var global = avalon.libraries[library] || componentHooks
2763
2808
 
2764
2809
  //===========收集各种配置=======
2765
-
2766
- var elemOpts = getOptionsFromTag(elem)
2767
- var vmOpts = getOptionsFromVM(host.vmodels, elemOpts.config || host.widget)
2810
+ if (elem.getAttribute("ms-attr-identifier")) {
2811
+ //如果还没有解析完,就延迟一下 #1155
2812
+ return
2813
+ }
2814
+ var elemOpts = getOptionsFromTag(elem, host.vmodels)
2815
+ var vmOpts = getOptionsFromVM(host.vmodels, elemOpts.config || host.fullName)
2768
2816
  var $id = elemOpts.$id || elemOpts.identifier || generateID(widget)
2769
2817
  delete elemOpts.config
2770
2818
  delete elemOpts.$id
@@ -2794,7 +2842,7 @@ avalon.component = function (name, opts) {
2794
2842
  delete componentDefinition.$construct
2795
2843
 
2796
2844
  var vmodel = avalon.define(componentDefinition) || {}
2797
- elem.msResolved = 1
2845
+ elem.msResolved = 1 //防止二进扫描此元素
2798
2846
  vmodel.$init(vmodel, elem)
2799
2847
  global.$init(vmodel, elem)
2800
2848
  var nodes = elem.childNodes
@@ -2811,7 +2859,6 @@ avalon.component = function (name, opts) {
2811
2859
  }
2812
2860
  }
2813
2861
 
2814
-
2815
2862
  if (vmodel.$$template) {
2816
2863
  avalon.clearHTML(elem)
2817
2864
  elem.innerHTML = vmodel.$$template(keepTemplate)
@@ -2830,12 +2877,17 @@ avalon.component = function (name, opts) {
2830
2877
  }
2831
2878
  }
2832
2879
  slots = null
2833
- var child = elem.firstChild
2880
+ var child = elem.children[0] || elem.firstChild
2834
2881
  if (keepReplace) {
2835
- child = elem.firstChild
2836
2882
  elem.parentNode.replaceChild(child, elem)
2837
2883
  child.msResolved = 1
2884
+ var cssText = elem.style.cssText
2885
+ var className = elem.className
2838
2886
  elem = host.element = child
2887
+ elem.style.cssText += ";"+ cssText
2888
+ if (className) {
2889
+ avalon(elem).addClass(className)
2890
+ }
2839
2891
  }
2840
2892
  if (keepContainer) {
2841
2893
  keepContainer.appendChild(elem)
@@ -2858,7 +2910,7 @@ avalon.component = function (name, opts) {
2858
2910
  if (dependencies === 0) {
2859
2911
  var id1 = setTimeout(function () {
2860
2912
  clearTimeout(id1)
2861
-
2913
+
2862
2914
  vmodel.$ready(vmodel, elem, host.vmodels)
2863
2915
  global.$ready(vmodel, elem, host.vmodels)
2864
2916
  }, children ? Math.max(children * 17, 100) : 17)
@@ -2882,7 +2934,6 @@ avalon.component = function (name, opts) {
2882
2934
  }
2883
2935
  })
2884
2936
  scanTag(elem, [vmodel].concat(host.vmodels))
2885
-
2886
2937
  avalon.vmodels[vmodel.$id] = vmodel
2887
2938
  if (!elem.childNodes.length) {
2888
2939
  avalon.fireDom(elem, "datasetchanged", {library: library, vm: vmodel, childReady: -1})
@@ -2893,28 +2944,12 @@ avalon.component = function (name, opts) {
2893
2944
  }, 17)
2894
2945
  }
2895
2946
 
2896
-
2897
2947
  })(obj, avalon.components[name], obj.element, obj.widget)// jshint ignore:line
2898
2948
 
2899
-
2900
2949
  }
2901
2950
  }
2902
2951
  }
2903
2952
 
2904
- avalon.fireDom = function (elem, type, opts) {
2905
- if (DOC.createEvent) {
2906
- var hackEvent = DOC.createEvent("Events");
2907
- hackEvent.initEvent(type, true, true, opts)
2908
- avalon.mix(hackEvent, opts)
2909
-
2910
- elem.dispatchEvent(hackEvent)
2911
- } else if (root.contains(elem)) {//IE6-8触发事件必须保证在DOM树中,否则报"SCRIPT16389: 未指明的错误"
2912
- hackEvent = DOC.createEventObject()
2913
- avalon.mix(hackEvent, opts)
2914
- elem.fireEvent("on" + type, hackEvent)
2915
- }
2916
- }
2917
-
2918
2953
 
2919
2954
  function getOptionsFromVM(vmodels, pre) {
2920
2955
  if (pre) {
@@ -2929,8 +2964,6 @@ function getOptionsFromVM(vmodels, pre) {
2929
2964
  return {}
2930
2965
  }
2931
2966
 
2932
-
2933
-
2934
2967
  avalon.libraries = []
2935
2968
  avalon.library = function (name, opts) {
2936
2969
  if (DOC.namespaces) {
@@ -2944,19 +2977,20 @@ avalon.library = function (name, opts) {
2944
2977
  }
2945
2978
 
2946
2979
  avalon.library("ms")
2947
- /*
2948
- broswer nodeName scopeName localName
2949
- IE9 ONI:BUTTON oni button
2950
- IE10 ONI:BUTTON undefined oni:button
2951
- IE8 button oni undefined
2952
- chrome ONI:BUTTON undefined oni:button
2953
2980
 
2954
- */
2981
+ /*
2982
+ broswer nodeName scopeName localName
2983
+ IE9 ONI:BUTTON oni button
2984
+ IE10 ONI:BUTTON undefined oni:button
2985
+ IE8 button oni undefined
2986
+ chrome ONI:BUTTON undefined oni:button
2987
+
2988
+ */
2955
2989
  function isWidget(el) { //如果为自定义标签,返回UI库的名字
2956
- if(el.scopeName && el.scopeName !== "HTML" ){
2990
+ if (el.scopeName && el.scopeName !== "HTML") {
2957
2991
  return el.scopeName
2958
2992
  }
2959
- var fullName = el.nodeName.toLowerCase()
2993
+ var fullName = el.nodeName.toLowerCase()
2960
2994
  var index = fullName.indexOf(":")
2961
2995
  if (index > 0) {
2962
2996
  return fullName.slice(0, index)
@@ -2965,7 +2999,6 @@ function isWidget(el) { //如果为自定义标签,返回UI库的名字
2965
2999
  //各种MVVM框架在大型表格下的性能测试
2966
3000
  // https://github.com/RubyLouvre/avalon/issues/859
2967
3001
 
2968
-
2969
3002
  var bools = ["autofocus,autoplay,async,allowTransparency,checked,controls",
2970
3003
  "declare,disabled,defer,defaultChecked,defaultSelected",
2971
3004
  "contentEditable,isMap,loop,multiple,noHref,noResize,noShade",
@@ -3065,8 +3098,6 @@ var attrDir = avalon.directive("attr", {
3065
3098
  }
3066
3099
  })
3067
3100
 
3068
-
3069
-
3070
3101
  //这几个指令都可以使用插值表达式,如ms-src="aaa/{{b}}/{{c}}.html"
3071
3102
  "title,alt,src,value,css,include,href".replace(rword, function (name) {
3072
3103
  directives[name] = attrDir
@@ -3140,7 +3171,6 @@ avalon.directive("class", {
3140
3171
  directives[name] = directives["class"]
3141
3172
  })
3142
3173
 
3143
-
3144
3174
  //ms-controller绑定已经在scanTag 方法中实现
3145
3175
  avalon.directive("css", {
3146
3176
  init: directives.attr.init,
@@ -3210,7 +3240,7 @@ var duplexBinding = avalon.directive("duplex", {
3210
3240
  "input"
3211
3241
  }
3212
3242
  //===================绑定事件======================
3213
- binding.bound = function (type, callback) {
3243
+ var bound = binding.bound = function (type, callback) {
3214
3244
  elem.addEventListener(type, callback, false)
3215
3245
  var old = binding.rollback
3216
3246
  binding.rollback = function () {
@@ -3219,34 +3249,35 @@ var duplexBinding = avalon.directive("duplex", {
3219
3249
  old && old()
3220
3250
  }
3221
3251
  }
3222
- var composing = false
3223
3252
  function callback(value) {
3224
3253
  binding.changed.call(this, value, binding)
3225
3254
  }
3255
+ var composing = false
3226
3256
  function compositionStart() {
3227
3257
  composing = true
3228
3258
  }
3229
3259
  function compositionEnd() {
3230
3260
  composing = false
3231
3261
  }
3232
- var updateVModel = function () {
3262
+ var updateVModel = function (e) {
3233
3263
  var val = elem.value //防止递归调用形成死循环
3234
3264
  if (composing || val === binding.oldValue || binding.pipe === null) //处理中文输入法在minlengh下引发的BUG
3235
3265
  return
3236
3266
  var lastValue = binding.pipe(val, binding, "get")
3267
+ binding.oldValue = val
3237
3268
  binding.setter(lastValue)
3238
3269
  callback.call(elem, lastValue)
3239
3270
  }
3240
3271
  switch (binding.xtype) {
3241
3272
  case "radio":
3242
- binding.bound("click", function () {
3273
+ bound("click", function () {
3243
3274
  var lastValue = binding.pipe(elem.value, binding, "get")
3244
3275
  binding.setter(lastValue)
3245
3276
  callback.call(elem, lastValue)
3246
3277
  })
3247
3278
  break
3248
3279
  case "checkbox":
3249
- binding.bound("change", function () {
3280
+ bound("change", function () {
3250
3281
  var method = elem.checked ? "ensure" : "remove"
3251
3282
  var array = binding.getter.apply(0, binding.vmodels)
3252
3283
  if (!Array.isArray(array)) {
@@ -3259,25 +3290,19 @@ var duplexBinding = avalon.directive("duplex", {
3259
3290
  })
3260
3291
  break
3261
3292
  case "change":
3262
- binding.bound("change", updateVModel)
3293
+ bound("change", updateVModel)
3263
3294
  break
3264
3295
  case "input":
3265
- if (!IEVersion) { // W3C
3266
- binding.bound("input", updateVModel)
3267
- //非IE浏览器才用这个
3268
- binding.bound("compositionstart", compositionStart)
3269
- binding.bound("compositionend", compositionEnd)
3270
- binding.bound("DOMAutoComplete", updateVModel)
3271
- } else { //onpropertychange事件无法区分是程序触发还是用户触发
3272
- // IE下通过selectionchange事件监听IE9+点击input右边的X的清空行为,及粘贴,剪切,删除行为
3273
- binding.bound("input", updateVModel) //IE9使用propertychange无法监听中文输入改动
3274
- //http://www.cnblogs.com/rubylouvre/archive/2013/02/17/2914604.html
3275
- //http://www.matts411.com/post/internet-explorer-9-oninput/
3296
+ bound("input", updateVModel)
3297
+ bound("keyup", updateVModel)
3298
+ if (!IEVersion) {
3299
+ bound("compositionstart", compositionStart)
3300
+ bound("compositionend", compositionEnd)
3301
+ bound("DOMAutoComplete", updateVModel)
3276
3302
  }
3277
-
3278
3303
  break
3279
3304
  case "select":
3280
- binding.bound("change", function () {
3305
+ bound("change", function () {
3281
3306
  var val = avalon(elem).val() //字符串或字符串数组
3282
3307
  if (Array.isArray(val)) {
3283
3308
  val = val.map(function (v) {
@@ -3294,7 +3319,7 @@ var duplexBinding = avalon.directive("duplex", {
3294
3319
  }
3295
3320
  }
3296
3321
  })
3297
- binding.bound("datasetchanged", function (e) {
3322
+ bound("datasetchanged", function (e) {
3298
3323
  if (e.bubble === "selectDuplex") {
3299
3324
  var value = binding._value
3300
3325
  var curValue = Array.isArray(value) ? value.map(String) : value + ""
@@ -3307,17 +3332,17 @@ var duplexBinding = avalon.directive("duplex", {
3307
3332
  }
3308
3333
  if (binding.xtype === "input" && !rnoduplexInput.test(elem.type)) {
3309
3334
  if (elem.type !== "hidden") {
3310
- binding.bound("focus", function () {
3335
+ bound("focus", function () {
3311
3336
  elem.msFocus = true
3312
3337
  })
3313
- binding.bound("blur", function () {
3338
+ bound("blur", function () {
3314
3339
  elem.msFocus = false
3315
3340
  })
3316
3341
  }
3317
3342
  elem.avalonSetter = updateVModel //#765
3318
3343
  watchValueInTimer(function () {
3319
3344
  if (root.contains(elem)) {
3320
- if (!elem.msFocus && binding.oldValue !== elem.value) {
3345
+ if (!elem.msFocus) {
3321
3346
  updateVModel()
3322
3347
  }
3323
3348
  } else if (!elem.msRetain) {
@@ -3356,7 +3381,7 @@ var duplexBinding = avalon.directive("duplex", {
3356
3381
  }
3357
3382
  }
3358
3383
  elem.value = this.oldValue = curValue
3359
- if (fixCaret) {
3384
+ if (fixCaret && !elem.readOnly) {
3360
3385
  elem.selectionStart = elem.selectionEnd = pos
3361
3386
  }
3362
3387
  }
@@ -3383,9 +3408,6 @@ var duplexBinding = avalon.directive("duplex", {
3383
3408
  }
3384
3409
  break
3385
3410
  }
3386
- if (binding.xtype !== "select") {
3387
- binding.changed.call(elem, curValue, binding)
3388
- }
3389
3411
  }
3390
3412
  })
3391
3413
 
@@ -3674,7 +3696,7 @@ function upperFirstChar(str) {
3674
3696
  }
3675
3697
  var effectBuffer = new Buffer()
3676
3698
  function Effect() {
3677
- }// 动画实例,做成类的形式,是为了共用所有原型方法
3699
+ }//动画实例,做成类的形式,是为了共用所有原型方法
3678
3700
 
3679
3701
  Effect.prototype = {
3680
3702
  contrustor: Effect,
@@ -3697,7 +3719,7 @@ Effect.prototype = {
3697
3719
  callEffectHook(me, "abort" + upperFirstChar(oppositeName))
3698
3720
  callEffectHook(me, "before" + upperFirstChar(name))
3699
3721
  if (!isLeave)
3700
- before(el) //  这里可能做插入DOM树的操作,因此必须在修改类名前执行
3722
+ before(el) //这里可能做插入DOM树的操作,因此必须在修改类名前执行
3701
3723
  var cssCallback = function (cancel) {
3702
3724
  el.removeEventListener(me.cssEvent, me.cssCallback)
3703
3725
  if (isLeave) {
@@ -3816,7 +3838,6 @@ avalon.mix(avalon.effect, {
3816
3838
  }
3817
3839
  })
3818
3840
 
3819
-
3820
3841
  avalon.directive("html", {
3821
3842
  update: function (val) {
3822
3843
  var binding = this
@@ -3924,7 +3945,7 @@ avalon.directive("if", {
3924
3945
  elem.required = false
3925
3946
  elem.setAttribute("_required", "true")
3926
3947
  }
3927
- try {// 如果不支持querySelectorAll或:required,可以直接无视
3948
+ try {//如果不支持querySelectorAll或:required,可以直接无视
3928
3949
  avalon.each(elem.querySelectorAll(":required"), function (el) {
3929
3950
  elem.required = false
3930
3951
  el.setAttribute("_required", "true")
@@ -3960,8 +3981,6 @@ avalon.directive("if", {
3960
3981
  }
3961
3982
  })
3962
3983
 
3963
-
3964
-
3965
3984
  //ms-important绑定已经在scanTag 方法中实现
3966
3985
  var rnoscripts = /<noscript.*?>(?:[\s\S]+?)<\/noscript>/img
3967
3986
  var rnoscriptText = /<noscript.*?>([\s\S]+?)<\/noscript>/im
@@ -4084,7 +4103,7 @@ avalon.directive("include", {
4084
4103
  return nodesToFrag(nodes)
4085
4104
  }
4086
4105
  } else {
4087
- before = function () {// 新添加元素的动画 
4106
+ before = function () {//新添加元素的动画
4088
4107
  target.insertBefore(fragment, binding.end)
4089
4108
  scanNodeArray(nodes, vmodels)
4090
4109
  }
@@ -4302,7 +4321,7 @@ avalon.directive("repeat", {
4302
4321
  }
4303
4322
 
4304
4323
  //重写proxy
4305
- if (this.enterCount === 1) {// 防止多次进入,导致位置不对
4324
+ if (this.enterCount === 1) {//防止多次进入,导致位置不对
4306
4325
  proxy.$active = false
4307
4326
  proxy.$oldIndex = proxy.$index
4308
4327
  proxy.$active = true
@@ -4315,7 +4334,7 @@ avalon.directive("repeat", {
4315
4334
  proxy.$last = i === length - 1
4316
4335
  // proxy[param] = value[i]
4317
4336
  } else {
4318
- proxy.$val = toJson(value[keyOrId]) // 这里是处理vm.object = newObject的情况
4337
+ proxy.$val = toJson(value[keyOrId]) //这里是处理vm.object = newObject的情况
4319
4338
  }
4320
4339
  proxies.push(proxy)
4321
4340
  }
@@ -4366,7 +4385,7 @@ avalon.directive("repeat", {
4366
4385
  } else if (proxy.$index !== proxy.$oldIndex) {
4367
4386
  (function (proxy2, preElement) {
4368
4387
  staggerIndex = mayStaggerAnimate(binding.effectEnterStagger, function () {
4369
- var curNode = removeItem(proxy2.$anchor)// 如果位置被挪动了
4388
+ var curNode = removeItem(proxy2.$anchor)//如果位置被挪动了
4370
4389
  var inserted = avalon.slice(curNode.childNodes)
4371
4390
  parent.insertBefore(curNode, preElement.nextSibling)
4372
4391
  animateRepeat(inserted, 1, binding)
@@ -4602,9 +4621,11 @@ function proxyRecycler(cache, key, param) {
4602
4621
  delete cache[key]
4603
4622
  }
4604
4623
  }
4624
+
4605
4625
  /*********************************************************************
4606
4626
  * 各种指令 *
4607
4627
  **********************************************************************/
4628
+
4608
4629
  //ms-skip绑定已经在scanTag 方法中实现
4609
4630
  avalon.directive("text", {
4610
4631
  update: function (val) {
@@ -4647,7 +4668,7 @@ avalon.directive("visible", {
4647
4668
  var binding = this, elem = this.element, stamp
4648
4669
  var noEffect = !this.effectName
4649
4670
  if (!this.stamp) {
4650
- stamp = this.stamp = +new Date
4671
+ stamp = this.stamp = +new Date()
4651
4672
  if (val) {
4652
4673
  elem.style.display = binding.display || ""
4653
4674
  if (avalon(elem).css("display") === "none") {
@@ -4658,7 +4679,7 @@ avalon.directive("visible", {
4658
4679
  }
4659
4680
  return
4660
4681
  }
4661
- stamp = this.stamp = +new Date
4682
+ stamp = this.stamp = +new Date()
4662
4683
  if (val) {
4663
4684
  avalon.effect.apply(elem, 1, function () {
4664
4685
  if (stamp !== binding.stamp)
@@ -4686,8 +4707,9 @@ avalon.directive("visible", {
4686
4707
  })
4687
4708
 
4688
4709
  /*********************************************************************
4689
- * 自带过滤器 *
4710
+ * 自带过滤器 *
4690
4711
  **********************************************************************/
4712
+
4691
4713
  var rscripts = /<script[^>]*>([\S\s]*?)<\/script\s*>/gim
4692
4714
  var ron = /\s+(on[^=\s]+)(?:=("[^"]*"|'[^']*'|[^\s>]+))?/g
4693
4715
  var ropen = /<\w+\b(?:(["'])[^"]*?(\1)|[^>])*>/ig
@@ -4701,10 +4723,10 @@ var rnoalphanumeric = /([^\#-~| |!])/g;
4701
4723
 
4702
4724
  function numberFormat(number, decimals, point, thousands) {
4703
4725
  //form http://phpjs.org/functions/number_format/
4704
- //number 必需,要格式化的数字
4705
- //decimals 可选,规定多少个小数位。
4706
- //point 可选,规定用作小数点的字符串(默认为 . )。
4707
- //thousands 可选,规定用作千位分隔符的字符串(默认为 , ),如果设置了该参数,那么所有其他参数都是必需的。
4726
+ //number 必需,要格式化的数字
4727
+ //decimals 可选,规定多少个小数位。
4728
+ //point 可选,规定用作小数点的字符串(默认为 . )。
4729
+ //thousands 可选,规定用作千位分隔符的字符串(默认为 , ),如果设置了该参数,那么所有其他参数都是必需的。
4708
4730
  number = (number + '')
4709
4731
  .replace(/[^0-9+\-Ee.]/g, '')
4710
4732
  var n = !isFinite(+number) ? 0 : +number,
@@ -4732,7 +4754,6 @@ function numberFormat(number, decimals, point, thousands) {
4732
4754
  return s.join(dec)
4733
4755
  }
4734
4756
 
4735
-
4736
4757
  var filters = avalon.filters = {
4737
4758
  uppercase: function(str) {
4738
4759
  return str.toUpperCase()
@@ -4799,6 +4820,7 @@ var filters = avalon.filters = {
4799
4820
  },
4800
4821
  number: numberFormat
4801
4822
  }
4823
+
4802
4824
  /*
4803
4825
  'yyyy': 4 digit representation of year (e.g. AD 1 => 0001, AD 2010 => 2010)
4804
4826
  'yy': 2 digit representation of year, padded (00-99). (e.g. AD 2001 => 01, AD 2010 => 10)
@@ -5033,9 +5055,11 @@ new function() {// jshint ignore:line
5033
5055
  locate.SHORTMONTH = locate.MONTH
5034
5056
  filters.date.locate = locate
5035
5057
  }// jshint ignore:line
5058
+
5036
5059
  /*********************************************************************
5037
- * DOMReady *
5060
+ * DOMReady *
5038
5061
  **********************************************************************/
5062
+
5039
5063
  var readyList = [],
5040
5064
  isReady
5041
5065
  var fireReady = function (fn) {
@@ -5050,7 +5074,6 @@ var fireReady = function (fn) {
5050
5074
  }
5051
5075
  }
5052
5076
 
5053
-
5054
5077
  if (DOC.readyState === "complete") {
5055
5078
  setTimeout(fireReady) //如果在domReady之外加载
5056
5079
  } else {
@@ -5064,6 +5087,7 @@ avalon.ready = function (fn) {
5064
5087
  fn(avalon)
5065
5088
  }
5066
5089
  }
5090
+
5067
5091
  avalon.config({
5068
5092
  loader: true
5069
5093
  })
@@ -5102,8 +5126,10 @@ function iOSversion() {
5102
5126
 
5103
5127
  var deviceIsAndroid = ua.indexOf('android') > 0
5104
5128
  var deviceIsIOS = iOSversion()
5105
- var gestureHooks = avalon.gestureHooks = {
5129
+
5130
+ var Recognizer = avalon.gestureHooks = {
5106
5131
  pointers: {},
5132
+ //以AOP切入touchstart, touchmove, touchend, touchcancel回调
5107
5133
  start: function (event, callback) {
5108
5134
 
5109
5135
  //touches是当前屏幕上所有触摸点的列表;
@@ -5112,12 +5138,12 @@ var gestureHooks = avalon.gestureHooks = {
5112
5138
  for (var i = 0; i < event.changedTouches.length; i++) {
5113
5139
  var touch = event.changedTouches[i]
5114
5140
  var pointer = {
5115
- startTouch: mixTouchAttr({}, touch),
5141
+ startTouch: mixLocations({}, touch),
5116
5142
  startTime: Date.now(),
5117
5143
  status: 'tapping',
5118
5144
  element: event.target
5119
5145
  }
5120
- gestureHooks.pointers[touch.identifier] = pointer;
5146
+ Recognizer.pointers[touch.identifier] = pointer;
5121
5147
  callback(pointer, touch)
5122
5148
 
5123
5149
  }
@@ -5125,7 +5151,7 @@ var gestureHooks = avalon.gestureHooks = {
5125
5151
  move: function (event, callback) {
5126
5152
  for (var i = 0; i < event.changedTouches.length; i++) {
5127
5153
  var touch = event.changedTouches[i]
5128
- var pointer = gestureHooks.pointers[touch.identifier]
5154
+ var pointer = Recognizer.pointers[touch.identifier]
5129
5155
  if (!pointer) {
5130
5156
  return
5131
5157
  }
@@ -5148,9 +5174,8 @@ var gestureHooks = avalon.gestureHooks = {
5148
5174
  pointer.duration = RECORD_DURATION - time
5149
5175
  }
5150
5176
 
5151
-
5152
5177
  pointer.duration += time;
5153
- pointer.lastTouch = mixTouchAttr({}, touch)
5178
+ pointer.lastTouch = mixLocations({}, touch)
5154
5179
 
5155
5180
  pointer.lastTime = Date.now()
5156
5181
 
@@ -5169,16 +5194,17 @@ var gestureHooks = avalon.gestureHooks = {
5169
5194
  for (var i = 0; i < event.changedTouches.length; i++) {
5170
5195
  var touch = event.changedTouches[i],
5171
5196
  id = touch.identifier,
5172
- pointer = gestureHooks.pointers[id]
5197
+ pointer = Recognizer.pointers[id]
5173
5198
 
5174
5199
  if (!pointer)
5175
5200
  continue
5176
5201
 
5177
5202
  callback(pointer, touch)
5178
5203
 
5179
- delete gestureHooks.pointers[id]
5204
+ delete Recognizer.pointers[id]
5180
5205
  }
5181
5206
  },
5207
+ //人工触发合成事件
5182
5208
  fire: function (elem, type, props) {
5183
5209
  if (elem) {
5184
5210
  var event = document.createEvent('Events')
@@ -5187,13 +5213,14 @@ var gestureHooks = avalon.gestureHooks = {
5187
5213
  elem.dispatchEvent(event)
5188
5214
  }
5189
5215
  },
5190
- add: function (name, gesture) {
5216
+ //添加各种识别器
5217
+ add: function (name, recognizer) {
5191
5218
  function move(event) {
5192
- gesture.touchmove(event)
5219
+ recognizer.touchmove(event)
5193
5220
  }
5194
5221
 
5195
5222
  function end(event) {
5196
- gesture.touchend(event)
5223
+ recognizer.touchend(event)
5197
5224
 
5198
5225
  document.removeEventListener('touchmove', move)
5199
5226
 
@@ -5204,7 +5231,7 @@ var gestureHooks = avalon.gestureHooks = {
5204
5231
  }
5205
5232
 
5206
5233
  function cancel(event) {
5207
- gesture.touchcancel(event)
5234
+ recognizer.touchcancel(event)
5208
5235
 
5209
5236
  document.removeEventListener('touchmove', move)
5210
5237
 
@@ -5214,13 +5241,13 @@ var gestureHooks = avalon.gestureHooks = {
5214
5241
 
5215
5242
  }
5216
5243
 
5217
- gesture.events.forEach(function (eventName) {
5244
+ recognizer.events.forEach(function (eventName) {
5218
5245
  avalon.eventHooks[eventName] = {
5219
5246
  fn: function (el, fn) {
5220
5247
  if (!el['touch-' + name]) {
5221
5248
  el['touch-' + name] = '1'
5222
5249
  el.addEventListener('touchstart', function (event) {
5223
- gesture.touchstart(event)
5250
+ recognizer.touchstart(event)
5224
5251
 
5225
5252
  document.addEventListener('touchmove', move)
5226
5253
 
@@ -5237,28 +5264,24 @@ var gestureHooks = avalon.gestureHooks = {
5237
5264
  }
5238
5265
  }
5239
5266
 
5240
-
5241
-
5242
- var touchkeys = ['screenX', 'screenY', 'clientX', 'clientY', 'pageX', 'pageY']
5267
+ var locations = ['screenX', 'screenY', 'clientX', 'clientY', 'pageX', 'pageY']
5243
5268
 
5244
5269
  // 复制 touch 对象上的有用属性到固定对象上
5245
- function mixTouchAttr(target, source) {
5270
+ function mixLocations(target, source) {
5246
5271
  if (source) {
5247
- touchkeys.forEach(function (key) {
5272
+ locations.forEach(function (key) {
5248
5273
  target[key] = source[key]
5249
5274
  })
5250
5275
  }
5251
5276
  return target
5252
5277
  }
5253
5278
 
5254
-
5255
-
5256
5279
  var supportPointer = !!navigator.pointerEnabled || !!navigator.msPointerEnabled
5257
5280
 
5258
5281
  if (supportPointer) { // 支持pointer的设备可用样式来取消click事件的300毫秒延迟
5259
5282
  root.style.msTouchAction = root.style.touchAction = 'none'
5260
5283
  }
5261
- var tapGesture = {
5284
+ var tapRecognizer = {
5262
5285
  events: ['tap'],
5263
5286
  touchBoundary: 10,
5264
5287
  tapDelay: 200,
@@ -5367,11 +5390,11 @@ var tapGesture = {
5367
5390
  }
5368
5391
  },
5369
5392
  touchHasMoved: function(event) {
5370
- // 判定是否发生移动,其阀值是10px
5393
+ //判定是否发生移动,其阀值是10px
5371
5394
  var touch = event.changedTouches[0],
5372
- boundary = tapGesture.touchBoundary
5373
- return Math.abs(touch.pageX - tapGesture.touchStartX) > boundary ||
5374
- Math.abs(touch.pageY - tapGesture.touchStartY) > boundary
5395
+ boundary = tapRecognizer.touchBoundary
5396
+ return Math.abs(touch.pageX - tapRecognizer.touchStartX) > boundary ||
5397
+ Math.abs(touch.pageY - tapRecognizer.touchStartY) > boundary
5375
5398
 
5376
5399
  },
5377
5400
 
@@ -5382,7 +5405,7 @@ var tapGesture = {
5382
5405
  },
5383
5406
  sendClick: function(targetElement, event) {
5384
5407
  // 在click之前触发tap事件
5385
- gestureHooks.fire(targetElement, 'tap', {
5408
+ Recognizer.fire(targetElement, 'tap', {
5386
5409
  touchEvent: event
5387
5410
  })
5388
5411
  var clickEvent, touch
@@ -5395,7 +5418,7 @@ var tapGesture = {
5395
5418
  // 手动触发点击事件,此时必须使用document.createEvent('MouseEvents')来创建事件
5396
5419
  // 及使用initMouseEvent来初始化它
5397
5420
  clickEvent = document.createEvent('MouseEvents')
5398
- clickEvent.initMouseEvent(tapGesture.findType(targetElement), true, true, window, 1, touch.screenX,
5421
+ clickEvent.initMouseEvent(tapRecognizer.findType(targetElement), true, true, window, 1, touch.screenX,
5399
5422
  touch.screenY, touch.clientX, touch.clientY, false, false, false, false, 0, null)
5400
5423
  clickEvent.touchEvent = event
5401
5424
  targetElement.dispatchEvent(clickEvent)
@@ -5406,7 +5429,7 @@ var tapGesture = {
5406
5429
  return true
5407
5430
  }
5408
5431
  //修正事件源对象
5409
- var targetElement = tapGesture.fixTarget(event.target)
5432
+ var targetElement = tapRecognizer.fixTarget(event.target)
5410
5433
  var touch = event.targetTouches[0]
5411
5434
  if (deviceIsIOS) {
5412
5435
  // 判断是否是点击文字,进行选择等操作,如果是,不需要模拟click
@@ -5416,73 +5439,73 @@ var tapGesture = {
5416
5439
  }
5417
5440
  var id = touch.identifier
5418
5441
  //当 alert 或 confirm 时,点击其他地方,会触发touch事件,identifier相同,此事件应该被忽略
5419
- if (id && isFinite(tapGesture.lastTouchIdentifier) && tapGesture.lastTouchIdentifier === id) {
5442
+ if (id && isFinite(tapRecognizer.lastTouchIdentifier) && tapRecognizer.lastTouchIdentifier === id) {
5420
5443
  event.preventDefault()
5421
5444
  return false
5422
5445
  }
5423
5446
 
5424
- tapGesture.lastTouchIdentifier = id
5447
+ tapRecognizer.lastTouchIdentifier = id
5425
5448
 
5426
- tapGesture.updateScrollParent(targetElement)
5449
+ tapRecognizer.updateScrollParent(targetElement)
5427
5450
  }
5428
5451
  //收集触摸点的信息
5429
- tapGesture.status = "tapping"
5430
- tapGesture.startTime = Date.now()
5431
- tapGesture.element = targetElement
5432
- tapGesture.pageX = touch.pageX
5433
- tapGesture.pageY = touch.pageY
5452
+ tapRecognizer.status = "tapping"
5453
+ tapRecognizer.startTime = Date.now()
5454
+ tapRecognizer.element = targetElement
5455
+ tapRecognizer.pageX = touch.pageX
5456
+ tapRecognizer.pageY = touch.pageY
5434
5457
  // 如果点击太快,阻止双击带来的放大收缩行为
5435
- if ((tapGesture.startTime - tapGesture.lastTime) < tapGesture.tapDelay) {
5458
+ if ((tapRecognizer.startTime - tapRecognizer.lastTime) < tapRecognizer.tapDelay) {
5436
5459
  event.preventDefault()
5437
5460
  }
5438
5461
  },
5439
5462
  touchmove: function(event) {
5440
- if (tapGesture.status !== "tapping") {
5463
+ if (tapRecognizer.status !== "tapping") {
5441
5464
  return true
5442
5465
  }
5443
5466
  // 如果事件源元素发生改变,或者发生了移动,那么就取消触发点击事件
5444
- if (tapGesture.element !== tapGesture.fixTarget(event.target) ||
5445
- tapGesture.touchHasMoved(event)) {
5446
- tapGesture.status = tapGesture.element = 0
5467
+ if (tapRecognizer.element !== tapRecognizer.fixTarget(event.target) ||
5468
+ tapRecognizer.touchHasMoved(event)) {
5469
+ tapRecognizer.status = tapRecognizer.element = 0
5447
5470
  }
5448
5471
 
5449
5472
  },
5450
5473
  touchend: function(event) {
5451
- var targetElement = tapGesture.element
5474
+ var targetElement = tapRecognizer.element
5452
5475
  var now = Date.now()
5453
5476
  //如果是touchstart与touchend相隔太久,可以认为是长按,那么就直接返回
5454
5477
  //或者是在touchstart, touchmove阶段,判定其不该触发点击事件,也直接返回
5455
- if (!targetElement || now - tapGesture.startTime > tapGesture.tapDelay) {
5478
+ if (!targetElement || now - tapRecognizer.startTime > tapRecognizer.tapDelay) {
5456
5479
  return true
5457
5480
  }
5458
5481
 
5459
5482
 
5460
- tapGesture.lastTime = now
5483
+ tapRecognizer.lastTime = now
5461
5484
 
5462
- var startTime = tapGesture.startTime
5463
- tapGesture.status = tapGesture.startTime = 0
5485
+ var startTime = tapRecognizer.startTime
5486
+ tapRecognizer.status = tapRecognizer.startTime = 0
5464
5487
 
5465
5488
  targetTagName = targetElement.tagName.toLowerCase()
5466
5489
  if (targetTagName === 'label') {
5467
5490
  //尝试触发label上可能绑定的tap事件
5468
- gestureHooks.fire(targetElement, 'tap', {
5491
+ Recognizer.fire(targetElement, 'tap', {
5469
5492
  touchEvent: event
5470
5493
  })
5471
- var forElement = tapGesture.findControl(targetElement)
5494
+ var forElement = tapRecognizer.findControl(targetElement)
5472
5495
  if (forElement) {
5473
- tapGesture.focus(targetElement)
5496
+ tapRecognizer.focus(targetElement)
5474
5497
  targetElement = forElement
5475
5498
  }
5476
- } else if (tapGesture.needFocus(targetElement)) {
5499
+ } else if (tapRecognizer.needFocus(targetElement)) {
5477
5500
  // 如果元素从touchstart到touchend经历时间过长,那么不应该触发点击事
5478
5501
  // 或者此元素是iframe中的input元素,那么它也无法获点焦点
5479
5502
  if ((now - startTime) > 100 || (deviceIsIOS && window.top !== window && targetTagName === 'input')) {
5480
- tapGesture.element = 0
5503
+ tapRecognizer.element = 0
5481
5504
  return false
5482
5505
  }
5483
5506
 
5484
- tapGesture.focus(targetElement)
5485
- deviceIsAndroid && tapGesture.sendClick(targetElement, event)
5507
+ tapRecognizer.focus(targetElement)
5508
+ deviceIsAndroid && tapRecognizer.sendClick(targetElement, event)
5486
5509
 
5487
5510
  return false
5488
5511
  }
@@ -5495,36 +5518,35 @@ var tapGesture = {
5495
5518
  }
5496
5519
  }
5497
5520
  //如果这不是一个需要使用原生click的元素,则屏蔽原生事件,避免触发两次click
5498
- if (!tapGesture.needClick(targetElement)) {
5521
+ if (!tapRecognizer.needClick(targetElement)) {
5499
5522
  event.preventDefault()
5500
5523
  // 触发一次模拟的click
5501
- tapGesture.sendClick(targetElement, event)
5524
+ tapRecognizer.sendClick(targetElement, event)
5502
5525
  }
5503
5526
  },
5504
5527
  touchcancel: function() {
5505
- tapGesture.startTime = tapGesture.element = 0
5528
+ tapRecognizer.startTime = tapRecognizer.element = 0
5506
5529
  }
5507
5530
  }
5508
5531
 
5509
- gestureHooks.add("tap", tapGesture)
5510
-
5532
+ Recognizer.add("tap", tapRecognizer)
5511
5533
 
5512
- var pressGesture = {
5534
+ var pressRecognizer = {
5513
5535
  events: ['longtap', 'doubletap'],
5514
5536
  cancelPress: function (pointer) {
5515
5537
  clearTimeout(pointer.pressingHandler)
5516
5538
  pointer.pressingHandler = null
5517
5539
  },
5518
5540
  touchstart: function (event) {
5519
- gestureHooks.start(event, function (pointer, touch) {
5541
+ Recognizer.start(event, function (pointer, touch) {
5520
5542
  pointer.pressingHandler = setTimeout(function () {
5521
5543
  if (pointer.status === 'tapping') {
5522
- gestureHooks.fire(event.target, 'longtap', {
5544
+ Recognizer.fire(event.target, 'longtap', {
5523
5545
  touch: touch,
5524
5546
  touchEvent: event
5525
5547
  })
5526
5548
  }
5527
- pressGesture.cancelPress(pointer)
5549
+ pressRecognizer.cancelPress(pointer)
5528
5550
  }, 500)
5529
5551
  if (event.changedTouches.length !== 1) {
5530
5552
  pointer.status = 0
@@ -5533,9 +5555,9 @@ var pressGesture = {
5533
5555
 
5534
5556
  },
5535
5557
  touchmove: function (event) {
5536
- gestureHooks.move(event, function (pointer) {
5558
+ Recognizer.move(event, function (pointer) {
5537
5559
  if (pointer.distance > 10 && pointer.pressingHandler) {
5538
- pressGesture.cancelPress(pointer)
5560
+ pressRecognizer.cancelPress(pointer)
5539
5561
  if (pointer.status === 'tapping') {
5540
5562
  pointer.status = 'panning'
5541
5563
  }
@@ -5543,62 +5565,58 @@ var pressGesture = {
5543
5565
  })
5544
5566
  },
5545
5567
  touchend: function (event) {
5546
- gestureHooks.end(event, function (pointer, touch) {
5547
- pressGesture.cancelPress(pointer)
5568
+ Recognizer.end(event, function (pointer, touch) {
5569
+ pressRecognizer.cancelPress(pointer)
5548
5570
  if (pointer.status === 'tapping') {
5549
5571
  pointer.lastTime = Date.now()
5550
- if (pressGesture.lastTap && pointer.lastTime - pressGesture.lastTap.lastTime < 300) {
5551
- gestureHooks.fire(pointer.element, 'doubletap', {
5572
+ if (pressRecognizer.lastTap && pointer.lastTime - pressRecognizer.lastTap.lastTime < 300) {
5573
+ Recognizer.fire(pointer.element, 'doubletap', {
5552
5574
  touch: touch,
5553
5575
  touchEvent: event
5554
5576
  })
5555
5577
  }
5556
5578
 
5557
- pressGesture.lastTap = pointer
5579
+ pressRecognizer.lastTap = pointer
5558
5580
  }
5559
5581
  })
5560
5582
 
5561
5583
  },
5562
5584
  touchcancel: function (event) {
5563
- gestureHooks.end(event, function (pointer) {
5564
- pressGesture.cancelPress(pointer)
5585
+ Recognizer.end(event, function (pointer) {
5586
+ pressRecognizer.cancelPress(pointer)
5565
5587
  })
5566
5588
  }
5567
5589
  }
5568
- gestureHooks.add('press', pressGesture)
5590
+ Recognizer.add('press', pressRecognizer)
5569
5591
 
5570
- var swipeGesture = {
5592
+ var swipeRecognizer = {
5571
5593
  events: ['swipe', 'swipeleft', 'swiperight', 'swipeup', 'swipedown'],
5572
- getAngle: function (x, y) {
5573
- var r = Math.atan2(y, x) //radians
5574
- var angle = Math.round(r * 180 / Math.PI) //degrees
5575
- return angle < 0 ? 360 - Math.abs(angle) : angle
5594
+ getAngle: function (x, y ) {
5595
+ return Math.atan2(y, x) * 180 / Math.PI
5576
5596
  },
5577
5597
  getDirection: function (x, y) {
5578
- var angle = swipeGesture.getAngle(x, y)
5579
- if ((angle <= 45) && (angle >= 0)) {
5580
- return "left"
5581
- } else if ((angle <= 360) && (angle >= 315)) {
5582
- return "left"
5583
- } else if ((angle >= 135) && (angle <= 225)) {
5584
- return "right"
5585
- } else if ((angle > 45) && (angle < 135)) {
5586
- return "down"
5587
- } else {
5598
+ var angle = swipeRecognizer.getAngle(x, y)
5599
+ if ((angle < -45) && (angle > -135)) {
5588
5600
  return "up"
5601
+ } else if ((angle >= 45) && (angle < 315)) {
5602
+ return "down"
5603
+ } else if ((angle > -45) && (angle <= 45)) {
5604
+ return "right"
5605
+ } else{
5606
+ return "left"
5589
5607
  }
5590
5608
  },
5591
5609
  touchstart: function (event) {
5592
- gestureHooks.start(event, noop)
5610
+ Recognizer.start(event, noop)
5593
5611
  },
5594
5612
  touchmove: function (event) {
5595
- gestureHooks.move(event, noop)
5613
+ Recognizer.move(event, noop)
5596
5614
  },
5597
5615
  touchend: function (event) {
5598
5616
  if(event.changedTouches.length !== 1){
5599
5617
  return
5600
5618
  }
5601
- gestureHooks.end(event, function (pointer, touch) {
5619
+ Recognizer.end(event, function (pointer, touch) {
5602
5620
  var isflick = (pointer.distance > 30 && pointer.distance / pointer.duration > 0.65)
5603
5621
  if (isflick) {
5604
5622
  var extra = {
@@ -5606,20 +5624,19 @@ var swipeGesture = {
5606
5624
  deltaY: pointer.deltaY,
5607
5625
  touch: touch,
5608
5626
  touchEvent: event,
5609
- direction: swipeGesture.getDirection(pointer.deltaX, pointer.deltaY),
5627
+ direction: swipeRecognizer.getDirection(pointer.deltaX, pointer.deltaY),
5610
5628
  isVertical: pointer.isVertical
5611
5629
  }
5612
5630
  var target = pointer.element
5613
- gestureHooks.fire(target, 'swipe', extra)
5614
- gestureHooks.fire(target, 'swipe' + extra.direction, extra)
5631
+ Recognizer.fire(target, 'swipe', extra)
5632
+ Recognizer.fire(target, 'swipe' + extra.direction, extra)
5615
5633
  }
5616
5634
  })
5617
5635
  }
5618
5636
  }
5619
5637
 
5620
- swipeGesture.touchcancel = swipeGesture.touchend
5621
- gestureHooks.add('swipe', swipeGesture)
5622
-
5638
+ swipeRecognizer.touchcancel = swipeRecognizer.touchend
5639
+ Recognizer.add('swipe', swipeRecognizer)
5623
5640
 
5624
5641
 
5625
5642
  // Register as a named AMD module, since avalon can be concatenated with other