a-template
Advanced tools
Comparing version 0.0.20 to 0.1.0
@@ -8,4 +8,9 @@ /** | ||
* author: steelydylan | ||
* version: 0.0.20 | ||
* version: 0.1.0 | ||
* | ||
* morphdom: | ||
* license: MIT (http://opensource.org/licenses/MIT) | ||
* author: Patrick Steele-Idem <pnidem@gmail.com> | ||
* version: 2.3.1 | ||
* | ||
* zepto-browserify: | ||
@@ -18,4 +23,4 @@ * license: MIT (http://opensource.org/licenses/MIT) | ||
*/ | ||
(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.aTemplate=f()}})(function(){var define,module,exports;return function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){(function(undefined){if(String.prototype.trim===undefined)String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")};if(Array.prototype.reduce===undefined)Array.prototype.reduce=function(fun){if(this===void 0||this===null)throw new TypeError;var t=Object(this),len=t.length>>>0,k=0,accumulator;if(typeof fun!="function")throw new TypeError;if(len==0&&arguments.length==1)throw new TypeError;if(arguments.length>=2)accumulator=arguments[1];else do{if(k in t){accumulator=t[k++];break}if(++k>=len)throw new TypeError}while(true);while(k<len){if(k in t)accumulator=fun.call(undefined,accumulator,t[k],k,t);k++}return accumulator}})();var Zepto=function(){var undefined,key,$,classList,emptyArray=[],slice=emptyArray.slice,filter=emptyArray.filter,document=window.document,elementDisplay={},classCache={},getComputedStyle=document.defaultView.getComputedStyle,cssNumber={"column-count":1,columns:1,"font-weight":1,"line-height":1,opacity:1,"z-index":1,zoom:1},fragmentRE=/^\s*<(\w+|!)[^>]*>/,tagExpanderRE=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,rootNodeRE=/^(?:body|html)$/i,methodAttributes=["val","css","html","text","data","width","height","offset"],adjacencyOperators=["after","prepend","before","append"],table=document.createElement("table"),tableRow=document.createElement("tr"),containers={tr:document.createElement("tbody"),tbody:table,thead:table,tfoot:table,td:tableRow,th:tableRow,"*":document.createElement("div")},readyRE=/complete|loaded|interactive/,classSelectorRE=/^\.([\w-]+)$/,idSelectorRE=/^#([\w-]*)$/,tagSelectorRE=/^[\w-]+$/,class2type={},toString=class2type.toString,zepto={},camelize,uniq,tempParent=document.createElement("div");zepto.matches=function(element,selector){if(!element||element.nodeType!==1)return false;var matchesSelector=element.webkitMatchesSelector||element.mozMatchesSelector||element.oMatchesSelector||element.matchesSelector;if(matchesSelector)return matchesSelector.call(element,selector);var match,parent=element.parentNode,temp=!parent;if(temp)(parent=tempParent).appendChild(element);match=~zepto.qsa(parent,selector).indexOf(element);temp&&tempParent.removeChild(element);return match};function type(obj){return obj==null?String(obj):class2type[toString.call(obj)]||"object"}function isFunction(value){return type(value)=="function"}function isWindow(obj){return obj!=null&&obj==obj.window}function isDocument(obj){return obj!=null&&obj.nodeType==obj.DOCUMENT_NODE}function isObject(obj){return type(obj)=="object"}function isPlainObject(obj){return isObject(obj)&&!isWindow(obj)&&obj.__proto__==Object.prototype}function isArray(value){return value instanceof Array}function likeArray(obj){return typeof obj.length=="number"}function compact(array){return filter.call(array,function(item){return item!=null})}function flatten(array){return array.length>0?$.fn.concat.apply([],array):array}camelize=function(str){return str.replace(/-+(.)?/g,function(match,chr){return chr?chr.toUpperCase():""})};function dasherize(str){return str.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/_/g,"-").toLowerCase()}uniq=function(array){return filter.call(array,function(item,idx){return array.indexOf(item)==idx})};function classRE(name){return name in classCache?classCache[name]:classCache[name]=new RegExp("(^|\\s)"+name+"(\\s|$)")}function maybeAddPx(name,value){return typeof value=="number"&&!cssNumber[dasherize(name)]?value+"px":value}function defaultDisplay(nodeName){var element,display;if(!elementDisplay[nodeName]){element=document.createElement(nodeName);document.body.appendChild(element);display=getComputedStyle(element,"").getPropertyValue("display");element.parentNode.removeChild(element);display=="none"&&(display="block");elementDisplay[nodeName]=display}return elementDisplay[nodeName]}function children(element){return"children"in element?slice.call(element.children):$.map(element.childNodes,function(node){if(node.nodeType==1)return node})}zepto.fragment=function(html,name,properties){if(html.replace)html=html.replace(tagExpanderRE,"<$1></$2>");if(name===undefined)name=fragmentRE.test(html)&&RegExp.$1;if(!(name in containers))name="*";var nodes,dom,container=containers[name];container.innerHTML=""+html;dom=$.each(slice.call(container.childNodes),function(){container.removeChild(this)});if(isPlainObject(properties)){nodes=$(dom);$.each(properties,function(key,value){if(methodAttributes.indexOf(key)>-1)nodes[key](value);else nodes.attr(key,value)})}return dom};zepto.Z=function(dom,selector){dom=dom||[];dom.__proto__=$.fn;dom.selector=selector||"";return dom};zepto.isZ=function(object){return object instanceof zepto.Z};zepto.init=function(selector,context){if(!selector)return zepto.Z();else if(isFunction(selector))return $(document).ready(selector);else if(zepto.isZ(selector))return selector;else{var dom;if(isArray(selector))dom=compact(selector);else if(isObject(selector))dom=[isPlainObject(selector)?$.extend({},selector):selector],selector=null;else if(fragmentRE.test(selector))dom=zepto.fragment(selector.trim(),RegExp.$1,context),selector=null;else if(context!==undefined)return $(context).find(selector);else dom=zepto.qsa(document,selector);return zepto.Z(dom,selector)}};$=function(selector,context){return zepto.init(selector,context)};function extend(target,source,deep){for(key in source)if(deep&&(isPlainObject(source[key])||isArray(source[key]))){if(isPlainObject(source[key])&&!isPlainObject(target[key]))target[key]={};if(isArray(source[key])&&!isArray(target[key]))target[key]=[];extend(target[key],source[key],deep)}else if(source[key]!==undefined)target[key]=source[key]}$.extend=function(target){var deep,args=slice.call(arguments,1);if(typeof target=="boolean"){deep=target;target=args.shift()}args.forEach(function(arg){extend(target,arg,deep)});return target};zepto.qsa=function(element,selector){var found;return isDocument(element)&&idSelectorRE.test(selector)?(found=element.getElementById(RegExp.$1))?[found]:[]:element.nodeType!==1&&element.nodeType!==9?[]:slice.call(classSelectorRE.test(selector)?element.getElementsByClassName(RegExp.$1):tagSelectorRE.test(selector)?element.getElementsByTagName(selector):element.querySelectorAll(selector))};function filtered(nodes,selector){return selector===undefined?$(nodes):$(nodes).filter(selector)}$.contains=function(parent,node){return parent!==node&&parent.contains(node)};function funcArg(context,arg,idx,payload){return isFunction(arg)?arg.call(context,idx,payload):arg}function setAttribute(node,name,value){value==null?node.removeAttribute(name):node.setAttribute(name,value)}function className(node,value){var klass=node.className,svg=klass&&klass.baseVal!==undefined;if(value===undefined)return svg?klass.baseVal:klass;svg?klass.baseVal=value:node.className=value}function deserializeValue(value){var num;try{return value?value=="true"||(value=="false"?false:value=="null"?null:!isNaN(num=Number(value))?num:/^[\[\{]/.test(value)?$.parseJSON(value):value):value}catch(e){return value}}$.type=type;$.isFunction=isFunction;$.isWindow=isWindow;$.isArray=isArray;$.isPlainObject=isPlainObject;$.isEmptyObject=function(obj){var name;for(name in obj)return false;return true};$.inArray=function(elem,array,i){return emptyArray.indexOf.call(array,elem,i)};$.camelCase=camelize;$.trim=function(str){return str.trim()};$.uuid=0;$.support={};$.expr={};$.map=function(elements,callback){var value,values=[],i,key;if(likeArray(elements))for(i=0;i<elements.length;i++){value=callback(elements[i],i);if(value!=null)values.push(value)}else for(key in elements){value=callback(elements[key],key);if(value!=null)values.push(value)}return flatten(values)};$.each=function(elements,callback){var i,key;if(likeArray(elements)){for(i=0;i<elements.length;i++)if(callback.call(elements[i],i,elements[i])===false)return elements}else{for(key in elements)if(callback.call(elements[key],key,elements[key])===false)return elements}return elements};$.grep=function(elements,callback){return filter.call(elements,callback)};if(window.JSON)$.parseJSON=JSON.parse;$.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(i,name){class2type["[object "+name+"]"]=name.toLowerCase()});$.fn={forEach:emptyArray.forEach,reduce:emptyArray.reduce,push:emptyArray.push,sort:emptyArray.sort,indexOf:emptyArray.indexOf,concat:emptyArray.concat,map:function(fn){return $($.map(this,function(el,i){return fn.call(el,i,el)}))},slice:function(){return $(slice.apply(this,arguments))},ready:function(callback){if(readyRE.test(document.readyState))callback($);else document.addEventListener("DOMContentLoaded",function(){callback($)},false);return this},get:function(idx){return idx===undefined?slice.call(this):this[idx>=0?idx:idx+this.length]},toArray:function(){return this.get()},size:function(){return this.length},remove:function(){return this.each(function(){if(this.parentNode!=null)this.parentNode.removeChild(this)})},each:function(callback){emptyArray.every.call(this,function(el,idx){return callback.call(el,idx,el)!==false});return this},filter:function(selector){if(isFunction(selector))return this.not(this.not(selector));return $(filter.call(this,function(element){return zepto.matches(element,selector)}))},add:function(selector,context){return $(uniq(this.concat($(selector,context))))},is:function(selector){return this.length>0&&zepto.matches(this[0],selector)},not:function(selector){var nodes=[];if(isFunction(selector)&&selector.call!==undefined)this.each(function(idx){if(!selector.call(this,idx))nodes.push(this)});else{var excludes=typeof selector=="string"?this.filter(selector):likeArray(selector)&&isFunction(selector.item)?slice.call(selector):$(selector);this.forEach(function(el){if(excludes.indexOf(el)<0)nodes.push(el)})}return $(nodes)},has:function(selector){return this.filter(function(){return isObject(selector)?$.contains(this,selector):$(this).find(selector).size()})},eq:function(idx){return idx===-1?this.slice(idx):this.slice(idx,+idx+1)},first:function(){var el=this[0];return el&&!isObject(el)?el:$(el)},last:function(){var el=this[this.length-1];return el&&!isObject(el)?el:$(el)},find:function(selector){var result,$this=this;if(typeof selector=="object")result=$(selector).filter(function(){var node=this;return emptyArray.some.call($this,function(parent){return $.contains(parent,node)})});else if(this.length==1)result=$(zepto.qsa(this[0],selector));else result=this.map(function(){return zepto.qsa(this,selector)});return result},closest:function(selector,context){var node=this[0],collection=false;if(typeof selector=="object")collection=$(selector);while(node&&!(collection?collection.indexOf(node)>=0:zepto.matches(node,selector)))node=node!==context&&!isDocument(node)&&node.parentNode;return $(node)},parents:function(selector){var ancestors=[],nodes=this;while(nodes.length>0)nodes=$.map(nodes,function(node){if((node=node.parentNode)&&!isDocument(node)&&ancestors.indexOf(node)<0){ancestors.push(node);return node}});return filtered(ancestors,selector)},parent:function(selector){return filtered(uniq(this.pluck("parentNode")),selector)},children:function(selector){return filtered(this.map(function(){return children(this)}),selector)},contents:function(){return this.map(function(){return slice.call(this.childNodes)})},siblings:function(selector){return filtered(this.map(function(i,el){return filter.call(children(el.parentNode),function(child){return child!==el})}),selector)},empty:function(){return this.each(function(){this.innerHTML=""})},pluck:function(property){return $.map(this,function(el){return el[property]})},show:function(){return this.each(function(){this.style.display=="none"&&(this.style.display=null);if(getComputedStyle(this,"").getPropertyValue("display")=="none")this.style.display=defaultDisplay(this.nodeName)})},replaceWith:function(newContent){return this.before(newContent).remove()},wrap:function(structure){var func=isFunction(structure);if(this[0]&&!func)var dom=$(structure).get(0),clone=dom.parentNode||this.length>1;return this.each(function(index){$(this).wrapAll(func?structure.call(this,index):clone?dom.cloneNode(true):dom)})},wrapAll:function(structure){if(this[0]){$(this[0]).before(structure=$(structure));var children;while((children=structure.children()).length)structure=children.first();$(structure).append(this)}return this},wrapInner:function(structure){var func=isFunction(structure);return this.each(function(index){var self=$(this),contents=self.contents(),dom=func?structure.call(this,index):structure;contents.length?contents.wrapAll(dom):self.append(dom)})},unwrap:function(){this.parent().each(function(){$(this).replaceWith($(this).children())});return this},clone:function(){return this.map(function(){return this.cloneNode(true)})},hide:function(){return this.css("display","none")},toggle:function(setting){return this.each(function(){var el=$(this);(setting===undefined?el.css("display")=="none":setting)?el.show():el.hide()})},prev:function(selector){return $(this.pluck("previousElementSibling")).filter(selector||"*")},next:function(selector){return $(this.pluck("nextElementSibling")).filter(selector||"*")},html:function(html){return html===undefined?this.length>0?this[0].innerHTML:null:this.each(function(idx){var originHtml=this.innerHTML;$(this).empty().append(funcArg(this,html,idx,originHtml))})},text:function(text){return text===undefined?this.length>0?this[0].textContent:null:this.each(function(){this.textContent=text})},attr:function(name,value){var result;return typeof name=="string"&&value===undefined?this.length==0||this[0].nodeType!==1?undefined:name=="value"&&this[0].nodeName=="INPUT"?this.val():!(result=this[0].getAttribute(name))&&name in this[0]?this[0][name]:result:this.each(function(idx){if(this.nodeType!==1)return;if(isObject(name))for(key in name)setAttribute(this,key,name[key]);else setAttribute(this,name,funcArg(this,value,idx,this.getAttribute(name)))})},removeAttr:function(name){return this.each(function(){this.nodeType===1&&setAttribute(this,name)})},prop:function(name,value){return value===undefined?this[0]&&this[0][name]:this.each(function(idx){this[name]=funcArg(this,value,idx,this[name])})},data:function(name,value){var data=this.attr("data-"+dasherize(name),value);return data!==null?deserializeValue(data):undefined},val:function(value){return value===undefined?this[0]&&(this[0].multiple?$(this[0]).find("option").filter(function(o){return this.selected}).pluck("value"):this[0].value):this.each(function(idx){this.value=funcArg(this,value,idx,this.value)})},offset:function(coordinates){if(coordinates)return this.each(function(index){var $this=$(this),coords=funcArg(this,coordinates,index,$this.offset()),parentOffset=$this.offsetParent().offset(),props={top:coords.top-parentOffset.top,left:coords.left-parentOffset.left};if($this.css("position")=="static")props["position"]="relative";$this.css(props)});if(this.length==0)return null;var obj=this[0].getBoundingClientRect();return{left:obj.left+window.pageXOffset,top:obj.top+window.pageYOffset,width:Math.round(obj.width),height:Math.round(obj.height)}},css:function(property,value){if(arguments.length<2&&typeof property=="string")return this[0]&&(this[0].style[camelize(property)]||getComputedStyle(this[0],"").getPropertyValue(property));var css="";if(type(property)=="string"){if(!value&&value!==0)this.each(function(){this.style.removeProperty(dasherize(property))});else css=dasherize(property)+":"+maybeAddPx(property,value)}else{for(key in property)if(!property[key]&&property[key]!==0)this.each(function(){this.style.removeProperty(dasherize(key))});else css+=dasherize(key)+":"+maybeAddPx(key,property[key])+";"}return this.each(function(){this.style.cssText+=";"+css})},index:function(element){return element?this.indexOf($(element)[0]):this.parent().children().indexOf(this[0])},hasClass:function(name){return emptyArray.some.call(this,function(el){return this.test(className(el))},classRE(name))},addClass:function(name){return this.each(function(idx){classList=[];var cls=className(this),newName=funcArg(this,name,idx,cls);newName.split(/\s+/g).forEach(function(klass){if(!$(this).hasClass(klass))classList.push(klass)},this);classList.length&&className(this,cls+(cls?" ":"")+classList.join(" "))})},removeClass:function(name){return this.each(function(idx){if(name===undefined)return className(this,"");classList=className(this);funcArg(this,name,idx,classList).split(/\s+/g).forEach(function(klass){classList=classList.replace(classRE(klass)," ")});className(this,classList.trim())})},toggleClass:function(name,when){return this.each(function(idx){var $this=$(this),names=funcArg(this,name,idx,className(this));names.split(/\s+/g).forEach(function(klass){(when===undefined?!$this.hasClass(klass):when)?$this.addClass(klass):$this.removeClass(klass)})})},scrollTop:function(){if(!this.length)return;return"scrollTop"in this[0]?this[0].scrollTop:this[0].scrollY},position:function(){if(!this.length)return;var elem=this[0],offsetParent=this.offsetParent(),offset=this.offset(),parentOffset=rootNodeRE.test(offsetParent[0].nodeName)?{top:0,left:0}:offsetParent.offset();offset.top-=parseFloat($(elem).css("margin-top"))||0;offset.left-=parseFloat($(elem).css("margin-left"))||0;parentOffset.top+=parseFloat($(offsetParent[0]).css("border-top-width"))||0;parentOffset.left+=parseFloat($(offsetParent[0]).css("border-left-width"))||0;return{top:offset.top-parentOffset.top,left:offset.left-parentOffset.left}},offsetParent:function(){return this.map(function(){var parent=this.offsetParent||document.body;while(parent&&!rootNodeRE.test(parent.nodeName)&&$(parent).css("position")=="static")parent=parent.offsetParent;return parent})}};$.fn.detach=$.fn.remove;["width","height"].forEach(function(dimension){$.fn[dimension]=function(value){var offset,el=this[0],Dimension=dimension.replace(/./,function(m){return m[0].toUpperCase()});if(value===undefined)return isWindow(el)?el["inner"+Dimension]:isDocument(el)?el.documentElement["offset"+Dimension]:(offset=this.offset())&&offset[dimension];else return this.each(function(idx){el=$(this);el.css(dimension,funcArg(this,value,idx,el[dimension]()))})}});function traverseNode(node,fun){fun(node);for(var key in node.childNodes)traverseNode(node.childNodes[key],fun)}adjacencyOperators.forEach(function(operator,operatorIndex){var inside=operatorIndex%2;$.fn[operator]=function(){var argType,nodes=$.map(arguments,function(arg){argType=type(arg);return argType=="object"||argType=="array"||arg==null?arg:zepto.fragment(arg)}),parent,copyByClone=this.length>1;if(nodes.length<1)return this;return this.each(function(_,target){parent=inside?target:target.parentNode;target=operatorIndex==0?target.nextSibling:operatorIndex==1?target.firstChild:operatorIndex==2?target:null;nodes.forEach(function(node){if(copyByClone)node=node.cloneNode(true);else if(!parent)return $(node).remove();traverseNode(parent.insertBefore(node,target),function(el){if(el.nodeName!=null&&el.nodeName.toUpperCase()==="SCRIPT"&&(!el.type||el.type==="text/javascript")&&!el.src)window["eval"].call(window,el.innerHTML)})})})};$.fn[inside?operator+"To":"insert"+(operatorIndex?"Before":"After")]=function(html){$(html)[operator](this);return this}});zepto.Z.prototype=$.fn;zepto.uniq=uniq;zepto.deserializeValue=deserializeValue;$.zepto=zepto;return $}();module.exports.$=Zepto;module.exports.Zepto=Zepto;(function($){function detect(ua){var os=this.os={},browser=this.browser={},webkit=ua.match(/WebKit\/([\d.]+)/),android=ua.match(/(Android)\s+([\d.]+)/),ipad=ua.match(/(iPad).*OS\s([\d_]+)/),iphone=!ipad&&ua.match(/(iPhone\sOS)\s([\d_]+)/),webos=ua.match(/(webOS|hpwOS)[\s\/]([\d.]+)/),touchpad=webos&&ua.match(/TouchPad/),kindle=ua.match(/Kindle\/([\d.]+)/),silk=ua.match(/Silk\/([\d._]+)/),blackberry=ua.match(/(BlackBerry).*Version\/([\d.]+)/),bb10=ua.match(/(BB10).*Version\/([\d.]+)/),rimtabletos=ua.match(/(RIM\sTablet\sOS)\s([\d.]+)/),playbook=ua.match(/PlayBook/),chrome=ua.match(/Chrome\/([\d.]+)/)||ua.match(/CriOS\/([\d.]+)/),firefox=ua.match(/Firefox\/([\d.]+)/);if(browser.webkit=!!webkit)browser.version=webkit[1];if(android)os.android=true,os.version=android[2];if(iphone)os.ios=os.iphone=true,os.version=iphone[2].replace(/_/g,".");if(ipad)os.ios=os.ipad=true,os.version=ipad[2].replace(/_/g,".");if(webos)os.webos=true,os.version=webos[2];if(touchpad)os.touchpad=true;if(blackberry)os.blackberry=true,os.version=blackberry[2];if(bb10)os.bb10=true,os.version=bb10[2];if(rimtabletos)os.rimtabletos=true,os.version=rimtabletos[2];if(playbook)browser.playbook=true;if(kindle)os.kindle=true,os.version=kindle[1];if(silk)browser.silk=true,browser.version=silk[1];if(!silk&&os.android&&ua.match(/Kindle Fire/))browser.silk=true;if(chrome)browser.chrome=true,browser.version=chrome[1];if(firefox)browser.firefox=true,browser.version=firefox[1];os.tablet=!!(ipad||playbook||android&&!ua.match(/Mobile/)||firefox&&ua.match(/Tablet/));os.phone=!!(!os.tablet&&(android||iphone||webos||blackberry||bb10||chrome&&ua.match(/Android/)||chrome&&ua.match(/CriOS\/([\d.]+)/)||firefox&&ua.match(/Mobile/)))}detect.call($,navigator.userAgent);$.__detect=detect})(Zepto);(function($){var $$=$.zepto.qsa,handlers={},_zid=1,specialEvents={},hover={mouseenter:"mouseover",mouseleave:"mouseout"};specialEvents.click=specialEvents.mousedown=specialEvents.mouseup=specialEvents.mousemove="MouseEvents";function zid(element){return element._zid||(element._zid=_zid++)}function findHandlers(element,event,fn,selector){event=parse(event);if(event.ns)var matcher=matcherFor(event.ns);return(handlers[zid(element)]||[]).filter(function(handler){return handler&&(!event.e||handler.e==event.e)&&(!event.ns||matcher.test(handler.ns))&&(!fn||zid(handler.fn)===zid(fn))&&(!selector||handler.sel==selector)})}function parse(event){var parts=(""+event).split(".");return{e:parts[0],ns:parts.slice(1).sort().join(" ")}}function matcherFor(ns){return new RegExp("(?:^| )"+ns.replace(" "," .* ?")+"(?: |$)")}function eachEvent(events,fn,iterator){if($.type(events)!="string")$.each(events,iterator);else events.split(/\s/).forEach(function(type){iterator(type,fn)})}function eventCapture(handler,captureSetting){return handler.del&&(handler.e=="focus"||handler.e=="blur")||!!captureSetting}function realEvent(type){return hover[type]||type}function add(element,events,fn,selector,getDelegate,capture){var id=zid(element),set=handlers[id]||(handlers[id]=[]);eachEvent(events,fn,function(event,fn){var handler=parse(event);handler.fn=fn;handler.sel=selector;if(handler.e in hover)fn=function(e){var related=e.relatedTarget;if(!related||related!==this&&!$.contains(this,related))return handler.fn.apply(this,arguments)};handler.del=getDelegate&&getDelegate(fn,event);var callback=handler.del||fn;handler.proxy=function(e){var result=callback.apply(element,[e].concat(e.data));if(result===false)e.preventDefault(),e.stopPropagation();return result};handler.i=set.length;set.push(handler);element.addEventListener(realEvent(handler.e),handler.proxy,eventCapture(handler,capture))})}function remove(element,events,fn,selector,capture){var id=zid(element);eachEvent(events||"",fn,function(event,fn){findHandlers(element,event,fn,selector).forEach(function(handler){delete handlers[id][handler.i];element.removeEventListener(realEvent(handler.e),handler.proxy,eventCapture(handler,capture))})})}$.event={add:add,remove:remove};$.proxy=function(fn,context){if($.isFunction(fn)){var proxyFn=function(){return fn.apply(context,arguments)};proxyFn._zid=zid(fn);return proxyFn}else if(typeof context=="string"){return $.proxy(fn[context],fn)}else{throw new TypeError("expected function")}};$.fn.bind=function(event,callback){return this.each(function(){add(this,event,callback)})};$.fn.unbind=function(event,callback){return this.each(function(){remove(this,event,callback)})};$.fn.one=function(event,callback){return this.each(function(i,element){add(this,event,callback,null,function(fn,type){return function(){var result=fn.apply(element,arguments);remove(element,type,fn);return result}})})};var returnTrue=function(){return true},returnFalse=function(){return false},ignoreProperties=/^([A-Z]|layer[XY]$)/,eventMethods={preventDefault:"isDefaultPrevented",stopImmediatePropagation:"isImmediatePropagationStopped",stopPropagation:"isPropagationStopped"};function createProxy(event){var key,proxy={originalEvent:event};for(key in event)if(!ignoreProperties.test(key)&&event[key]!==undefined)proxy[key]=event[key];$.each(eventMethods,function(name,predicate){proxy[name]=function(){this[predicate]=returnTrue;return event[name].apply(event,arguments)};proxy[predicate]=returnFalse});return proxy}function fix(event){if(!("defaultPrevented"in event)){event.defaultPrevented=false;var prevent=event.preventDefault;event.preventDefault=function(){this.defaultPrevented=true;prevent.call(this)}}}$.fn.delegate=function(selector,event,callback){return this.each(function(i,element){add(element,event,callback,selector,function(fn){return function(e){var evt,match=$(e.target).closest(selector,element).get(0);if(match){evt=$.extend(createProxy(e),{currentTarget:match,liveFired:element});return fn.apply(match,[evt].concat([].slice.call(arguments,1)))}}})})};$.fn.undelegate=function(selector,event,callback){return this.each(function(){remove(this,event,callback,selector)})};$.fn.live=function(event,callback){$(document.body).delegate(this.selector,event,callback);return this};$.fn.die=function(event,callback){$(document.body).undelegate(this.selector,event,callback);return this};$.fn.on=function(event,selector,callback){return!selector||$.isFunction(selector)?this.bind(event,selector||callback):this.delegate(selector,event,callback)};$.fn.off=function(event,selector,callback){return!selector||$.isFunction(selector)?this.unbind(event,selector||callback):this.undelegate(selector,event,callback)};$.fn.trigger=function(event,data){if(typeof event=="string"||$.isPlainObject(event))event=$.Event(event);fix(event);event.data=data;return this.each(function(){if("dispatchEvent"in this)this.dispatchEvent(event)})};$.fn.triggerHandler=function(event,data){var e,result;this.each(function(i,element){e=createProxy(typeof event=="string"?$.Event(event):event);e.data=data;e.target=element;$.each(findHandlers(element,event.type||event),function(i,handler){result=handler.proxy(e);if(e.isImmediatePropagationStopped())return false})});return result};("focusin focusout load resize scroll unload click dblclick "+"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave "+"change select keydown keypress keyup error").split(" ").forEach(function(event){$.fn[event]=function(callback){return callback?this.bind(event,callback):this.trigger(event)}});["focus","blur"].forEach(function(name){$.fn[name]=function(callback){if(callback)this.bind(name,callback);else this.each(function(){try{this[name]()}catch(e){}});return this}});$.Event=function(type,props){if(typeof type!="string")props=type,type=props.type;var event=document.createEvent(specialEvents[type]||"Events"),bubbles=true;if(props)for(var name in props)name=="bubbles"?bubbles=!!props[name]:event[name]=props[name];event.initEvent(type,bubbles,true,null,null,null,null,null,null,null,null,null,null,null,null);event.isDefaultPrevented=function(){return this.defaultPrevented};return event}})(Zepto);(function($){var jsonpID=0,document=window.document,key,name,rscript=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,scriptTypeRE=/^(?:text|application)\/javascript/i,xmlTypeRE=/^(?:text|application)\/xml/i,jsonType="application/json",htmlType="text/html",blankRE=/^\s*$/;function triggerAndReturn(context,eventName,data){var event=$.Event(eventName);$(context).trigger(event,data);return!event.defaultPrevented}function triggerGlobal(settings,context,eventName,data){if(settings.global)return triggerAndReturn(context||document,eventName,data)}$.active=0;function ajaxStart(settings){if(settings.global&&$.active++===0)triggerGlobal(settings,null,"ajaxStart")}function ajaxStop(settings){if(settings.global&&!--$.active)triggerGlobal(settings,null,"ajaxStop")}function ajaxBeforeSend(xhr,settings){var context=settings.context;if(settings.beforeSend.call(context,xhr,settings)===false||triggerGlobal(settings,context,"ajaxBeforeSend",[xhr,settings])===false)return false;triggerGlobal(settings,context,"ajaxSend",[xhr,settings])}function ajaxSuccess(data,xhr,settings){var context=settings.context,status="success";settings.success.call(context,data,status,xhr);triggerGlobal(settings,context,"ajaxSuccess",[xhr,settings,data]);ajaxComplete(status,xhr,settings)}function ajaxError(error,type,xhr,settings){var context=settings.context;settings.error.call(context,xhr,type,error);triggerGlobal(settings,context,"ajaxError",[xhr,settings,error]);ajaxComplete(type,xhr,settings)}function ajaxComplete(status,xhr,settings){var context=settings.context;settings.complete.call(context,xhr,status);triggerGlobal(settings,context,"ajaxComplete",[xhr,settings]);ajaxStop(settings)}function empty(){}$.ajaxJSONP=function(options){if(!("type"in options))return $.ajax(options);var callbackName="jsonp"+ ++jsonpID,script=document.createElement("script"),cleanup=function(){clearTimeout(abortTimeout);$(script).remove();delete window[callbackName]},abort=function(type){cleanup();if(!type||type=="timeout")window[callbackName]=empty;ajaxError(null,type||"abort",xhr,options)},xhr={abort:abort},abortTimeout;if(ajaxBeforeSend(xhr,options)===false){abort("abort");return false}window[callbackName]=function(data){cleanup();ajaxSuccess(data,xhr,options)};script.onerror=function(){abort("error")};script.src=options.url.replace(/=\?/,"="+callbackName);$("head").append(script);if(options.timeout>0)abortTimeout=setTimeout(function(){abort("timeout")},options.timeout);return xhr};$.ajaxSettings={type:"GET",beforeSend:empty,success:empty,error:empty,complete:empty,context:null,global:true,xhr:function(){return new window.XMLHttpRequest},accepts:{script:"text/javascript, application/javascript",json:jsonType,xml:"application/xml, text/xml",html:htmlType,text:"text/plain"},crossDomain:false,timeout:0,processData:true,cache:true};function mimeToDataType(mime){if(mime)mime=mime.split(";",2)[0];return mime&&(mime==htmlType?"html":mime==jsonType?"json":scriptTypeRE.test(mime)?"script":xmlTypeRE.test(mime)&&"xml")||"text"}function appendQuery(url,query){return(url+"&"+query).replace(/[&?]{1,2}/,"?")}function serializeData(options){if(options.processData&&options.data&&$.type(options.data)!="string")options.data=$.param(options.data,options.traditional);if(options.data&&(!options.type||options.type.toUpperCase()=="GET"))options.url=appendQuery(options.url,options.data)}$.ajax=function(options){var settings=$.extend({},options||{});for(key in $.ajaxSettings)if(settings[key]===undefined)settings[key]=$.ajaxSettings[key];ajaxStart(settings);if(!settings.crossDomain)settings.crossDomain=/^([\w-]+:)?\/\/([^\/]+)/.test(settings.url)&&RegExp.$2!=window.location.host;if(!settings.url)settings.url=window.location.toString();serializeData(settings);if(settings.cache===false)settings.url=appendQuery(settings.url,"_="+Date.now()); | ||
(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.aTemplate=f()}})(function(){var define,module,exports;return function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){"use strict";var range;var NS_XHTML="http://www.w3.org/1999/xhtml";var doc=typeof document==="undefined"?undefined:document;var testEl=doc?doc.body||doc.createElement("div"):{};var actualHasAttributeNS;if(testEl.hasAttributeNS){actualHasAttributeNS=function(el,namespaceURI,name){return el.hasAttributeNS(namespaceURI,name)}}else if(testEl.hasAttribute){actualHasAttributeNS=function(el,namespaceURI,name){return el.hasAttribute(name)}}else{actualHasAttributeNS=function(el,namespaceURI,name){return el.getAttributeNode(namespaceURI,name)!=null}}var hasAttributeNS=actualHasAttributeNS;function toElement(str){if(!range&&doc.createRange){range=doc.createRange();range.selectNode(doc.body)}var fragment;if(range&&range.createContextualFragment){fragment=range.createContextualFragment(str)}else{fragment=doc.createElement("body");fragment.innerHTML=str}return fragment.childNodes[0]}function compareNodeNames(fromEl,toEl){var fromNodeName=fromEl.nodeName;var toNodeName=toEl.nodeName;if(fromNodeName===toNodeName){return true}if(toEl.actualize&&fromNodeName.charCodeAt(0)<91&&toNodeName.charCodeAt(0)>90){return fromNodeName===toNodeName.toUpperCase()}else{return false}}function createElementNS(name,namespaceURI){return!namespaceURI||namespaceURI===NS_XHTML?doc.createElement(name):doc.createElementNS(namespaceURI,name)}function moveChildren(fromEl,toEl){var curChild=fromEl.firstChild;while(curChild){var nextChild=curChild.nextSibling;toEl.appendChild(curChild);curChild=nextChild}return toEl}function morphAttrs(fromNode,toNode){var attrs=toNode.attributes;var i;var attr;var attrName;var attrNamespaceURI;var attrValue;var fromValue;for(i=attrs.length-1;i>=0;--i){attr=attrs[i];attrName=attr.name;attrNamespaceURI=attr.namespaceURI;attrValue=attr.value;if(attrNamespaceURI){attrName=attr.localName||attrName;fromValue=fromNode.getAttributeNS(attrNamespaceURI,attrName);if(fromValue!==attrValue){fromNode.setAttributeNS(attrNamespaceURI,attrName,attrValue)}}else{fromValue=fromNode.getAttribute(attrName);if(fromValue!==attrValue){fromNode.setAttribute(attrName,attrValue)}}}attrs=fromNode.attributes;for(i=attrs.length-1;i>=0;--i){attr=attrs[i];if(attr.specified!==false){attrName=attr.name;attrNamespaceURI=attr.namespaceURI;if(attrNamespaceURI){attrName=attr.localName||attrName;if(!hasAttributeNS(toNode,attrNamespaceURI,attrName)){fromNode.removeAttributeNS(attrNamespaceURI,attrName)}}else{if(!hasAttributeNS(toNode,null,attrName)){fromNode.removeAttribute(attrName)}}}}}function syncBooleanAttrProp(fromEl,toEl,name){if(fromEl[name]!==toEl[name]){fromEl[name]=toEl[name];if(fromEl[name]){fromEl.setAttribute(name,"")}else{fromEl.removeAttribute(name,"")}}}var specialElHandlers={OPTION:function(fromEl,toEl){syncBooleanAttrProp(fromEl,toEl,"selected")},INPUT:function(fromEl,toEl){syncBooleanAttrProp(fromEl,toEl,"checked");syncBooleanAttrProp(fromEl,toEl,"disabled");if(fromEl.value!==toEl.value){fromEl.value=toEl.value}if(!hasAttributeNS(toEl,null,"value")){fromEl.removeAttribute("value")}},TEXTAREA:function(fromEl,toEl){var newValue=toEl.value;if(fromEl.value!==newValue){fromEl.value=newValue}if(fromEl.firstChild){if(newValue===""&&fromEl.firstChild.nodeValue===fromEl.placeholder){return}fromEl.firstChild.nodeValue=newValue}},SELECT:function(fromEl,toEl){if(!hasAttributeNS(toEl,null,"multiple")){var selectedIndex=-1;var i=0;var curChild=toEl.firstChild;while(curChild){var nodeName=curChild.nodeName;if(nodeName&&nodeName.toUpperCase()==="OPTION"){if(hasAttributeNS(curChild,null,"selected")){selectedIndex=i;break}i++}curChild=curChild.nextSibling}fromEl.selectedIndex=i}}};var ELEMENT_NODE=1;var TEXT_NODE=3;var COMMENT_NODE=8;function noop(){}function defaultGetNodeKey(node){return node.id}function morphdomFactory(morphAttrs){return function morphdom(fromNode,toNode,options){if(!options){options={}}if(typeof toNode==="string"){if(fromNode.nodeName==="#document"||fromNode.nodeName==="HTML"){var toNodeHtml=toNode;toNode=doc.createElement("html");toNode.innerHTML=toNodeHtml}else{toNode=toElement(toNode)}}var getNodeKey=options.getNodeKey||defaultGetNodeKey;var onBeforeNodeAdded=options.onBeforeNodeAdded||noop;var onNodeAdded=options.onNodeAdded||noop;var onBeforeElUpdated=options.onBeforeElUpdated||noop;var onElUpdated=options.onElUpdated||noop;var onBeforeNodeDiscarded=options.onBeforeNodeDiscarded||noop;var onNodeDiscarded=options.onNodeDiscarded||noop;var onBeforeElChildrenUpdated=options.onBeforeElChildrenUpdated||noop;var childrenOnly=options.childrenOnly===true;var fromNodesLookup={};var keyedRemovalList;function addKeyedRemoval(key){if(keyedRemovalList){keyedRemovalList.push(key)}else{keyedRemovalList=[key]}}function walkDiscardedChildNodes(node,skipKeyedNodes){if(node.nodeType===ELEMENT_NODE){var curChild=node.firstChild;while(curChild){var key=undefined;if(skipKeyedNodes&&(key=getNodeKey(curChild))){addKeyedRemoval(key)}else{onNodeDiscarded(curChild);if(curChild.firstChild){walkDiscardedChildNodes(curChild,skipKeyedNodes)}}curChild=curChild.nextSibling}}}function removeNode(node,parentNode,skipKeyedNodes){if(onBeforeNodeDiscarded(node)===false){return}if(parentNode){parentNode.removeChild(node)}onNodeDiscarded(node);walkDiscardedChildNodes(node,skipKeyedNodes)}function indexTree(node){if(node.nodeType===ELEMENT_NODE){var curChild=node.firstChild;while(curChild){var key=getNodeKey(curChild);if(key){fromNodesLookup[key]=curChild}indexTree(curChild);curChild=curChild.nextSibling}}}indexTree(fromNode);function handleNodeAdded(el){onNodeAdded(el);var curChild=el.firstChild;while(curChild){var nextSibling=curChild.nextSibling;var key=getNodeKey(curChild);if(key){var unmatchedFromEl=fromNodesLookup[key];if(unmatchedFromEl&&compareNodeNames(curChild,unmatchedFromEl)){curChild.parentNode.replaceChild(unmatchedFromEl,curChild);morphEl(unmatchedFromEl,curChild)}}handleNodeAdded(curChild);curChild=nextSibling}}function morphEl(fromEl,toEl,childrenOnly){var toElKey=getNodeKey(toEl);var curFromNodeKey;if(toElKey){delete fromNodesLookup[toElKey]}if(toNode.isSameNode&&toNode.isSameNode(fromNode)){return}if(!childrenOnly){if(onBeforeElUpdated(fromEl,toEl)===false){return}morphAttrs(fromEl,toEl);onElUpdated(fromEl);if(onBeforeElChildrenUpdated(fromEl,toEl)===false){return}}if(fromEl.nodeName!=="TEXTAREA"){var curToNodeChild=toEl.firstChild;var curFromNodeChild=fromEl.firstChild;var curToNodeKey;var fromNextSibling;var toNextSibling;var matchingFromEl;outer:while(curToNodeChild){toNextSibling=curToNodeChild.nextSibling;curToNodeKey=getNodeKey(curToNodeChild);while(curFromNodeChild){fromNextSibling=curFromNodeChild.nextSibling;if(curToNodeChild.isSameNode&&curToNodeChild.isSameNode(curFromNodeChild)){curToNodeChild=toNextSibling;curFromNodeChild=fromNextSibling;continue outer}curFromNodeKey=getNodeKey(curFromNodeChild);var curFromNodeType=curFromNodeChild.nodeType;var isCompatible=undefined;if(curFromNodeType===curToNodeChild.nodeType){if(curFromNodeType===ELEMENT_NODE){if(curToNodeKey){if(curToNodeKey!==curFromNodeKey){if(matchingFromEl=fromNodesLookup[curToNodeKey]){if(curFromNodeChild.nextSibling===matchingFromEl){isCompatible=false}else{fromEl.insertBefore(matchingFromEl,curFromNodeChild);fromNextSibling=curFromNodeChild.nextSibling;if(curFromNodeKey){addKeyedRemoval(curFromNodeKey)}else{removeNode(curFromNodeChild,fromEl,true)}curFromNodeChild=matchingFromEl}}else{isCompatible=false}}}else if(curFromNodeKey){isCompatible=false}isCompatible=isCompatible!==false&&compareNodeNames(curFromNodeChild,curToNodeChild);if(isCompatible){morphEl(curFromNodeChild,curToNodeChild)}}else if(curFromNodeType===TEXT_NODE||curFromNodeType==COMMENT_NODE){isCompatible=true;curFromNodeChild.nodeValue=curToNodeChild.nodeValue}}if(isCompatible){curToNodeChild=toNextSibling;curFromNodeChild=fromNextSibling;continue outer}if(curFromNodeKey){addKeyedRemoval(curFromNodeKey)}else{removeNode(curFromNodeChild,fromEl,true)}curFromNodeChild=fromNextSibling}if(curToNodeKey&&(matchingFromEl=fromNodesLookup[curToNodeKey])&&compareNodeNames(matchingFromEl,curToNodeChild)){fromEl.appendChild(matchingFromEl);morphEl(matchingFromEl,curToNodeChild)}else{var onBeforeNodeAddedResult=onBeforeNodeAdded(curToNodeChild);if(onBeforeNodeAddedResult!==false){if(onBeforeNodeAddedResult){curToNodeChild=onBeforeNodeAddedResult}if(curToNodeChild.actualize){curToNodeChild=curToNodeChild.actualize(fromEl.ownerDocument||doc)}fromEl.appendChild(curToNodeChild);handleNodeAdded(curToNodeChild)}}curToNodeChild=toNextSibling;curFromNodeChild=fromNextSibling}while(curFromNodeChild){fromNextSibling=curFromNodeChild.nextSibling;if(curFromNodeKey=getNodeKey(curFromNodeChild)){addKeyedRemoval(curFromNodeKey)}else{removeNode(curFromNodeChild,fromEl,true)}curFromNodeChild=fromNextSibling}}var specialElHandler=specialElHandlers[fromEl.nodeName];if(specialElHandler){specialElHandler(fromEl,toEl)}}var morphedNode=fromNode;var morphedNodeType=morphedNode.nodeType;var toNodeType=toNode.nodeType;if(!childrenOnly){if(morphedNodeType===ELEMENT_NODE){if(toNodeType===ELEMENT_NODE){if(!compareNodeNames(fromNode,toNode)){onNodeDiscarded(fromNode);morphedNode=moveChildren(fromNode,createElementNS(toNode.nodeName,toNode.namespaceURI))}}else{morphedNode=toNode}}else if(morphedNodeType===TEXT_NODE||morphedNodeType===COMMENT_NODE){if(toNodeType===morphedNodeType){morphedNode.nodeValue=toNode.nodeValue;return morphedNode}else{morphedNode=toNode}}}if(morphedNode===toNode){onNodeDiscarded(fromNode)}else{morphEl(morphedNode,toNode,childrenOnly);if(keyedRemovalList){for(var i=0,len=keyedRemovalList.length;i<len;i++){var elToRemove=fromNodesLookup[keyedRemovalList[i]];if(elToRemove){removeNode(elToRemove,elToRemove.parentNode,false)}}}}if(!childrenOnly&&morphedNode!==fromNode&&fromNode.parentNode){if(morphedNode.actualize){morphedNode=morphedNode.actualize(fromNode.ownerDocument||doc)}fromNode.parentNode.replaceChild(morphedNode,fromNode)}return morphedNode}}var morphdom=morphdomFactory(morphAttrs);module.exports=morphdom},{}],2:[function(require,module,exports){(function(undefined){if(String.prototype.trim===undefined)String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")};if(Array.prototype.reduce===undefined)Array.prototype.reduce=function(fun){if(this===void 0||this===null)throw new TypeError;var t=Object(this),len=t.length>>>0,k=0,accumulator;if(typeof fun!="function")throw new TypeError;if(len==0&&arguments.length==1)throw new TypeError;if(arguments.length>=2)accumulator=arguments[1];else do{if(k in t){accumulator=t[k++];break}if(++k>=len)throw new TypeError}while(true);while(k<len){if(k in t)accumulator=fun.call(undefined,accumulator,t[k],k,t);k++}return accumulator}})();var Zepto=function(){var undefined,key,$,classList,emptyArray=[],slice=emptyArray.slice,filter=emptyArray.filter,document=window.document,elementDisplay={},classCache={},getComputedStyle=document.defaultView.getComputedStyle,cssNumber={"column-count":1,columns:1,"font-weight":1,"line-height":1,opacity:1,"z-index":1,zoom:1},fragmentRE=/^\s*<(\w+|!)[^>]*>/,tagExpanderRE=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,rootNodeRE=/^(?:body|html)$/i,methodAttributes=["val","css","html","text","data","width","height","offset"],adjacencyOperators=["after","prepend","before","append"],table=document.createElement("table"),tableRow=document.createElement("tr"),containers={tr:document.createElement("tbody"),tbody:table,thead:table,tfoot:table,td:tableRow,th:tableRow,"*":document.createElement("div")},readyRE=/complete|loaded|interactive/,classSelectorRE=/^\.([\w-]+)$/,idSelectorRE=/^#([\w-]*)$/,tagSelectorRE=/^[\w-]+$/,class2type={},toString=class2type.toString,zepto={},camelize,uniq,tempParent=document.createElement("div");zepto.matches=function(element,selector){if(!element||element.nodeType!==1)return false;var matchesSelector=element.webkitMatchesSelector||element.mozMatchesSelector||element.oMatchesSelector||element.matchesSelector;if(matchesSelector)return matchesSelector.call(element,selector);var match,parent=element.parentNode,temp=!parent;if(temp)(parent=tempParent).appendChild(element);match=~zepto.qsa(parent,selector).indexOf(element);temp&&tempParent.removeChild(element);return match};function type(obj){return obj==null?String(obj):class2type[toString.call(obj)]||"object"}function isFunction(value){return type(value)=="function"}function isWindow(obj){return obj!=null&&obj==obj.window}function isDocument(obj){return obj!=null&&obj.nodeType==obj.DOCUMENT_NODE}function isObject(obj){return type(obj)=="object"}function isPlainObject(obj){return isObject(obj)&&!isWindow(obj)&&obj.__proto__==Object.prototype}function isArray(value){return value instanceof Array}function likeArray(obj){return typeof obj.length=="number"}function compact(array){return filter.call(array,function(item){return item!=null})}function flatten(array){return array.length>0?$.fn.concat.apply([],array):array}camelize=function(str){return str.replace(/-+(.)?/g,function(match,chr){return chr?chr.toUpperCase():""})};function dasherize(str){return str.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/_/g,"-").toLowerCase()}uniq=function(array){return filter.call(array,function(item,idx){return array.indexOf(item)==idx})};function classRE(name){return name in classCache?classCache[name]:classCache[name]=new RegExp("(^|\\s)"+name+"(\\s|$)")}function maybeAddPx(name,value){return typeof value=="number"&&!cssNumber[dasherize(name)]?value+"px":value}function defaultDisplay(nodeName){var element,display;if(!elementDisplay[nodeName]){element=document.createElement(nodeName);document.body.appendChild(element);display=getComputedStyle(element,"").getPropertyValue("display");element.parentNode.removeChild(element);display=="none"&&(display="block");elementDisplay[nodeName]=display}return elementDisplay[nodeName]}function children(element){return"children"in element?slice.call(element.children):$.map(element.childNodes,function(node){if(node.nodeType==1)return node})}zepto.fragment=function(html,name,properties){if(html.replace)html=html.replace(tagExpanderRE,"<$1></$2>");if(name===undefined)name=fragmentRE.test(html)&&RegExp.$1;if(!(name in containers))name="*";var nodes,dom,container=containers[name];container.innerHTML=""+html;dom=$.each(slice.call(container.childNodes),function(){container.removeChild(this)});if(isPlainObject(properties)){nodes=$(dom);$.each(properties,function(key,value){if(methodAttributes.indexOf(key)>-1)nodes[key](value);else nodes.attr(key,value)})}return dom};zepto.Z=function(dom,selector){dom=dom||[];dom.__proto__=$.fn;dom.selector=selector||"";return dom};zepto.isZ=function(object){return object instanceof zepto.Z};zepto.init=function(selector,context){if(!selector)return zepto.Z();else if(isFunction(selector))return $(document).ready(selector);else if(zepto.isZ(selector))return selector;else{var dom;if(isArray(selector))dom=compact(selector);else if(isObject(selector))dom=[isPlainObject(selector)?$.extend({},selector):selector],selector=null;else if(fragmentRE.test(selector))dom=zepto.fragment(selector.trim(),RegExp.$1,context),selector=null;else if(context!==undefined)return $(context).find(selector);else dom=zepto.qsa(document,selector);return zepto.Z(dom,selector)}};$=function(selector,context){return zepto.init(selector,context)};function extend(target,source,deep){for(key in source)if(deep&&(isPlainObject(source[key])||isArray(source[key]))){if(isPlainObject(source[key])&&!isPlainObject(target[key]))target[key]={};if(isArray(source[key])&&!isArray(target[key]))target[key]=[];extend(target[key],source[key],deep)}else if(source[key]!==undefined)target[key]=source[key]}$.extend=function(target){var deep,args=slice.call(arguments,1);if(typeof target=="boolean"){deep=target;target=args.shift()}args.forEach(function(arg){extend(target,arg,deep)});return target};zepto.qsa=function(element,selector){var found;return isDocument(element)&&idSelectorRE.test(selector)?(found=element.getElementById(RegExp.$1))?[found]:[]:element.nodeType!==1&&element.nodeType!==9?[]:slice.call(classSelectorRE.test(selector)?element.getElementsByClassName(RegExp.$1):tagSelectorRE.test(selector)?element.getElementsByTagName(selector):element.querySelectorAll(selector))};function filtered(nodes,selector){return selector===undefined?$(nodes):$(nodes).filter(selector)}$.contains=function(parent,node){return parent!==node&&parent.contains(node)};function funcArg(context,arg,idx,payload){return isFunction(arg)?arg.call(context,idx,payload):arg}function setAttribute(node,name,value){value==null?node.removeAttribute(name):node.setAttribute(name,value)}function className(node,value){var klass=node.className,svg=klass&&klass.baseVal!==undefined;if(value===undefined)return svg?klass.baseVal:klass;svg?klass.baseVal=value:node.className=value}function deserializeValue(value){var num;try{return value?value=="true"||(value=="false"?false:value=="null"?null:!isNaN(num=Number(value))?num:/^[\[\{]/.test(value)?$.parseJSON(value):value):value}catch(e){return value}}$.type=type;$.isFunction=isFunction;$.isWindow=isWindow;$.isArray=isArray;$.isPlainObject=isPlainObject;$.isEmptyObject=function(obj){var name;for(name in obj)return false;return true};$.inArray=function(elem,array,i){return emptyArray.indexOf.call(array,elem,i)};$.camelCase=camelize;$.trim=function(str){return str.trim()};$.uuid=0;$.support={};$.expr={};$.map=function(elements,callback){var value,values=[],i,key;if(likeArray(elements))for(i=0;i<elements.length;i++){value=callback(elements[i],i);if(value!=null)values.push(value)}else for(key in elements){value=callback(elements[key],key);if(value!=null)values.push(value)}return flatten(values)};$.each=function(elements,callback){var i,key;if(likeArray(elements)){for(i=0;i<elements.length;i++)if(callback.call(elements[i],i,elements[i])===false)return elements}else{for(key in elements)if(callback.call(elements[key],key,elements[key])===false)return elements}return elements};$.grep=function(elements,callback){return filter.call(elements,callback)};if(window.JSON)$.parseJSON=JSON.parse;$.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(i,name){class2type["[object "+name+"]"]=name.toLowerCase()});$.fn={forEach:emptyArray.forEach,reduce:emptyArray.reduce,push:emptyArray.push,sort:emptyArray.sort,indexOf:emptyArray.indexOf,concat:emptyArray.concat,map:function(fn){return $($.map(this,function(el,i){return fn.call(el,i,el)}))},slice:function(){return $(slice.apply(this,arguments))},ready:function(callback){if(readyRE.test(document.readyState))callback($);else document.addEventListener("DOMContentLoaded",function(){callback($)},false);return this},get:function(idx){return idx===undefined?slice.call(this):this[idx>=0?idx:idx+this.length]},toArray:function(){return this.get()},size:function(){return this.length},remove:function(){return this.each(function(){if(this.parentNode!=null)this.parentNode.removeChild(this)})},each:function(callback){emptyArray.every.call(this,function(el,idx){return callback.call(el,idx,el)!==false});return this},filter:function(selector){if(isFunction(selector))return this.not(this.not(selector));return $(filter.call(this,function(element){return zepto.matches(element,selector)}))},add:function(selector,context){return $(uniq(this.concat($(selector,context))))},is:function(selector){return this.length>0&&zepto.matches(this[0],selector)},not:function(selector){var nodes=[];if(isFunction(selector)&&selector.call!==undefined)this.each(function(idx){if(!selector.call(this,idx))nodes.push(this)});else{var excludes=typeof selector=="string"?this.filter(selector):likeArray(selector)&&isFunction(selector.item)?slice.call(selector):$(selector);this.forEach(function(el){if(excludes.indexOf(el)<0)nodes.push(el)})}return $(nodes)},has:function(selector){return this.filter(function(){return isObject(selector)?$.contains(this,selector):$(this).find(selector).size()})},eq:function(idx){return idx===-1?this.slice(idx):this.slice(idx,+idx+1)},first:function(){var el=this[0];return el&&!isObject(el)?el:$(el)},last:function(){var el=this[this.length-1];return el&&!isObject(el)?el:$(el)},find:function(selector){var result,$this=this;if(typeof selector=="object")result=$(selector).filter(function(){var node=this;return emptyArray.some.call($this,function(parent){return $.contains(parent,node)})});else if(this.length==1)result=$(zepto.qsa(this[0],selector));else result=this.map(function(){return zepto.qsa(this,selector)});return result},closest:function(selector,context){var node=this[0],collection=false;if(typeof selector=="object")collection=$(selector);while(node&&!(collection?collection.indexOf(node)>=0:zepto.matches(node,selector)))node=node!==context&&!isDocument(node)&&node.parentNode;return $(node)},parents:function(selector){var ancestors=[],nodes=this;while(nodes.length>0)nodes=$.map(nodes,function(node){if((node=node.parentNode)&&!isDocument(node)&&ancestors.indexOf(node)<0){ancestors.push(node);return node}});return filtered(ancestors,selector)},parent:function(selector){return filtered(uniq(this.pluck("parentNode")),selector)},children:function(selector){return filtered(this.map(function(){return children(this)}),selector)},contents:function(){return this.map(function(){return slice.call(this.childNodes)})},siblings:function(selector){return filtered(this.map(function(i,el){return filter.call(children(el.parentNode),function(child){return child!==el})}),selector)},empty:function(){return this.each(function(){this.innerHTML=""})},pluck:function(property){return $.map(this,function(el){return el[property]})},show:function(){return this.each(function(){this.style.display=="none"&&(this.style.display=null);if(getComputedStyle(this,"").getPropertyValue("display")=="none")this.style.display=defaultDisplay(this.nodeName)})},replaceWith:function(newContent){return this.before(newContent).remove()},wrap:function(structure){var func=isFunction(structure);if(this[0]&&!func)var dom=$(structure).get(0),clone=dom.parentNode||this.length>1;return this.each(function(index){$(this).wrapAll(func?structure.call(this,index):clone?dom.cloneNode(true):dom)})},wrapAll:function(structure){if(this[0]){$(this[0]).before(structure=$(structure));var children;while((children=structure.children()).length)structure=children.first();$(structure).append(this)}return this},wrapInner:function(structure){var func=isFunction(structure);return this.each(function(index){var self=$(this),contents=self.contents(),dom=func?structure.call(this,index):structure;contents.length?contents.wrapAll(dom):self.append(dom)})},unwrap:function(){this.parent().each(function(){$(this).replaceWith($(this).children())});return this},clone:function(){return this.map(function(){return this.cloneNode(true)})},hide:function(){return this.css("display","none")},toggle:function(setting){return this.each(function(){var el=$(this);(setting===undefined?el.css("display")=="none":setting)?el.show():el.hide()})},prev:function(selector){return $(this.pluck("previousElementSibling")).filter(selector||"*")},next:function(selector){return $(this.pluck("nextElementSibling")).filter(selector||"*")},html:function(html){return html===undefined?this.length>0?this[0].innerHTML:null:this.each(function(idx){var originHtml=this.innerHTML;$(this).empty().append(funcArg(this,html,idx,originHtml))})},text:function(text){return text===undefined?this.length>0?this[0].textContent:null:this.each(function(){this.textContent=text})},attr:function(name,value){var result;return typeof name=="string"&&value===undefined?this.length==0||this[0].nodeType!==1?undefined:name=="value"&&this[0].nodeName=="INPUT"?this.val():!(result=this[0].getAttribute(name))&&name in this[0]?this[0][name]:result:this.each(function(idx){if(this.nodeType!==1)return;if(isObject(name))for(key in name)setAttribute(this,key,name[key]);else setAttribute(this,name,funcArg(this,value,idx,this.getAttribute(name)))})},removeAttr:function(name){return this.each(function(){this.nodeType===1&&setAttribute(this,name)})},prop:function(name,value){return value===undefined?this[0]&&this[0][name]:this.each(function(idx){this[name]=funcArg(this,value,idx,this[name])})},data:function(name,value){var data=this.attr("data-"+dasherize(name),value);return data!==null?deserializeValue(data):undefined},val:function(value){return value===undefined?this[0]&&(this[0].multiple?$(this[0]).find("option").filter(function(o){return this.selected}).pluck("value"):this[0].value):this.each(function(idx){this.value=funcArg(this,value,idx,this.value)})},offset:function(coordinates){if(coordinates)return this.each(function(index){var $this=$(this),coords=funcArg(this,coordinates,index,$this.offset()),parentOffset=$this.offsetParent().offset(),props={top:coords.top-parentOffset.top,left:coords.left-parentOffset.left};if($this.css("position")=="static")props["position"]="relative";$this.css(props)});if(this.length==0)return null;var obj=this[0].getBoundingClientRect();return{left:obj.left+window.pageXOffset,top:obj.top+window.pageYOffset,width:Math.round(obj.width),height:Math.round(obj.height)}},css:function(property,value){if(arguments.length<2&&typeof property=="string")return this[0]&&(this[0].style[camelize(property)]||getComputedStyle(this[0],"").getPropertyValue(property));var css="";if(type(property)=="string"){if(!value&&value!==0)this.each(function(){this.style.removeProperty(dasherize(property))});else css=dasherize(property)+":"+maybeAddPx(property,value)}else{for(key in property)if(!property[key]&&property[key]!==0)this.each(function(){this.style.removeProperty(dasherize(key))});else css+=dasherize(key)+":"+maybeAddPx(key,property[key])+";"}return this.each(function(){this.style.cssText+=";"+css})},index:function(element){return element?this.indexOf($(element)[0]):this.parent().children().indexOf(this[0])},hasClass:function(name){return emptyArray.some.call(this,function(el){return this.test(className(el))},classRE(name))},addClass:function(name){return this.each(function(idx){classList=[];var cls=className(this),newName=funcArg(this,name,idx,cls);newName.split(/\s+/g).forEach(function(klass){if(!$(this).hasClass(klass))classList.push(klass)},this);classList.length&&className(this,cls+(cls?" ":"")+classList.join(" "))})},removeClass:function(name){return this.each(function(idx){if(name===undefined)return className(this,"");classList=className(this);funcArg(this,name,idx,classList).split(/\s+/g).forEach(function(klass){classList=classList.replace(classRE(klass)," ")});className(this,classList.trim())})},toggleClass:function(name,when){return this.each(function(idx){var $this=$(this),names=funcArg(this,name,idx,className(this));names.split(/\s+/g).forEach(function(klass){(when===undefined?!$this.hasClass(klass):when)?$this.addClass(klass):$this.removeClass(klass)})})},scrollTop:function(){if(!this.length)return;return"scrollTop"in this[0]?this[0].scrollTop:this[0].scrollY},position:function(){if(!this.length)return;var elem=this[0],offsetParent=this.offsetParent(),offset=this.offset(),parentOffset=rootNodeRE.test(offsetParent[0].nodeName)?{top:0,left:0}:offsetParent.offset();offset.top-=parseFloat($(elem).css("margin-top"))||0;offset.left-=parseFloat($(elem).css("margin-left"))||0;parentOffset.top+=parseFloat($(offsetParent[0]).css("border-top-width"))||0;parentOffset.left+=parseFloat($(offsetParent[0]).css("border-left-width"))||0;return{top:offset.top-parentOffset.top,left:offset.left-parentOffset.left}},offsetParent:function(){return this.map(function(){var parent=this.offsetParent||document.body;while(parent&&!rootNodeRE.test(parent.nodeName)&&$(parent).css("position")=="static")parent=parent.offsetParent;return parent})}};$.fn.detach=$.fn.remove;["width","height"].forEach(function(dimension){$.fn[dimension]=function(value){var offset,el=this[0],Dimension=dimension.replace(/./,function(m){return m[0].toUpperCase()});if(value===undefined)return isWindow(el)?el["inner"+Dimension]:isDocument(el)?el.documentElement["offset"+Dimension]:(offset=this.offset())&&offset[dimension];else return this.each(function(idx){el=$(this);el.css(dimension,funcArg(this,value,idx,el[dimension]()))})}});function traverseNode(node,fun){fun(node);for(var key in node.childNodes)traverseNode(node.childNodes[key],fun)}adjacencyOperators.forEach(function(operator,operatorIndex){var inside=operatorIndex%2;$.fn[operator]=function(){var argType,nodes=$.map(arguments,function(arg){argType=type(arg);return argType=="object"||argType=="array"||arg==null?arg:zepto.fragment(arg)}),parent,copyByClone=this.length>1;if(nodes.length<1)return this;return this.each(function(_,target){parent=inside?target:target.parentNode;target=operatorIndex==0?target.nextSibling:operatorIndex==1?target.firstChild:operatorIndex==2?target:null;nodes.forEach(function(node){if(copyByClone)node=node.cloneNode(true);else if(!parent)return $(node).remove();traverseNode(parent.insertBefore(node,target),function(el){if(el.nodeName!=null&&el.nodeName.toUpperCase()==="SCRIPT"&&(!el.type||el.type==="text/javascript")&&!el.src)window["eval"].call(window,el.innerHTML)})})})};$.fn[inside?operator+"To":"insert"+(operatorIndex?"Before":"After")]=function(html){$(html)[operator](this);return this}});zepto.Z.prototype=$.fn;zepto.uniq=uniq;zepto.deserializeValue=deserializeValue;$.zepto=zepto;return $}();module.exports.$=Zepto;module.exports.Zepto=Zepto;(function($){function detect(ua){var os=this.os={},browser=this.browser={},webkit=ua.match(/WebKit\/([\d.]+)/),android=ua.match(/(Android)\s+([\d.]+)/),ipad=ua.match(/(iPad).*OS\s([\d_]+)/),iphone=!ipad&&ua.match(/(iPhone\sOS)\s([\d_]+)/),webos=ua.match(/(webOS|hpwOS)[\s\/]([\d.]+)/),touchpad=webos&&ua.match(/TouchPad/),kindle=ua.match(/Kindle\/([\d.]+)/),silk=ua.match(/Silk\/([\d._]+)/),blackberry=ua.match(/(BlackBerry).*Version\/([\d.]+)/),bb10=ua.match(/(BB10).*Version\/([\d.]+)/),rimtabletos=ua.match(/(RIM\sTablet\sOS)\s([\d.]+)/),playbook=ua.match(/PlayBook/),chrome=ua.match(/Chrome\/([\d.]+)/)||ua.match(/CriOS\/([\d.]+)/),firefox=ua.match(/Firefox\/([\d.]+)/);if(browser.webkit=!!webkit)browser.version=webkit[1];if(android)os.android=true,os.version=android[2];if(iphone)os.ios=os.iphone=true,os.version=iphone[2].replace(/_/g,".");if(ipad)os.ios=os.ipad=true,os.version=ipad[2].replace(/_/g,".");if(webos)os.webos=true,os.version=webos[2];if(touchpad)os.touchpad=true;if(blackberry)os.blackberry=true,os.version=blackberry[2];if(bb10)os.bb10=true,os.version=bb10[2];if(rimtabletos)os.rimtabletos=true,os.version=rimtabletos[2];if(playbook)browser.playbook=true;if(kindle)os.kindle=true,os.version=kindle[1];if(silk)browser.silk=true,browser.version=silk[1];if(!silk&&os.android&&ua.match(/Kindle Fire/))browser.silk=true;if(chrome)browser.chrome=true,browser.version=chrome[1];if(firefox)browser.firefox=true,browser.version=firefox[1];os.tablet=!!(ipad||playbook||android&&!ua.match(/Mobile/)||firefox&&ua.match(/Tablet/));os.phone=!!(!os.tablet&&(android||iphone||webos||blackberry||bb10||chrome&&ua.match(/Android/)||chrome&&ua.match(/CriOS\/([\d.]+)/)||firefox&&ua.match(/Mobile/)))}detect.call($,navigator.userAgent); | ||
var dataType=settings.dataType,hasPlaceholder=/=\?/.test(settings.url);if(dataType=="jsonp"||hasPlaceholder){if(!hasPlaceholder)settings.url=appendQuery(settings.url,"callback=?");return $.ajaxJSONP(settings)}var mime=settings.accepts[dataType],baseHeaders={},protocol=/^([\w-]+:)\/\//.test(settings.url)?RegExp.$1:window.location.protocol,xhr=settings.xhr(),abortTimeout;if(!settings.crossDomain)baseHeaders["X-Requested-With"]="XMLHttpRequest";if(mime){baseHeaders["Accept"]=mime;if(mime.indexOf(",")>-1)mime=mime.split(",",2)[0];xhr.overrideMimeType&&xhr.overrideMimeType(mime)}if(settings.contentType||settings.contentType!==false&&settings.data&&settings.type.toUpperCase()!="GET")baseHeaders["Content-Type"]=settings.contentType||"application/x-www-form-urlencoded";settings.headers=$.extend(baseHeaders,settings.headers||{});xhr.onreadystatechange=function(){if(xhr.readyState==4){xhr.onreadystatechange=empty;clearTimeout(abortTimeout);var result,error=false;if(xhr.status>=200&&xhr.status<300||xhr.status==304||xhr.status==0&&protocol=="file:"){dataType=dataType||mimeToDataType(xhr.getResponseHeader("content-type"));result=xhr.responseText;try{if(dataType=="script")(1,eval)(result);else if(dataType=="xml")result=xhr.responseXML;else if(dataType=="json")result=blankRE.test(result)?null:$.parseJSON(result)}catch(e){error=e}if(error)ajaxError(error,"parsererror",xhr,settings);else ajaxSuccess(result,xhr,settings)}else{ajaxError(null,xhr.status?"error":"abort",xhr,settings)}}};var async="async"in settings?settings.async:true;xhr.open(settings.type,settings.url,async);for(name in settings.headers)xhr.setRequestHeader(name,settings.headers[name]);if(ajaxBeforeSend(xhr,settings)===false){xhr.abort();return false}if(settings.timeout>0)abortTimeout=setTimeout(function(){xhr.onreadystatechange=empty;xhr.abort();ajaxError(null,"timeout",xhr,settings)},settings.timeout);xhr.send(settings.data?settings.data:null);return xhr};function parseArguments(url,data,success,dataType){var hasData=!$.isFunction(data);return{url:url,data:hasData?data:undefined,success:!hasData?data:$.isFunction(success)?success:undefined,dataType:hasData?dataType||success:success}}$.get=function(url,data,success,dataType){return $.ajax(parseArguments.apply(null,arguments))};$.post=function(url,data,success,dataType){var options=parseArguments.apply(null,arguments);options.type="POST";return $.ajax(options)};$.getJSON=function(url,data,success){var options=parseArguments.apply(null,arguments);options.dataType="json";return $.ajax(options)};$.fn.load=function(url,data,success){if(!this.length)return this;var self=this,parts=url.split(/\s/),selector,options=parseArguments(url,data,success),callback=options.success;if(parts.length>1)options.url=parts[0],selector=parts[1];options.success=function(response){self.html(selector?$("<div>").html(response.replace(rscript,"")).find(selector):response);callback&&callback.apply(self,arguments)};$.ajax(options);return this};var escape=encodeURIComponent;function serialize(params,obj,traditional,scope){var type,array=$.isArray(obj);$.each(obj,function(key,value){type=$.type(value);if(scope)key=traditional?scope:scope+"["+(array?"":key)+"]";if(!scope&&array)params.add(value.name,value.value);else if(type=="array"||!traditional&&type=="object")serialize(params,value,traditional,key);else params.add(key,value)})}$.param=function(obj,traditional){var params=[];params.add=function(k,v){this.push(escape(k)+"="+escape(v))};serialize(params,obj,traditional);return params.join("&").replace(/%20/g,"+")}})(Zepto);(function($){$.fn.serializeArray=function(){var result=[],el;$(Array.prototype.slice.call(this.get(0).elements)).each(function(){el=$(this);var type=el.attr("type");if(this.nodeName.toLowerCase()!="fieldset"&&!this.disabled&&type!="submit"&&type!="reset"&&type!="button"&&(type!="radio"&&type!="checkbox"||this.checked))result.push({name:el.attr("name"),value:el.val()})});return result};$.fn.serialize=function(){var result=[];this.serializeArray().forEach(function(elm){result.push(encodeURIComponent(elm.name)+"="+encodeURIComponent(elm.value))});return result.join("&")};$.fn.submit=function(callback){if(callback)this.bind("submit",callback);else if(this.length){var event=$.Event("submit");this.eq(0).trigger(event);if(!event.defaultPrevented)this.get(0).submit()}return this}})(Zepto);(function($,undefined){var prefix="",eventPrefix,endEventName,endAnimationName,vendors={Webkit:"webkit",Moz:"",O:"o",ms:"MS"},document=window.document,testEl=document.createElement("div"),supportedTransforms=/^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i,transform,transitionProperty,transitionDuration,transitionTiming,animationName,animationDuration,animationTiming,cssReset={};function dasherize(str){return downcase(str.replace(/([a-z])([A-Z])/,"$1-$2"))}function downcase(str){return str.toLowerCase()}function normalizeEvent(name){return eventPrefix?eventPrefix+name:downcase(name)}$.each(vendors,function(vendor,event){if(testEl.style[vendor+"TransitionProperty"]!==undefined){prefix="-"+downcase(vendor)+"-";eventPrefix=event;return false}});transform=prefix+"transform";cssReset[transitionProperty=prefix+"transition-property"]=cssReset[transitionDuration=prefix+"transition-duration"]=cssReset[transitionTiming=prefix+"transition-timing-function"]=cssReset[animationName=prefix+"animation-name"]=cssReset[animationDuration=prefix+"animation-duration"]=cssReset[animationTiming=prefix+"animation-timing-function"]="";$.fx={off:eventPrefix===undefined&&testEl.style.transitionProperty===undefined,speeds:{_default:400,fast:200,slow:600},cssPrefix:prefix,transitionEnd:normalizeEvent("TransitionEnd"),animationEnd:normalizeEvent("AnimationEnd")};$.fn.animate=function(properties,duration,ease,callback){if($.isPlainObject(duration))ease=duration.easing,callback=duration.complete,duration=duration.duration;if(duration)duration=(typeof duration=="number"?duration:$.fx.speeds[duration]||$.fx.speeds._default)/1e3;return this.anim(properties,duration,ease,callback)};$.fn.anim=function(properties,duration,ease,callback){var key,cssValues={},cssProperties,transforms="",that=this,wrappedCallback,endEvent=$.fx.transitionEnd;if(duration===undefined)duration=.4;if($.fx.off)duration=0;if(typeof properties=="string"){cssValues[animationName]=properties;cssValues[animationDuration]=duration+"s";cssValues[animationTiming]=ease||"linear";endEvent=$.fx.animationEnd}else{cssProperties=[];for(key in properties)if(supportedTransforms.test(key))transforms+=key+"("+properties[key]+") ";else cssValues[key]=properties[key],cssProperties.push(dasherize(key));if(transforms)cssValues[transform]=transforms,cssProperties.push(transform);if(duration>0&&typeof properties==="object"){cssValues[transitionProperty]=cssProperties.join(", ");cssValues[transitionDuration]=duration+"s";cssValues[transitionTiming]=ease||"linear"}}wrappedCallback=function(event){if(typeof event!=="undefined"){if(event.target!==event.currentTarget)return;$(event.target).unbind(endEvent,wrappedCallback)}$(this).css(cssReset);callback&&callback.call(this)};if(duration>0)this.bind(endEvent,wrappedCallback);this.size()&&this.get(0).clientLeft;this.css(cssValues);if(duration<=0)setTimeout(function(){that.each(function(){wrappedCallback.call(this)})},0);return this};testEl=null})(Zepto)},{}],2:[function(require,module,exports){"use strict";var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor}}();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}var $=require("zepto-browserify").$;var objs=[];var eventType="input copy paste click change keydown keyup contextmenu mouseup mousedown mousemove touchstart touchend touchmove compositionstart compositionend";var dataAction=eventType.replace(/([a-z]+)/g,"[data-action-$1],")+"[data-action]";var getObjectById=function getObjectById(id){for(var i=0,n=objs.length;i<n;i++){var obj=objs[i];var templates=obj.templates;for(var t=0,m=templates.length;t<m;t++){if(templates[t]==id){return obj}}}return null};if(typeof jQuery!=="undefined"){$=jQuery}if(typeof document!=="undefined"){$(document).on("input change click","[data-bind]",function(e){var data=$(this).data("bind");var val=$(this).val();var attr=$(this).attr("href");if(attr){val=attr.replace("#","")}var id=$(this).parents("[data-id]").data("id");if(id){var obj=getObjectById(id);if($(e.target).attr("type")=="radio"){if($(this).is(":checked")){obj.updateDataByString(data,val)}else{obj.updateDataByString(data,"")}}else if($(e.target).attr("type")=="checkbox"){var arr=[];$('[data-bind="'+data+'"]').each(function(){if($(this).is(":checked")){arr.push($(this).val())}});obj.updateDataByString(data,arr)}else{obj.updateDataByString(data,val)}}});$(document).on(eventType,dataAction,function(e){if(e.type=="click"&&$(e.target).is("select")){return}if(e.type=="input"&&$(e.target).attr("type")=="button"){return}var events=eventType.split(" ");var $self=$(this);var action="action";events.forEach(function(event){if($self.data("action-"+event)){if(e.type===event){action+="-"+event}}});var string=$self.data(action);if(!string){return}var action=string.replace(/\(.*?\);?/,"");var parameter=string.replace(/(.*?)\((.*?)\);?/,"$2");var pts=parameter.split(",");var id=$self.parents("[data-id]").data("id");if(id){var obj=getObjectById(id);obj.e=e;if(obj.method&&obj.method[action]){obj.method[action].apply(obj,pts)}else if(obj[action]){obj[action].apply(obj,pts)}}})}var aTemplate=function(){function aTemplate(opt){_classCallCheck(this,aTemplate);objs.push(this);for(var i in opt){this[i]=opt[i]}if(!this.data){this.data={}}this.setId()}_createClass(aTemplate,[{key:"addTemplate",value:function addTemplate(template,id){$("body").append("<script type='text/template' id='"+id+"'>"+template+"</script>");if(!this.templates){this.templates=[]}this.templates.push(id)}},{key:"loadHtml",value:function loadHtml(){var templates=this.templates;var promises=[];templates.forEach(function(template){var d=new $.Deferred;promises.push(d);var src=$("#"+template).attr("src");$.ajax({url:src,type:"GET",dataType:"text"}).success(function(data){$("#"+template).html(data);d.resolve()})});return $.when.apply($,promises)}},{key:"getData",value:function getData(){return JSON.parse(JSON.stringify(this.data))}},{key:"saveData",value:function saveData(key){var data=JSON.stringify(this.data);localStorage.setItem(key,data)}},{key:"setData",value:function setData(val){for(var i in val){if(typeof val[i]!=="function"){this.data[i]=val[i]}}}},{key:"loadData",value:function loadData(key){var data=JSON.parse(localStorage.getItem(key));if(data){for(var i in data){if(typeof data[i]!=="function"){this.data[i]=data[i]}}}}},{key:"getRand",value:function getRand(a,b){return~~(Math.random()*(b-a+1))+a}},{key:"getRandText",value:function getRandText(limit){var ret="";var strings="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";var length=strings.length;for(var i=0;i<limit;i++){ret+=strings.charAt(Math.floor(this.getRand(0,length)))}return ret}},{key:"setId",value:function setId(){var text;var ids=aTemplate.ids;var flag=false;while(1){text=this.getRandText(10);for(var i=0,n=aTemplate.ids;i<n;i++){if(aTemplate.ids[i]===text){flag=true}}if(flag===false){break}}this.data.aTemplate_id=text}},{key:"getDataFromObj",value:function getDataFromObj(s,o){s=s.replace(/\[([a-zA-Z0-9._-]+)\]/g,".$1");s=s.replace(/^\./,"");var a=s.split(".");while(a.length){var n=a.shift();if(n in o){o=o[n]}else{return}}return o}},{key:"getDataByString",value:function getDataByString(s){var o=this.data;return this.getDataFromObj(s,o)}},{key:"updateDataByString",value:function updateDataByString(path,newValue){var object=this.data;var stack=path.split(".");while(stack.length>1){object=object[stack.shift()]}object[stack.shift()]=newValue}},{key:"removeDataByString",value:function removeDataByString(path){var object=this.data;var stack=path.split(".");while(stack.length>1){object=object[stack.shift()]}var shift=stack.shift();if(shift.match(/^\d+$/)){object.splice(Number(shift),1)}else{delete object[shift]}}},{key:"resolveBlock",value:function resolveBlock(html,item,i){var that=this;var touchs=html.match(/<!-- BEGIN ([a-zA-Z0-9._-]+):touch#([a-zA-Z0-9._-]+) -->/g);var touchnots=html.match(/<!-- BEGIN ([a-zA-Z0-9._-]+):touchnot#([a-zA-Z0-9._-]+) -->/g);var exists=html.match(/<!-- BEGIN ([a-zA-Z0-9._-]+):exist -->/g);var empties=html.match(/<!-- BEGIN ([a-zA-Z0-9._-]+):empty -->/g);if(touchs){for(var k=0,n=touchs.length;k<n;k++){var start=touchs[k];start=start.replace(/([a-zA-Z0-9._-]+):touch#([a-zA-Z0-9._-]+)/,"($1):touch#($2)");var end=start.replace(/BEGIN/,"END");var reg=new RegExp(start+"(([\\n\\r\\t]|.)*?)"+end,"g");html=html.replace(reg,function(m,key2,val,next){var itemkey=typeof item[key2]==="function"?item[key2].apply(that):that.getDataFromObj(key2,item);if(itemkey==val){return next}else{return""}})}}if(touchnots){for(var k=0,n=touchnots.length;k<n;k++){var start=touchnots[k];start=start.replace(/([a-zA-Z0-9._-]+):touchnot#([a-zA-Z0-9._-]+)/,"($1):touchnot#($2)");var end=start.replace(/BEGIN/,"END");var reg=new RegExp(start+"(([\\n\\r\\t]|.)*?)"+end,"g");html=html.replace(reg,function(m,key2,val,next){var itemkey=typeof item[key2]==="function"?item[key2].apply(that):that.getDataFromObj(key2,item);if(itemkey!=val){return next}else{return""}})}}if(exists){for(var k=0,n=exists.length;k<n;k++){var start=exists[k];start=start.replace(/([a-zA-Z0-9._-]+):exist/,"($1):exist");var end=start.replace(/BEGIN/,"END");var reg=new RegExp(start+"(([\\n\\r\\t]|.)*?)"+end,"g");html=html.replace(reg,function(m,key2,next){var itemkey=typeof item[key2]==="function"?item[key2].apply(that):that.getDataFromObj(key2,item);if(itemkey){return next}else{return""}})}}if(empties){for(var k=0,n=empties.length;k<n;k++){var start=empties[k];start=start.replace(/([a-zA-Z0-9._-]+):empty/,"($1):empty");var end=start.replace(/BEGIN/,"END");var empty=new RegExp(start+"(([\\n\\r\\t]|.)*?)"+end,"g");html=html.replace(empty,function(m,key2,next){var itemkey=typeof item[key2]==="function"?item[key2].apply(that):that.getDataFromObj(key2,item);if(!itemkey){return next}else{return""}})}}html=html.replace(/{([a-zA-Z0-9._-]+)}(\[([a-zA-Z0-9._-]+)\])*/g,function(n,key3,key4,converter){var data;if(key3=="i"){data=i}else{if(item[key3]){if(typeof item[key3]==="function"){data=item[key3].apply(that)}else{data=item[key3]}}else{if(converter&&that.convert&&that.convert[converter]){return that.convert[converter].call(that,"")}else{return""}}}if(converter&&that.convert&&that.convert[converter]){return that.convert[converter].call(that,data)}else{return data}});return html}},{key:"resolveAbsBlock",value:function resolveAbsBlock(html){var that=this;html=html.replace(/{(.*?)}/g,function(n,key3){var data=that.getDataByString(key3);if(typeof data!=="undefined"){if(typeof data==="function"){return data.apply(that)}else{return data}}else{return n}});return html}},{key:"resolveInclude",value:function resolveInclude(html){var include=/<!-- #include id="(.*?)" -->/g;html=html.replace(include,function(m,key){return $("#"+key).html()});return html}},{key:"resolveWith",value:function resolveWith(html){var width=/<!-- BEGIN ([a-zA-Z0-9._-]+):with -->(([\n\r\t]|.)*?)<!-- END ([a-zA-Z0-9._-]+):with -->/g;html=html.replace(width,function(m,key,val){m=m.replace(/data\-bind=['"](.*?)['"]/g,"data-bind='"+key+".$1'");return m});return html}},{key:"resolveLoop",value:function resolveLoop(html){var loop=/<!-- BEGIN (.+?):loop -->(([\n\r\t]|.)*?)<!-- END (.+?):loop -->/g;var that=this;html=html.replace(loop,function(m,key,val){var keyItem=that.getDataByString(key);var keys=[];if(typeof keyItem==="function"){keys=keyItem.apply(that)}else{keys=keyItem}var ret="";if(keys instanceof Array){for(var i=0,n=keys.length;i<n;i++){ret+=that.resolveBlock(val,keys[i],i)}}ret=ret.replace(/\\([^\\])/g,"$1");return ret});return html}},{key:"removeData",value:function removeData(arr){var data=this.data;for(var i in data){for(var t=0,n=arr.length;t<n;t++){if(i===arr[t]){delete data[i]}}}return this}},{key:"hasLoop",value:function hasLoop(txt){var loop=/<!-- BEGIN (.+?):loop -->(([\n\r\t]|.)*?)<!-- END (.+?):loop -->/g;if(txt.match(loop)){return true}else{return false}}},{key:"getHtml",value:function getHtml(selector,row){var $template=$(selector);var html=$template.html();if(row){html=selector}if(!html){return""}var data=this.data;html=this.resolveInclude(html);html=this.resolveWith(html);while(this.hasLoop(html)){html=this.resolveLoop(html)}html=this.resolveBlock(html,data);html=html.replace(/\\([^\\])/g,"$1");html=this.resolveAbsBlock(html);return html.replace(/^([\t ])*\n/gm,"")}},{key:"update",value:function update(txt,part){var html=this.getHtml();var templates=this.templates;var renderWay=txt||"html";if(this.beforeUpdated){this.beforeUpdated()}for(var i=0,n=templates.length;i<n;i++){var tem=templates[i];var selector="#"+tem;var html=this.getHtml(selector);var $target=$("[data-id='"+tem+"']");if(!part||part==tem){if($target.length==0){var $newitem=$("<div data-id='"+tem+"'></div>");$newitem[renderWay](html);$(selector).after($newitem)}else{$target[renderWay](html)}if(part){break}}}this.updateBindingData(part);if(this.onUpdated){this.onUpdated()}return this}},{key:"updateBindingData",value:function updateBindingData(part){var that=this;var templates=that.templates;for(var i=0,n=templates.length;i<n;i++){var temp=templates[i];if(!part||part==temp){var $template=$("[data-id='"+temp+"']");$template.find("[data-bind]").each(function(){var data=that.getDataByString($(this).data("bind"));if($(this).attr("type")=="checkbox"||$(this).attr("type")=="radio"){if(data==$(this).val()){$(this).prop("checked",true)}}else{$(this).val(data)}});if(part){break}}}return this}},{key:"copyToClipBoard",value:function copyToClipBoard(){var copyArea=$("<textarea/>");$("body").append(copyArea);copyArea.text(this.getHtml());copyArea.select();document.execCommand("copy");copyArea.remove();return this}},{key:"applyMethod",value:function applyMethod(method){var args=[].splice.call(arguments,0);args.shift();return this.method[method].apply(this,args)}},{key:"getComputedProp",value:function getComputedProp(prop){return this.data[prop].apply(this)}},{key:"remove",value:function remove(path){var object=this.data;var stack=path.split(".");while(stack.length>1){object=object[stack.shift()]}var shift=stack.shift();if(shift.match(/^\d+$/)){object.splice(Number(shift),1)}else{delete object[shift]}return this}}]);return aTemplate}();module.exports=aTemplate},{"zepto-browserify":1}]},{},[2])(2)}); | ||
$.__detect=detect})(Zepto);(function($){var $$=$.zepto.qsa,handlers={},_zid=1,specialEvents={},hover={mouseenter:"mouseover",mouseleave:"mouseout"};specialEvents.click=specialEvents.mousedown=specialEvents.mouseup=specialEvents.mousemove="MouseEvents";function zid(element){return element._zid||(element._zid=_zid++)}function findHandlers(element,event,fn,selector){event=parse(event);if(event.ns)var matcher=matcherFor(event.ns);return(handlers[zid(element)]||[]).filter(function(handler){return handler&&(!event.e||handler.e==event.e)&&(!event.ns||matcher.test(handler.ns))&&(!fn||zid(handler.fn)===zid(fn))&&(!selector||handler.sel==selector)})}function parse(event){var parts=(""+event).split(".");return{e:parts[0],ns:parts.slice(1).sort().join(" ")}}function matcherFor(ns){return new RegExp("(?:^| )"+ns.replace(" "," .* ?")+"(?: |$)")}function eachEvent(events,fn,iterator){if($.type(events)!="string")$.each(events,iterator);else events.split(/\s/).forEach(function(type){iterator(type,fn)})}function eventCapture(handler,captureSetting){return handler.del&&(handler.e=="focus"||handler.e=="blur")||!!captureSetting}function realEvent(type){return hover[type]||type}function add(element,events,fn,selector,getDelegate,capture){var id=zid(element),set=handlers[id]||(handlers[id]=[]);eachEvent(events,fn,function(event,fn){var handler=parse(event);handler.fn=fn;handler.sel=selector;if(handler.e in hover)fn=function(e){var related=e.relatedTarget;if(!related||related!==this&&!$.contains(this,related))return handler.fn.apply(this,arguments)};handler.del=getDelegate&&getDelegate(fn,event);var callback=handler.del||fn;handler.proxy=function(e){var result=callback.apply(element,[e].concat(e.data));if(result===false)e.preventDefault(),e.stopPropagation();return result};handler.i=set.length;set.push(handler);element.addEventListener(realEvent(handler.e),handler.proxy,eventCapture(handler,capture))})}function remove(element,events,fn,selector,capture){var id=zid(element);eachEvent(events||"",fn,function(event,fn){findHandlers(element,event,fn,selector).forEach(function(handler){delete handlers[id][handler.i];element.removeEventListener(realEvent(handler.e),handler.proxy,eventCapture(handler,capture))})})}$.event={add:add,remove:remove};$.proxy=function(fn,context){if($.isFunction(fn)){var proxyFn=function(){return fn.apply(context,arguments)};proxyFn._zid=zid(fn);return proxyFn}else if(typeof context=="string"){return $.proxy(fn[context],fn)}else{throw new TypeError("expected function")}};$.fn.bind=function(event,callback){return this.each(function(){add(this,event,callback)})};$.fn.unbind=function(event,callback){return this.each(function(){remove(this,event,callback)})};$.fn.one=function(event,callback){return this.each(function(i,element){add(this,event,callback,null,function(fn,type){return function(){var result=fn.apply(element,arguments);remove(element,type,fn);return result}})})};var returnTrue=function(){return true},returnFalse=function(){return false},ignoreProperties=/^([A-Z]|layer[XY]$)/,eventMethods={preventDefault:"isDefaultPrevented",stopImmediatePropagation:"isImmediatePropagationStopped",stopPropagation:"isPropagationStopped"};function createProxy(event){var key,proxy={originalEvent:event};for(key in event)if(!ignoreProperties.test(key)&&event[key]!==undefined)proxy[key]=event[key];$.each(eventMethods,function(name,predicate){proxy[name]=function(){this[predicate]=returnTrue;return event[name].apply(event,arguments)};proxy[predicate]=returnFalse});return proxy}function fix(event){if(!("defaultPrevented"in event)){event.defaultPrevented=false;var prevent=event.preventDefault;event.preventDefault=function(){this.defaultPrevented=true;prevent.call(this)}}}$.fn.delegate=function(selector,event,callback){return this.each(function(i,element){add(element,event,callback,selector,function(fn){return function(e){var evt,match=$(e.target).closest(selector,element).get(0);if(match){evt=$.extend(createProxy(e),{currentTarget:match,liveFired:element});return fn.apply(match,[evt].concat([].slice.call(arguments,1)))}}})})};$.fn.undelegate=function(selector,event,callback){return this.each(function(){remove(this,event,callback,selector)})};$.fn.live=function(event,callback){$(document.body).delegate(this.selector,event,callback);return this};$.fn.die=function(event,callback){$(document.body).undelegate(this.selector,event,callback);return this};$.fn.on=function(event,selector,callback){return!selector||$.isFunction(selector)?this.bind(event,selector||callback):this.delegate(selector,event,callback)};$.fn.off=function(event,selector,callback){return!selector||$.isFunction(selector)?this.unbind(event,selector||callback):this.undelegate(selector,event,callback)};$.fn.trigger=function(event,data){if(typeof event=="string"||$.isPlainObject(event))event=$.Event(event);fix(event);event.data=data;return this.each(function(){if("dispatchEvent"in this)this.dispatchEvent(event)})};$.fn.triggerHandler=function(event,data){var e,result;this.each(function(i,element){e=createProxy(typeof event=="string"?$.Event(event):event);e.data=data;e.target=element;$.each(findHandlers(element,event.type||event),function(i,handler){result=handler.proxy(e);if(e.isImmediatePropagationStopped())return false})});return result};("focusin focusout load resize scroll unload click dblclick "+"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave "+"change select keydown keypress keyup error").split(" ").forEach(function(event){$.fn[event]=function(callback){return callback?this.bind(event,callback):this.trigger(event)}});["focus","blur"].forEach(function(name){$.fn[name]=function(callback){if(callback)this.bind(name,callback);else this.each(function(){try{this[name]()}catch(e){}});return this}});$.Event=function(type,props){if(typeof type!="string")props=type,type=props.type;var event=document.createEvent(specialEvents[type]||"Events"),bubbles=true;if(props)for(var name in props)name=="bubbles"?bubbles=!!props[name]:event[name]=props[name];event.initEvent(type,bubbles,true,null,null,null,null,null,null,null,null,null,null,null,null);event.isDefaultPrevented=function(){return this.defaultPrevented};return event}})(Zepto);(function($){var jsonpID=0,document=window.document,key,name,rscript=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,scriptTypeRE=/^(?:text|application)\/javascript/i,xmlTypeRE=/^(?:text|application)\/xml/i,jsonType="application/json",htmlType="text/html",blankRE=/^\s*$/;function triggerAndReturn(context,eventName,data){var event=$.Event(eventName);$(context).trigger(event,data);return!event.defaultPrevented}function triggerGlobal(settings,context,eventName,data){if(settings.global)return triggerAndReturn(context||document,eventName,data)}$.active=0;function ajaxStart(settings){if(settings.global&&$.active++===0)triggerGlobal(settings,null,"ajaxStart")}function ajaxStop(settings){if(settings.global&&!--$.active)triggerGlobal(settings,null,"ajaxStop")}function ajaxBeforeSend(xhr,settings){var context=settings.context;if(settings.beforeSend.call(context,xhr,settings)===false||triggerGlobal(settings,context,"ajaxBeforeSend",[xhr,settings])===false)return false;triggerGlobal(settings,context,"ajaxSend",[xhr,settings])}function ajaxSuccess(data,xhr,settings){var context=settings.context,status="success";settings.success.call(context,data,status,xhr);triggerGlobal(settings,context,"ajaxSuccess",[xhr,settings,data]);ajaxComplete(status,xhr,settings)}function ajaxError(error,type,xhr,settings){var context=settings.context;settings.error.call(context,xhr,type,error);triggerGlobal(settings,context,"ajaxError",[xhr,settings,error]);ajaxComplete(type,xhr,settings)}function ajaxComplete(status,xhr,settings){var context=settings.context;settings.complete.call(context,xhr,status);triggerGlobal(settings,context,"ajaxComplete",[xhr,settings]);ajaxStop(settings)}function empty(){}$.ajaxJSONP=function(options){if(!("type"in options))return $.ajax(options);var callbackName="jsonp"+ ++jsonpID,script=document.createElement("script"),cleanup=function(){clearTimeout(abortTimeout);$(script).remove();delete window[callbackName]},abort=function(type){cleanup();if(!type||type=="timeout")window[callbackName]=empty;ajaxError(null,type||"abort",xhr,options)},xhr={abort:abort},abortTimeout;if(ajaxBeforeSend(xhr,options)===false){abort("abort");return false}window[callbackName]=function(data){cleanup();ajaxSuccess(data,xhr,options)};script.onerror=function(){abort("error")};script.src=options.url.replace(/=\?/,"="+callbackName);$("head").append(script);if(options.timeout>0)abortTimeout=setTimeout(function(){abort("timeout")},options.timeout);return xhr};$.ajaxSettings={type:"GET",beforeSend:empty,success:empty,error:empty,complete:empty,context:null,global:true,xhr:function(){return new window.XMLHttpRequest},accepts:{script:"text/javascript, application/javascript",json:jsonType,xml:"application/xml, text/xml",html:htmlType,text:"text/plain"},crossDomain:false,timeout:0,processData:true,cache:true};function mimeToDataType(mime){if(mime)mime=mime.split(";",2)[0];return mime&&(mime==htmlType?"html":mime==jsonType?"json":scriptTypeRE.test(mime)?"script":xmlTypeRE.test(mime)&&"xml")||"text"}function appendQuery(url,query){return(url+"&"+query).replace(/[&?]{1,2}/,"?")}function serializeData(options){if(options.processData&&options.data&&$.type(options.data)!="string")options.data=$.param(options.data,options.traditional);if(options.data&&(!options.type||options.type.toUpperCase()=="GET"))options.url=appendQuery(options.url,options.data)}$.ajax=function(options){var settings=$.extend({},options||{});for(key in $.ajaxSettings)if(settings[key]===undefined)settings[key]=$.ajaxSettings[key];ajaxStart(settings);if(!settings.crossDomain)settings.crossDomain=/^([\w-]+:)?\/\/([^\/]+)/.test(settings.url)&&RegExp.$2!=window.location.host;if(!settings.url)settings.url=window.location.toString();serializeData(settings);if(settings.cache===false)settings.url=appendQuery(settings.url,"_="+Date.now());var dataType=settings.dataType,hasPlaceholder=/=\?/.test(settings.url);if(dataType=="jsonp"||hasPlaceholder){if(!hasPlaceholder)settings.url=appendQuery(settings.url,"callback=?");return $.ajaxJSONP(settings)}var mime=settings.accepts[dataType],baseHeaders={},protocol=/^([\w-]+:)\/\//.test(settings.url)?RegExp.$1:window.location.protocol,xhr=settings.xhr(),abortTimeout;if(!settings.crossDomain)baseHeaders["X-Requested-With"]="XMLHttpRequest";if(mime){baseHeaders["Accept"]=mime;if(mime.indexOf(",")>-1)mime=mime.split(",",2)[0];xhr.overrideMimeType&&xhr.overrideMimeType(mime)}if(settings.contentType||settings.contentType!==false&&settings.data&&settings.type.toUpperCase()!="GET")baseHeaders["Content-Type"]=settings.contentType||"application/x-www-form-urlencoded";settings.headers=$.extend(baseHeaders,settings.headers||{});xhr.onreadystatechange=function(){if(xhr.readyState==4){xhr.onreadystatechange=empty;clearTimeout(abortTimeout);var result,error=false;if(xhr.status>=200&&xhr.status<300||xhr.status==304||xhr.status==0&&protocol=="file:"){dataType=dataType||mimeToDataType(xhr.getResponseHeader("content-type"));result=xhr.responseText;try{if(dataType=="script")(1,eval)(result);else if(dataType=="xml")result=xhr.responseXML;else if(dataType=="json")result=blankRE.test(result)?null:$.parseJSON(result)}catch(e){error=e}if(error)ajaxError(error,"parsererror",xhr,settings);else ajaxSuccess(result,xhr,settings)}else{ajaxError(null,xhr.status?"error":"abort",xhr,settings)}}};var async="async"in settings?settings.async:true;xhr.open(settings.type,settings.url,async);for(name in settings.headers)xhr.setRequestHeader(name,settings.headers[name]);if(ajaxBeforeSend(xhr,settings)===false){xhr.abort();return false}if(settings.timeout>0)abortTimeout=setTimeout(function(){xhr.onreadystatechange=empty;xhr.abort();ajaxError(null,"timeout",xhr,settings)},settings.timeout);xhr.send(settings.data?settings.data:null);return xhr};function parseArguments(url,data,success,dataType){var hasData=!$.isFunction(data);return{url:url,data:hasData?data:undefined,success:!hasData?data:$.isFunction(success)?success:undefined,dataType:hasData?dataType||success:success}}$.get=function(url,data,success,dataType){return $.ajax(parseArguments.apply(null,arguments))};$.post=function(url,data,success,dataType){var options=parseArguments.apply(null,arguments);options.type="POST";return $.ajax(options)};$.getJSON=function(url,data,success){var options=parseArguments.apply(null,arguments);options.dataType="json";return $.ajax(options)};$.fn.load=function(url,data,success){if(!this.length)return this;var self=this,parts=url.split(/\s/),selector,options=parseArguments(url,data,success),callback=options.success;if(parts.length>1)options.url=parts[0],selector=parts[1];options.success=function(response){self.html(selector?$("<div>").html(response.replace(rscript,"")).find(selector):response);callback&&callback.apply(self,arguments)};$.ajax(options);return this};var escape=encodeURIComponent;function serialize(params,obj,traditional,scope){var type,array=$.isArray(obj);$.each(obj,function(key,value){type=$.type(value);if(scope)key=traditional?scope:scope+"["+(array?"":key)+"]";if(!scope&&array)params.add(value.name,value.value);else if(type=="array"||!traditional&&type=="object")serialize(params,value,traditional,key);else params.add(key,value)})}$.param=function(obj,traditional){var params=[];params.add=function(k,v){this.push(escape(k)+"="+escape(v))};serialize(params,obj,traditional);return params.join("&").replace(/%20/g,"+")}})(Zepto);(function($){$.fn.serializeArray=function(){var result=[],el;$(Array.prototype.slice.call(this.get(0).elements)).each(function(){el=$(this);var type=el.attr("type");if(this.nodeName.toLowerCase()!="fieldset"&&!this.disabled&&type!="submit"&&type!="reset"&&type!="button"&&(type!="radio"&&type!="checkbox"||this.checked))result.push({name:el.attr("name"),value:el.val()})});return result};$.fn.serialize=function(){var result=[];this.serializeArray().forEach(function(elm){result.push(encodeURIComponent(elm.name)+"="+encodeURIComponent(elm.value))});return result.join("&")};$.fn.submit=function(callback){if(callback)this.bind("submit",callback);else if(this.length){var event=$.Event("submit");this.eq(0).trigger(event);if(!event.defaultPrevented)this.get(0).submit()}return this}})(Zepto);(function($,undefined){var prefix="",eventPrefix,endEventName,endAnimationName,vendors={Webkit:"webkit",Moz:"",O:"o",ms:"MS"},document=window.document,testEl=document.createElement("div"),supportedTransforms=/^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i,transform,transitionProperty,transitionDuration,transitionTiming,animationName,animationDuration,animationTiming,cssReset={};function dasherize(str){return downcase(str.replace(/([a-z])([A-Z])/,"$1-$2"))}function downcase(str){return str.toLowerCase()}function normalizeEvent(name){return eventPrefix?eventPrefix+name:downcase(name)}$.each(vendors,function(vendor,event){if(testEl.style[vendor+"TransitionProperty"]!==undefined){prefix="-"+downcase(vendor)+"-";eventPrefix=event;return false}});transform=prefix+"transform";cssReset[transitionProperty=prefix+"transition-property"]=cssReset[transitionDuration=prefix+"transition-duration"]=cssReset[transitionTiming=prefix+"transition-timing-function"]=cssReset[animationName=prefix+"animation-name"]=cssReset[animationDuration=prefix+"animation-duration"]=cssReset[animationTiming=prefix+"animation-timing-function"]="";$.fx={off:eventPrefix===undefined&&testEl.style.transitionProperty===undefined,speeds:{_default:400,fast:200,slow:600},cssPrefix:prefix,transitionEnd:normalizeEvent("TransitionEnd"),animationEnd:normalizeEvent("AnimationEnd")};$.fn.animate=function(properties,duration,ease,callback){if($.isPlainObject(duration))ease=duration.easing,callback=duration.complete,duration=duration.duration;if(duration)duration=(typeof duration=="number"?duration:$.fx.speeds[duration]||$.fx.speeds._default)/1e3;return this.anim(properties,duration,ease,callback)};$.fn.anim=function(properties,duration,ease,callback){var key,cssValues={},cssProperties,transforms="",that=this,wrappedCallback,endEvent=$.fx.transitionEnd;if(duration===undefined)duration=.4;if($.fx.off)duration=0;if(typeof properties=="string"){cssValues[animationName]=properties;cssValues[animationDuration]=duration+"s";cssValues[animationTiming]=ease||"linear";endEvent=$.fx.animationEnd}else{cssProperties=[];for(key in properties)if(supportedTransforms.test(key))transforms+=key+"("+properties[key]+") ";else cssValues[key]=properties[key],cssProperties.push(dasherize(key));if(transforms)cssValues[transform]=transforms,cssProperties.push(transform);if(duration>0&&typeof properties==="object"){cssValues[transitionProperty]=cssProperties.join(", ");cssValues[transitionDuration]=duration+"s";cssValues[transitionTiming]=ease||"linear"}}wrappedCallback=function(event){if(typeof event!=="undefined"){if(event.target!==event.currentTarget)return;$(event.target).unbind(endEvent,wrappedCallback)}$(this).css(cssReset);callback&&callback.call(this)};if(duration>0)this.bind(endEvent,wrappedCallback);this.size()&&this.get(0).clientLeft;this.css(cssValues);if(duration<=0)setTimeout(function(){that.each(function(){wrappedCallback.call(this)})},0);return this};testEl=null})(Zepto)},{}],3:[function(require,module,exports){"use strict";var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor}}();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}var $=require("zepto-browserify").$;var morphdom=require("morphdom");var objs=[];var eventType="input paste copy click change keydown keyup contextmenu mouseup mousedown mousemove touchstart touchend touchmove compositionstart compositionend";var dataAction=eventType.replace(/([a-z]+)/g,"[data-action-$1],")+"[data-action]";var getObjectById=function getObjectById(id){for(var i=0,n=objs.length;i<n;i++){var obj=objs[i];var templates=obj.templates;for(var t=0,m=templates.length;t<m;t++){if(templates[t]==id){return obj}}}return null};if(typeof jQuery!=="undefined"){$=jQuery}if(!Array.prototype.find){Array.prototype.find=function(predicate){if(this===null){throw new TypeError("Array.prototype.find called on null or undefined")}if(typeof predicate!=="function"){throw new TypeError("predicate must be a function")}var list=Object(this);var length=list.length>>>0;var thisArg=arguments[1];var value=void 0;for(var i=0;i<length;i++){value=list[i];if(predicate.call(thisArg,value,i,list)){return value}}return undefined}}if(typeof document!=="undefined"){$(document).on("input change click","[data-bind]",function(e){var data=$(this).data("bind");var val=$(this).val();var attr=$(this).attr("href");if(attr){val=attr.replace("#","")}var id=$(this).parents("[data-id]").data("id");if(id){var obj=getObjectById(id);if($(e.target).attr("type")=="radio"){if($(this).is(":checked")){obj.updateDataByString(data,val)}else{obj.updateDataByString(data,"")}}else if($(e.target).attr("type")=="checkbox"){(function(){var arr=[];$('[data-bind="'+data+'"]').each(function(){if($(this).is(":checked")){arr.push($(this).val())}});obj.updateDataByString(data,arr)})()}else{obj.updateDataByString(data,val)}}});$(document).on(eventType,dataAction,function(e){if(e.type=="click"&&$(e.target).is("select")){return}if(e.type=="input"&&$(e.target).attr("type")=="button"){return}var events=eventType.split(" ");var $self=$(this);var action="action";events.forEach(function(event){if($self.data("action-"+event)){if(e.type===event){action+="-"+event}}});var string=$self.data(action);if(!string){return}var method=string.replace(/\(.*?\);?/,"");var parameter=string.replace(/(.*?)\((.*?)\);?/,"$2");var pts=parameter.split(",");var id=$self.parents("[data-id]").data("id");if(id){var obj=getObjectById(id);obj.e=e;if(obj.method&&obj.method[method]){obj.method[method].apply(obj,pts)}else if(obj[method]){obj[method].apply(obj,pts)}}})}var aTemplate=function(){function aTemplate(opt){_classCallCheck(this,aTemplate);this.atemplate=[];objs.push(this);for(var i in opt){this[i]=opt[i]}if(!this.data){this.data={}}if(!this.templates){this.templates=[]}var templates=this.templates;for(var _i=0,n=this.templates.length;_i<n;_i++){var template=this.templates[_i];this.atemplate.push({id:template,html:$("#"+template).html()})}this.setId()}_createClass(aTemplate,[{key:"addTemplate",value:function addTemplate(id,html){this.atemplate.push({id:id,html:html});this.templates.push(id)}},{key:"loadHtml",value:function loadHtml(){var templates=this.templates;var promises=[];templates.forEach(function(template){var d=new $.Deferred;promises.push(d);var src=$("#"+template).attr("src");$.ajax({url:src,type:"GET",dataType:"text"}).success(function(data){$("#"+template).html(data);d.resolve()})});return $.when.apply($,promises)}},{key:"getData",value:function getData(){return JSON.parse(JSON.stringify(this.data))}},{key:"saveData",value:function saveData(key){var data=JSON.stringify(this.data);localStorage.setItem(key,data)}},{key:"setData",value:function setData(val){for(var i in val){if(typeof val[i]!=="function"){this.data[i]=val[i]}}}},{key:"loadData",value:function loadData(key){var data=JSON.parse(localStorage.getItem(key));if(data){for(var i in data){if(typeof data[i]!=="function"){this.data[i]=data[i]}}}}},{key:"getRand",value:function getRand(a,b){return~~(Math.random()*(b-a+1))+a}},{key:"getRandText",value:function getRandText(limit){var ret="";var strings="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";var length=strings.length;for(var i=0;i<limit;i++){ret+=strings.charAt(Math.floor(this.getRand(0,length)))}return ret}},{key:"setId",value:function setId(){var text=void 0;var ids=aTemplate.ids;var flag=false;while(1){text=this.getRandText(10);for(var i=0,n=aTemplate.ids;i<n;i++){if(aTemplate.ids[i]===text){flag=true}}if(flag===false){break}}this.data.aTemplate_id=text}},{key:"getDataFromObj",value:function getDataFromObj(s,o){s=s.replace(/\[([a-zA-Z0-9._-]+)\]/g,".$1");s=s.replace(/^\./,"");var a=s.split(".");while(a.length){var n=a.shift();if(n in o){o=o[n]}else{return}}return o}},{key:"getDataByString",value:function getDataByString(s){var o=this.data;return this.getDataFromObj(s,o)}},{key:"updateDataByString",value:function updateDataByString(path,newValue){var object=this.data;var stack=path.split(".");while(stack.length>1){object=object[stack.shift()]}object[stack.shift()]=newValue}},{key:"removeDataByString",value:function removeDataByString(path){var object=this.data;var stack=path.split(".");while(stack.length>1){object=object[stack.shift()]}var shift=stack.shift();if(shift.match(/^\d+$/)){object.splice(Number(shift),1)}else{delete object[shift]}}},{key:"resolveBlock",value:function resolveBlock(html,item,i){var that=this;var touchs=html.match(/<!-- BEGIN ([a-zA-Z0-9._-]+):touch#([a-zA-Z0-9._-]+) -->/g);var touchnots=html.match(/<!-- BEGIN ([a-zA-Z0-9._-]+):touchnot#([a-zA-Z0-9._-]+) -->/g);var exists=html.match(/<!-- BEGIN ([a-zA-Z0-9._-]+):exist -->/g);var empties=html.match(/<!-- BEGIN ([a-zA-Z0-9._-]+):empty -->/g);if(touchs){for(var k=0,n=touchs.length;k<n;k++){var start=touchs[k];start=start.replace(/([a-zA-Z0-9._-]+):touch#([a-zA-Z0-9._-]+)/,"($1):touch#($2)");var end=start.replace(/BEGIN/,"END");var reg=new RegExp(start+"(([\\n\\r\\t]|.)*?)"+end,"g");html=html.replace(reg,function(m,key2,val,next){var itemkey=typeof item[key2]==="function"?item[key2].apply(that):that.getDataFromObj(key2,item);if(itemkey==val){return next}else{return""}})}}if(touchnots){for(var _k=0,_n=touchnots.length;_k<_n;_k++){var _start=touchnots[_k];_start=_start.replace(/([a-zA-Z0-9._-]+):touchnot#([a-zA-Z0-9._-]+)/,"($1):touchnot#($2)");var _end=_start.replace(/BEGIN/,"END");var _reg=new RegExp(_start+"(([\\n\\r\\t]|.)*?)"+_end,"g");html=html.replace(_reg,function(m,key2,val,next){var itemkey=typeof item[key2]==="function"?item[key2].apply(that):that.getDataFromObj(key2,item);if(itemkey!=val){return next}else{return""}})}}if(exists){for(var _k2=0,_n2=exists.length;_k2<_n2;_k2++){var _start2=exists[_k2];_start2=_start2.replace(/([a-zA-Z0-9._-]+):exist/,"($1):exist");var _end2=_start2.replace(/BEGIN/,"END");var _reg2=new RegExp(_start2+"(([\\n\\r\\t]|.)*?)"+_end2,"g");html=html.replace(_reg2,function(m,key2,next){var itemkey=typeof item[key2]==="function"?item[key2].apply(that):that.getDataFromObj(key2,item);if(itemkey){return next}else{return""}})}}if(empties){for(var _k3=0,_n3=empties.length;_k3<_n3;_k3++){var _start3=empties[_k3];_start3=_start3.replace(/([a-zA-Z0-9._-]+):empty/,"($1):empty");var _end3=_start3.replace(/BEGIN/,"END");var empty=new RegExp(_start3+"(([\\n\\r\\t]|.)*?)"+_end3,"g");html=html.replace(empty,function(m,key2,next){var itemkey=typeof item[key2]==="function"?item[key2].apply(that):that.getDataFromObj(key2,item);if(!itemkey){return next}else{return""}})}}html=html.replace(/{([a-zA-Z0-9._-]+)}(\[([a-zA-Z0-9._-]+)\])*/g,function(n,key3,key4,converter){var data=void 0;if(key3=="i"){data=i}else{if(item[key3]){if(typeof item[key3]==="function"){data=item[key3].apply(that)}else{data=item[key3]}}else{if(converter&&that.convert&&that.convert[converter]){return that.convert[converter].call(that,"")}else{return""}}}if(converter&&that.convert&&that.convert[converter]){return that.convert[converter].call(that,data)}else{return data}});return html}},{key:"resolveAbsBlock",value:function resolveAbsBlock(html){var that=this;html=html.replace(/{(.*?)}/g,function(n,key3){var data=that.getDataByString(key3);if(typeof data!=="undefined"){if(typeof data==="function"){return data.apply(that)}else{return data}}else{return n}});return html}},{key:"resolveInclude",value:function resolveInclude(html){var include=/<!-- #include id="(.*?)" -->/g;html=html.replace(include,function(m,key){return $("#"+key).html()});return html}},{key:"resolveWith",value:function resolveWith(html){var width=/<!-- BEGIN ([a-zA-Z0-9._-]+):with -->(([\n\r\t]|.)*?)<!-- END ([a-zA-Z0-9._-]+):with -->/g;html=html.replace(width,function(m,key,val){m=m.replace(/data\-bind=['"](.*?)['"]/g,"data-bind='"+key+".$1'");return m});return html}},{key:"resolveLoop",value:function resolveLoop(html){var loop=/<!-- BEGIN (.+?):loop -->(([\n\r\t]|.)*?)<!-- END (.+?):loop -->/g;var that=this;html=html.replace(loop,function(m,key,val){var keyItem=that.getDataByString(key);var keys=[];if(typeof keyItem==="function"){keys=keyItem.apply(that)}else{keys=keyItem}var ret="";if(keys instanceof Array){for(var i=0,n=keys.length;i<n;i++){ret+=that.resolveBlock(val,keys[i],i)}}ret=ret.replace(/\\([^\\])/g,"$1");return ret});return html}},{key:"removeData",value:function removeData(arr){var data=this.data;for(var i in data){for(var t=0,n=arr.length;t<n;t++){if(i===arr[t]){delete data[i]}}}return this}},{key:"hasLoop",value:function hasLoop(txt){var loop=/<!-- BEGIN (.+?):loop -->(([\n\r\t]|.)*?)<!-- END (.+?):loop -->/g;if(txt.match(loop)){return true}else{return false}}},{key:"getHtml",value:function getHtml(selector,row){var template=this.atemplate.find(function(item){return item.id===selector});if(!template){return""}var html=template.html;if(row){html=selector}if(!html){return""}var data=this.data;html=this.resolveInclude(html);html=this.resolveWith(html);while(this.hasLoop(html)){html=this.resolveLoop(html)}html=this.resolveBlock(html,data);html=html.replace(/\\([^\\])/g,"$1");html=this.resolveAbsBlock(html);return html.replace(/^([\t ])*\n/gm,"")}},{key:"update",value:function update(txt,part){var html=this.getHtml();var templates=this.templates;var renderWay=txt||"html";if(this.beforeUpdated){this.beforeUpdated()}for(var i=0,n=templates.length;i<n;i++){var tem=templates[i];var selector="#"+tem;var _html=this.getHtml(tem);var $target=$("[data-id='"+tem+"']");if(!part||part==tem){if($target.length==0){var $newitem=$("<div data-id='"+tem+"'></div>");$newitem[renderWay](_html);$(selector).after($newitem)}else{if(renderWay==="text"){$target.text(_html)}else{morphdom($target.get(0),"<div data-id='"+tem+"'>"+_html+"</div>")}}if(part){break}}}this.updateBindingData(part);if(this.onUpdated){this.onUpdated(part)}return this}},{key:"updateBindingData",value:function updateBindingData(part){var that=this;var templates=that.templates;for(var i=0,n=templates.length;i<n;i++){var temp=templates[i];if(!part||part==temp){var $template=$("[data-id='"+temp+"']");$template.find("[data-bind]").each(function(){var data=that.getDataByString($(this).data("bind"));if($(this).attr("type")=="checkbox"||$(this).attr("type")=="radio"){if(data==$(this).val()){$(this).prop("checked",true)}}else{$(this).val(data)}});if(part){break}}}return this}},{key:"copyToClipBoard",value:function copyToClipBoard(){var copyArea=$("<textarea/>");$("body").append(copyArea);copyArea.text(this.getHtml());copyArea.select();document.execCommand("copy");copyArea.remove();return this}},{key:"applyMethod",value:function applyMethod(method){var args=[].splice.call(arguments,0);args.shift();return this.method[method].apply(this,args)}},{key:"getComputedProp",value:function getComputedProp(prop){return this.data[prop].apply(this)}},{key:"remove",value:function remove(path){var object=this.data;var stack=path.split(".");while(stack.length>1){object=object[stack.shift()]}var shift=stack.shift();if(shift.match(/^\d+$/)){object.splice(Number(shift),1)}else{delete object[shift]}return this}}]);return aTemplate}();module.exports=aTemplate},{morphdom:1,"zepto-browserify":2}]},{},[3])(3)}); |
1081
index.js
@@ -8,571 +8,614 @@ "use strict"; | ||
var $ = require("zepto-browserify").$; | ||
var morphdom = require('morphdom'); | ||
var objs = []; | ||
var eventType = "input copy paste click change keydown keyup contextmenu mouseup mousedown mousemove touchstart touchend touchmove compositionstart compositionend"; | ||
var eventType = "input paste copy click change keydown keyup contextmenu mouseup mousedown mousemove touchstart touchend touchmove compositionstart compositionend"; | ||
var dataAction = eventType.replace(/([a-z]+)/g, "[data-action-$1],") + "[data-action]"; | ||
var getObjectById = function getObjectById(id) { | ||
for (var i = 0, n = objs.length; i < n; i++) { | ||
var obj = objs[i]; | ||
var templates = obj.templates; | ||
for (var t = 0, m = templates.length; t < m; t++) { | ||
if (templates[t] == id) { | ||
return obj; | ||
} | ||
} | ||
for (var i = 0, n = objs.length; i < n; i++) { | ||
var obj = objs[i]; | ||
var templates = obj.templates; | ||
for (var t = 0, m = templates.length; t < m; t++) { | ||
if (templates[t] == id) { | ||
return obj; | ||
} | ||
} | ||
return null; | ||
} | ||
return null; | ||
}; | ||
if (typeof jQuery !== "undefined") { | ||
// for IE | ||
$ = jQuery; | ||
// for IE | ||
$ = jQuery; | ||
} | ||
if (!Array.prototype.find) { | ||
Array.prototype.find = function (predicate) { | ||
if (this === null) { | ||
throw new TypeError('Array.prototype.find called on null or undefined'); | ||
} | ||
if (typeof predicate !== 'function') { | ||
throw new TypeError('predicate must be a function'); | ||
} | ||
var list = Object(this); | ||
var length = list.length >>> 0; | ||
var thisArg = arguments[1]; | ||
var value = void 0; | ||
for (var i = 0; i < length; i++) { | ||
value = list[i]; | ||
if (predicate.call(thisArg, value, i, list)) { | ||
return value; | ||
} | ||
} | ||
return undefined; | ||
}; | ||
} | ||
if (typeof document !== "undefined") { | ||
//data binding | ||
$(document).on("input change click", "[data-bind]", function (e) { | ||
var data = $(this).data("bind"); | ||
var val = $(this).val(); | ||
var attr = $(this).attr("href"); | ||
if (attr) { | ||
val = attr.replace("#", ""); | ||
//data binding | ||
$(document).on("input change click", "[data-bind]", function (e) { | ||
var data = $(this).data("bind"); | ||
var val = $(this).val(); | ||
var attr = $(this).attr("href"); | ||
if (attr) { | ||
val = attr.replace("#", ""); | ||
} | ||
var id = $(this).parents("[data-id]").data("id"); | ||
if (id) { | ||
var obj = getObjectById(id); | ||
if ($(e.target).attr("type") == "radio") { | ||
if ($(this).is(":checked")) { | ||
obj.updateDataByString(data, val); | ||
} else { | ||
obj.updateDataByString(data, ''); | ||
} | ||
var id = $(this).parents("[data-id]").data("id"); | ||
if (id) { | ||
var obj = getObjectById(id); | ||
if ($(e.target).attr("type") == "radio") { | ||
if ($(this).is(":checked")) { | ||
obj.updateDataByString(data, val); | ||
} else { | ||
obj.updateDataByString(data, ''); | ||
} | ||
} else if ($(e.target).attr("type") == "checkbox") { | ||
var arr = []; | ||
$("[data-bind=\"" + data + "\"]").each(function () { | ||
if ($(this).is(":checked")) { | ||
arr.push($(this).val()); | ||
} | ||
}); | ||
obj.updateDataByString(data, arr); | ||
} else { | ||
obj.updateDataByString(data, val); | ||
} else if ($(e.target).attr("type") == "checkbox") { | ||
(function () { | ||
var arr = []; | ||
$("[data-bind=\"" + data + "\"]").each(function () { | ||
if ($(this).is(":checked")) { | ||
arr.push($(this).val()); | ||
} | ||
}); | ||
obj.updateDataByString(data, arr); | ||
})(); | ||
} else { | ||
obj.updateDataByString(data, val); | ||
} | ||
} | ||
}); | ||
//action | ||
$(document).on(eventType, dataAction, function (e) { | ||
if (e.type == "click" && $(e.target).is("select")) { | ||
return; | ||
} | ||
if (e.type == "input" && $(e.target).attr("type") == "button") { | ||
return; | ||
} | ||
var events = eventType.split(" "); | ||
var $self = $(this); | ||
var action = "action"; | ||
events.forEach(function (event) { | ||
if ($self.data("action-" + event)) { | ||
if (e.type === event) { | ||
action += "-" + event; | ||
} | ||
} | ||
}); | ||
//action | ||
$(document).on(eventType, dataAction, function (e) { | ||
if (e.type == "click" && $(e.target).is("select")) { | ||
return; | ||
} | ||
if (e.type == "input" && $(e.target).attr("type") == "button") { | ||
return; | ||
} | ||
var events = eventType.split(" "); | ||
var $self = $(this); | ||
var action = "action"; | ||
events.forEach(function (event) { | ||
if ($self.data("action-" + event)) { | ||
if (e.type === event) { | ||
action += "-" + event; | ||
} | ||
} | ||
}); | ||
var string = $self.data(action); | ||
if (!string) { | ||
return; | ||
} | ||
var action = string.replace(/\(.*?\);?/, ""); | ||
var parameter = string.replace(/(.*?)\((.*?)\);?/, "$2"); | ||
var pts = parameter.split(","); //引き数 | ||
var id = $self.parents("[data-id]").data("id"); | ||
if (id) { | ||
var obj = getObjectById(id); | ||
obj.e = e; | ||
if (obj.method && obj.method[action]) { | ||
obj.method[action].apply(obj, pts); | ||
} else if (obj[action]) { | ||
obj[action].apply(obj, pts); | ||
} | ||
} | ||
}); | ||
var string = $self.data(action); | ||
if (!string) { | ||
return; | ||
} | ||
var method = string.replace(/\(.*?\);?/, ""); | ||
var parameter = string.replace(/(.*?)\((.*?)\);?/, "$2"); | ||
var pts = parameter.split(","); //引き数 | ||
var id = $self.parents("[data-id]").data("id"); | ||
if (id) { | ||
var obj = getObjectById(id); | ||
obj.e = e; | ||
if (obj.method && obj.method[method]) { | ||
obj.method[method].apply(obj, pts); | ||
} else if (obj[method]) { | ||
obj[method].apply(obj, pts); | ||
} | ||
} | ||
}); | ||
} | ||
var aTemplate = function () { | ||
function aTemplate(opt) { | ||
_classCallCheck(this, aTemplate); | ||
function aTemplate(opt) { | ||
_classCallCheck(this, aTemplate); | ||
objs.push(this); | ||
for (var i in opt) { | ||
this[i] = opt[i]; | ||
} | ||
if (!this.data) { | ||
this.data = {}; | ||
} | ||
this.setId(); | ||
this.atemplate = []; | ||
objs.push(this); | ||
for (var i in opt) { | ||
this[i] = opt[i]; | ||
} | ||
if (!this.data) { | ||
this.data = {}; | ||
} | ||
if (!this.templates) { | ||
this.templates = []; | ||
} | ||
var templates = this.templates; | ||
for (var _i = 0, n = this.templates.length; _i < n; _i++) { | ||
var template = this.templates[_i]; | ||
this.atemplate.push({ id: template, html: $("#" + template).html() }); | ||
} | ||
this.setId(); | ||
} | ||
_createClass(aTemplate, [{ | ||
key: "addTemplate", | ||
value: function addTemplate(template, id) { | ||
$("body").append("<script type='text/template' id='" + id + "'>" + template + "</script>"); | ||
if (!this.templates) { | ||
this.templates = []; | ||
} | ||
this.templates.push(id); | ||
_createClass(aTemplate, [{ | ||
key: "addTemplate", | ||
value: function addTemplate(id, html) { | ||
this.atemplate.push({ id: id, html: html }); | ||
this.templates.push(id); | ||
} | ||
}, { | ||
key: "loadHtml", | ||
value: function loadHtml() { | ||
var templates = this.templates; | ||
var promises = []; | ||
templates.forEach(function (template) { | ||
var d = new $.Deferred(); | ||
promises.push(d); | ||
var src = $("#" + template).attr("src"); | ||
$.ajax({ | ||
url: src, | ||
type: 'GET', | ||
dataType: 'text' | ||
}).success(function (data) { | ||
$("#" + template).html(data); | ||
d.resolve(); | ||
}); | ||
}); | ||
return $.when.apply($, promises); | ||
} | ||
}, { | ||
key: "getData", | ||
value: function getData() { | ||
return JSON.parse(JSON.stringify(this.data)); | ||
} | ||
}, { | ||
key: "saveData", | ||
value: function saveData(key) { | ||
var data = JSON.stringify(this.data); | ||
localStorage.setItem(key, data); | ||
} | ||
}, { | ||
key: "setData", | ||
value: function setData(val) { | ||
for (var i in val) { | ||
if (typeof val[i] !== "function") { | ||
this.data[i] = val[i]; | ||
} | ||
}, { | ||
key: "loadHtml", | ||
value: function loadHtml() { | ||
var templates = this.templates; | ||
var promises = []; | ||
templates.forEach(function (template) { | ||
var d = new $.Deferred(); | ||
promises.push(d); | ||
var src = $("#" + template).attr("src"); | ||
$.ajax({ | ||
url: src, | ||
type: 'GET', | ||
dataType: 'text' | ||
}).success(function (data) { | ||
$("#" + template).html(data); | ||
d.resolve(); | ||
}); | ||
}); | ||
return $.when.apply($, promises); | ||
} | ||
} | ||
}, { | ||
key: "loadData", | ||
value: function loadData(key) { | ||
var data = JSON.parse(localStorage.getItem(key)); | ||
if (data) { | ||
for (var i in data) { | ||
if (typeof data[i] !== "function") { | ||
this.data[i] = data[i]; | ||
} | ||
} | ||
}, { | ||
key: "getData", | ||
value: function getData() { | ||
return JSON.parse(JSON.stringify(this.data)); | ||
} | ||
} | ||
}, { | ||
key: "getRand", | ||
value: function getRand(a, b) { | ||
return ~~(Math.random() * (b - a + 1)) + a; | ||
} | ||
}, { | ||
key: "getRandText", | ||
value: function getRandText(limit) { | ||
var ret = ""; | ||
var strings = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; | ||
var length = strings.length; | ||
for (var i = 0; i < limit; i++) { | ||
ret += strings.charAt(Math.floor(this.getRand(0, length))); | ||
} | ||
return ret; | ||
} | ||
}, { | ||
key: "setId", | ||
value: function setId() { | ||
var text = void 0; | ||
var ids = aTemplate.ids; | ||
var flag = false; | ||
while (1) { | ||
text = this.getRandText(10); | ||
for (var i = 0, n = aTemplate.ids; i < n; i++) { | ||
if (aTemplate.ids[i] === text) { | ||
flag = true; | ||
} | ||
} | ||
}, { | ||
key: "saveData", | ||
value: function saveData(key) { | ||
var data = JSON.stringify(this.data); | ||
localStorage.setItem(key, data); | ||
if (flag === false) { | ||
break; | ||
} | ||
}, { | ||
key: "setData", | ||
value: function setData(val) { | ||
for (var i in val) { | ||
if (typeof val[i] !== "function") { | ||
this.data[i] = val[i]; | ||
} | ||
} | ||
} | ||
this.data.aTemplate_id = text; | ||
} | ||
}, { | ||
key: "getDataFromObj", | ||
value: function getDataFromObj(s, o) { | ||
s = s.replace(/\[([a-zA-Z0-9._-]+)\]/g, '.$1'); // convert indexes to properties | ||
s = s.replace(/^\./, ''); // strip leading dot | ||
var a = s.split('.'); | ||
while (a.length) { | ||
var n = a.shift(); | ||
if (n in o) { | ||
o = o[n]; | ||
} else { | ||
return; | ||
} | ||
}, { | ||
key: "loadData", | ||
value: function loadData(key) { | ||
var data = JSON.parse(localStorage.getItem(key)); | ||
if (data) { | ||
for (var i in data) { | ||
if (typeof data[i] !== "function") { | ||
this.data[i] = data[i]; | ||
} | ||
} | ||
} | ||
return o; | ||
} | ||
}, { | ||
key: "getDataByString", | ||
value: function getDataByString(s) { | ||
var o = this.data; | ||
return this.getDataFromObj(s, o); | ||
} | ||
}, { | ||
key: "updateDataByString", | ||
value: function updateDataByString(path, newValue) { | ||
var object = this.data; | ||
var stack = path.split('.'); | ||
while (stack.length > 1) { | ||
object = object[stack.shift()]; | ||
} | ||
object[stack.shift()] = newValue; | ||
} | ||
}, { | ||
key: "removeDataByString", | ||
value: function removeDataByString(path) { | ||
var object = this.data; | ||
var stack = path.split('.'); | ||
while (stack.length > 1) { | ||
object = object[stack.shift()]; | ||
} | ||
var shift = stack.shift(); | ||
if (shift.match(/^\d+$/)) { | ||
object.splice(Number(shift), 1); | ||
} else { | ||
delete object[shift]; | ||
} | ||
} | ||
}, { | ||
key: "resolveBlock", | ||
value: function resolveBlock(html, item, i) { | ||
var that = this; | ||
var touchs = html.match(/<!-- BEGIN ([a-zA-Z0-9._-]+):touch#([a-zA-Z0-9._-]+) -->/g); | ||
var touchnots = html.match(/<!-- BEGIN ([a-zA-Z0-9._-]+):touchnot#([a-zA-Z0-9._-]+) -->/g); | ||
var exists = html.match(/<!-- BEGIN ([a-zA-Z0-9._-]+):exist -->/g); | ||
var empties = html.match(/<!-- BEGIN ([a-zA-Z0-9._-]+):empty -->/g); | ||
/*タッチブロック解決*/ | ||
if (touchs) { | ||
for (var k = 0, n = touchs.length; k < n; k++) { | ||
var start = touchs[k]; | ||
start = start.replace(/([a-zA-Z0-9._-]+):touch#([a-zA-Z0-9._-]+)/, "($1):touch#($2)"); | ||
var end = start.replace(/BEGIN/, "END"); | ||
var reg = new RegExp(start + "(([\\n\\r\\t]|.)*?)" + end, "g"); | ||
html = html.replace(reg, function (m, key2, val, next) { | ||
var itemkey = typeof item[key2] === "function" ? item[key2].apply(that) : that.getDataFromObj(key2, item); | ||
if (itemkey == val) { | ||
return next; | ||
} else { | ||
return ""; | ||
} | ||
}); | ||
} | ||
}, { | ||
key: "getRand", | ||
value: function getRand(a, b) { | ||
return ~~(Math.random() * (b - a + 1)) + a; | ||
} | ||
}, { | ||
key: "getRandText", | ||
value: function getRandText(limit) { | ||
var ret = ""; | ||
var strings = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; | ||
var length = strings.length; | ||
for (var i = 0; i < limit; i++) { | ||
ret += strings.charAt(Math.floor(this.getRand(0, length))); | ||
} | ||
/*タッチノットブロック解決*/ | ||
if (touchnots) { | ||
for (var _k = 0, _n = touchnots.length; _k < _n; _k++) { | ||
var _start = touchnots[_k]; | ||
_start = _start.replace(/([a-zA-Z0-9._-]+):touchnot#([a-zA-Z0-9._-]+)/, "($1):touchnot#($2)"); | ||
var _end = _start.replace(/BEGIN/, "END"); | ||
var _reg = new RegExp(_start + "(([\\n\\r\\t]|.)*?)" + _end, "g"); | ||
html = html.replace(_reg, function (m, key2, val, next) { | ||
var itemkey = typeof item[key2] === "function" ? item[key2].apply(that) : that.getDataFromObj(key2, item); | ||
if (itemkey != val) { | ||
return next; | ||
} else { | ||
return ""; | ||
} | ||
return ret; | ||
}); | ||
} | ||
}, { | ||
key: "setId", | ||
value: function setId() { | ||
var text; | ||
var ids = aTemplate.ids; | ||
var flag = false; | ||
while (1) { | ||
text = this.getRandText(10); | ||
for (var i = 0, n = aTemplate.ids; i < n; i++) { | ||
if (aTemplate.ids[i] === text) { | ||
flag = true; | ||
} | ||
} | ||
if (flag === false) { | ||
break; | ||
} | ||
} | ||
/*existブロックを解決*/ | ||
if (exists) { | ||
for (var _k2 = 0, _n2 = exists.length; _k2 < _n2; _k2++) { | ||
var _start2 = exists[_k2]; | ||
_start2 = _start2.replace(/([a-zA-Z0-9._-]+):exist/, "($1):exist"); | ||
var _end2 = _start2.replace(/BEGIN/, "END"); | ||
var _reg2 = new RegExp(_start2 + "(([\\n\\r\\t]|.)*?)" + _end2, "g"); | ||
html = html.replace(_reg2, function (m, key2, next) { | ||
var itemkey = typeof item[key2] === "function" ? item[key2].apply(that) : that.getDataFromObj(key2, item); | ||
if (itemkey) { | ||
return next; | ||
} else { | ||
return ""; | ||
} | ||
this.data.aTemplate_id = text; | ||
}); | ||
} | ||
}, { | ||
key: "getDataFromObj", | ||
value: function getDataFromObj(s, o) { | ||
s = s.replace(/\[([a-zA-Z0-9._-]+)\]/g, '.$1'); // convert indexes to properties | ||
s = s.replace(/^\./, ''); // strip leading dot | ||
var a = s.split('.'); | ||
while (a.length) { | ||
var n = a.shift(); | ||
if (n in o) { | ||
o = o[n]; | ||
} else { | ||
return; | ||
} | ||
} | ||
/*emptyブロックを解決*/ | ||
if (empties) { | ||
for (var _k3 = 0, _n3 = empties.length; _k3 < _n3; _k3++) { | ||
var _start3 = empties[_k3]; | ||
_start3 = _start3.replace(/([a-zA-Z0-9._-]+):empty/, "($1):empty"); | ||
var _end3 = _start3.replace(/BEGIN/, "END"); | ||
var empty = new RegExp(_start3 + "(([\\n\\r\\t]|.)*?)" + _end3, "g"); | ||
html = html.replace(empty, function (m, key2, next) { | ||
var itemkey = typeof item[key2] === "function" ? item[key2].apply(that) : that.getDataFromObj(key2, item); | ||
if (!itemkey) { | ||
return next; | ||
} else { | ||
return ""; | ||
} | ||
return o; | ||
}); | ||
} | ||
}, { | ||
key: "getDataByString", | ||
value: function getDataByString(s) { | ||
var o = this.data; | ||
return this.getDataFromObj(s, o); | ||
} | ||
}, { | ||
key: "updateDataByString", | ||
value: function updateDataByString(path, newValue) { | ||
var object = this.data; | ||
var stack = path.split('.'); | ||
while (stack.length > 1) { | ||
object = object[stack.shift()]; | ||
} | ||
/*変数解決*/ | ||
html = html.replace(/{([a-zA-Z0-9._-]+)}(\[([a-zA-Z0-9._-]+)\])*/g, function (n, key3, key4, converter) { | ||
var data = void 0; | ||
if (key3 == "i") { | ||
data = i; | ||
} else { | ||
if (item[key3]) { | ||
if (typeof item[key3] === "function") { | ||
data = item[key3].apply(that); | ||
} else { | ||
data = item[key3]; | ||
} | ||
object[stack.shift()] = newValue; | ||
} | ||
}, { | ||
key: "removeDataByString", | ||
value: function removeDataByString(path) { | ||
var object = this.data; | ||
var stack = path.split('.'); | ||
while (stack.length > 1) { | ||
object = object[stack.shift()]; | ||
} | ||
var shift = stack.shift(); | ||
if (shift.match(/^\d+$/)) { | ||
object.splice(Number(shift), 1); | ||
} else { | ||
if (converter && that.convert && that.convert[converter]) { | ||
return that.convert[converter].call(that, ""); | ||
} else { | ||
delete object[shift]; | ||
return ""; | ||
} | ||
} | ||
} | ||
}, { | ||
key: "resolveBlock", | ||
value: function resolveBlock(html, item, i) { | ||
var that = this; | ||
var touchs = html.match(/<!-- BEGIN ([a-zA-Z0-9._-]+):touch#([a-zA-Z0-9._-]+) -->/g); | ||
var touchnots = html.match(/<!-- BEGIN ([a-zA-Z0-9._-]+):touchnot#([a-zA-Z0-9._-]+) -->/g); | ||
var exists = html.match(/<!-- BEGIN ([a-zA-Z0-9._-]+):exist -->/g); | ||
var empties = html.match(/<!-- BEGIN ([a-zA-Z0-9._-]+):empty -->/g); | ||
/*タッチブロック解決*/ | ||
if (touchs) { | ||
for (var k = 0, n = touchs.length; k < n; k++) { | ||
var start = touchs[k]; | ||
start = start.replace(/([a-zA-Z0-9._-]+):touch#([a-zA-Z0-9._-]+)/, "($1):touch#($2)"); | ||
var end = start.replace(/BEGIN/, "END"); | ||
var reg = new RegExp(start + "(([\\n\\r\\t]|.)*?)" + end, "g"); | ||
html = html.replace(reg, function (m, key2, val, next) { | ||
var itemkey = typeof item[key2] === "function" ? item[key2].apply(that) : that.getDataFromObj(key2, item); | ||
if (itemkey == val) { | ||
return next; | ||
} else { | ||
return ""; | ||
} | ||
}); | ||
} | ||
} | ||
/*タッチノットブロック解決*/ | ||
if (touchnots) { | ||
for (var k = 0, n = touchnots.length; k < n; k++) { | ||
var start = touchnots[k]; | ||
start = start.replace(/([a-zA-Z0-9._-]+):touchnot#([a-zA-Z0-9._-]+)/, "($1):touchnot#($2)"); | ||
var end = start.replace(/BEGIN/, "END"); | ||
var reg = new RegExp(start + "(([\\n\\r\\t]|.)*?)" + end, "g"); | ||
html = html.replace(reg, function (m, key2, val, next) { | ||
var itemkey = typeof item[key2] === "function" ? item[key2].apply(that) : that.getDataFromObj(key2, item); | ||
if (itemkey != val) { | ||
return next; | ||
} else { | ||
return ""; | ||
} | ||
}); | ||
} | ||
} | ||
/*existブロックを解決*/ | ||
if (exists) { | ||
for (var k = 0, n = exists.length; k < n; k++) { | ||
var start = exists[k]; | ||
start = start.replace(/([a-zA-Z0-9._-]+):exist/, "($1):exist"); | ||
var end = start.replace(/BEGIN/, "END"); | ||
var reg = new RegExp(start + "(([\\n\\r\\t]|.)*?)" + end, "g"); | ||
html = html.replace(reg, function (m, key2, next) { | ||
var itemkey = typeof item[key2] === "function" ? item[key2].apply(that) : that.getDataFromObj(key2, item); | ||
if (itemkey) { | ||
return next; | ||
} else { | ||
return ""; | ||
} | ||
}); | ||
} | ||
} | ||
/*emptyブロックを解決*/ | ||
if (empties) { | ||
for (var k = 0, n = empties.length; k < n; k++) { | ||
var start = empties[k]; | ||
start = start.replace(/([a-zA-Z0-9._-]+):empty/, "($1):empty"); | ||
var end = start.replace(/BEGIN/, "END"); | ||
var empty = new RegExp(start + "(([\\n\\r\\t]|.)*?)" + end, "g"); | ||
html = html.replace(empty, function (m, key2, next) { | ||
var itemkey = typeof item[key2] === "function" ? item[key2].apply(that) : that.getDataFromObj(key2, item); | ||
if (!itemkey) { | ||
return next; | ||
} else { | ||
return ""; | ||
} | ||
}); | ||
} | ||
} | ||
/*変数解決*/ | ||
html = html.replace(/{([a-zA-Z0-9._-]+)}(\[([a-zA-Z0-9._-]+)\])*/g, function (n, key3, key4, converter) { | ||
var data; | ||
if (key3 == "i") { | ||
data = i; | ||
} else { | ||
if (item[key3]) { | ||
if (typeof item[key3] === "function") { | ||
data = item[key3].apply(that); | ||
} else { | ||
data = item[key3]; | ||
} | ||
} else { | ||
if (converter && that.convert && that.convert[converter]) { | ||
return that.convert[converter].call(that, ""); | ||
} else { | ||
return ""; | ||
} | ||
} | ||
} | ||
if (converter && that.convert && that.convert[converter]) { | ||
return that.convert[converter].call(that, data); | ||
} else { | ||
return data; | ||
} | ||
}); | ||
return html; | ||
if (converter && that.convert && that.convert[converter]) { | ||
return that.convert[converter].call(that, data); | ||
} else { | ||
return data; | ||
} | ||
/*絶対パス形式の変数を解決*/ | ||
}); | ||
return html; | ||
} | ||
/*絶対パス形式の変数を解決*/ | ||
}, { | ||
key: "resolveAbsBlock", | ||
value: function resolveAbsBlock(html) { | ||
var that = this; | ||
html = html.replace(/{(.*?)}/g, function (n, key3) { | ||
var data = that.getDataByString(key3); | ||
if (typeof data !== "undefined") { | ||
if (typeof data === "function") { | ||
return data.apply(that); | ||
} else { | ||
return data; | ||
} | ||
} else { | ||
return n; | ||
} | ||
}); | ||
return html; | ||
}, { | ||
key: "resolveAbsBlock", | ||
value: function resolveAbsBlock(html) { | ||
var that = this; | ||
html = html.replace(/{(.*?)}/g, function (n, key3) { | ||
var data = that.getDataByString(key3); | ||
if (typeof data !== "undefined") { | ||
if (typeof data === "function") { | ||
return data.apply(that); | ||
} else { | ||
return data; | ||
} | ||
} else { | ||
return n; | ||
} | ||
}, { | ||
key: "resolveInclude", | ||
value: function resolveInclude(html) { | ||
var include = /<!-- #include id="(.*?)" -->/g; | ||
html = html.replace(include, function (m, key) { | ||
return $("#" + key).html(); | ||
}); | ||
return html; | ||
}); | ||
return html; | ||
} | ||
}, { | ||
key: "resolveInclude", | ||
value: function resolveInclude(html) { | ||
var include = /<!-- #include id="(.*?)" -->/g; | ||
html = html.replace(include, function (m, key) { | ||
return $("#" + key).html(); | ||
}); | ||
return html; | ||
} | ||
}, { | ||
key: "resolveWith", | ||
value: function resolveWith(html) { | ||
var width = /<!-- BEGIN ([a-zA-Z0-9._-]+):with -->(([\n\r\t]|.)*?)<!-- END ([a-zA-Z0-9._-]+):with -->/g; | ||
html = html.replace(width, function (m, key, val) { | ||
m = m.replace(/data\-bind=['"](.*?)['"]/g, "data-bind='" + key + ".$1'"); | ||
return m; | ||
}); | ||
return html; | ||
} | ||
}, { | ||
key: "resolveLoop", | ||
value: function resolveLoop(html) { | ||
var loop = /<!-- BEGIN (.+?):loop -->(([\n\r\t]|.)*?)<!-- END (.+?):loop -->/g; | ||
var that = this; | ||
/*ループ文解決*/ | ||
html = html.replace(loop, function (m, key, val) { | ||
var keyItem = that.getDataByString(key); | ||
var keys = []; | ||
if (typeof keyItem === "function") { | ||
keys = keyItem.apply(that); | ||
} else { | ||
keys = keyItem; | ||
} | ||
}, { | ||
key: "resolveWith", | ||
value: function resolveWith(html) { | ||
var width = /<!-- BEGIN ([a-zA-Z0-9._-]+):with -->(([\n\r\t]|.)*?)<!-- END ([a-zA-Z0-9._-]+):with -->/g; | ||
html = html.replace(width, function (m, key, val) { | ||
m = m.replace(/data\-bind=['"](.*?)['"]/g, "data-bind='" + key + ".$1'"); | ||
return m; | ||
}); | ||
return html; | ||
var ret = ""; | ||
if (keys instanceof Array) { | ||
for (var i = 0, n = keys.length; i < n; i++) { | ||
ret += that.resolveBlock(val, keys[i], i); | ||
} | ||
} | ||
}, { | ||
key: "resolveLoop", | ||
value: function resolveLoop(html) { | ||
var loop = /<!-- BEGIN (.+?):loop -->(([\n\r\t]|.)*?)<!-- END (.+?):loop -->/g; | ||
var that = this; | ||
/*ループ文解決*/ | ||
html = html.replace(loop, function (m, key, val) { | ||
var keyItem = that.getDataByString(key); | ||
var keys = []; | ||
if (typeof keyItem === "function") { | ||
keys = keyItem.apply(that); | ||
} else { | ||
keys = keyItem; | ||
} | ||
var ret = ""; | ||
if (keys instanceof Array) { | ||
for (var i = 0, n = keys.length; i < n; i++) { | ||
ret += that.resolveBlock(val, keys[i], i); | ||
} | ||
} | ||
/*エスケープ削除*/ | ||
ret = ret.replace(/\\([^\\])/g, "$1"); | ||
return ret; | ||
}); | ||
return html; | ||
/*エスケープ削除*/ | ||
ret = ret.replace(/\\([^\\])/g, "$1"); | ||
return ret; | ||
}); | ||
return html; | ||
} | ||
}, { | ||
key: "removeData", | ||
value: function removeData(arr) { | ||
var data = this.data; | ||
for (var i in data) { | ||
for (var t = 0, n = arr.length; t < n; t++) { | ||
if (i === arr[t]) { | ||
delete data[i]; | ||
} | ||
} | ||
}, { | ||
key: "removeData", | ||
value: function removeData(arr) { | ||
var data = this.data; | ||
for (var i in data) { | ||
for (var t = 0, n = arr.length; t < n; t++) { | ||
if (i === arr[t]) { | ||
delete data[i]; | ||
} | ||
} | ||
} | ||
return this; | ||
} | ||
}, { | ||
key: "hasLoop", | ||
value: function hasLoop(txt) { | ||
var loop = /<!-- BEGIN (.+?):loop -->(([\n\r\t]|.)*?)<!-- END (.+?):loop -->/g; | ||
if (txt.match(loop)) { | ||
return true; | ||
} | ||
return this; | ||
} | ||
}, { | ||
key: "hasLoop", | ||
value: function hasLoop(txt) { | ||
var loop = /<!-- BEGIN (.+?):loop -->(([\n\r\t]|.)*?)<!-- END (.+?):loop -->/g; | ||
if (txt.match(loop)) { | ||
return true; | ||
} else { | ||
return false; | ||
} | ||
} | ||
}, { | ||
key: "getHtml", | ||
value: function getHtml(selector, row) { | ||
var template = this.atemplate.find(function (item) { | ||
return item.id === selector; | ||
}); | ||
if (!template) { | ||
return ""; | ||
} | ||
var html = template.html; | ||
if (row) { | ||
html = selector; | ||
} | ||
if (!html) { | ||
return ""; | ||
} | ||
var data = this.data; | ||
/*インクルード解決*/ | ||
html = this.resolveInclude(html); | ||
/*with解決*/ | ||
html = this.resolveWith(html); | ||
/*ループ解決*/ | ||
while (this.hasLoop(html)) { | ||
html = this.resolveLoop(html); | ||
} | ||
/*変数解決*/ | ||
html = this.resolveBlock(html, data); | ||
/*エスケープ削除*/ | ||
html = html.replace(/\\([^\\])/g, "$1"); | ||
/*絶対パスで指定された変数を解決*/ | ||
html = this.resolveAbsBlock(html); | ||
/*空行削除*/ | ||
return html.replace(/^([\t ])*\n/gm, ""); | ||
} | ||
}, { | ||
key: "update", | ||
value: function update(txt, part) { | ||
var html = this.getHtml(); | ||
var templates = this.templates; | ||
var renderWay = txt || "html"; | ||
if (this.beforeUpdated) { | ||
this.beforeUpdated(); | ||
} | ||
for (var i = 0, n = templates.length; i < n; i++) { | ||
var tem = templates[i]; | ||
var selector = "#" + tem; | ||
var _html = this.getHtml(tem); | ||
var $target = $("[data-id='" + tem + "']"); | ||
if (!part || part == tem) { | ||
if ($target.length == 0) { | ||
var $newitem = $("<div data-id='" + tem + "'></div>"); | ||
$newitem[renderWay](_html); | ||
$(selector).after($newitem); | ||
} else { | ||
if (renderWay === 'text') { | ||
$target.text(_html); | ||
} else { | ||
return false; | ||
morphdom($target.get(0), "<div data-id='" + tem + "'>" + _html + "</div>"); | ||
} | ||
} | ||
if (part) { | ||
break; | ||
} | ||
} | ||
}, { | ||
key: "getHtml", | ||
value: function getHtml(selector, row) { | ||
var $template = $(selector); | ||
var html = $template.html(); | ||
if (row) { | ||
html = selector; | ||
} | ||
if (!html) { | ||
return ""; | ||
} | ||
var data = this.data; | ||
/*インクルード解決*/ | ||
html = this.resolveInclude(html); | ||
/*with解決*/ | ||
html = this.resolveWith(html); | ||
/*ループ解決*/ | ||
while (this.hasLoop(html)) { | ||
html = this.resolveLoop(html); | ||
} | ||
/*変数解決*/ | ||
html = this.resolveBlock(html, data); | ||
/*エスケープ削除*/ | ||
html = html.replace(/\\([^\\])/g, "$1"); | ||
/*絶対パスで指定された変数を解決*/ | ||
html = this.resolveAbsBlock(html); | ||
/*空行削除*/ | ||
return html.replace(/^([\t ])*\n/gm, ""); | ||
} | ||
}, { | ||
key: "update", | ||
value: function update(txt, part) { | ||
var html = this.getHtml(); | ||
var templates = this.templates; | ||
var renderWay = txt || "html"; | ||
if (this.beforeUpdated) { | ||
this.beforeUpdated(); | ||
} | ||
for (var i = 0, n = templates.length; i < n; i++) { | ||
var tem = templates[i]; | ||
var selector = "#" + tem; | ||
var html = this.getHtml(selector); | ||
var $target = $("[data-id='" + tem + "']"); | ||
if (!part || part == tem) { | ||
if ($target.length == 0) { | ||
var $newitem = $("<div data-id='" + tem + "'></div>"); | ||
$newitem[renderWay](html); | ||
$(selector).after($newitem); | ||
} else { | ||
$target[renderWay](html); | ||
} | ||
if (part) { | ||
break; | ||
} | ||
} | ||
} | ||
this.updateBindingData(part); | ||
if (this.onUpdated) { | ||
this.onUpdated(); | ||
} | ||
return this; | ||
} | ||
}, { | ||
key: "updateBindingData", | ||
value: function updateBindingData(part) { | ||
var that = this; | ||
var templates = that.templates; | ||
for (var i = 0, n = templates.length; i < n; i++) { | ||
var temp = templates[i]; | ||
if (!part || part == temp) { | ||
var $template = $("[data-id='" + temp + "']"); | ||
$template.find("[data-bind]").each(function () { | ||
var data = that.getDataByString($(this).data("bind")); | ||
if ($(this).attr("type") == "checkbox" || $(this).attr("type") == "radio") { | ||
if (data == $(this).val()) { | ||
$(this).prop("checked", true); | ||
} | ||
} else { | ||
$(this).val(data); | ||
} | ||
}); | ||
if (part) { | ||
break; | ||
} | ||
} | ||
} | ||
return this; | ||
} | ||
}, { | ||
key: "copyToClipBoard", | ||
value: function copyToClipBoard() { | ||
var copyArea = $("<textarea/>"); | ||
$("body").append(copyArea); | ||
copyArea.text(this.getHtml()); | ||
copyArea.select(); | ||
document.execCommand("copy"); | ||
copyArea.remove(); | ||
return this; | ||
} | ||
}, { | ||
key: "applyMethod", | ||
value: function applyMethod(method) { | ||
var args = [].splice.call(arguments, 0); | ||
args.shift(); | ||
return this.method[method].apply(this, args); | ||
} | ||
}, { | ||
key: "getComputedProp", | ||
value: function getComputedProp(prop) { | ||
return this.data[prop].apply(this); | ||
} | ||
}, { | ||
key: "remove", | ||
value: function remove(path) { | ||
var object = this.data; | ||
var stack = path.split('.'); | ||
while (stack.length > 1) { | ||
object = object[stack.shift()]; | ||
} | ||
var shift = stack.shift(); | ||
if (shift.match(/^\d+$/)) { | ||
object.splice(Number(shift), 1); | ||
} | ||
this.updateBindingData(part); | ||
if (this.onUpdated) { | ||
this.onUpdated(part); | ||
} | ||
return this; | ||
} | ||
}, { | ||
key: "updateBindingData", | ||
value: function updateBindingData(part) { | ||
var that = this; | ||
var templates = that.templates; | ||
for (var i = 0, n = templates.length; i < n; i++) { | ||
var temp = templates[i]; | ||
if (!part || part == temp) { | ||
var $template = $("[data-id='" + temp + "']"); | ||
$template.find("[data-bind]").each(function () { | ||
var data = that.getDataByString($(this).data("bind")); | ||
if ($(this).attr("type") == "checkbox" || $(this).attr("type") == "radio") { | ||
if (data == $(this).val()) { | ||
$(this).prop("checked", true); | ||
} | ||
} else { | ||
delete object[shift]; | ||
$(this).val(data); | ||
} | ||
return this; | ||
}); | ||
if (part) { | ||
break; | ||
} | ||
} | ||
}]); | ||
} | ||
return this; | ||
} | ||
}, { | ||
key: "copyToClipBoard", | ||
value: function copyToClipBoard() { | ||
var copyArea = $("<textarea/>"); | ||
$("body").append(copyArea); | ||
copyArea.text(this.getHtml()); | ||
copyArea.select(); | ||
document.execCommand("copy"); | ||
copyArea.remove(); | ||
return this; | ||
} | ||
}, { | ||
key: "applyMethod", | ||
value: function applyMethod(method) { | ||
var args = [].splice.call(arguments, 0); | ||
args.shift(); | ||
return this.method[method].apply(this, args); | ||
} | ||
}, { | ||
key: "getComputedProp", | ||
value: function getComputedProp(prop) { | ||
return this.data[prop].apply(this); | ||
} | ||
}, { | ||
key: "remove", | ||
value: function remove(path) { | ||
var object = this.data; | ||
var stack = path.split('.'); | ||
while (stack.length > 1) { | ||
object = object[stack.shift()]; | ||
} | ||
var shift = stack.shift(); | ||
if (shift.match(/^\d+$/)) { | ||
object.splice(Number(shift), 1); | ||
} else { | ||
delete object[shift]; | ||
} | ||
return this; | ||
} | ||
}]); | ||
return aTemplate; | ||
return aTemplate; | ||
}(); | ||
module.exports = aTemplate; |
{ | ||
"name": "a-template", | ||
"version": "0.0.20", | ||
"version": "0.1.0", | ||
"author": "steelydylan", | ||
@@ -30,4 +30,5 @@ "description": "Simple Template Engine", | ||
"dependencies": { | ||
"morphdom": "^2.3.1", | ||
"zepto-browserify": "*" | ||
} | ||
} |
1021
src/index.js
@@ -1,537 +0,576 @@ | ||
var $ = require("zepto-browserify").$; | ||
var objs = []; | ||
var eventType = "input copy paste click change keydown keyup contextmenu mouseup mousedown mousemove touchstart touchend touchmove compositionstart compositionend"; | ||
var dataAction = eventType.replace(/([a-z]+)/g,"[data-action-$1],") + "[data-action]"; | ||
var getObjectById = (id) => { | ||
for (var i = 0, n = objs.length; i < n; i++) { | ||
var obj = objs[i]; | ||
var templates = obj.templates; | ||
for (var t = 0, m = templates.length; t < m; t++) { | ||
if (templates[t] == id) { | ||
return obj; | ||
} | ||
} | ||
} | ||
return null; | ||
let $ = require("zepto-browserify").$; | ||
const morphdom = require('morphdom'); | ||
const objs = []; | ||
const eventType = "input paste copy click change keydown keyup contextmenu mouseup mousedown mousemove touchstart touchend touchmove compositionstart compositionend"; | ||
const dataAction = eventType.replace(/([a-z]+)/g,"[data-action-$1],") + "[data-action]"; | ||
const getObjectById = (id) => { | ||
for (let i = 0, n = objs.length; i < n; i++) { | ||
let obj = objs[i]; | ||
let templates = obj.templates; | ||
for (let t = 0, m = templates.length; t < m; t++) { | ||
if (templates[t] == id) { | ||
return obj; | ||
} | ||
} | ||
} | ||
return null; | ||
} | ||
if (typeof jQuery !== "undefined") { | ||
// for IE | ||
$ = jQuery; | ||
if (typeof jQuery !=="undefined"){ | ||
// for IE | ||
$ = jQuery; | ||
} | ||
if(typeof document !== "undefined"){ | ||
//data binding | ||
$(document).on("input change click", "[data-bind]", function(e) { | ||
var data = $(this).data("bind"); | ||
var val = $(this).val(); | ||
var attr = $(this).attr("href"); | ||
if (attr) { | ||
val = attr.replace("#", ""); | ||
} | ||
var id = $(this).parents("[data-id]").data("id"); | ||
if (id) { | ||
var obj = getObjectById(id); | ||
if ($(e.target).attr("type") == "radio") { | ||
if ($(this).is(":checked")) { | ||
obj.updateDataByString(data, val); | ||
} else { | ||
obj.updateDataByString(data, ''); | ||
} | ||
} else if ($(e.target).attr("type") == "checkbox") { | ||
var arr = []; | ||
$("[data-bind=\"" + data + "\"]").each(function () { | ||
if ($(this).is(":checked")) { | ||
arr.push($(this).val()); | ||
} | ||
}); | ||
obj.updateDataByString(data, arr); | ||
} else { | ||
obj.updateDataByString(data, val); | ||
} | ||
} | ||
}); | ||
//action | ||
$(document).on(eventType,dataAction,function(e){ | ||
if(e.type == "click" && $(e.target).is("select")){ | ||
return; | ||
} | ||
if(e.type == "input" && $(e.target).attr("type") == "button"){ | ||
return; | ||
} | ||
var events = eventType.split(" "); | ||
var $self = $(this); | ||
var action = "action"; | ||
events.forEach(function(event){ | ||
if ($self.data("action-"+event)) { | ||
if(e.type === event){ | ||
action += "-"+event; | ||
} | ||
} | ||
}); | ||
var string = $self.data(action); | ||
if(!string){ | ||
return; | ||
} | ||
var action = string.replace(/\(.*?\);?/,""); | ||
var parameter = string.replace(/(.*?)\((.*?)\);?/,"$2"); | ||
var pts = parameter.split(",");//引き数 | ||
var id = $self.parents("[data-id]").data("id"); | ||
if(id){ | ||
var obj = getObjectById(id); | ||
obj.e = e; | ||
if(obj.method && obj.method[action]){ | ||
obj.method[action].apply(obj,pts); | ||
}else if(obj[action]){ | ||
obj[action].apply(obj,pts); | ||
} | ||
} | ||
}); | ||
if (!Array.prototype.find) { | ||
Array.prototype.find = function(predicate) { | ||
if (this === null) { | ||
throw new TypeError('Array.prototype.find called on null or undefined'); | ||
} | ||
if (typeof predicate !== 'function') { | ||
throw new TypeError('predicate must be a function'); | ||
} | ||
let list = Object(this); | ||
let length = list.length >>> 0; | ||
let thisArg = arguments[1]; | ||
let value; | ||
for (let i = 0; i < length; i++) { | ||
value = list[i]; | ||
if (predicate.call(thisArg, value, i, list)) { | ||
return value; | ||
} | ||
} | ||
return undefined; | ||
}; | ||
} | ||
class aTemplate { | ||
constructor(opt) { | ||
objs.push(this); | ||
for(var i in opt){ | ||
this[i] = opt[i]; | ||
} | ||
if(!this.data){ | ||
this.data = {}; | ||
} | ||
this.setId(); | ||
if(typeof document !== "undefined"){ | ||
//data binding | ||
$(document).on("input change click", "[data-bind]", function(e) { | ||
let data = $(this).data("bind"); | ||
let val = $(this).val(); | ||
let attr = $(this).attr("href"); | ||
if (attr) { | ||
val = attr.replace("#", ""); | ||
} | ||
addTemplate(template,id) { | ||
$("body").append("<script type='text/template' id='"+id+"'>"+template+"</script>"); | ||
if(!this.templates){ | ||
this.templates = []; | ||
let id = $(this).parents("[data-id]").data("id"); | ||
if (id) { | ||
let obj = getObjectById(id); | ||
if ($(e.target).attr("type") == "radio") { | ||
if ($(this).is(":checked")) { | ||
obj.updateDataByString(data, val); | ||
} else { | ||
obj.updateDataByString(data, ''); | ||
} | ||
this.templates.push(id); | ||
} | ||
loadHtml() { | ||
var templates = this.templates; | ||
var promises = []; | ||
templates.forEach((template) => { | ||
var d = new $.Deferred(); | ||
promises.push(d); | ||
var src = $("#" + template).attr("src"); | ||
$.ajax({ | ||
url: src, | ||
type: 'GET', | ||
dataType: 'text' | ||
}).success(function(data) { | ||
$("#" + template).html(data); | ||
d.resolve(); | ||
}); | ||
} else if ($(e.target).attr("type") == "checkbox") { | ||
let arr = []; | ||
$("[data-bind=\"" + data + "\"]").each(function () { | ||
if ($(this).is(":checked")) { | ||
arr.push($(this).val()); | ||
} | ||
}); | ||
return $.when.apply($, promises); | ||
obj.updateDataByString(data, arr); | ||
} else { | ||
obj.updateDataByString(data, val); | ||
} | ||
} | ||
getData () { | ||
return JSON.parse(JSON.stringify(this.data)); | ||
}); | ||
//action | ||
$(document).on(eventType,dataAction,function(e){ | ||
if(e.type == "click" && $(e.target).is("select")){ | ||
return; | ||
} | ||
saveData (key) { | ||
var data = JSON.stringify(this.data); | ||
localStorage.setItem(key, data); | ||
if(e.type == "input" && $(e.target).attr("type") == "button"){ | ||
return; | ||
} | ||
setData (val) { | ||
for (var i in val) { | ||
if (typeof val[i] !== "function") { | ||
this.data[i] = val[i]; | ||
} | ||
let events = eventType.split(" "); | ||
let $self = $(this); | ||
let action = "action"; | ||
events.forEach(function(event){ | ||
if ($self.data("action-"+event)) { | ||
if(e.type === event){ | ||
action += "-"+event; | ||
} | ||
} | ||
}); | ||
let string = $self.data(action); | ||
if(!string){ | ||
return; | ||
} | ||
loadData (key) { | ||
var data = JSON.parse(localStorage.getItem(key)); | ||
if (data) { | ||
for (var i in data) { | ||
if (typeof data[i] !== "function") { | ||
this.data[i] = data[i]; | ||
} | ||
} | ||
} | ||
let method = string.replace(/\(.*?\);?/,""); | ||
let parameter = string.replace(/(.*?)\((.*?)\);?/,"$2"); | ||
let pts = parameter.split(",");//引き数 | ||
let id = $self.parents("[data-id]").data("id"); | ||
if(id){ | ||
let obj = getObjectById(id); | ||
obj.e = e; | ||
if(obj.method && obj.method[method]){ | ||
obj.method[method].apply(obj,pts); | ||
}else if(obj[method]){ | ||
obj[method].apply(obj,pts); | ||
} | ||
} | ||
}); | ||
} | ||
getRand (a, b) { | ||
return ~~(Math.random() * (b - a + 1)) + a; | ||
} | ||
getRandText (limit) { | ||
var ret = ""; | ||
var strings = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; | ||
var length = strings.length; | ||
for (var i = 0; i < limit; i++) { | ||
ret += strings.charAt(Math.floor(this.getRand(0, length))); | ||
} | ||
return ret; | ||
class aTemplate { | ||
constructor(opt) { | ||
this.atemplate = []; | ||
objs.push(this); | ||
for(let i in opt){ | ||
this[i] = opt[i]; | ||
} | ||
if(!this.data){ | ||
this.data = {}; | ||
} | ||
if(!this.templates){ | ||
this.templates = []; | ||
} | ||
const templates = this.templates; | ||
for(let i = 0,n = this.templates.length; i < n; i++) { | ||
let template = this.templates[i]; | ||
this.atemplate.push({id:template,html:$(`#${template}`).html()}); | ||
} | ||
this.setId(); | ||
} | ||
addTemplate(id,html) { | ||
this.atemplate.push({id:id,html:html}) | ||
this.templates.push(id); | ||
} | ||
loadHtml() { | ||
let templates = this.templates; | ||
let promises = []; | ||
templates.forEach((template) => { | ||
let d = new $.Deferred(); | ||
promises.push(d); | ||
let src = $("#" + template).attr("src"); | ||
$.ajax({ | ||
url: src, | ||
type: 'GET', | ||
dataType: 'text' | ||
}).success(function(data) { | ||
$("#" + template).html(data); | ||
d.resolve(); | ||
}); | ||
}); | ||
return $.when.apply($, promises); | ||
} | ||
getData () { | ||
return JSON.parse(JSON.stringify(this.data)); | ||
} | ||
saveData (key) { | ||
let data = JSON.stringify(this.data); | ||
localStorage.setItem(key, data); | ||
} | ||
setData (val) { | ||
for (let i in val) { | ||
if (typeof val[i] !== "function") { | ||
this.data[i] = val[i]; | ||
} | ||
} | ||
setId () { | ||
var text; | ||
var ids = aTemplate.ids; | ||
var flag = false; | ||
while (1) { | ||
text = this.getRandText(10); | ||
for (var i = 0, n = aTemplate.ids; i < n; i++) { | ||
if (aTemplate.ids[i] === text) { | ||
flag = true; | ||
} | ||
} | ||
if (flag === false) { | ||
break; | ||
} | ||
} | ||
loadData (key) { | ||
let data = JSON.parse(localStorage.getItem(key)); | ||
if (data) { | ||
for (let i in data) { | ||
if (typeof data[i] !== "function") { | ||
this.data[i] = data[i]; | ||
} | ||
this.data.aTemplate_id = text; | ||
} | ||
} | ||
getDataFromObj(s,o){ | ||
s = s.replace(/\[([a-zA-Z0-9._-]+)\]/g, '.$1'); // convert indexes to properties | ||
s = s.replace(/^\./, ''); // strip leading dot | ||
var a = s.split('.'); | ||
while (a.length) { | ||
var n = a.shift(); | ||
if (n in o) { | ||
o = o[n]; | ||
} else { | ||
return; | ||
} | ||
} | ||
getRand (a, b) { | ||
return ~~(Math.random() * (b - a + 1)) + a; | ||
} | ||
getRandText (limit) { | ||
let ret = ""; | ||
let strings = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; | ||
let length = strings.length; | ||
for (let i = 0; i < limit; i++) { | ||
ret += strings.charAt(Math.floor(this.getRand(0, length))); | ||
} | ||
return ret; | ||
} | ||
setId () { | ||
let text; | ||
let ids = aTemplate.ids; | ||
let flag = false; | ||
while (1) { | ||
text = this.getRandText(10); | ||
for (let i = 0, n = aTemplate.ids; i < n; i++) { | ||
if (aTemplate.ids[i] === text) { | ||
flag = true; | ||
} | ||
return o; | ||
} | ||
if (flag === false) { | ||
break; | ||
} | ||
} | ||
getDataByString(s){ | ||
var o = this.data; | ||
return this.getDataFromObj(s,o); | ||
this.data.aTemplate_id = text; | ||
} | ||
getDataFromObj(s,o){ | ||
s = s.replace(/\[([a-zA-Z0-9._-]+)\]/g, '.$1'); // convert indexes to properties | ||
s = s.replace(/^\./, ''); // strip leading dot | ||
let a = s.split('.'); | ||
while (a.length) { | ||
let n = a.shift(); | ||
if (n in o) { | ||
o = o[n]; | ||
} else { | ||
return; | ||
} | ||
} | ||
updateDataByString (path, newValue) { | ||
var object = this.data; | ||
var stack = path.split('.'); | ||
while (stack.length > 1) { | ||
object = object[stack.shift()]; | ||
} | ||
object[stack.shift()] = newValue; | ||
return o; | ||
} | ||
getDataByString(s){ | ||
let o = this.data; | ||
return this.getDataFromObj(s,o); | ||
} | ||
updateDataByString (path, newValue) { | ||
let object = this.data; | ||
let stack = path.split('.'); | ||
while (stack.length > 1) { | ||
object = object[stack.shift()]; | ||
} | ||
removeDataByString (path) { | ||
var object = this.data; | ||
var stack = path.split('.'); | ||
while (stack.length > 1) { | ||
object = object[stack.shift()]; | ||
} | ||
var shift = stack.shift(); | ||
if (shift.match(/^\d+$/)) { | ||
object.splice(Number(shift), 1); | ||
} else { | ||
delete object[shift]; | ||
} | ||
object[stack.shift()] = newValue; | ||
} | ||
removeDataByString (path) { | ||
let object = this.data; | ||
let stack = path.split('.'); | ||
while (stack.length > 1) { | ||
object = object[stack.shift()]; | ||
} | ||
resolveBlock(html,item,i){ | ||
var that = this; | ||
var touchs = html.match(/<!-- BEGIN ([a-zA-Z0-9._-]+):touch#([a-zA-Z0-9._-]+) -->/g); | ||
var touchnots = html.match(/<!-- BEGIN ([a-zA-Z0-9._-]+):touchnot#([a-zA-Z0-9._-]+) -->/g); | ||
var exists = html.match(/<!-- BEGIN ([a-zA-Z0-9._-]+):exist -->/g); | ||
var empties = html.match(/<!-- BEGIN ([a-zA-Z0-9._-]+):empty -->/g); | ||
/*タッチブロック解決*/ | ||
if(touchs){ | ||
for(var k = 0,n = touchs.length; k < n; k++){ | ||
var start = touchs[k]; | ||
start = start.replace(/([a-zA-Z0-9._-]+):touch#([a-zA-Z0-9._-]+)/,"($1):touch#($2)"); | ||
var end = start.replace(/BEGIN/,"END"); | ||
var reg = new RegExp(start+"(([\\n\\r\\t]|.)*?)"+end,"g"); | ||
html = html.replace(reg,function(m,key2,val,next){ | ||
var itemkey = typeof item[key2] === "function" ? item[key2].apply(that) : that.getDataFromObj(key2,item); | ||
if(itemkey == val){ | ||
return next; | ||
}else{ | ||
return ""; | ||
} | ||
}) | ||
} | ||
} | ||
/*タッチノットブロック解決*/ | ||
if(touchnots){ | ||
for(var k = 0,n = touchnots.length; k < n; k++){ | ||
var start = touchnots[k]; | ||
start = start.replace(/([a-zA-Z0-9._-]+):touchnot#([a-zA-Z0-9._-]+)/,"($1):touchnot#($2)"); | ||
var end = start.replace(/BEGIN/,"END"); | ||
var reg = new RegExp(start+"(([\\n\\r\\t]|.)*?)"+end,"g"); | ||
html = html.replace(reg,function(m,key2,val,next){ | ||
var itemkey = typeof item[key2] === "function" ? item[key2].apply(that) : that.getDataFromObj(key2,item); | ||
if(itemkey != val){ | ||
return next; | ||
}else{ | ||
return ""; | ||
} | ||
}); | ||
} | ||
} | ||
/*existブロックを解決*/ | ||
if(exists){ | ||
for(var k = 0,n = exists.length; k < n; k++){ | ||
var start = exists[k]; | ||
start = start.replace(/([a-zA-Z0-9._-]+):exist/,"($1):exist"); | ||
var end = start.replace(/BEGIN/,"END"); | ||
var reg = new RegExp(start+"(([\\n\\r\\t]|.)*?)"+end,"g"); | ||
html = html.replace(reg,function(m,key2,next){ | ||
var itemkey = typeof item[key2] === "function" ? item[key2].apply(that) : that.getDataFromObj(key2,item); | ||
if(itemkey){ | ||
return next; | ||
}else{ | ||
return ""; | ||
} | ||
}); | ||
} | ||
} | ||
/*emptyブロックを解決*/ | ||
if(empties){ | ||
for(var k = 0,n = empties.length; k < n; k++){ | ||
var start = empties[k]; | ||
start = start.replace(/([a-zA-Z0-9._-]+):empty/,"($1):empty"); | ||
var end = start.replace(/BEGIN/,"END"); | ||
var empty = new RegExp(start+"(([\\n\\r\\t]|.)*?)"+end,"g"); | ||
html = html.replace(empty,function(m,key2,next){ | ||
var itemkey = typeof item[key2] === "function" ? item[key2].apply(that) : that.getDataFromObj(key2,item); | ||
if(!itemkey){ | ||
return next; | ||
}else{ | ||
return ""; | ||
} | ||
}); | ||
} | ||
} | ||
/*変数解決*/ | ||
html = html.replace(/{([a-zA-Z0-9._-]+)}(\[([a-zA-Z0-9._-]+)\])*/g,function(n,key3,key4,converter){ | ||
var data; | ||
if(key3 == "i"){ | ||
data = i; | ||
}else{ | ||
if(item[key3]){ | ||
if (typeof item[key3] === "function"){ | ||
data = item[key3].apply(that); | ||
}else{ | ||
data = item[key3]; | ||
} | ||
}else{ | ||
if(converter && that.convert && that.convert[converter]){ | ||
return that.convert[converter].call(that,""); | ||
}else{ | ||
return ""; | ||
} | ||
} | ||
} | ||
if(converter && that.convert && that.convert[converter]){ | ||
return that.convert[converter].call(that,data); | ||
}else{ | ||
return data; | ||
} | ||
}); | ||
return html; | ||
let shift = stack.shift(); | ||
if (shift.match(/^\d+$/)) { | ||
object.splice(Number(shift), 1); | ||
} else { | ||
delete object[shift]; | ||
} | ||
/*絶対パス形式の変数を解決*/ | ||
resolveAbsBlock(html){ | ||
var that = this; | ||
html = html.replace(/{(.*?)}/g,function(n,key3){ | ||
var data = that.getDataByString(key3); | ||
if(typeof data !== "undefined"){ | ||
if (typeof data === "function"){ | ||
return data.apply(that); | ||
}else{ | ||
return data; | ||
} | ||
}else{ | ||
return n; | ||
} | ||
}); | ||
return html; | ||
} | ||
resolveBlock(html,item,i){ | ||
let that = this; | ||
let touchs = html.match(/<!-- BEGIN ([a-zA-Z0-9._-]+):touch#([a-zA-Z0-9._-]+) -->/g); | ||
let touchnots = html.match(/<!-- BEGIN ([a-zA-Z0-9._-]+):touchnot#([a-zA-Z0-9._-]+) -->/g); | ||
let exists = html.match(/<!-- BEGIN ([a-zA-Z0-9._-]+):exist -->/g); | ||
let empties = html.match(/<!-- BEGIN ([a-zA-Z0-9._-]+):empty -->/g); | ||
/*タッチブロック解決*/ | ||
if(touchs){ | ||
for(let k = 0,n = touchs.length; k < n; k++){ | ||
let start = touchs[k]; | ||
start = start.replace(/([a-zA-Z0-9._-]+):touch#([a-zA-Z0-9._-]+)/,"($1):touch#($2)"); | ||
let end = start.replace(/BEGIN/,"END"); | ||
let reg = new RegExp(start+"(([\\n\\r\\t]|.)*?)"+end,"g"); | ||
html = html.replace(reg,function(m,key2,val,next){ | ||
let itemkey = typeof item[key2] === "function" ? item[key2].apply(that) : that.getDataFromObj(key2,item); | ||
if(itemkey == val){ | ||
return next; | ||
}else{ | ||
return ""; | ||
} | ||
}) | ||
} | ||
} | ||
resolveInclude(html){ | ||
var include = /<!-- #include id="(.*?)" -->/g; | ||
html = html.replace(include,function(m,key){ | ||
return $("#"+key).html(); | ||
/*タッチノットブロック解決*/ | ||
if(touchnots){ | ||
for(let k = 0,n = touchnots.length; k < n; k++){ | ||
let start = touchnots[k]; | ||
start = start.replace(/([a-zA-Z0-9._-]+):touchnot#([a-zA-Z0-9._-]+)/,"($1):touchnot#($2)"); | ||
let end = start.replace(/BEGIN/,"END"); | ||
let reg = new RegExp(start+"(([\\n\\r\\t]|.)*?)"+end,"g"); | ||
html = html.replace(reg,function(m,key2,val,next){ | ||
let itemkey = typeof item[key2] === "function" ? item[key2].apply(that) : that.getDataFromObj(key2,item); | ||
if(itemkey != val){ | ||
return next; | ||
}else{ | ||
return ""; | ||
} | ||
}); | ||
return html; | ||
} | ||
} | ||
resolveWith(html){ | ||
var width = /<!-- BEGIN ([a-zA-Z0-9._-]+):with -->(([\n\r\t]|.)*?)<!-- END ([a-zA-Z0-9._-]+):with -->/g; | ||
html = html.replace(width,function(m,key,val){ | ||
m = m.replace(/data\-bind=['"](.*?)['"]/g,"data-bind='"+key+".$1'"); | ||
return m; | ||
/*existブロックを解決*/ | ||
if(exists){ | ||
for(let k = 0,n = exists.length; k < n; k++){ | ||
let start = exists[k]; | ||
start = start.replace(/([a-zA-Z0-9._-]+):exist/,"($1):exist"); | ||
let end = start.replace(/BEGIN/,"END"); | ||
let reg = new RegExp(start+"(([\\n\\r\\t]|.)*?)"+end,"g"); | ||
html = html.replace(reg,function(m,key2,next){ | ||
let itemkey = typeof item[key2] === "function" ? item[key2].apply(that) : that.getDataFromObj(key2,item); | ||
if(itemkey){ | ||
return next; | ||
}else{ | ||
return ""; | ||
} | ||
}); | ||
return html; | ||
} | ||
} | ||
resolveLoop(html){ | ||
var loop = /<!-- BEGIN (.+?):loop -->(([\n\r\t]|.)*?)<!-- END (.+?):loop -->/g; | ||
var that = this; | ||
/*ループ文解決*/ | ||
html = html.replace(loop,function(m,key,val){ | ||
var keyItem = that.getDataByString(key); | ||
var keys = []; | ||
if(typeof keyItem === "function"){ | ||
keys = keyItem.apply(that); | ||
}else{ | ||
keys = keyItem; | ||
} | ||
var ret = ""; | ||
if(keys instanceof Array){ | ||
for(var i = 0,n = keys.length; i < n; i++){ | ||
ret += that.resolveBlock(val,keys[i],i); | ||
} | ||
} | ||
/*エスケープ削除*/ | ||
ret = ret.replace(/\\([^\\])/g,"$1"); | ||
return ret; | ||
/*emptyブロックを解決*/ | ||
if(empties){ | ||
for(let k = 0,n = empties.length; k < n; k++){ | ||
let start = empties[k]; | ||
start = start.replace(/([a-zA-Z0-9._-]+):empty/,"($1):empty"); | ||
let end = start.replace(/BEGIN/,"END"); | ||
let empty = new RegExp(start+"(([\\n\\r\\t]|.)*?)"+end,"g"); | ||
html = html.replace(empty,function(m,key2,next){ | ||
let itemkey = typeof item[key2] === "function" ? item[key2].apply(that) : that.getDataFromObj(key2,item); | ||
if(!itemkey){ | ||
return next; | ||
}else{ | ||
return ""; | ||
} | ||
}); | ||
return html; | ||
} | ||
} | ||
removeData(arr){ | ||
var data = this.data; | ||
for(var i in data){ | ||
for(var t = 0,n = arr.length; t < n; t++){ | ||
if(i === arr[t]){ | ||
delete data[i]; | ||
} | ||
} | ||
} | ||
return this; | ||
} | ||
hasLoop(txt){ | ||
var loop = /<!-- BEGIN (.+?):loop -->(([\n\r\t]|.)*?)<!-- END (.+?):loop -->/g; | ||
if(txt.match(loop)){ | ||
return true; | ||
/*変数解決*/ | ||
html = html.replace(/{([a-zA-Z0-9._-]+)}(\[([a-zA-Z0-9._-]+)\])*/g,function(n,key3,key4,converter){ | ||
let data; | ||
if(key3 == "i"){ | ||
data = i; | ||
}else{ | ||
if(item[key3]){ | ||
if (typeof item[key3] === "function"){ | ||
data = item[key3].apply(that); | ||
}else{ | ||
data = item[key3]; | ||
} | ||
}else{ | ||
return false; | ||
} | ||
} | ||
getHtml(selector,row){ | ||
var $template = $(selector); | ||
var html = $template.html(); | ||
if(row){ | ||
html = selector; | ||
} | ||
if(!html){ | ||
if(converter && that.convert && that.convert[converter]){ | ||
return that.convert[converter].call(that,""); | ||
}else{ | ||
return ""; | ||
} | ||
} | ||
var data = this.data; | ||
/*インクルード解決*/ | ||
html = this.resolveInclude(html); | ||
/*with解決*/ | ||
html = this.resolveWith(html); | ||
/*ループ解決*/ | ||
while(this.hasLoop(html)){ | ||
html = this.resolveLoop(html); | ||
} | ||
if(converter && that.convert && that.convert[converter]){ | ||
return that.convert[converter].call(that,data); | ||
}else{ | ||
return data; | ||
} | ||
}); | ||
return html; | ||
} | ||
/*絶対パス形式の変数を解決*/ | ||
resolveAbsBlock(html){ | ||
let that = this; | ||
html = html.replace(/{(.*?)}/g,function(n,key3){ | ||
let data = that.getDataByString(key3); | ||
if(typeof data !== "undefined"){ | ||
if (typeof data === "function"){ | ||
return data.apply(that); | ||
}else{ | ||
return data; | ||
} | ||
/*変数解決*/ | ||
html = this.resolveBlock(html,data); | ||
/*エスケープ削除*/ | ||
html = html.replace(/\\([^\\])/g,"$1"); | ||
/*絶対パスで指定された変数を解決*/ | ||
html = this.resolveAbsBlock(html); | ||
/*空行削除*/ | ||
return html.replace(/^([\t ])*\n/gm,""); | ||
} | ||
update(txt,part){ | ||
var html = this.getHtml(); | ||
var templates = this.templates; | ||
var renderWay = txt || "html"; | ||
if(this.beforeUpdated){ | ||
this.beforeUpdated(); | ||
}else{ | ||
return n; | ||
} | ||
}); | ||
return html; | ||
} | ||
resolveInclude(html){ | ||
let include = /<!-- #include id="(.*?)" -->/g; | ||
html = html.replace(include,function(m,key){ | ||
return $("#"+key).html(); | ||
}); | ||
return html; | ||
} | ||
resolveWith(html){ | ||
let width = /<!-- BEGIN ([a-zA-Z0-9._-]+):with -->(([\n\r\t]|.)*?)<!-- END ([a-zA-Z0-9._-]+):with -->/g; | ||
html = html.replace(width,function(m,key,val){ | ||
m = m.replace(/data\-bind=['"](.*?)['"]/g,"data-bind='"+key+".$1'"); | ||
return m; | ||
}); | ||
return html; | ||
} | ||
resolveLoop(html){ | ||
let loop = /<!-- BEGIN (.+?):loop -->(([\n\r\t]|.)*?)<!-- END (.+?):loop -->/g; | ||
let that = this; | ||
/*ループ文解決*/ | ||
html = html.replace(loop,function(m,key,val){ | ||
let keyItem = that.getDataByString(key); | ||
let keys = []; | ||
if(typeof keyItem === "function"){ | ||
keys = keyItem.apply(that); | ||
}else{ | ||
keys = keyItem; | ||
} | ||
let ret = ""; | ||
if(keys instanceof Array){ | ||
for(let i = 0,n = keys.length; i < n; i++){ | ||
ret += that.resolveBlock(val,keys[i],i); | ||
} | ||
for(var i = 0,n = templates.length; i < n; i++){ | ||
var tem = templates[i]; | ||
var selector = "#"+tem; | ||
var html = this.getHtml(selector); | ||
var $target = $("[data-id='"+tem+"']"); | ||
if(!part || part == tem){ | ||
if($target.length == 0){ | ||
var $newitem = $("<div data-id='"+tem+"'></div>"); | ||
$newitem[renderWay](html); | ||
$(selector).after($newitem); | ||
}else{ | ||
$target[renderWay](html); | ||
} | ||
if(part){ | ||
break; | ||
} | ||
} | ||
} | ||
/*エスケープ削除*/ | ||
ret = ret.replace(/\\([^\\])/g,"$1"); | ||
return ret; | ||
}); | ||
return html; | ||
} | ||
removeData(arr){ | ||
let data = this.data; | ||
for(let i in data){ | ||
for(let t = 0,n = arr.length; t < n; t++){ | ||
if(i === arr[t]){ | ||
delete data[i]; | ||
} | ||
this.updateBindingData(part); | ||
if(this.onUpdated){ | ||
this.onUpdated(); | ||
} | ||
return this; | ||
} | ||
} | ||
updateBindingData(part){ | ||
var that = this; | ||
var templates = that.templates; | ||
for(var i = 0,n = templates.length; i < n; i++){ | ||
var temp = templates[i]; | ||
if(!part || part == temp){ | ||
var $template = $("[data-id='"+temp+"']"); | ||
$template.find("[data-bind]").each(function(){ | ||
var data = that.getDataByString($(this).data("bind")); | ||
if($(this).attr("type") == "checkbox" || $(this).attr("type") == "radio"){ | ||
if(data == $(this).val()){ | ||
$(this).prop("checked",true); | ||
} | ||
}else{ | ||
$(this).val(data); | ||
} | ||
}); | ||
if(part){ | ||
break; | ||
} | ||
return this; | ||
} | ||
hasLoop(txt){ | ||
let loop = /<!-- BEGIN (.+?):loop -->(([\n\r\t]|.)*?)<!-- END (.+?):loop -->/g; | ||
if(txt.match(loop)){ | ||
return true; | ||
}else{ | ||
return false; | ||
} | ||
} | ||
getHtml(selector,row){ | ||
let template = this.atemplate.find((item) => item.id === selector); | ||
if(!template){ | ||
return ""; | ||
} | ||
let html = template.html; | ||
if(row){ | ||
html = selector; | ||
} | ||
if(!html){ | ||
return ""; | ||
} | ||
let data = this.data; | ||
/*インクルード解決*/ | ||
html = this.resolveInclude(html); | ||
/*with解決*/ | ||
html = this.resolveWith(html); | ||
/*ループ解決*/ | ||
while(this.hasLoop(html)){ | ||
html = this.resolveLoop(html); | ||
} | ||
/*変数解決*/ | ||
html = this.resolveBlock(html,data); | ||
/*エスケープ削除*/ | ||
html = html.replace(/\\([^\\])/g,"$1"); | ||
/*絶対パスで指定された変数を解決*/ | ||
html = this.resolveAbsBlock(html); | ||
/*空行削除*/ | ||
return html.replace(/^([\t ])*\n/gm,""); | ||
} | ||
update(txt,part){ | ||
let html = this.getHtml(); | ||
let templates = this.templates; | ||
let renderWay = txt || "html"; | ||
if(this.beforeUpdated){ | ||
this.beforeUpdated(); | ||
} | ||
for(let i = 0,n = templates.length; i < n; i++){ | ||
let tem = templates[i]; | ||
let selector = "#"+tem; | ||
let html = this.getHtml(tem); | ||
let $target = $("[data-id='"+tem+"']"); | ||
if(!part || part == tem){ | ||
if($target.length == 0){ | ||
let $newitem = $("<div data-id='"+tem+"'></div>"); | ||
$newitem[renderWay](html); | ||
$(selector).after($newitem); | ||
}else{ | ||
if(renderWay === 'text'){ | ||
$target.text(html); | ||
}else{ | ||
morphdom($target.get(0),`<div data-id='${tem}'>${html}</div>`); | ||
} | ||
} | ||
if(part){ | ||
break; | ||
} | ||
} | ||
} | ||
this.updateBindingData(part); | ||
if(this.onUpdated){ | ||
this.onUpdated(part); | ||
} | ||
return this; | ||
} | ||
updateBindingData(part){ | ||
let that = this; | ||
let templates = that.templates; | ||
for(let i = 0,n = templates.length; i < n; i++){ | ||
let temp = templates[i]; | ||
if(!part || part == temp){ | ||
let $template = $("[data-id='"+temp+"']"); | ||
$template.find("[data-bind]").each(function(){ | ||
let data = that.getDataByString($(this).data("bind")); | ||
if($(this).attr("type") == "checkbox" || $(this).attr("type") == "radio"){ | ||
if(data == $(this).val()){ | ||
$(this).prop("checked",true); | ||
} | ||
}else{ | ||
$(this).val(data); | ||
} | ||
}); | ||
if(part){ | ||
break; | ||
} | ||
return this; | ||
} | ||
} | ||
copyToClipBoard () { | ||
var copyArea = $("<textarea/>"); | ||
$("body").append(copyArea); | ||
copyArea.text(this.getHtml()); | ||
copyArea.select(); | ||
document.execCommand("copy"); | ||
copyArea.remove(); | ||
return this; | ||
return this; | ||
} | ||
copyToClipBoard () { | ||
let copyArea = $("<textarea/>"); | ||
$("body").append(copyArea); | ||
copyArea.text(this.getHtml()); | ||
copyArea.select(); | ||
document.execCommand("copy"); | ||
copyArea.remove(); | ||
return this; | ||
} | ||
applyMethod (method) { | ||
let args = [].splice.call(arguments, 0); | ||
args.shift(); | ||
return this.method[method].apply(this, args); | ||
} | ||
getComputedProp (prop) { | ||
return this.data[prop].apply(this); | ||
} | ||
remove (path) { | ||
let object = this.data; | ||
let stack = path.split('.'); | ||
while (stack.length > 1) { | ||
object = object[stack.shift()]; | ||
} | ||
applyMethod (method) { | ||
var args = [].splice.call(arguments, 0); | ||
args.shift(); | ||
return this.method[method].apply(this, args); | ||
let shift = stack.shift(); | ||
if (shift.match(/^\d+$/)) { | ||
object.splice(Number(shift), 1); | ||
} else { | ||
delete object[shift]; | ||
} | ||
getComputedProp (prop) { | ||
return this.data[prop].apply(this); | ||
} | ||
remove (path) { | ||
var object = this.data; | ||
var stack = path.split('.'); | ||
while (stack.length > 1) { | ||
object = object[stack.shift()]; | ||
} | ||
var shift = stack.shift(); | ||
if (shift.match(/^\d+$/)) { | ||
object.splice(Number(shift), 1); | ||
} else { | ||
delete object[shift]; | ||
} | ||
return this; | ||
} | ||
return this; | ||
} | ||
} | ||
module.exports = aTemplate; |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
288948
3920
2
+ Addedmorphdom@^2.3.1
+ Addedmorphdom@2.7.4(transitive)