template-web.js
/*! art-template@4.13.1 for browser | https://github.com/aui/art-template */
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.template=t():e.template=t()}("undefined"!=typeof self?self:this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e["default"]}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=4)}([function(e,t,n){"use strict";var r=n(6),i=n(2),o=n(22),s=function(e,t){t.onerror(e,t);var n=function(){return"{Template Error}"};return n.mappings=[],n.sourcesContent=[],n},a=function u(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};"string"!=typeof e?t=e:t.source=e,t=i.$extend(t),e=t.source,!0===t.debug&&(t.cache=!1,t.minimize=!1,t.compileDebug=!0),t.compileDebug&&(t.minimize=!1),t.filename&&(t.filename=t.resolveFilename(t.filename,t));var n=t.filename,a=t.cache,c=t.caches;if(a&&n){var l=c.get(n);if(l)return l}if(!e)try{e=t.loader(n,t),t.source=e}catch(m){var f=new o({name:"CompileError",path:n,message:"template not found: "+m.message,stack:m.stack});if(t.bail)throw f;return s(f,t)}var p=void 0,h=new r(t);try{p=h.build()}catch(f){if(f=new o(f),t.bail)throw f;return s(f,t)}var d=function(e,n){try{return p(e,n)}catch(f){if(!t.compileDebug)return t.cache=!1,t.compileDebug=!0,u(t)(e,n);if(f=new o(f),t.bail)throw f;return s(f,t)()}};return d.mappings=p.mappings,d.sourcesContent=p.sourcesContent,d.toString=function(){return p.toString()},a&&n&&c.set(n,d),d};a.Compiler=r,e.exports=a},function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t["default"]=/((['"])(?:(?!\2|\\).|\\(?:\r\n|[\s\S]))*(\2)?|`(?:[^`\\$]|\\[\s\S]|\$(?!\{)|\$\{(?:[^{}]|\{[^}]*\}?)*\}?)*(`)?)|(\/\/.*)|(\/\*(?:[^*]|\*(?!\/))*(\*\/)?)|(\/(?!\*)(?:\[(?:(?![\]\\]).|\\.)*\]|(?![\/\]\\]).|\\.)+\/(?:(?!\s*(?:\b|[\u0080-\uFFFF$\\'"~({]|[+\-!](?!=)|\.?\d))|[gmiyu]{1,5}\b(?![\u0080-\uFFFF$\\]|\s*(?:[+\-*%&|^<>!=?({]|\/(?![\/*])))))|(0[xX][\da-fA-F]+|0[oO][0-7]+|0[bB][01]+|(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?)|((?!\d)(?:(?!\s)[$\w\u0080-\uFFFF]|\\u[\da-fA-F]{4}|\\u\{[\da-fA-F]+\})+)|(--|\+\+|&&|\|\||=>|\.{3}|(?:[+\-\/%&|^]|\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2})=?|[?~.,:;[\](){}])|(\s+)|(^$|[\s\S])/g,t.matchToToken=function(e){var t={type:"invalid",value:e[0]};return e[1]?(t.type="string",t.closed=!(!e[3]&&!e[4])):e[5]?t.type="comment":e[6]?(t.type="comment",t.closed=!!e[7]):e[8]?t.type="regex":e[9]?t.type="number":e[10]?t.type="name":e[11]?t.type="punctuator":e[12]&&(t.type="whitespace"),t}},function(e,t,n){"use strict";function r(){this.$extend=function(e){return e=e||{},o(e,e instanceof r?e:this)}}var i=n(10),o=n(12),s=n(13),a=n(14),u=n(15),c=n(16),l=n(17),f=n(18),p=n(19),h=n(21),d="undefined"==typeof window,m={source:null,filename:null,rules:[f,l],escape:!0,debug:!!d&&"production"!==process.env.NODE_ENV,bail:!0,cache:!0,minimize:!0,compileDebug:!1,resolveFilename:h,include:s,htmlMinifier:p,htmlMinifierOptions:{collapseWhitespace:!0,minifyCSS:!0,minifyJS:!0,ignoreCustomFragments:[]},onerror:a,loader:c,caches:u,root:"/",extname:".art",ignore:[],imports:i};r.prototype=m,e.exports=new r},function(e,t){},function(e,t,n){"use strict";var r=n(5),i=n(0),o=n(23),s=function(e,t){return t instanceof Object?r({filename:e},t):i({filename:e,source:t})};s.render=r,s.compile=i,s.defaults=o,e.exports=s},function(e,t,n){"use strict";var r=n(0),i=function(e,t,n){return r(e,n)(t)};e.exports=i},function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),a=n(7),u=n(9),c="$data",l="$imports",f="print",p="include",h="extend",d="block",m="$$out",v="$$line",g="$$blocks",y="$$slice",b="$$from",w="$$options",x=function(e,t){return Object.hasOwnProperty.call(e,t)},k=JSON.stringify,E=function(){function e(t){var n,s,a=this;o(this,e);var x=t.source,k=t.minimize,E=t.htmlMinifier;if(this.options=t,this.stacks=[],this.context=[],this.scripts=[],this.CONTEXT_MAP={},this.ignore=[c,l,w].concat(i(t.ignore)),this.internal=(n={},r(n,m,"''"),r(n,v,"[0,0]"),r(n,g,"arguments[1]||{}"),r(n,b,"null"),r(n,f,"function(){var s=''.concat.apply('',arguments);"+m+"+=s;return s}"),r(n,p,"function(src,data){var s="+w+".include(src,data||"+c+",arguments[2]||"+g+","+w+");"+m+"+=s;return s}"),r(n,h,"function(from){"+b+"=from}"),r(n,y,"function(c,p,s){p="+m+";"+m+"='';c();s="+m+";"+m+"=p+s;return s}"),r(n,d,"function(){var a=arguments,s;if(typeof a[0]==='function'){return "+y+"(a[0])}else if("+b+"){if(!"+g+"[a[0]]){"+g+"[a[0]]="+y+"(a[1])}else{"+m+"+="+g+"[a[0]]}}else{s="+g+"[a[0]];if(typeof s==='string'){"+m+"+=s}else{s="+y+"(a[1])}return s}}"),n),this.dependencies=(s={},r(s,f,[m]),r(s,p,[m,w,c,g]),r(s,h,[b,p]),r(s,d,[y,b,m,g]),s),this.importContext(m),t.compileDebug&&this.importContext(v),k)try{x=E(x,t)}catch(T){}this.source=x,this.getTplTokens(x,t.rules,this).forEach(function(e){e.type===u.TYPE_STRING?a.parseString(e):a.parseExpression(e)})}return s(e,[{key:"getTplTokens",value:function(){return u.apply(undefined,arguments)}},{key:"getEsTokens",value:function(e){return a(e)}},{key:"getVariables",value:function(e){var t=!1;return e.filter(function(e){return"whitespace"!==e.type&&"comment"!==e.type}).filter(function(e){return"name"===e.type&&!t||(t="punctuator"===e.type&&"."===e.value,!1)}).map(function(e){return e.value})}},{key:"importContext",value:function(e){var t=this,n="",r=this.internal,i=this.dependencies,o=this.ignore,s=this.context,a=this.options,u=a.imports,f=this.CONTEXT_MAP;x(f,e)||-1!==o.indexOf(e)||(x(r,e)?(n=r[e],x(i,e)&&i[e].forEach(function(e){return t.importContext(e)})):n="$escape"===e||"$each"===e||x(u,e)?l+"."+e:c+"."+e,f[e]=n,s.push({name:e,value:n}))}},{key:"parseString",value:function(e){var t=e.value;if(t){var n=m+"+="+k(t);this.scripts.push({source:t,tplToken:e,code:n})}}},{key:"parseExpression",value:function(e){var t=this,n=e.value,r=e.script,i=r.output,o=this.options.escape,s=r.code;i&&(s=!1===o||i===u.TYPE_RAW?m+"+="+r.code:m+"+=$escape("+r.code+")");var a=this.getEsTokens(s);this.getVariables(a).forEach(function(e){return t.importContext(e)}),this.scripts.push({source:n,tplToken:e,code:s})}},{key:"checkExpression",value:function(e){for(var t=[[/^\s*}[\w\W]*?{?[\s;]*$/,""],[/(^[\w\W]*?\([\w\W]*?(?:=>|\([\w\W]*?\))\s*{[\s;]*$)/,"$1})"],[/(^[\w\W]*?\([\w\W]*?\)\s*{[\s;]*$)/,"$1}"]],n=0;n<t.length;){if(t[n][0].test(e)){var r;e=(r=e).replace.apply(r,i(t[n]));break}n++}try{return new Function(e),!0}catch(o){return!1}}},{key:"build",value:function(){var e=this.options,t=this.context,n=this.scripts,r=this.stacks,i=this.source,o=e.filename,s=e.imports,a=[],f=x(this.CONTEXT_MAP,h),d=0,y=function(e,t){var n=t.line,i=t.start,o={generated:{line:r.length+d+1,column:1},original:{line:n+1,column:i+1}};return d+=e.split(/\n/).length-1,o},E=function(e){return e.replace(/^[\t ]+|[\t ]$/g,"")};r.push("function("+c+"){"),r.push("'use strict'"),r.push(c+"="+c+"||{}"),r.push("var "+t.map(function(e){return e.name+"="+e.value}).join(",")),e.compileDebug?(r.push("try{"),n.forEach(function(e){e.tplToken.type===u.TYPE_EXPRESSION&&r.push(v+"=["+[e.tplToken.line,e.tplToken.start].join(",")+"]"),a.push(y(e.code,e.tplToken)),r.push(E(e.code))}),r.push("}catch(error){"),r.push("throw {"+["name:'RuntimeError'","path:"+k(o),"message:error.message","line:"+v+"[0]+1","column:"+v+"[1]+1","source:"+k(i),"stack:error.stack"].join(",")+"}"),r.push("}")):n.forEach(function(e){a.push(y(e.code,e.tplToken)),r.push(E(e.code))}),f&&(r.push(m+"=''"),r.push(p+"("+b+","+c+","+g+")")),r.push("return "+m),r.push("}");var T=r.join("\n");try{var O=new Function(l,w,"return "+T)(s,e);return O.mappings=a,O.sourcesContent=[i],O}catch(P){for(var $=0,j=0,_=0,S=void 0;$<n.length;){var C=n[$];if(!this.checkExpression(C.code)){j=C.tplToken.line,_=C.tplToken.start,S=C.code;break}$++}throw{name:"CompileError",path:o,message:P.message,line:j+1,column:_+1,source:i,generated:S,stack:P.stack}}}}]),e}();E.CONSTS={DATA:c,IMPORTS:l,PRINT:f,INCLUDE:p,EXTEND:h,BLOCK:d,OPTIONS:w,OUT:m,LINE:v,BLOCKS:g,SLICE:y,FROM:b,ESCAPE:"$escape",EACH:"$each"},e.exports=E},function(e,t,n){"use strict";var r=n(8),i=n(1)["default"],o=n(1).matchToToken,s=function(e){return e.match(i).map(function(e){return i.lastIndex=0,o(i.exec(e))}).map(function(e){return"name"===e.type&&r(e.value)&&(e.type="keyword"),e})};e.exports=s},function(e,t,n){"use strict";var r={"abstract":!0,await:!0,"boolean":!0,"break":!0,"byte":!0,"case":!0,"catch":!0,"char":!0,"class":!0,"const":!0,"continue":!0,"debugger":!0,"default":!0,"delete":!0,"do":!0,"double":!0,"else":!0,"enum":!0,"export":!0,"extends":!0,"false":!0,"final":!0,"finally":!0,"float":!0,"for":!0,"function":!0,"goto":!0,"if":!0,"implements":!0,"import":!0,"in":!0,"instanceof":!0,"int":!0,"interface":!0,"let":!0,"long":!0,"native":!0,"new":!0,"null":!0,"package":!0,"private":!0,"protected":!0,"public":!0,"return":!0,"short":!0,"static":!0,"super":!0,"switch":!0,"synchronized":!0,"this":!0,"throw":!0,"transient":!0,"true":!0,"try":!0,"typeof":!0,"var":!0,"void":!0,"volatile":!0,"while":!0,"with":!0,"yield":!0};e.exports=function(e){return r.hasOwnProperty(e)}},function(e,t,n){"use strict";function r(e){var t=new String(e.value);return t.line=e.line,t.start=e.start,t.end=e.end,t}function i(e,t,n){this.type=e,this.value=t,this.script=null,n?(this.line=n.line+n.value.split(/\n/).length-1,this.line===n.line?this.start=n.end:this.start=n.value.length-n.value.lastIndexOf("\n")-1):(this.line=0,this.start=0),this.end=this.start+this.value.length}var o=function(e,t){for(var n=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{},o=[new i("string",e)],s=0;s<t.length;s++)for(var a=t[s],u=a.test.ignoreCase?"ig":"g",c=new RegExp(a.test.source,u),l=0;l<o.length;l++){var f=o[l],p=o[l-1];if("string"===f.type){for(var h=void 0,d=0,m=[],v=f.value;null!==(h=c.exec(v));)h.index>d&&(p=new i("string",v.slice(d,h.index),p),m.push(p)),p=new i("expression",h[0],p),h[0]=r(p),p.script=a.use.apply(n,h),m.push(p),d=h.index+h[0].length;d<v.length&&(p=new i("string",v.slice(d),p),m.push(p)),o.splice.apply(o,[l,1].concat(m)),l+=m.length-1}}return o};o.TYPE_STRING="string",o.TYPE_EXPRESSION="expression",o.TYPE_RAW="raw",o.TYPE_ESCAPE="escape",e.exports=o},function(e,t,n){"use strict";(function(t){function n(e){return"string"!=typeof e&&(e=e===undefined||null===e?"":"function"==typeof e?n(e.call(e)):JSON.stringify(e)),e}function r(e){var t=""+e,n=s.exec(t);if(!n)return e;var r="",i=void 0,o=void 0,a=void 0;for(i=n.index,o=0;i<t.length;i++){switch(t.charCodeAt(i)){case 34:a=""";break;case 38:a="&";break;case 39:a="'";break;case 60:a="<";break;case 62:a=">";break;default:continue}o!==i&&(r+=t.substring(o,i)),o=i+1,r+=a}return o!==i?r+t.substring(o,i):r}/*! art-template@runtime | https://github.com/aui/art-template */
var i="undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==t?t:{},o=Object.create(i),s=/["&'<>]/;o.$escape=function(e){return r(n(e))},o.$each=function(e,t){if(Array.isArray(e))for(var n=0,r=e.length;n<r;n++)t(e[n],n);else for(var i in e)t(e[i],i)},e.exports=o}).call(t,n(11))},function(e,t){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(r){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){"use strict";var r=Object.prototype.toString,i=function(e){return null===e?"Null":r.call(e).slice(8,-1)},o=function s(e,t){var n=void 0,r=i(e);if("Object"===r?n=Object.create(t||{}):"Array"===r&&(n=[].concat(t||[])),n){for(var o in e)Object.hasOwnProperty.call(e,o)&&(n[o]=s(e[o],n[o]));return n}return e};e.exports=o},function(e,t,n){"use strict";var r=function(e,t,r,i){var o=n(0);return i=i.$extend({filename:i.resolveFilename(e,i),bail:!0,source:null}),o(i)(t,r)};e.exports=r},function(e,t,n){"use strict";var r=function(e){console.error(e.name,e.message)};e.exports=r},function(e,t,n){"use strict";var r={__data:Object.create(null),set:function(e,t){this.__data[e]=t},get:function(e){return this.__data[e]},reset:function(){this.__data={}}};e.exports=r},function(e,t,n){"use strict";var r="undefined"==typeof window,i=function(e){if(r){return n(3).readFileSync(e,"utf8")}var t=document.getElementById(e);return t.value||t.innerHTML};e.exports=i},function(e,t,n){"use strict";var r={test:/{{([@#]?)[ \t]*(\/?)([\w\W]*?)[ \t]*}}/,use:function(e,t,n,i){var o=this,s=o.options,a=o.getEsTokens(i),u=a.map(function(e){return e.value}),c={},l=void 0,f=!!t&&"raw",p=n+u.shift(),h=function(t,n){console.warn((s.filename||"anonymous")+":"+(e.line+1)+":"+(e.start+1)+"\nTemplate upgrade: {{"+t+"}} -> {{"+n+"}}")};switch("#"===t&&h("#value","@value"),p){case"set":i="var "+u.join("").trim();break;case"if":i="if("+u.join("").trim()+"){";break;case"else":var d=u.indexOf("if");~d?(u.splice(0,d+1),i="}else if("+u.join("").trim()+"){"):i="}else{";break;case"/if":i="}";break;case"each":l=r._split(a),l.shift(),"as"===l[1]&&(h("each object as value index","each object value index"),l.splice(1,1));i="$each("+(l[0]||"$data")+",function("+(l[1]||"$value")+","+(l[2]||"$index")+"){";break;case"/each":i="})";break;case"block":l=r._split(a),l.shift(),i="block("+l.join(",").trim()+",function(){";break;case"/block":i="})";break;case"echo":p="print",h("echo value","value");case"print":case"include":case"extend":if(0!==u.join("").trim().indexOf("(")){l=r._split(a),l.shift(),i=p+"("+l.join(",")+")";break}default:if(~u.indexOf("|")){var m=a.reduce(function(e,t){var n=t.value,r=t.type;return"|"===n?e.push([]):"whitespace"!==r&&"comment"!==r&&(e.length||e.push([]),":"===n&&1===e[e.length-1].length?h("value | filter: argv","value | filter argv"):e[e.length-1].push(t)),e},[]).map(function(e){return r._split(e)});i=m.reduce(function(e,t){var n=t.shift();return t.unshift(e),"$imports."+n+"("+t.join(",")+")"},m.shift().join(" ").trim())}f=f||"escape"}return c.code=i,c.output=f,c},_split:function(e){e=e.filter(function(e){var t=e.type;return"whitespace"!==t&&"comment"!==t});for(var t=0,n=e.shift(),r=/\]|\)/,i=[[n]];t<e.length;){var o=e[t];"punctuator"===o.type||"punctuator"===n.type&&!r.test(n.value)?i[i.length-1].push(o):i.push([o]),n=o,t++}return i.map(function(e){return e.map(function(e){return e.value}).join("")})}};e.exports=r},function(e,t,n){"use strict";var r={test:/<%(#?)((?:==|=#|[=-])?)[ \t]*([\w\W]*?)[ \t]*(-?)%>/,use:function(e,t,n,r){return n={"-":"raw","=":"escape","":!1,"==":"raw","=#":"raw"}[n],t&&(r="/*"+r+"*/",n=!1),{code:r,output:n}}};e.exports=r},function(e,t,n){"use strict";function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}var i="undefined"==typeof window,o=function(e,t){if(i){var o,s=n(20).minify,a=t.htmlMinifierOptions,u=t.rules.map(function(e){return e.test});(o=a.ignoreCustomFragments).push.apply(o,r(u)),e=s(e,a)}return e};e.exports=o},function(e,t){!function(e){e.noop=function(){}}("object"==typeof e&&"object"==typeof e.exports?e.exports:window)},function(e,t,n){"use strict";var r="undefined"==typeof window,i=/^\.+\//,o=function(e,t){if(r){var o=n(3),s=t.root,a=t.extname;if(i.test(e)){var u=t.filename,c=!u||e===u,l=c?s:o.dirname(u);e=o.resolve(l,e)}else e=o.resolve(s,e);o.extname(e)||(e+=a)}return e};e.exports=o},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function s(e){var t=e.name,n=e.source,r=e.path,i=e.line,o=e.column,s=e.generated,a=e.message;if(!n)return a;var u=n.split(/\n/),c=Math.max(i-3,0),l=Math.min(u.length,i+3),f=u.slice(c,l).map(function(e,t){var n=t+c+1;return(n===i?" >> ":" ")+n+"| "+e}).join("\n");return(r||"anonymous")+":"+i+":"+o+"\n"+f+"\n\n"+t+": "+a+(s?"\n generated: "+s:"")}var a=function(e){function t(e){r(this,t);var n=i(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e.message));return n.name="TemplateError",n.message=s(e),Error.captureStackTrace&&Error.captureStackTrace(n,n.constructor),n}return o(t,e),t}(Error);e.exports=a},function(e,t,n){"use strict";e.exports=n(2)}])});
template.js
/*!
* template_js 2.3.0 (https://github.com/yanhaijing/template)
* API https://github.com/yanhaijing/template/blob/master/doc/api.md
* Copyright 2017-2019 yanhaijing. All Rights Reserved
* Licensed under MIT (https://github.com/yanhaijing/template/blob/master/LICENSE)
*/
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
typeof define === 'function' && define.amd ? define(factory) :
(global.template = factory());
}(this, (function () { 'use strict';
/*!
* @jsmini/type 0.9.2 (https://github.com/jsmini/type)
* API https://github.com/jsmini/type/blob/master/doc/api.md
* Copyright 2017-2019 jsmini. All Rights Reserved
* Licensed under MIT (https://github.com/jsmini/type/blob/master/LICENSE)
*/
function _typeof(obj) {
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
_typeof = function (obj) {
return typeof obj;
};
} else {
_typeof = function (obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
}
return _typeof(obj);
}
var toString = Object.prototype.toString;
function type(x) {
var strict = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
strict = !!strict; // fix typeof null = object
if (x === null) {
return 'null';
}
var t = _typeof(x); // 严格模式 区分NaN和number
if (strict && t === 'number' && isNaN(x)) {
return 'nan';
} // number string boolean undefined symbol
if (t !== 'object') {
return t;
}
var cls;
var clsLow;
try {
cls = toString.call(x).slice(8, -1);
clsLow = cls.toLowerCase();
} catch (e) {
// ie下的 activex对象
return 'object';
}
if (clsLow !== 'object') {
if (strict) {
// 区分NaN和new Number
if (clsLow === 'number' && isNaN(x)) {
return 'NaN';
} // 区分 String() 和 new String()
if (clsLow === 'number' || clsLow === 'boolean' || clsLow === 'string') {
return cls;
}
}
return clsLow;
}
if (x.constructor == Object) {
return clsLow;
} // Object.create(null)
try {
// __proto__ 部分早期firefox浏览器
if (Object.getPrototypeOf(x) === null || x.__proto__ === null) {
return 'object';
}
} catch (e) {} // ie下无Object.getPrototypeOf会报错
// function A() {}; new A
try {
var cname = x.constructor.name;
if (typeof cname === 'string') {
return cname;
}
} catch (e) {} // 无constructor
// function A() {}; A.prototype.constructor = null; new A
return 'unknown';
}
/*!
* @jsmini/is 0.8.5 (https://github.com/jsmini/is)
* API https://github.com/jsmini/is/blob/master/doc/api.md
* Copyright 2017-2019 jsmini. All Rights Reserved
* Licensed under MIT (https://github.com/jsmini/is/blob/master/LICENSE)
*/
function isObject(x) {
return type(x) === 'object';
}
function isFunction(x) {
return type(x) === 'function';
}
var isArray = isFunction(Array.isArray) ? Array.isArray : function isArray(x) {
return type(x) === 'array';
};
/*!
* @jsmini/extend 0.3.3 (https://github.com/jsmini/extend)
* API https://github.com/jsmini/extend/blob/master/doc/api.md
* Copyright 2017-2019 jsmini. All Rights Reserved
* Licensed under MIT (https://github.com/jsmini/extend/blob/master/LICENSE)
*/
function hasOwnProp(obj, key) {
return Object.prototype.hasOwnProperty.call(obj, key);
}
var assign = isFunction(Object.assign) ? Object.assign : function assign(target) {
if (!isObject(target)) {
throw new TypeError('assign first param must is object');
}
for (var i = 0; i < (arguments.length <= 1 ? 0 : arguments.length - 1); i++) {
var source = i + 1 < 1 || arguments.length <= i + 1 ? undefined : arguments[i + 1];
if (isObject(source)) {
for (var key in source) {
if (hasOwnProp(source, key)) {
target[key] = source[key];
}
}
}
}
return target;
};
function extend() {
return assign.apply(void 0, arguments);
}
function extendDeep(target) {
// 深拷贝
if (!isObject(target) && !isArray(target)) {
throw new TypeError('extend target param must is object');
}
for (var i = 0; i < (arguments.length <= 1 ? 0 : arguments.length - 1); i++) {
var source = i + 1 < 1 || arguments.length <= i + 1 ? undefined : arguments[i + 1];
for (var name in source) {
var src = target[name];
var copy = source[name]; //避免无限循环
if (target === copy) {
continue;
} // 非可枚举属性
if (!hasOwnProp(source, name)) {
continue;
}
var copyIsArr = void 0;
if (copy && (isObject(copy) || (copyIsArr = isArray(copy)))) {
var clone = void 0;
if (copyIsArr) {
clone = src && isArray(src) ? src : [];
} else {
clone = src && isObject(src) ? src : {};
}
target[name] = extendDeep(clone, copy);
} else if (typeof copy !== 'undefined') {
target[name] = copy;
}
}
}
return target;
}
/*!
* @templatejs/parser 2.3.0 (https://github.com/templatejs/parser)
* API https://github.com/templatejs/parser/blob/master/doc/api.md
* Copyright 2017-2019 templatejs. All Rights Reserved
* Licensed under MIT (https://github.com/templatejs/parser/blob/master/LICENSE)
*/
var defaultOpt = { sTag: '<%', eTag: '%>', escape: true };
function parsehtml(line) {
// 单双引号转义
line = String(line).replace(/('|")/g, '\\$1');
var lineList = line.split(/\r\n|\n/);
var code = '';
for (var i = 0; i < lineList.length; i++) {
code += ';__code__ += ("' + lineList[i] + (i === lineList.length - 1 ? '")\n' : '\\n")\n');
}
return code;
}
function parsejs(line, escape) {
if (escape === void 0) { escape = true; }
line = String(line);
escape = !!escape;
//var reg = /^(:?)(.*?)=(.*)$/;
var reg = /^(?:=|(:.*?)=)(.*)$/;
var html;
var arr;
var modifier;
// = := :*=
// :h=123 [':h=123', 'h', '123']
if (arr = reg.exec(line)) {
html = arr[2]; // 输出
if (arr[1]) {
// :开头
modifier = arr[1].slice(1);
}
else {
// = 开头
modifier = escape ? 'h' : '';
}
return ';__code__ += __modifierMap__["' + modifier + '"](typeof (' + html + ') !== "undefined" ? (' + html + ') : "")\n';
}
//原生js
return ';' + line + '\n';
}
function parse(tpl, opt) {
if (opt === void 0) { opt = defaultOpt; }
var _a = extendDeep({}, defaultOpt, opt), sTag = _a.sTag, eTag = _a.eTag, escape = _a.escape;
tpl = String(tpl);
var code = '';
var tokens = tpl.split(sTag);
for (var i = 0, len = tokens.length; i < len; i++) {
var token = tokens[i].split(eTag);
if (token.length === 1) {
// html
// <div></div>
code += parsehtml(token[0]);
}
else {
// js
// <%= a%>
code += parsejs(token[0], escape);
if (token[1]) {
// js + html
// <%if () {%> html <%}%>
code += parsehtml(token[1]);
}
}
}
return code;
}
/*!
* @templatejs/runtime 2.3.0 (https://github.com/yanhaijing/runtime)
* API https://github.com/yanhaijing/runtime/blob/master/doc/api.md
* Copyright 2017-2019 yanhaijing. All Rights Reserved
* Licensed under MIT (https://github.com/yanhaijing/runtime/blob/master/LICENSE)
*/
var o = {
sTag: '<%',
eTag: '%>',
compress: false,
escape: true,
error: function () { } //错误回调
};
function clone() {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
return extend.apply(null, [{}].concat(args));
}
function nothing(param) {
return param;
}
function encodeHTML(source) {
return String(source)
.replace(/&/g, '&')
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/\\/g, '\')
.replace(/"/g, '"')
.replace(/'/g, ''');
}
var functionMap = {}; //内部函数对象
//修饰器前缀
var modifierMap = {
'': function (param) { return nothing(param); },
'h': function (param) { return encodeHTML(param); },
'u': function (param) { return encodeURI(param); }
};
function consoleAdapter(cmd, msg) {
typeof console !== 'undefined' && console[cmd] && console[cmd](msg);
}
function runtime() { }
runtime.config = function (option) {
if (type(option) === 'object') {
o = extend(o, option);
}
return clone(o);
};
runtime.compress = function (html) {
return String(html).replace(/\s+/g, ' ').replace(/<!--[\w\W]*?-->/g, '');
};
runtime.handelError = function handelError(e) {
var message = 'template.js error\n\n';
for (var key in e) {
message += '<' + key + '>\n' + e[key] + '\n\n';
}
message += '<message>\n' + e.message + '\n\n';
consoleAdapter('error', message);
o.error(e);
function error() {
return 'template.js error';
}
error.toString = function () {
return '__code__ = "template.js error"';
};
return error;
};
runtime.registerFunction = function (name, fn) {
if (typeof name !== 'string') {
return clone(functionMap);
}
if (type(fn) !== 'function') {
return functionMap[name];
}
return functionMap[name] = fn;
};
runtime.unregisterFunction = function (name) {
if (typeof name !== 'string') {
return false;
}
delete functionMap[name];
return true;
};
runtime.registerModifier = function (name, fn) {
if (typeof name !== 'string') {
return clone(modifierMap);
}
if (type(fn) !== 'function') {
return modifierMap[name];
}
return modifierMap[name] = fn;
};
runtime.unregisterModifier = function (name) {
if (typeof name !== 'string') {
return false;
}
delete modifierMap[name];
return true;
};
runtime.encodeHTML = encodeHTML;
runtime.functionMap = functionMap;
runtime.modifierMap = modifierMap;
runtime.o = o;
var encodeHTML$1 = runtime.encodeHTML, compress = runtime.compress, handelError = runtime.handelError, o$1 = runtime.o, functionMap$1 = runtime.functionMap, modifierMap$1 = runtime.modifierMap;
function clone$1() {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
return extend.apply(null, [{}].concat(args));
}
function compiler(tpl, opt) {
if (opt === void 0) { opt = o$1; }
var mainCode = parse(tpl, opt);
var headerCode = '\n' +
' var html = (function (__data__, __modifierMap__) {\n' +
' var __str__ = "", __code__ = "";\n' +
' for(var key in __data__) {\n' +
' __str__+=("var " + key + "=__data__[\'" + key + "\'];");\n' +
' }\n' +
' eval(__str__);\n\n';
var footerCode = '\n' +
' ;return __code__;\n' +
' }(__data__, __modifierMap__));\n' +
' return html;\n';
var code = headerCode + mainCode + footerCode;
code = code.replace(/[\r]/g, ' '); // ie 7 8 会报错,不知道为什么
try {
var Render = new Function('__data__', '__modifierMap__', code);
Render.toString = function () {
return mainCode;
};
return Render;
}
catch (e) {
e.temp = 'function anonymous(__data__, __modifierMap__) {' + code + '}';
throw e;
}
}
function compile(tpl, opt) {
if (opt === void 0) { opt = o$1; }
opt = clone$1(o$1, opt);
try {
var Render = compiler(tpl, opt);
}
catch (e) {
e.name = 'CompileError';
e.tpl = tpl;
e.render = e.temp;
delete e.temp;
return handelError(e);
}
function render(data) {
data = clone$1(functionMap$1, data);
try {
var html = Render(data, modifierMap$1);
html = opt.compress ? compress(html) : html;
return html;
}
catch (e) {
e.name = 'RenderError';
e.tpl = tpl;
e.render = Render.toString();
return handelError(e)();
}
}
render.toString = function () {
return Render.toString();
};
return render;
}
function template(tpl, data) {
if (typeof tpl !== 'string') {
return '';
}
var fn = compile(tpl);
if (type(data) !== 'object') {
return fn;
}
return fn(data);
}
template.config = function (option) {
return runtime.config(option);
};
template.registerFunction = function (name, fn) {
return runtime.registerFunction(name, fn);
};
template.unregisterFunction = function (name) {
return runtime.unregisterFunction(name);
};
template.registerModifier = function (name, fn) {
return runtime.registerModifier(name, fn);
};
template.unregisterModifier = function (name) {
return runtime.unregisterModifier(name);
};
// 兼容runtime, 预编译插件可以引用runtime,也可以引用template
template.encodeHTML = encodeHTML$1;
template.compress = compress;
template.handelError = handelError;
template.functionMap = functionMap$1;
template.modifierMap = modifierMap$1;
// 兼容旧版本
template.__encodeHTML = encodeHTML$1;
template.__compress = compress;
template.__handelError = handelError;
template.__compile = compile;
return template;
})));
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
body{
width: 100%;
margin: 0;
padding: 0;
box-sizing: border-box;
}
.container{
width: 100%;
}
#content{
width: 100%;
display: flex;
flex-direction: row;
flex-wrap: wrap;
padding: 10px;
box-sizing: border-box;
align-items: center;
}
.name-box{
position: relative;
width: 21%;
margin-top: 5%;
text-align: center;
line-height: 60px;
font-size: 30rpx;
height: 60px;
font-weight: bold;
background-color: #acd0e4;
margin: 2%;
box-sizing: border-box;
color: #fff;
}
.sort{
width: 150px;
height: 50px;
text-align: center;
line-height: 50px;
background-color: #4b5692;
margin: auto;
margin-top: 15px;
color: #fff;
}
.sort-content{
width: 100%;
display: flex;
justify-content: space-around;
margin-top: 25px;
color: #fff;
}
#sort-left,#sort-right{
width:100px;
text-align: center;
}
.left-box,.right-box{
width: 100px;
height: 50px;
background-color: #e4adc6;
margin-bottom: 10px;
line-height: 50px;
}
</style>
</head>
<body>
<div class="container">
<div id="content"></div>
<div class="sort" id="sort">分组</div>
<div class="sort-content">
<div id="sort-left"></div>
<div id="sort-right"></div>
</div>
</div>
<script id="data-content" type="text/html">
{{each data item index}}
<div class="name-box">{{item.name}}</div>
{{/each}}
</script>
<script id="left-content" type="text/html">
{{each data item index}}
<div class="left-box">{{item.name}}</div>
{{/each}}
</script>
<script id="right-content" type="text/html">
{{each data item index}}
<div class="right-box">{{item.name}}</div>
{{/each}}
</script>
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript" src="./template.js"></script>
<script type="text/javascript" src="./template-web.js"></script>
<script>
var listall=[
{name:'栾云平'},{name:'高峰'},{name:'秦宵贤'},{name:'尚九熙'},{name:'张鹤伦'},{name:'周九良'},{name:'孟鹤堂'},
{name:'张云雷'},{name:'杨九郎'},{name:'李九春'}
];
var html = template('data-content', {data:listall});
document.getElementById('content').innerHTML = html;
var sort = document.getElementById('sort')
sort.addEventListener('click',function(){
var listall=[
{name:'栾云平'},{name:'高峰'},{name:'秦宵贤'},{name:'尚九熙'},{name:'张鹤伦'},{name:'周九良'},{name:'孟鹤堂'},
{name:'张云雷'},{name:'杨九郎'},{name:'李九春'}
];
console.log('listall',listall)
var morelist=changelist(listall,2);
var listLeft = morelist[0]
var listright = morelist[1]
console.log(listLeft,listright)
var html1 = template('left-content', {data:listLeft});
document.getElementById('sort-left').innerHTML = html1;
var html2 = template('right-content', {data:listright});
document.getElementById('sort-right').innerHTML = html2;
})
/*
*
* 解决数组中对象随机分组问题
* list:要分组的数组
* num:分成的组数
* */
function changelist(list,num) {
console.log(list,num)
var n=list.length-1;//获取数组下标的上限
var length=n/num;//获取分组后单组的长度
var list1=list,list2=[];
console.log(n,length)
for(var i=0;i<num;i++){//根据分组数,确定遍历次数
var newlist=[];
for(var j=0;j<length;j++){
var id=Math.ceil(Math.random(0,list1.length-1)*list1.length-1);//获取下标范围内的随机数
newlist.push(list1[id]);//将获取的对象放入定义的变量数组中
list1.splice(id,1);//从数组中清除当前项
}
list2.push(newlist);//将变量数组放入结果组数中
console.log(list2)
}
return list2;
}
</script>
</body>
</html>