diff --git a/dist/layui.js b/dist/layui.js index 2dff68f9..45a9b320 100644 --- a/dist/layui.js +++ b/dist/layui.js @@ -1,2 +1,2 @@ -/** v2.9.11 | MIT Licensed */;!function(d){"use strict";var t,h=d.document,m={modules:{},status:{},timeout:10,event:{}},n=function(){this.v="2.9.11"},e=d.LAYUI_GLOBAL||{},v=(t=h.currentScript?h.currentScript.src:function(){for(var t,e=h.scripts,o=e.length-1,n=o;01e3*m.timeout/4?g(s+" is not a valid module","error"):void(m.status[s]?y():setTimeout(n,4))}())}function y(){e.push(layui[s]),11e3*m.timeout/4?g(s+" is not a valid module","error"):void("string"==typeof m.modules[s]&&m.status[s]?y():setTimeout(f,4))}():((r=h.createElement("script"))["async"]=!0,r.charset="utf-8",r.src=i+((u=!0===m.version?m.v||(new Date).getTime():m.version||"")?"?v="+u:""),l.appendChild(r),!r.attachEvent||r.attachEvent.toString&&r.attachEvent.toString().indexOf("[native code")<0||b?r.addEventListener("load",function(t){p(t,i)},!1):r.attachEvent("onreadystatechange",function(t){p(t,i)}),m.modules[s]=i)),a},n.prototype.disuse=function(t){var o=this;return t=o.isArray(t)?t:[t],o.each(t,function(t,e){m.status[e],delete o[e],delete N[e],delete o.modules[e],delete m.status[e],delete m.modules[e]}),o},n.prototype.getStyle=function(t,e){t=t.currentStyle||d.getComputedStyle(t,null);return t[t.getPropertyValue?"getPropertyValue":"getAttribute"](e)},n.prototype.link=function(o,n,t){var r=this,e=h.getElementsByTagName("head")[0],i=h.createElement("link"),a="layuicss-"+((t="string"==typeof n?n:t)||o).replace(/\.|\//g,""),u="creating",l=0;return i.href=o+(m.debug?"?v="+(new Date).getTime():""),i.rel="stylesheet",i.id=a,i.media="all",h.getElementById(a)||e.appendChild(i),"function"==typeof n&&function s(t){var e=h.getElementById(a);return++l>1e3*m.timeout/100?g(o+" timeout"):void(1989===parseInt(r.getStyle(e,"width"))?(t===u&&e.removeAttribute("lay-status"),e.getAttribute("lay-status")===u?setTimeout(s,100):n()):(e.setAttribute("lay-status",u),setTimeout(function(){s(u)},100)))}(),r},n.prototype.addcss=function(t,e,o){return layui.link(m.dir+"css/"+t,e,o)},m.callback={},n.prototype.factory=function(t){if(layui[t])return"function"==typeof m.callback[t]?m.callback[t]:null},n.prototype.img=function(t,e,o){var n=new Image;if(n.src=t,n.complete)return e(n);n.onload=function(){n.onload=null,"function"==typeof e&&e(n)},n.onerror=function(t){n.onerror=null,"function"==typeof o&&o(t)}},n.prototype.config=function(t){for(var e in t=t||{})m[e]=t[e];return this},n.prototype.modules=function(){var t,e={};for(t in N)e[t]=N[t];return e}(),n.prototype.extend=function(t){for(var e in t=t||{})this[e]||this.modules[e]?g(e+" Module already exists","error"):this.modules[e]=t[e];return this},n.prototype.router=n.prototype.hash=function(t){var o={path:[],search:{},hash:((t=t||location.hash).match(/[^#](#.*$)/)||[])[1]||""};return/^#\//.test(t)&&(t=t.replace(/^#\//,""),o.href="/"+t,t=t.replace(/([^#])(#.*$)/,"$1").split("/")||[],this.each(t,function(t,e){/^\w+=/.test(e)?(e=e.split("="),o.search[e[0]]=e[1]):o.path.push(e)})),o},n.prototype.url=function(t){var r,e,o=this;return{pathname:(t?((t.match(/\.[^.]+?\/.+/)||[])[0]||"").replace(/^[^\/]+/,"").replace(/\?.+/,""):location.pathname).replace(/^\//,"").split("/"),search:(r={},e=(t?((t.match(/\?.+/)||[])[0]||"").replace(/\#.+/,""):location.search).replace(/^\?+/,"").split("&"),o.each(e,function(t,e){var o=e.indexOf("="),n=o<0?e.substr(0,e.length):0!==o&&e.substr(0,o);n&&(r[n]=0(l.innerHeight||h.documentElement.clientHeight)},d.getStyleRules=function(t,n){if(t)return t=(t=t.sheet||t.styleSheet||{}).cssRules||t.rules,"function"==typeof n&&layui.each(t,function(t,e){if(n(e,t))return!0}),t},d.style=function(t){t=t||{};var e=d.elem("style"),n=t.text||"",i=t.target;if(n)return"styleSheet"in e?(e.setAttribute("type","text/css"),e.styleSheet.cssText=n):e.innerHTML=n,e.id="LAY-STYLE-"+(t.id||(n=d.style.index||0,d.style.index++,"DF-"+n)),i&&((t=d(i).find("#"+e.id))[0]&&t.remove(),d(i).append(e)),e},d.position=function(t,e,n){var i,r,o,c,a,u,s,f;e&&(n=n||{},t!==h&&t!==d("body")[0]||(n.clickType="right"),i="right"===n.clickType?{left:(i=n.e||l.event||{}).clientX,top:i.clientY,right:i.clientX,bottom:i.clientY}:t.getBoundingClientRect(),s=e.offsetWidth,f=e.offsetHeight,r=function(t){return h.body[t=t?"scrollLeft":"scrollTop"]|h.documentElement[t]},o=function(t){return h.documentElement[t?"clientWidth":"clientHeight"]},c="margin"in n?n.margin:5,a=i.left,u=i.bottom,"center"===n.align?a-=(s-t.offsetWidth)/2:"right"===n.align&&(a=a-s+t.offsetWidth),(a=a+s+c>o("width")?o("width")-s-c:a)o()&&(i.top>f+c&&i.top<=o()?u=i.top-f-2*c:n.allowBottomOut||(u=o()-f-2*c)<0&&(u=0)),(s=n.position)&&(e.style.position=s),e.style.left=a+("fixed"===s?0:r(1))+"px",e.style.top=u+("fixed"===s?0:r())+"px",d.hasScrollbar()||(f=e.getBoundingClientRect(),!n.SYSTEM_RELOAD&&f.bottom+c>o()&&(n.SYSTEM_RELOAD=!0,setTimeout(function(){d.position(t,e,n)},50))))},d.options=function(t,e){if(e="object"==typeof e?e:{attr:e},t===h)return{};var t=d(t),n=e.attr||"lay-options",t=t.attr(n);try{return new Function("return "+(t||"{}"))()}catch(i){return layui.hint().error(e.errorText||[n+'="'+t+'"',"\n parseerror: "+i].join("\n"),"error"),{}}},d.isTopElem=function(n){var t=[h,d("body")[0]],i=!1;return d.each(t,function(t,e){if(e===n)return i=!0}),i},d.clipboard={writeText:function(n){var i=String(n.text);function t(){var t=h.createElement("textarea");t.value=i,t.style.position="fixed",t.style.opacity="0",t.style.top="0px",t.style.left="0px",h.body.appendChild(t),t.select();try{h.execCommand("copy"),"function"==typeof n.done&&n.done()}catch(e){"function"==typeof n.error&&n.error(e)}finally{t.remove?t.remove():h.body.removeChild(t)}}navigator&&"clipboard"in navigator?navigator.clipboard.writeText(i).then(n.done,function(){t()}):t()}},d.passiveSupported=function(){var t=!1;try{var e=Object.defineProperty({},"passive",{get:function(){t=!0}});l.addEventListener("test",null,e),l.removeEventListener("test",null,e)}catch(n){}return t}(),d.touchEventsSupported=function(){return"ontouchstart"in l},d.touchSwipe=function(t,e){var n,i,r,o=e,c=d(t)[0];c&&d.touchEventsSupported()&&(n={pointerStart:{x:0,y:0},pointerEnd:{x:0,y:0},distanceX:0,distanceY:0,direction:"none",timeStart:null},e=function(t){1===t.touches.length&&(c.addEventListener("touchmove",i,!!d.passiveSupported&&{passive:!1}),c.addEventListener("touchend",r),c.addEventListener("touchcancel",r),n.timeStart=Date.now(),n.pointerStart.x=n.pointerEnd.x=t.touches[0].clientX,n.pointerStart.y=n.pointerEnd.y=t.touches[0].clientY,n.distanceX=n.distanceY=0,n.direction="none",o.onTouchStart)&&o.onTouchStart(t,n)},i=function(t){t.preventDefault(),n.pointerEnd.x=t.touches[0].clientX,n.pointerEnd.y=t.touches[0].clientY,n.distanceX=n.pointerStart.x-n.pointerEnd.x,n.distanceY=n.pointerStart.y-n.pointerEnd.y,Math.abs(n.distanceX)>Math.abs(n.distanceY)?n.direction=0]|&(?=#[a-zA-Z0-9]+)/g.test(e+="")?e.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,"""):e}},i=function(e){return new RegExp(e,"g")},u=function(e,r){var n="Laytpl Error: ";return"object"==typeof console&&console.error(n+e+"\n"+(r||"")),n+e},n=function(e,r){var n=this,e=(n.config=n.config||{},n.template=e,function(e){for(var r in e)n.config[r]=e[r]});e(c),e(r)},r=(n.prototype.tagExp=function(e,r,n){var c=this.config;return i((r||"")+c.open+["#([\\s\\S])+?","([^{#}])*?"][e||0]+c.close+(n||""))},n.prototype.parse=function(e,r){var n=this,c=n.config,t=e,o=i("^"+c.open+"#",""),p=i(c.close+"$","");if("string"!=typeof e)return e;e='"use strict";var view = "'+(e=e.replace(/\s+|\r|\t|\n/g," ").replace(i(c.open+"#"),c.open+"# ").replace(i(c.close+"}"),"} "+c.close).replace(/\\/g,"\\\\").replace(i(c.open+"!(.+?)!"+c.close),function(e){return e=e.replace(i("^"+c.open+"!"),"").replace(i("!"+c.close),"").replace(i(c.open+"|"+c.close),function(e){return e.replace(/(.)/g,"\\$1")})}).replace(/(?="|')/g,"\\").replace(n.tagExp(),function(e){return'";'+(e=e.replace(o,"").replace(p,"")).replace(/\\(.)/g,"$1")+';view+="'}).replace(n.tagExp(1),function(e){var r='"+laytpl.escape(';return e.replace(/\s/g,"")===c.open+c.close?"":(e=e.replace(i(c.open+"|"+c.close),""),/^=/.test(e)?e=e.replace(/^=/,""):/^-/.test(e)&&(e=e.replace(/^-/,""),r='"+('),r+e.replace(/\\(.)/g,"$1")+')+"')}))+'";return view;';try{return n.cache=e=new Function("d, laytpl",e),e(r,l)}catch(a){return delete n.cache,u(a,t)}},n.prototype.render=function(e,r){e=e||{};var n=this,e=n.cache?n.cache(e,l):n.parse(n.template,e);return"function"==typeof r&&r(e),e},function(e,r){return new n(e,r)});r.config=function(e){for(var r in e=e||{})c[r]=e[r]},r.v="2.0.0",e("laytpl",r)});layui.define(function(e){"use strict";var r=document,u="getElementById",c="getElementsByTagName",a="layui-disabled",t=function(e){var a=this;a.config=e||{},a.config.index=++o.index,a.render(!0)},o=(t.prototype.type=function(){var e=this.config;if("object"==typeof e.elem)return e.elem.length===undefined?2:3},t.prototype.view=function(){var i,e,t,n=this.config,r=n.groups="groups"in n?Number(n.groups)||0:5,u=(n.layout="object"==typeof n.layout?n.layout:["prev","page","next"],n.count=Number(n.count)||0,n.curr=Number(n.curr)||1,n.limits="object"==typeof n.limits?n.limits:[10,20,30,40,50],n.limit=Number(n.limit)||10,n.pages=Math.ceil(n.count/n.limit)||1,n.curr>n.pages?n.curr=n.pages:n.curr<1&&(n.curr=1),r<0?r=1:r>n.pages&&(r=n.pages),n.prev="prev"in n?n.prev:"\u4e0a\u4e00\u9875",n.next="next"in n?n.next:"\u4e0b\u4e00\u9875",n.pages>r?Math.ceil((n.curr+(1'+n.prev+"":"",page:function(){var e=[];if(n.count<1)return"";1'+(n.first||1)+"");var a=Math.floor((r-1)/2),t=1n.pages?n.pages:a:r;for(i-t...');t<=i;t++)t===n.curr?e.push('"+t+""):e.push(''+t+"");return n.pages>r&&n.pages>i&&!1!==n.last&&(i+1...'),0!==r)&&e.push(''+(n.last||n.pages)+""),e.join("")}(),next:n.next?''+n.next+"":"",count:''+(e="object"==typeof n.countText?n.countText:["\u5171 "," \u6761"])[0]+n.count+e[1]+"",limit:(i=['"),refresh:['','',""].join(""),skip:[''+(e="object"==typeof n.skipText?n.skipText:["\u5230\u7b2c","\u9875","\u786e\u5b9a"])[0],'',e[1]+'",""].join("")};return['
',(t=[],layui.each(n.layout,function(e,a){l[a]&&t.push(l[a])}),t.join("")),"
"].join("")},t.prototype.jump=function(e,a){if(e){var t=this,i=t.config,n=e.children,r=e[c]("button")[0],u=e[c]("input")[0],e=e[c]("select")[0],l=function(){var e=Number(u.value.replace(/\s|\D/g,""));e&&(i.curr=e,t.render())};if(a)return l();for(var s=0,p=n.length;si.pages||(i.curr=e,t.render())});e&&o.on(e,"change",function(){var e=this.value;i.curr*e>i.count&&(i.curr=Math.ceil(i.count/e)),i.limit=e,t.render()}),r&&o.on(r,"click",function(){l()})}},t.prototype.skip=function(t){var i,e;t&&(i=this,e=t[c]("input")[0])&&o.on(e,"keyup",function(e){var a=this.value,e=e.keyCode;/^(37|38|39|40)$/.test(e)||(/\D/.test(a)&&(this.value=a.replace(/\D/,"")),13===e&&i.jump(t,!0))})},t.prototype.render=function(e){var a=this,t=a.config,i=a.type(),n=a.view(),i=(2===i?t.elem&&(t.elem.innerHTML=n):3===i?t.elem.html(n):r[u](t.elem)&&(r[u](t.elem).innerHTML=n),t.jump&&t.jump(t,e),r[u]("layui-laypage-"+t.index));a.jump(i),t.hash&&!e&&(location.hash="!"+t.hash+"="+t.curr),a.skip(i)},{render:function(e){return new t(e).index},index:layui.laypage?layui.laypage.index+1e4:0,on:function(a,e,t){return a.attachEvent?a.attachEvent("on"+e,function(e){e.target=e.srcElement,t.call(a,e)}):a.addEventListener(e,t,!1),this}});e("laypage",o)});!function(i,D){"use strict";var n=i.layui&&layui.define,l={getPath:i.lay&&lay.getPath?lay.getPath:"",link:function(e,t,a){T.path&&i.lay&&lay.layui&&lay.layui.link(T.path+e,t,a)}},e=i.LAYUI_GLOBAL||{},a="laydate",d="lay-"+a+"-id",T={v:"5.6.0",config:{weekStart:0},index:i.laydate&&i.laydate.v?1e5:0,path:e.laydate_dir||l.getPath,set:function(e){var t=this;return t.config=lay.extend({},t.config,e),t},ready:function(e){var t="laydate",a=(n?"modules/":"")+"laydate.css?v="+T.v;return n?layui["layui.all"]?"function"==typeof e&&e():layui.addcss(a,e,t):l.link(a,e,t),this}},s=function(){var t=this,e=t.config.id;return(s.that[e]=t).inst={hint:function(e){t.hint.call(t,e)},reload:function(e){t.reload.call(t,e)},config:t.config}},C="layui-this",M="laydate-disabled",h=[100,2e5],v="layui-laydate-static",b="layui-laydate-list",o="laydate-selected",r="layui-laydate-hint",y="laydate-day-prev",m="laydate-day-next",L=".laydate-btns-confirm",E="laydate-time-text",I="laydate-btns-time",x="layui-laydate-preview",w="layui-laydate-shade",k=function(e){var t,a=this,n=(a.index=++T.index,a.config=lay.extend({},a.config,T.config,e),lay(e.elem||a.config.elem));return 1\u8bf7\u91cd\u65b0\u9009\u62e9",invalidDate:"\u4e0d\u5728\u6709\u6548\u65e5\u671f\u6216\u65f6\u95f4\u8303\u56f4\u5185",formatError:["\u65e5\u671f\u683c\u5f0f\u4e0d\u5408\u6cd5
\u5fc5\u987b\u9075\u5faa\u4e0b\u8ff0\u683c\u5f0f\uff1a
","
\u5df2\u4e3a\u4f60\u91cd\u7f6e"],preview:"\u5f53\u524d\u9009\u4e2d\u7684\u7ed3\u679c"},en:{weeks:["Su","Mo","Tu","We","Th","Fr","Sa"],time:["Hours","Minutes","Seconds"],timeTips:"Select Time",startTime:"Start Time",endTime:"End Time",dateTips:"Select Date",month:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],tools:{confirm:"Confirm",clear:"Clear",now:"Now"},timeout:"End time cannot be less than start Time
Please re-select",invalidDate:"Invalid date",formatError:["The date format error
Must be followed\uff1a
","
It has been reset"],preview:"The selected result"}};return e[this.config.lang]||e.cn},k.prototype.markerOfChineseFestivals={"0-1-1":"\u5143\u65e6","0-2-14":"\u60c5\u4eba","0-3-8":"\u5987\u5973","0-3-12":"\u690d\u6811","0-4-1":"\u611a\u4eba","0-5-1":"\u52b3\u52a8","0-5-4":"\u9752\u5e74","0-6-1":"\u513f\u7ae5","0-9-10":"\u6559\u5e08","0-10-1":"\u56fd\u5e86","0-12-25":"\u5723\u8bde"},k.prototype.reload=function(e){this.config=lay.extend({},this.config,e),this.init()},k.prototype.init=function(){var r=this,o=r.config,e="static"===o.position,t={year:"yyyy",month:"yyyy-MM",date:"yyyy-MM-dd",time:"HH:mm:ss",datetime:"yyyy-MM-dd HH:mm:ss"};o.elem=lay(o.elem),o.eventElem=lay(o.eventElem),o.elem[0]&&("array"!==layui.type(o.theme)&&(o.theme=[o.theme]),o.fullPanel&&("datetime"!==o.type||o.range)&&delete o.fullPanel,r.rangeStr=o.range?"string"==typeof o.range?o.range:"-":"",r.rangeLinked=!(!o.range||!o.rangeLinked||"date"!==o.type&&"datetime"!==o.type),r.autoCalendarModel=function(){var e=r.rangeLinked;return r.rangeLinked=o.range&&("date"===o.type||"datetime"===o.type)&&(!r.startDate||!r.endDate||r.startDate&&r.endDate&&r.startDate.year===r.endDate.year&&r.startDate.month===r.endDate.month),lay(r.elem)[r.rangeLinked?"addClass":"removeClass"]("layui-laydate-linkage"),r.rangeLinked!=e},r.autoCalendarModel.auto=r.rangeLinked&&"auto"===o.rangeLinked,"array"===layui.type(o.range)&&(r.rangeElem=[lay(o.range[0]),lay(o.range[1])]),t[o.type]||(i.console&&console.error&&console.error("laydate type error:'"+o.type+"' is not supported"),o.type="date"),o.format===t.date&&(o.format=t[o.type]||t.date),r.format=s.formatArr(o.format),o.weekStart&&!/^[0-6]$/.test(o.weekStart)&&(t=r.lang(),o.weekStart=t.weeks.indexOf(o.weekStart),-1===o.weekStart)&&(o.weekStart=0),r.EXP_IF="",r.EXP_SPLIT="",lay.each(r.format,function(e,t){e=new RegExp(u).test(t)?"\\d{"+(new RegExp(u).test(r.format[0===e?e+1:e-1]||"")?/^yyyy|y$/.test(t)?4:t.length:/^yyyy$/.test(t)?"1,4":/^y$/.test(t)?"1,308":"1,2")+"}":"\\"+t;r.EXP_IF=r.EXP_IF+e,r.EXP_SPLIT=r.EXP_SPLIT+"("+e+")"}),r.EXP_IF_ONE=new RegExp("^"+r.EXP_IF+"$"),r.EXP_IF=new RegExp("^"+(o.range?r.EXP_IF+"\\s\\"+r.rangeStr+"\\s"+r.EXP_IF:r.EXP_IF)+"$"),r.EXP_SPLIT=new RegExp("^"+r.EXP_SPLIT+"$",""),r.isInput(o.elem[0])||"focus"===o.trigger&&(o.trigger="click"),o.elem.attr("lay-key",r.index),o.eventElem.attr("lay-key",r.index),o.elem.attr(d,o.id),lay.each(["min","max"],function(e,t){var a=[],n=[];if("number"==typeof o[t])var i=o[t],l=new Date,l=r.newDate({year:l.getFullYear(),month:l.getMonth(),date:l.getDate(),hours:e?23:0,minutes:e?59:0,seconds:e?59:0}).getTime(),e=new Date(i?i<864e5?l+864e5*i:i:l),a=[e.getFullYear(),e.getMonth()+1,e.getDate()],n=[e.getHours(),e.getMinutes(),e.getSeconds()];else if("string"==typeof o[t])a=(o[t].match(/\d+-\d+-\d+/)||[""])[0].split("-"),n=(o[t].match(/\d+:\d+:\d+/)||[""])[0].split(":");else if("object"==typeof o[t])return o[t];o[t]={year:0|a[0]||(new Date).getFullYear(),month:a[1]?(0|a[1])-1:(new Date).getMonth(),date:0|a[2]||(new Date).getDate(),hours:0|n[0],minutes:0|n[1],seconds:0|n[2]}}),r.elemID="layui-laydate"+o.elem.attr("lay-key"),(o.show||e)&&r.render(),e||r.events(),"function"==typeof o.formatToDisplay&&(r.isInput(o.elem[0])?r.formatToDisplay(o.elem[0],o.formatToDisplay):(t=r.rangeElem)&&(r.formatToDisplay(t[0][0],o.formatToDisplay),r.formatToDisplay(t[1][0],o.formatToDisplay))),o.value)&&o.isInitValue&&("date"===layui.type(o.value)?r.setValue(r.parse(0,r.systemDate(o.value))):r.setValue(o.value))},k.prototype.render=function(){var a,n,i,l,r=this,o=r.config,d=r.lang(),s="static"===o.position,y=r.elem=lay.elem("div",{id:r.elemID,"class":["layui-laydate",o.range?" layui-laydate-range":"",r.rangeLinked?" layui-laydate-linkage":"",s?" "+v:"",o.fullPanel?" laydate-theme-fullpanel":"",(a="",lay.each(o.theme,function(e,t){"default"===t||/^#/.test(t)||(a+=" laydate-theme-"+t)}),a)].join("")}),m=r.elemMain=[],u=r.elemHeader=[],c=r.elemCont=[],h=r.table=[],e=r.footer=lay.elem("div",{"class":"layui-laydate-footer"}),t=r.shortcut=lay.elem("ul",{"class":"layui-laydate-shortcut"}),p=(o.zIndex&&(y.style.zIndex=o.zIndex),lay.each(new Array(2),function(e){if(!o.range&&0'+d.timeTips+""),(o.range||"datetime"!==o.type||o.fullPanel)&&p.push(''),lay.each(o.btns,function(e,t){var a=d.tools[t]||"btn";o.range&&"now"===t||(s&&"clear"===t&&(a="cn"===o.lang?"\u91cd\u7f6e":"Reset"),n.push(''+a+""))}),p.push('"),p.join(""))),o.shortcuts&&(y.appendChild(t),lay(t).html((i=[],lay.each(o.shortcuts,function(e,t){i.push('
  • '+t.text+"
  • ")}),i.join(""))).find("li").on("click",function(e){var t=o.shortcuts[this.dataset.index]||{},t=("function"==typeof t.value?t.value():t.value)||[],n=(layui.isArray(t)||(t=[t]),o.type),t=(lay.each(t,function(e,t){var a=[o.dateTime,r.endDate][e];"time"===n&&"date"!==layui.type(t)?r.EXP_IF.test(t)&&(t=(t.match(r.EXP_SPLIT)||[]).slice(1),lay.extend(a,{hours:0|t[0],minutes:0|t[2],seconds:0|t[4]})):lay.extend(a,r.systemDate("date"===layui.type(t)?t:new Date(t))),"time"!==n&&"datetime"!==n||(r[["startTime","endTime"][e]]={hours:a.hours,minutes:a.minutes,seconds:a.seconds}),0===e?r.startDate=lay.extend({},a):r.endState=!0,"year"===n||"month"===n||"time"===n?r.listYM[e]=[a.year,a.month+1]:e&&r.autoCalendarModel.auto&&r.autoCalendarModel()}),r.checkDate("limit").calendar(null,null,"init"),lay(r.footer).find("."+I).removeClass(M));t&&"date"===t.attr("lay-type")&&t[0].click(),r.done(null,"change"),lay(this).addClass(C),"static"!==o.position&&r.setValue(r.parse()).done().remove()})),lay.each(m,function(e,t){y.appendChild(t)}),o.showBottom&&y.appendChild(e),lay.elem("style")),f=[],g=!0,t=(lay.each(o.theme,function(e,t){g&&/^#/.test(t)?(g=!(l=!0),f.push(["#{{id}} .layui-laydate-header{background-color:{{theme}};}","#{{id}} li.layui-this,#{{id}} td.layui-this>div{background-color:{{theme}} !important;}",-1!==o.theme.indexOf("circle")?"":"#{{id}} .layui-this{background-color:{{theme}} !important;}","#{{id}} .laydate-day-now{color:{{theme}} !important;}","#{{id}} .laydate-day-now:after{border-color:{{theme}} !important;}"].join("").replace(/{{id}}/g,r.elemID).replace(/{{theme}}/g,t))):!g&&/^#/.test(t)&&f.push(["#{{id}} .laydate-selected>div{background-color:{{theme}} !important;}","#{{id}} .laydate-selected:hover>div{background-color:{{theme}} !important;}"].join("").replace(/{{id}}/g,r.elemID).replace(/{{theme}}/g,t))}),o.shortcuts&&o.range&&f.push("#{{id}}.layui-laydate-range{width: 628px;}".replace(/{{id}}/g,r.elemID)),f.length&&(f=f.join(""),"styleSheet"in p?(p.setAttribute("type","text/css"),p.styleSheet.cssText=f):p.innerHTML=f,l&&lay(y).addClass("laydate-theme-molv"),y.appendChild(p)),r.remove(k.thisElemDate),T.thisId=o.id,s?o.elem.append(y):(D.body.appendChild(y),r.position()),o.shade?'
    ':"");y.insertAdjacentHTML("beforebegin",t),r.checkDate().calendar(null,0,"init"),r.changeEvent(),k.thisElemDate=r.elemID,r.renderAdditional(),"function"==typeof o.ready&&o.ready(lay.extend({},o.dateTime,{month:o.dateTime.month+1})),r.preview()},k.prototype.remove=function(e){var t=this,a=t.config,n=lay("#"+(e||t.elemID));return n[0]&&(n.hasClass(v)||t.checkDate(function(){n.remove(),delete t.startDate,delete t.endDate,delete t.endState,delete t.startTime,delete t.endTime,delete T.thisId,"function"==typeof a.close&&a.close(t)}),lay("."+w).remove()),t},k.prototype.position=function(){var e=this.config;return lay.position(e.elem[0],this.elem,{position:e.position}),this},k.prototype.hint=function(e){var t=this,a=(t.config,lay.elem("div",{"class":r}));t.elem&&(a.innerHTML=(e="object"==typeof e?e||{}:{content:e}).content||"",lay(t.elem).find("."+r).remove(),t.elem.appendChild(a),clearTimeout(t.hinTimer),t.hinTimer=setTimeout(function(){lay(t.elem).find("."+r).remove()},"ms"in e?e.ms:3e3))},k.prototype.getAsYM=function(e,t,a){return a?t--:t++,t<0&&(t=11,e--),11h[1]&&(e.year=h[1],o=!0),11t)&&(e.date=t,o=!0)},c=function(n,i,l){var r=["startTime","endTime"];i=(i.match(d.EXP_SPLIT)||[]).slice(1),l=l||0,s.range&&(d[r[l]]=d[r[l]]||{}),lay.each(d.format,function(e,t){var a=parseFloat(i[e]);i[e].lengthd.getDateTime(s.max)?(r=s.dateTime=lay.extend({},s.max),i=!0):d.getDateTime(r)d.getDateTime(s.max))&&(d.endDate=lay.extend({},s.max),i=!0),d.startTime={hours:s.dateTime.hours,minutes:s.dateTime.minutes,seconds:s.dateTime.seconds},d.endTime={hours:d.endDate.hours,minutes:d.endDate.minutes,seconds:d.endDate.seconds},"month"===s.type)&&(s.dateTime.date=1,d.endDate.date=1),i&&m&&(d.setValue(d.parse()),d.hint("value "+l.invalidDate+l.formatError[1])),d.startDate=d.startDate||m&&lay.extend({},s.dateTime),d.autoCalendarModel.auto&&d.autoCalendarModel(),d.endState=!s.range||!d.rangeLinked||!(!d.startDate||!d.endDate),e&&e()),d},k.prototype.markRender=function(e,a,t){var n;"object"==typeof t?lay.each(t||{},function(e,t){e=e.split("-");e[0]!=a[0]&&0!=e[0]||e[1]!=a[1]&&0!=e[1]||e[2]!=a[2]||(n=t||a[2])}):"string"==typeof t&&(n=t||a[2]),n&&e.find("div").html(''+n+"")},k.prototype.mark=function(t,a){var n=this,e=n.config,i=function(e){n.markRender(t,a,e)};return e.calendar&&"cn"===e.lang&&i(n.markerOfChineseFestivals),"function"==typeof e.mark?e.mark({year:a[0],month:a[1],date:a[2]},i):"object"==typeof e.mark&&i(e.mark),n},k.prototype.holidaysRender=function(r,o,e){var d=["holidays","workdays"],s=function(e,t,a){e.find("div").html(["",a,""].join(""))};"array"===layui.type(e)?lay.each(e,function(l,e){lay.each(e,function(e,t){var a,n,i;t=t,a=r.attr("lay-ymd"),n=t.split("-"),i=a.split("-"),lay.each(n,function(e,t){n[e]=parseInt(t,10)}),lay.each(i,function(e,t){i[e]=parseInt(t,10)}),n.join("-")===i.join("-")&&s(r,d[l],o[2])})}):"string"==typeof e&&-1!==d.indexOf(e)&&s(r,e,o[2])},k.prototype.holidays=function(t,a){var n=this,e=n.config,i=function(e){n.holidaysRender(t,a,e)};return"function"==typeof e.holidays?e.holidays({year:a[0],month:a[1],date:a[2]},i):"array"===layui.type(e.holidays)&&i(e.holidays),n},k.prototype.cellRender=function(t,e,a){var n=this.config;return"function"==typeof n.cellRender&&n.cellRender(e,function(e){"string"==typeof e?lay(t).html(e):"object"==typeof e&&lay(t).html("").append(lay(e)[0])},{originElem:t,type:a}),this},k.prototype.startOfYear=function(e){e=new Date(e);return e.setFullYear(e.getFullYear(),0,1),e.setHours(0,0,0,0),e},k.prototype.endOfYear=function(e){var e=new Date(e),t=e.getFullYear();return e.setFullYear(t+1,0,0),e.setHours(23,59,59,999),e},k.prototype.startOfMonth=function(e){e=new Date(e);return e.setDate(1),e.setHours(0,0,0,0),e},k.prototype.endOfMonth=function(e){var e=new Date(e),t=e.getMonth();return e.setFullYear(e.getFullYear(),t+1,0),e.setHours(23,59,59,999),e},k.prototype.addDays=function(e,t){e=new Date(e);return t&&e.setDate(e.getDate()+t),e},k.prototype.isDisabledYearOrMonth=function(e,t,a){for(var n=this,i=n.config,l="year"===t?n.startOfYear(e):n.startOfMonth(e),t="year"===t?n.endOfYear(e):n.endOfMonth(e),r=Math.floor((t.getTime()-l.getTime())/864e5)+1,o=0,d=0;d(t.time?0:41)?i.endDate:e.dateTime;return lay.each({now:lay.extend({},a,t.date||{}),min:e.min,max:e.max},function(e,a){var n;l[e]=i.newDate(lay.extend({year:a.year,month:"year"===t.type?0:a.month,date:"year"===t.type||"month"===t.type?1:a.date},(n={},lay.each(t.time,function(e,t){n[t]=a[t]}),n))).getTime()}),a=l.nowh[1]&&(s.year=h[1],d.hint(y.invalidDate)),d.firstDate||(d.firstDate=lay.extend({},s)),n.setFullYear(s.year,s.month,1),l=(n.getDay()+(7-a.weekStart))%7,r=T.getEndDate(s.month||12,s.year),o=T.getEndDate(s.month+1,s.year),lay.each(u,function(e,t){var a,n=[s.year,s.month];(t=lay(t)).removeAttr("class"),e"+n[2]+""),d.mark(t,n).holidays(t,n).limit({elem:t,date:{year:n[0],month:n[1]-1,date:n[2]},index:e,rangeType:i,disabledType:"date"}),d.cellRender(t,{year:n[0],month:n[1],date:n[2]},"date")}),lay(c[0]).attr("lay-ym",s.year+"-"+(s.month+1)),lay(c[1]).attr("lay-ym",s.year+"-"+(s.month+1)),"cn"===a.lang?(lay(c[0]).attr("lay-type","year").html(s.year+" \u5e74"),lay(c[1]).attr("lay-type","month").html(s.month+1+" \u6708")):(lay(c[0]).attr("lay-type","month").html(y.month[s.month]),lay(c[1]).attr("lay-type","year").html(s.year)),m&&(a.range?!e&&"init"===t||(d.listYM=[[(d.startDate||a.dateTime).year,(d.startDate||a.dateTime).month+1],[d.endDate.year,d.endDate.month+1]],d.list(a.type,0).list(a.type,1),"time"===a.type?d.setBtnStatus("\u65f6\u95f4",lay.extend({},d.systemDate(),d.startTime),lay.extend({},d.systemDate(),d.endTime)):d.setBtnStatus(!0)):(d.listYM=[[s.year,s.month+1]],d.list(a.type,0))),a.range&&"init"===t&&(d.rangeLinked?(n=d.getAsYM(s.year,s.month,i?"sub":null),d.calendar(lay.extend({},s,{year:n[0],month:n[1]}),1-i)):d.calendar(null,1-i)),a.range||(u=["hours","minutes","seconds"],d.limit({elem:lay(d.footer).find(".laydate-btns-now"),date:d.systemDate(/^(datetime|time)$/.test(a.type)?new Date:null),index:0,time:u,disabledType:"datetime"}),d.limit({elem:lay(d.footer).find(L),index:0,time:u,disabledType:"datetime"})),d.setBtnStatus(),lay(d.shortcut).find("li."+C).removeClass(C),a.range&&!m&&"init"!==t&&d.stampRange(),d},k.prototype.list=function(n,i){var l,r,e,a,o,d,t,s=this,y=s.config,m=s.rangeLinked?y.dateTime:[y.dateTime,s.endDate][i],u=s.lang(),c=y.range&&"date"!==y.type&&"datetime"!==y.type,h=lay.elem("ul",{"class":b+" "+{year:"laydate-year-list",month:"laydate-month-list",time:"laydate-time-list"}[n]}),p=s.elemHeader[i],f=lay(p[2]).find("span"),g=s.elemCont[i||0],D=lay(g).find("."+b)[0],T="cn"===y.lang,v=T?"\u5e74":"",x=s.listYM[i]||{},w=["hours","minutes","seconds"],k=["startTime","endTime"][i];return x[0]<1&&(x[0]=1),"year"===n?(e=l=x[0]-7,l<1&&(e=l=1),lay.each(new Array(15),function(e){var t=lay.elem("li",{"lay-ym":l}),a={year:l,month:0,date:1};l==x[0]&&lay(t).addClass(C),t.innerHTML=l+v,h.appendChild(t),s.limit({elem:lay(t),date:a,index:i,type:n,rangeType:i,disabledType:"date"}),s.cellRender(t,{year:l,month:1,date:1},"year"),l++}),lay(f[T?0:1]).attr("lay-ym",l-8+"-"+x[1]).html(e+v+" - "+(l-1)+v)):"month"===n?(lay.each(new Array(12),function(e){var t=lay.elem("li",{"lay-ym":e}),a={year:x[0],month:e,date:1};e+1==x[1]&&lay(t).addClass(C),t.innerHTML=u.month[e]+(T?"\u6708":""),h.appendChild(t),s.limit({elem:lay(t),date:a,index:i,type:n,rangeType:i,disabledType:"date"}),s.cellRender(t,{year:x[0],month:e+1,date:1},"month")}),lay(f[T?0:1]).attr("lay-ym",x[0]+"-"+x[1]).html(x[0]+v)):"time"===n&&(r=function(){lay(h).find("ol").each(function(a,e){lay(e).find("li").each(function(e,t){s.limit({elem:lay(t),date:[{hours:e},{hours:s[k].hours,minutes:e},{hours:s[k].hours,minutes:s[k].minutes,seconds:e}][a],index:i,rangeType:i,disabledType:"time",time:[["hours"],["hours","minutes"],["hours","minutes","seconds"]][a]})})}),y.range||s.limit({elem:lay(s.footer).find(L),date:s[k],index:0,time:["hours","minutes","seconds"],disabledType:"datetime"})},y.range?s[k]||(s[k]="startTime"===k?m:s.endDate):s[k]=m,lay.each([24,60,60],function(t,e){var a=lay.elem("li"),n=["

    "+u.time[t]+"

      "];lay.each(new Array(e),function(e){n.push(""+lay.digit(e,2)+"")}),a.innerHTML=n.join("")+"
    ",h.appendChild(a)}),r(),e=-1!==y.format.indexOf("H"),f=-1!==y.format.indexOf("m"),t=-1!==y.format.indexOf("s"),a=h.children,o=0,lay.each([e,f,t],function(e,t){t||(a[e].className+=" layui-hide",o++)}),h.className+=" laydate-time-list-hide-"+o),D&&g.removeChild(D),g.appendChild(h),"year"===n||"month"===n?(lay(s.elemMain[i]).addClass("laydate-ym-show"),lay(h).find("li").on("click",function(){var e=0|lay(this).attr("lay-ym");lay(this).hasClass(M)||(s.rangeLinked?lay.extend(m,{year:"year"===n?e:x[0],month:"year"===n?x[1]-1:e}):m[n]=e,"year"===y.type||"month"===y.type?(lay(h).find("."+C).removeClass(C),lay(this).addClass(C),"month"===y.type&&"year"===n&&(s.listYM[i][0]=e,c&&((i?s.endDate:m).year=e),s.list("month",i))):(s.checkDate("limit").calendar(m,i,"init"),s.closeList()),s.setBtnStatus(),!y.range&&y.autoConfirm&&("month"===y.type&&"month"===n||"year"===y.type&&"year"===n)&&s.setValue(s.parse()).done().remove(),s.autoCalendarModel.auto&&!s.rangeLinked?s.choose(lay(g).find("td.layui-this"),i):s.endState&&s.done(null,"change"),lay(s.footer).find("."+I).removeClass(M))})):(f=lay.elem("span",{"class":E}),d=function(){lay(h).find("ol").each(function(e){var a=this,t=lay(a).find("li");a.scrollTop=30*(s[k][w[e]]-2),a.scrollTop<=0&&t.each(function(e,t){if(!lay(this).hasClass(M))return a.scrollTop=30*(e-2),!0})})},t=lay(p[2]).find("."+E),d(),f.innerHTML=y.range?[u.startTime,u.endTime][i]:u.timeTips,lay(s.elemMain[i]).addClass("laydate-time-show"),t[0]&&t.remove(),p[2].appendChild(f),(D=lay(h).find("ol")).each(function(t){var a=this;lay(a).find("li").on("click",function(){var e=0|this.innerHTML;lay(this).hasClass(M)||(y.range?s[k][w[t]]=e:m[w[t]]=e,lay(a).find("."+C).removeClass(C),lay(this).addClass(C),r(),d(),!s.endDate&&"time"!==y.type&&"datetime"!==y.type||s.done(null,"change"),s.setBtnStatus())})}),layui.device().mobile&&D.css({overflowY:"auto",touchAction:"pan-y"})),s},k.prototype.listYM=[],k.prototype.closeList=function(){var a=this;a.config;lay.each(a.elemCont,function(e,t){lay(this).find("."+b).remove(),lay(a.elemMain[e]).removeClass("laydate-ym-show laydate-time-show")}),lay(a.elem).find("."+E).remove()},k.prototype.setBtnStatus=function(e,t,a){var n=this,i=n.config,l=n.lang(),r=lay(n.footer).find(L),o="datetime"===i.type||"time"===i.type?["hours","minutes","seconds"]:undefined;i.range&&(t=t||(n.rangeLinked?n.startDate:i.dateTime),a=a||n.endDate,i=!n.endState||n.newDate(t).getTime()>n.newDate(a).getTime(),n.limit({date:t,disabledType:"datetime",time:o,rangeType:0})||n.limit({date:a,disabledType:"datetime",time:o,rangeType:1})?r.addClass(M):r[i?"addClass":"removeClass"](M),e)&&i&&n.hint("string"==typeof e?l.timeout.replace(/\u65e5\u671f/g,e):l.timeout)},k.prototype.parse=function(e,t){var a=this,n=a.config,i=a.rangeLinked?a.startDate:n.dateTime,t=t||("end"==e?lay.extend({},a.endDate,a.endTime):n.range?lay.extend({},i||n.dateTime,a.startTime):n.dateTime),i=T.parse(t,a.format,1);return n.range&&e===undefined?i+" "+a.rangeStr+" "+a.parse("end"):i},k.prototype.newDate=function(e){return e=e||{},new Date(e.year||1,e.month||0,e.date||1,e.hours||0,e.minutes||0,e.seconds||0)},k.prototype.getDateTime=function(e){return this.newDate(e).getTime()},k.prototype.formatToDisplay=function(e,t){var a=this,n=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,"value");Object.defineProperty(e,"value",lay.extend({},n,{get:function(){return this.getAttribute("lay-date")},set:function(e){n.set.call(this,t.call(a,e)),this.setAttribute("lay-date",e)}}))},k.prototype.setValue=function(e){var t,a=this,n=a.config,i=n.elem[0];return"static"!==n.position&&(e=e||"",a.isInput(i)?lay(i).val(e):(t=a.rangeElem)?("array"!==layui.type(e)&&(e=e.split(" "+a.rangeStr+" ")),t[0].val(e[0]||""),t[1].val(e[1]||"")):(0===lay(i).find("*").length&&(t="function"==typeof n.formatToDisplay?n.formatToDisplay(e):e,lay(i).html(t)),lay(i).attr("lay-date",e))),a},k.prototype.preview=function(){var e,t=this,a=t.config;a.isPreview&&(e=lay(t.elem).find("."+x),a=!a.range||(t.rangeLinked?t.endState:t.endDate)?t.parse():"",e.html(a),e.html())&&(e.css({color:"#16b777"}),setTimeout(function(){e.css({color:"#777"})},300))},k.prototype.renderAdditional=function(){this.config.fullPanel&&this.list("time",0)},k.prototype.stampRange=function(){var n,i=this,l=i.config,r=i.rangeLinked?i.startDate:l.dateTime,e=lay(i.elem).find("td");l.range&&!i.endState&&lay(i.footer).find(L).addClass(M),r=r&&i.newDate({year:r.year,month:r.month,date:r.date}).getTime(),n=i.endState&&i.endDate&&i.newDate({year:i.endDate.year,month:i.endDate.month,date:i.endDate.date}).getTime(),lay.each(e,function(e,t){var a=lay(t).attr("lay-ymd").split("-"),a=i.newDate({year:a[0],month:a[1]-1,date:a[2]}).getTime();l.rangeLinked&&!i.startDate&&a===i.newDate(i.systemDate()).getTime()&&lay(t).addClass(lay(t).hasClass(y)||lay(t).hasClass(m)?"":"laydate-day-now"),lay(t).removeClass(o+" "+C),a!==r&&a!==n||(i.rangeLinked||!i.rangeLinked&&(e<42?a===r:a===n))&&lay(t).addClass(lay(t).hasClass(y)||lay(t).hasClass(m)?o:C),rn.getDateTime(i.max)&&(n[t]={hours:i.max.hours,minutes:i.max.minutes,seconds:i.max.seconds},lay.extend(l,n[t])))}),a||(n.startDate=lay.extend({},l)),n.endState&&!n.limit({date:n.rangeLinked?n.startDate:n.thisDateTime(1-a),disabledType:"date"})&&(((r=n.endState&&n.autoCalendarModel.auto?n.autoCalendarModel():r)||n.rangeLinked&&n.endState)&&n.newDate(n.startDate)>n.newDate(n.endDate)&&(n.startDate.year===n.endDate.year&&n.startDate.month===n.endDate.month&&n.startDate.date===n.endDate.date&&(o=n.startTime,n.startTime=n.endTime,n.endTime=o),o=n.startDate,n.startDate=lay.extend({},n.endDate,n.startTime),i.dateTime=lay.extend({},n.startDate),n.endDate=lay.extend({},o,n.endTime)),r)&&(i.dateTime=lay.extend({},n.startDate)),n.rangeLinked?(e=lay.extend({},l),!t||a||r||(o=n.getAsYM(l.year,l.month,"sub"),lay.extend(i.dateTime,{year:o[0],month:o[1]})),n.calendar(e,t,r?"init":null)):n.calendar(null,a,r?"init":null),n.endState&&n.done(null,"change")):"static"===i.position?n.calendar().done().done(null,"change"):"date"===i.type?i.autoConfirm?n.setValue(n.parse()).done().remove():n.calendar().done(null,"change"):"datetime"===i.type&&n.calendar().done(null,"change"))},k.prototype.tool=function(t,e){var a=this,n=a.config,i=a.lang(),l=n.dateTime,r="static"===n.position,o={datetime:function(){lay(t).hasClass(M)||(a.list("time",0),n.range&&a.list("time",1),lay(t).attr("lay-type","date").html(a.lang().dateTips))},date:function(){a.closeList(),lay(t).attr("lay-type","datetime").html(a.lang().timeTips)},clear:function(){r&&(lay.extend(l,a.firstDate),a.calendar()),n.range&&(delete n.dateTime,delete a.endDate,delete a.startTime,delete a.endTime),a.setValue(""),a.done(null,"onClear").done(["",{},{}]).remove()},now:function(){var e=new Date;if(lay(t).hasClass(M))return a.hint(i.tools.now+", "+i.invalidDate);lay.extend(l,a.systemDate(),{hours:e.getHours(),minutes:e.getMinutes(),seconds:e.getSeconds()}),a.setValue(a.parse()),r&&a.calendar(),a.done(null,"onNow").done().remove()},confirm:function(){if(n.range){if(lay(t).hasClass(M))return("time"===n.type?a.startTime&&a.endTime&&a.newDate(a.startTime)>a.newDate(a.endTime):a.startDate&&a.endDate&&a.newDate(lay.extend({},a.startDate,a.startTime||{}))>a.newDate(lay.extend({},a.endDate,a.endTime||{})))?a.hint("time"===n.type?i.timeout.replace(/\u65e5\u671f/g,"\u65f6\u95f4"):i.timeout):a.hint(i.invalidDate)}else if(lay(t).hasClass(M))return a.hint(i.invalidDate);a.setValue(a.parse()),a.done(null,"onConfirm").done().remove()}};o[e]&&o[e]()},k.prototype.change=function(n){var i=this,l=i.config,r=i.thisDateTime(n),o=l.range&&("year"===l.type||"month"===l.type),d=i.elemCont[n||0],s=i.listYM[n],e=function(e){var t=lay(d).find(".laydate-year-list")[0],a=lay(d).find(".laydate-month-list")[0];return t&&(s[0]=e?s[0]-15:s[0]+15,i.list("year",n)),a&&(e?s[0]--:s[0]++,i.list("month",n)),(t||a)&&(lay.extend(r,{year:s[0]}),o&&(r.year=s[0]),l.range||i.done(null,"change"),l.range||i.limit({elem:lay(i.footer).find(L),date:{year:s[0]},disabledType:"datetime"})),i.setBtnStatus(),t||a};return{prevYear:function(){e("sub")||(i.rangeLinked?(l.dateTime.year--,i.checkDate("limit").calendar(null,null,"init")):(r.year--,i.checkDate("limit").calendar(null,n),i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change")))},prevMonth:function(){i.rangeLinked&&(r=l.dateTime);var e=i.getAsYM(r.year,r.month,"sub");lay.extend(r,{year:e[0],month:e[1]}),i.checkDate("limit").calendar(null,null,"init"),i.rangeLinked||(i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change"))},nextMonth:function(){i.rangeLinked&&(r=l.dateTime);var e=i.getAsYM(r.year,r.month);lay.extend(r,{year:e[0],month:e[1]}),i.checkDate("limit").calendar(null,null,"init"),i.rangeLinked||(i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change"))},nextYear:function(){e()||(i.rangeLinked?(l.dateTime.year++,i.checkDate("limit").calendar(null,0,"init")):(r.year++,i.checkDate("limit").calendar(null,n),i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change")))}}},k.prototype.changeEvent=function(){var i=this;i.config;lay(i.elem).on("click",function(e){lay.stope(e)}).on("mousedown",function(e){lay.stope(e)}),lay.each(i.elemHeader,function(n,e){lay(e[0]).on("click",function(e){i.change(n).prevYear()}),lay(e[1]).on("click",function(e){i.change(n).prevMonth()}),lay(e[2]).find("span").on("click",function(e){var t=lay(this),a=t.attr("lay-ym"),t=t.attr("lay-type");a&&(a=a.split("-"),i.listYM[n]=[0|a[0],0|a[1]],i.list(t,n),lay(i.footer).find("."+I).addClass(M))}),lay(e[3]).on("click",function(e){i.change(n).nextMonth()}),lay(e[4]).on("click",function(e){i.change(n).nextYear()})}),lay.each(i.table,function(e,t){lay(t).find("td").on("click",function(){i.choose(lay(this),e)})}),lay(i.footer).find("span").on("click",function(){var e=lay(this).attr("lay-type");i.tool(this,e)})},k.prototype.isInput=function(e){return/input|textarea/.test(e.tagName.toLocaleLowerCase())||/INPUT|TEXTAREA/.test(e.tagName)},k.prototype.events=function(){var e,t=this,a=t.config;a.elem[0]&&!a.elem[0].eventHandler&&(a.elem.on(a.trigger,e=function(){T.thisId!==a.id&&t.render()}),a.elem[0].eventHandler=!0,a.eventElem.on(a.trigger,e),t.unbind=function(){t.remove(),a.elem.off(a.trigger,e),a.elem.removeAttr("lay-key"),a.elem.removeAttr(d),a.elem[0].eventHandler=!1,a.eventElem.off(a.trigger,e),a.eventElem.removeAttr("lay-key"),delete s.that[a.id]})},s.that={},s.getThis=function(e){var t=s.that[e];return!t&&n&&layui.hint().error(e?a+" instance with ID '"+e+"' not found":"ID argument required"),t},l.run=function(n){n(D).on("mousedown",function(e){var t,a;T.thisId&&(t=s.getThis(T.thisId))&&(a=t.config,e.target===a.elem[0]||e.target===a.eventElem[0]||e.target===n(a.closeStop)[0]||a.elem[0]&&a.elem[0].contains(e.target)||t.remove())}).on("keydown",function(e){var t;T.thisId&&(t=s.getThis(T.thisId))&&"static"!==t.config.position&&13===e.keyCode&&n("#"+t.elemID)[0]&&t.elemID===k.thisElemDate&&(e.preventDefault(),n(t.footer).find(L)[0].click())}),n(i).on("resize",function(){if(T.thisId){var e=s.getThis(T.thisId);if(e)return!(!e.elem||!n(".layui-laydate")[0])&&void e.position()}})},T.render=function(e){e=new k(e);return s.call(e)},T.reload=function(e,t){e=s.getThis(e);if(e)return e.reload(t)},T.getInst=function(e){e=s.getThis(e);if(e)return e.inst},T.hint=function(e,t){e=s.getThis(e);if(e)return e.hint(t)},T.unbind=function(e){e=s.getThis(e);if(e)return e.unbind()},T.close=function(e){e=s.getThis(e||T.thisId);if(e)return e.remove()},T.parse=function(a,n,i){return a=a||{},n=((n="string"==typeof n?s.formatArr(n):n)||[]).concat(),lay.each(n,function(e,t){/yyyy|y/.test(t)?n[e]=lay.digit(a.year,t.length):/MM|M/.test(t)?n[e]=lay.digit(a.month+(i||0),t.length):/dd|d/.test(t)?n[e]=lay.digit(a.date,t.length):/HH|H/.test(t)?n[e]=lay.digit(a.hours,t.length):/mm|m/.test(t)?n[e]=lay.digit(a.minutes,t.length):/ss|s/.test(t)&&(n[e]=lay.digit(a.seconds,t.length))}),n.join("")},T.getEndDate=function(e,t){var a=new Date;return a.setFullYear(t||a.getFullYear(),e||a.getMonth()+1,1),new Date(a.getTime()-864e5).getDate()},n?(T.ready(),layui.define("lay",function(e){T.path=layui.cache.dir,l.run(lay),e(a,T)})):"function"==typeof define&&define.amd?define(function(){return l.run(lay),T}):(T.ready(),l.run(i.lay),i.laydate=T)}(window,window.document);!function(e,t){"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e):function(e){if(e.document)return t(e);throw new Error("jQuery requires a window with a document")}:t(e)}("undefined"!=typeof window?window:this,function(T,M){var f=[],g=T.document,c=f.slice,O=f.concat,R=f.push,P=f.indexOf,B={},W=B.toString,m=B.hasOwnProperty,y={},e="1.12.4",C=function(e,t){return new C.fn.init(e,t)},I=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,$=/^-ms-/,z=/-([\da-z])/gi,X=function(e,t){return t.toUpperCase()};function U(e){var t=!!e&&"length"in e&&e.length,n=C.type(e);return"function"!==n&&!C.isWindow(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+a+")"+a+"*"),ee=new RegExp("="+a+"*([^\\]'\"]*?)"+a+"*\\]","g"),te=new RegExp(G),ne=new RegExp("^"+s+"$"),f={ID:new RegExp("^#("+s+")"),CLASS:new RegExp("^\\.("+s+")"),TAG:new RegExp("^("+s+"|[*])"),ATTR:new RegExp("^"+J),PSEUDO:new RegExp("^"+G),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+a+"*(even|odd|(([+-]|)(\\d*)n|)"+a+"*(?:([+-]|)"+a+"*(\\d+)|))"+a+"*\\)|)","i"),bool:new RegExp("^(?:"+Y+")$","i"),needsContext:new RegExp("^"+a+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+a+"*((?:-\\d)?\\d*)"+a+"*\\)|)(?=[^-]|$)","i")},re=/^(?:input|select|textarea|button)$/i,ie=/^h\d$/i,c=/^[^{]+\{\s*\[native \w/,oe=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ae=/[+~]/,se=/'|\\/g,d=new RegExp("\\\\([\\da-f]{1,6}"+a+"?|("+a+")|.)","ig"),p=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(65536+r):String.fromCharCode(r>>10|55296,1023&r|56320)},ue=function(){C()};try{D.apply(n=V.call(v.childNodes),v.childNodes),n[v.childNodes.length].nodeType}catch(F){D={apply:n.length?function(e,t){U.apply(e,V.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function H(e,t,n,r){var i,o,a,s,u,l,c,f,d=t&&t.ownerDocument,p=t?t.nodeType:9;if(n=n||[],"string"!=typeof e||!e||1!==p&&9!==p&&11!==p)return n;if(!r&&((t?t.ownerDocument||t:v)!==E&&C(t),t=t||E,N)){if(11!==p&&(l=oe.exec(e)))if(i=l[1]){if(9===p){if(!(a=t.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(d&&(a=d.getElementById(i))&&y(t,a)&&a.id===i)return n.push(a),n}else{if(l[2])return D.apply(n,t.getElementsByTagName(e)),n;if((i=l[3])&&g.getElementsByClassName&&t.getElementsByClassName)return D.apply(n,t.getElementsByClassName(i)),n}if(g.qsa&&!A[e+" "]&&(!m||!m.test(e))){if(1!==p)d=t,f=e;else if("object"!==t.nodeName.toLowerCase()){for((s=t.getAttribute("id"))?s=s.replace(se,"\\$&"):t.setAttribute("id",s=k),o=(c=w(e)).length,u=ne.test(s)?"#"+s:"[id='"+s+"']";o--;)c[o]=u+" "+_(c[o]);f=c.join(","),d=ae.test(e)&&de(t.parentNode)||t}if(f)try{return D.apply(n,d.querySelectorAll(f)),n}catch(h){}finally{s===k&&t.removeAttribute("id")}}}return P(e.replace(L,"$1"),t,n,r)}function le(){var n=[];function r(e,t){return n.push(e+" ")>b.cacheLength&&delete r[n.shift()],r[e+" "]=t}return r}function q(e){return e[k]=!0,e}function h(e){var t=E.createElement("div");try{return!!e(t)}catch(F){return!1}finally{t.parentNode&&t.parentNode.removeChild(t)}}function ce(e,t){for(var n=e.split("|"),r=n.length;r--;)b.attrHandle[n[r]]=t}function fe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||1<<31)-(~e.sourceIndex||1<<31);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function x(a){return q(function(o){return o=+o,q(function(e,t){for(var n,r=a([],e.length,o),i=r.length;i--;)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function de(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in g=H.support={},O=H.isXML=function(e){e=e&&(e.ownerDocument||e).documentElement;return!!e&&"HTML"!==e.nodeName},C=H.setDocument=function(e){var e=e?e.ownerDocument||e:v;return e!==E&&9===e.nodeType&&e.documentElement&&(t=(E=e).documentElement,N=!O(E),(e=E.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",ue,!1):e.attachEvent&&e.attachEvent("onunload",ue)),g.attributes=h(function(e){return e.className="i",!e.getAttribute("className")}),g.getElementsByTagName=h(function(e){return e.appendChild(E.createComment("")),!e.getElementsByTagName("*").length}),g.getElementsByClassName=c.test(E.getElementsByClassName),g.getById=h(function(e){return t.appendChild(e).id=k,!E.getElementsByName||!E.getElementsByName(k).length}),g.getById?(b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&N)return(e=t.getElementById(e))?[e]:[]},b.filter.ID=function(e){var t=e.replace(d,p);return function(e){return e.getAttribute("id")===t}}):(delete b.find.ID,b.filter.ID=function(e){var t=e.replace(d,p);return function(e){e="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return e&&e.value===t}}),b.find.TAG=g.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):g.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"!==e)return o;for(;n=o[i++];)1===n.nodeType&&r.push(n);return r},b.find.CLASS=g.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&N)return t.getElementsByClassName(e)},r=[],m=[],(g.qsa=c.test(E.querySelectorAll))&&(h(function(e){t.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&m.push("[*^$]="+a+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||m.push("\\["+a+"*(?:value|"+Y+")"),e.querySelectorAll("[id~="+k+"-]").length||m.push("~="),e.querySelectorAll(":checked").length||m.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||m.push(".#.+[+~]")}),h(function(e){var t=E.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&m.push("name"+a+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||m.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),m.push(",.*:")})),(g.matchesSelector=c.test(i=t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.oMatchesSelector||t.msMatchesSelector))&&h(function(e){g.disconnectedMatch=i.call(e,"div"),i.call(e,"[s!='']:x"),r.push("!=",G)}),m=m.length&&new RegExp(m.join("|")),r=r.length&&new RegExp(r.join("|")),e=c.test(t.compareDocumentPosition),y=e||c.test(t.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,t=t&&t.parentNode;return e===t||!(!t||1!==t.nodeType||!(n.contains?n.contains(t):e.compareDocumentPosition&&16&e.compareDocumentPosition(t)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},$=e?function(e,t){var n;return e===t?(l=!0,0):(n=!e.compareDocumentPosition-!t.compareDocumentPosition)||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!g.sortDetached&&t.compareDocumentPosition(e)===n?e===E||e.ownerDocument===v&&y(v,e)?-1:t===E||t.ownerDocument===v&&y(v,t)?1:u?j(u,e)-j(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===E?-1:t===E?1:i?-1:o?1:u?j(u,e)-j(u,t):0;if(i===o)return fe(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;a[r]===s[r];)r++;return r?fe(a[r],s[r]):a[r]===v?-1:s[r]===v?1:0}),E},H.matches=function(e,t){return H(e,null,null,t)},H.matchesSelector=function(e,t){if((e.ownerDocument||e)!==E&&C(e),t=t.replace(ee,"='$1']"),g.matchesSelector&&N&&!A[t+" "]&&(!r||!r.test(t))&&(!m||!m.test(t)))try{var n=i.call(e,t);if(n||g.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(F){}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(d,p),e[3]=(e[3]||e[4]||e[5]||"").replace(d,p),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||H.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&H.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return f.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&te.test(n)&&(t=(t=w(n,!0))&&n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(d,p).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=W[e+" "];return t||(t=new RegExp("(^|"+a+")"+e+"("+a+"|$)"))&&W(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(t,n,r){return function(e){e=H.attr(e,t);return null==e?"!="===n:!n||(e+="","="===n?e===r:"!="===n?e!==r:"^="===n?r&&0===e.indexOf(r):"*="===n?r&&-1(?:<\/\1>|)$/,G=/^.[^:#\[\.,]*$/;function K(e,n,r){if(C.isFunction(n))return C.grep(e,function(e,t){return!!n.call(e,t,e)!==r});if(n.nodeType)return C.grep(e,function(e){return e===n!==r});if("string"==typeof n){if(G.test(n))return C.filter(n,e,r);n=C.filter(n,e)}return C.grep(e,function(e){return-1)[^>]*|#([\w-]*))$/,ee=((C.fn.init=function(e,t,n){if(e){if(n=n||Q,"string"!=typeof e)return e.nodeType?(this.context=this[0]=e,this.length=1,this):C.isFunction(e)?"undefined"!=typeof n.ready?n.ready(e):e(C):(e.selector!==undefined&&(this.selector=e.selector,this.context=e.context),C.makeArray(e,this));if(!(r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&3<=e.length?[null,e,null]:Z.exec(e))||!r[1]&&t)return(!t||t.jquery?t||n:this.constructor(t)).find(e);if(r[1]){if(t=t instanceof C?t[0]:t,C.merge(this,C.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:g,!0)),J.test(r[1])&&C.isPlainObject(t))for(var r in t)C.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r])}else{if((n=g.getElementById(r[2]))&&n.parentNode){if(n.id!==r[2])return Q.find(e);this.length=1,this[0]=n}this.context=g,this.selector=e}}return this}).prototype=C.fn,Q=C(g),/^(?:parents|prev(?:Until|All))/),te={children:!0,contents:!0,next:!0,prev:!0};function ne(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}C.fn.extend({has:function(e){var t,n=C(e,this),r=n.length;return this.filter(function(){for(t=0;t
    a",y.leadingWhitespace=3===S.firstChild.nodeType,y.tbody=!S.getElementsByTagName("tbody").length,y.htmlSerialize=!!S.getElementsByTagName("link").length,y.html5Clone="<:nav>"!==g.createElement("nav").cloneNode(!0).outerHTML,q.type="checkbox",q.checked=!0,k.appendChild(q),y.appendChecked=q.checked,S.innerHTML="",y.noCloneChecked=!!S.cloneNode(!0).lastChild.defaultValue,k.appendChild(S),(q=g.createElement("input")).setAttribute("type","radio"),q.setAttribute("checked","checked"),q.setAttribute("name","t"),S.appendChild(q),y.checkClone=S.cloneNode(!0).cloneNode(!0).lastChild.checked,y.noCloneEvent=!!S.addEventListener,S[C.expando]=1,y.attributes=!S.getAttribute(C.expando);var x={option:[1,""],legend:[1,"
    ","
    "],area:[1,"",""],param:[1,"",""],thead:[1,"","
    "],tr:[2,"","
    "],col:[2,"","
    "],td:[3,"","
    "],_default:y.htmlSerialize?[0,"",""]:[1,"X
    ","
    "]};function b(e,t){var n,r,i=0,o="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):undefined;if(!o)for(o=[],n=e.childNodes||e;null!=(r=n[i]);i++)!t||C.nodeName(r,t)?o.push(r):C.merge(o,b(r,t));return t===undefined||t&&C.nodeName(e,t)?C.merge([e],o):o}function we(e,t){for(var n,r=0;null!=(n=e[r]);r++)C._data(n,"globalEval",!t||C._data(t[r],"globalEval"))}x.optgroup=x.option,x.tbody=x.tfoot=x.colgroup=x.caption=x.thead,x.th=x.td;var Te=/<|&#?\w+;/,Ce=/"!==f[1]||Ce.test(a)?0:u:u.firstChild)&&a.childNodes.length;o--;)C.nodeName(c=a.childNodes[o],"tbody")&&!c.childNodes.length&&a.removeChild(c);for(C.merge(h,u.childNodes),u.textContent="";u.firstChild;)u.removeChild(u.firstChild);u=p.lastChild}else h.push(t.createTextNode(a));for(u&&p.removeChild(u),y.appendChecked||C.grep(b(h,"input"),Ee),g=0;a=h[g++];)if(r&&-1]","i"),Pe=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,Be=/\s*$/g,ze=be(g).appendChild(g.createElement("div"));function Xe(e,t){return C.nodeName(e,"table")&&C.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ue(e){return e.type=(null!==C.find.attr(e,"type"))+"/"+e.type,e}function Ve(e){var t=Ie.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function Ye(e,t){if(1===t.nodeType&&C.hasData(e)){var n,r,i,e=C._data(e),o=C._data(t,e),a=e.events;if(a)for(n in delete o.handle,o.events={},a)for(r=0,i=a[n].length;r")},clone:function(e,t,n){var r,i,o,a,s,u=C.contains(e.ownerDocument,e);if(y.html5Clone||C.isXMLDoc(e)||!Re.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(ze.innerHTML=e.outerHTML,ze.removeChild(o=ze.firstChild)),!(y.noCloneEvent&&y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||C.isXMLDoc(e)))for(r=b(o),s=b(e),a=0;null!=(i=s[a]);++a)if(r[a]){f=c=l=p=d=void 0;var l,c,f,d=i,p=r[a];if(1===p.nodeType){if(l=p.nodeName.toLowerCase(),!y.noCloneEvent&&p[C.expando]){for(c in(f=C._data(p)).events)C.removeEvent(p,c,f.handle);p.removeAttribute(C.expando)}"script"===l&&p.text!==d.text?(Ue(p).text=d.text,Ve(p)):"object"===l?(p.parentNode&&(p.outerHTML=d.outerHTML),y.html5Clone&&d.innerHTML&&!C.trim(p.innerHTML)&&(p.innerHTML=d.innerHTML)):"input"===l&&ge.test(d.type)?(p.defaultChecked=p.checked=d.checked,p.value!==d.value&&(p.value=d.value)):"option"===l?p.defaultSelected=p.selected=d.defaultSelected:"input"!==l&&"textarea"!==l||(p.defaultValue=d.defaultValue)}}if(t)if(n)for(s=s||b(e),r=r||b(o),a=0;null!=(i=s[a]);a++)Ye(i,r[a]);else Ye(e,o);return 0<(r=b(o,"script")).length&&we(r,!u&&b(e,"script")),r=s=i=null,o},cleanData:function(e,t){for(var n,r,i,o,a=0,s=C.expando,u=C.cache,l=y.attributes,c=C.event.special;null!=(n=e[a]);a++)if((t||v(n))&&(o=(i=n[s])&&u[i])){if(o.events)for(r in o.events)c[r]?C.event.remove(n,r):C.removeEvent(n,r,o.handle);u[i]&&(delete u[i],l||"undefined"==typeof n.removeAttribute?n[s]=undefined:n.removeAttribute(s),f.push(i))}}}),C.fn.extend({domManip:w,detach:function(e){return Je(this,e,!0)},remove:function(e){return Je(this,e)},text:function(e){return d(this,function(e){return e===undefined?C.text(this):this.empty().append((this[0]&&this[0].ownerDocument||g).createTextNode(e))},null,e,arguments.length)},append:function(){return w(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Xe(this,e).appendChild(e)})},prepend:function(){return w(this,arguments,function(e){var t;1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(t=Xe(this,e)).insertBefore(e,t.firstChild)})},before:function(){return w(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return w(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++){for(1===e.nodeType&&C.cleanData(b(e,!1));e.firstChild;)e.removeChild(e.firstChild);e.options&&C.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return C.clone(this,e,t)})},html:function(e){return d(this,function(e){var t=this[0]||{},n=0,r=this.length;if(e===undefined)return 1===t.nodeType?t.innerHTML.replace(Oe,""):undefined;if("string"==typeof e&&!Be.test(e)&&(y.htmlSerialize||!Re.test(e))&&(y.leadingWhitespace||!ve.test(e))&&!x[(me.exec(e)||["",""])[1].toLowerCase()]){e=C.htmlPrefilter(e);try{for(;n")).appendTo(t.documentElement))[0].contentWindow||Ge[0].contentDocument).document).write(),t.close(),n=Qe(e,t),Ge.detach()),Ke[e]=n),n}var n,et,tt,nt,rt,it,ot,a,at=/^margin/,st=new RegExp("^("+e+")(?!px)[a-z%]+$","i"),ut=function(e,t,n,r){var i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.apply(e,r||[]),t)e.style[i]=o[i];return r},lt=g.documentElement;function t(){var e,t=g.documentElement;t.appendChild(ot),a.style.cssText="-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",n=tt=it=!1,et=rt=!0,T.getComputedStyle&&(e=T.getComputedStyle(a),n="1%"!==(e||{}).top,it="2px"===(e||{}).marginLeft,tt="4px"===(e||{width:"4px"}).width,a.style.marginRight="50%",et="4px"===(e||{marginRight:"4px"}).marginRight,(e=a.appendChild(g.createElement("div"))).style.cssText=a.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",e.style.marginRight=e.style.width="0",a.style.width="1px",rt=!parseFloat((T.getComputedStyle(e)||{}).marginRight),a.removeChild(e)),a.style.display="none",(nt=0===a.getClientRects().length)&&(a.style.display="",a.innerHTML="
    t
    ",a.childNodes[0].style.borderCollapse="separate",(e=a.getElementsByTagName("td"))[0].style.cssText="margin:0;border:0;padding:0;display:none",nt=0===e[0].offsetHeight)&&(e[0].style.display="",e[1].style.display="none",nt=0===e[0].offsetHeight),t.removeChild(ot)}ot=g.createElement("div"),(a=g.createElement("div")).style&&(a.style.cssText="float:left;opacity:.5",y.opacity="0.5"===a.style.opacity,y.cssFloat=!!a.style.cssFloat,a.style.backgroundClip="content-box",a.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===a.style.backgroundClip,(ot=g.createElement("div")).style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",a.innerHTML="",ot.appendChild(a),y.boxSizing=""===a.style.boxSizing||""===a.style.MozBoxSizing||""===a.style.WebkitBoxSizing,C.extend(y,{reliableHiddenOffsets:function(){return null==n&&t(),nt},boxSizingReliable:function(){return null==n&&t(),tt},pixelMarginRight:function(){return null==n&&t(),et},pixelPosition:function(){return null==n&&t(),n},reliableMarginRight:function(){return null==n&&t(),rt},reliableMarginLeft:function(){return null==n&&t(),it}}));var l,p,ct=/^(top|right|bottom|left)$/;function ft(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}T.getComputedStyle?(l=function(e){var t=e.ownerDocument.defaultView;return(t=t&&t.opener?t:T).getComputedStyle(e)},p=function(e,t,n){var r,i,o=e.style;return""!==(i=(n=n||l(e))?n.getPropertyValue(t)||n[t]:undefined)&&i!==undefined||C.contains(e.ownerDocument,e)||(i=C.style(e,t)),n&&!y.pixelMarginRight()&&st.test(i)&&at.test(t)&&(e=o.width,t=o.minWidth,r=o.maxWidth,o.minWidth=o.maxWidth=o.width=i,i=n.width,o.width=e,o.minWidth=t,o.maxWidth=r),i===undefined?i:i+""}):lt.currentStyle&&(l=function(e){return e.currentStyle},p=function(e,t,n){var r,i,o,a=e.style;return null==(n=(n=n||l(e))?n[t]:undefined)&&a&&a[t]&&(n=a[t]),st.test(n)&&!ct.test(t)&&(r=a.left,(o=(i=e.runtimeStyle)&&i.left)&&(i.left=e.currentStyle.left),a.left="fontSize"===t?"1em":n,n=a.pixelLeft+"px",a.left=r,o)&&(i.left=o),n===undefined?n:n+""||"auto"});var dt=/alpha\([^)]*\)/i,pt=/opacity\s*=\s*([^)]*)/i,ht=/^(none|table(?!-c[ea]).+)/,gt=new RegExp("^("+e+")(.*)$","i"),mt={position:"absolute",visibility:"hidden",display:"block"},yt={letterSpacing:"0",fontWeight:"400"},vt=["Webkit","O","Moz","ms"],xt=g.createElement("div").style;function bt(e){if(e in xt)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=vt.length;n--;)if((e=vt[n]+t)in xt)return e}function wt(e,t){for(var n,r,i,o=[],a=0,s=e.length;a
    a",F=q.getElementsByTagName("a")[0],k.setAttribute("type","checkbox"),q.appendChild(k),(F=q.getElementsByTagName("a")[0]).style.cssText="top:1px",y.getSetAttribute="t"!==q.className,y.style=/top/.test(F.getAttribute("style")),y.hrefNormalized="/a"===F.getAttribute("href"),y.checkOn=!!k.value,y.optSelected=e.selected,y.enctype=!!g.createElement("form").enctype,S.disabled=!0,y.optDisabled=!e.disabled,(k=g.createElement("input")).setAttribute("value",""),y.input=""===k.getAttribute("value"),k.value="t",k.setAttribute("type","radio"),y.radioValue="t"===k.value;var Lt=/\r/g,Ht=/[\x20\t\r\n\f]+/g;C.fn.extend({val:function(t){var n,e,r,i=this[0];return arguments.length?(r=C.isFunction(t),this.each(function(e){1!==this.nodeType||(null==(e=r?t.call(this,e,C(this).val()):t)?e="":"number"==typeof e?e+="":C.isArray(e)&&(e=C.map(e,function(e){return null==e?"":e+""})),(n=C.valHooks[this.type]||C.valHooks[this.nodeName.toLowerCase()])&&"set"in n&&n.set(this,e,"value")!==undefined)||(this.value=e)})):i?(n=C.valHooks[i.type]||C.valHooks[i.nodeName.toLowerCase()])&&"get"in n&&(e=n.get(i,"value"))!==undefined?e:"string"==typeof(e=i.value)?e.replace(Lt,""):null==e?"":e:void 0}}),C.extend({valHooks:{option:{get:function(e){var t=C.find.attr(e,"value");return null!=t?t:C.trim(C.text(e)).replace(Ht," ")}},select:{get:function(e){for(var t,n=e.options,r=e.selectedIndex,i="select-one"===e.type||r<0,o=i?null:[],a=i?r+1:n.length,s=r<0?a:i?r:0;s").append(C.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this)},C.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){C.fn[t]=function(e){return this.on(t,e)}}),C.expr.filters.animated=function(t){return C.grep(C.timers,function(e){return t===e.elem}).length},C.offset={setOffset:function(e,t,n){var r,i,o,a,s=C.css(e,"position"),u=C(e),l={};"static"===s&&(e.style.position="relative"),o=u.offset(),r=C.css(e,"top"),a=C.css(e,"left"),s=("absolute"===s||"fixed"===s)&&-1'+(s?a.title[0]:a.title)+"":"";return a.zIndex=o,t([a.shade?'
    ':"",'
    '+(e&&2!=a.type?"":s)+"'+(n=["layui-icon-tips","layui-icon-success","layui-icon-error","layui-icon-question","layui-icon-lock","layui-icon-face-cry","layui-icon-face-smile"],o="layui-anim layui-anim-rotate layui-anim-loop",0==a.type&&-1!==a.icon?'':3==a.type?(i=["layui-icon-loading","layui-icon-loading-1"],2==a.icon?'
    ':''):"")+((1!=a.type||!e)&&a.content||"")+'
    '+(n=[],r&&(n.push(''),n.push('')),a.closeBtn&&n.push(''),n.join(""))+"
    "+(a.btn?function(){var e="";"string"==typeof a.btn&&(a.btn=[a.btn]);for(var t,i=0,n=a.btn.length;i'+a.btn[i]+"";return'
    '+e+"
    "}():"")+(a.resize?'':"")+""],s,m('
    ')),this},t.pt.creat=function(){var e,t,i,n,a=this,o=a.config,s=a.index,r="object"==typeof(f=o.content),l=m("body"),c=function(e){var t;o.shift&&(o.anim=o.shift),u.anim[o.anim]&&(t="layer-anim "+u.anim[o.anim],e.addClass(t).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",function(){m(this).removeClass(t)}))};if(o.id&&m("."+u[0]).find("#"+o.id)[0])e=m("#"+o.id).closest("."+u[0]),t=e.attr("times"),i=e.data("config"),n=m("#"+u.SHADE+t),"min"===(e.data("maxminStatus")||{})?v.restore(t):i.hideOnClose&&(n.show(),e.show(),c(e),setTimeout(function(){n.css({opacity:n.data(y)})},10));else{switch(o.removeFocus&&document.activeElement&&document.activeElement.blur(),"string"==typeof o.area&&(o.area="auto"===o.area?["",""]:[o.area,""]),6==v.ie&&(o.fixed=!1),o.type){case 0:o.btn="btn"in o?o.btn:d.btn[0],v.closeAll("dialog");break;case 2:var f=o.content=r?o.content:[o.content||"","auto"];o.content='';break;case 3:delete o.title,delete o.closeBtn,-1===o.icon&&o.icon,v.closeAll("loading");break;case 4:r||(o.content=[o.content,"body"]),o.follow=o.content[1],o.content=o.content[0]+'',delete o.title,o.tips="object"==typeof o.tips?o.tips:[o.tips,!0],o.tipsMore||v.closeAll("tips")}a.vessel(r,function(e,t,i){l.append(e[0]),r?2==o.type||4==o.type?m("body").append(e[1]):f.parents("."+u[0])[0]||(f.data("display",f.css("display")).show().addClass("layui-layer-wrap").wrap(e[1]),m("#"+u[0]+s).find("."+u[5]).before(t)):l.append(e[1]),m("#"+u.MOVE)[0]||l.append(d.moveElem=i),a.layero=m("#"+u[0]+s),a.shadeo=m("#"+u.SHADE+s),o.scrollbar||d.setScrollbar(s)}).auto(s),a.shadeo.css({"background-color":o.shade[1]||"#000",opacity:o.shade[0]||o.shade,transition:o.shade[2]||""}),a.shadeo.data(y,o.shade[0]||o.shade),2==o.type&&6==v.ie&&a.layero.find("iframe").attr("src",f[0]),4==o.type?a.tips():(a.offset(),parseInt(d.getStyle(document.getElementById(u.MOVE),"z-index"))||(a.layero.css("visibility","hidden"),v.ready(function(){a.offset(),a.layero.css("visibility","visible")}))),!o.fixed||d.events.resize[a.index]||(d.events.resize[a.index]=function(){a.resize()},g.on("resize",d.events.resize[a.index])),o.time<=0||setTimeout(function(){v.close(a.index)},o.time),a.move().callback(),c(a.layero),a.layero.data("config",o)}},t.pt.resize=function(){var e=this,t=e.config;e.offset(),(/^\d+%$/.test(t.area[0])||/^\d+%$/.test(t.area[1]))&&e.auto(e.index),4==t.type&&e.tips()},t.pt.auto=function(e){var t=this.config,i=m("#"+u[0]+e),n=(""===t.area[0]&&0t.maxWidth)&&i.width(t.maxWidth),[i.innerWidth(),i.innerHeight()]),a=i.find(u[1]).outerHeight()||0,o=i.find("."+u[6]).outerHeight()||0,e=function(e){(e=i.find(e)).height(n[1]-a-o-2*(0|parseFloat(e.css("padding-top"))))};return 2===t.type?e("iframe"):""===t.area[1]?0t.maxHeight?(n[1]=t.maxHeight,e("."+u[5])):t.fixed&&n[1]>=g.height()&&(n[1]=g.height(),e("."+u[5])):e("."+u[5]),this},t.pt.offset=function(){var e=this,t=e.config,i=e.layero,n=[i.outerWidth(),i.outerHeight()],a="object"==typeof t.offset;e.offsetTop=(g.height()-n[1])/2,e.offsetLeft=(g.width()-n[0])/2,a?(e.offsetTop=t.offset[0],e.offsetLeft=t.offset[1]||e.offsetLeft):"auto"!==t.offset&&("t"===t.offset?e.offsetTop=0:"r"===t.offset?e.offsetLeft=g.width()-n[0]:"b"===t.offset?e.offsetTop=g.height()-n[1]:"l"===t.offset?e.offsetLeft=0:"lt"===t.offset?(e.offsetTop=0,e.offsetLeft=0):"lb"===t.offset?(e.offsetTop=g.height()-n[1],e.offsetLeft=0):"rt"===t.offset?(e.offsetTop=0,e.offsetLeft=g.width()-n[0]):"rb"===t.offset?(e.offsetTop=g.height()-n[1],e.offsetLeft=g.width()-n[0]):e.offsetTop=t.offset),t.fixed||(e.offsetTop=/%$/.test(e.offsetTop)?g.height()*parseFloat(e.offsetTop)/100:parseFloat(e.offsetTop),e.offsetLeft=/%$/.test(e.offsetLeft)?g.width()*parseFloat(e.offsetLeft)/100:parseFloat(e.offsetLeft),e.offsetTop+=g.scrollTop(),e.offsetLeft+=g.scrollLeft()),"min"===i.data("maxminStatus")&&(e.offsetTop=g.height()-(i.find(u[1]).outerHeight()||0),e.offsetLeft=i.css("left")),i.css({top:e.offsetTop,left:e.offsetLeft})},t.pt.tips=function(){var e=this.config,t=this.layero,i=[t.outerWidth(),t.outerHeight()],n=m(e.follow),a={width:(n=n[0]?n:m("body")).outerWidth(),height:n.outerHeight(),top:n.offset().top,left:n.offset().left},o=t.find(".layui-layer-TipsG"),n=e.tips[0];e.tips[1]||o.remove(),a.autoLeft=function(){0g.width()&&(o=g.width()-180-(d.minStackArr.edgeIndex=d.minStackArr.edgeIndex||0,d.minStackArr.edgeIndex+=3))<0&&(o=0),t.minStack&&(r.left=o,r.top=g.height()-n,a||d.minStackIndex++,l.attr("minLeft",o)),l.attr("position",s),v.style(e,r,!0),i.hide(),"page"===l.attr("type")&&l.find(u[4]).hide(),d.restScrollbar(e),c.hide())},v.restore=function(e){var t=m("#"+u[0]+e),i=m("#"+u.SHADE+e),n=t.find(".layui-layer-content"),a=t.attr("area").split(","),o=t.attr("type"),s=t.data("config")||{},r=n.data(l);t.removeData("maxminStatus"),v.style(e,{width:a[0],height:a[1],top:parseFloat(a[2]),left:parseFloat(a[3]),position:t.attr("position"),overflow:"visible"},!0),t.find(".layui-layer-max").removeClass("layui-layer-maxmin"),t.find(".layui-layer-min").show(),"page"===o&&t.find(u[4]).show(),s.scrollbar?d.restScrollbar(e):d.setScrollbar(e),r!==h&&(n.removeData(l),(o===d.type[2]?n.children("iframe"):n).css({height:r})),i.show()},v.full=function(t){var i=m("#"+u[0]+t),e=i.data("maxminStatus");"max"!==e&&("min"===e&&v.restore(t),i.data("maxminStatus","max"),d.record(i),u.html.attr("layer-full")||d.setScrollbar(t),setTimeout(function(){var e="fixed"===i.css("position");v.style(t,{top:e?0:g.scrollTop(),left:e?0:g.scrollLeft(),width:"100%",height:"100%"},!0),i.find(".layui-layer-min").hide()},100))},v.title=function(e,t){m("#"+u[0]+(t||v.index)).find(u[1]).html(e)},v.close=function(s,r){var t,e,i,l=(e=m("."+u[0]).children("#"+s).closest("."+u[0]))[0]?(s=e.attr("times"),e):m("#"+u[0]+s),c=l.attr("type"),n=l.data("config")||{},f=n.id&&n.hideOnClose;l[0]&&(t=function(){var o={slideDown:"layer-anim-slide-down-out",slideLeft:"layer-anim-slide-left-out",slideUp:"layer-anim-slide-up-out",slideRight:"layer-anim-slide-right-out"}[n.anim]||"layer-anim-close",e=function(){var e="layui-layer-wrap";if(f)return l.removeClass("layer-anim "+o),l.hide();if(c===d.type[1]&&"object"===l.attr("conType")){l.children(":not(."+u[5]+")").remove();for(var t=l.find("."+e),i=0;i<2;i++)t.unwrap();t.css("display",t.data("display")).removeClass(e)}else{if(c===d.type[2])try{var n=m("#"+u[4]+s)[0];n.contentWindow.document.write(""),n.contentWindow.close(),l.find("."+u[5])[0].removeChild(n)}catch(a){}l[0].innerHTML="",l.remove()}"function"==typeof d.end[s]&&d.end[s](),delete d.end[s],"function"==typeof r&&r(),d.events.resize[s]&&(g.off("resize",d.events.resize[s]),delete d.events.resize[s])},t=m("#"+u.SHADE+s);v.ie&&v.ie<10||!n.isOutAnim?t[f?"hide":"remove"]():(t.css({opacity:0}),setTimeout(function(){t[f?"hide":"remove"]()},350)),n.isOutAnim&&l.addClass("layer-anim "+o),6==v.ie&&d.reselect(),d.restScrollbar(s),"string"==typeof l.attr("minLeft")&&(d.minStackIndex--,d.minStackArr.push(l.attr("minLeft"))),v.ie&&v.ie<10||!n.isOutAnim?e():setTimeout(function(){e()},200)},f||"function"!=typeof d.beforeEnd[s]?(delete d.beforeEnd[s],t()):(e=d.beforeEnd[s](l,s),i=m.Deferred(),e&&"function"==typeof e.then?e.then(i.resolve,i.reject):i.resolve(e),i.promise().then(function(e){!1!==e&&(delete d.beforeEnd[s],t())},function(e){e!==h&&p.console&&p.console.error("layer error hint: "+e)})))},v.closeAll=function(n,a){"function"==typeof n&&(a=n,n=null);var o=m("."+u[0]);m.each(o,function(e){var t=m(this),i=n?t.attr("type")===n:1;i&&v.close(t.attr("times"),e===o.length-1?a:null)}),0===o.length&&"function"==typeof a&&a()},v.closeLast=function(i,e){var t,n=[],a=m.isArray(i);m("string"==typeof i?".layui-layer-"+i:".layui-layer").each(function(e,t){t=m(t);if(a&&-1===i.indexOf(t.attr("type"))||"none"===t.css("display"))return!0;n.push(Number(t.attr("times")))}),0":'",s=i.success;return delete i.success,v.open(m.extend({type:1,btn:["\u786e\u5b9a","\u53d6\u6d88"],content:o,skin:"layui-layer-prompt"+x("prompt"),maxWidth:g.width(),success:function(e){(a=e.find(".layui-layer-input")).val(i.value||"").focus(),"function"==typeof s&&s(e)},resize:!1,yes:function(e){var t=a.val();t.length>(i.maxlength||500)?v.tips("\u6700\u591a\u8f93\u5165"+(i.maxlength||500)+"\u4e2a\u5b57\u7b26",a,{tips:1}):n&&n(t,e,a)}},i))},v.tab=function(n){var a=(n=n||{}).tab||{},o="layui-this",s=n.success;return delete n.success,v.open(m.extend({type:1,skin:"layui-layer-tab"+x("tab"),resize:!1,title:function(){var e=a.length,t=1,i="";if(0'+a[0].title+"";t"+a[t].title+"";return i}(),content:'
      '+function(){var e=a.length,t=1,i="";if(0'+(a[0].content||"no content")+"";t'+(a[t].content||"no content")+"";return i}()+"
    ",success:function(e){var t=e.find(".layui-layer-title").children(),i=e.find(".layui-layer-tabmain").children();t.on("mousedown",function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0;var e=m(this),t=e.index();e.addClass(o).siblings().removeClass(o),i.eq(t).show().siblings().hide(),"function"==typeof n.change&&n.change(t)}),"function"==typeof s&&s(e)}},n))},v.photos=function(n,e,a){var s={};if((n=m.extend(!0,{toolbar:!0,footer:!0},n)).photos){var t=!("string"==typeof n.photos||n.photos instanceof m),i=t?n.photos:{},o=i.data||[],r=i.start||0,l=n.success;if(s.imgIndex=1+(0|r),n.img=n.img||"img",delete n.success,t){if(0===o.length)return v.msg("\u6ca1\u6709\u56fe\u7247")}else{var c=m(n.photos),f=function(){o=[],c.find(n.img).each(function(e){var t=m(this);t.attr("layer-index",e),o.push({alt:t.attr("alt"),pid:t.attr("layer-pid"),src:t.attr("lay-src")||t.attr("layer-src")||t.attr("src"),thumb:t.attr("src")})})};if(f(),0===o.length)return;if(e||c.on("click",n.img,function(){f();var e=m(this).attr("layer-index");v.photos(m.extend(n,{photos:{start:e,data:o,tab:n.tab},full:n.full}),!0)}),!e)return}s.imgprev=function(e){s.imgIndex--,s.imgIndex<1&&(s.imgIndex=o.length),s.tabimg(e)},s.imgnext=function(e,t){s.imgIndex++,s.imgIndex>o.length&&(s.imgIndex=1,t)||s.tabimg(e)},s.keyup=function(e){var t;s.end||(t=e.keyCode,e.preventDefault(),37===t?s.imgprev(!0):39===t?s.imgnext(!0):27===t&&v.close(s.index))},s.tabimg=function(e){if(!(o.length<=1))return i.start=s.imgIndex-1,v.close(s.index),v.photos(n,!0,e)},s.isNumber=function(e){return"number"==typeof e&&!isNaN(e)},s.image={},s.getTransform=function(e){var t=[],i=e.rotate,n=e.scaleX,e=e.scale;return s.isNumber(i)&&0!==i&&t.push("rotate("+i+"deg)"),s.isNumber(n)&&1!==n&&t.push("scaleX("+n+")"),s.isNumber(e)&&t.push("scale("+e+")"),t.length?t.join(" "):"none"},s.event=function(e,i,n){var a,o;s.main.find(".layui-layer-photos-prev").on("click",function(e){e.preventDefault(),s.imgprev(!0)}),s.main.find(".layui-layer-photos-next").on("click",function(e){e.preventDefault(),s.imgnext(!0)}),m(document).on("keyup",s.keyup),e.off("click").on("click","*[toolbar-event]",function(){var e=m(this);switch(e.attr("toolbar-event")){case"rotate":s.image.rotate=((s.image.rotate||0)+Number(e.attr("data-option")))%360,s.imgElem.css({transform:s.getTransform(s.image)});break;case"scalex":s.image.scaleX=-1===s.image.scaleX?1:-1,s.imgElem.css({transform:s.getTransform(s.image)});break;case"zoom":var t=Number(e.attr("data-option"));s.image.scale=(s.image.scale||1)+t,t<0&&s.image.scale<0-t&&(s.image.scale=0-t),s.imgElem.css({transform:s.getTransform(s.image)});break;case"reset":s.image.scaleX=1,s.image.scale=1,s.image.rotate=0,s.imgElem.css({transform:"none"});break;case"close":v.close(i)}n.offset(),n.auto(i)}),s.main.on("mousewheel DOMMouseScroll",function(e){var t=e.originalEvent.wheelDelta||-e.originalEvent.detail,i=s.main.find('[toolbar-event="zoom"]');(0n)&&("left"===t.direction?s.imgnext(!0):"right"===t.direction&&s.imgprev(!0))},m.each([n.shadeo,s.main],function(e,t){a.touchSwipe(t,{onTouchEnd:o})}))},s.loadi=v.load(1,{shade:!("shade"in n)&&[.9,h,"unset"],scrollbar:!1});var t=o[r].src,d=function(e){v.close(s.loadi);var t,i=o[r].alt||"";a&&(n.anim=-1),s.index=v.open(m.extend({type:1,id:"layui-layer-photos",area:(e=[e.width,e.height],t=[m(p).width()-100,m(p).height()-100],!n.full&&(t[0]'+i+''+(t=['
    '],1','','',"
    "].join("")),n.toolbar&&t.push(['
    ','','','','','','',"
    "].join("")),n.footer&&t.push(['"].join("")),t.push(""),t.join(""))+"",success:function(e,t,i){s.main=e.find(".layer-layer-photos-main"),s.footer=e.find(".layui-layer-photos-footer"),s.imgElem=s.main.children("img"),s.event(e,t,i),n.tab&&n.tab(o[r],e),"function"==typeof l&&l(e)},end:function(){s.end=!0,m(document).off("keyup",s.keyup)}},n))},u=function(){v.close(s.loadi),v.msg("\u5f53\u524d\u56fe\u7247\u5730\u5740\u5f02\u5e38\uff0c
    \u662f\u5426\u7ee7\u7eed\u67e5\u770b\u4e0b\u4e00\u5f20\uff1f",{time:3e4,btn:["\u4e0b\u4e00\u5f20","\u4e0d\u770b\u4e86"],yes:function(){1").addClass(r));layui.each(i.bars,function(t,e){var n=s('
  • ');n.addClass(e.icon).attr({"lay-type":e.type,style:e.style||(i.bgcolor?"background-color: "+i.bgcolor:"")}).html(e.content),n.on("click",function(){var t=s(this).attr("lay-type");"top"===t&&("body"===i.target?s("html,body"):u).animate({scrollTop:0},i.duration),"function"==typeof i.click&&i.click.call(this,t)}),"object"===layui.type(i.on)&&layui.each(i.on,function(t,e){n.on(t,function(){var t=s(this).attr("lay-type");"function"==typeof e&&e.call(this,t)})}),"top"===e.type&&(n.addClass("layui-fixbar-top"),o=n),l.append(n)}),c.find("."+r).remove(),"object"==typeof i.css&&l.css(i.css),c.append(l),o&&(e=function e(){return u.scrollTop()>=i.margin?t||(o.show(),t=1):t&&(o.hide(),t=0),e}()),u.on("scroll",function(){e&&(clearTimeout(n),n=setTimeout(function(){e()},100))})},countdown:function(i){i=s.extend(!0,{date:new Date,now:new Date},i);var o=arguments,r=(1]|&(?=#[a-zA-Z0-9]+)/g.test(t+="")?t.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,"""):t},unescape:function(t){return t!==undefined&&null!==t||(t=""),(t+="").replace(/\&/g,"&").replace(/\</g,"<").replace(/\>/g,">").replace(/\'/g,"'").replace(/\"/g,'"')},openWin:function(t){var e=(t=t||{}).window||window.open(t.url||"",t.target,t.specs);t.url||(e.document.open("text/html","replace"),e.document.write(t.content||""),e.document.close())},toVisibleArea:function(t){var e,n,i,o,r,a,c,u;(t=s.extend({margin:160,duration:200,type:"y"},t)).scrollElem[0]&&t.thisElem[0]&&(e=t.scrollElem,c=t.thisElem,i=(r="y"===t.type)?"top":"left",o=e[n=r?"scrollTop":"scrollLeft"](),r=e[r?"height":"width"](),a=e.offset()[i],u={},(c=c.offset()[i]-a)>r-t.margin||c."+w,E=function(e){var i=this;i.index=++h.index,i.config=c.extend({},i.config,h.config,e),i.init()};E.prototype.config={trigger:"click",content:"",className:"",style:"",show:!1,isAllowSpread:!0,isSpreadItem:!0,data:[],delay:[200,300],shade:0,accordion:!1},E.prototype.reload=function(e,i){var t=this;t.config=c.extend({},t.config,e),t.init(!0,i)},E.prototype.init=function(e,i){var t,n=this,l=n.config,a=c(l.elem);return 1');return 0\u6682\u65e0\u6570\u636e
  • '),e},u=function(r,e){return layui.each(e,function(e,i){var t,n=i[s.children]&&0",(t="href"in i?''+a+"":a,n?'
    '+t+("parent"===o?'':"group"===o&&d.isAllowSpread?'':"")+"
    ":'
    '+t+"
    "),""].join(""))).data("item",i),n&&(l=c('
    '),t=c("
      "),"parent"===o?(l.append(u(t,i[s.children])),a.append(l)):a.append(u(t,i[s.children]))),r.append(a))}),r},l=['
      ',"
      "].join("");!(e="contextmenu"!==d.trigger&&!lay.isTopElem(d.elem[0])?e:!0)&&d.elem.data(y+"_opened")||(a.elemView=c("."+v+"["+f+'="'+d.id+'"]'),"reloadData"===i&&a.elemView.length?a.elemView.html(d.content||n()):(a.elemView=c(l),a.elemView.append(d.content||n()),d.className&&a.elemView.addClass(d.className),d.style&&a.elemView.attr("style",d.style),h.thisId=d.id,a.remove(),t.append(a.elemView),d.elem.data(y+"_opened",!0),e=d.shade?'
      ':"",a.elemView.before(e),"mouseenter"===d.trigger&&a.elemView.on("mouseenter",function(){clearTimeout(g.timer)}).on("mouseleave",function(){a.delayRemove()})),a.position(),(g.prevElem=a.elemView).data("prevElem",d.elem),a.elemView.find(".layui-menu").on(o,function(e){layui.stope(e)}),a.elemView.find(".layui-menu li").on("click",function(e){var i=c(this),t=i.data("item")||{},n=t[s.children]&&0n.width()&&(t.addClass(b),(i=t[0].getBoundingClientRect()).left<0)&&t.removeClass(b),i.bottom>n.height())&&t.eq(0).css("margin-top",-(i.bottom-n.height()+5))}).on("mouseleave",t,function(e){var i=c(this).children("."+x);i.removeClass(b),i.css("margin-top",0)}),h.close=function(e){e=g.getThis(e);return e?(e.remove(),g.call(e)):this},h.open=function(e){e=g.getThis(e);return e?(e.render(),g.call(e)):this},h.reload=function(e,i,t){e=g.getThis(e);return e?(e.reload(i,t),g.call(e)):this},h.reloadData=function(){var t=c.extend([],arguments),n=(t[2]="reloadData",new RegExp("^("+["data","templet","content"].join("|")+")$"));return layui.each(t[1],function(e,i){n.test(e)||delete t[1][e]}),h.reload.apply(null,t)},h.render=function(e){e=new E(e);return g.call(e)},e(r,h)});layui.define(["jquery","lay"],function(e){"use strict";var x=layui.$,b=layui.lay,m={config:{},index:layui.slider?layui.slider.index+1e4:0,set:function(e){var t=this;return t.config=x.extend({},t.config,e),t},on:function(e,t){return layui.onevent.call(this,i,e,t)}},i="slider",f="layui-disabled",T="layui-slider-bar",w="layui-slider-wrap",M="layui-slider-wrap-btn",L="layui-slider-tips",E="layui-slider-input-txt",Y="layui-slider-hover",t=function(e){var t=this;t.index=++m.index,t.config=x.extend({},t.config,m.config,e),t.render()};t.prototype.config={type:"default",min:0,max:100,value:0,step:1,showstep:!1,tips:!0,tipsAlways:!1,input:!1,range:!1,height:200,disabled:!1,theme:"#16baaa"},t.prototype.precision=function(){var e=this.config,e=x.map([e.min,e.max,e.step],function(e,t){e=String(e).split(".");return e[1]?e[1].length:0});return Math.max.apply(null,e)},t.prototype.render=function(){var n=this,a=n.config,e=x(a.elem);if(1a.max&&(a.value=a.max),l=(a.value-a.min)/(a.max-a.min)*100+"%");var t,e=a.disabled?"#c2c2c2":a.theme,i='
      '+(a.tips?'
      ":"")+'
      '+(a.range?'
      ':"")+"
      ",l=x(a.elem),s=l.next(".layui-slider");if(s[0]&&s.remove(),n.elemTemp=x(i),a.range?(n.elemTemp.find("."+w).eq(0).data("value",a.value[0]),n.elemTemp.find("."+w).eq(1).data("value",a.value[1])):n.elemTemp.find("."+w).data("value",a.value),l.html(n.elemTemp),"vertical"===a.type&&n.elemTemp.height(a.height+"px"),a.showstep){for(var o=(a.max-a.min)/a.step,r="",u=1;u<1+o;u++){var c=100*u/o;c<100&&(r+='
      ')}n.elemTemp.append(r)}function d(e){e=e.parent().data("value"),e=a.setTips?a.setTips(e):e;n.elemTemp.find("."+L).html(e)}function p(e){var t="vertical"===a.type?a.height:n.elemTemp[0].offsetWidth,i=n.elemTemp.find("."+w);return("vertical"===a.type?t-e.parent()[0].offsetTop-i.height():e.parent()[0].offsetLeft)/t*100}function v(e){"vertical"===a.type?n.elemTemp.find("."+L).css({bottom:e+"%","margin-bottom":"20px",display:"inline-block"}):n.elemTemp.find("."+L).css({left:e+"%",display:"inline-block"})}a.input&&!a.range&&(e=x('
      '),l.css("position","relative"),l.append(e),l.find("."+E).children("input").val(a.value),"vertical"===a.type?e.css({left:0,top:-48}):n.elemTemp.css("margin-right",e.outerWidth()+15)),a.disabled?(n.elemTemp.addClass(f),n.elemTemp.find("."+M).addClass(f)):n.slide(),a.tips&&(a.tipsAlways?(d(s=n.elemTemp.find("."+M)),v(p(s))):n.elemTemp.find("."+M).on("mouseover",function(){d(x(this));var e=p(x(this));clearTimeout(t),t=setTimeout(function(){v(e)},300)}).on("mouseout",function(){clearTimeout(t),a.tipsAlways||n.elemTemp.find("."+L).css("display","none")}))},t.prototype.slide=function(e,t,i){var u=this,c=u.config,d=u.elemTemp,p=function(){return"vertical"===c.type?c.height:d[0].offsetWidth},v=d.find("."+w),o=d.next(".layui-slider-input"),r=o.children("."+E).children("input").val(),m=100/((c.max-c.min)/c.step),f=u.precision(),h=function(e,t,i){e=(e=100<(e=100n[1]&&n.reverse(),u.value=c.range?n:l,c.change&&c.change(u.value),"done"===i&&c.done&&c.done(u.value)},y=function(e){var t=e/p()*100/m,i=Math.round(t)*m;return i=e==p()?Math.ceil(t)*m:i},g=x(['
      p()?p():t)/p()*100/m;h(t,o),r.addClass(Y),d.find("."+L).show(),e.preventDefault()},n=function(e){r.removeClass(Y),c.tipsAlways||setTimeout(function(){d.find("."+L).hide()},e)},a=function(){n&&n(b.touchEventsSupported()?1e3:0),g.remove(),c.done&&c.done(u.value),b.touchEventsSupported()&&(t[0].removeEventListener("touchmove",i,!!b.passiveSupported&&{passive:!1}),t[0].removeEventListener("touchend",a),t[0].removeEventListener("touchcancel",a))},x("#LAY-slider-moving")[0]||x("body").append(g),g.on("mousemove",i),g.on("mouseup",a).on("mouseleave",a),b.touchEventsSupported()&&(t[0].addEventListener("touchmove",i,!!b.passiveSupported&&{passive:!1}),t[0].addEventListener("touchend",a),t[0].addEventListener("touchcancel",a))})}),d.on("click",function(e){var t=x("."+M),i=x(this);!t.is(event.target)&&0===t.has(event.target).length&&t.length&&(i=(t=(t=(t="vertical"===c.type?p()-e.clientY+i.offset().top-x(window).scrollTop():e.clientX-i.offset().left-x(window).scrollLeft())<0?0:t)>p()?p():t)/p()*100/m,t=c.range?"vertical"===c.type?Math.abs(t-parseInt(x(v[0]).css("bottom")))>Math.abs(t-parseInt(x(v[1]).css("bottom")))?1:0:Math.abs(t-v[0].offsetLeft)>Math.abs(t-v[1].offsetLeft)?1:0:0,h(i,t,"done"),e.preventDefault())}),o.children(".layui-slider-input-btn").children("i").each(function(t){x(this).on("click",function(){r=o.children("."+E).children("input").val();var e=((r=1==t?r-c.stepc.max?c.max:Number(r)+c.step)-c.min)/(c.max-c.min)*100/m;h(e,0,"done")})});var n=function(){var e=this.value,e=(e=(e=(e=isNaN(e)?0:e)c.max?c.max:e,((this.value=e)-c.min)/(c.max-c.min)*100/m);h(e,0,"done")};o.children("."+E).children("input").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),n.call(this))}).on("change",n)},t.prototype.events=function(){this.config},m.render=function(e){e=new t(e);return function(){var i=this,n=i.config;return{setValue:function(e,t){return e=(e=e>n.max?n.max:e)',"",'','',"","","
      "].join("")),t=i.elem=k(i.elem);i.size&&o.addClass("layui-colorpicker-"+i.size),t.addClass("layui-inline").html(e.elemColorBox=o),i.id="id"in i?i.id:t.attr("id")||e.index,e.color=e.elemColorBox.find("."+C)[0].style.background,e.events()},d.prototype.renderPicker=function(){var o,e=this,i=e.config,t=e.elemColorBox[0],n=e.elemPicker=k(['
      ','
      ','
      ','
      ','
      ','
      ',"
      ",'
      ','
      ',"
      ","
      ",'
      ','
      ','
      ',"
      ","
      ",i.predefine?(o=['
      '],layui.each(i.colors,function(e,i){o.push(['
      ','
      ',"
      "].join(""))}),o.push("
      "),o.join("")):"",'
      ','
      ','',"
      ",'
      ','','',"","
      "].join(""));e.elemColorBox.find("."+C)[0];k(a)[0]&&k(a).data("index")==e.index?e.removePicker(d.thisElemInd):(e.removePicker(d.thisElemInd),k("body").append(n)),r.thisId=i.id,d.thisElemInd=e.index,d.thisColor=t.style.background,e.position(),e.pickerEvents()},d.prototype.removePicker=function(e){var i=this.config,e=k("#layui-colorpicker"+(e||this.index));return e[0]&&(e.remove(),delete r.thisId,"function"==typeof i.close)&&i.close(this.color),this},d.prototype.position=function(){var e=this,i=e.config;return n.position(e.bindElem||e.elemColorBox[0],e.elemPicker[0],{position:i.position,align:"center"}),e},d.prototype.val=function(){var e,i=this,o=(i.config,i.elemColorBox.find("."+C)),t=i.elemPicker.find("."+Y),n=o[0].style.backgroundColor;n?(e=M(F(n)),o=o.attr("lay-type"),i.select(e.h,e.s,e.b),"torgb"===o?t.find("input").val(n):"rgba"===o?(o=F(n),3===(n.match(/[0-9]{1,3}/g)||[]).length?(t.find("input").val("rgba("+o.r+", "+o.g+", "+o.b+", 1)"),i.elemPicker.find("."+D).css("left",280)):(t.find("input").val(n),n=280*n.slice(n.lastIndexOf(",")+1,n.length-1),i.elemPicker.find("."+D).css("left",n)),i.elemPicker.find("."+T)[0].style.background="linear-gradient(to right, rgba("+o.r+", "+o.g+", "+o.b+", 0), rgb("+o.r+", "+o.g+", "+o.b+"))"):t.find("input").val("#"+j(e))):(i.select(0,100,100),t.find("input").val(""),i.elemPicker.find("."+T)[0].style.background="",i.elemPicker.find("."+D).css("left",280))},d.prototype.side=function(){var r=this,l=r.config,c=r.elemColorBox.find("."+C),a=c.attr("lay-type"),s=r.elemPicker.find(".layui-colorpicker-side"),o=r.elemPicker.find("."+B),d=r.elemPicker.find("."+I),t=r.elemPicker.find("."+E),u=r.elemPicker.find("."+T),f=r.elemPicker.find("."+D),p=o[0].offsetTop/180*360,h=100-(t[0].offsetTop+3)/180*100,g=(t[0].offsetLeft+3)/260*100,v=Math.round(f[0].offsetLeft/280*100)/100,m=r.elemColorBox.find("."+w),e=r.elemPicker.find(".layui-colorpicker-pre").children("div"),y=function(e,i,o,t){r.select(e,i,o);var n=X({h:e,s:i,b:o}),e=j({h:e,s:i,b:o}),i=r.elemPicker.find("."+Y).find("input");m.addClass(x).removeClass(P),c[0].style.background="rgb("+n.r+", "+n.g+", "+n.b+")","torgb"===a?i.val("rgb("+n.r+", "+n.g+", "+n.b+")"):"rgba"===a?(f.css("left",280*t),i.val("rgba("+n.r+", "+n.g+", "+n.b+", "+t+")"),c[0].style.background="rgba("+n.r+", "+n.g+", "+n.b+", "+t+")",u[0].style.background="linear-gradient(to right, rgba("+n.r+", "+n.g+", "+n.b+", 0), rgb("+n.r+", "+n.g+", "+n.b+"))"):i.val("#"+e),l.change&&l.change(k.trim(r.elemPicker.find("."+Y).find("input").val()))},i=k(['
      '].join("")),b=function(e){k("#LAY-colorpicker-moving")[0]||k("body").append(i),i.on("mousemove",e),i.on("mouseup",function(){i.remove()}).on("mouseleave",function(){i.remove()})};o.on("mousedown",function(e,i){var t=this.offsetTop,n=(e.clientY===undefined?i:e).clientY;layui.stope(e),b(function(e){var i=t+(e.clientY-n),o=s[0].offsetHeight,o=(i=o<(i=i<0?0:i)?o:i)/180*360;y(p=o,g,h,v),e.preventDefault()}),e.preventDefault()}),s.on("mousedown",function(e){var i=e.clientY-k(this).offset().top+H.scrollTop(),i=(i=(i=i<0?0:i)>this.offsetHeight?this.offsetHeight:i)/180*360;y(p=i,g,h,v),e.preventDefault(),o.trigger("mousedown",e)}),t.on("mousedown",function(e,i){var r=this.offsetTop,l=this.offsetLeft,c=(e.clientY===undefined?i:e).clientY,a=(e.clientX===undefined?i:e).clientX;layui.stope(e),b(function(e){var i=r+(e.clientY-c),o=l+(e.clientX-a),t=d[0].offsetHeight,n=d[0].offsetWidth,n=(o=n<(o=o<0?0:o)?n:o)/260*100,o=100-(i=t<(i=i<0?0:i)?t:i)/180*100;y(p,g=n,h=o,v),e.preventDefault()}),e.preventDefault()}),d.on("mousedown",function(e){var i=e.clientY-k(this).offset().top+H.scrollTop(),o=e.clientX-k(this).offset().left+H.scrollLeft(),o=((i=i<0?0:i)>this.offsetHeight&&(i=this.offsetHeight),(o=(o=o<0?0:o)>this.offsetWidth?this.offsetWidth:o)/260*100),i=100-i/180*100;y(p,g=o,h=i,v),layui.stope(e),e.preventDefault(),t.trigger("mousedown",e)}),f.on("mousedown",function(e,i){var t=this.offsetLeft,n=(e.clientX===undefined?i:e).clientX;layui.stope(e),b(function(e){var i=t+(e.clientX-n),o=u[0].offsetWidth,o=(o<(i=i<0?0:i)&&(i=o),Math.round(i/280*100)/100);y(p,g,h,v=o),e.preventDefault()}),e.preventDefault()}),u.on("mousedown",function(e){var i=e.clientX-k(this).offset().left,i=((i=i<0?0:i)>this.offsetWidth&&(i=this.offsetWidth),Math.round(i/280*100)/100);y(p,g,h,v=i),e.preventDefault(),f.trigger("mousedown",e)}),e.each(function(){k(this).on("click",function(){k(this).parent(".layui-colorpicker-pre").addClass("selected").siblings().removeClass("selected");var e=this.style.backgroundColor,i=M(F(e)),o=e.slice(e.lastIndexOf(",")+1,e.length-1);p=i.h,g=i.s,h=i.b,3===(e.match(/[0-9]{1,3}/g)||[]).length&&(o=1),v=o,y(i.h,i.s,i.b,o)})}),n.touchEventsSupported()&&layui.each([{elem:s,eventType:"mousedown"},{elem:u,eventType:"mousedown"},{elem:d,eventType:"mousedown"}],function(e,t){n.touchSwipe(t.elem,{onTouchMove:function(e){var i,o;e=e,i=t.eventType,e=e.touches[0],(o=document.createEvent("MouseEvent")).initMouseEvent(i,!0,!0,window,1,e.screenX,e.screenY,e.clientX,e.clientY,!1,!1,!1,!1,0,null),e.target.dispatchEvent(o)}})})},d.prototype.select=function(e,i,o,t){this.config;var n=j({h:e,s:100,b:100}),e=(j({h:e,s:i,b:o}),e/360*180),o=180-o/100*180,i=i/100*260,r=this.elemPicker.find("."+I)[0];this.elemPicker.find("."+B).css("top",e),r.style.background="#"+n,this.elemPicker.find("."+E).css({top:o/r.offsetHeight*100+"%",left:i/r.offsetWidth*100+"%"})},d.prototype.pickerEvents=function(){var c=this,a=c.config,s=c.elemColorBox.find("."+C),d=c.elemPicker.find("."+Y+" input"),o={clear:function(e){s[0].style.background="",c.elemColorBox.find("."+w).removeClass(x).addClass(P),c.color="",a.done&&a.done(""),c.removePicker()},confirm:function(e,i){var o,t,n,r,l=k.trim(d.val());-1>16,g:(65280&n)>>8,b:255&n},t=M(r),s[0].style.background=o="#"+j(t),c.elemColorBox.find("."+w).removeClass(P).addClass(x)),"change"===i?(c.select(t.h,t.s,t.b,i),a.change&&a.change(o)):(c.color=l,a.done&&a.done(l),c.removePicker())}};c.elemPicker.on("click","*[colorpicker-events]",function(){var e=k(this),i=e.attr("colorpicker-events");o[i]&&o[i].call(this,e)}),d.on("keyup",function(e){var i=k(this);o.confirm.call(this,i,13===e.keyCode?null:"change")})},d.prototype.events=function(){var e=this;e.config;e.elemColorBox.on("click",function(){e.renderPicker(),k(a)[0]&&(e.val(),e.side())})},s.on(i,function(e){var i,o,t;r.thisId&&(i=l.getThis(r.thisId))&&(o=i.config,t=i.elemColorBox.find("."+C),k(e.target).hasClass(c)||k(e.target).parents("."+c)[0]||k(e.target).hasClass(a.replace(/\./g,""))||k(e.target).parents(a)[0]||i.elemPicker&&(i.color?(e=M(F(i.color)),i.select(e.h,e.s,e.b)):i.elemColorBox.find("."+w).removeClass(x).addClass(P),t[0].style.background=i.color||"","function"==typeof o.cancel&&o.cancel(i.color),i.removePicker()))}),H.on("resize",function(){if(r.thisId){var e=l.getThis(r.thisId);if(e)return!(!e.elemPicker||!k(a)[0])&&void e.position()}}),l.that={},l.getThis=function(e){var i=l.that[e];return i||o.error(e?t+" instance with ID '"+e+"' not found":"ID argument required"),i},r.render=function(e){e=new d(e);return l.call(e)},e(t,r)});layui.define("jquery",function(t){"use strict";var u=layui.$,d=(layui.hint(),layui.device()),c="element",r="layui-this",h="layui-show",o=".layui-tab-title",i=function(){this.config={}},y=(i.prototype.set=function(t){return u.extend(!0,this.config,t),this},i.prototype.on=function(t,i){return layui.onevent.call(this,c,t,i)},i.prototype.tabAdd=function(t,i){var a,e=u(".layui-tab[lay-filter="+t+"]"),l=e.children(o),n=l.children(".layui-tab-bar"),e=e.children(".layui-tab-content"),s=""+(i.title||"unnaming")+"";return n[0]?n.before(s):l.append(s),e.append('
      "+(i.content||"")+"
      "),i.change&&this.tabChange(t,i.id),l.data("LAY_TAB_CHANGE",i.change),C.tabAuto(i.change?"change":null),this},i.prototype.tabDelete=function(t,i){t=u(".layui-tab[lay-filter="+t+"]").children(o).find('>li[lay-id="'+i+'"]');return C.tabDelete(null,t),this},i.prototype.tabChange=function(t,i){t=u(".layui-tab[lay-filter="+t+"]").children(o).find('>li[lay-id="'+i+'"]');return C.tabClick.call(t[0],{liElem:t}),this},i.prototype.tab=function(a){a=a||{},e.on("click",a.headerElem,function(t){var i=u(a.headerElem).index(u(this));C.tabClick.call(this,{index:i,options:a})})},i.prototype.progress=function(t,i){var a="layui-progress",t=u("."+a+"[lay-filter="+t+"]").find("."+a+"-bar"),a=t.find("."+a+"-text");return t.css("width",function(){return/^.+\/.+$/.test(i)?100*new Function("return "+i)()+"%":i}).attr("lay-percent",i),a.text(i),this},".layui-nav"),f="layui-nav-item",p="layui-nav-bar",b="layui-nav-tree",v="layui-nav-child",m="layui-nav-more",g="layui-anim layui-anim-upbit",C={tabClick:function(t){var i=(t=t||{}).options||{},a=t.liElem||u(this),e=i.headerElem?a.parent():a.parents(".layui-tab").eq(0),i=i.bodyElem?u(i.bodyElem):e.children(".layui-tab-content").children(".layui-tab-item"),l=a.find("a"),l="javascript:;"!==l.attr("href")&&"_blank"===l.attr("target"),n="string"==typeof a.attr("lay-unselect"),s=e.attr("lay-filter"),o=a.attr("lay-id"),t="index"in t?t.index:a.parent().children("li").index(a);l||n||(a.addClass(r).siblings().removeClass(r),(o?l=(l=i.filter('[lay-id="'+o+'"]')).length?l:i.eq(t):i.eq(t)).addClass(h).siblings().removeClass(h)),layui.event.call(this,c,"tab("+s+")",{elem:e,index:t,id:o})},tabDelete:function(t,i){var i=i||u(this).parent(),a=i.parent().children("li").index(i),e=i.closest(".layui-tab"),l=e.children(".layui-tab-content").children(".layui-tab-item"),n=e.attr("lay-filter"),s=i.attr("lay-id");!1!==layui.event.call(i[0],c,"tabBeforeDelete("+n+")",{elem:e,index:a,id:s})&&(i.hasClass(r)&&(i.next()[0]&&i.next().is("li")?C.tabClick.call(i.next()[0],{index:a+1}):i.prev()[0]&&i.prev().is("li")&&C.tabClick.call(i.prev()[0],null,a-1)),i.remove(),(s?i=(i=l.filter('[lay-id="'+s+'"]')).length?i:l.eq(a):l.eq(a)).remove(),setTimeout(function(){C.tabAuto()},50),layui.event.call(this,c,"tabDelete("+n+")",{elem:e,index:a,id:s}))},tabAuto:function(l){var n="layui-tab-more",s="layui-tab-bar",o="layui-tab-close",c=this;u(".layui-tab").each(function(){var t=u(this),a=t.children(".layui-tab-title"),i=(t.children(".layui-tab-content").children(".layui-tab-item"),'lay-stope="tabmore"'),i=u(''),e=(c===window&&d.ie,t.attr("lay-allowclose"));e&&"false"!==e&&a.find("li").each(function(){var t,i=u(this);i.find("."+o)[0]||"false"===i.attr("lay-allowclose")||((t=u('')).on("click",C.tabDelete),i.append(t))}),"string"!=typeof t.attr("lay-unauto")&&(a.prop("scrollWidth")>a.outerWidth()+1||a.find("li").length&&a.height()>(e=a.find("li").eq(0).height())+e/2?("change"===l&&a.data("LAY_TAB_CHANGE")&&a.addClass(n),a.find("."+s)[0]||(a.append(i),t.attr("overflow",""),i.on("click",function(t){var i=a.hasClass(n);a[i?"removeClass":"addClass"](n)}))):(a.find("."+s).remove(),t.removeAttr("overflow")))})},hideTabMore:function(t){var i=u(".layui-tab-title");!0!==t&&"tabmore"===u(t.target).attr("lay-stope")||(i.removeClass("layui-tab-more"),i.find(".layui-tab-bar").attr("title",""))},clickThis:function(){var t=u(this),i=t.closest(y),a=i.attr("lay-filter"),e=t.parent(),l=t.siblings("."+v),n="string"==typeof e.attr("lay-unselect");if("javascript:;"!==t.attr("href")&&"_blank"===t.attr("target")||n||l[0]||(i.find("."+r).removeClass(r),e.addClass(r)),i.hasClass(b)){var n=f+"ed",s=!e.hasClass(n),o=function(){u(this).css({display:""}),i.children("."+p).css({opacity:0})};if(l.is(":animated"))return;l.removeClass(g),l[0]&&(s?(l.slideDown(200,o),e.addClass(n)):(e.removeClass(n),l.show().slideUp(200,o)),"string"!=typeof i.attr("lay-accordion")&&"all"!==i.attr("lay-shrink")||((s=e.siblings("."+n)).removeClass(n),s.children("."+v).show().stop().slideUp(200,o)))}layui.event.call(this,c,"nav("+a+")",t)},collapse:function(){var t=u(this),i=t.find(".layui-colla-icon"),a=t.siblings(".layui-colla-content"),e=t.parents(".layui-collapse").eq(0),l=e.attr("lay-filter"),n="none"===a.css("display");"string"==typeof e.attr("lay-accordion")&&((e=e.children(".layui-colla-item").children("."+h)).siblings(".layui-colla-title").children(".layui-colla-icon").html(""),e.removeClass(h)),a[n?"addClass":"removeClass"](h),i.html(n?"":""),layui.event.call(this,c,"collapse("+l+")",{title:t,content:a,show:n})}},a=(i.prototype.render=i.prototype.init=function(t,i){var a=i?'[lay-filter="'+i+'"]':"",i={tab:function(){C.tabAuto.call({})},nav:function(){var s={},o={},c={},r="layui-nav-title";u(y+a).each(function(t){var i=u(this),a=u(''),e=i.find("."+f);i.find("."+p)[0]||(i.append(a),(i.hasClass(b)?e.find("dd,>."+r):e).on("mouseenter",function(){!function(t,i,a){var e,l=u(this),n=l.find("."+v);i.hasClass(b)?n[0]||(e=l.children("."+r),t.css({top:l.offset().top-i.offset().top,height:(e[0]?e:l).outerHeight(),opacity:1})):(n.addClass(g),n.hasClass("layui-nav-child-c")&&n.css({left:-(n.outerWidth()-l.width())/2}),n[0]?t.css({left:t.position().left+t.width()/2,width:0,opacity:0}):t.css({left:l.position().left+parseFloat(l.css("marginLeft")),top:l.position().top+l.height()-t.height()}),s[a]=setTimeout(function(){t.css({width:n[0]?0:l.width(),opacity:n[0]?0:1})},d.ie&&d.ie<10?0:200),clearTimeout(c[a]),"block"===n.css("display")&&clearTimeout(o[a]),o[a]=setTimeout(function(){n.addClass(h),l.find("."+m).addClass(m+"d")},300))}.call(this,a,i,t)}).on("mouseleave",function(){i.hasClass(b)?a.css({height:0,opacity:0}):(clearTimeout(o[t]),o[t]=setTimeout(function(){i.find("."+v).removeClass(h),i.find("."+m).removeClass(m+"d")},300))}),i.on("mouseleave",function(){clearTimeout(s[t]),c[t]=setTimeout(function(){i.hasClass(b)||a.css({width:0,left:a.position().left+a.width()/2,opacity:0})},200)})),e.find("a").each(function(){var t=u(this);t.parent();t.siblings("."+v)[0]&&!t.children("."+m)[0]&&t.append(''),t.off("click",C.clickThis).on("click",C.clickThis)})})},breadcrumb:function(){u(".layui-breadcrumb"+a).each(function(){var t=u(this),i="lay-separator",a=t.attr(i)||"/",e=t.find("a");e.next("span["+i+"]")[0]||(e.each(function(t){t!==e.length-1&&u(this).after(""+a+"")}),t.css("visibility","visible"))})},progress:function(){var e="layui-progress";u("."+e+a).each(function(){var t=u(this),i=t.find(".layui-progress-bar"),a=i.attr("lay-percent");i.css("width",function(){return/^.+\/.+$/.test(a)?100*new Function("return "+a)()+"%":a}),t.attr("lay-showpercent")&&setTimeout(function(){i.html(''+a+"")},350)})},collapse:function(){u(".layui-collapse"+a).each(function(){u(this).find(".layui-colla-item").each(function(){var t=u(this),i=t.find(".layui-colla-title"),t="none"===t.find(".layui-colla-content").css("display");i.find(".layui-colla-icon").remove(),i.append(''+(t?"":"")+""),i.off("click",C.collapse).on("click",C.collapse)})})}};return i[t]?i[t]():layui.each(i,function(t,i){i()})},new i),e=u(document);u(function(){a.render()}),e.on("click",".layui-tab-title li",C.tabClick),u(window).on("resize",C.tabAuto),t(c,a)});layui.define(["lay","layer"],function(e){"use strict";var b=layui.$,o=layui.lay,i=layui.layer,F=layui.device(),t="upload",c="layui_"+t+"_index",w={config:{},index:layui[t]?layui[t].index+1e4:0,set:function(e){var i=this;return i.config=b.extend({},i.config,e),i},on:function(e,i){return layui.onevent.call(this,t,e,i)}},a=function(){var i=this,e=i.config.id;return{upload:function(e){i.upload.call(i,e)},reload:function(e){i.reload.call(i,e)},config:(a.that[e]=i).config}},r="layui-upload-file",l="layui-upload-form",L="layui-upload-iframe",z="layui-upload-choose",j="UPLOADING",D=function(e){var i=this;i.index=++w.index,i.config=b.extend({},i.config,w.config,e),i.render()};D.prototype.config={accept:"images",exts:"",auto:!0,bindAction:"",url:"",force:"",field:"file",acceptMime:"",method:"post",data:{},drag:!0,size:0,number:0,multiple:!1,text:{"cross-domain":"Cross-domain requests are not supported","data-format-error":"Please return JSON data format","check-error":"",error:"","limit-number":null,"limit-size":null}},D.prototype.reload=function(e){var i=this;i.config=b.extend({},i.config,e),i.render(!0)},D.prototype.render=function(e){var i=this,t=i.config,n=b(t.elem);return 1"].join("")),n=i.elem.next();(n.hasClass(r)||n.hasClass(l))&&n.remove(),F.ie&&F.ie<10&&i.elem.wrap('
      '),e.isFile()?(e.elemFile=i.elem,i.field=i.elem[0].name):i.elem.after(t),F.ie&&F.ie<10&&e.initIE()},D.prototype.initIE=function(){var t,e=this.config,i=b(''),n=b(['
      ',"
      "].join(""));b("#"+L)[0]||b("body").append(i),e.elem.next().hasClass(l)||(this.elemFile.wrap(n),e.elem.next("."+l).append((t=[],layui.each(e.data,function(e,i){i="function"==typeof i?i():i,t.push('')}),t.join(""))))},D.prototype.msg=function(e){return i.msg(e,{icon:2,shift:6})},D.prototype.isFile=function(){var e=this.config.elem[0];if(e)return"input"===e.tagName.toLocaleLowerCase()&&"file"===e.type},D.prototype.preview=function(n){window.FileReader&&layui.each(this.chooseFiles,function(e,i){var t=new FileReader;t.readAsDataURL(i),t.onload=function(){n&&n(e,i,this.result)}})},D.prototype.upload=function(e,i){var t,n,o,a,r,u=this,f=u.config,c=f.text||{},l=u.elemFile[0],s=function(){return e||u.files||u.chooseFiles||l.files},d=function(){var o=0,a=0,r=s(),l=function(){f.multiple&&o+a===u.fileLength&&"function"==typeof f.allDone&&f.allDone({total:u.fileLength,successful:o,failed:a})},t=function(t){var n=new FormData,i=function(e){t.unified?layui.each(r,function(e,i){delete i[j]}):delete e[j]};if(layui.each(f.data,function(e,i){i="function"==typeof i?t.unified?i():i(t.index,t.file):i,n.append(e,i)}),t.unified)layui.each(r,function(e,i){i[j]||(i[j]=!0,n.append(f.field,i))});else{if(t.file[j])return;n.append(f.field,t.file),t.file[j]=!0}var e={url:f.url,type:"post",data:n,dataType:f.dataType||"json",contentType:!1,processData:!1,headers:f.headers||{},success:function(e){f.unified?o+=u.fileLength:o++,h(t.index,e),l(t.index),i(t.file)},error:function(e){f.unified?a+=u.fileLength:a++,u.msg(c.error||["Upload failed, please try again.","status: "+(e.status||"")+" - "+(e.statusText||"error")].join("
      ")),m(t.index),l(t.index),i(t.file)}};"function"==typeof f.progress&&(e.xhr=function(){var e=b.ajaxSettings.xhr();return e.upload.addEventListener("progress",function(e){var i;e.lengthComputable&&(i=Math.floor(e.loaded/e.total*100),f.progress(i,(f.item||f.elem)[0],e,t.index))}),e}),b.ajax(e)};f.unified?t({unified:!0,index:0}):layui.each(r,function(e,i){t({index:e,file:i})})},p=function(){var n=b("#"+L);u.elemFile.parent().submit(),clearInterval(D.timer),D.timer=setInterval(function(){var e,i=n.contents().find("body");try{e=i.text()}catch(t){u.msg(c["cross-domain"]),clearInterval(D.timer),m()}e&&(clearInterval(D.timer),i.html(""),h(0,e))},30)},h=function(e,i){if(u.elemFile.next("."+z).remove(),l.value="","json"===f.force&&"object"!=typeof i)try{i=JSON.parse(i)}catch(t){return i={},u.msg(c["data-format-error"])}"function"==typeof f.done&&f.done(i,e||0,function(e){u.upload(e)})},m=function(e){f.auto&&(l.value=""),"function"==typeof f.error&&f.error(e||0,function(e){u.upload(e)})},g=f.exts,v=(n=[],layui.each(e||u.chooseFiles,function(e,i){n.push(i.name)}),n),y={preview:function(e){u.preview(e)},upload:function(e,i){var t={};t[e]=i,u.upload(t)},pushFile:function(){return u.files=u.files||{},layui.each(u.chooseFiles,function(e,i){u.files[e]=i}),u.files},resetFile:function(e,i,t){i=new File([i],t);u.files=u.files||{},u.files[e]=i},getChooseFiles:function(){return u.chooseFiles}},x={file:"\u6587\u4ef6",images:"\u56fe\u7247",video:"\u89c6\u9891",audio:"\u97f3\u9891"}[f.accept]||"\u6587\u4ef6",v=0===v.length?l.value.match(/[^\/\\]+\..+/g)||[]:v;if(0!==v.length){switch(f.accept){case"file":layui.each(v,function(e,i){if(g&&!RegExp(".\\.("+g+")$","i").test(escape(i)))return t=!0});break;case"video":layui.each(v,function(e,i){if(!RegExp(".\\.("+(g||"avi|mp4|wma|rmvb|rm|flash|3gp|flv")+")$","i").test(escape(i)))return t=!0});break;case"audio":layui.each(v,function(e,i){if(!RegExp(".\\.("+(g||"mp3|wav|mid")+")$","i").test(escape(i)))return t=!0});break;default:layui.each(v,function(e,i){if(!RegExp(".\\.("+(g||"jpg|png|gif|bmp|jpeg|svg|webp")+")$","i").test(escape(i)))return t=!0})}if(t)return u.msg(c["check-error"]||"\u9009\u62e9\u7684"+x+"\u4e2d\u5305\u542b\u4e0d\u652f\u6301\u7684\u683c\u5f0f"),l.value="";if("choose"!==i&&!f.auto||(f.choose&&f.choose(y),"choose"!==i)){if(u.fileLength=(o=0,x=s(),layui.each(x,function(){o++}),o),f.number&&u.fileLength>f.number)return u.msg("function"==typeof c["limit-number"]?c["limit-number"](f,u.fileLength):"\u540c\u65f6\u6700\u591a\u53ea\u80fd\u4e0a\u4f20: "+f.number+" \u4e2a\u6587\u4ef6
      \u60a8\u5f53\u524d\u5df2\u7ecf\u9009\u62e9\u4e86: "+u.fileLength+" \u4e2a\u6587\u4ef6");if(01024*f.size&&(i=1<=(i=f.size/1024)?i.toFixed(2)+"MB":f.size+"KB",l.value="",a=i)}),a)return u.msg("function"==typeof c["limit-size"]?c["limit-size"](f,a):"\u6587\u4ef6\u5927\u5c0f\u4e0d\u80fd\u8d85\u8fc7 "+a);r=function(){if(F.ie)return(9'+e+"")},l=function(t){var n=!0;return layui.each(o.files,function(e,i){if(!(n=!(i.name===t.name)))return!0}),n},u=function(e){var t=function(e){e.ext=e.name.substr(e.name.lastIndexOf(".")+1).toLowerCase(),e.sizes=w.util.parseSize(e.size)};return e instanceof FileList?layui.each(e,function(e,i){t(i)}):t(e),e},f=function(e){var t;return(e=e||[]).length?o.files?(t=[],layui.each(e,function(e,i){l(i)&&t.push(u(i))}),t):u(e):[]};n.elem.off("upload.start").on("upload.start",function(){var e=b(this);o.config.item=e,o.elemFile[0].click()}),F.ie&&F.ie<10||n.elem.off("upload.over").on("upload.over",function(){b(this).attr("lay-over","")}).off("upload.leave").on("upload.leave",function(){b(this).removeAttr("lay-over")}).off("upload.drop").on("upload.drop",function(e,i){var t=b(this),i=f(i.originalEvent.dataTransfer.files);t.removeAttr("lay-over"),a(i),n.auto?o.upload():r(i)}),o.elemFile.on("change",function(){var e=f(this.files);0!==e.length&&(a(e),n.auto?o.upload():r(e))}),n.bindAction.off("upload.action").on("upload.action",function(){o.upload()}),n.elem.data(c)||(n.elem.on("click",function(){o.isFile()||b(this).trigger("upload.start")}),n.drag&&n.elem.on("dragover",function(e){e.preventDefault(),b(this).trigger("upload.over")}).on("dragleave",function(e){b(this).trigger("upload.leave")}).on("drop",function(e){e.preventDefault(),b(this).trigger("upload.drop",e)}),n.bindAction.on("click",function(){b(this).trigger("upload.action")}),n.elem.data(c,n.id))},w.util={parseSize:function(e,i){var t,n;return i=i||2,null!=e&&e?(t="string"==typeof e?parseFloat(e):e,n=Math.floor(Math.log(t)/Math.log(1024)),(e=(e=t/Math.pow(1024,n))%1==0?e:parseFloat(e.toFixed(i)))+["Bytes","Kb","Mb","Gb","Tb","Pb","Eb","Zb","Yb"][n]):"0"},promiseLikeResolve:function(e){var i=b.Deferred();return e&&"function"==typeof e.then?e.then(i.resolve,i.reject):i.resolve(e),i.promise()}},a.that={},a.getThis=function(e){var i=a.that[e];return i||hint.error(e?t+" instance with ID '"+e+"' not found":"ID argument required"),i},w.render=function(e){e=new D(e);return a.call(e)},e(t,w)});layui.define(["lay","layer","util"],function(e){"use strict";var w=layui.$,h=layui.layer,T=layui.util,l=layui.hint(),N=(layui.device(),"form"),u=".layui-form",$="layui-this",_="layui-hide",F="layui-disabled",t=function(){this.config={verify:{required:function(e){if(!/[\S]+/.test(e))return"\u5fc5\u586b\u9879\u4e0d\u80fd\u4e3a\u7a7a"},phone:function(e){if(e&&!/^1\d{10}$/.test(e))return"\u624b\u673a\u53f7\u683c\u5f0f\u4e0d\u6b63\u786e"},email:function(e){if(e&&!/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(e))return"\u90ae\u7bb1\u683c\u5f0f\u4e0d\u6b63\u786e"},url:function(e){if(e&&!/^(#|(http(s?)):\/\/|\/\/)[^\s]+\.[^\s]+$/.test(e))return"\u94fe\u63a5\u683c\u5f0f\u4e0d\u6b63\u786e"},number:function(e){if(e&&isNaN(e))return"\u53ea\u80fd\u586b\u5199\u6570\u5b57"},date:function(e){if(e&&!/^(\d{4})[-\/](\d{1}|0\d{1}|1[0-2])([-\/](\d{1}|0\d{1}|[1-2][0-9]|3[0-1]))*$/.test(e))return"\u65e5\u671f\u683c\u5f0f\u4e0d\u6b63\u786e"},identity:function(e){if(e&&!/(^\d{15}$)|(^\d{17}(x|X|\d)$)/.test(e))return"\u8eab\u4efd\u8bc1\u53f7\u683c\u5f0f\u4e0d\u6b63\u786e"}},autocomplete:null}},i=(t.prototype.set=function(e){return w.extend(!0,this.config,e),this},t.prototype.verify=function(e){return w.extend(!0,this.config.verify,e),this},t.prototype.getFormElem=function(e){return w(u+(e?'[lay-filter="'+e+'"]':""))},t.prototype.on=function(e,t){return layui.onevent.call(this,N,e,t)},t.prototype.val=function(e,i){return this.getFormElem(e).each(function(e,t){var a=w(this);layui.each(i,function(e,t){var i,e=a.find('[name="'+e+'"]');e[0]&&("checkbox"===(i=e[0].type)?e[0].checked=t:"radio"===i?e.each(function(){this.checked=this.value==t+""}):e.val(t))})}),r.render(null,e),this.getValue(e)},t.prototype.getValue=function(e,t){t=t||this.getFormElem(e);var a={},n={},e=t.find("input,select,textarea");return layui.each(e,function(e,t){var i;w(this);t.name=(t.name||"").replace(/^\s*|\s*&/,""),t.name&&(/^.*\[\]$/.test(t.name)&&(i=t.name.match(/^(.*)\[\]$/g)[0],a[i]=0|a[i],i=t.name.replace(/^(.*)\[\]$/,"$1["+a[i]+++"]")),/^(checkbox|radio)$/.test(t.type)&&!t.checked||(n[i||t.name]=t.value))}),n},t.prototype.render=function(e,t){var i=this.config,a=w(u+(t?'[lay-filter="'+t+'"]':"")),n={input:function(e){var e=e||a.find("input,textarea"),t=(i.autocomplete&&e.attr("autocomplete",i.autocomplete),function(e,t){var i=e.val(),a=Number(i),n=Number(e.attr("step"))||1,l=Number(e.attr("min")),r=Number(e.attr("max")),s=Number(e.attr("lay-precision")),o="click"!==t&&""===i,c="init"===t;isNaN(a)||("click"===t&&(a=!!w(this).index()?a-n:a+n),t=function(e){return((e.toString().match(/\.(\d+$)/)||[])[1]||"").length},s=0<=s?s:Math.max(t(n),t(i)),o||(c||r<=(a=a<=l?l:a)&&(a=r),0===s?a=parseInt(a):0'),e=layui.isArray(i.value)?i.value:[i.value],e=w((a=[],layui.each(e,function(e,t){a.push('')}),a.join(""))),n=(t.append(e),i.split&&t.addClass("layui-input-split"),i.className&&t.addClass(i.className),r.next("."+u)),l=(n[0]&&n.remove(),r.parent().hasClass(o)||r.wrap('
      '),r.next("."+c));l[0]?((n=l.find("."+u))[0]&&n.remove(),l.prepend(t),r.css("padding-right",function(){return(r.closest(".layui-input-group")[0]?0:l.outerWidth())+t.outerWidth()})):(t.addClass(c),r.after(t)),"auto"===i.show&&d(t,r.val()),"function"==typeof i.init&&i.init.call(this,r,i),r.on("input propertychange",function(){var e=this.value;"auto"===i.show&&d(t,e)}),r.on("blur",function(){"function"==typeof i.blur&&i.blur.call(this,r,i)}),e.on("click",function(){var e=r.attr("lay-filter");w(this).hasClass(F)||("function"==typeof i.click&&i.click.call(this,r,i),layui.event.call(this,N,"input-affix("+e+")",{elem:r[0],affix:s,options:i}))})},f={eye:{value:"eye-invisible",click:function(e,t){var i="LAY_FORM_INPUT_AFFIX_SHOW",a=e.data(i);e.attr("type",a?"password":"text").data(i,!a),n({value:a?"eye-invisible":"eye"})}},clear:{value:"clear",click:function(e){e.val("").focus(),d(w(this).parent(),null)},show:"auto",disabled:e},number:{value:["up","down"],split:!0,className:"layui-input-number",disabled:r.is("[disabled]"),init:function(e){t.call(this,e,"init")},click:function(e){t.call(this,e,"click")},blur:function(e){t.call(this,e,"blur")}}};n()})},select:function(e){var v,u="\u8bf7\u9009\u62e9",m="layui-form-select",g="layui-select-title",b="layui-select-none",x="layui-select-create-option",k="",e=e||a.find("select"),C=function(e,t){w(e.target).parent().hasClass(g)&&!t||((e=w("."+m)).removeClass(m+"ed "+m+"up"),e.hasClass("layui-select-creatable")&&e.children("dl").children("."+x).remove(),v&&k&&v.val(k)),v=null},d=function(n,e,t,c){var u,a,i,l,r,s,o=w(this),d=n.find("."+g),f=d.find("input"),h=n.find("dl"),y=(h.children("dd"),h.children("dt")),p=this.selectedIndex;e||(u=o.attr("lay-search"),a=!(!lay.ie||"10"!==lay.ie&&"11"!==lay.ie||!f.attr("placeholder")),i=function(){var e=n.offset().top+n.outerHeight()+5-A.scrollTop(),t=h.outerHeight(),i=h.children("dd");p=o[0].selectedIndex,n.addClass(m+"ed"),i.removeClass(_),y.removeClass(_),i.removeClass($),0<=p&&i.eq(p).addClass($),e+t>A.height()&&t<=e&&n.addClass(m+"up"),r(),a&&h.off("mousedown.select.ieph").on("mousedown.select.ieph",function(){f[0].__ieph=!0,setTimeout(function(){f[0].__ieph=!1},60)})},l=function(e){n.removeClass(m+"ed "+m+"up"),f.blur(),c&&h.children("."+x).remove(),e||s(f.val(),function(e){var t=o[0].selectedIndex;e&&(k=w(o[0].options[t]).html(),0===t&&k===f.attr("placeholder")&&(k=""),f.val(k||""))})},r=function(){var e,t,i=h.children("dd."+$);i[0]&&(e=i.position().top,t=h.height(),i=i.height(),t").addClass(x).attr("lay-value",n).html(T.escape(n)),a=(i=h.children().eq(0)).hasClass("layui-select-tips"),i[a?"after":"before"](t)):e?h.find("."+b)[0]||h.append('

      \u65e0\u5339\u914d\u9879

      '):h.find("."+b).remove()},"keyup"),""===n&&(o.val(""),h.find("."+$).removeClass($),(o[0].options[0]||{}).value||h.children("dd:eq(0)").addClass($),h.find("."+b).remove(),c)&&h.children("."+x).remove(),void r()))},50)).on("blur",function(e){var t=o[0].selectedIndex;v=f,k=w(o[0].options[t]).text(),0===t&&k===f.attr("placeholder")&&(k=""),setTimeout(function(){s(f.val(),function(e){k||f.val("")},"blur")},200)}),h.on("click","dd",function(){var e,t=w(this),i=t.attr("lay-value"),a=o.attr("lay-filter");return t.hasClass(F)||(t.hasClass("layui-select-tips")?f.val(""):(f.val(t.text()),t.addClass($)),c&&t.hasClass(x)&&(h.append(t.removeClass(x)),e=w("
      "].join(""));i.after(l),function(a,n){var l=w(this);a.on("click",function(){var e=w(this),t=l.attr("lay-filter"),e=e.next("*[lay-checkbox]")[0]?e.next().html():l.attr("title")||"",i=l.attr("lay-skin")||"primary",e="switch"===i?e.split("|"):[e];l[0].disabled||(l[0].indeterminate&&(l[0].indeterminate=!1,a.find("."+c.SUBTRA).removeClass(c.SUBTRA).addClass("layui-icon-ok")),l[0].checked?(l[0].checked=!1,a.removeClass(n[1]),"switch"===i&&a.children("div").html(e[1])):(l[0].checked=!0,a.addClass(n[1]),"switch"===i&&a.children("div").html(e[0])),layui.event.call(l[0],N,n[2]+"("+t+")",{elem:l[0],value:l[0].value,othis:a}))})}.call(this,l,r)})},radio:function(e){var o="layui-form-radio",c=["layui-icon-radio","layui-icon-circle"],e=e||a.find("input[type=radio]");e.each(function(e,t){var i=w(this),a=i.next("."+o),n=this.disabled,l=i.attr("lay-skin");if("string"==typeof i.attr("lay-ignore"))return i.show();a[0]&&a.remove();var a=T.escape(t.title||""),r=[],s=(i.next("[lay-radio]")[0]&&(a=(s=i.next()).html()||"",1",'',"
      "+a+"
      ","
      "].join("")));i.after(s),function(a){var n=w(this),l="layui-anim-scaleSpring";a.on("click",function(){var e=n[0].name,t=n.parents(u),i=n.attr("lay-filter"),e=t.find("input[name="+e.replace(/(\.|#|\[|\])/g,"\\$1")+"]");n[0].disabled||(layui.each(e,function(){var e=w(this).next("."+o);this.checked=!1,e.removeClass(o+"ed"),e.children(".layui-icon").removeClass(l+" "+c[0]).addClass(c[1])}),n[0].checked=!0,a.addClass(o+"ed"),a.children(".layui-icon").addClass(l+" "+c[0]),layui.event.call(n[0],N,"radio("+i+")",{elem:n[0],value:n[0].value,othis:a}))})}.call(this,s)})}},t=function(){layui.each(n,function(e,t){t()})};return"object"===layui.type(e)?w(e).is(u)?(a=w(e),t()):e.each(function(e,t){var i=w(t);i.closest(u).length&&("SELECT"===t.tagName?n.select(i):"INPUT"===t.tagName&&("checkbox"===(t=t.type)||"radio"===t?n[t](i):n.input(i)))}):e?n[e]?n[e]():l.error('\u4e0d\u652f\u6301\u7684 "'+e+'" \u8868\u5355\u6e32\u67d3'):t(),this},t.prototype.validate=function(e){var u,d=this.config.verify,f="layui-form-danger";return!(e=w(e))[0]||(e.attr("lay-verify")!==undefined||!1!==this.validate(e.find("*[lay-verify]")))&&(layui.each(e,function(e,r){var s=w(this),t=(s.attr("lay-verify")||"").split("|"),o=s.attr("lay-vertype"),c=w.trim(s.val());if(s.removeClass(f),layui.each(t,function(e,t){var i="",a=d[t];if(a){var n="function"==typeof a?i=a(c,r):!a[0].test(c),l="select"===r.tagName.toLowerCase()||/^(checkbox|radio)$/.test(r.type),i=i||a[1];if("required"===t&&(i=s.attr("lay-reqtext")||i),n)return"tips"===o?h.tips(i,"string"!=typeof s.attr("lay-ignore")&&l?s.next():s,{tips:1}):"alert"===o?h.alert(i,{title:"\u63d0\u793a",shadeClose:!0}):/\b(string|number)\b/.test(typeof i)&&h.msg(i,{icon:5,shift:6}),setTimeout(function(){(l?s.next().find("input"):r).focus()},7),s.addClass(f),u=!0}}),u)return u}),!u)},t.prototype.submit=function(e,t){var i={},a=w(this),e="string"==typeof e?e:a.attr("lay-filter"),n=this.getFormElem?this.getFormElem(e):a.parents(u).eq(0),l=n.find("*[lay-verify]");return!!r.validate(l)&&(i=r.getValue(null,n),l={elem:this.getFormElem?window.event&&window.event.target:this,form:(this.getFormElem?n:a.parents("form"))[0],field:i},"function"==typeof t&&t(l),layui.event.call(this,N,"submit("+e+")",l))}),r=new t,t=w(document),A=w(window);w(function(){r.render()}),t.on("reset",u,function(){var e=w(this).attr("lay-filter");setTimeout(function(){r.render(null,e)},50)}),t.on("submit",u,i).on("click","*[lay-submit]",i),e(N,r)});layui.define(["lay","laytpl","laypage","form","util"],function(n){"use strict";var f=layui.$,d=layui.lay,m=layui.laytpl,O=layui.laypage,p=layui.layer,v=layui.form,g=layui.util,b=layui.hint(),x=layui.device(),k={config:{checkName:"LAY_CHECKED",indexName:"LAY_INDEX",numbersName:"LAY_NUM",disabledName:"LAY_DISABLED"},cache:{},index:layui.table?layui.table.index+1e4:0,set:function(e){return this.config=f.extend({},this.config,e),this},on:function(e,t){return layui.onevent.call(this,N,e,t)}},w=function(){var a=this,e=a.config,i=e.id||e.index;return{config:e,reload:function(e,t){a.reload.call(a,e,t)},reloadData:function(e,t){k.reloadData(i,e,t)},setColsWidth:function(){a.setColsWidth.call(a)},resize:function(){a.resize.call(a)}}},C=function(e){var t=w.that[e];return t||b.error(e?"The table instance with ID '"+e+"' not found":"ID argument required"),t||null},l=function(e){var t=w.config[e];return t||b.error(e?"The table instance with ID '"+e+"' not found":"ID argument required"),t||null},T=function(e){var t=this.config||{},a=(e=e||{}).item3,i=e.content;"numbers"===a.type&&(i=e.tplData[k.config.numbersName]);("escape"in a?a:t).escape&&(i=g.escape(i));t=e.text&&a.exportTemplet||a.templet||a.toolbar;return t&&(i="function"==typeof t?t.call(a,e.tplData,e.obj):m(function(e){try{return d(e).html()}catch(t){return e}}(t)||String(i)).render(f.extend({LAY_COL:a},e.tplData))),e.text?f("
      "+i+"
      ").text():i},N="table",R="lay-"+N+"-id",t=".layui-table",D="layui-hide",y="layui-hide-v",h="layui-none",L="layui-table-view",o=".layui-table-header",E=".layui-table-body",u=".layui-table-fixed-r",P=".layui-table-pageview",A=".layui-table-sort",_="layui-table-checked",M="layui-table-edit",W="layui-table-hover",I="laytable-cell-group",H="layui-table-col-special",j="layui-table-tool-panel",S="layui-table-expanded",F="LAY_TABLE_MOVE_DICT",e=function(e){return['',"","{{# layui.each(d.data.cols, function(i1, item1){ }}","","{{# layui.each(item1, function(i2, item2){ }}",'{{# if(item2.fixed && item2.fixed !== "right"){ left = true; } }}','{{# if(item2.fixed === "right"){ right = true; } }}',(e=e||{}).fixed&&"right"!==e.fixed?'{{# if(item2.fixed && item2.fixed !== "right"){ }}':"right"===e.fixed?'{{# if(item2.fixed === "right"){ }}':"","{{# var isSort = !(item2.colGroup) && item2.sort; }}",'",e.fixed?"{{# }; }}":"","{{# }); }}","","{{# }); }}","","
      ','
      ','{{# if(item2.type === "checkbox"){ }}','',"{{# } else { }}",'{{-item2.title||""}}',"{{# if(isSort){ }}",'',"{{# } }}","{{# } }}","
      ","
      "].join("")},a=['',"","
      "].join(""),s=[,"{{# if(d.data.toolbar){ }}",'
      ','
      ','
      ',"
      ","{{# } }}",'
      ',"{{# if(d.data.loading){ }}",'
      ','
      ','{{# if(typeof d.data.loading === "string"){ }}',"{{- d.data.loading}}","{{# } else{ }}",'',"{{# } }}","
      ","
      ","{{# } }}","{{# var left, right; }}",'
      ',e(),"
      ",'
      ',a,"
      ","{{# if(left){ }}",'
      ','
      ',e({fixed:!0}),"
      ",'
      ',a,"
      ","
      ","{{# }; }}","{{# if(right){ }}",'
      ','
      ',e({fixed:"right"}),'
      ',"
      ",'
      ',a,"
      ","
      ","{{# }; }}","
      ","{{# if(d.data.totalRow){ }}",'
      ','','',"
      ","
      ","{{# } }}",'
      ','
      ',"
      "].join(""),r=f(window),z=f(document),i=function(e){this.index=++k.index,this.config=f.extend({},this.config,k.config,e),this.render()},c=(i.prototype.config={limit:10,loading:!0,escape:!0,cellMinWidth:60,cellMaxWidth:Number.MAX_VALUE,editTrigger:"click",defaultToolbar:["filter","exports","print"],defaultContextmenu:!0,autoSort:!0,text:{none:"\u65e0\u6570\u636e"},cols:[]},i.prototype.render=function(e){var t=this,a=t.config,i=(a.elem=f(a.elem),a.where=a.where||{},a.id="id"in a?a.id:a.elem.attr("id")||t.index);if(w.that[i]=t,(w.config[i]=a).request=f.extend({pageName:"page",limitName:"limit"},a.request),a.response=f.extend({statusName:"code",statusCode:0,msgName:"msg",dataName:"data",totalRowName:"totalRow",countName:"count"},a.response),null!==a.page&&"object"==typeof a.page&&(a.limit=a.page.limit||a.limit,a.limits=a.page.limits||a.limits,t.page=a.page.curr=a.page.curr||1,delete a.page.elem,delete a.page.jump),!a.elem[0])return t;if(a.elem.attr("lay-filter")||a.elem.attr("lay-filter",a.id),"reloadData"===e)return t.pullData(t.page,{type:"reloadData"});a.index=t.index,t.key=a.id||a.index,t.setInit(),a.height&&/^full-.+$/.test(a.height)?(t.fullHeightGap=a.height.split("-")[1],a.height=r.height()-(parseFloat(t.fullHeightGap)||0)):a.height&&/^#\w+\S*-.+$/.test(a.height)?(i=a.height.split("-"),t.parentHeightGap=i.pop(),t.parentDiv=i.join("-"),a.height=f(t.parentDiv).height()-(parseFloat(t.parentHeightGap)||0)):"function"==typeof a.height&&(t.customHeightFunc=a.height,a.height=t.customHeightFunc());var l,e=a.elem,i=e.next("."+L),n=t.elem=f("
      ");n.addClass((l=[L,L+"-"+t.index,"layui-form","layui-border-box"],a.className&&l.push(a.className),l.join(" "))).attr(((l={"lay-filter":"LAY-TABLE-FORM-DF-"+t.index,style:(l=[],a.width&&l.push("width:"+a.width+"px;"),l.join(""))})[R]=a.id,l)).html(m(s,{open:"{{",close:"}}"}).render({data:a,index:t.index})),t.renderStyle(),i[0]&&(t.resizeObserver&&t.resizeObserver.unobserve(t.elem[0]),i.remove()),e.after(n),t.layTool=n.find(".layui-table-tool"),t.layBox=n.find(".layui-table-box"),t.layHeader=n.find(o),t.layMain=n.find(".layui-table-main"),t.layBody=n.find(E),t.layFixed=n.find(".layui-table-fixed"),t.layFixLeft=n.find(".layui-table-fixed-l"),t.layFixRight=n.find(u),t.layTotal=n.find(".layui-table-total"),t.layPage=n.find(".layui-table-page"),t.renderToolbar(),t.renderPagebar(),t.fullSize(),t.pullData(t.page),t.events()},i.prototype.initOpts=function(e){this.config;e.checkbox&&(e.type="checkbox"),e.space&&(e.type="space"),e.type||(e.type="normal"),"normal"!==e.type&&(e.unresize=!0,e.width=e.width||{checkbox:50,radio:50,space:30,numbers:60}[e.type])},i.prototype.setInit=function(e){var l,a,r=this,d=r.config;if(d.clientWidth=d.width||(l=function(e){var t,a=(e=e||d.elem.parent()).width();try{t="none"===e.css("display")}catch(i){}return!e[0]||a&&!t?a:l(e.parent())})(),"width"===e)return d.clientWidth;d.height=d.maxHeight||d.height,d.css&&-1===d.css.indexOf(L)&&(a=d.css.split("}"),layui.each(a,function(e,t){t&&(a[e]="."+L+"-"+r.index+" "+t)}),d.css=a.join("}"));var c=function(a,e,i,l){var n,o;l?(l.key=[d.index,a,i].join("-"),l.colspan=l.colspan||0,l.rowspan=l.rowspan||0,r.initOpts(l),(n=a+(parseInt(l.rowspan)||1)) td:hover > .layui-table-cell{overflow: auto;}"].concat(x.ie?[".layui-table-edit{height: "+i+";}","td[data-edit]:hover:after{height: "+i+";}"]:[]),function(e,t){t&&o.push(a+" "+t)})),l.css&&o.push(l.css),d.style({target:this.elem[0],text:o.join(""),id:"DF-table-"+n})},i.prototype.renderToolbar=function(){var e=this.config,t=['
      ','
      ','
      '].join(""),a=this.layTool.find(".layui-table-tool-temp"),i=("default"===e.toolbar?a.html(t):"string"==typeof e.toolbar&&(t=f(e.toolbar).html()||"")&&a.html(m(t).render(e)),{filter:{title:"\u7b5b\u9009\u5217",layEvent:"LAYTABLE_COLS",icon:"layui-icon-cols"},exports:{title:"\u5bfc\u51fa",layEvent:"LAYTABLE_EXPORT",icon:"layui-icon-export"},print:{title:"\u6253\u5370",layEvent:"LAYTABLE_PRINT",icon:"layui-icon-print"}}),l=[];"object"==typeof e.defaultToolbar&&layui.each(e.defaultToolbar,function(e,t){t="string"==typeof t?i[t]:t;t&&l.push('
      ')}),this.layTool.find(".layui-table-tool-self").html(l.join(""))},i.prototype.renderPagebar=function(){var e,t=this.config,a=this.layPagebar=f('
      ');t.pagebar&&((e=f(t.pagebar).html()||"")&&a.append(m(e).render(t)),this.layPage.append(a))},i.prototype.setParentCol=function(e,t){var a=this.config,i=this.layHeader.find('th[data-key="'+t+'"]'),l=parseInt(i.attr("colspan"))||0;i[0]&&(t=t.split("-"),t=a.cols[t[1]][t[2]],e?l--:l++,i.attr("colspan",l),i[l?"removeClass":"addClass"](D),t.colspan2=l,t.hide=l<1,a=i.data("parentkey"))&&this.setParentCol(e,a)},i.prototype.setColsPatch=function(){var a=this,e=a.config;layui.each(e.cols,function(e,t){layui.each(t,function(e,t){t.hide&&a.setParentCol(t.hide,t.parentKey)})})},i.prototype.setGroupWidth=function(i){var e,l=this;l.config.cols.length<=1||((e=l.layHeader.find((i?"th[data-key="+i.data("parentkey")+"]>":"")+"."+I)).css("width",0),layui.each(e.get().reverse(),function(){var e=f(this),t=e.parent().data("key"),a=0;l.layHeader.eq(0).find("th[data-parentkey="+t+"]").width(function(e,t){f(this).hasClass(D)||0 tr:first-child > th:last-child")).data("field")&&e.prev()[0]?t(e.prev()):e})()).data("key"),n.cssRules(e,function(e){var t=e.style.width||a.outerWidth();e.style.width=parseFloat(t)+l+"px",0'+(e||"Error")+"");a[0]&&(t.layNone.remove(),a.remove()),t.layFixed.addClass(D),t.layMain.find("tbody").html(""),t.layMain.append(t.layNone=e),t.layTotal.addClass(y),t.layPage.find(P).addClass(y),k.cache[t.key]=[],t.syncCheckAll(),t.renderForm(),t.setColsWidth(),t.loading(!1)},i.prototype.page=1,i.prototype.pullData=function(a,t){var e,i,l=this,n=l.config,o=(n.HAS_SET_COLS_PATCH||l.setColsPatch(),n.HAS_SET_COLS_PATCH=!0,n.request),r=n.response,d=function(){"object"==typeof n.initSort&&l.sort({field:n.initSort.field,type:n.initSort.type,reloadType:t.type})},c=function(e,t){l.setColsWidth(),l.loading(!1),"function"==typeof n.done&&n.done(e,a,e[r.countName],t)};t=t||{},"function"==typeof n.before&&n.before(n),l.startTime=(new Date).getTime(),t.renderData?((e={})[r.dataName]=k.cache[l.key],e[r.countName]=n.url?"object"===layui.type(n.page)?n.page.count:e[r.dataName].length:n.data.length,"object"==typeof n.totalRow&&(e[r.totalRowName]=f.extend({},l.totalRow)),l.renderData({res:e,curr:a,count:e[r.countName],type:t.type,sort:!0}),c(e,"renderData")):n.url?(i={},n.page&&(i[o.pageName]=a,i[o.limitName]=n.limit),o=f.extend(i,n.where),n.contentType&&0==n.contentType.indexOf("application/json")&&(o=JSON.stringify(o)),l.loading(!0),f.ajax({type:n.method||"get",url:n.url,contentType:n.contentType,data:o,dataType:n.dataType||"json",jsonpCallback:n.jsonpCallback,headers:n.headers||{},complete:"function"==typeof n.complete?n.complete:undefined,success:function(e){(e="function"==typeof n.parseData?n.parseData(e)||e:e)[r.statusName]!=r.statusCode?l.errorView(e[r.msgName]||'\u8fd4\u56de\u7684\u6570\u636e\u4e0d\u7b26\u5408\u89c4\u8303\uff0c\u6b63\u786e\u7684\u6210\u529f\u72b6\u6001\u7801\u5e94\u4e3a\uff1a"'+r.statusName+'": '+r.statusCode):(l.totalRow=e[r.totalRowName],l.renderData({res:e,curr:a,count:e[r.countName],type:t.type}),d(),n.time=(new Date).getTime()-l.startTime+" ms"),c(e,t.type)},error:function(e,t){l.errorView("\u8bf7\u6c42\u5f02\u5e38\uff0c\u9519\u8bef\u63d0\u793a\uff1a"+t),"function"==typeof n.error&&n.error(e,t)}})):"array"===layui.type(n.data)&&(e={},i=a*n.limit-n.limit,o=n.data.concat(),e[r.dataName]=n.page?o.splice(i,n.limit):o,e[r.countName]=n.data.length,"object"==typeof n.totalRow&&(e[r.totalRowName]=f.extend({},n.totalRow)),l.totalRow=e[r.totalRowName],l.renderData({res:e,curr:a,count:e[r.countName],type:t.type}),d(),c(e,t.type))},i.prototype.eachCols=function(e){return k.eachCols(null,e,this.config.cols),this},i.prototype.col=function(e){try{return e=e.split("-"),this.config.cols[e[1]][e[2]]||{}}catch(t){return b.error(t),{}}},i.prototype.getTrHtml=function(a,l,n,e){var s=this,u=s.config,y=e&&e.trs||[],h=e&&e.trs_fixed||[],p=e&&e.trs_fixed_r||[];return n=n||1,layui.each(a,function(e,o){var i=[],r=[],d=[],c=e+u.limit*(n-1)+1;if("object"!=typeof o){a[e]=o={LAY_KEY:o};try{k.cache[s.key][e]=o}catch(t){}}"array"===layui.type(o)&&0===o.length||(o[k.config.numbersName]=c,l||(o[k.config.indexName]=e),s.eachCols(function(e,l){var t,e=l.field||e,a=l.key,n=o[e];n!==undefined&&null!==n||(n=""),l.colGroup||(e=['','
      "+function(){var e,t=f.extend(!0,{LAY_COL:l},o),a=k.config.checkName,i=k.config.disabledName;switch(l.type){case"checkbox":return'';case"radio":return'';case"numbers":return c}return l.toolbar?m(f(l.toolbar).html()||"").render(t):T.call(s,{item3:l,content:n,tplData:t})}(),"
      "].join(""),i.push(e),l.fixed&&"right"!==l.fixed&&r.push(e),"right"===l.fixed&&d.push(e))}),e=['data-index="'+e+'"'],o[k.config.checkName]&&e.push('class="'+_+'"'),e=e.join(" "),y.push(""+i.join("")+""),h.push(""+r.join("")+""),p.push(""+d.join("")+""))}),{trs:y,trs_fixed:h,trs_fixed_r:p}},k.getTrHtml=function(e,t){e=C(e);return e.getTrHtml(t,null,e.page)},i.prototype.renderData=function(e){var a=this,i=a.config,t=e.res,l=e.curr,n=a.count=e.count,o=e.sort,r=t[i.response.dataName]||[],t=t[i.response.totalRowName],d=[],c=[],s=[],u=function(){if(!o&&a.sortKey)return a.sort({field:a.sortKey.field,type:a.sortKey.sort,pull:!0,reloadType:e.type});a.getTrHtml(r,o,l,{trs:d,trs_fixed:c,trs_fixed_r:s}),"fixed"===i.scrollPos&&"reloadData"===e.type||a.layBody.scrollTop(0),"reset"===i.scrollPos&&a.layBody.scrollLeft(0),a.layMain.find("."+h).remove(),a.layMain.find("tbody").html(d.join("")),a.layFixLeft.find("tbody").html(c.join("")),a.layFixRight.find("tbody").html(s.join("")),a.syncCheckAll(),a.renderForm(),a.fullSize(),a.haveInit?a.scrollPatch():setTimeout(function(){a.scrollPatch()},50),a.haveInit=!0,p.close(a.tipsIndex)};return k.cache[a.key]=r,a.layTotal[0==r.length?"addClass":"removeClass"](y),a.layPage[i.page||i.pagebar?"removeClass":"addClass"](D),a.layPage.find(P)[!i.page||0==n||0===r.length&&1==l?"addClass":"removeClass"](y),0===r.length?a.errorView(i.text.none):(a.layFixLeft.removeClass(D),o?u():(u(),a.renderTotal(r,t),a.layTotal&&a.layTotal.removeClass(D),void(i.page&&(i.page=f.extend({elem:"layui-table-page"+i.index,count:n,limit:i.limit,limits:i.limits||[10,20,30,40,50,60,70,80,90],groups:3,layout:["prev","page","next","skip","count","limit"],prev:'',next:'',jump:function(e,t){t||(a.page=e.curr,i.limit=e.limit,a.pullData(e.curr))}},i.page),i.page.count=n,O.render(i.page)))))},k.renderData=function(e){e=C(e);e&&e.pullData(e.page,{renderData:!0,type:"reloadData"})},i.prototype.renderTotal=function(e,o){var r,d=this,c=d.config,s={};c.totalRow&&(layui.each(e,function(e,i){"array"===layui.type(i)&&0===i.length||d.eachCols(function(e,t){var e=t.field||e,a=i[e];t.totalRow&&(s[e]=(s[e]||0)+(parseFloat(a)||0))})}),d.dataTotal=[],r=[],d.eachCols(function(e,t){var a,e=t.field||e,i=o&&o[t.field],l="totalRowDecimals"in t?t.totalRowDecimals:2,l=s[e]?parseFloat(s[e]||0).toFixed(l):"",l=(a=t.totalRowText||"",(n={LAY_COL:t})[e]=l,n=t.totalRow&&T.call(d,{item3:t,content:l,tplData:n})||a,i||n),n=(t.field&&d.dataTotal.push({field:t.field,total:f("
      "+l+"
      ").text()}),['','
      "+("string"==typeof(a=t.totalRow||c.totalRow)?m(a).render(f.extend({TOTAL_NUMS:i||s[e],TOTAL_ROW:o||{},LAY_COL:t},t)):l),"
      "].join(""));r.push(n)}),e=d.layTotal.find(".layui-table-patch"),d.layTotal.find("tbody").html(""+r.join("")+(e.length?e.get(0).outerHTML:"")+""))},i.prototype.getColElem=function(e,t){return e.eq(0).find(".laytable-cell-"+t+":eq(0)")},i.prototype.renderForm=function(e){this.config;var t=this.elem.attr("lay-filter");v.render(e,t)},i.prototype.renderFormByElem=function(a){layui.each(["input","select"],function(e,t){v.render(a.find(t))})},i.prototype.syncCheckAll=function(){var a,e=this,i=e.config,t=e.layHeader.find('input[name="layTableCheckbox"]'),l=k.checkStatus(e.key);t[0]&&(a=l.isAll,e.eachCols(function(e,t){"checkbox"===t.type&&(t[i.checkName]=a)}),t.prop({checked:l.isAll,indeterminate:!l.isAll&&l.data.length}),v.render(t))},i.prototype.setRowActive=function(e,t,a){this.config;e=this.layBody.find('tr[data-index="'+e+'"]');if(t=t||"layui-table-click",a)return e.removeClass(t);e.addClass(t),e.siblings("tr").removeClass(t)},i.prototype.setRowChecked=function(i){var e=this,l=e.config,n="all"===i.index,o="array"===layui.type(i.index),r=(t=e.layBody.find("tr"),n?t:t.filter(o?function(){var e=f(this).data("index");return-1!==i.index.indexOf(e)}:'[data-index="'+i.index+'"]')),t=(i=f.extend({type:"checkbox"},i),k.cache[e.key]),a="checked"in i,d=function(e){return"radio"===i.type||(a?i.checked:!e)},t=(layui.each(t,function(e,t){var a;"array"===layui.type(t)||t[l.disabledName]||(n||(o?-1!==i.index.indexOf(e):Number(i.index)===e)?(a=t[l.checkName]=d(t[l.checkName]),(e=r.filter('[data-index="'+e+'"]'))[a?"addClass":"removeClass"](_),"radio"===i.type&&e.siblings().removeClass(_)):"radio"===i.type&&delete t[l.checkName])}),r.find('input[lay-type="'+({radio:"layTableRadio",checkbox:"layTableCheckbox"}[i.type]||"checkbox")+'"]:not(:disabled)')),c=t.last(),s=c.closest(u);("radio"===i.type&&s.hasClass(D)?t.first():t).prop("checked",d(c.prop("checked"))),e.syncCheckAll(),e.renderForm(i.type)},i.prototype.sort=function(l){var e,t=this,a={},i=t.config,n=i.elem.attr("lay-filter"),o=k.cache[t.key];"string"==typeof(l=l||{}).field&&(r=l.field,t.layHeader.find("th").each(function(e,t){var a=f(this),i=a.data("field");if(i===l.field)return l.field=a,r=i,!1}));try{var r=r||l.field.data("field"),d=l.field.data("key");if(t.sortKey&&!l.pull&&r===t.sortKey.field&&l.type===t.sortKey.sort)return;var c=t.layHeader.find("th .laytable-cell-"+d).find(A);t.layHeader.find("th").find(A).removeAttr("lay-sort"),c.attr("lay-sort",l.type||null),t.layFixed.find("th")}catch(s){b.error("Table modules: sort field '"+r+"' not matched")}t.sortKey={field:r,sort:l.type},i.autoSort&&("asc"===l.type?e=layui.sort(o,r,null,!0):"desc"===l.type?e=layui.sort(o,r,!0,!0):(e=layui.sort(o,k.config.indexName,null,!0),delete t.sortKey,delete i.initSort)),a[i.response.dataName]=e||o,t.renderData({res:a,curr:t.page,count:t.count,sort:!0,type:l.reloadType}),l.fromEvent&&(i.initSort={field:r,type:l.type},layui.event.call(l.field,N,"sort("+n+")",f.extend({config:i},i.initSort)))},i.prototype.loading=function(e){this.config.loading&&this.layBox.find(".layui-table-init").toggleClass(y,!e)},i.prototype.cssRules=function(t,a){var e=this.elem.children("style")[0];d.getStyleRules(e,function(e){if(e.selectorText===".laytable-cell-"+t)return a(e),!0})},i.prototype.fullSize=function(){var e,a,i=this,t=i.config,l=t.height;i.fullHeightGap?(l=r.height()-i.fullHeightGap)<135&&(l=135):i.parentDiv&&i.parentHeightGap?(l=f(i.parentDiv).height()-i.parentHeightGap)<135&&(l=135):i.customHeightFunc&&(l=i.customHeightFunc())<135&&(l=135),1
      ')).find("div").css({width:a}),e.find("tr").append(t)):e.find(".layui-table-patch").remove()};n(e.layHeader),n(e.layTotal);n=e.layMain.height()-i;e.layFixed.find(E).css("height",t.height()>=n?n:"auto").scrollTop(e.layMain.scrollTop()),e.layFixRight[k.cache[e.key]&&k.cache[e.key].length&&0');a.html(t),s.height&&a.css("max-height",s.height-(c.layTool.outerHeight()||50)),i.find("."+j)[0]||i.append(a),c.renderForm(),a.on("click",function(e){layui.stope(e)}),e.done&&e.done(a,t)};switch(layui.stope(e),z.trigger("table.tool.panel.remove"),p.close(c.tipsIndex),t){case"LAYTABLE_COLS":n({list:(a=[],c.eachCols(function(e,t){t.field&&"normal"==t.type&&a.push('
    • "+(t.fieldTitle||t.title||t.field)+"").text())+'" lay-filter="LAY_TABLE_TOOL_COLS">
    • ')}),a.join("")),done:function(){v.on("checkbox(LAY_TABLE_TOOL_COLS)",function(e){var e=f(e.elem),t=this.checked,a=e.data("key"),i=c.col(a),l=i.hide,e=e.data("parentkey");i.key&&(i.hide=!t,c.elem.find('*[data-key="'+a+'"]')[t?"removeClass":"addClass"](D),l!=i.hide&&c.setParentCol(!t,e),c.resize(),layui.event.call(this,N,"colToggled("+u+")",{col:i,config:s}))})}});break;case"LAYTABLE_EXPORT":if(!l.length)return p.tips("\u5f53\u524d\u8868\u683c\u65e0\u6570\u636e",this,{tips:3});x.ie?p.tips("\u5bfc\u51fa\u529f\u80fd\u4e0d\u652f\u6301 IE\uff0c\u8bf7\u7528 Chrome \u7b49\u9ad8\u7ea7\u6d4f\u89c8\u5668\u5bfc\u51fa",this,{tips:3}):n({list:['
    • \u5bfc\u51fa csv \u683c\u5f0f\u6587\u4ef6
    • ','
    • \u5bfc\u51fa xls \u683c\u5f0f\u6587\u4ef6
    • '].join(""),done:function(e,t){t.on("click",function(){var e=f(this).data("type");k.exportFile.call(c,s.id,null,e)})}});break;case"LAYTABLE_PRINT":if(!l.length)return p.tips("\u5f53\u524d\u8868\u683c\u65e0\u6570\u636e",this,{tips:3});var o=window.open("about:blank","_blank"),r=[""].join(""),d=f(c.layHeader.html());d.append(c.layMain.find("table").html()),d.append(c.layTotal.find("table").html()),d.find("th.layui-table-patch").remove(),d.find("thead>tr>th."+H).filter(function(e,t){return!f(t).children("."+I).length}).remove(),d.find("tbody>tr>td."+H).remove(),o.document.write(r+d.prop("outerHTML")),o.document.close(),layui.device("edg").edg?(o.onafterprint=o.close,o.print()):(o.print(),o.close())}layui.event.call(this,N,"toolbar("+u+")",f.extend({event:t,config:s},{}))}),c.layHeader.on("click","*[lay-event]",function(e){var t=f(this),a=t.attr("lay-event"),t=t.closest("th").data("key"),t=c.col(t);layui.event.call(this,N,"colTool("+u+")",f.extend({event:a,config:s,col:t},{}))}),c.layPagebar.on("click","*[lay-event]",function(e){var t=f(this).attr("lay-event");layui.event.call(this,N,"pagebar("+u+")",f.extend({event:t,config:s},{}))}),e.on("mousemove",function(e){var t=f(this),a=t.offset().left,e=e.clientX-a;t.data("unresize")||w.eventMoveElem||(r.allowResize=t.width()-e<=10,o.css("cursor",r.allowResize?"col-resize":""))}).on("mouseleave",function(){f(this);w.eventMoveElem||(r.allowResize=!1,o.css("cursor",""))}).on("mousedown",function(e){var t,a=f(this);r.allowResize&&(t=a.data("key"),e.preventDefault(),r.offset=[e.clientX,e.clientY],c.cssRules(t,function(e){var t=e.style.width||a.outerWidth();r.rule=e,r.ruleWidth=parseFloat(t),r.minWidth=a.data("minwidth")||s.cellMinWidth,r.maxWidth=a.data("maxwidth")||s.cellMaxWidth}),a.data(F,r),w.eventMoveElem=a)}),w.docEvent||z.on("mousemove",function(e){var t,a;w.eventMoveElem&&(t=w.eventMoveElem.data(F)||{},w.eventMoveElem.data("resizing",1),e.preventDefault(),t.rule)&&(e=t.ruleWidth+e.clientX-t.offset[0],a=w.eventMoveElem.closest("."+L).attr(R),a=C(a))&&((e=et.maxWidth&&(e=t.maxWidth),t.rule.style.width=e+"px",a.setGroupWidth(w.eventMoveElem),p.close(c.tipsIndex))}).on("mouseup",function(e){var t,a,i,l,n;w.eventMoveElem&&(i=(t=w.eventMoveElem).closest("."+L).attr(R),a=C(i))&&(i=t.data("key"),l=a.col(i),n=a.config.elem.attr("lay-filter"),r={},o.css("cursor",""),a.scrollPatch(),t.removeData(F),delete w.eventMoveElem,a.cssRules(i,function(e){l.width=parseFloat(e.style.width),layui.event.call(t[0],N,"colResized("+n+")",{col:l,config:a.config})}))}),w.docEvent=!0,e.on("click",function(e){var t=f(this),a=t.find(A),i=a.attr("lay-sort");if(!a[0]||1===t.data("resizing"))return t.removeData("resizing");c.sort({field:t,type:"asc"===i?"desc":"desc"===i?null:"asc",fromEvent:!0})}).find(A+" .layui-edge ").on("click",function(e){var t=f(this),a=t.index(),t=t.parents("th").eq(0).data("field");layui.stope(e),0===a?c.sort({field:t,type:"asc",fromEvent:!0}):c.sort({field:t,type:"desc",fromEvent:!0})}),c.commonMember=function(e){var a=f(this).parents("tr").eq(0).data("index"),t=c.layBody.find('tr[data-index="'+a+'"]'),i=(k.cache[c.key]||[])[a]||{},l={tr:t,config:s,data:k.clearCacheKey(i),dataCache:i,index:a,del:function(){k.cache[c.key][a]=[],t.remove(),c.scrollPatch()},update:function(e,t){c.updateRow({index:a,data:e=e||{},related:t},function(e,t){l.data[e]=t})},setRowChecked:function(e){c.setRowChecked(f.extend({index:a},e))}};return f.extend(l,e)}),a=(c.elem.on("click",'input[name="layTableCheckbox"]+',function(e){var t=f(this),a=t.closest("td"),t=t.prev(),i=(c.layBody.find('input[name="layTableCheckbox"]'),t.parents("tr").eq(0).data("index")),l=t[0].checked,n="layTableAllChoose"===t.attr("lay-filter");t[0].disabled||(n?c.setRowChecked({index:"all",checked:l}):(c.setRowChecked({index:i,checked:l}),layui.stope(e)),layui.event.call(t[0],N,"checkbox("+u+")",d.call(t[0],{checked:l,type:n?"all":"one",getCol:function(){return c.col(a.data("key"))}})))}),c.elem.on("click",'input[lay-type="layTableRadio"]+',function(e){var t=f(this),a=t.closest("td"),t=t.prev(),i=t[0].checked,l=t.parents("tr").eq(0).data("index");if(layui.stope(e),t[0].disabled)return!1;c.setRowChecked({type:"radio",index:l}),layui.event.call(t[0],N,"radio("+u+")",d.call(t[0],{checked:i,getCol:function(){return c.col(a.data("key"))}}))}),c.layBody.on("mouseenter","tr",function(){var e=f(this),t=e.index();e.data("off")||c.layBody.find("tr:eq("+t+")").addClass(W)}).on("mouseleave","tr",function(){var e=f(this),t=e.index();e.data("off")||c.layBody.find("tr:eq("+t+")").removeClass(W)}).on("click","tr",function(e){var t=[".layui-form-checkbox",".layui-form-switch",".layui-form-radio","[lay-unrow]"].join(",");f(e.target).is(t)||f(e.target).closest(t)[0]||a.call(this,"row")}).on("dblclick","tr",function(){a.call(this,"rowDouble")}).on("contextmenu","tr",function(e){s.defaultContextmenu||e.preventDefault(),a.call(this,"rowContextmenu")}),function(e){var t=f(this);t.data("off")||layui.event.call(this,N,e+"("+u+")",d.call(t.children("td")[0]))}),n=function(e,t){var a,i,l;(e=f(e)).data("off")||(l=e.data("field"),i=e.data("key"),i=c.col(i),a=e.closest("tr").data("index"),a=k.cache[c.key][a],e.children(y),(i="function"==typeof i.edit?i.edit(a):i.edit)&&((i=f("textarea"===i?'':''))[0].value=(l=e.data("content")||a[l])===undefined||null===l?"":l,e.find("."+M)[0]||e.append(i),i.focus(),t)&&layui.stope(t))},i=(c.layBody.on("change","."+M,function(){var e=f(this),t=e.parent(),a=this.value,i=e.parent().data("field"),e=e.closest("tr").data("index"),e=k.cache[c.key][e],l=d.call(t[0],{value:a,field:i,oldValue:e[i],td:t,reedit:function(){setTimeout(function(){n(l.td);var e={};e[i]=l.oldValue,l.update(e)})},getCol:function(){return c.col(t.data("key"))}}),e={};e[i]=a,l.update(e),layui.event.call(t[0],N,"edit("+u+")",l)}).on("blur","."+M,function(){f(this).remove()}),c.layBody.on(s.editTrigger,"td",function(e){n(this,e)}).on("mouseenter","td",function(){t.call(this)}).on("mouseleave","td",function(){t.call(this,"hide")}),c.layTotal.on("mouseenter","td",function(){t.call(this)}).on("mouseleave","td",function(){t.call(this,"hide")}),"layui-table-grid-down"),t=function(e){var t=f(this),a=t.children(y);t.data("off")||t.parent().hasClass(S)||(e?t.find(".layui-table-grid-down").remove():!(a.prop("scrollWidth")>a.prop("clientWidth")||0'))},l=function(e,t){var a=f(this),i=a.parent(),l=i.data("key"),n=c.col(l),o=i.parent().data("index"),r=i.children(y),i="layui-table-cell-c",d=f('');"tips"===(t=t||n.expandedMode||s.cellExpandedMode)?c.tipsIndex=p.tips(['
      ',r.html(),"
      ",''].join(""),r[0],{tips:[3,""],time:-1,anim:-1,maxWidth:x.ios||x.android?300:c.elem.width()/2,isOutAnim:!1,skin:"layui-table-tips",success:function(e,t){e.find(".layui-table-tips-c").on("click",function(){p.close(t)})}}):(c.elem.find("."+i).trigger("click"),c.cssRules(l,function(e){var t=e.style.width,a=n.expandedWidth||s.cellExpandedWidth;atr").each(function(i){n.cols[i]=[],f(this).children().each(function(e){var t=f(this),a=t.attr("lay-data"),a=d.options(this,{attr:a?"lay-data":null,errorText:r+(a||t.attr("lay-options"))}),t=f.extend({title:t.text(),colspan:parseInt(t.attr("colspan"))||1,rowspan:parseInt(t.attr("rowspan"))||1},a);n.cols[i].push(t)})}),e.find("tbody>tr")),t=k.render(n);!a.length||o.data||t.config.url||(l=0,k.eachCols(t.config.id,function(e,i){a.each(function(e){n.data[e]=n.data[e]||{};var t=f(this),a=i.field;n.data[e][a]=t.children("td").eq(l).html()}),l++}),t.reloadData({data:n.data}))}),this},w.that={},w.config={},function(a,i,e,l){var n,o;l.colGroup&&(n=0,a++,l.CHILD_COLS=[],o=e+(parseInt(l.rowspan)||1),layui.each(i[o],function(e,t){t.parentKey?t.parentKey===l.key&&(t.PARENT_COL_INDEX=a,l.CHILD_COLS.push(t),c(a,i,o,t)):t.PARENT_COL_INDEX||1<=n&&n==(l.colspan||1)||(t.PARENT_COL_INDEX=a,l.CHILD_COLS.push(t),n+=parseInt(1td').filter('[data-field="'+e+'"]')}}})).replace(/"/g,'""'),n.push(a='"'+a+'"')):t.field&&"normal"!==t.type&&0==i&&(d[t.field]=!0)}),r.push(n.join(","))}),c&&layui.each(c.dataTotal,function(e,t){d[t.field]||i.push('"'+(t.total||"")+'"')}),o.join(",")+"\r\n"+r.join("\r\n")+"\r\n"+i.join(","))),u.download=(a.title||n.title||"table_"+(n.index||""))+"."+l,document.body.appendChild(u),u.click(),document.body.removeChild(u)},k.getOptions=l,k.hideCol=function(e,l){var n=C(e);n&&("boolean"===layui.type(l)?n.eachCols(function(e,t){var a=t.key,i=n.col(a),t=t.parentKey;i.hide!=l&&(i=i.hide=l,n.elem.find('*[data-key="'+a+'"]')[i?"addClass":"removeClass"](D),n.setParentCol(i,t))}):(l=layui.isArray(l)?l:[l],layui.each(l,function(e,l){n.eachCols(function(e,t){var a,i;l.field===t.field&&(a=t.key,i=n.col(a),t=t.parentKey,"hide"in l)&&i.hide!=l.hide&&(i=i.hide=!!l.hide,n.elem.find('*[data-key="'+a+'"]')[i?"addClass":"removeClass"](D),n.setParentCol(i,t))})})),f("."+j).remove(),n.resize())},k.reload=function(e,t,a,i){if(l(e))return(e=C(e)).reload(t,a,i),w.call(e)},k.reloadData=function(){var a=f.extend([],arguments),i=(a[3]="reloadData",new RegExp("^("+["elem","id","cols","width","height","maxHeight","toolbar","defaultToolbar","className","css","pagebar"].join("|")+")$"));return layui.each(a[1],function(e,t){i.test(e)&&delete a[1][e]}),k.reload.apply(null,a)},k.render=function(e){e=new i(e);return w.call(e)},k.clearCacheKey=function(e){return delete(e=f.extend({},e))[k.config.checkName],delete e[k.config.indexName],delete e[k.config.numbersName],delete e[k.config.disabledName],e},f(function(){k.init()}),n(N,k)});layui.define(["table"],function(e){"use strict";var A=layui.$,x=layui.form,P=layui.table,y=layui.hint(),B={config:{},on:P.on,eachCols:P.eachCols,index:P.index,set:function(e){var t=this;return t.config=A.extend({},t.config,e),t},resize:P.resize,getOptions:P.getOptions,hideCol:P.hideCol,renderData:P.renderData},i=function(){var a=this,e=a.config,n=e.id||e.index;return{config:e,reload:function(e,t){a.reload.call(a,e,t)},reloadData:function(e,t){B.reloadData(n,e,t)}}},j=function(e){var t=i.that[e];return t||y.error(e?"The treeTable instance with ID '"+e+"' not found":"ID argument required"),t||null},F="lay-table-id",L="layui-hide",s=".layui-table-body",q=".layui-table-main",R=".layui-table-fixed-l",Y=".layui-table-fixed-r",l="layui-table-checked",h="layui-table-tree",z="LAY_DATA_INDEX",m="LAY_DATA_INDEX_HISTORY",f="LAY_PARENT_INDEX",b="LAY_CHECKBOX_HALF",H="LAY_EXPAND",X="LAY_HAS_EXPANDED",V="LAY_ASYNC_STATUS",n=["all","parent","children","none"],t=/<[^>]+?>/,p=["flexIconClose","flexIconOpen","iconClose","iconOpen","iconLeaf","icon"],a=function(e){var t=this;t.index=++B.index,t.config=A.extend(!0,{},t.config,B.config,e),t.init(),t.render()},g=function(n,i,e){var l=P.cache[n];layui.each(e||l,function(e,t){var a=t[z]||"";-1!==a.indexOf("-")&&(l[a]=t),t[i]&&g(n,i,t[i])})},d=function(d,a,e){var r=j(d),o=("reloadData"!==e&&(r.status={expand:{}}),A.extend(!0,{},r.getOptions(),a)),n=o.tree,c=n.customName.children,i=n.customName.id,l=(delete a.hasNumberCol,delete a.hasChecboxCol,delete a.hasRadioCol,P.eachCols(null,function(e,t){"numbers"===t.type?a.hasNumberCol=!0:"checkbox"===t.type?a.hasChecboxCol=!0:"radio"===t.type&&(a.hasRadioCol=!0)},o.cols),a.parseData),u=a.done;"reloadData"===e&&"fixed"===o.scrollPos&&(r.scrollTopCache=r.config.elem.next().find(s).scrollTop()),o.url?e&&(!l||l.mod)||(a.parseData=function(){var e=this,t=arguments,a=t[0],t=("function"===layui.type(l)&&(a=l.apply(e,t)||t[0]),e.response.dataName);return n.data.isSimpleData&&!n["async"].enable&&(a[t]=r.flatToTree(a[t])),N(a[t],function(e){e[H]=H in e?e[H]:e[i]!==undefined&&r.status.expand[e[i]]},c),e.autoSort&&e.initSort&&e.initSort.type&&layui.sort(a[t],e.initSort.field,"desc"===e.initSort.type,!0),r.initData(a[t]),a},a.parseData.mod=!0):a.data!==undefined&&(a.data=a.data||[],n.data.isSimpleData&&(a.data=r.flatToTree(a.data)),r.initData(a.data)),e&&(!u||u.mod)||(a.done=function(){var e,t=arguments,a=t[3],n="renderData"===a,i=(n||delete r.isExpandAll,this.elem.next()),l=(r.updateStatus(null,{LAY_HAS_EXPANDED:!1}),g(d,c),i.find('[name="layTableCheckbox"][lay-filter="layTableAllChoose"]'));if(l.length&&(e=B.checkStatus(d),l.prop({checked:e.isAll&&e.data.length,indeterminate:!e.isAll&&e.data.length})),!n&&o.autoSort&&o.initSort&&o.initSort.type&&B.sort(d),r.renderTreeTable(i),"reloadData"===a&&"fixed"===this.scrollPos&&i.find(s).scrollTop(r.scrollTopCache),"function"===layui.type(u))return u.apply(this,t)},a.done.mod=!0),a&&a.tree&&a.tree.view&&layui.each(p,function(e,t){a.tree.view[t]!==undefined&&(a.tree.view[t]=r.normalizedIcon(a.tree.view[t]))})};a.prototype.init=function(){var e=this.config,t=e.tree.data.cascade,t=(-1===n.indexOf(t)&&(e.tree.data.cascade="all"),P.render(A.extend({},e,{data:[],url:"",done:null}))),a=t.config.id;(i.that[a]=this).tableIns=t,d(a,e)},a.prototype.config={tree:{customName:{children:"children",isParent:"isParent",name:"name",id:"id",pid:"parentId",icon:"icon"},view:{indent:14,flexIconClose:'',flexIconOpen:'',showIcon:!0,icon:"",iconClose:'',iconOpen:'',iconLeaf:'',showFlexIconIfNotParent:!1,dblClickExpand:!0,expandAllDefault:!1},data:{isSimpleData:!1,rootPid:null,cascade:"all"},"async":{enable:!1,url:"",type:null,contentType:null,headers:null,where:null,autoParam:[]},callback:{beforeExpand:null,onExpand:null}}},a.prototype.normalizedIcon=function(e){return e?t.test(e)?e:'':""},a.prototype.getOptions=function(){return this.tableIns?P.getOptions(this.tableIns.config.id):this.config},a.prototype.flatToTree=function(e){var n,i,l,d,r,o,c,u,t=this.getOptions(),a=t.tree,s=a.customName,t=t.id;return e=e||P.cache[t],t=e,n=s.id,i=s.pid,l=s.children,d=a.data.rootPid,n=n||"id",i=i||"parentId",l=l||"children",c={},u=[],layui.each(t,function(e,t){r=n+t[n],o=n+t[i],c[r]||(c[r]={},c[r][l]=[]);var a={};a[l]=c[r][l],c[r]=A.extend({},t,a),((d?c[r][i]===d:!c[r][i])?u:(c[o]||(c[o]={},c[o][l]=[]),c[o][l])).push(c[r])}),u},a.prototype.treeToFlat=function(e,n,i){var l=this,d=l.getOptions().tree.customName,r=d.children,o=d.pid,c=[];return layui.each(e,function(e,t){var e=(i?i+"-":"")+e,a=A.extend({},t);a[o]=t[o]||n,c.push(a),c=c.concat(l.treeToFlat(t[r],t[d.id],e))}),c},a.prototype.getTreeNode=function(e){var t,a,n=this;return e?(a=(t=n.getOptions()).tree,t.id,a.customName,{data:e,dataIndex:e[z],getParentNode:function(){return n.getNodeByIndex(e[f])}}):y.error("\u627e\u4e0d\u5230\u8282\u70b9\u6570\u636e")},a.prototype.getNodeByIndex=function(t){var a,e,n=this,i=n.getNodeDataByIndex(t);return i?((e=n.getOptions()).tree.customName.parent,a=e.id,(e={data:i,dataIndex:i[z],getParentNode:function(){return n.getNodeByIndex(i[f])},update:function(e){return B.updateNode(a,t,e)},remove:function(){return B.removeNode(a,t)},expand:function(e){return B.expandNode(a,A.extend({},e,{index:t}))},setChecked:function(e){return B.setRowChecked(a,A.extend({},e,{index:t}))}}).dataIndex=t,e):y.error("\u627e\u4e0d\u5230\u8282\u70b9\u6570\u636e")},a.prototype.getNodeById=function(a){var e=this.getOptions(),n=e.tree.customName.id,i="",e=B.getData(e.id,!0);if(layui.each(e,function(e,t){if(t[n]===a)return i=t[z],!0}),i)return this.getNodeByIndex(i)},a.prototype.getNodeDataByIndex=function(e,t,a){var n=this.getOptions(),i=n.tree,n=n.id,n=P.cache[n],l=n[e];if("delete"!==a&&l)return A.extend(l,a),t?A.extend({},l):l;for(var d=n,r=String(e).split("-"),o=0,c=i.customName.children;o
      '),N=function(e){y[V]="success",y[s.children]=e,c.initData(y[s.children],y[z]),J(t,!0,!p&&n,i,l)},C=m.format,"function"===layui.type(C)?C(y,o,N):(I=A.extend({},m.where||o.where),C=m.autoParam,layui.each(C,function(e,t){t=t.split("=");I[t[0].trim()]=y[(t[1]||t[0]).trim()]}),(C=m.contentType||o.contentType)&&0==C.indexOf("application/json")&&(I=JSON.stringify(I)),O=m.method||o.method,D=m.dataType||o.dataType,T=m.jsonpCallback||o.jsonpCallback,_=m.headers||o.headers,k=m.parseData||o.parseData,w=m.response||o.response,A.ajax({type:O||"get",url:b,contentType:C,data:I,dataType:D||"json",jsonpCallback:T,headers:_||{},success:function(e){(e="function"==typeof k?k.call(o,e)||e:e)[w.statusName]!=w.statusCode?(y[V]="error",g.html('')):N(e[w.dataName])},error:function(e,t){y[V]="error","function"==typeof o.error&&o.error(e,t)}})),h;y[X]=!0,v.length&&(!o.initSort||o.url&&!o.autoSort||((m=o.initSort).type?layui.sort(v,m.field,"desc"===m.type,!0):layui.sort(v,P.config.indexName,null,!0)),c.initData(y[s.children],y[z]),O=P.getTrHtml(r,v,null,null,e),S={trs:A(O.trs.join("")),trs_fixed:A(O.trs_fixed.join("")),trs_fixed_r:A(O.trs_fixed_r.join(""))},E=(e.split("-").length-1||0)+1,layui.each(v,function(e,t){S.trs.eq(e).attr({"data-index":t[z],"lay-data-index":t[z],"data-level":E}).data("index",t[z]),S.trs_fixed.eq(e).attr({"data-index":t[z],"lay-data-index":t[z],"data-level":E}).data("index",t[z]),S.trs_fixed_r.eq(e).attr({"data-index":t[z],"lay-data-index":t[z],"data-level":E}).data("index",t[z])}),d.find(q).find('tbody tr[lay-data-index="'+e+'"]').after(S.trs),d.find(R).find('tbody tr[lay-data-index="'+e+'"]').after(S.trs_fixed),d.find(Y).find('tbody tr[lay-data-index="'+e+'"]').after(S.trs_fixed_r),c.renderTreeTable(S.trs,E),n)&&!p&&layui.each(v,function(e,t){J({dataIndex:t[z],trElem:d.find('tr[lay-data-index="'+t[z]+'"]').first(),tableViewElem:d,tableId:r,options:o},a,n,i,l)})}else c.isExpandAll=!1,(n&&!p?(layui.each(v,function(e,t){J({dataIndex:t[z],trElem:d.find('tr[lay-data-index="'+t[z]+'"]').first(),tableViewElem:d,tableId:r,options:o},a,n,i,l)}),d.find(v.map(function(e,t,a){return'tr[lay-data-index="'+e[z]+'"]'}).join(","))):(b=c.treeToFlat(v,y[s.id],e),d.find(b.map(function(e,t,a){return'tr[lay-data-index="'+e[z]+'"]'}).join(",")))).addClass(L);U("resize-"+r,function(){B.resize(r)},0)(),l&&"loading"!==y[V]&&(C=u.callback.onExpand,"function"===layui.type(C))&&C(r,y,x)}return h},v=(B.expandNode=function(e,t){var a,n,i,e=j(e);if(e)return a=(t=t||{}).index,n=t.expandFlag,i=t.inherit,t=t.callbackFlag,e=e.getOptions().elem.next(),J({trElem:e.find('tr[lay-data-index="'+a+'"]').first()},n,i,null,t)},B.expandAll=function(a,e){if("boolean"!==layui.type(e))return y.error("expandAll \u7684\u5c55\u5f00\u72b6\u6001\u53c2\u6570\u53ea\u63a5\u6536true/false");var t=j(a);if(t){t.isExpandAll=e;var n=t.getOptions(),i=n.tree,l=n.elem.next(),d=i.customName.isParent,r=i.customName.id,o=i.view.showFlexIconIfNotParent;if(e){e=B.getData(a,!0);if(i["async"].enable){var c=!0;if(layui.each(e,function(e,t){if(t[d]&&!t[V])return!(c=!1)}),!c)return void layui.each(B.getData(a),function(e,t){B.expandNode(a,{index:t[z],expandFlag:!0,inherit:!0})})}var u=!0;if(layui.each(e,function(e,t){if(t[d]&&!t[X])return!(u=!1)}),u)t.updateStatus(null,function(e){(e[d]||o)&&(e[H]=!0,e[r]!==undefined)&&(t.status.expand[e[r]]=!0)}),l.find('tbody tr[data-level!="0"]').removeClass(L),l.find(".layui-table-tree-flexIcon").html(i.view.flexIconOpen),i.view.showIcon&&l.find(".layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)").html(i.view.iconOpen);else{if(t.updateStatus(null,function(e){(e[d]||o)&&(e[H]=!0,e[X]=!0,e[r]!==undefined)&&(t.status.expand[e[r]]=!0)}),n.initSort&&n.initSort.type&&n.autoSort)return B.sort(a);var s,n=P.getTrHtml(a,e),f={trs:A(n.trs.join("")),trs_fixed:A(n.trs_fixed.join("")),trs_fixed_r:A(n.trs_fixed_r.join(""))};layui.each(e,function(e,t){var a=t[z].split("-").length-1;s={"data-index":t[z],"lay-data-index":t[z],"data-level":a},f.trs.eq(e).attr(s).data("index",t[z]),f.trs_fixed.eq(e).attr(s).data("index",t[z]),f.trs_fixed_r.eq(e).attr(s).data("index",t[z])}),layui.each(["main","fixed-l","fixed-r"],function(e,t){l.find(".layui-table-"+t+" tbody").html(f[["trs","trs_fixed","trs_fixed_r"][e]])}),t.renderTreeTable(l,0,!1)}}else t.updateStatus(null,function(e){(e[d]||o)&&(e[H]=!1,e[r]!==undefined)&&(t.status.expand[e[r]]=!1)}),l.find('.layui-table-box tbody tr[data-level!="0"]').addClass(L),l.find(".layui-table-tree-flexIcon").html(i.view.flexIconClose),i.view.showIcon&&l.find(".layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)").html(i.view.iconClose);B.resize(a)}},a.prototype.updateNodeIcon=function(e){var t=this.getOptions().tree||{},a=e.scopeEl,n=e.isExpand,e=e.isParent;a.find(".layui-table-tree-flexIcon").css("visibility",e||t.view.showFlexIconIfNotParent?"visible":"hidden").html(n?t.view.flexIconOpen:t.view.flexIconClose),t.view.showIcon&&(a=a.find(".layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom)"),n=e?n?t.view.iconOpen:t.view.iconClose:t.view.iconLeaf,a.toggleClass("layui-table-tree-iconLeaf",!e).html(n))},a.prototype.renderTreeTable=function(e,t,a){var l=this,n=l.getOptions(),d=n.elem.next(),i=(d.hasClass(h)||d.addClass(h),n.id),r=n.tree||{},o=(r.data,r.view||{}),c=r.customName||{},u=c.isParent,s=(d.attr("lay-filter"),l),f=((t=t||0)||(d.find(".layui-table-body tr:not([data-level])").attr("data-level",t),layui.each(P.cache[i],function(e,t){d.find('.layui-table-main tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t[z]),d.find('.layui-table-fixed-l tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t[z]),d.find('.layui-table-fixed-r tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t[z])})),null),y=c.name,p=o.indent||14;if(layui.each(e.find('td[data-field="'+y+'"]'),function(e,t){var a,n,i=(t=A(t)).closest("tr"),t=t.children(".layui-table-cell");t.hasClass("layui-table-tree-item")||(n=i.attr("lay-data-index"))&&(i=d.find('tr[lay-data-index="'+n+'"]'),(a=s.getNodeDataByIndex(n))[H]&&a[u]&&((f=f||{})[n]=!0),a[b]&&i.find('input[type="checkbox"][name="layTableCheckbox"]').prop("indeterminate",!0),n=t.html(),(t=i.find('td[data-field="'+y+'"]>div.layui-table-cell')).addClass("layui-table-tree-item"),t.html(['
      ',a[H]?o.flexIconOpen:o.flexIconClose,"
      ",o.showIcon?'
      '+(l.normalizedIcon(a[c.icon])||o.icon||(a[u]?a[H]?o.iconOpen:o.iconClose:o.iconLeaf)||"")+"
      ":"",n].join("")).find(".layui-table-tree-flexIcon").on("click",function(e){layui.stope(e),J({trElem:i},null,null,null,!0)}))}),!t&&r.view.expandAllDefault&&l.isExpandAll===undefined)return B.expandAll(i,!0);(!1!==a&&f?(layui.each(f,function(e,t){e=d.find('tr[lay-data-index="'+e+'"]');e.find(".layui-table-tree-flexIcon").html(o.flexIconOpen),J({trElem:e.first()},!0)}),U("renderTreeTable2-"+i,function(){x.render(A(".layui-table-tree["+F+'="'+i+'"]'))},0)):U("renderTreeTable-"+i,function(){n.hasNumberCol&&v(l),x.render(A(".layui-table-tree["+F+'="'+i+'"]'))},0))()},function(a){var e=a.getOptions(),t=e.elem.next(),n=0,i=t.find(".layui-table-main tbody tr"),l=t.find(".layui-table-fixed-l tbody tr"),d=t.find(".layui-table-fixed-r tbody tr");layui.each(a.treeToFlat(P.cache[e.id]),function(e,t){t.LAY_HIDE||(a.getNodeDataByIndex(t[z]).LAY_NUM=++n,i.eq(e).find(".laytable-cell-numbers").html(n),l.eq(e).find(".laytable-cell-numbers").html(n),d.eq(e).find(".laytable-cell-numbers").html(n))})}),N=(a.prototype.render=function(e){var t=this;t.tableIns=P["reloadData"===e?"reloadData":"reload"](t.tableIns.config.id,A.extend(!0,{},t.config)),t.config=t.tableIns.config},a.prototype.reload=function(e,t,a){var n=this;e=e||{},delete n.haveInit,layui.each(e,function(e,t){"array"===layui.type(t)&&delete n.config[e]}),d(n.getOptions().id,e,a||!0),n.config=A.extend(t,{},n.config,e),n.render(a)},B.reloadData=function(){var e=A.extend(!0,[],arguments);return e[3]="reloadData",B.reload.apply(null,e)},function(e,a,n,i){var l=[];return layui.each(e,function(e,t){"function"===layui.type(a)?a(t):A.extend(t,a),l.push(A.extend({},t)),i||(l=l.concat(N(t[n],a,n,i)))}),l}),o=(a.prototype.updateStatus=function(e,t,a){var n=this.getOptions(),i=n.tree;return e=e||P.cache[n.id],N(e,t,i.customName.children,a)},a.prototype.getTableData=function(){var e=this.getOptions();return P.cache[e.id]},B.updateStatus=function(e,t,a){var e=j(e),n=e.getOptions();return a=a||(n.url?P.cache[n.id]:n.data),e.updateStatus(a,t)},B.sort=function(e){var t,a,i,l,n,d=j(e);d&&(n=(t=d.getOptions()).tree,a=B.getData(e),i=n.customName.children,l=function(e,a,n){layui.sort(e,a,n,!0),layui.each(e,function(e,t){l(t[i]||[],a,n)})},t.autoSort)&&((n=t.initSort).type?l(a,n.field,"desc"===n.type):l(a,P.config.indexName,null),P.cache[e]=a,d.initData(a),B.renderData(e))},function(n){var t=n.config.id,i=j(t),a=n.data=B.getNodeDataByIndex(t,n.index),l=a[z],d=(n.dataIndex=l,n.update);n.update=function(){var e=arguments,t=(A.extend(i.getNodeDataByIndex(l),e[0]),d.apply(this,e)),a=n.config.tree.customName.name;return a in e[0]&&n.tr.find('td[data-field="'+a+'"]').children("div.layui-table-cell").removeClass("layui-table-tree-item"),i.renderTreeTable(n.tr,n.tr.attr("data-level"),!1),t},n.del=function(){B.removeNode(t,a)},n.setRowChecked=function(e){B.setRowChecked(t,{index:a,checked:e})}}),u=(B.updateNode=function(e,a,t){var n,i,l,d,r,o=j(e);o&&((d=o.getOptions()).tree,d=(n=d.elem.next()).find('tr[lay-data-index="'+a+'"]'),i=d.attr("data-index"),l=d.attr("data-level"),t)&&(d=o.getNodeDataByIndex(a,!1,t),r=P.getTrHtml(e,[d]),layui.each(["main","fixed-l","fixed-r"],function(e,t){n.find(".layui-table-"+t+' tbody tr[lay-data-index="'+a+'"]').replaceWith(A(r[["trs","trs_fixed","trs_fixed_r"][e]].join("")).attr({"data-index":i,"lay-data-index":a,"data-level":l}).data("index",i))}),o.renderTreeTable(n.find('tr[lay-data-index="'+a+'"]'),l))},B.removeNode=function(e,t){var a=j(e);if(a){var n,i=a.getOptions(),l=i.tree,d=l.customName.isParent,r=l.customName.children,o=i.elem.next(),c=[],u=P.cache[e],t=a.getNodeDataByIndex("string"===layui.type(t)?t:t[z],!1,"delete"),s=a.getNodeDataByIndex(t[f]),l=(a.updateCheckStatus(s),a.treeToFlat([t],t[l.customName.pid],t[f])),t=(layui.each(l,function(e,t){t=t[z];c.push('tr[lay-data-index="'+t+'"]'),-1!==t.indexOf("-")&&delete u[t]}),o.find(c.join(",")).remove(),a.initData());for(n in u)-1!==n.indexOf("-")&&n!==u[n][z]&&delete u[n];layui.each(a.treeToFlat(t),function(e,t){t[m]&&t[m]!==t[z]&&o.find('tr[lay-data-index="'+t[m]+'"]').attr({"data-index":t[z],"lay-data-index":t[z]}).data("index",t[z])}),layui.each(u,function(e,t){o.find('tr[data-level="0"][lay-data-index="'+t[z]+'"]').attr("data-index",e).data("index",e)}),i.hasNumberCol&&v(a),s&&(l=o.find('tr[lay-data-index="'+s[z]+'"]'),s[d]=!(!s[r]||!s[r].length),a.updateNodeIcon({scopeEl:l,isExpand:s[H],isParent:s[d]})),B.resize(e)}},B.addNodes=function(e,t){var a=j(e);if(a){var n=a.getOptions(),i=n.tree,l=n.elem.next(),d=P.config.checkName,r=(t=t||{}).parentIndex,o=t.index,c=t.data,t=t.focus,u=(r="number"===layui.type(r)?r.toString():r)?a.getNodeDataByIndex(r):null,o="number"===layui.type(o)?o:-1,c=A.extend(!0,[],layui.isArray(c)?c:[c]);layui.each(c,function(e,t){d in t||!u||(t[d]=u[d])}),a.getTableData();if(u){var s=i.customName.isParent,f=i.customName.children;u[s]=!0;var y=(y=u[f])?(p=y.splice(-1===o?y.length:o),u[f]=y.concat(c,p)):u[f]=c,f=(a.updateStatus(y,function(e){(e[s]||i.view.showFlexIconIfNotParent)&&(e[X]=!1)}),a.treeToFlat(y));l.find(f.map(function(e){return'tr[lay-data-index="'+e[z]+'"]'}).join(",")).remove(),a.initData(),u[X]=!1,u[V]="local",J({trElem:l.find('tr[lay-data-index="'+r+'"]')},!0)}else{var p=P.cache[e].splice(-1===o?P.cache[e].length:o);if(P.cache[e]=P.cache[e].concat(c,p),n.url||(n.page?(y=n.page,n.data.splice.apply(n.data,[y.limit*(y.curr-1),y.limit].concat(P.cache[e]))):n.data=P.cache[e]),a.initData(),l.find(".layui-none").length)return P.renderData(e),c;var x,f=P.getTrHtml(e,c),h={trs:A(f.trs.join("")),trs_fixed:A(f.trs_fixed.join("")),trs_fixed_r:A(f.trs_fixed_r.join(""))},r=(layui.each(c,function(e,t){x={"data-index":t[z],"lay-data-index":t[z],"data-level":"0"},h.trs.eq(e).attr(x).data("index",t[z]),h.trs_fixed.eq(e).attr(x).data("index",t[z]),h.trs_fixed_r.eq(e).attr(x).data("index",t[z])}),parseInt(c[0][z])-1),y=l.find(q),n=l.find(R),f=l.find(Y);-1==r?y.find('tr[data-level="0"][data-index="0"]')[0]?(y.find('tr[data-level="0"][data-index="0"]').before(h.trs),n.find('tr[data-level="0"][data-index="0"]').before(h.trs_fixed),f.find('tr[data-level="0"][data-index="0"]').before(h.trs_fixed_r)):(y.find("tbody").prepend(h.trs),n.find("tbody").prepend(h.trs_fixed),f.find("tbody").prepend(h.trs_fixed_r)):-1===o?(y.find("tbody").append(h.trs),n.find("tbody").append(h.trs_fixed),f.find("tbody").append(h.trs_fixed_r)):(r=p[0][m],y.find('tr[data-level="0"][data-index="'+r+'"]').before(h.trs),n.find('tr[data-level="0"][data-index="'+r+'"]').before(h.trs_fixed),f.find('tr[data-level="0"][data-index="'+r+'"]').before(h.trs_fixed_r)),layui.each(P.cache[e],function(e,t){l.find('tr[data-level="0"][lay-data-index="'+t[z]+'"]').attr("data-index",e).data("index",e)}),a.renderTreeTable(l.find(c.map(function(e,t,a){return'tr[lay-data-index="'+e[z]+'"]'}).join(",")))}return a.updateCheckStatus(u),u&&(o=l.find('tr[lay-data-index="'+u[z]+'"]'),a.updateNodeIcon({scopeEl:o,isExpand:u[H],isParent:u[s]})),B.resize(e),t&&l.find(q).find('tr[lay-data-index="'+c[0][z]+'"]').get(0).scrollIntoViewIfNeeded(),c}},B.checkStatus=function(e,n){var i,t,a,l=j(e);if(l)return l=l.getOptions().tree,i=P.config.checkName,t=B.getData(e,!0).filter(function(e,t,a){return e[i]||n&&e[b]}),a=!0,layui.each("all"===l.data.cascade?P.cache[e]:B.getData(e,!0),function(e,t){if(!t[i])return!(a=!1)}),{data:t,isAll:a}},B.on("sort",function(e){var e=e.config,t=e.elem.next(),e=e.id;t.hasClass(h)&&B.sort(e)}),B.on("row",function(e){e.config.elem.next().hasClass(h)&&o(e)}),B.on("rowDouble",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&(o(e),(t.tree||{}).view.dblClickExpand)&&J({trElem:e.tr.first()},null,null,null,!0)}),B.on("rowContextmenu",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&o(e)}),B.on("tool",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&o(e)}),B.on("edit",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&(o(e),e.field===t.tree.customName.name)&&((a={})[e.field]=e.value,e.update(a))}),B.on("radio",function(e){var t=e.config,a=t.elem.next(),t=t.id;a.hasClass(h)&&(a=j(t),o(e),u.call(a,e.tr,e.checked))}),a.prototype.setRowCheckedClass=function(e,t){var a=this.getOptions(),n=(e.data("index"),a.elem.next());e[t?"addClass":"removeClass"](l),e.each(function(){var e=A(this).data("index");n.find('.layui-table-fixed-r tbody tr[data-index="'+e+'"]')[t?"addClass":"removeClass"](l)})},a.prototype.updateCheckStatus=function(e,t){var a,n,i,l,d,r,o,c=this,u=c.getOptions();return!!u.hasChecboxCol&&(a=u.tree,n=u.id,i=u.elem.next(),l=P.config.checkName,"all"!==(d=a.data.cascade)&&"parent"!==d||!e||(d=c.updateParentCheckStatus(e,"boolean"===layui.type(t)?t:null),layui.each(d,function(e,t){var a=i.find('tr[lay-data-index="'+t[z]+'"] input[name="layTableCheckbox"]:not(:disabled)'),n=t[l];c.setRowCheckedClass(a.closest("tr"),n),x.render(a.prop({checked:n,indeterminate:t[b]}))})),o=!(r=!0),0<(e=(e="all"===a.data.cascade?P.cache[n]:B.getData(n,!0)).filter(function(e){return!e[u.disabledName]})).length?layui.each(e,function(e,t){if((t[l]||t[b])&&(o=!0),t[l]||(r=!1),o&&!r)return!0}):r=!1,o=o&&!r,x.render(i.find('input[name="layTableCheckbox"][lay-filter="layTableAllChoose"]').prop({checked:r,indeterminate:o})),r)},a.prototype.updateParentCheckStatus=function(a,n){var i,e=this.getOptions(),t=e.tree,e=e.id,l=P.config.checkName,t=t.customName.children,d=[];return!(a[b]=!1)===n?a[t].length?layui.each(a[t],function(e,t){if(!t[l])return n=!1,a[b]=!0}):n=!1:!1===n?layui.each(a[t],function(e,t){if(t[l]||t[b])return a[b]=!0}):(n=!1,i=0,layui.each(a[t],function(e,t){t[l]&&i++}),n=a[t].length?a[t].length===i:a[l],a[b]=!n&&0')),n=(e.tree(a),i.elem=p(i.elem));if(n[0]){if(e.key=i.id||e.index,e.elem=a,e.elemNone=p('
      '+i.text.none+"
      "),n.html(e.elem),0==e.elem.find(".layui-tree-set").length)return e.elem.append(e.elemNone);i.showCheckbox&&e.renderForm("checkbox"),e.elem.find(".layui-tree-set").each(function(){var e=p(this);e.parent(".layui-tree-pack")[0]||e.addClass("layui-tree-setHide"),!e.next()[0]&&e.parents(".layui-tree-pack").eq(1).hasClass("layui-tree-lineExtend")&&e.addClass(T),e.next()[0]||e.parents(".layui-tree-set").eq(0).next()[0]||e.addClass(T)}),e.events()}},l.prototype.renderForm=function(e){i.render(e,"LAY-tree-"+this.index)},l.prototype.tree=function(r,e){var d=this,s=d.config,o=s.customName,e=e||s.data;layui.each(e,function(e,i){var a,n,t=i[o.children]&&0"),c=p(['
      ','
      ','
      ',s.showLine?t?'':'':'',s.showCheckbox?'':"",s.isJump&&i.href?''+(i[o.title]||i.label||s.text.defaultNodeName)+"":''+(i[o.title]||i.label||s.text.defaultNodeName)+"","
      ",s.edit?(a={add:'',update:'',del:''},n=['
      '],!0===s.edit&&(s.edit=["update","del"]),"object"==typeof s.edit?(layui.each(s.edit,function(e,i){n.push(a[i]||"")}),n.join("")+"
      "):void 0):"","
      "].join(""));t&&(c.append(l),d.tree(l,i[o.children])),r.append(c),c.prev("."+k)[0]&&c.prev().children(".layui-tree-pack").addClass("layui-tree-showLine"),t||c.parent(".layui-tree-pack").addClass("layui-tree-lineExtend"),d.spread(c,i),s.showCheckbox&&(i.checked&&d.checkids.push(i[o.id]),d.checkClick(c,i)),s.edit&&d.operate(c,i)})},l.prototype.spread=function(n,t){var l=this,c=l.config,e=n.children("."+b),i=e.children("."+g),a=i.find('input[same="layuiTreeCheck"]'),r=e.find("."+C),e=e.find("."+w),d=c.onlyIconControl?r:i,s="";d.on("click",function(e){var i=n.children("."+N),a=(d.children(".layui-icon")[0]?d:d.find(".layui-tree-icon")).children(".layui-icon");i[0]?n.hasClass(F)?(n.removeClass(F),i.slideUp(200),a.removeClass(x).addClass(v),l.updateFieldValue(t,"spread",!1)):(n.addClass(F),i.slideDown(200),a.addClass(x).removeClass(v),l.updateFieldValue(t,"spread",!0),c.accordion&&((i=n.siblings("."+k)).removeClass(F),i.children("."+N).slideUp(200),i.find(".layui-tree-icon").children(".layui-icon").removeClass(x).addClass(v))):s="normal"}),e.on("click",function(){p(this).hasClass(u)||(s=n.hasClass(F)?c.onlyIconControl?"open":"close":c.onlyIconControl?"close":"open",a[0]&&l.updateFieldValue(t,"checked",a.prop("checked")),c.click&&c.click({elem:n,state:s,data:t}))})},l.prototype.updateFieldValue=function(e,i,a){i in e&&(e[i]=a)},l.prototype.setCheckbox=function(e,i,a){var t,n=this,l=n.config.customName,c=a.prop("checked");a.prop("disabled")||("object"!=typeof i[l.children]&&!e.find("."+N)[0]||e.find("."+N).find('input[same="layuiTreeCheck"]').each(function(e){this.disabled||((e=i[l.children][e])&&n.updateFieldValue(e,"checked",c),n.updateFieldValue(this,"checked",c))}),(t=function(e){var i,a,n;e.parents("."+k)[0]&&(a=(e=e.parent("."+N)).parent(),n=e.prev().find('input[same="layuiTreeCheck"]'),c?n.prop("checked",c):(e.find('input[same="layuiTreeCheck"]').each(function(){this.checked&&(i=!0)}),i||n.prop("checked",!1)),t(a))})(e),n.renderForm("checkbox"))},l.prototype.checkClick=function(a,n){var t=this,l=t.config;a.children("."+b).children("."+g).on("click",'input[same="layuiTreeCheck"]+',function(e){layui.stope(e);var e=p(this).prev(),i=e.prop("checked");e.prop("disabled")||(t.setCheckbox(a,n,e),t.updateFieldValue(n,"checked",i),l.oncheck&&l.oncheck({elem:a,checked:i,data:n}))})},l.prototype.operate=function(r,d){var s=this,o=s.config,u=o.customName,e=r.children("."+b),h=e.children("."+g);e.children(".layui-tree-btnGroup").on("click",".layui-icon",function(e){layui.stope(e);var i,e=p(this).data("type"),n=r.children("."+N),t={data:d,type:e,elem:r};if("add"==e){n[0]||(o.showLine?(h.find("."+C).addClass("layui-tree-icon"),h.find("."+C).children(".layui-icon").addClass(v).removeClass("layui-icon-file")):h.find(".layui-tree-iconArrow").removeClass(m),r.append('
      '));var a,l=o.operate&&o.operate(t),c={};if(c[u.title]=o.text.defaultNodeName,c[u.id]=l,s.tree(r.children("."+N),[c]),o.showLine&&(n[0]?(n.hasClass(S)||n.addClass(S),r.find("."+N).each(function(){p(this).children("."+k).last().addClass(T)}),(n.children("."+k).last().prev().hasClass(T)?n.children("."+k).last().prev():n.children("."+k).last()).removeClass(T),!r.parent("."+N)[0]&&r.next()[0]&&n.children("."+k).last().removeClass(T)):(l=r.siblings("."+k),a=1,c=r.parent("."+N),layui.each(l,function(e,i){p(i).children("."+N)[0]||(a=0)}),(1==a?(l.children("."+N).addClass(L),l.children("."+N).children("."+k).removeClass(T),r.children("."+N).addClass(L),c.removeClass(S),c.children("."+k).last().children("."+N).children("."+k).last()):r.children("."+N).children("."+k)).addClass(T))),!o.showCheckbox)return;h.find('input[same="layuiTreeCheck"]')[0].checked&&(r.children("."+N).children("."+k).last().find('input[same="layuiTreeCheck"]')[0].checked=!0),s.renderForm("checkbox")}else"update"==e?(l=h.children("."+w).html(),h.children("."+w).html(""),h.append(''),h.children(".layui-tree-editInput").val(f.unescape(l)).focus(),i=function(e){var i=f.escape(e.val().trim())||o.text.defaultNodeName;e.remove(),h.children("."+w).html(i),t.data[u.title]=i,o.operate&&o.operate(t)},h.children(".layui-tree-editInput").blur(function(){i(p(this))}),h.children(".layui-tree-editInput").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),i(p(this)))})):y.confirm('\u786e\u8ba4\u5220\u9664\u8be5\u8282\u70b9 "'+(d[u.title]||"")+'" \u5417\uff1f',function(e){var l,a,i;o.operate&&o.operate(t),t.status="remove",y.close(e),r.prev("."+k)[0]||r.next("."+k)[0]||r.parent("."+N)[0]?(r.siblings("."+k).children("."+b)[0]?(o.showCheckbox&&(l=function(e){var i,a,n,t;e.parents("."+k)[0]&&(i=e.siblings("."+k).children("."+b),a=(e=e.parent("."+N).prev()).find('input[same="layuiTreeCheck"]')[0],n=1,(t=0)==a.checked)&&(i.each(function(e,i){i=p(i).find('input[same="layuiTreeCheck"]')[0];0!=i.checked||i.disabled||(n=0),i.disabled||(t=1)}),1==n)&&1==t&&(a.checked=!0,s.renderForm("checkbox"),l(e.parent("."+k)))})(r),o.showLine&&(e=r.siblings("."+k),a=1,i=r.parent("."+N),layui.each(e,function(e,i){p(i).children("."+N)[0]||(a=0)}),1==a?(n[0]||(i.removeClass(S),e.children("."+N).addClass(L),e.children("."+N).children("."+k).removeClass(T)),(r.next()[0]?i.children("."+k).last():r.prev()).children("."+N).children("."+k).last().addClass(T),r.next()[0]||r.parents("."+k)[1]||r.parents("."+k).eq(0).next()[0]||r.prev("."+k).addClass(T)):!r.next()[0]&&r.hasClass(T)&&r.prev().addClass(T))):(e=r.parent("."+N).prev(),o.showLine?(e.find("."+C).removeClass("layui-tree-icon"),e.find("."+C).children(".layui-icon").removeClass(x).addClass("layui-icon-file"),(i=e.parents("."+N).eq(0)).addClass(S),i.children("."+k).each(function(){p(this).children("."+N).children("."+k).last().addClass(T)})):e.find(".layui-tree-iconArrow").addClass(m),r.parents("."+k).eq(0).removeClass(F),r.parent("."+N).remove()),r.remove()):(r.remove(),s.elem.append(s.elemNone))})})},l.prototype.events=function(){var i=this,t=i.config;i.elem.find(".layui-tree-checkedFirst");i.setChecked(i.checkids),i.elem.find(".layui-tree-search").on("keyup",function(){var e=p(this),a=e.val(),e=e.nextAll(),n=[];e.find("."+w).each(function(){var i,e=p(this).parents("."+b);-1!=p(this).html().indexOf(a)&&(n.push(p(this).parent()),(i=function(e){e.addClass("layui-tree-searchShow"),e.parent("."+N)[0]&&i(e.parent("."+N).parent("."+k))})(e.parent("."+k)))}),e.find("."+b).each(function(){var e=p(this).parent("."+k);e.hasClass("layui-tree-searchShow")||e.addClass(m)}),0==e.find(".layui-tree-searchShow").length&&i.elem.append(i.elemNone),t.onsearch&&t.onsearch({elem:n})}),i.elem.find(".layui-tree-search").on("keydown",function(){p(this).nextAll().find("."+b).each(function(){p(this).parent("."+k).removeClass("layui-tree-searchShow "+m)}),p(".layui-tree-emptyText")[0]&&p(".layui-tree-emptyText").remove()})},l.prototype.getChecked=function(){var t=this,e=t.config,l=e.customName,i=[],a=[],c=(t.elem.find(".layui-form-checked").each(function(){i.push(p(this).prev()[0].value)}),function(e,n){layui.each(e,function(e,a){layui.each(i,function(e,i){if(a[l.id]==i)return t.updateFieldValue(a,"checked",!0),delete(i=p.extend({},a))[l.children],n.push(i),a[l.children]&&(i[l.children]=[],c(a[l.children],i[l.children])),!0})})});return c(p.extend({},e.data),a),a},l.prototype.setChecked=function(l){this.config;this.elem.find("."+k).each(function(e,i){var a=p(this).data("id"),n=p(i).children("."+b).find('input[same="layuiTreeCheck"]'),t=n.next();if("number"==typeof l){if(a.toString()==l.toString())return n[0].checked||t.click(),!1}else"object"==typeof l&&layui.each(l,function(e,i){if(i.toString()==a.toString()&&!n[0].checked)return t.click(),!0})})},n.that={},n.config={},t.reload=function(e,i){e=n.that[e];return e.reload(i),n.call(e)},t.getChecked=function(e){return n.that[e].getChecked()},t.setChecked=function(e,i){return n.that[e].setChecked(i)},t.render=function(e){e=new l(e);return n.call(e)},e(a,t)});layui.define(["laytpl","form"],function(e){"use strict";var d=layui.$,n=layui.laytpl,t=layui.form,a="transfer",i={config:{},index:layui[a]?layui[a].index+1e4:0,set:function(e){var t=this;return t.config=d.extend({},t.config,e),t},on:function(e,t){return layui.onevent.call(this,a,e,t)}},l=function(){var t=this,e=t.config,a=e.id||t.index;return l.that[a]=t,{config:l.config[a]=e,reload:function(e){t.reload.call(t,e)},getData:function(){return t.getData.call(t)}}},s="layui-hide",u="layui-btn-disabled",c="layui-none",r="layui-transfer-box",h="layui-transfer-header",o="layui-transfer-search",f="layui-transfer-data",y=function(e){return['
      ','
      ','","
      ","{{# if(d.data.showSearch){ }}",'","{{# } }}",'
        ',"
        "].join("")},p=['
        ',y({index:0,checkAllName:"layTransferLeftCheckAll"}),'
        ','",'","
        ",y({index:1,checkAllName:"layTransferRightCheckAll"}),"
        "].join(""),v=function(e){var t=this;t.index=++i.index,t.config=d.extend({},t.config,i.config,e),t.render()};v.prototype.config={title:["\u5217\u8868\u4e00","\u5217\u8868\u4e8c"],width:200,height:360,data:[],value:[],showSearch:!1,id:"",text:{none:"\u65e0\u6570\u636e",searchNone:"\u65e0\u5339\u914d\u6570\u636e"}},v.prototype.reload=function(e){var t=this;t.config=d.extend({},t.config,e),t.render()},v.prototype.render=function(){var e=this,t=e.config,a=e.elem=d(n(p,{open:"{{",close:"}}"}).render({data:t,index:e.index})),i=t.elem=d(t.elem);i[0]&&(t.data=t.data||[],t.value=t.value||[],t.id="id"in t?t.id:elem.attr("id")||e.index,e.key=t.id,i.html(e.elem),e.layBox=e.elem.find("."+r),e.layHeader=e.elem.find("."+h),e.laySearch=e.elem.find("."+o),e.layData=a.find("."+f),e.layBtn=a.find(".layui-transfer-active .layui-btn"),e.layBox.css({width:t.width,height:t.height}),e.layData.css({height:(i=t.height-e.layHeader.outerHeight(),t.showSearch&&(i-=e.laySearch.outerHeight()),i-2)}),e.renderData(),e.events())},v.prototype.renderData=function(){var e=this,t=e.config,l=[{checkName:"layTransferLeftCheck",views:[]},{checkName:"layTransferRightCheck",views:[]}];e.parseData(function(a){var i=a.selected?1:0,n=["
      • ",'',"
      • "].join("");i?layui.each(t.value,function(e,t){t==a.value&&a.selected&&(l[i].views[e]=n)}):l[i].views.push(n),delete a.selected}),e.layData.eq(0).html(l[0].views.join("")),e.layData.eq(1).html(l[1].views.join("")),e.renderCheckBtn()},v.prototype.renderForm=function(e){t.render(e,"LAY-transfer-"+this.index)},v.prototype.renderCheckBtn=function(c){var r=this,o=r.config;c=c||{},r.layBox.each(function(e){var t=d(this),a=t.find("."+f),t=t.find("."+h).find('input[type="checkbox"]'),i=a.find('input[type="checkbox"]'),n=0,l=!1;i.each(function(){var e=d(this).data("hide");(this.checked||this.disabled||e)&&n++,this.checked&&!e&&(l=!0)}),t.prop("checked",l&&n===i.length),r.layBtn.eq(e)[l?"removeClass":"addClass"](u),c.stopNone||(i=a.children("li:not(."+s+")").length,r.noneView(a,i?"":o.text.none))}),r.renderForm("checkbox")},v.prototype.noneView=function(e,t){var a=d('

        '+(t||"")+"

        ");e.find("."+c)[0]&&e.find("."+c).remove(),t.replace(/\s/g,"")&&e.append(a)},v.prototype.setValue=function(){var e=this.config,t=[];return this.layBox.eq(1).find("."+f+' input[type="checkbox"]').each(function(){d(this).data("hide")||t.push(this.value)}),e.value=t,this},v.prototype.parseData=function(t){var i=this.config,n=[];return layui.each(i.data,function(e,a){a=("function"==typeof i.parseData?i.parseData(a):a)||a,n.push(a=d.extend({},a)),layui.each(i.value,function(e,t){t==a.value&&(a.selected=!0)}),t&&t(a)}),i.data=n,this},v.prototype.getData=function(e){var t=this.config,i=[];return this.setValue(),layui.each(e||t.value,function(e,a){layui.each(t.data,function(e,t){delete t.selected,a==t.value&&i.push(t)})}),i},v.prototype.transfer=function(e,t){var a,i=this,n=i.config,l=i.layBox.eq(e),c=[],t=(t?((a=(t=t).find('input[type="checkbox"]'))[0].checked=!1,l.siblings("."+r).find("."+f).append(t.clone()),t.remove(),c.push(a[0].value),i.setValue()):l.each(function(e){d(this).find("."+f).children("li").each(function(){var e=d(this),t=e.find('input[type="checkbox"]'),a=t.data("hide");t[0].checked&&!a&&(t[0].checked=!1,l.siblings("."+r).find("."+f).append(e.clone()),e.remove(),c.push(t[0].value)),i.setValue()})}),i.renderCheckBtn(),l.siblings("."+r).find("."+o+" input"));""!==t.val()&&t.trigger("keyup"),n.onchange&&n.onchange(i.getData(c),e)},v.prototype.events=function(){var n=this,l=n.config;n.elem.on("click",'input[lay-filter="layTransferCheckbox"]+',function(){var e=d(this).prev(),t=e[0].checked,a=e.parents("."+r).eq(0).find("."+f);e[0].disabled||("all"===e.attr("lay-type")&&a.find('input[type="checkbox"]').each(function(){this.disabled||(this.checked=t)}),setTimeout(function(){n.renderCheckBtn({stopNone:!0})},0))}),n.elem.on("dblclick","."+f+">li",function(e){var t=d(this),a=t.children('input[type="checkbox"]'),i=t.parent().parent().data("index");a[0].disabled||!1!==("function"==typeof l.dblclick?l.dblclick({elem:t,data:n.getData([a[0].value])[0],index:i}):null)&&n.transfer(i,t)}),n.layBtn.on("click",function(){var e=d(this),t=e.data("index");e.hasClass(u)||n.transfer(t)}),n.laySearch.find("input").on("keyup",function(){var i=this.value,e=d(this).parents("."+o).eq(0).siblings("."+f),t=e.children("li"),t=(t.each(function(){var e=d(this),t=e.find('input[type="checkbox"]'),a=t[0].title,a=("cs"!==l.showSearch&&(a=a.toLowerCase(),i=i.toLowerCase()),-1!==a.indexOf(i));e[a?"removeClass":"addClass"](s),t.data("hide",!a)}),n.renderCheckBtn(),t.length===e.children("li."+s).length);n.noneView(e,t?l.text.searchNone:"")})},l.that={},l.config={},i.reload=function(e,t){e=l.that[e];return e.reload(t),l.call(e)},i.getData=function(e){return l.that[e].getData()},i.render=function(e){e=new v(e);return l.call(e)},e(a,i)});layui.define(["jquery","lay"],function(e){"use strict";var a=layui.$,l=layui.lay,t=(layui.hint(),layui.device(),{config:{},set:function(e){var i=this;return i.config=a.extend({},i.config,e),i},on:function(e,i){return layui.onevent.call(this,d,e,i)}}),d="carousel",r="layui-this",s="layui-carousel-left",u="layui-carousel-right",c="layui-carousel-prev",h="layui-carousel-next",o="layui-carousel-arrow",m="layui-carousel-ind",i=function(e){var i=this;i.config=a.extend({},i.config,t.config,e),i.render()};i.prototype.config={width:"600px",height:"280px",full:!1,arrow:"hover",indicator:"inside",autoplay:!0,interval:3e3,anim:"",trigger:"click",index:0},i.prototype.render=function(){var e=this,i=e.config,n=a(i.elem);if(1*[carousel-item]>*"),i.index<0&&(i.index=0),i.index>=e.elemItem.length&&(i.index=e.elemItem.length-1),i.interval<800&&(i.interval=800),i.full?i.elem.css({position:"fixed",width:"100%",height:"100%",zIndex:9999}):i.elem.css({width:i.width,height:i.height}),i.elem.attr("lay-anim",i.anim),e.elemItem.eq(i.index).addClass(r),e.elemItem.length<=1||(e.indicator(),e.arrow(),e.autoplay(),e.events()))},i.prototype.reload=function(e){var i=this;clearInterval(i.timer),i.config=a.extend({},i.config,e),i.render()},i.prototype.prevIndex=function(){var e=this.config.index-1;return e=e<0?this.elemItem.length-1:e},i.prototype.nextIndex=function(){var e=this.config.index+1;return e=e>=this.elemItem.length?0:e},i.prototype.addIndex=function(e){var i=this.config;i.index=i.index+(e=e||1),i.index>=this.elemItem.length&&(i.index=0)},i.prototype.subIndex=function(e){var i=this.config;i.index=i.index-(e=e||1),i.index<0&&(i.index=this.elemItem.length-1)},i.prototype.autoplay=function(){var e=this,i=e.config;i.autoplay&&(clearInterval(e.timer),e.timer=setInterval(function(){e.slide()},i.interval))},i.prototype.arrow=function(){var i=this,e=i.config,n=a(['",'"].join(""));e.elem.attr("lay-arrow",e.arrow),e.elem.find("."+o)[0]&&e.elem.find("."+o).remove(),e.elem.append(n),n.on("click",function(){var e=a(this).attr("lay-type");i.slide(e)})},i.prototype["goto"]=function(e){var i=this,n=i.config;e>n.index?i.slide("add",e-n.index):e
          ',(i=[],layui.each(e.elemItem,function(e){i.push("")}),i.join("")),"
        "].join(""));n.elem.attr("lay-indicator",n.indicator),n.elem.find("."+m)[0]&&n.elem.find("."+m).remove(),n.elem.append(t),"updown"===n.anim&&t.css("margin-top",-t.height()/2),t.find("li").on("hover"===n.trigger?"mouseover":n.trigger,function(){e["goto"](a(this).index())})},i.prototype.slide=function(e,i){var n=this,t=n.elemItem,a=n.config,o=a.index,l=a.elem.attr("lay-filter");n.haveSlide||("sub"===e?(n.subIndex(i),t.eq(a.index).addClass(c),setTimeout(function(){t.eq(o).addClass(u),t.eq(a.index).addClass(u)},50)):(n.addIndex(i),t.eq(a.index).addClass(h),setTimeout(function(){t.eq(o).addClass(s),t.eq(a.index).addClass(s)},50)),setTimeout(function(){t.removeClass(r+" "+c+" "+h+" "+s+" "+u),t.eq(a.index).addClass(r),n.haveSlide=!1},350),n.elemInd.find("li").eq(a.index).addClass(r).siblings().removeClass(r),n.haveSlide=!0,e={index:a.index,prevIndex:o,item:t.eq(a.index)},"function"==typeof a.change&&a.change(e),layui.event.call(this,d,"change("+l+")",e))},i.prototype.events=function(){var t,a,o=this,e=o.config;e.elem.data("haveEvents")||(e.elem.on("mouseenter touchstart",function(){"always"!==o.config.autoplay&&clearInterval(o.timer)}).on("mouseleave touchend",function(){"always"!==o.config.autoplay&&o.autoplay()}),t=e.elem,a="updown"===e.anim,l.touchSwipe(t,{onTouchEnd:function(e,i){var n=Date.now()-i.timeStart,i=a?i.distanceY:i.distanceX;(.25t[a?"height":"width"]()/3)&&o.slide(0a.length&&(a.value=a.length),parseInt(a.value)===a.value||a.half||(a.value=Math.ceil(a.value)-a.value<.5?Math.ceil(a.value):Math.floor(a.value)),'
          "),n=1;n<=a.length;n++){var o='
        • ";a.half&&parseInt(a.value)!==a.value&&n==Math.ceil(a.value)?i=i+'
        • ":i+=o}i+="
        "+(a.text?''+a.value+"\u661f":"")+"";var l=a.elem,s=l.next(".layui-rate");s[0]&&s.remove(),e.elemTemp=u(i),a.span=e.elemTemp.next("span"),a.setText&&a.setText(a.value),l.html(e.elemTemp),l.addClass("layui-inline"),a.readonly||e.action()},a.prototype.setvalue=function(e){this.config.value=e,this.render()},a.prototype.action=function(){var n=this.config,t=this.elemTemp,i=t.find("i").width(),l=t.children("li");l.each(function(e){var a=e+1,l=u(this);l.on("click",function(e){n.value=a,n.half&&e.pageX-u(this).offset().left<=i/2&&(n.value=n.value-.5),n.text&&t.next("span").text(n.value+"\u661f"),n.choose&&n.choose(n.value),n.setText&&n.setText(n.value)}),l.on("mousemove",function(e){t.find("i").each(function(){u(this).addClass(h).removeClass(s)}),t.find("i:lt("+a+")").each(function(){u(this).addClass(f).removeClass(v)}),n.half&&e.pageX-u(this).offset().left<=i/2&&l.children("i").addClass(o).removeClass(f)}),l.on("mouseleave",function(){t.find("i").each(function(){u(this).addClass(h).removeClass(s)}),t.find("i:lt("+Math.floor(n.value)+")").each(function(){u(this).addClass(f).removeClass(v)}),n.half&&parseInt(n.value)!==n.value&&t.children("li:eq("+Math.floor(n.value)+")").children("i").addClass(o).removeClass("layui-icon-rate-solid layui-icon-rate")})}),r.touchSwipe(t,{onTouchMove:function(e,a){var i;Date.now()-a.timeStart<=200||(a=e.touches[0].pageX,e=t.width()/n.length,a=(a-t.offset().left)/e,(i=(i=(e=a%1)<=.5&&n.half?.5+(a-e):Math.ceil(a))>n.length?n.length:i)<0&&(i=0),l.each(function(e){var a=u(this).children("i"),l=Math.ceil(i)-e==1,t=Math.ceil(i)>e,e=i-e==.5;t?(a.addClass(f).removeClass(v),n.half&&e&&a.addClass(o).removeClass(f)):a.addClass(h).removeClass(s),a.toggleClass("layui-rate-hover",l)}),n.value=i,n.text&&t.next("span").text(n.value+"\u661f"),n.setText&&n.setText(n.value))},onTouchEnd:function(e,a){Date.now()-a.timeStart<=200||(t.find("i").removeClass("layui-rate-hover"),n.choose&&n.choose(n.value),n.setText&&n.setText(n.value))}})},a.prototype.events=function(){},c.render=function(e){e=new a(e);return function(){var a=this;return{setvalue:function(e){a.setvalue.call(a,e)},config:a.config}}.call(e)},e(l,c)});layui.define("jquery",function(o){"use strict";var w=layui.$,l=function(o){};l.prototype.load=function(o){var i,n,r,l,c,m,e,t,a,f,s,u,p,d,y,h=this,g=0,v=w((o=o||{}).elem);if(v[0])return c=w(o.scrollElem||document),m="mb"in o?o.mb:50,e=!("isAuto"in o)||o.isAuto,t=o.moreText||"\u52a0\u8f7d\u66f4\u591a",a=o.end||"\u6ca1\u6709\u66f4\u591a\u4e86",f="top"===(o.direction||"bottom"),h._cleanup(v,c),s=o.scrollElem&&o.scrollElem!==document,p=w('"),v.find(".layui-flow-more")[0]||v[f?"prepend":"append"](p),d=function(o,l){var e=s?c.prop("scrollHeight"):document.documentElement.scrollHeight,t=c.scrollTop();o=w(o),p[f?"after":"before"](o),(l=0==l||null)?p.html(a):p.find("a").html(u),n=l,i=null,r&&r(),f&&(o=s?c.prop("scrollHeight"):document.documentElement.scrollHeight,1===g?c.scrollTop(o):1'),"function"==typeof o.done&&o.done(++g,d)})(),p.find("a").on("click.flow",function(){w(this);n||i||y()}),o.isLazyimg&&(r=h.lazyimg({elem:o.elem+" img",scrollElem:o.scrollElem,direction:o.direction})),e&&c.on("scroll.flow",function(){var e=w(this),t=e.scrollTop();l&&clearTimeout(l),!n&&v.width()&&(l=setTimeout(function(){var o=(s?e:w(window)).height(),l=s?e.prop("scrollHeight"):document.documentElement.scrollHeight;(f?t<=m:l-t-o<=m)&&!i&&y()},100))}),h},l.prototype.lazyimg=function(o){var l,m=this,a=0,f=w((o=o||{}).scrollElem||document),s=o.elem||"img",n="top"===(o.direction||"bottom"),u=o.scrollElem&&o.scrollElem!==document,p=function(l,o){var e,t=f.scrollTop(),o=t+o,i=u?l.offset().top-f.offset().top+t:l.offset().top;(n?i+l.height():i)>=t&&i<=o&&l.attr("lay-src")&&(e=l.attr("lay-src"),layui.img(e,function(){var o=m.lazyimg.elem.eq(a);l.attr("src",e).removeAttr("lay-src"),o[0]&&r(o),a++},function(){m.lazyimg.elem.eq(a);l.removeAttr("lay-src")}))},r=function(o,l){var e=(u?l||f:w(window)).height(),t=f.scrollTop(),i=t+e;if(m.lazyimg.elem=w(s),o)p(o,e);else for(var n=0;n"),preview:"Preview"},wordWrap:!0,lang:"text",highlighter:!1,langMarker:!1},W=layui.code?layui.code.index+1e4:0,R=function(e){return String(e).replace(/\s+$/,"").replace(/^\n|\n$/,"")};e("code",function(l,e){var o,i,t,a,n,d,c,s,r,u,y,p,E,f,h,v,m,L,_,M,C,g={config:l=x.extend(!0,{},T,l),reload:function(e){layui.code(this.updateOptions(e))},updateOptions:function(e){return delete(e=e||{}).elem,x.extend(!0,l,e)},reloadCode:function(e){layui.code(this.updateOptions(e),"reloadCode")}},w=x(l.elem);return 1',l.ln?['
        ',D.digit(t+1)+".","
        "].join(""):"",'
        ',e||" ","
        ",""].join("")})}},a=l.code,n=function(e){return"function"==typeof l.codeParse?l.codeParse(e,l):e},"reloadCode"===e?o.children(".layui-code-wrap").html(w(n(a)).html):(d=layui.code.index=++W,o.attr("lay-code-index",d),(M=A.CDDE_DATA_CLASS in o.data())&&o.attr("class",o.data(A.CDDE_DATA_CLASS)||""),M||o.data(A.CDDE_DATA_CLASS,o.attr("class")),c={copy:{className:"file-b",title:["\u590d\u5236\u4ee3\u7801"],event:function(e){var t=D.unescape(n(l.code));lay.clipboard.writeText({text:t,done:function(){N.msg("\u5df2\u590d\u5236",{icon:1})},error:function(){N.msg("\u590d\u5236\u5931\u8d25",{icon:2})}}),"function"==typeof l.onCopy&&l.onCopy(t)}}},function b(){var e=o.parent("."+A.ELEM_PREVIEW),t=e.children("."+A.ELEM_TAB),a=e.children("."+A.ELEM_ITEM+"-preview");return t.remove(),a.remove(),e[0]&&o.unwrap(),b}(),l.preview&&(M="LAY-CODE-DF-"+d,f=l.layout||["code","preview"],s="iframe"===l.preview,E=x('
        '),C=x('
        '),r=x('
        '),_=x('
        '),u=x('
        '),l.id&&E.attr("id",l.id),E.addClass(l.className),C.attr("lay-filter",M),layui.each(f,function(e,t){var a=x('
      • ');0===e&&a.addClass("layui-this"),a.html(l.text[t]),r.append(a)}),x.extend(c,{full:{className:"screen-full",title:["\u6700\u5927\u5316\u663e\u793a","\u8fd8\u539f\u663e\u793a"],event:function(e){var e=e.elem,t=e.closest("."+A.ELEM_PREVIEW),a="layui-icon-"+this.className,i="layui-icon-screen-restore",l=this.title,o=x("html,body"),n="layui-scrollbar-hide";e.hasClass(a)?(t.addClass(A.ELEM_FULL),e.removeClass(a).addClass(i),e.attr("title",l[1]),o.addClass(n)):(t.removeClass(A.ELEM_FULL),e.removeClass(i).addClass(a),e.attr("title",l[0]),o.removeClass(n))}},window:{className:"release",title:["\u5728\u65b0\u7a97\u53e3\u9884\u89c8"],event:function(e){D.openWin({content:n(l.code)})}}}),l.copy&&("array"===layui.type(l.tools)?-1===l.tools.indexOf("copy")&&l.tools.unshift("copy"):l.tools=["copy"]),u.on("click",">i",function(){var e=x(this),t=e.data("type"),e={elem:e,type:t,options:l,rawCode:l.code,finalCode:D.unescape(n(l.code))};c[t]&&"function"==typeof c[t].event&&c[t].event(e),"function"==typeof l.toolsEvent&&l.toolsEvent(e)}),l.addTools&&l.tools&&(l.tools=[].concat(l.tools,l.addTools)),layui.each(l.tools,function(e,t){var a="object"==typeof t,i=a?t:c[t]||{className:t,title:[t]},l=i.className||i.type,o=i.title||[""],a=a?i.type||l:t;a&&(c[a]||((t={})[a]=i,x.extend(c,t)),u.append(''))}),o.addClass(A.ELEM_ITEM).wrap(E),C.append(r),l.tools&&C.append(u),o.before(C),s&&_.html(''),y=function(e){var t=e.children("iframe")[0];s&&t?t.srcdoc=n(l.code):e.html(l.code),setTimeout(function(){"function"==typeof l.done&&l.done({container:e,options:l,render:function(){I.render(e.find(".layui-form")),S.render()}})},3)},"preview"===f[0]?(_.addClass(A.ELEM_SHOW),o.before(_),y(_)):o.addClass(A.ELEM_SHOW).after(_),l.previewStyle=[l.style,l.previewStyle].join(""),_.attr("style",l.previewStyle),S.on("tab("+M+")",function(e){var t=x(this),a=x(e.elem).closest("."+A.ELEM_PREVIEW).find("."+A.ELEM_ITEM),e=a.eq(e.index);a.removeClass(A.ELEM_SHOW),e.addClass(A.ELEM_SHOW),"preview"===t.attr("lay-id")&&y(e),L()})),p=x(''),o.addClass((E=["layui-code-view layui-border-box"],l.wordWrap||E.push("layui-code-nowrap"),E.join(" "))),(C=l.theme||l.skin)&&(o.removeClass("layui-code-theme-dark layui-code-theme-light"),o.addClass("layui-code-theme-"+C)),l.highlighter&&o.addClass([l.highlighter,"language-"+l.lang,"layui-code-hl"].join(" ")),f=w(l.encode?D.escape(n(a)):a),h=f.lines,o.html(p.html(f.html)),l.ln&&o.append('
        '),l.height&&p.css("max-height",l.height),l.codeStyle=[l.style,l.codeStyle].join(""),l.codeStyle&&p.attr("style",function(e,t){return(t||"")+l.codeStyle}),v=[{selector:">.layui-code-wrap>.layui-code-line{}",setValue:function(e,t){e.style["padding-left"]=t+"px"}},{selector:">.layui-code-wrap>.layui-code-line>.layui-code-line-number{}",setValue:function(e,t){e.style.width=t+"px"}},{selector:">.layui-code-ln-side{}",setValue:function(e,t){e.style.width=t+"px"}}],m=lay.style({target:o[0],id:"DF-code-"+d,text:x.map(x.map(v,function(e){return e.selector}),function(e,t){return['.layui-code-view[lay-code-index="'+d+'"]',e].join(" ")}).join("")}),L=function b(){var e,i;return l.ln&&(e=Math.floor(h.length/100),i=p.children("."+A.ELEM_LINE).last().children("."+A.ELEM_LINE_NUM).outerWidth(),o.addClass(A.ELEM_LN_MODE),e)&&A.LINE_RAW_WIDTH
      • ')).html(l.title||l.text.code),o.prepend(_)),M=x('
        '),l.copy&&!l.preview&&((C=x(['','',""].join(""))).on("click",function(){c.copy.event()}),M.append(C)),l.langMarker&&M.append(''+l.lang+""),l.about&&M.append(l.about),o.append(M),l.preview||setTimeout(function(){"function"==typeof l.done&&l.done({})},3),l.elem.length===1+d&&"function"==typeof l.allDone&&l.allDone())),g})}),layui["layui.all"]||layui.addcss("modules/code.css?v=6","skincodecss"); +/** v2.9.11 | MIT Licensed */;!function(d){"use strict";var t,h=d.document,m={modules:{},status:{},timeout:10,event:{}},n=function(){this.v="2.9.11"},e=d.LAYUI_GLOBAL||{},v=(t=h.currentScript?h.currentScript.src:function(){for(var t,e=h.scripts,o=e.length-1,n=o;01e3*m.timeout/4?g(s+" is not a valid module","error"):void(m.status[s]?y():setTimeout(n,4))}())}function y(){e.push(layui[s]),11e3*m.timeout/4?g(s+" is not a valid module","error"):void("string"==typeof m.modules[s]&&m.status[s]?y():setTimeout(f,4))}():((r=h.createElement("script"))["async"]=!0,r.charset="utf-8",r.src=i+((u=!0===m.version?m.v||(new Date).getTime():m.version||"")?"?v="+u:""),l.appendChild(r),!r.attachEvent||r.attachEvent.toString&&r.attachEvent.toString().indexOf("[native code")<0||b?r.addEventListener("load",function(t){p(t,i)},!1):r.attachEvent("onreadystatechange",function(t){p(t,i)}),m.modules[s]=i)),a},n.prototype.disuse=function(t){var o=this;return t=o.isArray(t)?t:[t],o.each(t,function(t,e){m.status[e],delete o[e],delete N[e],delete o.modules[e],delete m.status[e],delete m.modules[e]}),o},n.prototype.getStyle=function(t,e){t=t.currentStyle||d.getComputedStyle(t,null);return t[t.getPropertyValue?"getPropertyValue":"getAttribute"](e)},n.prototype.link=function(o,n,t){var r=this,e=h.getElementsByTagName("head")[0],i=h.createElement("link"),a="layuicss-"+((t="string"==typeof n?n:t)||o).replace(/\.|\//g,""),u="creating",l=0;return i.href=o+(m.debug?"?v="+(new Date).getTime():""),i.rel="stylesheet",i.id=a,i.media="all",h.getElementById(a)||e.appendChild(i),"function"==typeof n&&function s(t){var e=h.getElementById(a);return++l>1e3*m.timeout/100?g(o+" timeout"):void(1989===parseInt(r.getStyle(e,"width"))?(t===u&&e.removeAttribute("lay-status"),e.getAttribute("lay-status")===u?setTimeout(s,100):n()):(e.setAttribute("lay-status",u),setTimeout(function(){s(u)},100)))}(),r},n.prototype.addcss=function(t,e,o){return layui.link(m.dir+"css/"+t,e,o)},m.callback={},n.prototype.factory=function(t){if(layui[t])return"function"==typeof m.callback[t]?m.callback[t]:null},n.prototype.img=function(t,e,o){var n=new Image;if(n.src=t,n.complete)return e(n);n.onload=function(){n.onload=null,"function"==typeof e&&e(n)},n.onerror=function(t){n.onerror=null,"function"==typeof o&&o(t)}},n.prototype.config=function(t){for(var e in t=t||{})m[e]=t[e];return this},n.prototype.modules=function(){var t,e={};for(t in N)e[t]=N[t];return e}(),n.prototype.extend=function(t){for(var e in t=t||{})this[e]||this.modules[e]?g(e+" Module already exists","error"):this.modules[e]=t[e];return this},n.prototype.router=n.prototype.hash=function(t){var o={path:[],search:{},hash:((t=t||location.hash).match(/[^#](#.*$)/)||[])[1]||""};return/^#\//.test(t)&&(t=t.replace(/^#\//,""),o.href="/"+t,t=t.replace(/([^#])(#.*$)/,"$1").split("/")||[],this.each(t,function(t,e){/^\w+=/.test(e)?(e=e.split("="),o.search[e[0]]=e[1]):o.path.push(e)})),o},n.prototype.url=function(t){var r,e,o=this;return{pathname:(t?((t.match(/\.[^.]+?\/.+/)||[])[0]||"").replace(/^[^\/]+/,"").replace(/\?.+/,""):location.pathname).replace(/^\//,"").split("/"),search:(r={},e=(t?((t.match(/\?.+/)||[])[0]||"").replace(/\#.+/,""):location.search).replace(/^\?+/,"").split("&"),o.each(e,function(t,e){var o=e.indexOf("="),n=o<0?e.substr(0,e.length):0!==o&&e.substr(0,o);n&&(r[n]=0(l.innerHeight||h.documentElement.clientHeight)},d.getStyleRules=function(t,n){if(t)return t=(t=t.sheet||t.styleSheet||{}).cssRules||t.rules,"function"==typeof n&&layui.each(t,function(t,e){if(n(e,t))return!0}),t},d.style=function(t){t=t||{};var e=d.elem("style"),n=t.text||"",i=t.target;if(n)return"styleSheet"in e?(e.setAttribute("type","text/css"),e.styleSheet.cssText=n):e.innerHTML=n,e.id="LAY-STYLE-"+(t.id||(n=d.style.index||0,d.style.index++,"DF-"+n)),i&&((t=d(i).find("#"+e.id))[0]&&t.remove(),d(i).append(e)),e},d.position=function(t,e,n){var i,r,o,c,a,u,s,f;e&&(n=n||{},t!==h&&t!==d("body")[0]||(n.clickType="right"),i="right"===n.clickType?{left:(i=n.e||l.event||{}).clientX,top:i.clientY,right:i.clientX,bottom:i.clientY}:t.getBoundingClientRect(),s=e.offsetWidth,f=e.offsetHeight,r=function(t){return h.body[t=t?"scrollLeft":"scrollTop"]|h.documentElement[t]},o=function(t){return h.documentElement[t?"clientWidth":"clientHeight"]},c="margin"in n?n.margin:5,a=i.left,u=i.bottom,"center"===n.align?a-=(s-t.offsetWidth)/2:"right"===n.align&&(a=a-s+t.offsetWidth),(a=a+s+c>o("width")?o("width")-s-c:a)o()&&(i.top>f+c&&i.top<=o()?u=i.top-f-2*c:n.allowBottomOut||(u=o()-f-2*c)<0&&(u=0)),(s=n.position)&&(e.style.position=s),e.style.left=a+("fixed"===s?0:r(1))+"px",e.style.top=u+("fixed"===s?0:r())+"px",d.hasScrollbar()||(f=e.getBoundingClientRect(),!n.SYSTEM_RELOAD&&f.bottom+c>o()&&(n.SYSTEM_RELOAD=!0,setTimeout(function(){d.position(t,e,n)},50))))},d.options=function(t,e){if(e="object"==typeof e?e:{attr:e},t===h)return{};var t=d(t),n=e.attr||"lay-options",t=t.attr(n);try{return new Function("return "+(t||"{}"))()}catch(i){return layui.hint().error(e.errorText||[n+'="'+t+'"',"\n parseerror: "+i].join("\n"),"error"),{}}},d.isTopElem=function(n){var t=[h,d("body")[0]],i=!1;return d.each(t,function(t,e){if(e===n)return i=!0}),i},d.clipboard={writeText:function(n){var i=String(n.text);function t(){var t=h.createElement("textarea");t.value=i,t.style.position="fixed",t.style.opacity="0",t.style.top="0px",t.style.left="0px",h.body.appendChild(t),t.select();try{h.execCommand("copy"),"function"==typeof n.done&&n.done()}catch(e){"function"==typeof n.error&&n.error(e)}finally{t.remove?t.remove():h.body.removeChild(t)}}navigator&&"clipboard"in navigator?navigator.clipboard.writeText(i).then(n.done,function(){t()}):t()}},d.passiveSupported=function(){var t=!1;try{var e=Object.defineProperty({},"passive",{get:function(){t=!0}});l.addEventListener("test",null,e),l.removeEventListener("test",null,e)}catch(n){}return t}(),d.touchEventsSupported=function(){return"ontouchstart"in l},d.touchSwipe=function(t,e){var n,i,r,o=e,c=d(t)[0];c&&d.touchEventsSupported()&&(n={pointerStart:{x:0,y:0},pointerEnd:{x:0,y:0},distanceX:0,distanceY:0,direction:"none",timeStart:null},e=function(t){1===t.touches.length&&(c.addEventListener("touchmove",i,!!d.passiveSupported&&{passive:!1}),c.addEventListener("touchend",r),c.addEventListener("touchcancel",r),n.timeStart=Date.now(),n.pointerStart.x=n.pointerEnd.x=t.touches[0].clientX,n.pointerStart.y=n.pointerEnd.y=t.touches[0].clientY,n.distanceX=n.distanceY=0,n.direction="none",o.onTouchStart)&&o.onTouchStart(t,n)},i=function(t){t.preventDefault(),n.pointerEnd.x=t.touches[0].clientX,n.pointerEnd.y=t.touches[0].clientY,n.distanceX=n.pointerStart.x-n.pointerEnd.x,n.distanceY=n.pointerStart.y-n.pointerEnd.y,Math.abs(n.distanceX)>Math.abs(n.distanceY)?n.direction=0]|&(?=#[a-zA-Z0-9]+)/g.test(e+="")?e.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,"""):e}},i=function(e){return new RegExp(e,"g")},u=function(e,r){var n="Laytpl Error: ";return"object"==typeof console&&console.error(n+e+"\n"+(r||"")),n+e},n=function(e,r){var n=this,e=(n.config=n.config||{},n.template=e,function(e){for(var r in e)n.config[r]=e[r]});e(c),e(r)},r=(n.prototype.tagExp=function(e,r,n){var c=this.config;return i((r||"")+c.open+["#([\\s\\S])+?","([^{#}])*?"][e||0]+c.close+(n||""))},n.prototype.parse=function(e,r){var n=this,c=n.config,t=e,o=i("^"+c.open+"#",""),p=i(c.close+"$","");if("string"!=typeof e)return e;e='"use strict";var view = "'+(e=e.replace(/\s+|\r|\t|\n/g," ").replace(i(c.open+"#"),c.open+"# ").replace(i(c.close+"}"),"} "+c.close).replace(/\\/g,"\\\\").replace(i(c.open+"!(.+?)!"+c.close),function(e){return e=e.replace(i("^"+c.open+"!"),"").replace(i("!"+c.close),"").replace(i(c.open+"|"+c.close),function(e){return e.replace(/(.)/g,"\\$1")})}).replace(/(?="|')/g,"\\").replace(n.tagExp(),function(e){return'";'+(e=e.replace(o,"").replace(p,"")).replace(/\\(.)/g,"$1")+';view+="'}).replace(n.tagExp(1),function(e){var r='"+laytpl.escape(';return e.replace(/\s/g,"")===c.open+c.close?"":(e=e.replace(i(c.open+"|"+c.close),""),/^=/.test(e)?e=e.replace(/^=/,""):/^-/.test(e)&&(e=e.replace(/^-/,""),r='"+('),r+e.replace(/\\(.)/g,"$1")+')+"')}))+'";return view;';try{return n.cache=e=new Function("d, laytpl",e),e(r,l)}catch(a){return delete n.cache,u(a,t)}},n.prototype.render=function(e,r){e=e||{};var n=this,e=n.cache?n.cache(e,l):n.parse(n.template,e);return"function"==typeof r&&r(e),e},function(e,r){return new n(e,r)});r.config=function(e){for(var r in e=e||{})c[r]=e[r]},r.v="2.0.0",e("laytpl",r)});layui.define(function(e){"use strict";var r=document,u="getElementById",c="getElementsByTagName",a="layui-disabled",t=function(e){var a=this;a.config=e||{},a.config.index=++o.index,a.render(!0)},o=(t.prototype.type=function(){var e=this.config;if("object"==typeof e.elem)return e.elem.length===undefined?2:3},t.prototype.view=function(){var i,e,t,n=this.config,r=n.groups="groups"in n?Number(n.groups)||0:5,u=(n.layout="object"==typeof n.layout?n.layout:["prev","page","next"],n.count=Number(n.count)||0,n.curr=Number(n.curr)||1,n.limits="object"==typeof n.limits?n.limits:[10,20,30,40,50],n.limit=Number(n.limit)||10,n.pages=Math.ceil(n.count/n.limit)||1,n.curr>n.pages?n.curr=n.pages:n.curr<1&&(n.curr=1),r<0?r=1:r>n.pages&&(r=n.pages),n.prev="prev"in n?n.prev:"\u4e0a\u4e00\u9875",n.next="next"in n?n.next:"\u4e0b\u4e00\u9875",n.pages>r?Math.ceil((n.curr+(1'+n.prev+"":"",page:function(){var e=[];if(n.count<1)return"";1'+(n.first||1)+"");var a=Math.floor((r-1)/2),t=1n.pages?n.pages:a:r;for(i-t...');t<=i;t++)t===n.curr?e.push('"+t+""):e.push(''+t+"");return n.pages>r&&n.pages>i&&!1!==n.last&&(i+1...'),0!==r)&&e.push(''+(n.last||n.pages)+""),e.join("")}(),next:n.next?''+n.next+"":"",count:''+(e="object"==typeof n.countText?n.countText:["\u5171 "," \u6761"])[0]+n.count+e[1]+"",limit:(i=['"),refresh:['','',""].join(""),skip:[''+(e="object"==typeof n.skipText?n.skipText:["\u5230\u7b2c","\u9875","\u786e\u5b9a"])[0],'',e[1]+'",""].join("")};return['
        ',(t=[],layui.each(n.layout,function(e,a){l[a]&&t.push(l[a])}),t.join("")),"
        "].join("")},t.prototype.jump=function(e,a){if(e){var t=this,i=t.config,n=e.children,r=e[c]("button")[0],u=e[c]("input")[0],e=e[c]("select")[0],l=function(){var e=Number(u.value.replace(/\s|\D/g,""));e&&(i.curr=e,t.render())};if(a)return l();for(var s=0,p=n.length;si.pages||(i.curr=e,t.render())});e&&o.on(e,"change",function(){var e=this.value;i.curr*e>i.count&&(i.curr=Math.ceil(i.count/e)),i.limit=e,t.render()}),r&&o.on(r,"click",function(){l()})}},t.prototype.skip=function(t){var i,e;t&&(i=this,e=t[c]("input")[0])&&o.on(e,"keyup",function(e){var a=this.value,e=e.keyCode;/^(37|38|39|40)$/.test(e)||(/\D/.test(a)&&(this.value=a.replace(/\D/,"")),13===e&&i.jump(t,!0))})},t.prototype.render=function(e){var a=this,t=a.config,i=a.type(),n=a.view(),i=(2===i?t.elem&&(t.elem.innerHTML=n):3===i?t.elem.html(n):r[u](t.elem)&&(r[u](t.elem).innerHTML=n),t.jump&&t.jump(t,e),r[u]("layui-laypage-"+t.index));a.jump(i),t.hash&&!e&&(location.hash="!"+t.hash+"="+t.curr),a.skip(i)},{render:function(e){return new t(e).index},index:layui.laypage?layui.laypage.index+1e4:0,on:function(a,e,t){return a.attachEvent?a.attachEvent("on"+e,function(e){e.target=e.srcElement,t.call(a,e)}):a.addEventListener(e,t,!1),this}});e("laypage",o)});!function(i,D){"use strict";var n=i.layui&&layui.define,l={getPath:i.lay&&lay.getPath?lay.getPath:"",link:function(e,t,a){T.path&&i.lay&&lay.layui&&lay.layui.link(T.path+e,t,a)}},e=i.LAYUI_GLOBAL||{},a="laydate",d="lay-"+a+"-id",T={v:"5.6.0",config:{weekStart:0},index:i.laydate&&i.laydate.v?1e5:0,path:e.laydate_dir||l.getPath,set:function(e){var t=this;return t.config=lay.extend({},t.config,e),t},ready:function(e){var t="laydate",a=(n?"modules/":"")+"laydate.css?v="+T.v;return n?layui["layui.all"]?"function"==typeof e&&e():layui.addcss(a,e,t):l.link(a,e,t),this}},s=function(){var t=this,e=t.config.id;return(s.that[e]=t).inst={hint:function(e){t.hint.call(t,e)},reload:function(e){t.reload.call(t,e)},config:t.config}},C="layui-this",M="laydate-disabled",h=[100,2e5],v="layui-laydate-static",b="layui-laydate-list",o="laydate-selected",r="layui-laydate-hint",y="laydate-day-prev",m="laydate-day-next",L=".laydate-btns-confirm",E="laydate-time-text",I="laydate-btns-time",x="layui-laydate-preview",w="layui-laydate-shade",k=function(e){var t,a=this,n=(a.index=++T.index,a.config=lay.extend({},a.config,T.config,e),lay(e.elem||a.config.elem));return 1\u8bf7\u91cd\u65b0\u9009\u62e9",invalidDate:"\u4e0d\u5728\u6709\u6548\u65e5\u671f\u6216\u65f6\u95f4\u8303\u56f4\u5185",formatError:["\u65e5\u671f\u683c\u5f0f\u4e0d\u5408\u6cd5
        \u5fc5\u987b\u9075\u5faa\u4e0b\u8ff0\u683c\u5f0f\uff1a
        ","
        \u5df2\u4e3a\u4f60\u91cd\u7f6e"],preview:"\u5f53\u524d\u9009\u4e2d\u7684\u7ed3\u679c"},en:{weeks:["Su","Mo","Tu","We","Th","Fr","Sa"],time:["Hours","Minutes","Seconds"],timeTips:"Select Time",startTime:"Start Time",endTime:"End Time",dateTips:"Select Date",month:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],tools:{confirm:"Confirm",clear:"Clear",now:"Now"},timeout:"End time cannot be less than start Time
        Please re-select",invalidDate:"Invalid date",formatError:["The date format error
        Must be followed\uff1a
        ","
        It has been reset"],preview:"The selected result"}};return e[this.config.lang]||e.cn},k.prototype.markerOfChineseFestivals={"0-1-1":"\u5143\u65e6","0-2-14":"\u60c5\u4eba","0-3-8":"\u5987\u5973","0-3-12":"\u690d\u6811","0-4-1":"\u611a\u4eba","0-5-1":"\u52b3\u52a8","0-5-4":"\u9752\u5e74","0-6-1":"\u513f\u7ae5","0-9-10":"\u6559\u5e08","0-10-1":"\u56fd\u5e86","0-12-25":"\u5723\u8bde"},k.prototype.reload=function(e){this.config=lay.extend({},this.config,e),this.init()},k.prototype.init=function(){var r=this,o=r.config,e="static"===o.position,t={year:"yyyy",month:"yyyy-MM",date:"yyyy-MM-dd",time:"HH:mm:ss",datetime:"yyyy-MM-dd HH:mm:ss"};o.elem=lay(o.elem),o.eventElem=lay(o.eventElem),o.elem[0]&&("array"!==layui.type(o.theme)&&(o.theme=[o.theme]),o.fullPanel&&("datetime"!==o.type||o.range)&&delete o.fullPanel,r.rangeStr=o.range?"string"==typeof o.range?o.range:"-":"",r.rangeLinked=!(!o.range||!o.rangeLinked||"date"!==o.type&&"datetime"!==o.type),r.autoCalendarModel=function(){var e=r.rangeLinked;return r.rangeLinked=o.range&&("date"===o.type||"datetime"===o.type)&&(!r.startDate||!r.endDate||r.startDate&&r.endDate&&r.startDate.year===r.endDate.year&&r.startDate.month===r.endDate.month),lay(r.elem)[r.rangeLinked?"addClass":"removeClass"]("layui-laydate-linkage"),r.rangeLinked!=e},r.autoCalendarModel.auto=r.rangeLinked&&"auto"===o.rangeLinked,"array"===layui.type(o.range)&&(r.rangeElem=[lay(o.range[0]),lay(o.range[1])]),t[o.type]||(i.console&&console.error&&console.error("laydate type error:'"+o.type+"' is not supported"),o.type="date"),o.format===t.date&&(o.format=t[o.type]||t.date),r.format=s.formatArr(o.format),o.weekStart&&!/^[0-6]$/.test(o.weekStart)&&(t=r.lang(),o.weekStart=t.weeks.indexOf(o.weekStart),-1===o.weekStart)&&(o.weekStart=0),r.EXP_IF="",r.EXP_SPLIT="",lay.each(r.format,function(e,t){e=new RegExp(u).test(t)?"\\d{"+(new RegExp(u).test(r.format[0===e?e+1:e-1]||"")?/^yyyy|y$/.test(t)?4:t.length:/^yyyy$/.test(t)?"1,4":/^y$/.test(t)?"1,308":"1,2")+"}":"\\"+t;r.EXP_IF=r.EXP_IF+e,r.EXP_SPLIT=r.EXP_SPLIT+"("+e+")"}),r.EXP_IF_ONE=new RegExp("^"+r.EXP_IF+"$"),r.EXP_IF=new RegExp("^"+(o.range?r.EXP_IF+"\\s\\"+r.rangeStr+"\\s"+r.EXP_IF:r.EXP_IF)+"$"),r.EXP_SPLIT=new RegExp("^"+r.EXP_SPLIT+"$",""),r.isInput(o.elem[0])||"focus"===o.trigger&&(o.trigger="click"),o.elem.attr("lay-key",r.index),o.eventElem.attr("lay-key",r.index),o.elem.attr(d,o.id),lay.each(["min","max"],function(e,t){var a=[],n=[];if("number"==typeof o[t])var i=o[t],l=new Date,l=r.newDate({year:l.getFullYear(),month:l.getMonth(),date:l.getDate(),hours:e?23:0,minutes:e?59:0,seconds:e?59:0}).getTime(),e=new Date(i?i<864e5?l+864e5*i:i:l),a=[e.getFullYear(),e.getMonth()+1,e.getDate()],n=[e.getHours(),e.getMinutes(),e.getSeconds()];else if("string"==typeof o[t])a=(o[t].match(/\d+-\d+-\d+/)||[""])[0].split("-"),n=(o[t].match(/\d+:\d+:\d+/)||[""])[0].split(":");else if("object"==typeof o[t])return o[t];o[t]={year:0|a[0]||(new Date).getFullYear(),month:a[1]?(0|a[1])-1:(new Date).getMonth(),date:0|a[2]||(new Date).getDate(),hours:0|n[0],minutes:0|n[1],seconds:0|n[2]}}),r.elemID="layui-laydate"+o.elem.attr("lay-key"),(o.show||e)&&r.render(),e||r.events(),"function"==typeof o.formatToDisplay&&(r.isInput(o.elem[0])?r.formatToDisplay(o.elem[0],o.formatToDisplay):(t=r.rangeElem)&&(r.formatToDisplay(t[0][0],o.formatToDisplay),r.formatToDisplay(t[1][0],o.formatToDisplay))),o.value)&&o.isInitValue&&("date"===layui.type(o.value)?r.setValue(r.parse(0,r.systemDate(o.value))):r.setValue(o.value))},k.prototype.render=function(){var a,n,i,l,r=this,o=r.config,d=r.lang(),s="static"===o.position,y=r.elem=lay.elem("div",{id:r.elemID,"class":["layui-laydate",o.range?" layui-laydate-range":"",r.rangeLinked?" layui-laydate-linkage":"",s?" "+v:"",o.fullPanel?" laydate-theme-fullpanel":"",(a="",lay.each(o.theme,function(e,t){"default"===t||/^#/.test(t)||(a+=" laydate-theme-"+t)}),a)].join("")}),m=r.elemMain=[],u=r.elemHeader=[],c=r.elemCont=[],h=r.table=[],e=r.footer=lay.elem("div",{"class":"layui-laydate-footer"}),t=r.shortcut=lay.elem("ul",{"class":"layui-laydate-shortcut"}),p=(o.zIndex&&(y.style.zIndex=o.zIndex),lay.each(new Array(2),function(e){if(!o.range&&0'+d.timeTips+""),(o.range||"datetime"!==o.type||o.fullPanel)&&p.push(''),lay.each(o.btns,function(e,t){var a=d.tools[t]||"btn";o.range&&"now"===t||(s&&"clear"===t&&(a="cn"===o.lang?"\u91cd\u7f6e":"Reset"),n.push(''+a+""))}),p.push('"),p.join(""))),o.shortcuts&&(y.appendChild(t),lay(t).html((i=[],lay.each(o.shortcuts,function(e,t){i.push('
      • '+t.text+"
      • ")}),i.join(""))).find("li").on("click",function(e){var t=o.shortcuts[this.dataset.index]||{},t=("function"==typeof t.value?t.value():t.value)||[],n=(layui.isArray(t)||(t=[t]),o.type),t=(lay.each(t,function(e,t){var a=[o.dateTime,r.endDate][e];"time"===n&&"date"!==layui.type(t)?r.EXP_IF.test(t)&&(t=(t.match(r.EXP_SPLIT)||[]).slice(1),lay.extend(a,{hours:0|t[0],minutes:0|t[2],seconds:0|t[4]})):lay.extend(a,r.systemDate("date"===layui.type(t)?t:new Date(t))),"time"!==n&&"datetime"!==n||(r[["startTime","endTime"][e]]={hours:a.hours,minutes:a.minutes,seconds:a.seconds}),0===e?r.startDate=lay.extend({},a):r.endState=!0,"year"===n||"month"===n||"time"===n?r.listYM[e]=[a.year,a.month+1]:e&&r.autoCalendarModel.auto&&r.autoCalendarModel()}),r.checkDate("limit").calendar(null,null,"init"),lay(r.footer).find("."+I).removeClass(M));t&&"date"===t.attr("lay-type")&&t[0].click(),r.done(null,"change"),lay(this).addClass(C),"static"!==o.position&&r.setValue(r.parse()).done().remove()})),lay.each(m,function(e,t){y.appendChild(t)}),o.showBottom&&y.appendChild(e),lay.elem("style")),f=[],g=!0,t=(lay.each(o.theme,function(e,t){g&&/^#/.test(t)?(g=!(l=!0),f.push(["#{{id}} .layui-laydate-header{background-color:{{theme}};}","#{{id}} li.layui-this,#{{id}} td.layui-this>div{background-color:{{theme}} !important;}",-1!==o.theme.indexOf("circle")?"":"#{{id}} .layui-this{background-color:{{theme}} !important;}","#{{id}} .laydate-day-now{color:{{theme}} !important;}","#{{id}} .laydate-day-now:after{border-color:{{theme}} !important;}"].join("").replace(/{{id}}/g,r.elemID).replace(/{{theme}}/g,t))):!g&&/^#/.test(t)&&f.push(["#{{id}} .laydate-selected>div{background-color:{{theme}} !important;}","#{{id}} .laydate-selected:hover>div{background-color:{{theme}} !important;}"].join("").replace(/{{id}}/g,r.elemID).replace(/{{theme}}/g,t))}),o.shortcuts&&o.range&&f.push("#{{id}}.layui-laydate-range{width: 628px;}".replace(/{{id}}/g,r.elemID)),f.length&&(f=f.join(""),"styleSheet"in p?(p.setAttribute("type","text/css"),p.styleSheet.cssText=f):p.innerHTML=f,l&&lay(y).addClass("laydate-theme-molv"),y.appendChild(p)),r.remove(k.thisElemDate),T.thisId=o.id,s?o.elem.append(y):(D.body.appendChild(y),r.position()),o.shade?'
        ':"");y.insertAdjacentHTML("beforebegin",t),r.checkDate().calendar(null,0,"init"),r.changeEvent(),k.thisElemDate=r.elemID,r.renderAdditional(),"function"==typeof o.ready&&o.ready(lay.extend({},o.dateTime,{month:o.dateTime.month+1})),r.preview()},k.prototype.remove=function(e){var t=this,a=t.config,n=lay("#"+(e||t.elemID));return n[0]&&(n.hasClass(v)||t.checkDate(function(){n.remove(),delete t.startDate,delete t.endDate,delete t.endState,delete t.startTime,delete t.endTime,delete T.thisId,"function"==typeof a.close&&a.close(t)}),lay("."+w).remove()),t},k.prototype.position=function(){var e=this.config;return lay.position(e.elem[0],this.elem,{position:e.position}),this},k.prototype.hint=function(e){var t=this,a=(t.config,lay.elem("div",{"class":r}));t.elem&&(a.innerHTML=(e="object"==typeof e?e||{}:{content:e}).content||"",lay(t.elem).find("."+r).remove(),t.elem.appendChild(a),clearTimeout(t.hinTimer),t.hinTimer=setTimeout(function(){lay(t.elem).find("."+r).remove()},"ms"in e?e.ms:3e3))},k.prototype.getAsYM=function(e,t,a){return a?t--:t++,t<0&&(t=11,e--),11h[1]&&(e.year=h[1],o=!0),11t)&&(e.date=t,o=!0)},c=function(n,i,l){var r=["startTime","endTime"];i=(i.match(d.EXP_SPLIT)||[]).slice(1),l=l||0,s.range&&(d[r[l]]=d[r[l]]||{}),lay.each(d.format,function(e,t){var a=parseFloat(i[e]);i[e].lengthd.getDateTime(s.max)?(r=s.dateTime=lay.extend({},s.max),i=!0):d.getDateTime(r)d.getDateTime(s.max))&&(d.endDate=lay.extend({},s.max),i=!0),d.startTime={hours:s.dateTime.hours,minutes:s.dateTime.minutes,seconds:s.dateTime.seconds},d.endTime={hours:d.endDate.hours,minutes:d.endDate.minutes,seconds:d.endDate.seconds},"month"===s.type)&&(s.dateTime.date=1,d.endDate.date=1),i&&m&&(d.setValue(d.parse()),d.hint("value "+l.invalidDate+l.formatError[1])),d.startDate=d.startDate||m&&lay.extend({},s.dateTime),d.autoCalendarModel.auto&&d.autoCalendarModel(),d.endState=!s.range||!d.rangeLinked||!(!d.startDate||!d.endDate),e&&e()),d},k.prototype.markRender=function(e,a,t){var n;"object"==typeof t?lay.each(t||{},function(e,t){e=e.split("-");e[0]!=a[0]&&0!=e[0]||e[1]!=a[1]&&0!=e[1]||e[2]!=a[2]||(n=t||a[2])}):"string"==typeof t&&(n=t||a[2]),n&&e.find("div").html(''+n+"")},k.prototype.mark=function(t,a){var n=this,e=n.config,i=function(e){n.markRender(t,a,e)};return e.calendar&&"cn"===e.lang&&i(n.markerOfChineseFestivals),"function"==typeof e.mark?e.mark({year:a[0],month:a[1],date:a[2]},i):"object"==typeof e.mark&&i(e.mark),n},k.prototype.holidaysRender=function(r,o,e){var d=["holidays","workdays"],s=function(e,t,a){e.find("div").html(["",a,""].join(""))};"array"===layui.type(e)?lay.each(e,function(l,e){lay.each(e,function(e,t){var a,n,i;t=t,a=r.attr("lay-ymd"),n=t.split("-"),i=a.split("-"),lay.each(n,function(e,t){n[e]=parseInt(t,10)}),lay.each(i,function(e,t){i[e]=parseInt(t,10)}),n.join("-")===i.join("-")&&s(r,d[l],o[2])})}):"string"==typeof e&&-1!==d.indexOf(e)&&s(r,e,o[2])},k.prototype.holidays=function(t,a){var n=this,e=n.config,i=function(e){n.holidaysRender(t,a,e)};return"function"==typeof e.holidays?e.holidays({year:a[0],month:a[1],date:a[2]},i):"array"===layui.type(e.holidays)&&i(e.holidays),n},k.prototype.cellRender=function(t,e,a){var n=this.config;return"function"==typeof n.cellRender&&n.cellRender(e,function(e){"string"==typeof e?lay(t).html(e):"object"==typeof e&&lay(t).html("").append(lay(e)[0])},{originElem:t,type:a}),this},k.prototype.startOfYear=function(e){e=new Date(e);return e.setFullYear(e.getFullYear(),0,1),e.setHours(0,0,0,0),e},k.prototype.endOfYear=function(e){var e=new Date(e),t=e.getFullYear();return e.setFullYear(t+1,0,0),e.setHours(23,59,59,999),e},k.prototype.startOfMonth=function(e){e=new Date(e);return e.setDate(1),e.setHours(0,0,0,0),e},k.prototype.endOfMonth=function(e){var e=new Date(e),t=e.getMonth();return e.setFullYear(e.getFullYear(),t+1,0),e.setHours(23,59,59,999),e},k.prototype.addDays=function(e,t){e=new Date(e);return t&&e.setDate(e.getDate()+t),e},k.prototype.isDisabledYearOrMonth=function(e,t,a){for(var n=this,i=n.config,l="year"===t?n.startOfYear(e):n.startOfMonth(e),t="year"===t?n.endOfYear(e):n.endOfMonth(e),r=Math.floor((t.getTime()-l.getTime())/864e5)+1,o=0,d=0;d(t.time?0:41)?i.endDate:e.dateTime;return lay.each({now:lay.extend({},a,t.date||{}),min:e.min,max:e.max},function(e,a){var n;l[e]=i.newDate(lay.extend({year:a.year,month:"year"===t.type?0:a.month,date:"year"===t.type||"month"===t.type?1:a.date},(n={},lay.each(t.time,function(e,t){n[t]=a[t]}),n))).getTime()}),a=l.nowh[1]&&(s.year=h[1],d.hint(y.invalidDate)),d.firstDate||(d.firstDate=lay.extend({},s)),n.setFullYear(s.year,s.month,1),l=(n.getDay()+(7-a.weekStart))%7,r=T.getEndDate(s.month||12,s.year),o=T.getEndDate(s.month+1,s.year),lay.each(u,function(e,t){var a,n=[s.year,s.month];(t=lay(t)).removeAttr("class"),e"+n[2]+"
        "),d.mark(t,n).holidays(t,n).limit({elem:t,date:{year:n[0],month:n[1]-1,date:n[2]},index:e,rangeType:i,disabledType:"date"}),d.cellRender(t,{year:n[0],month:n[1],date:n[2]},"date")}),lay(c[0]).attr("lay-ym",s.year+"-"+(s.month+1)),lay(c[1]).attr("lay-ym",s.year+"-"+(s.month+1)),"cn"===a.lang?(lay(c[0]).attr("lay-type","year").html(s.year+" \u5e74"),lay(c[1]).attr("lay-type","month").html(s.month+1+" \u6708")):(lay(c[0]).attr("lay-type","month").html(y.month[s.month]),lay(c[1]).attr("lay-type","year").html(s.year)),m&&(a.range?!e&&"init"===t||(d.listYM=[[(d.startDate||a.dateTime).year,(d.startDate||a.dateTime).month+1],[d.endDate.year,d.endDate.month+1]],d.list(a.type,0).list(a.type,1),"time"===a.type?d.setBtnStatus("\u65f6\u95f4",lay.extend({},d.systemDate(),d.startTime),lay.extend({},d.systemDate(),d.endTime)):d.setBtnStatus(!0)):(d.listYM=[[s.year,s.month+1]],d.list(a.type,0))),a.range&&"init"===t&&(d.rangeLinked?(n=d.getAsYM(s.year,s.month,i?"sub":null),d.calendar(lay.extend({},s,{year:n[0],month:n[1]}),1-i)):d.calendar(null,1-i)),a.range||(u=["hours","minutes","seconds"],d.limit({elem:lay(d.footer).find(".laydate-btns-now"),date:d.systemDate(/^(datetime|time)$/.test(a.type)?new Date:null),index:0,time:u,disabledType:"datetime"}),d.limit({elem:lay(d.footer).find(L),index:0,time:u,disabledType:"datetime"})),d.setBtnStatus(),lay(d.shortcut).find("li."+C).removeClass(C),a.range&&!m&&"init"!==t&&d.stampRange(),d},k.prototype.list=function(n,i){var l,r,e,a,o,d,t,s=this,y=s.config,m=s.rangeLinked?y.dateTime:[y.dateTime,s.endDate][i],u=s.lang(),c=y.range&&"date"!==y.type&&"datetime"!==y.type,h=lay.elem("ul",{"class":b+" "+{year:"laydate-year-list",month:"laydate-month-list",time:"laydate-time-list"}[n]}),p=s.elemHeader[i],f=lay(p[2]).find("span"),g=s.elemCont[i||0],D=lay(g).find("."+b)[0],T="cn"===y.lang,v=T?"\u5e74":"",x=s.listYM[i]||{},w=["hours","minutes","seconds"],k=["startTime","endTime"][i];return x[0]<1&&(x[0]=1),"year"===n?(e=l=x[0]-7,l<1&&(e=l=1),lay.each(new Array(15),function(e){var t=lay.elem("li",{"lay-ym":l}),a={year:l,month:0,date:1};l==x[0]&&lay(t).addClass(C),t.innerHTML=l+v,h.appendChild(t),s.limit({elem:lay(t),date:a,index:i,type:n,rangeType:i,disabledType:"date"}),s.cellRender(t,{year:l,month:1,date:1},"year"),l++}),lay(f[T?0:1]).attr("lay-ym",l-8+"-"+x[1]).html(e+v+" - "+(l-1)+v)):"month"===n?(lay.each(new Array(12),function(e){var t=lay.elem("li",{"lay-ym":e}),a={year:x[0],month:e,date:1};e+1==x[1]&&lay(t).addClass(C),t.innerHTML=u.month[e]+(T?"\u6708":""),h.appendChild(t),s.limit({elem:lay(t),date:a,index:i,type:n,rangeType:i,disabledType:"date"}),s.cellRender(t,{year:x[0],month:e+1,date:1},"month")}),lay(f[T?0:1]).attr("lay-ym",x[0]+"-"+x[1]).html(x[0]+v)):"time"===n&&(r=function(){lay(h).find("ol").each(function(a,e){lay(e).find("li").each(function(e,t){s.limit({elem:lay(t),date:[{hours:e},{hours:s[k].hours,minutes:e},{hours:s[k].hours,minutes:s[k].minutes,seconds:e}][a],index:i,rangeType:i,disabledType:"time",time:[["hours"],["hours","minutes"],["hours","minutes","seconds"]][a]})})}),y.range||s.limit({elem:lay(s.footer).find(L),date:s[k],index:0,time:["hours","minutes","seconds"],disabledType:"datetime"})},y.range?s[k]||(s[k]="startTime"===k?m:s.endDate):s[k]=m,lay.each([24,60,60],function(t,e){var a=lay.elem("li"),n=["

        "+u.time[t]+"

          "];lay.each(new Array(e),function(e){n.push(""+lay.digit(e,2)+"")}),a.innerHTML=n.join("")+"
        ",h.appendChild(a)}),r(),e=-1!==y.format.indexOf("H"),f=-1!==y.format.indexOf("m"),t=-1!==y.format.indexOf("s"),a=h.children,o=0,lay.each([e,f,t],function(e,t){t||(a[e].className+=" layui-hide",o++)}),h.className+=" laydate-time-list-hide-"+o),D&&g.removeChild(D),g.appendChild(h),"year"===n||"month"===n?(lay(s.elemMain[i]).addClass("laydate-ym-show"),lay(h).find("li").on("click",function(){var e=0|lay(this).attr("lay-ym");lay(this).hasClass(M)||(s.rangeLinked?lay.extend(m,{year:"year"===n?e:x[0],month:"year"===n?x[1]-1:e}):m[n]=e,"year"===y.type||"month"===y.type?(lay(h).find("."+C).removeClass(C),lay(this).addClass(C),"month"===y.type&&"year"===n&&(s.listYM[i][0]=e,c&&((i?s.endDate:m).year=e),s.list("month",i))):(s.checkDate("limit").calendar(m,i,"init"),s.closeList()),s.setBtnStatus(),!y.range&&y.autoConfirm&&("month"===y.type&&"month"===n||"year"===y.type&&"year"===n)&&s.setValue(s.parse()).done().remove(),s.autoCalendarModel.auto&&!s.rangeLinked?s.choose(lay(g).find("td.layui-this"),i):s.endState&&s.done(null,"change"),lay(s.footer).find("."+I).removeClass(M))})):(f=lay.elem("span",{"class":E}),d=function(){lay(h).find("ol").each(function(e){var a=this,t=lay(a).find("li");a.scrollTop=30*(s[k][w[e]]-2),a.scrollTop<=0&&t.each(function(e,t){if(!lay(this).hasClass(M))return a.scrollTop=30*(e-2),!0})})},t=lay(p[2]).find("."+E),d(),f.innerHTML=y.range?[u.startTime,u.endTime][i]:u.timeTips,lay(s.elemMain[i]).addClass("laydate-time-show"),t[0]&&t.remove(),p[2].appendChild(f),(D=lay(h).find("ol")).each(function(t){var a=this;lay(a).find("li").on("click",function(){var e=0|this.innerHTML;lay(this).hasClass(M)||(y.range?s[k][w[t]]=e:m[w[t]]=e,lay(a).find("."+C).removeClass(C),lay(this).addClass(C),r(),d(),!s.endDate&&"time"!==y.type&&"datetime"!==y.type||s.done(null,"change"),s.setBtnStatus())})}),layui.device().mobile&&D.css({overflowY:"auto",touchAction:"pan-y"})),s},k.prototype.listYM=[],k.prototype.closeList=function(){var a=this;a.config;lay.each(a.elemCont,function(e,t){lay(this).find("."+b).remove(),lay(a.elemMain[e]).removeClass("laydate-ym-show laydate-time-show")}),lay(a.elem).find("."+E).remove()},k.prototype.setBtnStatus=function(e,t,a){var n=this,i=n.config,l=n.lang(),r=lay(n.footer).find(L),o="datetime"===i.type||"time"===i.type?["hours","minutes","seconds"]:undefined;i.range&&(t=t||(n.rangeLinked?n.startDate:i.dateTime),a=a||n.endDate,i=!n.endState||n.newDate(t).getTime()>n.newDate(a).getTime(),n.limit({date:t,disabledType:"datetime",time:o,rangeType:0})||n.limit({date:a,disabledType:"datetime",time:o,rangeType:1})?r.addClass(M):r[i?"addClass":"removeClass"](M),e)&&i&&n.hint("string"==typeof e?l.timeout.replace(/\u65e5\u671f/g,e):l.timeout)},k.prototype.parse=function(e,t){var a=this,n=a.config,i=a.rangeLinked?a.startDate:n.dateTime,t=t||("end"==e?lay.extend({},a.endDate,a.endTime):n.range?lay.extend({},i||n.dateTime,a.startTime):n.dateTime),i=T.parse(t,a.format,1);return n.range&&e===undefined?i+" "+a.rangeStr+" "+a.parse("end"):i},k.prototype.newDate=function(e){return e=e||{},new Date(e.year||1,e.month||0,e.date||1,e.hours||0,e.minutes||0,e.seconds||0)},k.prototype.getDateTime=function(e){return this.newDate(e).getTime()},k.prototype.formatToDisplay=function(e,t){var a=this,n=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,"value");Object.defineProperty(e,"value",lay.extend({},n,{get:function(){return this.getAttribute("lay-date")},set:function(e){n.set.call(this,t.call(a,e)),this.setAttribute("lay-date",e)}}))},k.prototype.setValue=function(e){var t,a=this,n=a.config,i=n.elem[0];return"static"!==n.position&&(e=e||"",a.isInput(i)?lay(i).val(e):(t=a.rangeElem)?("array"!==layui.type(e)&&(e=e.split(" "+a.rangeStr+" ")),t[0].val(e[0]||""),t[1].val(e[1]||"")):(0===lay(i).find("*").length&&(t="function"==typeof n.formatToDisplay?n.formatToDisplay(e):e,lay(i).html(t)),lay(i).attr("lay-date",e))),a},k.prototype.preview=function(){var e,t=this,a=t.config;a.isPreview&&(e=lay(t.elem).find("."+x),a=!a.range||(t.rangeLinked?t.endState:t.endDate)?t.parse():"",e.html(a),e.html())&&(e.css({color:"#16b777"}),setTimeout(function(){e.css({color:"#777"})},300))},k.prototype.renderAdditional=function(){this.config.fullPanel&&this.list("time",0)},k.prototype.stampRange=function(){var n,i=this,l=i.config,r=i.rangeLinked?i.startDate:l.dateTime,e=lay(i.elem).find("td");l.range&&!i.endState&&lay(i.footer).find(L).addClass(M),r=r&&i.newDate({year:r.year,month:r.month,date:r.date}).getTime(),n=i.endState&&i.endDate&&i.newDate({year:i.endDate.year,month:i.endDate.month,date:i.endDate.date}).getTime(),lay.each(e,function(e,t){var a=lay(t).attr("lay-ymd").split("-"),a=i.newDate({year:a[0],month:a[1]-1,date:a[2]}).getTime();l.rangeLinked&&!i.startDate&&a===i.newDate(i.systemDate()).getTime()&&lay(t).addClass(lay(t).hasClass(y)||lay(t).hasClass(m)?"":"laydate-day-now"),lay(t).removeClass(o+" "+C),a!==r&&a!==n||(i.rangeLinked||!i.rangeLinked&&(e<42?a===r:a===n))&&lay(t).addClass(lay(t).hasClass(y)||lay(t).hasClass(m)?o:C),rn.getDateTime(i.max)&&(n[t]={hours:i.max.hours,minutes:i.max.minutes,seconds:i.max.seconds},lay.extend(l,n[t])))}),a||(n.startDate=lay.extend({},l)),n.endState&&!n.limit({date:n.rangeLinked?n.startDate:n.thisDateTime(1-a),disabledType:"date"})&&(((r=n.endState&&n.autoCalendarModel.auto?n.autoCalendarModel():r)||n.rangeLinked&&n.endState)&&n.newDate(n.startDate)>n.newDate(n.endDate)&&(n.startDate.year===n.endDate.year&&n.startDate.month===n.endDate.month&&n.startDate.date===n.endDate.date&&(o=n.startTime,n.startTime=n.endTime,n.endTime=o),o=n.startDate,n.startDate=lay.extend({},n.endDate,n.startTime),i.dateTime=lay.extend({},n.startDate),n.endDate=lay.extend({},o,n.endTime)),r)&&(i.dateTime=lay.extend({},n.startDate)),n.rangeLinked?(e=lay.extend({},l),!t||a||r||(o=n.getAsYM(l.year,l.month,"sub"),lay.extend(i.dateTime,{year:o[0],month:o[1]})),n.calendar(e,t,r?"init":null)):n.calendar(null,a,r?"init":null),n.endState&&n.done(null,"change")):"static"===i.position?n.calendar().done().done(null,"change"):"date"===i.type?i.autoConfirm?n.setValue(n.parse()).done().remove():n.calendar().done(null,"change"):"datetime"===i.type&&n.calendar().done(null,"change"))},k.prototype.tool=function(t,e){var a=this,n=a.config,i=a.lang(),l=n.dateTime,r="static"===n.position,o={datetime:function(){lay(t).hasClass(M)||(a.list("time",0),n.range&&a.list("time",1),lay(t).attr("lay-type","date").html(a.lang().dateTips))},date:function(){a.closeList(),lay(t).attr("lay-type","datetime").html(a.lang().timeTips)},clear:function(){r&&(lay.extend(l,a.firstDate),a.calendar()),n.range&&(delete n.dateTime,delete a.endDate,delete a.startTime,delete a.endTime),a.setValue(""),a.done(null,"onClear").done(["",{},{}]).remove()},now:function(){var e=new Date;if(lay(t).hasClass(M))return a.hint(i.tools.now+", "+i.invalidDate);lay.extend(l,a.systemDate(),{hours:e.getHours(),minutes:e.getMinutes(),seconds:e.getSeconds()}),a.setValue(a.parse()),r&&a.calendar(),a.done(null,"onNow").done().remove()},confirm:function(){if(n.range){if(lay(t).hasClass(M))return("time"===n.type?a.startTime&&a.endTime&&a.newDate(a.startTime)>a.newDate(a.endTime):a.startDate&&a.endDate&&a.newDate(lay.extend({},a.startDate,a.startTime||{}))>a.newDate(lay.extend({},a.endDate,a.endTime||{})))?a.hint("time"===n.type?i.timeout.replace(/\u65e5\u671f/g,"\u65f6\u95f4"):i.timeout):a.hint(i.invalidDate)}else if(lay(t).hasClass(M))return a.hint(i.invalidDate);a.setValue(a.parse()),a.done(null,"onConfirm").done().remove()}};o[e]&&o[e]()},k.prototype.change=function(n){var i=this,l=i.config,r=i.thisDateTime(n),o=l.range&&("year"===l.type||"month"===l.type),d=i.elemCont[n||0],s=i.listYM[n],e=function(e){var t=lay(d).find(".laydate-year-list")[0],a=lay(d).find(".laydate-month-list")[0];return t&&(s[0]=e?s[0]-15:s[0]+15,i.list("year",n)),a&&(e?s[0]--:s[0]++,i.list("month",n)),(t||a)&&(lay.extend(r,{year:s[0]}),o&&(r.year=s[0]),l.range||i.done(null,"change"),l.range||i.limit({elem:lay(i.footer).find(L),date:{year:s[0]},disabledType:"datetime"})),i.setBtnStatus(),t||a};return{prevYear:function(){e("sub")||(i.rangeLinked?(l.dateTime.year--,i.checkDate("limit").calendar(null,null,"init")):(r.year--,i.checkDate("limit").calendar(null,n),i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change")))},prevMonth:function(){i.rangeLinked&&(r=l.dateTime);var e=i.getAsYM(r.year,r.month,"sub");lay.extend(r,{year:e[0],month:e[1]}),i.checkDate("limit").calendar(null,null,"init"),i.rangeLinked||(i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change"))},nextMonth:function(){i.rangeLinked&&(r=l.dateTime);var e=i.getAsYM(r.year,r.month);lay.extend(r,{year:e[0],month:e[1]}),i.checkDate("limit").calendar(null,null,"init"),i.rangeLinked||(i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change"))},nextYear:function(){e()||(i.rangeLinked?(l.dateTime.year++,i.checkDate("limit").calendar(null,0,"init")):(r.year++,i.checkDate("limit").calendar(null,n),i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change")))}}},k.prototype.changeEvent=function(){var i=this;i.config;lay(i.elem).on("click",function(e){lay.stope(e)}).on("mousedown",function(e){lay.stope(e)}),lay.each(i.elemHeader,function(n,e){lay(e[0]).on("click",function(e){i.change(n).prevYear()}),lay(e[1]).on("click",function(e){i.change(n).prevMonth()}),lay(e[2]).find("span").on("click",function(e){var t=lay(this),a=t.attr("lay-ym"),t=t.attr("lay-type");a&&(a=a.split("-"),i.listYM[n]=[0|a[0],0|a[1]],i.list(t,n),lay(i.footer).find("."+I).addClass(M))}),lay(e[3]).on("click",function(e){i.change(n).nextMonth()}),lay(e[4]).on("click",function(e){i.change(n).nextYear()})}),lay.each(i.table,function(e,t){lay(t).find("td").on("click",function(){i.choose(lay(this),e)})}),lay(i.footer).find("span").on("click",function(){var e=lay(this).attr("lay-type");i.tool(this,e)})},k.prototype.isInput=function(e){return/input|textarea/.test(e.tagName.toLocaleLowerCase())||/INPUT|TEXTAREA/.test(e.tagName)},k.prototype.events=function(){var e,t=this,a=t.config;a.elem[0]&&!a.elem[0].eventHandler&&(a.elem.on(a.trigger,e=function(){T.thisId!==a.id&&t.render()}),a.elem[0].eventHandler=!0,a.eventElem.on(a.trigger,e),t.unbind=function(){t.remove(),a.elem.off(a.trigger,e),a.elem.removeAttr("lay-key"),a.elem.removeAttr(d),a.elem[0].eventHandler=!1,a.eventElem.off(a.trigger,e),a.eventElem.removeAttr("lay-key"),delete s.that[a.id]})},s.that={},s.getThis=function(e){var t=s.that[e];return!t&&n&&layui.hint().error(e?a+" instance with ID '"+e+"' not found":"ID argument required"),t},l.run=function(n){n(D).on("mousedown",function(e){var t,a;T.thisId&&(t=s.getThis(T.thisId))&&(a=t.config,e.target===a.elem[0]||e.target===a.eventElem[0]||e.target===n(a.closeStop)[0]||a.elem[0]&&a.elem[0].contains(e.target)||t.remove())}).on("keydown",function(e){var t;T.thisId&&(t=s.getThis(T.thisId))&&"static"!==t.config.position&&13===e.keyCode&&n("#"+t.elemID)[0]&&t.elemID===k.thisElemDate&&(e.preventDefault(),n(t.footer).find(L)[0].click())}),n(i).on("resize",function(){if(T.thisId){var e=s.getThis(T.thisId);if(e)return!(!e.elem||!n(".layui-laydate")[0])&&void e.position()}})},T.render=function(e){e=new k(e);return s.call(e)},T.reload=function(e,t){e=s.getThis(e);if(e)return e.reload(t)},T.getInst=function(e){e=s.getThis(e);if(e)return e.inst},T.hint=function(e,t){e=s.getThis(e);if(e)return e.hint(t)},T.unbind=function(e){e=s.getThis(e);if(e)return e.unbind()},T.close=function(e){e=s.getThis(e||T.thisId);if(e)return e.remove()},T.parse=function(a,n,i){return a=a||{},n=((n="string"==typeof n?s.formatArr(n):n)||[]).concat(),lay.each(n,function(e,t){/yyyy|y/.test(t)?n[e]=lay.digit(a.year,t.length):/MM|M/.test(t)?n[e]=lay.digit(a.month+(i||0),t.length):/dd|d/.test(t)?n[e]=lay.digit(a.date,t.length):/HH|H/.test(t)?n[e]=lay.digit(a.hours,t.length):/mm|m/.test(t)?n[e]=lay.digit(a.minutes,t.length):/ss|s/.test(t)&&(n[e]=lay.digit(a.seconds,t.length))}),n.join("")},T.getEndDate=function(e,t){var a=new Date;return a.setFullYear(t||a.getFullYear(),e||a.getMonth()+1,1),new Date(a.getTime()-864e5).getDate()},n?(T.ready(),layui.define("lay",function(e){T.path=layui.cache.dir,l.run(lay),e(a,T)})):"function"==typeof define&&define.amd?define(function(){return l.run(lay),T}):(T.ready(),l.run(i.lay),i.laydate=T)}(window,window.document);!function(e,t){"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e):function(e){if(e.document)return t(e);throw new Error("jQuery requires a window with a document")}:t(e)}("undefined"!=typeof window?window:this,function(T,M){var f=[],g=T.document,c=f.slice,O=f.concat,R=f.push,P=f.indexOf,B={},W=B.toString,m=B.hasOwnProperty,y={},e="1.12.4",C=function(e,t){return new C.fn.init(e,t)},I=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,$=/^-ms-/,z=/-([\da-z])/gi,X=function(e,t){return t.toUpperCase()};function U(e){var t=!!e&&"length"in e&&e.length,n=C.type(e);return"function"!==n&&!C.isWindow(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+a+")"+a+"*"),ee=new RegExp("="+a+"*([^\\]'\"]*?)"+a+"*\\]","g"),te=new RegExp(G),ne=new RegExp("^"+s+"$"),f={ID:new RegExp("^#("+s+")"),CLASS:new RegExp("^\\.("+s+")"),TAG:new RegExp("^("+s+"|[*])"),ATTR:new RegExp("^"+J),PSEUDO:new RegExp("^"+G),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+a+"*(even|odd|(([+-]|)(\\d*)n|)"+a+"*(?:([+-]|)"+a+"*(\\d+)|))"+a+"*\\)|)","i"),bool:new RegExp("^(?:"+Y+")$","i"),needsContext:new RegExp("^"+a+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+a+"*((?:-\\d)?\\d*)"+a+"*\\)|)(?=[^-]|$)","i")},re=/^(?:input|select|textarea|button)$/i,ie=/^h\d$/i,c=/^[^{]+\{\s*\[native \w/,oe=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ae=/[+~]/,se=/'|\\/g,d=new RegExp("\\\\([\\da-f]{1,6}"+a+"?|("+a+")|.)","ig"),p=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(65536+r):String.fromCharCode(r>>10|55296,1023&r|56320)},ue=function(){C()};try{D.apply(n=V.call(v.childNodes),v.childNodes),n[v.childNodes.length].nodeType}catch(F){D={apply:n.length?function(e,t){U.apply(e,V.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function H(e,t,n,r){var i,o,a,s,u,l,c,f,d=t&&t.ownerDocument,p=t?t.nodeType:9;if(n=n||[],"string"!=typeof e||!e||1!==p&&9!==p&&11!==p)return n;if(!r&&((t?t.ownerDocument||t:v)!==E&&C(t),t=t||E,N)){if(11!==p&&(l=oe.exec(e)))if(i=l[1]){if(9===p){if(!(a=t.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(d&&(a=d.getElementById(i))&&y(t,a)&&a.id===i)return n.push(a),n}else{if(l[2])return D.apply(n,t.getElementsByTagName(e)),n;if((i=l[3])&&g.getElementsByClassName&&t.getElementsByClassName)return D.apply(n,t.getElementsByClassName(i)),n}if(g.qsa&&!A[e+" "]&&(!m||!m.test(e))){if(1!==p)d=t,f=e;else if("object"!==t.nodeName.toLowerCase()){for((s=t.getAttribute("id"))?s=s.replace(se,"\\$&"):t.setAttribute("id",s=k),o=(c=w(e)).length,u=ne.test(s)?"#"+s:"[id='"+s+"']";o--;)c[o]=u+" "+_(c[o]);f=c.join(","),d=ae.test(e)&&de(t.parentNode)||t}if(f)try{return D.apply(n,d.querySelectorAll(f)),n}catch(h){}finally{s===k&&t.removeAttribute("id")}}}return P(e.replace(L,"$1"),t,n,r)}function le(){var n=[];function r(e,t){return n.push(e+" ")>b.cacheLength&&delete r[n.shift()],r[e+" "]=t}return r}function q(e){return e[k]=!0,e}function h(e){var t=E.createElement("div");try{return!!e(t)}catch(F){return!1}finally{t.parentNode&&t.parentNode.removeChild(t)}}function ce(e,t){for(var n=e.split("|"),r=n.length;r--;)b.attrHandle[n[r]]=t}function fe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||1<<31)-(~e.sourceIndex||1<<31);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function x(a){return q(function(o){return o=+o,q(function(e,t){for(var n,r=a([],e.length,o),i=r.length;i--;)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function de(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in g=H.support={},O=H.isXML=function(e){e=e&&(e.ownerDocument||e).documentElement;return!!e&&"HTML"!==e.nodeName},C=H.setDocument=function(e){var e=e?e.ownerDocument||e:v;return e!==E&&9===e.nodeType&&e.documentElement&&(t=(E=e).documentElement,N=!O(E),(e=E.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",ue,!1):e.attachEvent&&e.attachEvent("onunload",ue)),g.attributes=h(function(e){return e.className="i",!e.getAttribute("className")}),g.getElementsByTagName=h(function(e){return e.appendChild(E.createComment("")),!e.getElementsByTagName("*").length}),g.getElementsByClassName=c.test(E.getElementsByClassName),g.getById=h(function(e){return t.appendChild(e).id=k,!E.getElementsByName||!E.getElementsByName(k).length}),g.getById?(b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&N)return(e=t.getElementById(e))?[e]:[]},b.filter.ID=function(e){var t=e.replace(d,p);return function(e){return e.getAttribute("id")===t}}):(delete b.find.ID,b.filter.ID=function(e){var t=e.replace(d,p);return function(e){e="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return e&&e.value===t}}),b.find.TAG=g.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):g.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"!==e)return o;for(;n=o[i++];)1===n.nodeType&&r.push(n);return r},b.find.CLASS=g.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&N)return t.getElementsByClassName(e)},r=[],m=[],(g.qsa=c.test(E.querySelectorAll))&&(h(function(e){t.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&m.push("[*^$]="+a+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||m.push("\\["+a+"*(?:value|"+Y+")"),e.querySelectorAll("[id~="+k+"-]").length||m.push("~="),e.querySelectorAll(":checked").length||m.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||m.push(".#.+[+~]")}),h(function(e){var t=E.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&m.push("name"+a+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||m.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),m.push(",.*:")})),(g.matchesSelector=c.test(i=t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.oMatchesSelector||t.msMatchesSelector))&&h(function(e){g.disconnectedMatch=i.call(e,"div"),i.call(e,"[s!='']:x"),r.push("!=",G)}),m=m.length&&new RegExp(m.join("|")),r=r.length&&new RegExp(r.join("|")),e=c.test(t.compareDocumentPosition),y=e||c.test(t.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,t=t&&t.parentNode;return e===t||!(!t||1!==t.nodeType||!(n.contains?n.contains(t):e.compareDocumentPosition&&16&e.compareDocumentPosition(t)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},$=e?function(e,t){var n;return e===t?(l=!0,0):(n=!e.compareDocumentPosition-!t.compareDocumentPosition)||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!g.sortDetached&&t.compareDocumentPosition(e)===n?e===E||e.ownerDocument===v&&y(v,e)?-1:t===E||t.ownerDocument===v&&y(v,t)?1:u?j(u,e)-j(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===E?-1:t===E?1:i?-1:o?1:u?j(u,e)-j(u,t):0;if(i===o)return fe(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;a[r]===s[r];)r++;return r?fe(a[r],s[r]):a[r]===v?-1:s[r]===v?1:0}),E},H.matches=function(e,t){return H(e,null,null,t)},H.matchesSelector=function(e,t){if((e.ownerDocument||e)!==E&&C(e),t=t.replace(ee,"='$1']"),g.matchesSelector&&N&&!A[t+" "]&&(!r||!r.test(t))&&(!m||!m.test(t)))try{var n=i.call(e,t);if(n||g.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(F){}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(d,p),e[3]=(e[3]||e[4]||e[5]||"").replace(d,p),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||H.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&H.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return f.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&te.test(n)&&(t=(t=w(n,!0))&&n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(d,p).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=W[e+" "];return t||(t=new RegExp("(^|"+a+")"+e+"("+a+"|$)"))&&W(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(t,n,r){return function(e){e=H.attr(e,t);return null==e?"!="===n:!n||(e+="","="===n?e===r:"!="===n?e!==r:"^="===n?r&&0===e.indexOf(r):"*="===n?r&&-1(?:<\/\1>|)$/,G=/^.[^:#\[\.,]*$/;function K(e,n,r){if(C.isFunction(n))return C.grep(e,function(e,t){return!!n.call(e,t,e)!==r});if(n.nodeType)return C.grep(e,function(e){return e===n!==r});if("string"==typeof n){if(G.test(n))return C.filter(n,e,r);n=C.filter(n,e)}return C.grep(e,function(e){return-1)[^>]*|#([\w-]*))$/,ee=((C.fn.init=function(e,t,n){if(e){if(n=n||Q,"string"!=typeof e)return e.nodeType?(this.context=this[0]=e,this.length=1,this):C.isFunction(e)?"undefined"!=typeof n.ready?n.ready(e):e(C):(e.selector!==undefined&&(this.selector=e.selector,this.context=e.context),C.makeArray(e,this));if(!(r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&3<=e.length?[null,e,null]:Z.exec(e))||!r[1]&&t)return(!t||t.jquery?t||n:this.constructor(t)).find(e);if(r[1]){if(t=t instanceof C?t[0]:t,C.merge(this,C.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:g,!0)),J.test(r[1])&&C.isPlainObject(t))for(var r in t)C.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r])}else{if((n=g.getElementById(r[2]))&&n.parentNode){if(n.id!==r[2])return Q.find(e);this.length=1,this[0]=n}this.context=g,this.selector=e}}return this}).prototype=C.fn,Q=C(g),/^(?:parents|prev(?:Until|All))/),te={children:!0,contents:!0,next:!0,prev:!0};function ne(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}C.fn.extend({has:function(e){var t,n=C(e,this),r=n.length;return this.filter(function(){for(t=0;t
        a",y.leadingWhitespace=3===S.firstChild.nodeType,y.tbody=!S.getElementsByTagName("tbody").length,y.htmlSerialize=!!S.getElementsByTagName("link").length,y.html5Clone="<:nav>"!==g.createElement("nav").cloneNode(!0).outerHTML,q.type="checkbox",q.checked=!0,k.appendChild(q),y.appendChecked=q.checked,S.innerHTML="",y.noCloneChecked=!!S.cloneNode(!0).lastChild.defaultValue,k.appendChild(S),(q=g.createElement("input")).setAttribute("type","radio"),q.setAttribute("checked","checked"),q.setAttribute("name","t"),S.appendChild(q),y.checkClone=S.cloneNode(!0).cloneNode(!0).lastChild.checked,y.noCloneEvent=!!S.addEventListener,S[C.expando]=1,y.attributes=!S.getAttribute(C.expando);var x={option:[1,""],legend:[1,"
        ","
        "],area:[1,"",""],param:[1,"",""],thead:[1,"","
        "],tr:[2,"","
        "],col:[2,"","
        "],td:[3,"","
        "],_default:y.htmlSerialize?[0,"",""]:[1,"X
        ","
        "]};function b(e,t){var n,r,i=0,o="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):undefined;if(!o)for(o=[],n=e.childNodes||e;null!=(r=n[i]);i++)!t||C.nodeName(r,t)?o.push(r):C.merge(o,b(r,t));return t===undefined||t&&C.nodeName(e,t)?C.merge([e],o):o}function we(e,t){for(var n,r=0;null!=(n=e[r]);r++)C._data(n,"globalEval",!t||C._data(t[r],"globalEval"))}x.optgroup=x.option,x.tbody=x.tfoot=x.colgroup=x.caption=x.thead,x.th=x.td;var Te=/<|&#?\w+;/,Ce=/"!==f[1]||Ce.test(a)?0:u:u.firstChild)&&a.childNodes.length;o--;)C.nodeName(c=a.childNodes[o],"tbody")&&!c.childNodes.length&&a.removeChild(c);for(C.merge(h,u.childNodes),u.textContent="";u.firstChild;)u.removeChild(u.firstChild);u=p.lastChild}else h.push(t.createTextNode(a));for(u&&p.removeChild(u),y.appendChecked||C.grep(b(h,"input"),Ee),g=0;a=h[g++];)if(r&&-1]","i"),Pe=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,Be=/\s*$/g,ze=be(g).appendChild(g.createElement("div"));function Xe(e,t){return C.nodeName(e,"table")&&C.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ue(e){return e.type=(null!==C.find.attr(e,"type"))+"/"+e.type,e}function Ve(e){var t=Ie.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function Ye(e,t){if(1===t.nodeType&&C.hasData(e)){var n,r,i,e=C._data(e),o=C._data(t,e),a=e.events;if(a)for(n in delete o.handle,o.events={},a)for(r=0,i=a[n].length;r")},clone:function(e,t,n){var r,i,o,a,s,u=C.contains(e.ownerDocument,e);if(y.html5Clone||C.isXMLDoc(e)||!Re.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(ze.innerHTML=e.outerHTML,ze.removeChild(o=ze.firstChild)),!(y.noCloneEvent&&y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||C.isXMLDoc(e)))for(r=b(o),s=b(e),a=0;null!=(i=s[a]);++a)if(r[a]){f=c=l=p=d=void 0;var l,c,f,d=i,p=r[a];if(1===p.nodeType){if(l=p.nodeName.toLowerCase(),!y.noCloneEvent&&p[C.expando]){for(c in(f=C._data(p)).events)C.removeEvent(p,c,f.handle);p.removeAttribute(C.expando)}"script"===l&&p.text!==d.text?(Ue(p).text=d.text,Ve(p)):"object"===l?(p.parentNode&&(p.outerHTML=d.outerHTML),y.html5Clone&&d.innerHTML&&!C.trim(p.innerHTML)&&(p.innerHTML=d.innerHTML)):"input"===l&&ge.test(d.type)?(p.defaultChecked=p.checked=d.checked,p.value!==d.value&&(p.value=d.value)):"option"===l?p.defaultSelected=p.selected=d.defaultSelected:"input"!==l&&"textarea"!==l||(p.defaultValue=d.defaultValue)}}if(t)if(n)for(s=s||b(e),r=r||b(o),a=0;null!=(i=s[a]);a++)Ye(i,r[a]);else Ye(e,o);return 0<(r=b(o,"script")).length&&we(r,!u&&b(e,"script")),r=s=i=null,o},cleanData:function(e,t){for(var n,r,i,o,a=0,s=C.expando,u=C.cache,l=y.attributes,c=C.event.special;null!=(n=e[a]);a++)if((t||v(n))&&(o=(i=n[s])&&u[i])){if(o.events)for(r in o.events)c[r]?C.event.remove(n,r):C.removeEvent(n,r,o.handle);u[i]&&(delete u[i],l||"undefined"==typeof n.removeAttribute?n[s]=undefined:n.removeAttribute(s),f.push(i))}}}),C.fn.extend({domManip:w,detach:function(e){return Je(this,e,!0)},remove:function(e){return Je(this,e)},text:function(e){return d(this,function(e){return e===undefined?C.text(this):this.empty().append((this[0]&&this[0].ownerDocument||g).createTextNode(e))},null,e,arguments.length)},append:function(){return w(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Xe(this,e).appendChild(e)})},prepend:function(){return w(this,arguments,function(e){var t;1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(t=Xe(this,e)).insertBefore(e,t.firstChild)})},before:function(){return w(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return w(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++){for(1===e.nodeType&&C.cleanData(b(e,!1));e.firstChild;)e.removeChild(e.firstChild);e.options&&C.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return C.clone(this,e,t)})},html:function(e){return d(this,function(e){var t=this[0]||{},n=0,r=this.length;if(e===undefined)return 1===t.nodeType?t.innerHTML.replace(Oe,""):undefined;if("string"==typeof e&&!Be.test(e)&&(y.htmlSerialize||!Re.test(e))&&(y.leadingWhitespace||!ve.test(e))&&!x[(me.exec(e)||["",""])[1].toLowerCase()]){e=C.htmlPrefilter(e);try{for(;n")).appendTo(t.documentElement))[0].contentWindow||Ge[0].contentDocument).document).write(),t.close(),n=Qe(e,t),Ge.detach()),Ke[e]=n),n}var n,et,tt,nt,rt,it,ot,a,at=/^margin/,st=new RegExp("^("+e+")(?!px)[a-z%]+$","i"),ut=function(e,t,n,r){var i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.apply(e,r||[]),t)e.style[i]=o[i];return r},lt=g.documentElement;function t(){var e,t=g.documentElement;t.appendChild(ot),a.style.cssText="-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",n=tt=it=!1,et=rt=!0,T.getComputedStyle&&(e=T.getComputedStyle(a),n="1%"!==(e||{}).top,it="2px"===(e||{}).marginLeft,tt="4px"===(e||{width:"4px"}).width,a.style.marginRight="50%",et="4px"===(e||{marginRight:"4px"}).marginRight,(e=a.appendChild(g.createElement("div"))).style.cssText=a.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",e.style.marginRight=e.style.width="0",a.style.width="1px",rt=!parseFloat((T.getComputedStyle(e)||{}).marginRight),a.removeChild(e)),a.style.display="none",(nt=0===a.getClientRects().length)&&(a.style.display="",a.innerHTML="
        t
        ",a.childNodes[0].style.borderCollapse="separate",(e=a.getElementsByTagName("td"))[0].style.cssText="margin:0;border:0;padding:0;display:none",nt=0===e[0].offsetHeight)&&(e[0].style.display="",e[1].style.display="none",nt=0===e[0].offsetHeight),t.removeChild(ot)}ot=g.createElement("div"),(a=g.createElement("div")).style&&(a.style.cssText="float:left;opacity:.5",y.opacity="0.5"===a.style.opacity,y.cssFloat=!!a.style.cssFloat,a.style.backgroundClip="content-box",a.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===a.style.backgroundClip,(ot=g.createElement("div")).style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",a.innerHTML="",ot.appendChild(a),y.boxSizing=""===a.style.boxSizing||""===a.style.MozBoxSizing||""===a.style.WebkitBoxSizing,C.extend(y,{reliableHiddenOffsets:function(){return null==n&&t(),nt},boxSizingReliable:function(){return null==n&&t(),tt},pixelMarginRight:function(){return null==n&&t(),et},pixelPosition:function(){return null==n&&t(),n},reliableMarginRight:function(){return null==n&&t(),rt},reliableMarginLeft:function(){return null==n&&t(),it}}));var l,p,ct=/^(top|right|bottom|left)$/;function ft(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}T.getComputedStyle?(l=function(e){var t=e.ownerDocument.defaultView;return(t=t&&t.opener?t:T).getComputedStyle(e)},p=function(e,t,n){var r,i,o=e.style;return""!==(i=(n=n||l(e))?n.getPropertyValue(t)||n[t]:undefined)&&i!==undefined||C.contains(e.ownerDocument,e)||(i=C.style(e,t)),n&&!y.pixelMarginRight()&&st.test(i)&&at.test(t)&&(e=o.width,t=o.minWidth,r=o.maxWidth,o.minWidth=o.maxWidth=o.width=i,i=n.width,o.width=e,o.minWidth=t,o.maxWidth=r),i===undefined?i:i+""}):lt.currentStyle&&(l=function(e){return e.currentStyle},p=function(e,t,n){var r,i,o,a=e.style;return null==(n=(n=n||l(e))?n[t]:undefined)&&a&&a[t]&&(n=a[t]),st.test(n)&&!ct.test(t)&&(r=a.left,(o=(i=e.runtimeStyle)&&i.left)&&(i.left=e.currentStyle.left),a.left="fontSize"===t?"1em":n,n=a.pixelLeft+"px",a.left=r,o)&&(i.left=o),n===undefined?n:n+""||"auto"});var dt=/alpha\([^)]*\)/i,pt=/opacity\s*=\s*([^)]*)/i,ht=/^(none|table(?!-c[ea]).+)/,gt=new RegExp("^("+e+")(.*)$","i"),mt={position:"absolute",visibility:"hidden",display:"block"},yt={letterSpacing:"0",fontWeight:"400"},vt=["Webkit","O","Moz","ms"],xt=g.createElement("div").style;function bt(e){if(e in xt)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=vt.length;n--;)if((e=vt[n]+t)in xt)return e}function wt(e,t){for(var n,r,i,o=[],a=0,s=e.length;a
        a",F=q.getElementsByTagName("a")[0],k.setAttribute("type","checkbox"),q.appendChild(k),(F=q.getElementsByTagName("a")[0]).style.cssText="top:1px",y.getSetAttribute="t"!==q.className,y.style=/top/.test(F.getAttribute("style")),y.hrefNormalized="/a"===F.getAttribute("href"),y.checkOn=!!k.value,y.optSelected=e.selected,y.enctype=!!g.createElement("form").enctype,S.disabled=!0,y.optDisabled=!e.disabled,(k=g.createElement("input")).setAttribute("value",""),y.input=""===k.getAttribute("value"),k.value="t",k.setAttribute("type","radio"),y.radioValue="t"===k.value;var Lt=/\r/g,Ht=/[\x20\t\r\n\f]+/g;C.fn.extend({val:function(t){var n,e,r,i=this[0];return arguments.length?(r=C.isFunction(t),this.each(function(e){1!==this.nodeType||(null==(e=r?t.call(this,e,C(this).val()):t)?e="":"number"==typeof e?e+="":C.isArray(e)&&(e=C.map(e,function(e){return null==e?"":e+""})),(n=C.valHooks[this.type]||C.valHooks[this.nodeName.toLowerCase()])&&"set"in n&&n.set(this,e,"value")!==undefined)||(this.value=e)})):i?(n=C.valHooks[i.type]||C.valHooks[i.nodeName.toLowerCase()])&&"get"in n&&(e=n.get(i,"value"))!==undefined?e:"string"==typeof(e=i.value)?e.replace(Lt,""):null==e?"":e:void 0}}),C.extend({valHooks:{option:{get:function(e){var t=C.find.attr(e,"value");return null!=t?t:C.trim(C.text(e)).replace(Ht," ")}},select:{get:function(e){for(var t,n=e.options,r=e.selectedIndex,i="select-one"===e.type||r<0,o=i?null:[],a=i?r+1:n.length,s=r<0?a:i?r:0;s").append(C.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this)},C.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){C.fn[t]=function(e){return this.on(t,e)}}),C.expr.filters.animated=function(t){return C.grep(C.timers,function(e){return t===e.elem}).length},C.offset={setOffset:function(e,t,n){var r,i,o,a,s=C.css(e,"position"),u=C(e),l={};"static"===s&&(e.style.position="relative"),o=u.offset(),r=C.css(e,"top"),a=C.css(e,"left"),s=("absolute"===s||"fixed"===s)&&-1'+(s?a.title[0]:a.title)+"
        ":"";return a.zIndex=o,t([a.shade?'
        ':"",'
        '+(e&&2!=a.type?"":s)+"'+(n=["layui-icon-tips","layui-icon-success","layui-icon-error","layui-icon-question","layui-icon-lock","layui-icon-face-cry","layui-icon-face-smile"],o="layui-anim layui-anim-rotate layui-anim-loop",0==a.type&&-1!==a.icon?'':3==a.type?(i=["layui-icon-loading","layui-icon-loading-1"],2==a.icon?'
        ':''):"")+((1!=a.type||!e)&&a.content||"")+'
        '+(n=[],r&&(n.push(''),n.push('')),a.closeBtn&&n.push(''),n.join(""))+"
        "+(a.btn?function(){var e="";"string"==typeof a.btn&&(a.btn=[a.btn]);for(var t,i=0,n=a.btn.length;i'+a.btn[i]+"";return'
        '+e+"
        "}():"")+(a.resize?'':"")+"
        "],s,m('
        ')),this},t.pt.creat=function(){var e,t,i,n,a=this,o=a.config,s=a.index,r="object"==typeof(f=o.content),l=m("body"),c=function(e){var t;o.shift&&(o.anim=o.shift),u.anim[o.anim]&&(t="layer-anim "+u.anim[o.anim],e.addClass(t).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",function(){m(this).removeClass(t)}))};if(o.id&&m("."+u[0]).find("#"+o.id)[0])e=m("#"+o.id).closest("."+u[0]),t=e.attr("times"),i=e.data("config"),n=m("#"+u.SHADE+t),"min"===(e.data("maxminStatus")||{})?v.restore(t):i.hideOnClose&&(n.show(),e.show(),c(e),setTimeout(function(){n.css({opacity:n.data(y)})},10));else{switch(o.removeFocus&&document.activeElement&&document.activeElement.blur(),"string"==typeof o.area&&(o.area="auto"===o.area?["",""]:[o.area,""]),6==v.ie&&(o.fixed=!1),o.type){case 0:o.btn="btn"in o?o.btn:d.btn[0],v.closeAll("dialog");break;case 2:var f=o.content=r?o.content:[o.content||"","auto"];o.content='';break;case 3:delete o.title,delete o.closeBtn,-1===o.icon&&o.icon,v.closeAll("loading");break;case 4:r||(o.content=[o.content,"body"]),o.follow=o.content[1],o.content=o.content[0]+'',delete o.title,o.tips="object"==typeof o.tips?o.tips:[o.tips,!0],o.tipsMore||v.closeAll("tips")}a.vessel(r,function(e,t,i){l.append(e[0]),r?2==o.type||4==o.type?m("body").append(e[1]):f.parents("."+u[0])[0]||(f.data("display",f.css("display")).show().addClass("layui-layer-wrap").wrap(e[1]),m("#"+u[0]+s).find("."+u[5]).before(t)):l.append(e[1]),m("#"+u.MOVE)[0]||l.append(d.moveElem=i),a.layero=m("#"+u[0]+s),a.shadeo=m("#"+u.SHADE+s),o.scrollbar||d.setScrollbar(s)}).auto(s),a.shadeo.css({"background-color":o.shade[1]||"#000",opacity:o.shade[0]||o.shade,transition:o.shade[2]||""}),a.shadeo.data(y,o.shade[0]||o.shade),2==o.type&&6==v.ie&&a.layero.find("iframe").attr("src",f[0]),4==o.type?a.tips():(a.offset(),parseInt(d.getStyle(document.getElementById(u.MOVE),"z-index"))||(a.layero.css("visibility","hidden"),v.ready(function(){a.offset(),a.layero.css("visibility","visible")}))),!o.fixed||d.events.resize[a.index]||(d.events.resize[a.index]=function(){a.resize()},g.on("resize",d.events.resize[a.index])),o.time<=0||setTimeout(function(){v.close(a.index)},o.time),a.move().callback(),c(a.layero),a.layero.data("config",o)}},t.pt.resize=function(){var e=this,t=e.config;e.offset(),(/^\d+%$/.test(t.area[0])||/^\d+%$/.test(t.area[1]))&&e.auto(e.index),4==t.type&&e.tips()},t.pt.auto=function(e){var t=this.config,i=m("#"+u[0]+e),n=(""===t.area[0]&&0t.maxWidth)&&i.width(t.maxWidth),[i.innerWidth(),i.innerHeight()]),a=i.find(u[1]).outerHeight()||0,o=i.find("."+u[6]).outerHeight()||0,e=function(e){(e=i.find(e)).height(n[1]-a-o-2*(0|parseFloat(e.css("padding-top"))))};return 2===t.type?e("iframe"):""===t.area[1]?0t.maxHeight?(n[1]=t.maxHeight,e("."+u[5])):t.fixed&&n[1]>=g.height()&&(n[1]=g.height(),e("."+u[5])):e("."+u[5]),this},t.pt.offset=function(){var e=this,t=e.config,i=e.layero,n=[i.outerWidth(),i.outerHeight()],a="object"==typeof t.offset;e.offsetTop=(g.height()-n[1])/2,e.offsetLeft=(g.width()-n[0])/2,a?(e.offsetTop=t.offset[0],e.offsetLeft=t.offset[1]||e.offsetLeft):"auto"!==t.offset&&("t"===t.offset?e.offsetTop=0:"r"===t.offset?e.offsetLeft=g.width()-n[0]:"b"===t.offset?e.offsetTop=g.height()-n[1]:"l"===t.offset?e.offsetLeft=0:"lt"===t.offset?(e.offsetTop=0,e.offsetLeft=0):"lb"===t.offset?(e.offsetTop=g.height()-n[1],e.offsetLeft=0):"rt"===t.offset?(e.offsetTop=0,e.offsetLeft=g.width()-n[0]):"rb"===t.offset?(e.offsetTop=g.height()-n[1],e.offsetLeft=g.width()-n[0]):e.offsetTop=t.offset),t.fixed||(e.offsetTop=/%$/.test(e.offsetTop)?g.height()*parseFloat(e.offsetTop)/100:parseFloat(e.offsetTop),e.offsetLeft=/%$/.test(e.offsetLeft)?g.width()*parseFloat(e.offsetLeft)/100:parseFloat(e.offsetLeft),e.offsetTop+=g.scrollTop(),e.offsetLeft+=g.scrollLeft()),"min"===i.data("maxminStatus")&&(e.offsetTop=g.height()-(i.find(u[1]).outerHeight()||0),e.offsetLeft=i.css("left")),i.css({top:e.offsetTop,left:e.offsetLeft})},t.pt.tips=function(){var e=this.config,t=this.layero,i=[t.outerWidth(),t.outerHeight()],n=m(e.follow),a={width:(n=n[0]?n:m("body")).outerWidth(),height:n.outerHeight(),top:n.offset().top,left:n.offset().left},o=t.find(".layui-layer-TipsG"),n=e.tips[0];e.tips[1]||o.remove(),a.autoLeft=function(){0g.width()&&(o=g.width()-180-(d.minStackArr.edgeIndex=d.minStackArr.edgeIndex||0,d.minStackArr.edgeIndex+=3))<0&&(o=0),t.minStack&&(r.left=o,r.top=g.height()-n,a||d.minStackIndex++,l.attr("minLeft",o)),l.attr("position",s),v.style(e,r,!0),i.hide(),"page"===l.attr("type")&&l.find(u[4]).hide(),d.restScrollbar(e),c.hide())},v.restore=function(e){var t=m("#"+u[0]+e),i=m("#"+u.SHADE+e),n=t.find(".layui-layer-content"),a=t.attr("area").split(","),o=t.attr("type"),s=t.data("config")||{},r=n.data(l);t.removeData("maxminStatus"),v.style(e,{width:a[0],height:a[1],top:parseFloat(a[2]),left:parseFloat(a[3]),position:t.attr("position"),overflow:"visible"},!0),t.find(".layui-layer-max").removeClass("layui-layer-maxmin"),t.find(".layui-layer-min").show(),"page"===o&&t.find(u[4]).show(),s.scrollbar?d.restScrollbar(e):d.setScrollbar(e),r!==h&&(n.removeData(l),(o===d.type[2]?n.children("iframe"):n).css({height:r})),i.show()},v.full=function(t){var i=m("#"+u[0]+t),e=i.data("maxminStatus");"max"!==e&&("min"===e&&v.restore(t),i.data("maxminStatus","max"),d.record(i),u.html.attr("layer-full")||d.setScrollbar(t),setTimeout(function(){var e="fixed"===i.css("position");v.style(t,{top:e?0:g.scrollTop(),left:e?0:g.scrollLeft(),width:"100%",height:"100%"},!0),i.find(".layui-layer-min").hide()},100))},v.title=function(e,t){m("#"+u[0]+(t||v.index)).find(u[1]).html(e)},v.close=function(s,r){var t,e,i,l=(e=m("."+u[0]).children("#"+s).closest("."+u[0]))[0]?(s=e.attr("times"),e):m("#"+u[0]+s),c=l.attr("type"),n=l.data("config")||{},f=n.id&&n.hideOnClose;l[0]&&(t=function(){var o={slideDown:"layer-anim-slide-down-out",slideLeft:"layer-anim-slide-left-out",slideUp:"layer-anim-slide-up-out",slideRight:"layer-anim-slide-right-out"}[n.anim]||"layer-anim-close",e=function(){var e="layui-layer-wrap";if(f)return l.removeClass("layer-anim "+o),l.hide();if(c===d.type[1]&&"object"===l.attr("conType")){l.children(":not(."+u[5]+")").remove();for(var t=l.find("."+e),i=0;i<2;i++)t.unwrap();t.css("display",t.data("display")).removeClass(e)}else{if(c===d.type[2])try{var n=m("#"+u[4]+s)[0];n.contentWindow.document.write(""),n.contentWindow.close(),l.find("."+u[5])[0].removeChild(n)}catch(a){}l[0].innerHTML="",l.remove()}"function"==typeof d.end[s]&&d.end[s](),delete d.end[s],"function"==typeof r&&r(),d.events.resize[s]&&(g.off("resize",d.events.resize[s]),delete d.events.resize[s])},t=m("#"+u.SHADE+s);v.ie&&v.ie<10||!n.isOutAnim?t[f?"hide":"remove"]():(t.css({opacity:0}),setTimeout(function(){t[f?"hide":"remove"]()},350)),n.isOutAnim&&l.addClass("layer-anim "+o),6==v.ie&&d.reselect(),d.restScrollbar(s),"string"==typeof l.attr("minLeft")&&(d.minStackIndex--,d.minStackArr.push(l.attr("minLeft"))),v.ie&&v.ie<10||!n.isOutAnim?e():setTimeout(function(){e()},200)},f||"function"!=typeof d.beforeEnd[s]?(delete d.beforeEnd[s],t()):(e=d.beforeEnd[s](l,s),i=m.Deferred(),e&&"function"==typeof e.then?e.then(i.resolve,i.reject):i.resolve(e),i.promise().then(function(e){!1!==e&&(delete d.beforeEnd[s],t())},function(e){e!==h&&p.console&&p.console.error("layer error hint: "+e)})))},v.closeAll=function(n,a){"function"==typeof n&&(a=n,n=null);var o=m("."+u[0]);m.each(o,function(e){var t=m(this),i=n?t.attr("type")===n:1;i&&v.close(t.attr("times"),e===o.length-1?a:null)}),0===o.length&&"function"==typeof a&&a()},v.closeLast=function(i,e){var t,n=[],a=m.isArray(i);m("string"==typeof i?".layui-layer-"+i:".layui-layer").each(function(e,t){t=m(t);if(a&&-1===i.indexOf(t.attr("type"))||"none"===t.css("display"))return!0;n.push(Number(t.attr("times")))}),0":'",s=i.success;return delete i.success,v.open(m.extend({type:1,btn:["\u786e\u5b9a","\u53d6\u6d88"],content:o,skin:"layui-layer-prompt"+x("prompt"),maxWidth:g.width(),success:function(e){(a=e.find(".layui-layer-input")).val(i.value||"").focus(),"function"==typeof s&&s(e)},resize:!1,yes:function(e){var t=a.val();t.length>(i.maxlength||500)?v.tips("\u6700\u591a\u8f93\u5165"+(i.maxlength||500)+"\u4e2a\u5b57\u7b26",a,{tips:1}):n&&n(t,e,a)}},i))},v.tab=function(n){var a=(n=n||{}).tab||{},o="layui-this",s=n.success;return delete n.success,v.open(m.extend({type:1,skin:"layui-layer-tab"+x("tab"),resize:!1,title:function(){var e=a.length,t=1,i="";if(0'+a[0].title+"";t"+a[t].title+"";return i}(),content:'
          '+function(){var e=a.length,t=1,i="";if(0'+(a[0].content||"no content")+"";t'+(a[t].content||"no content")+"";return i}()+"
        ",success:function(e){var t=e.find(".layui-layer-title").children(),i=e.find(".layui-layer-tabmain").children();t.on("mousedown",function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0;var e=m(this),t=e.index();e.addClass(o).siblings().removeClass(o),i.eq(t).show().siblings().hide(),"function"==typeof n.change&&n.change(t)}),"function"==typeof s&&s(e)}},n))},v.photos=function(n,e,a){var s={};if((n=m.extend(!0,{toolbar:!0,footer:!0},n)).photos){var t=!("string"==typeof n.photos||n.photos instanceof m),i=t?n.photos:{},o=i.data||[],r=i.start||0,l=n.success;if(s.imgIndex=1+(0|r),n.img=n.img||"img",delete n.success,t){if(0===o.length)return v.msg("\u6ca1\u6709\u56fe\u7247")}else{var c=m(n.photos),f=function(){o=[],c.find(n.img).each(function(e){var t=m(this);t.attr("layer-index",e),o.push({alt:t.attr("alt"),pid:t.attr("layer-pid"),src:t.attr("lay-src")||t.attr("layer-src")||t.attr("src"),thumb:t.attr("src")})})};if(f(),0===o.length)return;if(e||c.on("click",n.img,function(){f();var e=m(this).attr("layer-index");v.photos(m.extend(n,{photos:{start:e,data:o,tab:n.tab},full:n.full}),!0)}),!e)return}s.imgprev=function(e){s.imgIndex--,s.imgIndex<1&&(s.imgIndex=o.length),s.tabimg(e)},s.imgnext=function(e,t){s.imgIndex++,s.imgIndex>o.length&&(s.imgIndex=1,t)||s.tabimg(e)},s.keyup=function(e){var t;s.end||(t=e.keyCode,e.preventDefault(),37===t?s.imgprev(!0):39===t?s.imgnext(!0):27===t&&v.close(s.index))},s.tabimg=function(e){if(!(o.length<=1))return i.start=s.imgIndex-1,v.close(s.index),v.photos(n,!0,e)},s.isNumber=function(e){return"number"==typeof e&&!isNaN(e)},s.image={},s.getTransform=function(e){var t=[],i=e.rotate,n=e.scaleX,e=e.scale;return s.isNumber(i)&&0!==i&&t.push("rotate("+i+"deg)"),s.isNumber(n)&&1!==n&&t.push("scaleX("+n+")"),s.isNumber(e)&&t.push("scale("+e+")"),t.length?t.join(" "):"none"},s.event=function(e,i,n){var a,o;s.main.find(".layui-layer-photos-prev").on("click",function(e){e.preventDefault(),s.imgprev(!0)}),s.main.find(".layui-layer-photos-next").on("click",function(e){e.preventDefault(),s.imgnext(!0)}),m(document).on("keyup",s.keyup),e.off("click").on("click","*[toolbar-event]",function(){var e=m(this);switch(e.attr("toolbar-event")){case"rotate":s.image.rotate=((s.image.rotate||0)+Number(e.attr("data-option")))%360,s.imgElem.css({transform:s.getTransform(s.image)});break;case"scalex":s.image.scaleX=-1===s.image.scaleX?1:-1,s.imgElem.css({transform:s.getTransform(s.image)});break;case"zoom":var t=Number(e.attr("data-option"));s.image.scale=(s.image.scale||1)+t,t<0&&s.image.scale<0-t&&(s.image.scale=0-t),s.imgElem.css({transform:s.getTransform(s.image)});break;case"reset":s.image.scaleX=1,s.image.scale=1,s.image.rotate=0,s.imgElem.css({transform:"none"});break;case"close":v.close(i)}n.offset(),n.auto(i)}),s.main.on("mousewheel DOMMouseScroll",function(e){var t=e.originalEvent.wheelDelta||-e.originalEvent.detail,i=s.main.find('[toolbar-event="zoom"]');(0n)&&("left"===t.direction?s.imgnext(!0):"right"===t.direction&&s.imgprev(!0))},m.each([n.shadeo,s.main],function(e,t){a.touchSwipe(t,{onTouchEnd:o})}))},s.loadi=v.load(1,{shade:!("shade"in n)&&[.9,h,"unset"],scrollbar:!1});var t=o[r].src,d=function(e){v.close(s.loadi);var t,i=o[r].alt||"";a&&(n.anim=-1),s.index=v.open(m.extend({type:1,id:"layui-layer-photos",area:(e=[e.width,e.height],t=[m(p).width()-100,m(p).height()-100],!n.full&&(t[0]'+i+''+(t=['
        '],1','','',"
        "].join("")),n.toolbar&&t.push(['
        ','','','','','','',"
        "].join("")),n.footer&&t.push(['"].join("")),t.push(""),t.join(""))+"",success:function(e,t,i){s.main=e.find(".layer-layer-photos-main"),s.footer=e.find(".layui-layer-photos-footer"),s.imgElem=s.main.children("img"),s.event(e,t,i),n.tab&&n.tab(o[r],e),"function"==typeof l&&l(e)},end:function(){s.end=!0,m(document).off("keyup",s.keyup)}},n))},u=function(){v.close(s.loadi),v.msg("\u5f53\u524d\u56fe\u7247\u5730\u5740\u5f02\u5e38\uff0c
        \u662f\u5426\u7ee7\u7eed\u67e5\u770b\u4e0b\u4e00\u5f20\uff1f",{time:3e4,btn:["\u4e0b\u4e00\u5f20","\u4e0d\u770b\u4e86"],yes:function(){1").addClass(r));layui.each(i.bars,function(t,e){var n=s('
      • ');n.addClass(e.icon).attr({"lay-type":e.type,style:e.style||(i.bgcolor?"background-color: "+i.bgcolor:"")}).html(e.content),n.on("click",function(){var t=s(this).attr("lay-type");"top"===t&&("body"===i.target?s("html,body"):u).animate({scrollTop:0},i.duration),"function"==typeof i.click&&i.click.call(this,t)}),"object"===layui.type(i.on)&&layui.each(i.on,function(t,e){n.on(t,function(){var t=s(this).attr("lay-type");"function"==typeof e&&e.call(this,t)})}),"top"===e.type&&(n.addClass("layui-fixbar-top"),o=n),l.append(n)}),c.find("."+r).remove(),"object"==typeof i.css&&l.css(i.css),c.append(l),o&&(e=function e(){return u.scrollTop()>=i.margin?t||(o.show(),t=1):t&&(o.hide(),t=0),e}()),u.on("scroll",function(){e&&(clearTimeout(n),n=setTimeout(function(){e()},100))})},countdown:function(i){i=s.extend(!0,{date:new Date,now:new Date},i);var o=arguments,r=(1]|&(?=#[a-zA-Z0-9]+)/g.test(t+="")?t.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,"""):t},unescape:function(t){return t!==undefined&&null!==t||(t=""),(t+="").replace(/\&/g,"&").replace(/\</g,"<").replace(/\>/g,">").replace(/\'/g,"'").replace(/\"/g,'"')},openWin:function(t){var e=(t=t||{}).window||window.open(t.url||"",t.target,t.specs);t.url||(e.document.open("text/html","replace"),e.document.write(t.content||""),e.document.close())},toVisibleArea:function(t){var e,n,i,o,r,a,c,u;(t=s.extend({margin:160,duration:200,type:"y"},t)).scrollElem[0]&&t.thisElem[0]&&(e=t.scrollElem,c=t.thisElem,i=(r="y"===t.type)?"top":"left",o=e[n=r?"scrollTop":"scrollLeft"](),r=e[r?"height":"width"](),a=e.offset()[i],u={},(c=c.offset()[i]-a)>r-t.margin||c."+w,E=function(e){var i=this;i.index=++h.index,i.config=c.extend({},i.config,h.config,e),i.init()};E.prototype.config={trigger:"click",content:"",className:"",style:"",show:!1,isAllowSpread:!0,isSpreadItem:!0,data:[],delay:[200,300],shade:0,accordion:!1},E.prototype.reload=function(e,i){var t=this;t.config=c.extend({},t.config,e),t.init(!0,i)},E.prototype.init=function(e,i){var t,n=this,l=n.config,a=c(l.elem);return 1');return 0\u6682\u65e0\u6570\u636e
      • '),e},u=function(r,e){return layui.each(e,function(e,i){var t,n=i[s.children]&&0",(t="href"in i?''+a+"":a,n?'
        '+t+("parent"===o?'':"group"===o&&d.isAllowSpread?'':"")+"
        ":'
        '+t+"
        "),""].join(""))).data("item",i),n&&(l=c('
        '),t=c("
          "),"parent"===o?(l.append(u(t,i[s.children])),a.append(l)):a.append(u(t,i[s.children]))),r.append(a))}),r},l=['
          ',"
          "].join("");!(e="contextmenu"!==d.trigger&&!lay.isTopElem(d.elem[0])?e:!0)&&d.elem.data(y+"_opened")||(a.elemView=c("."+v+"["+f+'="'+d.id+'"]'),"reloadData"===i&&a.elemView.length?a.elemView.html(d.content||n()):(a.elemView=c(l),a.elemView.append(d.content||n()),d.className&&a.elemView.addClass(d.className),d.style&&a.elemView.attr("style",d.style),h.thisId=d.id,a.remove(),t.append(a.elemView),d.elem.data(y+"_opened",!0),e=d.shade?'
          ':"",a.elemView.before(e),"mouseenter"===d.trigger&&a.elemView.on("mouseenter",function(){clearTimeout(g.timer)}).on("mouseleave",function(){a.delayRemove()})),a.position(),(g.prevElem=a.elemView).data("prevElem",d.elem),a.elemView.find(".layui-menu").on(o,function(e){layui.stope(e)}),a.elemView.find(".layui-menu li").on("click",function(e){var i=c(this),t=i.data("item")||{},n=t[s.children]&&0n.width()&&(t.addClass(b),(i=t[0].getBoundingClientRect()).left<0)&&t.removeClass(b),i.bottom>n.height())&&t.eq(0).css("margin-top",-(i.bottom-n.height()+5))}).on("mouseleave",t,function(e){var i=c(this).children("."+x);i.removeClass(b),i.css("margin-top",0)}),h.close=function(e){e=g.getThis(e);return e?(e.remove(),g.call(e)):this},h.open=function(e){e=g.getThis(e);return e?(e.render(),g.call(e)):this},h.reload=function(e,i,t){e=g.getThis(e);return e?(e.reload(i,t),g.call(e)):this},h.reloadData=function(){var t=c.extend([],arguments),n=(t[2]="reloadData",new RegExp("^("+["data","templet","content"].join("|")+")$"));return layui.each(t[1],function(e,i){n.test(e)||delete t[1][e]}),h.reload.apply(null,t)},h.render=function(e){e=new E(e);return g.call(e)},e(r,h)});layui.define(["jquery","lay"],function(e){"use strict";var x=layui.$,b=layui.lay,m={config:{},index:layui.slider?layui.slider.index+1e4:0,set:function(e){var t=this;return t.config=x.extend({},t.config,e),t},on:function(e,t){return layui.onevent.call(this,i,e,t)}},i="slider",f="layui-disabled",T="layui-slider-bar",w="layui-slider-wrap",M="layui-slider-wrap-btn",L="layui-slider-tips",E="layui-slider-input-txt",Y="layui-slider-hover",t=function(e){var t=this;t.index=++m.index,t.config=x.extend({},t.config,m.config,e),t.render()};t.prototype.config={type:"default",min:0,max:100,value:0,step:1,showstep:!1,tips:!0,tipsAlways:!1,input:!1,range:!1,height:200,disabled:!1,theme:"#16baaa"},t.prototype.precision=function(){var e=this.config,e=x.map([e.min,e.max,e.step],function(e,t){e=String(e).split(".");return e[1]?e[1].length:0});return Math.max.apply(null,e)},t.prototype.render=function(){var n=this,a=n.config,e=x(a.elem);if(1a.max&&(a.value=a.max),l=(a.value-a.min)/(a.max-a.min)*100+"%");var t,e=a.disabled?"#c2c2c2":a.theme,i='
          '+(a.tips?'
          ":"")+'
          '+(a.range?'
          ':"")+"
          ",l=x(a.elem),s=l.next(".layui-slider");if(s[0]&&s.remove(),n.elemTemp=x(i),a.range?(n.elemTemp.find("."+w).eq(0).data("value",a.value[0]),n.elemTemp.find("."+w).eq(1).data("value",a.value[1])):n.elemTemp.find("."+w).data("value",a.value),l.html(n.elemTemp),"vertical"===a.type&&n.elemTemp.height(a.height+"px"),a.showstep){for(var o=(a.max-a.min)/a.step,r="",u=1;u<1+o;u++){var c=100*u/o;c<100&&(r+='
          ')}n.elemTemp.append(r)}function d(e){e=e.parent().data("value"),e=a.setTips?a.setTips(e):e;n.elemTemp.find("."+L).html(e)}function p(e){var t="vertical"===a.type?a.height:n.elemTemp[0].offsetWidth,i=n.elemTemp.find("."+w);return("vertical"===a.type?t-e.parent()[0].offsetTop-i.height():e.parent()[0].offsetLeft)/t*100}function v(e){"vertical"===a.type?n.elemTemp.find("."+L).css({bottom:e+"%","margin-bottom":"20px",display:"inline-block"}):n.elemTemp.find("."+L).css({left:e+"%",display:"inline-block"})}a.input&&!a.range&&(e=x('
          '),l.css("position","relative"),l.append(e),l.find("."+E).children("input").val(a.value),"vertical"===a.type?e.css({left:0,top:-48}):n.elemTemp.css("margin-right",e.outerWidth()+15)),a.disabled?(n.elemTemp.addClass(f),n.elemTemp.find("."+M).addClass(f)):n.slide(),a.tips&&(a.tipsAlways?(d(s=n.elemTemp.find("."+M)),v(p(s))):n.elemTemp.find("."+M).on("mouseover",function(){d(x(this));var e=p(x(this));clearTimeout(t),t=setTimeout(function(){v(e)},300)}).on("mouseout",function(){clearTimeout(t),a.tipsAlways||n.elemTemp.find("."+L).css("display","none")}))},t.prototype.slide=function(e,t,i){var u=this,c=u.config,d=u.elemTemp,p=function(){return"vertical"===c.type?c.height:d[0].offsetWidth},v=d.find("."+w),o=d.next(".layui-slider-input"),r=o.children("."+E).children("input").val(),m=100/((c.max-c.min)/c.step),f=u.precision(),h=function(e,t,i){e=(e=100<(e=100n[1]&&n.reverse(),u.value=c.range?n:l,c.change&&c.change(u.value),"done"===i&&c.done&&c.done(u.value)},y=function(e){var t=e/p()*100/m,i=Math.round(t)*m;return i=e==p()?Math.ceil(t)*m:i},g=x(['
          p()?p():t)/p()*100/m;h(t,o),r.addClass(Y),d.find("."+L).show(),e.preventDefault()},n=function(e){r.removeClass(Y),c.tipsAlways||setTimeout(function(){d.find("."+L).hide()},e)},a=function(){n&&n(b.touchEventsSupported()?1e3:0),g.remove(),c.done&&c.done(u.value),b.touchEventsSupported()&&(t[0].removeEventListener("touchmove",i,!!b.passiveSupported&&{passive:!1}),t[0].removeEventListener("touchend",a),t[0].removeEventListener("touchcancel",a))},x("#LAY-slider-moving")[0]||x("body").append(g),g.on("mousemove",i),g.on("mouseup",a).on("mouseleave",a),b.touchEventsSupported()&&(t[0].addEventListener("touchmove",i,!!b.passiveSupported&&{passive:!1}),t[0].addEventListener("touchend",a),t[0].addEventListener("touchcancel",a))})}),d.on("click",function(e){var t=x("."+M),i=x(this);!t.is(event.target)&&0===t.has(event.target).length&&t.length&&(i=(t=(t=(t="vertical"===c.type?p()-e.clientY+i.offset().top-x(window).scrollTop():e.clientX-i.offset().left-x(window).scrollLeft())<0?0:t)>p()?p():t)/p()*100/m,t=c.range?"vertical"===c.type?Math.abs(t-parseInt(x(v[0]).css("bottom")))>Math.abs(t-parseInt(x(v[1]).css("bottom")))?1:0:Math.abs(t-v[0].offsetLeft)>Math.abs(t-v[1].offsetLeft)?1:0:0,h(i,t,"done"),e.preventDefault())}),o.children(".layui-slider-input-btn").children("i").each(function(t){x(this).on("click",function(){r=o.children("."+E).children("input").val();var e=((r=1==t?r-c.stepc.max?c.max:Number(r)+c.step)-c.min)/(c.max-c.min)*100/m;h(e,0,"done")})});var n=function(){var e=this.value,e=(e=(e=(e=isNaN(e)?0:e)c.max?c.max:e,((this.value=e)-c.min)/(c.max-c.min)*100/m);h(e,0,"done")};o.children("."+E).children("input").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),n.call(this))}).on("change",n)},t.prototype.events=function(){this.config},m.render=function(e){e=new t(e);return function(){var i=this,n=i.config;return{setValue:function(e,t){return e=(e=e>n.max?n.max:e)',"",'','',"","","
          "].join("")),t=i.elem=k(i.elem);i.size&&o.addClass("layui-colorpicker-"+i.size),t.addClass("layui-inline").html(e.elemColorBox=o),i.id="id"in i?i.id:t.attr("id")||e.index,e.color=e.elemColorBox.find("."+C)[0].style.background,e.events()},d.prototype.renderPicker=function(){var o,e=this,i=e.config,t=e.elemColorBox[0],n=e.elemPicker=k(['
          ','
          ','
          ','
          ','
          ','
          ',"
          ",'
          ','
          ',"
          ","
          ",'
          ','
          ','
          ',"
          ","
          ",i.predefine?(o=['
          '],layui.each(i.colors,function(e,i){o.push(['
          ','
          ',"
          "].join(""))}),o.push("
          "),o.join("")):"",'
          ','
          ','',"
          ",'
          ','','',"","
          "].join(""));e.elemColorBox.find("."+C)[0];k(a)[0]&&k(a).data("index")==e.index?e.removePicker(d.thisElemInd):(e.removePicker(d.thisElemInd),k("body").append(n)),r.thisId=i.id,d.thisElemInd=e.index,d.thisColor=t.style.background,e.position(),e.pickerEvents()},d.prototype.removePicker=function(e){var i=this.config,e=k("#layui-colorpicker"+(e||this.index));return e[0]&&(e.remove(),delete r.thisId,"function"==typeof i.close)&&i.close(this.color),this},d.prototype.position=function(){var e=this,i=e.config;return n.position(e.bindElem||e.elemColorBox[0],e.elemPicker[0],{position:i.position,align:"center"}),e},d.prototype.val=function(){var e,i=this,o=(i.config,i.elemColorBox.find("."+C)),t=i.elemPicker.find("."+Y),n=o[0].style.backgroundColor;n?(e=M(F(n)),o=o.attr("lay-type"),i.select(e.h,e.s,e.b),"torgb"===o?t.find("input").val(n):"rgba"===o?(o=F(n),3===(n.match(/[0-9]{1,3}/g)||[]).length?(t.find("input").val("rgba("+o.r+", "+o.g+", "+o.b+", 1)"),i.elemPicker.find("."+D).css("left",280)):(t.find("input").val(n),n=280*n.slice(n.lastIndexOf(",")+1,n.length-1),i.elemPicker.find("."+D).css("left",n)),i.elemPicker.find("."+T)[0].style.background="linear-gradient(to right, rgba("+o.r+", "+o.g+", "+o.b+", 0), rgb("+o.r+", "+o.g+", "+o.b+"))"):t.find("input").val("#"+j(e))):(i.select(0,100,100),t.find("input").val(""),i.elemPicker.find("."+T)[0].style.background="",i.elemPicker.find("."+D).css("left",280))},d.prototype.side=function(){var r=this,l=r.config,c=r.elemColorBox.find("."+C),a=c.attr("lay-type"),s=r.elemPicker.find(".layui-colorpicker-side"),o=r.elemPicker.find("."+B),d=r.elemPicker.find("."+I),t=r.elemPicker.find("."+E),u=r.elemPicker.find("."+T),f=r.elemPicker.find("."+D),p=o[0].offsetTop/180*360,h=100-(t[0].offsetTop+3)/180*100,g=(t[0].offsetLeft+3)/260*100,v=Math.round(f[0].offsetLeft/280*100)/100,m=r.elemColorBox.find("."+w),e=r.elemPicker.find(".layui-colorpicker-pre").children("div"),y=function(e,i,o,t){r.select(e,i,o);var n=X({h:e,s:i,b:o}),e=j({h:e,s:i,b:o}),i=r.elemPicker.find("."+Y).find("input");m.addClass(x).removeClass(P),c[0].style.background="rgb("+n.r+", "+n.g+", "+n.b+")","torgb"===a?i.val("rgb("+n.r+", "+n.g+", "+n.b+")"):"rgba"===a?(f.css("left",280*t),i.val("rgba("+n.r+", "+n.g+", "+n.b+", "+t+")"),c[0].style.background="rgba("+n.r+", "+n.g+", "+n.b+", "+t+")",u[0].style.background="linear-gradient(to right, rgba("+n.r+", "+n.g+", "+n.b+", 0), rgb("+n.r+", "+n.g+", "+n.b+"))"):i.val("#"+e),l.change&&l.change(k.trim(r.elemPicker.find("."+Y).find("input").val()))},i=k(['
          '].join("")),b=function(e){k("#LAY-colorpicker-moving")[0]||k("body").append(i),i.on("mousemove",e),i.on("mouseup",function(){i.remove()}).on("mouseleave",function(){i.remove()})};o.on("mousedown",function(e,i){var t=this.offsetTop,n=(e.clientY===undefined?i:e).clientY;layui.stope(e),b(function(e){var i=t+(e.clientY-n),o=s[0].offsetHeight,o=(i=o<(i=i<0?0:i)?o:i)/180*360;y(p=o,g,h,v),e.preventDefault()}),e.preventDefault()}),s.on("mousedown",function(e){var i=e.clientY-k(this).offset().top+H.scrollTop(),i=(i=(i=i<0?0:i)>this.offsetHeight?this.offsetHeight:i)/180*360;y(p=i,g,h,v),e.preventDefault(),o.trigger("mousedown",e)}),t.on("mousedown",function(e,i){var r=this.offsetTop,l=this.offsetLeft,c=(e.clientY===undefined?i:e).clientY,a=(e.clientX===undefined?i:e).clientX;layui.stope(e),b(function(e){var i=r+(e.clientY-c),o=l+(e.clientX-a),t=d[0].offsetHeight,n=d[0].offsetWidth,n=(o=n<(o=o<0?0:o)?n:o)/260*100,o=100-(i=t<(i=i<0?0:i)?t:i)/180*100;y(p,g=n,h=o,v),e.preventDefault()}),e.preventDefault()}),d.on("mousedown",function(e){var i=e.clientY-k(this).offset().top+H.scrollTop(),o=e.clientX-k(this).offset().left+H.scrollLeft(),o=((i=i<0?0:i)>this.offsetHeight&&(i=this.offsetHeight),(o=(o=o<0?0:o)>this.offsetWidth?this.offsetWidth:o)/260*100),i=100-i/180*100;y(p,g=o,h=i,v),layui.stope(e),e.preventDefault(),t.trigger("mousedown",e)}),f.on("mousedown",function(e,i){var t=this.offsetLeft,n=(e.clientX===undefined?i:e).clientX;layui.stope(e),b(function(e){var i=t+(e.clientX-n),o=u[0].offsetWidth,o=(o<(i=i<0?0:i)&&(i=o),Math.round(i/280*100)/100);y(p,g,h,v=o),e.preventDefault()}),e.preventDefault()}),u.on("mousedown",function(e){var i=e.clientX-k(this).offset().left,i=((i=i<0?0:i)>this.offsetWidth&&(i=this.offsetWidth),Math.round(i/280*100)/100);y(p,g,h,v=i),e.preventDefault(),f.trigger("mousedown",e)}),e.each(function(){k(this).on("click",function(){k(this).parent(".layui-colorpicker-pre").addClass("selected").siblings().removeClass("selected");var e=this.style.backgroundColor,i=M(F(e)),o=e.slice(e.lastIndexOf(",")+1,e.length-1);p=i.h,g=i.s,h=i.b,3===(e.match(/[0-9]{1,3}/g)||[]).length&&(o=1),v=o,y(i.h,i.s,i.b,o)})}),n.touchEventsSupported()&&layui.each([{elem:s,eventType:"mousedown"},{elem:u,eventType:"mousedown"},{elem:d,eventType:"mousedown"}],function(e,t){n.touchSwipe(t.elem,{onTouchMove:function(e){var i,o;e=e,i=t.eventType,e=e.touches[0],(o=document.createEvent("MouseEvent")).initMouseEvent(i,!0,!0,window,1,e.screenX,e.screenY,e.clientX,e.clientY,!1,!1,!1,!1,0,null),e.target.dispatchEvent(o)}})})},d.prototype.select=function(e,i,o,t){this.config;var n=j({h:e,s:100,b:100}),e=(j({h:e,s:i,b:o}),e/360*180),o=180-o/100*180,i=i/100*260,r=this.elemPicker.find("."+I)[0];this.elemPicker.find("."+B).css("top",e),r.style.background="#"+n,this.elemPicker.find("."+E).css({top:o/r.offsetHeight*100+"%",left:i/r.offsetWidth*100+"%"})},d.prototype.pickerEvents=function(){var c=this,a=c.config,s=c.elemColorBox.find("."+C),d=c.elemPicker.find("."+Y+" input"),o={clear:function(e){s[0].style.background="",c.elemColorBox.find("."+w).removeClass(x).addClass(P),c.color="",a.done&&a.done(""),c.removePicker()},confirm:function(e,i){var o,t,n,r,l=k.trim(d.val());-1>16,g:(65280&n)>>8,b:255&n},t=M(r),s[0].style.background=o="#"+j(t),c.elemColorBox.find("."+w).removeClass(P).addClass(x)),"change"===i?(c.select(t.h,t.s,t.b,i),a.change&&a.change(o)):(c.color=l,a.done&&a.done(l),c.removePicker())}};c.elemPicker.on("click","*[colorpicker-events]",function(){var e=k(this),i=e.attr("colorpicker-events");o[i]&&o[i].call(this,e)}),d.on("keyup",function(e){var i=k(this);o.confirm.call(this,i,13===e.keyCode?null:"change")})},d.prototype.events=function(){var e=this;e.config;e.elemColorBox.on("click",function(){e.renderPicker(),k(a)[0]&&(e.val(),e.side())})},s.on(i,function(e){var i,o,t;r.thisId&&(i=l.getThis(r.thisId))&&(o=i.config,t=i.elemColorBox.find("."+C),k(e.target).hasClass(c)||k(e.target).parents("."+c)[0]||k(e.target).hasClass(a.replace(/\./g,""))||k(e.target).parents(a)[0]||i.elemPicker&&(i.color?(e=M(F(i.color)),i.select(e.h,e.s,e.b)):i.elemColorBox.find("."+w).removeClass(x).addClass(P),t[0].style.background=i.color||"","function"==typeof o.cancel&&o.cancel(i.color),i.removePicker()))}),H.on("resize",function(){if(r.thisId){var e=l.getThis(r.thisId);if(e)return!(!e.elemPicker||!k(a)[0])&&void e.position()}}),l.that={},l.getThis=function(e){var i=l.that[e];return i||o.error(e?t+" instance with ID '"+e+"' not found":"ID argument required"),i},r.render=function(e){e=new d(e);return l.call(e)},e(t,r)});layui.define("jquery",function(t){"use strict";var u=layui.$,d=(layui.hint(),layui.device()),c="element",r="layui-this",h="layui-show",o=".layui-tab-title",i=function(){this.config={}},y=(i.prototype.set=function(t){return u.extend(!0,this.config,t),this},i.prototype.on=function(t,i){return layui.onevent.call(this,c,t,i)},i.prototype.tabAdd=function(t,i){var a,e=u(".layui-tab[lay-filter="+t+"]"),l=e.children(o),n=l.children(".layui-tab-bar"),e=e.children(".layui-tab-content"),s=""+(i.title||"unnaming")+"";return n[0]?n.before(s):l.append(s),e.append('
          "+(i.content||"")+"
          "),i.change&&this.tabChange(t,i.id),l.data("LAY_TAB_CHANGE",i.change),C.tabAuto(i.change?"change":null),this},i.prototype.tabDelete=function(t,i){t=u(".layui-tab[lay-filter="+t+"]").children(o).find('>li[lay-id="'+i+'"]');return C.tabDelete(null,t),this},i.prototype.tabChange=function(t,i){t=u(".layui-tab[lay-filter="+t+"]").children(o).find('>li[lay-id="'+i+'"]');return C.tabClick.call(t[0],{liElem:t}),this},i.prototype.tab=function(a){a=a||{},e.on("click",a.headerElem,function(t){var i=u(a.headerElem).index(u(this));C.tabClick.call(this,{index:i,options:a})})},i.prototype.progress=function(t,i){var a="layui-progress",t=u("."+a+"[lay-filter="+t+"]").find("."+a+"-bar"),a=t.find("."+a+"-text");return t.css("width",function(){return/^.+\/.+$/.test(i)?100*new Function("return "+i)()+"%":i}).attr("lay-percent",i),a.text(i),this},".layui-nav"),f="layui-nav-item",p="layui-nav-bar",b="layui-nav-tree",v="layui-nav-child",m="layui-nav-more",g="layui-anim layui-anim-upbit",C={tabClick:function(t){var i=(t=t||{}).options||{},a=t.liElem||u(this),e=i.headerElem?a.parent():a.parents(".layui-tab").eq(0),i=i.bodyElem?u(i.bodyElem):e.children(".layui-tab-content").children(".layui-tab-item"),l=a.find("a"),l="javascript:;"!==l.attr("href")&&"_blank"===l.attr("target"),n="string"==typeof a.attr("lay-unselect"),s=e.attr("lay-filter"),o=a.attr("lay-id"),t="index"in t?t.index:a.parent().children("li").index(a);l||n||(a.addClass(r).siblings().removeClass(r),(o?l=(l=i.filter('[lay-id="'+o+'"]')).length?l:i.eq(t):i.eq(t)).addClass(h).siblings().removeClass(h)),layui.event.call(this,c,"tab("+s+")",{elem:e,index:t,id:o})},tabDelete:function(t,i){var i=i||u(this).parent(),a=i.parent().children("li").index(i),e=i.closest(".layui-tab"),l=e.children(".layui-tab-content").children(".layui-tab-item"),n=e.attr("lay-filter"),s=i.attr("lay-id");!1!==layui.event.call(i[0],c,"tabBeforeDelete("+n+")",{elem:e,index:a,id:s})&&(i.hasClass(r)&&(i.next()[0]&&i.next().is("li")?C.tabClick.call(i.next()[0],{index:a+1}):i.prev()[0]&&i.prev().is("li")&&C.tabClick.call(i.prev()[0],null,a-1)),i.remove(),(s?i=(i=l.filter('[lay-id="'+s+'"]')).length?i:l.eq(a):l.eq(a)).remove(),setTimeout(function(){C.tabAuto()},50),layui.event.call(this,c,"tabDelete("+n+")",{elem:e,index:a,id:s}))},tabAuto:function(l){var n="layui-tab-more",s="layui-tab-bar",o="layui-tab-close",c=this;u(".layui-tab").each(function(){var t=u(this),a=t.children(".layui-tab-title"),i=(t.children(".layui-tab-content").children(".layui-tab-item"),'lay-stope="tabmore"'),i=u(''),e=(c===window&&d.ie,t.attr("lay-allowclose"));e&&"false"!==e&&a.find("li").each(function(){var t,i=u(this);i.find("."+o)[0]||"false"===i.attr("lay-allowclose")||((t=u('')).on("click",C.tabDelete),i.append(t))}),"string"!=typeof t.attr("lay-unauto")&&(a.prop("scrollWidth")>a.outerWidth()+1||a.find("li").length&&a.height()>(e=a.find("li").eq(0).height())+e/2?("change"===l&&a.data("LAY_TAB_CHANGE")&&a.addClass(n),a.find("."+s)[0]||(a.append(i),t.attr("overflow",""),i.on("click",function(t){var i=a.hasClass(n);a[i?"removeClass":"addClass"](n)}))):(a.find("."+s).remove(),t.removeAttr("overflow")))})},hideTabMore:function(t){var i=u(".layui-tab-title");!0!==t&&"tabmore"===u(t.target).attr("lay-stope")||(i.removeClass("layui-tab-more"),i.find(".layui-tab-bar").attr("title",""))},clickThis:function(){var t=u(this),i=t.closest(y),a=i.attr("lay-filter"),e=t.parent(),l=t.siblings("."+v),n="string"==typeof e.attr("lay-unselect");if("javascript:;"!==t.attr("href")&&"_blank"===t.attr("target")||n||l[0]||(i.find("."+r).removeClass(r),e.addClass(r)),i.hasClass(b)){var n=f+"ed",s=!e.hasClass(n),o=function(){u(this).css({display:""}),i.children("."+p).css({opacity:0})};if(l.is(":animated"))return;l.removeClass(g),l[0]&&(s?(l.slideDown(200,o),e.addClass(n)):(e.removeClass(n),l.show().slideUp(200,o)),"string"!=typeof i.attr("lay-accordion")&&"all"!==i.attr("lay-shrink")||((s=e.siblings("."+n)).removeClass(n),s.children("."+v).show().stop().slideUp(200,o)))}layui.event.call(this,c,"nav("+a+")",t)},collapse:function(){var t=u(this),i=t.find(".layui-colla-icon"),a=t.siblings(".layui-colla-content"),e=t.parents(".layui-collapse").eq(0),l=e.attr("lay-filter"),n="none"===a.css("display");"string"==typeof e.attr("lay-accordion")&&((e=e.children(".layui-colla-item").children("."+h)).siblings(".layui-colla-title").children(".layui-colla-icon").html(""),e.removeClass(h)),a[n?"addClass":"removeClass"](h),i.html(n?"":""),layui.event.call(this,c,"collapse("+l+")",{title:t,content:a,show:n})}},a=(i.prototype.render=i.prototype.init=function(t,i){var a=i?'[lay-filter="'+i+'"]':"",i={tab:function(){C.tabAuto.call({})},nav:function(){var s={},o={},c={},r="layui-nav-title";u(y+a).each(function(t){var i=u(this),a=u(''),e=i.find("."+f);i.find("."+p)[0]||(i.append(a),(i.hasClass(b)?e.find("dd,>."+r):e).on("mouseenter",function(){!function(t,i,a){var e,l=u(this),n=l.find("."+v);i.hasClass(b)?n[0]||(e=l.children("."+r),t.css({top:l.offset().top-i.offset().top,height:(e[0]?e:l).outerHeight(),opacity:1})):(n.addClass(g),n.hasClass("layui-nav-child-c")&&n.css({left:-(n.outerWidth()-l.width())/2}),n[0]?t.css({left:t.position().left+t.width()/2,width:0,opacity:0}):t.css({left:l.position().left+parseFloat(l.css("marginLeft")),top:l.position().top+l.height()-t.height()}),s[a]=setTimeout(function(){t.css({width:n[0]?0:l.width(),opacity:n[0]?0:1})},d.ie&&d.ie<10?0:200),clearTimeout(c[a]),"block"===n.css("display")&&clearTimeout(o[a]),o[a]=setTimeout(function(){n.addClass(h),l.find("."+m).addClass(m+"d")},300))}.call(this,a,i,t)}).on("mouseleave",function(){i.hasClass(b)?a.css({height:0,opacity:0}):(clearTimeout(o[t]),o[t]=setTimeout(function(){i.find("."+v).removeClass(h),i.find("."+m).removeClass(m+"d")},300))}),i.on("mouseleave",function(){clearTimeout(s[t]),c[t]=setTimeout(function(){i.hasClass(b)||a.css({width:0,left:a.position().left+a.width()/2,opacity:0})},200)})),e.find("a").each(function(){var t=u(this);t.parent();t.siblings("."+v)[0]&&!t.children("."+m)[0]&&t.append(''),t.off("click",C.clickThis).on("click",C.clickThis)})})},breadcrumb:function(){u(".layui-breadcrumb"+a).each(function(){var t=u(this),i="lay-separator",a=t.attr(i)||"/",e=t.find("a");e.next("span["+i+"]")[0]||(e.each(function(t){t!==e.length-1&&u(this).after(""+a+"")}),t.css("visibility","visible"))})},progress:function(){var e="layui-progress";u("."+e+a).each(function(){var t=u(this),i=t.find(".layui-progress-bar"),a=i.attr("lay-percent");i.css("width",function(){return/^.+\/.+$/.test(a)?100*new Function("return "+a)()+"%":a}),t.attr("lay-showpercent")&&setTimeout(function(){i.html(''+a+"")},350)})},collapse:function(){u(".layui-collapse"+a).each(function(){u(this).find(".layui-colla-item").each(function(){var t=u(this),i=t.find(".layui-colla-title"),t="none"===t.find(".layui-colla-content").css("display");i.find(".layui-colla-icon").remove(),i.append(''+(t?"":"")+""),i.off("click",C.collapse).on("click",C.collapse)})})}};return i[t]?i[t]():layui.each(i,function(t,i){i()})},new i),e=u(document);u(function(){a.render()}),e.on("click",".layui-tab-title li",C.tabClick),u(window).on("resize",C.tabAuto),t(c,a)});layui.define(["lay","layer"],function(e){"use strict";var b=layui.$,o=layui.lay,i=layui.layer,F=layui.device(),t="upload",c="layui_"+t+"_index",w={config:{},index:layui[t]?layui[t].index+1e4:0,set:function(e){var i=this;return i.config=b.extend({},i.config,e),i},on:function(e,i){return layui.onevent.call(this,t,e,i)}},a=function(){var i=this,e=i.config.id;return{upload:function(e){i.upload.call(i,e)},reload:function(e){i.reload.call(i,e)},config:(a.that[e]=i).config}},r="layui-upload-file",l="layui-upload-form",L="layui-upload-iframe",z="layui-upload-choose",j="UPLOADING",D=function(e){var i=this;i.index=++w.index,i.config=b.extend({},i.config,w.config,e),i.render()};D.prototype.config={accept:"images",exts:"",auto:!0,bindAction:"",url:"",force:"",field:"file",acceptMime:"",method:"post",data:{},drag:!0,size:0,number:0,multiple:!1,text:{"cross-domain":"Cross-domain requests are not supported","data-format-error":"Please return JSON data format","check-error":"",error:"","limit-number":null,"limit-size":null}},D.prototype.reload=function(e){var i=this;i.config=b.extend({},i.config,e),i.render(!0)},D.prototype.render=function(e){var i=this,t=i.config,n=b(t.elem);return 1"].join("")),n=i.elem.next();(n.hasClass(r)||n.hasClass(l))&&n.remove(),F.ie&&F.ie<10&&i.elem.wrap('
          '),e.isFile()?(e.elemFile=i.elem,i.field=i.elem[0].name):i.elem.after(t),F.ie&&F.ie<10&&e.initIE()},D.prototype.initIE=function(){var t,e=this.config,i=b(''),n=b(['
          ',"
          "].join(""));b("#"+L)[0]||b("body").append(i),e.elem.next().hasClass(l)||(this.elemFile.wrap(n),e.elem.next("."+l).append((t=[],layui.each(e.data,function(e,i){i="function"==typeof i?i():i,t.push('')}),t.join(""))))},D.prototype.msg=function(e){return i.msg(e,{icon:2,shift:6})},D.prototype.isFile=function(){var e=this.config.elem[0];if(e)return"input"===e.tagName.toLocaleLowerCase()&&"file"===e.type},D.prototype.preview=function(n){window.FileReader&&layui.each(this.chooseFiles,function(e,i){var t=new FileReader;t.readAsDataURL(i),t.onload=function(){n&&n(e,i,this.result)}})},D.prototype.upload=function(e,i){var t,n,o,a,r,u=this,f=u.config,c=f.text||{},l=u.elemFile[0],s=function(){return e||u.files||u.chooseFiles||l.files},d=function(){var o=0,a=0,r=s(),l=function(){f.multiple&&o+a===u.fileLength&&"function"==typeof f.allDone&&f.allDone({total:u.fileLength,successful:o,failed:a})},t=function(t){var n=new FormData,i=function(e){t.unified?layui.each(r,function(e,i){delete i[j]}):delete e[j]};if(layui.each(f.data,function(e,i){i="function"==typeof i?t.unified?i():i(t.index,t.file):i,n.append(e,i)}),t.unified)layui.each(r,function(e,i){i[j]||(i[j]=!0,n.append(f.field,i))});else{if(t.file[j])return;n.append(f.field,t.file),t.file[j]=!0}var e={url:f.url,type:"post",data:n,dataType:f.dataType||"json",contentType:!1,processData:!1,headers:f.headers||{},success:function(e){f.unified?o+=u.fileLength:o++,h(t.index,e),l(t.index),i(t.file)},error:function(e){f.unified?a+=u.fileLength:a++,u.msg(c.error||["Upload failed, please try again.","status: "+(e.status||"")+" - "+(e.statusText||"error")].join("
          ")),m(t.index),l(t.index),i(t.file)}};"function"==typeof f.progress&&(e.xhr=function(){var e=b.ajaxSettings.xhr();return e.upload.addEventListener("progress",function(e){var i;e.lengthComputable&&(i=Math.floor(e.loaded/e.total*100),f.progress(i,(f.item||f.elem)[0],e,t.index))}),e}),b.ajax(e)};f.unified?t({unified:!0,index:0}):layui.each(r,function(e,i){t({index:e,file:i})})},p=function(){var n=b("#"+L);u.elemFile.parent().submit(),clearInterval(D.timer),D.timer=setInterval(function(){var e,i=n.contents().find("body");try{e=i.text()}catch(t){u.msg(c["cross-domain"]),clearInterval(D.timer),m()}e&&(clearInterval(D.timer),i.html(""),h(0,e))},30)},h=function(e,i){if(u.elemFile.next("."+z).remove(),l.value="","json"===f.force&&"object"!=typeof i)try{i=JSON.parse(i)}catch(t){return i={},u.msg(c["data-format-error"])}"function"==typeof f.done&&f.done(i,e||0,function(e){u.upload(e)})},m=function(e){f.auto&&(l.value=""),"function"==typeof f.error&&f.error(e||0,function(e){u.upload(e)})},g=f.exts,v=(n=[],layui.each(e||u.chooseFiles,function(e,i){n.push(i.name)}),n),y={preview:function(e){u.preview(e)},upload:function(e,i){var t={};t[e]=i,u.upload(t)},pushFile:function(){return u.files=u.files||{},layui.each(u.chooseFiles,function(e,i){u.files[e]=i}),u.files},resetFile:function(e,i,t){i=new File([i],t);u.files=u.files||{},u.files[e]=i},getChooseFiles:function(){return u.chooseFiles}},x={file:"\u6587\u4ef6",images:"\u56fe\u7247",video:"\u89c6\u9891",audio:"\u97f3\u9891"}[f.accept]||"\u6587\u4ef6",v=0===v.length?l.value.match(/[^\/\\]+\..+/g)||[]:v;if(0!==v.length){switch(f.accept){case"file":layui.each(v,function(e,i){if(g&&!RegExp(".\\.("+g+")$","i").test(escape(i)))return t=!0});break;case"video":layui.each(v,function(e,i){if(!RegExp(".\\.("+(g||"avi|mp4|wma|rmvb|rm|flash|3gp|flv")+")$","i").test(escape(i)))return t=!0});break;case"audio":layui.each(v,function(e,i){if(!RegExp(".\\.("+(g||"mp3|wav|mid")+")$","i").test(escape(i)))return t=!0});break;default:layui.each(v,function(e,i){if(!RegExp(".\\.("+(g||"jpg|png|gif|bmp|jpeg|svg|webp")+")$","i").test(escape(i)))return t=!0})}if(t)return u.msg(c["check-error"]||"\u9009\u62e9\u7684"+x+"\u4e2d\u5305\u542b\u4e0d\u652f\u6301\u7684\u683c\u5f0f"),l.value="";if("choose"!==i&&!f.auto||(f.choose&&f.choose(y),"choose"!==i)){if(u.fileLength=(o=0,x=s(),layui.each(x,function(){o++}),o),f.number&&u.fileLength>f.number)return u.msg("function"==typeof c["limit-number"]?c["limit-number"](f,u.fileLength):"\u540c\u65f6\u6700\u591a\u53ea\u80fd\u4e0a\u4f20: "+f.number+" \u4e2a\u6587\u4ef6
          \u60a8\u5f53\u524d\u5df2\u7ecf\u9009\u62e9\u4e86: "+u.fileLength+" \u4e2a\u6587\u4ef6");if(01024*f.size&&(i=1<=(i=f.size/1024)?i.toFixed(2)+"MB":f.size+"KB",l.value="",a=i)}),a)return u.msg("function"==typeof c["limit-size"]?c["limit-size"](f,a):"\u6587\u4ef6\u5927\u5c0f\u4e0d\u80fd\u8d85\u8fc7 "+a);r=function(){if(F.ie)return(9'+e+"")},l=function(t){var n=!0;return layui.each(o.files,function(e,i){if(!(n=!(i.name===t.name)))return!0}),n},u=function(e){var t=function(e){e.ext=e.name.substr(e.name.lastIndexOf(".")+1).toLowerCase(),e.sizes=w.util.parseSize(e.size)};return e instanceof FileList?layui.each(e,function(e,i){t(i)}):t(e),e},f=function(e){var t;return(e=e||[]).length?o.files?(t=[],layui.each(e,function(e,i){l(i)&&t.push(u(i))}),t):u(e):[]};n.elem.off("upload.start").on("upload.start",function(){var e=b(this);o.config.item=e,o.elemFile[0].click()}),F.ie&&F.ie<10||n.elem.off("upload.over").on("upload.over",function(){b(this).attr("lay-over","")}).off("upload.leave").on("upload.leave",function(){b(this).removeAttr("lay-over")}).off("upload.drop").on("upload.drop",function(e,i){var t=b(this),i=f(i.originalEvent.dataTransfer.files);t.removeAttr("lay-over"),a(i),n.auto?o.upload():r(i)}),o.elemFile.on("change",function(){var e=f(this.files);0!==e.length&&(a(e),n.auto?o.upload():r(e))}),n.bindAction.off("upload.action").on("upload.action",function(){o.upload()}),n.elem.data(c)||(n.elem.on("click",function(){o.isFile()||b(this).trigger("upload.start")}),n.drag&&n.elem.on("dragover",function(e){e.preventDefault(),b(this).trigger("upload.over")}).on("dragleave",function(e){b(this).trigger("upload.leave")}).on("drop",function(e){e.preventDefault(),b(this).trigger("upload.drop",e)}),n.bindAction.on("click",function(){b(this).trigger("upload.action")}),n.elem.data(c,n.id))},w.util={parseSize:function(e,i){var t,n;return i=i||2,null!=e&&e?(t="string"==typeof e?parseFloat(e):e,n=Math.floor(Math.log(t)/Math.log(1024)),(e=(e=t/Math.pow(1024,n))%1==0?e:parseFloat(e.toFixed(i)))+["Bytes","Kb","Mb","Gb","Tb","Pb","Eb","Zb","Yb"][n]):"0"},promiseLikeResolve:function(e){var i=b.Deferred();return e&&"function"==typeof e.then?e.then(i.resolve,i.reject):i.resolve(e),i.promise()}},a.that={},a.getThis=function(e){var i=a.that[e];return i||hint.error(e?t+" instance with ID '"+e+"' not found":"ID argument required"),i},w.render=function(e){e=new D(e);return a.call(e)},e(t,w)});layui.define(["lay","layer","util"],function(e){"use strict";var w=layui.$,h=layui.layer,T=layui.util,l=layui.hint(),N=(layui.device(),"form"),u=".layui-form",$="layui-this",_="layui-hide",F="layui-disabled",t=function(){this.config={verify:{required:function(e){if(!/[\S]+/.test(e))return"\u5fc5\u586b\u9879\u4e0d\u80fd\u4e3a\u7a7a"},phone:function(e){if(e&&!/^1\d{10}$/.test(e))return"\u624b\u673a\u53f7\u683c\u5f0f\u4e0d\u6b63\u786e"},email:function(e){if(e&&!/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(e))return"\u90ae\u7bb1\u683c\u5f0f\u4e0d\u6b63\u786e"},url:function(e){if(e&&!/^(#|(http(s?)):\/\/|\/\/)[^\s]+\.[^\s]+$/.test(e))return"\u94fe\u63a5\u683c\u5f0f\u4e0d\u6b63\u786e"},number:function(e){if(e&&isNaN(e))return"\u53ea\u80fd\u586b\u5199\u6570\u5b57"},date:function(e){if(e&&!/^(\d{4})[-\/](\d{1}|0\d{1}|1[0-2])([-\/](\d{1}|0\d{1}|[1-2][0-9]|3[0-1]))*$/.test(e))return"\u65e5\u671f\u683c\u5f0f\u4e0d\u6b63\u786e"},identity:function(e){if(e&&!/(^\d{15}$)|(^\d{17}(x|X|\d)$)/.test(e))return"\u8eab\u4efd\u8bc1\u53f7\u683c\u5f0f\u4e0d\u6b63\u786e"}},autocomplete:null}},i=(t.prototype.set=function(e){return w.extend(!0,this.config,e),this},t.prototype.verify=function(e){return w.extend(!0,this.config.verify,e),this},t.prototype.getFormElem=function(e){return w(u+(e?'[lay-filter="'+e+'"]':""))},t.prototype.on=function(e,t){return layui.onevent.call(this,N,e,t)},t.prototype.val=function(e,i){return this.getFormElem(e).each(function(e,t){var a=w(this);layui.each(i,function(e,t){var i,e=a.find('[name="'+e+'"]');e[0]&&("checkbox"===(i=e[0].type)?e[0].checked=t:"radio"===i?e.each(function(){this.checked=this.value==t+""}):e.val(t))})}),r.render(null,e),this.getValue(e)},t.prototype.getValue=function(e,t){t=t||this.getFormElem(e);var a={},n={},e=t.find("input,select,textarea");return layui.each(e,function(e,t){var i;w(this);t.name=(t.name||"").replace(/^\s*|\s*&/,""),t.name&&(/^.*\[\]$/.test(t.name)&&(i=t.name.match(/^(.*)\[\]$/g)[0],a[i]=0|a[i],i=t.name.replace(/^(.*)\[\]$/,"$1["+a[i]+++"]")),/^(checkbox|radio)$/.test(t.type)&&!t.checked||(n[i||t.name]=t.value))}),n},t.prototype.render=function(e,t){var i=this.config,a=w(u+(t?'[lay-filter="'+t+'"]':"")),n={input:function(e){var e=e||a.find("input,textarea"),t=(i.autocomplete&&e.attr("autocomplete",i.autocomplete),function(e,t){var i=e.val(),a=Number(i),n=Number(e.attr("step"))||1,l=Number(e.attr("min")),r=Number(e.attr("max")),s=Number(e.attr("lay-precision")),o="click"!==t&&""===i,c="init"===t;isNaN(a)||("click"===t&&(a=!!w(this).index()?a-n:a+n),t=function(e){return((e.toString().match(/\.(\d+$)/)||[])[1]||"").length},s=0<=s?s:Math.max(t(n),t(i)),o||(c||r<=(a=a<=l?l:a)&&(a=r),0===s?a=parseInt(a):0'),e=layui.isArray(i.value)?i.value:[i.value],e=w((a=[],layui.each(e,function(e,t){a.push('')}),a.join(""))),n=(t.append(e),i.split&&t.addClass("layui-input-split"),i.className&&t.addClass(i.className),r.next("."+u)),l=(n[0]&&n.remove(),r.parent().hasClass(o)||r.wrap('
          '),r.next("."+c));l[0]?((n=l.find("."+u))[0]&&n.remove(),l.prepend(t),r.css("padding-right",function(){return(r.closest(".layui-input-group")[0]?0:l.outerWidth())+t.outerWidth()})):(t.addClass(c),r.after(t)),"auto"===i.show&&d(t,r.val()),"function"==typeof i.init&&i.init.call(this,r,i),r.on("input propertychange",function(){var e=this.value;"auto"===i.show&&d(t,e)}),r.on("blur",function(){"function"==typeof i.blur&&i.blur.call(this,r,i)}),e.on("click",function(){var e=r.attr("lay-filter");w(this).hasClass(F)||("function"==typeof i.click&&i.click.call(this,r,i),layui.event.call(this,N,"input-affix("+e+")",{elem:r[0],affix:s,options:i}))})},f={eye:{value:"eye-invisible",click:function(e,t){var i="LAY_FORM_INPUT_AFFIX_SHOW",a=e.data(i);e.attr("type",a?"password":"text").data(i,!a),n({value:a?"eye-invisible":"eye"})}},clear:{value:"clear",click:function(e){e.val("").focus(),d(w(this).parent(),null)},show:"auto",disabled:e},number:{value:["up","down"],split:!0,className:"layui-input-number",disabled:r.is("[disabled]"),init:function(e){t.call(this,e,"init")},click:function(e){t.call(this,e,"click")},blur:function(e){t.call(this,e,"blur")}}};n()})},select:function(e){var v,u="\u8bf7\u9009\u62e9",m="layui-form-select",g="layui-select-title",b="layui-select-none",x="layui-select-create-option",k="",e=e||a.find("select"),C=function(e,t){w(e.target).parent().hasClass(g)&&!t||((e=w("."+m)).removeClass(m+"ed "+m+"up"),e.hasClass("layui-select-creatable")&&e.children("dl").children("."+x).remove(),v&&k&&v.val(k)),v=null},d=function(n,e,t,c){var u,a,i,l,r,s,o=w(this),d=n.find("."+g),f=d.find("input"),h=n.find("dl"),y=(h.children("dd"),h.children("dt")),p=this.selectedIndex;e||(u=o.attr("lay-search"),a=!(!lay.ie||"10"!==lay.ie&&"11"!==lay.ie||!f.attr("placeholder")),i=function(){var e=n.offset().top+n.outerHeight()+5-A.scrollTop(),t=h.outerHeight(),i=h.children("dd");p=o[0].selectedIndex,n.addClass(m+"ed"),i.removeClass(_),y.removeClass(_),i.removeClass($),0<=p&&i.eq(p).addClass($),e+t>A.height()&&t<=e&&n.addClass(m+"up"),r(),a&&h.off("mousedown.select.ieph").on("mousedown.select.ieph",function(){f[0].__ieph=!0,setTimeout(function(){f[0].__ieph=!1},60)})},l=function(e){n.removeClass(m+"ed "+m+"up"),f.blur(),c&&h.children("."+x).remove(),e||s(f.val(),function(e){var t=o[0].selectedIndex;e&&(k=w(o[0].options[t]).html(),0===t&&k===f.attr("placeholder")&&(k=""),f.val(k||""))})},r=function(){var e,t,i=h.children("dd."+$);i[0]&&(e=i.position().top,t=h.height(),i=i.height(),t").addClass(x).attr("lay-value",n).html(T.escape(n)),a=(i=h.children().eq(0)).hasClass("layui-select-tips"),i[a?"after":"before"](t)):e?h.find("."+b)[0]||h.append('

          \u65e0\u5339\u914d\u9879

          '):h.find("."+b).remove()},"keyup"),""===n&&(o.val(""),h.find("."+$).removeClass($),(o[0].options[0]||{}).value||h.children("dd:eq(0)").addClass($),h.find("."+b).remove(),c)&&h.children("."+x).remove(),void r()))},50)).on("blur",function(e){var t=o[0].selectedIndex;v=f,k=w(o[0].options[t]).text(),0===t&&k===f.attr("placeholder")&&(k=""),setTimeout(function(){s(f.val(),function(e){k||f.val("")},"blur")},200)}),h.on("click","dd",function(){var e,t=w(this),i=t.attr("lay-value"),a=o.attr("lay-filter");return t.hasClass(F)||(t.hasClass("layui-select-tips")?f.val(""):(f.val(t.text()),t.addClass($)),c&&t.hasClass(x)&&(h.append(t.removeClass(x)),e=w("
          "].join(""));i.after(l),function(a,n){var l=w(this);a.on("click",function(){var e=w(this),t=l.attr("lay-filter"),e=e.next("*[lay-checkbox]")[0]?e.next().html():l.attr("title")||"",i=l.attr("lay-skin")||"primary",e="switch"===i?e.split("|"):[e];l[0].disabled||(l[0].indeterminate&&(l[0].indeterminate=!1,a.find("."+c.SUBTRA).removeClass(c.SUBTRA).addClass("layui-icon-ok")),l[0].checked?(l[0].checked=!1,a.removeClass(n[1]),"switch"===i&&a.children("div").html(e[1])):(l[0].checked=!0,a.addClass(n[1]),"switch"===i&&a.children("div").html(e[0])),layui.event.call(l[0],N,n[2]+"("+t+")",{elem:l[0],value:l[0].value,othis:a}))})}.call(this,l,r)})},radio:function(e){var o="layui-form-radio",c=["layui-icon-radio","layui-icon-circle"],e=e||a.find("input[type=radio]");e.each(function(e,t){var i=w(this),a=i.next("."+o),n=this.disabled,l=i.attr("lay-skin");if("string"==typeof i.attr("lay-ignore"))return i.show();a[0]&&a.remove();var a=T.escape(t.title||""),r=[],s=(i.next("[lay-radio]")[0]&&(a=(s=i.next()).html()||"",1",'',"
          "+a+"
          ","
          "].join("")));i.after(s),function(a){var n=w(this),l="layui-anim-scaleSpring";a.on("click",function(){var e=n[0].name,t=n.parents(u),i=n.attr("lay-filter"),e=t.find("input[name="+e.replace(/(\.|#|\[|\])/g,"\\$1")+"]");n[0].disabled||(layui.each(e,function(){var e=w(this).next("."+o);this.checked=!1,e.removeClass(o+"ed"),e.children(".layui-icon").removeClass(l+" "+c[0]).addClass(c[1])}),n[0].checked=!0,a.addClass(o+"ed"),a.children(".layui-icon").addClass(l+" "+c[0]),layui.event.call(n[0],N,"radio("+i+")",{elem:n[0],value:n[0].value,othis:a}))})}.call(this,s)})}},t=function(){layui.each(n,function(e,t){t()})};return"object"===layui.type(e)?w(e).is(u)?(a=w(e),t()):e.each(function(e,t){var i=w(t);i.closest(u).length&&("SELECT"===t.tagName?n.select(i):"INPUT"===t.tagName&&("checkbox"===(t=t.type)||"radio"===t?n[t](i):n.input(i)))}):e?n[e]?n[e]():l.error('\u4e0d\u652f\u6301\u7684 "'+e+'" \u8868\u5355\u6e32\u67d3'):t(),this},t.prototype.validate=function(e){var u,d=this.config.verify,f="layui-form-danger";return!(e=w(e))[0]||(e.attr("lay-verify")!==undefined||!1!==this.validate(e.find("*[lay-verify]")))&&(layui.each(e,function(e,r){var s=w(this),t=(s.attr("lay-verify")||"").split("|"),o=s.attr("lay-vertype"),c=w.trim(s.val());if(s.removeClass(f),layui.each(t,function(e,t){var i="",a=d[t];if(a){var n="function"==typeof a?i=a(c,r):!a[0].test(c),l="select"===r.tagName.toLowerCase()||/^(checkbox|radio)$/.test(r.type),i=i||a[1];if("required"===t&&(i=s.attr("lay-reqtext")||i),n)return"tips"===o?h.tips(i,"string"!=typeof s.attr("lay-ignore")&&l?s.next():s,{tips:1}):"alert"===o?h.alert(i,{title:"\u63d0\u793a",shadeClose:!0}):/\b(string|number)\b/.test(typeof i)&&h.msg(i,{icon:5,shift:6}),setTimeout(function(){(l?s.next().find("input"):r).focus()},7),s.addClass(f),u=!0}}),u)return u}),!u)},t.prototype.submit=function(e,t){var i={},a=w(this),e="string"==typeof e?e:a.attr("lay-filter"),n=this.getFormElem?this.getFormElem(e):a.parents(u).eq(0),l=n.find("*[lay-verify]");return!!r.validate(l)&&(i=r.getValue(null,n),l={elem:this.getFormElem?window.event&&window.event.target:this,form:(this.getFormElem?n:a.parents("form"))[0],field:i},"function"==typeof t&&t(l),layui.event.call(this,N,"submit("+e+")",l))}),r=new t,t=w(document),A=w(window);w(function(){r.render()}),t.on("reset",u,function(){var e=w(this).attr("lay-filter");setTimeout(function(){r.render(null,e)},50)}),t.on("submit",u,i).on("click","*[lay-submit]",i),e(N,r)});layui.define(["lay","laytpl","laypage","form","util"],function(n){"use strict";var f=layui.$,d=layui.lay,m=layui.laytpl,O=layui.laypage,p=layui.layer,v=layui.form,g=layui.util,b=layui.hint(),x=layui.device(),k={config:{checkName:"LAY_CHECKED",indexName:"LAY_INDEX",numbersName:"LAY_NUM",disabledName:"LAY_DISABLED"},cache:{},index:layui.table?layui.table.index+1e4:0,set:function(e){return this.config=f.extend({},this.config,e),this},on:function(e,t){return layui.onevent.call(this,R,e,t)}},w=function(){var a=this,e=a.config,i=e.id||e.index;return{config:e,reload:function(e,t){a.reload.call(a,e,t)},reloadData:function(e,t){k.reloadData(i,e,t)},setColsWidth:function(){a.setColsWidth.call(a)},resize:function(){a.resize.call(a)}}},C=function(e){var t=w.that[e];return t||b.error(e?"The table instance with ID '"+e+"' not found":"ID argument required"),t||null},l=function(e){var t=w.config[e];return t||b.error(e?"The table instance with ID '"+e+"' not found":"ID argument required"),t||null},T=function(e){var t=this.config||{},a=(e=e||{}).item3,i=e.content;"numbers"===a.type&&(i=e.tplData[k.config.numbersName]);("escape"in a?a:t).escape&&(i=g.escape(i));t=e.text&&a.exportTemplet||a.templet||a.toolbar;return t&&(i="function"==typeof t?t.call(a,e.tplData,e.obj):m(function(e){try{return d(e).html()}catch(t){return e}}(t)||String(i)).render(f.extend({LAY_COL:a},e.tplData))),e.text?f("
          "+i+"
          ").text():i},R="table",N="lay-"+R+"-id",t=".layui-table",D="layui-hide",y="layui-hide-v",h="layui-none",L="layui-table-view",o=".layui-table-header",E=".layui-table-body",u=".layui-table-fixed-r",P=".layui-table-pageview",A=".layui-table-sort",_="layui-table-checked",M="layui-table-edit",W="layui-table-hover",I="laytable-cell-group",H="layui-table-col-special",j="layui-table-tool-panel",S="layui-table-expanded",F="LAY_TABLE_MOVE_DICT",e=function(e){return['',"","{{# layui.each(d.data.cols, function(i1, item1){ }}","","{{# layui.each(item1, function(i2, item2){ }}",'{{# if(item2.fixed && item2.fixed !== "right"){ left = true; } }}','{{# if(item2.fixed === "right"){ right = true; } }}',(e=e||{}).fixed&&"right"!==e.fixed?'{{# if(item2.fixed && item2.fixed !== "right"){ }}':"right"===e.fixed?'{{# if(item2.fixed === "right"){ }}':"","{{# var isSort = !(item2.colGroup) && item2.sort; }}",'",e.fixed?"{{# }; }}":"","{{# }); }}","","{{# }); }}","","
          ','
          ','{{# if(item2.type === "checkbox"){ }}','',"{{# } else { }}",'{{-item2.title||""}}',"{{# if(isSort){ }}",'',"{{# } }}","{{# } }}","
          ","
          "].join("")},a=['',"","
          "].join(""),s=[,"{{# if(d.data.toolbar){ }}",'
          ','
          ','
          ',"
          ","{{# } }}",'
          ',"{{# if(d.data.loading){ }}",'
          ','
          ','{{# if(typeof d.data.loading === "string"){ }}',"{{- d.data.loading}}","{{# } else{ }}",'',"{{# } }}","
          ","
          ","{{# } }}","{{# var left, right; }}",'
          ',e(),"
          ",'
          ',a,"
          ","{{# if(left){ }}",'
          ','
          ',e({fixed:!0}),"
          ",'
          ',a,"
          ","
          ","{{# }; }}","{{# if(right){ }}",'
          ','
          ',e({fixed:"right"}),'
          ',"
          ",'
          ',a,"
          ","
          ","{{# }; }}","
          ","{{# if(d.data.totalRow){ }}",'
          ','','',"
          ","
          ","{{# } }}",'
          ','
          ',"
          "].join(""),r=f(window),z=f(document),i=function(e){this.index=++k.index,this.config=f.extend({},this.config,k.config,e),this.render()},c=(i.prototype.config={limit:10,loading:!0,escape:!0,cellMinWidth:60,cellMaxWidth:Number.MAX_VALUE,editTrigger:"click",defaultToolbar:["filter","exports","print"],defaultContextmenu:!0,autoSort:!0,text:{none:"\u65e0\u6570\u636e"},cols:[]},i.prototype.render=function(e){var t=this,a=t.config,i=(a.elem=f(a.elem),a.where=a.where||{},a.id="id"in a?a.id:a.elem.attr("id")||t.index);if(w.that[i]=t,(w.config[i]=a).request=f.extend({pageName:"page",limitName:"limit"},a.request),a.response=f.extend({statusName:"code",statusCode:0,msgName:"msg",dataName:"data",totalRowName:"totalRow",countName:"count"},a.response),null!==a.page&&"object"==typeof a.page&&(a.limit=a.page.limit||a.limit,a.limits=a.page.limits||a.limits,t.page=a.page.curr=a.page.curr||1,delete a.page.elem,delete a.page.jump),!a.elem[0])return t;if(a.elem.attr("lay-filter")||a.elem.attr("lay-filter",a.id),"reloadData"===e)return t.pullData(t.page,{type:"reloadData"});a.index=t.index,t.key=a.id||a.index,t.setInit(),a.height&&/^full-.+$/.test(a.height)?(t.fullHeightGap=a.height.split("-")[1],a.height=r.height()-(parseFloat(t.fullHeightGap)||0)):a.height&&/^#\w+\S*-.+$/.test(a.height)?(i=a.height.split("-"),t.parentHeightGap=i.pop(),t.parentDiv=i.join("-"),a.height=f(t.parentDiv).height()-(parseFloat(t.parentHeightGap)||0)):"function"==typeof a.height&&(t.customHeightFunc=a.height,a.height=t.customHeightFunc());var l,e=a.elem,i=e.next("."+L),n=t.elem=f("
          ");n.addClass((l=[L,L+"-"+t.index,"layui-form","layui-border-box"],a.className&&l.push(a.className),l.join(" "))).attr(((l={"lay-filter":"LAY-TABLE-FORM-DF-"+t.index,style:(l=[],a.width&&l.push("width:"+a.width+"px;"),l.join(""))})[N]=a.id,l)).html(m(s,{open:"{{",close:"}}"}).render({data:a,index:t.index})),t.renderStyle(),i[0]&&(t.resizeObserver&&t.resizeObserver.unobserve(t.elem[0]),i.remove()),e.after(n),t.layTool=n.find(".layui-table-tool"),t.layBox=n.find(".layui-table-box"),t.layHeader=n.find(o),t.layMain=n.find(".layui-table-main"),t.layBody=n.find(E),t.layFixed=n.find(".layui-table-fixed"),t.layFixLeft=n.find(".layui-table-fixed-l"),t.layFixRight=n.find(u),t.layTotal=n.find(".layui-table-total"),t.layPage=n.find(".layui-table-page"),t.renderToolbar(),t.renderPagebar(),t.fullSize(),t.pullData(t.page),t.events()},i.prototype.initOpts=function(e){this.config;e.checkbox&&(e.type="checkbox"),e.space&&(e.type="space"),e.type||(e.type="normal"),"normal"!==e.type&&(e.unresize=!0,e.width=e.width||{checkbox:50,radio:50,space:30,numbers:60}[e.type])},i.prototype.setInit=function(e){var l,a,r=this,d=r.config;if(d.clientWidth=d.width||(l=function(e){var t,a=(e=e||d.elem.parent()).width();try{t="none"===e.css("display")}catch(i){}return!e[0]||a&&!t?a:l(e.parent())})(),"width"===e)return d.clientWidth;d.height=d.maxHeight||d.height,d.css&&-1===d.css.indexOf(L)&&(a=d.css.split("}"),layui.each(a,function(e,t){t&&(a[e]="."+L+"-"+r.index+" "+t)}),d.css=a.join("}"));var c=function(a,e,i,l){var n,o;l?(l.key=[d.index,a,i].join("-"),l.colspan=l.colspan||0,l.rowspan=l.rowspan||0,r.initOpts(l),(n=a+(parseInt(l.rowspan)||1)) td:hover > .layui-table-cell{overflow: auto;}"].concat(x.ie?[".layui-table-edit{height: "+i+";}","td[data-edit]:hover:after{height: "+i+";}"]:[]),function(e,t){t&&o.push(a+" "+t)})),l.css&&o.push(l.css),d.style({target:this.elem[0],text:o.join(""),id:"DF-table-"+n})},i.prototype.renderToolbar=function(){var e=this.config,t=['
          ','
          ','
          '].join(""),a=this.layTool.find(".layui-table-tool-temp"),i=("default"===e.toolbar?a.html(t):"string"==typeof e.toolbar&&(t=f(e.toolbar).html()||"")&&a.html(m(t).render(e)),{filter:{title:"\u7b5b\u9009\u5217",layEvent:"LAYTABLE_COLS",icon:"layui-icon-cols"},exports:{title:"\u5bfc\u51fa",layEvent:"LAYTABLE_EXPORT",icon:"layui-icon-export"},print:{title:"\u6253\u5370",layEvent:"LAYTABLE_PRINT",icon:"layui-icon-print"}}),l=[];"object"==typeof e.defaultToolbar&&layui.each(e.defaultToolbar,function(e,t){t="string"==typeof t?i[t]:t;t&&l.push('
          ')}),this.layTool.find(".layui-table-tool-self").html(l.join("")),"function"==typeof e.toolbarRenderComplete&&e.toolbarRenderComplete()},i.prototype.renderPagebar=function(){var e,t=this.config,a=this.layPagebar=f('
          ');t.pagebar&&((e=f(t.pagebar).html()||"")&&a.append(m(e).render(t)),this.layPage.append(a))},i.prototype.setParentCol=function(e,t){var a=this.config,i=this.layHeader.find('th[data-key="'+t+'"]'),l=parseInt(i.attr("colspan"))||0;i[0]&&(t=t.split("-"),t=a.cols[t[1]][t[2]],e?l--:l++,i.attr("colspan",l),i[l?"removeClass":"addClass"](D),t.colspan2=l,t.hide=l<1,a=i.data("parentkey"))&&this.setParentCol(e,a)},i.prototype.setColsPatch=function(){var a=this,e=a.config;layui.each(e.cols,function(e,t){layui.each(t,function(e,t){t.hide&&a.setParentCol(t.hide,t.parentKey)})})},i.prototype.setGroupWidth=function(i){var e,l=this;l.config.cols.length<=1||((e=l.layHeader.find((i?"th[data-key="+i.data("parentkey")+"]>":"")+"."+I)).css("width",0),layui.each(e.get().reverse(),function(){var e=f(this),t=e.parent().data("key"),a=0;l.layHeader.eq(0).find("th[data-parentkey="+t+"]").width(function(e,t){f(this).hasClass(D)||0 tr:first-child > th:last-child")).data("field")&&e.prev()[0]?t(e.prev()):e})()).data("key"),n.cssRules(e,function(e){var t=e.style.width||a.outerWidth();e.style.width=parseFloat(t)+l+"px",0'+(e||"Error")+"");a[0]&&(t.layNone.remove(),a.remove()),t.layFixed.addClass(D),t.layMain.find("tbody").html(""),t.layMain.append(t.layNone=e),t.layTotal.addClass(y),t.layPage.find(P).addClass(y),k.cache[t.key]=[],t.syncCheckAll(),t.renderForm(),t.setColsWidth(),t.loading(!1)},i.prototype.page=1,i.prototype.pullData=function(a,t){var e,i,l=this,n=l.config,o=(n.HAS_SET_COLS_PATCH||l.setColsPatch(),n.HAS_SET_COLS_PATCH=!0,n.request),r=n.response,d=function(){"object"==typeof n.initSort&&l.sort({field:n.initSort.field,type:n.initSort.type,reloadType:t.type})},c=function(e,t){l.setColsWidth(),l.loading(!1),"function"==typeof n.done&&n.done(e,a,e[r.countName],t)};t=t||{},"function"==typeof n.before&&n.before(n),l.startTime=(new Date).getTime(),t.renderData?((e={})[r.dataName]=k.cache[l.key],e[r.countName]=n.url?"object"===layui.type(n.page)?n.page.count:e[r.dataName].length:n.data.length,"object"==typeof n.totalRow&&(e[r.totalRowName]=f.extend({},l.totalRow)),l.renderData({res:e,curr:a,count:e[r.countName],type:t.type,sort:!0}),c(e,"renderData")):n.url?(i={},n.page&&(i[o.pageName]=a,i[o.limitName]=n.limit),o=f.extend(i,n.where),n.contentType&&0==n.contentType.indexOf("application/json")&&(o=JSON.stringify(o)),l.loading(!0),f.ajax({type:n.method||"get",url:n.url,contentType:n.contentType,data:o,dataType:n.dataType||"json",jsonpCallback:n.jsonpCallback,headers:n.headers||{},complete:"function"==typeof n.complete?n.complete:undefined,success:function(e){(e="function"==typeof n.parseData?n.parseData(e)||e:e)[r.statusName]!=r.statusCode?l.errorView(e[r.msgName]||'\u8fd4\u56de\u7684\u6570\u636e\u4e0d\u7b26\u5408\u89c4\u8303\uff0c\u6b63\u786e\u7684\u6210\u529f\u72b6\u6001\u7801\u5e94\u4e3a\uff1a"'+r.statusName+'": '+r.statusCode):(l.totalRow=e[r.totalRowName],l.renderData({res:e,curr:a,count:e[r.countName],type:t.type}),d(),n.time=(new Date).getTime()-l.startTime+" ms"),c(e,t.type)},error:function(e,t){l.errorView("\u8bf7\u6c42\u5f02\u5e38\uff0c\u9519\u8bef\u63d0\u793a\uff1a"+t),"function"==typeof n.error&&n.error(e,t)}})):"array"===layui.type(n.data)&&(e={},i=a*n.limit-n.limit,o=n.data.concat(),e[r.dataName]=n.page?o.splice(i,n.limit):o,e[r.countName]=n.data.length,"object"==typeof n.totalRow&&(e[r.totalRowName]=f.extend({},n.totalRow)),l.totalRow=e[r.totalRowName],l.renderData({res:e,curr:a,count:e[r.countName],type:t.type}),d(),c(e,t.type))},i.prototype.eachCols=function(e){return k.eachCols(null,e,this.config.cols),this},i.prototype.col=function(e){try{return e=e.split("-"),this.config.cols[e[1]][e[2]]||{}}catch(t){return b.error(t),{}}},i.prototype.getTrHtml=function(a,l,n,e){var s=this,u=s.config,y=e&&e.trs||[],h=e&&e.trs_fixed||[],p=e&&e.trs_fixed_r||[];return n=n||1,layui.each(a,function(e,o){var i=[],r=[],d=[],c=e+u.limit*(n-1)+1;if("object"!=typeof o){a[e]=o={LAY_KEY:o};try{k.cache[s.key][e]=o}catch(t){}}"array"===layui.type(o)&&0===o.length||(o[k.config.numbersName]=c,l||(o[k.config.indexName]=e),s.eachCols(function(e,l){var t,e=l.field||e,a=l.key,n=o[e];n!==undefined&&null!==n||(n=""),l.colGroup||(e=['','
          "+function(){var e,t=f.extend(!0,{LAY_COL:l},o),a=k.config.checkName,i=k.config.disabledName;switch(l.type){case"checkbox":return'';case"radio":return'';case"numbers":return c}return l.toolbar?m(f(l.toolbar).html()||"").render(t):T.call(s,{item3:l,content:n,tplData:t})}(),"
          "].join(""),i.push(e),l.fixed&&"right"!==l.fixed&&r.push(e),"right"===l.fixed&&d.push(e))}),e=['data-index="'+e+'"'],o[k.config.checkName]&&e.push('class="'+_+'"'),e=e.join(" "),y.push(""+i.join("")+""),h.push(""+r.join("")+""),p.push(""+d.join("")+""))}),{trs:y,trs_fixed:h,trs_fixed_r:p}},k.getTrHtml=function(e,t){e=C(e);return e.getTrHtml(t,null,e.page)},i.prototype.renderData=function(e){var a=this,i=a.config,t=e.res,l=e.curr,n=a.count=e.count,o=e.sort,r=t[i.response.dataName]||[],t=t[i.response.totalRowName],d=[],c=[],s=[],u=function(){if(!o&&a.sortKey)return a.sort({field:a.sortKey.field,type:a.sortKey.sort,pull:!0,reloadType:e.type});a.getTrHtml(r,o,l,{trs:d,trs_fixed:c,trs_fixed_r:s}),"fixed"===i.scrollPos&&"reloadData"===e.type||a.layBody.scrollTop(0),"reset"===i.scrollPos&&a.layBody.scrollLeft(0),a.layMain.find("."+h).remove(),a.layMain.find("tbody").html(d.join("")),a.layFixLeft.find("tbody").html(c.join("")),a.layFixRight.find("tbody").html(s.join("")),a.syncCheckAll(),a.renderForm(),a.fullSize(),a.haveInit?a.scrollPatch():setTimeout(function(){a.scrollPatch()},50),a.haveInit=!0,p.close(a.tipsIndex)};return k.cache[a.key]=r,a.layTotal[0==r.length?"addClass":"removeClass"](y),a.layPage[i.page||i.pagebar?"removeClass":"addClass"](D),a.layPage.find(P)[!i.page||0==n||0===r.length&&1==l?"addClass":"removeClass"](y),0===r.length?a.errorView(i.text.none):(a.layFixLeft.removeClass(D),o?u():(u(),a.renderTotal(r,t),a.layTotal&&a.layTotal.removeClass(D),void(i.page&&(i.page=f.extend({elem:"layui-table-page"+i.index,count:n,limit:i.limit,limits:i.limits||[10,20,30,40,50,60,70,80,90],groups:3,layout:["prev","page","next","skip","count","limit"],prev:'',next:'',jump:function(e,t){t||(a.page=e.curr,i.limit=e.limit,a.pullData(e.curr))}},i.page),i.page.count=n,O.render(i.page)))))},k.renderData=function(e){e=C(e);e&&e.pullData(e.page,{renderData:!0,type:"reloadData"})},i.prototype.renderTotal=function(e,o){var r,d=this,c=d.config,s={};c.totalRow&&(layui.each(e,function(e,i){"array"===layui.type(i)&&0===i.length||d.eachCols(function(e,t){var e=t.field||e,a=i[e];t.totalRow&&(s[e]=(s[e]||0)+(parseFloat(a)||0))})}),d.dataTotal=[],r=[],d.eachCols(function(e,t){var a,e=t.field||e,i=o&&o[t.field],l="totalRowDecimals"in t?t.totalRowDecimals:2,l=s[e]?parseFloat(s[e]||0).toFixed(l):"",l=(a=t.totalRowText||"",(n={LAY_COL:t})[e]=l,n=t.totalRow&&T.call(d,{item3:t,content:l,tplData:n})||a,i||n),n=(t.field&&d.dataTotal.push({field:t.field,total:f("
          "+l+"
          ").text()}),['','
          "+("string"==typeof(a=t.totalRow||c.totalRow)?m(a).render(f.extend({TOTAL_NUMS:i||s[e],TOTAL_ROW:o||{},LAY_COL:t},t)):l),"
          "].join(""));r.push(n)}),e=d.layTotal.find(".layui-table-patch"),d.layTotal.find("tbody").html(""+r.join("")+(e.length?e.get(0).outerHTML:"")+""))},i.prototype.getColElem=function(e,t){return e.eq(0).find(".laytable-cell-"+t+":eq(0)")},i.prototype.renderForm=function(e){this.config;var t=this.elem.attr("lay-filter");v.render(e,t)},i.prototype.renderFormByElem=function(a){layui.each(["input","select"],function(e,t){v.render(a.find(t))})},i.prototype.syncCheckAll=function(){var a,e=this,i=e.config,t=e.layHeader.find('input[name="layTableCheckbox"]'),l=k.checkStatus(e.key);t[0]&&(a=l.isAll,e.eachCols(function(e,t){"checkbox"===t.type&&(t[i.checkName]=a)}),t.prop({checked:l.isAll,indeterminate:!l.isAll&&l.data.length}),v.render(t))},i.prototype.setRowActive=function(e,t,a){this.config;e=this.layBody.find('tr[data-index="'+e+'"]');if(t=t||"layui-table-click",a)return e.removeClass(t);e.addClass(t),e.siblings("tr").removeClass(t)},i.prototype.setRowChecked=function(i){var e=this,l=e.config,n="all"===i.index,o="array"===layui.type(i.index),r=(t=e.layBody.find("tr"),n?t:t.filter(o?function(){var e=f(this).data("index");return-1!==i.index.indexOf(e)}:'[data-index="'+i.index+'"]')),t=(i=f.extend({type:"checkbox"},i),k.cache[e.key]),a="checked"in i,d=function(e){return"radio"===i.type||(a?i.checked:!e)},t=(layui.each(t,function(e,t){var a;"array"===layui.type(t)||t[l.disabledName]||(n||(o?-1!==i.index.indexOf(e):Number(i.index)===e)?(a=t[l.checkName]=d(t[l.checkName]),(e=r.filter('[data-index="'+e+'"]'))[a?"addClass":"removeClass"](_),"radio"===i.type&&e.siblings().removeClass(_)):"radio"===i.type&&delete t[l.checkName])}),r.find('input[lay-type="'+({radio:"layTableRadio",checkbox:"layTableCheckbox"}[i.type]||"checkbox")+'"]:not(:disabled)')),c=t.last(),s=c.closest(u);("radio"===i.type&&s.hasClass(D)?t.first():t).prop("checked",d(c.prop("checked"))),e.syncCheckAll(),e.renderForm(i.type)},i.prototype.sort=function(l){var e,t=this,a={},i=t.config,n=i.elem.attr("lay-filter"),o=k.cache[t.key];"string"==typeof(l=l||{}).field&&(r=l.field,t.layHeader.find("th").each(function(e,t){var a=f(this),i=a.data("field");if(i===l.field)return l.field=a,r=i,!1}));try{var r=r||l.field.data("field"),d=l.field.data("key");if(t.sortKey&&!l.pull&&r===t.sortKey.field&&l.type===t.sortKey.sort)return;var c=t.layHeader.find("th .laytable-cell-"+d).find(A);t.layHeader.find("th").find(A).removeAttr("lay-sort"),c.attr("lay-sort",l.type||null),t.layFixed.find("th")}catch(s){b.error("Table modules: sort field '"+r+"' not matched")}t.sortKey={field:r,sort:l.type},i.autoSort&&("asc"===l.type?e=layui.sort(o,r,null,!0):"desc"===l.type?e=layui.sort(o,r,!0,!0):(e=layui.sort(o,k.config.indexName,null,!0),delete t.sortKey,delete i.initSort)),a[i.response.dataName]=e||o,t.renderData({res:a,curr:t.page,count:t.count,sort:!0,type:l.reloadType}),l.fromEvent&&(i.initSort={field:r,type:l.type},layui.event.call(l.field,R,"sort("+n+")",f.extend({config:i},i.initSort)))},i.prototype.loading=function(e){this.config.loading&&this.layBox.find(".layui-table-init").toggleClass(y,!e)},i.prototype.cssRules=function(t,a){var e=this.elem.children("style")[0];d.getStyleRules(e,function(e){if(e.selectorText===".laytable-cell-"+t)return a(e),!0})},i.prototype.fullSize=function(){var e,a,i=this,t=i.config,l=t.height;i.fullHeightGap?(l=r.height()-i.fullHeightGap)<135&&(l=135):i.parentDiv&&i.parentHeightGap?(l=f(i.parentDiv).height()-i.parentHeightGap)<135&&(l=135):i.customHeightFunc&&(l=i.customHeightFunc())<135&&(l=135),1
          ')).find("div").css({width:a}),e.find("tr").append(t)):e.find(".layui-table-patch").remove()};n(e.layHeader),n(e.layTotal);n=e.layMain.height()-i;e.layFixed.find(E).css("height",t.height()>=n?n:"auto").scrollTop(e.layMain.scrollTop()),e.layFixRight[k.cache[e.key]&&k.cache[e.key].length&&0');a.html(t),s.height&&a.css("max-height",s.height-(c.layTool.outerHeight()||50)),i.find("."+j)[0]||i.append(a),c.renderForm(),a.on("click",function(e){layui.stope(e)}),e.done&&e.done(a,t)};switch(layui.stope(e),z.trigger("table.tool.panel.remove"),p.close(c.tipsIndex),t){case"LAYTABLE_COLS":n({list:(a=[],c.eachCols(function(e,t){t.field&&"normal"==t.type&&a.push('
        • "+(t.fieldTitle||t.title||t.field)+"").text())+'" lay-filter="LAY_TABLE_TOOL_COLS">
        • ')}),a.join("")),done:function(){v.on("checkbox(LAY_TABLE_TOOL_COLS)",function(e){var e=f(e.elem),t=this.checked,a=e.data("key"),i=c.col(a),l=i.hide,e=e.data("parentkey");i.key&&(i.hide=!t,c.elem.find('*[data-key="'+a+'"]')[t?"removeClass":"addClass"](D),l!=i.hide&&c.setParentCol(!t,e),c.resize(),layui.event.call(this,R,"colToggled("+u+")",{col:i,config:s}))})}});break;case"LAYTABLE_EXPORT":if(!l.length)return p.tips("\u5f53\u524d\u8868\u683c\u65e0\u6570\u636e",this,{tips:3});x.ie?p.tips("\u5bfc\u51fa\u529f\u80fd\u4e0d\u652f\u6301 IE\uff0c\u8bf7\u7528 Chrome \u7b49\u9ad8\u7ea7\u6d4f\u89c8\u5668\u5bfc\u51fa",this,{tips:3}):n({list:['
        • \u5bfc\u51fa csv \u683c\u5f0f\u6587\u4ef6
        • ','
        • \u5bfc\u51fa xls \u683c\u5f0f\u6587\u4ef6
        • '].join(""),done:function(e,t){t.on("click",function(){var e=f(this).data("type");k.exportFile.call(c,s.id,null,e)})}});break;case"LAYTABLE_PRINT":if(!l.length)return p.tips("\u5f53\u524d\u8868\u683c\u65e0\u6570\u636e",this,{tips:3});var o=window.open("about:blank","_blank"),r=[""].join(""),d=f(c.layHeader.html());d.append(c.layMain.find("table").html()),d.append(c.layTotal.find("table").html()),d.find("th.layui-table-patch").remove(),d.find("thead>tr>th."+H).filter(function(e,t){return!f(t).children("."+I).length}).remove(),d.find("tbody>tr>td."+H).remove(),o.document.write(r+d.prop("outerHTML")),o.document.close(),layui.device("edg").edg?(o.onafterprint=o.close,o.print()):(o.print(),o.close())}layui.event.call(this,R,"toolbar("+u+")",f.extend({event:t,config:s},{}))}),c.layHeader.on("click","*[lay-event]",function(e){var t=f(this),a=t.attr("lay-event"),t=t.closest("th").data("key"),t=c.col(t);layui.event.call(this,R,"colTool("+u+")",f.extend({event:a,config:s,col:t},{}))}),c.layPagebar.on("click","*[lay-event]",function(e){var t=f(this).attr("lay-event");layui.event.call(this,R,"pagebar("+u+")",f.extend({event:t,config:s},{}))}),e.on("mousemove",function(e){var t=f(this),a=t.offset().left,e=e.clientX-a;t.data("unresize")||w.eventMoveElem||(r.allowResize=t.width()-e<=10,o.css("cursor",r.allowResize?"col-resize":""))}).on("mouseleave",function(){f(this);w.eventMoveElem||(r.allowResize=!1,o.css("cursor",""))}).on("mousedown",function(e){var t,a=f(this);r.allowResize&&(t=a.data("key"),e.preventDefault(),r.offset=[e.clientX,e.clientY],c.cssRules(t,function(e){var t=e.style.width||a.outerWidth();r.rule=e,r.ruleWidth=parseFloat(t),r.minWidth=a.data("minwidth")||s.cellMinWidth,r.maxWidth=a.data("maxwidth")||s.cellMaxWidth}),a.data(F,r),w.eventMoveElem=a)}),w.docEvent||z.on("mousemove",function(e){var t,a;w.eventMoveElem&&(t=w.eventMoveElem.data(F)||{},w.eventMoveElem.data("resizing",1),e.preventDefault(),t.rule)&&(e=t.ruleWidth+e.clientX-t.offset[0],a=w.eventMoveElem.closest("."+L).attr(N),a=C(a))&&((e=et.maxWidth&&(e=t.maxWidth),t.rule.style.width=e+"px",a.setGroupWidth(w.eventMoveElem),p.close(c.tipsIndex))}).on("mouseup",function(e){var t,a,i,l,n;w.eventMoveElem&&(i=(t=w.eventMoveElem).closest("."+L).attr(N),a=C(i))&&(i=t.data("key"),l=a.col(i),n=a.config.elem.attr("lay-filter"),r={},o.css("cursor",""),a.scrollPatch(),t.removeData(F),delete w.eventMoveElem,a.cssRules(i,function(e){l.width=parseFloat(e.style.width),layui.event.call(t[0],R,"colResized("+n+")",{col:l,config:a.config})}))}),w.docEvent=!0,e.on("click",function(e){var t=f(this),a=t.find(A),i=a.attr("lay-sort");if(!a[0]||1===t.data("resizing"))return t.removeData("resizing");c.sort({field:t,type:"asc"===i?"desc":"desc"===i?null:"asc",fromEvent:!0})}).find(A+" .layui-edge ").on("click",function(e){var t=f(this),a=t.index(),t=t.parents("th").eq(0).data("field");layui.stope(e),0===a?c.sort({field:t,type:"asc",fromEvent:!0}):c.sort({field:t,type:"desc",fromEvent:!0})}),c.commonMember=function(e){var a=f(this).parents("tr").eq(0).data("index"),t=c.layBody.find('tr[data-index="'+a+'"]'),i=(k.cache[c.key]||[])[a]||{},l={tr:t,config:s,data:k.clearCacheKey(i),dataCache:i,index:a,del:function(){k.cache[c.key][a]=[],t.remove(),c.scrollPatch()},update:function(e,t){c.updateRow({index:a,data:e=e||{},related:t},function(e,t){l.data[e]=t})},setRowChecked:function(e){c.setRowChecked(f.extend({index:a},e))}};return f.extend(l,e)}),a=(c.elem.on("click",'input[name="layTableCheckbox"]+',function(e){var t=f(this),a=t.closest("td"),t=t.prev(),i=(c.layBody.find('input[name="layTableCheckbox"]'),t.parents("tr").eq(0).data("index")),l=t[0].checked,n="layTableAllChoose"===t.attr("lay-filter");t[0].disabled||(n?c.setRowChecked({index:"all",checked:l}):(c.setRowChecked({index:i,checked:l}),layui.stope(e)),layui.event.call(t[0],R,"checkbox("+u+")",d.call(t[0],{checked:l,type:n?"all":"one",getCol:function(){return c.col(a.data("key"))}})))}),c.elem.on("click",'input[lay-type="layTableRadio"]+',function(e){var t=f(this),a=t.closest("td"),t=t.prev(),i=t[0].checked,l=t.parents("tr").eq(0).data("index");if(layui.stope(e),t[0].disabled)return!1;c.setRowChecked({type:"radio",index:l}),layui.event.call(t[0],R,"radio("+u+")",d.call(t[0],{checked:i,getCol:function(){return c.col(a.data("key"))}}))}),c.layBody.on("mouseenter","tr",function(){var e=f(this),t=e.index();e.data("off")||c.layBody.find("tr:eq("+t+")").addClass(W)}).on("mouseleave","tr",function(){var e=f(this),t=e.index();e.data("off")||c.layBody.find("tr:eq("+t+")").removeClass(W)}).on("click","tr",function(e){var t=[".layui-form-checkbox",".layui-form-switch",".layui-form-radio","[lay-unrow]"].join(",");f(e.target).is(t)||f(e.target).closest(t)[0]||a.call(this,"row")}).on("dblclick","tr",function(){a.call(this,"rowDouble")}).on("contextmenu","tr",function(e){s.defaultContextmenu||e.preventDefault(),a.call(this,"rowContextmenu")}),function(e){var t=f(this);t.data("off")||layui.event.call(this,R,e+"("+u+")",d.call(t.children("td")[0]))}),n=function(e,t){var a,i,l;(e=f(e)).data("off")||(l=e.data("field"),i=e.data("key"),i=c.col(i),a=e.closest("tr").data("index"),a=k.cache[c.key][a],e.children(y),(i="function"==typeof i.edit?i.edit(a):i.edit)&&((i=f("textarea"===i?'':''))[0].value=(l=e.data("content")||a[l])===undefined||null===l?"":l,e.find("."+M)[0]||e.append(i),i.focus(),t)&&layui.stope(t))},i=(c.layBody.on("change","."+M,function(){var e=f(this),t=e.parent(),a=this.value,i=e.parent().data("field"),e=e.closest("tr").data("index"),e=k.cache[c.key][e],l=d.call(t[0],{value:a,field:i,oldValue:e[i],td:t,reedit:function(){setTimeout(function(){n(l.td);var e={};e[i]=l.oldValue,l.update(e)})},getCol:function(){return c.col(t.data("key"))}}),e={};e[i]=a,l.update(e),layui.event.call(t[0],R,"edit("+u+")",l)}).on("blur","."+M,function(){f(this).remove()}),c.layBody.on(s.editTrigger,"td",function(e){n(this,e)}).on("mouseenter","td",function(){t.call(this)}).on("mouseleave","td",function(){t.call(this,"hide")}),c.layTotal.on("mouseenter","td",function(){t.call(this)}).on("mouseleave","td",function(){t.call(this,"hide")}),"layui-table-grid-down"),t=function(e){var t=f(this),a=t.children(y);t.data("off")||t.parent().hasClass(S)||(e?t.find(".layui-table-grid-down").remove():!(a.prop("scrollWidth")>a.prop("clientWidth")||0'))},l=function(e,t){var a=f(this),i=a.parent(),l=i.data("key"),n=c.col(l),o=i.parent().data("index"),r=i.children(y),i="layui-table-cell-c",d=f('');"tips"===(t=t||n.expandedMode||s.cellExpandedMode)?c.tipsIndex=p.tips(['
          ',r.html(),"
          ",''].join(""),r[0],{tips:[3,""],time:-1,anim:-1,maxWidth:x.ios||x.android?300:c.elem.width()/2,isOutAnim:!1,skin:"layui-table-tips",success:function(e,t){e.find(".layui-table-tips-c").on("click",function(){p.close(t)})}}):(c.elem.find("."+i).trigger("click"),c.cssRules(l,function(e){var t=e.style.width,a=n.expandedWidth||s.cellExpandedWidth;atr").each(function(i){n.cols[i]=[],f(this).children().each(function(e){var t=f(this),a=t.attr("lay-data"),a=d.options(this,{attr:a?"lay-data":null,errorText:r+(a||t.attr("lay-options"))}),t=f.extend({title:t.text(),colspan:parseInt(t.attr("colspan"))||1,rowspan:parseInt(t.attr("rowspan"))||1},a);n.cols[i].push(t)})}),e.find("tbody>tr")),t=k.render(n);!a.length||o.data||t.config.url||(l=0,k.eachCols(t.config.id,function(e,i){a.each(function(e){n.data[e]=n.data[e]||{};var t=f(this),a=i.field;n.data[e][a]=t.children("td").eq(l).html()}),l++}),t.reloadData({data:n.data}))}),this},w.that={},w.config={},function(a,i,e,l){var n,o;l.colGroup&&(n=0,a++,l.CHILD_COLS=[],o=e+(parseInt(l.rowspan)||1),layui.each(i[o],function(e,t){t.parentKey?t.parentKey===l.key&&(t.PARENT_COL_INDEX=a,l.CHILD_COLS.push(t),c(a,i,o,t)):t.PARENT_COL_INDEX||1<=n&&n==(l.colspan||1)||(t.PARENT_COL_INDEX=a,l.CHILD_COLS.push(t),n+=parseInt(1td').filter('[data-field="'+e+'"]')}}})).replace(/"/g,'""'),n.push(a='"'+a+'"')):t.field&&"normal"!==t.type&&0==i&&(d[t.field]=!0)}),r.push(n.join(","))}),c&&layui.each(c.dataTotal,function(e,t){d[t.field]||i.push('"'+(t.total||"")+'"')}),o.join(",")+"\r\n"+r.join("\r\n")+"\r\n"+i.join(","))),u.download=(a.title||n.title||"table_"+(n.index||""))+"."+l,document.body.appendChild(u),u.click(),document.body.removeChild(u)},k.getOptions=l,k.hideCol=function(e,l){var n=C(e);n&&("boolean"===layui.type(l)?n.eachCols(function(e,t){var a=t.key,i=n.col(a),t=t.parentKey;i.hide!=l&&(i=i.hide=l,n.elem.find('*[data-key="'+a+'"]')[i?"addClass":"removeClass"](D),n.setParentCol(i,t))}):(l=layui.isArray(l)?l:[l],layui.each(l,function(e,l){n.eachCols(function(e,t){var a,i;l.field===t.field&&(a=t.key,i=n.col(a),t=t.parentKey,"hide"in l)&&i.hide!=l.hide&&(i=i.hide=!!l.hide,n.elem.find('*[data-key="'+a+'"]')[i?"addClass":"removeClass"](D),n.setParentCol(i,t))})})),f("."+j).remove(),n.resize())},k.reload=function(e,t,a,i){if(l(e))return(e=C(e)).reload(t,a,i),w.call(e)},k.reloadData=function(){var a=f.extend([],arguments),i=(a[3]="reloadData",new RegExp("^("+["elem","id","cols","width","height","maxHeight","toolbar","defaultToolbar","className","css","pagebar"].join("|")+")$"));return layui.each(a[1],function(e,t){i.test(e)&&delete a[1][e]}),k.reload.apply(null,a)},k.render=function(e){e=new i(e);return w.call(e)},k.clearCacheKey=function(e){return delete(e=f.extend({},e))[k.config.checkName],delete e[k.config.indexName],delete e[k.config.numbersName],delete e[k.config.disabledName],e},f(function(){k.init()}),n(R,k)});layui.define(["table"],function(e){"use strict";var A=layui.$,x=layui.form,P=layui.table,y=layui.hint(),B={config:{},on:P.on,eachCols:P.eachCols,index:P.index,set:function(e){var t=this;return t.config=A.extend({},t.config,e),t},resize:P.resize,getOptions:P.getOptions,hideCol:P.hideCol,renderData:P.renderData},i=function(){var a=this,e=a.config,n=e.id||e.index;return{config:e,reload:function(e,t){a.reload.call(a,e,t)},reloadData:function(e,t){B.reloadData(n,e,t)}}},j=function(e){var t=i.that[e];return t||y.error(e?"The treeTable instance with ID '"+e+"' not found":"ID argument required"),t||null},F="lay-table-id",L="layui-hide",s=".layui-table-body",q=".layui-table-main",R=".layui-table-fixed-l",Y=".layui-table-fixed-r",l="layui-table-checked",h="layui-table-tree",z="LAY_DATA_INDEX",m="LAY_DATA_INDEX_HISTORY",f="LAY_PARENT_INDEX",b="LAY_CHECKBOX_HALF",H="LAY_EXPAND",X="LAY_HAS_EXPANDED",V="LAY_ASYNC_STATUS",n=["all","parent","children","none"],t=/<[^>]+?>/,p=["flexIconClose","flexIconOpen","iconClose","iconOpen","iconLeaf","icon"],a=function(e){var t=this;t.index=++B.index,t.config=A.extend(!0,{},t.config,B.config,e),t.init(),t.render()},g=function(n,i,e){var l=P.cache[n];layui.each(e||l,function(e,t){var a=t[z]||"";-1!==a.indexOf("-")&&(l[a]=t),t[i]&&g(n,i,t[i])})},d=function(d,a,e){var r=j(d),o=("reloadData"!==e&&(r.status={expand:{}}),A.extend(!0,{},r.getOptions(),a)),n=o.tree,c=n.customName.children,i=n.customName.id,l=(delete a.hasNumberCol,delete a.hasChecboxCol,delete a.hasRadioCol,P.eachCols(null,function(e,t){"numbers"===t.type?a.hasNumberCol=!0:"checkbox"===t.type?a.hasChecboxCol=!0:"radio"===t.type&&(a.hasRadioCol=!0)},o.cols),a.parseData),u=a.done;"reloadData"===e&&"fixed"===o.scrollPos&&(r.scrollTopCache=r.config.elem.next().find(s).scrollTop()),o.url?e&&(!l||l.mod)||(a.parseData=function(){var e=this,t=arguments,a=t[0],t=("function"===layui.type(l)&&(a=l.apply(e,t)||t[0]),e.response.dataName);return n.data.isSimpleData&&!n["async"].enable&&(a[t]=r.flatToTree(a[t])),N(a[t],function(e){e[H]=H in e?e[H]:e[i]!==undefined&&r.status.expand[e[i]]},c),e.autoSort&&e.initSort&&e.initSort.type&&layui.sort(a[t],e.initSort.field,"desc"===e.initSort.type,!0),r.initData(a[t]),a},a.parseData.mod=!0):a.data!==undefined&&(a.data=a.data||[],n.data.isSimpleData&&(a.data=r.flatToTree(a.data)),r.initData(a.data)),e&&(!u||u.mod)||(a.done=function(){var e,t=arguments,a=t[3],n="renderData"===a,i=(n||delete r.isExpandAll,this.elem.next()),l=(r.updateStatus(null,{LAY_HAS_EXPANDED:!1}),g(d,c),i.find('[name="layTableCheckbox"][lay-filter="layTableAllChoose"]'));if(l.length&&(e=B.checkStatus(d),l.prop({checked:e.isAll&&e.data.length,indeterminate:!e.isAll&&e.data.length})),!n&&o.autoSort&&o.initSort&&o.initSort.type&&B.sort(d),r.renderTreeTable(i),"reloadData"===a&&"fixed"===this.scrollPos&&i.find(s).scrollTop(r.scrollTopCache),"function"===layui.type(u))return u.apply(this,t)},a.done.mod=!0),a&&a.tree&&a.tree.view&&layui.each(p,function(e,t){a.tree.view[t]!==undefined&&(a.tree.view[t]=r.normalizedIcon(a.tree.view[t]))})};a.prototype.init=function(){var e=this.config,t=e.tree.data.cascade,t=(-1===n.indexOf(t)&&(e.tree.data.cascade="all"),P.render(A.extend({},e,{data:[],url:"",done:null}))),a=t.config.id;(i.that[a]=this).tableIns=t,d(a,e)},a.prototype.config={tree:{customName:{children:"children",isParent:"isParent",name:"name",id:"id",pid:"parentId",icon:"icon"},view:{indent:14,flexIconClose:'',flexIconOpen:'',showIcon:!0,icon:"",iconClose:'',iconOpen:'',iconLeaf:'',showFlexIconIfNotParent:!1,dblClickExpand:!0,expandAllDefault:!1},data:{isSimpleData:!1,rootPid:null,cascade:"all"},"async":{enable:!1,url:"",type:null,contentType:null,headers:null,where:null,autoParam:[]},callback:{beforeExpand:null,onExpand:null}}},a.prototype.normalizedIcon=function(e){return e?t.test(e)?e:'':""},a.prototype.getOptions=function(){return this.tableIns?P.getOptions(this.tableIns.config.id):this.config},a.prototype.flatToTree=function(e){var n,i,l,d,r,o,c,u,t=this.getOptions(),a=t.tree,s=a.customName,t=t.id;return e=e||P.cache[t],t=e,n=s.id,i=s.pid,l=s.children,d=a.data.rootPid,n=n||"id",i=i||"parentId",l=l||"children",c={},u=[],layui.each(t,function(e,t){r=n+t[n],o=n+t[i],c[r]||(c[r]={},c[r][l]=[]);var a={};a[l]=c[r][l],c[r]=A.extend({},t,a),((d?c[r][i]===d:!c[r][i])?u:(c[o]||(c[o]={},c[o][l]=[]),c[o][l])).push(c[r])}),u},a.prototype.treeToFlat=function(e,n,i){var l=this,d=l.getOptions().tree.customName,r=d.children,o=d.pid,c=[];return layui.each(e,function(e,t){var e=(i?i+"-":"")+e,a=A.extend({},t);a[o]=t[o]||n,c.push(a),c=c.concat(l.treeToFlat(t[r],t[d.id],e))}),c},a.prototype.getTreeNode=function(e){var t,a,n=this;return e?(a=(t=n.getOptions()).tree,t.id,a.customName,{data:e,dataIndex:e[z],getParentNode:function(){return n.getNodeByIndex(e[f])}}):y.error("\u627e\u4e0d\u5230\u8282\u70b9\u6570\u636e")},a.prototype.getNodeByIndex=function(t){var a,e,n=this,i=n.getNodeDataByIndex(t);return i?((e=n.getOptions()).tree.customName.parent,a=e.id,(e={data:i,dataIndex:i[z],getParentNode:function(){return n.getNodeByIndex(i[f])},update:function(e){return B.updateNode(a,t,e)},remove:function(){return B.removeNode(a,t)},expand:function(e){return B.expandNode(a,A.extend({},e,{index:t}))},setChecked:function(e){return B.setRowChecked(a,A.extend({},e,{index:t}))}}).dataIndex=t,e):y.error("\u627e\u4e0d\u5230\u8282\u70b9\u6570\u636e")},a.prototype.getNodeById=function(a){var e=this.getOptions(),n=e.tree.customName.id,i="",e=B.getData(e.id,!0);if(layui.each(e,function(e,t){if(t[n]===a)return i=t[z],!0}),i)return this.getNodeByIndex(i)},a.prototype.getNodeDataByIndex=function(e,t,a){var n=this.getOptions(),i=n.tree,n=n.id,n=P.cache[n],l=n[e];if("delete"!==a&&l)return A.extend(l,a),t?A.extend({},l):l;for(var d=n,r=String(e).split("-"),o=0,c=i.customName.children;o
          '),N=function(e){y[V]="success",y[s.children]=e,c.initData(y[s.children],y[z]),J(t,!0,!p&&n,i,l)},C=m.format,"function"===layui.type(C)?C(y,o,N):(I=A.extend({},m.where||o.where),C=m.autoParam,layui.each(C,function(e,t){t=t.split("=");I[t[0].trim()]=y[(t[1]||t[0]).trim()]}),(C=m.contentType||o.contentType)&&0==C.indexOf("application/json")&&(I=JSON.stringify(I)),O=m.method||o.method,D=m.dataType||o.dataType,T=m.jsonpCallback||o.jsonpCallback,_=m.headers||o.headers,k=m.parseData||o.parseData,w=m.response||o.response,A.ajax({type:O||"get",url:b,contentType:C,data:I,dataType:D||"json",jsonpCallback:T,headers:_||{},success:function(e){(e="function"==typeof k?k.call(o,e)||e:e)[w.statusName]!=w.statusCode?(y[V]="error",g.html('')):N(e[w.dataName])},error:function(e,t){y[V]="error","function"==typeof o.error&&o.error(e,t)}})),h;y[X]=!0,v.length&&(!o.initSort||o.url&&!o.autoSort||((m=o.initSort).type?layui.sort(v,m.field,"desc"===m.type,!0):layui.sort(v,P.config.indexName,null,!0)),c.initData(y[s.children],y[z]),O=P.getTrHtml(r,v,null,null,e),S={trs:A(O.trs.join("")),trs_fixed:A(O.trs_fixed.join("")),trs_fixed_r:A(O.trs_fixed_r.join(""))},E=(e.split("-").length-1||0)+1,layui.each(v,function(e,t){S.trs.eq(e).attr({"data-index":t[z],"lay-data-index":t[z],"data-level":E}).data("index",t[z]),S.trs_fixed.eq(e).attr({"data-index":t[z],"lay-data-index":t[z],"data-level":E}).data("index",t[z]),S.trs_fixed_r.eq(e).attr({"data-index":t[z],"lay-data-index":t[z],"data-level":E}).data("index",t[z])}),d.find(q).find('tbody tr[lay-data-index="'+e+'"]').after(S.trs),d.find(R).find('tbody tr[lay-data-index="'+e+'"]').after(S.trs_fixed),d.find(Y).find('tbody tr[lay-data-index="'+e+'"]').after(S.trs_fixed_r),c.renderTreeTable(S.trs,E),n)&&!p&&layui.each(v,function(e,t){J({dataIndex:t[z],trElem:d.find('tr[lay-data-index="'+t[z]+'"]').first(),tableViewElem:d,tableId:r,options:o},a,n,i,l)})}else c.isExpandAll=!1,(n&&!p?(layui.each(v,function(e,t){J({dataIndex:t[z],trElem:d.find('tr[lay-data-index="'+t[z]+'"]').first(),tableViewElem:d,tableId:r,options:o},a,n,i,l)}),d.find(v.map(function(e,t,a){return'tr[lay-data-index="'+e[z]+'"]'}).join(","))):(b=c.treeToFlat(v,y[s.id],e),d.find(b.map(function(e,t,a){return'tr[lay-data-index="'+e[z]+'"]'}).join(",")))).addClass(L);U("resize-"+r,function(){B.resize(r)},0)(),l&&"loading"!==y[V]&&(C=u.callback.onExpand,"function"===layui.type(C))&&C(r,y,x)}return h},v=(B.expandNode=function(e,t){var a,n,i,e=j(e);if(e)return a=(t=t||{}).index,n=t.expandFlag,i=t.inherit,t=t.callbackFlag,e=e.getOptions().elem.next(),J({trElem:e.find('tr[lay-data-index="'+a+'"]').first()},n,i,null,t)},B.expandAll=function(a,e){if("boolean"!==layui.type(e))return y.error("expandAll \u7684\u5c55\u5f00\u72b6\u6001\u53c2\u6570\u53ea\u63a5\u6536true/false");var t=j(a);if(t){t.isExpandAll=e;var n=t.getOptions(),i=n.tree,l=n.elem.next(),d=i.customName.isParent,r=i.customName.id,o=i.view.showFlexIconIfNotParent;if(e){e=B.getData(a,!0);if(i["async"].enable){var c=!0;if(layui.each(e,function(e,t){if(t[d]&&!t[V])return!(c=!1)}),!c)return void layui.each(B.getData(a),function(e,t){B.expandNode(a,{index:t[z],expandFlag:!0,inherit:!0})})}var u=!0;if(layui.each(e,function(e,t){if(t[d]&&!t[X])return!(u=!1)}),u)t.updateStatus(null,function(e){(e[d]||o)&&(e[H]=!0,e[r]!==undefined)&&(t.status.expand[e[r]]=!0)}),l.find('tbody tr[data-level!="0"]').removeClass(L),l.find(".layui-table-tree-flexIcon").html(i.view.flexIconOpen),i.view.showIcon&&l.find(".layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)").html(i.view.iconOpen);else{if(t.updateStatus(null,function(e){(e[d]||o)&&(e[H]=!0,e[X]=!0,e[r]!==undefined)&&(t.status.expand[e[r]]=!0)}),n.initSort&&n.initSort.type&&n.autoSort)return B.sort(a);var s,n=P.getTrHtml(a,e),f={trs:A(n.trs.join("")),trs_fixed:A(n.trs_fixed.join("")),trs_fixed_r:A(n.trs_fixed_r.join(""))};layui.each(e,function(e,t){var a=t[z].split("-").length-1;s={"data-index":t[z],"lay-data-index":t[z],"data-level":a},f.trs.eq(e).attr(s).data("index",t[z]),f.trs_fixed.eq(e).attr(s).data("index",t[z]),f.trs_fixed_r.eq(e).attr(s).data("index",t[z])}),layui.each(["main","fixed-l","fixed-r"],function(e,t){l.find(".layui-table-"+t+" tbody").html(f[["trs","trs_fixed","trs_fixed_r"][e]])}),t.renderTreeTable(l,0,!1)}}else t.updateStatus(null,function(e){(e[d]||o)&&(e[H]=!1,e[r]!==undefined)&&(t.status.expand[e[r]]=!1)}),l.find('.layui-table-box tbody tr[data-level!="0"]').addClass(L),l.find(".layui-table-tree-flexIcon").html(i.view.flexIconClose),i.view.showIcon&&l.find(".layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)").html(i.view.iconClose);B.resize(a)}},a.prototype.updateNodeIcon=function(e){var t=this.getOptions().tree||{},a=e.scopeEl,n=e.isExpand,e=e.isParent;a.find(".layui-table-tree-flexIcon").css("visibility",e||t.view.showFlexIconIfNotParent?"visible":"hidden").html(n?t.view.flexIconOpen:t.view.flexIconClose),t.view.showIcon&&(a=a.find(".layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom)"),n=e?n?t.view.iconOpen:t.view.iconClose:t.view.iconLeaf,a.toggleClass("layui-table-tree-iconLeaf",!e).html(n))},a.prototype.renderTreeTable=function(e,t,a){var l=this,n=l.getOptions(),d=n.elem.next(),i=(d.hasClass(h)||d.addClass(h),n.id),r=n.tree||{},o=(r.data,r.view||{}),c=r.customName||{},u=c.isParent,s=(d.attr("lay-filter"),l),f=((t=t||0)||(d.find(".layui-table-body tr:not([data-level])").attr("data-level",t),layui.each(P.cache[i],function(e,t){d.find('.layui-table-main tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t[z]),d.find('.layui-table-fixed-l tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t[z]),d.find('.layui-table-fixed-r tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t[z])})),null),y=c.name,p=o.indent||14;if(layui.each(e.find('td[data-field="'+y+'"]'),function(e,t){var a,n,i=(t=A(t)).closest("tr"),t=t.children(".layui-table-cell");t.hasClass("layui-table-tree-item")||(n=i.attr("lay-data-index"))&&(i=d.find('tr[lay-data-index="'+n+'"]'),(a=s.getNodeDataByIndex(n))[H]&&a[u]&&((f=f||{})[n]=!0),a[b]&&i.find('input[type="checkbox"][name="layTableCheckbox"]').prop("indeterminate",!0),n=t.html(),(t=i.find('td[data-field="'+y+'"]>div.layui-table-cell')).addClass("layui-table-tree-item"),t.html(['
          ',a[H]?o.flexIconOpen:o.flexIconClose,"
          ",o.showIcon?'
          '+(l.normalizedIcon(a[c.icon])||o.icon||(a[u]?a[H]?o.iconOpen:o.iconClose:o.iconLeaf)||"")+"
          ":"",n].join("")).find(".layui-table-tree-flexIcon").on("click",function(e){layui.stope(e),J({trElem:i},null,null,null,!0)}))}),!t&&r.view.expandAllDefault&&l.isExpandAll===undefined)return B.expandAll(i,!0);(!1!==a&&f?(layui.each(f,function(e,t){e=d.find('tr[lay-data-index="'+e+'"]');e.find(".layui-table-tree-flexIcon").html(o.flexIconOpen),J({trElem:e.first()},!0)}),U("renderTreeTable2-"+i,function(){x.render(A(".layui-table-tree["+F+'="'+i+'"]'))},0)):U("renderTreeTable-"+i,function(){n.hasNumberCol&&v(l),x.render(A(".layui-table-tree["+F+'="'+i+'"]'))},0))()},function(a){var e=a.getOptions(),t=e.elem.next(),n=0,i=t.find(".layui-table-main tbody tr"),l=t.find(".layui-table-fixed-l tbody tr"),d=t.find(".layui-table-fixed-r tbody tr");layui.each(a.treeToFlat(P.cache[e.id]),function(e,t){t.LAY_HIDE||(a.getNodeDataByIndex(t[z]).LAY_NUM=++n,i.eq(e).find(".laytable-cell-numbers").html(n),l.eq(e).find(".laytable-cell-numbers").html(n),d.eq(e).find(".laytable-cell-numbers").html(n))})}),N=(a.prototype.render=function(e){var t=this;t.tableIns=P["reloadData"===e?"reloadData":"reload"](t.tableIns.config.id,A.extend(!0,{},t.config)),t.config=t.tableIns.config},a.prototype.reload=function(e,t,a){var n=this;e=e||{},delete n.haveInit,layui.each(e,function(e,t){"array"===layui.type(t)&&delete n.config[e]}),d(n.getOptions().id,e,a||!0),n.config=A.extend(t,{},n.config,e),n.render(a)},B.reloadData=function(){var e=A.extend(!0,[],arguments);return e[3]="reloadData",B.reload.apply(null,e)},function(e,a,n,i){var l=[];return layui.each(e,function(e,t){"function"===layui.type(a)?a(t):A.extend(t,a),l.push(A.extend({},t)),i||(l=l.concat(N(t[n],a,n,i)))}),l}),o=(a.prototype.updateStatus=function(e,t,a){var n=this.getOptions(),i=n.tree;return e=e||P.cache[n.id],N(e,t,i.customName.children,a)},a.prototype.getTableData=function(){var e=this.getOptions();return P.cache[e.id]},B.updateStatus=function(e,t,a){var e=j(e),n=e.getOptions();return a=a||(n.url?P.cache[n.id]:n.data),e.updateStatus(a,t)},B.sort=function(e){var t,a,i,l,n,d=j(e);d&&(n=(t=d.getOptions()).tree,a=B.getData(e),i=n.customName.children,l=function(e,a,n){layui.sort(e,a,n,!0),layui.each(e,function(e,t){l(t[i]||[],a,n)})},t.autoSort)&&((n=t.initSort).type?l(a,n.field,"desc"===n.type):l(a,P.config.indexName,null),P.cache[e]=a,d.initData(a),B.renderData(e))},function(n){var t=n.config.id,i=j(t),a=n.data=B.getNodeDataByIndex(t,n.index),l=a[z],d=(n.dataIndex=l,n.update);n.update=function(){var e=arguments,t=(A.extend(i.getNodeDataByIndex(l),e[0]),d.apply(this,e)),a=n.config.tree.customName.name;return a in e[0]&&n.tr.find('td[data-field="'+a+'"]').children("div.layui-table-cell").removeClass("layui-table-tree-item"),i.renderTreeTable(n.tr,n.tr.attr("data-level"),!1),t},n.del=function(){B.removeNode(t,a)},n.setRowChecked=function(e){B.setRowChecked(t,{index:a,checked:e})}}),u=(B.updateNode=function(e,a,t){var n,i,l,d,r,o=j(e);o&&((d=o.getOptions()).tree,d=(n=d.elem.next()).find('tr[lay-data-index="'+a+'"]'),i=d.attr("data-index"),l=d.attr("data-level"),t)&&(d=o.getNodeDataByIndex(a,!1,t),r=P.getTrHtml(e,[d]),layui.each(["main","fixed-l","fixed-r"],function(e,t){n.find(".layui-table-"+t+' tbody tr[lay-data-index="'+a+'"]').replaceWith(A(r[["trs","trs_fixed","trs_fixed_r"][e]].join("")).attr({"data-index":i,"lay-data-index":a,"data-level":l}).data("index",i))}),o.renderTreeTable(n.find('tr[lay-data-index="'+a+'"]'),l))},B.removeNode=function(e,t){var a=j(e);if(a){var n,i=a.getOptions(),l=i.tree,d=l.customName.isParent,r=l.customName.children,o=i.elem.next(),c=[],u=P.cache[e],t=a.getNodeDataByIndex("string"===layui.type(t)?t:t[z],!1,"delete"),s=a.getNodeDataByIndex(t[f]),l=(a.updateCheckStatus(s),a.treeToFlat([t],t[l.customName.pid],t[f])),t=(layui.each(l,function(e,t){t=t[z];c.push('tr[lay-data-index="'+t+'"]'),-1!==t.indexOf("-")&&delete u[t]}),o.find(c.join(",")).remove(),a.initData());for(n in u)-1!==n.indexOf("-")&&n!==u[n][z]&&delete u[n];layui.each(a.treeToFlat(t),function(e,t){t[m]&&t[m]!==t[z]&&o.find('tr[lay-data-index="'+t[m]+'"]').attr({"data-index":t[z],"lay-data-index":t[z]}).data("index",t[z])}),layui.each(u,function(e,t){o.find('tr[data-level="0"][lay-data-index="'+t[z]+'"]').attr("data-index",e).data("index",e)}),i.hasNumberCol&&v(a),s&&(l=o.find('tr[lay-data-index="'+s[z]+'"]'),s[d]=!(!s[r]||!s[r].length),a.updateNodeIcon({scopeEl:l,isExpand:s[H],isParent:s[d]})),B.resize(e)}},B.addNodes=function(e,t){var a=j(e);if(a){var n=a.getOptions(),i=n.tree,l=n.elem.next(),d=P.config.checkName,r=(t=t||{}).parentIndex,o=t.index,c=t.data,t=t.focus,u=(r="number"===layui.type(r)?r.toString():r)?a.getNodeDataByIndex(r):null,o="number"===layui.type(o)?o:-1,c=A.extend(!0,[],layui.isArray(c)?c:[c]);layui.each(c,function(e,t){d in t||!u||(t[d]=u[d])}),a.getTableData();if(u){var s=i.customName.isParent,f=i.customName.children;u[s]=!0;var y=(y=u[f])?(p=y.splice(-1===o?y.length:o),u[f]=y.concat(c,p)):u[f]=c,f=(a.updateStatus(y,function(e){(e[s]||i.view.showFlexIconIfNotParent)&&(e[X]=!1)}),a.treeToFlat(y));l.find(f.map(function(e){return'tr[lay-data-index="'+e[z]+'"]'}).join(",")).remove(),a.initData(),u[X]=!1,u[V]="local",J({trElem:l.find('tr[lay-data-index="'+r+'"]')},!0)}else{var p=P.cache[e].splice(-1===o?P.cache[e].length:o);if(P.cache[e]=P.cache[e].concat(c,p),n.url||(n.page?(y=n.page,n.data.splice.apply(n.data,[y.limit*(y.curr-1),y.limit].concat(P.cache[e]))):n.data=P.cache[e]),a.initData(),l.find(".layui-none").length)return P.renderData(e),c;var x,f=P.getTrHtml(e,c),h={trs:A(f.trs.join("")),trs_fixed:A(f.trs_fixed.join("")),trs_fixed_r:A(f.trs_fixed_r.join(""))},r=(layui.each(c,function(e,t){x={"data-index":t[z],"lay-data-index":t[z],"data-level":"0"},h.trs.eq(e).attr(x).data("index",t[z]),h.trs_fixed.eq(e).attr(x).data("index",t[z]),h.trs_fixed_r.eq(e).attr(x).data("index",t[z])}),parseInt(c[0][z])-1),y=l.find(q),n=l.find(R),f=l.find(Y);-1==r?y.find('tr[data-level="0"][data-index="0"]')[0]?(y.find('tr[data-level="0"][data-index="0"]').before(h.trs),n.find('tr[data-level="0"][data-index="0"]').before(h.trs_fixed),f.find('tr[data-level="0"][data-index="0"]').before(h.trs_fixed_r)):(y.find("tbody").prepend(h.trs),n.find("tbody").prepend(h.trs_fixed),f.find("tbody").prepend(h.trs_fixed_r)):-1===o?(y.find("tbody").append(h.trs),n.find("tbody").append(h.trs_fixed),f.find("tbody").append(h.trs_fixed_r)):(r=p[0][m],y.find('tr[data-level="0"][data-index="'+r+'"]').before(h.trs),n.find('tr[data-level="0"][data-index="'+r+'"]').before(h.trs_fixed),f.find('tr[data-level="0"][data-index="'+r+'"]').before(h.trs_fixed_r)),layui.each(P.cache[e],function(e,t){l.find('tr[data-level="0"][lay-data-index="'+t[z]+'"]').attr("data-index",e).data("index",e)}),a.renderTreeTable(l.find(c.map(function(e,t,a){return'tr[lay-data-index="'+e[z]+'"]'}).join(",")))}return a.updateCheckStatus(u),u&&(o=l.find('tr[lay-data-index="'+u[z]+'"]'),a.updateNodeIcon({scopeEl:o,isExpand:u[H],isParent:u[s]})),B.resize(e),t&&l.find(q).find('tr[lay-data-index="'+c[0][z]+'"]').get(0).scrollIntoViewIfNeeded(),c}},B.checkStatus=function(e,n){var i,t,a,l=j(e);if(l)return l=l.getOptions().tree,i=P.config.checkName,t=B.getData(e,!0).filter(function(e,t,a){return e[i]||n&&e[b]}),a=!0,layui.each("all"===l.data.cascade?P.cache[e]:B.getData(e,!0),function(e,t){if(!t[i])return!(a=!1)}),{data:t,isAll:a}},B.on("sort",function(e){var e=e.config,t=e.elem.next(),e=e.id;t.hasClass(h)&&B.sort(e)}),B.on("row",function(e){e.config.elem.next().hasClass(h)&&o(e)}),B.on("rowDouble",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&(o(e),(t.tree||{}).view.dblClickExpand)&&J({trElem:e.tr.first()},null,null,null,!0)}),B.on("rowContextmenu",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&o(e)}),B.on("tool",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&o(e)}),B.on("edit",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&(o(e),e.field===t.tree.customName.name)&&((a={})[e.field]=e.value,e.update(a))}),B.on("radio",function(e){var t=e.config,a=t.elem.next(),t=t.id;a.hasClass(h)&&(a=j(t),o(e),u.call(a,e.tr,e.checked))}),a.prototype.setRowCheckedClass=function(e,t){var a=this.getOptions(),n=(e.data("index"),a.elem.next());e[t?"addClass":"removeClass"](l),e.each(function(){var e=A(this).data("index");n.find('.layui-table-fixed-r tbody tr[data-index="'+e+'"]')[t?"addClass":"removeClass"](l)})},a.prototype.updateCheckStatus=function(e,t){var a,n,i,l,d,r,o,c=this,u=c.getOptions();return!!u.hasChecboxCol&&(a=u.tree,n=u.id,i=u.elem.next(),l=P.config.checkName,"all"!==(d=a.data.cascade)&&"parent"!==d||!e||(d=c.updateParentCheckStatus(e,"boolean"===layui.type(t)?t:null),layui.each(d,function(e,t){var a=i.find('tr[lay-data-index="'+t[z]+'"] input[name="layTableCheckbox"]:not(:disabled)'),n=t[l];c.setRowCheckedClass(a.closest("tr"),n),x.render(a.prop({checked:n,indeterminate:t[b]}))})),o=!(r=!0),0<(e=(e="all"===a.data.cascade?P.cache[n]:B.getData(n,!0)).filter(function(e){return!e[u.disabledName]})).length?layui.each(e,function(e,t){if((t[l]||t[b])&&(o=!0),t[l]||(r=!1),o&&!r)return!0}):r=!1,o=o&&!r,x.render(i.find('input[name="layTableCheckbox"][lay-filter="layTableAllChoose"]').prop({checked:r,indeterminate:o})),r)},a.prototype.updateParentCheckStatus=function(a,n){var i,e=this.getOptions(),t=e.tree,e=e.id,l=P.config.checkName,t=t.customName.children,d=[];return!(a[b]=!1)===n?a[t].length?layui.each(a[t],function(e,t){if(!t[l])return n=!1,a[b]=!0}):n=!1:!1===n?layui.each(a[t],function(e,t){if(t[l]||t[b])return a[b]=!0}):(n=!1,i=0,layui.each(a[t],function(e,t){t[l]&&i++}),n=a[t].length?a[t].length===i:a[l],a[b]=!n&&0')),n=(e.tree(a),i.elem=p(i.elem));if(n[0]){if(e.key=i.id||e.index,e.elem=a,e.elemNone=p('
          '+i.text.none+"
          "),n.html(e.elem),0==e.elem.find(".layui-tree-set").length)return e.elem.append(e.elemNone);i.showCheckbox&&e.renderForm("checkbox"),e.elem.find(".layui-tree-set").each(function(){var e=p(this);e.parent(".layui-tree-pack")[0]||e.addClass("layui-tree-setHide"),!e.next()[0]&&e.parents(".layui-tree-pack").eq(1).hasClass("layui-tree-lineExtend")&&e.addClass(T),e.next()[0]||e.parents(".layui-tree-set").eq(0).next()[0]||e.addClass(T)}),e.events()}},l.prototype.renderForm=function(e){i.render(e,"LAY-tree-"+this.index)},l.prototype.tree=function(r,e){var d=this,s=d.config,o=s.customName,e=e||s.data;layui.each(e,function(e,i){var a,n,t=i[o.children]&&0"),c=p(['
          ','
          ','
          ',s.showLine?t?'':'':'',s.showCheckbox?'':"",s.isJump&&i.href?''+(i[o.title]||i.label||s.text.defaultNodeName)+"":''+(i[o.title]||i.label||s.text.defaultNodeName)+"","
          ",s.edit?(a={add:'',update:'',del:''},n=['
          '],!0===s.edit&&(s.edit=["update","del"]),"object"==typeof s.edit?(layui.each(s.edit,function(e,i){n.push(a[i]||"")}),n.join("")+"
          "):void 0):"","
          "].join(""));t&&(c.append(l),d.tree(l,i[o.children])),r.append(c),c.prev("."+k)[0]&&c.prev().children(".layui-tree-pack").addClass("layui-tree-showLine"),t||c.parent(".layui-tree-pack").addClass("layui-tree-lineExtend"),d.spread(c,i),s.showCheckbox&&(i.checked&&d.checkids.push(i[o.id]),d.checkClick(c,i)),s.edit&&d.operate(c,i)})},l.prototype.spread=function(n,t){var l=this,c=l.config,e=n.children("."+b),i=e.children("."+g),a=i.find('input[same="layuiTreeCheck"]'),r=e.find("."+C),e=e.find("."+w),d=c.onlyIconControl?r:i,s="";d.on("click",function(e){var i=n.children("."+N),a=(d.children(".layui-icon")[0]?d:d.find(".layui-tree-icon")).children(".layui-icon");i[0]?n.hasClass(F)?(n.removeClass(F),i.slideUp(200),a.removeClass(x).addClass(v),l.updateFieldValue(t,"spread",!1)):(n.addClass(F),i.slideDown(200),a.addClass(x).removeClass(v),l.updateFieldValue(t,"spread",!0),c.accordion&&((i=n.siblings("."+k)).removeClass(F),i.children("."+N).slideUp(200),i.find(".layui-tree-icon").children(".layui-icon").removeClass(x).addClass(v))):s="normal"}),e.on("click",function(){p(this).hasClass(u)||(s=n.hasClass(F)?c.onlyIconControl?"open":"close":c.onlyIconControl?"close":"open",a[0]&&l.updateFieldValue(t,"checked",a.prop("checked")),c.click&&c.click({elem:n,state:s,data:t}))})},l.prototype.updateFieldValue=function(e,i,a){i in e&&(e[i]=a)},l.prototype.setCheckbox=function(e,i,a){var t,n=this,l=n.config.customName,c=a.prop("checked");a.prop("disabled")||("object"!=typeof i[l.children]&&!e.find("."+N)[0]||e.find("."+N).find('input[same="layuiTreeCheck"]').each(function(e){this.disabled||((e=i[l.children][e])&&n.updateFieldValue(e,"checked",c),n.updateFieldValue(this,"checked",c))}),(t=function(e){var i,a,n;e.parents("."+k)[0]&&(a=(e=e.parent("."+N)).parent(),n=e.prev().find('input[same="layuiTreeCheck"]'),c?n.prop("checked",c):(e.find('input[same="layuiTreeCheck"]').each(function(){this.checked&&(i=!0)}),i||n.prop("checked",!1)),t(a))})(e),n.renderForm("checkbox"))},l.prototype.checkClick=function(a,n){var t=this,l=t.config;a.children("."+b).children("."+g).on("click",'input[same="layuiTreeCheck"]+',function(e){layui.stope(e);var e=p(this).prev(),i=e.prop("checked");e.prop("disabled")||(t.setCheckbox(a,n,e),t.updateFieldValue(n,"checked",i),l.oncheck&&l.oncheck({elem:a,checked:i,data:n}))})},l.prototype.operate=function(r,d){var s=this,o=s.config,u=o.customName,e=r.children("."+b),h=e.children("."+g);e.children(".layui-tree-btnGroup").on("click",".layui-icon",function(e){layui.stope(e);var i,e=p(this).data("type"),n=r.children("."+N),t={data:d,type:e,elem:r};if("add"==e){n[0]||(o.showLine?(h.find("."+C).addClass("layui-tree-icon"),h.find("."+C).children(".layui-icon").addClass(v).removeClass("layui-icon-file")):h.find(".layui-tree-iconArrow").removeClass(m),r.append('
          '));var a,l=o.operate&&o.operate(t),c={};if(c[u.title]=o.text.defaultNodeName,c[u.id]=l,s.tree(r.children("."+N),[c]),o.showLine&&(n[0]?(n.hasClass(S)||n.addClass(S),r.find("."+N).each(function(){p(this).children("."+k).last().addClass(T)}),(n.children("."+k).last().prev().hasClass(T)?n.children("."+k).last().prev():n.children("."+k).last()).removeClass(T),!r.parent("."+N)[0]&&r.next()[0]&&n.children("."+k).last().removeClass(T)):(l=r.siblings("."+k),a=1,c=r.parent("."+N),layui.each(l,function(e,i){p(i).children("."+N)[0]||(a=0)}),(1==a?(l.children("."+N).addClass(L),l.children("."+N).children("."+k).removeClass(T),r.children("."+N).addClass(L),c.removeClass(S),c.children("."+k).last().children("."+N).children("."+k).last()):r.children("."+N).children("."+k)).addClass(T))),!o.showCheckbox)return;h.find('input[same="layuiTreeCheck"]')[0].checked&&(r.children("."+N).children("."+k).last().find('input[same="layuiTreeCheck"]')[0].checked=!0),s.renderForm("checkbox")}else"update"==e?(l=h.children("."+w).html(),h.children("."+w).html(""),h.append(''),h.children(".layui-tree-editInput").val(f.unescape(l)).focus(),i=function(e){var i=f.escape(e.val().trim())||o.text.defaultNodeName;e.remove(),h.children("."+w).html(i),t.data[u.title]=i,o.operate&&o.operate(t)},h.children(".layui-tree-editInput").blur(function(){i(p(this))}),h.children(".layui-tree-editInput").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),i(p(this)))})):y.confirm('\u786e\u8ba4\u5220\u9664\u8be5\u8282\u70b9 "'+(d[u.title]||"")+'" \u5417\uff1f',function(e){var l,a,i;o.operate&&o.operate(t),t.status="remove",y.close(e),r.prev("."+k)[0]||r.next("."+k)[0]||r.parent("."+N)[0]?(r.siblings("."+k).children("."+b)[0]?(o.showCheckbox&&(l=function(e){var i,a,n,t;e.parents("."+k)[0]&&(i=e.siblings("."+k).children("."+b),a=(e=e.parent("."+N).prev()).find('input[same="layuiTreeCheck"]')[0],n=1,(t=0)==a.checked)&&(i.each(function(e,i){i=p(i).find('input[same="layuiTreeCheck"]')[0];0!=i.checked||i.disabled||(n=0),i.disabled||(t=1)}),1==n)&&1==t&&(a.checked=!0,s.renderForm("checkbox"),l(e.parent("."+k)))})(r),o.showLine&&(e=r.siblings("."+k),a=1,i=r.parent("."+N),layui.each(e,function(e,i){p(i).children("."+N)[0]||(a=0)}),1==a?(n[0]||(i.removeClass(S),e.children("."+N).addClass(L),e.children("."+N).children("."+k).removeClass(T)),(r.next()[0]?i.children("."+k).last():r.prev()).children("."+N).children("."+k).last().addClass(T),r.next()[0]||r.parents("."+k)[1]||r.parents("."+k).eq(0).next()[0]||r.prev("."+k).addClass(T)):!r.next()[0]&&r.hasClass(T)&&r.prev().addClass(T))):(e=r.parent("."+N).prev(),o.showLine?(e.find("."+C).removeClass("layui-tree-icon"),e.find("."+C).children(".layui-icon").removeClass(x).addClass("layui-icon-file"),(i=e.parents("."+N).eq(0)).addClass(S),i.children("."+k).each(function(){p(this).children("."+N).children("."+k).last().addClass(T)})):e.find(".layui-tree-iconArrow").addClass(m),r.parents("."+k).eq(0).removeClass(F),r.parent("."+N).remove()),r.remove()):(r.remove(),s.elem.append(s.elemNone))})})},l.prototype.events=function(){var i=this,t=i.config;i.elem.find(".layui-tree-checkedFirst");i.setChecked(i.checkids),i.elem.find(".layui-tree-search").on("keyup",function(){var e=p(this),a=e.val(),e=e.nextAll(),n=[];e.find("."+w).each(function(){var i,e=p(this).parents("."+b);-1!=p(this).html().indexOf(a)&&(n.push(p(this).parent()),(i=function(e){e.addClass("layui-tree-searchShow"),e.parent("."+N)[0]&&i(e.parent("."+N).parent("."+k))})(e.parent("."+k)))}),e.find("."+b).each(function(){var e=p(this).parent("."+k);e.hasClass("layui-tree-searchShow")||e.addClass(m)}),0==e.find(".layui-tree-searchShow").length&&i.elem.append(i.elemNone),t.onsearch&&t.onsearch({elem:n})}),i.elem.find(".layui-tree-search").on("keydown",function(){p(this).nextAll().find("."+b).each(function(){p(this).parent("."+k).removeClass("layui-tree-searchShow "+m)}),p(".layui-tree-emptyText")[0]&&p(".layui-tree-emptyText").remove()})},l.prototype.getChecked=function(){var t=this,e=t.config,l=e.customName,i=[],a=[],c=(t.elem.find(".layui-form-checked").each(function(){i.push(p(this).prev()[0].value)}),function(e,n){layui.each(e,function(e,a){layui.each(i,function(e,i){if(a[l.id]==i)return t.updateFieldValue(a,"checked",!0),delete(i=p.extend({},a))[l.children],n.push(i),a[l.children]&&(i[l.children]=[],c(a[l.children],i[l.children])),!0})})});return c(p.extend({},e.data),a),a},l.prototype.setChecked=function(l){this.config;this.elem.find("."+k).each(function(e,i){var a=p(this).data("id"),n=p(i).children("."+b).find('input[same="layuiTreeCheck"]'),t=n.next();if("number"==typeof l){if(a.toString()==l.toString())return n[0].checked||t.click(),!1}else"object"==typeof l&&layui.each(l,function(e,i){if(i.toString()==a.toString()&&!n[0].checked)return t.click(),!0})})},n.that={},n.config={},t.reload=function(e,i){e=n.that[e];return e.reload(i),n.call(e)},t.getChecked=function(e){return n.that[e].getChecked()},t.setChecked=function(e,i){return n.that[e].setChecked(i)},t.render=function(e){e=new l(e);return n.call(e)},e(a,t)});layui.define(["laytpl","form"],function(e){"use strict";var d=layui.$,n=layui.laytpl,t=layui.form,a="transfer",i={config:{},index:layui[a]?layui[a].index+1e4:0,set:function(e){var t=this;return t.config=d.extend({},t.config,e),t},on:function(e,t){return layui.onevent.call(this,a,e,t)}},l=function(){var t=this,e=t.config,a=e.id||t.index;return l.that[a]=t,{config:l.config[a]=e,reload:function(e){t.reload.call(t,e)},getData:function(){return t.getData.call(t)}}},s="layui-hide",u="layui-btn-disabled",c="layui-none",r="layui-transfer-box",h="layui-transfer-header",o="layui-transfer-search",f="layui-transfer-data",y=function(e){return['
          ','
          ','","
          ","{{# if(d.data.showSearch){ }}",'","{{# } }}",'
            ',"
            "].join("")},p=['
            ',y({index:0,checkAllName:"layTransferLeftCheckAll"}),'
            ','",'","
            ",y({index:1,checkAllName:"layTransferRightCheckAll"}),"
            "].join(""),v=function(e){var t=this;t.index=++i.index,t.config=d.extend({},t.config,i.config,e),t.render()};v.prototype.config={title:["\u5217\u8868\u4e00","\u5217\u8868\u4e8c"],width:200,height:360,data:[],value:[],showSearch:!1,id:"",text:{none:"\u65e0\u6570\u636e",searchNone:"\u65e0\u5339\u914d\u6570\u636e"}},v.prototype.reload=function(e){var t=this;t.config=d.extend({},t.config,e),t.render()},v.prototype.render=function(){var e=this,t=e.config,a=e.elem=d(n(p,{open:"{{",close:"}}"}).render({data:t,index:e.index})),i=t.elem=d(t.elem);i[0]&&(t.data=t.data||[],t.value=t.value||[],t.id="id"in t?t.id:elem.attr("id")||e.index,e.key=t.id,i.html(e.elem),e.layBox=e.elem.find("."+r),e.layHeader=e.elem.find("."+h),e.laySearch=e.elem.find("."+o),e.layData=a.find("."+f),e.layBtn=a.find(".layui-transfer-active .layui-btn"),e.layBox.css({width:t.width,height:t.height}),e.layData.css({height:(i=t.height-e.layHeader.outerHeight(),t.showSearch&&(i-=e.laySearch.outerHeight()),i-2)}),e.renderData(),e.events())},v.prototype.renderData=function(){var e=this,t=e.config,l=[{checkName:"layTransferLeftCheck",views:[]},{checkName:"layTransferRightCheck",views:[]}];e.parseData(function(a){var i=a.selected?1:0,n=["
          • ",'',"
          • "].join("");i?layui.each(t.value,function(e,t){t==a.value&&a.selected&&(l[i].views[e]=n)}):l[i].views.push(n),delete a.selected}),e.layData.eq(0).html(l[0].views.join("")),e.layData.eq(1).html(l[1].views.join("")),e.renderCheckBtn()},v.prototype.renderForm=function(e){t.render(e,"LAY-transfer-"+this.index)},v.prototype.renderCheckBtn=function(c){var r=this,o=r.config;c=c||{},r.layBox.each(function(e){var t=d(this),a=t.find("."+f),t=t.find("."+h).find('input[type="checkbox"]'),i=a.find('input[type="checkbox"]'),n=0,l=!1;i.each(function(){var e=d(this).data("hide");(this.checked||this.disabled||e)&&n++,this.checked&&!e&&(l=!0)}),t.prop("checked",l&&n===i.length),r.layBtn.eq(e)[l?"removeClass":"addClass"](u),c.stopNone||(i=a.children("li:not(."+s+")").length,r.noneView(a,i?"":o.text.none))}),r.renderForm("checkbox")},v.prototype.noneView=function(e,t){var a=d('

            '+(t||"")+"

            ");e.find("."+c)[0]&&e.find("."+c).remove(),t.replace(/\s/g,"")&&e.append(a)},v.prototype.setValue=function(){var e=this.config,t=[];return this.layBox.eq(1).find("."+f+' input[type="checkbox"]').each(function(){d(this).data("hide")||t.push(this.value)}),e.value=t,this},v.prototype.parseData=function(t){var i=this.config,n=[];return layui.each(i.data,function(e,a){a=("function"==typeof i.parseData?i.parseData(a):a)||a,n.push(a=d.extend({},a)),layui.each(i.value,function(e,t){t==a.value&&(a.selected=!0)}),t&&t(a)}),i.data=n,this},v.prototype.getData=function(e){var t=this.config,i=[];return this.setValue(),layui.each(e||t.value,function(e,a){layui.each(t.data,function(e,t){delete t.selected,a==t.value&&i.push(t)})}),i},v.prototype.transfer=function(e,t){var a,i=this,n=i.config,l=i.layBox.eq(e),c=[],t=(t?((a=(t=t).find('input[type="checkbox"]'))[0].checked=!1,l.siblings("."+r).find("."+f).append(t.clone()),t.remove(),c.push(a[0].value),i.setValue()):l.each(function(e){d(this).find("."+f).children("li").each(function(){var e=d(this),t=e.find('input[type="checkbox"]'),a=t.data("hide");t[0].checked&&!a&&(t[0].checked=!1,l.siblings("."+r).find("."+f).append(e.clone()),e.remove(),c.push(t[0].value)),i.setValue()})}),i.renderCheckBtn(),l.siblings("."+r).find("."+o+" input"));""!==t.val()&&t.trigger("keyup"),n.onchange&&n.onchange(i.getData(c),e)},v.prototype.events=function(){var n=this,l=n.config;n.elem.on("click",'input[lay-filter="layTransferCheckbox"]+',function(){var e=d(this).prev(),t=e[0].checked,a=e.parents("."+r).eq(0).find("."+f);e[0].disabled||("all"===e.attr("lay-type")&&a.find('input[type="checkbox"]').each(function(){this.disabled||(this.checked=t)}),setTimeout(function(){n.renderCheckBtn({stopNone:!0})},0))}),n.elem.on("dblclick","."+f+">li",function(e){var t=d(this),a=t.children('input[type="checkbox"]'),i=t.parent().parent().data("index");a[0].disabled||!1!==("function"==typeof l.dblclick?l.dblclick({elem:t,data:n.getData([a[0].value])[0],index:i}):null)&&n.transfer(i,t)}),n.layBtn.on("click",function(){var e=d(this),t=e.data("index");e.hasClass(u)||n.transfer(t)}),n.laySearch.find("input").on("keyup",function(){var i=this.value,e=d(this).parents("."+o).eq(0).siblings("."+f),t=e.children("li"),t=(t.each(function(){var e=d(this),t=e.find('input[type="checkbox"]'),a=t[0].title,a=("cs"!==l.showSearch&&(a=a.toLowerCase(),i=i.toLowerCase()),-1!==a.indexOf(i));e[a?"removeClass":"addClass"](s),t.data("hide",!a)}),n.renderCheckBtn(),t.length===e.children("li."+s).length);n.noneView(e,t?l.text.searchNone:"")})},l.that={},l.config={},i.reload=function(e,t){e=l.that[e];return e.reload(t),l.call(e)},i.getData=function(e){return l.that[e].getData()},i.render=function(e){e=new v(e);return l.call(e)},e(a,i)});layui.define(["jquery","lay"],function(e){"use strict";var a=layui.$,l=layui.lay,t=(layui.hint(),layui.device(),{config:{},set:function(e){var i=this;return i.config=a.extend({},i.config,e),i},on:function(e,i){return layui.onevent.call(this,d,e,i)}}),d="carousel",r="layui-this",s="layui-carousel-left",u="layui-carousel-right",c="layui-carousel-prev",h="layui-carousel-next",o="layui-carousel-arrow",m="layui-carousel-ind",i=function(e){var i=this;i.config=a.extend({},i.config,t.config,e),i.render()};i.prototype.config={width:"600px",height:"280px",full:!1,arrow:"hover",indicator:"inside",autoplay:!0,interval:3e3,anim:"",trigger:"click",index:0},i.prototype.render=function(){var e=this,i=e.config,n=a(i.elem);if(1*[carousel-item]>*"),i.index<0&&(i.index=0),i.index>=e.elemItem.length&&(i.index=e.elemItem.length-1),i.interval<800&&(i.interval=800),i.full?i.elem.css({position:"fixed",width:"100%",height:"100%",zIndex:9999}):i.elem.css({width:i.width,height:i.height}),i.elem.attr("lay-anim",i.anim),e.elemItem.eq(i.index).addClass(r),e.elemItem.length<=1||(e.indicator(),e.arrow(),e.autoplay(),e.events()))},i.prototype.reload=function(e){var i=this;clearInterval(i.timer),i.config=a.extend({},i.config,e),i.render()},i.prototype.prevIndex=function(){var e=this.config.index-1;return e=e<0?this.elemItem.length-1:e},i.prototype.nextIndex=function(){var e=this.config.index+1;return e=e>=this.elemItem.length?0:e},i.prototype.addIndex=function(e){var i=this.config;i.index=i.index+(e=e||1),i.index>=this.elemItem.length&&(i.index=0)},i.prototype.subIndex=function(e){var i=this.config;i.index=i.index-(e=e||1),i.index<0&&(i.index=this.elemItem.length-1)},i.prototype.autoplay=function(){var e=this,i=e.config;i.autoplay&&(clearInterval(e.timer),e.timer=setInterval(function(){e.slide()},i.interval))},i.prototype.arrow=function(){var i=this,e=i.config,n=a(['",'"].join(""));e.elem.attr("lay-arrow",e.arrow),e.elem.find("."+o)[0]&&e.elem.find("."+o).remove(),e.elem.append(n),n.on("click",function(){var e=a(this).attr("lay-type");i.slide(e)})},i.prototype["goto"]=function(e){var i=this,n=i.config;e>n.index?i.slide("add",e-n.index):e
              ',(i=[],layui.each(e.elemItem,function(e){i.push("")}),i.join("")),"
            "].join(""));n.elem.attr("lay-indicator",n.indicator),n.elem.find("."+m)[0]&&n.elem.find("."+m).remove(),n.elem.append(t),"updown"===n.anim&&t.css("margin-top",-t.height()/2),t.find("li").on("hover"===n.trigger?"mouseover":n.trigger,function(){e["goto"](a(this).index())})},i.prototype.slide=function(e,i){var n=this,t=n.elemItem,a=n.config,o=a.index,l=a.elem.attr("lay-filter");n.haveSlide||("sub"===e?(n.subIndex(i),t.eq(a.index).addClass(c),setTimeout(function(){t.eq(o).addClass(u),t.eq(a.index).addClass(u)},50)):(n.addIndex(i),t.eq(a.index).addClass(h),setTimeout(function(){t.eq(o).addClass(s),t.eq(a.index).addClass(s)},50)),setTimeout(function(){t.removeClass(r+" "+c+" "+h+" "+s+" "+u),t.eq(a.index).addClass(r),n.haveSlide=!1},350),n.elemInd.find("li").eq(a.index).addClass(r).siblings().removeClass(r),n.haveSlide=!0,e={index:a.index,prevIndex:o,item:t.eq(a.index)},"function"==typeof a.change&&a.change(e),layui.event.call(this,d,"change("+l+")",e))},i.prototype.events=function(){var t,a,o=this,e=o.config;e.elem.data("haveEvents")||(e.elem.on("mouseenter touchstart",function(){"always"!==o.config.autoplay&&clearInterval(o.timer)}).on("mouseleave touchend",function(){"always"!==o.config.autoplay&&o.autoplay()}),t=e.elem,a="updown"===e.anim,l.touchSwipe(t,{onTouchEnd:function(e,i){var n=Date.now()-i.timeStart,i=a?i.distanceY:i.distanceX;(.25t[a?"height":"width"]()/3)&&o.slide(0a.length&&(a.value=a.length),parseInt(a.value)===a.value||a.half||(a.value=Math.ceil(a.value)-a.value<.5?Math.ceil(a.value):Math.floor(a.value)),'
              "),n=1;n<=a.length;n++){var o='
            • ";a.half&&parseInt(a.value)!==a.value&&n==Math.ceil(a.value)?i=i+'
            • ":i+=o}i+="
            "+(a.text?''+a.value+"\u661f":"")+"";var l=a.elem,s=l.next(".layui-rate");s[0]&&s.remove(),e.elemTemp=u(i),a.span=e.elemTemp.next("span"),a.setText&&a.setText(a.value),l.html(e.elemTemp),l.addClass("layui-inline"),a.readonly||e.action()},a.prototype.setvalue=function(e){this.config.value=e,this.render()},a.prototype.action=function(){var n=this.config,t=this.elemTemp,i=t.find("i").width(),l=t.children("li");l.each(function(e){var a=e+1,l=u(this);l.on("click",function(e){n.value=a,n.half&&e.pageX-u(this).offset().left<=i/2&&(n.value=n.value-.5),n.text&&t.next("span").text(n.value+"\u661f"),n.choose&&n.choose(n.value),n.setText&&n.setText(n.value)}),l.on("mousemove",function(e){t.find("i").each(function(){u(this).addClass(h).removeClass(s)}),t.find("i:lt("+a+")").each(function(){u(this).addClass(f).removeClass(v)}),n.half&&e.pageX-u(this).offset().left<=i/2&&l.children("i").addClass(o).removeClass(f)}),l.on("mouseleave",function(){t.find("i").each(function(){u(this).addClass(h).removeClass(s)}),t.find("i:lt("+Math.floor(n.value)+")").each(function(){u(this).addClass(f).removeClass(v)}),n.half&&parseInt(n.value)!==n.value&&t.children("li:eq("+Math.floor(n.value)+")").children("i").addClass(o).removeClass("layui-icon-rate-solid layui-icon-rate")})}),r.touchSwipe(t,{onTouchMove:function(e,a){var i;Date.now()-a.timeStart<=200||(a=e.touches[0].pageX,e=t.width()/n.length,a=(a-t.offset().left)/e,(i=(i=(e=a%1)<=.5&&n.half?.5+(a-e):Math.ceil(a))>n.length?n.length:i)<0&&(i=0),l.each(function(e){var a=u(this).children("i"),l=Math.ceil(i)-e==1,t=Math.ceil(i)>e,e=i-e==.5;t?(a.addClass(f).removeClass(v),n.half&&e&&a.addClass(o).removeClass(f)):a.addClass(h).removeClass(s),a.toggleClass("layui-rate-hover",l)}),n.value=i,n.text&&t.next("span").text(n.value+"\u661f"),n.setText&&n.setText(n.value))},onTouchEnd:function(e,a){Date.now()-a.timeStart<=200||(t.find("i").removeClass("layui-rate-hover"),n.choose&&n.choose(n.value),n.setText&&n.setText(n.value))}})},a.prototype.events=function(){},c.render=function(e){e=new a(e);return function(){var a=this;return{setvalue:function(e){a.setvalue.call(a,e)},config:a.config}}.call(e)},e(l,c)});layui.define("jquery",function(o){"use strict";var w=layui.$,l=function(o){};l.prototype.load=function(o){var i,n,r,l,c,m,e,t,a,f,s,u,p,d,y,h=this,g=0,v=w((o=o||{}).elem);if(v[0])return c=w(o.scrollElem||document),m="mb"in o?o.mb:50,e=!("isAuto"in o)||o.isAuto,t=o.moreText||"\u52a0\u8f7d\u66f4\u591a",a=o.end||"\u6ca1\u6709\u66f4\u591a\u4e86",f="top"===(o.direction||"bottom"),h._cleanup(v,c),s=o.scrollElem&&o.scrollElem!==document,p=w('"),v.find(".layui-flow-more")[0]||v[f?"prepend":"append"](p),d=function(o,l){var e=s?c.prop("scrollHeight"):document.documentElement.scrollHeight,t=c.scrollTop();o=w(o),p[f?"after":"before"](o),(l=0==l||null)?p.html(a):p.find("a").html(u),n=l,i=null,r&&r(),f&&(o=s?c.prop("scrollHeight"):document.documentElement.scrollHeight,1===g?c.scrollTop(o):1'),"function"==typeof o.done&&o.done(++g,d)})(),p.find("a").on("click.flow",function(){w(this);n||i||y()}),o.isLazyimg&&(r=h.lazyimg({elem:o.elem+" img",scrollElem:o.scrollElem,direction:o.direction})),e&&c.on("scroll.flow",function(){var e=w(this),t=e.scrollTop();l&&clearTimeout(l),!n&&v.width()&&(l=setTimeout(function(){var o=(s?e:w(window)).height(),l=s?e.prop("scrollHeight"):document.documentElement.scrollHeight;(f?t<=m:l-t-o<=m)&&!i&&y()},100))}),h},l.prototype.lazyimg=function(o){var l,m=this,a=0,f=w((o=o||{}).scrollElem||document),s=o.elem||"img",n="top"===(o.direction||"bottom"),u=o.scrollElem&&o.scrollElem!==document,p=function(l,o){var e,t=f.scrollTop(),o=t+o,i=u?l.offset().top-f.offset().top+t:l.offset().top;(n?i+l.height():i)>=t&&i<=o&&l.attr("lay-src")&&(e=l.attr("lay-src"),layui.img(e,function(){var o=m.lazyimg.elem.eq(a);l.attr("src",e).removeAttr("lay-src"),o[0]&&r(o),a++},function(){m.lazyimg.elem.eq(a);l.removeAttr("lay-src")}))},r=function(o,l){var e=(u?l||f:w(window)).height(),t=f.scrollTop(),i=t+e;if(m.lazyimg.elem=w(s),o)p(o,e);else for(var n=0;n"),preview:"Preview"},wordWrap:!0,lang:"text",highlighter:!1,langMarker:!1},W=layui.code?layui.code.index+1e4:0,R=function(e){return String(e).replace(/\s+$/,"").replace(/^\n|\n$/,"")};e("code",function(l,e){var o,i,t,a,n,d,c,s,r,u,y,p,E,f,h,v,m,L,_,M,C,g={config:l=x.extend(!0,{},T,l),reload:function(e){layui.code(this.updateOptions(e))},updateOptions:function(e){return delete(e=e||{}).elem,x.extend(!0,l,e)},reloadCode:function(e){layui.code(this.updateOptions(e),"reloadCode")}},w=x(l.elem);return 1',l.ln?['
            ',D.digit(t+1)+".","
            "].join(""):"",'
            ',e||" ","
            ",""].join("")})}},a=l.code,n=function(e){return"function"==typeof l.codeParse?l.codeParse(e,l):e},"reloadCode"===e?o.children(".layui-code-wrap").html(w(n(a)).html):(d=layui.code.index=++W,o.attr("lay-code-index",d),(M=A.CDDE_DATA_CLASS in o.data())&&o.attr("class",o.data(A.CDDE_DATA_CLASS)||""),M||o.data(A.CDDE_DATA_CLASS,o.attr("class")),c={copy:{className:"file-b",title:["\u590d\u5236\u4ee3\u7801"],event:function(e){var t=D.unescape(n(l.code));lay.clipboard.writeText({text:t,done:function(){N.msg("\u5df2\u590d\u5236",{icon:1})},error:function(){N.msg("\u590d\u5236\u5931\u8d25",{icon:2})}}),"function"==typeof l.onCopy&&l.onCopy(t)}}},function b(){var e=o.parent("."+A.ELEM_PREVIEW),t=e.children("."+A.ELEM_TAB),a=e.children("."+A.ELEM_ITEM+"-preview");return t.remove(),a.remove(),e[0]&&o.unwrap(),b}(),l.preview&&(M="LAY-CODE-DF-"+d,f=l.layout||["code","preview"],s="iframe"===l.preview,E=x('
            '),C=x('
            '),r=x('
            '),_=x('
            '),u=x('
            '),l.id&&E.attr("id",l.id),E.addClass(l.className),C.attr("lay-filter",M),layui.each(f,function(e,t){var a=x('
          • ');0===e&&a.addClass("layui-this"),a.html(l.text[t]),r.append(a)}),x.extend(c,{full:{className:"screen-full",title:["\u6700\u5927\u5316\u663e\u793a","\u8fd8\u539f\u663e\u793a"],event:function(e){var e=e.elem,t=e.closest("."+A.ELEM_PREVIEW),a="layui-icon-"+this.className,i="layui-icon-screen-restore",l=this.title,o=x("html,body"),n="layui-scrollbar-hide";e.hasClass(a)?(t.addClass(A.ELEM_FULL),e.removeClass(a).addClass(i),e.attr("title",l[1]),o.addClass(n)):(t.removeClass(A.ELEM_FULL),e.removeClass(i).addClass(a),e.attr("title",l[0]),o.removeClass(n))}},window:{className:"release",title:["\u5728\u65b0\u7a97\u53e3\u9884\u89c8"],event:function(e){D.openWin({content:n(l.code)})}}}),l.copy&&("array"===layui.type(l.tools)?-1===l.tools.indexOf("copy")&&l.tools.unshift("copy"):l.tools=["copy"]),u.on("click",">i",function(){var e=x(this),t=e.data("type"),e={elem:e,type:t,options:l,rawCode:l.code,finalCode:D.unescape(n(l.code))};c[t]&&"function"==typeof c[t].event&&c[t].event(e),"function"==typeof l.toolsEvent&&l.toolsEvent(e)}),l.addTools&&l.tools&&(l.tools=[].concat(l.tools,l.addTools)),layui.each(l.tools,function(e,t){var a="object"==typeof t,i=a?t:c[t]||{className:t,title:[t]},l=i.className||i.type,o=i.title||[""],a=a?i.type||l:t;a&&(c[a]||((t={})[a]=i,x.extend(c,t)),u.append(''))}),o.addClass(A.ELEM_ITEM).wrap(E),C.append(r),l.tools&&C.append(u),o.before(C),s&&_.html(''),y=function(e){var t=e.children("iframe")[0];s&&t?t.srcdoc=n(l.code):e.html(l.code),setTimeout(function(){"function"==typeof l.done&&l.done({container:e,options:l,render:function(){I.render(e.find(".layui-form")),S.render()}})},3)},"preview"===f[0]?(_.addClass(A.ELEM_SHOW),o.before(_),y(_)):o.addClass(A.ELEM_SHOW).after(_),l.previewStyle=[l.style,l.previewStyle].join(""),_.attr("style",l.previewStyle),S.on("tab("+M+")",function(e){var t=x(this),a=x(e.elem).closest("."+A.ELEM_PREVIEW).find("."+A.ELEM_ITEM),e=a.eq(e.index);a.removeClass(A.ELEM_SHOW),e.addClass(A.ELEM_SHOW),"preview"===t.attr("lay-id")&&y(e),L()})),p=x(''),o.addClass((E=["layui-code-view layui-border-box"],l.wordWrap||E.push("layui-code-nowrap"),E.join(" "))),(C=l.theme||l.skin)&&(o.removeClass("layui-code-theme-dark layui-code-theme-light"),o.addClass("layui-code-theme-"+C)),l.highlighter&&o.addClass([l.highlighter,"language-"+l.lang,"layui-code-hl"].join(" ")),f=w(l.encode?D.escape(n(a)):a),h=f.lines,o.html(p.html(f.html)),l.ln&&o.append('
            '),l.height&&p.css("max-height",l.height),l.codeStyle=[l.style,l.codeStyle].join(""),l.codeStyle&&p.attr("style",function(e,t){return(t||"")+l.codeStyle}),v=[{selector:">.layui-code-wrap>.layui-code-line{}",setValue:function(e,t){e.style["padding-left"]=t+"px"}},{selector:">.layui-code-wrap>.layui-code-line>.layui-code-line-number{}",setValue:function(e,t){e.style.width=t+"px"}},{selector:">.layui-code-ln-side{}",setValue:function(e,t){e.style.width=t+"px"}}],m=lay.style({target:o[0],id:"DF-code-"+d,text:x.map(x.map(v,function(e){return e.selector}),function(e,t){return['.layui-code-view[lay-code-index="'+d+'"]',e].join(" ")}).join("")}),L=function b(){var e,i;return l.ln&&(e=Math.floor(h.length/100),i=p.children("."+A.ELEM_LINE).last().children("."+A.ELEM_LINE_NUM).outerWidth(),o.addClass(A.ELEM_LN_MODE),e)&&A.LINE_RAW_WIDTH
          • ')).html(l.title||l.text.code),o.prepend(_)),M=x('
            '),l.copy&&!l.preview&&((C=x(['','',""].join(""))).on("click",function(){c.copy.event()}),M.append(C)),l.langMarker&&M.append(''+l.lang+""),l.about&&M.append(l.about),o.append(M),l.preview||setTimeout(function(){"function"==typeof l.done&&l.done({})},3),l.elem.length===1+d&&"function"==typeof l.allDone&&l.allDone())),g})}),layui["layui.all"]||layui.addcss("modules/code.css?v=6","skincodecss"); //# sourceMappingURL=layui.js.map diff --git a/dist/layui.js.map b/dist/layui.js.map index 0545a5fd..42a5bc7d 100644 --- a/dist/layui.js.map +++ b/dist/layui.js.map @@ -1 +1 @@ -{"version":3,"sources":["layui.js","modules/layui.all.js","modules/lay.js","modules/laytpl.js","modules/laypage.js","modules/laydate.js","modules/jquery.js","modules/layer.js","modules/util.js","modules/dropdown.js","modules/slider.js","modules/colorpicker.js","modules/element.js","modules/upload.js","modules/form.js","modules/table.js","modules/treeTable.js","modules/tree.js","modules/transfer.js","modules/carousel.js","modules/rate.js","modules/flow.js","modules/code.js"],"names":["win","jsPath","doc","document","config","modules","status","timeout","event","Layui","this","v","GLOBAL","LAYUI_GLOBAL","getPath","currentScript","src","js","scripts","last","length","i","readyState","dir","substring","lastIndexOf","error","msg","type","console","isOpera","opera","toString","builtin","lay","layer","laydate","laypage","laytpl","form","upload","dropdown","transfer","tree","table","treeTable","element","rate","colorpicker","slider","carousel","flow","util","code","jquery","all","layui.all","EV_REMOVE","prototype","cache","define","deps","factory","use","setApp","app","exports","layui","callback","apps","from","node","url","that","head","getElementsByTagName","item","jQuery","fn","on","each","index","splice","$","onScriptLoad","e","readyRegExp","navigator","platform","test","currentTarget","srcElement","removeChild","poll","onCallback","setTimeout","push","slice","apply","host","match","location","base","replace","createElement","async","charset","version","Date","getTime","appendChild","attachEvent","indexOf","addEventListener","disuse","isArray","getStyle","name","style","currentStyle","getComputedStyle","getPropertyValue","link","href","cssname","id","STAUTS_NAME","debug","rel","media","getElementById","getLinkElem","parseInt","removeAttribute","getAttribute","setAttribute","addcss","firename","modName","img","Image","complete","onload","onerror","options","key","o","clone","extend","router","hash","data","path","search","split","obj","pathname","_index","substr","settings","storage","localStorage","JSON","parse","value","remove","stringify","sessionData","sessionStorage","device","agent","userAgent","toLowerCase","getVersion","label","exp","RegExp","result","os","ie","ActiveXObject","weixin","android","ios","mobile","hint","_typeof","operand","String","Object","call","_isArray","len","callFn","sort","arr","desc","notClone","o1","o2","v1","v2","isNaN","isNum","reverse","stope","thisEvent","stopPropagation","cancelBubble","onevent","events","params","filter","eventName","filterName","_","off","debounce","func","wait","context","args","arguments","clearTimeout","throttle","cooldown","window","selector","Class","elem","querySelectorAll","Array","searchElement","fromIndex","rst","val","constructor","ai","target","digit","num","str","Math","pow","elemName","attr","hasScrollbar","body","scrollHeight","innerHeight","documentElement","clientHeight","getStyleRules","rules","sheet","styleSheet","cssRules","styleText","text","cssText","innerHTML","styleElem","find","append","position","opts","scrollArea","winArea","margin","left","top","rect1","clickType","rect","clientX","clientY","right","bottom","getBoundingClientRect","elemWidth","offsetWidth","elemHeight","offsetHeight","align","allowBottomOut","SYSTEM_RELOAD","othis","attrName","attrValue","Function","ev","errorText","join","isTopElem","topElems","matched","clipboard","writeText","legacyCopy","opacity","select","execCommand","done","err","then","passiveSupported","defineProperty","get","removeEventListener","touchEventsSupported","touchSwipe","state","onMove","onEnd","targetElem","pointerStart","x","y","pointerEnd","distanceX","distanceY","direction","timeStart","onStart","touches","passive","now","onTouchStart","preventDefault","abs","onTouchMove","onTouchEnd","__lay_touchswipe_cb_","addEvent","eventsCacheName","listener","include","_rawFn","removeEvent","newEvents","detachEvent","addStr","new_str","ii","removeStr","isObject","children","contains","child","addClass","className","removeClass","hasClass","has","css","parseValue","undefined","thisKey","thisValue","width","height","removeAttr","html","parentNode","open","close","tool","escape","inner","source","template","tagExp","__","jss","jsse","tag","start","render","DISABLED","view","elemArr","countText","plate","groups","Number","layout","count","curr","limits","limit","pages","ceil","prev","next","views","page","pager","first","halve","floor","end","max","theme","def","limitTemplet","refresh","skip","skipText","jump","isskip","childs","btn","input","nodeName","keyCode","load","even","isLayui","ready","MOD_NAME","MOD_ID","weekStart","laydate_dir","set","thisModule","inst","content","reload","THIS","LIMIT_YEAR","ELEM_STATIC","ELEM_LIST","ELEM_SELECTED","ELEM_HINT","ELEM_PREV","ELEM_NEXT","ELEM_CONFIRM","ELEM_TIME_TEXT","ELEM_TIME_BTN","ELEM_PREVIEW","ELEM_SHADE","newThat","getThis","init","dateType","formatArr","format","isLeapYear","year","range","isInitValue","min","trigger","show","showBottom","isPreview","btns","lang","calendar","mark","holidays","zIndex","change","autoConfirm","shade","cn","weeks","time","timeTips","startTime","endTime","dateTips","month","tools","confirm","clear","invalidDate","formatError","preview","en","markerOfChineseFestivals","0-1-1","0-2-14","0-3-8","0-3-12","0-4-1","0-5-1","0-5-4","0-6-1","0-9-10","0-10-1","0-12-25","isStatic","date","datetime","eventElem","fullPanel","rangeStr","rangeLinked","autoCalendarModel","startDate","endDate","auto","rangeElem","EXP_IF","EXP_SPLIT","EXP","EXP_IF_ONE","isInput","ymd","hms","day","tDate","newDate","getFullYear","getMonth","getDate","hours","minutes","seconds","thisDate","getHours","getMinutes","getSeconds","elemID","formatToDisplay","setValue","systemDate","themeStr","shortcutBtns","colorTheme","class","elemMain","elemHeader","elemCont","elemTable","divFooter","footer","divShortcut","shortcut","divHeader","headerChild","spanY","spanM","divContent","thead","theadTr","tr","insertRow","j","th","insertCell","insertBefore","ELEM_MAIN","title","shortcuts","btnSetting","dataset","timeBtn","dateTime","endState","listYM","checkDate","click","main","isPrimaryColor","thisElemDate","thisId","insertAdjacentHTML","changeEvent","renderAdditional","div","hinTimer","ms","getAsYM","Y","M","thisMaxDate","vals","arrDate","minMaxError","checkValid","getEndDate","initDate","startEnd","thisv","parseFloat","EYM","_i","_v","getDateTime","markRender","tdElem","YMD","markers","markText","keys","td","holidaysRender","insertHtml","el","idx","dayStr","ymdStr2","ymd1","ymd2","ymdStr1","cellRender","dateObj","panelMode","originElem","startOfYear","setFullYear","setHours","endOfYear","startOfMonth","setDate","endOfMonth","addDays","amount","isDisabledYearOrMonth","startDay","endDay","numOfDays","disabledCount","disabledDate","isDisabledDate","rangeType","disabledType","normalizedDate","isDisabledTime","isDisabledItem","disabledTime","compareVal","rangeFn","rangeFnParam","isDisabledDateTime","timestamp","isOut","thisDateTime","startWeek","prevMaxDate","isAlone","tds","elemYM","firstDate","getDay","index_","st","list","setBtnStatus","timeParams","stampRange","yearNum","setTimeStatus","showHour","liElem","hideCount","scroll","haveSpan","ul","haveList","isCN","startY","li","lay-ym","ol","childUL","showMinute","showSecond","isShow","ym","closeList","choose","span","scrollTop","olElem","overflowY","touchAction","tips","elemBtn","displayValueCallback","props","getOwnPropertyDescriptor","HTMLInputElement","displayValue","elemPreview","color","thisTime","param","panelIndex","isChange","YM","dateTimeTemp","active","addSubYear","isYear","isMonth","prevYear","prevMonth","nextMonth","nextYear","header","layYM","layType","tagName","toLocaleLowerCase","showEvent","eventHandler","unbind","run","closeStop","getInst","one","concat","amd","global","module","w","Error","noGlobal","deletedIds","class2type","hasOwn","hasOwnProperty","support","rtrim","rmsPrefix","rdashAlpha","fcamelCase","letter","toUpperCase","isArrayLike","isWindow","toArray","pushStack","elems","ret","merge","prevObject","map","eq","copyIsArray","copy","deep","isFunction","isPlainObject","expando","random","isReady","noop","isNumeric","realStringObj","isEmptyObject","nodeType","ownFirst","globalEval","trim","execScript","camelCase","string","makeArray","results","inArray","second","grep","invert","matches","callbackExpect","arg","guid","proxy","tmp","Symbol","iterator","Sizzle","Expr","getText","isXML","tokenize","compile","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","sortOrder","a","b","pop","push_native","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","rquickExpr","rsibling","rescape","runescape","funescape","escaped","escapedWhitespace","high","fromCharCode","unloadHandler","childNodes","els","seed","m","nid","nidselect","newSelector","newContext","ownerDocument","exec","getElementsByClassName","qsa","toSelector","testContext","qsaError","cacheLength","shift","markFunction","assert","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createPositionalPseudo","argument","matchIndexes","parent","defaultView","createComment","getById","getElementsByName","attrId","getAttributeNode","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","hasCompare","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","specified","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","what","simple","forward","ofType","xml","uniqueCache","outerCache","nodeIndex","useCache","lastChild","uniqueID","pseudo","setFilters","not","matcher","unmatched","innerText","elemLang","root","focus","activeElement","hasFocus","tabIndex","enabled","disabled","checked","selected","selectedIndex","empty","button","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","tokens","addCombinator","combinator","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","contexts","matcherIn","matcherOut","filters","parseOnly","soFar","preFilters","cached","elementMatchers","setMatchers","bySet","byElement","superMatcher","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","token","compiled","div1","defaultValue","unique","isXMLDoc","until","truncate","is","siblings","n","rneedsContext","rsingleTag","risSimple","winnow","qualifier","self","rootjQuery","rparentsprev","charAt","parseHTML","guaranteedUnique","contents","sibling","targets","closest","l","pos","prevAll","add","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","contentWindow","readyList","rnotwhite","detach","completed","Callbacks","object","flag","firing","memory","fired","locked","queue","firingIndex","fire","once","stopOnFalse","disable","lock","fireWith","Deferred","tuples","promise","always","deferred","fail","fns","newDefer","tuple","returned","progress","notify","resolve","reject","pipe","stateString","when","subordinate","progressValues","progressContexts","resolveContexts","resolveValues","remaining","updateFunc","values","notifyWith","resolveWith","readyWait","holdReady","hold","triggerHandler","doScroll","frameElement","doScrollCheck","inlineBlockNeedsLayout","container","zoom","deleteExpando","shrinkWrapBlocksVal","acceptData","noData","rbrace","rmultiDash","dataAttr","parseJSON","isEmptyDataObject","internalData","pvt","internalKey","isNode","toJSON","thisCache","internalRemoveData","cleanData","applet ","embed ","object ","hasData","removeData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","defer","shrinkWrapBlocks","pnum","rcssNum","cssExpand","isHidden","adjustCSS","prop","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","access","chainable","emptyGet","raw","bulk","rcheckableType","rtagName","rscriptType","rleadingWhitespace","nodeNames","createSafeFragment","safeFrag","createDocumentFragment","fragment","leadingWhitespace","tbody","htmlSerialize","html5Clone","cloneNode","outerHTML","appendChecked","noCloneChecked","checkClone","noCloneEvent","wrapMap","option","legend","area","col","_default","getAll","found","setGlobalEval","refElements","optgroup","tfoot","colgroup","caption","rhtml","rtbody","fixDefaultChecked","defaultChecked","buildFragment","selection","ignored","wrap","safe","nodes","htmlPrefilter","createTextNode","focusin","rformElems","rkeyEvent","rmouseEvent","rfocusMorph","rtypenamespace","returnTrue","returnFalse","safeActiveElement","types","origFn","t","handleObjIn","special","eventHandle","handlers","namespaces","origType","elemData","handle","triggered","dispatch","delegateType","bindType","handleObj","namespace","delegateCount","setup","mappedTypes","origCount","teardown","onlyHandlers","ontype","bubbleType","eventPath","Event","isTrigger","rnamespace","noBubble","parentWindow","isPropagationStopped","isDefaultPrevented","fix","handlerQueue","delegateTarget","preDispatch","isImmediatePropagationStopped","postDispatch","sel","originalEvent","fixHook","fixHooks","mouseHooks","keyHooks","metaKey","original","which","charCode","eventDoc","fromElement","pageX","scrollLeft","clientLeft","pageY","clientTop","relatedTarget","toElement","blur","beforeunload","returnValue","simulate","isSimulated","defaultPrevented","timeStamp","stopImmediatePropagation","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","_submitBubble","propertyName","_justChanged","attaches","rinlinejQuery","rnoshimcache","rxhtmlTag","rnoInnerhtml","rchecked","rscriptTypeMasked","rcleanScript","fragmentDiv","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","oldData","curData","domManip","collection","hasScripts","iNoClone","_evalUrl","keepData","dataAndEvents","deepDataAndEvents","destElements","srcElements","inPage","fixCloneNodeIssues","defaultSelected","forceAcceptData","prepend","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","insert","iframe","elemdisplay","HTML","BODY","actualDisplay","display","defaultDisplay","write","pixelPositionVal","pixelMarginRightVal","boxSizingReliableVal","reliableHiddenOffsetsVal","reliableMarginRightVal","reliableMarginLeftVal","rmargin","rnumnonpx","swap","old","computeStyleTests","divStyle","marginLeft","marginRight","getClientRects","borderCollapse","cssFloat","backgroundClip","clearCloneStyle","boxSizing","MozBoxSizing","WebkitBoxSizing","reliableHiddenOffsets","boxSizingReliable","pixelMarginRight","pixelPosition","reliableMarginRight","reliableMarginLeft","getStyles","curCSS","rposition","addGetHookIf","conditionFn","hookFn","opener","computed","maxWidth","minWidth","rs","rsLeft","runtimeStyle","pixelLeft","ralpha","ropacity","rdisplayswap","rnumsplit","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","cssPrefixes","emptyStyle","vendorPropName","capName","showHide","hidden","setPositiveNumber","subtract","augmentWidthOrHeight","extra","isBorderBox","styles","getWidthOrHeight","valueIsBorderBox","Tween","easing","cssHooks","animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","lineHeight","order","orphans","widows","cssProps","float","origName","isFinite","$1","padding","border","prefix","suffix","expand","expanded","parts","hide","toggle","propHooks","percent","eased","duration","step","fx","linear","p","swing","cos","PI","fxNow","timerId","rfxtypes","rrun","createFxNow","genFx","includeWidth","createTween","animation","Animation","tweeners","properties","stopped","prefilters","tick","currentTime","tweens","specialEasing","originalProperties","originalOptions","gotoEnd","rejectWith","timer","anim","*","tweener","oldfire","dataShow","unqueued","overflow","overflowX","prefilter","speed","opt","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","interval","setInterval","clearInterval","slow","fast","delay","getSetAttribute","hrefNormalized","checkOn","optSelected","enctype","optDisabled","radioValue","rreturn","rspaces","valHooks","optionSet","nodeHook","boolHook","ruseDefault","getSetInput","rfocusable","nType","attrHooks","propName","attrNames","propFix","getter","setAttributeNode","createAttribute","coords","contenteditable","rclickable","rclass","removeProp","tabindex","for","getClass","classes","clazz","finalValue","curValue","toggleClass","stateVal","classNames","hover","fnOver","fnOut","nonce","rquery","rvalidtokens","rhash","requireNonComma","depth","comma","parseXML","DOMParser","parseFromString","loadXML","rts","rheaders","rnoContent","rprotocol","rurl","transports","allTypes","ajaxLocation","ajaxLocParts","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","ajaxConvert","s","response","isSuccess","conv2","current","conv","converters","responseFields","dataFilter","filterHidden","lastModified","etag","isLocal","processData","contentType","accepts","json","* text","text html","text json","text xml","ajaxSetup","ajaxPrefilter","ajaxTransport","ajax","cacheURL","responseHeadersString","timeoutTimer","fireGlobals","transport","responseHeaders","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","lname","overrideMimeType","mimeType","abort","statusText","finalText","success","method","crossDomain","traditional","hasContent","ifModified","headers","beforeSend","send","nativeStatusText","responses","firstDataType","ct","finalDataType","modified","getJSON","getScript","throws","wrapAll","wrapInner","unwrap","visible","r20","rbracket","rCRLF","rsubmitterTypes","rsubmittable","encodeURIComponent","buildParams","serialize","serializeArray","xhr","createActiveXHR","documentMode","createStandardXHR","xhrId","xhrCallbacks","xhrSupported","XMLHttpRequest","cors","username","xhrFields","isAbort","onreadystatechange","responseText","script","text script","scriptCharset","oldCallbacks","rjsonp","_load","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","keepScripts","parsed","getWindow","animated","offset","setOffset","curCSSTop","curTop","curOffset","curCSSLeft","curElem","curLeft","curPosition","using","box","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","","defaultExtra","funcName","bind","delegate","undelegate","size","andSelf","layer_dir","removeFocus","beforeEnd","resize","minStackIndex","minStackArr","STATUS_NAME","alert","yes","cancel","btn2","rskin","skin","doms","closeBtn","icon","follow","fixed","setings","creat","pt","SHADE_KEY","0","1","2","3","4","5","6","slideLeft","slideRight","SHADE","MOVE","RECORD_HEIGHT_KEY","move","isOutAnim","minStack","moveType","scrollbar","vessel","conType","times","titype","ismax","maxmin","titleHTML","face","animClass","additFaceClass","btnAlign","layero","elemShade","setAnim","restore","hideOnClose","closeAll","tipsMore","moveElem","shadeo","setScrollbar","background-color","transition","innerWidth","outerWidth","titHeight","outerHeight","btnHeight","setHeight","maxHeight","offsetTop","offsetLeft","layArea","goal","tipsG","guide","autoLeft","tipLeft","where","tipTop","padding-right","_DOC","DATA_NAME","resizeElem","dict","eventMoveElem","eventResizeElem","docEvent","setRig","setBot","X","stX","stY","moveOut","resizing","moveEnd","openLayer","IE6","shadeClose","full","reselect","sthis","setTop","record","contentElem","contentRecordHeightElem","restScrollbar","removeProperty","getChildFrame","getFrameIndex","iframeAuto","heg","iframeSrc","elemMin","hasMinLeft","maxminStatus","minLeft","edgeIndex","contentRecordHeight","isfix","executor","closeAnim","WRAP","reason","domsElem","closeLast","layerIndexMax","layerIndexList","isArrayType","prompt","placeholder","formType","maxlength","tab","photos","loop","toolbar","imgIndex","pushData","alt","pid","thumb","imgprev","tabimg","imgnext","errorMsg","keyup","isNumber","getTransform","transforms","rotate","scaleX","touchEndCallback","imgElem","transform","ratio","delta","wheelDelta","detail","zoomElem","threshold","loadi","loadImage","winarea","imgarea","wh","_$","isMobile","_win","propSuffix","deliver","fixbar","elemTopBar","setTopBar","ELEM","$doc","$target","bars","default","$scroll","bar1","bar2","elemBar","lay-type","bgcolor","countdown","clock","countTime","d","h","setTime","timeAgo","onlyDate","stamp","toDateString","years","days","milliseconds","meridiem","getMilliseconds","customMeridiem","hm","yy","yyyy","MM","dd","H","HH","hh","A","mm","ss","SSS","unescape","openWin","specs","toVisibleArea","scrollElem","SCROLL_NAME","OFFSET_NAME","scrollValue","scrollOffset","thisOffset","thisElem","vertical","callbacks","attrSelector","DATANAME","dataCache","_WIN","ELEM_LI","clickOrMousedown","MOD_INDEX","customName","reloadData","STR_ELEM","STR_ITEM_UP","STR_ITEM_DOWN","STR_MENU_TITLE","STR_ITEM_GROUP","STR_ITEM_PARENT","STR_ITEM_CHECKED","STR_ITEM_CHECKED2","STR_MENU_PANEL","STR_MENU_PANEL_L","STR_ELEM_SHADE","STR_GROUP_TITLE","isAllowSpread","isSpreadItem","accordion","rerender","elemView","elemBody","getDefaultView","elemUl","eachItemView","isChild","templet","group","-","viewLi","viewText","elemPanel","TPL_MAIN","delayRemove","prevElem","isClickAllScope","clickScope","elemGroup","spread","prevTriggerElem","prevInstance","prevOnClose","prevContentElem","prevId","normalizedDelay","isMouseEnter","prevElemCallback","isAccordion","needSpread","groupSibs","ELEM_LI_PAR","dataParams","SLIDER_BAR","SLIDER_WRAP","SLIDER_WRAP_BTN","SLIDER_TIPS","SLIDER_INPUT_TXT","ELEM_HOVER","showstep","tipsAlways","precision","precisions","decimalArr","minValue","maxValue","scaleFir","scaleSec","hasRender","elemTemp","number","setSliderTipsTxt","sliderWrapBtnElem","tipsTxt","setTips","calcSliderTipsLeft","sliderWidth","sliderWrap","setSliderTipsLeft","margin-bottom","elemInput","slide","sliderAct","sliderTxt","inputValue","offsetValue","round","arrValue","firLeft","valueTo","secLeft","wrapWidth","selfValue","toFixed","oldLeft","elemMove","sliderBtnElem","up","upCall","oldleft","oldx","reaLeft","inputScale","getInputValue","realValue","ICON_PICKER_DOWN","ICON_PICKER_CLOSE","PICKER_TRIG_SPAN","PICKER_TRIG_I","PICKER_SIDE_SLIDER","PICKER_BASIS","PICKER_ALPHA_BG","PICKER_ALPHA_SLIDER","PICKER_BASIS_CUR","PICKER_INPUT","RGBToHSB","rgb","hsb","r","g","HSBToRGB","t1","t3","t2","HSBToHEX","hex","nr","RGBSTo","rgbs","re","$win","alpha","predefine","colors","elemColorBox","bgstr","background","renderPicker","elemPicker","removePicker","thisElemInd","thisColor","pickerEvents","bindElem","elemPickerInput","backgroundColor","side","basis","alphacolor","alphaslider","_h","_b","_s","_a","pre","z","createMoveElem","triggerEvent","oldtop","oldy","maxh","maxw","eventType","simulatedEvent","pointer","createEvent","initMouseEvent","screenX","screenY","dispatchEvent","sidetop","basisElem","elemColorBoxSpan","colorValue","attrEvent","SHOW","TITLE","Element","NAV_ELEM","tabAdd","layAttr","tabElem","titElem","barElem","contElem","tabChange","tabAuto","tabDelete","layid","tabClick","dom","headerElem","NAV_ITEM","NAV_BAR","NAV_TREE","NAV_CHILD","NAV_MORE","NAV_ANIM","bodyElem","elemA","isJump","unselect","hasId","MORE","BAR","CLOSE","STOPE","allowclose","isSpread","hideTabMore","tsbTitle","clickThis","NAV_ITEMED","needExpand","parentSibs","collapse","isNone","elemFilter","items","nav","timerMore","timeEnd","NAV_TITLE","bar","itemElem","thisA","breadcrumb","ATTE_SPR","separator","aNode","elemTitle","files","ELEM_FILE","ELEM_FORM","ELEM_IFRAME","ELEM_CHOOSE","UPLOADING","accept","exts","bindAction","force","field","acceptMime","drag","multiple","cross-domain","data-format-error","check-error","limit-number","limit-size","elemFile","isFile","initIE","elemForm","FileReader","chooseFiles","reader","readAsDataURL","limitSize","getFiles","ajaxSend","successful","failed","allDone","fileLength","total","request","sets","formData","FormData","resetFileState","unified","res","lengthComputable","loaded","iframeSend","iframeBody","thisFile","pushFile","resetFile","filename","newFile","File","getChooseFiles","typeName","images","video","audio","promiseLikeResolve","setChooseFile","setChooseText","checkFile","extendInfo","extInfo","ext","sizes","parseSize","FileList","dataTransfer","formatSize","log","HIDE","Form","verify","required","phone","email","identity","autocomplete","getFormElem","itemForm","getValue","nameIndex","fieldElem","init_name","inputs","handleInputNumber","rawValue","noAction","isInit","decimals","controlBtn","increment","decrement","affix","CLASS_WRAP","CLASS_SUFFIX","CLASS_AFFIX","showAffix","renderAffix","affixOptions","elemAffix","elemIcon","hasElemAffix","hasElemSuffix","inputFilter","eye","SHOW_NAME","thatInput","TIPS","NONE","CREATE_OPTION","initValue","selects","reElem","isSearch","isCreatable","laySearch","needPlaceholderPatch","showDown","hideDown","followScroll","notOption","dl","dts","dlHeight","dds","__ieph","none","posTop","thisDd","ddHeight","setThisDd","prevNext","lastIndex","allDisplayedElem","nextIndex","origin","hasEquals","isCreateOption","thisDds","firstOptionELem","hasTips","createOptionElem","ddElem","optionElem","optionsFirst","switch","SUBTRA","checks","RE_CLASS","titleTplAttrs","titleTplElem","indeterminate","ICON","radios","ANIM","forms","sameRadio","renderItem","itemType","validate","intercept","DANGER","vers","verType","thisVer","rule","verst","isForm2Elem","layFilter","verifyElem","$dom","checkName","indexName","numbersName","disabledName","thisTable","setColsWidth","getThisTable","getThisTableConfig","parseTempData","item3","tplData","exportTemplet","LAY_COL","HIDE_V","ELEM_VIEW","ELEM_HEADER","ELEM_BODY","ELEM_FIXR","ELEM_PAGE_VIEW","ELEM_SORT","ELEM_CHECKED","ELEM_EDIT","ELEM_GROUP","ELEM_COL_SPECIAL","ELEM_TOOL_PANEL","ELEM_EXPAND","DATA_MOVE_NAME","TPL_HEADER","TPL_BODY","eachChildCols","loading","cellMinWidth","cellMaxWidth","MAX_VALUE","editTrigger","defaultToolbar","defaultContextmenu","autoSort","cols","pageName","limitName","statusName","msgName","dataName","totalRowName","countName","pullData","setInit","fullHeightGap","parentDiv","parentHeightGap","customHeightFunc","lay-filter","renderStyle","resizeObserver","unobserve","layTool","layBox","layHeader","layMain","layBody","layFixed","layFixLeft","layFixRight","layTotal","layPage","renderToolbar","renderPagebar","fullSize","initOpts","space","unresize","numbers","getWidth","clientWidth","initChildCols","i1","item1","i2","item2","indexChild","childIndex","colspan","rowspan","colGroup","i22","item22","HAS_PARENT","parentKey","lineStyle","trClassName","cellMaxHeight","leftDefaultTemp","elemToolTemp","toolbarHtml","layEvent","print","iconElem","thisItem","pagebarHtml","layPagebar","pagebar","setParentCol","parentTh","parentColspan","arrParentKey","getThisCol","colspan2","nextParentKey","setColsPatch","setGroupWidth","getEndTh","colNums","autoColNums","autoWidth","countWidth","cntrWidth","getAutoWidth","eachCols","getScrollWidth","back","patchNums","i3","headerWidth","scrollPatch","haveInit","HAS_SET_COLS_PATCH","errorView","elemNone","layNone","syncCheckAll","renderForm","startLimit","initSort","reloadType","renderData","totalRow","parseData","newData","getTrHtml","trsObj","trs","trs_fixed","trs_fixed_r","tds_fixed","tds_fixed_r","LAY_KEY","edit","trAttr","totalRowData","sortKey","pull","scrollPos","tipsIndex","renderTotal","totalNums","dataTotal","TOTAL_NUMS","totalRowDecimals","thisTotalNum","totalRowText","getContent","TOTAL_ROW","patchElem","getColElem","renderFormByElem","checkAllElem","checkStatus","isAll","setRowActive","setRowChecked","isCheckAll","isCheckMult","dataIndex","thisData","existChecked","getChecked","checkedElem","currTr","checkedSameElem","fixRElem","_field","elemSort","fromEvent","selectorText","headerMain","thIndex","thElem","bodyHeight","layMainTable","scrollWidth","outWidth","addPatch","fixHeight","updateRow","ELEM_CELL","row","cell","_BODY","commonMember","lis","openPanel","panel","fieldTitle","exportFile","printWin","edg","onafterprint","oLeft","pLeft","allowResize","ruleWidth","thatTable","setWidth","nowType","clearCacheKey","del","update","fields","setRowEvent","getCol","UNROW","renderGridEdit","editType","ELEM_GRID_DOWN","oldValue","reedit","showGridExpandIcon","elemCell","gridExpand","expandedMode","ELEM_CELL_C","elemCellClose","cellExpandedMode","expandedWidth","cellExpandedWidth","$this","toolFn","ResizeObserver","observe","errorTips","tdIndex","attrData","tableData","trElem","itemData","tableIns","CHILD_COLS","PARENT_COL_INDEX","arrs","eachArrs","nums","invalidNum","getData","dataTitle","dataMain","fieldsIsHide","textType","csv","xls","alink","reduce","acc","ignoreExport","download","getOptions","hideCol","thisTreeTable","ELEM_FIXL","TABLE_TREE","LAY_DATA_INDEX","LAY_DATA_INDEX_HISTORY","LAY_PARENT_INDEX","LAY_CHECKBOX_HALF","LAY_EXPAND","LAY_HAS_EXPANDED","LAY_ASYNC_STATUS","LAY_CASCADE","HTML_TAG_RE","ICON_PROPS","updateCache","childrenKey","tableCache","itemDataIndex","updateOptions","thatOptionsTemp","treeOptions","idKey","hasNumberCol","hasChecboxCol","hasRadioCol","scrollTopCache","mod","parseDataThat","retData","isSimpleData","enable","flatToTree","updateStatus","initData","renderType","isRenderData","tableView","isExpandAll","layTableAllChooseElem","renderTreeTable","iconProp","normalizedIcon","cascade","isParent","indent","flexIconClose","flexIconOpen","showIcon","iconClose","iconOpen","iconLeaf","showFlexIconIfNotParent","dblClickExpand","expandAllDefault","rootPid","autoParam","beforeExpand","onExpand","iconStr","pIdKey","idTemp","pidTemp","rootNodes","tableId","flatArr","tempObj","treeToFlat","parentId","parentIndex","flat","dataNew","getTreeNode","getParentNode","getNodeByIndex","treeNode","treeNodeData","getNodeDataByIndex","updateNode","removeNode","expandNode","setChecked","getNodeById","tableDataFlat","newValue","dataRet","indexArr","getTableData","isParentKey","debounceFn","expandFlag","sonSign","callbackFlag","tableViewElem","treeTableThat","trData","isToggle","trExpand","retValue","trExpanded","trsElem","flexIconElem","trDataId","updateNodeIcon","scopeEl","isExpand","array","asyncSuccessFn","asyncContentType","asyncDataType","asyncJsonpCallback","asyncHeaders","asyncParseData","asyncResponse","str2","str2Obj","dataLevelNew","asyncSetting","asyncUrl","asyncAutoParam","itemArr","asyncType","childItem","data-index","lay-data-index","data-level","childNodesFlat","formatNumber","inherit","expandAll","isAllAsyncDone","isAllExpanded","trAll","trAllObj","dataItem","dataLevel","nodeIconElem","nodeIcon","level","treeOptionsView","dataExpand","nameKey","htmlTemp","itemCell","trIndex","trDefaultExpand","trMain","trFixedL","trFixedR","statusObj","notCascade","dataUpdated","updateObjParams","rowIndex","tableThat","updateFn","checkNode","newNode","trLevel","newNodeTemp","trNew","delNode","nodeP","delNodesFlat","updateCheckStatus","delNodeDataIndex","i4","item4","trEl","addNodes","newNodes","childKey","childrenNodes","dataAfter","childrenNodesFlat","pageOptions","newNodesHtml","newNodesHtmlObj","trIndexPrev","newNodeIndex","newNodeItem","tableViewElemMAIN","tableViewElemFIXL","tableViewElemFIXR","trIndexNext","scrollIntoViewIfNeeded","includeHalfCheck","checkedData","updateData","setRowCheckedClass","dataP","trsP","isIndeterminate","updateParentCheckStatus","indexP","itemP","checkboxElem","checkedNum","inputElem","isRadio","trDataP","radioElem","collectNeedExpandNodeIndex","needExpandIndex","nodeData","checkAllNodes","reloadAsyncNode","dataId","getNodesByFilter","isSingle","nodesResult","ELEM_SET","ICON_CLICK","ICON_ADD","ICON_SUB","ELEM_ENTRY","ELEM_TEXT","ELEM_PACK","ELEM_SPREAD","ELEM_LINE_SHORT","ELEM_SHOW","ELEM_EXTEND","showCheckbox","showLine","onlyIconControl","defaultNodeName","checkids","editIcon","hasChild","packDiv","entryDiv","checkClick","operate","entry","elemCheckbox","elemText","touchOpen","packCont","iconClick","updateFieldValue","sibls","setCheckbox","setParentsChecked","thisNodeElem","parentNodeElem","parentCheckbox","parentPack","oncheck","getVal","returnObj","textNew","elemDel","pare","siblingTree","checkState","parentTree","prevDiv","pack","onsearch","checkId","checkData","eachNodes","index2","cloneItem","checkedId","reInput","ELEM_BOX","ELEM_SEARCH","ELEM_DATA","TPL_BOX","checkAllName","showSearch","searchNone","layData","layBtn","listElem","renderCheckBtn","thisDataElem","allElemCheckbox","listElemCheckbox","haveChecked","isHide","stopNone","noneView","createNoneElem","selectedData","thisElemCheckbox","thisBoxElem","siblingInput","thisList","onchange","elemThis","dblclick","thisListElem","isMatch","ELEM_LEFT","ELEM_RIGHT","ELEM_ARROW","ELEM_IND","arrow","indicator","autoplay","elemItem","prevIndex","addIndex","subIndex","tplArrow","goto","tplInd","elemInd","thisIndex","haveSlide","touchEl","isVertical","distance","ICON_RATE","ICON_RATE_SOLID","ICON_RATE_HALF","ICON_SOLID_HALF","ICON_HALF_RATE","readonly","half","setText","action","setvalue","_ul","wide","liElems","ind","score","itemElemWidth","remainder","isActiveIcon","needSelect","shouldHalfIcon","Flow","isOver","lazyimg","isAuto","moreText","isTop","notDocument","more","mb","_cleanup","over","scrollHeightStart","scrollTopStart","scrollHeightEnd","isLazyimg","elemTop","CONST","ELEM_TAB","ELEM_FULL","ELEM_ITEM","ELEM_LINE","ELEM_LINE_NUM","ELEM_LN_MODE","CDDE_DATA_CLASS","LINE_RAW_WIDTH","about","ln","encode","wordWrap","highlighter","langMarker","codeIndex","mode","rawCode","finalCode","isIframePreview","elemHeaderView","elemToolbar","runPreview","codeElem","createCodeRst","lines","setCodeLayout","elemFixbar","copyElem","reloadCode","obverse","codeRender","createCode","line","codeParse","hasDataClass","onCopy","elemViewHas","elemTabHas","elemPreviewViewHas","FILTER_VALUE","elemTabView","elemPreviewView","classNameFull","classNameRestore","htmlElem","ELEM_SCROLLBAR_HIDE","oi","parameters","toolsEvent","addTools","viso","thisItemBody","srcdoc","previewStyle","elemItemBody","codeStyle","multiLine"],"mappings":"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","file":"layui.js","sourcesContent":["/**\n * Layui\n * Classic modular front-end UI library\n * MIT Licensed\n */\n\n;!function(win){\n \"use strict\";\n\n var doc = win.document;\n var config = {\n modules: {}, // 模块物理路径\n status: {}, // 模块加载状态\n timeout: 10, // 符合规范的模块请求最长等待秒数\n event: {} // 模块自定义事件\n };\n\n var Layui = function(){\n this.v = '2.9.11'; // Layui 版本号\n };\n\n // 识别预先可能定义的指定全局对象\n var GLOBAL = win.LAYUI_GLOBAL || {};\n\n // 获取 layui 所在目录\n var getPath = function(){\n var jsPath = doc.currentScript ? doc.currentScript.src : function(){\n var js = doc.scripts;\n var last = js.length - 1;\n var src;\n for(var i = last; i > 0; i--){\n if(js[i].readyState === 'interactive'){\n src = js[i].src;\n break;\n }\n }\n return src || js[last].src;\n }();\n\n return config.dir = GLOBAL.dir || jsPath.substring(0, jsPath.lastIndexOf('/') + 1);\n }();\n\n // 异常提示\n var error = function(msg, type){\n type = type || 'log';\n win.console && console[type] && console[type]('layui error hint: ' + msg);\n };\n\n var isOpera = typeof opera !== 'undefined' && opera.toString() === '[object Opera]';\n\n // 内置模块\n var modules = config.builtin = {\n lay: 'lay', // 基础 DOM 操作\n layer: 'layer', // 弹层\n laydate: 'laydate', // 日期\n laypage: 'laypage', // 分页\n laytpl: 'laytpl', // 模板引擎\n form: 'form', // 表单集\n upload: 'upload', // 上传\n dropdown: 'dropdown', // 下拉菜单\n transfer: 'transfer', // 穿梭框\n tree: 'tree', // 树结构\n table: 'table', // 表格\n treeTable: 'treeTable', // 树表\n element: 'element', // 常用元素操作\n rate: 'rate', // 评分组件\n colorpicker: 'colorpicker', // 颜色选择器\n slider: 'slider', // 滑块\n carousel: 'carousel', // 轮播\n flow: 'flow', // 流加载\n util: 'util', // 工具块\n code: 'code', // 代码修饰器\n jquery: 'jquery', // DOM 库(第三方)\n\n all: 'all',\n 'layui.all': 'layui.all' // 聚合标识(功能性的,非真实模块)\n };\n\n // 记录基础数据\n Layui.prototype.cache = config;\n\n // 定义模块\n Layui.prototype.define = function(deps, factory){\n var that = this;\n var type = typeof deps === 'function';\n var callback = function(){\n var setApp = function(app, exports){\n layui[app] = exports;\n config.status[app] = true;\n };\n typeof factory === 'function' && factory(function(app, exports){\n setApp(app, exports);\n config.callback[app] = function(){\n factory(setApp);\n }\n });\n return this;\n };\n\n type && (\n factory = deps,\n deps = []\n );\n\n that.use(deps, callback, null, 'define');\n return that;\n };\n\n // 使用特定模块\n Layui.prototype.use = function(apps, callback, exports, from){\n var that = this;\n var dir = config.dir = config.dir ? config.dir : getPath;\n var head = doc.getElementsByTagName('head')[0];\n\n apps = function(){\n if(typeof apps === 'string'){\n return [apps];\n }\n // 当第一个参数为 function 时,则自动加载所有内置模块,且执行的回调即为该 function 参数;\n else if(typeof apps === 'function'){\n callback = apps;\n return ['all'];\n }\n return apps;\n }();\n\n // 如果页面已经存在 jQuery 1.7+ 库且所定义的模块依赖 jQuery,则不加载内部 jquery 模块\n if(win.jQuery && jQuery.fn.on){\n that.each(apps, function(index, item){\n if(item === 'jquery'){\n apps.splice(index, 1);\n }\n });\n layui.jquery = layui.$ = jQuery;\n }\n\n var item = apps[0];\n var timeout = 0;\n\n exports = exports || [];\n\n // 静态资源host\n config.host = config.host || (dir.match(/\\/\\/([\\s\\S]+?)\\//)||['//'+ location.host +'/'])[0];\n\n // 加载完毕\n function onScriptLoad(e, url){\n var readyRegExp = navigator.platform === 'PLaySTATION 3' ? /^complete$/ : /^(complete|loaded)$/\n if (e.type === 'load' || (readyRegExp.test((e.currentTarget || e.srcElement).readyState))) {\n config.modules[item] = url;\n head.removeChild(node);\n (function poll() {\n if(++timeout > config.timeout * 1000 / 4){\n return error(item + ' is not a valid module', 'error');\n }\n config.status[item] ? onCallback() : setTimeout(poll, 4);\n }());\n }\n }\n\n // 回调\n function onCallback(){\n exports.push(layui[item]);\n apps.length > 1 ?\n that.use(apps.slice(1), callback, exports, from)\n : ( typeof callback === 'function' && function(){\n // 保证文档加载完毕再执行回调\n if(layui.jquery && typeof layui.jquery === 'function' && from !== 'define'){\n return layui.jquery(function(){\n callback.apply(layui, exports);\n });\n }\n callback.apply(layui, exports);\n }() );\n }\n\n // 如果引入了聚合板,内置的模块则不必重复加载\n if( apps.length === 0 || (layui['layui.all'] && modules[item]) ){\n return onCallback(), that;\n }\n\n /*\n * 获取加载的模块 URL\n * 如果是内置模块,则按照 dir 参数拼接模块路径\n * 如果是扩展模块,则判断模块路径值是否为 {/} 开头,\n * 如果路径值是 {/} 开头,则模块路径即为后面紧跟的字符。\n * 否则,则按照 base 参数拼接模块路径\n */\n\n var url = ( modules[item] ? (dir + 'modules/')\n : (/^\\{\\/\\}/.test(that.modules[item]) ? '' : (config.base || ''))\n ) + (that.modules[item] || item) + '.js';\n url = url.replace(/^\\{\\/\\}/, '');\n\n // 如果扩展模块(即:非内置模块)对象已经存在,则不必再加载\n if(!config.modules[item] && layui[item]){\n config.modules[item] = url; // 并记录起该扩展模块的 url\n }\n\n // 首次加载模块\n if(!config.modules[item]){\n var node = doc.createElement('script');\n\n node.async = true;\n node.charset = 'utf-8';\n node.src = url + function(){\n var version = config.version === true\n ? (config.v || (new Date()).getTime())\n : (config.version||'');\n return version ? ('?v=' + version) : '';\n }();\n\n head.appendChild(node);\n\n if(node.attachEvent && !(node.attachEvent.toString && node.attachEvent.toString().indexOf('[native code') < 0) && !isOpera){\n node.attachEvent('onreadystatechange', function(e){\n onScriptLoad(e, url);\n });\n } else {\n node.addEventListener('load', function(e){\n onScriptLoad(e, url);\n }, false);\n }\n\n config.modules[item] = url;\n } else { // 缓存\n (function poll() {\n if(++timeout > config.timeout * 1000 / 4){\n return error(item + ' is not a valid module', 'error');\n }\n (typeof config.modules[item] === 'string' && config.status[item])\n ? onCallback()\n : setTimeout(poll, 4);\n }());\n }\n\n return that;\n };\n\n // 弃用原有的指定模块,以便重新扩展新的同名模块\n Layui.prototype.disuse = function(apps){\n var that = this;\n apps = that.isArray(apps) ? apps : [apps];\n that.each(apps, function (index, item) {\n if (!config.status[item]) {\n // return error('module ' + item + ' is not exist');\n }\n delete that[item];\n delete modules[item];\n delete that.modules[item];\n delete config.status[item];\n delete config.modules[item];\n });\n return that;\n };\n\n // 获取节点的 style 属性值\n Layui.prototype.getStyle = function(node, name){\n var style = node.currentStyle ? node.currentStyle : win.getComputedStyle(node, null);\n return style[style.getPropertyValue ? 'getPropertyValue' : 'getAttribute'](name);\n };\n\n // css 外部加载器\n Layui.prototype.link = function(href, fn, cssname){\n var that = this;\n var head = doc.getElementsByTagName('head')[0];\n var link = doc.createElement('link');\n\n if(typeof fn === 'string') cssname = fn;\n\n var app = (cssname || href).replace(/\\.|\\//g, '');\n var id = 'layuicss-'+ app;\n var STAUTS_NAME = 'creating';\n var timeout = 0;\n\n link.href = href + (config.debug ? '?v='+new Date().getTime() : '');\n link.rel = 'stylesheet';\n link.id = id;\n link.media = 'all';\n\n if(!doc.getElementById(id)){\n head.appendChild(link);\n }\n\n if(typeof fn !== 'function') return that;\n\n // 轮询 css 是否加载完毕\n (function poll(status) {\n var delay = 100;\n var getLinkElem = doc.getElementById(id); // 获取动态插入的 link 元素\n\n // 如果轮询超过指定秒数,则视为请求文件失败或 css 文件不符合规范\n if(++timeout > config.timeout * 1000 / delay){\n return error(href + ' timeout');\n }\n\n // css 加载就绪\n if(parseInt(that.getStyle(getLinkElem, 'width')) === 1989){\n // 如果参数来自于初始轮询(即未加载就绪时的),则移除 link 标签状态\n if(status === STAUTS_NAME) getLinkElem.removeAttribute('lay-status');\n // 如果 link 标签的状态仍为「创建中」,则继续进入轮询,直到状态改变,则执行回调\n getLinkElem.getAttribute('lay-status') === STAUTS_NAME ? setTimeout(poll, delay) : fn();\n } else {\n getLinkElem.setAttribute('lay-status', STAUTS_NAME);\n setTimeout(function(){\n poll(STAUTS_NAME);\n }, delay);\n }\n }());\n\n // 轮询css是否加载完毕\n /*\n (function poll() {\n if(++timeout > config.timeout * 1000 / 100){\n return error(href + ' timeout');\n };\n parseInt(that.getStyle(doc.getElementById(id), 'width')) === 1989 ? function(){\n fn();\n }() : setTimeout(poll, 100);\n }());\n */\n\n return that;\n };\n\n // css 内部加载器\n Layui.prototype.addcss = function(firename, fn, cssname){\n return layui.link(config.dir + 'css/' + firename, fn, cssname);\n };\n\n // 存储模块的回调\n config.callback = {};\n\n // 重新执行模块的工厂函数\n Layui.prototype.factory = function(modName){\n if(layui[modName]){\n return typeof config.callback[modName] === 'function'\n ? config.callback[modName]\n : null;\n }\n };\n\n // 图片预加载\n Layui.prototype.img = function(url, callback, error) {\n var img = new Image();\n img.src = url;\n if(img.complete){\n return callback(img);\n }\n img.onload = function(){\n img.onload = null;\n typeof callback === 'function' && callback(img);\n };\n img.onerror = function(e){\n img.onerror = null;\n typeof error === 'function' && error(e);\n };\n };\n\n // 全局配置\n Layui.prototype.config = function(options){\n options = options || {};\n for(var key in options){\n config[key] = options[key];\n }\n return this;\n };\n\n // 记录全部模块\n Layui.prototype.modules = function(){\n var clone = {};\n for(var o in modules){\n clone[o] = modules[o];\n }\n return clone;\n }();\n\n // 拓展模块\n Layui.prototype.extend = function(options){\n var that = this;\n\n // 验证模块是否被占用\n options = options || {};\n for(var o in options){\n if(that[o] || that.modules[o]){\n error(o+ ' Module already exists', 'error');\n } else {\n that.modules[o] = options[o];\n }\n }\n\n return that;\n };\n\n // location.hash 路由解析\n Layui.prototype.router = Layui.prototype.hash = function(hash){\n var that = this;\n var hash = hash || location.hash;\n var data = {\n path: [],\n search: {},\n hash: (hash.match(/[^#](#.*$)/) || [])[1] || ''\n };\n\n if(!/^#\\//.test(hash)) return data; // 禁止非路由规范\n\n hash = hash.replace(/^#\\//, '');\n data.href = '/' + hash;\n hash = hash.replace(/([^#])(#.*$)/, '$1').split('/') || [];\n\n // 提取 Hash 结构\n that.each(hash, function(index, item){\n /^\\w+=/.test(item) ? function(){\n item = item.split('=');\n data.search[item[0]] = item[1];\n }() : data.path.push(item);\n });\n\n return data;\n };\n\n // URL 解析\n Layui.prototype.url = function(href){\n var that = this;\n var data = {\n // 提取 url 路径\n pathname: function(){\n var pathname = href\n ? function(){\n var str = (href.match(/\\.[^.]+?\\/.+/) || [])[0] || '';\n return str.replace(/^[^\\/]+/, '').replace(/\\?.+/, '');\n }()\n : location.pathname;\n return pathname.replace(/^\\//, '').split('/');\n }(),\n\n // 提取 url 参数\n search: function(){\n var obj = {};\n var search = (href\n ? function(){\n var str = (href.match(/\\?.+/) || [])[0] || '';\n return str.replace(/\\#.+/, '');\n }()\n : location.search\n ).replace(/^\\?+/, '').split('&'); // 去除 ?,按 & 分割参数\n\n // 遍历分割后的参数\n that.each(search, function(index, item){\n var _index = item.indexOf('=')\n ,key = function(){ // 提取 key\n if(_index < 0){\n return item.substr(0, item.length);\n } else if(_index === 0){\n return false;\n } else {\n return item.substr(0, _index);\n }\n }();\n // 提取 value\n if(key){\n obj[key] = _index > 0 ? item.substr(_index + 1) : null;\n }\n });\n\n return obj;\n }(),\n\n // 提取 Hash\n hash: that.router(function(){\n return href\n ? ((href.match(/#.+/) || [])[0] || '/')\n : location.hash;\n }())\n };\n\n return data;\n };\n\n // 本地持久存储\n Layui.prototype.data = function(table, settings, storage){\n table = table || 'layui';\n storage = storage || localStorage;\n\n if(!win.JSON || !win.JSON.parse) return;\n\n // 如果 settings 为 null,则删除表\n if(settings === null){\n return delete storage[table];\n }\n\n settings = typeof settings === 'object'\n ? settings\n : {key: settings};\n\n try {\n var data = JSON.parse(storage[table]);\n } catch(e) {\n var data = {};\n }\n\n if('value' in settings) data[settings.key] = settings.value;\n if(settings.remove) delete data[settings.key];\n storage[table] = JSON.stringify(data);\n\n return settings.key ? data[settings.key] : data;\n };\n\n // 本地临时存储\n Layui.prototype.sessionData = function(table, settings){\n return this.data(table, settings, sessionStorage);\n }\n\n // 设备信息\n Layui.prototype.device = function(key){\n var agent = navigator.userAgent.toLowerCase();\n\n // 获取版本号\n var getVersion = function(label){\n var exp = new RegExp(label + '/([^\\\\s\\\\_\\\\-]+)');\n label = (agent.match(exp)||[])[1];\n return label || false;\n };\n\n // 返回结果集\n var result = {\n os: function(){ // 底层操作系统\n if(/windows/.test(agent)){\n return 'windows';\n } else if(/linux/.test(agent)){\n return 'linux';\n } else if(/iphone|ipod|ipad|ios/.test(agent)){\n return 'ios';\n } else if(/mac/.test(agent)){\n return 'mac';\n }\n }(),\n ie: function(){ // ie 版本\n return (!!win.ActiveXObject || \"ActiveXObject\" in win) ? (\n (agent.match(/msie\\s(\\d+)/) || [])[1] || '11' // 由于 ie11 并没有 msie 的标识\n ) : false;\n }(),\n weixin: getVersion('micromessenger') // 是否微信\n };\n\n // 任意的 key\n if(key && !result[key]){\n result[key] = getVersion(key);\n }\n\n // 移动设备\n result.android = /android/.test(agent);\n result.ios = result.os === 'ios';\n result.mobile = (result.android || result.ios);\n\n return result;\n };\n\n // 提示\n Layui.prototype.hint = function(){\n return {\n error: error\n };\n };\n\n // typeof 类型细分 -> string/number/boolean/undefined/null、object/array/function/…\n Layui.prototype._typeof = Layui.prototype.type = function(operand){\n if(operand === null) return String(operand);\n\n // 细分引用类型\n return (typeof operand === 'object' || typeof operand === 'function') ? function(){\n var type = Object.prototype.toString.call(operand).match(/\\s(.+)\\]$/) || []; // 匹配类型字符\n var classType = 'Function|Array|Date|RegExp|Object|Error|Symbol'; // 常见类型字符\n\n type = type[1] || 'Object';\n\n // 除匹配到的类型外,其他对象均返回 object\n return new RegExp('\\\\b('+ classType + ')\\\\b').test(type)\n ? type.toLowerCase()\n : 'object';\n }() : typeof operand;\n };\n\n // 对象是否具备数组结构(此处为兼容 jQuery 对象)\n Layui.prototype._isArray = Layui.prototype.isArray = function(obj){\n var that = this;\n var len;\n var type = that.type(obj);\n\n if(!obj || (typeof obj !== 'object') || obj === win) return false;\n\n len = 'length' in obj && obj.length; // 兼容 ie\n return type === 'array' || len === 0 || (\n typeof len === 'number' && len > 0 && (len - 1) in obj // 兼容 jQuery 对象\n );\n };\n\n // 遍历\n Layui.prototype.each = function(obj, fn){\n var key;\n var that = this;\n var callFn = function(key, obj){ // 回调\n return fn.call(obj[key], key, obj[key])\n };\n\n if(typeof fn !== 'function') return that;\n obj = obj || [];\n\n // 优先处理数组结构\n if(that.isArray(obj)){\n for(key = 0; key < obj.length; key++){\n if(callFn(key, obj)) break;\n }\n } else {\n for(key in obj){\n if(callFn(key, obj)) break;\n }\n }\n\n return that;\n };\n\n // 将数组中的成员对象按照某个 key 的 value 值进行排序\n Layui.prototype.sort = function(arr, key, desc, notClone){\n var that = this;\n var clone = notClone ? (arr || []) : JSON.parse(\n JSON.stringify(arr || [])\n );\n\n // 若未传入 key,则直接返回原对象\n if(that.type(arr) === 'object' && !key){\n return clone;\n } else if(typeof arr !== 'object'){ // 若 arr 非对象\n return [clone];\n }\n\n // 开始排序\n clone.sort(function(o1, o2){\n var v1 = o1[key];\n var v2 = o2[key];\n\n /*\n * 特殊数据\n * 若比较的成员均非对象\n */\n\n // 若比较的成员均为数字\n if(!isNaN(o1) && !isNaN(o2)) return o1 - o2;\n // 若比较的成员只存在某一个非对象\n if(!isNaN(o1) && isNaN(o2)){\n if(key && typeof o2 === 'object'){\n v1 = o1;\n } else {\n return -1;\n }\n } else if (isNaN(o1) && !isNaN(o2)){\n if(key && typeof o1 === 'object'){\n v2 = o2;\n } else {\n return 1;\n }\n }\n\n /*\n * 正常数据\n * 即成员均为对象,也传入了对比依据: key\n * 若 value 为数字,按「大小」排序;若 value 非数字,则按「字典序」排序\n */\n\n // value 是否为数字\n var isNum = [!isNaN(v1), !isNaN(v2)];\n\n // 若为数字比较\n if(isNum[0] && isNum[1]){\n if(v1 && (!v2 && v2 !== 0)){ // 数字 vs 空\n return 1;\n } else if((!v1 && v1 !== 0) && v2){ // 空 vs 数字\n return -1;\n } else { // 数字 vs 数字\n return v1 - v2;\n }\n }\n\n /**\n * 字典序排序\n */\n\n // 若为非数字比较\n if(!isNum[0] && !isNum[1]){\n // 字典序比较\n if(v1 > v2){\n return 1;\n } else if (v1 < v2) {\n return -1;\n } else {\n return 0;\n }\n }\n\n // 若为混合比较\n if(isNum[0] || !isNum[1]){ // 数字 vs 非数字\n return -1;\n } else if(!isNum[0] || isNum[1]) { // 非数字 vs 数字\n return 1;\n }\n\n });\n\n desc && clone.reverse(); // 倒序\n return clone;\n };\n\n // 阻止事件冒泡\n Layui.prototype.stope = function(thisEvent){\n thisEvent = thisEvent || win.event;\n try { thisEvent.stopPropagation() } catch(e){\n thisEvent.cancelBubble = true;\n }\n };\n\n // 字符常理\n var EV_REMOVE = 'LAYUI-EVENT-REMOVE';\n\n // 自定义模块事件\n Layui.prototype.onevent = function(modName, events, callback){\n if(typeof modName !== 'string'\n || typeof callback !== 'function') return this;\n\n return Layui.event(modName, events, null, callback);\n };\n\n // 执行自定义模块事件\n Layui.prototype.event = Layui.event = function(modName, events, params, fn){\n var that = this;\n var result = null;\n var filter = (events || '').match(/\\((.*)\\)$/)||[]; // 提取事件过滤器字符结构,如:select(xxx)\n var eventName = (modName + '.'+ events).replace(filter[0], ''); // 获取事件名称,如:form.select\n var filterName = filter[1] || ''; // 获取过滤器名称,,如:xxx\n var callback = function(_, item){\n var res = item && item.call(that, params);\n res === false && result === null && (result = false);\n };\n\n // 如果参数传入特定字符,则执行移除事件\n if(params === EV_REMOVE){\n delete (that.cache.event[eventName] || {})[filterName];\n return that;\n }\n\n // 添加事件\n if(fn){\n config.event[eventName] = config.event[eventName] || {};\n\n if (filterName) {\n // 带filter不支持重复事件\n config.event[eventName][filterName] = [fn];\n } else {\n // 不带filter处理的是所有的同类事件,应该支持重复事件\n config.event[eventName][filterName] = config.event[eventName][filterName] || [];\n config.event[eventName][filterName].push(fn);\n }\n return this;\n }\n\n // 执行事件回调\n layui.each(config.event[eventName], function(key, item){\n // 执行当前模块的全部事件\n if(filterName === '{*}'){\n layui.each(item, callback);\n return;\n }\n\n // 执行指定事件\n key === '' && layui.each(item, callback);\n (filterName && key === filterName) && layui.each(item, callback);\n });\n\n return result;\n };\n\n // 新增模块事件\n Layui.prototype.on = function(events, modName, callback){\n var that = this;\n return that.onevent.call(that, modName, events, callback);\n }\n\n // 移除模块事件\n Layui.prototype.off = function(events, modName){\n var that = this;\n return that.event.call(that, modName, events, EV_REMOVE);\n };\n\n // 防抖\n Layui.prototype.debounce = function (func, wait) {\n var timeout;\n return function () {\n var context = this;\n var args = arguments;\n clearTimeout(timeout);\n timeout = setTimeout(function () {\n func.apply(context, args);\n }, wait);\n }\n };\n\n // 节流\n Layui.prototype.throttle = function (func, wait) {\n var cooldown = false;\n return function () {\n var context = this;\n var args = arguments;\n if (!cooldown) {\n func.apply(context, args);\n cooldown = true;\n setTimeout(function () {\n cooldown = false;\n }, wait);\n }\n }\n };\n\n // exports layui\n win.layui = new Layui();\n\n}(window); // gulp build: layui-footer\n\n","/**\r\n * 用于打包聚合版,该文件不会存在于构建后的目录 \r\n */\r\n \r\nlayui.define(function(exports){\r\n var cache = layui.cache;\r\n layui.config({\r\n dir: cache.dir.replace(/lay\\/dest\\/$/, '')\r\n });\r\n exports('layui.all', layui.v);\r\n});","\r\n/** lay 基础模块 | MIT Licensed */\r\n\r\n;!function(window){ // gulp build: lay-header\r\n \"use strict\";\r\n\r\n var MOD_NAME = 'lay'; // 模块名\r\n var document = window.document;\r\n\r\n /**\r\n * 元素查找\r\n * @param {string | HTMLElement | JQuery} selector\r\n */\r\n var lay = function(selector){\r\n return new Class(selector);\r\n };\r\n\r\n // 构造器\r\n var Class = function(selector){\r\n var that = this;\r\n var elem = typeof selector === 'object' ? function(){\r\n // 仅适配简单元素对象\r\n return layui.isArray(selector) ? selector : [selector];\r\n }() : (\r\n this.selector = selector,\r\n document.querySelectorAll(selector || null)\r\n );\r\n\r\n lay.each(elem, function(index, item){\r\n that.push(elem[index]);\r\n });\r\n };\r\n\r\n /*\r\n * API 兼容\r\n */\r\n Array.prototype.indexOf = Array.prototype.indexOf || function(searchElement, fromIndex) {\r\n var rst = -1;\r\n fromIndex = fromIndex || 0;\r\n layui.each(this, function(index, val){\r\n if (searchElement === val && index >= fromIndex) {\r\n rst = index;\r\n return !0;\r\n }\r\n });\r\n return rst;\r\n };\r\n\r\n /*\r\n lay 对象操作\r\n */\r\n\r\n Class.fn = Class.prototype = [];\r\n Class.fn.constructor = Class;\r\n\r\n /**\r\n * 将两个或多个对象的内容深度合并到第一个对象中\r\n * @callback ExtendFunc\r\n * @param {*} target - 一个对象\r\n * @param {...*} objectN - 包含额外的属性合并到第一个参数\r\n * @returns {*} 返回合并后的对象\r\n */\r\n /** @type ExtendFunc*/\r\n lay.extend = function(){\r\n var ai = 1;\r\n var length;\r\n var args = arguments;\r\n var clone = function(target, obj){\r\n target = target || (layui.type(obj) === 'array' ? [] : {}); // 目标对象\r\n for(var i in obj){\r\n // 若值为普通对象,则进入递归,继续深度合并\r\n target[i] = (obj[i] && obj[i].constructor === Object)\r\n ? clone(target[i], obj[i])\r\n : obj[i];\r\n }\r\n return target;\r\n };\r\n\r\n args[0] = typeof args[0] === 'object' ? args[0] : {};\r\n length = args.length\r\n\r\n for(; ai < length; ai++){\r\n if(typeof args[ai] === 'object'){\r\n clone(args[0], args[ai]);\r\n }\r\n }\r\n return args[0];\r\n };\r\n\r\n /**\r\n * IE 版本\r\n * @type {string | boolean} - 如果是 IE 返回版本字符串,否则返回 false\r\n */\r\n lay.ie = function(){\r\n var agent = navigator.userAgent.toLowerCase();\r\n return (!!window.ActiveXObject || \"ActiveXObject\" in window) ? (\r\n (agent.match(/msie\\s(\\d+)/) || [])[1] || '11' // 由于 ie11 并没有 msie 的标识\r\n ) : false;\r\n }();\r\n\r\n\r\n /**\r\n * 获取 layui 常见方法,以便用于组件单独版\r\n */\r\n\r\n lay.layui = layui || {};\r\n lay.getPath = layui.cache.dir; // 获取当前 JS 所在目录\r\n lay.stope = layui.stope; // 中止冒泡\r\n lay.each = function(){ // 遍历\r\n layui.each.apply(layui, arguments);\r\n return this;\r\n };\r\n\r\n\r\n /**\r\n * 数字前置补零\r\n * @param {number | string} num - 原始数字\r\n * @param {number} [length=2] - 数字长度,如果原始数字长度小于 length,则前面补零\r\n * @returns {string} 返回补 0 后的数字\r\n * @example\r\n * ```js\r\n * lay.digit(6, 2); // \"06\"\r\n * lay.digit('7', 3); // \"007\"\r\n * ```\r\n */\r\n lay.digit = function(num, length){\r\n if(!(typeof num === 'string' || typeof num === 'number')) return '';\r\n\r\n var str = '';\r\n num = String(num);\r\n length = length || 2;\r\n for(var i = num.length; i < length; i++){\r\n str += '0';\r\n }\r\n return num < Math.pow(10, length) ? str + num : num;\r\n };\r\n\r\n /**\r\n * 创建元素\r\n * @param {string} elemName - 元素的标签名\r\n * @param {Object.} [attr] - 添加到元素上的属性\r\n * @returns {HTMLElement} 返回创建的 HTML 元素\r\n * @example\r\n * ```js\r\n * lay.elem('div', {id: 'test'}) //
            \r\n * ```\r\n */\r\n lay.elem = function(elemName, attr){\r\n var elem = document.createElement(elemName);\r\n lay.each(attr || {}, function(key, value){\r\n elem.setAttribute(key, value);\r\n });\r\n return elem;\r\n };\r\n\r\n /**\r\n * 当前页面是否存在滚动条\r\n * @returns {boolean} 是否存在滚动条\r\n * @example\r\n * ```\r\n * lay.hasScrollbar() // true 或 false\r\n * ```\r\n */\r\n lay.hasScrollbar = function(){\r\n return document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight);\r\n };\r\n\r\n /**\r\n * 获取 style rules\r\n * @param {HTMLStyleElement} style - HTMLStyle 元素\r\n * @param {(ruleItem: CSSStyleRule, index: number) => boolean} [callback] - 用来返回 style 元素中的每个 `style rule` 的函数,返回 true 终止遍历\r\n * @returns {CSSRuleList } 返回 `style rules`\r\n * @example\r\n * ```\r\n * \r\n *\r\n * lay.getStyleRules($('#test')[0], function(rule, index){\r\n * if(rule.selectorText === '.lay-card'){\r\n * console.log(index, rule.cssText) // 0 '.lay-card{color: #000}'\r\n * rule.style.color = '#EEE';\r\n * return true; // 终止遍历\r\n * }\r\n * }) // RuleList\r\n * ```\r\n */\r\n lay.getStyleRules = function(style, callback) {\r\n if (!style) return;\r\n\r\n var sheet = style.sheet || style.styleSheet || {};\r\n var rules = sheet.cssRules || sheet.rules;\r\n\r\n if (typeof callback === 'function') {\r\n layui.each(rules, function(i, item){\r\n if (callback(item, i)) return true;\r\n });\r\n }\r\n\r\n return rules;\r\n };\r\n\r\n /**\r\n * 创建 style 样式\r\n * @param {Object} options - 可配置的选项\r\n * @param {string | HTMLElement | JQuery} [options.target] - 目标容器,指定后会将样式追加到目标容器\r\n * @param {string} [options.id] - 样式元素的 id,默认自增\r\n * @param {string} options.text - 样式内容\r\n * @returns {HTMLStyleElement} 返回创建的样式元素\r\n * @example\r\n * ```html\r\n *
            \r\n * \r\n * \r\n *
            \r\n *\r\n * lay.style({\r\n * target: '#targetEl',\r\n * text: '.card{color: #000}'\r\n * }) // \r\n * ```\r\n */\r\n lay.style = function(options){\r\n options = options || {};\r\n\r\n var style = lay.elem('style');\r\n var styleText = options.text || '';\r\n var target = options.target;\r\n\r\n if (!styleText) return;\r\n\r\n // 添加样式\r\n if ('styleSheet' in style) {\r\n style.setAttribute('type', 'text/css');\r\n style.styleSheet.cssText = styleText;\r\n } else {\r\n style.innerHTML = styleText;\r\n }\r\n\r\n // ID\r\n style.id = 'LAY-STYLE-'+ (options.id || function(index) {\r\n lay.style.index++;\r\n return 'DF-'+ index;\r\n }(lay.style.index || 0));\r\n\r\n // 是否向目标容器中追加 style 元素\r\n if (target) {\r\n var styleElem = lay(target).find('#'+ style.id);\r\n styleElem[0] && styleElem.remove();\r\n lay(target).append(style);\r\n }\r\n\r\n return style;\r\n };\r\n\r\n /**\r\n * 将元素定位到指定目标元素附近\r\n * @param {HTMLElement} target - 目标元素\r\n * @param {HTMLElement} elem - 定位元素\r\n * @param {Object} [opts] - 可配置的选项\r\n * @param {'absolute' | 'fixed'} [opts.position] - 元素的定位类型\r\n * @param {'left' | 'right'} [opts.clickType=\"left\"] - 点击类型,默认为 'left',如果 {@link target} 是 document 或 body 元素,则为 'right'\r\n * @param {'left' | 'right' | 'center'} [opts.align=\"left\"] - 对齐方式\r\n * @param {boolean} [opts.allowBottomOut=false] - 顶部没有足够区域显示时,是否允许底部溢出\r\n * @param {string | number} [opts.margin=5] - 边距\r\n * @param {Event} [opts.e] - 事件对象,仅右键生效\r\n * @param {boolean} [opts.SYSTEM_RELOAD] - 是否重载,用于出现滚动条时重新计算位置\r\n * @example\r\n * ```js\r\n * \r\n *
              \r\n *
            • 菜单1
            • \r\n *
            • 菜单2
            • \r\n *
            \r\n *\r\n * // 下拉菜单将被定位到按钮附近\r\n * lay.position(\r\n * $('#targetEl')[0],\r\n * $('#contentEl')[0],\r\n * {\r\n * position: 'fixed',\r\n * align: 'center'\r\n * }\r\n * )\r\n * ```\r\n */\r\n lay.position = function(target, elem, opts){\r\n if(!elem) return;\r\n opts = opts || {};\r\n\r\n // 如果绑定的是 document 或 body 元素,则直接获取鼠标坐标\r\n if(target === document || target === lay('body')[0]){\r\n opts.clickType = 'right';\r\n }\r\n\r\n // 绑定绑定元素的坐标\r\n var rect = opts.clickType === 'right' ? function(){\r\n var e = opts.e || window.event || {};\r\n return {\r\n left: e.clientX,\r\n top: e.clientY,\r\n right: e.clientX,\r\n bottom: e.clientY\r\n }\r\n }() : target.getBoundingClientRect();\r\n var elemWidth = elem.offsetWidth; // 控件的宽度\r\n var elemHeight = elem.offsetHeight; // 控件的高度\r\n\r\n // 滚动条高度\r\n var scrollArea = function(type){\r\n type = type ? 'scrollLeft' : 'scrollTop';\r\n return document.body[type] | document.documentElement[type];\r\n };\r\n\r\n // 窗口宽高\r\n var winArea = function(type){\r\n return document.documentElement[type ? 'clientWidth' : 'clientHeight']\r\n };\r\n var margin = 'margin' in opts ? opts.margin : 5;\r\n var left = rect.left;\r\n var top = rect.bottom;\r\n\r\n // 相对元素居中\r\n if(opts.align === 'center'){\r\n left = left - (elemWidth - target.offsetWidth) / 2;\r\n } else if(opts.align === 'right'){\r\n left = left - elemWidth + target.offsetWidth;\r\n }\r\n\r\n // 判断右侧是否超出边界\r\n if(left + elemWidth + margin > winArea('width')){\r\n left = winArea('width') - elemWidth - margin; // 如果超出右侧,则将面板向右靠齐\r\n }\r\n // 左侧是否超出边界\r\n if(left < margin) left = margin;\r\n\r\n\r\n // 判断底部和顶部是否超出边界\r\n if(rect.bottom + elemHeight + margin > winArea()){ // 底部超出边界\r\n // 优先判断顶部是否有足够区域显示完全,且底部不能超出边界\r\n if(rect.top > elemHeight + margin && rect.top <= winArea() ){\r\n top = rect.top - elemHeight - margin*2; // 顶部有足够的区域显示\r\n } else if(!opts.allowBottomOut){ // 顶部没有足够区域显示时,是否允许底部溢出\r\n top = winArea() - elemHeight - margin*2; // 面板向底部靠齐\r\n if(top < 0) top = 0; // 如果面板底部靠齐时,又溢出窗口顶部,则只能将顶部靠齐\r\n }\r\n }\r\n /*\r\n if(top + elemHeight + margin > winArea()){\r\n // 优先顶部是否有足够区域显示完全\r\n if(rect.top > elemHeight + margin){\r\n top = rect.top - elemHeight - margin*2; // 顶部有足够的区域显示\r\n } else {\r\n // 如果面板是鼠标右键弹出,且顶部没有足够区域显示,则将面板向底部靠齐\r\n if(obj.clickType === 'right'){\r\n top = winArea() - elemHeight - margin*2;\r\n if(top < 0) top = 0; // 不能溢出窗口顶部\r\n } else {\r\n top = margin; // 位置计算逻辑完备性处理\r\n }\r\n }\r\n }\r\n */\r\n\r\n // 定位类型\r\n var position = opts.position;\r\n if(position) elem.style.position = position;\r\n\r\n // 设置坐标\r\n elem.style.left = left + (position === 'fixed' ? 0 : scrollArea(1)) + 'px';\r\n elem.style.top = top + (position === 'fixed' ? 0 : scrollArea()) + 'px';\r\n\r\n // 防止页面无滚动条时,又因为弹出面板而出现滚动条导致的坐标计算偏差\r\n if(!lay.hasScrollbar()){\r\n var rect1 = elem.getBoundingClientRect();\r\n // 如果弹出面板的溢出窗口底部,则表示将出现滚动条,此时需要重新计算坐标\r\n if(!opts.SYSTEM_RELOAD && (rect1.bottom + margin) > winArea()){\r\n opts.SYSTEM_RELOAD = true;\r\n setTimeout(function(){\r\n lay.position(target, elem, opts);\r\n }, 50);\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * 获取元素上的属性配置项\r\n * @param {string | HTMLElement | JQuery} elem - HTML 元素\r\n * @param {{attr: string} | string} [opts=\"lay-options\"] - 可配置的选项,string 类型指定属性名\r\n * @returns {Object.} 返回元素上的属性配置项\r\n * @example\r\n * ```js\r\n *
            \r\n *\r\n * var elem = $('#testEl')\r\n * lay.options(elem) // {color:red}\r\n * lay.options(elem[0]) // {color:red}\r\n * lay.options('#testEl') // {color:red}\r\n * lay.options('#testEl', {attr: 'lay-toc'}) // {hot: true}\r\n * lay.options('#testEl', 'lay-toc') // {hot: true}\r\n *\r\n * $('#testEl').attr('lay-toc') // '{hot: true}'\r\n * ```\r\n */\r\n lay.options = function(elem, opts){\r\n opts = typeof opts === 'object' ? opts : {attr: opts};\r\n\r\n if(elem === document) return {};\r\n\r\n var othis = lay(elem);\r\n var attrName = opts.attr || 'lay-options';\r\n var attrValue = othis.attr(attrName);\r\n\r\n try {\r\n /**\r\n * 请注意: 开发者在使用 lay-options=\"{}\" 配置组件选项时,需确保属性值不来自于网页用户,\r\n * 即属性值必须在网页开发者自身的可控范围内,否则请勿在 HTML 标签属性中获取组件选项。\r\n */\r\n return new Function('return '+ (attrValue || '{}'))();\r\n } catch(ev) {\r\n layui.hint().error(opts.errorText || [\r\n attrName + '=\"'+ attrValue + '\"',\r\n '\\n parseerror: '+ ev\r\n ].join('\\n'), 'error');\r\n return {};\r\n }\r\n };\r\n\r\n\r\n /**\r\n * 元素是否属于顶级元素(document 或 body)\r\n * @param {HTMLElement} elem - HTML 元素\r\n * @returns {boolean} 是否属于顶级元素\r\n * @example\r\n * ```js\r\n * lay.isTopElem(document) // true\r\n * ```\r\n */\r\n lay.isTopElem = function(elem){\r\n var topElems = [document, lay('body')[0]]\r\n ,matched = false;\r\n lay.each(topElems, function(index, item){\r\n if(item === elem){\r\n return matched = true\r\n }\r\n });\r\n return matched;\r\n };\r\n\r\n // 剪切板\r\n lay.clipboard = {\r\n /**\r\n * 写入文本\r\n * @param {Object} options - 可配置的选项\r\n * @param {string} options.text - 写入剪贴板的文本\r\n * @param {() => void} [options.done] - 写入成功/完成回调\r\n * @param {(err?: any) => void} [options.error] - 写入失败回调\r\n * @example\r\n * ```js\r\n * lay.clipboard.writeText({\r\n * text: '测试文本',\r\n * done: function(){ layer.msg('copied')},\r\n * error: function(){ layer.msg('error')}\r\n * })\r\n * ```\r\n */\r\n writeText: function(options) {\r\n var text = String(options.text);\r\n\r\n if(navigator && 'clipboard' in navigator){\r\n navigator.clipboard.writeText(text)\r\n .then(options.done, function(){\r\n legacyCopy();\r\n });\r\n }else{\r\n legacyCopy();\r\n }\r\n\r\n function legacyCopy(){\r\n var elem = document.createElement('textarea');\r\n\r\n elem.value = text;\r\n elem.style.position = 'fixed';\r\n elem.style.opacity = '0';\r\n elem.style.top = '0px';\r\n elem.style.left = '0px';\r\n\r\n document.body.appendChild(elem);\r\n elem.select();\r\n\r\n try {\r\n document.execCommand('copy');\r\n typeof options.done === 'function' && options.done();\r\n } catch(err) {\r\n typeof options.error === 'function' && options.error(err);\r\n } finally {\r\n elem.remove ? elem.remove() : document.body.removeChild(elem);\r\n }\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * 检测是否支持 Passive Event Listeners\r\n * 引用自 https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\r\n * @type {boolean}\r\n */\r\n lay.passiveSupported = function(){\r\n var passiveSupported = false;\r\n try {\r\n var opts = Object.defineProperty({}, 'passive', {\r\n get: function() {\r\n passiveSupported = true;\r\n }\r\n });\r\n window.addEventListener('test', null, opts);\r\n window.removeEventListener('test', null, opts);\r\n } catch (err) {}\r\n return passiveSupported;\r\n }();\r\n\r\n /**\r\n * 是否支持 touch 事件\r\n */\r\n lay.touchEventsSupported = function(){\r\n return 'ontouchstart' in window;\r\n };\r\n\r\n /**\r\n * @typedef touchSwipeState\r\n * @prop {{x: number,y: number}} pointerStart - 初始坐标\r\n * @prop {{x: number,y: number}} pointerEnd - 结束坐标\r\n * @prop {number} distanceX - X 轴移动距离\r\n * @prop {number} distanceY - Y 轴移动距离\r\n * @prop {'none'|'right'|'left'|'up'|'down'} direction - 滑动方向\r\n * @prop {Date} timeStart 开始时间\r\n */\r\n /**\r\n * @callback touchSwipeCallback\r\n * @param {TouchEvent} e 滑动事件\r\n * @param {touchSwipeState} state 滑动相关的状态\r\n */\r\n /**\r\n * 基于 touch 事件的触摸滑动\r\n * @param {string | HTMLElement | JQuery} elem - HTML 元素\r\n * @param {{onTouchStart?: touchSwipeCallback, onTouchMove?: touchSwipeCallback, onTouchEnd?: touchSwipeCallback}} opts - 配置项\r\n */\r\n lay.touchSwipe = function(elem, opts){\r\n var options = opts\r\n var targetElem = lay(elem)[0];\r\n\r\n if(!targetElem || !lay.touchEventsSupported()) return;\r\n\r\n var state = {\r\n pointerStart: {x:0, y:0},\r\n pointerEnd: {x:0, y:0},\r\n distanceX: 0,\r\n distanceY: 0,\r\n direction:'none', // 'up','down','left','right','none\r\n timeStart: null\r\n }\r\n\r\n var onStart = function(e){\r\n if(e.touches.length !== 1) return;\r\n bindEvents();\r\n // 重置状态\r\n state.timeStart = Date.now();\r\n state.pointerStart.x = state.pointerEnd.x = e.touches[0].clientX;\r\n state.pointerStart.y = state.pointerEnd.y = e.touches[0].clientY;\r\n state.distanceX = state.distanceY = 0;\r\n state.direction = 'none'\r\n\r\n options.onTouchStart && options.onTouchStart(e, state);\r\n }\r\n\r\n var onMove = function(e){\r\n e.preventDefault();\r\n state.pointerEnd.x = e.touches[0].clientX;\r\n state.pointerEnd.y = e.touches[0].clientY;\r\n state.distanceX = state.pointerStart.x - state.pointerEnd.x;\r\n state.distanceY = state.pointerStart.y - state.pointerEnd.y;\r\n if(Math.abs(state.distanceX) > Math.abs(state.distanceY)){\r\n state.direction = state.distanceX > 0 ? 'left' : 'right';\r\n }else{\r\n state.direction = state.distanceY > 0 ? 'up' : 'down';\r\n }\r\n options.onTouchMove && options.onTouchMove(e, state);\r\n }\r\n\r\n var onEnd = function(e){\r\n options.onTouchEnd && options.onTouchEnd(e, state);\r\n unbindEvents();\r\n }\r\n \r\n var bindEvents = function(){\r\n targetElem.addEventListener('touchmove', onMove, lay.passiveSupported ? { passive: false} : false);\r\n targetElem.addEventListener('touchend', onEnd);\r\n targetElem.addEventListener('touchcancel', onEnd);\r\n }\r\n\r\n var unbindEvents = function(){\r\n targetElem.removeEventListener('touchmove', onMove);\r\n targetElem.removeEventListener('touchend', onEnd, lay.passiveSupported ? { passive: false} : false);\r\n targetElem.removeEventListener('touchcancel', onEnd);\r\n }\r\n\r\n // 防止事件重复绑定\r\n if(targetElem.__lay_touchswipe_cb_){\r\n targetElem.removeEventListener('touchstart', targetElem.__lay_touchswipe_cb_);\r\n }\r\n targetElem.__lay_touchswipe_cb_ = onStart;\r\n targetElem.addEventListener('touchstart', onStart);\r\n }\r\n\r\n /** @type {(elem: Element|Document|Window,eventName: string,fn:EventListenerOrEventListenerObject,options: boolean | AddEventListenerOptions) => any}*/\r\n lay.addEvent = function(){\r\n if(document.addEventListener){\r\n return function(elem, eventName, fn, options){\r\n elem.addEventListener(eventName, fn, options);\r\n }\r\n }else{\r\n return function(elem, eventName, fn){\r\n var prefix = '_lay_on_';\r\n var eventsCacheName = prefix + eventName;\r\n var listener = function(e){\r\n e.target = e.srcElement;\r\n fn.call(elem, e);\r\n }\r\n listener._rawFn = fn;\r\n if(!elem[eventsCacheName]){\r\n elem[eventsCacheName] = [];\r\n }\r\n var include = false;\r\n lay.each(elem[eventsCacheName], function(_, listener){\r\n if(listener._rawFn === fn){\r\n include = true;\r\n return true;\r\n }\r\n })\r\n if(!include){\r\n elem[eventsCacheName].push(listener);\r\n elem.attachEvent('on' + eventName, listener);\r\n }\r\n }\r\n }\r\n }();\r\n\r\n /** @type {(elem: Element|Document|Window,eventName: string,fn:EventListenerOrEventListenerObject,options: boolean | EventListenerOptions) => any}*/\r\n lay.removeEvent = function(){\r\n if(document.removeEventListener){\r\n return function(elem, eventName, fn, options){\r\n elem.removeEventListener(eventName, fn, options);\r\n }\r\n }else{\r\n return function(elem, eventName, fn){\r\n var prefix = '_lay_on_';\r\n var eventsCacheName = prefix + eventName;\r\n var events = elem[eventsCacheName];\r\n if(layui.isArray(events)){\r\n var newEvents = [];\r\n lay.each(events, function(_, listener){\r\n if(listener._rawFn === fn){\r\n elem.detachEvent('on'+ eventName, listener);\r\n }else{\r\n newEvents.push(listener);\r\n }\r\n })\r\n elem[eventsCacheName] = newEvents;\r\n } \r\n } \r\n }\r\n }();\r\n\r\n\r\n /*\r\n * lay 元素操作\r\n */\r\n\r\n\r\n // 追加字符\r\n Class.addStr = function(str, new_str){\r\n str = str.replace(/\\s+/, ' ');\r\n new_str = new_str.replace(/\\s+/, ' ').split(' ');\r\n lay.each(new_str, function(ii, item){\r\n if(!new RegExp('\\\\b'+ item + '\\\\b').test(str)){\r\n str = str + ' ' + item;\r\n }\r\n });\r\n return str.replace(/^\\s|\\s$/, '');\r\n };\r\n\r\n // 移除值\r\n Class.removeStr = function(str, new_str){\r\n str = str.replace(/\\s+/, ' ');\r\n new_str = new_str.replace(/\\s+/, ' ').split(' ');\r\n lay.each(new_str, function(ii, item){\r\n var exp = new RegExp('\\\\b'+ item + '\\\\b')\r\n if(exp.test(str)){\r\n str = str.replace(exp, '');\r\n }\r\n });\r\n return str.replace(/\\s+/, ' ').replace(/^\\s|\\s$/, '');\r\n };\r\n\r\n // 查找子元素\r\n Class.fn.find = function(selector){\r\n var that = this;\r\n var elem = [];\r\n var isObject = typeof selector === 'object';\r\n\r\n this.each(function(i, item){\r\n var children = isObject && item.contains(selector)\r\n ? selector\r\n : item.querySelectorAll(selector || null);\r\n\r\n lay.each(children, function(index, child){\r\n elem.push(child);\r\n });\r\n });\r\n\r\n return lay(elem);\r\n };\r\n\r\n // 元素遍历\r\n Class.fn.each = function(fn){\r\n return lay.each.call(this, this, fn);\r\n };\r\n\r\n // 添加 className\r\n Class.fn.addClass = function(className, type){\r\n return this.each(function(index, item){\r\n item.className = Class[type ? 'removeStr' : 'addStr'](item.className, className)\r\n });\r\n };\r\n\r\n // 移除 className\r\n Class.fn.removeClass = function(className){\r\n return this.addClass(className, true);\r\n };\r\n\r\n // 是否包含 css 类\r\n Class.fn.hasClass = function(className){\r\n var has = false;\r\n this.each(function(index, item){\r\n if(new RegExp('\\\\b'+ className +'\\\\b').test(item.className)){\r\n has = true;\r\n }\r\n });\r\n return has;\r\n };\r\n\r\n // 添加或获取 css style\r\n Class.fn.css = function(key, value){\r\n var that = this;\r\n var parseValue = function(v){\r\n return isNaN(v) ? v : (v +'px');\r\n };\r\n return (typeof key === 'string' && value === undefined) ? function(){\r\n if(that.length > 0) return that[0].style[key];\r\n }() : that.each(function(index, item){\r\n typeof key === 'object' ? lay.each(key, function(thisKey, thisValue){\r\n item.style[thisKey] = parseValue(thisValue);\r\n }) : item.style[key] = parseValue(value);\r\n });\r\n };\r\n\r\n // 添加或获取宽度\r\n Class.fn.width = function(value){\r\n var that = this;\r\n return value === undefined ? function(){\r\n if(that.length > 0) return that[0].offsetWidth; // 此处还需做兼容\r\n }() : that.each(function(index, item){\r\n that.css('width', value);\r\n });\r\n };\r\n\r\n // 添加或获取高度\r\n Class.fn.height = function(value){\r\n var that = this;\r\n return value === undefined ? function(){\r\n if(that.length > 0) return that[0].offsetHeight; // 此处还需做兼容\r\n }() : that.each(function(index, item){\r\n that.css('height', value);\r\n });\r\n };\r\n\r\n // 添加或获取属性\r\n Class.fn.attr = function(key, value){\r\n var that = this;\r\n return value === undefined ? function(){\r\n if(that.length > 0) return that[0].getAttribute(key);\r\n }() : that.each(function(index, item){\r\n item.setAttribute(key, value);\r\n });\r\n };\r\n\r\n // 移除属性\r\n Class.fn.removeAttr = function(key){\r\n return this.each(function(index, item){\r\n item.removeAttribute(key);\r\n });\r\n };\r\n\r\n // 设置或获取 HTML 内容\r\n Class.fn.html = function(html){\r\n var that = this;\r\n return html === undefined ? function(){\r\n if(that.length > 0) return that[0].innerHTML;\r\n }() : this.each(function(index, item){\r\n item.innerHTML = html;\r\n });\r\n };\r\n\r\n // 设置或获取值\r\n Class.fn.val = function(value){\r\n var that = this;\r\n return value === undefined ? function(){\r\n if(that.length > 0) return that[0].value;\r\n }() : this.each(function(index, item){\r\n item.value = value;\r\n });\r\n };\r\n\r\n // 追加内容\r\n Class.fn.append = function(elem){\r\n return this.each(function(index, item){\r\n typeof elem === 'object'\r\n ? item.appendChild(elem)\r\n : item.innerHTML = item.innerHTML + elem;\r\n });\r\n };\r\n\r\n // 移除内容\r\n Class.fn.remove = function(elem){\r\n return this.each(function(index, item){\r\n elem ? item.removeChild(elem) : item.parentNode.removeChild(item);\r\n });\r\n };\r\n\r\n // 事件绑定\r\n Class.fn.on = function(eventName, fn, options){\r\n return this.each(function(index, item){\r\n lay.addEvent(item, eventName, fn, options)\r\n });\r\n };\r\n\r\n // 解除事件\r\n Class.fn.off = function(eventName, fn, options){\r\n return this.each(function(index, item){\r\n lay.removeEvent(item, eventName, fn, options)\r\n });\r\n };\r\n\r\n // export\r\n window.lay = lay;\r\n\r\n // 输出为 layui 模块\r\n if(window.layui && layui.define){\r\n layui.define(function(exports){\r\n exports(MOD_NAME, lay);\r\n });\r\n }\r\n\r\n}(window, window.document); // gulp build: lay-footer\r\n","/**\r\n * laytpl 轻量模板引擎\r\n */\r\n\r\nlayui.define(function(exports){\r\n \"use strict\";\r\n\r\n // 默认属性\r\n var config = {\r\n open: '{{', // 标签符前缀\r\n close: '}}' // 标签符后缀\r\n };\r\n\r\n // 模板工具\r\n var tool = {\r\n escape: function(html){\r\n var exp = /[<\"'>]|&(?=#[a-zA-Z0-9]+)/g;\r\n if(html === undefined || html === null) return '';\r\n\r\n html += '';\r\n if(!exp.test(html)) return html;\r\n\r\n return html.replace(/&(?!#?[a-zA-Z0-9]+;)/g, '&')\r\n .replace(//g, '>')\r\n .replace(/'/g, ''').replace(/\"/g, '"');\r\n }\r\n };\r\n\r\n // 内部方法\r\n var inner = {\r\n exp: function(str){\r\n return new RegExp(str, 'g');\r\n },\r\n // 错误提示\r\n error: function(e, source){\r\n var error = 'Laytpl Error: ';\r\n typeof console === 'object' && console.error(error + e + '\\n'+ (source || ''));\r\n return error + e;\r\n }\r\n };\r\n\r\n // constructor\r\n var Class = function(template, options){\r\n var that = this;\r\n that.config = that.config || {};\r\n that.template = template;\r\n\r\n // 简单属性合并\r\n var extend = function(obj){\r\n for(var i in obj){\r\n that.config[i] = obj[i];\r\n }\r\n };\r\n\r\n extend(config);\r\n extend(options);\r\n };\r\n\r\n // 标签正则\r\n Class.prototype.tagExp = function(type, _, __){\r\n var options = this.config;\r\n var types = [\r\n '#([\\\\s\\\\S])+?', // js 语句\r\n '([^{#}])*?' // 普通字段\r\n ][type || 0];\r\n\r\n return inner.exp((_||'') + options.open + types + options.close + (__||''));\r\n };\r\n\r\n // 模版解析\r\n Class.prototype.parse = function(template, data){\r\n var that = this;\r\n var options = that.config;\r\n var source = template;\r\n var jss = inner.exp('^'+ options.open +'#', '');\r\n var jsse = inner.exp(options.close +'$', '');\r\n\r\n // 模板必须为 string 类型\r\n if(typeof template !== 'string') return template;\r\n\r\n // 正则解析\r\n template = template.replace(/\\s+|\\r|\\t|\\n/g, ' ')\r\n .replace(inner.exp(options.open +'#'), options.open +'# ')\r\n .replace(inner.exp(options.close +'}'), '} '+ options.close).replace(/\\\\/g, '\\\\\\\\')\r\n\r\n // 不匹配指定区域的内容\r\n .replace(inner.exp(options.open + '!(.+?)!' + options.close), function(str){\r\n str = str.replace(inner.exp('^'+ options.open + '!'), '')\r\n .replace(inner.exp('!'+ options.close), '')\r\n .replace(inner.exp(options.open + '|' + options.close), function(tag){\r\n return tag.replace(/(.)/g, '\\\\$1')\r\n });\r\n return str\r\n })\r\n\r\n // 匹配 JS 语法\r\n .replace(/(?=\"|')/g, '\\\\').replace(that.tagExp(), function(str){\r\n str = str.replace(jss, '').replace(jsse, '');\r\n return '\";' + str.replace(/\\\\(.)/g, '$1') + ';view+=\"';\r\n })\r\n\r\n // 匹配普通输出语句\r\n .replace(that.tagExp(1), function(str){\r\n var start = '\"+laytpl.escape(';\r\n if(str.replace(/\\s/g, '') === options.open + options.close){\r\n return '';\r\n }\r\n str = str.replace(inner.exp(options.open + '|' + options.close), '');\r\n if(/^=/.test(str)){\r\n str = str.replace(/^=/, '');\r\n } else if(/^-/.test(str)){\r\n str = str.replace(/^-/, '');\r\n start = '\"+(';\r\n }\r\n return start + str.replace(/\\\\(.)/g, '$1') + ')+\"';\r\n });\r\n\r\n template = '\"use strict\";var view = \"' + template + '\";return view;';\r\n\r\n try {\r\n /**\r\n * 请注意: 开发者在使用模板语法时,需确保模板中的 JS 语句不来自于页面用户输入。\r\n * 即模板中的 JS 语句必须在页面开发者自身的可控范围内,否则请避免使用该模板解析。\r\n */\r\n that.cache = template = new Function('d, laytpl', template);\r\n return template(data, tool);\r\n } catch(e) {\r\n delete that.cache;\r\n return inner.error(e, source);\r\n }\r\n };\r\n\r\n // 数据渲染\r\n Class.prototype.render = function(data, callback){\r\n data = data || {};\r\n\r\n var that = this;\r\n var result = that.cache ? that.cache(data, tool) : that.parse(that.template, data);\r\n\r\n // 返回渲染结果\r\n typeof callback === 'function' && callback(result);\r\n return result;\r\n };\r\n\r\n // 创建实例\r\n var laytpl = function(template, options){\r\n return new Class(template, options);\r\n };\r\n\r\n // 配置全局属性\r\n laytpl.config = function(options){\r\n options = options || {};\r\n for(var i in options){\r\n config[i] = options[i];\r\n }\r\n };\r\n\r\n laytpl.v = '2.0.0';\r\n\r\n // export\r\n exports('laytpl', laytpl);\r\n});\r\n","/**\r\n * laypage 分页组件\r\n */\r\n\r\nlayui.define(function(exports){\r\n \"use strict\";\r\n \r\n var doc = document;\r\n var id = 'getElementById';\r\n var tag = 'getElementsByTagName';\r\n \r\n // 字符常量\r\n var MOD_NAME = 'laypage';\r\n var DISABLED = 'layui-disabled';\r\n \r\n // 构造器\r\n var Class = function(options){\r\n var that = this;\r\n that.config = options || {};\r\n that.config.index = ++laypage.index;\r\n that.render(true);\r\n };\r\n\r\n // 判断传入的容器类型\r\n Class.prototype.type = function(){\r\n var config = this.config;\r\n if(typeof config.elem === 'object'){\r\n return config.elem.length === undefined ? 2 : 3;\r\n }\r\n };\r\n\r\n // 分页视图\r\n Class.prototype.view = function(){\r\n var that = this;\r\n var config = that.config;\r\n\r\n // 连续页码个数\r\n var groups = config.groups = 'groups' in config \r\n ? (Number(config.groups) || 0)\r\n : 5; \r\n \r\n // 排版\r\n config.layout = typeof config.layout === 'object' \r\n ? config.layout \r\n : ['prev', 'page', 'next'];\r\n \r\n config.count = Number(config.count) || 0; // 数据总数\r\n config.curr = Number(config.curr) || 1; // 当前页\r\n\r\n // 每页条数的选择项\r\n config.limits = typeof config.limits === 'object'\r\n ? config.limits\r\n : [10, 20, 30, 40, 50];\r\n\r\n // 默认条数\r\n config.limit = Number(config.limit) || 10;\r\n \r\n // 总页数\r\n config.pages = Math.ceil(config.count/config.limit) || 1;\r\n \r\n // 当前页不能超过总页数\r\n if(config.curr > config.pages){\r\n config.curr = config.pages;\r\n } else if(config.curr < 1) { // 当前分页不能小于 1\r\n config.curr = 1;\r\n }\r\n \r\n // 连续分页个数不能低于 0 且不能大于总页数\r\n if(groups < 0){\r\n groups = 1;\r\n } else if (groups > config.pages){\r\n groups = config.pages;\r\n }\r\n \r\n config.prev = 'prev' in config ? config.prev : '上一页'; // 上一页文本\r\n config.next = 'next' in config ? config.next : '下一页'; // 下一页文本\r\n \r\n // 计算当前组\r\n var index = config.pages > groups \r\n ? Math.ceil( (config.curr + (groups > 1 ? 1 : 0)) / (groups > 0 ? groups : 1) )\r\n : 1;\r\n \r\n // 视图片段\r\n var views = {\r\n // 上一页\r\n prev: function(){\r\n return config.prev \r\n ? ''+ config.prev +''\r\n : '';\r\n }(),\r\n \r\n // 页码\r\n page: function(){\r\n var pager = [];\r\n \r\n // 数据量为0时,不输出页码\r\n if(config.count < 1){\r\n return '';\r\n }\r\n \r\n // 首页\r\n if(index > 1 && config.first !== false && groups !== 0){\r\n pager.push(''+ (config.first || 1) +'');\r\n }\r\n\r\n // 计算当前页码组的起始页\r\n var halve = Math.floor((groups-1)/2) // 页码数等分\r\n var start = index > 1 ? config.curr - halve : 1;\r\n var end = index > 1 ? (function(){\r\n var max = config.curr + (groups - halve - 1);\r\n return max > config.pages ? config.pages : max;\r\n }()) : groups;\r\n \r\n // 防止最后一组出现“不规定”的连续页码数\r\n if(end - start < groups - 1){\r\n start = end - groups + 1;\r\n }\r\n\r\n // 输出左分割符\r\n if(config.first !== false && start > 2){\r\n pager.push('...')\r\n }\r\n \r\n // 输出连续页码\r\n for(; start <= end; start++){\r\n if(start === config.curr){\r\n // 当前页\r\n pager.push(''+ start +'');\r\n } else {\r\n pager.push(''+ start +'');\r\n }\r\n }\r\n \r\n // 输出输出右分隔符 & 末页\r\n if(config.pages > groups && config.pages > end && config.last !== false){\r\n if(end + 1 < config.pages){\r\n pager.push('...');\r\n }\r\n if(groups !== 0){\r\n pager.push(''+ (config.last || config.pages) +'');\r\n }\r\n }\r\n\r\n return pager.join('');\r\n }(),\r\n \r\n // 下一页\r\n next: function(){\r\n return config.next \r\n ? ''+ config.next +''\r\n : '';\r\n }(),\r\n \r\n // 数据总数\r\n count: function(){\r\n var countText = typeof config.countText === 'object' ? config.countText : ['共 ', ' 条'];\r\n return ''+ countText[0] + config.count + countText[1] +''\r\n }(),\r\n \r\n // 每页条数\r\n limit: function(){\r\n var elemArr = ['';\r\n }(),\r\n \r\n // 刷新当前页\r\n refresh: [\r\n '',\r\n '',\r\n ''\r\n ].join(''),\r\n\r\n // 跳页区域\r\n skip: function(){\r\n var skipText = typeof config.skipText === 'object' ? config.skipText : [\r\n '到第',\r\n '页',\r\n '确定'\r\n ];\r\n return [\r\n ''+ skipText[0],\r\n '',\r\n skipText[1]+ '',\r\n ''\r\n ].join('');\r\n }()\r\n };\r\n\r\n return ['
            ',\r\n function(){\r\n var plate = [];\r\n layui.each(config.layout, function(index, item){\r\n if(views[item]){\r\n plate.push(views[item])\r\n }\r\n });\r\n return plate.join('');\r\n }(),\r\n '
            '].join('');\r\n };\r\n\r\n // 跳页的回调\r\n Class.prototype.jump = function(elem, isskip){\r\n if(!elem) return;\r\n\r\n var that = this;\r\n var config = that.config;\r\n var childs = elem.children;\r\n var btn = elem[tag]('button')[0];\r\n var input = elem[tag]('input')[0];\r\n var select = elem[tag]('select')[0];\r\n var skip = function(){\r\n var curr = Number(input.value.replace(/\\s|\\D/g, ''));\r\n if(curr){\r\n config.curr = curr;\r\n that.render();\r\n }\r\n };\r\n \r\n if(isskip) return skip();\r\n \r\n // 页码\r\n for(var i = 0, len = childs.length; i < len; i++){\r\n if(childs[i].nodeName.toLowerCase() === 'a'){\r\n laypage.on(childs[i], 'click', function(){\r\n var curr = Number(this.getAttribute('data-page'));\r\n if(curr < 1 || curr > config.pages) return;\r\n config.curr = curr;\r\n that.render();\r\n });\r\n }\r\n }\r\n \r\n // 条数\r\n if(select){\r\n laypage.on(select, 'change', function(){\r\n var value = this.value;\r\n if(config.curr*value > config.count){\r\n config.curr = Math.ceil(config.count/value);\r\n }\r\n config.limit = value;\r\n that.render();\r\n });\r\n }\r\n \r\n // 确定\r\n if(btn){\r\n laypage.on(btn, 'click', function(){\r\n skip();\r\n });\r\n }\r\n };\r\n \r\n // 输入页数字控制\r\n Class.prototype.skip = function(elem){\r\n if(!elem) return;\r\n\r\n var that = this;\r\n var input = elem[tag]('input')[0];\r\n\r\n if(!input) return;\r\n\r\n // 键盘事件\r\n laypage.on(input, 'keyup', function(e){\r\n var value = this.value;\r\n var keyCode = e.keyCode;\r\n\r\n if(/^(37|38|39|40)$/.test(keyCode)) return;\r\n\r\n if(/\\D/.test(value)){\r\n this.value = value.replace(/\\D/, '');\r\n }\r\n if(keyCode === 13){\r\n that.jump(elem, true)\r\n }\r\n });\r\n };\r\n\r\n // 渲染分页\r\n Class.prototype.render = function(load){\r\n var that = this;\r\n var config = that.config;\r\n var type = that.type();\r\n var view = that.view();\r\n \r\n if(type === 2){\r\n config.elem && (config.elem.innerHTML = view);\r\n } else if(type === 3){\r\n config.elem.html(view);\r\n } else {\r\n if(doc[id](config.elem)){\r\n doc[id](config.elem).innerHTML = view;\r\n }\r\n }\r\n\r\n config.jump && config.jump(config, load);\r\n \r\n var elem = doc[id]('layui-laypage-' + config.index);\r\n that.jump(elem);\r\n \r\n if(config.hash && !load){\r\n location.hash = '!'+ config.hash +'='+ config.curr;\r\n }\r\n \r\n that.skip(elem);\r\n };\r\n \r\n // 外部接口\r\n var laypage = {\r\n // 分页渲染\r\n render: function(options){\r\n var o = new Class(options);\r\n return o.index;\r\n },\r\n index: layui.laypage ? (layui.laypage.index + 10000) : 0,\r\n on: function(elem, even, fn){\r\n elem.attachEvent ? elem.attachEvent('on'+ even, function(e){ // for ie\r\n e.target = e.srcElement;\r\n fn.call(elem, e);\r\n }) : elem.addEventListener(even, fn, false);\r\n return this;\r\n }\r\n }\r\n\r\n exports(MOD_NAME, laypage);\r\n});\r\n","/** laydate 日期与时间控件 | MIT Licensed */ \r\n// @ts-expect-error\r\n;!function(window, document){ // gulp build: laydate-header\r\n \"use strict\";\r\n\r\n var isLayui = window.layui && layui.define;\r\n var ready = {\r\n getPath: window.lay && lay.getPath ? lay.getPath : '',\r\n\r\n // 载入 CSS 依赖\r\n link: function (href, fn, cssname) {\r\n // 未设置路径,则不主动加载 css\r\n if (!laydate.path) return;\r\n\r\n // 加载 css\r\n if (window.lay && lay.layui) {\r\n lay.layui.link(laydate.path + href, fn, cssname);\r\n }\r\n }\r\n };\r\n\r\n // 识别预先可能定义的指定全局对象\r\n var GLOBAL = window.LAYUI_GLOBAL || {};\r\n\r\n // 模块名\r\n var MOD_NAME = 'laydate';\r\n var MOD_ID = 'lay-' + MOD_NAME + '-id'; // 已渲染过的索引标记名\r\n\r\n // 外部调用\r\n var laydate = {\r\n v: '5.6.0', // layDate 版本号\r\n config: {\r\n weekStart: 0 // 默认周日一周的开始\r\n }, // 全局配置项\r\n index: window.laydate && window.laydate.v ? 100000 : 0,\r\n path: GLOBAL.laydate_dir || ready.getPath,\r\n\r\n // 设置全局项\r\n set: function (options) {\r\n var that = this;\r\n that.config = lay.extend({}, that.config, options);\r\n return that;\r\n },\r\n\r\n // 主体 CSS 等待事件\r\n ready: function (callback) {\r\n var cssname = 'laydate';\r\n var ver = '';\r\n var path = (isLayui ? 'modules/' : '') + 'laydate.css?v=' + laydate.v + ver;\r\n\r\n isLayui ? (\r\n layui['layui.all'] ?\r\n (typeof callback === 'function' && callback()) :\r\n layui.addcss(path, callback, cssname)\r\n ) : ready.link(path, callback, cssname);\r\n\r\n return this;\r\n }\r\n };\r\n\r\n // 操作当前实例\r\n var thisModule = function(){\r\n var that = this;\r\n var options = that.config;\r\n var id = options.id;\r\n\r\n thisModule.that[id] = that; // 记录当前实例对象\r\n\r\n return that.inst = {\r\n // 提示框\r\n hint: function(content){\r\n that.hint.call(that, content);\r\n },\r\n // 重载实例\r\n reload: function(options){\r\n that.reload.call(that, options);\r\n },\r\n config: that.config\r\n };\r\n };\r\n\r\n // 字符常量\r\n var ELEM = '.layui-laydate';\r\n var THIS = 'layui-this';\r\n var SHOW = 'layui-show';\r\n var HIDE = 'layui-hide';\r\n var DISABLED = 'laydate-disabled';\r\n var LIMIT_YEAR = [100, 200000];\r\n\r\n var ELEM_STATIC = 'layui-laydate-static';\r\n var ELEM_LIST = 'layui-laydate-list';\r\n var ELEM_SELECTED = 'laydate-selected';\r\n var ELEM_HINT = 'layui-laydate-hint';\r\n var ELEM_DAY_NOW = 'laydate-day-now';\r\n var ELEM_PREV = 'laydate-day-prev';\r\n var ELEM_NEXT = 'laydate-day-next';\r\n var ELEM_FOOTER = 'layui-laydate-footer';\r\n var ELEM_SHORTCUT = 'layui-laydate-shortcut';\r\n var ELEM_NOW = '.laydate-btns-now'\r\n var ELEM_CONFIRM = '.laydate-btns-confirm';\r\n var ELEM_TIME_TEXT = 'laydate-time-text';\r\n var ELEM_TIME_BTN = 'laydate-btns-time';\r\n var ELEM_PREVIEW = 'layui-laydate-preview';\r\n var ELEM_MAIN = 'layui-laydate-main';\r\n var ELEM_SHADE = 'layui-laydate-shade';\r\n\r\n // 组件构造器\r\n var Class = function(options){\r\n var that = this;\r\n that.index = ++laydate.index;\r\n that.config = lay.extend({}, that.config, laydate.config, options);\r\n\r\n // 若 elem 非唯一,则拆分为多个实例\r\n var elem = lay(options.elem || that.config.elem);\r\n if(elem.length > 1){\r\n lay.each(elem, function(){\r\n laydate.render(lay.extend({}, that.config, {\r\n elem: this\r\n }));\r\n });\r\n return that;\r\n }\r\n\r\n // 初始化属性\r\n options = lay.extend(that.config, lay.options(elem[0])); // 继承节点上的属性\r\n\r\n // 若重复执行 render,则视为 reload 处理\r\n if(elem[0] && elem.attr(MOD_ID)){\r\n var newThat = thisModule.getThis(elem.attr(MOD_ID));\r\n if(!newThat) return;\r\n return newThat.reload(options);\r\n }\r\n\r\n // 初始化 id 属性 - 优先取 options > 元素 id > 自增索引\r\n options.id = 'id' in options ? options.id : (\r\n elem.attr('id') || that.index\r\n );\r\n\r\n // 自增索引\r\n options.index = that.index;\r\n\r\n // 初始化\r\n laydate.ready(function(){\r\n that.init();\r\n });\r\n };\r\n\r\n // 日期格式字符\r\n var dateType = 'yyyy|y|MM|M|dd|d|HH|H|mm|m|ss|s';\r\n\r\n // 将日期格式字符转换为数组\r\n thisModule.formatArr = function(format){\r\n return (format || '').match(new RegExp(dateType + '|.', 'g')) || []\r\n };\r\n\r\n /*\r\n 组件操作\r\n */\r\n\r\n // 是否闰年\r\n Class.isLeapYear = function(year){\r\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\r\n };\r\n\r\n // 默认配置\r\n Class.prototype.config = {\r\n type: 'date' //控件类型,支持:year/month/date/time/datetime\r\n ,range: false //是否开启范围选择,即双控件\r\n ,format: 'yyyy-MM-dd' //默认日期格式\r\n ,value: null //默认日期,支持传入new Date(),或者符合format参数设定的日期格式字符\r\n ,isInitValue: true //用于控制是否自动向元素填充初始值(需配合 value 参数使用)\r\n ,min: '1900-1-1' //有效最小日期,年月日必须用“-”分割,时分秒必须用“:”分割。注意:它并不是遵循 format 设定的格式。\r\n ,max: '2099-12-31' //有效最大日期,同上\r\n ,trigger: 'click' //呼出控件的事件\r\n ,show: false //是否直接显示,如果设置 true,则默认直接显示控件\r\n ,showBottom: true //是否显示底部栏\r\n ,isPreview: true //是否显示值预览\r\n ,btns: ['clear', 'now', 'confirm'] //右下角显示的按钮,会按照数组顺序排列\r\n ,lang: 'cn' //语言,只支持cn/en,即中文和英文\r\n ,theme: 'default' //主题\r\n ,position: null //控件定位方式定位, 默认absolute,支持:fixed/absolute/static\r\n ,calendar: false //是否开启公历重要节日,仅支持中文版\r\n ,mark: {} //日期备注,如重要事件或活动标记\r\n ,holidays: null // 标注法定节假日或补假上班\r\n ,zIndex: null //控件层叠顺序\r\n ,done: null //控件选择完毕后的回调,点击清空/现在/确定也均会触发\r\n ,change: null //日期时间改变后的回调\r\n ,autoConfirm: true //是否自动确认(日期|年份|月份选择器非range下是否自动确认)\r\n ,shade: 0\r\n };\r\n\r\n //多语言\r\n Class.prototype.lang = function(){\r\n var that = this\r\n ,options = that.config\r\n ,text = {\r\n cn: {\r\n weeks: ['日', '一', '二', '三', '四', '五', '六']\r\n ,time: ['时', '分', '秒']\r\n ,timeTips: '选择时间'\r\n ,startTime: '开始时间'\r\n ,endTime: '结束时间'\r\n ,dateTips: '返回日期'\r\n ,month: ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '十一', '十二']\r\n ,tools: {\r\n confirm: '确定'\r\n ,clear: '清空'\r\n ,now: '现在'\r\n }\r\n ,timeout: '结束时间不能早于开始时间
            请重新选择'\r\n ,invalidDate: '不在有效日期或时间范围内'\r\n ,formatError: ['日期格式不合法
            必须遵循下述格式:
            ', '
            已为你重置']\r\n ,preview: '当前选中的结果'\r\n }\r\n ,en: {\r\n weeks: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa']\r\n ,time: ['Hours', 'Minutes', 'Seconds']\r\n ,timeTips: 'Select Time'\r\n ,startTime: 'Start Time'\r\n ,endTime: 'End Time'\r\n ,dateTips: 'Select Date'\r\n ,month: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']\r\n ,tools: {\r\n confirm: 'Confirm'\r\n ,clear: 'Clear'\r\n ,now: 'Now'\r\n }\r\n ,timeout: 'End time cannot be less than start Time
            Please re-select'\r\n ,invalidDate: 'Invalid date'\r\n ,formatError: ['The date format error
            Must be followed:
            ', '
            It has been reset']\r\n ,preview: 'The selected result'\r\n }\r\n };\r\n return text[options.lang] || text['cn'];\r\n };\r\n\r\n Class.prototype.markerOfChineseFestivals = {\r\n '0-1-1': '元旦',\r\n '0-2-14': '情人' ,\r\n '0-3-8': '妇女',\r\n '0-3-12': '植树',\r\n '0-4-1': '愚人',\r\n '0-5-1': '劳动',\r\n '0-5-4': '青年',\r\n '0-6-1': '儿童',\r\n '0-9-10': '教师',\r\n '0-10-1': '国庆',\r\n '0-12-25': '圣诞'\r\n }\r\n\r\n // 重载实例\r\n Class.prototype.reload = function(options){\r\n var that = this;\r\n that.config = lay.extend({}, that.config, options);\r\n that.init();\r\n };\r\n\r\n //初始准备\r\n Class.prototype.init = function(){\r\n var that = this\r\n ,options = that.config\r\n ,isStatic = options.position === 'static'\r\n ,format = {\r\n year: 'yyyy'\r\n ,month: 'yyyy-MM'\r\n ,date: 'yyyy-MM-dd'\r\n ,time: 'HH:mm:ss'\r\n ,datetime: 'yyyy-MM-dd HH:mm:ss'\r\n };\r\n\r\n options.elem = lay(options.elem);\r\n options.eventElem = lay(options.eventElem);\r\n\r\n if(!options.elem[0]) return;\r\n\r\n layui.type(options.theme) !== 'array' && (options.theme = [options.theme]);\r\n // 设置了全面版模式\r\n if (options.fullPanel) {\r\n if (options.type !== 'datetime' || options.range) {\r\n // 目前只支持datetime的全面版\r\n delete options.fullPanel;\r\n }\r\n }\r\n\r\n //日期范围分隔符\r\n that.rangeStr = options.range ? (\r\n typeof options.range === 'string' ? options.range : '-'\r\n ) : '';\r\n\r\n //日期范围的日历面板是否联动\r\n that.rangeLinked = !!(options.range && options.rangeLinked && (options.type === 'date' || options.type === 'datetime'))\r\n\r\n //切换日历联动方式\r\n that.autoCalendarModel = function () {\r\n var state = that.rangeLinked;\r\n that.rangeLinked = (options.range && (options.type === 'date' || options.type === 'datetime'))\r\n && ((!that.startDate || !that.endDate) || (that.startDate && that.endDate && that.startDate.year === that.endDate.year && that.startDate.month === that.endDate.month));\r\n lay(that.elem)[that.rangeLinked ? 'addClass' : 'removeClass']('layui-laydate-linkage');\r\n return that.rangeLinked != state; // 返回发生了变化\r\n };\r\n\r\n //是否自动切换\r\n that.autoCalendarModel.auto = that.rangeLinked && options.rangeLinked === 'auto';\r\n\r\n //若 range 参数为数组,则表示为开始日期和结束日期的 input 对象\r\n if(layui.type(options.range) === 'array'){\r\n that.rangeElem = [\r\n lay(options.range[0]),\r\n lay(options.range[1])\r\n ];\r\n }\r\n\r\n //若 type 设置非法,则初始化为 date 类型\r\n if(!format[options.type]){\r\n window.console && console.error && console.error('laydate type error:\\''+ options.type + '\\' is not supported')\r\n options.type = 'date';\r\n }\r\n\r\n //根据不同 type,初始化默认 format\r\n if(options.format === format.date){\r\n options.format = format[options.type] || format.date;\r\n }\r\n\r\n //将日期格式转化成数组\r\n that.format = thisModule.formatArr(options.format);\r\n\r\n // 设置了一周的开始是周几,此处做一个控制\r\n if (options.weekStart) {\r\n if (!/^[0-6]$/.test(options.weekStart)) {\r\n var lang = that.lang();\r\n options.weekStart = lang.weeks.indexOf(options.weekStart);\r\n if (options.weekStart === -1) options.weekStart = 0;\r\n }\r\n }\r\n\r\n //生成正则表达式\r\n that.EXP_IF = '';\r\n that.EXP_SPLIT = '';\r\n lay.each(that.format, function(i, item){\r\n var EXP = new RegExp(dateType).test(item)\r\n ? '\\\\d{'+ function(){\r\n if(new RegExp(dateType).test(that.format[i === 0 ? i + 1 : i - 1]||'')){\r\n if(/^yyyy|y$/.test(item)) return 4;\r\n return item.length;\r\n }\r\n if(/^yyyy$/.test(item)) return '1,4';\r\n if(/^y$/.test(item)) return '1,308';\r\n return '1,2';\r\n }() +'}'\r\n : '\\\\' + item;\r\n that.EXP_IF = that.EXP_IF + EXP;\r\n that.EXP_SPLIT = that.EXP_SPLIT + '(' + EXP + ')';\r\n });\r\n //验证日期格式正则\r\n that.EXP_IF_ONE = new RegExp('^'+ that.EXP_IF +'$'); //验证单个日期格式\r\n that.EXP_IF = new RegExp('^'+ (\r\n options.range ?\r\n that.EXP_IF + '\\\\s\\\\'+ that.rangeStr + '\\\\s' + that.EXP_IF\r\n : that.EXP_IF\r\n ) +'$');\r\n that.EXP_SPLIT = new RegExp('^'+ that.EXP_SPLIT +'$', '');\r\n\r\n //如果不是 input|textarea 元素,则默认采用 click 事件\r\n if(!that.isInput(options.elem[0])){\r\n if(options.trigger === 'focus'){\r\n options.trigger = 'click';\r\n }\r\n }\r\n\r\n // 设置唯一 KEY\r\n options.elem.attr('lay-key', that.index);\r\n options.eventElem.attr('lay-key', that.index);\r\n options.elem.attr(MOD_ID, options.id); // 渲染过的标记\r\n\r\n\r\n //获取限制内日期\r\n lay.each(['min', 'max'], function(i, item){\r\n var ymd = [];\r\n var hms = [];\r\n if(typeof options[item] === 'number'){ //如果为数字\r\n var day = options[item]\r\n ,tDate = new Date()\r\n ,time = that.newDate({ //今天的最大毫秒数\r\n year: tDate.getFullYear()\r\n ,month: tDate.getMonth()\r\n ,date: tDate.getDate()\r\n ,hours: i ? 23 : 0\r\n ,minutes: i ? 59 : 0\r\n ,seconds: i ? 59 : 0\r\n }).getTime()\r\n ,STAMP = 86400000 //代表一天的毫秒数\r\n ,thisDate = new Date(\r\n day ? (\r\n day < STAMP ? time + day*STAMP : day //如果数字小于一天的毫秒数,则数字为天数,否则为毫秒数\r\n ) : time\r\n );\r\n ymd = [thisDate.getFullYear(), thisDate.getMonth() + 1, thisDate.getDate()];\r\n hms = [thisDate.getHours(), thisDate.getMinutes(), thisDate.getSeconds()];\r\n } else if(typeof options[item] === 'string') {\r\n ymd = (options[item].match(/\\d+-\\d+-\\d+/) || [''])[0].split('-');\r\n hms = (options[item].match(/\\d+:\\d+:\\d+/) || [''])[0].split(':');\r\n } else if(typeof options[item] === 'object'){\r\n return options[item];\r\n }\r\n options[item] = {\r\n year: ymd[0] | 0 || new Date().getFullYear()\r\n ,month: ymd[1] ? (ymd[1] | 0) - 1 : new Date().getMonth()\r\n ,date: ymd[2] | 0 || new Date().getDate()\r\n ,hours: hms[0] | 0\r\n ,minutes: hms[1] | 0\r\n ,seconds: hms[2] | 0\r\n };\r\n });\r\n\r\n that.elemID = 'layui-laydate'+ options.elem.attr('lay-key');\r\n\r\n if(options.show || isStatic) that.render();\r\n isStatic || that.events();\r\n\r\n // 重定义 input 元素的 get set\r\n if(typeof options.formatToDisplay === 'function'){\r\n if(that.isInput(options.elem[0])){\r\n that.formatToDisplay(options.elem[0], options.formatToDisplay);\r\n } else {\r\n var rangeElem = that.rangeElem;\r\n if(rangeElem){\r\n that.formatToDisplay(rangeElem[0][0], options.formatToDisplay);\r\n that.formatToDisplay(rangeElem[1][0], options.formatToDisplay);\r\n }\r\n }\r\n }\r\n\r\n //默认赋值\r\n if(options.value && options.isInitValue){\r\n if(layui.type(options.value) === 'date'){\r\n that.setValue(that.parse(0, that.systemDate(options.value)));\r\n } else {\r\n that.setValue(options.value);\r\n }\r\n }\r\n };\r\n\r\n //控件主体渲染\r\n Class.prototype.render = function(){\r\n var that = this\r\n ,options = that.config\r\n ,lang = that.lang()\r\n ,isStatic = options.position === 'static'\r\n\r\n //主面板\r\n ,elem = that.elem = lay.elem('div', {\r\n id: that.elemID\r\n ,\"class\": [\r\n 'layui-laydate'\r\n ,options.range ? ' layui-laydate-range' : ''\r\n ,that.rangeLinked ? ' layui-laydate-linkage' : ''\r\n ,isStatic ? (' '+ ELEM_STATIC) : ''\r\n ,options.fullPanel ? ' laydate-theme-fullpanel' : '' // 全面版\r\n // ,options.theme && options.theme !== 'default' && !/^#/.test(options.theme) ? (' laydate-theme-' + options.theme) : ''\r\n ,(function () {\r\n var themeStr = '';\r\n lay.each(options.theme, function (index, theme) {\r\n if (theme !== 'default' && !/^#/.test(theme)) {\r\n themeStr += ' laydate-theme-' + theme;\r\n }\r\n })\r\n return themeStr;\r\n })()\r\n ].join('')\r\n })\r\n\r\n //主区域\r\n ,elemMain = that.elemMain = []\r\n ,elemHeader = that.elemHeader = []\r\n ,elemCont = that.elemCont = []\r\n ,elemTable = that.table = []\r\n\r\n //底部区域\r\n ,divFooter = that.footer = lay.elem('div', {\r\n \"class\": ELEM_FOOTER\r\n })\r\n\r\n //快捷栏\r\n ,divShortcut = that.shortcut = lay.elem('ul', {\r\n \"class\": ELEM_SHORTCUT\r\n });\r\n\r\n if(options.zIndex) elem.style.zIndex = options.zIndex;\r\n\r\n //单双日历区域\r\n lay.each(new Array(2), function(i){\r\n if(!options.range && i > 0){\r\n return true;\r\n }\r\n\r\n //头部区域\r\n var divHeader = lay.elem('div', {\r\n \"class\": 'layui-laydate-header'\r\n })\r\n\r\n //左右切换\r\n ,headerChild = [function(){ //上一年\r\n var elem = lay.elem('i', {\r\n \"class\": 'layui-icon laydate-icon laydate-prev-y'\r\n });\r\n elem.innerHTML = '';\r\n return elem;\r\n }(), function(){ //上一月\r\n var elem = lay.elem('i', {\r\n \"class\": 'layui-icon laydate-icon laydate-prev-m'\r\n });\r\n elem.innerHTML = '';\r\n return elem;\r\n }(), function(){ //年月选择\r\n var elem = lay.elem('div', {\r\n \"class\": 'laydate-set-ym'\r\n }), spanY = lay.elem('span'), spanM = lay.elem('span');\r\n elem.appendChild(spanY);\r\n elem.appendChild(spanM);\r\n return elem;\r\n }(), function(){ //下一月\r\n var elem = lay.elem('i', {\r\n \"class\": 'layui-icon laydate-icon laydate-next-m'\r\n });\r\n elem.innerHTML = '';\r\n return elem;\r\n }(), function(){ //下一年\r\n var elem = lay.elem('i', {\r\n \"class\": 'layui-icon laydate-icon laydate-next-y'\r\n });\r\n elem.innerHTML = '';\r\n return elem;\r\n }()]\r\n\r\n //日历内容区域\r\n ,divContent = lay.elem('div', {\r\n \"class\": 'layui-laydate-content'\r\n })\r\n ,table = lay.elem('table')\r\n ,thead = lay.elem('thead'), theadTr = lay.elem('tr');\r\n\r\n //生成年月选择\r\n lay.each(headerChild, function(i, item){\r\n divHeader.appendChild(item);\r\n });\r\n\r\n //生成表格\r\n thead.appendChild(theadTr);\r\n lay.each(new Array(6), function(i){ //表体\r\n var tr = table.insertRow(0);\r\n lay.each(new Array(7), function(j){\r\n if(i === 0){\r\n var th = lay.elem('th');\r\n th.innerHTML = lang.weeks[(j + options.weekStart) % 7];\r\n theadTr.appendChild(th);\r\n }\r\n tr.insertCell(j);\r\n });\r\n });\r\n table.insertBefore(thead, table.children[0]); //表头\r\n divContent.appendChild(table);\r\n\r\n elemMain[i] = lay.elem('div', {\r\n \"class\": ELEM_MAIN + ' laydate-main-list-'+ i\r\n });\r\n\r\n elemMain[i].appendChild(divHeader);\r\n elemMain[i].appendChild(divContent);\r\n\r\n elemHeader.push(headerChild);\r\n elemCont.push(divContent);\r\n elemTable.push(table);\r\n });\r\n\r\n //生成底部栏\r\n lay(divFooter).html(function(){\r\n var html = [], btns = [];\r\n if(options.type === 'datetime'){\r\n html.push(''+ lang.timeTips +'');\r\n }\r\n if(!(!options.range && options.type === 'datetime') || options.fullPanel){\r\n html.push('')\r\n }\r\n\r\n lay.each(options.btns, function(i, item){\r\n var title = lang.tools[item] || 'btn';\r\n if(options.range && item === 'now') return;\r\n if(isStatic && item === 'clear') title = options.lang === 'cn' ? '重置' : 'Reset';\r\n btns.push(''+ title +'');\r\n });\r\n html.push('');\r\n return html.join('');\r\n }());\r\n\r\n // 生成快捷键栏\r\n if (options.shortcuts) {\r\n elem.appendChild(divShortcut);\r\n lay(divShortcut).html(function () {\r\n var shortcutBtns = [];\r\n lay.each(options.shortcuts, function (i, item) {\r\n shortcutBtns.push('
          • '+item.text+'
          • ')\r\n })\r\n return shortcutBtns.join('');\r\n }()).find('li').on('click', function (event) {\r\n var btnSetting = options.shortcuts[this.dataset['index']] || {};\r\n var value = (typeof btnSetting.value === 'function'\r\n ? btnSetting.value()\r\n : btnSetting.value) || [];\r\n if (!layui.isArray(value)) {\r\n value = [value];\r\n }\r\n var type = options.type;\r\n lay.each(value, function (i, item) {\r\n var dateTime = [options.dateTime, that.endDate][i];\r\n if (type === 'time' && layui.type(item) !== 'date') {\r\n if (that.EXP_IF.test(item)) {\r\n item = (item.match(that.EXP_SPLIT) || []).slice(1);\r\n lay.extend(dateTime, {hours: item[0] | 0, minutes: item[2] | 0, seconds: item[4] | 0})\r\n }\r\n } else {\r\n lay.extend(dateTime, that.systemDate(layui.type(item) === 'date' ? item : new Date(item)))\r\n }\r\n\r\n if (type === 'time' || type === 'datetime') {\r\n that[['startTime', 'endTime'][i]] = {\r\n hours: dateTime.hours,\r\n minutes: dateTime.minutes,\r\n seconds: dateTime.seconds,\r\n }\r\n }\r\n if (i === 0) { // 第一个值作为startDate\r\n that.startDate = lay.extend({}, dateTime);\r\n } else {\r\n that.endState = true;\r\n }\r\n if (type === 'year' || type === 'month' || type === 'time') {\r\n that.listYM[i] = [dateTime.year, dateTime.month + 1];\r\n } else if (i) {\r\n that.autoCalendarModel.auto && that.autoCalendarModel();\r\n }\r\n });\r\n that.checkDate('limit').calendar(null, null, 'init');\r\n\r\n var timeBtn = lay(that.footer).find('.'+ ELEM_TIME_BTN).removeClass(DISABLED);\r\n timeBtn && timeBtn.attr('lay-type') === 'date' && timeBtn[0].click();\r\n that.done(null, 'change');\r\n\r\n lay(this).addClass(THIS);\r\n\r\n // 自动确认\r\n if(options.position !== 'static'){\r\n that.setValue(that.parse()).done().remove();\r\n }\r\n /*\r\n if (options.position !== 'static' && !options.range && options.autoConfirm) {\r\n if (type === 'date') {\r\n that.choose(lay(elem).find('td.layui-this'))\r\n } else if (type === 'year' || type === 'month') {\r\n if(lay(elemMain[0]).find('.' + ELEM_MAIN + ' li.' + THIS + ':not(.laydate-disabled)')[0]) {\r\n that.setValue(that.parse()).done().remove();\r\n }\r\n }\r\n }\r\n */\r\n })\r\n }\r\n\r\n //插入到主区域\r\n lay.each(elemMain, function(i, main){\r\n elem.appendChild(main);\r\n });\r\n options.showBottom && elem.appendChild(divFooter);\r\n\r\n // 生成自定义主题\r\n var style = lay.elem('style');\r\n var styleText = [];\r\n var colorTheme;\r\n var isPrimaryColor = true;\r\n lay.each(options.theme, function (index, theme) {\r\n // 主色\r\n if(isPrimaryColor && /^#/.test(theme)){\r\n colorTheme = true;\r\n isPrimaryColor = false;\r\n styleText.push([\r\n '#{{id}} .layui-laydate-header{background-color:{{theme}};}',\r\n '#{{id}} li.layui-this,#{{id}} td.layui-this>div{background-color:{{theme}} !important;}',\r\n options.theme.indexOf('circle') !== -1 ? '' : '#{{id}} .layui-this{background-color:{{theme}} !important;}',\r\n '#{{id}} .laydate-day-now{color:{{theme}} !important;}',\r\n '#{{id}} .laydate-day-now:after{border-color:{{theme}} !important;}'\r\n ].join('').replace(/{{id}}/g, that.elemID).replace(/{{theme}}/g, theme));\r\n return;\r\n }\r\n // 第二个自定义颜色作为辅色\r\n if(!isPrimaryColor && /^#/.test(theme)){\r\n styleText.push([\r\n '#{{id}} .laydate-selected>div{background-color:{{theme}} !important;}',\r\n '#{{id}} .laydate-selected:hover>div{background-color:{{theme}} !important;}'\r\n ].join('').replace(/{{id}}/g, that.elemID).replace(/{{theme}}/g, theme));\r\n }\r\n });\r\n //快捷栏样式\r\n if (options.shortcuts && options.range) {\r\n styleText.push('#{{id}}.layui-laydate-range{width: 628px;}'.replace(/{{id}}/g, that.elemID))\r\n }\r\n if (styleText.length) {\r\n styleText = styleText.join('');\r\n if('styleSheet' in style){\r\n style.setAttribute('type', 'text/css');\r\n style.styleSheet.cssText = styleText;\r\n } else {\r\n style.innerHTML = styleText;\r\n }\r\n\r\n colorTheme && lay(elem).addClass('laydate-theme-molv');\r\n elem.appendChild(style);\r\n }\r\n\r\n //移除上一个控件\r\n that.remove(Class.thisElemDate);\r\n\r\n //记录当前执行的实例索引\r\n laydate.thisId = options.id;\r\n\r\n //如果是静态定位,则插入到指定的容器中,否则,插入到body\r\n isStatic ? options.elem.append(elem) : (\r\n document.body.appendChild(elem)\r\n ,that.position() //定位\r\n );\r\n\r\n var shade = options.shade ? ('
            ') : '';\r\n elem.insertAdjacentHTML('beforebegin', shade);\r\n\r\n that.checkDate().calendar(null, 0, 'init'); //初始校验\r\n that.changeEvent(); //日期切换\r\n\r\n Class.thisElemDate = that.elemID;\r\n\r\n that.renderAdditional()\r\n typeof options.ready === 'function' && options.ready(lay.extend({}, options.dateTime, {\r\n month: options.dateTime.month + 1\r\n }));\r\n\r\n that.preview();\r\n };\r\n\r\n //控件移除\r\n Class.prototype.remove = function(prev){\r\n var that = this\r\n ,options = that.config\r\n ,elem = lay('#'+ (prev || that.elemID));\r\n if(!elem[0]) return that;\r\n\r\n if(!elem.hasClass(ELEM_STATIC)){\r\n that.checkDate(function(){\r\n elem.remove();\r\n //delete options.dateTime;\r\n delete that.startDate;\r\n delete that.endDate;\r\n delete that.endState;\r\n delete that.startTime;\r\n delete that.endTime;\r\n delete laydate.thisId;\r\n typeof options.close === 'function' && options.close(that);\r\n });\r\n }\r\n lay('.' + ELEM_SHADE).remove();\r\n return that;\r\n };\r\n\r\n //定位算法\r\n Class.prototype.position = function(){\r\n var that = this\r\n ,options = that.config;\r\n lay.position(options.elem[0], that.elem, {\r\n position: options.position\r\n });\r\n return that;\r\n };\r\n\r\n // 提示\r\n Class.prototype.hint = function(opts){\r\n var that = this;\r\n var options = that.config;\r\n var div = lay.elem('div', {\r\n \"class\": ELEM_HINT\r\n });\r\n\r\n if(!that.elem) return;\r\n\r\n // 兼容旧版参数\r\n if(typeof opts === 'object'){\r\n opts = opts || {};\r\n } else {\r\n opts = {\r\n content: opts\r\n }\r\n }\r\n\r\n div.innerHTML = opts.content || '';\r\n lay(that.elem).find('.'+ ELEM_HINT).remove();\r\n that.elem.appendChild(div);\r\n\r\n clearTimeout(that.hinTimer);\r\n that.hinTimer = setTimeout(function(){\r\n lay(that.elem).find('.'+ ELEM_HINT).remove();\r\n }, 'ms' in opts ? opts.ms : 3000);\r\n };\r\n\r\n //获取递增/减后的年月\r\n Class.prototype.getAsYM = function(Y, M, type){\r\n type ? M-- : M++;\r\n if(M < 0){\r\n M = 11;\r\n Y--;\r\n }\r\n if(M > 11){\r\n M = 0;\r\n Y++;\r\n }\r\n return [Y, M];\r\n };\r\n\r\n //系统日期\r\n Class.prototype.systemDate = function(newDate){\r\n var thisDate = newDate || new Date();\r\n return {\r\n year: thisDate.getFullYear() //年\r\n ,month: thisDate.getMonth() //月\r\n ,date: thisDate.getDate() //日\r\n ,hours: newDate ? newDate.getHours() : 0 //时\r\n ,minutes: newDate ? newDate.getMinutes() : 0 //分\r\n ,seconds: newDate ? newDate.getSeconds() : 0 //秒\r\n }\r\n };\r\n\r\n //日期校验\r\n Class.prototype.checkDate = function(fn){\r\n var that = this\r\n ,thisDate = new Date()\r\n ,options = that.config\r\n ,lang = that.lang()\r\n ,dateTime = options.dateTime = options.dateTime || that.systemDate()\r\n ,thisMaxDate, error\r\n\r\n ,elem = options.elem[0]\r\n ,valType = that.isInput(elem) ? 'val' : 'html'\r\n ,value = function(){\r\n //如果传入了开始和结束日期的 input 对象,则将其拼接为日期范围字符\r\n if(that.rangeElem){\r\n var vals = [that.rangeElem[0].val(), that.rangeElem[1].val()];\r\n\r\n if(vals[0] && vals[1]){\r\n return vals.join(' ' + that.rangeStr + ' ');\r\n }\r\n }\r\n return that.isInput(elem)\r\n ? elem.value\r\n : (options.position === 'static' ? '' : lay(elem).attr('lay-date'));\r\n }()\r\n\r\n //校验日期有效数字\r\n ,checkValid = function(dateTime){\r\n if (!dateTime) {\r\n return;\r\n }\r\n if(dateTime.year > LIMIT_YEAR[1]) dateTime.year = LIMIT_YEAR[1], error = true; //不能超过20万年\r\n if(dateTime.month > 11) dateTime.month = 11, error = true;\r\n if(dateTime.seconds > 59) dateTime.seconds = 0, dateTime.minutes++, error = true;\r\n if(dateTime.minutes > 59) dateTime.minutes = 0, dateTime.hours++, error = true;\r\n if(dateTime.hours > 23) dateTime.hours = 0, error = true;\r\n\r\n //计算当前月的最后一天\r\n thisMaxDate = laydate.getEndDate(dateTime.month + 1, dateTime.year);\r\n if(dateTime.date > thisMaxDate) dateTime.date = thisMaxDate, error = true;\r\n }\r\n\r\n //获得初始化日期值\r\n ,initDate = function(dateTime, value, index){\r\n var startEnd = ['startTime', 'endTime'];\r\n value = (value.match(that.EXP_SPLIT) || []).slice(1);\r\n index = index || 0;\r\n\r\n if(options.range){\r\n that[startEnd[index]] = that[startEnd[index]] || {};\r\n }\r\n lay.each(that.format, function(i, item){\r\n var thisv = parseFloat(value[i]);\r\n if(value[i].length < item.length) error = true;\r\n if(/yyyy|y/.test(item)){ //年\r\n if(thisv < LIMIT_YEAR[0]) thisv = LIMIT_YEAR[0], error = true; //年不能低于100年\r\n dateTime.year = thisv;\r\n } else if(/MM|M/.test(item)){ //月\r\n if(thisv < 1) thisv = 1, error = true;\r\n dateTime.month = thisv - 1;\r\n } else if(/dd|d/.test(item)){ //日\r\n if(thisv < 1) thisv = 1, error = true;\r\n dateTime.date = thisv;\r\n } else if(/HH|H/.test(item)){ //时\r\n if (thisv < 0) thisv = 0, error = true;\r\n if (thisv > 23) thisv = 23, error = true;\r\n dateTime.hours = thisv;\r\n options.range && (that[startEnd[index]].hours = thisv);\r\n } else if(/mm|m/.test(item)){ //分\r\n if (thisv < 0) thisv = 0, error = true;\r\n if (thisv > 59) thisv = 59, error = true;\r\n dateTime.minutes = thisv;\r\n options.range && (that[startEnd[index]].minutes = thisv);\r\n } else if(/ss|s/.test(item)){ //秒\r\n if (thisv < 0) thisv = 0, error = true;\r\n if (thisv > 59) thisv = 59, error = true;\r\n dateTime.seconds = thisv;\r\n options.range && (that[startEnd[index]].seconds = thisv);\r\n }\r\n });\r\n checkValid(dateTime);\r\n };\r\n\r\n if(fn === 'limit') {\r\n if (options.range) {\r\n checkValid(that.rangeLinked ? that.startDate : dateTime); // 校验开始时间\r\n that.endDate && checkValid(that.endDate); // 校验结束时间\r\n } else {\r\n checkValid(dateTime);\r\n }\r\n return that;\r\n }\r\n\r\n value = value || options.value;\r\n if(typeof value === 'string'){\r\n value = value.replace(/\\s+/g, ' ').replace(/^\\s|\\s$/g, '');\r\n }\r\n\r\n //如果开启范围,则计算结束日期\r\n var getEndDate = function(){\r\n if(options.range){\r\n that.endDate = that.endDate || lay.extend({}, options.dateTime, function(){\r\n var obj = {}\r\n ,dateTime = options.dateTime\r\n ,EYM = that.getAsYM(dateTime.year, dateTime.month);\r\n\r\n //初始右侧面板的年月\r\n if(options.type === 'year'){\r\n obj.year = dateTime.year + 1;\r\n } else if(options.type !== 'time'){\r\n obj.year = EYM[0];\r\n obj.month = EYM[1];\r\n }\r\n\r\n //初始右侧面板的时间\r\n if(options.type === 'datetime' || options.type === 'time'){\r\n obj.hours = 23;\r\n obj.minutes = obj.seconds = 59;\r\n }\r\n\r\n return obj;\r\n }());\r\n }\r\n };\r\n getEndDate();\r\n\r\n if(typeof value === 'string' && value){\r\n if(that.EXP_IF.test(value)){ //校验日期格式\r\n if(options.range){\r\n value = value.split(' '+ that.rangeStr +' ');\r\n lay.each([options.dateTime, that.endDate], function(i, item){\r\n initDate(item, value[i], i);\r\n });\r\n } else {\r\n initDate(dateTime, value);\r\n }\r\n } else {\r\n //格式不合法\r\n that.hint(lang.formatError[0] + (\r\n options.range ? (options.format + ' '+ that.rangeStr +' ' + options.format) : options.format\r\n ) + lang.formatError[1]);\r\n error = true;\r\n }\r\n } else if(value && layui.type(value) === 'date'){ //若值为日期对象\r\n options.dateTime = that.systemDate(value);\r\n } else {\r\n //重置开始日期\r\n options.dateTime = that.systemDate();\r\n delete that.startTime;\r\n\r\n //重置结束日期\r\n delete that.endDate; //删除原有的结束日期\r\n getEndDate(); //并重新获得新的结束日期\r\n delete that.endTime;\r\n }\r\n\r\n //从日期范围表单中获取初始值\r\n (function(){\r\n if(that.rangeElem){\r\n var vals = [that.rangeElem[0].val(), that.rangeElem[1].val()]\r\n ,arrDate = [options.dateTime, that.endDate];\r\n lay.each(vals, function(_i, _v){\r\n if(that.EXP_IF_ONE.test(_v)){ //校验日期格式\r\n initDate(arrDate[_i], _v, _i);\r\n }\r\n });\r\n }\r\n })();\r\n\r\n // 校验日期有效数字\r\n checkValid(dateTime);\r\n if(options.range) checkValid(that.endDate);\r\n\r\n // 如果初始值格式错误,则纠正初始值\r\n if(error && value){\r\n that.setValue(\r\n options.range ? (that.endDate ? that.parse() : '') : that.parse()\r\n );\r\n }\r\n\r\n //如果当前日期不在设定的最大小日期区间,则自动纠正在可选区域\r\n //校验主面板是否在可选日期区间\r\n var minMaxError;\r\n if(that.getDateTime(dateTime) > that.getDateTime(options.max)){ //若超出最大日期\r\n dateTime = options.dateTime = lay.extend({}, options.max);\r\n minMaxError = true;\r\n } else if(that.getDateTime(dateTime) < that.getDateTime(options.min)){ //若少于最小日期\r\n dateTime = options.dateTime = lay.extend({}, options.min);\r\n minMaxError = true;\r\n }\r\n\r\n //校验右侧面板是否在可选日期区间\r\n if(options.range){\r\n if(that.getDateTime(that.endDate) < that.getDateTime(options.min) || that.getDateTime(that.endDate) > that.getDateTime(options.max)){\r\n that.endDate = lay.extend({}, options.max);\r\n minMaxError = true;\r\n }\r\n // 有时间范围的情况下初始化startTime和endTime\r\n that.startTime = {\r\n hours: options.dateTime.hours,\r\n minutes: options.dateTime.minutes,\r\n seconds: options.dateTime.seconds,\r\n }\r\n that.endTime = {\r\n hours: that.endDate.hours,\r\n minutes: that.endDate.minutes,\r\n seconds: that.endDate.seconds,\r\n }\r\n // 如果是年月范围,将对应的日期统一成当月的1日进行比较,避免出现同一个月但是开始日期大于结束日期的情况\r\n if (options.type === 'month') {\r\n options.dateTime.date = 1;\r\n that.endDate.date = 1;\r\n }\r\n }\r\n\r\n // 初始值不在最大最小范围内\r\n if(minMaxError && value){\r\n that.setValue(that.parse());\r\n that.hint('value ' + lang.invalidDate + lang.formatError[1]);\r\n }\r\n\r\n // 初始赋值 startDate,endState\r\n that.startDate = that.startDate || value && lay.extend({}, options.dateTime); // 有默认值才初始化startDate\r\n that.autoCalendarModel.auto && that.autoCalendarModel();\r\n that.endState = !options.range || !that.rangeLinked || !!(that.startDate && that.endDate); // 初始化选中范围状态\r\n\r\n fn && fn();\r\n return that;\r\n };\r\n\r\n /**\r\n * 渲染备注\r\n * @param {JQuery} tdElem td 元素\r\n * @param {[number, number, number]} YMD 年月日\r\n * @param {object | string} markers 备注信息\r\n */\r\n Class.prototype.markRender = function(tdElem, YMD, markers){\r\n var markText;\r\n\r\n if(typeof markers === 'object'){\r\n lay.each(markers || {}, function(key, title){\r\n var keys = key.split('-');\r\n if((keys[0] == YMD[0] || keys[0] == 0) //每年的每月\r\n && (keys[1] == YMD[1] || keys[1] == 0) //每月的每日\r\n && keys[2] == YMD[2]){ //特定日\r\n markText = title || YMD[2];\r\n }\r\n });\r\n }else if(typeof markers === 'string'){\r\n markText = markers || YMD[2];\r\n }\r\n\r\n markText && tdElem.find('div').html(''+ markText +'');\r\n }\r\n\r\n /**\r\n * 公历重要日期与自定义备注\r\n * @param {JQuery} td \r\n * @param {[number, number, number]} YMD \r\n * @returns Class\r\n */\r\n Class.prototype.mark = function(td, YMD){\r\n var that = this;\r\n var options = that.config;\r\n\r\n var render = function(markers){\r\n that.markRender(td, YMD, markers);\r\n }\r\n\r\n if(options.calendar && options.lang === 'cn'){\r\n render(that.markerOfChineseFestivals);\r\n } \r\n\r\n if(typeof options.mark === 'function'){\r\n options.mark({year: YMD[0], month: YMD[1], date: YMD[2]}, render);\r\n }else if(typeof options.mark === 'object'){\r\n render(options.mark);\r\n }\r\n\r\n return that;\r\n };\r\n\r\n /**\r\n * 渲染法定节假日或补假上班标记\r\n * @param {JQuery} tdElem td 元素\r\n * @param {[number, number, number]} YMD 年月日\r\n * @param {[Array, Array] | string} markers 标记信息\r\n */\r\n Class.prototype.holidaysRender = function(tdElem, YMD, markers){\r\n var type = ['holidays', 'workdays'];\r\n\r\n var isEquals = function(ymdStr1, ymdStr2){\r\n var ymd1 = ymdStr1.split('-');\r\n var ymd2 = ymdStr2.split('-');\r\n\r\n lay.each(ymd1, function(i,v){\r\n ymd1[i] = parseInt(v, 10);\r\n })\r\n lay.each(ymd2, function(i,v){\r\n ymd2[i] = parseInt(v, 10);\r\n })\r\n \r\n return ymd1.join('-') === ymd2.join('-');\r\n }\r\n\r\n var insertHtml = function(el, type, text){\r\n el.find('div').html([\r\n '',\r\n text,\r\n ''\r\n ].join(''));\r\n }\r\n \r\n if(layui.type(markers) === 'array'){\r\n lay.each(markers, function(idx, item) {\r\n lay.each(item, function(i, dayStr) {\r\n if(isEquals(dayStr, tdElem.attr('lay-ymd'))){\r\n insertHtml(tdElem, type[idx], YMD[2])\r\n }\r\n });\r\n });\r\n }else if(typeof markers === 'string'){\r\n if(type.indexOf(markers) !== -1){\r\n insertHtml(tdElem, markers, YMD[2])\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * 标注法定节假日或补假上班\r\n * @param {JQuery} td \r\n * @param {[number, number, number]} YMD \r\n * @returns Class\r\n */\r\n Class.prototype.holidays = function(td, YMD) {\r\n var that = this;\r\n var options = that.config;\r\n\r\n var render = function(markers){\r\n that.holidaysRender(td, YMD, markers);\r\n }\r\n\r\n if(typeof options.holidays === 'function'){\r\n options.holidays({year: YMD[0], month: YMD[1], date: YMD[2]}, render);\r\n }else if(layui.type(options.holidays) === 'array'){\r\n render(options.holidays);\r\n }\r\n\r\n return that;\r\n };\r\n\r\n /**\r\n * 自定义单元格\r\n * @param {HTMLElement|Array} el - 单元格元素\r\n * @param {{year:number, month:number, date:number}} dateObj - 当前单元格对应的日期信息\r\n * @param {'year' | 'month' | 'date'} panelMode - 面板模式\r\n * @returns \r\n */\r\n Class.prototype.cellRender = function(el, dateObj, panelMode){\r\n var that = this;\r\n var options = that.config;\r\n\r\n if(typeof options.cellRender === 'function'){\r\n var render = function(content){\r\n if(typeof content === 'string'){\r\n lay(el).html(content);\r\n }else if(typeof content === 'object'){\r\n lay(el).html('').append(lay(content)[0]);\r\n }\r\n }\r\n options.cellRender(dateObj, render, {originElem: el, type: panelMode})\r\n }\r\n\r\n return that;\r\n }\r\n\r\n /**\r\n * 给定年份的开始日期\r\n * @param {Date} date \r\n */\r\n Class.prototype.startOfYear = function(date){\r\n var newDate = new Date(date);\r\n newDate.setFullYear(newDate.getFullYear(), 0, 1);\r\n newDate.setHours(0, 0, 0, 0);\r\n return newDate;\r\n }\r\n\r\n /**\r\n * 给定年份的结束日期\r\n * @param {Date} date\r\n */\r\n Class.prototype.endOfYear = function(date){\r\n var newDate = new Date(date);\r\n var year = newDate.getFullYear();\r\n newDate.setFullYear(year + 1, 0, 0);\r\n newDate.setHours(23, 59, 59, 999);\r\n return newDate;\r\n }\r\n\r\n /**\r\n * 给定月份的开始日期\r\n * @param {Date} date \r\n */\r\n Class.prototype.startOfMonth = function(date){\r\n var newDate = new Date(date);\r\n newDate.setDate(1);\r\n newDate.setHours(0, 0, 0, 0);\r\n return newDate;\r\n }\r\n\r\n /**\r\n * 给定月份的结束日期\r\n * @param {Date} date \r\n */\r\n Class.prototype.endOfMonth = function(date){\r\n var newDate = new Date(date);\r\n var month = newDate.getMonth();\r\n newDate.setFullYear(newDate.getFullYear(), month + 1, 0);\r\n newDate.setHours(23, 59, 59, 999);\r\n return newDate;\r\n }\r\n\r\n /**\r\n * 将指定的天数添加到给定日期\r\n * @param {Date} date 要更改的日期\r\n * @param {number} amount 天数\r\n */\r\n Class.prototype.addDays = function(date, amount){\r\n var newDate = new Date(date);\r\n if(!amount) return newDate;\r\n newDate.setDate(newDate.getDate() + amount);\r\n return newDate;\r\n }\r\n\r\n /**\r\n * 不可选取的年或月。年或月中的所有日期都禁用时,才判定为不可选取。\r\n * @param {Date} date 要检测的年或月\r\n * @param {'year' | 'month'} type 面板类型\r\n * @param {'start' | 'end'} position 面板位置\r\n */\r\n Class.prototype.isDisabledYearOrMonth = function(date, type, position){\r\n var that = this;\r\n var options = that.config;\r\n var millisecondsInDay = 24 * 60 * 60 * 1000;\r\n\r\n var startDay = type === 'year' ? that.startOfYear(date) : that.startOfMonth(date);\r\n var endDay = type === 'year' ? that.endOfYear(date) : that.endOfMonth(date);\r\n var numOfDays = Math.floor((endDay.getTime() - startDay.getTime()) / millisecondsInDay) + 1;\r\n var disabledCount = 0;\r\n \r\n for(var i = 0; i < numOfDays; i++){\r\n var day = that.addDays(startDay, i);\r\n if(options.disabledDate.call(options, day, position)){\r\n disabledCount++;\r\n }\r\n }\r\n\r\n return disabledCount === numOfDays;\r\n }\r\n\r\n /**\r\n * @typedef limitOptions\r\n * @prop {JQuery} [elem] - 检测的元素, 例如面板中年月日时分秒元素,“现在”,“确认” 按钮等\r\n * @prop {number} [index] - 元素集合中,当前检测元素的索引,years:0,month:0,date:0-41,hms:0\r\n * @prop {['hours', 'minutes', 'seconds'] | ['hours', 'minutes'] | ['hours']} [time] - 是否比较时分秒\r\n * @prop {'year'|'month'|string} [type] - 面板类型?\r\n * @prop {0 | 1} [rangeType] - 面板索引, 0 表示 start, 1 表示 end\r\n * @prop {Partial<{year:number,month: number,date:number,hours:number,minutes:number,seconds:number}>} [date] - 检测的日期时间对象\r\n * @prop {'date' | 'time' | 'datetime'} disabledType - 禁用类型,按钮应使用 datetime\r\n */\r\n /**\r\n * 不可选取的日期\r\n * @param {number} date 当前检测的日期的时间戳\r\n * @param {limitOptions} opts\r\n * @returns {boolean}\r\n */\r\n Class.prototype.isDisabledDate = function(date, opts){\r\n opts = opts || {};\r\n\r\n var that = this;\r\n var options = that.config;\r\n var position = options.range ? (opts.rangeType === 0 ? 'start' : 'end') : 'start';\r\n \r\n if(!options.disabledDate) return false;\r\n if(options.type === 'time') return false;\r\n if(!(opts.disabledType === 'date' || opts.disabledType === 'datetime')) return false;\r\n\r\n // 不需要时分秒\r\n var normalizedDate = new Date(date);\r\n normalizedDate.setHours(0, 0, 0, 0);\r\n \r\n return opts.type === 'year' || opts.type === 'month'\r\n ? that.isDisabledYearOrMonth(normalizedDate, opts.type, position)\r\n : options.disabledDate.call(options, normalizedDate, position);\r\n }\r\n\r\n /**\r\n * 不可选取的时间\r\n * @param {number} date 当前检测的日期的时间戳\r\n * @param {limitOptions} opts\r\n * @returns {boolean}\r\n */\r\n Class.prototype.isDisabledTime = function(date, opts){\r\n opts = opts || {};\r\n\r\n var that = this;\r\n var options = that.config;\r\n var position = options.range ? (opts.rangeType === 0 ? 'start' : 'end') : 'start';\r\n \r\n if(!options.disabledTime) return false;\r\n if(!(options.type === \"time\" || options.type === \"datetime\")) return false;\r\n if(!(opts.disabledType === 'time' || opts.disabledType === 'datetime')) return false;\r\n\r\n var isDisabledItem = function(compareVal, rangeFn, rangeFnParam){\r\n return function(){\r\n return (typeof rangeFn === 'function' && rangeFn.apply(options, rangeFnParam) || []).indexOf(compareVal) !== -1;\r\n } \r\n }\r\n\r\n var dateObj = that.systemDate(new Date(date));\r\n var disabledTime = options.disabledTime.call(options, that.newDate(dateObj), position) || {};\r\n\r\n // 面板中的时分秒 HTML 元素需要分别检测是否禁用\r\n // 按钮检测任意一项是否禁用即可\r\n return opts.disabledType === 'datetime'\r\n ? isDisabledItem(dateObj.hours, disabledTime.hours)()\r\n || isDisabledItem(dateObj.minutes, disabledTime.minutes, [dateObj.hours])()\r\n || isDisabledItem(dateObj.seconds, disabledTime.seconds, [dateObj.hours, dateObj.minutes])()\r\n : [isDisabledItem(dateObj.hours, disabledTime.hours),\r\n isDisabledItem(dateObj.minutes, disabledTime.minutes, [dateObj.hours]),\r\n isDisabledItem(dateObj.seconds, disabledTime.seconds, [dateObj.hours, dateObj.minutes])][opts.time.length - 1]();\r\n }\r\n\r\n /**\r\n * 不可选取的日期时间\r\n * @param {number} timestamp 当前检测的日期的时间戳\r\n * @param {limitOptions} opts \r\n * @returns \r\n */\r\n Class.prototype.isDisabledDateTime = function(timestamp, opts){\r\n opts = opts || {};\r\n\r\n var that = this;\r\n var options = that.config;\r\n\r\n return that.isDisabledDate(timestamp, opts) || that.isDisabledTime(timestamp, opts);\r\n }\r\n\r\n\r\n /**\r\n * 无效日期范围的标记\r\n * @param {limitOptions} opts \r\n * \r\n */\r\n Class.prototype.limit = function(opts){\r\n opts = opts || {};\r\n\r\n var that = this;\r\n var options = that.config;\r\n var timestamp = {}\r\n var dateTime = opts.index > (opts.time ? 0 : 41) ? that.endDate : options.dateTime;\r\n var isOut;\r\n\r\n lay.each({\r\n now: lay.extend({}, dateTime, opts.date || {})\r\n ,min: options.min\r\n ,max: options.max\r\n }, function(key, item){\r\n timestamp[key] = that.newDate(lay.extend({\r\n year: item.year\r\n ,month: opts.type === 'year' ? 0 : item.month // 年份的时候只比较年\r\n ,date: (opts.type === 'year' || opts.type === 'month') ? 1 : item.date // 年月只比较年月不与最大最小比日期\r\n }, function(){\r\n var hms = {};\r\n lay.each(opts.time, function(i, keys){\r\n hms[keys] = item[keys];\r\n });\r\n return hms;\r\n }())).getTime(); //time:是否比较时分秒\r\n });\r\n\r\n isOut = timestamp.now < timestamp.min || timestamp.now > timestamp.max || that.isDisabledDateTime(timestamp.now, opts);\r\n opts.elem && opts.elem[isOut ? 'addClass' : 'removeClass'](DISABLED);\r\n\r\n return isOut;\r\n };\r\n\r\n //当前日期对象\r\n Class.prototype.thisDateTime = function(index){\r\n var that = this\r\n ,options = that.config;\r\n return index ? that.endDate: options.dateTime;\r\n };\r\n\r\n //日历表\r\n Class.prototype.calendar = function(value, index, type){\r\n index = index ? 1 : 0;\r\n var that = this\r\n ,options = that.config\r\n ,dateTime = value || that.thisDateTime(index)\r\n ,thisDate = new Date(), startWeek, prevMaxDate, thisMaxDate\r\n ,lang = that.lang()\r\n\r\n ,isAlone = options.type !== 'date' && options.type !== 'datetime'\r\n ,tds = lay(that.table[index]).find('td')\r\n ,elemYM = lay(that.elemHeader[index][2]).find('span');\r\n\r\n if(dateTime.year < LIMIT_YEAR[0]) dateTime.year = LIMIT_YEAR[0], that.hint(lang.invalidDate);\r\n if(dateTime.year > LIMIT_YEAR[1]) dateTime.year = LIMIT_YEAR[1], that.hint(lang.invalidDate);\r\n\r\n //记录初始值\r\n if(!that.firstDate){\r\n that.firstDate = lay.extend({}, dateTime);\r\n }\r\n\r\n //计算当前月第一天的星期\r\n thisDate.setFullYear(dateTime.year, dateTime.month, 1);\r\n startWeek = (thisDate.getDay() + (7 - options.weekStart)) % 7;\r\n\r\n prevMaxDate = laydate.getEndDate(dateTime.month || 12, dateTime.year); //计算上个月的最后一天\r\n thisMaxDate = laydate.getEndDate(dateTime.month + 1, dateTime.year); //计算当前月的最后一天\r\n\r\n //赋值日\r\n lay.each(tds, function(index_, item){\r\n var YMD = [dateTime.year, dateTime.month], st;\r\n item = lay(item);\r\n item.removeAttr(\"class\");\r\n if(index_ < startWeek){\r\n st = prevMaxDate - startWeek + index_;\r\n item.addClass('laydate-day-prev');\r\n YMD = that.getAsYM(dateTime.year, dateTime.month, 'sub');\r\n } else if(index_ >= startWeek && index_ < thisMaxDate + startWeek){\r\n st = index_ - startWeek;\r\n if (!that.rangeLinked) {\r\n st + 1 === dateTime.date && item.addClass(THIS);\r\n }\r\n } else {\r\n st = index_ - thisMaxDate - startWeek;\r\n item.addClass('laydate-day-next');\r\n YMD = that.getAsYM(dateTime.year, dateTime.month);\r\n }\r\n YMD[1]++;\r\n YMD[2] = st + 1;\r\n item.attr('lay-ymd', YMD.join('-')).html('
            ' + YMD[2] + '
            ');\r\n that.mark(item, YMD).holidays(item, YMD).limit({\r\n elem: item,\r\n date: {\r\n year: YMD[0],\r\n month: YMD[1] - 1,\r\n date: YMD[2]\r\n },\r\n index: index_,\r\n rangeType: index,\r\n disabledType: 'date' // 日面板,检测当前日期是否禁用\r\n });\r\n that.cellRender(item, {year: YMD[0], month: YMD[1], date: YMD[2]}, 'date');\r\n });\r\n\r\n //同步头部年月\r\n lay(elemYM[0]).attr('lay-ym', dateTime.year + '-' + (dateTime.month + 1));\r\n lay(elemYM[1]).attr('lay-ym', dateTime.year + '-' + (dateTime.month + 1));\r\n\r\n if(options.lang === 'cn'){\r\n lay(elemYM[0]).attr('lay-type', 'year').html(dateTime.year + ' 年')\r\n lay(elemYM[1]).attr('lay-type', 'month').html((dateTime.month + 1) + ' 月');\r\n } else {\r\n lay(elemYM[0]).attr('lay-type', 'month').html(lang.month[dateTime.month]);\r\n lay(elemYM[1]).attr('lay-type', 'year').html(dateTime.year);\r\n }\r\n\r\n //初始默认选择器\r\n if(isAlone){ //年、月等独立选择器\r\n if(options.range){\r\n if(value || type !== 'init'){ // 判断是否需要显示年月时间列表\r\n that.listYM = [\r\n [(that.startDate || options.dateTime).year, (that.startDate || options.dateTime).month + 1]\r\n ,[that.endDate.year, that.endDate.month + 1]\r\n ];\r\n that.list(options.type, 0).list(options.type, 1);\r\n\r\n //同步按钮可点状态\r\n options.type === 'time' ? that.setBtnStatus('时间'\r\n ,lay.extend({}, that.systemDate(), that.startTime)\r\n ,lay.extend({}, that.systemDate(), that.endTime)\r\n ) : that.setBtnStatus(true);\r\n }\r\n } else {\r\n that.listYM = [[dateTime.year, dateTime.month + 1]];\r\n that.list(options.type, 0);\r\n }\r\n }\r\n\r\n //初始赋值双日历\r\n if(options.range && type === 'init'){\r\n //执行渲染第二个日历\r\n if (that.rangeLinked) {\r\n var EYM = that.getAsYM(dateTime.year, dateTime.month, index ? 'sub' : null)\r\n that.calendar(lay.extend({}, dateTime, {\r\n year: EYM[0]\r\n ,month: EYM[1]\r\n }), 1 - index); // 渲染另外一个\r\n } else {\r\n that.calendar(null, 1 - index);\r\n }\r\n }\r\n\r\n // 通过检测当前有效日期,来设定底部按钮状态\r\n if(!options.range){\r\n var timeParams = ['hours', 'minutes', 'seconds'];\r\n\r\n // 现在按钮\r\n that.limit({\r\n elem: lay(that.footer).find(ELEM_NOW),\r\n date: that.systemDate(/^(datetime|time)$/.test(options.type) ? new Date() : null),\r\n index: 0,\r\n time: timeParams,\r\n disabledType: 'datetime' // 按钮,检测日期和时间\r\n });\r\n // 确认按钮\r\n that.limit({\r\n elem: lay(that.footer).find(ELEM_CONFIRM),\r\n index: 0,\r\n time: timeParams,\r\n disabledType: 'datetime' // 按钮,检测日期和时间\r\n });\r\n }\r\n\r\n //同步按钮可点状态\r\n that.setBtnStatus();\r\n\r\n // 重置快捷栏选中状态\r\n lay(that.shortcut).find('li.' + THIS).removeClass(THIS);\r\n\r\n //标记选择范围\r\n if(options.range && !isAlone && type !== 'init') that.stampRange();\r\n\r\n return that;\r\n };\r\n\r\n //生成年月时分秒列表\r\n Class.prototype.list = function(type, index){\r\n var that = this\r\n ,options = that.config\r\n ,dateTime = that.rangeLinked ? options.dateTime : [options.dateTime, that.endDate][index]\r\n ,lang = that.lang()\r\n ,isAlone = options.range && options.type !== 'date' && options.type !== 'datetime' //独立范围选择器\r\n\r\n ,ul = lay.elem('ul', {\r\n \"class\": ELEM_LIST + ' ' + ({\r\n year: 'laydate-year-list'\r\n ,month: 'laydate-month-list'\r\n ,time: 'laydate-time-list'\r\n })[type]\r\n })\r\n ,elemHeader = that.elemHeader[index]\r\n ,elemYM = lay(elemHeader[2]).find('span')\r\n ,elemCont = that.elemCont[index || 0]\r\n ,haveList = lay(elemCont).find('.'+ ELEM_LIST)[0]\r\n ,isCN = options.lang === 'cn'\r\n ,text = isCN ? '年' : ''\r\n\r\n ,listYM = that.listYM[index] || {}\r\n ,hms = ['hours', 'minutes', 'seconds']\r\n ,startEnd = ['startTime', 'endTime'][index];\r\n\r\n if(listYM[0] < 1) listYM[0] = 1;\r\n\r\n //生成年列表\r\n if(type === 'year'){\r\n var yearNum, startY = yearNum = listYM[0] - 7;\r\n if(startY < 1) startY = yearNum = 1;\r\n lay.each(new Array(15), function(i){\r\n var li = lay.elem('li', {\r\n 'lay-ym': yearNum\r\n })\r\n ,ymd = {\r\n year: yearNum\r\n ,month: 0\r\n ,date: 1\r\n };\r\n\r\n yearNum == listYM[0] && lay(li).addClass(THIS);\r\n li.innerHTML = yearNum + text;\r\n ul.appendChild(li);\r\n\r\n /*\r\n if(yearNum < that.firstDate.year){\r\n ymd.month = options.min.month;\r\n ymd.date = options.min.date;\r\n } else if(yearNum >= that.firstDate.year){\r\n ymd.month = options.max.month;\r\n ymd.date = options.max.date;\r\n }\r\n */\r\n\r\n that.limit({\r\n elem: lay(li),\r\n date: ymd,\r\n index: index,\r\n type: type,\r\n rangeType: index,\r\n disabledType: 'date' // 年面板,检测当前年份中的所有日期是否禁用\r\n });\r\n that.cellRender(li, {year: yearNum, month: 1, date: 1}, 'year');\r\n yearNum++;\r\n });\r\n\r\n lay(elemYM[isCN ? 0 : 1]).attr('lay-ym', (yearNum - 8) + '-' + listYM[1])\r\n .html((startY + text) + ' - ' + (yearNum - 1 + text));\r\n }\r\n\r\n //生成月列表\r\n else if(type === 'month'){\r\n lay.each(new Array(12), function(i){\r\n var li = lay.elem('li', {\r\n 'lay-ym': i\r\n })\r\n ,ymd = {\r\n year: listYM[0]\r\n ,month: i\r\n ,date: 1\r\n };\r\n\r\n i + 1 == listYM[1] && lay(li).addClass(THIS);\r\n li.innerHTML = lang.month[i] + (isCN ? '月' : '');\r\n ul.appendChild(li);\r\n\r\n /*\r\n if(listYM[0] < that.firstDate.year){\r\n ymd.date = options.min.date;\r\n } else if(listYM[0] >= that.firstDate.year){\r\n ymd.date = options.max.date;\r\n }\r\n */\r\n\r\n that.limit({\r\n elem: lay(li),\r\n date: ymd,\r\n index: index,\r\n type: type,\r\n rangeType: index,\r\n disabledType: 'date' // 月面板,检测当前月份中的所有日期是否禁用\r\n });\r\n that.cellRender(li, {year: listYM[0], month: i + 1, date: 1}, 'month');\r\n });\r\n\r\n lay(elemYM[isCN ? 0 : 1]).attr('lay-ym', listYM[0] + '-' + listYM[1])\r\n .html(listYM[0] + text);\r\n }\r\n\r\n //生成时间列表\r\n else if(type === 'time'){\r\n //检测时分秒状态是否在有效日期时间范围内\r\n var setTimeStatus = function(){\r\n lay(ul).find('ol').each(function(i, ol){\r\n lay(ol).find('li').each(function(ii, li){\r\n that.limit({\r\n elem: lay(li),\r\n date: [{\r\n hours: ii\r\n }, {\r\n hours: that[startEnd].hours\r\n ,minutes: ii\r\n }, {\r\n hours: that[startEnd].hours\r\n ,minutes: that[startEnd].minutes\r\n ,seconds: ii\r\n }][i],\r\n index: index,\r\n rangeType: index,\r\n disabledType: 'time', // 时间面板,分别检测时分秒列表是否禁用\r\n time: [\r\n ['hours'],\r\n ['hours', 'minutes'],\r\n ['hours', 'minutes', 'seconds']\r\n ][i]\r\n });\r\n });\r\n });\r\n if(!options.range){\r\n that.limit({\r\n elem: lay(that.footer).find(ELEM_CONFIRM),\r\n date: that[startEnd],\r\n index: 0,\r\n time: ['hours', 'minutes', 'seconds'],\r\n disabledType: 'datetime' // 确认按钮,检测时分秒列表任意一项是否禁用\r\n });\r\n }\r\n };\r\n\r\n var setTimeListVisibility = function(){\r\n var showHour = options.format.indexOf('H') !== -1;\r\n var showMinute = options.format.indexOf('m') !== -1;\r\n var showSecond = options.format.indexOf('s') !== -1;\r\n var liElem = ul.children;\r\n var hideCount = 0;\r\n\r\n lay.each([showHour, showMinute, showSecond], function(i, isShow){\r\n if(!isShow){\r\n liElem[i].className += ' layui-hide';\r\n hideCount++;\r\n }\r\n })\r\n ul.className += (' laydate-time-list-hide-' + hideCount);\r\n }\r\n\r\n //初始化时间对象\r\n if(options.range){\r\n if(!that[startEnd]){\r\n that[startEnd] = startEnd === 'startTime' ? dateTime : that.endDate;\r\n }\r\n } else {\r\n that[startEnd] = dateTime;\r\n }\r\n\r\n //生成时分秒\r\n lay.each([24, 60, 60], function(i, item){\r\n var li = lay.elem('li'), childUL = ['

            '+ lang.time[i] +'

              '];\r\n lay.each(new Array(item), function(ii){\r\n childUL.push(''+ lay.digit(ii, 2) +'');\r\n });\r\n li.innerHTML = childUL.join('') + '
            ';\r\n ul.appendChild(li);\r\n });\r\n setTimeStatus();\r\n setTimeListVisibility();\r\n }\r\n\r\n //插入容器\r\n if(haveList) elemCont.removeChild(haveList);\r\n elemCont.appendChild(ul);\r\n\r\n //年月面板 - 选择事件\r\n if(type === 'year' || type === 'month'){\r\n //显示切换箭头\r\n lay(that.elemMain[index]).addClass('laydate-ym-show');\r\n\r\n //选中\r\n lay(ul).find('li').on('click', function(){\r\n var ym = lay(this).attr('lay-ym') | 0;\r\n if(lay(this).hasClass(DISABLED)) return;\r\n if (that.rangeLinked) {\r\n lay.extend(dateTime, {\r\n year: type === 'year' ? ym : listYM[0]\r\n ,month: type === 'year' ? listYM[1] - 1 : ym\r\n });\r\n } else {\r\n dateTime[type] = ym;\r\n }\r\n\r\n //当为年选择器或者年月选择器\r\n var isYearOrMonth = options.type === 'year' || options.type === 'month';\r\n if(isYearOrMonth){\r\n lay(ul).find('.'+ THIS).removeClass(THIS);\r\n lay(this).addClass(THIS);\r\n\r\n //如果为年月选择器,点击了年列表,则切换到月选择器\r\n if(options.type === 'month' && type === 'year'){\r\n that.listYM[index][0] = ym;\r\n isAlone && ((index ? that.endDate : dateTime).year = ym);\r\n that.list('month', index);\r\n }\r\n } else {\r\n that.checkDate('limit').calendar(dateTime, index, 'init'); // 重新渲染一下两个面板\r\n that.closeList();\r\n }\r\n\r\n that.setBtnStatus(); //同步按钮可点状态\r\n\r\n //若为月选择器,只有当选择月份时才自动关闭;\r\n //若为年选择器,选择年份即自动关闭\r\n //且在范围未开启时\r\n if(!options.range && options.autoConfirm){\r\n if((options.type === 'month' && type === 'month') || (options.type === 'year' && type === 'year')){\r\n that.setValue(that.parse()).done().remove();\r\n }\r\n }\r\n\r\n (that.autoCalendarModel.auto && !that.rangeLinked) ? that.choose(lay(elemCont).find('td.layui-this'), index) : (that.endState && that.done(null, 'change'));\r\n lay(that.footer).find('.'+ ELEM_TIME_BTN).removeClass(DISABLED);\r\n });\r\n } else { //时间选择面板 - 选择事件\r\n var span = lay.elem('span', {\r\n \"class\": ELEM_TIME_TEXT\r\n })\r\n\r\n //滚动条定位\r\n ,scroll = function(){\r\n lay(ul).find('ol').each(function(i){\r\n var ol = this\r\n ,li = lay(ol).find('li')\r\n ol.scrollTop = 30*(that[startEnd][hms[i]] - 2);\r\n if(ol.scrollTop <= 0){\r\n li.each(function(ii, item){\r\n if(!lay(this).hasClass(DISABLED)){\r\n ol.scrollTop = 30*(ii - 2);\r\n return true;\r\n }\r\n });\r\n }\r\n });\r\n }\r\n ,haveSpan = lay(elemHeader[2]).find('.'+ ELEM_TIME_TEXT);\r\n\r\n scroll();\r\n span.innerHTML = options.range ? [lang.startTime,lang.endTime][index] : lang.timeTips;\r\n lay(that.elemMain[index]).addClass('laydate-time-show');\r\n\r\n if(haveSpan[0]) haveSpan.remove();\r\n elemHeader[2].appendChild(span);\r\n\r\n var olElem = lay(ul).find('ol');\r\n olElem.each(function(i){\r\n var ol = this;\r\n //选择时分秒\r\n lay(ol).find('li').on('click', function(){\r\n var value = this.innerHTML | 0;\r\n if(lay(this).hasClass(DISABLED)) return;\r\n\r\n if(options.range){\r\n that[startEnd][hms[i]] = value;\r\n } else {\r\n dateTime[hms[i]] = value;\r\n }\r\n lay(ol).find('.'+ THIS).removeClass(THIS);\r\n lay(this).addClass(THIS);\r\n\r\n setTimeStatus();\r\n scroll();\r\n (that.endDate || options.type === 'time' || options.type === 'datetime') && that.done(null, 'change');\r\n\r\n //同步按钮可点状态\r\n that.setBtnStatus();\r\n });\r\n });\r\n\r\n if(layui.device().mobile){\r\n olElem.css({\r\n overflowY: 'auto',\r\n touchAction: 'pan-y'\r\n })\r\n }\r\n }\r\n\r\n return that;\r\n };\r\n\r\n //记录列表切换后的年月\r\n Class.prototype.listYM = [];\r\n\r\n //关闭列表\r\n Class.prototype.closeList = function(){\r\n var that = this\r\n ,options = that.config;\r\n\r\n lay.each(that.elemCont, function(index, item){\r\n lay(this).find('.'+ ELEM_LIST).remove();\r\n lay(that.elemMain[index]).removeClass('laydate-ym-show laydate-time-show');\r\n });\r\n lay(that.elem).find('.'+ ELEM_TIME_TEXT).remove();\r\n };\r\n\r\n //检测结束日期是否超出开始日期\r\n Class.prototype.setBtnStatus = function(tips, start, end){\r\n var that = this\r\n ,options = that.config\r\n ,lang = that.lang()\r\n ,isOut\r\n ,elemBtn = lay(that.footer).find(ELEM_CONFIRM)\r\n ,timeParams = options.type === 'datetime' || options.type === 'time' ? ['hours', 'minutes', 'seconds'] : undefined;\r\n if(options.range){\r\n start = start || (that.rangeLinked ? that.startDate : options.dateTime);\r\n end = end || that.endDate;\r\n isOut = !that.endState || that.newDate(start).getTime() > that.newDate(end).getTime();\r\n\r\n //如果不在有效日期内,直接禁用按钮,否则比较开始和结束日期\r\n (that.limit({\r\n date: start,\r\n disabledType: 'datetime', // 按钮,检测日期和时间\r\n time: timeParams,\r\n rangeType: 0\r\n }) || that.limit({\r\n date: end,\r\n disabledType: 'datetime', // 按钮,检测日期和时间\r\n time: timeParams,\r\n rangeType: 1\r\n }))\r\n ? elemBtn.addClass(DISABLED)\r\n : elemBtn[isOut ? 'addClass' : 'removeClass'](DISABLED);\r\n\r\n //是否异常提示\r\n if(tips && isOut) that.hint(\r\n typeof tips === 'string' ? lang.timeout.replace(/日期/g, tips) : lang.timeout\r\n );\r\n }\r\n };\r\n\r\n // 转义为规定格式的日期字符\r\n Class.prototype.parse = function(state, date) {\r\n var that = this;\r\n var options = that.config;\r\n var startDate = (that.rangeLinked ? that.startDate : options.dateTime)\r\n var dateTime = date || (\r\n state == 'end' ? lay.extend({}, that.endDate, that.endTime) : (\r\n options.range\r\n ? lay.extend({}, startDate || options.dateTime, that.startTime)\r\n : options.dateTime\r\n )\r\n );\r\n var format = laydate.parse(dateTime, that.format, 1);\r\n\r\n // 返回日期范围字符\r\n if (options.range && state === undefined) {\r\n return format + ' '+ that.rangeStr +' ' + that.parse('end');\r\n }\r\n\r\n return format;\r\n };\r\n\r\n //创建指定日期时间对象\r\n Class.prototype.newDate = function(dateTime){\r\n dateTime = dateTime || {};\r\n return new Date(\r\n dateTime.year || 1\r\n ,dateTime.month || 0\r\n ,dateTime.date || 1\r\n ,dateTime.hours || 0\r\n ,dateTime.minutes || 0\r\n ,dateTime.seconds || 0\r\n );\r\n };\r\n\r\n // 获得指定日期时间对象的毫秒数\r\n Class.prototype.getDateTime = function(obj){\r\n return this.newDate(obj).getTime();\r\n }\r\n\r\n /**\r\n * 格式化输入框显示值\r\n * @param {HTMLInputElement} elem HTML input 元素\r\n * @param {(value: string) => string} displayValueCallback \r\n */\r\n Class.prototype.formatToDisplay = function (elem, displayValueCallback) {\r\n var that = this;\r\n var props = Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,'value');\r\n \r\n Object.defineProperty(\r\n elem,\r\n 'value',\r\n lay.extend({}, props, {\r\n get: function () {\r\n return this.getAttribute('lay-date');\r\n },\r\n set: function (value) {\r\n props.set.call(this, displayValueCallback.call(that, value));\r\n this.setAttribute('lay-date', value);\r\n },\r\n })\r\n );\r\n };\r\n\r\n //赋值\r\n Class.prototype.setValue = function(value){\r\n var that = this\r\n ,options = that.config\r\n ,elem = options.elem[0];\r\n\r\n //静态展现则不作默认赋值\r\n if(options.position === 'static') return that;\r\n\r\n value = value || '';\r\n\r\n //绑定的元素是否为 input\r\n if(that.isInput(elem)){\r\n lay(elem).val(value);\r\n } else {\r\n //如果 range 传入了开始和结束的 input 对象,则分别对其赋值\r\n var rangeElem = that.rangeElem;\r\n if(rangeElem){\r\n if(layui.type(value) !== 'array'){\r\n value = value.split(' '+ that.rangeStr +' ');\r\n }\r\n rangeElem[0].val(value[0] || '');\r\n rangeElem[1].val(value[1] || '');\r\n } else {\r\n if(lay(elem).find('*').length === 0){\r\n var displayValue = typeof options.formatToDisplay === 'function' ? options.formatToDisplay(value) : value;\r\n lay(elem).html(displayValue);\r\n }\r\n lay(elem).attr('lay-date', value);\r\n }\r\n }\r\n\r\n return that;\r\n };\r\n\r\n //预览\r\n Class.prototype.preview = function(){\r\n var that = this\r\n ,options = that.config;\r\n\r\n if(!options.isPreview) return;\r\n\r\n var elemPreview = lay(that.elem).find('.'+ ELEM_PREVIEW)\r\n ,value = options.range ? ((that.rangeLinked ? that.endState : that.endDate) ? that.parse() : '') : that.parse();\r\n\r\n // 显示预览\r\n elemPreview.html(value);\r\n\r\n // 预览颜色渐变\r\n var oldValue = elemPreview.html();\r\n oldValue && (elemPreview.css({\r\n 'color': '#16b777'\r\n }),\r\n setTimeout(function(){\r\n elemPreview.css({\r\n 'color': '#777'\r\n });\r\n }, 300));\r\n };\r\n\r\n // 附加的渲染处理,在 ready 和 change 的时候调用\r\n Class.prototype.renderAdditional = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 处理全面板\r\n if (options.fullPanel) {\r\n that.list('time', 0);\r\n }\r\n };\r\n\r\n // 标记范围内的日期\r\n Class.prototype.stampRange = function(){\r\n var that = this\r\n ,options = that.config\r\n ,startTime = that.rangeLinked ? that.startDate : options.dateTime, endTime\r\n ,tds = lay(that.elem).find('td');\r\n\r\n if(options.range && !that.endState) lay(that.footer).find(ELEM_CONFIRM).addClass(DISABLED);\r\n // if(!that.endState) return;\r\n\r\n startTime = startTime && that.newDate({\r\n year: startTime.year\r\n ,month: startTime.month\r\n ,date: startTime.date\r\n }).getTime();\r\n\r\n endTime = that.endState && that.endDate && that.newDate({\r\n year: that.endDate.year\r\n ,month: that.endDate.month\r\n ,date: that.endDate.date\r\n }).getTime();\r\n\r\n // if(startTime > endTime) return that.hint(TIPS_OUT);\r\n\r\n lay.each(tds, function(i, item){\r\n var ymd = lay(item).attr('lay-ymd').split('-');\r\n var thisTime = that.newDate({\r\n year: ymd[0]\r\n ,month: ymd[1] - 1\r\n ,date: ymd[2]\r\n }).getTime();\r\n\r\n // 标记当天\r\n if(options.rangeLinked && !that.startDate){\r\n if(thisTime === that.newDate(that.systemDate()).getTime()){\r\n lay(item).addClass(\r\n lay(item).hasClass(ELEM_PREV) || lay(item).hasClass(ELEM_NEXT)\r\n ? ''\r\n : ELEM_DAY_NOW\r\n );\r\n }\r\n }\r\n\r\n /*\r\n * 标注区间\r\n */\r\n\r\n lay(item).removeClass(ELEM_SELECTED + ' ' + THIS);\r\n\r\n if(thisTime === startTime || thisTime === endTime){\r\n (that.rangeLinked || (!that.rangeLinked && (i < 42 ? thisTime === startTime : thisTime === endTime))) &&\r\n lay(item).addClass(\r\n lay(item).hasClass(ELEM_PREV) || lay(item).hasClass(ELEM_NEXT)\r\n ? ELEM_SELECTED\r\n : THIS\r\n );\r\n }\r\n if(thisTime > startTime && thisTime < endTime){\r\n lay(item).addClass(ELEM_SELECTED);\r\n }\r\n });\r\n };\r\n\r\n // 执行 done/change 回调\r\n Class.prototype.done = function(param, type){\r\n var that = this;\r\n var options = that.config;\r\n var start = lay.extend({},\r\n lay.extend(that.rangeLinked ? that.startDate : options.dateTime, that.startTime)\r\n );\r\n var end = lay.extend({}, lay.extend(that.endDate, that.endTime));\r\n\r\n lay.each([start, end], function(i, item){\r\n if(!('month' in item)) return;\r\n lay.extend(item, {\r\n month: item.month + 1\r\n });\r\n });\r\n\r\n that.preview();\r\n\r\n param = param || [that.parse(), start, end];\r\n type === 'change' && that.renderAdditional();\r\n typeof options[type || 'done'] === 'function' && options[type || 'done'].apply(options, param);\r\n\r\n return that;\r\n };\r\n\r\n //选择日期\r\n Class.prototype.choose = function(td, index){\r\n if(td.hasClass(DISABLED)) return;\r\n\r\n var that = this\r\n ,options = that.config\r\n ,panelIndex = index; // 记录点击的是哪一个面板的\r\n\r\n if (that.rangeLinked) {\r\n if (that.endState || !that.startDate) {\r\n // 重新选择或者第一次选择\r\n index = 0;\r\n that.endState = false;\r\n } else {\r\n index = 1;\r\n that.endState = true;\r\n }\r\n }\r\n\r\n var dateTime = that.thisDateTime(index)\r\n\r\n ,tds = lay(that.elem).find('td')\r\n ,YMD = td.attr('lay-ymd').split('-');\r\n\r\n YMD = {\r\n year: YMD[0] | 0\r\n ,month: (YMD[1] | 0) - 1\r\n ,date: YMD[2] | 0\r\n };\r\n\r\n lay.extend(dateTime, YMD); //同步 dateTime\r\n\r\n //范围选择\r\n if(options.range){\r\n //补充时分秒\r\n lay.each(['startTime', 'endTime'], function(i, item){\r\n that[item] = that[item] || {\r\n hours: i ? 23: 0\r\n ,minutes: i ? 59: 0\r\n ,seconds: i ? 59: 0\r\n };\r\n if (index === i) {\r\n // 判断选择之后的是否在范围内,超出则需要调整时分秒\r\n if (that.getDateTime(lay.extend({}, dateTime, that[item])) < that.getDateTime(options.min)) {\r\n that[item] = {\r\n hours: options.min.hours\r\n ,minutes: options.min.minutes\r\n ,seconds: options.min.seconds\r\n };\r\n lay.extend(dateTime, that[item]);\r\n } else if (that.getDateTime(lay.extend({}, dateTime, that[item])) > that.getDateTime(options.max)) {\r\n that[item] = {\r\n hours: options.max.hours\r\n ,minutes: options.max.minutes\r\n ,seconds: options.max.seconds\r\n };\r\n lay.extend(dateTime, that[item]);\r\n }\r\n }\r\n });\r\n if (!index) {\r\n that.startDate = lay.extend({}, dateTime); // 同步startDate\r\n }\r\n // 校验另外一个日期是否在有效的范围内\r\n // 此处为范围选择的日期面板点击选中处理,所以 disabledType 为 date\r\n if (that.endState && !that.limit({date: that.rangeLinked ? that.startDate : that.thisDateTime(1 - index), disabledType:'date'})) {\r\n // 根据选择之后判断是否需要切换模式\r\n var isChange;\r\n if (that.endState && that.autoCalendarModel.auto) {\r\n isChange = that.autoCalendarModel();\r\n }\r\n // 判断是否反选\r\n var needSwapDate = (isChange || that.rangeLinked && that.endState) && that.newDate(that.startDate) > that.newDate(that.endDate);\r\n if (needSwapDate){\r\n var isSameDate = that.startDate.year === that.endDate.year && that.startDate.month === that.endDate.month && that.startDate.date === that.endDate.date;\r\n var startDate;\r\n // 如果是同一天并且出现了反选证明是时分秒出现开始时间大于结束时间的现象\r\n if(isSameDate){\r\n startDate = that.startTime;\r\n that.startTime = that.endTime;\r\n that.endTime = startDate;\r\n }\r\n // 当出现反向选择时(即“后点击”的日期比“先点击”的日期小),重新提取区间\r\n startDate = that.startDate;\r\n that.startDate = lay.extend({}, that.endDate, that.startTime);\r\n options.dateTime = lay.extend({}, that.startDate);\r\n that.endDate = lay.extend({}, startDate, that.endTime);\r\n }\r\n isChange && (options.dateTime = lay.extend({}, that.startDate));\r\n }\r\n if (that.rangeLinked) {\r\n var dateTimeTemp = lay.extend({}, dateTime);\r\n if (panelIndex && !index && !isChange) { // 处理可能出现的联动面板中点击右面板但是判定为开始日期这个时候点击头部的切换上下月第一次没有反应的问题\r\n // 选择了右面板但是判断之后作为开始时间\r\n var YM = that.getAsYM(dateTime.year, dateTime.month, 'sub');\r\n lay.extend(options.dateTime, {\r\n year: YM[0]\r\n ,month: YM[1]\r\n });\r\n }\r\n that.calendar(dateTimeTemp, panelIndex, isChange ? 'init' : null);\r\n } else {\r\n that.calendar(null, index, isChange ? 'init' : null);\r\n }\r\n that.endState && that.done(null, 'change');\r\n } else if(options.position === 'static'){ //直接嵌套的选中\r\n that.calendar().done().done(null, 'change'); //同时执行 done 和 change 回调\r\n } else if(options.type === 'date'){\r\n options.autoConfirm ? that.setValue(that.parse()).done().remove() : that.calendar().done(null, 'change');\r\n } else if(options.type === 'datetime'){\r\n that.calendar().done(null, 'change');\r\n }\r\n };\r\n\r\n //底部按钮\r\n Class.prototype.tool = function(btn, type){\r\n var that = this\r\n ,options = that.config\r\n ,lang = that.lang()\r\n ,dateTime = options.dateTime\r\n ,isStatic = options.position === 'static'\r\n ,active = {\r\n //选择时间\r\n datetime: function(){\r\n if(lay(btn).hasClass(DISABLED)) return;\r\n that.list('time', 0);\r\n options.range && that.list('time', 1);\r\n lay(btn).attr('lay-type', 'date').html(that.lang().dateTips);\r\n }\r\n\r\n //选择日期\r\n ,date: function(){\r\n that.closeList();\r\n lay(btn).attr('lay-type', 'datetime').html(that.lang().timeTips);\r\n }\r\n\r\n //清空、重置\r\n ,clear: function(){\r\n isStatic && (\r\n lay.extend(dateTime, that.firstDate)\r\n ,that.calendar()\r\n )\r\n options.range && (\r\n delete options.dateTime\r\n ,delete that.endDate\r\n ,delete that.startTime\r\n ,delete that.endTime\r\n );\r\n that.setValue('');\r\n that.done(null, 'onClear').done(['', {}, {}]).remove();\r\n }\r\n\r\n // 现在\r\n ,now: function(){\r\n var thisDate = new Date();\r\n\r\n // 当前系统时间未在 min/max 范围内,则不可点击\r\n if(lay(btn).hasClass(DISABLED)){\r\n return that.hint(lang.tools.now +', '+ lang.invalidDate);\r\n }\r\n\r\n lay.extend(dateTime, that.systemDate(), {\r\n hours: thisDate.getHours()\r\n ,minutes: thisDate.getMinutes()\r\n ,seconds: thisDate.getSeconds()\r\n });\r\n\r\n that.setValue(that.parse());\r\n isStatic && that.calendar();\r\n that.done(null, 'onNow').done().remove();\r\n }\r\n\r\n //确定\r\n ,confirm: function(){\r\n if(options.range){\r\n if(lay(btn).hasClass(DISABLED)){\r\n var isTimeout = options.type === 'time'\r\n ? that.startTime && that.endTime && that.newDate(that.startTime) > that.newDate(that.endTime)\r\n : that.startDate && that.endDate && that.newDate(lay.extend({},that.startDate, that.startTime || {})) > that.newDate(lay.extend({},that.endDate, that.endTime || {}));\r\n\r\n return isTimeout \r\n ? that.hint(options.type === 'time' ? lang.timeout.replace(/日期/g, '时间') : lang.timeout)\r\n : that.hint(lang.invalidDate);\r\n }\r\n } else {\r\n if(lay(btn).hasClass(DISABLED)) return that.hint(lang.invalidDate);\r\n }\r\n\r\n that.setValue(that.parse());\r\n that.done(null, 'onConfirm').done().remove();\r\n }\r\n };\r\n active[type] && active[type]();\r\n };\r\n\r\n //统一切换处理\r\n Class.prototype.change = function(index){\r\n var that = this\r\n ,options = that.config\r\n ,dateTime = that.thisDateTime(index)\r\n ,isAlone = options.range && (options.type === 'year' || options.type === 'month')\r\n\r\n ,elemCont = that.elemCont[index || 0]\r\n ,listYM = that.listYM[index]\r\n ,addSubYear = function(type){\r\n var isYear = lay(elemCont).find('.laydate-year-list')[0]\r\n ,isMonth = lay(elemCont).find('.laydate-month-list')[0];\r\n\r\n //切换年列表\r\n if(isYear){\r\n listYM[0] = type ? listYM[0] - 15 : listYM[0] + 15;\r\n that.list('year', index);\r\n }\r\n\r\n if(isMonth){ //切换月面板中的年\r\n type ? listYM[0]-- : listYM[0]++;\r\n that.list('month', index);\r\n }\r\n\r\n if(isYear || isMonth){\r\n lay.extend(dateTime, {\r\n year: listYM[0]\r\n });\r\n if(isAlone) dateTime.year = listYM[0];\r\n options.range || that.done(null, 'change');\r\n options.range || that.limit({\r\n elem: lay(that.footer).find(ELEM_CONFIRM),\r\n date: {\r\n year: listYM[0]\r\n },\r\n disabledType: 'datetime' // 按钮,检测日期和时间\r\n });\r\n }\r\n\r\n that.setBtnStatus();\r\n return isYear || isMonth;\r\n };\r\n\r\n return {\r\n prevYear: function(){\r\n if(addSubYear('sub')) return;\r\n if (that.rangeLinked) {\r\n options.dateTime.year--;\r\n that.checkDate('limit').calendar(null, null, 'init');\r\n } else {\r\n dateTime.year--;\r\n that.checkDate('limit').calendar(null, index);\r\n // 面板自动切换的模式下重新判定是否发生模式转换等细节处理\r\n that.autoCalendarModel.auto ? that.choose(lay(elemCont).find('td.layui-this'), index) : that.done(null, 'change');\r\n }\r\n }\r\n ,prevMonth: function(){\r\n if (that.rangeLinked) {\r\n dateTime = options.dateTime;\r\n }\r\n var YM = that.getAsYM(dateTime.year, dateTime.month, 'sub');\r\n lay.extend(dateTime, {\r\n year: YM[0]\r\n ,month: YM[1]\r\n });\r\n\r\n that.checkDate('limit').calendar(null, null, 'init');\r\n if (!that.rangeLinked) {\r\n that.autoCalendarModel.auto ? that.choose(lay(elemCont).find('td.layui-this'), index) : that.done(null, 'change');\r\n }\r\n }\r\n ,nextMonth: function(){\r\n if (that.rangeLinked) {\r\n dateTime = options.dateTime;\r\n }\r\n var YM = that.getAsYM(dateTime.year, dateTime.month);\r\n lay.extend(dateTime, {\r\n year: YM[0]\r\n ,month: YM[1]\r\n });\r\n\r\n that.checkDate('limit').calendar(null, null, 'init');\r\n if (!that.rangeLinked) {\r\n that.autoCalendarModel.auto ? that.choose(lay(elemCont).find('td.layui-this'), index) : that.done(null, 'change');\r\n }\r\n }\r\n ,nextYear: function(){\r\n if(addSubYear()) return;\r\n if (that.rangeLinked) {\r\n options.dateTime.year++;\r\n that.checkDate('limit').calendar(null, 0, 'init');\r\n } else {\r\n dateTime.year++;\r\n that.checkDate('limit').calendar(null, index);\r\n that.autoCalendarModel.auto ? that.choose(lay(elemCont).find('td.layui-this'), index) : that.done(null, 'change');\r\n }\r\n }\r\n };\r\n };\r\n\r\n //日期切换事件\r\n Class.prototype.changeEvent = function(){\r\n var that = this\r\n ,options = that.config;\r\n\r\n //日期选择事件\r\n lay(that.elem).on('click', function(e){\r\n lay.stope(e);\r\n }).on('mousedown', function(e){\r\n lay.stope(e);\r\n });\r\n\r\n //年月切换\r\n lay.each(that.elemHeader, function(i, header){\r\n //上一年\r\n lay(header[0]).on('click', function(e){\r\n that.change(i).prevYear();\r\n });\r\n\r\n //上一月\r\n lay(header[1]).on('click', function(e){\r\n that.change(i).prevMonth();\r\n });\r\n\r\n //选择年月\r\n lay(header[2]).find('span').on('click', function(e){\r\n var othis = lay(this)\r\n ,layYM = othis.attr('lay-ym')\r\n ,layType = othis.attr('lay-type');\r\n\r\n if(!layYM) return;\r\n\r\n layYM = layYM.split('-');\r\n\r\n that.listYM[i] = [layYM[0] | 0, layYM[1] | 0];\r\n that.list(layType, i);\r\n lay(that.footer).find('.'+ ELEM_TIME_BTN).addClass(DISABLED);\r\n });\r\n\r\n //下一月\r\n lay(header[3]).on('click', function(e){\r\n that.change(i).nextMonth();\r\n });\r\n\r\n //下一年\r\n lay(header[4]).on('click', function(e){\r\n that.change(i).nextYear();\r\n });\r\n });\r\n\r\n //点击日期\r\n lay.each(that.table, function(i, table){\r\n var tds = lay(table).find('td');\r\n tds.on('click', function(){\r\n that.choose(lay(this), i);\r\n });\r\n });\r\n\r\n //点击底部按钮\r\n lay(that.footer).find('span').on('click', function(){\r\n var type = lay(this).attr('lay-type');\r\n that.tool(this, type);\r\n });\r\n };\r\n\r\n //是否输入框\r\n Class.prototype.isInput = function(elem){\r\n return /input|textarea/.test(elem.tagName.toLocaleLowerCase()) || /INPUT|TEXTAREA/.test(elem.tagName);\r\n };\r\n\r\n //绑定的元素事件处理\r\n Class.prototype.events = function(){\r\n var that = this\r\n var options = that.config\r\n\r\n if(!options.elem[0] || options.elem[0].eventHandler) return;\r\n\r\n var showEvent = function(){\r\n // 已经打开的面板避免重新渲染\r\n if(laydate.thisId === options.id) return;\r\n that.render();\r\n };\r\n\r\n //绑定呼出控件事件\r\n options.elem.on(options.trigger, showEvent);\r\n options.elem[0].eventHandler = true;\r\n options.eventElem.on(options.trigger, showEvent);\r\n\r\n // 元素解绑\r\n that.unbind = function () {\r\n that.remove();\r\n options.elem.off(options.trigger, showEvent);\r\n options.elem.removeAttr('lay-key');\r\n options.elem.removeAttr(MOD_ID);\r\n options.elem[0].eventHandler = false;\r\n options.eventElem.off(options.trigger, showEvent);\r\n options.eventElem.removeAttr('lay-key');\r\n delete thisModule.that[options.id];\r\n };\r\n };\r\n\r\n //记录所有实例\r\n thisModule.that = {}; //记录所有实例对象\r\n\r\n //获取当前实例对象\r\n thisModule.getThis = function(id){\r\n var that = thisModule.that[id];\r\n if(!that && isLayui) layui.hint().error(id ? (MOD_NAME +' instance with ID \\''+ id +'\\' not found') : 'ID argument required');\r\n return that;\r\n };\r\n\r\n // 初始执行\r\n ready.run = function(lay){\r\n // 绑定关闭控件事件\r\n lay(document).on('mousedown', function(e){\r\n if(!laydate.thisId) return;\r\n var that = thisModule.getThis(laydate.thisId);\r\n if(!that) return;\r\n\r\n var options = that.config;\r\n\r\n if(\r\n e.target === options.elem[0] ||\r\n e.target === options.eventElem[0] ||\r\n e.target === lay(options.closeStop)[0] ||\r\n (options.elem[0] && options.elem[0].contains(e.target))\r\n ) return;\r\n\r\n that.remove();\r\n\r\n }).on('keydown', function(e){\r\n if(!laydate.thisId) return;\r\n var that = thisModule.getThis(laydate.thisId);\r\n if(!that) return;\r\n\r\n // 回车触发确认\r\n if(that.config.position === 'static') return;\r\n if(e.keyCode === 13){\r\n if(lay('#'+ that.elemID)[0] && that.elemID === Class.thisElemDate){\r\n e.preventDefault();\r\n lay(that.footer).find(ELEM_CONFIRM)[0].click();\r\n }\r\n }\r\n });\r\n\r\n //自适应定位\r\n lay(window).on('resize', function(){\r\n if(!laydate.thisId) return;\r\n var that = thisModule.getThis(laydate.thisId);\r\n if(!that) return;\r\n\r\n if(!that.elem || !lay(ELEM)[0]){\r\n return false;\r\n }\r\n\r\n that.position();\r\n });\r\n };\r\n\r\n // 渲染 - 核心接口\r\n laydate.render = function(options){\r\n var inst = new Class(options);\r\n return thisModule.call(inst);\r\n };\r\n\r\n // 重载\r\n laydate.reload = function (id, options) {\r\n var that = thisModule.getThis(id);\r\n if(!that) return;\r\n return that.reload(options);\r\n };\r\n\r\n // 获取对应 ID 的实例\r\n laydate.getInst = function (id) {\r\n var that = thisModule.getThis(id);\r\n if(that){\r\n return that.inst;\r\n }\r\n };\r\n\r\n // 面板提示\r\n laydate.hint = function(id, opts){\r\n var that = thisModule.getThis(id);\r\n if(!that) return;\r\n return that.hint(opts);\r\n };\r\n\r\n // 解绑实例\r\n laydate.unbind = function(id){\r\n var that = thisModule.getThis(id);\r\n if(!that) return;\r\n return that.unbind();\r\n };\r\n\r\n // 关闭日期面板\r\n laydate.close = function(id){\r\n var that = thisModule.getThis(id || laydate.thisId);\r\n if(!that) return;\r\n return that.remove();\r\n };\r\n\r\n // 将指定对象转化为日期值\r\n laydate.parse = function(dateTime, format, one){\r\n dateTime = dateTime || {};\r\n\r\n //如果 format 是字符型,则转换为数组格式\r\n if(typeof format === 'string'){\r\n format = thisModule.formatArr(format);\r\n }\r\n\r\n format = (format || []).concat();\r\n\r\n //转义为规定格式\r\n lay.each(format, function(i, item){\r\n if(/yyyy|y/.test(item)){ //年\r\n format[i] = lay.digit(dateTime.year, item.length);\r\n } else if(/MM|M/.test(item)){ //月\r\n format[i] = lay.digit(dateTime.month + (one || 0), item.length);\r\n } else if(/dd|d/.test(item)){ //日\r\n format[i] = lay.digit(dateTime.date, item.length);\r\n } else if(/HH|H/.test(item)){ //时\r\n format[i] = lay.digit(dateTime.hours, item.length);\r\n } else if(/mm|m/.test(item)){ //分\r\n format[i] = lay.digit(dateTime.minutes, item.length);\r\n } else if(/ss|s/.test(item)){ //秒\r\n format[i] = lay.digit(dateTime.seconds, item.length);\r\n }\r\n });\r\n\r\n return format.join('');\r\n };\r\n\r\n // 得到某月的最后一天\r\n laydate.getEndDate = function(month, year){\r\n var thisDate = new Date();\r\n //设置日期为下个月的第一天\r\n thisDate.setFullYear(\r\n year || thisDate.getFullYear()\r\n ,month || (thisDate.getMonth() + 1)\r\n ,1);\r\n //减去一天,得到当前月最后一天\r\n return new Date(thisDate.getTime() - 1000*60*60*24).getDate();\r\n };\r\n\r\n //加载方式\r\n isLayui ? (\r\n laydate.ready()\r\n ,layui.define('lay', function(exports){ //layui 加载\r\n laydate.path = layui.cache.dir;\r\n ready.run(lay);\r\n exports(MOD_NAME, laydate);\r\n })\r\n ) : (\r\n (typeof define === 'function' && define.amd) ? define(function(){ //requirejs 加载\r\n ready.run(lay);\r\n return laydate;\r\n }) : function(){ //普通 script 标签加载\r\n laydate.ready();\r\n ready.run(window.lay);\r\n window.laydate = laydate;\r\n }()\r\n );\r\n\r\n}(window, window.document);\r\n","/*!\r\n * jQuery JavaScript Library v1.12.4\r\n * http://jquery.com/\r\n *\r\n * Includes Sizzle.js\r\n * http://sizzlejs.com/\r\n *\r\n * Copyright jQuery Foundation and other contributors\r\n * Released under the MIT license\r\n * http://jquery.org/license\r\n *\r\n * Date: 2016-05-20T17:17Z\r\n */\r\n\r\n(function( global, factory ) {\r\n\r\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\r\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\r\n\t\t// is present, execute the factory and get jQuery.\r\n\t\t// For environments that do not have a `window` with a `document`\r\n\t\t// (such as Node.js), expose a factory as module.exports.\r\n\t\t// This accentuates the need for the creation of a real `window`.\r\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\r\n\t\t// See ticket #14549 for more info.\r\n\t\tmodule.exports = global.document ?\r\n\t\t\tfactory( global, true ) :\r\n\t\t\tfunction( w ) {\r\n\t\t\t\tif ( !w.document ) {\r\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\r\n\t\t\t\t}\r\n\t\t\t\treturn factory( w );\r\n\t\t\t};\r\n\t} else {\r\n\t\tfactory( global );\r\n\t}\r\n\r\n// Pass this if window is not defined yet\r\n}(typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\r\n\r\n// Support: Firefox 18+\r\n// Can't be in strict mode, several libs including ASP.NET trace\r\n// the stack via arguments.caller.callee and Firefox dies if\r\n// you try to trace through \"use strict\" call chains. (#13335)\r\n//\"use strict\";\r\nvar deletedIds = [];\r\n\r\nvar document = window.document;\r\n\r\nvar slice = deletedIds.slice;\r\n\r\nvar concat = deletedIds.concat;\r\n\r\nvar push = deletedIds.push;\r\n\r\nvar indexOf = deletedIds.indexOf;\r\n\r\nvar class2type = {};\r\n\r\nvar toString = class2type.toString;\r\n\r\nvar hasOwn = class2type.hasOwnProperty;\r\n\r\nvar support = {};\r\n\r\n\r\n\r\nvar\r\n\tversion = \"1.12.4\",\r\n\r\n\t// Define a local copy of jQuery\r\n\tjQuery = function( selector, context ) {\r\n\r\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\r\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\r\n\t\treturn new jQuery.fn.init( selector, context );\r\n\t},\r\n\r\n\t// Support: Android<4.1, IE<9\r\n\t// Make sure we trim BOM and NBSP\r\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\r\n\r\n\t// Matches dashed string for camelizing\r\n\trmsPrefix = /^-ms-/,\r\n\trdashAlpha = /-([\\da-z])/gi,\r\n\r\n\t// Used by jQuery.camelCase as callback to replace()\r\n\tfcamelCase = function( all, letter ) {\r\n\t\treturn letter.toUpperCase();\r\n\t};\r\n\r\njQuery.fn = jQuery.prototype = {\r\n\r\n\t// The current version of jQuery being used\r\n\tjquery: version,\r\n\r\n\tconstructor: jQuery,\r\n\r\n\t// Start with an empty selector\r\n\tselector: \"\",\r\n\r\n\t// The default length of a jQuery object is 0\r\n\tlength: 0,\r\n\r\n\ttoArray: function() {\r\n\t\treturn slice.call( this );\r\n\t},\r\n\r\n\t// Get the Nth element in the matched element set OR\r\n\t// Get the whole matched element set as a clean array\r\n\tget: function( num ) {\r\n\t\treturn num != null ?\r\n\r\n\t\t\t// Return just the one element from the set\r\n\t\t\t( num < 0 ? this[ num + this.length ] : this[ num ] ) :\r\n\r\n\t\t\t// Return all the elements in a clean array\r\n\t\t\tslice.call( this );\r\n\t},\r\n\r\n\t// Take an array of elements and push it onto the stack\r\n\t// (returning the new matched element set)\r\n\tpushStack: function( elems ) {\r\n\r\n\t\t// Build a new jQuery matched element set\r\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\r\n\r\n\t\t// Add the old object onto the stack (as a reference)\r\n\t\tret.prevObject = this;\r\n\t\tret.context = this.context;\r\n\r\n\t\t// Return the newly-formed element set\r\n\t\treturn ret;\r\n\t},\r\n\r\n\t// Execute a callback for every element in the matched set.\r\n\teach: function( callback ) {\r\n\t\treturn jQuery.each( this, callback );\r\n\t},\r\n\r\n\tmap: function( callback ) {\r\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\r\n\t\t\treturn callback.call( elem, i, elem );\r\n\t\t} ) );\r\n\t},\r\n\r\n\tslice: function() {\r\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\r\n\t},\r\n\r\n\tfirst: function() {\r\n\t\treturn this.eq( 0 );\r\n\t},\r\n\r\n\tlast: function() {\r\n\t\treturn this.eq( -1 );\r\n\t},\r\n\r\n\teq: function( i ) {\r\n\t\tvar len = this.length,\r\n\t\t\tj = +i + ( i < 0 ? len : 0 );\r\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\r\n\t},\r\n\r\n\tend: function() {\r\n\t\treturn this.prevObject || this.constructor();\r\n\t},\r\n\r\n\t// For internal use only.\r\n\t// Behaves like an Array's method, not like a jQuery method.\r\n\tpush: push,\r\n\tsort: deletedIds.sort,\r\n\tsplice: deletedIds.splice\r\n};\r\n\r\njQuery.extend = jQuery.fn.extend = function() {\r\n\tvar src, copyIsArray, copy, name, options, clone,\r\n\t\ttarget = arguments[ 0 ] || {},\r\n\t\ti = 1,\r\n\t\tlength = arguments.length,\r\n\t\tdeep = false;\r\n\r\n\t// Handle a deep copy situation\r\n\tif ( typeof target === \"boolean\" ) {\r\n\t\tdeep = target;\r\n\r\n\t\t// skip the boolean and the target\r\n\t\ttarget = arguments[ i ] || {};\r\n\t\ti++;\r\n\t}\r\n\r\n\t// Handle case when target is a string or something (possible in deep copy)\r\n\tif ( typeof target !== \"object\" && !jQuery.isFunction( target ) ) {\r\n\t\ttarget = {};\r\n\t}\r\n\r\n\t// extend jQuery itself if only one argument is passed\r\n\tif ( i === length ) {\r\n\t\ttarget = this;\r\n\t\ti--;\r\n\t}\r\n\r\n\tfor ( ; i < length; i++ ) {\r\n\r\n\t\t// Only deal with non-null/undefined values\r\n\t\tif ( ( options = arguments[ i ] ) != null ) {\r\n\r\n\t\t\t// Extend the base object\r\n\t\t\tfor ( name in options ) {\r\n\t\t\t\tsrc = target[ name ];\r\n\t\t\t\tcopy = options[ name ];\r\n\r\n\t\t\t\t// Prevent never-ending loop\r\n\t\t\t\tif ( target === copy ) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Recurse if we're merging plain objects or arrays\r\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\r\n\t\t\t\t\t( copyIsArray = jQuery.isArray( copy ) ) ) ) {\r\n\r\n\t\t\t\t\tif ( copyIsArray ) {\r\n\t\t\t\t\t\tcopyIsArray = false;\r\n\t\t\t\t\t\tclone = src && jQuery.isArray( src ) ? src : [];\r\n\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject( src ) ? src : {};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Never move original objects, clone them\r\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\r\n\r\n\t\t\t\t// Don't bring in undefined values\r\n\t\t\t\t} else if ( copy !== undefined ) {\r\n\t\t\t\t\ttarget[ name ] = copy;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Return the modified object\r\n\treturn target;\r\n};\r\n\r\njQuery.extend( {\r\n\r\n\t// Unique for each copy of jQuery on the page\r\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\r\n\r\n\t// Assume jQuery is ready without the ready module\r\n\tisReady: true,\r\n\r\n\terror: function( msg ) {\r\n\t\tthrow new Error( msg );\r\n\t},\r\n\r\n\tnoop: function() {},\r\n\r\n\t// See test/unit/core.js for details concerning isFunction.\r\n\t// Since version 1.3, DOM methods and functions like alert\r\n\t// aren't supported. They return false on IE (#2968).\r\n\tisFunction: function( obj ) {\r\n\t\treturn jQuery.type( obj ) === \"function\";\r\n\t},\r\n\r\n\tisArray: Array.isArray || function( obj ) {\r\n\t\treturn jQuery.type( obj ) === \"array\";\r\n\t},\r\n\r\n\tisWindow: function( obj ) {\r\n\t\t/* jshint eqeqeq: false */\r\n\t\treturn obj != null && obj == obj.window;\r\n\t},\r\n\r\n\tisNumeric: function( obj ) {\r\n\r\n\t\t// parseFloat NaNs numeric-cast false positives (null|true|false|\"\")\r\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\r\n\t\t// subtraction forces infinities to NaN\r\n\t\t// adding 1 corrects loss of precision from parseFloat (#15100)\r\n\t\tvar realStringObj = obj && obj.toString();\r\n\t\treturn !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0;\r\n\t},\r\n\r\n\tisEmptyObject: function( obj ) {\r\n\t\tvar name;\r\n\t\tfor ( name in obj ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t},\r\n\r\n\tisPlainObject: function( obj ) {\r\n\t\tvar key;\r\n\r\n\t\t// Must be an Object.\r\n\t\t// Because of IE, we also have to check the presence of the constructor property.\r\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\r\n\t\tif ( !obj || jQuery.type( obj ) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\ttry {\r\n\r\n\t\t\t// Not own constructor property must be Object\r\n\t\t\tif ( obj.constructor &&\r\n\t\t\t\t!hasOwn.call( obj, \"constructor\" ) &&\r\n\t\t\t\t!hasOwn.call( obj.constructor.prototype, \"isPrototypeOf\" ) ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t} catch ( e ) {\r\n\r\n\t\t\t// IE8,9 Will throw exceptions on certain host objects #9897\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Support: IE<9\r\n\t\t// Handle iteration over inherited properties before own properties.\r\n\t\tif ( !support.ownFirst ) {\r\n\t\t\tfor ( key in obj ) {\r\n\t\t\t\treturn hasOwn.call( obj, key );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Own properties are enumerated firstly, so to speed up,\r\n\t\t// if last one is own, then all properties are own.\r\n\t\tfor ( key in obj ) {}\r\n\r\n\t\treturn key === undefined || hasOwn.call( obj, key );\r\n\t},\r\n\r\n\ttype: function( obj ) {\r\n\t\tif ( obj == null ) {\r\n\t\t\treturn obj + \"\";\r\n\t\t}\r\n\t\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\r\n\t\t\tclass2type[ toString.call( obj ) ] || \"object\" :\r\n\t\t\ttypeof obj;\r\n\t},\r\n\r\n\t// Workarounds based on findings by Jim Driscoll\r\n\t// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context\r\n\tglobalEval: function( data ) {\r\n\t\tif ( data && jQuery.trim( data ) ) {\r\n\r\n\t\t\t// We use execScript on Internet Explorer\r\n\t\t\t// We use an anonymous function so that context is window\r\n\t\t\t// rather than jQuery in Firefox\r\n\t\t\t( window.execScript || function( data ) {\r\n\t\t\t\twindow[ \"eval\" ].call( window, data ); // jscs:ignore requireDotNotation\r\n\t\t\t} )( data );\r\n\t\t}\r\n\t},\r\n\r\n\t// Convert dashed to camelCase; used by the css and data modules\r\n\t// Microsoft forgot to hump their vendor prefix (#9572)\r\n\tcamelCase: function( string ) {\r\n\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\r\n\t},\r\n\r\n\tnodeName: function( elem, name ) {\r\n\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\r\n\t},\r\n\r\n\teach: function( obj, callback ) {\r\n\t\tvar length, i = 0;\r\n\r\n\t\tif ( isArrayLike( obj ) ) {\r\n\t\t\tlength = obj.length;\r\n\t\t\tfor ( ; i < length; i++ ) {\r\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tfor ( i in obj ) {\r\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn obj;\r\n\t},\r\n\r\n\t// Support: Android<4.1, IE<9\r\n\ttrim: function( text ) {\r\n\t\treturn text == null ?\r\n\t\t\t\"\" :\r\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\r\n\t},\r\n\r\n\t// results is for internal usage only\r\n\tmakeArray: function( arr, results ) {\r\n\t\tvar ret = results || [];\r\n\r\n\t\tif ( arr != null ) {\r\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\r\n\t\t\t\tjQuery.merge( ret,\r\n\t\t\t\t\ttypeof arr === \"string\" ?\r\n\t\t\t\t\t[ arr ] : arr\r\n\t\t\t\t);\r\n\t\t\t} else {\r\n\t\t\t\tpush.call( ret, arr );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn ret;\r\n\t},\r\n\r\n\tinArray: function( elem, arr, i ) {\r\n\t\tvar len;\r\n\r\n\t\tif ( arr ) {\r\n\t\t\tif ( indexOf ) {\r\n\t\t\t\treturn indexOf.call( arr, elem, i );\r\n\t\t\t}\r\n\r\n\t\t\tlen = arr.length;\r\n\t\t\ti = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;\r\n\r\n\t\t\tfor ( ; i < len; i++ ) {\r\n\r\n\t\t\t\t// Skip accessing in sparse arrays\r\n\t\t\t\tif ( i in arr && arr[ i ] === elem ) {\r\n\t\t\t\t\treturn i;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn -1;\r\n\t},\r\n\r\n\tmerge: function( first, second ) {\r\n\t\tvar len = +second.length,\r\n\t\t\tj = 0,\r\n\t\t\ti = first.length;\r\n\r\n\t\twhile ( j < len ) {\r\n\t\t\tfirst[ i++ ] = second[ j++ ];\r\n\t\t}\r\n\r\n\t\t// Support: IE<9\r\n\t\t// Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists)\r\n\t\tif ( len !== len ) {\r\n\t\t\twhile ( second[ j ] !== undefined ) {\r\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfirst.length = i;\r\n\r\n\t\treturn first;\r\n\t},\r\n\r\n\tgrep: function( elems, callback, invert ) {\r\n\t\tvar callbackInverse,\r\n\t\t\tmatches = [],\r\n\t\t\ti = 0,\r\n\t\t\tlength = elems.length,\r\n\t\t\tcallbackExpect = !invert;\r\n\r\n\t\t// Go through the array, only saving the items\r\n\t\t// that pass the validator function\r\n\t\tfor ( ; i < length; i++ ) {\r\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\r\n\t\t\tif ( callbackInverse !== callbackExpect ) {\r\n\t\t\t\tmatches.push( elems[ i ] );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn matches;\r\n\t},\r\n\r\n\t// arg is for internal usage only\r\n\tmap: function( elems, callback, arg ) {\r\n\t\tvar length, value,\r\n\t\t\ti = 0,\r\n\t\t\tret = [];\r\n\r\n\t\t// Go through the array, translating each of the items to their new values\r\n\t\tif ( isArrayLike( elems ) ) {\r\n\t\t\tlength = elems.length;\r\n\t\t\tfor ( ; i < length; i++ ) {\r\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\r\n\r\n\t\t\t\tif ( value != null ) {\r\n\t\t\t\t\tret.push( value );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t// Go through every key on the object,\r\n\t\t} else {\r\n\t\t\tfor ( i in elems ) {\r\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\r\n\r\n\t\t\t\tif ( value != null ) {\r\n\t\t\t\t\tret.push( value );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Flatten any nested arrays\r\n\t\treturn concat.apply( [], ret );\r\n\t},\r\n\r\n\t// A global GUID counter for objects\r\n\tguid: 1,\r\n\r\n\t// Bind a function to a context, optionally partially applying any\r\n\t// arguments.\r\n\tproxy: function( fn, context ) {\r\n\t\tvar args, proxy, tmp;\r\n\r\n\t\tif ( typeof context === \"string\" ) {\r\n\t\t\ttmp = fn[ context ];\r\n\t\t\tcontext = fn;\r\n\t\t\tfn = tmp;\r\n\t\t}\r\n\r\n\t\t// Quick check to determine if target is callable, in the spec\r\n\t\t// this throws a TypeError, but we will just return undefined.\r\n\t\tif ( !jQuery.isFunction( fn ) ) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\t// Simulated bind\r\n\t\targs = slice.call( arguments, 2 );\r\n\t\tproxy = function() {\r\n\t\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\r\n\t\t};\r\n\r\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\r\n\t\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\r\n\r\n\t\treturn proxy;\r\n\t},\r\n\r\n\tnow: function() {\r\n\t\treturn +( new Date() );\r\n\t},\r\n\r\n\t// jQuery.support is not used in Core but other projects attach their\r\n\t// properties to it so it needs to exist.\r\n\tsupport: support\r\n} );\r\n\r\n// JSHint would error on this code due to the Symbol not being defined in ES5.\r\n// Defining this global in .jshintrc would create a danger of using the global\r\n// unguarded in another place, it seems safer to just disable JSHint for these\r\n// three lines.\r\n/* jshint ignore: start */\r\nif ( typeof Symbol === \"function\" ) {\r\n\tjQuery.fn[ Symbol.iterator ] = deletedIds[ Symbol.iterator ];\r\n}\r\n/* jshint ignore: end */\r\n\r\n// Populate the class2type map\r\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\r\nfunction( i, name ) {\r\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\r\n} );\r\n\r\nfunction isArrayLike( obj ) {\r\n\r\n\t// Support: iOS 8.2 (not reproducible in simulator)\r\n\t// `in` check used to prevent JIT error (gh-2145)\r\n\t// hasOwn isn't used here due to false negatives\r\n\t// regarding Nodelist length in IE\r\n\tvar length = !!obj && \"length\" in obj && obj.length,\r\n\t\ttype = jQuery.type( obj );\r\n\r\n\tif ( type === \"function\" || jQuery.isWindow( obj ) ) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\treturn type === \"array\" || length === 0 ||\r\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\r\n}\r\nvar Sizzle =\r\n/*!\r\n * Sizzle CSS Selector Engine v2.2.1\r\n * http://sizzlejs.com/\r\n *\r\n * Copyright jQuery Foundation and other contributors\r\n * Released under the MIT license\r\n * http://jquery.org/license\r\n *\r\n * Date: 2015-10-17\r\n */\r\n(function( window ) {\r\n\r\nvar i,\r\n\tsupport,\r\n\tExpr,\r\n\tgetText,\r\n\tisXML,\r\n\ttokenize,\r\n\tcompile,\r\n\tselect,\r\n\toutermostContext,\r\n\tsortInput,\r\n\thasDuplicate,\r\n\r\n\t// Local document vars\r\n\tsetDocument,\r\n\tdocument,\r\n\tdocElem,\r\n\tdocumentIsHTML,\r\n\trbuggyQSA,\r\n\trbuggyMatches,\r\n\tmatches,\r\n\tcontains,\r\n\r\n\t// Instance-specific data\r\n\texpando = \"sizzle\" + 1 * new Date(),\r\n\tpreferredDoc = window.document,\r\n\tdirruns = 0,\r\n\tdone = 0,\r\n\tclassCache = createCache(),\r\n\ttokenCache = createCache(),\r\n\tcompilerCache = createCache(),\r\n\tsortOrder = function( a, b ) {\r\n\t\tif ( a === b ) {\r\n\t\t\thasDuplicate = true;\r\n\t\t}\r\n\t\treturn 0;\r\n\t},\r\n\r\n\t// General-purpose constants\r\n\tMAX_NEGATIVE = 1 << 31,\r\n\r\n\t// Instance methods\r\n\thasOwn = ({}).hasOwnProperty,\r\n\tarr = [],\r\n\tpop = arr.pop,\r\n\tpush_native = arr.push,\r\n\tpush = arr.push,\r\n\tslice = arr.slice,\r\n\t// Use a stripped-down indexOf as it's faster than native\r\n\t// http://jsperf.com/thor-indexof-vs-for/5\r\n\tindexOf = function( list, elem ) {\r\n\t\tvar i = 0,\r\n\t\t\tlen = list.length;\r\n\t\tfor ( ; i < len; i++ ) {\r\n\t\t\tif ( list[i] === elem ) {\r\n\t\t\t\treturn i;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn -1;\r\n\t},\r\n\r\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\r\n\r\n\t// Regular expressions\r\n\r\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\r\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\r\n\r\n\t// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\r\n\tidentifier = \"(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+\",\r\n\r\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\r\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\r\n\t\t// Operator (capture 2)\r\n\t\t\"*([*^$|!~]?=)\" + whitespace +\r\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\r\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\r\n\t\t\"*\\\\]\",\r\n\r\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\r\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\r\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\r\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\r\n\t\t// 2. simple (capture 6)\r\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\r\n\t\t// 3. anything else (capture 2)\r\n\t\t\".*\" +\r\n\t\t\")\\\\)|)\",\r\n\r\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\r\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\r\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\r\n\r\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\r\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\r\n\r\n\trattributeQuotes = new RegExp( \"=\" + whitespace + \"*([^\\\\]'\\\"]*?)\" + whitespace + \"*\\\\]\", \"g\" ),\r\n\r\n\trpseudo = new RegExp( pseudos ),\r\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\r\n\r\n\tmatchExpr = {\r\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\r\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\r\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\r\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\r\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\r\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\r\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\r\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\r\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\r\n\t\t// For use in libraries implementing .is()\r\n\t\t// We use this for POS matching in `select`\r\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\r\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\r\n\t},\r\n\r\n\trinputs = /^(?:input|select|textarea|button)$/i,\r\n\trheader = /^h\\d$/i,\r\n\r\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\r\n\r\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\r\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\r\n\r\n\trsibling = /[+~]/,\r\n\trescape = /'|\\\\/g,\r\n\r\n\t// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\r\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\r\n\tfunescape = function( _, escaped, escapedWhitespace ) {\r\n\t\tvar high = \"0x\" + escaped - 0x10000;\r\n\t\t// NaN means non-codepoint\r\n\t\t// Support: Firefox<24\r\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\r\n\t\treturn high !== high || escapedWhitespace ?\r\n\t\t\tescaped :\r\n\t\t\thigh < 0 ?\r\n\t\t\t\t// BMP codepoint\r\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\r\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\r\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\r\n\t},\r\n\r\n\t// Used for iframes\r\n\t// See setDocument()\r\n\t// Removing the function wrapper causes a \"Permission Denied\"\r\n\t// error in IE\r\n\tunloadHandler = function() {\r\n\t\tsetDocument();\r\n\t};\r\n\r\n// Optimize for push.apply( _, NodeList )\r\ntry {\r\n\tpush.apply(\r\n\t\t(arr = slice.call( preferredDoc.childNodes )),\r\n\t\tpreferredDoc.childNodes\r\n\t);\r\n\t// Support: Android<4.0\r\n\t// Detect silently failing push.apply\r\n\tarr[ preferredDoc.childNodes.length ].nodeType;\r\n} catch ( e ) {\r\n\tpush = { apply: arr.length ?\r\n\r\n\t\t// Leverage slice if possible\r\n\t\tfunction( target, els ) {\r\n\t\t\tpush_native.apply( target, slice.call(els) );\r\n\t\t} :\r\n\r\n\t\t// Support: IE<9\r\n\t\t// Otherwise append directly\r\n\t\tfunction( target, els ) {\r\n\t\t\tvar j = target.length,\r\n\t\t\t\ti = 0;\r\n\t\t\t// Can't trust NodeList.length\r\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\r\n\t\t\ttarget.length = j - 1;\r\n\t\t}\r\n\t};\r\n}\r\n\r\nfunction Sizzle( selector, context, results, seed ) {\r\n\tvar m, i, elem, nid, nidselect, match, groups, newSelector,\r\n\t\tnewContext = context && context.ownerDocument,\r\n\r\n\t\t// nodeType defaults to 9, since context defaults to document\r\n\t\tnodeType = context ? context.nodeType : 9;\r\n\r\n\tresults = results || [];\r\n\r\n\t// Return early from calls with invalid selector or context\r\n\tif ( typeof selector !== \"string\" || !selector ||\r\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\r\n\r\n\t\treturn results;\r\n\t}\r\n\r\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\r\n\tif ( !seed ) {\r\n\r\n\t\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\r\n\t\t\tsetDocument( context );\r\n\t\t}\r\n\t\tcontext = context || document;\r\n\r\n\t\tif ( documentIsHTML ) {\r\n\r\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\r\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\r\n\t\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\r\n\r\n\t\t\t\t// ID selector\r\n\t\t\t\tif ( (m = match[1]) ) {\r\n\r\n\t\t\t\t\t// Document context\r\n\t\t\t\t\tif ( nodeType === 9 ) {\r\n\t\t\t\t\t\tif ( (elem = context.getElementById( m )) ) {\r\n\r\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\r\n\t\t\t\t\t\t\t// TODO: identify versions\r\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\r\n\t\t\t\t\t\t\tif ( elem.id === m ) {\r\n\t\t\t\t\t\t\t\tresults.push( elem );\r\n\t\t\t\t\t\t\t\treturn results;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\treturn results;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Element context\r\n\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\r\n\t\t\t\t\t\t// TODO: identify versions\r\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\r\n\t\t\t\t\t\tif ( newContext && (elem = newContext.getElementById( m )) &&\r\n\t\t\t\t\t\t\tcontains( context, elem ) &&\r\n\t\t\t\t\t\t\telem.id === m ) {\r\n\r\n\t\t\t\t\t\t\tresults.push( elem );\r\n\t\t\t\t\t\t\treturn results;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t// Type selector\r\n\t\t\t\t} else if ( match[2] ) {\r\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\r\n\t\t\t\t\treturn results;\r\n\r\n\t\t\t\t// Class selector\r\n\t\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName &&\r\n\t\t\t\t\tcontext.getElementsByClassName ) {\r\n\r\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\r\n\t\t\t\t\treturn results;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Take advantage of querySelectorAll\r\n\t\t\tif ( support.qsa &&\r\n\t\t\t\t!compilerCache[ selector + \" \" ] &&\r\n\t\t\t\t(!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\r\n\r\n\t\t\t\tif ( nodeType !== 1 ) {\r\n\t\t\t\t\tnewContext = context;\r\n\t\t\t\t\tnewSelector = selector;\r\n\r\n\t\t\t\t// qSA looks outside Element context, which is not what we want\r\n\t\t\t\t// Thanks to Andrew Dupont for this workaround technique\r\n\t\t\t\t// Support: IE <=8\r\n\t\t\t\t// Exclude object elements\r\n\t\t\t\t} else if ( context.nodeName.toLowerCase() !== \"object\" ) {\r\n\r\n\t\t\t\t\t// Capture the context ID, setting it first if necessary\r\n\t\t\t\t\tif ( (nid = context.getAttribute( \"id\" )) ) {\r\n\t\t\t\t\t\tnid = nid.replace( rescape, \"\\\\$&\" );\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tcontext.setAttribute( \"id\", (nid = expando) );\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Prefix every selector in the list\r\n\t\t\t\t\tgroups = tokenize( selector );\r\n\t\t\t\t\ti = groups.length;\r\n\t\t\t\t\tnidselect = ridentifier.test( nid ) ? \"#\" + nid : \"[id='\" + nid + \"']\";\r\n\t\t\t\t\twhile ( i-- ) {\r\n\t\t\t\t\t\tgroups[i] = nidselect + \" \" + toSelector( groups[i] );\r\n\t\t\t\t\t}\r\n\t\t\t\t\tnewSelector = groups.join( \",\" );\r\n\r\n\t\t\t\t\t// Expand context for sibling selectors\r\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\r\n\t\t\t\t\t\tcontext;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( newSelector ) {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tpush.apply( results,\r\n\t\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t\treturn results;\r\n\t\t\t\t\t} catch ( qsaError ) {\r\n\t\t\t\t\t} finally {\r\n\t\t\t\t\t\tif ( nid === expando ) {\r\n\t\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// All others\r\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\r\n}\r\n\r\n/**\r\n * Create key-value caches of limited size\r\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\r\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\r\n *\tdeleting the oldest entry\r\n */\r\nfunction createCache() {\r\n\tvar keys = [];\r\n\r\n\tfunction cache( key, value ) {\r\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\r\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\r\n\t\t\t// Only keep the most recent entries\r\n\t\t\tdelete cache[ keys.shift() ];\r\n\t\t}\r\n\t\treturn (cache[ key + \" \" ] = value);\r\n\t}\r\n\treturn cache;\r\n}\r\n\r\n/**\r\n * Mark a function for special use by Sizzle\r\n * @param {Function} fn The function to mark\r\n */\r\nfunction markFunction( fn ) {\r\n\tfn[ expando ] = true;\r\n\treturn fn;\r\n}\r\n\r\n/**\r\n * Support testing using an element\r\n * @param {Function} fn Passed the created div and expects a boolean result\r\n */\r\nfunction assert( fn ) {\r\n\tvar div = document.createElement(\"div\");\r\n\r\n\ttry {\r\n\t\treturn !!fn( div );\r\n\t} catch (e) {\r\n\t\treturn false;\r\n\t} finally {\r\n\t\t// Remove from its parent by default\r\n\t\tif ( div.parentNode ) {\r\n\t\t\tdiv.parentNode.removeChild( div );\r\n\t\t}\r\n\t\t// release memory in IE\r\n\t\tdiv = null;\r\n\t}\r\n}\r\n\r\n/**\r\n * Adds the same handler for all of the specified attrs\r\n * @param {String} attrs Pipe-separated list of attributes\r\n * @param {Function} handler The method that will be applied\r\n */\r\nfunction addHandle( attrs, handler ) {\r\n\tvar arr = attrs.split(\"|\"),\r\n\t\ti = arr.length;\r\n\r\n\twhile ( i-- ) {\r\n\t\tExpr.attrHandle[ arr[i] ] = handler;\r\n\t}\r\n}\r\n\r\n/**\r\n * Checks document order of two siblings\r\n * @param {Element} a\r\n * @param {Element} b\r\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\r\n */\r\nfunction siblingCheck( a, b ) {\r\n\tvar cur = b && a,\r\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\r\n\t\t\t( ~b.sourceIndex || MAX_NEGATIVE ) -\r\n\t\t\t( ~a.sourceIndex || MAX_NEGATIVE );\r\n\r\n\t// Use IE sourceIndex if available on both nodes\r\n\tif ( diff ) {\r\n\t\treturn diff;\r\n\t}\r\n\r\n\t// Check if b follows a\r\n\tif ( cur ) {\r\n\t\twhile ( (cur = cur.nextSibling) ) {\r\n\t\t\tif ( cur === b ) {\r\n\t\t\t\treturn -1;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn a ? 1 : -1;\r\n}\r\n\r\n/**\r\n * Returns a function to use in pseudos for input types\r\n * @param {String} type\r\n */\r\nfunction createInputPseudo( type ) {\r\n\treturn function( elem ) {\r\n\t\tvar name = elem.nodeName.toLowerCase();\r\n\t\treturn name === \"input\" && elem.type === type;\r\n\t};\r\n}\r\n\r\n/**\r\n * Returns a function to use in pseudos for buttons\r\n * @param {String} type\r\n */\r\nfunction createButtonPseudo( type ) {\r\n\treturn function( elem ) {\r\n\t\tvar name = elem.nodeName.toLowerCase();\r\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\r\n\t};\r\n}\r\n\r\n/**\r\n * Returns a function to use in pseudos for positionals\r\n * @param {Function} fn\r\n */\r\nfunction createPositionalPseudo( fn ) {\r\n\treturn markFunction(function( argument ) {\r\n\t\targument = +argument;\r\n\t\treturn markFunction(function( seed, matches ) {\r\n\t\t\tvar j,\r\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\r\n\t\t\t\ti = matchIndexes.length;\r\n\r\n\t\t\t// Match elements found at the specified indexes\r\n\t\t\twhile ( i-- ) {\r\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\r\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n}\r\n\r\n/**\r\n * Checks a node for validity as a Sizzle context\r\n * @param {Element|Object=} context\r\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\r\n */\r\nfunction testContext( context ) {\r\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\r\n}\r\n\r\n// Expose support vars for convenience\r\nsupport = Sizzle.support = {};\r\n\r\n/**\r\n * Detects XML nodes\r\n * @param {Element|Object} elem An element or a document\r\n * @returns {Boolean} True iff elem is a non-HTML XML node\r\n */\r\nisXML = Sizzle.isXML = function( elem ) {\r\n\t// documentElement is verified for cases where it doesn't yet exist\r\n\t// (such as loading iframes in IE - #4833)\r\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\r\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\r\n};\r\n\r\n/**\r\n * Sets document-related variables once based on the current document\r\n * @param {Element|Object} [doc] An element or document object to use to set the document\r\n * @returns {Object} Returns the current document\r\n */\r\nsetDocument = Sizzle.setDocument = function( node ) {\r\n\tvar hasCompare, parent,\r\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\r\n\r\n\t// Return early if doc is invalid or already selected\r\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\r\n\t\treturn document;\r\n\t}\r\n\r\n\t// Update global variables\r\n\tdocument = doc;\r\n\tdocElem = document.documentElement;\r\n\tdocumentIsHTML = !isXML( document );\r\n\r\n\t// Support: IE 9-11, Edge\r\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\r\n\tif ( (parent = document.defaultView) && parent.top !== parent ) {\r\n\t\t// Support: IE 11\r\n\t\tif ( parent.addEventListener ) {\r\n\t\t\tparent.addEventListener( \"unload\", unloadHandler, false );\r\n\r\n\t\t// Support: IE 9 - 10 only\r\n\t\t} else if ( parent.attachEvent ) {\r\n\t\t\tparent.attachEvent( \"onunload\", unloadHandler );\r\n\t\t}\r\n\t}\r\n\r\n\t/* Attributes\r\n\t---------------------------------------------------------------------- */\r\n\r\n\t// Support: IE<8\r\n\t// Verify that getAttribute really returns attributes and not properties\r\n\t// (excepting IE8 booleans)\r\n\tsupport.attributes = assert(function( div ) {\r\n\t\tdiv.className = \"i\";\r\n\t\treturn !div.getAttribute(\"className\");\r\n\t});\r\n\r\n\t/* getElement(s)By*\r\n\t---------------------------------------------------------------------- */\r\n\r\n\t// Check if getElementsByTagName(\"*\") returns only elements\r\n\tsupport.getElementsByTagName = assert(function( div ) {\r\n\t\tdiv.appendChild( document.createComment(\"\") );\r\n\t\treturn !div.getElementsByTagName(\"*\").length;\r\n\t});\r\n\r\n\t// Support: IE<9\r\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\r\n\r\n\t// Support: IE<10\r\n\t// Check if getElementById returns elements by name\r\n\t// The broken getElementById methods don't pick up programatically-set names,\r\n\t// so use a roundabout getElementsByName test\r\n\tsupport.getById = assert(function( div ) {\r\n\t\tdocElem.appendChild( div ).id = expando;\r\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\r\n\t});\r\n\r\n\t// ID find and filter\r\n\tif ( support.getById ) {\r\n\t\tExpr.find[\"ID\"] = function( id, context ) {\r\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\r\n\t\t\t\tvar m = context.getElementById( id );\r\n\t\t\t\treturn m ? [ m ] : [];\r\n\t\t\t}\r\n\t\t};\r\n\t\tExpr.filter[\"ID\"] = function( id ) {\r\n\t\t\tvar attrId = id.replace( runescape, funescape );\r\n\t\t\treturn function( elem ) {\r\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\r\n\t\t\t};\r\n\t\t};\r\n\t} else {\r\n\t\t// Support: IE6/7\r\n\t\t// getElementById is not reliable as a find shortcut\r\n\t\tdelete Expr.find[\"ID\"];\r\n\r\n\t\tExpr.filter[\"ID\"] = function( id ) {\r\n\t\t\tvar attrId = id.replace( runescape, funescape );\r\n\t\t\treturn function( elem ) {\r\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\r\n\t\t\t\t\telem.getAttributeNode(\"id\");\r\n\t\t\t\treturn node && node.value === attrId;\r\n\t\t\t};\r\n\t\t};\r\n\t}\r\n\r\n\t// Tag\r\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\r\n\t\tfunction( tag, context ) {\r\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\r\n\t\t\t\treturn context.getElementsByTagName( tag );\r\n\r\n\t\t\t// DocumentFragment nodes don't have gEBTN\r\n\t\t\t} else if ( support.qsa ) {\r\n\t\t\t\treturn context.querySelectorAll( tag );\r\n\t\t\t}\r\n\t\t} :\r\n\r\n\t\tfunction( tag, context ) {\r\n\t\t\tvar elem,\r\n\t\t\t\ttmp = [],\r\n\t\t\t\ti = 0,\r\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\r\n\t\t\t\tresults = context.getElementsByTagName( tag );\r\n\r\n\t\t\t// Filter out possible comments\r\n\t\t\tif ( tag === \"*\" ) {\r\n\t\t\t\twhile ( (elem = results[i++]) ) {\r\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\r\n\t\t\t\t\t\ttmp.push( elem );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn tmp;\r\n\t\t\t}\r\n\t\t\treturn results;\r\n\t\t};\r\n\r\n\t// Class\r\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\r\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\r\n\t\t\treturn context.getElementsByClassName( className );\r\n\t\t}\r\n\t};\r\n\r\n\t/* QSA/matchesSelector\r\n\t---------------------------------------------------------------------- */\r\n\r\n\t// QSA and matchesSelector support\r\n\r\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\r\n\trbuggyMatches = [];\r\n\r\n\t// qSa(:focus) reports false when true (Chrome 21)\r\n\t// We allow this because of a bug in IE8/9 that throws an error\r\n\t// whenever `document.activeElement` is accessed on an iframe\r\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\r\n\t// See http://bugs.jquery.com/ticket/13378\r\n\trbuggyQSA = [];\r\n\r\n\tif ( (support.qsa = rnative.test( document.querySelectorAll )) ) {\r\n\t\t// Build QSA regex\r\n\t\t// Regex strategy adopted from Diego Perini\r\n\t\tassert(function( div ) {\r\n\t\t\t// Select is set to empty string on purpose\r\n\t\t\t// This is to test IE's treatment of not explicitly\r\n\t\t\t// setting a boolean content attribute,\r\n\t\t\t// since its presence should be enough\r\n\t\t\t// http://bugs.jquery.com/ticket/12359\r\n\t\t\tdocElem.appendChild( div ).innerHTML = \"\" +\r\n\t\t\t\t\"\";\r\n\r\n\t\t\t// Support: IE8, Opera 11-12.16\r\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\r\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\r\n\t\t\t// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\r\n\t\t\tif ( div.querySelectorAll(\"[msallowcapture^='']\").length ) {\r\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\r\n\t\t\t}\r\n\r\n\t\t\t// Support: IE8\r\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\r\n\t\t\tif ( !div.querySelectorAll(\"[selected]\").length ) {\r\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\r\n\t\t\t}\r\n\r\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\r\n\t\t\tif ( !div.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\r\n\t\t\t\trbuggyQSA.push(\"~=\");\r\n\t\t\t}\r\n\r\n\t\t\t// Webkit/Opera - :checked should return selected option elements\r\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\r\n\t\t\t// IE8 throws error here and will not see later tests\r\n\t\t\tif ( !div.querySelectorAll(\":checked\").length ) {\r\n\t\t\t\trbuggyQSA.push(\":checked\");\r\n\t\t\t}\r\n\r\n\t\t\t// Support: Safari 8+, iOS 8+\r\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\r\n\t\t\t// In-page `selector#id sibing-combinator selector` fails\r\n\t\t\tif ( !div.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\r\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tassert(function( div ) {\r\n\t\t\t// Support: Windows 8 Native Apps\r\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\r\n\t\t\tvar input = document.createElement(\"input\");\r\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\r\n\t\t\tdiv.appendChild( input ).setAttribute( \"name\", \"D\" );\r\n\r\n\t\t\t// Support: IE8\r\n\t\t\t// Enforce case-sensitivity of name attribute\r\n\t\t\tif ( div.querySelectorAll(\"[name=d]\").length ) {\r\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\r\n\t\t\t}\r\n\r\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\r\n\t\t\t// IE8 throws error here and will not see later tests\r\n\t\t\tif ( !div.querySelectorAll(\":enabled\").length ) {\r\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\r\n\t\t\t}\r\n\r\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\r\n\t\t\tdiv.querySelectorAll(\"*,:x\");\r\n\t\t\trbuggyQSA.push(\",.*:\");\r\n\t\t});\r\n\t}\r\n\r\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\r\n\t\tdocElem.webkitMatchesSelector ||\r\n\t\tdocElem.mozMatchesSelector ||\r\n\t\tdocElem.oMatchesSelector ||\r\n\t\tdocElem.msMatchesSelector) )) ) {\r\n\r\n\t\tassert(function( div ) {\r\n\t\t\t// Check to see if it's possible to do matchesSelector\r\n\t\t\t// on a disconnected node (IE 9)\r\n\t\t\tsupport.disconnectedMatch = matches.call( div, \"div\" );\r\n\r\n\t\t\t// This should fail with an exception\r\n\t\t\t// Gecko does not error, returns false instead\r\n\t\t\tmatches.call( div, \"[s!='']:x\" );\r\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\r\n\t\t});\r\n\t}\r\n\r\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\r\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\r\n\r\n\t/* Contains\r\n\t---------------------------------------------------------------------- */\r\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\r\n\r\n\t// Element contains another\r\n\t// Purposefully self-exclusive\r\n\t// As in, an element does not contain itself\r\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\r\n\t\tfunction( a, b ) {\r\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\r\n\t\t\t\tbup = b && b.parentNode;\r\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\r\n\t\t\t\tadown.contains ?\r\n\t\t\t\t\tadown.contains( bup ) :\r\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\r\n\t\t\t));\r\n\t\t} :\r\n\t\tfunction( a, b ) {\r\n\t\t\tif ( b ) {\r\n\t\t\t\twhile ( (b = b.parentNode) ) {\r\n\t\t\t\t\tif ( b === a ) {\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t};\r\n\r\n\t/* Sorting\r\n\t---------------------------------------------------------------------- */\r\n\r\n\t// Document order sorting\r\n\tsortOrder = hasCompare ?\r\n\tfunction( a, b ) {\r\n\r\n\t\t// Flag for duplicate removal\r\n\t\tif ( a === b ) {\r\n\t\t\thasDuplicate = true;\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\t// Sort on method existence if only one input has compareDocumentPosition\r\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\r\n\t\tif ( compare ) {\r\n\t\t\treturn compare;\r\n\t\t}\r\n\r\n\t\t// Calculate position if both inputs belong to the same document\r\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\r\n\t\t\ta.compareDocumentPosition( b ) :\r\n\r\n\t\t\t// Otherwise we know they are disconnected\r\n\t\t\t1;\r\n\r\n\t\t// Disconnected nodes\r\n\t\tif ( compare & 1 ||\r\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\r\n\r\n\t\t\t// Choose the first element that is related to our preferred document\r\n\t\t\tif ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\r\n\t\t\t\treturn -1;\r\n\t\t\t}\r\n\t\t\tif ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\r\n\t\t\t\treturn 1;\r\n\t\t\t}\r\n\r\n\t\t\t// Maintain original order\r\n\t\t\treturn sortInput ?\r\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\r\n\t\t\t\t0;\r\n\t\t}\r\n\r\n\t\treturn compare & 4 ? -1 : 1;\r\n\t} :\r\n\tfunction( a, b ) {\r\n\t\t// Exit early if the nodes are identical\r\n\t\tif ( a === b ) {\r\n\t\t\thasDuplicate = true;\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\tvar cur,\r\n\t\t\ti = 0,\r\n\t\t\taup = a.parentNode,\r\n\t\t\tbup = b.parentNode,\r\n\t\t\tap = [ a ],\r\n\t\t\tbp = [ b ];\r\n\r\n\t\t// Parentless nodes are either documents or disconnected\r\n\t\tif ( !aup || !bup ) {\r\n\t\t\treturn a === document ? -1 :\r\n\t\t\t\tb === document ? 1 :\r\n\t\t\t\taup ? -1 :\r\n\t\t\t\tbup ? 1 :\r\n\t\t\t\tsortInput ?\r\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\r\n\t\t\t\t0;\r\n\r\n\t\t// If the nodes are siblings, we can do a quick check\r\n\t\t} else if ( aup === bup ) {\r\n\t\t\treturn siblingCheck( a, b );\r\n\t\t}\r\n\r\n\t\t// Otherwise we need full lists of their ancestors for comparison\r\n\t\tcur = a;\r\n\t\twhile ( (cur = cur.parentNode) ) {\r\n\t\t\tap.unshift( cur );\r\n\t\t}\r\n\t\tcur = b;\r\n\t\twhile ( (cur = cur.parentNode) ) {\r\n\t\t\tbp.unshift( cur );\r\n\t\t}\r\n\r\n\t\t// Walk down the tree looking for a discrepancy\r\n\t\twhile ( ap[i] === bp[i] ) {\r\n\t\t\ti++;\r\n\t\t}\r\n\r\n\t\treturn i ?\r\n\t\t\t// Do a sibling check if the nodes have a common ancestor\r\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\r\n\r\n\t\t\t// Otherwise nodes in our document sort first\r\n\t\t\tap[i] === preferredDoc ? -1 :\r\n\t\t\tbp[i] === preferredDoc ? 1 :\r\n\t\t\t0;\r\n\t};\r\n\r\n\treturn document;\r\n};\r\n\r\nSizzle.matches = function( expr, elements ) {\r\n\treturn Sizzle( expr, null, null, elements );\r\n};\r\n\r\nSizzle.matchesSelector = function( elem, expr ) {\r\n\t// Set document vars if needed\r\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\r\n\t\tsetDocument( elem );\r\n\t}\r\n\r\n\t// Make sure that attribute selectors are quoted\r\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\r\n\r\n\tif ( support.matchesSelector && documentIsHTML &&\r\n\t\t!compilerCache[ expr + \" \" ] &&\r\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\r\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\r\n\r\n\t\ttry {\r\n\t\t\tvar ret = matches.call( elem, expr );\r\n\r\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\r\n\t\t\tif ( ret || support.disconnectedMatch ||\r\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\r\n\t\t\t\t\t// fragment in IE 9\r\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\r\n\t\t\t\treturn ret;\r\n\t\t\t}\r\n\t\t} catch (e) {}\r\n\t}\r\n\r\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\r\n};\r\n\r\nSizzle.contains = function( context, elem ) {\r\n\t// Set document vars if needed\r\n\tif ( ( context.ownerDocument || context ) !== document ) {\r\n\t\tsetDocument( context );\r\n\t}\r\n\treturn contains( context, elem );\r\n};\r\n\r\nSizzle.attr = function( elem, name ) {\r\n\t// Set document vars if needed\r\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\r\n\t\tsetDocument( elem );\r\n\t}\r\n\r\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\r\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\r\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\r\n\t\t\tfn( elem, name, !documentIsHTML ) :\r\n\t\t\tundefined;\r\n\r\n\treturn val !== undefined ?\r\n\t\tval :\r\n\t\tsupport.attributes || !documentIsHTML ?\r\n\t\t\telem.getAttribute( name ) :\r\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\r\n\t\t\t\tval.value :\r\n\t\t\t\tnull;\r\n};\r\n\r\nSizzle.error = function( msg ) {\r\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\r\n};\r\n\r\n/**\r\n * Document sorting and removing duplicates\r\n * @param {ArrayLike} results\r\n */\r\nSizzle.uniqueSort = function( results ) {\r\n\tvar elem,\r\n\t\tduplicates = [],\r\n\t\tj = 0,\r\n\t\ti = 0;\r\n\r\n\t// Unless we *know* we can detect duplicates, assume their presence\r\n\thasDuplicate = !support.detectDuplicates;\r\n\tsortInput = !support.sortStable && results.slice( 0 );\r\n\tresults.sort( sortOrder );\r\n\r\n\tif ( hasDuplicate ) {\r\n\t\twhile ( (elem = results[i++]) ) {\r\n\t\t\tif ( elem === results[ i ] ) {\r\n\t\t\t\tj = duplicates.push( i );\r\n\t\t\t}\r\n\t\t}\r\n\t\twhile ( j-- ) {\r\n\t\t\tresults.splice( duplicates[ j ], 1 );\r\n\t\t}\r\n\t}\r\n\r\n\t// Clear input after sorting to release objects\r\n\t// See https://github.com/jquery/sizzle/pull/225\r\n\tsortInput = null;\r\n\r\n\treturn results;\r\n};\r\n\r\n/**\r\n * Utility function for retrieving the text value of an array of DOM nodes\r\n * @param {Array|Element} elem\r\n */\r\ngetText = Sizzle.getText = function( elem ) {\r\n\tvar node,\r\n\t\tret = \"\",\r\n\t\ti = 0,\r\n\t\tnodeType = elem.nodeType;\r\n\r\n\tif ( !nodeType ) {\r\n\t\t// If no nodeType, this is expected to be an array\r\n\t\twhile ( (node = elem[i++]) ) {\r\n\t\t\t// Do not traverse comment nodes\r\n\t\t\tret += getText( node );\r\n\t\t}\r\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\r\n\t\t// Use textContent for elements\r\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\r\n\t\tif ( typeof elem.textContent === \"string\" ) {\r\n\t\t\treturn elem.textContent;\r\n\t\t} else {\r\n\t\t\t// Traverse its children\r\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\r\n\t\t\t\tret += getText( elem );\r\n\t\t\t}\r\n\t\t}\r\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\r\n\t\treturn elem.nodeValue;\r\n\t}\r\n\t// Do not include comment or processing instruction nodes\r\n\r\n\treturn ret;\r\n};\r\n\r\nExpr = Sizzle.selectors = {\r\n\r\n\t// Can be adjusted by the user\r\n\tcacheLength: 50,\r\n\r\n\tcreatePseudo: markFunction,\r\n\r\n\tmatch: matchExpr,\r\n\r\n\tattrHandle: {},\r\n\r\n\tfind: {},\r\n\r\n\trelative: {\r\n\t\t\">\": { dir: \"parentNode\", first: true },\r\n\t\t\" \": { dir: \"parentNode\" },\r\n\t\t\"+\": { dir: \"previousSibling\", first: true },\r\n\t\t\"~\": { dir: \"previousSibling\" }\r\n\t},\r\n\r\n\tpreFilter: {\r\n\t\t\"ATTR\": function( match ) {\r\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\r\n\r\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\r\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\r\n\r\n\t\t\tif ( match[2] === \"~=\" ) {\r\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\r\n\t\t\t}\r\n\r\n\t\t\treturn match.slice( 0, 4 );\r\n\t\t},\r\n\r\n\t\t\"CHILD\": function( match ) {\r\n\t\t\t/* matches from matchExpr[\"CHILD\"]\r\n\t\t\t\t1 type (only|nth|...)\r\n\t\t\t\t2 what (child|of-type)\r\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\r\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\r\n\t\t\t\t5 sign of xn-component\r\n\t\t\t\t6 x of xn-component\r\n\t\t\t\t7 sign of y-component\r\n\t\t\t\t8 y of y-component\r\n\t\t\t*/\r\n\t\t\tmatch[1] = match[1].toLowerCase();\r\n\r\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\r\n\t\t\t\t// nth-* requires argument\r\n\t\t\t\tif ( !match[3] ) {\r\n\t\t\t\t\tSizzle.error( match[0] );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\r\n\t\t\t\t// remember that false/true cast respectively to 0/1\r\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\r\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\r\n\r\n\t\t\t// other types prohibit arguments\r\n\t\t\t} else if ( match[3] ) {\r\n\t\t\t\tSizzle.error( match[0] );\r\n\t\t\t}\r\n\r\n\t\t\treturn match;\r\n\t\t},\r\n\r\n\t\t\"PSEUDO\": function( match ) {\r\n\t\t\tvar excess,\r\n\t\t\t\tunquoted = !match[6] && match[2];\r\n\r\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\r\n\t\t\t// Accept quoted arguments as-is\r\n\t\t\tif ( match[3] ) {\r\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\r\n\r\n\t\t\t// Strip excess characters from unquoted arguments\r\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\r\n\t\t\t\t// Get excess from tokenize (recursively)\r\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\r\n\t\t\t\t// advance to the next closing parenthesis\r\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\r\n\r\n\t\t\t\t// excess is a negative index\r\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\r\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\r\n\t\t\t}\r\n\r\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\r\n\t\t\treturn match.slice( 0, 3 );\r\n\t\t}\r\n\t},\r\n\r\n\tfilter: {\r\n\r\n\t\t\"TAG\": function( nodeNameSelector ) {\r\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\r\n\t\t\treturn nodeNameSelector === \"*\" ?\r\n\t\t\t\tfunction() { return true; } :\r\n\t\t\t\tfunction( elem ) {\r\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\r\n\t\t\t\t};\r\n\t\t},\r\n\r\n\t\t\"CLASS\": function( className ) {\r\n\t\t\tvar pattern = classCache[ className + \" \" ];\r\n\r\n\t\t\treturn pattern ||\r\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\r\n\t\t\t\tclassCache( className, function( elem ) {\r\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\r\n\t\t\t\t});\r\n\t\t},\r\n\r\n\t\t\"ATTR\": function( name, operator, check ) {\r\n\t\t\treturn function( elem ) {\r\n\t\t\t\tvar result = Sizzle.attr( elem, name );\r\n\r\n\t\t\t\tif ( result == null ) {\r\n\t\t\t\t\treturn operator === \"!=\";\r\n\t\t\t\t}\r\n\t\t\t\tif ( !operator ) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tresult += \"\";\r\n\r\n\t\t\t\treturn operator === \"=\" ? result === check :\r\n\t\t\t\t\toperator === \"!=\" ? result !== check :\r\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\r\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\r\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\r\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\r\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\r\n\t\t\t\t\tfalse;\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\r\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\r\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\r\n\t\t\t\tofType = what === \"of-type\";\r\n\r\n\t\t\treturn first === 1 && last === 0 ?\r\n\r\n\t\t\t\t// Shortcut for :nth-*(n)\r\n\t\t\t\tfunction( elem ) {\r\n\t\t\t\t\treturn !!elem.parentNode;\r\n\t\t\t\t} :\r\n\r\n\t\t\t\tfunction( elem, context, xml ) {\r\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\r\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\r\n\t\t\t\t\t\tparent = elem.parentNode,\r\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\r\n\t\t\t\t\t\tuseCache = !xml && !ofType,\r\n\t\t\t\t\t\tdiff = false;\r\n\r\n\t\t\t\t\tif ( parent ) {\r\n\r\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\r\n\t\t\t\t\t\tif ( simple ) {\r\n\t\t\t\t\t\t\twhile ( dir ) {\r\n\t\t\t\t\t\t\t\tnode = elem;\r\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\r\n\t\t\t\t\t\t\t\t\tif ( ofType ?\r\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\r\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\r\n\r\n\t\t\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\r\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\r\n\r\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\r\n\t\t\t\t\t\tif ( forward && useCache ) {\r\n\r\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\r\n\r\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\r\n\t\t\t\t\t\t\tnode = parent;\r\n\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\r\n\r\n\t\t\t\t\t\t\t// Support: IE <9 only\r\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\r\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\r\n\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\r\n\r\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\r\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\r\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\r\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\r\n\r\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\r\n\r\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\r\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\r\n\r\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\r\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\r\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t// Use previously-cached element index if available\r\n\t\t\t\t\t\t\tif ( useCache ) {\r\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\r\n\t\t\t\t\t\t\t\tnode = elem;\r\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\r\n\r\n\t\t\t\t\t\t\t\t// Support: IE <9 only\r\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\r\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\r\n\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\r\n\r\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\r\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\r\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t// xml :nth-child(...)\r\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\r\n\t\t\t\t\t\t\tif ( diff === false ) {\r\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\r\n\t\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\r\n\t\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\r\n\r\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\r\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\r\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\r\n\t\t\t\t\t\t\t\t\t\t++diff ) {\r\n\r\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\r\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\r\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\r\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\r\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\r\n\t\t\t\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\r\n\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\r\n\t\t\t\t\t\tdiff -= last;\r\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t},\r\n\r\n\t\t\"PSEUDO\": function( pseudo, argument ) {\r\n\t\t\t// pseudo-class names are case-insensitive\r\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\r\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\r\n\t\t\t// Remember that setFilters inherits from pseudos\r\n\t\t\tvar args,\r\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\r\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\r\n\r\n\t\t\t// The user may use createPseudo to indicate that\r\n\t\t\t// arguments are needed to create the filter function\r\n\t\t\t// just as Sizzle does\r\n\t\t\tif ( fn[ expando ] ) {\r\n\t\t\t\treturn fn( argument );\r\n\t\t\t}\r\n\r\n\t\t\t// But maintain support for old signatures\r\n\t\t\tif ( fn.length > 1 ) {\r\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\r\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\r\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\r\n\t\t\t\t\t\tvar idx,\r\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\r\n\t\t\t\t\t\t\ti = matched.length;\r\n\t\t\t\t\t\twhile ( i-- ) {\r\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\r\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}) :\r\n\t\t\t\t\tfunction( elem ) {\r\n\t\t\t\t\t\treturn fn( elem, 0, args );\r\n\t\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\treturn fn;\r\n\t\t}\r\n\t},\r\n\r\n\tpseudos: {\r\n\t\t// Potentially complex pseudos\r\n\t\t\"not\": markFunction(function( selector ) {\r\n\t\t\t// Trim the selector passed to compile\r\n\t\t\t// to avoid treating leading and trailing\r\n\t\t\t// spaces as combinators\r\n\t\t\tvar input = [],\r\n\t\t\t\tresults = [],\r\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\r\n\r\n\t\t\treturn matcher[ expando ] ?\r\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\r\n\t\t\t\t\tvar elem,\r\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\r\n\t\t\t\t\t\ti = seed.length;\r\n\r\n\t\t\t\t\t// Match elements unmatched by `matcher`\r\n\t\t\t\t\twhile ( i-- ) {\r\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\r\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}) :\r\n\t\t\t\tfunction( elem, context, xml ) {\r\n\t\t\t\t\tinput[0] = elem;\r\n\t\t\t\t\tmatcher( input, null, xml, results );\r\n\t\t\t\t\t// Don't keep the element (issue #299)\r\n\t\t\t\t\tinput[0] = null;\r\n\t\t\t\t\treturn !results.pop();\r\n\t\t\t\t};\r\n\t\t}),\r\n\r\n\t\t\"has\": markFunction(function( selector ) {\r\n\t\t\treturn function( elem ) {\r\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\r\n\t\t\t};\r\n\t\t}),\r\n\r\n\t\t\"contains\": markFunction(function( text ) {\r\n\t\t\ttext = text.replace( runescape, funescape );\r\n\t\t\treturn function( elem ) {\r\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\r\n\t\t\t};\r\n\t\t}),\r\n\r\n\t\t// \"Whether an element is represented by a :lang() selector\r\n\t\t// is based solely on the element's language value\r\n\t\t// being equal to the identifier C,\r\n\t\t// or beginning with the identifier C immediately followed by \"-\".\r\n\t\t// The matching of C against the element's language value is performed case-insensitively.\r\n\t\t// The identifier C does not have to be a valid language name.\"\r\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\r\n\t\t\"lang\": markFunction( function( lang ) {\r\n\t\t\t// lang value must be a valid identifier\r\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\r\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\r\n\t\t\t}\r\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\r\n\t\t\treturn function( elem ) {\r\n\t\t\t\tvar elemLang;\r\n\t\t\t\tdo {\r\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\r\n\t\t\t\t\t\telem.lang :\r\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\r\n\r\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\r\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\r\n\t\t\t\treturn false;\r\n\t\t\t};\r\n\t\t}),\r\n\r\n\t\t// Miscellaneous\r\n\t\t\"target\": function( elem ) {\r\n\t\t\tvar hash = window.location && window.location.hash;\r\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\r\n\t\t},\r\n\r\n\t\t\"root\": function( elem ) {\r\n\t\t\treturn elem === docElem;\r\n\t\t},\r\n\r\n\t\t\"focus\": function( elem ) {\r\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\r\n\t\t},\r\n\r\n\t\t// Boolean properties\r\n\t\t\"enabled\": function( elem ) {\r\n\t\t\treturn elem.disabled === false;\r\n\t\t},\r\n\r\n\t\t\"disabled\": function( elem ) {\r\n\t\t\treturn elem.disabled === true;\r\n\t\t},\r\n\r\n\t\t\"checked\": function( elem ) {\r\n\t\t\t// In CSS3, :checked should return both checked and selected elements\r\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\r\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\r\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\r\n\t\t},\r\n\r\n\t\t\"selected\": function( elem ) {\r\n\t\t\t// Accessing this property makes selected-by-default\r\n\t\t\t// options in Safari work properly\r\n\t\t\tif ( elem.parentNode ) {\r\n\t\t\t\telem.parentNode.selectedIndex;\r\n\t\t\t}\r\n\r\n\t\t\treturn elem.selected === true;\r\n\t\t},\r\n\r\n\t\t// Contents\r\n\t\t\"empty\": function( elem ) {\r\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\r\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\r\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\r\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\r\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\r\n\t\t\t\tif ( elem.nodeType < 6 ) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t},\r\n\r\n\t\t\"parent\": function( elem ) {\r\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\r\n\t\t},\r\n\r\n\t\t// Element/input types\r\n\t\t\"header\": function( elem ) {\r\n\t\t\treturn rheader.test( elem.nodeName );\r\n\t\t},\r\n\r\n\t\t\"input\": function( elem ) {\r\n\t\t\treturn rinputs.test( elem.nodeName );\r\n\t\t},\r\n\r\n\t\t\"button\": function( elem ) {\r\n\t\t\tvar name = elem.nodeName.toLowerCase();\r\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\r\n\t\t},\r\n\r\n\t\t\"text\": function( elem ) {\r\n\t\t\tvar attr;\r\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\r\n\t\t\t\telem.type === \"text\" &&\r\n\r\n\t\t\t\t// Support: IE<8\r\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\r\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\r\n\t\t},\r\n\r\n\t\t// Position-in-collection\r\n\t\t\"first\": createPositionalPseudo(function() {\r\n\t\t\treturn [ 0 ];\r\n\t\t}),\r\n\r\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\r\n\t\t\treturn [ length - 1 ];\r\n\t\t}),\r\n\r\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\r\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\r\n\t\t}),\r\n\r\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\r\n\t\t\tvar i = 0;\r\n\t\t\tfor ( ; i < length; i += 2 ) {\r\n\t\t\t\tmatchIndexes.push( i );\r\n\t\t\t}\r\n\t\t\treturn matchIndexes;\r\n\t\t}),\r\n\r\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\r\n\t\t\tvar i = 1;\r\n\t\t\tfor ( ; i < length; i += 2 ) {\r\n\t\t\t\tmatchIndexes.push( i );\r\n\t\t\t}\r\n\t\t\treturn matchIndexes;\r\n\t\t}),\r\n\r\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\r\n\t\t\tvar i = argument < 0 ? argument + length : argument;\r\n\t\t\tfor ( ; --i >= 0; ) {\r\n\t\t\t\tmatchIndexes.push( i );\r\n\t\t\t}\r\n\t\t\treturn matchIndexes;\r\n\t\t}),\r\n\r\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\r\n\t\t\tvar i = argument < 0 ? argument + length : argument;\r\n\t\t\tfor ( ; ++i < length; ) {\r\n\t\t\t\tmatchIndexes.push( i );\r\n\t\t\t}\r\n\t\t\treturn matchIndexes;\r\n\t\t})\r\n\t}\r\n};\r\n\r\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\r\n\r\n// Add button/input type pseudos\r\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\r\n\tExpr.pseudos[ i ] = createInputPseudo( i );\r\n}\r\nfor ( i in { submit: true, reset: true } ) {\r\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\r\n}\r\n\r\n// Easy API for creating new setFilters\r\nfunction setFilters() {}\r\nsetFilters.prototype = Expr.filters = Expr.pseudos;\r\nExpr.setFilters = new setFilters();\r\n\r\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\r\n\tvar matched, match, tokens, type,\r\n\t\tsoFar, groups, preFilters,\r\n\t\tcached = tokenCache[ selector + \" \" ];\r\n\r\n\tif ( cached ) {\r\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\r\n\t}\r\n\r\n\tsoFar = selector;\r\n\tgroups = [];\r\n\tpreFilters = Expr.preFilter;\r\n\r\n\twhile ( soFar ) {\r\n\r\n\t\t// Comma and first run\r\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\r\n\t\t\tif ( match ) {\r\n\t\t\t\t// Don't consume trailing commas as valid\r\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\r\n\t\t\t}\r\n\t\t\tgroups.push( (tokens = []) );\r\n\t\t}\r\n\r\n\t\tmatched = false;\r\n\r\n\t\t// Combinators\r\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\r\n\t\t\tmatched = match.shift();\r\n\t\t\ttokens.push({\r\n\t\t\t\tvalue: matched,\r\n\t\t\t\t// Cast descendant combinators to space\r\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\r\n\t\t\t});\r\n\t\t\tsoFar = soFar.slice( matched.length );\r\n\t\t}\r\n\r\n\t\t// Filters\r\n\t\tfor ( type in Expr.filter ) {\r\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\r\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\r\n\t\t\t\tmatched = match.shift();\r\n\t\t\t\ttokens.push({\r\n\t\t\t\t\tvalue: matched,\r\n\t\t\t\t\ttype: type,\r\n\t\t\t\t\tmatches: match\r\n\t\t\t\t});\r\n\t\t\t\tsoFar = soFar.slice( matched.length );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ( !matched ) {\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t// Return the length of the invalid excess\r\n\t// if we're just parsing\r\n\t// Otherwise, throw an error or return tokens\r\n\treturn parseOnly ?\r\n\t\tsoFar.length :\r\n\t\tsoFar ?\r\n\t\t\tSizzle.error( selector ) :\r\n\t\t\t// Cache the tokens\r\n\t\t\ttokenCache( selector, groups ).slice( 0 );\r\n};\r\n\r\nfunction toSelector( tokens ) {\r\n\tvar i = 0,\r\n\t\tlen = tokens.length,\r\n\t\tselector = \"\";\r\n\tfor ( ; i < len; i++ ) {\r\n\t\tselector += tokens[i].value;\r\n\t}\r\n\treturn selector;\r\n}\r\n\r\nfunction addCombinator( matcher, combinator, base ) {\r\n\tvar dir = combinator.dir,\r\n\t\tcheckNonElements = base && dir === \"parentNode\",\r\n\t\tdoneName = done++;\r\n\r\n\treturn combinator.first ?\r\n\t\t// Check against closest ancestor/preceding element\r\n\t\tfunction( elem, context, xml ) {\r\n\t\t\twhile ( (elem = elem[ dir ]) ) {\r\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\r\n\t\t\t\t\treturn matcher( elem, context, xml );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} :\r\n\r\n\t\t// Check against all ancestor/preceding elements\r\n\t\tfunction( elem, context, xml ) {\r\n\t\t\tvar oldCache, uniqueCache, outerCache,\r\n\t\t\t\tnewCache = [ dirruns, doneName ];\r\n\r\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\r\n\t\t\tif ( xml ) {\r\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\r\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\r\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\r\n\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\r\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\r\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\r\n\r\n\t\t\t\t\t\t// Support: IE <9 only\r\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\r\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});\r\n\r\n\t\t\t\t\t\tif ( (oldCache = uniqueCache[ dir ]) &&\r\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\r\n\r\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\r\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\r\n\t\t\t\t\t\t\tuniqueCache[ dir ] = newCache;\r\n\r\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\r\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\r\n\t\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n}\r\n\r\nfunction elementMatcher( matchers ) {\r\n\treturn matchers.length > 1 ?\r\n\t\tfunction( elem, context, xml ) {\r\n\t\t\tvar i = matchers.length;\r\n\t\t\twhile ( i-- ) {\r\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t} :\r\n\t\tmatchers[0];\r\n}\r\n\r\nfunction multipleContexts( selector, contexts, results ) {\r\n\tvar i = 0,\r\n\t\tlen = contexts.length;\r\n\tfor ( ; i < len; i++ ) {\r\n\t\tSizzle( selector, contexts[i], results );\r\n\t}\r\n\treturn results;\r\n}\r\n\r\nfunction condense( unmatched, map, filter, context, xml ) {\r\n\tvar elem,\r\n\t\tnewUnmatched = [],\r\n\t\ti = 0,\r\n\t\tlen = unmatched.length,\r\n\t\tmapped = map != null;\r\n\r\n\tfor ( ; i < len; i++ ) {\r\n\t\tif ( (elem = unmatched[i]) ) {\r\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\r\n\t\t\t\tnewUnmatched.push( elem );\r\n\t\t\t\tif ( mapped ) {\r\n\t\t\t\t\tmap.push( i );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn newUnmatched;\r\n}\r\n\r\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\r\n\tif ( postFilter && !postFilter[ expando ] ) {\r\n\t\tpostFilter = setMatcher( postFilter );\r\n\t}\r\n\tif ( postFinder && !postFinder[ expando ] ) {\r\n\t\tpostFinder = setMatcher( postFinder, postSelector );\r\n\t}\r\n\treturn markFunction(function( seed, results, context, xml ) {\r\n\t\tvar temp, i, elem,\r\n\t\t\tpreMap = [],\r\n\t\t\tpostMap = [],\r\n\t\t\tpreexisting = results.length,\r\n\r\n\t\t\t// Get initial elements from seed or context\r\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\r\n\r\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\r\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\r\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\r\n\t\t\t\telems,\r\n\r\n\t\t\tmatcherOut = matcher ?\r\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\r\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\r\n\r\n\t\t\t\t\t// ...intermediate processing is necessary\r\n\t\t\t\t\t[] :\r\n\r\n\t\t\t\t\t// ...otherwise use results directly\r\n\t\t\t\t\tresults :\r\n\t\t\t\tmatcherIn;\r\n\r\n\t\t// Find primary matches\r\n\t\tif ( matcher ) {\r\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\r\n\t\t}\r\n\r\n\t\t// Apply postFilter\r\n\t\tif ( postFilter ) {\r\n\t\t\ttemp = condense( matcherOut, postMap );\r\n\t\t\tpostFilter( temp, [], context, xml );\r\n\r\n\t\t\t// Un-match failing elements by moving them back to matcherIn\r\n\t\t\ti = temp.length;\r\n\t\t\twhile ( i-- ) {\r\n\t\t\t\tif ( (elem = temp[i]) ) {\r\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ( seed ) {\r\n\t\t\tif ( postFinder || preFilter ) {\r\n\t\t\t\tif ( postFinder ) {\r\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\r\n\t\t\t\t\ttemp = [];\r\n\t\t\t\t\ti = matcherOut.length;\r\n\t\t\t\t\twhile ( i-- ) {\r\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\r\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\r\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\r\n\t\t\t\ti = matcherOut.length;\r\n\t\t\t\twhile ( i-- ) {\r\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\r\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\r\n\r\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t// Add elements to results, through postFinder if defined\r\n\t\t} else {\r\n\t\t\tmatcherOut = condense(\r\n\t\t\t\tmatcherOut === results ?\r\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\r\n\t\t\t\t\tmatcherOut\r\n\t\t\t);\r\n\t\t\tif ( postFinder ) {\r\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\r\n\t\t\t} else {\r\n\t\t\t\tpush.apply( results, matcherOut );\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n}\r\n\r\nfunction matcherFromTokens( tokens ) {\r\n\tvar checkContext, matcher, j,\r\n\t\tlen = tokens.length,\r\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\r\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\r\n\t\ti = leadingRelative ? 1 : 0,\r\n\r\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\r\n\t\tmatchContext = addCombinator( function( elem ) {\r\n\t\t\treturn elem === checkContext;\r\n\t\t}, implicitRelative, true ),\r\n\t\tmatchAnyContext = addCombinator( function( elem ) {\r\n\t\t\treturn indexOf( checkContext, elem ) > -1;\r\n\t\t}, implicitRelative, true ),\r\n\t\tmatchers = [ function( elem, context, xml ) {\r\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\r\n\t\t\t\t(checkContext = context).nodeType ?\r\n\t\t\t\t\tmatchContext( elem, context, xml ) :\r\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\r\n\t\t\t// Avoid hanging onto element (issue #299)\r\n\t\t\tcheckContext = null;\r\n\t\t\treturn ret;\r\n\t\t} ];\r\n\r\n\tfor ( ; i < len; i++ ) {\r\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\r\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\r\n\t\t} else {\r\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\r\n\r\n\t\t\t// Return special upon seeing a positional matcher\r\n\t\t\tif ( matcher[ expando ] ) {\r\n\t\t\t\t// Find the next relative operator (if any) for proper handling\r\n\t\t\t\tj = ++i;\r\n\t\t\t\tfor ( ; j < len; j++ ) {\r\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn setMatcher(\r\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\r\n\t\t\t\t\ti > 1 && toSelector(\r\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\r\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\r\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\r\n\t\t\t\t\tmatcher,\r\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\r\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\r\n\t\t\t\t\tj < len && toSelector( tokens )\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\tmatchers.push( matcher );\r\n\t\t}\r\n\t}\r\n\r\n\treturn elementMatcher( matchers );\r\n}\r\n\r\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\r\n\tvar bySet = setMatchers.length > 0,\r\n\t\tbyElement = elementMatchers.length > 0,\r\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\r\n\t\t\tvar elem, j, matcher,\r\n\t\t\t\tmatchedCount = 0,\r\n\t\t\t\ti = \"0\",\r\n\t\t\t\tunmatched = seed && [],\r\n\t\t\t\tsetMatched = [],\r\n\t\t\t\tcontextBackup = outermostContext,\r\n\t\t\t\t// We must always have either seed elements or outermost context\r\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\r\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\r\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\r\n\t\t\t\tlen = elems.length;\r\n\r\n\t\t\tif ( outermost ) {\r\n\t\t\t\toutermostContext = context === document || context || outermost;\r\n\t\t\t}\r\n\r\n\t\t\t// Add elements passing elementMatchers directly to results\r\n\t\t\t// Support: IE<9, Safari\r\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\r\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\r\n\t\t\t\tif ( byElement && elem ) {\r\n\t\t\t\t\tj = 0;\r\n\t\t\t\t\tif ( !context && elem.ownerDocument !== document ) {\r\n\t\t\t\t\t\tsetDocument( elem );\r\n\t\t\t\t\t\txml = !documentIsHTML;\r\n\t\t\t\t\t}\r\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\r\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml) ) {\r\n\t\t\t\t\t\t\tresults.push( elem );\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ( outermost ) {\r\n\t\t\t\t\t\tdirruns = dirrunsUnique;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Track unmatched elements for set filters\r\n\t\t\t\tif ( bySet ) {\r\n\t\t\t\t\t// They will have gone through all possible matchers\r\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\r\n\t\t\t\t\t\tmatchedCount--;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Lengthen the array for every element, matched or not\r\n\t\t\t\t\tif ( seed ) {\r\n\t\t\t\t\t\tunmatched.push( elem );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\r\n\t\t\t// makes the latter nonnegative.\r\n\t\t\tmatchedCount += i;\r\n\r\n\t\t\t// Apply set filters to unmatched elements\r\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\r\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\r\n\t\t\t// no element matchers and no seed.\r\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\r\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\r\n\t\t\t// numerically zero.\r\n\t\t\tif ( bySet && i !== matchedCount ) {\r\n\t\t\t\tj = 0;\r\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\r\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( seed ) {\r\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\r\n\t\t\t\t\tif ( matchedCount > 0 ) {\r\n\t\t\t\t\t\twhile ( i-- ) {\r\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\r\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\r\n\t\t\t\t\tsetMatched = condense( setMatched );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Add matches to results\r\n\t\t\t\tpush.apply( results, setMatched );\r\n\r\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\r\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\r\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\r\n\r\n\t\t\t\t\tSizzle.uniqueSort( results );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Override manipulation of globals by nested matchers\r\n\t\t\tif ( outermost ) {\r\n\t\t\t\tdirruns = dirrunsUnique;\r\n\t\t\t\toutermostContext = contextBackup;\r\n\t\t\t}\r\n\r\n\t\t\treturn unmatched;\r\n\t\t};\r\n\r\n\treturn bySet ?\r\n\t\tmarkFunction( superMatcher ) :\r\n\t\tsuperMatcher;\r\n}\r\n\r\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\r\n\tvar i,\r\n\t\tsetMatchers = [],\r\n\t\telementMatchers = [],\r\n\t\tcached = compilerCache[ selector + \" \" ];\r\n\r\n\tif ( !cached ) {\r\n\t\t// Generate a function of recursive functions that can be used to check each element\r\n\t\tif ( !match ) {\r\n\t\t\tmatch = tokenize( selector );\r\n\t\t}\r\n\t\ti = match.length;\r\n\t\twhile ( i-- ) {\r\n\t\t\tcached = matcherFromTokens( match[i] );\r\n\t\t\tif ( cached[ expando ] ) {\r\n\t\t\t\tsetMatchers.push( cached );\r\n\t\t\t} else {\r\n\t\t\t\telementMatchers.push( cached );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Cache the compiled function\r\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\r\n\r\n\t\t// Save selector and tokenization\r\n\t\tcached.selector = selector;\r\n\t}\r\n\treturn cached;\r\n};\r\n\r\n/**\r\n * A low-level selection function that works with Sizzle's compiled\r\n * selector functions\r\n * @param {String|Function} selector A selector or a pre-compiled\r\n * selector function built with Sizzle.compile\r\n * @param {Element} context\r\n * @param {Array} [results]\r\n * @param {Array} [seed] A set of elements to match against\r\n */\r\nselect = Sizzle.select = function( selector, context, results, seed ) {\r\n\tvar i, tokens, token, type, find,\r\n\t\tcompiled = typeof selector === \"function\" && selector,\r\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\r\n\r\n\tresults = results || [];\r\n\r\n\t// Try to minimize operations if there is only one selector in the list and no seed\r\n\t// (the latter of which guarantees us context)\r\n\tif ( match.length === 1 ) {\r\n\r\n\t\t// Reduce context if the leading compound selector is an ID\r\n\t\ttokens = match[0] = match[0].slice( 0 );\r\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\r\n\t\t\t\tsupport.getById && context.nodeType === 9 && documentIsHTML &&\r\n\t\t\t\tExpr.relative[ tokens[1].type ] ) {\r\n\r\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\r\n\t\t\tif ( !context ) {\r\n\t\t\t\treturn results;\r\n\r\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\r\n\t\t\t} else if ( compiled ) {\r\n\t\t\t\tcontext = context.parentNode;\r\n\t\t\t}\r\n\r\n\t\t\tselector = selector.slice( tokens.shift().value.length );\r\n\t\t}\r\n\r\n\t\t// Fetch a seed set for right-to-left matching\r\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\r\n\t\twhile ( i-- ) {\r\n\t\t\ttoken = tokens[i];\r\n\r\n\t\t\t// Abort if we hit a combinator\r\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tif ( (find = Expr.find[ type ]) ) {\r\n\t\t\t\t// Search, expanding context for leading sibling combinators\r\n\t\t\t\tif ( (seed = find(\r\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\r\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\r\n\t\t\t\t)) ) {\r\n\r\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\r\n\t\t\t\t\ttokens.splice( i, 1 );\r\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\r\n\t\t\t\t\tif ( !selector ) {\r\n\t\t\t\t\t\tpush.apply( results, seed );\r\n\t\t\t\t\t\treturn results;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Compile and execute a filtering function if one is not provided\r\n\t// Provide `match` to avoid retokenization if we modified the selector above\r\n\t( compiled || compile( selector, match ) )(\r\n\t\tseed,\r\n\t\tcontext,\r\n\t\t!documentIsHTML,\r\n\t\tresults,\r\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\r\n\t);\r\n\treturn results;\r\n};\r\n\r\n// One-time assignments\r\n\r\n// Sort stability\r\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\r\n\r\n// Support: Chrome 14-35+\r\n// Always assume duplicates if they aren't passed to the comparison function\r\nsupport.detectDuplicates = !!hasDuplicate;\r\n\r\n// Initialize against the default document\r\nsetDocument();\r\n\r\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\r\n// Detached nodes confoundingly follow *each other*\r\nsupport.sortDetached = assert(function( div1 ) {\r\n\t// Should return 1, but returns 4 (following)\r\n\treturn div1.compareDocumentPosition( document.createElement(\"div\") ) & 1;\r\n});\r\n\r\n// Support: IE<8\r\n// Prevent attribute/property \"interpolation\"\r\n// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\r\nif ( !assert(function( div ) {\r\n\tdiv.innerHTML = \"\";\r\n\treturn div.firstChild.getAttribute(\"href\") === \"#\" ;\r\n}) ) {\r\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\r\n\t\tif ( !isXML ) {\r\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\r\n\t\t}\r\n\t});\r\n}\r\n\r\n// Support: IE<9\r\n// Use defaultValue in place of getAttribute(\"value\")\r\nif ( !support.attributes || !assert(function( div ) {\r\n\tdiv.innerHTML = \"\";\r\n\tdiv.firstChild.setAttribute( \"value\", \"\" );\r\n\treturn div.firstChild.getAttribute( \"value\" ) === \"\";\r\n}) ) {\r\n\taddHandle( \"value\", function( elem, name, isXML ) {\r\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\r\n\t\t\treturn elem.defaultValue;\r\n\t\t}\r\n\t});\r\n}\r\n\r\n// Support: IE<9\r\n// Use getAttributeNode to fetch booleans when getAttribute lies\r\nif ( !assert(function( div ) {\r\n\treturn div.getAttribute(\"disabled\") == null;\r\n}) ) {\r\n\taddHandle( booleans, function( elem, name, isXML ) {\r\n\t\tvar val;\r\n\t\tif ( !isXML ) {\r\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\r\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\r\n\t\t\t\t\tval.value :\r\n\t\t\t\tnull;\r\n\t\t}\r\n\t});\r\n}\r\n\r\nreturn Sizzle;\r\n\r\n})( window );\r\n\r\n\r\n\r\njQuery.find = Sizzle;\r\njQuery.expr = Sizzle.selectors;\r\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\r\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\r\njQuery.text = Sizzle.getText;\r\njQuery.isXMLDoc = Sizzle.isXML;\r\njQuery.contains = Sizzle.contains;\r\n\r\n\r\n\r\nvar dir = function( elem, dir, until ) {\r\n\tvar matched = [],\r\n\t\ttruncate = until !== undefined;\r\n\r\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\r\n\t\tif ( elem.nodeType === 1 ) {\r\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tmatched.push( elem );\r\n\t\t}\r\n\t}\r\n\treturn matched;\r\n};\r\n\r\n\r\nvar siblings = function( n, elem ) {\r\n\tvar matched = [];\r\n\r\n\tfor ( ; n; n = n.nextSibling ) {\r\n\t\tif ( n.nodeType === 1 && n !== elem ) {\r\n\t\t\tmatched.push( n );\r\n\t\t}\r\n\t}\r\n\r\n\treturn matched;\r\n};\r\n\r\n\r\nvar rneedsContext = jQuery.expr.match.needsContext;\r\n\r\nvar rsingleTag = ( /^<([\\w-]+)\\s*\\/?>(?:<\\/\\1>|)$/ );\r\n\r\n\r\n\r\nvar risSimple = /^.[^:#\\[\\.,]*$/;\r\n\r\n// Implement the identical functionality for filter and not\r\nfunction winnow( elements, qualifier, not ) {\r\n\tif ( jQuery.isFunction( qualifier ) ) {\r\n\t\treturn jQuery.grep( elements, function( elem, i ) {\r\n\t\t\t/* jshint -W018 */\r\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\r\n\t\t} );\r\n\r\n\t}\r\n\r\n\tif ( qualifier.nodeType ) {\r\n\t\treturn jQuery.grep( elements, function( elem ) {\r\n\t\t\treturn ( elem === qualifier ) !== not;\r\n\t\t} );\r\n\r\n\t}\r\n\r\n\tif ( typeof qualifier === \"string\" ) {\r\n\t\tif ( risSimple.test( qualifier ) ) {\r\n\t\t\treturn jQuery.filter( qualifier, elements, not );\r\n\t\t}\r\n\r\n\t\tqualifier = jQuery.filter( qualifier, elements );\r\n\t}\r\n\r\n\treturn jQuery.grep( elements, function( elem ) {\r\n\t\treturn ( jQuery.inArray( elem, qualifier ) > -1 ) !== not;\r\n\t} );\r\n}\r\n\r\njQuery.filter = function( expr, elems, not ) {\r\n\tvar elem = elems[ 0 ];\r\n\r\n\tif ( not ) {\r\n\t\texpr = \":not(\" + expr + \")\";\r\n\t}\r\n\r\n\treturn elems.length === 1 && elem.nodeType === 1 ?\r\n\t\tjQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :\r\n\t\tjQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\r\n\t\t\treturn elem.nodeType === 1;\r\n\t\t} ) );\r\n};\r\n\r\njQuery.fn.extend( {\r\n\tfind: function( selector ) {\r\n\t\tvar i,\r\n\t\t\tret = [],\r\n\t\t\tself = this,\r\n\t\t\tlen = self.length;\r\n\r\n\t\tif ( typeof selector !== \"string\" ) {\r\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\r\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\r\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} ) );\r\n\t\t}\r\n\r\n\t\tfor ( i = 0; i < len; i++ ) {\r\n\t\t\tjQuery.find( selector, self[ i ], ret );\r\n\t\t}\r\n\r\n\t\t// Needed because $( selector, context ) becomes $( context ).find( selector )\r\n\t\tret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );\r\n\t\tret.selector = this.selector ? this.selector + \" \" + selector : selector;\r\n\t\treturn ret;\r\n\t},\r\n\tfilter: function( selector ) {\r\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\r\n\t},\r\n\tnot: function( selector ) {\r\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\r\n\t},\r\n\tis: function( selector ) {\r\n\t\treturn !!winnow(\r\n\t\t\tthis,\r\n\r\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\r\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\r\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\r\n\t\t\t\tjQuery( selector ) :\r\n\t\t\t\tselector || [],\r\n\t\t\tfalse\r\n\t\t).length;\r\n\t}\r\n} );\r\n\r\n\r\n// Initialize a jQuery object\r\n\r\n\r\n// A central reference to the root jQuery(document)\r\nvar rootjQuery,\r\n\r\n\t// A simple way to check for HTML strings\r\n\t// Prioritize #id over to avoid XSS via location.hash (#9521)\r\n\t// Strict HTML recognition (#11290: must start with <)\r\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/,\r\n\r\n\tinit = jQuery.fn.init = function( selector, context, root ) {\r\n\t\tvar match, elem;\r\n\r\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\r\n\t\tif ( !selector ) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\t// init accepts an alternate rootjQuery\r\n\t\t// so migrate can support jQuery.sub (gh-2101)\r\n\t\troot = root || rootjQuery;\r\n\r\n\t\t// Handle HTML strings\r\n\t\tif ( typeof selector === \"string\" ) {\r\n\t\t\tif ( selector.charAt( 0 ) === \"<\" &&\r\n\t\t\t\tselector.charAt( selector.length - 1 ) === \">\" &&\r\n\t\t\t\tselector.length >= 3 ) {\r\n\r\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\r\n\t\t\t\tmatch = [ null, selector, null ];\r\n\r\n\t\t\t} else {\r\n\t\t\t\tmatch = rquickExpr.exec( selector );\r\n\t\t\t}\r\n\r\n\t\t\t// Match html or make sure no context is specified for #id\r\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\r\n\r\n\t\t\t\t// HANDLE: $(html) -> $(array)\r\n\t\t\t\tif ( match[ 1 ] ) {\r\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\r\n\r\n\t\t\t\t\t// scripts is true for back-compat\r\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\r\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\r\n\t\t\t\t\t\tmatch[ 1 ],\r\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\r\n\t\t\t\t\t\ttrue\r\n\t\t\t\t\t) );\r\n\r\n\t\t\t\t\t// HANDLE: $(html, props)\r\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\r\n\t\t\t\t\t\tfor ( match in context ) {\r\n\r\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\r\n\t\t\t\t\t\t\tif ( jQuery.isFunction( this[ match ] ) ) {\r\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\r\n\r\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn this;\r\n\r\n\t\t\t\t// HANDLE: $(#id)\r\n\t\t\t\t} else {\r\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\r\n\r\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\r\n\t\t\t\t\t// nodes that are no longer in the document #6963\r\n\t\t\t\t\tif ( elem && elem.parentNode ) {\r\n\r\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\r\n\t\t\t\t\t\t// by name instead of ID\r\n\t\t\t\t\t\tif ( elem.id !== match[ 2 ] ) {\r\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\r\n\t\t\t\t\t\tthis.length = 1;\r\n\t\t\t\t\t\tthis[ 0 ] = elem;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.context = document;\r\n\t\t\t\t\tthis.selector = selector;\r\n\t\t\t\t\treturn this;\r\n\t\t\t\t}\r\n\r\n\t\t\t// HANDLE: $(expr, $(...))\r\n\t\t\t} else if ( !context || context.jquery ) {\r\n\t\t\t\treturn ( context || root ).find( selector );\r\n\r\n\t\t\t// HANDLE: $(expr, context)\r\n\t\t\t// (which is just equivalent to: $(context).find(expr)\r\n\t\t\t} else {\r\n\t\t\t\treturn this.constructor( context ).find( selector );\r\n\t\t\t}\r\n\r\n\t\t// HANDLE: $(DOMElement)\r\n\t\t} else if ( selector.nodeType ) {\r\n\t\t\tthis.context = this[ 0 ] = selector;\r\n\t\t\tthis.length = 1;\r\n\t\t\treturn this;\r\n\r\n\t\t// HANDLE: $(function)\r\n\t\t// Shortcut for document ready\r\n\t\t} else if ( jQuery.isFunction( selector ) ) {\r\n\t\t\treturn typeof root.ready !== \"undefined\" ?\r\n\t\t\t\troot.ready( selector ) :\r\n\r\n\t\t\t\t// Execute immediately if ready is not present\r\n\t\t\t\tselector( jQuery );\r\n\t\t}\r\n\r\n\t\tif ( selector.selector !== undefined ) {\r\n\t\t\tthis.selector = selector.selector;\r\n\t\t\tthis.context = selector.context;\r\n\t\t}\r\n\r\n\t\treturn jQuery.makeArray( selector, this );\r\n\t};\r\n\r\n// Give the init function the jQuery prototype for later instantiation\r\ninit.prototype = jQuery.fn;\r\n\r\n// Initialize central reference\r\nrootjQuery = jQuery( document );\r\n\r\n\r\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\r\n\r\n\t// methods guaranteed to produce a unique set when starting from a unique set\r\n\tguaranteedUnique = {\r\n\t\tchildren: true,\r\n\t\tcontents: true,\r\n\t\tnext: true,\r\n\t\tprev: true\r\n\t};\r\n\r\njQuery.fn.extend( {\r\n\thas: function( target ) {\r\n\t\tvar i,\r\n\t\t\ttargets = jQuery( target, this ),\r\n\t\t\tlen = targets.length;\r\n\r\n\t\treturn this.filter( function() {\r\n\t\t\tfor ( i = 0; i < len; i++ ) {\r\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\r\n\tclosest: function( selectors, context ) {\r\n\t\tvar cur,\r\n\t\t\ti = 0,\r\n\t\t\tl = this.length,\r\n\t\t\tmatched = [],\r\n\t\t\tpos = rneedsContext.test( selectors ) || typeof selectors !== \"string\" ?\r\n\t\t\t\tjQuery( selectors, context || this.context ) :\r\n\t\t\t\t0;\r\n\r\n\t\tfor ( ; i < l; i++ ) {\r\n\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\r\n\r\n\t\t\t\t// Always skip document fragments\r\n\t\t\t\tif ( cur.nodeType < 11 && ( pos ?\r\n\t\t\t\t\tpos.index( cur ) > -1 :\r\n\r\n\t\t\t\t\t// Don't pass non-elements to Sizzle\r\n\t\t\t\t\tcur.nodeType === 1 &&\r\n\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\r\n\r\n\t\t\t\t\tmatched.push( cur );\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\r\n\t},\r\n\r\n\t// Determine the position of an element within\r\n\t// the matched set of elements\r\n\tindex: function( elem ) {\r\n\r\n\t\t// No argument, return index in parent\r\n\t\tif ( !elem ) {\r\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\r\n\t\t}\r\n\r\n\t\t// index in selector\r\n\t\tif ( typeof elem === \"string\" ) {\r\n\t\t\treturn jQuery.inArray( this[ 0 ], jQuery( elem ) );\r\n\t\t}\r\n\r\n\t\t// Locate the position of the desired element\r\n\t\treturn jQuery.inArray(\r\n\r\n\t\t\t// If it receives a jQuery object, the first element is used\r\n\t\t\telem.jquery ? elem[ 0 ] : elem, this );\r\n\t},\r\n\r\n\tadd: function( selector, context ) {\r\n\t\treturn this.pushStack(\r\n\t\t\tjQuery.uniqueSort(\r\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\r\n\t\t\t)\r\n\t\t);\r\n\t},\r\n\r\n\taddBack: function( selector ) {\r\n\t\treturn this.add( selector == null ?\r\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\r\n\t\t);\r\n\t}\r\n} );\r\n\r\nfunction sibling( cur, dir ) {\r\n\tdo {\r\n\t\tcur = cur[ dir ];\r\n\t} while ( cur && cur.nodeType !== 1 );\r\n\r\n\treturn cur;\r\n}\r\n\r\njQuery.each( {\r\n\tparent: function( elem ) {\r\n\t\tvar parent = elem.parentNode;\r\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\r\n\t},\r\n\tparents: function( elem ) {\r\n\t\treturn dir( elem, \"parentNode\" );\r\n\t},\r\n\tparentsUntil: function( elem, i, until ) {\r\n\t\treturn dir( elem, \"parentNode\", until );\r\n\t},\r\n\tnext: function( elem ) {\r\n\t\treturn sibling( elem, \"nextSibling\" );\r\n\t},\r\n\tprev: function( elem ) {\r\n\t\treturn sibling( elem, \"previousSibling\" );\r\n\t},\r\n\tnextAll: function( elem ) {\r\n\t\treturn dir( elem, \"nextSibling\" );\r\n\t},\r\n\tprevAll: function( elem ) {\r\n\t\treturn dir( elem, \"previousSibling\" );\r\n\t},\r\n\tnextUntil: function( elem, i, until ) {\r\n\t\treturn dir( elem, \"nextSibling\", until );\r\n\t},\r\n\tprevUntil: function( elem, i, until ) {\r\n\t\treturn dir( elem, \"previousSibling\", until );\r\n\t},\r\n\tsiblings: function( elem ) {\r\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\r\n\t},\r\n\tchildren: function( elem ) {\r\n\t\treturn siblings( elem.firstChild );\r\n\t},\r\n\tcontents: function( elem ) {\r\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\r\n\t\t\telem.contentDocument || elem.contentWindow.document :\r\n\t\t\tjQuery.merge( [], elem.childNodes );\r\n\t}\r\n}, function( name, fn ) {\r\n\tjQuery.fn[ name ] = function( until, selector ) {\r\n\t\tvar ret = jQuery.map( this, fn, until );\r\n\r\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\r\n\t\t\tselector = until;\r\n\t\t}\r\n\r\n\t\tif ( selector && typeof selector === \"string\" ) {\r\n\t\t\tret = jQuery.filter( selector, ret );\r\n\t\t}\r\n\r\n\t\tif ( this.length > 1 ) {\r\n\r\n\t\t\t// Remove duplicates\r\n\t\t\tif ( !guaranteedUnique[ name ] ) {\r\n\t\t\t\tret = jQuery.uniqueSort( ret );\r\n\t\t\t}\r\n\r\n\t\t\t// Reverse order for parents* and prev-derivatives\r\n\t\t\tif ( rparentsprev.test( name ) ) {\r\n\t\t\t\tret = ret.reverse();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this.pushStack( ret );\r\n\t};\r\n} );\r\nvar rnotwhite = ( /\\S+/g );\r\n\r\n\r\n\r\n// Convert String-formatted options into Object-formatted ones\r\nfunction createOptions( options ) {\r\n\tvar object = {};\r\n\tjQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {\r\n\t\tobject[ flag ] = true;\r\n\t} );\r\n\treturn object;\r\n}\r\n\r\n/*\r\n * Create a callback list using the following parameters:\r\n *\r\n *\toptions: an optional list of space-separated options that will change how\r\n *\t\t\tthe callback list behaves or a more traditional option object\r\n *\r\n * By default a callback list will act like an event callback list and can be\r\n * \"fired\" multiple times.\r\n *\r\n * Possible options:\r\n *\r\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\r\n *\r\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\r\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\r\n *\t\t\t\t\tvalues (like a Deferred)\r\n *\r\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\r\n *\r\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\r\n *\r\n */\r\njQuery.Callbacks = function( options ) {\r\n\r\n\t// Convert options from String-formatted to Object-formatted if needed\r\n\t// (we check in cache first)\r\n\toptions = typeof options === \"string\" ?\r\n\t\tcreateOptions( options ) :\r\n\t\tjQuery.extend( {}, options );\r\n\r\n\tvar // Flag to know if list is currently firing\r\n\t\tfiring,\r\n\r\n\t\t// Last fire value for non-forgettable lists\r\n\t\tmemory,\r\n\r\n\t\t// Flag to know if list was already fired\r\n\t\tfired,\r\n\r\n\t\t// Flag to prevent firing\r\n\t\tlocked,\r\n\r\n\t\t// Actual callback list\r\n\t\tlist = [],\r\n\r\n\t\t// Queue of execution data for repeatable lists\r\n\t\tqueue = [],\r\n\r\n\t\t// Index of currently firing callback (modified by add/remove as needed)\r\n\t\tfiringIndex = -1,\r\n\r\n\t\t// Fire callbacks\r\n\t\tfire = function() {\r\n\r\n\t\t\t// Enforce single-firing\r\n\t\t\tlocked = options.once;\r\n\r\n\t\t\t// Execute callbacks for all pending executions,\r\n\t\t\t// respecting firingIndex overrides and runtime changes\r\n\t\t\tfired = firing = true;\r\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\r\n\t\t\t\tmemory = queue.shift();\r\n\t\t\t\twhile ( ++firingIndex < list.length ) {\r\n\r\n\t\t\t\t\t// Run callback and check for early termination\r\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\r\n\t\t\t\t\t\toptions.stopOnFalse ) {\r\n\r\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\r\n\t\t\t\t\t\tfiringIndex = list.length;\r\n\t\t\t\t\t\tmemory = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Forget the data if we're done with it\r\n\t\t\tif ( !options.memory ) {\r\n\t\t\t\tmemory = false;\r\n\t\t\t}\r\n\r\n\t\t\tfiring = false;\r\n\r\n\t\t\t// Clean up if we're done firing for good\r\n\t\t\tif ( locked ) {\r\n\r\n\t\t\t\t// Keep an empty list if we have data for future add calls\r\n\t\t\t\tif ( memory ) {\r\n\t\t\t\t\tlist = [];\r\n\r\n\t\t\t\t// Otherwise, this object is spent\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlist = \"\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// Actual Callbacks object\r\n\t\tself = {\r\n\r\n\t\t\t// Add a callback or a collection of callbacks to the list\r\n\t\t\tadd: function() {\r\n\t\t\t\tif ( list ) {\r\n\r\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\r\n\t\t\t\t\tif ( memory && !firing ) {\r\n\t\t\t\t\t\tfiringIndex = list.length - 1;\r\n\t\t\t\t\t\tqueue.push( memory );\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t( function add( args ) {\r\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\r\n\t\t\t\t\t\t\tif ( jQuery.isFunction( arg ) ) {\r\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\r\n\t\t\t\t\t\t\t\t\tlist.push( arg );\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t} else if ( arg && arg.length && jQuery.type( arg ) !== \"string\" ) {\r\n\r\n\t\t\t\t\t\t\t\t// Inspect recursively\r\n\t\t\t\t\t\t\t\tadd( arg );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} );\r\n\t\t\t\t\t} )( arguments );\r\n\r\n\t\t\t\t\tif ( memory && !firing ) {\r\n\t\t\t\t\t\tfire();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\r\n\t\t\t// Remove a callback from the list\r\n\t\t\tremove: function() {\r\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\r\n\t\t\t\t\tvar index;\r\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\r\n\t\t\t\t\t\tlist.splice( index, 1 );\r\n\r\n\t\t\t\t\t\t// Handle firing indexes\r\n\t\t\t\t\t\tif ( index <= firingIndex ) {\r\n\t\t\t\t\t\t\tfiringIndex--;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} );\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\r\n\t\t\t// Check if a given callback is in the list.\r\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\r\n\t\t\thas: function( fn ) {\r\n\t\t\t\treturn fn ?\r\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\r\n\t\t\t\t\tlist.length > 0;\r\n\t\t\t},\r\n\r\n\t\t\t// Remove all callbacks from the list\r\n\t\t\tempty: function() {\r\n\t\t\t\tif ( list ) {\r\n\t\t\t\t\tlist = [];\r\n\t\t\t\t}\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\r\n\t\t\t// Disable .fire and .add\r\n\t\t\t// Abort any current/pending executions\r\n\t\t\t// Clear all callbacks and values\r\n\t\t\tdisable: function() {\r\n\t\t\t\tlocked = queue = [];\r\n\t\t\t\tlist = memory = \"\";\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\t\t\tdisabled: function() {\r\n\t\t\t\treturn !list;\r\n\t\t\t},\r\n\r\n\t\t\t// Disable .fire\r\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\r\n\t\t\t// Abort any pending executions\r\n\t\t\tlock: function() {\r\n\t\t\t\tlocked = true;\r\n\t\t\t\tif ( !memory ) {\r\n\t\t\t\t\tself.disable();\r\n\t\t\t\t}\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\t\t\tlocked: function() {\r\n\t\t\t\treturn !!locked;\r\n\t\t\t},\r\n\r\n\t\t\t// Call all callbacks with the given context and arguments\r\n\t\t\tfireWith: function( context, args ) {\r\n\t\t\t\tif ( !locked ) {\r\n\t\t\t\t\targs = args || [];\r\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\r\n\t\t\t\t\tqueue.push( args );\r\n\t\t\t\t\tif ( !firing ) {\r\n\t\t\t\t\t\tfire();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\r\n\t\t\t// Call all the callbacks with the given arguments\r\n\t\t\tfire: function() {\r\n\t\t\t\tself.fireWith( this, arguments );\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\r\n\t\t\t// To know if the callbacks have already been called at least once\r\n\t\t\tfired: function() {\r\n\t\t\t\treturn !!fired;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\treturn self;\r\n};\r\n\r\n\r\njQuery.extend( {\r\n\r\n\tDeferred: function( func ) {\r\n\t\tvar tuples = [\r\n\r\n\t\t\t\t// action, add listener, listener list, final state\r\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ), \"resolved\" ],\r\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ), \"rejected\" ],\r\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ) ]\r\n\t\t\t],\r\n\t\t\tstate = \"pending\",\r\n\t\t\tpromise = {\r\n\t\t\t\tstate: function() {\r\n\t\t\t\t\treturn state;\r\n\t\t\t\t},\r\n\t\t\t\talways: function() {\r\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\r\n\t\t\t\t\treturn this;\r\n\t\t\t\t},\r\n\t\t\t\tthen: function( /* fnDone, fnFail, fnProgress */ ) {\r\n\t\t\t\t\tvar fns = arguments;\r\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\r\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\r\n\t\t\t\t\t\t\tvar fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];\r\n\r\n\t\t\t\t\t\t\t// deferred[ done | fail | progress ] for forwarding actions to newDefer\r\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\r\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\r\n\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\r\n\t\t\t\t\t\t\t\t\treturned.promise()\r\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\r\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\r\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\r\n\t\t\t\t\t\t\t\t\t\tthis === promise ? newDefer.promise() : this,\r\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\r\n\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t} );\r\n\t\t\t\t\t\t} );\r\n\t\t\t\t\t\tfns = null;\r\n\t\t\t\t\t} ).promise();\r\n\t\t\t\t},\r\n\r\n\t\t\t\t// Get a promise for this deferred\r\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\r\n\t\t\t\tpromise: function( obj ) {\r\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tdeferred = {};\r\n\r\n\t\t// Keep pipe for back-compat\r\n\t\tpromise.pipe = promise.then;\r\n\r\n\t\t// Add list-specific methods\r\n\t\tjQuery.each( tuples, function( i, tuple ) {\r\n\t\t\tvar list = tuple[ 2 ],\r\n\t\t\t\tstateString = tuple[ 3 ];\r\n\r\n\t\t\t// promise[ done | fail | progress ] = list.add\r\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\r\n\r\n\t\t\t// Handle state\r\n\t\t\tif ( stateString ) {\r\n\t\t\t\tlist.add( function() {\r\n\r\n\t\t\t\t\t// state = [ resolved | rejected ]\r\n\t\t\t\t\tstate = stateString;\r\n\r\n\t\t\t\t// [ reject_list | resolve_list ].disable; progress_list.lock\r\n\t\t\t\t}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );\r\n\t\t\t}\r\n\r\n\t\t\t// deferred[ resolve | reject | notify ]\r\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\r\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? promise : this, arguments );\r\n\t\t\t\treturn this;\r\n\t\t\t};\r\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\r\n\t\t} );\r\n\r\n\t\t// Make the deferred a promise\r\n\t\tpromise.promise( deferred );\r\n\r\n\t\t// Call given func if any\r\n\t\tif ( func ) {\r\n\t\t\tfunc.call( deferred, deferred );\r\n\t\t}\r\n\r\n\t\t// All done!\r\n\t\treturn deferred;\r\n\t},\r\n\r\n\t// Deferred helper\r\n\twhen: function( subordinate /* , ..., subordinateN */ ) {\r\n\t\tvar i = 0,\r\n\t\t\tresolveValues = slice.call( arguments ),\r\n\t\t\tlength = resolveValues.length,\r\n\r\n\t\t\t// the count of uncompleted subordinates\r\n\t\t\tremaining = length !== 1 ||\r\n\t\t\t\t( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,\r\n\r\n\t\t\t// the master Deferred.\r\n\t\t\t// If resolveValues consist of only a single Deferred, just use that.\r\n\t\t\tdeferred = remaining === 1 ? subordinate : jQuery.Deferred(),\r\n\r\n\t\t\t// Update function for both resolve and progress values\r\n\t\t\tupdateFunc = function( i, contexts, values ) {\r\n\t\t\t\treturn function( value ) {\r\n\t\t\t\t\tcontexts[ i ] = this;\r\n\t\t\t\t\tvalues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\r\n\t\t\t\t\tif ( values === progressValues ) {\r\n\t\t\t\t\t\tdeferred.notifyWith( contexts, values );\r\n\r\n\t\t\t\t\t} else if ( !( --remaining ) ) {\r\n\t\t\t\t\t\tdeferred.resolveWith( contexts, values );\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t},\r\n\r\n\t\t\tprogressValues, progressContexts, resolveContexts;\r\n\r\n\t\t// add listeners to Deferred subordinates; treat others as resolved\r\n\t\tif ( length > 1 ) {\r\n\t\t\tprogressValues = new Array( length );\r\n\t\t\tprogressContexts = new Array( length );\r\n\t\t\tresolveContexts = new Array( length );\r\n\t\t\tfor ( ; i < length; i++ ) {\r\n\t\t\t\tif ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {\r\n\t\t\t\t\tresolveValues[ i ].promise()\r\n\t\t\t\t\t\t.progress( updateFunc( i, progressContexts, progressValues ) )\r\n\t\t\t\t\t\t.done( updateFunc( i, resolveContexts, resolveValues ) )\r\n\t\t\t\t\t\t.fail( deferred.reject );\r\n\t\t\t\t} else {\r\n\t\t\t\t\t--remaining;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// if we're not waiting on anything, resolve the master\r\n\t\tif ( !remaining ) {\r\n\t\t\tdeferred.resolveWith( resolveContexts, resolveValues );\r\n\t\t}\r\n\r\n\t\treturn deferred.promise();\r\n\t}\r\n} );\r\n\r\n\r\n// The deferred used on DOM ready\r\nvar readyList;\r\n\r\njQuery.fn.ready = function( fn ) {\r\n\r\n\t// Add the callback\r\n\tjQuery.ready.promise().done( fn );\r\n\r\n\treturn this;\r\n};\r\n\r\njQuery.extend( {\r\n\r\n\t// Is the DOM ready to be used? Set to true once it occurs.\r\n\tisReady: false,\r\n\r\n\t// A counter to track how many items to wait for before\r\n\t// the ready event fires. See #6781\r\n\treadyWait: 1,\r\n\r\n\t// Hold (or release) the ready event\r\n\tholdReady: function( hold ) {\r\n\t\tif ( hold ) {\r\n\t\t\tjQuery.readyWait++;\r\n\t\t} else {\r\n\t\t\tjQuery.ready( true );\r\n\t\t}\r\n\t},\r\n\r\n\t// Handle when the DOM is ready\r\n\tready: function( wait ) {\r\n\r\n\t\t// Abort if there are pending holds or we're already ready\r\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Remember that the DOM is ready\r\n\t\tjQuery.isReady = true;\r\n\r\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\r\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// If there are functions bound, to execute\r\n\t\treadyList.resolveWith( document, [ jQuery ] );\r\n\r\n\t\t// Trigger any bound ready events\r\n\t\tif ( jQuery.fn.triggerHandler ) {\r\n\t\t\tjQuery( document ).triggerHandler( \"ready\" );\r\n\t\t\tjQuery( document ).off( \"ready\" );\r\n\t\t}\r\n\t}\r\n} );\r\n\r\n/**\r\n * Clean-up method for dom ready events\r\n */\r\nfunction detach() {\r\n\tif ( document.addEventListener ) {\r\n\t\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\r\n\t\twindow.removeEventListener( \"load\", completed );\r\n\r\n\t} else {\r\n\t\tdocument.detachEvent( \"onreadystatechange\", completed );\r\n\t\twindow.detachEvent( \"onload\", completed );\r\n\t}\r\n}\r\n\r\n/**\r\n * The ready event handler and self cleanup method\r\n */\r\nfunction completed() {\r\n\r\n\t// readyState === \"complete\" is good enough for us to call the dom ready in oldIE\r\n\tif ( document.addEventListener ||\r\n\t\twindow.event.type === \"load\" ||\r\n\t\tdocument.readyState === \"complete\" ) {\r\n\r\n\t\tdetach();\r\n\t\tjQuery.ready();\r\n\t}\r\n}\r\n\r\njQuery.ready.promise = function( obj ) {\r\n\tif ( !readyList ) {\r\n\r\n\t\treadyList = jQuery.Deferred();\r\n\r\n\t\t// Catch cases where $(document).ready() is called\r\n\t\t// after the browser event has already occurred.\r\n\t\t// Support: IE6-10\r\n\t\t// Older IE sometimes signals \"interactive\" too soon\r\n\t\tif ( document.readyState === \"complete\" ||\r\n\t\t\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\r\n\r\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\r\n\t\t\twindow.setTimeout( jQuery.ready );\r\n\r\n\t\t// Standards-based browsers support DOMContentLoaded\r\n\t\t} else if ( document.addEventListener ) {\r\n\r\n\t\t\t// Use the handy event callback\r\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", completed );\r\n\r\n\t\t\t// A fallback to window.onload, that will always work\r\n\t\t\twindow.addEventListener( \"load\", completed );\r\n\r\n\t\t// If IE event model is used\r\n\t\t} else {\r\n\r\n\t\t\t// Ensure firing before onload, maybe late but safe also for iframes\r\n\t\t\tdocument.attachEvent( \"onreadystatechange\", completed );\r\n\r\n\t\t\t// A fallback to window.onload, that will always work\r\n\t\t\twindow.attachEvent( \"onload\", completed );\r\n\r\n\t\t\t// If IE and not a frame\r\n\t\t\t// continually check to see if the document is ready\r\n\t\t\tvar top = false;\r\n\r\n\t\t\ttry {\r\n\t\t\t\ttop = window.frameElement == null && document.documentElement;\r\n\t\t\t} catch ( e ) {}\r\n\r\n\t\t\tif ( top && top.doScroll ) {\r\n\t\t\t\t( function doScrollCheck() {\r\n\t\t\t\t\tif ( !jQuery.isReady ) {\r\n\r\n\t\t\t\t\t\ttry {\r\n\r\n\t\t\t\t\t\t\t// Use the trick by Diego Perini\r\n\t\t\t\t\t\t\t// http://javascript.nwbox.com/IEContentLoaded/\r\n\t\t\t\t\t\t\ttop.doScroll( \"left\" );\r\n\t\t\t\t\t\t} catch ( e ) {\r\n\t\t\t\t\t\t\treturn window.setTimeout( doScrollCheck, 50 );\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// detach all dom ready events\r\n\t\t\t\t\t\tdetach();\r\n\r\n\t\t\t\t\t\t// and execute any waiting functions\r\n\t\t\t\t\t\tjQuery.ready();\r\n\t\t\t\t\t}\r\n\t\t\t\t} )();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn readyList.promise( obj );\r\n};\r\n\r\n// Kick off the DOM ready check even if the user does not\r\njQuery.ready.promise();\r\n\r\n\r\n\r\n\r\n// Support: IE<9\r\n// Iteration over object's inherited properties before its own\r\nvar i;\r\nfor ( i in jQuery( support ) ) {\r\n\tbreak;\r\n}\r\nsupport.ownFirst = i === \"0\";\r\n\r\n// Note: most support tests are defined in their respective modules.\r\n// false until the test is run\r\nsupport.inlineBlockNeedsLayout = false;\r\n\r\n// Execute ASAP in case we need to set body.style.zoom\r\njQuery( function() {\r\n\r\n\t// Minified: var a,b,c,d\r\n\tvar val, div, body, container;\r\n\r\n\tbody = document.getElementsByTagName( \"body\" )[ 0 ];\r\n\tif ( !body || !body.style ) {\r\n\r\n\t\t// Return for frameset docs that don't have a body\r\n\t\treturn;\r\n\t}\r\n\r\n\t// Setup\r\n\tdiv = document.createElement( \"div\" );\r\n\tcontainer = document.createElement( \"div\" );\r\n\tcontainer.style.cssText = \"position:absolute;border:0;width:0;height:0;top:0;left:-9999px\";\r\n\tbody.appendChild( container ).appendChild( div );\r\n\r\n\tif ( typeof div.style.zoom !== \"undefined\" ) {\r\n\r\n\t\t// Support: IE<8\r\n\t\t// Check if natively block-level elements act like inline-block\r\n\t\t// elements when setting their display to 'inline' and giving\r\n\t\t// them layout\r\n\t\tdiv.style.cssText = \"display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1\";\r\n\r\n\t\tsupport.inlineBlockNeedsLayout = val = div.offsetWidth === 3;\r\n\t\tif ( val ) {\r\n\r\n\t\t\t// Prevent IE 6 from affecting layout for positioned elements #11048\r\n\t\t\t// Prevent IE from shrinking the body in IE 7 mode #12869\r\n\t\t\t// Support: IE<8\r\n\t\t\tbody.style.zoom = 1;\r\n\t\t}\r\n\t}\r\n\r\n\tbody.removeChild( container );\r\n} );\r\n\r\n\r\n( function() {\r\n\tvar div = document.createElement( \"div\" );\r\n\r\n\t// Support: IE<9\r\n\tsupport.deleteExpando = true;\r\n\ttry {\r\n\t\tdelete div.test;\r\n\t} catch ( e ) {\r\n\t\tsupport.deleteExpando = false;\r\n\t}\r\n\r\n\t// Null elements to avoid leaks in IE.\r\n\tdiv = null;\r\n} )();\r\nvar acceptData = function( elem ) {\r\n\tvar noData = jQuery.noData[ ( elem.nodeName + \" \" ).toLowerCase() ],\r\n\t\tnodeType = +elem.nodeType || 1;\r\n\r\n\t// Do not set data on non-element DOM nodes because it will not be cleared (#8335).\r\n\treturn nodeType !== 1 && nodeType !== 9 ?\r\n\t\tfalse :\r\n\r\n\t\t// Nodes accept data unless otherwise specified; rejection can be conditional\r\n\t\t!noData || noData !== true && elem.getAttribute( \"classid\" ) === noData;\r\n};\r\n\r\n\r\n\r\n\r\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\r\n\trmultiDash = /([A-Z])/g;\r\n\r\nfunction dataAttr( elem, key, data ) {\r\n\r\n\t// If nothing was found internally, try to fetch any\r\n\t// data from the HTML5 data-* attribute\r\n\tif ( data === undefined && elem.nodeType === 1 ) {\r\n\r\n\t\tvar name = \"data-\" + key.replace( rmultiDash, \"-$1\" ).toLowerCase();\r\n\r\n\t\tdata = elem.getAttribute( name );\r\n\r\n\t\tif ( typeof data === \"string\" ) {\r\n\t\t\ttry {\r\n\t\t\t\tdata = data === \"true\" ? true :\r\n\t\t\t\t\tdata === \"false\" ? false :\r\n\t\t\t\t\tdata === \"null\" ? null :\r\n\r\n\t\t\t\t\t// Only convert to a number if it doesn't change the string\r\n\t\t\t\t\t+data + \"\" === data ? +data :\r\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\r\n\t\t\t\t\tdata;\r\n\t\t\t} catch ( e ) {}\r\n\r\n\t\t\t// Make sure we set the data so it isn't changed later\r\n\t\t\tjQuery.data( elem, key, data );\r\n\r\n\t\t} else {\r\n\t\t\tdata = undefined;\r\n\t\t}\r\n\t}\r\n\r\n\treturn data;\r\n}\r\n\r\n// checks a cache object for emptiness\r\nfunction isEmptyDataObject( obj ) {\r\n\tvar name;\r\n\tfor ( name in obj ) {\r\n\r\n\t\t// if the public data object is empty, the private is still empty\r\n\t\tif ( name === \"data\" && jQuery.isEmptyObject( obj[ name ] ) ) {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\t\tif ( name !== \"toJSON\" ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\treturn true;\r\n}\r\n\r\nfunction internalData( elem, name, data, pvt /* Internal Use Only */ ) {\r\n\tif ( !acceptData( elem ) ) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar ret, thisCache,\r\n\t\tinternalKey = jQuery.expando,\r\n\r\n\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\r\n\t\t// can't GC object references properly across the DOM-JS boundary\r\n\t\tisNode = elem.nodeType,\r\n\r\n\t\t// Only DOM nodes need the global jQuery cache; JS object data is\r\n\t\t// attached directly to the object so GC can occur automatically\r\n\t\tcache = isNode ? jQuery.cache : elem,\r\n\r\n\t\t// Only defining an ID for JS objects if its cache already exists allows\r\n\t\t// the code to shortcut on the same path as a DOM node with no cache\r\n\t\tid = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;\r\n\r\n\t// Avoid doing any more work than we need to when trying to get data on an\r\n\t// object that has no data at all\r\n\tif ( ( !id || !cache[ id ] || ( !pvt && !cache[ id ].data ) ) &&\r\n\t\tdata === undefined && typeof name === \"string\" ) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tif ( !id ) {\r\n\r\n\t\t// Only DOM nodes need a new unique ID for each element since their data\r\n\t\t// ends up in the global cache\r\n\t\tif ( isNode ) {\r\n\t\t\tid = elem[ internalKey ] = deletedIds.pop() || jQuery.guid++;\r\n\t\t} else {\r\n\t\t\tid = internalKey;\r\n\t\t}\r\n\t}\r\n\r\n\tif ( !cache[ id ] ) {\r\n\r\n\t\t// Avoid exposing jQuery metadata on plain JS objects when the object\r\n\t\t// is serialized using JSON.stringify\r\n\t\tcache[ id ] = isNode ? {} : { toJSON: jQuery.noop };\r\n\t}\r\n\r\n\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\r\n\t// shallow copied over onto the existing cache\r\n\tif ( typeof name === \"object\" || typeof name === \"function\" ) {\r\n\t\tif ( pvt ) {\r\n\t\t\tcache[ id ] = jQuery.extend( cache[ id ], name );\r\n\t\t} else {\r\n\t\t\tcache[ id ].data = jQuery.extend( cache[ id ].data, name );\r\n\t\t}\r\n\t}\r\n\r\n\tthisCache = cache[ id ];\r\n\r\n\t// jQuery data() is stored in a separate object inside the object's internal data\r\n\t// cache in order to avoid key collisions between internal data and user-defined\r\n\t// data.\r\n\tif ( !pvt ) {\r\n\t\tif ( !thisCache.data ) {\r\n\t\t\tthisCache.data = {};\r\n\t\t}\r\n\r\n\t\tthisCache = thisCache.data;\r\n\t}\r\n\r\n\tif ( data !== undefined ) {\r\n\t\tthisCache[ jQuery.camelCase( name ) ] = data;\r\n\t}\r\n\r\n\t// Check for both converted-to-camel and non-converted data property names\r\n\t// If a data property was specified\r\n\tif ( typeof name === \"string\" ) {\r\n\r\n\t\t// First Try to find as-is property data\r\n\t\tret = thisCache[ name ];\r\n\r\n\t\t// Test for null|undefined property data\r\n\t\tif ( ret == null ) {\r\n\r\n\t\t\t// Try to find the camelCased property\r\n\t\t\tret = thisCache[ jQuery.camelCase( name ) ];\r\n\t\t}\r\n\t} else {\r\n\t\tret = thisCache;\r\n\t}\r\n\r\n\treturn ret;\r\n}\r\n\r\nfunction internalRemoveData( elem, name, pvt ) {\r\n\tif ( !acceptData( elem ) ) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar thisCache, i,\r\n\t\tisNode = elem.nodeType,\r\n\r\n\t\t// See jQuery.data for more information\r\n\t\tcache = isNode ? jQuery.cache : elem,\r\n\t\tid = isNode ? elem[ jQuery.expando ] : jQuery.expando;\r\n\r\n\t// If there is already no cache entry for this object, there is no\r\n\t// purpose in continuing\r\n\tif ( !cache[ id ] ) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tif ( name ) {\r\n\r\n\t\tthisCache = pvt ? cache[ id ] : cache[ id ].data;\r\n\r\n\t\tif ( thisCache ) {\r\n\r\n\t\t\t// Support array or space separated string names for data keys\r\n\t\t\tif ( !jQuery.isArray( name ) ) {\r\n\r\n\t\t\t\t// try the string as a key before any manipulation\r\n\t\t\t\tif ( name in thisCache ) {\r\n\t\t\t\t\tname = [ name ];\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\t// split the camel cased version by spaces unless a key with the spaces exists\r\n\t\t\t\t\tname = jQuery.camelCase( name );\r\n\t\t\t\t\tif ( name in thisCache ) {\r\n\t\t\t\t\t\tname = [ name ];\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tname = name.split( \" \" );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\r\n\t\t\t\t// If \"name\" is an array of keys...\r\n\t\t\t\t// When data is initially created, via (\"key\", \"val\") signature,\r\n\t\t\t\t// keys will be converted to camelCase.\r\n\t\t\t\t// Since there is no way to tell _how_ a key was added, remove\r\n\t\t\t\t// both plain key and camelCase key. #12786\r\n\t\t\t\t// This will only penalize the array argument path.\r\n\t\t\t\tname = name.concat( jQuery.map( name, jQuery.camelCase ) );\r\n\t\t\t}\r\n\r\n\t\t\ti = name.length;\r\n\t\t\twhile ( i-- ) {\r\n\t\t\t\tdelete thisCache[ name[ i ] ];\r\n\t\t\t}\r\n\r\n\t\t\t// If there is no data left in the cache, we want to continue\r\n\t\t\t// and let the cache object itself get destroyed\r\n\t\t\tif ( pvt ? !isEmptyDataObject( thisCache ) : !jQuery.isEmptyObject( thisCache ) ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// See jQuery.data for more information\r\n\tif ( !pvt ) {\r\n\t\tdelete cache[ id ].data;\r\n\r\n\t\t// Don't destroy the parent cache unless the internal data object\r\n\t\t// had been the only thing left in it\r\n\t\tif ( !isEmptyDataObject( cache[ id ] ) ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\r\n\t// Destroy the cache\r\n\tif ( isNode ) {\r\n\t\tjQuery.cleanData( [ elem ], true );\r\n\r\n\t// Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)\r\n\t/* jshint eqeqeq: false */\r\n\t} else if ( support.deleteExpando || cache != cache.window ) {\r\n\t\t/* jshint eqeqeq: true */\r\n\t\tdelete cache[ id ];\r\n\r\n\t// When all else fails, undefined\r\n\t} else {\r\n\t\tcache[ id ] = undefined;\r\n\t}\r\n}\r\n\r\njQuery.extend( {\r\n\tcache: {},\r\n\r\n\t// The following elements (space-suffixed to avoid Object.prototype collisions)\r\n\t// throw uncatchable exceptions if you attempt to set expando properties\r\n\tnoData: {\r\n\t\t\"applet \": true,\r\n\t\t\"embed \": true,\r\n\r\n\t\t// ...but Flash objects (which have this classid) *can* handle expandos\r\n\t\t\"object \": \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\"\r\n\t},\r\n\r\n\thasData: function( elem ) {\r\n\t\telem = elem.nodeType ? jQuery.cache[ elem[ jQuery.expando ] ] : elem[ jQuery.expando ];\r\n\t\treturn !!elem && !isEmptyDataObject( elem );\r\n\t},\r\n\r\n\tdata: function( elem, name, data ) {\r\n\t\treturn internalData( elem, name, data );\r\n\t},\r\n\r\n\tremoveData: function( elem, name ) {\r\n\t\treturn internalRemoveData( elem, name );\r\n\t},\r\n\r\n\t// For internal use only.\r\n\t_data: function( elem, name, data ) {\r\n\t\treturn internalData( elem, name, data, true );\r\n\t},\r\n\r\n\t_removeData: function( elem, name ) {\r\n\t\treturn internalRemoveData( elem, name, true );\r\n\t}\r\n} );\r\n\r\njQuery.fn.extend( {\r\n\tdata: function( key, value ) {\r\n\t\tvar i, name, data,\r\n\t\t\telem = this[ 0 ],\r\n\t\t\tattrs = elem && elem.attributes;\r\n\r\n\t\t// Special expections of .data basically thwart jQuery.access,\r\n\t\t// so implement the relevant behavior ourselves\r\n\r\n\t\t// Gets all values\r\n\t\tif ( key === undefined ) {\r\n\t\t\tif ( this.length ) {\r\n\t\t\t\tdata = jQuery.data( elem );\r\n\r\n\t\t\t\tif ( elem.nodeType === 1 && !jQuery._data( elem, \"parsedAttrs\" ) ) {\r\n\t\t\t\t\ti = attrs.length;\r\n\t\t\t\t\twhile ( i-- ) {\r\n\r\n\t\t\t\t\t\t// Support: IE11+\r\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\r\n\t\t\t\t\t\tif ( attrs[ i ] ) {\r\n\t\t\t\t\t\t\tname = attrs[ i ].name;\r\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\r\n\t\t\t\t\t\t\t\tname = jQuery.camelCase( name.slice( 5 ) );\r\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tjQuery._data( elem, \"parsedAttrs\", true );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn data;\r\n\t\t}\r\n\r\n\t\t// Sets multiple values\r\n\t\tif ( typeof key === \"object\" ) {\r\n\t\t\treturn this.each( function() {\r\n\t\t\t\tjQuery.data( this, key );\r\n\t\t\t} );\r\n\t\t}\r\n\r\n\t\treturn arguments.length > 1 ?\r\n\r\n\t\t\t// Sets one value\r\n\t\t\tthis.each( function() {\r\n\t\t\t\tjQuery.data( this, key, value );\r\n\t\t\t} ) :\r\n\r\n\t\t\t// Gets one value\r\n\t\t\t// Try to fetch any internally stored data first\r\n\t\t\telem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : undefined;\r\n\t},\r\n\r\n\tremoveData: function( key ) {\r\n\t\treturn this.each( function() {\r\n\t\t\tjQuery.removeData( this, key );\r\n\t\t} );\r\n\t}\r\n} );\r\n\r\n\r\njQuery.extend( {\r\n\tqueue: function( elem, type, data ) {\r\n\t\tvar queue;\r\n\r\n\t\tif ( elem ) {\r\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\r\n\t\t\tqueue = jQuery._data( elem, type );\r\n\r\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\r\n\t\t\tif ( data ) {\r\n\t\t\t\tif ( !queue || jQuery.isArray( data ) ) {\r\n\t\t\t\t\tqueue = jQuery._data( elem, type, jQuery.makeArray( data ) );\r\n\t\t\t\t} else {\r\n\t\t\t\t\tqueue.push( data );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn queue || [];\r\n\t\t}\r\n\t},\r\n\r\n\tdequeue: function( elem, type ) {\r\n\t\ttype = type || \"fx\";\r\n\r\n\t\tvar queue = jQuery.queue( elem, type ),\r\n\t\t\tstartLength = queue.length,\r\n\t\t\tfn = queue.shift(),\r\n\t\t\thooks = jQuery._queueHooks( elem, type ),\r\n\t\t\tnext = function() {\r\n\t\t\t\tjQuery.dequeue( elem, type );\r\n\t\t\t};\r\n\r\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\r\n\t\tif ( fn === \"inprogress\" ) {\r\n\t\t\tfn = queue.shift();\r\n\t\t\tstartLength--;\r\n\t\t}\r\n\r\n\t\tif ( fn ) {\r\n\r\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\r\n\t\t\t// automatically dequeued\r\n\t\t\tif ( type === \"fx\" ) {\r\n\t\t\t\tqueue.unshift( \"inprogress\" );\r\n\t\t\t}\r\n\r\n\t\t\t// clear up the last queue stop function\r\n\t\t\tdelete hooks.stop;\r\n\t\t\tfn.call( elem, next, hooks );\r\n\t\t}\r\n\r\n\t\tif ( !startLength && hooks ) {\r\n\t\t\thooks.empty.fire();\r\n\t\t}\r\n\t},\r\n\r\n\t// not intended for public consumption - generates a queueHooks object,\r\n\t// or returns the current one\r\n\t_queueHooks: function( elem, type ) {\r\n\t\tvar key = type + \"queueHooks\";\r\n\t\treturn jQuery._data( elem, key ) || jQuery._data( elem, key, {\r\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\r\n\t\t\t\tjQuery._removeData( elem, type + \"queue\" );\r\n\t\t\t\tjQuery._removeData( elem, key );\r\n\t\t\t} )\r\n\t\t} );\r\n\t}\r\n} );\r\n\r\njQuery.fn.extend( {\r\n\tqueue: function( type, data ) {\r\n\t\tvar setter = 2;\r\n\r\n\t\tif ( typeof type !== \"string\" ) {\r\n\t\t\tdata = type;\r\n\t\t\ttype = \"fx\";\r\n\t\t\tsetter--;\r\n\t\t}\r\n\r\n\t\tif ( arguments.length < setter ) {\r\n\t\t\treturn jQuery.queue( this[ 0 ], type );\r\n\t\t}\r\n\r\n\t\treturn data === undefined ?\r\n\t\t\tthis :\r\n\t\t\tthis.each( function() {\r\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\r\n\r\n\t\t\t\t// ensure a hooks for this queue\r\n\t\t\t\tjQuery._queueHooks( this, type );\r\n\r\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\r\n\t\t\t\t\tjQuery.dequeue( this, type );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t},\r\n\tdequeue: function( type ) {\r\n\t\treturn this.each( function() {\r\n\t\t\tjQuery.dequeue( this, type );\r\n\t\t} );\r\n\t},\r\n\tclearQueue: function( type ) {\r\n\t\treturn this.queue( type || \"fx\", [] );\r\n\t},\r\n\r\n\t// Get a promise resolved when queues of a certain type\r\n\t// are emptied (fx is the type by default)\r\n\tpromise: function( type, obj ) {\r\n\t\tvar tmp,\r\n\t\t\tcount = 1,\r\n\t\t\tdefer = jQuery.Deferred(),\r\n\t\t\telements = this,\r\n\t\t\ti = this.length,\r\n\t\t\tresolve = function() {\r\n\t\t\t\tif ( !( --count ) ) {\r\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tif ( typeof type !== \"string\" ) {\r\n\t\t\tobj = type;\r\n\t\t\ttype = undefined;\r\n\t\t}\r\n\t\ttype = type || \"fx\";\r\n\r\n\t\twhile ( i-- ) {\r\n\t\t\ttmp = jQuery._data( elements[ i ], type + \"queueHooks\" );\r\n\t\t\tif ( tmp && tmp.empty ) {\r\n\t\t\t\tcount++;\r\n\t\t\t\ttmp.empty.add( resolve );\r\n\t\t\t}\r\n\t\t}\r\n\t\tresolve();\r\n\t\treturn defer.promise( obj );\r\n\t}\r\n} );\r\n\r\n\r\n( function() {\r\n\tvar shrinkWrapBlocksVal;\r\n\r\n\tsupport.shrinkWrapBlocks = function() {\r\n\t\tif ( shrinkWrapBlocksVal != null ) {\r\n\t\t\treturn shrinkWrapBlocksVal;\r\n\t\t}\r\n\r\n\t\t// Will be changed later if needed.\r\n\t\tshrinkWrapBlocksVal = false;\r\n\r\n\t\t// Minified: var b,c,d\r\n\t\tvar div, body, container;\r\n\r\n\t\tbody = document.getElementsByTagName( \"body\" )[ 0 ];\r\n\t\tif ( !body || !body.style ) {\r\n\r\n\t\t\t// Test fired too early or in an unsupported environment, exit.\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Setup\r\n\t\tdiv = document.createElement( \"div\" );\r\n\t\tcontainer = document.createElement( \"div\" );\r\n\t\tcontainer.style.cssText = \"position:absolute;border:0;width:0;height:0;top:0;left:-9999px\";\r\n\t\tbody.appendChild( container ).appendChild( div );\r\n\r\n\t\t// Support: IE6\r\n\t\t// Check if elements with layout shrink-wrap their children\r\n\t\tif ( typeof div.style.zoom !== \"undefined\" ) {\r\n\r\n\t\t\t// Reset CSS: box-sizing; display; margin; border\r\n\t\t\tdiv.style.cssText =\r\n\r\n\t\t\t\t// Support: Firefox<29, Android 2.3\r\n\t\t\t\t// Vendor-prefix box-sizing\r\n\t\t\t\t\"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;\" +\r\n\t\t\t\t\"box-sizing:content-box;display:block;margin:0;border:0;\" +\r\n\t\t\t\t\"padding:1px;width:1px;zoom:1\";\r\n\t\t\tdiv.appendChild( document.createElement( \"div\" ) ).style.width = \"5px\";\r\n\t\t\tshrinkWrapBlocksVal = div.offsetWidth !== 3;\r\n\t\t}\r\n\r\n\t\tbody.removeChild( container );\r\n\r\n\t\treturn shrinkWrapBlocksVal;\r\n\t};\r\n\r\n} )();\r\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\r\n\r\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\r\n\r\n\r\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\r\n\r\nvar isHidden = function( elem, el ) {\r\n\r\n\t\t// isHidden might be called from jQuery#filter function;\r\n\t\t// in that case, element will be second argument\r\n\t\telem = el || elem;\r\n\t\treturn jQuery.css( elem, \"display\" ) === \"none\" ||\r\n\t\t\t!jQuery.contains( elem.ownerDocument, elem );\r\n\t};\r\n\r\n\r\n\r\nfunction adjustCSS( elem, prop, valueParts, tween ) {\r\n\tvar adjusted,\r\n\t\tscale = 1,\r\n\t\tmaxIterations = 20,\r\n\t\tcurrentValue = tween ?\r\n\t\t\tfunction() { return tween.cur(); } :\r\n\t\t\tfunction() { return jQuery.css( elem, prop, \"\" ); },\r\n\t\tinitial = currentValue(),\r\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\r\n\r\n\t\t// Starting value computation is required for potential unit mismatches\r\n\t\tinitialInUnit = ( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\r\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\r\n\r\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\r\n\r\n\t\t// Trust units reported by jQuery.css\r\n\t\tunit = unit || initialInUnit[ 3 ];\r\n\r\n\t\t// Make sure we update the tween properties later on\r\n\t\tvalueParts = valueParts || [];\r\n\r\n\t\t// Iteratively approximate from a nonzero starting point\r\n\t\tinitialInUnit = +initial || 1;\r\n\r\n\t\tdo {\r\n\r\n\t\t\t// If previous iteration zeroed out, double until we get *something*.\r\n\t\t\t// Use string for doubling so we don't accidentally see scale as unchanged below\r\n\t\t\tscale = scale || \".5\";\r\n\r\n\t\t\t// Adjust and apply\r\n\t\t\tinitialInUnit = initialInUnit / scale;\r\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\r\n\r\n\t\t// Update scale, tolerating zero or NaN from tween.cur()\r\n\t\t// Break the loop if scale is unchanged or perfect, or if we've just had enough.\r\n\t\t} while (\r\n\t\t\tscale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations\r\n\t\t);\r\n\t}\r\n\r\n\tif ( valueParts ) {\r\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\r\n\r\n\t\t// Apply relative offset (+=/-=) if specified\r\n\t\tadjusted = valueParts[ 1 ] ?\r\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\r\n\t\t\t+valueParts[ 2 ];\r\n\t\tif ( tween ) {\r\n\t\t\ttween.unit = unit;\r\n\t\t\ttween.start = initialInUnit;\r\n\t\t\ttween.end = adjusted;\r\n\t\t}\r\n\t}\r\n\treturn adjusted;\r\n}\r\n\r\n\r\n// Multifunctional method to get and set values of a collection\r\n// The value/s can optionally be executed if it's a function\r\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\r\n\tvar i = 0,\r\n\t\tlength = elems.length,\r\n\t\tbulk = key == null;\r\n\r\n\t// Sets many values\r\n\tif ( jQuery.type( key ) === \"object\" ) {\r\n\t\tchainable = true;\r\n\t\tfor ( i in key ) {\r\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\r\n\t\t}\r\n\r\n\t// Sets one value\r\n\t} else if ( value !== undefined ) {\r\n\t\tchainable = true;\r\n\r\n\t\tif ( !jQuery.isFunction( value ) ) {\r\n\t\t\traw = true;\r\n\t\t}\r\n\r\n\t\tif ( bulk ) {\r\n\r\n\t\t\t// Bulk operations run against the entire set\r\n\t\t\tif ( raw ) {\r\n\t\t\t\tfn.call( elems, value );\r\n\t\t\t\tfn = null;\r\n\r\n\t\t\t// ...except when executing function values\r\n\t\t\t} else {\r\n\t\t\t\tbulk = fn;\r\n\t\t\t\tfn = function( elem, key, value ) {\r\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ( fn ) {\r\n\t\t\tfor ( ; i < length; i++ ) {\r\n\t\t\t\tfn(\r\n\t\t\t\t\telems[ i ],\r\n\t\t\t\t\tkey,\r\n\t\t\t\t\traw ? value : value.call( elems[ i ], i, fn( elems[ i ], key ) )\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn chainable ?\r\n\t\telems :\r\n\r\n\t\t// Gets\r\n\t\tbulk ?\r\n\t\t\tfn.call( elems ) :\r\n\t\t\tlength ? fn( elems[ 0 ], key ) : emptyGet;\r\n};\r\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\r\n\r\nvar rtagName = ( /<([\\w:-]+)/ );\r\n\r\nvar rscriptType = ( /^$|\\/(?:java|ecma)script/i );\r\n\r\nvar rleadingWhitespace = ( /^\\s+/ );\r\n\r\nvar nodeNames = \"abbr|article|aside|audio|bdi|canvas|data|datalist|\" +\r\n\t\t\"details|dialog|figcaption|figure|footer|header|hgroup|main|\" +\r\n\t\t\"mark|meter|nav|output|picture|progress|section|summary|template|time|video\";\r\n\r\n\r\n\r\nfunction createSafeFragment( document ) {\r\n\tvar list = nodeNames.split( \"|\" ),\r\n\t\tsafeFrag = document.createDocumentFragment();\r\n\r\n\tif ( safeFrag.createElement ) {\r\n\t\twhile ( list.length ) {\r\n\t\t\tsafeFrag.createElement(\r\n\t\t\t\tlist.pop()\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\treturn safeFrag;\r\n}\r\n\r\n\r\n( function() {\r\n\tvar div = document.createElement( \"div\" ),\r\n\t\tfragment = document.createDocumentFragment(),\r\n\t\tinput = document.createElement( \"input\" );\r\n\r\n\t// Setup\r\n\tdiv.innerHTML = \"
            a\";\r\n\r\n\t// IE strips leading whitespace when .innerHTML is used\r\n\tsupport.leadingWhitespace = div.firstChild.nodeType === 3;\r\n\r\n\t// Make sure that tbody elements aren't automatically inserted\r\n\t// IE will insert them into empty tables\r\n\tsupport.tbody = !div.getElementsByTagName( \"tbody\" ).length;\r\n\r\n\t// Make sure that link elements get serialized correctly by innerHTML\r\n\t// This requires a wrapper element in IE\r\n\tsupport.htmlSerialize = !!div.getElementsByTagName( \"link\" ).length;\r\n\r\n\t// Makes sure cloning an html5 element does not cause problems\r\n\t// Where outerHTML is undefined, this still works\r\n\tsupport.html5Clone =\r\n\t\tdocument.createElement( \"nav\" ).cloneNode( true ).outerHTML !== \"<:nav>\";\r\n\r\n\t// Check if a disconnected checkbox will retain its checked\r\n\t// value of true after appended to the DOM (IE6/7)\r\n\tinput.type = \"checkbox\";\r\n\tinput.checked = true;\r\n\tfragment.appendChild( input );\r\n\tsupport.appendChecked = input.checked;\r\n\r\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\r\n\t// Support: IE6-IE11+\r\n\tdiv.innerHTML = \"\";\r\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\r\n\r\n\t// #11217 - WebKit loses check when the name is after the checked attribute\r\n\tfragment.appendChild( div );\r\n\r\n\t// Support: Windows Web Apps (WWA)\r\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\r\n\tinput = document.createElement( \"input\" );\r\n\tinput.setAttribute( \"type\", \"radio\" );\r\n\tinput.setAttribute( \"checked\", \"checked\" );\r\n\tinput.setAttribute( \"name\", \"t\" );\r\n\r\n\tdiv.appendChild( input );\r\n\r\n\t// Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3\r\n\t// old WebKit doesn't clone checked state correctly in fragments\r\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\r\n\r\n\t// Support: IE<9\r\n\t// Cloned elements keep attachEvent handlers, we use addEventListener on IE9+\r\n\tsupport.noCloneEvent = !!div.addEventListener;\r\n\r\n\t// Support: IE<9\r\n\t// Since attributes and properties are the same in IE,\r\n\t// cleanData must set properties to undefined rather than use removeAttribute\r\n\tdiv[ jQuery.expando ] = 1;\r\n\tsupport.attributes = !div.getAttribute( jQuery.expando );\r\n} )();\r\n\r\n\r\n// We have to close these tags to support XHTML (#13200)\r\nvar wrapMap = {\r\n\toption: [ 1, \"\" ],\r\n\tlegend: [ 1, \"
            \", \"
            \" ],\r\n\tarea: [ 1, \"\", \"\" ],\r\n\r\n\t// Support: IE8\r\n\tparam: [ 1, \"\", \"\" ],\r\n\tthead: [ 1, \"\", \"
            \" ],\r\n\ttr: [ 2, \"\", \"
            \" ],\r\n\tcol: [ 2, \"\", \"
            \" ],\r\n\ttd: [ 3, \"\", \"
            \" ],\r\n\r\n\t// IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags,\r\n\t// unless wrapped in a div with non-breaking characters in front of it.\r\n\t_default: support.htmlSerialize ? [ 0, \"\", \"\" ] : [ 1, \"X
            \", \"
            \" ]\r\n};\r\n\r\n// Support: IE8-IE9\r\nwrapMap.optgroup = wrapMap.option;\r\n\r\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\r\nwrapMap.th = wrapMap.td;\r\n\r\n\r\nfunction getAll( context, tag ) {\r\n\tvar elems, elem,\r\n\t\ti = 0,\r\n\t\tfound = typeof context.getElementsByTagName !== \"undefined\" ?\r\n\t\t\tcontext.getElementsByTagName( tag || \"*\" ) :\r\n\t\t\ttypeof context.querySelectorAll !== \"undefined\" ?\r\n\t\t\t\tcontext.querySelectorAll( tag || \"*\" ) :\r\n\t\t\t\tundefined;\r\n\r\n\tif ( !found ) {\r\n\t\tfor ( found = [], elems = context.childNodes || context;\r\n\t\t\t( elem = elems[ i ] ) != null;\r\n\t\t\ti++\r\n\t\t) {\r\n\t\t\tif ( !tag || jQuery.nodeName( elem, tag ) ) {\r\n\t\t\t\tfound.push( elem );\r\n\t\t\t} else {\r\n\t\t\t\tjQuery.merge( found, getAll( elem, tag ) );\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn tag === undefined || tag && jQuery.nodeName( context, tag ) ?\r\n\t\tjQuery.merge( [ context ], found ) :\r\n\t\tfound;\r\n}\r\n\r\n\r\n// Mark scripts as having already been evaluated\r\nfunction setGlobalEval( elems, refElements ) {\r\n\tvar elem,\r\n\t\ti = 0;\r\n\tfor ( ; ( elem = elems[ i ] ) != null; i++ ) {\r\n\t\tjQuery._data(\r\n\t\t\telem,\r\n\t\t\t\"globalEval\",\r\n\t\t\t!refElements || jQuery._data( refElements[ i ], \"globalEval\" )\r\n\t\t);\r\n\t}\r\n}\r\n\r\n\r\nvar rhtml = /<|&#?\\w+;/,\r\n\trtbody = / from table fragments\r\n\t\t\t\tif ( !support.tbody ) {\r\n\r\n\t\t\t\t\t// String was a , *may* have spurious \r\n\t\t\t\t\telem = tag === \"table\" && !rtbody.test( elem ) ?\r\n\t\t\t\t\t\ttmp.firstChild :\r\n\r\n\t\t\t\t\t\t// String was a bare or \r\n\t\t\t\t\t\twrap[ 1 ] === \"
            \" && !rtbody.test( elem ) ?\r\n\t\t\t\t\t\t\ttmp :\r\n\t\t\t\t\t\t\t0;\r\n\r\n\t\t\t\t\tj = elem && elem.childNodes.length;\r\n\t\t\t\t\twhile ( j-- ) {\r\n\t\t\t\t\t\tif ( jQuery.nodeName( ( tbody = elem.childNodes[ j ] ), \"tbody\" ) &&\r\n\t\t\t\t\t\t\t!tbody.childNodes.length ) {\r\n\r\n\t\t\t\t\t\t\telem.removeChild( tbody );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\r\n\r\n\t\t\t\t// Fix #12392 for WebKit and IE > 9\r\n\t\t\t\ttmp.textContent = \"\";\r\n\r\n\t\t\t\t// Fix #12392 for oldIE\r\n\t\t\t\twhile ( tmp.firstChild ) {\r\n\t\t\t\t\ttmp.removeChild( tmp.firstChild );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Remember the top-level container for proper cleanup\r\n\t\t\t\ttmp = safe.lastChild;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Fix #11356: Clear elements from fragment\r\n\tif ( tmp ) {\r\n\t\tsafe.removeChild( tmp );\r\n\t}\r\n\r\n\t// Reset defaultChecked for any radios and checkboxes\r\n\t// about to be appended to the DOM in IE 6/7 (#8060)\r\n\tif ( !support.appendChecked ) {\r\n\t\tjQuery.grep( getAll( nodes, \"input\" ), fixDefaultChecked );\r\n\t}\r\n\r\n\ti = 0;\r\n\twhile ( ( elem = nodes[ i++ ] ) ) {\r\n\r\n\t\t// Skip elements already in the context collection (trac-4087)\r\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\r\n\t\t\tif ( ignored ) {\r\n\t\t\t\tignored.push( elem );\r\n\t\t\t}\r\n\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\r\n\r\n\t\t// Append to fragment\r\n\t\ttmp = getAll( safe.appendChild( elem ), \"script\" );\r\n\r\n\t\t// Preserve script evaluation history\r\n\t\tif ( contains ) {\r\n\t\t\tsetGlobalEval( tmp );\r\n\t\t}\r\n\r\n\t\t// Capture executables\r\n\t\tif ( scripts ) {\r\n\t\t\tj = 0;\r\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\r\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\r\n\t\t\t\t\tscripts.push( elem );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\ttmp = null;\r\n\r\n\treturn safe;\r\n}\r\n\r\n\r\n( function() {\r\n\tvar i, eventName,\r\n\t\tdiv = document.createElement( \"div\" );\r\n\r\n\t// Support: IE<9 (lack submit/change bubble), Firefox (lack focus(in | out) events)\r\n\tfor ( i in { submit: true, change: true, focusin: true } ) {\r\n\t\teventName = \"on\" + i;\r\n\r\n\t\tif ( !( support[ i ] = eventName in window ) ) {\r\n\r\n\t\t\t// Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP)\r\n\t\t\tdiv.setAttribute( eventName, \"t\" );\r\n\t\t\tsupport[ i ] = div.attributes[ eventName ].expando === false;\r\n\t\t}\r\n\t}\r\n\r\n\t// Null elements to avoid leaks in IE.\r\n\tdiv = null;\r\n} )();\r\n\r\n\r\nvar rformElems = /^(?:input|select|textarea)$/i,\r\n\trkeyEvent = /^key/,\r\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\r\n\trfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\r\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\r\n\r\nfunction returnTrue() {\r\n\treturn true;\r\n}\r\n\r\nfunction returnFalse() {\r\n\treturn false;\r\n}\r\n\r\n// Support: IE9\r\n// See #13393 for more info\r\nfunction safeActiveElement() {\r\n\ttry {\r\n\t\treturn document.activeElement;\r\n\t} catch ( err ) { }\r\n}\r\n\r\nfunction on( elem, types, selector, data, fn, one ) {\r\n\tvar origFn, type;\r\n\r\n\t// Types can be a map of types/handlers\r\n\tif ( typeof types === \"object\" ) {\r\n\r\n\t\t// ( types-Object, selector, data )\r\n\t\tif ( typeof selector !== \"string\" ) {\r\n\r\n\t\t\t// ( types-Object, data )\r\n\t\t\tdata = data || selector;\r\n\t\t\tselector = undefined;\r\n\t\t}\r\n\t\tfor ( type in types ) {\r\n\t\t\ton( elem, type, selector, data, types[ type ], one );\r\n\t\t}\r\n\t\treturn elem;\r\n\t}\r\n\r\n\tif ( data == null && fn == null ) {\r\n\r\n\t\t// ( types, fn )\r\n\t\tfn = selector;\r\n\t\tdata = selector = undefined;\r\n\t} else if ( fn == null ) {\r\n\t\tif ( typeof selector === \"string\" ) {\r\n\r\n\t\t\t// ( types, selector, fn )\r\n\t\t\tfn = data;\r\n\t\t\tdata = undefined;\r\n\t\t} else {\r\n\r\n\t\t\t// ( types, data, fn )\r\n\t\t\tfn = data;\r\n\t\t\tdata = selector;\r\n\t\t\tselector = undefined;\r\n\t\t}\r\n\t}\r\n\tif ( fn === false ) {\r\n\t\tfn = returnFalse;\r\n\t} else if ( !fn ) {\r\n\t\treturn elem;\r\n\t}\r\n\r\n\tif ( one === 1 ) {\r\n\t\torigFn = fn;\r\n\t\tfn = function( event ) {\r\n\r\n\t\t\t// Can use an empty set, since event contains the info\r\n\t\t\tjQuery().off( event );\r\n\t\t\treturn origFn.apply( this, arguments );\r\n\t\t};\r\n\r\n\t\t// Use same guid so caller can remove using origFn\r\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\r\n\t}\r\n\treturn elem.each( function() {\r\n\t\tjQuery.event.add( this, types, fn, data, selector );\r\n\t} );\r\n}\r\n\r\n/*\r\n * Helper functions for managing events -- not part of the public interface.\r\n * Props to Dean Edwards' addEvent library for many of the ideas.\r\n */\r\njQuery.event = {\r\n\r\n\tglobal: {},\r\n\r\n\tadd: function( elem, types, handler, data, selector ) {\r\n\t\tvar tmp, events, t, handleObjIn,\r\n\t\t\tspecial, eventHandle, handleObj,\r\n\t\t\thandlers, type, namespaces, origType,\r\n\t\t\telemData = jQuery._data( elem );\r\n\r\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\r\n\t\tif ( !elemData ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Caller can pass in an object of custom data in lieu of the handler\r\n\t\tif ( handler.handler ) {\r\n\t\t\thandleObjIn = handler;\r\n\t\t\thandler = handleObjIn.handler;\r\n\t\t\tselector = handleObjIn.selector;\r\n\t\t}\r\n\r\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\r\n\t\tif ( !handler.guid ) {\r\n\t\t\thandler.guid = jQuery.guid++;\r\n\t\t}\r\n\r\n\t\t// Init the element's event structure and main handler, if this is the first\r\n\t\tif ( !( events = elemData.events ) ) {\r\n\t\t\tevents = elemData.events = {};\r\n\t\t}\r\n\t\tif ( !( eventHandle = elemData.handle ) ) {\r\n\t\t\teventHandle = elemData.handle = function( e ) {\r\n\r\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\r\n\t\t\t\t// when an event is called after a page has unloaded\r\n\t\t\t\treturn typeof jQuery !== \"undefined\" &&\r\n\t\t\t\t\t( !e || jQuery.event.triggered !== e.type ) ?\r\n\t\t\t\t\tjQuery.event.dispatch.apply( eventHandle.elem, arguments ) :\r\n\t\t\t\t\tundefined;\r\n\t\t\t};\r\n\r\n\t\t\t// Add elem as a property of the handle fn to prevent a memory leak\r\n\t\t\t// with IE non-native events\r\n\t\t\teventHandle.elem = elem;\r\n\t\t}\r\n\r\n\t\t// Handle multiple events separated by a space\r\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\r\n\t\tt = types.length;\r\n\t\twhile ( t-- ) {\r\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\r\n\t\t\ttype = origType = tmp[ 1 ];\r\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\r\n\r\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\r\n\t\t\tif ( !type ) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\t// If event changes its type, use the special event handlers for the changed type\r\n\t\t\tspecial = jQuery.event.special[ type ] || {};\r\n\r\n\t\t\t// If selector defined, determine special event api type, otherwise given type\r\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\r\n\r\n\t\t\t// Update special based on newly reset type\r\n\t\t\tspecial = jQuery.event.special[ type ] || {};\r\n\r\n\t\t\t// handleObj is passed to all event handlers\r\n\t\t\thandleObj = jQuery.extend( {\r\n\t\t\t\ttype: type,\r\n\t\t\t\torigType: origType,\r\n\t\t\t\tdata: data,\r\n\t\t\t\thandler: handler,\r\n\t\t\t\tguid: handler.guid,\r\n\t\t\t\tselector: selector,\r\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\r\n\t\t\t\tnamespace: namespaces.join( \".\" )\r\n\t\t\t}, handleObjIn );\r\n\r\n\t\t\t// Init the event handler queue if we're the first\r\n\t\t\tif ( !( handlers = events[ type ] ) ) {\r\n\t\t\t\thandlers = events[ type ] = [];\r\n\t\t\t\thandlers.delegateCount = 0;\r\n\r\n\t\t\t\t// Only use addEventListener/attachEvent if the special events handler returns false\r\n\t\t\t\tif ( !special.setup ||\r\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\r\n\r\n\t\t\t\t\t// Bind the global event handler to the element\r\n\t\t\t\t\tif ( elem.addEventListener ) {\r\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\r\n\r\n\t\t\t\t\t} else if ( elem.attachEvent ) {\r\n\t\t\t\t\t\telem.attachEvent( \"on\" + type, eventHandle );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif ( special.add ) {\r\n\t\t\t\tspecial.add.call( elem, handleObj );\r\n\r\n\t\t\t\tif ( !handleObj.handler.guid ) {\r\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Add to the element's handler list, delegates in front\r\n\t\t\tif ( selector ) {\r\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\r\n\t\t\t} else {\r\n\t\t\t\thandlers.push( handleObj );\r\n\t\t\t}\r\n\r\n\t\t\t// Keep track of which events have ever been used, for event optimization\r\n\t\t\tjQuery.event.global[ type ] = true;\r\n\t\t}\r\n\r\n\t\t// Nullify elem to prevent memory leaks in IE\r\n\t\telem = null;\r\n\t},\r\n\r\n\t// Detach an event or set of events from an element\r\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\r\n\t\tvar j, handleObj, tmp,\r\n\t\t\torigCount, t, events,\r\n\t\t\tspecial, handlers, type,\r\n\t\t\tnamespaces, origType,\r\n\t\t\telemData = jQuery.hasData( elem ) && jQuery._data( elem );\r\n\r\n\t\tif ( !elemData || !( events = elemData.events ) ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Once for each type.namespace in types; type may be omitted\r\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\r\n\t\tt = types.length;\r\n\t\twhile ( t-- ) {\r\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\r\n\t\t\ttype = origType = tmp[ 1 ];\r\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\r\n\r\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\r\n\t\t\tif ( !type ) {\r\n\t\t\t\tfor ( type in events ) {\r\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\r\n\t\t\t\t}\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tspecial = jQuery.event.special[ type ] || {};\r\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\r\n\t\t\thandlers = events[ type ] || [];\r\n\t\t\ttmp = tmp[ 2 ] &&\r\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\r\n\r\n\t\t\t// Remove matching events\r\n\t\t\torigCount = j = handlers.length;\r\n\t\t\twhile ( j-- ) {\r\n\t\t\t\thandleObj = handlers[ j ];\r\n\r\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\r\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\r\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\r\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\r\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\r\n\t\t\t\t\thandlers.splice( j, 1 );\r\n\r\n\t\t\t\t\tif ( handleObj.selector ) {\r\n\t\t\t\t\t\thandlers.delegateCount--;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ( special.remove ) {\r\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\r\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\r\n\t\t\tif ( origCount && !handlers.length ) {\r\n\t\t\t\tif ( !special.teardown ||\r\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\r\n\r\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdelete events[ type ];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Remove the expando if it's no longer used\r\n\t\tif ( jQuery.isEmptyObject( events ) ) {\r\n\t\t\tdelete elemData.handle;\r\n\r\n\t\t\t// removeData also checks for emptiness and clears the expando if empty\r\n\t\t\t// so use it instead of delete\r\n\t\t\tjQuery._removeData( elem, \"events\" );\r\n\t\t}\r\n\t},\r\n\r\n\ttrigger: function( event, data, elem, onlyHandlers ) {\r\n\t\tvar handle, ontype, cur,\r\n\t\t\tbubbleType, special, tmp, i,\r\n\t\t\teventPath = [ elem || document ],\r\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\r\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\r\n\r\n\t\tcur = tmp = elem = elem || document;\r\n\r\n\t\t// Don't do events on text and comment nodes\r\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\r\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\r\n\r\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\r\n\t\t\tnamespaces = type.split( \".\" );\r\n\t\t\ttype = namespaces.shift();\r\n\t\t\tnamespaces.sort();\r\n\t\t}\r\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\r\n\r\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\r\n\t\tevent = event[ jQuery.expando ] ?\r\n\t\t\tevent :\r\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\r\n\r\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\r\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\r\n\t\tevent.namespace = namespaces.join( \".\" );\r\n\t\tevent.rnamespace = event.namespace ?\r\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\r\n\t\t\tnull;\r\n\r\n\t\t// Clean up the event in case it is being reused\r\n\t\tevent.result = undefined;\r\n\t\tif ( !event.target ) {\r\n\t\t\tevent.target = elem;\r\n\t\t}\r\n\r\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\r\n\t\tdata = data == null ?\r\n\t\t\t[ event ] :\r\n\t\t\tjQuery.makeArray( data, [ event ] );\r\n\r\n\t\t// Allow special events to draw outside the lines\r\n\t\tspecial = jQuery.event.special[ type ] || {};\r\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\r\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\r\n\t\tif ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {\r\n\r\n\t\t\tbubbleType = special.delegateType || type;\r\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\r\n\t\t\t\tcur = cur.parentNode;\r\n\t\t\t}\r\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\r\n\t\t\t\teventPath.push( cur );\r\n\t\t\t\ttmp = cur;\r\n\t\t\t}\r\n\r\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\r\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\r\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Fire handlers on the event path\r\n\t\ti = 0;\r\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\r\n\r\n\t\t\tevent.type = i > 1 ?\r\n\t\t\t\tbubbleType :\r\n\t\t\t\tspecial.bindType || type;\r\n\r\n\t\t\t// jQuery handler\r\n\t\t\thandle = ( jQuery._data( cur, \"events\" ) || {} )[ event.type ] &&\r\n\t\t\t\tjQuery._data( cur, \"handle\" );\r\n\r\n\t\t\tif ( handle ) {\r\n\t\t\t\thandle.apply( cur, data );\r\n\t\t\t}\r\n\r\n\t\t\t// Native handler\r\n\t\t\thandle = ontype && cur[ ontype ];\r\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\r\n\t\t\t\tevent.result = handle.apply( cur, data );\r\n\t\t\t\tif ( event.result === false ) {\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tevent.type = type;\r\n\r\n\t\t// If nobody prevented the default action, do it now\r\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\r\n\r\n\t\t\tif (\r\n\t\t\t\t( !special._default ||\r\n\t\t\t\t special._default.apply( eventPath.pop(), data ) === false\r\n\t\t\t\t) && acceptData( elem )\r\n\t\t\t) {\r\n\r\n\t\t\t\t// Call a native DOM method on the target with the same name name as the event.\r\n\t\t\t\t// Can't use an .isFunction() check here because IE6/7 fails that test.\r\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\r\n\t\t\t\tif ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) {\r\n\r\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\r\n\t\t\t\t\ttmp = elem[ ontype ];\r\n\r\n\t\t\t\t\tif ( tmp ) {\r\n\t\t\t\t\t\telem[ ontype ] = null;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\r\n\t\t\t\t\tjQuery.event.triggered = type;\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\telem[ type ]();\r\n\t\t\t\t\t} catch ( e ) {\r\n\r\n\t\t\t\t\t\t// IE<9 dies on focus/blur to hidden element (#1486,#12518)\r\n\t\t\t\t\t\t// only reproducible on winXP IE8 native, not IE9 in IE8 mode\r\n\t\t\t\t\t}\r\n\t\t\t\t\tjQuery.event.triggered = undefined;\r\n\r\n\t\t\t\t\tif ( tmp ) {\r\n\t\t\t\t\t\telem[ ontype ] = tmp;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn event.result;\r\n\t},\r\n\r\n\tdispatch: function( event ) {\r\n\r\n\t\t// Make a writable jQuery.Event from the native event object\r\n\t\tevent = jQuery.event.fix( event );\r\n\r\n\t\tvar i, j, ret, matched, handleObj,\r\n\t\t\thandlerQueue = [],\r\n\t\t\targs = slice.call( arguments ),\r\n\t\t\thandlers = ( jQuery._data( this, \"events\" ) || {} )[ event.type ] || [],\r\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\r\n\r\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\r\n\t\targs[ 0 ] = event;\r\n\t\tevent.delegateTarget = this;\r\n\r\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\r\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Determine handlers\r\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\r\n\r\n\t\t// Run delegates first; they may want to stop propagation beneath us\r\n\t\ti = 0;\r\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\r\n\t\t\tevent.currentTarget = matched.elem;\r\n\r\n\t\t\tj = 0;\r\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\r\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\r\n\r\n\t\t\t\t// Triggered event must either 1) have no namespace, or 2) have namespace(s)\r\n\t\t\t\t// a subset or equal to those in the bound event (both can have no namespace).\r\n\t\t\t\tif ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {\r\n\r\n\t\t\t\t\tevent.handleObj = handleObj;\r\n\t\t\t\t\tevent.data = handleObj.data;\r\n\r\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\r\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\r\n\r\n\t\t\t\t\tif ( ret !== undefined ) {\r\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\r\n\t\t\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Call the postDispatch hook for the mapped type\r\n\t\tif ( special.postDispatch ) {\r\n\t\t\tspecial.postDispatch.call( this, event );\r\n\t\t}\r\n\r\n\t\treturn event.result;\r\n\t},\r\n\r\n\thandlers: function( event, handlers ) {\r\n\t\tvar i, matches, sel, handleObj,\r\n\t\t\thandlerQueue = [],\r\n\t\t\tdelegateCount = handlers.delegateCount,\r\n\t\t\tcur = event.target;\r\n\r\n\t\t// Support (at least): Chrome, IE9\r\n\t\t// Find delegate handlers\r\n\t\t// Black-hole SVG instance trees (#13180)\r\n\t\t//\r\n\t\t// Support: Firefox<=42+\r\n\t\t// Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343)\r\n\t\tif ( delegateCount && cur.nodeType &&\r\n\t\t\t( event.type !== \"click\" || isNaN( event.button ) || event.button < 1 ) ) {\r\n\r\n\t\t\t/* jshint eqeqeq: false */\r\n\t\t\tfor ( ; cur != this; cur = cur.parentNode || this ) {\r\n\t\t\t\t/* jshint eqeqeq: true */\r\n\r\n\t\t\t\t// Don't check non-elements (#13208)\r\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\r\n\t\t\t\tif ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== \"click\" ) ) {\r\n\t\t\t\t\tmatches = [];\r\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\r\n\t\t\t\t\t\thandleObj = handlers[ i ];\r\n\r\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\r\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\r\n\r\n\t\t\t\t\t\tif ( matches[ sel ] === undefined ) {\r\n\t\t\t\t\t\t\tmatches[ sel ] = handleObj.needsContext ?\r\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\r\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif ( matches[ sel ] ) {\r\n\t\t\t\t\t\t\tmatches.push( handleObj );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ( matches.length ) {\r\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matches } );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Add the remaining (directly-bound) handlers\r\n\t\tif ( delegateCount < handlers.length ) {\r\n\t\t\thandlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } );\r\n\t\t}\r\n\r\n\t\treturn handlerQueue;\r\n\t},\r\n\r\n\tfix: function( event ) {\r\n\t\tif ( event[ jQuery.expando ] ) {\r\n\t\t\treturn event;\r\n\t\t}\r\n\r\n\t\t// Create a writable copy of the event object and normalize some properties\r\n\t\tvar i, prop, copy,\r\n\t\t\ttype = event.type,\r\n\t\t\toriginalEvent = event,\r\n\t\t\tfixHook = this.fixHooks[ type ];\r\n\r\n\t\tif ( !fixHook ) {\r\n\t\t\tthis.fixHooks[ type ] = fixHook =\r\n\t\t\t\trmouseEvent.test( type ) ? this.mouseHooks :\r\n\t\t\t\trkeyEvent.test( type ) ? this.keyHooks :\r\n\t\t\t\t{};\r\n\t\t}\r\n\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\r\n\r\n\t\tevent = new jQuery.Event( originalEvent );\r\n\r\n\t\ti = copy.length;\r\n\t\twhile ( i-- ) {\r\n\t\t\tprop = copy[ i ];\r\n\t\t\tevent[ prop ] = originalEvent[ prop ];\r\n\t\t}\r\n\r\n\t\t// Support: IE<9\r\n\t\t// Fix target property (#1925)\r\n\t\tif ( !event.target ) {\r\n\t\t\tevent.target = originalEvent.srcElement || document;\r\n\t\t}\r\n\r\n\t\t// Support: Safari 6-8+\r\n\t\t// Target should not be a text node (#504, #13143)\r\n\t\tif ( event.target.nodeType === 3 ) {\r\n\t\t\tevent.target = event.target.parentNode;\r\n\t\t}\r\n\r\n\t\t// Support: IE<9\r\n\t\t// For mouse/key events, metaKey==false if it's undefined (#3368, #11328)\r\n\t\tevent.metaKey = !!event.metaKey;\r\n\r\n\t\treturn fixHook.filter ? fixHook.filter( event, originalEvent ) : event;\r\n\t},\r\n\r\n\t// Includes some event props shared by KeyEvent and MouseEvent\r\n\tprops: ( \"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase \" +\r\n\t\t\"metaKey relatedTarget shiftKey target timeStamp view which\" ).split( \" \" ),\r\n\r\n\tfixHooks: {},\r\n\r\n\tkeyHooks: {\r\n\t\tprops: \"char charCode key keyCode\".split( \" \" ),\r\n\t\tfilter: function( event, original ) {\r\n\r\n\t\t\t// Add which for key events\r\n\t\t\tif ( event.which == null ) {\r\n\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\r\n\t\t\t}\r\n\r\n\t\t\treturn event;\r\n\t\t}\r\n\t},\r\n\r\n\tmouseHooks: {\r\n\t\tprops: ( \"button buttons clientX clientY fromElement offsetX offsetY \" +\r\n\t\t\t\"pageX pageY screenX screenY toElement\" ).split( \" \" ),\r\n\t\tfilter: function( event, original ) {\r\n\t\t\tvar body, eventDoc, doc,\r\n\t\t\t\tbutton = original.button,\r\n\t\t\t\tfromElement = original.fromElement;\r\n\r\n\t\t\t// Calculate pageX/Y if missing and clientX/Y available\r\n\t\t\tif ( event.pageX == null && original.clientX != null ) {\r\n\t\t\t\teventDoc = event.target.ownerDocument || document;\r\n\t\t\t\tdoc = eventDoc.documentElement;\r\n\t\t\t\tbody = eventDoc.body;\r\n\r\n\t\t\t\tevent.pageX = original.clientX +\r\n\t\t\t\t\t( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) -\r\n\t\t\t\t\t( doc && doc.clientLeft || body && body.clientLeft || 0 );\r\n\t\t\t\tevent.pageY = original.clientY +\r\n\t\t\t\t\t( doc && doc.scrollTop || body && body.scrollTop || 0 ) -\r\n\t\t\t\t\t( doc && doc.clientTop || body && body.clientTop || 0 );\r\n\t\t\t}\r\n\r\n\t\t\t// Add relatedTarget, if necessary\r\n\t\t\tif ( !event.relatedTarget && fromElement ) {\r\n\t\t\t\tevent.relatedTarget = fromElement === event.target ?\r\n\t\t\t\t\toriginal.toElement :\r\n\t\t\t\t\tfromElement;\r\n\t\t\t}\r\n\r\n\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\r\n\t\t\t// Note: button is not normalized, so don't use it\r\n\t\t\tif ( !event.which && button !== undefined ) {\r\n\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\r\n\t\t\t}\r\n\r\n\t\t\treturn event;\r\n\t\t}\r\n\t},\r\n\r\n\tspecial: {\r\n\t\tload: {\r\n\r\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\r\n\t\t\tnoBubble: true\r\n\t\t},\r\n\t\tfocus: {\r\n\r\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\r\n\t\t\ttrigger: function() {\r\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tthis.focus();\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t} catch ( e ) {\r\n\r\n\t\t\t\t\t\t// Support: IE<9\r\n\t\t\t\t\t\t// If we error on focus to hidden element (#1486, #12518),\r\n\t\t\t\t\t\t// let .trigger() run the handlers\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tdelegateType: \"focusin\"\r\n\t\t},\r\n\t\tblur: {\r\n\t\t\ttrigger: function() {\r\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\r\n\t\t\t\t\tthis.blur();\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tdelegateType: \"focusout\"\r\n\t\t},\r\n\t\tclick: {\r\n\r\n\t\t\t// For checkbox, fire native event so checked state will be right\r\n\t\t\ttrigger: function() {\r\n\t\t\t\tif ( jQuery.nodeName( this, \"input\" ) && this.type === \"checkbox\" && this.click ) {\r\n\t\t\t\t\tthis.click();\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\r\n\t\t\t_default: function( event ) {\r\n\t\t\t\treturn jQuery.nodeName( event.target, \"a\" );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tbeforeunload: {\r\n\t\t\tpostDispatch: function( event ) {\r\n\r\n\t\t\t\t// Support: Firefox 20+\r\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\r\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\r\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t// Piggyback on a donor event to simulate a different one\r\n\tsimulate: function( type, elem, event ) {\r\n\t\tvar e = jQuery.extend(\r\n\t\t\tnew jQuery.Event(),\r\n\t\t\tevent,\r\n\t\t\t{\r\n\t\t\t\ttype: type,\r\n\t\t\t\tisSimulated: true\r\n\r\n\t\t\t\t// Previously, `originalEvent: {}` was set here, so stopPropagation call\r\n\t\t\t\t// would not be triggered on donor event, since in our own\r\n\t\t\t\t// jQuery.event.stopPropagation function we had a check for existence of\r\n\t\t\t\t// originalEvent.stopPropagation method, so, consequently it would be a noop.\r\n\t\t\t\t//\r\n\t\t\t\t// Guard for simulated events was moved to jQuery.event.stopPropagation function\r\n\t\t\t\t// since `originalEvent` should point to the original event for the\r\n\t\t\t\t// constancy with other events and for more focused logic\r\n\t\t\t}\r\n\t\t);\r\n\r\n\t\tjQuery.event.trigger( e, null, elem );\r\n\r\n\t\tif ( e.isDefaultPrevented() ) {\r\n\t\t\tevent.preventDefault();\r\n\t\t}\r\n\t}\r\n};\r\n\r\njQuery.removeEvent = document.removeEventListener ?\r\n\tfunction( elem, type, handle ) {\r\n\r\n\t\t// This \"if\" is needed for plain objects\r\n\t\tif ( elem.removeEventListener ) {\r\n\t\t\telem.removeEventListener( type, handle );\r\n\t\t}\r\n\t} :\r\n\tfunction( elem, type, handle ) {\r\n\t\tvar name = \"on\" + type;\r\n\r\n\t\tif ( elem.detachEvent ) {\r\n\r\n\t\t\t// #8545, #7054, preventing memory leaks for custom events in IE6-8\r\n\t\t\t// detachEvent needed property on element, by name of that event,\r\n\t\t\t// to properly expose it to GC\r\n\t\t\tif ( typeof elem[ name ] === \"undefined\" ) {\r\n\t\t\t\telem[ name ] = null;\r\n\t\t\t}\r\n\r\n\t\t\telem.detachEvent( name, handle );\r\n\t\t}\r\n\t};\r\n\r\njQuery.Event = function( src, props ) {\r\n\r\n\t// Allow instantiation without the 'new' keyword\r\n\tif ( !( this instanceof jQuery.Event ) ) {\r\n\t\treturn new jQuery.Event( src, props );\r\n\t}\r\n\r\n\t// Event object\r\n\tif ( src && src.type ) {\r\n\t\tthis.originalEvent = src;\r\n\t\tthis.type = src.type;\r\n\r\n\t\t// Events bubbling up the document may have been marked as prevented\r\n\t\t// by a handler lower down the tree; reflect the correct value.\r\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\r\n\t\t\t\tsrc.defaultPrevented === undefined &&\r\n\r\n\t\t\t\t// Support: IE < 9, Android < 4.0\r\n\t\t\t\tsrc.returnValue === false ?\r\n\t\t\treturnTrue :\r\n\t\t\treturnFalse;\r\n\r\n\t// Event type\r\n\t} else {\r\n\t\tthis.type = src;\r\n\t}\r\n\r\n\t// Put explicitly provided properties onto the event object\r\n\tif ( props ) {\r\n\t\tjQuery.extend( this, props );\r\n\t}\r\n\r\n\t// Create a timestamp if incoming event doesn't have one\r\n\tthis.timeStamp = src && src.timeStamp || jQuery.now();\r\n\r\n\t// Mark it as fixed\r\n\tthis[ jQuery.expando ] = true;\r\n};\r\n\r\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\r\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\r\njQuery.Event.prototype = {\r\n\tconstructor: jQuery.Event,\r\n\tisDefaultPrevented: returnFalse,\r\n\tisPropagationStopped: returnFalse,\r\n\tisImmediatePropagationStopped: returnFalse,\r\n\r\n\tpreventDefault: function() {\r\n\t\tvar e = this.originalEvent;\r\n\r\n\t\tthis.isDefaultPrevented = returnTrue;\r\n\t\tif ( !e ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// If preventDefault exists, run it on the original event\r\n\t\tif ( e.preventDefault ) {\r\n\t\t\te.preventDefault();\r\n\r\n\t\t// Support: IE\r\n\t\t// Otherwise set the returnValue property of the original event to false\r\n\t\t} else {\r\n\t\t\te.returnValue = false;\r\n\t\t}\r\n\t},\r\n\tstopPropagation: function() {\r\n\t\tvar e = this.originalEvent;\r\n\r\n\t\tthis.isPropagationStopped = returnTrue;\r\n\r\n\t\tif ( !e || this.isSimulated ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// If stopPropagation exists, run it on the original event\r\n\t\tif ( e.stopPropagation ) {\r\n\t\t\te.stopPropagation();\r\n\t\t}\r\n\r\n\t\t// Support: IE\r\n\t\t// Set the cancelBubble property of the original event to true\r\n\t\te.cancelBubble = true;\r\n\t},\r\n\tstopImmediatePropagation: function() {\r\n\t\tvar e = this.originalEvent;\r\n\r\n\t\tthis.isImmediatePropagationStopped = returnTrue;\r\n\r\n\t\tif ( e && e.stopImmediatePropagation ) {\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t}\r\n\r\n\t\tthis.stopPropagation();\r\n\t}\r\n};\r\n\r\n// Create mouseenter/leave events using mouseover/out and event-time checks\r\n// so that event delegation works in jQuery.\r\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\r\n//\r\n// Support: Safari 7 only\r\n// Safari sends mouseenter too often; see:\r\n// https://code.google.com/p/chromium/issues/detail?id=470258\r\n// for the description of the bug (it existed in older Chrome versions as well).\r\njQuery.each( {\r\n\tmouseenter: \"mouseover\",\r\n\tmouseleave: \"mouseout\",\r\n\tpointerenter: \"pointerover\",\r\n\tpointerleave: \"pointerout\"\r\n}, function( orig, fix ) {\r\n\tjQuery.event.special[ orig ] = {\r\n\t\tdelegateType: fix,\r\n\t\tbindType: fix,\r\n\r\n\t\thandle: function( event ) {\r\n\t\t\tvar ret,\r\n\t\t\t\ttarget = this,\r\n\t\t\t\trelated = event.relatedTarget,\r\n\t\t\t\thandleObj = event.handleObj;\r\n\r\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\r\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\r\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\r\n\t\t\t\tevent.type = handleObj.origType;\r\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\r\n\t\t\t\tevent.type = fix;\r\n\t\t\t}\r\n\t\t\treturn ret;\r\n\t\t}\r\n\t};\r\n} );\r\n\r\n// IE submit delegation\r\nif ( !support.submit ) {\r\n\r\n\tjQuery.event.special.submit = {\r\n\t\tsetup: function() {\r\n\r\n\t\t\t// Only need this for delegated form submit events\r\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\t// Lazy-add a submit handler when a descendant form may potentially be submitted\r\n\t\t\tjQuery.event.add( this, \"click._submit keypress._submit\", function( e ) {\r\n\r\n\t\t\t\t// Node name check avoids a VML-related crash in IE (#9807)\r\n\t\t\t\tvar elem = e.target,\r\n\t\t\t\t\tform = jQuery.nodeName( elem, \"input\" ) || jQuery.nodeName( elem, \"button\" ) ?\r\n\r\n\t\t\t\t\t\t// Support: IE <=8\r\n\t\t\t\t\t\t// We use jQuery.prop instead of elem.form\r\n\t\t\t\t\t\t// to allow fixing the IE8 delegated submit issue (gh-2332)\r\n\t\t\t\t\t\t// by 3rd party polyfills/workarounds.\r\n\t\t\t\t\t\tjQuery.prop( elem, \"form\" ) :\r\n\t\t\t\t\t\tundefined;\r\n\r\n\t\t\t\tif ( form && !jQuery._data( form, \"submit\" ) ) {\r\n\t\t\t\t\tjQuery.event.add( form, \"submit._submit\", function( event ) {\r\n\t\t\t\t\t\tevent._submitBubble = true;\r\n\t\t\t\t\t} );\r\n\t\t\t\t\tjQuery._data( form, \"submit\", true );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\r\n\t\t\t// return undefined since we don't need an event listener\r\n\t\t},\r\n\r\n\t\tpostDispatch: function( event ) {\r\n\r\n\t\t\t// If form was submitted by the user, bubble the event up the tree\r\n\t\t\tif ( event._submitBubble ) {\r\n\t\t\t\tdelete event._submitBubble;\r\n\t\t\t\tif ( this.parentNode && !event.isTrigger ) {\r\n\t\t\t\t\tjQuery.event.simulate( \"submit\", this.parentNode, event );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tteardown: function() {\r\n\r\n\t\t\t// Only need this for delegated form submit events\r\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\t// Remove delegated handlers; cleanData eventually reaps submit handlers attached above\r\n\t\t\tjQuery.event.remove( this, \"._submit\" );\r\n\t\t}\r\n\t};\r\n}\r\n\r\n// IE change delegation and checkbox/radio fix\r\nif ( !support.change ) {\r\n\r\n\tjQuery.event.special.change = {\r\n\r\n\t\tsetup: function() {\r\n\r\n\t\t\tif ( rformElems.test( this.nodeName ) ) {\r\n\r\n\t\t\t\t// IE doesn't fire change on a check/radio until blur; trigger it on click\r\n\t\t\t\t// after a propertychange. Eat the blur-change in special.change.handle.\r\n\t\t\t\t// This still fires onchange a second time for check/radio after blur.\r\n\t\t\t\tif ( this.type === \"checkbox\" || this.type === \"radio\" ) {\r\n\t\t\t\t\tjQuery.event.add( this, \"propertychange._change\", function( event ) {\r\n\t\t\t\t\t\tif ( event.originalEvent.propertyName === \"checked\" ) {\r\n\t\t\t\t\t\t\tthis._justChanged = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} );\r\n\t\t\t\t\tjQuery.event.add( this, \"click._change\", function( event ) {\r\n\t\t\t\t\t\tif ( this._justChanged && !event.isTrigger ) {\r\n\t\t\t\t\t\t\tthis._justChanged = false;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// Allow triggered, simulated change events (#11500)\r\n\t\t\t\t\t\tjQuery.event.simulate( \"change\", this, event );\r\n\t\t\t\t\t} );\r\n\t\t\t\t}\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\t// Delegated event; lazy-add a change handler on descendant inputs\r\n\t\t\tjQuery.event.add( this, \"beforeactivate._change\", function( e ) {\r\n\t\t\t\tvar elem = e.target;\r\n\r\n\t\t\t\tif ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, \"change\" ) ) {\r\n\t\t\t\t\tjQuery.event.add( elem, \"change._change\", function( event ) {\r\n\t\t\t\t\t\tif ( this.parentNode && !event.isSimulated && !event.isTrigger ) {\r\n\t\t\t\t\t\t\tjQuery.event.simulate( \"change\", this.parentNode, event );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} );\r\n\t\t\t\t\tjQuery._data( elem, \"change\", true );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t},\r\n\r\n\t\thandle: function( event ) {\r\n\t\t\tvar elem = event.target;\r\n\r\n\t\t\t// Swallow native change events from checkbox/radio, we already triggered them above\r\n\t\t\tif ( this !== elem || event.isSimulated || event.isTrigger ||\r\n\t\t\t\t( elem.type !== \"radio\" && elem.type !== \"checkbox\" ) ) {\r\n\r\n\t\t\t\treturn event.handleObj.handler.apply( this, arguments );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tteardown: function() {\r\n\t\t\tjQuery.event.remove( this, \"._change\" );\r\n\r\n\t\t\treturn !rformElems.test( this.nodeName );\r\n\t\t}\r\n\t};\r\n}\r\n\r\n// Support: Firefox\r\n// Firefox doesn't have focus(in | out) events\r\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\r\n//\r\n// Support: Chrome, Safari\r\n// focus(in | out) events fire after focus & blur events,\r\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\r\n// Related ticket - https://code.google.com/p/chromium/issues/detail?id=449857\r\nif ( !support.focusin ) {\r\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\r\n\r\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\r\n\t\tvar handler = function( event ) {\r\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\r\n\t\t};\r\n\r\n\t\tjQuery.event.special[ fix ] = {\r\n\t\t\tsetup: function() {\r\n\t\t\t\tvar doc = this.ownerDocument || this,\r\n\t\t\t\t\tattaches = jQuery._data( doc, fix );\r\n\r\n\t\t\t\tif ( !attaches ) {\r\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\r\n\t\t\t\t}\r\n\t\t\t\tjQuery._data( doc, fix, ( attaches || 0 ) + 1 );\r\n\t\t\t},\r\n\t\t\tteardown: function() {\r\n\t\t\t\tvar doc = this.ownerDocument || this,\r\n\t\t\t\t\tattaches = jQuery._data( doc, fix ) - 1;\r\n\r\n\t\t\t\tif ( !attaches ) {\r\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\r\n\t\t\t\t\tjQuery._removeData( doc, fix );\r\n\t\t\t\t} else {\r\n\t\t\t\t\tjQuery._data( doc, fix, attaches );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t} );\r\n}\r\n\r\njQuery.fn.extend( {\r\n\r\n\ton: function( types, selector, data, fn ) {\r\n\t\treturn on( this, types, selector, data, fn );\r\n\t},\r\n\tone: function( types, selector, data, fn ) {\r\n\t\treturn on( this, types, selector, data, fn, 1 );\r\n\t},\r\n\toff: function( types, selector, fn ) {\r\n\t\tvar handleObj, type;\r\n\t\tif ( types && types.preventDefault && types.handleObj ) {\r\n\r\n\t\t\t// ( event ) dispatched jQuery.Event\r\n\t\t\thandleObj = types.handleObj;\r\n\t\t\tjQuery( types.delegateTarget ).off(\r\n\t\t\t\thandleObj.namespace ?\r\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\r\n\t\t\t\t\thandleObj.origType,\r\n\t\t\t\thandleObj.selector,\r\n\t\t\t\thandleObj.handler\r\n\t\t\t);\r\n\t\t\treturn this;\r\n\t\t}\r\n\t\tif ( typeof types === \"object\" ) {\r\n\r\n\t\t\t// ( types-object [, selector] )\r\n\t\t\tfor ( type in types ) {\r\n\t\t\t\tthis.off( type, selector, types[ type ] );\r\n\t\t\t}\r\n\t\t\treturn this;\r\n\t\t}\r\n\t\tif ( selector === false || typeof selector === \"function\" ) {\r\n\r\n\t\t\t// ( types [, fn] )\r\n\t\t\tfn = selector;\r\n\t\t\tselector = undefined;\r\n\t\t}\r\n\t\tif ( fn === false ) {\r\n\t\t\tfn = returnFalse;\r\n\t\t}\r\n\t\treturn this.each( function() {\r\n\t\t\tjQuery.event.remove( this, types, fn, selector );\r\n\t\t} );\r\n\t},\r\n\r\n\ttrigger: function( type, data ) {\r\n\t\treturn this.each( function() {\r\n\t\t\tjQuery.event.trigger( type, data, this );\r\n\t\t} );\r\n\t},\r\n\ttriggerHandler: function( type, data ) {\r\n\t\tvar elem = this[ 0 ];\r\n\t\tif ( elem ) {\r\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\r\n\t\t}\r\n\t}\r\n} );\r\n\r\n\r\nvar rinlinejQuery = / jQuery\\d+=\"(?:null|\\d+)\"/g,\r\n\trnoshimcache = new RegExp( \"<(?:\" + nodeNames + \")[\\\\s/>]\", \"i\" ),\r\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:-]+)[^>]*)\\/>/gi,\r\n\r\n\t// Support: IE 10-11, Edge 10240+\r\n\t// In IE/Edge using regex groups here causes severe slowdowns.\r\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\r\n\trnoInnerhtml = /\\s*$/g,\r\n\tsafeFragment = createSafeFragment( document ),\r\n\tfragmentDiv = safeFragment.appendChild( document.createElement( \"div\" ) );\r\n\r\n// Support: IE<8\r\n// Manipulating tables requires a tbody\r\nfunction manipulationTarget( elem, content ) {\r\n\treturn jQuery.nodeName( elem, \"table\" ) &&\r\n\t\tjQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ?\r\n\r\n\t\telem.getElementsByTagName( \"tbody\" )[ 0 ] ||\r\n\t\t\telem.appendChild( elem.ownerDocument.createElement( \"tbody\" ) ) :\r\n\t\telem;\r\n}\r\n\r\n// Replace/restore the type attribute of script elements for safe DOM manipulation\r\nfunction disableScript( elem ) {\r\n\telem.type = ( jQuery.find.attr( elem, \"type\" ) !== null ) + \"/\" + elem.type;\r\n\treturn elem;\r\n}\r\nfunction restoreScript( elem ) {\r\n\tvar match = rscriptTypeMasked.exec( elem.type );\r\n\tif ( match ) {\r\n\t\telem.type = match[ 1 ];\r\n\t} else {\r\n\t\telem.removeAttribute( \"type\" );\r\n\t}\r\n\treturn elem;\r\n}\r\n\r\nfunction cloneCopyEvent( src, dest ) {\r\n\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar type, i, l,\r\n\t\toldData = jQuery._data( src ),\r\n\t\tcurData = jQuery._data( dest, oldData ),\r\n\t\tevents = oldData.events;\r\n\r\n\tif ( events ) {\r\n\t\tdelete curData.handle;\r\n\t\tcurData.events = {};\r\n\r\n\t\tfor ( type in events ) {\r\n\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\r\n\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// make the cloned public data object a copy from the original\r\n\tif ( curData.data ) {\r\n\t\tcurData.data = jQuery.extend( {}, curData.data );\r\n\t}\r\n}\r\n\r\nfunction fixCloneNodeIssues( src, dest ) {\r\n\tvar nodeName, e, data;\r\n\r\n\t// We do not need to do anything for non-Elements\r\n\tif ( dest.nodeType !== 1 ) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tnodeName = dest.nodeName.toLowerCase();\r\n\r\n\t// IE6-8 copies events bound via attachEvent when using cloneNode.\r\n\tif ( !support.noCloneEvent && dest[ jQuery.expando ] ) {\r\n\t\tdata = jQuery._data( dest );\r\n\r\n\t\tfor ( e in data.events ) {\r\n\t\t\tjQuery.removeEvent( dest, e, data.handle );\r\n\t\t}\r\n\r\n\t\t// Event data gets referenced instead of copied if the expando gets copied too\r\n\t\tdest.removeAttribute( jQuery.expando );\r\n\t}\r\n\r\n\t// IE blanks contents when cloning scripts, and tries to evaluate newly-set text\r\n\tif ( nodeName === \"script\" && dest.text !== src.text ) {\r\n\t\tdisableScript( dest ).text = src.text;\r\n\t\trestoreScript( dest );\r\n\r\n\t// IE6-10 improperly clones children of object elements using classid.\r\n\t// IE10 throws NoModificationAllowedError if parent is null, #12132.\r\n\t} else if ( nodeName === \"object\" ) {\r\n\t\tif ( dest.parentNode ) {\r\n\t\t\tdest.outerHTML = src.outerHTML;\r\n\t\t}\r\n\r\n\t\t// This path appears unavoidable for IE9. When cloning an object\r\n\t\t// element in IE9, the outerHTML strategy above is not sufficient.\r\n\t\t// If the src has innerHTML and the destination does not,\r\n\t\t// copy the src.innerHTML into the dest.innerHTML. #10324\r\n\t\tif ( support.html5Clone && ( src.innerHTML && !jQuery.trim( dest.innerHTML ) ) ) {\r\n\t\t\tdest.innerHTML = src.innerHTML;\r\n\t\t}\r\n\r\n\t} else if ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\r\n\r\n\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\r\n\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\r\n\t\t// a checked appearance if the defaultChecked value isn't also set\r\n\r\n\t\tdest.defaultChecked = dest.checked = src.checked;\r\n\r\n\t\t// IE6-7 get confused and end up setting the value of a cloned\r\n\t\t// checkbox/radio button to an empty string instead of \"on\"\r\n\t\tif ( dest.value !== src.value ) {\r\n\t\t\tdest.value = src.value;\r\n\t\t}\r\n\r\n\t// IE6-8 fails to return the selected option to the default selected\r\n\t// state when cloning options\r\n\t} else if ( nodeName === \"option\" ) {\r\n\t\tdest.defaultSelected = dest.selected = src.defaultSelected;\r\n\r\n\t// IE6-8 fails to set the defaultValue to the correct value when\r\n\t// cloning other types of input fields\r\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\r\n\t\tdest.defaultValue = src.defaultValue;\r\n\t}\r\n}\r\n\r\nfunction domManip( collection, args, callback, ignored ) {\r\n\r\n\t// Flatten any nested arrays\r\n\targs = concat.apply( [], args );\r\n\r\n\tvar first, node, hasScripts,\r\n\t\tscripts, doc, fragment,\r\n\t\ti = 0,\r\n\t\tl = collection.length,\r\n\t\tiNoClone = l - 1,\r\n\t\tvalue = args[ 0 ],\r\n\t\tisFunction = jQuery.isFunction( value );\r\n\r\n\t// We can't cloneNode fragments that contain checked, in WebKit\r\n\tif ( isFunction ||\r\n\t\t\t( l > 1 && typeof value === \"string\" &&\r\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\r\n\t\treturn collection.each( function( index ) {\r\n\t\t\tvar self = collection.eq( index );\r\n\t\t\tif ( isFunction ) {\r\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\r\n\t\t\t}\r\n\t\t\tdomManip( self, args, callback, ignored );\r\n\t\t} );\r\n\t}\r\n\r\n\tif ( l ) {\r\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\r\n\t\tfirst = fragment.firstChild;\r\n\r\n\t\tif ( fragment.childNodes.length === 1 ) {\r\n\t\t\tfragment = first;\r\n\t\t}\r\n\r\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\r\n\t\tif ( first || ignored ) {\r\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\r\n\t\t\thasScripts = scripts.length;\r\n\r\n\t\t\t// Use the original fragment for the last item\r\n\t\t\t// instead of the first because it can end up\r\n\t\t\t// being emptied incorrectly in certain situations (#8070).\r\n\t\t\tfor ( ; i < l; i++ ) {\r\n\t\t\t\tnode = fragment;\r\n\r\n\t\t\t\tif ( i !== iNoClone ) {\r\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\r\n\r\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\r\n\t\t\t\t\tif ( hasScripts ) {\r\n\r\n\t\t\t\t\t\t// Support: Android<4.1, PhantomJS<2\r\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\r\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcallback.call( collection[ i ], node, i );\r\n\t\t\t}\r\n\r\n\t\t\tif ( hasScripts ) {\r\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\r\n\r\n\t\t\t\t// Reenable scripts\r\n\t\t\t\tjQuery.map( scripts, restoreScript );\r\n\r\n\t\t\t\t// Evaluate executable scripts on first document insertion\r\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\r\n\t\t\t\t\tnode = scripts[ i ];\r\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\r\n\t\t\t\t\t\t!jQuery._data( node, \"globalEval\" ) &&\r\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\r\n\r\n\t\t\t\t\t\tif ( node.src ) {\r\n\r\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\r\n\t\t\t\t\t\t\tif ( jQuery._evalUrl ) {\r\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tjQuery.globalEval(\r\n\t\t\t\t\t\t\t\t( node.text || node.textContent || node.innerHTML || \"\" )\r\n\t\t\t\t\t\t\t\t\t.replace( rcleanScript, \"\" )\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Fix #11809: Avoid leaking memory\r\n\t\t\tfragment = first = null;\r\n\t\t}\r\n\t}\r\n\r\n\treturn collection;\r\n}\r\n\r\nfunction remove( elem, selector, keepData ) {\r\n\tvar node,\r\n\t\telems = selector ? jQuery.filter( selector, elem ) : elem,\r\n\t\ti = 0;\r\n\r\n\tfor ( ; ( node = elems[ i ] ) != null; i++ ) {\r\n\r\n\t\tif ( !keepData && node.nodeType === 1 ) {\r\n\t\t\tjQuery.cleanData( getAll( node ) );\r\n\t\t}\r\n\r\n\t\tif ( node.parentNode ) {\r\n\t\t\tif ( keepData && jQuery.contains( node.ownerDocument, node ) ) {\r\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\r\n\t\t\t}\r\n\t\t\tnode.parentNode.removeChild( node );\r\n\t\t}\r\n\t}\r\n\r\n\treturn elem;\r\n}\r\n\r\njQuery.extend( {\r\n\thtmlPrefilter: function( html ) {\r\n\t\treturn html.replace( rxhtmlTag, \"<$1>\" );\r\n\t},\r\n\r\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\r\n\t\tvar destElements, node, clone, i, srcElements,\r\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\r\n\r\n\t\tif ( support.html5Clone || jQuery.isXMLDoc( elem ) ||\r\n\t\t\t!rnoshimcache.test( \"<\" + elem.nodeName + \">\" ) ) {\r\n\r\n\t\t\tclone = elem.cloneNode( true );\r\n\r\n\t\t// IE<=8 does not properly clone detached, unknown element nodes\r\n\t\t} else {\r\n\t\t\tfragmentDiv.innerHTML = elem.outerHTML;\r\n\t\t\tfragmentDiv.removeChild( clone = fragmentDiv.firstChild );\r\n\t\t}\r\n\r\n\t\tif ( ( !support.noCloneEvent || !support.noCloneChecked ) &&\r\n\t\t\t\t( elem.nodeType === 1 || elem.nodeType === 11 ) && !jQuery.isXMLDoc( elem ) ) {\r\n\r\n\t\t\t// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2\r\n\t\t\tdestElements = getAll( clone );\r\n\t\t\tsrcElements = getAll( elem );\r\n\r\n\t\t\t// Fix all IE cloning issues\r\n\t\t\tfor ( i = 0; ( node = srcElements[ i ] ) != null; ++i ) {\r\n\r\n\t\t\t\t// Ensure that the destination node is not null; Fixes #9587\r\n\t\t\t\tif ( destElements[ i ] ) {\r\n\t\t\t\t\tfixCloneNodeIssues( node, destElements[ i ] );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Copy the events from the original to the clone\r\n\t\tif ( dataAndEvents ) {\r\n\t\t\tif ( deepDataAndEvents ) {\r\n\t\t\t\tsrcElements = srcElements || getAll( elem );\r\n\t\t\t\tdestElements = destElements || getAll( clone );\r\n\r\n\t\t\t\tfor ( i = 0; ( node = srcElements[ i ] ) != null; i++ ) {\r\n\t\t\t\t\tcloneCopyEvent( node, destElements[ i ] );\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tcloneCopyEvent( elem, clone );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Preserve script evaluation history\r\n\t\tdestElements = getAll( clone, \"script\" );\r\n\t\tif ( destElements.length > 0 ) {\r\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\r\n\t\t}\r\n\r\n\t\tdestElements = srcElements = node = null;\r\n\r\n\t\t// Return the cloned set\r\n\t\treturn clone;\r\n\t},\r\n\r\n\tcleanData: function( elems, /* internal */ forceAcceptData ) {\r\n\t\tvar elem, type, id, data,\r\n\t\t\ti = 0,\r\n\t\t\tinternalKey = jQuery.expando,\r\n\t\t\tcache = jQuery.cache,\r\n\t\t\tattributes = support.attributes,\r\n\t\t\tspecial = jQuery.event.special;\r\n\r\n\t\tfor ( ; ( elem = elems[ i ] ) != null; i++ ) {\r\n\t\t\tif ( forceAcceptData || acceptData( elem ) ) {\r\n\r\n\t\t\t\tid = elem[ internalKey ];\r\n\t\t\t\tdata = id && cache[ id ];\r\n\r\n\t\t\t\tif ( data ) {\r\n\t\t\t\t\tif ( data.events ) {\r\n\t\t\t\t\t\tfor ( type in data.events ) {\r\n\t\t\t\t\t\t\tif ( special[ type ] ) {\r\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\r\n\r\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Remove cache only if it was not already removed by jQuery.event.remove\r\n\t\t\t\t\tif ( cache[ id ] ) {\r\n\r\n\t\t\t\t\t\tdelete cache[ id ];\r\n\r\n\t\t\t\t\t\t// Support: IE<9\r\n\t\t\t\t\t\t// IE does not allow us to delete expando properties from nodes\r\n\t\t\t\t\t\t// IE creates expando attributes along with the property\r\n\t\t\t\t\t\t// IE does not have a removeAttribute function on Document nodes\r\n\t\t\t\t\t\tif ( !attributes && typeof elem.removeAttribute !== \"undefined\" ) {\r\n\t\t\t\t\t\t\telem.removeAttribute( internalKey );\r\n\r\n\t\t\t\t\t\t// Webkit & Blink performance suffers when deleting properties\r\n\t\t\t\t\t\t// from DOM nodes, so set to undefined instead\r\n\t\t\t\t\t\t// https://code.google.com/p/chromium/issues/detail?id=378607\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\telem[ internalKey ] = undefined;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tdeletedIds.push( id );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n} );\r\n\r\njQuery.fn.extend( {\r\n\r\n\t// Keep domManip exposed until 3.0 (gh-2225)\r\n\tdomManip: domManip,\r\n\r\n\tdetach: function( selector ) {\r\n\t\treturn remove( this, selector, true );\r\n\t},\r\n\r\n\tremove: function( selector ) {\r\n\t\treturn remove( this, selector );\r\n\t},\r\n\r\n\ttext: function( value ) {\r\n\t\treturn access( this, function( value ) {\r\n\t\t\treturn value === undefined ?\r\n\t\t\t\tjQuery.text( this ) :\r\n\t\t\t\tthis.empty().append(\r\n\t\t\t\t\t( this[ 0 ] && this[ 0 ].ownerDocument || document ).createTextNode( value )\r\n\t\t\t\t);\r\n\t\t}, null, value, arguments.length );\r\n\t},\r\n\r\n\tappend: function() {\r\n\t\treturn domManip( this, arguments, function( elem ) {\r\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\r\n\t\t\t\tvar target = manipulationTarget( this, elem );\r\n\t\t\t\ttarget.appendChild( elem );\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\r\n\tprepend: function() {\r\n\t\treturn domManip( this, arguments, function( elem ) {\r\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\r\n\t\t\t\tvar target = manipulationTarget( this, elem );\r\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\r\n\tbefore: function() {\r\n\t\treturn domManip( this, arguments, function( elem ) {\r\n\t\t\tif ( this.parentNode ) {\r\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\r\n\tafter: function() {\r\n\t\treturn domManip( this, arguments, function( elem ) {\r\n\t\t\tif ( this.parentNode ) {\r\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\r\n\tempty: function() {\r\n\t\tvar elem,\r\n\t\t\ti = 0;\r\n\r\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\r\n\r\n\t\t\t// Remove element nodes and prevent memory leaks\r\n\t\t\tif ( elem.nodeType === 1 ) {\r\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\r\n\t\t\t}\r\n\r\n\t\t\t// Remove any remaining nodes\r\n\t\t\twhile ( elem.firstChild ) {\r\n\t\t\t\telem.removeChild( elem.firstChild );\r\n\t\t\t}\r\n\r\n\t\t\t// If this is a select, ensure that it displays empty (#12336)\r\n\t\t\t// Support: IE<9\r\n\t\t\tif ( elem.options && jQuery.nodeName( elem, \"select\" ) ) {\r\n\t\t\t\telem.options.length = 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\r\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\r\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\r\n\r\n\t\treturn this.map( function() {\r\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\r\n\t\t} );\r\n\t},\r\n\r\n\thtml: function( value ) {\r\n\t\treturn access( this, function( value ) {\r\n\t\t\tvar elem = this[ 0 ] || {},\r\n\t\t\t\ti = 0,\r\n\t\t\t\tl = this.length;\r\n\r\n\t\t\tif ( value === undefined ) {\r\n\t\t\t\treturn elem.nodeType === 1 ?\r\n\t\t\t\t\telem.innerHTML.replace( rinlinejQuery, \"\" ) :\r\n\t\t\t\t\tundefined;\r\n\t\t\t}\r\n\r\n\t\t\t// See if we can take a shortcut and just use innerHTML\r\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\r\n\t\t\t\t( support.htmlSerialize || !rnoshimcache.test( value ) ) &&\r\n\t\t\t\t( support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&\r\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\r\n\r\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\r\n\r\n\t\t\t\ttry {\r\n\t\t\t\t\tfor ( ; i < l; i++ ) {\r\n\r\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\r\n\t\t\t\t\t\telem = this[ i ] || {};\r\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\r\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\r\n\t\t\t\t\t\t\telem.innerHTML = value;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\telem = 0;\r\n\r\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\r\n\t\t\t\t} catch ( e ) {}\r\n\t\t\t}\r\n\r\n\t\t\tif ( elem ) {\r\n\t\t\t\tthis.empty().append( value );\r\n\t\t\t}\r\n\t\t}, null, value, arguments.length );\r\n\t},\r\n\r\n\treplaceWith: function() {\r\n\t\tvar ignored = [];\r\n\r\n\t\t// Make the changes, replacing each non-ignored context element with the new content\r\n\t\treturn domManip( this, arguments, function( elem ) {\r\n\t\t\tvar parent = this.parentNode;\r\n\r\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\r\n\t\t\t\tjQuery.cleanData( getAll( this ) );\r\n\t\t\t\tif ( parent ) {\r\n\t\t\t\t\tparent.replaceChild( elem, this );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t// Force callback invocation\r\n\t\t}, ignored );\r\n\t}\r\n} );\r\n\r\njQuery.each( {\r\n\tappendTo: \"append\",\r\n\tprependTo: \"prepend\",\r\n\tinsertBefore: \"before\",\r\n\tinsertAfter: \"after\",\r\n\treplaceAll: \"replaceWith\"\r\n}, function( name, original ) {\r\n\tjQuery.fn[ name ] = function( selector ) {\r\n\t\tvar elems,\r\n\t\t\ti = 0,\r\n\t\t\tret = [],\r\n\t\t\tinsert = jQuery( selector ),\r\n\t\t\tlast = insert.length - 1;\r\n\r\n\t\tfor ( ; i <= last; i++ ) {\r\n\t\t\telems = i === last ? this : this.clone( true );\r\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\r\n\r\n\t\t\t// Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get()\r\n\t\t\tpush.apply( ret, elems.get() );\r\n\t\t}\r\n\r\n\t\treturn this.pushStack( ret );\r\n\t};\r\n} );\r\n\r\n\r\nvar iframe,\r\n\telemdisplay = {\r\n\r\n\t\t// Support: Firefox\r\n\t\t// We have to pre-define these values for FF (#10227)\r\n\t\tHTML: \"block\",\r\n\t\tBODY: \"block\"\r\n\t};\r\n\r\n/**\r\n * Retrieve the actual display of a element\r\n * @param {String} name nodeName of the element\r\n * @param {Object} doc Document object\r\n */\r\n\r\n// Called only from within defaultDisplay\r\nfunction actualDisplay( name, doc ) {\r\n\tvar elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),\r\n\r\n\t\tdisplay = jQuery.css( elem[ 0 ], \"display\" );\r\n\r\n\t// We don't have any data stored on the element,\r\n\t// so use \"detach\" method as fast way to get rid of the element\r\n\telem.detach();\r\n\r\n\treturn display;\r\n}\r\n\r\n/**\r\n * Try to determine the default display value of an element\r\n * @param {String} nodeName\r\n */\r\nfunction defaultDisplay( nodeName ) {\r\n\tvar doc = document,\r\n\t\tdisplay = elemdisplay[ nodeName ];\r\n\r\n\tif ( !display ) {\r\n\t\tdisplay = actualDisplay( nodeName, doc );\r\n\r\n\t\t// If the simple way fails, read from inside an iframe\r\n\t\tif ( display === \"none\" || !display ) {\r\n\r\n\t\t\t// Use the already-created iframe if possible\r\n\t\t\tiframe = ( iframe || jQuery( \"';\n break;\n case 3:\n delete config.title;\n delete config.closeBtn;\n config.icon === -1 && (config.icon === 0);\n layer.closeAll('loading');\n break;\n case 4:\n conType || (config.content = [config.content, 'body']);\n config.follow = config.content[1];\n config.content = config.content[0] + '';\n delete config.title;\n config.tips = typeof config.tips === 'object' ? config.tips : [config.tips, true];\n config.tipsMore || layer.closeAll('tips');\n break;\n }\n \n // 建立容器\n that.vessel(conType, function(html, titleHTML, moveElem){\n body.append(html[0]);\n conType ? function(){\n (config.type == 2 || config.type == 4) ? function(){\n $('body').append(html[1]);\n }() : function(){\n if(!content.parents('.'+doms[0])[0]){\n content.data('display', content.css('display')).show().addClass('layui-layer-wrap').wrap(html[1]);\n $('#'+ doms[0] + times).find('.'+doms[5]).before(titleHTML);\n }\n }();\n }() : body.append(html[1]);\n $('#'+ doms.MOVE)[0] || body.append(ready.moveElem = moveElem);\n \n that.layero = $('#'+ doms[0] + times);\n that.shadeo = $('#'+ doms.SHADE + times);\n \n config.scrollbar || ready.setScrollbar(times);\n }).auto(times);\n \n // 遮罩\n that.shadeo.css({\n 'background-color': config.shade[1] || '#000'\n ,'opacity': config.shade[0] || config.shade\n ,'transition': config.shade[2] || ''\n });\n that.shadeo.data(SHADE_KEY, config.shade[0] || config.shade);\n\n config.type == 2 && layer.ie == 6 && that.layero.find('iframe').attr('src', content[0]);\n\n // 坐标自适应浏览器窗口尺寸\n config.type == 4 ? that.tips() : function(){\n that.offset()\n // 首次弹出时,若 css 尚未加载,则等待 css 加载完毕后,重新设定尺寸\n parseInt(ready.getStyle(document.getElementById(doms.MOVE), 'z-index')) || function(){\n that.layero.css('visibility', 'hidden');\n layer.ready(function(){\n that.offset();\n that.layero.css('visibility', 'visible');\n });\n }();\n }();\n \n // 若是固定定位,则跟随 resize 事件来自适应坐标\n if(config.fixed){\n if(!ready.events.resize[that.index]){\n ready.events.resize[that.index] = function(){\n that.resize();\n };\n // 此处 resize 事件不会一直叠加,当关闭弹层时会移除该事件\n win.on('resize', ready.events.resize[that.index]);\n }\n }\n \n config.time <= 0 || setTimeout(function(){\n layer.close(that.index);\n }, config.time);\n that.move().callback();\n setAnim(that.layero);\n \n // 记录配置信息\n that.layero.data('config', config);\n};\n\n// 当前实例的 resize 事件\nClass.pt.resize = function(){\n var that = this;\n var config = that.config;\n \n that.offset();\n (/^\\d+%$/.test(config.area[0]) || /^\\d+%$/.test(config.area[1])) && that.auto(that.index);\n config.type == 4 && that.tips();\n};\n\n// 自适应\nClass.pt.auto = function(index){\n var that = this, config = that.config, layero = $('#'+ doms[0] + index);\n \n if(config.area[0] === '' && config.maxWidth > 0){\n // 适配 ie7\n if(layer.ie && layer.ie < 8 && config.btn){\n layero.width(layero.innerWidth());\n }\n layero.outerWidth() > config.maxWidth && layero.width(config.maxWidth);\n }\n \n var area = [layero.innerWidth(), layero.innerHeight()];\n var titHeight = layero.find(doms[1]).outerHeight() || 0;\n var btnHeight = layero.find('.'+doms[6]).outerHeight() || 0;\n var setHeight = function(elem){\n elem = layero.find(elem);\n elem.height(area[1] - titHeight - btnHeight - 2*(parseFloat(elem.css('padding-top'))|0));\n };\n\n switch(config.type){\n case 2: \n setHeight('iframe');\n break;\n default:\n if(config.area[1] === ''){\n if(config.maxHeight > 0 && layero.outerHeight() > config.maxHeight){\n area[1] = config.maxHeight;\n setHeight('.'+doms[5]);\n } else if(config.fixed && area[1] >= win.height()){\n area[1] = win.height();\n setHeight('.'+doms[5]);\n }\n } else {\n setHeight('.'+doms[5]);\n }\n break;\n }\n \n return that;\n};\n\n// 计算坐标\nClass.pt.offset = function(){\n var that = this, config = that.config, layero = that.layero;\n var area = [layero.outerWidth(), layero.outerHeight()];\n var type = typeof config.offset === 'object';\n that.offsetTop = (win.height() - area[1])/2;\n that.offsetLeft = (win.width() - area[0])/2;\n \n if(type){\n that.offsetTop = config.offset[0];\n that.offsetLeft = config.offset[1]||that.offsetLeft;\n } else if(config.offset !== 'auto'){\n \n if(config.offset === 't'){ // 上\n that.offsetTop = 0;\n } else if(config.offset === 'r'){ // 右\n that.offsetLeft = win.width() - area[0];\n } else if(config.offset === 'b'){ // 下\n that.offsetTop = win.height() - area[1];\n } else if(config.offset === 'l'){ // 左\n that.offsetLeft = 0;\n } else if(config.offset === 'lt'){ // 左上\n that.offsetTop = 0;\n that.offsetLeft = 0;\n } else if(config.offset === 'lb'){ // 左下\n that.offsetTop = win.height() - area[1];\n that.offsetLeft = 0;\n } else if(config.offset === 'rt'){ // 右上\n that.offsetTop = 0;\n that.offsetLeft = win.width() - area[0];\n } else if(config.offset === 'rb'){ // 右下\n that.offsetTop = win.height() - area[1];\n that.offsetLeft = win.width() - area[0];\n } else {\n that.offsetTop = config.offset;\n }\n \n }\n \n if(!config.fixed){\n that.offsetTop = /%$/.test(that.offsetTop) ? \n win.height()*parseFloat(that.offsetTop)/100\n : parseFloat(that.offsetTop);\n that.offsetLeft = /%$/.test(that.offsetLeft) ? \n win.width()*parseFloat(that.offsetLeft)/100\n : parseFloat(that.offsetLeft);\n that.offsetTop += win.scrollTop();\n that.offsetLeft += win.scrollLeft();\n }\n \n // 最小化窗口时的自适应\n if(layero.data('maxminStatus') === 'min'){\n that.offsetTop = win.height() - (layero.find(doms[1]).outerHeight() || 0);\n that.offsetLeft = layero.css('left');\n }\n\n // 设置坐标\n layero.css({\n top: that.offsetTop, \n left: that.offsetLeft\n });\n};\n\n// Tips\nClass.pt.tips = function(){\n var that = this, config = that.config, layero = that.layero;\n var layArea = [layero.outerWidth(), layero.outerHeight()], follow = $(config.follow);\n if(!follow[0]) follow = $('body');\n var goal = {\n width: follow.outerWidth(),\n height: follow.outerHeight(),\n top: follow.offset().top,\n left: follow.offset().left\n }, tipsG = layero.find('.layui-layer-TipsG');\n \n var guide = config.tips[0];\n config.tips[1] || tipsG.remove();\n \n goal.autoLeft = function(){\n if(goal.left + layArea[0] - win.width() > 0){\n goal.tipLeft = goal.left + goal.width - layArea[0];\n tipsG.css({right: 12, left: 'auto'});\n } else {\n goal.tipLeft = goal.left;\n }\n };\n \n // 辨别 tips 的方位\n // 21 为箭头大小 8*2 + 箭头相对父元素的top偏移 5\n goal.where = [function(){ // 上 \n goal.autoLeft();\n goal.tipTop = goal.top - layArea[1] - 10;\n tipsG.removeClass('layui-layer-TipsB').addClass('layui-layer-TipsT').css('border-right-color', config.tips[1]);\n }, function(){ // 右\n goal.tipLeft = goal.left + goal.width + 10;\n goal.tipTop = goal.top - (goal.height * 0.75 < 21 ? 21 - goal.height * 0.5 : 0);\n goal.tipTop = Math.max(goal.tipTop, 0);\n tipsG.removeClass('layui-layer-TipsL').addClass('layui-layer-TipsR').css('border-bottom-color', config.tips[1]); \n }, function(){ // 下\n goal.autoLeft();\n goal.tipTop = goal.top + goal.height + 10;\n tipsG.removeClass('layui-layer-TipsT').addClass('layui-layer-TipsB').css('border-right-color', config.tips[1]);\n }, function(){ // 左\n goal.tipLeft = goal.left - layArea[0] - 10;\n goal.tipTop = goal.top - (goal.height * 0.75 < 21 ? 21 - goal.height * 0.5 : 0);\n goal.tipTop = Math.max(goal.tipTop, 0);\n tipsG.removeClass('layui-layer-TipsR').addClass('layui-layer-TipsL').css('border-bottom-color', config.tips[1]);\n }];\n goal.where[guide-1]();\n \n /* 8*2为小三角形占据的空间 */\n if(guide === 1){\n goal.top - (win.scrollTop() + layArea[1] + 8*2) < 0 && goal.where[2]();\n } else if(guide === 2){\n win.width() - (goal.left + goal.width + layArea[0] + 8*2) > 0 || goal.where[3]()\n } else if(guide === 3){\n (goal.top - win.scrollTop() + goal.height + layArea[1] + 8*2) - win.height() > 0 && goal.where[0]();\n } else if(guide === 4){\n layArea[0] + 8*2 - goal.left > 0 && goal.where[1]()\n }\n\n layero.find('.'+doms[5]).css({\n 'background-color': config.tips[1], \n 'padding-right': (config.closeBtn ? '30px' : '')\n });\n layero.css({\n left: goal.tipLeft - (config.fixed ? win.scrollLeft() : 0), \n top: goal.tipTop - (config.fixed ? win.scrollTop() : 0)\n });\n}\n\n// 拖拽层\nClass.pt.move = function(){\n var that = this;\n var config = that.config;\n var _DOC = $(document);\n var layero = that.layero;\n var DATA_NAME = ['LAY_MOVE_DICT', 'LAY_RESIZE_DICT'];\n var moveElem = layero.find(config.move);\n var resizeElem = layero.find('.layui-layer-resize');\n \n // 给指定元素添加拖动光标\n if(config.move) moveElem.css('cursor', 'move');\n \n // 按下拖动元素\n moveElem.on('mousedown', function(e){\n if (e.button) {return;} // 不是左键不处理\n var othis = $(this);\n var dict = {};\n \n if(config.move){\n dict.layero = layero;\n dict.config = config;\n dict.offset = [\n e.clientX - parseFloat(layero.css('left')),\n e.clientY - parseFloat(layero.css('top'))\n ];\n \n othis.data(DATA_NAME[0], dict);\n ready.eventMoveElem = othis;\n ready.moveElem.css('cursor', 'move').show();\n }\n \n e.preventDefault();\n });\n \n // 按下右下角拉伸\n resizeElem.on('mousedown', function(e){\n var othis = $(this);\n var dict = {};\n \n if(config.resize){\n dict.layero = layero;\n dict.config = config;\n dict.offset = [e.clientX, e.clientY];\n dict.index = that.index;\n dict.area = [\n layero.outerWidth()\n ,layero.outerHeight()\n ];\n \n othis.data(DATA_NAME[1], dict);\n ready.eventResizeElem = othis;\n ready.moveElem.css('cursor', 'se-resize').show();\n }\n \n e.preventDefault();\n });\n \n // 拖动元素,避免多次调用实例造成事件叠加\n if(ready.docEvent) return that;\n _DOC.on('mousemove', function(e){\n // 拖拽移动\n if(ready.eventMoveElem){\n var dict = ready.eventMoveElem.data(DATA_NAME[0]) || {}\n ,layero = dict.layero\n ,config = dict.config;\n \n var X = e.clientX - dict.offset[0];\n var Y = e.clientY - dict.offset[1];\n var fixed = layero.css('position') === 'fixed';\n \n e.preventDefault();\n \n dict.stX = fixed ? 0 : win.scrollLeft();\n dict.stY = fixed ? 0 : win.scrollTop();\n\n // 控制元素不被拖出窗口外\n if(!config.moveOut){\n var setRig = win.width() - layero.outerWidth() + dict.stX;\n var setBot = win.height() - layero.outerHeight() + dict.stY; \n X < dict.stX && (X = dict.stX);\n X > setRig && (X = setRig); \n Y < dict.stY && (Y = dict.stY);\n Y > setBot && (Y = setBot);\n }\n \n // 拖动时跟随鼠标位置\n layero.css({\n left: X,\n top: Y\n });\n }\n \n // Resize\n if(ready.eventResizeElem){\n var dict = ready.eventResizeElem.data(DATA_NAME[1]) || {};\n var config = dict.config;\n \n var X = e.clientX - dict.offset[0];\n var Y = e.clientY - dict.offset[1];\n \n e.preventDefault();\n \n // 拉伸宽高\n layer.style(dict.index, {\n width: dict.area[0] + X\n ,height: dict.area[1] + Y\n });\n \n config.resizing && config.resizing(dict.layero);\n }\n }).on('mouseup', function(e){\n if(ready.eventMoveElem){\n var dict = ready.eventMoveElem.data(DATA_NAME[0]) || {};\n var config = dict.config;\n \n ready.eventMoveElem.removeData(DATA_NAME[0]);\n delete ready.eventMoveElem;\n ready.moveElem.hide();\n config.moveEnd && config.moveEnd(dict.layero);\n }\n if(ready.eventResizeElem){\n ready.eventResizeElem.removeData(DATA_NAME[1]);\n delete ready.eventResizeElem;\n ready.moveElem.hide();\n }\n });\n \n ready.docEvent = true; // 已给 document 执行全局事件\n return that;\n};\n\nClass.pt.callback = function(){\n var that = this, layero = that.layero, config = that.config;\n that.openLayer();\n if(config.success){\n if(config.type == 2){\n layero.find('iframe').on('load', function(){\n config.success(layero, that.index, that);\n });\n } else {\n config.success(layero, that.index, that);\n }\n }\n layer.ie == 6 && that.IE6(layero);\n \n // 按钮\n layero.find('.'+ doms[6]).children('a').on('click', function(){\n var index = $(this).index();\n if(index === 0){\n if(config.yes){\n config.yes(that.index, layero, that);\n } else if(config['btn1']){\n config['btn1'](that.index, layero, that);\n } else {\n layer.close(that.index);\n }\n } else {\n var close = config['btn'+(index+1)] && config['btn'+(index+1)](that.index, layero, that);\n close === false || layer.close(that.index);\n }\n });\n \n // 取消\n function cancel(){\n var close = config.cancel && config.cancel(that.index, layero, that);\n close === false || layer.close(that.index);\n }\n \n // 右上角关闭回调\n layero.find('.'+ doms[7]).on('click', cancel);\n \n // 点遮罩关闭\n if(config.shadeClose){\n that.shadeo.on('click', function(){\n layer.close(that.index);\n });\n } \n \n // 最小化\n layero.find('.layui-layer-min').on('click', function(){\n var min = config.min && config.min(layero, that.index, that);\n min === false || layer.min(that.index, config);\n });\n \n // 全屏/还原\n layero.find('.layui-layer-max').on('click', function(){\n if($(this).hasClass('layui-layer-maxmin')){\n layer.restore(that.index);\n config.restore && config.restore(layero, that.index, that);\n } else {\n layer.full(that.index, config);\n setTimeout(function(){\n config.full && config.full(layero, that.index, that);\n }, 100);\n }\n });\n\n config.end && (ready.end[that.index] = config.end);\n config.beforeEnd && (ready.beforeEnd[that.index] = config.beforeEnd);\n};\n\n// for ie6 恢复 select\nready.reselect = function(){\n $.each($('select'), function(index , value){\n var sthis = $(this);\n if(!sthis.parents('.'+doms[0])[0]){\n (sthis.attr('layer') == 1 && $('.'+doms[0]).length < 1) && sthis.removeAttr('layer').show(); \n }\n sthis = null;\n });\n}; \n\nClass.pt.IE6 = function(layero){\n // 隐藏select\n $('select').each(function(index , value){\n var sthis = $(this);\n if(!sthis.parents('.'+doms[0])[0]){\n sthis.css('display') === 'none' || sthis.attr({'layer' : '1'}).hide();\n }\n sthis = null;\n });\n};\n\n// 需依赖原型的对外方法\nClass.pt.openLayer = function(){\n var that = this;\n \n // 置顶当前窗口\n layer.zIndex = that.config.zIndex;\n layer.setTop = function(layero){\n var setZindex = function(){\n layer.zIndex++;\n layero.css('z-index', layer.zIndex + 1);\n };\n layer.zIndex = parseInt(layero[0].style.zIndex);\n layero.on('mousedown', setZindex);\n return layer.zIndex;\n };\n};\n\n// 记录宽高坐标,用于还原\nready.record = function(layero){\n if(!layero[0]) return window.console && console.error('index error');\n var type = layero.attr('type');\n var contentElem = layero.find('.layui-layer-content');\n var contentRecordHeightElem = type === ready.type[2] ? contentElem.children('iframe') : contentElem;\n var area = [\n layero[0].style.width || ready.getStyle(layero[0], 'width'),\n layero[0].style.height || ready.getStyle(layero[0], 'height'),\n layero.position().top, \n layero.position().left + parseFloat(layero.css('margin-left'))\n ];\n layero.find('.layui-layer-max').addClass('layui-layer-maxmin');\n layero.attr({area: area});\n contentElem.data(RECORD_HEIGHT_KEY, ready.getStyle(contentRecordHeightElem[0], 'height'));\n};\n\n// 设置页面滚动条\nready.setScrollbar = function(index){\n doms.html.css('overflow', 'hidden').attr('layer-full', index);\n};\n\n// 恢复页面滚动条\nready.restScrollbar = function(index){\n if(doms.html.attr('layer-full') == index){\n doms.html[0].style[doms.html[0].style.removeProperty \n ? 'removeProperty' \n : 'removeAttribute']('overflow');\n doms.html.removeAttr('layer-full');\n }\n};\n\n/** 内置成员 */\n\nwindow.layer = layer;\n\n// 获取子 iframe 的 DOM\nlayer.getChildFrame = function(selector, index){\n index = index || $('.'+doms[4]).attr('times');\n return $('#'+ doms[0] + index).find('iframe').contents().find(selector); \n};\n\n// 得到当前 iframe 层的索引,子 iframe 时使用\nlayer.getFrameIndex = function(name){\n return $('#'+ name).parents('.'+doms[4]).attr('times');\n};\n\n// iframe 层自适应宽高\nlayer.iframeAuto = function(index){\n if(!index) return;\n var heg = layer.getChildFrame('html', index).outerHeight();\n var layero = $('#'+ doms[0] + index);\n var titHeight = layero.find(doms[1]).outerHeight() || 0;\n var btnHeight = layero.find('.'+doms[6]).outerHeight() || 0;\n layero.css({height: heg + titHeight + btnHeight});\n layero.find('iframe').css({height: heg});\n};\n\n// 重置 iframe url\nlayer.iframeSrc = function(index, url){\n $('#'+ doms[0] + index).find('iframe').attr('src', url);\n};\n\n// 设定层的样式\nlayer.style = function(index, options, limit){\n var layero = $('#'+ doms[0] + index);\n var contentElem = layero.find('.layui-layer-content');\n var type = layero.attr('type');\n var titHeight = layero.find(doms[1]).outerHeight() || 0;\n var btnHeight = layero.find('.'+doms[6]).outerHeight() || 0;\n var minLeft = layero.attr('minLeft');\n \n // loading 和 tips 层不允许更改\n if(type === ready.type[3] || type === ready.type[4]){\n return;\n }\n \n if(!limit){\n if(parseFloat(options.width) <= 260){\n options.width = 260;\n }\n \n if(parseFloat(options.height) - titHeight - btnHeight <= 64){\n options.height = 64 + titHeight + btnHeight;\n }\n }\n layero.css(options);\n btnHeight = layero.find('.'+doms[6]).outerHeight() || 0;\n \n if(type === ready.type[2]){\n layero.find('iframe').css({\n height: (typeof options.height === 'number' ? options.height : layero.height()) - titHeight - btnHeight\n });\n } else {\n contentElem.css({\n height: (typeof options.height === 'number' ? options.height : layero.height()) - titHeight - btnHeight\n - parseFloat(contentElem.css('padding-top'))\n - parseFloat(contentElem.css('padding-bottom'))\n })\n }\n};\n\n// 最小化\nlayer.min = function(index, options){\n var layero = $('#'+ doms[0] + index);\n var maxminStatus = layero.data('maxminStatus');\n\n if(maxminStatus === 'min') return; // 当前的状态是否已经是最小化\n if(maxminStatus === 'max') layer.restore(index); // 若当前为最大化,则先还原后再最小化\n\n layero.data('maxminStatus', 'min');\n options = options || layero.data('config') || {};\n\n var shadeo = $('#'+ doms.SHADE + index);\n var elemMin = layero.find('.layui-layer-min');\n var titHeight = layero.find(doms[1]).outerHeight() || 0;\n var minLeft = layero.attr('minLeft'); // 最小化时的横坐标\n var hasMinLeft = typeof minLeft === 'string'; // 是否已经赋值过最小化坐标\n var left = hasMinLeft ? minLeft : (181*ready.minStackIndex)+'px';\n var position = layero.css('position');\n var minWidth = 180; // 最小化时的宽度\n var settings = {\n width: minWidth\n ,height: titHeight\n ,position: 'fixed'\n ,overflow: 'hidden'\n };\n\n ready.record(layero); // 记录当前尺寸、坐标,用于还原\n\n // 简易最小化补位\n if(ready.minStackArr.length > 0){\n left = ready.minStackArr[0];\n ready.minStackArr.shift();\n }\n\n // left 是否超出边界\n if(parseFloat(left) + minWidth > win.width()){\n left = win.width() - minWidth - function(){\n ready.minStackArr.edgeIndex = ready.minStackArr.edgeIndex || 0;\n return ready.minStackArr.edgeIndex += 3;\n }();\n if(left < 0) left = 0;\n }\n \n // 是否堆叠在左下角\n if(options.minStack){\n settings.left = left;\n settings.top = win.height() - titHeight;\n hasMinLeft || ready.minStackIndex++; // 若未赋值过最小化坐标,则最小化操作索引自增\n layero.attr('minLeft', left);\n }\n \n layero.attr('position', position);\n layer.style(index, settings, true);\n\n elemMin.hide();\n layero.attr('type') === 'page' && layero.find(doms[4]).hide();\n ready.restScrollbar(index);\n\n // 隐藏遮罩\n shadeo.hide();\n};\n\n// 还原\nlayer.restore = function(index){\n var layero = $('#'+ doms[0] + index);\n var shadeo = $('#'+ doms.SHADE + index);\n var contentElem = layero.find('.layui-layer-content');\n var area = layero.attr('area').split(',');\n var type = layero.attr('type');\n var options = layero.data('config') || {};\n var contentRecordHeight = contentElem.data(RECORD_HEIGHT_KEY);\n\n layero.removeData('maxminStatus'); // 移除最大最小状态\n \n // 恢复原来尺寸\n layer.style(index, {\n width: area[0], // 数值或百分比\n height: area[1],\n top: parseFloat(area[2]),\n left: parseFloat(area[3]),\n position: layero.attr('position'),\n overflow: 'visible'\n }, true);\n \n layero.find('.layui-layer-max').removeClass('layui-layer-maxmin');\n layero.find('.layui-layer-min').show();\n type === 'page' && layero.find(doms[4]).show();\n\n // 恢复页面滚动条弹层打开时的状态\n options.scrollbar ? ready.restScrollbar(index) : ready.setScrollbar(index);\n\n // #1604\n if(contentRecordHeight !== undefined){\n contentElem.removeData(RECORD_HEIGHT_KEY);\n var contentRecordHeightElem = type === ready.type[2] ? contentElem.children('iframe') : contentElem;\n contentRecordHeightElem.css({height: contentRecordHeight});\n }\n \n // 恢复遮罩\n shadeo.show();\n // ready.events.resize[index](); // ?\n};\n\n// 全屏(最大化)\nlayer.full = function(index){\n var layero = $('#'+ doms[0] + index);\n var maxminStatus = layero.data('maxminStatus');\n\n if(maxminStatus === 'max') return // 检查当前的状态是否已经是最大化\n if(maxminStatus === 'min') layer.restore(index); // 若当前为最小化,则先还原后再最大化\n\n layero.data('maxminStatus', 'max');\n ready.record(layero); // 记录当前尺寸、坐标\n\n if(!doms.html.attr('layer-full')){\n ready.setScrollbar(index);\n }\n\n setTimeout(function(){\n var isfix = layero.css('position') === 'fixed';\n layer.style(index, {\n top: isfix ? 0 : win.scrollTop(),\n left: isfix ? 0 : win.scrollLeft(),\n width: '100%',\n height: '100%'\n }, true);\n layero.find('.layui-layer-min').hide();\n }, 100);\n};\n\n// 改变 title\nlayer.title = function(name, index){\n var title = $('#'+ doms[0] + (index || layer.index)).find(doms[1]);\n title.html(name);\n};\n\n// 关闭 layer 总方法\nlayer.close = function(index, callback){\n var layero = function(){\n var closest = $('.'+ doms[0]).children('#'+ index).closest('.'+ doms[0]);\n return closest[0] ? (\n index = closest.attr('times'),\n closest\n ) : $('#'+ doms[0] + index)\n }();\n var type = layero.attr('type');\n var options = layero.data('config') || {};\n var hideOnClose = options.id && options.hideOnClose; // 是否关闭时移除弹层容器\n\n if(!layero[0]) return;\n\n var executor = function(){\n // 关闭动画\n var closeAnim = ({\n slideDown: 'layer-anim-slide-down-out',\n slideLeft: 'layer-anim-slide-left-out',\n slideUp: 'layer-anim-slide-up-out',\n slideRight: 'layer-anim-slide-right-out'\n })[options.anim] || 'layer-anim-close';\n \n // 移除主容器\n var remove = function(){\n var WRAP = 'layui-layer-wrap';\n \n // 是否关闭时隐藏弹层容器\n if(hideOnClose){\n layero.removeClass('layer-anim '+ closeAnim);\n return layero.hide();\n }\n \n // 是否为页面捕获层\n if(type === ready.type[1] && layero.attr('conType') === 'object'){\n layero.children(':not(.'+ doms[5] +')').remove();\n var wrap = layero.find('.'+WRAP);\n for(var i = 0; i < 2; i++){\n wrap.unwrap();\n }\n wrap.css('display', wrap.data('display')).removeClass(WRAP);\n } else {\n // 低版本 IE 回收 iframe\n if(type === ready.type[2]){\n try {\n var iframe = $('#'+ doms[4] + index)[0];\n iframe.contentWindow.document.write('');\n iframe.contentWindow.close();\n layero.find('.'+doms[5])[0].removeChild(iframe);\n } catch(e){}\n }\n layero[0].innerHTML = '';\n layero.remove();\n }\n \n typeof ready.end[index] === 'function' && ready.end[index]();\n delete ready.end[index];\n typeof callback === 'function' && callback();\n \n // 移除 reisze 事件\n if(ready.events.resize[index]){\n win.off('resize', ready.events.resize[index]);\n delete ready.events.resize[index];\n }\n };\n // 移除遮罩\n var shadeo = $('#'+ doms.SHADE + index);\n if((layer.ie && layer.ie < 10) || !options.isOutAnim){\n shadeo[hideOnClose ? 'hide' : 'remove']();\n }else{\n shadeo.css({opacity: 0});\n setTimeout(function(){\n shadeo[hideOnClose ? 'hide' : 'remove']();\n }, 350);\n }\n \n // 是否允许关闭动画\n if(options.isOutAnim){\n layero.addClass('layer-anim '+ closeAnim);\n }\n \n layer.ie == 6 && ready.reselect();\n ready.restScrollbar(index); \n \n // 记住被关闭层的最小化堆叠坐标\n if(typeof layero.attr('minLeft') === 'string'){\n ready.minStackIndex--;\n ready.minStackArr.push(layero.attr('minLeft'));\n }\n \n if((layer.ie && layer.ie < 10) || !options.isOutAnim){\n remove()\n } else {\n setTimeout(function(){\n remove();\n }, 200);\n }\n }\n\n if(!hideOnClose && typeof ready.beforeEnd[index] === 'function'){\n // 类似 Promise.resolve\n var promiseLikeResolve = function(value){\n var deferred = $.Deferred();\n\n if(value && typeof value.then === 'function'){\n value.then(deferred.resolve, deferred.reject);\n }else{\n deferred.resolve(value);\n }\n return deferred.promise();\n }\n\n promiseLikeResolve(ready.beforeEnd[index](layero, index))\n .then(function(result){\n if(result !== false){\n delete ready.beforeEnd[index];\n executor();\n }\n }, function(reason){\n reason !== undefined && window.console && window.console.error('layer error hint: ' + reason);\n });\n }else{\n delete ready.beforeEnd[index];\n executor();\n }\n};\n\n// 关闭所有层\nlayer.closeAll = function(type, callback){\n if(typeof type === 'function'){\n callback = type;\n type = null;\n }\n var domsElem = $('.'+doms[0]);\n $.each(domsElem, function(_index){\n var othis = $(this);\n var is = type ? (othis.attr('type') === type) : 1;\n is && layer.close(othis.attr('times'), _index === domsElem.length - 1 ? callback : null);\n is = null;\n });\n if(domsElem.length === 0) typeof callback === 'function' && callback();\n};\n\n// 根据弹层类型关闭最近打开的层\nlayer.closeLast = function(type, callback){\n var layerIndexList = [];\n var isArrayType = $.isArray(type);\n $(typeof type === 'string' ? '.layui-layer-' + type : '.layui-layer').each(function(i, el){\n var layero = $(el);\n var shouldSkip = (isArrayType && type.indexOf(layero.attr('type')) === -1) || layero.css('display') === 'none';\n if(shouldSkip) return true;\n layerIndexList.push(Number(layero.attr('times')));\n });\n if(layerIndexList.length > 0){\n var layerIndexMax = Math.max.apply(null, layerIndexList);\n layer.close(layerIndexMax, callback);\n }\n};\n\n\n/*\n * 拓展模块,layui 开始合并在一起\n */\n\n\nvar cache = layer.cache || {};\nvar skin = function(type){\n return (cache.skin ? (' ' + cache.skin + ' ' + cache.skin + '-'+type) : '');\n}; \n \n// 仿系统 prompt\nlayer.prompt = function(options, yes){\n var style = '', placeholder = '';\n options = options || {};\n \n if(typeof options === 'function') yes = options;\n \n if(options.area){\n var area = options.area;\n style = 'style=\"width: '+ area[0] +'; height: '+ area[1] + ';\"';\n delete options.area;\n }\n if (options.placeholder) {\n placeholder = ' placeholder=\"' + options.placeholder + '\"';\n }\n var prompt, content = options.formType == 2 ? '' : function () {\n return '';\n }();\n \n var success = options.success;\n delete options.success;\n \n return layer.open($.extend({\n type: 1,\n btn: ['确定','取消'],\n content: content,\n skin: 'layui-layer-prompt' + skin('prompt'),\n maxWidth: win.width(),\n success: function(layero){\n prompt = layero.find('.layui-layer-input');\n prompt.val(options.value || '').focus();\n typeof success === 'function' && success(layero);\n },\n resize: false,\n yes: function(index){\n var value = prompt.val();\n if(value.length > (options.maxlength||500)) {\n layer.tips('最多输入'+ (options.maxlength || 500) +'个字符', prompt, {tips: 1});\n } else {\n yes && yes(value, index, prompt);\n }\n }\n }, options));\n};\n\n// tab 层\nlayer.tab = function(options){\n options = options || {};\n \n var tab = options.tab || {};\n var THIS = 'layui-this';\n var success = options.success;\n \n delete options.success;\n \n return layer.open($.extend({\n type: 1,\n skin: 'layui-layer-tab' + skin('tab'),\n resize: false,\n title: function(){\n var len = tab.length, ii = 1, str = '';\n if(len > 0){\n str = ''+ tab[0].title +'';\n for(; ii < len; ii++){\n str += ''+ tab[ii].title +'';\n }\n }\n return str;\n }(),\n content: '
              '+ function(){\n var len = tab.length, ii = 1, str = '';\n if(len > 0){\n str = '
            • '+ (tab[0].content || 'no content') +'
            • ';\n for(; ii < len; ii++){\n str += '
            • '+ (tab[ii].content || 'no content') +'
            • ';\n }\n }\n return str;\n }() +'
            ',\n success: function(layero){\n var btn = layero.find('.layui-layer-title').children();\n var main = layero.find('.layui-layer-tabmain').children();\n btn.on('mousedown', function(e){\n e.stopPropagation ? e.stopPropagation() : e.cancelBubble = true;\n var othis = $(this), index = othis.index();\n othis.addClass(THIS).siblings().removeClass(THIS);\n main.eq(index).show().siblings().hide();\n typeof options.change === 'function' && options.change(index);\n });\n typeof success === 'function' && success(layero);\n }\n }, options));\n};\n\n// 图片层\nlayer.photos = function(options, loop, key){\n var dict = {};\n\n // 默认属性\n options = $.extend(true, {\n toolbar: true,\n footer: true\n }, options);\n\n if(!options.photos) return;\n \n // 若 photos 并非选择器或 jQuery 对象,则为普通 object\n var isObject = !(typeof options.photos === 'string' || options.photos instanceof $);\n var photos = isObject ? options.photos : {};\n var data = photos.data || [];\n var start = photos.start || 0;\n var success = options.success;\n \n dict.imgIndex = (start|0) + 1;\n options.img = options.img || 'img';\n delete options.success;\n \n // 若 options.photos 不是一个对象\n if(!isObject){ // 页面直接获取\n var parent = $(options.photos), pushData = function(){\n data = [];\n parent.find(options.img).each(function(index){\n var othis = $(this);\n othis.attr('layer-index', index);\n data.push({\n alt: othis.attr('alt'),\n pid: othis.attr('layer-pid'),\n src: othis.attr('lay-src') || othis.attr('layer-src') || othis.attr('src'),\n thumb: othis.attr('src')\n });\n });\n };\n \n pushData();\n \n if (data.length === 0) return;\n \n loop || parent.on('click', options.img, function(){\n pushData();\n var othis = $(this), index = othis.attr('layer-index'); \n layer.photos($.extend(options, {\n photos: {\n start: index,\n data: data,\n tab: options.tab\n },\n full: options.full\n }), true);\n });\n \n // 不直接弹出\n if (!loop) return;\n } else if (data.length === 0){\n return layer.msg('没有图片');\n }\n \n // 上一张\n dict.imgprev = function(key){\n dict.imgIndex--;\n if(dict.imgIndex < 1){\n dict.imgIndex = data.length;\n }\n dict.tabimg(key);\n };\n \n // 下一张\n dict.imgnext = function(key,errorMsg){\n dict.imgIndex++;\n if(dict.imgIndex > data.length){\n dict.imgIndex = 1;\n if (errorMsg) {return}\n }\n dict.tabimg(key)\n };\n \n // 方向键\n dict.keyup = function(event){\n if(!dict.end){\n var code = event.keyCode;\n event.preventDefault();\n if(code === 37){\n dict.imgprev(true);\n } else if(code === 39) {\n dict.imgnext(true);\n } else if(code === 27) {\n layer.close(dict.index);\n }\n }\n }\n \n // 切换\n dict.tabimg = function(key){\n if(data.length <= 1) return;\n photos.start = dict.imgIndex - 1;\n layer.close(dict.index);\n return layer.photos(options, true, key);\n }\n\n dict.isNumber = function (n) {\n return typeof n === 'number' && !isNaN(n);\n }\n\n dict.image = {};\n\n dict.getTransform = function(opts){\n var transforms = [];\n var rotate = opts.rotate;\n var scaleX = opts.scaleX;\n var scale = opts.scale;\n\n if (dict.isNumber(rotate) && rotate !== 0) {\n transforms.push('rotate(' + rotate + 'deg)');\n }\n\n if (dict.isNumber(scaleX) && scaleX !== 1) {\n transforms.push('scaleX(' + scaleX + ')');\n }\n\n if (dict.isNumber(scale)) {\n transforms.push('scale(' + scale + ')');\n }\n\n return transforms.length ? transforms.join(' ') : 'none';\n }\n \n // 一些动作\n dict.event = function(layero, index, that){\n // 上一张\n dict.main.find('.layui-layer-photos-prev').on('click', function(event){\n event.preventDefault();\n dict.imgprev(true);\n }); \n \n // 下一张\n dict.main.find('.layui-layer-photos-next').on('click', function(event){\n event.preventDefault();\n dict.imgnext(true);\n });\n \n $(document).on('keyup', dict.keyup);\n\n // 头部工具栏事件\n layero.off('click').on('click','*[toolbar-event]', function () {\n var othis = $(this);\n var event = othis.attr('toolbar-event');\n switch (event) {\n case 'rotate':\n dict.image.rotate = ((dict.image.rotate || 0) + Number(othis.attr('data-option'))) % 360;\n dict.imgElem.css({\n transform: dict.getTransform(dict.image)\n });\n break;\n case 'scalex':\n dict.image.scaleX = dict.image.scaleX === -1 ? 1 : -1;\n dict.imgElem.css({\n transform: dict.getTransform(dict.image)\n });\n break;\n case 'zoom':\n var ratio = Number(othis.attr('data-option'));\n dict.image.scale = (dict.image.scale || 1) + ratio;\n // 缩小状态最小值\n if (ratio < 0 && dict.image.scale < 0 - ratio) {\n dict.image.scale = 0 - ratio;\n }\n dict.imgElem.css({\n transform: dict.getTransform(dict.image)\n });\n break;\n case 'reset':\n dict.image.scaleX = 1;\n dict.image.scale = 1;\n dict.image.rotate = 0;\n dict.imgElem.css({\n transform: 'none'\n });\n break;\n case 'close':\n layer.close(index);\n break;\n }\n that.offset();\n that.auto(index);\n });\n \n // 鼠标滚轮缩放图片事件\n dict.main.on('mousewheel DOMMouseScroll', function(e) {\n var delta = e.originalEvent.wheelDelta || -e.originalEvent.detail;\n var zoomElem = dict.main.find('[toolbar-event=\"zoom\"]');\n if (delta > 0) {\n zoomElem.eq(0).trigger('click');\n } else {\n zoomElem.eq(1).trigger('click');\n }\n e.preventDefault();\n });\n\n // 滑动切换图片事件,仅限 layui 中 \n if(window.layui || window.lay){\n var lay = window.layui.lay || window.lay;\n var touchEndCallback = function(e, state){\n var duration = Date.now() - state.timeStart;\n var speed = state.distanceX / duration;\n var threshold = win.width() / 3;\n var shouldSwipe = Math.abs(speed) > 0.25 || Math.abs(state.distanceX) > threshold;\n if(!shouldSwipe) return;\n if(state.direction === 'left'){\n dict.imgnext(true);\n }else if(state.direction === 'right'){\n dict.imgprev(true);\n }\n }\n\n $.each([that.shadeo, dict.main], function(i, elem){\n lay.touchSwipe(elem, {\n onTouchEnd: touchEndCallback\n })\n })\n }\n };\n \n // 图片预加载\n function loadImage(url, callback, error) { \n var img = new Image();\n img.src = url; \n if(img.complete){\n return callback(img);\n }\n img.onload = function(){\n img.onload = null;\n callback(img);\n };\n img.onerror = function(e){\n img.onerror = null;\n error(e);\n }; \n }\n \n dict.loadi = layer.load(1, {\n shade: 'shade' in options ? false : [0.9, undefined, 'unset'],\n scrollbar: false\n });\n\n loadImage(data[start].src, function(img){\n layer.close(dict.loadi);\n \n var alt = data[start].alt || '';\n\n // 切换图片时不出现动画\n if(key) options.anim = -1;\n \n // 弹出图片层\n dict.index = layer.open($.extend({\n type: 1,\n id: 'layui-layer-photos',\n area: function(){\n var imgarea = [img.width, img.height];\n var winarea = [$(window).width() - 100, $(window).height() - 100];\n \n // 若实际图片的宽或者高比 屏幕大(那么进行缩放)\n if(!options.full && (imgarea[0]>winarea[0]||imgarea[1]>winarea[1])){\n var wh = [imgarea[0]/winarea[0],imgarea[1]/winarea[1]];// 取宽度缩放比例、高度缩放比例\n if(wh[0] > wh[1]){// 取缩放比例最大的进行缩放\n imgarea[0] = imgarea[0]/wh[0];\n imgarea[1] = imgarea[1]/wh[0];\n } else if(wh[0] < wh[1]){\n imgarea[0] = imgarea[0]/wh[1];\n imgarea[1] = imgarea[1]/wh[1];\n }\n }\n\n return [imgarea[0]+'px', imgarea[1]+'px']; \n }(),\n title: false,\n shade: [0.9, undefined, 'unset'],\n shadeClose: true,\n closeBtn: false,\n move: '.layer-layer-photos-main img',\n moveType: 1,\n scrollbar: false,\n moveOut: true,\n anim: 5,\n isOutAnim: false,\n skin: 'layui-layer-photos' + skin('photos'),\n content: '
            '\n + '\"'+'\n + function(){\n var arr = ['
            '];\n\n // 左右箭头翻页\n if (data.length > 1) {\n arr.push(['
            ',\n '',\n '',\n '
            '].join(''));\n }\n\n // 头部工具栏\n if (options.toolbar) {\n arr.push([\n '
            ',\n '',\n '',\n '',\n '',\n '',\n '',\n '
            '\n ].join(''));\n }\n\n // 底部栏\n if (options.footer) {\n arr.push(['
            ',\n '

            '+ alt +'

            ',\n ''+ dict.imgIndex +' / '+ data.length +'',\n '查看原图',\n '
            '].join(''));\n }\n\n arr.push('
            ');\n return arr.join('');\n }()\n +'
            ',\n success: function(layero, index, that){\n dict.main = layero.find('.layer-layer-photos-main');\n dict.footer = layero.find('.layui-layer-photos-footer');\n dict.imgElem = dict.main.children('img');\n dict.event(layero, index, that);\n options.tab && options.tab(data[start], layero);\n typeof success === 'function' && success(layero);\n }, end: function(){\n dict.end = true;\n $(document).off('keyup', dict.keyup);\n }\n }, options));\n }, function(){\n layer.close(dict.loadi);\n layer.msg('当前图片地址异常,
            是否继续查看下一张?', {\n time: 30000, \n btn: ['下一张', '不看了'], \n yes: function(){\n data.length > 1 && dict.imgnext(true,true);\n }\n });\n });\n};\n\n// 主入口\nready.run = function(_$){\n $ = _$;\n win = $(window);\n \n // 移动端兼容性处理\n // https://gitee.com/layui/layui/issues/I81WGC\n // https://github.com/jquery/jquery/issues/1729\n var agent = navigator.userAgent.toLowerCase();\n var isMobile = /android|iphone|ipod|ipad|ios/.test(agent)\n var _win = $(window);\n if(isMobile){\n $.each({Height: \"height\", Width: \"width\"}, function(propSuffix, funcName){\n var propName = 'inner' + propSuffix;\n win[funcName] = function(){\n return propName in window \n ? window[propName]\n : _win[funcName]()\n }\n })\n }\n doms.html = $('html');\n layer.open = function(deliver){\n var o = new Class(deliver);\n return o.index;\n };\n};\n\n// 加载方式\nwindow.layui && layui.define ? (\n layer.ready(),\n layui.define(['jquery','lay'], function(exports){ // layui\n layer.path = layui.cache.dir;\n ready.run(layui.$);\n\n // export api\n window.layer = layer;\n exports('layer', layer);\n })\n) : (\n (typeof define === 'function' && define.amd) ? define(['jquery'], function(){ // requirejs\n ready.run(window.jQuery);\n return layer;\n }) : function(){ // 普通 script 标签引入\n layer.ready();\n ready.run(window.jQuery);\n }()\n);\n\n}(window);\n","/**\r\n * util 工具组件\r\n */\r\n\r\nlayui.define('jquery', function(exports){\r\n \"use strict\";\r\n\r\n var $ = layui.$;\r\n var hint = layui.hint();\r\n\r\n // 外部接口\r\n var util = {\r\n // 固定块\r\n fixbar: function(options){\r\n var ELEM = 'layui-fixbar';\r\n var $doc = $(document);\r\n\r\n // 默认可选项\r\n options = $.extend(true, {\r\n target: 'body', // fixbar 的插入目标选择器\r\n bars: [], // bar 信息\r\n \"default\": true, // 是否显示默认 bar\r\n margin: 160, // 出现 top bar 的滚动条高度临界值\r\n duration: 320 // top bar 等动画时长(毫秒)\r\n }, options);\r\n\r\n // 目标元素对象\r\n var $target = $(options.target);\r\n\r\n // 滚动条所在元素对象\r\n var $scroll = options.scroll\r\n ? $(options.scroll)\r\n : $(options.target === 'body' ? $doc : $target)\r\n\r\n // 是否提供默认图标\r\n if(options['default']){\r\n // 兼容旧版本的一些属性\r\n if(options.bar1){\r\n options.bars.push({\r\n type: 'bar1',\r\n icon: 'layui-icon-chat'\r\n });\r\n }\r\n if(options.bar2){\r\n options.bars.push({\r\n type: 'bar2',\r\n icon: 'layui-icon-help'\r\n });\r\n }\r\n // 默认 top bar\r\n options.bars.push({\r\n type: 'top',\r\n icon: 'layui-icon-top'\r\n });\r\n }\r\n\r\n var elem = $('
              ').addClass(ELEM);\r\n var elemTopBar;\r\n\r\n // 遍历生成 bars 节点\r\n layui.each(options.bars, function(i, item){\r\n var elemBar = $('
            • ');\r\n\r\n // 设置 bar 相关属性\r\n elemBar.addClass(item.icon).attr({\r\n 'lay-type': item.type,\r\n 'style': item.style || (options.bgcolor ? 'background-color: '+ options.bgcolor : '')\r\n }).html(item.content);\r\n\r\n // bar 点击事件\r\n elemBar.on('click', function(){\r\n var type = $(this).attr('lay-type');\r\n if(type === 'top'){\r\n (\r\n options.target === 'body'\r\n ? $('html,body')\r\n : $scroll\r\n ).animate({\r\n scrollTop : 0\r\n }, options.duration);\r\n }\r\n typeof options.click === 'function' && options.click.call(this, type);\r\n });\r\n\r\n // 自定义任意事件\r\n if(layui.type(options.on) === 'object'){\r\n layui.each(options.on, function(eventName, callback){\r\n elemBar.on(eventName, function(){\r\n var type = $(this).attr('lay-type');\r\n typeof callback === 'function' && callback.call(this, type);\r\n });\r\n })\r\n }\r\n\r\n // 获得 top bar 节点\r\n if(item.type === 'top'){\r\n elemBar.addClass('layui-fixbar-top');\r\n elemTopBar = elemBar;\r\n }\r\n\r\n elem.append(elemBar); // 插入 bar 节点\r\n });\r\n\r\n // 若目标元素已存在 fixbar,则移除旧的节点\r\n $target.find('.'+ ELEM).remove();\r\n\r\n // 向目标元素插入 fixbar 节点\r\n typeof options.css === 'object' && elem.css(options.css);\r\n $target.append(elem);\r\n\r\n // top bar 的显示隐藏\r\n if(elemTopBar){\r\n var lock;\r\n var setTopBar = (function setTopBar(){\r\n var top = $scroll.scrollTop();\r\n if(top >= options.margin){\r\n lock || (elemTopBar.show(), lock = 1);\r\n } else {\r\n lock && (elemTopBar.hide(), lock = 0);\r\n }\r\n return setTopBar;\r\n })();\r\n }\r\n\r\n // 根据 scrollbar 设置 fixbar 相关状态\r\n var timer;\r\n $scroll.on('scroll', function(){\r\n if(!setTopBar) return;\r\n clearTimeout(timer);\r\n timer = setTimeout(function(){\r\n setTopBar();\r\n }, 100);\r\n });\r\n },\r\n\r\n // 倒计时\r\n countdown: function(options){\r\n var that = this;\r\n\r\n // 默认可选项\r\n options = $.extend(true, {\r\n date: new Date(),\r\n now: new Date()\r\n }, options);\r\n\r\n // 兼容旧版参数\r\n var args = arguments;\r\n if(args.length > 1){\r\n options.date = new Date(args[0]);\r\n options.now = new Date(args[1]);\r\n options.clock = args[2];\r\n }\r\n\r\n // 实例对象\r\n var inst = {\r\n options: options,\r\n clear: function(){ // 清除计时器\r\n clearTimeout(inst.timer);\r\n },\r\n reload: function(opts){ // 重置倒计时\r\n this.clear();\r\n $.extend(true, this.options, {\r\n now: new Date()\r\n }, opts);\r\n count();\r\n }\r\n };\r\n\r\n typeof options.ready === 'function' && options.ready();\r\n\r\n // 计算倒计时\r\n var count = (function fn(){\r\n var date = new Date(options.date);\r\n var now = new Date(options.now);\r\n var countTime = function(time){\r\n return time > 0 ? time : 0;\r\n }(date.getTime() - now.getTime());\r\n var result = {\r\n d: Math.floor(countTime/(1000*60*60*24)), // 天\r\n h: Math.floor(countTime/(1000*60*60)) % 24, // 时\r\n m: Math.floor(countTime/(1000*60)) % 60, // 分\r\n s: Math.floor(countTime/1000) % 60 // 秒\r\n };\r\n var next = function(){\r\n now.setTime(now.getTime() + 1000);\r\n options.now = now;\r\n count();\r\n };\r\n\r\n // 兼容旧版返回值\r\n if(args.length > 1) result = [result.d,result.h,result.m,result.s]\r\n\r\n // 计时 - 以秒间隔\r\n inst.timer = setTimeout(next, 1000);\r\n typeof options.clock === 'function' && options.clock(result, inst);\r\n\r\n // 计时完成\r\n if(countTime <= 0){\r\n clearTimeout(inst.timer);\r\n typeof options.done === 'function' && options.done(result, inst);\r\n }\r\n\r\n return fn;\r\n })();\r\n\r\n return inst;\r\n },\r\n\r\n // 某个时间在当前时间的多久前\r\n timeAgo: function(time, onlyDate){\r\n var that = this;\r\n var arr = [[], []];\r\n var stamp = new Date().getTime() - new Date(time).getTime();\r\n\r\n // 返回具体日期\r\n if(stamp > 1000*60*60*24*31){\r\n stamp = new Date(time);\r\n arr[0][0] = that.digit(stamp.getFullYear(), 4);\r\n arr[0][1] = that.digit(stamp.getMonth() + 1);\r\n arr[0][2] = that.digit(stamp.getDate());\r\n\r\n // 是否输出时间\r\n if(!onlyDate){\r\n arr[1][0] = that.digit(stamp.getHours());\r\n arr[1][1] = that.digit(stamp.getMinutes());\r\n arr[1][2] = that.digit(stamp.getSeconds());\r\n }\r\n return arr[0].join('-') + ' ' + arr[1].join(':');\r\n }\r\n\r\n // 30 天以内,返回「多久前」\r\n if(stamp >= 1000*60*60*24){\r\n return ((stamp/1000/60/60/24)|0) + ' 天前';\r\n } else if(stamp >= 1000*60*60){\r\n return ((stamp/1000/60/60)|0) + ' 小时前';\r\n } else if(stamp >= 1000*60*3){ // 3 分钟以内为:刚刚\r\n return ((stamp/1000/60)|0) + ' 分钟前';\r\n } else if(stamp < 0){\r\n return '未来';\r\n } else {\r\n return '刚刚';\r\n }\r\n },\r\n\r\n // 数字前置补零\r\n digit: function(num, length){\r\n var str = '';\r\n num = String(num);\r\n length = length || 2;\r\n for(var i = num.length; i < length; i++){\r\n str += '0';\r\n }\r\n return num < Math.pow(10, length) ? str + (num|0) : num;\r\n },\r\n\r\n // 转化为日期格式字符\r\n toDateString: function(time, format, options){\r\n // 若 null 或空字符,则返回空字符\r\n if(time === null || time === '') return '';\r\n\r\n // 引用自 dayjs\r\n // https://github.com/iamkun/dayjs/blob/v1.11.9/src/constant.js#L30\r\n var REGEX_FORMAT = /\\[([^\\]]+)]|y{1,4}|M{1,2}|d{1,2}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|SSS/g;\r\n var that = this;\r\n var date = new Date(function(){\r\n if(!time) return;\r\n return isNaN(time) ? time : (typeof time === 'string' ? parseInt(time) : time)\r\n }() || new Date())\r\n\r\n if(!date.getDate()) return hint.error('Invalid millisecond for \"util.toDateString(millisecond)\"'), '';\r\n\r\n var years = date.getFullYear();\r\n var month = date.getMonth();\r\n var days = date.getDate();\r\n var hours = date.getHours();\r\n var minutes = date.getMinutes();\r\n var seconds = date.getSeconds();\r\n var milliseconds = date.getMilliseconds();\r\n\r\n var defaultMeridiem = function(hours, minutes){\r\n var hm = hours * 100 + minutes;\r\n if (hm < 600) {\r\n return '凌晨';\r\n } else if (hm < 900) {\r\n return '早上';\r\n } else if (hm < 1100) {\r\n return '上午';\r\n } else if (hm < 1300) {\r\n return '中午';\r\n } else if (hm < 1800) {\r\n return '下午';\r\n }\r\n return '晚上';\r\n };\r\n\r\n var meridiem = (options && options.customMeridiem) || defaultMeridiem;\r\n\r\n var matches = {\r\n yy: function(){return String(years).slice(-2);},\r\n yyyy: function(){return that.digit(years, 4);},\r\n M: function(){return String(month + 1);},\r\n MM: function(){return that.digit(month + 1);},\r\n d: function(){return String(days);},\r\n dd: function(){return that.digit(days);},\r\n H: function(){return String(hours);},\r\n HH: function(){return that.digit(hours);},\r\n h: function(){return String(hours % 12 || 12);},\r\n hh: function(){return that.digit(hours % 12 || 12);},\r\n A: function(){return meridiem(hours, minutes);},\r\n m: function(){return String(minutes);},\r\n mm: function(){return that.digit(minutes);},\r\n s: function(){return String(seconds);},\r\n ss: function(){return that.digit(seconds);},\r\n SSS: function(){return that.digit(milliseconds, 3);}\r\n }\r\n\r\n format = format || 'yyyy-MM-dd HH:mm:ss';\r\n\r\n return format.replace(REGEX_FORMAT, function(match, $1) {\r\n return $1 || (matches[match] && matches[match]()) || match;\r\n });\r\n },\r\n\r\n // 转义 html\r\n escape: function(html){\r\n var exp = /[<\"'>]|&(?=#[a-zA-Z0-9]+)/g;\r\n if(html === undefined || html === null) return '';\r\n\r\n html += '';\r\n if(!exp.test(html)) return html;\r\n\r\n return html.replace(/&(?!#?[a-zA-Z0-9]+;)/g, '&')\r\n .replace(//g, '>')\r\n .replace(/'/g, ''').replace(/\"/g, '"');\r\n },\r\n\r\n // 还原转义的 html\r\n unescape: function(html){\r\n if(html === undefined || html === null) html = '';\r\n html += '';\r\n\r\n return html.replace(/\\&/g, '&')\r\n .replace(/\\</g, '<').replace(/\\>/g, '>')\r\n .replace(/\\'/g, '\\'').replace(/\\"/g, '\"');\r\n },\r\n\r\n // 打开新窗口\r\n openWin: function(options){\r\n var win;\r\n options = options || {};\r\n win = options.window || window.open((options.url || ''), options.target, options.specs);\r\n if(options.url) return;\r\n win.document.open('text/html', 'replace');\r\n win.document.write(options.content || '');\r\n win.document.close();\r\n },\r\n\r\n // 让指定的元素保持在可视区域\r\n toVisibleArea: function(options){\r\n options = $.extend({\r\n margin: 160, // 触发动作的边界值\r\n duration: 200, // 动画持续毫秒数\r\n type: 'y' // 触发方向,x 水平、y 垂直\r\n }, options);\r\n\r\n if(!options.scrollElem[0] || !options.thisElem[0]) return;\r\n\r\n var scrollElem = options.scrollElem // 滚动元素\r\n var thisElem = options.thisElem // 目标元素\r\n var vertical = options.type === 'y' // 是否垂直方向\r\n var SCROLL_NAME = vertical ? 'scrollTop' : 'scrollLeft' // 滚动方法\r\n var OFFSET_NAME = vertical ? 'top' : 'left' // 坐标方式\r\n var scrollValue = scrollElem[SCROLL_NAME]() // 当前滚动距离\r\n var size = scrollElem[vertical ? 'height' : 'width']() // 滚动元素的尺寸\r\n var scrollOffset = scrollElem.offset()[OFFSET_NAME] // 滚动元素所处位置\r\n var thisOffset = thisElem.offset()[OFFSET_NAME] - scrollOffset // 目标元素当前的所在位置\r\n var obj = {};\r\n\r\n // 边界满足条件\r\n if(thisOffset > size - options.margin || thisOffset < options.margin){\r\n obj[SCROLL_NAME] = thisOffset - size/2 + scrollValue\r\n scrollElem.animate(obj, options.duration);\r\n }\r\n },\r\n\r\n /**\r\n * 批量事件\r\n * @param {string} [attr=\"lay-on\"] - 触发事件的元素属性名\r\n * @param {Object.} events - 事件集合\r\n * @param {Object} [options] - 参数的更多选项\r\n * @param {(string|HTMLElement|JQuery)} [options.elem=\"body\"] - 触发事件的委托元素\r\n * @param {string} [options.trigger=\"click\"] - 事件触发的方式\r\n * @returns {Object} 返回当前 events 参数设置的事件集合\r\n */\r\n on: function(attr, events, options) {\r\n // 若参数一为 object 类型,则为事件集,且省略 attr\r\n if (typeof attr === 'object') {\r\n options = events || {};\r\n events = attr;\r\n attr = options.attr || 'lay-on'; // 默认属性名\r\n }\r\n\r\n // 更多选项\r\n options = $.extend({\r\n elem: 'body',\r\n trigger: 'click'\r\n }, typeof options === 'object' ? options : {\r\n trigger: options // 兼容旧版\r\n });\r\n\r\n var elem = options.elem = $(options.elem);\r\n var attrSelector = '['+ attr +']';\r\n var DATANAME = 'UTIL_ON_DATA'; // 缓存在委托元素上的 data-* 属性名\r\n\r\n if (!elem[0]) return; // 若委托元素不存在\r\n\r\n // 初始化 data 默认值,以委托元素为存储单元\r\n if (!elem.data(DATANAME)) {\r\n elem.data(DATANAME, {\r\n events: {},\r\n callbacks: {}\r\n });\r\n }\r\n\r\n // 读取 data 缓存\r\n var dataCache = elem.data(DATANAME);\r\n var callbacks = dataCache.callbacks;\r\n\r\n // 根据 attr 记录事件集合\r\n events = dataCache.events[attr] = $.extend(true, dataCache.events[attr], events);\r\n\r\n // 清除事件委托,避免重复绑定\r\n elem.off(options.trigger, attrSelector, callbacks[attr]);\r\n\r\n // 绑定事件委托\r\n elem.on(\r\n options.trigger,\r\n attrSelector,\r\n callbacks[attr] = function(e) {\r\n var othis = $(this);\r\n var key = othis.attr(attr);\r\n typeof events[key] === 'function' && events[key].call(this, othis, e);\r\n }\r\n );\r\n\r\n return events;\r\n }\r\n };\r\n\r\n // 兼容旧版\r\n util.event = util.on;\r\n\r\n // 输出接口\r\n exports('util', util);\r\n});\r\n","/**\r\n * dropdown \r\n * 下拉菜单组件\r\n */\r\n\r\nlayui.define(['jquery', 'laytpl', 'lay', 'util'], function(exports){\r\n \"use strict\";\r\n \r\n var $ = layui.$;\r\n var laytpl = layui.laytpl;\r\n var util = layui.util;\r\n var hint = layui.hint();\r\n var device = layui.device();\r\n var clickOrMousedown = (device.mobile ? 'touchstart' : 'mousedown');\r\n \r\n // 模块名\r\n var MOD_NAME = 'dropdown';\r\n var MOD_INDEX = 'layui_'+ MOD_NAME +'_index'; // 模块索引名\r\n var MOD_ID = 'lay-' + MOD_NAME + '-id';\r\n\r\n // 外部接口\r\n var dropdown = {\r\n config: {\r\n customName: { // 自定义 data 字段名\r\n id: 'id',\r\n title: 'title',\r\n children: 'child'\r\n }\r\n },\r\n index: layui[MOD_NAME] ? (layui[MOD_NAME].index + 10000) : 0,\r\n\r\n // 设置全局项\r\n set: function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n },\r\n \r\n // 事件\r\n on: function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n }\r\n };\r\n\r\n // 操作当前实例\r\n var thisModule = function(){\r\n var that = this;\r\n var options = that.config;\r\n var id = options.id;\r\n\r\n thisModule.that[id] = that; // 记录当前实例对象\r\n\r\n return {\r\n config: options,\r\n // 重置实例\r\n reload: function(options){\r\n that.reload.call(that, options);\r\n },\r\n reloadData: function(options){\r\n dropdown.reloadData(id, options);\r\n },\r\n close: function () {\r\n that.remove()\r\n },\r\n open: function () {\r\n that.render()\r\n }\r\n }\r\n };\r\n\r\n // 字符常量\r\n var STR_ELEM = 'layui-dropdown';\r\n var STR_HIDE = 'layui-hide';\r\n var STR_DISABLED = 'layui-disabled';\r\n var STR_NONE = 'layui-none';\r\n var STR_ITEM_UP = 'layui-menu-item-up';\r\n var STR_ITEM_DOWN = 'layui-menu-item-down';\r\n var STR_MENU_TITLE = 'layui-menu-body-title';\r\n var STR_ITEM_GROUP = 'layui-menu-item-group';\r\n var STR_ITEM_PARENT = 'layui-menu-item-parent';\r\n var STR_ITEM_DIV = 'layui-menu-item-divider';\r\n var STR_ITEM_CHECKED = 'layui-menu-item-checked';\r\n var STR_ITEM_CHECKED2 = 'layui-menu-item-checked2';\r\n var STR_MENU_PANEL = 'layui-menu-body-panel';\r\n var STR_MENU_PANEL_L = 'layui-menu-body-panel-left';\r\n var STR_ELEM_SHADE = 'layui-dropdown-shade';\r\n \r\n var STR_GROUP_TITLE = '.'+ STR_ITEM_GROUP + '>.'+ STR_MENU_TITLE;\r\n\r\n // 构造器\r\n var Class = function(options){\r\n var that = this;\r\n that.index = ++dropdown.index;\r\n that.config = $.extend({}, that.config, dropdown.config, options);\r\n that.init();\r\n };\r\n\r\n // 默认配置\r\n Class.prototype.config = {\r\n trigger: 'click', // 事件类型\r\n content: '', // 自定义菜单内容\r\n className: '', // 自定义样式类名\r\n style: '', // 设置面板 style 属性\r\n show: false, // 是否初始即显示菜单面板\r\n isAllowSpread: true, // 是否允许菜单组展开收缩\r\n isSpreadItem: true, // 是否初始展开子菜单\r\n data: [], // 菜单数据结构\r\n delay: [200, 300], // 延时显示或隐藏的毫秒数,若为 number 类型,则表示显示和隐藏的延迟时间相同,trigger 为 hover 时才生效\r\n shade: 0, // 遮罩\r\n accordion: false // 手风琴效果,仅菜单组生效。基础菜单需要在容器上追加 'lay-accordion' 属性。\r\n };\r\n \r\n // 重载实例\r\n Class.prototype.reload = function(options, type){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n that.init(true, type);\r\n };\r\n\r\n // 初始化准备\r\n Class.prototype.init = function(rerender, type){\r\n var that = this;\r\n var options = that.config;\r\n \r\n // 若 elem 非唯一\r\n var elem = $(options.elem);\r\n if(elem.length > 1){\r\n layui.each(elem, function(){\r\n dropdown.render($.extend({}, options, {\r\n elem: this\r\n }));\r\n });\r\n return that;\r\n }\r\n\r\n // 合并 lay-options 属性上的配置信息\r\n $.extend(options, lay.options(elem[0]));\r\n\r\n // 若重复执行 render,则视为 reload 处理\r\n if(!rerender && elem[0] && elem.data(MOD_INDEX)){\r\n var newThat = thisModule.getThis(elem.data(MOD_INDEX));\r\n if(!newThat) return;\r\n\r\n return newThat.reload(options, type);\r\n }\r\n\r\n options.elem = $(options.elem);\r\n \r\n // 初始化 id 属性 - 优先取 options > 元素 id > 自增索引\r\n options.id = 'id' in options ? options.id : (\r\n elem.attr('id') || that.index\r\n );\r\n\r\n if(!lay.isTopElem(elem[0])){\r\n elem.attr(MOD_ID, options.id);\r\n }\r\n\r\n // 初始化自定义字段名\r\n options.customName = $.extend({}, dropdown.config.customName, options.customName);\r\n\r\n if(options.show || (type === 'reloadData' && that.elemView && $('body').find(that.elemView.get(0)).length)) that.render(rerender, type); //初始即显示或者面板弹出之后执行了刷新数据\r\n that.events(); // 事件\r\n };\r\n \r\n // 渲染\r\n Class.prototype.render = function(rerender, type){\r\n var that = this;\r\n var options = that.config;\r\n var customName = options.customName;\r\n var elemBody = $('body');\r\n \r\n // 默认菜单内容\r\n var getDefaultView = function(){\r\n var elemUl = $('
                ');\r\n if(options.data.length > 0 ){\r\n eachItemView(elemUl, options.data)\r\n } else {\r\n elemUl.html('
              • 暂无数据
              • ');\r\n }\r\n return elemUl;\r\n };\r\n \r\n // 遍历菜单项\r\n var eachItemView = function(views, data){\r\n // var views = [];\r\n\r\n layui.each(data, function(index, item){\r\n // 是否存在子级\r\n var isChild = item[customName.children] && item[customName.children].length > 0;\r\n var isSpreadItem = ('isSpreadItem' in item) ? item.isSpreadItem : options.isSpreadItem\r\n var title = function(title){\r\n var templet = item.templet || options.templet;\r\n if(templet){\r\n title = typeof templet === 'function' \r\n ? templet(item)\r\n : laytpl(templet).render(item);\r\n }\r\n return title;\r\n }(util.escape(item[customName.title]));\r\n \r\n // 初始类型\r\n var type = function(){\r\n if(isChild){\r\n item.type = item.type || 'parent';\r\n }\r\n if(item.type){\r\n return ({\r\n group: 'group'\r\n ,parent: 'parent'\r\n ,'-': '-'\r\n })[item.type] || 'parent';\r\n }\r\n return '';\r\n }();\r\n\r\n if(type !== '-' && (!item[customName.title] && !item[customName.id] && !isChild)) return;\r\n \r\n //列表元素\r\n var viewLi = $([''\r\n \r\n //标题区\r\n ,function(){\r\n //是否超文本\r\n var viewText = ('href' in item) ? (\r\n ''+ title +''\r\n ) : title;\r\n \r\n //是否存在子级\r\n if(isChild){\r\n return '
                '+ viewText + function(){\r\n if(type === 'parent'){\r\n return '';\r\n } else if(type === 'group' && options.isAllowSpread){\r\n return '';\r\n } else {\r\n return '';\r\n }\r\n }() +'
                '\r\n \r\n }\r\n return '
                '+ viewText +'
                ';\r\n }()\r\n ,''].join(''));\r\n \r\n viewLi.data('item', item);\r\n \r\n //子级区\r\n if(isChild){\r\n var elemPanel = $('
                ');\r\n var elemUl = $('
                  ');\r\n\r\n if(type === 'parent'){\r\n elemPanel.append(eachItemView(elemUl, item[customName.children]));\r\n viewLi.append(elemPanel);\r\n } else {\r\n viewLi.append(eachItemView(elemUl, item[customName.children]));\r\n }\r\n }\r\n\r\n views.append(viewLi);\r\n });\r\n return views;\r\n };\r\n \r\n // 主模板\r\n var TPL_MAIN = ['
                  '\r\n ,'
                  '].join('');\r\n \r\n // 如果是右键事件,则每次触发事件时,将允许重新渲染\r\n if(options.trigger === 'contextmenu' || lay.isTopElem(options.elem[0])) rerender = true;\r\n \r\n // 判断是否已经打开了下拉菜单面板\r\n if(!rerender && options.elem.data(MOD_INDEX +'_opened')) return;\r\n\r\n // 记录模板对象\r\n that.elemView = $('.' + STR_ELEM + '[' + MOD_ID + '=\"' + options.id + '\"]');\r\n if (type === 'reloadData' && that.elemView.length) {\r\n that.elemView.html(options.content || getDefaultView());\r\n } else {\r\n that.elemView = $(TPL_MAIN);\r\n that.elemView.append(options.content || getDefaultView());\r\n\r\n // 初始化某些属性\r\n if(options.className) that.elemView.addClass(options.className);\r\n if(options.style) that.elemView.attr('style', options.style);\r\n\r\n // 记录当前执行的实例索引\r\n dropdown.thisId = options.id;\r\n\r\n // 插入视图\r\n that.remove(); // 移除非当前绑定元素的面板\r\n elemBody.append(that.elemView);\r\n options.elem.data(MOD_INDEX +'_opened', true);\r\n\r\n // 遮罩\r\n var shade = options.shade ? ('
                  ') : '';\r\n that.elemView.before(shade);\r\n\r\n // 如果是鼠标移入事件,则鼠标移出时自动关闭\r\n if(options.trigger === 'mouseenter'){\r\n that.elemView.on('mouseenter', function(){\r\n clearTimeout(thisModule.timer);\r\n }).on('mouseleave', function(){\r\n that.delayRemove();\r\n });\r\n }\r\n }\r\n\r\n // 坐标定位\r\n that.position();\r\n thisModule.prevElem = that.elemView; // 记录当前打开的元素,以便在下次关闭\r\n thisModule.prevElem.data('prevElem', options.elem); // 将当前绑定的元素,记录在打开元素的 data 对象中\r\n \r\n // 阻止全局事件\r\n that.elemView.find('.layui-menu').on(clickOrMousedown, function(e){\r\n layui.stope(e);\r\n });\r\n\r\n // 触发菜单列表事件\r\n that.elemView.find('.layui-menu li').on('click', function(e){\r\n var othis = $(this);\r\n var data = othis.data('item') || {};\r\n var isChild = data[customName.children] && data[customName.children].length > 0;\r\n var isClickAllScope = options.clickScope === 'all'; // 是否所有父子菜单均触发点击事件\r\n\r\n if(data.disabled) return; // 菜单项禁用状态\r\n \r\n // 普通菜单项点击后的回调及关闭面板\r\n if((!isChild || isClickAllScope) && data.type !== '-'){\r\n var ret = typeof options.click === 'function' \r\n ? options.click(data, othis) \r\n : null;\r\n \r\n ret === false || (isChild || that.remove());\r\n layui.stope(e);\r\n }\r\n });\r\n \r\n // 触发菜单组展开收缩\r\n that.elemView.find(STR_GROUP_TITLE).on('click', function(e){\r\n var othis = $(this);\r\n var elemGroup = othis.parent();\r\n var data = elemGroup.data('item') || {};\r\n \r\n if(data.type === 'group' && options.isAllowSpread){\r\n thisModule.spread(elemGroup, options.accordion);\r\n }\r\n });\r\n\r\n // 组件打开完毕的事件\r\n typeof options.ready === 'function' && options.ready(\r\n that.elemView, \r\n options.elem\r\n );\r\n };\r\n \r\n // 位置定位\r\n Class.prototype.position = function(obj){\r\n var that = this;\r\n var options = that.config;\r\n \r\n lay.position(options.elem[0], that.elemView[0], {\r\n position: options.position,\r\n e: that.e,\r\n clickType: options.trigger === 'contextmenu' ? 'right' : null,\r\n align: options.align || null\r\n });\r\n };\r\n \r\n // 删除视图\r\n Class.prototype.remove = function(){\r\n var that = this;\r\n var options = that.config;\r\n var prevContentElem = thisModule.prevElem;\r\n \r\n // 若存在已打开的面板元素,则移除\r\n if(prevContentElem){\r\n var prevId = prevContentElem.attr(MOD_ID);\r\n var prevTriggerElem = prevContentElem.data('prevElem');\r\n var prevInstance = thisModule.getThis(prevId);\r\n var prevOnClose = prevInstance.config.close;\r\n \r\n prevTriggerElem && prevTriggerElem.data(MOD_INDEX +'_opened', false);\r\n prevContentElem.remove();\r\n delete thisModule.prevElem;\r\n typeof prevOnClose === 'function' && prevOnClose.call(prevInstance.config, prevTriggerElem);\r\n }\r\n lay('.' + STR_ELEM_SHADE).remove();\r\n };\r\n\r\n Class.prototype.normalizedDelay = function(){\r\n var that = this;\r\n var options = that.config;\r\n var delay = [].concat(options.delay);\r\n \r\n return {\r\n show: delay[0],\r\n hide: delay[1] !== undefined ? delay[1] : delay[0] \r\n }\r\n }\r\n \r\n // 延迟删除视图\r\n Class.prototype.delayRemove = function(){\r\n var that = this;\r\n var options = that.config;\r\n clearTimeout(thisModule.timer);\r\n\r\n thisModule.timer = setTimeout(function(){\r\n that.remove();\r\n }, that.normalizedDelay().hide);\r\n };\r\n \r\n // 事件\r\n Class.prototype.events = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n // 若传入 hover,则解析为 mouseenter\r\n if(options.trigger === 'hover') options.trigger = 'mouseenter';\r\n\r\n // 解除上一个事件\r\n if(that.prevElem) that.prevElem.off(options.trigger, that.prevElemCallback);\r\n\r\n // 是否鼠标移入时触发\r\n var isMouseEnter = options.trigger === 'mouseenter';\r\n \r\n // 记录被绑定的元素及回调\r\n that.prevElem = options.elem;\r\n that.prevElemCallback = function(e){\r\n clearTimeout(thisModule.timer);\r\n that.e = e;\r\n\r\n // 若为鼠标移入事件,则延迟触发\r\n isMouseEnter ? (\r\n thisModule.timer = setTimeout(function(){\r\n that.render();\r\n }, that.normalizedDelay().show)\r\n ) : that.render();\r\n \r\n e.preventDefault();\r\n };\r\n\r\n // 触发元素事件\r\n options.elem.on(options.trigger, that.prevElemCallback);\r\n \r\n // 如果是鼠标移入事件\r\n if (isMouseEnter) {\r\n // 执行鼠标移出事件\r\n options.elem.on('mouseleave', function(){\r\n that.delayRemove();\r\n });\r\n }\r\n };\r\n \r\n // 记录所有实例\r\n thisModule.that = {}; // 记录所有实例对象\r\n \r\n // 获取当前实例对象\r\n thisModule.getThis = function(id){\r\n var that = thisModule.that[id];\r\n if(!that) hint.error(id ? (MOD_NAME +' instance with ID \\''+ id +'\\' not found') : 'ID argument required');\r\n return that;\r\n };\r\n \r\n // 设置菜单组展开和收缩状态\r\n thisModule.spread = function(othis, isAccordion){\r\n var contentElem = othis.children('ul');\r\n var needSpread = othis.hasClass(STR_ITEM_UP);\r\n var ANIM_MS = 200;\r\n\r\n // 动画执行完成后的操作\r\n var complete = function() {\r\n $(this).css({'display': ''}); // 剔除临时 style,以适配外部样式的状态重置;\r\n };\r\n\r\n // 动画是否正在执行\r\n if (contentElem.is(':animated')) return;\r\n\r\n // 展开\r\n if (needSpread) {\r\n othis.removeClass(STR_ITEM_UP).addClass(STR_ITEM_DOWN);\r\n contentElem.hide().stop().slideDown(ANIM_MS, complete);\r\n } else { // 收缩\r\n contentElem.stop().slideUp(ANIM_MS, complete);\r\n othis.removeClass(STR_ITEM_DOWN).addClass(STR_ITEM_UP);\r\n }\r\n\r\n // 手风琴\r\n if (needSpread && isAccordion) {\r\n var groupSibs = othis.siblings('.' + STR_ITEM_DOWN);\r\n groupSibs.children('ul').stop().slideUp(ANIM_MS, complete);\r\n groupSibs.removeClass(STR_ITEM_DOWN).addClass(STR_ITEM_UP);\r\n }\r\n };\r\n \r\n // 全局事件\r\n (function(){\r\n var _WIN = $(window);\r\n var _DOC = $(document);\r\n \r\n // 自适应定位\r\n _WIN.on('resize', function(){\r\n if(!dropdown.thisId) return;\r\n var that = thisModule.getThis(dropdown.thisId);\r\n if(!that) return;\r\n \r\n if((that.elemView && !that.elemView[0]) || !$('.'+ STR_ELEM)[0]){\r\n return false;\r\n }\r\n \r\n var options = that.config;\r\n \r\n if(options.trigger === 'contextmenu'){\r\n that.remove();\r\n } else {\r\n that.position();\r\n }\r\n });\r\n \r\n \r\n \r\n // 点击任意处关闭\r\n _DOC.on(clickOrMousedown, function(e){\r\n if(!dropdown.thisId) return;\r\n var that = thisModule.getThis(dropdown.thisId)\r\n if(!that) return;\r\n \r\n var options = that.config;\r\n \r\n // 若触发的是绑定的元素,或者属于绑定元素的子元素,则不关闭\r\n // 满足条件:当前绑定的元素不是 body document,或者不是鼠标右键事件\r\n if(!(lay.isTopElem(options.elem[0]) || options.trigger === 'contextmenu')){\r\n if(\r\n e.target === options.elem[0] || \r\n options.elem.find(e.target)[0] ||\r\n (that.elemView && e.target === that.elemView[0]) ||\r\n (that.elemView && that.elemView.find(e.target)[0])\r\n ) return;\r\n }\r\n \r\n that.remove();\r\n });\r\n \r\n // 基础菜单的静态元素事件\r\n var ELEM_LI = '.layui-menu:not(.layui-dropdown-menu) li';\r\n _DOC.on('click', ELEM_LI, function(e){\r\n var othis = $(this);\r\n var parent = othis.parents('.layui-menu').eq(0);\r\n var isChild = othis.hasClass(STR_ITEM_GROUP) || othis.hasClass(STR_ITEM_PARENT);\r\n var filter = parent.attr('lay-filter') || parent.attr('id');\r\n var options = lay.options(this);\r\n \r\n // 非触发元素\r\n if(othis.hasClass(STR_ITEM_DIV)) return;\r\n\r\n // 非菜单组\r\n if(!isChild){\r\n // 选中\r\n parent.find('.'+ STR_ITEM_CHECKED).removeClass(STR_ITEM_CHECKED); // 清除选中样式\r\n parent.find('.'+ STR_ITEM_CHECKED2).removeClass(STR_ITEM_CHECKED2); // 清除父级菜单选中样式\r\n othis.addClass(STR_ITEM_CHECKED); //添加选中样式\r\n othis.parents('.'+ STR_ITEM_PARENT).addClass(STR_ITEM_CHECKED2); // 添加父级菜单选中样式\r\n\r\n options.title = options.title || $.trim(othis.children('.'+ STR_MENU_TITLE).text());\r\n \r\n // 触发事件\r\n layui.event.call(this, MOD_NAME, 'click('+ filter +')', options);\r\n }\r\n });\r\n \r\n // 基础菜单的展开收缩事件\r\n _DOC.on('click', (ELEM_LI + STR_GROUP_TITLE), function(e){\r\n var othis = $(this);\r\n var elemGroup = othis.parents('.'+ STR_ITEM_GROUP +':eq(0)');\r\n var options = lay.options(elemGroup[0]);\r\n var isAccordion = typeof othis.parents('.layui-menu').eq(0).attr('lay-accordion') === 'string';\r\n\r\n if(('isAllowSpread' in options) ? options.isAllowSpread : true){\r\n thisModule.spread(elemGroup, isAccordion);\r\n }\r\n });\r\n \r\n // 判断子级菜单是否超出屏幕\r\n var ELEM_LI_PAR = '.layui-menu .'+ STR_ITEM_PARENT\r\n _DOC.on('mouseenter', ELEM_LI_PAR, function(e){\r\n var othis = $(this);\r\n var elemPanel = othis.find('.'+ STR_MENU_PANEL);\r\n\r\n if(!elemPanel[0]) return;\r\n var rect = elemPanel[0].getBoundingClientRect();\r\n \r\n // 是否超出右侧屏幕\r\n if(rect.right > _WIN.width()){\r\n elemPanel.addClass(STR_MENU_PANEL_L);\r\n // 不允许超出左侧屏幕\r\n rect = elemPanel[0].getBoundingClientRect();\r\n if(rect.left < 0){\r\n elemPanel.removeClass(STR_MENU_PANEL_L);\r\n }\r\n }\r\n \r\n // 是否超出底部屏幕\r\n if(rect.bottom > _WIN.height()){\r\n elemPanel.eq(0).css('margin-top', -(rect.bottom - _WIN.height() + 5));\r\n }\r\n }).on('mouseleave', ELEM_LI_PAR, function(e){\r\n var othis = $(this)\r\n var elemPanel = othis.children('.'+ STR_MENU_PANEL);\r\n \r\n elemPanel.removeClass(STR_MENU_PANEL_L);\r\n elemPanel.css('margin-top', 0);\r\n });\r\n \r\n })();\r\n\r\n // 关闭面板\r\n dropdown.close = function(id){\r\n var that = thisModule.getThis(id);\r\n if(!that) return this;\r\n \r\n that.remove();\r\n return thisModule.call(that);\r\n };\r\n\r\n // 打开面板\r\n dropdown.open = function(id){\r\n var that = thisModule.getThis(id);\r\n if(!that) return this;\r\n \r\n that.render();\r\n return thisModule.call(that);\r\n }\r\n \r\n // 重载实例\r\n dropdown.reload = function(id, options, type){\r\n var that = thisModule.getThis(id);\r\n if(!that) return this;\r\n\r\n that.reload(options, type);\r\n return thisModule.call(that);\r\n };\r\n\r\n // 仅重载数据\r\n dropdown.reloadData = function(){\r\n var args = $.extend([], arguments);\r\n args[2] = 'reloadData';\r\n\r\n // 重载时,与数据相关的参数\r\n var dataParams = new RegExp('^('+ [\r\n 'data', 'templet', 'content'\r\n ].join('|') + ')$');\r\n\r\n // 过滤与数据无关的参数\r\n layui.each(args[1], function (key, value) {\r\n if(!dataParams.test(key)){\r\n delete args[1][key];\r\n }\r\n });\r\n\r\n return dropdown.reload.apply(null, args);\r\n };\r\n\r\n // 核心入口\r\n dropdown.render = function(options){\r\n var inst = new Class(options);\r\n return thisModule.call(inst);\r\n };\r\n\r\n exports(MOD_NAME, dropdown);\r\n});\r\n","/**\r\n * slider 滑块组件\r\n */\r\n\r\nlayui.define(['jquery', 'lay'], function(exports){\r\n 'use strict';\r\n\r\n var $ = layui.$;\r\n var lay = layui.lay;\r\n\r\n // 外部接口\r\n var slider = {\r\n config: {},\r\n index: layui.slider ? (layui.slider.index + 10000) : 0,\r\n\r\n // 设置全局项\r\n set: function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n },\r\n\r\n // 事件\r\n on: function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n }\r\n };\r\n\r\n // 操作当前实例\r\n var thisSlider = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n return {\r\n setValue: function(value, index){ // 设置值\r\n value = value > options.max ? options.max : value;\r\n value = value < options.min ? options.min : value;\r\n options.value = value;\r\n return that.slide('set', value, index || 0);\r\n },\r\n config: options\r\n }\r\n };\r\n\r\n // 字符常量\r\n var MOD_NAME = 'slider';\r\n var DISABLED = 'layui-disabled';\r\n var ELEM_VIEW = 'layui-slider';\r\n var SLIDER_BAR = 'layui-slider-bar';\r\n var SLIDER_WRAP = 'layui-slider-wrap';\r\n var SLIDER_WRAP_BTN = 'layui-slider-wrap-btn';\r\n var SLIDER_TIPS = 'layui-slider-tips';\r\n var SLIDER_INPUT = 'layui-slider-input';\r\n var SLIDER_INPUT_TXT = 'layui-slider-input-txt';\r\n var SLIDER_INPUT_BTN = 'layui-slider-input-btn';\r\n var ELEM_HOVER = 'layui-slider-hover';\r\n\r\n // 构造器\r\n var Class = function(options){\r\n var that = this;\r\n that.index = ++slider.index;\r\n that.config = $.extend({}, that.config, slider.config, options);\r\n that.render();\r\n };\r\n\r\n // 默认配置\r\n Class.prototype.config = {\r\n type: 'default', //滑块类型,垂直:vertical\r\n min: 0, //最小值\r\n max: 100, //最大值,默认100\r\n value: 0, //初始值,默认为0\r\n step: 1, //间隔值\r\n showstep: false, //间隔点开启\r\n tips: true, //文字提示,开启\r\n tipsAlways: false, //文字提示,始终开启\r\n input: false, //输入框,关闭\r\n range: false, //范围选择,与输入框不能同时开启,默认关闭\r\n height: 200, //配合 type:\"vertical\" 使用,默认200px\r\n disabled: false, //滑块禁用,默认关闭\r\n theme: '#16baaa' //主题颜色\r\n };\r\n\r\n // 数值精度\r\n Class.prototype.precision = function(){\r\n var that = this;\r\n var options = that.config;\r\n var precisions = $.map([options.min, options.max, options.step], function(v, i){\r\n var decimalArr = String(v).split('.');\r\n return decimalArr[1] ? decimalArr[1].length : 0;\r\n })\r\n return Math.max.apply(null, precisions);\r\n }\r\n\r\n //滑块渲染\r\n Class.prototype.render = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 若 elem 非唯一,则拆分为多个实例\r\n var elem = $(options.elem);\r\n if(elem.length > 1){\r\n layui.each(elem, function(){\r\n slider.render($.extend({}, options, {\r\n elem: this\r\n }));\r\n });\r\n return that;\r\n }\r\n\r\n // 合并 lay-options 属性上的配置信息\r\n $.extend(options, lay.options(elem[0]));\r\n\r\n //间隔值不能小于等于 0\r\n if(options.step <= 0) options.step = 1;\r\n\r\n //最大值不能小于最小值\r\n if(options.max < options.min) options.max = options.min + options.step;\r\n\r\n\r\n\r\n //判断是否开启双滑块\r\n if(options.range){\r\n options.value = typeof(options.value) == 'object' ? options.value : [options.min, options.value];\r\n var minValue = Math.min(options.value[0], options.value[1])\r\n ,maxValue = Math.max(options.value[0], options.value[1]);\r\n options.value[0] = Math.max(minValue,options.min);\r\n options.value[1] = Math.max(maxValue,options.min);\r\n options.value[0] = Math.min(options.value[0],options.max);\r\n options.value[1] = Math.min(options.value[1],options.max);\r\n\r\n var scaleFir = (options.value[0] - options.min) / (options.max - options.min) * 100;\r\n var scaleSec = (options.value[1] - options.min) / (options.max - options.min) * 100;\r\n var scale = scaleSec - scaleFir + '%';\r\n scaleFir = scaleFir + '%';\r\n scaleSec = scaleSec + '%';\r\n } else {\r\n //如果初始值是一个数组,则获取数组的最小值\r\n if(typeof options.value == 'object'){\r\n options.value = Math.min.apply(null, options.value);\r\n }\r\n\r\n //初始值不能小于最小值且不能大于最大值\r\n if(options.value < options.min) options.value = options.min;\r\n if(options.value > options.max) options.value = options.max;\r\n\r\n var scale = (options.value - options.min) / (options.max - options.min) * 100 + '%';\r\n }\r\n\r\n\r\n //如果禁用,颜色为统一的灰色\r\n var theme = options.disabled ? '#c2c2c2' : options.theme;\r\n\r\n //滑块\r\n var temp = '
                  '+ (options.tips ? '
                  ' : '') +\r\n '
                  ' +\r\n '
                  '+ (options.range ? '
                  ' : '') +'
                  ';\r\n\r\n var othis = $(options.elem);\r\n var hasRender = othis.next('.' + ELEM_VIEW);\r\n //生成替代元素\r\n hasRender[0] && hasRender.remove(); //如果已经渲染,则Rerender\r\n that.elemTemp = $(temp);\r\n\r\n //把数据缓存到滑块上\r\n if(options.range){\r\n that.elemTemp.find('.' + SLIDER_WRAP).eq(0).data('value', options.value[0]);\r\n that.elemTemp.find('.' + SLIDER_WRAP).eq(1).data('value', options.value[1]);\r\n }else{\r\n that.elemTemp.find('.' + SLIDER_WRAP).data('value', options.value);\r\n }\r\n\r\n //插入替代元素\r\n othis.html(that.elemTemp);\r\n\r\n //垂直滑块\r\n if(options.type === 'vertical'){\r\n that.elemTemp.height(options.height + 'px');\r\n }\r\n\r\n //显示间断点\r\n if(options.showstep){\r\n var number = (options.max - options.min) / options.step, item = '';\r\n for(var i = 1; i < number + 1; i++) {\r\n var step = i * 100 / number;\r\n if(step < 100){\r\n item += '
                  '\r\n }\r\n }\r\n that.elemTemp.append(item);\r\n }\r\n\r\n //插入输入框\r\n if(options.input && !options.range){\r\n var elemInput = $('
                  ');\r\n othis.css(\"position\",\"relative\");\r\n othis.append(elemInput);\r\n othis.find('.' + SLIDER_INPUT_TXT).children('input').val(options.value);\r\n if(options.type === 'vertical'){\r\n elemInput.css({\r\n left: 0\r\n ,top: -48\r\n });\r\n } else {\r\n that.elemTemp.css(\"margin-right\", elemInput.outerWidth() + 15);\r\n }\r\n }\r\n\r\n //给未禁止的滑块滑动事件\r\n if(!options.disabled){\r\n that.slide();\r\n }else{\r\n that.elemTemp.addClass(DISABLED);\r\n that.elemTemp.find('.' + SLIDER_WRAP_BTN).addClass(DISABLED);\r\n }\r\n\r\n /**\r\n * @description 设置提示文本内容\r\n * @param {Element} sliderWrapBtnElem 提示文本节点元素\r\n */\r\n function setSliderTipsTxt(sliderWrapBtnElem) {\r\n var value = sliderWrapBtnElem.parent().data('value');\r\n var tipsTxt = options.setTips ? options.setTips(value) : value;\r\n that.elemTemp.find('.' + SLIDER_TIPS).html(tipsTxt);\r\n }\r\n\r\n /**\r\n * @description 计算提示文本元素的 position left\r\n * @param {Element} sliderWrapBtnElem 提示文本节点元素\r\n */\r\n function calcSliderTipsLeft(sliderWrapBtnElem){\r\n var sliderWidth = options.type === 'vertical' ? options.height : that.elemTemp[0].offsetWidth;\r\n var sliderWrap = that.elemTemp.find('.' + SLIDER_WRAP);\r\n var tipsLeft = options.type === 'vertical' ? (sliderWidth - sliderWrapBtnElem.parent()[0].offsetTop - sliderWrap.height()) : sliderWrapBtnElem.parent()[0].offsetLeft;\r\n var left = tipsLeft / sliderWidth * 100;\r\n return left\r\n }\r\n\r\n /**\r\n * @description 设置提示文本元素的 position left\r\n * @param {number} left 要设置的 left 的大小\r\n */\r\n function setSliderTipsLeft(left) {\r\n if(options.type === 'vertical'){\r\n that.elemTemp.find('.' + SLIDER_TIPS).css({\r\n \"bottom\": left + '%',\r\n \"margin-bottom\": \"20px\",\r\n \"display\": \"inline-block\"\r\n });\r\n } else {\r\n that.elemTemp.find('.' + SLIDER_TIPS).css({\r\n \"left\": left + '%',\r\n \"display\": \"inline-block\"\r\n });\r\n }\r\n }\r\n\r\n //判断是否要始终显示提示文本\r\n if(options.tips){\r\n if(options.tipsAlways){\r\n var sliderWrapBtnElem = that.elemTemp.find('.' + SLIDER_WRAP_BTN);\r\n setSliderTipsTxt(sliderWrapBtnElem)\r\n var left = calcSliderTipsLeft(sliderWrapBtnElem);\r\n setSliderTipsLeft(left)\r\n }else{\r\n //划过滑块显示数值\r\n var timer;\r\n that.elemTemp.find('.' + SLIDER_WRAP_BTN).on('mouseover', function(){\r\n setSliderTipsTxt($(this))\r\n var left = calcSliderTipsLeft($(this));\r\n clearTimeout(timer);\r\n timer = setTimeout(function(){\r\n setSliderTipsLeft(left)\r\n }, 300);\r\n }).on('mouseout', function(){\r\n clearTimeout(timer);\r\n if(!options.tipsAlways){\r\n that.elemTemp.find('.' + SLIDER_TIPS).css(\"display\", \"none\");\r\n }\r\n });\r\n }\r\n }\r\n };\r\n\r\n //滑块滑动\r\n Class.prototype.slide = function(setValue, value, i){\r\n var that = this;\r\n var options = that.config;\r\n var sliderAct = that.elemTemp;\r\n var sliderWidth = function(){\r\n return options.type === 'vertical' ? options.height : sliderAct[0].offsetWidth\r\n };\r\n var sliderWrap = sliderAct.find('.' + SLIDER_WRAP);\r\n var sliderTxt = sliderAct.next('.' + SLIDER_INPUT);\r\n var inputValue = sliderTxt.children('.' + SLIDER_INPUT_TXT).children('input').val();\r\n var step = 100 / ((options.max - options.min) / options.step);\r\n var precision = that.precision();\r\n var change = function(offsetValue, index, from){\r\n if(Math.ceil(offsetValue) * step > 100){\r\n offsetValue = Math.ceil(offsetValue) * step\r\n }else{\r\n offsetValue = Math.round(offsetValue) * step\r\n }\r\n offsetValue = offsetValue > 100 ? 100: offsetValue;\r\n offsetValue = offsetValue < 0 ? 0: offsetValue;\r\n sliderWrap.eq(index).css((options.type === 'vertical' ?'bottom':'left'), offsetValue + '%');\r\n var firLeft = valueTo(sliderWrap[0].offsetLeft);\r\n var secLeft = options.range ? valueTo(sliderWrap[1].offsetLeft) : 0;\r\n if(options.type === 'vertical'){\r\n sliderAct.find('.' + SLIDER_TIPS).css({\"bottom\":offsetValue + '%', \"margin-bottom\":\"20px\"});\r\n firLeft = valueTo(sliderWidth() - sliderWrap[0].offsetTop - sliderWrap.height());\r\n secLeft = options.range ? valueTo(sliderWidth() - sliderWrap[1].offsetTop - sliderWrap.height()) : 0;\r\n }else{\r\n sliderAct.find('.' + SLIDER_TIPS).css(\"left\",offsetValue + '%');\r\n }\r\n firLeft = firLeft > 100 ? 100: firLeft;\r\n secLeft = secLeft > 100 ? 100: secLeft;\r\n var minLeft = Math.min(firLeft, secLeft)\r\n ,wrapWidth = Math.abs(firLeft - secLeft);\r\n if(options.type === 'vertical'){\r\n sliderAct.find('.' + SLIDER_BAR).css({\"height\":wrapWidth + '%', \"bottom\":minLeft + '%'});\r\n }else{\r\n sliderAct.find('.' + SLIDER_BAR).css({\"width\":wrapWidth + '%', \"left\":minLeft + '%'});\r\n }\r\n var selfValue = options.min + (options.max - options.min) * offsetValue / 100;\r\n selfValue = Number(parseFloat(selfValue).toFixed(precision));\r\n inputValue = selfValue;\r\n sliderTxt.children('.' + SLIDER_INPUT_TXT).children('input').val(inputValue);\r\n sliderWrap.eq(index).data('value', selfValue);\r\n sliderAct.find('.' + SLIDER_TIPS).html(options.setTips ? options.setTips(selfValue) : selfValue);\r\n\r\n //如果开启范围选择,则返回数组值\r\n if(options.range){\r\n var arrValue = [\r\n sliderWrap.eq(0).data('value'),\r\n sliderWrap.eq(1).data('value')\r\n ];\r\n if(arrValue[0] > arrValue[1]) arrValue.reverse(); //如果前面的圆点超过了后面的圆点值,则调换顺序\r\n }\r\n\r\n that.value = options.range ? arrValue : selfValue; // 最新值\r\n options.change && options.change(that.value); // change 回调\r\n\r\n // 值完成选中的事件\r\n if(from === 'done') options.done && options.done(that.value);\r\n };\r\n var valueTo = function(value){\r\n var oldLeft = value / sliderWidth() * 100 / step;\r\n var left = Math.round(oldLeft) * step;\r\n if(value == sliderWidth()){\r\n left = Math.ceil(oldLeft) * step;\r\n }\r\n return left;\r\n };\r\n\r\n //拖拽元素\r\n var elemMove = $(['
                  sliderWidth())left = sliderWidth();\r\n var reaLeft = left / sliderWidth() * 100 / step;\r\n change(reaLeft, index);\r\n othis.addClass(ELEM_HOVER);\r\n sliderAct.find('.' + SLIDER_TIPS).show();\r\n e.preventDefault();\r\n };\r\n\r\n var up = function(delay){\r\n othis.removeClass(ELEM_HOVER);\r\n if(!options.tipsAlways){\r\n setTimeout(function(){\r\n sliderAct.find('.' + SLIDER_TIPS).hide();\r\n }, delay);\r\n }\r\n };\r\n\r\n createMoveElem(othis, move, up)\r\n });\r\n });\r\n\r\n // 点击滑块\r\n sliderAct.on('click', function(e){\r\n var main = $('.' + SLIDER_WRAP_BTN);\r\n var othis = $(this);\r\n if(!main.is(event.target) && main.has(event.target).length === 0 && main.length){\r\n var index;\r\n var offset = options.type === 'vertical'\r\n ? (sliderWidth() - e.clientY + othis.offset().top - $(window).scrollTop())\r\n :(e.clientX - othis.offset().left - $(window).scrollLeft());\r\n\r\n if(offset < 0)offset = 0;\r\n if(offset > sliderWidth()) offset = sliderWidth();\r\n var reaLeft = offset / sliderWidth() * 100 / step;\r\n if(options.range){\r\n if(options.type === 'vertical'){\r\n index = Math.abs(offset - parseInt($(sliderWrap[0]).css('bottom'))) > Math.abs(offset - parseInt($(sliderWrap[1]).css('bottom'))) ? 1 : 0;\r\n } else {\r\n index = Math.abs(offset - sliderWrap[0].offsetLeft) > Math.abs(offset - sliderWrap[1].offsetLeft) ? 1 : 0;\r\n }\r\n } else {\r\n index = 0;\r\n }\r\n change(reaLeft, index, 'done');\r\n e.preventDefault();\r\n }\r\n });\r\n\r\n //点击加减输入框\r\n sliderTxt.children('.' + SLIDER_INPUT_BTN).children('i').each(function(index){\r\n $(this).on('click', function(){\r\n inputValue = sliderTxt.children('.' + SLIDER_INPUT_TXT).children('input').val();\r\n if(index == 1){ //减\r\n inputValue = inputValue - options.step < options.min\r\n ? options.min\r\n : Number(inputValue) - options.step;\r\n }else{\r\n inputValue = Number(inputValue) + options.step > options.max\r\n ? options.max\r\n : Number(inputValue) + options.step;\r\n }\r\n var inputScale = (inputValue - options.min) / (options.max - options.min) * 100 / step;\r\n change(inputScale, 0, 'done');\r\n });\r\n });\r\n\r\n //获取输入框值\r\n var getInputValue = function(){\r\n var realValue = this.value;\r\n realValue = isNaN(realValue) ? 0 : realValue;\r\n realValue = realValue < options.min ? options.min : realValue;\r\n realValue = realValue > options.max ? options.max : realValue;\r\n this.value = realValue;\r\n var inputScale = (realValue - options.min) / (options.max - options.min) * 100 / step;\r\n change(inputScale, 0, 'done');\r\n };\r\n sliderTxt.children('.' + SLIDER_INPUT_TXT).children('input').on('keydown', function(e){\r\n if(e.keyCode === 13){\r\n e.preventDefault();\r\n getInputValue.call(this);\r\n }\r\n }).on('change', getInputValue);\r\n };\r\n\r\n //事件处理\r\n Class.prototype.events = function(){\r\n var that = this;\r\n var options = that.config;\r\n };\r\n\r\n //核心入口\r\n slider.render = function(options){\r\n var inst = new Class(options);\r\n return thisSlider.call(inst);\r\n };\r\n\r\n exports(MOD_NAME, slider);\r\n})\r\n","/**\r\n * colorpicker \r\n * 颜色选择组件\r\n */\r\n\r\nlayui.define(['jquery', 'lay'], function(exports){\r\n \"use strict\";\r\n \r\n var $ = layui.$;\r\n var lay = layui.lay;\r\n var hint = layui.hint();\r\n var device = layui.device();\r\n var clickOrMousedown = (device.mobile ? 'click' : 'mousedown');\r\n\r\n //外部接口\r\n var colorpicker = {\r\n config: {}\r\n ,index: layui.colorpicker ? (layui.colorpicker.index + 10000) : 0\r\n\r\n //设置全局项\r\n ,set: function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n }\r\n \r\n //事件\r\n ,on: function(events, callback){\r\n return layui.onevent.call(this, 'colorpicker', events, callback);\r\n }\r\n };\r\n \r\n // 操作当前实例\r\n var thisModule = function(){\r\n var that = this;\r\n var options = that.config;\r\n var id = options.id;\r\n\r\n thisModule.that[id] = that; // 记录当前实例对象\r\n\r\n return {\r\n config: options\r\n };\r\n }\r\n\r\n //字符常量\r\n ,MOD_NAME = 'colorpicker', SHOW = 'layui-show', THIS = 'layui-this', ELEM = 'layui-colorpicker'\r\n \r\n ,ELEM_MAIN = '.layui-colorpicker-main', ICON_PICKER_DOWN = 'layui-icon-down', ICON_PICKER_CLOSE = 'layui-icon-close'\r\n ,PICKER_TRIG_SPAN = 'layui-colorpicker-trigger-span', PICKER_TRIG_I = 'layui-colorpicker-trigger-i', PICKER_SIDE = 'layui-colorpicker-side', PICKER_SIDE_SLIDER = 'layui-colorpicker-side-slider'\r\n ,PICKER_BASIS = 'layui-colorpicker-basis', PICKER_ALPHA_BG = 'layui-colorpicker-alpha-bgcolor', PICKER_ALPHA_SLIDER = 'layui-colorpicker-alpha-slider', PICKER_BASIS_CUR = 'layui-colorpicker-basis-cursor', PICKER_INPUT = 'layui-colorpicker-main-input'\r\n\r\n //RGB转HSB\r\n ,RGBToHSB = function(rgb){\r\n var hsb = {h:0, s:0, b:0};\r\n var min = Math.min(rgb.r, rgb.g, rgb.b);\r\n var max = Math.max(rgb.r, rgb.g, rgb.b);\r\n var delta = max - min;\r\n hsb.b = max;\r\n hsb.s = max !== 0 ? 255*delta/max : 0;\r\n if(hsb.s !== 0){\r\n if(rgb.r == max){ // 因 rgb 中返回的数字为 string 类型\r\n hsb.h = (rgb.g - rgb.b) / delta;\r\n }else if(rgb.g == max){\r\n hsb.h = 2 + (rgb.b - rgb.r) / delta;\r\n }else{\r\n hsb.h = 4 + (rgb.r - rgb.g) / delta;\r\n }\r\n }else{\r\n hsb.h = -1;\r\n }\r\n if(max === min){\r\n hsb.h = 0;\r\n }\r\n hsb.h *= 60;\r\n if(hsb.h < 0) {\r\n hsb.h += 360;\r\n }\r\n hsb.s *= 100/255;\r\n hsb.b *= 100/255;\r\n return hsb; \r\n }\r\n\r\n //HEX转HSB\r\n ,HEXToHSB = function(hex){\r\n hex = hex.indexOf('#') > -1 ? hex.substring(1) : hex;\r\n if(hex.length === 3){\r\n var num = hex.split(\"\");\r\n hex = num[0]+num[0]+num[1]+num[1]+num[2]+num[2]\r\n }\r\n hex = parseInt(hex, 16);\r\n var rgb = {r:hex >> 16, g:(hex & 0x00FF00) >> 8, b:(hex & 0x0000FF)};\r\n return RGBToHSB(rgb);\r\n }\r\n\r\n //HSB转RGB\r\n ,HSBToRGB = function(hsb){\r\n var rgb = {};\r\n var h = hsb.h;\r\n var s = hsb.s*255/100;\r\n var b = hsb.b*255/100;\r\n if(s === 0){\r\n rgb.r = rgb.g = rgb.b = b;\r\n }else{\r\n var t1 = b;\r\n var t2 = (255 - s) * b /255;\r\n var t3 = (t1 - t2) * (h % 60) /60;\r\n if(h === 360) h = 0;\r\n if(h < 60) {rgb.r=t1; rgb.b=t2; rgb.g=t2+t3}\r\n else if(h < 120) {rgb.g=t1; rgb.b=t2; rgb.r=t1-t3}\r\n else if(h < 180) {rgb.g=t1; rgb.r=t2; rgb.b=t2+t3}\r\n else if(h < 240) {rgb.b=t1; rgb.r=t2; rgb.g=t1-t3}\r\n else if(h < 300) {rgb.b=t1; rgb.g=t2; rgb.r=t2+t3}\r\n else if(h < 360) {rgb.r=t1; rgb.g=t2; rgb.b=t1-t3}\r\n else {rgb.r=0; rgb.g=0; rgb.b=0}\r\n }\r\n return {r:Math.round(rgb.r), g:Math.round(rgb.g), b:Math.round(rgb.b)};\r\n }\r\n\r\n //HSB转HEX\r\n ,HSBToHEX = function(hsb){\r\n var rgb = HSBToRGB(hsb);\r\n var hex = [\r\n rgb.r.toString(16)\r\n ,rgb.g.toString(16)\r\n ,rgb.b.toString(16)\r\n ];\r\n $.each(hex, function(nr, val){\r\n if(val.length === 1){\r\n hex[nr] = '0' + val;\r\n }\r\n });\r\n return hex.join('');\r\n }\r\n\r\n //转化成所需rgb格式\r\n ,RGBSTo = function(rgbs){\r\n var regexp = /[0-9]{1,3}/g;\r\n var re = rgbs.match(regexp) || [];\r\n return {r:re[0], g:re[1], b:re[2]};\r\n }\r\n \r\n ,$win = $(window)\r\n ,$doc = $(document)\r\n \r\n //构造器\r\n ,Class = function(options){\r\n var that = this;\r\n that.index = ++colorpicker.index;\r\n that.config = $.extend({}, that.config, colorpicker.config, options);\r\n that.render();\r\n };\r\n\r\n //默认配置\r\n Class.prototype.config = {\r\n color: '' //默认颜色,默认没有\r\n ,size: null //选择器大小\r\n ,alpha: false //是否开启透明度\r\n ,format: 'hex' //颜色显示/输入格式,可选 rgb,hex\r\n ,predefine: false //预定义颜色是否开启\r\n ,colors: [ //默认预定义颜色列表\r\n '#16baaa', '#16b777', '#1E9FFF', '#FF5722', '#FFB800', '#01AAED', '#999', '#c00', '#ff8c00','#ffd700'\r\n ,'#90ee90', '#00ced1', '#1e90ff', '#c71585', 'rgb(0, 186, 189)', 'rgb(255, 120, 0)', 'rgb(250, 212, 0)', '#393D49', 'rgba(0,0,0,.5)', 'rgba(255, 69, 0, 0.68)', 'rgba(144, 240, 144, 0.5)', 'rgba(31, 147, 255, 0.73)'\r\n ]\r\n };\r\n\r\n //初始颜色选择框\r\n Class.prototype.render = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 若 elem 非唯一,则拆分为多个实例\r\n var elem = $(options.elem);\r\n if(elem.length > 1){\r\n layui.each(elem, function(){\r\n colorpicker.render($.extend({}, options, {\r\n elem: this\r\n }));\r\n });\r\n return that;\r\n }\r\n\r\n // 合并 lay-options 属性上的配置信息\r\n $.extend(options, lay.options(elem[0]));\r\n \r\n //颜色选择框对象\r\n var elemColorBox = $(['
                  '\r\n ,''\r\n ,' 3){ //需要优化\r\n if(!(options.alpha && options.format == 'rgb')){\r\n bgstr = '#' + HSBToHEX(RGBToHSB(RGBSTo(options.color)))\r\n }\r\n }\r\n \r\n return 'background: '+ bgstr;\r\n }\r\n \r\n return bgstr;\r\n }() +'\">'\r\n ,''\r\n ,''\r\n ,''\r\n ,'
                  '].join(''))\r\n\r\n //初始化颜色选择框\r\n elem = options.elem = $(options.elem);\r\n options.size && elemColorBox.addClass('layui-colorpicker-'+ options.size); //初始化颜色选择框尺寸\r\n \r\n // 插入颜色选择框\r\n elem.addClass('layui-inline').html(\r\n that.elemColorBox = elemColorBox\r\n );\r\n\r\n // 初始化 id 属性 - 优先取 options > 元素 id > 自增索引\r\n options.id = 'id' in options ? options.id : (\r\n elem.attr('id') || that.index\r\n );\r\n \r\n // 获取背景色值\r\n that.color = that.elemColorBox.find('.'+ PICKER_TRIG_SPAN)[0].style.background;\r\n \r\n // 相关事件\r\n that.events();\r\n };\r\n\r\n //渲染颜色选择器\r\n Class.prototype.renderPicker = function(){\r\n var that = this\r\n ,options = that.config\r\n ,elemColorBox = that.elemColorBox[0]\r\n \r\n //颜色选择器对象\r\n ,elemPicker = that.elemPicker = $(['
                  '\r\n //颜色面板\r\n ,'
                  '\r\n ,'
                  '\r\n ,'
                  '\r\n ,'
                  '\r\n ,'
                  '\r\n ,'
                  '\r\n ,'
                  '\r\n ,'
                  '\r\n ,'
                  '\r\n ,'
                  '\r\n \r\n //透明度条块\r\n ,'
                  '\r\n ,'
                  '\r\n ,'
                  '\r\n ,'
                  '\r\n ,'
                  '\r\n \r\n //预设颜色列表\r\n ,function(){\r\n if(options.predefine){\r\n var list = ['
                  '];\r\n layui.each(options.colors, function(i, v){\r\n list.push(['
                  3 \r\n ? ' layui-colorpicker-pre-isalpha' \r\n : '') +'\">'\r\n ,'
                  '\r\n ,'
                  '].join(''));\r\n });\r\n list.push('
                  ');\r\n return list.join('');\r\n } else {\r\n return '';\r\n }\r\n }()\r\n \r\n //底部表单元素区域\r\n ,'
                  '\r\n ,'
                  '\r\n ,''\r\n ,'
                  '\r\n ,'
                  '\r\n ,''\r\n ,''\r\n ,''\r\n ,'
                  '].join(''))\r\n \r\n ,elemColorBoxSpan = that.elemColorBox.find('.' + PICKER_TRIG_SPAN)[0];\r\n \r\n //如果当前点击的颜色盒子已经存在选择器,则关闭\r\n if($(ELEM_MAIN)[0] && $(ELEM_MAIN).data('index') == that.index){\r\n that.removePicker(Class.thisElemInd);\r\n } else { //插入颜色选择器\r\n that.removePicker(Class.thisElemInd); \r\n $('body').append(elemPicker);\r\n }\r\n\r\n // 记录当前执行的实例索引\r\n colorpicker.thisId = options.id;\r\n \r\n Class.thisElemInd = that.index; //记录最新打开的选择器索引\r\n Class.thisColor = elemColorBox.style.background //记录最新打开的选择器颜色选中值\r\n \r\n that.position();\r\n that.pickerEvents();\r\n };\r\n\r\n //颜色选择器移除\r\n Class.prototype.removePicker = function(index){\r\n var that = this;\r\n var options = that.config;\r\n var elem = $('#layui-colorpicker'+ (index || that.index));\r\n\r\n if(elem[0]){\r\n elem.remove();\r\n delete colorpicker.thisId;\r\n\r\n // 面板关闭后的回调\r\n typeof options.close === 'function' && options.close(that.color);\r\n }\r\n\r\n return that;\r\n };\r\n \r\n //定位算法\r\n Class.prototype.position = function(){\r\n var that = this\r\n ,options = that.config;\r\n lay.position(that.bindElem || that.elemColorBox[0], that.elemPicker[0], {\r\n position: options.position\r\n ,align: 'center'\r\n });\r\n return that;\r\n };\r\n\r\n //颜色选择器赋值\r\n Class.prototype.val = function(){\r\n var that = this\r\n ,options = that.config\r\n \r\n ,elemColorBox = that.elemColorBox.find('.' + PICKER_TRIG_SPAN)\r\n ,elemPickerInput = that.elemPicker.find('.' + PICKER_INPUT)\r\n ,e = elemColorBox[0]\r\n ,bgcolor = e.style.backgroundColor;\r\n\r\n //判断是否有背景颜色\r\n if(bgcolor){\r\n \r\n //转化成hsb格式\r\n var hsb = RGBToHSB(RGBSTo(bgcolor))\r\n ,type = elemColorBox.attr('lay-type');\r\n \r\n //同步滑块的位置及颜色选择器的选择\r\n that.select(hsb.h, hsb.s, hsb.b);\r\n \r\n // 若格式要求为rgb\r\n if(type === 'torgb'){\r\n elemPickerInput.find('input').val(bgcolor);\r\n } else if(type === 'rgba'){ // 若格式要求为 rgba\r\n var rgb = RGBSTo(bgcolor);\r\n \r\n // 若开启透明度而没有设置,则给默认值\r\n if((bgcolor.match(/[0-9]{1,3}/g) || []).length === 3){\r\n elemPickerInput.find('input').val('rgba('+ rgb.r +', '+ rgb.g +', '+ rgb.b +', 1)');\r\n that.elemPicker.find('.'+ PICKER_ALPHA_SLIDER).css(\"left\", 280);\r\n } else {\r\n elemPickerInput.find('input').val(bgcolor);\r\n var left = bgcolor.slice(bgcolor.lastIndexOf(\",\") + 1, bgcolor.length - 1) * 280;\r\n that.elemPicker.find('.'+ PICKER_ALPHA_SLIDER).css(\"left\", left);\r\n }\r\n \r\n // 设置 span 背景色\r\n that.elemPicker.find('.'+ PICKER_ALPHA_BG)[0].style.background = 'linear-gradient(to right, rgba('+ rgb.r +', '+ rgb.g +', '+ rgb.b +', 0), rgb('+ rgb.r +', '+ rgb.g +', '+ rgb.b +'))'; \r\n } else {\r\n elemPickerInput.find('input').val('#'+ HSBToHEX(hsb));\r\n }\r\n } else {\r\n // 若没有背景颜色则默认到最初始的状态\r\n that.select(0,100,100);\r\n elemPickerInput.find('input').val(\"\");\r\n that.elemPicker.find('.'+ PICKER_ALPHA_BG)[0].style.background = '';\r\n that.elemPicker.find('.'+ PICKER_ALPHA_SLIDER).css(\"left\", 280);\r\n }\r\n };\r\n\r\n //颜色选择器滑动 / 点击\r\n Class.prototype.side = function(){\r\n var that = this\r\n ,options = that.config\r\n \r\n ,span = that.elemColorBox.find('.' + PICKER_TRIG_SPAN)\r\n ,type = span.attr('lay-type')\r\n\r\n ,side = that.elemPicker.find('.' + PICKER_SIDE)\r\n ,slider = that.elemPicker.find('.' + PICKER_SIDE_SLIDER)\r\n ,basis = that.elemPicker.find('.' + PICKER_BASIS)\r\n ,choose = that.elemPicker.find('.' + PICKER_BASIS_CUR)\r\n ,alphacolor = that.elemPicker.find('.' + PICKER_ALPHA_BG)\r\n ,alphaslider = that.elemPicker.find('.' + PICKER_ALPHA_SLIDER)\r\n \r\n ,_h = slider[0].offsetTop/180*360\r\n ,_b = 100 - (choose[0].offsetTop + 3)/180*100\r\n ,_s = (choose[0].offsetLeft + 3)/260*100\r\n ,_a = Math.round(alphaslider[0].offsetLeft/280*100)/100 \r\n \r\n ,i = that.elemColorBox.find('.' + PICKER_TRIG_I)\r\n ,pre = that.elemPicker.find('.layui-colorpicker-pre').children('div')\r\n\r\n ,change = function(x,y,z,a){\r\n that.select(x, y, z);\r\n var rgb = HSBToRGB({h:x, s:y, b:z});\r\n var color = HSBToHEX({h:x, s:y, b:z});\r\n var elemInput = that.elemPicker.find('.' + PICKER_INPUT).find('input');\r\n\r\n i.addClass(ICON_PICKER_DOWN).removeClass(ICON_PICKER_CLOSE);\r\n span[0].style.background = 'rgb('+ rgb.r +', '+ rgb.g +', '+ rgb.b +')';\r\n\r\n if(type === 'torgb'){\r\n elemInput.val('rgb('+ rgb.r +', '+ rgb.g +', '+ rgb.b +')');\r\n } else if(type === 'rgba'){\r\n var left = a * 280;\r\n alphaslider.css(\"left\", left);\r\n elemInput.val('rgba('+ rgb.r +', '+ rgb.g +', '+ rgb.b +', '+ a +')');\r\n span[0].style.background = 'rgba('+ rgb.r +', '+ rgb.g +', '+ rgb.b +', '+ a +')';\r\n alphacolor[0].style.background = 'linear-gradient(to right, rgba('+ rgb.r +', '+ rgb.g +', '+ rgb.b +', 0), rgb('+ rgb.r +', '+ rgb.g +', '+ rgb.b +'))'\r\n } else {\r\n elemInput.val('#'+ color);\r\n }\r\n \r\n //回调更改的颜色\r\n options.change && options.change($.trim(that.elemPicker.find('.' + PICKER_INPUT).find('input').val()));\r\n }\r\n\r\n //拖拽元素\r\n ,elemMove = $(['
                  '].join(''))\r\n ,createMoveElem = function(call){\r\n $('#LAY-colorpicker-moving')[0] || $('body').append(elemMove);\r\n elemMove.on('mousemove', call);\r\n elemMove.on('mouseup', function(){\r\n elemMove.remove();\r\n }).on('mouseleave', function(){\r\n elemMove.remove();\r\n });\r\n };\r\n\r\n //右侧主色选择\r\n slider.on('mousedown', function(e, triggerEvent){\r\n var oldtop = this.offsetTop;\r\n var oldy = e.clientY === undefined ? triggerEvent.clientY : e.clientY;\r\n var move = function(e){\r\n var top = oldtop + (e.clientY - oldy)\r\n ,maxh = side[0].offsetHeight;\r\n if(top < 0)top = 0;\r\n if(top > maxh)top = maxh;\r\n var h = top/180*360;\r\n _h = h;\r\n change(h, _s, _b, _a);\r\n e.preventDefault();\r\n };\r\n \r\n layui.stope(e);\r\n createMoveElem(move);\r\n e.preventDefault();\r\n });\r\n \r\n side.on('mousedown', function(e){\r\n var top = e.clientY - $(this).offset().top + $win.scrollTop();\r\n if(top < 0)top = 0;\r\n if(top > this.offsetHeight) top = this.offsetHeight; \r\n var h = top/180*360;\r\n _h = h;\r\n change(h, _s, _b, _a); \r\n e.preventDefault();\r\n slider.trigger('mousedown', e);\r\n });\r\n \r\n //中间小圆点颜色选择\r\n choose.on('mousedown', function(e, triggerEvent){\r\n var oldtop = this.offsetTop;\r\n var oldleft = this.offsetLeft;\r\n var oldy = e.clientY === undefined ? triggerEvent.clientY : e.clientY;\r\n var oldx = e.clientX === undefined ? triggerEvent.clientX : e.clientX;\r\n var move = function(e){\r\n var top = oldtop + (e.clientY - oldy)\r\n ,left = oldleft + (e.clientX - oldx)\r\n ,maxh = basis[0].offsetHeight\r\n ,maxw = basis[0].offsetWidth;\r\n if(top < 0)top = 0;\r\n if(top > maxh)top = maxh;\r\n if(left < 0)left = 0;\r\n if(left > maxw)left = maxw;\r\n var s = left/260*100\r\n ,b = 100 - top/180*100;\r\n _b = b;\r\n _s = s;\r\n change(_h, s, b, _a); \r\n e.preventDefault();\r\n };\r\n layui.stope(e);\r\n createMoveElem(move);\r\n e.preventDefault();\r\n });\r\n \r\n basis.on('mousedown', function(e){\r\n var top = e.clientY - $(this).offset().top + $win.scrollTop()\r\n ,left = e.clientX - $(this).offset().left + $win.scrollLeft()\r\n if(top < 0)top = 0;\r\n if(top > this.offsetHeight)top = this.offsetHeight;\r\n if(left < 0)left = 0;\r\n if(left > this.offsetWidth)left = this.offsetWidth;\r\n var s = left/260*100\r\n ,b = 100 - top/180*100;\r\n _b = b;\r\n _s = s;\r\n change(_h, s, b, _a); \r\n layui.stope(e);\r\n e.preventDefault();\r\n choose.trigger('mousedown', e);\r\n });\r\n \r\n //底部透明度选择\r\n alphaslider.on('mousedown', function(e, triggerEvent){\r\n var oldleft = this.offsetLeft;\r\n var oldx = e.clientX === undefined ? triggerEvent.clientX : e.clientX;\r\n var move = function(e){\r\n var left = oldleft + (e.clientX - oldx)\r\n ,maxw = alphacolor[0].offsetWidth;\r\n if(left < 0)left = 0;\r\n if(left > maxw)left = maxw;\r\n var a = Math.round(left /280*100) /100;\r\n _a = a;\r\n change(_h, _s, _b, a); \r\n e.preventDefault();\r\n };\r\n \r\n layui.stope(e);\r\n createMoveElem(move);\r\n e.preventDefault();\r\n });\r\n alphacolor.on('mousedown', function(e){\r\n var left = e.clientX - $(this).offset().left\r\n if(left < 0)left = 0;\r\n if(left > this.offsetWidth)left = this.offsetWidth;\r\n var a = Math.round(left /280*100) /100;\r\n _a = a;\r\n change(_h, _s, _b, a); \r\n e.preventDefault();\r\n alphaslider.trigger('mousedown', e);\r\n });\r\n \r\n //预定义颜色选择\r\n pre.each(function(){\r\n $(this).on('click', function(){\r\n $(this).parent('.layui-colorpicker-pre').addClass('selected').siblings().removeClass('selected');\r\n var color = this.style.backgroundColor\r\n ,hsb = RGBToHSB(RGBSTo(color))\r\n ,a = color.slice(color.lastIndexOf(\",\") + 1, color.length - 1),left;\r\n _h = hsb.h;\r\n _s = hsb.s;\r\n _b = hsb.b;\r\n if((color.match(/[0-9]{1,3}/g) || []).length === 3) a = 1;\r\n _a = a;\r\n left = a * 280;\r\n change(hsb.h, hsb.s, hsb.b, a);\r\n })\r\n });\r\n\r\n if(!lay.touchEventsSupported()) return;\r\n // 触摸事件模拟\r\n layui.each([\r\n {elem: side, eventType: 'mousedown'},\r\n {elem: alphacolor, eventType: 'mousedown'},\r\n {elem: basis, eventType: 'mousedown'}\r\n ], function(i, obj){\r\n lay.touchSwipe(obj.elem, {\r\n onTouchMove: function(e){\r\n touchHandler(e, obj.eventType)\r\n }\r\n })\r\n })\r\n\r\n function touchHandler(event, eventType) {\r\n var pointer = event.touches[0];\r\n var simulatedEvent = document.createEvent(\"MouseEvent\");\r\n\r\n simulatedEvent.initMouseEvent(eventType, \r\n true, true, window, 1, \r\n pointer.screenX, pointer.screenY,pointer.clientX, pointer.clientY, \r\n false, false, false, false, 0, null\r\n );\r\n pointer.target.dispatchEvent(simulatedEvent);\r\n }\r\n };\r\n\r\n //颜色选择器hsb转换\r\n Class.prototype.select = function(h, s, b, type){\r\n var that = this;\r\n var options = that.config;\r\n var hex = HSBToHEX({h:h, s:100, b:100});\r\n var color = HSBToHEX({h:h, s:s, b:b});\r\n var sidetop = h/360*180;\r\n var top = 180 - b/100*180;\r\n var left = s/100*260;\r\n var basisElem = that.elemPicker.find('.' + PICKER_BASIS)[0];\r\n \r\n that.elemPicker.find('.' + PICKER_SIDE_SLIDER).css(\"top\", sidetop); //滑块的top\r\n basisElem.style.background = '#' + hex; //颜色选择器的背景\r\n \r\n //选择器的top left\r\n that.elemPicker.find('.' + PICKER_BASIS_CUR).css({\r\n \"top\": top / basisElem.offsetHeight * 100 + '%',\r\n \"left\": left / basisElem.offsetWidth * 100 + '%' \r\n });\r\n \r\n // if(type === 'change') return;\r\n\r\n // 选中的颜色\r\n // that.elemPicker.find('.' + PICKER_INPUT).find('input').val('#'+ color);\r\n };\r\n \r\n Class.prototype.pickerEvents = function(){\r\n var that = this\r\n ,options = that.config\r\n \r\n ,elemColorBoxSpan = that.elemColorBox.find('.' + PICKER_TRIG_SPAN) //颜色盒子\r\n ,elemPickerInput = that.elemPicker.find('.' + PICKER_INPUT + ' input') //颜色选择器表单\r\n \r\n ,pickerEvents = {\r\n //清空\r\n clear: function(othis){\r\n elemColorBoxSpan[0].style.background ='';\r\n that.elemColorBox.find('.' + PICKER_TRIG_I).removeClass(ICON_PICKER_DOWN).addClass(ICON_PICKER_CLOSE);\r\n that.color = '';\r\n \r\n options.done && options.done('');\r\n that.removePicker();\r\n }\r\n \r\n //确认\r\n ,confirm: function(othis, change){\r\n var value = $.trim(elemPickerInput.val())\r\n ,colorValue\r\n ,hsb;\r\n \r\n if(value.indexOf(',') > -1){\r\n hsb = RGBToHSB(RGBSTo(value));\r\n that.select(hsb.h, hsb.s, hsb.b);\r\n elemColorBoxSpan[0].style.background = (colorValue = '#' + HSBToHEX(hsb)); \r\n \r\n if((value.match(/[0-9]{1,3}/g) || []).length > 3 && elemColorBoxSpan.attr('lay-type') === 'rgba'){\r\n var left = value.slice(value.lastIndexOf(\",\") + 1, value.length - 1) * 280;\r\n that.elemPicker.find('.' + PICKER_ALPHA_SLIDER).css(\"left\", left);\r\n elemColorBoxSpan[0].style.background = value;\r\n colorValue = value;\r\n }\r\n } else {\r\n hsb = HEXToHSB(value);\r\n elemColorBoxSpan[0].style.background = (colorValue = '#' + HSBToHEX(hsb)); \r\n that.elemColorBox.find('.' + PICKER_TRIG_I).removeClass(ICON_PICKER_CLOSE).addClass(ICON_PICKER_DOWN);\r\n }\r\n \r\n if(change === 'change'){\r\n that.select(hsb.h, hsb.s, hsb.b, change);\r\n options.change && options.change(colorValue);\r\n return;\r\n }\r\n that.color = value;\r\n \r\n options.done && options.done(value);\r\n that.removePicker(); \r\n }\r\n };\r\n \r\n //选择器面板点击事件\r\n that.elemPicker.on('click', '*[colorpicker-events]', function(){\r\n var othis = $(this)\r\n ,attrEvent = othis.attr('colorpicker-events');\r\n pickerEvents[attrEvent] && pickerEvents[attrEvent].call(this, othis);\r\n });\r\n \r\n //输入框事件\r\n elemPickerInput.on('keyup', function(e){\r\n var othis = $(this);\r\n pickerEvents.confirm.call(this, othis, e.keyCode === 13 ? null : 'change');\r\n });\r\n }\r\n\r\n // 颜色选择器输入\r\n Class.prototype.events = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 弹出颜色选择器\r\n that.elemColorBox.on('click' , function(){\r\n that.renderPicker();\r\n if($(ELEM_MAIN)[0]){\r\n that.val();\r\n that.side();\r\n }\r\n });\r\n };\r\n\r\n //全局事件\r\n (function(){\r\n //绑定关闭控件事件\r\n $doc.on(clickOrMousedown, function(e){\r\n if(!colorpicker.thisId) return;\r\n var that = thisModule.getThis(colorpicker.thisId);\r\n if(!that) return;\r\n\r\n var options = that.config;\r\n var elemColorBoxSpan = that.elemColorBox.find('.' + PICKER_TRIG_SPAN);\r\n\r\n //如果点击的元素是颜色框\r\n if($(e.target).hasClass(ELEM) \r\n || $(e.target).parents('.'+ELEM)[0]\r\n ) return; \r\n \r\n //如果点击的元素是选择器\r\n if($(e.target).hasClass(ELEM_MAIN.replace(/\\./g, '')) \r\n || $(e.target).parents(ELEM_MAIN)[0]\r\n ) return; \r\n \r\n if(!that.elemPicker) return;\r\n \r\n if(that.color){\r\n var hsb = RGBToHSB(RGBSTo(that.color));\r\n that.select(hsb.h, hsb.s, hsb.b); \r\n } else {\r\n that.elemColorBox.find('.' + PICKER_TRIG_I).removeClass(ICON_PICKER_DOWN).addClass(ICON_PICKER_CLOSE);\r\n }\r\n elemColorBoxSpan[0].style.background = that.color || '';\r\n \r\n // 取消选择的回调\r\n typeof options.cancel === 'function' && options.cancel(that.color);\r\n\r\n // 移除面板\r\n that.removePicker();\r\n });\r\n\r\n //自适应定位\r\n $win.on('resize', function(){\r\n if(!colorpicker.thisId) return;\r\n var that = thisModule.getThis(colorpicker.thisId);\r\n if(!that) return;\r\n\r\n if(!that.elemPicker || !$(ELEM_MAIN)[0]){\r\n return false;\r\n }\r\n that.position();\r\n });\r\n })();\r\n\r\n // 记录所有实例\r\n thisModule.that = {}; // 记录所有实例对象\r\n \r\n // 获取当前实例对象\r\n thisModule.getThis = function(id){\r\n var that = thisModule.that[id];\r\n if(!that) hint.error(id ? (MOD_NAME +' instance with ID \\''+ id +'\\' not found') : 'ID argument required');\r\n return that;\r\n };\r\n \r\n //核心入口\r\n colorpicker.render = function(options){\r\n var inst = new Class(options);\r\n return thisModule.call(inst);\r\n };\r\n \r\n exports(MOD_NAME, colorpicker);\r\n});\r\n","/**\r\n * element\r\n * 常用元素操作组件\r\n */\r\n \r\nlayui.define('jquery', function(exports){\r\n 'use strict';\r\n \r\n var $ = layui.$;\r\n var hint = layui.hint();\r\n var device = layui.device();\r\n \r\n var MOD_NAME = 'element';\r\n var THIS = 'layui-this';\r\n var SHOW = 'layui-show';\r\n var TITLE = '.layui-tab-title';\r\n \r\n var Element = function(){\r\n this.config = {};\r\n };\r\n \r\n // 全局设置\r\n Element.prototype.set = function(options){\r\n var that = this;\r\n $.extend(true, that.config, options);\r\n return that;\r\n };\r\n \r\n // 表单事件\r\n Element.prototype.on = function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n };\r\n \r\n // 外部 Tab 新增\r\n Element.prototype.tabAdd = function(filter, options){\r\n var tabElem = $('.layui-tab[lay-filter='+ filter +']');\r\n var titElem = tabElem.children(TITLE);\r\n var barElem = titElem.children('.layui-tab-bar');\r\n var contElem = tabElem.children('.layui-tab-content');\r\n var li = ' 0) layAttr.unshift(''); //向前插,预留空格\r\n return layAttr.join(' ');\r\n }() +'>'+ (options.title || 'unnaming') +'';\r\n \r\n barElem[0] ? barElem.before(li) : titElem.append(li);\r\n contElem.append('
                  '+ (options.content || '') +'
                  ');\r\n // call.hideTabMore(true);\r\n // 是否添加即切换\r\n options.change && this.tabChange(filter, options.id);\r\n titElem.data('LAY_TAB_CHANGE', options.change);\r\n call.tabAuto(options.change ? 'change' : null);\r\n return this;\r\n };\r\n \r\n // 外部 Tab 删除\r\n Element.prototype.tabDelete = function(filter, layid){\r\n var tabElem = $('.layui-tab[lay-filter='+ filter +']');\r\n var titElem = tabElem.children(TITLE);\r\n var liElem = titElem.find('>li[lay-id=\"'+ layid +'\"]');\r\n call.tabDelete(null, liElem);\r\n return this;\r\n };\r\n \r\n // 外部 Tab 切换\r\n Element.prototype.tabChange = function(filter, layid){\r\n var tabElem = $('.layui-tab[lay-filter='+ filter +']');\r\n var titElem = tabElem.children(TITLE);\r\n var liElem = titElem.find('>li[lay-id=\"'+ layid +'\"]');\r\n\r\n call.tabClick.call(liElem[0], {\r\n liElem: liElem\r\n });\r\n return this;\r\n };\r\n \r\n // 自定义 Tab 选项卡\r\n Element.prototype.tab = function(options){\r\n options = options || {};\r\n dom.on('click', options.headerElem, function(e){\r\n var index = $(options.headerElem).index($(this));\r\n call.tabClick.call(this, {\r\n index: index,\r\n options: options\r\n });\r\n });\r\n };\r\n \r\n \r\n // 动态改变进度条\r\n Element.prototype.progress = function(filter, percent){\r\n var ELEM = 'layui-progress';\r\n var elem = $('.'+ ELEM +'[lay-filter='+ filter +']');\r\n var elemBar = elem.find('.'+ ELEM +'-bar');\r\n var text = elemBar.find('.'+ ELEM +'-text');\r\n\r\n elemBar.css('width', function(){\r\n return /^.+\\/.+$/.test(percent) \r\n ? (new Function('return '+ percent)() * 100) + '%'\r\n : percent;\r\n }).attr('lay-percent', percent);\r\n text.text(percent);\r\n return this;\r\n };\r\n \r\n var NAV_ELEM = '.layui-nav';\r\n var NAV_ITEM = 'layui-nav-item';\r\n var NAV_BAR = 'layui-nav-bar';\r\n var NAV_TREE = 'layui-nav-tree';\r\n var NAV_CHILD = 'layui-nav-child';\r\n var NAV_CHILD_C = 'layui-nav-child-c';\r\n var NAV_MORE = 'layui-nav-more';\r\n var NAV_DOWN = 'layui-icon-down';\r\n var NAV_ANIM = 'layui-anim layui-anim-upbit';\r\n \r\n // 基础事件体\r\n var call = {\r\n // Tab 点击\r\n tabClick: function(obj){\r\n obj = obj || {};\r\n var options = obj.options || {};\r\n var othis = obj.liElem || $(this);\r\n var parents = options.headerElem \r\n ? othis.parent() \r\n : othis.parents('.layui-tab').eq(0);\r\n var item = options.bodyElem \r\n ? $(options.bodyElem) \r\n : parents.children('.layui-tab-content').children('.layui-tab-item');\r\n var elemA = othis.find('a');\r\n var isJump = elemA.attr('href') !== 'javascript:;' && elemA.attr('target') === '_blank'; // 是否存在跳转\r\n var unselect = typeof othis.attr('lay-unselect') === 'string'; // 是否禁用选中\r\n var filter = parents.attr('lay-filter');\r\n var hasId = othis.attr('lay-id');\r\n\r\n // 下标\r\n var index = 'index' in obj \r\n ? obj.index \r\n : othis.parent().children('li').index(othis);\r\n \r\n // 执行切换\r\n if(!(isJump || unselect)){\r\n othis.addClass(THIS).siblings().removeClass(THIS);\r\n if(hasId){\r\n var contentElem = item.filter('[lay-id=\"' + hasId + '\"]');\r\n contentElem = contentElem.length ? contentElem : item.eq(index);\r\n contentElem.addClass(SHOW).siblings().removeClass(SHOW);\r\n }else{\r\n item.eq(index).addClass(SHOW).siblings().removeClass(SHOW);\r\n }\r\n }\r\n \r\n layui.event.call(this, MOD_NAME, 'tab('+ filter +')', {\r\n elem: parents,\r\n index: index,\r\n id: hasId\r\n });\r\n }\r\n \r\n // Tab 删除\r\n ,tabDelete: function(e, othis){\r\n var li = othis || $(this).parent();\r\n var index = li.parent().children('li').index(li);\r\n var tabElem = li.closest('.layui-tab');\r\n var item = tabElem.children('.layui-tab-content').children('.layui-tab-item');\r\n var filter = tabElem.attr('lay-filter');\r\n var hasId = li.attr('lay-id');\r\n\r\n var shouldClose = layui.event.call(li[0], MOD_NAME, 'tabBeforeDelete('+ filter +')', {\r\n elem: tabElem,\r\n index: index,\r\n id: hasId\r\n });\r\n if(shouldClose === false) return;\r\n \r\n if(li.hasClass(THIS)){\r\n if (li.next()[0] && li.next().is('li')){\r\n call.tabClick.call(li.next()[0], {\r\n index: index + 1\r\n });\r\n } else if (li.prev()[0] && li.prev().is('li')){\r\n call.tabClick.call(li.prev()[0], null, index - 1);\r\n }\r\n }\r\n \r\n li.remove();\r\n if(hasId){\r\n var contentElem = item.filter('[lay-id=\"' + hasId + '\"]');\r\n contentElem = contentElem.length ? contentElem : item.eq(index)\r\n contentElem.remove()\r\n }else{\r\n item.eq(index).remove();\r\n }\r\n setTimeout(function(){\r\n call.tabAuto();\r\n }, 50);\r\n \r\n layui.event.call(this, MOD_NAME, 'tabDelete('+ filter +')', {\r\n elem: tabElem,\r\n index: index,\r\n id: hasId\r\n });\r\n }\r\n \r\n // Tab 自适应\r\n ,tabAuto: function(spread){\r\n var SCROLL = 'layui-tab-scroll';\r\n var MORE = 'layui-tab-more';\r\n var BAR = 'layui-tab-bar';\r\n var CLOSE = 'layui-tab-close';\r\n var that = this;\r\n \r\n $('.layui-tab').each(function(){\r\n var othis = $(this);\r\n var title = othis.children('.layui-tab-title');\r\n var item = othis.children('.layui-tab-content').children('.layui-tab-item');\r\n var STOPE = 'lay-stope=\"tabmore\"';\r\n var span = $('');\r\n\r\n if(that === window && device.ie != 8){\r\n // call.hideTabMore(true)\r\n }\r\n \r\n // 开启关闭图标\r\n var allowclose = othis.attr('lay-allowclose');\r\n if(allowclose && allowclose !== 'false'){\r\n title.find('li').each(function(){\r\n var li = $(this);\r\n if(!li.find('.'+CLOSE)[0] && li.attr('lay-allowclose') !== 'false'){\r\n var close = $('');\r\n close.on('click', call.tabDelete);\r\n li.append(close);\r\n }\r\n });\r\n }\r\n \r\n if(typeof othis.attr('lay-unauto') === 'string') return;\r\n \r\n // 响应式\r\n if(\r\n title.prop('scrollWidth') > title.outerWidth() + 1 || (\r\n title.find('li').length && title.height() > function(height){\r\n return height + height/2;\r\n }(title.find('li').eq(0).height())\r\n )\r\n ){\r\n // 若执行是来自于切换,则自动展开\r\n (\r\n spread === 'change' && title.data('LAY_TAB_CHANGE')\r\n ) && title.addClass(MORE);\r\n \r\n if(title.find('.'+BAR)[0]) return;\r\n title.append(span);\r\n othis.attr('overflow', '');\r\n\r\n // 展开图标事件\r\n span.on('click', function(e){\r\n var isSpread = title.hasClass(MORE);\r\n title[isSpread ? 'removeClass' : 'addClass'](MORE);\r\n });\r\n } else {\r\n title.find('.'+ BAR).remove();\r\n othis.removeAttr('overflow');\r\n }\r\n });\r\n }\r\n // 隐藏更多 Tab\r\n ,hideTabMore: function(e){\r\n var tsbTitle = $('.layui-tab-title');\r\n if(e === true || $(e.target).attr('lay-stope') !== 'tabmore'){\r\n tsbTitle.removeClass('layui-tab-more');\r\n tsbTitle.find('.layui-tab-bar').attr('title','');\r\n }\r\n }\r\n \r\n //点击一级菜单\r\n /*\r\n ,clickThis: function(){\r\n var othis = $(this), parents = othis.parents(NAV_ELEM)\r\n ,filter = parents.attr('lay-filter')\r\n ,elemA = othis.find('a')\r\n ,unselect = typeof othis.attr('lay-unselect') === 'string';\r\n\r\n if(othis.find('.'+NAV_CHILD)[0]) return;\r\n \r\n if(!(elemA.attr('href') !== 'javascript:;' && elemA.attr('target') === '_blank') && !unselect){\r\n parents.find('.'+THIS).removeClass(THIS);\r\n othis.addClass(THIS);\r\n }\r\n \r\n layui.event.call(this, MOD_NAME, 'nav('+ filter +')', othis);\r\n }\r\n )\r\n */\r\n \r\n // 点击菜单 - a 标签触发\r\n ,clickThis: function() {\r\n var othis = $(this);\r\n var parents = othis.closest(NAV_ELEM);\r\n var filter = parents.attr('lay-filter');\r\n var parent = othis.parent() ;\r\n var child = othis.siblings('.'+ NAV_CHILD);\r\n var unselect = typeof parent.attr('lay-unselect') === 'string'; // 是否禁用选中\r\n \r\n // 满足点击选中的条件\r\n if (!(othis.attr('href') !== 'javascript:;' && othis.attr('target') === '_blank') && !unselect) {\r\n if (!child[0]) {\r\n parents.find('.'+ THIS).removeClass(THIS);\r\n parent.addClass(THIS);\r\n }\r\n }\r\n \r\n // 若为垂直菜单\r\n if (parents.hasClass(NAV_TREE)) {\r\n var NAV_ITEMED = NAV_ITEM + 'ed'; // 用于标注展开状态\r\n var needExpand = !parent.hasClass(NAV_ITEMED); // 是否执行展开\r\n var ANIM_MS = 200; // 动画过渡毫秒数\r\n\r\n // 动画执行完成后的操作\r\n var complete = function() {\r\n $(this).css({\r\n \"display\": \"\" // 剔除动画生成的 style display,以适配外部样式的状态重置\r\n });\r\n // 避免导航滑块错位\r\n parents.children('.'+ NAV_BAR).css({\r\n opacity: 0\r\n })\r\n };\r\n\r\n // 是否正处于动画中的状态\r\n if (child.is(':animated')) return;\r\n\r\n // 剔除可能存在的 CSS3 动画类\r\n child.removeClass(NAV_ANIM);\r\n\r\n // 若有子菜单,则对其执行展开或收缩\r\n if (child[0]) {\r\n if (needExpand) {\r\n // 先执行 slideDown 动画,再标注展开状态样式,避免元素 `block` 状态导致动画无效\r\n child.slideDown(ANIM_MS, complete);\r\n parent.addClass(NAV_ITEMED);\r\n } else {\r\n // 先取消展开状态样式,再将元素临时显示,避免 `none` 状态导致 slideUp 动画无效\r\n parent.removeClass(NAV_ITEMED);\r\n child.show().slideUp(ANIM_MS, complete);\r\n }\r\n\r\n // 手风琴 --- 收缩兄弟展开项\r\n if (typeof parents.attr('lay-accordion') === 'string' || parents.attr('lay-shrink') === 'all') {\r\n var parentSibs = parent.siblings('.'+ NAV_ITEMED);\r\n parentSibs.removeClass(NAV_ITEMED);\r\n parentSibs.children('.'+ NAV_CHILD).show().stop().slideUp(ANIM_MS, complete);\r\n }\r\n }\r\n }\r\n \r\n layui.event.call(this, MOD_NAME, 'nav('+ filter +')', othis);\r\n }\r\n \r\n // 折叠面板\r\n ,collapse: function(){\r\n var othis = $(this);\r\n var icon = othis.find('.layui-colla-icon');\r\n var elemCont = othis.siblings('.layui-colla-content');\r\n var parents = othis.parents('.layui-collapse').eq(0);\r\n var filter = parents.attr('lay-filter');\r\n var isNone = elemCont.css('display') === 'none';\r\n \r\n // 是否手风琴\r\n if(typeof parents.attr('lay-accordion') === 'string'){\r\n var show = parents.children('.layui-colla-item').children('.'+SHOW);\r\n show.siblings('.layui-colla-title').children('.layui-colla-icon').html('');\r\n show.removeClass(SHOW);\r\n }\r\n \r\n elemCont[isNone ? 'addClass' : 'removeClass'](SHOW);\r\n icon.html(isNone ? '' : '');\r\n \r\n layui.event.call(this, MOD_NAME, 'collapse('+ filter +')', {\r\n title: othis\r\n ,content: elemCont\r\n ,show: isNone\r\n });\r\n }\r\n };\r\n \r\n // 初始化元素操作\r\n Element.prototype.init = function(type, filter){\r\n var that = this, elemFilter = function(){\r\n return filter ? ('[lay-filter=\"' + filter +'\"]') : '';\r\n }(), items = {\r\n \r\n // Tab 选项卡\r\n tab: function(){\r\n call.tabAuto.call({});\r\n }\r\n \r\n // 导航菜单\r\n ,nav: function(){\r\n var TIME = 200;\r\n var timer = {};\r\n var timerMore = {};\r\n var timeEnd = {};\r\n var NAV_TITLE = 'layui-nav-title';\r\n \r\n // 滑块跟随\r\n var follow = function(bar, nav, index) {\r\n var othis = $(this);\r\n var child = othis.find('.'+NAV_CHILD);\r\n\r\n // 是否垂直导航菜单\r\n if (nav.hasClass(NAV_TREE)) {\r\n // 无子菜单时跟随\r\n if (!child[0]) {\r\n var thisA = othis.children('.'+ NAV_TITLE);\r\n bar.css({\r\n top: othis.offset().top - nav.offset().top,\r\n height: (thisA[0] ? thisA : othis).outerHeight(),\r\n opacity: 1\r\n });\r\n }\r\n } else {\r\n child.addClass(NAV_ANIM);\r\n \r\n // 若居中对齐\r\n if (child.hasClass(NAV_CHILD_C)) {\r\n child.css({\r\n left: -(child.outerWidth() - othis.width()) / 2\r\n });\r\n }\r\n \r\n // 滑块定位\r\n if (child[0]) { // 若有子菜单,则滑块消失\r\n bar.css({\r\n left: bar.position().left + bar.width() / 2,\r\n width: 0,\r\n opacity: 0\r\n });\r\n } else { // bar 跟随\r\n bar.css({\r\n left: othis.position().left + parseFloat(othis.css('marginLeft')),\r\n top: othis.position().top + othis.height() - bar.height()\r\n });\r\n }\r\n \r\n // 渐显滑块并适配宽度\r\n timer[index] = setTimeout(function() {\r\n bar.css({\r\n width: child[0] ? 0 : othis.width(),\r\n opacity: child[0] ? 0 : 1\r\n });\r\n }, device.ie && device.ie < 10 ? 0 : TIME);\r\n \r\n // 显示子菜单\r\n clearTimeout(timeEnd[index]);\r\n if (child.css('display') === 'block') {\r\n clearTimeout(timerMore[index]);\r\n }\r\n timerMore[index] = setTimeout(function(){\r\n child.addClass(SHOW);\r\n othis.find('.'+NAV_MORE).addClass(NAV_MORE+'d');\r\n }, 300);\r\n }\r\n };\r\n \r\n // 遍历导航\r\n $(NAV_ELEM + elemFilter).each(function(index) {\r\n var othis = $(this);\r\n var bar = $('');\r\n var itemElem = othis.find('.'+NAV_ITEM);\r\n \r\n // hover 滑动效果\r\n if (!othis.find('.'+NAV_BAR)[0]) {\r\n othis.append(bar);\r\n ( othis.hasClass(NAV_TREE)\r\n ? itemElem.find('dd,>.'+ NAV_TITLE) \r\n : itemElem\r\n ).on('mouseenter', function() {\r\n follow.call(this, bar, othis, index);\r\n }).on('mouseleave', function() { // 鼠标移出\r\n // 是否为垂直导航\r\n if (othis.hasClass(NAV_TREE)) {\r\n bar.css({\r\n height: 0,\r\n opacity: 0\r\n });\r\n } else {\r\n // 隐藏子菜单\r\n clearTimeout(timerMore[index]);\r\n timerMore[index] = setTimeout(function(){\r\n othis.find('.'+ NAV_CHILD).removeClass(SHOW);\r\n othis.find('.'+ NAV_MORE).removeClass(NAV_MORE +'d');\r\n }, 300);\r\n }\r\n });\r\n\r\n // 鼠标离开当前菜单时\r\n othis.on('mouseleave', function() {\r\n clearTimeout(timer[index])\r\n timeEnd[index] = setTimeout(function() {\r\n if (!othis.hasClass(NAV_TREE)) {\r\n bar.css({\r\n width: 0,\r\n left: bar.position().left + bar.width() / 2,\r\n opacity: 0\r\n });\r\n }\r\n }, TIME);\r\n });\r\n }\r\n \r\n // 展开子菜单\r\n itemElem.find('a').each(function() {\r\n var thisA = $(this);\r\n var parent = thisA.parent();\r\n var child = thisA.siblings('.'+ NAV_CHILD);\r\n \r\n // 输出小箭头\r\n if (child[0] && !thisA.children('.'+ NAV_MORE)[0]) {\r\n thisA.append('');\r\n }\r\n \r\n thisA.off('click', call.clickThis).on('click', call.clickThis); // 点击菜单\r\n });\r\n });\r\n }\r\n \r\n //面包屑\r\n ,breadcrumb: function(){\r\n var ELEM = '.layui-breadcrumb';\r\n \r\n $(ELEM + elemFilter).each(function(){\r\n var othis = $(this)\r\n ,ATTE_SPR = 'lay-separator'\r\n ,separator = othis.attr(ATTE_SPR) || '/'\r\n ,aNode = othis.find('a');\r\n if(aNode.next('span['+ ATTE_SPR +']')[0]) return;\r\n aNode.each(function(index){\r\n if(index === aNode.length - 1) return;\r\n $(this).after(''+ separator +'');\r\n });\r\n othis.css('visibility', 'visible');\r\n });\r\n }\r\n \r\n //进度条\r\n ,progress: function(){\r\n var ELEM = 'layui-progress';\r\n $('.' + ELEM + elemFilter).each(function(){\r\n var othis = $(this)\r\n ,elemBar = othis.find('.layui-progress-bar')\r\n ,percent = elemBar.attr('lay-percent');\r\n\r\n elemBar.css('width', function(){\r\n return /^.+\\/.+$/.test(percent) \r\n ? (new Function('return '+ percent)() * 100) + '%'\r\n : percent;\r\n });\r\n \r\n if(othis.attr('lay-showpercent')){\r\n setTimeout(function(){\r\n elemBar.html(''+ percent +'');\r\n },350);\r\n }\r\n });\r\n }\r\n \r\n //折叠面板\r\n ,collapse: function(){\r\n var ELEM = 'layui-collapse';\r\n \r\n $('.' + ELEM + elemFilter).each(function(){\r\n var elemItem = $(this).find('.layui-colla-item')\r\n elemItem.each(function(){\r\n var othis = $(this)\r\n ,elemTitle = othis.find('.layui-colla-title')\r\n ,elemCont = othis.find('.layui-colla-content')\r\n ,isNone = elemCont.css('display') === 'none';\r\n \r\n //初始状态\r\n elemTitle.find('.layui-colla-icon').remove();\r\n elemTitle.append(''+ (isNone ? '' : '') +'');\r\n\r\n //点击标题\r\n elemTitle.off('click', call.collapse).on('click', call.collapse);\r\n }); \r\n \r\n });\r\n }\r\n };\r\n\r\n return items[type] ? items[type]() : layui.each(items, function(index, item){\r\n item();\r\n });\r\n };\r\n \r\n Element.prototype.render = Element.prototype.init;\r\n\r\n var element = new Element();\r\n var dom = $(document);\r\n \r\n $(function(){\r\n element.render();\r\n });\r\n\r\n dom.on('click', '.layui-tab-title li', call.tabClick); // Tab 切换\r\n // dom.on('click', call.hideTabMore); // 隐藏展开的 Tab\r\n $(window).on('resize', call.tabAuto); // 自适应\r\n \r\n exports(MOD_NAME, element);\r\n});\r\n\r\n","/**\r\n * upload\r\n * 上传组件\r\n */\r\n \r\nlayui.define(['lay', 'layer'], function(exports){\r\n \"use strict\";\r\n \r\n var $ = layui.$;\r\n var lay = layui.lay;\r\n var layer = layui.layer;\r\n var device = layui.device();\r\n\r\n // 模块名\r\n var MOD_NAME = 'upload';\r\n var MOD_INDEX = 'layui_'+ MOD_NAME +'_index'; // 模块索引名\r\n\r\n // 外部接口\r\n var upload = {\r\n config: {}, // 全局配置项\r\n index: layui[MOD_NAME] ? (layui[MOD_NAME].index + 10000) : 0, // 索引\r\n // 设置全局项\r\n set: function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n },\r\n // 事件\r\n on: function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n }\r\n };\r\n \r\n // 操作当前实例\r\n var thisModule = function(){\r\n var that = this;\r\n var options = that.config;\r\n var id = options.id;\r\n\r\n thisModule.that[id] = that; // 记录当前实例对象\r\n\r\n return {\r\n upload: function(files){\r\n that.upload.call(that, files);\r\n },\r\n reload: function(options){\r\n that.reload.call(that, options);\r\n },\r\n config: that.config\r\n }\r\n };\r\n \r\n // 字符常量\r\n var ELEM = 'layui-upload';\r\n var THIS = 'layui-this';\r\n var SHOW = 'layui-show';\r\n var HIDE = 'layui-hide';\r\n var DISABLED = 'layui-disabled';\r\n \r\n var ELEM_FILE = 'layui-upload-file';\r\n var ELEM_FORM = 'layui-upload-form';\r\n var ELEM_IFRAME = 'layui-upload-iframe';\r\n var ELEM_CHOOSE = 'layui-upload-choose';\r\n var ELEM_DRAG = 'layui-upload-drag';\r\n var UPLOADING = 'UPLOADING';\r\n \r\n // 构造器\r\n var Class = function(options){\r\n var that = this;\r\n that.index = ++upload.index;\r\n that.config = $.extend({}, that.config, upload.config, options);\r\n that.render();\r\n };\r\n \r\n // 默认配置\r\n Class.prototype.config = {\r\n accept: 'images', // 允许上传的文件类型:images/file/video/audio\r\n exts: '', // 允许上传的文件后缀名\r\n auto: true, // 是否选完文件后自动上传\r\n bindAction: '', // 手动上传触发的元素\r\n url: '', // 上传地址\r\n force: '', // 强制规定返回的数据格式,目前只支持是否强制 json\r\n field: 'file', // 文件字段名\r\n acceptMime: '', // 筛选出的文件类型,默认为所有文件\r\n method: 'post', // 请求上传的 http 类型\r\n data: {}, // 请求上传的额外参数\r\n drag: true, // 是否允许拖拽上传\r\n size: 0, // 文件限制大小,默认不限制\r\n number: 0, // 允许同时上传的文件数,默认不限制\r\n multiple: false, // 是否允许多文件上传,不支持 ie8-9\r\n text: { // 自定义提示文本\r\n \"cross-domain\": \"Cross-domain requests are not supported\", // 跨域\r\n \"data-format-error\": \"Please return JSON data format\", // 数据格式错误\r\n \"check-error\": \"\", // 文件格式校验失败\r\n \"error\": \"\", // 上传失败\r\n \"limit-number\": null, // 限制 number 属性的提示 --- function\r\n \"limit-size\": null // 限制 size 属性的提示 --- function\r\n }\r\n };\r\n\r\n // 重载实例\r\n Class.prototype.reload = function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n that.render(true);\r\n };\r\n \r\n // 初始渲染\r\n Class.prototype.render = function(rerender){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 若 elem 非唯一\r\n var elem = $(options.elem);\r\n if (elem.length > 1) {\r\n layui.each(elem, function() {\r\n upload.render($.extend({}, options, {\r\n elem: this\r\n }));\r\n });\r\n return that;\r\n }\r\n\r\n // 合并 lay-options 属性上的配置信息\r\n $.extend(options, lay.options(elem[0], {\r\n attr: elem.attr('lay-data') ? 'lay-data' : null // 兼容旧版的 lay-data 属性\r\n }));\r\n\r\n // 若重复执行 render,则视为 reload 处理\r\n if (!rerender && elem[0] && elem.data(MOD_INDEX)) {\r\n var newThat = thisModule.getThis(elem.data(MOD_INDEX));\r\n if(!newThat) return;\r\n\r\n return newThat.reload(options);\r\n }\r\n\r\n options.elem = $(options.elem);\r\n options.bindAction = $(options.bindAction);\r\n\r\n // 初始化 id 属性 - 优先取 options > 元素 id > 自增索引\r\n options.id = 'id' in options ? options.id : (\r\n elem.attr('id') || that.index\r\n );\r\n\r\n that.file();\r\n that.events();\r\n };\r\n \r\n //追加文件域\r\n Class.prototype.file = function(){\r\n var that = this;\r\n var options = that.config;\r\n var elemFile = that.elemFile = $([\r\n ''\r\n ].join(''));\r\n var next = options.elem.next();\r\n \r\n if(next.hasClass(ELEM_FILE) || next.hasClass(ELEM_FORM)){\r\n next.remove();\r\n }\r\n \r\n //包裹ie8/9容器\r\n if(device.ie && device.ie < 10){\r\n options.elem.wrap('
                  ');\r\n }\r\n \r\n that.isFile() ? (\r\n that.elemFile = options.elem,\r\n options.field = options.elem[0].name\r\n ) : options.elem.after(elemFile);\r\n \r\n //初始化ie8/9的Form域\r\n if(device.ie && device.ie < 10){\r\n that.initIE();\r\n }\r\n };\r\n \r\n //ie8-9初始化\r\n Class.prototype.initIE = function(){\r\n var that = this;\r\n var options = that.config;\r\n var iframe = $('');\r\n var elemForm = $(['
                  '\r\n ,''].join(''));\r\n \r\n //插入iframe \r\n $('#'+ ELEM_IFRAME)[0] || $('body').append(iframe);\r\n\r\n //包裹文件域\r\n if(!options.elem.next().hasClass(ELEM_FORM)){\r\n that.elemFile.wrap(elemForm); \r\n \r\n //追加额外的参数\r\n options.elem.next('.'+ ELEM_FORM).append(function(){\r\n var arr = [];\r\n layui.each(options.data, function(key, value){\r\n value = typeof value === 'function' ? value() : value;\r\n arr.push('')\r\n });\r\n return arr.join('');\r\n }());\r\n }\r\n };\r\n \r\n //异常提示\r\n Class.prototype.msg = function(content){\r\n return layer.msg(content, {\r\n icon: 2,\r\n shift: 6\r\n });\r\n };\r\n \r\n //判断绑定元素是否为文件域本身\r\n Class.prototype.isFile = function(){\r\n var elem = this.config.elem[0];\r\n if(!elem) return;\r\n return elem.tagName.toLocaleLowerCase() === 'input' && elem.type === 'file'\r\n }\r\n \r\n //预读图片信息\r\n Class.prototype.preview = function(callback){\r\n var that = this;\r\n if(window.FileReader){\r\n layui.each(that.chooseFiles, function(index, file){\r\n var reader = new FileReader();\r\n reader.readAsDataURL(file); \r\n reader.onload = function(){\r\n callback && callback(index, file, this.result);\r\n }\r\n });\r\n }\r\n };\r\n \r\n // 执行上传\r\n Class.prototype.upload = function(files, type){\r\n var that = this;\r\n var options = that.config;\r\n var text = options.text || {};\r\n var elemFile = that.elemFile[0];\r\n\r\n // 获取文件队列\r\n var getFiles = function(){\r\n return files || that.files || that.chooseFiles || elemFile.files;\r\n };\r\n \r\n // 高级浏览器处理方式,支持跨域\r\n var ajaxSend = function(){\r\n var successful = 0;\r\n var failed = 0;\r\n var items = getFiles();\r\n\r\n // 多文件全部上传完毕的回调\r\n var allDone = function(){\r\n if(options.multiple && successful + failed === that.fileLength){\r\n typeof options.allDone === 'function' && options.allDone({\r\n total: that.fileLength,\r\n successful: successful,\r\n failed: failed\r\n });\r\n }\r\n };\r\n\r\n // 发送请求\r\n var request = function(sets){\r\n var formData = new FormData();\r\n\r\n // 恢复文件状态\r\n var resetFileState = function(file) {\r\n if (sets.unified) {\r\n layui.each(items, function(index, file){\r\n delete file[UPLOADING];\r\n });\r\n } else {\r\n delete file[UPLOADING];\r\n }\r\n };\r\n\r\n // 追加额外的参数\r\n layui.each(options.data, function(key, value){\r\n value = typeof value === 'function' \r\n ? sets.unified ? value() : value(sets.index, sets.file)\r\n : value;\r\n formData.append(key, value);\r\n });\r\n\r\n /*\r\n * 添加 file 到表单域\r\n */\r\n\r\n // 是否统一上传\r\n if (sets.unified) {\r\n layui.each(items, function(index, file){\r\n if (file[UPLOADING]) return;\r\n file[UPLOADING] = true; // 上传中的标记\r\n formData.append(options.field, file);\r\n });\r\n } else { // 逐一上传\r\n if (sets.file[UPLOADING]) return;\r\n formData.append(options.field, sets.file);\r\n sets.file[UPLOADING] = true; // 上传中的标记\r\n }\r\n\r\n // ajax 参数\r\n var opts = {\r\n url: options.url,\r\n type: 'post', // 统一采用 post 上传\r\n data: formData,\r\n dataType: options.dataType || 'json',\r\n contentType: false,\r\n processData: false,\r\n headers: options.headers || {},\r\n success: function(res){ // 成功回调\r\n options.unified ? (successful += that.fileLength) : successful++;\r\n done(sets.index, res);\r\n allDone(sets.index);\r\n resetFileState(sets.file);\r\n },\r\n error: function(e){ // 异常回调\r\n options.unified ? (failed += that.fileLength) : failed++;\r\n that.msg(text['error'] || [\r\n 'Upload failed, please try again.',\r\n 'status: '+ (e.status || '') +' - '+ (e.statusText || 'error')\r\n ].join('
                  '));\r\n error(sets.index);\r\n allDone(sets.index);\r\n resetFileState(sets.file);\r\n }\r\n };\r\n\r\n // 进度条\r\n if(typeof options.progress === 'function'){\r\n opts.xhr = function(){\r\n var xhr = $.ajaxSettings.xhr();\r\n // 上传进度\r\n xhr.upload.addEventListener(\"progress\", function (obj) {\r\n if(obj.lengthComputable){\r\n var percent = Math.floor((obj.loaded/obj.total)* 100); // 百分比\r\n options.progress(percent, (options.item ? options.item[0] : options.elem[0]) , obj, sets.index);\r\n }\r\n });\r\n return xhr;\r\n }\r\n }\r\n $.ajax(opts);\r\n };\r\n\r\n // 多文件是否一起上传\r\n if(options.unified){\r\n request({\r\n unified: true,\r\n index: 0\r\n });\r\n } else {\r\n layui.each(items, function(index, file){\r\n request({\r\n index: index,\r\n file: file\r\n });\r\n });\r\n }\r\n };\r\n \r\n // 低版本 IE 处理方式,不支持跨域\r\n var iframeSend = function(){\r\n var iframe = $('#'+ ELEM_IFRAME);\r\n \r\n that.elemFile.parent().submit();\r\n\r\n // 获取响应信息\r\n clearInterval(Class.timer);\r\n Class.timer = setInterval(function() {\r\n var res, iframeBody = iframe.contents().find('body');\r\n try {\r\n res = iframeBody.text();\r\n } catch(e) {\r\n that.msg(text['cross-domain']); \r\n clearInterval(Class.timer);\r\n error();\r\n }\r\n if(res){\r\n clearInterval(Class.timer);\r\n iframeBody.html('');\r\n done(0, res);\r\n }\r\n }, 30); \r\n };\r\n \r\n // 统一回调\r\n var done = function(index, res){\r\n that.elemFile.next('.'+ ELEM_CHOOSE).remove();\r\n elemFile.value = '';\r\n \r\n if(options.force === 'json'){\r\n if(typeof res !== 'object'){\r\n try {\r\n res = JSON.parse(res);\r\n } catch(e){\r\n res = {};\r\n return that.msg(text['data-format-error']);\r\n }\r\n }\r\n }\r\n \r\n typeof options.done === 'function' && options.done(res, index || 0, function(files){\r\n that.upload(files);\r\n });\r\n };\r\n \r\n // 统一网络异常回调\r\n var error = function(index){\r\n if(options.auto){\r\n elemFile.value = '';\r\n }\r\n typeof options.error === 'function' && options.error(index || 0, function(files){\r\n that.upload(files);\r\n });\r\n };\r\n \r\n var check;\r\n var exts = options.exts;\r\n var value = function(){\r\n var arr = [];\r\n layui.each(files || that.chooseFiles, function(i, item){\r\n arr.push(item.name);\r\n });\r\n return arr;\r\n }();\r\n \r\n // 回调函数返回的参数\r\n var args = {\r\n // 预览\r\n preview: function(callback){\r\n that.preview(callback);\r\n },\r\n // 上传\r\n upload: function(index, file){\r\n var thisFile = {};\r\n thisFile[index] = file;\r\n that.upload(thisFile);\r\n },\r\n // 追加文件到队列\r\n pushFile: function(){\r\n that.files = that.files || {};\r\n layui.each(that.chooseFiles, function(index, item){\r\n that.files[index] = item;\r\n });\r\n return that.files;\r\n },\r\n // 重置文件\r\n resetFile: function(index, file, filename){\r\n var newFile = new File([file], filename);\r\n that.files = that.files || {};\r\n that.files[index] = newFile;\r\n },\r\n // 获取本次选取的文件\r\n getChooseFiles: function(){\r\n return that.chooseFiles;\r\n }\r\n };\r\n \r\n // 提交上传\r\n var send = function(){\r\n var ready = function(){\r\n // IE 兼容处理\r\n if(device.ie){\r\n return device.ie > 9 ? ajaxSend() : iframeSend();\r\n }\r\n ajaxSend();\r\n }\r\n // 上传前的回调 - 如果回调函数明确返回 false 或 Promise.reject,则停止上传\r\n if(typeof options.before === 'function'){\r\n upload.util.promiseLikeResolve(options.before(args))\r\n .then(function(result){\r\n if(result !== false){\r\n ready();\r\n }\r\n }, function(error){\r\n error !== undefined && layui.hint().error(error);\r\n })\r\n }else{\r\n ready();\r\n }\r\n };\r\n \r\n // 文件类型名称\r\n var typeName = ({\r\n file: '文件',\r\n images: '图片',\r\n video: '视频',\r\n audio: '音频'\r\n })[options.accept] || '文件';\r\n\r\n // 校验文件格式\r\n value = value.length === 0 \r\n ? ((elemFile.value.match(/[^\\/\\\\]+\\..+/g)||[]) || '')\r\n : value;\r\n \r\n // 若文件域值为空\r\n if (value.length === 0) return;\r\n \r\n // 根据文件类型校验\r\n switch(options.accept){\r\n case 'file': // 一般文件\r\n layui.each(value, function(i, item){\r\n if(exts && !RegExp('.\\\\.('+ exts +')$', 'i').test(escape(item))){\r\n return check = true;\r\n }\r\n });\r\n break;\r\n case 'video': // 视频文件\r\n layui.each(value, function(i, item){\r\n if(!RegExp('.\\\\.('+ (exts || 'avi|mp4|wma|rmvb|rm|flash|3gp|flv') +')$', 'i').test(escape(item))){\r\n return check = true;\r\n }\r\n });\r\n break;\r\n case 'audio': // 音频文件\r\n layui.each(value, function(i, item){\r\n if(!RegExp('.\\\\.('+ (exts || 'mp3|wav|mid') +')$', 'i').test(escape(item))){\r\n return check = true;\r\n }\r\n });\r\n break;\r\n default: // 图片文件\r\n layui.each(value, function(i, item){\r\n if(!RegExp('.\\\\.('+ (exts || 'jpg|png|gif|bmp|jpeg|svg|webp') +')$', 'i').test(escape(item))){\r\n return check = true;\r\n }\r\n });\r\n break;\r\n }\r\n \r\n // 校验失败提示\r\n if(check){\r\n that.msg(text['check-error'] || ('选择的'+ typeName +'中包含不支持的格式'));\r\n return elemFile.value = '';\r\n }\r\n\r\n // 选择文件的回调 \r\n if(type === 'choose' || options.auto){\r\n options.choose && options.choose(args);\r\n if(type === 'choose'){\r\n return;\r\n }\r\n }\r\n \r\n // 检验文件数量\r\n that.fileLength = function(){\r\n var length = 0;\r\n var items = getFiles();\r\n layui.each(items, function(){\r\n length++;\r\n });\r\n return length;\r\n }();\r\n \r\n if(options.number && that.fileLength > options.number){\r\n return that.msg(typeof text['limit-number'] === 'function' \r\n ? text['limit-number'](options, that.fileLength) \r\n : (\r\n '同时最多只能上传: '+ options.number + ' 个文件'\r\n +'
                  您当前已经选择了: '+ that.fileLength +' 个文件'\r\n ));\r\n }\r\n \r\n // 检验文件大小\r\n if(options.size > 0 && !(device.ie && device.ie < 10)){\r\n var limitSize;\r\n \r\n layui.each(getFiles(), function(index, file){\r\n if(file.size > 1024*options.size){\r\n var size = options.size/1024;\r\n size = size >= 1 ? (size.toFixed(2) + 'MB') : options.size + 'KB'\r\n elemFile.value = '';\r\n limitSize = size;\r\n }\r\n });\r\n if(limitSize) return that.msg(typeof text['limit-size'] === 'function' \r\n ? text['limit-size'](options, limitSize) \r\n : '文件大小不能超过 '+ limitSize);\r\n }\r\n\r\n send();\r\n };\r\n \r\n //事件处理\r\n Class.prototype.events = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n // 设置当前选择的文件队列\r\n var setChooseFile = function(files){\r\n that.chooseFiles = {};\r\n layui.each(files, function(i, item){\r\n var time = new Date().getTime();\r\n that.chooseFiles[time + '-' + i] = item;\r\n });\r\n };\r\n \r\n // 设置选择的文本\r\n var setChooseText = function(files, filename){\r\n var elemFile = that.elemFile;\r\n var item = options.item ? options.item : options.elem;\r\n var value = files.length > 1 \r\n ? files.length + '个文件' \r\n : ((files[0] || {}).name || (elemFile[0].value.match(/[^\\/\\\\]+\\..+/g)||[]) || '');\r\n \r\n if(elemFile.next().hasClass(ELEM_CHOOSE)){\r\n elemFile.next().remove();\r\n }\r\n that.upload(null, 'choose');\r\n if(that.isFile() || options.choose) return;\r\n elemFile.after(''+ value +'');\r\n };\r\n\r\n /**\r\n * 判断文件是否加入排队\r\n * @param {File} file\r\n * @return {boolean}\r\n */\r\n var checkFile = function (file) {\r\n var result = true;\r\n layui.each(that.files, function (index, item) {\r\n result = !(item.name === file.name);\r\n if(!result) return true;\r\n });\r\n return result;\r\n }\r\n\r\n /**\r\n * 扩展文件信息\r\n * @template {File | FileList} T\r\n * @param {T} obj\r\n * @return {T}\r\n */\r\n var extendInfo = function (obj) {\r\n\r\n var extInfo = function (file) {\r\n //文件扩展名\r\n file.ext = file.name.substr(file.name.lastIndexOf('.') + 1).toLowerCase();\r\n // 文件大小\r\n file.sizes = upload.util.parseSize(file.size);\r\n // 可以继续扩展\r\n }\r\n\r\n //FileList对象\r\n if (obj instanceof FileList) {\r\n layui.each(obj, function (index, item) {\r\n extInfo(item);\r\n });\r\n } else {\r\n extInfo(obj);\r\n }\r\n\r\n return obj;\r\n }\r\n \r\n /**\r\n * 检查获取文件\r\n * @param {FileList} files\r\n * @return {Array|FileList}\r\n */\r\n var getFiles = function (files) {\r\n files = files || [];\r\n if (!files.length) return [];\r\n if (!that.files) return extendInfo(files);\r\n var result = [];\r\n layui.each(files, function (index, item) {\r\n if (checkFile(item)) {\r\n result.push(extendInfo(item));\r\n }\r\n });\r\n return result;\r\n }\r\n\r\n // 点击上传容器\r\n options.elem.off('upload.start').on('upload.start', function(){\r\n var othis = $(this);\r\n\r\n that.config.item = othis;\r\n that.elemFile[0].click();\r\n });\r\n \r\n // 拖拽上传\r\n if(!(device.ie && device.ie < 10)){\r\n options.elem.off('upload.over').on('upload.over', function(){\r\n var othis = $(this)\r\n othis.attr('lay-over', '');\r\n })\r\n .off('upload.leave').on('upload.leave', function(){\r\n var othis = $(this)\r\n othis.removeAttr('lay-over');\r\n })\r\n .off('upload.drop').on('upload.drop', function(e, param){\r\n var othis = $(this);\r\n var files = getFiles(param.originalEvent.dataTransfer.files);\r\n \r\n othis.removeAttr('lay-over');\r\n setChooseFile(files);\r\n\r\n options.auto ? that.upload() : setChooseText(files); // 是否自动触发上传\r\n });\r\n }\r\n \r\n // 文件选择\r\n that.elemFile.on('change', function(){\r\n var files = getFiles(this.files);\r\n\r\n if(files.length === 0) return;\r\n\r\n setChooseFile(files);\r\n\r\n options.auto ? that.upload() : setChooseText(files); // 是否自动触发上传\r\n });\r\n \r\n // 手动触发上传\r\n options.bindAction.off('upload.action').on('upload.action', function(){\r\n that.upload();\r\n });\r\n\r\n\r\n // 防止事件重复绑定\r\n if(options.elem.data(MOD_INDEX)) return;\r\n\r\n\r\n // 目标元素 click 事件\r\n options.elem.on('click', function(){\r\n if(that.isFile()) return;\r\n $(this).trigger('upload.start');\r\n });\r\n \r\n // 目标元素 drop 事件\r\n if(options.drag){\r\n options.elem.on('dragover', function(e){\r\n e.preventDefault();\r\n $(this).trigger('upload.over');\r\n }).on('dragleave', function(e){\r\n $(this).trigger('upload.leave');\r\n }).on('drop', function(e){\r\n e.preventDefault();\r\n $(this).trigger('upload.drop', e);\r\n });\r\n }\r\n \r\n // 手动上传时触发上传的元素 click 事件\r\n options.bindAction.on('click', function(){\r\n $(this).trigger('upload.action');\r\n });\r\n \r\n // 绑定元素索引\r\n options.elem.data(MOD_INDEX, options.id);\r\n };\r\n\r\n /**\r\n * 上传组件辅助方法\r\n */\r\n upload.util = {\r\n /**\r\n * 文件大小处理\r\n * @param {number | string} size -文件大小\r\n * @param {number} [precision] - 数值精度\r\n * @return {string}\r\n */\r\n parseSize: function (size, precision) {\r\n precision = precision || 2;\r\n if (null == size || !size) {\r\n return '0';\r\n }\r\n var unitArr = [\"Bytes\", \"Kb\", \"Mb\", \"Gb\", \"Tb\", \"Pb\", \"Eb\", \"Zb\", \"Yb\"];\r\n var index;\r\n var formatSize = typeof size === 'string' ? parseFloat(size) : size;\r\n index = Math.floor(Math.log(formatSize) / Math.log(1024));\r\n size = formatSize / Math.pow(1024, index);\r\n size = size % 1 === 0 ? size : parseFloat(size.toFixed(precision));//保留的小数位数\r\n return size + unitArr[index];\r\n },\r\n /**\r\n * 将给定的值转换为一个 JQueryDeferred 对象\r\n */\r\n promiseLikeResolve:function(value){\r\n var deferred = $.Deferred();\r\n\r\n if(value && typeof value.then === 'function'){\r\n value.then(deferred.resolve, deferred.reject);\r\n }else{\r\n deferred.resolve(value);\r\n }\r\n return deferred.promise();\r\n }\r\n }\r\n\r\n // 记录所有实例\r\n thisModule.that = {}; // 记录所有实例对象\r\n\r\n // 获取当前实例对象\r\n thisModule.getThis = function(id){\r\n var that = thisModule.that[id];\r\n if(!that) hint.error(id ? (MOD_NAME +' instance with ID \\''+ id +'\\' not found') : 'ID argument required');\r\n return that;\r\n };\r\n \r\n // 核心入口 \r\n upload.render = function(options){\r\n var inst = new Class(options);\r\n return thisModule.call(inst);\r\n };\r\n \r\n exports(MOD_NAME, upload);\r\n});\r\n\r\n","/**\r\n * form 表单组件\r\n */\r\n \r\nlayui.define(['lay', 'layer', 'util'], function(exports){\r\n \"use strict\";\r\n \r\n var $ = layui.$;\r\n var layer = layui.layer;\r\n var util = layui.util;\r\n var hint = layui.hint();\r\n var device = layui.device();\r\n \r\n var MOD_NAME = 'form';\r\n var ELEM = '.layui-form';\r\n var THIS = 'layui-this';\r\n var SHOW = 'layui-show';\r\n var HIDE = 'layui-hide';\r\n var DISABLED = 'layui-disabled';\r\n var OUT_OF_RANGE = 'layui-input-number-out-of-range';\r\n \r\n var Form = function(){\r\n this.config = {\r\n // 内置的验证规则\r\n verify: {\r\n required: function(value) {\r\n if (!/[\\S]+/.test(value)) {\r\n return '必填项不能为空';\r\n }\r\n },\r\n phone: function(value) {\r\n var EXP = /^1\\d{10}$/;\r\n if (value && !EXP.test(value)) {\r\n return '手机号格式不正确';\r\n }\r\n },\r\n email: function(value) {\r\n var EXP = /^([a-zA-Z0-9_\\.\\-])+\\@(([a-zA-Z0-9\\-])+\\.)+([a-zA-Z0-9]{2,4})+$/;\r\n if (value && !EXP.test(value)) {\r\n return '邮箱格式不正确';\r\n }\r\n },\r\n url: function(value) {\r\n var EXP = /^(#|(http(s?)):\\/\\/|\\/\\/)[^\\s]+\\.[^\\s]+$/;\r\n if (value && !EXP.test(value)) {\r\n return '链接格式不正确';\r\n }\r\n },\r\n number: function(value){\r\n if (value && isNaN(value)) {\r\n return '只能填写数字';\r\n }\r\n },\r\n date: function(value){\r\n var EXP = /^(\\d{4})[-\\/](\\d{1}|0\\d{1}|1[0-2])([-\\/](\\d{1}|0\\d{1}|[1-2][0-9]|3[0-1]))*$/;\r\n if (value && !EXP.test(value)) {\r\n return '日期格式不正确';\r\n }\r\n },\r\n identity: function(value) {\r\n var EXP = /(^\\d{15}$)|(^\\d{17}(x|X|\\d)$)/;\r\n if (value && !EXP.test(value)) {\r\n return '身份证号格式不正确';\r\n }\r\n }\r\n },\r\n autocomplete: null // 全局 autocomplete 状态。 null 表示不干预\r\n };\r\n };\r\n \r\n // 全局设置\r\n Form.prototype.set = function(options){\r\n var that = this;\r\n $.extend(true, that.config, options);\r\n return that;\r\n };\r\n \r\n // 验证规则设定\r\n Form.prototype.verify = function(settings){\r\n var that = this;\r\n $.extend(true, that.config.verify, settings);\r\n return that;\r\n };\r\n\r\n // 获取指定表单对象\r\n Form.prototype.getFormElem = function(filter){\r\n return $(ELEM + function(){\r\n return filter ? ('[lay-filter=\"' + filter +'\"]') : '';\r\n }());\r\n };\r\n \r\n // 表单事件\r\n Form.prototype.on = function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n };\r\n \r\n // 赋值/取值\r\n Form.prototype.val = function(filter, object){\r\n var that = this\r\n ,formElem = that.getFormElem(filter);\r\n \r\n // 遍历\r\n formElem.each(function(index, item){\r\n var itemForm = $(this);\r\n \r\n // 赋值\r\n layui.each(object, function(key, value){\r\n var itemElem = itemForm.find('[name=\"'+ key +'\"]')\r\n ,type;\r\n \r\n // 如果对应的表单不存在,则不执行\r\n if(!itemElem[0]) return;\r\n type = itemElem[0].type;\r\n \r\n // 如果为复选框\r\n if(type === 'checkbox'){\r\n itemElem[0].checked = value;\r\n } else if(type === 'radio') { // 如果为单选框\r\n itemElem.each(function(){\r\n this.checked = this.value == value + '';\r\n });\r\n } else { // 其它类型的表单\r\n itemElem.val(value);\r\n }\r\n });\r\n });\r\n \r\n form.render(null, filter);\r\n \r\n // 返回值\r\n return that.getValue(filter);\r\n };\r\n \r\n // 取值\r\n Form.prototype.getValue = function(filter, itemForm){\r\n itemForm = itemForm || this.getFormElem(filter);\r\n \r\n var nameIndex = {} // 数组 name 索引\r\n ,field = {}\r\n ,fieldElem = itemForm.find('input,select,textarea') // 获取所有表单域\r\n \r\n layui.each(fieldElem, function(_, item){ \r\n var othis = $(this)\r\n ,init_name; // 初始 name\r\n \r\n item.name = (item.name || '').replace(/^\\s*|\\s*&/, '');\r\n if(!item.name) return;\r\n \r\n // 用于支持数组 name\r\n if(/^.*\\[\\]$/.test(item.name)){\r\n var key = item.name.match(/^(.*)\\[\\]$/g)[0];\r\n nameIndex[key] = nameIndex[key] | 0;\r\n init_name = item.name.replace(/^(.*)\\[\\]$/, '$1['+ (nameIndex[key]++) +']');\r\n }\r\n \r\n if(/^(checkbox|radio)$/.test(item.type) && !item.checked) return; // 复选框和单选框未选中,不记录字段 \r\n field[init_name || item.name] = item.value;\r\n });\r\n \r\n return field;\r\n };\r\n \r\n // 表单控件渲染\r\n Form.prototype.render = function(type, filter){\r\n var that = this;\r\n var options = that.config;\r\n var elemForm = $(ELEM + function(){\r\n return filter ? ('[lay-filter=\"' + filter +'\"]') : '';\r\n }());\r\n var items = {\r\n // 输入框\r\n input: function(elem){\r\n var inputs = elem || elemForm.find('input,textarea');\r\n\r\n // 初始化全局的 autocomplete\r\n options.autocomplete && inputs.attr('autocomplete', options.autocomplete);\r\n\r\n var handleInputNumber = function(elem, eventType){\r\n var that = this;\r\n var rawValue = elem.val();\r\n var value = Number(rawValue);\r\n var step = Number(elem.attr('step')) || 1; // 加减的数字间隔\r\n var min = Number(elem.attr('min'));\r\n var max = Number(elem.attr('max'));\r\n var precision = Number(elem.attr('lay-precision'));\r\n var noAction = eventType !== 'click' && rawValue === ''; // 初始渲染和失焦时空值不作处理\r\n var isInit = eventType === 'init';\r\n\r\n if(isNaN(value)) return; // 若非数字,则不作处理\r\n\r\n if(eventType === 'click'){\r\n var isDecrement = !!$(that).index() // 0: icon-up, 1: icon-down\r\n value = isDecrement ? value - step : value + step;\r\n }\r\n\r\n // 获取小数点后位数\r\n var decimals = function(step){\r\n var decimals = (step.toString().match(/\\.(\\d+$)/) || [])[1] || '';\r\n return decimals.length;\r\n };\r\n\r\n precision = precision >= 0 ? precision : Math.max(decimals(step), decimals(rawValue));\r\n\r\n // 赋值\r\n if (!noAction) {\r\n // 初始渲染时只处理数字精度\r\n if (!isInit) {\r\n if(value <= min) value = min;\r\n if(value >= max) value = max;\r\n }\r\n // 若 `lay-precision` 为 0, 则表示只保留整数\r\n if (precision === 0) {\r\n value = parseInt(value);\r\n } else if(precision > 0) { // 小数位精度\r\n value = value.toFixed(precision);\r\n }\r\n elem.val(value);\r\n }\r\n\r\n // 超出范围的样式\r\n var outOfRange = value < min || value > max;\r\n elem[outOfRange && !noAction ? 'addClass' : 'removeClass'](OUT_OF_RANGE);\r\n\r\n if(isInit) return;\r\n\r\n // 更新按钮状态\r\n var controlBtn = {\r\n increment: elem.next().find('.layui-icon-up'),\r\n decrement: elem.next().find('.layui-icon-down')\r\n }\r\n controlBtn.increment[(value >= max && !noAction) ? 'addClass' : 'removeClass'](DISABLED)\r\n controlBtn.decrement[(value <= min && !noAction) ? 'addClass' : 'removeClass'](DISABLED)\r\n }\r\n\r\n // 初始化输入框动态点缀\r\n elemForm.find('input[lay-affix],textarea[lay-affix]').each(function(){\r\n var othis = $(this);\r\n var affix = othis.attr('lay-affix');\r\n var CLASS_WRAP = 'layui-input-wrap';\r\n var CLASS_SUFFIX = 'layui-input-suffix';\r\n var CLASS_AFFIX = 'layui-input-affix';\r\n var disabled = othis.is('[disabled]') || othis.is('[readonly]');\r\n\r\n // 根据是否空值来显示或隐藏元素\r\n var showAffix = function(elem, value){\r\n elem = $(elem);\r\n if(!elem[0]) return;\r\n elem[$.trim(value) ? 'removeClass' : 'addClass'](HIDE);\r\n };\r\n\r\n // 渲染动态点缀内容\r\n var renderAffix = function(opts){\r\n opts = $.extend({}, (affixOptions[affix] || {\r\n value: affix\r\n }), opts, lay.options(othis[0]));\r\n var elemAffix = $('
                  ');\r\n var value = layui.isArray(opts.value) ? opts.value : [opts.value];\r\n var elemIcon = $(function(){\r\n var arr = [];\r\n layui.each(value, function(i, item){\r\n arr.push('');\r\n });\r\n return arr.join('');\r\n }());\r\n \r\n elemAffix.append(elemIcon); // 插入图标元素\r\n\r\n // 追加 className\r\n if(opts.split) elemAffix.addClass('layui-input-split');\r\n if(opts.className) elemAffix.addClass(opts.className);\r\n\r\n // 移除旧的元素\r\n var hasElemAffix = othis.next('.'+ CLASS_AFFIX);\r\n if(hasElemAffix[0]) hasElemAffix.remove();\r\n\r\n // 是否在规定的容器中\r\n if(!othis.parent().hasClass(CLASS_WRAP)){\r\n othis.wrap('
                  ');\r\n }\r\n\r\n // 是否已经存在后缀元素\r\n var hasElemSuffix = othis.next('.'+ CLASS_SUFFIX);\r\n if(hasElemSuffix[0]){\r\n hasElemAffix = hasElemSuffix.find('.'+ CLASS_AFFIX);\r\n if(hasElemAffix[0]) hasElemAffix.remove();\r\n\r\n hasElemSuffix.prepend(elemAffix);\r\n\r\n othis.css('padding-right', function(){\r\n var paddingRight = othis.closest('.layui-input-group')[0] \r\n ? 0 \r\n : hasElemSuffix.outerWidth();\r\n return paddingRight + elemAffix.outerWidth()\r\n });\r\n } else {\r\n elemAffix.addClass(CLASS_SUFFIX);\r\n othis.after(elemAffix);\r\n }\r\n\r\n opts.show === 'auto' && showAffix(elemAffix, othis.val());\r\n \r\n typeof opts.init === 'function' && opts.init.call(this, othis, opts);\r\n \r\n // 输入事件\r\n othis.on('input propertychange', function(){\r\n var value = this.value;\r\n opts.show === 'auto' && showAffix(elemAffix, value);\r\n });\r\n\r\n // 失去焦点事件\r\n othis.on('blur', function(){\r\n typeof opts.blur === 'function' && opts.blur.call(this, othis, opts);\r\n });\r\n \r\n // 点击动态后缀事件\r\n elemIcon.on('click', function(){\r\n var inputFilter = othis.attr('lay-filter');\r\n if($(this).hasClass(DISABLED)) return;\r\n \r\n typeof opts.click === 'function' && opts.click.call(this, othis, opts);\r\n \r\n // 对外事件\r\n layui.event.call(this, MOD_NAME, 'input-affix('+ inputFilter +')', {\r\n elem: othis[0],\r\n affix: affix,\r\n options: opts\r\n });\r\n });\r\n };\r\n \r\n // 动态点缀配置项\r\n var affixOptions = {\r\n eye: { // 密码显隐\r\n value: 'eye-invisible',\r\n click: function(elem, opts){ // 事件\r\n var SHOW_NAME = 'LAY_FORM_INPUT_AFFIX_SHOW';\r\n var isShow = elem.data(SHOW_NAME);\r\n \r\n elem.attr('type', isShow ? 'password' : 'text').data(SHOW_NAME, !isShow);\r\n\r\n renderAffix({\r\n value: isShow ? 'eye-invisible' : 'eye'\r\n });\r\n }\r\n },\r\n clear: { // 内容清除\r\n value: 'clear',\r\n click: function(elem){\r\n elem.val('').focus();\r\n showAffix($(this).parent(), null);\r\n },\r\n show: 'auto', // 根据输入框值是否存在来显示或隐藏点缀图标\r\n disabled: disabled // 跟随输入框禁用状态\r\n },\r\n number: { // 数字输入框\r\n value: ['up', 'down'],\r\n split: true,\r\n className: 'layui-input-number',\r\n disabled: othis.is('[disabled]'), // 跟随输入框禁用状态\r\n init: function(elem){\r\n handleInputNumber.call(this, elem, 'init')\r\n },\r\n click: function(elem){\r\n handleInputNumber.call(this, elem, 'click')\r\n },\r\n blur: function(elem){\r\n handleInputNumber.call(this, elem, 'blur')\r\n },\r\n }\r\n };\r\n \r\n renderAffix();\r\n });\r\n }\r\n \r\n // 下拉选择框\r\n ,select: function(elem){\r\n var TIPS = '请选择';\r\n var CLASS = 'layui-form-select';\r\n var TITLE = 'layui-select-title';\r\n var NONE = 'layui-select-none';\r\n var CREATE_OPTION = 'layui-select-create-option';\r\n var initValue = '';\r\n var thatInput;\r\n var selects = elem || elemForm.find('select');\r\n\r\n // 隐藏 select\r\n var hide = function(e, clear){\r\n if(!$(e.target).parent().hasClass(TITLE) || clear){\r\n var elem = $('.' + CLASS);\r\n elem.removeClass(CLASS+'ed ' + CLASS+'up');\r\n if(elem.hasClass('layui-select-creatable')){\r\n elem.children('dl').children('.' + CREATE_OPTION).remove();\r\n }\r\n thatInput && initValue && thatInput.val(initValue);\r\n }\r\n thatInput = null;\r\n };\r\n \r\n // 各种事件\r\n var events = function(reElem, disabled, isSearch, isCreatable){\r\n var select = $(this);\r\n var title = reElem.find('.' + TITLE);\r\n var input = title.find('input');\r\n var dl = reElem.find('dl');\r\n var dds = dl.children('dd');\r\n var dts = dl.children('dt'); // select 分组dt元素\r\n var index = this.selectedIndex; // 当前选中的索引\r\n var nearElem; // select 组件当前选中的附近元素,用于辅助快捷键功能\r\n \r\n if(disabled) return;\r\n\r\n // 搜索项\r\n var laySearch = select.attr('lay-search');\r\n\r\n // #1449\r\n // IE10 和 11 中,带有占位符的 input 元素获得/失去焦点时,会触发 input 事件\r\n // 当鼠标按下时,根据 input 元素上的 __ieph 标识忽略 input 事件\r\n var needPlaceholderPatch = !!(lay.ie && (lay.ie === '10' || lay.ie === '11') && input.attr('placeholder'));\r\n \r\n // 展开下拉\r\n var showDown = function(){\r\n var top = reElem.offset().top + reElem.outerHeight() + 5 - $win.scrollTop();\r\n var dlHeight = dl.outerHeight();\r\n var dds = dl.children('dd');\r\n \r\n index = select[0].selectedIndex; // 获取最新的 selectedIndex\r\n reElem.addClass(CLASS+'ed');\r\n dds.removeClass(HIDE);\r\n dts.removeClass(HIDE);\r\n nearElem = null;\r\n\r\n // 初始选中样式\r\n dds.removeClass(THIS);\r\n index >= 0 && dds.eq(index).addClass(THIS);\r\n\r\n // 上下定位识别\r\n if(top + dlHeight > $win.height() && top >= dlHeight){\r\n reElem.addClass(CLASS + 'up');\r\n }\r\n\r\n followScroll();\r\n\r\n if(needPlaceholderPatch){\r\n dl.off('mousedown.select.ieph').on('mousedown.select.ieph', function(){\r\n input[0].__ieph = true;\r\n setTimeout(function(){\r\n input[0].__ieph = false;\r\n }, 60)\r\n });\r\n }\r\n };\r\n \r\n // 隐藏下拉\r\n var hideDown = function(choose){\r\n reElem.removeClass(CLASS+'ed ' + CLASS+'up');\r\n input.blur();\r\n nearElem = null;\r\n isCreatable && dl.children('.' + CREATE_OPTION).remove();\r\n \r\n if(choose) return;\r\n \r\n notOption(input.val(), function(none){\r\n var selectedIndex = select[0].selectedIndex;\r\n \r\n // 未查询到相关值\r\n if(none){\r\n initValue = $(select[0].options[selectedIndex]).html(); // 重新获得初始选中值\r\n \r\n // 如果是第一项,且文本值等于 placeholder,则清空初始值\r\n if(selectedIndex === 0 && initValue === input.attr('placeholder')){\r\n initValue = '';\r\n }\r\n\r\n // 如果有选中值,则将输入框纠正为该值。否则清空输入框\r\n input.val(initValue || '');\r\n }\r\n });\r\n };\r\n \r\n // 定位下拉滚动条\r\n var followScroll = function(){ \r\n var thisDd = dl.children('dd.'+ THIS);\r\n \r\n if(!thisDd[0]) return;\r\n \r\n var posTop = thisDd.position().top;\r\n var dlHeight = dl.height();\r\n var ddHeight = thisDd.height();\r\n \r\n // 若选中元素在滚动条不可见底部\r\n if(posTop > dlHeight){\r\n dl.scrollTop(posTop + dl.scrollTop() - dlHeight + ddHeight - 5);\r\n }\r\n \r\n // 若选择元素在滚动条不可见顶部\r\n if(posTop < 0){\r\n dl.scrollTop(posTop + dl.scrollTop() - 5);\r\n }\r\n };\r\n \r\n // 点击标题区域\r\n title.on('click', function(e){\r\n reElem.hasClass(CLASS+'ed') ? (\r\n hideDown()\r\n ) : (\r\n hide(e, true), \r\n showDown()\r\n );\r\n dl.find('.'+NONE).remove();\r\n }); \r\n \r\n // 点击箭头获取焦点\r\n title.find('.layui-edge').on('click', function(){\r\n input.focus();\r\n });\r\n \r\n // select 中 input 键盘事件\r\n input.on('keyup', function(e){ // 键盘松开\r\n var keyCode = e.keyCode;\r\n \r\n // Tab键展开\r\n if(keyCode === 9){\r\n showDown();\r\n }\r\n }).on('keydown', function(e){ // 键盘按下\r\n var keyCode = e.keyCode;\r\n\r\n // Tab键隐藏\r\n if(keyCode === 9){\r\n hideDown();\r\n }\r\n \r\n // 标注 dd 的选中状态\r\n var setThisDd = function(prevNext){\r\n e.preventDefault();\r\n var allDisplayedElem = dl.children('dd:not(.'+ HIDE +',.'+ DISABLED +')');\r\n if(!allDisplayedElem.length) return;\r\n var firstIndex = 0;\r\n var lastIndex = allDisplayedElem.length - 1;\r\n var selectedIndex = -1;\r\n\r\n layui.each(allDisplayedElem, function(index, el){\r\n if($(el).hasClass(THIS)){\r\n selectedIndex = index;\r\n return true;\r\n }\r\n })\r\n \r\n var nextIndex = prevNext === 'prev'\r\n ? (selectedIndex - 1 < firstIndex ? lastIndex : selectedIndex - 1)\r\n : (selectedIndex + 1 > lastIndex ? firstIndex : selectedIndex + 1)\r\n\r\n var selectedElem = allDisplayedElem.eq(nextIndex);\r\n selectedElem.addClass(THIS).siblings().removeClass(THIS); // 标注样式\r\n followScroll(); // 定位滚动条\r\n };\r\n \r\n if(keyCode === 38) setThisDd('prev'); // Up 键\r\n if(keyCode === 40) setThisDd('next'); // Down 键\r\n \r\n // Enter 键\r\n if(keyCode === 13){ \r\n e.preventDefault();\r\n dl.children('dd.'+THIS).trigger('click');\r\n }\r\n }).on('paste', function(){\r\n showDown();\r\n });\r\n \r\n // 检测值是否不属于 select 项\r\n var notOption = function(value, callback, origin){\r\n var num = 0;\r\n var dds = dl.children('dd');\r\n var hasEquals = false;\r\n var rawValue = value;\r\n layui.each(dds, function(){\r\n var othis = $(this);\r\n var text = othis.text();\r\n var isCreateOption = isCreatable && othis.hasClass(CREATE_OPTION);\r\n\r\n // 需要区分大小写\r\n if(isCreatable && !isCreateOption && text === rawValue){\r\n hasEquals = true;\r\n }\r\n\r\n // 是否区分大小写\r\n if(laySearch !== 'cs'){\r\n text = text.toLowerCase();\r\n value = value.toLowerCase();\r\n }\r\n \r\n // 匹配\r\n var not = text.indexOf(value) === -1;\r\n \r\n if(value === '' || (origin === 'blur') ? value !== text : not) num++;\r\n origin === 'keyup' && othis[(isCreatable ? (not && !isCreateOption) : not) ? 'addClass' : 'removeClass'](HIDE);\r\n });\r\n // 处理 select 分组元素\r\n origin === 'keyup' && layui.each(dts, function(){\r\n var othis = $(this);\r\n var thisDds = othis.nextUntil('dt').filter('dd'); // 当前分组下的dd元素\r\n if(isCreatable) thisDds = thisDds.not('.' + CREATE_OPTION);\r\n var allHide = thisDds.length == thisDds.filter('.' + HIDE).length; // 当前分组下所有dd元素都隐藏了\r\n othis[allHide ? 'addClass' : 'removeClass'](HIDE);\r\n });\r\n var none = num === dds.length;\r\n return callback(none, hasEquals), none;\r\n };\r\n \r\n // 搜索匹配\r\n var search = function(e){\r\n var value = this.value, keyCode = e.keyCode;\r\n \r\n if(keyCode === 9 || keyCode === 13 \r\n || keyCode === 37 || keyCode === 38 \r\n || keyCode === 39 || keyCode === 40\r\n ){\r\n return false;\r\n }\r\n \r\n if(needPlaceholderPatch && e.target.__ieph){\r\n e.target.__ieph = false;\r\n return false;\r\n }\r\n \r\n notOption(value, function(none, hasEquals){\r\n if(isCreatable){\r\n if(hasEquals){\r\n dl.children('.' + CREATE_OPTION).remove();\r\n }else{\r\n var createOptionElem = dl.children('.' + CREATE_OPTION);\r\n if(createOptionElem[0]){\r\n createOptionElem.attr('lay-value', value).html(util.escape(value));\r\n }else{\r\n // 临时显示在顶部\r\n var ddElem = $('
                  ').addClass(CREATE_OPTION).attr('lay-value', value).html(util.escape(value));\r\n var firstOptionELem = dl.children().eq(0);\r\n var hasTips = firstOptionELem.hasClass('layui-select-tips');\r\n firstOptionELem[hasTips ? 'after' : 'before'](ddElem);\r\n }\r\n }\r\n }else{\r\n if(none){\r\n dl.find('.'+NONE)[0] || dl.append('

                  无匹配项

                  ');\r\n } else {\r\n dl.find('.'+NONE).remove();\r\n }\r\n }\r\n }, 'keyup');\r\n \r\n // 当搜索值清空时\r\n if(value === ''){\r\n // 取消选中项\r\n select.val('');\r\n dl.find('.'+ THIS).removeClass(THIS);\r\n (select[0].options[0] || {}).value || dl.children('dd:eq(0)').addClass(THIS);\r\n dl.find('.'+ NONE).remove();\r\n isCreatable && dl.children('.' + CREATE_OPTION).remove();\r\n }\r\n \r\n followScroll(); // 定位滚动条\r\n };\r\n \r\n if(isSearch){\r\n input.on('input propertychange', layui.debounce(search, 50)).on('blur', function(e){\r\n var selectedIndex = select[0].selectedIndex;\r\n \r\n thatInput = input; // 当前的 select 中的 input 元素\r\n initValue = $(select[0].options[selectedIndex]).text(); // 重新获得初始选中值\r\n \r\n // 如果是第一项,且文本值等于 placeholder,则清空初始值\r\n if(selectedIndex === 0 && initValue === input.attr('placeholder')){\r\n initValue = '';\r\n }\r\n \r\n setTimeout(function(){\r\n notOption(input.val(), function(none){\r\n initValue || input.val(''); // none && !initValue\r\n }, 'blur');\r\n }, 200);\r\n });\r\n }\r\n\r\n // 选择\r\n dl.on('click', 'dd', function(){\r\n var othis = $(this), value = othis.attr('lay-value');\r\n var filter = select.attr('lay-filter'); // 获取过滤器\r\n \r\n if(othis.hasClass(DISABLED)) return false;\r\n \r\n if(othis.hasClass('layui-select-tips')){\r\n input.val('');\r\n } else {\r\n input.val(othis.text());\r\n othis.addClass(THIS);\r\n }\r\n\r\n // 将新增的 option 元素添加到末尾\r\n if(isCreatable && othis.hasClass(CREATE_OPTION)){\r\n dl.append(othis.removeClass(CREATE_OPTION));\r\n var optionElem = $('
                '\r\n ,''\r\n ,'{{# layui.each(d.data.cols, function(i1, item1){ }}'\r\n ,''\r\n ,'{{# layui.each(item1, function(i2, item2){ }}'\r\n ,'{{# if(item2.fixed && item2.fixed !== \"right\"){ left = true; } }}'\r\n ,'{{# if(item2.fixed === \"right\"){ right = true; } }}'\r\n ,function(){\r\n if(options.fixed && options.fixed !== 'right'){\r\n return '{{# if(item2.fixed && item2.fixed !== \"right\"){ }}';\r\n }\r\n if(options.fixed === 'right'){\r\n return '{{# if(item2.fixed === \"right\"){ }}';\r\n }\r\n return '';\r\n }()\r\n ,'{{# var isSort = !(item2.colGroup) && item2.sort; }}'\r\n ,''\r\n ,(options.fixed ? '{{# }; }}' : '')\r\n ,'{{# }); }}'\r\n ,''\r\n ,'{{# }); }}'\r\n ,''\r\n ,'
                \\' + item2.title + \\'\\').text() }}\"{{# } }}>'\r\n ,'
                '\r\n ,'{{# if(item2.type === \"checkbox\"){ }}' //复选框\r\n ,''\r\n ,'{{# } else { }}'\r\n ,'{{-item2.title||\"\"}}'\r\n ,'{{# if(isSort){ }}'\r\n ,''\r\n ,'{{# } }}'\r\n ,'{{# } }}'\r\n ,'
                '\r\n ,'
                '].join('');\r\n };\r\n\r\n // tbody 区域模板\r\n var TPL_BODY = [''\r\n ,''\r\n ,'
                '].join('');\r\n\r\n // 主模板\r\n var TPL_MAIN = [\r\n ,'{{# if(d.data.toolbar){ }}'\r\n ,'
                '\r\n ,'
                '\r\n ,'
                '\r\n ,'
                '\r\n ,'{{# } }}'\r\n\r\n ,'
                '\r\n ,'{{# if(d.data.loading){ }}'\r\n ,'
                '\r\n ,'
                '\r\n ,'{{# if(typeof d.data.loading === \"string\"){ }}'\r\n ,'{{- d.data.loading}}'\r\n ,'{{# } else{ }}'\r\n ,''\r\n ,'{{# } }}'\r\n ,'
                '\r\n ,'
                '\r\n ,'{{# } }}'\r\n\r\n ,'{{# var left, right; }}'\r\n ,'
                '\r\n ,TPL_HEADER()\r\n ,'
                '\r\n ,'
                '\r\n ,TPL_BODY\r\n ,'
                '\r\n\r\n ,'{{# if(left){ }}'\r\n ,'
                '\r\n ,'
                '\r\n ,TPL_HEADER({fixed: true})\r\n ,'
                '\r\n ,'
                '\r\n ,TPL_BODY\r\n ,'
                '\r\n ,'
                '\r\n ,'{{# }; }}'\r\n\r\n ,'{{# if(right){ }}'\r\n ,'
                '\r\n ,'
                '\r\n ,TPL_HEADER({fixed: 'right'})\r\n ,'
                '\r\n ,'
                '\r\n ,'
                '\r\n ,TPL_BODY\r\n ,'
                '\r\n ,'
                '\r\n ,'{{# }; }}'\r\n ,'
                '\r\n\r\n ,'{{# if(d.data.totalRow){ }}'\r\n ,'
                '\r\n ,''\r\n ,''\r\n , '
                Total
                '\r\n ,'
                '\r\n ,'{{# } }}'\r\n\r\n ,'
                '\r\n ,'
                '\r\n ,'
                '\r\n ].join('');\r\n\r\n var _WIN = $(window);\r\n var _DOC = $(document);\r\n\r\n // constructor\r\n var Class = function(options){\r\n var that = this;\r\n that.index = ++table.index;\r\n that.config = $.extend({}, that.config, table.config, options);\r\n that.render();\r\n };\r\n\r\n // 初始默认配置\r\n Class.prototype.config = {\r\n limit: 10, // 每页显示的数量\r\n loading: true, // 请求数据时,是否显示 loading\r\n escape: true, // 是否开启 HTML 编码功能,即转义 html 原文\r\n cellMinWidth: 60, // 所有单元格默认最小宽度\r\n cellMaxWidth: Number.MAX_VALUE, // 所有单元格默认最大宽度\r\n editTrigger: 'click', // 单元格编辑的事件触发方式\r\n defaultToolbar: ['filter', 'exports', 'print'], // 工具栏右侧图标\r\n defaultContextmenu: true, // 显示默认上下文菜单\r\n autoSort: true, // 是否前端自动排序。如果否,则需自主排序(通常为服务端处理好排序)\r\n text: {\r\n none: '无数据'\r\n },\r\n cols: []\r\n };\r\n\r\n // 表格渲染\r\n Class.prototype.render = function(type){\r\n var that = this;\r\n var options = that.config;\r\n\r\n options.elem = $(options.elem);\r\n options.where = options.where || {};\r\n\r\n // 初始化 id 属性 - 优先取 options > 元素 id > 自增索引\r\n var id = options.id = 'id' in options ? options.id : (\r\n options.elem.attr('id') || that.index\r\n );\r\n\r\n thisTable.that[id] = that; // 记录当前实例对象\r\n thisTable.config[id] = options; // 记录当前实例配置项\r\n\r\n //请求参数的自定义格式\r\n options.request = $.extend({\r\n pageName: 'page',\r\n limitName: 'limit'\r\n }, options.request)\r\n\r\n // 响应数据的自定义格式\r\n options.response = $.extend({\r\n statusName: 'code', //规定数据状态的字段名称\r\n statusCode: 0, //规定成功的状态码\r\n msgName: 'msg', //规定状态信息的字段名称\r\n dataName: 'data', //规定数据总数的字段名称\r\n totalRowName: 'totalRow', //规定数据统计的字段名称\r\n countName: 'count'\r\n }, options.response);\r\n\r\n //如果 page 传入 laypage 对象\r\n if(options.page !== null && typeof options.page === 'object'){\r\n options.limit = options.page.limit || options.limit;\r\n options.limits = options.page.limits || options.limits;\r\n that.page = options.page.curr = options.page.curr || 1;\r\n delete options.page.elem;\r\n delete options.page.jump;\r\n }\r\n\r\n if(!options.elem[0]) return that;\r\n\r\n // 若元素未设 lay-filter 属性,则取实例 id 值\r\n if(!options.elem.attr('lay-filter')){\r\n options.elem.attr('lay-filter', options.id);\r\n }\r\n\r\n // 仅重载数据\r\n if(type === 'reloadData'){\r\n // 请求数据\r\n return that.pullData(that.page, {\r\n type: 'reloadData'\r\n });\r\n }\r\n\r\n // 初始化索引\r\n options.index = that.index;\r\n that.key = options.id || options.index;\r\n\r\n // 初始化一些其他参数\r\n that.setInit();\r\n\r\n // 高度铺满:full-差距值\r\n if(options.height && /^full-.+$/.test(options.height)){\r\n that.fullHeightGap = options.height.split('-')[1];\r\n options.height = _WIN.height() - (parseFloat(that.fullHeightGap) || 0);\r\n } else if (options.height && /^#\\w+\\S*-.+$/.test(options.height)) {\r\n var parentDiv = options.height.split(\"-\");\r\n that.parentHeightGap = parentDiv.pop();\r\n that.parentDiv = parentDiv.join(\"-\");\r\n options.height = $(that.parentDiv).height() - (parseFloat(that.parentHeightGap) || 0);\r\n } else if (typeof options.height === \"function\"){\r\n that.customHeightFunc = options.height;\r\n options.height = that.customHeightFunc();\r\n }\r\n\r\n // 开始插入替代元素\r\n var othis = options.elem;\r\n var hasRender = othis.next('.' + ELEM_VIEW);\r\n\r\n // 主容器\r\n var reElem = that.elem = $('
                ');\r\n\r\n // 添加 className\r\n reElem.addClass(function(){\r\n var arr = [\r\n ELEM_VIEW,\r\n ELEM_VIEW +'-'+ that.index,\r\n 'layui-form',\r\n 'layui-border-box'\r\n ];\r\n if(options.className) arr.push(options.className);\r\n return arr.join(' ');\r\n }()).attr(function(){\r\n var obj = {\r\n 'lay-filter': 'LAY-TABLE-FORM-DF-'+ that.index,\r\n 'style': function(){\r\n var arr = [];\r\n if(options.width) arr.push('width:'+ options.width + 'px;');\r\n // if(options.height) arr.push('height:'+ options.height + 'px;');\r\n return arr.join('')\r\n }()\r\n }\r\n obj[MOD_ID] = options.id;\r\n return obj;\r\n }()).html(laytpl(TPL_MAIN, {\r\n open: '{{', // 标签符前缀\r\n close: '}}' // 标签符后缀\r\n }).render({\r\n data: options,\r\n index: that.index //索引\r\n }));\r\n\r\n // 初始化样式\r\n that.renderStyle();\r\n\r\n // 生成替代元素\r\n if(hasRender[0]){\r\n that.resizeObserver && that.resizeObserver.unobserve(that.elem[0]);\r\n hasRender.remove(); // 如果已经渲染,则 Rerender\r\n }\r\n othis.after(reElem);\r\n\r\n // 各级容器\r\n that.layTool = reElem.find(ELEM_TOOL);\r\n that.layBox = reElem.find(ELEM_BOX);\r\n that.layHeader = reElem.find(ELEM_HEADER);\r\n that.layMain = reElem.find(ELEM_MAIN);\r\n that.layBody = reElem.find(ELEM_BODY);\r\n that.layFixed = reElem.find(ELEM_FIXED);\r\n that.layFixLeft = reElem.find(ELEM_FIXL);\r\n that.layFixRight = reElem.find(ELEM_FIXR);\r\n that.layTotal = reElem.find(ELEM_TOTAL);\r\n that.layPage = reElem.find(ELEM_PAGE);\r\n\r\n // 初始化头部工具栏\r\n that.renderToolbar();\r\n\r\n // 初始化底部分页栏\r\n that.renderPagebar();\r\n\r\n // 让表格平铺\r\n that.fullSize();\r\n\r\n that.pullData(that.page); // 请求数据\r\n that.events(); // 事件\r\n };\r\n\r\n // 根据列类型,定制化参数\r\n Class.prototype.initOpts = function(item){\r\n var that = this\r\n var options = that.config;\r\n var initWidth = {\r\n checkbox: 50,\r\n radio: 50,\r\n space: 30,\r\n numbers: 60\r\n };\r\n\r\n // 让 type 参数兼容旧版本\r\n if(item.checkbox) item.type = \"checkbox\";\r\n if(item.space) item.type = \"space\";\r\n if(!item.type) item.type = \"normal\";\r\n\r\n if(item.type !== \"normal\"){\r\n item.unresize = true;\r\n item.width = item.width || initWidth[item.type];\r\n }\r\n };\r\n\r\n //初始化一些参数\r\n Class.prototype.setInit = function(type){\r\n var that = this;\r\n var options = that.config;\r\n\r\n options.clientWidth = options.width || function(){ //获取容器宽度\r\n //如果父元素宽度为0(一般为隐藏元素),则继续查找上层元素,直到找到真实宽度为止\r\n var getWidth = function(parent){\r\n var width, isNone;\r\n parent = parent || options.elem.parent()\r\n width = parent.width();\r\n try {\r\n isNone = parent.css('display') === 'none';\r\n } catch(e){}\r\n if(parent[0] && (!width || isNone)) return getWidth(parent.parent());\r\n return width;\r\n };\r\n return getWidth();\r\n }();\r\n\r\n if(type === 'width') return options.clientWidth;\r\n // 初始化高度配置,如果设置了最高高度,以最高高度形式为准\r\n options.height = options.maxHeight || options.height;\r\n\r\n // 初始化 css 参数\r\n if(options.css && options.css.indexOf(ELEM_VIEW) === -1){\r\n var css = options.css.split('}');\r\n layui.each(css, function(index, value){\r\n if(value){\r\n css[index] = '.'+ ELEM_VIEW + '-'+ that.index + ' ' + value;\r\n }\r\n });\r\n options.css = css.join('}');\r\n }\r\n\r\n // 封装对 col 的配置处理\r\n var initChildCols = function (i1, item1, i2, item2) {\r\n //如果列参数为空,则移除\r\n if (!item2) {\r\n item1.splice(i2, 1);\r\n return;\r\n }\r\n\r\n item2.key = [options.index, i1, i2].join('-');\r\n item2.colspan = item2.colspan || 0;\r\n item2.rowspan = item2.rowspan || 0;\r\n\r\n //根据列类型,定制化参数\r\n that.initOpts(item2);\r\n\r\n //设置列的父列索引\r\n //如果是组合列,则捕获对应的子列\r\n var indexChild = i1 + (parseInt(item2.rowspan) || 1);\r\n if (indexChild < options.cols.length) { // 只要不是最后一层都会有子列\r\n item2.colGroup = true;\r\n var childIndex = 0;\r\n layui.each(options.cols[indexChild], function (i22, item22) {\r\n //如果子列已经被标注为{HAS_PARENT},或者子列累计 colspan 数等于父列定义的 colspan,则跳出当前子列循环\r\n if (item22.HAS_PARENT || (childIndex >= 1 && childIndex == (item2.colspan || 1))) return;\r\n\r\n item22.HAS_PARENT = true;\r\n item22.parentKey = [options.index, i1, i2].join('-') // i1 + '-' + i2;\r\n childIndex = childIndex + parseInt(item22.colspan > 1 ? item22.colspan : 1);\r\n initChildCols(indexChild, options.cols[indexChild], i22, item22);\r\n });\r\n } else {\r\n item2.colGroup = false;\r\n }\r\n item2.hide = item2.hide && !item2.colGroup || false; // 初始化中中间节点的hide信息不做处理,否则会出错,如果需要必须将其子节点也都同步成hide\r\n };\r\n\r\n // 初始化列参数\r\n layui.each(options.cols, function(i1, item1){\r\n layui.each(item1, function(i2, item2){\r\n if (i1) {\r\n delete item2.HAS_PARENT; // 去掉临时的计数排除标识,避免有新字段插入的时候重新计算被跳过导致下标出错的问题\r\n } else {\r\n initChildCols(i1, item1, i2, item2); // 只解析顶层节点由递归完成解析\r\n }\r\n });\r\n });\r\n\r\n };\r\n\r\n // 初始化样式\r\n Class.prototype.renderStyle = function() {\r\n var that = this;\r\n var options = that.config;\r\n var index = that.index;\r\n var text = [];\r\n\r\n // 单元格宽度\r\n layui.each(options.cols, function(i1, item1) {\r\n layui.each(item1, function(i2, item2) {\r\n var key = [index, i1, i2].join('-');\r\n var val = ['width: ', (item2.width || options.cellMinWidth), 'px'].join('');\r\n text.push('.laytable-cell-'+ key +'{'+ val +'}');\r\n });\r\n });\r\n\r\n // 自定义行样式\r\n (function (lineStyle) {\r\n if (!lineStyle) return;\r\n var trClassName = '.layui-table-view-'+ index +' .layui-table-body .layui-table tr';\r\n var rules = lineStyle.split(';');\r\n var cellMaxHeight = 'none';\r\n\r\n // 计算单元格最大高度\r\n layui.each(rules, function(i, rule) {\r\n rule = rule.split(':');\r\n if (rule[0] === 'height') {\r\n var val = parseFloat(rule[1]);\r\n if (!isNaN(val)) cellMaxHeight = (val - 1) + 'px';\r\n return true;\r\n }\r\n });\r\n\r\n // 多行相关样式\r\n layui.each([\r\n '{'+ lineStyle +'}',\r\n '.layui-table-cell{height: auto; max-height: '+ cellMaxHeight +'; white-space: normal; text-overflow: clip;}',\r\n '> td:hover > .layui-table-cell{overflow: auto;}'\r\n ].concat(\r\n device.ie ? [\r\n '.layui-table-edit{height: '+ cellMaxHeight +';}',\r\n 'td[data-edit]:hover:after{height: '+ cellMaxHeight +';}'\r\n ] : []\r\n ), function(i, val) {\r\n val && text.push(trClassName + ' ' + val);\r\n });\r\n })(options.lineStyle);\r\n\r\n // 自定义 css 属性\r\n if (options.css) text.push(options.css);\r\n\r\n // 生成 style\r\n lay.style({\r\n target: that.elem[0],\r\n text: text.join(''),\r\n id: 'DF-table-'+ index\r\n });\r\n };\r\n\r\n // 初始工具栏\r\n Class.prototype.renderToolbar = function(){\r\n var that = this\r\n var options = that.config\r\n\r\n // 添加工具栏左侧模板\r\n var leftDefaultTemp = [\r\n '
                ',\r\n '
                ',\r\n '
                '\r\n ].join('');\r\n var elemToolTemp = that.layTool.find('.layui-table-tool-temp');\r\n\r\n if(options.toolbar === 'default'){\r\n elemToolTemp.html(leftDefaultTemp);\r\n } else if(typeof options.toolbar === 'string'){\r\n var toolbarHtml = $(options.toolbar).html() || '';\r\n toolbarHtml && elemToolTemp.html(\r\n laytpl(toolbarHtml).render(options)\r\n );\r\n }\r\n\r\n // 添加工具栏右侧面板\r\n var layout = {\r\n filter: {\r\n title: '筛选列',\r\n layEvent: 'LAYTABLE_COLS',\r\n icon: 'layui-icon-cols'\r\n },\r\n exports: {\r\n title: '导出',\r\n layEvent: 'LAYTABLE_EXPORT',\r\n icon: 'layui-icon-export'\r\n },\r\n print: {\r\n title: '打印',\r\n layEvent: 'LAYTABLE_PRINT',\r\n icon: 'layui-icon-print'\r\n }\r\n }, iconElem = [];\r\n\r\n if(typeof options.defaultToolbar === 'object'){\r\n layui.each(options.defaultToolbar, function(i, item){\r\n var thisItem = typeof item === 'string' ? layout[item] : item;\r\n if(thisItem){\r\n iconElem.push('
                '\r\n +''\r\n +'
                ');\r\n }\r\n });\r\n }\r\n that.layTool.find('.layui-table-tool-self').html(iconElem.join(''));\r\n };\r\n\r\n // 分页栏\r\n Class.prototype.renderPagebar = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n var layPagebar = that.layPagebar = $('
                ');\r\n\r\n // 开启分页栏自定义模板\r\n if(options.pagebar){\r\n var pagebarHtml = $(options.pagebar).html() || '';\r\n pagebarHtml && layPagebar.append(laytpl(pagebarHtml).render(options));\r\n that.layPage.append(layPagebar);\r\n }\r\n };\r\n\r\n // 同步表头父列的相关值\r\n Class.prototype.setParentCol = function(hide, parentKey){\r\n var that = this;\r\n var options = that.config;\r\n\r\n var parentTh = that.layHeader.find('th[data-key=\"'+ parentKey +'\"]'); // 获取父列元素\r\n var parentColspan = parseInt(parentTh.attr('colspan')) || 0;\r\n\r\n if(parentTh[0]){\r\n var arrParentKey = parentKey.split('-');\r\n var getThisCol = options.cols[arrParentKey[1]][arrParentKey[2]];\r\n\r\n hide ? parentColspan-- : parentColspan++;\r\n\r\n parentTh.attr('colspan', parentColspan);\r\n parentTh[parentColspan ? 'removeClass' : 'addClass'](HIDE); // 如果子列显示,父列必然需要显示\r\n\r\n getThisCol.colspan2 = parentColspan; // 更新实际的 colspan 数\r\n getThisCol.hide = parentColspan < 1; // 同步 hide 参数\r\n\r\n // 递归,继续往上查询是否有父列\r\n var nextParentKey = parentTh.data('parentkey');\r\n nextParentKey && that.setParentCol(hide, nextParentKey);\r\n }\r\n };\r\n\r\n // 多级表头补丁\r\n Class.prototype.setColsPatch = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 同步表头父列的相关值\r\n layui.each(options.cols, function(i1, item1){\r\n layui.each(item1, function(i2, item2){\r\n if(item2.hide){\r\n that.setParentCol(item2.hide, item2.parentKey);\r\n }\r\n });\r\n });\r\n };\r\n\r\n // 设置组合表头的最大宽度\r\n Class.prototype.setGroupWidth = function(th){\r\n var that = this;\r\n var options = that.config;\r\n\r\n if(options.cols.length <= 1) return;\r\n\r\n // 获取表头组合\r\n var groups = that.layHeader.find((\r\n // 根据当前活动的表头 parentkey 属性查找其组合表头\r\n th ? ('th[data-key='+ th.data('parentkey') +']>') : ''\r\n ) + '.' + ELEM_GROUP); // 若无指向当前活动表头,则自下而上获取所有组合表头\r\n\r\n groups.css('width', 0);\r\n layui.each(groups.get().reverse(), function(){\r\n var othis = $(this);\r\n var key = othis.parent().data('key');\r\n var maxWidth = 0;\r\n\r\n that.layHeader.eq(0).find('th[data-parentkey='+ key +']').width(function(i, width){\r\n var oTh = $(this);\r\n if(oTh.hasClass(HIDE)) return;\r\n width > 0 && (maxWidth += width);\r\n });\r\n\r\n // 给组合表头赋值最大宽度\r\n if(maxWidth) othis.css('max-width', maxWidth - 1);\r\n\r\n // 若当前活动的组合表头仍存在上级,则继续向上设置\r\n if(th && othis.parent().data('parentkey')){\r\n that.setGroupWidth(othis.parent());\r\n }\r\n });\r\n groups.css('width', 'auto');\r\n };\r\n\r\n // 动态分配列宽\r\n Class.prototype.setColsWidth = function(){\r\n var that = this;\r\n var options = that.config;\r\n var colNums = 0; // 列个数\r\n var autoColNums = 0; // 自动列宽的列个数\r\n var autoWidth = 0; // 自动列分配的宽度\r\n var countWidth = 0; // 所有列总宽度和\r\n var cntrWidth = that.setInit('width');\r\n\r\n // 统计列个数\r\n that.eachCols(function(i, item){\r\n item.hide || colNums++;\r\n });\r\n\r\n // 减去边框差和滚动条宽\r\n cntrWidth = cntrWidth - function(){\r\n return (options.skin === 'line' || options.skin === 'nob') ? 2 : colNums + 1;\r\n }() - that.getScrollWidth(that.layMain[0]) - 1;\r\n\r\n // 计算自动分配的宽度\r\n var getAutoWidth = function(back){\r\n // 遍历所有列\r\n layui.each(options.cols, function(i1, item1){\r\n layui.each(item1, function(i2, item2){\r\n var width = 0;\r\n var minWidth = item2.minWidth || options.cellMinWidth; // 最小宽度\r\n var maxWidth = item2.maxWidth || options.cellMaxWidth; // 最大宽度\r\n\r\n if(!item2){\r\n item1.splice(i2, 1);\r\n return;\r\n }\r\n\r\n if(item2.colGroup || item2.hide) return;\r\n\r\n if(!back){\r\n width = item2.width || 0;\r\n if(/\\d+%$/.test(width)){ // 列宽为百分比\r\n width = Math.floor((parseFloat(width) / 100) * cntrWidth);\r\n width < minWidth && (width = minWidth);\r\n width > maxWidth && (width = maxWidth);\r\n } else if(!width){ // 列宽未填写\r\n item2.width = width = 0;\r\n autoColNums++;\r\n } else if(item2.type === 'normal'){\r\n // 若 width 小于 minWidth, 则将 width 值自动设为 minWidth 的值\r\n width < minWidth && (item2.width = width = minWidth);\r\n // 若 width 大于 maxWidth, 则将 width 值自动设为 maxWidth 的值\r\n width > maxWidth && (item2.width = width = maxWidth);\r\n }\r\n } else if(autoWidth && autoWidth < minWidth){\r\n autoColNums--;\r\n width = minWidth;\r\n } else if(autoWidth && autoWidth > maxWidth){\r\n autoColNums--;\r\n width = maxWidth;\r\n }\r\n\r\n if(item2.hide) width = 0;\r\n countWidth = countWidth + width;\r\n });\r\n });\r\n\r\n // 如果未填充满,则将剩余宽度平分\r\n (cntrWidth > countWidth && autoColNums > 0) && (\r\n autoWidth = (cntrWidth - countWidth) / autoColNums\r\n );\r\n }\r\n\r\n getAutoWidth();\r\n getAutoWidth(true); // 重新检测分配的宽度是否低于最小列宽\r\n\r\n // 记录自动列数\r\n that.autoColNums = autoColNums = autoColNums > 0 ? autoColNums : 0;\r\n\r\n // 设置列宽\r\n that.eachCols(function(i3, item3){\r\n var minWidth = item3.minWidth || options.cellMinWidth;\r\n var maxWidth = item3.maxWidth || options.cellMaxWidth;\r\n\r\n if(item3.colGroup || item3.hide) return;\r\n\r\n // 给未分配宽的列平均分配宽\r\n if(item3.width === 0){\r\n that.cssRules(item3.key, function(item){\r\n item.style.width = Math.floor(function(){\r\n if(autoWidth < minWidth) return minWidth;\r\n if(autoWidth > maxWidth) return maxWidth;\r\n return autoWidth;\r\n }()) + 'px';\r\n });\r\n }\r\n\r\n // 给设定百分比的列分配列宽\r\n else if(/\\d+%$/.test(item3.width)){\r\n that.cssRules(item3.key, function(item){\r\n var width = Math.floor((parseFloat(item3.width) / 100) * cntrWidth);\r\n width < minWidth && (width = minWidth);\r\n width > maxWidth && (width = maxWidth);\r\n item.style.width = width + 'px';\r\n });\r\n }\r\n\r\n // 给拥有普通 width 值的列分配最新列宽\r\n else {\r\n that.cssRules(item3.key, function(item){\r\n item.style.width = item3.width + 'px';\r\n });\r\n }\r\n });\r\n\r\n // 填补 Math.floor 造成的数差\r\n var patchNums = that.layMain.width() - that.getScrollWidth(that.layMain[0])\r\n - that.layMain.children('table').outerWidth();\r\n\r\n if(that.autoColNums > 0 && patchNums >= -colNums && patchNums <= colNums){\r\n var getEndTh = function(th){\r\n var field;\r\n th = th || that.layHeader.eq(0).find('thead > tr:first-child > th:last-child')\r\n field = th.data('field');\r\n if(!field && th.prev()[0]){\r\n return getEndTh(th.prev())\r\n }\r\n return th;\r\n };\r\n var th = getEndTh();\r\n var key = th.data('key');\r\n\r\n that.cssRules(key, function(item){\r\n var width = item.style.width || th.outerWidth();\r\n item.style.width = (parseFloat(width) + patchNums) + 'px';\r\n\r\n // 二次校验,如果仍然出现横向滚动条(通常是 1px 的误差导致)\r\n if(that.layMain.height() - that.layMain.prop('clientHeight') > 0){\r\n item.style.width = (parseFloat(item.style.width) - 1) + 'px';\r\n }\r\n });\r\n }\r\n\r\n that.setGroupWidth();\r\n\r\n // 如果表格内容为空(无数据 或 请求异常)\r\n if (that.layMain.find('tbody').is(\":empty\")) {\r\n // 将表格宽度设置为跟表头一样的宽度,使之可以出现底部滚动条,以便滚动查看所有字段\r\n var headerWidth = that.layHeader.first().children('table').width()\r\n that.layMain.find('table').width(headerWidth);\r\n } else {\r\n that.layMain.find('table').width('auto');\r\n }\r\n\r\n };\r\n\r\n // 重置表格尺寸/结构\r\n Class.prototype.resize = function(){\r\n var that = this;\r\n\r\n if (!that.layMain) return;\r\n\r\n that.fullSize(); // 让表格铺满\r\n that.setColsWidth(); // 自适应列宽\r\n that.scrollPatch(); // 滚动条补丁\r\n };\r\n\r\n // 表格重载\r\n Class.prototype.reload = function(options, deep, type){\r\n var that = this;\r\n\r\n options = options || {};\r\n delete that.haveInit;\r\n\r\n // 防止数组深度合并\r\n layui.each(options, function(key, item){\r\n if(layui.type(item) === 'array') delete that.config[key];\r\n });\r\n\r\n // 对参数进行深度或浅扩展\r\n that.config = $.extend(deep, {}, that.config, options);\r\n if (type !== 'reloadData') {\r\n layui.each(that.config.cols, function (i1, item1) {\r\n layui.each(item1, function (i2, item2) {\r\n delete item2.colspan2;\r\n })\r\n })\r\n delete that.config.HAS_SET_COLS_PATCH;\r\n }\r\n // 执行渲染\r\n that.render(type);\r\n };\r\n\r\n // 异常提示\r\n Class.prototype.errorView = function(html){\r\n var that = this\r\n ,elemNone = that.layMain.find('.'+ NONE)\r\n ,layNone = $('
                '+ (html || 'Error') +'
                ');\r\n\r\n if(elemNone[0]){\r\n that.layNone.remove();\r\n elemNone.remove();\r\n }\r\n\r\n that.layFixed.addClass(HIDE);\r\n that.layMain.find('tbody').html('');\r\n\r\n that.layMain.append(that.layNone = layNone);\r\n\r\n // 异常情况下对 page 和 total 的内容处理\r\n that.layTotal.addClass(HIDE_V);\r\n that.layPage.find(ELEM_PAGE_VIEW).addClass(HIDE_V);\r\n\r\n table.cache[that.key] = []; //格式化缓存数据\r\n\r\n that.syncCheckAll();\r\n that.renderForm();\r\n that.setColsWidth();\r\n that.loading(false);\r\n };\r\n\r\n // 初始页码\r\n Class.prototype.page = 1;\r\n\r\n // 获得数据\r\n Class.prototype.pullData = function(curr, opts){\r\n var that = this;\r\n var options = that.config;\r\n // 同步表头父列的相关值\r\n options.HAS_SET_COLS_PATCH || that.setColsPatch();\r\n options.HAS_SET_COLS_PATCH = true;\r\n var request = options.request;\r\n var response = options.response;\r\n var res;\r\n var sort = function(){\r\n if(typeof options.initSort === 'object'){\r\n that.sort({\r\n field: options.initSort.field,\r\n type: options.initSort.type,\r\n reloadType: opts.type\r\n });\r\n }\r\n };\r\n var done = function(res, origin){\r\n that.setColsWidth();\r\n that.loading(false);\r\n typeof options.done === 'function' && options.done(\r\n res, curr, res[response.countName], origin\r\n );\r\n };\r\n\r\n opts = opts || {};\r\n\r\n // 数据拉取前的回调\r\n typeof options.before === 'function' && options.before(\r\n options\r\n );\r\n that.startTime = new Date().getTime(); // 渲染开始时间\r\n\r\n if (opts.renderData) { // 将 cache 信息重新渲染\r\n res = {};\r\n res[response.dataName] = table.cache[that.key];\r\n res[response.countName] = options.url ? (layui.type(options.page) === 'object' ? options.page.count : res[response.dataName].length) : options.data.length;\r\n\r\n // 记录合计行数据\r\n if(typeof options.totalRow === 'object'){\r\n res[response.totalRowName] = $.extend({}, that.totalRow);\r\n }\r\n\r\n that.renderData({\r\n res: res,\r\n curr: curr,\r\n count: res[response.countName],\r\n type: opts.type,\r\n sort: true\r\n }), done(res, 'renderData');\r\n } else if(options.url){ // Ajax请求\r\n var params = {};\r\n // 当 page 开启,默认自动传递 page、limit 参数\r\n if(options.page){\r\n params[request.pageName] = curr;\r\n params[request.limitName] = options.limit;\r\n }\r\n\r\n // 参数\r\n var data = $.extend(params, options.where);\r\n if(options.contentType && options.contentType.indexOf(\"application/json\") == 0){ // 提交 json 格式\r\n data = JSON.stringify(data);\r\n }\r\n\r\n that.loading(true);\r\n\r\n $.ajax({\r\n type: options.method || 'get',\r\n url: options.url,\r\n contentType: options.contentType,\r\n data: data,\r\n dataType: options.dataType || 'json',\r\n jsonpCallback: options.jsonpCallback,\r\n headers: options.headers || {},\r\n complete: typeof options.complete === 'function' ? options.complete : undefined,\r\n success: function(res){\r\n // 若有数据解析的回调,则获得其返回的数据\r\n if(typeof options.parseData === 'function'){\r\n res = options.parseData(res) || res;\r\n }\r\n // 检查数据格式是否符合规范\r\n if(res[response.statusName] != response.statusCode){\r\n that.errorView(\r\n res[response.msgName] ||\r\n ('返回的数据不符合规范,正确的成功状态码应为:\"'+ response.statusName +'\": '+ response.statusCode)\r\n );\r\n } else {\r\n that.totalRow = res[response.totalRowName];\r\n that.renderData({\r\n res: res,\r\n curr: curr,\r\n count: res[response.countName],\r\n type: opts.type\r\n }), sort();\r\n\r\n // 耗时(接口请求+视图渲染)\r\n options.time = (new Date().getTime() - that.startTime) + ' ms';\r\n }\r\n done(res, opts.type);\r\n },\r\n error: function(e, msg){\r\n that.errorView('请求异常,错误提示:'+ msg);\r\n typeof options.error === 'function' && options.error(e, msg);\r\n }\r\n });\r\n } else if(layui.type(options.data) === 'array'){ //已知数据\r\n res = {};\r\n var startLimit = curr*options.limit - options.limit;\r\n var newData = options.data.concat();\r\n\r\n res[response.dataName] = options.page\r\n ? newData.splice(startLimit, options.limit)\r\n : newData;\r\n res[response.countName] = options.data.length;\r\n\r\n // 记录合计行数据\r\n if(typeof options.totalRow === 'object'){\r\n res[response.totalRowName] = $.extend({}, options.totalRow);\r\n }\r\n that.totalRow = res[response.totalRowName];\r\n\r\n that.renderData({\r\n res: res,\r\n curr: curr,\r\n count: res[response.countName],\r\n type: opts.type\r\n }), sort();\r\n\r\n done(res, opts.type);\r\n }\r\n };\r\n\r\n // 遍历表头\r\n Class.prototype.eachCols = function(callback){\r\n var that = this;\r\n table.eachCols(null, callback, that.config.cols);\r\n return that;\r\n };\r\n\r\n // 获取表头参数项\r\n Class.prototype.col = function(key){\r\n try {\r\n key = key.split('-');\r\n return this.config.cols[key[1]][key[2]] || {};\r\n } catch(e){\r\n hint.error(e);\r\n return {};\r\n }\r\n };\r\n\r\n Class.prototype.getTrHtml = function(data, sort, curr, trsObj) {\r\n var that = this;\r\n var options = that.config;\r\n var trs = trsObj && trsObj.trs || [];\r\n var trs_fixed = trsObj && trsObj.trs_fixed || [];\r\n var trs_fixed_r = trsObj && trsObj.trs_fixed_r || [];\r\n curr = curr || 1\r\n\r\n layui.each(data, function(i1, item1){\r\n var tds = [];\r\n var tds_fixed = [];\r\n var tds_fixed_r = [];\r\n var numbers = i1 + options.limit*(curr - 1) + 1; // 序号\r\n\r\n // 数组值是否为 object,如果不是,则自动转为 object\r\n if(typeof item1 !== 'object'){\r\n data[i1] = item1 = {LAY_KEY: item1};\r\n try {\r\n table.cache[that.key][i1] = item1;\r\n } catch(e) {}\r\n }\r\n\r\n //若数据项为空数组,则不往下执行(因为删除数据时,会将原有数据设置为 [])\r\n if(layui.type(item1) === 'array' && item1.length === 0) return;\r\n\r\n // 加入序号保留字段\r\n item1[table.config.numbersName] = numbers;\r\n\r\n // 记录下标索引,用于恢复排序\r\n if(!sort) item1[table.config.indexName] = i1;\r\n\r\n // 遍历表头\r\n that.eachCols(function(i3, item3){\r\n var field = item3.field || i3;\r\n var key = item3.key;\r\n var content = item1[field];\r\n\r\n if(content === undefined || content === null) content = '';\r\n if(item3.colGroup) return;\r\n\r\n // td 内容\r\n var td = [''\r\n ,'
                '\r\n + function(){\r\n var tplData = $.extend(true, {\r\n LAY_COL: item3\r\n }, item1);\r\n var checkName = table.config.checkName;\r\n var disabledName = table.config.disabledName;\r\n\r\n // 渲染不同风格的列\r\n switch(item3.type){\r\n case 'checkbox': // 复选\r\n return '';\r\n //break;\r\n case 'radio': // 单选\r\n return '';\r\n //break;\r\n case 'numbers':\r\n return numbers;\r\n //break;\r\n }\r\n\r\n //解析工具列模板\r\n if(item3.toolbar){\r\n return laytpl($(item3.toolbar).html()||'').render(tplData);\r\n }\r\n return parseTempData.call(that, {\r\n item3: item3\r\n ,content: content\r\n ,tplData: tplData\r\n });\r\n }()\r\n ,'
                '].join('');\r\n\r\n tds.push(td);\r\n if(item3.fixed && item3.fixed !== 'right') tds_fixed.push(td);\r\n if(item3.fixed === 'right') tds_fixed_r.push(td);\r\n });\r\n\r\n // 添加 tr 属性\r\n var trAttr = function(){\r\n var arr = ['data-index=\"'+ i1 +'\"'];\r\n if(item1[table.config.checkName]) arr.push('class=\"'+ ELEM_CHECKED +'\"');\r\n return arr.join(' ');\r\n }();\r\n\r\n trs.push(''+ tds.join('') + '');\r\n trs_fixed.push(''+ tds_fixed.join('') + '');\r\n trs_fixed_r.push(''+ tds_fixed_r.join('') + '');\r\n });\r\n\r\n return {\r\n trs: trs,\r\n trs_fixed: trs_fixed,\r\n trs_fixed_r: trs_fixed_r\r\n }\r\n }\r\n\r\n // 返回行节点代码\r\n table.getTrHtml = function (id, data) {\r\n var that = getThisTable(id);\r\n return that.getTrHtml(data, null, that.page);\r\n }\r\n\r\n // 数据渲染\r\n Class.prototype.renderData = function(opts){\r\n var that = this;\r\n var options = that.config;\r\n\r\n var res = opts.res;\r\n var curr = opts.curr;\r\n var count = that.count = opts.count;\r\n var sort = opts.sort;\r\n\r\n var data = res[options.response.dataName] || []; //列表数据\r\n var totalRowData = res[options.response.totalRowName]; //合计行数据\r\n var trs = [];\r\n var trs_fixed = [];\r\n var trs_fixed_r = [];\r\n\r\n // 渲染视图\r\n var render = function(){ // 后续性能提升的重点\r\n if(!sort && that.sortKey){\r\n return that.sort({\r\n field: that.sortKey.field,\r\n type: that.sortKey.sort,\r\n pull: true,\r\n reloadType: opts.type\r\n });\r\n }\r\n that.getTrHtml(data, sort, curr, {\r\n trs: trs,\r\n trs_fixed: trs_fixed,\r\n trs_fixed_r: trs_fixed_r\r\n });\r\n\r\n // 容器的滚动条位置\r\n if(!(options.scrollPos === 'fixed' && opts.type === 'reloadData')){\r\n that.layBody.scrollTop(0);\r\n }\r\n if(options.scrollPos === 'reset'){\r\n that.layBody.scrollLeft(0);\r\n }\r\n\r\n that.layMain.find('.'+ NONE).remove();\r\n that.layMain.find('tbody').html(trs.join(''));\r\n that.layFixLeft.find('tbody').html(trs_fixed.join(''));\r\n that.layFixRight.find('tbody').html(trs_fixed_r.join(''));\r\n\r\n // 渲染表单\r\n that.syncCheckAll();\r\n that.renderForm();\r\n\r\n // 因为 page 参数有可能发生变化 先重新铺满\r\n that.fullSize();\r\n\r\n // 滚动条补丁\r\n that.haveInit ? that.scrollPatch() : setTimeout(function(){\r\n that.scrollPatch();\r\n }, 50);\r\n that.haveInit = true;\r\n\r\n layer.close(that.tipsIndex);\r\n };\r\n\r\n table.cache[that.key] = data; //记录数据\r\n\r\n //显示隐藏合计栏\r\n that.layTotal[data.length == 0 ? 'addClass' : 'removeClass'](HIDE_V);\r\n\r\n //显示隐藏分页栏\r\n that.layPage[(options.page || options.pagebar) ? 'removeClass' : 'addClass'](HIDE);\r\n that.layPage.find(ELEM_PAGE_VIEW)[\r\n (!options.page || count == 0 || (data.length === 0 && curr == 1))\r\n ? 'addClass'\r\n : 'removeClass'\r\n ](HIDE_V);\r\n\r\n //如果无数据\r\n if(data.length === 0){\r\n return that.errorView(options.text.none);\r\n } else {\r\n that.layFixLeft.removeClass(HIDE);\r\n }\r\n\r\n //如果执行初始排序\r\n if(sort){\r\n return render();\r\n }\r\n\r\n //正常初始化数据渲染\r\n render(); //渲染数据\r\n that.renderTotal(data, totalRowData); //数据合计\r\n that.layTotal && that.layTotal.removeClass(HIDE);\r\n\r\n //同步分页状态\r\n if(options.page){\r\n options.page = $.extend({\r\n elem: 'layui-table-page' + options.index,\r\n count: count,\r\n limit: options.limit,\r\n limits: options.limits || [10,20,30,40,50,60,70,80,90],\r\n groups: 3,\r\n layout: ['prev', 'page', 'next', 'skip', 'count', 'limit'],\r\n prev: '',\r\n next: '',\r\n jump: function(obj, first){\r\n if(!first){\r\n //分页本身并非需要做以下更新,下面参数的同步,主要是因为其它处理统一用到了它们\r\n //而并非用的是 options.page 中的参数(以确保分页未开启的情况仍能正常使用)\r\n that.page = obj.curr; //更新页码\r\n options.limit = obj.limit; //更新每页条数\r\n\r\n that.pullData(obj.curr);\r\n }\r\n }\r\n }, options.page);\r\n options.page.count = count; //更新总条数\r\n laypage.render(options.page);\r\n }\r\n };\r\n\r\n // 重新渲染数据\r\n table.renderData = function (id) {\r\n var that = getThisTable(id);\r\n if (!that) {\r\n return;\r\n }\r\n\r\n that.pullData(that.page, {\r\n renderData: true,\r\n type: 'reloadData'\r\n });\r\n }\r\n\r\n // 数据合计行\r\n Class.prototype.renderTotal = function(data, totalRowData){\r\n var that = this;\r\n var options = that.config;\r\n var totalNums = {};\r\n\r\n if(!options.totalRow) return;\r\n\r\n layui.each(data, function(i1, item1){\r\n // 若数据项为空数组,则不往下执行(因为删除数据时,会将原有数据设置为 [])\r\n if(layui.type(item1) === 'array' && item1.length === 0) return;\r\n\r\n that.eachCols(function(i3, item3){\r\n var field = item3.field || i3\r\n ,content = item1[field];\r\n\r\n if(item3.totalRow){\r\n totalNums[field] = (totalNums[field] || 0) + (parseFloat(content) || 0);\r\n }\r\n });\r\n });\r\n\r\n that.dataTotal = []; // 记录合计行结果\r\n\r\n var tds = [];\r\n that.eachCols(function(i3, item3){\r\n var field = item3.field || i3;\r\n\r\n // 合计数据的特定字段\r\n var TOTAL_NUMS = totalRowData && totalRowData[item3.field];\r\n\r\n // 合计数据的小数点位数处理\r\n var decimals = 'totalRowDecimals' in item3 ? item3.totalRowDecimals : 2;\r\n var thisTotalNum = totalNums[field]\r\n ? parseFloat(totalNums[field] || 0).toFixed(decimals)\r\n : '';\r\n\r\n // td 显示内容\r\n var content = function(){\r\n var text = item3.totalRowText || '';\r\n var tplData = {\r\n LAY_COL: item3\r\n };\r\n\r\n tplData[field] = thisTotalNum;\r\n\r\n // 获取自动计算的合并内容\r\n var getContent = item3.totalRow ? (parseTempData.call(that, {\r\n item3: item3,\r\n content: thisTotalNum,\r\n tplData: tplData\r\n }) || text) : text;\r\n\r\n // 如果直接传入了合计行数据,则不输出自动计算的结果\r\n return TOTAL_NUMS || getContent;\r\n }();\r\n\r\n // 合计原始结果\r\n var total = TOTAL_NUMS || thisTotalNum || '';\r\n item3.field && that.dataTotal.push({\r\n field: item3.field,\r\n total: $('
                '+ content +'
                ').text()\r\n });\r\n\r\n // td 容器\r\n var td = ['',\r\n '
                ' + function(){\r\n var totalRow = item3.totalRow || options.totalRow;\r\n\r\n // 如果 totalRow 参数为字符类型,则解析为自定义模版\r\n if(typeof totalRow === 'string'){\r\n return laytpl(totalRow).render($.extend({\r\n TOTAL_NUMS: TOTAL_NUMS || totalNums[field],\r\n TOTAL_ROW: totalRowData || {},\r\n LAY_COL: item3\r\n }, item3));\r\n }\r\n return content;\r\n }(),\r\n '
                '].join('');\r\n\r\n tds.push(td);\r\n });\r\n\r\n var patchElem = that.layTotal.find('.layui-table-patch'); // 可能存在滚动条补丁\r\n that.layTotal.find('tbody').html('' + tds.join('') + (patchElem.length ? patchElem.get(0).outerHTML : '') + '');\r\n };\r\n\r\n //找到对应的列元素\r\n Class.prototype.getColElem = function(parent, key){\r\n var that = this;\r\n //var options = that.config;\r\n return parent.eq(0).find('.laytable-cell-'+ key + ':eq(0)');\r\n };\r\n\r\n // 渲染表单\r\n Class.prototype.renderForm = function(type){\r\n var that = this;\r\n var options = that.config;\r\n var filter = that.elem.attr('lay-filter');\r\n form.render(type, filter);\r\n };\r\n\r\n // 定向渲染表单\r\n Class.prototype.renderFormByElem = function(elem){\r\n layui.each(['input', 'select'], function(i, formType){\r\n form.render(elem.find(formType));\r\n })\r\n };\r\n\r\n // 同步全选按钮状态\r\n Class.prototype.syncCheckAll = function(){\r\n var that = this;\r\n var options = that.config;\r\n var checkAllElem = that.layHeader.find('input[name=\"layTableCheckbox\"]');\r\n var syncColsCheck = function(checked){\r\n that.eachCols(function(i, item){\r\n if(item.type === 'checkbox'){\r\n item[options.checkName] = checked;\r\n }\r\n });\r\n return checked;\r\n };\r\n var checkStatus = table.checkStatus(that.key);\r\n\r\n if(!checkAllElem[0]) return;\r\n\r\n // 选中状态\r\n syncColsCheck(checkStatus.isAll);\r\n checkAllElem.prop({\r\n checked: checkStatus.isAll,\r\n indeterminate: !checkStatus.isAll && checkStatus.data.length // 半选\r\n });\r\n form.render(checkAllElem);\r\n };\r\n\r\n // 标记当前活动行背景色\r\n Class.prototype.setRowActive = function(index, className, removeClass){\r\n var that = this;\r\n var options = that.config;\r\n var tr = that.layBody.find('tr[data-index=\"'+ index +'\"]');\r\n className = className || 'layui-table-click';\r\n\r\n if(removeClass) return tr.removeClass(className);\r\n\r\n tr.addClass(className);\r\n tr.siblings('tr').removeClass(className);\r\n };\r\n\r\n // 设置行选中状态\r\n Class.prototype.setRowChecked = function(opts){\r\n var that = this;\r\n var options = that.config;\r\n var isCheckAll = opts.index === 'all'; // 是否操作全部\r\n var isCheckMult = layui.type(opts.index) === 'array'; // 是否操作多个\r\n\r\n // 匹配行元素\r\n var tr = function(tr) {\r\n return isCheckAll ? tr : tr.filter(isCheckMult ? function() {\r\n var dataIndex = $(this).data('index');\r\n return opts.index.indexOf(dataIndex) !== -1;\r\n } : '[data-index=\"'+ opts.index +'\"]');\r\n }(that.layBody.find('tr'));\r\n\r\n // 默认属性\r\n opts = $.extend({\r\n type: 'checkbox' // 选中方式\r\n }, opts);\r\n\r\n // 同步数据选中属性值\r\n var thisData = table.cache[that.key];\r\n var existChecked = 'checked' in opts;\r\n\r\n // 若为单选框,则单向选中;若为复选框,则切换选中。\r\n var getChecked = function(value){\r\n return opts.type === 'radio' ? true : (existChecked ? opts.checked : !value)\r\n };\r\n\r\n // 设置选中状态\r\n layui.each(thisData, function(i, item){\r\n // 绕过空项和禁用项\r\n if(layui.type(item) === 'array' || item[options.disabledName]) return;\r\n\r\n // 匹配条件\r\n var matched = isCheckAll || (\r\n isCheckMult ? opts.index.indexOf(i) !== -1 : Number(opts.index) === i\r\n );\r\n\r\n // 设置匹配项的选中值\r\n if(matched){\r\n // 标记数据选中状态\r\n var checked = item[options.checkName] = getChecked(item[options.checkName]);\r\n\r\n // 标记当前行背景色\r\n var currTr = tr.filter('[data-index=\"'+ i +'\"]');\r\n currTr[checked ? 'addClass' : 'removeClass'](ELEM_CHECKED);\r\n\r\n // 若为 radio 类型,则取消其他行选中背景色\r\n if(opts.type === 'radio'){\r\n currTr.siblings().removeClass(ELEM_CHECKED);\r\n }\r\n } else if(opts.type === 'radio') {\r\n delete item[options.checkName];\r\n }\r\n });\r\n\r\n // 若存在复选框或单选框,则标注选中状态样式\r\n var checkedElem = tr.find('input[lay-type=\"'+ ({\r\n radio: 'layTableRadio',\r\n checkbox: 'layTableCheckbox'\r\n }[opts.type] || 'checkbox') +'\"]:not(:disabled)');\r\n var checkedSameElem = checkedElem.last();\r\n var fixRElem = checkedSameElem.closest(ELEM_FIXR);\r\n\r\n ( opts.type === 'radio' && fixRElem.hasClass(HIDE)\r\n ? checkedElem.first()\r\n : checkedElem ).prop('checked', getChecked(checkedSameElem.prop('checked')));\r\n\r\n that.syncCheckAll();\r\n that.renderForm(opts.type);\r\n };\r\n\r\n // 数据排序\r\n Class.prototype.sort = function(opts){ // field, type, pull, fromEvent\r\n var that = this;\r\n var field;\r\n var res = {};\r\n var options = that.config;\r\n var filter = options.elem.attr('lay-filter');\r\n var data = table.cache[that.key], thisData;\r\n\r\n opts = opts || {};\r\n\r\n // 字段匹配\r\n if(typeof opts.field === 'string'){\r\n field = opts.field;\r\n that.layHeader.find('th').each(function(i, item){\r\n var othis = $(this);\r\n var _field = othis.data('field');\r\n if(_field === opts.field){\r\n opts.field = othis;\r\n field = _field;\r\n return false;\r\n }\r\n });\r\n }\r\n\r\n try {\r\n field = field || opts.field.data('field');\r\n var key = opts.field.data('key');\r\n\r\n // 如果欲执行的排序已在状态中,则不执行渲染\r\n if(that.sortKey && !opts.pull){\r\n if(field === that.sortKey.field && opts.type === that.sortKey.sort){\r\n return;\r\n }\r\n }\r\n\r\n var elemSort = that.layHeader.find('th .laytable-cell-'+ key).find(ELEM_SORT);\r\n that.layHeader.find('th').find(ELEM_SORT).removeAttr('lay-sort'); // 清除其它标题排序状态\r\n elemSort.attr('lay-sort', opts.type || null);\r\n that.layFixed.find('th')\r\n } catch(e){\r\n hint.error('Table modules: sort field \\''+ field +'\\' not matched');\r\n }\r\n\r\n // 记录排序索引和类型\r\n that.sortKey = {\r\n field: field,\r\n sort: opts.type\r\n };\r\n\r\n // 默认为前端自动排序。如果否,则需自主排序(通常为服务端处理好排序)\r\n if(options.autoSort){\r\n if(opts.type === 'asc'){ //升序\r\n thisData = layui.sort(data, field, null, true);\r\n } else if(opts.type === 'desc'){ //降序\r\n thisData = layui.sort(data, field, true, true);\r\n } else { // 清除排序\r\n thisData = layui.sort(data, table.config.indexName, null, true);\r\n delete that.sortKey;\r\n delete options.initSort;\r\n }\r\n }\r\n\r\n res[options.response.dataName] = thisData || data;\r\n\r\n // 重载数据\r\n that.renderData({\r\n res: res,\r\n curr: that.page,\r\n count: that.count,\r\n sort: true,\r\n type: opts.reloadType\r\n });\r\n\r\n // 排序是否来自于点击表头事件触发\r\n if(opts.fromEvent){\r\n options.initSort = {\r\n field: field,\r\n type: opts.type\r\n };\r\n layui.event.call(opts.field, MOD_NAME, 'sort('+ filter +')', $.extend({\r\n config: options\r\n }, options.initSort));\r\n }\r\n };\r\n\r\n // 请求 loading\r\n Class.prototype.loading = function(show){\r\n var that = this;\r\n var options = that.config;\r\n\r\n if(options.loading){\r\n that.layBox.find(ELEM_INIT).toggleClass(HIDE_V, !show); \r\n }\r\n };\r\n\r\n // 获取对应单元格的 cssRules\r\n Class.prototype.cssRules = function(key, callback){\r\n var that = this;\r\n var style = that.elem.children('style')[0];\r\n\r\n lay.getStyleRules(style, function(item){\r\n if (item.selectorText === ('.laytable-cell-'+ key)) {\r\n callback(item);\r\n return true;\r\n }\r\n });\r\n };\r\n\r\n // 让表格铺满\r\n Class.prototype.fullSize = function(){\r\n var that = this;\r\n var options = that.config;\r\n var height = options.height;\r\n var bodyHeight;\r\n var MIN_HEIGHT = 135;\r\n\r\n if(that.fullHeightGap){\r\n height = _WIN.height() - that.fullHeightGap;\r\n if(height < MIN_HEIGHT) height = MIN_HEIGHT;\r\n // that.elem.css('height', height);\r\n } else if (that.parentDiv && that.parentHeightGap) {\r\n height = $(that.parentDiv).height() - that.parentHeightGap;\r\n if(height < MIN_HEIGHT) height = MIN_HEIGHT;\r\n // that.elem.css(\"height\", height);\r\n } else if (that.customHeightFunc) {\r\n height = that.customHeightFunc();\r\n if(height < MIN_HEIGHT) height = MIN_HEIGHT;\r\n }\r\n\r\n // 如果多级表头,则填补表头高度\r\n if(options.cols.length > 1){\r\n // 补全高度\r\n var th = that.layFixed.find(ELEM_HEADER).find('th');\r\n // 固定列表头同步跟本体 th 一致高度\r\n var headerMain = that.layHeader.first();\r\n layui.each(th, function (thIndex, thElem) {\r\n thElem = $(thElem);\r\n thElem.height(headerMain.find('th[data-key=\"' + thElem.attr('data-key') + '\"]').height() + 'px');\r\n })\r\n }\r\n\r\n if(!height) return;\r\n\r\n // 减去列头区域的高度 --- 此处的数字常量是为了防止容器处在隐藏区域无法获得高度的问题,只对默认尺寸表格做支持\r\n bodyHeight = parseFloat(height) - (that.layHeader.outerHeight() || 39)\r\n\r\n // 减去工具栏的高度\r\n if(options.toolbar){\r\n bodyHeight -= (that.layTool.outerHeight() || 51);\r\n }\r\n\r\n // 减去统计栏的高度\r\n if(options.totalRow){\r\n bodyHeight -= (that.layTotal.outerHeight() || 40);\r\n }\r\n\r\n // 减去分页栏的高度\r\n if(options.page || options.pagebar){\r\n bodyHeight -= (that.layPage.outerHeight() || 43);\r\n }\r\n\r\n if (options.maxHeight) {\r\n layui.each({elem: height, layMain: bodyHeight}, function (elemName, elemHeight) {\r\n that[elemName].css({\r\n height: 'auto',\r\n maxHeight: elemHeight + 'px'\r\n });\r\n });\r\n } else {\r\n that.layMain.outerHeight(bodyHeight);\r\n }\r\n };\r\n\r\n //获取滚动条宽度\r\n Class.prototype.getScrollWidth = function(elem){\r\n var width;\r\n if(elem){\r\n width = elem.offsetWidth - elem.clientWidth;\r\n } else {\r\n elem = document.createElement('div');\r\n elem.style.width = '100px';\r\n elem.style.height = '100px';\r\n elem.style.overflowY = 'scroll';\r\n\r\n document.body.appendChild(elem);\r\n width = elem.offsetWidth - elem.clientWidth;\r\n document.body.removeChild(elem);\r\n }\r\n return width;\r\n };\r\n\r\n // 滚动条补丁\r\n Class.prototype.scrollPatch = function(){\r\n var that = this;\r\n var layMainTable = that.layMain.children('table');\r\n var scrollWidth = that.layMain.width() - that.layMain.prop('clientWidth'); // 纵向滚动条宽度\r\n var scrollHeight = that.layMain.height() - that.layMain.prop('clientHeight'); // 横向滚动条高度\r\n var getScrollWidth = that.getScrollWidth(that.layMain[0]); // 获取主容器滚动条宽度,如果有的话\r\n var outWidth = layMainTable.outerWidth() - that.layMain.width(); // 表格内容器的超出宽度\r\n\r\n // 添加补丁\r\n var addPatch = function(elem){\r\n if(scrollWidth && scrollHeight){\r\n elem = elem.eq(0);\r\n if(!elem.find('.layui-table-patch')[0]){\r\n var patchElem = $('
                '); // 补丁元素\r\n patchElem.find('div').css({\r\n width: scrollWidth\r\n });\r\n elem.find('tr').append(patchElem);\r\n }\r\n } else {\r\n elem.find('.layui-table-patch').remove();\r\n }\r\n };\r\n\r\n addPatch(that.layHeader);\r\n addPatch(that.layTotal);\r\n\r\n // 固定列区域高度\r\n var mainHeight = that.layMain.height();\r\n var fixHeight = mainHeight - scrollHeight;\r\n\r\n that.layFixed.find(ELEM_BODY).css(\r\n 'height',\r\n layMainTable.height() >= fixHeight ? fixHeight : 'auto'\r\n ).scrollTop(that.layMain.scrollTop()); // 固定列滚动条高度\r\n\r\n // 表格宽度小于容器宽度时,隐藏固定列\r\n that.layFixRight[\r\n (table.cache[that.key] && table.cache[that.key].length) && outWidth > 0\r\n ? 'removeClass'\r\n : 'addClass'\r\n ](HIDE);\r\n\r\n // 操作栏\r\n that.layFixRight.css('right', scrollWidth - 1);\r\n };\r\n\r\n /**\r\n * @typedef updateRowOptions\r\n * @prop {number} index - 行索引\r\n * @prop {Object.} data - 行数据\r\n * @prop {boolean | ((field, index) => boolean)} [related] - 更新其他包含自定义模板且可能有所关联的列视图\r\n */\r\n /**\r\n * 更新指定行\r\n * @param {updateRowOptions | updateRowOptions[]} opts \r\n * @param {(field: string, value: any) => void} [callback] - 更新每个字段时的回调函数\r\n */\r\n Class.prototype.updateRow = function(opts, callback){\r\n var that = this;\r\n var ELEM_CELL = '.layui-table-cell';\r\n var opts = layui.type(opts) === 'array' ? opts : [opts];\r\n var dataCache = table.cache[that.key] || [];\r\n\r\n var update = function(opt){\r\n var index = opt.index;\r\n var row = opt.data;\r\n var related = opt.related;\r\n\r\n var data = dataCache[index] || {};\r\n var tr = that.layBody.find('tr[data-index=\"' + index + '\"]');\r\n\r\n // 更新缓存中的数据\r\n layui.each(row, function (key, value) {\r\n data[key] = value;\r\n callback && callback(key, value);\r\n });\r\n\r\n // 更新单元格\r\n that.eachCols(function (i, item3) {\r\n var field = String(item3.field || i);\r\n var shouldUpdate = field in row || ((typeof related === 'function' ? related(field, i) : related) && (item3.templet || item3.toolbar));\r\n if(shouldUpdate){\r\n var td = tr.children('td[data-field=\"' + field + '\"]');\r\n var cell = td.children(ELEM_CELL);\r\n var content = data[item3.field];\r\n cell.html(parseTempData.call(that, {\r\n item3: item3,\r\n content: content,\r\n tplData: $.extend({\r\n LAY_COL: item3,\r\n }, data)\r\n }));\r\n td.data(\"content\", content);\r\n that.renderFormByElem(cell);\r\n }\r\n });\r\n }\r\n\r\n layui.each(opts, function(i, opt){\r\n update(opt);\r\n });\r\n };\r\n\r\n /**\r\n * 更新指定行\r\n * @param {string} id - table ID\r\n * @param {updateRowOptions | updateRowOptions[]} options \r\n */\r\n table.updateRow = function (id, options){\r\n var that = getThisTable(id);\r\n return that.updateRow(options);\r\n }\r\n\r\n // 事件处理\r\n Class.prototype.events = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n var filter = options.elem.attr('lay-filter');\r\n var th = that.layHeader.find('th');\r\n var ELEM_CELL = '.layui-table-cell';\r\n\r\n var _BODY = $('body');\r\n var dict = {};\r\n\r\n // 头部工具栏操作事件\r\n that.layTool.on('click', '*[lay-event]', function(e){\r\n var othis = $(this);\r\n var events = othis.attr('lay-event');\r\n var data = table.cache[options.id];\r\n var openPanel = function(sets){\r\n var list = $(sets.list);\r\n var panel = $('
                  ');\r\n\r\n panel.html(list);\r\n\r\n // 限制最大高度\r\n if(options.height){\r\n panel.css('max-height', options.height - (that.layTool.outerHeight() || 50));\r\n }\r\n\r\n // 插入元素\r\n othis.find('.' + ELEM_TOOL_PANEL)[0] || othis.append(panel);\r\n that.renderForm();\r\n\r\n panel.on('click', function(e){\r\n layui.stope(e);\r\n });\r\n\r\n sets.done && sets.done(panel, list)\r\n };\r\n\r\n layui.stope(e);\r\n _DOC.trigger('table.tool.panel.remove');\r\n layer.close(that.tipsIndex);\r\n\r\n switch(events){\r\n case 'LAYTABLE_COLS': // 筛选列\r\n openPanel({\r\n list: function(){\r\n var lis = [];\r\n that.eachCols(function(i, item){\r\n if(item.field && item.type == 'normal'){\r\n lis.push('
                • ' + (item.fieldTitle || item.title || item.field) + '
                • ').text()) +'\" lay-filter=\"LAY_TABLE_TOOL_COLS\">');\r\n }\r\n });\r\n return lis.join('');\r\n }()\r\n ,done: function(){\r\n form.on('checkbox(LAY_TABLE_TOOL_COLS)', function(obj){\r\n var othis = $(obj.elem);\r\n var checked = this.checked;\r\n var key = othis.data('key');\r\n var col = that.col(key);\r\n var hide = col.hide;\r\n var parentKey = othis.data('parentkey');\r\n\r\n if(!col.key) return;\r\n\r\n // 同步勾选列的 hide 值和隐藏样式\r\n col.hide = !checked;\r\n that.elem.find('*[data-key=\"'+ key +'\"]')[\r\n checked ? 'removeClass' : 'addClass'\r\n ](HIDE);\r\n\r\n // 根据列的显示隐藏,同步多级表头的父级相关属性值\r\n if(hide != col.hide){\r\n that.setParentCol(!checked, parentKey);\r\n }\r\n\r\n // 重新适配尺寸\r\n that.resize();\r\n\r\n // 列筛选(显示或隐藏)后的事件\r\n layui.event.call(this, MOD_NAME, 'colToggled('+ filter +')', {\r\n col: col,\r\n config: options\r\n });\r\n });\r\n }\r\n });\r\n break;\r\n case 'LAYTABLE_EXPORT': // 导出\r\n if (!data.length) return layer.tips('当前表格无数据', this, {tips: 3});\r\n if(device.ie){\r\n layer.tips('导出功能不支持 IE,请用 Chrome 等高级浏览器导出', this, {\r\n tips: 3\r\n });\r\n } else {\r\n openPanel({\r\n list: function(){\r\n return [\r\n '
                • 导出 csv 格式文件
                • ',\r\n '
                • 导出 xls 格式文件
                • '\r\n ].join('')\r\n }(),\r\n done: function(panel, list){\r\n list.on('click', function(){\r\n var type = $(this).data('type')\r\n table.exportFile.call(that, options.id, null, type);\r\n });\r\n }\r\n });\r\n }\r\n break;\r\n case 'LAYTABLE_PRINT': // 打印\r\n if (!data.length) return layer.tips('当前表格无数据', this, {tips: 3});\r\n var printWin = window.open('about:blank', '_blank');\r\n var style = [''].join('')\r\n var html = $(that.layHeader.html()); // 输出表头\r\n\r\n html.append(that.layMain.find('table').html()); // 输出表体\r\n html.append(that.layTotal.find('table').html()) // 输出合计行\r\n\r\n html.find('th.layui-table-patch').remove(); // 移除补丁\r\n // 移除表头特殊列\r\n html.find('thead>tr>th.'+ ELEM_COL_SPECIAL).filter(function(i, thElem){\r\n return !$(thElem).children('.'+ ELEM_GROUP).length; // 父级表头除外\r\n }).remove();\r\n html.find('tbody>tr>td.'+ ELEM_COL_SPECIAL).remove(); // 移除表体特殊列\r\n\r\n printWin.document.write(style + html.prop('outerHTML'));\r\n printWin.document.close();\r\n\r\n if(layui.device('edg').edg){\r\n printWin.onafterprint = printWin.close;\r\n printWin.print();\r\n }else{\r\n printWin.print();\r\n printWin.close();\r\n }\r\n break;\r\n }\r\n\r\n layui.event.call(this, MOD_NAME, 'toolbar('+ filter +')', $.extend({\r\n event: events,\r\n config: options\r\n },{}));\r\n });\r\n\r\n // 表头自定义元素事件\r\n that.layHeader.on('click', '*[lay-event]', function(e){\r\n var othis = $(this);\r\n var events = othis.attr('lay-event');\r\n var th = othis.closest('th');\r\n var key = th.data('key');\r\n var col = that.col(key);\r\n\r\n layui.event.call(this, MOD_NAME, 'colTool('+ filter +')', $.extend({\r\n event: events,\r\n config: options,\r\n col: col\r\n },{}));\r\n });\r\n\r\n // 分页栏操作事件\r\n that.layPagebar.on('click', '*[lay-event]', function(e){\r\n var othis = $(this);\r\n var events = othis.attr('lay-event');\r\n\r\n layui.event.call(this, MOD_NAME, 'pagebar('+ filter +')', $.extend({\r\n event: events,\r\n config: options\r\n },{}));\r\n });\r\n\r\n // 拖拽调整宽度\r\n th.on('mousemove', function(e){\r\n var othis = $(this);\r\n var oLeft = othis.offset().left;\r\n var pLeft = e.clientX - oLeft;\r\n if(othis.data('unresize') || thisTable.eventMoveElem){\r\n return;\r\n }\r\n dict.allowResize = othis.width() - pLeft <= 10; //是否处于拖拽允许区域\r\n _BODY.css('cursor', (dict.allowResize ? 'col-resize' : ''));\r\n }).on('mouseleave', function(){\r\n var othis = $(this);\r\n if(thisTable.eventMoveElem) return;\r\n dict.allowResize = false;\r\n _BODY.css('cursor', '');\r\n }).on('mousedown', function(e){\r\n var othis = $(this);\r\n if(dict.allowResize){\r\n var key = othis.data('key');\r\n e.preventDefault();\r\n dict.offset = [e.clientX, e.clientY]; //记录初始坐标\r\n\r\n that.cssRules(key, function(item){\r\n var width = item.style.width || othis.outerWidth();\r\n dict.rule = item;\r\n dict.ruleWidth = parseFloat(width);\r\n dict.minWidth = othis.data('minwidth') || options.cellMinWidth;\r\n dict.maxWidth = othis.data('maxwidth') || options.cellMaxWidth;\r\n });\r\n\r\n // 临时记录当前拖拽信息\r\n othis.data(DATA_MOVE_NAME, dict);\r\n thisTable.eventMoveElem = othis;\r\n }\r\n });\r\n\r\n // 拖拽中\r\n if(!thisTable.docEvent){\r\n _DOC.on('mousemove', function(e){\r\n if(thisTable.eventMoveElem){\r\n var dict = thisTable.eventMoveElem.data(DATA_MOVE_NAME) || {};\r\n\r\n thisTable.eventMoveElem.data('resizing', 1);\r\n e.preventDefault();\r\n\r\n if(dict.rule){\r\n var setWidth = dict.ruleWidth + e.clientX - dict.offset[0];\r\n var id = thisTable.eventMoveElem.closest('.' + ELEM_VIEW).attr(MOD_ID);\r\n var thatTable = getThisTable(id);\r\n\r\n if(!thatTable) return;\r\n\r\n if(setWidth < dict.minWidth) setWidth = dict.minWidth;\r\n if(setWidth > dict.maxWidth) setWidth = dict.maxWidth;\r\n\r\n dict.rule.style.width = setWidth + 'px';\r\n thatTable.setGroupWidth(thisTable.eventMoveElem);\r\n layer.close(that.tipsIndex);\r\n }\r\n }\r\n }).on('mouseup', function(e){\r\n if(thisTable.eventMoveElem){\r\n var th = thisTable.eventMoveElem; // 当前触发拖拽的 th 元素\r\n var id = th.closest('.' + ELEM_VIEW).attr(MOD_ID);\r\n var thatTable = getThisTable(id);\r\n\r\n if(!thatTable) return;\r\n\r\n var key = th.data('key');\r\n var col = thatTable.col(key);\r\n var filter = thatTable.config.elem.attr('lay-filter');\r\n\r\n // 重置过度信息\r\n dict = {};\r\n _BODY.css('cursor', '');\r\n thatTable.scrollPatch();\r\n\r\n // 清除当前拖拽信息\r\n th.removeData(DATA_MOVE_NAME);\r\n delete thisTable.eventMoveElem;\r\n\r\n // 列拖拽宽度后的事件\r\n thatTable.cssRules(key, function(item){\r\n col.width = parseFloat(item.style.width);\r\n layui.event.call(th[0], MOD_NAME, 'colResized('+ filter +')', {\r\n col: col,\r\n config: thatTable.config\r\n });\r\n });\r\n }\r\n });\r\n }\r\n\r\n // 已给 document 执行全局事件,避免重复绑定\r\n thisTable.docEvent = true;\r\n\r\n\r\n // 排序\r\n th.on('click', function(e){\r\n var othis = $(this);\r\n var elemSort = othis.find(ELEM_SORT);\r\n var nowType = elemSort.attr('lay-sort');\r\n var type;\r\n\r\n // 排序不触发的条件\r\n if(!elemSort[0] || othis.data('resizing') === 1){\r\n return othis.removeData('resizing');\r\n }\r\n\r\n if(nowType === 'asc'){\r\n type = 'desc';\r\n } else if(nowType === 'desc'){\r\n type = null;\r\n } else {\r\n type = 'asc';\r\n }\r\n that.sort({\r\n field: othis,\r\n type: type,\r\n fromEvent: true\r\n });\r\n }).find(ELEM_SORT+' .layui-edge ').on('click', function(e){\r\n var othis = $(this);\r\n var index = othis.index();\r\n var field = othis.parents('th').eq(0).data('field');\r\n layui.stope(e);\r\n if(index === 0){\r\n that.sort({\r\n field: field,\r\n type: 'asc',\r\n fromEvent: true\r\n });\r\n } else {\r\n that.sort({\r\n field: field,\r\n type: 'desc',\r\n fromEvent: true\r\n });\r\n }\r\n });\r\n\r\n //数据行中的事件返回的公共对象成员\r\n var commonMember = that.commonMember = function(sets){\r\n var othis = $(this);\r\n var index = othis.parents('tr').eq(0).data('index');\r\n var tr = that.layBody.find('tr[data-index=\"'+ index +'\"]');\r\n var data = table.cache[that.key] || [];\r\n\r\n data = data[index] || {};\r\n\r\n // 事件返回的公共成员\r\n var obj = {\r\n tr: tr, // 行元素\r\n config: options,\r\n data: table.clearCacheKey(data), // 当前行数据\r\n dataCache: data, // 当前行缓存中的数据\r\n index: index,\r\n del: function(){ // 删除行数据\r\n table.cache[that.key][index] = [];\r\n tr.remove();\r\n that.scrollPatch();\r\n },\r\n update: function(fields, related){ // 修改行数据\r\n fields = fields || {};\r\n that.updateRow({\r\n index: index,\r\n data: fields,\r\n related: related\r\n }, function(key, value){\r\n obj.data[key] = value;\r\n });\r\n },\r\n // 设置行选中状态\r\n setRowChecked: function(opts){\r\n that.setRowChecked($.extend({\r\n index: index\r\n }, opts));\r\n }\r\n // 获取当前列\r\n };\r\n\r\n return $.extend(obj, sets);\r\n };\r\n\r\n // 复选框选择(替代元素的 click 事件)\r\n that.elem.on('click', 'input[name=\"layTableCheckbox\"]+', function(e){\r\n var othis = $(this);\r\n var td = othis.closest('td');\r\n var checkbox = othis.prev();\r\n var children = that.layBody.find('input[name=\"layTableCheckbox\"]');\r\n var index = checkbox.parents('tr').eq(0).data('index');\r\n var checked = checkbox[0].checked;\r\n var isAll = checkbox.attr('lay-filter') === 'layTableAllChoose';\r\n\r\n if(checkbox[0].disabled) return;\r\n\r\n // 全选\r\n if(isAll){\r\n that.setRowChecked({\r\n index: 'all',\r\n checked: checked\r\n });\r\n } else {\r\n that.setRowChecked({\r\n index: index,\r\n checked: checked\r\n });\r\n layui.stope(e);\r\n }\r\n\r\n // 事件\r\n layui.event.call(\r\n checkbox[0],\r\n MOD_NAME, 'checkbox('+ filter +')',\r\n commonMember.call(checkbox[0], {\r\n checked: checked,\r\n type: isAll ? 'all' : 'one',\r\n getCol: function(){ // 获取当前列的表头配置信息\r\n return that.col(td.data('key'));\r\n }\r\n })\r\n );\r\n });\r\n\r\n // 单选框选择\r\n that.elem.on('click', 'input[lay-type=\"layTableRadio\"]+', function(e){\r\n var othis = $(this);\r\n var td = othis.closest('td');\r\n var radio = othis.prev();\r\n var checked = radio[0].checked;\r\n var index = radio.parents('tr').eq(0).data('index');\r\n\r\n layui.stope(e);\r\n if(radio[0].disabled) return false;\r\n\r\n // 标注选中样式\r\n that.setRowChecked({\r\n type: 'radio',\r\n index: index\r\n });\r\n\r\n // 事件\r\n layui.event.call(\r\n radio[0],\r\n MOD_NAME, 'radio('+ filter +')',\r\n commonMember.call(radio[0], {\r\n checked: checked,\r\n getCol: function(){ // 获取当前列的表头配置信息\r\n return that.col(td.data('key'));\r\n }\r\n })\r\n );\r\n });\r\n\r\n // 行事件\r\n that.layBody.on('mouseenter', 'tr', function(){ // 鼠标移入行\r\n var othis = $(this);\r\n var index = othis.index();\r\n if(othis.data('off')) return; // 不触发事件\r\n that.layBody.find('tr:eq('+ index +')').addClass(ELEM_HOVER)\r\n }).on('mouseleave', 'tr', function(){ // 鼠标移出行\r\n var othis = $(this);\r\n var index = othis.index();\r\n if(othis.data('off')) return; // 不触发事件\r\n that.layBody.find('tr:eq('+ index +')').removeClass(ELEM_HOVER)\r\n }).on('click', 'tr', function(e){ // 单击行\r\n // 不支持行单击事件的元素\r\n var UNROW = [\r\n '.layui-form-checkbox',\r\n '.layui-form-switch',\r\n '.layui-form-radio',\r\n '[lay-unrow]'\r\n ].join(',');\r\n if( $(e.target).is(UNROW) || $(e.target).closest(UNROW)[0]){\r\n return;\r\n }\r\n setRowEvent.call(this, 'row');\r\n }).on('dblclick', 'tr', function(){ // 双击行\r\n setRowEvent.call(this, 'rowDouble');\r\n }).on('contextmenu', 'tr', function(e){ // 菜单\r\n if (!options.defaultContextmenu) e.preventDefault();\r\n setRowEvent.call(this, 'rowContextmenu');\r\n });\r\n\r\n // 创建行单击、双击、菜单事件\r\n var setRowEvent = function(eventType){\r\n var othis = $(this);\r\n if(othis.data('off')) return; //不触发事件\r\n layui.event.call(this,\r\n MOD_NAME, eventType + '('+ filter +')',\r\n commonMember.call(othis.children('td')[0])\r\n );\r\n };\r\n\r\n // 渲染单元格编辑状态\r\n var renderGridEdit = function(othis, e){\r\n othis = $(othis);\r\n\r\n if(othis.data('off')) return; // 不触发事件\r\n\r\n var field = othis.data('field');\r\n var key = othis.data('key');\r\n var col = that.col(key);\r\n var index = othis.closest('tr').data('index');\r\n var data = table.cache[that.key][index];\r\n var elemCell = othis.children(ELEM_CELL);\r\n\r\n // 是否开启编辑\r\n // 若 edit 传入函数,则根据函数的返回结果判断是否开启编辑\r\n var editType = typeof col.edit === 'function'\r\n ? col.edit(data)\r\n : col.edit;\r\n\r\n // 显示编辑表单\r\n if(editType){\r\n var input = $(function(){\r\n var inputElem = '';\r\n if(editType === 'textarea') {\r\n inputElem = '';\r\n }\r\n return inputElem;\r\n }());\r\n input[0].value = function(val) {\r\n return (val === undefined || val === null) ? '' : val;\r\n }(othis.data('content') || data[field]);\r\n othis.find('.'+ELEM_EDIT)[0] || othis.append(input);\r\n input.focus();\r\n e && layui.stope(e);\r\n }\r\n };\r\n\r\n // 单元格编辑 - 输入框内容被改变的事件\r\n that.layBody.on('change', '.'+ ELEM_EDIT, function(){\r\n var othis = $(this);\r\n var td = othis.parent();\r\n var value = this.value;\r\n var field = othis.parent().data('field');\r\n var index = othis.closest('tr').data('index');\r\n var data = table.cache[that.key][index];\r\n\r\n //事件回调的参数对象\r\n var params = commonMember.call(td[0], {\r\n value: value,\r\n field: field,\r\n oldValue: data[field], // 编辑前的值\r\n td: td,\r\n reedit: function(){ // 重新编辑\r\n setTimeout(function(){\r\n // 重新渲染为编辑状态\r\n renderGridEdit(params.td);\r\n\r\n // 将字段缓存的值恢复到编辑之前的值\r\n var obj = {};\r\n obj[field] = params.oldValue;\r\n params.update(obj);\r\n });\r\n },\r\n getCol: function(){ // 获取当前列的表头配置信息\r\n return that.col(td.data('key'));\r\n }\r\n });\r\n\r\n // 更新缓存中的值\r\n var obj = {}; //变更的键值\r\n obj[field] = value;\r\n params.update(obj);\r\n\r\n // 执行 API 编辑事件\r\n layui.event.call(td[0], MOD_NAME, 'edit('+ filter +')', params);\r\n }).on('blur', '.'+ ELEM_EDIT, function(){ // 单元格编辑 - 恢复非编辑状态事件\r\n $(this).remove(); // 移除编辑状态\r\n });\r\n\r\n // 表格主体单元格触发编辑的事件\r\n that.layBody.on(options.editTrigger, 'td', function(e){\r\n renderGridEdit(this, e)\r\n }).on('mouseenter', 'td', function(){\r\n showGridExpandIcon.call(this)\r\n }).on('mouseleave', 'td', function(){\r\n showGridExpandIcon.call(this, 'hide');\r\n });\r\n\r\n // 表格合计栏单元格 hover 显示展开图标\r\n that.layTotal.on('mouseenter', 'td', function(){\r\n showGridExpandIcon.call(this)\r\n }).on('mouseleave', 'td', function(){\r\n showGridExpandIcon.call(this, 'hide');\r\n });\r\n\r\n // 显示单元格展开图标\r\n var ELEM_GRID = 'layui-table-grid';\r\n var ELEM_GRID_DOWN = 'layui-table-grid-down';\r\n var ELEM_GRID_PANEL = 'layui-table-grid-panel';\r\n var showGridExpandIcon = function(hide){\r\n var othis = $(this);\r\n var elemCell = othis.children(ELEM_CELL);\r\n\r\n if(othis.data('off')) return; // 不触发事件\r\n if(othis.parent().hasClass(ELEM_EXPAND)) return; // 是否已为展开状态\r\n\r\n if(hide){\r\n othis.find('.layui-table-grid-down').remove();\r\n } else if((\r\n elemCell.prop('scrollWidth') > elemCell.prop('clientWidth') ||\r\n elemCell.find(\"br\").length > 0\r\n ) && !options.lineStyle){\r\n if(elemCell.find('.'+ ELEM_GRID_DOWN)[0]) return;\r\n othis.append('
                  ');\r\n }\r\n };\r\n // 展开单元格内容\r\n var gridExpand = function(e, expandedMode){\r\n var othis = $(this);\r\n var td = othis.parent();\r\n var key = td.data('key');\r\n var col = that.col(key);\r\n var index = td.parent().data('index');\r\n var elemCell = td.children(ELEM_CELL);\r\n var ELEM_CELL_C = 'layui-table-cell-c';\r\n var elemCellClose = $('');\r\n\r\n expandedMode = expandedMode || col.expandedMode || options.cellExpandedMode;\r\n\r\n // 展开风格\r\n if (expandedMode === 'tips') { // TIPS 展开风格\r\n that.tipsIndex = layer.tips([\r\n '
                  ',\r\n elemCell.html(),\r\n '
                  ',\r\n ''\r\n ].join(''), elemCell[0], {\r\n tips: [3, ''],\r\n time: -1,\r\n anim: -1,\r\n maxWidth: (device.ios || device.android) ? 300 : that.elem.width()/2,\r\n isOutAnim: false,\r\n skin: 'layui-table-tips',\r\n success: function(layero, index){\r\n layero.find('.layui-table-tips-c').on('click', function(){\r\n layer.close(index);\r\n });\r\n }\r\n });\r\n } else { // 多行展开风格\r\n // 恢复其他已经展开的单元格\r\n that.elem.find('.'+ ELEM_CELL_C).trigger('click');\r\n\r\n // 设置当前单元格展开宽度\r\n that.cssRules(key, function(item){\r\n var width = item.style.width;\r\n var expandedWidth = col.expandedWidth || options.cellExpandedWidth;\r\n\r\n // 展开后的宽度不能小于当前宽度\r\n if(expandedWidth < parseFloat(width)) expandedWidth = parseFloat(width);\r\n\r\n elemCellClose.data('cell-width', width);\r\n item.style.width = expandedWidth + 'px';\r\n\r\n setTimeout(function(){\r\n that.scrollPatch(); // 滚动条补丁\r\n });\r\n });\r\n\r\n // 设置当前单元格展开样式\r\n that.setRowActive(index, ELEM_EXPAND);\r\n\r\n // 插入关闭按钮\r\n if(!elemCell.next('.'+ ELEM_CELL_C)[0]){\r\n elemCell.after(elemCellClose);\r\n }\r\n\r\n // 关闭展开状态\r\n elemCellClose.on('click', function(){\r\n var $this = $(this);\r\n that.setRowActive(index, [ELEM_EXPAND, ELEM_HOVER].join(' '), true); // 移除单元格展开样式\r\n that.cssRules(key, function(item){\r\n item.style.width = $this.data('cell-width'); // 恢复单元格展开前的宽度\r\n setTimeout(function(){\r\n that.resize(); // 滚动条补丁\r\n });\r\n });\r\n $this.remove();\r\n // 重置单元格滚动条位置\r\n elemCell.scrollTop(0);\r\n elemCell.scrollLeft(0); \r\n });\r\n }\r\n\r\n othis.remove();\r\n layui.stope(e);\r\n };\r\n\r\n // 表格主体单元格展开事件\r\n that.layBody.on('click', '.'+ ELEM_GRID_DOWN, function(e){\r\n gridExpand.call(this, e);\r\n });\r\n // 表格合计栏单元格展开事件\r\n that.layTotal.on('click', '.'+ ELEM_GRID_DOWN, function(e){\r\n gridExpand.call(this, e, 'tips'); // 强制采用 tips 风格\r\n });\r\n\r\n // 行工具条操作事件\r\n var toolFn = function(type){\r\n var othis = $(this);\r\n var td = othis.closest('td');\r\n var index = othis.parents('tr').eq(0).data('index');\r\n // 标记当前活动行\r\n that.setRowActive(index);\r\n\r\n // 执行事件\r\n layui.event.call(\r\n this,\r\n MOD_NAME,\r\n (type || 'tool') + '('+ filter +')',\r\n commonMember.call(this, {\r\n event: othis.attr('lay-event'),\r\n getCol: function(){ // 获取当前列的表头配置信息\r\n return that.col(td.data('key'));\r\n }\r\n })\r\n );\r\n };\r\n\r\n // 行工具条单击事件\r\n that.layBody.on('click', '*[lay-event]', function(e){\r\n toolFn.call(this);\r\n layui.stope(e);\r\n }).on('dblclick', '*[lay-event]', function(e){ //行工具条双击事件\r\n toolFn.call(this, 'toolDouble');\r\n layui.stope(e);\r\n });\r\n\r\n // 同步滚动条\r\n that.layMain.on('scroll', function(){\r\n var othis = $(this);\r\n var scrollLeft = othis.scrollLeft();\r\n var scrollTop = othis.scrollTop();\r\n\r\n that.layHeader.scrollLeft(scrollLeft);\r\n that.layTotal.scrollLeft(scrollLeft);\r\n that.layFixed.find(ELEM_BODY).scrollTop(scrollTop);\r\n\r\n layer.close(that.tipsIndex);\r\n });\r\n\r\n // 固定列滚轮事件 - 临时兼容方案\r\n that.layFixed.find(ELEM_BODY).on('mousewheel DOMMouseScroll', function(e) {\r\n var delta = e.originalEvent.wheelDelta || -e.originalEvent.detail;\r\n var scrollTop = that.layMain.scrollTop();\r\n var step = 30;\r\n\r\n e.preventDefault();\r\n that.layMain.scrollTop(scrollTop + (delta > 0 ? -step : step));\r\n });\r\n\r\n if(window.ResizeObserver){\r\n if(!that.resizeObserver){\r\n that.resizeObserver = new ResizeObserver(function(){\r\n table.resize(that.key);\r\n });\r\n }\r\n that.resizeObserver.observe(that.elem[0]);\r\n }\r\n };\r\n\r\n // 全局事件\r\n (function(){\r\n // 自适应尺寸\r\n _WIN.on('resize', function(){\r\n layui.each(thisTable.that, function(){\r\n this.resize();\r\n });\r\n });\r\n\r\n // 全局点击\r\n _DOC.on('click', function(){\r\n _DOC.trigger('table.remove.tool.panel');\r\n });\r\n\r\n // 工具面板移除事件\r\n _DOC.on('table.remove.tool.panel', function(){\r\n $('.' + ELEM_TOOL_PANEL).remove();\r\n });\r\n })();\r\n\r\n // 初始化\r\n table.init = function(filter, settings){\r\n settings = settings || {};\r\n var that = this;\r\n var inst = null;\r\n var elemTable = typeof filter === 'object' ? filter : (\r\n typeof filter === 'string'\r\n ? $('table[lay-filter=\"'+ filter +'\"]')\r\n : $(ELEM + '[lay-data], '+ ELEM + '[lay-options]')\r\n );\r\n var errorTips = 'Table element property lay-data configuration item has a syntax error: ';\r\n\r\n //遍历数据表格\r\n elemTable.each(function(){\r\n var othis = $(this);\r\n var attrData = othis.attr('lay-data');\r\n var tableData = lay.options(this, {\r\n attr: attrData ? 'lay-data' : null,\r\n errorText: errorTips + (attrData || othis.attr('lay-options'))\r\n });\r\n\r\n var options = $.extend({\r\n elem: this\r\n ,cols: []\r\n ,data: []\r\n ,skin: othis.attr('lay-skin') //风格\r\n ,size: othis.attr('lay-size') //尺寸\r\n ,even: typeof othis.attr('lay-even') === 'string' //偶数行背景\r\n }, table.config, settings, tableData);\r\n\r\n filter && othis.hide();\r\n\r\n //获取表头数据\r\n othis.find('thead>tr').each(function(i){\r\n options.cols[i] = [];\r\n $(this).children().each(function(ii){\r\n var th = $(this);\r\n var attrData = th.attr('lay-data');\r\n var itemData = lay.options(this, {\r\n attr: attrData ? 'lay-data' : null,\r\n errorText: errorTips + (attrData || th.attr('lay-options'))\r\n });\r\n\r\n var row = $.extend({\r\n title: th.text()\r\n ,colspan: parseInt(th.attr('colspan')) || 1 //列单元格\r\n ,rowspan: parseInt(th.attr('rowspan')) || 1 //行单元格\r\n }, itemData);\r\n\r\n options.cols[i].push(row);\r\n });\r\n });\r\n\r\n //缓存静态表体数据\r\n var trElem = othis.find('tbody>tr');\r\n\r\n //执行渲染\r\n var tableIns = table.render(options);\r\n\r\n //获取表体数据\r\n if (trElem.length && !settings.data && !tableIns.config.url) {\r\n var tdIndex = 0;\r\n table.eachCols(tableIns.config.id, function (i3, item3) {\r\n trElem.each(function(i1){\r\n options.data[i1] = options.data[i1] || {};\r\n var tr = $(this);\r\n var field = item3.field;\r\n options.data[i1][field] = tr.children('td').eq(tdIndex).html();\r\n });\r\n tdIndex++;\r\n })\r\n\r\n tableIns.reloadData({\r\n data: options.data\r\n });\r\n }\r\n });\r\n\r\n return that;\r\n };\r\n\r\n //记录所有实例\r\n thisTable.that = {}; //记录所有实例对象\r\n thisTable.config = {}; //记录所有实例配置项\r\n\r\n var eachChildCols = function (index, cols, i1, item2) {\r\n //如果是组合列,则捕获对应的子列\r\n if (item2.colGroup) {\r\n var childIndex = 0;\r\n index++;\r\n item2.CHILD_COLS = [];\r\n // 找到它的子列所在cols的下标\r\n var i2 = i1 + (parseInt(item2.rowspan) || 1);\r\n layui.each(cols[i2], function (i22, item22) {\r\n if (item22.parentKey) { // 如果字段信息中包含了parentKey和key信息\r\n if (item22.parentKey === item2.key) {\r\n item22.PARENT_COL_INDEX = index;\r\n item2.CHILD_COLS.push(item22);\r\n eachChildCols(index, cols, i2, item22);\r\n }\r\n } else {\r\n // 没有key信息以colspan数量所谓判断标准\r\n //如果子列已经被标注为{PARENT_COL_INDEX},或者子列累计 colspan 数等于父列定义的 colspan,则跳出当前子列循环\r\n if (item22.PARENT_COL_INDEX || (childIndex >= 1 && childIndex == (item2.colspan || 1))) return;\r\n item22.PARENT_COL_INDEX = index;\r\n item2.CHILD_COLS.push(item22);\r\n childIndex = childIndex + (parseInt(item22.colspan > 1 ? item22.colspan : 1));\r\n eachChildCols(index, cols, i2, item22);\r\n }\r\n });\r\n }\r\n };\r\n\r\n // 遍历表头\r\n table.eachCols = function(id, callback, cols){\r\n var config = thisTable.config[id] || {};\r\n var arrs = [], index = 0;\r\n\r\n cols = $.extend(true, [], cols || config.cols);\r\n\r\n //重新整理表头结构\r\n layui.each(cols, function(i1, item1){\r\n if (i1) return true; // 只需遍历第一层\r\n layui.each(item1, function(i2, item2){\r\n eachChildCols(index, cols, i1, item2);\r\n if(item2.PARENT_COL_INDEX) return; //如果是子列,则不进行追加,因为已经存储在父列中\r\n arrs.push(item2)\r\n });\r\n });\r\n\r\n //重新遍历列,如果有子列,则进入递归\r\n var eachArrs = function(obj){\r\n layui.each(obj || arrs, function(i, item){\r\n if(item.CHILD_COLS) return eachArrs(item.CHILD_COLS);\r\n typeof callback === 'function' && callback(i, item);\r\n });\r\n };\r\n\r\n eachArrs();\r\n };\r\n\r\n // 获取表格选中状态\r\n table.checkStatus = function(id){\r\n var nums = 0;\r\n var invalidNum = 0;\r\n var arr = [];\r\n var data = table.cache[id] || [];\r\n\r\n //计算全选个数\r\n layui.each(data, function(i, item){\r\n if(layui.type(item) === 'array' || item[table.config.disabledName]){\r\n invalidNum++; // 无效数据,或已删除的\r\n return;\r\n }\r\n if(item[table.config.checkName]){\r\n nums++;\r\n if(!item[table.config.disabledName]){\r\n arr.push(table.clearCacheKey(item));\r\n }\r\n }\r\n });\r\n return {\r\n data: arr, // 选中的数据\r\n isAll: data.length ? (nums === (data.length - invalidNum)) : false // 是否全选\r\n };\r\n };\r\n\r\n // 设置行选中状态\r\n table.setRowChecked = function(id, opts){\r\n var that = getThisTable(id);\r\n if(!that) return;\r\n that.setRowChecked(opts);\r\n };\r\n\r\n // 获取表格当前页的所有行数据\r\n table.getData = function(id){\r\n var arr = [];\r\n var data = table.cache[id] || [];\r\n layui.each(data, function(i, item){\r\n if(layui.type(item) === 'array'){\r\n return;\r\n }\r\n arr.push(table.clearCacheKey(item));\r\n });\r\n return arr;\r\n };\r\n\r\n // 重置表格尺寸结构\r\n table.resize = function(id){\r\n // 若指定表格唯一 id,则只执行该 id 对应的表格实例\r\n if(id){\r\n var config = getThisTableConfig(id); // 获取当前实例配置项\r\n if(!config) return;\r\n\r\n getThisTable(id).resize();\r\n\r\n } else { // 否则重置所有表格实例尺寸\r\n layui.each(thisTable.that, function(){\r\n this.resize();\r\n });\r\n }\r\n };\r\n\r\n // 表格导出\r\n table.exportFile = function(id, data, opts){\r\n data = data || table.clearCacheKey(table.cache[id]);\r\n opts = typeof opts === 'object' ? opts : function(){\r\n var obj = {};\r\n opts && (obj.type = opts);\r\n return obj;\r\n }();\r\n\r\n var type = opts.type || 'csv';\r\n var thatTable = thisTable.that[id];\r\n var config = thisTable.config[id] || {};\r\n var textType = ({\r\n csv: 'text/csv',\r\n xls: 'application/vnd.ms-excel'\r\n })[type];\r\n var alink = document.createElement(\"a\");\r\n\r\n if(device.ie) return hint.error('IE_NOT_SUPPORT_EXPORTS');\r\n\r\n // 处理 treeTable 数据\r\n if (config.tree && config.tree.view) {\r\n try {\r\n data = $.extend(true, [], table.cache[id]);\r\n data = (function fn(data) {\r\n return data.reduce(function (acc, obj){\r\n var children = obj.children || [];\r\n delete obj.children;\r\n return acc.concat(obj, fn(children));\r\n }, []);\r\n })(Array.from(data));\r\n } catch (e) {}\r\n }\r\n\r\n alink.href = 'data:'+ textType +';charset=utf-8,\\ufeff'+ encodeURIComponent(function(){\r\n var dataTitle = [];\r\n var dataMain = [];\r\n var dataTotal = [];\r\n var fieldsIsHide = {};\r\n\r\n // 表头和表体\r\n layui.each(data, function(i1, item1){\r\n var vals = [];\r\n if(typeof id === 'object'){ // 若 id 参数直接为表头数据\r\n layui.each(id, function(i, item){\r\n i1 == 0 && dataTitle.push(item || '');\r\n });\r\n layui.each(layui.isArray(item1) ? $.extend([], item1) : table.clearCacheKey(item1), function(i2, item2){\r\n vals.push('\"'+ (item2 || '') +'\"');\r\n });\r\n } else {\r\n table.eachCols(id, function(i3, item3){\r\n if(item3.ignoreExport === false || item3.field && item3.type == 'normal'){\r\n // 不导出隐藏列,除非设置 ignoreExport 强制导出\r\n if (\r\n (item3.hide && item3.ignoreExport !== false) ||\r\n item3.ignoreExport === true // 忽略导出\r\n ) {\r\n if(i1 == 0) fieldsIsHide[item3.field] = true; // 记录隐藏列\r\n return;\r\n }\r\n\r\n var content = item1[item3.field];\r\n if(content === undefined || content === null) content = '';\r\n\r\n i1 == 0 && dataTitle.push(item3.fieldTitle || item3.title || item3.field || '');\r\n\r\n // 解析内容\r\n content = parseTempData.call(thatTable, {\r\n item3: item3,\r\n content: content,\r\n tplData: item1,\r\n text: 'text',\r\n obj: {\r\n td: function(field){\r\n var td = thatTable.layBody.find('tr[data-index=\"'+ i1 +'\"]>td');\r\n return td.filter('[data-field=\"'+ field +'\"]');\r\n }\r\n }\r\n });\r\n\r\n // 异常处理\r\n content = content.replace(/\"/g, '\"\"'); // 避免内容存在「双引号」导致异常分隔\r\n // content += '\\t'; // 加「水平制表符」 避免内容被转换格式\r\n content = '\"'+ content +'\"'; // 避免内容存在「逗号」导致异常分隔\r\n\r\n // 插入内容\r\n vals.push(content);\r\n }else if(item3.field && item3.type !== 'normal'){\r\n // https://gitee.com/layui/layui/issues/I8PHCR\r\n if(i1 == 0) fieldsIsHide[item3.field] = true;\r\n }\r\n });\r\n }\r\n dataMain.push(vals.join(','));\r\n });\r\n\r\n // 表合计\r\n thatTable && layui.each(thatTable.dataTotal, function(i, o){\r\n fieldsIsHide[o.field] || dataTotal.push('\"' + (o.total || '') + '\"');\r\n });\r\n\r\n return dataTitle.join(',') + '\\r\\n' + dataMain.join('\\r\\n') + '\\r\\n' + dataTotal.join(',');\r\n }());\r\n\r\n alink.download = (opts.title || config.title || 'table_'+ (config.index || '')) + '.' + type;\r\n document.body.appendChild(alink);\r\n alink.click();\r\n document.body.removeChild(alink);\r\n };\r\n\r\n // 获取表格配置信息\r\n table.getOptions = function (id) {\r\n return getThisTableConfig(id);\r\n }\r\n\r\n // 显示或隐藏列\r\n table.hideCol = function (id, cols) {\r\n var that = getThisTable(id);\r\n if (!that) {\r\n return;\r\n }\r\n\r\n if (layui.type(cols) === 'boolean') {\r\n // 显示全部或者隐藏全部\r\n that.eachCols(function (i2, item2) {\r\n var key = item2.key;\r\n var col = that.col(key);\r\n var parentKey = item2.parentKey;\r\n // 同步勾选列的 hide 值和隐藏样式\r\n if (col.hide != cols) {\r\n var hide = col.hide = cols;\r\n that.elem.find('*[data-key=\"'+ key +'\"]')[\r\n hide ? 'addClass' : 'removeClass'\r\n ](HIDE);\r\n // 根据列的显示隐藏,同步多级表头的父级相关属性值\r\n that.setParentCol(hide, parentKey);\r\n }\r\n })\r\n } else {\r\n cols = layui.isArray(cols) ? cols : [cols];\r\n layui.each(cols, function (i1, item1) {\r\n that.eachCols(function (i2, item2) {\r\n if (item1.field === item2.field) {\r\n var key = item2.key;\r\n var col = that.col(key);\r\n var parentKey = item2.parentKey;\r\n // 同步勾选列的 hide 值和隐藏样式\r\n if ('hide' in item1 && col.hide != item1.hide) {\r\n var hide = col.hide = !!item1.hide;\r\n that.elem.find('*[data-key=\"'+ key +'\"]')[\r\n hide ? 'addClass' : 'removeClass'\r\n ](HIDE);\r\n // 根据列的显示隐藏,同步多级表头的父级相关属性值\r\n that.setParentCol(hide, parentKey);\r\n }\r\n }\r\n })\r\n });\r\n }\r\n $('.' + ELEM_TOOL_PANEL).remove(); // 关闭字段筛选面板如果打开的话\r\n // 重新适配尺寸\r\n that.resize();\r\n }\r\n\r\n // 重载\r\n table.reload = function(id, options, deep, type){\r\n var config = getThisTableConfig(id); //获取当前实例配置项\r\n if(!config) return;\r\n\r\n var that = getThisTable(id);\r\n that.reload(options, deep, type);\r\n\r\n return thisTable.call(that);\r\n };\r\n\r\n // 仅重载数据\r\n table.reloadData = function(){\r\n var args = $.extend([], arguments);\r\n args[3] = 'reloadData';\r\n\r\n // 重载时,影响整个结构的参数,不适合更新的参数\r\n var dataParams = new RegExp('^('+ [\r\n 'elem', 'id', 'cols', 'width', 'height', 'maxHeight',\r\n 'toolbar', 'defaultToolbar',\r\n 'className', 'css', 'pagebar'\r\n ].join('|') + ')$');\r\n\r\n // 过滤与数据无关的参数\r\n layui.each(args[1], function (key, value) {\r\n if(dataParams.test(key)){\r\n delete args[1][key];\r\n }\r\n });\r\n\r\n return table.reload.apply(null, args);\r\n };\r\n\r\n // 核心入口\r\n table.render = function(options){\r\n var inst = new Class(options);\r\n return thisTable.call(inst);\r\n };\r\n\r\n // 清除临时 Key\r\n table.clearCacheKey = function(data){\r\n data = $.extend({}, data);\r\n delete data[table.config.checkName];\r\n delete data[table.config.indexName];\r\n delete data[table.config.numbersName];\r\n delete data[table.config.disabledName];\r\n return data;\r\n };\r\n\r\n // 自动完成渲染\r\n $(function(){\r\n table.init();\r\n });\r\n\r\n exports(MOD_NAME, table);\r\n});\r\n","/**\r\n * layui.treeTable\r\n * 树表组件\r\n */\r\n\r\nlayui.define(['table'], function (exports) {\r\n \"use strict\";\r\n\r\n var $ = layui.$;\r\n var form = layui.form;\r\n var table = layui.table;\r\n var hint = layui.hint();\r\n\r\n // api\r\n var treeTable = {\r\n config: {},\r\n // 事件\r\n on: table.on,\r\n // 遍历字段\r\n eachCols: table.eachCols,\r\n index: table.index,\r\n set: function (options) {\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n },\r\n resize: table.resize,\r\n getOptions: table.getOptions,\r\n hideCol: table.hideCol,\r\n renderData: table.renderData\r\n };\r\n\r\n // 操作当前实例\r\n var thisTreeTable = function () {\r\n var that = this;\r\n var options = that.config\r\n var id = options.id || options.index;\r\n\r\n return {\r\n config: options,\r\n reload: function (options, deep) {\r\n that.reload.call(that, options, deep);\r\n },\r\n reloadData: function (options, deep) {\r\n treeTable.reloadData(id, options, deep);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * 获取当前实例\r\n * @param {string} id 表格id\r\n * @returns {Class}\r\n */\r\n var getThisTable = function (id) {\r\n var that = thisTreeTable.that[id];\r\n if (!that) hint.error(id ? ('The treeTable instance with ID \\'' + id + '\\' not found') : 'ID argument required');\r\n return that || null;\r\n }\r\n\r\n // 字符\r\n var MOD_NAME = 'treeTable';\r\n var MOD_ID = 'lay-table-id';\r\n var HIDE = 'layui-hide';\r\n\r\n var ELEM_VIEW = '.layui-table-view';\r\n var ELEM_TREE = '.layui-table-tree';\r\n var ELEM_TOOL = '.layui-table-tool';\r\n var ELEM_BOX = '.layui-table-box';\r\n var ELEM_HEADER = '.layui-table-header';\r\n var ELEM_BODY = '.layui-table-body';\r\n var ELEM_MAIN = '.layui-table-main';\r\n var ELEM_FIXED = '.layui-table-fixed';\r\n var ELEM_FIXL = '.layui-table-fixed-l';\r\n var ELEM_FIXR = '.layui-table-fixed-r';\r\n var ELEM_CHECKED = 'layui-table-checked';\r\n\r\n var TABLE_TREE = 'layui-table-tree';\r\n var LAY_DATA_INDEX = 'LAY_DATA_INDEX';\r\n var LAY_DATA_INDEX_HISTORY = 'LAY_DATA_INDEX_HISTORY';\r\n var LAY_PARENT_INDEX = 'LAY_PARENT_INDEX';\r\n var LAY_CHECKBOX_HALF = 'LAY_CHECKBOX_HALF';\r\n var LAY_EXPAND = 'LAY_EXPAND';\r\n var LAY_HAS_EXPANDED = 'LAY_HAS_EXPANDED';\r\n var LAY_ASYNC_STATUS = 'LAY_ASYNC_STATUS';\r\n var LAY_CASCADE = ['all', 'parent', 'children', 'none'];\r\n var HTML_TAG_RE = /<[^>]+?>/;\r\n var ICON_PROPS = ['flexIconClose', 'flexIconOpen', 'iconClose', 'iconOpen', 'iconLeaf', 'icon']\r\n\r\n /**\r\n * 构造器\r\n * @class\r\n */\r\n var Class = function (options) {\r\n var that = this;\r\n that.index = ++treeTable.index;\r\n that.config = $.extend(true, {}, that.config, treeTable.config, options);\r\n // 处理一些属性\r\n that.init();\r\n that.render();\r\n };\r\n\r\n var updateCache = function (id, childrenKey, data) {\r\n var tableCache = table.cache[id];\r\n layui.each(data || tableCache, function (index, item) {\r\n var itemDataIndex = item[LAY_DATA_INDEX] || '';\r\n if (itemDataIndex.indexOf('-') !== -1) {\r\n tableCache[itemDataIndex] = item;\r\n }\r\n item[childrenKey] && updateCache(id, childrenKey, item[childrenKey]);\r\n })\r\n }\r\n\r\n var updateOptions = function (id, options, reload) {\r\n var that = getThisTable(id);\r\n reload === 'reloadData' || (that.status = { // 用于记录一些状态信息\r\n expand: {} // 折叠状态\r\n });\r\n var thatOptionsTemp = $.extend(true, {}, that.getOptions(), options);\r\n var treeOptions = thatOptionsTemp.tree;\r\n var childrenKey = treeOptions.customName.children;\r\n var idKey = treeOptions.customName.id;\r\n // 处理属性\r\n delete options.hasNumberCol;\r\n delete options.hasChecboxCol;\r\n delete options.hasRadioCol;\r\n table.eachCols(null, function (i1, item1) {\r\n if (item1.type === 'numbers') {\r\n options.hasNumberCol = true;\r\n } else if (item1.type === 'checkbox') {\r\n options.hasChecboxCol = true;\r\n } else if (item1.type === 'radio') {\r\n options.hasRadioCol = true;\r\n }\r\n }, thatOptionsTemp.cols)\r\n\r\n var parseData = options.parseData;\r\n var done = options.done;\r\n\r\n // treeTable重载数据时,会先加载显示顶层节点,然后根据重载数据前的子节点展开状态,展开相应的子节点,\r\n // 那么如果重载数据前有滚动条滚动在某个位子,重新加载时顶层节点如果比较少,只显示顶层节点时没有滚动条的情况下,\r\n // 自动展开子节点后,滚动条就会显示在顶部,无法保持在重载数据之前的位置。\r\n // 处理保持滚动条的问题,重载数据前记录滚动条的位置\r\n if(reload === 'reloadData' && thatOptionsTemp.scrollPos === 'fixed'){\r\n that.scrollTopCache = that.config.elem.next().find(ELEM_BODY).scrollTop();\r\n }\r\n\r\n if (thatOptionsTemp.url) {\r\n // 异步加载的时候需要处理parseData进行转换\r\n if (!reload || (reload && parseData && !parseData.mod)) {\r\n options.parseData = function () {\r\n var parseDataThat = this;\r\n var args = arguments;\r\n var retData = args[0];\r\n if (layui.type(parseData) === 'function') {\r\n retData = parseData.apply(parseDataThat, args) || args[0];\r\n }\r\n var dataName = parseDataThat.response.dataName;\r\n // 处理 isSimpleData\r\n if (treeOptions.data.isSimpleData && !treeOptions.async.enable) { // 异步加载和 isSimpleData 不应该一起使用\r\n retData[dataName] = that.flatToTree(retData[dataName]);\r\n }\r\n // 处理节点状态\r\n updateStatus(retData[dataName], function (item) {\r\n item[LAY_EXPAND] = LAY_EXPAND in item ? item[LAY_EXPAND] : (item[idKey] !== undefined && that.status.expand[item[idKey]])\r\n }, childrenKey);\r\n\r\n if (parseDataThat.autoSort && parseDataThat.initSort && parseDataThat.initSort.type) {\r\n layui.sort(retData[dataName], parseDataThat.initSort.field, parseDataThat.initSort.type === 'desc', true)\r\n }\r\n\r\n that.initData(retData[dataName]);\r\n\r\n return retData;\r\n }\r\n options.parseData.mod = true\r\n }\r\n } else {\r\n if(options.data !== undefined){\r\n options.data = options.data || [];\r\n // 处理 isSimpleData\r\n if (treeOptions.data.isSimpleData) {\r\n options.data = that.flatToTree(options.data);\r\n }\r\n that.initData(options.data);\r\n }\r\n }\r\n\r\n if (!reload || (reload && done && !done.mod)) {\r\n options.done = function () {\r\n var args = arguments;\r\n var doneThat = this;\r\n // undefined: 初始 render 或 reload,两者本质没有区别可以不做区分\r\n // 'reloadData': 重载数据\r\n // 'renderData': 重新渲染数据\r\n var renderType = args[3];\r\n var isRenderData = renderType === 'renderData';\r\n if (!isRenderData) {\r\n delete that.isExpandAll;\r\n }\r\n\r\n var tableView = this.elem.next();\r\n that.updateStatus(null, {\r\n LAY_HAS_EXPANDED: false // 去除已经打开过的状态\r\n });\r\n // 更新cache中的内容 将子节点也存到cache中\r\n updateCache(id, childrenKey);\r\n // 更新全选框的状态\r\n var layTableAllChooseElem = tableView.find('[name=\"layTableCheckbox\"][lay-filter=\"layTableAllChoose\"]');\r\n if (layTableAllChooseElem.length) {\r\n var checkStatus = treeTable.checkStatus(id);\r\n layTableAllChooseElem.prop({\r\n checked: checkStatus.isAll && checkStatus.data.length,\r\n indeterminate: !checkStatus.isAll && checkStatus.data.length\r\n })\r\n }\r\n if (!isRenderData && thatOptionsTemp.autoSort && thatOptionsTemp.initSort && thatOptionsTemp.initSort.type) {\r\n treeTable.sort(id);\r\n }\r\n\r\n that.renderTreeTable(tableView);\r\n\r\n // 恢复滚动条位置\r\n if(renderType === 'reloadData' && doneThat.scrollPos === 'fixed'){\r\n tableView.find(ELEM_BODY).scrollTop(that.scrollTopCache);\r\n }\r\n\r\n if (layui.type(done) === 'function') {\r\n return done.apply(doneThat, args);\r\n }\r\n }\r\n options.done.mod = true;\r\n }\r\n\r\n // 处理图标\r\n if(options && options.tree && options.tree.view){\r\n layui.each(ICON_PROPS, function(i, iconProp){\r\n if(options.tree.view[iconProp] !== undefined){\r\n options.tree.view[iconProp] = that.normalizedIcon(options.tree.view[iconProp]);\r\n }\r\n })\r\n }\r\n }\r\n\r\n Class.prototype.init = function () {\r\n var that = this;\r\n var options = that.config;\r\n var cascade = options.tree.data.cascade;\r\n if (LAY_CASCADE.indexOf(cascade) === -1) {\r\n options.tree.data.cascade = 'all'; // 超出范围的都重置为全联动\r\n }\r\n\r\n // 先初始一个空的表格以便拿到对应的表格实例信息\r\n var tableIns = table.render($.extend({}, options, {\r\n data: [],\r\n url: '',\r\n done: null\r\n }))\r\n var id = tableIns.config.id;\r\n thisTreeTable.that[id] = that; // 记录当前实例对象\r\n that.tableIns = tableIns;\r\n\r\n updateOptions(id, options);\r\n }\r\n\r\n // 初始默认配置\r\n Class.prototype.config = {\r\n tree: {\r\n customName: {\r\n children: \"children\", // 节点数据中保存子节点数据的属性名称\r\n isParent: \"isParent\", // 节点数据保存节点是否为父节点的属性名称\r\n name: \"name\", // 节点数据保存节点名称的属性名称\r\n id: \"id\", // 唯一标识的属性名称\r\n pid: \"parentId\", // 父节点唯一标识的属性名称\r\n icon: \"icon\" // 图标的属性名称\r\n },\r\n view: {\r\n indent: 14, // 层级缩进量\r\n flexIconClose: '', // 关闭时候的折叠图标\r\n flexIconOpen: '', // 打开时候的折叠图标\r\n showIcon: true, // 是否显示图标(节点类型图标)\r\n icon: '', // 节点图标,如果设置了这个属性或者数据中有这个字段信息,不管打开还是关闭都以这个图标的值为准\r\n iconClose: '', // 关闭时候的图标\r\n iconOpen: '', // 打开时候的图标\r\n iconLeaf: '', // 叶子节点的图标\r\n showFlexIconIfNotParent: false, // 当节点不是父节点的时候是否显示折叠图标\r\n dblClickExpand: true, // 双击节点时,是否自动展开父节点的标识\r\n expandAllDefault: false // 默认展开所有节点\r\n },\r\n data: {\r\n isSimpleData: false, // 是否简单数据模式\r\n rootPid: null, // 根节点的父 ID 值\r\n cascade: 'all' // 级联方式 默认全部级联:all 可选 级联父 parent 级联子 children\r\n },\r\n async: {\r\n enable: false, // 是否开启异步加载模式,只有开启的时候其他参数才起作用\r\n url: '', // 异步加载的接口,可以根据需要设置与顶层接口不同的接口,如果相同可以不设置该参数\r\n type: null, // 请求的接口类型,设置可缺省同上\r\n contentType: null, // 提交参数的数据类型,设置可缺省同上\r\n headers: null, // 设置可缺省同上\r\n where: null, // 设置可缺省同上\r\n autoParam: [] // 自动参数\r\n },\r\n callback: {\r\n beforeExpand: null, // 展开前的回调 return false 可以阻止展开的动作\r\n onExpand: null // 展开之后的回调\r\n }\r\n },\r\n };\r\n\r\n Class.prototype.normalizedIcon = function(iconStr){\r\n return iconStr\r\n ? HTML_TAG_RE.test(iconStr) ? iconStr : ''\r\n : ''\r\n }\r\n\r\n Class.prototype.getOptions = function () {\r\n var that = this;\r\n if (that.tableIns) {\r\n return table.getOptions(that.tableIns.config.id); // 获取表格的实时配置信息\r\n } else {\r\n return that.config;\r\n }\r\n };\r\n\r\n function flatToTree(flatArr, idKey, pIdKey, childrenKey, rootPid) {\r\n idKey = idKey || 'id';\r\n pIdKey = pIdKey || 'parentId';\r\n childrenKey = childrenKey || 'children';\r\n // 创建一个空的 map 对象,用于保存所有的节点\r\n var map = {};\r\n var rootNodes = [];\r\n\r\n var idTemp = '';\r\n var pidTemp = '';\r\n layui.each(flatArr, function(index, item){\r\n idTemp = idKey + item[idKey];\r\n pidTemp = idKey + item[pIdKey];\r\n\r\n // 将节点存入 map 对象\r\n if(!map[idTemp]){\r\n map[idTemp] = {};\r\n map[idTemp][childrenKey] = [];\r\n }\r\n\r\n // 合并节点\r\n var tempObj = {};\r\n tempObj[childrenKey] = map[idTemp][childrenKey];\r\n map[idTemp] = $.extend({}, item, tempObj);\r\n\r\n var isRootNode = (rootPid ? map[idTemp][pIdKey] === rootPid : !map[idTemp][pIdKey]);\r\n if(isRootNode){\r\n rootNodes.push(map[idTemp]);\r\n }else{\r\n if(!map[pidTemp]){\r\n map[pidTemp] = {};\r\n map[pidTemp][childrenKey] = [];\r\n }\r\n map[pidTemp][childrenKey].push(map[idTemp]);\r\n }\r\n });\r\n\r\n return rootNodes;\r\n }\r\n\r\n Class.prototype.flatToTree = function (tableData) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var customName = treeOptions.customName;\r\n var tableId = options.id;\r\n\r\n tableData = tableData || table.cache[tableId];\r\n\r\n return flatToTree(tableData, customName.id, customName.pid, customName.children, treeOptions.data.rootPid)\r\n }\r\n\r\n Class.prototype.treeToFlat = function (tableData, parentId, parentIndex) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var customName = treeOptions.customName;\r\n var childrenKey = customName.children;\r\n var pIdKey = customName.pid;\r\n\r\n var flat = [];\r\n layui.each(tableData, function (i1, item1) {\r\n var dataIndex = (parentIndex ? parentIndex + '-' : '') + i1;\r\n var dataNew = $.extend({}, item1);\r\n dataNew[pIdKey] = item1[pIdKey] || parentId;\r\n flat.push(dataNew);\r\n flat = flat.concat(that.treeToFlat(item1[childrenKey], item1[customName.id], dataIndex));\r\n });\r\n\r\n return flat;\r\n }\r\n\r\n // 通过当前行数据返回 treeNode 信息\r\n Class.prototype.getTreeNode = function (data) {\r\n var that = this;\r\n if (!data) {\r\n return hint.error('找不到节点数据');\r\n }\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableId = options.id;\r\n var customName = treeOptions.customName;\r\n\r\n // 带上一些常用的方法\r\n return {\r\n data: data,\r\n dataIndex: data[LAY_DATA_INDEX],\r\n getParentNode: function () {\r\n return that.getNodeByIndex(data[LAY_PARENT_INDEX])\r\n },\r\n };\r\n }\r\n\r\n // 通过 index 返回节点信息\r\n Class.prototype.getNodeByIndex = function (index) {\r\n var that = this;\r\n var treeNodeData = that.getNodeDataByIndex(index);\r\n if (!treeNodeData) {\r\n return hint.error('找不到节点数据');\r\n }\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var customName = treeOptions.customName;\r\n var parentKey = customName.parent;\r\n var tableId = options.id;\r\n\r\n var treeNode = {\r\n data: treeNodeData,\r\n dataIndex: treeNodeData[LAY_DATA_INDEX],\r\n getParentNode: function () {\r\n return that.getNodeByIndex(treeNodeData[LAY_PARENT_INDEX])\r\n },\r\n update: function (data) {\r\n return treeTable.updateNode(tableId, index, data)\r\n },\r\n remove: function () {\r\n return treeTable.removeNode(tableId, index)\r\n },\r\n expand: function (opts) {\r\n return treeTable.expandNode(tableId, $.extend({}, opts, {\r\n index: index\r\n }))\r\n },\r\n setChecked: function (opts) {\r\n return treeTable.setRowChecked(tableId, $.extend({}, opts, {\r\n index: index\r\n }))\r\n }\r\n };\r\n\r\n treeNode.dataIndex = index;\r\n return treeNode;\r\n }\r\n\r\n // 通过 id 获取节点信息\r\n Class.prototype.getNodeById = function (id) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var customName = treeOptions.customName;\r\n var idKey = customName.id;\r\n\r\n // 通过 id 拿到数据的 dataIndex\r\n var dataIndex = '';\r\n var tableDataFlat = treeTable.getData(options.id, true);\r\n layui.each(tableDataFlat, function (i1, item1) {\r\n if (item1[idKey] === id) {\r\n dataIndex = item1[LAY_DATA_INDEX];\r\n return true;\r\n }\r\n })\r\n if (!dataIndex) {\r\n return;\r\n }\r\n\r\n // 用 index\r\n return that.getNodeByIndex(dataIndex);\r\n }\r\n\r\n // 通过 index 获取节点数据\r\n Class.prototype.getNodeDataByIndex = function (index, clone, newValue) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableId = options.id;\r\n var tableCache = table.cache[tableId];\r\n\r\n // 获取当前行中的数据\r\n var dataCache = tableCache[index];\r\n\r\n // 若非删除操作,则返回合并后的数据\r\n if (newValue !== 'delete' && dataCache) {\r\n $.extend(dataCache, newValue);\r\n return clone ? $.extend({}, dataCache) : dataCache;\r\n }\r\n\r\n // 删除操作\r\n var dataRet = tableCache;\r\n var indexArr = String(index).split('-');\r\n\r\n // if (options.url || indexArr.length > 1) tableCache = null // 只有在删除根节点的时候才需要处理\r\n\r\n // 根据 index 进行数据处理\r\n for (var i = 0, childrenKey = treeOptions.customName.children; i < indexArr.length; i++) {\r\n if (newValue && i === indexArr.length - 1) {\r\n if (newValue === 'delete') { // 删除并返回当前数据\r\n // 同步 cache --- 此段代码注释缘由:data 属性模式造成数据重复执行 splice (@Gitee: #I7Z0A/I82E2S)\r\n /*if (tableCache) {\r\n layui.each(tableCache, function (i1, item1) {\r\n if (item1[LAY_DATA_INDEX] === index) {\r\n tableCache.splice(i1, 1);\r\n return true;\r\n }\r\n })\r\n }*/\r\n return (i ? dataRet[childrenKey] : dataRet).splice(indexArr[i], 1)[0];\r\n } else { // 更新值\r\n $.extend((i ? dataRet[childrenKey] : dataRet)[indexArr[i]], newValue);\r\n }\r\n }\r\n dataRet = i ? dataRet[childrenKey][indexArr[i]] : dataRet[indexArr[i]];\r\n }\r\n return clone ? $.extend({}, dataRet) : dataRet;\r\n }\r\n\r\n treeTable.getNodeDataByIndex = function (id, index) {\r\n var that = getThisTable(id);\r\n if(!that) return;\r\n return that.getNodeDataByIndex(index, true);\r\n }\r\n\r\n // 判断是否是父节点\r\n var checkIsParent = function (data, isParentKey, childrenKey) {\r\n isParentKey = isParentKey || 'isParent';\r\n childrenKey = childrenKey || 'children';\r\n layui.each(data, function (i1, item1) {\r\n if (!(isParentKey in item1)) {\r\n item1[isParentKey] = !!(item1[childrenKey] && item1[childrenKey].length);\r\n checkIsParent(item1[childrenKey]);\r\n }\r\n })\r\n }\r\n\r\n Class.prototype.initData = function (data, parentIndex) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableId = options.id;\r\n\r\n data = data || that.getTableData();\r\n\r\n var customName = treeOptions.customName;\r\n var isParentKey = customName.isParent;\r\n var childrenKey = customName.children;\r\n\r\n var update = function(data, parentIndex){\r\n layui.each(data, function (i1, item1) {\r\n if (!(isParentKey in item1)) {\r\n item1[isParentKey] = !!(item1[childrenKey] && item1[childrenKey].length);\r\n }\r\n item1[LAY_DATA_INDEX_HISTORY] = item1[LAY_DATA_INDEX];\r\n item1[LAY_PARENT_INDEX] = parentIndex = parentIndex || '';\r\n var dataIndex = item1[LAY_DATA_INDEX] = (parentIndex ? parentIndex + '-' : '') + i1;\r\n update(item1[childrenKey] || [], dataIndex);\r\n });\r\n }\r\n\r\n update(data, parentIndex);\r\n\r\n updateCache(tableId, childrenKey, data);\r\n\r\n return data;\r\n }\r\n\r\n // 与 tableId 有关带防抖的方法\r\n var debounceFn = (function () {\r\n var fn = {};\r\n return function (tableId, func, wait) {\r\n if (!fn[tableId]) {\r\n fn[tableId] = layui.debounce(func, wait);\r\n }\r\n return fn[tableId];\r\n }\r\n })()\r\n\r\n // 优化参数,添加一个 getNodeByIndex 方法 只传 表格id 和行 dataIndex 分几步优化 todo\r\n var expandNode = function (treeNode, expandFlag, sonSign, focus, callbackFlag) {\r\n // treeNode // 需要展开的节点\r\n var trElem = treeNode.trElem;\r\n var tableViewElem = treeNode.tableViewElem || trElem.closest(ELEM_VIEW);\r\n var tableId = treeNode.tableId || tableViewElem.attr(MOD_ID);\r\n var options = treeNode.options || table.getOptions(tableId);\r\n var dataIndex = treeNode.dataIndex || trElem.attr('lay-data-index'); // 可能出现多层\r\n var treeTableThat = getThisTable(tableId);\r\n\r\n var treeOptions = options.tree || {};\r\n var customName = treeOptions.customName || {};\r\n var isParentKey = customName.isParent;\r\n\r\n var trData = treeTableThat.getNodeDataByIndex(dataIndex);\r\n\r\n // 后续调优:对已经展开的节点进行展开和已经关闭的节点进行关闭应该做优化减少不必要的代码执行 todo\r\n var isToggle = layui.type(expandFlag) !== 'boolean';\r\n var trExpand = isToggle ? !trData[LAY_EXPAND] : expandFlag;\r\n var retValue = trData[isParentKey] ? trExpand : null;\r\n\r\n if (callbackFlag && trExpand != trData[LAY_EXPAND] && (!trData[LAY_ASYNC_STATUS] || trData[LAY_ASYNC_STATUS] === 'local')) {\r\n var beforeExpand = treeOptions.callback.beforeExpand;\r\n if (layui.type(beforeExpand) === 'function') {\r\n if (beforeExpand(tableId, trData, expandFlag) === false) {\r\n return retValue;\r\n }\r\n }\r\n }\r\n\r\n var trExpanded = trData[LAY_HAS_EXPANDED]; // 展开过,包括异步加载\r\n\r\n // 找到表格中的同类节点(需要找到lay-data-index一致的所有行)\r\n var trsElem = tableViewElem.find('tr[lay-data-index=\"' + dataIndex + '\"]');\r\n var flexIconElem = trsElem.find('.layui-table-tree-flexIcon');\r\n treeTableThat.updateNodeIcon({\r\n scopeEl: trsElem,\r\n isExpand: trExpand,\r\n isParent: trData[isParentKey]\r\n });\r\n trData[LAY_EXPAND] = trExpand;\r\n var trDataId = trData[customName.id];\r\n trDataId !== undefined && (treeTableThat.status.expand[trDataId] = trExpand);\r\n if (retValue === null) {\r\n return retValue;\r\n }\r\n\r\n var childNodes = trData[customName.children] || [];\r\n // 处理子节点展示与否\r\n if (trExpand) {\r\n // 展开\r\n if (trExpanded) { // 已经展开过\r\n if (!childNodes.length) return ;//异步如果子节点没有数据情况下双点行展开所有已展开的节点问题解决\r\n trsElem.nextAll(childNodes.map(function (value, index, array) {\r\n return 'tr[lay-data-index=\"' + value[LAY_DATA_INDEX] + '\"]'\r\n }).join(',')).removeClass(HIDE);\r\n layui.each(childNodes, function (i1, item1) {\r\n if (!item1[isParentKey]) {\r\n return;\r\n }\r\n\r\n if (sonSign && !isToggle && !item1[LAY_EXPAND]) { // 非状态切换的情况下\r\n // 级联展开子节点\r\n expandNode({\r\n dataIndex: item1[LAY_DATA_INDEX],\r\n trElem: tableViewElem.find('tr[lay-data-index=\"' + item1[LAY_DATA_INDEX] + '\"]').first(),\r\n tableViewElem: tableViewElem,\r\n tableId: tableId,\r\n options: options,\r\n }, expandFlag, sonSign, focus, callbackFlag);\r\n } else if (item1[LAY_EXPAND]) { // 初始化级联展开\r\n expandNode({\r\n dataIndex: item1[LAY_DATA_INDEX],\r\n trElem: tableViewElem.find('tr[lay-data-index=\"' + item1[LAY_DATA_INDEX] + '\"]').first(),\r\n tableViewElem: tableViewElem,\r\n tableId: tableId,\r\n options: options,\r\n }, true);\r\n }\r\n });\r\n } else {\r\n var asyncSetting = treeOptions.async || {};\r\n var asyncUrl = asyncSetting.url || options.url;\r\n if (asyncSetting.enable && trData[isParentKey] && !trData[LAY_ASYNC_STATUS]) {\r\n trData[LAY_ASYNC_STATUS] = 'loading';\r\n flexIconElem.html('');\r\n\r\n // 异步获取子节点数据成功之后处理方法\r\n var asyncSuccessFn = function (data) {\r\n trData[LAY_ASYNC_STATUS] = 'success';\r\n trData[customName.children] = data;\r\n treeTableThat.initData(trData[customName.children], trData[LAY_DATA_INDEX])\r\n expandNode(treeNode, true, isToggle ? false : sonSign, focus, callbackFlag);\r\n }\r\n\r\n var format = asyncSetting.format; // 自定义数据返回方法\r\n if (layui.type(format) === 'function') {\r\n format(trData, options, asyncSuccessFn);\r\n return retValue;\r\n }\r\n\r\n var params = {};\r\n // 参数\r\n var data = $.extend(params, asyncSetting.where || options.where);\r\n var asyncAutoParam = asyncSetting.autoParam;\r\n layui.each(asyncAutoParam, function (index, item) {\r\n var itemStr = item;\r\n var itemArr = item.split('=');\r\n data[itemArr[0].trim()] = trData[(itemArr[1] || itemArr[0]).trim()]\r\n })\r\n\r\n var asyncContentType = asyncSetting.contentType || options.contentType;\r\n if (asyncContentType && asyncContentType.indexOf(\"application/json\") == 0) { // 提交 json 格式\r\n data = JSON.stringify(data);\r\n }\r\n var asyncType = asyncSetting.method || options.method;\r\n var asyncDataType = asyncSetting.dataType || options.dataType;\r\n var asyncJsonpCallback = asyncSetting.jsonpCallback || options.jsonpCallback;\r\n var asyncHeaders = asyncSetting.headers || options.headers;\r\n var asyncParseData = asyncSetting.parseData || options.parseData;\r\n var asyncResponse = asyncSetting.response || options.response;\r\n\r\n $.ajax({\r\n type: asyncType || 'get',\r\n url: asyncUrl,\r\n contentType: asyncContentType,\r\n data: data,\r\n dataType: asyncDataType || 'json',\r\n jsonpCallback: asyncJsonpCallback,\r\n headers: asyncHeaders || {},\r\n success: function (res) {\r\n // 若有数据解析的回调,则获得其返回的数据\r\n if (typeof asyncParseData === 'function') {\r\n res = asyncParseData.call(options, res) || res;\r\n }\r\n // 检查数据格式是否符合规范\r\n if (res[asyncResponse.statusName] != asyncResponse.statusCode) {\r\n trData[LAY_ASYNC_STATUS] = 'error';\r\n // 异常处理 todo\r\n flexIconElem.html('');\r\n // 事件\r\n } else {\r\n // 正常返回\r\n asyncSuccessFn(res[asyncResponse.dataName]);\r\n }\r\n },\r\n error: function (e, msg) {\r\n trData[LAY_ASYNC_STATUS] = 'error';\r\n // 异常处理 todo\r\n typeof options.error === 'function' && options.error(e, msg);\r\n }\r\n });\r\n return retValue;\r\n }\r\n trExpanded = trData[LAY_HAS_EXPANDED] = true;\r\n if (childNodes.length) {\r\n // 判断是否需要排序\r\n if (options.initSort && (!options.url || options.autoSort)) {\r\n var initSort = options.initSort;\r\n if (initSort.type) {\r\n layui.sort(childNodes, initSort.field, initSort.type === 'desc', true);\r\n } else {\r\n // 恢复默认\r\n layui.sort(childNodes, table.config.indexName, null, true);\r\n }\r\n }\r\n treeTableThat.initData(trData[customName.children], trData[LAY_DATA_INDEX]);\r\n // 将数据通过模板得出节点的html代码\r\n var str2 = table.getTrHtml(tableId, childNodes, null, null, dataIndex);\r\n\r\n var str2Obj = {\r\n trs: $(str2.trs.join('')),\r\n trs_fixed: $(str2.trs_fixed.join('')),\r\n trs_fixed_r: $(str2.trs_fixed_r.join(''))\r\n }\r\n var dataLevel = dataIndex.split('-').length - 1;\r\n var dataLevelNew = (dataLevel || 0) + 1;\r\n layui.each(childNodes, function (childIndex, childItem) {\r\n str2Obj.trs.eq(childIndex).attr({\r\n 'data-index': childItem[LAY_DATA_INDEX],\r\n 'lay-data-index': childItem[LAY_DATA_INDEX],\r\n 'data-level': dataLevelNew\r\n }).data('index', childItem[LAY_DATA_INDEX]);\r\n\r\n str2Obj.trs_fixed.eq(childIndex).attr({\r\n 'data-index': childItem[LAY_DATA_INDEX],\r\n 'lay-data-index': childItem[LAY_DATA_INDEX],\r\n 'data-level': dataLevelNew\r\n }).data('index', childItem[LAY_DATA_INDEX]);\r\n\r\n str2Obj.trs_fixed_r.eq(childIndex).attr({\r\n 'data-index': childItem[LAY_DATA_INDEX],\r\n 'lay-data-index': childItem[LAY_DATA_INDEX],\r\n 'data-level': dataLevelNew\r\n }).data('index', childItem[LAY_DATA_INDEX]);\r\n })\r\n\r\n tableViewElem.find(ELEM_MAIN).find('tbody tr[lay-data-index=\"' + dataIndex + '\"]').after(str2Obj.trs);\r\n tableViewElem.find(ELEM_FIXL).find('tbody tr[lay-data-index=\"' + dataIndex + '\"]').after(str2Obj.trs_fixed);\r\n tableViewElem.find(ELEM_FIXR).find('tbody tr[lay-data-index=\"' + dataIndex + '\"]').after(str2Obj.trs_fixed_r);\r\n\r\n // 初始化新增的节点中的内容\r\n treeTableThat.renderTreeTable(str2Obj.trs, dataLevelNew);\r\n\r\n if (sonSign && !isToggle) { // 非状态切换的情况下\r\n // 级联展开/关闭子节点\r\n layui.each(childNodes, function (i1, item1) {\r\n expandNode({\r\n dataIndex: item1[LAY_DATA_INDEX],\r\n trElem: tableViewElem.find('tr[lay-data-index=\"' + item1[LAY_DATA_INDEX] + '\"]').first(),\r\n tableViewElem: tableViewElem,\r\n tableId: tableId,\r\n options: options,\r\n }, expandFlag, sonSign, focus, callbackFlag);\r\n })\r\n }\r\n }\r\n }\r\n } else {\r\n treeTableThat.isExpandAll = false;\r\n // 关闭\r\n if (sonSign && !isToggle) { // 非状态切换的情况下\r\n layui.each(childNodes, function (i1, item1) {\r\n expandNode({\r\n dataIndex: item1[LAY_DATA_INDEX],\r\n trElem: tableViewElem.find('tr[lay-data-index=\"' + item1[LAY_DATA_INDEX] + '\"]').first(),\r\n tableViewElem: tableViewElem,\r\n tableId: tableId,\r\n options: options,\r\n }, expandFlag, sonSign, focus, callbackFlag);\r\n });\r\n tableViewElem.find(childNodes.map(function (value, index, array) { // 只隐藏直接子节点,其他由递归的处理\r\n return 'tr[lay-data-index=\"' + value[LAY_DATA_INDEX] + '\"]'\r\n }).join(',')).addClass(HIDE);\r\n } else {\r\n var childNodesFlat = treeTableThat.treeToFlat(childNodes, trData[customName.id], dataIndex);\r\n tableViewElem.find(childNodesFlat.map(function (value, index, array) {\r\n return 'tr[lay-data-index=\"' + value[LAY_DATA_INDEX] + '\"]'\r\n }).join(',')).addClass(HIDE);\r\n }\r\n }\r\n\r\n\r\n debounceFn('resize-' + tableId, function () {\r\n treeTable.resize(tableId);\r\n }, 0)();\r\n\r\n if (callbackFlag && trData[LAY_ASYNC_STATUS] !== 'loading') {\r\n var onExpand = treeOptions.callback.onExpand;\r\n layui.type(onExpand) === 'function' && onExpand(tableId, trData, trExpand);\r\n }\r\n\r\n return retValue;\r\n }\r\n\r\n /**\r\n * 展开或关闭一个节点\r\n * @param {String} id 树表id\r\n * @param {Object} opts\r\n * @param {Number|String} opts.index 展开行的数据下标\r\n * @param {Boolean} [opts.expandFlag] 展开、关闭、切换\r\n * @param {Boolean} [opts.inherit] 是否级联子节点\r\n * @param {Boolean} [opts.callbackFlag] 是否触发事件\r\n * @return [{Boolean}] 状态结果\r\n * */\r\n treeTable.expandNode = function (id, opts) {\r\n var that = getThisTable(id);\r\n if (!that) return;\r\n\r\n opts = opts || {};\r\n\r\n var index = opts.index;\r\n var expandFlag = opts.expandFlag;\r\n var sonSign = opts.inherit;\r\n var callbackFlag = opts.callbackFlag;\r\n\r\n var options = that.getOptions();\r\n var tableViewElem = options.elem.next();\r\n return expandNode({\r\n trElem: tableViewElem.find('tr[lay-data-index=\"' + index + '\"]').first()\r\n }, expandFlag, sonSign, null, callbackFlag)\r\n };\r\n\r\n /**\r\n * 展开或关闭全部节点\r\n * @param {String} id 树表id\r\n * @param {Boolean} expandFlag 展开或关闭\r\n * */\r\n treeTable.expandAll = function (id, expandFlag) {\r\n if (layui.type(expandFlag) !== 'boolean') {\r\n return hint.error('expandAll 的展开状态参数只接收true/false')\r\n }\r\n\r\n var that = getThisTable(id);\r\n if (!that) return;\r\n\r\n that.isExpandAll = expandFlag;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableView = options.elem.next();\r\n var isParentKey = treeOptions.customName.isParent;\r\n var idKey = treeOptions.customName.id;\r\n var showFlexIconIfNotParent = treeOptions.view.showFlexIconIfNotParent;\r\n\r\n if (!expandFlag) {\r\n // 关闭所有\r\n // 将所有已经打开的节点的状态设置为关闭,\r\n that.updateStatus(null, function (d) {\r\n if (d[isParentKey] || showFlexIconIfNotParent) {\r\n d[LAY_EXPAND] = false;\r\n d[idKey] !== undefined && (that.status.expand[d[idKey]] = false);\r\n }\r\n }) // 只处理当前页,如果需要处理全部表格,需要用treeTable.updateStatus\r\n // 隐藏所有非顶层的节点\r\n tableView.find('.layui-table-box tbody tr[data-level!=\"0\"]').addClass(HIDE);\r\n\r\n tableView.find('.layui-table-tree-flexIcon').html(treeOptions.view.flexIconClose);\r\n treeOptions.view.showIcon && tableView\r\n .find('.layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)')\r\n .html(treeOptions.view.iconClose);\r\n } else {\r\n var tableDataFlat = treeTable.getData(id, true);\r\n // 展开所有\r\n // 存在异步加载\r\n if (treeOptions.async.enable) {\r\n // 判断是否有未加载过的节点\r\n var isAllAsyncDone = true;\r\n layui.each(tableDataFlat, function (i1, item1) {\r\n if (item1[isParentKey] && !item1[LAY_ASYNC_STATUS]) {\r\n isAllAsyncDone = false;\r\n return true;\r\n }\r\n })\r\n // 有未加载过的节点\r\n if (!isAllAsyncDone) {\r\n // 逐个展开\r\n layui.each(treeTable.getData(id), function (i1, item1) {\r\n treeTable.expandNode(id, {\r\n index: item1[LAY_DATA_INDEX],\r\n expandFlag: true,\r\n inherit: true\r\n })\r\n })\r\n return;\r\n }\r\n }\r\n\r\n // 先判断是否全部打开过了\r\n var isAllExpanded = true;\r\n layui.each(tableDataFlat, function (i1, item1) {\r\n if (item1[isParentKey] && !item1[LAY_HAS_EXPANDED]) {\r\n isAllExpanded = false;\r\n return true;\r\n }\r\n })\r\n // 如果全部节点已经都打开过,就可以简单处理跟隐藏所有节点反操作\r\n if (isAllExpanded) {\r\n that.updateStatus(null, function (d) {\r\n if (d[isParentKey] || showFlexIconIfNotParent) {\r\n d[LAY_EXPAND] = true;\r\n d[idKey] !== undefined && (that.status.expand[d[idKey]] = true);\r\n }\r\n });\r\n // 显示所有子节点\r\n tableView.find('tbody tr[data-level!=\"0\"]').removeClass(HIDE);\r\n // 处理节点的图标\r\n tableView.find('.layui-table-tree-flexIcon').html(treeOptions.view.flexIconOpen);\r\n treeOptions.view.showIcon && tableView\r\n .find('.layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)')\r\n .html(treeOptions.view.iconOpen);\r\n } else {\r\n // 如果有未打开过的父节点,将 tr 内容全部重新生成\r\n that.updateStatus(null, function (d) {\r\n if (d[isParentKey] || showFlexIconIfNotParent) {\r\n d[LAY_EXPAND] = true;\r\n d[LAY_HAS_EXPANDED] = true;\r\n d[idKey] !== undefined && (that.status.expand[d[idKey]] = true);\r\n }\r\n });\r\n if (options.initSort && options.initSort.type && options.autoSort) {\r\n return treeTable.sort(id);\r\n }\r\n var trAll = table.getTrHtml(id, tableDataFlat);\r\n\r\n var trAllObj = {\r\n trs: $(trAll.trs.join('')),\r\n trs_fixed: $(trAll.trs_fixed.join('')),\r\n trs_fixed_r: $(trAll.trs_fixed_r.join(''))\r\n }\r\n var props;\r\n layui.each(tableDataFlat, function (dataIndex, dataItem) {\r\n var dataLevel = dataItem[LAY_DATA_INDEX].split('-').length - 1;\r\n props = {\r\n 'data-index': dataItem[LAY_DATA_INDEX],\r\n 'lay-data-index': dataItem[LAY_DATA_INDEX],\r\n 'data-level': dataLevel\r\n };\r\n trAllObj.trs.eq(dataIndex).attr(props).data('index', dataItem[LAY_DATA_INDEX]);\r\n trAllObj.trs_fixed.eq(dataIndex).attr(props).data('index', dataItem[LAY_DATA_INDEX]);\r\n trAllObj.trs_fixed_r.eq(dataIndex).attr(props).data('index', dataItem[LAY_DATA_INDEX]);\r\n })\r\n layui.each(['main', 'fixed-l', 'fixed-r'], function (i, item) {\r\n tableView.find('.layui-table-' + item + ' tbody').html(trAllObj[['trs', 'trs_fixed', 'trs_fixed_r'][i]]);\r\n });\r\n that.renderTreeTable(tableView, 0, false);\r\n }\r\n }\r\n treeTable.resize(id);\r\n }\r\n\r\n /**\r\n * @typedef updateNodeIconOptions\r\n * @prop {JQuery} scopeEl - tr 元素\r\n * @prop {boolean} isExpand - 是否是展开图标\r\n * @prop {boolean} isParent - 是否是父节点图标\r\n */\r\n /**\r\n * 更新节点图标\r\n * @param {updateNodeIconOptions} opts\r\n */\r\n Class.prototype.updateNodeIcon = function(opts){\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree || {};\r\n var scopeEl = opts.scopeEl;\r\n var isExpand = opts.isExpand;\r\n var isParent = opts.isParent;\r\n\r\n // 处理折叠按钮图标\r\n var flexIconElem = scopeEl.find('.layui-table-tree-flexIcon');\r\n\r\n flexIconElem\r\n .css('visibility', isParent || treeOptions.view.showFlexIconIfNotParent ? 'visible' : 'hidden')\r\n .html(isExpand ? treeOptions.view.flexIconOpen : treeOptions.view.flexIconClose);\r\n // 处理节点图标\r\n if(treeOptions.view.showIcon){\r\n var nodeIconElem = scopeEl.find('.layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom)');\r\n var nodeIcon = isParent \r\n ? (isExpand ? treeOptions.view.iconOpen : treeOptions.view.iconClose)\r\n : treeOptions.view.iconLeaf;\r\n\r\n nodeIconElem\r\n .toggleClass('layui-table-tree-iconLeaf', !isParent)\r\n .html(nodeIcon);\r\n }\r\n }\r\n\r\n Class.prototype.renderTreeTable = function (tableView, level, sonSign) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var tableViewElem = options.elem.next();\r\n !tableViewElem.hasClass(TABLE_TREE) && tableViewElem.addClass(TABLE_TREE);\r\n var tableId = options.id;\r\n var treeOptions = options.tree || {};\r\n var treeOptionsData = treeOptions.data || {};\r\n var treeOptionsView = treeOptions.view || {};\r\n var customName = treeOptions.customName || {};\r\n var isParentKey = customName.isParent;\r\n var tableFilterId = tableViewElem.attr('lay-filter');\r\n var treeTableThat = that;\r\n // var tableData = treeTableThat.getTableData();\r\n\r\n level = level || 0;\r\n\r\n if (!level) {\r\n // 初始化的表格里面没有level信息,可以作为顶层节点的判断\r\n tableViewElem.find('.layui-table-body tr:not([data-level])').attr('data-level', level);\r\n layui.each(table.cache[tableId], function (dataIndex, dataItem) {\r\n tableViewElem.find('.layui-table-main tbody tr[data-level=\"0\"]:eq(' + dataIndex + ')').attr('lay-data-index', dataItem[LAY_DATA_INDEX]);\r\n tableViewElem.find('.layui-table-fixed-l tbody tr[data-level=\"0\"]:eq(' + dataIndex + ')').attr('lay-data-index', dataItem[LAY_DATA_INDEX]);\r\n tableViewElem.find('.layui-table-fixed-r tbody tr[data-level=\"0\"]:eq(' + dataIndex + ')').attr('lay-data-index', dataItem[LAY_DATA_INDEX]);\r\n })\r\n }\r\n\r\n var dataExpand = null; // 记录需要展开的数据\r\n var nameKey = customName.name;\r\n var indent = treeOptionsView.indent || 14;\r\n layui.each(tableView.find('td[data-field=\"' + nameKey + '\"]'), function (index, item) {\r\n item = $(item);\r\n var trElem = item.closest('tr');\r\n var itemCell = item.children('.layui-table-cell');\r\n if (itemCell.hasClass('layui-table-tree-item')) {\r\n return;\r\n }\r\n var trIndex = trElem.attr('lay-data-index');\r\n if (!trIndex) { // 排除在统计行中的节点\r\n return;\r\n }\r\n trElem = tableViewElem.find('tr[lay-data-index=\"' + trIndex + '\"]');\r\n var trData = treeTableThat.getNodeDataByIndex(trIndex);\r\n\r\n if (trData[LAY_EXPAND] && trData[isParentKey]) {\r\n // 需要展开\r\n dataExpand = dataExpand || {};\r\n dataExpand[trIndex] = true;\r\n }\r\n if (trData[LAY_CHECKBOX_HALF]) {\r\n trElem.find('input[type=\"checkbox\"][name=\"layTableCheckbox\"]').prop('indeterminate', true);\r\n }\r\n\r\n var htmlTemp = itemCell.html();\r\n itemCell = trElem.find('td[data-field=\"' + nameKey + '\"]>div.layui-table-cell');\r\n itemCell.addClass('layui-table-tree-item');\r\n var flexIconElem = itemCell\r\n .html(['
                  ',\r\n trData[LAY_EXPAND] ? treeOptionsView.flexIconOpen : treeOptionsView.flexIconClose, // 折叠图标\r\n '
                  ',\r\n treeOptionsView.showIcon ? '
                  ' +\r\n (that.normalizedIcon(trData[customName.icon]) || treeOptionsView.icon ||\r\n (trData[isParentKey] ?\r\n (trData[LAY_EXPAND] ? treeOptionsView.iconOpen : treeOptionsView.iconClose) :\r\n treeOptionsView.iconLeaf) ||\r\n '') + '
                  ' : '', // 区分父子节点\r\n htmlTemp].join('')) // 图标要可定制\r\n .find('.layui-table-tree-flexIcon');\r\n\r\n // 添加展开按钮的事件\r\n flexIconElem.on('click', function (event) {\r\n layui.stope(event);\r\n // 处理数据\r\n // var trElem = item.closest('tr');\r\n expandNode({trElem: trElem}, null, null, null, true);\r\n });\r\n });\r\n\r\n if (!level && treeOptions.view.expandAllDefault && that.isExpandAll === undefined) {\r\n return treeTable.expandAll(tableId, true); // 默认展开全部\r\n }\r\n\r\n // 当前层的数据看看是否需要展开\r\n if (sonSign !== false && dataExpand) {\r\n layui.each(dataExpand, function (index, item) {\r\n var trDefaultExpand = tableViewElem.find('tr[lay-data-index=\"' + index + '\"]');\r\n trDefaultExpand.find('.layui-table-tree-flexIcon').html(treeOptionsView.flexIconOpen);\r\n expandNode({trElem: trDefaultExpand.first()}, true);\r\n });\r\n // #1463 expandNode 中已经展开过的节点不会重新渲染\r\n debounceFn('renderTreeTable2-' + tableId, function () {\r\n form.render($('.layui-table-tree[' + MOD_ID + '=\"' + tableId + '\"]'));\r\n }, 0)();\r\n } else {\r\n debounceFn('renderTreeTable-' + tableId, function () {\r\n options.hasNumberCol && formatNumber(that);\r\n form.render($('.layui-table-tree[' + MOD_ID + '=\"' + tableId + '\"]'));\r\n }, 0)();\r\n }\r\n }\r\n\r\n var formatNumber = function (that) {\r\n var options = that.getOptions();\r\n var tableViewElem = options.elem.next();\r\n\r\n var num = 0;\r\n var trMain = tableViewElem.find('.layui-table-main tbody tr');\r\n var trFixedL = tableViewElem.find('.layui-table-fixed-l tbody tr');\r\n var trFixedR = tableViewElem.find('.layui-table-fixed-r tbody tr');\r\n layui.each(that.treeToFlat(table.cache[options.id]), function (i1, item1) {\r\n if (item1['LAY_HIDE']) return;\r\n var itemData = that.getNodeDataByIndex(item1[LAY_DATA_INDEX]);\r\n itemData['LAY_NUM'] = ++num;\r\n trMain.eq(i1).find('.laytable-cell-numbers').html(num);\r\n trFixedL.eq(i1).find('.laytable-cell-numbers').html(num);\r\n trFixedR.eq(i1).find('.laytable-cell-numbers').html(num);\r\n })\r\n }\r\n\r\n // 树表渲染\r\n Class.prototype.render = function (type) {\r\n var that = this;\r\n that.tableIns = table[type === 'reloadData' ? 'reloadData' : 'reload'](that.tableIns.config.id, $.extend(true, {}, that.config));\r\n that.config = that.tableIns.config;\r\n };\r\n\r\n // 表格重载\r\n Class.prototype.reload = function (options, deep, type) {\r\n var that = this;\r\n\r\n options = options || {};\r\n delete that.haveInit;\r\n\r\n // 防止数组深度合并\r\n layui.each(options, function (key, item) {\r\n if (layui.type(item) === 'array') delete that.config[key];\r\n });\r\n\r\n // 根据需要处理options中的一些参数\r\n updateOptions(that.getOptions().id, options, type || true);\r\n\r\n // 对参数进行深度或浅扩展\r\n that.config = $.extend(deep, {}, that.config, options);\r\n\r\n // 执行渲染\r\n that.render(type);\r\n };\r\n\r\n // 仅重载数据\r\n treeTable.reloadData = function () {\r\n var args = $.extend(true, [], arguments);\r\n args[3] = 'reloadData';\r\n\r\n return treeTable.reload.apply(null, args);\r\n };\r\n\r\n var updateStatus = function (data, statusObj, childrenKey, notCascade) {\r\n var dataUpdated = [];\r\n layui.each(data, function (i1, item1) {\r\n if (layui.type(statusObj) === 'function') {\r\n statusObj(item1);\r\n } else {\r\n $.extend(item1, statusObj);\r\n }\r\n dataUpdated.push($.extend({}, item1));\r\n notCascade || (dataUpdated = dataUpdated.concat(updateStatus(item1[childrenKey], statusObj, childrenKey, notCascade)));\r\n });\r\n return dataUpdated;\r\n }\r\n\r\n Class.prototype.updateStatus = function (data, statusObj, notCascade) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n data = data || table.cache[options.id];\r\n\r\n return updateStatus(data, statusObj, treeOptions.customName.children, notCascade);\r\n }\r\n\r\n Class.prototype.getTableData = function () {\r\n var that = this;\r\n var options = that.getOptions();\r\n // return options.url ? table.cache[options.id] : options.data;\r\n return table.cache[options.id];\r\n }\r\n\r\n treeTable.updateStatus = function (id, statusObj, data) {\r\n var that = getThisTable(id);\r\n var options = that.getOptions();\r\n if (!data) {\r\n if (options.url) {\r\n data = table.cache[options.id];\r\n } else {\r\n data = options.data;\r\n }\r\n }\r\n return that.updateStatus(data, statusObj);\r\n }\r\n\r\n treeTable.sort = function (id) {\r\n var that = getThisTable(id);\r\n if(!that) return;\r\n\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n\r\n var tableData = treeTable.getData(id);\r\n var customName = treeOptions.customName;\r\n var childrenKey = customName.children;\r\n\r\n // 只和同级节点排序\r\n var sort = function(data, field, type){\r\n layui.sort(data, field, type, true);\r\n layui.each(data, function(rowIndex, trData){\r\n sort(trData[childrenKey] || [], field, type);\r\n })\r\n }\r\n\r\n if (options.autoSort) {\r\n var initSort = options.initSort;\r\n if (initSort.type) {\r\n sort(tableData, initSort.field, initSort.type === 'desc');\r\n } else {\r\n // 恢复默认\r\n sort(tableData, table.config.indexName, null);\r\n }\r\n // 更新缓存中数据的顺序\r\n table.cache[id] = tableData;\r\n // 重新初始化缓存数据\r\n that.initData(tableData);\r\n treeTable.renderData(id);\r\n }\r\n }\r\n\r\n // 处理事件\r\n var updateObjParams = function (obj) {\r\n var tableId = obj.config.id;\r\n var tableThat = getThisTable(tableId);\r\n var trData = obj.data = treeTable.getNodeDataByIndex(tableId, obj.index); // 克隆的\r\n var trIndex = trData[LAY_DATA_INDEX];\r\n obj.dataIndex = trIndex;\r\n\r\n // 处理update方法\r\n var updateFn = obj.update;\r\n obj.update = function () {\r\n var updateThat = this;\r\n var args = arguments;\r\n $.extend(tableThat.getNodeDataByIndex(trIndex), args[0]);\r\n var ret = updateFn.apply(updateThat, args); // 主要负责更新节点内容\r\n var nameKey = obj.config.tree.customName.name;\r\n nameKey in args[0] && obj.tr.find('td[data-field=\"' + nameKey + '\"]').children('div.layui-table-cell').removeClass('layui-table-tree-item');\r\n tableThat.renderTreeTable(obj.tr, obj.tr.attr('data-level'), false);\r\n return ret;\r\n }\r\n\r\n // 处理del方法\r\n obj.del = function () {\r\n treeTable.removeNode(tableId, trData);\r\n }\r\n\r\n // 处理setRowChecked\r\n obj.setRowChecked = function (checked) {\r\n treeTable.setRowChecked(tableId, {\r\n index: trData,\r\n checked: checked\r\n });\r\n }\r\n }\r\n\r\n // 更新数据\r\n treeTable.updateNode = function (id, index, newNode) {\r\n var that = getThisTable(id);\r\n if(!that) return;\r\n\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableView = options.elem.next();\r\n var trElem = tableView.find('tr[lay-data-index=\"' + index + '\"]');\r\n var trIndex = trElem.attr('data-index');\r\n var trLevel = trElem.attr('data-level')\r\n\r\n if (!newNode) {\r\n return;\r\n }\r\n // 更新值\r\n var newNodeTemp = that.getNodeDataByIndex(index, false, newNode);\r\n // 获取新的tr替换\r\n var trNew = table.getTrHtml(id, [newNodeTemp]);\r\n // 重新渲染tr\r\n layui.each(['main', 'fixed-l', 'fixed-r'], function (i, item) {\r\n tableView.find('.layui-table-' + item + ' tbody tr[lay-data-index=\"' + index + '\"]').replaceWith($(trNew[['trs', 'trs_fixed', 'trs_fixed_r'][i]].join('')).attr({\r\n 'data-index': trIndex,\r\n 'lay-data-index': index,\r\n 'data-level': trLevel\r\n }).data('index', trIndex));\r\n });\r\n that.renderTreeTable(tableView.find('tr[lay-data-index=\"' + index + '\"]'), trLevel);\r\n }\r\n\r\n // 删除数据\r\n treeTable.removeNode = function (id, node) {\r\n var that = getThisTable(id);\r\n if(!that) return;\r\n\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var isParentKey = treeOptions.customName.isParent;\r\n var childrenKey = treeOptions.customName.children;\r\n var tableView = options.elem.next();\r\n var delNode;\r\n var indexArr = [];\r\n var tableCache = table.cache[id];\r\n delNode = that.getNodeDataByIndex(layui.type(node) === 'string' ? node : node[LAY_DATA_INDEX], false, 'delete');\r\n var nodeP = that.getNodeDataByIndex(delNode[LAY_PARENT_INDEX]);\r\n that.updateCheckStatus(nodeP);\r\n var delNodesFlat = that.treeToFlat([delNode], delNode[treeOptions.customName.pid], delNode[LAY_PARENT_INDEX]);\r\n layui.each(delNodesFlat, function (i2, delNode) {\r\n var delNodeDataIndex = delNode[LAY_DATA_INDEX];\r\n indexArr.push('tr[lay-data-index=\"' + delNodeDataIndex + '\"]');\r\n // 删除临时 key\r\n if(delNodeDataIndex.indexOf('-') !== -1){\r\n delete tableCache[delNodeDataIndex]; \r\n }\r\n })\r\n\r\n tableView.find(indexArr.join(',')).remove(); // 删除行\r\n\r\n var deleteCacheKey = function(){\r\n for (var key in tableCache) {\r\n // 根节点 getNodeDataByIndex 内部已处理\r\n if(key.indexOf('-') !== -1){\r\n // L93 updateCache() 中,cacheKey 取自 rowData 中的 LAY_DATA_INDEX,\r\n // 两者不同说明当前 cacheKey 引用的 rowData 已被更新\r\n if(key !== tableCache[key][LAY_DATA_INDEX]){\r\n delete tableCache[key]\r\n }\r\n }\r\n }\r\n }\r\n\r\n // 重新整理数据\r\n var tableData = that.initData();\r\n deleteCacheKey();\r\n // index发生变化需要更新页面tr中对应的lay-data-index 新增和删除都要注意数据结构变动之后的index问题\r\n layui.each(that.treeToFlat(tableData), function (i3, item3) {\r\n if (item3[LAY_DATA_INDEX_HISTORY] && item3[LAY_DATA_INDEX_HISTORY] !== item3[LAY_DATA_INDEX]) {\r\n tableView.find('tr[lay-data-index=\"' + item3[LAY_DATA_INDEX_HISTORY] + '\"]').attr({\r\n 'data-index': item3[LAY_DATA_INDEX],\r\n 'lay-data-index': item3[LAY_DATA_INDEX],\r\n }).data('index', item3[LAY_DATA_INDEX]);\r\n // item3[LAY_DATA_INDEX_HISTORY] = item3[LAY_DATA_INDEX]\r\n }\r\n });\r\n // 重新更新顶层节点的data-index;\r\n layui.each(tableCache, function (i4, item4) {\r\n tableView.find('tr[data-level=\"0\"][lay-data-index=\"' + item4[LAY_DATA_INDEX] + '\"]')\r\n .attr('data-index', i4)\r\n .data('index', i4);\r\n })\r\n options.hasNumberCol && formatNumber(that);\r\n // 更新父节点状态\r\n if(nodeP){\r\n var trEl = tableView.find('tr[lay-data-index=\"' + nodeP[LAY_DATA_INDEX] + '\"]');\r\n nodeP[isParentKey] = !!(nodeP[childrenKey] && nodeP[childrenKey].length);\r\n that.updateNodeIcon({\r\n scopeEl: trEl,\r\n isExpand: nodeP[LAY_EXPAND],\r\n isParent: nodeP[isParentKey],\r\n }); \r\n }\r\n\r\n // 重新适配尺寸\r\n treeTable.resize(id);\r\n }\r\n\r\n /**\r\n * 新增数据节点\r\n * @param {String} id 树表id\r\n * @param {Object} opts\r\n * @param {String|Number} opts.parentIndex 指定的父节点,如果增加根节点,请设置 parentIndex 为 null 即可\r\n * @param {Number} opts.index 新节点插入的位置(从 0 开始)index = -1(默认) 时,插入到最后\r\n * @param {Object|Array} opts.data 新增的节点,单个或者多个\r\n * @param {Boolean} opts.focus 新增的节点,单个或者多个\r\n * @return {Array} 新增的节点\r\n * */\r\n treeTable.addNodes = function (id, opts) {\r\n var that = getThisTable(id);\r\n if(!that) return;\r\n\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableViewElem = options.elem.next();\r\n var checkName = table.config.checkName;\r\n\r\n opts = opts || {};\r\n\r\n var parentIndex = opts.parentIndex;\r\n var index = opts.index;\r\n var newNodes = opts.data;\r\n var focus = opts.focus;\r\n\r\n parentIndex = layui.type(parentIndex) === 'number' ? parentIndex.toString() : parentIndex;\r\n var parentNode = parentIndex ? that.getNodeDataByIndex(parentIndex) : null;\r\n index = layui.type(index) === 'number' ? index : -1;\r\n\r\n // 添加数据\r\n newNodes = $.extend(true, [], (layui.isArray(newNodes) ? newNodes : [newNodes]));\r\n\r\n // 若未传入 LAY_CHECKED 属性,则继承父节点的 checked 状态\r\n layui.each(newNodes, function(i, item){\r\n if(!(checkName in item) && parentNode){\r\n item[checkName] = parentNode[checkName];\r\n }\r\n })\r\n\r\n var tableData = that.getTableData(), dataAfter;\r\n if (!parentNode) {\r\n // 添加到根节点\r\n dataAfter = table.cache[id].splice(index === -1 ? table.cache[id].length : index);\r\n table.cache[id] = table.cache[id].concat(newNodes, dataAfter);\r\n if (!options.url) {\r\n // 静态data模式\r\n if (!options.page) {\r\n options.data = table.cache[id];\r\n } else {\r\n var pageOptions = options.page;\r\n options.data.splice.apply(options.data, [pageOptions.limit * (pageOptions.curr - 1), pageOptions.limit].concat(table.cache[id]))\r\n }\r\n }\r\n // 将新节点添加到页面\r\n tableData = that.initData();\r\n\r\n if (tableViewElem.find('.layui-none').length) {\r\n table.renderData(id);\r\n return newNodes;\r\n }\r\n\r\n var newNodesHtml = table.getTrHtml(id, newNodes);\r\n var newNodesHtmlObj = {\r\n trs: $(newNodesHtml.trs.join('')),\r\n trs_fixed: $(newNodesHtml.trs_fixed.join('')),\r\n trs_fixed_r: $(newNodesHtml.trs_fixed_r.join(''))\r\n }\r\n\r\n var attrs = {};\r\n layui.each(newNodes, function (newNodeIndex, newNodeItem) {\r\n attrs = {\r\n 'data-index': newNodeItem[LAY_DATA_INDEX],\r\n 'lay-data-index': newNodeItem[LAY_DATA_INDEX],\r\n 'data-level': '0'\r\n };\r\n newNodesHtmlObj.trs.eq(newNodeIndex).attr(attrs).data('index', newNodeItem[LAY_DATA_INDEX]);\r\n newNodesHtmlObj.trs_fixed.eq(newNodeIndex).attr(attrs).data('index', newNodeItem[LAY_DATA_INDEX]);\r\n newNodesHtmlObj.trs_fixed_r.eq(newNodeIndex).attr(attrs).data('index', newNodeItem[LAY_DATA_INDEX]);\r\n })\r\n var trIndexPrev = parseInt(newNodes[0][LAY_DATA_INDEX]) - 1;\r\n var tableViewElemMAIN = tableViewElem.find(ELEM_MAIN);\r\n var tableViewElemFIXL = tableViewElem.find(ELEM_FIXL);\r\n var tableViewElemFIXR = tableViewElem.find(ELEM_FIXR);\r\n if (trIndexPrev === -1) {\r\n // 插入到开头\r\n var hasTr = tableViewElemMAIN.find('tr[data-level=\"0\"][data-index=\"0\"]')[0];\r\n if(hasTr){\r\n tableViewElemMAIN.find('tr[data-level=\"0\"][data-index=\"0\"]').before(newNodesHtmlObj.trs);\r\n tableViewElemFIXL.find('tr[data-level=\"0\"][data-index=\"0\"]').before(newNodesHtmlObj.trs_fixed);\r\n tableViewElemFIXR.find('tr[data-level=\"0\"][data-index=\"0\"]').before(newNodesHtmlObj.trs_fixed_r);\r\n }else{\r\n tableViewElemMAIN.find('tbody').prepend(newNodesHtmlObj.trs);\r\n tableViewElemFIXL.find('tbody').prepend(newNodesHtmlObj.trs_fixed);\r\n tableViewElemFIXR.find('tbody').prepend(newNodesHtmlObj.trs_fixed_r);\r\n }\r\n } else {\r\n if (index === -1) {\r\n // 追加到最后\r\n tableViewElemMAIN.find('tbody').append(newNodesHtmlObj.trs);\r\n tableViewElemFIXL.find('tbody').append(newNodesHtmlObj.trs_fixed);\r\n tableViewElemFIXR.find('tbody').append(newNodesHtmlObj.trs_fixed_r);\r\n } else {\r\n var trIndexNext = dataAfter[0][LAY_DATA_INDEX_HISTORY];\r\n tableViewElemMAIN.find('tr[data-level=\"0\"][data-index=\"' + trIndexNext + '\"]').before(newNodesHtmlObj.trs);\r\n tableViewElemFIXL.find('tr[data-level=\"0\"][data-index=\"' + trIndexNext + '\"]').before(newNodesHtmlObj.trs_fixed);\r\n tableViewElemFIXR.find('tr[data-level=\"0\"][data-index=\"' + trIndexNext + '\"]').before(newNodesHtmlObj.trs_fixed_r);\r\n }\r\n\r\n }\r\n\r\n // 重新更新顶层节点的data-index;\r\n layui.each(table.cache[id], function (i4, item4) {\r\n tableViewElem.find('tr[data-level=\"0\"][lay-data-index=\"' + item4[LAY_DATA_INDEX] + '\"]')\r\n .attr('data-index', i4)\r\n .data('index', i4);\r\n })\r\n\r\n that.renderTreeTable(tableViewElem.find(newNodes.map(function (value, index, array) {\r\n return 'tr[lay-data-index=\"' + value[LAY_DATA_INDEX] + '\"]'\r\n }).join(',')));\r\n } else {\r\n var isParentKey = treeOptions.customName.isParent;\r\n var childKey = treeOptions.customName.children;\r\n\r\n parentNode[isParentKey] = true;\r\n var childrenNodes = parentNode[childKey];\r\n if (!childrenNodes) {\r\n childrenNodes = parentNode[childKey] = newNodes;\r\n } else {\r\n dataAfter = childrenNodes.splice(index === -1 ? childrenNodes.length : index);\r\n childrenNodes = parentNode[childKey] = childrenNodes.concat(newNodes, dataAfter);\r\n }\r\n // 删除已经存在的同级节点以及他们的子节点,并且把中间节点的已展开过的状态设置为false\r\n that.updateStatus(childrenNodes, function (d) {\r\n if (d[isParentKey] || treeOptions.view.showFlexIconIfNotParent) {\r\n d[LAY_HAS_EXPANDED] = false;\r\n }\r\n });\r\n var childrenNodesFlat = that.treeToFlat(childrenNodes);\r\n tableViewElem.find(childrenNodesFlat.map(function (value) {\r\n return 'tr[lay-data-index=\"' + value[LAY_DATA_INDEX] + '\"]'\r\n }).join(',')).remove();\r\n\r\n tableData = that.initData();\r\n // 去掉父节点的已经展开过的状态,重新执行一次展开的方法\r\n parentNode[LAY_HAS_EXPANDED] = false;\r\n parentNode[LAY_ASYNC_STATUS] = 'local'; // 转为本地数据,应该规定异步加载子节点的时候addNodes的规则\r\n expandNode({trElem: tableViewElem.find('tr[lay-data-index=\"' + parentIndex + '\"]')}, true)\r\n }\r\n that.updateCheckStatus(parentNode);\r\n // 更新父节点图标状态\r\n if(parentNode){\r\n var trEl = tableViewElem.find('tr[lay-data-index=\"' + parentNode[LAY_DATA_INDEX] + '\"]');\r\n that.updateNodeIcon({\r\n scopeEl: trEl,\r\n isExpand: parentNode[LAY_EXPAND],\r\n isParent: parentNode[isParentKey],\r\n }); \r\n }\r\n treeTable.resize(id);\r\n if (focus) {\r\n // 滚动到第一个新增的节点\r\n tableViewElem.find(ELEM_MAIN).find('tr[lay-data-index=\"' + newNodes[0][LAY_DATA_INDEX] + '\"]').get(0).scrollIntoViewIfNeeded();\r\n }\r\n\r\n return newNodes;\r\n }\r\n\r\n // 获取表格选中状态\r\n treeTable.checkStatus = function (id, includeHalfCheck) {\r\n var that = getThisTable(id);\r\n if (!that) return;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var checkName = table.config.checkName;\r\n\r\n // 需要区分单双选\r\n var tableData = treeTable.getData(id, true);\r\n var checkedData = tableData.filter(function (value, index, array) {\r\n return value[checkName] || (includeHalfCheck && value[LAY_CHECKBOX_HALF]);\r\n });\r\n\r\n var isAll = true;\r\n layui.each(treeOptions.data.cascade === 'all' ? table.cache[id] : treeTable.getData(id, true), function (i1, item1) {\r\n if (!item1[checkName]) {\r\n isAll = false;\r\n return true;\r\n }\r\n })\r\n\r\n return {\r\n data: checkedData,\r\n isAll: isAll\r\n }\r\n }\r\n\r\n // 排序之后重新渲染成树表\r\n treeTable.on('sort', function (obj) {\r\n var options = obj.config;\r\n var tableView = options.elem.next();\r\n var tableId = options.id;\r\n\r\n if (tableView.hasClass(TABLE_TREE)) {\r\n treeTable.sort(tableId);\r\n }\r\n });\r\n\r\n // 行点击\r\n treeTable.on('row', function (obj) {\r\n var options = obj.config;\r\n var tableView = options.elem.next();\r\n\r\n if (tableView.hasClass(TABLE_TREE)) {\r\n updateObjParams(obj);\r\n }\r\n })\r\n\r\n // 行双击\r\n treeTable.on('rowDouble', function (obj) {\r\n var options = obj.config;\r\n var tableView = options.elem.next();\r\n var tableId = options.id;\r\n\r\n if (tableView.hasClass(TABLE_TREE)) {\r\n updateObjParams(obj);\r\n\r\n var treeOptions = options.tree || {};\r\n if (treeOptions.view.dblClickExpand) {\r\n expandNode({trElem: obj.tr.first()}, null, null, null, true);\r\n }\r\n }\r\n })\r\n\r\n // 菜单\r\n treeTable.on('rowContextmenu', function (obj) {\r\n var options = obj.config;\r\n var tableView = options.elem.next();\r\n var tableId = options.id;\r\n\r\n if (tableView.hasClass(TABLE_TREE)) {\r\n updateObjParams(obj);\r\n }\r\n })\r\n\r\n // tr中带lay-event节点点击\r\n treeTable.on('tool', function (obj) {\r\n var options = obj.config;\r\n var tableView = options.elem.next();\r\n var tableId = options.id;\r\n\r\n if (tableView.hasClass(TABLE_TREE)) {\r\n updateObjParams(obj);\r\n }\r\n })\r\n\r\n // 行内编辑\r\n treeTable.on('edit', function (obj) {\r\n // 如果编辑涉及到关键的name字段需要重新更新一下tr节点\r\n var options = obj.config;\r\n var tableView = options.elem.next();\r\n var tableId = options.id;\r\n\r\n if (tableView.hasClass(TABLE_TREE)) {\r\n updateObjParams(obj);\r\n if (obj.field === options.tree.customName.name) {\r\n var updateData = {};\r\n updateData[obj.field] = obj.value;\r\n obj.update(updateData); // 通过update调用执行tr节点的更新\r\n }\r\n }\r\n });\r\n\r\n // 单选\r\n treeTable.on('radio', function (obj) {\r\n var options = obj.config;\r\n var tableView = options.elem.next();\r\n var tableId = options.id;\r\n\r\n if (tableView.hasClass(TABLE_TREE)) {\r\n var that = getThisTable(tableId);\r\n updateObjParams(obj);\r\n checkNode.call(that, obj.tr, obj.checked)\r\n }\r\n })\r\n\r\n // 设置或取消行选中样式\r\n Class.prototype.setRowCheckedClass = function(tr, checked){\r\n var that = this;\r\n var options = that.getOptions();\r\n\r\n var index = tr.data('index');\r\n var tableViewElem = options.elem.next();\r\n \r\n tr[checked ? 'addClass' : 'removeClass'](ELEM_CHECKED); // 主体行\r\n\r\n // 右侧固定行\r\n tr.each(function(){\r\n var index = $(this).data('index');\r\n var trFixedR = tableViewElem.find('.layui-table-fixed-r tbody tr[data-index=\"'+ index +'\"]');\r\n trFixedR[checked ? 'addClass' : 'removeClass'](ELEM_CHECKED);\r\n });\r\n };\r\n\r\n // 更新表格的复选框状态\r\n Class.prototype.updateCheckStatus = function (dataP, checked) {\r\n var that = this;\r\n var options = that.getOptions();\r\n if (!options.hasChecboxCol) {\r\n return false; // 如果没有复选列则不需要更新状态\r\n }\r\n var treeOptions = options.tree;\r\n var tableId = options.id;\r\n var tableView = options.elem.next();\r\n\r\n var checkName = table.config.checkName;\r\n\r\n var cascade = treeOptions.data.cascade;\r\n var isCascadeParent = cascade === 'all' || cascade === 'parent';\r\n\r\n // 如有必要更新父节点们的状态\r\n if (isCascadeParent && dataP) {\r\n var trsP = that.updateParentCheckStatus(dataP, layui.type(checked) === 'boolean' ? checked : null);\r\n layui.each(trsP, function (indexP, itemP) {\r\n var checkboxElem = tableView.find('tr[lay-data-index=\"' + itemP[LAY_DATA_INDEX] + '\"] input[name=\"layTableCheckbox\"]:not(:disabled)');\r\n var checked = itemP[checkName];\r\n\r\n // 标记父节点行背景色\r\n that.setRowCheckedClass(checkboxElem.closest('tr'), checked);\r\n \r\n // 设置原始复选框 checked 属性值并渲染\r\n form.render(checkboxElem.prop({\r\n checked: checked,\r\n indeterminate: itemP[LAY_CHECKBOX_HALF]\r\n }))\r\n })\r\n }\r\n\r\n // 更新全选的状态\r\n var isAll = true;\r\n var isIndeterminate = false;\r\n var data = treeOptions.data.cascade === 'all' ? table.cache[tableId] : treeTable.getData(tableId, true);\r\n data = data.filter(function (item) {\r\n return !item[options.disabledName];\r\n });\r\n\r\n if(data.length > 0){\r\n layui.each(data, function (i1, item1) {\r\n if (item1[checkName] || item1[LAY_CHECKBOX_HALF]) {\r\n isIndeterminate = true;\r\n }\r\n if (!item1[checkName]) {\r\n isAll = false;\r\n }\r\n if (isIndeterminate && !isAll) {\r\n return true;\r\n }\r\n })\r\n }else{\r\n isAll = false;\r\n }\r\n \r\n isIndeterminate = isIndeterminate && !isAll;\r\n form.render(tableView.find('input[name=\"layTableCheckbox\"][lay-filter=\"layTableAllChoose\"]').prop({\r\n 'checked': isAll,\r\n indeterminate: isIndeterminate\r\n }));\r\n\r\n return isAll\r\n }\r\n\r\n // 更新父节点的选中状态\r\n Class.prototype.updateParentCheckStatus = function (dataP, checked) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableId = options.id;\r\n var checkName = table.config.checkName;\r\n var childrenKey = treeOptions.customName.children;\r\n\r\n var dataRet = [];\r\n dataP[LAY_CHECKBOX_HALF] = false; // 先设置为非半选,是否为半选又下面逻辑判断\r\n if (checked === true) {\r\n // 为真需要判断子节点的情况\r\n if (!dataP[childrenKey].length) {\r\n checked = false;\r\n } else {\r\n layui.each(dataP[childrenKey], function (index, item) {\r\n if (!item[checkName]) { // 只要有一个子节点为false\r\n checked = false;\r\n dataP[LAY_CHECKBOX_HALF] = true;\r\n return true; // 跳出循环\r\n }\r\n });\r\n }\r\n } else if (checked === false) {\r\n // 判断是否为半选\r\n layui.each(dataP[childrenKey], function (index, item) {\r\n if (item[checkName] || item[LAY_CHECKBOX_HALF]) { // 只要有一个子节点为选中或者半选状态\r\n dataP[LAY_CHECKBOX_HALF] = true;\r\n return true;\r\n }\r\n });\r\n } else {\r\n // 状态不确定的情况下根据子节点的信息\r\n checked = false;\r\n var checkedNum = 0;\r\n layui.each(dataP[childrenKey], function (index, item) {\r\n if (item[checkName]) {\r\n checkedNum++;\r\n }\r\n });\r\n checked = dataP[childrenKey].length ? dataP[childrenKey].length === checkedNum : dataP[checkName]; // 如果没有子节点保留原来的状态;\r\n dataP[LAY_CHECKBOX_HALF] = checked ? false : checkedNum > 0;\r\n }\r\n dataP[checkName] = checked;\r\n dataRet.push($.extend({}, dataP));\r\n if (dataP[LAY_PARENT_INDEX]) {\r\n dataRet = dataRet.concat(that.updateParentCheckStatus(table.cache[tableId][dataP[LAY_PARENT_INDEX]], checked));\r\n }\r\n return dataRet\r\n }\r\n\r\n var checkNode = function (trElem, checked, callbackFlag) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableId = options.id;\r\n var tableView = options.elem.next();\r\n var inputElem = (trElem.length ? trElem : tableView).find('.laytable-cell-radio, .laytable-cell-checkbox').children('input').last();\r\n // 判断是单选还是多选 不应该同时存在radio列和checkbox列\r\n var isRadio = inputElem.attr('type') === 'radio';\r\n\r\n if (callbackFlag) {\r\n var triggerEvent = function () {\r\n var fn = function (event) {\r\n layui.stope(event);\r\n }\r\n inputElem.parent().on('click', fn); // 添加临时的阻止冒泡事件\r\n inputElem.next().click();\r\n inputElem.parent().off('click', fn);\r\n }\r\n // 如果需要触发事件可以简单的触发对应节点的click事件\r\n if (isRadio) {\r\n // 单选只能选中或者切换其他的不能取消选中 后续看是否有支持的必要 todo\r\n if (checked && !inputElem.prop('checked')) {\r\n triggerEvent()\r\n }\r\n } else {\r\n if (layui.type(checked) === 'boolean') {\r\n if (inputElem.prop('checked') !== checked) {\r\n // 如果当前已经是想要修改的状态则不做处理\r\n triggerEvent()\r\n }\r\n } else {\r\n // 切换\r\n triggerEvent()\r\n }\r\n }\r\n } else {\r\n var trData = that.getNodeDataByIndex(trElem.attr('data-index'));\r\n var checkName = table.config.checkName;\r\n // 如果不触发事件应该有一个方法可以更新数据以及页面的节点\r\n if (isRadio) {\r\n if (!trData) {\r\n // 单选必须是一个存在的行\r\n return;\r\n }\r\n var statusChecked = {};\r\n statusChecked[checkName] = false;\r\n // that.updateStatus(null, statusChecked); // 取消其他的选中状态\r\n that.updateStatus(null, function (d) {\r\n if (d[checkName]) {\r\n var radioElem = tableView.find('tr[lay-data-index=\"' + d[LAY_DATA_INDEX] + '\"] input[type=\"radio\"][lay-type=\"layTableRadio\"]');\r\n d[checkName] = false;\r\n\r\n // 取消当前选中行背景色\r\n that.setRowCheckedClass(radioElem.closest('tr'), false);\r\n form.render(radioElem.prop('checked', false));\r\n }\r\n }); // 取消其他的选中状态\r\n trData[checkName] = checked;\r\n\r\n that.setRowCheckedClass(trElem, checked); // 标记当前选中行背景色\r\n that.setRowCheckedClass(trElem.siblings(), false); // 取消其他行背景色\r\n\r\n form.render(trElem.find('input[type=\"radio\"][lay-type=\"layTableRadio\"]').prop('checked', checked));\r\n } else {\r\n // 切换只能用到单条,全选到这一步的时候应该是一个确定的状态\r\n checked = layui.type(checked) === 'boolean' ? checked : !trData[checkName]; // 状态切换,如果遇到不可操作的节点待处理 todo\r\n // 全选或者是一个父节点,将子节点的状态同步为当前节点的状态\r\n // 处理不可操作的信息\r\n var checkedStatusFn = function (d) {\r\n if (!d[table.config.disabledName]) { // 节点不可操作的不处理\r\n d[checkName] = checked;\r\n d[LAY_CHECKBOX_HALF] = false;\r\n }\r\n }\r\n\r\n var trs = that.updateStatus(trData ? [trData] : table.cache[tableId], checkedStatusFn, trData && ['parent', 'none'].indexOf(treeOptions.data.cascade) !== -1);\r\n var checkboxElem = tableView.find(trs.map(function (value) {\r\n return 'tr[lay-data-index=\"' + value[LAY_DATA_INDEX] + '\"] input[name=\"layTableCheckbox\"]:not(:disabled)';\r\n }).join(','));\r\n\r\n that.setRowCheckedClass(checkboxElem.closest('tr'), checked); // 标记当前选中行背景色\r\n form.render(checkboxElem.prop({checked: checked, indeterminate: false}));\r\n\r\n var trDataP;\r\n\r\n // 更新父节点以及更上层节点的状态\r\n if (trData && trData[LAY_PARENT_INDEX]) {\r\n // 找到父节点,然后判断父节点的子节点是否全部选中\r\n trDataP = that.getNodeDataByIndex(trData[LAY_PARENT_INDEX]);\r\n }\r\n\r\n return that.updateCheckStatus(trDataP, checked);\r\n }\r\n }\r\n }\r\n\r\n // 多选\r\n treeTable.on('checkbox', function (obj) {\r\n var options = obj.config;\r\n var tableView = options.elem.next();\r\n var tableId = options.id;\r\n\r\n if (tableView.hasClass(TABLE_TREE)) {\r\n var that = getThisTable(tableId);\r\n var checked = obj.checked;\r\n updateObjParams(obj)\r\n obj.isAll = checkNode.call(that, obj.tr, checked);\r\n }\r\n })\r\n\r\n /**\r\n * 设置行选中状态\r\n * @param {String} id 树表id\r\n * @param {Object} opts\r\n * @param {Object|String} opts.index 节点下标\r\n * @param {Boolean} opts.checked 选中或取消\r\n * @param {Boolean} [opts.callbackFlag] 是否触发事件回调\r\n * */\r\n treeTable.setRowChecked = function (id, opts) {\r\n var that = getThisTable(id);\r\n if(!that) return;\r\n\r\n var options = that.getOptions();\r\n var tableView = options.elem.next();\r\n\r\n opts = opts || {};\r\n\r\n var node = opts.index;\r\n var checked = opts.checked;\r\n var callbackFlag = opts.callbackFlag;\r\n\r\n var dataIndex = layui.type(node) === 'string' ? node : node[LAY_DATA_INDEX];\r\n // 判断是否在当前页面中\r\n var nodeData = that.getNodeDataByIndex(dataIndex);\r\n if (!nodeData) {\r\n // 目前只能处理当前页的数据\r\n return;\r\n }\r\n\r\n var collectNeedExpandNodeIndex = function(index){\r\n needExpandIndex.push(index);\r\n var trElem = tableView.find('tr[lay-data-index=\"' + index + '\"]');\r\n if (!trElem.length) {\r\n var nodeData = that.getNodeDataByIndex(index);\r\n var parentIndex = nodeData[LAY_PARENT_INDEX];\r\n parentIndex && collectNeedExpandNodeIndex(parentIndex);\r\n }\r\n }\r\n\r\n // 判断是否展开过\r\n var trElem = tableView.find('tr[lay-data-index=\"' + dataIndex + '\"]');\r\n if (!trElem.length) {\r\n var parentIndex = nodeData[LAY_PARENT_INDEX];\r\n var needExpandIndex = [];\r\n collectNeedExpandNodeIndex(parentIndex);\r\n // 如果还没有展开没有渲染的要先渲染出来\r\n layui.each(needExpandIndex.reverse(),function(index, nodeIndex){\r\n treeTable.expandNode(id, {\r\n index: nodeIndex,\r\n expandFlag: true\r\n });\r\n })\r\n trElem = tableView.find('tr[lay-data-index=\"' + dataIndex + '\"]');\r\n }\r\n checkNode.call(that, trElem, checked, callbackFlag);\r\n }\r\n\r\n treeTable.checkAllNodes = function (id, checked) {\r\n var that = getThisTable(id);\r\n if(!that) return;\r\n\r\n var options = that.getOptions();\r\n var tableView = options.elem.next();\r\n\r\n checkNode.call(that, tableView.find('tr[data-index=\"NONE\"]'), !!checked)\r\n }\r\n\r\n /**\r\n * 获得数据\r\n * @param {String} id 表格id\r\n * @param {Boolean} [isSimpleData] 是否返回平铺结构的数据\r\n * @return {Array} 表格数据\r\n * */\r\n treeTable.getData = function (id, isSimpleData) {\r\n var that = getThisTable(id);\r\n if (!that) return;\r\n\r\n var tableData = [];\r\n layui.each($.extend(true, [], table.cache[id] || []), function (index, item) {\r\n // 遍历排除掉临时的数据\r\n tableData.push(item);\r\n })\r\n return isSimpleData ? that.treeToFlat(tableData) : tableData;\r\n }\r\n\r\n /**\r\n * 重新加载子节点\r\n * @param {String} id 表格id\r\n * @param {String} dataIndex 父节点的dataIndex\r\n * */\r\n treeTable.reloadAsyncNode = function (id, dataIndex) {\r\n var that = getThisTable(id);\r\n if (!that) {\r\n return;\r\n }\r\n\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n if (!treeOptions.async || !treeOptions.async.enable) {\r\n return;\r\n }\r\n var dataP = that.getNodeDataByIndex(dataIndex);\r\n if (!dataP) {\r\n return;\r\n }\r\n dataP[LAY_HAS_EXPANDED] = false;\r\n dataP[LAY_EXPAND] = false;\r\n dataP[LAY_ASYNC_STATUS] = false;\r\n layui.each(that.treeToFlat(dataP[treeOptions.customName.children]).reverse(), function (i1, item1) {\r\n treeTable.removeNode(id, item1[LAY_DATA_INDEX]);\r\n })\r\n // 重新展开\r\n treeTable.expandNode(id, {\r\n index: dataIndex,\r\n expandFlag: true,\r\n callbackFlag: true,\r\n })\r\n }\r\n\r\n /**\r\n * 通过数据id获取节点对象\r\n * */\r\n treeTable.getNodeById = function (id, dataId) {\r\n var that = getThisTable(id);\r\n if (!that) return;\r\n\r\n return that.getNodeById(dataId);\r\n }\r\n\r\n /**\r\n * 根据自定义规则搜索节点数据\r\n * @param {String} id 树表id\r\n * @param {Function} filter 自定义过滤器函数\r\n * @param {Object} [opts]\r\n * @param {Boolean} [opts.isSingle] 是否只找到第一个\r\n * @param {Object} [opts.parentNode] 在指定在某个父节点下的子节点中搜索\r\n * @return {Object} 节点对象\r\n * */\r\n treeTable.getNodesByFilter = function (id, filter, opts) {\r\n var that = getThisTable(id);\r\n if (!that) return;\r\n var options = that.getOptions();\r\n\r\n opts = opts || {};\r\n var isSingle = opts.isSingle;\r\n var parentNode = opts.parentNode;\r\n var dataP = parentNode && parentNode.data;\r\n // dataP = dataP || table.cache[id];\r\n var nodes = that.treeToFlat(dataP ? (dataP[options.tree.customName.children] || []) : table.cache[id]).filter(filter);\r\n var nodesResult = [];\r\n layui.each(nodes, function (i1, item1) {\r\n nodesResult.push(that.getNodeByIndex(item1[LAY_DATA_INDEX]));\r\n if (isSingle) {\r\n return true;\r\n }\r\n });\r\n\r\n return nodesResult;\r\n }\r\n\r\n\r\n // 记录所有实例\r\n thisTreeTable.that = {}; // 记录所有实例对象\r\n // thisTreeTable.config = {}; // 记录所有实例配置项\r\n\r\n // 重载\r\n treeTable.reload = function (id, options, deep, type) {\r\n // deep = deep !== false; // 默认采用深拷贝\r\n var that = getThisTable(id);\r\n if (!that) return;\r\n that.reload(options, deep, type);\r\n return thisTreeTable.call(that);\r\n };\r\n\r\n // 核心入口\r\n treeTable.render = function (options) {\r\n var inst = new Class(options);\r\n return thisTreeTable.call(inst);\r\n };\r\n\r\n exports(MOD_NAME, treeTable);\r\n});\r\n","/**\r\n * tree 树组件\r\n */\r\n\r\nlayui.define(['form','util'], function(exports){\r\n \"use strict\";\r\n \r\n var $ = layui.$;\r\n var form = layui.form;\r\n var layer = layui.layer;\r\n var util = layui.util;\r\n \r\n // 模块名\r\n var MOD_NAME = 'tree';\r\n\r\n // 外部接口\r\n var tree = {\r\n config: {\r\n customName: { // 自定义 data 字段名\r\n id: 'id',\r\n title: 'title',\r\n children: 'children'\r\n }\r\n },\r\n index: layui[MOD_NAME] ? (layui[MOD_NAME].index + 10000) : 0,\r\n\r\n // 设置全局项\r\n set: function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n },\r\n \r\n // 事件\r\n on: function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n }\r\n };\r\n\r\n // 操作当前实例\r\n var thisModule = function(){\r\n var that = this;\r\n var options = that.config;\r\n var id = options.id || that.index;\r\n \r\n thisModule.that[id] = that; // 记录当前实例对象\r\n thisModule.config[id] = options; // 记录当前实例配置项\r\n \r\n return {\r\n config: options,\r\n // 重置实例\r\n reload: function(options){\r\n that.reload.call(that, options);\r\n },\r\n getChecked: function(){\r\n return that.getChecked.call(that);\r\n },\r\n setChecked: function(id){// 设置值\r\n return that.setChecked.call(that, id);\r\n }\r\n }\r\n };\r\n \r\n // 获取当前实例配置项\r\n var getThisModuleConfig = function(id){\r\n var config = thisModule.config[id];\r\n if(!config) hint.error('The ID option was not found in the '+ MOD_NAME +' instance');\r\n return config || null;\r\n }\r\n\r\n // 字符常量\r\n var SHOW = 'layui-show';\r\n var HIDE = 'layui-hide';\r\n var NONE = 'layui-none';\r\n var DISABLED = 'layui-disabled';\r\n \r\n var ELEM_VIEW = 'layui-tree';\r\n var ELEM_SET = 'layui-tree-set';\r\n var ICON_CLICK = 'layui-tree-iconClick';\r\n var ICON_ADD = 'layui-icon-addition';\r\n var ICON_SUB = 'layui-icon-subtraction';\r\n var ELEM_ENTRY = 'layui-tree-entry';\r\n var ELEM_MAIN = 'layui-tree-main';\r\n var ELEM_TEXT = 'layui-tree-txt';\r\n var ELEM_PACK = 'layui-tree-pack';\r\n var ELEM_SPREAD = 'layui-tree-spread';\r\n var ELEM_LINE_SHORT = 'layui-tree-setLineShort';\r\n var ELEM_SHOW = 'layui-tree-showLine';\r\n var ELEM_EXTEND = 'layui-tree-lineExtend';\r\n \r\n // 构造器\r\n var Class = function(options){\r\n var that = this;\r\n that.index = ++tree.index;\r\n that.config = $.extend({}, that.config, tree.config, options);\r\n that.render();\r\n };\r\n\r\n // 默认配置\r\n Class.prototype.config = {\r\n data: [], // 数据\r\n \r\n showCheckbox: false, // 是否显示复选框\r\n showLine: true, // 是否开启连接线\r\n accordion: false, // 是否开启手风琴模式\r\n onlyIconControl: false, // 是否仅允许节点左侧图标控制展开收缩\r\n isJump: false, // 是否允许点击节点时弹出新窗口跳转\r\n edit: false, // 是否开启节点的操作图标\r\n \r\n text: {\r\n defaultNodeName: '未命名', // 节点默认名称\r\n none: '无数据' // 数据为空时的文本提示\r\n }\r\n };\r\n \r\n // 重载实例\r\n Class.prototype.reload = function(options){\r\n var that = this;\r\n \r\n layui.each(options, function(key, item){\r\n if(layui.type(item) === 'array') delete that.config[key];\r\n });\r\n \r\n that.config = $.extend(true, {}, that.config, options);\r\n that.render();\r\n };\r\n\r\n // 主体渲染\r\n Class.prototype.render = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 初始化自定义字段名\r\n options.customName = $.extend({}, tree.config.customName, options.customName);\r\n \r\n that.checkids = [];\r\n\r\n var temp = $('
                  ');\r\n that.tree(temp);\r\n\r\n var othis = options.elem = $(options.elem);\r\n if(!othis[0]) return;\r\n\r\n // 索引\r\n that.key = options.id || that.index;\r\n \r\n // 插入组件结构\r\n that.elem = temp;\r\n that.elemNone = $('
                  '+ options.text.none +'
                  ');\r\n othis.html(that.elem);\r\n\r\n if(that.elem.find('.layui-tree-set').length == 0){\r\n return that.elem.append(that.elemNone);\r\n };\r\n \r\n // 复选框渲染\r\n if(options.showCheckbox){\r\n that.renderForm('checkbox');\r\n };\r\n\r\n that.elem.find('.layui-tree-set').each(function(){\r\n var othis = $(this);\r\n // 最外层\r\n if(!othis.parent('.layui-tree-pack')[0]){\r\n othis.addClass('layui-tree-setHide');\r\n };\r\n\r\n // 没有下一个节点 上一层父级有延伸线\r\n if(!othis.next()[0] && othis.parents('.layui-tree-pack').eq(1).hasClass('layui-tree-lineExtend')){\r\n othis.addClass(ELEM_LINE_SHORT);\r\n };\r\n \r\n // 没有下一个节点 外层最后一个\r\n if(!othis.next()[0] && !othis.parents('.layui-tree-set').eq(0).next()[0]){\r\n othis.addClass(ELEM_LINE_SHORT);\r\n };\r\n });\r\n\r\n that.events();\r\n };\r\n \r\n // 渲染表单\r\n Class.prototype.renderForm = function(type){\r\n form.render(type, 'LAY-tree-'+ this.index);\r\n };\r\n\r\n // 节点解析\r\n Class.prototype.tree = function(elem, children){\r\n var that = this;\r\n var options = that.config;\r\n var customName = options.customName;\r\n var data = children || options.data;\r\n\r\n // 遍历数据\r\n layui.each(data, function(index, item){\r\n var hasChild = item[customName.children] && item[customName.children].length > 0;\r\n var packDiv = $('
                  ');\r\n var entryDiv = $(['
                  '\r\n ,'
                  '\r\n ,'
                  '\r\n // 箭头\r\n ,function(){\r\n if(options.showLine){\r\n if(hasChild){\r\n return '';\r\n }else{\r\n return '';\r\n };\r\n }else{\r\n return '';\r\n };\r\n }()\r\n \r\n // 复选框\r\n ,function(){\r\n return options.showCheckbox ? '' : '';\r\n }()\r\n \r\n // 节点\r\n ,function(){\r\n if(options.isJump && item.href){\r\n return ''+ (item[customName.title] || item.label || options.text.defaultNodeName) +'';\r\n }else{\r\n return ''+ (item[customName.title] || item.label || options.text.defaultNodeName) +'';\r\n }\r\n }()\r\n ,'
                  '\r\n \r\n // 节点操作图标\r\n ,function(){\r\n if(!options.edit) return '';\r\n \r\n var editIcon = {\r\n add: ''\r\n ,update: ''\r\n ,del: ''\r\n }, arr = ['
                  '];\r\n \r\n if(options.edit === true){\r\n options.edit = ['update', 'del']\r\n }\r\n \r\n if(typeof options.edit === 'object'){\r\n layui.each(options.edit, function(i, val){\r\n arr.push(editIcon[val] || '')\r\n });\r\n return arr.join('') + '
                  ';\r\n }\r\n }()\r\n ,'
                  '].join(''));\r\n\r\n // 如果有子节点,则递归继续生成树\r\n if(hasChild){\r\n entryDiv.append(packDiv);\r\n that.tree(packDiv, item[customName.children]);\r\n };\r\n\r\n elem.append(entryDiv);\r\n \r\n // 若有前置节点,前置节点加连接线\r\n if(entryDiv.prev('.'+ELEM_SET)[0]){\r\n entryDiv.prev().children('.layui-tree-pack').addClass('layui-tree-showLine');\r\n };\r\n \r\n // 若无子节点,则父节点加延伸线\r\n if(!hasChild){\r\n entryDiv.parent('.layui-tree-pack').addClass('layui-tree-lineExtend');\r\n };\r\n\r\n // 展开节点操作\r\n that.spread(entryDiv, item);\r\n \r\n // 选择框\r\n if(options.showCheckbox){\r\n item.checked && that.checkids.push(item[customName.id]);\r\n that.checkClick(entryDiv, item);\r\n }\r\n \r\n // 操作节点\r\n options.edit && that.operate(entryDiv, item);\r\n \r\n });\r\n };\r\n\r\n // 展开节点\r\n Class.prototype.spread = function(elem, item){\r\n var that = this;\r\n var options = that.config;\r\n var entry = elem.children('.'+ELEM_ENTRY);\r\n var elemMain = entry.children('.'+ ELEM_MAIN);\r\n var elemCheckbox = elemMain.find('input[same=\"layuiTreeCheck\"]');\r\n var elemIcon = entry.find('.'+ ICON_CLICK);\r\n var elemText = entry.find('.'+ ELEM_TEXT);\r\n var touchOpen = options.onlyIconControl ? elemIcon : elemMain; // 判断展开通过节点还是箭头图标\r\n var state = '';\r\n \r\n // 展开收缩\r\n touchOpen.on('click', function(e){\r\n var packCont = elem.children('.'+ELEM_PACK)\r\n ,iconClick = touchOpen.children('.layui-icon')[0] ? touchOpen.children('.layui-icon') : touchOpen.find('.layui-tree-icon').children('.layui-icon');\r\n\r\n // 若没有子节点\r\n if(!packCont[0]){\r\n state = 'normal';\r\n }else{\r\n if(elem.hasClass(ELEM_SPREAD)){\r\n elem.removeClass(ELEM_SPREAD);\r\n packCont.slideUp(200);\r\n iconClick.removeClass(ICON_SUB).addClass(ICON_ADD); \r\n that.updateFieldValue(item, 'spread', false);\r\n }else{\r\n elem.addClass(ELEM_SPREAD);\r\n packCont.slideDown(200);\r\n iconClick.addClass(ICON_SUB).removeClass(ICON_ADD);\r\n that.updateFieldValue(item, 'spread', true);\r\n\r\n // 是否手风琴\r\n if(options.accordion){\r\n var sibls = elem.siblings('.'+ELEM_SET);\r\n sibls.removeClass(ELEM_SPREAD);\r\n sibls.children('.'+ELEM_PACK).slideUp(200);\r\n sibls.find('.layui-tree-icon').children('.layui-icon').removeClass(ICON_SUB).addClass(ICON_ADD);\r\n };\r\n };\r\n };\r\n });\r\n \r\n // 点击回调\r\n elemText.on('click', function(){\r\n var othis = $(this);\r\n \r\n // 判断是否禁用状态\r\n if(othis.hasClass(DISABLED)) return;\r\n \r\n // 判断展开收缩状态\r\n if(elem.hasClass(ELEM_SPREAD)){\r\n state = options.onlyIconControl ? 'open' : 'close';\r\n } else {\r\n state = options.onlyIconControl ? 'close' : 'open';\r\n }\r\n\r\n // 获取选中状态\r\n if(elemCheckbox[0]){\r\n that.updateFieldValue(item, 'checked', elemCheckbox.prop('checked'));\r\n }\r\n \r\n // 点击产生的回调\r\n options.click && options.click({\r\n elem: elem,\r\n state: state,\r\n data: item\r\n });\r\n });\r\n };\r\n\r\n // 更新数据源 checked,spread 字段值\r\n Class.prototype.updateFieldValue = function(obj, field, value){\r\n if(field in obj) obj[field] = value;\r\n };\r\n \r\n // 计算复选框选中状态\r\n Class.prototype.setCheckbox = function(elem, item, elemCheckbox){\r\n var that = this;\r\n var options = that.config;\r\n var customName = options.customName;\r\n var checked = elemCheckbox.prop('checked');\r\n \r\n if(elemCheckbox.prop('disabled')) return;\r\n\r\n // 同步子节点选中状态\r\n if(typeof item[customName.children] === 'object' || elem.find('.'+ELEM_PACK)[0]){\r\n var elemCheckboxs = elem.find('.'+ ELEM_PACK).find('input[same=\"layuiTreeCheck\"]');\r\n elemCheckboxs.each(function(index){\r\n if(this.disabled) return; // 不可点击则跳过\r\n var children = item[customName.children][index];\r\n if(children) that.updateFieldValue(children, 'checked', checked);\r\n that.updateFieldValue(this, 'checked', checked);\r\n });\r\n };\r\n\r\n // 同步父节点选中状态\r\n var setParentsChecked = function(thisNodeElem){\r\n // 若无父节点,则终止递归\r\n if(!thisNodeElem.parents('.'+ ELEM_SET)[0]) return;\r\n\r\n var state;\r\n var parentPack = thisNodeElem.parent('.'+ ELEM_PACK);\r\n var parentNodeElem = parentPack.parent();\r\n var parentCheckbox = parentPack.prev().find('input[same=\"layuiTreeCheck\"]');\r\n\r\n // 如果子节点有任意一条选中,则父节点为选中状态\r\n if(checked){\r\n parentCheckbox.prop('checked', checked);\r\n } else { // 如果当前节点取消选中,则根据计算“兄弟和子孙”节点选中状态,来同步父节点选中状态\r\n parentPack.find('input[same=\"layuiTreeCheck\"]').each(function(){\r\n if(this.checked){\r\n state = true;\r\n }\r\n });\r\n \r\n // 如果兄弟子孙节点全部未选中,则父节点也应为非选中状态\r\n state || parentCheckbox.prop('checked', false);\r\n }\r\n \r\n // 向父节点递归\r\n setParentsChecked(parentNodeElem);\r\n };\r\n \r\n setParentsChecked(elem);\r\n\r\n that.renderForm('checkbox');\r\n };\r\n \r\n // 复选框选择\r\n Class.prototype.checkClick = function(elem, item){\r\n var that = this;\r\n var options = that.config;\r\n var entry = elem.children('.'+ ELEM_ENTRY);\r\n var elemMain = entry.children('.'+ ELEM_MAIN);\r\n \r\n \r\n \r\n // 点击复选框\r\n elemMain.on('click', 'input[same=\"layuiTreeCheck\"]+', function(e){\r\n layui.stope(e); // 阻止点击节点事件\r\n\r\n var elemCheckbox = $(this).prev();\r\n var checked = elemCheckbox.prop('checked');\r\n \r\n if(elemCheckbox.prop('disabled')) return;\r\n \r\n that.setCheckbox(elem, item, elemCheckbox);\r\n that.updateFieldValue(item, 'checked', checked);\r\n\r\n // 复选框点击产生的回调\r\n options.oncheck && options.oncheck({\r\n elem: elem,\r\n checked: checked,\r\n data: item\r\n });\r\n });\r\n };\r\n\r\n // 节点操作\r\n Class.prototype.operate = function(elem, item){\r\n var that = this;\r\n var options = that.config;\r\n var customName = options.customName;\r\n var entry = elem.children('.'+ ELEM_ENTRY);\r\n var elemMain = entry.children('.'+ ELEM_MAIN);\r\n\r\n entry.children('.layui-tree-btnGroup').on('click', '.layui-icon', function(e){\r\n layui.stope(e); // 阻止节点操作\r\n\r\n var type = $(this).data(\"type\");\r\n var packCont = elem.children('.'+ELEM_PACK);\r\n var returnObj = {\r\n data: item,\r\n type: type,\r\n elem:elem\r\n };\r\n // 增加\r\n if(type == 'add'){\r\n // 若节点本身无子节点\r\n if(!packCont[0]){\r\n // 若开启连接线,更改图标样式\r\n if(options.showLine){\r\n elemMain.find('.'+ICON_CLICK).addClass('layui-tree-icon');\r\n elemMain.find('.'+ICON_CLICK).children('.layui-icon').addClass(ICON_ADD).removeClass('layui-icon-file');\r\n // 若未开启连接线,显示箭头\r\n } else {\r\n elemMain.find('.layui-tree-iconArrow').removeClass(HIDE);\r\n };\r\n // 节点添加子节点容器\r\n elem.append('
                  ');\r\n };\r\n\r\n // 新增节点\r\n var key = options.operate && options.operate(returnObj);\r\n var obj = {};\r\n\r\n obj[customName.title] = options.text.defaultNodeName;\r\n obj[customName.id] = key;\r\n that.tree(elem.children('.'+ELEM_PACK), [obj]);\r\n \r\n // 放在新增后面,因为要对元素进行操作\r\n if(options.showLine){\r\n // 节点本身无子节点\r\n if(!packCont[0]){\r\n // 遍历兄弟节点,判断兄弟节点是否有子节点\r\n var siblings = elem.siblings('.'+ELEM_SET)\r\n var num = 1;\r\n var parentPack = elem.parent('.'+ELEM_PACK);\r\n\r\n layui.each(siblings, function(index, i){\r\n if(!$(i).children('.'+ELEM_PACK)[0]){\r\n num = 0;\r\n };\r\n });\r\n\r\n // 若兄弟节点都有子节点\r\n if(num == 1){\r\n // 兄弟节点添加连接线\r\n siblings.children('.'+ELEM_PACK).addClass(ELEM_SHOW);\r\n siblings.children('.'+ELEM_PACK).children('.'+ELEM_SET).removeClass(ELEM_LINE_SHORT);\r\n elem.children('.'+ELEM_PACK).addClass(ELEM_SHOW);\r\n // 父级移除延伸线\r\n parentPack.removeClass(ELEM_EXTEND);\r\n // 同层节点最后一个更改线的状态\r\n parentPack.children('.'+ELEM_SET).last().children('.'+ELEM_PACK).children('.'+ELEM_SET).last().addClass(ELEM_LINE_SHORT);\r\n } else {\r\n elem.children('.'+ELEM_PACK).children('.'+ELEM_SET).addClass(ELEM_LINE_SHORT);\r\n };\r\n } else {\r\n // 添加延伸线\r\n if(!packCont.hasClass(ELEM_EXTEND)){\r\n packCont.addClass(ELEM_EXTEND);\r\n };\r\n // 子节点添加延伸线\r\n elem.find('.'+ELEM_PACK).each(function(){\r\n $(this).children('.'+ELEM_SET).last().addClass(ELEM_LINE_SHORT);\r\n });\r\n // 如果前一个节点有延伸线\r\n if(packCont.children('.'+ELEM_SET).last().prev().hasClass(ELEM_LINE_SHORT)){\r\n packCont.children('.'+ELEM_SET).last().prev().removeClass(ELEM_LINE_SHORT);\r\n }else{\r\n // 若之前的没有,说明处于连接状态\r\n packCont.children('.'+ELEM_SET).last().removeClass(ELEM_LINE_SHORT);\r\n };\r\n // 若是最外层,要始终保持相连的状态\r\n if(!elem.parent('.'+ELEM_PACK)[0] && elem.next()[0]){\r\n packCont.children('.'+ELEM_SET).last().removeClass(ELEM_LINE_SHORT);\r\n };\r\n };\r\n };\r\n if(!options.showCheckbox) return;\r\n // 若开启复选框,同步新增节点状态\r\n if(elemMain.find('input[same=\"layuiTreeCheck\"]')[0].checked){\r\n var packLast = elem.children('.'+ELEM_PACK).children('.'+ELEM_SET).last();\r\n packLast.find('input[same=\"layuiTreeCheck\"]')[0].checked = true;\r\n };\r\n that.renderForm('checkbox');\r\n \r\n // 修改\r\n } else if(type == 'update') {\r\n var text = elemMain.children('.'+ ELEM_TEXT).html();\r\n elemMain.children('.'+ ELEM_TEXT).html('');\r\n // 添加输入框,覆盖在文字上方\r\n elemMain.append('');\r\n // 获取焦点\r\n elemMain.children('.layui-tree-editInput').val(util.unescape(text)).focus();\r\n // 嵌入文字移除输入框\r\n var getVal = function(input){\r\n var textNew = util.escape(input.val().trim());\r\n textNew = textNew ? textNew : options.text.defaultNodeName;\r\n input.remove();\r\n elemMain.children('.'+ ELEM_TEXT).html(textNew);\r\n \r\n // 同步数据\r\n returnObj.data[customName.title] = textNew;\r\n \r\n // 节点修改的回调\r\n options.operate && options.operate(returnObj);\r\n };\r\n // 失去焦点\r\n elemMain.children('.layui-tree-editInput').blur(function(){\r\n getVal($(this));\r\n });\r\n // 回车\r\n elemMain.children('.layui-tree-editInput').on('keydown', function(e){\r\n if(e.keyCode === 13){\r\n e.preventDefault();\r\n getVal($(this));\r\n };\r\n });\r\n\r\n // 删除\r\n } else {\r\n layer.confirm('确认删除该节点 \"'+ (item[customName.title] || '') +'\" 吗?', function(index){\r\n options.operate && options.operate(returnObj); // 节点删除的回调\r\n returnObj.status = 'remove'; // 标注节点删除\r\n \r\n layer.close(index);\r\n \r\n // 若删除最后一个,显示空数据提示\r\n if(!elem.prev('.'+ELEM_SET)[0] && !elem.next('.'+ELEM_SET)[0] && !elem.parent('.'+ELEM_PACK)[0]){\r\n elem.remove();\r\n that.elem.append(that.elemNone);\r\n return;\r\n };\r\n // 若有兄弟节点\r\n if(elem.siblings('.'+ELEM_SET).children('.'+ELEM_ENTRY)[0]){\r\n // 若开启复选框\r\n if(options.showCheckbox){\r\n // 若开启复选框,进行下步操作\r\n var elemDel = function(elem){\r\n // 若无父结点,则不执行\r\n if(!elem.parents('.'+ELEM_SET)[0]) return;\r\n var siblingTree = elem.siblings('.'+ELEM_SET).children('.'+ELEM_ENTRY);\r\n var parentTree = elem.parent('.'+ELEM_PACK).prev();\r\n var checkState = parentTree.find('input[same=\"layuiTreeCheck\"]')[0];\r\n var state = 1;\r\n var num = 0;\r\n\r\n // 若父节点未勾选\r\n if(checkState.checked == false){\r\n // 遍历兄弟节点\r\n siblingTree.each(function(i, item1){\r\n var input = $(item1).find('input[same=\"layuiTreeCheck\"]')[0]\r\n if(input.checked == false && !input.disabled){\r\n state = 0;\r\n };\r\n // 判断是否全为不可勾选框\r\n if(!input.disabled){\r\n num = 1;\r\n };\r\n });\r\n // 若有可勾选选择框并且已勾选\r\n if(state == 1 && num == 1){\r\n // 勾选父节点\r\n checkState.checked = true;\r\n that.renderForm('checkbox');\r\n // 向上遍历祖先节点\r\n elemDel(parentTree.parent('.'+ELEM_SET));\r\n };\r\n };\r\n };\r\n elemDel(elem);\r\n };\r\n // 若开启连接线\r\n if(options.showLine){\r\n // 遍历兄弟节点,判断兄弟节点是否有子节点\r\n var siblings = elem.siblings('.'+ELEM_SET);\r\n var num = 1;\r\n var parentPack = elem.parent('.'+ELEM_PACK);\r\n\r\n layui.each(siblings, function(index, i){\r\n if(!$(i).children('.'+ELEM_PACK)[0]){\r\n num = 0;\r\n };\r\n });\r\n // 若兄弟节点都有子节点\r\n if(num == 1){\r\n // 若节点本身无子节点\r\n if(!packCont[0]){\r\n // 父级去除延伸线,因为此时子节点里没有空节点\r\n parentPack.removeClass(ELEM_EXTEND);\r\n siblings.children('.'+ELEM_PACK).addClass(ELEM_SHOW);\r\n siblings.children('.'+ELEM_PACK).children('.'+ELEM_SET).removeClass(ELEM_LINE_SHORT);\r\n };\r\n // 若为最后一个节点\r\n if(!elem.next()[0]){\r\n elem.prev().children('.'+ELEM_PACK).children('.'+ELEM_SET).last().addClass(ELEM_LINE_SHORT);\r\n }else{\r\n parentPack.children('.'+ELEM_SET).last().children('.'+ELEM_PACK).children('.'+ELEM_SET).last().addClass(ELEM_LINE_SHORT);\r\n };\r\n // 若为最外层最后一个节点,去除前一个结点的连接线\r\n if(!elem.next()[0] && !elem.parents('.'+ELEM_SET)[1] && !elem.parents('.'+ELEM_SET).eq(0).next()[0]){\r\n elem.prev('.'+ELEM_SET).addClass(ELEM_LINE_SHORT);\r\n };\r\n }else{\r\n // 若为最后一个节点且有延伸线\r\n if(!elem.next()[0] && elem.hasClass(ELEM_LINE_SHORT)){\r\n elem.prev().addClass(ELEM_LINE_SHORT);\r\n };\r\n };\r\n };\r\n \r\n } else {\r\n // 若无兄弟节点\r\n var prevDiv = elem.parent('.'+ELEM_PACK).prev();\r\n // 若开启了连接线\r\n if(options.showLine){\r\n prevDiv.find('.'+ICON_CLICK).removeClass('layui-tree-icon');\r\n prevDiv.find('.'+ICON_CLICK).children('.layui-icon').removeClass(ICON_SUB).addClass('layui-icon-file');\r\n // 父节点所在层添加延伸线\r\n var pare = prevDiv.parents('.'+ELEM_PACK).eq(0);\r\n pare.addClass(ELEM_EXTEND);\r\n\r\n // 兄弟节点最后子节点添加延伸线\r\n pare.children('.'+ELEM_SET).each(function(){\r\n $(this).children('.'+ELEM_PACK).children('.'+ELEM_SET).last().addClass(ELEM_LINE_SHORT);\r\n });\r\n }else{\r\n // 父节点隐藏箭头\r\n prevDiv.find('.layui-tree-iconArrow').addClass(HIDE);\r\n };\r\n // 移除展开属性\r\n elem.parents('.'+ELEM_SET).eq(0).removeClass(ELEM_SPREAD);\r\n // 移除节点容器\r\n elem.parent('.'+ELEM_PACK).remove();\r\n };\r\n\r\n elem.remove();\r\n });\r\n \r\n };\r\n });\r\n };\r\n\r\n // 部分事件\r\n Class.prototype.events = function(){\r\n var that = this;\r\n var options = that.config;\r\n var checkWarp = that.elem.find('.layui-tree-checkedFirst');\r\n \r\n // 初始选中\r\n that.setChecked(that.checkids);\r\n \r\n // 搜索\r\n that.elem.find('.layui-tree-search').on('keyup', function(){\r\n var input = $(this);\r\n var val = input.val();\r\n var pack = input.nextAll();\r\n var arr = [];\r\n\r\n // 遍历所有的值\r\n pack.find('.'+ ELEM_TEXT).each(function(){\r\n var entry = $(this).parents('.'+ELEM_ENTRY);\r\n // 若值匹配,加一个类以作标识\r\n if($(this).html().indexOf(val) != -1){\r\n arr.push($(this).parent());\r\n \r\n var select = function(div){\r\n div.addClass('layui-tree-searchShow');\r\n // 向上父节点渲染\r\n if(div.parent('.'+ELEM_PACK)[0]){\r\n select(div.parent('.'+ELEM_PACK).parent('.'+ELEM_SET));\r\n };\r\n };\r\n select(entry.parent('.'+ELEM_SET));\r\n };\r\n });\r\n\r\n // 根据标志剔除\r\n pack.find('.'+ELEM_ENTRY).each(function(){\r\n var parent = $(this).parent('.'+ELEM_SET);\r\n if(!parent.hasClass('layui-tree-searchShow')){\r\n parent.addClass(HIDE);\r\n };\r\n });\r\n if(pack.find('.layui-tree-searchShow').length == 0){\r\n that.elem.append(that.elemNone);\r\n };\r\n\r\n // 节点过滤的回调\r\n options.onsearch && options.onsearch({\r\n elem: arr\r\n });\r\n });\r\n\r\n // 还原搜索初始状态\r\n that.elem.find('.layui-tree-search').on('keydown', function(){\r\n $(this).nextAll().find('.'+ELEM_ENTRY).each(function(){\r\n var parent = $(this).parent('.'+ELEM_SET);\r\n parent.removeClass('layui-tree-searchShow '+ HIDE);\r\n });\r\n if($('.layui-tree-emptyText')[0]) $('.layui-tree-emptyText').remove();\r\n });\r\n };\r\n\r\n // 得到选中节点\r\n Class.prototype.getChecked = function(){\r\n var that = this;\r\n var options = that.config;\r\n var customName = options.customName;\r\n var checkId = [];\r\n var checkData = [];\r\n \r\n // 遍历节点找到选中索引\r\n that.elem.find('.layui-form-checked').each(function(){\r\n checkId.push($(this).prev()[0].value);\r\n });\r\n \r\n // 遍历节点\r\n var eachNodes = function(data, checkNode){\r\n layui.each(data, function(index, item){\r\n layui.each(checkId, function(index2, item2){\r\n if(item[customName.id] == item2){\r\n that.updateFieldValue(item, 'checked', true);\r\n\r\n var cloneItem = $.extend({}, item);\r\n delete cloneItem[customName.children];\r\n\r\n checkNode.push(cloneItem);\r\n \r\n if(item[customName.children]){\r\n cloneItem[customName.children] = [];\r\n eachNodes(item[customName.children], cloneItem[customName.children]);\r\n }\r\n return true\r\n }\r\n });\r\n });\r\n };\r\n\r\n eachNodes($.extend({}, options.data), checkData);\r\n \r\n return checkData;\r\n };\r\n\r\n // 设置选中节点\r\n Class.prototype.setChecked = function(checkedId){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 初始选中\r\n that.elem.find('.'+ELEM_SET).each(function(i, item){\r\n var thisId = $(this).data('id');\r\n var input = $(item).children('.'+ELEM_ENTRY).find('input[same=\"layuiTreeCheck\"]');\r\n var reInput = input.next();\r\n \r\n // 若返回数字\r\n if(typeof checkedId === 'number'){\r\n if(thisId.toString() == checkedId.toString()){\r\n if(!input[0].checked){\r\n reInput.click();\r\n };\r\n return false;\r\n };\r\n } \r\n // 若返回数组\r\n else if(typeof checkedId === 'object'){\r\n layui.each(checkedId, function(index, value){\r\n if(value.toString() == thisId.toString() && !input[0].checked){\r\n reInput.click();\r\n return true;\r\n }\r\n });\r\n };\r\n });\r\n };\r\n\r\n // 记录所有实例\r\n thisModule.that = {}; // 记录所有实例对象\r\n thisModule.config = {}; // 记录所有实例配置项\r\n \r\n // 重载实例\r\n tree.reload = function(id, options){\r\n var that = thisModule.that[id];\r\n that.reload(options);\r\n \r\n return thisModule.call(that);\r\n };\r\n \r\n // 获得选中的节点数据\r\n tree.getChecked = function(id){\r\n var that = thisModule.that[id];\r\n return that.getChecked();\r\n };\r\n \r\n // 设置选中节点\r\n tree.setChecked = function(id, checkedId){\r\n var that = thisModule.that[id];\r\n return that.setChecked(checkedId);\r\n };\r\n \r\n // 核心入口\r\n tree.render = function(options){\r\n var inst = new Class(options);\r\n return thisModule.call(inst);\r\n };\r\n\r\n exports(MOD_NAME, tree);\r\n})\r\n","/**\r\n * transfer 穿梭框组件\r\n */\r\n\r\nlayui.define(['laytpl', 'form'], function(exports){\r\n \"use strict\";\r\n \r\n var $ = layui.$;\r\n var laytpl = layui.laytpl;\r\n var form = layui.form;\r\n \r\n // 模块名\r\n var MOD_NAME = 'transfer';\r\n\r\n // 外部接口\r\n var transfer = {\r\n config: {},\r\n index: layui[MOD_NAME] ? (layui[MOD_NAME].index + 10000) : 0,\r\n\r\n // 设置全局项\r\n set: function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n },\r\n \r\n // 事件\r\n on: function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n }\r\n };\r\n\r\n // 操作当前实例\r\n var thisModule = function(){\r\n var that = this;\r\n var options = that.config;\r\n var id = options.id || that.index;\r\n \r\n thisModule.that[id] = that; // 记录当前实例对象\r\n thisModule.config[id] = options; // 记录当前实例配置项\r\n \r\n return {\r\n config: options,\r\n // 重置实例\r\n reload: function(options){\r\n that.reload.call(that, options);\r\n },\r\n // 获取右侧数据\r\n getData: function(){\r\n return that.getData.call(that);\r\n }\r\n }\r\n };\r\n \r\n // 获取当前实例配置项\r\n var getThisModuleConfig = function(id){\r\n var config = thisModule.config[id];\r\n if(!config) hint.error('The ID option was not found in the '+ MOD_NAME +' instance');\r\n return config || null;\r\n };\r\n\r\n // 字符常量\r\n var ELEM = 'layui-transfer';\r\n var HIDE = 'layui-hide'; \r\n var DISABLED = 'layui-btn-disabled';\r\n var NONE = 'layui-none';\r\n var ELEM_BOX = 'layui-transfer-box';\r\n var ELEM_HEADER = 'layui-transfer-header';\r\n var ELEM_SEARCH = 'layui-transfer-search';\r\n var ELEM_ACTIVE = 'layui-transfer-active';\r\n var ELEM_DATA = 'layui-transfer-data';\r\n \r\n // 穿梭框模板\r\n var TPL_BOX = function(obj){\r\n obj = obj || {};\r\n return ['
                  ',\r\n '
                  ',\r\n '',\r\n '
                  ',\r\n '{{# if(d.data.showSearch){ }}',\r\n '
                  ',\r\n '',\r\n '',\r\n '
                  ',\r\n '{{# } }}',\r\n '
                    ',\r\n '
                    '].join('');\r\n };\r\n \r\n // 主模板\r\n var TPL_MAIN = ['
                    ',\r\n TPL_BOX({\r\n index: 0,\r\n checkAllName: 'layTransferLeftCheckAll'\r\n }),\r\n '
                    ',\r\n '',\r\n '',\r\n '
                    ',\r\n TPL_BOX({\r\n index: 1,\r\n checkAllName: 'layTransferRightCheckAll'\r\n }),\r\n '
                    '].join('');\r\n\r\n // 构造器\r\n var Class = function(options){\r\n var that = this;\r\n that.index = ++transfer.index;\r\n that.config = $.extend({}, that.config, transfer.config, options);\r\n that.render();\r\n };\r\n\r\n // 默认配置\r\n Class.prototype.config = {\r\n title: ['列表一', '列表二'],\r\n width: 200,\r\n height: 360,\r\n data: [], // 数据源\r\n value: [], // 选中的数据\r\n showSearch: false, // 是否开启搜索\r\n id: '', // 唯一索引,默认自增 index\r\n text: {\r\n none: '无数据',\r\n searchNone: '无匹配数据'\r\n }\r\n };\r\n \r\n // 重载实例\r\n Class.prototype.reload = function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n that.render();\r\n };\r\n\r\n // 渲染\r\n Class.prototype.render = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n // 解析模板\r\n var thisElem = that.elem = $(laytpl(TPL_MAIN, {\r\n open: '{{', // 标签符前缀\r\n close: '}}' // 标签符后缀\r\n }).render({\r\n data: options,\r\n index: that.index // 索引\r\n }));\r\n \r\n var othis = options.elem = $(options.elem);\r\n if(!othis[0]) return;\r\n \r\n // 初始化属性\r\n options.data = options.data || [];\r\n options.value = options.value || [];\r\n \r\n // 初始化 id 属性 - 优先取 options > 元素 id > 自增索引\r\n options.id = 'id' in options ? options.id : (\r\n elem.attr('id') || that.index\r\n );\r\n that.key = options.id;\r\n \r\n // 插入组件结构\r\n othis.html(that.elem);\r\n \r\n // 各级容器\r\n that.layBox = that.elem.find('.'+ ELEM_BOX)\r\n that.layHeader = that.elem.find('.'+ ELEM_HEADER)\r\n that.laySearch = that.elem.find('.'+ ELEM_SEARCH)\r\n that.layData = thisElem.find('.'+ ELEM_DATA);\r\n that.layBtn = thisElem.find('.'+ ELEM_ACTIVE + ' .layui-btn');\r\n \r\n // 初始化尺寸\r\n that.layBox.css({\r\n width: options.width,\r\n height: options.height\r\n });\r\n that.layData.css({\r\n height: function(){\r\n var height = options.height - that.layHeader.outerHeight();\r\n if(options.showSearch){\r\n height -= that.laySearch.outerHeight();\r\n }\r\n return height - 2;\r\n }()\r\n });\r\n \r\n that.renderData(); // 渲染数据\r\n that.events(); // 事件\r\n };\r\n \r\n // 渲染数据\r\n Class.prototype.renderData = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n // 左右穿梭框差异数据\r\n var arr = [{\r\n checkName: 'layTransferLeftCheck',\r\n views: []\r\n }, {\r\n checkName: 'layTransferRightCheck',\r\n views: []\r\n }];\r\n \r\n // 解析格式\r\n that.parseData(function(item){ \r\n // 标注为 selected 的为右边的数据\r\n var _index = item.selected ? 1 : 0\r\n var listElem = ['
                  • ',\r\n '',\r\n '
                  • '].join('');\r\n // 按照 options.value 顺序排列右侧数据\r\n if(_index){\r\n layui.each(options.value, function(i, v){\r\n if(v == item.value && item.selected){\r\n arr[_index].views[i] = listElem;\r\n }\r\n });\r\n } else {\r\n arr[_index].views.push(listElem);\r\n }\r\n delete item.selected;\r\n });\r\n \r\n that.layData.eq(0).html(arr[0].views.join(''));\r\n that.layData.eq(1).html(arr[1].views.join(''));\r\n \r\n that.renderCheckBtn();\r\n };\r\n \r\n // 渲染表单\r\n Class.prototype.renderForm = function(type){\r\n form.render(type, 'LAY-transfer-'+ this.index);\r\n };\r\n \r\n // 同步复选框和按钮状态\r\n Class.prototype.renderCheckBtn = function(obj){\r\n var that = this;\r\n var options = that.config;\r\n \r\n obj = obj || {};\r\n \r\n that.layBox.each(function(_index){\r\n var othis = $(this);\r\n var thisDataElem = othis.find('.'+ ELEM_DATA);\r\n var allElemCheckbox = othis.find('.'+ ELEM_HEADER).find('input[type=\"checkbox\"]');\r\n var listElemCheckbox = thisDataElem.find('input[type=\"checkbox\"]');\r\n \r\n // 同步复选框和按钮状态\r\n var nums = 0;\r\n var haveChecked = false;\r\n\r\n listElemCheckbox.each(function(){\r\n var isHide = $(this).data('hide');\r\n if(this.checked || this.disabled || isHide){\r\n nums++;\r\n }\r\n if(this.checked && !isHide){\r\n haveChecked = true;\r\n }\r\n });\r\n \r\n allElemCheckbox.prop('checked', haveChecked && nums === listElemCheckbox.length); // 全选复选框状态\r\n that.layBtn.eq(_index)[haveChecked ? 'removeClass' : 'addClass'](DISABLED); // 对应的按钮状态\r\n \r\n // 无数据视图\r\n if(!obj.stopNone){\r\n var isNone = thisDataElem.children('li:not(.'+ HIDE +')').length\r\n that.noneView(thisDataElem, isNone ? '' : options.text.none);\r\n }\r\n });\r\n \r\n that.renderForm('checkbox');\r\n };\r\n \r\n // 无数据视图\r\n Class.prototype.noneView = function(thisDataElem, text){\r\n var createNoneElem = $('

                    '+ (text || '') +'

                    ');\r\n if(thisDataElem.find('.'+ NONE)[0]){\r\n thisDataElem.find('.'+ NONE).remove();\r\n }\r\n text.replace(/\\s/g, '') && thisDataElem.append(createNoneElem);\r\n };\r\n \r\n // 同步 value 属性值\r\n Class.prototype.setValue = function(){\r\n var that = this;\r\n var options = that.config;\r\n var arr = [];\r\n\r\n that.layBox.eq(1).find('.'+ ELEM_DATA +' input[type=\"checkbox\"]').each(function(){\r\n var isHide = $(this).data('hide');\r\n isHide || arr.push(this.value);\r\n });\r\n options.value = arr;\r\n \r\n return that;\r\n };\r\n\r\n // 解析数据\r\n Class.prototype.parseData = function(callback){\r\n var that = this;\r\n var options = that.config;\r\n var newData = [];\r\n \r\n layui.each(options.data, function(index, item){\r\n // 解析格式\r\n item = (typeof options.parseData === 'function' \r\n ? options.parseData(item) \r\n : item) || item;\r\n \r\n newData.push(item = $.extend({}, item))\r\n \r\n layui.each(options.value, function(index2, item2){\r\n if(item2 == item.value){\r\n item.selected = true;\r\n }\r\n });\r\n callback && callback(item);\r\n });\r\n \r\n options.data = newData;\r\n return that;\r\n };\r\n \r\n // 获得右侧面板数据\r\n Class.prototype.getData = function(value){\r\n var that = this;\r\n var options = that.config;\r\n var selectedData = [];\r\n \r\n that.setValue();\r\n \r\n layui.each(value || options.value, function(index, item){\r\n layui.each(options.data, function(index2, item2){\r\n delete item2.selected;\r\n if(item == item2.value){\r\n selectedData.push(item2);\r\n };\r\n });\r\n });\r\n return selectedData;\r\n };\r\n\r\n // 执行穿梭\r\n Class.prototype.transfer = function (_index, elem) {\r\n var that = this;\r\n var options = that.config;\r\n var thisBoxElem = that.layBox.eq(_index);\r\n var arr = [];\r\n\r\n if (!elem) {\r\n // 通过按钮触发找到选中的进行移动\r\n thisBoxElem.each(function(_index){\r\n var othis = $(this);\r\n var thisDataElem = othis.find('.'+ ELEM_DATA);\r\n\r\n thisDataElem.children('li').each(function(){\r\n var thisList = $(this);\r\n var thisElemCheckbox = thisList.find('input[type=\"checkbox\"]');\r\n var isHide = thisElemCheckbox.data('hide');\r\n\r\n if(thisElemCheckbox[0].checked && !isHide){\r\n thisElemCheckbox[0].checked = false;\r\n thisBoxElem.siblings('.'+ ELEM_BOX).find('.'+ ELEM_DATA).append(thisList.clone());\r\n thisList.remove();\r\n\r\n // 记录当前穿梭的数据\r\n arr.push(thisElemCheckbox[0].value);\r\n }\r\n\r\n that.setValue();\r\n });\r\n });\r\n } else {\r\n // 双击单条记录移动\r\n var thisList = elem;\r\n var thisElemCheckbox = thisList.find('input[type=\"checkbox\"]');\r\n\r\n thisElemCheckbox[0].checked = false;\r\n thisBoxElem.siblings('.'+ ELEM_BOX).find('.'+ ELEM_DATA).append(thisList.clone());\r\n thisList.remove();\r\n\r\n // 记录当前穿梭的数据\r\n arr.push(thisElemCheckbox[0].value);\r\n\r\n that.setValue();\r\n }\r\n\r\n that.renderCheckBtn();\r\n\r\n // 穿梭时,如果另外一个框正在搜索,则触发匹配\r\n var siblingInput = thisBoxElem.siblings('.'+ ELEM_BOX).find('.'+ ELEM_SEARCH +' input')\r\n siblingInput.val() === '' || siblingInput.trigger('keyup');\r\n\r\n // 穿梭时的回调\r\n options.onchange && options.onchange(that.getData(arr), _index);\r\n }\r\n\r\n // 事件\r\n Class.prototype.events = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n // 左右复选框\r\n that.elem.on('click', 'input[lay-filter=\"layTransferCheckbox\"]+', function(){ \r\n var thisElemCheckbox = $(this).prev();\r\n var checked = thisElemCheckbox[0].checked;\r\n var thisDataElem = thisElemCheckbox.parents('.'+ ELEM_BOX).eq(0).find('.'+ ELEM_DATA);\r\n \r\n if(thisElemCheckbox[0].disabled) return;\r\n \r\n // 判断是否全选\r\n if(thisElemCheckbox.attr('lay-type') === 'all'){\r\n thisDataElem.find('input[type=\"checkbox\"]').each(function(){\r\n if(this.disabled) return;\r\n this.checked = checked;\r\n });\r\n }\r\n\r\n setTimeout(function () {\r\n that.renderCheckBtn({stopNone: true});\r\n }, 0)\r\n });\r\n\r\n // 双击穿梭\r\n that.elem.on('dblclick', '.' + ELEM_DATA + '>li', function(event){\r\n var elemThis = $(this);\r\n var thisElemCheckbox = elemThis.children('input[type=\"checkbox\"]');\r\n var thisDataElem = elemThis.parent();\r\n var thisBoxElem = thisDataElem.parent();\r\n var index = thisBoxElem.data('index');\r\n\r\n if(thisElemCheckbox[0].disabled) return;\r\n\r\n // 根据 dblclick 回调函数返回值决定是否执行穿梭 --- 2.9.3+\r\n var ret = typeof options.dblclick === 'function' ? options.dblclick({\r\n elem: elemThis,\r\n data: that.getData([thisElemCheckbox[0].value])[0],\r\n index: index\r\n }) : null;\r\n\r\n if(ret === false) return;\r\n\r\n that.transfer(index, elemThis);\r\n })\r\n\r\n // 穿梭按钮事件\r\n that.layBtn.on('click', function(){\r\n var othis = $(this);\r\n var _index = othis.data('index');\r\n\r\n if(othis.hasClass(DISABLED)) return;\r\n that.transfer(_index);\r\n });\r\n \r\n // 搜索\r\n that.laySearch.find('input').on('keyup', function(){\r\n var value = this.value;\r\n var thisDataElem = $(this).parents('.'+ ELEM_SEARCH).eq(0).siblings('.'+ ELEM_DATA);\r\n var thisListElem = thisDataElem.children('li');\r\n\r\n thisListElem.each(function(){\r\n var thisList = $(this);\r\n var thisElemCheckbox = thisList.find('input[type=\"checkbox\"]');\r\n var title = thisElemCheckbox[0].title;\r\n\r\n // 是否区分大小写\r\n if(options.showSearch !== 'cs'){\r\n title = title.toLowerCase();\r\n value = value.toLowerCase();\r\n }\r\n\r\n var isMatch = title.indexOf(value) !== -1;\r\n\r\n thisList[isMatch ? 'removeClass': 'addClass'](HIDE);\r\n thisElemCheckbox.data('hide', isMatch ? false : true);\r\n });\r\n\r\n that.renderCheckBtn();\r\n \r\n // 无匹配数据视图\r\n var isNone = thisListElem.length === thisDataElem.children('li.'+ HIDE).length;\r\n that.noneView(thisDataElem, isNone ? options.text.searchNone : '');\r\n });\r\n };\r\n \r\n // 记录所有实例\r\n thisModule.that = {}; // 记录所有实例对象\r\n thisModule.config = {}; // 记录所有实例配置项\r\n \r\n // 重载实例\r\n transfer.reload = function(id, options){\r\n var that = thisModule.that[id];\r\n that.reload(options);\r\n \r\n return thisModule.call(that);\r\n };\r\n \r\n // 获得选中的数据(右侧面板)\r\n transfer.getData = function(id){\r\n var that = thisModule.that[id];\r\n return that.getData();\r\n };\r\n\r\n // 核心入口\r\n transfer.render = function(options){\r\n var inst = new Class(options);\r\n return thisModule.call(inst);\r\n };\r\n\r\n exports(MOD_NAME, transfer);\r\n});\r\n","/**\r\n * carousel 轮播模块\r\n * MIT Licensed \r\n */\r\n \r\nlayui.define(['jquery', 'lay'], function(exports){\r\n \"use strict\";\r\n \r\n var $ = layui.$;\r\n var lay = layui.lay;\r\n\r\n var hint = layui.hint();\r\n var device = layui.device();\r\n\r\n // 外部接口\r\n var carousel = {\r\n config: {}, // 全局配置项\r\n\r\n // 设置全局项\r\n set: function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n },\r\n \r\n // 事件\r\n on: function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n }\r\n };\r\n \r\n // 字符常量\r\n var MOD_NAME = 'carousel';\r\n var ELEM = '.layui-carousel';\r\n var THIS = 'layui-this';\r\n var SHOW = 'layui-show';\r\n var HIDE = 'layui-hide';\r\n var DISABLED = 'layui-disabled'\r\n \r\n var ELEM_ITEM = '>*[carousel-item]>*';\r\n var ELEM_LEFT = 'layui-carousel-left';\r\n var ELEM_RIGHT = 'layui-carousel-right';\r\n var ELEM_PREV = 'layui-carousel-prev';\r\n var ELEM_NEXT = 'layui-carousel-next';\r\n var ELEM_ARROW = 'layui-carousel-arrow';\r\n var ELEM_IND = 'layui-carousel-ind';\r\n \r\n // 构造器\r\n var Class = function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, carousel.config, options);\r\n that.render();\r\n };\r\n \r\n // 默认配置\r\n Class.prototype.config = {\r\n width: '600px',\r\n height: '280px',\r\n full: false, // 是否全屏\r\n arrow: 'hover', // 切换箭头默认显示状态:hover/always/none\r\n indicator: 'inside', // 指示器位置:inside/outside/none\r\n autoplay: true, // 是否自动切换\r\n interval: 3000, // 自动切换的时间间隔,不能低于800ms\r\n anim: '', // 动画类型:default/updown/fade\r\n trigger: 'click', // 指示器的触发方式:click/hover\r\n index: 0 // 初始开始的索引\r\n };\r\n \r\n // 轮播渲染\r\n Class.prototype.render = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 若 elem 非唯一,则拆分为多个实例\r\n var elem = $(options.elem);\r\n if(elem.length > 1){\r\n layui.each(elem, function(){\r\n carousel.render($.extend({}, options, {\r\n elem: this\r\n }));\r\n });\r\n return that;\r\n }\r\n\r\n // 合并 lay-options 属性上的配置信息\r\n $.extend(options, lay.options(elem[0]));\r\n\r\n options.elem = $(options.elem);\r\n if(!options.elem[0]) return;\r\n that.elemItem = options.elem.find(ELEM_ITEM);\r\n \r\n if(options.index < 0) options.index = 0;\r\n if(options.index >= that.elemItem.length) options.index = that.elemItem.length - 1;\r\n if(options.interval < 800) options.interval = 800;\r\n\r\n // 是否全屏模式\r\n if(options.full){\r\n options.elem.css({\r\n position: 'fixed',\r\n width: '100%',\r\n height: '100%',\r\n zIndex: 9999\r\n });\r\n } else {\r\n options.elem.css({\r\n width: options.width,\r\n height: options.height\r\n });\r\n }\r\n \r\n options.elem.attr('lay-anim', options.anim);\r\n \r\n // 初始焦点状态\r\n that.elemItem.eq(options.index).addClass(THIS);\r\n\r\n // 指示器等动作\r\n if(that.elemItem.length <= 1) return;\r\n\r\n that.indicator();\r\n that.arrow();\r\n that.autoplay();\r\n that.events();\r\n };\r\n \r\n // 重置轮播\r\n Class.prototype.reload = function(options){\r\n var that = this;\r\n clearInterval(that.timer);\r\n that.config = $.extend({}, that.config, options);\r\n that.render();\r\n };\r\n \r\n // 获取上一个等待条目的索引\r\n Class.prototype.prevIndex = function(){\r\n var that = this;\r\n var options = that.config;\r\n var prevIndex = options.index - 1;\r\n\r\n if(prevIndex < 0){\r\n prevIndex = that.elemItem.length - 1;\r\n }\r\n\r\n return prevIndex;\r\n };\r\n \r\n // 获取下一个等待条目的索引\r\n Class.prototype.nextIndex = function(){\r\n var that = this;\r\n var options = that.config;\r\n var nextIndex = options.index + 1;\r\n\r\n if(nextIndex >= that.elemItem.length){\r\n nextIndex = 0;\r\n }\r\n\r\n return nextIndex;\r\n };\r\n \r\n // 索引递增\r\n Class.prototype.addIndex = function(num){\r\n var that = this;\r\n var options = that.config;\r\n \r\n num = num || 1;\r\n options.index = options.index + num;\r\n \r\n // index 不能超过轮播总数量\r\n if(options.index >= that.elemItem.length){\r\n options.index = 0;\r\n }\r\n };\r\n \r\n // 索引递减\r\n Class.prototype.subIndex = function(num){\r\n var that = this;\r\n var options = that.config;\r\n \r\n num = num || 1;\r\n options.index = options.index - num;\r\n \r\n // index 不能超过轮播总数量\r\n if(options.index < 0){\r\n options.index = that.elemItem.length - 1;\r\n }\r\n };\r\n \r\n // 自动轮播\r\n Class.prototype.autoplay = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n if(!options.autoplay) return;\r\n clearInterval(that.timer);\r\n \r\n that.timer = setInterval(function(){\r\n that.slide();\r\n }, options.interval);\r\n };\r\n \r\n // 箭头\r\n Class.prototype.arrow = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n // 模板\r\n var tplArrow = $([\r\n '',\r\n ''\r\n ].join(''));\r\n \r\n // 预设基础属性\r\n options.elem.attr('lay-arrow', options.arrow);\r\n \r\n // 避免重复插入\r\n if(options.elem.find('.'+ELEM_ARROW)[0]){\r\n options.elem.find('.'+ELEM_ARROW).remove();\r\n }\r\n options.elem.append(tplArrow);\r\n \r\n // 事件\r\n tplArrow.on('click', function(){\r\n var othis = $(this);\r\n var type = othis.attr('lay-type')\r\n that.slide(type);\r\n });\r\n };\r\n\r\n // 跳转到特定下标\r\n Class.prototype.goto = function(index){\r\n var that = this;\r\n var options = that.config;\r\n\r\n if(index > options.index){\r\n that.slide('add', index - options.index);\r\n } else if(index < options.index){\r\n that.slide('sub', options.index - index);\r\n }\r\n }\r\n \r\n // 指示器\r\n Class.prototype.indicator = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n // 模板\r\n var tplInd = that.elemInd = $(['
                      ',\r\n function(){\r\n var li = [];\r\n layui.each(that.elemItem, function(index){\r\n li.push('');\r\n });\r\n return li.join('');\r\n }(),\r\n '
                    '].join(''));\r\n \r\n // 预设基础属性\r\n options.elem.attr('lay-indicator', options.indicator);\r\n \r\n // 避免重复插入\r\n if(options.elem.find('.'+ELEM_IND)[0]){\r\n options.elem.find('.'+ELEM_IND).remove();\r\n }\r\n options.elem.append(tplInd);\r\n \r\n if(options.anim === 'updown'){\r\n tplInd.css('margin-top', -(tplInd.height()/2));\r\n }\r\n \r\n // 事件\r\n tplInd.find('li').on(options.trigger === 'hover' ? 'mouseover' : options.trigger, function(){\r\n that.goto($(this).index());\r\n });\r\n };\r\n \r\n // 滑动切换\r\n Class.prototype.slide = function(type, num){\r\n var that = this;\r\n var elemItem = that.elemItem;\r\n var options = that.config;\r\n var thisIndex = options.index;\r\n var filter = options.elem.attr('lay-filter');\r\n \r\n if(that.haveSlide) return;\r\n \r\n // 滑动方向\r\n if(type === 'sub'){\r\n that.subIndex(num);\r\n elemItem.eq(options.index).addClass(ELEM_PREV);\r\n setTimeout(function(){\r\n elemItem.eq(thisIndex).addClass(ELEM_RIGHT);\r\n elemItem.eq(options.index).addClass(ELEM_RIGHT);\r\n }, 50);\r\n } else { // 默认递增滑\r\n that.addIndex(num);\r\n elemItem.eq(options.index).addClass(ELEM_NEXT);\r\n setTimeout(function(){\r\n elemItem.eq(thisIndex).addClass(ELEM_LEFT);\r\n elemItem.eq(options.index).addClass(ELEM_LEFT);\r\n }, 50); \r\n }\r\n \r\n // 移除过渡类\r\n setTimeout(function(){\r\n elemItem.removeClass(THIS + ' ' + ELEM_PREV + ' ' + ELEM_NEXT + ' ' + ELEM_LEFT + ' ' + ELEM_RIGHT);\r\n elemItem.eq(options.index).addClass(THIS);\r\n that.haveSlide = false; // 解锁\r\n }, 350);\r\n \r\n // 指示器焦点\r\n that.elemInd.find('li').eq(options.index).addClass(THIS)\r\n .siblings().removeClass(THIS);\r\n \r\n that.haveSlide = true;\r\n \r\n // 回调返回的参数\r\n var params = {\r\n index: options.index,\r\n prevIndex: thisIndex,\r\n item: elemItem.eq(options.index)\r\n };\r\n \r\n typeof options.change === 'function' && options.change(params);\r\n layui.event.call(this, MOD_NAME, 'change('+ filter +')', params);\r\n };\r\n \r\n // 事件处理\r\n Class.prototype.events = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n if(options.elem.data('haveEvents')) return;\r\n \r\n // 移入移出容器\r\n options.elem.on('mouseenter touchstart', function(){\r\n if (that.config.autoplay === 'always') return;\r\n clearInterval(that.timer);\r\n }).on('mouseleave touchend', function(){\r\n if (that.config.autoplay === 'always') return;\r\n that.autoplay();\r\n });\r\n\r\n var touchEl = options.elem;\r\n var isVertical = options.anim === 'updown';\r\n lay.touchSwipe(touchEl, {\r\n onTouchEnd: function(e, state){\r\n var duration = Date.now() - state.timeStart;\r\n var distance = isVertical ? state.distanceY : state.distanceX;\r\n var speed = distance / duration;\r\n var shouldSwipe = Math.abs(speed) > 0.25 || Math.abs(distance) > touchEl[isVertical ? 'height' : 'width']() / 3;\r\n if(shouldSwipe){\r\n that.slide(distance > 0 ? '' : 'sub');\r\n }\r\n }\r\n })\r\n \r\n options.elem.data('haveEvents', true);\r\n };\r\n \r\n // 核心入口\r\n carousel.render = function(options){\r\n return new Class(options);\r\n };\r\n \r\n exports(MOD_NAME, carousel);\r\n});\r\n\r\n \r\n","/**\r\n * rate 评分评星组件\r\n */\r\n\r\nlayui.define(['jquery', 'lay'],function(exports){\r\n \"use strict\";\r\n\r\n var $ = layui.jquery;\r\n var lay = layui.lay;\r\n\r\n // 外部接口\r\n var rate = {\r\n config: {},\r\n index: layui.rate ? (layui.rate.index + 10000) : 0,\r\n\r\n //设置全局项\r\n set: function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n },\r\n\r\n //事件\r\n on: function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n }\r\n }\r\n\r\n // 操作当前实例\r\n var thisRate = function () {\r\n var that = this;\r\n var options = that.config;\r\n\r\n return {\r\n setvalue: function (value) {\r\n that.setvalue.call(that, value);\r\n },\r\n config: options\r\n }\r\n };\r\n\r\n //字符常量\r\n var MOD_NAME = 'rate';\r\n var ELEM_VIEW = 'layui-rate';\r\n var ICON_RATE = 'layui-icon-rate';\r\n var ICON_RATE_SOLID = 'layui-icon-rate-solid';\r\n var ICON_RATE_HALF = 'layui-icon-rate-half';\r\n var ICON_SOLID_HALF = 'layui-icon-rate-solid layui-icon-rate-half';\r\n var ICON_SOLID_RATE = 'layui-icon-rate-solid layui-icon-rate';\r\n var ICON_HALF_RATE = 'layui-icon-rate layui-icon-rate-half';\r\n\r\n //构造器\r\n var Class = function (options) {\r\n var that = this;\r\n that.index = ++rate.index;\r\n that.config = $.extend({}, that.config, rate.config, options);\r\n that.render();\r\n };\r\n\r\n //默认配置\r\n Class.prototype.config = {\r\n length: 5, //初始长度\r\n text: false, //是否显示评分等级\r\n readonly: false, //是否只读\r\n half: false, //是否可以半星\r\n value: 0, //星星选中个数\r\n theme: '' //主题颜色\r\n };\r\n\r\n //评分渲染\r\n Class.prototype.render = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 若 elem 非唯一,则拆分为多个实例\r\n var elem = $(options.elem);\r\n if(elem.length > 1){\r\n layui.each(elem, function(){\r\n rate.render($.extend({}, options, {\r\n elem: this\r\n }));\r\n });\r\n return that;\r\n }\r\n\r\n // 合并 lay-options 属性上的配置信息\r\n $.extend(options, lay.options(elem[0]));\r\n\r\n // 自定义主题\r\n var style = options.theme ? ('style=\"color: '+ options.theme + ';\"') : '';\r\n\r\n options.elem = $(options.elem);\r\n\r\n //最大值不能大于总长度\r\n if(options.value > options.length){\r\n options.value = options.length;\r\n }\r\n\r\n //如果没有选择半星的属性,却给了小数的数值,统一向上或向下取整\r\n if(parseInt(options.value) !== options.value){\r\n if(!options.half){\r\n options.value = (Math.ceil(options.value) - options.value) < 0.5 ? Math.ceil(options.value): Math.floor(options.value)\r\n }\r\n }\r\n\r\n //组件模板\r\n var temp = '
                      ';\r\n for(var i = 1;i <= options.length;i++){\r\n var item = '
                    • Math.floor(options.value)?ICON_RATE:ICON_RATE_SOLID)\r\n + '\" '+ style +'>
                    • ';\r\n\r\n if(options.half&&parseInt(options.value) !== options.value&&i == Math.ceil(options.value)){\r\n temp = temp + '
                    • ';\r\n }else{\r\n temp = temp +item;\r\n }\r\n }\r\n temp += '
                    ' + (options.text ? (''+ options.value + '星') : '') + '';\r\n\r\n //开始插入替代元素\r\n var othis = options.elem;\r\n var hasRender = othis.next('.' + ELEM_VIEW);\r\n\r\n //生成替代元素\r\n hasRender[0] && hasRender.remove(); //如果已经渲染,则Rerender\r\n\r\n that.elemTemp = $(temp);\r\n\r\n options.span = that.elemTemp.next('span');\r\n\r\n options.setText && options.setText(options.value);\r\n\r\n othis.html(that.elemTemp);\r\n\r\n othis.addClass(\"layui-inline\");\r\n\r\n //如果不是只读,那么进行触控事件\r\n if(!options.readonly) that.action();\r\n\r\n };\r\n\r\n //评分重置\r\n Class.prototype.setvalue = function(value){\r\n var that = this;\r\n var options = that.config;\r\n\r\n options.value = value ;\r\n that.render();\r\n };\r\n\r\n //li触控事件\r\n Class.prototype.action = function(){\r\n var that = this;\r\n var options = that.config;\r\n var _ul = that.elemTemp;\r\n var wide = _ul.find(\"i\").width();\r\n var liElems = _ul.children(\"li\");\r\n\r\n liElems.each(function(index){\r\n var ind = index + 1;\r\n var othis = $(this);\r\n\r\n //点击\r\n othis.on('click', function(e){\r\n //将当前点击li的索引值赋给value\r\n options.value = ind;\r\n if(options.half){\r\n //获取鼠标在li上的位置\r\n var x = e.pageX - $(this).offset().left;\r\n if(x <= wide / 2){\r\n options.value = options.value - 0.5;\r\n }\r\n }\r\n\r\n if(options.text) _ul.next(\"span\").text(options.value + \"星\");\r\n\r\n options.choose && options.choose(options.value);\r\n options.setText && options.setText(options.value);\r\n });\r\n\r\n //移入\r\n othis.on('mousemove', function(e){\r\n _ul.find(\"i\").each(function(){\r\n $(this).addClass(ICON_RATE).removeClass(ICON_SOLID_HALF)\r\n });\r\n _ul.find(\"i:lt(\" + ind + \")\").each(function(){\r\n $(this).addClass(ICON_RATE_SOLID).removeClass(ICON_HALF_RATE)\r\n });\r\n // 如果设置可选半星,那么判断鼠标相对li的位置\r\n if(options.half){\r\n var x = e.pageX - $(this).offset().left;\r\n if(x <= wide / 2){\r\n othis.children(\"i\").addClass(ICON_RATE_HALF).removeClass(ICON_RATE_SOLID)\r\n }\r\n }\r\n })\r\n\r\n //移出\r\n othis.on('mouseleave', function(){\r\n _ul.find(\"i\").each(function(){\r\n $(this).addClass(ICON_RATE).removeClass(ICON_SOLID_HALF)\r\n });\r\n _ul.find(\"i:lt(\" + Math.floor(options.value) + \")\").each(function(){\r\n $(this).addClass(ICON_RATE_SOLID).removeClass(ICON_HALF_RATE)\r\n });\r\n //如果设置可选半星,根据分数判断是否有半星\r\n if(options.half){\r\n if(parseInt(options.value) !== options.value){\r\n _ul.children(\"li:eq(\" + Math.floor(options.value) + \")\").children(\"i\").addClass(ICON_RATE_HALF).removeClass(ICON_SOLID_RATE)\r\n }\r\n }\r\n })\r\n\r\n })\r\n\r\n lay.touchSwipe(_ul, {\r\n onTouchMove: function(e, state){\r\n if(Date.now() - state.timeStart <= 200) return;\r\n var pageX = e.touches[0].pageX;\r\n var rateElemWidth = _ul.width();\r\n var itemElemWidth = rateElemWidth / options.length; // 单颗星的宽度\r\n var offsetX = pageX - _ul.offset().left;\r\n var num = offsetX / itemElemWidth; // 原始值\r\n var remainder = num % 1;\r\n var integer = num - remainder;\r\n\r\n // 最终值\r\n var score = remainder <= 0.5 && options.half ? integer + 0.5 : Math.ceil(num);\r\n if(score > options.length) score = options.length;\r\n if(score < 0) score = 0;\r\n\r\n liElems.each(function(index){\r\n var iconElem = $(this).children('i');\r\n var isActiveIcon = (Math.ceil(score) - index === 1);\r\n var needSelect = Math.ceil(score) > index;\r\n var shouldHalfIcon = (score - index === 0.5);\r\n\r\n if(needSelect){\r\n // 设置选中样式\r\n iconElem.addClass(ICON_RATE_SOLID).removeClass(ICON_HALF_RATE);\r\n if(options.half && shouldHalfIcon){\r\n iconElem.addClass(ICON_RATE_HALF).removeClass(ICON_RATE_SOLID);\r\n }\r\n }else{\r\n // 恢复初始样式\r\n iconElem.addClass(ICON_RATE).removeClass(ICON_SOLID_HALF);\r\n }\r\n\r\n // 设置缩放样式\r\n iconElem.toggleClass('layui-rate-hover', isActiveIcon);\r\n });\r\n\r\n // 更新最终值\r\n options.value = score;\r\n if(options.text) _ul.next(\"span\").text(options.value + \"星\");\r\n options.setText && options.setText(options.value);\r\n },\r\n onTouchEnd: function(e, state){\r\n if(Date.now() - state.timeStart <= 200) return;\r\n _ul.find('i').removeClass('layui-rate-hover');\r\n options.choose && options.choose(options.value);\r\n options.setText && options.setText(options.value);\r\n }\r\n });\r\n };\r\n\r\n //事件处理\r\n Class.prototype.events = function () {\r\n var that = this;\r\n //var options = that.config;\r\n };\r\n\r\n //核心入口\r\n rate.render = function(options){\r\n var inst = new Class(options);\r\n return thisRate.call(inst);\r\n };\r\n\r\n exports(MOD_NAME, rate);\r\n})\r\n","/**\r\n * flow 流加载组件\r\n */\r\n\r\n\r\nlayui.define('jquery', function(exports){\r\n \"use strict\";\r\n\r\n var $ = layui.$, Flow = function(options){}\r\n ,ELEM_MORE = 'layui-flow-more'\r\n ,ELEM_LOAD = '';\r\n\r\n //主方法\r\n Flow.prototype.load = function(options){\r\n var that = this, page = 0, lock, isOver, lazyimg, timer;\r\n options = options || {};\r\n\r\n var elem = $(options.elem); if(!elem[0]) return;\r\n var scrollElem = $(options.scrollElem || document); // 滚动条所在元素\r\n var threshold = 'mb' in options ? options.mb : 50; // 临界距离\r\n var isAuto = 'isAuto' in options ? options.isAuto : true; // 否自动滚动加载\r\n var moreText = options.moreText || \"加载更多\"; // 手动加载时,加载更多按钮文案\r\n var end = options.end || '没有更多了'; // “末页”显示文案\r\n var direction = options.direction || 'bottom';\r\n var isTop = direction === 'top';\r\n\r\n // 重复执行时清理旧的事件绑定\r\n that._cleanup(elem, scrollElem);\r\n\r\n //滚动条所在元素是否为document\r\n var notDocument = options.scrollElem && options.scrollElem !== document;\r\n\r\n //加载更多\r\n var ELEM_TEXT = '' + moreText + ''\r\n ,more = $('');\r\n\r\n if(!elem.find('.layui-flow-more')[0]){\r\n elem[isTop ? 'prepend' : 'append'](more);\r\n }\r\n\r\n //加载下一个元素\r\n var next = function(html, over){\r\n var scrollHeightStart = notDocument ? scrollElem.prop('scrollHeight') : document.documentElement.scrollHeight;\r\n var scrollTopStart = scrollElem.scrollTop();\r\n html = $(html);\r\n more[isTop ? 'after' : 'before'](html);\r\n over = over == 0 ? true : null;\r\n over ? more.html(end) : more.find('a').html(ELEM_TEXT);\r\n isOver = over;\r\n lock = null;\r\n lazyimg && lazyimg();\r\n if(isTop){\r\n var scrollHeightEnd = notDocument ? scrollElem.prop('scrollHeight') : document.documentElement.scrollHeight;\r\n if(page === 1){\r\n // 首次渲染后滑动到底部\r\n scrollElem.scrollTop(scrollHeightEnd);\r\n }else if(page > 1){\r\n var nextElementHeight = scrollHeightEnd - scrollHeightStart;\r\n scrollElem.scrollTop(scrollTopStart + nextElementHeight);\r\n }\r\n }\r\n };\r\n\r\n //触发请求\r\n var done = function(){\r\n lock = true;\r\n more.find('a').html(ELEM_LOAD);\r\n typeof options.done === 'function' && options.done(++page, next);\r\n };\r\n\r\n done();\r\n\r\n //不自动滚动加载\r\n more.find('a').on('click.flow', function(){\r\n var othis = $(this);\r\n if(isOver) return;\r\n lock || done();\r\n });\r\n\r\n //如果允许图片懒加载\r\n if(options.isLazyimg){\r\n lazyimg = that.lazyimg({\r\n elem: options.elem + ' img'\r\n ,scrollElem: options.scrollElem\r\n ,direction: options.direction\r\n });\r\n }\r\n\r\n if(!isAuto) return that;\r\n\r\n scrollElem.on('scroll.flow', function(){\r\n var othis = $(this), top = othis.scrollTop();\r\n\r\n if(timer) clearTimeout(timer);\r\n if(isOver || !elem.width()) return; //如果已经结束,或者元素处于隐藏状态,则不执行滚动加载\r\n\r\n timer = setTimeout(function(){\r\n //计算滚动所在容器的可视高度\r\n var height = notDocument ? othis.height() : $(window).height();\r\n\r\n //计算滚动所在容器的实际高度\r\n var scrollHeight = notDocument\r\n ? othis.prop('scrollHeight')\r\n : document.documentElement.scrollHeight;\r\n\r\n //临界点\r\n if(!isTop ? scrollHeight - top - height <= threshold : top <= threshold){\r\n lock || done();\r\n }\r\n }, 100);\r\n });\r\n\r\n return that;\r\n };\r\n\r\n //图片懒加载\r\n Flow.prototype.lazyimg = function(options){\r\n var that = this, index = 0, haveScroll;\r\n options = options || {};\r\n\r\n var scrollElem = $(options.scrollElem || document); //滚动条所在元素\r\n var elem = options.elem || 'img';\r\n var direction = options.direction || 'bottom';\r\n var isTop = direction === 'top';\r\n\r\n //滚动条所在元素是否为document\r\n var notDocument = options.scrollElem && options.scrollElem !== document;\r\n\r\n //显示图片\r\n var show = function(item, height){\r\n var start = scrollElem.scrollTop(), end = start + height;\r\n var elemTop = notDocument ? function(){\r\n return item.offset().top - scrollElem.offset().top + start;\r\n }() : item.offset().top;\r\n\r\n /* 始终只加载在当前屏范围内的图片 */\r\n if((isTop ? elemTop + item.height() : elemTop) >= start && elemTop <= end){\r\n if(item.attr('lay-src')){\r\n var src = item.attr('lay-src');\r\n layui.img(src, function(){\r\n var next = that.lazyimg.elem.eq(index);\r\n item.attr('src', src).removeAttr('lay-src');\r\n\r\n /* 当前图片加载就绪后,检测下一个图片是否在当前屏 */\r\n next[0] && render(next);\r\n index++;\r\n }, function(){\r\n var next = that.lazyimg.elem.eq(index);\r\n item.removeAttr('lay-src');\r\n });\r\n }\r\n }\r\n }, render = function(othis, scroll){\r\n\r\n //计算滚动所在容器的可视高度\r\n var height = notDocument ? (scroll||scrollElem).height() : $(window).height();\r\n var start = scrollElem.scrollTop(), end = start + height;\r\n\r\n that.lazyimg.elem = $(elem);\r\n\r\n if(othis){\r\n show(othis, height);\r\n } else {\r\n //计算未加载过的图片\r\n for(var i = 0; i < that.lazyimg.elem.length; i++){\r\n var item = that.lazyimg.elem.eq(i), elemTop = notDocument ? function(){\r\n return item.offset().top - scrollElem.offset().top + start;\r\n }() : item.offset().top;\r\n\r\n show(item, height);\r\n index = i;\r\n\r\n //如果图片的top坐标,超出了当前屏,则终止后续图片的遍历\r\n if(elemTop > end) break;\r\n }\r\n }\r\n };\r\n\r\n render();\r\n\r\n if(!haveScroll){\r\n var timer;\r\n scrollElem.on('scroll.lazyimg' , function(){\r\n var othis = $(this);\r\n if(timer) clearTimeout(timer)\r\n timer = setTimeout(function(){\r\n render(null, othis);\r\n }, 50);\r\n });\r\n haveScroll = true;\r\n }\r\n return render;\r\n };\r\n\r\n // 重复执行时清理旧的事件绑定,私有方法\r\n Flow.prototype._cleanup = function(elem, scrollElem){\r\n scrollElem.off('scroll.flow').off('scroll.lazyimg');\r\n elem.find('.layui-flow-more').find('a').off('click.flow');\r\n elem.html('');\r\n }\r\n\r\n //暴露接口\r\n exports('flow', new Flow());\r\n});\r\n","/**\r\n * code\r\n * Code 预览组件\r\n */\r\n\r\nlayui.define(['lay', 'util', 'element', 'form'], function(exports){\r\n \"use strict\";\r\n\r\n var $ = layui.$;\r\n var util = layui.util;\r\n var element = layui.element;\r\n var form = layui.form;\r\n var layer = layui.layer;\r\n var hint = layui.hint();\r\n\r\n // 常量\r\n var CONST = {\r\n ELEM_VIEW: 'layui-code-view',\r\n ELEM_TAB: 'layui-tab',\r\n ELEM_HEADER: 'layui-code-header',\r\n ELEM_FULL: 'layui-code-full',\r\n ELEM_PREVIEW: 'layui-code-preview',\r\n ELEM_ITEM: 'layui-code-item',\r\n ELEM_SHOW: 'layui-show',\r\n ELEM_LINE: 'layui-code-line',\r\n ELEM_LINE_NUM: 'layui-code-line-number',\r\n ELEM_LN_MODE: 'layui-code-ln-mode',\r\n CDDE_DATA_CLASS: 'LayuiCodeDataClass',\r\n LINE_RAW_WIDTH: 45, // 行号初始宽度,需与 css 保持一致\r\n };\r\n\r\n // 默认参数项\r\n var config = {\r\n elem: '', // 元素选择器\r\n about: '', // 代码栏右上角信息\r\n ln: true, // 代码区域是否显示行号\r\n header: false, // 是否显示代码栏头部区域\r\n encode: true, // 是否对 code 进行编码(若开启预览,则强制开启)\r\n copy: true, // 是否开启代码区域复制功能图标\r\n // 默认文本\r\n text: {\r\n code: util.escape(''),\r\n preview: 'Preview',\r\n },\r\n wordWrap: true, // 是否自动换行\r\n lang: 'text', // 指定语言类型\r\n highlighter: false, // 是否开启语法高亮,'hljs','prism','shiki'\r\n langMarker: false, // 代码区域是否显示语言类型标记\r\n };\r\n\r\n // 初始索引\r\n var codeIndex = layui.code ? (layui.code.index + 10000) : 0;\r\n\r\n // 去除尾部空格\r\n var trimEnd = function(str){\r\n return String(str).replace(/\\s+$/, '');\r\n }\r\n // 保留首行缩进\r\n var trim = function(str){\r\n return trimEnd(str).replace(/^\\n|\\n$/, '');\r\n };\r\n\r\n // export api\r\n exports('code', function(options, mode){\r\n options = $.extend(true, {}, config, options);\r\n\r\n // 返回对象\r\n var ret = {\r\n config: options,\r\n reload: function(opts) { // 重载\r\n layui.code(this.updateOptions(opts));\r\n },\r\n updateOptions: function(opts) { // 更新属性(选项)\r\n opts = opts || {};\r\n delete opts.elem;\r\n return $.extend(true, options, opts);\r\n },\r\n reloadCode: function(opts) { // 仅重载 code\r\n layui.code(this.updateOptions(opts), 'reloadCode');\r\n }\r\n };\r\n\r\n // 若 elem 非唯一\r\n var elem = $(options.elem);\r\n if(elem.length > 1){\r\n // 是否正向渲染\r\n layui.each(options.obverse ? elem : elem.get().reverse(), function(){\r\n layui.code($.extend({}, options, {\r\n elem: this\r\n }), mode);\r\n });\r\n return ret;\r\n }\r\n\r\n // 目标元素是否存在\r\n var othis = options.elem = $(options.elem);\r\n if(!othis[0]) return ret;\r\n\r\n // 合并属性上的参数,并兼容旧版本属性写法 lay-*\r\n $.extend(true, options, lay.options(othis[0]), function(obj){\r\n var attrs = ['title', 'height', 'encode', 'skin', 'about'];\r\n layui.each(attrs, function(i, attr){\r\n var value = othis.attr('lay-'+ attr);\r\n if(typeof value === 'string'){\r\n obj[attr] = value;\r\n }\r\n })\r\n return obj;\r\n }({}));\r\n\r\n // codeRender 需要关闭编码\r\n // 未使用 codeRender 时若开启了预览,则强制开启编码\r\n options.encode = (options.encode || options.preview) && !options.codeRender;\r\n\r\n // 获得初始 code\r\n options.code = options.code || function(){\r\n var arr = [];\r\n var textarea = othis.children('textarea');\r\n\r\n // 若内容放置在 textarea 中\r\n textarea.each(function(){\r\n arr.push(trim(this.value));\r\n });\r\n\r\n // 内容直接放置在元素外层\r\n if(arr.length === 0){\r\n arr.push(trim(othis.html()));\r\n }\r\n\r\n return arr.join('');\r\n }();\r\n\r\n // 创建 code 行结构\r\n var createCode = function(html) {\r\n // codeRender\r\n if(typeof options.codeRender === 'function') {\r\n html = options.codeRender(String(html), options);\r\n }\r\n\r\n // code 行\r\n var lines = String(html).split(/\\r?\\n/g);\r\n\r\n // 包裹 code 行结构\r\n html = $.map(lines, function(line, num) {\r\n return [\r\n '
                    ',\r\n (\r\n options.ln ? [\r\n '
                    ',\r\n (util.digit(num + 1) + '.'),\r\n '
                    ',\r\n ].join('') : ''\r\n ),\r\n '
                    ',\r\n (line || ' '),\r\n '
                    ',\r\n '
                    '\r\n ].join('');\r\n });\r\n\r\n return {\r\n lines: lines,\r\n html: html\r\n };\r\n };\r\n\r\n // 原始 code\r\n var rawCode = options.code;\r\n\r\n // 最终 code\r\n var finalCode = function(code) {\r\n return typeof options.codeParse === 'function' ?\r\n options.codeParse(code, options) :\r\n code;\r\n };\r\n\r\n // 仅重载 code\r\n if (mode === 'reloadCode') {\r\n return othis.children('.layui-code-wrap').html(\r\n createCode(finalCode(rawCode)).html\r\n ), ret;\r\n }\r\n\r\n // 自增索引\r\n var index = layui.code.index = ++codeIndex;\r\n othis.attr('lay-code-index', index);\r\n\r\n // 初始化 className\r\n var hasDataClass = CONST.CDDE_DATA_CLASS in othis.data();\r\n if (hasDataClass) {\r\n othis.attr('class', othis.data(CONST.CDDE_DATA_CLASS) || '');\r\n }\r\n\r\n // 记录初始 className\r\n if (!hasDataClass) {\r\n othis.data(CONST.CDDE_DATA_CLASS, othis.attr('class'));\r\n }\r\n\r\n // 工具栏\r\n var tools = {\r\n copy: {\r\n className: 'file-b',\r\n title: ['复制代码'],\r\n event: function(obj){\r\n var code = util.unescape(finalCode(options.code));\r\n\r\n // 写入剪切板\r\n lay.clipboard.writeText({\r\n text: code,\r\n done: function() {\r\n layer.msg('已复制', {icon: 1});\r\n },\r\n error: function() {\r\n layer.msg('复制失败', {icon: 2});\r\n }\r\n });\r\n\r\n typeof options.onCopy === 'function' && options.onCopy(code);\r\n }\r\n }\r\n };\r\n\r\n // 移除包裹结构\r\n var unwrap = (function fn() {\r\n var elemViewHas = othis.parent('.' + CONST.ELEM_PREVIEW);\r\n var elemTabHas = elemViewHas.children('.'+ CONST.ELEM_TAB);\r\n var elemPreviewViewHas = elemViewHas.children('.' + CONST.ELEM_ITEM +'-preview');\r\n\r\n // 移除旧结构\r\n elemTabHas.remove(); // 移除 tab\r\n elemPreviewViewHas.remove(); // 移除预览区域\r\n if (elemViewHas[0]) othis.unwrap(); // 移除外层容器\r\n\r\n return fn;\r\n })();\r\n\r\n // 是否开启预览\r\n if(options.preview){\r\n var FILTER_VALUE = 'LAY-CODE-DF-'+ index;\r\n var layout = options.layout || ['code', 'preview'];\r\n var isIframePreview = options.preview === 'iframe';\r\n\r\n // 追加 Tab 组件\r\n var elemView = $('
                    ');\r\n var elemTabView = $('
                    ');\r\n var elemHeaderView = $('
                    ');\r\n var elemPreviewView = $('
                    ');\r\n var elemToolbar = $('
                    ');\r\n\r\n\r\n if(options.id) elemView.attr('id', options.id);\r\n elemView.addClass(options.className);\r\n elemTabView.attr('lay-filter', FILTER_VALUE);\r\n\r\n // 标签头\r\n layui.each(layout, function(i, v){\r\n var li = $('
                  • ');\r\n if(i === 0) li.addClass('layui-this');\r\n li.html(options.text[v]);\r\n elemHeaderView.append(li);\r\n });\r\n\r\n // 工具栏\r\n $.extend(tools, {\r\n 'full': {\r\n className: 'screen-full',\r\n title: ['最大化显示', '还原显示'],\r\n event: function(obj){\r\n var el = obj.elem;\r\n var elemView = el.closest('.'+ CONST.ELEM_PREVIEW);\r\n var classNameFull = 'layui-icon-'+ this.className;\r\n var classNameRestore = 'layui-icon-screen-restore';\r\n var title = this.title;\r\n var htmlElem = $('html,body');\r\n var ELEM_SCROLLBAR_HIDE = 'layui-scrollbar-hide';\r\n\r\n if(el.hasClass(classNameFull)){\r\n elemView.addClass(CONST.ELEM_FULL);\r\n el.removeClass(classNameFull).addClass(classNameRestore);\r\n el.attr('title', title[1]);\r\n htmlElem.addClass(ELEM_SCROLLBAR_HIDE);\r\n } else {\r\n elemView.removeClass(CONST.ELEM_FULL);\r\n el.removeClass(classNameRestore).addClass(classNameFull);\r\n el.attr('title', title[0]);\r\n htmlElem.removeClass(ELEM_SCROLLBAR_HIDE);\r\n }\r\n }\r\n },\r\n 'window': {\r\n className: 'release',\r\n title: ['在新窗口预览'],\r\n event: function(obj){\r\n util.openWin({\r\n content: finalCode(options.code)\r\n });\r\n }\r\n }\r\n });\r\n\r\n // copy\r\n if(options.copy){\r\n if(layui.type(options.tools) === 'array'){\r\n // 若 copy 未存在于 tools 中,则追加到最前\r\n if(options.tools.indexOf('copy') === -1){\r\n options.tools.unshift('copy');\r\n }\r\n } else {\r\n options.tools = ['copy'];\r\n }\r\n }\r\n\r\n // 工具栏事件\r\n elemToolbar.on('click', '>i', function(){\r\n var oi = $(this);\r\n var type = oi.data('type');\r\n var parameters = {\r\n elem: oi,\r\n type: type,\r\n options: options, // 当前属性选项\r\n rawCode: options.code, // 原始 code\r\n finalCode: util.unescape(finalCode(options.code)) // 最终 code\r\n };\r\n\r\n // 内部 tools event\r\n tools[type] && typeof tools[type].event === 'function' && tools[type].event(parameters);\r\n\r\n // 外部 tools event\r\n typeof options.toolsEvent === 'function' && options.toolsEvent(parameters);\r\n });\r\n\r\n // 增加工具栏\r\n if (options.addTools && options.tools) {\r\n options.tools = [].concat(options.tools, options.addTools);\r\n }\r\n\r\n // 渲染工具栏\r\n layui.each(options.tools, function(i, v){\r\n var viso = typeof v === 'object'; // 若为 object 值,则可自定义更多属性\r\n var tool = viso ? v : (\r\n tools[v] || {\r\n className: v,\r\n title: [v]\r\n }\r\n );\r\n\r\n var className = tool.className || tool.type;\r\n var title = tool.title || [''];\r\n var type = viso ? ( tool.type || className ) : v;\r\n\r\n if (!type) return;\r\n\r\n // 若非内置 tool,则合并到 tools 中\r\n if (!tools[type]) {\r\n var obj = {};\r\n obj[type] = tool;\r\n $.extend(tools, obj);\r\n }\r\n\r\n elemToolbar.append(\r\n ''\r\n );\r\n });\r\n\r\n othis.addClass(CONST.ELEM_ITEM).wrap(elemView); // 包裹外层容器\r\n elemTabView.append(elemHeaderView); // 追加标签头\r\n options.tools && elemTabView.append(elemToolbar); // 追加工具栏\r\n othis.before(elemTabView); // 追加标签结构\r\n\r\n // 追加预览\r\n if(isIframePreview){\r\n elemPreviewView.html('');\r\n }\r\n\r\n // 执行预览\r\n var runPreview = function(thisItemBody){\r\n var iframe = thisItemBody.children('iframe')[0];\r\n\r\n // 是否 iframe 方式预览\r\n if(isIframePreview && iframe){\r\n iframe.srcdoc = finalCode(options.code);\r\n } else {\r\n thisItemBody.html(options.code);\r\n }\r\n\r\n // 当前实例预览完毕后的回调\r\n setTimeout(function(){\r\n typeof options.done === 'function' && options.done({\r\n container: thisItemBody,\r\n options: options,\r\n render: function(){\r\n form.render(thisItemBody.find('.layui-form'));\r\n element.render();\r\n }\r\n });\r\n },3);\r\n };\r\n\r\n if(layout[0] === 'preview'){\r\n elemPreviewView.addClass(CONST.ELEM_SHOW);\r\n othis.before(elemPreviewView);\r\n runPreview(elemPreviewView);\r\n } else {\r\n othis.addClass(CONST.ELEM_SHOW).after(elemPreviewView);\r\n }\r\n\r\n // 内容项初始化样式\r\n options.previewStyle = [options.style, options.previewStyle].join('');\r\n elemPreviewView.attr('style', options.previewStyle);\r\n\r\n // tab change\r\n element.on('tab('+ FILTER_VALUE +')', function(data){\r\n var $this = $(this);\r\n var thisElem = $(data.elem).closest('.'+ CONST.ELEM_PREVIEW);\r\n var elemItemBody = thisElem.find('.'+ CONST.ELEM_ITEM);\r\n var thisItemBody = elemItemBody.eq(data.index);\r\n\r\n elemItemBody.removeClass(CONST.ELEM_SHOW);\r\n thisItemBody.addClass(CONST.ELEM_SHOW);\r\n\r\n if($this.attr('lay-id') === 'preview'){\r\n runPreview(thisItemBody);\r\n }\r\n\r\n setCodeLayout();\r\n });\r\n }\r\n\r\n // 创建 code 容器\r\n var codeElem = $(''); // 此处的闭合标签是为了兼容 IE8\r\n\r\n // 添加主容器 className\r\n othis.addClass(function(arr) {\r\n if (!options.wordWrap) arr.push('layui-code-nowrap');\r\n return arr.join(' ')\r\n }(['layui-code-view layui-border-box']));\r\n\r\n // code 主题风格\r\n var theme = options.theme || options.skin;\r\n if (theme) {\r\n othis.removeClass('layui-code-theme-dark layui-code-theme-light');\r\n othis.addClass('layui-code-theme-'+ theme);\r\n }\r\n\r\n // 添加高亮必要的 className\r\n if (options.highlighter) {\r\n othis.addClass([\r\n options.highlighter,\r\n 'language-' + options.lang,\r\n 'layui-code-hl'\r\n ].join(' '));\r\n }\r\n\r\n // 获取 code 行结构\r\n var createCodeRst = createCode(\r\n options.encode ? util.escape(finalCode(rawCode)) : rawCode // 是否编码\r\n );\r\n var lines = createCodeRst.lines;\r\n\r\n // 插入 code\r\n othis.html(codeElem.html(createCodeRst.html));\r\n\r\n // 插入行号边栏\r\n if (options.ln) {\r\n othis.append('
                    ');\r\n }\r\n\r\n // 兼容旧版本 height 属性\r\n if (options.height) {\r\n codeElem.css('max-height', options.height);\r\n }\r\n\r\n // code 区域样式\r\n options.codeStyle = [options.style, options.codeStyle].join('');\r\n if (options.codeStyle) {\r\n codeElem.attr('style', function(i, val) {\r\n return (val || '') + options.codeStyle;\r\n });\r\n }\r\n\r\n // 动态设置样式\r\n var cssRules = [\r\n {\r\n selector: '>.layui-code-wrap>.layui-code-line{}',\r\n setValue: function(item, value) {\r\n item.style['padding-left'] = value + 'px';\r\n }\r\n },\r\n {\r\n selector: '>.layui-code-wrap>.layui-code-line>.layui-code-line-number{}',\r\n setValue: function(item, value) {\r\n item.style.width = value + 'px';\r\n }\r\n },\r\n {\r\n selector: '>.layui-code-ln-side{}',\r\n setValue: function(item, value) {\r\n item.style.width = value + 'px';\r\n }\r\n }\r\n ];\r\n\r\n // 生成初始 style 元素\r\n var styleElem = lay.style({\r\n target: othis[0],\r\n id: 'DF-code-'+ index,\r\n text: $.map($.map(cssRules, function(val){\r\n return val.selector;\r\n }), function(val, i) {\r\n return ['.layui-code-view[lay-code-index=\"'+ index + '\"]', val].join(' ');\r\n }).join('')\r\n })\r\n\r\n // 动态设置 code 布局\r\n var setCodeLayout = (function fn() {\r\n if (options.ln) {\r\n var multiLine = Math.floor(lines.length / 100);\r\n var lineElem = codeElem.children('.'+ CONST.ELEM_LINE);\r\n var width = lineElem.last().children('.'+ CONST.ELEM_LINE_NUM).outerWidth();\r\n\r\n othis.addClass(CONST.ELEM_LN_MODE);\r\n\r\n // 若超出 100 行\r\n if (multiLine && width > CONST.LINE_RAW_WIDTH) {\r\n lay.getStyleRules(styleElem, function(item, i) {\r\n try {\r\n cssRules[i].setValue(item, width);\r\n } catch(e) { }\r\n });\r\n }\r\n }\r\n\r\n return fn;\r\n })();\r\n\r\n // 创建 code header\r\n if (options.header) {\r\n var headerElem = $('
                    ');\r\n headerElem.html(options.title || options.text.code);\r\n othis.prepend(headerElem);\r\n }\r\n\r\n // 创建 code 区域固定条\r\n var elemFixbar = $('
                    ');\r\n\r\n // 若开启复制,且未开启预览,则单独生成复制图标\r\n if(options.copy && !options.preview){\r\n var copyElem = $(['',\r\n '',\r\n ''].join(''));\r\n\r\n // 点击复制\r\n copyElem.on('click', function(){\r\n tools.copy.event();\r\n });\r\n\r\n elemFixbar.append(copyElem);\r\n }\r\n\r\n // 创建 language marker\r\n if (options.langMarker) {\r\n elemFixbar.append('' + options.lang + '');\r\n }\r\n\r\n // 创建 about 自定义内容\r\n if (options.about) {\r\n elemFixbar.append(options.about);\r\n }\r\n\r\n // 生成 code fixbar\r\n othis.append(elemFixbar);\r\n\r\n // code 渲染完毕后的回调\r\n if (!options.preview) {\r\n setTimeout(function(){\r\n typeof options.done === 'function' && options.done({});\r\n },3);\r\n }\r\n\r\n // 所有实例渲染完毕后的回调\r\n if(options.elem.length === index + 1){\r\n typeof options.allDone === 'function' && options.allDone();\r\n }\r\n\r\n return ret;\r\n });\r\n});\r\n\r\n// 若为源码版,则自动加载该组件依赖的 css 文件\r\nif(!layui['layui.all']){\r\n layui.addcss('modules/code.css?v=6', 'skincodecss');\r\n}\r\n"]} \ No newline at end of file +{"version":3,"sources":["layui.js","modules/layui.all.js","modules/lay.js","modules/laytpl.js","modules/laypage.js","modules/laydate.js","modules/jquery.js","modules/layer.js","modules/util.js","modules/dropdown.js","modules/slider.js","modules/colorpicker.js","modules/element.js","modules/upload.js","modules/form.js","modules/table.js","modules/treeTable.js","modules/tree.js","modules/transfer.js","modules/carousel.js","modules/rate.js","modules/flow.js","modules/code.js"],"names":["win","jsPath","doc","document","config","modules","status","timeout","event","Layui","this","v","GLOBAL","LAYUI_GLOBAL","getPath","currentScript","src","js","scripts","last","length","i","readyState","dir","substring","lastIndexOf","error","msg","type","console","isOpera","opera","toString","builtin","lay","layer","laydate","laypage","laytpl","form","upload","dropdown","transfer","tree","table","treeTable","element","rate","colorpicker","slider","carousel","flow","util","code","jquery","all","layui.all","EV_REMOVE","prototype","cache","define","deps","factory","use","setApp","app","exports","layui","callback","apps","from","node","url","that","head","getElementsByTagName","item","jQuery","fn","on","each","index","splice","$","onScriptLoad","e","readyRegExp","navigator","platform","test","currentTarget","srcElement","removeChild","poll","onCallback","setTimeout","push","slice","apply","host","match","location","base","replace","createElement","async","charset","version","Date","getTime","appendChild","attachEvent","indexOf","addEventListener","disuse","isArray","getStyle","name","style","currentStyle","getComputedStyle","getPropertyValue","link","href","cssname","id","STAUTS_NAME","debug","rel","media","getElementById","getLinkElem","parseInt","removeAttribute","getAttribute","setAttribute","addcss","firename","modName","img","Image","complete","onload","onerror","options","key","o","clone","extend","router","hash","data","path","search","split","obj","pathname","_index","substr","settings","storage","localStorage","JSON","parse","value","remove","stringify","sessionData","sessionStorage","device","agent","userAgent","toLowerCase","getVersion","label","exp","RegExp","result","os","ie","ActiveXObject","weixin","android","ios","mobile","hint","_typeof","operand","String","Object","call","_isArray","len","callFn","sort","arr","desc","notClone","o1","o2","v1","v2","isNaN","isNum","reverse","stope","thisEvent","stopPropagation","cancelBubble","onevent","events","params","filter","eventName","filterName","_","off","debounce","func","wait","context","args","arguments","clearTimeout","throttle","cooldown","window","selector","Class","elem","querySelectorAll","Array","searchElement","fromIndex","rst","val","constructor","ai","target","digit","num","str","Math","pow","elemName","attr","hasScrollbar","body","scrollHeight","innerHeight","documentElement","clientHeight","getStyleRules","rules","sheet","styleSheet","cssRules","styleText","text","cssText","innerHTML","styleElem","find","append","position","opts","scrollArea","winArea","margin","left","top","rect1","clickType","rect","clientX","clientY","right","bottom","getBoundingClientRect","elemWidth","offsetWidth","elemHeight","offsetHeight","align","allowBottomOut","SYSTEM_RELOAD","othis","attrName","attrValue","Function","ev","errorText","join","isTopElem","topElems","matched","clipboard","writeText","legacyCopy","opacity","select","execCommand","done","err","then","passiveSupported","defineProperty","get","removeEventListener","touchEventsSupported","touchSwipe","state","onMove","onEnd","targetElem","pointerStart","x","y","pointerEnd","distanceX","distanceY","direction","timeStart","onStart","touches","passive","now","onTouchStart","preventDefault","abs","onTouchMove","onTouchEnd","__lay_touchswipe_cb_","addEvent","eventsCacheName","listener","include","_rawFn","removeEvent","newEvents","detachEvent","addStr","new_str","ii","removeStr","isObject","children","contains","child","addClass","className","removeClass","hasClass","has","css","parseValue","undefined","thisKey","thisValue","width","height","removeAttr","html","parentNode","open","close","tool","escape","inner","source","template","tagExp","__","jss","jsse","tag","start","render","DISABLED","view","elemArr","countText","plate","groups","Number","layout","count","curr","limits","limit","pages","ceil","prev","next","views","page","pager","first","halve","floor","end","max","theme","def","limitTemplet","refresh","skip","skipText","jump","isskip","childs","btn","input","nodeName","keyCode","load","even","isLayui","ready","MOD_NAME","MOD_ID","weekStart","laydate_dir","set","thisModule","inst","content","reload","THIS","LIMIT_YEAR","ELEM_STATIC","ELEM_LIST","ELEM_SELECTED","ELEM_HINT","ELEM_PREV","ELEM_NEXT","ELEM_CONFIRM","ELEM_TIME_TEXT","ELEM_TIME_BTN","ELEM_PREVIEW","ELEM_SHADE","newThat","getThis","init","dateType","formatArr","format","isLeapYear","year","range","isInitValue","min","trigger","show","showBottom","isPreview","btns","lang","calendar","mark","holidays","zIndex","change","autoConfirm","shade","cn","weeks","time","timeTips","startTime","endTime","dateTips","month","tools","confirm","clear","invalidDate","formatError","preview","en","markerOfChineseFestivals","0-1-1","0-2-14","0-3-8","0-3-12","0-4-1","0-5-1","0-5-4","0-6-1","0-9-10","0-10-1","0-12-25","isStatic","date","datetime","eventElem","fullPanel","rangeStr","rangeLinked","autoCalendarModel","startDate","endDate","auto","rangeElem","EXP_IF","EXP_SPLIT","EXP","EXP_IF_ONE","isInput","ymd","hms","day","tDate","newDate","getFullYear","getMonth","getDate","hours","minutes","seconds","thisDate","getHours","getMinutes","getSeconds","elemID","formatToDisplay","setValue","systemDate","themeStr","shortcutBtns","colorTheme","class","elemMain","elemHeader","elemCont","elemTable","divFooter","footer","divShortcut","shortcut","divHeader","headerChild","spanY","spanM","divContent","thead","theadTr","tr","insertRow","j","th","insertCell","insertBefore","ELEM_MAIN","title","shortcuts","btnSetting","dataset","timeBtn","dateTime","endState","listYM","checkDate","click","main","isPrimaryColor","thisElemDate","thisId","insertAdjacentHTML","changeEvent","renderAdditional","div","hinTimer","ms","getAsYM","Y","M","thisMaxDate","vals","arrDate","minMaxError","checkValid","getEndDate","initDate","startEnd","thisv","parseFloat","EYM","_i","_v","getDateTime","markRender","tdElem","YMD","markers","markText","keys","td","holidaysRender","insertHtml","el","idx","dayStr","ymdStr2","ymd1","ymd2","ymdStr1","cellRender","dateObj","panelMode","originElem","startOfYear","setFullYear","setHours","endOfYear","startOfMonth","setDate","endOfMonth","addDays","amount","isDisabledYearOrMonth","startDay","endDay","numOfDays","disabledCount","disabledDate","isDisabledDate","rangeType","disabledType","normalizedDate","isDisabledTime","isDisabledItem","disabledTime","compareVal","rangeFn","rangeFnParam","isDisabledDateTime","timestamp","isOut","thisDateTime","startWeek","prevMaxDate","isAlone","tds","elemYM","firstDate","getDay","index_","st","list","setBtnStatus","timeParams","stampRange","yearNum","setTimeStatus","showHour","liElem","hideCount","scroll","haveSpan","ul","haveList","isCN","startY","li","lay-ym","ol","childUL","showMinute","showSecond","isShow","ym","closeList","choose","span","scrollTop","olElem","overflowY","touchAction","tips","elemBtn","displayValueCallback","props","getOwnPropertyDescriptor","HTMLInputElement","displayValue","elemPreview","color","thisTime","param","panelIndex","isChange","YM","dateTimeTemp","active","addSubYear","isYear","isMonth","prevYear","prevMonth","nextMonth","nextYear","header","layYM","layType","tagName","toLocaleLowerCase","showEvent","eventHandler","unbind","run","closeStop","getInst","one","concat","amd","global","module","w","Error","noGlobal","deletedIds","class2type","hasOwn","hasOwnProperty","support","rtrim","rmsPrefix","rdashAlpha","fcamelCase","letter","toUpperCase","isArrayLike","isWindow","toArray","pushStack","elems","ret","merge","prevObject","map","eq","copyIsArray","copy","deep","isFunction","isPlainObject","expando","random","isReady","noop","isNumeric","realStringObj","isEmptyObject","nodeType","ownFirst","globalEval","trim","execScript","camelCase","string","makeArray","results","inArray","second","grep","invert","matches","callbackExpect","arg","guid","proxy","tmp","Symbol","iterator","Sizzle","Expr","getText","isXML","tokenize","compile","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","sortOrder","a","b","pop","push_native","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","rquickExpr","rsibling","rescape","runescape","funescape","escaped","escapedWhitespace","high","fromCharCode","unloadHandler","childNodes","els","seed","m","nid","nidselect","newSelector","newContext","ownerDocument","exec","getElementsByClassName","qsa","toSelector","testContext","qsaError","cacheLength","shift","markFunction","assert","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createPositionalPseudo","argument","matchIndexes","parent","defaultView","createComment","getById","getElementsByName","attrId","getAttributeNode","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","hasCompare","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","specified","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","what","simple","forward","ofType","xml","uniqueCache","outerCache","nodeIndex","useCache","lastChild","uniqueID","pseudo","setFilters","not","matcher","unmatched","innerText","elemLang","root","focus","activeElement","hasFocus","tabIndex","enabled","disabled","checked","selected","selectedIndex","empty","button","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","tokens","addCombinator","combinator","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","contexts","matcherIn","matcherOut","filters","parseOnly","soFar","preFilters","cached","elementMatchers","setMatchers","bySet","byElement","superMatcher","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","token","compiled","div1","defaultValue","unique","isXMLDoc","until","truncate","is","siblings","n","rneedsContext","rsingleTag","risSimple","winnow","qualifier","self","rootjQuery","rparentsprev","charAt","parseHTML","guaranteedUnique","contents","sibling","targets","closest","l","pos","prevAll","add","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","contentWindow","readyList","rnotwhite","detach","completed","Callbacks","object","flag","firing","memory","fired","locked","queue","firingIndex","fire","once","stopOnFalse","disable","lock","fireWith","Deferred","tuples","promise","always","deferred","fail","fns","newDefer","tuple","returned","progress","notify","resolve","reject","pipe","stateString","when","subordinate","progressValues","progressContexts","resolveContexts","resolveValues","remaining","updateFunc","values","notifyWith","resolveWith","readyWait","holdReady","hold","triggerHandler","doScroll","frameElement","doScrollCheck","inlineBlockNeedsLayout","container","zoom","deleteExpando","shrinkWrapBlocksVal","acceptData","noData","rbrace","rmultiDash","dataAttr","parseJSON","isEmptyDataObject","internalData","pvt","internalKey","isNode","toJSON","thisCache","internalRemoveData","cleanData","applet ","embed ","object ","hasData","removeData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","defer","shrinkWrapBlocks","pnum","rcssNum","cssExpand","isHidden","adjustCSS","prop","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","access","chainable","emptyGet","raw","bulk","rcheckableType","rtagName","rscriptType","rleadingWhitespace","nodeNames","createSafeFragment","safeFrag","createDocumentFragment","fragment","leadingWhitespace","tbody","htmlSerialize","html5Clone","cloneNode","outerHTML","appendChecked","noCloneChecked","checkClone","noCloneEvent","wrapMap","option","legend","area","col","_default","getAll","found","setGlobalEval","refElements","optgroup","tfoot","colgroup","caption","rhtml","rtbody","fixDefaultChecked","defaultChecked","buildFragment","selection","ignored","wrap","safe","nodes","htmlPrefilter","createTextNode","focusin","rformElems","rkeyEvent","rmouseEvent","rfocusMorph","rtypenamespace","returnTrue","returnFalse","safeActiveElement","types","origFn","t","handleObjIn","special","eventHandle","handlers","namespaces","origType","elemData","handle","triggered","dispatch","delegateType","bindType","handleObj","namespace","delegateCount","setup","mappedTypes","origCount","teardown","onlyHandlers","ontype","bubbleType","eventPath","Event","isTrigger","rnamespace","noBubble","parentWindow","isPropagationStopped","isDefaultPrevented","fix","handlerQueue","delegateTarget","preDispatch","isImmediatePropagationStopped","postDispatch","sel","originalEvent","fixHook","fixHooks","mouseHooks","keyHooks","metaKey","original","which","charCode","eventDoc","fromElement","pageX","scrollLeft","clientLeft","pageY","clientTop","relatedTarget","toElement","blur","beforeunload","returnValue","simulate","isSimulated","defaultPrevented","timeStamp","stopImmediatePropagation","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","_submitBubble","propertyName","_justChanged","attaches","rinlinejQuery","rnoshimcache","rxhtmlTag","rnoInnerhtml","rchecked","rscriptTypeMasked","rcleanScript","fragmentDiv","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","oldData","curData","domManip","collection","hasScripts","iNoClone","_evalUrl","keepData","dataAndEvents","deepDataAndEvents","destElements","srcElements","inPage","fixCloneNodeIssues","defaultSelected","forceAcceptData","prepend","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","insert","iframe","elemdisplay","HTML","BODY","actualDisplay","display","defaultDisplay","write","pixelPositionVal","pixelMarginRightVal","boxSizingReliableVal","reliableHiddenOffsetsVal","reliableMarginRightVal","reliableMarginLeftVal","rmargin","rnumnonpx","swap","old","computeStyleTests","divStyle","marginLeft","marginRight","getClientRects","borderCollapse","cssFloat","backgroundClip","clearCloneStyle","boxSizing","MozBoxSizing","WebkitBoxSizing","reliableHiddenOffsets","boxSizingReliable","pixelMarginRight","pixelPosition","reliableMarginRight","reliableMarginLeft","getStyles","curCSS","rposition","addGetHookIf","conditionFn","hookFn","opener","computed","maxWidth","minWidth","rs","rsLeft","runtimeStyle","pixelLeft","ralpha","ropacity","rdisplayswap","rnumsplit","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","cssPrefixes","emptyStyle","vendorPropName","capName","showHide","hidden","setPositiveNumber","subtract","augmentWidthOrHeight","extra","isBorderBox","styles","getWidthOrHeight","valueIsBorderBox","Tween","easing","cssHooks","animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","lineHeight","order","orphans","widows","cssProps","float","origName","isFinite","$1","padding","border","prefix","suffix","expand","expanded","parts","hide","toggle","propHooks","percent","eased","duration","step","fx","linear","p","swing","cos","PI","fxNow","timerId","rfxtypes","rrun","createFxNow","genFx","includeWidth","createTween","animation","Animation","tweeners","properties","stopped","prefilters","tick","currentTime","tweens","specialEasing","originalProperties","originalOptions","gotoEnd","rejectWith","timer","anim","*","tweener","oldfire","dataShow","unqueued","overflow","overflowX","prefilter","speed","opt","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","interval","setInterval","clearInterval","slow","fast","delay","getSetAttribute","hrefNormalized","checkOn","optSelected","enctype","optDisabled","radioValue","rreturn","rspaces","valHooks","optionSet","nodeHook","boolHook","ruseDefault","getSetInput","rfocusable","nType","attrHooks","propName","attrNames","propFix","getter","setAttributeNode","createAttribute","coords","contenteditable","rclickable","rclass","removeProp","tabindex","for","getClass","classes","clazz","finalValue","curValue","toggleClass","stateVal","classNames","hover","fnOver","fnOut","nonce","rquery","rvalidtokens","rhash","requireNonComma","depth","comma","parseXML","DOMParser","parseFromString","loadXML","rts","rheaders","rnoContent","rprotocol","rurl","transports","allTypes","ajaxLocation","ajaxLocParts","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","ajaxConvert","s","response","isSuccess","conv2","current","conv","converters","responseFields","dataFilter","filterHidden","lastModified","etag","isLocal","processData","contentType","accepts","json","* text","text html","text json","text xml","ajaxSetup","ajaxPrefilter","ajaxTransport","ajax","cacheURL","responseHeadersString","timeoutTimer","fireGlobals","transport","responseHeaders","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","lname","overrideMimeType","mimeType","abort","statusText","finalText","success","method","crossDomain","traditional","hasContent","ifModified","headers","beforeSend","send","nativeStatusText","responses","firstDataType","ct","finalDataType","modified","getJSON","getScript","throws","wrapAll","wrapInner","unwrap","visible","r20","rbracket","rCRLF","rsubmitterTypes","rsubmittable","encodeURIComponent","buildParams","serialize","serializeArray","xhr","createActiveXHR","documentMode","createStandardXHR","xhrId","xhrCallbacks","xhrSupported","XMLHttpRequest","cors","username","xhrFields","isAbort","onreadystatechange","responseText","script","text script","scriptCharset","oldCallbacks","rjsonp","_load","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","keepScripts","parsed","getWindow","animated","offset","setOffset","curCSSTop","curTop","curOffset","curCSSLeft","curElem","curLeft","curPosition","using","box","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","","defaultExtra","funcName","bind","delegate","undelegate","size","andSelf","layer_dir","removeFocus","beforeEnd","resize","minStackIndex","minStackArr","STATUS_NAME","alert","yes","cancel","btn2","rskin","skin","doms","closeBtn","icon","follow","fixed","setings","creat","pt","SHADE_KEY","0","1","2","3","4","5","6","slideLeft","slideRight","SHADE","MOVE","RECORD_HEIGHT_KEY","move","isOutAnim","minStack","moveType","scrollbar","vessel","conType","times","titype","ismax","maxmin","titleHTML","face","animClass","additFaceClass","btnAlign","layero","elemShade","setAnim","restore","hideOnClose","closeAll","tipsMore","moveElem","shadeo","setScrollbar","background-color","transition","innerWidth","outerWidth","titHeight","outerHeight","btnHeight","setHeight","maxHeight","offsetTop","offsetLeft","layArea","goal","tipsG","guide","autoLeft","tipLeft","where","tipTop","padding-right","_DOC","DATA_NAME","resizeElem","dict","eventMoveElem","eventResizeElem","docEvent","setRig","setBot","X","stX","stY","moveOut","resizing","moveEnd","openLayer","IE6","shadeClose","full","reselect","sthis","setTop","record","contentElem","contentRecordHeightElem","restScrollbar","removeProperty","getChildFrame","getFrameIndex","iframeAuto","heg","iframeSrc","elemMin","hasMinLeft","maxminStatus","minLeft","edgeIndex","contentRecordHeight","isfix","executor","closeAnim","WRAP","reason","domsElem","closeLast","layerIndexMax","layerIndexList","isArrayType","prompt","placeholder","formType","maxlength","tab","photos","loop","toolbar","imgIndex","pushData","alt","pid","thumb","imgprev","tabimg","imgnext","errorMsg","keyup","isNumber","getTransform","transforms","rotate","scaleX","touchEndCallback","imgElem","transform","ratio","delta","wheelDelta","detail","zoomElem","threshold","loadi","loadImage","winarea","imgarea","wh","_$","isMobile","_win","propSuffix","deliver","fixbar","elemTopBar","setTopBar","ELEM","$doc","$target","bars","default","$scroll","bar1","bar2","elemBar","lay-type","bgcolor","countdown","clock","countTime","d","h","setTime","timeAgo","onlyDate","stamp","toDateString","years","days","milliseconds","meridiem","getMilliseconds","customMeridiem","hm","yy","yyyy","MM","dd","H","HH","hh","A","mm","ss","SSS","unescape","openWin","specs","toVisibleArea","scrollElem","SCROLL_NAME","OFFSET_NAME","scrollValue","scrollOffset","thisOffset","thisElem","vertical","callbacks","attrSelector","DATANAME","dataCache","_WIN","ELEM_LI","clickOrMousedown","MOD_INDEX","customName","reloadData","STR_ELEM","STR_ITEM_UP","STR_ITEM_DOWN","STR_MENU_TITLE","STR_ITEM_GROUP","STR_ITEM_PARENT","STR_ITEM_CHECKED","STR_ITEM_CHECKED2","STR_MENU_PANEL","STR_MENU_PANEL_L","STR_ELEM_SHADE","STR_GROUP_TITLE","isAllowSpread","isSpreadItem","accordion","rerender","elemView","elemBody","getDefaultView","elemUl","eachItemView","isChild","templet","group","-","viewLi","viewText","elemPanel","TPL_MAIN","delayRemove","prevElem","isClickAllScope","clickScope","elemGroup","spread","prevTriggerElem","prevInstance","prevOnClose","prevContentElem","prevId","normalizedDelay","isMouseEnter","prevElemCallback","isAccordion","needSpread","groupSibs","ELEM_LI_PAR","dataParams","SLIDER_BAR","SLIDER_WRAP","SLIDER_WRAP_BTN","SLIDER_TIPS","SLIDER_INPUT_TXT","ELEM_HOVER","showstep","tipsAlways","precision","precisions","decimalArr","minValue","maxValue","scaleFir","scaleSec","hasRender","elemTemp","number","setSliderTipsTxt","sliderWrapBtnElem","tipsTxt","setTips","calcSliderTipsLeft","sliderWidth","sliderWrap","setSliderTipsLeft","margin-bottom","elemInput","slide","sliderAct","sliderTxt","inputValue","offsetValue","round","arrValue","firLeft","valueTo","secLeft","wrapWidth","selfValue","toFixed","oldLeft","elemMove","sliderBtnElem","up","upCall","oldleft","oldx","reaLeft","inputScale","getInputValue","realValue","ICON_PICKER_DOWN","ICON_PICKER_CLOSE","PICKER_TRIG_SPAN","PICKER_TRIG_I","PICKER_SIDE_SLIDER","PICKER_BASIS","PICKER_ALPHA_BG","PICKER_ALPHA_SLIDER","PICKER_BASIS_CUR","PICKER_INPUT","RGBToHSB","rgb","hsb","r","g","HSBToRGB","t1","t3","t2","HSBToHEX","hex","nr","RGBSTo","rgbs","re","$win","alpha","predefine","colors","elemColorBox","bgstr","background","renderPicker","elemPicker","removePicker","thisElemInd","thisColor","pickerEvents","bindElem","elemPickerInput","backgroundColor","side","basis","alphacolor","alphaslider","_h","_b","_s","_a","pre","z","createMoveElem","triggerEvent","oldtop","oldy","maxh","maxw","eventType","simulatedEvent","pointer","createEvent","initMouseEvent","screenX","screenY","dispatchEvent","sidetop","basisElem","elemColorBoxSpan","colorValue","attrEvent","SHOW","TITLE","Element","NAV_ELEM","tabAdd","layAttr","tabElem","titElem","barElem","contElem","tabChange","tabAuto","tabDelete","layid","tabClick","dom","headerElem","NAV_ITEM","NAV_BAR","NAV_TREE","NAV_CHILD","NAV_MORE","NAV_ANIM","bodyElem","elemA","isJump","unselect","hasId","MORE","BAR","CLOSE","STOPE","allowclose","isSpread","hideTabMore","tsbTitle","clickThis","NAV_ITEMED","needExpand","parentSibs","collapse","isNone","elemFilter","items","nav","timerMore","timeEnd","NAV_TITLE","bar","itemElem","thisA","breadcrumb","ATTE_SPR","separator","aNode","elemTitle","files","ELEM_FILE","ELEM_FORM","ELEM_IFRAME","ELEM_CHOOSE","UPLOADING","accept","exts","bindAction","force","field","acceptMime","drag","multiple","cross-domain","data-format-error","check-error","limit-number","limit-size","elemFile","isFile","initIE","elemForm","FileReader","chooseFiles","reader","readAsDataURL","limitSize","getFiles","ajaxSend","successful","failed","allDone","fileLength","total","request","sets","formData","FormData","resetFileState","unified","res","lengthComputable","loaded","iframeSend","iframeBody","thisFile","pushFile","resetFile","filename","newFile","File","getChooseFiles","typeName","images","video","audio","promiseLikeResolve","setChooseFile","setChooseText","checkFile","extendInfo","extInfo","ext","sizes","parseSize","FileList","dataTransfer","formatSize","log","HIDE","Form","verify","required","phone","email","identity","autocomplete","getFormElem","itemForm","getValue","nameIndex","fieldElem","init_name","inputs","handleInputNumber","rawValue","noAction","isInit","decimals","controlBtn","increment","decrement","affix","CLASS_WRAP","CLASS_SUFFIX","CLASS_AFFIX","showAffix","renderAffix","affixOptions","elemAffix","elemIcon","hasElemAffix","hasElemSuffix","inputFilter","eye","SHOW_NAME","thatInput","TIPS","NONE","CREATE_OPTION","initValue","selects","reElem","isSearch","isCreatable","laySearch","needPlaceholderPatch","showDown","hideDown","followScroll","notOption","dl","dts","dlHeight","dds","__ieph","none","posTop","thisDd","ddHeight","setThisDd","prevNext","lastIndex","allDisplayedElem","nextIndex","origin","hasEquals","isCreateOption","thisDds","firstOptionELem","hasTips","createOptionElem","ddElem","optionElem","optionsFirst","switch","SUBTRA","checks","RE_CLASS","titleTplAttrs","titleTplElem","indeterminate","ICON","radios","ANIM","forms","sameRadio","renderItem","itemType","validate","intercept","DANGER","vers","verType","thisVer","rule","verst","isForm2Elem","layFilter","verifyElem","$dom","checkName","indexName","numbersName","disabledName","thisTable","setColsWidth","getThisTable","getThisTableConfig","parseTempData","item3","tplData","exportTemplet","LAY_COL","HIDE_V","ELEM_VIEW","ELEM_HEADER","ELEM_BODY","ELEM_FIXR","ELEM_PAGE_VIEW","ELEM_SORT","ELEM_CHECKED","ELEM_EDIT","ELEM_GROUP","ELEM_COL_SPECIAL","ELEM_TOOL_PANEL","ELEM_EXPAND","DATA_MOVE_NAME","TPL_HEADER","TPL_BODY","eachChildCols","loading","cellMinWidth","cellMaxWidth","MAX_VALUE","editTrigger","defaultToolbar","defaultContextmenu","autoSort","cols","pageName","limitName","statusName","msgName","dataName","totalRowName","countName","pullData","setInit","fullHeightGap","parentDiv","parentHeightGap","customHeightFunc","lay-filter","renderStyle","resizeObserver","unobserve","layTool","layBox","layHeader","layMain","layBody","layFixed","layFixLeft","layFixRight","layTotal","layPage","renderToolbar","renderPagebar","fullSize","initOpts","space","unresize","numbers","getWidth","clientWidth","initChildCols","i1","item1","i2","item2","indexChild","childIndex","colspan","rowspan","colGroup","i22","item22","HAS_PARENT","parentKey","lineStyle","trClassName","cellMaxHeight","leftDefaultTemp","elemToolTemp","toolbarHtml","layEvent","print","iconElem","thisItem","toolbarRenderComplete","pagebarHtml","layPagebar","pagebar","setParentCol","parentTh","parentColspan","arrParentKey","getThisCol","colspan2","nextParentKey","setColsPatch","setGroupWidth","getEndTh","colNums","autoColNums","autoWidth","countWidth","cntrWidth","getAutoWidth","eachCols","getScrollWidth","back","patchNums","i3","headerWidth","scrollPatch","haveInit","HAS_SET_COLS_PATCH","errorView","elemNone","layNone","syncCheckAll","renderForm","startLimit","initSort","reloadType","renderData","totalRow","parseData","newData","getTrHtml","trsObj","trs","trs_fixed","trs_fixed_r","tds_fixed","tds_fixed_r","LAY_KEY","edit","trAttr","totalRowData","sortKey","pull","scrollPos","tipsIndex","renderTotal","totalNums","dataTotal","TOTAL_NUMS","totalRowDecimals","thisTotalNum","totalRowText","getContent","TOTAL_ROW","patchElem","getColElem","renderFormByElem","checkAllElem","checkStatus","isAll","setRowActive","setRowChecked","isCheckAll","isCheckMult","dataIndex","thisData","existChecked","getChecked","checkedElem","currTr","checkedSameElem","fixRElem","_field","elemSort","fromEvent","selectorText","headerMain","thIndex","thElem","bodyHeight","layMainTable","scrollWidth","outWidth","addPatch","fixHeight","updateRow","ELEM_CELL","row","cell","_BODY","commonMember","lis","openPanel","panel","fieldTitle","exportFile","printWin","edg","onafterprint","oLeft","pLeft","allowResize","ruleWidth","thatTable","setWidth","nowType","clearCacheKey","del","update","fields","setRowEvent","getCol","UNROW","renderGridEdit","editType","ELEM_GRID_DOWN","oldValue","reedit","showGridExpandIcon","elemCell","gridExpand","expandedMode","ELEM_CELL_C","elemCellClose","cellExpandedMode","expandedWidth","cellExpandedWidth","$this","toolFn","ResizeObserver","observe","errorTips","tdIndex","attrData","tableData","trElem","itemData","tableIns","CHILD_COLS","PARENT_COL_INDEX","arrs","eachArrs","nums","invalidNum","getData","dataTitle","dataMain","fieldsIsHide","textType","csv","xls","alink","reduce","acc","ignoreExport","download","getOptions","hideCol","thisTreeTable","ELEM_FIXL","TABLE_TREE","LAY_DATA_INDEX","LAY_DATA_INDEX_HISTORY","LAY_PARENT_INDEX","LAY_CHECKBOX_HALF","LAY_EXPAND","LAY_HAS_EXPANDED","LAY_ASYNC_STATUS","LAY_CASCADE","HTML_TAG_RE","ICON_PROPS","updateCache","childrenKey","tableCache","itemDataIndex","updateOptions","thatOptionsTemp","treeOptions","idKey","hasNumberCol","hasChecboxCol","hasRadioCol","scrollTopCache","mod","parseDataThat","retData","isSimpleData","enable","flatToTree","updateStatus","initData","renderType","isRenderData","tableView","isExpandAll","layTableAllChooseElem","renderTreeTable","iconProp","normalizedIcon","cascade","isParent","indent","flexIconClose","flexIconOpen","showIcon","iconClose","iconOpen","iconLeaf","showFlexIconIfNotParent","dblClickExpand","expandAllDefault","rootPid","autoParam","beforeExpand","onExpand","iconStr","pIdKey","idTemp","pidTemp","rootNodes","tableId","flatArr","tempObj","treeToFlat","parentId","parentIndex","flat","dataNew","getTreeNode","getParentNode","getNodeByIndex","treeNode","treeNodeData","getNodeDataByIndex","updateNode","removeNode","expandNode","setChecked","getNodeById","tableDataFlat","newValue","dataRet","indexArr","getTableData","isParentKey","debounceFn","expandFlag","sonSign","callbackFlag","tableViewElem","treeTableThat","trData","isToggle","trExpand","retValue","trExpanded","trsElem","flexIconElem","trDataId","updateNodeIcon","scopeEl","isExpand","array","asyncSuccessFn","asyncContentType","asyncDataType","asyncJsonpCallback","asyncHeaders","asyncParseData","asyncResponse","str2","str2Obj","dataLevelNew","asyncSetting","asyncUrl","asyncAutoParam","itemArr","asyncType","childItem","data-index","lay-data-index","data-level","childNodesFlat","formatNumber","inherit","expandAll","isAllAsyncDone","isAllExpanded","trAll","trAllObj","dataItem","dataLevel","nodeIconElem","nodeIcon","level","treeOptionsView","dataExpand","nameKey","htmlTemp","itemCell","trIndex","trDefaultExpand","trMain","trFixedL","trFixedR","statusObj","notCascade","dataUpdated","updateObjParams","rowIndex","tableThat","updateFn","checkNode","newNode","trLevel","newNodeTemp","trNew","delNode","nodeP","delNodesFlat","updateCheckStatus","delNodeDataIndex","i4","item4","trEl","addNodes","newNodes","childKey","childrenNodes","dataAfter","childrenNodesFlat","pageOptions","newNodesHtml","newNodesHtmlObj","trIndexPrev","newNodeIndex","newNodeItem","tableViewElemMAIN","tableViewElemFIXL","tableViewElemFIXR","trIndexNext","scrollIntoViewIfNeeded","includeHalfCheck","checkedData","updateData","setRowCheckedClass","dataP","trsP","isIndeterminate","updateParentCheckStatus","indexP","itemP","checkboxElem","checkedNum","inputElem","isRadio","trDataP","radioElem","collectNeedExpandNodeIndex","needExpandIndex","nodeData","checkAllNodes","reloadAsyncNode","dataId","getNodesByFilter","isSingle","nodesResult","ELEM_SET","ICON_CLICK","ICON_ADD","ICON_SUB","ELEM_ENTRY","ELEM_TEXT","ELEM_PACK","ELEM_SPREAD","ELEM_LINE_SHORT","ELEM_SHOW","ELEM_EXTEND","showCheckbox","showLine","onlyIconControl","defaultNodeName","checkids","editIcon","hasChild","packDiv","entryDiv","checkClick","operate","entry","elemCheckbox","elemText","touchOpen","packCont","iconClick","updateFieldValue","sibls","setCheckbox","setParentsChecked","thisNodeElem","parentNodeElem","parentCheckbox","parentPack","oncheck","getVal","returnObj","textNew","elemDel","pare","siblingTree","checkState","parentTree","prevDiv","pack","onsearch","checkId","checkData","eachNodes","index2","cloneItem","checkedId","reInput","ELEM_BOX","ELEM_SEARCH","ELEM_DATA","TPL_BOX","checkAllName","showSearch","searchNone","layData","layBtn","listElem","renderCheckBtn","thisDataElem","allElemCheckbox","listElemCheckbox","haveChecked","isHide","stopNone","noneView","createNoneElem","selectedData","thisElemCheckbox","thisBoxElem","siblingInput","thisList","onchange","elemThis","dblclick","thisListElem","isMatch","ELEM_LEFT","ELEM_RIGHT","ELEM_ARROW","ELEM_IND","arrow","indicator","autoplay","elemItem","prevIndex","addIndex","subIndex","tplArrow","goto","tplInd","elemInd","thisIndex","haveSlide","touchEl","isVertical","distance","ICON_RATE","ICON_RATE_SOLID","ICON_RATE_HALF","ICON_SOLID_HALF","ICON_HALF_RATE","readonly","half","setText","action","setvalue","_ul","wide","liElems","ind","score","itemElemWidth","remainder","isActiveIcon","needSelect","shouldHalfIcon","Flow","isOver","lazyimg","isAuto","moreText","isTop","notDocument","more","mb","_cleanup","over","scrollHeightStart","scrollTopStart","scrollHeightEnd","isLazyimg","elemTop","CONST","ELEM_TAB","ELEM_FULL","ELEM_ITEM","ELEM_LINE","ELEM_LINE_NUM","ELEM_LN_MODE","CDDE_DATA_CLASS","LINE_RAW_WIDTH","about","ln","encode","wordWrap","highlighter","langMarker","codeIndex","mode","rawCode","finalCode","isIframePreview","elemHeaderView","elemToolbar","runPreview","codeElem","createCodeRst","lines","setCodeLayout","elemFixbar","copyElem","reloadCode","obverse","codeRender","createCode","line","codeParse","hasDataClass","onCopy","elemViewHas","elemTabHas","elemPreviewViewHas","FILTER_VALUE","elemTabView","elemPreviewView","classNameFull","classNameRestore","htmlElem","ELEM_SCROLLBAR_HIDE","oi","parameters","toolsEvent","addTools","viso","thisItemBody","srcdoc","previewStyle","elemItemBody","codeStyle","multiLine"],"mappings":"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","file":"layui.js","sourcesContent":["/**\r\n * Layui\r\n * Classic modular front-end UI library\r\n * MIT Licensed\r\n */\r\n\r\n;!function(win){\r\n \"use strict\";\r\n\r\n var doc = win.document;\r\n var config = {\r\n modules: {}, // 模块物理路径\r\n status: {}, // 模块加载状态\r\n timeout: 10, // 符合规范的模块请求最长等待秒数\r\n event: {} // 模块自定义事件\r\n };\r\n\r\n var Layui = function(){\r\n this.v = '2.9.11'; // Layui 版本号\r\n };\r\n\r\n // 识别预先可能定义的指定全局对象\r\n var GLOBAL = win.LAYUI_GLOBAL || {};\r\n\r\n // 获取 layui 所在目录\r\n var getPath = function(){\r\n var jsPath = doc.currentScript ? doc.currentScript.src : function(){\r\n var js = doc.scripts;\r\n var last = js.length - 1;\r\n var src;\r\n for(var i = last; i > 0; i--){\r\n if(js[i].readyState === 'interactive'){\r\n src = js[i].src;\r\n break;\r\n }\r\n }\r\n return src || js[last].src;\r\n }();\r\n\r\n return config.dir = GLOBAL.dir || jsPath.substring(0, jsPath.lastIndexOf('/') + 1);\r\n }();\r\n\r\n // 异常提示\r\n var error = function(msg, type){\r\n type = type || 'log';\r\n win.console && console[type] && console[type]('layui error hint: ' + msg);\r\n };\r\n\r\n var isOpera = typeof opera !== 'undefined' && opera.toString() === '[object Opera]';\r\n\r\n // 内置模块\r\n var modules = config.builtin = {\r\n lay: 'lay', // 基础 DOM 操作\r\n layer: 'layer', // 弹层\r\n laydate: 'laydate', // 日期\r\n laypage: 'laypage', // 分页\r\n laytpl: 'laytpl', // 模板引擎\r\n form: 'form', // 表单集\r\n upload: 'upload', // 上传\r\n dropdown: 'dropdown', // 下拉菜单\r\n transfer: 'transfer', // 穿梭框\r\n tree: 'tree', // 树结构\r\n table: 'table', // 表格\r\n treeTable: 'treeTable', // 树表\r\n element: 'element', // 常用元素操作\r\n rate: 'rate', // 评分组件\r\n colorpicker: 'colorpicker', // 颜色选择器\r\n slider: 'slider', // 滑块\r\n carousel: 'carousel', // 轮播\r\n flow: 'flow', // 流加载\r\n util: 'util', // 工具块\r\n code: 'code', // 代码修饰器\r\n jquery: 'jquery', // DOM 库(第三方)\r\n\r\n all: 'all',\r\n 'layui.all': 'layui.all' // 聚合标识(功能性的,非真实模块)\r\n };\r\n\r\n // 记录基础数据\r\n Layui.prototype.cache = config;\r\n\r\n // 定义模块\r\n Layui.prototype.define = function(deps, factory){\r\n var that = this;\r\n var type = typeof deps === 'function';\r\n var callback = function(){\r\n var setApp = function(app, exports){\r\n layui[app] = exports;\r\n config.status[app] = true;\r\n };\r\n typeof factory === 'function' && factory(function(app, exports){\r\n setApp(app, exports);\r\n config.callback[app] = function(){\r\n factory(setApp);\r\n }\r\n });\r\n return this;\r\n };\r\n\r\n type && (\r\n factory = deps,\r\n deps = []\r\n );\r\n\r\n that.use(deps, callback, null, 'define');\r\n return that;\r\n };\r\n\r\n // 使用特定模块\r\n Layui.prototype.use = function(apps, callback, exports, from){\r\n var that = this;\r\n var dir = config.dir = config.dir ? config.dir : getPath;\r\n var head = doc.getElementsByTagName('head')[0];\r\n\r\n apps = function(){\r\n if(typeof apps === 'string'){\r\n return [apps];\r\n }\r\n // 当第一个参数为 function 时,则自动加载所有内置模块,且执行的回调即为该 function 参数;\r\n else if(typeof apps === 'function'){\r\n callback = apps;\r\n return ['all'];\r\n }\r\n return apps;\r\n }();\r\n\r\n // 如果页面已经存在 jQuery 1.7+ 库且所定义的模块依赖 jQuery,则不加载内部 jquery 模块\r\n if(win.jQuery && jQuery.fn.on){\r\n that.each(apps, function(index, item){\r\n if(item === 'jquery'){\r\n apps.splice(index, 1);\r\n }\r\n });\r\n layui.jquery = layui.$ = jQuery;\r\n }\r\n\r\n var item = apps[0];\r\n var timeout = 0;\r\n\r\n exports = exports || [];\r\n\r\n // 静态资源host\r\n config.host = config.host || (dir.match(/\\/\\/([\\s\\S]+?)\\//)||['//'+ location.host +'/'])[0];\r\n\r\n // 加载完毕\r\n function onScriptLoad(e, url){\r\n var readyRegExp = navigator.platform === 'PLaySTATION 3' ? /^complete$/ : /^(complete|loaded)$/\r\n if (e.type === 'load' || (readyRegExp.test((e.currentTarget || e.srcElement).readyState))) {\r\n config.modules[item] = url;\r\n head.removeChild(node);\r\n (function poll() {\r\n if(++timeout > config.timeout * 1000 / 4){\r\n return error(item + ' is not a valid module', 'error');\r\n }\r\n config.status[item] ? onCallback() : setTimeout(poll, 4);\r\n }());\r\n }\r\n }\r\n\r\n // 回调\r\n function onCallback(){\r\n exports.push(layui[item]);\r\n apps.length > 1 ?\r\n that.use(apps.slice(1), callback, exports, from)\r\n : ( typeof callback === 'function' && function(){\r\n // 保证文档加载完毕再执行回调\r\n if(layui.jquery && typeof layui.jquery === 'function' && from !== 'define'){\r\n return layui.jquery(function(){\r\n callback.apply(layui, exports);\r\n });\r\n }\r\n callback.apply(layui, exports);\r\n }() );\r\n }\r\n\r\n // 如果引入了聚合板,内置的模块则不必重复加载\r\n if( apps.length === 0 || (layui['layui.all'] && modules[item]) ){\r\n return onCallback(), that;\r\n }\r\n\r\n /*\r\n * 获取加载的模块 URL\r\n * 如果是内置模块,则按照 dir 参数拼接模块路径\r\n * 如果是扩展模块,则判断模块路径值是否为 {/} 开头,\r\n * 如果路径值是 {/} 开头,则模块路径即为后面紧跟的字符。\r\n * 否则,则按照 base 参数拼接模块路径\r\n */\r\n\r\n var url = ( modules[item] ? (dir + 'modules/')\r\n : (/^\\{\\/\\}/.test(that.modules[item]) ? '' : (config.base || ''))\r\n ) + (that.modules[item] || item) + '.js';\r\n url = url.replace(/^\\{\\/\\}/, '');\r\n\r\n // 如果扩展模块(即:非内置模块)对象已经存在,则不必再加载\r\n if(!config.modules[item] && layui[item]){\r\n config.modules[item] = url; // 并记录起该扩展模块的 url\r\n }\r\n\r\n // 首次加载模块\r\n if(!config.modules[item]){\r\n var node = doc.createElement('script');\r\n\r\n node.async = true;\r\n node.charset = 'utf-8';\r\n node.src = url + function(){\r\n var version = config.version === true\r\n ? (config.v || (new Date()).getTime())\r\n : (config.version||'');\r\n return version ? ('?v=' + version) : '';\r\n }();\r\n\r\n head.appendChild(node);\r\n\r\n if(node.attachEvent && !(node.attachEvent.toString && node.attachEvent.toString().indexOf('[native code') < 0) && !isOpera){\r\n node.attachEvent('onreadystatechange', function(e){\r\n onScriptLoad(e, url);\r\n });\r\n } else {\r\n node.addEventListener('load', function(e){\r\n onScriptLoad(e, url);\r\n }, false);\r\n }\r\n\r\n config.modules[item] = url;\r\n } else { // 缓存\r\n (function poll() {\r\n if(++timeout > config.timeout * 1000 / 4){\r\n return error(item + ' is not a valid module', 'error');\r\n }\r\n (typeof config.modules[item] === 'string' && config.status[item])\r\n ? onCallback()\r\n : setTimeout(poll, 4);\r\n }());\r\n }\r\n\r\n return that;\r\n };\r\n\r\n // 弃用原有的指定模块,以便重新扩展新的同名模块\r\n Layui.prototype.disuse = function(apps){\r\n var that = this;\r\n apps = that.isArray(apps) ? apps : [apps];\r\n that.each(apps, function (index, item) {\r\n if (!config.status[item]) {\r\n // return error('module ' + item + ' is not exist');\r\n }\r\n delete that[item];\r\n delete modules[item];\r\n delete that.modules[item];\r\n delete config.status[item];\r\n delete config.modules[item];\r\n });\r\n return that;\r\n };\r\n\r\n // 获取节点的 style 属性值\r\n Layui.prototype.getStyle = function(node, name){\r\n var style = node.currentStyle ? node.currentStyle : win.getComputedStyle(node, null);\r\n return style[style.getPropertyValue ? 'getPropertyValue' : 'getAttribute'](name);\r\n };\r\n\r\n // css 外部加载器\r\n Layui.prototype.link = function(href, fn, cssname){\r\n var that = this;\r\n var head = doc.getElementsByTagName('head')[0];\r\n var link = doc.createElement('link');\r\n\r\n if(typeof fn === 'string') cssname = fn;\r\n\r\n var app = (cssname || href).replace(/\\.|\\//g, '');\r\n var id = 'layuicss-'+ app;\r\n var STAUTS_NAME = 'creating';\r\n var timeout = 0;\r\n\r\n link.href = href + (config.debug ? '?v='+new Date().getTime() : '');\r\n link.rel = 'stylesheet';\r\n link.id = id;\r\n link.media = 'all';\r\n\r\n if(!doc.getElementById(id)){\r\n head.appendChild(link);\r\n }\r\n\r\n if(typeof fn !== 'function') return that;\r\n\r\n // 轮询 css 是否加载完毕\r\n (function poll(status) {\r\n var delay = 100;\r\n var getLinkElem = doc.getElementById(id); // 获取动态插入的 link 元素\r\n\r\n // 如果轮询超过指定秒数,则视为请求文件失败或 css 文件不符合规范\r\n if(++timeout > config.timeout * 1000 / delay){\r\n return error(href + ' timeout');\r\n }\r\n\r\n // css 加载就绪\r\n if(parseInt(that.getStyle(getLinkElem, 'width')) === 1989){\r\n // 如果参数来自于初始轮询(即未加载就绪时的),则移除 link 标签状态\r\n if(status === STAUTS_NAME) getLinkElem.removeAttribute('lay-status');\r\n // 如果 link 标签的状态仍为「创建中」,则继续进入轮询,直到状态改变,则执行回调\r\n getLinkElem.getAttribute('lay-status') === STAUTS_NAME ? setTimeout(poll, delay) : fn();\r\n } else {\r\n getLinkElem.setAttribute('lay-status', STAUTS_NAME);\r\n setTimeout(function(){\r\n poll(STAUTS_NAME);\r\n }, delay);\r\n }\r\n }());\r\n\r\n // 轮询css是否加载完毕\r\n /*\r\n (function poll() {\r\n if(++timeout > config.timeout * 1000 / 100){\r\n return error(href + ' timeout');\r\n };\r\n parseInt(that.getStyle(doc.getElementById(id), 'width')) === 1989 ? function(){\r\n fn();\r\n }() : setTimeout(poll, 100);\r\n }());\r\n */\r\n\r\n return that;\r\n };\r\n\r\n // css 内部加载器\r\n Layui.prototype.addcss = function(firename, fn, cssname){\r\n return layui.link(config.dir + 'css/' + firename, fn, cssname);\r\n };\r\n\r\n // 存储模块的回调\r\n config.callback = {};\r\n\r\n // 重新执行模块的工厂函数\r\n Layui.prototype.factory = function(modName){\r\n if(layui[modName]){\r\n return typeof config.callback[modName] === 'function'\r\n ? config.callback[modName]\r\n : null;\r\n }\r\n };\r\n\r\n // 图片预加载\r\n Layui.prototype.img = function(url, callback, error) {\r\n var img = new Image();\r\n img.src = url;\r\n if(img.complete){\r\n return callback(img);\r\n }\r\n img.onload = function(){\r\n img.onload = null;\r\n typeof callback === 'function' && callback(img);\r\n };\r\n img.onerror = function(e){\r\n img.onerror = null;\r\n typeof error === 'function' && error(e);\r\n };\r\n };\r\n\r\n // 全局配置\r\n Layui.prototype.config = function(options){\r\n options = options || {};\r\n for(var key in options){\r\n config[key] = options[key];\r\n }\r\n return this;\r\n };\r\n\r\n // 记录全部模块\r\n Layui.prototype.modules = function(){\r\n var clone = {};\r\n for(var o in modules){\r\n clone[o] = modules[o];\r\n }\r\n return clone;\r\n }();\r\n\r\n // 拓展模块\r\n Layui.prototype.extend = function(options){\r\n var that = this;\r\n\r\n // 验证模块是否被占用\r\n options = options || {};\r\n for(var o in options){\r\n if(that[o] || that.modules[o]){\r\n error(o+ ' Module already exists', 'error');\r\n } else {\r\n that.modules[o] = options[o];\r\n }\r\n }\r\n\r\n return that;\r\n };\r\n\r\n // location.hash 路由解析\r\n Layui.prototype.router = Layui.prototype.hash = function(hash){\r\n var that = this;\r\n var hash = hash || location.hash;\r\n var data = {\r\n path: [],\r\n search: {},\r\n hash: (hash.match(/[^#](#.*$)/) || [])[1] || ''\r\n };\r\n\r\n if(!/^#\\//.test(hash)) return data; // 禁止非路由规范\r\n\r\n hash = hash.replace(/^#\\//, '');\r\n data.href = '/' + hash;\r\n hash = hash.replace(/([^#])(#.*$)/, '$1').split('/') || [];\r\n\r\n // 提取 Hash 结构\r\n that.each(hash, function(index, item){\r\n /^\\w+=/.test(item) ? function(){\r\n item = item.split('=');\r\n data.search[item[0]] = item[1];\r\n }() : data.path.push(item);\r\n });\r\n\r\n return data;\r\n };\r\n\r\n // URL 解析\r\n Layui.prototype.url = function(href){\r\n var that = this;\r\n var data = {\r\n // 提取 url 路径\r\n pathname: function(){\r\n var pathname = href\r\n ? function(){\r\n var str = (href.match(/\\.[^.]+?\\/.+/) || [])[0] || '';\r\n return str.replace(/^[^\\/]+/, '').replace(/\\?.+/, '');\r\n }()\r\n : location.pathname;\r\n return pathname.replace(/^\\//, '').split('/');\r\n }(),\r\n\r\n // 提取 url 参数\r\n search: function(){\r\n var obj = {};\r\n var search = (href\r\n ? function(){\r\n var str = (href.match(/\\?.+/) || [])[0] || '';\r\n return str.replace(/\\#.+/, '');\r\n }()\r\n : location.search\r\n ).replace(/^\\?+/, '').split('&'); // 去除 ?,按 & 分割参数\r\n\r\n // 遍历分割后的参数\r\n that.each(search, function(index, item){\r\n var _index = item.indexOf('=')\r\n ,key = function(){ // 提取 key\r\n if(_index < 0){\r\n return item.substr(0, item.length);\r\n } else if(_index === 0){\r\n return false;\r\n } else {\r\n return item.substr(0, _index);\r\n }\r\n }();\r\n // 提取 value\r\n if(key){\r\n obj[key] = _index > 0 ? item.substr(_index + 1) : null;\r\n }\r\n });\r\n\r\n return obj;\r\n }(),\r\n\r\n // 提取 Hash\r\n hash: that.router(function(){\r\n return href\r\n ? ((href.match(/#.+/) || [])[0] || '/')\r\n : location.hash;\r\n }())\r\n };\r\n\r\n return data;\r\n };\r\n\r\n // 本地持久存储\r\n Layui.prototype.data = function(table, settings, storage){\r\n table = table || 'layui';\r\n storage = storage || localStorage;\r\n\r\n if(!win.JSON || !win.JSON.parse) return;\r\n\r\n // 如果 settings 为 null,则删除表\r\n if(settings === null){\r\n return delete storage[table];\r\n }\r\n\r\n settings = typeof settings === 'object'\r\n ? settings\r\n : {key: settings};\r\n\r\n try {\r\n var data = JSON.parse(storage[table]);\r\n } catch(e) {\r\n var data = {};\r\n }\r\n\r\n if('value' in settings) data[settings.key] = settings.value;\r\n if(settings.remove) delete data[settings.key];\r\n storage[table] = JSON.stringify(data);\r\n\r\n return settings.key ? data[settings.key] : data;\r\n };\r\n\r\n // 本地临时存储\r\n Layui.prototype.sessionData = function(table, settings){\r\n return this.data(table, settings, sessionStorage);\r\n }\r\n\r\n // 设备信息\r\n Layui.prototype.device = function(key){\r\n var agent = navigator.userAgent.toLowerCase();\r\n\r\n // 获取版本号\r\n var getVersion = function(label){\r\n var exp = new RegExp(label + '/([^\\\\s\\\\_\\\\-]+)');\r\n label = (agent.match(exp)||[])[1];\r\n return label || false;\r\n };\r\n\r\n // 返回结果集\r\n var result = {\r\n os: function(){ // 底层操作系统\r\n if(/windows/.test(agent)){\r\n return 'windows';\r\n } else if(/linux/.test(agent)){\r\n return 'linux';\r\n } else if(/iphone|ipod|ipad|ios/.test(agent)){\r\n return 'ios';\r\n } else if(/mac/.test(agent)){\r\n return 'mac';\r\n }\r\n }(),\r\n ie: function(){ // ie 版本\r\n return (!!win.ActiveXObject || \"ActiveXObject\" in win) ? (\r\n (agent.match(/msie\\s(\\d+)/) || [])[1] || '11' // 由于 ie11 并没有 msie 的标识\r\n ) : false;\r\n }(),\r\n weixin: getVersion('micromessenger') // 是否微信\r\n };\r\n\r\n // 任意的 key\r\n if(key && !result[key]){\r\n result[key] = getVersion(key);\r\n }\r\n\r\n // 移动设备\r\n result.android = /android/.test(agent);\r\n result.ios = result.os === 'ios';\r\n result.mobile = (result.android || result.ios);\r\n\r\n return result;\r\n };\r\n\r\n // 提示\r\n Layui.prototype.hint = function(){\r\n return {\r\n error: error\r\n };\r\n };\r\n\r\n // typeof 类型细分 -> string/number/boolean/undefined/null、object/array/function/…\r\n Layui.prototype._typeof = Layui.prototype.type = function(operand){\r\n if(operand === null) return String(operand);\r\n\r\n // 细分引用类型\r\n return (typeof operand === 'object' || typeof operand === 'function') ? function(){\r\n var type = Object.prototype.toString.call(operand).match(/\\s(.+)\\]$/) || []; // 匹配类型字符\r\n var classType = 'Function|Array|Date|RegExp|Object|Error|Symbol'; // 常见类型字符\r\n\r\n type = type[1] || 'Object';\r\n\r\n // 除匹配到的类型外,其他对象均返回 object\r\n return new RegExp('\\\\b('+ classType + ')\\\\b').test(type)\r\n ? type.toLowerCase()\r\n : 'object';\r\n }() : typeof operand;\r\n };\r\n\r\n // 对象是否具备数组结构(此处为兼容 jQuery 对象)\r\n Layui.prototype._isArray = Layui.prototype.isArray = function(obj){\r\n var that = this;\r\n var len;\r\n var type = that.type(obj);\r\n\r\n if(!obj || (typeof obj !== 'object') || obj === win) return false;\r\n\r\n len = 'length' in obj && obj.length; // 兼容 ie\r\n return type === 'array' || len === 0 || (\r\n typeof len === 'number' && len > 0 && (len - 1) in obj // 兼容 jQuery 对象\r\n );\r\n };\r\n\r\n // 遍历\r\n Layui.prototype.each = function(obj, fn){\r\n var key;\r\n var that = this;\r\n var callFn = function(key, obj){ // 回调\r\n return fn.call(obj[key], key, obj[key])\r\n };\r\n\r\n if(typeof fn !== 'function') return that;\r\n obj = obj || [];\r\n\r\n // 优先处理数组结构\r\n if(that.isArray(obj)){\r\n for(key = 0; key < obj.length; key++){\r\n if(callFn(key, obj)) break;\r\n }\r\n } else {\r\n for(key in obj){\r\n if(callFn(key, obj)) break;\r\n }\r\n }\r\n\r\n return that;\r\n };\r\n\r\n // 将数组中的成员对象按照某个 key 的 value 值进行排序\r\n Layui.prototype.sort = function(arr, key, desc, notClone){\r\n var that = this;\r\n var clone = notClone ? (arr || []) : JSON.parse(\r\n JSON.stringify(arr || [])\r\n );\r\n\r\n // 若未传入 key,则直接返回原对象\r\n if(that.type(arr) === 'object' && !key){\r\n return clone;\r\n } else if(typeof arr !== 'object'){ // 若 arr 非对象\r\n return [clone];\r\n }\r\n\r\n // 开始排序\r\n clone.sort(function(o1, o2){\r\n var v1 = o1[key];\r\n var v2 = o2[key];\r\n\r\n /*\r\n * 特殊数据\r\n * 若比较的成员均非对象\r\n */\r\n\r\n // 若比较的成员均为数字\r\n if(!isNaN(o1) && !isNaN(o2)) return o1 - o2;\r\n // 若比较的成员只存在某一个非对象\r\n if(!isNaN(o1) && isNaN(o2)){\r\n if(key && typeof o2 === 'object'){\r\n v1 = o1;\r\n } else {\r\n return -1;\r\n }\r\n } else if (isNaN(o1) && !isNaN(o2)){\r\n if(key && typeof o1 === 'object'){\r\n v2 = o2;\r\n } else {\r\n return 1;\r\n }\r\n }\r\n\r\n /*\r\n * 正常数据\r\n * 即成员均为对象,也传入了对比依据: key\r\n * 若 value 为数字,按「大小」排序;若 value 非数字,则按「字典序」排序\r\n */\r\n\r\n // value 是否为数字\r\n var isNum = [!isNaN(v1), !isNaN(v2)];\r\n\r\n // 若为数字比较\r\n if(isNum[0] && isNum[1]){\r\n if(v1 && (!v2 && v2 !== 0)){ // 数字 vs 空\r\n return 1;\r\n } else if((!v1 && v1 !== 0) && v2){ // 空 vs 数字\r\n return -1;\r\n } else { // 数字 vs 数字\r\n return v1 - v2;\r\n }\r\n }\r\n\r\n /**\r\n * 字典序排序\r\n */\r\n\r\n // 若为非数字比较\r\n if(!isNum[0] && !isNum[1]){\r\n // 字典序比较\r\n if(v1 > v2){\r\n return 1;\r\n } else if (v1 < v2) {\r\n return -1;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n\r\n // 若为混合比较\r\n if(isNum[0] || !isNum[1]){ // 数字 vs 非数字\r\n return -1;\r\n } else if(!isNum[0] || isNum[1]) { // 非数字 vs 数字\r\n return 1;\r\n }\r\n\r\n });\r\n\r\n desc && clone.reverse(); // 倒序\r\n return clone;\r\n };\r\n\r\n // 阻止事件冒泡\r\n Layui.prototype.stope = function(thisEvent){\r\n thisEvent = thisEvent || win.event;\r\n try { thisEvent.stopPropagation() } catch(e){\r\n thisEvent.cancelBubble = true;\r\n }\r\n };\r\n\r\n // 字符常理\r\n var EV_REMOVE = 'LAYUI-EVENT-REMOVE';\r\n\r\n // 自定义模块事件\r\n Layui.prototype.onevent = function(modName, events, callback){\r\n if(typeof modName !== 'string'\r\n || typeof callback !== 'function') return this;\r\n\r\n return Layui.event(modName, events, null, callback);\r\n };\r\n\r\n // 执行自定义模块事件\r\n Layui.prototype.event = Layui.event = function(modName, events, params, fn){\r\n var that = this;\r\n var result = null;\r\n var filter = (events || '').match(/\\((.*)\\)$/)||[]; // 提取事件过滤器字符结构,如:select(xxx)\r\n var eventName = (modName + '.'+ events).replace(filter[0], ''); // 获取事件名称,如:form.select\r\n var filterName = filter[1] || ''; // 获取过滤器名称,,如:xxx\r\n var callback = function(_, item){\r\n var res = item && item.call(that, params);\r\n res === false && result === null && (result = false);\r\n };\r\n\r\n // 如果参数传入特定字符,则执行移除事件\r\n if(params === EV_REMOVE){\r\n delete (that.cache.event[eventName] || {})[filterName];\r\n return that;\r\n }\r\n\r\n // 添加事件\r\n if(fn){\r\n config.event[eventName] = config.event[eventName] || {};\r\n\r\n if (filterName) {\r\n // 带filter不支持重复事件\r\n config.event[eventName][filterName] = [fn];\r\n } else {\r\n // 不带filter处理的是所有的同类事件,应该支持重复事件\r\n config.event[eventName][filterName] = config.event[eventName][filterName] || [];\r\n config.event[eventName][filterName].push(fn);\r\n }\r\n return this;\r\n }\r\n\r\n // 执行事件回调\r\n layui.each(config.event[eventName], function(key, item){\r\n // 执行当前模块的全部事件\r\n if(filterName === '{*}'){\r\n layui.each(item, callback);\r\n return;\r\n }\r\n\r\n // 执行指定事件\r\n key === '' && layui.each(item, callback);\r\n (filterName && key === filterName) && layui.each(item, callback);\r\n });\r\n\r\n return result;\r\n };\r\n\r\n // 新增模块事件\r\n Layui.prototype.on = function(events, modName, callback){\r\n var that = this;\r\n return that.onevent.call(that, modName, events, callback);\r\n }\r\n\r\n // 移除模块事件\r\n Layui.prototype.off = function(events, modName){\r\n var that = this;\r\n return that.event.call(that, modName, events, EV_REMOVE);\r\n };\r\n\r\n // 防抖\r\n Layui.prototype.debounce = function (func, wait) {\r\n var timeout;\r\n return function () {\r\n var context = this;\r\n var args = arguments;\r\n clearTimeout(timeout);\r\n timeout = setTimeout(function () {\r\n func.apply(context, args);\r\n }, wait);\r\n }\r\n };\r\n\r\n // 节流\r\n Layui.prototype.throttle = function (func, wait) {\r\n var cooldown = false;\r\n return function () {\r\n var context = this;\r\n var args = arguments;\r\n if (!cooldown) {\r\n func.apply(context, args);\r\n cooldown = true;\r\n setTimeout(function () {\r\n cooldown = false;\r\n }, wait);\r\n }\r\n }\r\n };\r\n\r\n // exports layui\r\n win.layui = new Layui();\r\n\r\n}(window); // gulp build: layui-footer\r\n\r\n","/**\r\n * 用于打包聚合版,该文件不会存在于构建后的目录 \r\n */\r\n \r\nlayui.define(function(exports){\r\n var cache = layui.cache;\r\n layui.config({\r\n dir: cache.dir.replace(/lay\\/dest\\/$/, '')\r\n });\r\n exports('layui.all', layui.v);\r\n});","\r\n/** lay 基础模块 | MIT Licensed */\r\n\r\n;!function(window){ // gulp build: lay-header\r\n \"use strict\";\r\n\r\n var MOD_NAME = 'lay'; // 模块名\r\n var document = window.document;\r\n\r\n /**\r\n * 元素查找\r\n * @param {string | HTMLElement | JQuery} selector\r\n */\r\n var lay = function(selector){\r\n return new Class(selector);\r\n };\r\n\r\n // 构造器\r\n var Class = function(selector){\r\n var that = this;\r\n var elem = typeof selector === 'object' ? function(){\r\n // 仅适配简单元素对象\r\n return layui.isArray(selector) ? selector : [selector];\r\n }() : (\r\n this.selector = selector,\r\n document.querySelectorAll(selector || null)\r\n );\r\n\r\n lay.each(elem, function(index, item){\r\n that.push(elem[index]);\r\n });\r\n };\r\n\r\n /*\r\n * API 兼容\r\n */\r\n Array.prototype.indexOf = Array.prototype.indexOf || function(searchElement, fromIndex) {\r\n var rst = -1;\r\n fromIndex = fromIndex || 0;\r\n layui.each(this, function(index, val){\r\n if (searchElement === val && index >= fromIndex) {\r\n rst = index;\r\n return !0;\r\n }\r\n });\r\n return rst;\r\n };\r\n\r\n /*\r\n lay 对象操作\r\n */\r\n\r\n Class.fn = Class.prototype = [];\r\n Class.fn.constructor = Class;\r\n\r\n /**\r\n * 将两个或多个对象的内容深度合并到第一个对象中\r\n * @callback ExtendFunc\r\n * @param {*} target - 一个对象\r\n * @param {...*} objectN - 包含额外的属性合并到第一个参数\r\n * @returns {*} 返回合并后的对象\r\n */\r\n /** @type ExtendFunc*/\r\n lay.extend = function(){\r\n var ai = 1;\r\n var length;\r\n var args = arguments;\r\n var clone = function(target, obj){\r\n target = target || (layui.type(obj) === 'array' ? [] : {}); // 目标对象\r\n for(var i in obj){\r\n // 若值为普通对象,则进入递归,继续深度合并\r\n target[i] = (obj[i] && obj[i].constructor === Object)\r\n ? clone(target[i], obj[i])\r\n : obj[i];\r\n }\r\n return target;\r\n };\r\n\r\n args[0] = typeof args[0] === 'object' ? args[0] : {};\r\n length = args.length\r\n\r\n for(; ai < length; ai++){\r\n if(typeof args[ai] === 'object'){\r\n clone(args[0], args[ai]);\r\n }\r\n }\r\n return args[0];\r\n };\r\n\r\n /**\r\n * IE 版本\r\n * @type {string | boolean} - 如果是 IE 返回版本字符串,否则返回 false\r\n */\r\n lay.ie = function(){\r\n var agent = navigator.userAgent.toLowerCase();\r\n return (!!window.ActiveXObject || \"ActiveXObject\" in window) ? (\r\n (agent.match(/msie\\s(\\d+)/) || [])[1] || '11' // 由于 ie11 并没有 msie 的标识\r\n ) : false;\r\n }();\r\n\r\n\r\n /**\r\n * 获取 layui 常见方法,以便用于组件单独版\r\n */\r\n\r\n lay.layui = layui || {};\r\n lay.getPath = layui.cache.dir; // 获取当前 JS 所在目录\r\n lay.stope = layui.stope; // 中止冒泡\r\n lay.each = function(){ // 遍历\r\n layui.each.apply(layui, arguments);\r\n return this;\r\n };\r\n\r\n\r\n /**\r\n * 数字前置补零\r\n * @param {number | string} num - 原始数字\r\n * @param {number} [length=2] - 数字长度,如果原始数字长度小于 length,则前面补零\r\n * @returns {string} 返回补 0 后的数字\r\n * @example\r\n * ```js\r\n * lay.digit(6, 2); // \"06\"\r\n * lay.digit('7', 3); // \"007\"\r\n * ```\r\n */\r\n lay.digit = function(num, length){\r\n if(!(typeof num === 'string' || typeof num === 'number')) return '';\r\n\r\n var str = '';\r\n num = String(num);\r\n length = length || 2;\r\n for(var i = num.length; i < length; i++){\r\n str += '0';\r\n }\r\n return num < Math.pow(10, length) ? str + num : num;\r\n };\r\n\r\n /**\r\n * 创建元素\r\n * @param {string} elemName - 元素的标签名\r\n * @param {Object.} [attr] - 添加到元素上的属性\r\n * @returns {HTMLElement} 返回创建的 HTML 元素\r\n * @example\r\n * ```js\r\n * lay.elem('div', {id: 'test'}) //
                    \r\n * ```\r\n */\r\n lay.elem = function(elemName, attr){\r\n var elem = document.createElement(elemName);\r\n lay.each(attr || {}, function(key, value){\r\n elem.setAttribute(key, value);\r\n });\r\n return elem;\r\n };\r\n\r\n /**\r\n * 当前页面是否存在滚动条\r\n * @returns {boolean} 是否存在滚动条\r\n * @example\r\n * ```\r\n * lay.hasScrollbar() // true 或 false\r\n * ```\r\n */\r\n lay.hasScrollbar = function(){\r\n return document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight);\r\n };\r\n\r\n /**\r\n * 获取 style rules\r\n * @param {HTMLStyleElement} style - HTMLStyle 元素\r\n * @param {(ruleItem: CSSStyleRule, index: number) => boolean} [callback] - 用来返回 style 元素中的每个 `style rule` 的函数,返回 true 终止遍历\r\n * @returns {CSSRuleList } 返回 `style rules`\r\n * @example\r\n * ```\r\n * \r\n *\r\n * lay.getStyleRules($('#test')[0], function(rule, index){\r\n * if(rule.selectorText === '.lay-card'){\r\n * console.log(index, rule.cssText) // 0 '.lay-card{color: #000}'\r\n * rule.style.color = '#EEE';\r\n * return true; // 终止遍历\r\n * }\r\n * }) // RuleList\r\n * ```\r\n */\r\n lay.getStyleRules = function(style, callback) {\r\n if (!style) return;\r\n\r\n var sheet = style.sheet || style.styleSheet || {};\r\n var rules = sheet.cssRules || sheet.rules;\r\n\r\n if (typeof callback === 'function') {\r\n layui.each(rules, function(i, item){\r\n if (callback(item, i)) return true;\r\n });\r\n }\r\n\r\n return rules;\r\n };\r\n\r\n /**\r\n * 创建 style 样式\r\n * @param {Object} options - 可配置的选项\r\n * @param {string | HTMLElement | JQuery} [options.target] - 目标容器,指定后会将样式追加到目标容器\r\n * @param {string} [options.id] - 样式元素的 id,默认自增\r\n * @param {string} options.text - 样式内容\r\n * @returns {HTMLStyleElement} 返回创建的样式元素\r\n * @example\r\n * ```html\r\n *
                    \r\n * \r\n * \r\n *
                    \r\n *\r\n * lay.style({\r\n * target: '#targetEl',\r\n * text: '.card{color: #000}'\r\n * }) // \r\n * ```\r\n */\r\n lay.style = function(options){\r\n options = options || {};\r\n\r\n var style = lay.elem('style');\r\n var styleText = options.text || '';\r\n var target = options.target;\r\n\r\n if (!styleText) return;\r\n\r\n // 添加样式\r\n if ('styleSheet' in style) {\r\n style.setAttribute('type', 'text/css');\r\n style.styleSheet.cssText = styleText;\r\n } else {\r\n style.innerHTML = styleText;\r\n }\r\n\r\n // ID\r\n style.id = 'LAY-STYLE-'+ (options.id || function(index) {\r\n lay.style.index++;\r\n return 'DF-'+ index;\r\n }(lay.style.index || 0));\r\n\r\n // 是否向目标容器中追加 style 元素\r\n if (target) {\r\n var styleElem = lay(target).find('#'+ style.id);\r\n styleElem[0] && styleElem.remove();\r\n lay(target).append(style);\r\n }\r\n\r\n return style;\r\n };\r\n\r\n /**\r\n * 将元素定位到指定目标元素附近\r\n * @param {HTMLElement} target - 目标元素\r\n * @param {HTMLElement} elem - 定位元素\r\n * @param {Object} [opts] - 可配置的选项\r\n * @param {'absolute' | 'fixed'} [opts.position] - 元素的定位类型\r\n * @param {'left' | 'right'} [opts.clickType=\"left\"] - 点击类型,默认为 'left',如果 {@link target} 是 document 或 body 元素,则为 'right'\r\n * @param {'left' | 'right' | 'center'} [opts.align=\"left\"] - 对齐方式\r\n * @param {boolean} [opts.allowBottomOut=false] - 顶部没有足够区域显示时,是否允许底部溢出\r\n * @param {string | number} [opts.margin=5] - 边距\r\n * @param {Event} [opts.e] - 事件对象,仅右键生效\r\n * @param {boolean} [opts.SYSTEM_RELOAD] - 是否重载,用于出现滚动条时重新计算位置\r\n * @example\r\n * ```js\r\n * \r\n *
                      \r\n *
                    • 菜单1
                    • \r\n *
                    • 菜单2
                    • \r\n *
                    \r\n *\r\n * // 下拉菜单将被定位到按钮附近\r\n * lay.position(\r\n * $('#targetEl')[0],\r\n * $('#contentEl')[0],\r\n * {\r\n * position: 'fixed',\r\n * align: 'center'\r\n * }\r\n * )\r\n * ```\r\n */\r\n lay.position = function(target, elem, opts){\r\n if(!elem) return;\r\n opts = opts || {};\r\n\r\n // 如果绑定的是 document 或 body 元素,则直接获取鼠标坐标\r\n if(target === document || target === lay('body')[0]){\r\n opts.clickType = 'right';\r\n }\r\n\r\n // 绑定绑定元素的坐标\r\n var rect = opts.clickType === 'right' ? function(){\r\n var e = opts.e || window.event || {};\r\n return {\r\n left: e.clientX,\r\n top: e.clientY,\r\n right: e.clientX,\r\n bottom: e.clientY\r\n }\r\n }() : target.getBoundingClientRect();\r\n var elemWidth = elem.offsetWidth; // 控件的宽度\r\n var elemHeight = elem.offsetHeight; // 控件的高度\r\n\r\n // 滚动条高度\r\n var scrollArea = function(type){\r\n type = type ? 'scrollLeft' : 'scrollTop';\r\n return document.body[type] | document.documentElement[type];\r\n };\r\n\r\n // 窗口宽高\r\n var winArea = function(type){\r\n return document.documentElement[type ? 'clientWidth' : 'clientHeight']\r\n };\r\n var margin = 'margin' in opts ? opts.margin : 5;\r\n var left = rect.left;\r\n var top = rect.bottom;\r\n\r\n // 相对元素居中\r\n if(opts.align === 'center'){\r\n left = left - (elemWidth - target.offsetWidth) / 2;\r\n } else if(opts.align === 'right'){\r\n left = left - elemWidth + target.offsetWidth;\r\n }\r\n\r\n // 判断右侧是否超出边界\r\n if(left + elemWidth + margin > winArea('width')){\r\n left = winArea('width') - elemWidth - margin; // 如果超出右侧,则将面板向右靠齐\r\n }\r\n // 左侧是否超出边界\r\n if(left < margin) left = margin;\r\n\r\n\r\n // 判断底部和顶部是否超出边界\r\n if(rect.bottom + elemHeight + margin > winArea()){ // 底部超出边界\r\n // 优先判断顶部是否有足够区域显示完全,且底部不能超出边界\r\n if(rect.top > elemHeight + margin && rect.top <= winArea() ){\r\n top = rect.top - elemHeight - margin*2; // 顶部有足够的区域显示\r\n } else if(!opts.allowBottomOut){ // 顶部没有足够区域显示时,是否允许底部溢出\r\n top = winArea() - elemHeight - margin*2; // 面板向底部靠齐\r\n if(top < 0) top = 0; // 如果面板底部靠齐时,又溢出窗口顶部,则只能将顶部靠齐\r\n }\r\n }\r\n /*\r\n if(top + elemHeight + margin > winArea()){\r\n // 优先顶部是否有足够区域显示完全\r\n if(rect.top > elemHeight + margin){\r\n top = rect.top - elemHeight - margin*2; // 顶部有足够的区域显示\r\n } else {\r\n // 如果面板是鼠标右键弹出,且顶部没有足够区域显示,则将面板向底部靠齐\r\n if(obj.clickType === 'right'){\r\n top = winArea() - elemHeight - margin*2;\r\n if(top < 0) top = 0; // 不能溢出窗口顶部\r\n } else {\r\n top = margin; // 位置计算逻辑完备性处理\r\n }\r\n }\r\n }\r\n */\r\n\r\n // 定位类型\r\n var position = opts.position;\r\n if(position) elem.style.position = position;\r\n\r\n // 设置坐标\r\n elem.style.left = left + (position === 'fixed' ? 0 : scrollArea(1)) + 'px';\r\n elem.style.top = top + (position === 'fixed' ? 0 : scrollArea()) + 'px';\r\n\r\n // 防止页面无滚动条时,又因为弹出面板而出现滚动条导致的坐标计算偏差\r\n if(!lay.hasScrollbar()){\r\n var rect1 = elem.getBoundingClientRect();\r\n // 如果弹出面板的溢出窗口底部,则表示将出现滚动条,此时需要重新计算坐标\r\n if(!opts.SYSTEM_RELOAD && (rect1.bottom + margin) > winArea()){\r\n opts.SYSTEM_RELOAD = true;\r\n setTimeout(function(){\r\n lay.position(target, elem, opts);\r\n }, 50);\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * 获取元素上的属性配置项\r\n * @param {string | HTMLElement | JQuery} elem - HTML 元素\r\n * @param {{attr: string} | string} [opts=\"lay-options\"] - 可配置的选项,string 类型指定属性名\r\n * @returns {Object.} 返回元素上的属性配置项\r\n * @example\r\n * ```js\r\n *
                    \r\n *\r\n * var elem = $('#testEl')\r\n * lay.options(elem) // {color:red}\r\n * lay.options(elem[0]) // {color:red}\r\n * lay.options('#testEl') // {color:red}\r\n * lay.options('#testEl', {attr: 'lay-toc'}) // {hot: true}\r\n * lay.options('#testEl', 'lay-toc') // {hot: true}\r\n *\r\n * $('#testEl').attr('lay-toc') // '{hot: true}'\r\n * ```\r\n */\r\n lay.options = function(elem, opts){\r\n opts = typeof opts === 'object' ? opts : {attr: opts};\r\n\r\n if(elem === document) return {};\r\n\r\n var othis = lay(elem);\r\n var attrName = opts.attr || 'lay-options';\r\n var attrValue = othis.attr(attrName);\r\n\r\n try {\r\n /**\r\n * 请注意: 开发者在使用 lay-options=\"{}\" 配置组件选项时,需确保属性值不来自于网页用户,\r\n * 即属性值必须在网页开发者自身的可控范围内,否则请勿在 HTML 标签属性中获取组件选项。\r\n */\r\n return new Function('return '+ (attrValue || '{}'))();\r\n } catch(ev) {\r\n layui.hint().error(opts.errorText || [\r\n attrName + '=\"'+ attrValue + '\"',\r\n '\\n parseerror: '+ ev\r\n ].join('\\n'), 'error');\r\n return {};\r\n }\r\n };\r\n\r\n\r\n /**\r\n * 元素是否属于顶级元素(document 或 body)\r\n * @param {HTMLElement} elem - HTML 元素\r\n * @returns {boolean} 是否属于顶级元素\r\n * @example\r\n * ```js\r\n * lay.isTopElem(document) // true\r\n * ```\r\n */\r\n lay.isTopElem = function(elem){\r\n var topElems = [document, lay('body')[0]]\r\n ,matched = false;\r\n lay.each(topElems, function(index, item){\r\n if(item === elem){\r\n return matched = true\r\n }\r\n });\r\n return matched;\r\n };\r\n\r\n // 剪切板\r\n lay.clipboard = {\r\n /**\r\n * 写入文本\r\n * @param {Object} options - 可配置的选项\r\n * @param {string} options.text - 写入剪贴板的文本\r\n * @param {() => void} [options.done] - 写入成功/完成回调\r\n * @param {(err?: any) => void} [options.error] - 写入失败回调\r\n * @example\r\n * ```js\r\n * lay.clipboard.writeText({\r\n * text: '测试文本',\r\n * done: function(){ layer.msg('copied')},\r\n * error: function(){ layer.msg('error')}\r\n * })\r\n * ```\r\n */\r\n writeText: function(options) {\r\n var text = String(options.text);\r\n\r\n if(navigator && 'clipboard' in navigator){\r\n navigator.clipboard.writeText(text)\r\n .then(options.done, function(){\r\n legacyCopy();\r\n });\r\n }else{\r\n legacyCopy();\r\n }\r\n\r\n function legacyCopy(){\r\n var elem = document.createElement('textarea');\r\n\r\n elem.value = text;\r\n elem.style.position = 'fixed';\r\n elem.style.opacity = '0';\r\n elem.style.top = '0px';\r\n elem.style.left = '0px';\r\n\r\n document.body.appendChild(elem);\r\n elem.select();\r\n\r\n try {\r\n document.execCommand('copy');\r\n typeof options.done === 'function' && options.done();\r\n } catch(err) {\r\n typeof options.error === 'function' && options.error(err);\r\n } finally {\r\n elem.remove ? elem.remove() : document.body.removeChild(elem);\r\n }\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * 检测是否支持 Passive Event Listeners\r\n * 引用自 https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\r\n * @type {boolean}\r\n */\r\n lay.passiveSupported = function(){\r\n var passiveSupported = false;\r\n try {\r\n var opts = Object.defineProperty({}, 'passive', {\r\n get: function() {\r\n passiveSupported = true;\r\n }\r\n });\r\n window.addEventListener('test', null, opts);\r\n window.removeEventListener('test', null, opts);\r\n } catch (err) {}\r\n return passiveSupported;\r\n }();\r\n\r\n /**\r\n * 是否支持 touch 事件\r\n */\r\n lay.touchEventsSupported = function(){\r\n return 'ontouchstart' in window;\r\n };\r\n\r\n /**\r\n * @typedef touchSwipeState\r\n * @prop {{x: number,y: number}} pointerStart - 初始坐标\r\n * @prop {{x: number,y: number}} pointerEnd - 结束坐标\r\n * @prop {number} distanceX - X 轴移动距离\r\n * @prop {number} distanceY - Y 轴移动距离\r\n * @prop {'none'|'right'|'left'|'up'|'down'} direction - 滑动方向\r\n * @prop {Date} timeStart 开始时间\r\n */\r\n /**\r\n * @callback touchSwipeCallback\r\n * @param {TouchEvent} e 滑动事件\r\n * @param {touchSwipeState} state 滑动相关的状态\r\n */\r\n /**\r\n * 基于 touch 事件的触摸滑动\r\n * @param {string | HTMLElement | JQuery} elem - HTML 元素\r\n * @param {{onTouchStart?: touchSwipeCallback, onTouchMove?: touchSwipeCallback, onTouchEnd?: touchSwipeCallback}} opts - 配置项\r\n */\r\n lay.touchSwipe = function(elem, opts){\r\n var options = opts\r\n var targetElem = lay(elem)[0];\r\n\r\n if(!targetElem || !lay.touchEventsSupported()) return;\r\n\r\n var state = {\r\n pointerStart: {x:0, y:0},\r\n pointerEnd: {x:0, y:0},\r\n distanceX: 0,\r\n distanceY: 0,\r\n direction:'none', // 'up','down','left','right','none\r\n timeStart: null\r\n }\r\n\r\n var onStart = function(e){\r\n if(e.touches.length !== 1) return;\r\n bindEvents();\r\n // 重置状态\r\n state.timeStart = Date.now();\r\n state.pointerStart.x = state.pointerEnd.x = e.touches[0].clientX;\r\n state.pointerStart.y = state.pointerEnd.y = e.touches[0].clientY;\r\n state.distanceX = state.distanceY = 0;\r\n state.direction = 'none'\r\n\r\n options.onTouchStart && options.onTouchStart(e, state);\r\n }\r\n\r\n var onMove = function(e){\r\n e.preventDefault();\r\n state.pointerEnd.x = e.touches[0].clientX;\r\n state.pointerEnd.y = e.touches[0].clientY;\r\n state.distanceX = state.pointerStart.x - state.pointerEnd.x;\r\n state.distanceY = state.pointerStart.y - state.pointerEnd.y;\r\n if(Math.abs(state.distanceX) > Math.abs(state.distanceY)){\r\n state.direction = state.distanceX > 0 ? 'left' : 'right';\r\n }else{\r\n state.direction = state.distanceY > 0 ? 'up' : 'down';\r\n }\r\n options.onTouchMove && options.onTouchMove(e, state);\r\n }\r\n\r\n var onEnd = function(e){\r\n options.onTouchEnd && options.onTouchEnd(e, state);\r\n unbindEvents();\r\n }\r\n \r\n var bindEvents = function(){\r\n targetElem.addEventListener('touchmove', onMove, lay.passiveSupported ? { passive: false} : false);\r\n targetElem.addEventListener('touchend', onEnd);\r\n targetElem.addEventListener('touchcancel', onEnd);\r\n }\r\n\r\n var unbindEvents = function(){\r\n targetElem.removeEventListener('touchmove', onMove);\r\n targetElem.removeEventListener('touchend', onEnd, lay.passiveSupported ? { passive: false} : false);\r\n targetElem.removeEventListener('touchcancel', onEnd);\r\n }\r\n\r\n // 防止事件重复绑定\r\n if(targetElem.__lay_touchswipe_cb_){\r\n targetElem.removeEventListener('touchstart', targetElem.__lay_touchswipe_cb_);\r\n }\r\n targetElem.__lay_touchswipe_cb_ = onStart;\r\n targetElem.addEventListener('touchstart', onStart);\r\n }\r\n\r\n /** @type {(elem: Element|Document|Window,eventName: string,fn:EventListenerOrEventListenerObject,options: boolean | AddEventListenerOptions) => any}*/\r\n lay.addEvent = function(){\r\n if(document.addEventListener){\r\n return function(elem, eventName, fn, options){\r\n elem.addEventListener(eventName, fn, options);\r\n }\r\n }else{\r\n return function(elem, eventName, fn){\r\n var prefix = '_lay_on_';\r\n var eventsCacheName = prefix + eventName;\r\n var listener = function(e){\r\n e.target = e.srcElement;\r\n fn.call(elem, e);\r\n }\r\n listener._rawFn = fn;\r\n if(!elem[eventsCacheName]){\r\n elem[eventsCacheName] = [];\r\n }\r\n var include = false;\r\n lay.each(elem[eventsCacheName], function(_, listener){\r\n if(listener._rawFn === fn){\r\n include = true;\r\n return true;\r\n }\r\n })\r\n if(!include){\r\n elem[eventsCacheName].push(listener);\r\n elem.attachEvent('on' + eventName, listener);\r\n }\r\n }\r\n }\r\n }();\r\n\r\n /** @type {(elem: Element|Document|Window,eventName: string,fn:EventListenerOrEventListenerObject,options: boolean | EventListenerOptions) => any}*/\r\n lay.removeEvent = function(){\r\n if(document.removeEventListener){\r\n return function(elem, eventName, fn, options){\r\n elem.removeEventListener(eventName, fn, options);\r\n }\r\n }else{\r\n return function(elem, eventName, fn){\r\n var prefix = '_lay_on_';\r\n var eventsCacheName = prefix + eventName;\r\n var events = elem[eventsCacheName];\r\n if(layui.isArray(events)){\r\n var newEvents = [];\r\n lay.each(events, function(_, listener){\r\n if(listener._rawFn === fn){\r\n elem.detachEvent('on'+ eventName, listener);\r\n }else{\r\n newEvents.push(listener);\r\n }\r\n })\r\n elem[eventsCacheName] = newEvents;\r\n } \r\n } \r\n }\r\n }();\r\n\r\n\r\n /*\r\n * lay 元素操作\r\n */\r\n\r\n\r\n // 追加字符\r\n Class.addStr = function(str, new_str){\r\n str = str.replace(/\\s+/, ' ');\r\n new_str = new_str.replace(/\\s+/, ' ').split(' ');\r\n lay.each(new_str, function(ii, item){\r\n if(!new RegExp('\\\\b'+ item + '\\\\b').test(str)){\r\n str = str + ' ' + item;\r\n }\r\n });\r\n return str.replace(/^\\s|\\s$/, '');\r\n };\r\n\r\n // 移除值\r\n Class.removeStr = function(str, new_str){\r\n str = str.replace(/\\s+/, ' ');\r\n new_str = new_str.replace(/\\s+/, ' ').split(' ');\r\n lay.each(new_str, function(ii, item){\r\n var exp = new RegExp('\\\\b'+ item + '\\\\b')\r\n if(exp.test(str)){\r\n str = str.replace(exp, '');\r\n }\r\n });\r\n return str.replace(/\\s+/, ' ').replace(/^\\s|\\s$/, '');\r\n };\r\n\r\n // 查找子元素\r\n Class.fn.find = function(selector){\r\n var that = this;\r\n var elem = [];\r\n var isObject = typeof selector === 'object';\r\n\r\n this.each(function(i, item){\r\n var children = isObject && item.contains(selector)\r\n ? selector\r\n : item.querySelectorAll(selector || null);\r\n\r\n lay.each(children, function(index, child){\r\n elem.push(child);\r\n });\r\n });\r\n\r\n return lay(elem);\r\n };\r\n\r\n // 元素遍历\r\n Class.fn.each = function(fn){\r\n return lay.each.call(this, this, fn);\r\n };\r\n\r\n // 添加 className\r\n Class.fn.addClass = function(className, type){\r\n return this.each(function(index, item){\r\n item.className = Class[type ? 'removeStr' : 'addStr'](item.className, className)\r\n });\r\n };\r\n\r\n // 移除 className\r\n Class.fn.removeClass = function(className){\r\n return this.addClass(className, true);\r\n };\r\n\r\n // 是否包含 css 类\r\n Class.fn.hasClass = function(className){\r\n var has = false;\r\n this.each(function(index, item){\r\n if(new RegExp('\\\\b'+ className +'\\\\b').test(item.className)){\r\n has = true;\r\n }\r\n });\r\n return has;\r\n };\r\n\r\n // 添加或获取 css style\r\n Class.fn.css = function(key, value){\r\n var that = this;\r\n var parseValue = function(v){\r\n return isNaN(v) ? v : (v +'px');\r\n };\r\n return (typeof key === 'string' && value === undefined) ? function(){\r\n if(that.length > 0) return that[0].style[key];\r\n }() : that.each(function(index, item){\r\n typeof key === 'object' ? lay.each(key, function(thisKey, thisValue){\r\n item.style[thisKey] = parseValue(thisValue);\r\n }) : item.style[key] = parseValue(value);\r\n });\r\n };\r\n\r\n // 添加或获取宽度\r\n Class.fn.width = function(value){\r\n var that = this;\r\n return value === undefined ? function(){\r\n if(that.length > 0) return that[0].offsetWidth; // 此处还需做兼容\r\n }() : that.each(function(index, item){\r\n that.css('width', value);\r\n });\r\n };\r\n\r\n // 添加或获取高度\r\n Class.fn.height = function(value){\r\n var that = this;\r\n return value === undefined ? function(){\r\n if(that.length > 0) return that[0].offsetHeight; // 此处还需做兼容\r\n }() : that.each(function(index, item){\r\n that.css('height', value);\r\n });\r\n };\r\n\r\n // 添加或获取属性\r\n Class.fn.attr = function(key, value){\r\n var that = this;\r\n return value === undefined ? function(){\r\n if(that.length > 0) return that[0].getAttribute(key);\r\n }() : that.each(function(index, item){\r\n item.setAttribute(key, value);\r\n });\r\n };\r\n\r\n // 移除属性\r\n Class.fn.removeAttr = function(key){\r\n return this.each(function(index, item){\r\n item.removeAttribute(key);\r\n });\r\n };\r\n\r\n // 设置或获取 HTML 内容\r\n Class.fn.html = function(html){\r\n var that = this;\r\n return html === undefined ? function(){\r\n if(that.length > 0) return that[0].innerHTML;\r\n }() : this.each(function(index, item){\r\n item.innerHTML = html;\r\n });\r\n };\r\n\r\n // 设置或获取值\r\n Class.fn.val = function(value){\r\n var that = this;\r\n return value === undefined ? function(){\r\n if(that.length > 0) return that[0].value;\r\n }() : this.each(function(index, item){\r\n item.value = value;\r\n });\r\n };\r\n\r\n // 追加内容\r\n Class.fn.append = function(elem){\r\n return this.each(function(index, item){\r\n typeof elem === 'object'\r\n ? item.appendChild(elem)\r\n : item.innerHTML = item.innerHTML + elem;\r\n });\r\n };\r\n\r\n // 移除内容\r\n Class.fn.remove = function(elem){\r\n return this.each(function(index, item){\r\n elem ? item.removeChild(elem) : item.parentNode.removeChild(item);\r\n });\r\n };\r\n\r\n // 事件绑定\r\n Class.fn.on = function(eventName, fn, options){\r\n return this.each(function(index, item){\r\n lay.addEvent(item, eventName, fn, options)\r\n });\r\n };\r\n\r\n // 解除事件\r\n Class.fn.off = function(eventName, fn, options){\r\n return this.each(function(index, item){\r\n lay.removeEvent(item, eventName, fn, options)\r\n });\r\n };\r\n\r\n // export\r\n window.lay = lay;\r\n\r\n // 输出为 layui 模块\r\n if(window.layui && layui.define){\r\n layui.define(function(exports){\r\n exports(MOD_NAME, lay);\r\n });\r\n }\r\n\r\n}(window, window.document); // gulp build: lay-footer\r\n","/**\r\n * laytpl 轻量模板引擎\r\n */\r\n\r\nlayui.define(function(exports){\r\n \"use strict\";\r\n\r\n // 默认属性\r\n var config = {\r\n open: '{{', // 标签符前缀\r\n close: '}}' // 标签符后缀\r\n };\r\n\r\n // 模板工具\r\n var tool = {\r\n escape: function(html){\r\n var exp = /[<\"'>]|&(?=#[a-zA-Z0-9]+)/g;\r\n if(html === undefined || html === null) return '';\r\n\r\n html += '';\r\n if(!exp.test(html)) return html;\r\n\r\n return html.replace(/&(?!#?[a-zA-Z0-9]+;)/g, '&')\r\n .replace(//g, '>')\r\n .replace(/'/g, ''').replace(/\"/g, '"');\r\n }\r\n };\r\n\r\n // 内部方法\r\n var inner = {\r\n exp: function(str){\r\n return new RegExp(str, 'g');\r\n },\r\n // 错误提示\r\n error: function(e, source){\r\n var error = 'Laytpl Error: ';\r\n typeof console === 'object' && console.error(error + e + '\\n'+ (source || ''));\r\n return error + e;\r\n }\r\n };\r\n\r\n // constructor\r\n var Class = function(template, options){\r\n var that = this;\r\n that.config = that.config || {};\r\n that.template = template;\r\n\r\n // 简单属性合并\r\n var extend = function(obj){\r\n for(var i in obj){\r\n that.config[i] = obj[i];\r\n }\r\n };\r\n\r\n extend(config);\r\n extend(options);\r\n };\r\n\r\n // 标签正则\r\n Class.prototype.tagExp = function(type, _, __){\r\n var options = this.config;\r\n var types = [\r\n '#([\\\\s\\\\S])+?', // js 语句\r\n '([^{#}])*?' // 普通字段\r\n ][type || 0];\r\n\r\n return inner.exp((_||'') + options.open + types + options.close + (__||''));\r\n };\r\n\r\n // 模版解析\r\n Class.prototype.parse = function(template, data){\r\n var that = this;\r\n var options = that.config;\r\n var source = template;\r\n var jss = inner.exp('^'+ options.open +'#', '');\r\n var jsse = inner.exp(options.close +'$', '');\r\n\r\n // 模板必须为 string 类型\r\n if(typeof template !== 'string') return template;\r\n\r\n // 正则解析\r\n template = template.replace(/\\s+|\\r|\\t|\\n/g, ' ')\r\n .replace(inner.exp(options.open +'#'), options.open +'# ')\r\n .replace(inner.exp(options.close +'}'), '} '+ options.close).replace(/\\\\/g, '\\\\\\\\')\r\n\r\n // 不匹配指定区域的内容\r\n .replace(inner.exp(options.open + '!(.+?)!' + options.close), function(str){\r\n str = str.replace(inner.exp('^'+ options.open + '!'), '')\r\n .replace(inner.exp('!'+ options.close), '')\r\n .replace(inner.exp(options.open + '|' + options.close), function(tag){\r\n return tag.replace(/(.)/g, '\\\\$1')\r\n });\r\n return str\r\n })\r\n\r\n // 匹配 JS 语法\r\n .replace(/(?=\"|')/g, '\\\\').replace(that.tagExp(), function(str){\r\n str = str.replace(jss, '').replace(jsse, '');\r\n return '\";' + str.replace(/\\\\(.)/g, '$1') + ';view+=\"';\r\n })\r\n\r\n // 匹配普通输出语句\r\n .replace(that.tagExp(1), function(str){\r\n var start = '\"+laytpl.escape(';\r\n if(str.replace(/\\s/g, '') === options.open + options.close){\r\n return '';\r\n }\r\n str = str.replace(inner.exp(options.open + '|' + options.close), '');\r\n if(/^=/.test(str)){\r\n str = str.replace(/^=/, '');\r\n } else if(/^-/.test(str)){\r\n str = str.replace(/^-/, '');\r\n start = '\"+(';\r\n }\r\n return start + str.replace(/\\\\(.)/g, '$1') + ')+\"';\r\n });\r\n\r\n template = '\"use strict\";var view = \"' + template + '\";return view;';\r\n\r\n try {\r\n /**\r\n * 请注意: 开发者在使用模板语法时,需确保模板中的 JS 语句不来自于页面用户输入。\r\n * 即模板中的 JS 语句必须在页面开发者自身的可控范围内,否则请避免使用该模板解析。\r\n */\r\n that.cache = template = new Function('d, laytpl', template);\r\n return template(data, tool);\r\n } catch(e) {\r\n delete that.cache;\r\n return inner.error(e, source);\r\n }\r\n };\r\n\r\n // 数据渲染\r\n Class.prototype.render = function(data, callback){\r\n data = data || {};\r\n\r\n var that = this;\r\n var result = that.cache ? that.cache(data, tool) : that.parse(that.template, data);\r\n\r\n // 返回渲染结果\r\n typeof callback === 'function' && callback(result);\r\n return result;\r\n };\r\n\r\n // 创建实例\r\n var laytpl = function(template, options){\r\n return new Class(template, options);\r\n };\r\n\r\n // 配置全局属性\r\n laytpl.config = function(options){\r\n options = options || {};\r\n for(var i in options){\r\n config[i] = options[i];\r\n }\r\n };\r\n\r\n laytpl.v = '2.0.0';\r\n\r\n // export\r\n exports('laytpl', laytpl);\r\n});\r\n","/**\r\n * laypage 分页组件\r\n */\r\n\r\nlayui.define(function(exports){\r\n \"use strict\";\r\n \r\n var doc = document;\r\n var id = 'getElementById';\r\n var tag = 'getElementsByTagName';\r\n \r\n // 字符常量\r\n var MOD_NAME = 'laypage';\r\n var DISABLED = 'layui-disabled';\r\n \r\n // 构造器\r\n var Class = function(options){\r\n var that = this;\r\n that.config = options || {};\r\n that.config.index = ++laypage.index;\r\n that.render(true);\r\n };\r\n\r\n // 判断传入的容器类型\r\n Class.prototype.type = function(){\r\n var config = this.config;\r\n if(typeof config.elem === 'object'){\r\n return config.elem.length === undefined ? 2 : 3;\r\n }\r\n };\r\n\r\n // 分页视图\r\n Class.prototype.view = function(){\r\n var that = this;\r\n var config = that.config;\r\n\r\n // 连续页码个数\r\n var groups = config.groups = 'groups' in config \r\n ? (Number(config.groups) || 0)\r\n : 5; \r\n \r\n // 排版\r\n config.layout = typeof config.layout === 'object' \r\n ? config.layout \r\n : ['prev', 'page', 'next'];\r\n \r\n config.count = Number(config.count) || 0; // 数据总数\r\n config.curr = Number(config.curr) || 1; // 当前页\r\n\r\n // 每页条数的选择项\r\n config.limits = typeof config.limits === 'object'\r\n ? config.limits\r\n : [10, 20, 30, 40, 50];\r\n\r\n // 默认条数\r\n config.limit = Number(config.limit) || 10;\r\n \r\n // 总页数\r\n config.pages = Math.ceil(config.count/config.limit) || 1;\r\n \r\n // 当前页不能超过总页数\r\n if(config.curr > config.pages){\r\n config.curr = config.pages;\r\n } else if(config.curr < 1) { // 当前分页不能小于 1\r\n config.curr = 1;\r\n }\r\n \r\n // 连续分页个数不能低于 0 且不能大于总页数\r\n if(groups < 0){\r\n groups = 1;\r\n } else if (groups > config.pages){\r\n groups = config.pages;\r\n }\r\n \r\n config.prev = 'prev' in config ? config.prev : '上一页'; // 上一页文本\r\n config.next = 'next' in config ? config.next : '下一页'; // 下一页文本\r\n \r\n // 计算当前组\r\n var index = config.pages > groups \r\n ? Math.ceil( (config.curr + (groups > 1 ? 1 : 0)) / (groups > 0 ? groups : 1) )\r\n : 1;\r\n \r\n // 视图片段\r\n var views = {\r\n // 上一页\r\n prev: function(){\r\n return config.prev \r\n ? ''+ config.prev +''\r\n : '';\r\n }(),\r\n \r\n // 页码\r\n page: function(){\r\n var pager = [];\r\n \r\n // 数据量为0时,不输出页码\r\n if(config.count < 1){\r\n return '';\r\n }\r\n \r\n // 首页\r\n if(index > 1 && config.first !== false && groups !== 0){\r\n pager.push(''+ (config.first || 1) +'');\r\n }\r\n\r\n // 计算当前页码组的起始页\r\n var halve = Math.floor((groups-1)/2) // 页码数等分\r\n var start = index > 1 ? config.curr - halve : 1;\r\n var end = index > 1 ? (function(){\r\n var max = config.curr + (groups - halve - 1);\r\n return max > config.pages ? config.pages : max;\r\n }()) : groups;\r\n \r\n // 防止最后一组出现“不规定”的连续页码数\r\n if(end - start < groups - 1){\r\n start = end - groups + 1;\r\n }\r\n\r\n // 输出左分割符\r\n if(config.first !== false && start > 2){\r\n pager.push('...')\r\n }\r\n \r\n // 输出连续页码\r\n for(; start <= end; start++){\r\n if(start === config.curr){\r\n // 当前页\r\n pager.push(''+ start +'');\r\n } else {\r\n pager.push(''+ start +'');\r\n }\r\n }\r\n \r\n // 输出输出右分隔符 & 末页\r\n if(config.pages > groups && config.pages > end && config.last !== false){\r\n if(end + 1 < config.pages){\r\n pager.push('...');\r\n }\r\n if(groups !== 0){\r\n pager.push(''+ (config.last || config.pages) +'');\r\n }\r\n }\r\n\r\n return pager.join('');\r\n }(),\r\n \r\n // 下一页\r\n next: function(){\r\n return config.next \r\n ? ''+ config.next +''\r\n : '';\r\n }(),\r\n \r\n // 数据总数\r\n count: function(){\r\n var countText = typeof config.countText === 'object' ? config.countText : ['共 ', ' 条'];\r\n return ''+ countText[0] + config.count + countText[1] +''\r\n }(),\r\n \r\n // 每页条数\r\n limit: function(){\r\n var elemArr = ['';\r\n }(),\r\n \r\n // 刷新当前页\r\n refresh: [\r\n '',\r\n '',\r\n ''\r\n ].join(''),\r\n\r\n // 跳页区域\r\n skip: function(){\r\n var skipText = typeof config.skipText === 'object' ? config.skipText : [\r\n '到第',\r\n '页',\r\n '确定'\r\n ];\r\n return [\r\n ''+ skipText[0],\r\n '',\r\n skipText[1]+ '',\r\n ''\r\n ].join('');\r\n }()\r\n };\r\n\r\n return ['
                    ',\r\n function(){\r\n var plate = [];\r\n layui.each(config.layout, function(index, item){\r\n if(views[item]){\r\n plate.push(views[item])\r\n }\r\n });\r\n return plate.join('');\r\n }(),\r\n '
                    '].join('');\r\n };\r\n\r\n // 跳页的回调\r\n Class.prototype.jump = function(elem, isskip){\r\n if(!elem) return;\r\n\r\n var that = this;\r\n var config = that.config;\r\n var childs = elem.children;\r\n var btn = elem[tag]('button')[0];\r\n var input = elem[tag]('input')[0];\r\n var select = elem[tag]('select')[0];\r\n var skip = function(){\r\n var curr = Number(input.value.replace(/\\s|\\D/g, ''));\r\n if(curr){\r\n config.curr = curr;\r\n that.render();\r\n }\r\n };\r\n \r\n if(isskip) return skip();\r\n \r\n // 页码\r\n for(var i = 0, len = childs.length; i < len; i++){\r\n if(childs[i].nodeName.toLowerCase() === 'a'){\r\n laypage.on(childs[i], 'click', function(){\r\n var curr = Number(this.getAttribute('data-page'));\r\n if(curr < 1 || curr > config.pages) return;\r\n config.curr = curr;\r\n that.render();\r\n });\r\n }\r\n }\r\n \r\n // 条数\r\n if(select){\r\n laypage.on(select, 'change', function(){\r\n var value = this.value;\r\n if(config.curr*value > config.count){\r\n config.curr = Math.ceil(config.count/value);\r\n }\r\n config.limit = value;\r\n that.render();\r\n });\r\n }\r\n \r\n // 确定\r\n if(btn){\r\n laypage.on(btn, 'click', function(){\r\n skip();\r\n });\r\n }\r\n };\r\n \r\n // 输入页数字控制\r\n Class.prototype.skip = function(elem){\r\n if(!elem) return;\r\n\r\n var that = this;\r\n var input = elem[tag]('input')[0];\r\n\r\n if(!input) return;\r\n\r\n // 键盘事件\r\n laypage.on(input, 'keyup', function(e){\r\n var value = this.value;\r\n var keyCode = e.keyCode;\r\n\r\n if(/^(37|38|39|40)$/.test(keyCode)) return;\r\n\r\n if(/\\D/.test(value)){\r\n this.value = value.replace(/\\D/, '');\r\n }\r\n if(keyCode === 13){\r\n that.jump(elem, true)\r\n }\r\n });\r\n };\r\n\r\n // 渲染分页\r\n Class.prototype.render = function(load){\r\n var that = this;\r\n var config = that.config;\r\n var type = that.type();\r\n var view = that.view();\r\n \r\n if(type === 2){\r\n config.elem && (config.elem.innerHTML = view);\r\n } else if(type === 3){\r\n config.elem.html(view);\r\n } else {\r\n if(doc[id](config.elem)){\r\n doc[id](config.elem).innerHTML = view;\r\n }\r\n }\r\n\r\n config.jump && config.jump(config, load);\r\n \r\n var elem = doc[id]('layui-laypage-' + config.index);\r\n that.jump(elem);\r\n \r\n if(config.hash && !load){\r\n location.hash = '!'+ config.hash +'='+ config.curr;\r\n }\r\n \r\n that.skip(elem);\r\n };\r\n \r\n // 外部接口\r\n var laypage = {\r\n // 分页渲染\r\n render: function(options){\r\n var o = new Class(options);\r\n return o.index;\r\n },\r\n index: layui.laypage ? (layui.laypage.index + 10000) : 0,\r\n on: function(elem, even, fn){\r\n elem.attachEvent ? elem.attachEvent('on'+ even, function(e){ // for ie\r\n e.target = e.srcElement;\r\n fn.call(elem, e);\r\n }) : elem.addEventListener(even, fn, false);\r\n return this;\r\n }\r\n }\r\n\r\n exports(MOD_NAME, laypage);\r\n});\r\n","/** laydate 日期与时间控件 | MIT Licensed */ \r\n// @ts-expect-error\r\n;!function(window, document){ // gulp build: laydate-header\r\n \"use strict\";\r\n\r\n var isLayui = window.layui && layui.define;\r\n var ready = {\r\n getPath: window.lay && lay.getPath ? lay.getPath : '',\r\n\r\n // 载入 CSS 依赖\r\n link: function (href, fn, cssname) {\r\n // 未设置路径,则不主动加载 css\r\n if (!laydate.path) return;\r\n\r\n // 加载 css\r\n if (window.lay && lay.layui) {\r\n lay.layui.link(laydate.path + href, fn, cssname);\r\n }\r\n }\r\n };\r\n\r\n // 识别预先可能定义的指定全局对象\r\n var GLOBAL = window.LAYUI_GLOBAL || {};\r\n\r\n // 模块名\r\n var MOD_NAME = 'laydate';\r\n var MOD_ID = 'lay-' + MOD_NAME + '-id'; // 已渲染过的索引标记名\r\n\r\n // 外部调用\r\n var laydate = {\r\n v: '5.6.0', // layDate 版本号\r\n config: {\r\n weekStart: 0 // 默认周日一周的开始\r\n }, // 全局配置项\r\n index: window.laydate && window.laydate.v ? 100000 : 0,\r\n path: GLOBAL.laydate_dir || ready.getPath,\r\n\r\n // 设置全局项\r\n set: function (options) {\r\n var that = this;\r\n that.config = lay.extend({}, that.config, options);\r\n return that;\r\n },\r\n\r\n // 主体 CSS 等待事件\r\n ready: function (callback) {\r\n var cssname = 'laydate';\r\n var ver = '';\r\n var path = (isLayui ? 'modules/' : '') + 'laydate.css?v=' + laydate.v + ver;\r\n\r\n isLayui ? (\r\n layui['layui.all'] ?\r\n (typeof callback === 'function' && callback()) :\r\n layui.addcss(path, callback, cssname)\r\n ) : ready.link(path, callback, cssname);\r\n\r\n return this;\r\n }\r\n };\r\n\r\n // 操作当前实例\r\n var thisModule = function(){\r\n var that = this;\r\n var options = that.config;\r\n var id = options.id;\r\n\r\n thisModule.that[id] = that; // 记录当前实例对象\r\n\r\n return that.inst = {\r\n // 提示框\r\n hint: function(content){\r\n that.hint.call(that, content);\r\n },\r\n // 重载实例\r\n reload: function(options){\r\n that.reload.call(that, options);\r\n },\r\n config: that.config\r\n };\r\n };\r\n\r\n // 字符常量\r\n var ELEM = '.layui-laydate';\r\n var THIS = 'layui-this';\r\n var SHOW = 'layui-show';\r\n var HIDE = 'layui-hide';\r\n var DISABLED = 'laydate-disabled';\r\n var LIMIT_YEAR = [100, 200000];\r\n\r\n var ELEM_STATIC = 'layui-laydate-static';\r\n var ELEM_LIST = 'layui-laydate-list';\r\n var ELEM_SELECTED = 'laydate-selected';\r\n var ELEM_HINT = 'layui-laydate-hint';\r\n var ELEM_DAY_NOW = 'laydate-day-now';\r\n var ELEM_PREV = 'laydate-day-prev';\r\n var ELEM_NEXT = 'laydate-day-next';\r\n var ELEM_FOOTER = 'layui-laydate-footer';\r\n var ELEM_SHORTCUT = 'layui-laydate-shortcut';\r\n var ELEM_NOW = '.laydate-btns-now'\r\n var ELEM_CONFIRM = '.laydate-btns-confirm';\r\n var ELEM_TIME_TEXT = 'laydate-time-text';\r\n var ELEM_TIME_BTN = 'laydate-btns-time';\r\n var ELEM_PREVIEW = 'layui-laydate-preview';\r\n var ELEM_MAIN = 'layui-laydate-main';\r\n var ELEM_SHADE = 'layui-laydate-shade';\r\n\r\n // 组件构造器\r\n var Class = function(options){\r\n var that = this;\r\n that.index = ++laydate.index;\r\n that.config = lay.extend({}, that.config, laydate.config, options);\r\n\r\n // 若 elem 非唯一,则拆分为多个实例\r\n var elem = lay(options.elem || that.config.elem);\r\n if(elem.length > 1){\r\n lay.each(elem, function(){\r\n laydate.render(lay.extend({}, that.config, {\r\n elem: this\r\n }));\r\n });\r\n return that;\r\n }\r\n\r\n // 初始化属性\r\n options = lay.extend(that.config, lay.options(elem[0])); // 继承节点上的属性\r\n\r\n // 若重复执行 render,则视为 reload 处理\r\n if(elem[0] && elem.attr(MOD_ID)){\r\n var newThat = thisModule.getThis(elem.attr(MOD_ID));\r\n if(!newThat) return;\r\n return newThat.reload(options);\r\n }\r\n\r\n // 初始化 id 属性 - 优先取 options > 元素 id > 自增索引\r\n options.id = 'id' in options ? options.id : (\r\n elem.attr('id') || that.index\r\n );\r\n\r\n // 自增索引\r\n options.index = that.index;\r\n\r\n // 初始化\r\n laydate.ready(function(){\r\n that.init();\r\n });\r\n };\r\n\r\n // 日期格式字符\r\n var dateType = 'yyyy|y|MM|M|dd|d|HH|H|mm|m|ss|s';\r\n\r\n // 将日期格式字符转换为数组\r\n thisModule.formatArr = function(format){\r\n return (format || '').match(new RegExp(dateType + '|.', 'g')) || []\r\n };\r\n\r\n /*\r\n 组件操作\r\n */\r\n\r\n // 是否闰年\r\n Class.isLeapYear = function(year){\r\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\r\n };\r\n\r\n // 默认配置\r\n Class.prototype.config = {\r\n type: 'date' //控件类型,支持:year/month/date/time/datetime\r\n ,range: false //是否开启范围选择,即双控件\r\n ,format: 'yyyy-MM-dd' //默认日期格式\r\n ,value: null //默认日期,支持传入new Date(),或者符合format参数设定的日期格式字符\r\n ,isInitValue: true //用于控制是否自动向元素填充初始值(需配合 value 参数使用)\r\n ,min: '1900-1-1' //有效最小日期,年月日必须用“-”分割,时分秒必须用“:”分割。注意:它并不是遵循 format 设定的格式。\r\n ,max: '2099-12-31' //有效最大日期,同上\r\n ,trigger: 'click' //呼出控件的事件\r\n ,show: false //是否直接显示,如果设置 true,则默认直接显示控件\r\n ,showBottom: true //是否显示底部栏\r\n ,isPreview: true //是否显示值预览\r\n ,btns: ['clear', 'now', 'confirm'] //右下角显示的按钮,会按照数组顺序排列\r\n ,lang: 'cn' //语言,只支持cn/en,即中文和英文\r\n ,theme: 'default' //主题\r\n ,position: null //控件定位方式定位, 默认absolute,支持:fixed/absolute/static\r\n ,calendar: false //是否开启公历重要节日,仅支持中文版\r\n ,mark: {} //日期备注,如重要事件或活动标记\r\n ,holidays: null // 标注法定节假日或补假上班\r\n ,zIndex: null //控件层叠顺序\r\n ,done: null //控件选择完毕后的回调,点击清空/现在/确定也均会触发\r\n ,change: null //日期时间改变后的回调\r\n ,autoConfirm: true //是否自动确认(日期|年份|月份选择器非range下是否自动确认)\r\n ,shade: 0\r\n };\r\n\r\n //多语言\r\n Class.prototype.lang = function(){\r\n var that = this\r\n ,options = that.config\r\n ,text = {\r\n cn: {\r\n weeks: ['日', '一', '二', '三', '四', '五', '六']\r\n ,time: ['时', '分', '秒']\r\n ,timeTips: '选择时间'\r\n ,startTime: '开始时间'\r\n ,endTime: '结束时间'\r\n ,dateTips: '返回日期'\r\n ,month: ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '十一', '十二']\r\n ,tools: {\r\n confirm: '确定'\r\n ,clear: '清空'\r\n ,now: '现在'\r\n }\r\n ,timeout: '结束时间不能早于开始时间
                    请重新选择'\r\n ,invalidDate: '不在有效日期或时间范围内'\r\n ,formatError: ['日期格式不合法
                    必须遵循下述格式:
                    ', '
                    已为你重置']\r\n ,preview: '当前选中的结果'\r\n }\r\n ,en: {\r\n weeks: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa']\r\n ,time: ['Hours', 'Minutes', 'Seconds']\r\n ,timeTips: 'Select Time'\r\n ,startTime: 'Start Time'\r\n ,endTime: 'End Time'\r\n ,dateTips: 'Select Date'\r\n ,month: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']\r\n ,tools: {\r\n confirm: 'Confirm'\r\n ,clear: 'Clear'\r\n ,now: 'Now'\r\n }\r\n ,timeout: 'End time cannot be less than start Time
                    Please re-select'\r\n ,invalidDate: 'Invalid date'\r\n ,formatError: ['The date format error
                    Must be followed:
                    ', '
                    It has been reset']\r\n ,preview: 'The selected result'\r\n }\r\n };\r\n return text[options.lang] || text['cn'];\r\n };\r\n\r\n Class.prototype.markerOfChineseFestivals = {\r\n '0-1-1': '元旦',\r\n '0-2-14': '情人' ,\r\n '0-3-8': '妇女',\r\n '0-3-12': '植树',\r\n '0-4-1': '愚人',\r\n '0-5-1': '劳动',\r\n '0-5-4': '青年',\r\n '0-6-1': '儿童',\r\n '0-9-10': '教师',\r\n '0-10-1': '国庆',\r\n '0-12-25': '圣诞'\r\n }\r\n\r\n // 重载实例\r\n Class.prototype.reload = function(options){\r\n var that = this;\r\n that.config = lay.extend({}, that.config, options);\r\n that.init();\r\n };\r\n\r\n //初始准备\r\n Class.prototype.init = function(){\r\n var that = this\r\n ,options = that.config\r\n ,isStatic = options.position === 'static'\r\n ,format = {\r\n year: 'yyyy'\r\n ,month: 'yyyy-MM'\r\n ,date: 'yyyy-MM-dd'\r\n ,time: 'HH:mm:ss'\r\n ,datetime: 'yyyy-MM-dd HH:mm:ss'\r\n };\r\n\r\n options.elem = lay(options.elem);\r\n options.eventElem = lay(options.eventElem);\r\n\r\n if(!options.elem[0]) return;\r\n\r\n layui.type(options.theme) !== 'array' && (options.theme = [options.theme]);\r\n // 设置了全面版模式\r\n if (options.fullPanel) {\r\n if (options.type !== 'datetime' || options.range) {\r\n // 目前只支持datetime的全面版\r\n delete options.fullPanel;\r\n }\r\n }\r\n\r\n //日期范围分隔符\r\n that.rangeStr = options.range ? (\r\n typeof options.range === 'string' ? options.range : '-'\r\n ) : '';\r\n\r\n //日期范围的日历面板是否联动\r\n that.rangeLinked = !!(options.range && options.rangeLinked && (options.type === 'date' || options.type === 'datetime'))\r\n\r\n //切换日历联动方式\r\n that.autoCalendarModel = function () {\r\n var state = that.rangeLinked;\r\n that.rangeLinked = (options.range && (options.type === 'date' || options.type === 'datetime'))\r\n && ((!that.startDate || !that.endDate) || (that.startDate && that.endDate && that.startDate.year === that.endDate.year && that.startDate.month === that.endDate.month));\r\n lay(that.elem)[that.rangeLinked ? 'addClass' : 'removeClass']('layui-laydate-linkage');\r\n return that.rangeLinked != state; // 返回发生了变化\r\n };\r\n\r\n //是否自动切换\r\n that.autoCalendarModel.auto = that.rangeLinked && options.rangeLinked === 'auto';\r\n\r\n //若 range 参数为数组,则表示为开始日期和结束日期的 input 对象\r\n if(layui.type(options.range) === 'array'){\r\n that.rangeElem = [\r\n lay(options.range[0]),\r\n lay(options.range[1])\r\n ];\r\n }\r\n\r\n //若 type 设置非法,则初始化为 date 类型\r\n if(!format[options.type]){\r\n window.console && console.error && console.error('laydate type error:\\''+ options.type + '\\' is not supported')\r\n options.type = 'date';\r\n }\r\n\r\n //根据不同 type,初始化默认 format\r\n if(options.format === format.date){\r\n options.format = format[options.type] || format.date;\r\n }\r\n\r\n //将日期格式转化成数组\r\n that.format = thisModule.formatArr(options.format);\r\n\r\n // 设置了一周的开始是周几,此处做一个控制\r\n if (options.weekStart) {\r\n if (!/^[0-6]$/.test(options.weekStart)) {\r\n var lang = that.lang();\r\n options.weekStart = lang.weeks.indexOf(options.weekStart);\r\n if (options.weekStart === -1) options.weekStart = 0;\r\n }\r\n }\r\n\r\n //生成正则表达式\r\n that.EXP_IF = '';\r\n that.EXP_SPLIT = '';\r\n lay.each(that.format, function(i, item){\r\n var EXP = new RegExp(dateType).test(item)\r\n ? '\\\\d{'+ function(){\r\n if(new RegExp(dateType).test(that.format[i === 0 ? i + 1 : i - 1]||'')){\r\n if(/^yyyy|y$/.test(item)) return 4;\r\n return item.length;\r\n }\r\n if(/^yyyy$/.test(item)) return '1,4';\r\n if(/^y$/.test(item)) return '1,308';\r\n return '1,2';\r\n }() +'}'\r\n : '\\\\' + item;\r\n that.EXP_IF = that.EXP_IF + EXP;\r\n that.EXP_SPLIT = that.EXP_SPLIT + '(' + EXP + ')';\r\n });\r\n //验证日期格式正则\r\n that.EXP_IF_ONE = new RegExp('^'+ that.EXP_IF +'$'); //验证单个日期格式\r\n that.EXP_IF = new RegExp('^'+ (\r\n options.range ?\r\n that.EXP_IF + '\\\\s\\\\'+ that.rangeStr + '\\\\s' + that.EXP_IF\r\n : that.EXP_IF\r\n ) +'$');\r\n that.EXP_SPLIT = new RegExp('^'+ that.EXP_SPLIT +'$', '');\r\n\r\n //如果不是 input|textarea 元素,则默认采用 click 事件\r\n if(!that.isInput(options.elem[0])){\r\n if(options.trigger === 'focus'){\r\n options.trigger = 'click';\r\n }\r\n }\r\n\r\n // 设置唯一 KEY\r\n options.elem.attr('lay-key', that.index);\r\n options.eventElem.attr('lay-key', that.index);\r\n options.elem.attr(MOD_ID, options.id); // 渲染过的标记\r\n\r\n\r\n //获取限制内日期\r\n lay.each(['min', 'max'], function(i, item){\r\n var ymd = [];\r\n var hms = [];\r\n if(typeof options[item] === 'number'){ //如果为数字\r\n var day = options[item]\r\n ,tDate = new Date()\r\n ,time = that.newDate({ //今天的最大毫秒数\r\n year: tDate.getFullYear()\r\n ,month: tDate.getMonth()\r\n ,date: tDate.getDate()\r\n ,hours: i ? 23 : 0\r\n ,minutes: i ? 59 : 0\r\n ,seconds: i ? 59 : 0\r\n }).getTime()\r\n ,STAMP = 86400000 //代表一天的毫秒数\r\n ,thisDate = new Date(\r\n day ? (\r\n day < STAMP ? time + day*STAMP : day //如果数字小于一天的毫秒数,则数字为天数,否则为毫秒数\r\n ) : time\r\n );\r\n ymd = [thisDate.getFullYear(), thisDate.getMonth() + 1, thisDate.getDate()];\r\n hms = [thisDate.getHours(), thisDate.getMinutes(), thisDate.getSeconds()];\r\n } else if(typeof options[item] === 'string') {\r\n ymd = (options[item].match(/\\d+-\\d+-\\d+/) || [''])[0].split('-');\r\n hms = (options[item].match(/\\d+:\\d+:\\d+/) || [''])[0].split(':');\r\n } else if(typeof options[item] === 'object'){\r\n return options[item];\r\n }\r\n options[item] = {\r\n year: ymd[0] | 0 || new Date().getFullYear()\r\n ,month: ymd[1] ? (ymd[1] | 0) - 1 : new Date().getMonth()\r\n ,date: ymd[2] | 0 || new Date().getDate()\r\n ,hours: hms[0] | 0\r\n ,minutes: hms[1] | 0\r\n ,seconds: hms[2] | 0\r\n };\r\n });\r\n\r\n that.elemID = 'layui-laydate'+ options.elem.attr('lay-key');\r\n\r\n if(options.show || isStatic) that.render();\r\n isStatic || that.events();\r\n\r\n // 重定义 input 元素的 get set\r\n if(typeof options.formatToDisplay === 'function'){\r\n if(that.isInput(options.elem[0])){\r\n that.formatToDisplay(options.elem[0], options.formatToDisplay);\r\n } else {\r\n var rangeElem = that.rangeElem;\r\n if(rangeElem){\r\n that.formatToDisplay(rangeElem[0][0], options.formatToDisplay);\r\n that.formatToDisplay(rangeElem[1][0], options.formatToDisplay);\r\n }\r\n }\r\n }\r\n\r\n //默认赋值\r\n if(options.value && options.isInitValue){\r\n if(layui.type(options.value) === 'date'){\r\n that.setValue(that.parse(0, that.systemDate(options.value)));\r\n } else {\r\n that.setValue(options.value);\r\n }\r\n }\r\n };\r\n\r\n //控件主体渲染\r\n Class.prototype.render = function(){\r\n var that = this\r\n ,options = that.config\r\n ,lang = that.lang()\r\n ,isStatic = options.position === 'static'\r\n\r\n //主面板\r\n ,elem = that.elem = lay.elem('div', {\r\n id: that.elemID\r\n ,\"class\": [\r\n 'layui-laydate'\r\n ,options.range ? ' layui-laydate-range' : ''\r\n ,that.rangeLinked ? ' layui-laydate-linkage' : ''\r\n ,isStatic ? (' '+ ELEM_STATIC) : ''\r\n ,options.fullPanel ? ' laydate-theme-fullpanel' : '' // 全面版\r\n // ,options.theme && options.theme !== 'default' && !/^#/.test(options.theme) ? (' laydate-theme-' + options.theme) : ''\r\n ,(function () {\r\n var themeStr = '';\r\n lay.each(options.theme, function (index, theme) {\r\n if (theme !== 'default' && !/^#/.test(theme)) {\r\n themeStr += ' laydate-theme-' + theme;\r\n }\r\n })\r\n return themeStr;\r\n })()\r\n ].join('')\r\n })\r\n\r\n //主区域\r\n ,elemMain = that.elemMain = []\r\n ,elemHeader = that.elemHeader = []\r\n ,elemCont = that.elemCont = []\r\n ,elemTable = that.table = []\r\n\r\n //底部区域\r\n ,divFooter = that.footer = lay.elem('div', {\r\n \"class\": ELEM_FOOTER\r\n })\r\n\r\n //快捷栏\r\n ,divShortcut = that.shortcut = lay.elem('ul', {\r\n \"class\": ELEM_SHORTCUT\r\n });\r\n\r\n if(options.zIndex) elem.style.zIndex = options.zIndex;\r\n\r\n //单双日历区域\r\n lay.each(new Array(2), function(i){\r\n if(!options.range && i > 0){\r\n return true;\r\n }\r\n\r\n //头部区域\r\n var divHeader = lay.elem('div', {\r\n \"class\": 'layui-laydate-header'\r\n })\r\n\r\n //左右切换\r\n ,headerChild = [function(){ //上一年\r\n var elem = lay.elem('i', {\r\n \"class\": 'layui-icon laydate-icon laydate-prev-y'\r\n });\r\n elem.innerHTML = '';\r\n return elem;\r\n }(), function(){ //上一月\r\n var elem = lay.elem('i', {\r\n \"class\": 'layui-icon laydate-icon laydate-prev-m'\r\n });\r\n elem.innerHTML = '';\r\n return elem;\r\n }(), function(){ //年月选择\r\n var elem = lay.elem('div', {\r\n \"class\": 'laydate-set-ym'\r\n }), spanY = lay.elem('span'), spanM = lay.elem('span');\r\n elem.appendChild(spanY);\r\n elem.appendChild(spanM);\r\n return elem;\r\n }(), function(){ //下一月\r\n var elem = lay.elem('i', {\r\n \"class\": 'layui-icon laydate-icon laydate-next-m'\r\n });\r\n elem.innerHTML = '';\r\n return elem;\r\n }(), function(){ //下一年\r\n var elem = lay.elem('i', {\r\n \"class\": 'layui-icon laydate-icon laydate-next-y'\r\n });\r\n elem.innerHTML = '';\r\n return elem;\r\n }()]\r\n\r\n //日历内容区域\r\n ,divContent = lay.elem('div', {\r\n \"class\": 'layui-laydate-content'\r\n })\r\n ,table = lay.elem('table')\r\n ,thead = lay.elem('thead'), theadTr = lay.elem('tr');\r\n\r\n //生成年月选择\r\n lay.each(headerChild, function(i, item){\r\n divHeader.appendChild(item);\r\n });\r\n\r\n //生成表格\r\n thead.appendChild(theadTr);\r\n lay.each(new Array(6), function(i){ //表体\r\n var tr = table.insertRow(0);\r\n lay.each(new Array(7), function(j){\r\n if(i === 0){\r\n var th = lay.elem('th');\r\n th.innerHTML = lang.weeks[(j + options.weekStart) % 7];\r\n theadTr.appendChild(th);\r\n }\r\n tr.insertCell(j);\r\n });\r\n });\r\n table.insertBefore(thead, table.children[0]); //表头\r\n divContent.appendChild(table);\r\n\r\n elemMain[i] = lay.elem('div', {\r\n \"class\": ELEM_MAIN + ' laydate-main-list-'+ i\r\n });\r\n\r\n elemMain[i].appendChild(divHeader);\r\n elemMain[i].appendChild(divContent);\r\n\r\n elemHeader.push(headerChild);\r\n elemCont.push(divContent);\r\n elemTable.push(table);\r\n });\r\n\r\n //生成底部栏\r\n lay(divFooter).html(function(){\r\n var html = [], btns = [];\r\n if(options.type === 'datetime'){\r\n html.push(''+ lang.timeTips +'');\r\n }\r\n if(!(!options.range && options.type === 'datetime') || options.fullPanel){\r\n html.push('')\r\n }\r\n\r\n lay.each(options.btns, function(i, item){\r\n var title = lang.tools[item] || 'btn';\r\n if(options.range && item === 'now') return;\r\n if(isStatic && item === 'clear') title = options.lang === 'cn' ? '重置' : 'Reset';\r\n btns.push(''+ title +'');\r\n });\r\n html.push('');\r\n return html.join('');\r\n }());\r\n\r\n // 生成快捷键栏\r\n if (options.shortcuts) {\r\n elem.appendChild(divShortcut);\r\n lay(divShortcut).html(function () {\r\n var shortcutBtns = [];\r\n lay.each(options.shortcuts, function (i, item) {\r\n shortcutBtns.push('
                  • '+item.text+'
                  • ')\r\n })\r\n return shortcutBtns.join('');\r\n }()).find('li').on('click', function (event) {\r\n var btnSetting = options.shortcuts[this.dataset['index']] || {};\r\n var value = (typeof btnSetting.value === 'function'\r\n ? btnSetting.value()\r\n : btnSetting.value) || [];\r\n if (!layui.isArray(value)) {\r\n value = [value];\r\n }\r\n var type = options.type;\r\n lay.each(value, function (i, item) {\r\n var dateTime = [options.dateTime, that.endDate][i];\r\n if (type === 'time' && layui.type(item) !== 'date') {\r\n if (that.EXP_IF.test(item)) {\r\n item = (item.match(that.EXP_SPLIT) || []).slice(1);\r\n lay.extend(dateTime, {hours: item[0] | 0, minutes: item[2] | 0, seconds: item[4] | 0})\r\n }\r\n } else {\r\n lay.extend(dateTime, that.systemDate(layui.type(item) === 'date' ? item : new Date(item)))\r\n }\r\n\r\n if (type === 'time' || type === 'datetime') {\r\n that[['startTime', 'endTime'][i]] = {\r\n hours: dateTime.hours,\r\n minutes: dateTime.minutes,\r\n seconds: dateTime.seconds,\r\n }\r\n }\r\n if (i === 0) { // 第一个值作为startDate\r\n that.startDate = lay.extend({}, dateTime);\r\n } else {\r\n that.endState = true;\r\n }\r\n if (type === 'year' || type === 'month' || type === 'time') {\r\n that.listYM[i] = [dateTime.year, dateTime.month + 1];\r\n } else if (i) {\r\n that.autoCalendarModel.auto && that.autoCalendarModel();\r\n }\r\n });\r\n that.checkDate('limit').calendar(null, null, 'init');\r\n\r\n var timeBtn = lay(that.footer).find('.'+ ELEM_TIME_BTN).removeClass(DISABLED);\r\n timeBtn && timeBtn.attr('lay-type') === 'date' && timeBtn[0].click();\r\n that.done(null, 'change');\r\n\r\n lay(this).addClass(THIS);\r\n\r\n // 自动确认\r\n if(options.position !== 'static'){\r\n that.setValue(that.parse()).done().remove();\r\n }\r\n /*\r\n if (options.position !== 'static' && !options.range && options.autoConfirm) {\r\n if (type === 'date') {\r\n that.choose(lay(elem).find('td.layui-this'))\r\n } else if (type === 'year' || type === 'month') {\r\n if(lay(elemMain[0]).find('.' + ELEM_MAIN + ' li.' + THIS + ':not(.laydate-disabled)')[0]) {\r\n that.setValue(that.parse()).done().remove();\r\n }\r\n }\r\n }\r\n */\r\n })\r\n }\r\n\r\n //插入到主区域\r\n lay.each(elemMain, function(i, main){\r\n elem.appendChild(main);\r\n });\r\n options.showBottom && elem.appendChild(divFooter);\r\n\r\n // 生成自定义主题\r\n var style = lay.elem('style');\r\n var styleText = [];\r\n var colorTheme;\r\n var isPrimaryColor = true;\r\n lay.each(options.theme, function (index, theme) {\r\n // 主色\r\n if(isPrimaryColor && /^#/.test(theme)){\r\n colorTheme = true;\r\n isPrimaryColor = false;\r\n styleText.push([\r\n '#{{id}} .layui-laydate-header{background-color:{{theme}};}',\r\n '#{{id}} li.layui-this,#{{id}} td.layui-this>div{background-color:{{theme}} !important;}',\r\n options.theme.indexOf('circle') !== -1 ? '' : '#{{id}} .layui-this{background-color:{{theme}} !important;}',\r\n '#{{id}} .laydate-day-now{color:{{theme}} !important;}',\r\n '#{{id}} .laydate-day-now:after{border-color:{{theme}} !important;}'\r\n ].join('').replace(/{{id}}/g, that.elemID).replace(/{{theme}}/g, theme));\r\n return;\r\n }\r\n // 第二个自定义颜色作为辅色\r\n if(!isPrimaryColor && /^#/.test(theme)){\r\n styleText.push([\r\n '#{{id}} .laydate-selected>div{background-color:{{theme}} !important;}',\r\n '#{{id}} .laydate-selected:hover>div{background-color:{{theme}} !important;}'\r\n ].join('').replace(/{{id}}/g, that.elemID).replace(/{{theme}}/g, theme));\r\n }\r\n });\r\n //快捷栏样式\r\n if (options.shortcuts && options.range) {\r\n styleText.push('#{{id}}.layui-laydate-range{width: 628px;}'.replace(/{{id}}/g, that.elemID))\r\n }\r\n if (styleText.length) {\r\n styleText = styleText.join('');\r\n if('styleSheet' in style){\r\n style.setAttribute('type', 'text/css');\r\n style.styleSheet.cssText = styleText;\r\n } else {\r\n style.innerHTML = styleText;\r\n }\r\n\r\n colorTheme && lay(elem).addClass('laydate-theme-molv');\r\n elem.appendChild(style);\r\n }\r\n\r\n //移除上一个控件\r\n that.remove(Class.thisElemDate);\r\n\r\n //记录当前执行的实例索引\r\n laydate.thisId = options.id;\r\n\r\n //如果是静态定位,则插入到指定的容器中,否则,插入到body\r\n isStatic ? options.elem.append(elem) : (\r\n document.body.appendChild(elem)\r\n ,that.position() //定位\r\n );\r\n\r\n var shade = options.shade ? ('
                    ') : '';\r\n elem.insertAdjacentHTML('beforebegin', shade);\r\n\r\n that.checkDate().calendar(null, 0, 'init'); //初始校验\r\n that.changeEvent(); //日期切换\r\n\r\n Class.thisElemDate = that.elemID;\r\n\r\n that.renderAdditional()\r\n typeof options.ready === 'function' && options.ready(lay.extend({}, options.dateTime, {\r\n month: options.dateTime.month + 1\r\n }));\r\n\r\n that.preview();\r\n };\r\n\r\n //控件移除\r\n Class.prototype.remove = function(prev){\r\n var that = this\r\n ,options = that.config\r\n ,elem = lay('#'+ (prev || that.elemID));\r\n if(!elem[0]) return that;\r\n\r\n if(!elem.hasClass(ELEM_STATIC)){\r\n that.checkDate(function(){\r\n elem.remove();\r\n //delete options.dateTime;\r\n delete that.startDate;\r\n delete that.endDate;\r\n delete that.endState;\r\n delete that.startTime;\r\n delete that.endTime;\r\n delete laydate.thisId;\r\n typeof options.close === 'function' && options.close(that);\r\n });\r\n }\r\n lay('.' + ELEM_SHADE).remove();\r\n return that;\r\n };\r\n\r\n //定位算法\r\n Class.prototype.position = function(){\r\n var that = this\r\n ,options = that.config;\r\n lay.position(options.elem[0], that.elem, {\r\n position: options.position\r\n });\r\n return that;\r\n };\r\n\r\n // 提示\r\n Class.prototype.hint = function(opts){\r\n var that = this;\r\n var options = that.config;\r\n var div = lay.elem('div', {\r\n \"class\": ELEM_HINT\r\n });\r\n\r\n if(!that.elem) return;\r\n\r\n // 兼容旧版参数\r\n if(typeof opts === 'object'){\r\n opts = opts || {};\r\n } else {\r\n opts = {\r\n content: opts\r\n }\r\n }\r\n\r\n div.innerHTML = opts.content || '';\r\n lay(that.elem).find('.'+ ELEM_HINT).remove();\r\n that.elem.appendChild(div);\r\n\r\n clearTimeout(that.hinTimer);\r\n that.hinTimer = setTimeout(function(){\r\n lay(that.elem).find('.'+ ELEM_HINT).remove();\r\n }, 'ms' in opts ? opts.ms : 3000);\r\n };\r\n\r\n //获取递增/减后的年月\r\n Class.prototype.getAsYM = function(Y, M, type){\r\n type ? M-- : M++;\r\n if(M < 0){\r\n M = 11;\r\n Y--;\r\n }\r\n if(M > 11){\r\n M = 0;\r\n Y++;\r\n }\r\n return [Y, M];\r\n };\r\n\r\n //系统日期\r\n Class.prototype.systemDate = function(newDate){\r\n var thisDate = newDate || new Date();\r\n return {\r\n year: thisDate.getFullYear() //年\r\n ,month: thisDate.getMonth() //月\r\n ,date: thisDate.getDate() //日\r\n ,hours: newDate ? newDate.getHours() : 0 //时\r\n ,minutes: newDate ? newDate.getMinutes() : 0 //分\r\n ,seconds: newDate ? newDate.getSeconds() : 0 //秒\r\n }\r\n };\r\n\r\n //日期校验\r\n Class.prototype.checkDate = function(fn){\r\n var that = this\r\n ,thisDate = new Date()\r\n ,options = that.config\r\n ,lang = that.lang()\r\n ,dateTime = options.dateTime = options.dateTime || that.systemDate()\r\n ,thisMaxDate, error\r\n\r\n ,elem = options.elem[0]\r\n ,valType = that.isInput(elem) ? 'val' : 'html'\r\n ,value = function(){\r\n //如果传入了开始和结束日期的 input 对象,则将其拼接为日期范围字符\r\n if(that.rangeElem){\r\n var vals = [that.rangeElem[0].val(), that.rangeElem[1].val()];\r\n\r\n if(vals[0] && vals[1]){\r\n return vals.join(' ' + that.rangeStr + ' ');\r\n }\r\n }\r\n return that.isInput(elem)\r\n ? elem.value\r\n : (options.position === 'static' ? '' : lay(elem).attr('lay-date'));\r\n }()\r\n\r\n //校验日期有效数字\r\n ,checkValid = function(dateTime){\r\n if (!dateTime) {\r\n return;\r\n }\r\n if(dateTime.year > LIMIT_YEAR[1]) dateTime.year = LIMIT_YEAR[1], error = true; //不能超过20万年\r\n if(dateTime.month > 11) dateTime.month = 11, error = true;\r\n if(dateTime.seconds > 59) dateTime.seconds = 0, dateTime.minutes++, error = true;\r\n if(dateTime.minutes > 59) dateTime.minutes = 0, dateTime.hours++, error = true;\r\n if(dateTime.hours > 23) dateTime.hours = 0, error = true;\r\n\r\n //计算当前月的最后一天\r\n thisMaxDate = laydate.getEndDate(dateTime.month + 1, dateTime.year);\r\n if(dateTime.date > thisMaxDate) dateTime.date = thisMaxDate, error = true;\r\n }\r\n\r\n //获得初始化日期值\r\n ,initDate = function(dateTime, value, index){\r\n var startEnd = ['startTime', 'endTime'];\r\n value = (value.match(that.EXP_SPLIT) || []).slice(1);\r\n index = index || 0;\r\n\r\n if(options.range){\r\n that[startEnd[index]] = that[startEnd[index]] || {};\r\n }\r\n lay.each(that.format, function(i, item){\r\n var thisv = parseFloat(value[i]);\r\n if(value[i].length < item.length) error = true;\r\n if(/yyyy|y/.test(item)){ //年\r\n if(thisv < LIMIT_YEAR[0]) thisv = LIMIT_YEAR[0], error = true; //年不能低于100年\r\n dateTime.year = thisv;\r\n } else if(/MM|M/.test(item)){ //月\r\n if(thisv < 1) thisv = 1, error = true;\r\n dateTime.month = thisv - 1;\r\n } else if(/dd|d/.test(item)){ //日\r\n if(thisv < 1) thisv = 1, error = true;\r\n dateTime.date = thisv;\r\n } else if(/HH|H/.test(item)){ //时\r\n if (thisv < 0) thisv = 0, error = true;\r\n if (thisv > 23) thisv = 23, error = true;\r\n dateTime.hours = thisv;\r\n options.range && (that[startEnd[index]].hours = thisv);\r\n } else if(/mm|m/.test(item)){ //分\r\n if (thisv < 0) thisv = 0, error = true;\r\n if (thisv > 59) thisv = 59, error = true;\r\n dateTime.minutes = thisv;\r\n options.range && (that[startEnd[index]].minutes = thisv);\r\n } else if(/ss|s/.test(item)){ //秒\r\n if (thisv < 0) thisv = 0, error = true;\r\n if (thisv > 59) thisv = 59, error = true;\r\n dateTime.seconds = thisv;\r\n options.range && (that[startEnd[index]].seconds = thisv);\r\n }\r\n });\r\n checkValid(dateTime);\r\n };\r\n\r\n if(fn === 'limit') {\r\n if (options.range) {\r\n checkValid(that.rangeLinked ? that.startDate : dateTime); // 校验开始时间\r\n that.endDate && checkValid(that.endDate); // 校验结束时间\r\n } else {\r\n checkValid(dateTime);\r\n }\r\n return that;\r\n }\r\n\r\n value = value || options.value;\r\n if(typeof value === 'string'){\r\n value = value.replace(/\\s+/g, ' ').replace(/^\\s|\\s$/g, '');\r\n }\r\n\r\n //如果开启范围,则计算结束日期\r\n var getEndDate = function(){\r\n if(options.range){\r\n that.endDate = that.endDate || lay.extend({}, options.dateTime, function(){\r\n var obj = {}\r\n ,dateTime = options.dateTime\r\n ,EYM = that.getAsYM(dateTime.year, dateTime.month);\r\n\r\n //初始右侧面板的年月\r\n if(options.type === 'year'){\r\n obj.year = dateTime.year + 1;\r\n } else if(options.type !== 'time'){\r\n obj.year = EYM[0];\r\n obj.month = EYM[1];\r\n }\r\n\r\n //初始右侧面板的时间\r\n if(options.type === 'datetime' || options.type === 'time'){\r\n obj.hours = 23;\r\n obj.minutes = obj.seconds = 59;\r\n }\r\n\r\n return obj;\r\n }());\r\n }\r\n };\r\n getEndDate();\r\n\r\n if(typeof value === 'string' && value){\r\n if(that.EXP_IF.test(value)){ //校验日期格式\r\n if(options.range){\r\n value = value.split(' '+ that.rangeStr +' ');\r\n lay.each([options.dateTime, that.endDate], function(i, item){\r\n initDate(item, value[i], i);\r\n });\r\n } else {\r\n initDate(dateTime, value);\r\n }\r\n } else {\r\n //格式不合法\r\n that.hint(lang.formatError[0] + (\r\n options.range ? (options.format + ' '+ that.rangeStr +' ' + options.format) : options.format\r\n ) + lang.formatError[1]);\r\n error = true;\r\n }\r\n } else if(value && layui.type(value) === 'date'){ //若值为日期对象\r\n options.dateTime = that.systemDate(value);\r\n } else {\r\n //重置开始日期\r\n options.dateTime = that.systemDate();\r\n delete that.startTime;\r\n\r\n //重置结束日期\r\n delete that.endDate; //删除原有的结束日期\r\n getEndDate(); //并重新获得新的结束日期\r\n delete that.endTime;\r\n }\r\n\r\n //从日期范围表单中获取初始值\r\n (function(){\r\n if(that.rangeElem){\r\n var vals = [that.rangeElem[0].val(), that.rangeElem[1].val()]\r\n ,arrDate = [options.dateTime, that.endDate];\r\n lay.each(vals, function(_i, _v){\r\n if(that.EXP_IF_ONE.test(_v)){ //校验日期格式\r\n initDate(arrDate[_i], _v, _i);\r\n }\r\n });\r\n }\r\n })();\r\n\r\n // 校验日期有效数字\r\n checkValid(dateTime);\r\n if(options.range) checkValid(that.endDate);\r\n\r\n // 如果初始值格式错误,则纠正初始值\r\n if(error && value){\r\n that.setValue(\r\n options.range ? (that.endDate ? that.parse() : '') : that.parse()\r\n );\r\n }\r\n\r\n //如果当前日期不在设定的最大小日期区间,则自动纠正在可选区域\r\n //校验主面板是否在可选日期区间\r\n var minMaxError;\r\n if(that.getDateTime(dateTime) > that.getDateTime(options.max)){ //若超出最大日期\r\n dateTime = options.dateTime = lay.extend({}, options.max);\r\n minMaxError = true;\r\n } else if(that.getDateTime(dateTime) < that.getDateTime(options.min)){ //若少于最小日期\r\n dateTime = options.dateTime = lay.extend({}, options.min);\r\n minMaxError = true;\r\n }\r\n\r\n //校验右侧面板是否在可选日期区间\r\n if(options.range){\r\n if(that.getDateTime(that.endDate) < that.getDateTime(options.min) || that.getDateTime(that.endDate) > that.getDateTime(options.max)){\r\n that.endDate = lay.extend({}, options.max);\r\n minMaxError = true;\r\n }\r\n // 有时间范围的情况下初始化startTime和endTime\r\n that.startTime = {\r\n hours: options.dateTime.hours,\r\n minutes: options.dateTime.minutes,\r\n seconds: options.dateTime.seconds,\r\n }\r\n that.endTime = {\r\n hours: that.endDate.hours,\r\n minutes: that.endDate.minutes,\r\n seconds: that.endDate.seconds,\r\n }\r\n // 如果是年月范围,将对应的日期统一成当月的1日进行比较,避免出现同一个月但是开始日期大于结束日期的情况\r\n if (options.type === 'month') {\r\n options.dateTime.date = 1;\r\n that.endDate.date = 1;\r\n }\r\n }\r\n\r\n // 初始值不在最大最小范围内\r\n if(minMaxError && value){\r\n that.setValue(that.parse());\r\n that.hint('value ' + lang.invalidDate + lang.formatError[1]);\r\n }\r\n\r\n // 初始赋值 startDate,endState\r\n that.startDate = that.startDate || value && lay.extend({}, options.dateTime); // 有默认值才初始化startDate\r\n that.autoCalendarModel.auto && that.autoCalendarModel();\r\n that.endState = !options.range || !that.rangeLinked || !!(that.startDate && that.endDate); // 初始化选中范围状态\r\n\r\n fn && fn();\r\n return that;\r\n };\r\n\r\n /**\r\n * 渲染备注\r\n * @param {JQuery} tdElem td 元素\r\n * @param {[number, number, number]} YMD 年月日\r\n * @param {object | string} markers 备注信息\r\n */\r\n Class.prototype.markRender = function(tdElem, YMD, markers){\r\n var markText;\r\n\r\n if(typeof markers === 'object'){\r\n lay.each(markers || {}, function(key, title){\r\n var keys = key.split('-');\r\n if((keys[0] == YMD[0] || keys[0] == 0) //每年的每月\r\n && (keys[1] == YMD[1] || keys[1] == 0) //每月的每日\r\n && keys[2] == YMD[2]){ //特定日\r\n markText = title || YMD[2];\r\n }\r\n });\r\n }else if(typeof markers === 'string'){\r\n markText = markers || YMD[2];\r\n }\r\n\r\n markText && tdElem.find('div').html(''+ markText +'');\r\n }\r\n\r\n /**\r\n * 公历重要日期与自定义备注\r\n * @param {JQuery} td \r\n * @param {[number, number, number]} YMD \r\n * @returns Class\r\n */\r\n Class.prototype.mark = function(td, YMD){\r\n var that = this;\r\n var options = that.config;\r\n\r\n var render = function(markers){\r\n that.markRender(td, YMD, markers);\r\n }\r\n\r\n if(options.calendar && options.lang === 'cn'){\r\n render(that.markerOfChineseFestivals);\r\n } \r\n\r\n if(typeof options.mark === 'function'){\r\n options.mark({year: YMD[0], month: YMD[1], date: YMD[2]}, render);\r\n }else if(typeof options.mark === 'object'){\r\n render(options.mark);\r\n }\r\n\r\n return that;\r\n };\r\n\r\n /**\r\n * 渲染法定节假日或补假上班标记\r\n * @param {JQuery} tdElem td 元素\r\n * @param {[number, number, number]} YMD 年月日\r\n * @param {[Array, Array] | string} markers 标记信息\r\n */\r\n Class.prototype.holidaysRender = function(tdElem, YMD, markers){\r\n var type = ['holidays', 'workdays'];\r\n\r\n var isEquals = function(ymdStr1, ymdStr2){\r\n var ymd1 = ymdStr1.split('-');\r\n var ymd2 = ymdStr2.split('-');\r\n\r\n lay.each(ymd1, function(i,v){\r\n ymd1[i] = parseInt(v, 10);\r\n })\r\n lay.each(ymd2, function(i,v){\r\n ymd2[i] = parseInt(v, 10);\r\n })\r\n \r\n return ymd1.join('-') === ymd2.join('-');\r\n }\r\n\r\n var insertHtml = function(el, type, text){\r\n el.find('div').html([\r\n '',\r\n text,\r\n ''\r\n ].join(''));\r\n }\r\n \r\n if(layui.type(markers) === 'array'){\r\n lay.each(markers, function(idx, item) {\r\n lay.each(item, function(i, dayStr) {\r\n if(isEquals(dayStr, tdElem.attr('lay-ymd'))){\r\n insertHtml(tdElem, type[idx], YMD[2])\r\n }\r\n });\r\n });\r\n }else if(typeof markers === 'string'){\r\n if(type.indexOf(markers) !== -1){\r\n insertHtml(tdElem, markers, YMD[2])\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * 标注法定节假日或补假上班\r\n * @param {JQuery} td \r\n * @param {[number, number, number]} YMD \r\n * @returns Class\r\n */\r\n Class.prototype.holidays = function(td, YMD) {\r\n var that = this;\r\n var options = that.config;\r\n\r\n var render = function(markers){\r\n that.holidaysRender(td, YMD, markers);\r\n }\r\n\r\n if(typeof options.holidays === 'function'){\r\n options.holidays({year: YMD[0], month: YMD[1], date: YMD[2]}, render);\r\n }else if(layui.type(options.holidays) === 'array'){\r\n render(options.holidays);\r\n }\r\n\r\n return that;\r\n };\r\n\r\n /**\r\n * 自定义单元格\r\n * @param {HTMLElement|Array} el - 单元格元素\r\n * @param {{year:number, month:number, date:number}} dateObj - 当前单元格对应的日期信息\r\n * @param {'year' | 'month' | 'date'} panelMode - 面板模式\r\n * @returns \r\n */\r\n Class.prototype.cellRender = function(el, dateObj, panelMode){\r\n var that = this;\r\n var options = that.config;\r\n\r\n if(typeof options.cellRender === 'function'){\r\n var render = function(content){\r\n if(typeof content === 'string'){\r\n lay(el).html(content);\r\n }else if(typeof content === 'object'){\r\n lay(el).html('').append(lay(content)[0]);\r\n }\r\n }\r\n options.cellRender(dateObj, render, {originElem: el, type: panelMode})\r\n }\r\n\r\n return that;\r\n }\r\n\r\n /**\r\n * 给定年份的开始日期\r\n * @param {Date} date \r\n */\r\n Class.prototype.startOfYear = function(date){\r\n var newDate = new Date(date);\r\n newDate.setFullYear(newDate.getFullYear(), 0, 1);\r\n newDate.setHours(0, 0, 0, 0);\r\n return newDate;\r\n }\r\n\r\n /**\r\n * 给定年份的结束日期\r\n * @param {Date} date\r\n */\r\n Class.prototype.endOfYear = function(date){\r\n var newDate = new Date(date);\r\n var year = newDate.getFullYear();\r\n newDate.setFullYear(year + 1, 0, 0);\r\n newDate.setHours(23, 59, 59, 999);\r\n return newDate;\r\n }\r\n\r\n /**\r\n * 给定月份的开始日期\r\n * @param {Date} date \r\n */\r\n Class.prototype.startOfMonth = function(date){\r\n var newDate = new Date(date);\r\n newDate.setDate(1);\r\n newDate.setHours(0, 0, 0, 0);\r\n return newDate;\r\n }\r\n\r\n /**\r\n * 给定月份的结束日期\r\n * @param {Date} date \r\n */\r\n Class.prototype.endOfMonth = function(date){\r\n var newDate = new Date(date);\r\n var month = newDate.getMonth();\r\n newDate.setFullYear(newDate.getFullYear(), month + 1, 0);\r\n newDate.setHours(23, 59, 59, 999);\r\n return newDate;\r\n }\r\n\r\n /**\r\n * 将指定的天数添加到给定日期\r\n * @param {Date} date 要更改的日期\r\n * @param {number} amount 天数\r\n */\r\n Class.prototype.addDays = function(date, amount){\r\n var newDate = new Date(date);\r\n if(!amount) return newDate;\r\n newDate.setDate(newDate.getDate() + amount);\r\n return newDate;\r\n }\r\n\r\n /**\r\n * 不可选取的年或月。年或月中的所有日期都禁用时,才判定为不可选取。\r\n * @param {Date} date 要检测的年或月\r\n * @param {'year' | 'month'} type 面板类型\r\n * @param {'start' | 'end'} position 面板位置\r\n */\r\n Class.prototype.isDisabledYearOrMonth = function(date, type, position){\r\n var that = this;\r\n var options = that.config;\r\n var millisecondsInDay = 24 * 60 * 60 * 1000;\r\n\r\n var startDay = type === 'year' ? that.startOfYear(date) : that.startOfMonth(date);\r\n var endDay = type === 'year' ? that.endOfYear(date) : that.endOfMonth(date);\r\n var numOfDays = Math.floor((endDay.getTime() - startDay.getTime()) / millisecondsInDay) + 1;\r\n var disabledCount = 0;\r\n \r\n for(var i = 0; i < numOfDays; i++){\r\n var day = that.addDays(startDay, i);\r\n if(options.disabledDate.call(options, day, position)){\r\n disabledCount++;\r\n }\r\n }\r\n\r\n return disabledCount === numOfDays;\r\n }\r\n\r\n /**\r\n * @typedef limitOptions\r\n * @prop {JQuery} [elem] - 检测的元素, 例如面板中年月日时分秒元素,“现在”,“确认” 按钮等\r\n * @prop {number} [index] - 元素集合中,当前检测元素的索引,years:0,month:0,date:0-41,hms:0\r\n * @prop {['hours', 'minutes', 'seconds'] | ['hours', 'minutes'] | ['hours']} [time] - 是否比较时分秒\r\n * @prop {'year'|'month'|string} [type] - 面板类型?\r\n * @prop {0 | 1} [rangeType] - 面板索引, 0 表示 start, 1 表示 end\r\n * @prop {Partial<{year:number,month: number,date:number,hours:number,minutes:number,seconds:number}>} [date] - 检测的日期时间对象\r\n * @prop {'date' | 'time' | 'datetime'} disabledType - 禁用类型,按钮应使用 datetime\r\n */\r\n /**\r\n * 不可选取的日期\r\n * @param {number} date 当前检测的日期的时间戳\r\n * @param {limitOptions} opts\r\n * @returns {boolean}\r\n */\r\n Class.prototype.isDisabledDate = function(date, opts){\r\n opts = opts || {};\r\n\r\n var that = this;\r\n var options = that.config;\r\n var position = options.range ? (opts.rangeType === 0 ? 'start' : 'end') : 'start';\r\n \r\n if(!options.disabledDate) return false;\r\n if(options.type === 'time') return false;\r\n if(!(opts.disabledType === 'date' || opts.disabledType === 'datetime')) return false;\r\n\r\n // 不需要时分秒\r\n var normalizedDate = new Date(date);\r\n normalizedDate.setHours(0, 0, 0, 0);\r\n \r\n return opts.type === 'year' || opts.type === 'month'\r\n ? that.isDisabledYearOrMonth(normalizedDate, opts.type, position)\r\n : options.disabledDate.call(options, normalizedDate, position);\r\n }\r\n\r\n /**\r\n * 不可选取的时间\r\n * @param {number} date 当前检测的日期的时间戳\r\n * @param {limitOptions} opts\r\n * @returns {boolean}\r\n */\r\n Class.prototype.isDisabledTime = function(date, opts){\r\n opts = opts || {};\r\n\r\n var that = this;\r\n var options = that.config;\r\n var position = options.range ? (opts.rangeType === 0 ? 'start' : 'end') : 'start';\r\n \r\n if(!options.disabledTime) return false;\r\n if(!(options.type === \"time\" || options.type === \"datetime\")) return false;\r\n if(!(opts.disabledType === 'time' || opts.disabledType === 'datetime')) return false;\r\n\r\n var isDisabledItem = function(compareVal, rangeFn, rangeFnParam){\r\n return function(){\r\n return (typeof rangeFn === 'function' && rangeFn.apply(options, rangeFnParam) || []).indexOf(compareVal) !== -1;\r\n } \r\n }\r\n\r\n var dateObj = that.systemDate(new Date(date));\r\n var disabledTime = options.disabledTime.call(options, that.newDate(dateObj), position) || {};\r\n\r\n // 面板中的时分秒 HTML 元素需要分别检测是否禁用\r\n // 按钮检测任意一项是否禁用即可\r\n return opts.disabledType === 'datetime'\r\n ? isDisabledItem(dateObj.hours, disabledTime.hours)()\r\n || isDisabledItem(dateObj.minutes, disabledTime.minutes, [dateObj.hours])()\r\n || isDisabledItem(dateObj.seconds, disabledTime.seconds, [dateObj.hours, dateObj.minutes])()\r\n : [isDisabledItem(dateObj.hours, disabledTime.hours),\r\n isDisabledItem(dateObj.minutes, disabledTime.minutes, [dateObj.hours]),\r\n isDisabledItem(dateObj.seconds, disabledTime.seconds, [dateObj.hours, dateObj.minutes])][opts.time.length - 1]();\r\n }\r\n\r\n /**\r\n * 不可选取的日期时间\r\n * @param {number} timestamp 当前检测的日期的时间戳\r\n * @param {limitOptions} opts \r\n * @returns \r\n */\r\n Class.prototype.isDisabledDateTime = function(timestamp, opts){\r\n opts = opts || {};\r\n\r\n var that = this;\r\n var options = that.config;\r\n\r\n return that.isDisabledDate(timestamp, opts) || that.isDisabledTime(timestamp, opts);\r\n }\r\n\r\n\r\n /**\r\n * 无效日期范围的标记\r\n * @param {limitOptions} opts \r\n * \r\n */\r\n Class.prototype.limit = function(opts){\r\n opts = opts || {};\r\n\r\n var that = this;\r\n var options = that.config;\r\n var timestamp = {}\r\n var dateTime = opts.index > (opts.time ? 0 : 41) ? that.endDate : options.dateTime;\r\n var isOut;\r\n\r\n lay.each({\r\n now: lay.extend({}, dateTime, opts.date || {})\r\n ,min: options.min\r\n ,max: options.max\r\n }, function(key, item){\r\n timestamp[key] = that.newDate(lay.extend({\r\n year: item.year\r\n ,month: opts.type === 'year' ? 0 : item.month // 年份的时候只比较年\r\n ,date: (opts.type === 'year' || opts.type === 'month') ? 1 : item.date // 年月只比较年月不与最大最小比日期\r\n }, function(){\r\n var hms = {};\r\n lay.each(opts.time, function(i, keys){\r\n hms[keys] = item[keys];\r\n });\r\n return hms;\r\n }())).getTime(); //time:是否比较时分秒\r\n });\r\n\r\n isOut = timestamp.now < timestamp.min || timestamp.now > timestamp.max || that.isDisabledDateTime(timestamp.now, opts);\r\n opts.elem && opts.elem[isOut ? 'addClass' : 'removeClass'](DISABLED);\r\n\r\n return isOut;\r\n };\r\n\r\n //当前日期对象\r\n Class.prototype.thisDateTime = function(index){\r\n var that = this\r\n ,options = that.config;\r\n return index ? that.endDate: options.dateTime;\r\n };\r\n\r\n //日历表\r\n Class.prototype.calendar = function(value, index, type){\r\n index = index ? 1 : 0;\r\n var that = this\r\n ,options = that.config\r\n ,dateTime = value || that.thisDateTime(index)\r\n ,thisDate = new Date(), startWeek, prevMaxDate, thisMaxDate\r\n ,lang = that.lang()\r\n\r\n ,isAlone = options.type !== 'date' && options.type !== 'datetime'\r\n ,tds = lay(that.table[index]).find('td')\r\n ,elemYM = lay(that.elemHeader[index][2]).find('span');\r\n\r\n if(dateTime.year < LIMIT_YEAR[0]) dateTime.year = LIMIT_YEAR[0], that.hint(lang.invalidDate);\r\n if(dateTime.year > LIMIT_YEAR[1]) dateTime.year = LIMIT_YEAR[1], that.hint(lang.invalidDate);\r\n\r\n //记录初始值\r\n if(!that.firstDate){\r\n that.firstDate = lay.extend({}, dateTime);\r\n }\r\n\r\n //计算当前月第一天的星期\r\n thisDate.setFullYear(dateTime.year, dateTime.month, 1);\r\n startWeek = (thisDate.getDay() + (7 - options.weekStart)) % 7;\r\n\r\n prevMaxDate = laydate.getEndDate(dateTime.month || 12, dateTime.year); //计算上个月的最后一天\r\n thisMaxDate = laydate.getEndDate(dateTime.month + 1, dateTime.year); //计算当前月的最后一天\r\n\r\n //赋值日\r\n lay.each(tds, function(index_, item){\r\n var YMD = [dateTime.year, dateTime.month], st;\r\n item = lay(item);\r\n item.removeAttr(\"class\");\r\n if(index_ < startWeek){\r\n st = prevMaxDate - startWeek + index_;\r\n item.addClass('laydate-day-prev');\r\n YMD = that.getAsYM(dateTime.year, dateTime.month, 'sub');\r\n } else if(index_ >= startWeek && index_ < thisMaxDate + startWeek){\r\n st = index_ - startWeek;\r\n if (!that.rangeLinked) {\r\n st + 1 === dateTime.date && item.addClass(THIS);\r\n }\r\n } else {\r\n st = index_ - thisMaxDate - startWeek;\r\n item.addClass('laydate-day-next');\r\n YMD = that.getAsYM(dateTime.year, dateTime.month);\r\n }\r\n YMD[1]++;\r\n YMD[2] = st + 1;\r\n item.attr('lay-ymd', YMD.join('-')).html('
                    ' + YMD[2] + '
                    ');\r\n that.mark(item, YMD).holidays(item, YMD).limit({\r\n elem: item,\r\n date: {\r\n year: YMD[0],\r\n month: YMD[1] - 1,\r\n date: YMD[2]\r\n },\r\n index: index_,\r\n rangeType: index,\r\n disabledType: 'date' // 日面板,检测当前日期是否禁用\r\n });\r\n that.cellRender(item, {year: YMD[0], month: YMD[1], date: YMD[2]}, 'date');\r\n });\r\n\r\n //同步头部年月\r\n lay(elemYM[0]).attr('lay-ym', dateTime.year + '-' + (dateTime.month + 1));\r\n lay(elemYM[1]).attr('lay-ym', dateTime.year + '-' + (dateTime.month + 1));\r\n\r\n if(options.lang === 'cn'){\r\n lay(elemYM[0]).attr('lay-type', 'year').html(dateTime.year + ' 年')\r\n lay(elemYM[1]).attr('lay-type', 'month').html((dateTime.month + 1) + ' 月');\r\n } else {\r\n lay(elemYM[0]).attr('lay-type', 'month').html(lang.month[dateTime.month]);\r\n lay(elemYM[1]).attr('lay-type', 'year').html(dateTime.year);\r\n }\r\n\r\n //初始默认选择器\r\n if(isAlone){ //年、月等独立选择器\r\n if(options.range){\r\n if(value || type !== 'init'){ // 判断是否需要显示年月时间列表\r\n that.listYM = [\r\n [(that.startDate || options.dateTime).year, (that.startDate || options.dateTime).month + 1]\r\n ,[that.endDate.year, that.endDate.month + 1]\r\n ];\r\n that.list(options.type, 0).list(options.type, 1);\r\n\r\n //同步按钮可点状态\r\n options.type === 'time' ? that.setBtnStatus('时间'\r\n ,lay.extend({}, that.systemDate(), that.startTime)\r\n ,lay.extend({}, that.systemDate(), that.endTime)\r\n ) : that.setBtnStatus(true);\r\n }\r\n } else {\r\n that.listYM = [[dateTime.year, dateTime.month + 1]];\r\n that.list(options.type, 0);\r\n }\r\n }\r\n\r\n //初始赋值双日历\r\n if(options.range && type === 'init'){\r\n //执行渲染第二个日历\r\n if (that.rangeLinked) {\r\n var EYM = that.getAsYM(dateTime.year, dateTime.month, index ? 'sub' : null)\r\n that.calendar(lay.extend({}, dateTime, {\r\n year: EYM[0]\r\n ,month: EYM[1]\r\n }), 1 - index); // 渲染另外一个\r\n } else {\r\n that.calendar(null, 1 - index);\r\n }\r\n }\r\n\r\n // 通过检测当前有效日期,来设定底部按钮状态\r\n if(!options.range){\r\n var timeParams = ['hours', 'minutes', 'seconds'];\r\n\r\n // 现在按钮\r\n that.limit({\r\n elem: lay(that.footer).find(ELEM_NOW),\r\n date: that.systemDate(/^(datetime|time)$/.test(options.type) ? new Date() : null),\r\n index: 0,\r\n time: timeParams,\r\n disabledType: 'datetime' // 按钮,检测日期和时间\r\n });\r\n // 确认按钮\r\n that.limit({\r\n elem: lay(that.footer).find(ELEM_CONFIRM),\r\n index: 0,\r\n time: timeParams,\r\n disabledType: 'datetime' // 按钮,检测日期和时间\r\n });\r\n }\r\n\r\n //同步按钮可点状态\r\n that.setBtnStatus();\r\n\r\n // 重置快捷栏选中状态\r\n lay(that.shortcut).find('li.' + THIS).removeClass(THIS);\r\n\r\n //标记选择范围\r\n if(options.range && !isAlone && type !== 'init') that.stampRange();\r\n\r\n return that;\r\n };\r\n\r\n //生成年月时分秒列表\r\n Class.prototype.list = function(type, index){\r\n var that = this\r\n ,options = that.config\r\n ,dateTime = that.rangeLinked ? options.dateTime : [options.dateTime, that.endDate][index]\r\n ,lang = that.lang()\r\n ,isAlone = options.range && options.type !== 'date' && options.type !== 'datetime' //独立范围选择器\r\n\r\n ,ul = lay.elem('ul', {\r\n \"class\": ELEM_LIST + ' ' + ({\r\n year: 'laydate-year-list'\r\n ,month: 'laydate-month-list'\r\n ,time: 'laydate-time-list'\r\n })[type]\r\n })\r\n ,elemHeader = that.elemHeader[index]\r\n ,elemYM = lay(elemHeader[2]).find('span')\r\n ,elemCont = that.elemCont[index || 0]\r\n ,haveList = lay(elemCont).find('.'+ ELEM_LIST)[0]\r\n ,isCN = options.lang === 'cn'\r\n ,text = isCN ? '年' : ''\r\n\r\n ,listYM = that.listYM[index] || {}\r\n ,hms = ['hours', 'minutes', 'seconds']\r\n ,startEnd = ['startTime', 'endTime'][index];\r\n\r\n if(listYM[0] < 1) listYM[0] = 1;\r\n\r\n //生成年列表\r\n if(type === 'year'){\r\n var yearNum, startY = yearNum = listYM[0] - 7;\r\n if(startY < 1) startY = yearNum = 1;\r\n lay.each(new Array(15), function(i){\r\n var li = lay.elem('li', {\r\n 'lay-ym': yearNum\r\n })\r\n ,ymd = {\r\n year: yearNum\r\n ,month: 0\r\n ,date: 1\r\n };\r\n\r\n yearNum == listYM[0] && lay(li).addClass(THIS);\r\n li.innerHTML = yearNum + text;\r\n ul.appendChild(li);\r\n\r\n /*\r\n if(yearNum < that.firstDate.year){\r\n ymd.month = options.min.month;\r\n ymd.date = options.min.date;\r\n } else if(yearNum >= that.firstDate.year){\r\n ymd.month = options.max.month;\r\n ymd.date = options.max.date;\r\n }\r\n */\r\n\r\n that.limit({\r\n elem: lay(li),\r\n date: ymd,\r\n index: index,\r\n type: type,\r\n rangeType: index,\r\n disabledType: 'date' // 年面板,检测当前年份中的所有日期是否禁用\r\n });\r\n that.cellRender(li, {year: yearNum, month: 1, date: 1}, 'year');\r\n yearNum++;\r\n });\r\n\r\n lay(elemYM[isCN ? 0 : 1]).attr('lay-ym', (yearNum - 8) + '-' + listYM[1])\r\n .html((startY + text) + ' - ' + (yearNum - 1 + text));\r\n }\r\n\r\n //生成月列表\r\n else if(type === 'month'){\r\n lay.each(new Array(12), function(i){\r\n var li = lay.elem('li', {\r\n 'lay-ym': i\r\n })\r\n ,ymd = {\r\n year: listYM[0]\r\n ,month: i\r\n ,date: 1\r\n };\r\n\r\n i + 1 == listYM[1] && lay(li).addClass(THIS);\r\n li.innerHTML = lang.month[i] + (isCN ? '月' : '');\r\n ul.appendChild(li);\r\n\r\n /*\r\n if(listYM[0] < that.firstDate.year){\r\n ymd.date = options.min.date;\r\n } else if(listYM[0] >= that.firstDate.year){\r\n ymd.date = options.max.date;\r\n }\r\n */\r\n\r\n that.limit({\r\n elem: lay(li),\r\n date: ymd,\r\n index: index,\r\n type: type,\r\n rangeType: index,\r\n disabledType: 'date' // 月面板,检测当前月份中的所有日期是否禁用\r\n });\r\n that.cellRender(li, {year: listYM[0], month: i + 1, date: 1}, 'month');\r\n });\r\n\r\n lay(elemYM[isCN ? 0 : 1]).attr('lay-ym', listYM[0] + '-' + listYM[1])\r\n .html(listYM[0] + text);\r\n }\r\n\r\n //生成时间列表\r\n else if(type === 'time'){\r\n //检测时分秒状态是否在有效日期时间范围内\r\n var setTimeStatus = function(){\r\n lay(ul).find('ol').each(function(i, ol){\r\n lay(ol).find('li').each(function(ii, li){\r\n that.limit({\r\n elem: lay(li),\r\n date: [{\r\n hours: ii\r\n }, {\r\n hours: that[startEnd].hours\r\n ,minutes: ii\r\n }, {\r\n hours: that[startEnd].hours\r\n ,minutes: that[startEnd].minutes\r\n ,seconds: ii\r\n }][i],\r\n index: index,\r\n rangeType: index,\r\n disabledType: 'time', // 时间面板,分别检测时分秒列表是否禁用\r\n time: [\r\n ['hours'],\r\n ['hours', 'minutes'],\r\n ['hours', 'minutes', 'seconds']\r\n ][i]\r\n });\r\n });\r\n });\r\n if(!options.range){\r\n that.limit({\r\n elem: lay(that.footer).find(ELEM_CONFIRM),\r\n date: that[startEnd],\r\n index: 0,\r\n time: ['hours', 'minutes', 'seconds'],\r\n disabledType: 'datetime' // 确认按钮,检测时分秒列表任意一项是否禁用\r\n });\r\n }\r\n };\r\n\r\n var setTimeListVisibility = function(){\r\n var showHour = options.format.indexOf('H') !== -1;\r\n var showMinute = options.format.indexOf('m') !== -1;\r\n var showSecond = options.format.indexOf('s') !== -1;\r\n var liElem = ul.children;\r\n var hideCount = 0;\r\n\r\n lay.each([showHour, showMinute, showSecond], function(i, isShow){\r\n if(!isShow){\r\n liElem[i].className += ' layui-hide';\r\n hideCount++;\r\n }\r\n })\r\n ul.className += (' laydate-time-list-hide-' + hideCount);\r\n }\r\n\r\n //初始化时间对象\r\n if(options.range){\r\n if(!that[startEnd]){\r\n that[startEnd] = startEnd === 'startTime' ? dateTime : that.endDate;\r\n }\r\n } else {\r\n that[startEnd] = dateTime;\r\n }\r\n\r\n //生成时分秒\r\n lay.each([24, 60, 60], function(i, item){\r\n var li = lay.elem('li'), childUL = ['

                    '+ lang.time[i] +'

                      '];\r\n lay.each(new Array(item), function(ii){\r\n childUL.push(''+ lay.digit(ii, 2) +'');\r\n });\r\n li.innerHTML = childUL.join('') + '
                    ';\r\n ul.appendChild(li);\r\n });\r\n setTimeStatus();\r\n setTimeListVisibility();\r\n }\r\n\r\n //插入容器\r\n if(haveList) elemCont.removeChild(haveList);\r\n elemCont.appendChild(ul);\r\n\r\n //年月面板 - 选择事件\r\n if(type === 'year' || type === 'month'){\r\n //显示切换箭头\r\n lay(that.elemMain[index]).addClass('laydate-ym-show');\r\n\r\n //选中\r\n lay(ul).find('li').on('click', function(){\r\n var ym = lay(this).attr('lay-ym') | 0;\r\n if(lay(this).hasClass(DISABLED)) return;\r\n if (that.rangeLinked) {\r\n lay.extend(dateTime, {\r\n year: type === 'year' ? ym : listYM[0]\r\n ,month: type === 'year' ? listYM[1] - 1 : ym\r\n });\r\n } else {\r\n dateTime[type] = ym;\r\n }\r\n\r\n //当为年选择器或者年月选择器\r\n var isYearOrMonth = options.type === 'year' || options.type === 'month';\r\n if(isYearOrMonth){\r\n lay(ul).find('.'+ THIS).removeClass(THIS);\r\n lay(this).addClass(THIS);\r\n\r\n //如果为年月选择器,点击了年列表,则切换到月选择器\r\n if(options.type === 'month' && type === 'year'){\r\n that.listYM[index][0] = ym;\r\n isAlone && ((index ? that.endDate : dateTime).year = ym);\r\n that.list('month', index);\r\n }\r\n } else {\r\n that.checkDate('limit').calendar(dateTime, index, 'init'); // 重新渲染一下两个面板\r\n that.closeList();\r\n }\r\n\r\n that.setBtnStatus(); //同步按钮可点状态\r\n\r\n //若为月选择器,只有当选择月份时才自动关闭;\r\n //若为年选择器,选择年份即自动关闭\r\n //且在范围未开启时\r\n if(!options.range && options.autoConfirm){\r\n if((options.type === 'month' && type === 'month') || (options.type === 'year' && type === 'year')){\r\n that.setValue(that.parse()).done().remove();\r\n }\r\n }\r\n\r\n (that.autoCalendarModel.auto && !that.rangeLinked) ? that.choose(lay(elemCont).find('td.layui-this'), index) : (that.endState && that.done(null, 'change'));\r\n lay(that.footer).find('.'+ ELEM_TIME_BTN).removeClass(DISABLED);\r\n });\r\n } else { //时间选择面板 - 选择事件\r\n var span = lay.elem('span', {\r\n \"class\": ELEM_TIME_TEXT\r\n })\r\n\r\n //滚动条定位\r\n ,scroll = function(){\r\n lay(ul).find('ol').each(function(i){\r\n var ol = this\r\n ,li = lay(ol).find('li')\r\n ol.scrollTop = 30*(that[startEnd][hms[i]] - 2);\r\n if(ol.scrollTop <= 0){\r\n li.each(function(ii, item){\r\n if(!lay(this).hasClass(DISABLED)){\r\n ol.scrollTop = 30*(ii - 2);\r\n return true;\r\n }\r\n });\r\n }\r\n });\r\n }\r\n ,haveSpan = lay(elemHeader[2]).find('.'+ ELEM_TIME_TEXT);\r\n\r\n scroll();\r\n span.innerHTML = options.range ? [lang.startTime,lang.endTime][index] : lang.timeTips;\r\n lay(that.elemMain[index]).addClass('laydate-time-show');\r\n\r\n if(haveSpan[0]) haveSpan.remove();\r\n elemHeader[2].appendChild(span);\r\n\r\n var olElem = lay(ul).find('ol');\r\n olElem.each(function(i){\r\n var ol = this;\r\n //选择时分秒\r\n lay(ol).find('li').on('click', function(){\r\n var value = this.innerHTML | 0;\r\n if(lay(this).hasClass(DISABLED)) return;\r\n\r\n if(options.range){\r\n that[startEnd][hms[i]] = value;\r\n } else {\r\n dateTime[hms[i]] = value;\r\n }\r\n lay(ol).find('.'+ THIS).removeClass(THIS);\r\n lay(this).addClass(THIS);\r\n\r\n setTimeStatus();\r\n scroll();\r\n (that.endDate || options.type === 'time' || options.type === 'datetime') && that.done(null, 'change');\r\n\r\n //同步按钮可点状态\r\n that.setBtnStatus();\r\n });\r\n });\r\n\r\n if(layui.device().mobile){\r\n olElem.css({\r\n overflowY: 'auto',\r\n touchAction: 'pan-y'\r\n })\r\n }\r\n }\r\n\r\n return that;\r\n };\r\n\r\n //记录列表切换后的年月\r\n Class.prototype.listYM = [];\r\n\r\n //关闭列表\r\n Class.prototype.closeList = function(){\r\n var that = this\r\n ,options = that.config;\r\n\r\n lay.each(that.elemCont, function(index, item){\r\n lay(this).find('.'+ ELEM_LIST).remove();\r\n lay(that.elemMain[index]).removeClass('laydate-ym-show laydate-time-show');\r\n });\r\n lay(that.elem).find('.'+ ELEM_TIME_TEXT).remove();\r\n };\r\n\r\n //检测结束日期是否超出开始日期\r\n Class.prototype.setBtnStatus = function(tips, start, end){\r\n var that = this\r\n ,options = that.config\r\n ,lang = that.lang()\r\n ,isOut\r\n ,elemBtn = lay(that.footer).find(ELEM_CONFIRM)\r\n ,timeParams = options.type === 'datetime' || options.type === 'time' ? ['hours', 'minutes', 'seconds'] : undefined;\r\n if(options.range){\r\n start = start || (that.rangeLinked ? that.startDate : options.dateTime);\r\n end = end || that.endDate;\r\n isOut = !that.endState || that.newDate(start).getTime() > that.newDate(end).getTime();\r\n\r\n //如果不在有效日期内,直接禁用按钮,否则比较开始和结束日期\r\n (that.limit({\r\n date: start,\r\n disabledType: 'datetime', // 按钮,检测日期和时间\r\n time: timeParams,\r\n rangeType: 0\r\n }) || that.limit({\r\n date: end,\r\n disabledType: 'datetime', // 按钮,检测日期和时间\r\n time: timeParams,\r\n rangeType: 1\r\n }))\r\n ? elemBtn.addClass(DISABLED)\r\n : elemBtn[isOut ? 'addClass' : 'removeClass'](DISABLED);\r\n\r\n //是否异常提示\r\n if(tips && isOut) that.hint(\r\n typeof tips === 'string' ? lang.timeout.replace(/日期/g, tips) : lang.timeout\r\n );\r\n }\r\n };\r\n\r\n // 转义为规定格式的日期字符\r\n Class.prototype.parse = function(state, date) {\r\n var that = this;\r\n var options = that.config;\r\n var startDate = (that.rangeLinked ? that.startDate : options.dateTime)\r\n var dateTime = date || (\r\n state == 'end' ? lay.extend({}, that.endDate, that.endTime) : (\r\n options.range\r\n ? lay.extend({}, startDate || options.dateTime, that.startTime)\r\n : options.dateTime\r\n )\r\n );\r\n var format = laydate.parse(dateTime, that.format, 1);\r\n\r\n // 返回日期范围字符\r\n if (options.range && state === undefined) {\r\n return format + ' '+ that.rangeStr +' ' + that.parse('end');\r\n }\r\n\r\n return format;\r\n };\r\n\r\n //创建指定日期时间对象\r\n Class.prototype.newDate = function(dateTime){\r\n dateTime = dateTime || {};\r\n return new Date(\r\n dateTime.year || 1\r\n ,dateTime.month || 0\r\n ,dateTime.date || 1\r\n ,dateTime.hours || 0\r\n ,dateTime.minutes || 0\r\n ,dateTime.seconds || 0\r\n );\r\n };\r\n\r\n // 获得指定日期时间对象的毫秒数\r\n Class.prototype.getDateTime = function(obj){\r\n return this.newDate(obj).getTime();\r\n }\r\n\r\n /**\r\n * 格式化输入框显示值\r\n * @param {HTMLInputElement} elem HTML input 元素\r\n * @param {(value: string) => string} displayValueCallback \r\n */\r\n Class.prototype.formatToDisplay = function (elem, displayValueCallback) {\r\n var that = this;\r\n var props = Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,'value');\r\n \r\n Object.defineProperty(\r\n elem,\r\n 'value',\r\n lay.extend({}, props, {\r\n get: function () {\r\n return this.getAttribute('lay-date');\r\n },\r\n set: function (value) {\r\n props.set.call(this, displayValueCallback.call(that, value));\r\n this.setAttribute('lay-date', value);\r\n },\r\n })\r\n );\r\n };\r\n\r\n //赋值\r\n Class.prototype.setValue = function(value){\r\n var that = this\r\n ,options = that.config\r\n ,elem = options.elem[0];\r\n\r\n //静态展现则不作默认赋值\r\n if(options.position === 'static') return that;\r\n\r\n value = value || '';\r\n\r\n //绑定的元素是否为 input\r\n if(that.isInput(elem)){\r\n lay(elem).val(value);\r\n } else {\r\n //如果 range 传入了开始和结束的 input 对象,则分别对其赋值\r\n var rangeElem = that.rangeElem;\r\n if(rangeElem){\r\n if(layui.type(value) !== 'array'){\r\n value = value.split(' '+ that.rangeStr +' ');\r\n }\r\n rangeElem[0].val(value[0] || '');\r\n rangeElem[1].val(value[1] || '');\r\n } else {\r\n if(lay(elem).find('*').length === 0){\r\n var displayValue = typeof options.formatToDisplay === 'function' ? options.formatToDisplay(value) : value;\r\n lay(elem).html(displayValue);\r\n }\r\n lay(elem).attr('lay-date', value);\r\n }\r\n }\r\n\r\n return that;\r\n };\r\n\r\n //预览\r\n Class.prototype.preview = function(){\r\n var that = this\r\n ,options = that.config;\r\n\r\n if(!options.isPreview) return;\r\n\r\n var elemPreview = lay(that.elem).find('.'+ ELEM_PREVIEW)\r\n ,value = options.range ? ((that.rangeLinked ? that.endState : that.endDate) ? that.parse() : '') : that.parse();\r\n\r\n // 显示预览\r\n elemPreview.html(value);\r\n\r\n // 预览颜色渐变\r\n var oldValue = elemPreview.html();\r\n oldValue && (elemPreview.css({\r\n 'color': '#16b777'\r\n }),\r\n setTimeout(function(){\r\n elemPreview.css({\r\n 'color': '#777'\r\n });\r\n }, 300));\r\n };\r\n\r\n // 附加的渲染处理,在 ready 和 change 的时候调用\r\n Class.prototype.renderAdditional = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 处理全面板\r\n if (options.fullPanel) {\r\n that.list('time', 0);\r\n }\r\n };\r\n\r\n // 标记范围内的日期\r\n Class.prototype.stampRange = function(){\r\n var that = this\r\n ,options = that.config\r\n ,startTime = that.rangeLinked ? that.startDate : options.dateTime, endTime\r\n ,tds = lay(that.elem).find('td');\r\n\r\n if(options.range && !that.endState) lay(that.footer).find(ELEM_CONFIRM).addClass(DISABLED);\r\n // if(!that.endState) return;\r\n\r\n startTime = startTime && that.newDate({\r\n year: startTime.year\r\n ,month: startTime.month\r\n ,date: startTime.date\r\n }).getTime();\r\n\r\n endTime = that.endState && that.endDate && that.newDate({\r\n year: that.endDate.year\r\n ,month: that.endDate.month\r\n ,date: that.endDate.date\r\n }).getTime();\r\n\r\n // if(startTime > endTime) return that.hint(TIPS_OUT);\r\n\r\n lay.each(tds, function(i, item){\r\n var ymd = lay(item).attr('lay-ymd').split('-');\r\n var thisTime = that.newDate({\r\n year: ymd[0]\r\n ,month: ymd[1] - 1\r\n ,date: ymd[2]\r\n }).getTime();\r\n\r\n // 标记当天\r\n if(options.rangeLinked && !that.startDate){\r\n if(thisTime === that.newDate(that.systemDate()).getTime()){\r\n lay(item).addClass(\r\n lay(item).hasClass(ELEM_PREV) || lay(item).hasClass(ELEM_NEXT)\r\n ? ''\r\n : ELEM_DAY_NOW\r\n );\r\n }\r\n }\r\n\r\n /*\r\n * 标注区间\r\n */\r\n\r\n lay(item).removeClass(ELEM_SELECTED + ' ' + THIS);\r\n\r\n if(thisTime === startTime || thisTime === endTime){\r\n (that.rangeLinked || (!that.rangeLinked && (i < 42 ? thisTime === startTime : thisTime === endTime))) &&\r\n lay(item).addClass(\r\n lay(item).hasClass(ELEM_PREV) || lay(item).hasClass(ELEM_NEXT)\r\n ? ELEM_SELECTED\r\n : THIS\r\n );\r\n }\r\n if(thisTime > startTime && thisTime < endTime){\r\n lay(item).addClass(ELEM_SELECTED);\r\n }\r\n });\r\n };\r\n\r\n // 执行 done/change 回调\r\n Class.prototype.done = function(param, type){\r\n var that = this;\r\n var options = that.config;\r\n var start = lay.extend({},\r\n lay.extend(that.rangeLinked ? that.startDate : options.dateTime, that.startTime)\r\n );\r\n var end = lay.extend({}, lay.extend(that.endDate, that.endTime));\r\n\r\n lay.each([start, end], function(i, item){\r\n if(!('month' in item)) return;\r\n lay.extend(item, {\r\n month: item.month + 1\r\n });\r\n });\r\n\r\n that.preview();\r\n\r\n param = param || [that.parse(), start, end];\r\n type === 'change' && that.renderAdditional();\r\n typeof options[type || 'done'] === 'function' && options[type || 'done'].apply(options, param);\r\n\r\n return that;\r\n };\r\n\r\n //选择日期\r\n Class.prototype.choose = function(td, index){\r\n if(td.hasClass(DISABLED)) return;\r\n\r\n var that = this\r\n ,options = that.config\r\n ,panelIndex = index; // 记录点击的是哪一个面板的\r\n\r\n if (that.rangeLinked) {\r\n if (that.endState || !that.startDate) {\r\n // 重新选择或者第一次选择\r\n index = 0;\r\n that.endState = false;\r\n } else {\r\n index = 1;\r\n that.endState = true;\r\n }\r\n }\r\n\r\n var dateTime = that.thisDateTime(index)\r\n\r\n ,tds = lay(that.elem).find('td')\r\n ,YMD = td.attr('lay-ymd').split('-');\r\n\r\n YMD = {\r\n year: YMD[0] | 0\r\n ,month: (YMD[1] | 0) - 1\r\n ,date: YMD[2] | 0\r\n };\r\n\r\n lay.extend(dateTime, YMD); //同步 dateTime\r\n\r\n //范围选择\r\n if(options.range){\r\n //补充时分秒\r\n lay.each(['startTime', 'endTime'], function(i, item){\r\n that[item] = that[item] || {\r\n hours: i ? 23: 0\r\n ,minutes: i ? 59: 0\r\n ,seconds: i ? 59: 0\r\n };\r\n if (index === i) {\r\n // 判断选择之后的是否在范围内,超出则需要调整时分秒\r\n if (that.getDateTime(lay.extend({}, dateTime, that[item])) < that.getDateTime(options.min)) {\r\n that[item] = {\r\n hours: options.min.hours\r\n ,minutes: options.min.minutes\r\n ,seconds: options.min.seconds\r\n };\r\n lay.extend(dateTime, that[item]);\r\n } else if (that.getDateTime(lay.extend({}, dateTime, that[item])) > that.getDateTime(options.max)) {\r\n that[item] = {\r\n hours: options.max.hours\r\n ,minutes: options.max.minutes\r\n ,seconds: options.max.seconds\r\n };\r\n lay.extend(dateTime, that[item]);\r\n }\r\n }\r\n });\r\n if (!index) {\r\n that.startDate = lay.extend({}, dateTime); // 同步startDate\r\n }\r\n // 校验另外一个日期是否在有效的范围内\r\n // 此处为范围选择的日期面板点击选中处理,所以 disabledType 为 date\r\n if (that.endState && !that.limit({date: that.rangeLinked ? that.startDate : that.thisDateTime(1 - index), disabledType:'date'})) {\r\n // 根据选择之后判断是否需要切换模式\r\n var isChange;\r\n if (that.endState && that.autoCalendarModel.auto) {\r\n isChange = that.autoCalendarModel();\r\n }\r\n // 判断是否反选\r\n var needSwapDate = (isChange || that.rangeLinked && that.endState) && that.newDate(that.startDate) > that.newDate(that.endDate);\r\n if (needSwapDate){\r\n var isSameDate = that.startDate.year === that.endDate.year && that.startDate.month === that.endDate.month && that.startDate.date === that.endDate.date;\r\n var startDate;\r\n // 如果是同一天并且出现了反选证明是时分秒出现开始时间大于结束时间的现象\r\n if(isSameDate){\r\n startDate = that.startTime;\r\n that.startTime = that.endTime;\r\n that.endTime = startDate;\r\n }\r\n // 当出现反向选择时(即“后点击”的日期比“先点击”的日期小),重新提取区间\r\n startDate = that.startDate;\r\n that.startDate = lay.extend({}, that.endDate, that.startTime);\r\n options.dateTime = lay.extend({}, that.startDate);\r\n that.endDate = lay.extend({}, startDate, that.endTime);\r\n }\r\n isChange && (options.dateTime = lay.extend({}, that.startDate));\r\n }\r\n if (that.rangeLinked) {\r\n var dateTimeTemp = lay.extend({}, dateTime);\r\n if (panelIndex && !index && !isChange) { // 处理可能出现的联动面板中点击右面板但是判定为开始日期这个时候点击头部的切换上下月第一次没有反应的问题\r\n // 选择了右面板但是判断之后作为开始时间\r\n var YM = that.getAsYM(dateTime.year, dateTime.month, 'sub');\r\n lay.extend(options.dateTime, {\r\n year: YM[0]\r\n ,month: YM[1]\r\n });\r\n }\r\n that.calendar(dateTimeTemp, panelIndex, isChange ? 'init' : null);\r\n } else {\r\n that.calendar(null, index, isChange ? 'init' : null);\r\n }\r\n that.endState && that.done(null, 'change');\r\n } else if(options.position === 'static'){ //直接嵌套的选中\r\n that.calendar().done().done(null, 'change'); //同时执行 done 和 change 回调\r\n } else if(options.type === 'date'){\r\n options.autoConfirm ? that.setValue(that.parse()).done().remove() : that.calendar().done(null, 'change');\r\n } else if(options.type === 'datetime'){\r\n that.calendar().done(null, 'change');\r\n }\r\n };\r\n\r\n //底部按钮\r\n Class.prototype.tool = function(btn, type){\r\n var that = this\r\n ,options = that.config\r\n ,lang = that.lang()\r\n ,dateTime = options.dateTime\r\n ,isStatic = options.position === 'static'\r\n ,active = {\r\n //选择时间\r\n datetime: function(){\r\n if(lay(btn).hasClass(DISABLED)) return;\r\n that.list('time', 0);\r\n options.range && that.list('time', 1);\r\n lay(btn).attr('lay-type', 'date').html(that.lang().dateTips);\r\n }\r\n\r\n //选择日期\r\n ,date: function(){\r\n that.closeList();\r\n lay(btn).attr('lay-type', 'datetime').html(that.lang().timeTips);\r\n }\r\n\r\n //清空、重置\r\n ,clear: function(){\r\n isStatic && (\r\n lay.extend(dateTime, that.firstDate)\r\n ,that.calendar()\r\n )\r\n options.range && (\r\n delete options.dateTime\r\n ,delete that.endDate\r\n ,delete that.startTime\r\n ,delete that.endTime\r\n );\r\n that.setValue('');\r\n that.done(null, 'onClear').done(['', {}, {}]).remove();\r\n }\r\n\r\n // 现在\r\n ,now: function(){\r\n var thisDate = new Date();\r\n\r\n // 当前系统时间未在 min/max 范围内,则不可点击\r\n if(lay(btn).hasClass(DISABLED)){\r\n return that.hint(lang.tools.now +', '+ lang.invalidDate);\r\n }\r\n\r\n lay.extend(dateTime, that.systemDate(), {\r\n hours: thisDate.getHours()\r\n ,minutes: thisDate.getMinutes()\r\n ,seconds: thisDate.getSeconds()\r\n });\r\n\r\n that.setValue(that.parse());\r\n isStatic && that.calendar();\r\n that.done(null, 'onNow').done().remove();\r\n }\r\n\r\n //确定\r\n ,confirm: function(){\r\n if(options.range){\r\n if(lay(btn).hasClass(DISABLED)){\r\n var isTimeout = options.type === 'time'\r\n ? that.startTime && that.endTime && that.newDate(that.startTime) > that.newDate(that.endTime)\r\n : that.startDate && that.endDate && that.newDate(lay.extend({},that.startDate, that.startTime || {})) > that.newDate(lay.extend({},that.endDate, that.endTime || {}));\r\n\r\n return isTimeout \r\n ? that.hint(options.type === 'time' ? lang.timeout.replace(/日期/g, '时间') : lang.timeout)\r\n : that.hint(lang.invalidDate);\r\n }\r\n } else {\r\n if(lay(btn).hasClass(DISABLED)) return that.hint(lang.invalidDate);\r\n }\r\n\r\n that.setValue(that.parse());\r\n that.done(null, 'onConfirm').done().remove();\r\n }\r\n };\r\n active[type] && active[type]();\r\n };\r\n\r\n //统一切换处理\r\n Class.prototype.change = function(index){\r\n var that = this\r\n ,options = that.config\r\n ,dateTime = that.thisDateTime(index)\r\n ,isAlone = options.range && (options.type === 'year' || options.type === 'month')\r\n\r\n ,elemCont = that.elemCont[index || 0]\r\n ,listYM = that.listYM[index]\r\n ,addSubYear = function(type){\r\n var isYear = lay(elemCont).find('.laydate-year-list')[0]\r\n ,isMonth = lay(elemCont).find('.laydate-month-list')[0];\r\n\r\n //切换年列表\r\n if(isYear){\r\n listYM[0] = type ? listYM[0] - 15 : listYM[0] + 15;\r\n that.list('year', index);\r\n }\r\n\r\n if(isMonth){ //切换月面板中的年\r\n type ? listYM[0]-- : listYM[0]++;\r\n that.list('month', index);\r\n }\r\n\r\n if(isYear || isMonth){\r\n lay.extend(dateTime, {\r\n year: listYM[0]\r\n });\r\n if(isAlone) dateTime.year = listYM[0];\r\n options.range || that.done(null, 'change');\r\n options.range || that.limit({\r\n elem: lay(that.footer).find(ELEM_CONFIRM),\r\n date: {\r\n year: listYM[0]\r\n },\r\n disabledType: 'datetime' // 按钮,检测日期和时间\r\n });\r\n }\r\n\r\n that.setBtnStatus();\r\n return isYear || isMonth;\r\n };\r\n\r\n return {\r\n prevYear: function(){\r\n if(addSubYear('sub')) return;\r\n if (that.rangeLinked) {\r\n options.dateTime.year--;\r\n that.checkDate('limit').calendar(null, null, 'init');\r\n } else {\r\n dateTime.year--;\r\n that.checkDate('limit').calendar(null, index);\r\n // 面板自动切换的模式下重新判定是否发生模式转换等细节处理\r\n that.autoCalendarModel.auto ? that.choose(lay(elemCont).find('td.layui-this'), index) : that.done(null, 'change');\r\n }\r\n }\r\n ,prevMonth: function(){\r\n if (that.rangeLinked) {\r\n dateTime = options.dateTime;\r\n }\r\n var YM = that.getAsYM(dateTime.year, dateTime.month, 'sub');\r\n lay.extend(dateTime, {\r\n year: YM[0]\r\n ,month: YM[1]\r\n });\r\n\r\n that.checkDate('limit').calendar(null, null, 'init');\r\n if (!that.rangeLinked) {\r\n that.autoCalendarModel.auto ? that.choose(lay(elemCont).find('td.layui-this'), index) : that.done(null, 'change');\r\n }\r\n }\r\n ,nextMonth: function(){\r\n if (that.rangeLinked) {\r\n dateTime = options.dateTime;\r\n }\r\n var YM = that.getAsYM(dateTime.year, dateTime.month);\r\n lay.extend(dateTime, {\r\n year: YM[0]\r\n ,month: YM[1]\r\n });\r\n\r\n that.checkDate('limit').calendar(null, null, 'init');\r\n if (!that.rangeLinked) {\r\n that.autoCalendarModel.auto ? that.choose(lay(elemCont).find('td.layui-this'), index) : that.done(null, 'change');\r\n }\r\n }\r\n ,nextYear: function(){\r\n if(addSubYear()) return;\r\n if (that.rangeLinked) {\r\n options.dateTime.year++;\r\n that.checkDate('limit').calendar(null, 0, 'init');\r\n } else {\r\n dateTime.year++;\r\n that.checkDate('limit').calendar(null, index);\r\n that.autoCalendarModel.auto ? that.choose(lay(elemCont).find('td.layui-this'), index) : that.done(null, 'change');\r\n }\r\n }\r\n };\r\n };\r\n\r\n //日期切换事件\r\n Class.prototype.changeEvent = function(){\r\n var that = this\r\n ,options = that.config;\r\n\r\n //日期选择事件\r\n lay(that.elem).on('click', function(e){\r\n lay.stope(e);\r\n }).on('mousedown', function(e){\r\n lay.stope(e);\r\n });\r\n\r\n //年月切换\r\n lay.each(that.elemHeader, function(i, header){\r\n //上一年\r\n lay(header[0]).on('click', function(e){\r\n that.change(i).prevYear();\r\n });\r\n\r\n //上一月\r\n lay(header[1]).on('click', function(e){\r\n that.change(i).prevMonth();\r\n });\r\n\r\n //选择年月\r\n lay(header[2]).find('span').on('click', function(e){\r\n var othis = lay(this)\r\n ,layYM = othis.attr('lay-ym')\r\n ,layType = othis.attr('lay-type');\r\n\r\n if(!layYM) return;\r\n\r\n layYM = layYM.split('-');\r\n\r\n that.listYM[i] = [layYM[0] | 0, layYM[1] | 0];\r\n that.list(layType, i);\r\n lay(that.footer).find('.'+ ELEM_TIME_BTN).addClass(DISABLED);\r\n });\r\n\r\n //下一月\r\n lay(header[3]).on('click', function(e){\r\n that.change(i).nextMonth();\r\n });\r\n\r\n //下一年\r\n lay(header[4]).on('click', function(e){\r\n that.change(i).nextYear();\r\n });\r\n });\r\n\r\n //点击日期\r\n lay.each(that.table, function(i, table){\r\n var tds = lay(table).find('td');\r\n tds.on('click', function(){\r\n that.choose(lay(this), i);\r\n });\r\n });\r\n\r\n //点击底部按钮\r\n lay(that.footer).find('span').on('click', function(){\r\n var type = lay(this).attr('lay-type');\r\n that.tool(this, type);\r\n });\r\n };\r\n\r\n //是否输入框\r\n Class.prototype.isInput = function(elem){\r\n return /input|textarea/.test(elem.tagName.toLocaleLowerCase()) || /INPUT|TEXTAREA/.test(elem.tagName);\r\n };\r\n\r\n //绑定的元素事件处理\r\n Class.prototype.events = function(){\r\n var that = this\r\n var options = that.config\r\n\r\n if(!options.elem[0] || options.elem[0].eventHandler) return;\r\n\r\n var showEvent = function(){\r\n // 已经打开的面板避免重新渲染\r\n if(laydate.thisId === options.id) return;\r\n that.render();\r\n };\r\n\r\n //绑定呼出控件事件\r\n options.elem.on(options.trigger, showEvent);\r\n options.elem[0].eventHandler = true;\r\n options.eventElem.on(options.trigger, showEvent);\r\n\r\n // 元素解绑\r\n that.unbind = function () {\r\n that.remove();\r\n options.elem.off(options.trigger, showEvent);\r\n options.elem.removeAttr('lay-key');\r\n options.elem.removeAttr(MOD_ID);\r\n options.elem[0].eventHandler = false;\r\n options.eventElem.off(options.trigger, showEvent);\r\n options.eventElem.removeAttr('lay-key');\r\n delete thisModule.that[options.id];\r\n };\r\n };\r\n\r\n //记录所有实例\r\n thisModule.that = {}; //记录所有实例对象\r\n\r\n //获取当前实例对象\r\n thisModule.getThis = function(id){\r\n var that = thisModule.that[id];\r\n if(!that && isLayui) layui.hint().error(id ? (MOD_NAME +' instance with ID \\''+ id +'\\' not found') : 'ID argument required');\r\n return that;\r\n };\r\n\r\n // 初始执行\r\n ready.run = function(lay){\r\n // 绑定关闭控件事件\r\n lay(document).on('mousedown', function(e){\r\n if(!laydate.thisId) return;\r\n var that = thisModule.getThis(laydate.thisId);\r\n if(!that) return;\r\n\r\n var options = that.config;\r\n\r\n if(\r\n e.target === options.elem[0] ||\r\n e.target === options.eventElem[0] ||\r\n e.target === lay(options.closeStop)[0] ||\r\n (options.elem[0] && options.elem[0].contains(e.target))\r\n ) return;\r\n\r\n that.remove();\r\n\r\n }).on('keydown', function(e){\r\n if(!laydate.thisId) return;\r\n var that = thisModule.getThis(laydate.thisId);\r\n if(!that) return;\r\n\r\n // 回车触发确认\r\n if(that.config.position === 'static') return;\r\n if(e.keyCode === 13){\r\n if(lay('#'+ that.elemID)[0] && that.elemID === Class.thisElemDate){\r\n e.preventDefault();\r\n lay(that.footer).find(ELEM_CONFIRM)[0].click();\r\n }\r\n }\r\n });\r\n\r\n //自适应定位\r\n lay(window).on('resize', function(){\r\n if(!laydate.thisId) return;\r\n var that = thisModule.getThis(laydate.thisId);\r\n if(!that) return;\r\n\r\n if(!that.elem || !lay(ELEM)[0]){\r\n return false;\r\n }\r\n\r\n that.position();\r\n });\r\n };\r\n\r\n // 渲染 - 核心接口\r\n laydate.render = function(options){\r\n var inst = new Class(options);\r\n return thisModule.call(inst);\r\n };\r\n\r\n // 重载\r\n laydate.reload = function (id, options) {\r\n var that = thisModule.getThis(id);\r\n if(!that) return;\r\n return that.reload(options);\r\n };\r\n\r\n // 获取对应 ID 的实例\r\n laydate.getInst = function (id) {\r\n var that = thisModule.getThis(id);\r\n if(that){\r\n return that.inst;\r\n }\r\n };\r\n\r\n // 面板提示\r\n laydate.hint = function(id, opts){\r\n var that = thisModule.getThis(id);\r\n if(!that) return;\r\n return that.hint(opts);\r\n };\r\n\r\n // 解绑实例\r\n laydate.unbind = function(id){\r\n var that = thisModule.getThis(id);\r\n if(!that) return;\r\n return that.unbind();\r\n };\r\n\r\n // 关闭日期面板\r\n laydate.close = function(id){\r\n var that = thisModule.getThis(id || laydate.thisId);\r\n if(!that) return;\r\n return that.remove();\r\n };\r\n\r\n // 将指定对象转化为日期值\r\n laydate.parse = function(dateTime, format, one){\r\n dateTime = dateTime || {};\r\n\r\n //如果 format 是字符型,则转换为数组格式\r\n if(typeof format === 'string'){\r\n format = thisModule.formatArr(format);\r\n }\r\n\r\n format = (format || []).concat();\r\n\r\n //转义为规定格式\r\n lay.each(format, function(i, item){\r\n if(/yyyy|y/.test(item)){ //年\r\n format[i] = lay.digit(dateTime.year, item.length);\r\n } else if(/MM|M/.test(item)){ //月\r\n format[i] = lay.digit(dateTime.month + (one || 0), item.length);\r\n } else if(/dd|d/.test(item)){ //日\r\n format[i] = lay.digit(dateTime.date, item.length);\r\n } else if(/HH|H/.test(item)){ //时\r\n format[i] = lay.digit(dateTime.hours, item.length);\r\n } else if(/mm|m/.test(item)){ //分\r\n format[i] = lay.digit(dateTime.minutes, item.length);\r\n } else if(/ss|s/.test(item)){ //秒\r\n format[i] = lay.digit(dateTime.seconds, item.length);\r\n }\r\n });\r\n\r\n return format.join('');\r\n };\r\n\r\n // 得到某月的最后一天\r\n laydate.getEndDate = function(month, year){\r\n var thisDate = new Date();\r\n //设置日期为下个月的第一天\r\n thisDate.setFullYear(\r\n year || thisDate.getFullYear()\r\n ,month || (thisDate.getMonth() + 1)\r\n ,1);\r\n //减去一天,得到当前月最后一天\r\n return new Date(thisDate.getTime() - 1000*60*60*24).getDate();\r\n };\r\n\r\n //加载方式\r\n isLayui ? (\r\n laydate.ready()\r\n ,layui.define('lay', function(exports){ //layui 加载\r\n laydate.path = layui.cache.dir;\r\n ready.run(lay);\r\n exports(MOD_NAME, laydate);\r\n })\r\n ) : (\r\n (typeof define === 'function' && define.amd) ? define(function(){ //requirejs 加载\r\n ready.run(lay);\r\n return laydate;\r\n }) : function(){ //普通 script 标签加载\r\n laydate.ready();\r\n ready.run(window.lay);\r\n window.laydate = laydate;\r\n }()\r\n );\r\n\r\n}(window, window.document);\r\n","/*!\r\n * jQuery JavaScript Library v1.12.4\r\n * http://jquery.com/\r\n *\r\n * Includes Sizzle.js\r\n * http://sizzlejs.com/\r\n *\r\n * Copyright jQuery Foundation and other contributors\r\n * Released under the MIT license\r\n * http://jquery.org/license\r\n *\r\n * Date: 2016-05-20T17:17Z\r\n */\r\n\r\n(function( global, factory ) {\r\n\r\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\r\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\r\n\t\t// is present, execute the factory and get jQuery.\r\n\t\t// For environments that do not have a `window` with a `document`\r\n\t\t// (such as Node.js), expose a factory as module.exports.\r\n\t\t// This accentuates the need for the creation of a real `window`.\r\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\r\n\t\t// See ticket #14549 for more info.\r\n\t\tmodule.exports = global.document ?\r\n\t\t\tfactory( global, true ) :\r\n\t\t\tfunction( w ) {\r\n\t\t\t\tif ( !w.document ) {\r\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\r\n\t\t\t\t}\r\n\t\t\t\treturn factory( w );\r\n\t\t\t};\r\n\t} else {\r\n\t\tfactory( global );\r\n\t}\r\n\r\n// Pass this if window is not defined yet\r\n}(typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\r\n\r\n// Support: Firefox 18+\r\n// Can't be in strict mode, several libs including ASP.NET trace\r\n// the stack via arguments.caller.callee and Firefox dies if\r\n// you try to trace through \"use strict\" call chains. (#13335)\r\n//\"use strict\";\r\nvar deletedIds = [];\r\n\r\nvar document = window.document;\r\n\r\nvar slice = deletedIds.slice;\r\n\r\nvar concat = deletedIds.concat;\r\n\r\nvar push = deletedIds.push;\r\n\r\nvar indexOf = deletedIds.indexOf;\r\n\r\nvar class2type = {};\r\n\r\nvar toString = class2type.toString;\r\n\r\nvar hasOwn = class2type.hasOwnProperty;\r\n\r\nvar support = {};\r\n\r\n\r\n\r\nvar\r\n\tversion = \"1.12.4\",\r\n\r\n\t// Define a local copy of jQuery\r\n\tjQuery = function( selector, context ) {\r\n\r\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\r\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\r\n\t\treturn new jQuery.fn.init( selector, context );\r\n\t},\r\n\r\n\t// Support: Android<4.1, IE<9\r\n\t// Make sure we trim BOM and NBSP\r\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\r\n\r\n\t// Matches dashed string for camelizing\r\n\trmsPrefix = /^-ms-/,\r\n\trdashAlpha = /-([\\da-z])/gi,\r\n\r\n\t// Used by jQuery.camelCase as callback to replace()\r\n\tfcamelCase = function( all, letter ) {\r\n\t\treturn letter.toUpperCase();\r\n\t};\r\n\r\njQuery.fn = jQuery.prototype = {\r\n\r\n\t// The current version of jQuery being used\r\n\tjquery: version,\r\n\r\n\tconstructor: jQuery,\r\n\r\n\t// Start with an empty selector\r\n\tselector: \"\",\r\n\r\n\t// The default length of a jQuery object is 0\r\n\tlength: 0,\r\n\r\n\ttoArray: function() {\r\n\t\treturn slice.call( this );\r\n\t},\r\n\r\n\t// Get the Nth element in the matched element set OR\r\n\t// Get the whole matched element set as a clean array\r\n\tget: function( num ) {\r\n\t\treturn num != null ?\r\n\r\n\t\t\t// Return just the one element from the set\r\n\t\t\t( num < 0 ? this[ num + this.length ] : this[ num ] ) :\r\n\r\n\t\t\t// Return all the elements in a clean array\r\n\t\t\tslice.call( this );\r\n\t},\r\n\r\n\t// Take an array of elements and push it onto the stack\r\n\t// (returning the new matched element set)\r\n\tpushStack: function( elems ) {\r\n\r\n\t\t// Build a new jQuery matched element set\r\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\r\n\r\n\t\t// Add the old object onto the stack (as a reference)\r\n\t\tret.prevObject = this;\r\n\t\tret.context = this.context;\r\n\r\n\t\t// Return the newly-formed element set\r\n\t\treturn ret;\r\n\t},\r\n\r\n\t// Execute a callback for every element in the matched set.\r\n\teach: function( callback ) {\r\n\t\treturn jQuery.each( this, callback );\r\n\t},\r\n\r\n\tmap: function( callback ) {\r\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\r\n\t\t\treturn callback.call( elem, i, elem );\r\n\t\t} ) );\r\n\t},\r\n\r\n\tslice: function() {\r\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\r\n\t},\r\n\r\n\tfirst: function() {\r\n\t\treturn this.eq( 0 );\r\n\t},\r\n\r\n\tlast: function() {\r\n\t\treturn this.eq( -1 );\r\n\t},\r\n\r\n\teq: function( i ) {\r\n\t\tvar len = this.length,\r\n\t\t\tj = +i + ( i < 0 ? len : 0 );\r\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\r\n\t},\r\n\r\n\tend: function() {\r\n\t\treturn this.prevObject || this.constructor();\r\n\t},\r\n\r\n\t// For internal use only.\r\n\t// Behaves like an Array's method, not like a jQuery method.\r\n\tpush: push,\r\n\tsort: deletedIds.sort,\r\n\tsplice: deletedIds.splice\r\n};\r\n\r\njQuery.extend = jQuery.fn.extend = function() {\r\n\tvar src, copyIsArray, copy, name, options, clone,\r\n\t\ttarget = arguments[ 0 ] || {},\r\n\t\ti = 1,\r\n\t\tlength = arguments.length,\r\n\t\tdeep = false;\r\n\r\n\t// Handle a deep copy situation\r\n\tif ( typeof target === \"boolean\" ) {\r\n\t\tdeep = target;\r\n\r\n\t\t// skip the boolean and the target\r\n\t\ttarget = arguments[ i ] || {};\r\n\t\ti++;\r\n\t}\r\n\r\n\t// Handle case when target is a string or something (possible in deep copy)\r\n\tif ( typeof target !== \"object\" && !jQuery.isFunction( target ) ) {\r\n\t\ttarget = {};\r\n\t}\r\n\r\n\t// extend jQuery itself if only one argument is passed\r\n\tif ( i === length ) {\r\n\t\ttarget = this;\r\n\t\ti--;\r\n\t}\r\n\r\n\tfor ( ; i < length; i++ ) {\r\n\r\n\t\t// Only deal with non-null/undefined values\r\n\t\tif ( ( options = arguments[ i ] ) != null ) {\r\n\r\n\t\t\t// Extend the base object\r\n\t\t\tfor ( name in options ) {\r\n\t\t\t\tsrc = target[ name ];\r\n\t\t\t\tcopy = options[ name ];\r\n\r\n\t\t\t\t// Prevent never-ending loop\r\n\t\t\t\tif ( target === copy ) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Recurse if we're merging plain objects or arrays\r\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\r\n\t\t\t\t\t( copyIsArray = jQuery.isArray( copy ) ) ) ) {\r\n\r\n\t\t\t\t\tif ( copyIsArray ) {\r\n\t\t\t\t\t\tcopyIsArray = false;\r\n\t\t\t\t\t\tclone = src && jQuery.isArray( src ) ? src : [];\r\n\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject( src ) ? src : {};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Never move original objects, clone them\r\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\r\n\r\n\t\t\t\t// Don't bring in undefined values\r\n\t\t\t\t} else if ( copy !== undefined ) {\r\n\t\t\t\t\ttarget[ name ] = copy;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Return the modified object\r\n\treturn target;\r\n};\r\n\r\njQuery.extend( {\r\n\r\n\t// Unique for each copy of jQuery on the page\r\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\r\n\r\n\t// Assume jQuery is ready without the ready module\r\n\tisReady: true,\r\n\r\n\terror: function( msg ) {\r\n\t\tthrow new Error( msg );\r\n\t},\r\n\r\n\tnoop: function() {},\r\n\r\n\t// See test/unit/core.js for details concerning isFunction.\r\n\t// Since version 1.3, DOM methods and functions like alert\r\n\t// aren't supported. They return false on IE (#2968).\r\n\tisFunction: function( obj ) {\r\n\t\treturn jQuery.type( obj ) === \"function\";\r\n\t},\r\n\r\n\tisArray: Array.isArray || function( obj ) {\r\n\t\treturn jQuery.type( obj ) === \"array\";\r\n\t},\r\n\r\n\tisWindow: function( obj ) {\r\n\t\t/* jshint eqeqeq: false */\r\n\t\treturn obj != null && obj == obj.window;\r\n\t},\r\n\r\n\tisNumeric: function( obj ) {\r\n\r\n\t\t// parseFloat NaNs numeric-cast false positives (null|true|false|\"\")\r\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\r\n\t\t// subtraction forces infinities to NaN\r\n\t\t// adding 1 corrects loss of precision from parseFloat (#15100)\r\n\t\tvar realStringObj = obj && obj.toString();\r\n\t\treturn !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0;\r\n\t},\r\n\r\n\tisEmptyObject: function( obj ) {\r\n\t\tvar name;\r\n\t\tfor ( name in obj ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t},\r\n\r\n\tisPlainObject: function( obj ) {\r\n\t\tvar key;\r\n\r\n\t\t// Must be an Object.\r\n\t\t// Because of IE, we also have to check the presence of the constructor property.\r\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\r\n\t\tif ( !obj || jQuery.type( obj ) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\ttry {\r\n\r\n\t\t\t// Not own constructor property must be Object\r\n\t\t\tif ( obj.constructor &&\r\n\t\t\t\t!hasOwn.call( obj, \"constructor\" ) &&\r\n\t\t\t\t!hasOwn.call( obj.constructor.prototype, \"isPrototypeOf\" ) ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t} catch ( e ) {\r\n\r\n\t\t\t// IE8,9 Will throw exceptions on certain host objects #9897\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Support: IE<9\r\n\t\t// Handle iteration over inherited properties before own properties.\r\n\t\tif ( !support.ownFirst ) {\r\n\t\t\tfor ( key in obj ) {\r\n\t\t\t\treturn hasOwn.call( obj, key );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Own properties are enumerated firstly, so to speed up,\r\n\t\t// if last one is own, then all properties are own.\r\n\t\tfor ( key in obj ) {}\r\n\r\n\t\treturn key === undefined || hasOwn.call( obj, key );\r\n\t},\r\n\r\n\ttype: function( obj ) {\r\n\t\tif ( obj == null ) {\r\n\t\t\treturn obj + \"\";\r\n\t\t}\r\n\t\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\r\n\t\t\tclass2type[ toString.call( obj ) ] || \"object\" :\r\n\t\t\ttypeof obj;\r\n\t},\r\n\r\n\t// Workarounds based on findings by Jim Driscoll\r\n\t// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context\r\n\tglobalEval: function( data ) {\r\n\t\tif ( data && jQuery.trim( data ) ) {\r\n\r\n\t\t\t// We use execScript on Internet Explorer\r\n\t\t\t// We use an anonymous function so that context is window\r\n\t\t\t// rather than jQuery in Firefox\r\n\t\t\t( window.execScript || function( data ) {\r\n\t\t\t\twindow[ \"eval\" ].call( window, data ); // jscs:ignore requireDotNotation\r\n\t\t\t} )( data );\r\n\t\t}\r\n\t},\r\n\r\n\t// Convert dashed to camelCase; used by the css and data modules\r\n\t// Microsoft forgot to hump their vendor prefix (#9572)\r\n\tcamelCase: function( string ) {\r\n\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\r\n\t},\r\n\r\n\tnodeName: function( elem, name ) {\r\n\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\r\n\t},\r\n\r\n\teach: function( obj, callback ) {\r\n\t\tvar length, i = 0;\r\n\r\n\t\tif ( isArrayLike( obj ) ) {\r\n\t\t\tlength = obj.length;\r\n\t\t\tfor ( ; i < length; i++ ) {\r\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tfor ( i in obj ) {\r\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn obj;\r\n\t},\r\n\r\n\t// Support: Android<4.1, IE<9\r\n\ttrim: function( text ) {\r\n\t\treturn text == null ?\r\n\t\t\t\"\" :\r\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\r\n\t},\r\n\r\n\t// results is for internal usage only\r\n\tmakeArray: function( arr, results ) {\r\n\t\tvar ret = results || [];\r\n\r\n\t\tif ( arr != null ) {\r\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\r\n\t\t\t\tjQuery.merge( ret,\r\n\t\t\t\t\ttypeof arr === \"string\" ?\r\n\t\t\t\t\t[ arr ] : arr\r\n\t\t\t\t);\r\n\t\t\t} else {\r\n\t\t\t\tpush.call( ret, arr );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn ret;\r\n\t},\r\n\r\n\tinArray: function( elem, arr, i ) {\r\n\t\tvar len;\r\n\r\n\t\tif ( arr ) {\r\n\t\t\tif ( indexOf ) {\r\n\t\t\t\treturn indexOf.call( arr, elem, i );\r\n\t\t\t}\r\n\r\n\t\t\tlen = arr.length;\r\n\t\t\ti = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;\r\n\r\n\t\t\tfor ( ; i < len; i++ ) {\r\n\r\n\t\t\t\t// Skip accessing in sparse arrays\r\n\t\t\t\tif ( i in arr && arr[ i ] === elem ) {\r\n\t\t\t\t\treturn i;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn -1;\r\n\t},\r\n\r\n\tmerge: function( first, second ) {\r\n\t\tvar len = +second.length,\r\n\t\t\tj = 0,\r\n\t\t\ti = first.length;\r\n\r\n\t\twhile ( j < len ) {\r\n\t\t\tfirst[ i++ ] = second[ j++ ];\r\n\t\t}\r\n\r\n\t\t// Support: IE<9\r\n\t\t// Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists)\r\n\t\tif ( len !== len ) {\r\n\t\t\twhile ( second[ j ] !== undefined ) {\r\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfirst.length = i;\r\n\r\n\t\treturn first;\r\n\t},\r\n\r\n\tgrep: function( elems, callback, invert ) {\r\n\t\tvar callbackInverse,\r\n\t\t\tmatches = [],\r\n\t\t\ti = 0,\r\n\t\t\tlength = elems.length,\r\n\t\t\tcallbackExpect = !invert;\r\n\r\n\t\t// Go through the array, only saving the items\r\n\t\t// that pass the validator function\r\n\t\tfor ( ; i < length; i++ ) {\r\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\r\n\t\t\tif ( callbackInverse !== callbackExpect ) {\r\n\t\t\t\tmatches.push( elems[ i ] );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn matches;\r\n\t},\r\n\r\n\t// arg is for internal usage only\r\n\tmap: function( elems, callback, arg ) {\r\n\t\tvar length, value,\r\n\t\t\ti = 0,\r\n\t\t\tret = [];\r\n\r\n\t\t// Go through the array, translating each of the items to their new values\r\n\t\tif ( isArrayLike( elems ) ) {\r\n\t\t\tlength = elems.length;\r\n\t\t\tfor ( ; i < length; i++ ) {\r\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\r\n\r\n\t\t\t\tif ( value != null ) {\r\n\t\t\t\t\tret.push( value );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t// Go through every key on the object,\r\n\t\t} else {\r\n\t\t\tfor ( i in elems ) {\r\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\r\n\r\n\t\t\t\tif ( value != null ) {\r\n\t\t\t\t\tret.push( value );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Flatten any nested arrays\r\n\t\treturn concat.apply( [], ret );\r\n\t},\r\n\r\n\t// A global GUID counter for objects\r\n\tguid: 1,\r\n\r\n\t// Bind a function to a context, optionally partially applying any\r\n\t// arguments.\r\n\tproxy: function( fn, context ) {\r\n\t\tvar args, proxy, tmp;\r\n\r\n\t\tif ( typeof context === \"string\" ) {\r\n\t\t\ttmp = fn[ context ];\r\n\t\t\tcontext = fn;\r\n\t\t\tfn = tmp;\r\n\t\t}\r\n\r\n\t\t// Quick check to determine if target is callable, in the spec\r\n\t\t// this throws a TypeError, but we will just return undefined.\r\n\t\tif ( !jQuery.isFunction( fn ) ) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\t// Simulated bind\r\n\t\targs = slice.call( arguments, 2 );\r\n\t\tproxy = function() {\r\n\t\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\r\n\t\t};\r\n\r\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\r\n\t\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\r\n\r\n\t\treturn proxy;\r\n\t},\r\n\r\n\tnow: function() {\r\n\t\treturn +( new Date() );\r\n\t},\r\n\r\n\t// jQuery.support is not used in Core but other projects attach their\r\n\t// properties to it so it needs to exist.\r\n\tsupport: support\r\n} );\r\n\r\n// JSHint would error on this code due to the Symbol not being defined in ES5.\r\n// Defining this global in .jshintrc would create a danger of using the global\r\n// unguarded in another place, it seems safer to just disable JSHint for these\r\n// three lines.\r\n/* jshint ignore: start */\r\nif ( typeof Symbol === \"function\" ) {\r\n\tjQuery.fn[ Symbol.iterator ] = deletedIds[ Symbol.iterator ];\r\n}\r\n/* jshint ignore: end */\r\n\r\n// Populate the class2type map\r\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\r\nfunction( i, name ) {\r\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\r\n} );\r\n\r\nfunction isArrayLike( obj ) {\r\n\r\n\t// Support: iOS 8.2 (not reproducible in simulator)\r\n\t// `in` check used to prevent JIT error (gh-2145)\r\n\t// hasOwn isn't used here due to false negatives\r\n\t// regarding Nodelist length in IE\r\n\tvar length = !!obj && \"length\" in obj && obj.length,\r\n\t\ttype = jQuery.type( obj );\r\n\r\n\tif ( type === \"function\" || jQuery.isWindow( obj ) ) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\treturn type === \"array\" || length === 0 ||\r\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\r\n}\r\nvar Sizzle =\r\n/*!\r\n * Sizzle CSS Selector Engine v2.2.1\r\n * http://sizzlejs.com/\r\n *\r\n * Copyright jQuery Foundation and other contributors\r\n * Released under the MIT license\r\n * http://jquery.org/license\r\n *\r\n * Date: 2015-10-17\r\n */\r\n(function( window ) {\r\n\r\nvar i,\r\n\tsupport,\r\n\tExpr,\r\n\tgetText,\r\n\tisXML,\r\n\ttokenize,\r\n\tcompile,\r\n\tselect,\r\n\toutermostContext,\r\n\tsortInput,\r\n\thasDuplicate,\r\n\r\n\t// Local document vars\r\n\tsetDocument,\r\n\tdocument,\r\n\tdocElem,\r\n\tdocumentIsHTML,\r\n\trbuggyQSA,\r\n\trbuggyMatches,\r\n\tmatches,\r\n\tcontains,\r\n\r\n\t// Instance-specific data\r\n\texpando = \"sizzle\" + 1 * new Date(),\r\n\tpreferredDoc = window.document,\r\n\tdirruns = 0,\r\n\tdone = 0,\r\n\tclassCache = createCache(),\r\n\ttokenCache = createCache(),\r\n\tcompilerCache = createCache(),\r\n\tsortOrder = function( a, b ) {\r\n\t\tif ( a === b ) {\r\n\t\t\thasDuplicate = true;\r\n\t\t}\r\n\t\treturn 0;\r\n\t},\r\n\r\n\t// General-purpose constants\r\n\tMAX_NEGATIVE = 1 << 31,\r\n\r\n\t// Instance methods\r\n\thasOwn = ({}).hasOwnProperty,\r\n\tarr = [],\r\n\tpop = arr.pop,\r\n\tpush_native = arr.push,\r\n\tpush = arr.push,\r\n\tslice = arr.slice,\r\n\t// Use a stripped-down indexOf as it's faster than native\r\n\t// http://jsperf.com/thor-indexof-vs-for/5\r\n\tindexOf = function( list, elem ) {\r\n\t\tvar i = 0,\r\n\t\t\tlen = list.length;\r\n\t\tfor ( ; i < len; i++ ) {\r\n\t\t\tif ( list[i] === elem ) {\r\n\t\t\t\treturn i;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn -1;\r\n\t},\r\n\r\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\r\n\r\n\t// Regular expressions\r\n\r\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\r\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\r\n\r\n\t// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\r\n\tidentifier = \"(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+\",\r\n\r\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\r\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\r\n\t\t// Operator (capture 2)\r\n\t\t\"*([*^$|!~]?=)\" + whitespace +\r\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\r\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\r\n\t\t\"*\\\\]\",\r\n\r\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\r\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\r\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\r\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\r\n\t\t// 2. simple (capture 6)\r\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\r\n\t\t// 3. anything else (capture 2)\r\n\t\t\".*\" +\r\n\t\t\")\\\\)|)\",\r\n\r\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\r\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\r\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\r\n\r\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\r\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\r\n\r\n\trattributeQuotes = new RegExp( \"=\" + whitespace + \"*([^\\\\]'\\\"]*?)\" + whitespace + \"*\\\\]\", \"g\" ),\r\n\r\n\trpseudo = new RegExp( pseudos ),\r\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\r\n\r\n\tmatchExpr = {\r\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\r\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\r\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\r\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\r\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\r\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\r\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\r\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\r\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\r\n\t\t// For use in libraries implementing .is()\r\n\t\t// We use this for POS matching in `select`\r\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\r\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\r\n\t},\r\n\r\n\trinputs = /^(?:input|select|textarea|button)$/i,\r\n\trheader = /^h\\d$/i,\r\n\r\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\r\n\r\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\r\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\r\n\r\n\trsibling = /[+~]/,\r\n\trescape = /'|\\\\/g,\r\n\r\n\t// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\r\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\r\n\tfunescape = function( _, escaped, escapedWhitespace ) {\r\n\t\tvar high = \"0x\" + escaped - 0x10000;\r\n\t\t// NaN means non-codepoint\r\n\t\t// Support: Firefox<24\r\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\r\n\t\treturn high !== high || escapedWhitespace ?\r\n\t\t\tescaped :\r\n\t\t\thigh < 0 ?\r\n\t\t\t\t// BMP codepoint\r\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\r\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\r\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\r\n\t},\r\n\r\n\t// Used for iframes\r\n\t// See setDocument()\r\n\t// Removing the function wrapper causes a \"Permission Denied\"\r\n\t// error in IE\r\n\tunloadHandler = function() {\r\n\t\tsetDocument();\r\n\t};\r\n\r\n// Optimize for push.apply( _, NodeList )\r\ntry {\r\n\tpush.apply(\r\n\t\t(arr = slice.call( preferredDoc.childNodes )),\r\n\t\tpreferredDoc.childNodes\r\n\t);\r\n\t// Support: Android<4.0\r\n\t// Detect silently failing push.apply\r\n\tarr[ preferredDoc.childNodes.length ].nodeType;\r\n} catch ( e ) {\r\n\tpush = { apply: arr.length ?\r\n\r\n\t\t// Leverage slice if possible\r\n\t\tfunction( target, els ) {\r\n\t\t\tpush_native.apply( target, slice.call(els) );\r\n\t\t} :\r\n\r\n\t\t// Support: IE<9\r\n\t\t// Otherwise append directly\r\n\t\tfunction( target, els ) {\r\n\t\t\tvar j = target.length,\r\n\t\t\t\ti = 0;\r\n\t\t\t// Can't trust NodeList.length\r\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\r\n\t\t\ttarget.length = j - 1;\r\n\t\t}\r\n\t};\r\n}\r\n\r\nfunction Sizzle( selector, context, results, seed ) {\r\n\tvar m, i, elem, nid, nidselect, match, groups, newSelector,\r\n\t\tnewContext = context && context.ownerDocument,\r\n\r\n\t\t// nodeType defaults to 9, since context defaults to document\r\n\t\tnodeType = context ? context.nodeType : 9;\r\n\r\n\tresults = results || [];\r\n\r\n\t// Return early from calls with invalid selector or context\r\n\tif ( typeof selector !== \"string\" || !selector ||\r\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\r\n\r\n\t\treturn results;\r\n\t}\r\n\r\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\r\n\tif ( !seed ) {\r\n\r\n\t\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\r\n\t\t\tsetDocument( context );\r\n\t\t}\r\n\t\tcontext = context || document;\r\n\r\n\t\tif ( documentIsHTML ) {\r\n\r\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\r\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\r\n\t\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\r\n\r\n\t\t\t\t// ID selector\r\n\t\t\t\tif ( (m = match[1]) ) {\r\n\r\n\t\t\t\t\t// Document context\r\n\t\t\t\t\tif ( nodeType === 9 ) {\r\n\t\t\t\t\t\tif ( (elem = context.getElementById( m )) ) {\r\n\r\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\r\n\t\t\t\t\t\t\t// TODO: identify versions\r\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\r\n\t\t\t\t\t\t\tif ( elem.id === m ) {\r\n\t\t\t\t\t\t\t\tresults.push( elem );\r\n\t\t\t\t\t\t\t\treturn results;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\treturn results;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Element context\r\n\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\r\n\t\t\t\t\t\t// TODO: identify versions\r\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\r\n\t\t\t\t\t\tif ( newContext && (elem = newContext.getElementById( m )) &&\r\n\t\t\t\t\t\t\tcontains( context, elem ) &&\r\n\t\t\t\t\t\t\telem.id === m ) {\r\n\r\n\t\t\t\t\t\t\tresults.push( elem );\r\n\t\t\t\t\t\t\treturn results;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t// Type selector\r\n\t\t\t\t} else if ( match[2] ) {\r\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\r\n\t\t\t\t\treturn results;\r\n\r\n\t\t\t\t// Class selector\r\n\t\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName &&\r\n\t\t\t\t\tcontext.getElementsByClassName ) {\r\n\r\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\r\n\t\t\t\t\treturn results;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Take advantage of querySelectorAll\r\n\t\t\tif ( support.qsa &&\r\n\t\t\t\t!compilerCache[ selector + \" \" ] &&\r\n\t\t\t\t(!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\r\n\r\n\t\t\t\tif ( nodeType !== 1 ) {\r\n\t\t\t\t\tnewContext = context;\r\n\t\t\t\t\tnewSelector = selector;\r\n\r\n\t\t\t\t// qSA looks outside Element context, which is not what we want\r\n\t\t\t\t// Thanks to Andrew Dupont for this workaround technique\r\n\t\t\t\t// Support: IE <=8\r\n\t\t\t\t// Exclude object elements\r\n\t\t\t\t} else if ( context.nodeName.toLowerCase() !== \"object\" ) {\r\n\r\n\t\t\t\t\t// Capture the context ID, setting it first if necessary\r\n\t\t\t\t\tif ( (nid = context.getAttribute( \"id\" )) ) {\r\n\t\t\t\t\t\tnid = nid.replace( rescape, \"\\\\$&\" );\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tcontext.setAttribute( \"id\", (nid = expando) );\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Prefix every selector in the list\r\n\t\t\t\t\tgroups = tokenize( selector );\r\n\t\t\t\t\ti = groups.length;\r\n\t\t\t\t\tnidselect = ridentifier.test( nid ) ? \"#\" + nid : \"[id='\" + nid + \"']\";\r\n\t\t\t\t\twhile ( i-- ) {\r\n\t\t\t\t\t\tgroups[i] = nidselect + \" \" + toSelector( groups[i] );\r\n\t\t\t\t\t}\r\n\t\t\t\t\tnewSelector = groups.join( \",\" );\r\n\r\n\t\t\t\t\t// Expand context for sibling selectors\r\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\r\n\t\t\t\t\t\tcontext;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( newSelector ) {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tpush.apply( results,\r\n\t\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t\treturn results;\r\n\t\t\t\t\t} catch ( qsaError ) {\r\n\t\t\t\t\t} finally {\r\n\t\t\t\t\t\tif ( nid === expando ) {\r\n\t\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// All others\r\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\r\n}\r\n\r\n/**\r\n * Create key-value caches of limited size\r\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\r\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\r\n *\tdeleting the oldest entry\r\n */\r\nfunction createCache() {\r\n\tvar keys = [];\r\n\r\n\tfunction cache( key, value ) {\r\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\r\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\r\n\t\t\t// Only keep the most recent entries\r\n\t\t\tdelete cache[ keys.shift() ];\r\n\t\t}\r\n\t\treturn (cache[ key + \" \" ] = value);\r\n\t}\r\n\treturn cache;\r\n}\r\n\r\n/**\r\n * Mark a function for special use by Sizzle\r\n * @param {Function} fn The function to mark\r\n */\r\nfunction markFunction( fn ) {\r\n\tfn[ expando ] = true;\r\n\treturn fn;\r\n}\r\n\r\n/**\r\n * Support testing using an element\r\n * @param {Function} fn Passed the created div and expects a boolean result\r\n */\r\nfunction assert( fn ) {\r\n\tvar div = document.createElement(\"div\");\r\n\r\n\ttry {\r\n\t\treturn !!fn( div );\r\n\t} catch (e) {\r\n\t\treturn false;\r\n\t} finally {\r\n\t\t// Remove from its parent by default\r\n\t\tif ( div.parentNode ) {\r\n\t\t\tdiv.parentNode.removeChild( div );\r\n\t\t}\r\n\t\t// release memory in IE\r\n\t\tdiv = null;\r\n\t}\r\n}\r\n\r\n/**\r\n * Adds the same handler for all of the specified attrs\r\n * @param {String} attrs Pipe-separated list of attributes\r\n * @param {Function} handler The method that will be applied\r\n */\r\nfunction addHandle( attrs, handler ) {\r\n\tvar arr = attrs.split(\"|\"),\r\n\t\ti = arr.length;\r\n\r\n\twhile ( i-- ) {\r\n\t\tExpr.attrHandle[ arr[i] ] = handler;\r\n\t}\r\n}\r\n\r\n/**\r\n * Checks document order of two siblings\r\n * @param {Element} a\r\n * @param {Element} b\r\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\r\n */\r\nfunction siblingCheck( a, b ) {\r\n\tvar cur = b && a,\r\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\r\n\t\t\t( ~b.sourceIndex || MAX_NEGATIVE ) -\r\n\t\t\t( ~a.sourceIndex || MAX_NEGATIVE );\r\n\r\n\t// Use IE sourceIndex if available on both nodes\r\n\tif ( diff ) {\r\n\t\treturn diff;\r\n\t}\r\n\r\n\t// Check if b follows a\r\n\tif ( cur ) {\r\n\t\twhile ( (cur = cur.nextSibling) ) {\r\n\t\t\tif ( cur === b ) {\r\n\t\t\t\treturn -1;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn a ? 1 : -1;\r\n}\r\n\r\n/**\r\n * Returns a function to use in pseudos for input types\r\n * @param {String} type\r\n */\r\nfunction createInputPseudo( type ) {\r\n\treturn function( elem ) {\r\n\t\tvar name = elem.nodeName.toLowerCase();\r\n\t\treturn name === \"input\" && elem.type === type;\r\n\t};\r\n}\r\n\r\n/**\r\n * Returns a function to use in pseudos for buttons\r\n * @param {String} type\r\n */\r\nfunction createButtonPseudo( type ) {\r\n\treturn function( elem ) {\r\n\t\tvar name = elem.nodeName.toLowerCase();\r\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\r\n\t};\r\n}\r\n\r\n/**\r\n * Returns a function to use in pseudos for positionals\r\n * @param {Function} fn\r\n */\r\nfunction createPositionalPseudo( fn ) {\r\n\treturn markFunction(function( argument ) {\r\n\t\targument = +argument;\r\n\t\treturn markFunction(function( seed, matches ) {\r\n\t\t\tvar j,\r\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\r\n\t\t\t\ti = matchIndexes.length;\r\n\r\n\t\t\t// Match elements found at the specified indexes\r\n\t\t\twhile ( i-- ) {\r\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\r\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n}\r\n\r\n/**\r\n * Checks a node for validity as a Sizzle context\r\n * @param {Element|Object=} context\r\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\r\n */\r\nfunction testContext( context ) {\r\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\r\n}\r\n\r\n// Expose support vars for convenience\r\nsupport = Sizzle.support = {};\r\n\r\n/**\r\n * Detects XML nodes\r\n * @param {Element|Object} elem An element or a document\r\n * @returns {Boolean} True iff elem is a non-HTML XML node\r\n */\r\nisXML = Sizzle.isXML = function( elem ) {\r\n\t// documentElement is verified for cases where it doesn't yet exist\r\n\t// (such as loading iframes in IE - #4833)\r\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\r\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\r\n};\r\n\r\n/**\r\n * Sets document-related variables once based on the current document\r\n * @param {Element|Object} [doc] An element or document object to use to set the document\r\n * @returns {Object} Returns the current document\r\n */\r\nsetDocument = Sizzle.setDocument = function( node ) {\r\n\tvar hasCompare, parent,\r\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\r\n\r\n\t// Return early if doc is invalid or already selected\r\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\r\n\t\treturn document;\r\n\t}\r\n\r\n\t// Update global variables\r\n\tdocument = doc;\r\n\tdocElem = document.documentElement;\r\n\tdocumentIsHTML = !isXML( document );\r\n\r\n\t// Support: IE 9-11, Edge\r\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\r\n\tif ( (parent = document.defaultView) && parent.top !== parent ) {\r\n\t\t// Support: IE 11\r\n\t\tif ( parent.addEventListener ) {\r\n\t\t\tparent.addEventListener( \"unload\", unloadHandler, false );\r\n\r\n\t\t// Support: IE 9 - 10 only\r\n\t\t} else if ( parent.attachEvent ) {\r\n\t\t\tparent.attachEvent( \"onunload\", unloadHandler );\r\n\t\t}\r\n\t}\r\n\r\n\t/* Attributes\r\n\t---------------------------------------------------------------------- */\r\n\r\n\t// Support: IE<8\r\n\t// Verify that getAttribute really returns attributes and not properties\r\n\t// (excepting IE8 booleans)\r\n\tsupport.attributes = assert(function( div ) {\r\n\t\tdiv.className = \"i\";\r\n\t\treturn !div.getAttribute(\"className\");\r\n\t});\r\n\r\n\t/* getElement(s)By*\r\n\t---------------------------------------------------------------------- */\r\n\r\n\t// Check if getElementsByTagName(\"*\") returns only elements\r\n\tsupport.getElementsByTagName = assert(function( div ) {\r\n\t\tdiv.appendChild( document.createComment(\"\") );\r\n\t\treturn !div.getElementsByTagName(\"*\").length;\r\n\t});\r\n\r\n\t// Support: IE<9\r\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\r\n\r\n\t// Support: IE<10\r\n\t// Check if getElementById returns elements by name\r\n\t// The broken getElementById methods don't pick up programatically-set names,\r\n\t// so use a roundabout getElementsByName test\r\n\tsupport.getById = assert(function( div ) {\r\n\t\tdocElem.appendChild( div ).id = expando;\r\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\r\n\t});\r\n\r\n\t// ID find and filter\r\n\tif ( support.getById ) {\r\n\t\tExpr.find[\"ID\"] = function( id, context ) {\r\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\r\n\t\t\t\tvar m = context.getElementById( id );\r\n\t\t\t\treturn m ? [ m ] : [];\r\n\t\t\t}\r\n\t\t};\r\n\t\tExpr.filter[\"ID\"] = function( id ) {\r\n\t\t\tvar attrId = id.replace( runescape, funescape );\r\n\t\t\treturn function( elem ) {\r\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\r\n\t\t\t};\r\n\t\t};\r\n\t} else {\r\n\t\t// Support: IE6/7\r\n\t\t// getElementById is not reliable as a find shortcut\r\n\t\tdelete Expr.find[\"ID\"];\r\n\r\n\t\tExpr.filter[\"ID\"] = function( id ) {\r\n\t\t\tvar attrId = id.replace( runescape, funescape );\r\n\t\t\treturn function( elem ) {\r\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\r\n\t\t\t\t\telem.getAttributeNode(\"id\");\r\n\t\t\t\treturn node && node.value === attrId;\r\n\t\t\t};\r\n\t\t};\r\n\t}\r\n\r\n\t// Tag\r\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\r\n\t\tfunction( tag, context ) {\r\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\r\n\t\t\t\treturn context.getElementsByTagName( tag );\r\n\r\n\t\t\t// DocumentFragment nodes don't have gEBTN\r\n\t\t\t} else if ( support.qsa ) {\r\n\t\t\t\treturn context.querySelectorAll( tag );\r\n\t\t\t}\r\n\t\t} :\r\n\r\n\t\tfunction( tag, context ) {\r\n\t\t\tvar elem,\r\n\t\t\t\ttmp = [],\r\n\t\t\t\ti = 0,\r\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\r\n\t\t\t\tresults = context.getElementsByTagName( tag );\r\n\r\n\t\t\t// Filter out possible comments\r\n\t\t\tif ( tag === \"*\" ) {\r\n\t\t\t\twhile ( (elem = results[i++]) ) {\r\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\r\n\t\t\t\t\t\ttmp.push( elem );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn tmp;\r\n\t\t\t}\r\n\t\t\treturn results;\r\n\t\t};\r\n\r\n\t// Class\r\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\r\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\r\n\t\t\treturn context.getElementsByClassName( className );\r\n\t\t}\r\n\t};\r\n\r\n\t/* QSA/matchesSelector\r\n\t---------------------------------------------------------------------- */\r\n\r\n\t// QSA and matchesSelector support\r\n\r\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\r\n\trbuggyMatches = [];\r\n\r\n\t// qSa(:focus) reports false when true (Chrome 21)\r\n\t// We allow this because of a bug in IE8/9 that throws an error\r\n\t// whenever `document.activeElement` is accessed on an iframe\r\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\r\n\t// See http://bugs.jquery.com/ticket/13378\r\n\trbuggyQSA = [];\r\n\r\n\tif ( (support.qsa = rnative.test( document.querySelectorAll )) ) {\r\n\t\t// Build QSA regex\r\n\t\t// Regex strategy adopted from Diego Perini\r\n\t\tassert(function( div ) {\r\n\t\t\t// Select is set to empty string on purpose\r\n\t\t\t// This is to test IE's treatment of not explicitly\r\n\t\t\t// setting a boolean content attribute,\r\n\t\t\t// since its presence should be enough\r\n\t\t\t// http://bugs.jquery.com/ticket/12359\r\n\t\t\tdocElem.appendChild( div ).innerHTML = \"\" +\r\n\t\t\t\t\"\";\r\n\r\n\t\t\t// Support: IE8, Opera 11-12.16\r\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\r\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\r\n\t\t\t// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\r\n\t\t\tif ( div.querySelectorAll(\"[msallowcapture^='']\").length ) {\r\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\r\n\t\t\t}\r\n\r\n\t\t\t// Support: IE8\r\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\r\n\t\t\tif ( !div.querySelectorAll(\"[selected]\").length ) {\r\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\r\n\t\t\t}\r\n\r\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\r\n\t\t\tif ( !div.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\r\n\t\t\t\trbuggyQSA.push(\"~=\");\r\n\t\t\t}\r\n\r\n\t\t\t// Webkit/Opera - :checked should return selected option elements\r\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\r\n\t\t\t// IE8 throws error here and will not see later tests\r\n\t\t\tif ( !div.querySelectorAll(\":checked\").length ) {\r\n\t\t\t\trbuggyQSA.push(\":checked\");\r\n\t\t\t}\r\n\r\n\t\t\t// Support: Safari 8+, iOS 8+\r\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\r\n\t\t\t// In-page `selector#id sibing-combinator selector` fails\r\n\t\t\tif ( !div.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\r\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tassert(function( div ) {\r\n\t\t\t// Support: Windows 8 Native Apps\r\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\r\n\t\t\tvar input = document.createElement(\"input\");\r\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\r\n\t\t\tdiv.appendChild( input ).setAttribute( \"name\", \"D\" );\r\n\r\n\t\t\t// Support: IE8\r\n\t\t\t// Enforce case-sensitivity of name attribute\r\n\t\t\tif ( div.querySelectorAll(\"[name=d]\").length ) {\r\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\r\n\t\t\t}\r\n\r\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\r\n\t\t\t// IE8 throws error here and will not see later tests\r\n\t\t\tif ( !div.querySelectorAll(\":enabled\").length ) {\r\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\r\n\t\t\t}\r\n\r\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\r\n\t\t\tdiv.querySelectorAll(\"*,:x\");\r\n\t\t\trbuggyQSA.push(\",.*:\");\r\n\t\t});\r\n\t}\r\n\r\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\r\n\t\tdocElem.webkitMatchesSelector ||\r\n\t\tdocElem.mozMatchesSelector ||\r\n\t\tdocElem.oMatchesSelector ||\r\n\t\tdocElem.msMatchesSelector) )) ) {\r\n\r\n\t\tassert(function( div ) {\r\n\t\t\t// Check to see if it's possible to do matchesSelector\r\n\t\t\t// on a disconnected node (IE 9)\r\n\t\t\tsupport.disconnectedMatch = matches.call( div, \"div\" );\r\n\r\n\t\t\t// This should fail with an exception\r\n\t\t\t// Gecko does not error, returns false instead\r\n\t\t\tmatches.call( div, \"[s!='']:x\" );\r\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\r\n\t\t});\r\n\t}\r\n\r\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\r\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\r\n\r\n\t/* Contains\r\n\t---------------------------------------------------------------------- */\r\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\r\n\r\n\t// Element contains another\r\n\t// Purposefully self-exclusive\r\n\t// As in, an element does not contain itself\r\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\r\n\t\tfunction( a, b ) {\r\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\r\n\t\t\t\tbup = b && b.parentNode;\r\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\r\n\t\t\t\tadown.contains ?\r\n\t\t\t\t\tadown.contains( bup ) :\r\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\r\n\t\t\t));\r\n\t\t} :\r\n\t\tfunction( a, b ) {\r\n\t\t\tif ( b ) {\r\n\t\t\t\twhile ( (b = b.parentNode) ) {\r\n\t\t\t\t\tif ( b === a ) {\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t};\r\n\r\n\t/* Sorting\r\n\t---------------------------------------------------------------------- */\r\n\r\n\t// Document order sorting\r\n\tsortOrder = hasCompare ?\r\n\tfunction( a, b ) {\r\n\r\n\t\t// Flag for duplicate removal\r\n\t\tif ( a === b ) {\r\n\t\t\thasDuplicate = true;\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\t// Sort on method existence if only one input has compareDocumentPosition\r\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\r\n\t\tif ( compare ) {\r\n\t\t\treturn compare;\r\n\t\t}\r\n\r\n\t\t// Calculate position if both inputs belong to the same document\r\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\r\n\t\t\ta.compareDocumentPosition( b ) :\r\n\r\n\t\t\t// Otherwise we know they are disconnected\r\n\t\t\t1;\r\n\r\n\t\t// Disconnected nodes\r\n\t\tif ( compare & 1 ||\r\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\r\n\r\n\t\t\t// Choose the first element that is related to our preferred document\r\n\t\t\tif ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\r\n\t\t\t\treturn -1;\r\n\t\t\t}\r\n\t\t\tif ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\r\n\t\t\t\treturn 1;\r\n\t\t\t}\r\n\r\n\t\t\t// Maintain original order\r\n\t\t\treturn sortInput ?\r\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\r\n\t\t\t\t0;\r\n\t\t}\r\n\r\n\t\treturn compare & 4 ? -1 : 1;\r\n\t} :\r\n\tfunction( a, b ) {\r\n\t\t// Exit early if the nodes are identical\r\n\t\tif ( a === b ) {\r\n\t\t\thasDuplicate = true;\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\tvar cur,\r\n\t\t\ti = 0,\r\n\t\t\taup = a.parentNode,\r\n\t\t\tbup = b.parentNode,\r\n\t\t\tap = [ a ],\r\n\t\t\tbp = [ b ];\r\n\r\n\t\t// Parentless nodes are either documents or disconnected\r\n\t\tif ( !aup || !bup ) {\r\n\t\t\treturn a === document ? -1 :\r\n\t\t\t\tb === document ? 1 :\r\n\t\t\t\taup ? -1 :\r\n\t\t\t\tbup ? 1 :\r\n\t\t\t\tsortInput ?\r\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\r\n\t\t\t\t0;\r\n\r\n\t\t// If the nodes are siblings, we can do a quick check\r\n\t\t} else if ( aup === bup ) {\r\n\t\t\treturn siblingCheck( a, b );\r\n\t\t}\r\n\r\n\t\t// Otherwise we need full lists of their ancestors for comparison\r\n\t\tcur = a;\r\n\t\twhile ( (cur = cur.parentNode) ) {\r\n\t\t\tap.unshift( cur );\r\n\t\t}\r\n\t\tcur = b;\r\n\t\twhile ( (cur = cur.parentNode) ) {\r\n\t\t\tbp.unshift( cur );\r\n\t\t}\r\n\r\n\t\t// Walk down the tree looking for a discrepancy\r\n\t\twhile ( ap[i] === bp[i] ) {\r\n\t\t\ti++;\r\n\t\t}\r\n\r\n\t\treturn i ?\r\n\t\t\t// Do a sibling check if the nodes have a common ancestor\r\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\r\n\r\n\t\t\t// Otherwise nodes in our document sort first\r\n\t\t\tap[i] === preferredDoc ? -1 :\r\n\t\t\tbp[i] === preferredDoc ? 1 :\r\n\t\t\t0;\r\n\t};\r\n\r\n\treturn document;\r\n};\r\n\r\nSizzle.matches = function( expr, elements ) {\r\n\treturn Sizzle( expr, null, null, elements );\r\n};\r\n\r\nSizzle.matchesSelector = function( elem, expr ) {\r\n\t// Set document vars if needed\r\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\r\n\t\tsetDocument( elem );\r\n\t}\r\n\r\n\t// Make sure that attribute selectors are quoted\r\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\r\n\r\n\tif ( support.matchesSelector && documentIsHTML &&\r\n\t\t!compilerCache[ expr + \" \" ] &&\r\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\r\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\r\n\r\n\t\ttry {\r\n\t\t\tvar ret = matches.call( elem, expr );\r\n\r\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\r\n\t\t\tif ( ret || support.disconnectedMatch ||\r\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\r\n\t\t\t\t\t// fragment in IE 9\r\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\r\n\t\t\t\treturn ret;\r\n\t\t\t}\r\n\t\t} catch (e) {}\r\n\t}\r\n\r\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\r\n};\r\n\r\nSizzle.contains = function( context, elem ) {\r\n\t// Set document vars if needed\r\n\tif ( ( context.ownerDocument || context ) !== document ) {\r\n\t\tsetDocument( context );\r\n\t}\r\n\treturn contains( context, elem );\r\n};\r\n\r\nSizzle.attr = function( elem, name ) {\r\n\t// Set document vars if needed\r\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\r\n\t\tsetDocument( elem );\r\n\t}\r\n\r\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\r\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\r\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\r\n\t\t\tfn( elem, name, !documentIsHTML ) :\r\n\t\t\tundefined;\r\n\r\n\treturn val !== undefined ?\r\n\t\tval :\r\n\t\tsupport.attributes || !documentIsHTML ?\r\n\t\t\telem.getAttribute( name ) :\r\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\r\n\t\t\t\tval.value :\r\n\t\t\t\tnull;\r\n};\r\n\r\nSizzle.error = function( msg ) {\r\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\r\n};\r\n\r\n/**\r\n * Document sorting and removing duplicates\r\n * @param {ArrayLike} results\r\n */\r\nSizzle.uniqueSort = function( results ) {\r\n\tvar elem,\r\n\t\tduplicates = [],\r\n\t\tj = 0,\r\n\t\ti = 0;\r\n\r\n\t// Unless we *know* we can detect duplicates, assume their presence\r\n\thasDuplicate = !support.detectDuplicates;\r\n\tsortInput = !support.sortStable && results.slice( 0 );\r\n\tresults.sort( sortOrder );\r\n\r\n\tif ( hasDuplicate ) {\r\n\t\twhile ( (elem = results[i++]) ) {\r\n\t\t\tif ( elem === results[ i ] ) {\r\n\t\t\t\tj = duplicates.push( i );\r\n\t\t\t}\r\n\t\t}\r\n\t\twhile ( j-- ) {\r\n\t\t\tresults.splice( duplicates[ j ], 1 );\r\n\t\t}\r\n\t}\r\n\r\n\t// Clear input after sorting to release objects\r\n\t// See https://github.com/jquery/sizzle/pull/225\r\n\tsortInput = null;\r\n\r\n\treturn results;\r\n};\r\n\r\n/**\r\n * Utility function for retrieving the text value of an array of DOM nodes\r\n * @param {Array|Element} elem\r\n */\r\ngetText = Sizzle.getText = function( elem ) {\r\n\tvar node,\r\n\t\tret = \"\",\r\n\t\ti = 0,\r\n\t\tnodeType = elem.nodeType;\r\n\r\n\tif ( !nodeType ) {\r\n\t\t// If no nodeType, this is expected to be an array\r\n\t\twhile ( (node = elem[i++]) ) {\r\n\t\t\t// Do not traverse comment nodes\r\n\t\t\tret += getText( node );\r\n\t\t}\r\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\r\n\t\t// Use textContent for elements\r\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\r\n\t\tif ( typeof elem.textContent === \"string\" ) {\r\n\t\t\treturn elem.textContent;\r\n\t\t} else {\r\n\t\t\t// Traverse its children\r\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\r\n\t\t\t\tret += getText( elem );\r\n\t\t\t}\r\n\t\t}\r\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\r\n\t\treturn elem.nodeValue;\r\n\t}\r\n\t// Do not include comment or processing instruction nodes\r\n\r\n\treturn ret;\r\n};\r\n\r\nExpr = Sizzle.selectors = {\r\n\r\n\t// Can be adjusted by the user\r\n\tcacheLength: 50,\r\n\r\n\tcreatePseudo: markFunction,\r\n\r\n\tmatch: matchExpr,\r\n\r\n\tattrHandle: {},\r\n\r\n\tfind: {},\r\n\r\n\trelative: {\r\n\t\t\">\": { dir: \"parentNode\", first: true },\r\n\t\t\" \": { dir: \"parentNode\" },\r\n\t\t\"+\": { dir: \"previousSibling\", first: true },\r\n\t\t\"~\": { dir: \"previousSibling\" }\r\n\t},\r\n\r\n\tpreFilter: {\r\n\t\t\"ATTR\": function( match ) {\r\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\r\n\r\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\r\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\r\n\r\n\t\t\tif ( match[2] === \"~=\" ) {\r\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\r\n\t\t\t}\r\n\r\n\t\t\treturn match.slice( 0, 4 );\r\n\t\t},\r\n\r\n\t\t\"CHILD\": function( match ) {\r\n\t\t\t/* matches from matchExpr[\"CHILD\"]\r\n\t\t\t\t1 type (only|nth|...)\r\n\t\t\t\t2 what (child|of-type)\r\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\r\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\r\n\t\t\t\t5 sign of xn-component\r\n\t\t\t\t6 x of xn-component\r\n\t\t\t\t7 sign of y-component\r\n\t\t\t\t8 y of y-component\r\n\t\t\t*/\r\n\t\t\tmatch[1] = match[1].toLowerCase();\r\n\r\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\r\n\t\t\t\t// nth-* requires argument\r\n\t\t\t\tif ( !match[3] ) {\r\n\t\t\t\t\tSizzle.error( match[0] );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\r\n\t\t\t\t// remember that false/true cast respectively to 0/1\r\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\r\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\r\n\r\n\t\t\t// other types prohibit arguments\r\n\t\t\t} else if ( match[3] ) {\r\n\t\t\t\tSizzle.error( match[0] );\r\n\t\t\t}\r\n\r\n\t\t\treturn match;\r\n\t\t},\r\n\r\n\t\t\"PSEUDO\": function( match ) {\r\n\t\t\tvar excess,\r\n\t\t\t\tunquoted = !match[6] && match[2];\r\n\r\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\r\n\t\t\t// Accept quoted arguments as-is\r\n\t\t\tif ( match[3] ) {\r\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\r\n\r\n\t\t\t// Strip excess characters from unquoted arguments\r\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\r\n\t\t\t\t// Get excess from tokenize (recursively)\r\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\r\n\t\t\t\t// advance to the next closing parenthesis\r\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\r\n\r\n\t\t\t\t// excess is a negative index\r\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\r\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\r\n\t\t\t}\r\n\r\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\r\n\t\t\treturn match.slice( 0, 3 );\r\n\t\t}\r\n\t},\r\n\r\n\tfilter: {\r\n\r\n\t\t\"TAG\": function( nodeNameSelector ) {\r\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\r\n\t\t\treturn nodeNameSelector === \"*\" ?\r\n\t\t\t\tfunction() { return true; } :\r\n\t\t\t\tfunction( elem ) {\r\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\r\n\t\t\t\t};\r\n\t\t},\r\n\r\n\t\t\"CLASS\": function( className ) {\r\n\t\t\tvar pattern = classCache[ className + \" \" ];\r\n\r\n\t\t\treturn pattern ||\r\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\r\n\t\t\t\tclassCache( className, function( elem ) {\r\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\r\n\t\t\t\t});\r\n\t\t},\r\n\r\n\t\t\"ATTR\": function( name, operator, check ) {\r\n\t\t\treturn function( elem ) {\r\n\t\t\t\tvar result = Sizzle.attr( elem, name );\r\n\r\n\t\t\t\tif ( result == null ) {\r\n\t\t\t\t\treturn operator === \"!=\";\r\n\t\t\t\t}\r\n\t\t\t\tif ( !operator ) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tresult += \"\";\r\n\r\n\t\t\t\treturn operator === \"=\" ? result === check :\r\n\t\t\t\t\toperator === \"!=\" ? result !== check :\r\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\r\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\r\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\r\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\r\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\r\n\t\t\t\t\tfalse;\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\r\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\r\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\r\n\t\t\t\tofType = what === \"of-type\";\r\n\r\n\t\t\treturn first === 1 && last === 0 ?\r\n\r\n\t\t\t\t// Shortcut for :nth-*(n)\r\n\t\t\t\tfunction( elem ) {\r\n\t\t\t\t\treturn !!elem.parentNode;\r\n\t\t\t\t} :\r\n\r\n\t\t\t\tfunction( elem, context, xml ) {\r\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\r\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\r\n\t\t\t\t\t\tparent = elem.parentNode,\r\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\r\n\t\t\t\t\t\tuseCache = !xml && !ofType,\r\n\t\t\t\t\t\tdiff = false;\r\n\r\n\t\t\t\t\tif ( parent ) {\r\n\r\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\r\n\t\t\t\t\t\tif ( simple ) {\r\n\t\t\t\t\t\t\twhile ( dir ) {\r\n\t\t\t\t\t\t\t\tnode = elem;\r\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\r\n\t\t\t\t\t\t\t\t\tif ( ofType ?\r\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\r\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\r\n\r\n\t\t\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\r\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\r\n\r\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\r\n\t\t\t\t\t\tif ( forward && useCache ) {\r\n\r\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\r\n\r\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\r\n\t\t\t\t\t\t\tnode = parent;\r\n\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\r\n\r\n\t\t\t\t\t\t\t// Support: IE <9 only\r\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\r\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\r\n\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\r\n\r\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\r\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\r\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\r\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\r\n\r\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\r\n\r\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\r\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\r\n\r\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\r\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\r\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t// Use previously-cached element index if available\r\n\t\t\t\t\t\t\tif ( useCache ) {\r\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\r\n\t\t\t\t\t\t\t\tnode = elem;\r\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\r\n\r\n\t\t\t\t\t\t\t\t// Support: IE <9 only\r\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\r\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\r\n\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\r\n\r\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\r\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\r\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t// xml :nth-child(...)\r\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\r\n\t\t\t\t\t\t\tif ( diff === false ) {\r\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\r\n\t\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\r\n\t\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\r\n\r\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\r\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\r\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\r\n\t\t\t\t\t\t\t\t\t\t++diff ) {\r\n\r\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\r\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\r\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\r\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\r\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\r\n\t\t\t\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\r\n\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\r\n\t\t\t\t\t\tdiff -= last;\r\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t},\r\n\r\n\t\t\"PSEUDO\": function( pseudo, argument ) {\r\n\t\t\t// pseudo-class names are case-insensitive\r\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\r\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\r\n\t\t\t// Remember that setFilters inherits from pseudos\r\n\t\t\tvar args,\r\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\r\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\r\n\r\n\t\t\t// The user may use createPseudo to indicate that\r\n\t\t\t// arguments are needed to create the filter function\r\n\t\t\t// just as Sizzle does\r\n\t\t\tif ( fn[ expando ] ) {\r\n\t\t\t\treturn fn( argument );\r\n\t\t\t}\r\n\r\n\t\t\t// But maintain support for old signatures\r\n\t\t\tif ( fn.length > 1 ) {\r\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\r\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\r\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\r\n\t\t\t\t\t\tvar idx,\r\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\r\n\t\t\t\t\t\t\ti = matched.length;\r\n\t\t\t\t\t\twhile ( i-- ) {\r\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\r\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}) :\r\n\t\t\t\t\tfunction( elem ) {\r\n\t\t\t\t\t\treturn fn( elem, 0, args );\r\n\t\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\treturn fn;\r\n\t\t}\r\n\t},\r\n\r\n\tpseudos: {\r\n\t\t// Potentially complex pseudos\r\n\t\t\"not\": markFunction(function( selector ) {\r\n\t\t\t// Trim the selector passed to compile\r\n\t\t\t// to avoid treating leading and trailing\r\n\t\t\t// spaces as combinators\r\n\t\t\tvar input = [],\r\n\t\t\t\tresults = [],\r\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\r\n\r\n\t\t\treturn matcher[ expando ] ?\r\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\r\n\t\t\t\t\tvar elem,\r\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\r\n\t\t\t\t\t\ti = seed.length;\r\n\r\n\t\t\t\t\t// Match elements unmatched by `matcher`\r\n\t\t\t\t\twhile ( i-- ) {\r\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\r\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}) :\r\n\t\t\t\tfunction( elem, context, xml ) {\r\n\t\t\t\t\tinput[0] = elem;\r\n\t\t\t\t\tmatcher( input, null, xml, results );\r\n\t\t\t\t\t// Don't keep the element (issue #299)\r\n\t\t\t\t\tinput[0] = null;\r\n\t\t\t\t\treturn !results.pop();\r\n\t\t\t\t};\r\n\t\t}),\r\n\r\n\t\t\"has\": markFunction(function( selector ) {\r\n\t\t\treturn function( elem ) {\r\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\r\n\t\t\t};\r\n\t\t}),\r\n\r\n\t\t\"contains\": markFunction(function( text ) {\r\n\t\t\ttext = text.replace( runescape, funescape );\r\n\t\t\treturn function( elem ) {\r\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\r\n\t\t\t};\r\n\t\t}),\r\n\r\n\t\t// \"Whether an element is represented by a :lang() selector\r\n\t\t// is based solely on the element's language value\r\n\t\t// being equal to the identifier C,\r\n\t\t// or beginning with the identifier C immediately followed by \"-\".\r\n\t\t// The matching of C against the element's language value is performed case-insensitively.\r\n\t\t// The identifier C does not have to be a valid language name.\"\r\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\r\n\t\t\"lang\": markFunction( function( lang ) {\r\n\t\t\t// lang value must be a valid identifier\r\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\r\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\r\n\t\t\t}\r\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\r\n\t\t\treturn function( elem ) {\r\n\t\t\t\tvar elemLang;\r\n\t\t\t\tdo {\r\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\r\n\t\t\t\t\t\telem.lang :\r\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\r\n\r\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\r\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\r\n\t\t\t\treturn false;\r\n\t\t\t};\r\n\t\t}),\r\n\r\n\t\t// Miscellaneous\r\n\t\t\"target\": function( elem ) {\r\n\t\t\tvar hash = window.location && window.location.hash;\r\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\r\n\t\t},\r\n\r\n\t\t\"root\": function( elem ) {\r\n\t\t\treturn elem === docElem;\r\n\t\t},\r\n\r\n\t\t\"focus\": function( elem ) {\r\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\r\n\t\t},\r\n\r\n\t\t// Boolean properties\r\n\t\t\"enabled\": function( elem ) {\r\n\t\t\treturn elem.disabled === false;\r\n\t\t},\r\n\r\n\t\t\"disabled\": function( elem ) {\r\n\t\t\treturn elem.disabled === true;\r\n\t\t},\r\n\r\n\t\t\"checked\": function( elem ) {\r\n\t\t\t// In CSS3, :checked should return both checked and selected elements\r\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\r\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\r\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\r\n\t\t},\r\n\r\n\t\t\"selected\": function( elem ) {\r\n\t\t\t// Accessing this property makes selected-by-default\r\n\t\t\t// options in Safari work properly\r\n\t\t\tif ( elem.parentNode ) {\r\n\t\t\t\telem.parentNode.selectedIndex;\r\n\t\t\t}\r\n\r\n\t\t\treturn elem.selected === true;\r\n\t\t},\r\n\r\n\t\t// Contents\r\n\t\t\"empty\": function( elem ) {\r\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\r\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\r\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\r\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\r\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\r\n\t\t\t\tif ( elem.nodeType < 6 ) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t},\r\n\r\n\t\t\"parent\": function( elem ) {\r\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\r\n\t\t},\r\n\r\n\t\t// Element/input types\r\n\t\t\"header\": function( elem ) {\r\n\t\t\treturn rheader.test( elem.nodeName );\r\n\t\t},\r\n\r\n\t\t\"input\": function( elem ) {\r\n\t\t\treturn rinputs.test( elem.nodeName );\r\n\t\t},\r\n\r\n\t\t\"button\": function( elem ) {\r\n\t\t\tvar name = elem.nodeName.toLowerCase();\r\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\r\n\t\t},\r\n\r\n\t\t\"text\": function( elem ) {\r\n\t\t\tvar attr;\r\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\r\n\t\t\t\telem.type === \"text\" &&\r\n\r\n\t\t\t\t// Support: IE<8\r\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\r\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\r\n\t\t},\r\n\r\n\t\t// Position-in-collection\r\n\t\t\"first\": createPositionalPseudo(function() {\r\n\t\t\treturn [ 0 ];\r\n\t\t}),\r\n\r\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\r\n\t\t\treturn [ length - 1 ];\r\n\t\t}),\r\n\r\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\r\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\r\n\t\t}),\r\n\r\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\r\n\t\t\tvar i = 0;\r\n\t\t\tfor ( ; i < length; i += 2 ) {\r\n\t\t\t\tmatchIndexes.push( i );\r\n\t\t\t}\r\n\t\t\treturn matchIndexes;\r\n\t\t}),\r\n\r\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\r\n\t\t\tvar i = 1;\r\n\t\t\tfor ( ; i < length; i += 2 ) {\r\n\t\t\t\tmatchIndexes.push( i );\r\n\t\t\t}\r\n\t\t\treturn matchIndexes;\r\n\t\t}),\r\n\r\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\r\n\t\t\tvar i = argument < 0 ? argument + length : argument;\r\n\t\t\tfor ( ; --i >= 0; ) {\r\n\t\t\t\tmatchIndexes.push( i );\r\n\t\t\t}\r\n\t\t\treturn matchIndexes;\r\n\t\t}),\r\n\r\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\r\n\t\t\tvar i = argument < 0 ? argument + length : argument;\r\n\t\t\tfor ( ; ++i < length; ) {\r\n\t\t\t\tmatchIndexes.push( i );\r\n\t\t\t}\r\n\t\t\treturn matchIndexes;\r\n\t\t})\r\n\t}\r\n};\r\n\r\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\r\n\r\n// Add button/input type pseudos\r\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\r\n\tExpr.pseudos[ i ] = createInputPseudo( i );\r\n}\r\nfor ( i in { submit: true, reset: true } ) {\r\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\r\n}\r\n\r\n// Easy API for creating new setFilters\r\nfunction setFilters() {}\r\nsetFilters.prototype = Expr.filters = Expr.pseudos;\r\nExpr.setFilters = new setFilters();\r\n\r\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\r\n\tvar matched, match, tokens, type,\r\n\t\tsoFar, groups, preFilters,\r\n\t\tcached = tokenCache[ selector + \" \" ];\r\n\r\n\tif ( cached ) {\r\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\r\n\t}\r\n\r\n\tsoFar = selector;\r\n\tgroups = [];\r\n\tpreFilters = Expr.preFilter;\r\n\r\n\twhile ( soFar ) {\r\n\r\n\t\t// Comma and first run\r\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\r\n\t\t\tif ( match ) {\r\n\t\t\t\t// Don't consume trailing commas as valid\r\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\r\n\t\t\t}\r\n\t\t\tgroups.push( (tokens = []) );\r\n\t\t}\r\n\r\n\t\tmatched = false;\r\n\r\n\t\t// Combinators\r\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\r\n\t\t\tmatched = match.shift();\r\n\t\t\ttokens.push({\r\n\t\t\t\tvalue: matched,\r\n\t\t\t\t// Cast descendant combinators to space\r\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\r\n\t\t\t});\r\n\t\t\tsoFar = soFar.slice( matched.length );\r\n\t\t}\r\n\r\n\t\t// Filters\r\n\t\tfor ( type in Expr.filter ) {\r\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\r\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\r\n\t\t\t\tmatched = match.shift();\r\n\t\t\t\ttokens.push({\r\n\t\t\t\t\tvalue: matched,\r\n\t\t\t\t\ttype: type,\r\n\t\t\t\t\tmatches: match\r\n\t\t\t\t});\r\n\t\t\t\tsoFar = soFar.slice( matched.length );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ( !matched ) {\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t// Return the length of the invalid excess\r\n\t// if we're just parsing\r\n\t// Otherwise, throw an error or return tokens\r\n\treturn parseOnly ?\r\n\t\tsoFar.length :\r\n\t\tsoFar ?\r\n\t\t\tSizzle.error( selector ) :\r\n\t\t\t// Cache the tokens\r\n\t\t\ttokenCache( selector, groups ).slice( 0 );\r\n};\r\n\r\nfunction toSelector( tokens ) {\r\n\tvar i = 0,\r\n\t\tlen = tokens.length,\r\n\t\tselector = \"\";\r\n\tfor ( ; i < len; i++ ) {\r\n\t\tselector += tokens[i].value;\r\n\t}\r\n\treturn selector;\r\n}\r\n\r\nfunction addCombinator( matcher, combinator, base ) {\r\n\tvar dir = combinator.dir,\r\n\t\tcheckNonElements = base && dir === \"parentNode\",\r\n\t\tdoneName = done++;\r\n\r\n\treturn combinator.first ?\r\n\t\t// Check against closest ancestor/preceding element\r\n\t\tfunction( elem, context, xml ) {\r\n\t\t\twhile ( (elem = elem[ dir ]) ) {\r\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\r\n\t\t\t\t\treturn matcher( elem, context, xml );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} :\r\n\r\n\t\t// Check against all ancestor/preceding elements\r\n\t\tfunction( elem, context, xml ) {\r\n\t\t\tvar oldCache, uniqueCache, outerCache,\r\n\t\t\t\tnewCache = [ dirruns, doneName ];\r\n\r\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\r\n\t\t\tif ( xml ) {\r\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\r\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\r\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\r\n\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\r\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\r\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\r\n\r\n\t\t\t\t\t\t// Support: IE <9 only\r\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\r\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});\r\n\r\n\t\t\t\t\t\tif ( (oldCache = uniqueCache[ dir ]) &&\r\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\r\n\r\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\r\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\r\n\t\t\t\t\t\t\tuniqueCache[ dir ] = newCache;\r\n\r\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\r\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\r\n\t\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n}\r\n\r\nfunction elementMatcher( matchers ) {\r\n\treturn matchers.length > 1 ?\r\n\t\tfunction( elem, context, xml ) {\r\n\t\t\tvar i = matchers.length;\r\n\t\t\twhile ( i-- ) {\r\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t} :\r\n\t\tmatchers[0];\r\n}\r\n\r\nfunction multipleContexts( selector, contexts, results ) {\r\n\tvar i = 0,\r\n\t\tlen = contexts.length;\r\n\tfor ( ; i < len; i++ ) {\r\n\t\tSizzle( selector, contexts[i], results );\r\n\t}\r\n\treturn results;\r\n}\r\n\r\nfunction condense( unmatched, map, filter, context, xml ) {\r\n\tvar elem,\r\n\t\tnewUnmatched = [],\r\n\t\ti = 0,\r\n\t\tlen = unmatched.length,\r\n\t\tmapped = map != null;\r\n\r\n\tfor ( ; i < len; i++ ) {\r\n\t\tif ( (elem = unmatched[i]) ) {\r\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\r\n\t\t\t\tnewUnmatched.push( elem );\r\n\t\t\t\tif ( mapped ) {\r\n\t\t\t\t\tmap.push( i );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn newUnmatched;\r\n}\r\n\r\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\r\n\tif ( postFilter && !postFilter[ expando ] ) {\r\n\t\tpostFilter = setMatcher( postFilter );\r\n\t}\r\n\tif ( postFinder && !postFinder[ expando ] ) {\r\n\t\tpostFinder = setMatcher( postFinder, postSelector );\r\n\t}\r\n\treturn markFunction(function( seed, results, context, xml ) {\r\n\t\tvar temp, i, elem,\r\n\t\t\tpreMap = [],\r\n\t\t\tpostMap = [],\r\n\t\t\tpreexisting = results.length,\r\n\r\n\t\t\t// Get initial elements from seed or context\r\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\r\n\r\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\r\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\r\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\r\n\t\t\t\telems,\r\n\r\n\t\t\tmatcherOut = matcher ?\r\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\r\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\r\n\r\n\t\t\t\t\t// ...intermediate processing is necessary\r\n\t\t\t\t\t[] :\r\n\r\n\t\t\t\t\t// ...otherwise use results directly\r\n\t\t\t\t\tresults :\r\n\t\t\t\tmatcherIn;\r\n\r\n\t\t// Find primary matches\r\n\t\tif ( matcher ) {\r\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\r\n\t\t}\r\n\r\n\t\t// Apply postFilter\r\n\t\tif ( postFilter ) {\r\n\t\t\ttemp = condense( matcherOut, postMap );\r\n\t\t\tpostFilter( temp, [], context, xml );\r\n\r\n\t\t\t// Un-match failing elements by moving them back to matcherIn\r\n\t\t\ti = temp.length;\r\n\t\t\twhile ( i-- ) {\r\n\t\t\t\tif ( (elem = temp[i]) ) {\r\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ( seed ) {\r\n\t\t\tif ( postFinder || preFilter ) {\r\n\t\t\t\tif ( postFinder ) {\r\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\r\n\t\t\t\t\ttemp = [];\r\n\t\t\t\t\ti = matcherOut.length;\r\n\t\t\t\t\twhile ( i-- ) {\r\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\r\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\r\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\r\n\t\t\t\ti = matcherOut.length;\r\n\t\t\t\twhile ( i-- ) {\r\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\r\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\r\n\r\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t// Add elements to results, through postFinder if defined\r\n\t\t} else {\r\n\t\t\tmatcherOut = condense(\r\n\t\t\t\tmatcherOut === results ?\r\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\r\n\t\t\t\t\tmatcherOut\r\n\t\t\t);\r\n\t\t\tif ( postFinder ) {\r\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\r\n\t\t\t} else {\r\n\t\t\t\tpush.apply( results, matcherOut );\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n}\r\n\r\nfunction matcherFromTokens( tokens ) {\r\n\tvar checkContext, matcher, j,\r\n\t\tlen = tokens.length,\r\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\r\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\r\n\t\ti = leadingRelative ? 1 : 0,\r\n\r\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\r\n\t\tmatchContext = addCombinator( function( elem ) {\r\n\t\t\treturn elem === checkContext;\r\n\t\t}, implicitRelative, true ),\r\n\t\tmatchAnyContext = addCombinator( function( elem ) {\r\n\t\t\treturn indexOf( checkContext, elem ) > -1;\r\n\t\t}, implicitRelative, true ),\r\n\t\tmatchers = [ function( elem, context, xml ) {\r\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\r\n\t\t\t\t(checkContext = context).nodeType ?\r\n\t\t\t\t\tmatchContext( elem, context, xml ) :\r\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\r\n\t\t\t// Avoid hanging onto element (issue #299)\r\n\t\t\tcheckContext = null;\r\n\t\t\treturn ret;\r\n\t\t} ];\r\n\r\n\tfor ( ; i < len; i++ ) {\r\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\r\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\r\n\t\t} else {\r\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\r\n\r\n\t\t\t// Return special upon seeing a positional matcher\r\n\t\t\tif ( matcher[ expando ] ) {\r\n\t\t\t\t// Find the next relative operator (if any) for proper handling\r\n\t\t\t\tj = ++i;\r\n\t\t\t\tfor ( ; j < len; j++ ) {\r\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn setMatcher(\r\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\r\n\t\t\t\t\ti > 1 && toSelector(\r\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\r\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\r\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\r\n\t\t\t\t\tmatcher,\r\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\r\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\r\n\t\t\t\t\tj < len && toSelector( tokens )\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\tmatchers.push( matcher );\r\n\t\t}\r\n\t}\r\n\r\n\treturn elementMatcher( matchers );\r\n}\r\n\r\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\r\n\tvar bySet = setMatchers.length > 0,\r\n\t\tbyElement = elementMatchers.length > 0,\r\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\r\n\t\t\tvar elem, j, matcher,\r\n\t\t\t\tmatchedCount = 0,\r\n\t\t\t\ti = \"0\",\r\n\t\t\t\tunmatched = seed && [],\r\n\t\t\t\tsetMatched = [],\r\n\t\t\t\tcontextBackup = outermostContext,\r\n\t\t\t\t// We must always have either seed elements or outermost context\r\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\r\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\r\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\r\n\t\t\t\tlen = elems.length;\r\n\r\n\t\t\tif ( outermost ) {\r\n\t\t\t\toutermostContext = context === document || context || outermost;\r\n\t\t\t}\r\n\r\n\t\t\t// Add elements passing elementMatchers directly to results\r\n\t\t\t// Support: IE<9, Safari\r\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\r\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\r\n\t\t\t\tif ( byElement && elem ) {\r\n\t\t\t\t\tj = 0;\r\n\t\t\t\t\tif ( !context && elem.ownerDocument !== document ) {\r\n\t\t\t\t\t\tsetDocument( elem );\r\n\t\t\t\t\t\txml = !documentIsHTML;\r\n\t\t\t\t\t}\r\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\r\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml) ) {\r\n\t\t\t\t\t\t\tresults.push( elem );\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ( outermost ) {\r\n\t\t\t\t\t\tdirruns = dirrunsUnique;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Track unmatched elements for set filters\r\n\t\t\t\tif ( bySet ) {\r\n\t\t\t\t\t// They will have gone through all possible matchers\r\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\r\n\t\t\t\t\t\tmatchedCount--;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Lengthen the array for every element, matched or not\r\n\t\t\t\t\tif ( seed ) {\r\n\t\t\t\t\t\tunmatched.push( elem );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\r\n\t\t\t// makes the latter nonnegative.\r\n\t\t\tmatchedCount += i;\r\n\r\n\t\t\t// Apply set filters to unmatched elements\r\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\r\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\r\n\t\t\t// no element matchers and no seed.\r\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\r\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\r\n\t\t\t// numerically zero.\r\n\t\t\tif ( bySet && i !== matchedCount ) {\r\n\t\t\t\tj = 0;\r\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\r\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( seed ) {\r\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\r\n\t\t\t\t\tif ( matchedCount > 0 ) {\r\n\t\t\t\t\t\twhile ( i-- ) {\r\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\r\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\r\n\t\t\t\t\tsetMatched = condense( setMatched );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Add matches to results\r\n\t\t\t\tpush.apply( results, setMatched );\r\n\r\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\r\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\r\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\r\n\r\n\t\t\t\t\tSizzle.uniqueSort( results );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Override manipulation of globals by nested matchers\r\n\t\t\tif ( outermost ) {\r\n\t\t\t\tdirruns = dirrunsUnique;\r\n\t\t\t\toutermostContext = contextBackup;\r\n\t\t\t}\r\n\r\n\t\t\treturn unmatched;\r\n\t\t};\r\n\r\n\treturn bySet ?\r\n\t\tmarkFunction( superMatcher ) :\r\n\t\tsuperMatcher;\r\n}\r\n\r\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\r\n\tvar i,\r\n\t\tsetMatchers = [],\r\n\t\telementMatchers = [],\r\n\t\tcached = compilerCache[ selector + \" \" ];\r\n\r\n\tif ( !cached ) {\r\n\t\t// Generate a function of recursive functions that can be used to check each element\r\n\t\tif ( !match ) {\r\n\t\t\tmatch = tokenize( selector );\r\n\t\t}\r\n\t\ti = match.length;\r\n\t\twhile ( i-- ) {\r\n\t\t\tcached = matcherFromTokens( match[i] );\r\n\t\t\tif ( cached[ expando ] ) {\r\n\t\t\t\tsetMatchers.push( cached );\r\n\t\t\t} else {\r\n\t\t\t\telementMatchers.push( cached );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Cache the compiled function\r\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\r\n\r\n\t\t// Save selector and tokenization\r\n\t\tcached.selector = selector;\r\n\t}\r\n\treturn cached;\r\n};\r\n\r\n/**\r\n * A low-level selection function that works with Sizzle's compiled\r\n * selector functions\r\n * @param {String|Function} selector A selector or a pre-compiled\r\n * selector function built with Sizzle.compile\r\n * @param {Element} context\r\n * @param {Array} [results]\r\n * @param {Array} [seed] A set of elements to match against\r\n */\r\nselect = Sizzle.select = function( selector, context, results, seed ) {\r\n\tvar i, tokens, token, type, find,\r\n\t\tcompiled = typeof selector === \"function\" && selector,\r\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\r\n\r\n\tresults = results || [];\r\n\r\n\t// Try to minimize operations if there is only one selector in the list and no seed\r\n\t// (the latter of which guarantees us context)\r\n\tif ( match.length === 1 ) {\r\n\r\n\t\t// Reduce context if the leading compound selector is an ID\r\n\t\ttokens = match[0] = match[0].slice( 0 );\r\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\r\n\t\t\t\tsupport.getById && context.nodeType === 9 && documentIsHTML &&\r\n\t\t\t\tExpr.relative[ tokens[1].type ] ) {\r\n\r\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\r\n\t\t\tif ( !context ) {\r\n\t\t\t\treturn results;\r\n\r\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\r\n\t\t\t} else if ( compiled ) {\r\n\t\t\t\tcontext = context.parentNode;\r\n\t\t\t}\r\n\r\n\t\t\tselector = selector.slice( tokens.shift().value.length );\r\n\t\t}\r\n\r\n\t\t// Fetch a seed set for right-to-left matching\r\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\r\n\t\twhile ( i-- ) {\r\n\t\t\ttoken = tokens[i];\r\n\r\n\t\t\t// Abort if we hit a combinator\r\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tif ( (find = Expr.find[ type ]) ) {\r\n\t\t\t\t// Search, expanding context for leading sibling combinators\r\n\t\t\t\tif ( (seed = find(\r\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\r\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\r\n\t\t\t\t)) ) {\r\n\r\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\r\n\t\t\t\t\ttokens.splice( i, 1 );\r\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\r\n\t\t\t\t\tif ( !selector ) {\r\n\t\t\t\t\t\tpush.apply( results, seed );\r\n\t\t\t\t\t\treturn results;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Compile and execute a filtering function if one is not provided\r\n\t// Provide `match` to avoid retokenization if we modified the selector above\r\n\t( compiled || compile( selector, match ) )(\r\n\t\tseed,\r\n\t\tcontext,\r\n\t\t!documentIsHTML,\r\n\t\tresults,\r\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\r\n\t);\r\n\treturn results;\r\n};\r\n\r\n// One-time assignments\r\n\r\n// Sort stability\r\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\r\n\r\n// Support: Chrome 14-35+\r\n// Always assume duplicates if they aren't passed to the comparison function\r\nsupport.detectDuplicates = !!hasDuplicate;\r\n\r\n// Initialize against the default document\r\nsetDocument();\r\n\r\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\r\n// Detached nodes confoundingly follow *each other*\r\nsupport.sortDetached = assert(function( div1 ) {\r\n\t// Should return 1, but returns 4 (following)\r\n\treturn div1.compareDocumentPosition( document.createElement(\"div\") ) & 1;\r\n});\r\n\r\n// Support: IE<8\r\n// Prevent attribute/property \"interpolation\"\r\n// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\r\nif ( !assert(function( div ) {\r\n\tdiv.innerHTML = \"\";\r\n\treturn div.firstChild.getAttribute(\"href\") === \"#\" ;\r\n}) ) {\r\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\r\n\t\tif ( !isXML ) {\r\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\r\n\t\t}\r\n\t});\r\n}\r\n\r\n// Support: IE<9\r\n// Use defaultValue in place of getAttribute(\"value\")\r\nif ( !support.attributes || !assert(function( div ) {\r\n\tdiv.innerHTML = \"\";\r\n\tdiv.firstChild.setAttribute( \"value\", \"\" );\r\n\treturn div.firstChild.getAttribute( \"value\" ) === \"\";\r\n}) ) {\r\n\taddHandle( \"value\", function( elem, name, isXML ) {\r\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\r\n\t\t\treturn elem.defaultValue;\r\n\t\t}\r\n\t});\r\n}\r\n\r\n// Support: IE<9\r\n// Use getAttributeNode to fetch booleans when getAttribute lies\r\nif ( !assert(function( div ) {\r\n\treturn div.getAttribute(\"disabled\") == null;\r\n}) ) {\r\n\taddHandle( booleans, function( elem, name, isXML ) {\r\n\t\tvar val;\r\n\t\tif ( !isXML ) {\r\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\r\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\r\n\t\t\t\t\tval.value :\r\n\t\t\t\tnull;\r\n\t\t}\r\n\t});\r\n}\r\n\r\nreturn Sizzle;\r\n\r\n})( window );\r\n\r\n\r\n\r\njQuery.find = Sizzle;\r\njQuery.expr = Sizzle.selectors;\r\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\r\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\r\njQuery.text = Sizzle.getText;\r\njQuery.isXMLDoc = Sizzle.isXML;\r\njQuery.contains = Sizzle.contains;\r\n\r\n\r\n\r\nvar dir = function( elem, dir, until ) {\r\n\tvar matched = [],\r\n\t\ttruncate = until !== undefined;\r\n\r\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\r\n\t\tif ( elem.nodeType === 1 ) {\r\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tmatched.push( elem );\r\n\t\t}\r\n\t}\r\n\treturn matched;\r\n};\r\n\r\n\r\nvar siblings = function( n, elem ) {\r\n\tvar matched = [];\r\n\r\n\tfor ( ; n; n = n.nextSibling ) {\r\n\t\tif ( n.nodeType === 1 && n !== elem ) {\r\n\t\t\tmatched.push( n );\r\n\t\t}\r\n\t}\r\n\r\n\treturn matched;\r\n};\r\n\r\n\r\nvar rneedsContext = jQuery.expr.match.needsContext;\r\n\r\nvar rsingleTag = ( /^<([\\w-]+)\\s*\\/?>(?:<\\/\\1>|)$/ );\r\n\r\n\r\n\r\nvar risSimple = /^.[^:#\\[\\.,]*$/;\r\n\r\n// Implement the identical functionality for filter and not\r\nfunction winnow( elements, qualifier, not ) {\r\n\tif ( jQuery.isFunction( qualifier ) ) {\r\n\t\treturn jQuery.grep( elements, function( elem, i ) {\r\n\t\t\t/* jshint -W018 */\r\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\r\n\t\t} );\r\n\r\n\t}\r\n\r\n\tif ( qualifier.nodeType ) {\r\n\t\treturn jQuery.grep( elements, function( elem ) {\r\n\t\t\treturn ( elem === qualifier ) !== not;\r\n\t\t} );\r\n\r\n\t}\r\n\r\n\tif ( typeof qualifier === \"string\" ) {\r\n\t\tif ( risSimple.test( qualifier ) ) {\r\n\t\t\treturn jQuery.filter( qualifier, elements, not );\r\n\t\t}\r\n\r\n\t\tqualifier = jQuery.filter( qualifier, elements );\r\n\t}\r\n\r\n\treturn jQuery.grep( elements, function( elem ) {\r\n\t\treturn ( jQuery.inArray( elem, qualifier ) > -1 ) !== not;\r\n\t} );\r\n}\r\n\r\njQuery.filter = function( expr, elems, not ) {\r\n\tvar elem = elems[ 0 ];\r\n\r\n\tif ( not ) {\r\n\t\texpr = \":not(\" + expr + \")\";\r\n\t}\r\n\r\n\treturn elems.length === 1 && elem.nodeType === 1 ?\r\n\t\tjQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :\r\n\t\tjQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\r\n\t\t\treturn elem.nodeType === 1;\r\n\t\t} ) );\r\n};\r\n\r\njQuery.fn.extend( {\r\n\tfind: function( selector ) {\r\n\t\tvar i,\r\n\t\t\tret = [],\r\n\t\t\tself = this,\r\n\t\t\tlen = self.length;\r\n\r\n\t\tif ( typeof selector !== \"string\" ) {\r\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\r\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\r\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} ) );\r\n\t\t}\r\n\r\n\t\tfor ( i = 0; i < len; i++ ) {\r\n\t\t\tjQuery.find( selector, self[ i ], ret );\r\n\t\t}\r\n\r\n\t\t// Needed because $( selector, context ) becomes $( context ).find( selector )\r\n\t\tret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );\r\n\t\tret.selector = this.selector ? this.selector + \" \" + selector : selector;\r\n\t\treturn ret;\r\n\t},\r\n\tfilter: function( selector ) {\r\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\r\n\t},\r\n\tnot: function( selector ) {\r\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\r\n\t},\r\n\tis: function( selector ) {\r\n\t\treturn !!winnow(\r\n\t\t\tthis,\r\n\r\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\r\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\r\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\r\n\t\t\t\tjQuery( selector ) :\r\n\t\t\t\tselector || [],\r\n\t\t\tfalse\r\n\t\t).length;\r\n\t}\r\n} );\r\n\r\n\r\n// Initialize a jQuery object\r\n\r\n\r\n// A central reference to the root jQuery(document)\r\nvar rootjQuery,\r\n\r\n\t// A simple way to check for HTML strings\r\n\t// Prioritize #id over to avoid XSS via location.hash (#9521)\r\n\t// Strict HTML recognition (#11290: must start with <)\r\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/,\r\n\r\n\tinit = jQuery.fn.init = function( selector, context, root ) {\r\n\t\tvar match, elem;\r\n\r\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\r\n\t\tif ( !selector ) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\t// init accepts an alternate rootjQuery\r\n\t\t// so migrate can support jQuery.sub (gh-2101)\r\n\t\troot = root || rootjQuery;\r\n\r\n\t\t// Handle HTML strings\r\n\t\tif ( typeof selector === \"string\" ) {\r\n\t\t\tif ( selector.charAt( 0 ) === \"<\" &&\r\n\t\t\t\tselector.charAt( selector.length - 1 ) === \">\" &&\r\n\t\t\t\tselector.length >= 3 ) {\r\n\r\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\r\n\t\t\t\tmatch = [ null, selector, null ];\r\n\r\n\t\t\t} else {\r\n\t\t\t\tmatch = rquickExpr.exec( selector );\r\n\t\t\t}\r\n\r\n\t\t\t// Match html or make sure no context is specified for #id\r\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\r\n\r\n\t\t\t\t// HANDLE: $(html) -> $(array)\r\n\t\t\t\tif ( match[ 1 ] ) {\r\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\r\n\r\n\t\t\t\t\t// scripts is true for back-compat\r\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\r\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\r\n\t\t\t\t\t\tmatch[ 1 ],\r\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\r\n\t\t\t\t\t\ttrue\r\n\t\t\t\t\t) );\r\n\r\n\t\t\t\t\t// HANDLE: $(html, props)\r\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\r\n\t\t\t\t\t\tfor ( match in context ) {\r\n\r\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\r\n\t\t\t\t\t\t\tif ( jQuery.isFunction( this[ match ] ) ) {\r\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\r\n\r\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn this;\r\n\r\n\t\t\t\t// HANDLE: $(#id)\r\n\t\t\t\t} else {\r\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\r\n\r\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\r\n\t\t\t\t\t// nodes that are no longer in the document #6963\r\n\t\t\t\t\tif ( elem && elem.parentNode ) {\r\n\r\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\r\n\t\t\t\t\t\t// by name instead of ID\r\n\t\t\t\t\t\tif ( elem.id !== match[ 2 ] ) {\r\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\r\n\t\t\t\t\t\tthis.length = 1;\r\n\t\t\t\t\t\tthis[ 0 ] = elem;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.context = document;\r\n\t\t\t\t\tthis.selector = selector;\r\n\t\t\t\t\treturn this;\r\n\t\t\t\t}\r\n\r\n\t\t\t// HANDLE: $(expr, $(...))\r\n\t\t\t} else if ( !context || context.jquery ) {\r\n\t\t\t\treturn ( context || root ).find( selector );\r\n\r\n\t\t\t// HANDLE: $(expr, context)\r\n\t\t\t// (which is just equivalent to: $(context).find(expr)\r\n\t\t\t} else {\r\n\t\t\t\treturn this.constructor( context ).find( selector );\r\n\t\t\t}\r\n\r\n\t\t// HANDLE: $(DOMElement)\r\n\t\t} else if ( selector.nodeType ) {\r\n\t\t\tthis.context = this[ 0 ] = selector;\r\n\t\t\tthis.length = 1;\r\n\t\t\treturn this;\r\n\r\n\t\t// HANDLE: $(function)\r\n\t\t// Shortcut for document ready\r\n\t\t} else if ( jQuery.isFunction( selector ) ) {\r\n\t\t\treturn typeof root.ready !== \"undefined\" ?\r\n\t\t\t\troot.ready( selector ) :\r\n\r\n\t\t\t\t// Execute immediately if ready is not present\r\n\t\t\t\tselector( jQuery );\r\n\t\t}\r\n\r\n\t\tif ( selector.selector !== undefined ) {\r\n\t\t\tthis.selector = selector.selector;\r\n\t\t\tthis.context = selector.context;\r\n\t\t}\r\n\r\n\t\treturn jQuery.makeArray( selector, this );\r\n\t};\r\n\r\n// Give the init function the jQuery prototype for later instantiation\r\ninit.prototype = jQuery.fn;\r\n\r\n// Initialize central reference\r\nrootjQuery = jQuery( document );\r\n\r\n\r\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\r\n\r\n\t// methods guaranteed to produce a unique set when starting from a unique set\r\n\tguaranteedUnique = {\r\n\t\tchildren: true,\r\n\t\tcontents: true,\r\n\t\tnext: true,\r\n\t\tprev: true\r\n\t};\r\n\r\njQuery.fn.extend( {\r\n\thas: function( target ) {\r\n\t\tvar i,\r\n\t\t\ttargets = jQuery( target, this ),\r\n\t\t\tlen = targets.length;\r\n\r\n\t\treturn this.filter( function() {\r\n\t\t\tfor ( i = 0; i < len; i++ ) {\r\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\r\n\tclosest: function( selectors, context ) {\r\n\t\tvar cur,\r\n\t\t\ti = 0,\r\n\t\t\tl = this.length,\r\n\t\t\tmatched = [],\r\n\t\t\tpos = rneedsContext.test( selectors ) || typeof selectors !== \"string\" ?\r\n\t\t\t\tjQuery( selectors, context || this.context ) :\r\n\t\t\t\t0;\r\n\r\n\t\tfor ( ; i < l; i++ ) {\r\n\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\r\n\r\n\t\t\t\t// Always skip document fragments\r\n\t\t\t\tif ( cur.nodeType < 11 && ( pos ?\r\n\t\t\t\t\tpos.index( cur ) > -1 :\r\n\r\n\t\t\t\t\t// Don't pass non-elements to Sizzle\r\n\t\t\t\t\tcur.nodeType === 1 &&\r\n\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\r\n\r\n\t\t\t\t\tmatched.push( cur );\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\r\n\t},\r\n\r\n\t// Determine the position of an element within\r\n\t// the matched set of elements\r\n\tindex: function( elem ) {\r\n\r\n\t\t// No argument, return index in parent\r\n\t\tif ( !elem ) {\r\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\r\n\t\t}\r\n\r\n\t\t// index in selector\r\n\t\tif ( typeof elem === \"string\" ) {\r\n\t\t\treturn jQuery.inArray( this[ 0 ], jQuery( elem ) );\r\n\t\t}\r\n\r\n\t\t// Locate the position of the desired element\r\n\t\treturn jQuery.inArray(\r\n\r\n\t\t\t// If it receives a jQuery object, the first element is used\r\n\t\t\telem.jquery ? elem[ 0 ] : elem, this );\r\n\t},\r\n\r\n\tadd: function( selector, context ) {\r\n\t\treturn this.pushStack(\r\n\t\t\tjQuery.uniqueSort(\r\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\r\n\t\t\t)\r\n\t\t);\r\n\t},\r\n\r\n\taddBack: function( selector ) {\r\n\t\treturn this.add( selector == null ?\r\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\r\n\t\t);\r\n\t}\r\n} );\r\n\r\nfunction sibling( cur, dir ) {\r\n\tdo {\r\n\t\tcur = cur[ dir ];\r\n\t} while ( cur && cur.nodeType !== 1 );\r\n\r\n\treturn cur;\r\n}\r\n\r\njQuery.each( {\r\n\tparent: function( elem ) {\r\n\t\tvar parent = elem.parentNode;\r\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\r\n\t},\r\n\tparents: function( elem ) {\r\n\t\treturn dir( elem, \"parentNode\" );\r\n\t},\r\n\tparentsUntil: function( elem, i, until ) {\r\n\t\treturn dir( elem, \"parentNode\", until );\r\n\t},\r\n\tnext: function( elem ) {\r\n\t\treturn sibling( elem, \"nextSibling\" );\r\n\t},\r\n\tprev: function( elem ) {\r\n\t\treturn sibling( elem, \"previousSibling\" );\r\n\t},\r\n\tnextAll: function( elem ) {\r\n\t\treturn dir( elem, \"nextSibling\" );\r\n\t},\r\n\tprevAll: function( elem ) {\r\n\t\treturn dir( elem, \"previousSibling\" );\r\n\t},\r\n\tnextUntil: function( elem, i, until ) {\r\n\t\treturn dir( elem, \"nextSibling\", until );\r\n\t},\r\n\tprevUntil: function( elem, i, until ) {\r\n\t\treturn dir( elem, \"previousSibling\", until );\r\n\t},\r\n\tsiblings: function( elem ) {\r\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\r\n\t},\r\n\tchildren: function( elem ) {\r\n\t\treturn siblings( elem.firstChild );\r\n\t},\r\n\tcontents: function( elem ) {\r\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\r\n\t\t\telem.contentDocument || elem.contentWindow.document :\r\n\t\t\tjQuery.merge( [], elem.childNodes );\r\n\t}\r\n}, function( name, fn ) {\r\n\tjQuery.fn[ name ] = function( until, selector ) {\r\n\t\tvar ret = jQuery.map( this, fn, until );\r\n\r\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\r\n\t\t\tselector = until;\r\n\t\t}\r\n\r\n\t\tif ( selector && typeof selector === \"string\" ) {\r\n\t\t\tret = jQuery.filter( selector, ret );\r\n\t\t}\r\n\r\n\t\tif ( this.length > 1 ) {\r\n\r\n\t\t\t// Remove duplicates\r\n\t\t\tif ( !guaranteedUnique[ name ] ) {\r\n\t\t\t\tret = jQuery.uniqueSort( ret );\r\n\t\t\t}\r\n\r\n\t\t\t// Reverse order for parents* and prev-derivatives\r\n\t\t\tif ( rparentsprev.test( name ) ) {\r\n\t\t\t\tret = ret.reverse();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this.pushStack( ret );\r\n\t};\r\n} );\r\nvar rnotwhite = ( /\\S+/g );\r\n\r\n\r\n\r\n// Convert String-formatted options into Object-formatted ones\r\nfunction createOptions( options ) {\r\n\tvar object = {};\r\n\tjQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {\r\n\t\tobject[ flag ] = true;\r\n\t} );\r\n\treturn object;\r\n}\r\n\r\n/*\r\n * Create a callback list using the following parameters:\r\n *\r\n *\toptions: an optional list of space-separated options that will change how\r\n *\t\t\tthe callback list behaves or a more traditional option object\r\n *\r\n * By default a callback list will act like an event callback list and can be\r\n * \"fired\" multiple times.\r\n *\r\n * Possible options:\r\n *\r\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\r\n *\r\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\r\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\r\n *\t\t\t\t\tvalues (like a Deferred)\r\n *\r\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\r\n *\r\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\r\n *\r\n */\r\njQuery.Callbacks = function( options ) {\r\n\r\n\t// Convert options from String-formatted to Object-formatted if needed\r\n\t// (we check in cache first)\r\n\toptions = typeof options === \"string\" ?\r\n\t\tcreateOptions( options ) :\r\n\t\tjQuery.extend( {}, options );\r\n\r\n\tvar // Flag to know if list is currently firing\r\n\t\tfiring,\r\n\r\n\t\t// Last fire value for non-forgettable lists\r\n\t\tmemory,\r\n\r\n\t\t// Flag to know if list was already fired\r\n\t\tfired,\r\n\r\n\t\t// Flag to prevent firing\r\n\t\tlocked,\r\n\r\n\t\t// Actual callback list\r\n\t\tlist = [],\r\n\r\n\t\t// Queue of execution data for repeatable lists\r\n\t\tqueue = [],\r\n\r\n\t\t// Index of currently firing callback (modified by add/remove as needed)\r\n\t\tfiringIndex = -1,\r\n\r\n\t\t// Fire callbacks\r\n\t\tfire = function() {\r\n\r\n\t\t\t// Enforce single-firing\r\n\t\t\tlocked = options.once;\r\n\r\n\t\t\t// Execute callbacks for all pending executions,\r\n\t\t\t// respecting firingIndex overrides and runtime changes\r\n\t\t\tfired = firing = true;\r\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\r\n\t\t\t\tmemory = queue.shift();\r\n\t\t\t\twhile ( ++firingIndex < list.length ) {\r\n\r\n\t\t\t\t\t// Run callback and check for early termination\r\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\r\n\t\t\t\t\t\toptions.stopOnFalse ) {\r\n\r\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\r\n\t\t\t\t\t\tfiringIndex = list.length;\r\n\t\t\t\t\t\tmemory = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Forget the data if we're done with it\r\n\t\t\tif ( !options.memory ) {\r\n\t\t\t\tmemory = false;\r\n\t\t\t}\r\n\r\n\t\t\tfiring = false;\r\n\r\n\t\t\t// Clean up if we're done firing for good\r\n\t\t\tif ( locked ) {\r\n\r\n\t\t\t\t// Keep an empty list if we have data for future add calls\r\n\t\t\t\tif ( memory ) {\r\n\t\t\t\t\tlist = [];\r\n\r\n\t\t\t\t// Otherwise, this object is spent\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlist = \"\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// Actual Callbacks object\r\n\t\tself = {\r\n\r\n\t\t\t// Add a callback or a collection of callbacks to the list\r\n\t\t\tadd: function() {\r\n\t\t\t\tif ( list ) {\r\n\r\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\r\n\t\t\t\t\tif ( memory && !firing ) {\r\n\t\t\t\t\t\tfiringIndex = list.length - 1;\r\n\t\t\t\t\t\tqueue.push( memory );\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t( function add( args ) {\r\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\r\n\t\t\t\t\t\t\tif ( jQuery.isFunction( arg ) ) {\r\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\r\n\t\t\t\t\t\t\t\t\tlist.push( arg );\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t} else if ( arg && arg.length && jQuery.type( arg ) !== \"string\" ) {\r\n\r\n\t\t\t\t\t\t\t\t// Inspect recursively\r\n\t\t\t\t\t\t\t\tadd( arg );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} );\r\n\t\t\t\t\t} )( arguments );\r\n\r\n\t\t\t\t\tif ( memory && !firing ) {\r\n\t\t\t\t\t\tfire();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\r\n\t\t\t// Remove a callback from the list\r\n\t\t\tremove: function() {\r\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\r\n\t\t\t\t\tvar index;\r\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\r\n\t\t\t\t\t\tlist.splice( index, 1 );\r\n\r\n\t\t\t\t\t\t// Handle firing indexes\r\n\t\t\t\t\t\tif ( index <= firingIndex ) {\r\n\t\t\t\t\t\t\tfiringIndex--;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} );\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\r\n\t\t\t// Check if a given callback is in the list.\r\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\r\n\t\t\thas: function( fn ) {\r\n\t\t\t\treturn fn ?\r\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\r\n\t\t\t\t\tlist.length > 0;\r\n\t\t\t},\r\n\r\n\t\t\t// Remove all callbacks from the list\r\n\t\t\tempty: function() {\r\n\t\t\t\tif ( list ) {\r\n\t\t\t\t\tlist = [];\r\n\t\t\t\t}\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\r\n\t\t\t// Disable .fire and .add\r\n\t\t\t// Abort any current/pending executions\r\n\t\t\t// Clear all callbacks and values\r\n\t\t\tdisable: function() {\r\n\t\t\t\tlocked = queue = [];\r\n\t\t\t\tlist = memory = \"\";\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\t\t\tdisabled: function() {\r\n\t\t\t\treturn !list;\r\n\t\t\t},\r\n\r\n\t\t\t// Disable .fire\r\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\r\n\t\t\t// Abort any pending executions\r\n\t\t\tlock: function() {\r\n\t\t\t\tlocked = true;\r\n\t\t\t\tif ( !memory ) {\r\n\t\t\t\t\tself.disable();\r\n\t\t\t\t}\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\t\t\tlocked: function() {\r\n\t\t\t\treturn !!locked;\r\n\t\t\t},\r\n\r\n\t\t\t// Call all callbacks with the given context and arguments\r\n\t\t\tfireWith: function( context, args ) {\r\n\t\t\t\tif ( !locked ) {\r\n\t\t\t\t\targs = args || [];\r\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\r\n\t\t\t\t\tqueue.push( args );\r\n\t\t\t\t\tif ( !firing ) {\r\n\t\t\t\t\t\tfire();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\r\n\t\t\t// Call all the callbacks with the given arguments\r\n\t\t\tfire: function() {\r\n\t\t\t\tself.fireWith( this, arguments );\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\r\n\t\t\t// To know if the callbacks have already been called at least once\r\n\t\t\tfired: function() {\r\n\t\t\t\treturn !!fired;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\treturn self;\r\n};\r\n\r\n\r\njQuery.extend( {\r\n\r\n\tDeferred: function( func ) {\r\n\t\tvar tuples = [\r\n\r\n\t\t\t\t// action, add listener, listener list, final state\r\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ), \"resolved\" ],\r\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ), \"rejected\" ],\r\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ) ]\r\n\t\t\t],\r\n\t\t\tstate = \"pending\",\r\n\t\t\tpromise = {\r\n\t\t\t\tstate: function() {\r\n\t\t\t\t\treturn state;\r\n\t\t\t\t},\r\n\t\t\t\talways: function() {\r\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\r\n\t\t\t\t\treturn this;\r\n\t\t\t\t},\r\n\t\t\t\tthen: function( /* fnDone, fnFail, fnProgress */ ) {\r\n\t\t\t\t\tvar fns = arguments;\r\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\r\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\r\n\t\t\t\t\t\t\tvar fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];\r\n\r\n\t\t\t\t\t\t\t// deferred[ done | fail | progress ] for forwarding actions to newDefer\r\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\r\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\r\n\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\r\n\t\t\t\t\t\t\t\t\treturned.promise()\r\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\r\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\r\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\r\n\t\t\t\t\t\t\t\t\t\tthis === promise ? newDefer.promise() : this,\r\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\r\n\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t} );\r\n\t\t\t\t\t\t} );\r\n\t\t\t\t\t\tfns = null;\r\n\t\t\t\t\t} ).promise();\r\n\t\t\t\t},\r\n\r\n\t\t\t\t// Get a promise for this deferred\r\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\r\n\t\t\t\tpromise: function( obj ) {\r\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tdeferred = {};\r\n\r\n\t\t// Keep pipe for back-compat\r\n\t\tpromise.pipe = promise.then;\r\n\r\n\t\t// Add list-specific methods\r\n\t\tjQuery.each( tuples, function( i, tuple ) {\r\n\t\t\tvar list = tuple[ 2 ],\r\n\t\t\t\tstateString = tuple[ 3 ];\r\n\r\n\t\t\t// promise[ done | fail | progress ] = list.add\r\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\r\n\r\n\t\t\t// Handle state\r\n\t\t\tif ( stateString ) {\r\n\t\t\t\tlist.add( function() {\r\n\r\n\t\t\t\t\t// state = [ resolved | rejected ]\r\n\t\t\t\t\tstate = stateString;\r\n\r\n\t\t\t\t// [ reject_list | resolve_list ].disable; progress_list.lock\r\n\t\t\t\t}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );\r\n\t\t\t}\r\n\r\n\t\t\t// deferred[ resolve | reject | notify ]\r\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\r\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? promise : this, arguments );\r\n\t\t\t\treturn this;\r\n\t\t\t};\r\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\r\n\t\t} );\r\n\r\n\t\t// Make the deferred a promise\r\n\t\tpromise.promise( deferred );\r\n\r\n\t\t// Call given func if any\r\n\t\tif ( func ) {\r\n\t\t\tfunc.call( deferred, deferred );\r\n\t\t}\r\n\r\n\t\t// All done!\r\n\t\treturn deferred;\r\n\t},\r\n\r\n\t// Deferred helper\r\n\twhen: function( subordinate /* , ..., subordinateN */ ) {\r\n\t\tvar i = 0,\r\n\t\t\tresolveValues = slice.call( arguments ),\r\n\t\t\tlength = resolveValues.length,\r\n\r\n\t\t\t// the count of uncompleted subordinates\r\n\t\t\tremaining = length !== 1 ||\r\n\t\t\t\t( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,\r\n\r\n\t\t\t// the master Deferred.\r\n\t\t\t// If resolveValues consist of only a single Deferred, just use that.\r\n\t\t\tdeferred = remaining === 1 ? subordinate : jQuery.Deferred(),\r\n\r\n\t\t\t// Update function for both resolve and progress values\r\n\t\t\tupdateFunc = function( i, contexts, values ) {\r\n\t\t\t\treturn function( value ) {\r\n\t\t\t\t\tcontexts[ i ] = this;\r\n\t\t\t\t\tvalues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\r\n\t\t\t\t\tif ( values === progressValues ) {\r\n\t\t\t\t\t\tdeferred.notifyWith( contexts, values );\r\n\r\n\t\t\t\t\t} else if ( !( --remaining ) ) {\r\n\t\t\t\t\t\tdeferred.resolveWith( contexts, values );\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t},\r\n\r\n\t\t\tprogressValues, progressContexts, resolveContexts;\r\n\r\n\t\t// add listeners to Deferred subordinates; treat others as resolved\r\n\t\tif ( length > 1 ) {\r\n\t\t\tprogressValues = new Array( length );\r\n\t\t\tprogressContexts = new Array( length );\r\n\t\t\tresolveContexts = new Array( length );\r\n\t\t\tfor ( ; i < length; i++ ) {\r\n\t\t\t\tif ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {\r\n\t\t\t\t\tresolveValues[ i ].promise()\r\n\t\t\t\t\t\t.progress( updateFunc( i, progressContexts, progressValues ) )\r\n\t\t\t\t\t\t.done( updateFunc( i, resolveContexts, resolveValues ) )\r\n\t\t\t\t\t\t.fail( deferred.reject );\r\n\t\t\t\t} else {\r\n\t\t\t\t\t--remaining;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// if we're not waiting on anything, resolve the master\r\n\t\tif ( !remaining ) {\r\n\t\t\tdeferred.resolveWith( resolveContexts, resolveValues );\r\n\t\t}\r\n\r\n\t\treturn deferred.promise();\r\n\t}\r\n} );\r\n\r\n\r\n// The deferred used on DOM ready\r\nvar readyList;\r\n\r\njQuery.fn.ready = function( fn ) {\r\n\r\n\t// Add the callback\r\n\tjQuery.ready.promise().done( fn );\r\n\r\n\treturn this;\r\n};\r\n\r\njQuery.extend( {\r\n\r\n\t// Is the DOM ready to be used? Set to true once it occurs.\r\n\tisReady: false,\r\n\r\n\t// A counter to track how many items to wait for before\r\n\t// the ready event fires. See #6781\r\n\treadyWait: 1,\r\n\r\n\t// Hold (or release) the ready event\r\n\tholdReady: function( hold ) {\r\n\t\tif ( hold ) {\r\n\t\t\tjQuery.readyWait++;\r\n\t\t} else {\r\n\t\t\tjQuery.ready( true );\r\n\t\t}\r\n\t},\r\n\r\n\t// Handle when the DOM is ready\r\n\tready: function( wait ) {\r\n\r\n\t\t// Abort if there are pending holds or we're already ready\r\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Remember that the DOM is ready\r\n\t\tjQuery.isReady = true;\r\n\r\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\r\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// If there are functions bound, to execute\r\n\t\treadyList.resolveWith( document, [ jQuery ] );\r\n\r\n\t\t// Trigger any bound ready events\r\n\t\tif ( jQuery.fn.triggerHandler ) {\r\n\t\t\tjQuery( document ).triggerHandler( \"ready\" );\r\n\t\t\tjQuery( document ).off( \"ready\" );\r\n\t\t}\r\n\t}\r\n} );\r\n\r\n/**\r\n * Clean-up method for dom ready events\r\n */\r\nfunction detach() {\r\n\tif ( document.addEventListener ) {\r\n\t\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\r\n\t\twindow.removeEventListener( \"load\", completed );\r\n\r\n\t} else {\r\n\t\tdocument.detachEvent( \"onreadystatechange\", completed );\r\n\t\twindow.detachEvent( \"onload\", completed );\r\n\t}\r\n}\r\n\r\n/**\r\n * The ready event handler and self cleanup method\r\n */\r\nfunction completed() {\r\n\r\n\t// readyState === \"complete\" is good enough for us to call the dom ready in oldIE\r\n\tif ( document.addEventListener ||\r\n\t\twindow.event.type === \"load\" ||\r\n\t\tdocument.readyState === \"complete\" ) {\r\n\r\n\t\tdetach();\r\n\t\tjQuery.ready();\r\n\t}\r\n}\r\n\r\njQuery.ready.promise = function( obj ) {\r\n\tif ( !readyList ) {\r\n\r\n\t\treadyList = jQuery.Deferred();\r\n\r\n\t\t// Catch cases where $(document).ready() is called\r\n\t\t// after the browser event has already occurred.\r\n\t\t// Support: IE6-10\r\n\t\t// Older IE sometimes signals \"interactive\" too soon\r\n\t\tif ( document.readyState === \"complete\" ||\r\n\t\t\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\r\n\r\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\r\n\t\t\twindow.setTimeout( jQuery.ready );\r\n\r\n\t\t// Standards-based browsers support DOMContentLoaded\r\n\t\t} else if ( document.addEventListener ) {\r\n\r\n\t\t\t// Use the handy event callback\r\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", completed );\r\n\r\n\t\t\t// A fallback to window.onload, that will always work\r\n\t\t\twindow.addEventListener( \"load\", completed );\r\n\r\n\t\t// If IE event model is used\r\n\t\t} else {\r\n\r\n\t\t\t// Ensure firing before onload, maybe late but safe also for iframes\r\n\t\t\tdocument.attachEvent( \"onreadystatechange\", completed );\r\n\r\n\t\t\t// A fallback to window.onload, that will always work\r\n\t\t\twindow.attachEvent( \"onload\", completed );\r\n\r\n\t\t\t// If IE and not a frame\r\n\t\t\t// continually check to see if the document is ready\r\n\t\t\tvar top = false;\r\n\r\n\t\t\ttry {\r\n\t\t\t\ttop = window.frameElement == null && document.documentElement;\r\n\t\t\t} catch ( e ) {}\r\n\r\n\t\t\tif ( top && top.doScroll ) {\r\n\t\t\t\t( function doScrollCheck() {\r\n\t\t\t\t\tif ( !jQuery.isReady ) {\r\n\r\n\t\t\t\t\t\ttry {\r\n\r\n\t\t\t\t\t\t\t// Use the trick by Diego Perini\r\n\t\t\t\t\t\t\t// http://javascript.nwbox.com/IEContentLoaded/\r\n\t\t\t\t\t\t\ttop.doScroll( \"left\" );\r\n\t\t\t\t\t\t} catch ( e ) {\r\n\t\t\t\t\t\t\treturn window.setTimeout( doScrollCheck, 50 );\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// detach all dom ready events\r\n\t\t\t\t\t\tdetach();\r\n\r\n\t\t\t\t\t\t// and execute any waiting functions\r\n\t\t\t\t\t\tjQuery.ready();\r\n\t\t\t\t\t}\r\n\t\t\t\t} )();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn readyList.promise( obj );\r\n};\r\n\r\n// Kick off the DOM ready check even if the user does not\r\njQuery.ready.promise();\r\n\r\n\r\n\r\n\r\n// Support: IE<9\r\n// Iteration over object's inherited properties before its own\r\nvar i;\r\nfor ( i in jQuery( support ) ) {\r\n\tbreak;\r\n}\r\nsupport.ownFirst = i === \"0\";\r\n\r\n// Note: most support tests are defined in their respective modules.\r\n// false until the test is run\r\nsupport.inlineBlockNeedsLayout = false;\r\n\r\n// Execute ASAP in case we need to set body.style.zoom\r\njQuery( function() {\r\n\r\n\t// Minified: var a,b,c,d\r\n\tvar val, div, body, container;\r\n\r\n\tbody = document.getElementsByTagName( \"body\" )[ 0 ];\r\n\tif ( !body || !body.style ) {\r\n\r\n\t\t// Return for frameset docs that don't have a body\r\n\t\treturn;\r\n\t}\r\n\r\n\t// Setup\r\n\tdiv = document.createElement( \"div\" );\r\n\tcontainer = document.createElement( \"div\" );\r\n\tcontainer.style.cssText = \"position:absolute;border:0;width:0;height:0;top:0;left:-9999px\";\r\n\tbody.appendChild( container ).appendChild( div );\r\n\r\n\tif ( typeof div.style.zoom !== \"undefined\" ) {\r\n\r\n\t\t// Support: IE<8\r\n\t\t// Check if natively block-level elements act like inline-block\r\n\t\t// elements when setting their display to 'inline' and giving\r\n\t\t// them layout\r\n\t\tdiv.style.cssText = \"display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1\";\r\n\r\n\t\tsupport.inlineBlockNeedsLayout = val = div.offsetWidth === 3;\r\n\t\tif ( val ) {\r\n\r\n\t\t\t// Prevent IE 6 from affecting layout for positioned elements #11048\r\n\t\t\t// Prevent IE from shrinking the body in IE 7 mode #12869\r\n\t\t\t// Support: IE<8\r\n\t\t\tbody.style.zoom = 1;\r\n\t\t}\r\n\t}\r\n\r\n\tbody.removeChild( container );\r\n} );\r\n\r\n\r\n( function() {\r\n\tvar div = document.createElement( \"div\" );\r\n\r\n\t// Support: IE<9\r\n\tsupport.deleteExpando = true;\r\n\ttry {\r\n\t\tdelete div.test;\r\n\t} catch ( e ) {\r\n\t\tsupport.deleteExpando = false;\r\n\t}\r\n\r\n\t// Null elements to avoid leaks in IE.\r\n\tdiv = null;\r\n} )();\r\nvar acceptData = function( elem ) {\r\n\tvar noData = jQuery.noData[ ( elem.nodeName + \" \" ).toLowerCase() ],\r\n\t\tnodeType = +elem.nodeType || 1;\r\n\r\n\t// Do not set data on non-element DOM nodes because it will not be cleared (#8335).\r\n\treturn nodeType !== 1 && nodeType !== 9 ?\r\n\t\tfalse :\r\n\r\n\t\t// Nodes accept data unless otherwise specified; rejection can be conditional\r\n\t\t!noData || noData !== true && elem.getAttribute( \"classid\" ) === noData;\r\n};\r\n\r\n\r\n\r\n\r\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\r\n\trmultiDash = /([A-Z])/g;\r\n\r\nfunction dataAttr( elem, key, data ) {\r\n\r\n\t// If nothing was found internally, try to fetch any\r\n\t// data from the HTML5 data-* attribute\r\n\tif ( data === undefined && elem.nodeType === 1 ) {\r\n\r\n\t\tvar name = \"data-\" + key.replace( rmultiDash, \"-$1\" ).toLowerCase();\r\n\r\n\t\tdata = elem.getAttribute( name );\r\n\r\n\t\tif ( typeof data === \"string\" ) {\r\n\t\t\ttry {\r\n\t\t\t\tdata = data === \"true\" ? true :\r\n\t\t\t\t\tdata === \"false\" ? false :\r\n\t\t\t\t\tdata === \"null\" ? null :\r\n\r\n\t\t\t\t\t// Only convert to a number if it doesn't change the string\r\n\t\t\t\t\t+data + \"\" === data ? +data :\r\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\r\n\t\t\t\t\tdata;\r\n\t\t\t} catch ( e ) {}\r\n\r\n\t\t\t// Make sure we set the data so it isn't changed later\r\n\t\t\tjQuery.data( elem, key, data );\r\n\r\n\t\t} else {\r\n\t\t\tdata = undefined;\r\n\t\t}\r\n\t}\r\n\r\n\treturn data;\r\n}\r\n\r\n// checks a cache object for emptiness\r\nfunction isEmptyDataObject( obj ) {\r\n\tvar name;\r\n\tfor ( name in obj ) {\r\n\r\n\t\t// if the public data object is empty, the private is still empty\r\n\t\tif ( name === \"data\" && jQuery.isEmptyObject( obj[ name ] ) ) {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\t\tif ( name !== \"toJSON\" ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\treturn true;\r\n}\r\n\r\nfunction internalData( elem, name, data, pvt /* Internal Use Only */ ) {\r\n\tif ( !acceptData( elem ) ) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar ret, thisCache,\r\n\t\tinternalKey = jQuery.expando,\r\n\r\n\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\r\n\t\t// can't GC object references properly across the DOM-JS boundary\r\n\t\tisNode = elem.nodeType,\r\n\r\n\t\t// Only DOM nodes need the global jQuery cache; JS object data is\r\n\t\t// attached directly to the object so GC can occur automatically\r\n\t\tcache = isNode ? jQuery.cache : elem,\r\n\r\n\t\t// Only defining an ID for JS objects if its cache already exists allows\r\n\t\t// the code to shortcut on the same path as a DOM node with no cache\r\n\t\tid = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;\r\n\r\n\t// Avoid doing any more work than we need to when trying to get data on an\r\n\t// object that has no data at all\r\n\tif ( ( !id || !cache[ id ] || ( !pvt && !cache[ id ].data ) ) &&\r\n\t\tdata === undefined && typeof name === \"string\" ) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tif ( !id ) {\r\n\r\n\t\t// Only DOM nodes need a new unique ID for each element since their data\r\n\t\t// ends up in the global cache\r\n\t\tif ( isNode ) {\r\n\t\t\tid = elem[ internalKey ] = deletedIds.pop() || jQuery.guid++;\r\n\t\t} else {\r\n\t\t\tid = internalKey;\r\n\t\t}\r\n\t}\r\n\r\n\tif ( !cache[ id ] ) {\r\n\r\n\t\t// Avoid exposing jQuery metadata on plain JS objects when the object\r\n\t\t// is serialized using JSON.stringify\r\n\t\tcache[ id ] = isNode ? {} : { toJSON: jQuery.noop };\r\n\t}\r\n\r\n\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\r\n\t// shallow copied over onto the existing cache\r\n\tif ( typeof name === \"object\" || typeof name === \"function\" ) {\r\n\t\tif ( pvt ) {\r\n\t\t\tcache[ id ] = jQuery.extend( cache[ id ], name );\r\n\t\t} else {\r\n\t\t\tcache[ id ].data = jQuery.extend( cache[ id ].data, name );\r\n\t\t}\r\n\t}\r\n\r\n\tthisCache = cache[ id ];\r\n\r\n\t// jQuery data() is stored in a separate object inside the object's internal data\r\n\t// cache in order to avoid key collisions between internal data and user-defined\r\n\t// data.\r\n\tif ( !pvt ) {\r\n\t\tif ( !thisCache.data ) {\r\n\t\t\tthisCache.data = {};\r\n\t\t}\r\n\r\n\t\tthisCache = thisCache.data;\r\n\t}\r\n\r\n\tif ( data !== undefined ) {\r\n\t\tthisCache[ jQuery.camelCase( name ) ] = data;\r\n\t}\r\n\r\n\t// Check for both converted-to-camel and non-converted data property names\r\n\t// If a data property was specified\r\n\tif ( typeof name === \"string\" ) {\r\n\r\n\t\t// First Try to find as-is property data\r\n\t\tret = thisCache[ name ];\r\n\r\n\t\t// Test for null|undefined property data\r\n\t\tif ( ret == null ) {\r\n\r\n\t\t\t// Try to find the camelCased property\r\n\t\t\tret = thisCache[ jQuery.camelCase( name ) ];\r\n\t\t}\r\n\t} else {\r\n\t\tret = thisCache;\r\n\t}\r\n\r\n\treturn ret;\r\n}\r\n\r\nfunction internalRemoveData( elem, name, pvt ) {\r\n\tif ( !acceptData( elem ) ) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar thisCache, i,\r\n\t\tisNode = elem.nodeType,\r\n\r\n\t\t// See jQuery.data for more information\r\n\t\tcache = isNode ? jQuery.cache : elem,\r\n\t\tid = isNode ? elem[ jQuery.expando ] : jQuery.expando;\r\n\r\n\t// If there is already no cache entry for this object, there is no\r\n\t// purpose in continuing\r\n\tif ( !cache[ id ] ) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tif ( name ) {\r\n\r\n\t\tthisCache = pvt ? cache[ id ] : cache[ id ].data;\r\n\r\n\t\tif ( thisCache ) {\r\n\r\n\t\t\t// Support array or space separated string names for data keys\r\n\t\t\tif ( !jQuery.isArray( name ) ) {\r\n\r\n\t\t\t\t// try the string as a key before any manipulation\r\n\t\t\t\tif ( name in thisCache ) {\r\n\t\t\t\t\tname = [ name ];\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\t// split the camel cased version by spaces unless a key with the spaces exists\r\n\t\t\t\t\tname = jQuery.camelCase( name );\r\n\t\t\t\t\tif ( name in thisCache ) {\r\n\t\t\t\t\t\tname = [ name ];\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tname = name.split( \" \" );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\r\n\t\t\t\t// If \"name\" is an array of keys...\r\n\t\t\t\t// When data is initially created, via (\"key\", \"val\") signature,\r\n\t\t\t\t// keys will be converted to camelCase.\r\n\t\t\t\t// Since there is no way to tell _how_ a key was added, remove\r\n\t\t\t\t// both plain key and camelCase key. #12786\r\n\t\t\t\t// This will only penalize the array argument path.\r\n\t\t\t\tname = name.concat( jQuery.map( name, jQuery.camelCase ) );\r\n\t\t\t}\r\n\r\n\t\t\ti = name.length;\r\n\t\t\twhile ( i-- ) {\r\n\t\t\t\tdelete thisCache[ name[ i ] ];\r\n\t\t\t}\r\n\r\n\t\t\t// If there is no data left in the cache, we want to continue\r\n\t\t\t// and let the cache object itself get destroyed\r\n\t\t\tif ( pvt ? !isEmptyDataObject( thisCache ) : !jQuery.isEmptyObject( thisCache ) ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// See jQuery.data for more information\r\n\tif ( !pvt ) {\r\n\t\tdelete cache[ id ].data;\r\n\r\n\t\t// Don't destroy the parent cache unless the internal data object\r\n\t\t// had been the only thing left in it\r\n\t\tif ( !isEmptyDataObject( cache[ id ] ) ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\r\n\t// Destroy the cache\r\n\tif ( isNode ) {\r\n\t\tjQuery.cleanData( [ elem ], true );\r\n\r\n\t// Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)\r\n\t/* jshint eqeqeq: false */\r\n\t} else if ( support.deleteExpando || cache != cache.window ) {\r\n\t\t/* jshint eqeqeq: true */\r\n\t\tdelete cache[ id ];\r\n\r\n\t// When all else fails, undefined\r\n\t} else {\r\n\t\tcache[ id ] = undefined;\r\n\t}\r\n}\r\n\r\njQuery.extend( {\r\n\tcache: {},\r\n\r\n\t// The following elements (space-suffixed to avoid Object.prototype collisions)\r\n\t// throw uncatchable exceptions if you attempt to set expando properties\r\n\tnoData: {\r\n\t\t\"applet \": true,\r\n\t\t\"embed \": true,\r\n\r\n\t\t// ...but Flash objects (which have this classid) *can* handle expandos\r\n\t\t\"object \": \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\"\r\n\t},\r\n\r\n\thasData: function( elem ) {\r\n\t\telem = elem.nodeType ? jQuery.cache[ elem[ jQuery.expando ] ] : elem[ jQuery.expando ];\r\n\t\treturn !!elem && !isEmptyDataObject( elem );\r\n\t},\r\n\r\n\tdata: function( elem, name, data ) {\r\n\t\treturn internalData( elem, name, data );\r\n\t},\r\n\r\n\tremoveData: function( elem, name ) {\r\n\t\treturn internalRemoveData( elem, name );\r\n\t},\r\n\r\n\t// For internal use only.\r\n\t_data: function( elem, name, data ) {\r\n\t\treturn internalData( elem, name, data, true );\r\n\t},\r\n\r\n\t_removeData: function( elem, name ) {\r\n\t\treturn internalRemoveData( elem, name, true );\r\n\t}\r\n} );\r\n\r\njQuery.fn.extend( {\r\n\tdata: function( key, value ) {\r\n\t\tvar i, name, data,\r\n\t\t\telem = this[ 0 ],\r\n\t\t\tattrs = elem && elem.attributes;\r\n\r\n\t\t// Special expections of .data basically thwart jQuery.access,\r\n\t\t// so implement the relevant behavior ourselves\r\n\r\n\t\t// Gets all values\r\n\t\tif ( key === undefined ) {\r\n\t\t\tif ( this.length ) {\r\n\t\t\t\tdata = jQuery.data( elem );\r\n\r\n\t\t\t\tif ( elem.nodeType === 1 && !jQuery._data( elem, \"parsedAttrs\" ) ) {\r\n\t\t\t\t\ti = attrs.length;\r\n\t\t\t\t\twhile ( i-- ) {\r\n\r\n\t\t\t\t\t\t// Support: IE11+\r\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\r\n\t\t\t\t\t\tif ( attrs[ i ] ) {\r\n\t\t\t\t\t\t\tname = attrs[ i ].name;\r\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\r\n\t\t\t\t\t\t\t\tname = jQuery.camelCase( name.slice( 5 ) );\r\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tjQuery._data( elem, \"parsedAttrs\", true );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn data;\r\n\t\t}\r\n\r\n\t\t// Sets multiple values\r\n\t\tif ( typeof key === \"object\" ) {\r\n\t\t\treturn this.each( function() {\r\n\t\t\t\tjQuery.data( this, key );\r\n\t\t\t} );\r\n\t\t}\r\n\r\n\t\treturn arguments.length > 1 ?\r\n\r\n\t\t\t// Sets one value\r\n\t\t\tthis.each( function() {\r\n\t\t\t\tjQuery.data( this, key, value );\r\n\t\t\t} ) :\r\n\r\n\t\t\t// Gets one value\r\n\t\t\t// Try to fetch any internally stored data first\r\n\t\t\telem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : undefined;\r\n\t},\r\n\r\n\tremoveData: function( key ) {\r\n\t\treturn this.each( function() {\r\n\t\t\tjQuery.removeData( this, key );\r\n\t\t} );\r\n\t}\r\n} );\r\n\r\n\r\njQuery.extend( {\r\n\tqueue: function( elem, type, data ) {\r\n\t\tvar queue;\r\n\r\n\t\tif ( elem ) {\r\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\r\n\t\t\tqueue = jQuery._data( elem, type );\r\n\r\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\r\n\t\t\tif ( data ) {\r\n\t\t\t\tif ( !queue || jQuery.isArray( data ) ) {\r\n\t\t\t\t\tqueue = jQuery._data( elem, type, jQuery.makeArray( data ) );\r\n\t\t\t\t} else {\r\n\t\t\t\t\tqueue.push( data );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn queue || [];\r\n\t\t}\r\n\t},\r\n\r\n\tdequeue: function( elem, type ) {\r\n\t\ttype = type || \"fx\";\r\n\r\n\t\tvar queue = jQuery.queue( elem, type ),\r\n\t\t\tstartLength = queue.length,\r\n\t\t\tfn = queue.shift(),\r\n\t\t\thooks = jQuery._queueHooks( elem, type ),\r\n\t\t\tnext = function() {\r\n\t\t\t\tjQuery.dequeue( elem, type );\r\n\t\t\t};\r\n\r\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\r\n\t\tif ( fn === \"inprogress\" ) {\r\n\t\t\tfn = queue.shift();\r\n\t\t\tstartLength--;\r\n\t\t}\r\n\r\n\t\tif ( fn ) {\r\n\r\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\r\n\t\t\t// automatically dequeued\r\n\t\t\tif ( type === \"fx\" ) {\r\n\t\t\t\tqueue.unshift( \"inprogress\" );\r\n\t\t\t}\r\n\r\n\t\t\t// clear up the last queue stop function\r\n\t\t\tdelete hooks.stop;\r\n\t\t\tfn.call( elem, next, hooks );\r\n\t\t}\r\n\r\n\t\tif ( !startLength && hooks ) {\r\n\t\t\thooks.empty.fire();\r\n\t\t}\r\n\t},\r\n\r\n\t// not intended for public consumption - generates a queueHooks object,\r\n\t// or returns the current one\r\n\t_queueHooks: function( elem, type ) {\r\n\t\tvar key = type + \"queueHooks\";\r\n\t\treturn jQuery._data( elem, key ) || jQuery._data( elem, key, {\r\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\r\n\t\t\t\tjQuery._removeData( elem, type + \"queue\" );\r\n\t\t\t\tjQuery._removeData( elem, key );\r\n\t\t\t} )\r\n\t\t} );\r\n\t}\r\n} );\r\n\r\njQuery.fn.extend( {\r\n\tqueue: function( type, data ) {\r\n\t\tvar setter = 2;\r\n\r\n\t\tif ( typeof type !== \"string\" ) {\r\n\t\t\tdata = type;\r\n\t\t\ttype = \"fx\";\r\n\t\t\tsetter--;\r\n\t\t}\r\n\r\n\t\tif ( arguments.length < setter ) {\r\n\t\t\treturn jQuery.queue( this[ 0 ], type );\r\n\t\t}\r\n\r\n\t\treturn data === undefined ?\r\n\t\t\tthis :\r\n\t\t\tthis.each( function() {\r\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\r\n\r\n\t\t\t\t// ensure a hooks for this queue\r\n\t\t\t\tjQuery._queueHooks( this, type );\r\n\r\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\r\n\t\t\t\t\tjQuery.dequeue( this, type );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t},\r\n\tdequeue: function( type ) {\r\n\t\treturn this.each( function() {\r\n\t\t\tjQuery.dequeue( this, type );\r\n\t\t} );\r\n\t},\r\n\tclearQueue: function( type ) {\r\n\t\treturn this.queue( type || \"fx\", [] );\r\n\t},\r\n\r\n\t// Get a promise resolved when queues of a certain type\r\n\t// are emptied (fx is the type by default)\r\n\tpromise: function( type, obj ) {\r\n\t\tvar tmp,\r\n\t\t\tcount = 1,\r\n\t\t\tdefer = jQuery.Deferred(),\r\n\t\t\telements = this,\r\n\t\t\ti = this.length,\r\n\t\t\tresolve = function() {\r\n\t\t\t\tif ( !( --count ) ) {\r\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tif ( typeof type !== \"string\" ) {\r\n\t\t\tobj = type;\r\n\t\t\ttype = undefined;\r\n\t\t}\r\n\t\ttype = type || \"fx\";\r\n\r\n\t\twhile ( i-- ) {\r\n\t\t\ttmp = jQuery._data( elements[ i ], type + \"queueHooks\" );\r\n\t\t\tif ( tmp && tmp.empty ) {\r\n\t\t\t\tcount++;\r\n\t\t\t\ttmp.empty.add( resolve );\r\n\t\t\t}\r\n\t\t}\r\n\t\tresolve();\r\n\t\treturn defer.promise( obj );\r\n\t}\r\n} );\r\n\r\n\r\n( function() {\r\n\tvar shrinkWrapBlocksVal;\r\n\r\n\tsupport.shrinkWrapBlocks = function() {\r\n\t\tif ( shrinkWrapBlocksVal != null ) {\r\n\t\t\treturn shrinkWrapBlocksVal;\r\n\t\t}\r\n\r\n\t\t// Will be changed later if needed.\r\n\t\tshrinkWrapBlocksVal = false;\r\n\r\n\t\t// Minified: var b,c,d\r\n\t\tvar div, body, container;\r\n\r\n\t\tbody = document.getElementsByTagName( \"body\" )[ 0 ];\r\n\t\tif ( !body || !body.style ) {\r\n\r\n\t\t\t// Test fired too early or in an unsupported environment, exit.\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Setup\r\n\t\tdiv = document.createElement( \"div\" );\r\n\t\tcontainer = document.createElement( \"div\" );\r\n\t\tcontainer.style.cssText = \"position:absolute;border:0;width:0;height:0;top:0;left:-9999px\";\r\n\t\tbody.appendChild( container ).appendChild( div );\r\n\r\n\t\t// Support: IE6\r\n\t\t// Check if elements with layout shrink-wrap their children\r\n\t\tif ( typeof div.style.zoom !== \"undefined\" ) {\r\n\r\n\t\t\t// Reset CSS: box-sizing; display; margin; border\r\n\t\t\tdiv.style.cssText =\r\n\r\n\t\t\t\t// Support: Firefox<29, Android 2.3\r\n\t\t\t\t// Vendor-prefix box-sizing\r\n\t\t\t\t\"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;\" +\r\n\t\t\t\t\"box-sizing:content-box;display:block;margin:0;border:0;\" +\r\n\t\t\t\t\"padding:1px;width:1px;zoom:1\";\r\n\t\t\tdiv.appendChild( document.createElement( \"div\" ) ).style.width = \"5px\";\r\n\t\t\tshrinkWrapBlocksVal = div.offsetWidth !== 3;\r\n\t\t}\r\n\r\n\t\tbody.removeChild( container );\r\n\r\n\t\treturn shrinkWrapBlocksVal;\r\n\t};\r\n\r\n} )();\r\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\r\n\r\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\r\n\r\n\r\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\r\n\r\nvar isHidden = function( elem, el ) {\r\n\r\n\t\t// isHidden might be called from jQuery#filter function;\r\n\t\t// in that case, element will be second argument\r\n\t\telem = el || elem;\r\n\t\treturn jQuery.css( elem, \"display\" ) === \"none\" ||\r\n\t\t\t!jQuery.contains( elem.ownerDocument, elem );\r\n\t};\r\n\r\n\r\n\r\nfunction adjustCSS( elem, prop, valueParts, tween ) {\r\n\tvar adjusted,\r\n\t\tscale = 1,\r\n\t\tmaxIterations = 20,\r\n\t\tcurrentValue = tween ?\r\n\t\t\tfunction() { return tween.cur(); } :\r\n\t\t\tfunction() { return jQuery.css( elem, prop, \"\" ); },\r\n\t\tinitial = currentValue(),\r\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\r\n\r\n\t\t// Starting value computation is required for potential unit mismatches\r\n\t\tinitialInUnit = ( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\r\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\r\n\r\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\r\n\r\n\t\t// Trust units reported by jQuery.css\r\n\t\tunit = unit || initialInUnit[ 3 ];\r\n\r\n\t\t// Make sure we update the tween properties later on\r\n\t\tvalueParts = valueParts || [];\r\n\r\n\t\t// Iteratively approximate from a nonzero starting point\r\n\t\tinitialInUnit = +initial || 1;\r\n\r\n\t\tdo {\r\n\r\n\t\t\t// If previous iteration zeroed out, double until we get *something*.\r\n\t\t\t// Use string for doubling so we don't accidentally see scale as unchanged below\r\n\t\t\tscale = scale || \".5\";\r\n\r\n\t\t\t// Adjust and apply\r\n\t\t\tinitialInUnit = initialInUnit / scale;\r\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\r\n\r\n\t\t// Update scale, tolerating zero or NaN from tween.cur()\r\n\t\t// Break the loop if scale is unchanged or perfect, or if we've just had enough.\r\n\t\t} while (\r\n\t\t\tscale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations\r\n\t\t);\r\n\t}\r\n\r\n\tif ( valueParts ) {\r\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\r\n\r\n\t\t// Apply relative offset (+=/-=) if specified\r\n\t\tadjusted = valueParts[ 1 ] ?\r\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\r\n\t\t\t+valueParts[ 2 ];\r\n\t\tif ( tween ) {\r\n\t\t\ttween.unit = unit;\r\n\t\t\ttween.start = initialInUnit;\r\n\t\t\ttween.end = adjusted;\r\n\t\t}\r\n\t}\r\n\treturn adjusted;\r\n}\r\n\r\n\r\n// Multifunctional method to get and set values of a collection\r\n// The value/s can optionally be executed if it's a function\r\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\r\n\tvar i = 0,\r\n\t\tlength = elems.length,\r\n\t\tbulk = key == null;\r\n\r\n\t// Sets many values\r\n\tif ( jQuery.type( key ) === \"object\" ) {\r\n\t\tchainable = true;\r\n\t\tfor ( i in key ) {\r\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\r\n\t\t}\r\n\r\n\t// Sets one value\r\n\t} else if ( value !== undefined ) {\r\n\t\tchainable = true;\r\n\r\n\t\tif ( !jQuery.isFunction( value ) ) {\r\n\t\t\traw = true;\r\n\t\t}\r\n\r\n\t\tif ( bulk ) {\r\n\r\n\t\t\t// Bulk operations run against the entire set\r\n\t\t\tif ( raw ) {\r\n\t\t\t\tfn.call( elems, value );\r\n\t\t\t\tfn = null;\r\n\r\n\t\t\t// ...except when executing function values\r\n\t\t\t} else {\r\n\t\t\t\tbulk = fn;\r\n\t\t\t\tfn = function( elem, key, value ) {\r\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ( fn ) {\r\n\t\t\tfor ( ; i < length; i++ ) {\r\n\t\t\t\tfn(\r\n\t\t\t\t\telems[ i ],\r\n\t\t\t\t\tkey,\r\n\t\t\t\t\traw ? value : value.call( elems[ i ], i, fn( elems[ i ], key ) )\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn chainable ?\r\n\t\telems :\r\n\r\n\t\t// Gets\r\n\t\tbulk ?\r\n\t\t\tfn.call( elems ) :\r\n\t\t\tlength ? fn( elems[ 0 ], key ) : emptyGet;\r\n};\r\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\r\n\r\nvar rtagName = ( /<([\\w:-]+)/ );\r\n\r\nvar rscriptType = ( /^$|\\/(?:java|ecma)script/i );\r\n\r\nvar rleadingWhitespace = ( /^\\s+/ );\r\n\r\nvar nodeNames = \"abbr|article|aside|audio|bdi|canvas|data|datalist|\" +\r\n\t\t\"details|dialog|figcaption|figure|footer|header|hgroup|main|\" +\r\n\t\t\"mark|meter|nav|output|picture|progress|section|summary|template|time|video\";\r\n\r\n\r\n\r\nfunction createSafeFragment( document ) {\r\n\tvar list = nodeNames.split( \"|\" ),\r\n\t\tsafeFrag = document.createDocumentFragment();\r\n\r\n\tif ( safeFrag.createElement ) {\r\n\t\twhile ( list.length ) {\r\n\t\t\tsafeFrag.createElement(\r\n\t\t\t\tlist.pop()\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\treturn safeFrag;\r\n}\r\n\r\n\r\n( function() {\r\n\tvar div = document.createElement( \"div\" ),\r\n\t\tfragment = document.createDocumentFragment(),\r\n\t\tinput = document.createElement( \"input\" );\r\n\r\n\t// Setup\r\n\tdiv.innerHTML = \"
                    a\";\r\n\r\n\t// IE strips leading whitespace when .innerHTML is used\r\n\tsupport.leadingWhitespace = div.firstChild.nodeType === 3;\r\n\r\n\t// Make sure that tbody elements aren't automatically inserted\r\n\t// IE will insert them into empty tables\r\n\tsupport.tbody = !div.getElementsByTagName( \"tbody\" ).length;\r\n\r\n\t// Make sure that link elements get serialized correctly by innerHTML\r\n\t// This requires a wrapper element in IE\r\n\tsupport.htmlSerialize = !!div.getElementsByTagName( \"link\" ).length;\r\n\r\n\t// Makes sure cloning an html5 element does not cause problems\r\n\t// Where outerHTML is undefined, this still works\r\n\tsupport.html5Clone =\r\n\t\tdocument.createElement( \"nav\" ).cloneNode( true ).outerHTML !== \"<:nav>\";\r\n\r\n\t// Check if a disconnected checkbox will retain its checked\r\n\t// value of true after appended to the DOM (IE6/7)\r\n\tinput.type = \"checkbox\";\r\n\tinput.checked = true;\r\n\tfragment.appendChild( input );\r\n\tsupport.appendChecked = input.checked;\r\n\r\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\r\n\t// Support: IE6-IE11+\r\n\tdiv.innerHTML = \"\";\r\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\r\n\r\n\t// #11217 - WebKit loses check when the name is after the checked attribute\r\n\tfragment.appendChild( div );\r\n\r\n\t// Support: Windows Web Apps (WWA)\r\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\r\n\tinput = document.createElement( \"input\" );\r\n\tinput.setAttribute( \"type\", \"radio\" );\r\n\tinput.setAttribute( \"checked\", \"checked\" );\r\n\tinput.setAttribute( \"name\", \"t\" );\r\n\r\n\tdiv.appendChild( input );\r\n\r\n\t// Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3\r\n\t// old WebKit doesn't clone checked state correctly in fragments\r\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\r\n\r\n\t// Support: IE<9\r\n\t// Cloned elements keep attachEvent handlers, we use addEventListener on IE9+\r\n\tsupport.noCloneEvent = !!div.addEventListener;\r\n\r\n\t// Support: IE<9\r\n\t// Since attributes and properties are the same in IE,\r\n\t// cleanData must set properties to undefined rather than use removeAttribute\r\n\tdiv[ jQuery.expando ] = 1;\r\n\tsupport.attributes = !div.getAttribute( jQuery.expando );\r\n} )();\r\n\r\n\r\n// We have to close these tags to support XHTML (#13200)\r\nvar wrapMap = {\r\n\toption: [ 1, \"\" ],\r\n\tlegend: [ 1, \"
                    \", \"
                    \" ],\r\n\tarea: [ 1, \"\", \"\" ],\r\n\r\n\t// Support: IE8\r\n\tparam: [ 1, \"\", \"\" ],\r\n\tthead: [ 1, \"\", \"
                    \" ],\r\n\ttr: [ 2, \"\", \"
                    \" ],\r\n\tcol: [ 2, \"\", \"
                    \" ],\r\n\ttd: [ 3, \"\", \"
                    \" ],\r\n\r\n\t// IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags,\r\n\t// unless wrapped in a div with non-breaking characters in front of it.\r\n\t_default: support.htmlSerialize ? [ 0, \"\", \"\" ] : [ 1, \"X
                    \", \"
                    \" ]\r\n};\r\n\r\n// Support: IE8-IE9\r\nwrapMap.optgroup = wrapMap.option;\r\n\r\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\r\nwrapMap.th = wrapMap.td;\r\n\r\n\r\nfunction getAll( context, tag ) {\r\n\tvar elems, elem,\r\n\t\ti = 0,\r\n\t\tfound = typeof context.getElementsByTagName !== \"undefined\" ?\r\n\t\t\tcontext.getElementsByTagName( tag || \"*\" ) :\r\n\t\t\ttypeof context.querySelectorAll !== \"undefined\" ?\r\n\t\t\t\tcontext.querySelectorAll( tag || \"*\" ) :\r\n\t\t\t\tundefined;\r\n\r\n\tif ( !found ) {\r\n\t\tfor ( found = [], elems = context.childNodes || context;\r\n\t\t\t( elem = elems[ i ] ) != null;\r\n\t\t\ti++\r\n\t\t) {\r\n\t\t\tif ( !tag || jQuery.nodeName( elem, tag ) ) {\r\n\t\t\t\tfound.push( elem );\r\n\t\t\t} else {\r\n\t\t\t\tjQuery.merge( found, getAll( elem, tag ) );\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn tag === undefined || tag && jQuery.nodeName( context, tag ) ?\r\n\t\tjQuery.merge( [ context ], found ) :\r\n\t\tfound;\r\n}\r\n\r\n\r\n// Mark scripts as having already been evaluated\r\nfunction setGlobalEval( elems, refElements ) {\r\n\tvar elem,\r\n\t\ti = 0;\r\n\tfor ( ; ( elem = elems[ i ] ) != null; i++ ) {\r\n\t\tjQuery._data(\r\n\t\t\telem,\r\n\t\t\t\"globalEval\",\r\n\t\t\t!refElements || jQuery._data( refElements[ i ], \"globalEval\" )\r\n\t\t);\r\n\t}\r\n}\r\n\r\n\r\nvar rhtml = /<|&#?\\w+;/,\r\n\trtbody = / from table fragments\r\n\t\t\t\tif ( !support.tbody ) {\r\n\r\n\t\t\t\t\t// String was a , *may* have spurious \r\n\t\t\t\t\telem = tag === \"table\" && !rtbody.test( elem ) ?\r\n\t\t\t\t\t\ttmp.firstChild :\r\n\r\n\t\t\t\t\t\t// String was a bare or \r\n\t\t\t\t\t\twrap[ 1 ] === \"
                    \" && !rtbody.test( elem ) ?\r\n\t\t\t\t\t\t\ttmp :\r\n\t\t\t\t\t\t\t0;\r\n\r\n\t\t\t\t\tj = elem && elem.childNodes.length;\r\n\t\t\t\t\twhile ( j-- ) {\r\n\t\t\t\t\t\tif ( jQuery.nodeName( ( tbody = elem.childNodes[ j ] ), \"tbody\" ) &&\r\n\t\t\t\t\t\t\t!tbody.childNodes.length ) {\r\n\r\n\t\t\t\t\t\t\telem.removeChild( tbody );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\r\n\r\n\t\t\t\t// Fix #12392 for WebKit and IE > 9\r\n\t\t\t\ttmp.textContent = \"\";\r\n\r\n\t\t\t\t// Fix #12392 for oldIE\r\n\t\t\t\twhile ( tmp.firstChild ) {\r\n\t\t\t\t\ttmp.removeChild( tmp.firstChild );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Remember the top-level container for proper cleanup\r\n\t\t\t\ttmp = safe.lastChild;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Fix #11356: Clear elements from fragment\r\n\tif ( tmp ) {\r\n\t\tsafe.removeChild( tmp );\r\n\t}\r\n\r\n\t// Reset defaultChecked for any radios and checkboxes\r\n\t// about to be appended to the DOM in IE 6/7 (#8060)\r\n\tif ( !support.appendChecked ) {\r\n\t\tjQuery.grep( getAll( nodes, \"input\" ), fixDefaultChecked );\r\n\t}\r\n\r\n\ti = 0;\r\n\twhile ( ( elem = nodes[ i++ ] ) ) {\r\n\r\n\t\t// Skip elements already in the context collection (trac-4087)\r\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\r\n\t\t\tif ( ignored ) {\r\n\t\t\t\tignored.push( elem );\r\n\t\t\t}\r\n\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\r\n\r\n\t\t// Append to fragment\r\n\t\ttmp = getAll( safe.appendChild( elem ), \"script\" );\r\n\r\n\t\t// Preserve script evaluation history\r\n\t\tif ( contains ) {\r\n\t\t\tsetGlobalEval( tmp );\r\n\t\t}\r\n\r\n\t\t// Capture executables\r\n\t\tif ( scripts ) {\r\n\t\t\tj = 0;\r\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\r\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\r\n\t\t\t\t\tscripts.push( elem );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\ttmp = null;\r\n\r\n\treturn safe;\r\n}\r\n\r\n\r\n( function() {\r\n\tvar i, eventName,\r\n\t\tdiv = document.createElement( \"div\" );\r\n\r\n\t// Support: IE<9 (lack submit/change bubble), Firefox (lack focus(in | out) events)\r\n\tfor ( i in { submit: true, change: true, focusin: true } ) {\r\n\t\teventName = \"on\" + i;\r\n\r\n\t\tif ( !( support[ i ] = eventName in window ) ) {\r\n\r\n\t\t\t// Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP)\r\n\t\t\tdiv.setAttribute( eventName, \"t\" );\r\n\t\t\tsupport[ i ] = div.attributes[ eventName ].expando === false;\r\n\t\t}\r\n\t}\r\n\r\n\t// Null elements to avoid leaks in IE.\r\n\tdiv = null;\r\n} )();\r\n\r\n\r\nvar rformElems = /^(?:input|select|textarea)$/i,\r\n\trkeyEvent = /^key/,\r\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\r\n\trfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\r\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\r\n\r\nfunction returnTrue() {\r\n\treturn true;\r\n}\r\n\r\nfunction returnFalse() {\r\n\treturn false;\r\n}\r\n\r\n// Support: IE9\r\n// See #13393 for more info\r\nfunction safeActiveElement() {\r\n\ttry {\r\n\t\treturn document.activeElement;\r\n\t} catch ( err ) { }\r\n}\r\n\r\nfunction on( elem, types, selector, data, fn, one ) {\r\n\tvar origFn, type;\r\n\r\n\t// Types can be a map of types/handlers\r\n\tif ( typeof types === \"object\" ) {\r\n\r\n\t\t// ( types-Object, selector, data )\r\n\t\tif ( typeof selector !== \"string\" ) {\r\n\r\n\t\t\t// ( types-Object, data )\r\n\t\t\tdata = data || selector;\r\n\t\t\tselector = undefined;\r\n\t\t}\r\n\t\tfor ( type in types ) {\r\n\t\t\ton( elem, type, selector, data, types[ type ], one );\r\n\t\t}\r\n\t\treturn elem;\r\n\t}\r\n\r\n\tif ( data == null && fn == null ) {\r\n\r\n\t\t// ( types, fn )\r\n\t\tfn = selector;\r\n\t\tdata = selector = undefined;\r\n\t} else if ( fn == null ) {\r\n\t\tif ( typeof selector === \"string\" ) {\r\n\r\n\t\t\t// ( types, selector, fn )\r\n\t\t\tfn = data;\r\n\t\t\tdata = undefined;\r\n\t\t} else {\r\n\r\n\t\t\t// ( types, data, fn )\r\n\t\t\tfn = data;\r\n\t\t\tdata = selector;\r\n\t\t\tselector = undefined;\r\n\t\t}\r\n\t}\r\n\tif ( fn === false ) {\r\n\t\tfn = returnFalse;\r\n\t} else if ( !fn ) {\r\n\t\treturn elem;\r\n\t}\r\n\r\n\tif ( one === 1 ) {\r\n\t\torigFn = fn;\r\n\t\tfn = function( event ) {\r\n\r\n\t\t\t// Can use an empty set, since event contains the info\r\n\t\t\tjQuery().off( event );\r\n\t\t\treturn origFn.apply( this, arguments );\r\n\t\t};\r\n\r\n\t\t// Use same guid so caller can remove using origFn\r\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\r\n\t}\r\n\treturn elem.each( function() {\r\n\t\tjQuery.event.add( this, types, fn, data, selector );\r\n\t} );\r\n}\r\n\r\n/*\r\n * Helper functions for managing events -- not part of the public interface.\r\n * Props to Dean Edwards' addEvent library for many of the ideas.\r\n */\r\njQuery.event = {\r\n\r\n\tglobal: {},\r\n\r\n\tadd: function( elem, types, handler, data, selector ) {\r\n\t\tvar tmp, events, t, handleObjIn,\r\n\t\t\tspecial, eventHandle, handleObj,\r\n\t\t\thandlers, type, namespaces, origType,\r\n\t\t\telemData = jQuery._data( elem );\r\n\r\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\r\n\t\tif ( !elemData ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Caller can pass in an object of custom data in lieu of the handler\r\n\t\tif ( handler.handler ) {\r\n\t\t\thandleObjIn = handler;\r\n\t\t\thandler = handleObjIn.handler;\r\n\t\t\tselector = handleObjIn.selector;\r\n\t\t}\r\n\r\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\r\n\t\tif ( !handler.guid ) {\r\n\t\t\thandler.guid = jQuery.guid++;\r\n\t\t}\r\n\r\n\t\t// Init the element's event structure and main handler, if this is the first\r\n\t\tif ( !( events = elemData.events ) ) {\r\n\t\t\tevents = elemData.events = {};\r\n\t\t}\r\n\t\tif ( !( eventHandle = elemData.handle ) ) {\r\n\t\t\teventHandle = elemData.handle = function( e ) {\r\n\r\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\r\n\t\t\t\t// when an event is called after a page has unloaded\r\n\t\t\t\treturn typeof jQuery !== \"undefined\" &&\r\n\t\t\t\t\t( !e || jQuery.event.triggered !== e.type ) ?\r\n\t\t\t\t\tjQuery.event.dispatch.apply( eventHandle.elem, arguments ) :\r\n\t\t\t\t\tundefined;\r\n\t\t\t};\r\n\r\n\t\t\t// Add elem as a property of the handle fn to prevent a memory leak\r\n\t\t\t// with IE non-native events\r\n\t\t\teventHandle.elem = elem;\r\n\t\t}\r\n\r\n\t\t// Handle multiple events separated by a space\r\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\r\n\t\tt = types.length;\r\n\t\twhile ( t-- ) {\r\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\r\n\t\t\ttype = origType = tmp[ 1 ];\r\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\r\n\r\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\r\n\t\t\tif ( !type ) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\t// If event changes its type, use the special event handlers for the changed type\r\n\t\t\tspecial = jQuery.event.special[ type ] || {};\r\n\r\n\t\t\t// If selector defined, determine special event api type, otherwise given type\r\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\r\n\r\n\t\t\t// Update special based on newly reset type\r\n\t\t\tspecial = jQuery.event.special[ type ] || {};\r\n\r\n\t\t\t// handleObj is passed to all event handlers\r\n\t\t\thandleObj = jQuery.extend( {\r\n\t\t\t\ttype: type,\r\n\t\t\t\torigType: origType,\r\n\t\t\t\tdata: data,\r\n\t\t\t\thandler: handler,\r\n\t\t\t\tguid: handler.guid,\r\n\t\t\t\tselector: selector,\r\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\r\n\t\t\t\tnamespace: namespaces.join( \".\" )\r\n\t\t\t}, handleObjIn );\r\n\r\n\t\t\t// Init the event handler queue if we're the first\r\n\t\t\tif ( !( handlers = events[ type ] ) ) {\r\n\t\t\t\thandlers = events[ type ] = [];\r\n\t\t\t\thandlers.delegateCount = 0;\r\n\r\n\t\t\t\t// Only use addEventListener/attachEvent if the special events handler returns false\r\n\t\t\t\tif ( !special.setup ||\r\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\r\n\r\n\t\t\t\t\t// Bind the global event handler to the element\r\n\t\t\t\t\tif ( elem.addEventListener ) {\r\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\r\n\r\n\t\t\t\t\t} else if ( elem.attachEvent ) {\r\n\t\t\t\t\t\telem.attachEvent( \"on\" + type, eventHandle );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif ( special.add ) {\r\n\t\t\t\tspecial.add.call( elem, handleObj );\r\n\r\n\t\t\t\tif ( !handleObj.handler.guid ) {\r\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Add to the element's handler list, delegates in front\r\n\t\t\tif ( selector ) {\r\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\r\n\t\t\t} else {\r\n\t\t\t\thandlers.push( handleObj );\r\n\t\t\t}\r\n\r\n\t\t\t// Keep track of which events have ever been used, for event optimization\r\n\t\t\tjQuery.event.global[ type ] = true;\r\n\t\t}\r\n\r\n\t\t// Nullify elem to prevent memory leaks in IE\r\n\t\telem = null;\r\n\t},\r\n\r\n\t// Detach an event or set of events from an element\r\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\r\n\t\tvar j, handleObj, tmp,\r\n\t\t\torigCount, t, events,\r\n\t\t\tspecial, handlers, type,\r\n\t\t\tnamespaces, origType,\r\n\t\t\telemData = jQuery.hasData( elem ) && jQuery._data( elem );\r\n\r\n\t\tif ( !elemData || !( events = elemData.events ) ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Once for each type.namespace in types; type may be omitted\r\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\r\n\t\tt = types.length;\r\n\t\twhile ( t-- ) {\r\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\r\n\t\t\ttype = origType = tmp[ 1 ];\r\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\r\n\r\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\r\n\t\t\tif ( !type ) {\r\n\t\t\t\tfor ( type in events ) {\r\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\r\n\t\t\t\t}\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tspecial = jQuery.event.special[ type ] || {};\r\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\r\n\t\t\thandlers = events[ type ] || [];\r\n\t\t\ttmp = tmp[ 2 ] &&\r\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\r\n\r\n\t\t\t// Remove matching events\r\n\t\t\torigCount = j = handlers.length;\r\n\t\t\twhile ( j-- ) {\r\n\t\t\t\thandleObj = handlers[ j ];\r\n\r\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\r\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\r\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\r\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\r\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\r\n\t\t\t\t\thandlers.splice( j, 1 );\r\n\r\n\t\t\t\t\tif ( handleObj.selector ) {\r\n\t\t\t\t\t\thandlers.delegateCount--;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ( special.remove ) {\r\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\r\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\r\n\t\t\tif ( origCount && !handlers.length ) {\r\n\t\t\t\tif ( !special.teardown ||\r\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\r\n\r\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdelete events[ type ];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Remove the expando if it's no longer used\r\n\t\tif ( jQuery.isEmptyObject( events ) ) {\r\n\t\t\tdelete elemData.handle;\r\n\r\n\t\t\t// removeData also checks for emptiness and clears the expando if empty\r\n\t\t\t// so use it instead of delete\r\n\t\t\tjQuery._removeData( elem, \"events\" );\r\n\t\t}\r\n\t},\r\n\r\n\ttrigger: function( event, data, elem, onlyHandlers ) {\r\n\t\tvar handle, ontype, cur,\r\n\t\t\tbubbleType, special, tmp, i,\r\n\t\t\teventPath = [ elem || document ],\r\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\r\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\r\n\r\n\t\tcur = tmp = elem = elem || document;\r\n\r\n\t\t// Don't do events on text and comment nodes\r\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\r\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\r\n\r\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\r\n\t\t\tnamespaces = type.split( \".\" );\r\n\t\t\ttype = namespaces.shift();\r\n\t\t\tnamespaces.sort();\r\n\t\t}\r\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\r\n\r\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\r\n\t\tevent = event[ jQuery.expando ] ?\r\n\t\t\tevent :\r\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\r\n\r\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\r\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\r\n\t\tevent.namespace = namespaces.join( \".\" );\r\n\t\tevent.rnamespace = event.namespace ?\r\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\r\n\t\t\tnull;\r\n\r\n\t\t// Clean up the event in case it is being reused\r\n\t\tevent.result = undefined;\r\n\t\tif ( !event.target ) {\r\n\t\t\tevent.target = elem;\r\n\t\t}\r\n\r\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\r\n\t\tdata = data == null ?\r\n\t\t\t[ event ] :\r\n\t\t\tjQuery.makeArray( data, [ event ] );\r\n\r\n\t\t// Allow special events to draw outside the lines\r\n\t\tspecial = jQuery.event.special[ type ] || {};\r\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\r\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\r\n\t\tif ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {\r\n\r\n\t\t\tbubbleType = special.delegateType || type;\r\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\r\n\t\t\t\tcur = cur.parentNode;\r\n\t\t\t}\r\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\r\n\t\t\t\teventPath.push( cur );\r\n\t\t\t\ttmp = cur;\r\n\t\t\t}\r\n\r\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\r\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\r\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Fire handlers on the event path\r\n\t\ti = 0;\r\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\r\n\r\n\t\t\tevent.type = i > 1 ?\r\n\t\t\t\tbubbleType :\r\n\t\t\t\tspecial.bindType || type;\r\n\r\n\t\t\t// jQuery handler\r\n\t\t\thandle = ( jQuery._data( cur, \"events\" ) || {} )[ event.type ] &&\r\n\t\t\t\tjQuery._data( cur, \"handle\" );\r\n\r\n\t\t\tif ( handle ) {\r\n\t\t\t\thandle.apply( cur, data );\r\n\t\t\t}\r\n\r\n\t\t\t// Native handler\r\n\t\t\thandle = ontype && cur[ ontype ];\r\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\r\n\t\t\t\tevent.result = handle.apply( cur, data );\r\n\t\t\t\tif ( event.result === false ) {\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tevent.type = type;\r\n\r\n\t\t// If nobody prevented the default action, do it now\r\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\r\n\r\n\t\t\tif (\r\n\t\t\t\t( !special._default ||\r\n\t\t\t\t special._default.apply( eventPath.pop(), data ) === false\r\n\t\t\t\t) && acceptData( elem )\r\n\t\t\t) {\r\n\r\n\t\t\t\t// Call a native DOM method on the target with the same name name as the event.\r\n\t\t\t\t// Can't use an .isFunction() check here because IE6/7 fails that test.\r\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\r\n\t\t\t\tif ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) {\r\n\r\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\r\n\t\t\t\t\ttmp = elem[ ontype ];\r\n\r\n\t\t\t\t\tif ( tmp ) {\r\n\t\t\t\t\t\telem[ ontype ] = null;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\r\n\t\t\t\t\tjQuery.event.triggered = type;\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\telem[ type ]();\r\n\t\t\t\t\t} catch ( e ) {\r\n\r\n\t\t\t\t\t\t// IE<9 dies on focus/blur to hidden element (#1486,#12518)\r\n\t\t\t\t\t\t// only reproducible on winXP IE8 native, not IE9 in IE8 mode\r\n\t\t\t\t\t}\r\n\t\t\t\t\tjQuery.event.triggered = undefined;\r\n\r\n\t\t\t\t\tif ( tmp ) {\r\n\t\t\t\t\t\telem[ ontype ] = tmp;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn event.result;\r\n\t},\r\n\r\n\tdispatch: function( event ) {\r\n\r\n\t\t// Make a writable jQuery.Event from the native event object\r\n\t\tevent = jQuery.event.fix( event );\r\n\r\n\t\tvar i, j, ret, matched, handleObj,\r\n\t\t\thandlerQueue = [],\r\n\t\t\targs = slice.call( arguments ),\r\n\t\t\thandlers = ( jQuery._data( this, \"events\" ) || {} )[ event.type ] || [],\r\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\r\n\r\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\r\n\t\targs[ 0 ] = event;\r\n\t\tevent.delegateTarget = this;\r\n\r\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\r\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Determine handlers\r\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\r\n\r\n\t\t// Run delegates first; they may want to stop propagation beneath us\r\n\t\ti = 0;\r\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\r\n\t\t\tevent.currentTarget = matched.elem;\r\n\r\n\t\t\tj = 0;\r\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\r\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\r\n\r\n\t\t\t\t// Triggered event must either 1) have no namespace, or 2) have namespace(s)\r\n\t\t\t\t// a subset or equal to those in the bound event (both can have no namespace).\r\n\t\t\t\tif ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {\r\n\r\n\t\t\t\t\tevent.handleObj = handleObj;\r\n\t\t\t\t\tevent.data = handleObj.data;\r\n\r\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\r\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\r\n\r\n\t\t\t\t\tif ( ret !== undefined ) {\r\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\r\n\t\t\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Call the postDispatch hook for the mapped type\r\n\t\tif ( special.postDispatch ) {\r\n\t\t\tspecial.postDispatch.call( this, event );\r\n\t\t}\r\n\r\n\t\treturn event.result;\r\n\t},\r\n\r\n\thandlers: function( event, handlers ) {\r\n\t\tvar i, matches, sel, handleObj,\r\n\t\t\thandlerQueue = [],\r\n\t\t\tdelegateCount = handlers.delegateCount,\r\n\t\t\tcur = event.target;\r\n\r\n\t\t// Support (at least): Chrome, IE9\r\n\t\t// Find delegate handlers\r\n\t\t// Black-hole SVG instance trees (#13180)\r\n\t\t//\r\n\t\t// Support: Firefox<=42+\r\n\t\t// Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343)\r\n\t\tif ( delegateCount && cur.nodeType &&\r\n\t\t\t( event.type !== \"click\" || isNaN( event.button ) || event.button < 1 ) ) {\r\n\r\n\t\t\t/* jshint eqeqeq: false */\r\n\t\t\tfor ( ; cur != this; cur = cur.parentNode || this ) {\r\n\t\t\t\t/* jshint eqeqeq: true */\r\n\r\n\t\t\t\t// Don't check non-elements (#13208)\r\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\r\n\t\t\t\tif ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== \"click\" ) ) {\r\n\t\t\t\t\tmatches = [];\r\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\r\n\t\t\t\t\t\thandleObj = handlers[ i ];\r\n\r\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\r\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\r\n\r\n\t\t\t\t\t\tif ( matches[ sel ] === undefined ) {\r\n\t\t\t\t\t\t\tmatches[ sel ] = handleObj.needsContext ?\r\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\r\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif ( matches[ sel ] ) {\r\n\t\t\t\t\t\t\tmatches.push( handleObj );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ( matches.length ) {\r\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matches } );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Add the remaining (directly-bound) handlers\r\n\t\tif ( delegateCount < handlers.length ) {\r\n\t\t\thandlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } );\r\n\t\t}\r\n\r\n\t\treturn handlerQueue;\r\n\t},\r\n\r\n\tfix: function( event ) {\r\n\t\tif ( event[ jQuery.expando ] ) {\r\n\t\t\treturn event;\r\n\t\t}\r\n\r\n\t\t// Create a writable copy of the event object and normalize some properties\r\n\t\tvar i, prop, copy,\r\n\t\t\ttype = event.type,\r\n\t\t\toriginalEvent = event,\r\n\t\t\tfixHook = this.fixHooks[ type ];\r\n\r\n\t\tif ( !fixHook ) {\r\n\t\t\tthis.fixHooks[ type ] = fixHook =\r\n\t\t\t\trmouseEvent.test( type ) ? this.mouseHooks :\r\n\t\t\t\trkeyEvent.test( type ) ? this.keyHooks :\r\n\t\t\t\t{};\r\n\t\t}\r\n\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\r\n\r\n\t\tevent = new jQuery.Event( originalEvent );\r\n\r\n\t\ti = copy.length;\r\n\t\twhile ( i-- ) {\r\n\t\t\tprop = copy[ i ];\r\n\t\t\tevent[ prop ] = originalEvent[ prop ];\r\n\t\t}\r\n\r\n\t\t// Support: IE<9\r\n\t\t// Fix target property (#1925)\r\n\t\tif ( !event.target ) {\r\n\t\t\tevent.target = originalEvent.srcElement || document;\r\n\t\t}\r\n\r\n\t\t// Support: Safari 6-8+\r\n\t\t// Target should not be a text node (#504, #13143)\r\n\t\tif ( event.target.nodeType === 3 ) {\r\n\t\t\tevent.target = event.target.parentNode;\r\n\t\t}\r\n\r\n\t\t// Support: IE<9\r\n\t\t// For mouse/key events, metaKey==false if it's undefined (#3368, #11328)\r\n\t\tevent.metaKey = !!event.metaKey;\r\n\r\n\t\treturn fixHook.filter ? fixHook.filter( event, originalEvent ) : event;\r\n\t},\r\n\r\n\t// Includes some event props shared by KeyEvent and MouseEvent\r\n\tprops: ( \"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase \" +\r\n\t\t\"metaKey relatedTarget shiftKey target timeStamp view which\" ).split( \" \" ),\r\n\r\n\tfixHooks: {},\r\n\r\n\tkeyHooks: {\r\n\t\tprops: \"char charCode key keyCode\".split( \" \" ),\r\n\t\tfilter: function( event, original ) {\r\n\r\n\t\t\t// Add which for key events\r\n\t\t\tif ( event.which == null ) {\r\n\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\r\n\t\t\t}\r\n\r\n\t\t\treturn event;\r\n\t\t}\r\n\t},\r\n\r\n\tmouseHooks: {\r\n\t\tprops: ( \"button buttons clientX clientY fromElement offsetX offsetY \" +\r\n\t\t\t\"pageX pageY screenX screenY toElement\" ).split( \" \" ),\r\n\t\tfilter: function( event, original ) {\r\n\t\t\tvar body, eventDoc, doc,\r\n\t\t\t\tbutton = original.button,\r\n\t\t\t\tfromElement = original.fromElement;\r\n\r\n\t\t\t// Calculate pageX/Y if missing and clientX/Y available\r\n\t\t\tif ( event.pageX == null && original.clientX != null ) {\r\n\t\t\t\teventDoc = event.target.ownerDocument || document;\r\n\t\t\t\tdoc = eventDoc.documentElement;\r\n\t\t\t\tbody = eventDoc.body;\r\n\r\n\t\t\t\tevent.pageX = original.clientX +\r\n\t\t\t\t\t( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) -\r\n\t\t\t\t\t( doc && doc.clientLeft || body && body.clientLeft || 0 );\r\n\t\t\t\tevent.pageY = original.clientY +\r\n\t\t\t\t\t( doc && doc.scrollTop || body && body.scrollTop || 0 ) -\r\n\t\t\t\t\t( doc && doc.clientTop || body && body.clientTop || 0 );\r\n\t\t\t}\r\n\r\n\t\t\t// Add relatedTarget, if necessary\r\n\t\t\tif ( !event.relatedTarget && fromElement ) {\r\n\t\t\t\tevent.relatedTarget = fromElement === event.target ?\r\n\t\t\t\t\toriginal.toElement :\r\n\t\t\t\t\tfromElement;\r\n\t\t\t}\r\n\r\n\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\r\n\t\t\t// Note: button is not normalized, so don't use it\r\n\t\t\tif ( !event.which && button !== undefined ) {\r\n\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\r\n\t\t\t}\r\n\r\n\t\t\treturn event;\r\n\t\t}\r\n\t},\r\n\r\n\tspecial: {\r\n\t\tload: {\r\n\r\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\r\n\t\t\tnoBubble: true\r\n\t\t},\r\n\t\tfocus: {\r\n\r\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\r\n\t\t\ttrigger: function() {\r\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tthis.focus();\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t} catch ( e ) {\r\n\r\n\t\t\t\t\t\t// Support: IE<9\r\n\t\t\t\t\t\t// If we error on focus to hidden element (#1486, #12518),\r\n\t\t\t\t\t\t// let .trigger() run the handlers\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tdelegateType: \"focusin\"\r\n\t\t},\r\n\t\tblur: {\r\n\t\t\ttrigger: function() {\r\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\r\n\t\t\t\t\tthis.blur();\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tdelegateType: \"focusout\"\r\n\t\t},\r\n\t\tclick: {\r\n\r\n\t\t\t// For checkbox, fire native event so checked state will be right\r\n\t\t\ttrigger: function() {\r\n\t\t\t\tif ( jQuery.nodeName( this, \"input\" ) && this.type === \"checkbox\" && this.click ) {\r\n\t\t\t\t\tthis.click();\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\r\n\t\t\t_default: function( event ) {\r\n\t\t\t\treturn jQuery.nodeName( event.target, \"a\" );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tbeforeunload: {\r\n\t\t\tpostDispatch: function( event ) {\r\n\r\n\t\t\t\t// Support: Firefox 20+\r\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\r\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\r\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t// Piggyback on a donor event to simulate a different one\r\n\tsimulate: function( type, elem, event ) {\r\n\t\tvar e = jQuery.extend(\r\n\t\t\tnew jQuery.Event(),\r\n\t\t\tevent,\r\n\t\t\t{\r\n\t\t\t\ttype: type,\r\n\t\t\t\tisSimulated: true\r\n\r\n\t\t\t\t// Previously, `originalEvent: {}` was set here, so stopPropagation call\r\n\t\t\t\t// would not be triggered on donor event, since in our own\r\n\t\t\t\t// jQuery.event.stopPropagation function we had a check for existence of\r\n\t\t\t\t// originalEvent.stopPropagation method, so, consequently it would be a noop.\r\n\t\t\t\t//\r\n\t\t\t\t// Guard for simulated events was moved to jQuery.event.stopPropagation function\r\n\t\t\t\t// since `originalEvent` should point to the original event for the\r\n\t\t\t\t// constancy with other events and for more focused logic\r\n\t\t\t}\r\n\t\t);\r\n\r\n\t\tjQuery.event.trigger( e, null, elem );\r\n\r\n\t\tif ( e.isDefaultPrevented() ) {\r\n\t\t\tevent.preventDefault();\r\n\t\t}\r\n\t}\r\n};\r\n\r\njQuery.removeEvent = document.removeEventListener ?\r\n\tfunction( elem, type, handle ) {\r\n\r\n\t\t// This \"if\" is needed for plain objects\r\n\t\tif ( elem.removeEventListener ) {\r\n\t\t\telem.removeEventListener( type, handle );\r\n\t\t}\r\n\t} :\r\n\tfunction( elem, type, handle ) {\r\n\t\tvar name = \"on\" + type;\r\n\r\n\t\tif ( elem.detachEvent ) {\r\n\r\n\t\t\t// #8545, #7054, preventing memory leaks for custom events in IE6-8\r\n\t\t\t// detachEvent needed property on element, by name of that event,\r\n\t\t\t// to properly expose it to GC\r\n\t\t\tif ( typeof elem[ name ] === \"undefined\" ) {\r\n\t\t\t\telem[ name ] = null;\r\n\t\t\t}\r\n\r\n\t\t\telem.detachEvent( name, handle );\r\n\t\t}\r\n\t};\r\n\r\njQuery.Event = function( src, props ) {\r\n\r\n\t// Allow instantiation without the 'new' keyword\r\n\tif ( !( this instanceof jQuery.Event ) ) {\r\n\t\treturn new jQuery.Event( src, props );\r\n\t}\r\n\r\n\t// Event object\r\n\tif ( src && src.type ) {\r\n\t\tthis.originalEvent = src;\r\n\t\tthis.type = src.type;\r\n\r\n\t\t// Events bubbling up the document may have been marked as prevented\r\n\t\t// by a handler lower down the tree; reflect the correct value.\r\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\r\n\t\t\t\tsrc.defaultPrevented === undefined &&\r\n\r\n\t\t\t\t// Support: IE < 9, Android < 4.0\r\n\t\t\t\tsrc.returnValue === false ?\r\n\t\t\treturnTrue :\r\n\t\t\treturnFalse;\r\n\r\n\t// Event type\r\n\t} else {\r\n\t\tthis.type = src;\r\n\t}\r\n\r\n\t// Put explicitly provided properties onto the event object\r\n\tif ( props ) {\r\n\t\tjQuery.extend( this, props );\r\n\t}\r\n\r\n\t// Create a timestamp if incoming event doesn't have one\r\n\tthis.timeStamp = src && src.timeStamp || jQuery.now();\r\n\r\n\t// Mark it as fixed\r\n\tthis[ jQuery.expando ] = true;\r\n};\r\n\r\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\r\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\r\njQuery.Event.prototype = {\r\n\tconstructor: jQuery.Event,\r\n\tisDefaultPrevented: returnFalse,\r\n\tisPropagationStopped: returnFalse,\r\n\tisImmediatePropagationStopped: returnFalse,\r\n\r\n\tpreventDefault: function() {\r\n\t\tvar e = this.originalEvent;\r\n\r\n\t\tthis.isDefaultPrevented = returnTrue;\r\n\t\tif ( !e ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// If preventDefault exists, run it on the original event\r\n\t\tif ( e.preventDefault ) {\r\n\t\t\te.preventDefault();\r\n\r\n\t\t// Support: IE\r\n\t\t// Otherwise set the returnValue property of the original event to false\r\n\t\t} else {\r\n\t\t\te.returnValue = false;\r\n\t\t}\r\n\t},\r\n\tstopPropagation: function() {\r\n\t\tvar e = this.originalEvent;\r\n\r\n\t\tthis.isPropagationStopped = returnTrue;\r\n\r\n\t\tif ( !e || this.isSimulated ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// If stopPropagation exists, run it on the original event\r\n\t\tif ( e.stopPropagation ) {\r\n\t\t\te.stopPropagation();\r\n\t\t}\r\n\r\n\t\t// Support: IE\r\n\t\t// Set the cancelBubble property of the original event to true\r\n\t\te.cancelBubble = true;\r\n\t},\r\n\tstopImmediatePropagation: function() {\r\n\t\tvar e = this.originalEvent;\r\n\r\n\t\tthis.isImmediatePropagationStopped = returnTrue;\r\n\r\n\t\tif ( e && e.stopImmediatePropagation ) {\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t}\r\n\r\n\t\tthis.stopPropagation();\r\n\t}\r\n};\r\n\r\n// Create mouseenter/leave events using mouseover/out and event-time checks\r\n// so that event delegation works in jQuery.\r\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\r\n//\r\n// Support: Safari 7 only\r\n// Safari sends mouseenter too often; see:\r\n// https://code.google.com/p/chromium/issues/detail?id=470258\r\n// for the description of the bug (it existed in older Chrome versions as well).\r\njQuery.each( {\r\n\tmouseenter: \"mouseover\",\r\n\tmouseleave: \"mouseout\",\r\n\tpointerenter: \"pointerover\",\r\n\tpointerleave: \"pointerout\"\r\n}, function( orig, fix ) {\r\n\tjQuery.event.special[ orig ] = {\r\n\t\tdelegateType: fix,\r\n\t\tbindType: fix,\r\n\r\n\t\thandle: function( event ) {\r\n\t\t\tvar ret,\r\n\t\t\t\ttarget = this,\r\n\t\t\t\trelated = event.relatedTarget,\r\n\t\t\t\thandleObj = event.handleObj;\r\n\r\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\r\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\r\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\r\n\t\t\t\tevent.type = handleObj.origType;\r\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\r\n\t\t\t\tevent.type = fix;\r\n\t\t\t}\r\n\t\t\treturn ret;\r\n\t\t}\r\n\t};\r\n} );\r\n\r\n// IE submit delegation\r\nif ( !support.submit ) {\r\n\r\n\tjQuery.event.special.submit = {\r\n\t\tsetup: function() {\r\n\r\n\t\t\t// Only need this for delegated form submit events\r\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\t// Lazy-add a submit handler when a descendant form may potentially be submitted\r\n\t\t\tjQuery.event.add( this, \"click._submit keypress._submit\", function( e ) {\r\n\r\n\t\t\t\t// Node name check avoids a VML-related crash in IE (#9807)\r\n\t\t\t\tvar elem = e.target,\r\n\t\t\t\t\tform = jQuery.nodeName( elem, \"input\" ) || jQuery.nodeName( elem, \"button\" ) ?\r\n\r\n\t\t\t\t\t\t// Support: IE <=8\r\n\t\t\t\t\t\t// We use jQuery.prop instead of elem.form\r\n\t\t\t\t\t\t// to allow fixing the IE8 delegated submit issue (gh-2332)\r\n\t\t\t\t\t\t// by 3rd party polyfills/workarounds.\r\n\t\t\t\t\t\tjQuery.prop( elem, \"form\" ) :\r\n\t\t\t\t\t\tundefined;\r\n\r\n\t\t\t\tif ( form && !jQuery._data( form, \"submit\" ) ) {\r\n\t\t\t\t\tjQuery.event.add( form, \"submit._submit\", function( event ) {\r\n\t\t\t\t\t\tevent._submitBubble = true;\r\n\t\t\t\t\t} );\r\n\t\t\t\t\tjQuery._data( form, \"submit\", true );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\r\n\t\t\t// return undefined since we don't need an event listener\r\n\t\t},\r\n\r\n\t\tpostDispatch: function( event ) {\r\n\r\n\t\t\t// If form was submitted by the user, bubble the event up the tree\r\n\t\t\tif ( event._submitBubble ) {\r\n\t\t\t\tdelete event._submitBubble;\r\n\t\t\t\tif ( this.parentNode && !event.isTrigger ) {\r\n\t\t\t\t\tjQuery.event.simulate( \"submit\", this.parentNode, event );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tteardown: function() {\r\n\r\n\t\t\t// Only need this for delegated form submit events\r\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\t// Remove delegated handlers; cleanData eventually reaps submit handlers attached above\r\n\t\t\tjQuery.event.remove( this, \"._submit\" );\r\n\t\t}\r\n\t};\r\n}\r\n\r\n// IE change delegation and checkbox/radio fix\r\nif ( !support.change ) {\r\n\r\n\tjQuery.event.special.change = {\r\n\r\n\t\tsetup: function() {\r\n\r\n\t\t\tif ( rformElems.test( this.nodeName ) ) {\r\n\r\n\t\t\t\t// IE doesn't fire change on a check/radio until blur; trigger it on click\r\n\t\t\t\t// after a propertychange. Eat the blur-change in special.change.handle.\r\n\t\t\t\t// This still fires onchange a second time for check/radio after blur.\r\n\t\t\t\tif ( this.type === \"checkbox\" || this.type === \"radio\" ) {\r\n\t\t\t\t\tjQuery.event.add( this, \"propertychange._change\", function( event ) {\r\n\t\t\t\t\t\tif ( event.originalEvent.propertyName === \"checked\" ) {\r\n\t\t\t\t\t\t\tthis._justChanged = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} );\r\n\t\t\t\t\tjQuery.event.add( this, \"click._change\", function( event ) {\r\n\t\t\t\t\t\tif ( this._justChanged && !event.isTrigger ) {\r\n\t\t\t\t\t\t\tthis._justChanged = false;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// Allow triggered, simulated change events (#11500)\r\n\t\t\t\t\t\tjQuery.event.simulate( \"change\", this, event );\r\n\t\t\t\t\t} );\r\n\t\t\t\t}\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\t// Delegated event; lazy-add a change handler on descendant inputs\r\n\t\t\tjQuery.event.add( this, \"beforeactivate._change\", function( e ) {\r\n\t\t\t\tvar elem = e.target;\r\n\r\n\t\t\t\tif ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, \"change\" ) ) {\r\n\t\t\t\t\tjQuery.event.add( elem, \"change._change\", function( event ) {\r\n\t\t\t\t\t\tif ( this.parentNode && !event.isSimulated && !event.isTrigger ) {\r\n\t\t\t\t\t\t\tjQuery.event.simulate( \"change\", this.parentNode, event );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} );\r\n\t\t\t\t\tjQuery._data( elem, \"change\", true );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t},\r\n\r\n\t\thandle: function( event ) {\r\n\t\t\tvar elem = event.target;\r\n\r\n\t\t\t// Swallow native change events from checkbox/radio, we already triggered them above\r\n\t\t\tif ( this !== elem || event.isSimulated || event.isTrigger ||\r\n\t\t\t\t( elem.type !== \"radio\" && elem.type !== \"checkbox\" ) ) {\r\n\r\n\t\t\t\treturn event.handleObj.handler.apply( this, arguments );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tteardown: function() {\r\n\t\t\tjQuery.event.remove( this, \"._change\" );\r\n\r\n\t\t\treturn !rformElems.test( this.nodeName );\r\n\t\t}\r\n\t};\r\n}\r\n\r\n// Support: Firefox\r\n// Firefox doesn't have focus(in | out) events\r\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\r\n//\r\n// Support: Chrome, Safari\r\n// focus(in | out) events fire after focus & blur events,\r\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\r\n// Related ticket - https://code.google.com/p/chromium/issues/detail?id=449857\r\nif ( !support.focusin ) {\r\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\r\n\r\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\r\n\t\tvar handler = function( event ) {\r\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\r\n\t\t};\r\n\r\n\t\tjQuery.event.special[ fix ] = {\r\n\t\t\tsetup: function() {\r\n\t\t\t\tvar doc = this.ownerDocument || this,\r\n\t\t\t\t\tattaches = jQuery._data( doc, fix );\r\n\r\n\t\t\t\tif ( !attaches ) {\r\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\r\n\t\t\t\t}\r\n\t\t\t\tjQuery._data( doc, fix, ( attaches || 0 ) + 1 );\r\n\t\t\t},\r\n\t\t\tteardown: function() {\r\n\t\t\t\tvar doc = this.ownerDocument || this,\r\n\t\t\t\t\tattaches = jQuery._data( doc, fix ) - 1;\r\n\r\n\t\t\t\tif ( !attaches ) {\r\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\r\n\t\t\t\t\tjQuery._removeData( doc, fix );\r\n\t\t\t\t} else {\r\n\t\t\t\t\tjQuery._data( doc, fix, attaches );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t} );\r\n}\r\n\r\njQuery.fn.extend( {\r\n\r\n\ton: function( types, selector, data, fn ) {\r\n\t\treturn on( this, types, selector, data, fn );\r\n\t},\r\n\tone: function( types, selector, data, fn ) {\r\n\t\treturn on( this, types, selector, data, fn, 1 );\r\n\t},\r\n\toff: function( types, selector, fn ) {\r\n\t\tvar handleObj, type;\r\n\t\tif ( types && types.preventDefault && types.handleObj ) {\r\n\r\n\t\t\t// ( event ) dispatched jQuery.Event\r\n\t\t\thandleObj = types.handleObj;\r\n\t\t\tjQuery( types.delegateTarget ).off(\r\n\t\t\t\thandleObj.namespace ?\r\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\r\n\t\t\t\t\thandleObj.origType,\r\n\t\t\t\thandleObj.selector,\r\n\t\t\t\thandleObj.handler\r\n\t\t\t);\r\n\t\t\treturn this;\r\n\t\t}\r\n\t\tif ( typeof types === \"object\" ) {\r\n\r\n\t\t\t// ( types-object [, selector] )\r\n\t\t\tfor ( type in types ) {\r\n\t\t\t\tthis.off( type, selector, types[ type ] );\r\n\t\t\t}\r\n\t\t\treturn this;\r\n\t\t}\r\n\t\tif ( selector === false || typeof selector === \"function\" ) {\r\n\r\n\t\t\t// ( types [, fn] )\r\n\t\t\tfn = selector;\r\n\t\t\tselector = undefined;\r\n\t\t}\r\n\t\tif ( fn === false ) {\r\n\t\t\tfn = returnFalse;\r\n\t\t}\r\n\t\treturn this.each( function() {\r\n\t\t\tjQuery.event.remove( this, types, fn, selector );\r\n\t\t} );\r\n\t},\r\n\r\n\ttrigger: function( type, data ) {\r\n\t\treturn this.each( function() {\r\n\t\t\tjQuery.event.trigger( type, data, this );\r\n\t\t} );\r\n\t},\r\n\ttriggerHandler: function( type, data ) {\r\n\t\tvar elem = this[ 0 ];\r\n\t\tif ( elem ) {\r\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\r\n\t\t}\r\n\t}\r\n} );\r\n\r\n\r\nvar rinlinejQuery = / jQuery\\d+=\"(?:null|\\d+)\"/g,\r\n\trnoshimcache = new RegExp( \"<(?:\" + nodeNames + \")[\\\\s/>]\", \"i\" ),\r\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:-]+)[^>]*)\\/>/gi,\r\n\r\n\t// Support: IE 10-11, Edge 10240+\r\n\t// In IE/Edge using regex groups here causes severe slowdowns.\r\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\r\n\trnoInnerhtml = /\\s*$/g,\r\n\tsafeFragment = createSafeFragment( document ),\r\n\tfragmentDiv = safeFragment.appendChild( document.createElement( \"div\" ) );\r\n\r\n// Support: IE<8\r\n// Manipulating tables requires a tbody\r\nfunction manipulationTarget( elem, content ) {\r\n\treturn jQuery.nodeName( elem, \"table\" ) &&\r\n\t\tjQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ?\r\n\r\n\t\telem.getElementsByTagName( \"tbody\" )[ 0 ] ||\r\n\t\t\telem.appendChild( elem.ownerDocument.createElement( \"tbody\" ) ) :\r\n\t\telem;\r\n}\r\n\r\n// Replace/restore the type attribute of script elements for safe DOM manipulation\r\nfunction disableScript( elem ) {\r\n\telem.type = ( jQuery.find.attr( elem, \"type\" ) !== null ) + \"/\" + elem.type;\r\n\treturn elem;\r\n}\r\nfunction restoreScript( elem ) {\r\n\tvar match = rscriptTypeMasked.exec( elem.type );\r\n\tif ( match ) {\r\n\t\telem.type = match[ 1 ];\r\n\t} else {\r\n\t\telem.removeAttribute( \"type\" );\r\n\t}\r\n\treturn elem;\r\n}\r\n\r\nfunction cloneCopyEvent( src, dest ) {\r\n\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar type, i, l,\r\n\t\toldData = jQuery._data( src ),\r\n\t\tcurData = jQuery._data( dest, oldData ),\r\n\t\tevents = oldData.events;\r\n\r\n\tif ( events ) {\r\n\t\tdelete curData.handle;\r\n\t\tcurData.events = {};\r\n\r\n\t\tfor ( type in events ) {\r\n\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\r\n\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// make the cloned public data object a copy from the original\r\n\tif ( curData.data ) {\r\n\t\tcurData.data = jQuery.extend( {}, curData.data );\r\n\t}\r\n}\r\n\r\nfunction fixCloneNodeIssues( src, dest ) {\r\n\tvar nodeName, e, data;\r\n\r\n\t// We do not need to do anything for non-Elements\r\n\tif ( dest.nodeType !== 1 ) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tnodeName = dest.nodeName.toLowerCase();\r\n\r\n\t// IE6-8 copies events bound via attachEvent when using cloneNode.\r\n\tif ( !support.noCloneEvent && dest[ jQuery.expando ] ) {\r\n\t\tdata = jQuery._data( dest );\r\n\r\n\t\tfor ( e in data.events ) {\r\n\t\t\tjQuery.removeEvent( dest, e, data.handle );\r\n\t\t}\r\n\r\n\t\t// Event data gets referenced instead of copied if the expando gets copied too\r\n\t\tdest.removeAttribute( jQuery.expando );\r\n\t}\r\n\r\n\t// IE blanks contents when cloning scripts, and tries to evaluate newly-set text\r\n\tif ( nodeName === \"script\" && dest.text !== src.text ) {\r\n\t\tdisableScript( dest ).text = src.text;\r\n\t\trestoreScript( dest );\r\n\r\n\t// IE6-10 improperly clones children of object elements using classid.\r\n\t// IE10 throws NoModificationAllowedError if parent is null, #12132.\r\n\t} else if ( nodeName === \"object\" ) {\r\n\t\tif ( dest.parentNode ) {\r\n\t\t\tdest.outerHTML = src.outerHTML;\r\n\t\t}\r\n\r\n\t\t// This path appears unavoidable for IE9. When cloning an object\r\n\t\t// element in IE9, the outerHTML strategy above is not sufficient.\r\n\t\t// If the src has innerHTML and the destination does not,\r\n\t\t// copy the src.innerHTML into the dest.innerHTML. #10324\r\n\t\tif ( support.html5Clone && ( src.innerHTML && !jQuery.trim( dest.innerHTML ) ) ) {\r\n\t\t\tdest.innerHTML = src.innerHTML;\r\n\t\t}\r\n\r\n\t} else if ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\r\n\r\n\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\r\n\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\r\n\t\t// a checked appearance if the defaultChecked value isn't also set\r\n\r\n\t\tdest.defaultChecked = dest.checked = src.checked;\r\n\r\n\t\t// IE6-7 get confused and end up setting the value of a cloned\r\n\t\t// checkbox/radio button to an empty string instead of \"on\"\r\n\t\tif ( dest.value !== src.value ) {\r\n\t\t\tdest.value = src.value;\r\n\t\t}\r\n\r\n\t// IE6-8 fails to return the selected option to the default selected\r\n\t// state when cloning options\r\n\t} else if ( nodeName === \"option\" ) {\r\n\t\tdest.defaultSelected = dest.selected = src.defaultSelected;\r\n\r\n\t// IE6-8 fails to set the defaultValue to the correct value when\r\n\t// cloning other types of input fields\r\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\r\n\t\tdest.defaultValue = src.defaultValue;\r\n\t}\r\n}\r\n\r\nfunction domManip( collection, args, callback, ignored ) {\r\n\r\n\t// Flatten any nested arrays\r\n\targs = concat.apply( [], args );\r\n\r\n\tvar first, node, hasScripts,\r\n\t\tscripts, doc, fragment,\r\n\t\ti = 0,\r\n\t\tl = collection.length,\r\n\t\tiNoClone = l - 1,\r\n\t\tvalue = args[ 0 ],\r\n\t\tisFunction = jQuery.isFunction( value );\r\n\r\n\t// We can't cloneNode fragments that contain checked, in WebKit\r\n\tif ( isFunction ||\r\n\t\t\t( l > 1 && typeof value === \"string\" &&\r\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\r\n\t\treturn collection.each( function( index ) {\r\n\t\t\tvar self = collection.eq( index );\r\n\t\t\tif ( isFunction ) {\r\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\r\n\t\t\t}\r\n\t\t\tdomManip( self, args, callback, ignored );\r\n\t\t} );\r\n\t}\r\n\r\n\tif ( l ) {\r\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\r\n\t\tfirst = fragment.firstChild;\r\n\r\n\t\tif ( fragment.childNodes.length === 1 ) {\r\n\t\t\tfragment = first;\r\n\t\t}\r\n\r\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\r\n\t\tif ( first || ignored ) {\r\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\r\n\t\t\thasScripts = scripts.length;\r\n\r\n\t\t\t// Use the original fragment for the last item\r\n\t\t\t// instead of the first because it can end up\r\n\t\t\t// being emptied incorrectly in certain situations (#8070).\r\n\t\t\tfor ( ; i < l; i++ ) {\r\n\t\t\t\tnode = fragment;\r\n\r\n\t\t\t\tif ( i !== iNoClone ) {\r\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\r\n\r\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\r\n\t\t\t\t\tif ( hasScripts ) {\r\n\r\n\t\t\t\t\t\t// Support: Android<4.1, PhantomJS<2\r\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\r\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcallback.call( collection[ i ], node, i );\r\n\t\t\t}\r\n\r\n\t\t\tif ( hasScripts ) {\r\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\r\n\r\n\t\t\t\t// Reenable scripts\r\n\t\t\t\tjQuery.map( scripts, restoreScript );\r\n\r\n\t\t\t\t// Evaluate executable scripts on first document insertion\r\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\r\n\t\t\t\t\tnode = scripts[ i ];\r\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\r\n\t\t\t\t\t\t!jQuery._data( node, \"globalEval\" ) &&\r\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\r\n\r\n\t\t\t\t\t\tif ( node.src ) {\r\n\r\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\r\n\t\t\t\t\t\t\tif ( jQuery._evalUrl ) {\r\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tjQuery.globalEval(\r\n\t\t\t\t\t\t\t\t( node.text || node.textContent || node.innerHTML || \"\" )\r\n\t\t\t\t\t\t\t\t\t.replace( rcleanScript, \"\" )\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Fix #11809: Avoid leaking memory\r\n\t\t\tfragment = first = null;\r\n\t\t}\r\n\t}\r\n\r\n\treturn collection;\r\n}\r\n\r\nfunction remove( elem, selector, keepData ) {\r\n\tvar node,\r\n\t\telems = selector ? jQuery.filter( selector, elem ) : elem,\r\n\t\ti = 0;\r\n\r\n\tfor ( ; ( node = elems[ i ] ) != null; i++ ) {\r\n\r\n\t\tif ( !keepData && node.nodeType === 1 ) {\r\n\t\t\tjQuery.cleanData( getAll( node ) );\r\n\t\t}\r\n\r\n\t\tif ( node.parentNode ) {\r\n\t\t\tif ( keepData && jQuery.contains( node.ownerDocument, node ) ) {\r\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\r\n\t\t\t}\r\n\t\t\tnode.parentNode.removeChild( node );\r\n\t\t}\r\n\t}\r\n\r\n\treturn elem;\r\n}\r\n\r\njQuery.extend( {\r\n\thtmlPrefilter: function( html ) {\r\n\t\treturn html.replace( rxhtmlTag, \"<$1>\" );\r\n\t},\r\n\r\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\r\n\t\tvar destElements, node, clone, i, srcElements,\r\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\r\n\r\n\t\tif ( support.html5Clone || jQuery.isXMLDoc( elem ) ||\r\n\t\t\t!rnoshimcache.test( \"<\" + elem.nodeName + \">\" ) ) {\r\n\r\n\t\t\tclone = elem.cloneNode( true );\r\n\r\n\t\t// IE<=8 does not properly clone detached, unknown element nodes\r\n\t\t} else {\r\n\t\t\tfragmentDiv.innerHTML = elem.outerHTML;\r\n\t\t\tfragmentDiv.removeChild( clone = fragmentDiv.firstChild );\r\n\t\t}\r\n\r\n\t\tif ( ( !support.noCloneEvent || !support.noCloneChecked ) &&\r\n\t\t\t\t( elem.nodeType === 1 || elem.nodeType === 11 ) && !jQuery.isXMLDoc( elem ) ) {\r\n\r\n\t\t\t// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2\r\n\t\t\tdestElements = getAll( clone );\r\n\t\t\tsrcElements = getAll( elem );\r\n\r\n\t\t\t// Fix all IE cloning issues\r\n\t\t\tfor ( i = 0; ( node = srcElements[ i ] ) != null; ++i ) {\r\n\r\n\t\t\t\t// Ensure that the destination node is not null; Fixes #9587\r\n\t\t\t\tif ( destElements[ i ] ) {\r\n\t\t\t\t\tfixCloneNodeIssues( node, destElements[ i ] );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Copy the events from the original to the clone\r\n\t\tif ( dataAndEvents ) {\r\n\t\t\tif ( deepDataAndEvents ) {\r\n\t\t\t\tsrcElements = srcElements || getAll( elem );\r\n\t\t\t\tdestElements = destElements || getAll( clone );\r\n\r\n\t\t\t\tfor ( i = 0; ( node = srcElements[ i ] ) != null; i++ ) {\r\n\t\t\t\t\tcloneCopyEvent( node, destElements[ i ] );\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tcloneCopyEvent( elem, clone );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Preserve script evaluation history\r\n\t\tdestElements = getAll( clone, \"script\" );\r\n\t\tif ( destElements.length > 0 ) {\r\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\r\n\t\t}\r\n\r\n\t\tdestElements = srcElements = node = null;\r\n\r\n\t\t// Return the cloned set\r\n\t\treturn clone;\r\n\t},\r\n\r\n\tcleanData: function( elems, /* internal */ forceAcceptData ) {\r\n\t\tvar elem, type, id, data,\r\n\t\t\ti = 0,\r\n\t\t\tinternalKey = jQuery.expando,\r\n\t\t\tcache = jQuery.cache,\r\n\t\t\tattributes = support.attributes,\r\n\t\t\tspecial = jQuery.event.special;\r\n\r\n\t\tfor ( ; ( elem = elems[ i ] ) != null; i++ ) {\r\n\t\t\tif ( forceAcceptData || acceptData( elem ) ) {\r\n\r\n\t\t\t\tid = elem[ internalKey ];\r\n\t\t\t\tdata = id && cache[ id ];\r\n\r\n\t\t\t\tif ( data ) {\r\n\t\t\t\t\tif ( data.events ) {\r\n\t\t\t\t\t\tfor ( type in data.events ) {\r\n\t\t\t\t\t\t\tif ( special[ type ] ) {\r\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\r\n\r\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Remove cache only if it was not already removed by jQuery.event.remove\r\n\t\t\t\t\tif ( cache[ id ] ) {\r\n\r\n\t\t\t\t\t\tdelete cache[ id ];\r\n\r\n\t\t\t\t\t\t// Support: IE<9\r\n\t\t\t\t\t\t// IE does not allow us to delete expando properties from nodes\r\n\t\t\t\t\t\t// IE creates expando attributes along with the property\r\n\t\t\t\t\t\t// IE does not have a removeAttribute function on Document nodes\r\n\t\t\t\t\t\tif ( !attributes && typeof elem.removeAttribute !== \"undefined\" ) {\r\n\t\t\t\t\t\t\telem.removeAttribute( internalKey );\r\n\r\n\t\t\t\t\t\t// Webkit & Blink performance suffers when deleting properties\r\n\t\t\t\t\t\t// from DOM nodes, so set to undefined instead\r\n\t\t\t\t\t\t// https://code.google.com/p/chromium/issues/detail?id=378607\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\telem[ internalKey ] = undefined;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tdeletedIds.push( id );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n} );\r\n\r\njQuery.fn.extend( {\r\n\r\n\t// Keep domManip exposed until 3.0 (gh-2225)\r\n\tdomManip: domManip,\r\n\r\n\tdetach: function( selector ) {\r\n\t\treturn remove( this, selector, true );\r\n\t},\r\n\r\n\tremove: function( selector ) {\r\n\t\treturn remove( this, selector );\r\n\t},\r\n\r\n\ttext: function( value ) {\r\n\t\treturn access( this, function( value ) {\r\n\t\t\treturn value === undefined ?\r\n\t\t\t\tjQuery.text( this ) :\r\n\t\t\t\tthis.empty().append(\r\n\t\t\t\t\t( this[ 0 ] && this[ 0 ].ownerDocument || document ).createTextNode( value )\r\n\t\t\t\t);\r\n\t\t}, null, value, arguments.length );\r\n\t},\r\n\r\n\tappend: function() {\r\n\t\treturn domManip( this, arguments, function( elem ) {\r\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\r\n\t\t\t\tvar target = manipulationTarget( this, elem );\r\n\t\t\t\ttarget.appendChild( elem );\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\r\n\tprepend: function() {\r\n\t\treturn domManip( this, arguments, function( elem ) {\r\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\r\n\t\t\t\tvar target = manipulationTarget( this, elem );\r\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\r\n\tbefore: function() {\r\n\t\treturn domManip( this, arguments, function( elem ) {\r\n\t\t\tif ( this.parentNode ) {\r\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\r\n\tafter: function() {\r\n\t\treturn domManip( this, arguments, function( elem ) {\r\n\t\t\tif ( this.parentNode ) {\r\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\r\n\tempty: function() {\r\n\t\tvar elem,\r\n\t\t\ti = 0;\r\n\r\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\r\n\r\n\t\t\t// Remove element nodes and prevent memory leaks\r\n\t\t\tif ( elem.nodeType === 1 ) {\r\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\r\n\t\t\t}\r\n\r\n\t\t\t// Remove any remaining nodes\r\n\t\t\twhile ( elem.firstChild ) {\r\n\t\t\t\telem.removeChild( elem.firstChild );\r\n\t\t\t}\r\n\r\n\t\t\t// If this is a select, ensure that it displays empty (#12336)\r\n\t\t\t// Support: IE<9\r\n\t\t\tif ( elem.options && jQuery.nodeName( elem, \"select\" ) ) {\r\n\t\t\t\telem.options.length = 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\r\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\r\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\r\n\r\n\t\treturn this.map( function() {\r\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\r\n\t\t} );\r\n\t},\r\n\r\n\thtml: function( value ) {\r\n\t\treturn access( this, function( value ) {\r\n\t\t\tvar elem = this[ 0 ] || {},\r\n\t\t\t\ti = 0,\r\n\t\t\t\tl = this.length;\r\n\r\n\t\t\tif ( value === undefined ) {\r\n\t\t\t\treturn elem.nodeType === 1 ?\r\n\t\t\t\t\telem.innerHTML.replace( rinlinejQuery, \"\" ) :\r\n\t\t\t\t\tundefined;\r\n\t\t\t}\r\n\r\n\t\t\t// See if we can take a shortcut and just use innerHTML\r\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\r\n\t\t\t\t( support.htmlSerialize || !rnoshimcache.test( value ) ) &&\r\n\t\t\t\t( support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&\r\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\r\n\r\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\r\n\r\n\t\t\t\ttry {\r\n\t\t\t\t\tfor ( ; i < l; i++ ) {\r\n\r\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\r\n\t\t\t\t\t\telem = this[ i ] || {};\r\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\r\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\r\n\t\t\t\t\t\t\telem.innerHTML = value;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\telem = 0;\r\n\r\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\r\n\t\t\t\t} catch ( e ) {}\r\n\t\t\t}\r\n\r\n\t\t\tif ( elem ) {\r\n\t\t\t\tthis.empty().append( value );\r\n\t\t\t}\r\n\t\t}, null, value, arguments.length );\r\n\t},\r\n\r\n\treplaceWith: function() {\r\n\t\tvar ignored = [];\r\n\r\n\t\t// Make the changes, replacing each non-ignored context element with the new content\r\n\t\treturn domManip( this, arguments, function( elem ) {\r\n\t\t\tvar parent = this.parentNode;\r\n\r\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\r\n\t\t\t\tjQuery.cleanData( getAll( this ) );\r\n\t\t\t\tif ( parent ) {\r\n\t\t\t\t\tparent.replaceChild( elem, this );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t// Force callback invocation\r\n\t\t}, ignored );\r\n\t}\r\n} );\r\n\r\njQuery.each( {\r\n\tappendTo: \"append\",\r\n\tprependTo: \"prepend\",\r\n\tinsertBefore: \"before\",\r\n\tinsertAfter: \"after\",\r\n\treplaceAll: \"replaceWith\"\r\n}, function( name, original ) {\r\n\tjQuery.fn[ name ] = function( selector ) {\r\n\t\tvar elems,\r\n\t\t\ti = 0,\r\n\t\t\tret = [],\r\n\t\t\tinsert = jQuery( selector ),\r\n\t\t\tlast = insert.length - 1;\r\n\r\n\t\tfor ( ; i <= last; i++ ) {\r\n\t\t\telems = i === last ? this : this.clone( true );\r\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\r\n\r\n\t\t\t// Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get()\r\n\t\t\tpush.apply( ret, elems.get() );\r\n\t\t}\r\n\r\n\t\treturn this.pushStack( ret );\r\n\t};\r\n} );\r\n\r\n\r\nvar iframe,\r\n\telemdisplay = {\r\n\r\n\t\t// Support: Firefox\r\n\t\t// We have to pre-define these values for FF (#10227)\r\n\t\tHTML: \"block\",\r\n\t\tBODY: \"block\"\r\n\t};\r\n\r\n/**\r\n * Retrieve the actual display of a element\r\n * @param {String} name nodeName of the element\r\n * @param {Object} doc Document object\r\n */\r\n\r\n// Called only from within defaultDisplay\r\nfunction actualDisplay( name, doc ) {\r\n\tvar elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),\r\n\r\n\t\tdisplay = jQuery.css( elem[ 0 ], \"display\" );\r\n\r\n\t// We don't have any data stored on the element,\r\n\t// so use \"detach\" method as fast way to get rid of the element\r\n\telem.detach();\r\n\r\n\treturn display;\r\n}\r\n\r\n/**\r\n * Try to determine the default display value of an element\r\n * @param {String} nodeName\r\n */\r\nfunction defaultDisplay( nodeName ) {\r\n\tvar doc = document,\r\n\t\tdisplay = elemdisplay[ nodeName ];\r\n\r\n\tif ( !display ) {\r\n\t\tdisplay = actualDisplay( nodeName, doc );\r\n\r\n\t\t// If the simple way fails, read from inside an iframe\r\n\t\tif ( display === \"none\" || !display ) {\r\n\r\n\t\t\t// Use the already-created iframe if possible\r\n\t\t\tiframe = ( iframe || jQuery( \"';\r\n break;\r\n case 3:\r\n delete config.title;\r\n delete config.closeBtn;\r\n config.icon === -1 && (config.icon === 0);\r\n layer.closeAll('loading');\r\n break;\r\n case 4:\r\n conType || (config.content = [config.content, 'body']);\r\n config.follow = config.content[1];\r\n config.content = config.content[0] + '';\r\n delete config.title;\r\n config.tips = typeof config.tips === 'object' ? config.tips : [config.tips, true];\r\n config.tipsMore || layer.closeAll('tips');\r\n break;\r\n }\r\n \r\n // 建立容器\r\n that.vessel(conType, function(html, titleHTML, moveElem){\r\n body.append(html[0]);\r\n conType ? function(){\r\n (config.type == 2 || config.type == 4) ? function(){\r\n $('body').append(html[1]);\r\n }() : function(){\r\n if(!content.parents('.'+doms[0])[0]){\r\n content.data('display', content.css('display')).show().addClass('layui-layer-wrap').wrap(html[1]);\r\n $('#'+ doms[0] + times).find('.'+doms[5]).before(titleHTML);\r\n }\r\n }();\r\n }() : body.append(html[1]);\r\n $('#'+ doms.MOVE)[0] || body.append(ready.moveElem = moveElem);\r\n \r\n that.layero = $('#'+ doms[0] + times);\r\n that.shadeo = $('#'+ doms.SHADE + times);\r\n \r\n config.scrollbar || ready.setScrollbar(times);\r\n }).auto(times);\r\n \r\n // 遮罩\r\n that.shadeo.css({\r\n 'background-color': config.shade[1] || '#000'\r\n ,'opacity': config.shade[0] || config.shade\r\n ,'transition': config.shade[2] || ''\r\n });\r\n that.shadeo.data(SHADE_KEY, config.shade[0] || config.shade);\r\n\r\n config.type == 2 && layer.ie == 6 && that.layero.find('iframe').attr('src', content[0]);\r\n\r\n // 坐标自适应浏览器窗口尺寸\r\n config.type == 4 ? that.tips() : function(){\r\n that.offset()\r\n // 首次弹出时,若 css 尚未加载,则等待 css 加载完毕后,重新设定尺寸\r\n parseInt(ready.getStyle(document.getElementById(doms.MOVE), 'z-index')) || function(){\r\n that.layero.css('visibility', 'hidden');\r\n layer.ready(function(){\r\n that.offset();\r\n that.layero.css('visibility', 'visible');\r\n });\r\n }();\r\n }();\r\n \r\n // 若是固定定位,则跟随 resize 事件来自适应坐标\r\n if(config.fixed){\r\n if(!ready.events.resize[that.index]){\r\n ready.events.resize[that.index] = function(){\r\n that.resize();\r\n };\r\n // 此处 resize 事件不会一直叠加,当关闭弹层时会移除该事件\r\n win.on('resize', ready.events.resize[that.index]);\r\n }\r\n }\r\n \r\n config.time <= 0 || setTimeout(function(){\r\n layer.close(that.index);\r\n }, config.time);\r\n that.move().callback();\r\n setAnim(that.layero);\r\n \r\n // 记录配置信息\r\n that.layero.data('config', config);\r\n};\r\n\r\n// 当前实例的 resize 事件\r\nClass.pt.resize = function(){\r\n var that = this;\r\n var config = that.config;\r\n \r\n that.offset();\r\n (/^\\d+%$/.test(config.area[0]) || /^\\d+%$/.test(config.area[1])) && that.auto(that.index);\r\n config.type == 4 && that.tips();\r\n};\r\n\r\n// 自适应\r\nClass.pt.auto = function(index){\r\n var that = this, config = that.config, layero = $('#'+ doms[0] + index);\r\n \r\n if(config.area[0] === '' && config.maxWidth > 0){\r\n // 适配 ie7\r\n if(layer.ie && layer.ie < 8 && config.btn){\r\n layero.width(layero.innerWidth());\r\n }\r\n layero.outerWidth() > config.maxWidth && layero.width(config.maxWidth);\r\n }\r\n \r\n var area = [layero.innerWidth(), layero.innerHeight()];\r\n var titHeight = layero.find(doms[1]).outerHeight() || 0;\r\n var btnHeight = layero.find('.'+doms[6]).outerHeight() || 0;\r\n var setHeight = function(elem){\r\n elem = layero.find(elem);\r\n elem.height(area[1] - titHeight - btnHeight - 2*(parseFloat(elem.css('padding-top'))|0));\r\n };\r\n\r\n switch(config.type){\r\n case 2: \r\n setHeight('iframe');\r\n break;\r\n default:\r\n if(config.area[1] === ''){\r\n if(config.maxHeight > 0 && layero.outerHeight() > config.maxHeight){\r\n area[1] = config.maxHeight;\r\n setHeight('.'+doms[5]);\r\n } else if(config.fixed && area[1] >= win.height()){\r\n area[1] = win.height();\r\n setHeight('.'+doms[5]);\r\n }\r\n } else {\r\n setHeight('.'+doms[5]);\r\n }\r\n break;\r\n }\r\n \r\n return that;\r\n};\r\n\r\n// 计算坐标\r\nClass.pt.offset = function(){\r\n var that = this, config = that.config, layero = that.layero;\r\n var area = [layero.outerWidth(), layero.outerHeight()];\r\n var type = typeof config.offset === 'object';\r\n that.offsetTop = (win.height() - area[1])/2;\r\n that.offsetLeft = (win.width() - area[0])/2;\r\n \r\n if(type){\r\n that.offsetTop = config.offset[0];\r\n that.offsetLeft = config.offset[1]||that.offsetLeft;\r\n } else if(config.offset !== 'auto'){\r\n \r\n if(config.offset === 't'){ // 上\r\n that.offsetTop = 0;\r\n } else if(config.offset === 'r'){ // 右\r\n that.offsetLeft = win.width() - area[0];\r\n } else if(config.offset === 'b'){ // 下\r\n that.offsetTop = win.height() - area[1];\r\n } else if(config.offset === 'l'){ // 左\r\n that.offsetLeft = 0;\r\n } else if(config.offset === 'lt'){ // 左上\r\n that.offsetTop = 0;\r\n that.offsetLeft = 0;\r\n } else if(config.offset === 'lb'){ // 左下\r\n that.offsetTop = win.height() - area[1];\r\n that.offsetLeft = 0;\r\n } else if(config.offset === 'rt'){ // 右上\r\n that.offsetTop = 0;\r\n that.offsetLeft = win.width() - area[0];\r\n } else if(config.offset === 'rb'){ // 右下\r\n that.offsetTop = win.height() - area[1];\r\n that.offsetLeft = win.width() - area[0];\r\n } else {\r\n that.offsetTop = config.offset;\r\n }\r\n \r\n }\r\n \r\n if(!config.fixed){\r\n that.offsetTop = /%$/.test(that.offsetTop) ? \r\n win.height()*parseFloat(that.offsetTop)/100\r\n : parseFloat(that.offsetTop);\r\n that.offsetLeft = /%$/.test(that.offsetLeft) ? \r\n win.width()*parseFloat(that.offsetLeft)/100\r\n : parseFloat(that.offsetLeft);\r\n that.offsetTop += win.scrollTop();\r\n that.offsetLeft += win.scrollLeft();\r\n }\r\n \r\n // 最小化窗口时的自适应\r\n if(layero.data('maxminStatus') === 'min'){\r\n that.offsetTop = win.height() - (layero.find(doms[1]).outerHeight() || 0);\r\n that.offsetLeft = layero.css('left');\r\n }\r\n\r\n // 设置坐标\r\n layero.css({\r\n top: that.offsetTop, \r\n left: that.offsetLeft\r\n });\r\n};\r\n\r\n// Tips\r\nClass.pt.tips = function(){\r\n var that = this, config = that.config, layero = that.layero;\r\n var layArea = [layero.outerWidth(), layero.outerHeight()], follow = $(config.follow);\r\n if(!follow[0]) follow = $('body');\r\n var goal = {\r\n width: follow.outerWidth(),\r\n height: follow.outerHeight(),\r\n top: follow.offset().top,\r\n left: follow.offset().left\r\n }, tipsG = layero.find('.layui-layer-TipsG');\r\n \r\n var guide = config.tips[0];\r\n config.tips[1] || tipsG.remove();\r\n \r\n goal.autoLeft = function(){\r\n if(goal.left + layArea[0] - win.width() > 0){\r\n goal.tipLeft = goal.left + goal.width - layArea[0];\r\n tipsG.css({right: 12, left: 'auto'});\r\n } else {\r\n goal.tipLeft = goal.left;\r\n }\r\n };\r\n \r\n // 辨别 tips 的方位\r\n // 21 为箭头大小 8*2 + 箭头相对父元素的top偏移 5\r\n goal.where = [function(){ // 上 \r\n goal.autoLeft();\r\n goal.tipTop = goal.top - layArea[1] - 10;\r\n tipsG.removeClass('layui-layer-TipsB').addClass('layui-layer-TipsT').css('border-right-color', config.tips[1]);\r\n }, function(){ // 右\r\n goal.tipLeft = goal.left + goal.width + 10;\r\n goal.tipTop = goal.top - (goal.height * 0.75 < 21 ? 21 - goal.height * 0.5 : 0);\r\n goal.tipTop = Math.max(goal.tipTop, 0);\r\n tipsG.removeClass('layui-layer-TipsL').addClass('layui-layer-TipsR').css('border-bottom-color', config.tips[1]); \r\n }, function(){ // 下\r\n goal.autoLeft();\r\n goal.tipTop = goal.top + goal.height + 10;\r\n tipsG.removeClass('layui-layer-TipsT').addClass('layui-layer-TipsB').css('border-right-color', config.tips[1]);\r\n }, function(){ // 左\r\n goal.tipLeft = goal.left - layArea[0] - 10;\r\n goal.tipTop = goal.top - (goal.height * 0.75 < 21 ? 21 - goal.height * 0.5 : 0);\r\n goal.tipTop = Math.max(goal.tipTop, 0);\r\n tipsG.removeClass('layui-layer-TipsR').addClass('layui-layer-TipsL').css('border-bottom-color', config.tips[1]);\r\n }];\r\n goal.where[guide-1]();\r\n \r\n /* 8*2为小三角形占据的空间 */\r\n if(guide === 1){\r\n goal.top - (win.scrollTop() + layArea[1] + 8*2) < 0 && goal.where[2]();\r\n } else if(guide === 2){\r\n win.width() - (goal.left + goal.width + layArea[0] + 8*2) > 0 || goal.where[3]()\r\n } else if(guide === 3){\r\n (goal.top - win.scrollTop() + goal.height + layArea[1] + 8*2) - win.height() > 0 && goal.where[0]();\r\n } else if(guide === 4){\r\n layArea[0] + 8*2 - goal.left > 0 && goal.where[1]()\r\n }\r\n\r\n layero.find('.'+doms[5]).css({\r\n 'background-color': config.tips[1], \r\n 'padding-right': (config.closeBtn ? '30px' : '')\r\n });\r\n layero.css({\r\n left: goal.tipLeft - (config.fixed ? win.scrollLeft() : 0), \r\n top: goal.tipTop - (config.fixed ? win.scrollTop() : 0)\r\n });\r\n}\r\n\r\n// 拖拽层\r\nClass.pt.move = function(){\r\n var that = this;\r\n var config = that.config;\r\n var _DOC = $(document);\r\n var layero = that.layero;\r\n var DATA_NAME = ['LAY_MOVE_DICT', 'LAY_RESIZE_DICT'];\r\n var moveElem = layero.find(config.move);\r\n var resizeElem = layero.find('.layui-layer-resize');\r\n \r\n // 给指定元素添加拖动光标\r\n if(config.move) moveElem.css('cursor', 'move');\r\n \r\n // 按下拖动元素\r\n moveElem.on('mousedown', function(e){\r\n if (e.button) {return;} // 不是左键不处理\r\n var othis = $(this);\r\n var dict = {};\r\n \r\n if(config.move){\r\n dict.layero = layero;\r\n dict.config = config;\r\n dict.offset = [\r\n e.clientX - parseFloat(layero.css('left')),\r\n e.clientY - parseFloat(layero.css('top'))\r\n ];\r\n \r\n othis.data(DATA_NAME[0], dict);\r\n ready.eventMoveElem = othis;\r\n ready.moveElem.css('cursor', 'move').show();\r\n }\r\n \r\n e.preventDefault();\r\n });\r\n \r\n // 按下右下角拉伸\r\n resizeElem.on('mousedown', function(e){\r\n var othis = $(this);\r\n var dict = {};\r\n \r\n if(config.resize){\r\n dict.layero = layero;\r\n dict.config = config;\r\n dict.offset = [e.clientX, e.clientY];\r\n dict.index = that.index;\r\n dict.area = [\r\n layero.outerWidth()\r\n ,layero.outerHeight()\r\n ];\r\n \r\n othis.data(DATA_NAME[1], dict);\r\n ready.eventResizeElem = othis;\r\n ready.moveElem.css('cursor', 'se-resize').show();\r\n }\r\n \r\n e.preventDefault();\r\n });\r\n \r\n // 拖动元素,避免多次调用实例造成事件叠加\r\n if(ready.docEvent) return that;\r\n _DOC.on('mousemove', function(e){\r\n // 拖拽移动\r\n if(ready.eventMoveElem){\r\n var dict = ready.eventMoveElem.data(DATA_NAME[0]) || {}\r\n ,layero = dict.layero\r\n ,config = dict.config;\r\n \r\n var X = e.clientX - dict.offset[0];\r\n var Y = e.clientY - dict.offset[1];\r\n var fixed = layero.css('position') === 'fixed';\r\n \r\n e.preventDefault();\r\n \r\n dict.stX = fixed ? 0 : win.scrollLeft();\r\n dict.stY = fixed ? 0 : win.scrollTop();\r\n\r\n // 控制元素不被拖出窗口外\r\n if(!config.moveOut){\r\n var setRig = win.width() - layero.outerWidth() + dict.stX;\r\n var setBot = win.height() - layero.outerHeight() + dict.stY; \r\n X < dict.stX && (X = dict.stX);\r\n X > setRig && (X = setRig); \r\n Y < dict.stY && (Y = dict.stY);\r\n Y > setBot && (Y = setBot);\r\n }\r\n \r\n // 拖动时跟随鼠标位置\r\n layero.css({\r\n left: X,\r\n top: Y\r\n });\r\n }\r\n \r\n // Resize\r\n if(ready.eventResizeElem){\r\n var dict = ready.eventResizeElem.data(DATA_NAME[1]) || {};\r\n var config = dict.config;\r\n \r\n var X = e.clientX - dict.offset[0];\r\n var Y = e.clientY - dict.offset[1];\r\n \r\n e.preventDefault();\r\n \r\n // 拉伸宽高\r\n layer.style(dict.index, {\r\n width: dict.area[0] + X\r\n ,height: dict.area[1] + Y\r\n });\r\n \r\n config.resizing && config.resizing(dict.layero);\r\n }\r\n }).on('mouseup', function(e){\r\n if(ready.eventMoveElem){\r\n var dict = ready.eventMoveElem.data(DATA_NAME[0]) || {};\r\n var config = dict.config;\r\n \r\n ready.eventMoveElem.removeData(DATA_NAME[0]);\r\n delete ready.eventMoveElem;\r\n ready.moveElem.hide();\r\n config.moveEnd && config.moveEnd(dict.layero);\r\n }\r\n if(ready.eventResizeElem){\r\n ready.eventResizeElem.removeData(DATA_NAME[1]);\r\n delete ready.eventResizeElem;\r\n ready.moveElem.hide();\r\n }\r\n });\r\n \r\n ready.docEvent = true; // 已给 document 执行全局事件\r\n return that;\r\n};\r\n\r\nClass.pt.callback = function(){\r\n var that = this, layero = that.layero, config = that.config;\r\n that.openLayer();\r\n if(config.success){\r\n if(config.type == 2){\r\n layero.find('iframe').on('load', function(){\r\n config.success(layero, that.index, that);\r\n });\r\n } else {\r\n config.success(layero, that.index, that);\r\n }\r\n }\r\n layer.ie == 6 && that.IE6(layero);\r\n \r\n // 按钮\r\n layero.find('.'+ doms[6]).children('a').on('click', function(){\r\n var index = $(this).index();\r\n if(index === 0){\r\n if(config.yes){\r\n config.yes(that.index, layero, that);\r\n } else if(config['btn1']){\r\n config['btn1'](that.index, layero, that);\r\n } else {\r\n layer.close(that.index);\r\n }\r\n } else {\r\n var close = config['btn'+(index+1)] && config['btn'+(index+1)](that.index, layero, that);\r\n close === false || layer.close(that.index);\r\n }\r\n });\r\n \r\n // 取消\r\n function cancel(){\r\n var close = config.cancel && config.cancel(that.index, layero, that);\r\n close === false || layer.close(that.index);\r\n }\r\n \r\n // 右上角关闭回调\r\n layero.find('.'+ doms[7]).on('click', cancel);\r\n \r\n // 点遮罩关闭\r\n if(config.shadeClose){\r\n that.shadeo.on('click', function(){\r\n layer.close(that.index);\r\n });\r\n } \r\n \r\n // 最小化\r\n layero.find('.layui-layer-min').on('click', function(){\r\n var min = config.min && config.min(layero, that.index, that);\r\n min === false || layer.min(that.index, config);\r\n });\r\n \r\n // 全屏/还原\r\n layero.find('.layui-layer-max').on('click', function(){\r\n if($(this).hasClass('layui-layer-maxmin')){\r\n layer.restore(that.index);\r\n config.restore && config.restore(layero, that.index, that);\r\n } else {\r\n layer.full(that.index, config);\r\n setTimeout(function(){\r\n config.full && config.full(layero, that.index, that);\r\n }, 100);\r\n }\r\n });\r\n\r\n config.end && (ready.end[that.index] = config.end);\r\n config.beforeEnd && (ready.beforeEnd[that.index] = config.beforeEnd);\r\n};\r\n\r\n// for ie6 恢复 select\r\nready.reselect = function(){\r\n $.each($('select'), function(index , value){\r\n var sthis = $(this);\r\n if(!sthis.parents('.'+doms[0])[0]){\r\n (sthis.attr('layer') == 1 && $('.'+doms[0]).length < 1) && sthis.removeAttr('layer').show(); \r\n }\r\n sthis = null;\r\n });\r\n}; \r\n\r\nClass.pt.IE6 = function(layero){\r\n // 隐藏select\r\n $('select').each(function(index , value){\r\n var sthis = $(this);\r\n if(!sthis.parents('.'+doms[0])[0]){\r\n sthis.css('display') === 'none' || sthis.attr({'layer' : '1'}).hide();\r\n }\r\n sthis = null;\r\n });\r\n};\r\n\r\n// 需依赖原型的对外方法\r\nClass.pt.openLayer = function(){\r\n var that = this;\r\n \r\n // 置顶当前窗口\r\n layer.zIndex = that.config.zIndex;\r\n layer.setTop = function(layero){\r\n var setZindex = function(){\r\n layer.zIndex++;\r\n layero.css('z-index', layer.zIndex + 1);\r\n };\r\n layer.zIndex = parseInt(layero[0].style.zIndex);\r\n layero.on('mousedown', setZindex);\r\n return layer.zIndex;\r\n };\r\n};\r\n\r\n// 记录宽高坐标,用于还原\r\nready.record = function(layero){\r\n if(!layero[0]) return window.console && console.error('index error');\r\n var type = layero.attr('type');\r\n var contentElem = layero.find('.layui-layer-content');\r\n var contentRecordHeightElem = type === ready.type[2] ? contentElem.children('iframe') : contentElem;\r\n var area = [\r\n layero[0].style.width || ready.getStyle(layero[0], 'width'),\r\n layero[0].style.height || ready.getStyle(layero[0], 'height'),\r\n layero.position().top, \r\n layero.position().left + parseFloat(layero.css('margin-left'))\r\n ];\r\n layero.find('.layui-layer-max').addClass('layui-layer-maxmin');\r\n layero.attr({area: area});\r\n contentElem.data(RECORD_HEIGHT_KEY, ready.getStyle(contentRecordHeightElem[0], 'height'));\r\n};\r\n\r\n// 设置页面滚动条\r\nready.setScrollbar = function(index){\r\n doms.html.css('overflow', 'hidden').attr('layer-full', index);\r\n};\r\n\r\n// 恢复页面滚动条\r\nready.restScrollbar = function(index){\r\n if(doms.html.attr('layer-full') == index){\r\n doms.html[0].style[doms.html[0].style.removeProperty \r\n ? 'removeProperty' \r\n : 'removeAttribute']('overflow');\r\n doms.html.removeAttr('layer-full');\r\n }\r\n};\r\n\r\n/** 内置成员 */\r\n\r\nwindow.layer = layer;\r\n\r\n// 获取子 iframe 的 DOM\r\nlayer.getChildFrame = function(selector, index){\r\n index = index || $('.'+doms[4]).attr('times');\r\n return $('#'+ doms[0] + index).find('iframe').contents().find(selector); \r\n};\r\n\r\n// 得到当前 iframe 层的索引,子 iframe 时使用\r\nlayer.getFrameIndex = function(name){\r\n return $('#'+ name).parents('.'+doms[4]).attr('times');\r\n};\r\n\r\n// iframe 层自适应宽高\r\nlayer.iframeAuto = function(index){\r\n if(!index) return;\r\n var heg = layer.getChildFrame('html', index).outerHeight();\r\n var layero = $('#'+ doms[0] + index);\r\n var titHeight = layero.find(doms[1]).outerHeight() || 0;\r\n var btnHeight = layero.find('.'+doms[6]).outerHeight() || 0;\r\n layero.css({height: heg + titHeight + btnHeight});\r\n layero.find('iframe').css({height: heg});\r\n};\r\n\r\n// 重置 iframe url\r\nlayer.iframeSrc = function(index, url){\r\n $('#'+ doms[0] + index).find('iframe').attr('src', url);\r\n};\r\n\r\n// 设定层的样式\r\nlayer.style = function(index, options, limit){\r\n var layero = $('#'+ doms[0] + index);\r\n var contentElem = layero.find('.layui-layer-content');\r\n var type = layero.attr('type');\r\n var titHeight = layero.find(doms[1]).outerHeight() || 0;\r\n var btnHeight = layero.find('.'+doms[6]).outerHeight() || 0;\r\n var minLeft = layero.attr('minLeft');\r\n \r\n // loading 和 tips 层不允许更改\r\n if(type === ready.type[3] || type === ready.type[4]){\r\n return;\r\n }\r\n \r\n if(!limit){\r\n if(parseFloat(options.width) <= 260){\r\n options.width = 260;\r\n }\r\n \r\n if(parseFloat(options.height) - titHeight - btnHeight <= 64){\r\n options.height = 64 + titHeight + btnHeight;\r\n }\r\n }\r\n layero.css(options);\r\n btnHeight = layero.find('.'+doms[6]).outerHeight() || 0;\r\n \r\n if(type === ready.type[2]){\r\n layero.find('iframe').css({\r\n height: (typeof options.height === 'number' ? options.height : layero.height()) - titHeight - btnHeight\r\n });\r\n } else {\r\n contentElem.css({\r\n height: (typeof options.height === 'number' ? options.height : layero.height()) - titHeight - btnHeight\r\n - parseFloat(contentElem.css('padding-top'))\r\n - parseFloat(contentElem.css('padding-bottom'))\r\n })\r\n }\r\n};\r\n\r\n// 最小化\r\nlayer.min = function(index, options){\r\n var layero = $('#'+ doms[0] + index);\r\n var maxminStatus = layero.data('maxminStatus');\r\n\r\n if(maxminStatus === 'min') return; // 当前的状态是否已经是最小化\r\n if(maxminStatus === 'max') layer.restore(index); // 若当前为最大化,则先还原后再最小化\r\n\r\n layero.data('maxminStatus', 'min');\r\n options = options || layero.data('config') || {};\r\n\r\n var shadeo = $('#'+ doms.SHADE + index);\r\n var elemMin = layero.find('.layui-layer-min');\r\n var titHeight = layero.find(doms[1]).outerHeight() || 0;\r\n var minLeft = layero.attr('minLeft'); // 最小化时的横坐标\r\n var hasMinLeft = typeof minLeft === 'string'; // 是否已经赋值过最小化坐标\r\n var left = hasMinLeft ? minLeft : (181*ready.minStackIndex)+'px';\r\n var position = layero.css('position');\r\n var minWidth = 180; // 最小化时的宽度\r\n var settings = {\r\n width: minWidth\r\n ,height: titHeight\r\n ,position: 'fixed'\r\n ,overflow: 'hidden'\r\n };\r\n\r\n ready.record(layero); // 记录当前尺寸、坐标,用于还原\r\n\r\n // 简易最小化补位\r\n if(ready.minStackArr.length > 0){\r\n left = ready.minStackArr[0];\r\n ready.minStackArr.shift();\r\n }\r\n\r\n // left 是否超出边界\r\n if(parseFloat(left) + minWidth > win.width()){\r\n left = win.width() - minWidth - function(){\r\n ready.minStackArr.edgeIndex = ready.minStackArr.edgeIndex || 0;\r\n return ready.minStackArr.edgeIndex += 3;\r\n }();\r\n if(left < 0) left = 0;\r\n }\r\n \r\n // 是否堆叠在左下角\r\n if(options.minStack){\r\n settings.left = left;\r\n settings.top = win.height() - titHeight;\r\n hasMinLeft || ready.minStackIndex++; // 若未赋值过最小化坐标,则最小化操作索引自增\r\n layero.attr('minLeft', left);\r\n }\r\n \r\n layero.attr('position', position);\r\n layer.style(index, settings, true);\r\n\r\n elemMin.hide();\r\n layero.attr('type') === 'page' && layero.find(doms[4]).hide();\r\n ready.restScrollbar(index);\r\n\r\n // 隐藏遮罩\r\n shadeo.hide();\r\n};\r\n\r\n// 还原\r\nlayer.restore = function(index){\r\n var layero = $('#'+ doms[0] + index);\r\n var shadeo = $('#'+ doms.SHADE + index);\r\n var contentElem = layero.find('.layui-layer-content');\r\n var area = layero.attr('area').split(',');\r\n var type = layero.attr('type');\r\n var options = layero.data('config') || {};\r\n var contentRecordHeight = contentElem.data(RECORD_HEIGHT_KEY);\r\n\r\n layero.removeData('maxminStatus'); // 移除最大最小状态\r\n \r\n // 恢复原来尺寸\r\n layer.style(index, {\r\n width: area[0], // 数值或百分比\r\n height: area[1],\r\n top: parseFloat(area[2]),\r\n left: parseFloat(area[3]),\r\n position: layero.attr('position'),\r\n overflow: 'visible'\r\n }, true);\r\n \r\n layero.find('.layui-layer-max').removeClass('layui-layer-maxmin');\r\n layero.find('.layui-layer-min').show();\r\n type === 'page' && layero.find(doms[4]).show();\r\n\r\n // 恢复页面滚动条弹层打开时的状态\r\n options.scrollbar ? ready.restScrollbar(index) : ready.setScrollbar(index);\r\n\r\n // #1604\r\n if(contentRecordHeight !== undefined){\r\n contentElem.removeData(RECORD_HEIGHT_KEY);\r\n var contentRecordHeightElem = type === ready.type[2] ? contentElem.children('iframe') : contentElem;\r\n contentRecordHeightElem.css({height: contentRecordHeight});\r\n }\r\n \r\n // 恢复遮罩\r\n shadeo.show();\r\n // ready.events.resize[index](); // ?\r\n};\r\n\r\n// 全屏(最大化)\r\nlayer.full = function(index){\r\n var layero = $('#'+ doms[0] + index);\r\n var maxminStatus = layero.data('maxminStatus');\r\n\r\n if(maxminStatus === 'max') return // 检查当前的状态是否已经是最大化\r\n if(maxminStatus === 'min') layer.restore(index); // 若当前为最小化,则先还原后再最大化\r\n\r\n layero.data('maxminStatus', 'max');\r\n ready.record(layero); // 记录当前尺寸、坐标\r\n\r\n if(!doms.html.attr('layer-full')){\r\n ready.setScrollbar(index);\r\n }\r\n\r\n setTimeout(function(){\r\n var isfix = layero.css('position') === 'fixed';\r\n layer.style(index, {\r\n top: isfix ? 0 : win.scrollTop(),\r\n left: isfix ? 0 : win.scrollLeft(),\r\n width: '100%',\r\n height: '100%'\r\n }, true);\r\n layero.find('.layui-layer-min').hide();\r\n }, 100);\r\n};\r\n\r\n// 改变 title\r\nlayer.title = function(name, index){\r\n var title = $('#'+ doms[0] + (index || layer.index)).find(doms[1]);\r\n title.html(name);\r\n};\r\n\r\n// 关闭 layer 总方法\r\nlayer.close = function(index, callback){\r\n var layero = function(){\r\n var closest = $('.'+ doms[0]).children('#'+ index).closest('.'+ doms[0]);\r\n return closest[0] ? (\r\n index = closest.attr('times'),\r\n closest\r\n ) : $('#'+ doms[0] + index)\r\n }();\r\n var type = layero.attr('type');\r\n var options = layero.data('config') || {};\r\n var hideOnClose = options.id && options.hideOnClose; // 是否关闭时移除弹层容器\r\n\r\n if(!layero[0]) return;\r\n\r\n var executor = function(){\r\n // 关闭动画\r\n var closeAnim = ({\r\n slideDown: 'layer-anim-slide-down-out',\r\n slideLeft: 'layer-anim-slide-left-out',\r\n slideUp: 'layer-anim-slide-up-out',\r\n slideRight: 'layer-anim-slide-right-out'\r\n })[options.anim] || 'layer-anim-close';\r\n \r\n // 移除主容器\r\n var remove = function(){\r\n var WRAP = 'layui-layer-wrap';\r\n \r\n // 是否关闭时隐藏弹层容器\r\n if(hideOnClose){\r\n layero.removeClass('layer-anim '+ closeAnim);\r\n return layero.hide();\r\n }\r\n \r\n // 是否为页面捕获层\r\n if(type === ready.type[1] && layero.attr('conType') === 'object'){\r\n layero.children(':not(.'+ doms[5] +')').remove();\r\n var wrap = layero.find('.'+WRAP);\r\n for(var i = 0; i < 2; i++){\r\n wrap.unwrap();\r\n }\r\n wrap.css('display', wrap.data('display')).removeClass(WRAP);\r\n } else {\r\n // 低版本 IE 回收 iframe\r\n if(type === ready.type[2]){\r\n try {\r\n var iframe = $('#'+ doms[4] + index)[0];\r\n iframe.contentWindow.document.write('');\r\n iframe.contentWindow.close();\r\n layero.find('.'+doms[5])[0].removeChild(iframe);\r\n } catch(e){}\r\n }\r\n layero[0].innerHTML = '';\r\n layero.remove();\r\n }\r\n \r\n typeof ready.end[index] === 'function' && ready.end[index]();\r\n delete ready.end[index];\r\n typeof callback === 'function' && callback();\r\n \r\n // 移除 reisze 事件\r\n if(ready.events.resize[index]){\r\n win.off('resize', ready.events.resize[index]);\r\n delete ready.events.resize[index];\r\n }\r\n };\r\n // 移除遮罩\r\n var shadeo = $('#'+ doms.SHADE + index);\r\n if((layer.ie && layer.ie < 10) || !options.isOutAnim){\r\n shadeo[hideOnClose ? 'hide' : 'remove']();\r\n }else{\r\n shadeo.css({opacity: 0});\r\n setTimeout(function(){\r\n shadeo[hideOnClose ? 'hide' : 'remove']();\r\n }, 350);\r\n }\r\n \r\n // 是否允许关闭动画\r\n if(options.isOutAnim){\r\n layero.addClass('layer-anim '+ closeAnim);\r\n }\r\n \r\n layer.ie == 6 && ready.reselect();\r\n ready.restScrollbar(index); \r\n \r\n // 记住被关闭层的最小化堆叠坐标\r\n if(typeof layero.attr('minLeft') === 'string'){\r\n ready.minStackIndex--;\r\n ready.minStackArr.push(layero.attr('minLeft'));\r\n }\r\n \r\n if((layer.ie && layer.ie < 10) || !options.isOutAnim){\r\n remove()\r\n } else {\r\n setTimeout(function(){\r\n remove();\r\n }, 200);\r\n }\r\n }\r\n\r\n if(!hideOnClose && typeof ready.beforeEnd[index] === 'function'){\r\n // 类似 Promise.resolve\r\n var promiseLikeResolve = function(value){\r\n var deferred = $.Deferred();\r\n\r\n if(value && typeof value.then === 'function'){\r\n value.then(deferred.resolve, deferred.reject);\r\n }else{\r\n deferred.resolve(value);\r\n }\r\n return deferred.promise();\r\n }\r\n\r\n promiseLikeResolve(ready.beforeEnd[index](layero, index))\r\n .then(function(result){\r\n if(result !== false){\r\n delete ready.beforeEnd[index];\r\n executor();\r\n }\r\n }, function(reason){\r\n reason !== undefined && window.console && window.console.error('layer error hint: ' + reason);\r\n });\r\n }else{\r\n delete ready.beforeEnd[index];\r\n executor();\r\n }\r\n};\r\n\r\n// 关闭所有层\r\nlayer.closeAll = function(type, callback){\r\n if(typeof type === 'function'){\r\n callback = type;\r\n type = null;\r\n }\r\n var domsElem = $('.'+doms[0]);\r\n $.each(domsElem, function(_index){\r\n var othis = $(this);\r\n var is = type ? (othis.attr('type') === type) : 1;\r\n is && layer.close(othis.attr('times'), _index === domsElem.length - 1 ? callback : null);\r\n is = null;\r\n });\r\n if(domsElem.length === 0) typeof callback === 'function' && callback();\r\n};\r\n\r\n// 根据弹层类型关闭最近打开的层\r\nlayer.closeLast = function(type, callback){\r\n var layerIndexList = [];\r\n var isArrayType = $.isArray(type);\r\n $(typeof type === 'string' ? '.layui-layer-' + type : '.layui-layer').each(function(i, el){\r\n var layero = $(el);\r\n var shouldSkip = (isArrayType && type.indexOf(layero.attr('type')) === -1) || layero.css('display') === 'none';\r\n if(shouldSkip) return true;\r\n layerIndexList.push(Number(layero.attr('times')));\r\n });\r\n if(layerIndexList.length > 0){\r\n var layerIndexMax = Math.max.apply(null, layerIndexList);\r\n layer.close(layerIndexMax, callback);\r\n }\r\n};\r\n\r\n\r\n/*\r\n * 拓展模块,layui 开始合并在一起\r\n */\r\n\r\n\r\nvar cache = layer.cache || {};\r\nvar skin = function(type){\r\n return (cache.skin ? (' ' + cache.skin + ' ' + cache.skin + '-'+type) : '');\r\n}; \r\n \r\n// 仿系统 prompt\r\nlayer.prompt = function(options, yes){\r\n var style = '', placeholder = '';\r\n options = options || {};\r\n \r\n if(typeof options === 'function') yes = options;\r\n \r\n if(options.area){\r\n var area = options.area;\r\n style = 'style=\"width: '+ area[0] +'; height: '+ area[1] + ';\"';\r\n delete options.area;\r\n }\r\n if (options.placeholder) {\r\n placeholder = ' placeholder=\"' + options.placeholder + '\"';\r\n }\r\n var prompt, content = options.formType == 2 ? '' : function () {\r\n return '';\r\n }();\r\n \r\n var success = options.success;\r\n delete options.success;\r\n \r\n return layer.open($.extend({\r\n type: 1,\r\n btn: ['确定','取消'],\r\n content: content,\r\n skin: 'layui-layer-prompt' + skin('prompt'),\r\n maxWidth: win.width(),\r\n success: function(layero){\r\n prompt = layero.find('.layui-layer-input');\r\n prompt.val(options.value || '').focus();\r\n typeof success === 'function' && success(layero);\r\n },\r\n resize: false,\r\n yes: function(index){\r\n var value = prompt.val();\r\n if(value.length > (options.maxlength||500)) {\r\n layer.tips('最多输入'+ (options.maxlength || 500) +'个字符', prompt, {tips: 1});\r\n } else {\r\n yes && yes(value, index, prompt);\r\n }\r\n }\r\n }, options));\r\n};\r\n\r\n// tab 层\r\nlayer.tab = function(options){\r\n options = options || {};\r\n \r\n var tab = options.tab || {};\r\n var THIS = 'layui-this';\r\n var success = options.success;\r\n \r\n delete options.success;\r\n \r\n return layer.open($.extend({\r\n type: 1,\r\n skin: 'layui-layer-tab' + skin('tab'),\r\n resize: false,\r\n title: function(){\r\n var len = tab.length, ii = 1, str = '';\r\n if(len > 0){\r\n str = ''+ tab[0].title +'';\r\n for(; ii < len; ii++){\r\n str += ''+ tab[ii].title +'';\r\n }\r\n }\r\n return str;\r\n }(),\r\n content: '
                      '+ function(){\r\n var len = tab.length, ii = 1, str = '';\r\n if(len > 0){\r\n str = '
                    • '+ (tab[0].content || 'no content') +'
                    • ';\r\n for(; ii < len; ii++){\r\n str += '
                    • '+ (tab[ii].content || 'no content') +'
                    • ';\r\n }\r\n }\r\n return str;\r\n }() +'
                    ',\r\n success: function(layero){\r\n var btn = layero.find('.layui-layer-title').children();\r\n var main = layero.find('.layui-layer-tabmain').children();\r\n btn.on('mousedown', function(e){\r\n e.stopPropagation ? e.stopPropagation() : e.cancelBubble = true;\r\n var othis = $(this), index = othis.index();\r\n othis.addClass(THIS).siblings().removeClass(THIS);\r\n main.eq(index).show().siblings().hide();\r\n typeof options.change === 'function' && options.change(index);\r\n });\r\n typeof success === 'function' && success(layero);\r\n }\r\n }, options));\r\n};\r\n\r\n// 图片层\r\nlayer.photos = function(options, loop, key){\r\n var dict = {};\r\n\r\n // 默认属性\r\n options = $.extend(true, {\r\n toolbar: true,\r\n footer: true\r\n }, options);\r\n\r\n if(!options.photos) return;\r\n \r\n // 若 photos 并非选择器或 jQuery 对象,则为普通 object\r\n var isObject = !(typeof options.photos === 'string' || options.photos instanceof $);\r\n var photos = isObject ? options.photos : {};\r\n var data = photos.data || [];\r\n var start = photos.start || 0;\r\n var success = options.success;\r\n \r\n dict.imgIndex = (start|0) + 1;\r\n options.img = options.img || 'img';\r\n delete options.success;\r\n \r\n // 若 options.photos 不是一个对象\r\n if(!isObject){ // 页面直接获取\r\n var parent = $(options.photos), pushData = function(){\r\n data = [];\r\n parent.find(options.img).each(function(index){\r\n var othis = $(this);\r\n othis.attr('layer-index', index);\r\n data.push({\r\n alt: othis.attr('alt'),\r\n pid: othis.attr('layer-pid'),\r\n src: othis.attr('lay-src') || othis.attr('layer-src') || othis.attr('src'),\r\n thumb: othis.attr('src')\r\n });\r\n });\r\n };\r\n \r\n pushData();\r\n \r\n if (data.length === 0) return;\r\n \r\n loop || parent.on('click', options.img, function(){\r\n pushData();\r\n var othis = $(this), index = othis.attr('layer-index'); \r\n layer.photos($.extend(options, {\r\n photos: {\r\n start: index,\r\n data: data,\r\n tab: options.tab\r\n },\r\n full: options.full\r\n }), true);\r\n });\r\n \r\n // 不直接弹出\r\n if (!loop) return;\r\n } else if (data.length === 0){\r\n return layer.msg('没有图片');\r\n }\r\n \r\n // 上一张\r\n dict.imgprev = function(key){\r\n dict.imgIndex--;\r\n if(dict.imgIndex < 1){\r\n dict.imgIndex = data.length;\r\n }\r\n dict.tabimg(key);\r\n };\r\n \r\n // 下一张\r\n dict.imgnext = function(key,errorMsg){\r\n dict.imgIndex++;\r\n if(dict.imgIndex > data.length){\r\n dict.imgIndex = 1;\r\n if (errorMsg) {return}\r\n }\r\n dict.tabimg(key)\r\n };\r\n \r\n // 方向键\r\n dict.keyup = function(event){\r\n if(!dict.end){\r\n var code = event.keyCode;\r\n event.preventDefault();\r\n if(code === 37){\r\n dict.imgprev(true);\r\n } else if(code === 39) {\r\n dict.imgnext(true);\r\n } else if(code === 27) {\r\n layer.close(dict.index);\r\n }\r\n }\r\n }\r\n \r\n // 切换\r\n dict.tabimg = function(key){\r\n if(data.length <= 1) return;\r\n photos.start = dict.imgIndex - 1;\r\n layer.close(dict.index);\r\n return layer.photos(options, true, key);\r\n }\r\n\r\n dict.isNumber = function (n) {\r\n return typeof n === 'number' && !isNaN(n);\r\n }\r\n\r\n dict.image = {};\r\n\r\n dict.getTransform = function(opts){\r\n var transforms = [];\r\n var rotate = opts.rotate;\r\n var scaleX = opts.scaleX;\r\n var scale = opts.scale;\r\n\r\n if (dict.isNumber(rotate) && rotate !== 0) {\r\n transforms.push('rotate(' + rotate + 'deg)');\r\n }\r\n\r\n if (dict.isNumber(scaleX) && scaleX !== 1) {\r\n transforms.push('scaleX(' + scaleX + ')');\r\n }\r\n\r\n if (dict.isNumber(scale)) {\r\n transforms.push('scale(' + scale + ')');\r\n }\r\n\r\n return transforms.length ? transforms.join(' ') : 'none';\r\n }\r\n \r\n // 一些动作\r\n dict.event = function(layero, index, that){\r\n // 上一张\r\n dict.main.find('.layui-layer-photos-prev').on('click', function(event){\r\n event.preventDefault();\r\n dict.imgprev(true);\r\n }); \r\n \r\n // 下一张\r\n dict.main.find('.layui-layer-photos-next').on('click', function(event){\r\n event.preventDefault();\r\n dict.imgnext(true);\r\n });\r\n \r\n $(document).on('keyup', dict.keyup);\r\n\r\n // 头部工具栏事件\r\n layero.off('click').on('click','*[toolbar-event]', function () {\r\n var othis = $(this);\r\n var event = othis.attr('toolbar-event');\r\n switch (event) {\r\n case 'rotate':\r\n dict.image.rotate = ((dict.image.rotate || 0) + Number(othis.attr('data-option'))) % 360;\r\n dict.imgElem.css({\r\n transform: dict.getTransform(dict.image)\r\n });\r\n break;\r\n case 'scalex':\r\n dict.image.scaleX = dict.image.scaleX === -1 ? 1 : -1;\r\n dict.imgElem.css({\r\n transform: dict.getTransform(dict.image)\r\n });\r\n break;\r\n case 'zoom':\r\n var ratio = Number(othis.attr('data-option'));\r\n dict.image.scale = (dict.image.scale || 1) + ratio;\r\n // 缩小状态最小值\r\n if (ratio < 0 && dict.image.scale < 0 - ratio) {\r\n dict.image.scale = 0 - ratio;\r\n }\r\n dict.imgElem.css({\r\n transform: dict.getTransform(dict.image)\r\n });\r\n break;\r\n case 'reset':\r\n dict.image.scaleX = 1;\r\n dict.image.scale = 1;\r\n dict.image.rotate = 0;\r\n dict.imgElem.css({\r\n transform: 'none'\r\n });\r\n break;\r\n case 'close':\r\n layer.close(index);\r\n break;\r\n }\r\n that.offset();\r\n that.auto(index);\r\n });\r\n \r\n // 鼠标滚轮缩放图片事件\r\n dict.main.on('mousewheel DOMMouseScroll', function(e) {\r\n var delta = e.originalEvent.wheelDelta || -e.originalEvent.detail;\r\n var zoomElem = dict.main.find('[toolbar-event=\"zoom\"]');\r\n if (delta > 0) {\r\n zoomElem.eq(0).trigger('click');\r\n } else {\r\n zoomElem.eq(1).trigger('click');\r\n }\r\n e.preventDefault();\r\n });\r\n\r\n // 滑动切换图片事件,仅限 layui 中 \r\n if(window.layui || window.lay){\r\n var lay = window.layui.lay || window.lay;\r\n var touchEndCallback = function(e, state){\r\n var duration = Date.now() - state.timeStart;\r\n var speed = state.distanceX / duration;\r\n var threshold = win.width() / 3;\r\n var shouldSwipe = Math.abs(speed) > 0.25 || Math.abs(state.distanceX) > threshold;\r\n if(!shouldSwipe) return;\r\n if(state.direction === 'left'){\r\n dict.imgnext(true);\r\n }else if(state.direction === 'right'){\r\n dict.imgprev(true);\r\n }\r\n }\r\n\r\n $.each([that.shadeo, dict.main], function(i, elem){\r\n lay.touchSwipe(elem, {\r\n onTouchEnd: touchEndCallback\r\n })\r\n })\r\n }\r\n };\r\n \r\n // 图片预加载\r\n function loadImage(url, callback, error) { \r\n var img = new Image();\r\n img.src = url; \r\n if(img.complete){\r\n return callback(img);\r\n }\r\n img.onload = function(){\r\n img.onload = null;\r\n callback(img);\r\n };\r\n img.onerror = function(e){\r\n img.onerror = null;\r\n error(e);\r\n }; \r\n }\r\n \r\n dict.loadi = layer.load(1, {\r\n shade: 'shade' in options ? false : [0.9, undefined, 'unset'],\r\n scrollbar: false\r\n });\r\n\r\n loadImage(data[start].src, function(img){\r\n layer.close(dict.loadi);\r\n \r\n var alt = data[start].alt || '';\r\n\r\n // 切换图片时不出现动画\r\n if(key) options.anim = -1;\r\n \r\n // 弹出图片层\r\n dict.index = layer.open($.extend({\r\n type: 1,\r\n id: 'layui-layer-photos',\r\n area: function(){\r\n var imgarea = [img.width, img.height];\r\n var winarea = [$(window).width() - 100, $(window).height() - 100];\r\n \r\n // 若实际图片的宽或者高比 屏幕大(那么进行缩放)\r\n if(!options.full && (imgarea[0]>winarea[0]||imgarea[1]>winarea[1])){\r\n var wh = [imgarea[0]/winarea[0],imgarea[1]/winarea[1]];// 取宽度缩放比例、高度缩放比例\r\n if(wh[0] > wh[1]){// 取缩放比例最大的进行缩放\r\n imgarea[0] = imgarea[0]/wh[0];\r\n imgarea[1] = imgarea[1]/wh[0];\r\n } else if(wh[0] < wh[1]){\r\n imgarea[0] = imgarea[0]/wh[1];\r\n imgarea[1] = imgarea[1]/wh[1];\r\n }\r\n }\r\n\r\n return [imgarea[0]+'px', imgarea[1]+'px']; \r\n }(),\r\n title: false,\r\n shade: [0.9, undefined, 'unset'],\r\n shadeClose: true,\r\n closeBtn: false,\r\n move: '.layer-layer-photos-main img',\r\n moveType: 1,\r\n scrollbar: false,\r\n moveOut: true,\r\n anim: 5,\r\n isOutAnim: false,\r\n skin: 'layui-layer-photos' + skin('photos'),\r\n content: '
                    '\r\n + '\"'+'\r\n + function(){\r\n var arr = ['
                    '];\r\n\r\n // 左右箭头翻页\r\n if (data.length > 1) {\r\n arr.push(['
                    ',\r\n '',\r\n '',\r\n '
                    '].join(''));\r\n }\r\n\r\n // 头部工具栏\r\n if (options.toolbar) {\r\n arr.push([\r\n '
                    ',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n '
                    '\r\n ].join(''));\r\n }\r\n\r\n // 底部栏\r\n if (options.footer) {\r\n arr.push(['
                    ',\r\n '

                    '+ alt +'

                    ',\r\n ''+ dict.imgIndex +' / '+ data.length +'',\r\n '查看原图',\r\n '
                    '].join(''));\r\n }\r\n\r\n arr.push('
                    ');\r\n return arr.join('');\r\n }()\r\n +'
                    ',\r\n success: function(layero, index, that){\r\n dict.main = layero.find('.layer-layer-photos-main');\r\n dict.footer = layero.find('.layui-layer-photos-footer');\r\n dict.imgElem = dict.main.children('img');\r\n dict.event(layero, index, that);\r\n options.tab && options.tab(data[start], layero);\r\n typeof success === 'function' && success(layero);\r\n }, end: function(){\r\n dict.end = true;\r\n $(document).off('keyup', dict.keyup);\r\n }\r\n }, options));\r\n }, function(){\r\n layer.close(dict.loadi);\r\n layer.msg('当前图片地址异常,
                    是否继续查看下一张?', {\r\n time: 30000, \r\n btn: ['下一张', '不看了'], \r\n yes: function(){\r\n data.length > 1 && dict.imgnext(true,true);\r\n }\r\n });\r\n });\r\n};\r\n\r\n// 主入口\r\nready.run = function(_$){\r\n $ = _$;\r\n win = $(window);\r\n \r\n // 移动端兼容性处理\r\n // https://gitee.com/layui/layui/issues/I81WGC\r\n // https://github.com/jquery/jquery/issues/1729\r\n var agent = navigator.userAgent.toLowerCase();\r\n var isMobile = /android|iphone|ipod|ipad|ios/.test(agent)\r\n var _win = $(window);\r\n if(isMobile){\r\n $.each({Height: \"height\", Width: \"width\"}, function(propSuffix, funcName){\r\n var propName = 'inner' + propSuffix;\r\n win[funcName] = function(){\r\n return propName in window \r\n ? window[propName]\r\n : _win[funcName]()\r\n }\r\n })\r\n }\r\n doms.html = $('html');\r\n layer.open = function(deliver){\r\n var o = new Class(deliver);\r\n return o.index;\r\n };\r\n};\r\n\r\n// 加载方式\r\nwindow.layui && layui.define ? (\r\n layer.ready(),\r\n layui.define(['jquery','lay'], function(exports){ // layui\r\n layer.path = layui.cache.dir;\r\n ready.run(layui.$);\r\n\r\n // export api\r\n window.layer = layer;\r\n exports('layer', layer);\r\n })\r\n) : (\r\n (typeof define === 'function' && define.amd) ? define(['jquery'], function(){ // requirejs\r\n ready.run(window.jQuery);\r\n return layer;\r\n }) : function(){ // 普通 script 标签引入\r\n layer.ready();\r\n ready.run(window.jQuery);\r\n }()\r\n);\r\n\r\n}(window);\r\n","/**\r\n * util 工具组件\r\n */\r\n\r\nlayui.define('jquery', function(exports){\r\n \"use strict\";\r\n\r\n var $ = layui.$;\r\n var hint = layui.hint();\r\n\r\n // 外部接口\r\n var util = {\r\n // 固定块\r\n fixbar: function(options){\r\n var ELEM = 'layui-fixbar';\r\n var $doc = $(document);\r\n\r\n // 默认可选项\r\n options = $.extend(true, {\r\n target: 'body', // fixbar 的插入目标选择器\r\n bars: [], // bar 信息\r\n \"default\": true, // 是否显示默认 bar\r\n margin: 160, // 出现 top bar 的滚动条高度临界值\r\n duration: 320 // top bar 等动画时长(毫秒)\r\n }, options);\r\n\r\n // 目标元素对象\r\n var $target = $(options.target);\r\n\r\n // 滚动条所在元素对象\r\n var $scroll = options.scroll\r\n ? $(options.scroll)\r\n : $(options.target === 'body' ? $doc : $target)\r\n\r\n // 是否提供默认图标\r\n if(options['default']){\r\n // 兼容旧版本的一些属性\r\n if(options.bar1){\r\n options.bars.push({\r\n type: 'bar1',\r\n icon: 'layui-icon-chat'\r\n });\r\n }\r\n if(options.bar2){\r\n options.bars.push({\r\n type: 'bar2',\r\n icon: 'layui-icon-help'\r\n });\r\n }\r\n // 默认 top bar\r\n options.bars.push({\r\n type: 'top',\r\n icon: 'layui-icon-top'\r\n });\r\n }\r\n\r\n var elem = $('
                      ').addClass(ELEM);\r\n var elemTopBar;\r\n\r\n // 遍历生成 bars 节点\r\n layui.each(options.bars, function(i, item){\r\n var elemBar = $('
                    • ');\r\n\r\n // 设置 bar 相关属性\r\n elemBar.addClass(item.icon).attr({\r\n 'lay-type': item.type,\r\n 'style': item.style || (options.bgcolor ? 'background-color: '+ options.bgcolor : '')\r\n }).html(item.content);\r\n\r\n // bar 点击事件\r\n elemBar.on('click', function(){\r\n var type = $(this).attr('lay-type');\r\n if(type === 'top'){\r\n (\r\n options.target === 'body'\r\n ? $('html,body')\r\n : $scroll\r\n ).animate({\r\n scrollTop : 0\r\n }, options.duration);\r\n }\r\n typeof options.click === 'function' && options.click.call(this, type);\r\n });\r\n\r\n // 自定义任意事件\r\n if(layui.type(options.on) === 'object'){\r\n layui.each(options.on, function(eventName, callback){\r\n elemBar.on(eventName, function(){\r\n var type = $(this).attr('lay-type');\r\n typeof callback === 'function' && callback.call(this, type);\r\n });\r\n })\r\n }\r\n\r\n // 获得 top bar 节点\r\n if(item.type === 'top'){\r\n elemBar.addClass('layui-fixbar-top');\r\n elemTopBar = elemBar;\r\n }\r\n\r\n elem.append(elemBar); // 插入 bar 节点\r\n });\r\n\r\n // 若目标元素已存在 fixbar,则移除旧的节点\r\n $target.find('.'+ ELEM).remove();\r\n\r\n // 向目标元素插入 fixbar 节点\r\n typeof options.css === 'object' && elem.css(options.css);\r\n $target.append(elem);\r\n\r\n // top bar 的显示隐藏\r\n if(elemTopBar){\r\n var lock;\r\n var setTopBar = (function setTopBar(){\r\n var top = $scroll.scrollTop();\r\n if(top >= options.margin){\r\n lock || (elemTopBar.show(), lock = 1);\r\n } else {\r\n lock && (elemTopBar.hide(), lock = 0);\r\n }\r\n return setTopBar;\r\n })();\r\n }\r\n\r\n // 根据 scrollbar 设置 fixbar 相关状态\r\n var timer;\r\n $scroll.on('scroll', function(){\r\n if(!setTopBar) return;\r\n clearTimeout(timer);\r\n timer = setTimeout(function(){\r\n setTopBar();\r\n }, 100);\r\n });\r\n },\r\n\r\n // 倒计时\r\n countdown: function(options){\r\n var that = this;\r\n\r\n // 默认可选项\r\n options = $.extend(true, {\r\n date: new Date(),\r\n now: new Date()\r\n }, options);\r\n\r\n // 兼容旧版参数\r\n var args = arguments;\r\n if(args.length > 1){\r\n options.date = new Date(args[0]);\r\n options.now = new Date(args[1]);\r\n options.clock = args[2];\r\n }\r\n\r\n // 实例对象\r\n var inst = {\r\n options: options,\r\n clear: function(){ // 清除计时器\r\n clearTimeout(inst.timer);\r\n },\r\n reload: function(opts){ // 重置倒计时\r\n this.clear();\r\n $.extend(true, this.options, {\r\n now: new Date()\r\n }, opts);\r\n count();\r\n }\r\n };\r\n\r\n typeof options.ready === 'function' && options.ready();\r\n\r\n // 计算倒计时\r\n var count = (function fn(){\r\n var date = new Date(options.date);\r\n var now = new Date(options.now);\r\n var countTime = function(time){\r\n return time > 0 ? time : 0;\r\n }(date.getTime() - now.getTime());\r\n var result = {\r\n d: Math.floor(countTime/(1000*60*60*24)), // 天\r\n h: Math.floor(countTime/(1000*60*60)) % 24, // 时\r\n m: Math.floor(countTime/(1000*60)) % 60, // 分\r\n s: Math.floor(countTime/1000) % 60 // 秒\r\n };\r\n var next = function(){\r\n now.setTime(now.getTime() + 1000);\r\n options.now = now;\r\n count();\r\n };\r\n\r\n // 兼容旧版返回值\r\n if(args.length > 1) result = [result.d,result.h,result.m,result.s]\r\n\r\n // 计时 - 以秒间隔\r\n inst.timer = setTimeout(next, 1000);\r\n typeof options.clock === 'function' && options.clock(result, inst);\r\n\r\n // 计时完成\r\n if(countTime <= 0){\r\n clearTimeout(inst.timer);\r\n typeof options.done === 'function' && options.done(result, inst);\r\n }\r\n\r\n return fn;\r\n })();\r\n\r\n return inst;\r\n },\r\n\r\n // 某个时间在当前时间的多久前\r\n timeAgo: function(time, onlyDate){\r\n var that = this;\r\n var arr = [[], []];\r\n var stamp = new Date().getTime() - new Date(time).getTime();\r\n\r\n // 返回具体日期\r\n if(stamp > 1000*60*60*24*31){\r\n stamp = new Date(time);\r\n arr[0][0] = that.digit(stamp.getFullYear(), 4);\r\n arr[0][1] = that.digit(stamp.getMonth() + 1);\r\n arr[0][2] = that.digit(stamp.getDate());\r\n\r\n // 是否输出时间\r\n if(!onlyDate){\r\n arr[1][0] = that.digit(stamp.getHours());\r\n arr[1][1] = that.digit(stamp.getMinutes());\r\n arr[1][2] = that.digit(stamp.getSeconds());\r\n }\r\n return arr[0].join('-') + ' ' + arr[1].join(':');\r\n }\r\n\r\n // 30 天以内,返回「多久前」\r\n if(stamp >= 1000*60*60*24){\r\n return ((stamp/1000/60/60/24)|0) + ' 天前';\r\n } else if(stamp >= 1000*60*60){\r\n return ((stamp/1000/60/60)|0) + ' 小时前';\r\n } else if(stamp >= 1000*60*3){ // 3 分钟以内为:刚刚\r\n return ((stamp/1000/60)|0) + ' 分钟前';\r\n } else if(stamp < 0){\r\n return '未来';\r\n } else {\r\n return '刚刚';\r\n }\r\n },\r\n\r\n // 数字前置补零\r\n digit: function(num, length){\r\n var str = '';\r\n num = String(num);\r\n length = length || 2;\r\n for(var i = num.length; i < length; i++){\r\n str += '0';\r\n }\r\n return num < Math.pow(10, length) ? str + (num|0) : num;\r\n },\r\n\r\n // 转化为日期格式字符\r\n toDateString: function(time, format, options){\r\n // 若 null 或空字符,则返回空字符\r\n if(time === null || time === '') return '';\r\n\r\n // 引用自 dayjs\r\n // https://github.com/iamkun/dayjs/blob/v1.11.9/src/constant.js#L30\r\n var REGEX_FORMAT = /\\[([^\\]]+)]|y{1,4}|M{1,2}|d{1,2}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|SSS/g;\r\n var that = this;\r\n var date = new Date(function(){\r\n if(!time) return;\r\n return isNaN(time) ? time : (typeof time === 'string' ? parseInt(time) : time)\r\n }() || new Date())\r\n\r\n if(!date.getDate()) return hint.error('Invalid millisecond for \"util.toDateString(millisecond)\"'), '';\r\n\r\n var years = date.getFullYear();\r\n var month = date.getMonth();\r\n var days = date.getDate();\r\n var hours = date.getHours();\r\n var minutes = date.getMinutes();\r\n var seconds = date.getSeconds();\r\n var milliseconds = date.getMilliseconds();\r\n\r\n var defaultMeridiem = function(hours, minutes){\r\n var hm = hours * 100 + minutes;\r\n if (hm < 600) {\r\n return '凌晨';\r\n } else if (hm < 900) {\r\n return '早上';\r\n } else if (hm < 1100) {\r\n return '上午';\r\n } else if (hm < 1300) {\r\n return '中午';\r\n } else if (hm < 1800) {\r\n return '下午';\r\n }\r\n return '晚上';\r\n };\r\n\r\n var meridiem = (options && options.customMeridiem) || defaultMeridiem;\r\n\r\n var matches = {\r\n yy: function(){return String(years).slice(-2);},\r\n yyyy: function(){return that.digit(years, 4);},\r\n M: function(){return String(month + 1);},\r\n MM: function(){return that.digit(month + 1);},\r\n d: function(){return String(days);},\r\n dd: function(){return that.digit(days);},\r\n H: function(){return String(hours);},\r\n HH: function(){return that.digit(hours);},\r\n h: function(){return String(hours % 12 || 12);},\r\n hh: function(){return that.digit(hours % 12 || 12);},\r\n A: function(){return meridiem(hours, minutes);},\r\n m: function(){return String(minutes);},\r\n mm: function(){return that.digit(minutes);},\r\n s: function(){return String(seconds);},\r\n ss: function(){return that.digit(seconds);},\r\n SSS: function(){return that.digit(milliseconds, 3);}\r\n }\r\n\r\n format = format || 'yyyy-MM-dd HH:mm:ss';\r\n\r\n return format.replace(REGEX_FORMAT, function(match, $1) {\r\n return $1 || (matches[match] && matches[match]()) || match;\r\n });\r\n },\r\n\r\n // 转义 html\r\n escape: function(html){\r\n var exp = /[<\"'>]|&(?=#[a-zA-Z0-9]+)/g;\r\n if(html === undefined || html === null) return '';\r\n\r\n html += '';\r\n if(!exp.test(html)) return html;\r\n\r\n return html.replace(/&(?!#?[a-zA-Z0-9]+;)/g, '&')\r\n .replace(//g, '>')\r\n .replace(/'/g, ''').replace(/\"/g, '"');\r\n },\r\n\r\n // 还原转义的 html\r\n unescape: function(html){\r\n if(html === undefined || html === null) html = '';\r\n html += '';\r\n\r\n return html.replace(/\\&/g, '&')\r\n .replace(/\\</g, '<').replace(/\\>/g, '>')\r\n .replace(/\\'/g, '\\'').replace(/\\"/g, '\"');\r\n },\r\n\r\n // 打开新窗口\r\n openWin: function(options){\r\n var win;\r\n options = options || {};\r\n win = options.window || window.open((options.url || ''), options.target, options.specs);\r\n if(options.url) return;\r\n win.document.open('text/html', 'replace');\r\n win.document.write(options.content || '');\r\n win.document.close();\r\n },\r\n\r\n // 让指定的元素保持在可视区域\r\n toVisibleArea: function(options){\r\n options = $.extend({\r\n margin: 160, // 触发动作的边界值\r\n duration: 200, // 动画持续毫秒数\r\n type: 'y' // 触发方向,x 水平、y 垂直\r\n }, options);\r\n\r\n if(!options.scrollElem[0] || !options.thisElem[0]) return;\r\n\r\n var scrollElem = options.scrollElem // 滚动元素\r\n var thisElem = options.thisElem // 目标元素\r\n var vertical = options.type === 'y' // 是否垂直方向\r\n var SCROLL_NAME = vertical ? 'scrollTop' : 'scrollLeft' // 滚动方法\r\n var OFFSET_NAME = vertical ? 'top' : 'left' // 坐标方式\r\n var scrollValue = scrollElem[SCROLL_NAME]() // 当前滚动距离\r\n var size = scrollElem[vertical ? 'height' : 'width']() // 滚动元素的尺寸\r\n var scrollOffset = scrollElem.offset()[OFFSET_NAME] // 滚动元素所处位置\r\n var thisOffset = thisElem.offset()[OFFSET_NAME] - scrollOffset // 目标元素当前的所在位置\r\n var obj = {};\r\n\r\n // 边界满足条件\r\n if(thisOffset > size - options.margin || thisOffset < options.margin){\r\n obj[SCROLL_NAME] = thisOffset - size/2 + scrollValue\r\n scrollElem.animate(obj, options.duration);\r\n }\r\n },\r\n\r\n /**\r\n * 批量事件\r\n * @param {string} [attr=\"lay-on\"] - 触发事件的元素属性名\r\n * @param {Object.} events - 事件集合\r\n * @param {Object} [options] - 参数的更多选项\r\n * @param {(string|HTMLElement|JQuery)} [options.elem=\"body\"] - 触发事件的委托元素\r\n * @param {string} [options.trigger=\"click\"] - 事件触发的方式\r\n * @returns {Object} 返回当前 events 参数设置的事件集合\r\n */\r\n on: function(attr, events, options) {\r\n // 若参数一为 object 类型,则为事件集,且省略 attr\r\n if (typeof attr === 'object') {\r\n options = events || {};\r\n events = attr;\r\n attr = options.attr || 'lay-on'; // 默认属性名\r\n }\r\n\r\n // 更多选项\r\n options = $.extend({\r\n elem: 'body',\r\n trigger: 'click'\r\n }, typeof options === 'object' ? options : {\r\n trigger: options // 兼容旧版\r\n });\r\n\r\n var elem = options.elem = $(options.elem);\r\n var attrSelector = '['+ attr +']';\r\n var DATANAME = 'UTIL_ON_DATA'; // 缓存在委托元素上的 data-* 属性名\r\n\r\n if (!elem[0]) return; // 若委托元素不存在\r\n\r\n // 初始化 data 默认值,以委托元素为存储单元\r\n if (!elem.data(DATANAME)) {\r\n elem.data(DATANAME, {\r\n events: {},\r\n callbacks: {}\r\n });\r\n }\r\n\r\n // 读取 data 缓存\r\n var dataCache = elem.data(DATANAME);\r\n var callbacks = dataCache.callbacks;\r\n\r\n // 根据 attr 记录事件集合\r\n events = dataCache.events[attr] = $.extend(true, dataCache.events[attr], events);\r\n\r\n // 清除事件委托,避免重复绑定\r\n elem.off(options.trigger, attrSelector, callbacks[attr]);\r\n\r\n // 绑定事件委托\r\n elem.on(\r\n options.trigger,\r\n attrSelector,\r\n callbacks[attr] = function(e) {\r\n var othis = $(this);\r\n var key = othis.attr(attr);\r\n typeof events[key] === 'function' && events[key].call(this, othis, e);\r\n }\r\n );\r\n\r\n return events;\r\n }\r\n };\r\n\r\n // 兼容旧版\r\n util.event = util.on;\r\n\r\n // 输出接口\r\n exports('util', util);\r\n});\r\n","/**\r\n * dropdown \r\n * 下拉菜单组件\r\n */\r\n\r\nlayui.define(['jquery', 'laytpl', 'lay', 'util'], function(exports){\r\n \"use strict\";\r\n \r\n var $ = layui.$;\r\n var laytpl = layui.laytpl;\r\n var util = layui.util;\r\n var hint = layui.hint();\r\n var device = layui.device();\r\n var clickOrMousedown = (device.mobile ? 'touchstart' : 'mousedown');\r\n \r\n // 模块名\r\n var MOD_NAME = 'dropdown';\r\n var MOD_INDEX = 'layui_'+ MOD_NAME +'_index'; // 模块索引名\r\n var MOD_ID = 'lay-' + MOD_NAME + '-id';\r\n\r\n // 外部接口\r\n var dropdown = {\r\n config: {\r\n customName: { // 自定义 data 字段名\r\n id: 'id',\r\n title: 'title',\r\n children: 'child'\r\n }\r\n },\r\n index: layui[MOD_NAME] ? (layui[MOD_NAME].index + 10000) : 0,\r\n\r\n // 设置全局项\r\n set: function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n },\r\n \r\n // 事件\r\n on: function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n }\r\n };\r\n\r\n // 操作当前实例\r\n var thisModule = function(){\r\n var that = this;\r\n var options = that.config;\r\n var id = options.id;\r\n\r\n thisModule.that[id] = that; // 记录当前实例对象\r\n\r\n return {\r\n config: options,\r\n // 重置实例\r\n reload: function(options){\r\n that.reload.call(that, options);\r\n },\r\n reloadData: function(options){\r\n dropdown.reloadData(id, options);\r\n },\r\n close: function () {\r\n that.remove()\r\n },\r\n open: function () {\r\n that.render()\r\n }\r\n }\r\n };\r\n\r\n // 字符常量\r\n var STR_ELEM = 'layui-dropdown';\r\n var STR_HIDE = 'layui-hide';\r\n var STR_DISABLED = 'layui-disabled';\r\n var STR_NONE = 'layui-none';\r\n var STR_ITEM_UP = 'layui-menu-item-up';\r\n var STR_ITEM_DOWN = 'layui-menu-item-down';\r\n var STR_MENU_TITLE = 'layui-menu-body-title';\r\n var STR_ITEM_GROUP = 'layui-menu-item-group';\r\n var STR_ITEM_PARENT = 'layui-menu-item-parent';\r\n var STR_ITEM_DIV = 'layui-menu-item-divider';\r\n var STR_ITEM_CHECKED = 'layui-menu-item-checked';\r\n var STR_ITEM_CHECKED2 = 'layui-menu-item-checked2';\r\n var STR_MENU_PANEL = 'layui-menu-body-panel';\r\n var STR_MENU_PANEL_L = 'layui-menu-body-panel-left';\r\n var STR_ELEM_SHADE = 'layui-dropdown-shade';\r\n \r\n var STR_GROUP_TITLE = '.'+ STR_ITEM_GROUP + '>.'+ STR_MENU_TITLE;\r\n\r\n // 构造器\r\n var Class = function(options){\r\n var that = this;\r\n that.index = ++dropdown.index;\r\n that.config = $.extend({}, that.config, dropdown.config, options);\r\n that.init();\r\n };\r\n\r\n // 默认配置\r\n Class.prototype.config = {\r\n trigger: 'click', // 事件类型\r\n content: '', // 自定义菜单内容\r\n className: '', // 自定义样式类名\r\n style: '', // 设置面板 style 属性\r\n show: false, // 是否初始即显示菜单面板\r\n isAllowSpread: true, // 是否允许菜单组展开收缩\r\n isSpreadItem: true, // 是否初始展开子菜单\r\n data: [], // 菜单数据结构\r\n delay: [200, 300], // 延时显示或隐藏的毫秒数,若为 number 类型,则表示显示和隐藏的延迟时间相同,trigger 为 hover 时才生效\r\n shade: 0, // 遮罩\r\n accordion: false // 手风琴效果,仅菜单组生效。基础菜单需要在容器上追加 'lay-accordion' 属性。\r\n };\r\n \r\n // 重载实例\r\n Class.prototype.reload = function(options, type){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n that.init(true, type);\r\n };\r\n\r\n // 初始化准备\r\n Class.prototype.init = function(rerender, type){\r\n var that = this;\r\n var options = that.config;\r\n \r\n // 若 elem 非唯一\r\n var elem = $(options.elem);\r\n if(elem.length > 1){\r\n layui.each(elem, function(){\r\n dropdown.render($.extend({}, options, {\r\n elem: this\r\n }));\r\n });\r\n return that;\r\n }\r\n\r\n // 合并 lay-options 属性上的配置信息\r\n $.extend(options, lay.options(elem[0]));\r\n\r\n // 若重复执行 render,则视为 reload 处理\r\n if(!rerender && elem[0] && elem.data(MOD_INDEX)){\r\n var newThat = thisModule.getThis(elem.data(MOD_INDEX));\r\n if(!newThat) return;\r\n\r\n return newThat.reload(options, type);\r\n }\r\n\r\n options.elem = $(options.elem);\r\n \r\n // 初始化 id 属性 - 优先取 options > 元素 id > 自增索引\r\n options.id = 'id' in options ? options.id : (\r\n elem.attr('id') || that.index\r\n );\r\n\r\n if(!lay.isTopElem(elem[0])){\r\n elem.attr(MOD_ID, options.id);\r\n }\r\n\r\n // 初始化自定义字段名\r\n options.customName = $.extend({}, dropdown.config.customName, options.customName);\r\n\r\n if(options.show || (type === 'reloadData' && that.elemView && $('body').find(that.elemView.get(0)).length)) that.render(rerender, type); //初始即显示或者面板弹出之后执行了刷新数据\r\n that.events(); // 事件\r\n };\r\n \r\n // 渲染\r\n Class.prototype.render = function(rerender, type){\r\n var that = this;\r\n var options = that.config;\r\n var customName = options.customName;\r\n var elemBody = $('body');\r\n \r\n // 默认菜单内容\r\n var getDefaultView = function(){\r\n var elemUl = $('
                        ');\r\n if(options.data.length > 0 ){\r\n eachItemView(elemUl, options.data)\r\n } else {\r\n elemUl.html('
                      • 暂无数据
                      • ');\r\n }\r\n return elemUl;\r\n };\r\n \r\n // 遍历菜单项\r\n var eachItemView = function(views, data){\r\n // var views = [];\r\n\r\n layui.each(data, function(index, item){\r\n // 是否存在子级\r\n var isChild = item[customName.children] && item[customName.children].length > 0;\r\n var isSpreadItem = ('isSpreadItem' in item) ? item.isSpreadItem : options.isSpreadItem\r\n var title = function(title){\r\n var templet = item.templet || options.templet;\r\n if(templet){\r\n title = typeof templet === 'function' \r\n ? templet(item)\r\n : laytpl(templet).render(item);\r\n }\r\n return title;\r\n }(util.escape(item[customName.title]));\r\n \r\n // 初始类型\r\n var type = function(){\r\n if(isChild){\r\n item.type = item.type || 'parent';\r\n }\r\n if(item.type){\r\n return ({\r\n group: 'group'\r\n ,parent: 'parent'\r\n ,'-': '-'\r\n })[item.type] || 'parent';\r\n }\r\n return '';\r\n }();\r\n\r\n if(type !== '-' && (!item[customName.title] && !item[customName.id] && !isChild)) return;\r\n \r\n //列表元素\r\n var viewLi = $([''\r\n \r\n //标题区\r\n ,function(){\r\n //是否超文本\r\n var viewText = ('href' in item) ? (\r\n ''+ title +''\r\n ) : title;\r\n \r\n //是否存在子级\r\n if(isChild){\r\n return '
                        '+ viewText + function(){\r\n if(type === 'parent'){\r\n return '';\r\n } else if(type === 'group' && options.isAllowSpread){\r\n return '';\r\n } else {\r\n return '';\r\n }\r\n }() +'
                        '\r\n \r\n }\r\n return '
                        '+ viewText +'
                        ';\r\n }()\r\n ,''].join(''));\r\n \r\n viewLi.data('item', item);\r\n \r\n //子级区\r\n if(isChild){\r\n var elemPanel = $('
                        ');\r\n var elemUl = $('
                          ');\r\n\r\n if(type === 'parent'){\r\n elemPanel.append(eachItemView(elemUl, item[customName.children]));\r\n viewLi.append(elemPanel);\r\n } else {\r\n viewLi.append(eachItemView(elemUl, item[customName.children]));\r\n }\r\n }\r\n\r\n views.append(viewLi);\r\n });\r\n return views;\r\n };\r\n \r\n // 主模板\r\n var TPL_MAIN = ['
                          '\r\n ,'
                          '].join('');\r\n \r\n // 如果是右键事件,则每次触发事件时,将允许重新渲染\r\n if(options.trigger === 'contextmenu' || lay.isTopElem(options.elem[0])) rerender = true;\r\n \r\n // 判断是否已经打开了下拉菜单面板\r\n if(!rerender && options.elem.data(MOD_INDEX +'_opened')) return;\r\n\r\n // 记录模板对象\r\n that.elemView = $('.' + STR_ELEM + '[' + MOD_ID + '=\"' + options.id + '\"]');\r\n if (type === 'reloadData' && that.elemView.length) {\r\n that.elemView.html(options.content || getDefaultView());\r\n } else {\r\n that.elemView = $(TPL_MAIN);\r\n that.elemView.append(options.content || getDefaultView());\r\n\r\n // 初始化某些属性\r\n if(options.className) that.elemView.addClass(options.className);\r\n if(options.style) that.elemView.attr('style', options.style);\r\n\r\n // 记录当前执行的实例索引\r\n dropdown.thisId = options.id;\r\n\r\n // 插入视图\r\n that.remove(); // 移除非当前绑定元素的面板\r\n elemBody.append(that.elemView);\r\n options.elem.data(MOD_INDEX +'_opened', true);\r\n\r\n // 遮罩\r\n var shade = options.shade ? ('
                          ') : '';\r\n that.elemView.before(shade);\r\n\r\n // 如果是鼠标移入事件,则鼠标移出时自动关闭\r\n if(options.trigger === 'mouseenter'){\r\n that.elemView.on('mouseenter', function(){\r\n clearTimeout(thisModule.timer);\r\n }).on('mouseleave', function(){\r\n that.delayRemove();\r\n });\r\n }\r\n }\r\n\r\n // 坐标定位\r\n that.position();\r\n thisModule.prevElem = that.elemView; // 记录当前打开的元素,以便在下次关闭\r\n thisModule.prevElem.data('prevElem', options.elem); // 将当前绑定的元素,记录在打开元素的 data 对象中\r\n \r\n // 阻止全局事件\r\n that.elemView.find('.layui-menu').on(clickOrMousedown, function(e){\r\n layui.stope(e);\r\n });\r\n\r\n // 触发菜单列表事件\r\n that.elemView.find('.layui-menu li').on('click', function(e){\r\n var othis = $(this);\r\n var data = othis.data('item') || {};\r\n var isChild = data[customName.children] && data[customName.children].length > 0;\r\n var isClickAllScope = options.clickScope === 'all'; // 是否所有父子菜单均触发点击事件\r\n\r\n if(data.disabled) return; // 菜单项禁用状态\r\n \r\n // 普通菜单项点击后的回调及关闭面板\r\n if((!isChild || isClickAllScope) && data.type !== '-'){\r\n var ret = typeof options.click === 'function' \r\n ? options.click(data, othis) \r\n : null;\r\n \r\n ret === false || (isChild || that.remove());\r\n layui.stope(e);\r\n }\r\n });\r\n \r\n // 触发菜单组展开收缩\r\n that.elemView.find(STR_GROUP_TITLE).on('click', function(e){\r\n var othis = $(this);\r\n var elemGroup = othis.parent();\r\n var data = elemGroup.data('item') || {};\r\n \r\n if(data.type === 'group' && options.isAllowSpread){\r\n thisModule.spread(elemGroup, options.accordion);\r\n }\r\n });\r\n\r\n // 组件打开完毕的事件\r\n typeof options.ready === 'function' && options.ready(\r\n that.elemView, \r\n options.elem\r\n );\r\n };\r\n \r\n // 位置定位\r\n Class.prototype.position = function(obj){\r\n var that = this;\r\n var options = that.config;\r\n \r\n lay.position(options.elem[0], that.elemView[0], {\r\n position: options.position,\r\n e: that.e,\r\n clickType: options.trigger === 'contextmenu' ? 'right' : null,\r\n align: options.align || null\r\n });\r\n };\r\n \r\n // 删除视图\r\n Class.prototype.remove = function(){\r\n var that = this;\r\n var options = that.config;\r\n var prevContentElem = thisModule.prevElem;\r\n \r\n // 若存在已打开的面板元素,则移除\r\n if(prevContentElem){\r\n var prevId = prevContentElem.attr(MOD_ID);\r\n var prevTriggerElem = prevContentElem.data('prevElem');\r\n var prevInstance = thisModule.getThis(prevId);\r\n var prevOnClose = prevInstance.config.close;\r\n \r\n prevTriggerElem && prevTriggerElem.data(MOD_INDEX +'_opened', false);\r\n prevContentElem.remove();\r\n delete thisModule.prevElem;\r\n typeof prevOnClose === 'function' && prevOnClose.call(prevInstance.config, prevTriggerElem);\r\n }\r\n lay('.' + STR_ELEM_SHADE).remove();\r\n };\r\n\r\n Class.prototype.normalizedDelay = function(){\r\n var that = this;\r\n var options = that.config;\r\n var delay = [].concat(options.delay);\r\n \r\n return {\r\n show: delay[0],\r\n hide: delay[1] !== undefined ? delay[1] : delay[0] \r\n }\r\n }\r\n \r\n // 延迟删除视图\r\n Class.prototype.delayRemove = function(){\r\n var that = this;\r\n var options = that.config;\r\n clearTimeout(thisModule.timer);\r\n\r\n thisModule.timer = setTimeout(function(){\r\n that.remove();\r\n }, that.normalizedDelay().hide);\r\n };\r\n \r\n // 事件\r\n Class.prototype.events = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n // 若传入 hover,则解析为 mouseenter\r\n if(options.trigger === 'hover') options.trigger = 'mouseenter';\r\n\r\n // 解除上一个事件\r\n if(that.prevElem) that.prevElem.off(options.trigger, that.prevElemCallback);\r\n\r\n // 是否鼠标移入时触发\r\n var isMouseEnter = options.trigger === 'mouseenter';\r\n \r\n // 记录被绑定的元素及回调\r\n that.prevElem = options.elem;\r\n that.prevElemCallback = function(e){\r\n clearTimeout(thisModule.timer);\r\n that.e = e;\r\n\r\n // 若为鼠标移入事件,则延迟触发\r\n isMouseEnter ? (\r\n thisModule.timer = setTimeout(function(){\r\n that.render();\r\n }, that.normalizedDelay().show)\r\n ) : that.render();\r\n \r\n e.preventDefault();\r\n };\r\n\r\n // 触发元素事件\r\n options.elem.on(options.trigger, that.prevElemCallback);\r\n \r\n // 如果是鼠标移入事件\r\n if (isMouseEnter) {\r\n // 执行鼠标移出事件\r\n options.elem.on('mouseleave', function(){\r\n that.delayRemove();\r\n });\r\n }\r\n };\r\n \r\n // 记录所有实例\r\n thisModule.that = {}; // 记录所有实例对象\r\n \r\n // 获取当前实例对象\r\n thisModule.getThis = function(id){\r\n var that = thisModule.that[id];\r\n if(!that) hint.error(id ? (MOD_NAME +' instance with ID \\''+ id +'\\' not found') : 'ID argument required');\r\n return that;\r\n };\r\n \r\n // 设置菜单组展开和收缩状态\r\n thisModule.spread = function(othis, isAccordion){\r\n var contentElem = othis.children('ul');\r\n var needSpread = othis.hasClass(STR_ITEM_UP);\r\n var ANIM_MS = 200;\r\n\r\n // 动画执行完成后的操作\r\n var complete = function() {\r\n $(this).css({'display': ''}); // 剔除临时 style,以适配外部样式的状态重置;\r\n };\r\n\r\n // 动画是否正在执行\r\n if (contentElem.is(':animated')) return;\r\n\r\n // 展开\r\n if (needSpread) {\r\n othis.removeClass(STR_ITEM_UP).addClass(STR_ITEM_DOWN);\r\n contentElem.hide().stop().slideDown(ANIM_MS, complete);\r\n } else { // 收缩\r\n contentElem.stop().slideUp(ANIM_MS, complete);\r\n othis.removeClass(STR_ITEM_DOWN).addClass(STR_ITEM_UP);\r\n }\r\n\r\n // 手风琴\r\n if (needSpread && isAccordion) {\r\n var groupSibs = othis.siblings('.' + STR_ITEM_DOWN);\r\n groupSibs.children('ul').stop().slideUp(ANIM_MS, complete);\r\n groupSibs.removeClass(STR_ITEM_DOWN).addClass(STR_ITEM_UP);\r\n }\r\n };\r\n \r\n // 全局事件\r\n (function(){\r\n var _WIN = $(window);\r\n var _DOC = $(document);\r\n \r\n // 自适应定位\r\n _WIN.on('resize', function(){\r\n if(!dropdown.thisId) return;\r\n var that = thisModule.getThis(dropdown.thisId);\r\n if(!that) return;\r\n \r\n if((that.elemView && !that.elemView[0]) || !$('.'+ STR_ELEM)[0]){\r\n return false;\r\n }\r\n \r\n var options = that.config;\r\n \r\n if(options.trigger === 'contextmenu'){\r\n that.remove();\r\n } else {\r\n that.position();\r\n }\r\n });\r\n \r\n \r\n \r\n // 点击任意处关闭\r\n _DOC.on(clickOrMousedown, function(e){\r\n if(!dropdown.thisId) return;\r\n var that = thisModule.getThis(dropdown.thisId)\r\n if(!that) return;\r\n \r\n var options = that.config;\r\n \r\n // 若触发的是绑定的元素,或者属于绑定元素的子元素,则不关闭\r\n // 满足条件:当前绑定的元素不是 body document,或者不是鼠标右键事件\r\n if(!(lay.isTopElem(options.elem[0]) || options.trigger === 'contextmenu')){\r\n if(\r\n e.target === options.elem[0] || \r\n options.elem.find(e.target)[0] ||\r\n (that.elemView && e.target === that.elemView[0]) ||\r\n (that.elemView && that.elemView.find(e.target)[0])\r\n ) return;\r\n }\r\n \r\n that.remove();\r\n });\r\n \r\n // 基础菜单的静态元素事件\r\n var ELEM_LI = '.layui-menu:not(.layui-dropdown-menu) li';\r\n _DOC.on('click', ELEM_LI, function(e){\r\n var othis = $(this);\r\n var parent = othis.parents('.layui-menu').eq(0);\r\n var isChild = othis.hasClass(STR_ITEM_GROUP) || othis.hasClass(STR_ITEM_PARENT);\r\n var filter = parent.attr('lay-filter') || parent.attr('id');\r\n var options = lay.options(this);\r\n \r\n // 非触发元素\r\n if(othis.hasClass(STR_ITEM_DIV)) return;\r\n\r\n // 非菜单组\r\n if(!isChild){\r\n // 选中\r\n parent.find('.'+ STR_ITEM_CHECKED).removeClass(STR_ITEM_CHECKED); // 清除选中样式\r\n parent.find('.'+ STR_ITEM_CHECKED2).removeClass(STR_ITEM_CHECKED2); // 清除父级菜单选中样式\r\n othis.addClass(STR_ITEM_CHECKED); //添加选中样式\r\n othis.parents('.'+ STR_ITEM_PARENT).addClass(STR_ITEM_CHECKED2); // 添加父级菜单选中样式\r\n\r\n options.title = options.title || $.trim(othis.children('.'+ STR_MENU_TITLE).text());\r\n \r\n // 触发事件\r\n layui.event.call(this, MOD_NAME, 'click('+ filter +')', options);\r\n }\r\n });\r\n \r\n // 基础菜单的展开收缩事件\r\n _DOC.on('click', (ELEM_LI + STR_GROUP_TITLE), function(e){\r\n var othis = $(this);\r\n var elemGroup = othis.parents('.'+ STR_ITEM_GROUP +':eq(0)');\r\n var options = lay.options(elemGroup[0]);\r\n var isAccordion = typeof othis.parents('.layui-menu').eq(0).attr('lay-accordion') === 'string';\r\n\r\n if(('isAllowSpread' in options) ? options.isAllowSpread : true){\r\n thisModule.spread(elemGroup, isAccordion);\r\n }\r\n });\r\n \r\n // 判断子级菜单是否超出屏幕\r\n var ELEM_LI_PAR = '.layui-menu .'+ STR_ITEM_PARENT\r\n _DOC.on('mouseenter', ELEM_LI_PAR, function(e){\r\n var othis = $(this);\r\n var elemPanel = othis.find('.'+ STR_MENU_PANEL);\r\n\r\n if(!elemPanel[0]) return;\r\n var rect = elemPanel[0].getBoundingClientRect();\r\n \r\n // 是否超出右侧屏幕\r\n if(rect.right > _WIN.width()){\r\n elemPanel.addClass(STR_MENU_PANEL_L);\r\n // 不允许超出左侧屏幕\r\n rect = elemPanel[0].getBoundingClientRect();\r\n if(rect.left < 0){\r\n elemPanel.removeClass(STR_MENU_PANEL_L);\r\n }\r\n }\r\n \r\n // 是否超出底部屏幕\r\n if(rect.bottom > _WIN.height()){\r\n elemPanel.eq(0).css('margin-top', -(rect.bottom - _WIN.height() + 5));\r\n }\r\n }).on('mouseleave', ELEM_LI_PAR, function(e){\r\n var othis = $(this)\r\n var elemPanel = othis.children('.'+ STR_MENU_PANEL);\r\n \r\n elemPanel.removeClass(STR_MENU_PANEL_L);\r\n elemPanel.css('margin-top', 0);\r\n });\r\n \r\n })();\r\n\r\n // 关闭面板\r\n dropdown.close = function(id){\r\n var that = thisModule.getThis(id);\r\n if(!that) return this;\r\n \r\n that.remove();\r\n return thisModule.call(that);\r\n };\r\n\r\n // 打开面板\r\n dropdown.open = function(id){\r\n var that = thisModule.getThis(id);\r\n if(!that) return this;\r\n \r\n that.render();\r\n return thisModule.call(that);\r\n }\r\n \r\n // 重载实例\r\n dropdown.reload = function(id, options, type){\r\n var that = thisModule.getThis(id);\r\n if(!that) return this;\r\n\r\n that.reload(options, type);\r\n return thisModule.call(that);\r\n };\r\n\r\n // 仅重载数据\r\n dropdown.reloadData = function(){\r\n var args = $.extend([], arguments);\r\n args[2] = 'reloadData';\r\n\r\n // 重载时,与数据相关的参数\r\n var dataParams = new RegExp('^('+ [\r\n 'data', 'templet', 'content'\r\n ].join('|') + ')$');\r\n\r\n // 过滤与数据无关的参数\r\n layui.each(args[1], function (key, value) {\r\n if(!dataParams.test(key)){\r\n delete args[1][key];\r\n }\r\n });\r\n\r\n return dropdown.reload.apply(null, args);\r\n };\r\n\r\n // 核心入口\r\n dropdown.render = function(options){\r\n var inst = new Class(options);\r\n return thisModule.call(inst);\r\n };\r\n\r\n exports(MOD_NAME, dropdown);\r\n});\r\n","/**\r\n * slider 滑块组件\r\n */\r\n\r\nlayui.define(['jquery', 'lay'], function(exports){\r\n 'use strict';\r\n\r\n var $ = layui.$;\r\n var lay = layui.lay;\r\n\r\n // 外部接口\r\n var slider = {\r\n config: {},\r\n index: layui.slider ? (layui.slider.index + 10000) : 0,\r\n\r\n // 设置全局项\r\n set: function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n },\r\n\r\n // 事件\r\n on: function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n }\r\n };\r\n\r\n // 操作当前实例\r\n var thisSlider = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n return {\r\n setValue: function(value, index){ // 设置值\r\n value = value > options.max ? options.max : value;\r\n value = value < options.min ? options.min : value;\r\n options.value = value;\r\n return that.slide('set', value, index || 0);\r\n },\r\n config: options\r\n }\r\n };\r\n\r\n // 字符常量\r\n var MOD_NAME = 'slider';\r\n var DISABLED = 'layui-disabled';\r\n var ELEM_VIEW = 'layui-slider';\r\n var SLIDER_BAR = 'layui-slider-bar';\r\n var SLIDER_WRAP = 'layui-slider-wrap';\r\n var SLIDER_WRAP_BTN = 'layui-slider-wrap-btn';\r\n var SLIDER_TIPS = 'layui-slider-tips';\r\n var SLIDER_INPUT = 'layui-slider-input';\r\n var SLIDER_INPUT_TXT = 'layui-slider-input-txt';\r\n var SLIDER_INPUT_BTN = 'layui-slider-input-btn';\r\n var ELEM_HOVER = 'layui-slider-hover';\r\n\r\n // 构造器\r\n var Class = function(options){\r\n var that = this;\r\n that.index = ++slider.index;\r\n that.config = $.extend({}, that.config, slider.config, options);\r\n that.render();\r\n };\r\n\r\n // 默认配置\r\n Class.prototype.config = {\r\n type: 'default', //滑块类型,垂直:vertical\r\n min: 0, //最小值\r\n max: 100, //最大值,默认100\r\n value: 0, //初始值,默认为0\r\n step: 1, //间隔值\r\n showstep: false, //间隔点开启\r\n tips: true, //文字提示,开启\r\n tipsAlways: false, //文字提示,始终开启\r\n input: false, //输入框,关闭\r\n range: false, //范围选择,与输入框不能同时开启,默认关闭\r\n height: 200, //配合 type:\"vertical\" 使用,默认200px\r\n disabled: false, //滑块禁用,默认关闭\r\n theme: '#16baaa' //主题颜色\r\n };\r\n\r\n // 数值精度\r\n Class.prototype.precision = function(){\r\n var that = this;\r\n var options = that.config;\r\n var precisions = $.map([options.min, options.max, options.step], function(v, i){\r\n var decimalArr = String(v).split('.');\r\n return decimalArr[1] ? decimalArr[1].length : 0;\r\n })\r\n return Math.max.apply(null, precisions);\r\n }\r\n\r\n //滑块渲染\r\n Class.prototype.render = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 若 elem 非唯一,则拆分为多个实例\r\n var elem = $(options.elem);\r\n if(elem.length > 1){\r\n layui.each(elem, function(){\r\n slider.render($.extend({}, options, {\r\n elem: this\r\n }));\r\n });\r\n return that;\r\n }\r\n\r\n // 合并 lay-options 属性上的配置信息\r\n $.extend(options, lay.options(elem[0]));\r\n\r\n //间隔值不能小于等于 0\r\n if(options.step <= 0) options.step = 1;\r\n\r\n //最大值不能小于最小值\r\n if(options.max < options.min) options.max = options.min + options.step;\r\n\r\n\r\n\r\n //判断是否开启双滑块\r\n if(options.range){\r\n options.value = typeof(options.value) == 'object' ? options.value : [options.min, options.value];\r\n var minValue = Math.min(options.value[0], options.value[1])\r\n ,maxValue = Math.max(options.value[0], options.value[1]);\r\n options.value[0] = Math.max(minValue,options.min);\r\n options.value[1] = Math.max(maxValue,options.min);\r\n options.value[0] = Math.min(options.value[0],options.max);\r\n options.value[1] = Math.min(options.value[1],options.max);\r\n\r\n var scaleFir = (options.value[0] - options.min) / (options.max - options.min) * 100;\r\n var scaleSec = (options.value[1] - options.min) / (options.max - options.min) * 100;\r\n var scale = scaleSec - scaleFir + '%';\r\n scaleFir = scaleFir + '%';\r\n scaleSec = scaleSec + '%';\r\n } else {\r\n //如果初始值是一个数组,则获取数组的最小值\r\n if(typeof options.value == 'object'){\r\n options.value = Math.min.apply(null, options.value);\r\n }\r\n\r\n //初始值不能小于最小值且不能大于最大值\r\n if(options.value < options.min) options.value = options.min;\r\n if(options.value > options.max) options.value = options.max;\r\n\r\n var scale = (options.value - options.min) / (options.max - options.min) * 100 + '%';\r\n }\r\n\r\n\r\n //如果禁用,颜色为统一的灰色\r\n var theme = options.disabled ? '#c2c2c2' : options.theme;\r\n\r\n //滑块\r\n var temp = '
                          '+ (options.tips ? '
                          ' : '') +\r\n '
                          ' +\r\n '
                          '+ (options.range ? '
                          ' : '') +'
                          ';\r\n\r\n var othis = $(options.elem);\r\n var hasRender = othis.next('.' + ELEM_VIEW);\r\n //生成替代元素\r\n hasRender[0] && hasRender.remove(); //如果已经渲染,则Rerender\r\n that.elemTemp = $(temp);\r\n\r\n //把数据缓存到滑块上\r\n if(options.range){\r\n that.elemTemp.find('.' + SLIDER_WRAP).eq(0).data('value', options.value[0]);\r\n that.elemTemp.find('.' + SLIDER_WRAP).eq(1).data('value', options.value[1]);\r\n }else{\r\n that.elemTemp.find('.' + SLIDER_WRAP).data('value', options.value);\r\n }\r\n\r\n //插入替代元素\r\n othis.html(that.elemTemp);\r\n\r\n //垂直滑块\r\n if(options.type === 'vertical'){\r\n that.elemTemp.height(options.height + 'px');\r\n }\r\n\r\n //显示间断点\r\n if(options.showstep){\r\n var number = (options.max - options.min) / options.step, item = '';\r\n for(var i = 1; i < number + 1; i++) {\r\n var step = i * 100 / number;\r\n if(step < 100){\r\n item += '
                          '\r\n }\r\n }\r\n that.elemTemp.append(item);\r\n }\r\n\r\n //插入输入框\r\n if(options.input && !options.range){\r\n var elemInput = $('
                          ');\r\n othis.css(\"position\",\"relative\");\r\n othis.append(elemInput);\r\n othis.find('.' + SLIDER_INPUT_TXT).children('input').val(options.value);\r\n if(options.type === 'vertical'){\r\n elemInput.css({\r\n left: 0\r\n ,top: -48\r\n });\r\n } else {\r\n that.elemTemp.css(\"margin-right\", elemInput.outerWidth() + 15);\r\n }\r\n }\r\n\r\n //给未禁止的滑块滑动事件\r\n if(!options.disabled){\r\n that.slide();\r\n }else{\r\n that.elemTemp.addClass(DISABLED);\r\n that.elemTemp.find('.' + SLIDER_WRAP_BTN).addClass(DISABLED);\r\n }\r\n\r\n /**\r\n * @description 设置提示文本内容\r\n * @param {Element} sliderWrapBtnElem 提示文本节点元素\r\n */\r\n function setSliderTipsTxt(sliderWrapBtnElem) {\r\n var value = sliderWrapBtnElem.parent().data('value');\r\n var tipsTxt = options.setTips ? options.setTips(value) : value;\r\n that.elemTemp.find('.' + SLIDER_TIPS).html(tipsTxt);\r\n }\r\n\r\n /**\r\n * @description 计算提示文本元素的 position left\r\n * @param {Element} sliderWrapBtnElem 提示文本节点元素\r\n */\r\n function calcSliderTipsLeft(sliderWrapBtnElem){\r\n var sliderWidth = options.type === 'vertical' ? options.height : that.elemTemp[0].offsetWidth;\r\n var sliderWrap = that.elemTemp.find('.' + SLIDER_WRAP);\r\n var tipsLeft = options.type === 'vertical' ? (sliderWidth - sliderWrapBtnElem.parent()[0].offsetTop - sliderWrap.height()) : sliderWrapBtnElem.parent()[0].offsetLeft;\r\n var left = tipsLeft / sliderWidth * 100;\r\n return left\r\n }\r\n\r\n /**\r\n * @description 设置提示文本元素的 position left\r\n * @param {number} left 要设置的 left 的大小\r\n */\r\n function setSliderTipsLeft(left) {\r\n if(options.type === 'vertical'){\r\n that.elemTemp.find('.' + SLIDER_TIPS).css({\r\n \"bottom\": left + '%',\r\n \"margin-bottom\": \"20px\",\r\n \"display\": \"inline-block\"\r\n });\r\n } else {\r\n that.elemTemp.find('.' + SLIDER_TIPS).css({\r\n \"left\": left + '%',\r\n \"display\": \"inline-block\"\r\n });\r\n }\r\n }\r\n\r\n //判断是否要始终显示提示文本\r\n if(options.tips){\r\n if(options.tipsAlways){\r\n var sliderWrapBtnElem = that.elemTemp.find('.' + SLIDER_WRAP_BTN);\r\n setSliderTipsTxt(sliderWrapBtnElem)\r\n var left = calcSliderTipsLeft(sliderWrapBtnElem);\r\n setSliderTipsLeft(left)\r\n }else{\r\n //划过滑块显示数值\r\n var timer;\r\n that.elemTemp.find('.' + SLIDER_WRAP_BTN).on('mouseover', function(){\r\n setSliderTipsTxt($(this))\r\n var left = calcSliderTipsLeft($(this));\r\n clearTimeout(timer);\r\n timer = setTimeout(function(){\r\n setSliderTipsLeft(left)\r\n }, 300);\r\n }).on('mouseout', function(){\r\n clearTimeout(timer);\r\n if(!options.tipsAlways){\r\n that.elemTemp.find('.' + SLIDER_TIPS).css(\"display\", \"none\");\r\n }\r\n });\r\n }\r\n }\r\n };\r\n\r\n //滑块滑动\r\n Class.prototype.slide = function(setValue, value, i){\r\n var that = this;\r\n var options = that.config;\r\n var sliderAct = that.elemTemp;\r\n var sliderWidth = function(){\r\n return options.type === 'vertical' ? options.height : sliderAct[0].offsetWidth\r\n };\r\n var sliderWrap = sliderAct.find('.' + SLIDER_WRAP);\r\n var sliderTxt = sliderAct.next('.' + SLIDER_INPUT);\r\n var inputValue = sliderTxt.children('.' + SLIDER_INPUT_TXT).children('input').val();\r\n var step = 100 / ((options.max - options.min) / options.step);\r\n var precision = that.precision();\r\n var change = function(offsetValue, index, from){\r\n if(Math.ceil(offsetValue) * step > 100){\r\n offsetValue = Math.ceil(offsetValue) * step\r\n }else{\r\n offsetValue = Math.round(offsetValue) * step\r\n }\r\n offsetValue = offsetValue > 100 ? 100: offsetValue;\r\n offsetValue = offsetValue < 0 ? 0: offsetValue;\r\n sliderWrap.eq(index).css((options.type === 'vertical' ?'bottom':'left'), offsetValue + '%');\r\n var firLeft = valueTo(sliderWrap[0].offsetLeft);\r\n var secLeft = options.range ? valueTo(sliderWrap[1].offsetLeft) : 0;\r\n if(options.type === 'vertical'){\r\n sliderAct.find('.' + SLIDER_TIPS).css({\"bottom\":offsetValue + '%', \"margin-bottom\":\"20px\"});\r\n firLeft = valueTo(sliderWidth() - sliderWrap[0].offsetTop - sliderWrap.height());\r\n secLeft = options.range ? valueTo(sliderWidth() - sliderWrap[1].offsetTop - sliderWrap.height()) : 0;\r\n }else{\r\n sliderAct.find('.' + SLIDER_TIPS).css(\"left\",offsetValue + '%');\r\n }\r\n firLeft = firLeft > 100 ? 100: firLeft;\r\n secLeft = secLeft > 100 ? 100: secLeft;\r\n var minLeft = Math.min(firLeft, secLeft)\r\n ,wrapWidth = Math.abs(firLeft - secLeft);\r\n if(options.type === 'vertical'){\r\n sliderAct.find('.' + SLIDER_BAR).css({\"height\":wrapWidth + '%', \"bottom\":minLeft + '%'});\r\n }else{\r\n sliderAct.find('.' + SLIDER_BAR).css({\"width\":wrapWidth + '%', \"left\":minLeft + '%'});\r\n }\r\n var selfValue = options.min + (options.max - options.min) * offsetValue / 100;\r\n selfValue = Number(parseFloat(selfValue).toFixed(precision));\r\n inputValue = selfValue;\r\n sliderTxt.children('.' + SLIDER_INPUT_TXT).children('input').val(inputValue);\r\n sliderWrap.eq(index).data('value', selfValue);\r\n sliderAct.find('.' + SLIDER_TIPS).html(options.setTips ? options.setTips(selfValue) : selfValue);\r\n\r\n //如果开启范围选择,则返回数组值\r\n if(options.range){\r\n var arrValue = [\r\n sliderWrap.eq(0).data('value'),\r\n sliderWrap.eq(1).data('value')\r\n ];\r\n if(arrValue[0] > arrValue[1]) arrValue.reverse(); //如果前面的圆点超过了后面的圆点值,则调换顺序\r\n }\r\n\r\n that.value = options.range ? arrValue : selfValue; // 最新值\r\n options.change && options.change(that.value); // change 回调\r\n\r\n // 值完成选中的事件\r\n if(from === 'done') options.done && options.done(that.value);\r\n };\r\n var valueTo = function(value){\r\n var oldLeft = value / sliderWidth() * 100 / step;\r\n var left = Math.round(oldLeft) * step;\r\n if(value == sliderWidth()){\r\n left = Math.ceil(oldLeft) * step;\r\n }\r\n return left;\r\n };\r\n\r\n //拖拽元素\r\n var elemMove = $(['
                          sliderWidth())left = sliderWidth();\r\n var reaLeft = left / sliderWidth() * 100 / step;\r\n change(reaLeft, index);\r\n othis.addClass(ELEM_HOVER);\r\n sliderAct.find('.' + SLIDER_TIPS).show();\r\n e.preventDefault();\r\n };\r\n\r\n var up = function(delay){\r\n othis.removeClass(ELEM_HOVER);\r\n if(!options.tipsAlways){\r\n setTimeout(function(){\r\n sliderAct.find('.' + SLIDER_TIPS).hide();\r\n }, delay);\r\n }\r\n };\r\n\r\n createMoveElem(othis, move, up)\r\n });\r\n });\r\n\r\n // 点击滑块\r\n sliderAct.on('click', function(e){\r\n var main = $('.' + SLIDER_WRAP_BTN);\r\n var othis = $(this);\r\n if(!main.is(event.target) && main.has(event.target).length === 0 && main.length){\r\n var index;\r\n var offset = options.type === 'vertical'\r\n ? (sliderWidth() - e.clientY + othis.offset().top - $(window).scrollTop())\r\n :(e.clientX - othis.offset().left - $(window).scrollLeft());\r\n\r\n if(offset < 0)offset = 0;\r\n if(offset > sliderWidth()) offset = sliderWidth();\r\n var reaLeft = offset / sliderWidth() * 100 / step;\r\n if(options.range){\r\n if(options.type === 'vertical'){\r\n index = Math.abs(offset - parseInt($(sliderWrap[0]).css('bottom'))) > Math.abs(offset - parseInt($(sliderWrap[1]).css('bottom'))) ? 1 : 0;\r\n } else {\r\n index = Math.abs(offset - sliderWrap[0].offsetLeft) > Math.abs(offset - sliderWrap[1].offsetLeft) ? 1 : 0;\r\n }\r\n } else {\r\n index = 0;\r\n }\r\n change(reaLeft, index, 'done');\r\n e.preventDefault();\r\n }\r\n });\r\n\r\n //点击加减输入框\r\n sliderTxt.children('.' + SLIDER_INPUT_BTN).children('i').each(function(index){\r\n $(this).on('click', function(){\r\n inputValue = sliderTxt.children('.' + SLIDER_INPUT_TXT).children('input').val();\r\n if(index == 1){ //减\r\n inputValue = inputValue - options.step < options.min\r\n ? options.min\r\n : Number(inputValue) - options.step;\r\n }else{\r\n inputValue = Number(inputValue) + options.step > options.max\r\n ? options.max\r\n : Number(inputValue) + options.step;\r\n }\r\n var inputScale = (inputValue - options.min) / (options.max - options.min) * 100 / step;\r\n change(inputScale, 0, 'done');\r\n });\r\n });\r\n\r\n //获取输入框值\r\n var getInputValue = function(){\r\n var realValue = this.value;\r\n realValue = isNaN(realValue) ? 0 : realValue;\r\n realValue = realValue < options.min ? options.min : realValue;\r\n realValue = realValue > options.max ? options.max : realValue;\r\n this.value = realValue;\r\n var inputScale = (realValue - options.min) / (options.max - options.min) * 100 / step;\r\n change(inputScale, 0, 'done');\r\n };\r\n sliderTxt.children('.' + SLIDER_INPUT_TXT).children('input').on('keydown', function(e){\r\n if(e.keyCode === 13){\r\n e.preventDefault();\r\n getInputValue.call(this);\r\n }\r\n }).on('change', getInputValue);\r\n };\r\n\r\n //事件处理\r\n Class.prototype.events = function(){\r\n var that = this;\r\n var options = that.config;\r\n };\r\n\r\n //核心入口\r\n slider.render = function(options){\r\n var inst = new Class(options);\r\n return thisSlider.call(inst);\r\n };\r\n\r\n exports(MOD_NAME, slider);\r\n})\r\n","/**\r\n * colorpicker \r\n * 颜色选择组件\r\n */\r\n\r\nlayui.define(['jquery', 'lay'], function(exports){\r\n \"use strict\";\r\n \r\n var $ = layui.$;\r\n var lay = layui.lay;\r\n var hint = layui.hint();\r\n var device = layui.device();\r\n var clickOrMousedown = (device.mobile ? 'click' : 'mousedown');\r\n\r\n //外部接口\r\n var colorpicker = {\r\n config: {}\r\n ,index: layui.colorpicker ? (layui.colorpicker.index + 10000) : 0\r\n\r\n //设置全局项\r\n ,set: function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n }\r\n \r\n //事件\r\n ,on: function(events, callback){\r\n return layui.onevent.call(this, 'colorpicker', events, callback);\r\n }\r\n };\r\n \r\n // 操作当前实例\r\n var thisModule = function(){\r\n var that = this;\r\n var options = that.config;\r\n var id = options.id;\r\n\r\n thisModule.that[id] = that; // 记录当前实例对象\r\n\r\n return {\r\n config: options\r\n };\r\n }\r\n\r\n //字符常量\r\n ,MOD_NAME = 'colorpicker', SHOW = 'layui-show', THIS = 'layui-this', ELEM = 'layui-colorpicker'\r\n \r\n ,ELEM_MAIN = '.layui-colorpicker-main', ICON_PICKER_DOWN = 'layui-icon-down', ICON_PICKER_CLOSE = 'layui-icon-close'\r\n ,PICKER_TRIG_SPAN = 'layui-colorpicker-trigger-span', PICKER_TRIG_I = 'layui-colorpicker-trigger-i', PICKER_SIDE = 'layui-colorpicker-side', PICKER_SIDE_SLIDER = 'layui-colorpicker-side-slider'\r\n ,PICKER_BASIS = 'layui-colorpicker-basis', PICKER_ALPHA_BG = 'layui-colorpicker-alpha-bgcolor', PICKER_ALPHA_SLIDER = 'layui-colorpicker-alpha-slider', PICKER_BASIS_CUR = 'layui-colorpicker-basis-cursor', PICKER_INPUT = 'layui-colorpicker-main-input'\r\n\r\n //RGB转HSB\r\n ,RGBToHSB = function(rgb){\r\n var hsb = {h:0, s:0, b:0};\r\n var min = Math.min(rgb.r, rgb.g, rgb.b);\r\n var max = Math.max(rgb.r, rgb.g, rgb.b);\r\n var delta = max - min;\r\n hsb.b = max;\r\n hsb.s = max !== 0 ? 255*delta/max : 0;\r\n if(hsb.s !== 0){\r\n if(rgb.r == max){ // 因 rgb 中返回的数字为 string 类型\r\n hsb.h = (rgb.g - rgb.b) / delta;\r\n }else if(rgb.g == max){\r\n hsb.h = 2 + (rgb.b - rgb.r) / delta;\r\n }else{\r\n hsb.h = 4 + (rgb.r - rgb.g) / delta;\r\n }\r\n }else{\r\n hsb.h = -1;\r\n }\r\n if(max === min){\r\n hsb.h = 0;\r\n }\r\n hsb.h *= 60;\r\n if(hsb.h < 0) {\r\n hsb.h += 360;\r\n }\r\n hsb.s *= 100/255;\r\n hsb.b *= 100/255;\r\n return hsb; \r\n }\r\n\r\n //HEX转HSB\r\n ,HEXToHSB = function(hex){\r\n hex = hex.indexOf('#') > -1 ? hex.substring(1) : hex;\r\n if(hex.length === 3){\r\n var num = hex.split(\"\");\r\n hex = num[0]+num[0]+num[1]+num[1]+num[2]+num[2]\r\n }\r\n hex = parseInt(hex, 16);\r\n var rgb = {r:hex >> 16, g:(hex & 0x00FF00) >> 8, b:(hex & 0x0000FF)};\r\n return RGBToHSB(rgb);\r\n }\r\n\r\n //HSB转RGB\r\n ,HSBToRGB = function(hsb){\r\n var rgb = {};\r\n var h = hsb.h;\r\n var s = hsb.s*255/100;\r\n var b = hsb.b*255/100;\r\n if(s === 0){\r\n rgb.r = rgb.g = rgb.b = b;\r\n }else{\r\n var t1 = b;\r\n var t2 = (255 - s) * b /255;\r\n var t3 = (t1 - t2) * (h % 60) /60;\r\n if(h === 360) h = 0;\r\n if(h < 60) {rgb.r=t1; rgb.b=t2; rgb.g=t2+t3}\r\n else if(h < 120) {rgb.g=t1; rgb.b=t2; rgb.r=t1-t3}\r\n else if(h < 180) {rgb.g=t1; rgb.r=t2; rgb.b=t2+t3}\r\n else if(h < 240) {rgb.b=t1; rgb.r=t2; rgb.g=t1-t3}\r\n else if(h < 300) {rgb.b=t1; rgb.g=t2; rgb.r=t2+t3}\r\n else if(h < 360) {rgb.r=t1; rgb.g=t2; rgb.b=t1-t3}\r\n else {rgb.r=0; rgb.g=0; rgb.b=0}\r\n }\r\n return {r:Math.round(rgb.r), g:Math.round(rgb.g), b:Math.round(rgb.b)};\r\n }\r\n\r\n //HSB转HEX\r\n ,HSBToHEX = function(hsb){\r\n var rgb = HSBToRGB(hsb);\r\n var hex = [\r\n rgb.r.toString(16)\r\n ,rgb.g.toString(16)\r\n ,rgb.b.toString(16)\r\n ];\r\n $.each(hex, function(nr, val){\r\n if(val.length === 1){\r\n hex[nr] = '0' + val;\r\n }\r\n });\r\n return hex.join('');\r\n }\r\n\r\n //转化成所需rgb格式\r\n ,RGBSTo = function(rgbs){\r\n var regexp = /[0-9]{1,3}/g;\r\n var re = rgbs.match(regexp) || [];\r\n return {r:re[0], g:re[1], b:re[2]};\r\n }\r\n \r\n ,$win = $(window)\r\n ,$doc = $(document)\r\n \r\n //构造器\r\n ,Class = function(options){\r\n var that = this;\r\n that.index = ++colorpicker.index;\r\n that.config = $.extend({}, that.config, colorpicker.config, options);\r\n that.render();\r\n };\r\n\r\n //默认配置\r\n Class.prototype.config = {\r\n color: '' //默认颜色,默认没有\r\n ,size: null //选择器大小\r\n ,alpha: false //是否开启透明度\r\n ,format: 'hex' //颜色显示/输入格式,可选 rgb,hex\r\n ,predefine: false //预定义颜色是否开启\r\n ,colors: [ //默认预定义颜色列表\r\n '#16baaa', '#16b777', '#1E9FFF', '#FF5722', '#FFB800', '#01AAED', '#999', '#c00', '#ff8c00','#ffd700'\r\n ,'#90ee90', '#00ced1', '#1e90ff', '#c71585', 'rgb(0, 186, 189)', 'rgb(255, 120, 0)', 'rgb(250, 212, 0)', '#393D49', 'rgba(0,0,0,.5)', 'rgba(255, 69, 0, 0.68)', 'rgba(144, 240, 144, 0.5)', 'rgba(31, 147, 255, 0.73)'\r\n ]\r\n };\r\n\r\n //初始颜色选择框\r\n Class.prototype.render = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 若 elem 非唯一,则拆分为多个实例\r\n var elem = $(options.elem);\r\n if(elem.length > 1){\r\n layui.each(elem, function(){\r\n colorpicker.render($.extend({}, options, {\r\n elem: this\r\n }));\r\n });\r\n return that;\r\n }\r\n\r\n // 合并 lay-options 属性上的配置信息\r\n $.extend(options, lay.options(elem[0]));\r\n \r\n //颜色选择框对象\r\n var elemColorBox = $(['
                          '\r\n ,''\r\n ,' 3){ //需要优化\r\n if(!(options.alpha && options.format == 'rgb')){\r\n bgstr = '#' + HSBToHEX(RGBToHSB(RGBSTo(options.color)))\r\n }\r\n }\r\n \r\n return 'background: '+ bgstr;\r\n }\r\n \r\n return bgstr;\r\n }() +'\">'\r\n ,''\r\n ,''\r\n ,''\r\n ,'
                          '].join(''))\r\n\r\n //初始化颜色选择框\r\n elem = options.elem = $(options.elem);\r\n options.size && elemColorBox.addClass('layui-colorpicker-'+ options.size); //初始化颜色选择框尺寸\r\n \r\n // 插入颜色选择框\r\n elem.addClass('layui-inline').html(\r\n that.elemColorBox = elemColorBox\r\n );\r\n\r\n // 初始化 id 属性 - 优先取 options > 元素 id > 自增索引\r\n options.id = 'id' in options ? options.id : (\r\n elem.attr('id') || that.index\r\n );\r\n \r\n // 获取背景色值\r\n that.color = that.elemColorBox.find('.'+ PICKER_TRIG_SPAN)[0].style.background;\r\n \r\n // 相关事件\r\n that.events();\r\n };\r\n\r\n //渲染颜色选择器\r\n Class.prototype.renderPicker = function(){\r\n var that = this\r\n ,options = that.config\r\n ,elemColorBox = that.elemColorBox[0]\r\n \r\n //颜色选择器对象\r\n ,elemPicker = that.elemPicker = $(['
                          '\r\n //颜色面板\r\n ,'
                          '\r\n ,'
                          '\r\n ,'
                          '\r\n ,'
                          '\r\n ,'
                          '\r\n ,'
                          '\r\n ,'
                          '\r\n ,'
                          '\r\n ,'
                          '\r\n ,'
                          '\r\n \r\n //透明度条块\r\n ,'
                          '\r\n ,'
                          '\r\n ,'
                          '\r\n ,'
                          '\r\n ,'
                          '\r\n \r\n //预设颜色列表\r\n ,function(){\r\n if(options.predefine){\r\n var list = ['
                          '];\r\n layui.each(options.colors, function(i, v){\r\n list.push(['
                          3 \r\n ? ' layui-colorpicker-pre-isalpha' \r\n : '') +'\">'\r\n ,'
                          '\r\n ,'
                          '].join(''));\r\n });\r\n list.push('
                          ');\r\n return list.join('');\r\n } else {\r\n return '';\r\n }\r\n }()\r\n \r\n //底部表单元素区域\r\n ,'
                          '\r\n ,'
                          '\r\n ,''\r\n ,'
                          '\r\n ,'
                          '\r\n ,''\r\n ,''\r\n ,''\r\n ,'
                          '].join(''))\r\n \r\n ,elemColorBoxSpan = that.elemColorBox.find('.' + PICKER_TRIG_SPAN)[0];\r\n \r\n //如果当前点击的颜色盒子已经存在选择器,则关闭\r\n if($(ELEM_MAIN)[0] && $(ELEM_MAIN).data('index') == that.index){\r\n that.removePicker(Class.thisElemInd);\r\n } else { //插入颜色选择器\r\n that.removePicker(Class.thisElemInd); \r\n $('body').append(elemPicker);\r\n }\r\n\r\n // 记录当前执行的实例索引\r\n colorpicker.thisId = options.id;\r\n \r\n Class.thisElemInd = that.index; //记录最新打开的选择器索引\r\n Class.thisColor = elemColorBox.style.background //记录最新打开的选择器颜色选中值\r\n \r\n that.position();\r\n that.pickerEvents();\r\n };\r\n\r\n //颜色选择器移除\r\n Class.prototype.removePicker = function(index){\r\n var that = this;\r\n var options = that.config;\r\n var elem = $('#layui-colorpicker'+ (index || that.index));\r\n\r\n if(elem[0]){\r\n elem.remove();\r\n delete colorpicker.thisId;\r\n\r\n // 面板关闭后的回调\r\n typeof options.close === 'function' && options.close(that.color);\r\n }\r\n\r\n return that;\r\n };\r\n \r\n //定位算法\r\n Class.prototype.position = function(){\r\n var that = this\r\n ,options = that.config;\r\n lay.position(that.bindElem || that.elemColorBox[0], that.elemPicker[0], {\r\n position: options.position\r\n ,align: 'center'\r\n });\r\n return that;\r\n };\r\n\r\n //颜色选择器赋值\r\n Class.prototype.val = function(){\r\n var that = this\r\n ,options = that.config\r\n \r\n ,elemColorBox = that.elemColorBox.find('.' + PICKER_TRIG_SPAN)\r\n ,elemPickerInput = that.elemPicker.find('.' + PICKER_INPUT)\r\n ,e = elemColorBox[0]\r\n ,bgcolor = e.style.backgroundColor;\r\n\r\n //判断是否有背景颜色\r\n if(bgcolor){\r\n \r\n //转化成hsb格式\r\n var hsb = RGBToHSB(RGBSTo(bgcolor))\r\n ,type = elemColorBox.attr('lay-type');\r\n \r\n //同步滑块的位置及颜色选择器的选择\r\n that.select(hsb.h, hsb.s, hsb.b);\r\n \r\n // 若格式要求为rgb\r\n if(type === 'torgb'){\r\n elemPickerInput.find('input').val(bgcolor);\r\n } else if(type === 'rgba'){ // 若格式要求为 rgba\r\n var rgb = RGBSTo(bgcolor);\r\n \r\n // 若开启透明度而没有设置,则给默认值\r\n if((bgcolor.match(/[0-9]{1,3}/g) || []).length === 3){\r\n elemPickerInput.find('input').val('rgba('+ rgb.r +', '+ rgb.g +', '+ rgb.b +', 1)');\r\n that.elemPicker.find('.'+ PICKER_ALPHA_SLIDER).css(\"left\", 280);\r\n } else {\r\n elemPickerInput.find('input').val(bgcolor);\r\n var left = bgcolor.slice(bgcolor.lastIndexOf(\",\") + 1, bgcolor.length - 1) * 280;\r\n that.elemPicker.find('.'+ PICKER_ALPHA_SLIDER).css(\"left\", left);\r\n }\r\n \r\n // 设置 span 背景色\r\n that.elemPicker.find('.'+ PICKER_ALPHA_BG)[0].style.background = 'linear-gradient(to right, rgba('+ rgb.r +', '+ rgb.g +', '+ rgb.b +', 0), rgb('+ rgb.r +', '+ rgb.g +', '+ rgb.b +'))'; \r\n } else {\r\n elemPickerInput.find('input').val('#'+ HSBToHEX(hsb));\r\n }\r\n } else {\r\n // 若没有背景颜色则默认到最初始的状态\r\n that.select(0,100,100);\r\n elemPickerInput.find('input').val(\"\");\r\n that.elemPicker.find('.'+ PICKER_ALPHA_BG)[0].style.background = '';\r\n that.elemPicker.find('.'+ PICKER_ALPHA_SLIDER).css(\"left\", 280);\r\n }\r\n };\r\n\r\n //颜色选择器滑动 / 点击\r\n Class.prototype.side = function(){\r\n var that = this\r\n ,options = that.config\r\n \r\n ,span = that.elemColorBox.find('.' + PICKER_TRIG_SPAN)\r\n ,type = span.attr('lay-type')\r\n\r\n ,side = that.elemPicker.find('.' + PICKER_SIDE)\r\n ,slider = that.elemPicker.find('.' + PICKER_SIDE_SLIDER)\r\n ,basis = that.elemPicker.find('.' + PICKER_BASIS)\r\n ,choose = that.elemPicker.find('.' + PICKER_BASIS_CUR)\r\n ,alphacolor = that.elemPicker.find('.' + PICKER_ALPHA_BG)\r\n ,alphaslider = that.elemPicker.find('.' + PICKER_ALPHA_SLIDER)\r\n \r\n ,_h = slider[0].offsetTop/180*360\r\n ,_b = 100 - (choose[0].offsetTop + 3)/180*100\r\n ,_s = (choose[0].offsetLeft + 3)/260*100\r\n ,_a = Math.round(alphaslider[0].offsetLeft/280*100)/100 \r\n \r\n ,i = that.elemColorBox.find('.' + PICKER_TRIG_I)\r\n ,pre = that.elemPicker.find('.layui-colorpicker-pre').children('div')\r\n\r\n ,change = function(x,y,z,a){\r\n that.select(x, y, z);\r\n var rgb = HSBToRGB({h:x, s:y, b:z});\r\n var color = HSBToHEX({h:x, s:y, b:z});\r\n var elemInput = that.elemPicker.find('.' + PICKER_INPUT).find('input');\r\n\r\n i.addClass(ICON_PICKER_DOWN).removeClass(ICON_PICKER_CLOSE);\r\n span[0].style.background = 'rgb('+ rgb.r +', '+ rgb.g +', '+ rgb.b +')';\r\n\r\n if(type === 'torgb'){\r\n elemInput.val('rgb('+ rgb.r +', '+ rgb.g +', '+ rgb.b +')');\r\n } else if(type === 'rgba'){\r\n var left = a * 280;\r\n alphaslider.css(\"left\", left);\r\n elemInput.val('rgba('+ rgb.r +', '+ rgb.g +', '+ rgb.b +', '+ a +')');\r\n span[0].style.background = 'rgba('+ rgb.r +', '+ rgb.g +', '+ rgb.b +', '+ a +')';\r\n alphacolor[0].style.background = 'linear-gradient(to right, rgba('+ rgb.r +', '+ rgb.g +', '+ rgb.b +', 0), rgb('+ rgb.r +', '+ rgb.g +', '+ rgb.b +'))'\r\n } else {\r\n elemInput.val('#'+ color);\r\n }\r\n \r\n //回调更改的颜色\r\n options.change && options.change($.trim(that.elemPicker.find('.' + PICKER_INPUT).find('input').val()));\r\n }\r\n\r\n //拖拽元素\r\n ,elemMove = $(['
                          '].join(''))\r\n ,createMoveElem = function(call){\r\n $('#LAY-colorpicker-moving')[0] || $('body').append(elemMove);\r\n elemMove.on('mousemove', call);\r\n elemMove.on('mouseup', function(){\r\n elemMove.remove();\r\n }).on('mouseleave', function(){\r\n elemMove.remove();\r\n });\r\n };\r\n\r\n //右侧主色选择\r\n slider.on('mousedown', function(e, triggerEvent){\r\n var oldtop = this.offsetTop;\r\n var oldy = e.clientY === undefined ? triggerEvent.clientY : e.clientY;\r\n var move = function(e){\r\n var top = oldtop + (e.clientY - oldy)\r\n ,maxh = side[0].offsetHeight;\r\n if(top < 0)top = 0;\r\n if(top > maxh)top = maxh;\r\n var h = top/180*360;\r\n _h = h;\r\n change(h, _s, _b, _a);\r\n e.preventDefault();\r\n };\r\n \r\n layui.stope(e);\r\n createMoveElem(move);\r\n e.preventDefault();\r\n });\r\n \r\n side.on('mousedown', function(e){\r\n var top = e.clientY - $(this).offset().top + $win.scrollTop();\r\n if(top < 0)top = 0;\r\n if(top > this.offsetHeight) top = this.offsetHeight; \r\n var h = top/180*360;\r\n _h = h;\r\n change(h, _s, _b, _a); \r\n e.preventDefault();\r\n slider.trigger('mousedown', e);\r\n });\r\n \r\n //中间小圆点颜色选择\r\n choose.on('mousedown', function(e, triggerEvent){\r\n var oldtop = this.offsetTop;\r\n var oldleft = this.offsetLeft;\r\n var oldy = e.clientY === undefined ? triggerEvent.clientY : e.clientY;\r\n var oldx = e.clientX === undefined ? triggerEvent.clientX : e.clientX;\r\n var move = function(e){\r\n var top = oldtop + (e.clientY - oldy)\r\n ,left = oldleft + (e.clientX - oldx)\r\n ,maxh = basis[0].offsetHeight\r\n ,maxw = basis[0].offsetWidth;\r\n if(top < 0)top = 0;\r\n if(top > maxh)top = maxh;\r\n if(left < 0)left = 0;\r\n if(left > maxw)left = maxw;\r\n var s = left/260*100\r\n ,b = 100 - top/180*100;\r\n _b = b;\r\n _s = s;\r\n change(_h, s, b, _a); \r\n e.preventDefault();\r\n };\r\n layui.stope(e);\r\n createMoveElem(move);\r\n e.preventDefault();\r\n });\r\n \r\n basis.on('mousedown', function(e){\r\n var top = e.clientY - $(this).offset().top + $win.scrollTop()\r\n ,left = e.clientX - $(this).offset().left + $win.scrollLeft()\r\n if(top < 0)top = 0;\r\n if(top > this.offsetHeight)top = this.offsetHeight;\r\n if(left < 0)left = 0;\r\n if(left > this.offsetWidth)left = this.offsetWidth;\r\n var s = left/260*100\r\n ,b = 100 - top/180*100;\r\n _b = b;\r\n _s = s;\r\n change(_h, s, b, _a); \r\n layui.stope(e);\r\n e.preventDefault();\r\n choose.trigger('mousedown', e);\r\n });\r\n \r\n //底部透明度选择\r\n alphaslider.on('mousedown', function(e, triggerEvent){\r\n var oldleft = this.offsetLeft;\r\n var oldx = e.clientX === undefined ? triggerEvent.clientX : e.clientX;\r\n var move = function(e){\r\n var left = oldleft + (e.clientX - oldx)\r\n ,maxw = alphacolor[0].offsetWidth;\r\n if(left < 0)left = 0;\r\n if(left > maxw)left = maxw;\r\n var a = Math.round(left /280*100) /100;\r\n _a = a;\r\n change(_h, _s, _b, a); \r\n e.preventDefault();\r\n };\r\n \r\n layui.stope(e);\r\n createMoveElem(move);\r\n e.preventDefault();\r\n });\r\n alphacolor.on('mousedown', function(e){\r\n var left = e.clientX - $(this).offset().left\r\n if(left < 0)left = 0;\r\n if(left > this.offsetWidth)left = this.offsetWidth;\r\n var a = Math.round(left /280*100) /100;\r\n _a = a;\r\n change(_h, _s, _b, a); \r\n e.preventDefault();\r\n alphaslider.trigger('mousedown', e);\r\n });\r\n \r\n //预定义颜色选择\r\n pre.each(function(){\r\n $(this).on('click', function(){\r\n $(this).parent('.layui-colorpicker-pre').addClass('selected').siblings().removeClass('selected');\r\n var color = this.style.backgroundColor\r\n ,hsb = RGBToHSB(RGBSTo(color))\r\n ,a = color.slice(color.lastIndexOf(\",\") + 1, color.length - 1),left;\r\n _h = hsb.h;\r\n _s = hsb.s;\r\n _b = hsb.b;\r\n if((color.match(/[0-9]{1,3}/g) || []).length === 3) a = 1;\r\n _a = a;\r\n left = a * 280;\r\n change(hsb.h, hsb.s, hsb.b, a);\r\n })\r\n });\r\n\r\n if(!lay.touchEventsSupported()) return;\r\n // 触摸事件模拟\r\n layui.each([\r\n {elem: side, eventType: 'mousedown'},\r\n {elem: alphacolor, eventType: 'mousedown'},\r\n {elem: basis, eventType: 'mousedown'}\r\n ], function(i, obj){\r\n lay.touchSwipe(obj.elem, {\r\n onTouchMove: function(e){\r\n touchHandler(e, obj.eventType)\r\n }\r\n })\r\n })\r\n\r\n function touchHandler(event, eventType) {\r\n var pointer = event.touches[0];\r\n var simulatedEvent = document.createEvent(\"MouseEvent\");\r\n\r\n simulatedEvent.initMouseEvent(eventType, \r\n true, true, window, 1, \r\n pointer.screenX, pointer.screenY,pointer.clientX, pointer.clientY, \r\n false, false, false, false, 0, null\r\n );\r\n pointer.target.dispatchEvent(simulatedEvent);\r\n }\r\n };\r\n\r\n //颜色选择器hsb转换\r\n Class.prototype.select = function(h, s, b, type){\r\n var that = this;\r\n var options = that.config;\r\n var hex = HSBToHEX({h:h, s:100, b:100});\r\n var color = HSBToHEX({h:h, s:s, b:b});\r\n var sidetop = h/360*180;\r\n var top = 180 - b/100*180;\r\n var left = s/100*260;\r\n var basisElem = that.elemPicker.find('.' + PICKER_BASIS)[0];\r\n \r\n that.elemPicker.find('.' + PICKER_SIDE_SLIDER).css(\"top\", sidetop); //滑块的top\r\n basisElem.style.background = '#' + hex; //颜色选择器的背景\r\n \r\n //选择器的top left\r\n that.elemPicker.find('.' + PICKER_BASIS_CUR).css({\r\n \"top\": top / basisElem.offsetHeight * 100 + '%',\r\n \"left\": left / basisElem.offsetWidth * 100 + '%' \r\n });\r\n \r\n // if(type === 'change') return;\r\n\r\n // 选中的颜色\r\n // that.elemPicker.find('.' + PICKER_INPUT).find('input').val('#'+ color);\r\n };\r\n \r\n Class.prototype.pickerEvents = function(){\r\n var that = this\r\n ,options = that.config\r\n \r\n ,elemColorBoxSpan = that.elemColorBox.find('.' + PICKER_TRIG_SPAN) //颜色盒子\r\n ,elemPickerInput = that.elemPicker.find('.' + PICKER_INPUT + ' input') //颜色选择器表单\r\n \r\n ,pickerEvents = {\r\n //清空\r\n clear: function(othis){\r\n elemColorBoxSpan[0].style.background ='';\r\n that.elemColorBox.find('.' + PICKER_TRIG_I).removeClass(ICON_PICKER_DOWN).addClass(ICON_PICKER_CLOSE);\r\n that.color = '';\r\n \r\n options.done && options.done('');\r\n that.removePicker();\r\n }\r\n \r\n //确认\r\n ,confirm: function(othis, change){\r\n var value = $.trim(elemPickerInput.val())\r\n ,colorValue\r\n ,hsb;\r\n \r\n if(value.indexOf(',') > -1){\r\n hsb = RGBToHSB(RGBSTo(value));\r\n that.select(hsb.h, hsb.s, hsb.b);\r\n elemColorBoxSpan[0].style.background = (colorValue = '#' + HSBToHEX(hsb)); \r\n \r\n if((value.match(/[0-9]{1,3}/g) || []).length > 3 && elemColorBoxSpan.attr('lay-type') === 'rgba'){\r\n var left = value.slice(value.lastIndexOf(\",\") + 1, value.length - 1) * 280;\r\n that.elemPicker.find('.' + PICKER_ALPHA_SLIDER).css(\"left\", left);\r\n elemColorBoxSpan[0].style.background = value;\r\n colorValue = value;\r\n }\r\n } else {\r\n hsb = HEXToHSB(value);\r\n elemColorBoxSpan[0].style.background = (colorValue = '#' + HSBToHEX(hsb)); \r\n that.elemColorBox.find('.' + PICKER_TRIG_I).removeClass(ICON_PICKER_CLOSE).addClass(ICON_PICKER_DOWN);\r\n }\r\n \r\n if(change === 'change'){\r\n that.select(hsb.h, hsb.s, hsb.b, change);\r\n options.change && options.change(colorValue);\r\n return;\r\n }\r\n that.color = value;\r\n \r\n options.done && options.done(value);\r\n that.removePicker(); \r\n }\r\n };\r\n \r\n //选择器面板点击事件\r\n that.elemPicker.on('click', '*[colorpicker-events]', function(){\r\n var othis = $(this)\r\n ,attrEvent = othis.attr('colorpicker-events');\r\n pickerEvents[attrEvent] && pickerEvents[attrEvent].call(this, othis);\r\n });\r\n \r\n //输入框事件\r\n elemPickerInput.on('keyup', function(e){\r\n var othis = $(this);\r\n pickerEvents.confirm.call(this, othis, e.keyCode === 13 ? null : 'change');\r\n });\r\n }\r\n\r\n // 颜色选择器输入\r\n Class.prototype.events = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 弹出颜色选择器\r\n that.elemColorBox.on('click' , function(){\r\n that.renderPicker();\r\n if($(ELEM_MAIN)[0]){\r\n that.val();\r\n that.side();\r\n }\r\n });\r\n };\r\n\r\n //全局事件\r\n (function(){\r\n //绑定关闭控件事件\r\n $doc.on(clickOrMousedown, function(e){\r\n if(!colorpicker.thisId) return;\r\n var that = thisModule.getThis(colorpicker.thisId);\r\n if(!that) return;\r\n\r\n var options = that.config;\r\n var elemColorBoxSpan = that.elemColorBox.find('.' + PICKER_TRIG_SPAN);\r\n\r\n //如果点击的元素是颜色框\r\n if($(e.target).hasClass(ELEM) \r\n || $(e.target).parents('.'+ELEM)[0]\r\n ) return; \r\n \r\n //如果点击的元素是选择器\r\n if($(e.target).hasClass(ELEM_MAIN.replace(/\\./g, '')) \r\n || $(e.target).parents(ELEM_MAIN)[0]\r\n ) return; \r\n \r\n if(!that.elemPicker) return;\r\n \r\n if(that.color){\r\n var hsb = RGBToHSB(RGBSTo(that.color));\r\n that.select(hsb.h, hsb.s, hsb.b); \r\n } else {\r\n that.elemColorBox.find('.' + PICKER_TRIG_I).removeClass(ICON_PICKER_DOWN).addClass(ICON_PICKER_CLOSE);\r\n }\r\n elemColorBoxSpan[0].style.background = that.color || '';\r\n \r\n // 取消选择的回调\r\n typeof options.cancel === 'function' && options.cancel(that.color);\r\n\r\n // 移除面板\r\n that.removePicker();\r\n });\r\n\r\n //自适应定位\r\n $win.on('resize', function(){\r\n if(!colorpicker.thisId) return;\r\n var that = thisModule.getThis(colorpicker.thisId);\r\n if(!that) return;\r\n\r\n if(!that.elemPicker || !$(ELEM_MAIN)[0]){\r\n return false;\r\n }\r\n that.position();\r\n });\r\n })();\r\n\r\n // 记录所有实例\r\n thisModule.that = {}; // 记录所有实例对象\r\n \r\n // 获取当前实例对象\r\n thisModule.getThis = function(id){\r\n var that = thisModule.that[id];\r\n if(!that) hint.error(id ? (MOD_NAME +' instance with ID \\''+ id +'\\' not found') : 'ID argument required');\r\n return that;\r\n };\r\n \r\n //核心入口\r\n colorpicker.render = function(options){\r\n var inst = new Class(options);\r\n return thisModule.call(inst);\r\n };\r\n \r\n exports(MOD_NAME, colorpicker);\r\n});\r\n","/**\r\n * element\r\n * 常用元素操作组件\r\n */\r\n \r\nlayui.define('jquery', function(exports){\r\n 'use strict';\r\n \r\n var $ = layui.$;\r\n var hint = layui.hint();\r\n var device = layui.device();\r\n \r\n var MOD_NAME = 'element';\r\n var THIS = 'layui-this';\r\n var SHOW = 'layui-show';\r\n var TITLE = '.layui-tab-title';\r\n \r\n var Element = function(){\r\n this.config = {};\r\n };\r\n \r\n // 全局设置\r\n Element.prototype.set = function(options){\r\n var that = this;\r\n $.extend(true, that.config, options);\r\n return that;\r\n };\r\n \r\n // 表单事件\r\n Element.prototype.on = function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n };\r\n \r\n // 外部 Tab 新增\r\n Element.prototype.tabAdd = function(filter, options){\r\n var tabElem = $('.layui-tab[lay-filter='+ filter +']');\r\n var titElem = tabElem.children(TITLE);\r\n var barElem = titElem.children('.layui-tab-bar');\r\n var contElem = tabElem.children('.layui-tab-content');\r\n var li = ' 0) layAttr.unshift(''); //向前插,预留空格\r\n return layAttr.join(' ');\r\n }() +'>'+ (options.title || 'unnaming') +'';\r\n \r\n barElem[0] ? barElem.before(li) : titElem.append(li);\r\n contElem.append('
                          '+ (options.content || '') +'
                          ');\r\n // call.hideTabMore(true);\r\n // 是否添加即切换\r\n options.change && this.tabChange(filter, options.id);\r\n titElem.data('LAY_TAB_CHANGE', options.change);\r\n call.tabAuto(options.change ? 'change' : null);\r\n return this;\r\n };\r\n \r\n // 外部 Tab 删除\r\n Element.prototype.tabDelete = function(filter, layid){\r\n var tabElem = $('.layui-tab[lay-filter='+ filter +']');\r\n var titElem = tabElem.children(TITLE);\r\n var liElem = titElem.find('>li[lay-id=\"'+ layid +'\"]');\r\n call.tabDelete(null, liElem);\r\n return this;\r\n };\r\n \r\n // 外部 Tab 切换\r\n Element.prototype.tabChange = function(filter, layid){\r\n var tabElem = $('.layui-tab[lay-filter='+ filter +']');\r\n var titElem = tabElem.children(TITLE);\r\n var liElem = titElem.find('>li[lay-id=\"'+ layid +'\"]');\r\n\r\n call.tabClick.call(liElem[0], {\r\n liElem: liElem\r\n });\r\n return this;\r\n };\r\n \r\n // 自定义 Tab 选项卡\r\n Element.prototype.tab = function(options){\r\n options = options || {};\r\n dom.on('click', options.headerElem, function(e){\r\n var index = $(options.headerElem).index($(this));\r\n call.tabClick.call(this, {\r\n index: index,\r\n options: options\r\n });\r\n });\r\n };\r\n \r\n \r\n // 动态改变进度条\r\n Element.prototype.progress = function(filter, percent){\r\n var ELEM = 'layui-progress';\r\n var elem = $('.'+ ELEM +'[lay-filter='+ filter +']');\r\n var elemBar = elem.find('.'+ ELEM +'-bar');\r\n var text = elemBar.find('.'+ ELEM +'-text');\r\n\r\n elemBar.css('width', function(){\r\n return /^.+\\/.+$/.test(percent) \r\n ? (new Function('return '+ percent)() * 100) + '%'\r\n : percent;\r\n }).attr('lay-percent', percent);\r\n text.text(percent);\r\n return this;\r\n };\r\n \r\n var NAV_ELEM = '.layui-nav';\r\n var NAV_ITEM = 'layui-nav-item';\r\n var NAV_BAR = 'layui-nav-bar';\r\n var NAV_TREE = 'layui-nav-tree';\r\n var NAV_CHILD = 'layui-nav-child';\r\n var NAV_CHILD_C = 'layui-nav-child-c';\r\n var NAV_MORE = 'layui-nav-more';\r\n var NAV_DOWN = 'layui-icon-down';\r\n var NAV_ANIM = 'layui-anim layui-anim-upbit';\r\n \r\n // 基础事件体\r\n var call = {\r\n // Tab 点击\r\n tabClick: function(obj){\r\n obj = obj || {};\r\n var options = obj.options || {};\r\n var othis = obj.liElem || $(this);\r\n var parents = options.headerElem \r\n ? othis.parent() \r\n : othis.parents('.layui-tab').eq(0);\r\n var item = options.bodyElem \r\n ? $(options.bodyElem) \r\n : parents.children('.layui-tab-content').children('.layui-tab-item');\r\n var elemA = othis.find('a');\r\n var isJump = elemA.attr('href') !== 'javascript:;' && elemA.attr('target') === '_blank'; // 是否存在跳转\r\n var unselect = typeof othis.attr('lay-unselect') === 'string'; // 是否禁用选中\r\n var filter = parents.attr('lay-filter');\r\n var hasId = othis.attr('lay-id');\r\n\r\n // 下标\r\n var index = 'index' in obj \r\n ? obj.index \r\n : othis.parent().children('li').index(othis);\r\n \r\n // 执行切换\r\n if(!(isJump || unselect)){\r\n othis.addClass(THIS).siblings().removeClass(THIS);\r\n if(hasId){\r\n var contentElem = item.filter('[lay-id=\"' + hasId + '\"]');\r\n contentElem = contentElem.length ? contentElem : item.eq(index);\r\n contentElem.addClass(SHOW).siblings().removeClass(SHOW);\r\n }else{\r\n item.eq(index).addClass(SHOW).siblings().removeClass(SHOW);\r\n }\r\n }\r\n \r\n layui.event.call(this, MOD_NAME, 'tab('+ filter +')', {\r\n elem: parents,\r\n index: index,\r\n id: hasId\r\n });\r\n }\r\n \r\n // Tab 删除\r\n ,tabDelete: function(e, othis){\r\n var li = othis || $(this).parent();\r\n var index = li.parent().children('li').index(li);\r\n var tabElem = li.closest('.layui-tab');\r\n var item = tabElem.children('.layui-tab-content').children('.layui-tab-item');\r\n var filter = tabElem.attr('lay-filter');\r\n var hasId = li.attr('lay-id');\r\n\r\n var shouldClose = layui.event.call(li[0], MOD_NAME, 'tabBeforeDelete('+ filter +')', {\r\n elem: tabElem,\r\n index: index,\r\n id: hasId\r\n });\r\n if(shouldClose === false) return;\r\n \r\n if(li.hasClass(THIS)){\r\n if (li.next()[0] && li.next().is('li')){\r\n call.tabClick.call(li.next()[0], {\r\n index: index + 1\r\n });\r\n } else if (li.prev()[0] && li.prev().is('li')){\r\n call.tabClick.call(li.prev()[0], null, index - 1);\r\n }\r\n }\r\n \r\n li.remove();\r\n if(hasId){\r\n var contentElem = item.filter('[lay-id=\"' + hasId + '\"]');\r\n contentElem = contentElem.length ? contentElem : item.eq(index)\r\n contentElem.remove()\r\n }else{\r\n item.eq(index).remove();\r\n }\r\n setTimeout(function(){\r\n call.tabAuto();\r\n }, 50);\r\n \r\n layui.event.call(this, MOD_NAME, 'tabDelete('+ filter +')', {\r\n elem: tabElem,\r\n index: index,\r\n id: hasId\r\n });\r\n }\r\n \r\n // Tab 自适应\r\n ,tabAuto: function(spread){\r\n var SCROLL = 'layui-tab-scroll';\r\n var MORE = 'layui-tab-more';\r\n var BAR = 'layui-tab-bar';\r\n var CLOSE = 'layui-tab-close';\r\n var that = this;\r\n \r\n $('.layui-tab').each(function(){\r\n var othis = $(this);\r\n var title = othis.children('.layui-tab-title');\r\n var item = othis.children('.layui-tab-content').children('.layui-tab-item');\r\n var STOPE = 'lay-stope=\"tabmore\"';\r\n var span = $('');\r\n\r\n if(that === window && device.ie != 8){\r\n // call.hideTabMore(true)\r\n }\r\n \r\n // 开启关闭图标\r\n var allowclose = othis.attr('lay-allowclose');\r\n if(allowclose && allowclose !== 'false'){\r\n title.find('li').each(function(){\r\n var li = $(this);\r\n if(!li.find('.'+CLOSE)[0] && li.attr('lay-allowclose') !== 'false'){\r\n var close = $('');\r\n close.on('click', call.tabDelete);\r\n li.append(close);\r\n }\r\n });\r\n }\r\n \r\n if(typeof othis.attr('lay-unauto') === 'string') return;\r\n \r\n // 响应式\r\n if(\r\n title.prop('scrollWidth') > title.outerWidth() + 1 || (\r\n title.find('li').length && title.height() > function(height){\r\n return height + height/2;\r\n }(title.find('li').eq(0).height())\r\n )\r\n ){\r\n // 若执行是来自于切换,则自动展开\r\n (\r\n spread === 'change' && title.data('LAY_TAB_CHANGE')\r\n ) && title.addClass(MORE);\r\n \r\n if(title.find('.'+BAR)[0]) return;\r\n title.append(span);\r\n othis.attr('overflow', '');\r\n\r\n // 展开图标事件\r\n span.on('click', function(e){\r\n var isSpread = title.hasClass(MORE);\r\n title[isSpread ? 'removeClass' : 'addClass'](MORE);\r\n });\r\n } else {\r\n title.find('.'+ BAR).remove();\r\n othis.removeAttr('overflow');\r\n }\r\n });\r\n }\r\n // 隐藏更多 Tab\r\n ,hideTabMore: function(e){\r\n var tsbTitle = $('.layui-tab-title');\r\n if(e === true || $(e.target).attr('lay-stope') !== 'tabmore'){\r\n tsbTitle.removeClass('layui-tab-more');\r\n tsbTitle.find('.layui-tab-bar').attr('title','');\r\n }\r\n }\r\n \r\n //点击一级菜单\r\n /*\r\n ,clickThis: function(){\r\n var othis = $(this), parents = othis.parents(NAV_ELEM)\r\n ,filter = parents.attr('lay-filter')\r\n ,elemA = othis.find('a')\r\n ,unselect = typeof othis.attr('lay-unselect') === 'string';\r\n\r\n if(othis.find('.'+NAV_CHILD)[0]) return;\r\n \r\n if(!(elemA.attr('href') !== 'javascript:;' && elemA.attr('target') === '_blank') && !unselect){\r\n parents.find('.'+THIS).removeClass(THIS);\r\n othis.addClass(THIS);\r\n }\r\n \r\n layui.event.call(this, MOD_NAME, 'nav('+ filter +')', othis);\r\n }\r\n )\r\n */\r\n \r\n // 点击菜单 - a 标签触发\r\n ,clickThis: function() {\r\n var othis = $(this);\r\n var parents = othis.closest(NAV_ELEM);\r\n var filter = parents.attr('lay-filter');\r\n var parent = othis.parent() ;\r\n var child = othis.siblings('.'+ NAV_CHILD);\r\n var unselect = typeof parent.attr('lay-unselect') === 'string'; // 是否禁用选中\r\n \r\n // 满足点击选中的条件\r\n if (!(othis.attr('href') !== 'javascript:;' && othis.attr('target') === '_blank') && !unselect) {\r\n if (!child[0]) {\r\n parents.find('.'+ THIS).removeClass(THIS);\r\n parent.addClass(THIS);\r\n }\r\n }\r\n \r\n // 若为垂直菜单\r\n if (parents.hasClass(NAV_TREE)) {\r\n var NAV_ITEMED = NAV_ITEM + 'ed'; // 用于标注展开状态\r\n var needExpand = !parent.hasClass(NAV_ITEMED); // 是否执行展开\r\n var ANIM_MS = 200; // 动画过渡毫秒数\r\n\r\n // 动画执行完成后的操作\r\n var complete = function() {\r\n $(this).css({\r\n \"display\": \"\" // 剔除动画生成的 style display,以适配外部样式的状态重置\r\n });\r\n // 避免导航滑块错位\r\n parents.children('.'+ NAV_BAR).css({\r\n opacity: 0\r\n })\r\n };\r\n\r\n // 是否正处于动画中的状态\r\n if (child.is(':animated')) return;\r\n\r\n // 剔除可能存在的 CSS3 动画类\r\n child.removeClass(NAV_ANIM);\r\n\r\n // 若有子菜单,则对其执行展开或收缩\r\n if (child[0]) {\r\n if (needExpand) {\r\n // 先执行 slideDown 动画,再标注展开状态样式,避免元素 `block` 状态导致动画无效\r\n child.slideDown(ANIM_MS, complete);\r\n parent.addClass(NAV_ITEMED);\r\n } else {\r\n // 先取消展开状态样式,再将元素临时显示,避免 `none` 状态导致 slideUp 动画无效\r\n parent.removeClass(NAV_ITEMED);\r\n child.show().slideUp(ANIM_MS, complete);\r\n }\r\n\r\n // 手风琴 --- 收缩兄弟展开项\r\n if (typeof parents.attr('lay-accordion') === 'string' || parents.attr('lay-shrink') === 'all') {\r\n var parentSibs = parent.siblings('.'+ NAV_ITEMED);\r\n parentSibs.removeClass(NAV_ITEMED);\r\n parentSibs.children('.'+ NAV_CHILD).show().stop().slideUp(ANIM_MS, complete);\r\n }\r\n }\r\n }\r\n \r\n layui.event.call(this, MOD_NAME, 'nav('+ filter +')', othis);\r\n }\r\n \r\n // 折叠面板\r\n ,collapse: function(){\r\n var othis = $(this);\r\n var icon = othis.find('.layui-colla-icon');\r\n var elemCont = othis.siblings('.layui-colla-content');\r\n var parents = othis.parents('.layui-collapse').eq(0);\r\n var filter = parents.attr('lay-filter');\r\n var isNone = elemCont.css('display') === 'none';\r\n \r\n // 是否手风琴\r\n if(typeof parents.attr('lay-accordion') === 'string'){\r\n var show = parents.children('.layui-colla-item').children('.'+SHOW);\r\n show.siblings('.layui-colla-title').children('.layui-colla-icon').html('');\r\n show.removeClass(SHOW);\r\n }\r\n \r\n elemCont[isNone ? 'addClass' : 'removeClass'](SHOW);\r\n icon.html(isNone ? '' : '');\r\n \r\n layui.event.call(this, MOD_NAME, 'collapse('+ filter +')', {\r\n title: othis\r\n ,content: elemCont\r\n ,show: isNone\r\n });\r\n }\r\n };\r\n \r\n // 初始化元素操作\r\n Element.prototype.init = function(type, filter){\r\n var that = this, elemFilter = function(){\r\n return filter ? ('[lay-filter=\"' + filter +'\"]') : '';\r\n }(), items = {\r\n \r\n // Tab 选项卡\r\n tab: function(){\r\n call.tabAuto.call({});\r\n }\r\n \r\n // 导航菜单\r\n ,nav: function(){\r\n var TIME = 200;\r\n var timer = {};\r\n var timerMore = {};\r\n var timeEnd = {};\r\n var NAV_TITLE = 'layui-nav-title';\r\n \r\n // 滑块跟随\r\n var follow = function(bar, nav, index) {\r\n var othis = $(this);\r\n var child = othis.find('.'+NAV_CHILD);\r\n\r\n // 是否垂直导航菜单\r\n if (nav.hasClass(NAV_TREE)) {\r\n // 无子菜单时跟随\r\n if (!child[0]) {\r\n var thisA = othis.children('.'+ NAV_TITLE);\r\n bar.css({\r\n top: othis.offset().top - nav.offset().top,\r\n height: (thisA[0] ? thisA : othis).outerHeight(),\r\n opacity: 1\r\n });\r\n }\r\n } else {\r\n child.addClass(NAV_ANIM);\r\n \r\n // 若居中对齐\r\n if (child.hasClass(NAV_CHILD_C)) {\r\n child.css({\r\n left: -(child.outerWidth() - othis.width()) / 2\r\n });\r\n }\r\n \r\n // 滑块定位\r\n if (child[0]) { // 若有子菜单,则滑块消失\r\n bar.css({\r\n left: bar.position().left + bar.width() / 2,\r\n width: 0,\r\n opacity: 0\r\n });\r\n } else { // bar 跟随\r\n bar.css({\r\n left: othis.position().left + parseFloat(othis.css('marginLeft')),\r\n top: othis.position().top + othis.height() - bar.height()\r\n });\r\n }\r\n \r\n // 渐显滑块并适配宽度\r\n timer[index] = setTimeout(function() {\r\n bar.css({\r\n width: child[0] ? 0 : othis.width(),\r\n opacity: child[0] ? 0 : 1\r\n });\r\n }, device.ie && device.ie < 10 ? 0 : TIME);\r\n \r\n // 显示子菜单\r\n clearTimeout(timeEnd[index]);\r\n if (child.css('display') === 'block') {\r\n clearTimeout(timerMore[index]);\r\n }\r\n timerMore[index] = setTimeout(function(){\r\n child.addClass(SHOW);\r\n othis.find('.'+NAV_MORE).addClass(NAV_MORE+'d');\r\n }, 300);\r\n }\r\n };\r\n \r\n // 遍历导航\r\n $(NAV_ELEM + elemFilter).each(function(index) {\r\n var othis = $(this);\r\n var bar = $('');\r\n var itemElem = othis.find('.'+NAV_ITEM);\r\n \r\n // hover 滑动效果\r\n if (!othis.find('.'+NAV_BAR)[0]) {\r\n othis.append(bar);\r\n ( othis.hasClass(NAV_TREE)\r\n ? itemElem.find('dd,>.'+ NAV_TITLE) \r\n : itemElem\r\n ).on('mouseenter', function() {\r\n follow.call(this, bar, othis, index);\r\n }).on('mouseleave', function() { // 鼠标移出\r\n // 是否为垂直导航\r\n if (othis.hasClass(NAV_TREE)) {\r\n bar.css({\r\n height: 0,\r\n opacity: 0\r\n });\r\n } else {\r\n // 隐藏子菜单\r\n clearTimeout(timerMore[index]);\r\n timerMore[index] = setTimeout(function(){\r\n othis.find('.'+ NAV_CHILD).removeClass(SHOW);\r\n othis.find('.'+ NAV_MORE).removeClass(NAV_MORE +'d');\r\n }, 300);\r\n }\r\n });\r\n\r\n // 鼠标离开当前菜单时\r\n othis.on('mouseleave', function() {\r\n clearTimeout(timer[index])\r\n timeEnd[index] = setTimeout(function() {\r\n if (!othis.hasClass(NAV_TREE)) {\r\n bar.css({\r\n width: 0,\r\n left: bar.position().left + bar.width() / 2,\r\n opacity: 0\r\n });\r\n }\r\n }, TIME);\r\n });\r\n }\r\n \r\n // 展开子菜单\r\n itemElem.find('a').each(function() {\r\n var thisA = $(this);\r\n var parent = thisA.parent();\r\n var child = thisA.siblings('.'+ NAV_CHILD);\r\n \r\n // 输出小箭头\r\n if (child[0] && !thisA.children('.'+ NAV_MORE)[0]) {\r\n thisA.append('');\r\n }\r\n \r\n thisA.off('click', call.clickThis).on('click', call.clickThis); // 点击菜单\r\n });\r\n });\r\n }\r\n \r\n //面包屑\r\n ,breadcrumb: function(){\r\n var ELEM = '.layui-breadcrumb';\r\n \r\n $(ELEM + elemFilter).each(function(){\r\n var othis = $(this)\r\n ,ATTE_SPR = 'lay-separator'\r\n ,separator = othis.attr(ATTE_SPR) || '/'\r\n ,aNode = othis.find('a');\r\n if(aNode.next('span['+ ATTE_SPR +']')[0]) return;\r\n aNode.each(function(index){\r\n if(index === aNode.length - 1) return;\r\n $(this).after(''+ separator +'');\r\n });\r\n othis.css('visibility', 'visible');\r\n });\r\n }\r\n \r\n //进度条\r\n ,progress: function(){\r\n var ELEM = 'layui-progress';\r\n $('.' + ELEM + elemFilter).each(function(){\r\n var othis = $(this)\r\n ,elemBar = othis.find('.layui-progress-bar')\r\n ,percent = elemBar.attr('lay-percent');\r\n\r\n elemBar.css('width', function(){\r\n return /^.+\\/.+$/.test(percent) \r\n ? (new Function('return '+ percent)() * 100) + '%'\r\n : percent;\r\n });\r\n \r\n if(othis.attr('lay-showpercent')){\r\n setTimeout(function(){\r\n elemBar.html(''+ percent +'');\r\n },350);\r\n }\r\n });\r\n }\r\n \r\n //折叠面板\r\n ,collapse: function(){\r\n var ELEM = 'layui-collapse';\r\n \r\n $('.' + ELEM + elemFilter).each(function(){\r\n var elemItem = $(this).find('.layui-colla-item')\r\n elemItem.each(function(){\r\n var othis = $(this)\r\n ,elemTitle = othis.find('.layui-colla-title')\r\n ,elemCont = othis.find('.layui-colla-content')\r\n ,isNone = elemCont.css('display') === 'none';\r\n \r\n //初始状态\r\n elemTitle.find('.layui-colla-icon').remove();\r\n elemTitle.append(''+ (isNone ? '' : '') +'');\r\n\r\n //点击标题\r\n elemTitle.off('click', call.collapse).on('click', call.collapse);\r\n }); \r\n \r\n });\r\n }\r\n };\r\n\r\n return items[type] ? items[type]() : layui.each(items, function(index, item){\r\n item();\r\n });\r\n };\r\n \r\n Element.prototype.render = Element.prototype.init;\r\n\r\n var element = new Element();\r\n var dom = $(document);\r\n \r\n $(function(){\r\n element.render();\r\n });\r\n\r\n dom.on('click', '.layui-tab-title li', call.tabClick); // Tab 切换\r\n // dom.on('click', call.hideTabMore); // 隐藏展开的 Tab\r\n $(window).on('resize', call.tabAuto); // 自适应\r\n \r\n exports(MOD_NAME, element);\r\n});\r\n\r\n","/**\r\n * upload\r\n * 上传组件\r\n */\r\n \r\nlayui.define(['lay', 'layer'], function(exports){\r\n \"use strict\";\r\n \r\n var $ = layui.$;\r\n var lay = layui.lay;\r\n var layer = layui.layer;\r\n var device = layui.device();\r\n\r\n // 模块名\r\n var MOD_NAME = 'upload';\r\n var MOD_INDEX = 'layui_'+ MOD_NAME +'_index'; // 模块索引名\r\n\r\n // 外部接口\r\n var upload = {\r\n config: {}, // 全局配置项\r\n index: layui[MOD_NAME] ? (layui[MOD_NAME].index + 10000) : 0, // 索引\r\n // 设置全局项\r\n set: function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n },\r\n // 事件\r\n on: function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n }\r\n };\r\n \r\n // 操作当前实例\r\n var thisModule = function(){\r\n var that = this;\r\n var options = that.config;\r\n var id = options.id;\r\n\r\n thisModule.that[id] = that; // 记录当前实例对象\r\n\r\n return {\r\n upload: function(files){\r\n that.upload.call(that, files);\r\n },\r\n reload: function(options){\r\n that.reload.call(that, options);\r\n },\r\n config: that.config\r\n }\r\n };\r\n \r\n // 字符常量\r\n var ELEM = 'layui-upload';\r\n var THIS = 'layui-this';\r\n var SHOW = 'layui-show';\r\n var HIDE = 'layui-hide';\r\n var DISABLED = 'layui-disabled';\r\n \r\n var ELEM_FILE = 'layui-upload-file';\r\n var ELEM_FORM = 'layui-upload-form';\r\n var ELEM_IFRAME = 'layui-upload-iframe';\r\n var ELEM_CHOOSE = 'layui-upload-choose';\r\n var ELEM_DRAG = 'layui-upload-drag';\r\n var UPLOADING = 'UPLOADING';\r\n \r\n // 构造器\r\n var Class = function(options){\r\n var that = this;\r\n that.index = ++upload.index;\r\n that.config = $.extend({}, that.config, upload.config, options);\r\n that.render();\r\n };\r\n \r\n // 默认配置\r\n Class.prototype.config = {\r\n accept: 'images', // 允许上传的文件类型:images/file/video/audio\r\n exts: '', // 允许上传的文件后缀名\r\n auto: true, // 是否选完文件后自动上传\r\n bindAction: '', // 手动上传触发的元素\r\n url: '', // 上传地址\r\n force: '', // 强制规定返回的数据格式,目前只支持是否强制 json\r\n field: 'file', // 文件字段名\r\n acceptMime: '', // 筛选出的文件类型,默认为所有文件\r\n method: 'post', // 请求上传的 http 类型\r\n data: {}, // 请求上传的额外参数\r\n drag: true, // 是否允许拖拽上传\r\n size: 0, // 文件限制大小,默认不限制\r\n number: 0, // 允许同时上传的文件数,默认不限制\r\n multiple: false, // 是否允许多文件上传,不支持 ie8-9\r\n text: { // 自定义提示文本\r\n \"cross-domain\": \"Cross-domain requests are not supported\", // 跨域\r\n \"data-format-error\": \"Please return JSON data format\", // 数据格式错误\r\n \"check-error\": \"\", // 文件格式校验失败\r\n \"error\": \"\", // 上传失败\r\n \"limit-number\": null, // 限制 number 属性的提示 --- function\r\n \"limit-size\": null // 限制 size 属性的提示 --- function\r\n }\r\n };\r\n\r\n // 重载实例\r\n Class.prototype.reload = function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n that.render(true);\r\n };\r\n \r\n // 初始渲染\r\n Class.prototype.render = function(rerender){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 若 elem 非唯一\r\n var elem = $(options.elem);\r\n if (elem.length > 1) {\r\n layui.each(elem, function() {\r\n upload.render($.extend({}, options, {\r\n elem: this\r\n }));\r\n });\r\n return that;\r\n }\r\n\r\n // 合并 lay-options 属性上的配置信息\r\n $.extend(options, lay.options(elem[0], {\r\n attr: elem.attr('lay-data') ? 'lay-data' : null // 兼容旧版的 lay-data 属性\r\n }));\r\n\r\n // 若重复执行 render,则视为 reload 处理\r\n if (!rerender && elem[0] && elem.data(MOD_INDEX)) {\r\n var newThat = thisModule.getThis(elem.data(MOD_INDEX));\r\n if(!newThat) return;\r\n\r\n return newThat.reload(options);\r\n }\r\n\r\n options.elem = $(options.elem);\r\n options.bindAction = $(options.bindAction);\r\n\r\n // 初始化 id 属性 - 优先取 options > 元素 id > 自增索引\r\n options.id = 'id' in options ? options.id : (\r\n elem.attr('id') || that.index\r\n );\r\n\r\n that.file();\r\n that.events();\r\n };\r\n \r\n //追加文件域\r\n Class.prototype.file = function(){\r\n var that = this;\r\n var options = that.config;\r\n var elemFile = that.elemFile = $([\r\n ''\r\n ].join(''));\r\n var next = options.elem.next();\r\n \r\n if(next.hasClass(ELEM_FILE) || next.hasClass(ELEM_FORM)){\r\n next.remove();\r\n }\r\n \r\n //包裹ie8/9容器\r\n if(device.ie && device.ie < 10){\r\n options.elem.wrap('
                          ');\r\n }\r\n \r\n that.isFile() ? (\r\n that.elemFile = options.elem,\r\n options.field = options.elem[0].name\r\n ) : options.elem.after(elemFile);\r\n \r\n //初始化ie8/9的Form域\r\n if(device.ie && device.ie < 10){\r\n that.initIE();\r\n }\r\n };\r\n \r\n //ie8-9初始化\r\n Class.prototype.initIE = function(){\r\n var that = this;\r\n var options = that.config;\r\n var iframe = $('');\r\n var elemForm = $(['
                          '\r\n ,''].join(''));\r\n \r\n //插入iframe \r\n $('#'+ ELEM_IFRAME)[0] || $('body').append(iframe);\r\n\r\n //包裹文件域\r\n if(!options.elem.next().hasClass(ELEM_FORM)){\r\n that.elemFile.wrap(elemForm); \r\n \r\n //追加额外的参数\r\n options.elem.next('.'+ ELEM_FORM).append(function(){\r\n var arr = [];\r\n layui.each(options.data, function(key, value){\r\n value = typeof value === 'function' ? value() : value;\r\n arr.push('')\r\n });\r\n return arr.join('');\r\n }());\r\n }\r\n };\r\n \r\n //异常提示\r\n Class.prototype.msg = function(content){\r\n return layer.msg(content, {\r\n icon: 2,\r\n shift: 6\r\n });\r\n };\r\n \r\n //判断绑定元素是否为文件域本身\r\n Class.prototype.isFile = function(){\r\n var elem = this.config.elem[0];\r\n if(!elem) return;\r\n return elem.tagName.toLocaleLowerCase() === 'input' && elem.type === 'file'\r\n }\r\n \r\n //预读图片信息\r\n Class.prototype.preview = function(callback){\r\n var that = this;\r\n if(window.FileReader){\r\n layui.each(that.chooseFiles, function(index, file){\r\n var reader = new FileReader();\r\n reader.readAsDataURL(file); \r\n reader.onload = function(){\r\n callback && callback(index, file, this.result);\r\n }\r\n });\r\n }\r\n };\r\n \r\n // 执行上传\r\n Class.prototype.upload = function(files, type){\r\n var that = this;\r\n var options = that.config;\r\n var text = options.text || {};\r\n var elemFile = that.elemFile[0];\r\n\r\n // 获取文件队列\r\n var getFiles = function(){\r\n return files || that.files || that.chooseFiles || elemFile.files;\r\n };\r\n \r\n // 高级浏览器处理方式,支持跨域\r\n var ajaxSend = function(){\r\n var successful = 0;\r\n var failed = 0;\r\n var items = getFiles();\r\n\r\n // 多文件全部上传完毕的回调\r\n var allDone = function(){\r\n if(options.multiple && successful + failed === that.fileLength){\r\n typeof options.allDone === 'function' && options.allDone({\r\n total: that.fileLength,\r\n successful: successful,\r\n failed: failed\r\n });\r\n }\r\n };\r\n\r\n // 发送请求\r\n var request = function(sets){\r\n var formData = new FormData();\r\n\r\n // 恢复文件状态\r\n var resetFileState = function(file) {\r\n if (sets.unified) {\r\n layui.each(items, function(index, file){\r\n delete file[UPLOADING];\r\n });\r\n } else {\r\n delete file[UPLOADING];\r\n }\r\n };\r\n\r\n // 追加额外的参数\r\n layui.each(options.data, function(key, value){\r\n value = typeof value === 'function' \r\n ? sets.unified ? value() : value(sets.index, sets.file)\r\n : value;\r\n formData.append(key, value);\r\n });\r\n\r\n /*\r\n * 添加 file 到表单域\r\n */\r\n\r\n // 是否统一上传\r\n if (sets.unified) {\r\n layui.each(items, function(index, file){\r\n if (file[UPLOADING]) return;\r\n file[UPLOADING] = true; // 上传中的标记\r\n formData.append(options.field, file);\r\n });\r\n } else { // 逐一上传\r\n if (sets.file[UPLOADING]) return;\r\n formData.append(options.field, sets.file);\r\n sets.file[UPLOADING] = true; // 上传中的标记\r\n }\r\n\r\n // ajax 参数\r\n var opts = {\r\n url: options.url,\r\n type: 'post', // 统一采用 post 上传\r\n data: formData,\r\n dataType: options.dataType || 'json',\r\n contentType: false,\r\n processData: false,\r\n headers: options.headers || {},\r\n success: function(res){ // 成功回调\r\n options.unified ? (successful += that.fileLength) : successful++;\r\n done(sets.index, res);\r\n allDone(sets.index);\r\n resetFileState(sets.file);\r\n },\r\n error: function(e){ // 异常回调\r\n options.unified ? (failed += that.fileLength) : failed++;\r\n that.msg(text['error'] || [\r\n 'Upload failed, please try again.',\r\n 'status: '+ (e.status || '') +' - '+ (e.statusText || 'error')\r\n ].join('
                          '));\r\n error(sets.index);\r\n allDone(sets.index);\r\n resetFileState(sets.file);\r\n }\r\n };\r\n\r\n // 进度条\r\n if(typeof options.progress === 'function'){\r\n opts.xhr = function(){\r\n var xhr = $.ajaxSettings.xhr();\r\n // 上传进度\r\n xhr.upload.addEventListener(\"progress\", function (obj) {\r\n if(obj.lengthComputable){\r\n var percent = Math.floor((obj.loaded/obj.total)* 100); // 百分比\r\n options.progress(percent, (options.item ? options.item[0] : options.elem[0]) , obj, sets.index);\r\n }\r\n });\r\n return xhr;\r\n }\r\n }\r\n $.ajax(opts);\r\n };\r\n\r\n // 多文件是否一起上传\r\n if(options.unified){\r\n request({\r\n unified: true,\r\n index: 0\r\n });\r\n } else {\r\n layui.each(items, function(index, file){\r\n request({\r\n index: index,\r\n file: file\r\n });\r\n });\r\n }\r\n };\r\n \r\n // 低版本 IE 处理方式,不支持跨域\r\n var iframeSend = function(){\r\n var iframe = $('#'+ ELEM_IFRAME);\r\n \r\n that.elemFile.parent().submit();\r\n\r\n // 获取响应信息\r\n clearInterval(Class.timer);\r\n Class.timer = setInterval(function() {\r\n var res, iframeBody = iframe.contents().find('body');\r\n try {\r\n res = iframeBody.text();\r\n } catch(e) {\r\n that.msg(text['cross-domain']); \r\n clearInterval(Class.timer);\r\n error();\r\n }\r\n if(res){\r\n clearInterval(Class.timer);\r\n iframeBody.html('');\r\n done(0, res);\r\n }\r\n }, 30); \r\n };\r\n \r\n // 统一回调\r\n var done = function(index, res){\r\n that.elemFile.next('.'+ ELEM_CHOOSE).remove();\r\n elemFile.value = '';\r\n \r\n if(options.force === 'json'){\r\n if(typeof res !== 'object'){\r\n try {\r\n res = JSON.parse(res);\r\n } catch(e){\r\n res = {};\r\n return that.msg(text['data-format-error']);\r\n }\r\n }\r\n }\r\n \r\n typeof options.done === 'function' && options.done(res, index || 0, function(files){\r\n that.upload(files);\r\n });\r\n };\r\n \r\n // 统一网络异常回调\r\n var error = function(index){\r\n if(options.auto){\r\n elemFile.value = '';\r\n }\r\n typeof options.error === 'function' && options.error(index || 0, function(files){\r\n that.upload(files);\r\n });\r\n };\r\n \r\n var check;\r\n var exts = options.exts;\r\n var value = function(){\r\n var arr = [];\r\n layui.each(files || that.chooseFiles, function(i, item){\r\n arr.push(item.name);\r\n });\r\n return arr;\r\n }();\r\n \r\n // 回调函数返回的参数\r\n var args = {\r\n // 预览\r\n preview: function(callback){\r\n that.preview(callback);\r\n },\r\n // 上传\r\n upload: function(index, file){\r\n var thisFile = {};\r\n thisFile[index] = file;\r\n that.upload(thisFile);\r\n },\r\n // 追加文件到队列\r\n pushFile: function(){\r\n that.files = that.files || {};\r\n layui.each(that.chooseFiles, function(index, item){\r\n that.files[index] = item;\r\n });\r\n return that.files;\r\n },\r\n // 重置文件\r\n resetFile: function(index, file, filename){\r\n var newFile = new File([file], filename);\r\n that.files = that.files || {};\r\n that.files[index] = newFile;\r\n },\r\n // 获取本次选取的文件\r\n getChooseFiles: function(){\r\n return that.chooseFiles;\r\n }\r\n };\r\n \r\n // 提交上传\r\n var send = function(){\r\n var ready = function(){\r\n // IE 兼容处理\r\n if(device.ie){\r\n return device.ie > 9 ? ajaxSend() : iframeSend();\r\n }\r\n ajaxSend();\r\n }\r\n // 上传前的回调 - 如果回调函数明确返回 false 或 Promise.reject,则停止上传\r\n if(typeof options.before === 'function'){\r\n upload.util.promiseLikeResolve(options.before(args))\r\n .then(function(result){\r\n if(result !== false){\r\n ready();\r\n }\r\n else{\r\n if(options.auto){\r\n elemFile.value = '';\r\n }\r\n }\r\n }, function(error){\r\n error !== undefined && layui.hint().error(error);\r\n })\r\n }else{\r\n ready();\r\n }\r\n };\r\n \r\n // 文件类型名称\r\n var typeName = ({\r\n file: '文件',\r\n images: '图片',\r\n video: '视频',\r\n audio: '音频'\r\n })[options.accept] || '文件';\r\n\r\n // 校验文件格式\r\n value = value.length === 0 \r\n ? ((elemFile.value.match(/[^\\/\\\\]+\\..+/g)||[]) || '')\r\n : value;\r\n \r\n // 若文件域值为空\r\n if (value.length === 0) return;\r\n \r\n // 根据文件类型校验\r\n switch(options.accept){\r\n case 'file': // 一般文件\r\n layui.each(value, function(i, item){\r\n if(exts && !RegExp('.\\\\.('+ exts +')$', 'i').test(escape(item))){\r\n return check = true;\r\n }\r\n });\r\n break;\r\n case 'video': // 视频文件\r\n layui.each(value, function(i, item){\r\n if(!RegExp('.\\\\.('+ (exts || 'avi|mp4|wma|rmvb|rm|flash|3gp|flv') +')$', 'i').test(escape(item))){\r\n return check = true;\r\n }\r\n });\r\n break;\r\n case 'audio': // 音频文件\r\n layui.each(value, function(i, item){\r\n if(!RegExp('.\\\\.('+ (exts || 'mp3|wav|mid') +')$', 'i').test(escape(item))){\r\n return check = true;\r\n }\r\n });\r\n break;\r\n default: // 图片文件\r\n layui.each(value, function(i, item){\r\n if(!RegExp('.\\\\.('+ (exts || 'jpg|png|gif|bmp|jpeg|svg|webp') +')$', 'i').test(escape(item))){\r\n return check = true;\r\n }\r\n });\r\n break;\r\n }\r\n \r\n // 校验失败提示\r\n if(check){\r\n that.msg(text['check-error'] || ('选择的'+ typeName +'中包含不支持的格式'));\r\n return elemFile.value = '';\r\n }\r\n\r\n // 选择文件的回调 \r\n if(type === 'choose' || options.auto){\r\n options.choose && options.choose(args);\r\n if(type === 'choose'){\r\n return;\r\n }\r\n }\r\n \r\n // 检验文件数量\r\n that.fileLength = function(){\r\n var length = 0;\r\n var items = getFiles();\r\n layui.each(items, function(){\r\n length++;\r\n });\r\n return length;\r\n }();\r\n \r\n if(options.number && that.fileLength > options.number){\r\n return that.msg(typeof text['limit-number'] === 'function' \r\n ? text['limit-number'](options, that.fileLength) \r\n : (\r\n '同时最多只能上传: '+ options.number + ' 个文件'\r\n +'
                          您当前已经选择了: '+ that.fileLength +' 个文件'\r\n ));\r\n }\r\n \r\n // 检验文件大小\r\n if(options.size > 0 && !(device.ie && device.ie < 10)){\r\n var limitSize;\r\n \r\n layui.each(getFiles(), function(index, file){\r\n if(file.size > 1024*options.size){\r\n var size = options.size/1024;\r\n size = size >= 1 ? (size.toFixed(2) + 'MB') : options.size + 'KB'\r\n elemFile.value = '';\r\n limitSize = size;\r\n }\r\n });\r\n if(limitSize) return that.msg(typeof text['limit-size'] === 'function' \r\n ? text['limit-size'](options, limitSize) \r\n : '文件大小不能超过 '+ limitSize);\r\n }\r\n\r\n send();\r\n };\r\n \r\n //事件处理\r\n Class.prototype.events = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n // 设置当前选择的文件队列\r\n var setChooseFile = function(files){\r\n that.chooseFiles = {};\r\n layui.each(files, function(i, item){\r\n var time = new Date().getTime();\r\n that.chooseFiles[time + '-' + i] = item;\r\n });\r\n };\r\n \r\n // 设置选择的文本\r\n var setChooseText = function(files, filename){\r\n var elemFile = that.elemFile;\r\n var item = options.item ? options.item : options.elem;\r\n var value = files.length > 1 \r\n ? files.length + '个文件' \r\n : ((files[0] || {}).name || (elemFile[0].value.match(/[^\\/\\\\]+\\..+/g)||[]) || '');\r\n \r\n if(elemFile.next().hasClass(ELEM_CHOOSE)){\r\n elemFile.next().remove();\r\n }\r\n that.upload(null, 'choose');\r\n if(that.isFile() || options.choose) return;\r\n elemFile.after(''+ value +'');\r\n };\r\n\r\n /**\r\n * 判断文件是否加入排队\r\n * @param {File} file\r\n * @return {boolean}\r\n */\r\n var checkFile = function (file) {\r\n var result = true;\r\n layui.each(that.files, function (index, item) {\r\n result = !(item.name === file.name);\r\n if(!result) return true;\r\n });\r\n return result;\r\n }\r\n\r\n /**\r\n * 扩展文件信息\r\n * @template {File | FileList} T\r\n * @param {T} obj\r\n * @return {T}\r\n */\r\n var extendInfo = function (obj) {\r\n\r\n var extInfo = function (file) {\r\n //文件扩展名\r\n file.ext = file.name.substr(file.name.lastIndexOf('.') + 1).toLowerCase();\r\n // 文件大小\r\n file.sizes = upload.util.parseSize(file.size);\r\n // 可以继续扩展\r\n }\r\n\r\n //FileList对象\r\n if (obj instanceof FileList) {\r\n layui.each(obj, function (index, item) {\r\n extInfo(item);\r\n });\r\n } else {\r\n extInfo(obj);\r\n }\r\n\r\n return obj;\r\n }\r\n \r\n /**\r\n * 检查获取文件\r\n * @param {FileList} files\r\n * @return {Array|FileList}\r\n */\r\n var getFiles = function (files) {\r\n files = files || [];\r\n if (!files.length) return [];\r\n if (!that.files) return extendInfo(files);\r\n var result = [];\r\n layui.each(files, function (index, item) {\r\n if (checkFile(item)) {\r\n result.push(extendInfo(item));\r\n }\r\n });\r\n return result;\r\n }\r\n\r\n // 点击上传容器\r\n options.elem.off('upload.start').on('upload.start', function(){\r\n var othis = $(this);\r\n\r\n that.config.item = othis;\r\n that.elemFile[0].click();\r\n });\r\n \r\n // 拖拽上传\r\n if(!(device.ie && device.ie < 10)){\r\n options.elem.off('upload.over').on('upload.over', function(){\r\n var othis = $(this)\r\n othis.attr('lay-over', '');\r\n })\r\n .off('upload.leave').on('upload.leave', function(){\r\n var othis = $(this)\r\n othis.removeAttr('lay-over');\r\n })\r\n .off('upload.drop').on('upload.drop', function(e, param){\r\n var othis = $(this);\r\n var files = getFiles(param.originalEvent.dataTransfer.files);\r\n \r\n othis.removeAttr('lay-over');\r\n setChooseFile(files);\r\n\r\n options.auto ? that.upload() : setChooseText(files); // 是否自动触发上传\r\n });\r\n }\r\n \r\n // 文件选择\r\n that.elemFile.on('change', function(){\r\n var files = getFiles(this.files);\r\n\r\n if(files.length === 0) return;\r\n\r\n setChooseFile(files);\r\n\r\n options.auto ? that.upload() : setChooseText(files); // 是否自动触发上传\r\n });\r\n \r\n // 手动触发上传\r\n options.bindAction.off('upload.action').on('upload.action', function(){\r\n that.upload();\r\n });\r\n\r\n\r\n // 防止事件重复绑定\r\n if(options.elem.data(MOD_INDEX)) return;\r\n\r\n\r\n // 目标元素 click 事件\r\n options.elem.on('click', function(){\r\n if(that.isFile()) return;\r\n $(this).trigger('upload.start');\r\n });\r\n \r\n // 目标元素 drop 事件\r\n if(options.drag){\r\n options.elem.on('dragover', function(e){\r\n e.preventDefault();\r\n $(this).trigger('upload.over');\r\n }).on('dragleave', function(e){\r\n $(this).trigger('upload.leave');\r\n }).on('drop', function(e){\r\n e.preventDefault();\r\n $(this).trigger('upload.drop', e);\r\n });\r\n }\r\n \r\n // 手动上传时触发上传的元素 click 事件\r\n options.bindAction.on('click', function(){\r\n $(this).trigger('upload.action');\r\n });\r\n \r\n // 绑定元素索引\r\n options.elem.data(MOD_INDEX, options.id);\r\n };\r\n\r\n /**\r\n * 上传组件辅助方法\r\n */\r\n upload.util = {\r\n /**\r\n * 文件大小处理\r\n * @param {number | string} size -文件大小\r\n * @param {number} [precision] - 数值精度\r\n * @return {string}\r\n */\r\n parseSize: function (size, precision) {\r\n precision = precision || 2;\r\n if (null == size || !size) {\r\n return '0';\r\n }\r\n var unitArr = [\"Bytes\", \"Kb\", \"Mb\", \"Gb\", \"Tb\", \"Pb\", \"Eb\", \"Zb\", \"Yb\"];\r\n var index;\r\n var formatSize = typeof size === 'string' ? parseFloat(size) : size;\r\n index = Math.floor(Math.log(formatSize) / Math.log(1024));\r\n size = formatSize / Math.pow(1024, index);\r\n size = size % 1 === 0 ? size : parseFloat(size.toFixed(precision));//保留的小数位数\r\n return size + unitArr[index];\r\n },\r\n /**\r\n * 将给定的值转换为一个 JQueryDeferred 对象\r\n */\r\n promiseLikeResolve:function(value){\r\n var deferred = $.Deferred();\r\n\r\n if(value && typeof value.then === 'function'){\r\n value.then(deferred.resolve, deferred.reject);\r\n }else{\r\n deferred.resolve(value);\r\n }\r\n return deferred.promise();\r\n }\r\n }\r\n\r\n // 记录所有实例\r\n thisModule.that = {}; // 记录所有实例对象\r\n\r\n // 获取当前实例对象\r\n thisModule.getThis = function(id){\r\n var that = thisModule.that[id];\r\n if(!that) hint.error(id ? (MOD_NAME +' instance with ID \\''+ id +'\\' not found') : 'ID argument required');\r\n return that;\r\n };\r\n \r\n // 核心入口 \r\n upload.render = function(options){\r\n var inst = new Class(options);\r\n return thisModule.call(inst);\r\n };\r\n \r\n exports(MOD_NAME, upload);\r\n});\r\n\r\n","/**\r\n * form 表单组件\r\n */\r\n \r\nlayui.define(['lay', 'layer', 'util'], function(exports){\r\n \"use strict\";\r\n \r\n var $ = layui.$;\r\n var layer = layui.layer;\r\n var util = layui.util;\r\n var hint = layui.hint();\r\n var device = layui.device();\r\n \r\n var MOD_NAME = 'form';\r\n var ELEM = '.layui-form';\r\n var THIS = 'layui-this';\r\n var SHOW = 'layui-show';\r\n var HIDE = 'layui-hide';\r\n var DISABLED = 'layui-disabled';\r\n var OUT_OF_RANGE = 'layui-input-number-out-of-range';\r\n \r\n var Form = function(){\r\n this.config = {\r\n // 内置的验证规则\r\n verify: {\r\n required: function(value) {\r\n if (!/[\\S]+/.test(value)) {\r\n return '必填项不能为空';\r\n }\r\n },\r\n phone: function(value) {\r\n var EXP = /^1\\d{10}$/;\r\n if (value && !EXP.test(value)) {\r\n return '手机号格式不正确';\r\n }\r\n },\r\n email: function(value) {\r\n var EXP = /^([a-zA-Z0-9_\\.\\-])+\\@(([a-zA-Z0-9\\-])+\\.)+([a-zA-Z0-9]{2,4})+$/;\r\n if (value && !EXP.test(value)) {\r\n return '邮箱格式不正确';\r\n }\r\n },\r\n url: function(value) {\r\n var EXP = /^(#|(http(s?)):\\/\\/|\\/\\/)[^\\s]+\\.[^\\s]+$/;\r\n if (value && !EXP.test(value)) {\r\n return '链接格式不正确';\r\n }\r\n },\r\n number: function(value){\r\n if (value && isNaN(value)) {\r\n return '只能填写数字';\r\n }\r\n },\r\n date: function(value){\r\n var EXP = /^(\\d{4})[-\\/](\\d{1}|0\\d{1}|1[0-2])([-\\/](\\d{1}|0\\d{1}|[1-2][0-9]|3[0-1]))*$/;\r\n if (value && !EXP.test(value)) {\r\n return '日期格式不正确';\r\n }\r\n },\r\n identity: function(value) {\r\n var EXP = /(^\\d{15}$)|(^\\d{17}(x|X|\\d)$)/;\r\n if (value && !EXP.test(value)) {\r\n return '身份证号格式不正确';\r\n }\r\n }\r\n },\r\n autocomplete: null // 全局 autocomplete 状态。 null 表示不干预\r\n };\r\n };\r\n \r\n // 全局设置\r\n Form.prototype.set = function(options){\r\n var that = this;\r\n $.extend(true, that.config, options);\r\n return that;\r\n };\r\n \r\n // 验证规则设定\r\n Form.prototype.verify = function(settings){\r\n var that = this;\r\n $.extend(true, that.config.verify, settings);\r\n return that;\r\n };\r\n\r\n // 获取指定表单对象\r\n Form.prototype.getFormElem = function(filter){\r\n return $(ELEM + function(){\r\n return filter ? ('[lay-filter=\"' + filter +'\"]') : '';\r\n }());\r\n };\r\n \r\n // 表单事件\r\n Form.prototype.on = function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n };\r\n \r\n // 赋值/取值\r\n Form.prototype.val = function(filter, object){\r\n var that = this\r\n ,formElem = that.getFormElem(filter);\r\n \r\n // 遍历\r\n formElem.each(function(index, item){\r\n var itemForm = $(this);\r\n \r\n // 赋值\r\n layui.each(object, function(key, value){\r\n var itemElem = itemForm.find('[name=\"'+ key +'\"]')\r\n ,type;\r\n \r\n // 如果对应的表单不存在,则不执行\r\n if(!itemElem[0]) return;\r\n type = itemElem[0].type;\r\n \r\n // 如果为复选框\r\n if(type === 'checkbox'){\r\n itemElem[0].checked = value;\r\n } else if(type === 'radio') { // 如果为单选框\r\n itemElem.each(function(){\r\n this.checked = this.value == value + '';\r\n });\r\n } else { // 其它类型的表单\r\n itemElem.val(value);\r\n }\r\n });\r\n });\r\n \r\n form.render(null, filter);\r\n \r\n // 返回值\r\n return that.getValue(filter);\r\n };\r\n \r\n // 取值\r\n Form.prototype.getValue = function(filter, itemForm){\r\n itemForm = itemForm || this.getFormElem(filter);\r\n \r\n var nameIndex = {} // 数组 name 索引\r\n ,field = {}\r\n ,fieldElem = itemForm.find('input,select,textarea') // 获取所有表单域\r\n \r\n layui.each(fieldElem, function(_, item){ \r\n var othis = $(this)\r\n ,init_name; // 初始 name\r\n \r\n item.name = (item.name || '').replace(/^\\s*|\\s*&/, '');\r\n if(!item.name) return;\r\n \r\n // 用于支持数组 name\r\n if(/^.*\\[\\]$/.test(item.name)){\r\n var key = item.name.match(/^(.*)\\[\\]$/g)[0];\r\n nameIndex[key] = nameIndex[key] | 0;\r\n init_name = item.name.replace(/^(.*)\\[\\]$/, '$1['+ (nameIndex[key]++) +']');\r\n }\r\n \r\n if(/^(checkbox|radio)$/.test(item.type) && !item.checked) return; // 复选框和单选框未选中,不记录字段 \r\n field[init_name || item.name] = item.value;\r\n });\r\n \r\n return field;\r\n };\r\n \r\n // 表单控件渲染\r\n Form.prototype.render = function(type, filter){\r\n var that = this;\r\n var options = that.config;\r\n var elemForm = $(ELEM + function(){\r\n return filter ? ('[lay-filter=\"' + filter +'\"]') : '';\r\n }());\r\n var items = {\r\n // 输入框\r\n input: function(elem){\r\n var inputs = elem || elemForm.find('input,textarea');\r\n\r\n // 初始化全局的 autocomplete\r\n options.autocomplete && inputs.attr('autocomplete', options.autocomplete);\r\n\r\n var handleInputNumber = function(elem, eventType){\r\n var that = this;\r\n var rawValue = elem.val();\r\n var value = Number(rawValue);\r\n var step = Number(elem.attr('step')) || 1; // 加减的数字间隔\r\n var min = Number(elem.attr('min'));\r\n var max = Number(elem.attr('max'));\r\n var precision = Number(elem.attr('lay-precision'));\r\n var noAction = eventType !== 'click' && rawValue === ''; // 初始渲染和失焦时空值不作处理\r\n var isInit = eventType === 'init';\r\n\r\n if(isNaN(value)) return; // 若非数字,则不作处理\r\n\r\n if(eventType === 'click'){\r\n var isDecrement = !!$(that).index() // 0: icon-up, 1: icon-down\r\n value = isDecrement ? value - step : value + step;\r\n }\r\n\r\n // 获取小数点后位数\r\n var decimals = function(step){\r\n var decimals = (step.toString().match(/\\.(\\d+$)/) || [])[1] || '';\r\n return decimals.length;\r\n };\r\n\r\n precision = precision >= 0 ? precision : Math.max(decimals(step), decimals(rawValue));\r\n\r\n // 赋值\r\n if (!noAction) {\r\n // 初始渲染时只处理数字精度\r\n if (!isInit) {\r\n if(value <= min) value = min;\r\n if(value >= max) value = max;\r\n }\r\n // 若 `lay-precision` 为 0, 则表示只保留整数\r\n if (precision === 0) {\r\n value = parseInt(value);\r\n } else if(precision > 0) { // 小数位精度\r\n value = value.toFixed(precision);\r\n }\r\n elem.val(value);\r\n }\r\n\r\n // 超出范围的样式\r\n var outOfRange = value < min || value > max;\r\n elem[outOfRange && !noAction ? 'addClass' : 'removeClass'](OUT_OF_RANGE);\r\n\r\n if(isInit) return;\r\n\r\n // 更新按钮状态\r\n var controlBtn = {\r\n increment: elem.next().find('.layui-icon-up'),\r\n decrement: elem.next().find('.layui-icon-down')\r\n }\r\n controlBtn.increment[(value >= max && !noAction) ? 'addClass' : 'removeClass'](DISABLED)\r\n controlBtn.decrement[(value <= min && !noAction) ? 'addClass' : 'removeClass'](DISABLED)\r\n }\r\n\r\n // 初始化输入框动态点缀\r\n elemForm.find('input[lay-affix],textarea[lay-affix]').each(function(){\r\n var othis = $(this);\r\n var affix = othis.attr('lay-affix');\r\n var CLASS_WRAP = 'layui-input-wrap';\r\n var CLASS_SUFFIX = 'layui-input-suffix';\r\n var CLASS_AFFIX = 'layui-input-affix';\r\n var disabled = othis.is('[disabled]') || othis.is('[readonly]');\r\n\r\n // 根据是否空值来显示或隐藏元素\r\n var showAffix = function(elem, value){\r\n elem = $(elem);\r\n if(!elem[0]) return;\r\n elem[$.trim(value) ? 'removeClass' : 'addClass'](HIDE);\r\n };\r\n\r\n // 渲染动态点缀内容\r\n var renderAffix = function(opts){\r\n opts = $.extend({}, (affixOptions[affix] || {\r\n value: affix\r\n }), opts, lay.options(othis[0]));\r\n var elemAffix = $('
                          ');\r\n var value = layui.isArray(opts.value) ? opts.value : [opts.value];\r\n var elemIcon = $(function(){\r\n var arr = [];\r\n layui.each(value, function(i, item){\r\n arr.push('');\r\n });\r\n return arr.join('');\r\n }());\r\n \r\n elemAffix.append(elemIcon); // 插入图标元素\r\n\r\n // 追加 className\r\n if(opts.split) elemAffix.addClass('layui-input-split');\r\n if(opts.className) elemAffix.addClass(opts.className);\r\n\r\n // 移除旧的元素\r\n var hasElemAffix = othis.next('.'+ CLASS_AFFIX);\r\n if(hasElemAffix[0]) hasElemAffix.remove();\r\n\r\n // 是否在规定的容器中\r\n if(!othis.parent().hasClass(CLASS_WRAP)){\r\n othis.wrap('
                          ');\r\n }\r\n\r\n // 是否已经存在后缀元素\r\n var hasElemSuffix = othis.next('.'+ CLASS_SUFFIX);\r\n if(hasElemSuffix[0]){\r\n hasElemAffix = hasElemSuffix.find('.'+ CLASS_AFFIX);\r\n if(hasElemAffix[0]) hasElemAffix.remove();\r\n\r\n hasElemSuffix.prepend(elemAffix);\r\n\r\n othis.css('padding-right', function(){\r\n var paddingRight = othis.closest('.layui-input-group')[0] \r\n ? 0 \r\n : hasElemSuffix.outerWidth();\r\n return paddingRight + elemAffix.outerWidth()\r\n });\r\n } else {\r\n elemAffix.addClass(CLASS_SUFFIX);\r\n othis.after(elemAffix);\r\n }\r\n\r\n opts.show === 'auto' && showAffix(elemAffix, othis.val());\r\n \r\n typeof opts.init === 'function' && opts.init.call(this, othis, opts);\r\n \r\n // 输入事件\r\n othis.on('input propertychange', function(){\r\n var value = this.value;\r\n opts.show === 'auto' && showAffix(elemAffix, value);\r\n });\r\n\r\n // 失去焦点事件\r\n othis.on('blur', function(){\r\n typeof opts.blur === 'function' && opts.blur.call(this, othis, opts);\r\n });\r\n \r\n // 点击动态后缀事件\r\n elemIcon.on('click', function(){\r\n var inputFilter = othis.attr('lay-filter');\r\n if($(this).hasClass(DISABLED)) return;\r\n \r\n typeof opts.click === 'function' && opts.click.call(this, othis, opts);\r\n \r\n // 对外事件\r\n layui.event.call(this, MOD_NAME, 'input-affix('+ inputFilter +')', {\r\n elem: othis[0],\r\n affix: affix,\r\n options: opts\r\n });\r\n });\r\n };\r\n \r\n // 动态点缀配置项\r\n var affixOptions = {\r\n eye: { // 密码显隐\r\n value: 'eye-invisible',\r\n click: function(elem, opts){ // 事件\r\n var SHOW_NAME = 'LAY_FORM_INPUT_AFFIX_SHOW';\r\n var isShow = elem.data(SHOW_NAME);\r\n \r\n elem.attr('type', isShow ? 'password' : 'text').data(SHOW_NAME, !isShow);\r\n\r\n renderAffix({\r\n value: isShow ? 'eye-invisible' : 'eye'\r\n });\r\n }\r\n },\r\n clear: { // 内容清除\r\n value: 'clear',\r\n click: function(elem){\r\n elem.val('').focus();\r\n showAffix($(this).parent(), null);\r\n },\r\n show: 'auto', // 根据输入框值是否存在来显示或隐藏点缀图标\r\n disabled: disabled // 跟随输入框禁用状态\r\n },\r\n number: { // 数字输入框\r\n value: ['up', 'down'],\r\n split: true,\r\n className: 'layui-input-number',\r\n disabled: othis.is('[disabled]'), // 跟随输入框禁用状态\r\n init: function(elem){\r\n handleInputNumber.call(this, elem, 'init')\r\n },\r\n click: function(elem){\r\n handleInputNumber.call(this, elem, 'click')\r\n },\r\n blur: function(elem){\r\n handleInputNumber.call(this, elem, 'blur')\r\n },\r\n }\r\n };\r\n \r\n renderAffix();\r\n });\r\n }\r\n \r\n // 下拉选择框\r\n ,select: function(elem){\r\n var TIPS = '请选择';\r\n var CLASS = 'layui-form-select';\r\n var TITLE = 'layui-select-title';\r\n var NONE = 'layui-select-none';\r\n var CREATE_OPTION = 'layui-select-create-option';\r\n var initValue = '';\r\n var thatInput;\r\n var selects = elem || elemForm.find('select');\r\n\r\n // 隐藏 select\r\n var hide = function(e, clear){\r\n if(!$(e.target).parent().hasClass(TITLE) || clear){\r\n var elem = $('.' + CLASS);\r\n elem.removeClass(CLASS+'ed ' + CLASS+'up');\r\n if(elem.hasClass('layui-select-creatable')){\r\n elem.children('dl').children('.' + CREATE_OPTION).remove();\r\n }\r\n thatInput && initValue && thatInput.val(initValue);\r\n }\r\n thatInput = null;\r\n };\r\n \r\n // 各种事件\r\n var events = function(reElem, disabled, isSearch, isCreatable){\r\n var select = $(this);\r\n var title = reElem.find('.' + TITLE);\r\n var input = title.find('input');\r\n var dl = reElem.find('dl');\r\n var dds = dl.children('dd');\r\n var dts = dl.children('dt'); // select 分组dt元素\r\n var index = this.selectedIndex; // 当前选中的索引\r\n var nearElem; // select 组件当前选中的附近元素,用于辅助快捷键功能\r\n \r\n if(disabled) return;\r\n\r\n // 搜索项\r\n var laySearch = select.attr('lay-search');\r\n\r\n // #1449\r\n // IE10 和 11 中,带有占位符的 input 元素获得/失去焦点时,会触发 input 事件\r\n // 当鼠标按下时,根据 input 元素上的 __ieph 标识忽略 input 事件\r\n var needPlaceholderPatch = !!(lay.ie && (lay.ie === '10' || lay.ie === '11') && input.attr('placeholder'));\r\n \r\n // 展开下拉\r\n var showDown = function(){\r\n var top = reElem.offset().top + reElem.outerHeight() + 5 - $win.scrollTop();\r\n var dlHeight = dl.outerHeight();\r\n var dds = dl.children('dd');\r\n \r\n index = select[0].selectedIndex; // 获取最新的 selectedIndex\r\n reElem.addClass(CLASS+'ed');\r\n dds.removeClass(HIDE);\r\n dts.removeClass(HIDE);\r\n nearElem = null;\r\n\r\n // 初始选中样式\r\n dds.removeClass(THIS);\r\n index >= 0 && dds.eq(index).addClass(THIS);\r\n\r\n // 上下定位识别\r\n if(top + dlHeight > $win.height() && top >= dlHeight){\r\n reElem.addClass(CLASS + 'up');\r\n }\r\n\r\n followScroll();\r\n\r\n if(needPlaceholderPatch){\r\n dl.off('mousedown.select.ieph').on('mousedown.select.ieph', function(){\r\n input[0].__ieph = true;\r\n setTimeout(function(){\r\n input[0].__ieph = false;\r\n }, 60)\r\n });\r\n }\r\n };\r\n \r\n // 隐藏下拉\r\n var hideDown = function(choose){\r\n reElem.removeClass(CLASS+'ed ' + CLASS+'up');\r\n input.blur();\r\n nearElem = null;\r\n isCreatable && dl.children('.' + CREATE_OPTION).remove();\r\n \r\n if(choose) return;\r\n \r\n notOption(input.val(), function(none){\r\n var selectedIndex = select[0].selectedIndex;\r\n \r\n // 未查询到相关值\r\n if(none){\r\n initValue = $(select[0].options[selectedIndex]).html(); // 重新获得初始选中值\r\n \r\n // 如果是第一项,且文本值等于 placeholder,则清空初始值\r\n if(selectedIndex === 0 && initValue === input.attr('placeholder')){\r\n initValue = '';\r\n }\r\n\r\n // 如果有选中值,则将输入框纠正为该值。否则清空输入框\r\n input.val(initValue || '');\r\n }\r\n });\r\n };\r\n \r\n // 定位下拉滚动条\r\n var followScroll = function(){ \r\n var thisDd = dl.children('dd.'+ THIS);\r\n \r\n if(!thisDd[0]) return;\r\n \r\n var posTop = thisDd.position().top;\r\n var dlHeight = dl.height();\r\n var ddHeight = thisDd.height();\r\n \r\n // 若选中元素在滚动条不可见底部\r\n if(posTop > dlHeight){\r\n dl.scrollTop(posTop + dl.scrollTop() - dlHeight + ddHeight - 5);\r\n }\r\n \r\n // 若选择元素在滚动条不可见顶部\r\n if(posTop < 0){\r\n dl.scrollTop(posTop + dl.scrollTop() - 5);\r\n }\r\n };\r\n \r\n // 点击标题区域\r\n title.on('click', function(e){\r\n reElem.hasClass(CLASS+'ed') ? (\r\n hideDown()\r\n ) : (\r\n hide(e, true), \r\n showDown()\r\n );\r\n dl.find('.'+NONE).remove();\r\n }); \r\n \r\n // 点击箭头获取焦点\r\n title.find('.layui-edge').on('click', function(){\r\n input.focus();\r\n });\r\n \r\n // select 中 input 键盘事件\r\n input.on('keyup', function(e){ // 键盘松开\r\n var keyCode = e.keyCode;\r\n \r\n // Tab键展开\r\n if(keyCode === 9){\r\n showDown();\r\n }\r\n }).on('keydown', function(e){ // 键盘按下\r\n var keyCode = e.keyCode;\r\n\r\n // Tab键隐藏\r\n if(keyCode === 9){\r\n hideDown();\r\n }\r\n \r\n // 标注 dd 的选中状态\r\n var setThisDd = function(prevNext){\r\n e.preventDefault();\r\n var allDisplayedElem = dl.children('dd:not(.'+ HIDE +',.'+ DISABLED +')');\r\n if(!allDisplayedElem.length) return;\r\n var firstIndex = 0;\r\n var lastIndex = allDisplayedElem.length - 1;\r\n var selectedIndex = -1;\r\n\r\n layui.each(allDisplayedElem, function(index, el){\r\n if($(el).hasClass(THIS)){\r\n selectedIndex = index;\r\n return true;\r\n }\r\n })\r\n \r\n var nextIndex = prevNext === 'prev'\r\n ? (selectedIndex - 1 < firstIndex ? lastIndex : selectedIndex - 1)\r\n : (selectedIndex + 1 > lastIndex ? firstIndex : selectedIndex + 1)\r\n\r\n var selectedElem = allDisplayedElem.eq(nextIndex);\r\n selectedElem.addClass(THIS).siblings().removeClass(THIS); // 标注样式\r\n followScroll(); // 定位滚动条\r\n };\r\n \r\n if(keyCode === 38) setThisDd('prev'); // Up 键\r\n if(keyCode === 40) setThisDd('next'); // Down 键\r\n \r\n // Enter 键\r\n if(keyCode === 13){ \r\n e.preventDefault();\r\n dl.children('dd.'+THIS).trigger('click');\r\n }\r\n }).on('paste', function(){\r\n showDown();\r\n });\r\n \r\n // 检测值是否不属于 select 项\r\n var notOption = function(value, callback, origin){\r\n var num = 0;\r\n var dds = dl.children('dd');\r\n var hasEquals = false;\r\n var rawValue = value;\r\n layui.each(dds, function(){\r\n var othis = $(this);\r\n var text = othis.text();\r\n var isCreateOption = isCreatable && othis.hasClass(CREATE_OPTION);\r\n\r\n // 需要区分大小写\r\n if(isCreatable && !isCreateOption && text === rawValue){\r\n hasEquals = true;\r\n }\r\n\r\n // 是否区分大小写\r\n if(laySearch !== 'cs'){\r\n text = text.toLowerCase();\r\n value = value.toLowerCase();\r\n }\r\n \r\n // 匹配\r\n var not = text.indexOf(value) === -1;\r\n \r\n if(value === '' || (origin === 'blur') ? value !== text : not) num++;\r\n origin === 'keyup' && othis[(isCreatable ? (not && !isCreateOption) : not) ? 'addClass' : 'removeClass'](HIDE);\r\n });\r\n // 处理 select 分组元素\r\n origin === 'keyup' && layui.each(dts, function(){\r\n var othis = $(this);\r\n var thisDds = othis.nextUntil('dt').filter('dd'); // 当前分组下的dd元素\r\n if(isCreatable) thisDds = thisDds.not('.' + CREATE_OPTION);\r\n var allHide = thisDds.length == thisDds.filter('.' + HIDE).length; // 当前分组下所有dd元素都隐藏了\r\n othis[allHide ? 'addClass' : 'removeClass'](HIDE);\r\n });\r\n var none = num === dds.length;\r\n return callback(none, hasEquals), none;\r\n };\r\n \r\n // 搜索匹配\r\n var search = function(e){\r\n var value = this.value, keyCode = e.keyCode;\r\n \r\n if(keyCode === 9 || keyCode === 13 \r\n || keyCode === 37 || keyCode === 38 \r\n || keyCode === 39 || keyCode === 40\r\n ){\r\n return false;\r\n }\r\n \r\n if(needPlaceholderPatch && e.target.__ieph){\r\n e.target.__ieph = false;\r\n return false;\r\n }\r\n \r\n notOption(value, function(none, hasEquals){\r\n if(isCreatable){\r\n if(hasEquals){\r\n dl.children('.' + CREATE_OPTION).remove();\r\n }else{\r\n var createOptionElem = dl.children('.' + CREATE_OPTION);\r\n if(createOptionElem[0]){\r\n createOptionElem.attr('lay-value', value).html(util.escape(value));\r\n }else{\r\n // 临时显示在顶部\r\n var ddElem = $('
                          ').addClass(CREATE_OPTION).attr('lay-value', value).html(util.escape(value));\r\n var firstOptionELem = dl.children().eq(0);\r\n var hasTips = firstOptionELem.hasClass('layui-select-tips');\r\n firstOptionELem[hasTips ? 'after' : 'before'](ddElem);\r\n }\r\n }\r\n }else{\r\n if(none){\r\n dl.find('.'+NONE)[0] || dl.append('

                          无匹配项

                          ');\r\n } else {\r\n dl.find('.'+NONE).remove();\r\n }\r\n }\r\n }, 'keyup');\r\n \r\n // 当搜索值清空时\r\n if(value === ''){\r\n // 取消选中项\r\n select.val('');\r\n dl.find('.'+ THIS).removeClass(THIS);\r\n (select[0].options[0] || {}).value || dl.children('dd:eq(0)').addClass(THIS);\r\n dl.find('.'+ NONE).remove();\r\n isCreatable && dl.children('.' + CREATE_OPTION).remove();\r\n }\r\n \r\n followScroll(); // 定位滚动条\r\n };\r\n \r\n if(isSearch){\r\n input.on('input propertychange', layui.debounce(search, 50)).on('blur', function(e){\r\n var selectedIndex = select[0].selectedIndex;\r\n \r\n thatInput = input; // 当前的 select 中的 input 元素\r\n initValue = $(select[0].options[selectedIndex]).text(); // 重新获得初始选中值\r\n \r\n // 如果是第一项,且文本值等于 placeholder,则清空初始值\r\n if(selectedIndex === 0 && initValue === input.attr('placeholder')){\r\n initValue = '';\r\n }\r\n \r\n setTimeout(function(){\r\n notOption(input.val(), function(none){\r\n initValue || input.val(''); // none && !initValue\r\n }, 'blur');\r\n }, 200);\r\n });\r\n }\r\n\r\n // 选择\r\n dl.on('click', 'dd', function(){\r\n var othis = $(this), value = othis.attr('lay-value');\r\n var filter = select.attr('lay-filter'); // 获取过滤器\r\n \r\n if(othis.hasClass(DISABLED)) return false;\r\n \r\n if(othis.hasClass('layui-select-tips')){\r\n input.val('');\r\n } else {\r\n input.val(othis.text());\r\n othis.addClass(THIS);\r\n }\r\n\r\n // 将新增的 option 元素添加到末尾\r\n if(isCreatable && othis.hasClass(CREATE_OPTION)){\r\n dl.append(othis.removeClass(CREATE_OPTION));\r\n var optionElem = $('
                        '\r\n ,''\r\n ,'{{# layui.each(d.data.cols, function(i1, item1){ }}'\r\n ,''\r\n ,'{{# layui.each(item1, function(i2, item2){ }}'\r\n ,'{{# if(item2.fixed && item2.fixed !== \"right\"){ left = true; } }}'\r\n ,'{{# if(item2.fixed === \"right\"){ right = true; } }}'\r\n ,function(){\r\n if(options.fixed && options.fixed !== 'right'){\r\n return '{{# if(item2.fixed && item2.fixed !== \"right\"){ }}';\r\n }\r\n if(options.fixed === 'right'){\r\n return '{{# if(item2.fixed === \"right\"){ }}';\r\n }\r\n return '';\r\n }()\r\n ,'{{# var isSort = !(item2.colGroup) && item2.sort; }}'\r\n ,''\r\n ,(options.fixed ? '{{# }; }}' : '')\r\n ,'{{# }); }}'\r\n ,''\r\n ,'{{# }); }}'\r\n ,''\r\n ,'
                        \\' + item2.title + \\'\\').text() }}\"{{# } }}>'\r\n ,'
                        '\r\n ,'{{# if(item2.type === \"checkbox\"){ }}' //复选框\r\n ,''\r\n ,'{{# } else { }}'\r\n ,'{{-item2.title||\"\"}}'\r\n ,'{{# if(isSort){ }}'\r\n ,''\r\n ,'{{# } }}'\r\n ,'{{# } }}'\r\n ,'
                        '\r\n ,'
                        '].join('');\r\n };\r\n\r\n // tbody 区域模板\r\n var TPL_BODY = [''\r\n ,''\r\n ,'
                        '].join('');\r\n\r\n // 主模板\r\n var TPL_MAIN = [\r\n ,'{{# if(d.data.toolbar){ }}'\r\n ,'
                        '\r\n ,'
                        '\r\n ,'
                        '\r\n ,'
                        '\r\n ,'{{# } }}'\r\n\r\n ,'
                        '\r\n ,'{{# if(d.data.loading){ }}'\r\n ,'
                        '\r\n ,'
                        '\r\n ,'{{# if(typeof d.data.loading === \"string\"){ }}'\r\n ,'{{- d.data.loading}}'\r\n ,'{{# } else{ }}'\r\n ,''\r\n ,'{{# } }}'\r\n ,'
                        '\r\n ,'
                        '\r\n ,'{{# } }}'\r\n\r\n ,'{{# var left, right; }}'\r\n ,'
                        '\r\n ,TPL_HEADER()\r\n ,'
                        '\r\n ,'
                        '\r\n ,TPL_BODY\r\n ,'
                        '\r\n\r\n ,'{{# if(left){ }}'\r\n ,'
                        '\r\n ,'
                        '\r\n ,TPL_HEADER({fixed: true})\r\n ,'
                        '\r\n ,'
                        '\r\n ,TPL_BODY\r\n ,'
                        '\r\n ,'
                        '\r\n ,'{{# }; }}'\r\n\r\n ,'{{# if(right){ }}'\r\n ,'
                        '\r\n ,'
                        '\r\n ,TPL_HEADER({fixed: 'right'})\r\n ,'
                        '\r\n ,'
                        '\r\n ,'
                        '\r\n ,TPL_BODY\r\n ,'
                        '\r\n ,'
                        '\r\n ,'{{# }; }}'\r\n ,'
                        '\r\n\r\n ,'{{# if(d.data.totalRow){ }}'\r\n ,'
                        '\r\n ,''\r\n ,''\r\n , '
                        Total
                        '\r\n ,'
                        '\r\n ,'{{# } }}'\r\n\r\n ,'
                        '\r\n ,'
                        '\r\n ,'
                        '\r\n ].join('');\r\n\r\n var _WIN = $(window);\r\n var _DOC = $(document);\r\n\r\n // constructor\r\n var Class = function(options){\r\n var that = this;\r\n that.index = ++table.index;\r\n that.config = $.extend({}, that.config, table.config, options);\r\n that.render();\r\n };\r\n\r\n // 初始默认配置\r\n Class.prototype.config = {\r\n limit: 10, // 每页显示的数量\r\n loading: true, // 请求数据时,是否显示 loading\r\n escape: true, // 是否开启 HTML 编码功能,即转义 html 原文\r\n cellMinWidth: 60, // 所有单元格默认最小宽度\r\n cellMaxWidth: Number.MAX_VALUE, // 所有单元格默认最大宽度\r\n editTrigger: 'click', // 单元格编辑的事件触发方式\r\n defaultToolbar: ['filter', 'exports', 'print'], // 工具栏右侧图标\r\n defaultContextmenu: true, // 显示默认上下文菜单\r\n autoSort: true, // 是否前端自动排序。如果否,则需自主排序(通常为服务端处理好排序)\r\n text: {\r\n none: '无数据'\r\n },\r\n cols: []\r\n };\r\n\r\n // 表格渲染\r\n Class.prototype.render = function(type){\r\n var that = this;\r\n var options = that.config;\r\n\r\n options.elem = $(options.elem);\r\n options.where = options.where || {};\r\n\r\n // 初始化 id 属性 - 优先取 options > 元素 id > 自增索引\r\n var id = options.id = 'id' in options ? options.id : (\r\n options.elem.attr('id') || that.index\r\n );\r\n\r\n thisTable.that[id] = that; // 记录当前实例对象\r\n thisTable.config[id] = options; // 记录当前实例配置项\r\n\r\n //请求参数的自定义格式\r\n options.request = $.extend({\r\n pageName: 'page',\r\n limitName: 'limit'\r\n }, options.request)\r\n\r\n // 响应数据的自定义格式\r\n options.response = $.extend({\r\n statusName: 'code', //规定数据状态的字段名称\r\n statusCode: 0, //规定成功的状态码\r\n msgName: 'msg', //规定状态信息的字段名称\r\n dataName: 'data', //规定数据总数的字段名称\r\n totalRowName: 'totalRow', //规定数据统计的字段名称\r\n countName: 'count'\r\n }, options.response);\r\n\r\n //如果 page 传入 laypage 对象\r\n if(options.page !== null && typeof options.page === 'object'){\r\n options.limit = options.page.limit || options.limit;\r\n options.limits = options.page.limits || options.limits;\r\n that.page = options.page.curr = options.page.curr || 1;\r\n delete options.page.elem;\r\n delete options.page.jump;\r\n }\r\n\r\n if(!options.elem[0]) return that;\r\n\r\n // 若元素未设 lay-filter 属性,则取实例 id 值\r\n if(!options.elem.attr('lay-filter')){\r\n options.elem.attr('lay-filter', options.id);\r\n }\r\n\r\n // 仅重载数据\r\n if(type === 'reloadData'){\r\n // 请求数据\r\n return that.pullData(that.page, {\r\n type: 'reloadData'\r\n });\r\n }\r\n\r\n // 初始化索引\r\n options.index = that.index;\r\n that.key = options.id || options.index;\r\n\r\n // 初始化一些其他参数\r\n that.setInit();\r\n\r\n // 高度铺满:full-差距值\r\n if(options.height && /^full-.+$/.test(options.height)){\r\n that.fullHeightGap = options.height.split('-')[1];\r\n options.height = _WIN.height() - (parseFloat(that.fullHeightGap) || 0);\r\n } else if (options.height && /^#\\w+\\S*-.+$/.test(options.height)) {\r\n var parentDiv = options.height.split(\"-\");\r\n that.parentHeightGap = parentDiv.pop();\r\n that.parentDiv = parentDiv.join(\"-\");\r\n options.height = $(that.parentDiv).height() - (parseFloat(that.parentHeightGap) || 0);\r\n } else if (typeof options.height === \"function\"){\r\n that.customHeightFunc = options.height;\r\n options.height = that.customHeightFunc();\r\n }\r\n\r\n // 开始插入替代元素\r\n var othis = options.elem;\r\n var hasRender = othis.next('.' + ELEM_VIEW);\r\n\r\n // 主容器\r\n var reElem = that.elem = $('
                        ');\r\n\r\n // 添加 className\r\n reElem.addClass(function(){\r\n var arr = [\r\n ELEM_VIEW,\r\n ELEM_VIEW +'-'+ that.index,\r\n 'layui-form',\r\n 'layui-border-box'\r\n ];\r\n if(options.className) arr.push(options.className);\r\n return arr.join(' ');\r\n }()).attr(function(){\r\n var obj = {\r\n 'lay-filter': 'LAY-TABLE-FORM-DF-'+ that.index,\r\n 'style': function(){\r\n var arr = [];\r\n if(options.width) arr.push('width:'+ options.width + 'px;');\r\n // if(options.height) arr.push('height:'+ options.height + 'px;');\r\n return arr.join('')\r\n }()\r\n }\r\n obj[MOD_ID] = options.id;\r\n return obj;\r\n }()).html(laytpl(TPL_MAIN, {\r\n open: '{{', // 标签符前缀\r\n close: '}}' // 标签符后缀\r\n }).render({\r\n data: options,\r\n index: that.index //索引\r\n }));\r\n\r\n // 初始化样式\r\n that.renderStyle();\r\n\r\n // 生成替代元素\r\n if(hasRender[0]){\r\n that.resizeObserver && that.resizeObserver.unobserve(that.elem[0]);\r\n hasRender.remove(); // 如果已经渲染,则 Rerender\r\n }\r\n othis.after(reElem);\r\n\r\n // 各级容器\r\n that.layTool = reElem.find(ELEM_TOOL);\r\n that.layBox = reElem.find(ELEM_BOX);\r\n that.layHeader = reElem.find(ELEM_HEADER);\r\n that.layMain = reElem.find(ELEM_MAIN);\r\n that.layBody = reElem.find(ELEM_BODY);\r\n that.layFixed = reElem.find(ELEM_FIXED);\r\n that.layFixLeft = reElem.find(ELEM_FIXL);\r\n that.layFixRight = reElem.find(ELEM_FIXR);\r\n that.layTotal = reElem.find(ELEM_TOTAL);\r\n that.layPage = reElem.find(ELEM_PAGE);\r\n\r\n // 初始化头部工具栏\r\n that.renderToolbar();\r\n\r\n // 初始化底部分页栏\r\n that.renderPagebar();\r\n\r\n // 让表格平铺\r\n that.fullSize();\r\n\r\n that.pullData(that.page); // 请求数据\r\n that.events(); // 事件\r\n };\r\n\r\n // 根据列类型,定制化参数\r\n Class.prototype.initOpts = function(item){\r\n var that = this\r\n var options = that.config;\r\n var initWidth = {\r\n checkbox: 50,\r\n radio: 50,\r\n space: 30,\r\n numbers: 60\r\n };\r\n\r\n // 让 type 参数兼容旧版本\r\n if(item.checkbox) item.type = \"checkbox\";\r\n if(item.space) item.type = \"space\";\r\n if(!item.type) item.type = \"normal\";\r\n\r\n if(item.type !== \"normal\"){\r\n item.unresize = true;\r\n item.width = item.width || initWidth[item.type];\r\n }\r\n };\r\n\r\n //初始化一些参数\r\n Class.prototype.setInit = function(type){\r\n var that = this;\r\n var options = that.config;\r\n\r\n options.clientWidth = options.width || function(){ //获取容器宽度\r\n //如果父元素宽度为0(一般为隐藏元素),则继续查找上层元素,直到找到真实宽度为止\r\n var getWidth = function(parent){\r\n var width, isNone;\r\n parent = parent || options.elem.parent()\r\n width = parent.width();\r\n try {\r\n isNone = parent.css('display') === 'none';\r\n } catch(e){}\r\n if(parent[0] && (!width || isNone)) return getWidth(parent.parent());\r\n return width;\r\n };\r\n return getWidth();\r\n }();\r\n\r\n if(type === 'width') return options.clientWidth;\r\n // 初始化高度配置,如果设置了最高高度,以最高高度形式为准\r\n options.height = options.maxHeight || options.height;\r\n\r\n // 初始化 css 参数\r\n if(options.css && options.css.indexOf(ELEM_VIEW) === -1){\r\n var css = options.css.split('}');\r\n layui.each(css, function(index, value){\r\n if(value){\r\n css[index] = '.'+ ELEM_VIEW + '-'+ that.index + ' ' + value;\r\n }\r\n });\r\n options.css = css.join('}');\r\n }\r\n\r\n // 封装对 col 的配置处理\r\n var initChildCols = function (i1, item1, i2, item2) {\r\n //如果列参数为空,则移除\r\n if (!item2) {\r\n item1.splice(i2, 1);\r\n return;\r\n }\r\n\r\n item2.key = [options.index, i1, i2].join('-');\r\n item2.colspan = item2.colspan || 0;\r\n item2.rowspan = item2.rowspan || 0;\r\n\r\n //根据列类型,定制化参数\r\n that.initOpts(item2);\r\n\r\n //设置列的父列索引\r\n //如果是组合列,则捕获对应的子列\r\n var indexChild = i1 + (parseInt(item2.rowspan) || 1);\r\n if (indexChild < options.cols.length) { // 只要不是最后一层都会有子列\r\n item2.colGroup = true;\r\n var childIndex = 0;\r\n layui.each(options.cols[indexChild], function (i22, item22) {\r\n //如果子列已经被标注为{HAS_PARENT},或者子列累计 colspan 数等于父列定义的 colspan,则跳出当前子列循环\r\n if (item22.HAS_PARENT || (childIndex >= 1 && childIndex == (item2.colspan || 1))) return;\r\n\r\n item22.HAS_PARENT = true;\r\n item22.parentKey = [options.index, i1, i2].join('-') // i1 + '-' + i2;\r\n childIndex = childIndex + parseInt(item22.colspan > 1 ? item22.colspan : 1);\r\n initChildCols(indexChild, options.cols[indexChild], i22, item22);\r\n });\r\n } else {\r\n item2.colGroup = false;\r\n }\r\n item2.hide = item2.hide && !item2.colGroup || false; // 初始化中中间节点的hide信息不做处理,否则会出错,如果需要必须将其子节点也都同步成hide\r\n };\r\n\r\n // 初始化列参数\r\n layui.each(options.cols, function(i1, item1){\r\n layui.each(item1, function(i2, item2){\r\n if (i1) {\r\n delete item2.HAS_PARENT; // 去掉临时的计数排除标识,避免有新字段插入的时候重新计算被跳过导致下标出错的问题\r\n } else {\r\n initChildCols(i1, item1, i2, item2); // 只解析顶层节点由递归完成解析\r\n }\r\n });\r\n });\r\n\r\n };\r\n\r\n // 初始化样式\r\n Class.prototype.renderStyle = function() {\r\n var that = this;\r\n var options = that.config;\r\n var index = that.index;\r\n var text = [];\r\n\r\n // 单元格宽度\r\n layui.each(options.cols, function(i1, item1) {\r\n layui.each(item1, function(i2, item2) {\r\n var key = [index, i1, i2].join('-');\r\n var val = ['width: ', (item2.width || options.cellMinWidth), 'px'].join('');\r\n text.push('.laytable-cell-'+ key +'{'+ val +'}');\r\n });\r\n });\r\n\r\n // 自定义行样式\r\n (function (lineStyle) {\r\n if (!lineStyle) return;\r\n var trClassName = '.layui-table-view-'+ index +' .layui-table-body .layui-table tr';\r\n var rules = lineStyle.split(';');\r\n var cellMaxHeight = 'none';\r\n\r\n // 计算单元格最大高度\r\n layui.each(rules, function(i, rule) {\r\n rule = rule.split(':');\r\n if (rule[0] === 'height') {\r\n var val = parseFloat(rule[1]);\r\n if (!isNaN(val)) cellMaxHeight = (val - 1) + 'px';\r\n return true;\r\n }\r\n });\r\n\r\n // 多行相关样式\r\n layui.each([\r\n '{'+ lineStyle +'}',\r\n '.layui-table-cell{height: auto; max-height: '+ cellMaxHeight +'; white-space: normal; text-overflow: clip;}',\r\n '> td:hover > .layui-table-cell{overflow: auto;}'\r\n ].concat(\r\n device.ie ? [\r\n '.layui-table-edit{height: '+ cellMaxHeight +';}',\r\n 'td[data-edit]:hover:after{height: '+ cellMaxHeight +';}'\r\n ] : []\r\n ), function(i, val) {\r\n val && text.push(trClassName + ' ' + val);\r\n });\r\n })(options.lineStyle);\r\n\r\n // 自定义 css 属性\r\n if (options.css) text.push(options.css);\r\n\r\n // 生成 style\r\n lay.style({\r\n target: that.elem[0],\r\n text: text.join(''),\r\n id: 'DF-table-'+ index\r\n });\r\n };\r\n\r\n // 初始工具栏\r\n Class.prototype.renderToolbar = function(){\r\n var that = this\r\n var options = that.config\r\n\r\n // 工具栏渲染完成回调\r\n var toolbarRenderComplete = function(){\r\n typeof options.toolbarRenderComplete === 'function' && options.toolbarRenderComplete();\r\n };\r\n\r\n // 添加工具栏左侧模板\r\n var leftDefaultTemp = [\r\n '
                        ',\r\n '
                        ',\r\n '
                        '\r\n ].join('');\r\n var elemToolTemp = that.layTool.find('.layui-table-tool-temp');\r\n\r\n if(options.toolbar === 'default'){\r\n elemToolTemp.html(leftDefaultTemp);\r\n } else if(typeof options.toolbar === 'string'){\r\n var toolbarHtml = $(options.toolbar).html() || '';\r\n toolbarHtml && elemToolTemp.html(\r\n laytpl(toolbarHtml).render(options)\r\n );\r\n }\r\n\r\n // 添加工具栏右侧面板\r\n var layout = {\r\n filter: {\r\n title: '筛选列',\r\n layEvent: 'LAYTABLE_COLS',\r\n icon: 'layui-icon-cols'\r\n },\r\n exports: {\r\n title: '导出',\r\n layEvent: 'LAYTABLE_EXPORT',\r\n icon: 'layui-icon-export'\r\n },\r\n print: {\r\n title: '打印',\r\n layEvent: 'LAYTABLE_PRINT',\r\n icon: 'layui-icon-print'\r\n }\r\n }, iconElem = [];\r\n\r\n if(typeof options.defaultToolbar === 'object'){\r\n layui.each(options.defaultToolbar, function(i, item){\r\n var thisItem = typeof item === 'string' ? layout[item] : item;\r\n if(thisItem){\r\n iconElem.push('
                        '\r\n +''\r\n +'
                        ');\r\n }\r\n });\r\n }\r\n that.layTool.find('.layui-table-tool-self').html(iconElem.join(''));\r\n\r\n toolbarRenderComplete();\r\n };\r\n\r\n // 分页栏\r\n Class.prototype.renderPagebar = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n var layPagebar = that.layPagebar = $('
                        ');\r\n\r\n // 开启分页栏自定义模板\r\n if(options.pagebar){\r\n var pagebarHtml = $(options.pagebar).html() || '';\r\n pagebarHtml && layPagebar.append(laytpl(pagebarHtml).render(options));\r\n that.layPage.append(layPagebar);\r\n }\r\n };\r\n\r\n // 同步表头父列的相关值\r\n Class.prototype.setParentCol = function(hide, parentKey){\r\n var that = this;\r\n var options = that.config;\r\n\r\n var parentTh = that.layHeader.find('th[data-key=\"'+ parentKey +'\"]'); // 获取父列元素\r\n var parentColspan = parseInt(parentTh.attr('colspan')) || 0;\r\n\r\n if(parentTh[0]){\r\n var arrParentKey = parentKey.split('-');\r\n var getThisCol = options.cols[arrParentKey[1]][arrParentKey[2]];\r\n\r\n hide ? parentColspan-- : parentColspan++;\r\n\r\n parentTh.attr('colspan', parentColspan);\r\n parentTh[parentColspan ? 'removeClass' : 'addClass'](HIDE); // 如果子列显示,父列必然需要显示\r\n\r\n getThisCol.colspan2 = parentColspan; // 更新实际的 colspan 数\r\n getThisCol.hide = parentColspan < 1; // 同步 hide 参数\r\n\r\n // 递归,继续往上查询是否有父列\r\n var nextParentKey = parentTh.data('parentkey');\r\n nextParentKey && that.setParentCol(hide, nextParentKey);\r\n }\r\n };\r\n\r\n // 多级表头补丁\r\n Class.prototype.setColsPatch = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 同步表头父列的相关值\r\n layui.each(options.cols, function(i1, item1){\r\n layui.each(item1, function(i2, item2){\r\n if(item2.hide){\r\n that.setParentCol(item2.hide, item2.parentKey);\r\n }\r\n });\r\n });\r\n };\r\n\r\n // 设置组合表头的最大宽度\r\n Class.prototype.setGroupWidth = function(th){\r\n var that = this;\r\n var options = that.config;\r\n\r\n if(options.cols.length <= 1) return;\r\n\r\n // 获取表头组合\r\n var groups = that.layHeader.find((\r\n // 根据当前活动的表头 parentkey 属性查找其组合表头\r\n th ? ('th[data-key='+ th.data('parentkey') +']>') : ''\r\n ) + '.' + ELEM_GROUP); // 若无指向当前活动表头,则自下而上获取所有组合表头\r\n\r\n groups.css('width', 0);\r\n layui.each(groups.get().reverse(), function(){\r\n var othis = $(this);\r\n var key = othis.parent().data('key');\r\n var maxWidth = 0;\r\n\r\n that.layHeader.eq(0).find('th[data-parentkey='+ key +']').width(function(i, width){\r\n var oTh = $(this);\r\n if(oTh.hasClass(HIDE)) return;\r\n width > 0 && (maxWidth += width);\r\n });\r\n\r\n // 给组合表头赋值最大宽度\r\n if(maxWidth) othis.css('max-width', maxWidth - 1);\r\n\r\n // 若当前活动的组合表头仍存在上级,则继续向上设置\r\n if(th && othis.parent().data('parentkey')){\r\n that.setGroupWidth(othis.parent());\r\n }\r\n });\r\n groups.css('width', 'auto');\r\n };\r\n\r\n // 动态分配列宽\r\n Class.prototype.setColsWidth = function(){\r\n var that = this;\r\n var options = that.config;\r\n var colNums = 0; // 列个数\r\n var autoColNums = 0; // 自动列宽的列个数\r\n var autoWidth = 0; // 自动列分配的宽度\r\n var countWidth = 0; // 所有列总宽度和\r\n var cntrWidth = that.setInit('width');\r\n\r\n // 统计列个数\r\n that.eachCols(function(i, item){\r\n item.hide || colNums++;\r\n });\r\n\r\n // 减去边框差和滚动条宽\r\n cntrWidth = cntrWidth - function(){\r\n return (options.skin === 'line' || options.skin === 'nob') ? 2 : colNums + 1;\r\n }() - that.getScrollWidth(that.layMain[0]) - 1;\r\n\r\n // 计算自动分配的宽度\r\n var getAutoWidth = function(back){\r\n // 遍历所有列\r\n layui.each(options.cols, function(i1, item1){\r\n layui.each(item1, function(i2, item2){\r\n var width = 0;\r\n var minWidth = item2.minWidth || options.cellMinWidth; // 最小宽度\r\n var maxWidth = item2.maxWidth || options.cellMaxWidth; // 最大宽度\r\n\r\n if(!item2){\r\n item1.splice(i2, 1);\r\n return;\r\n }\r\n\r\n if(item2.colGroup || item2.hide) return;\r\n\r\n if(!back){\r\n width = item2.width || 0;\r\n if(/\\d+%$/.test(width)){ // 列宽为百分比\r\n width = Math.floor((parseFloat(width) / 100) * cntrWidth);\r\n width < minWidth && (width = minWidth);\r\n width > maxWidth && (width = maxWidth);\r\n } else if(!width){ // 列宽未填写\r\n item2.width = width = 0;\r\n autoColNums++;\r\n } else if(item2.type === 'normal'){\r\n // 若 width 小于 minWidth, 则将 width 值自动设为 minWidth 的值\r\n width < minWidth && (item2.width = width = minWidth);\r\n // 若 width 大于 maxWidth, 则将 width 值自动设为 maxWidth 的值\r\n width > maxWidth && (item2.width = width = maxWidth);\r\n }\r\n } else if(autoWidth && autoWidth < minWidth){\r\n autoColNums--;\r\n width = minWidth;\r\n } else if(autoWidth && autoWidth > maxWidth){\r\n autoColNums--;\r\n width = maxWidth;\r\n }\r\n\r\n if(item2.hide) width = 0;\r\n countWidth = countWidth + width;\r\n });\r\n });\r\n\r\n // 如果未填充满,则将剩余宽度平分\r\n (cntrWidth > countWidth && autoColNums > 0) && (\r\n autoWidth = (cntrWidth - countWidth) / autoColNums\r\n );\r\n }\r\n\r\n getAutoWidth();\r\n getAutoWidth(true); // 重新检测分配的宽度是否低于最小列宽\r\n\r\n // 记录自动列数\r\n that.autoColNums = autoColNums = autoColNums > 0 ? autoColNums : 0;\r\n\r\n // 设置列宽\r\n that.eachCols(function(i3, item3){\r\n var minWidth = item3.minWidth || options.cellMinWidth;\r\n var maxWidth = item3.maxWidth || options.cellMaxWidth;\r\n\r\n if(item3.colGroup || item3.hide) return;\r\n\r\n // 给未分配宽的列平均分配宽\r\n if(item3.width === 0){\r\n that.cssRules(item3.key, function(item){\r\n item.style.width = Math.floor(function(){\r\n if(autoWidth < minWidth) return minWidth;\r\n if(autoWidth > maxWidth) return maxWidth;\r\n return autoWidth;\r\n }()) + 'px';\r\n });\r\n }\r\n\r\n // 给设定百分比的列分配列宽\r\n else if(/\\d+%$/.test(item3.width)){\r\n that.cssRules(item3.key, function(item){\r\n var width = Math.floor((parseFloat(item3.width) / 100) * cntrWidth);\r\n width < minWidth && (width = minWidth);\r\n width > maxWidth && (width = maxWidth);\r\n item.style.width = width + 'px';\r\n });\r\n }\r\n\r\n // 给拥有普通 width 值的列分配最新列宽\r\n else {\r\n that.cssRules(item3.key, function(item){\r\n item.style.width = item3.width + 'px';\r\n });\r\n }\r\n });\r\n\r\n // 填补 Math.floor 造成的数差\r\n var patchNums = that.layMain.width() - that.getScrollWidth(that.layMain[0])\r\n - that.layMain.children('table').outerWidth();\r\n\r\n if(that.autoColNums > 0 && patchNums >= -colNums && patchNums <= colNums){\r\n var getEndTh = function(th){\r\n var field;\r\n th = th || that.layHeader.eq(0).find('thead > tr:first-child > th:last-child')\r\n field = th.data('field');\r\n if(!field && th.prev()[0]){\r\n return getEndTh(th.prev())\r\n }\r\n return th;\r\n };\r\n var th = getEndTh();\r\n var key = th.data('key');\r\n\r\n that.cssRules(key, function(item){\r\n var width = item.style.width || th.outerWidth();\r\n item.style.width = (parseFloat(width) + patchNums) + 'px';\r\n\r\n // 二次校验,如果仍然出现横向滚动条(通常是 1px 的误差导致)\r\n if(that.layMain.height() - that.layMain.prop('clientHeight') > 0){\r\n item.style.width = (parseFloat(item.style.width) - 1) + 'px';\r\n }\r\n });\r\n }\r\n\r\n that.setGroupWidth();\r\n\r\n // 如果表格内容为空(无数据 或 请求异常)\r\n if (that.layMain.find('tbody').is(\":empty\")) {\r\n // 将表格宽度设置为跟表头一样的宽度,使之可以出现底部滚动条,以便滚动查看所有字段\r\n var headerWidth = that.layHeader.first().children('table').width()\r\n that.layMain.find('table').width(headerWidth);\r\n } else {\r\n that.layMain.find('table').width('auto');\r\n }\r\n\r\n };\r\n\r\n // 重置表格尺寸/结构\r\n Class.prototype.resize = function(){\r\n var that = this;\r\n\r\n if (!that.layMain) return;\r\n\r\n that.fullSize(); // 让表格铺满\r\n that.setColsWidth(); // 自适应列宽\r\n that.scrollPatch(); // 滚动条补丁\r\n };\r\n\r\n // 表格重载\r\n Class.prototype.reload = function(options, deep, type){\r\n var that = this;\r\n\r\n options = options || {};\r\n delete that.haveInit;\r\n\r\n // 防止数组深度合并\r\n layui.each(options, function(key, item){\r\n if(layui.type(item) === 'array') delete that.config[key];\r\n });\r\n\r\n // 对参数进行深度或浅扩展\r\n that.config = $.extend(deep, {}, that.config, options);\r\n if (type !== 'reloadData') {\r\n layui.each(that.config.cols, function (i1, item1) {\r\n layui.each(item1, function (i2, item2) {\r\n delete item2.colspan2;\r\n })\r\n })\r\n delete that.config.HAS_SET_COLS_PATCH;\r\n }\r\n // 执行渲染\r\n that.render(type);\r\n };\r\n\r\n // 异常提示\r\n Class.prototype.errorView = function(html){\r\n var that = this\r\n ,elemNone = that.layMain.find('.'+ NONE)\r\n ,layNone = $('
                        '+ (html || 'Error') +'
                        ');\r\n\r\n if(elemNone[0]){\r\n that.layNone.remove();\r\n elemNone.remove();\r\n }\r\n\r\n that.layFixed.addClass(HIDE);\r\n that.layMain.find('tbody').html('');\r\n\r\n that.layMain.append(that.layNone = layNone);\r\n\r\n // 异常情况下对 page 和 total 的内容处理\r\n that.layTotal.addClass(HIDE_V);\r\n that.layPage.find(ELEM_PAGE_VIEW).addClass(HIDE_V);\r\n\r\n table.cache[that.key] = []; //格式化缓存数据\r\n\r\n that.syncCheckAll();\r\n that.renderForm();\r\n that.setColsWidth();\r\n that.loading(false);\r\n };\r\n\r\n // 初始页码\r\n Class.prototype.page = 1;\r\n\r\n // 获得数据\r\n Class.prototype.pullData = function(curr, opts){\r\n var that = this;\r\n var options = that.config;\r\n // 同步表头父列的相关值\r\n options.HAS_SET_COLS_PATCH || that.setColsPatch();\r\n options.HAS_SET_COLS_PATCH = true;\r\n var request = options.request;\r\n var response = options.response;\r\n var res;\r\n var sort = function(){\r\n if(typeof options.initSort === 'object'){\r\n that.sort({\r\n field: options.initSort.field,\r\n type: options.initSort.type,\r\n reloadType: opts.type\r\n });\r\n }\r\n };\r\n var done = function(res, origin){\r\n that.setColsWidth();\r\n that.loading(false);\r\n typeof options.done === 'function' && options.done(\r\n res, curr, res[response.countName], origin\r\n );\r\n };\r\n\r\n\r\n opts = opts || {};\r\n\r\n // 数据拉取前的回调\r\n typeof options.before === 'function' && options.before(\r\n options\r\n );\r\n that.startTime = new Date().getTime(); // 渲染开始时间\r\n\r\n if (opts.renderData) { // 将 cache 信息重新渲染\r\n res = {};\r\n res[response.dataName] = table.cache[that.key];\r\n res[response.countName] = options.url ? (layui.type(options.page) === 'object' ? options.page.count : res[response.dataName].length) : options.data.length;\r\n\r\n // 记录合计行数据\r\n if(typeof options.totalRow === 'object'){\r\n res[response.totalRowName] = $.extend({}, that.totalRow);\r\n }\r\n\r\n that.renderData({\r\n res: res,\r\n curr: curr,\r\n count: res[response.countName],\r\n type: opts.type,\r\n sort: true\r\n }), done(res, 'renderData');\r\n } else if(options.url){ // Ajax请求\r\n var params = {};\r\n // 当 page 开启,默认自动传递 page、limit 参数\r\n if(options.page){\r\n params[request.pageName] = curr;\r\n params[request.limitName] = options.limit;\r\n }\r\n\r\n // 参数\r\n var data = $.extend(params, options.where);\r\n if(options.contentType && options.contentType.indexOf(\"application/json\") == 0){ // 提交 json 格式\r\n data = JSON.stringify(data);\r\n }\r\n\r\n that.loading(true);\r\n\r\n $.ajax({\r\n type: options.method || 'get',\r\n url: options.url,\r\n contentType: options.contentType,\r\n data: data,\r\n dataType: options.dataType || 'json',\r\n jsonpCallback: options.jsonpCallback,\r\n headers: options.headers || {},\r\n complete: typeof options.complete === 'function' ? options.complete : undefined,\r\n success: function(res){\r\n // 若有数据解析的回调,则获得其返回的数据\r\n if(typeof options.parseData === 'function'){\r\n res = options.parseData(res) || res;\r\n }\r\n // 检查数据格式是否符合规范\r\n if(res[response.statusName] != response.statusCode){\r\n that.errorView(\r\n res[response.msgName] ||\r\n ('返回的数据不符合规范,正确的成功状态码应为:\"'+ response.statusName +'\": '+ response.statusCode)\r\n );\r\n } else {\r\n that.totalRow = res[response.totalRowName];\r\n that.renderData({\r\n res: res,\r\n curr: curr,\r\n count: res[response.countName],\r\n type: opts.type\r\n }), sort();\r\n\r\n // 耗时(接口请求+视图渲染)\r\n options.time = (new Date().getTime() - that.startTime) + ' ms';\r\n }\r\n done(res, opts.type);\r\n },\r\n error: function(e, msg){\r\n that.errorView('请求异常,错误提示:'+ msg);\r\n typeof options.error === 'function' && options.error(e, msg);\r\n }\r\n });\r\n } else if(layui.type(options.data) === 'array'){ //已知数据\r\n res = {};\r\n var startLimit = curr*options.limit - options.limit;\r\n var newData = options.data.concat();\r\n\r\n res[response.dataName] = options.page\r\n ? newData.splice(startLimit, options.limit)\r\n : newData;\r\n res[response.countName] = options.data.length;\r\n\r\n // 记录合计行数据\r\n if(typeof options.totalRow === 'object'){\r\n res[response.totalRowName] = $.extend({}, options.totalRow);\r\n }\r\n that.totalRow = res[response.totalRowName];\r\n\r\n that.renderData({\r\n res: res,\r\n curr: curr,\r\n count: res[response.countName],\r\n type: opts.type\r\n }), sort();\r\n\r\n done(res, opts.type);\r\n }\r\n };\r\n\r\n // 遍历表头\r\n Class.prototype.eachCols = function(callback){\r\n var that = this;\r\n table.eachCols(null, callback, that.config.cols);\r\n return that;\r\n };\r\n\r\n // 获取表头参数项\r\n Class.prototype.col = function(key){\r\n try {\r\n key = key.split('-');\r\n return this.config.cols[key[1]][key[2]] || {};\r\n } catch(e){\r\n hint.error(e);\r\n return {};\r\n }\r\n };\r\n\r\n Class.prototype.getTrHtml = function(data, sort, curr, trsObj) {\r\n var that = this;\r\n var options = that.config;\r\n var trs = trsObj && trsObj.trs || [];\r\n var trs_fixed = trsObj && trsObj.trs_fixed || [];\r\n var trs_fixed_r = trsObj && trsObj.trs_fixed_r || [];\r\n curr = curr || 1\r\n\r\n layui.each(data, function(i1, item1){\r\n var tds = [];\r\n var tds_fixed = [];\r\n var tds_fixed_r = [];\r\n var numbers = i1 + options.limit*(curr - 1) + 1; // 序号\r\n\r\n // 数组值是否为 object,如果不是,则自动转为 object\r\n if(typeof item1 !== 'object'){\r\n data[i1] = item1 = {LAY_KEY: item1};\r\n try {\r\n table.cache[that.key][i1] = item1;\r\n } catch(e) {}\r\n }\r\n\r\n //若数据项为空数组,则不往下执行(因为删除数据时,会将原有数据设置为 [])\r\n if(layui.type(item1) === 'array' && item1.length === 0) return;\r\n\r\n // 加入序号保留字段\r\n item1[table.config.numbersName] = numbers;\r\n\r\n // 记录下标索引,用于恢复排序\r\n if(!sort) item1[table.config.indexName] = i1;\r\n\r\n // 遍历表头\r\n that.eachCols(function(i3, item3){\r\n var field = item3.field || i3;\r\n var key = item3.key;\r\n var content = item1[field];\r\n\r\n if(content === undefined || content === null) content = '';\r\n if(item3.colGroup) return;\r\n\r\n // td 内容\r\n var td = [''\r\n ,'
                        '\r\n + function(){\r\n var tplData = $.extend(true, {\r\n LAY_COL: item3\r\n }, item1);\r\n var checkName = table.config.checkName;\r\n var disabledName = table.config.disabledName;\r\n\r\n // 渲染不同风格的列\r\n switch(item3.type){\r\n case 'checkbox': // 复选\r\n return '';\r\n //break;\r\n case 'radio': // 单选\r\n return '';\r\n //break;\r\n case 'numbers':\r\n return numbers;\r\n //break;\r\n }\r\n\r\n //解析工具列模板\r\n if(item3.toolbar){\r\n return laytpl($(item3.toolbar).html()||'').render(tplData);\r\n }\r\n return parseTempData.call(that, {\r\n item3: item3\r\n ,content: content\r\n ,tplData: tplData\r\n });\r\n }()\r\n ,'
                        '].join('');\r\n\r\n tds.push(td);\r\n if(item3.fixed && item3.fixed !== 'right') tds_fixed.push(td);\r\n if(item3.fixed === 'right') tds_fixed_r.push(td);\r\n });\r\n\r\n // 添加 tr 属性\r\n var trAttr = function(){\r\n var arr = ['data-index=\"'+ i1 +'\"'];\r\n if(item1[table.config.checkName]) arr.push('class=\"'+ ELEM_CHECKED +'\"');\r\n return arr.join(' ');\r\n }();\r\n\r\n trs.push(''+ tds.join('') + '');\r\n trs_fixed.push(''+ tds_fixed.join('') + '');\r\n trs_fixed_r.push(''+ tds_fixed_r.join('') + '');\r\n });\r\n\r\n return {\r\n trs: trs,\r\n trs_fixed: trs_fixed,\r\n trs_fixed_r: trs_fixed_r\r\n }\r\n }\r\n\r\n // 返回行节点代码\r\n table.getTrHtml = function (id, data) {\r\n var that = getThisTable(id);\r\n return that.getTrHtml(data, null, that.page);\r\n }\r\n\r\n // 数据渲染\r\n Class.prototype.renderData = function(opts){\r\n var that = this;\r\n var options = that.config;\r\n\r\n var res = opts.res;\r\n var curr = opts.curr;\r\n var count = that.count = opts.count;\r\n var sort = opts.sort;\r\n\r\n var data = res[options.response.dataName] || []; //列表数据\r\n var totalRowData = res[options.response.totalRowName]; //合计行数据\r\n var trs = [];\r\n var trs_fixed = [];\r\n var trs_fixed_r = [];\r\n\r\n // 渲染视图\r\n var render = function(){ // 后续性能提升的重点\r\n if(!sort && that.sortKey){\r\n return that.sort({\r\n field: that.sortKey.field,\r\n type: that.sortKey.sort,\r\n pull: true,\r\n reloadType: opts.type\r\n });\r\n }\r\n that.getTrHtml(data, sort, curr, {\r\n trs: trs,\r\n trs_fixed: trs_fixed,\r\n trs_fixed_r: trs_fixed_r\r\n });\r\n\r\n // 容器的滚动条位置\r\n if(!(options.scrollPos === 'fixed' && opts.type === 'reloadData')){\r\n that.layBody.scrollTop(0);\r\n }\r\n if(options.scrollPos === 'reset'){\r\n that.layBody.scrollLeft(0);\r\n }\r\n\r\n that.layMain.find('.'+ NONE).remove();\r\n that.layMain.find('tbody').html(trs.join(''));\r\n that.layFixLeft.find('tbody').html(trs_fixed.join(''));\r\n that.layFixRight.find('tbody').html(trs_fixed_r.join(''));\r\n\r\n // 渲染表单\r\n that.syncCheckAll();\r\n that.renderForm();\r\n\r\n // 因为 page 参数有可能发生变化 先重新铺满\r\n that.fullSize();\r\n\r\n // 滚动条补丁\r\n that.haveInit ? that.scrollPatch() : setTimeout(function(){\r\n that.scrollPatch();\r\n }, 50);\r\n that.haveInit = true;\r\n\r\n layer.close(that.tipsIndex);\r\n };\r\n\r\n table.cache[that.key] = data; //记录数据\r\n\r\n //显示隐藏合计栏\r\n that.layTotal[data.length == 0 ? 'addClass' : 'removeClass'](HIDE_V);\r\n\r\n //显示隐藏分页栏\r\n that.layPage[(options.page || options.pagebar) ? 'removeClass' : 'addClass'](HIDE);\r\n that.layPage.find(ELEM_PAGE_VIEW)[\r\n (!options.page || count == 0 || (data.length === 0 && curr == 1))\r\n ? 'addClass'\r\n : 'removeClass'\r\n ](HIDE_V);\r\n\r\n //如果无数据\r\n if(data.length === 0){\r\n return that.errorView(options.text.none);\r\n } else {\r\n that.layFixLeft.removeClass(HIDE);\r\n }\r\n\r\n //如果执行初始排序\r\n if(sort){\r\n return render();\r\n }\r\n\r\n //正常初始化数据渲染\r\n render(); //渲染数据\r\n that.renderTotal(data, totalRowData); //数据合计\r\n that.layTotal && that.layTotal.removeClass(HIDE);\r\n\r\n //同步分页状态\r\n if(options.page){\r\n options.page = $.extend({\r\n elem: 'layui-table-page' + options.index,\r\n count: count,\r\n limit: options.limit,\r\n limits: options.limits || [10,20,30,40,50,60,70,80,90],\r\n groups: 3,\r\n layout: ['prev', 'page', 'next', 'skip', 'count', 'limit'],\r\n prev: '',\r\n next: '',\r\n jump: function(obj, first){\r\n if(!first){\r\n //分页本身并非需要做以下更新,下面参数的同步,主要是因为其它处理统一用到了它们\r\n //而并非用的是 options.page 中的参数(以确保分页未开启的情况仍能正常使用)\r\n that.page = obj.curr; //更新页码\r\n options.limit = obj.limit; //更新每页条数\r\n\r\n that.pullData(obj.curr);\r\n }\r\n }\r\n }, options.page);\r\n options.page.count = count; //更新总条数\r\n laypage.render(options.page);\r\n }\r\n };\r\n\r\n // 重新渲染数据\r\n table.renderData = function (id) {\r\n var that = getThisTable(id);\r\n if (!that) {\r\n return;\r\n }\r\n\r\n that.pullData(that.page, {\r\n renderData: true,\r\n type: 'reloadData'\r\n });\r\n }\r\n\r\n // 数据合计行\r\n Class.prototype.renderTotal = function(data, totalRowData){\r\n var that = this;\r\n var options = that.config;\r\n var totalNums = {};\r\n\r\n if(!options.totalRow) return;\r\n\r\n layui.each(data, function(i1, item1){\r\n // 若数据项为空数组,则不往下执行(因为删除数据时,会将原有数据设置为 [])\r\n if(layui.type(item1) === 'array' && item1.length === 0) return;\r\n\r\n that.eachCols(function(i3, item3){\r\n var field = item3.field || i3\r\n ,content = item1[field];\r\n\r\n if(item3.totalRow){\r\n totalNums[field] = (totalNums[field] || 0) + (parseFloat(content) || 0);\r\n }\r\n });\r\n });\r\n\r\n that.dataTotal = []; // 记录合计行结果\r\n\r\n var tds = [];\r\n that.eachCols(function(i3, item3){\r\n var field = item3.field || i3;\r\n\r\n // 合计数据的特定字段\r\n var TOTAL_NUMS = totalRowData && totalRowData[item3.field];\r\n\r\n // 合计数据的小数点位数处理\r\n var decimals = 'totalRowDecimals' in item3 ? item3.totalRowDecimals : 2;\r\n var thisTotalNum = totalNums[field]\r\n ? parseFloat(totalNums[field] || 0).toFixed(decimals)\r\n : '';\r\n\r\n // td 显示内容\r\n var content = function(){\r\n var text = item3.totalRowText || '';\r\n var tplData = {\r\n LAY_COL: item3\r\n };\r\n\r\n tplData[field] = thisTotalNum;\r\n\r\n // 获取自动计算的合并内容\r\n var getContent = item3.totalRow ? (parseTempData.call(that, {\r\n item3: item3,\r\n content: thisTotalNum,\r\n tplData: tplData\r\n }) || text) : text;\r\n\r\n // 如果直接传入了合计行数据,则不输出自动计算的结果\r\n return TOTAL_NUMS || getContent;\r\n }();\r\n\r\n // 合计原始结果\r\n var total = TOTAL_NUMS || thisTotalNum || '';\r\n item3.field && that.dataTotal.push({\r\n field: item3.field,\r\n total: $('
                        '+ content +'
                        ').text()\r\n });\r\n\r\n // td 容器\r\n var td = ['',\r\n '
                        ' + function(){\r\n var totalRow = item3.totalRow || options.totalRow;\r\n\r\n // 如果 totalRow 参数为字符类型,则解析为自定义模版\r\n if(typeof totalRow === 'string'){\r\n return laytpl(totalRow).render($.extend({\r\n TOTAL_NUMS: TOTAL_NUMS || totalNums[field],\r\n TOTAL_ROW: totalRowData || {},\r\n LAY_COL: item3\r\n }, item3));\r\n }\r\n return content;\r\n }(),\r\n '
                        '].join('');\r\n\r\n tds.push(td);\r\n });\r\n\r\n var patchElem = that.layTotal.find('.layui-table-patch'); // 可能存在滚动条补丁\r\n that.layTotal.find('tbody').html('' + tds.join('') + (patchElem.length ? patchElem.get(0).outerHTML : '') + '');\r\n };\r\n\r\n //找到对应的列元素\r\n Class.prototype.getColElem = function(parent, key){\r\n var that = this;\r\n //var options = that.config;\r\n return parent.eq(0).find('.laytable-cell-'+ key + ':eq(0)');\r\n };\r\n\r\n // 渲染表单\r\n Class.prototype.renderForm = function(type){\r\n var that = this;\r\n var options = that.config;\r\n var filter = that.elem.attr('lay-filter');\r\n form.render(type, filter);\r\n };\r\n\r\n // 定向渲染表单\r\n Class.prototype.renderFormByElem = function(elem){\r\n layui.each(['input', 'select'], function(i, formType){\r\n form.render(elem.find(formType));\r\n })\r\n };\r\n\r\n // 同步全选按钮状态\r\n Class.prototype.syncCheckAll = function(){\r\n var that = this;\r\n var options = that.config;\r\n var checkAllElem = that.layHeader.find('input[name=\"layTableCheckbox\"]');\r\n var syncColsCheck = function(checked){\r\n that.eachCols(function(i, item){\r\n if(item.type === 'checkbox'){\r\n item[options.checkName] = checked;\r\n }\r\n });\r\n return checked;\r\n };\r\n var checkStatus = table.checkStatus(that.key);\r\n\r\n if(!checkAllElem[0]) return;\r\n\r\n // 选中状态\r\n syncColsCheck(checkStatus.isAll);\r\n checkAllElem.prop({\r\n checked: checkStatus.isAll,\r\n indeterminate: !checkStatus.isAll && checkStatus.data.length // 半选\r\n });\r\n form.render(checkAllElem);\r\n };\r\n\r\n // 标记当前活动行背景色\r\n Class.prototype.setRowActive = function(index, className, removeClass){\r\n var that = this;\r\n var options = that.config;\r\n var tr = that.layBody.find('tr[data-index=\"'+ index +'\"]');\r\n className = className || 'layui-table-click';\r\n\r\n if(removeClass) return tr.removeClass(className);\r\n\r\n tr.addClass(className);\r\n tr.siblings('tr').removeClass(className);\r\n };\r\n\r\n // 设置行选中状态\r\n Class.prototype.setRowChecked = function(opts){\r\n var that = this;\r\n var options = that.config;\r\n var isCheckAll = opts.index === 'all'; // 是否操作全部\r\n var isCheckMult = layui.type(opts.index) === 'array'; // 是否操作多个\r\n\r\n // 匹配行元素\r\n var tr = function(tr) {\r\n return isCheckAll ? tr : tr.filter(isCheckMult ? function() {\r\n var dataIndex = $(this).data('index');\r\n return opts.index.indexOf(dataIndex) !== -1;\r\n } : '[data-index=\"'+ opts.index +'\"]');\r\n }(that.layBody.find('tr'));\r\n\r\n // 默认属性\r\n opts = $.extend({\r\n type: 'checkbox' // 选中方式\r\n }, opts);\r\n\r\n // 同步数据选中属性值\r\n var thisData = table.cache[that.key];\r\n var existChecked = 'checked' in opts;\r\n\r\n // 若为单选框,则单向选中;若为复选框,则切换选中。\r\n var getChecked = function(value){\r\n return opts.type === 'radio' ? true : (existChecked ? opts.checked : !value)\r\n };\r\n\r\n // 设置选中状态\r\n layui.each(thisData, function(i, item){\r\n // 绕过空项和禁用项\r\n if(layui.type(item) === 'array' || item[options.disabledName]) return;\r\n\r\n // 匹配条件\r\n var matched = isCheckAll || (\r\n isCheckMult ? opts.index.indexOf(i) !== -1 : Number(opts.index) === i\r\n );\r\n\r\n // 设置匹配项的选中值\r\n if(matched){\r\n // 标记数据选中状态\r\n var checked = item[options.checkName] = getChecked(item[options.checkName]);\r\n\r\n // 标记当前行背景色\r\n var currTr = tr.filter('[data-index=\"'+ i +'\"]');\r\n currTr[checked ? 'addClass' : 'removeClass'](ELEM_CHECKED);\r\n\r\n // 若为 radio 类型,则取消其他行选中背景色\r\n if(opts.type === 'radio'){\r\n currTr.siblings().removeClass(ELEM_CHECKED);\r\n }\r\n } else if(opts.type === 'radio') {\r\n delete item[options.checkName];\r\n }\r\n });\r\n\r\n // 若存在复选框或单选框,则标注选中状态样式\r\n var checkedElem = tr.find('input[lay-type=\"'+ ({\r\n radio: 'layTableRadio',\r\n checkbox: 'layTableCheckbox'\r\n }[opts.type] || 'checkbox') +'\"]:not(:disabled)');\r\n var checkedSameElem = checkedElem.last();\r\n var fixRElem = checkedSameElem.closest(ELEM_FIXR);\r\n\r\n ( opts.type === 'radio' && fixRElem.hasClass(HIDE)\r\n ? checkedElem.first()\r\n : checkedElem ).prop('checked', getChecked(checkedSameElem.prop('checked')));\r\n\r\n that.syncCheckAll();\r\n that.renderForm(opts.type);\r\n };\r\n\r\n // 数据排序\r\n Class.prototype.sort = function(opts){ // field, type, pull, fromEvent\r\n var that = this;\r\n var field;\r\n var res = {};\r\n var options = that.config;\r\n var filter = options.elem.attr('lay-filter');\r\n var data = table.cache[that.key], thisData;\r\n\r\n opts = opts || {};\r\n\r\n // 字段匹配\r\n if(typeof opts.field === 'string'){\r\n field = opts.field;\r\n that.layHeader.find('th').each(function(i, item){\r\n var othis = $(this);\r\n var _field = othis.data('field');\r\n if(_field === opts.field){\r\n opts.field = othis;\r\n field = _field;\r\n return false;\r\n }\r\n });\r\n }\r\n\r\n try {\r\n field = field || opts.field.data('field');\r\n var key = opts.field.data('key');\r\n\r\n // 如果欲执行的排序已在状态中,则不执行渲染\r\n if(that.sortKey && !opts.pull){\r\n if(field === that.sortKey.field && opts.type === that.sortKey.sort){\r\n return;\r\n }\r\n }\r\n\r\n var elemSort = that.layHeader.find('th .laytable-cell-'+ key).find(ELEM_SORT);\r\n that.layHeader.find('th').find(ELEM_SORT).removeAttr('lay-sort'); // 清除其它标题排序状态\r\n elemSort.attr('lay-sort', opts.type || null);\r\n that.layFixed.find('th')\r\n } catch(e){\r\n hint.error('Table modules: sort field \\''+ field +'\\' not matched');\r\n }\r\n\r\n // 记录排序索引和类型\r\n that.sortKey = {\r\n field: field,\r\n sort: opts.type\r\n };\r\n\r\n // 默认为前端自动排序。如果否,则需自主排序(通常为服务端处理好排序)\r\n if(options.autoSort){\r\n if(opts.type === 'asc'){ //升序\r\n thisData = layui.sort(data, field, null, true);\r\n } else if(opts.type === 'desc'){ //降序\r\n thisData = layui.sort(data, field, true, true);\r\n } else { // 清除排序\r\n thisData = layui.sort(data, table.config.indexName, null, true);\r\n delete that.sortKey;\r\n delete options.initSort;\r\n }\r\n }\r\n\r\n res[options.response.dataName] = thisData || data;\r\n\r\n // 重载数据\r\n that.renderData({\r\n res: res,\r\n curr: that.page,\r\n count: that.count,\r\n sort: true,\r\n type: opts.reloadType\r\n });\r\n\r\n // 排序是否来自于点击表头事件触发\r\n if(opts.fromEvent){\r\n options.initSort = {\r\n field: field,\r\n type: opts.type\r\n };\r\n layui.event.call(opts.field, MOD_NAME, 'sort('+ filter +')', $.extend({\r\n config: options\r\n }, options.initSort));\r\n }\r\n };\r\n\r\n // 请求 loading\r\n Class.prototype.loading = function(show){\r\n var that = this;\r\n var options = that.config;\r\n\r\n if(options.loading){\r\n that.layBox.find(ELEM_INIT).toggleClass(HIDE_V, !show); \r\n }\r\n };\r\n\r\n // 获取对应单元格的 cssRules\r\n Class.prototype.cssRules = function(key, callback){\r\n var that = this;\r\n var style = that.elem.children('style')[0];\r\n\r\n lay.getStyleRules(style, function(item){\r\n if (item.selectorText === ('.laytable-cell-'+ key)) {\r\n callback(item);\r\n return true;\r\n }\r\n });\r\n };\r\n\r\n // 让表格铺满\r\n Class.prototype.fullSize = function(){\r\n var that = this;\r\n var options = that.config;\r\n var height = options.height;\r\n var bodyHeight;\r\n var MIN_HEIGHT = 135;\r\n\r\n if(that.fullHeightGap){\r\n height = _WIN.height() - that.fullHeightGap;\r\n if(height < MIN_HEIGHT) height = MIN_HEIGHT;\r\n // that.elem.css('height', height);\r\n } else if (that.parentDiv && that.parentHeightGap) {\r\n height = $(that.parentDiv).height() - that.parentHeightGap;\r\n if(height < MIN_HEIGHT) height = MIN_HEIGHT;\r\n // that.elem.css(\"height\", height);\r\n } else if (that.customHeightFunc) {\r\n height = that.customHeightFunc();\r\n if(height < MIN_HEIGHT) height = MIN_HEIGHT;\r\n }\r\n\r\n // 如果多级表头,则填补表头高度\r\n if(options.cols.length > 1){\r\n // 补全高度\r\n var th = that.layFixed.find(ELEM_HEADER).find('th');\r\n // 固定列表头同步跟本体 th 一致高度\r\n var headerMain = that.layHeader.first();\r\n layui.each(th, function (thIndex, thElem) {\r\n thElem = $(thElem);\r\n thElem.height(headerMain.find('th[data-key=\"' + thElem.attr('data-key') + '\"]').height() + 'px');\r\n })\r\n }\r\n\r\n if(!height) return;\r\n\r\n // 减去列头区域的高度 --- 此处的数字常量是为了防止容器处在隐藏区域无法获得高度的问题,只对默认尺寸表格做支持\r\n bodyHeight = parseFloat(height) - (that.layHeader.outerHeight() || 39)\r\n\r\n // 减去工具栏的高度\r\n if(options.toolbar){\r\n bodyHeight -= (that.layTool.outerHeight() || 51);\r\n }\r\n\r\n // 减去统计栏的高度\r\n if(options.totalRow){\r\n bodyHeight -= (that.layTotal.outerHeight() || 40);\r\n }\r\n\r\n // 减去分页栏的高度\r\n if(options.page || options.pagebar){\r\n bodyHeight -= (that.layPage.outerHeight() || 43);\r\n }\r\n\r\n if (options.maxHeight) {\r\n layui.each({elem: height, layMain: bodyHeight}, function (elemName, elemHeight) {\r\n that[elemName].css({\r\n height: 'auto',\r\n maxHeight: elemHeight + 'px'\r\n });\r\n });\r\n } else {\r\n that.layMain.outerHeight(bodyHeight);\r\n }\r\n };\r\n\r\n //获取滚动条宽度\r\n Class.prototype.getScrollWidth = function(elem){\r\n var width;\r\n if(elem){\r\n width = elem.offsetWidth - elem.clientWidth;\r\n } else {\r\n elem = document.createElement('div');\r\n elem.style.width = '100px';\r\n elem.style.height = '100px';\r\n elem.style.overflowY = 'scroll';\r\n\r\n document.body.appendChild(elem);\r\n width = elem.offsetWidth - elem.clientWidth;\r\n document.body.removeChild(elem);\r\n }\r\n return width;\r\n };\r\n\r\n // 滚动条补丁\r\n Class.prototype.scrollPatch = function(){\r\n var that = this;\r\n var layMainTable = that.layMain.children('table');\r\n var scrollWidth = that.layMain.width() - that.layMain.prop('clientWidth'); // 纵向滚动条宽度\r\n var scrollHeight = that.layMain.height() - that.layMain.prop('clientHeight'); // 横向滚动条高度\r\n var getScrollWidth = that.getScrollWidth(that.layMain[0]); // 获取主容器滚动条宽度,如果有的话\r\n var outWidth = layMainTable.outerWidth() - that.layMain.width(); // 表格内容器的超出宽度\r\n\r\n // 添加补丁\r\n var addPatch = function(elem){\r\n if(scrollWidth && scrollHeight){\r\n elem = elem.eq(0);\r\n if(!elem.find('.layui-table-patch')[0]){\r\n var patchElem = $('
                        '); // 补丁元素\r\n patchElem.find('div').css({\r\n width: scrollWidth\r\n });\r\n elem.find('tr').append(patchElem);\r\n }\r\n } else {\r\n elem.find('.layui-table-patch').remove();\r\n }\r\n };\r\n\r\n addPatch(that.layHeader);\r\n addPatch(that.layTotal);\r\n\r\n // 固定列区域高度\r\n var mainHeight = that.layMain.height();\r\n var fixHeight = mainHeight - scrollHeight;\r\n\r\n that.layFixed.find(ELEM_BODY).css(\r\n 'height',\r\n layMainTable.height() >= fixHeight ? fixHeight : 'auto'\r\n ).scrollTop(that.layMain.scrollTop()); // 固定列滚动条高度\r\n\r\n // 表格宽度小于容器宽度时,隐藏固定列\r\n that.layFixRight[\r\n (table.cache[that.key] && table.cache[that.key].length) && outWidth > 0\r\n ? 'removeClass'\r\n : 'addClass'\r\n ](HIDE);\r\n\r\n // 操作栏\r\n that.layFixRight.css('right', scrollWidth - 1);\r\n };\r\n\r\n /**\r\n * @typedef updateRowOptions\r\n * @prop {number} index - 行索引\r\n * @prop {Object.} data - 行数据\r\n * @prop {boolean | ((field, index) => boolean)} [related] - 更新其他包含自定义模板且可能有所关联的列视图\r\n */\r\n /**\r\n * 更新指定行\r\n * @param {updateRowOptions | updateRowOptions[]} opts \r\n * @param {(field: string, value: any) => void} [callback] - 更新每个字段时的回调函数\r\n */\r\n Class.prototype.updateRow = function(opts, callback){\r\n var that = this;\r\n var ELEM_CELL = '.layui-table-cell';\r\n var opts = layui.type(opts) === 'array' ? opts : [opts];\r\n var dataCache = table.cache[that.key] || [];\r\n\r\n var update = function(opt){\r\n var index = opt.index;\r\n var row = opt.data;\r\n var related = opt.related;\r\n\r\n var data = dataCache[index] || {};\r\n var tr = that.layBody.find('tr[data-index=\"' + index + '\"]');\r\n\r\n // 更新缓存中的数据\r\n layui.each(row, function (key, value) {\r\n data[key] = value;\r\n callback && callback(key, value);\r\n });\r\n\r\n // 更新单元格\r\n that.eachCols(function (i, item3) {\r\n var field = String(item3.field || i);\r\n var shouldUpdate = field in row || ((typeof related === 'function' ? related(field, i) : related) && (item3.templet || item3.toolbar));\r\n if(shouldUpdate){\r\n var td = tr.children('td[data-field=\"' + field + '\"]');\r\n var cell = td.children(ELEM_CELL);\r\n var content = data[item3.field];\r\n cell.html(parseTempData.call(that, {\r\n item3: item3,\r\n content: content,\r\n tplData: $.extend({\r\n LAY_COL: item3,\r\n }, data)\r\n }));\r\n td.data(\"content\", content);\r\n that.renderFormByElem(cell);\r\n }\r\n });\r\n }\r\n\r\n layui.each(opts, function(i, opt){\r\n update(opt);\r\n });\r\n };\r\n\r\n /**\r\n * 更新指定行\r\n * @param {string} id - table ID\r\n * @param {updateRowOptions | updateRowOptions[]} options \r\n */\r\n table.updateRow = function (id, options){\r\n var that = getThisTable(id);\r\n return that.updateRow(options);\r\n }\r\n\r\n // 事件处理\r\n Class.prototype.events = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n var filter = options.elem.attr('lay-filter');\r\n var th = that.layHeader.find('th');\r\n var ELEM_CELL = '.layui-table-cell';\r\n\r\n var _BODY = $('body');\r\n var dict = {};\r\n\r\n // 头部工具栏操作事件\r\n that.layTool.on('click', '*[lay-event]', function(e){\r\n var othis = $(this);\r\n var events = othis.attr('lay-event');\r\n var data = table.cache[options.id];\r\n var openPanel = function(sets){\r\n var list = $(sets.list);\r\n var panel = $('
                          ');\r\n\r\n panel.html(list);\r\n\r\n // 限制最大高度\r\n if(options.height){\r\n panel.css('max-height', options.height - (that.layTool.outerHeight() || 50));\r\n }\r\n\r\n // 插入元素\r\n othis.find('.' + ELEM_TOOL_PANEL)[0] || othis.append(panel);\r\n that.renderForm();\r\n\r\n panel.on('click', function(e){\r\n layui.stope(e);\r\n });\r\n\r\n sets.done && sets.done(panel, list)\r\n };\r\n\r\n layui.stope(e);\r\n _DOC.trigger('table.tool.panel.remove');\r\n layer.close(that.tipsIndex);\r\n\r\n switch(events){\r\n case 'LAYTABLE_COLS': // 筛选列\r\n openPanel({\r\n list: function(){\r\n var lis = [];\r\n that.eachCols(function(i, item){\r\n if(item.field && item.type == 'normal'){\r\n lis.push('
                        • ' + (item.fieldTitle || item.title || item.field) + '
                        • ').text()) +'\" lay-filter=\"LAY_TABLE_TOOL_COLS\">');\r\n }\r\n });\r\n return lis.join('');\r\n }()\r\n ,done: function(){\r\n form.on('checkbox(LAY_TABLE_TOOL_COLS)', function(obj){\r\n var othis = $(obj.elem);\r\n var checked = this.checked;\r\n var key = othis.data('key');\r\n var col = that.col(key);\r\n var hide = col.hide;\r\n var parentKey = othis.data('parentkey');\r\n\r\n if(!col.key) return;\r\n\r\n // 同步勾选列的 hide 值和隐藏样式\r\n col.hide = !checked;\r\n that.elem.find('*[data-key=\"'+ key +'\"]')[\r\n checked ? 'removeClass' : 'addClass'\r\n ](HIDE);\r\n\r\n // 根据列的显示隐藏,同步多级表头的父级相关属性值\r\n if(hide != col.hide){\r\n that.setParentCol(!checked, parentKey);\r\n }\r\n\r\n // 重新适配尺寸\r\n that.resize();\r\n\r\n // 列筛选(显示或隐藏)后的事件\r\n layui.event.call(this, MOD_NAME, 'colToggled('+ filter +')', {\r\n col: col,\r\n config: options\r\n });\r\n });\r\n }\r\n });\r\n break;\r\n case 'LAYTABLE_EXPORT': // 导出\r\n if (!data.length) return layer.tips('当前表格无数据', this, {tips: 3});\r\n if(device.ie){\r\n layer.tips('导出功能不支持 IE,请用 Chrome 等高级浏览器导出', this, {\r\n tips: 3\r\n });\r\n } else {\r\n openPanel({\r\n list: function(){\r\n return [\r\n '
                        • 导出 csv 格式文件
                        • ',\r\n '
                        • 导出 xls 格式文件
                        • '\r\n ].join('')\r\n }(),\r\n done: function(panel, list){\r\n list.on('click', function(){\r\n var type = $(this).data('type')\r\n table.exportFile.call(that, options.id, null, type);\r\n });\r\n }\r\n });\r\n }\r\n break;\r\n case 'LAYTABLE_PRINT': // 打印\r\n if (!data.length) return layer.tips('当前表格无数据', this, {tips: 3});\r\n var printWin = window.open('about:blank', '_blank');\r\n var style = [''].join('')\r\n var html = $(that.layHeader.html()); // 输出表头\r\n\r\n html.append(that.layMain.find('table').html()); // 输出表体\r\n html.append(that.layTotal.find('table').html()) // 输出合计行\r\n\r\n html.find('th.layui-table-patch').remove(); // 移除补丁\r\n // 移除表头特殊列\r\n html.find('thead>tr>th.'+ ELEM_COL_SPECIAL).filter(function(i, thElem){\r\n return !$(thElem).children('.'+ ELEM_GROUP).length; // 父级表头除外\r\n }).remove();\r\n html.find('tbody>tr>td.'+ ELEM_COL_SPECIAL).remove(); // 移除表体特殊列\r\n\r\n printWin.document.write(style + html.prop('outerHTML'));\r\n printWin.document.close();\r\n\r\n if(layui.device('edg').edg){\r\n printWin.onafterprint = printWin.close;\r\n printWin.print();\r\n }else{\r\n printWin.print();\r\n printWin.close();\r\n }\r\n break;\r\n }\r\n\r\n layui.event.call(this, MOD_NAME, 'toolbar('+ filter +')', $.extend({\r\n event: events,\r\n config: options\r\n },{}));\r\n });\r\n\r\n // 表头自定义元素事件\r\n that.layHeader.on('click', '*[lay-event]', function(e){\r\n var othis = $(this);\r\n var events = othis.attr('lay-event');\r\n var th = othis.closest('th');\r\n var key = th.data('key');\r\n var col = that.col(key);\r\n\r\n layui.event.call(this, MOD_NAME, 'colTool('+ filter +')', $.extend({\r\n event: events,\r\n config: options,\r\n col: col\r\n },{}));\r\n });\r\n\r\n // 分页栏操作事件\r\n that.layPagebar.on('click', '*[lay-event]', function(e){\r\n var othis = $(this);\r\n var events = othis.attr('lay-event');\r\n\r\n layui.event.call(this, MOD_NAME, 'pagebar('+ filter +')', $.extend({\r\n event: events,\r\n config: options\r\n },{}));\r\n });\r\n\r\n // 拖拽调整宽度\r\n th.on('mousemove', function(e){\r\n var othis = $(this);\r\n var oLeft = othis.offset().left;\r\n var pLeft = e.clientX - oLeft;\r\n if(othis.data('unresize') || thisTable.eventMoveElem){\r\n return;\r\n }\r\n dict.allowResize = othis.width() - pLeft <= 10; //是否处于拖拽允许区域\r\n _BODY.css('cursor', (dict.allowResize ? 'col-resize' : ''));\r\n }).on('mouseleave', function(){\r\n var othis = $(this);\r\n if(thisTable.eventMoveElem) return;\r\n dict.allowResize = false;\r\n _BODY.css('cursor', '');\r\n }).on('mousedown', function(e){\r\n var othis = $(this);\r\n if(dict.allowResize){\r\n var key = othis.data('key');\r\n e.preventDefault();\r\n dict.offset = [e.clientX, e.clientY]; //记录初始坐标\r\n\r\n that.cssRules(key, function(item){\r\n var width = item.style.width || othis.outerWidth();\r\n dict.rule = item;\r\n dict.ruleWidth = parseFloat(width);\r\n dict.minWidth = othis.data('minwidth') || options.cellMinWidth;\r\n dict.maxWidth = othis.data('maxwidth') || options.cellMaxWidth;\r\n });\r\n\r\n // 临时记录当前拖拽信息\r\n othis.data(DATA_MOVE_NAME, dict);\r\n thisTable.eventMoveElem = othis;\r\n }\r\n });\r\n\r\n // 拖拽中\r\n if(!thisTable.docEvent){\r\n _DOC.on('mousemove', function(e){\r\n if(thisTable.eventMoveElem){\r\n var dict = thisTable.eventMoveElem.data(DATA_MOVE_NAME) || {};\r\n\r\n thisTable.eventMoveElem.data('resizing', 1);\r\n e.preventDefault();\r\n\r\n if(dict.rule){\r\n var setWidth = dict.ruleWidth + e.clientX - dict.offset[0];\r\n var id = thisTable.eventMoveElem.closest('.' + ELEM_VIEW).attr(MOD_ID);\r\n var thatTable = getThisTable(id);\r\n\r\n if(!thatTable) return;\r\n\r\n if(setWidth < dict.minWidth) setWidth = dict.minWidth;\r\n if(setWidth > dict.maxWidth) setWidth = dict.maxWidth;\r\n\r\n dict.rule.style.width = setWidth + 'px';\r\n thatTable.setGroupWidth(thisTable.eventMoveElem);\r\n layer.close(that.tipsIndex);\r\n }\r\n }\r\n }).on('mouseup', function(e){\r\n if(thisTable.eventMoveElem){\r\n var th = thisTable.eventMoveElem; // 当前触发拖拽的 th 元素\r\n var id = th.closest('.' + ELEM_VIEW).attr(MOD_ID);\r\n var thatTable = getThisTable(id);\r\n\r\n if(!thatTable) return;\r\n\r\n var key = th.data('key');\r\n var col = thatTable.col(key);\r\n var filter = thatTable.config.elem.attr('lay-filter');\r\n\r\n // 重置过度信息\r\n dict = {};\r\n _BODY.css('cursor', '');\r\n thatTable.scrollPatch();\r\n\r\n // 清除当前拖拽信息\r\n th.removeData(DATA_MOVE_NAME);\r\n delete thisTable.eventMoveElem;\r\n\r\n // 列拖拽宽度后的事件\r\n thatTable.cssRules(key, function(item){\r\n col.width = parseFloat(item.style.width);\r\n layui.event.call(th[0], MOD_NAME, 'colResized('+ filter +')', {\r\n col: col,\r\n config: thatTable.config\r\n });\r\n });\r\n }\r\n });\r\n }\r\n\r\n // 已给 document 执行全局事件,避免重复绑定\r\n thisTable.docEvent = true;\r\n\r\n\r\n // 排序\r\n th.on('click', function(e){\r\n var othis = $(this);\r\n var elemSort = othis.find(ELEM_SORT);\r\n var nowType = elemSort.attr('lay-sort');\r\n var type;\r\n\r\n // 排序不触发的条件\r\n if(!elemSort[0] || othis.data('resizing') === 1){\r\n return othis.removeData('resizing');\r\n }\r\n\r\n if(nowType === 'asc'){\r\n type = 'desc';\r\n } else if(nowType === 'desc'){\r\n type = null;\r\n } else {\r\n type = 'asc';\r\n }\r\n that.sort({\r\n field: othis,\r\n type: type,\r\n fromEvent: true\r\n });\r\n }).find(ELEM_SORT+' .layui-edge ').on('click', function(e){\r\n var othis = $(this);\r\n var index = othis.index();\r\n var field = othis.parents('th').eq(0).data('field');\r\n layui.stope(e);\r\n if(index === 0){\r\n that.sort({\r\n field: field,\r\n type: 'asc',\r\n fromEvent: true\r\n });\r\n } else {\r\n that.sort({\r\n field: field,\r\n type: 'desc',\r\n fromEvent: true\r\n });\r\n }\r\n });\r\n\r\n //数据行中的事件返回的公共对象成员\r\n var commonMember = that.commonMember = function(sets){\r\n var othis = $(this);\r\n var index = othis.parents('tr').eq(0).data('index');\r\n var tr = that.layBody.find('tr[data-index=\"'+ index +'\"]');\r\n var data = table.cache[that.key] || [];\r\n\r\n data = data[index] || {};\r\n\r\n // 事件返回的公共成员\r\n var obj = {\r\n tr: tr, // 行元素\r\n config: options,\r\n data: table.clearCacheKey(data), // 当前行数据\r\n dataCache: data, // 当前行缓存中的数据\r\n index: index,\r\n del: function(){ // 删除行数据\r\n table.cache[that.key][index] = [];\r\n tr.remove();\r\n that.scrollPatch();\r\n },\r\n update: function(fields, related){ // 修改行数据\r\n fields = fields || {};\r\n that.updateRow({\r\n index: index,\r\n data: fields,\r\n related: related\r\n }, function(key, value){\r\n obj.data[key] = value;\r\n });\r\n },\r\n // 设置行选中状态\r\n setRowChecked: function(opts){\r\n that.setRowChecked($.extend({\r\n index: index\r\n }, opts));\r\n }\r\n // 获取当前列\r\n };\r\n\r\n return $.extend(obj, sets);\r\n };\r\n\r\n // 复选框选择(替代元素的 click 事件)\r\n that.elem.on('click', 'input[name=\"layTableCheckbox\"]+', function(e){\r\n var othis = $(this);\r\n var td = othis.closest('td');\r\n var checkbox = othis.prev();\r\n var children = that.layBody.find('input[name=\"layTableCheckbox\"]');\r\n var index = checkbox.parents('tr').eq(0).data('index');\r\n var checked = checkbox[0].checked;\r\n var isAll = checkbox.attr('lay-filter') === 'layTableAllChoose';\r\n\r\n if(checkbox[0].disabled) return;\r\n\r\n // 全选\r\n if(isAll){\r\n that.setRowChecked({\r\n index: 'all',\r\n checked: checked\r\n });\r\n } else {\r\n that.setRowChecked({\r\n index: index,\r\n checked: checked\r\n });\r\n layui.stope(e);\r\n }\r\n\r\n // 事件\r\n layui.event.call(\r\n checkbox[0],\r\n MOD_NAME, 'checkbox('+ filter +')',\r\n commonMember.call(checkbox[0], {\r\n checked: checked,\r\n type: isAll ? 'all' : 'one',\r\n getCol: function(){ // 获取当前列的表头配置信息\r\n return that.col(td.data('key'));\r\n }\r\n })\r\n );\r\n });\r\n\r\n // 单选框选择\r\n that.elem.on('click', 'input[lay-type=\"layTableRadio\"]+', function(e){\r\n var othis = $(this);\r\n var td = othis.closest('td');\r\n var radio = othis.prev();\r\n var checked = radio[0].checked;\r\n var index = radio.parents('tr').eq(0).data('index');\r\n\r\n layui.stope(e);\r\n if(radio[0].disabled) return false;\r\n\r\n // 标注选中样式\r\n that.setRowChecked({\r\n type: 'radio',\r\n index: index\r\n });\r\n\r\n // 事件\r\n layui.event.call(\r\n radio[0],\r\n MOD_NAME, 'radio('+ filter +')',\r\n commonMember.call(radio[0], {\r\n checked: checked,\r\n getCol: function(){ // 获取当前列的表头配置信息\r\n return that.col(td.data('key'));\r\n }\r\n })\r\n );\r\n });\r\n\r\n // 行事件\r\n that.layBody.on('mouseenter', 'tr', function(){ // 鼠标移入行\r\n var othis = $(this);\r\n var index = othis.index();\r\n if(othis.data('off')) return; // 不触发事件\r\n that.layBody.find('tr:eq('+ index +')').addClass(ELEM_HOVER)\r\n }).on('mouseleave', 'tr', function(){ // 鼠标移出行\r\n var othis = $(this);\r\n var index = othis.index();\r\n if(othis.data('off')) return; // 不触发事件\r\n that.layBody.find('tr:eq('+ index +')').removeClass(ELEM_HOVER)\r\n }).on('click', 'tr', function(e){ // 单击行\r\n // 不支持行单击事件的元素\r\n var UNROW = [\r\n '.layui-form-checkbox',\r\n '.layui-form-switch',\r\n '.layui-form-radio',\r\n '[lay-unrow]'\r\n ].join(',');\r\n if( $(e.target).is(UNROW) || $(e.target).closest(UNROW)[0]){\r\n return;\r\n }\r\n setRowEvent.call(this, 'row');\r\n }).on('dblclick', 'tr', function(){ // 双击行\r\n setRowEvent.call(this, 'rowDouble');\r\n }).on('contextmenu', 'tr', function(e){ // 菜单\r\n if (!options.defaultContextmenu) e.preventDefault();\r\n setRowEvent.call(this, 'rowContextmenu');\r\n });\r\n\r\n // 创建行单击、双击、菜单事件\r\n var setRowEvent = function(eventType){\r\n var othis = $(this);\r\n if(othis.data('off')) return; //不触发事件\r\n layui.event.call(this,\r\n MOD_NAME, eventType + '('+ filter +')',\r\n commonMember.call(othis.children('td')[0])\r\n );\r\n };\r\n\r\n // 渲染单元格编辑状态\r\n var renderGridEdit = function(othis, e){\r\n othis = $(othis);\r\n\r\n if(othis.data('off')) return; // 不触发事件\r\n\r\n var field = othis.data('field');\r\n var key = othis.data('key');\r\n var col = that.col(key);\r\n var index = othis.closest('tr').data('index');\r\n var data = table.cache[that.key][index];\r\n var elemCell = othis.children(ELEM_CELL);\r\n\r\n // 是否开启编辑\r\n // 若 edit 传入函数,则根据函数的返回结果判断是否开启编辑\r\n var editType = typeof col.edit === 'function'\r\n ? col.edit(data)\r\n : col.edit;\r\n\r\n // 显示编辑表单\r\n if(editType){\r\n var input = $(function(){\r\n var inputElem = '';\r\n if(editType === 'textarea') {\r\n inputElem = '';\r\n }\r\n return inputElem;\r\n }());\r\n input[0].value = function(val) {\r\n return (val === undefined || val === null) ? '' : val;\r\n }(othis.data('content') || data[field]);\r\n othis.find('.'+ELEM_EDIT)[0] || othis.append(input);\r\n input.focus();\r\n e && layui.stope(e);\r\n }\r\n };\r\n\r\n // 单元格编辑 - 输入框内容被改变的事件\r\n that.layBody.on('change', '.'+ ELEM_EDIT, function(){\r\n var othis = $(this);\r\n var td = othis.parent();\r\n var value = this.value;\r\n var field = othis.parent().data('field');\r\n var index = othis.closest('tr').data('index');\r\n var data = table.cache[that.key][index];\r\n\r\n //事件回调的参数对象\r\n var params = commonMember.call(td[0], {\r\n value: value,\r\n field: field,\r\n oldValue: data[field], // 编辑前的值\r\n td: td,\r\n reedit: function(){ // 重新编辑\r\n setTimeout(function(){\r\n // 重新渲染为编辑状态\r\n renderGridEdit(params.td);\r\n\r\n // 将字段缓存的值恢复到编辑之前的值\r\n var obj = {};\r\n obj[field] = params.oldValue;\r\n params.update(obj);\r\n });\r\n },\r\n getCol: function(){ // 获取当前列的表头配置信息\r\n return that.col(td.data('key'));\r\n }\r\n });\r\n\r\n // 更新缓存中的值\r\n var obj = {}; //变更的键值\r\n obj[field] = value;\r\n params.update(obj);\r\n\r\n // 执行 API 编辑事件\r\n layui.event.call(td[0], MOD_NAME, 'edit('+ filter +')', params);\r\n }).on('blur', '.'+ ELEM_EDIT, function(){ // 单元格编辑 - 恢复非编辑状态事件\r\n $(this).remove(); // 移除编辑状态\r\n });\r\n\r\n // 表格主体单元格触发编辑的事件\r\n that.layBody.on(options.editTrigger, 'td', function(e){\r\n renderGridEdit(this, e)\r\n }).on('mouseenter', 'td', function(){\r\n showGridExpandIcon.call(this)\r\n }).on('mouseleave', 'td', function(){\r\n showGridExpandIcon.call(this, 'hide');\r\n });\r\n\r\n // 表格合计栏单元格 hover 显示展开图标\r\n that.layTotal.on('mouseenter', 'td', function(){\r\n showGridExpandIcon.call(this)\r\n }).on('mouseleave', 'td', function(){\r\n showGridExpandIcon.call(this, 'hide');\r\n });\r\n\r\n // 显示单元格展开图标\r\n var ELEM_GRID = 'layui-table-grid';\r\n var ELEM_GRID_DOWN = 'layui-table-grid-down';\r\n var ELEM_GRID_PANEL = 'layui-table-grid-panel';\r\n var showGridExpandIcon = function(hide){\r\n var othis = $(this);\r\n var elemCell = othis.children(ELEM_CELL);\r\n\r\n if(othis.data('off')) return; // 不触发事件\r\n if(othis.parent().hasClass(ELEM_EXPAND)) return; // 是否已为展开状态\r\n\r\n if(hide){\r\n othis.find('.layui-table-grid-down').remove();\r\n } else if((\r\n elemCell.prop('scrollWidth') > elemCell.prop('clientWidth') ||\r\n elemCell.find(\"br\").length > 0\r\n ) && !options.lineStyle){\r\n if(elemCell.find('.'+ ELEM_GRID_DOWN)[0]) return;\r\n othis.append('
                          ');\r\n }\r\n };\r\n // 展开单元格内容\r\n var gridExpand = function(e, expandedMode){\r\n var othis = $(this);\r\n var td = othis.parent();\r\n var key = td.data('key');\r\n var col = that.col(key);\r\n var index = td.parent().data('index');\r\n var elemCell = td.children(ELEM_CELL);\r\n var ELEM_CELL_C = 'layui-table-cell-c';\r\n var elemCellClose = $('');\r\n\r\n expandedMode = expandedMode || col.expandedMode || options.cellExpandedMode;\r\n\r\n // 展开风格\r\n if (expandedMode === 'tips') { // TIPS 展开风格\r\n that.tipsIndex = layer.tips([\r\n '
                          ',\r\n elemCell.html(),\r\n '
                          ',\r\n ''\r\n ].join(''), elemCell[0], {\r\n tips: [3, ''],\r\n time: -1,\r\n anim: -1,\r\n maxWidth: (device.ios || device.android) ? 300 : that.elem.width()/2,\r\n isOutAnim: false,\r\n skin: 'layui-table-tips',\r\n success: function(layero, index){\r\n layero.find('.layui-table-tips-c').on('click', function(){\r\n layer.close(index);\r\n });\r\n }\r\n });\r\n } else { // 多行展开风格\r\n // 恢复其他已经展开的单元格\r\n that.elem.find('.'+ ELEM_CELL_C).trigger('click');\r\n\r\n // 设置当前单元格展开宽度\r\n that.cssRules(key, function(item){\r\n var width = item.style.width;\r\n var expandedWidth = col.expandedWidth || options.cellExpandedWidth;\r\n\r\n // 展开后的宽度不能小于当前宽度\r\n if(expandedWidth < parseFloat(width)) expandedWidth = parseFloat(width);\r\n\r\n elemCellClose.data('cell-width', width);\r\n item.style.width = expandedWidth + 'px';\r\n\r\n setTimeout(function(){\r\n that.scrollPatch(); // 滚动条补丁\r\n });\r\n });\r\n\r\n // 设置当前单元格展开样式\r\n that.setRowActive(index, ELEM_EXPAND);\r\n\r\n // 插入关闭按钮\r\n if(!elemCell.next('.'+ ELEM_CELL_C)[0]){\r\n elemCell.after(elemCellClose);\r\n }\r\n\r\n // 关闭展开状态\r\n elemCellClose.on('click', function(){\r\n var $this = $(this);\r\n that.setRowActive(index, [ELEM_EXPAND, ELEM_HOVER].join(' '), true); // 移除单元格展开样式\r\n that.cssRules(key, function(item){\r\n item.style.width = $this.data('cell-width'); // 恢复单元格展开前的宽度\r\n setTimeout(function(){\r\n that.resize(); // 滚动条补丁\r\n });\r\n });\r\n $this.remove();\r\n // 重置单元格滚动条位置\r\n elemCell.scrollTop(0);\r\n elemCell.scrollLeft(0); \r\n });\r\n }\r\n\r\n othis.remove();\r\n layui.stope(e);\r\n };\r\n\r\n // 表格主体单元格展开事件\r\n that.layBody.on('click', '.'+ ELEM_GRID_DOWN, function(e){\r\n gridExpand.call(this, e);\r\n });\r\n // 表格合计栏单元格展开事件\r\n that.layTotal.on('click', '.'+ ELEM_GRID_DOWN, function(e){\r\n gridExpand.call(this, e, 'tips'); // 强制采用 tips 风格\r\n });\r\n\r\n // 行工具条操作事件\r\n var toolFn = function(type){\r\n var othis = $(this);\r\n var td = othis.closest('td');\r\n var index = othis.parents('tr').eq(0).data('index');\r\n // 标记当前活动行\r\n that.setRowActive(index);\r\n\r\n // 执行事件\r\n layui.event.call(\r\n this,\r\n MOD_NAME,\r\n (type || 'tool') + '('+ filter +')',\r\n commonMember.call(this, {\r\n event: othis.attr('lay-event'),\r\n getCol: function(){ // 获取当前列的表头配置信息\r\n return that.col(td.data('key'));\r\n }\r\n })\r\n );\r\n };\r\n\r\n // 行工具条单击事件\r\n that.layBody.on('click', '*[lay-event]', function(e){\r\n toolFn.call(this);\r\n layui.stope(e);\r\n }).on('dblclick', '*[lay-event]', function(e){ //行工具条双击事件\r\n toolFn.call(this, 'toolDouble');\r\n layui.stope(e);\r\n });\r\n\r\n // 同步滚动条\r\n that.layMain.on('scroll', function(){\r\n var othis = $(this);\r\n var scrollLeft = othis.scrollLeft();\r\n var scrollTop = othis.scrollTop();\r\n\r\n that.layHeader.scrollLeft(scrollLeft);\r\n that.layTotal.scrollLeft(scrollLeft);\r\n that.layFixed.find(ELEM_BODY).scrollTop(scrollTop);\r\n\r\n layer.close(that.tipsIndex);\r\n });\r\n\r\n // 固定列滚轮事件 - 临时兼容方案\r\n that.layFixed.find(ELEM_BODY).on('mousewheel DOMMouseScroll', function(e) {\r\n var delta = e.originalEvent.wheelDelta || -e.originalEvent.detail;\r\n var scrollTop = that.layMain.scrollTop();\r\n var step = 30;\r\n\r\n e.preventDefault();\r\n that.layMain.scrollTop(scrollTop + (delta > 0 ? -step : step));\r\n });\r\n\r\n if(window.ResizeObserver){\r\n if(!that.resizeObserver){\r\n that.resizeObserver = new ResizeObserver(function(){\r\n table.resize(that.key);\r\n });\r\n }\r\n that.resizeObserver.observe(that.elem[0]);\r\n }\r\n };\r\n\r\n // 全局事件\r\n (function(){\r\n // 自适应尺寸\r\n _WIN.on('resize', function(){\r\n layui.each(thisTable.that, function(){\r\n this.resize();\r\n });\r\n });\r\n\r\n // 全局点击\r\n _DOC.on('click', function(){\r\n _DOC.trigger('table.remove.tool.panel');\r\n });\r\n\r\n // 工具面板移除事件\r\n _DOC.on('table.remove.tool.panel', function(){\r\n $('.' + ELEM_TOOL_PANEL).remove();\r\n });\r\n })();\r\n\r\n // 初始化\r\n table.init = function(filter, settings){\r\n settings = settings || {};\r\n var that = this;\r\n var inst = null;\r\n var elemTable = typeof filter === 'object' ? filter : (\r\n typeof filter === 'string'\r\n ? $('table[lay-filter=\"'+ filter +'\"]')\r\n : $(ELEM + '[lay-data], '+ ELEM + '[lay-options]')\r\n );\r\n var errorTips = 'Table element property lay-data configuration item has a syntax error: ';\r\n\r\n //遍历数据表格\r\n elemTable.each(function(){\r\n var othis = $(this);\r\n var attrData = othis.attr('lay-data');\r\n var tableData = lay.options(this, {\r\n attr: attrData ? 'lay-data' : null,\r\n errorText: errorTips + (attrData || othis.attr('lay-options'))\r\n });\r\n\r\n var options = $.extend({\r\n elem: this\r\n ,cols: []\r\n ,data: []\r\n ,skin: othis.attr('lay-skin') //风格\r\n ,size: othis.attr('lay-size') //尺寸\r\n ,even: typeof othis.attr('lay-even') === 'string' //偶数行背景\r\n }, table.config, settings, tableData);\r\n\r\n filter && othis.hide();\r\n\r\n //获取表头数据\r\n othis.find('thead>tr').each(function(i){\r\n options.cols[i] = [];\r\n $(this).children().each(function(ii){\r\n var th = $(this);\r\n var attrData = th.attr('lay-data');\r\n var itemData = lay.options(this, {\r\n attr: attrData ? 'lay-data' : null,\r\n errorText: errorTips + (attrData || th.attr('lay-options'))\r\n });\r\n\r\n var row = $.extend({\r\n title: th.text()\r\n ,colspan: parseInt(th.attr('colspan')) || 1 //列单元格\r\n ,rowspan: parseInt(th.attr('rowspan')) || 1 //行单元格\r\n }, itemData);\r\n\r\n options.cols[i].push(row);\r\n });\r\n });\r\n\r\n //缓存静态表体数据\r\n var trElem = othis.find('tbody>tr');\r\n\r\n //执行渲染\r\n var tableIns = table.render(options);\r\n\r\n //获取表体数据\r\n if (trElem.length && !settings.data && !tableIns.config.url) {\r\n var tdIndex = 0;\r\n table.eachCols(tableIns.config.id, function (i3, item3) {\r\n trElem.each(function(i1){\r\n options.data[i1] = options.data[i1] || {};\r\n var tr = $(this);\r\n var field = item3.field;\r\n options.data[i1][field] = tr.children('td').eq(tdIndex).html();\r\n });\r\n tdIndex++;\r\n })\r\n\r\n tableIns.reloadData({\r\n data: options.data\r\n });\r\n }\r\n });\r\n\r\n return that;\r\n };\r\n\r\n //记录所有实例\r\n thisTable.that = {}; //记录所有实例对象\r\n thisTable.config = {}; //记录所有实例配置项\r\n\r\n var eachChildCols = function (index, cols, i1, item2) {\r\n //如果是组合列,则捕获对应的子列\r\n if (item2.colGroup) {\r\n var childIndex = 0;\r\n index++;\r\n item2.CHILD_COLS = [];\r\n // 找到它的子列所在cols的下标\r\n var i2 = i1 + (parseInt(item2.rowspan) || 1);\r\n layui.each(cols[i2], function (i22, item22) {\r\n if (item22.parentKey) { // 如果字段信息中包含了parentKey和key信息\r\n if (item22.parentKey === item2.key) {\r\n item22.PARENT_COL_INDEX = index;\r\n item2.CHILD_COLS.push(item22);\r\n eachChildCols(index, cols, i2, item22);\r\n }\r\n } else {\r\n // 没有key信息以colspan数量所谓判断标准\r\n //如果子列已经被标注为{PARENT_COL_INDEX},或者子列累计 colspan 数等于父列定义的 colspan,则跳出当前子列循环\r\n if (item22.PARENT_COL_INDEX || (childIndex >= 1 && childIndex == (item2.colspan || 1))) return;\r\n item22.PARENT_COL_INDEX = index;\r\n item2.CHILD_COLS.push(item22);\r\n childIndex = childIndex + (parseInt(item22.colspan > 1 ? item22.colspan : 1));\r\n eachChildCols(index, cols, i2, item22);\r\n }\r\n });\r\n }\r\n };\r\n\r\n // 遍历表头\r\n table.eachCols = function(id, callback, cols){\r\n var config = thisTable.config[id] || {};\r\n var arrs = [], index = 0;\r\n\r\n cols = $.extend(true, [], cols || config.cols);\r\n\r\n //重新整理表头结构\r\n layui.each(cols, function(i1, item1){\r\n if (i1) return true; // 只需遍历第一层\r\n layui.each(item1, function(i2, item2){\r\n eachChildCols(index, cols, i1, item2);\r\n if(item2.PARENT_COL_INDEX) return; //如果是子列,则不进行追加,因为已经存储在父列中\r\n arrs.push(item2)\r\n });\r\n });\r\n\r\n //重新遍历列,如果有子列,则进入递归\r\n var eachArrs = function(obj){\r\n layui.each(obj || arrs, function(i, item){\r\n if(item.CHILD_COLS) return eachArrs(item.CHILD_COLS);\r\n typeof callback === 'function' && callback(i, item);\r\n });\r\n };\r\n\r\n eachArrs();\r\n };\r\n\r\n // 获取表格选中状态\r\n table.checkStatus = function(id){\r\n var nums = 0;\r\n var invalidNum = 0;\r\n var arr = [];\r\n var data = table.cache[id] || [];\r\n\r\n //计算全选个数\r\n layui.each(data, function(i, item){\r\n if(layui.type(item) === 'array' || item[table.config.disabledName]){\r\n invalidNum++; // 无效数据,或已删除的\r\n return;\r\n }\r\n if(item[table.config.checkName]){\r\n nums++;\r\n if(!item[table.config.disabledName]){\r\n arr.push(table.clearCacheKey(item));\r\n }\r\n }\r\n });\r\n return {\r\n data: arr, // 选中的数据\r\n isAll: data.length ? (nums === (data.length - invalidNum)) : false // 是否全选\r\n };\r\n };\r\n\r\n // 设置行选中状态\r\n table.setRowChecked = function(id, opts){\r\n var that = getThisTable(id);\r\n if(!that) return;\r\n that.setRowChecked(opts);\r\n };\r\n\r\n // 获取表格当前页的所有行数据\r\n table.getData = function(id){\r\n var arr = [];\r\n var data = table.cache[id] || [];\r\n layui.each(data, function(i, item){\r\n if(layui.type(item) === 'array'){\r\n return;\r\n }\r\n arr.push(table.clearCacheKey(item));\r\n });\r\n return arr;\r\n };\r\n\r\n // 重置表格尺寸结构\r\n table.resize = function(id){\r\n // 若指定表格唯一 id,则只执行该 id 对应的表格实例\r\n if(id){\r\n var config = getThisTableConfig(id); // 获取当前实例配置项\r\n if(!config) return;\r\n\r\n getThisTable(id).resize();\r\n\r\n } else { // 否则重置所有表格实例尺寸\r\n layui.each(thisTable.that, function(){\r\n this.resize();\r\n });\r\n }\r\n };\r\n\r\n // 表格导出\r\n table.exportFile = function(id, data, opts){\r\n data = data || table.clearCacheKey(table.cache[id]);\r\n opts = typeof opts === 'object' ? opts : function(){\r\n var obj = {};\r\n opts && (obj.type = opts);\r\n return obj;\r\n }();\r\n\r\n var type = opts.type || 'csv';\r\n var thatTable = thisTable.that[id];\r\n var config = thisTable.config[id] || {};\r\n var textType = ({\r\n csv: 'text/csv',\r\n xls: 'application/vnd.ms-excel'\r\n })[type];\r\n var alink = document.createElement(\"a\");\r\n\r\n if(device.ie) return hint.error('IE_NOT_SUPPORT_EXPORTS');\r\n\r\n // 处理 treeTable 数据\r\n if (config.tree && config.tree.view) {\r\n try {\r\n data = $.extend(true, [], table.cache[id]);\r\n data = (function fn(data) {\r\n return data.reduce(function (acc, obj){\r\n var children = obj.children || [];\r\n delete obj.children;\r\n return acc.concat(obj, fn(children));\r\n }, []);\r\n })(Array.from(data));\r\n } catch (e) {}\r\n }\r\n\r\n alink.href = 'data:'+ textType +';charset=utf-8,\\ufeff'+ encodeURIComponent(function(){\r\n var dataTitle = [];\r\n var dataMain = [];\r\n var dataTotal = [];\r\n var fieldsIsHide = {};\r\n\r\n // 表头和表体\r\n layui.each(data, function(i1, item1){\r\n var vals = [];\r\n if(typeof id === 'object'){ // 若 id 参数直接为表头数据\r\n layui.each(id, function(i, item){\r\n i1 == 0 && dataTitle.push(item || '');\r\n });\r\n layui.each(layui.isArray(item1) ? $.extend([], item1) : table.clearCacheKey(item1), function(i2, item2){\r\n vals.push('\"'+ (item2 || '') +'\"');\r\n });\r\n } else {\r\n table.eachCols(id, function(i3, item3){\r\n if(item3.ignoreExport === false || item3.field && item3.type == 'normal'){\r\n // 不导出隐藏列,除非设置 ignoreExport 强制导出\r\n if (\r\n (item3.hide && item3.ignoreExport !== false) ||\r\n item3.ignoreExport === true // 忽略导出\r\n ) {\r\n if(i1 == 0) fieldsIsHide[item3.field] = true; // 记录隐藏列\r\n return;\r\n }\r\n\r\n var content = item1[item3.field];\r\n if(content === undefined || content === null) content = '';\r\n\r\n i1 == 0 && dataTitle.push(item3.fieldTitle || item3.title || item3.field || '');\r\n\r\n // 解析内容\r\n content = parseTempData.call(thatTable, {\r\n item3: item3,\r\n content: content,\r\n tplData: item1,\r\n text: 'text',\r\n obj: {\r\n td: function(field){\r\n var td = thatTable.layBody.find('tr[data-index=\"'+ i1 +'\"]>td');\r\n return td.filter('[data-field=\"'+ field +'\"]');\r\n }\r\n }\r\n });\r\n\r\n // 异常处理\r\n content = content.replace(/\"/g, '\"\"'); // 避免内容存在「双引号」导致异常分隔\r\n // content += '\\t'; // 加「水平制表符」 避免内容被转换格式\r\n content = '\"'+ content +'\"'; // 避免内容存在「逗号」导致异常分隔\r\n\r\n // 插入内容\r\n vals.push(content);\r\n }else if(item3.field && item3.type !== 'normal'){\r\n // https://gitee.com/layui/layui/issues/I8PHCR\r\n if(i1 == 0) fieldsIsHide[item3.field] = true;\r\n }\r\n });\r\n }\r\n dataMain.push(vals.join(','));\r\n });\r\n\r\n // 表合计\r\n thatTable && layui.each(thatTable.dataTotal, function(i, o){\r\n fieldsIsHide[o.field] || dataTotal.push('\"' + (o.total || '') + '\"');\r\n });\r\n\r\n return dataTitle.join(',') + '\\r\\n' + dataMain.join('\\r\\n') + '\\r\\n' + dataTotal.join(',');\r\n }());\r\n\r\n alink.download = (opts.title || config.title || 'table_'+ (config.index || '')) + '.' + type;\r\n document.body.appendChild(alink);\r\n alink.click();\r\n document.body.removeChild(alink);\r\n };\r\n\r\n // 获取表格配置信息\r\n table.getOptions = function (id) {\r\n return getThisTableConfig(id);\r\n }\r\n\r\n // 显示或隐藏列\r\n table.hideCol = function (id, cols) {\r\n var that = getThisTable(id);\r\n if (!that) {\r\n return;\r\n }\r\n\r\n if (layui.type(cols) === 'boolean') {\r\n // 显示全部或者隐藏全部\r\n that.eachCols(function (i2, item2) {\r\n var key = item2.key;\r\n var col = that.col(key);\r\n var parentKey = item2.parentKey;\r\n // 同步勾选列的 hide 值和隐藏样式\r\n if (col.hide != cols) {\r\n var hide = col.hide = cols;\r\n that.elem.find('*[data-key=\"'+ key +'\"]')[\r\n hide ? 'addClass' : 'removeClass'\r\n ](HIDE);\r\n // 根据列的显示隐藏,同步多级表头的父级相关属性值\r\n that.setParentCol(hide, parentKey);\r\n }\r\n })\r\n } else {\r\n cols = layui.isArray(cols) ? cols : [cols];\r\n layui.each(cols, function (i1, item1) {\r\n that.eachCols(function (i2, item2) {\r\n if (item1.field === item2.field) {\r\n var key = item2.key;\r\n var col = that.col(key);\r\n var parentKey = item2.parentKey;\r\n // 同步勾选列的 hide 值和隐藏样式\r\n if ('hide' in item1 && col.hide != item1.hide) {\r\n var hide = col.hide = !!item1.hide;\r\n that.elem.find('*[data-key=\"'+ key +'\"]')[\r\n hide ? 'addClass' : 'removeClass'\r\n ](HIDE);\r\n // 根据列的显示隐藏,同步多级表头的父级相关属性值\r\n that.setParentCol(hide, parentKey);\r\n }\r\n }\r\n })\r\n });\r\n }\r\n $('.' + ELEM_TOOL_PANEL).remove(); // 关闭字段筛选面板如果打开的话\r\n // 重新适配尺寸\r\n that.resize();\r\n }\r\n\r\n // 重载\r\n table.reload = function(id, options, deep, type){\r\n var config = getThisTableConfig(id); //获取当前实例配置项\r\n if(!config) return;\r\n\r\n var that = getThisTable(id);\r\n that.reload(options, deep, type);\r\n\r\n return thisTable.call(that);\r\n };\r\n\r\n // 仅重载数据\r\n table.reloadData = function(){\r\n var args = $.extend([], arguments);\r\n args[3] = 'reloadData';\r\n\r\n // 重载时,影响整个结构的参数,不适合更新的参数\r\n var dataParams = new RegExp('^('+ [\r\n 'elem', 'id', 'cols', 'width', 'height', 'maxHeight',\r\n 'toolbar', 'defaultToolbar',\r\n 'className', 'css', 'pagebar'\r\n ].join('|') + ')$');\r\n\r\n // 过滤与数据无关的参数\r\n layui.each(args[1], function (key, value) {\r\n if(dataParams.test(key)){\r\n delete args[1][key];\r\n }\r\n });\r\n\r\n return table.reload.apply(null, args);\r\n };\r\n\r\n // 核心入口\r\n table.render = function(options){\r\n var inst = new Class(options);\r\n return thisTable.call(inst);\r\n };\r\n\r\n // 清除临时 Key\r\n table.clearCacheKey = function(data){\r\n data = $.extend({}, data);\r\n delete data[table.config.checkName];\r\n delete data[table.config.indexName];\r\n delete data[table.config.numbersName];\r\n delete data[table.config.disabledName];\r\n return data;\r\n };\r\n\r\n // 自动完成渲染\r\n $(function(){\r\n table.init();\r\n });\r\n\r\n exports(MOD_NAME, table);\r\n});\r\n","/**\r\n * layui.treeTable\r\n * 树表组件\r\n */\r\n\r\nlayui.define(['table'], function (exports) {\r\n \"use strict\";\r\n\r\n var $ = layui.$;\r\n var form = layui.form;\r\n var table = layui.table;\r\n var hint = layui.hint();\r\n\r\n // api\r\n var treeTable = {\r\n config: {},\r\n // 事件\r\n on: table.on,\r\n // 遍历字段\r\n eachCols: table.eachCols,\r\n index: table.index,\r\n set: function (options) {\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n },\r\n resize: table.resize,\r\n getOptions: table.getOptions,\r\n hideCol: table.hideCol,\r\n renderData: table.renderData\r\n };\r\n\r\n // 操作当前实例\r\n var thisTreeTable = function () {\r\n var that = this;\r\n var options = that.config\r\n var id = options.id || options.index;\r\n\r\n return {\r\n config: options,\r\n reload: function (options, deep) {\r\n that.reload.call(that, options, deep);\r\n },\r\n reloadData: function (options, deep) {\r\n treeTable.reloadData(id, options, deep);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * 获取当前实例\r\n * @param {string} id 表格id\r\n * @returns {Class}\r\n */\r\n var getThisTable = function (id) {\r\n var that = thisTreeTable.that[id];\r\n if (!that) hint.error(id ? ('The treeTable instance with ID \\'' + id + '\\' not found') : 'ID argument required');\r\n return that || null;\r\n }\r\n\r\n // 字符\r\n var MOD_NAME = 'treeTable';\r\n var MOD_ID = 'lay-table-id';\r\n var HIDE = 'layui-hide';\r\n\r\n var ELEM_VIEW = '.layui-table-view';\r\n var ELEM_TREE = '.layui-table-tree';\r\n var ELEM_TOOL = '.layui-table-tool';\r\n var ELEM_BOX = '.layui-table-box';\r\n var ELEM_HEADER = '.layui-table-header';\r\n var ELEM_BODY = '.layui-table-body';\r\n var ELEM_MAIN = '.layui-table-main';\r\n var ELEM_FIXED = '.layui-table-fixed';\r\n var ELEM_FIXL = '.layui-table-fixed-l';\r\n var ELEM_FIXR = '.layui-table-fixed-r';\r\n var ELEM_CHECKED = 'layui-table-checked';\r\n\r\n var TABLE_TREE = 'layui-table-tree';\r\n var LAY_DATA_INDEX = 'LAY_DATA_INDEX';\r\n var LAY_DATA_INDEX_HISTORY = 'LAY_DATA_INDEX_HISTORY';\r\n var LAY_PARENT_INDEX = 'LAY_PARENT_INDEX';\r\n var LAY_CHECKBOX_HALF = 'LAY_CHECKBOX_HALF';\r\n var LAY_EXPAND = 'LAY_EXPAND';\r\n var LAY_HAS_EXPANDED = 'LAY_HAS_EXPANDED';\r\n var LAY_ASYNC_STATUS = 'LAY_ASYNC_STATUS';\r\n var LAY_CASCADE = ['all', 'parent', 'children', 'none'];\r\n var HTML_TAG_RE = /<[^>]+?>/;\r\n var ICON_PROPS = ['flexIconClose', 'flexIconOpen', 'iconClose', 'iconOpen', 'iconLeaf', 'icon']\r\n\r\n /**\r\n * 构造器\r\n * @class\r\n */\r\n var Class = function (options) {\r\n var that = this;\r\n that.index = ++treeTable.index;\r\n that.config = $.extend(true, {}, that.config, treeTable.config, options);\r\n // 处理一些属性\r\n that.init();\r\n that.render();\r\n };\r\n\r\n var updateCache = function (id, childrenKey, data) {\r\n var tableCache = table.cache[id];\r\n layui.each(data || tableCache, function (index, item) {\r\n var itemDataIndex = item[LAY_DATA_INDEX] || '';\r\n if (itemDataIndex.indexOf('-') !== -1) {\r\n tableCache[itemDataIndex] = item;\r\n }\r\n item[childrenKey] && updateCache(id, childrenKey, item[childrenKey]);\r\n })\r\n }\r\n\r\n var updateOptions = function (id, options, reload) {\r\n var that = getThisTable(id);\r\n reload === 'reloadData' || (that.status = { // 用于记录一些状态信息\r\n expand: {} // 折叠状态\r\n });\r\n var thatOptionsTemp = $.extend(true, {}, that.getOptions(), options);\r\n var treeOptions = thatOptionsTemp.tree;\r\n var childrenKey = treeOptions.customName.children;\r\n var idKey = treeOptions.customName.id;\r\n // 处理属性\r\n delete options.hasNumberCol;\r\n delete options.hasChecboxCol;\r\n delete options.hasRadioCol;\r\n table.eachCols(null, function (i1, item1) {\r\n if (item1.type === 'numbers') {\r\n options.hasNumberCol = true;\r\n } else if (item1.type === 'checkbox') {\r\n options.hasChecboxCol = true;\r\n } else if (item1.type === 'radio') {\r\n options.hasRadioCol = true;\r\n }\r\n }, thatOptionsTemp.cols)\r\n\r\n var parseData = options.parseData;\r\n var done = options.done;\r\n\r\n // treeTable重载数据时,会先加载显示顶层节点,然后根据重载数据前的子节点展开状态,展开相应的子节点,\r\n // 那么如果重载数据前有滚动条滚动在某个位子,重新加载时顶层节点如果比较少,只显示顶层节点时没有滚动条的情况下,\r\n // 自动展开子节点后,滚动条就会显示在顶部,无法保持在重载数据之前的位置。\r\n // 处理保持滚动条的问题,重载数据前记录滚动条的位置\r\n if(reload === 'reloadData' && thatOptionsTemp.scrollPos === 'fixed'){\r\n that.scrollTopCache = that.config.elem.next().find(ELEM_BODY).scrollTop();\r\n }\r\n\r\n if (thatOptionsTemp.url) {\r\n // 异步加载的时候需要处理parseData进行转换\r\n if (!reload || (reload && parseData && !parseData.mod)) {\r\n options.parseData = function () {\r\n var parseDataThat = this;\r\n var args = arguments;\r\n var retData = args[0];\r\n if (layui.type(parseData) === 'function') {\r\n retData = parseData.apply(parseDataThat, args) || args[0];\r\n }\r\n var dataName = parseDataThat.response.dataName;\r\n // 处理 isSimpleData\r\n if (treeOptions.data.isSimpleData && !treeOptions.async.enable) { // 异步加载和 isSimpleData 不应该一起使用\r\n retData[dataName] = that.flatToTree(retData[dataName]);\r\n }\r\n // 处理节点状态\r\n updateStatus(retData[dataName], function (item) {\r\n item[LAY_EXPAND] = LAY_EXPAND in item ? item[LAY_EXPAND] : (item[idKey] !== undefined && that.status.expand[item[idKey]])\r\n }, childrenKey);\r\n\r\n if (parseDataThat.autoSort && parseDataThat.initSort && parseDataThat.initSort.type) {\r\n layui.sort(retData[dataName], parseDataThat.initSort.field, parseDataThat.initSort.type === 'desc', true)\r\n }\r\n\r\n that.initData(retData[dataName]);\r\n\r\n return retData;\r\n }\r\n options.parseData.mod = true\r\n }\r\n } else {\r\n if(options.data !== undefined){\r\n options.data = options.data || [];\r\n // 处理 isSimpleData\r\n if (treeOptions.data.isSimpleData) {\r\n options.data = that.flatToTree(options.data);\r\n }\r\n that.initData(options.data);\r\n }\r\n }\r\n\r\n if (!reload || (reload && done && !done.mod)) {\r\n options.done = function () {\r\n var args = arguments;\r\n var doneThat = this;\r\n // undefined: 初始 render 或 reload,两者本质没有区别可以不做区分\r\n // 'reloadData': 重载数据\r\n // 'renderData': 重新渲染数据\r\n var renderType = args[3];\r\n var isRenderData = renderType === 'renderData';\r\n if (!isRenderData) {\r\n delete that.isExpandAll;\r\n }\r\n\r\n var tableView = this.elem.next();\r\n that.updateStatus(null, {\r\n LAY_HAS_EXPANDED: false // 去除已经打开过的状态\r\n });\r\n // 更新cache中的内容 将子节点也存到cache中\r\n updateCache(id, childrenKey);\r\n // 更新全选框的状态\r\n var layTableAllChooseElem = tableView.find('[name=\"layTableCheckbox\"][lay-filter=\"layTableAllChoose\"]');\r\n if (layTableAllChooseElem.length) {\r\n var checkStatus = treeTable.checkStatus(id);\r\n layTableAllChooseElem.prop({\r\n checked: checkStatus.isAll && checkStatus.data.length,\r\n indeterminate: !checkStatus.isAll && checkStatus.data.length\r\n })\r\n }\r\n if (!isRenderData && thatOptionsTemp.autoSort && thatOptionsTemp.initSort && thatOptionsTemp.initSort.type) {\r\n treeTable.sort(id);\r\n }\r\n\r\n that.renderTreeTable(tableView);\r\n\r\n // 恢复滚动条位置\r\n if(renderType === 'reloadData' && doneThat.scrollPos === 'fixed'){\r\n tableView.find(ELEM_BODY).scrollTop(that.scrollTopCache);\r\n }\r\n\r\n if (layui.type(done) === 'function') {\r\n return done.apply(doneThat, args);\r\n }\r\n }\r\n options.done.mod = true;\r\n }\r\n\r\n // 处理图标\r\n if(options && options.tree && options.tree.view){\r\n layui.each(ICON_PROPS, function(i, iconProp){\r\n if(options.tree.view[iconProp] !== undefined){\r\n options.tree.view[iconProp] = that.normalizedIcon(options.tree.view[iconProp]);\r\n }\r\n })\r\n }\r\n }\r\n\r\n Class.prototype.init = function () {\r\n var that = this;\r\n var options = that.config;\r\n var cascade = options.tree.data.cascade;\r\n if (LAY_CASCADE.indexOf(cascade) === -1) {\r\n options.tree.data.cascade = 'all'; // 超出范围的都重置为全联动\r\n }\r\n\r\n // 先初始一个空的表格以便拿到对应的表格实例信息\r\n var tableIns = table.render($.extend({}, options, {\r\n data: [],\r\n url: '',\r\n done: null\r\n }))\r\n var id = tableIns.config.id;\r\n thisTreeTable.that[id] = that; // 记录当前实例对象\r\n that.tableIns = tableIns;\r\n\r\n updateOptions(id, options);\r\n }\r\n\r\n // 初始默认配置\r\n Class.prototype.config = {\r\n tree: {\r\n customName: {\r\n children: \"children\", // 节点数据中保存子节点数据的属性名称\r\n isParent: \"isParent\", // 节点数据保存节点是否为父节点的属性名称\r\n name: \"name\", // 节点数据保存节点名称的属性名称\r\n id: \"id\", // 唯一标识的属性名称\r\n pid: \"parentId\", // 父节点唯一标识的属性名称\r\n icon: \"icon\" // 图标的属性名称\r\n },\r\n view: {\r\n indent: 14, // 层级缩进量\r\n flexIconClose: '', // 关闭时候的折叠图标\r\n flexIconOpen: '', // 打开时候的折叠图标\r\n showIcon: true, // 是否显示图标(节点类型图标)\r\n icon: '', // 节点图标,如果设置了这个属性或者数据中有这个字段信息,不管打开还是关闭都以这个图标的值为准\r\n iconClose: '', // 关闭时候的图标\r\n iconOpen: '', // 打开时候的图标\r\n iconLeaf: '', // 叶子节点的图标\r\n showFlexIconIfNotParent: false, // 当节点不是父节点的时候是否显示折叠图标\r\n dblClickExpand: true, // 双击节点时,是否自动展开父节点的标识\r\n expandAllDefault: false // 默认展开所有节点\r\n },\r\n data: {\r\n isSimpleData: false, // 是否简单数据模式\r\n rootPid: null, // 根节点的父 ID 值\r\n cascade: 'all' // 级联方式 默认全部级联:all 可选 级联父 parent 级联子 children\r\n },\r\n async: {\r\n enable: false, // 是否开启异步加载模式,只有开启的时候其他参数才起作用\r\n url: '', // 异步加载的接口,可以根据需要设置与顶层接口不同的接口,如果相同可以不设置该参数\r\n type: null, // 请求的接口类型,设置可缺省同上\r\n contentType: null, // 提交参数的数据类型,设置可缺省同上\r\n headers: null, // 设置可缺省同上\r\n where: null, // 设置可缺省同上\r\n autoParam: [] // 自动参数\r\n },\r\n callback: {\r\n beforeExpand: null, // 展开前的回调 return false 可以阻止展开的动作\r\n onExpand: null // 展开之后的回调\r\n }\r\n },\r\n };\r\n\r\n Class.prototype.normalizedIcon = function(iconStr){\r\n return iconStr\r\n ? HTML_TAG_RE.test(iconStr) ? iconStr : ''\r\n : ''\r\n }\r\n\r\n Class.prototype.getOptions = function () {\r\n var that = this;\r\n if (that.tableIns) {\r\n return table.getOptions(that.tableIns.config.id); // 获取表格的实时配置信息\r\n } else {\r\n return that.config;\r\n }\r\n };\r\n\r\n function flatToTree(flatArr, idKey, pIdKey, childrenKey, rootPid) {\r\n idKey = idKey || 'id';\r\n pIdKey = pIdKey || 'parentId';\r\n childrenKey = childrenKey || 'children';\r\n // 创建一个空的 map 对象,用于保存所有的节点\r\n var map = {};\r\n var rootNodes = [];\r\n\r\n var idTemp = '';\r\n var pidTemp = '';\r\n layui.each(flatArr, function(index, item){\r\n idTemp = idKey + item[idKey];\r\n pidTemp = idKey + item[pIdKey];\r\n\r\n // 将节点存入 map 对象\r\n if(!map[idTemp]){\r\n map[idTemp] = {};\r\n map[idTemp][childrenKey] = [];\r\n }\r\n\r\n // 合并节点\r\n var tempObj = {};\r\n tempObj[childrenKey] = map[idTemp][childrenKey];\r\n map[idTemp] = $.extend({}, item, tempObj);\r\n\r\n var isRootNode = (rootPid ? map[idTemp][pIdKey] === rootPid : !map[idTemp][pIdKey]);\r\n if(isRootNode){\r\n rootNodes.push(map[idTemp]);\r\n }else{\r\n if(!map[pidTemp]){\r\n map[pidTemp] = {};\r\n map[pidTemp][childrenKey] = [];\r\n }\r\n map[pidTemp][childrenKey].push(map[idTemp]);\r\n }\r\n });\r\n\r\n return rootNodes;\r\n }\r\n\r\n Class.prototype.flatToTree = function (tableData) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var customName = treeOptions.customName;\r\n var tableId = options.id;\r\n\r\n tableData = tableData || table.cache[tableId];\r\n\r\n return flatToTree(tableData, customName.id, customName.pid, customName.children, treeOptions.data.rootPid)\r\n }\r\n\r\n Class.prototype.treeToFlat = function (tableData, parentId, parentIndex) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var customName = treeOptions.customName;\r\n var childrenKey = customName.children;\r\n var pIdKey = customName.pid;\r\n\r\n var flat = [];\r\n layui.each(tableData, function (i1, item1) {\r\n var dataIndex = (parentIndex ? parentIndex + '-' : '') + i1;\r\n var dataNew = $.extend({}, item1);\r\n dataNew[pIdKey] = item1[pIdKey] || parentId;\r\n flat.push(dataNew);\r\n flat = flat.concat(that.treeToFlat(item1[childrenKey], item1[customName.id], dataIndex));\r\n });\r\n\r\n return flat;\r\n }\r\n\r\n // 通过当前行数据返回 treeNode 信息\r\n Class.prototype.getTreeNode = function (data) {\r\n var that = this;\r\n if (!data) {\r\n return hint.error('找不到节点数据');\r\n }\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableId = options.id;\r\n var customName = treeOptions.customName;\r\n\r\n // 带上一些常用的方法\r\n return {\r\n data: data,\r\n dataIndex: data[LAY_DATA_INDEX],\r\n getParentNode: function () {\r\n return that.getNodeByIndex(data[LAY_PARENT_INDEX])\r\n },\r\n };\r\n }\r\n\r\n // 通过 index 返回节点信息\r\n Class.prototype.getNodeByIndex = function (index) {\r\n var that = this;\r\n var treeNodeData = that.getNodeDataByIndex(index);\r\n if (!treeNodeData) {\r\n return hint.error('找不到节点数据');\r\n }\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var customName = treeOptions.customName;\r\n var parentKey = customName.parent;\r\n var tableId = options.id;\r\n\r\n var treeNode = {\r\n data: treeNodeData,\r\n dataIndex: treeNodeData[LAY_DATA_INDEX],\r\n getParentNode: function () {\r\n return that.getNodeByIndex(treeNodeData[LAY_PARENT_INDEX])\r\n },\r\n update: function (data) {\r\n return treeTable.updateNode(tableId, index, data)\r\n },\r\n remove: function () {\r\n return treeTable.removeNode(tableId, index)\r\n },\r\n expand: function (opts) {\r\n return treeTable.expandNode(tableId, $.extend({}, opts, {\r\n index: index\r\n }))\r\n },\r\n setChecked: function (opts) {\r\n return treeTable.setRowChecked(tableId, $.extend({}, opts, {\r\n index: index\r\n }))\r\n }\r\n };\r\n\r\n treeNode.dataIndex = index;\r\n return treeNode;\r\n }\r\n\r\n // 通过 id 获取节点信息\r\n Class.prototype.getNodeById = function (id) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var customName = treeOptions.customName;\r\n var idKey = customName.id;\r\n\r\n // 通过 id 拿到数据的 dataIndex\r\n var dataIndex = '';\r\n var tableDataFlat = treeTable.getData(options.id, true);\r\n layui.each(tableDataFlat, function (i1, item1) {\r\n if (item1[idKey] === id) {\r\n dataIndex = item1[LAY_DATA_INDEX];\r\n return true;\r\n }\r\n })\r\n if (!dataIndex) {\r\n return;\r\n }\r\n\r\n // 用 index\r\n return that.getNodeByIndex(dataIndex);\r\n }\r\n\r\n // 通过 index 获取节点数据\r\n Class.prototype.getNodeDataByIndex = function (index, clone, newValue) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableId = options.id;\r\n var tableCache = table.cache[tableId];\r\n\r\n // 获取当前行中的数据\r\n var dataCache = tableCache[index];\r\n\r\n // 若非删除操作,则返回合并后的数据\r\n if (newValue !== 'delete' && dataCache) {\r\n $.extend(dataCache, newValue);\r\n return clone ? $.extend({}, dataCache) : dataCache;\r\n }\r\n\r\n // 删除操作\r\n var dataRet = tableCache;\r\n var indexArr = String(index).split('-');\r\n\r\n // if (options.url || indexArr.length > 1) tableCache = null // 只有在删除根节点的时候才需要处理\r\n\r\n // 根据 index 进行数据处理\r\n for (var i = 0, childrenKey = treeOptions.customName.children; i < indexArr.length; i++) {\r\n if (newValue && i === indexArr.length - 1) {\r\n if (newValue === 'delete') { // 删除并返回当前数据\r\n // 同步 cache --- 此段代码注释缘由:data 属性模式造成数据重复执行 splice (@Gitee: #I7Z0A/I82E2S)\r\n /*if (tableCache) {\r\n layui.each(tableCache, function (i1, item1) {\r\n if (item1[LAY_DATA_INDEX] === index) {\r\n tableCache.splice(i1, 1);\r\n return true;\r\n }\r\n })\r\n }*/\r\n return (i ? dataRet[childrenKey] : dataRet).splice(indexArr[i], 1)[0];\r\n } else { // 更新值\r\n $.extend((i ? dataRet[childrenKey] : dataRet)[indexArr[i]], newValue);\r\n }\r\n }\r\n dataRet = i ? dataRet[childrenKey][indexArr[i]] : dataRet[indexArr[i]];\r\n }\r\n return clone ? $.extend({}, dataRet) : dataRet;\r\n }\r\n\r\n treeTable.getNodeDataByIndex = function (id, index) {\r\n var that = getThisTable(id);\r\n if(!that) return;\r\n return that.getNodeDataByIndex(index, true);\r\n }\r\n\r\n // 判断是否是父节点\r\n var checkIsParent = function (data, isParentKey, childrenKey) {\r\n isParentKey = isParentKey || 'isParent';\r\n childrenKey = childrenKey || 'children';\r\n layui.each(data, function (i1, item1) {\r\n if (!(isParentKey in item1)) {\r\n item1[isParentKey] = !!(item1[childrenKey] && item1[childrenKey].length);\r\n checkIsParent(item1[childrenKey]);\r\n }\r\n })\r\n }\r\n\r\n Class.prototype.initData = function (data, parentIndex) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableId = options.id;\r\n\r\n data = data || that.getTableData();\r\n\r\n var customName = treeOptions.customName;\r\n var isParentKey = customName.isParent;\r\n var childrenKey = customName.children;\r\n\r\n var update = function(data, parentIndex){\r\n layui.each(data, function (i1, item1) {\r\n if (!(isParentKey in item1)) {\r\n item1[isParentKey] = !!(item1[childrenKey] && item1[childrenKey].length);\r\n }\r\n item1[LAY_DATA_INDEX_HISTORY] = item1[LAY_DATA_INDEX];\r\n item1[LAY_PARENT_INDEX] = parentIndex = parentIndex || '';\r\n var dataIndex = item1[LAY_DATA_INDEX] = (parentIndex ? parentIndex + '-' : '') + i1;\r\n update(item1[childrenKey] || [], dataIndex);\r\n });\r\n }\r\n\r\n update(data, parentIndex);\r\n\r\n updateCache(tableId, childrenKey, data);\r\n\r\n return data;\r\n }\r\n\r\n // 与 tableId 有关带防抖的方法\r\n var debounceFn = (function () {\r\n var fn = {};\r\n return function (tableId, func, wait) {\r\n if (!fn[tableId]) {\r\n fn[tableId] = layui.debounce(func, wait);\r\n }\r\n return fn[tableId];\r\n }\r\n })()\r\n\r\n // 优化参数,添加一个 getNodeByIndex 方法 只传 表格id 和行 dataIndex 分几步优化 todo\r\n var expandNode = function (treeNode, expandFlag, sonSign, focus, callbackFlag) {\r\n // treeNode // 需要展开的节点\r\n var trElem = treeNode.trElem;\r\n var tableViewElem = treeNode.tableViewElem || trElem.closest(ELEM_VIEW);\r\n var tableId = treeNode.tableId || tableViewElem.attr(MOD_ID);\r\n var options = treeNode.options || table.getOptions(tableId);\r\n var dataIndex = treeNode.dataIndex || trElem.attr('lay-data-index'); // 可能出现多层\r\n var treeTableThat = getThisTable(tableId);\r\n\r\n var treeOptions = options.tree || {};\r\n var customName = treeOptions.customName || {};\r\n var isParentKey = customName.isParent;\r\n\r\n var trData = treeTableThat.getNodeDataByIndex(dataIndex);\r\n\r\n // 后续调优:对已经展开的节点进行展开和已经关闭的节点进行关闭应该做优化减少不必要的代码执行 todo\r\n var isToggle = layui.type(expandFlag) !== 'boolean';\r\n var trExpand = isToggle ? !trData[LAY_EXPAND] : expandFlag;\r\n var retValue = trData[isParentKey] ? trExpand : null;\r\n\r\n if (callbackFlag && trExpand != trData[LAY_EXPAND] && (!trData[LAY_ASYNC_STATUS] || trData[LAY_ASYNC_STATUS] === 'local')) {\r\n var beforeExpand = treeOptions.callback.beforeExpand;\r\n if (layui.type(beforeExpand) === 'function') {\r\n if (beforeExpand(tableId, trData, expandFlag) === false) {\r\n return retValue;\r\n }\r\n }\r\n }\r\n\r\n var trExpanded = trData[LAY_HAS_EXPANDED]; // 展开过,包括异步加载\r\n\r\n // 找到表格中的同类节点(需要找到lay-data-index一致的所有行)\r\n var trsElem = tableViewElem.find('tr[lay-data-index=\"' + dataIndex + '\"]');\r\n var flexIconElem = trsElem.find('.layui-table-tree-flexIcon');\r\n treeTableThat.updateNodeIcon({\r\n scopeEl: trsElem,\r\n isExpand: trExpand,\r\n isParent: trData[isParentKey]\r\n });\r\n trData[LAY_EXPAND] = trExpand;\r\n var trDataId = trData[customName.id];\r\n trDataId !== undefined && (treeTableThat.status.expand[trDataId] = trExpand);\r\n if (retValue === null) {\r\n return retValue;\r\n }\r\n\r\n var childNodes = trData[customName.children] || [];\r\n // 处理子节点展示与否\r\n if (trExpand) {\r\n // 展开\r\n if (trExpanded) { // 已经展开过\r\n if (!childNodes.length) return ;//异步如果子节点没有数据情况下双点行展开所有已展开的节点问题解决\r\n trsElem.nextAll(childNodes.map(function (value, index, array) {\r\n return 'tr[lay-data-index=\"' + value[LAY_DATA_INDEX] + '\"]'\r\n }).join(',')).removeClass(HIDE);\r\n layui.each(childNodes, function (i1, item1) {\r\n if (!item1[isParentKey]) {\r\n return;\r\n }\r\n\r\n if (sonSign && !isToggle && !item1[LAY_EXPAND]) { // 非状态切换的情况下\r\n // 级联展开子节点\r\n expandNode({\r\n dataIndex: item1[LAY_DATA_INDEX],\r\n trElem: tableViewElem.find('tr[lay-data-index=\"' + item1[LAY_DATA_INDEX] + '\"]').first(),\r\n tableViewElem: tableViewElem,\r\n tableId: tableId,\r\n options: options,\r\n }, expandFlag, sonSign, focus, callbackFlag);\r\n } else if (item1[LAY_EXPAND]) { // 初始化级联展开\r\n expandNode({\r\n dataIndex: item1[LAY_DATA_INDEX],\r\n trElem: tableViewElem.find('tr[lay-data-index=\"' + item1[LAY_DATA_INDEX] + '\"]').first(),\r\n tableViewElem: tableViewElem,\r\n tableId: tableId,\r\n options: options,\r\n }, true);\r\n }\r\n });\r\n } else {\r\n var asyncSetting = treeOptions.async || {};\r\n var asyncUrl = asyncSetting.url || options.url;\r\n if (asyncSetting.enable && trData[isParentKey] && !trData[LAY_ASYNC_STATUS]) {\r\n trData[LAY_ASYNC_STATUS] = 'loading';\r\n flexIconElem.html('');\r\n\r\n // 异步获取子节点数据成功之后处理方法\r\n var asyncSuccessFn = function (data) {\r\n trData[LAY_ASYNC_STATUS] = 'success';\r\n trData[customName.children] = data;\r\n treeTableThat.initData(trData[customName.children], trData[LAY_DATA_INDEX])\r\n expandNode(treeNode, true, isToggle ? false : sonSign, focus, callbackFlag);\r\n }\r\n\r\n var format = asyncSetting.format; // 自定义数据返回方法\r\n if (layui.type(format) === 'function') {\r\n format(trData, options, asyncSuccessFn);\r\n return retValue;\r\n }\r\n\r\n var params = {};\r\n // 参数\r\n var data = $.extend(params, asyncSetting.where || options.where);\r\n var asyncAutoParam = asyncSetting.autoParam;\r\n layui.each(asyncAutoParam, function (index, item) {\r\n var itemStr = item;\r\n var itemArr = item.split('=');\r\n data[itemArr[0].trim()] = trData[(itemArr[1] || itemArr[0]).trim()]\r\n })\r\n\r\n var asyncContentType = asyncSetting.contentType || options.contentType;\r\n if (asyncContentType && asyncContentType.indexOf(\"application/json\") == 0) { // 提交 json 格式\r\n data = JSON.stringify(data);\r\n }\r\n var asyncType = asyncSetting.method || options.method;\r\n var asyncDataType = asyncSetting.dataType || options.dataType;\r\n var asyncJsonpCallback = asyncSetting.jsonpCallback || options.jsonpCallback;\r\n var asyncHeaders = asyncSetting.headers || options.headers;\r\n var asyncParseData = asyncSetting.parseData || options.parseData;\r\n var asyncResponse = asyncSetting.response || options.response;\r\n\r\n $.ajax({\r\n type: asyncType || 'get',\r\n url: asyncUrl,\r\n contentType: asyncContentType,\r\n data: data,\r\n dataType: asyncDataType || 'json',\r\n jsonpCallback: asyncJsonpCallback,\r\n headers: asyncHeaders || {},\r\n success: function (res) {\r\n // 若有数据解析的回调,则获得其返回的数据\r\n if (typeof asyncParseData === 'function') {\r\n res = asyncParseData.call(options, res) || res;\r\n }\r\n // 检查数据格式是否符合规范\r\n if (res[asyncResponse.statusName] != asyncResponse.statusCode) {\r\n trData[LAY_ASYNC_STATUS] = 'error';\r\n // 异常处理 todo\r\n flexIconElem.html('');\r\n // 事件\r\n } else {\r\n // 正常返回\r\n asyncSuccessFn(res[asyncResponse.dataName]);\r\n }\r\n },\r\n error: function (e, msg) {\r\n trData[LAY_ASYNC_STATUS] = 'error';\r\n // 异常处理 todo\r\n typeof options.error === 'function' && options.error(e, msg);\r\n }\r\n });\r\n return retValue;\r\n }\r\n trExpanded = trData[LAY_HAS_EXPANDED] = true;\r\n if (childNodes.length) {\r\n // 判断是否需要排序\r\n if (options.initSort && (!options.url || options.autoSort)) {\r\n var initSort = options.initSort;\r\n if (initSort.type) {\r\n layui.sort(childNodes, initSort.field, initSort.type === 'desc', true);\r\n } else {\r\n // 恢复默认\r\n layui.sort(childNodes, table.config.indexName, null, true);\r\n }\r\n }\r\n treeTableThat.initData(trData[customName.children], trData[LAY_DATA_INDEX]);\r\n // 将数据通过模板得出节点的html代码\r\n var str2 = table.getTrHtml(tableId, childNodes, null, null, dataIndex);\r\n\r\n var str2Obj = {\r\n trs: $(str2.trs.join('')),\r\n trs_fixed: $(str2.trs_fixed.join('')),\r\n trs_fixed_r: $(str2.trs_fixed_r.join(''))\r\n }\r\n var dataLevel = dataIndex.split('-').length - 1;\r\n var dataLevelNew = (dataLevel || 0) + 1;\r\n layui.each(childNodes, function (childIndex, childItem) {\r\n str2Obj.trs.eq(childIndex).attr({\r\n 'data-index': childItem[LAY_DATA_INDEX],\r\n 'lay-data-index': childItem[LAY_DATA_INDEX],\r\n 'data-level': dataLevelNew\r\n }).data('index', childItem[LAY_DATA_INDEX]);\r\n\r\n str2Obj.trs_fixed.eq(childIndex).attr({\r\n 'data-index': childItem[LAY_DATA_INDEX],\r\n 'lay-data-index': childItem[LAY_DATA_INDEX],\r\n 'data-level': dataLevelNew\r\n }).data('index', childItem[LAY_DATA_INDEX]);\r\n\r\n str2Obj.trs_fixed_r.eq(childIndex).attr({\r\n 'data-index': childItem[LAY_DATA_INDEX],\r\n 'lay-data-index': childItem[LAY_DATA_INDEX],\r\n 'data-level': dataLevelNew\r\n }).data('index', childItem[LAY_DATA_INDEX]);\r\n })\r\n\r\n tableViewElem.find(ELEM_MAIN).find('tbody tr[lay-data-index=\"' + dataIndex + '\"]').after(str2Obj.trs);\r\n tableViewElem.find(ELEM_FIXL).find('tbody tr[lay-data-index=\"' + dataIndex + '\"]').after(str2Obj.trs_fixed);\r\n tableViewElem.find(ELEM_FIXR).find('tbody tr[lay-data-index=\"' + dataIndex + '\"]').after(str2Obj.trs_fixed_r);\r\n\r\n // 初始化新增的节点中的内容\r\n treeTableThat.renderTreeTable(str2Obj.trs, dataLevelNew);\r\n\r\n if (sonSign && !isToggle) { // 非状态切换的情况下\r\n // 级联展开/关闭子节点\r\n layui.each(childNodes, function (i1, item1) {\r\n expandNode({\r\n dataIndex: item1[LAY_DATA_INDEX],\r\n trElem: tableViewElem.find('tr[lay-data-index=\"' + item1[LAY_DATA_INDEX] + '\"]').first(),\r\n tableViewElem: tableViewElem,\r\n tableId: tableId,\r\n options: options,\r\n }, expandFlag, sonSign, focus, callbackFlag);\r\n })\r\n }\r\n }\r\n }\r\n } else {\r\n treeTableThat.isExpandAll = false;\r\n // 关闭\r\n if (sonSign && !isToggle) { // 非状态切换的情况下\r\n layui.each(childNodes, function (i1, item1) {\r\n expandNode({\r\n dataIndex: item1[LAY_DATA_INDEX],\r\n trElem: tableViewElem.find('tr[lay-data-index=\"' + item1[LAY_DATA_INDEX] + '\"]').first(),\r\n tableViewElem: tableViewElem,\r\n tableId: tableId,\r\n options: options,\r\n }, expandFlag, sonSign, focus, callbackFlag);\r\n });\r\n tableViewElem.find(childNodes.map(function (value, index, array) { // 只隐藏直接子节点,其他由递归的处理\r\n return 'tr[lay-data-index=\"' + value[LAY_DATA_INDEX] + '\"]'\r\n }).join(',')).addClass(HIDE);\r\n } else {\r\n var childNodesFlat = treeTableThat.treeToFlat(childNodes, trData[customName.id], dataIndex);\r\n tableViewElem.find(childNodesFlat.map(function (value, index, array) {\r\n return 'tr[lay-data-index=\"' + value[LAY_DATA_INDEX] + '\"]'\r\n }).join(',')).addClass(HIDE);\r\n }\r\n }\r\n\r\n\r\n debounceFn('resize-' + tableId, function () {\r\n treeTable.resize(tableId);\r\n }, 0)();\r\n\r\n if (callbackFlag && trData[LAY_ASYNC_STATUS] !== 'loading') {\r\n var onExpand = treeOptions.callback.onExpand;\r\n layui.type(onExpand) === 'function' && onExpand(tableId, trData, trExpand);\r\n }\r\n\r\n return retValue;\r\n }\r\n\r\n /**\r\n * 展开或关闭一个节点\r\n * @param {String} id 树表id\r\n * @param {Object} opts\r\n * @param {Number|String} opts.index 展开行的数据下标\r\n * @param {Boolean} [opts.expandFlag] 展开、关闭、切换\r\n * @param {Boolean} [opts.inherit] 是否级联子节点\r\n * @param {Boolean} [opts.callbackFlag] 是否触发事件\r\n * @return [{Boolean}] 状态结果\r\n * */\r\n treeTable.expandNode = function (id, opts) {\r\n var that = getThisTable(id);\r\n if (!that) return;\r\n\r\n opts = opts || {};\r\n\r\n var index = opts.index;\r\n var expandFlag = opts.expandFlag;\r\n var sonSign = opts.inherit;\r\n var callbackFlag = opts.callbackFlag;\r\n\r\n var options = that.getOptions();\r\n var tableViewElem = options.elem.next();\r\n return expandNode({\r\n trElem: tableViewElem.find('tr[lay-data-index=\"' + index + '\"]').first()\r\n }, expandFlag, sonSign, null, callbackFlag)\r\n };\r\n\r\n /**\r\n * 展开或关闭全部节点\r\n * @param {String} id 树表id\r\n * @param {Boolean} expandFlag 展开或关闭\r\n * */\r\n treeTable.expandAll = function (id, expandFlag) {\r\n if (layui.type(expandFlag) !== 'boolean') {\r\n return hint.error('expandAll 的展开状态参数只接收true/false')\r\n }\r\n\r\n var that = getThisTable(id);\r\n if (!that) return;\r\n\r\n that.isExpandAll = expandFlag;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableView = options.elem.next();\r\n var isParentKey = treeOptions.customName.isParent;\r\n var idKey = treeOptions.customName.id;\r\n var showFlexIconIfNotParent = treeOptions.view.showFlexIconIfNotParent;\r\n\r\n if (!expandFlag) {\r\n // 关闭所有\r\n // 将所有已经打开的节点的状态设置为关闭,\r\n that.updateStatus(null, function (d) {\r\n if (d[isParentKey] || showFlexIconIfNotParent) {\r\n d[LAY_EXPAND] = false;\r\n d[idKey] !== undefined && (that.status.expand[d[idKey]] = false);\r\n }\r\n }) // 只处理当前页,如果需要处理全部表格,需要用treeTable.updateStatus\r\n // 隐藏所有非顶层的节点\r\n tableView.find('.layui-table-box tbody tr[data-level!=\"0\"]').addClass(HIDE);\r\n\r\n tableView.find('.layui-table-tree-flexIcon').html(treeOptions.view.flexIconClose);\r\n treeOptions.view.showIcon && tableView\r\n .find('.layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)')\r\n .html(treeOptions.view.iconClose);\r\n } else {\r\n var tableDataFlat = treeTable.getData(id, true);\r\n // 展开所有\r\n // 存在异步加载\r\n if (treeOptions.async.enable) {\r\n // 判断是否有未加载过的节点\r\n var isAllAsyncDone = true;\r\n layui.each(tableDataFlat, function (i1, item1) {\r\n if (item1[isParentKey] && !item1[LAY_ASYNC_STATUS]) {\r\n isAllAsyncDone = false;\r\n return true;\r\n }\r\n })\r\n // 有未加载过的节点\r\n if (!isAllAsyncDone) {\r\n // 逐个展开\r\n layui.each(treeTable.getData(id), function (i1, item1) {\r\n treeTable.expandNode(id, {\r\n index: item1[LAY_DATA_INDEX],\r\n expandFlag: true,\r\n inherit: true\r\n })\r\n })\r\n return;\r\n }\r\n }\r\n\r\n // 先判断是否全部打开过了\r\n var isAllExpanded = true;\r\n layui.each(tableDataFlat, function (i1, item1) {\r\n if (item1[isParentKey] && !item1[LAY_HAS_EXPANDED]) {\r\n isAllExpanded = false;\r\n return true;\r\n }\r\n })\r\n // 如果全部节点已经都打开过,就可以简单处理跟隐藏所有节点反操作\r\n if (isAllExpanded) {\r\n that.updateStatus(null, function (d) {\r\n if (d[isParentKey] || showFlexIconIfNotParent) {\r\n d[LAY_EXPAND] = true;\r\n d[idKey] !== undefined && (that.status.expand[d[idKey]] = true);\r\n }\r\n });\r\n // 显示所有子节点\r\n tableView.find('tbody tr[data-level!=\"0\"]').removeClass(HIDE);\r\n // 处理节点的图标\r\n tableView.find('.layui-table-tree-flexIcon').html(treeOptions.view.flexIconOpen);\r\n treeOptions.view.showIcon && tableView\r\n .find('.layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)')\r\n .html(treeOptions.view.iconOpen);\r\n } else {\r\n // 如果有未打开过的父节点,将 tr 内容全部重新生成\r\n that.updateStatus(null, function (d) {\r\n if (d[isParentKey] || showFlexIconIfNotParent) {\r\n d[LAY_EXPAND] = true;\r\n d[LAY_HAS_EXPANDED] = true;\r\n d[idKey] !== undefined && (that.status.expand[d[idKey]] = true);\r\n }\r\n });\r\n if (options.initSort && options.initSort.type && options.autoSort) {\r\n return treeTable.sort(id);\r\n }\r\n var trAll = table.getTrHtml(id, tableDataFlat);\r\n\r\n var trAllObj = {\r\n trs: $(trAll.trs.join('')),\r\n trs_fixed: $(trAll.trs_fixed.join('')),\r\n trs_fixed_r: $(trAll.trs_fixed_r.join(''))\r\n }\r\n var props;\r\n layui.each(tableDataFlat, function (dataIndex, dataItem) {\r\n var dataLevel = dataItem[LAY_DATA_INDEX].split('-').length - 1;\r\n props = {\r\n 'data-index': dataItem[LAY_DATA_INDEX],\r\n 'lay-data-index': dataItem[LAY_DATA_INDEX],\r\n 'data-level': dataLevel\r\n };\r\n trAllObj.trs.eq(dataIndex).attr(props).data('index', dataItem[LAY_DATA_INDEX]);\r\n trAllObj.trs_fixed.eq(dataIndex).attr(props).data('index', dataItem[LAY_DATA_INDEX]);\r\n trAllObj.trs_fixed_r.eq(dataIndex).attr(props).data('index', dataItem[LAY_DATA_INDEX]);\r\n })\r\n layui.each(['main', 'fixed-l', 'fixed-r'], function (i, item) {\r\n tableView.find('.layui-table-' + item + ' tbody').html(trAllObj[['trs', 'trs_fixed', 'trs_fixed_r'][i]]);\r\n });\r\n that.renderTreeTable(tableView, 0, false);\r\n }\r\n }\r\n treeTable.resize(id);\r\n }\r\n\r\n /**\r\n * @typedef updateNodeIconOptions\r\n * @prop {JQuery} scopeEl - tr 元素\r\n * @prop {boolean} isExpand - 是否是展开图标\r\n * @prop {boolean} isParent - 是否是父节点图标\r\n */\r\n /**\r\n * 更新节点图标\r\n * @param {updateNodeIconOptions} opts\r\n */\r\n Class.prototype.updateNodeIcon = function(opts){\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree || {};\r\n var scopeEl = opts.scopeEl;\r\n var isExpand = opts.isExpand;\r\n var isParent = opts.isParent;\r\n\r\n // 处理折叠按钮图标\r\n var flexIconElem = scopeEl.find('.layui-table-tree-flexIcon');\r\n\r\n flexIconElem\r\n .css('visibility', isParent || treeOptions.view.showFlexIconIfNotParent ? 'visible' : 'hidden')\r\n .html(isExpand ? treeOptions.view.flexIconOpen : treeOptions.view.flexIconClose);\r\n // 处理节点图标\r\n if(treeOptions.view.showIcon){\r\n var nodeIconElem = scopeEl.find('.layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom)');\r\n var nodeIcon = isParent \r\n ? (isExpand ? treeOptions.view.iconOpen : treeOptions.view.iconClose)\r\n : treeOptions.view.iconLeaf;\r\n\r\n nodeIconElem\r\n .toggleClass('layui-table-tree-iconLeaf', !isParent)\r\n .html(nodeIcon);\r\n }\r\n }\r\n\r\n Class.prototype.renderTreeTable = function (tableView, level, sonSign) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var tableViewElem = options.elem.next();\r\n !tableViewElem.hasClass(TABLE_TREE) && tableViewElem.addClass(TABLE_TREE);\r\n var tableId = options.id;\r\n var treeOptions = options.tree || {};\r\n var treeOptionsData = treeOptions.data || {};\r\n var treeOptionsView = treeOptions.view || {};\r\n var customName = treeOptions.customName || {};\r\n var isParentKey = customName.isParent;\r\n var tableFilterId = tableViewElem.attr('lay-filter');\r\n var treeTableThat = that;\r\n // var tableData = treeTableThat.getTableData();\r\n\r\n level = level || 0;\r\n\r\n if (!level) {\r\n // 初始化的表格里面没有level信息,可以作为顶层节点的判断\r\n tableViewElem.find('.layui-table-body tr:not([data-level])').attr('data-level', level);\r\n layui.each(table.cache[tableId], function (dataIndex, dataItem) {\r\n tableViewElem.find('.layui-table-main tbody tr[data-level=\"0\"]:eq(' + dataIndex + ')').attr('lay-data-index', dataItem[LAY_DATA_INDEX]);\r\n tableViewElem.find('.layui-table-fixed-l tbody tr[data-level=\"0\"]:eq(' + dataIndex + ')').attr('lay-data-index', dataItem[LAY_DATA_INDEX]);\r\n tableViewElem.find('.layui-table-fixed-r tbody tr[data-level=\"0\"]:eq(' + dataIndex + ')').attr('lay-data-index', dataItem[LAY_DATA_INDEX]);\r\n })\r\n }\r\n\r\n var dataExpand = null; // 记录需要展开的数据\r\n var nameKey = customName.name;\r\n var indent = treeOptionsView.indent || 14;\r\n layui.each(tableView.find('td[data-field=\"' + nameKey + '\"]'), function (index, item) {\r\n item = $(item);\r\n var trElem = item.closest('tr');\r\n var itemCell = item.children('.layui-table-cell');\r\n if (itemCell.hasClass('layui-table-tree-item')) {\r\n return;\r\n }\r\n var trIndex = trElem.attr('lay-data-index');\r\n if (!trIndex) { // 排除在统计行中的节点\r\n return;\r\n }\r\n trElem = tableViewElem.find('tr[lay-data-index=\"' + trIndex + '\"]');\r\n var trData = treeTableThat.getNodeDataByIndex(trIndex);\r\n\r\n if (trData[LAY_EXPAND] && trData[isParentKey]) {\r\n // 需要展开\r\n dataExpand = dataExpand || {};\r\n dataExpand[trIndex] = true;\r\n }\r\n if (trData[LAY_CHECKBOX_HALF]) {\r\n trElem.find('input[type=\"checkbox\"][name=\"layTableCheckbox\"]').prop('indeterminate', true);\r\n }\r\n\r\n var htmlTemp = itemCell.html();\r\n itemCell = trElem.find('td[data-field=\"' + nameKey + '\"]>div.layui-table-cell');\r\n itemCell.addClass('layui-table-tree-item');\r\n var flexIconElem = itemCell\r\n .html(['
                          ',\r\n trData[LAY_EXPAND] ? treeOptionsView.flexIconOpen : treeOptionsView.flexIconClose, // 折叠图标\r\n '
                          ',\r\n treeOptionsView.showIcon ? '
                          ' +\r\n (that.normalizedIcon(trData[customName.icon]) || treeOptionsView.icon ||\r\n (trData[isParentKey] ?\r\n (trData[LAY_EXPAND] ? treeOptionsView.iconOpen : treeOptionsView.iconClose) :\r\n treeOptionsView.iconLeaf) ||\r\n '') + '
                          ' : '', // 区分父子节点\r\n htmlTemp].join('')) // 图标要可定制\r\n .find('.layui-table-tree-flexIcon');\r\n\r\n // 添加展开按钮的事件\r\n flexIconElem.on('click', function (event) {\r\n layui.stope(event);\r\n // 处理数据\r\n // var trElem = item.closest('tr');\r\n expandNode({trElem: trElem}, null, null, null, true);\r\n });\r\n });\r\n\r\n if (!level && treeOptions.view.expandAllDefault && that.isExpandAll === undefined) {\r\n return treeTable.expandAll(tableId, true); // 默认展开全部\r\n }\r\n\r\n // 当前层的数据看看是否需要展开\r\n if (sonSign !== false && dataExpand) {\r\n layui.each(dataExpand, function (index, item) {\r\n var trDefaultExpand = tableViewElem.find('tr[lay-data-index=\"' + index + '\"]');\r\n trDefaultExpand.find('.layui-table-tree-flexIcon').html(treeOptionsView.flexIconOpen);\r\n expandNode({trElem: trDefaultExpand.first()}, true);\r\n });\r\n // #1463 expandNode 中已经展开过的节点不会重新渲染\r\n debounceFn('renderTreeTable2-' + tableId, function () {\r\n form.render($('.layui-table-tree[' + MOD_ID + '=\"' + tableId + '\"]'));\r\n }, 0)();\r\n } else {\r\n debounceFn('renderTreeTable-' + tableId, function () {\r\n options.hasNumberCol && formatNumber(that);\r\n form.render($('.layui-table-tree[' + MOD_ID + '=\"' + tableId + '\"]'));\r\n }, 0)();\r\n }\r\n }\r\n\r\n var formatNumber = function (that) {\r\n var options = that.getOptions();\r\n var tableViewElem = options.elem.next();\r\n\r\n var num = 0;\r\n var trMain = tableViewElem.find('.layui-table-main tbody tr');\r\n var trFixedL = tableViewElem.find('.layui-table-fixed-l tbody tr');\r\n var trFixedR = tableViewElem.find('.layui-table-fixed-r tbody tr');\r\n layui.each(that.treeToFlat(table.cache[options.id]), function (i1, item1) {\r\n if (item1['LAY_HIDE']) return;\r\n var itemData = that.getNodeDataByIndex(item1[LAY_DATA_INDEX]);\r\n itemData['LAY_NUM'] = ++num;\r\n trMain.eq(i1).find('.laytable-cell-numbers').html(num);\r\n trFixedL.eq(i1).find('.laytable-cell-numbers').html(num);\r\n trFixedR.eq(i1).find('.laytable-cell-numbers').html(num);\r\n })\r\n }\r\n\r\n // 树表渲染\r\n Class.prototype.render = function (type) {\r\n var that = this;\r\n that.tableIns = table[type === 'reloadData' ? 'reloadData' : 'reload'](that.tableIns.config.id, $.extend(true, {}, that.config));\r\n that.config = that.tableIns.config;\r\n };\r\n\r\n // 表格重载\r\n Class.prototype.reload = function (options, deep, type) {\r\n var that = this;\r\n\r\n options = options || {};\r\n delete that.haveInit;\r\n\r\n // 防止数组深度合并\r\n layui.each(options, function (key, item) {\r\n if (layui.type(item) === 'array') delete that.config[key];\r\n });\r\n\r\n // 根据需要处理options中的一些参数\r\n updateOptions(that.getOptions().id, options, type || true);\r\n\r\n // 对参数进行深度或浅扩展\r\n that.config = $.extend(deep, {}, that.config, options);\r\n\r\n // 执行渲染\r\n that.render(type);\r\n };\r\n\r\n // 仅重载数据\r\n treeTable.reloadData = function () {\r\n var args = $.extend(true, [], arguments);\r\n args[3] = 'reloadData';\r\n\r\n return treeTable.reload.apply(null, args);\r\n };\r\n\r\n var updateStatus = function (data, statusObj, childrenKey, notCascade) {\r\n var dataUpdated = [];\r\n layui.each(data, function (i1, item1) {\r\n if (layui.type(statusObj) === 'function') {\r\n statusObj(item1);\r\n } else {\r\n $.extend(item1, statusObj);\r\n }\r\n dataUpdated.push($.extend({}, item1));\r\n notCascade || (dataUpdated = dataUpdated.concat(updateStatus(item1[childrenKey], statusObj, childrenKey, notCascade)));\r\n });\r\n return dataUpdated;\r\n }\r\n\r\n Class.prototype.updateStatus = function (data, statusObj, notCascade) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n data = data || table.cache[options.id];\r\n\r\n return updateStatus(data, statusObj, treeOptions.customName.children, notCascade);\r\n }\r\n\r\n Class.prototype.getTableData = function () {\r\n var that = this;\r\n var options = that.getOptions();\r\n // return options.url ? table.cache[options.id] : options.data;\r\n return table.cache[options.id];\r\n }\r\n\r\n treeTable.updateStatus = function (id, statusObj, data) {\r\n var that = getThisTable(id);\r\n var options = that.getOptions();\r\n if (!data) {\r\n if (options.url) {\r\n data = table.cache[options.id];\r\n } else {\r\n data = options.data;\r\n }\r\n }\r\n return that.updateStatus(data, statusObj);\r\n }\r\n\r\n treeTable.sort = function (id) {\r\n var that = getThisTable(id);\r\n if(!that) return;\r\n\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n\r\n var tableData = treeTable.getData(id);\r\n var customName = treeOptions.customName;\r\n var childrenKey = customName.children;\r\n\r\n // 只和同级节点排序\r\n var sort = function(data, field, type){\r\n layui.sort(data, field, type, true);\r\n layui.each(data, function(rowIndex, trData){\r\n sort(trData[childrenKey] || [], field, type);\r\n })\r\n }\r\n\r\n if (options.autoSort) {\r\n var initSort = options.initSort;\r\n if (initSort.type) {\r\n sort(tableData, initSort.field, initSort.type === 'desc');\r\n } else {\r\n // 恢复默认\r\n sort(tableData, table.config.indexName, null);\r\n }\r\n // 更新缓存中数据的顺序\r\n table.cache[id] = tableData;\r\n // 重新初始化缓存数据\r\n that.initData(tableData);\r\n treeTable.renderData(id);\r\n }\r\n }\r\n\r\n // 处理事件\r\n var updateObjParams = function (obj) {\r\n var tableId = obj.config.id;\r\n var tableThat = getThisTable(tableId);\r\n var trData = obj.data = treeTable.getNodeDataByIndex(tableId, obj.index); // 克隆的\r\n var trIndex = trData[LAY_DATA_INDEX];\r\n obj.dataIndex = trIndex;\r\n\r\n // 处理update方法\r\n var updateFn = obj.update;\r\n obj.update = function () {\r\n var updateThat = this;\r\n var args = arguments;\r\n $.extend(tableThat.getNodeDataByIndex(trIndex), args[0]);\r\n var ret = updateFn.apply(updateThat, args); // 主要负责更新节点内容\r\n var nameKey = obj.config.tree.customName.name;\r\n nameKey in args[0] && obj.tr.find('td[data-field=\"' + nameKey + '\"]').children('div.layui-table-cell').removeClass('layui-table-tree-item');\r\n tableThat.renderTreeTable(obj.tr, obj.tr.attr('data-level'), false);\r\n return ret;\r\n }\r\n\r\n // 处理del方法\r\n obj.del = function () {\r\n treeTable.removeNode(tableId, trData);\r\n }\r\n\r\n // 处理setRowChecked\r\n obj.setRowChecked = function (checked) {\r\n treeTable.setRowChecked(tableId, {\r\n index: trData,\r\n checked: checked\r\n });\r\n }\r\n }\r\n\r\n // 更新数据\r\n treeTable.updateNode = function (id, index, newNode) {\r\n var that = getThisTable(id);\r\n if(!that) return;\r\n\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableView = options.elem.next();\r\n var trElem = tableView.find('tr[lay-data-index=\"' + index + '\"]');\r\n var trIndex = trElem.attr('data-index');\r\n var trLevel = trElem.attr('data-level')\r\n\r\n if (!newNode) {\r\n return;\r\n }\r\n // 更新值\r\n var newNodeTemp = that.getNodeDataByIndex(index, false, newNode);\r\n // 获取新的tr替换\r\n var trNew = table.getTrHtml(id, [newNodeTemp]);\r\n // 重新渲染tr\r\n layui.each(['main', 'fixed-l', 'fixed-r'], function (i, item) {\r\n tableView.find('.layui-table-' + item + ' tbody tr[lay-data-index=\"' + index + '\"]').replaceWith($(trNew[['trs', 'trs_fixed', 'trs_fixed_r'][i]].join('')).attr({\r\n 'data-index': trIndex,\r\n 'lay-data-index': index,\r\n 'data-level': trLevel\r\n }).data('index', trIndex));\r\n });\r\n that.renderTreeTable(tableView.find('tr[lay-data-index=\"' + index + '\"]'), trLevel);\r\n }\r\n\r\n // 删除数据\r\n treeTable.removeNode = function (id, node) {\r\n var that = getThisTable(id);\r\n if(!that) return;\r\n\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var isParentKey = treeOptions.customName.isParent;\r\n var childrenKey = treeOptions.customName.children;\r\n var tableView = options.elem.next();\r\n var delNode;\r\n var indexArr = [];\r\n var tableCache = table.cache[id];\r\n delNode = that.getNodeDataByIndex(layui.type(node) === 'string' ? node : node[LAY_DATA_INDEX], false, 'delete');\r\n var nodeP = that.getNodeDataByIndex(delNode[LAY_PARENT_INDEX]);\r\n that.updateCheckStatus(nodeP);\r\n var delNodesFlat = that.treeToFlat([delNode], delNode[treeOptions.customName.pid], delNode[LAY_PARENT_INDEX]);\r\n layui.each(delNodesFlat, function (i2, delNode) {\r\n var delNodeDataIndex = delNode[LAY_DATA_INDEX];\r\n indexArr.push('tr[lay-data-index=\"' + delNodeDataIndex + '\"]');\r\n // 删除临时 key\r\n if(delNodeDataIndex.indexOf('-') !== -1){\r\n delete tableCache[delNodeDataIndex]; \r\n }\r\n })\r\n\r\n tableView.find(indexArr.join(',')).remove(); // 删除行\r\n\r\n var deleteCacheKey = function(){\r\n for (var key in tableCache) {\r\n // 根节点 getNodeDataByIndex 内部已处理\r\n if(key.indexOf('-') !== -1){\r\n // L93 updateCache() 中,cacheKey 取自 rowData 中的 LAY_DATA_INDEX,\r\n // 两者不同说明当前 cacheKey 引用的 rowData 已被更新\r\n if(key !== tableCache[key][LAY_DATA_INDEX]){\r\n delete tableCache[key]\r\n }\r\n }\r\n }\r\n }\r\n\r\n // 重新整理数据\r\n var tableData = that.initData();\r\n deleteCacheKey();\r\n // index发生变化需要更新页面tr中对应的lay-data-index 新增和删除都要注意数据结构变动之后的index问题\r\n layui.each(that.treeToFlat(tableData), function (i3, item3) {\r\n if (item3[LAY_DATA_INDEX_HISTORY] && item3[LAY_DATA_INDEX_HISTORY] !== item3[LAY_DATA_INDEX]) {\r\n tableView.find('tr[lay-data-index=\"' + item3[LAY_DATA_INDEX_HISTORY] + '\"]').attr({\r\n 'data-index': item3[LAY_DATA_INDEX],\r\n 'lay-data-index': item3[LAY_DATA_INDEX],\r\n }).data('index', item3[LAY_DATA_INDEX]);\r\n // item3[LAY_DATA_INDEX_HISTORY] = item3[LAY_DATA_INDEX]\r\n }\r\n });\r\n // 重新更新顶层节点的data-index;\r\n layui.each(tableCache, function (i4, item4) {\r\n tableView.find('tr[data-level=\"0\"][lay-data-index=\"' + item4[LAY_DATA_INDEX] + '\"]')\r\n .attr('data-index', i4)\r\n .data('index', i4);\r\n })\r\n options.hasNumberCol && formatNumber(that);\r\n // 更新父节点状态\r\n if(nodeP){\r\n var trEl = tableView.find('tr[lay-data-index=\"' + nodeP[LAY_DATA_INDEX] + '\"]');\r\n nodeP[isParentKey] = !!(nodeP[childrenKey] && nodeP[childrenKey].length);\r\n that.updateNodeIcon({\r\n scopeEl: trEl,\r\n isExpand: nodeP[LAY_EXPAND],\r\n isParent: nodeP[isParentKey],\r\n }); \r\n }\r\n\r\n // 重新适配尺寸\r\n treeTable.resize(id);\r\n }\r\n\r\n /**\r\n * 新增数据节点\r\n * @param {String} id 树表id\r\n * @param {Object} opts\r\n * @param {String|Number} opts.parentIndex 指定的父节点,如果增加根节点,请设置 parentIndex 为 null 即可\r\n * @param {Number} opts.index 新节点插入的位置(从 0 开始)index = -1(默认) 时,插入到最后\r\n * @param {Object|Array} opts.data 新增的节点,单个或者多个\r\n * @param {Boolean} opts.focus 新增的节点,单个或者多个\r\n * @return {Array} 新增的节点\r\n * */\r\n treeTable.addNodes = function (id, opts) {\r\n var that = getThisTable(id);\r\n if(!that) return;\r\n\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableViewElem = options.elem.next();\r\n var checkName = table.config.checkName;\r\n\r\n opts = opts || {};\r\n\r\n var parentIndex = opts.parentIndex;\r\n var index = opts.index;\r\n var newNodes = opts.data;\r\n var focus = opts.focus;\r\n\r\n parentIndex = layui.type(parentIndex) === 'number' ? parentIndex.toString() : parentIndex;\r\n var parentNode = parentIndex ? that.getNodeDataByIndex(parentIndex) : null;\r\n index = layui.type(index) === 'number' ? index : -1;\r\n\r\n // 添加数据\r\n newNodes = $.extend(true, [], (layui.isArray(newNodes) ? newNodes : [newNodes]));\r\n\r\n // 若未传入 LAY_CHECKED 属性,则继承父节点的 checked 状态\r\n layui.each(newNodes, function(i, item){\r\n if(!(checkName in item) && parentNode){\r\n item[checkName] = parentNode[checkName];\r\n }\r\n })\r\n\r\n var tableData = that.getTableData(), dataAfter;\r\n if (!parentNode) {\r\n // 添加到根节点\r\n dataAfter = table.cache[id].splice(index === -1 ? table.cache[id].length : index);\r\n table.cache[id] = table.cache[id].concat(newNodes, dataAfter);\r\n if (!options.url) {\r\n // 静态data模式\r\n if (!options.page) {\r\n options.data = table.cache[id];\r\n } else {\r\n var pageOptions = options.page;\r\n options.data.splice.apply(options.data, [pageOptions.limit * (pageOptions.curr - 1), pageOptions.limit].concat(table.cache[id]))\r\n }\r\n }\r\n // 将新节点添加到页面\r\n tableData = that.initData();\r\n\r\n if (tableViewElem.find('.layui-none').length) {\r\n table.renderData(id);\r\n return newNodes;\r\n }\r\n\r\n var newNodesHtml = table.getTrHtml(id, newNodes);\r\n var newNodesHtmlObj = {\r\n trs: $(newNodesHtml.trs.join('')),\r\n trs_fixed: $(newNodesHtml.trs_fixed.join('')),\r\n trs_fixed_r: $(newNodesHtml.trs_fixed_r.join(''))\r\n }\r\n\r\n var attrs = {};\r\n layui.each(newNodes, function (newNodeIndex, newNodeItem) {\r\n attrs = {\r\n 'data-index': newNodeItem[LAY_DATA_INDEX],\r\n 'lay-data-index': newNodeItem[LAY_DATA_INDEX],\r\n 'data-level': '0'\r\n };\r\n newNodesHtmlObj.trs.eq(newNodeIndex).attr(attrs).data('index', newNodeItem[LAY_DATA_INDEX]);\r\n newNodesHtmlObj.trs_fixed.eq(newNodeIndex).attr(attrs).data('index', newNodeItem[LAY_DATA_INDEX]);\r\n newNodesHtmlObj.trs_fixed_r.eq(newNodeIndex).attr(attrs).data('index', newNodeItem[LAY_DATA_INDEX]);\r\n })\r\n var trIndexPrev = parseInt(newNodes[0][LAY_DATA_INDEX]) - 1;\r\n var tableViewElemMAIN = tableViewElem.find(ELEM_MAIN);\r\n var tableViewElemFIXL = tableViewElem.find(ELEM_FIXL);\r\n var tableViewElemFIXR = tableViewElem.find(ELEM_FIXR);\r\n if (trIndexPrev === -1) {\r\n // 插入到开头\r\n var hasTr = tableViewElemMAIN.find('tr[data-level=\"0\"][data-index=\"0\"]')[0];\r\n if(hasTr){\r\n tableViewElemMAIN.find('tr[data-level=\"0\"][data-index=\"0\"]').before(newNodesHtmlObj.trs);\r\n tableViewElemFIXL.find('tr[data-level=\"0\"][data-index=\"0\"]').before(newNodesHtmlObj.trs_fixed);\r\n tableViewElemFIXR.find('tr[data-level=\"0\"][data-index=\"0\"]').before(newNodesHtmlObj.trs_fixed_r);\r\n }else{\r\n tableViewElemMAIN.find('tbody').prepend(newNodesHtmlObj.trs);\r\n tableViewElemFIXL.find('tbody').prepend(newNodesHtmlObj.trs_fixed);\r\n tableViewElemFIXR.find('tbody').prepend(newNodesHtmlObj.trs_fixed_r);\r\n }\r\n } else {\r\n if (index === -1) {\r\n // 追加到最后\r\n tableViewElemMAIN.find('tbody').append(newNodesHtmlObj.trs);\r\n tableViewElemFIXL.find('tbody').append(newNodesHtmlObj.trs_fixed);\r\n tableViewElemFIXR.find('tbody').append(newNodesHtmlObj.trs_fixed_r);\r\n } else {\r\n var trIndexNext = dataAfter[0][LAY_DATA_INDEX_HISTORY];\r\n tableViewElemMAIN.find('tr[data-level=\"0\"][data-index=\"' + trIndexNext + '\"]').before(newNodesHtmlObj.trs);\r\n tableViewElemFIXL.find('tr[data-level=\"0\"][data-index=\"' + trIndexNext + '\"]').before(newNodesHtmlObj.trs_fixed);\r\n tableViewElemFIXR.find('tr[data-level=\"0\"][data-index=\"' + trIndexNext + '\"]').before(newNodesHtmlObj.trs_fixed_r);\r\n }\r\n\r\n }\r\n\r\n // 重新更新顶层节点的data-index;\r\n layui.each(table.cache[id], function (i4, item4) {\r\n tableViewElem.find('tr[data-level=\"0\"][lay-data-index=\"' + item4[LAY_DATA_INDEX] + '\"]')\r\n .attr('data-index', i4)\r\n .data('index', i4);\r\n })\r\n\r\n that.renderTreeTable(tableViewElem.find(newNodes.map(function (value, index, array) {\r\n return 'tr[lay-data-index=\"' + value[LAY_DATA_INDEX] + '\"]'\r\n }).join(',')));\r\n } else {\r\n var isParentKey = treeOptions.customName.isParent;\r\n var childKey = treeOptions.customName.children;\r\n\r\n parentNode[isParentKey] = true;\r\n var childrenNodes = parentNode[childKey];\r\n if (!childrenNodes) {\r\n childrenNodes = parentNode[childKey] = newNodes;\r\n } else {\r\n dataAfter = childrenNodes.splice(index === -1 ? childrenNodes.length : index);\r\n childrenNodes = parentNode[childKey] = childrenNodes.concat(newNodes, dataAfter);\r\n }\r\n // 删除已经存在的同级节点以及他们的子节点,并且把中间节点的已展开过的状态设置为false\r\n that.updateStatus(childrenNodes, function (d) {\r\n if (d[isParentKey] || treeOptions.view.showFlexIconIfNotParent) {\r\n d[LAY_HAS_EXPANDED] = false;\r\n }\r\n });\r\n var childrenNodesFlat = that.treeToFlat(childrenNodes);\r\n tableViewElem.find(childrenNodesFlat.map(function (value) {\r\n return 'tr[lay-data-index=\"' + value[LAY_DATA_INDEX] + '\"]'\r\n }).join(',')).remove();\r\n\r\n tableData = that.initData();\r\n // 去掉父节点的已经展开过的状态,重新执行一次展开的方法\r\n parentNode[LAY_HAS_EXPANDED] = false;\r\n parentNode[LAY_ASYNC_STATUS] = 'local'; // 转为本地数据,应该规定异步加载子节点的时候addNodes的规则\r\n expandNode({trElem: tableViewElem.find('tr[lay-data-index=\"' + parentIndex + '\"]')}, true)\r\n }\r\n that.updateCheckStatus(parentNode);\r\n // 更新父节点图标状态\r\n if(parentNode){\r\n var trEl = tableViewElem.find('tr[lay-data-index=\"' + parentNode[LAY_DATA_INDEX] + '\"]');\r\n that.updateNodeIcon({\r\n scopeEl: trEl,\r\n isExpand: parentNode[LAY_EXPAND],\r\n isParent: parentNode[isParentKey],\r\n }); \r\n }\r\n treeTable.resize(id);\r\n if (focus) {\r\n // 滚动到第一个新增的节点\r\n tableViewElem.find(ELEM_MAIN).find('tr[lay-data-index=\"' + newNodes[0][LAY_DATA_INDEX] + '\"]').get(0).scrollIntoViewIfNeeded();\r\n }\r\n\r\n return newNodes;\r\n }\r\n\r\n // 获取表格选中状态\r\n treeTable.checkStatus = function (id, includeHalfCheck) {\r\n var that = getThisTable(id);\r\n if (!that) return;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var checkName = table.config.checkName;\r\n\r\n // 需要区分单双选\r\n var tableData = treeTable.getData(id, true);\r\n var checkedData = tableData.filter(function (value, index, array) {\r\n return value[checkName] || (includeHalfCheck && value[LAY_CHECKBOX_HALF]);\r\n });\r\n\r\n var isAll = true;\r\n layui.each(treeOptions.data.cascade === 'all' ? table.cache[id] : treeTable.getData(id, true), function (i1, item1) {\r\n if (!item1[checkName]) {\r\n isAll = false;\r\n return true;\r\n }\r\n })\r\n\r\n return {\r\n data: checkedData,\r\n isAll: isAll\r\n }\r\n }\r\n\r\n // 排序之后重新渲染成树表\r\n treeTable.on('sort', function (obj) {\r\n var options = obj.config;\r\n var tableView = options.elem.next();\r\n var tableId = options.id;\r\n\r\n if (tableView.hasClass(TABLE_TREE)) {\r\n treeTable.sort(tableId);\r\n }\r\n });\r\n\r\n // 行点击\r\n treeTable.on('row', function (obj) {\r\n var options = obj.config;\r\n var tableView = options.elem.next();\r\n\r\n if (tableView.hasClass(TABLE_TREE)) {\r\n updateObjParams(obj);\r\n }\r\n })\r\n\r\n // 行双击\r\n treeTable.on('rowDouble', function (obj) {\r\n var options = obj.config;\r\n var tableView = options.elem.next();\r\n var tableId = options.id;\r\n\r\n if (tableView.hasClass(TABLE_TREE)) {\r\n updateObjParams(obj);\r\n\r\n var treeOptions = options.tree || {};\r\n if (treeOptions.view.dblClickExpand) {\r\n expandNode({trElem: obj.tr.first()}, null, null, null, true);\r\n }\r\n }\r\n })\r\n\r\n // 菜单\r\n treeTable.on('rowContextmenu', function (obj) {\r\n var options = obj.config;\r\n var tableView = options.elem.next();\r\n var tableId = options.id;\r\n\r\n if (tableView.hasClass(TABLE_TREE)) {\r\n updateObjParams(obj);\r\n }\r\n })\r\n\r\n // tr中带lay-event节点点击\r\n treeTable.on('tool', function (obj) {\r\n var options = obj.config;\r\n var tableView = options.elem.next();\r\n var tableId = options.id;\r\n\r\n if (tableView.hasClass(TABLE_TREE)) {\r\n updateObjParams(obj);\r\n }\r\n })\r\n\r\n // 行内编辑\r\n treeTable.on('edit', function (obj) {\r\n // 如果编辑涉及到关键的name字段需要重新更新一下tr节点\r\n var options = obj.config;\r\n var tableView = options.elem.next();\r\n var tableId = options.id;\r\n\r\n if (tableView.hasClass(TABLE_TREE)) {\r\n updateObjParams(obj);\r\n if (obj.field === options.tree.customName.name) {\r\n var updateData = {};\r\n updateData[obj.field] = obj.value;\r\n obj.update(updateData); // 通过update调用执行tr节点的更新\r\n }\r\n }\r\n });\r\n\r\n // 单选\r\n treeTable.on('radio', function (obj) {\r\n var options = obj.config;\r\n var tableView = options.elem.next();\r\n var tableId = options.id;\r\n\r\n if (tableView.hasClass(TABLE_TREE)) {\r\n var that = getThisTable(tableId);\r\n updateObjParams(obj);\r\n checkNode.call(that, obj.tr, obj.checked)\r\n }\r\n })\r\n\r\n // 设置或取消行选中样式\r\n Class.prototype.setRowCheckedClass = function(tr, checked){\r\n var that = this;\r\n var options = that.getOptions();\r\n\r\n var index = tr.data('index');\r\n var tableViewElem = options.elem.next();\r\n \r\n tr[checked ? 'addClass' : 'removeClass'](ELEM_CHECKED); // 主体行\r\n\r\n // 右侧固定行\r\n tr.each(function(){\r\n var index = $(this).data('index');\r\n var trFixedR = tableViewElem.find('.layui-table-fixed-r tbody tr[data-index=\"'+ index +'\"]');\r\n trFixedR[checked ? 'addClass' : 'removeClass'](ELEM_CHECKED);\r\n });\r\n };\r\n\r\n // 更新表格的复选框状态\r\n Class.prototype.updateCheckStatus = function (dataP, checked) {\r\n var that = this;\r\n var options = that.getOptions();\r\n if (!options.hasChecboxCol) {\r\n return false; // 如果没有复选列则不需要更新状态\r\n }\r\n var treeOptions = options.tree;\r\n var tableId = options.id;\r\n var tableView = options.elem.next();\r\n\r\n var checkName = table.config.checkName;\r\n\r\n var cascade = treeOptions.data.cascade;\r\n var isCascadeParent = cascade === 'all' || cascade === 'parent';\r\n\r\n // 如有必要更新父节点们的状态\r\n if (isCascadeParent && dataP) {\r\n var trsP = that.updateParentCheckStatus(dataP, layui.type(checked) === 'boolean' ? checked : null);\r\n layui.each(trsP, function (indexP, itemP) {\r\n var checkboxElem = tableView.find('tr[lay-data-index=\"' + itemP[LAY_DATA_INDEX] + '\"] input[name=\"layTableCheckbox\"]:not(:disabled)');\r\n var checked = itemP[checkName];\r\n\r\n // 标记父节点行背景色\r\n that.setRowCheckedClass(checkboxElem.closest('tr'), checked);\r\n \r\n // 设置原始复选框 checked 属性值并渲染\r\n form.render(checkboxElem.prop({\r\n checked: checked,\r\n indeterminate: itemP[LAY_CHECKBOX_HALF]\r\n }))\r\n })\r\n }\r\n\r\n // 更新全选的状态\r\n var isAll = true;\r\n var isIndeterminate = false;\r\n var data = treeOptions.data.cascade === 'all' ? table.cache[tableId] : treeTable.getData(tableId, true);\r\n data = data.filter(function (item) {\r\n return !item[options.disabledName];\r\n });\r\n\r\n if(data.length > 0){\r\n layui.each(data, function (i1, item1) {\r\n if (item1[checkName] || item1[LAY_CHECKBOX_HALF]) {\r\n isIndeterminate = true;\r\n }\r\n if (!item1[checkName]) {\r\n isAll = false;\r\n }\r\n if (isIndeterminate && !isAll) {\r\n return true;\r\n }\r\n })\r\n }else{\r\n isAll = false;\r\n }\r\n \r\n isIndeterminate = isIndeterminate && !isAll;\r\n form.render(tableView.find('input[name=\"layTableCheckbox\"][lay-filter=\"layTableAllChoose\"]').prop({\r\n 'checked': isAll,\r\n indeterminate: isIndeterminate\r\n }));\r\n\r\n return isAll\r\n }\r\n\r\n // 更新父节点的选中状态\r\n Class.prototype.updateParentCheckStatus = function (dataP, checked) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableId = options.id;\r\n var checkName = table.config.checkName;\r\n var childrenKey = treeOptions.customName.children;\r\n\r\n var dataRet = [];\r\n dataP[LAY_CHECKBOX_HALF] = false; // 先设置为非半选,是否为半选又下面逻辑判断\r\n if (checked === true) {\r\n // 为真需要判断子节点的情况\r\n if (!dataP[childrenKey].length) {\r\n checked = false;\r\n } else {\r\n layui.each(dataP[childrenKey], function (index, item) {\r\n if (!item[checkName]) { // 只要有一个子节点为false\r\n checked = false;\r\n dataP[LAY_CHECKBOX_HALF] = true;\r\n return true; // 跳出循环\r\n }\r\n });\r\n }\r\n } else if (checked === false) {\r\n // 判断是否为半选\r\n layui.each(dataP[childrenKey], function (index, item) {\r\n if (item[checkName] || item[LAY_CHECKBOX_HALF]) { // 只要有一个子节点为选中或者半选状态\r\n dataP[LAY_CHECKBOX_HALF] = true;\r\n return true;\r\n }\r\n });\r\n } else {\r\n // 状态不确定的情况下根据子节点的信息\r\n checked = false;\r\n var checkedNum = 0;\r\n layui.each(dataP[childrenKey], function (index, item) {\r\n if (item[checkName]) {\r\n checkedNum++;\r\n }\r\n });\r\n checked = dataP[childrenKey].length ? dataP[childrenKey].length === checkedNum : dataP[checkName]; // 如果没有子节点保留原来的状态;\r\n dataP[LAY_CHECKBOX_HALF] = checked ? false : checkedNum > 0;\r\n }\r\n dataP[checkName] = checked;\r\n dataRet.push($.extend({}, dataP));\r\n if (dataP[LAY_PARENT_INDEX]) {\r\n dataRet = dataRet.concat(that.updateParentCheckStatus(table.cache[tableId][dataP[LAY_PARENT_INDEX]], checked));\r\n }\r\n return dataRet\r\n }\r\n\r\n var checkNode = function (trElem, checked, callbackFlag) {\r\n var that = this;\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n var tableId = options.id;\r\n var tableView = options.elem.next();\r\n var inputElem = (trElem.length ? trElem : tableView).find('.laytable-cell-radio, .laytable-cell-checkbox').children('input').last();\r\n // 判断是单选还是多选 不应该同时存在radio列和checkbox列\r\n var isRadio = inputElem.attr('type') === 'radio';\r\n\r\n if (callbackFlag) {\r\n var triggerEvent = function () {\r\n var fn = function (event) {\r\n layui.stope(event);\r\n }\r\n inputElem.parent().on('click', fn); // 添加临时的阻止冒泡事件\r\n inputElem.next().click();\r\n inputElem.parent().off('click', fn);\r\n }\r\n // 如果需要触发事件可以简单的触发对应节点的click事件\r\n if (isRadio) {\r\n // 单选只能选中或者切换其他的不能取消选中 后续看是否有支持的必要 todo\r\n if (checked && !inputElem.prop('checked')) {\r\n triggerEvent()\r\n }\r\n } else {\r\n if (layui.type(checked) === 'boolean') {\r\n if (inputElem.prop('checked') !== checked) {\r\n // 如果当前已经是想要修改的状态则不做处理\r\n triggerEvent()\r\n }\r\n } else {\r\n // 切换\r\n triggerEvent()\r\n }\r\n }\r\n } else {\r\n var trData = that.getNodeDataByIndex(trElem.attr('data-index'));\r\n var checkName = table.config.checkName;\r\n // 如果不触发事件应该有一个方法可以更新数据以及页面的节点\r\n if (isRadio) {\r\n if (!trData) {\r\n // 单选必须是一个存在的行\r\n return;\r\n }\r\n var statusChecked = {};\r\n statusChecked[checkName] = false;\r\n // that.updateStatus(null, statusChecked); // 取消其他的选中状态\r\n that.updateStatus(null, function (d) {\r\n if (d[checkName]) {\r\n var radioElem = tableView.find('tr[lay-data-index=\"' + d[LAY_DATA_INDEX] + '\"] input[type=\"radio\"][lay-type=\"layTableRadio\"]');\r\n d[checkName] = false;\r\n\r\n // 取消当前选中行背景色\r\n that.setRowCheckedClass(radioElem.closest('tr'), false);\r\n form.render(radioElem.prop('checked', false));\r\n }\r\n }); // 取消其他的选中状态\r\n trData[checkName] = checked;\r\n\r\n that.setRowCheckedClass(trElem, checked); // 标记当前选中行背景色\r\n that.setRowCheckedClass(trElem.siblings(), false); // 取消其他行背景色\r\n\r\n form.render(trElem.find('input[type=\"radio\"][lay-type=\"layTableRadio\"]').prop('checked', checked));\r\n } else {\r\n // 切换只能用到单条,全选到这一步的时候应该是一个确定的状态\r\n checked = layui.type(checked) === 'boolean' ? checked : !trData[checkName]; // 状态切换,如果遇到不可操作的节点待处理 todo\r\n // 全选或者是一个父节点,将子节点的状态同步为当前节点的状态\r\n // 处理不可操作的信息\r\n var checkedStatusFn = function (d) {\r\n if (!d[table.config.disabledName]) { // 节点不可操作的不处理\r\n d[checkName] = checked;\r\n d[LAY_CHECKBOX_HALF] = false;\r\n }\r\n }\r\n\r\n var trs = that.updateStatus(trData ? [trData] : table.cache[tableId], checkedStatusFn, trData && ['parent', 'none'].indexOf(treeOptions.data.cascade) !== -1);\r\n var checkboxElem = tableView.find(trs.map(function (value) {\r\n return 'tr[lay-data-index=\"' + value[LAY_DATA_INDEX] + '\"] input[name=\"layTableCheckbox\"]:not(:disabled)';\r\n }).join(','));\r\n\r\n that.setRowCheckedClass(checkboxElem.closest('tr'), checked); // 标记当前选中行背景色\r\n form.render(checkboxElem.prop({checked: checked, indeterminate: false}));\r\n\r\n var trDataP;\r\n\r\n // 更新父节点以及更上层节点的状态\r\n if (trData && trData[LAY_PARENT_INDEX]) {\r\n // 找到父节点,然后判断父节点的子节点是否全部选中\r\n trDataP = that.getNodeDataByIndex(trData[LAY_PARENT_INDEX]);\r\n }\r\n\r\n return that.updateCheckStatus(trDataP, checked);\r\n }\r\n }\r\n }\r\n\r\n // 多选\r\n treeTable.on('checkbox', function (obj) {\r\n var options = obj.config;\r\n var tableView = options.elem.next();\r\n var tableId = options.id;\r\n\r\n if (tableView.hasClass(TABLE_TREE)) {\r\n var that = getThisTable(tableId);\r\n var checked = obj.checked;\r\n updateObjParams(obj)\r\n obj.isAll = checkNode.call(that, obj.tr, checked);\r\n }\r\n })\r\n\r\n /**\r\n * 设置行选中状态\r\n * @param {String} id 树表id\r\n * @param {Object} opts\r\n * @param {Object|String} opts.index 节点下标\r\n * @param {Boolean} opts.checked 选中或取消\r\n * @param {Boolean} [opts.callbackFlag] 是否触发事件回调\r\n * */\r\n treeTable.setRowChecked = function (id, opts) {\r\n var that = getThisTable(id);\r\n if(!that) return;\r\n\r\n var options = that.getOptions();\r\n var tableView = options.elem.next();\r\n\r\n opts = opts || {};\r\n\r\n var node = opts.index;\r\n var checked = opts.checked;\r\n var callbackFlag = opts.callbackFlag;\r\n\r\n var dataIndex = layui.type(node) === 'string' ? node : node[LAY_DATA_INDEX];\r\n // 判断是否在当前页面中\r\n var nodeData = that.getNodeDataByIndex(dataIndex);\r\n if (!nodeData) {\r\n // 目前只能处理当前页的数据\r\n return;\r\n }\r\n\r\n var collectNeedExpandNodeIndex = function(index){\r\n needExpandIndex.push(index);\r\n var trElem = tableView.find('tr[lay-data-index=\"' + index + '\"]');\r\n if (!trElem.length) {\r\n var nodeData = that.getNodeDataByIndex(index);\r\n var parentIndex = nodeData[LAY_PARENT_INDEX];\r\n parentIndex && collectNeedExpandNodeIndex(parentIndex);\r\n }\r\n }\r\n\r\n // 判断是否展开过\r\n var trElem = tableView.find('tr[lay-data-index=\"' + dataIndex + '\"]');\r\n if (!trElem.length) {\r\n var parentIndex = nodeData[LAY_PARENT_INDEX];\r\n var needExpandIndex = [];\r\n collectNeedExpandNodeIndex(parentIndex);\r\n // 如果还没有展开没有渲染的要先渲染出来\r\n layui.each(needExpandIndex.reverse(),function(index, nodeIndex){\r\n treeTable.expandNode(id, {\r\n index: nodeIndex,\r\n expandFlag: true\r\n });\r\n })\r\n trElem = tableView.find('tr[lay-data-index=\"' + dataIndex + '\"]');\r\n }\r\n checkNode.call(that, trElem, checked, callbackFlag);\r\n }\r\n\r\n treeTable.checkAllNodes = function (id, checked) {\r\n var that = getThisTable(id);\r\n if(!that) return;\r\n\r\n var options = that.getOptions();\r\n var tableView = options.elem.next();\r\n\r\n checkNode.call(that, tableView.find('tr[data-index=\"NONE\"]'), !!checked)\r\n }\r\n\r\n /**\r\n * 获得数据\r\n * @param {String} id 表格id\r\n * @param {Boolean} [isSimpleData] 是否返回平铺结构的数据\r\n * @return {Array} 表格数据\r\n * */\r\n treeTable.getData = function (id, isSimpleData) {\r\n var that = getThisTable(id);\r\n if (!that) return;\r\n\r\n var tableData = [];\r\n layui.each($.extend(true, [], table.cache[id] || []), function (index, item) {\r\n // 遍历排除掉临时的数据\r\n tableData.push(item);\r\n })\r\n return isSimpleData ? that.treeToFlat(tableData) : tableData;\r\n }\r\n\r\n /**\r\n * 重新加载子节点\r\n * @param {String} id 表格id\r\n * @param {String} dataIndex 父节点的dataIndex\r\n * */\r\n treeTable.reloadAsyncNode = function (id, dataIndex) {\r\n var that = getThisTable(id);\r\n if (!that) {\r\n return;\r\n }\r\n\r\n var options = that.getOptions();\r\n var treeOptions = options.tree;\r\n if (!treeOptions.async || !treeOptions.async.enable) {\r\n return;\r\n }\r\n var dataP = that.getNodeDataByIndex(dataIndex);\r\n if (!dataP) {\r\n return;\r\n }\r\n dataP[LAY_HAS_EXPANDED] = false;\r\n dataP[LAY_EXPAND] = false;\r\n dataP[LAY_ASYNC_STATUS] = false;\r\n layui.each(that.treeToFlat(dataP[treeOptions.customName.children]).reverse(), function (i1, item1) {\r\n treeTable.removeNode(id, item1[LAY_DATA_INDEX]);\r\n })\r\n // 重新展开\r\n treeTable.expandNode(id, {\r\n index: dataIndex,\r\n expandFlag: true,\r\n callbackFlag: true,\r\n })\r\n }\r\n\r\n /**\r\n * 通过数据id获取节点对象\r\n * */\r\n treeTable.getNodeById = function (id, dataId) {\r\n var that = getThisTable(id);\r\n if (!that) return;\r\n\r\n return that.getNodeById(dataId);\r\n }\r\n\r\n /**\r\n * 根据自定义规则搜索节点数据\r\n * @param {String} id 树表id\r\n * @param {Function} filter 自定义过滤器函数\r\n * @param {Object} [opts]\r\n * @param {Boolean} [opts.isSingle] 是否只找到第一个\r\n * @param {Object} [opts.parentNode] 在指定在某个父节点下的子节点中搜索\r\n * @return {Object} 节点对象\r\n * */\r\n treeTable.getNodesByFilter = function (id, filter, opts) {\r\n var that = getThisTable(id);\r\n if (!that) return;\r\n var options = that.getOptions();\r\n\r\n opts = opts || {};\r\n var isSingle = opts.isSingle;\r\n var parentNode = opts.parentNode;\r\n var dataP = parentNode && parentNode.data;\r\n // dataP = dataP || table.cache[id];\r\n var nodes = that.treeToFlat(dataP ? (dataP[options.tree.customName.children] || []) : table.cache[id]).filter(filter);\r\n var nodesResult = [];\r\n layui.each(nodes, function (i1, item1) {\r\n nodesResult.push(that.getNodeByIndex(item1[LAY_DATA_INDEX]));\r\n if (isSingle) {\r\n return true;\r\n }\r\n });\r\n\r\n return nodesResult;\r\n }\r\n\r\n\r\n // 记录所有实例\r\n thisTreeTable.that = {}; // 记录所有实例对象\r\n // thisTreeTable.config = {}; // 记录所有实例配置项\r\n\r\n // 重载\r\n treeTable.reload = function (id, options, deep, type) {\r\n // deep = deep !== false; // 默认采用深拷贝\r\n var that = getThisTable(id);\r\n if (!that) return;\r\n that.reload(options, deep, type);\r\n return thisTreeTable.call(that);\r\n };\r\n\r\n // 核心入口\r\n treeTable.render = function (options) {\r\n var inst = new Class(options);\r\n return thisTreeTable.call(inst);\r\n };\r\n\r\n exports(MOD_NAME, treeTable);\r\n});\r\n","/**\r\n * tree 树组件\r\n */\r\n\r\nlayui.define(['form','util'], function(exports){\r\n \"use strict\";\r\n \r\n var $ = layui.$;\r\n var form = layui.form;\r\n var layer = layui.layer;\r\n var util = layui.util;\r\n \r\n // 模块名\r\n var MOD_NAME = 'tree';\r\n\r\n // 外部接口\r\n var tree = {\r\n config: {\r\n customName: { // 自定义 data 字段名\r\n id: 'id',\r\n title: 'title',\r\n children: 'children'\r\n }\r\n },\r\n index: layui[MOD_NAME] ? (layui[MOD_NAME].index + 10000) : 0,\r\n\r\n // 设置全局项\r\n set: function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n },\r\n \r\n // 事件\r\n on: function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n }\r\n };\r\n\r\n // 操作当前实例\r\n var thisModule = function(){\r\n var that = this;\r\n var options = that.config;\r\n var id = options.id || that.index;\r\n \r\n thisModule.that[id] = that; // 记录当前实例对象\r\n thisModule.config[id] = options; // 记录当前实例配置项\r\n \r\n return {\r\n config: options,\r\n // 重置实例\r\n reload: function(options){\r\n that.reload.call(that, options);\r\n },\r\n getChecked: function(){\r\n return that.getChecked.call(that);\r\n },\r\n setChecked: function(id){// 设置值\r\n return that.setChecked.call(that, id);\r\n }\r\n }\r\n };\r\n \r\n // 获取当前实例配置项\r\n var getThisModuleConfig = function(id){\r\n var config = thisModule.config[id];\r\n if(!config) hint.error('The ID option was not found in the '+ MOD_NAME +' instance');\r\n return config || null;\r\n }\r\n\r\n // 字符常量\r\n var SHOW = 'layui-show';\r\n var HIDE = 'layui-hide';\r\n var NONE = 'layui-none';\r\n var DISABLED = 'layui-disabled';\r\n \r\n var ELEM_VIEW = 'layui-tree';\r\n var ELEM_SET = 'layui-tree-set';\r\n var ICON_CLICK = 'layui-tree-iconClick';\r\n var ICON_ADD = 'layui-icon-addition';\r\n var ICON_SUB = 'layui-icon-subtraction';\r\n var ELEM_ENTRY = 'layui-tree-entry';\r\n var ELEM_MAIN = 'layui-tree-main';\r\n var ELEM_TEXT = 'layui-tree-txt';\r\n var ELEM_PACK = 'layui-tree-pack';\r\n var ELEM_SPREAD = 'layui-tree-spread';\r\n var ELEM_LINE_SHORT = 'layui-tree-setLineShort';\r\n var ELEM_SHOW = 'layui-tree-showLine';\r\n var ELEM_EXTEND = 'layui-tree-lineExtend';\r\n \r\n // 构造器\r\n var Class = function(options){\r\n var that = this;\r\n that.index = ++tree.index;\r\n that.config = $.extend({}, that.config, tree.config, options);\r\n that.render();\r\n };\r\n\r\n // 默认配置\r\n Class.prototype.config = {\r\n data: [], // 数据\r\n \r\n showCheckbox: false, // 是否显示复选框\r\n showLine: true, // 是否开启连接线\r\n accordion: false, // 是否开启手风琴模式\r\n onlyIconControl: false, // 是否仅允许节点左侧图标控制展开收缩\r\n isJump: false, // 是否允许点击节点时弹出新窗口跳转\r\n edit: false, // 是否开启节点的操作图标\r\n \r\n text: {\r\n defaultNodeName: '未命名', // 节点默认名称\r\n none: '无数据' // 数据为空时的文本提示\r\n }\r\n };\r\n \r\n // 重载实例\r\n Class.prototype.reload = function(options){\r\n var that = this;\r\n \r\n layui.each(options, function(key, item){\r\n if(layui.type(item) === 'array') delete that.config[key];\r\n });\r\n \r\n that.config = $.extend(true, {}, that.config, options);\r\n that.render();\r\n };\r\n\r\n // 主体渲染\r\n Class.prototype.render = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 初始化自定义字段名\r\n options.customName = $.extend({}, tree.config.customName, options.customName);\r\n \r\n that.checkids = [];\r\n\r\n var temp = $('
                          ');\r\n that.tree(temp);\r\n\r\n var othis = options.elem = $(options.elem);\r\n if(!othis[0]) return;\r\n\r\n // 索引\r\n that.key = options.id || that.index;\r\n \r\n // 插入组件结构\r\n that.elem = temp;\r\n that.elemNone = $('
                          '+ options.text.none +'
                          ');\r\n othis.html(that.elem);\r\n\r\n if(that.elem.find('.layui-tree-set').length == 0){\r\n return that.elem.append(that.elemNone);\r\n };\r\n \r\n // 复选框渲染\r\n if(options.showCheckbox){\r\n that.renderForm('checkbox');\r\n };\r\n\r\n that.elem.find('.layui-tree-set').each(function(){\r\n var othis = $(this);\r\n // 最外层\r\n if(!othis.parent('.layui-tree-pack')[0]){\r\n othis.addClass('layui-tree-setHide');\r\n };\r\n\r\n // 没有下一个节点 上一层父级有延伸线\r\n if(!othis.next()[0] && othis.parents('.layui-tree-pack').eq(1).hasClass('layui-tree-lineExtend')){\r\n othis.addClass(ELEM_LINE_SHORT);\r\n };\r\n \r\n // 没有下一个节点 外层最后一个\r\n if(!othis.next()[0] && !othis.parents('.layui-tree-set').eq(0).next()[0]){\r\n othis.addClass(ELEM_LINE_SHORT);\r\n };\r\n });\r\n\r\n that.events();\r\n };\r\n \r\n // 渲染表单\r\n Class.prototype.renderForm = function(type){\r\n form.render(type, 'LAY-tree-'+ this.index);\r\n };\r\n\r\n // 节点解析\r\n Class.prototype.tree = function(elem, children){\r\n var that = this;\r\n var options = that.config;\r\n var customName = options.customName;\r\n var data = children || options.data;\r\n\r\n // 遍历数据\r\n layui.each(data, function(index, item){\r\n var hasChild = item[customName.children] && item[customName.children].length > 0;\r\n var packDiv = $('
                          ');\r\n var entryDiv = $(['
                          '\r\n ,'
                          '\r\n ,'
                          '\r\n // 箭头\r\n ,function(){\r\n if(options.showLine){\r\n if(hasChild){\r\n return '';\r\n }else{\r\n return '';\r\n };\r\n }else{\r\n return '';\r\n };\r\n }()\r\n \r\n // 复选框\r\n ,function(){\r\n return options.showCheckbox ? '' : '';\r\n }()\r\n \r\n // 节点\r\n ,function(){\r\n if(options.isJump && item.href){\r\n return ''+ (item[customName.title] || item.label || options.text.defaultNodeName) +'';\r\n }else{\r\n return ''+ (item[customName.title] || item.label || options.text.defaultNodeName) +'';\r\n }\r\n }()\r\n ,'
                          '\r\n \r\n // 节点操作图标\r\n ,function(){\r\n if(!options.edit) return '';\r\n \r\n var editIcon = {\r\n add: ''\r\n ,update: ''\r\n ,del: ''\r\n }, arr = ['
                          '];\r\n \r\n if(options.edit === true){\r\n options.edit = ['update', 'del']\r\n }\r\n \r\n if(typeof options.edit === 'object'){\r\n layui.each(options.edit, function(i, val){\r\n arr.push(editIcon[val] || '')\r\n });\r\n return arr.join('') + '
                          ';\r\n }\r\n }()\r\n ,'
                          '].join(''));\r\n\r\n // 如果有子节点,则递归继续生成树\r\n if(hasChild){\r\n entryDiv.append(packDiv);\r\n that.tree(packDiv, item[customName.children]);\r\n };\r\n\r\n elem.append(entryDiv);\r\n \r\n // 若有前置节点,前置节点加连接线\r\n if(entryDiv.prev('.'+ELEM_SET)[0]){\r\n entryDiv.prev().children('.layui-tree-pack').addClass('layui-tree-showLine');\r\n };\r\n \r\n // 若无子节点,则父节点加延伸线\r\n if(!hasChild){\r\n entryDiv.parent('.layui-tree-pack').addClass('layui-tree-lineExtend');\r\n };\r\n\r\n // 展开节点操作\r\n that.spread(entryDiv, item);\r\n \r\n // 选择框\r\n if(options.showCheckbox){\r\n item.checked && that.checkids.push(item[customName.id]);\r\n that.checkClick(entryDiv, item);\r\n }\r\n \r\n // 操作节点\r\n options.edit && that.operate(entryDiv, item);\r\n \r\n });\r\n };\r\n\r\n // 展开节点\r\n Class.prototype.spread = function(elem, item){\r\n var that = this;\r\n var options = that.config;\r\n var entry = elem.children('.'+ELEM_ENTRY);\r\n var elemMain = entry.children('.'+ ELEM_MAIN);\r\n var elemCheckbox = elemMain.find('input[same=\"layuiTreeCheck\"]');\r\n var elemIcon = entry.find('.'+ ICON_CLICK);\r\n var elemText = entry.find('.'+ ELEM_TEXT);\r\n var touchOpen = options.onlyIconControl ? elemIcon : elemMain; // 判断展开通过节点还是箭头图标\r\n var state = '';\r\n \r\n // 展开收缩\r\n touchOpen.on('click', function(e){\r\n var packCont = elem.children('.'+ELEM_PACK)\r\n ,iconClick = touchOpen.children('.layui-icon')[0] ? touchOpen.children('.layui-icon') : touchOpen.find('.layui-tree-icon').children('.layui-icon');\r\n\r\n // 若没有子节点\r\n if(!packCont[0]){\r\n state = 'normal';\r\n }else{\r\n if(elem.hasClass(ELEM_SPREAD)){\r\n elem.removeClass(ELEM_SPREAD);\r\n packCont.slideUp(200);\r\n iconClick.removeClass(ICON_SUB).addClass(ICON_ADD); \r\n that.updateFieldValue(item, 'spread', false);\r\n }else{\r\n elem.addClass(ELEM_SPREAD);\r\n packCont.slideDown(200);\r\n iconClick.addClass(ICON_SUB).removeClass(ICON_ADD);\r\n that.updateFieldValue(item, 'spread', true);\r\n\r\n // 是否手风琴\r\n if(options.accordion){\r\n var sibls = elem.siblings('.'+ELEM_SET);\r\n sibls.removeClass(ELEM_SPREAD);\r\n sibls.children('.'+ELEM_PACK).slideUp(200);\r\n sibls.find('.layui-tree-icon').children('.layui-icon').removeClass(ICON_SUB).addClass(ICON_ADD);\r\n };\r\n };\r\n };\r\n });\r\n \r\n // 点击回调\r\n elemText.on('click', function(){\r\n var othis = $(this);\r\n \r\n // 判断是否禁用状态\r\n if(othis.hasClass(DISABLED)) return;\r\n \r\n // 判断展开收缩状态\r\n if(elem.hasClass(ELEM_SPREAD)){\r\n state = options.onlyIconControl ? 'open' : 'close';\r\n } else {\r\n state = options.onlyIconControl ? 'close' : 'open';\r\n }\r\n\r\n // 获取选中状态\r\n if(elemCheckbox[0]){\r\n that.updateFieldValue(item, 'checked', elemCheckbox.prop('checked'));\r\n }\r\n \r\n // 点击产生的回调\r\n options.click && options.click({\r\n elem: elem,\r\n state: state,\r\n data: item\r\n });\r\n });\r\n };\r\n\r\n // 更新数据源 checked,spread 字段值\r\n Class.prototype.updateFieldValue = function(obj, field, value){\r\n if(field in obj) obj[field] = value;\r\n };\r\n \r\n // 计算复选框选中状态\r\n Class.prototype.setCheckbox = function(elem, item, elemCheckbox){\r\n var that = this;\r\n var options = that.config;\r\n var customName = options.customName;\r\n var checked = elemCheckbox.prop('checked');\r\n \r\n if(elemCheckbox.prop('disabled')) return;\r\n\r\n // 同步子节点选中状态\r\n if(typeof item[customName.children] === 'object' || elem.find('.'+ELEM_PACK)[0]){\r\n var elemCheckboxs = elem.find('.'+ ELEM_PACK).find('input[same=\"layuiTreeCheck\"]');\r\n elemCheckboxs.each(function(index){\r\n if(this.disabled) return; // 不可点击则跳过\r\n var children = item[customName.children][index];\r\n if(children) that.updateFieldValue(children, 'checked', checked);\r\n that.updateFieldValue(this, 'checked', checked);\r\n });\r\n };\r\n\r\n // 同步父节点选中状态\r\n var setParentsChecked = function(thisNodeElem){\r\n // 若无父节点,则终止递归\r\n if(!thisNodeElem.parents('.'+ ELEM_SET)[0]) return;\r\n\r\n var state;\r\n var parentPack = thisNodeElem.parent('.'+ ELEM_PACK);\r\n var parentNodeElem = parentPack.parent();\r\n var parentCheckbox = parentPack.prev().find('input[same=\"layuiTreeCheck\"]');\r\n\r\n // 如果子节点有任意一条选中,则父节点为选中状态\r\n if(checked){\r\n parentCheckbox.prop('checked', checked);\r\n } else { // 如果当前节点取消选中,则根据计算“兄弟和子孙”节点选中状态,来同步父节点选中状态\r\n parentPack.find('input[same=\"layuiTreeCheck\"]').each(function(){\r\n if(this.checked){\r\n state = true;\r\n }\r\n });\r\n \r\n // 如果兄弟子孙节点全部未选中,则父节点也应为非选中状态\r\n state || parentCheckbox.prop('checked', false);\r\n }\r\n \r\n // 向父节点递归\r\n setParentsChecked(parentNodeElem);\r\n };\r\n \r\n setParentsChecked(elem);\r\n\r\n that.renderForm('checkbox');\r\n };\r\n \r\n // 复选框选择\r\n Class.prototype.checkClick = function(elem, item){\r\n var that = this;\r\n var options = that.config;\r\n var entry = elem.children('.'+ ELEM_ENTRY);\r\n var elemMain = entry.children('.'+ ELEM_MAIN);\r\n \r\n \r\n \r\n // 点击复选框\r\n elemMain.on('click', 'input[same=\"layuiTreeCheck\"]+', function(e){\r\n layui.stope(e); // 阻止点击节点事件\r\n\r\n var elemCheckbox = $(this).prev();\r\n var checked = elemCheckbox.prop('checked');\r\n \r\n if(elemCheckbox.prop('disabled')) return;\r\n \r\n that.setCheckbox(elem, item, elemCheckbox);\r\n that.updateFieldValue(item, 'checked', checked);\r\n\r\n // 复选框点击产生的回调\r\n options.oncheck && options.oncheck({\r\n elem: elem,\r\n checked: checked,\r\n data: item\r\n });\r\n });\r\n };\r\n\r\n // 节点操作\r\n Class.prototype.operate = function(elem, item){\r\n var that = this;\r\n var options = that.config;\r\n var customName = options.customName;\r\n var entry = elem.children('.'+ ELEM_ENTRY);\r\n var elemMain = entry.children('.'+ ELEM_MAIN);\r\n\r\n entry.children('.layui-tree-btnGroup').on('click', '.layui-icon', function(e){\r\n layui.stope(e); // 阻止节点操作\r\n\r\n var type = $(this).data(\"type\");\r\n var packCont = elem.children('.'+ELEM_PACK);\r\n var returnObj = {\r\n data: item,\r\n type: type,\r\n elem:elem\r\n };\r\n // 增加\r\n if(type == 'add'){\r\n // 若节点本身无子节点\r\n if(!packCont[0]){\r\n // 若开启连接线,更改图标样式\r\n if(options.showLine){\r\n elemMain.find('.'+ICON_CLICK).addClass('layui-tree-icon');\r\n elemMain.find('.'+ICON_CLICK).children('.layui-icon').addClass(ICON_ADD).removeClass('layui-icon-file');\r\n // 若未开启连接线,显示箭头\r\n } else {\r\n elemMain.find('.layui-tree-iconArrow').removeClass(HIDE);\r\n };\r\n // 节点添加子节点容器\r\n elem.append('
                          ');\r\n };\r\n\r\n // 新增节点\r\n var key = options.operate && options.operate(returnObj);\r\n var obj = {};\r\n\r\n obj[customName.title] = options.text.defaultNodeName;\r\n obj[customName.id] = key;\r\n that.tree(elem.children('.'+ELEM_PACK), [obj]);\r\n \r\n // 放在新增后面,因为要对元素进行操作\r\n if(options.showLine){\r\n // 节点本身无子节点\r\n if(!packCont[0]){\r\n // 遍历兄弟节点,判断兄弟节点是否有子节点\r\n var siblings = elem.siblings('.'+ELEM_SET)\r\n var num = 1;\r\n var parentPack = elem.parent('.'+ELEM_PACK);\r\n\r\n layui.each(siblings, function(index, i){\r\n if(!$(i).children('.'+ELEM_PACK)[0]){\r\n num = 0;\r\n };\r\n });\r\n\r\n // 若兄弟节点都有子节点\r\n if(num == 1){\r\n // 兄弟节点添加连接线\r\n siblings.children('.'+ELEM_PACK).addClass(ELEM_SHOW);\r\n siblings.children('.'+ELEM_PACK).children('.'+ELEM_SET).removeClass(ELEM_LINE_SHORT);\r\n elem.children('.'+ELEM_PACK).addClass(ELEM_SHOW);\r\n // 父级移除延伸线\r\n parentPack.removeClass(ELEM_EXTEND);\r\n // 同层节点最后一个更改线的状态\r\n parentPack.children('.'+ELEM_SET).last().children('.'+ELEM_PACK).children('.'+ELEM_SET).last().addClass(ELEM_LINE_SHORT);\r\n } else {\r\n elem.children('.'+ELEM_PACK).children('.'+ELEM_SET).addClass(ELEM_LINE_SHORT);\r\n };\r\n } else {\r\n // 添加延伸线\r\n if(!packCont.hasClass(ELEM_EXTEND)){\r\n packCont.addClass(ELEM_EXTEND);\r\n };\r\n // 子节点添加延伸线\r\n elem.find('.'+ELEM_PACK).each(function(){\r\n $(this).children('.'+ELEM_SET).last().addClass(ELEM_LINE_SHORT);\r\n });\r\n // 如果前一个节点有延伸线\r\n if(packCont.children('.'+ELEM_SET).last().prev().hasClass(ELEM_LINE_SHORT)){\r\n packCont.children('.'+ELEM_SET).last().prev().removeClass(ELEM_LINE_SHORT);\r\n }else{\r\n // 若之前的没有,说明处于连接状态\r\n packCont.children('.'+ELEM_SET).last().removeClass(ELEM_LINE_SHORT);\r\n };\r\n // 若是最外层,要始终保持相连的状态\r\n if(!elem.parent('.'+ELEM_PACK)[0] && elem.next()[0]){\r\n packCont.children('.'+ELEM_SET).last().removeClass(ELEM_LINE_SHORT);\r\n };\r\n };\r\n };\r\n if(!options.showCheckbox) return;\r\n // 若开启复选框,同步新增节点状态\r\n if(elemMain.find('input[same=\"layuiTreeCheck\"]')[0].checked){\r\n var packLast = elem.children('.'+ELEM_PACK).children('.'+ELEM_SET).last();\r\n packLast.find('input[same=\"layuiTreeCheck\"]')[0].checked = true;\r\n };\r\n that.renderForm('checkbox');\r\n \r\n // 修改\r\n } else if(type == 'update') {\r\n var text = elemMain.children('.'+ ELEM_TEXT).html();\r\n elemMain.children('.'+ ELEM_TEXT).html('');\r\n // 添加输入框,覆盖在文字上方\r\n elemMain.append('');\r\n // 获取焦点\r\n elemMain.children('.layui-tree-editInput').val(util.unescape(text)).focus();\r\n // 嵌入文字移除输入框\r\n var getVal = function(input){\r\n var textNew = util.escape(input.val().trim());\r\n textNew = textNew ? textNew : options.text.defaultNodeName;\r\n input.remove();\r\n elemMain.children('.'+ ELEM_TEXT).html(textNew);\r\n \r\n // 同步数据\r\n returnObj.data[customName.title] = textNew;\r\n \r\n // 节点修改的回调\r\n options.operate && options.operate(returnObj);\r\n };\r\n // 失去焦点\r\n elemMain.children('.layui-tree-editInput').blur(function(){\r\n getVal($(this));\r\n });\r\n // 回车\r\n elemMain.children('.layui-tree-editInput').on('keydown', function(e){\r\n if(e.keyCode === 13){\r\n e.preventDefault();\r\n getVal($(this));\r\n };\r\n });\r\n\r\n // 删除\r\n } else {\r\n layer.confirm('确认删除该节点 \"'+ (item[customName.title] || '') +'\" 吗?', function(index){\r\n options.operate && options.operate(returnObj); // 节点删除的回调\r\n returnObj.status = 'remove'; // 标注节点删除\r\n \r\n layer.close(index);\r\n \r\n // 若删除最后一个,显示空数据提示\r\n if(!elem.prev('.'+ELEM_SET)[0] && !elem.next('.'+ELEM_SET)[0] && !elem.parent('.'+ELEM_PACK)[0]){\r\n elem.remove();\r\n that.elem.append(that.elemNone);\r\n return;\r\n };\r\n // 若有兄弟节点\r\n if(elem.siblings('.'+ELEM_SET).children('.'+ELEM_ENTRY)[0]){\r\n // 若开启复选框\r\n if(options.showCheckbox){\r\n // 若开启复选框,进行下步操作\r\n var elemDel = function(elem){\r\n // 若无父结点,则不执行\r\n if(!elem.parents('.'+ELEM_SET)[0]) return;\r\n var siblingTree = elem.siblings('.'+ELEM_SET).children('.'+ELEM_ENTRY);\r\n var parentTree = elem.parent('.'+ELEM_PACK).prev();\r\n var checkState = parentTree.find('input[same=\"layuiTreeCheck\"]')[0];\r\n var state = 1;\r\n var num = 0;\r\n\r\n // 若父节点未勾选\r\n if(checkState.checked == false){\r\n // 遍历兄弟节点\r\n siblingTree.each(function(i, item1){\r\n var input = $(item1).find('input[same=\"layuiTreeCheck\"]')[0]\r\n if(input.checked == false && !input.disabled){\r\n state = 0;\r\n };\r\n // 判断是否全为不可勾选框\r\n if(!input.disabled){\r\n num = 1;\r\n };\r\n });\r\n // 若有可勾选选择框并且已勾选\r\n if(state == 1 && num == 1){\r\n // 勾选父节点\r\n checkState.checked = true;\r\n that.renderForm('checkbox');\r\n // 向上遍历祖先节点\r\n elemDel(parentTree.parent('.'+ELEM_SET));\r\n };\r\n };\r\n };\r\n elemDel(elem);\r\n };\r\n // 若开启连接线\r\n if(options.showLine){\r\n // 遍历兄弟节点,判断兄弟节点是否有子节点\r\n var siblings = elem.siblings('.'+ELEM_SET);\r\n var num = 1;\r\n var parentPack = elem.parent('.'+ELEM_PACK);\r\n\r\n layui.each(siblings, function(index, i){\r\n if(!$(i).children('.'+ELEM_PACK)[0]){\r\n num = 0;\r\n };\r\n });\r\n // 若兄弟节点都有子节点\r\n if(num == 1){\r\n // 若节点本身无子节点\r\n if(!packCont[0]){\r\n // 父级去除延伸线,因为此时子节点里没有空节点\r\n parentPack.removeClass(ELEM_EXTEND);\r\n siblings.children('.'+ELEM_PACK).addClass(ELEM_SHOW);\r\n siblings.children('.'+ELEM_PACK).children('.'+ELEM_SET).removeClass(ELEM_LINE_SHORT);\r\n };\r\n // 若为最后一个节点\r\n if(!elem.next()[0]){\r\n elem.prev().children('.'+ELEM_PACK).children('.'+ELEM_SET).last().addClass(ELEM_LINE_SHORT);\r\n }else{\r\n parentPack.children('.'+ELEM_SET).last().children('.'+ELEM_PACK).children('.'+ELEM_SET).last().addClass(ELEM_LINE_SHORT);\r\n };\r\n // 若为最外层最后一个节点,去除前一个结点的连接线\r\n if(!elem.next()[0] && !elem.parents('.'+ELEM_SET)[1] && !elem.parents('.'+ELEM_SET).eq(0).next()[0]){\r\n elem.prev('.'+ELEM_SET).addClass(ELEM_LINE_SHORT);\r\n };\r\n }else{\r\n // 若为最后一个节点且有延伸线\r\n if(!elem.next()[0] && elem.hasClass(ELEM_LINE_SHORT)){\r\n elem.prev().addClass(ELEM_LINE_SHORT);\r\n };\r\n };\r\n };\r\n \r\n } else {\r\n // 若无兄弟节点\r\n var prevDiv = elem.parent('.'+ELEM_PACK).prev();\r\n // 若开启了连接线\r\n if(options.showLine){\r\n prevDiv.find('.'+ICON_CLICK).removeClass('layui-tree-icon');\r\n prevDiv.find('.'+ICON_CLICK).children('.layui-icon').removeClass(ICON_SUB).addClass('layui-icon-file');\r\n // 父节点所在层添加延伸线\r\n var pare = prevDiv.parents('.'+ELEM_PACK).eq(0);\r\n pare.addClass(ELEM_EXTEND);\r\n\r\n // 兄弟节点最后子节点添加延伸线\r\n pare.children('.'+ELEM_SET).each(function(){\r\n $(this).children('.'+ELEM_PACK).children('.'+ELEM_SET).last().addClass(ELEM_LINE_SHORT);\r\n });\r\n }else{\r\n // 父节点隐藏箭头\r\n prevDiv.find('.layui-tree-iconArrow').addClass(HIDE);\r\n };\r\n // 移除展开属性\r\n elem.parents('.'+ELEM_SET).eq(0).removeClass(ELEM_SPREAD);\r\n // 移除节点容器\r\n elem.parent('.'+ELEM_PACK).remove();\r\n };\r\n\r\n elem.remove();\r\n });\r\n \r\n };\r\n });\r\n };\r\n\r\n // 部分事件\r\n Class.prototype.events = function(){\r\n var that = this;\r\n var options = that.config;\r\n var checkWarp = that.elem.find('.layui-tree-checkedFirst');\r\n \r\n // 初始选中\r\n that.setChecked(that.checkids);\r\n \r\n // 搜索\r\n that.elem.find('.layui-tree-search').on('keyup', function(){\r\n var input = $(this);\r\n var val = input.val();\r\n var pack = input.nextAll();\r\n var arr = [];\r\n\r\n // 遍历所有的值\r\n pack.find('.'+ ELEM_TEXT).each(function(){\r\n var entry = $(this).parents('.'+ELEM_ENTRY);\r\n // 若值匹配,加一个类以作标识\r\n if($(this).html().indexOf(val) != -1){\r\n arr.push($(this).parent());\r\n \r\n var select = function(div){\r\n div.addClass('layui-tree-searchShow');\r\n // 向上父节点渲染\r\n if(div.parent('.'+ELEM_PACK)[0]){\r\n select(div.parent('.'+ELEM_PACK).parent('.'+ELEM_SET));\r\n };\r\n };\r\n select(entry.parent('.'+ELEM_SET));\r\n };\r\n });\r\n\r\n // 根据标志剔除\r\n pack.find('.'+ELEM_ENTRY).each(function(){\r\n var parent = $(this).parent('.'+ELEM_SET);\r\n if(!parent.hasClass('layui-tree-searchShow')){\r\n parent.addClass(HIDE);\r\n };\r\n });\r\n if(pack.find('.layui-tree-searchShow').length == 0){\r\n that.elem.append(that.elemNone);\r\n };\r\n\r\n // 节点过滤的回调\r\n options.onsearch && options.onsearch({\r\n elem: arr\r\n });\r\n });\r\n\r\n // 还原搜索初始状态\r\n that.elem.find('.layui-tree-search').on('keydown', function(){\r\n $(this).nextAll().find('.'+ELEM_ENTRY).each(function(){\r\n var parent = $(this).parent('.'+ELEM_SET);\r\n parent.removeClass('layui-tree-searchShow '+ HIDE);\r\n });\r\n if($('.layui-tree-emptyText')[0]) $('.layui-tree-emptyText').remove();\r\n });\r\n };\r\n\r\n // 得到选中节点\r\n Class.prototype.getChecked = function(){\r\n var that = this;\r\n var options = that.config;\r\n var customName = options.customName;\r\n var checkId = [];\r\n var checkData = [];\r\n \r\n // 遍历节点找到选中索引\r\n that.elem.find('.layui-form-checked').each(function(){\r\n checkId.push($(this).prev()[0].value);\r\n });\r\n \r\n // 遍历节点\r\n var eachNodes = function(data, checkNode){\r\n layui.each(data, function(index, item){\r\n layui.each(checkId, function(index2, item2){\r\n if(item[customName.id] == item2){\r\n that.updateFieldValue(item, 'checked', true);\r\n\r\n var cloneItem = $.extend({}, item);\r\n delete cloneItem[customName.children];\r\n\r\n checkNode.push(cloneItem);\r\n \r\n if(item[customName.children]){\r\n cloneItem[customName.children] = [];\r\n eachNodes(item[customName.children], cloneItem[customName.children]);\r\n }\r\n return true\r\n }\r\n });\r\n });\r\n };\r\n\r\n eachNodes($.extend({}, options.data), checkData);\r\n \r\n return checkData;\r\n };\r\n\r\n // 设置选中节点\r\n Class.prototype.setChecked = function(checkedId){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 初始选中\r\n that.elem.find('.'+ELEM_SET).each(function(i, item){\r\n var thisId = $(this).data('id');\r\n var input = $(item).children('.'+ELEM_ENTRY).find('input[same=\"layuiTreeCheck\"]');\r\n var reInput = input.next();\r\n \r\n // 若返回数字\r\n if(typeof checkedId === 'number'){\r\n if(thisId.toString() == checkedId.toString()){\r\n if(!input[0].checked){\r\n reInput.click();\r\n };\r\n return false;\r\n };\r\n } \r\n // 若返回数组\r\n else if(typeof checkedId === 'object'){\r\n layui.each(checkedId, function(index, value){\r\n if(value.toString() == thisId.toString() && !input[0].checked){\r\n reInput.click();\r\n return true;\r\n }\r\n });\r\n };\r\n });\r\n };\r\n\r\n // 记录所有实例\r\n thisModule.that = {}; // 记录所有实例对象\r\n thisModule.config = {}; // 记录所有实例配置项\r\n \r\n // 重载实例\r\n tree.reload = function(id, options){\r\n var that = thisModule.that[id];\r\n that.reload(options);\r\n \r\n return thisModule.call(that);\r\n };\r\n \r\n // 获得选中的节点数据\r\n tree.getChecked = function(id){\r\n var that = thisModule.that[id];\r\n return that.getChecked();\r\n };\r\n \r\n // 设置选中节点\r\n tree.setChecked = function(id, checkedId){\r\n var that = thisModule.that[id];\r\n return that.setChecked(checkedId);\r\n };\r\n \r\n // 核心入口\r\n tree.render = function(options){\r\n var inst = new Class(options);\r\n return thisModule.call(inst);\r\n };\r\n\r\n exports(MOD_NAME, tree);\r\n})\r\n","/**\r\n * transfer 穿梭框组件\r\n */\r\n\r\nlayui.define(['laytpl', 'form'], function(exports){\r\n \"use strict\";\r\n \r\n var $ = layui.$;\r\n var laytpl = layui.laytpl;\r\n var form = layui.form;\r\n \r\n // 模块名\r\n var MOD_NAME = 'transfer';\r\n\r\n // 外部接口\r\n var transfer = {\r\n config: {},\r\n index: layui[MOD_NAME] ? (layui[MOD_NAME].index + 10000) : 0,\r\n\r\n // 设置全局项\r\n set: function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n },\r\n \r\n // 事件\r\n on: function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n }\r\n };\r\n\r\n // 操作当前实例\r\n var thisModule = function(){\r\n var that = this;\r\n var options = that.config;\r\n var id = options.id || that.index;\r\n \r\n thisModule.that[id] = that; // 记录当前实例对象\r\n thisModule.config[id] = options; // 记录当前实例配置项\r\n \r\n return {\r\n config: options,\r\n // 重置实例\r\n reload: function(options){\r\n that.reload.call(that, options);\r\n },\r\n // 获取右侧数据\r\n getData: function(){\r\n return that.getData.call(that);\r\n }\r\n }\r\n };\r\n \r\n // 获取当前实例配置项\r\n var getThisModuleConfig = function(id){\r\n var config = thisModule.config[id];\r\n if(!config) hint.error('The ID option was not found in the '+ MOD_NAME +' instance');\r\n return config || null;\r\n };\r\n\r\n // 字符常量\r\n var ELEM = 'layui-transfer';\r\n var HIDE = 'layui-hide'; \r\n var DISABLED = 'layui-btn-disabled';\r\n var NONE = 'layui-none';\r\n var ELEM_BOX = 'layui-transfer-box';\r\n var ELEM_HEADER = 'layui-transfer-header';\r\n var ELEM_SEARCH = 'layui-transfer-search';\r\n var ELEM_ACTIVE = 'layui-transfer-active';\r\n var ELEM_DATA = 'layui-transfer-data';\r\n \r\n // 穿梭框模板\r\n var TPL_BOX = function(obj){\r\n obj = obj || {};\r\n return ['
                          ',\r\n '
                          ',\r\n '',\r\n '
                          ',\r\n '{{# if(d.data.showSearch){ }}',\r\n '
                          ',\r\n '',\r\n '',\r\n '
                          ',\r\n '{{# } }}',\r\n '
                            ',\r\n '
                            '].join('');\r\n };\r\n \r\n // 主模板\r\n var TPL_MAIN = ['
                            ',\r\n TPL_BOX({\r\n index: 0,\r\n checkAllName: 'layTransferLeftCheckAll'\r\n }),\r\n '
                            ',\r\n '',\r\n '',\r\n '
                            ',\r\n TPL_BOX({\r\n index: 1,\r\n checkAllName: 'layTransferRightCheckAll'\r\n }),\r\n '
                            '].join('');\r\n\r\n // 构造器\r\n var Class = function(options){\r\n var that = this;\r\n that.index = ++transfer.index;\r\n that.config = $.extend({}, that.config, transfer.config, options);\r\n that.render();\r\n };\r\n\r\n // 默认配置\r\n Class.prototype.config = {\r\n title: ['列表一', '列表二'],\r\n width: 200,\r\n height: 360,\r\n data: [], // 数据源\r\n value: [], // 选中的数据\r\n showSearch: false, // 是否开启搜索\r\n id: '', // 唯一索引,默认自增 index\r\n text: {\r\n none: '无数据',\r\n searchNone: '无匹配数据'\r\n }\r\n };\r\n \r\n // 重载实例\r\n Class.prototype.reload = function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n that.render();\r\n };\r\n\r\n // 渲染\r\n Class.prototype.render = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n // 解析模板\r\n var thisElem = that.elem = $(laytpl(TPL_MAIN, {\r\n open: '{{', // 标签符前缀\r\n close: '}}' // 标签符后缀\r\n }).render({\r\n data: options,\r\n index: that.index // 索引\r\n }));\r\n \r\n var othis = options.elem = $(options.elem);\r\n if(!othis[0]) return;\r\n \r\n // 初始化属性\r\n options.data = options.data || [];\r\n options.value = options.value || [];\r\n \r\n // 初始化 id 属性 - 优先取 options > 元素 id > 自增索引\r\n options.id = 'id' in options ? options.id : (\r\n elem.attr('id') || that.index\r\n );\r\n that.key = options.id;\r\n \r\n // 插入组件结构\r\n othis.html(that.elem);\r\n \r\n // 各级容器\r\n that.layBox = that.elem.find('.'+ ELEM_BOX)\r\n that.layHeader = that.elem.find('.'+ ELEM_HEADER)\r\n that.laySearch = that.elem.find('.'+ ELEM_SEARCH)\r\n that.layData = thisElem.find('.'+ ELEM_DATA);\r\n that.layBtn = thisElem.find('.'+ ELEM_ACTIVE + ' .layui-btn');\r\n \r\n // 初始化尺寸\r\n that.layBox.css({\r\n width: options.width,\r\n height: options.height\r\n });\r\n that.layData.css({\r\n height: function(){\r\n var height = options.height - that.layHeader.outerHeight();\r\n if(options.showSearch){\r\n height -= that.laySearch.outerHeight();\r\n }\r\n return height - 2;\r\n }()\r\n });\r\n \r\n that.renderData(); // 渲染数据\r\n that.events(); // 事件\r\n };\r\n \r\n // 渲染数据\r\n Class.prototype.renderData = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n // 左右穿梭框差异数据\r\n var arr = [{\r\n checkName: 'layTransferLeftCheck',\r\n views: []\r\n }, {\r\n checkName: 'layTransferRightCheck',\r\n views: []\r\n }];\r\n \r\n // 解析格式\r\n that.parseData(function(item){ \r\n // 标注为 selected 的为右边的数据\r\n var _index = item.selected ? 1 : 0\r\n var listElem = ['
                          • ',\r\n '',\r\n '
                          • '].join('');\r\n // 按照 options.value 顺序排列右侧数据\r\n if(_index){\r\n layui.each(options.value, function(i, v){\r\n if(v == item.value && item.selected){\r\n arr[_index].views[i] = listElem;\r\n }\r\n });\r\n } else {\r\n arr[_index].views.push(listElem);\r\n }\r\n delete item.selected;\r\n });\r\n \r\n that.layData.eq(0).html(arr[0].views.join(''));\r\n that.layData.eq(1).html(arr[1].views.join(''));\r\n \r\n that.renderCheckBtn();\r\n };\r\n \r\n // 渲染表单\r\n Class.prototype.renderForm = function(type){\r\n form.render(type, 'LAY-transfer-'+ this.index);\r\n };\r\n \r\n // 同步复选框和按钮状态\r\n Class.prototype.renderCheckBtn = function(obj){\r\n var that = this;\r\n var options = that.config;\r\n \r\n obj = obj || {};\r\n \r\n that.layBox.each(function(_index){\r\n var othis = $(this);\r\n var thisDataElem = othis.find('.'+ ELEM_DATA);\r\n var allElemCheckbox = othis.find('.'+ ELEM_HEADER).find('input[type=\"checkbox\"]');\r\n var listElemCheckbox = thisDataElem.find('input[type=\"checkbox\"]');\r\n \r\n // 同步复选框和按钮状态\r\n var nums = 0;\r\n var haveChecked = false;\r\n\r\n listElemCheckbox.each(function(){\r\n var isHide = $(this).data('hide');\r\n if(this.checked || this.disabled || isHide){\r\n nums++;\r\n }\r\n if(this.checked && !isHide){\r\n haveChecked = true;\r\n }\r\n });\r\n \r\n allElemCheckbox.prop('checked', haveChecked && nums === listElemCheckbox.length); // 全选复选框状态\r\n that.layBtn.eq(_index)[haveChecked ? 'removeClass' : 'addClass'](DISABLED); // 对应的按钮状态\r\n \r\n // 无数据视图\r\n if(!obj.stopNone){\r\n var isNone = thisDataElem.children('li:not(.'+ HIDE +')').length\r\n that.noneView(thisDataElem, isNone ? '' : options.text.none);\r\n }\r\n });\r\n \r\n that.renderForm('checkbox');\r\n };\r\n \r\n // 无数据视图\r\n Class.prototype.noneView = function(thisDataElem, text){\r\n var createNoneElem = $('

                            '+ (text || '') +'

                            ');\r\n if(thisDataElem.find('.'+ NONE)[0]){\r\n thisDataElem.find('.'+ NONE).remove();\r\n }\r\n text.replace(/\\s/g, '') && thisDataElem.append(createNoneElem);\r\n };\r\n \r\n // 同步 value 属性值\r\n Class.prototype.setValue = function(){\r\n var that = this;\r\n var options = that.config;\r\n var arr = [];\r\n\r\n that.layBox.eq(1).find('.'+ ELEM_DATA +' input[type=\"checkbox\"]').each(function(){\r\n var isHide = $(this).data('hide');\r\n isHide || arr.push(this.value);\r\n });\r\n options.value = arr;\r\n \r\n return that;\r\n };\r\n\r\n // 解析数据\r\n Class.prototype.parseData = function(callback){\r\n var that = this;\r\n var options = that.config;\r\n var newData = [];\r\n \r\n layui.each(options.data, function(index, item){\r\n // 解析格式\r\n item = (typeof options.parseData === 'function' \r\n ? options.parseData(item) \r\n : item) || item;\r\n \r\n newData.push(item = $.extend({}, item))\r\n \r\n layui.each(options.value, function(index2, item2){\r\n if(item2 == item.value){\r\n item.selected = true;\r\n }\r\n });\r\n callback && callback(item);\r\n });\r\n \r\n options.data = newData;\r\n return that;\r\n };\r\n \r\n // 获得右侧面板数据\r\n Class.prototype.getData = function(value){\r\n var that = this;\r\n var options = that.config;\r\n var selectedData = [];\r\n \r\n that.setValue();\r\n \r\n layui.each(value || options.value, function(index, item){\r\n layui.each(options.data, function(index2, item2){\r\n delete item2.selected;\r\n if(item == item2.value){\r\n selectedData.push(item2);\r\n };\r\n });\r\n });\r\n return selectedData;\r\n };\r\n\r\n // 执行穿梭\r\n Class.prototype.transfer = function (_index, elem) {\r\n var that = this;\r\n var options = that.config;\r\n var thisBoxElem = that.layBox.eq(_index);\r\n var arr = [];\r\n\r\n if (!elem) {\r\n // 通过按钮触发找到选中的进行移动\r\n thisBoxElem.each(function(_index){\r\n var othis = $(this);\r\n var thisDataElem = othis.find('.'+ ELEM_DATA);\r\n\r\n thisDataElem.children('li').each(function(){\r\n var thisList = $(this);\r\n var thisElemCheckbox = thisList.find('input[type=\"checkbox\"]');\r\n var isHide = thisElemCheckbox.data('hide');\r\n\r\n if(thisElemCheckbox[0].checked && !isHide){\r\n thisElemCheckbox[0].checked = false;\r\n thisBoxElem.siblings('.'+ ELEM_BOX).find('.'+ ELEM_DATA).append(thisList.clone());\r\n thisList.remove();\r\n\r\n // 记录当前穿梭的数据\r\n arr.push(thisElemCheckbox[0].value);\r\n }\r\n\r\n that.setValue();\r\n });\r\n });\r\n } else {\r\n // 双击单条记录移动\r\n var thisList = elem;\r\n var thisElemCheckbox = thisList.find('input[type=\"checkbox\"]');\r\n\r\n thisElemCheckbox[0].checked = false;\r\n thisBoxElem.siblings('.'+ ELEM_BOX).find('.'+ ELEM_DATA).append(thisList.clone());\r\n thisList.remove();\r\n\r\n // 记录当前穿梭的数据\r\n arr.push(thisElemCheckbox[0].value);\r\n\r\n that.setValue();\r\n }\r\n\r\n that.renderCheckBtn();\r\n\r\n // 穿梭时,如果另外一个框正在搜索,则触发匹配\r\n var siblingInput = thisBoxElem.siblings('.'+ ELEM_BOX).find('.'+ ELEM_SEARCH +' input')\r\n siblingInput.val() === '' || siblingInput.trigger('keyup');\r\n\r\n // 穿梭时的回调\r\n options.onchange && options.onchange(that.getData(arr), _index);\r\n }\r\n\r\n // 事件\r\n Class.prototype.events = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n // 左右复选框\r\n that.elem.on('click', 'input[lay-filter=\"layTransferCheckbox\"]+', function(){ \r\n var thisElemCheckbox = $(this).prev();\r\n var checked = thisElemCheckbox[0].checked;\r\n var thisDataElem = thisElemCheckbox.parents('.'+ ELEM_BOX).eq(0).find('.'+ ELEM_DATA);\r\n \r\n if(thisElemCheckbox[0].disabled) return;\r\n \r\n // 判断是否全选\r\n if(thisElemCheckbox.attr('lay-type') === 'all'){\r\n thisDataElem.find('input[type=\"checkbox\"]').each(function(){\r\n if(this.disabled) return;\r\n this.checked = checked;\r\n });\r\n }\r\n\r\n setTimeout(function () {\r\n that.renderCheckBtn({stopNone: true});\r\n }, 0)\r\n });\r\n\r\n // 双击穿梭\r\n that.elem.on('dblclick', '.' + ELEM_DATA + '>li', function(event){\r\n var elemThis = $(this);\r\n var thisElemCheckbox = elemThis.children('input[type=\"checkbox\"]');\r\n var thisDataElem = elemThis.parent();\r\n var thisBoxElem = thisDataElem.parent();\r\n var index = thisBoxElem.data('index');\r\n\r\n if(thisElemCheckbox[0].disabled) return;\r\n\r\n // 根据 dblclick 回调函数返回值决定是否执行穿梭 --- 2.9.3+\r\n var ret = typeof options.dblclick === 'function' ? options.dblclick({\r\n elem: elemThis,\r\n data: that.getData([thisElemCheckbox[0].value])[0],\r\n index: index\r\n }) : null;\r\n\r\n if(ret === false) return;\r\n\r\n that.transfer(index, elemThis);\r\n })\r\n\r\n // 穿梭按钮事件\r\n that.layBtn.on('click', function(){\r\n var othis = $(this);\r\n var _index = othis.data('index');\r\n\r\n if(othis.hasClass(DISABLED)) return;\r\n that.transfer(_index);\r\n });\r\n \r\n // 搜索\r\n that.laySearch.find('input').on('keyup', function(){\r\n var value = this.value;\r\n var thisDataElem = $(this).parents('.'+ ELEM_SEARCH).eq(0).siblings('.'+ ELEM_DATA);\r\n var thisListElem = thisDataElem.children('li');\r\n\r\n thisListElem.each(function(){\r\n var thisList = $(this);\r\n var thisElemCheckbox = thisList.find('input[type=\"checkbox\"]');\r\n var title = thisElemCheckbox[0].title;\r\n\r\n // 是否区分大小写\r\n if(options.showSearch !== 'cs'){\r\n title = title.toLowerCase();\r\n value = value.toLowerCase();\r\n }\r\n\r\n var isMatch = title.indexOf(value) !== -1;\r\n\r\n thisList[isMatch ? 'removeClass': 'addClass'](HIDE);\r\n thisElemCheckbox.data('hide', isMatch ? false : true);\r\n });\r\n\r\n that.renderCheckBtn();\r\n \r\n // 无匹配数据视图\r\n var isNone = thisListElem.length === thisDataElem.children('li.'+ HIDE).length;\r\n that.noneView(thisDataElem, isNone ? options.text.searchNone : '');\r\n });\r\n };\r\n \r\n // 记录所有实例\r\n thisModule.that = {}; // 记录所有实例对象\r\n thisModule.config = {}; // 记录所有实例配置项\r\n \r\n // 重载实例\r\n transfer.reload = function(id, options){\r\n var that = thisModule.that[id];\r\n that.reload(options);\r\n \r\n return thisModule.call(that);\r\n };\r\n \r\n // 获得选中的数据(右侧面板)\r\n transfer.getData = function(id){\r\n var that = thisModule.that[id];\r\n return that.getData();\r\n };\r\n\r\n // 核心入口\r\n transfer.render = function(options){\r\n var inst = new Class(options);\r\n return thisModule.call(inst);\r\n };\r\n\r\n exports(MOD_NAME, transfer);\r\n});\r\n","/**\r\n * carousel 轮播模块\r\n * MIT Licensed \r\n */\r\n \r\nlayui.define(['jquery', 'lay'], function(exports){\r\n \"use strict\";\r\n \r\n var $ = layui.$;\r\n var lay = layui.lay;\r\n\r\n var hint = layui.hint();\r\n var device = layui.device();\r\n\r\n // 外部接口\r\n var carousel = {\r\n config: {}, // 全局配置项\r\n\r\n // 设置全局项\r\n set: function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n },\r\n \r\n // 事件\r\n on: function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n }\r\n };\r\n \r\n // 字符常量\r\n var MOD_NAME = 'carousel';\r\n var ELEM = '.layui-carousel';\r\n var THIS = 'layui-this';\r\n var SHOW = 'layui-show';\r\n var HIDE = 'layui-hide';\r\n var DISABLED = 'layui-disabled'\r\n \r\n var ELEM_ITEM = '>*[carousel-item]>*';\r\n var ELEM_LEFT = 'layui-carousel-left';\r\n var ELEM_RIGHT = 'layui-carousel-right';\r\n var ELEM_PREV = 'layui-carousel-prev';\r\n var ELEM_NEXT = 'layui-carousel-next';\r\n var ELEM_ARROW = 'layui-carousel-arrow';\r\n var ELEM_IND = 'layui-carousel-ind';\r\n \r\n // 构造器\r\n var Class = function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, carousel.config, options);\r\n that.render();\r\n };\r\n \r\n // 默认配置\r\n Class.prototype.config = {\r\n width: '600px',\r\n height: '280px',\r\n full: false, // 是否全屏\r\n arrow: 'hover', // 切换箭头默认显示状态:hover/always/none\r\n indicator: 'inside', // 指示器位置:inside/outside/none\r\n autoplay: true, // 是否自动切换\r\n interval: 3000, // 自动切换的时间间隔,不能低于800ms\r\n anim: '', // 动画类型:default/updown/fade\r\n trigger: 'click', // 指示器的触发方式:click/hover\r\n index: 0 // 初始开始的索引\r\n };\r\n \r\n // 轮播渲染\r\n Class.prototype.render = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 若 elem 非唯一,则拆分为多个实例\r\n var elem = $(options.elem);\r\n if(elem.length > 1){\r\n layui.each(elem, function(){\r\n carousel.render($.extend({}, options, {\r\n elem: this\r\n }));\r\n });\r\n return that;\r\n }\r\n\r\n // 合并 lay-options 属性上的配置信息\r\n $.extend(options, lay.options(elem[0]));\r\n\r\n options.elem = $(options.elem);\r\n if(!options.elem[0]) return;\r\n that.elemItem = options.elem.find(ELEM_ITEM);\r\n \r\n if(options.index < 0) options.index = 0;\r\n if(options.index >= that.elemItem.length) options.index = that.elemItem.length - 1;\r\n if(options.interval < 800) options.interval = 800;\r\n\r\n // 是否全屏模式\r\n if(options.full){\r\n options.elem.css({\r\n position: 'fixed',\r\n width: '100%',\r\n height: '100%',\r\n zIndex: 9999\r\n });\r\n } else {\r\n options.elem.css({\r\n width: options.width,\r\n height: options.height\r\n });\r\n }\r\n \r\n options.elem.attr('lay-anim', options.anim);\r\n \r\n // 初始焦点状态\r\n that.elemItem.eq(options.index).addClass(THIS);\r\n\r\n // 指示器等动作\r\n if(that.elemItem.length <= 1) return;\r\n\r\n that.indicator();\r\n that.arrow();\r\n that.autoplay();\r\n that.events();\r\n };\r\n \r\n // 重置轮播\r\n Class.prototype.reload = function(options){\r\n var that = this;\r\n clearInterval(that.timer);\r\n that.config = $.extend({}, that.config, options);\r\n that.render();\r\n };\r\n \r\n // 获取上一个等待条目的索引\r\n Class.prototype.prevIndex = function(){\r\n var that = this;\r\n var options = that.config;\r\n var prevIndex = options.index - 1;\r\n\r\n if(prevIndex < 0){\r\n prevIndex = that.elemItem.length - 1;\r\n }\r\n\r\n return prevIndex;\r\n };\r\n \r\n // 获取下一个等待条目的索引\r\n Class.prototype.nextIndex = function(){\r\n var that = this;\r\n var options = that.config;\r\n var nextIndex = options.index + 1;\r\n\r\n if(nextIndex >= that.elemItem.length){\r\n nextIndex = 0;\r\n }\r\n\r\n return nextIndex;\r\n };\r\n \r\n // 索引递增\r\n Class.prototype.addIndex = function(num){\r\n var that = this;\r\n var options = that.config;\r\n \r\n num = num || 1;\r\n options.index = options.index + num;\r\n \r\n // index 不能超过轮播总数量\r\n if(options.index >= that.elemItem.length){\r\n options.index = 0;\r\n }\r\n };\r\n \r\n // 索引递减\r\n Class.prototype.subIndex = function(num){\r\n var that = this;\r\n var options = that.config;\r\n \r\n num = num || 1;\r\n options.index = options.index - num;\r\n \r\n // index 不能超过轮播总数量\r\n if(options.index < 0){\r\n options.index = that.elemItem.length - 1;\r\n }\r\n };\r\n \r\n // 自动轮播\r\n Class.prototype.autoplay = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n if(!options.autoplay) return;\r\n clearInterval(that.timer);\r\n \r\n that.timer = setInterval(function(){\r\n that.slide();\r\n }, options.interval);\r\n };\r\n \r\n // 箭头\r\n Class.prototype.arrow = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n // 模板\r\n var tplArrow = $([\r\n '',\r\n ''\r\n ].join(''));\r\n \r\n // 预设基础属性\r\n options.elem.attr('lay-arrow', options.arrow);\r\n \r\n // 避免重复插入\r\n if(options.elem.find('.'+ELEM_ARROW)[0]){\r\n options.elem.find('.'+ELEM_ARROW).remove();\r\n }\r\n options.elem.append(tplArrow);\r\n \r\n // 事件\r\n tplArrow.on('click', function(){\r\n var othis = $(this);\r\n var type = othis.attr('lay-type')\r\n that.slide(type);\r\n });\r\n };\r\n\r\n // 跳转到特定下标\r\n Class.prototype.goto = function(index){\r\n var that = this;\r\n var options = that.config;\r\n\r\n if(index > options.index){\r\n that.slide('add', index - options.index);\r\n } else if(index < options.index){\r\n that.slide('sub', options.index - index);\r\n }\r\n }\r\n \r\n // 指示器\r\n Class.prototype.indicator = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n // 模板\r\n var tplInd = that.elemInd = $(['
                              ',\r\n function(){\r\n var li = [];\r\n layui.each(that.elemItem, function(index){\r\n li.push('');\r\n });\r\n return li.join('');\r\n }(),\r\n '
                            '].join(''));\r\n \r\n // 预设基础属性\r\n options.elem.attr('lay-indicator', options.indicator);\r\n \r\n // 避免重复插入\r\n if(options.elem.find('.'+ELEM_IND)[0]){\r\n options.elem.find('.'+ELEM_IND).remove();\r\n }\r\n options.elem.append(tplInd);\r\n \r\n if(options.anim === 'updown'){\r\n tplInd.css('margin-top', -(tplInd.height()/2));\r\n }\r\n \r\n // 事件\r\n tplInd.find('li').on(options.trigger === 'hover' ? 'mouseover' : options.trigger, function(){\r\n that.goto($(this).index());\r\n });\r\n };\r\n \r\n // 滑动切换\r\n Class.prototype.slide = function(type, num){\r\n var that = this;\r\n var elemItem = that.elemItem;\r\n var options = that.config;\r\n var thisIndex = options.index;\r\n var filter = options.elem.attr('lay-filter');\r\n \r\n if(that.haveSlide) return;\r\n \r\n // 滑动方向\r\n if(type === 'sub'){\r\n that.subIndex(num);\r\n elemItem.eq(options.index).addClass(ELEM_PREV);\r\n setTimeout(function(){\r\n elemItem.eq(thisIndex).addClass(ELEM_RIGHT);\r\n elemItem.eq(options.index).addClass(ELEM_RIGHT);\r\n }, 50);\r\n } else { // 默认递增滑\r\n that.addIndex(num);\r\n elemItem.eq(options.index).addClass(ELEM_NEXT);\r\n setTimeout(function(){\r\n elemItem.eq(thisIndex).addClass(ELEM_LEFT);\r\n elemItem.eq(options.index).addClass(ELEM_LEFT);\r\n }, 50); \r\n }\r\n \r\n // 移除过渡类\r\n setTimeout(function(){\r\n elemItem.removeClass(THIS + ' ' + ELEM_PREV + ' ' + ELEM_NEXT + ' ' + ELEM_LEFT + ' ' + ELEM_RIGHT);\r\n elemItem.eq(options.index).addClass(THIS);\r\n that.haveSlide = false; // 解锁\r\n }, 350);\r\n \r\n // 指示器焦点\r\n that.elemInd.find('li').eq(options.index).addClass(THIS)\r\n .siblings().removeClass(THIS);\r\n \r\n that.haveSlide = true;\r\n \r\n // 回调返回的参数\r\n var params = {\r\n index: options.index,\r\n prevIndex: thisIndex,\r\n item: elemItem.eq(options.index)\r\n };\r\n \r\n typeof options.change === 'function' && options.change(params);\r\n layui.event.call(this, MOD_NAME, 'change('+ filter +')', params);\r\n };\r\n \r\n // 事件处理\r\n Class.prototype.events = function(){\r\n var that = this;\r\n var options = that.config;\r\n \r\n if(options.elem.data('haveEvents')) return;\r\n \r\n // 移入移出容器\r\n options.elem.on('mouseenter touchstart', function(){\r\n if (that.config.autoplay === 'always') return;\r\n clearInterval(that.timer);\r\n }).on('mouseleave touchend', function(){\r\n if (that.config.autoplay === 'always') return;\r\n that.autoplay();\r\n });\r\n\r\n var touchEl = options.elem;\r\n var isVertical = options.anim === 'updown';\r\n lay.touchSwipe(touchEl, {\r\n onTouchEnd: function(e, state){\r\n var duration = Date.now() - state.timeStart;\r\n var distance = isVertical ? state.distanceY : state.distanceX;\r\n var speed = distance / duration;\r\n var shouldSwipe = Math.abs(speed) > 0.25 || Math.abs(distance) > touchEl[isVertical ? 'height' : 'width']() / 3;\r\n if(shouldSwipe){\r\n that.slide(distance > 0 ? '' : 'sub');\r\n }\r\n }\r\n })\r\n \r\n options.elem.data('haveEvents', true);\r\n };\r\n \r\n // 核心入口\r\n carousel.render = function(options){\r\n return new Class(options);\r\n };\r\n \r\n exports(MOD_NAME, carousel);\r\n});\r\n\r\n \r\n","/**\r\n * rate 评分评星组件\r\n */\r\n\r\nlayui.define(['jquery', 'lay'],function(exports){\r\n \"use strict\";\r\n\r\n var $ = layui.jquery;\r\n var lay = layui.lay;\r\n\r\n // 外部接口\r\n var rate = {\r\n config: {},\r\n index: layui.rate ? (layui.rate.index + 10000) : 0,\r\n\r\n //设置全局项\r\n set: function(options){\r\n var that = this;\r\n that.config = $.extend({}, that.config, options);\r\n return that;\r\n },\r\n\r\n //事件\r\n on: function(events, callback){\r\n return layui.onevent.call(this, MOD_NAME, events, callback);\r\n }\r\n }\r\n\r\n // 操作当前实例\r\n var thisRate = function () {\r\n var that = this;\r\n var options = that.config;\r\n\r\n return {\r\n setvalue: function (value) {\r\n that.setvalue.call(that, value);\r\n },\r\n config: options\r\n }\r\n };\r\n\r\n //字符常量\r\n var MOD_NAME = 'rate';\r\n var ELEM_VIEW = 'layui-rate';\r\n var ICON_RATE = 'layui-icon-rate';\r\n var ICON_RATE_SOLID = 'layui-icon-rate-solid';\r\n var ICON_RATE_HALF = 'layui-icon-rate-half';\r\n var ICON_SOLID_HALF = 'layui-icon-rate-solid layui-icon-rate-half';\r\n var ICON_SOLID_RATE = 'layui-icon-rate-solid layui-icon-rate';\r\n var ICON_HALF_RATE = 'layui-icon-rate layui-icon-rate-half';\r\n\r\n //构造器\r\n var Class = function (options) {\r\n var that = this;\r\n that.index = ++rate.index;\r\n that.config = $.extend({}, that.config, rate.config, options);\r\n that.render();\r\n };\r\n\r\n //默认配置\r\n Class.prototype.config = {\r\n length: 5, //初始长度\r\n text: false, //是否显示评分等级\r\n readonly: false, //是否只读\r\n half: false, //是否可以半星\r\n value: 0, //星星选中个数\r\n theme: '' //主题颜色\r\n };\r\n\r\n //评分渲染\r\n Class.prototype.render = function(){\r\n var that = this;\r\n var options = that.config;\r\n\r\n // 若 elem 非唯一,则拆分为多个实例\r\n var elem = $(options.elem);\r\n if(elem.length > 1){\r\n layui.each(elem, function(){\r\n rate.render($.extend({}, options, {\r\n elem: this\r\n }));\r\n });\r\n return that;\r\n }\r\n\r\n // 合并 lay-options 属性上的配置信息\r\n $.extend(options, lay.options(elem[0]));\r\n\r\n // 自定义主题\r\n var style = options.theme ? ('style=\"color: '+ options.theme + ';\"') : '';\r\n\r\n options.elem = $(options.elem);\r\n\r\n //最大值不能大于总长度\r\n if(options.value > options.length){\r\n options.value = options.length;\r\n }\r\n\r\n //如果没有选择半星的属性,却给了小数的数值,统一向上或向下取整\r\n if(parseInt(options.value) !== options.value){\r\n if(!options.half){\r\n options.value = (Math.ceil(options.value) - options.value) < 0.5 ? Math.ceil(options.value): Math.floor(options.value)\r\n }\r\n }\r\n\r\n //组件模板\r\n var temp = '
                              ';\r\n for(var i = 1;i <= options.length;i++){\r\n var item = '
                            • Math.floor(options.value)?ICON_RATE:ICON_RATE_SOLID)\r\n + '\" '+ style +'>
                            • ';\r\n\r\n if(options.half&&parseInt(options.value) !== options.value&&i == Math.ceil(options.value)){\r\n temp = temp + '
                            • ';\r\n }else{\r\n temp = temp +item;\r\n }\r\n }\r\n temp += '
                            ' + (options.text ? (''+ options.value + '星') : '') + '';\r\n\r\n //开始插入替代元素\r\n var othis = options.elem;\r\n var hasRender = othis.next('.' + ELEM_VIEW);\r\n\r\n //生成替代元素\r\n hasRender[0] && hasRender.remove(); //如果已经渲染,则Rerender\r\n\r\n that.elemTemp = $(temp);\r\n\r\n options.span = that.elemTemp.next('span');\r\n\r\n options.setText && options.setText(options.value);\r\n\r\n othis.html(that.elemTemp);\r\n\r\n othis.addClass(\"layui-inline\");\r\n\r\n //如果不是只读,那么进行触控事件\r\n if(!options.readonly) that.action();\r\n\r\n };\r\n\r\n //评分重置\r\n Class.prototype.setvalue = function(value){\r\n var that = this;\r\n var options = that.config;\r\n\r\n options.value = value ;\r\n that.render();\r\n };\r\n\r\n //li触控事件\r\n Class.prototype.action = function(){\r\n var that = this;\r\n var options = that.config;\r\n var _ul = that.elemTemp;\r\n var wide = _ul.find(\"i\").width();\r\n var liElems = _ul.children(\"li\");\r\n\r\n liElems.each(function(index){\r\n var ind = index + 1;\r\n var othis = $(this);\r\n\r\n //点击\r\n othis.on('click', function(e){\r\n //将当前点击li的索引值赋给value\r\n options.value = ind;\r\n if(options.half){\r\n //获取鼠标在li上的位置\r\n var x = e.pageX - $(this).offset().left;\r\n if(x <= wide / 2){\r\n options.value = options.value - 0.5;\r\n }\r\n }\r\n\r\n if(options.text) _ul.next(\"span\").text(options.value + \"星\");\r\n\r\n options.choose && options.choose(options.value);\r\n options.setText && options.setText(options.value);\r\n });\r\n\r\n //移入\r\n othis.on('mousemove', function(e){\r\n _ul.find(\"i\").each(function(){\r\n $(this).addClass(ICON_RATE).removeClass(ICON_SOLID_HALF)\r\n });\r\n _ul.find(\"i:lt(\" + ind + \")\").each(function(){\r\n $(this).addClass(ICON_RATE_SOLID).removeClass(ICON_HALF_RATE)\r\n });\r\n // 如果设置可选半星,那么判断鼠标相对li的位置\r\n if(options.half){\r\n var x = e.pageX - $(this).offset().left;\r\n if(x <= wide / 2){\r\n othis.children(\"i\").addClass(ICON_RATE_HALF).removeClass(ICON_RATE_SOLID)\r\n }\r\n }\r\n })\r\n\r\n //移出\r\n othis.on('mouseleave', function(){\r\n _ul.find(\"i\").each(function(){\r\n $(this).addClass(ICON_RATE).removeClass(ICON_SOLID_HALF)\r\n });\r\n _ul.find(\"i:lt(\" + Math.floor(options.value) + \")\").each(function(){\r\n $(this).addClass(ICON_RATE_SOLID).removeClass(ICON_HALF_RATE)\r\n });\r\n //如果设置可选半星,根据分数判断是否有半星\r\n if(options.half){\r\n if(parseInt(options.value) !== options.value){\r\n _ul.children(\"li:eq(\" + Math.floor(options.value) + \")\").children(\"i\").addClass(ICON_RATE_HALF).removeClass(ICON_SOLID_RATE)\r\n }\r\n }\r\n })\r\n\r\n })\r\n\r\n lay.touchSwipe(_ul, {\r\n onTouchMove: function(e, state){\r\n if(Date.now() - state.timeStart <= 200) return;\r\n var pageX = e.touches[0].pageX;\r\n var rateElemWidth = _ul.width();\r\n var itemElemWidth = rateElemWidth / options.length; // 单颗星的宽度\r\n var offsetX = pageX - _ul.offset().left;\r\n var num = offsetX / itemElemWidth; // 原始值\r\n var remainder = num % 1;\r\n var integer = num - remainder;\r\n\r\n // 最终值\r\n var score = remainder <= 0.5 && options.half ? integer + 0.5 : Math.ceil(num);\r\n if(score > options.length) score = options.length;\r\n if(score < 0) score = 0;\r\n\r\n liElems.each(function(index){\r\n var iconElem = $(this).children('i');\r\n var isActiveIcon = (Math.ceil(score) - index === 1);\r\n var needSelect = Math.ceil(score) > index;\r\n var shouldHalfIcon = (score - index === 0.5);\r\n\r\n if(needSelect){\r\n // 设置选中样式\r\n iconElem.addClass(ICON_RATE_SOLID).removeClass(ICON_HALF_RATE);\r\n if(options.half && shouldHalfIcon){\r\n iconElem.addClass(ICON_RATE_HALF).removeClass(ICON_RATE_SOLID);\r\n }\r\n }else{\r\n // 恢复初始样式\r\n iconElem.addClass(ICON_RATE).removeClass(ICON_SOLID_HALF);\r\n }\r\n\r\n // 设置缩放样式\r\n iconElem.toggleClass('layui-rate-hover', isActiveIcon);\r\n });\r\n\r\n // 更新最终值\r\n options.value = score;\r\n if(options.text) _ul.next(\"span\").text(options.value + \"星\");\r\n options.setText && options.setText(options.value);\r\n },\r\n onTouchEnd: function(e, state){\r\n if(Date.now() - state.timeStart <= 200) return;\r\n _ul.find('i').removeClass('layui-rate-hover');\r\n options.choose && options.choose(options.value);\r\n options.setText && options.setText(options.value);\r\n }\r\n });\r\n };\r\n\r\n //事件处理\r\n Class.prototype.events = function () {\r\n var that = this;\r\n //var options = that.config;\r\n };\r\n\r\n //核心入口\r\n rate.render = function(options){\r\n var inst = new Class(options);\r\n return thisRate.call(inst);\r\n };\r\n\r\n exports(MOD_NAME, rate);\r\n})\r\n","/**\r\n * flow 流加载组件\r\n */\r\n\r\n\r\nlayui.define('jquery', function(exports){\r\n \"use strict\";\r\n\r\n var $ = layui.$, Flow = function(options){}\r\n ,ELEM_MORE = 'layui-flow-more'\r\n ,ELEM_LOAD = '';\r\n\r\n //主方法\r\n Flow.prototype.load = function(options){\r\n var that = this, page = 0, lock, isOver, lazyimg, timer;\r\n options = options || {};\r\n\r\n var elem = $(options.elem); if(!elem[0]) return;\r\n var scrollElem = $(options.scrollElem || document); // 滚动条所在元素\r\n var threshold = 'mb' in options ? options.mb : 50; // 临界距离\r\n var isAuto = 'isAuto' in options ? options.isAuto : true; // 否自动滚动加载\r\n var moreText = options.moreText || \"加载更多\"; // 手动加载时,加载更多按钮文案\r\n var end = options.end || '没有更多了'; // “末页”显示文案\r\n var direction = options.direction || 'bottom';\r\n var isTop = direction === 'top';\r\n\r\n // 重复执行时清理旧的事件绑定\r\n that._cleanup(elem, scrollElem);\r\n\r\n //滚动条所在元素是否为document\r\n var notDocument = options.scrollElem && options.scrollElem !== document;\r\n\r\n //加载更多\r\n var ELEM_TEXT = '' + moreText + ''\r\n ,more = $('');\r\n\r\n if(!elem.find('.layui-flow-more')[0]){\r\n elem[isTop ? 'prepend' : 'append'](more);\r\n }\r\n\r\n //加载下一个元素\r\n var next = function(html, over){\r\n var scrollHeightStart = notDocument ? scrollElem.prop('scrollHeight') : document.documentElement.scrollHeight;\r\n var scrollTopStart = scrollElem.scrollTop();\r\n html = $(html);\r\n more[isTop ? 'after' : 'before'](html);\r\n over = over == 0 ? true : null;\r\n over ? more.html(end) : more.find('a').html(ELEM_TEXT);\r\n isOver = over;\r\n lock = null;\r\n lazyimg && lazyimg();\r\n if(isTop){\r\n var scrollHeightEnd = notDocument ? scrollElem.prop('scrollHeight') : document.documentElement.scrollHeight;\r\n if(page === 1){\r\n // 首次渲染后滑动到底部\r\n scrollElem.scrollTop(scrollHeightEnd);\r\n }else if(page > 1){\r\n var nextElementHeight = scrollHeightEnd - scrollHeightStart;\r\n scrollElem.scrollTop(scrollTopStart + nextElementHeight);\r\n }\r\n }\r\n };\r\n\r\n //触发请求\r\n var done = function(){\r\n lock = true;\r\n more.find('a').html(ELEM_LOAD);\r\n typeof options.done === 'function' && options.done(++page, next);\r\n };\r\n\r\n done();\r\n\r\n //不自动滚动加载\r\n more.find('a').on('click.flow', function(){\r\n var othis = $(this);\r\n if(isOver) return;\r\n lock || done();\r\n });\r\n\r\n //如果允许图片懒加载\r\n if(options.isLazyimg){\r\n lazyimg = that.lazyimg({\r\n elem: options.elem + ' img'\r\n ,scrollElem: options.scrollElem\r\n ,direction: options.direction\r\n });\r\n }\r\n\r\n if(!isAuto) return that;\r\n\r\n scrollElem.on('scroll.flow', function(){\r\n var othis = $(this), top = othis.scrollTop();\r\n\r\n if(timer) clearTimeout(timer);\r\n if(isOver || !elem.width()) return; //如果已经结束,或者元素处于隐藏状态,则不执行滚动加载\r\n\r\n timer = setTimeout(function(){\r\n //计算滚动所在容器的可视高度\r\n var height = notDocument ? othis.height() : $(window).height();\r\n\r\n //计算滚动所在容器的实际高度\r\n var scrollHeight = notDocument\r\n ? othis.prop('scrollHeight')\r\n : document.documentElement.scrollHeight;\r\n\r\n //临界点\r\n if(!isTop ? scrollHeight - top - height <= threshold : top <= threshold){\r\n lock || done();\r\n }\r\n }, 100);\r\n });\r\n\r\n return that;\r\n };\r\n\r\n //图片懒加载\r\n Flow.prototype.lazyimg = function(options){\r\n var that = this, index = 0, haveScroll;\r\n options = options || {};\r\n\r\n var scrollElem = $(options.scrollElem || document); //滚动条所在元素\r\n var elem = options.elem || 'img';\r\n var direction = options.direction || 'bottom';\r\n var isTop = direction === 'top';\r\n\r\n //滚动条所在元素是否为document\r\n var notDocument = options.scrollElem && options.scrollElem !== document;\r\n\r\n //显示图片\r\n var show = function(item, height){\r\n var start = scrollElem.scrollTop(), end = start + height;\r\n var elemTop = notDocument ? function(){\r\n return item.offset().top - scrollElem.offset().top + start;\r\n }() : item.offset().top;\r\n\r\n /* 始终只加载在当前屏范围内的图片 */\r\n if((isTop ? elemTop + item.height() : elemTop) >= start && elemTop <= end){\r\n if(item.attr('lay-src')){\r\n var src = item.attr('lay-src');\r\n layui.img(src, function(){\r\n var next = that.lazyimg.elem.eq(index);\r\n item.attr('src', src).removeAttr('lay-src');\r\n\r\n /* 当前图片加载就绪后,检测下一个图片是否在当前屏 */\r\n next[0] && render(next);\r\n index++;\r\n }, function(){\r\n var next = that.lazyimg.elem.eq(index);\r\n item.removeAttr('lay-src');\r\n });\r\n }\r\n }\r\n }, render = function(othis, scroll){\r\n\r\n //计算滚动所在容器的可视高度\r\n var height = notDocument ? (scroll||scrollElem).height() : $(window).height();\r\n var start = scrollElem.scrollTop(), end = start + height;\r\n\r\n that.lazyimg.elem = $(elem);\r\n\r\n if(othis){\r\n show(othis, height);\r\n } else {\r\n //计算未加载过的图片\r\n for(var i = 0; i < that.lazyimg.elem.length; i++){\r\n var item = that.lazyimg.elem.eq(i), elemTop = notDocument ? function(){\r\n return item.offset().top - scrollElem.offset().top + start;\r\n }() : item.offset().top;\r\n\r\n show(item, height);\r\n index = i;\r\n\r\n //如果图片的top坐标,超出了当前屏,则终止后续图片的遍历\r\n if(elemTop > end) break;\r\n }\r\n }\r\n };\r\n\r\n render();\r\n\r\n if(!haveScroll){\r\n var timer;\r\n scrollElem.on('scroll.lazyimg' , function(){\r\n var othis = $(this);\r\n if(timer) clearTimeout(timer)\r\n timer = setTimeout(function(){\r\n render(null, othis);\r\n }, 50);\r\n });\r\n haveScroll = true;\r\n }\r\n return render;\r\n };\r\n\r\n // 重复执行时清理旧的事件绑定,私有方法\r\n Flow.prototype._cleanup = function(elem, scrollElem){\r\n scrollElem.off('scroll.flow').off('scroll.lazyimg');\r\n elem.find('.layui-flow-more').find('a').off('click.flow');\r\n elem.html('');\r\n }\r\n\r\n //暴露接口\r\n exports('flow', new Flow());\r\n});\r\n","/**\r\n * code\r\n * Code 预览组件\r\n */\r\n\r\nlayui.define(['lay', 'util', 'element', 'form'], function(exports){\r\n \"use strict\";\r\n\r\n var $ = layui.$;\r\n var util = layui.util;\r\n var element = layui.element;\r\n var form = layui.form;\r\n var layer = layui.layer;\r\n var hint = layui.hint();\r\n\r\n // 常量\r\n var CONST = {\r\n ELEM_VIEW: 'layui-code-view',\r\n ELEM_TAB: 'layui-tab',\r\n ELEM_HEADER: 'layui-code-header',\r\n ELEM_FULL: 'layui-code-full',\r\n ELEM_PREVIEW: 'layui-code-preview',\r\n ELEM_ITEM: 'layui-code-item',\r\n ELEM_SHOW: 'layui-show',\r\n ELEM_LINE: 'layui-code-line',\r\n ELEM_LINE_NUM: 'layui-code-line-number',\r\n ELEM_LN_MODE: 'layui-code-ln-mode',\r\n CDDE_DATA_CLASS: 'LayuiCodeDataClass',\r\n LINE_RAW_WIDTH: 45, // 行号初始宽度,需与 css 保持一致\r\n };\r\n\r\n // 默认参数项\r\n var config = {\r\n elem: '', // 元素选择器\r\n about: '', // 代码栏右上角信息\r\n ln: true, // 代码区域是否显示行号\r\n header: false, // 是否显示代码栏头部区域\r\n encode: true, // 是否对 code 进行编码(若开启预览,则强制开启)\r\n copy: true, // 是否开启代码区域复制功能图标\r\n // 默认文本\r\n text: {\r\n code: util.escape(''),\r\n preview: 'Preview',\r\n },\r\n wordWrap: true, // 是否自动换行\r\n lang: 'text', // 指定语言类型\r\n highlighter: false, // 是否开启语法高亮,'hljs','prism','shiki'\r\n langMarker: false, // 代码区域是否显示语言类型标记\r\n };\r\n\r\n // 初始索引\r\n var codeIndex = layui.code ? (layui.code.index + 10000) : 0;\r\n\r\n // 去除尾部空格\r\n var trimEnd = function(str){\r\n return String(str).replace(/\\s+$/, '');\r\n }\r\n // 保留首行缩进\r\n var trim = function(str){\r\n return trimEnd(str).replace(/^\\n|\\n$/, '');\r\n };\r\n\r\n // export api\r\n exports('code', function(options, mode){\r\n options = $.extend(true, {}, config, options);\r\n\r\n // 返回对象\r\n var ret = {\r\n config: options,\r\n reload: function(opts) { // 重载\r\n layui.code(this.updateOptions(opts));\r\n },\r\n updateOptions: function(opts) { // 更新属性(选项)\r\n opts = opts || {};\r\n delete opts.elem;\r\n return $.extend(true, options, opts);\r\n },\r\n reloadCode: function(opts) { // 仅重载 code\r\n layui.code(this.updateOptions(opts), 'reloadCode');\r\n }\r\n };\r\n\r\n // 若 elem 非唯一\r\n var elem = $(options.elem);\r\n if(elem.length > 1){\r\n // 是否正向渲染\r\n layui.each(options.obverse ? elem : elem.get().reverse(), function(){\r\n layui.code($.extend({}, options, {\r\n elem: this\r\n }), mode);\r\n });\r\n return ret;\r\n }\r\n\r\n // 目标元素是否存在\r\n var othis = options.elem = $(options.elem);\r\n if(!othis[0]) return ret;\r\n\r\n // 合并属性上的参数,并兼容旧版本属性写法 lay-*\r\n $.extend(true, options, lay.options(othis[0]), function(obj){\r\n var attrs = ['title', 'height', 'encode', 'skin', 'about'];\r\n layui.each(attrs, function(i, attr){\r\n var value = othis.attr('lay-'+ attr);\r\n if(typeof value === 'string'){\r\n obj[attr] = value;\r\n }\r\n })\r\n return obj;\r\n }({}));\r\n\r\n // codeRender 需要关闭编码\r\n // 未使用 codeRender 时若开启了预览,则强制开启编码\r\n options.encode = (options.encode || options.preview) && !options.codeRender;\r\n\r\n // 获得初始 code\r\n options.code = options.code || function(){\r\n var arr = [];\r\n var textarea = othis.children('textarea');\r\n\r\n // 若内容放置在 textarea 中\r\n textarea.each(function(){\r\n arr.push(trim(this.value));\r\n });\r\n\r\n // 内容直接放置在元素外层\r\n if(arr.length === 0){\r\n arr.push(trim(othis.html()));\r\n }\r\n\r\n return arr.join('');\r\n }();\r\n\r\n // 创建 code 行结构\r\n var createCode = function(html) {\r\n // codeRender\r\n if(typeof options.codeRender === 'function') {\r\n html = options.codeRender(String(html), options);\r\n }\r\n\r\n // code 行\r\n var lines = String(html).split(/\\r?\\n/g);\r\n\r\n // 包裹 code 行结构\r\n html = $.map(lines, function(line, num) {\r\n return [\r\n '
                            ',\r\n (\r\n options.ln ? [\r\n '
                            ',\r\n (util.digit(num + 1) + '.'),\r\n '
                            ',\r\n ].join('') : ''\r\n ),\r\n '
                            ',\r\n (line || ' '),\r\n '
                            ',\r\n '
                            '\r\n ].join('');\r\n });\r\n\r\n return {\r\n lines: lines,\r\n html: html\r\n };\r\n };\r\n\r\n // 原始 code\r\n var rawCode = options.code;\r\n\r\n // 最终 code\r\n var finalCode = function(code) {\r\n return typeof options.codeParse === 'function' ?\r\n options.codeParse(code, options) :\r\n code;\r\n };\r\n\r\n // 仅重载 code\r\n if (mode === 'reloadCode') {\r\n return othis.children('.layui-code-wrap').html(\r\n createCode(finalCode(rawCode)).html\r\n ), ret;\r\n }\r\n\r\n // 自增索引\r\n var index = layui.code.index = ++codeIndex;\r\n othis.attr('lay-code-index', index);\r\n\r\n // 初始化 className\r\n var hasDataClass = CONST.CDDE_DATA_CLASS in othis.data();\r\n if (hasDataClass) {\r\n othis.attr('class', othis.data(CONST.CDDE_DATA_CLASS) || '');\r\n }\r\n\r\n // 记录初始 className\r\n if (!hasDataClass) {\r\n othis.data(CONST.CDDE_DATA_CLASS, othis.attr('class'));\r\n }\r\n\r\n // 工具栏\r\n var tools = {\r\n copy: {\r\n className: 'file-b',\r\n title: ['复制代码'],\r\n event: function(obj){\r\n var code = util.unescape(finalCode(options.code));\r\n\r\n // 写入剪切板\r\n lay.clipboard.writeText({\r\n text: code,\r\n done: function() {\r\n layer.msg('已复制', {icon: 1});\r\n },\r\n error: function() {\r\n layer.msg('复制失败', {icon: 2});\r\n }\r\n });\r\n\r\n typeof options.onCopy === 'function' && options.onCopy(code);\r\n }\r\n }\r\n };\r\n\r\n // 移除包裹结构\r\n var unwrap = (function fn() {\r\n var elemViewHas = othis.parent('.' + CONST.ELEM_PREVIEW);\r\n var elemTabHas = elemViewHas.children('.'+ CONST.ELEM_TAB);\r\n var elemPreviewViewHas = elemViewHas.children('.' + CONST.ELEM_ITEM +'-preview');\r\n\r\n // 移除旧结构\r\n elemTabHas.remove(); // 移除 tab\r\n elemPreviewViewHas.remove(); // 移除预览区域\r\n if (elemViewHas[0]) othis.unwrap(); // 移除外层容器\r\n\r\n return fn;\r\n })();\r\n\r\n // 是否开启预览\r\n if(options.preview){\r\n var FILTER_VALUE = 'LAY-CODE-DF-'+ index;\r\n var layout = options.layout || ['code', 'preview'];\r\n var isIframePreview = options.preview === 'iframe';\r\n\r\n // 追加 Tab 组件\r\n var elemView = $('
                            ');\r\n var elemTabView = $('
                            ');\r\n var elemHeaderView = $('
                            ');\r\n var elemPreviewView = $('
                            ');\r\n var elemToolbar = $('
                            ');\r\n\r\n\r\n if(options.id) elemView.attr('id', options.id);\r\n elemView.addClass(options.className);\r\n elemTabView.attr('lay-filter', FILTER_VALUE);\r\n\r\n // 标签头\r\n layui.each(layout, function(i, v){\r\n var li = $('
                          • ');\r\n if(i === 0) li.addClass('layui-this');\r\n li.html(options.text[v]);\r\n elemHeaderView.append(li);\r\n });\r\n\r\n // 工具栏\r\n $.extend(tools, {\r\n 'full': {\r\n className: 'screen-full',\r\n title: ['最大化显示', '还原显示'],\r\n event: function(obj){\r\n var el = obj.elem;\r\n var elemView = el.closest('.'+ CONST.ELEM_PREVIEW);\r\n var classNameFull = 'layui-icon-'+ this.className;\r\n var classNameRestore = 'layui-icon-screen-restore';\r\n var title = this.title;\r\n var htmlElem = $('html,body');\r\n var ELEM_SCROLLBAR_HIDE = 'layui-scrollbar-hide';\r\n\r\n if(el.hasClass(classNameFull)){\r\n elemView.addClass(CONST.ELEM_FULL);\r\n el.removeClass(classNameFull).addClass(classNameRestore);\r\n el.attr('title', title[1]);\r\n htmlElem.addClass(ELEM_SCROLLBAR_HIDE);\r\n } else {\r\n elemView.removeClass(CONST.ELEM_FULL);\r\n el.removeClass(classNameRestore).addClass(classNameFull);\r\n el.attr('title', title[0]);\r\n htmlElem.removeClass(ELEM_SCROLLBAR_HIDE);\r\n }\r\n }\r\n },\r\n 'window': {\r\n className: 'release',\r\n title: ['在新窗口预览'],\r\n event: function(obj){\r\n util.openWin({\r\n content: finalCode(options.code)\r\n });\r\n }\r\n }\r\n });\r\n\r\n // copy\r\n if(options.copy){\r\n if(layui.type(options.tools) === 'array'){\r\n // 若 copy 未存在于 tools 中,则追加到最前\r\n if(options.tools.indexOf('copy') === -1){\r\n options.tools.unshift('copy');\r\n }\r\n } else {\r\n options.tools = ['copy'];\r\n }\r\n }\r\n\r\n // 工具栏事件\r\n elemToolbar.on('click', '>i', function(){\r\n var oi = $(this);\r\n var type = oi.data('type');\r\n var parameters = {\r\n elem: oi,\r\n type: type,\r\n options: options, // 当前属性选项\r\n rawCode: options.code, // 原始 code\r\n finalCode: util.unescape(finalCode(options.code)) // 最终 code\r\n };\r\n\r\n // 内部 tools event\r\n tools[type] && typeof tools[type].event === 'function' && tools[type].event(parameters);\r\n\r\n // 外部 tools event\r\n typeof options.toolsEvent === 'function' && options.toolsEvent(parameters);\r\n });\r\n\r\n // 增加工具栏\r\n if (options.addTools && options.tools) {\r\n options.tools = [].concat(options.tools, options.addTools);\r\n }\r\n\r\n // 渲染工具栏\r\n layui.each(options.tools, function(i, v){\r\n var viso = typeof v === 'object'; // 若为 object 值,则可自定义更多属性\r\n var tool = viso ? v : (\r\n tools[v] || {\r\n className: v,\r\n title: [v]\r\n }\r\n );\r\n\r\n var className = tool.className || tool.type;\r\n var title = tool.title || [''];\r\n var type = viso ? ( tool.type || className ) : v;\r\n\r\n if (!type) return;\r\n\r\n // 若非内置 tool,则合并到 tools 中\r\n if (!tools[type]) {\r\n var obj = {};\r\n obj[type] = tool;\r\n $.extend(tools, obj);\r\n }\r\n\r\n elemToolbar.append(\r\n ''\r\n );\r\n });\r\n\r\n othis.addClass(CONST.ELEM_ITEM).wrap(elemView); // 包裹外层容器\r\n elemTabView.append(elemHeaderView); // 追加标签头\r\n options.tools && elemTabView.append(elemToolbar); // 追加工具栏\r\n othis.before(elemTabView); // 追加标签结构\r\n\r\n // 追加预览\r\n if(isIframePreview){\r\n elemPreviewView.html('');\r\n }\r\n\r\n // 执行预览\r\n var runPreview = function(thisItemBody){\r\n var iframe = thisItemBody.children('iframe')[0];\r\n\r\n // 是否 iframe 方式预览\r\n if(isIframePreview && iframe){\r\n iframe.srcdoc = finalCode(options.code);\r\n } else {\r\n thisItemBody.html(options.code);\r\n }\r\n\r\n // 当前实例预览完毕后的回调\r\n setTimeout(function(){\r\n typeof options.done === 'function' && options.done({\r\n container: thisItemBody,\r\n options: options,\r\n render: function(){\r\n form.render(thisItemBody.find('.layui-form'));\r\n element.render();\r\n }\r\n });\r\n },3);\r\n };\r\n\r\n if(layout[0] === 'preview'){\r\n elemPreviewView.addClass(CONST.ELEM_SHOW);\r\n othis.before(elemPreviewView);\r\n runPreview(elemPreviewView);\r\n } else {\r\n othis.addClass(CONST.ELEM_SHOW).after(elemPreviewView);\r\n }\r\n\r\n // 内容项初始化样式\r\n options.previewStyle = [options.style, options.previewStyle].join('');\r\n elemPreviewView.attr('style', options.previewStyle);\r\n\r\n // tab change\r\n element.on('tab('+ FILTER_VALUE +')', function(data){\r\n var $this = $(this);\r\n var thisElem = $(data.elem).closest('.'+ CONST.ELEM_PREVIEW);\r\n var elemItemBody = thisElem.find('.'+ CONST.ELEM_ITEM);\r\n var thisItemBody = elemItemBody.eq(data.index);\r\n\r\n elemItemBody.removeClass(CONST.ELEM_SHOW);\r\n thisItemBody.addClass(CONST.ELEM_SHOW);\r\n\r\n if($this.attr('lay-id') === 'preview'){\r\n runPreview(thisItemBody);\r\n }\r\n\r\n setCodeLayout();\r\n });\r\n }\r\n\r\n // 创建 code 容器\r\n var codeElem = $(''); // 此处的闭合标签是为了兼容 IE8\r\n\r\n // 添加主容器 className\r\n othis.addClass(function(arr) {\r\n if (!options.wordWrap) arr.push('layui-code-nowrap');\r\n return arr.join(' ')\r\n }(['layui-code-view layui-border-box']));\r\n\r\n // code 主题风格\r\n var theme = options.theme || options.skin;\r\n if (theme) {\r\n othis.removeClass('layui-code-theme-dark layui-code-theme-light');\r\n othis.addClass('layui-code-theme-'+ theme);\r\n }\r\n\r\n // 添加高亮必要的 className\r\n if (options.highlighter) {\r\n othis.addClass([\r\n options.highlighter,\r\n 'language-' + options.lang,\r\n 'layui-code-hl'\r\n ].join(' '));\r\n }\r\n\r\n // 获取 code 行结构\r\n var createCodeRst = createCode(\r\n options.encode ? util.escape(finalCode(rawCode)) : rawCode // 是否编码\r\n );\r\n var lines = createCodeRst.lines;\r\n\r\n // 插入 code\r\n othis.html(codeElem.html(createCodeRst.html));\r\n\r\n // 插入行号边栏\r\n if (options.ln) {\r\n othis.append('
                            ');\r\n }\r\n\r\n // 兼容旧版本 height 属性\r\n if (options.height) {\r\n codeElem.css('max-height', options.height);\r\n }\r\n\r\n // code 区域样式\r\n options.codeStyle = [options.style, options.codeStyle].join('');\r\n if (options.codeStyle) {\r\n codeElem.attr('style', function(i, val) {\r\n return (val || '') + options.codeStyle;\r\n });\r\n }\r\n\r\n // 动态设置样式\r\n var cssRules = [\r\n {\r\n selector: '>.layui-code-wrap>.layui-code-line{}',\r\n setValue: function(item, value) {\r\n item.style['padding-left'] = value + 'px';\r\n }\r\n },\r\n {\r\n selector: '>.layui-code-wrap>.layui-code-line>.layui-code-line-number{}',\r\n setValue: function(item, value) {\r\n item.style.width = value + 'px';\r\n }\r\n },\r\n {\r\n selector: '>.layui-code-ln-side{}',\r\n setValue: function(item, value) {\r\n item.style.width = value + 'px';\r\n }\r\n }\r\n ];\r\n\r\n // 生成初始 style 元素\r\n var styleElem = lay.style({\r\n target: othis[0],\r\n id: 'DF-code-'+ index,\r\n text: $.map($.map(cssRules, function(val){\r\n return val.selector;\r\n }), function(val, i) {\r\n return ['.layui-code-view[lay-code-index=\"'+ index + '\"]', val].join(' ');\r\n }).join('')\r\n })\r\n\r\n // 动态设置 code 布局\r\n var setCodeLayout = (function fn() {\r\n if (options.ln) {\r\n var multiLine = Math.floor(lines.length / 100);\r\n var lineElem = codeElem.children('.'+ CONST.ELEM_LINE);\r\n var width = lineElem.last().children('.'+ CONST.ELEM_LINE_NUM).outerWidth();\r\n\r\n othis.addClass(CONST.ELEM_LN_MODE);\r\n\r\n // 若超出 100 行\r\n if (multiLine && width > CONST.LINE_RAW_WIDTH) {\r\n lay.getStyleRules(styleElem, function(item, i) {\r\n try {\r\n cssRules[i].setValue(item, width);\r\n } catch(e) { }\r\n });\r\n }\r\n }\r\n\r\n return fn;\r\n })();\r\n\r\n // 创建 code header\r\n if (options.header) {\r\n var headerElem = $('
                            ');\r\n headerElem.html(options.title || options.text.code);\r\n othis.prepend(headerElem);\r\n }\r\n\r\n // 创建 code 区域固定条\r\n var elemFixbar = $('
                            ');\r\n\r\n // 若开启复制,且未开启预览,则单独生成复制图标\r\n if(options.copy && !options.preview){\r\n var copyElem = $(['',\r\n '',\r\n ''].join(''));\r\n\r\n // 点击复制\r\n copyElem.on('click', function(){\r\n tools.copy.event();\r\n });\r\n\r\n elemFixbar.append(copyElem);\r\n }\r\n\r\n // 创建 language marker\r\n if (options.langMarker) {\r\n elemFixbar.append('' + options.lang + '');\r\n }\r\n\r\n // 创建 about 自定义内容\r\n if (options.about) {\r\n elemFixbar.append(options.about);\r\n }\r\n\r\n // 生成 code fixbar\r\n othis.append(elemFixbar);\r\n\r\n // code 渲染完毕后的回调\r\n if (!options.preview) {\r\n setTimeout(function(){\r\n typeof options.done === 'function' && options.done({});\r\n },3);\r\n }\r\n\r\n // 所有实例渲染完毕后的回调\r\n if(options.elem.length === index + 1){\r\n typeof options.allDone === 'function' && options.allDone();\r\n }\r\n\r\n return ret;\r\n });\r\n});\r\n\r\n// 若为源码版,则自动加载该组件依赖的 css 文件\r\nif(!layui['layui.all']){\r\n layui.addcss('modules/code.css?v=6', 'skincodecss');\r\n}\r\n"]} \ No newline at end of file diff --git a/src/modules/table.js b/src/modules/table.js index 02071f61..ea5bf3d8 100644 --- a/src/modules/table.js +++ b/src/modules/table.js @@ -624,6 +624,11 @@ layui.define(['lay', 'laytpl', 'laypage', 'form', 'util'], function(exports){ var that = this var options = that.config + // 工具栏渲染完成回调 + var toolbarRenderComplete = function(){ + typeof options.toolbarRenderComplete === 'function' && options.toolbarRenderComplete(); + }; + // 添加工具栏左侧模板 var leftDefaultTemp = [ '
                            ', @@ -671,6 +676,8 @@ layui.define(['lay', 'laytpl', 'laypage', 'form', 'util'], function(exports){ }); } that.layTool.find('.layui-table-tool-self').html(iconElem.join('')); + + toolbarRenderComplete(); }; // 分页栏 @@ -1013,6 +1020,7 @@ layui.define(['lay', 'laytpl', 'laypage', 'form', 'util'], function(exports){ ); }; + opts = opts || {}; // 数据拉取前的回调