chore:文件夹的变动
Showing
92 changed files
with
0 additions
and
17807 deletions
staticLib/amazeui/DEVONtech_storage
deleted
100644 → 0
No preview for this file type
This diff could not be displayed because it is too large.
| 1 | /*! Amaze UI v2.7.2 ~ IE8 Fucker | by Amaze UI Team | (c) 2016 AllMobilize, Inc. | Licensed under MIT | 2016-08-17T16:17:24+0800 */ | ||
| 2 | !function(e,t){"use strict";"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.returnExports=t()}(this,function(){var e,t,n=Array,r=n.prototype,o=Object,i=o.prototype,a=Function,c=a.prototype,s=String,u=s.prototype,l=Number,f=l.prototype,p=r.slice,h=r.splice,d=r.push,y=r.unshift,g=r.concat,v=r.join,b=c.call,m=c.apply,w=Math.max,O=Math.min,T=i.toString,j="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag,x=Function.prototype.toString,E=/^\s*class /,S=function(e){try{var t=x.call(e),n=t.replace(/\/\/.*\n/g,""),r=n.replace(/\/\*[.\s\S]*\*\//g,""),o=r.replace(/\n/gm," ").replace(/ {2}/g," ");return E.test(o)}catch(i){return!1}},D=function(e){try{return!S(e)&&(x.call(e),!0)}catch(t){return!1}},_="[object Function]",M="[object GeneratorFunction]",e=function(e){if(!e)return!1;if("function"!=typeof e&&"object"!=typeof e)return!1;if(j)return D(e);if(S(e))return!1;var t=T.call(e);return t===_||t===M},P=RegExp.prototype.exec,I=function(e){try{return P.call(e),!0}catch(t){return!1}},C="[object RegExp]";t=function(e){return"object"==typeof e&&(j?I(e):T.call(e)===C)};var F,N=String.prototype.valueOf,k=function(e){try{return N.call(e),!0}catch(t){return!1}},z="[object String]";F=function(e){return"string"==typeof e||"object"==typeof e&&(j?k(e):T.call(e)===z)};var R=o.defineProperty&&function(){try{var e={};o.defineProperty(e,"x",{enumerable:!1,value:e});for(var t in e)return!1;return e.x===e}catch(n){return!1}}(),$=function(e){var t;return t=R?function(e,t,n,r){!r&&t in e||o.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:!0,value:n})}:function(e,t,n,r){!r&&t in e||(e[t]=n)},function(n,r,o){for(var i in r)e.call(r,i)&&t(n,i,r[i],o)}}(i.hasOwnProperty),U=function(e){var t=typeof e;return null===e||"object"!==t&&"function"!==t},A=l.isNaN||function(e){return e!==e},L={ToInteger:function(e){var t=+e;return A(t)?t=0:0!==t&&t!==1/0&&t!==-(1/0)&&(t=(t>0||-1)*Math.floor(Math.abs(t))),t},ToPrimitive:function(t){var n,r,o;if(U(t))return t;if(r=t.valueOf,e(r)&&(n=r.call(t),U(n)))return n;if(o=t.toString,e(o)&&(n=o.call(t),U(n)))return n;throw new TypeError},ToObject:function(e){if(null==e)throw new TypeError("can't convert "+e+" to object");return o(e)},ToUint32:function(e){return e>>>0}},X=function(){};$(c,{bind:function(t){var n=this;if(!e(n))throw new TypeError("Function.prototype.bind called on incompatible "+n);for(var r,i=p.call(arguments,1),c=function(){if(this instanceof r){var e=m.call(n,this,g.call(i,p.call(arguments)));return o(e)===e?e:this}return m.call(n,t,g.call(i,p.call(arguments)))},s=w(0,n.length-i.length),u=[],l=0;l<s;l++)d.call(u,"$"+l);return r=a("binder","return function ("+v.call(u,",")+"){ return binder.apply(this, arguments); }")(c),n.prototype&&(X.prototype=n.prototype,r.prototype=new X,X.prototype=null),r}});var B=b.bind(i.hasOwnProperty),G=b.bind(i.toString),J=b.bind(p),q=m.bind(p),Z=b.bind(u.slice),H=b.bind(u.split),W=b.bind(u.indexOf),Y=b.bind(d),Q=b.bind(i.propertyIsEnumerable),V=b.bind(r.sort),K=n.isArray||function(e){return"[object Array]"===G(e)},ee=1!==[].unshift(0);$(r,{unshift:function(){return y.apply(this,arguments),this.length}},ee),$(n,{isArray:K});var te=o("a"),ne="a"!==te[0]||!(0 in te),re=function(e){var t=!0,n=!0,r=!1;if(e)try{e.call("foo",function(e,n,r){"object"!=typeof r&&(t=!1)}),e.call([1],function(){"use strict";n="string"==typeof this},"x")}catch(o){r=!0}return!!e&&!r&&t&&n};$(r,{forEach:function(t){var n,r=L.ToObject(this),o=ne&&F(this)?H(this,""):r,i=-1,a=L.ToUint32(o.length);if(arguments.length>1&&(n=arguments[1]),!e(t))throw new TypeError("Array.prototype.forEach callback must be a function");for(;++i<a;)i in o&&("undefined"==typeof n?t(o[i],i,r):t.call(n,o[i],i,r))}},!re(r.forEach)),$(r,{map:function(t){var r,o=L.ToObject(this),i=ne&&F(this)?H(this,""):o,a=L.ToUint32(i.length),c=n(a);if(arguments.length>1&&(r=arguments[1]),!e(t))throw new TypeError("Array.prototype.map callback must be a function");for(var s=0;s<a;s++)s in i&&("undefined"==typeof r?c[s]=t(i[s],s,o):c[s]=t.call(r,i[s],s,o));return c}},!re(r.map)),$(r,{filter:function(t){var n,r,o=L.ToObject(this),i=ne&&F(this)?H(this,""):o,a=L.ToUint32(i.length),c=[];if(arguments.length>1&&(r=arguments[1]),!e(t))throw new TypeError("Array.prototype.filter callback must be a function");for(var s=0;s<a;s++)s in i&&(n=i[s],("undefined"==typeof r?t(n,s,o):t.call(r,n,s,o))&&Y(c,n));return c}},!re(r.filter)),$(r,{every:function(t){var n,r=L.ToObject(this),o=ne&&F(this)?H(this,""):r,i=L.ToUint32(o.length);if(arguments.length>1&&(n=arguments[1]),!e(t))throw new TypeError("Array.prototype.every callback must be a function");for(var a=0;a<i;a++)if(a in o&&!("undefined"==typeof n?t(o[a],a,r):t.call(n,o[a],a,r)))return!1;return!0}},!re(r.every)),$(r,{some:function(t){var n,r=L.ToObject(this),o=ne&&F(this)?H(this,""):r,i=L.ToUint32(o.length);if(arguments.length>1&&(n=arguments[1]),!e(t))throw new TypeError("Array.prototype.some callback must be a function");for(var a=0;a<i;a++)if(a in o&&("undefined"==typeof n?t(o[a],a,r):t.call(n,o[a],a,r)))return!0;return!1}},!re(r.some));var oe=!1;r.reduce&&(oe="object"==typeof r.reduce.call("es5",function(e,t,n,r){return r})),$(r,{reduce:function(t){var n=L.ToObject(this),r=ne&&F(this)?H(this,""):n,o=L.ToUint32(r.length);if(!e(t))throw new TypeError("Array.prototype.reduce callback must be a function");if(0===o&&1===arguments.length)throw new TypeError("reduce of empty array with no initial value");var i,a=0;if(arguments.length>=2)i=arguments[1];else for(;;){if(a in r){i=r[a++];break}if(++a>=o)throw new TypeError("reduce of empty array with no initial value")}for(;a<o;a++)a in r&&(i=t(i,r[a],a,n));return i}},!oe);var ie=!1;r.reduceRight&&(ie="object"==typeof r.reduceRight.call("es5",function(e,t,n,r){return r})),$(r,{reduceRight:function(t){var n=L.ToObject(this),r=ne&&F(this)?H(this,""):n,o=L.ToUint32(r.length);if(!e(t))throw new TypeError("Array.prototype.reduceRight callback must be a function");if(0===o&&1===arguments.length)throw new TypeError("reduceRight of empty array with no initial value");var i,a=o-1;if(arguments.length>=2)i=arguments[1];else for(;;){if(a in r){i=r[a--];break}if(--a<0)throw new TypeError("reduceRight of empty array with no initial value")}if(a<0)return i;do a in r&&(i=t(i,r[a],a,n));while(a--);return i}},!ie);var ae=r.indexOf&&[0,1].indexOf(1,2)!==-1;$(r,{indexOf:function(e){var t=ne&&F(this)?H(this,""):L.ToObject(this),n=L.ToUint32(t.length);if(0===n)return-1;var r=0;for(arguments.length>1&&(r=L.ToInteger(arguments[1])),r=r>=0?r:w(0,n+r);r<n;r++)if(r in t&&t[r]===e)return r;return-1}},ae);var ce=r.lastIndexOf&&[0,1].lastIndexOf(0,-3)!==-1;$(r,{lastIndexOf:function(e){var t=ne&&F(this)?H(this,""):L.ToObject(this),n=L.ToUint32(t.length);if(0===n)return-1;var r=n-1;for(arguments.length>1&&(r=O(r,L.ToInteger(arguments[1]))),r=r>=0?r:n-Math.abs(r);r>=0;r--)if(r in t&&e===t[r])return r;return-1}},ce);var se=function(){var e=[1,2],t=e.splice();return 2===e.length&&K(t)&&0===t.length}();$(r,{splice:function(e,t){return 0===arguments.length?[]:h.apply(this,arguments)}},!se);var ue=function(){var e={};return r.splice.call(e,0,0,1),1===e.length}();$(r,{splice:function(e,t){if(0===arguments.length)return[];var n=arguments;return this.length=w(L.ToInteger(this.length),0),arguments.length>0&&"number"!=typeof t&&(n=J(arguments),n.length<2?Y(n,this.length-e):n[1]=L.ToInteger(t)),h.apply(this,n)}},!ue);var le=function(){var e=new n(1e5);return e[8]="x",e.splice(1,1),7===e.indexOf("x")}(),fe=function(){var e=256,t=[];return t[e]="a",t.splice(e+1,0,"b"),"a"===t[e]}();$(r,{splice:function(e,t){for(var n,r=L.ToObject(this),o=[],i=L.ToUint32(r.length),a=L.ToInteger(e),c=a<0?w(i+a,0):O(a,i),u=O(w(L.ToInteger(t),0),i-c),l=0;l<u;)n=s(c+l),B(r,n)&&(o[l]=r[n]),l+=1;var f,p=J(arguments,2),h=p.length;if(h<u){l=c;for(var d=i-u;l<d;)n=s(l+u),f=s(l+h),B(r,n)?r[f]=r[n]:delete r[f],l+=1;l=i;for(var y=i-u+h;l>y;)delete r[l-1],l-=1}else if(h>u)for(l=i-u;l>c;)n=s(l+u-1),f=s(l+h-1),B(r,n)?r[f]=r[n]:delete r[f],l-=1;l=c;for(var g=0;g<p.length;++g)r[l]=p[g],l+=1;return r.length=i-u+h,o}},!le||!fe);var pe,he=r.join;try{pe="1,2,3"!==Array.prototype.join.call("123",",")}catch(de){pe=!0}pe&&$(r,{join:function(e){var t="undefined"==typeof e?",":e;return he.call(F(this)?H(this,""):this,t)}},pe);var ye="1,2"!==[1,2].join(void 0);ye&&$(r,{join:function(e){var t="undefined"==typeof e?",":e;return he.call(this,t)}},ye);var ge=function(e){for(var t=L.ToObject(this),n=L.ToUint32(t.length),r=0;r<arguments.length;)t[n+r]=arguments[r],r+=1;return t.length=n+r,n+r},ve=function(){var e={},t=Array.prototype.push.call(e,void 0);return 1!==t||1!==e.length||"undefined"!=typeof e[0]||!B(e,0)}();$(r,{push:function(e){return K(this)?d.apply(this,arguments):ge.apply(this,arguments)}},ve);var be=function(){var e=[],t=e.push(void 0);return 1!==t||1!==e.length||"undefined"!=typeof e[0]||!B(e,0)}();$(r,{push:ge},be),$(r,{slice:function(e,t){var n=F(this)?H(this,""):this;return q(n,arguments)}},ne);var me=function(){try{return[1,2].sort(null),[1,2].sort({}),!0}catch(e){}return!1}(),we=function(){try{return[1,2].sort(/a/),!1}catch(e){}return!0}(),Oe=function(){try{return[1,2].sort(void 0),!0}catch(e){}return!1}();$(r,{sort:function(t){if("undefined"==typeof t)return V(this);if(!e(t))throw new TypeError("Array.prototype.sort callback must be a function");return V(this,t)}},me||!Oe||!we);var Te=!{toString:null}.propertyIsEnumerable("toString"),je=function(){}.propertyIsEnumerable("prototype"),xe=!B("x","0"),Ee=function(e){var t=e.constructor;return t&&t.prototype===e},Se={$window:!0,$console:!0,$parent:!0,$self:!0,$frame:!0,$frames:!0,$frameElement:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$external:!0},De=function(){if("undefined"==typeof window)return!1;for(var e in window)try{!Se["$"+e]&&B(window,e)&&null!==window[e]&&"object"==typeof window[e]&&Ee(window[e])}catch(t){return!0}return!1}(),_e=function(e){if("undefined"==typeof window||!De)return Ee(e);try{return Ee(e)}catch(t){return!1}},Me=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],Pe=Me.length,Ie=function(e){return"[object Arguments]"===G(e)},Ce=function(t){return null!==t&&"object"==typeof t&&"number"==typeof t.length&&t.length>=0&&!K(t)&&e(t.callee)},Fe=Ie(arguments)?Ie:Ce;$(o,{keys:function(t){var n=e(t),r=Fe(t),o=null!==t&&"object"==typeof t,i=o&&F(t);if(!o&&!n&&!r)throw new TypeError("Object.keys called on a non-object");var a=[],c=je&&n;if(i&&xe||r)for(var u=0;u<t.length;++u)Y(a,s(u));if(!r)for(var l in t)c&&"prototype"===l||!B(t,l)||Y(a,s(l));if(Te)for(var f=_e(t),p=0;p<Pe;p++){var h=Me[p];f&&"constructor"===h||!B(t,h)||Y(a,h)}return a}});var Ne=o.keys&&function(){return 2===o.keys(arguments).length}(1,2),ke=o.keys&&function(){var e=o.keys(arguments);return 1!==arguments.length||1!==e.length||1!==e[0]}(1),ze=o.keys;$(o,{keys:function(e){return ze(Fe(e)?J(e):e)}},!Ne||ke);var Re,$e,Ue=0!==new Date((-0xc782b5b342b24)).getUTCMonth(),Ae=new Date((-0x55d318d56a724)),Le=new Date(14496624e5),Xe="Mon, 01 Jan -45875 11:59:59 GMT"!==Ae.toUTCString(),Be=Ae.getTimezoneOffset();Be<-720?(Re="Tue Jan 02 -45875"!==Ae.toDateString(),$e=!/^Thu Dec 10 2015 \d\d:\d\d:\d\d GMT[-\+]\d\d\d\d(?: |$)/.test(Le.toString())):(Re="Mon Jan 01 -45875"!==Ae.toDateString(),$e=!/^Wed Dec 09 2015 \d\d:\d\d:\d\d GMT[-\+]\d\d\d\d(?: |$)/.test(Le.toString()));var Ge=b.bind(Date.prototype.getFullYear),Je=b.bind(Date.prototype.getMonth),qe=b.bind(Date.prototype.getDate),Ze=b.bind(Date.prototype.getUTCFullYear),He=b.bind(Date.prototype.getUTCMonth),We=b.bind(Date.prototype.getUTCDate),Ye=b.bind(Date.prototype.getUTCDay),Qe=b.bind(Date.prototype.getUTCHours),Ve=b.bind(Date.prototype.getUTCMinutes),Ke=b.bind(Date.prototype.getUTCSeconds),et=b.bind(Date.prototype.getUTCMilliseconds),tt=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],nt=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],rt=function(e,t){return qe(new Date(t,e,0))};$(Date.prototype,{getFullYear:function(){if(!(this&&this instanceof Date))throw new TypeError("this is not a Date object.");var e=Ge(this);return e<0&&Je(this)>11?e+1:e},getMonth:function(){if(!(this&&this instanceof Date))throw new TypeError("this is not a Date object.");var e=Ge(this),t=Je(this);return e<0&&t>11?0:t},getDate:function(){if(!(this&&this instanceof Date))throw new TypeError("this is not a Date object.");var e=Ge(this),t=Je(this),n=qe(this);if(e<0&&t>11){if(12===t)return n;var r=rt(0,e+1);return r-n+1}return n},getUTCFullYear:function(){if(!(this&&this instanceof Date))throw new TypeError("this is not a Date object.");var e=Ze(this);return e<0&&He(this)>11?e+1:e},getUTCMonth:function(){if(!(this&&this instanceof Date))throw new TypeError("this is not a Date object.");var e=Ze(this),t=He(this);return e<0&&t>11?0:t},getUTCDate:function(){if(!(this&&this instanceof Date))throw new TypeError("this is not a Date object.");var e=Ze(this),t=He(this),n=We(this);if(e<0&&t>11){if(12===t)return n;var r=rt(0,e+1);return r-n+1}return n}},Ue),$(Date.prototype,{toUTCString:function(){if(!(this&&this instanceof Date))throw new TypeError("this is not a Date object.");var e=Ye(this),t=We(this),n=He(this),r=Ze(this),o=Qe(this),i=Ve(this),a=Ke(this);return tt[e]+", "+(t<10?"0"+t:t)+" "+nt[n]+" "+r+" "+(o<10?"0"+o:o)+":"+(i<10?"0"+i:i)+":"+(a<10?"0"+a:a)+" GMT"}},Ue||Xe),$(Date.prototype,{toDateString:function(){if(!(this&&this instanceof Date))throw new TypeError("this is not a Date object.");var e=this.getDay(),t=this.getDate(),n=this.getMonth(),r=this.getFullYear();return tt[e]+" "+nt[n]+" "+(t<10?"0"+t:t)+" "+r}},Ue||Re),(Ue||$e)&&(Date.prototype.toString=function(){if(!(this&&this instanceof Date))throw new TypeError("this is not a Date object.");var e=this.getDay(),t=this.getDate(),n=this.getMonth(),r=this.getFullYear(),o=this.getHours(),i=this.getMinutes(),a=this.getSeconds(),c=this.getTimezoneOffset(),s=Math.floor(Math.abs(c)/60),u=Math.floor(Math.abs(c)%60);return tt[e]+" "+nt[n]+" "+(t<10?"0"+t:t)+" "+r+" "+(o<10?"0"+o:o)+":"+(i<10?"0"+i:i)+":"+(a<10?"0"+a:a)+" GMT"+(c>0?"-":"+")+(s<10?"0"+s:s)+(u<10?"0"+u:u)},R&&o.defineProperty(Date.prototype,"toString",{configurable:!0,enumerable:!1,writable:!0}));var ot=-621987552e5,it="-000001",at=Date.prototype.toISOString&&new Date(ot).toISOString().indexOf(it)===-1,ct=Date.prototype.toISOString&&"1969-12-31T23:59:59.999Z"!==new Date((-1)).toISOString(),st=b.bind(Date.prototype.getTime);$(Date.prototype,{toISOString:function(){if(!isFinite(this)||!isFinite(st(this)))throw new RangeError("Date.prototype.toISOString called on non-finite value.");var e=Ze(this),t=He(this);e+=Math.floor(t/12),t=(t%12+12)%12;var n=[t+1,We(this),Qe(this),Ve(this),Ke(this)];e=(e<0?"-":e>9999?"+":"")+Z("00000"+Math.abs(e),0<=e&&e<=9999?-4:-6);for(var r=0;r<n.length;++r)n[r]=Z("00"+n[r],-2);return e+"-"+J(n,0,2).join("-")+"T"+J(n,2).join(":")+"."+Z("000"+et(this),-3)+"Z"}},at||ct);var ut=function(){try{return Date.prototype.toJSON&&null===new Date(NaN).toJSON()&&new Date(ot).toJSON().indexOf(it)!==-1&&Date.prototype.toJSON.call({toISOString:function(){return!0}})}catch(e){return!1}}();ut||(Date.prototype.toJSON=function(t){var n=o(this),r=L.ToPrimitive(n);if("number"==typeof r&&!isFinite(r))return null;var i=n.toISOString;if(!e(i))throw new TypeError("toISOString property is not callable");return i.call(n)});var lt=1e15===Date.parse("+033658-09-27T01:46:40.000Z"),ft=!isNaN(Date.parse("2012-04-04T24:00:00.500Z"))||!isNaN(Date.parse("2012-11-31T23:59:59.000Z"))||!isNaN(Date.parse("2012-12-31T23:59:60.000Z")),pt=isNaN(Date.parse("2000-01-01T00:00:00.000Z"));if(pt||ft||!lt){var ht=Math.pow(2,31)-1,dt=A(new Date(1970,0,1,0,0,0,ht+1).getTime());Date=function(e){var t=function(n,r,o,i,a,c,u){var l,f=arguments.length;if(this instanceof e){var p=c,h=u;if(dt&&f>=7&&u>ht){var d=Math.floor(u/ht)*ht,y=Math.floor(d/1e3);p+=y,h-=1e3*y}l=1===f&&s(n)===n?new e(t.parse(n)):f>=7?new e(n,r,o,i,a,p,h):f>=6?new e(n,r,o,i,a,p):f>=5?new e(n,r,o,i,a):f>=4?new e(n,r,o,i):f>=3?new e(n,r,o):f>=2?new e(n,r):f>=1?new e(n instanceof e?+n:n):new e}else l=e.apply(this,arguments);return U(l)||$(l,{constructor:t},!0),l},n=new RegExp("^(\\d{4}|[+-]\\d{6})(?:-(\\d{2})(?:-(\\d{2})(?:T(\\d{2}):(\\d{2})(?::(\\d{2})(?:(\\.\\d{1,}))?)?(Z|(?:([-+])(\\d{2}):(\\d{2})))?)?)?)?$"),r=[0,31,59,90,120,151,181,212,243,273,304,334,365],o=function(e,t){var n=t>1?1:0;return r[t]+Math.floor((e-1969+n)/4)-Math.floor((e-1901+n)/100)+Math.floor((e-1601+n)/400)+365*(e-1970)},i=function(t){var n=0,r=t;if(dt&&r>ht){var o=Math.floor(r/ht)*ht,i=Math.floor(o/1e3);n+=i,r-=1e3*i}return l(new e(1970,0,1,0,0,n,r))};for(var a in e)B(e,a)&&(t[a]=e[a]);$(t,{now:e.now,UTC:e.UTC},!0),t.prototype=e.prototype,$(t.prototype,{constructor:t},!0);var c=function(t){var r=n.exec(t);if(r){var a,c=l(r[1]),s=l(r[2]||1)-1,u=l(r[3]||1)-1,f=l(r[4]||0),p=l(r[5]||0),h=l(r[6]||0),d=Math.floor(1e3*l(r[7]||0)),y=Boolean(r[4]&&!r[8]),g="-"===r[9]?1:-1,v=l(r[10]||0),b=l(r[11]||0),m=p>0||h>0||d>0;return f<(m?24:25)&&p<60&&h<60&&d<1e3&&s>-1&&s<12&&v<24&&b<60&&u>-1&&u<o(c,s+1)-o(c,s)&&(a=60*(24*(o(c,s)+u)+f+v*g),a=1e3*(60*(a+p+b*g)+h)+d,y&&(a=i(a)),-864e13<=a&&a<=864e13)?a:NaN}return e.parse.apply(this,arguments)};return $(t,{parse:c}),t}(Date)}Date.now||(Date.now=function(){return(new Date).getTime()});var yt=f.toFixed&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==(0xde0b6b3a7640080).toFixed(0)),gt={base:1e7,size:6,data:[0,0,0,0,0,0],multiply:function(e,t){for(var n=-1,r=t;++n<gt.size;)r+=e*gt.data[n],gt.data[n]=r%gt.base,r=Math.floor(r/gt.base)},divide:function(e){for(var t=gt.size,n=0;--t>=0;)n+=gt.data[t],gt.data[t]=Math.floor(n/e),n=n%e*gt.base},numToString:function(){for(var e=gt.size,t="";--e>=0;)if(""!==t||0===e||0!==gt.data[e]){var n=s(gt.data[e]);""===t?t=n:t+=Z("0000000",0,7-n.length)+n}return t},pow:function zt(e,t,n){return 0===t?n:t%2===1?zt(e,t-1,n*e):zt(e*e,t/2,n)},log:function(e){for(var t=0,n=e;n>=4096;)t+=12,n/=4096;for(;n>=2;)t+=1,n/=2;return t}},vt=function(e){var t,n,r,o,i,a,c,u;if(t=l(e),t=A(t)?0:Math.floor(t),t<0||t>20)throw new RangeError("Number.toFixed called with invalid number of decimals");if(n=l(this),A(n))return"NaN";if(n<=-1e21||n>=1e21)return s(n);if(r="",n<0&&(r="-",n=-n),o="0",n>1e-21)if(i=gt.log(n*gt.pow(2,69,1))-69,a=i<0?n*gt.pow(2,-i,1):n/gt.pow(2,i,1),a*=4503599627370496,i=52-i,i>0){for(gt.multiply(0,a),c=t;c>=7;)gt.multiply(1e7,0),c-=7;for(gt.multiply(gt.pow(10,c,1),0),c=i-1;c>=23;)gt.divide(1<<23),c-=23;gt.divide(1<<c),gt.multiply(1,1),gt.divide(2),o=gt.numToString()}else gt.multiply(0,a),gt.multiply(1<<-i,0),o=gt.numToString()+Z("0.00000000000000000000",2,2+t);return t>0?(u=o.length,o=u<=t?r+Z("0.0000000000000000000",0,t-u+2)+o:r+Z(o,0,u-t)+"."+Z(o,u-t)):o=r+o,o};$(f,{toFixed:vt},yt);var bt=function(){try{return"1"===1..toPrecision(void 0)}catch(e){return!0}}(),mt=f.toPrecision;$(f,{toPrecision:function(e){return"undefined"==typeof e?mt.call(this):mt.call(this,e)}},bt),2!=="ab".split(/(?:ab)*/).length||4!==".".split(/(.?)(.?)/).length||"t"==="tesst".split(/(s)*/)[1]||4!=="test".split(/(?:)/,-1).length||"".split(/.?/).length||".".split(/()()/).length>1?!function(){var e="undefined"==typeof/()??/.exec("")[1],n=Math.pow(2,32)-1;u.split=function(r,o){var i=String(this);if("undefined"==typeof r&&0===o)return[];if(!t(r))return H(this,r,o);var a,c,s,u,l=[],f=(r.ignoreCase?"i":"")+(r.multiline?"m":"")+(r.unicode?"u":"")+(r.sticky?"y":""),p=0,h=new RegExp(r.source,f+"g");e||(a=new RegExp("^"+h.source+"$(?!\\s)",f));var y="undefined"==typeof o?n:L.ToUint32(o);for(c=h.exec(i);c&&(s=c.index+c[0].length,!(s>p&&(Y(l,Z(i,p,c.index)),!e&&c.length>1&&c[0].replace(a,function(){for(var e=1;e<arguments.length-2;e++)"undefined"==typeof arguments[e]&&(c[e]=void 0)}),c.length>1&&c.index<i.length&&d.apply(l,J(c,1)),u=c[0].length,p=s,l.length>=y)));)h.lastIndex===c.index&&h.lastIndex++,c=h.exec(i);return p===i.length?!u&&h.test("")||Y(l,""):Y(l,Z(i,p)),l.length>y?J(l,0,y):l}}():"0".split(void 0,0).length&&(u.split=function(e,t){return"undefined"==typeof e&&0===t?[]:H(this,e,t)});var wt=u.replace,Ot=function(){var e=[];return"x".replace(/x(.)?/g,function(t,n){Y(e,n)}),1===e.length&&"undefined"==typeof e[0]}();Ot||(u.replace=function(n,r){var o=e(r),i=t(n)&&/\)[*?]/.test(n.source);if(o&&i){var a=function(e){var t=arguments.length,o=n.lastIndex;n.lastIndex=0;var i=n.exec(e)||[];return n.lastIndex=o,Y(i,arguments[t-2],arguments[t-1]),r.apply(this,i)};return wt.call(this,n,a)}return wt.call(this,n,r)});var Tt=u.substr,jt="".substr&&"b"!=="0b".substr(-1);$(u,{substr:function(e,t){var n=e;return e<0&&(n=w(this.length+e,0)),Tt.call(this,n,t)}},jt);var xt="\t\n\x0B\f\r \xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff",Et="\u200b",St="["+xt+"]",Dt=new RegExp("^"+St+St+"*"),_t=new RegExp(St+St+"*$"),Mt=u.trim&&(xt.trim()||!Et.trim());$(u,{trim:function(){if("undefined"==typeof this||null===this)throw new TypeError("can't convert "+this+" to object");return s(this).replace(Dt,"").replace(_t,"")}},Mt);var Pt=b.bind(String.prototype.trim),It=u.lastIndexOf&&"abc\u3042\u3044".lastIndexOf("\u3042\u3044",2)!==-1;$(u,{lastIndexOf:function(e){if("undefined"==typeof this||null===this)throw new TypeError("can't convert "+this+" to object");for(var t=s(this),n=s(e),r=arguments.length>1?l(arguments[1]):NaN,o=A(r)?1/0:L.ToInteger(r),i=O(w(o,0),t.length),a=n.length,c=i+a;c>0;){c=w(0,c-a);var u=W(Z(t,c,i+a),n);if(u!==-1)return c+u}return-1}},It);var Ct=u.lastIndexOf;if($(u,{lastIndexOf:function(e){return Ct.apply(this,arguments)}},1!==u.lastIndexOf.length),8===parseInt(xt+"08")&&22===parseInt(xt+"0x16")||(parseInt=function(e){var t=/^[\-+]?0[xX]/;return function(n,r){var o=Pt(n),i=l(r)||(t.test(o)?16:10);return e(o,i)}}(parseInt)),1/parseFloat("-0")!==-(1/0)&&(parseFloat=function(e){return function(t){var n=Pt(t),r=e(n);return 0===r&&"-"===Z(n,0,1)?-0:r}}(parseFloat)),"RangeError: test"!==String(new RangeError("test"))){var Ft=function(){if("undefined"==typeof this||null===this)throw new TypeError("can't convert "+this+" to object");var e=this.name;"undefined"==typeof e?e="Error":"string"!=typeof e&&(e=s(e));var t=this.message;return"undefined"==typeof t?t="":"string"!=typeof t&&(t=s(t)),e?t?e+": "+t:e:t};Error.prototype.toString=Ft}if(R){var Nt=function(e,t){if(Q(e,t)){var n=Object.getOwnPropertyDescriptor(e,t);n.enumerable=!1,Object.defineProperty(e,t,n)}};Nt(Error.prototype,"message"),""!==Error.prototype.message&&(Error.prototype.message=""),Nt(Error.prototype,"name")}if("/a/gim"!==String(/a/gim)){var kt=function(){var e="/"+this.source+"/";return this.global&&(e+="g"),this.ignoreCase&&(e+="i"),this.multiline&&(e+="m"),e};RegExp.prototype.toString=kt}}),function(e,t){"use strict";"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.returnExports=t()}(this,function(){var e,t,n,r,o=Function.call,i=Object.prototype,a=o.bind(i.hasOwnProperty),c=o.bind(i.propertyIsEnumerable),s=o.bind(i.toString),u=a(i,"__defineGetter__");u&&(e=o.bind(i.__defineGetter__),t=o.bind(i.__defineSetter__),n=o.bind(i.__lookupGetter__),r=o.bind(i.__lookupSetter__)),Object.getPrototypeOf||(Object.getPrototypeOf=function(e){var t=e.__proto__;return t||null===t?t:"[object Function]"===s(e.constructor)?e.constructor.prototype:e instanceof Object?i:null});var l=function(e){try{return e.sentinel=0,0===Object.getOwnPropertyDescriptor(e,"sentinel").value}catch(t){return!1}};if(Object.defineProperty){var f=l({}),p="undefined"==typeof document||l(document.createElement("div"));if(!p||!f)var h=Object.getOwnPropertyDescriptor}if(!Object.getOwnPropertyDescriptor||h){var d="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(e,t){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError(d+e);if(h)try{return h.call(Object,e,t)}catch(o){}var s;if(!a(e,t))return s;if(s={enumerable:c(e,t),configurable:!0},u){var l=e.__proto__,f=e!==i;f&&(e.__proto__=i);var p=n(e,t),y=r(e,t);if(f&&(e.__proto__=l),p||y)return p&&(s.get=p),y&&(s.set=y),s}return s.value=e[t],s.writable=!0,s}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(e){return Object.keys(e)}),!Object.create){var y,g=!({__proto__:null}instanceof Object),v=function(){if(!document.domain)return!1;try{return!!new ActiveXObject("htmlfile")}catch(e){return!1}},b=function(){var e,t;return t=new ActiveXObject("htmlfile"),t.write("<script></script>"),t.close(),e=t.parentWindow.Object.prototype,t=null,e},m=function(){var e,t=document.createElement("iframe"),n=document.body||document.documentElement;return t.style.display="none",n.appendChild(t),t.src="javascript:",e=t.contentWindow.Object.prototype,n.removeChild(t),t=null,e};y=g||"undefined"==typeof document?function(){return{__proto__:null}}:function(){var e=v()?b():m();delete e.constructor,delete e.hasOwnProperty,delete e.propertyIsEnumerable,delete e.isPrototypeOf,delete e.toLocaleString,delete e.toString,delete e.valueOf;var t=function(){};return t.prototype=e,y=function(){return new t},new t},Object.create=function(e,t){var n,r=function(){};if(null===e)n=y();else{if("object"!=typeof e&&"function"!=typeof e)throw new TypeError("Object prototype may only be an Object or null");r.prototype=e,n=new r,n.__proto__=e}return void 0!==t&&Object.defineProperties(n,t),n}}var w=function(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){return!1}};if(Object.defineProperty){var O=w({}),T="undefined"==typeof document||w(document.createElement("div"));if(!O||!T)var j=Object.defineProperty,x=Object.defineProperties}if(!Object.defineProperty||j){var E="Property description must be an object: ",S="Object.defineProperty called on non-object: ",D="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(o,a,c){if("object"!=typeof o&&"function"!=typeof o||null===o)throw new TypeError(S+o);if("object"!=typeof c&&"function"!=typeof c||null===c)throw new TypeError(E+c);if(j)try{return j.call(Object,o,a,c)}catch(s){}if("value"in c)if(u&&(n(o,a)||r(o,a))){var l=o.__proto__;o.__proto__=i,delete o[a],o[a]=c.value,o.__proto__=l}else o[a]=c.value;else{if(!u&&("get"in c||"set"in c))throw new TypeError(D);"get"in c&&e(o,a,c.get),"set"in c&&t(o,a,c.set)}return o}}Object.defineProperties&&!x||(Object.defineProperties=function(e,t){if(x)try{return x.call(Object,e,t)}catch(n){}return Object.keys(t).forEach(function(n){"__proto__"!==n&&Object.defineProperty(e,n,t[n])}),e}),Object.seal||(Object.seal=function(e){if(Object(e)!==e)throw new TypeError("Object.seal can only be called on Objects.");return e}),Object.freeze||(Object.freeze=function(e){if(Object(e)!==e)throw new TypeError("Object.freeze can only be called on Objects.");return e});try{Object.freeze(function(){})}catch(_){Object.freeze=function(e){return function(t){return"function"==typeof t?t:e(t)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(e){if(Object(e)!==e)throw new TypeError("Object.preventExtensions can only be called on Objects.");return e}),Object.isSealed||(Object.isSealed=function(e){if(Object(e)!==e)throw new TypeError("Object.isSealed can only be called on Objects.");return!1}),Object.isFrozen||(Object.isFrozen=function(e){if(Object(e)!==e)throw new TypeError("Object.isFrozen can only be called on Objects.");return!1}),Object.isExtensible||(Object.isExtensible=function(e){if(Object(e)!==e)throw new TypeError("Object.isExtensible can only be called on Objects.");for(var t="";a(e,t);)t+="?";e[t]=!0;var n=a(e,t);return delete e[t],n})}),function(e){"use strict";e.console=e.console||{};for(var t,n,r=e.console,o={},i=function(){},a="memory".split(","),c="assert,clear,count,debug,dir,dirxml,error,exception,group,groupCollapsed,groupEnd,info,log,markTimeline,profile,profiles,profileEnd,show,table,time,timeEnd,timeline,timelineEnd,timeStamp,trace,warn".split(",");t=a.pop();)r[t]||(r[t]=o);for(;n=c.pop();)"function"!=typeof r[n]&&(r[n]=i)}("undefined"==typeof window?this:window),!window.addEventListener&&function(e,t,n,r,o,i,a){e[r]=t[r]=n[r]=function(e,t){var n=this;a.unshift([n,e,t,function(e){e.currentTarget=n,e.preventDefault=function(){e.returnValue=!1},e.stopPropagation=function(){e.cancelBubble=!0},e.target=e.srcElement||n,t.call(n,e)}]),this.attachEvent("on"+e,a[0][3])},e[o]=t[o]=n[o]=function(e,t){for(var n,r=0;n=a[r];++r)if(n[0]==this&&n[1]==e&&n[2]==t)return this.detachEvent("on"+e,a.splice(r,1)[0][3])},e[i]=t[i]=n[i]=function(e){return this.fireEvent("on"+e.type,e)}}(Window.prototype,HTMLDocument.prototype,Element.prototype,"addEventListener","removeEventListener","dispatchEvent",[]),function(e,t){"use strict";var n=function(){var e=document.createElement("div");return e.style.cssText="font-size: 1rem;",/rem/.test(e.style.fontSize)},r=function(){for(var e=document.getElementsByTagName("link"),t=[],n=0;n<e.length;n++)"stylesheet"===e[n].rel.toLowerCase()&&null===e[n].getAttribute("data-norem")&&t.push(e[n].href);return t},o=function(){for(var e=0;e<h.length;e++)l(h[e],i)},i=function(e,t){if(v.push(e.responseText),b.push(t),b.length===h.length){for(var n=0;n<b.length;n++)a(v[n],b[n]);(h=d.slice(0)).length>0?(b=[],v=[],d=[],o()):c()}},a=function(e,t){for(var n,r=f(e).replace(/\/\*[\s\S]*?\*\//g,""),o=/[\w\d\s\-\/\\\[\]:,.'"*()<>+~%#^$_=|@]+\{[\w\d\s\-\/\\%#:!;,.'"*()]+\d*\.?\d+rem[\w\d\s\-\/\\%#:!;,.'"*()]*\}/g,i=r.match(o),a=/\d*\.?\d+rem/g,c=r.match(a),s=/(.*\/)/,u=s.exec(t)[0],l=/@import (?:url\()?['"]?([^'\)"]*)['"]?\)?[^;]*/gm;null!==(n=l.exec(e));)0===n[1].indexOf("/")?d.push(n[1]):d.push(u+n[1]);null!==i&&0!==i.length&&(y=y.concat(i),g=g.concat(c))},c=function(){for(var e=/[\w\d\s\-\/\\%#:,.'"*()]+\d*\.?\d+rem[\w\d\s\-\/\\%#:!,.'"*()]*[;}]/g,t=0;t<y.length;t++){p+=y[t].substr(0,y[t].indexOf("{")+1);for(var n=y[t].match(e),r=0;r<n.length;r++)p+=n[r],r===n.length-1&&"}"!==p[p.length-1]&&(p+="\n}")}s()},s=function(){for(var e=0;e<g.length;e++)m[e]=Math.round(parseFloat(g[e].substr(0,g[e].length-3)*w))+"px";u()},u=function(){for(var e=0;e<m.length;e++)m[e]&&(p=p.replace(g[e],m[e]));var t=document.createElement("style");t.setAttribute("type","text/css"),t.id="remReplace",document.getElementsByTagName("head")[0].appendChild(t),t.styleSheet?t.styleSheet.cssText=p:t.appendChild(document.createTextNode(p))},l=function(t,n){try{var r=e.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP")||new ActiveXObject("Msxml2.XMLHTTP"):new XMLHttpRequest;r.open("GET",t,!0),r.onreadystatechange=function(){4===r.readyState&&n(r,t)},r.send(null)}catch(o){if(e.XDomainRequest){var i=new XDomainRequest;i.open("get",t),i.onload=function(){n(i,t)},i.onerror=function(){return!1},i.send()}}},f=function(t){return e.matchMedia||e.msMatchMedia||(t=t.replace(/@media[\s\S]*?\}\s*\}/g,"")),t};if(!n()){var p="",h=r(),d=[],y=[],g=[],v=[],b=[],m=[],w="";w=function(){var e,t=document,n=t.documentElement,r=t.body||t.createElement("body"),o=!t.body,i=t.createElement("div"),a=r.style.fontSize;return o&&n.appendChild(r),i.style.cssText="width:1em; position:absolute; visibility:hidden; padding: 0;",r.style.fontSize="1em",r.appendChild(i),e=i.offsetWidth,o?n.removeChild(r):(r.removeChild(i),r.style.fontSize=a),e}(),o()}}(window),!function(e){"use strict";e.matchMedia=e.matchMedia||function(e){var t,n=e.documentElement,r=n.firstElementChild||n.firstChild,o=e.createElement("body"),i=e.createElement("div");return i.id="mq-test-1",i.style.cssText="position:absolute;top:-100em",o.style.background="none",o.appendChild(i),function(e){return i.innerHTML='­<style media="'+e+'"> #mq-test-1 { width: 42px; }</style>',n.insertBefore(o,r),t=42===i.offsetWidth,n.removeChild(o),{matches:t,media:e}}}(e.document)}(this),function(e){"use strict";function t(){O(!0)}var n={};e.respond=n,n.update=function(){};var r=[],o=function(){var t=!1;try{t=new e.XMLHttpRequest}catch(n){t=new e.ActiveXObject("Microsoft.XMLHTTP")}return function(){return t; | ||
| 3 | }}(),i=function(e,t){var n=o();n&&(n.open("GET",e,!0),n.onreadystatechange=function(){4!==n.readyState||200!==n.status&&304!==n.status||t(n.responseText)},4!==n.readyState&&n.send(null))},a=function(e){return e.replace(n.regex.minmaxwh,"").match(n.regex.other)};if(n.ajax=i,n.queue=r,n.unsupportedmq=a,n.regex={media:/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,keyframes:/@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,comments:/\/\*[^*]*\*+([^\/][^*]*\*+)*\//gi,urls:/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,findStyles:/@media *([^\{]+)\{([\S\s]+?)$/,only:/(only\s+)?([a-zA-Z]+)\s?/,minw:/\(\s*min\-width\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/,maxw:/\(\s*max\-width\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/,minmaxwh:/\(\s*m(in|ax)\-(height|width)\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/gi,other:/\([^\)]*\)/g},n.mediaQueriesSupported=e.matchMedia&&null!==e.matchMedia("only all")&&e.matchMedia("only all").matches,!n.mediaQueriesSupported){var c,s,u,l=e.document,f=l.documentElement,p=[],h=[],d=[],y={},g=30,v=l.getElementsByTagName("head")[0]||f,b=l.getElementsByTagName("base")[0],m=v.getElementsByTagName("link"),w=function(){var e,t=l.createElement("div"),n=l.body,r=f.style.fontSize,o=n&&n.style.fontSize,i=!1;return t.style.cssText="position:absolute;font-size:1em;width:1em",n||(n=i=l.createElement("body"),n.style.background="none"),f.style.fontSize="100%",n.style.fontSize="100%",n.appendChild(t),i&&f.insertBefore(n,f.firstChild),e=t.offsetWidth,i?f.removeChild(n):n.removeChild(t),f.style.fontSize=r,o&&(n.style.fontSize=o),e=u=parseFloat(e)},O=function(t){var n="clientWidth",r=f[n],o="CSS1Compat"===l.compatMode&&r||l.body[n]||r,i={},a=m[m.length-1],y=(new Date).getTime();if(t&&c&&g>y-c)return e.clearTimeout(s),void(s=e.setTimeout(O,g));c=y;for(var b in p)if(p.hasOwnProperty(b)){var T=p[b],j=T.minw,x=T.maxw,E=null===j,S=null===x,D="em";j&&(j=parseFloat(j)*(j.indexOf(D)>-1?u||w():1)),x&&(x=parseFloat(x)*(x.indexOf(D)>-1?u||w():1)),T.hasquery&&(E&&S||!(E||o>=j)||!(S||x>=o))||(i[T.media]||(i[T.media]=[]),i[T.media].push(h[T.rules]))}for(var _ in d)d.hasOwnProperty(_)&&d[_]&&d[_].parentNode===v&&v.removeChild(d[_]);d.length=0;for(var M in i)if(i.hasOwnProperty(M)){var P=l.createElement("style"),I=i[M].join("\n");P.type="text/css",P.media=M,v.insertBefore(P,a.nextSibling),P.styleSheet?P.styleSheet.cssText=I:P.appendChild(l.createTextNode(I)),d.push(P)}},T=function(e,t,r){var o=e.replace(n.regex.comments,"").replace(n.regex.keyframes,"").match(n.regex.media),i=o&&o.length||0;t=t.substring(0,t.lastIndexOf("/"));var c=function(e){return e.replace(n.regex.urls,"$1"+t+"$2$3")},s=!i&&r;t.length&&(t+="/"),s&&(i=1);for(var u=0;i>u;u++){var l,f,d,y;s?(l=r,h.push(c(e))):(l=o[u].match(n.regex.findStyles)&&RegExp.$1,h.push(RegExp.$2&&c(RegExp.$2))),d=l.split(","),y=d.length;for(var g=0;y>g;g++)f=d[g],a(f)||p.push({media:f.split("(")[0].match(n.regex.only)&&RegExp.$2||"all",rules:h.length-1,hasquery:f.indexOf("(")>-1,minw:f.match(n.regex.minw)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:f.match(n.regex.maxw)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}O()},j=function(){if(r.length){var t=r.shift();i(t.href,function(n){T(n,t.href,t.media),y[t.href]=!0,e.setTimeout(function(){j()},0)})}},x=function(){for(var t=0;t<m.length;t++){var n=m[t],o=n.href,i=n.media,a=n.rel&&"stylesheet"===n.rel.toLowerCase();o&&a&&!y[o]&&(n.styleSheet&&n.styleSheet.rawCssText?(T(n.styleSheet.rawCssText,o,i),y[o]=!0):(!/^([a-zA-Z:]*\/\/)/.test(o)&&!b||o.replace(RegExp.$1,"").split("/")[0]===e.location.host)&&("//"===o.substring(0,2)&&(o=e.location.protocol+o),r.push({href:o,media:i})))}j()};x(),n.update=x,n.getEmValue=w,e.addEventListener?e.addEventListener("resize",t,!1):e.attachEvent&&e.attachEvent("onresize",t)}}(this); | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
staticLib/amazeui/amazeui.js
deleted
100644 → 0
This diff could not be displayed because it is too large.
staticLib/amazeui/amazeui.min.js
deleted
100644 → 0
This diff could not be displayed because it is too large.
| 1 | /*! Amaze UI v2.7.2 ~ Handlebars helper | by Amaze UI Team | (c) 2016 AllMobilize, Inc. | Licensed under MIT | 2016-08-17T16:17:24+0800 */ | ||
| 2 | (function(undefined) { | ||
| 3 | 'use strict'; | ||
| 4 | |||
| 5 | var registerIfCondHelper = function(hbs) { | ||
| 6 | hbs.registerHelper('ifCond', function(v1, operator, v2, options) { | ||
| 7 | switch (operator) { | ||
| 8 | case '==': | ||
| 9 | return (v1 == v2) ? options.fn(this) : options.inverse(this); | ||
| 10 | break; | ||
| 11 | case '===': | ||
| 12 | return (v1 === v2) ? options.fn(this) : options.inverse(this); | ||
| 13 | break; | ||
| 14 | case '<': | ||
| 15 | return (v1 < v2) ? options.fn(this) : options.inverse(this); | ||
| 16 | break; | ||
| 17 | case '<=': | ||
| 18 | return (v1 <= v2) ? options.fn(this) : options.inverse(this); | ||
| 19 | break; | ||
| 20 | case '>': | ||
| 21 | return (v1 > v2) ? options.fn(this) : options.inverse(this); | ||
| 22 | break; | ||
| 23 | case '>=': | ||
| 24 | return (v1 >= v2) ? options.fn(this) : options.inverse(this); | ||
| 25 | break; | ||
| 26 | default: | ||
| 27 | return options.inverse(this); | ||
| 28 | break; | ||
| 29 | } | ||
| 30 | return options.inverse(this); | ||
| 31 | }); | ||
| 32 | }; | ||
| 33 | |||
| 34 | if (typeof module !== 'undefined' && module.exports) { | ||
| 35 | module.exports = registerIfCondHelper; | ||
| 36 | } | ||
| 37 | |||
| 38 | this.Handlebars && registerIfCondHelper(this.Handlebars); | ||
| 39 | }).call(this); | ||
| 40 | |||
| 41 | (function(undefined){ | ||
| 42 | 'use strict'; | ||
| 43 | |||
| 44 | var registerAMUIPartials = function(hbs) { | ||
| 45 | hbs.registerPartial('accordion', "{{#this}}\n <section data-am-widget=\"accordion\" class=\"am-accordion {{#if theme}}am-accordion-{{theme}}{{else}}am-accordion-default{{/if}}{{#if widgetId}} {{widgetId}}{{/if}}{{#if className}} {{className}}{{/if}}\"{{#if id}} id=\"{{id}}\"{{/if}} data-am-accordion='{ {{#if options.multiple}}\"multiple\": true{{/if}} }'>\n {{#each content}}\n <dl class=\"am-accordion-item{{#if active}} am-active{{/if}}{{#if disabled}} am-disabled{{/if}}\">\n <dt class=\"am-accordion-title\">\n {{{title}}}\n </dt>\n <dd class=\"am-accordion-bd am-collapse {{#if active}}am-in{{/if}}\">\n <!-- 规避 Collapase 处理有 padding 的折叠内容计算计算有误问题, 加一个容器 -->\n <div class=\"am-accordion-content\">\n {{{content}}}\n </div>\n </dd>\n </dl>\n {{/each}}\n </section>\n{{/this}}\n"); | ||
| 46 | |||
| 47 | hbs.registerPartial('divider', "{{#this}}\n <hr data-am-widget=\"divider\" style=\"{{#if options.width}}width:{{{options.width}}};{{/if}}{{#if options.height}}height:{{{options.height}}};{{/if}}\" class=\"am-divider {{#if theme}}am-divider-{{theme}}{{else}}am-divider-default{{/if}}{{#if widgetId}} {{widgetId}}{{/if}}{{#if className}} {{className}}{{/if}}\"{{#if id}} id=\"{{id}}\"{{/if}} />\n{{/this}}\n"); | ||
| 48 | |||
| 49 | hbs.registerPartial('duoshuo', "{{#this}}\n <div data-am-widget=\"duoshuo\" class=\"am-duoshuo{{#if theme}} am-duoshuo-{{theme}}{{else}} am-duoshuo-default{{/if}}{{#if widgetId}} {{widgetId}}{{/if}}{{#if className}} {{className}}{{/if}}\"{{#if id}} id=\"{{id}}\"{{/if}} {{#if options.shortName}}data-ds-short-name=\"{{options.shortName}}\"{{/if}}>\n <div class=\"ds-thread\" {{#if content}}{{#each content}}{{#ifCond @key '==' 'threadKey'}} data-thread-key=\"{{this}}\"{{else}} data-{{@key}}=\"{{this}}\"{{/ifCond}}{{/each}}{{/if}}>\n </div>\n </div>\n{{/this}}"); | ||
| 50 | |||
| 51 | hbs.registerPartial('figure', "{{#this}}\n <figure data-am-widget=\"figure\" class=\"am am-figure {{#if theme}}am-figure-{{theme}}{{else}}am-figure-default{{/if}} {{#if widgetId}} {{widgetId}}{{/if}}{{#if className}} {{className}}{{/if}}\" {{#if id}}\n id=\"{{id}}\"{{/if}} data-am-figure=\"{ {{#if options.zoomAble}} pureview: '{{options.zoomAble}}'{{/if}} }\">\n {{#if content.link}}<a href=\"{{content.link}}\" title=\"{{content.figcaption}}\" class=\"{{className}}\">{{/if}}\n\n {{#if options.figcaptionPosition}}\n {{#ifCond options.figcaptionPosition '==' 'top'}}\n {{#if content.figcaption}}\n <figcaption class=\"am-figure-capition-top\">\n {{content.figcaption}}\n </figcaption>\n {{/if}}\n {{/ifCond}}\n {{/if}}\n\n {{#if content.img}}\n <img src=\"{{content.img}}\" {{#if content.rel}}data-rel=\"{{content.rel}}\"{{/if}} alt=\"{{#if content.imgAlt}}{{content.imgAlt}}{{else}}{{content.figcaption}}{{/if}}\"/>\n {{/if}}\n {{#if options.figcaptionPosition}}\n {{#ifCond options.figcaptionPosition '==' 'bottom'}}\n {{#if content.figcaption}}\n <figcaption class=\"am-figure-capition-btm\">\n {{content.figcaption}}\n </figcaption>\n {{/if}}\n {{/ifCond}}\n {{else}}\n {{#if content.figcaption}}\n <figcaption class=\"am-figure-capition-btm\">\n {{content.figcaption}}\n </figcaption>\n {{/if}}\n {{/if}}\n\n {{#if content.link}}</a>{{/if}}\n </figure>\n{{/this}}\n"); | ||
| 52 | |||
| 53 | hbs.registerPartial('footer', "{{#this}}\n <footer data-am-widget=\"footer\"\n class=\"am-footer {{#if theme}}am-footer-{{theme}}{{else}}am-footer-default {{/if}}{{#if widgetId}} {{widgetId}}{{/if}}{{#if className}} {{className}}{{/if}}\"\n {{#if id}}id=\"{{id}}\"{{/if}} data-am-footer=\"{ {{#if options.addToHS}}addToHS: 1{{/if}} }\">\n <div class=\"am-footer-switch\">\n <span class=\"{{#if options.modal}}am-footer-ysp{{/if}}\" data-rel=\"mobile\"\n data-am-modal=\"{target: '#am-switch-mode'}\">\n {{#unless content.switchName}}\n {{#ifCond content.lang '==' 'en'}}\n Mobile\n {{else}}\n 云适配版\n {{/ifCond}}\n {{else}}\n {{content.switchName}}\n {{/unless}}\n </span>\n <span class=\"am-footer-divider\"> | </span>\n <a id=\"godesktop\" data-rel=\"desktop\" class=\"am-footer-desktop\" href=\"javascript:\">\n {{#ifCond content.lang '==' 'en'}}\n Desktop\n {{else}}\n 电脑版\n {{/ifCond}}\n </a>\n </div>\n <div class=\"am-footer-miscs {{#if options.textPosition}}am-text-left{{/if}}\">\n\n {{#if options.techSupportCo}}\n {{#ifCond content.lang '==' 'en'}}\n <p>Supported by {{#if options.techSupportSite}}<a href=\"{{options.techSupportSite}}\"\n title=\"{{options.techSupportCo}}\"\n target=\"_blank\"> class=\"{{className}}\"{{{options.techSupportCo}}}</a>{{else}}{{{options.techSupportCo}}}{{/if}}\n .</p>\n {{else}}\n <p>由 {{#if options.techSupportSite}}<a href=\"{{options.techSupportSite}}\" title=\"{{options.techSupportCo}}\"\n target=\"_blank\" class=\"{{techSupportClassName}}\">{{{options.techSupportCo}}}</a>{{else}}{{{options.techSupportCo}}}{{/if}}\n 提供技术支持</p>\n {{/ifCond}}\n {{/if}}\n {{#each content.companyInfo}}\n <p>{{{detail}}}</p>\n {{/each}}\n </div>\n </footer>\n\n <div id=\"am-footer-modal\"\n class=\"am-modal am-modal-no-btn am-switch-mode-m {{#if theme}}am-switch-mode-m-{{theme}}{{/if}}\">\n <div class=\"am-modal-dialog\">\n <div class=\"am-modal-hd am-modal-footer-hd\">\n <a href=\"javascript:void(0)\" data-dismiss=\"modal\" class=\"am-close am-close-spin {{className}}\" data-am-modal-close>×</a>\n </div>\n <div class=\"am-modal-bd\">\n {{#ifCond content.lang '==' 'en'}}\n You are visiting\n {{else}}\n 您正在浏览的是\n {{/ifCond}}\n\n <span class=\"am-switch-mode-owner\">\n {{#if content.owner}}\n {{content.owner}}\n {{else}}\n 云适配\n {{/if}}\n </span>\n\n <span class=\"am-switch-mode-slogan\">\n {{#if content.slogan}}\n {{{content.slogan}}}\n {{else}}\n {{#ifCond content.lang '==' 'en'}}\n mobilized version for your device.\n {{else}}\n 为您当前手机订制的移动网站。\n {{/ifCond}}\n {{/if}}\n </span>\n </div>\n </div>\n </div>\n{{/this}}\n"); | ||
| 54 | |||
| 55 | hbs.registerPartial('gallery', "{{#this}}\n <ul data-am-widget=\"gallery\" class=\"am-gallery{{#if options.cols}} am-avg-sm-{{options.cols}}{{else}} am-avg-sm-2{{/if}}\n am-avg-md-3 am-avg-lg-4 {{#if\n theme}}am-gallery-{{theme}}{{else}}am-gallery-default{{/if}}{{#if widgetId}} {{widgetId}}{{/if}}{{#if className}} {{className}}{{/if}}\" data-am-gallery=\"{ {{#if options.gallery}}pureview: true{{/if}} }\" {{#if id}}id=\"{{id}}\"{{/if}}>\n {{#each content}}\n <li>\n <div class=\"am-gallery-item\">\n {{#if link}}\n <a href=\"{{link}}\" class=\"{{className}}\">\n {{#if img}}<img src=\"{{img}}\" {{#if rel}}data-rel=\"{{rel}}\"{{/if}} alt=\"{{title}}\"/>{{/if}}\n {{#if title}}\n <h3 class=\"am-gallery-title\">{{{title}}}</h3>\n {{/if}}\n {{#if desc}}\n <div class=\"am-gallery-desc\">{{{desc}}}</div>\n {{/if}}\n </a>\n {{else}}\n {{#if img}}<img src=\"{{img}}\" {{#if rel}}data-rel=\"{{rel}}\"{{/if}} alt=\"{{title}}\"/>{{/if}}\n {{#if title}}\n <h3 class=\"am-gallery-title\">{{{title}}}</h3>\n {{/if}}\n {{#if desc}}\n <div class=\"am-gallery-desc\">{{{desc}}}</div>\n {{/if}}\n {{/if}}\n </div>\n </li>\n {{/each}}\n </ul>\n{{/this}}\n"); | ||
| 56 | |||
| 57 | hbs.registerPartial('gotop', "{{#this}}\n <div data-am-widget=\"gotop\" class=\"am-gotop {{#if theme}}am-gotop-{{theme}}{{else}}am-gotop-default{{/if}}{{#if widgetId}} {{widgetId}}{{/if}}{{#if className}} {{className}}{{/if}}\" {{#if id}}id=\"{{id}}\"{{/if}}>\n <a href=\"#top\" title=\"{{content.title}}\">\n {{#if content.title}}\n <span class=\"am-gotop-title\">{{content.title}}</span>\n {{/if}}\n {{#if content.customIcon}}\n <img class=\"am-gotop-icon-custom\" src=\"{{content.customIcon}}\" />\n {{else}}\n {{#if content.icon}}\n <i class=\"am-gotop-icon am-icon-{{content.icon}}\"></i>\n {{else}}\n <i class=\"am-gotop-icon am-icon-chevron-up\"></i>\n {{/if}}\n {{/if}}\n </a>\n </div>\n{{/this}}\n"); | ||
| 58 | |||
| 59 | hbs.registerPartial('header', "{{#this}}\n <header data-am-widget=\"header\"\n class=\"am-header{{#if theme}} am-header-{{theme}}{{else}} am-header-default{{/if}}{{#if options.fixed}} am-header-fixed{{/if}}{{#if widgetId}} {{widgetId}}{{/if}}{{#if className}} {{className}}{{/if}}\"{{#if id}}\n id=\"{{id}}\"{{/if}}>\n {{#if content.left}}\n <div class=\"am-header-left am-header-nav\">\n {{#each content.left}}\n <a href=\"{{link}}\" class=\"{{className}}\">\n {{#if title}}\n <span class=\"am-header-nav-title\">\n {{title}}\n </span>\n {{/if}}\n\n {{# if customIcon}}\n <img class=\"am-header-icon-custom\" src=\"{{customIcon}}\" alt=\"\"/>\n {{else}}\n {{#if icon}}\n <i class=\"am-header-icon am-icon-{{icon}}\"></i>\n {{/if}}\n {{/if}}\n </a>\n {{/each}}\n </div>\n {{/if}}\n\n {{#if content.title}}\n <h1 class=\"am-header-title\">\n {{#if content.link}}\n <a href=\"{{content.link}}\" class=\"{{content.className}}\">\n {{{content.title}}}\n </a>\n {{else}}\n {{{content.title}}}\n {{/if}}\n </h1>\n {{/if}}\n\n {{#if content.right}}\n <div class=\"am-header-right am-header-nav\">\n {{#each content.right}}\n <a href=\"{{link}}\" class=\"{{className}}\">\n {{#if title}}\n <span class=\"am-header-nav-title\">\n {{title}}\n </span>\n {{/if}}\n\n {{# if customIcon}}\n <img class=\"am-header-icon-custom\" src=\"{{customIcon}}\" alt=\"\"/>\n {{else}}\n {{#if icon}}\n <i class=\"am-header-icon am-icon-{{icon}}\"></i>\n {{/if}}\n {{/if}}\n </a>\n {{/each}}\n </div>\n {{/if}}\n </header>\n{{/this}}\n"); | ||
| 60 | |||
| 61 | hbs.registerPartial('intro', "{{#this }}\n <div data-am-widget=\"intro\"\n class=\"am-intro am-cf {{#if theme}}am-intro-{{theme}}{{else}}am-intro-default{{/if}}{{#if widgetId}} {{widgetId}}{{/if}}{{#if className}} {{className}}{{/if}}\"\n {{#if id}}id=\"{{id}}\"{{/if}}>\n {{#if content.title}}\n <div class=\"am-intro-hd\">\n <h2 class=\"am-intro-title\">{{{content.title}}}</h2>\n {{#if content.more.link}}\n {{#ifCond options.position '==' 'top'}}\n <a class=\"am-intro-more am-intro-more-top {{content.more.className}}\" href=\"{{content.more.link}}\">{{content.more.title}}</a>\n {{/ifCond}}\n {{/if}}\n </div>\n {{/if}}\n\n <div class=\"am-g am-intro-bd\">\n {{#if content.left}}\n <div\n class=\"am-intro-left {{#if options.leftCols}}am-u-sm-{{options.leftCols}}{{/if}}\">{{{content.left}}}</div>\n {{/if}}\n {{#if content.right}}\n <div\n class=\"am-intro-right {{#if options.rightCols}}am-u-sm-{{options.rightCols}}{{/if}}\">{{{content.right}}}</div>\n {{/if}}\n </div>\n {{#ifCond options.position '==' 'bottom'}}\n <div class=\"am-intro-more-bottom\">\n <a class=\"am-btn am-btn-default {{content.more.className}}\"\n href=\"{{content.more.link}}\">{{content.more.title}}</a>\n </div>\n {{/ifCond}}\n </div>\n{{/this}}\n"); | ||
| 62 | |||
| 63 | hbs.registerPartial('list_news', "{{#this}}\n <div data-am-widget=\"list_news\" class=\"am-list-news{{#if theme}} am-list-news-{{theme}}{{else}} am-list-news-default{{/if}}{{#if widgetId}} {{widgetId}}{{/if}}{{#if className}} {{className}}{{/if}}\" {{#if id}}id=\"{{id}}\"{{/if}}>\n <!--列表标题-->\n {{#if content.header.title}}\n <div class=\"am-list-news-hd am-cf\">\n {{#if content.header.link}} <!--带更多链接-->\n <a href=\"{{content.header.link}}\" class=\"{{content.header.className}}\">\n <h2>{{{content.header.title}}}</h2>\n {{#ifCond content.header.morePosition '==' 'top'}}\n <span class=\"am-list-news-more am-fr\">{{{content.header.moreText}}}</span>\n {{/ifCond}}\n </a>\n {{else}} <!--不带更多链接-->\n <h2>{{{content.header.title}}}</h2>\n {{/if}}\n </div>\n {{/if}}\n\n <div class=\"am-list-news-bd\">\n <ul class=\"am-list\">\n {{#ifCond options.type '==' 'thumb'}}\n {{#ifCond options.thumbPosition '==' 'top'}} <!--缩略图在标题上方-->\n {{#each content.main}}\n <li class=\"am-g{{#if date}} am-list-item-dated{{/if}}{{#if desc}} am-list-item-desced{{/if}}{{#if img}} am-list-item-thumbed am-list-item-thumb-top{{/if}}\">\n {{!--\n am-list-item-dated - 带日期\n am-list-item-desced - 带描述\n am-list-item-thumbed - 带缩略图的\n --}}\n {{#if img}}\n <div class=\"am-list-thumb am-u-sm-12\">\n <a href=\"{{link}}\" class=\"{{className}}\">\n <img src=\"{{img}}\" alt=\"{{title}}\"/>\n </a>\n {{#if thumbAddition}}\n <div class=\"am-list-thumb-addon\">{{{thumbAddition}}}</div>\n {{/if}}\n </div>\n {{/if}}\n\n <div class=\"{{#if img}}{{/if}} am-list-main\">\n {{#if title}}\n <h3 class=\"am-list-item-hd\"><a href=\"{{link}}\" class=\"{{className}}\">{{{title}}}</a></h3>\n {{/if}}\n\n {{#if date}}\n <span class=\"am-list-date\">{{date}}</span>\n {{/if}}\n\n {{#if desc}}\n <div class=\"am-list-item-text\">{{{desc}}}</div>\n {{/if}}\n\n {{#if mainAddition}}\n <div class=\"am-list-news-addon\">{{{mainAddition}}}</div>\n {{/if}}\n </div>\n </li>\n {{/each}}\n {{/ifCond}}\n\n {{#ifCond options.thumbPosition '==' 'bottom-left'}} <!--缩略图在标题下方居左-->\n {{#each content.main}}\n <li class=\"am-g{{#if date}} am-list-item-dated{{/if}}{{#if desc}} am-list-item-desced{{/if}}{{#if img}} am-list-item-thumbed am-list-item-thumb-bottom-left{{/if}}\">\n {{!--\n am-list-item-dated - 带日期\n am-list-item-desced - 带描述\n am-list-item-thumbed - 带缩略图的\n --}}\n {{#if title}}\n <h3 class=\"am-list-item-hd\"><a href=\"{{link}}\" class=\"{{className}}\">{{{title}}}</a></h3>\n {{/if}}\n {{#if img}}\n <div class=\"am-u-sm-4 am-list-thumb\">\n <a href=\"{{link}}\" class=\"{{className}}\">\n <img src=\"{{img}}\" alt=\"{{title}}\"/>\n </a>\n {{#if thumbAddition}}\n <div class=\"am-list-thumb-addon\">{{{thumbAddition}}}</div>\n {{/if}}\n </div>\n {{/if}}\n\n <div class=\"{{#if img}} am-u-sm-8 {{/if}} am-list-main\">\n {{#if date}}\n <span class=\"am-list-date\">{{date}}</span>\n {{/if}}\n\n {{#if desc}}\n <div class=\"am-list-item-text\">{{{desc}}}</div>\n {{/if}}\n\n {{#if mainAddition}}\n <div class=\"am-list-news-addon\">{{{mainAddition}}}</div>\n {{/if}}\n </div>\n </li>\n {{/each}}\n {{/ifCond}}\n\n {{#ifCond options.thumbPosition '==' 'bottom-right'}} <!--缩略图在标题下方居右-->\n {{#each content.main}}\n <li class=\"am-g{{#if date}} am-list-item-dated{{/if}}{{#if desc}} am-list-item-desced{{/if}}{{#if img}} am-list-item-thumbed am-list-item-thumb-bottom-right{{/if}}\">\n {{!--\n am-list-item-dated - 带日期\n am-list-item-desced - 带描述\n am-list-item-thumbed - 带缩略图的\n --}}\n {{#if title}}\n <h3 class=\"am-list-item-hd\"><a href=\"{{link}}\" class=\"{{className}}\">{{{title}}}</a></h3>\n {{/if}}\n\n <div class=\"{{#if img}} am-u-sm-8{{/if}} am-list-main\">\n {{#if date}}\n <span class=\"am-list-date\">{{date}}</span>\n {{/if}}\n\n {{#if desc}}\n <div class=\"am-list-item-text\">{{{desc}}}</div>\n {{/if}}\n\n {{#if mainAddition}}\n <div class=\"am-list-news-addon\">{{{mainAddition}}}</div>\n {{/if}}\n </div>\n {{#if img}}\n <div class=\"am-list-thumb am-u-sm-4\">\n <a href=\"{{link}}\" class=\"{{className}}\">\n <img src=\"{{img}}\" alt=\"{{title}}\"/>\n </a>\n {{#if thumbAddition}}\n <div class=\"am-list-thumb-addon\">{{{thumbAddition}}}</div>\n {{/if}}\n </div>\n {{/if}}\n </li>\n {{/each}}\n {{/ifCond}}\n\n {{#ifCond options.thumbPosition '==' 'left'}} <!--缩略图在标题左边-->\n {{#each content.main}}\n <li class=\"am-g{{#if date}} am-list-item-dated{{/if}}{{#if desc}} am-list-item-desced{{/if}}{{#if img}} am-list-item-thumbed am-list-item-thumb-left{{/if}}\">\n {{!--\n am-list-item-dated - 带日期\n am-list-item-desced - 带描述\n am-list-item-thumbed - 带缩略图的\n --}}\n {{#if img}}\n <div class=\"am-u-sm-4 am-list-thumb\">\n <a href=\"{{link}}\" class=\"{{className}}\">\n <img src=\"{{img}}\" alt=\"{{title}}\"/>\n </a>\n {{#if thumbAddition}}\n <div class=\"am-list-thumb-addon\">{{{thumbAddition}}}</div>\n {{/if}}\n </div>\n {{/if}}\n\n <div class=\"{{#if img}} am-u-sm-8{{/if}} am-list-main\">\n {{#if title}}\n <h3 class=\"am-list-item-hd\"><a href=\"{{link}}\" class=\"{{className}}\">{{{title}}}</a></h3>\n {{/if}}\n {{#if date}}\n <span class=\"am-list-date\">{{date}}</span>\n {{/if}}\n\n {{#if desc}}\n <div class=\"am-list-item-text\">{{{desc}}}</div>\n {{/if}}\n\n {{#if mainAddition}}\n <div class=\"am-list-news-addon\">{{{mainAddition}}}</div>\n {{/if}}\n </div>\n </li>\n {{/each}}\n {{/ifCond}}\n\n {{#ifCond options.thumbPosition '==' 'right'}} <!--缩略图在标题右边-->\n {{#each content.main}}\n <li class=\"am-g{{#if date}} am-list-item-dated{{/if}}{{#if desc}} am-list-item-desced{{/if}}{{#if img}} am-list-item-thumbed am-list-item-thumb-right{{/if}}\">\n {{!--\n am-list-item-dated - 带日期\n am-list-item-desced - 带描述\n am-list-item-thumbed - 带缩略图的\n --}}\n <div class=\"{{#if img}} am-u-sm-8{{/if}} am-list-main\">\n {{#if title}}\n <h3 class=\"am-list-item-hd\"><a href=\"{{link}}\" class=\"{{className}}\">{{{title}}}</a></h3>\n {{/if}}\n\n {{#if date}}\n <span class=\"am-list-date\">{{date}}</span>\n {{/if}}\n\n {{#if desc}}\n <div class=\"am-list-item-text\">{{{desc}}}</div>\n {{/if}}\n\n {{#if mainAddition}}\n <div class=\"am-list-news-addon\">{{{mainAddition}}}</div>\n {{/if}}\n </div>\n {{#if img}}\n <div class=\"am-u-sm-4 am-list-thumb\">\n <a href=\"{{link}}\" class=\"{{className}}\">\n <img src=\"{{img}}\" alt=\"{{title}}\"/>\n </a>\n {{#if thumbAddition}}\n <div class=\"am-list-thumb-addon\">{{{thumbAddition}}}</div>\n {{/if}}\n </div>\n {{/if}}\n </li>\n {{/each}}\n {{/ifCond}}\n\n {{else}}{{!--不带缩略图--}}\n {{#each content.main}}\n <li class=\"am-g{{#if date}} am-list-item-dated{{/if}}{{#if desc}} am-list-item-desced{{/if}}{{#if img}} am-list-item-thumbed{{/if}}\">\n {{!--\n am-list-item-dated - 带日期\n am-list-item-desced - 带描述\n am-list-item-thumbed - 带缩略图的\n --}}\n {{#if title}}\n <a href=\"{{link}}\" class=\"am-list-item-hd {{className}}\">{{{title}}}</a>\n {{/if}}\n\n {{#if date}}\n <span class=\"am-list-date\">{{date}}</span>\n {{/if}}\n\n {{#if desc}}\n <div class=\"am-list-item-text\">{{{desc}}}</div>\n {{/if}}\n\n {{#if mainAddition}}\n <div class=\"am-list-news-addon\">{{{mainAddition}}}</div>\n {{/if}}\n </li>\n {{/each}}\n {{/ifCond}}\n </ul>\n </div>\n\n {{#ifCond content.header.morePosition '==' 'bottom'}}<!--更多在底部-->\n {{#if content.header.link}}\n <div class=\"am-list-news-ft\">\n <a class=\"am-list-news-more am-btn am-btn-default {{content.header.className}}\" href=\"{{content.header.link}}\">{{{content.header.moreText}}}</a>\n </div>\n {{/if}}\n {{/ifCond}}\n </div>\n{{/this}}\n"); | ||
| 64 | |||
| 65 | hbs.registerPartial('map', "{{#this}}\n <div data-am-widget=\"map\" class=\"am-map {{#if theme}}am-map-{{theme}}{{else}}am-map-default{{/if}}{{#if widgetId}} {{widgetId}}{{/if}}{{#if className}} {{className}}{{/if}}\"\n data-name=\"{{options.name}}\" data-address=\"{{options.address}}\" data-longitude=\"{{options.longitude}}\" data-latitude=\"{{options.latitude}}\" data-scaleControl=\"{{options.scaleControl}}\" data-zoomControl=\"{{options.zoomControl}}\" data-setZoom=\"{{options.setZoom}}\" data-icon=\"{{options.icon}}\">\n <div id=\"bd-map\"></div>\n </div>\n{{/this}}"); | ||
| 66 | |||
| 67 | hbs.registerPartial('mechat', "{{#this}}\n <section data-am-widget=\"mechat\" class=\"am-mechat{{#if theme}} am-mechat-{{theme}}{{else}} am-mechat-default{{/if}}{{#if widgetId}} {{widgetId}}{{/if}}{{#if className}} {{className}}{{/if}}\" {{#if id}} id=\"{{id}}\" {{/if}} {{#if options.unitid}}data-am-mechat-unitid=\"{{options.unitid}}\"{{/if}}>\n <div id=\"mechat\"></div>\n </section>\n{{/this}}"); | ||
| 68 | |||
| 69 | hbs.registerPartial('menu', "{{#this}}\n <nav data-am-widget=\"menu\" class=\"am-menu {{#if theme}} am-menu-{{theme}}{{else}} am-menu-default{{/if}}{{#if widgetId}} {{widgetId}}{{/if}}{{#if className}} {{className}}{{/if}}\" {{options.dataset}} {{#if id}}id=\"{{id}}\"{{/if}}\n {{#ifCond theme '==' 'dropdown1'}} data-am-menu-collapse{{/ifCond}}\n {{#ifCond theme '==' 'dropdown2'}} data-am-menu-collapse{{/ifCond}}\n {{#ifCond theme '==' 'slide1'}} data-am-menu-collapse{{/ifCond}}\n {{#ifCond theme '==' 'offcanvas1'}} data-am-menu-offcanvas{{/ifCond}}\n {{#ifCond theme '==' 'offcanvas2'}} data-am-menu-offcanvas{{/ifCond}}> {{!-- 与模板深耦合,与 JS 浅耦合 --}}\n <a href=\"javascript: void(0)\" class=\"am-menu-toggle\">\n {{#if options.toggleTitle}}\n <span class=\"am-menu-toggle-title\">{{options.toggleTitle}}</span>\n {{/if}}\n {{#if options.toggleCustomIcon}}\n <img src=\"{{options.toggleCustomIcon}}\" alt=\"Menu Toggle\"/>\n {{else}}\n {{#if options.toggleIcon}}\n <i class=\"am-menu-toggle-icon am-icon-{{options.toggleIcon}}\"></i>\n {{else}}\n <i class=\"am-menu-toggle-icon am-icon-bars\"></i>\n {{/if}}\n {{/if}}\n </a>\n\n {{!-- offCanvas menu Wrap --}}\n {{!-- 问题:方便用户,但是与主题名称(类名)耦合过深 --}}\n {{#ifCond theme '==' 'offcanvas1'}}\n <div class=\"am-offcanvas\" {{#if options.closeOffCanvasOnclick}}data-dismiss-on=\"click\"{{/if}}>\n <div class=\"am-offcanvas-bar{{#if options.offCanvasFlip}} am-offcanvas-bar-flip{{/if}}\">\n {{/ifCond}}\n {{#ifCond theme '==' 'offcanvas2'}}\n <div class=\"am-offcanvas\">\n <div class=\"am-offcanvas-bar{{#if options.offCanvasFlip}} am-offcanvas-bar-flip{{/if}}\">\n {{/ifCond}}\n\n {{#if content}}\n <ul class=\"am-menu-nav {{#if options.cols}}am-avg-sm-{{options\n .cols}}{{else}}am-avg-sm-1{{/if}}{{#ifCond theme '==' 'dropdown1'}} am-collapse{{/ifCond}}{{#ifCond theme\n '==' 'dropdown2'}} am-collapse{{/ifCond}}{{#ifCond theme\n '==' 'slide1'}} am-collapse{{/ifCond}}\">\n {{#each content}}\n <li class=\"{{#if subMenu}}am-parent{{/if}}{{#if className}} {{className}}{{/if}}\">\n <a href=\"{{link}}\" class=\"{{className}}\" {{#if target}}target=\"{{target}}\" {{/if}}>{{{title}}}</a>\n {{#if subMenu}}\n <ul class=\"am-menu-sub am-collapse {{#if subCols}} am-avg-sm-{{subCols}}{{else}}\n am-avg-sm-1{{/if}} {{subMenuClassName}}\">\n {{#each subMenu}}\n <li class=\"{{#if subMenu}} am-parent{{/if}}{{#if className}} {{className}}{{/if}}\">\n <a href=\"{{link}}\" class=\"{{className}}\" {{#if target}}target=\"{{target}}\" {{/if}}>{{{title}}}</a>\n </li>\n {{/each}}\n {{!-- 显示进入栏目链接 --}}\n {{#if channelLink}}\n <li class=\"am-menu-nav-channel\"><a href=\"{{link}}\" class=\"{{className}}\" title=\"{{title}}\">{{{channelLink}}}</a></li>\n {{/if}}\n </ul>\n {{/if}}\n </li>\n {{/each}}\n </ul>\n {{/if}}\n\n {{#ifCond theme '==' 'offcanvas1'}}\n </div>\n </div>\n {{/ifCond}}\n {{#ifCond theme '==' 'offcanvas2'}}\n </div>\n </div>\n {{/ifCond}}\n {{!-- 不要问我为什么这样写,我也不想这样 --}}\n </nav>\n{{/this}}\n"); | ||
| 70 | |||
| 71 | hbs.registerPartial('navbar', "{{#this}}\n <div data-am-widget=\"navbar\" class=\"am-navbar am-cf {{#if theme}}am-navbar-{{theme}}{{else}}am-navbar-default{{/if}} {{#if options.iconPosition}}am-navbar-inline{{/if}}{{#if widgetId}} {{widgetId}}{{/if}}{{#if className}} {{className}}{{/if}}\"\n id=\"{{id}}\">\n {{#if content}}\n <ul class=\"am-navbar-nav am-cf {{#if options.cols}}am-avg-sm-{{options.cols}}{{/if}}\">\n {{#each content}}\n <li {{{dataApi}}}>\n <a href=\"{{link}}\" class=\"{{className}}\">\n {{#if customIcon}}\n <img src=\"{{customIcon}}\" alt=\"{{title}}\"/>\n {{else}}\n {{#if icon}}\n <span class=\"am-icon-{{icon}}\"></span>\n {{/if}}\n {{/if}}\n {{#if title}}\n <span class=\"am-navbar-label\">{{title}}</span>\n {{/if}}\n </a>\n </li>\n {{/each}}\n </ul>\n {{/if}}\n </div>\n{{/this}}\n"); | ||
| 72 | |||
| 73 | hbs.registerPartial('pagination', "{{#this}}\n <ul data-am-widget=\"pagination\"\n class=\"am-pagination {{#if theme}}am-pagination-{{theme}}{{else}}am-pagination-default{{/if}}{{#if widgetId}} {{widgetId}}{{/if}}{{#if className}} {{className}}{{/if}}\"\n {{#if id}}id=\"{{id}}\"{{/if}}>\n\n {{#if content.firstTitle}}\n <li class=\"am-pagination-first {{content.firstClassName}}\">\n <a href=\"{{content.firstLink}}\" class=\"{{content.firstClassName}}\">{{{content.firstTitle}}}</a>\n </li>\n {{/if}}\n\n {{#if content.prevTitle}}\n <li class=\"am-pagination-prev {{content.prevClassName}}\">\n <a href=\"{{content.prevLink}}\" class=\"{{content.prevClassName}}\">{{{content.prevTitle}}}</a>\n </li>\n {{/if}}\n\n {{! 移除 options.select,根据主题来判断结构,无奈 handlebars 逻辑处理...}}\n\n {{#if content.page}}\n {{#ifCond theme '==' 'select'}}\n <li class=\"am-pagination-select\">\n <select>\n {{#each content.page}}\n <option value=\"{{link}}\" class=\"{{className}}\">{{title}}{{#if ../content.total}}\n / {{../../content.total}}{{/if}}\n </option>\n {{/each}}\n </select>\n </li>\n {{else}}\n {{#ifCond theme '==' 'one'}}\n <li class=\"am-pagination-select\">\n <select>\n {{#each content.page}}\n {{content.total}}\n <option value=\"{{link}}\" class=\"{{className}}\">{{title}}{{#if ../content.total}}\n / {{../../content.total}}{{/if}}\n </option>\n {{/each}}\n </select>\n </li>\n {{else}}\n {{#each content.page}}\n <li class=\"{{className}}\">\n <a href=\"{{link}}\" class=\"{{className}}\">{{{title}}}</a>\n </li>\n {{/each}}\n {{/ifCond}}\n {{/ifCond}}\n\n {{/if}}\n\n {{#if content.nextTitle}}\n <li class=\"am-pagination-next {{content.nextClassName}}\">\n <a href=\"{{content.nextLink}}\" class=\"{{content.nextClassName}}\">{{{content.nextTitle}}}</a>\n </li>\n {{/if}}\n\n {{#if content.lastTitle}}\n <li class=\"am-pagination-last {{content.lastClassName}}\">\n <a href=\"{{content.lastLink}}\" class=\"{{content.lastClassName}}\">{{{content.lastTitle}}}</a>\n </li>\n {{/if}}\n </ul>\n{{/this}}\n"); | ||
| 74 | |||
| 75 | hbs.registerPartial('paragraph', "{{#this}}\n <article data-am-widget=\"paragraph\"\n class=\"am-paragraph {{#if theme}}am-paragraph-{{theme}}{{else}}am-paragraph-default{{/if}}{{#if widgetId}} {{widgetId}}{{/if}}{{#if className}} {{className}}{{/if}}\"\n {{#if id}}id=\"{{id}}\"{{/if}}\n data-am-paragraph=\"{ {{#if options.tableScrollable}}tableScrollable: true,{{/if}} {{#if options.imgLightbox}}pureview: true{{/if}} }\">\n\n {{#if content}}\n {{{ content.content }}}\n {{/if}}\n </article>\n{{/this}}\n"); | ||
| 76 | |||
| 77 | hbs.registerPartial('slider', "{{#this}}\n <div data-am-widget=\"slider\" class=\"am-slider {{#if theme}}am-slider-{{theme}}{{else}}am-slider-default{{/if}}{{#if widgetId}} {{widgetId}}{{/if}}{{#if className}} {{className}}{{/if}}\" data-am-slider='{{sliderConfig}}' {{#if id}}id=\"{{id}}\"{{/if}}>\n <ul class=\"am-slides\">\n {{#each content}}\n <li{{#if thumb}} data-thumb=\"{{thumb}}\"{{/if}}>\n {{#if link}}\n <a href=\"{{link}}\" class=\"{{className}}\">\n {{/if}}\n {{#if img}}\n \t<img src=\"{{img}}\">\n {{/if}}\n {{#if desc}}\n <div class=\"am-slider-desc\">{{{desc}}}</div>\n {{/if}}\n {{#if link}}</a>{{/if}} {{!--/end link--}}\n </li>\n {{/each}}\n </ul>\n</div>\n{{/this}}"); | ||
| 78 | |||
| 79 | hbs.registerPartial('tabs', "{{#this}}\n <div data-am-widget=\"tabs\"\n class=\"am-tabs{{#if theme}} am-tabs-{{theme}}{{else}} am-tabs-default{{/if}}{{#if widgetId}} {{widgetId}}{{/if}}{{#if className}} {{className}}{{/if}}\"\n {{#if id}}id=\"{{id}}\"{{/if}} {{#if options.noSwipe}}data-am-tabs-noswipe=\"1\"{{/if}}>\n {{#if content}}\n <ul class=\"am-tabs-nav am-cf\">\n {{#each content}}\n <li class=\"{{#if active}}am-active{{/if}}\"><a href=\"[data-tab-panel-{{@index}}]\">{{{title}}}</a></li>\n {{/each}}\n </ul>\n <div class=\"am-tabs-bd\">\n {{#each content}}\n <div data-tab-panel-{{@index}} class=\"am-tab-panel {{#if active}}am-active{{/if}}\">\n {{{content}}}\n </div>\n {{/each}}\n </div>\n {{/if}}\n </div>\n{{/this}}\n"); | ||
| 80 | |||
| 81 | hbs.registerPartial('titlebar', "{{#this}}\n<div data-am-widget=\"titlebar\" class=\"am-titlebar {{#if theme}}am-titlebar-{{theme}}{{else}}am-titlebar-default{{/if}}{{#if widgetId}} {{widgetId}}{{/if}}{{#if className}} {{className}}{{/if}}\" {{#if id}}id=\"{{id}}\"{{/if}}>\n {{#if content.title}}\n <h2 class=\"am-titlebar-title {{#unless content.link}}{{content.className}}{{/unless}}\">\n {{#if content.link}}\n <a href=\"{{content.link}}\" class=\"{{content.className}}\">{{{content.title}}}</a>\n {{else}}\n {{{content.title}}}\n {{/if}}\n </h2>\n {{/if}}\n\n {{#if content.nav}}\n <nav class=\"am-titlebar-nav\">\n {{#each content.nav}}\n <a href=\"{{link}}\" class=\"{{className}}\">{{{title}}}</a>\n {{/each}}\n </nav>\n {{/if}}\n</div>\n{{/this}}\n"); | ||
| 82 | |||
| 83 | hbs.registerPartial('wechatpay', "{{#this}}\n <div data-am-widget=\"wechatpay\" class=\"am-wechatpay{{#if theme}} am-wechatpay-{{theme}}{{else}} am-wechatpay-default{{/if}}{{#if widgetId}} {{widgetId}}{{/if}}{{#if className}} {{className}}{{/if}}\"{{#if id}} id=\"{{id}}\"{{/if}} data-wechat-pay=\"{ {{#each content.order}} {{@key}}: '{{this}}',{{/each}} }\">\n <button type=\"button\" class=\"am-btn am-btn-primary am-btn-block am-wechatpay-btn\">\n {{#if content.title}}\n {{content.title}}\n {{else}}\n 微信支付\n {{/if}}\n </button>\n </div>\n{{/this}}\n"); | ||
| 84 | |||
| 85 | }; | ||
| 86 | |||
| 87 | if (typeof module !== 'undefined' && module.exports) { | ||
| 88 | module.exports = registerAMUIPartials; | ||
| 89 | } | ||
| 90 | |||
| 91 | this.Handlebars && registerAMUIPartials(this.Handlebars); | ||
| 92 | }).call(this); |
| 1 | /*! Amaze UI v2.7.2 ~ Handlebars helper | by Amaze UI Team | (c) 2016 AllMobilize, Inc. | Licensed under MIT | 2016-08-17T16:17:24+0800 */ | ||
| 2 | (function(i){"use strict";var n=function(i){i.registerHelper("ifCond",function(i,n,t,a){switch(n){case"==":return i==t?a.fn(this):a.inverse(this);case"===":return i===t?a.fn(this):a.inverse(this);case"<":return i<t?a.fn(this):a.inverse(this);case"<=":return i<=t?a.fn(this):a.inverse(this);case">":return i>t?a.fn(this):a.inverse(this);case">=":return i>=t?a.fn(this):a.inverse(this);default:return a.inverse(this)}return a.inverse(this)})};"undefined"!=typeof module&&module.exports&&(module.exports=n),this.Handlebars&&n(this.Handlebars)}).call(this),function(i){"use strict";var n=function(i){i.registerPartial("accordion",'{{#this}}\n <section data-am-widget="accordion" class="am-accordion {{#if theme}}am-accordion-{{theme}}{{else}}am-accordion-default{{/if}}{{#if widgetId}} {{widgetId}}{{/if}}{{#if className}} {{className}}{{/if}}"{{#if id}} id="{{id}}"{{/if}} data-am-accordion=\'{ {{#if options.multiple}}"multiple": true{{/if}} }\'>\n {{#each content}}\n <dl class="am-accordion-item{{#if active}} am-active{{/if}}{{#if disabled}} am-disabled{{/if}}">\n <dt class="am-accordion-title">\n {{{title}}}\n </dt>\n <dd class="am-accordion-bd am-collapse {{#if active}}am-in{{/if}}">\n <!-- 规避 Collapase 处理有 padding 的折叠内容计算计算有误问题, 加一个容器 -->\n <div class="am-accordion-content">\n {{{content}}}\n </div>\n </dd>\n </dl>\n {{/each}}\n </section>\n{{/this}}\n'),i.registerPartial("divider",'{{#this}}\n <hr data-am-widget="divider" style="{{#if options.width}}width:{{{options.width}}};{{/if}}{{#if options.height}}height:{{{options.height}}};{{/if}}" class="am-divider {{#if theme}}am-divider-{{theme}}{{else}}am-divider-default{{/if}}{{#if widgetId}} {{widgetId}}{{/if}}{{#if className}} {{className}}{{/if}}"{{#if id}} id="{{id}}"{{/if}} />\n{{/this}}\n'),i.registerPartial("duoshuo",'{{#this}}\n <div data-am-widget="duoshuo" class="am-duoshuo{{#if theme}} am-duoshuo-{{theme}}{{else}} am-duoshuo-default{{/if}}{{#if widgetId}} {{widgetId}}{{/if}}{{#if className}} {{className}}{{/if}}"{{#if id}} id="{{id}}"{{/if}} {{#if options.shortName}}data-ds-short-name="{{options.shortName}}"{{/if}}>\n <div class="ds-thread" {{#if content}}{{#each content}}{{#ifCond @key \'==\' \'threadKey\'}} data-thread-key="{{this}}"{{else}} data-{{@key}}="{{this}}"{{/ifCond}}{{/each}}{{/if}}>\n </div>\n </div>\n{{/this}}'),i.registerPartial("figure",'{{#this}}\n <figure data-am-widget="figure" class="am am-figure {{#if theme}}am-figure-{{theme}}{{else}}am-figure-default{{/if}} {{#if widgetId}} {{widgetId}}{{/if}}{{#if className}} {{className}}{{/if}}" {{#if id}}\n id="{{id}}"{{/if}} data-am-figure="{ {{#if options.zoomAble}} pureview: \'{{options.zoomAble}}\'{{/if}} }">\n {{#if content.link}}<a href="{{content.link}}" title="{{content.figcaption}}" class="{{className}}">{{/if}}\n\n {{#if options.figcaptionPosition}}\n {{#ifCond options.figcaptionPosition \'==\' \'top\'}}\n {{#if content.figcaption}}\n <figcaption class="am-figure-capition-top">\n {{content.figcaption}}\n </figcaption>\n {{/if}}\n {{/ifCond}}\n {{/if}}\n\n {{#if content.img}}\n <img src="{{content.img}}" {{#if content.rel}}data-rel="{{content.rel}}"{{/if}} alt="{{#if content.imgAlt}}{{content.imgAlt}}{{else}}{{content.figcaption}}{{/if}}"/>\n {{/if}}\n {{#if options.figcaptionPosition}}\n {{#ifCond options.figcaptionPosition \'==\' \'bottom\'}}\n {{#if content.figcaption}}\n <figcaption class="am-figure-capition-btm">\n {{content.figcaption}}\n </figcaption>\n {{/if}}\n {{/ifCond}}\n {{else}}\n {{#if content.figcaption}}\n <figcaption class="am-figure-capition-btm">\n {{content.figcaption}}\n </figcaption>\n {{/if}}\n {{/if}}\n\n {{#if content.link}}</a>{{/if}}\n </figure>\n{{/this}}\n'),i.registerPartial("footer",'{{#this}}\n <footer data-am-widget="footer"\n class="am-footer {{#if theme}}am-footer-{{theme}}{{else}}am-footer-default {{/if}}{{#if widgetId}} {{widgetId}}{{/if}}{{#if className}} {{className}}{{/if}}"\n {{#if id}}id="{{id}}"{{/if}} data-am-footer="{ {{#if options.addToHS}}addToHS: 1{{/if}} }">\n <div class="am-footer-switch">\n <span class="{{#if options.modal}}am-footer-ysp{{/if}}" data-rel="mobile"\n data-am-modal="{target: \'#am-switch-mode\'}">\n {{#unless content.switchName}}\n {{#ifCond content.lang \'==\' \'en\'}}\n Mobile\n {{else}}\n 云适配版\n {{/ifCond}}\n {{else}}\n {{content.switchName}}\n {{/unless}}\n </span>\n <span class="am-footer-divider"> | </span>\n <a id="godesktop" data-rel="desktop" class="am-footer-desktop" href="javascript:">\n {{#ifCond content.lang \'==\' \'en\'}}\n Desktop\n {{else}}\n 电脑版\n {{/ifCond}}\n </a>\n </div>\n <div class="am-footer-miscs {{#if options.textPosition}}am-text-left{{/if}}">\n\n {{#if options.techSupportCo}}\n {{#ifCond content.lang \'==\' \'en\'}}\n <p>Supported by {{#if options.techSupportSite}}<a href="{{options.techSupportSite}}"\n title="{{options.techSupportCo}}"\n target="_blank"> class="{{className}}"{{{options.techSupportCo}}}</a>{{else}}{{{options.techSupportCo}}}{{/if}}\n .</p>\n {{else}}\n <p>由 {{#if options.techSupportSite}}<a href="{{options.techSupportSite}}" title="{{options.techSupportCo}}"\n target="_blank" class="{{techSupportClassName}}">{{{options.techSupportCo}}}</a>{{else}}{{{options.techSupportCo}}}{{/if}}\n 提供技术支持</p>\n {{/ifCond}}\n {{/if}}\n {{#each content.companyInfo}}\n <p>{{{detail}}}</p>\n {{/each}}\n </div>\n </footer>\n\n <div id="am-footer-modal"\n class="am-modal am-modal-no-btn am-switch-mode-m {{#if theme}}am-switch-mode-m-{{theme}}{{/if}}">\n <div class="am-modal-dialog">\n <div class="am-modal-hd am-modal-footer-hd">\n <a href="javascript:void(0)" data-dismiss="modal" class="am-close am-close-spin {{className}}" data-am-modal-close>×</a>\n </div>\n <div class="am-modal-bd">\n {{#ifCond content.lang \'==\' \'en\'}}\n You are visiting\n {{else}}\n 您正在浏览的是\n {{/ifCond}}\n\n <span class="am-switch-mode-owner">\n {{#if content.owner}}\n {{content.owner}}\n {{else}}\n 云适配\n {{/if}}\n </span>\n\n <span class="am-switch-mode-slogan">\n {{#if content.slogan}}\n {{{content.slogan}}}\n {{else}}\n {{#ifCond content.lang \'==\' \'en\'}}\n mobilized version for your device.\n {{else}}\n 为您当前手机订制的移动网站。\n {{/ifCond}}\n {{/if}}\n </span>\n </div>\n </div>\n </div>\n{{/this}}\n'),i.registerPartial("gallery",'{{#this}}\n <ul data-am-widget="gallery" class="am-gallery{{#if options.cols}} am-avg-sm-{{options.cols}}{{else}} am-avg-sm-2{{/if}}\n am-avg-md-3 am-avg-lg-4 {{#if\n theme}}am-gallery-{{theme}}{{else}}am-gallery-default{{/if}}{{#if widgetId}} {{widgetId}}{{/if}}{{#if className}} {{className}}{{/if}}" data-am-gallery="{ {{#if options.gallery}}pureview: true{{/if}} }" {{#if id}}id="{{id}}"{{/if}}>\n {{#each content}}\n <li>\n <div class="am-gallery-item">\n {{#if link}}\n <a href="{{link}}" class="{{className}}">\n {{#if img}}<img src="{{img}}" {{#if rel}}data-rel="{{rel}}"{{/if}} alt="{{title}}"/>{{/if}}\n {{#if title}}\n <h3 class="am-gallery-title">{{{title}}}</h3>\n {{/if}}\n {{#if desc}}\n <div class="am-gallery-desc">{{{desc}}}</div>\n {{/if}}\n </a>\n {{else}}\n {{#if img}}<img src="{{img}}" {{#if rel}}data-rel="{{rel}}"{{/if}} alt="{{title}}"/>{{/if}}\n {{#if title}}\n <h3 class="am-gallery-title">{{{title}}}</h3>\n {{/if}}\n {{#if desc}}\n <div class="am-gallery-desc">{{{desc}}}</div>\n {{/if}}\n {{/if}}\n </div>\n </li>\n {{/each}}\n </ul>\n{{/this}}\n'),i.registerPartial("gotop",'{{#this}}\n <div data-am-widget="gotop" class="am-gotop {{#if theme}}am-gotop-{{theme}}{{else}}am-gotop-default{{/if}}{{#if widgetId}} {{widgetId}}{{/if}}{{#if className}} {{className}}{{/if}}" {{#if id}}id="{{id}}"{{/if}}>\n <a href="#top" title="{{content.title}}">\n {{#if content.title}}\n <span class="am-gotop-title">{{content.title}}</span>\n {{/if}}\n {{#if content.customIcon}}\n <img class="am-gotop-icon-custom" src="{{content.customIcon}}" />\n {{else}}\n {{#if content.icon}}\n <i class="am-gotop-icon am-icon-{{content.icon}}"></i>\n {{else}}\n <i class="am-gotop-icon am-icon-chevron-up"></i>\n {{/if}}\n {{/if}}\n </a>\n </div>\n{{/this}}\n'),i.registerPartial("header",'{{#this}}\n <header data-am-widget="header"\n class="am-header{{#if theme}} am-header-{{theme}}{{else}} am-header-default{{/if}}{{#if options.fixed}} am-header-fixed{{/if}}{{#if widgetId}} {{widgetId}}{{/if}}{{#if className}} {{className}}{{/if}}"{{#if id}}\n id="{{id}}"{{/if}}>\n {{#if content.left}}\n <div class="am-header-left am-header-nav">\n {{#each content.left}}\n <a href="{{link}}" class="{{className}}">\n {{#if title}}\n <span class="am-header-nav-title">\n {{title}}\n </span>\n {{/if}}\n\n {{# if customIcon}}\n <img class="am-header-icon-custom" src="{{customIcon}}" alt=""/>\n {{else}}\n {{#if icon}}\n <i class="am-header-icon am-icon-{{icon}}"></i>\n {{/if}}\n {{/if}}\n </a>\n {{/each}}\n </div>\n {{/if}}\n\n {{#if content.title}}\n <h1 class="am-header-title">\n {{#if content.link}}\n <a href="{{content.link}}" class="{{content.className}}">\n {{{content.title}}}\n </a>\n {{else}}\n {{{content.title}}}\n {{/if}}\n </h1>\n {{/if}}\n\n {{#if content.right}}\n <div class="am-header-right am-header-nav">\n {{#each content.right}}\n <a href="{{link}}" class="{{className}}">\n {{#if title}}\n <span class="am-header-nav-title">\n {{title}}\n </span>\n {{/if}}\n\n {{# if customIcon}}\n <img class="am-header-icon-custom" src="{{customIcon}}" alt=""/>\n {{else}}\n {{#if icon}}\n <i class="am-header-icon am-icon-{{icon}}"></i>\n {{/if}}\n {{/if}}\n </a>\n {{/each}}\n </div>\n {{/if}}\n </header>\n{{/this}}\n'),i.registerPartial("intro",'{{#this }}\n <div data-am-widget="intro"\n class="am-intro am-cf {{#if theme}}am-intro-{{theme}}{{else}}am-intro-default{{/if}}{{#if widgetId}} {{widgetId}}{{/if}}{{#if className}} {{className}}{{/if}}"\n {{#if id}}id="{{id}}"{{/if}}>\n {{#if content.title}}\n <div class="am-intro-hd">\n <h2 class="am-intro-title">{{{content.title}}}</h2>\n {{#if content.more.link}}\n {{#ifCond options.position \'==\' \'top\'}}\n <a class="am-intro-more am-intro-more-top {{content.more.className}}" href="{{content.more.link}}">{{content.more.title}}</a>\n {{/ifCond}}\n {{/if}}\n </div>\n {{/if}}\n\n <div class="am-g am-intro-bd">\n {{#if content.left}}\n <div\n class="am-intro-left {{#if options.leftCols}}am-u-sm-{{options.leftCols}}{{/if}}">{{{content.left}}}</div>\n {{/if}}\n {{#if content.right}}\n <div\n class="am-intro-right {{#if options.rightCols}}am-u-sm-{{options.rightCols}}{{/if}}">{{{content.right}}}</div>\n {{/if}}\n </div>\n {{#ifCond options.position \'==\' \'bottom\'}}\n <div class="am-intro-more-bottom">\n <a class="am-btn am-btn-default {{content.more.className}}"\n href="{{content.more.link}}">{{content.more.title}}</a>\n </div>\n {{/ifCond}}\n </div>\n{{/this}}\n'),i.registerPartial("list_news",'{{#this}}\n <div data-am-widget="list_news" class="am-list-news{{#if theme}} am-list-news-{{theme}}{{else}} am-list-news-default{{/if}}{{#if widgetId}} {{widgetId}}{{/if}}{{#if className}} {{className}}{{/if}}" {{#if id}}id="{{id}}"{{/if}}>\n <!--列表标题-->\n {{#if content.header.title}}\n <div class="am-list-news-hd am-cf">\n {{#if content.header.link}} <!--带更多链接-->\n <a href="{{content.header.link}}" class="{{content.header.className}}">\n <h2>{{{content.header.title}}}</h2>\n {{#ifCond content.header.morePosition \'==\' \'top\'}}\n <span class="am-list-news-more am-fr">{{{content.header.moreText}}}</span>\n {{/ifCond}}\n </a>\n {{else}} <!--不带更多链接-->\n <h2>{{{content.header.title}}}</h2>\n {{/if}}\n </div>\n {{/if}}\n\n <div class="am-list-news-bd">\n <ul class="am-list">\n {{#ifCond options.type \'==\' \'thumb\'}}\n {{#ifCond options.thumbPosition \'==\' \'top\'}} <!--缩略图在标题上方-->\n {{#each content.main}}\n <li class="am-g{{#if date}} am-list-item-dated{{/if}}{{#if desc}} am-list-item-desced{{/if}}{{#if img}} am-list-item-thumbed am-list-item-thumb-top{{/if}}">\n {{!--\n am-list-item-dated - 带日期\n am-list-item-desced - 带描述\n am-list-item-thumbed - 带缩略图的\n --}}\n {{#if img}}\n <div class="am-list-thumb am-u-sm-12">\n <a href="{{link}}" class="{{className}}">\n <img src="{{img}}" alt="{{title}}"/>\n </a>\n {{#if thumbAddition}}\n <div class="am-list-thumb-addon">{{{thumbAddition}}}</div>\n {{/if}}\n </div>\n {{/if}}\n\n <div class="{{#if img}}{{/if}} am-list-main">\n {{#if title}}\n <h3 class="am-list-item-hd"><a href="{{link}}" class="{{className}}">{{{title}}}</a></h3>\n {{/if}}\n\n {{#if date}}\n <span class="am-list-date">{{date}}</span>\n {{/if}}\n\n {{#if desc}}\n <div class="am-list-item-text">{{{desc}}}</div>\n {{/if}}\n\n {{#if mainAddition}}\n <div class="am-list-news-addon">{{{mainAddition}}}</div>\n {{/if}}\n </div>\n </li>\n {{/each}}\n {{/ifCond}}\n\n {{#ifCond options.thumbPosition \'==\' \'bottom-left\'}} <!--缩略图在标题下方居左-->\n {{#each content.main}}\n <li class="am-g{{#if date}} am-list-item-dated{{/if}}{{#if desc}} am-list-item-desced{{/if}}{{#if img}} am-list-item-thumbed am-list-item-thumb-bottom-left{{/if}}">\n {{!--\n am-list-item-dated - 带日期\n am-list-item-desced - 带描述\n am-list-item-thumbed - 带缩略图的\n --}}\n {{#if title}}\n <h3 class="am-list-item-hd"><a href="{{link}}" class="{{className}}">{{{title}}}</a></h3>\n {{/if}}\n {{#if img}}\n <div class="am-u-sm-4 am-list-thumb">\n <a href="{{link}}" class="{{className}}">\n <img src="{{img}}" alt="{{title}}"/>\n </a>\n {{#if thumbAddition}}\n <div class="am-list-thumb-addon">{{{thumbAddition}}}</div>\n {{/if}}\n </div>\n {{/if}}\n\n <div class="{{#if img}} am-u-sm-8 {{/if}} am-list-main">\n {{#if date}}\n <span class="am-list-date">{{date}}</span>\n {{/if}}\n\n {{#if desc}}\n <div class="am-list-item-text">{{{desc}}}</div>\n {{/if}}\n\n {{#if mainAddition}}\n <div class="am-list-news-addon">{{{mainAddition}}}</div>\n {{/if}}\n </div>\n </li>\n {{/each}}\n {{/ifCond}}\n\n {{#ifCond options.thumbPosition \'==\' \'bottom-right\'}} <!--缩略图在标题下方居右-->\n {{#each content.main}}\n <li class="am-g{{#if date}} am-list-item-dated{{/if}}{{#if desc}} am-list-item-desced{{/if}}{{#if img}} am-list-item-thumbed am-list-item-thumb-bottom-right{{/if}}">\n {{!--\n am-list-item-dated - 带日期\n am-list-item-desced - 带描述\n am-list-item-thumbed - 带缩略图的\n --}}\n {{#if title}}\n <h3 class="am-list-item-hd"><a href="{{link}}" class="{{className}}">{{{title}}}</a></h3>\n {{/if}}\n\n <div class="{{#if img}} am-u-sm-8{{/if}} am-list-main">\n {{#if date}}\n <span class="am-list-date">{{date}}</span>\n {{/if}}\n\n {{#if desc}}\n <div class="am-list-item-text">{{{desc}}}</div>\n {{/if}}\n\n {{#if mainAddition}}\n <div class="am-list-news-addon">{{{mainAddition}}}</div>\n {{/if}}\n </div>\n {{#if img}}\n <div class="am-list-thumb am-u-sm-4">\n <a href="{{link}}" class="{{className}}">\n <img src="{{img}}" alt="{{title}}"/>\n </a>\n {{#if thumbAddition}}\n <div class="am-list-thumb-addon">{{{thumbAddition}}}</div>\n {{/if}}\n </div>\n {{/if}}\n </li>\n {{/each}}\n {{/ifCond}}\n\n {{#ifCond options.thumbPosition \'==\' \'left\'}} <!--缩略图在标题左边-->\n {{#each content.main}}\n <li class="am-g{{#if date}} am-list-item-dated{{/if}}{{#if desc}} am-list-item-desced{{/if}}{{#if img}} am-list-item-thumbed am-list-item-thumb-left{{/if}}">\n {{!--\n am-list-item-dated - 带日期\n am-list-item-desced - 带描述\n am-list-item-thumbed - 带缩略图的\n --}}\n {{#if img}}\n <div class="am-u-sm-4 am-list-thumb">\n <a href="{{link}}" class="{{className}}">\n <img src="{{img}}" alt="{{title}}"/>\n </a>\n {{#if thumbAddition}}\n <div class="am-list-thumb-addon">{{{thumbAddition}}}</div>\n {{/if}}\n </div>\n {{/if}}\n\n <div class="{{#if img}} am-u-sm-8{{/if}} am-list-main">\n {{#if title}}\n <h3 class="am-list-item-hd"><a href="{{link}}" class="{{className}}">{{{title}}}</a></h3>\n {{/if}}\n {{#if date}}\n <span class="am-list-date">{{date}}</span>\n {{/if}}\n\n {{#if desc}}\n <div class="am-list-item-text">{{{desc}}}</div>\n {{/if}}\n\n {{#if mainAddition}}\n <div class="am-list-news-addon">{{{mainAddition}}}</div>\n {{/if}}\n </div>\n </li>\n {{/each}}\n {{/ifCond}}\n\n {{#ifCond options.thumbPosition \'==\' \'right\'}} <!--缩略图在标题右边-->\n {{#each content.main}}\n <li class="am-g{{#if date}} am-list-item-dated{{/if}}{{#if desc}} am-list-item-desced{{/if}}{{#if img}} am-list-item-thumbed am-list-item-thumb-right{{/if}}">\n {{!--\n am-list-item-dated - 带日期\n am-list-item-desced - 带描述\n am-list-item-thumbed - 带缩略图的\n --}}\n <div class="{{#if img}} am-u-sm-8{{/if}} am-list-main">\n {{#if title}}\n <h3 class="am-list-item-hd"><a href="{{link}}" class="{{className}}">{{{title}}}</a></h3>\n {{/if}}\n\n {{#if date}}\n <span class="am-list-date">{{date}}</span>\n {{/if}}\n\n {{#if desc}}\n <div class="am-list-item-text">{{{desc}}}</div>\n {{/if}}\n\n {{#if mainAddition}}\n <div class="am-list-news-addon">{{{mainAddition}}}</div>\n {{/if}}\n </div>\n {{#if img}}\n <div class="am-u-sm-4 am-list-thumb">\n <a href="{{link}}" class="{{className}}">\n <img src="{{img}}" alt="{{title}}"/>\n </a>\n {{#if thumbAddition}}\n <div class="am-list-thumb-addon">{{{thumbAddition}}}</div>\n {{/if}}\n </div>\n {{/if}}\n </li>\n {{/each}}\n {{/ifCond}}\n\n {{else}}{{!--不带缩略图--}}\n {{#each content.main}}\n <li class="am-g{{#if date}} am-list-item-dated{{/if}}{{#if desc}} am-list-item-desced{{/if}}{{#if img}} am-list-item-thumbed{{/if}}">\n {{!--\n am-list-item-dated - 带日期\n am-list-item-desced - 带描述\n am-list-item-thumbed - 带缩略图的\n --}}\n {{#if title}}\n <a href="{{link}}" class="am-list-item-hd {{className}}">{{{title}}}</a>\n {{/if}}\n\n {{#if date}}\n <span class="am-list-date">{{date}}</span>\n {{/if}}\n\n {{#if desc}}\n <div class="am-list-item-text">{{{desc}}}</div>\n {{/if}}\n\n {{#if mainAddition}}\n <div class="am-list-news-addon">{{{mainAddition}}}</div>\n {{/if}}\n </li>\n {{/each}}\n {{/ifCond}}\n </ul>\n </div>\n\n {{#ifCond content.header.morePosition \'==\' \'bottom\'}}<!--更多在底部-->\n {{#if content.header.link}}\n <div class="am-list-news-ft">\n <a class="am-list-news-more am-btn am-btn-default {{content.header.className}}" href="{{content.header.link}}">{{{content.header.moreText}}}</a>\n </div>\n {{/if}}\n {{/ifCond}}\n </div>\n{{/this}}\n'),i.registerPartial("map",'{{#this}}\n <div data-am-widget="map" class="am-map {{#if theme}}am-map-{{theme}}{{else}}am-map-default{{/if}}{{#if widgetId}} {{widgetId}}{{/if}}{{#if className}} {{className}}{{/if}}"\n data-name="{{options.name}}" data-address="{{options.address}}" data-longitude="{{options.longitude}}" data-latitude="{{options.latitude}}" data-scaleControl="{{options.scaleControl}}" data-zoomControl="{{options.zoomControl}}" data-setZoom="{{options.setZoom}}" data-icon="{{options.icon}}">\n <div id="bd-map"></div>\n </div>\n{{/this}}'),i.registerPartial("mechat",'{{#this}}\n <section data-am-widget="mechat" class="am-mechat{{#if theme}} am-mechat-{{theme}}{{else}} am-mechat-default{{/if}}{{#if widgetId}} {{widgetId}}{{/if}}{{#if className}} {{className}}{{/if}}" {{#if id}} id="{{id}}" {{/if}} {{#if options.unitid}}data-am-mechat-unitid="{{options.unitid}}"{{/if}}>\n <div id="mechat"></div>\n </section>\n{{/this}}'),i.registerPartial("menu",'{{#this}}\n <nav data-am-widget="menu" class="am-menu {{#if theme}} am-menu-{{theme}}{{else}} am-menu-default{{/if}}{{#if widgetId}} {{widgetId}}{{/if}}{{#if className}} {{className}}{{/if}}" {{options.dataset}} {{#if id}}id="{{id}}"{{/if}}\n {{#ifCond theme \'==\' \'dropdown1\'}} data-am-menu-collapse{{/ifCond}}\n {{#ifCond theme \'==\' \'dropdown2\'}} data-am-menu-collapse{{/ifCond}}\n {{#ifCond theme \'==\' \'slide1\'}} data-am-menu-collapse{{/ifCond}}\n {{#ifCond theme \'==\' \'offcanvas1\'}} data-am-menu-offcanvas{{/ifCond}}\n {{#ifCond theme \'==\' \'offcanvas2\'}} data-am-menu-offcanvas{{/ifCond}}> {{!-- 与模板深耦合,与 JS 浅耦合 --}}\n <a href="javascript: void(0)" class="am-menu-toggle">\n {{#if options.toggleTitle}}\n <span class="am-menu-toggle-title">{{options.toggleTitle}}</span>\n {{/if}}\n {{#if options.toggleCustomIcon}}\n <img src="{{options.toggleCustomIcon}}" alt="Menu Toggle"/>\n {{else}}\n {{#if options.toggleIcon}}\n <i class="am-menu-toggle-icon am-icon-{{options.toggleIcon}}"></i>\n {{else}}\n <i class="am-menu-toggle-icon am-icon-bars"></i>\n {{/if}}\n {{/if}}\n </a>\n\n {{!-- offCanvas menu Wrap --}}\n {{!-- 问题:方便用户,但是与主题名称(类名)耦合过深 --}}\n {{#ifCond theme \'==\' \'offcanvas1\'}}\n <div class="am-offcanvas" {{#if options.closeOffCanvasOnclick}}data-dismiss-on="click"{{/if}}>\n <div class="am-offcanvas-bar{{#if options.offCanvasFlip}} am-offcanvas-bar-flip{{/if}}">\n {{/ifCond}}\n {{#ifCond theme \'==\' \'offcanvas2\'}}\n <div class="am-offcanvas">\n <div class="am-offcanvas-bar{{#if options.offCanvasFlip}} am-offcanvas-bar-flip{{/if}}">\n {{/ifCond}}\n\n {{#if content}}\n <ul class="am-menu-nav {{#if options.cols}}am-avg-sm-{{options\n .cols}}{{else}}am-avg-sm-1{{/if}}{{#ifCond theme \'==\' \'dropdown1\'}} am-collapse{{/ifCond}}{{#ifCond theme\n \'==\' \'dropdown2\'}} am-collapse{{/ifCond}}{{#ifCond theme\n \'==\' \'slide1\'}} am-collapse{{/ifCond}}">\n {{#each content}}\n <li class="{{#if subMenu}}am-parent{{/if}}{{#if className}} {{className}}{{/if}}">\n <a href="{{link}}" class="{{className}}" {{#if target}}target="{{target}}" {{/if}}>{{{title}}}</a>\n {{#if subMenu}}\n <ul class="am-menu-sub am-collapse {{#if subCols}} am-avg-sm-{{subCols}}{{else}}\n am-avg-sm-1{{/if}} {{subMenuClassName}}">\n {{#each subMenu}}\n <li class="{{#if subMenu}} am-parent{{/if}}{{#if className}} {{className}}{{/if}}">\n <a href="{{link}}" class="{{className}}" {{#if target}}target="{{target}}" {{/if}}>{{{title}}}</a>\n </li>\n {{/each}}\n {{!-- 显示进入栏目链接 --}}\n {{#if channelLink}}\n <li class="am-menu-nav-channel"><a href="{{link}}" class="{{className}}" title="{{title}}">{{{channelLink}}}</a></li>\n {{/if}}\n </ul>\n {{/if}}\n </li>\n {{/each}}\n </ul>\n {{/if}}\n\n {{#ifCond theme \'==\' \'offcanvas1\'}}\n </div>\n </div>\n {{/ifCond}}\n {{#ifCond theme \'==\' \'offcanvas2\'}}\n </div>\n </div>\n {{/ifCond}}\n {{!-- 不要问我为什么这样写,我也不想这样 --}}\n </nav>\n{{/this}}\n'),i.registerPartial("navbar",'{{#this}}\n <div data-am-widget="navbar" class="am-navbar am-cf {{#if theme}}am-navbar-{{theme}}{{else}}am-navbar-default{{/if}} {{#if options.iconPosition}}am-navbar-inline{{/if}}{{#if widgetId}} {{widgetId}}{{/if}}{{#if className}} {{className}}{{/if}}"\n id="{{id}}">\n {{#if content}}\n <ul class="am-navbar-nav am-cf {{#if options.cols}}am-avg-sm-{{options.cols}}{{/if}}">\n {{#each content}}\n <li {{{dataApi}}}>\n <a href="{{link}}" class="{{className}}">\n {{#if customIcon}}\n <img src="{{customIcon}}" alt="{{title}}"/>\n {{else}}\n {{#if icon}}\n <span class="am-icon-{{icon}}"></span>\n {{/if}}\n {{/if}}\n {{#if title}}\n <span class="am-navbar-label">{{title}}</span>\n {{/if}}\n </a>\n </li>\n {{/each}}\n </ul>\n {{/if}}\n </div>\n{{/this}}\n'),i.registerPartial("pagination",'{{#this}}\n <ul data-am-widget="pagination"\n class="am-pagination {{#if theme}}am-pagination-{{theme}}{{else}}am-pagination-default{{/if}}{{#if widgetId}} {{widgetId}}{{/if}}{{#if className}} {{className}}{{/if}}"\n {{#if id}}id="{{id}}"{{/if}}>\n\n {{#if content.firstTitle}}\n <li class="am-pagination-first {{content.firstClassName}}">\n <a href="{{content.firstLink}}" class="{{content.firstClassName}}">{{{content.firstTitle}}}</a>\n </li>\n {{/if}}\n\n {{#if content.prevTitle}}\n <li class="am-pagination-prev {{content.prevClassName}}">\n <a href="{{content.prevLink}}" class="{{content.prevClassName}}">{{{content.prevTitle}}}</a>\n </li>\n {{/if}}\n\n {{! 移除 options.select,根据主题来判断结构,无奈 handlebars 逻辑处理...}}\n\n {{#if content.page}}\n {{#ifCond theme \'==\' \'select\'}}\n <li class="am-pagination-select">\n <select>\n {{#each content.page}}\n <option value="{{link}}" class="{{className}}">{{title}}{{#if ../content.total}}\n / {{../../content.total}}{{/if}}\n </option>\n {{/each}}\n </select>\n </li>\n {{else}}\n {{#ifCond theme \'==\' \'one\'}}\n <li class="am-pagination-select">\n <select>\n {{#each content.page}}\n {{content.total}}\n <option value="{{link}}" class="{{className}}">{{title}}{{#if ../content.total}}\n / {{../../content.total}}{{/if}}\n </option>\n {{/each}}\n </select>\n </li>\n {{else}}\n {{#each content.page}}\n <li class="{{className}}">\n <a href="{{link}}" class="{{className}}">{{{title}}}</a>\n </li>\n {{/each}}\n {{/ifCond}}\n {{/ifCond}}\n\n {{/if}}\n\n {{#if content.nextTitle}}\n <li class="am-pagination-next {{content.nextClassName}}">\n <a href="{{content.nextLink}}" class="{{content.nextClassName}}">{{{content.nextTitle}}}</a>\n </li>\n {{/if}}\n\n {{#if content.lastTitle}}\n <li class="am-pagination-last {{content.lastClassName}}">\n <a href="{{content.lastLink}}" class="{{content.lastClassName}}">{{{content.lastTitle}}}</a>\n </li>\n {{/if}}\n </ul>\n{{/this}}\n'),i.registerPartial("paragraph",'{{#this}}\n <article data-am-widget="paragraph"\n class="am-paragraph {{#if theme}}am-paragraph-{{theme}}{{else}}am-paragraph-default{{/if}}{{#if widgetId}} {{widgetId}}{{/if}}{{#if className}} {{className}}{{/if}}"\n {{#if id}}id="{{id}}"{{/if}}\n data-am-paragraph="{ {{#if options.tableScrollable}}tableScrollable: true,{{/if}} {{#if options.imgLightbox}}pureview: true{{/if}} }">\n\n {{#if content}}\n {{{ content.content }}}\n {{/if}}\n </article>\n{{/this}}\n'),i.registerPartial("slider",'{{#this}}\n <div data-am-widget="slider" class="am-slider {{#if theme}}am-slider-{{theme}}{{else}}am-slider-default{{/if}}{{#if widgetId}} {{widgetId}}{{/if}}{{#if className}} {{className}}{{/if}}" data-am-slider=\'{{sliderConfig}}\' {{#if id}}id="{{id}}"{{/if}}>\n <ul class="am-slides">\n {{#each content}}\n <li{{#if thumb}} data-thumb="{{thumb}}"{{/if}}>\n {{#if link}}\n <a href="{{link}}" class="{{className}}">\n {{/if}}\n {{#if img}}\n \t<img src="{{img}}">\n {{/if}}\n {{#if desc}}\n <div class="am-slider-desc">{{{desc}}}</div>\n {{/if}}\n {{#if link}}</a>{{/if}} {{!--/end link--}}\n </li>\n {{/each}}\n </ul>\n</div>\n{{/this}}'),i.registerPartial("tabs",'{{#this}}\n <div data-am-widget="tabs"\n class="am-tabs{{#if theme}} am-tabs-{{theme}}{{else}} am-tabs-default{{/if}}{{#if widgetId}} {{widgetId}}{{/if}}{{#if className}} {{className}}{{/if}}"\n {{#if id}}id="{{id}}"{{/if}} {{#if options.noSwipe}}data-am-tabs-noswipe="1"{{/if}}>\n {{#if content}}\n <ul class="am-tabs-nav am-cf">\n {{#each content}}\n <li class="{{#if active}}am-active{{/if}}"><a href="[data-tab-panel-{{@index}}]">{{{title}}}</a></li>\n {{/each}}\n </ul>\n <div class="am-tabs-bd">\n {{#each content}}\n <div data-tab-panel-{{@index}} class="am-tab-panel {{#if active}}am-active{{/if}}">\n {{{content}}}\n </div>\n {{/each}}\n </div>\n {{/if}}\n </div>\n{{/this}}\n'),i.registerPartial("titlebar",'{{#this}}\n<div data-am-widget="titlebar" class="am-titlebar {{#if theme}}am-titlebar-{{theme}}{{else}}am-titlebar-default{{/if}}{{#if widgetId}} {{widgetId}}{{/if}}{{#if className}} {{className}}{{/if}}" {{#if id}}id="{{id}}"{{/if}}>\n {{#if content.title}}\n <h2 class="am-titlebar-title {{#unless content.link}}{{content.className}}{{/unless}}">\n {{#if content.link}}\n <a href="{{content.link}}" class="{{content.className}}">{{{content.title}}}</a>\n {{else}}\n {{{content.title}}}\n {{/if}}\n </h2>\n {{/if}}\n\n {{#if content.nav}}\n <nav class="am-titlebar-nav">\n {{#each content.nav}}\n <a href="{{link}}" class="{{className}}">{{{title}}}</a>\n {{/each}}\n </nav>\n {{/if}}\n</div>\n{{/this}}\n'), | ||
| 3 | i.registerPartial("wechatpay",'{{#this}}\n <div data-am-widget="wechatpay" class="am-wechatpay{{#if theme}} am-wechatpay-{{theme}}{{else}} am-wechatpay-default{{/if}}{{#if widgetId}} {{widgetId}}{{/if}}{{#if className}} {{className}}{{/if}}"{{#if id}} id="{{id}}"{{/if}} data-wechat-pay="{ {{#each content.order}} {{@key}}: \'{{this}}\',{{/each}} }">\n <button type="button" class="am-btn am-btn-primary am-btn-block am-wechatpay-btn">\n {{#if content.title}}\n {{content.title}}\n {{else}}\n 微信支付\n {{/if}}\n </button>\n </div>\n{{/this}}\n')};"undefined"!=typeof module&&module.exports&&(module.exports=n),this.Handlebars&&n(this.Handlebars)}.call(this); | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
No preview for this file type
No preview for this file type
| 1 | define(['exports', 'module', './handlebars.runtime', './handlebars/compiler/ast', './handlebars/compiler/base', './handlebars/compiler/compiler', './handlebars/compiler/javascript-compiler', './handlebars/compiler/visitor', './handlebars/no-conflict'], function (exports, module, _handlebarsRuntime, _handlebarsCompilerAst, _handlebarsCompilerBase, _handlebarsCompilerCompiler, _handlebarsCompilerJavascriptCompiler, _handlebarsCompilerVisitor, _handlebarsNoConflict) { | ||
| 2 | 'use strict'; | ||
| 3 | |||
| 4 | // istanbul ignore next | ||
| 5 | |||
| 6 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } | ||
| 7 | |||
| 8 | var _runtime = _interopRequireDefault(_handlebarsRuntime); | ||
| 9 | |||
| 10 | // Compiler imports | ||
| 11 | |||
| 12 | var _AST = _interopRequireDefault(_handlebarsCompilerAst); | ||
| 13 | |||
| 14 | var _JavaScriptCompiler = _interopRequireDefault(_handlebarsCompilerJavascriptCompiler); | ||
| 15 | |||
| 16 | var _Visitor = _interopRequireDefault(_handlebarsCompilerVisitor); | ||
| 17 | |||
| 18 | var _noConflict = _interopRequireDefault(_handlebarsNoConflict); | ||
| 19 | |||
| 20 | var _create = _runtime['default'].create; | ||
| 21 | function create() { | ||
| 22 | var hb = _create(); | ||
| 23 | |||
| 24 | hb.compile = function (input, options) { | ||
| 25 | return _handlebarsCompilerCompiler.compile(input, options, hb); | ||
| 26 | }; | ||
| 27 | hb.precompile = function (input, options) { | ||
| 28 | return _handlebarsCompilerCompiler.precompile(input, options, hb); | ||
| 29 | }; | ||
| 30 | |||
| 31 | hb.AST = _AST['default']; | ||
| 32 | hb.Compiler = _handlebarsCompilerCompiler.Compiler; | ||
| 33 | hb.JavaScriptCompiler = _JavaScriptCompiler['default']; | ||
| 34 | hb.Parser = _handlebarsCompilerBase.parser; | ||
| 35 | hb.parse = _handlebarsCompilerBase.parse; | ||
| 36 | |||
| 37 | return hb; | ||
| 38 | } | ||
| 39 | |||
| 40 | var inst = create(); | ||
| 41 | inst.create = create; | ||
| 42 | |||
| 43 | _noConflict['default'](inst); | ||
| 44 | |||
| 45 | inst.Visitor = _Visitor['default']; | ||
| 46 | |||
| 47 | inst['default'] = inst; | ||
| 48 | |||
| 49 | module.exports = inst; | ||
| 50 | }); | ||
| 51 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9oYW5kbGViYXJzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFXQSxNQUFJLE9BQU8sR0FBRyxvQkFBUSxNQUFNLENBQUM7QUFDN0IsV0FBUyxNQUFNLEdBQUc7QUFDaEIsUUFBSSxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUM7O0FBRW5CLE1BQUUsQ0FBQyxPQUFPLEdBQUcsVUFBUyxLQUFLLEVBQUUsT0FBTyxFQUFFO0FBQ3BDLGFBQU8sNEJBWFEsT0FBTyxDQVdQLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7S0FDcEMsQ0FBQztBQUNGLE1BQUUsQ0FBQyxVQUFVLEdBQUcsVUFBUyxLQUFLLEVBQUUsT0FBTyxFQUFFO0FBQ3ZDLGFBQU8sNEJBZGlCLFVBQVUsQ0FjaEIsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztLQUN2QyxDQUFDOztBQUVGLE1BQUUsQ0FBQyxHQUFHLGtCQUFNLENBQUM7QUFDYixNQUFFLENBQUMsUUFBUSwrQkFsQkosUUFBUSxBQWtCTyxDQUFDO0FBQ3ZCLE1BQUUsQ0FBQyxrQkFBa0IsaUNBQXFCLENBQUM7QUFDM0MsTUFBRSxDQUFDLE1BQU0sMkJBckJGLE1BQU0sQUFxQkssQ0FBQztBQUNuQixNQUFFLENBQUMsS0FBSywyQkF0QmlCLEtBQUssQUFzQmQsQ0FBQzs7QUFFakIsV0FBTyxFQUFFLENBQUM7R0FDWDs7QUFFRCxNQUFJLElBQUksR0FBRyxNQUFNLEVBQUUsQ0FBQztBQUNwQixNQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQzs7QUFFckIseUJBQVcsSUFBSSxDQUFDLENBQUM7O0FBRWpCLE1BQUksQ0FBQyxPQUFPLHNCQUFVLENBQUM7O0FBRXZCLE1BQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUM7O21CQUVSLElBQUkiLCJmaWxlIjoiaGFuZGxlYmFycy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBydW50aW1lIGZyb20gJy4vaGFuZGxlYmFycy5ydW50aW1lJztcblxuLy8gQ29tcGlsZXIgaW1wb3J0c1xuaW1wb3J0IEFTVCBmcm9tICcuL2hhbmRsZWJhcnMvY29tcGlsZXIvYXN0JztcbmltcG9ydCB7IHBhcnNlciBhcyBQYXJzZXIsIHBhcnNlIH0gZnJvbSAnLi9oYW5kbGViYXJzL2NvbXBpbGVyL2Jhc2UnO1xuaW1wb3J0IHsgQ29tcGlsZXIsIGNvbXBpbGUsIHByZWNvbXBpbGUgfSBmcm9tICcuL2hhbmRsZWJhcnMvY29tcGlsZXIvY29tcGlsZXInO1xuaW1wb3J0IEphdmFTY3JpcHRDb21waWxlciBmcm9tICcuL2hhbmRsZWJhcnMvY29tcGlsZXIvamF2YXNjcmlwdC1jb21waWxlcic7XG5pbXBvcnQgVmlzaXRvciBmcm9tICcuL2hhbmRsZWJhcnMvY29tcGlsZXIvdmlzaXRvcic7XG5cbmltcG9ydCBub0NvbmZsaWN0IGZyb20gJy4vaGFuZGxlYmFycy9uby1jb25mbGljdCc7XG5cbmxldCBfY3JlYXRlID0gcnVudGltZS5jcmVhdGU7XG5mdW5jdGlvbiBjcmVhdGUoKSB7XG4gIGxldCBoYiA9IF9jcmVhdGUoKTtcblxuICBoYi5jb21waWxlID0gZnVuY3Rpb24oaW5wdXQsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gY29tcGlsZShpbnB1dCwgb3B0aW9ucywgaGIpO1xuICB9O1xuICBoYi5wcmVjb21waWxlID0gZnVuY3Rpb24oaW5wdXQsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gcHJlY29tcGlsZShpbnB1dCwgb3B0aW9ucywgaGIpO1xuICB9O1xuXG4gIGhiLkFTVCA9IEFTVDtcbiAgaGIuQ29tcGlsZXIgPSBDb21waWxlcjtcbiAgaGIuSmF2YVNjcmlwdENvbXBpbGVyID0gSmF2YVNjcmlwdENvbXBpbGVyO1xuICBoYi5QYXJzZXIgPSBQYXJzZXI7XG4gIGhiLnBhcnNlID0gcGFyc2U7XG5cbiAgcmV0dXJuIGhiO1xufVxuXG5sZXQgaW5zdCA9IGNyZWF0ZSgpO1xuaW5zdC5jcmVhdGUgPSBjcmVhdGU7XG5cbm5vQ29uZmxpY3QoaW5zdCk7XG5cbmluc3QuVmlzaXRvciA9IFZpc2l0b3I7XG5cbmluc3RbJ2RlZmF1bHQnXSA9IGluc3Q7XG5cbmV4cG9ydCBkZWZhdWx0IGluc3Q7XG4iXX0= |
| 1 | define(['exports', 'module', './handlebars/base', './handlebars/safe-string', './handlebars/exception', './handlebars/utils', './handlebars/runtime', './handlebars/no-conflict'], function (exports, module, _handlebarsBase, _handlebarsSafeString, _handlebarsException, _handlebarsUtils, _handlebarsRuntime, _handlebarsNoConflict) { | ||
| 2 | 'use strict'; | ||
| 3 | |||
| 4 | // istanbul ignore next | ||
| 5 | |||
| 6 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } | ||
| 7 | |||
| 8 | // Each of these augment the Handlebars object. No need to setup here. | ||
| 9 | // (This is done to easily share code between commonjs and browse envs) | ||
| 10 | |||
| 11 | var _SafeString = _interopRequireDefault(_handlebarsSafeString); | ||
| 12 | |||
| 13 | var _Exception = _interopRequireDefault(_handlebarsException); | ||
| 14 | |||
| 15 | var _noConflict = _interopRequireDefault(_handlebarsNoConflict); | ||
| 16 | |||
| 17 | // For compatibility and usage outside of module systems, make the Handlebars object a namespace | ||
| 18 | function create() { | ||
| 19 | var hb = new _handlebarsBase.HandlebarsEnvironment(); | ||
| 20 | |||
| 21 | _handlebarsUtils.extend(hb, _handlebarsBase); | ||
| 22 | hb.SafeString = _SafeString['default']; | ||
| 23 | hb.Exception = _Exception['default']; | ||
| 24 | hb.Utils = _handlebarsUtils; | ||
| 25 | hb.escapeExpression = _handlebarsUtils.escapeExpression; | ||
| 26 | |||
| 27 | hb.VM = _handlebarsRuntime; | ||
| 28 | hb.template = function (spec) { | ||
| 29 | return _handlebarsRuntime.template(spec, hb); | ||
| 30 | }; | ||
| 31 | |||
| 32 | return hb; | ||
| 33 | } | ||
| 34 | |||
| 35 | var inst = create(); | ||
| 36 | inst.create = create; | ||
| 37 | |||
| 38 | _noConflict['default'](inst); | ||
| 39 | |||
| 40 | inst['default'] = inst; | ||
| 41 | |||
| 42 | module.exports = inst; | ||
| 43 | }); | ||
| 44 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9oYW5kbGViYXJzLnJ1bnRpbWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFZQSxXQUFTLE1BQU0sR0FBRztBQUNoQixRQUFJLEVBQUUsR0FBRyxJQUFJLGdCQUFLLHFCQUFxQixFQUFFLENBQUM7O0FBRTFDLHFCQUFNLE1BQU0sQ0FBQyxFQUFFLGtCQUFPLENBQUM7QUFDdkIsTUFBRSxDQUFDLFVBQVUseUJBQWEsQ0FBQztBQUMzQixNQUFFLENBQUMsU0FBUyx3QkFBWSxDQUFDO0FBQ3pCLE1BQUUsQ0FBQyxLQUFLLG1CQUFRLENBQUM7QUFDakIsTUFBRSxDQUFDLGdCQUFnQixHQUFHLGlCQUFNLGdCQUFnQixDQUFDOztBQUU3QyxNQUFFLENBQUMsRUFBRSxxQkFBVSxDQUFDO0FBQ2hCLE1BQUUsQ0FBQyxRQUFRLEdBQUcsVUFBUyxJQUFJLEVBQUU7QUFDM0IsYUFBTyxtQkFBUSxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0tBQ25DLENBQUM7O0FBRUYsV0FBTyxFQUFFLENBQUM7R0FDWDs7QUFFRCxNQUFJLElBQUksR0FBRyxNQUFNLEVBQUUsQ0FBQztBQUNwQixNQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQzs7QUFFckIseUJBQVcsSUFBSSxDQUFDLENBQUM7O0FBRWpCLE1BQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUM7O21CQUVSLElBQUkiLCJmaWxlIjoiaGFuZGxlYmFycy5ydW50aW1lLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgYmFzZSBmcm9tICcuL2hhbmRsZWJhcnMvYmFzZSc7XG5cbi8vIEVhY2ggb2YgdGhlc2UgYXVnbWVudCB0aGUgSGFuZGxlYmFycyBvYmplY3QuIE5vIG5lZWQgdG8gc2V0dXAgaGVyZS5cbi8vIChUaGlzIGlzIGRvbmUgdG8gZWFzaWx5IHNoYXJlIGNvZGUgYmV0d2VlbiBjb21tb25qcyBhbmQgYnJvd3NlIGVudnMpXG5pbXBvcnQgU2FmZVN0cmluZyBmcm9tICcuL2hhbmRsZWJhcnMvc2FmZS1zdHJpbmcnO1xuaW1wb3J0IEV4Y2VwdGlvbiBmcm9tICcuL2hhbmRsZWJhcnMvZXhjZXB0aW9uJztcbmltcG9ydCAqIGFzIFV0aWxzIGZyb20gJy4vaGFuZGxlYmFycy91dGlscyc7XG5pbXBvcnQgKiBhcyBydW50aW1lIGZyb20gJy4vaGFuZGxlYmFycy9ydW50aW1lJztcblxuaW1wb3J0IG5vQ29uZmxpY3QgZnJvbSAnLi9oYW5kbGViYXJzL25vLWNvbmZsaWN0JztcblxuLy8gRm9yIGNvbXBhdGliaWxpdHkgYW5kIHVzYWdlIG91dHNpZGUgb2YgbW9kdWxlIHN5c3RlbXMsIG1ha2UgdGhlIEhhbmRsZWJhcnMgb2JqZWN0IGEgbmFtZXNwYWNlXG5mdW5jdGlvbiBjcmVhdGUoKSB7XG4gIGxldCBoYiA9IG5ldyBiYXNlLkhhbmRsZWJhcnNFbnZpcm9ubWVudCgpO1xuXG4gIFV0aWxzLmV4dGVuZChoYiwgYmFzZSk7XG4gIGhiLlNhZmVTdHJpbmcgPSBTYWZlU3RyaW5nO1xuICBoYi5FeGNlcHRpb24gPSBFeGNlcHRpb247XG4gIGhiLlV0aWxzID0gVXRpbHM7XG4gIGhiLmVzY2FwZUV4cHJlc3Npb24gPSBVdGlscy5lc2NhcGVFeHByZXNzaW9uO1xuXG4gIGhiLlZNID0gcnVudGltZTtcbiAgaGIudGVtcGxhdGUgPSBmdW5jdGlvbihzcGVjKSB7XG4gICAgcmV0dXJuIHJ1bnRpbWUudGVtcGxhdGUoc3BlYywgaGIpO1xuICB9O1xuXG4gIHJldHVybiBoYjtcbn1cblxubGV0IGluc3QgPSBjcmVhdGUoKTtcbmluc3QuY3JlYXRlID0gY3JlYXRlO1xuXG5ub0NvbmZsaWN0KGluc3QpO1xuXG5pbnN0WydkZWZhdWx0J10gPSBpbnN0O1xuXG5leHBvcnQgZGVmYXVsdCBpbnN0O1xuIl19 |
No preview for this file type
| 1 | define(['exports', './utils', './exception', './helpers', './decorators', './logger'], function (exports, _utils, _exception, _helpers, _decorators, _logger) { | ||
| 2 | 'use strict'; | ||
| 3 | |||
| 4 | exports.__esModule = true; | ||
| 5 | exports.HandlebarsEnvironment = HandlebarsEnvironment; | ||
| 6 | // istanbul ignore next | ||
| 7 | |||
| 8 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } | ||
| 9 | |||
| 10 | var _Exception = _interopRequireDefault(_exception); | ||
| 11 | |||
| 12 | var _logger2 = _interopRequireDefault(_logger); | ||
| 13 | |||
| 14 | var VERSION = '4.0.10'; | ||
| 15 | exports.VERSION = VERSION; | ||
| 16 | var COMPILER_REVISION = 7; | ||
| 17 | |||
| 18 | exports.COMPILER_REVISION = COMPILER_REVISION; | ||
| 19 | var REVISION_CHANGES = { | ||
| 20 | 1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it | ||
| 21 | 2: '== 1.0.0-rc.3', | ||
| 22 | 3: '== 1.0.0-rc.4', | ||
| 23 | 4: '== 1.x.x', | ||
| 24 | 5: '== 2.0.0-alpha.x', | ||
| 25 | 6: '>= 2.0.0-beta.1', | ||
| 26 | 7: '>= 4.0.0' | ||
| 27 | }; | ||
| 28 | |||
| 29 | exports.REVISION_CHANGES = REVISION_CHANGES; | ||
| 30 | var objectType = '[object Object]'; | ||
| 31 | |||
| 32 | function HandlebarsEnvironment(helpers, partials, decorators) { | ||
| 33 | this.helpers = helpers || {}; | ||
| 34 | this.partials = partials || {}; | ||
| 35 | this.decorators = decorators || {}; | ||
| 36 | |||
| 37 | _helpers.registerDefaultHelpers(this); | ||
| 38 | _decorators.registerDefaultDecorators(this); | ||
| 39 | } | ||
| 40 | |||
| 41 | HandlebarsEnvironment.prototype = { | ||
| 42 | constructor: HandlebarsEnvironment, | ||
| 43 | |||
| 44 | logger: _logger2['default'], | ||
| 45 | log: _logger2['default'].log, | ||
| 46 | |||
| 47 | registerHelper: function registerHelper(name, fn) { | ||
| 48 | if (_utils.toString.call(name) === objectType) { | ||
| 49 | if (fn) { | ||
| 50 | throw new _Exception['default']('Arg not supported with multiple helpers'); | ||
| 51 | } | ||
| 52 | _utils.extend(this.helpers, name); | ||
| 53 | } else { | ||
| 54 | this.helpers[name] = fn; | ||
| 55 | } | ||
| 56 | }, | ||
| 57 | unregisterHelper: function unregisterHelper(name) { | ||
| 58 | delete this.helpers[name]; | ||
| 59 | }, | ||
| 60 | |||
| 61 | registerPartial: function registerPartial(name, partial) { | ||
| 62 | if (_utils.toString.call(name) === objectType) { | ||
| 63 | _utils.extend(this.partials, name); | ||
| 64 | } else { | ||
| 65 | if (typeof partial === 'undefined') { | ||
| 66 | throw new _Exception['default']('Attempting to register a partial called "' + name + '" as undefined'); | ||
| 67 | } | ||
| 68 | this.partials[name] = partial; | ||
| 69 | } | ||
| 70 | }, | ||
| 71 | unregisterPartial: function unregisterPartial(name) { | ||
| 72 | delete this.partials[name]; | ||
| 73 | }, | ||
| 74 | |||
| 75 | registerDecorator: function registerDecorator(name, fn) { | ||
| 76 | if (_utils.toString.call(name) === objectType) { | ||
| 77 | if (fn) { | ||
| 78 | throw new _Exception['default']('Arg not supported with multiple decorators'); | ||
| 79 | } | ||
| 80 | _utils.extend(this.decorators, name); | ||
| 81 | } else { | ||
| 82 | this.decorators[name] = fn; | ||
| 83 | } | ||
| 84 | }, | ||
| 85 | unregisterDecorator: function unregisterDecorator(name) { | ||
| 86 | delete this.decorators[name]; | ||
| 87 | } | ||
| 88 | }; | ||
| 89 | |||
| 90 | var log = _logger2['default'].log; | ||
| 91 | |||
| 92 | exports.log = log; | ||
| 93 | exports.createFrame = _utils.createFrame; | ||
| 94 | exports.logger = _logger2['default']; | ||
| 95 | }); | ||
| 96 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2Jhc2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQU1PLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQzs7QUFDekIsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLENBQUM7OztBQUU1QixNQUFNLGdCQUFnQixHQUFHO0FBQzlCLEtBQUMsRUFBRSxhQUFhO0FBQ2hCLEtBQUMsRUFBRSxlQUFlO0FBQ2xCLEtBQUMsRUFBRSxlQUFlO0FBQ2xCLEtBQUMsRUFBRSxVQUFVO0FBQ2IsS0FBQyxFQUFFLGtCQUFrQjtBQUNyQixLQUFDLEVBQUUsaUJBQWlCO0FBQ3BCLEtBQUMsRUFBRSxVQUFVO0dBQ2QsQ0FBQzs7O0FBRUYsTUFBTSxVQUFVLEdBQUcsaUJBQWlCLENBQUM7O0FBRTlCLFdBQVMscUJBQXFCLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUU7QUFDbkUsUUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLElBQUksRUFBRSxDQUFDO0FBQzdCLFFBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxJQUFJLEVBQUUsQ0FBQztBQUMvQixRQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsSUFBSSxFQUFFLENBQUM7O0FBRW5DLGFBeEJNLHNCQUFzQixDQXdCTCxJQUFJLENBQUMsQ0FBQztBQUM3QixnQkF4Qk0seUJBQXlCLENBd0JMLElBQUksQ0FBQyxDQUFDO0dBQ2pDOztBQUVELHVCQUFxQixDQUFDLFNBQVMsR0FBRztBQUNoQyxlQUFXLEVBQUUscUJBQXFCOztBQUVsQyxVQUFNLHFCQUFRO0FBQ2QsT0FBRyxFQUFFLG9CQUFPLEdBQUc7O0FBRWYsa0JBQWMsRUFBRSx3QkFBUyxJQUFJLEVBQUUsRUFBRSxFQUFFO0FBQ2pDLFVBQUksT0FyQ3FCLFFBQVEsQ0FxQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxVQUFVLEVBQUU7QUFDdEMsWUFBSSxFQUFFLEVBQUU7QUFBRSxnQkFBTSwwQkFBYyx5Q0FBeUMsQ0FBQyxDQUFDO1NBQUU7QUFDM0UsZUF2Q2UsTUFBTSxDQXVDZCxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO09BQzVCLE1BQU07QUFDTCxZQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztPQUN6QjtLQUNGO0FBQ0Qsb0JBQWdCLEVBQUUsMEJBQVMsSUFBSSxFQUFFO0FBQy9CLGFBQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUMzQjs7QUFFRCxtQkFBZSxFQUFFLHlCQUFTLElBQUksRUFBRSxPQUFPLEVBQUU7QUFDdkMsVUFBSSxPQWpEcUIsUUFBUSxDQWlEcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLFVBQVUsRUFBRTtBQUN0QyxlQWxEZSxNQUFNLENBa0RkLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7T0FDN0IsTUFBTTtBQUNMLFlBQUksT0FBTyxPQUFPLEtBQUssV0FBVyxFQUFFO0FBQ2xDLGdCQUFNLHdFQUEwRCxJQUFJLG9CQUFpQixDQUFDO1NBQ3ZGO0FBQ0QsWUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUM7T0FDL0I7S0FDRjtBQUNELHFCQUFpQixFQUFFLDJCQUFTLElBQUksRUFBRTtBQUNoQyxhQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDNUI7O0FBRUQscUJBQWlCLEVBQUUsMkJBQVMsSUFBSSxFQUFFLEVBQUUsRUFBRTtBQUNwQyxVQUFJLE9BL0RxQixRQUFRLENBK0RwQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssVUFBVSxFQUFFO0FBQ3RDLFlBQUksRUFBRSxFQUFFO0FBQUUsZ0JBQU0sMEJBQWMsNENBQTRDLENBQUMsQ0FBQztTQUFFO0FBQzlFLGVBakVlLE1BQU0sQ0FpRWQsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztPQUMvQixNQUFNO0FBQ0wsWUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7T0FDNUI7S0FDRjtBQUNELHVCQUFtQixFQUFFLDZCQUFTLElBQUksRUFBRTtBQUNsQyxhQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDOUI7R0FDRixDQUFDOztBQUVLLE1BQUksR0FBRyxHQUFHLG9CQUFPLEdBQUcsQ0FBQzs7O1VBRXBCLFdBQVcsVUE3RVgsV0FBVztVQTZFRSxNQUFNIiwiZmlsZSI6ImJhc2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2NyZWF0ZUZyYW1lLCBleHRlbmQsIHRvU3RyaW5nfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi9leGNlcHRpb24nO1xuaW1wb3J0IHtyZWdpc3RlckRlZmF1bHRIZWxwZXJzfSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IHtyZWdpc3RlckRlZmF1bHREZWNvcmF0b3JzfSBmcm9tICcuL2RlY29yYXRvcnMnO1xuaW1wb3J0IGxvZ2dlciBmcm9tICcuL2xvZ2dlcic7XG5cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuMC4xMCc7XG5leHBvcnQgY29uc3QgQ09NUElMRVJfUkVWSVNJT04gPSA3O1xuXG5leHBvcnQgY29uc3QgUkVWSVNJT05fQ0hBTkdFUyA9IHtcbiAgMTogJzw9IDEuMC5yYy4yJywgLy8gMS4wLnJjLjIgaXMgYWN0dWFsbHkgcmV2MiBidXQgZG9lc24ndCByZXBvcnQgaXRcbiAgMjogJz09IDEuMC4wLXJjLjMnLFxuICAzOiAnPT0gMS4wLjAtcmMuNCcsXG4gIDQ6ICc9PSAxLngueCcsXG4gIDU6ICc9PSAyLjAuMC1hbHBoYS54JyxcbiAgNjogJz49IDIuMC4wLWJldGEuMScsXG4gIDc6ICc+PSA0LjAuMCdcbn07XG5cbmNvbnN0IG9iamVjdFR5cGUgPSAnW29iamVjdCBPYmplY3RdJztcblxuZXhwb3J0IGZ1bmN0aW9uIEhhbmRsZWJhcnNFbnZpcm9ubWVudChoZWxwZXJzLCBwYXJ0aWFscywgZGVjb3JhdG9ycykge1xuICB0aGlzLmhlbHBlcnMgPSBoZWxwZXJzIHx8IHt9O1xuICB0aGlzLnBhcnRpYWxzID0gcGFydGlhbHMgfHwge307XG4gIHRoaXMuZGVjb3JhdG9ycyA9IGRlY29yYXRvcnMgfHwge307XG5cbiAgcmVnaXN0ZXJEZWZhdWx0SGVscGVycyh0aGlzKTtcbiAgcmVnaXN0ZXJEZWZhdWx0RGVjb3JhdG9ycyh0aGlzKTtcbn1cblxuSGFuZGxlYmFyc0Vudmlyb25tZW50LnByb3RvdHlwZSA9IHtcbiAgY29uc3RydWN0b3I6IEhhbmRsZWJhcnNFbnZpcm9ubWVudCxcblxuICBsb2dnZXI6IGxvZ2dlcixcbiAgbG9nOiBsb2dnZXIubG9nLFxuXG4gIHJlZ2lzdGVySGVscGVyOiBmdW5jdGlvbihuYW1lLCBmbikge1xuICAgIGlmICh0b1N0cmluZy5jYWxsKG5hbWUpID09PSBvYmplY3RUeXBlKSB7XG4gICAgICBpZiAoZm4pIHsgdGhyb3cgbmV3IEV4Y2VwdGlvbignQXJnIG5vdCBzdXBwb3J0ZWQgd2l0aCBtdWx0aXBsZSBoZWxwZXJzJyk7IH1cbiAgICAgIGV4dGVuZCh0aGlzLmhlbHBlcnMsIG5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhlbHBlcnNbbmFtZV0gPSBmbjtcbiAgICB9XG4gIH0sXG4gIHVucmVnaXN0ZXJIZWxwZXI6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICBkZWxldGUgdGhpcy5oZWxwZXJzW25hbWVdO1xuICB9LFxuXG4gIHJlZ2lzdGVyUGFydGlhbDogZnVuY3Rpb24obmFtZSwgcGFydGlhbCkge1xuICAgIGlmICh0b1N0cmluZy5jYWxsKG5hbWUpID09PSBvYmplY3RUeXBlKSB7XG4gICAgICBleHRlbmQodGhpcy5wYXJ0aWFscywgbmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0eXBlb2YgcGFydGlhbCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihgQXR0ZW1wdGluZyB0byByZWdpc3RlciBhIHBhcnRpYWwgY2FsbGVkIFwiJHtuYW1lfVwiIGFzIHVuZGVmaW5lZGApO1xuICAgICAgfVxuICAgICAgdGhpcy5wYXJ0aWFsc1tuYW1lXSA9IHBhcnRpYWw7XG4gICAgfVxuICB9LFxuICB1bnJlZ2lzdGVyUGFydGlhbDogZnVuY3Rpb24obmFtZSkge1xuICAgIGRlbGV0ZSB0aGlzLnBhcnRpYWxzW25hbWVdO1xuICB9LFxuXG4gIHJlZ2lzdGVyRGVjb3JhdG9yOiBmdW5jdGlvbihuYW1lLCBmbikge1xuICAgIGlmICh0b1N0cmluZy5jYWxsKG5hbWUpID09PSBvYmplY3RUeXBlKSB7XG4gICAgICBpZiAoZm4pIHsgdGhyb3cgbmV3IEV4Y2VwdGlvbignQXJnIG5vdCBzdXBwb3J0ZWQgd2l0aCBtdWx0aXBsZSBkZWNvcmF0b3JzJyk7IH1cbiAgICAgIGV4dGVuZCh0aGlzLmRlY29yYXRvcnMsIG5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRlY29yYXRvcnNbbmFtZV0gPSBmbjtcbiAgICB9XG4gIH0sXG4gIHVucmVnaXN0ZXJEZWNvcmF0b3I6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICBkZWxldGUgdGhpcy5kZWNvcmF0b3JzW25hbWVdO1xuICB9XG59O1xuXG5leHBvcnQgbGV0IGxvZyA9IGxvZ2dlci5sb2c7XG5cbmV4cG9ydCB7Y3JlYXRlRnJhbWUsIGxvZ2dlcn07XG4iXX0= |
No preview for this file type
| 1 | define(['exports', 'module'], function (exports, module) { | ||
| 2 | 'use strict'; | ||
| 3 | |||
| 4 | var AST = { | ||
| 5 | // Public API used to evaluate derived attributes regarding AST nodes | ||
| 6 | helpers: { | ||
| 7 | // a mustache is definitely a helper if: | ||
| 8 | // * it is an eligible helper, and | ||
| 9 | // * it has at least one parameter or hash segment | ||
| 10 | helperExpression: function helperExpression(node) { | ||
| 11 | return node.type === 'SubExpression' || (node.type === 'MustacheStatement' || node.type === 'BlockStatement') && !!(node.params && node.params.length || node.hash); | ||
| 12 | }, | ||
| 13 | |||
| 14 | scopedId: function scopedId(path) { | ||
| 15 | return (/^\.|this\b/.test(path.original) | ||
| 16 | ); | ||
| 17 | }, | ||
| 18 | |||
| 19 | // an ID is simple if it only has one part, and that part is not | ||
| 20 | // `..` or `this`. | ||
| 21 | simpleId: function simpleId(path) { | ||
| 22 | return path.parts.length === 1 && !AST.helpers.scopedId(path) && !path.depth; | ||
| 23 | } | ||
| 24 | } | ||
| 25 | }; | ||
| 26 | |||
| 27 | // Must be exported as an object rather than the root of the module as the jison lexer | ||
| 28 | // must modify the object to operate properly. | ||
| 29 | module.exports = AST; | ||
| 30 | }); | ||
| 31 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2NvbXBpbGVyL2FzdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxNQUFJLEdBQUcsR0FBRzs7QUFFUixXQUFPLEVBQUU7Ozs7QUFJUCxzQkFBZ0IsRUFBRSwwQkFBUyxJQUFJLEVBQUU7QUFDL0IsZUFBTyxBQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssZUFBZSxJQUM3QixDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssbUJBQW1CLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxnQkFBZ0IsQ0FBQSxJQUNuRSxDQUFDLEVBQUUsQUFBQyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFLLElBQUksQ0FBQyxJQUFJLENBQUEsQUFBQyxBQUFDLENBQUM7T0FDaEU7O0FBRUQsY0FBUSxFQUFFLGtCQUFTLElBQUksRUFBRTtBQUN2QixlQUFPLEFBQUMsYUFBWSxDQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1VBQUM7T0FDM0M7Ozs7QUFJRCxjQUFRLEVBQUUsa0JBQVMsSUFBSSxFQUFFO0FBQ3ZCLGVBQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO09BQzlFO0tBQ0Y7R0FDRixDQUFDOzs7O21CQUthLEdBQUciLCJmaWxlIjoiYXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsibGV0IEFTVCA9IHtcbiAgLy8gUHVibGljIEFQSSB1c2VkIHRvIGV2YWx1YXRlIGRlcml2ZWQgYXR0cmlidXRlcyByZWdhcmRpbmcgQVNUIG5vZGVzXG4gIGhlbHBlcnM6IHtcbiAgICAvLyBhIG11c3RhY2hlIGlzIGRlZmluaXRlbHkgYSBoZWxwZXIgaWY6XG4gICAgLy8gKiBpdCBpcyBhbiBlbGlnaWJsZSBoZWxwZXIsIGFuZFxuICAgIC8vICogaXQgaGFzIGF0IGxlYXN0IG9uZSBwYXJhbWV0ZXIgb3IgaGFzaCBzZWdtZW50XG4gICAgaGVscGVyRXhwcmVzc2lvbjogZnVuY3Rpb24obm9kZSkge1xuICAgICAgcmV0dXJuIChub2RlLnR5cGUgPT09ICdTdWJFeHByZXNzaW9uJylcbiAgICAgICAgICB8fCAoKG5vZGUudHlwZSA9PT0gJ011c3RhY2hlU3RhdGVtZW50JyB8fCBub2RlLnR5cGUgPT09ICdCbG9ja1N0YXRlbWVudCcpXG4gICAgICAgICAgICAmJiAhISgobm9kZS5wYXJhbXMgJiYgbm9kZS5wYXJhbXMubGVuZ3RoKSB8fCBub2RlLmhhc2gpKTtcbiAgICB9LFxuXG4gICAgc2NvcGVkSWQ6IGZ1bmN0aW9uKHBhdGgpIHtcbiAgICAgIHJldHVybiAoL15cXC58dGhpc1xcYi8pLnRlc3QocGF0aC5vcmlnaW5hbCk7XG4gICAgfSxcblxuICAgIC8vIGFuIElEIGlzIHNpbXBsZSBpZiBpdCBvbmx5IGhhcyBvbmUgcGFydCwgYW5kIHRoYXQgcGFydCBpcyBub3RcbiAgICAvLyBgLi5gIG9yIGB0aGlzYC5cbiAgICBzaW1wbGVJZDogZnVuY3Rpb24ocGF0aCkge1xuICAgICAgcmV0dXJuIHBhdGgucGFydHMubGVuZ3RoID09PSAxICYmICFBU1QuaGVscGVycy5zY29wZWRJZChwYXRoKSAmJiAhcGF0aC5kZXB0aDtcbiAgICB9XG4gIH1cbn07XG5cblxuLy8gTXVzdCBiZSBleHBvcnRlZCBhcyBhbiBvYmplY3QgcmF0aGVyIHRoYW4gdGhlIHJvb3Qgb2YgdGhlIG1vZHVsZSBhcyB0aGUgamlzb24gbGV4ZXJcbi8vIG11c3QgbW9kaWZ5IHRoZSBvYmplY3QgdG8gb3BlcmF0ZSBwcm9wZXJseS5cbmV4cG9ydCBkZWZhdWx0IEFTVDtcbiJdfQ== |
| 1 | define(['exports', './parser', './whitespace-control', './helpers', '../utils'], function (exports, _parser, _whitespaceControl, _helpers, _utils) { | ||
| 2 | 'use strict'; | ||
| 3 | |||
| 4 | exports.__esModule = true; | ||
| 5 | exports.parse = parse; | ||
| 6 | // istanbul ignore next | ||
| 7 | |||
| 8 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } | ||
| 9 | |||
| 10 | var _parser2 = _interopRequireDefault(_parser); | ||
| 11 | |||
| 12 | var _WhitespaceControl = _interopRequireDefault(_whitespaceControl); | ||
| 13 | |||
| 14 | exports.parser = _parser2['default']; | ||
| 15 | |||
| 16 | var yy = {}; | ||
| 17 | _utils.extend(yy, _helpers); | ||
| 18 | |||
| 19 | function parse(input, options) { | ||
| 20 | // Just return if an already-compiled AST was passed in. | ||
| 21 | if (input.type === 'Program') { | ||
| 22 | return input; | ||
| 23 | } | ||
| 24 | |||
| 25 | _parser2['default'].yy = yy; | ||
| 26 | |||
| 27 | // Altering the shared object here, but this is ok as parser is a sync operation | ||
| 28 | yy.locInfo = function (locInfo) { | ||
| 29 | return new yy.SourceLocation(options && options.srcName, locInfo); | ||
| 30 | }; | ||
| 31 | |||
| 32 | var strip = new _WhitespaceControl['default'](options); | ||
| 33 | return strip.accept(_parser2['default'].parse(input)); | ||
| 34 | } | ||
| 35 | }); | ||
| 36 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2NvbXBpbGVyL2Jhc2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztVQUtTLE1BQU07O0FBRWYsTUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQ1osU0FMUyxNQUFNLENBS1IsRUFBRSxXQUFVLENBQUM7O0FBRWIsV0FBUyxLQUFLLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRTs7QUFFcEMsUUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRTtBQUFFLGFBQU8sS0FBSyxDQUFDO0tBQUU7O0FBRS9DLHdCQUFPLEVBQUUsR0FBRyxFQUFFLENBQUM7OztBQUdmLE1BQUUsQ0FBQyxPQUFPLEdBQUcsVUFBUyxPQUFPLEVBQUU7QUFDN0IsYUFBTyxJQUFJLEVBQUUsQ0FBQyxjQUFjLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDbkUsQ0FBQzs7QUFFRixRQUFJLEtBQUssR0FBRyxrQ0FBc0IsT0FBTyxDQUFDLENBQUM7QUFDM0MsV0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLG9CQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0dBQzFDIiwiZmlsZSI6ImJhc2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGFyc2VyIGZyb20gJy4vcGFyc2VyJztcbmltcG9ydCBXaGl0ZXNwYWNlQ29udHJvbCBmcm9tICcuL3doaXRlc3BhY2UtY29udHJvbCc7XG5pbXBvcnQgKiBhcyBIZWxwZXJzIGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyBleHRlbmQgfSBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCB7IHBhcnNlciB9O1xuXG5sZXQgeXkgPSB7fTtcbmV4dGVuZCh5eSwgSGVscGVycyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZShpbnB1dCwgb3B0aW9ucykge1xuICAvLyBKdXN0IHJldHVybiBpZiBhbiBhbHJlYWR5LWNvbXBpbGVkIEFTVCB3YXMgcGFzc2VkIGluLlxuICBpZiAoaW5wdXQudHlwZSA9PT0gJ1Byb2dyYW0nKSB7IHJldHVybiBpbnB1dDsgfVxuXG4gIHBhcnNlci55eSA9IHl5O1xuXG4gIC8vIEFsdGVyaW5nIHRoZSBzaGFyZWQgb2JqZWN0IGhlcmUsIGJ1dCB0aGlzIGlzIG9rIGFzIHBhcnNlciBpcyBhIHN5bmMgb3BlcmF0aW9uXG4gIHl5LmxvY0luZm8gPSBmdW5jdGlvbihsb2NJbmZvKSB7XG4gICAgcmV0dXJuIG5ldyB5eS5Tb3VyY2VMb2NhdGlvbihvcHRpb25zICYmIG9wdGlvbnMuc3JjTmFtZSwgbG9jSW5mbyk7XG4gIH07XG5cbiAgbGV0IHN0cmlwID0gbmV3IFdoaXRlc3BhY2VDb250cm9sKG9wdGlvbnMpO1xuICByZXR1cm4gc3RyaXAuYWNjZXB0KHBhcnNlci5wYXJzZShpbnB1dCkpO1xufVxuIl19 |
| 1 | define(['exports', 'module', '../utils'], function (exports, module, _utils) { | ||
| 2 | /* global define */ | ||
| 3 | 'use strict'; | ||
| 4 | |||
| 5 | var SourceNode = undefined; | ||
| 6 | |||
| 7 | try { | ||
| 8 | /* istanbul ignore next */ | ||
| 9 | if (typeof define !== 'function' || !define.amd) { | ||
| 10 | // We don't support this in AMD environments. For these environments, we asusme that | ||
| 11 | // they are running on the browser and thus have no need for the source-map library. | ||
| 12 | var SourceMap = require('source-map'); | ||
| 13 | SourceNode = SourceMap.SourceNode; | ||
| 14 | } | ||
| 15 | } catch (err) {} | ||
| 16 | /* NOP */ | ||
| 17 | |||
| 18 | /* istanbul ignore if: tested but not covered in istanbul due to dist build */ | ||
| 19 | if (!SourceNode) { | ||
| 20 | SourceNode = function (line, column, srcFile, chunks) { | ||
| 21 | this.src = ''; | ||
| 22 | if (chunks) { | ||
| 23 | this.add(chunks); | ||
| 24 | } | ||
| 25 | }; | ||
| 26 | /* istanbul ignore next */ | ||
| 27 | SourceNode.prototype = { | ||
| 28 | add: function add(chunks) { | ||
| 29 | if (_utils.isArray(chunks)) { | ||
| 30 | chunks = chunks.join(''); | ||
| 31 | } | ||
| 32 | this.src += chunks; | ||
| 33 | }, | ||
| 34 | prepend: function prepend(chunks) { | ||
| 35 | if (_utils.isArray(chunks)) { | ||
| 36 | chunks = chunks.join(''); | ||
| 37 | } | ||
| 38 | this.src = chunks + this.src; | ||
| 39 | }, | ||
| 40 | toStringWithSourceMap: function toStringWithSourceMap() { | ||
| 41 | return { code: this.toString() }; | ||
| 42 | }, | ||
| 43 | toString: function toString() { | ||
| 44 | return this.src; | ||
| 45 | } | ||
| 46 | }; | ||
| 47 | } | ||
| 48 | |||
| 49 | function castChunk(chunk, codeGen, loc) { | ||
| 50 | if (_utils.isArray(chunk)) { | ||
| 51 | var ret = []; | ||
| 52 | |||
| 53 | for (var i = 0, len = chunk.length; i < len; i++) { | ||
| 54 | ret.push(codeGen.wrap(chunk[i], loc)); | ||
| 55 | } | ||
| 56 | return ret; | ||
| 57 | } else if (typeof chunk === 'boolean' || typeof chunk === 'number') { | ||
| 58 | // Handle primitives that the SourceNode will throw up on | ||
| 59 | return chunk + ''; | ||
| 60 | } | ||
| 61 | return chunk; | ||
| 62 | } | ||
| 63 | |||
| 64 | function CodeGen(srcFile) { | ||
| 65 | this.srcFile = srcFile; | ||
| 66 | this.source = []; | ||
| 67 | } | ||
| 68 | |||
| 69 | CodeGen.prototype = { | ||
| 70 | isEmpty: function isEmpty() { | ||
| 71 | return !this.source.length; | ||
| 72 | }, | ||
| 73 | prepend: function prepend(source, loc) { | ||
| 74 | this.source.unshift(this.wrap(source, loc)); | ||
| 75 | }, | ||
| 76 | push: function push(source, loc) { | ||
| 77 | this.source.push(this.wrap(source, loc)); | ||
| 78 | }, | ||
| 79 | |||
| 80 | merge: function merge() { | ||
| 81 | var source = this.empty(); | ||
| 82 | this.each(function (line) { | ||
| 83 | source.add([' ', line, '\n']); | ||
| 84 | }); | ||
| 85 | return source; | ||
| 86 | }, | ||
| 87 | |||
| 88 | each: function each(iter) { | ||
| 89 | for (var i = 0, len = this.source.length; i < len; i++) { | ||
| 90 | iter(this.source[i]); | ||
| 91 | } | ||
| 92 | }, | ||
| 93 | |||
| 94 | empty: function empty() { | ||
| 95 | var loc = this.currentLocation || { start: {} }; | ||
| 96 | return new SourceNode(loc.start.line, loc.start.column, this.srcFile); | ||
| 97 | }, | ||
| 98 | wrap: function wrap(chunk) { | ||
| 99 | var loc = arguments.length <= 1 || arguments[1] === undefined ? this.currentLocation || { start: {} } : arguments[1]; | ||
| 100 | |||
| 101 | if (chunk instanceof SourceNode) { | ||
| 102 | return chunk; | ||
| 103 | } | ||
| 104 | |||
| 105 | chunk = castChunk(chunk, this, loc); | ||
| 106 | |||
| 107 | return new SourceNode(loc.start.line, loc.start.column, this.srcFile, chunk); | ||
| 108 | }, | ||
| 109 | |||
| 110 | functionCall: function functionCall(fn, type, params) { | ||
| 111 | params = this.generateList(params); | ||
| 112 | return this.wrap([fn, type ? '.' + type + '(' : '(', params, ')']); | ||
| 113 | }, | ||
| 114 | |||
| 115 | quotedString: function quotedString(str) { | ||
| 116 | return '"' + (str + '').replace(/\\/g, '\\\\').replace(/"/g, '\\"').replace(/\n/g, '\\n').replace(/\r/g, '\\r').replace(/\u2028/g, '\\u2028') // Per Ecma-262 7.3 + 7.8.4 | ||
| 117 | .replace(/\u2029/g, '\\u2029') + '"'; | ||
| 118 | }, | ||
| 119 | |||
| 120 | objectLiteral: function objectLiteral(obj) { | ||
| 121 | var pairs = []; | ||
| 122 | |||
| 123 | for (var key in obj) { | ||
| 124 | if (obj.hasOwnProperty(key)) { | ||
| 125 | var value = castChunk(obj[key], this); | ||
| 126 | if (value !== 'undefined') { | ||
| 127 | pairs.push([this.quotedString(key), ':', value]); | ||
| 128 | } | ||
| 129 | } | ||
| 130 | } | ||
| 131 | |||
| 132 | var ret = this.generateList(pairs); | ||
| 133 | ret.prepend('{'); | ||
| 134 | ret.add('}'); | ||
| 135 | return ret; | ||
| 136 | }, | ||
| 137 | |||
| 138 | generateList: function generateList(entries) { | ||
| 139 | var ret = this.empty(); | ||
| 140 | |||
| 141 | for (var i = 0, len = entries.length; i < len; i++) { | ||
| 142 | if (i) { | ||
| 143 | ret.add(','); | ||
| 144 | } | ||
| 145 | |||
| 146 | ret.add(castChunk(entries[i], this)); | ||
| 147 | } | ||
| 148 | |||
| 149 | return ret; | ||
| 150 | }, | ||
| 151 | |||
| 152 | generateArray: function generateArray(entries) { | ||
| 153 | var ret = this.generateList(entries); | ||
| 154 | ret.prepend('['); | ||
| 155 | ret.add(']'); | ||
| 156 | |||
| 157 | return ret; | ||
| 158 | } | ||
| 159 | }; | ||
| 160 | |||
| 161 | module.exports = CodeGen; | ||
| 162 | }); | ||
| 163 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2NvbXBpbGVyL2NvZGUtZ2VuLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFHQSxNQUFJLFVBQVUsWUFBQSxDQUFDOztBQUVmLE1BQUk7O0FBRUYsUUFBSSxPQUFPLE1BQU0sS0FBSyxVQUFVLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFOzs7QUFHL0MsVUFBSSxTQUFTLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQ3RDLGdCQUFVLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQztLQUNuQztHQUNGLENBQUMsT0FBTyxHQUFHLEVBQUUsRUFFYjs7OztBQUFBLEFBR0QsTUFBSSxDQUFDLFVBQVUsRUFBRTtBQUNmLGNBQVUsR0FBRyxVQUFTLElBQUksRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRTtBQUNuRCxVQUFJLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUNkLFVBQUksTUFBTSxFQUFFO0FBQ1YsWUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztPQUNsQjtLQUNGLENBQUM7O0FBRUYsY0FBVSxDQUFDLFNBQVMsR0FBRztBQUNyQixTQUFHLEVBQUUsYUFBUyxNQUFNLEVBQUU7QUFDcEIsWUFBSSxPQTNCRixPQUFPLENBMkJHLE1BQU0sQ0FBQyxFQUFFO0FBQ25CLGdCQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUMxQjtBQUNELFlBQUksQ0FBQyxHQUFHLElBQUksTUFBTSxDQUFDO09BQ3BCO0FBQ0QsYUFBTyxFQUFFLGlCQUFTLE1BQU0sRUFBRTtBQUN4QixZQUFJLE9BakNGLE9BQU8sQ0FpQ0csTUFBTSxDQUFDLEVBQUU7QUFDbkIsZ0JBQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQzFCO0FBQ0QsWUFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFD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QUFZLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDckMsU0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNqQixTQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDOztBQUViLGFBQU8sR0FBRyxDQUFDO0tBQ1o7R0FDRixDQUFDOzttQkFFYSxPQUFPIiwiZmlsZSI6ImNvZGUtZ2VuLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogZ2xvYmFsIGRlZmluZSAqL1xuaW1wb3J0IHtpc0FycmF5fSBmcm9tICcuLi91dGlscyc7XG5cbmxldCBTb3VyY2VOb2RlO1xuXG50cnkge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBpZiAodHlwZW9mIGRlZmluZSAhPT0gJ2Z1bmN0aW9uJyB8fCAhZGVmaW5lLmFtZCkge1xuICAgIC8vIFdlIGRvbid0IHN1cHBvcnQgdGhpcyBpbiBBTUQgZW52aXJvbm1lbnRzLiBGb3IgdGhlc2UgZW52aXJvbm1lbnRzLCB3ZSBhc3VzbWUgdGhhdFxuICAgIC8vIHRoZXkgYXJlIHJ1bm5pbmcgb24gdGhlIGJyb3dzZXIgYW5kIHRodXMgaGF2ZSBubyBuZWVkIGZvciB0aGUgc291cmNlLW1hcCBsaWJyYXJ5LlxuICAgIGxldCBTb3VyY2VNYXAgPSByZXF1aXJlKCdzb3VyY2UtbWFwJyk7XG4gICAgU291cmNlTm9kZSA9IFNvdXJjZU1hcC5Tb3VyY2VOb2RlO1xuICB9XG59IGNhdGNoIChlcnIpIHtcbiAgLyogTk9QICovXG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBpZjogdGVzdGVkIGJ1dCBub3QgY292ZXJlZCBpbiBpc3RhbmJ1bCBkdWUgdG8gZGlzdCBidWlsZCAgKi9cbmlmICghU291cmNlTm9kZSkge1xuICBTb3VyY2VOb2RlID0gZnVuY3Rpb24obGluZSwgY29sdW1uLCBzcmNGaWxlLCBjaHVua3MpIHtcbiAgICB0aGlzLnNyYyA9ICcnO1xuICAgIGlmIChjaHVua3MpIHtcbiAgICAgIHRoaXMuYWRkKGNodW5rcyk7XG4gICAgfVxuICB9O1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBTb3VyY2VOb2RlLnByb3RvdHlwZSA9IHtcbiAgICBhZGQ6IGZ1bmN0aW9uKGNodW5rcykge1xuICAgICAgaWYgKGlzQXJyYXkoY2h1bmtzKSkge1xuICAgICAgICBjaHVua3MgPSBjaHVua3Muam9pbignJyk7XG4gICAgICB9XG4gICAgICB0aGlzLnNyYyArPSBjaHVua3M7XG4gICAgfSxcbiAgICBwcmVwZW5kOiBmdW5jdGlvbihjaHVua3MpIHtcbiAgICAgIGlmIChpc0FycmF5KGNodW5rcykpIHtcbiAgICAgICAgY2h1bmtzID0gY2h1bmtzLmpvaW4oJycpO1xuICAgICAgfVxuICAgICAgdGhpcy5zcmMgPSBjaHVua3MgKyB0aGlzLnNyYztcbiAgICB9LFxuICAgIHRvU3RyaW5nV2l0aFNvdXJjZU1hcDogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4ge2NvZGU6IHRoaXMudG9TdHJpbmcoKX07XG4gICAgfSxcbiAgICB0b1N0cmluZzogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5zcmM7XG4gICAgfVxuICB9O1xufVxuXG5cbmZ1bmN0aW9uIGNhc3RDaHVuayhjaHVuaywgY29kZUdlbiwgbG9jKSB7XG4gIGlmIChpc0FycmF5KGNodW5rKSkge1xuICAgIGxldCByZXQgPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSBjaHVuay5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgcmV0LnB1c2goY29kZUdlbi53cmFwKGNodW5rW2ldLCBsb2MpKTtcbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfSBlbHNlIGlmICh0eXBlb2YgY2h1bmsgPT09ICdib29sZWFuJyB8fCB0eXBlb2YgY2h1bmsgPT09ICdudW1iZXInKSB7XG4gICAgLy8gSGFuZGxlIHByaW1pdGl2ZXMgdGhhdCB0aGUgU291cmNlTm9kZSB3aWxsIHRocm93IHVwIG9uXG4gICAgcmV0dXJuIGNodW5rICsgJyc7XG4gIH1cbiAgcmV0dXJuIGNodW5rO1xufVxuXG5cbmZ1bmN0aW9uIENvZGVHZW4oc3JjRmlsZSkge1xuICB0aGlzLnNyY0ZpbGUgPSBzcmNGaWxlO1xuICB0aGlzLnNvdXJjZSA9IFtdO1xufVxuXG5Db2RlR2VuLnByb3RvdHlwZSA9IHtcbiAgaXNFbXB0eSgpIHtcbiAgICByZXR1cm4gIXRoaXMuc291cmNlLmxlbmd0aDtcbiAgfSxcbiAgcHJlcGVuZDogZnVuY3Rpb24oc291cmNlLCBsb2MpIHtcbiAgICB0aGlzLnNvdXJjZS51bnNoaWZ0KHRoaXMud3JhcChzb3VyY2UsIGxvYykpO1xuICB9LFxuICBwdXNoOiBmdW5jdGlvbihzb3VyY2UsIGxvYykge1xuICAgIHRoaXMuc291cmNlLnB1c2godGhpcy53cmFwKHNvdXJjZSwgbG9jKSk7XG4gIH0sXG5cbiAgbWVyZ2U6IGZ1bmN0aW9uKCkge1xuICAgIGxldCBzb3VyY2UgPSB0aGlzLmVtcHR5KCk7XG4gICAgdGhpcy5lYWNoKGZ1bmN0aW9uKGxpbmUpIHtcbiAgICAgIHNvdXJjZS5hZGQoWycgICcsIGxpbmUsICdcXG4nXSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHNvdXJjZTtcbiAgfSxcblxuICBlYWNoOiBmdW5jdGlvbihpdGVyKSB7XG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHRoaXMuc291cmNlLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBpdGVyKHRoaXMuc291cmNlW2ldKTtcbiAgICB9XG4gIH0sXG5cbiAgZW1wdHk6IGZ1bmN0aW9uKCkge1xuICAgIGxldCBsb2MgPSB0aGlzLmN1cnJlbnRMb2NhdGlvbiB8fCB7c3RhcnQ6IHt9fTtcbiAgICByZXR1cm4gbmV3IFNvdXJjZU5vZGUobG9jLnN0YXJ0LmxpbmUsIGxvYy5zdGFydC5jb2x1bW4sIHRoaXMuc3JjRmlsZSk7XG4gIH0sXG4gIHdyYXA6IGZ1bmN0aW9uKGNodW5rLCBsb2MgPSB0aGlzLmN1cnJlbnRMb2NhdGlvbiB8fCB7c3RhcnQ6IHt9fSkge1xuICAgIGlmIChjaHVuayBpbnN0YW5jZW9mIFNvdXJjZU5vZGUpIHtcbiAgICAgIHJldHVybiBjaHVuaztcbiAgICB9XG5cbiAgICBjaHVuayA9IGNhc3RDaHVuayhjaHVuaywgdGhpcywgbG9jKTtcblxuICAgIHJldHVybiBuZXcgU291cmNlTm9kZShsb2Muc3RhcnQubGluZSwgbG9jLnN0YXJ0LmNvbHVtbiwgdGhpcy5zcmNGaWxlLCBjaHVuayk7XG4gIH0sXG5cbiAgZnVuY3Rpb25DYWxsOiBmdW5jdGlvbihmbiwgdHlwZSwgcGFyYW1zKSB7XG4gICAgcGFyYW1zID0gdGhpcy5nZW5lcmF0ZUxpc3QocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy53cmFwKFtmbiwgdHlwZSA/ICcuJyArIHR5cGUgKyAnKCcgOiAnKCcsIHBhcmFtcywgJyknXSk7XG4gIH0sXG5cbiAgcXVvdGVkU3RyaW5nOiBmdW5jdGlvbihzdHIpIHtcbiAgICByZXR1cm4gJ1wiJyArIChzdHIgKyAnJylcbiAgICAgIC5yZXBsYWNlKC9cXFxcL2csICdcXFxcXFxcXCcpXG4gICAgICAucmVwbGFjZSgvXCIvZywgJ1xcXFxcIicpXG4gICAgICAucmVwbGFjZSgvXFxuL2csICdcXFxcbicpXG4gICAgICAucmVwbGFjZSgvXFxyL2csICdcXFxccicpXG4gICAgICAucmVwbGFjZSgvXFx1MjAyOC9nLCAnXFxcXHUyMDI4JykgICAvLyBQZXIgRWNtYS0yNjIgNy4zICsgNy44LjRcbiAgICAgIC5yZXBsYWNlKC9cXHUyMDI5L2csICdcXFxcdTIwMjknKSArICdcIic7XG4gIH0sXG5cbiAgb2JqZWN0TGl0ZXJhbDogZnVuY3Rpb24ob2JqKSB7XG4gICAgbGV0IHBhaXJzID0gW107XG5cbiAgICBmb3IgKGxldCBrZXkgaW4gb2JqKSB7XG4gICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgbGV0IHZhbHVlID0gY2FzdENodW5rKG9ialtrZXldLCB0aGlzKTtcbiAgICAgICAgaWYgKHZhbHVlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIHBhaXJzLnB1c2goW3RoaXMucXVvdGVkU3RyaW5nKGtleSksICc6JywgdmFsdWVdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGxldCByZXQgPSB0aGlzLmdlbmVyYXRlTGlzdChwYWlycyk7XG4gICAgcmV0LnByZXBlbmQoJ3snKTtcbiAgICByZXQuYWRkKCd9Jyk7XG4gICAgcmV0dXJuIHJldDtcbiAgfSxcblxuXG4gIGdlbmVyYXRlTGlzdDogZnVuY3Rpb24oZW50cmllcykge1xuICAgIGxldCByZXQgPSB0aGlzLmVtcHR5KCk7XG5cbiAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gZW50cmllcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgaWYgKGkpIHtcbiAgICAgICAgcmV0LmFkZCgnLCcpO1xuICAgICAgfVxuXG4gICAgICByZXQuYWRkKGNhc3RDaHVuayhlbnRyaWVzW2ldLCB0aGlzKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJldDtcbiAgfSxcblxuICBnZW5lcmF0ZUFycmF5OiBmdW5jdGlvbihlbnRyaWVzKSB7XG4gICAgbGV0IHJldCA9IHRoaXMuZ2VuZXJhdGVMaXN0KGVudHJpZXMpO1xuICAgIHJldC5wcmVwZW5kKCdbJyk7XG4gICAgcmV0LmFkZCgnXScpO1xuXG4gICAgcmV0dXJuIHJldDtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgQ29kZUdlbjtcblxuIl19 |
| 1 | define(['exports', '../exception', '../utils', './ast'], function (exports, _exception, _utils, _ast) { | ||
| 2 | /* eslint-disable new-cap */ | ||
| 3 | |||
| 4 | 'use strict'; | ||
| 5 | |||
| 6 | exports.__esModule = true; | ||
| 7 | exports.Compiler = Compiler; | ||
| 8 | exports.precompile = precompile; | ||
| 9 | exports.compile = compile; | ||
| 10 | // istanbul ignore next | ||
| 11 | |||
| 12 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } | ||
| 13 | |||
| 14 | var _Exception = _interopRequireDefault(_exception); | ||
| 15 | |||
| 16 | var _AST = _interopRequireDefault(_ast); | ||
| 17 | |||
| 18 | var slice = [].slice; | ||
| 19 | |||
| 20 | function Compiler() {} | ||
| 21 | |||
| 22 | // the foundHelper register will disambiguate helper lookup from finding a | ||
| 23 | // function in a context. This is necessary for mustache compatibility, which | ||
| 24 | // requires that context functions in blocks are evaluated by blockHelperMissing, | ||
| 25 | // and then proceed as if the resulting value was provided to blockHelperMissing. | ||
| 26 | |||
| 27 | Compiler.prototype = { | ||
| 28 | compiler: Compiler, | ||
| 29 | |||
| 30 | equals: function equals(other) { | ||
| 31 | var len = this.opcodes.length; | ||
| 32 | if (other.opcodes.length !== len) { | ||
| 33 | return false; | ||
| 34 | } | ||
| 35 | |||
| 36 | for (var i = 0; i < len; i++) { | ||
| 37 | var opcode = this.opcodes[i], | ||
| 38 | otherOpcode = other.opcodes[i]; | ||
| 39 | if (opcode.opcode !== otherOpcode.opcode || !argEquals(opcode.args, otherOpcode.args)) { | ||
| 40 | return false; | ||
| 41 | } | ||
| 42 | } | ||
| 43 | |||
| 44 | // We know that length is the same between the two arrays because they are directly tied | ||
| 45 | // to the opcode behavior above. | ||
| 46 | len = this.children.length; | ||
| 47 | for (var i = 0; i < len; i++) { | ||
| 48 | if (!this.children[i].equals(other.children[i])) { | ||
| 49 | return false; | ||
| 50 | } | ||
| 51 | } | ||
| 52 | |||
| 53 | return true; | ||
| 54 | }, | ||
| 55 | |||
| 56 | guid: 0, | ||
| 57 | |||
| 58 | compile: function compile(program, options) { | ||
| 59 | this.sourceNode = []; | ||
| 60 | this.opcodes = []; | ||
| 61 | this.children = []; | ||
| 62 | this.options = options; | ||
| 63 | this.stringParams = options.stringParams; | ||
| 64 | this.trackIds = options.trackIds; | ||
| 65 | |||
| 66 | options.blockParams = options.blockParams || []; | ||
| 67 | |||
| 68 | // These changes will propagate to the other compiler components | ||
| 69 | var knownHelpers = options.knownHelpers; | ||
| 70 | options.knownHelpers = { | ||
| 71 | 'helperMissing': true, | ||
| 72 | 'blockHelperMissing': true, | ||
| 73 | 'each': true, | ||
| 74 | 'if': true, | ||
| 75 | 'unless': true, | ||
| 76 | 'with': true, | ||
| 77 | 'log': true, | ||
| 78 | 'lookup': true | ||
| 79 | }; | ||
| 80 | if (knownHelpers) { | ||
| 81 | for (var _name in knownHelpers) { | ||
| 82 | /* istanbul ignore else */ | ||
| 83 | if (_name in knownHelpers) { | ||
| 84 | this.options.knownHelpers[_name] = knownHelpers[_name]; | ||
| 85 | } | ||
| 86 | } | ||
| 87 | } | ||
| 88 | |||
| 89 | return this.accept(program); | ||
| 90 | }, | ||
| 91 | |||
| 92 | compileProgram: function compileProgram(program) { | ||
| 93 | var childCompiler = new this.compiler(), | ||
| 94 | // eslint-disable-line new-cap | ||
| 95 | result = childCompiler.compile(program, this.options), | ||
| 96 | guid = this.guid++; | ||
| 97 | |||
| 98 | this.usePartial = this.usePartial || result.usePartial; | ||
| 99 | |||
| 100 | this.children[guid] = result; | ||
| 101 | this.useDepths = this.useDepths || result.useDepths; | ||
| 102 | |||
| 103 | return guid; | ||
| 104 | }, | ||
| 105 | |||
| 106 | accept: function accept(node) { | ||
| 107 | /* istanbul ignore next: Sanity code */ | ||
| 108 | if (!this[node.type]) { | ||
| 109 | throw new _Exception['default']('Unknown type: ' + node.type, node); | ||
| 110 | } | ||
| 111 | |||
| 112 | this.sourceNode.unshift(node); | ||
| 113 | var ret = this[node.type](node); | ||
| 114 | this.sourceNode.shift(); | ||
| 115 | return ret; | ||
| 116 | }, | ||
| 117 | |||
| 118 | Program: function Program(program) { | ||
| 119 | this.options.blockParams.unshift(program.blockParams); | ||
| 120 | |||
| 121 | var body = program.body, | ||
| 122 | bodyLength = body.length; | ||
| 123 | for (var i = 0; i < bodyLength; i++) { | ||
| 124 | this.accept(body[i]); | ||
| 125 | } | ||
| 126 | |||
| 127 | this.options.blockParams.shift(); | ||
| 128 | |||
| 129 | this.isSimple = bodyLength === 1; | ||
| 130 | this.blockParams = program.blockParams ? program.blockParams.length : 0; | ||
| 131 | |||
| 132 | return this; | ||
| 133 | }, | ||
| 134 | |||
| 135 | BlockStatement: function BlockStatement(block) { | ||
| 136 | transformLiteralToPath(block); | ||
| 137 | |||
| 138 | var program = block.program, | ||
| 139 | inverse = block.inverse; | ||
| 140 | |||
| 141 | program = program && this.compileProgram(program); | ||
| 142 | inverse = inverse && this.compileProgram(inverse); | ||
| 143 | |||
| 144 | var type = this.classifySexpr(block); | ||
| 145 | |||
| 146 | if (type === 'helper') { | ||
| 147 | this.helperSexpr(block, program, inverse); | ||
| 148 | } else if (type === 'simple') { | ||
| 149 | this.simpleSexpr(block); | ||
| 150 | |||
| 151 | // now that the simple mustache is resolved, we need to | ||
| 152 | // evaluate it by executing `blockHelperMissing` | ||
| 153 | this.opcode('pushProgram', program); | ||
| 154 | this.opcode('pushProgram', inverse); | ||
| 155 | this.opcode('emptyHash'); | ||
| 156 | this.opcode('blockValue', block.path.original); | ||
| 157 | } else { | ||
| 158 | this.ambiguousSexpr(block, program, inverse); | ||
| 159 | |||
| 160 | // now that the simple mustache is resolved, we need to | ||
| 161 | // evaluate it by executing `blockHelperMissing` | ||
| 162 | this.opcode('pushProgram', program); | ||
| 163 | this.opcode('pushProgram', inverse); | ||
| 164 | this.opcode('emptyHash'); | ||
| 165 | this.opcode('ambiguousBlockValue'); | ||
| 166 | } | ||
| 167 | |||
| 168 | this.opcode('append'); | ||
| 169 | }, | ||
| 170 | |||
| 171 | DecoratorBlock: function DecoratorBlock(decorator) { | ||
| 172 | var program = decorator.program && this.compileProgram(decorator.program); | ||
| 173 | var params = this.setupFullMustacheParams(decorator, program, undefined), | ||
| 174 | path = decorator.path; | ||
| 175 | |||
| 176 | this.useDecorators = true; | ||
| 177 | this.opcode('registerDecorator', params.length, path.original); | ||
| 178 | }, | ||
| 179 | |||
| 180 | PartialStatement: function PartialStatement(partial) { | ||
| 181 | this.usePartial = true; | ||
| 182 | |||
| 183 | var program = partial.program; | ||
| 184 | if (program) { | ||
| 185 | program = this.compileProgram(partial.program); | ||
| 186 | } | ||
| 187 | |||
| 188 | var params = partial.params; | ||
| 189 | if (params.length > 1) { | ||
| 190 | throw new _Exception['default']('Unsupported number of partial arguments: ' + params.length, partial); | ||
| 191 | } else if (!params.length) { | ||
| 192 | if (this.options.explicitPartialContext) { | ||
| 193 | this.opcode('pushLiteral', 'undefined'); | ||
| 194 | } else { | ||
| 195 | params.push({ type: 'PathExpression', parts: [], depth: 0 }); | ||
| 196 | } | ||
| 197 | } | ||
| 198 | |||
| 199 | var partialName = partial.name.original, | ||
| 200 | isDynamic = partial.name.type === 'SubExpression'; | ||
| 201 | if (isDynamic) { | ||
| 202 | this.accept(partial.name); | ||
| 203 | } | ||
| 204 | |||
| 205 | this.setupFullMustacheParams(partial, program, undefined, true); | ||
| 206 | |||
| 207 | var indent = partial.indent || ''; | ||
| 208 | if (this.options.preventIndent && indent) { | ||
| 209 | this.opcode('appendContent', indent); | ||
| 210 | indent = ''; | ||
| 211 | } | ||
| 212 | |||
| 213 | this.opcode('invokePartial', isDynamic, partialName, indent); | ||
| 214 | this.opcode('append'); | ||
| 215 | }, | ||
| 216 | PartialBlockStatement: function PartialBlockStatement(partialBlock) { | ||
| 217 | this.PartialStatement(partialBlock); | ||
| 218 | }, | ||
| 219 | |||
| 220 | MustacheStatement: function MustacheStatement(mustache) { | ||
| 221 | this.SubExpression(mustache); | ||
| 222 | |||
| 223 | if (mustache.escaped && !this.options.noEscape) { | ||
| 224 | this.opcode('appendEscaped'); | ||
| 225 | } else { | ||
| 226 | this.opcode('append'); | ||
| 227 | } | ||
| 228 | }, | ||
| 229 | Decorator: function Decorator(decorator) { | ||
| 230 | this.DecoratorBlock(decorator); | ||
| 231 | }, | ||
| 232 | |||
| 233 | ContentStatement: function ContentStatement(content) { | ||
| 234 | if (content.value) { | ||
| 235 | this.opcode('appendContent', content.value); | ||
| 236 | } | ||
| 237 | }, | ||
| 238 | |||
| 239 | CommentStatement: function CommentStatement() {}, | ||
| 240 | |||
| 241 | SubExpression: function SubExpression(sexpr) { | ||
| 242 | transformLiteralToPath(sexpr); | ||
| 243 | var type = this.classifySexpr(sexpr); | ||
| 244 | |||
| 245 | if (type === 'simple') { | ||
| 246 | this.simpleSexpr(sexpr); | ||
| 247 | } else if (type === 'helper') { | ||
| 248 | this.helperSexpr(sexpr); | ||
| 249 | } else { | ||
| 250 | this.ambiguousSexpr(sexpr); | ||
| 251 | } | ||
| 252 | }, | ||
| 253 | ambiguousSexpr: function ambiguousSexpr(sexpr, program, inverse) { | ||
| 254 | var path = sexpr.path, | ||
| 255 | name = path.parts[0], | ||
| 256 | isBlock = program != null || inverse != null; | ||
| 257 | |||
| 258 | this.opcode('getContext', path.depth); | ||
| 259 | |||
| 260 | this.opcode('pushProgram', program); | ||
| 261 | this.opcode('pushProgram', inverse); | ||
| 262 | |||
| 263 | path.strict = true; | ||
| 264 | this.accept(path); | ||
| 265 | |||
| 266 | this.opcode('invokeAmbiguous', name, isBlock); | ||
| 267 | }, | ||
| 268 | |||
| 269 | simpleSexpr: function simpleSexpr(sexpr) { | ||
| 270 | var path = sexpr.path; | ||
| 271 | path.strict = true; | ||
| 272 | this.accept(path); | ||
| 273 | this.opcode('resolvePossibleLambda'); | ||
| 274 | }, | ||
| 275 | |||
| 276 | helperSexpr: function helperSexpr(sexpr, program, inverse) { | ||
| 277 | var params = this.setupFullMustacheParams(sexpr, program, inverse), | ||
| 278 | path = sexpr.path, | ||
| 279 | name = path.parts[0]; | ||
| 280 | |||
| 281 | if (this.options.knownHelpers[name]) { | ||
| 282 | this.opcode('invokeKnownHelper', params.length, name); | ||
| 283 | } else if (this.options.knownHelpersOnly) { | ||
| 284 | throw new _Exception['default']('You specified knownHelpersOnly, but used the unknown helper ' + name, sexpr); | ||
| 285 | } else { | ||
| 286 | path.strict = true; | ||
| 287 | path.falsy = true; | ||
| 288 | |||
| 289 | this.accept(path); | ||
| 290 | this.opcode('invokeHelper', params.length, path.original, _AST['default'].helpers.simpleId(path)); | ||
| 291 | } | ||
| 292 | }, | ||
| 293 | |||
| 294 | PathExpression: function PathExpression(path) { | ||
| 295 | this.addDepth(path.depth); | ||
| 296 | this.opcode('getContext', path.depth); | ||
| 297 | |||
| 298 | var name = path.parts[0], | ||
| 299 | scoped = _AST['default'].helpers.scopedId(path), | ||
| 300 | blockParamId = !path.depth && !scoped && this.blockParamIndex(name); | ||
| 301 | |||
| 302 | if (blockParamId) { | ||
| 303 | this.opcode('lookupBlockParam', blockParamId, path.parts); | ||
| 304 | } else if (!name) { | ||
| 305 | // Context reference, i.e. `{{foo .}}` or `{{foo ..}}` | ||
| 306 | this.opcode('pushContext'); | ||
| 307 | } else if (path.data) { | ||
| 308 | this.options.data = true; | ||
| 309 | this.opcode('lookupData', path.depth, path.parts, path.strict); | ||
| 310 | } else { | ||
| 311 | this.opcode('lookupOnContext', path.parts, path.falsy, path.strict, scoped); | ||
| 312 | } | ||
| 313 | }, | ||
| 314 | |||
| 315 | StringLiteral: function StringLiteral(string) { | ||
| 316 | this.opcode('pushString', string.value); | ||
| 317 | }, | ||
| 318 | |||
| 319 | NumberLiteral: function NumberLiteral(number) { | ||
| 320 | this.opcode('pushLiteral', number.value); | ||
| 321 | }, | ||
| 322 | |||
| 323 | BooleanLiteral: function BooleanLiteral(bool) { | ||
| 324 | this.opcode('pushLiteral', bool.value); | ||
| 325 | }, | ||
| 326 | |||
| 327 | UndefinedLiteral: function UndefinedLiteral() { | ||
| 328 | this.opcode('pushLiteral', 'undefined'); | ||
| 329 | }, | ||
| 330 | |||
| 331 | NullLiteral: function NullLiteral() { | ||
| 332 | this.opcode('pushLiteral', 'null'); | ||
| 333 | }, | ||
| 334 | |||
| 335 | Hash: function Hash(hash) { | ||
| 336 | var pairs = hash.pairs, | ||
| 337 | i = 0, | ||
| 338 | l = pairs.length; | ||
| 339 | |||
| 340 | this.opcode('pushHash'); | ||
| 341 | |||
| 342 | for (; i < l; i++) { | ||
| 343 | this.pushParam(pairs[i].value); | ||
| 344 | } | ||
| 345 | while (i--) { | ||
| 346 | this.opcode('assignToHash', pairs[i].key); | ||
| 347 | } | ||
| 348 | this.opcode('popHash'); | ||
| 349 | }, | ||
| 350 | |||
| 351 | // HELPERS | ||
| 352 | opcode: function opcode(name) { | ||
| 353 | this.opcodes.push({ opcode: name, args: slice.call(arguments, 1), loc: this.sourceNode[0].loc }); | ||
| 354 | }, | ||
| 355 | |||
| 356 | addDepth: function addDepth(depth) { | ||
| 357 | if (!depth) { | ||
| 358 | return; | ||
| 359 | } | ||
| 360 | |||
| 361 | this.useDepths = true; | ||
| 362 | }, | ||
| 363 | |||
| 364 | classifySexpr: function classifySexpr(sexpr) { | ||
| 365 | var isSimple = _AST['default'].helpers.simpleId(sexpr.path); | ||
| 366 | |||
| 367 | var isBlockParam = isSimple && !!this.blockParamIndex(sexpr.path.parts[0]); | ||
| 368 | |||
| 369 | // a mustache is an eligible helper if: | ||
| 370 | // * its id is simple (a single part, not `this` or `..`) | ||
| 371 | var isHelper = !isBlockParam && _AST['default'].helpers.helperExpression(sexpr); | ||
| 372 | |||
| 373 | // if a mustache is an eligible helper but not a definite | ||
| 374 | // helper, it is ambiguous, and will be resolved in a later | ||
| 375 | // pass or at runtime. | ||
| 376 | var isEligible = !isBlockParam && (isHelper || isSimple); | ||
| 377 | |||
| 378 | // if ambiguous, we can possibly resolve the ambiguity now | ||
| 379 | // An eligible helper is one that does not have a complex path, i.e. `this.foo`, `../foo` etc. | ||
| 380 | if (isEligible && !isHelper) { | ||
| 381 | var _name2 = sexpr.path.parts[0], | ||
| 382 | options = this.options; | ||
| 383 | |||
| 384 | if (options.knownHelpers[_name2]) { | ||
| 385 | isHelper = true; | ||
| 386 | } else if (options.knownHelpersOnly) { | ||
| 387 | isEligible = false; | ||
| 388 | } | ||
| 389 | } | ||
| 390 | |||
| 391 | if (isHelper) { | ||
| 392 | return 'helper'; | ||
| 393 | } else if (isEligible) { | ||
| 394 | return 'ambiguous'; | ||
| 395 | } else { | ||
| 396 | return 'simple'; | ||
| 397 | } | ||
| 398 | }, | ||
| 399 | |||
| 400 | pushParams: function pushParams(params) { | ||
| 401 | for (var i = 0, l = params.length; i < l; i++) { | ||
| 402 | this.pushParam(params[i]); | ||
| 403 | } | ||
| 404 | }, | ||
| 405 | |||
| 406 | pushParam: function pushParam(val) { | ||
| 407 | var value = val.value != null ? val.value : val.original || ''; | ||
| 408 | |||
| 409 | if (this.stringParams) { | ||
| 410 | if (value.replace) { | ||
| 411 | value = value.replace(/^(\.?\.\/)*/g, '').replace(/\//g, '.'); | ||
| 412 | } | ||
| 413 | |||
| 414 | if (val.depth) { | ||
| 415 | this.addDepth(val.depth); | ||
| 416 | } | ||
| 417 | this.opcode('getContext', val.depth || 0); | ||
| 418 | this.opcode('pushStringParam', value, val.type); | ||
| 419 | |||
| 420 | if (val.type === 'SubExpression') { | ||
| 421 | // SubExpressions get evaluated and passed in | ||
| 422 | // in string params mode. | ||
| 423 | this.accept(val); | ||
| 424 | } | ||
| 425 | } else { | ||
| 426 | if (this.trackIds) { | ||
| 427 | var blockParamIndex = undefined; | ||
| 428 | if (val.parts && !_AST['default'].helpers.scopedId(val) && !val.depth) { | ||
| 429 | blockParamIndex = this.blockParamIndex(val.parts[0]); | ||
| 430 | } | ||
| 431 | if (blockParamIndex) { | ||
| 432 | var blockParamChild = val.parts.slice(1).join('.'); | ||
| 433 | this.opcode('pushId', 'BlockParam', blockParamIndex, blockParamChild); | ||
| 434 | } else { | ||
| 435 | value = val.original || value; | ||
| 436 | if (value.replace) { | ||
| 437 | value = value.replace(/^this(?:\.|$)/, '').replace(/^\.\//, '').replace(/^\.$/, ''); | ||
| 438 | } | ||
| 439 | |||
| 440 | this.opcode('pushId', val.type, value); | ||
| 441 | } | ||
| 442 | } | ||
| 443 | this.accept(val); | ||
| 444 | } | ||
| 445 | }, | ||
| 446 | |||
| 447 | setupFullMustacheParams: function setupFullMustacheParams(sexpr, program, inverse, omitEmpty) { | ||
| 448 | var params = sexpr.params; | ||
| 449 | this.pushParams(params); | ||
| 450 | |||
| 451 | this.opcode('pushProgram', program); | ||
| 452 | this.opcode('pushProgram', inverse); | ||
| 453 | |||
| 454 | if (sexpr.hash) { | ||
| 455 | this.accept(sexpr.hash); | ||
| 456 | } else { | ||
| 457 | this.opcode('emptyHash', omitEmpty); | ||
| 458 | } | ||
| 459 | |||
| 460 | return params; | ||
| 461 | }, | ||
| 462 | |||
| 463 | blockParamIndex: function blockParamIndex(name) { | ||
| 464 | for (var depth = 0, len = this.options.blockParams.length; depth < len; depth++) { | ||
| 465 | var blockParams = this.options.blockParams[depth], | ||
| 466 | param = blockParams && _utils.indexOf(blockParams, name); | ||
| 467 | if (blockParams && param >= 0) { | ||
| 468 | return [depth, param]; | ||
| 469 | } | ||
| 470 | } | ||
| 471 | } | ||
| 472 | }; | ||
| 473 | |||
| 474 | function precompile(input, options, env) { | ||
| 475 | if (input == null || typeof input !== 'string' && input.type !== 'Program') { | ||
| 476 | throw new _Exception['default']('You must pass a string or Handlebars AST to Handlebars.precompile. You passed ' + input); | ||
| 477 | } | ||
| 478 | |||
| 479 | options = options || {}; | ||
| 480 | if (!('data' in options)) { | ||
| 481 | options.data = true; | ||
| 482 | } | ||
| 483 | if (options.compat) { | ||
| 484 | options.useDepths = true; | ||
| 485 | } | ||
| 486 | |||
| 487 | var ast = env.parse(input, options), | ||
| 488 | environment = new env.Compiler().compile(ast, options); | ||
| 489 | return new env.JavaScriptCompiler().compile(environment, options); | ||
| 490 | } | ||
| 491 | |||
| 492 | function compile(input, options, env) { | ||
| 493 | if (options === undefined) options = {}; | ||
| 494 | |||
| 495 | if (input == null || typeof input !== 'string' && input.type !== 'Program') { | ||
| 496 | throw new _Exception['default']('You must pass a string or Handlebars AST to Handlebars.compile. You passed ' + input); | ||
| 497 | } | ||
| 498 | |||
| 499 | options = _utils.extend({}, options); | ||
| 500 | if (!('data' in options)) { | ||
| 501 | options.data = true; | ||
| 502 | } | ||
| 503 | if (options.compat) { | ||
| 504 | options.useDepths = true; | ||
| 505 | } | ||
| 506 | |||
| 507 | var compiled = undefined; | ||
| 508 | |||
| 509 | function compileInput() { | ||
| 510 | var ast = env.parse(input, options), | ||
| 511 | environment = new env.Compiler().compile(ast, options), | ||
| 512 | templateSpec = new env.JavaScriptCompiler().compile(environment, options, undefined, true); | ||
| 513 | return env.template(templateSpec); | ||
| 514 | } | ||
| 515 | |||
| 516 | // Template is only compiled on first use and cached after that point. | ||
| 517 | function ret(context, execOptions) { | ||
| 518 | if (!compiled) { | ||
| 519 | compiled = compileInput(); | ||
| 520 | } | ||
| 521 | return compiled.call(this, context, execOptions); | ||
| 522 | } | ||
| 523 | ret._setup = function (setupOptions) { | ||
| 524 | if (!compiled) { | ||
| 525 | compiled = compileInput(); | ||
| 526 | } | ||
| 527 | return compiled._setup(setupOptions); | ||
| 528 | }; | ||
| 529 | ret._child = function (i, data, blockParams, depths) { | ||
| 530 | if (!compiled) { | ||
| 531 | compiled = compileInput(); | ||
| 532 | } | ||
| 533 | return compiled._child(i, data, blockParams, depths); | ||
| 534 | }; | ||
| 535 | return ret; | ||
| 536 | } | ||
| 537 | |||
| 538 | function argEquals(a, b) { | ||
| 539 | if (a === b) { | ||
| 540 | return true; | ||
| 541 | } | ||
| 542 | |||
| 543 | if (_utils.isArray(a) && _utils.isArray(b) && a.length === b.length) { | ||
| 544 | for (var i = 0; i < a.length; i++) { | ||
| 545 | if (!argEquals(a[i], b[i])) { | ||
| 546 | return false; | ||
| 547 | } | ||
| 548 | } | ||
| 549 | return true; | ||
| 550 | } | ||
| 551 | } | ||
| 552 | |||
| 553 | function transformLiteralToPath(sexpr) { | ||
| 554 | if (!sexpr.path.parts) { | ||
| 555 | var literal = sexpr.path; | ||
| 556 | // Casting to string here to make false and 0 literal values play nicely with the rest | ||
| 557 | // of the system. | ||
| 558 | sexpr.path = { | ||
| 559 | type: 'PathExpression', | ||
| 560 | data: false, | ||
| 561 | depth: 0, | ||
| 562 | parts: [literal.original + ''], | ||
| 563 | original: literal.original + '', | ||
| 564 | loc: literal.loc | ||
| 565 | }; | ||
| 566 | } | ||
| 567 | } | ||
| 568 | }); | ||
| 569 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2NvbXBpbGVyL2NvbXBpbGVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTUEsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQzs7QUFFaEIsV0FBUyxRQUFRLEdBQUcsRUFBRTs7Ozs7OztBQU83QixVQUFRLENBQUMsU0FBUyxHQUFHO0FBQ25CLFlBQVEsRUFBRSxRQUFROztBQUVsQixVQUFNLEVBQUUsZ0JBQVMsS0FBSyxFQUFFO0FBQ3RCLFVBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO0FBQzlCLFVBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFO0FBQ2hDLGVBQU8sS0FBSyxDQUFDO09BQ2Q7O0FBRUQsV0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUM1QixZQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUN4QixXQUFXLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuQyxZQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssV0FBVyxDQUFDLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNyRixpQkFBTyxLQUFLLENBQUM7U0FDZDtPQUNGOzs7O0FBSUQsU0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO0FBQzNCLFdBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDNUIsWUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FB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aEJELENBQUMsQ0FBQyxJQUFJLE9BbmhCWixPQUFPLENBbWhCYSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxNQUFNLEVBQUU7QUFDckQsV0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDakMsWUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDMUIsaUJBQU8sS0FBSyxDQUFDO1NBQ2Q7T0FDRjtBQUNELGFBQU8sSUFBSSxDQUFDO0tBQ2I7R0FDRjs7QUFFRCxXQUFTLHNCQUFzQixDQUFDLEtBQUssRUFBRTtBQUNyQyxRQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7QUFDckIsVUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQzs7O0FBR3pCLFdBQUssQ0FBQyxJQUFJLEdBQUc7QUFDWCxZQUFJLEVBQUUsZ0JBQWdCO0FBQ3RCLFlBQUksRUFBRSxLQUFLO0FBQ1gsYUFBSyxFQUFFLENBQUM7QUFDUixhQUFLLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztBQUM5QixnQkFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRLEdBQUcsRUFBRTtBQUMvQixXQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUc7T0FDakIsQ0FBQztLQUNIO0dBQ0YiLCJmaWxlIjoiY29tcGlsZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuZXctY2FwICovXG5cbmltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi4vZXhjZXB0aW9uJztcbmltcG9ydCB7aXNBcnJheSwgaW5kZXhPZiwgZXh0ZW5kfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgQVNUIGZyb20gJy4vYXN0JztcblxuY29uc3Qgc2xpY2UgPSBbXS5zbGljZTtcblxuZXhwb3J0IGZ1bmN0aW9uIENvbXBpbGVyKCkge31cblxuLy8gdGhlIGZvdW5kSGVscGVyIHJlZ2lzdGVyIHdpbGwgZGlzYW1iaWd1YXRlIGhlbHBlciBsb29rdXAgZnJvbSBmaW5kaW5nIGFcbi8vIGZ1bmN0aW9uIGluIGEgY29udGV4dC4gVGhpcyBpcyBuZWNlc3NhcnkgZm9yIG11c3RhY2hlIGNvbXBhdGliaWxpdHksIHdoaWNoXG4vLyByZXF1aXJlcyB0aGF0IGNvbnRleHQgZnVuY3Rpb25zIGluIGJsb2NrcyBhcmUgZXZhbHVhdGVkIGJ5IGJsb2NrSGVscGVyTWlzc2luZyxcbi8vIGFuZCB0aGVuIHByb2NlZWQgYXMgaWYgdGhlIHJlc3VsdGluZyB2YWx1ZSB3YXMgcHJvdmlkZWQgdG8gYmxvY2tIZWxwZXJNaXNzaW5nLlxuXG5Db21waWxlci5wcm90b3R5cGUgPSB7XG4gIGNvbXBpbGVyOiBDb21waWxlcixcblxuICBlcXVhbHM6IGZ1bmN0aW9uKG90aGVyKSB7XG4gICAgbGV0IGxlbiA9IHRoaXMub3Bjb2Rlcy5sZW5ndGg7XG4gICAgaWYgKG90aGVyLm9wY29kZXMubGVuZ3RoICE9PSBsZW4pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBsZXQgb3Bjb2RlID0gdGhpcy5vcGNvZGVzW2ldLFxuICAgICAgICAgIG90aGVyT3Bjb2RlID0gb3RoZXIub3Bjb2Rlc1tpXTtcbiAgICAgIGlmIChvcGNvZGUub3Bjb2RlICE9PSBvdGhlck9wY29kZS5vcGNvZGUgfHwgIWFyZ0VxdWFscyhvcGNvZGUuYXJncywgb3RoZXJPcGNvZGUuYXJncykpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFdlIGtub3cgdGhhdCBsZW5ndGggaXMgdGhlIHNhbWUgYmV0d2VlbiB0aGUgdHdvIGFycmF5cyBiZWNhdXNlIHRoZXkgYXJlIGRpcmVjdGx5IHRpZWRcbiAgICAvLyB0byB0aGUgb3Bjb2RlIGJlaGF2aW9yIGFib3ZlLlxuICAgIGxlbiA9IHRoaXMuY2hpbGRyZW4ubGVuZ3RoO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGlmICghdGhpcy5jaGlsZHJlbltpXS5lcXVhbHMob3RoZXIuY2hpbGRyZW5baV0pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSxcblxuICBndWlkOiAwLFxuXG4gIGNvbXBpbGU6IGZ1bmN0aW9uKHByb2dyYW0sIG9wdGlvbnMpIHtcbiAgICB0aGlzLnNvdXJjZU5vZGUgPSBbXTtcbiAgICB0aGlzLm9wY29kZXMgPSBbXTtcbiAgICB0aGlzLmNoaWxkcmVuID0gW107XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB0aGlzLnN0cmluZ1BhcmFtcyA9IG9wdGlvbnMuc3RyaW5nUGFyYW1zO1xuICAgIHRoaXMudHJhY2tJZHMgPSBvcHRpb25zLnRyYWNrSWRzO1xuXG4gICAgb3B0aW9ucy5ibG9ja1BhcmFtcyA9IG9wdGlvbnMuYmxvY2tQYXJhbXMgfHwgW107XG5cbiAgICAvLyBUaGVzZSBjaGFuZ2VzIHdpbGwgcHJvcGFnYXRlIHRvIHRoZSBvdGhlciBjb21waWxlciBjb21wb25lbnRzXG4gICAgbGV0IGtub3duSGVscGVycyA9IG9wdGlvbnMua25vd25IZWxwZXJzO1xuICAgIG9wdGlvbnMua25vd25IZWxwZXJzID0ge1xuICAgICAgJ2hlbHBlck1pc3NpbmcnOiB0cnVlLFxuICAgICAgJ2Jsb2NrSGVscGVyTWlzc2luZyc6IHRydWUsXG4gICAgICAnZWFjaCc6IHRydWUsXG4gICAgICAnaWYnOiB0cnVlLFxuICAgICAgJ3VubGVzcyc6IHRydWUsXG4gICAgICAnd2l0aCc6IHRydWUsXG4gICAgICAnbG9nJzogdHJ1ZSxcbiAgICAgICdsb29rdXAnOiB0cnVlXG4gICAgfTtcbiAgICBpZiAoa25vd25IZWxwZXJzKSB7XG4gICAgICBmb3IgKGxldCBuYW1lIGluIGtub3duSGVscGVycykge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAobmFtZSBpbiBrbm93bkhlbHBlcnMpIHtcbiAgICAgICAgICB0aGlzLm9wdGlvbnMua25vd25IZWxwZXJzW25hbWVdID0ga25vd25IZWxwZXJzW25hbWVdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYWNjZXB0KHByb2dyYW0pO1xuICB9LFxuXG4gIGNvbXBpbGVQcm9ncmFtOiBmdW5jdGlvbihwcm9ncmFtKSB7XG4gICAgbGV0IGNoaWxkQ29tcGlsZXIgPSBuZXcgdGhpcy5jb21waWxlcigpLCAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5ldy1jYXBcbiAgICAgICAgcmVzdWx0ID0gY2hpbGRDb21waWxlci5jb21waWxlKHByb2dyYW0sIHRoaXMub3B0aW9ucyksXG4gICAgICAgIGd1aWQgPSB0aGlzLmd1aWQrKztcblxuICAgIHRoaXMudXNlUGFydGlhbCA9IHRoaXMudXNlUGFydGlhbCB8fCByZXN1bHQudXNlUGFydGlhbDtcblxuICAgIHRoaXMuY2hpbGRyZW5bZ3VpZF0gPSByZXN1bHQ7XG4gICAgdGhpcy51c2VEZXB0aHMgPSB0aGlzLnVzZURlcHRocyB8fCByZXN1bHQudXNlRGVwdGhzO1xuXG4gICAgcmV0dXJuIGd1aWQ7XG4gIH0sXG5cbiAgYWNjZXB0OiBmdW5jdGlvbihub2RlKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IFNhbml0eSBjb2RlICovXG4gICAgaWYgKCF0aGlzW25vZGUudHlwZV0pIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ1Vua25vd24gdHlwZTogJyArIG5vZGUudHlwZSwgbm9kZSk7XG4gICAgfVxuXG4gICAgdGhpcy5zb3VyY2VOb2RlLnVuc2hpZnQobm9kZSk7XG4gICAgbGV0IHJldCA9IHRoaXNbbm9kZS50eXBlXShub2RlKTtcbiAgICB0aGlzLnNvdXJjZU5vZGUuc2hpZnQoKTtcbiAgICByZXR1cm4gcmV0O1xuICB9LFxuXG4gIFByb2dyYW06IGZ1bmN0aW9uKHByb2dyYW0pIHtcbiAgICB0aGlzLm9wdGlvbnMuYmxvY2tQYXJhbXMudW5zaGlmdChwcm9ncmFtLmJsb2NrUGFyYW1zKTtcblxuICAgIGxldCBib2R5ID0gcHJvZ3JhbS5ib2R5LFxuICAgICAgICBib2R5TGVuZ3RoID0gYm9keS5sZW5ndGg7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBib2R5TGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMuYWNjZXB0KGJvZHlbaV0pO1xuICAgIH1cblxuICAgIHRoaXMub3B0aW9ucy5ibG9ja1BhcmFtcy5zaGlmdCgpO1xuXG4gICAgdGhpcy5pc1NpbXBsZSA9IGJvZHlMZW5ndGggPT09IDE7XG4gICAgdGhpcy5ibG9ja1BhcmFtcyA9IHByb2dyYW0uYmxvY2tQYXJhbXMgPyBwcm9ncmFtLmJsb2NrUGFyYW1zLmxlbmd0aCA6IDA7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfSxcblxuICBCbG9ja1N0YXRlbWVudDogZnVuY3Rpb24oYmxvY2spIHtcbiAgICB0cmFuc2Zvcm1MaXRlcmFsVG9QYXRoKGJsb2NrKTtcblxuICAgIGxldCBwcm9ncmFtID0gYmxvY2sucHJvZ3JhbSxcbiAgICAgICAgaW52ZXJzZSA9IGJsb2NrLmludmVyc2U7XG5cbiAgICBwcm9ncmFtID0gcHJvZ3JhbSAmJiB0aGlzLmNvbXBpbGVQcm9ncmFtKHByb2dyYW0pO1xuICAgIGludmVyc2UgPSBpbnZlcnNlICYmIHRoaXMuY29tcGlsZVByb2dyYW0oaW52ZXJzZSk7XG5cbiAgICBsZXQgdHlwZSA9IHRoaXMuY2xhc3NpZnlTZXhwcihibG9jayk7XG5cbiAgICBpZiAodHlwZSA9PT0gJ2hlbHBlcicpIHtcbiAgICAgIHRoaXMuaGVscGVyU2V4cHIoYmxvY2ssIHByb2dyYW0sIGludmVyc2UpO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3NpbXBsZScpIHtcbiAgICAgIHRoaXMuc2ltcGxlU2V4cHIoYmxvY2spO1xuXG4gICAgICAvLyBub3cgdGhhdCB0aGUgc2ltcGxlIG11c3RhY2hlIGlzIHJlc29sdmVkLCB3ZSBuZWVkIHRvXG4gICAgICAvLyBldmFsdWF0ZSBpdCBieSBleGVjdXRpbmcgYGJsb2NrSGVscGVyTWlzc2luZ2BcbiAgICAgIHRoaXMub3Bjb2RlKCdwdXNoUHJvZ3JhbScsIHByb2dyYW0pO1xuICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hQcm9ncmFtJywgaW52ZXJzZSk7XG4gICAgICB0aGlzLm9wY29kZSgnZW1wdHlIYXNoJyk7XG4gICAgICB0aGlzLm9wY29kZSgnYmxvY2tWYWx1ZScsIGJsb2NrLnBhdGgub3JpZ2luYWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFtYmlndW91c1NleHByKGJsb2NrLCBwcm9ncmFtLCBpbnZlcnNlKTtcblxuICAgICAgLy8gbm93IHRoYXQgdGhlIHNpbXBsZSBtdXN0YWNoZSBpcyByZXNvbHZlZCwgd2UgbmVlZCB0b1xuICAgICAgLy8gZXZhbHVhdGUgaXQgYnkgZXhlY3V0aW5nIGBibG9ja0hlbHBlck1pc3NpbmdgXG4gICAgICB0aGlzLm9wY29kZSgncHVzaFByb2dyYW0nLCBwcm9ncmFtKTtcbiAgICAgIHRoaXMub3Bjb2RlKCdwdXNoUHJvZ3JhbScsIGludmVyc2UpO1xuICAgICAgdGhpcy5vcGNvZGUoJ2VtcHR5SGFzaCcpO1xuICAgICAgdGhpcy5vcGNvZGUoJ2FtYmlndW91c0Jsb2NrVmFsdWUnKTtcbiAgICB9XG5cbiAgICB0aGlzLm9wY29kZSgnYXBwZW5kJyk7XG4gIH0sXG5cbiAgRGVjb3JhdG9yQmxvY2soZGVjb3JhdG9yKSB7XG4gICAgbGV0IHByb2dyYW0gPSBkZWNvcmF0b3IucHJvZ3JhbSAmJiB0aGlzLmNvbXBpbGVQcm9ncmFtKGRlY29yYXRvci5wcm9ncmFtKTtcbiAgICBsZXQgcGFyYW1zID0gdGhpcy5zZXR1cEZ1bGxNdXN0YWNoZVBhcmFtcyhkZWNvcmF0b3IsIHByb2dyYW0sIHVuZGVmaW5lZCksXG4gICAgICAgIHBhdGggPSBkZWNvcmF0b3IucGF0aDtcblxuICAgIHRoaXMudXNlRGVjb3JhdG9ycyA9IHRydWU7XG4gICAgdGhpcy5vcGNvZGUoJ3JlZ2lzdGVyRGVjb3JhdG9yJywgcGFyYW1zLmxlbmd0aCwgcGF0aC5vcmlnaW5hbCk7XG4gIH0sXG5cbiAgUGFydGlhbFN0YXRlbWVudDogZnVuY3Rpb24ocGFydGlhbCkge1xuICAgIHRoaXMudXNlUGFydGlhbCA9IHRydWU7XG5cbiAgICBsZXQgcHJvZ3JhbSA9IHBhcnRpYWwucHJvZ3JhbTtcbiAgICBpZiAocHJvZ3JhbSkge1xuICAgICAgcHJvZ3JhbSA9IHRoaXMuY29tcGlsZVByb2dyYW0ocGFydGlhbC5wcm9ncmFtKTtcbiAgICB9XG5cbiAgICBsZXQgcGFyYW1zID0gcGFydGlhbC5wYXJhbXM7XG4gICAgaWYgKHBhcmFtcy5sZW5ndGggPiAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdVbnN1cHBvcnRlZCBudW1iZXIgb2YgcGFydGlhbCBhcmd1bWVudHM6ICcgKyBwYXJhbXMubGVuZ3RoLCBwYXJ0aWFsKTtcbiAgICB9IGVsc2UgaWYgKCFwYXJhbXMubGVuZ3RoKSB7XG4gICAgICBpZiAodGhpcy5vcHRpb25zLmV4cGxpY2l0UGFydGlhbENvbnRleHQpIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hMaXRlcmFsJywgJ3VuZGVmaW5lZCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFyYW1zLnB1c2goe3R5cGU6ICdQYXRoRXhwcmVzc2lvbicsIHBhcnRzOiBbXSwgZGVwdGg6IDB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgcGFydGlhbE5hbWUgPSBwYXJ0aWFsLm5hbWUub3JpZ2luYWwsXG4gICAgICAgIGlzRHluYW1pYyA9IHBhcnRpYWwubmFtZS50eXBlID09PSAnU3ViRXhwcmVzc2lvbic7XG4gICAgaWYgKGlzRHluYW1pYykge1xuICAgICAgdGhpcy5hY2NlcHQocGFydGlhbC5uYW1lKTtcbiAgICB9XG5cbiAgICB0aGlzLnNldHVwRnVsbE11c3RhY2hlUGFyYW1zKHBhcnRpYWwsIHByb2dyYW0sIHVuZGVmaW5lZCwgdHJ1ZSk7XG5cbiAgICBsZXQgaW5kZW50ID0gcGFydGlhbC5pbmRlbnQgfHwgJyc7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5wcmV2ZW50SW5kZW50ICYmIGluZGVudCkge1xuICAgICAgdGhpcy5vcGNvZGUoJ2FwcGVuZENvbnRlbnQnLCBpbmRlbnQpO1xuICAgICAgaW5kZW50ID0gJyc7XG4gICAgfVxuXG4gICAgdGhpcy5vcGNvZGUoJ2ludm9rZVBhcnRpYWwnLCBpc0R5bmFtaWMsIHBhcnRpYWxOYW1lLCBpbmRlbnQpO1xuICAgIHRoaXMub3Bjb2RlKCdhcHBlbmQnKTtcbiAgfSxcbiAgUGFydGlhbEJsb2NrU3RhdGVtZW50OiBmdW5jdGlvbihwYXJ0aWFsQmxvY2spIHtcbiAgICB0aGlzLlBhcnRpYWxTdGF0ZW1lbnQocGFydGlhbEJsb2NrKTtcbiAgfSxcblxuICBNdXN0YWNoZVN0YXRlbWVudDogZnVuY3Rpb24obXVzdGFjaGUpIHtcbiAgICB0aGlzLlN1YkV4cHJlc3Npb24obXVzdGFjaGUpO1xuXG4gICAgaWYgKG11c3RhY2hlLmVzY2FwZWQgJiYgIXRoaXMub3B0aW9ucy5ub0VzY2FwZSkge1xuICAgICAgdGhpcy5vcGNvZGUoJ2FwcGVuZEVzY2FwZWQnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcGNvZGUoJ2FwcGVuZCcpO1xuICAgIH1cbiAgfSxcbiAgRGVjb3JhdG9yKGRlY29yYXRvcikge1xuICAgIHRoaXMuRGVjb3JhdG9yQmxvY2soZGVjb3JhdG9yKTtcbiAgfSxcblxuXG4gIENvbnRlbnRTdGF0ZW1lbnQ6IGZ1bmN0aW9uKGNvbnRlbnQpIHtcbiAgICBpZiAoY29udGVudC52YWx1ZSkge1xuICAgICAgdGhpcy5vcGNvZGUoJ2FwcGVuZENvbnRlbnQnLCBjb250ZW50LnZhbHVlKTtcbiAgICB9XG4gIH0sXG5cbiAgQ29tbWVudFN0YXRlbWVudDogZnVuY3Rpb24oKSB7fSxcblxuICBTdWJFeHByZXNzaW9uOiBmdW5jdGlvbihzZXhwcikge1xuICAgIHRyYW5zZm9ybUxpdGVyYWxUb1BhdGgoc2V4cHIpO1xuICAgIGxldCB0eXBlID0gdGhpcy5jbGFzc2lmeVNleHByKHNleHByKTtcblxuICAgIGlmICh0eXBlID09PSAnc2ltcGxlJykge1xuICAgICAgdGhpcy5zaW1wbGVTZXhwcihzZXhwcik7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnaGVscGVyJykge1xuICAgICAgdGhpcy5oZWxwZXJTZXhwcihzZXhwcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYW1iaWd1b3VzU2V4cHIoc2V4cHIpO1xuICAgIH1cbiAgfSxcbiAgYW1iaWd1b3VzU2V4cHI6IGZ1bmN0aW9uKHNleHByLCBwcm9ncmFtLCBpbnZlcnNlKSB7XG4gICAgbGV0IHBhdGggPSBzZXhwci5wYXRoLFxuICAgICAgICBuYW1lID0gcGF0aC5wYXJ0c1swXSxcbiAgICAgICAgaXNCbG9jayA9IHByb2dyYW0gIT0gbnVsbCB8fCBpbnZlcnNlICE9IG51bGw7XG5cbiAgICB0aGlzLm9wY29kZSgnZ2V0Q29udGV4dCcsIHBhdGguZGVwdGgpO1xuXG4gICAgdGhpcy5vcGNvZGUoJ3B1c2hQcm9ncmFtJywgcHJvZ3JhbSk7XG4gICAgdGhpcy5vcGNvZGUoJ3B1c2hQcm9ncmFtJywgaW52ZXJzZSk7XG5cbiAgICBwYXRoLnN0cmljdCA9IHRydWU7XG4gICAgdGhpcy5hY2NlcHQocGF0aCk7XG5cbiAgICB0aGlzLm9wY29kZSgnaW52b2tlQW1iaWd1b3VzJywgbmFtZSwgaXNCbG9jayk7XG4gIH0sXG5cbiAgc2ltcGxlU2V4cHI6IGZ1bmN0aW9uKHNleHByKSB7XG4gICAgbGV0IHBhdGggPSBzZXhwci5wYXRoO1xuICAgIHBhdGguc3RyaWN0ID0gdHJ1ZTtcbiAgICB0aGlzLmFjY2VwdChwYXRoKTtcbiAgICB0aGlzLm9wY29kZSgncmVzb2x2ZVBvc3NpYmxlTGFtYmRhJyk7XG4gIH0sXG5cbiAgaGVscGVyU2V4cHI6IGZ1bmN0aW9uKHNleHByLCBwcm9ncmFtLCBpbnZlcnNlKSB7XG4gICAgbGV0IHBhcmFtcyA9IHRoaXMuc2V0dXBGdWxsTXVzdGFjaGVQYXJhbXMoc2V4cHIsIHByb2dyYW0sIGludmVyc2UpLFxuICAgICAgICBwYXRoID0gc2V4cHIucGF0aCxcbiAgICAgICAgbmFtZSA9IHBhdGgucGFydHNbMF07XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmtub3duSGVscGVyc1tuYW1lXSkge1xuICAgICAgdGhpcy5vcGNvZGUoJ2ludm9rZUtub3duSGVscGVyJywgcGFyYW1zLmxlbmd0aCwgbmFtZSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLm9wdGlvbnMua25vd25IZWxwZXJzT25seSkge1xuICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignWW91IHNwZWNpZmllZCBrbm93bkhlbHBlcnNPbmx5LCBidXQgdXNlZCB0aGUgdW5rbm93biBoZWxwZXIgJyArIG5hbWUsIHNleHByKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGF0aC5zdHJpY3QgPSB0cnVlO1xuICAgICAgcGF0aC5mYWxzeSA9IHRydWU7XG5cbiAgICAgIHRoaXMuYWNjZXB0KHBhdGgpO1xuICAgICAgdGhpcy5vcGNvZGUoJ2ludm9rZUhlbHBlcicsIHBhcmFtcy5sZW5ndGgsIHBhdGgub3JpZ2luYWwsIEFTVC5oZWxwZXJzLnNpbXBsZUlkKHBhdGgpKTtcbiAgICB9XG4gIH0sXG5cbiAgUGF0aEV4cHJlc3Npb246IGZ1bmN0aW9uKHBhdGgpIHtcbiAgICB0aGlzLmFkZERlcHRoKHBhdGguZGVwdGgpO1xuICAgIHRoaXMub3Bjb2RlKCdnZXRDb250ZXh0JywgcGF0aC5kZXB0aCk7XG5cbiAgICBsZXQgbmFtZSA9IHBhdGgucGFydHNbMF0sXG4gICAgICAgIHNjb3BlZCA9IEFTVC5oZWxwZXJzLnNjb3BlZElkKHBhdGgpLFxuICAgICAgICBibG9ja1BhcmFtSWQgPSAhcGF0aC5kZXB0aCAmJiAhc2NvcGVkICYmIHRoaXMuYmxvY2tQYXJhbUluZGV4KG5hbWUpO1xuXG4gICAgaWYgKGJsb2NrUGFyYW1JZCkge1xuICAgICAgdGhpcy5vcGNvZGUoJ2xvb2t1cEJsb2NrUGFyYW0nLCBibG9ja1BhcmFtSWQsIHBhdGgucGFydHMpO1xuICAgIH0gZWxzZSBpZiAoIW5hbWUpIHtcbiAgICAgIC8vIENvbnRleHQgcmVmZXJlbmNlLCBpLmUuIGB7e2ZvbyAufX1gIG9yIGB7e2ZvbyAuLn19YFxuICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hDb250ZXh0Jyk7XG4gICAgfSBlbHNlIGlmIChwYXRoLmRhdGEpIHtcbiAgICAgIHRoaXMub3B0aW9ucy5kYXRhID0gdHJ1ZTtcbiAgICAgIHRoaXMub3Bjb2RlKCdsb29rdXBEYXRhJywgcGF0aC5kZXB0aCwgcGF0aC5wYXJ0cywgcGF0aC5zdHJpY3QpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wY29kZSgnbG9va3VwT25Db250ZXh0JywgcGF0aC5wYXJ0cywgcGF0aC5mYWxzeSwgcGF0aC5zdHJpY3QsIHNjb3BlZCk7XG4gICAgfVxuICB9LFxuXG4gIFN0cmluZ0xpdGVyYWw6IGZ1bmN0aW9uKHN0cmluZykge1xuICAgIHRoaXMub3Bjb2RlKCdwdXNoU3RyaW5nJywgc3RyaW5nLnZhbHVlKTtcbiAgfSxcblxuICBOdW1iZXJMaXRlcmFsOiBmdW5jdGlvbihudW1iZXIpIHtcbiAgICB0aGlzLm9wY29kZSgncHVzaExpdGVyYWwnLCBudW1iZXIudmFsdWUpO1xuICB9LFxuXG4gIEJvb2xlYW5MaXRlcmFsOiBmdW5jdGlvbihib29sKSB7XG4gICAgdGhpcy5vcGNvZGUoJ3B1c2hMaXRlcmFsJywgYm9vbC52YWx1ZSk7XG4gIH0sXG5cbiAgVW5kZWZpbmVkTGl0ZXJhbDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5vcGNvZGUoJ3B1c2hMaXRlcmFsJywgJ3VuZGVmaW5lZCcpO1xuICB9LFxuXG4gIE51bGxMaXRlcmFsOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLm9wY29kZSgncHVzaExpdGVyYWwnLCAnbnVsbCcpO1xuICB9LFxuXG4gIEhhc2g6IGZ1bmN0aW9uKGhhc2gpIHtcbiAgICBsZXQgcGFpcnMgPSBoYXNoLnBhaXJzLFxuICAgICAgICBpID0gMCxcbiAgICAgICAgbCA9IHBhaXJzLmxlbmd0aDtcblxuICAgIHRoaXMub3Bjb2RlKCdwdXNoSGFzaCcpO1xuXG4gICAgZm9yICg7IGkgPCBsOyBpKyspIHtcbiAgICAgIHRoaXMucHVzaFBhcmFtKHBhaXJzW2ldLnZhbHVlKTtcbiAgICB9XG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgdGhpcy5vcGNvZGUoJ2Fzc2lnblRvSGFzaCcsIHBhaXJzW2ldLmtleSk7XG4gICAgfVxuICAgIHRoaXMub3Bjb2RlKCdwb3BIYXNoJyk7XG4gIH0sXG5cbiAgLy8gSEVMUEVSU1xuICBvcGNvZGU6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICB0aGlzLm9wY29kZXMucHVzaCh7IG9wY29kZTogbmFtZSwgYXJnczogc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpLCBsb2M6IHRoaXMuc291cmNlTm9kZVswXS5sb2MgfSk7XG4gIH0sXG5cbiAgYWRkRGVwdGg6IGZ1bmN0aW9uKGRlcHRoKSB7XG4gICAgaWYgKCFkZXB0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudXNlRGVwdGhzID0gdHJ1ZTtcbiAgfSxcblxuICBjbGFzc2lmeVNleHByOiBmdW5jdGlvbihzZXhwcikge1xuICAgIGxldCBpc1NpbXBsZSA9IEFTVC5oZWxwZXJzLnNpbXBsZUlkKHNleHByLnBhdGgpO1xuXG4gICAgbGV0IGlzQmxvY2tQYXJhbSA9IGlzU2ltcGxlICYmICEhdGhpcy5ibG9ja1BhcmFtSW5kZXgoc2V4cHIucGF0aC5wYXJ0c1swXSk7XG5cbiAgICAvLyBhIG11c3RhY2hlIGlzIGFuIGVsaWdpYmxlIGhlbHBlciBpZjpcbiAgICAvLyAqIGl0cyBpZCBpcyBzaW1wbGUgKGEgc2luZ2xlIHBhcnQsIG5vdCBgdGhpc2Agb3IgYC4uYClcbiAgICBsZXQgaXNIZWxwZXIgPSAhaXNCbG9ja1BhcmFtICYmIEFTVC5oZWxwZXJzLmhlbHBlckV4cHJlc3Npb24oc2V4cHIpO1xuXG4gICAgLy8gaWYgYSBtdXN0YWNoZSBpcyBhbiBlbGlnaWJsZSBoZWxwZXIgYnV0IG5vdCBhIGRlZmluaXRlXG4gICAgLy8gaGVscGVyLCBpdCBpcyBhbWJpZ3VvdXMsIGFuZCB3aWxsIGJlIHJlc29sdmVkIGluIGEgbGF0ZXJcbiAgICAvLyBwYXNzIG9yIGF0IHJ1bnRpbWUuXG4gICAgbGV0IGlzRWxpZ2libGUgPSAhaXNCbG9ja1BhcmFtICYmIChpc0hlbHBlciB8fCBpc1NpbXBsZSk7XG5cbiAgICAvLyBpZiBhbWJpZ3VvdXMsIHdlIGNhbiBwb3NzaWJseSByZXNvbHZlIHRoZSBhbWJpZ3VpdHkgbm93XG4gICAgLy8gQW4gZWxpZ2libGUgaGVscGVyIGlzIG9uZSB0aGF0IGRvZXMgbm90IGhhdmUgYSBjb21wbGV4IHBhdGgsIGkuZS4gYHRoaXMuZm9vYCwgYC4uL2Zvb2AgZXRjLlxuICAgIGlmIChpc0VsaWdpYmxlICYmICFpc0hlbHBlcikge1xuICAgICAgbGV0IG5hbWUgPSBzZXhwci5wYXRoLnBhcnRzWzBdLFxuICAgICAgICAgIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG5cbiAgICAgIGlmIChvcHRpb25zLmtub3duSGVscGVyc1tuYW1lXSkge1xuICAgICAgICBpc0hlbHBlciA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKG9wdGlvbnMua25vd25IZWxwZXJzT25seSkge1xuICAgICAgICBpc0VsaWdpYmxlID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGlzSGVscGVyKSB7XG4gICAgICByZXR1cm4gJ2hlbHBlcic7XG4gICAgfSBlbHNlIGlmIChpc0VsaWdpYmxlKSB7XG4gICAgICByZXR1cm4gJ2FtYmlndW91cyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnc2ltcGxlJztcbiAgICB9XG4gIH0sXG5cbiAgcHVzaFBhcmFtczogZnVuY3Rpb24ocGFyYW1zKSB7XG4gICAgZm9yIChsZXQgaSA9IDAsIGwgPSBwYXJhbXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICB0aGlzLnB1c2hQYXJhbShwYXJhbXNbaV0pO1xuICAgIH1cbiAgfSxcblxuICBwdXNoUGFyYW06IGZ1bmN0aW9uKHZhbCkge1xuICAgIGxldCB2YWx1ZSA9IHZhbC52YWx1ZSAhPSBudWxsID8gdmFsLnZhbHVlIDogdmFsLm9yaWdpbmFsIHx8ICcnO1xuXG4gICAgaWYgKHRoaXMuc3RyaW5nUGFyYW1zKSB7XG4gICAgICBpZiAodmFsdWUucmVwbGFjZSkge1xuICAgICAgICB2YWx1ZSA9IHZhbHVlXG4gICAgICAgICAgICAucmVwbGFjZSgvXihcXC4/XFwuXFwvKSovZywgJycpXG4gICAgICAgICAgICAucmVwbGFjZSgvXFwvL2csICcuJyk7XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWwuZGVwdGgpIHtcbiAgICAgICAgdGhpcy5hZGREZXB0aCh2YWwuZGVwdGgpO1xuICAgICAgfVxuICAgICAgdGhpcy5vcGNvZGUoJ2dldENvbnRleHQnLCB2YWwuZGVwdGggfHwgMCk7XG4gICAgICB0aGlzLm9wY29kZSgncHVzaFN0cmluZ1BhcmFtJywgdmFsdWUsIHZhbC50eXBlKTtcblxuICAgICAgaWYgKHZhbC50eXBlID09PSAnU3ViRXhwcmVzc2lvbicpIHtcbiAgICAgICAgLy8gU3ViRXhwcmVzc2lvbnMgZ2V0IGV2YWx1YXRlZCBhbmQgcGFzc2VkIGluXG4gICAgICAgIC8vIGluIHN0cmluZyBwYXJhbXMgbW9kZS5cbiAgICAgICAgdGhpcy5hY2NlcHQodmFsKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMudHJhY2tJZHMpIHtcbiAgICAgICAgbGV0IGJsb2NrUGFyYW1JbmRleDtcbiAgICAgICAgaWYgKHZhbC5wYXJ0cyAmJiAhQVNULmhlbHBlcnMuc2NvcGVkSWQodmFsKSAmJiAhdmFsLmRlcHRoKSB7XG4gICAgICAgICAgIGJsb2NrUGFyYW1JbmRleCA9IHRoaXMuYmxvY2tQYXJhbUluZGV4KHZhbC5wYXJ0c1swXSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGJsb2NrUGFyYW1JbmRleCkge1xuICAgICAgICAgIGxldCBibG9ja1BhcmFtQ2hpbGQgPSB2YWwucGFydHMuc2xpY2UoMSkuam9pbignLicpO1xuICAgICAgICAgIHRoaXMub3Bjb2RlKCdwdXNoSWQnLCAnQmxvY2tQYXJhbScsIGJsb2NrUGFyYW1JbmRleCwgYmxvY2tQYXJhbUNoaWxkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YWx1ZSA9IHZhbC5vcmlnaW5hbCB8fCB2YWx1ZTtcbiAgICAgICAgICBpZiAodmFsdWUucmVwbGFjZSkge1xuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9edGhpcyg/OlxcLnwkKS8sICcnKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9eXFwuXFwvLywgJycpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL15cXC4kLywgJycpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMub3Bjb2RlKCdwdXNoSWQnLCB2YWwudHlwZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLmFjY2VwdCh2YWwpO1xuICAgIH1cbiAgfSxcblxuICBzZXR1cEZ1bGxNdXN0YWNoZVBhcmFtczogZnVuY3Rpb24oc2V4cHIsIHByb2dyYW0sIGludmVyc2UsIG9taXRFbXB0eSkge1xuICAgIGxldCBwYXJhbXMgPSBzZXhwci5wYXJhbXM7XG4gICAgdGhpcy5wdXNoUGFyYW1zKHBhcmFtcyk7XG5cbiAgICB0aGlzLm9wY29kZSgncHVzaFByb2dyYW0nLCBwcm9ncmFtKTtcbiAgICB0aGlzLm9wY29kZSgncHVzaFByb2dyYW0nLCBpbnZlcnNlKTtcblxuICAgIGlmIChzZXhwci5oYXNoKSB7XG4gICAgICB0aGlzLmFjY2VwdChzZXhwci5oYXNoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcGNvZGUoJ2VtcHR5SGFzaCcsIG9taXRFbXB0eSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfSxcblxuICBibG9ja1BhcmFtSW5kZXg6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICBmb3IgKGxldCBkZXB0aCA9IDAsIGxlbiA9IHRoaXMub3B0aW9ucy5ibG9ja1BhcmFtcy5sZW5ndGg7IGRlcHRoIDwgbGVuOyBkZXB0aCsrKSB7XG4gICAgICBsZXQgYmxvY2tQYXJhbXMgPSB0aGlzLm9wdGlvbnMuYmxvY2tQYXJhbXNbZGVwdGhdLFxuICAgICAgICAgIHBhcmFtID0gYmxvY2tQYXJhbXMgJiYgaW5kZXhPZihibG9ja1BhcmFtcywgbmFtZSk7XG4gICAgICBpZiAoYmxvY2tQYXJhbXMgJiYgcGFyYW0gPj0gMCkge1xuICAgICAgICByZXR1cm4gW2RlcHRoLCBwYXJhbV07XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gcHJlY29tcGlsZShpbnB1dCwgb3B0aW9ucywgZW52KSB7XG4gIGlmIChpbnB1dCA9PSBudWxsIHx8ICh0eXBlb2YgaW5wdXQgIT09ICdzdHJpbmcnICYmIGlucHV0LnR5cGUgIT09ICdQcm9ncmFtJykpIHtcbiAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdZb3UgbXVzdCBwYXNzIGEgc3RyaW5nIG9yIEhhbmRsZWJhcnMgQVNUIHRvIEhhbmRsZWJhcnMucHJlY29tcGlsZS4gWW91IHBhc3NlZCAnICsgaW5wdXQpO1xuICB9XG5cbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gIGlmICghKCdkYXRhJyBpbiBvcHRpb25zKSkge1xuICAgIG9wdGlvbnMuZGF0YSA9IHRydWU7XG4gIH1cbiAgaWYgKG9wdGlvbnMuY29tcGF0KSB7XG4gICAgb3B0aW9ucy51c2VEZXB0aHMgPSB0cnVlO1xuICB9XG5cbiAgbGV0IGFzdCA9IGVudi5wYXJzZShpbnB1dCwgb3B0aW9ucyksXG4gICAgICBlbnZpcm9ubWVudCA9IG5ldyBlbnYuQ29tcGlsZXIoKS5jb21waWxlKGFzdCwgb3B0aW9ucyk7XG4gIHJldHVybiBuZXcgZW52LkphdmFTY3JpcHRDb21waWxlcigpLmNvbXBpbGUoZW52aXJvbm1lbnQsIG9wdGlvbnMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcGlsZShpbnB1dCwgb3B0aW9ucyA9IHt9LCBlbnYpIHtcbiAgaWYgKGlucHV0ID09IG51bGwgfHwgKHR5cGVvZiBpbnB1dCAhPT0gJ3N0cmluZycgJiYgaW5wdXQudHlwZSAhPT0gJ1Byb2dyYW0nKSkge1xuICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ1lvdSBtdXN0IHBhc3MgYSBzdHJpbmcgb3IgSGFuZGxlYmFycyBBU1QgdG8gSGFuZGxlYmFycy5jb21waWxlLiBZb3UgcGFzc2VkICcgKyBpbnB1dCk7XG4gIH1cblxuICBvcHRpb25zID0gZXh0ZW5kKHt9LCBvcHRpb25zKTtcbiAgaWYgKCEoJ2RhdGEnIGluIG9wdGlvbnMpKSB7XG4gICAgb3B0aW9ucy5kYXRhID0gdHJ1ZTtcbiAgfVxuICBpZiAob3B0aW9ucy5jb21wYXQpIHtcbiAgICBvcHRpb25zLnVzZURlcHRocyA9IHRydWU7XG4gIH1cblxuICBsZXQgY29tcGlsZWQ7XG5cbiAgZnVuY3Rpb24gY29tcGlsZUlucHV0KCkge1xuICAgIGxldCBhc3QgPSBlbnYucGFyc2UoaW5wdXQsIG9wdGlvbnMpLFxuICAgICAgICBlbnZpcm9ubWVudCA9IG5ldyBlbnYuQ29tcGlsZXIoKS5jb21waWxlKGFzdCwgb3B0aW9ucyksXG4gICAgICAgIHRlbXBsYXRlU3BlYyA9IG5ldyBlbnYuSmF2YVNjcmlwdENvbXBpbGVyKCkuY29tcGlsZShlbnZpcm9ubWVudCwgb3B0aW9ucywgdW5kZWZpbmVkLCB0cnVlKTtcbiAgICByZXR1cm4gZW52LnRlbXBsYXRlKHRlbXBsYXRlU3BlYyk7XG4gIH1cblxuICAvLyBUZW1wbGF0ZSBpcyBvbmx5IGNvbXBpbGVkIG9uIGZpcnN0IHVzZSBhbmQgY2FjaGVkIGFmdGVyIHRoYXQgcG9pbnQuXG4gIGZ1bmN0aW9uIHJldChjb250ZXh0LCBleGVjT3B0aW9ucykge1xuICAgIGlmICghY29tcGlsZWQpIHtcbiAgICAgIGNvbXBpbGVkID0gY29tcGlsZUlucHV0KCk7XG4gICAgfVxuICAgIHJldHVybiBjb21waWxlZC5jYWxsKHRoaXMsIGNvbnRleHQsIGV4ZWNPcHRpb25zKTtcbiAgfVxuICByZXQuX3NldHVwID0gZnVuY3Rpb24oc2V0dXBPcHRpb25zKSB7XG4gICAgaWYgKCFjb21waWxlZCkge1xuICAgICAgY29tcGlsZWQgPSBjb21waWxlSW5wdXQoKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbXBpbGVkLl9zZXR1cChzZXR1cE9wdGlvbnMpO1xuICB9O1xuICByZXQuX2NoaWxkID0gZnVuY3Rpb24oaSwgZGF0YSwgYmxvY2tQYXJhbXMsIGRlcHRocykge1xuICAgIGlmICghY29tcGlsZWQpIHtcbiAgICAgIGNvbXBpbGVkID0gY29tcGlsZUlucHV0KCk7XG4gICAgfVxuICAgIHJldHVybiBjb21waWxlZC5fY2hpbGQoaSwgZGF0YSwgYmxvY2tQYXJhbXMsIGRlcHRocyk7XG4gIH07XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIGFyZ0VxdWFscyhhLCBiKSB7XG4gIGlmIChhID09PSBiKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAoaXNBcnJheShhKSAmJiBpc0FycmF5KGIpICYmIGEubGVuZ3RoID09PSBiLmxlbmd0aCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKCFhcmdFcXVhbHMoYVtpXSwgYltpXSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1MaXRlcmFsVG9QYXRoKHNleHByKSB7XG4gIGlmICghc2V4cHIucGF0aC5wYXJ0cykge1xuICAgIGxldCBsaXRlcmFsID0gc2V4cHIucGF0aDtcbiAgICAvLyBDYXN0aW5nIHRvIHN0cmluZyBoZXJlIHRvIG1ha2UgZmFsc2UgYW5kIDAgbGl0ZXJhbCB2YWx1ZXMgcGxheSBuaWNlbHkgd2l0aCB0aGUgcmVzdFxuICAgIC8vIG9mIHRoZSBzeXN0ZW0uXG4gICAgc2V4cHIucGF0aCA9IHtcbiAgICAgIHR5cGU6ICdQYXRoRXhwcmVzc2lvbicsXG4gICAgICBkYXRhOiBmYWxzZSxcbiAgICAgIGRlcHRoOiAwLFxuICAgICAgcGFydHM6IFtsaXRlcmFsLm9yaWdpbmFsICsgJyddLFxuICAgICAgb3JpZ2luYWw6IGxpdGVyYWwub3JpZ2luYWwgKyAnJyxcbiAgICAgIGxvYzogbGl0ZXJhbC5sb2NcbiAgICB9O1xuICB9XG59XG4iXX0= |
| 1 | define(['exports', '../exception'], function (exports, _exception) { | ||
| 2 | 'use strict'; | ||
| 3 | |||
| 4 | exports.__esModule = true; | ||
| 5 | exports.SourceLocation = SourceLocation; | ||
| 6 | exports.id = id; | ||
| 7 | exports.stripFlags = stripFlags; | ||
| 8 | exports.stripComment = stripComment; | ||
| 9 | exports.preparePath = preparePath; | ||
| 10 | exports.prepareMustache = prepareMustache; | ||
| 11 | exports.prepareRawBlock = prepareRawBlock; | ||
| 12 | exports.prepareBlock = prepareBlock; | ||
| 13 | exports.prepareProgram = prepareProgram; | ||
| 14 | exports.preparePartialBlock = preparePartialBlock; | ||
| 15 | // istanbul ignore next | ||
| 16 | |||
| 17 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } | ||
| 18 | |||
| 19 | var _Exception = _interopRequireDefault(_exception); | ||
| 20 | |||
| 21 | function validateClose(open, close) { | ||
| 22 | close = close.path ? close.path.original : close; | ||
| 23 | |||
| 24 | if (open.path.original !== close) { | ||
| 25 | var errorNode = { loc: open.path.loc }; | ||
| 26 | |||
| 27 | throw new _Exception['default'](open.path.original + " doesn't match " + close, errorNode); | ||
| 28 | } | ||
| 29 | } | ||
| 30 | |||
| 31 | function SourceLocation(source, locInfo) { | ||
| 32 | this.source = source; | ||
| 33 | this.start = { | ||
| 34 | line: locInfo.first_line, | ||
| 35 | column: locInfo.first_column | ||
| 36 | }; | ||
| 37 | this.end = { | ||
| 38 | line: locInfo.last_line, | ||
| 39 | column: locInfo.last_column | ||
| 40 | }; | ||
| 41 | } | ||
| 42 | |||
| 43 | function id(token) { | ||
| 44 | if (/^\[.*\]$/.test(token)) { | ||
| 45 | return token.substr(1, token.length - 2); | ||
| 46 | } else { | ||
| 47 | return token; | ||
| 48 | } | ||
| 49 | } | ||
| 50 | |||
| 51 | function stripFlags(open, close) { | ||
| 52 | return { | ||
| 53 | open: open.charAt(2) === '~', | ||
| 54 | close: close.charAt(close.length - 3) === '~' | ||
| 55 | }; | ||
| 56 | } | ||
| 57 | |||
| 58 | function stripComment(comment) { | ||
| 59 | return comment.replace(/^\{\{~?\!-?-?/, '').replace(/-?-?~?\}\}$/, ''); | ||
| 60 | } | ||
| 61 | |||
| 62 | function preparePath(data, parts, loc) { | ||
| 63 | loc = this.locInfo(loc); | ||
| 64 | |||
| 65 | var original = data ? '@' : '', | ||
| 66 | dig = [], | ||
| 67 | depth = 0, | ||
| 68 | depthString = ''; | ||
| 69 | |||
| 70 | for (var i = 0, l = parts.length; i < l; i++) { | ||
| 71 | var part = parts[i].part, | ||
| 72 | |||
| 73 | // If we have [] syntax then we do not treat path references as operators, | ||
| 74 | // i.e. foo.[this] resolves to approximately context.foo['this'] | ||
| 75 | isLiteral = parts[i].original !== part; | ||
| 76 | original += (parts[i].separator || '') + part; | ||
| 77 | |||
| 78 | if (!isLiteral && (part === '..' || part === '.' || part === 'this')) { | ||
| 79 | if (dig.length > 0) { | ||
| 80 | throw new _Exception['default']('Invalid path: ' + original, { loc: loc }); | ||
| 81 | } else if (part === '..') { | ||
| 82 | depth++; | ||
| 83 | depthString += '../'; | ||
| 84 | } | ||
| 85 | } else { | ||
| 86 | dig.push(part); | ||
| 87 | } | ||
| 88 | } | ||
| 89 | |||
| 90 | return { | ||
| 91 | type: 'PathExpression', | ||
| 92 | data: data, | ||
| 93 | depth: depth, | ||
| 94 | parts: dig, | ||
| 95 | original: original, | ||
| 96 | loc: loc | ||
| 97 | }; | ||
| 98 | } | ||
| 99 | |||
| 100 | function prepareMustache(path, params, hash, open, strip, locInfo) { | ||
| 101 | // Must use charAt to support IE pre-10 | ||
| 102 | var escapeFlag = open.charAt(3) || open.charAt(2), | ||
| 103 | escaped = escapeFlag !== '{' && escapeFlag !== '&'; | ||
| 104 | |||
| 105 | var decorator = /\*/.test(open); | ||
| 106 | return { | ||
| 107 | type: decorator ? 'Decorator' : 'MustacheStatement', | ||
| 108 | path: path, | ||
| 109 | params: params, | ||
| 110 | hash: hash, | ||
| 111 | escaped: escaped, | ||
| 112 | strip: strip, | ||
| 113 | loc: this.locInfo(locInfo) | ||
| 114 | }; | ||
| 115 | } | ||
| 116 | |||
| 117 | function prepareRawBlock(openRawBlock, contents, close, locInfo) { | ||
| 118 | validateClose(openRawBlock, close); | ||
| 119 | |||
| 120 | locInfo = this.locInfo(locInfo); | ||
| 121 | var program = { | ||
| 122 | type: 'Program', | ||
| 123 | body: contents, | ||
| 124 | strip: {}, | ||
| 125 | loc: locInfo | ||
| 126 | }; | ||
| 127 | |||
| 128 | return { | ||
| 129 | type: 'BlockStatement', | ||
| 130 | path: openRawBlock.path, | ||
| 131 | params: openRawBlock.params, | ||
| 132 | hash: openRawBlock.hash, | ||
| 133 | program: program, | ||
| 134 | openStrip: {}, | ||
| 135 | inverseStrip: {}, | ||
| 136 | closeStrip: {}, | ||
| 137 | loc: locInfo | ||
| 138 | }; | ||
| 139 | } | ||
| 140 | |||
| 141 | function prepareBlock(openBlock, program, inverseAndProgram, close, inverted, locInfo) { | ||
| 142 | if (close && close.path) { | ||
| 143 | validateClose(openBlock, close); | ||
| 144 | } | ||
| 145 | |||
| 146 | var decorator = /\*/.test(openBlock.open); | ||
| 147 | |||
| 148 | program.blockParams = openBlock.blockParams; | ||
| 149 | |||
| 150 | var inverse = undefined, | ||
| 151 | inverseStrip = undefined; | ||
| 152 | |||
| 153 | if (inverseAndProgram) { | ||
| 154 | if (decorator) { | ||
| 155 | throw new _Exception['default']('Unexpected inverse block on decorator', inverseAndProgram); | ||
| 156 | } | ||
| 157 | |||
| 158 | if (inverseAndProgram.chain) { | ||
| 159 | inverseAndProgram.program.body[0].closeStrip = close.strip; | ||
| 160 | } | ||
| 161 | |||
| 162 | inverseStrip = inverseAndProgram.strip; | ||
| 163 | inverse = inverseAndProgram.program; | ||
| 164 | } | ||
| 165 | |||
| 166 | if (inverted) { | ||
| 167 | inverted = inverse; | ||
| 168 | inverse = program; | ||
| 169 | program = inverted; | ||
| 170 | } | ||
| 171 | |||
| 172 | return { | ||
| 173 | type: decorator ? 'DecoratorBlock' : 'BlockStatement', | ||
| 174 | path: openBlock.path, | ||
| 175 | params: openBlock.params, | ||
| 176 | hash: openBlock.hash, | ||
| 177 | program: program, | ||
| 178 | inverse: inverse, | ||
| 179 | openStrip: openBlock.strip, | ||
| 180 | inverseStrip: inverseStrip, | ||
| 181 | closeStrip: close && close.strip, | ||
| 182 | loc: this.locInfo(locInfo) | ||
| 183 | }; | ||
| 184 | } | ||
| 185 | |||
| 186 | function prepareProgram(statements, loc) { | ||
| 187 | if (!loc && statements.length) { | ||
| 188 | var firstLoc = statements[0].loc, | ||
| 189 | lastLoc = statements[statements.length - 1].loc; | ||
| 190 | |||
| 191 | /* istanbul ignore else */ | ||
| 192 | if (firstLoc && lastLoc) { | ||
| 193 | loc = { | ||
| 194 | source: firstLoc.source, | ||
| 195 | start: { | ||
| 196 | line: firstLoc.start.line, | ||
| 197 | column: firstLoc.start.column | ||
| 198 | }, | ||
| 199 | end: { | ||
| 200 | line: lastLoc.end.line, | ||
| 201 | column: lastLoc.end.column | ||
| 202 | } | ||
| 203 | }; | ||
| 204 | } | ||
| 205 | } | ||
| 206 | |||
| 207 | return { | ||
| 208 | type: 'Program', | ||
| 209 | body: statements, | ||
| 210 | strip: {}, | ||
| 211 | loc: loc | ||
| 212 | }; | ||
| 213 | } | ||
| 214 | |||
| 215 | function preparePartialBlock(open, program, close, locInfo) { | ||
| 216 | validateClose(open, close); | ||
| 217 | |||
| 218 | return { | ||
| 219 | type: 'PartialBlockStatement', | ||
| 220 | name: open.path, | ||
| 221 | params: open.params, | ||
| 222 | hash: open.hash, | ||
| 223 | program: program, | ||
| 224 | openStrip: open.strip, | ||
| 225 | closeStrip: close && close.strip, | ||
| 226 | loc: this.locInfo(locInfo) | ||
| 227 | }; | ||
| 228 | } | ||
| 229 | }); | ||
| 230 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2NvbXBpbGVyL2hlbHBlcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxXQUFTLGFBQWEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFO0FBQ2xDLFNBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQzs7QUFFakQsUUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxLQUFLLEVBQUU7QUFDaEMsVUFBSSxTQUFTLEdBQUcsRUFBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUMsQ0FBQzs7QUFFckMsWUFBTSwwQkFBYyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxpQkFBaUIsR0FBRyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7S0FDaEY7R0FDRjs7QUFFTSxXQUFTLGNBQWMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFO0FBQzlDLFFBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0FBQ3JCLFFBQUksQ0FBQyxLQUFLLEdBQUc7QUFDWCxVQUFJLEVBQUUsT0FBTyxDQUFDLFVBQVU7QUFDeEIsWUFBTSxFQUFFLE9BQU8sQ0FBQyxZQUFZO0tBQzdCLENBQUM7QUFDRixRQUFJLENBQUMsR0FBRyxHQUFHO0FBQ1QsVUFBSSxFQUFFLE9BQU8sQ0FBQyxTQUFTO0FBQ3ZCLFlBQU0sRUFBRSxPQUFPLENBQUMsV0FBVztLQUM1QixDQUFDO0dBQ0g7O0FBRU0sV0FBUyxFQUFFLENBQUMsS0FBSyxFQUFFO0FBQ3hCLFFBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUMxQixhQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7S0FDMUMsTUFBTTtBQUNMLGFB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InNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi4vZXhjZXB0aW9uJztcblxuZnVuY3Rpb24gdmFsaWRhdGVDbG9zZShvcGVuLCBjbG9zZSkge1xuICBjbG9zZSA9IGNsb3NlLnBhdGggPyBjbG9zZS5wYXRoLm9yaWdpbmFsIDogY2xvc2U7XG5cbiAgaWYgKG9wZW4ucGF0aC5vcmlnaW5hbCAhPT0gY2xvc2UpIHtcbiAgICBsZXQgZXJyb3JOb2RlID0ge2xvYzogb3Blbi5wYXRoLmxvY307XG5cbiAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKG9wZW4ucGF0aC5vcmlnaW5hbCArIFwiIGRvZXNuJ3QgbWF0Y2ggXCIgKyBjbG9zZSwgZXJyb3JOb2RlKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gU291cmNlTG9jYXRpb24oc291cmNlLCBsb2NJbmZvKSB7XG4gIHRoaXMuc291cmNlID0gc291cmNlO1xuICB0aGlzLnN0YXJ0ID0ge1xuICAgIGxpbmU6IGxvY0luZm8uZmlyc3RfbGluZSxcbiAgICBjb2x1bW46IGxvY0luZm8uZmlyc3RfY29sdW1uXG4gIH07XG4gIHRoaXMuZW5kID0ge1xuICAgIGxpbmU6IGxvY0luZm8ubGFzdF9saW5lLFxuICAgIGNvbHVtbjogbG9jSW5mby5sYXN0X2NvbHVtblxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaWQodG9rZW4pIHtcbiAgaWYgKC9eXFxbLipcXF0kLy50ZXN0KHRva2VuKSkge1xuICAgIHJldHVybiB0b2tlbi5zdWJzdHIoMSwgdG9rZW4ubGVuZ3RoIC0gMik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHRva2VuO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpcEZsYWdzKG9wZW4sIGNsb3NlKSB7XG4gIHJldHVybiB7XG4gICAgb3Blbjogb3Blbi5jaGFyQXQoMikgPT09ICd+JyxcbiAgICBjbG9zZTogY2xvc2UuY2hhckF0KGNsb3NlLmxlbmd0aCAtIDMpID09PSAnfidcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmlwQ29tbWVudChjb21tZW50KSB7XG4gIHJldHVybiBjb21tZW50LnJlcGxhY2UoL15cXHtcXHt+P1xcIS0/LT8vLCAnJylcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvLT8tP34/XFx9XFx9JC8sICcnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmVQYXRoKGRhdGEsIHBhcnRzLCBsb2MpIHtcbiAgbG9jID0gdGhpcy5sb2NJbmZvKGxvYyk7XG5cbiAgbGV0IG9yaWdpbmFsID0gZGF0YSA/ICdAJyA6ICcnLFxuICAgICAgZGlnID0gW10sXG4gICAgICBkZXB0aCA9IDAsXG4gICAgICBkZXB0aFN0cmluZyA9ICcnO1xuXG4gIGZvciAobGV0IGkgPSAwLCBsID0gcGFydHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgbGV0IHBhcnQgPSBwYXJ0c1tpXS5wYXJ0LFxuICAgICAgICAvLyBJZiB3ZSBoYXZlIFtdIHN5bnRheCB0aGVuIHdlIGRvIG5vdCB0cmVhdCBwYXRoIHJlZmVyZW5jZXMgYXMgb3BlcmF0b3JzLFxuICAgICAgICAvLyBpLmUuIGZvby5bdGhpc10gcmVzb2x2ZXMgdG8gYXBwcm94aW1hdGVseSBjb250ZXh0LmZvb1sndGhpcyddXG4gICAgICAgIGlzTGl0ZXJhbCA9IHBhcnRzW2ldLm9yaWdpbmFsICE9PSBwYXJ0O1xuICAgIG9yaWdpbmFsICs9IChwYXJ0c1tpXS5zZXBhcmF0b3IgfHwgJycpICsgcGFydDtcblxuICAgIGlmICghaXNMaXRlcmFsICYmIChwYXJ0ID09PSAnLi4nIHx8IHBhcnQgPT09ICcuJyB8fCBwYXJ0ID09PSAndGhpcycpKSB7XG4gICAgICBpZiAoZGlnLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignSW52YWxpZCBwYXRoOiAnICsgb3JpZ2luYWwsIHtsb2N9KTtcbiAgICAgIH0gZWxzZSBpZiAocGFydCA9PT0gJy4uJykge1xuICAgICAgICBkZXB0aCsrO1xuICAgICAgICBkZXB0aFN0cmluZyArPSAnLi4vJztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZGlnLnB1c2gocGFydCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnUGF0aEV4cHJlc3Npb24nLFxuICAgIGRhdGEsXG4gICAgZGVwdGgsXG4gICAgcGFydHM6IGRpZyxcbiAgICBvcmlnaW5hbCxcbiAgICBsb2NcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmVNdXN0YWNoZShwYXRoLCBwYXJhbXMsIGhhc2gsIG9wZW4sIHN0cmlwLCBsb2NJbmZvKSB7XG4gIC8vIE11c3QgdXNlIGNoYXJBdCB0byBzdXBwb3J0IElFIHByZS0xMFxuICBsZXQgZXNjYXBlRmxhZyA9IG9wZW4uY2hhckF0KDMpIHx8IG9wZW4uY2hhckF0KDIpLFxuICAgICAgZXNjYXBlZCA9IGVzY2FwZUZsYWcgIT09ICd7JyAmJiBlc2NhcGVGbGFnICE9PSAnJic7XG5cbiAgbGV0IGRlY29yYXRvciA9ICgvXFwqLy50ZXN0KG9wZW4pKTtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBkZWNvcmF0b3IgPyAnRGVjb3JhdG9yJyA6ICdNdXN0YWNoZVN0YXRlbWVudCcsXG4gICAgcGF0aCxcbiAgICBwYXJhbXMsXG4gICAgaGFzaCxcbiAgICBlc2NhcGVkLFxuICAgIHN0cmlwLFxuICAgIGxvYzogdGhpcy5sb2NJbmZvKGxvY0luZm8pXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlUmF3QmxvY2sob3BlblJhd0Jsb2NrLCBjb250ZW50cywgY2xvc2UsIGxvY0luZm8pIHtcbiAgdmFsaWRhdGVDbG9zZShvcGVuUmF3QmxvY2ssIGNsb3NlKTtcblxuICBsb2NJbmZvID0gdGhpcy5sb2NJbmZvKGxvY0luZm8pO1xuICBsZXQgcHJvZ3JhbSA9IHtcbiAgICB0eXBlOiAnUHJvZ3JhbScsXG4gICAgYm9keTogY29udGVudHMsXG4gICAgc3RyaXA6IHt9LFxuICAgIGxvYzogbG9jSW5mb1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgdHlwZTogJ0Jsb2NrU3RhdGVtZW50JyxcbiAgICBwYXRoOiBvcGVuUmF3QmxvY2sucGF0aCxcbiAgICBwYXJhbXM6IG9wZW5SYXdCbG9jay5wYXJhbXMsXG4gICAgaGFzaDogb3BlblJhd0Jsb2NrLmhhc2gsXG4gICAgcHJvZ3JhbSxcbiAgICBvcGVuU3RyaXA6IHt9LFxuICAgIGludmVyc2VTdHJpcDoge30sXG4gICAgY2xvc2VTdHJpcDoge30sXG4gICAgbG9jOiBsb2NJbmZvXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlQmxvY2sob3BlbkJsb2NrLCBwcm9ncmFtLCBpbnZlcnNlQW5kUHJvZ3JhbSwgY2xvc2UsIGludmVydGVkLCBsb2NJbmZvKSB7XG4gIGlmIChjbG9zZSAmJiBjbG9zZS5wYXRoKSB7XG4gICAgdmFsaWRhdGVDbG9zZShvcGVuQmxvY2ssIGNsb3NlKTtcbiAgfVxuXG4gIGxldCBkZWNvcmF0b3IgPSAoL1xcKi8udGVzdChvcGVuQmxvY2sub3BlbikpO1xuXG4gIHByb2dyYW0uYmxvY2tQYXJhbXMgPSBvcGVuQmxvY2suYmxvY2tQYXJhbXM7XG5cbiAgbGV0IGludmVyc2UsXG4gICAgICBpbnZlcnNlU3RyaXA7XG5cbiAgaWYgKGludmVyc2VBbmRQcm9ncmFtKSB7XG4gICAgaWYgKGRlY29yYXRvcikge1xuICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignVW5leHBlY3RlZCBpbnZlcnNlIGJsb2NrIG9uIGRlY29yYXRvcicsIGludmVyc2VBbmRQcm9ncmFtKTtcbiAgICB9XG5cbiAgICBpZiAoaW52ZXJzZUFuZFByb2dyYW0uY2hhaW4pIHtcbiAgICAgIGludmVyc2VBbmRQcm9ncmFtLnByb2dyYW0uYm9keVswXS5jbG9zZVN0cmlwID0gY2xvc2Uuc3RyaXA7XG4gICAgfVxuXG4gICAgaW52ZXJzZVN0cmlwID0gaW52ZXJzZUFuZFByb2dyYW0uc3RyaXA7XG4gICAgaW52ZXJzZSA9IGludmVyc2VBbmRQcm9ncmFtLnByb2dyYW07XG4gIH1cblxuICBpZiAoaW52ZXJ0ZWQpIHtcbiAgICBpbnZlcnRlZCA9IGludmVyc2U7XG4gICAgaW52ZXJzZSA9IHByb2dyYW07XG4gICAgcHJvZ3JhbSA9IGludmVydGVkO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBkZWNvcmF0b3IgPyAnRGVjb3JhdG9yQmxvY2snIDogJ0Jsb2NrU3RhdGVtZW50JyxcbiAgICBwYXRoOiBvcGVuQmxvY2sucGF0aCxcbiAgICBwYXJhbXM6IG9wZW5CbG9jay5wYXJhbXMsXG4gICAgaGFzaDogb3BlbkJsb2NrLmhhc2gsXG4gICAgcHJvZ3JhbSxcbiAgICBpbnZlcnNlLFxuICAgIG9wZW5TdHJpcDogb3BlbkJsb2NrLnN0cmlwLFxuICAgIGludmVyc2VTdHJpcCxcbiAgICBjbG9zZVN0cmlwOiBjbG9zZSAmJiBjbG9zZS5zdHJpcCxcbiAgICBsb2M6IHRoaXMubG9jSW5mbyhsb2NJbmZvKVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZVByb2dyYW0oc3RhdGVtZW50cywgbG9jKSB7XG4gIGlmICghbG9jICYmIHN0YXRlbWVudHMubGVuZ3RoKSB7XG4gICAgY29uc3QgZmlyc3RMb2MgPSBzdGF0ZW1lbnRzWzBdLmxvYyxcbiAgICAgICAgICBsYXN0TG9jID0gc3RhdGVtZW50c1tzdGF0ZW1lbnRzLmxlbmd0aCAtIDFdLmxvYztcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGZpcnN0TG9jICYmIGxhc3RMb2MpIHtcbiAgICAgIGxvYyA9IHtcbiAgICAgICAgc291cmNlOiBmaXJzdExvYy5zb3VyY2UsXG4gICAgICAgIHN0YXJ0OiB7XG4gICAgICAgICAgbGluZTogZmlyc3RMb2Muc3RhcnQubGluZSxcbiAgICAgICAgICBjb2x1bW46IGZpcnN0TG9jLnN0YXJ0LmNvbHVtblxuICAgICAgICB9LFxuICAgICAgICBlbmQ6IHtcbiAgICAgICAgICBsaW5lOiBsYXN0TG9jLmVuZC5saW5lLFxuICAgICAgICAgIGNvbHVtbjogbGFzdExvYy5lbmQuY29sdW1uXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnUHJvZ3JhbScsXG4gICAgYm9keTogc3RhdGVtZW50cyxcbiAgICBzdHJpcDoge30sXG4gICAgbG9jOiBsb2NcbiAgfTtcbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZVBhcnRpYWxCbG9jayhvcGVuLCBwcm9ncmFtLCBjbG9zZSwgbG9jSW5mbykge1xuICB2YWxpZGF0ZUNsb3NlKG9wZW4sIGNsb3NlKTtcblxuICByZXR1cm4ge1xuICAgIHR5cGU6ICdQYXJ0aWFsQmxvY2tTdGF0ZW1lbnQnLFxuICAgIG5hbWU6IG9wZW4ucGF0aCxcbiAgICBwYXJhbXM6IG9wZW4ucGFyYW1zLFxuICAgIGhhc2g6IG9wZW4uaGFzaCxcbiAgICBwcm9ncmFtLFxuICAgIG9wZW5TdHJpcDogb3Blbi5zdHJpcCxcbiAgICBjbG9zZVN0cmlwOiBjbG9zZSAmJiBjbG9zZS5zdHJpcCxcbiAgICBsb2M6IHRoaXMubG9jSW5mbyhsb2NJbmZvKVxuICB9O1xufVxuXG4iXX0= |
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
| 1 | define(['exports', './visitor'], function (exports, _visitor) { | ||
| 2 | /* eslint-disable new-cap */ | ||
| 3 | 'use strict'; | ||
| 4 | |||
| 5 | exports.__esModule = true; | ||
| 6 | exports.print = print; | ||
| 7 | exports.PrintVisitor = PrintVisitor; | ||
| 8 | // istanbul ignore next | ||
| 9 | |||
| 10 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } | ||
| 11 | |||
| 12 | var _Visitor = _interopRequireDefault(_visitor); | ||
| 13 | |||
| 14 | function print(ast) { | ||
| 15 | return new PrintVisitor().accept(ast); | ||
| 16 | } | ||
| 17 | |||
| 18 | function PrintVisitor() { | ||
| 19 | this.padding = 0; | ||
| 20 | } | ||
| 21 | |||
| 22 | PrintVisitor.prototype = new _Visitor['default'](); | ||
| 23 | |||
| 24 | PrintVisitor.prototype.pad = function (string) { | ||
| 25 | var out = ''; | ||
| 26 | |||
| 27 | for (var i = 0, l = this.padding; i < l; i++) { | ||
| 28 | out += ' '; | ||
| 29 | } | ||
| 30 | |||
| 31 | out += string + '\n'; | ||
| 32 | return out; | ||
| 33 | }; | ||
| 34 | |||
| 35 | PrintVisitor.prototype.Program = function (program) { | ||
| 36 | var out = '', | ||
| 37 | body = program.body, | ||
| 38 | i = undefined, | ||
| 39 | l = undefined; | ||
| 40 | |||
| 41 | if (program.blockParams) { | ||
| 42 | var blockParams = 'BLOCK PARAMS: ['; | ||
| 43 | for (i = 0, l = program.blockParams.length; i < l; i++) { | ||
| 44 | blockParams += ' ' + program.blockParams[i]; | ||
| 45 | } | ||
| 46 | blockParams += ' ]'; | ||
| 47 | out += this.pad(blockParams); | ||
| 48 | } | ||
| 49 | |||
| 50 | for (i = 0, l = body.length; i < l; i++) { | ||
| 51 | out += this.accept(body[i]); | ||
| 52 | } | ||
| 53 | |||
| 54 | this.padding--; | ||
| 55 | |||
| 56 | return out; | ||
| 57 | }; | ||
| 58 | |||
| 59 | PrintVisitor.prototype.MustacheStatement = function (mustache) { | ||
| 60 | return this.pad('{{ ' + this.SubExpression(mustache) + ' }}'); | ||
| 61 | }; | ||
| 62 | PrintVisitor.prototype.Decorator = function (mustache) { | ||
| 63 | return this.pad('{{ DIRECTIVE ' + this.SubExpression(mustache) + ' }}'); | ||
| 64 | }; | ||
| 65 | |||
| 66 | PrintVisitor.prototype.BlockStatement = PrintVisitor.prototype.DecoratorBlock = function (block) { | ||
| 67 | var out = ''; | ||
| 68 | |||
| 69 | out += this.pad((block.type === 'DecoratorBlock' ? 'DIRECTIVE ' : '') + 'BLOCK:'); | ||
| 70 | this.padding++; | ||
| 71 | out += this.pad(this.SubExpression(block)); | ||
| 72 | if (block.program) { | ||
| 73 | out += this.pad('PROGRAM:'); | ||
| 74 | this.padding++; | ||
| 75 | out += this.accept(block.program); | ||
| 76 | this.padding--; | ||
| 77 | } | ||
| 78 | if (block.inverse) { | ||
| 79 | if (block.program) { | ||
| 80 | this.padding++; | ||
| 81 | } | ||
| 82 | out += this.pad('{{^}}'); | ||
| 83 | this.padding++; | ||
| 84 | out += this.accept(block.inverse); | ||
| 85 | this.padding--; | ||
| 86 | if (block.program) { | ||
| 87 | this.padding--; | ||
| 88 | } | ||
| 89 | } | ||
| 90 | this.padding--; | ||
| 91 | |||
| 92 | return out; | ||
| 93 | }; | ||
| 94 | |||
| 95 | PrintVisitor.prototype.PartialStatement = function (partial) { | ||
| 96 | var content = 'PARTIAL:' + partial.name.original; | ||
| 97 | if (partial.params[0]) { | ||
| 98 | content += ' ' + this.accept(partial.params[0]); | ||
| 99 | } | ||
| 100 | if (partial.hash) { | ||
| 101 | content += ' ' + this.accept(partial.hash); | ||
| 102 | } | ||
| 103 | return this.pad('{{> ' + content + ' }}'); | ||
| 104 | }; | ||
| 105 | PrintVisitor.prototype.PartialBlockStatement = function (partial) { | ||
| 106 | var content = 'PARTIAL BLOCK:' + partial.name.original; | ||
| 107 | if (partial.params[0]) { | ||
| 108 | content += ' ' + this.accept(partial.params[0]); | ||
| 109 | } | ||
| 110 | if (partial.hash) { | ||
| 111 | content += ' ' + this.accept(partial.hash); | ||
| 112 | } | ||
| 113 | |||
| 114 | content += ' ' + this.pad('PROGRAM:'); | ||
| 115 | this.padding++; | ||
| 116 | content += this.accept(partial.program); | ||
| 117 | this.padding--; | ||
| 118 | |||
| 119 | return this.pad('{{> ' + content + ' }}'); | ||
| 120 | }; | ||
| 121 | |||
| 122 | PrintVisitor.prototype.ContentStatement = function (content) { | ||
| 123 | return this.pad("CONTENT[ '" + content.value + "' ]"); | ||
| 124 | }; | ||
| 125 | |||
| 126 | PrintVisitor.prototype.CommentStatement = function (comment) { | ||
| 127 | return this.pad("{{! '" + comment.value + "' }}"); | ||
| 128 | }; | ||
| 129 | |||
| 130 | PrintVisitor.prototype.SubExpression = function (sexpr) { | ||
| 131 | var params = sexpr.params, | ||
| 132 | paramStrings = [], | ||
| 133 | hash = undefined; | ||
| 134 | |||
| 135 | for (var i = 0, l = params.length; i < l; i++) { | ||
| 136 | paramStrings.push(this.accept(params[i])); | ||
| 137 | } | ||
| 138 | |||
| 139 | params = '[' + paramStrings.join(', ') + ']'; | ||
| 140 | |||
| 141 | hash = sexpr.hash ? ' ' + this.accept(sexpr.hash) : ''; | ||
| 142 | |||
| 143 | return this.accept(sexpr.path) + ' ' + params + hash; | ||
| 144 | }; | ||
| 145 | |||
| 146 | PrintVisitor.prototype.PathExpression = function (id) { | ||
| 147 | var path = id.parts.join('/'); | ||
| 148 | return (id.data ? '@' : '') + 'PATH:' + path; | ||
| 149 | }; | ||
| 150 | |||
| 151 | PrintVisitor.prototype.StringLiteral = function (string) { | ||
| 152 | return '"' + string.value + '"'; | ||
| 153 | }; | ||
| 154 | |||
| 155 | PrintVisitor.prototype.NumberLiteral = function (number) { | ||
| 156 | return 'NUMBER{' + number.value + '}'; | ||
| 157 | }; | ||
| 158 | |||
| 159 | PrintVisitor.prototype.BooleanLiteral = function (bool) { | ||
| 160 | return 'BOOLEAN{' + bool.value + '}'; | ||
| 161 | }; | ||
| 162 | |||
| 163 | PrintVisitor.prototype.UndefinedLiteral = function () { | ||
| 164 | return 'UNDEFINED'; | ||
| 165 | }; | ||
| 166 | |||
| 167 | PrintVisitor.prototype.NullLiteral = function () { | ||
| 168 | return 'NULL'; | ||
| 169 | }; | ||
| 170 | |||
| 171 | PrintVisitor.prototype.Hash = function (hash) { | ||
| 172 | var pairs = hash.pairs, | ||
| 173 | joinedPairs = []; | ||
| 174 | |||
| 175 | for (var i = 0, l = pairs.length; i < l; i++) { | ||
| 176 | joinedPairs.push(this.accept(pairs[i])); | ||
| 177 | } | ||
| 178 | |||
| 179 | return 'HASH{' + joinedPairs.join(', ') + '}'; | ||
| 180 | }; | ||
| 181 | PrintVisitor.prototype.HashPair = function (pair) { | ||
| 182 | return pair.key + '=' + this.accept(pair.value); | ||
| 183 | }; | ||
| 184 | /* eslint-enable new-cap */ | ||
| 185 | }); | ||
| 186 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2NvbXBpbGVyL3ByaW50ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUdPLFdBQVMsS0FBSyxDQUFDLEdBQUcsRUFBRTtBQUN6QixXQUFPLElBQUksWUFBWSxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0dBQ3ZDOztBQUVNLFdBQVMsWUFBWSxHQUFHO0FBQzdCLFFBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO0dBQ2xCOztBQUVELGNBQVksQ0FBQyxTQUFTLEdBQUcseUJBQWEsQ0FBQzs7QUFFdkMsY0FBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsVUFBUyxNQUFNLEVBQUU7QUFDNUMsUUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDOztBQUViLFNBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDNUMsU0FBRyxJQUFJLElBQUksQ0FBQztLQUNiOztBQUVELE9BQUcsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDO0FBQ3JCLFdBQU8sR0FBRyxDQUFDO0dBQ1osQ0FBQzs7QUFFRixjQUFZLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxVQUFTLE9BQU8sRUFBRTtBQUNqRCxRQUFJLEdBQUcsR0FBRyxFQUFFO1FBQ1IsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJO1FBQ25CLENBQUMsWUFBQTtRQUFFLENBQUMsWUFBQSxDQUFDOztBQUVULFFBQUksT0FBTyxDQUFDLFdBQVcsRUFBRTtBQUN2QixVQUFJLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQztBQUNwQyxXQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFD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QUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN6Qzs7QUFFRCxXQUFPLE9BQU8sR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQztHQUMvQyxDQUFDO0FBQ0YsY0FBWSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsVUFBUyxJQUFJLEVBQUU7QUFDL0MsV0FBTyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztHQUNqRCxDQUFDIiwiZmlsZSI6InByaW50ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuZXctY2FwICovXG5pbXBvcnQgVmlzaXRvciBmcm9tICcuL3Zpc2l0b3InO1xuXG5leHBvcnQgZnVuY3Rpb24gcHJpbnQoYXN0KSB7XG4gIHJldHVybiBuZXcgUHJpbnRWaXNpdG9yKCkuYWNjZXB0KGFzdCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBQcmludFZpc2l0b3IoKSB7XG4gIHRoaXMucGFkZGluZyA9IDA7XG59XG5cblByaW50VmlzaXRvci5wcm90b3R5cGUgPSBuZXcgVmlzaXRvcigpO1xuXG5QcmludFZpc2l0b3IucHJvdG90eXBlLnBhZCA9IGZ1bmN0aW9uKHN0cmluZykge1xuICBsZXQgb3V0ID0gJyc7XG5cbiAgZm9yIChsZXQgaSA9IDAsIGwgPSB0aGlzLnBhZGRpbmc7IGkgPCBsOyBpKyspIHtcbiAgICBvdXQgKz0gJyAgJztcbiAgfVxuXG4gIG91dCArPSBzdHJpbmcgKyAnXFxuJztcbiAgcmV0dXJuIG91dDtcbn07XG5cblByaW50VmlzaXRvci5wcm90b3R5cGUuUHJvZ3JhbSA9IGZ1bmN0aW9uKHByb2dyYW0pIHtcbiAgbGV0IG91dCA9ICcnLFxuICAgICAgYm9keSA9IHByb2dyYW0uYm9keSxcbiAgICAgIGksIGw7XG5cbiAgaWYgKHByb2dyYW0uYmxvY2tQYXJhbXMpIHtcbiAgICBsZXQgYmxvY2tQYXJhbXMgPSAnQkxPQ0sgUEFSQU1TOiBbJztcbiAgICBmb3IgKGkgPSAwLCBsID0gcHJvZ3JhbS5ibG9ja1BhcmFtcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICBibG9ja1BhcmFtcyArPSAnICcgKyBwcm9ncmFtLmJsb2NrUGFyYW1zW2ldO1xuICAgIH1cbiAgICBibG9ja1BhcmFtcyArPSAnIF0nO1xuICAgIG91dCArPSB0aGlzLnBhZChibG9ja1BhcmFtcyk7XG4gIH1cblxuICBmb3IgKGkgPSAwLCBsID0gYm9keS5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBvdXQgKz0gdGhpcy5hY2NlcHQoYm9keVtpXSk7XG4gIH1cblxuICB0aGlzLnBhZGRpbmctLTtcblxuICByZXR1cm4gb3V0O1xufTtcblxuUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5NdXN0YWNoZVN0YXRlbWVudCA9IGZ1bmN0aW9uKG11c3RhY2hlKSB7XG4gIHJldHVybiB0aGlzLnBhZCgne3sgJyArIHRoaXMuU3ViRXhwcmVzc2lvbihtdXN0YWNoZSkgKyAnIH19Jyk7XG59O1xuUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5EZWNvcmF0b3IgPSBmdW5jdGlvbihtdXN0YWNoZSkge1xuICByZXR1cm4gdGhpcy5wYWQoJ3t7IERJUkVDVElWRSAnICsgdGhpcy5TdWJFeHByZXNzaW9uKG11c3RhY2hlKSArICcgfX0nKTtcbn07XG5cblByaW50VmlzaXRvci5wcm90b3R5cGUuQmxvY2tTdGF0ZW1lbnQgPVxuUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5EZWNvcmF0b3JCbG9jayA9IGZ1bmN0aW9uKGJsb2NrKSB7XG4gIGxldCBvdXQgPSAnJztcblxuICBvdXQgKz0gdGhpcy5wYWQoKGJsb2NrLnR5cGUgPT09ICdEZWNvcmF0b3JCbG9jaycgPyAnRElSRUNUSVZFICcgOiAnJykgKyAnQkxPQ0s6Jyk7XG4gIHRoaXMucGFkZGluZysrO1xuICBvdXQgKz0gdGhpcy5wYWQodGhpcy5TdWJFeHByZXNzaW9uKGJsb2NrKSk7XG4gIGlmIChibG9jay5wcm9ncmFtKSB7XG4gICAgb3V0ICs9IHRoaXMucGFkKCdQUk9HUkFNOicpO1xuICAgIHRoaXMucGFkZGluZysrO1xuICAgIG91dCArPSB0aGlzLmFjY2VwdChibG9jay5wcm9ncmFtKTtcbiAgICB0aGlzLnBhZGRpbmctLTtcbiAgfVxuICBpZiAoYmxvY2suaW52ZXJzZSkge1xuICAgIGlmIChibG9jay5wcm9ncmFtKSB7IHRoaXMucGFkZGluZysrOyB9XG4gICAgb3V0ICs9IHRoaXMucGFkKCd7e159fScpO1xuICAgIHRoaXMucGFkZGluZysrO1xuICAgIG91dCArPSB0aGlzLmFjY2VwdChibG9jay5pbnZlcnNlKTtcbiAgICB0aGlzLnBhZGRpbmctLTtcbiAgICBpZiAoYmxvY2sucHJvZ3JhbSkgeyB0aGlzLnBhZGRpbmctLTsgfVxuICB9XG4gIHRoaXMucGFkZGluZy0tO1xuXG4gIHJldHVybiBvdXQ7XG59O1xuXG5QcmludFZpc2l0b3IucHJvdG90eXBlLlBhcnRpYWxTdGF0ZW1lbnQgPSBmdW5jdGlvbihwYXJ0aWFsKSB7XG4gIGxldCBjb250ZW50ID0gJ1BBUlRJQUw6JyArIHBhcnRpYWwubmFtZS5vcmlnaW5hbDtcbiAgaWYgKHBhcnRpYWwucGFyYW1zWzBdKSB7XG4gICAgY29udGVudCArPSAnICcgKyB0aGlzLmFjY2VwdChwYXJ0aWFsLnBhcmFtc1swXSk7XG4gIH1cbiAgaWYgKHBhcnRpYWwuaGFzaCkge1xuICAgIGNvbnRlbnQgKz0gJyAnICsgdGhpcy5hY2NlcHQocGFydGlhbC5oYXNoKTtcbiAgfVxuICByZXR1cm4gdGhpcy5wYWQoJ3t7PiAnICsgY29udGVudCArICcgfX0nKTtcbn07XG5QcmludFZpc2l0b3IucHJvdG90eXBlLlBhcnRpYWxCbG9ja1N0YXRlbWVudCA9IGZ1bmN0aW9uKHBhcnRpYWwpIHtcbiAgbGV0IGNvbnRlbnQgPSAnUEFSVElBTCBCTE9DSzonICsgcGFydGlhbC5uYW1lLm9yaWdpbmFsO1xuICBpZiAocGFydGlhbC5wYXJhbXNbMF0pIHtcbiAgICBjb250ZW50ICs9ICcgJyArIHRoaXMuYWNjZXB0KHBhcnRpYWwucGFyYW1zWzBdKTtcbiAgfVxuICBpZiAocGFydGlhbC5oYXNoKSB7XG4gICAgY29udGVudCArPSAnICcgKyB0aGlzLmFjY2VwdChwYXJ0aWFsLmhhc2gpO1xuICB9XG5cbiAgY29udGVudCArPSAnICcgKyB0aGlzLnBhZCgnUFJPR1JBTTonKTtcbiAgdGhpcy5wYWRkaW5nKys7XG4gIGNvbnRlbnQgKz0gdGhpcy5hY2NlcHQocGFydGlhbC5wcm9ncmFtKTtcbiAgdGhpcy5wYWRkaW5nLS07XG5cbiAgcmV0dXJuIHRoaXMucGFkKCd7ez4gJyArIGNvbnRlbnQgKyAnIH19Jyk7XG59O1xuXG5QcmludFZpc2l0b3IucHJvdG90eXBlLkNvbnRlbnRTdGF0ZW1lbnQgPSBmdW5jdGlvbihjb250ZW50KSB7XG4gIHJldHVybiB0aGlzLnBhZChcIkNPTlRFTlRbICdcIiArIGNvbnRlbnQudmFsdWUgKyBcIicgXVwiKTtcbn07XG5cblByaW50VmlzaXRvci5wcm90b3R5cGUuQ29tbWVudFN0YXRlbWVudCA9IGZ1bmN0aW9uKGNvbW1lbnQpIHtcbiAgcmV0dXJuIHRoaXMucGFkKFwie3shICdcIiArIGNvbW1lbnQudmFsdWUgKyBcIicgfX1cIik7XG59O1xuXG5QcmludFZpc2l0b3IucHJvdG90eXBlLlN1YkV4cHJlc3Npb24gPSBmdW5jdGlvbihzZXhwcikge1xuICBsZXQgcGFyYW1zID0gc2V4cHIucGFyYW1zLFxuICAgICAgcGFyYW1TdHJpbmdzID0gW10sXG4gICAgICBoYXNoO1xuXG4gIGZvciAobGV0IGkgPSAwLCBsID0gcGFyYW1zLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIHBhcmFtU3RyaW5ncy5wdXNoKHRoaXMuYWNjZXB0KHBhcmFtc1tpXSkpO1xuICB9XG5cbiAgcGFyYW1zID0gJ1snICsgcGFyYW1TdHJpbmdzLmpvaW4oJywgJykgKyAnXSc7XG5cbiAgaGFzaCA9IHNleHByLmhhc2ggPyAnICcgKyB0aGlzLmFjY2VwdChzZXhwci5oYXNoKSA6ICcnO1xuXG4gIHJldHVybiB0aGlzLmFjY2VwdChzZXhwci5wYXRoKSArICcgJyArIHBhcmFtcyArIGhhc2g7XG59O1xuXG5QcmludFZpc2l0b3IucHJvdG90eXBlLlBhdGhFeHByZXNzaW9uID0gZnVuY3Rpb24oaWQpIHtcbiAgbGV0IHBhdGggPSBpZC5wYXJ0cy5qb2luKCcvJyk7XG4gIHJldHVybiAoaWQuZGF0YSA/ICdAJyA6ICcnKSArICdQQVRIOicgKyBwYXRoO1xufTtcblxuXG5QcmludFZpc2l0b3IucHJvdG90eXBlLlN0cmluZ0xpdGVyYWwgPSBmdW5jdGlvbihzdHJpbmcpIHtcbiAgcmV0dXJuICdcIicgKyBzdHJpbmcudmFsdWUgKyAnXCInO1xufTtcblxuUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5OdW1iZXJMaXRlcmFsID0gZnVuY3Rpb24obnVtYmVyKSB7XG4gIHJldHVybiAnTlVNQkVSeycgKyBudW1iZXIudmFsdWUgKyAnfSc7XG59O1xuXG5QcmludFZpc2l0b3IucHJvdG90eXBlLkJvb2xlYW5MaXRlcmFsID0gZnVuY3Rpb24oYm9vbCkge1xuICByZXR1cm4gJ0JPT0xFQU57JyArIGJvb2wudmFsdWUgKyAnfSc7XG59O1xuXG5QcmludFZpc2l0b3IucHJvdG90eXBlLlVuZGVmaW5lZExpdGVyYWwgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuICdVTkRFRklORUQnO1xufTtcblxuUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5OdWxsTGl0ZXJhbCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gJ05VTEwnO1xufTtcblxuUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5IYXNoID0gZnVuY3Rpb24oaGFzaCkge1xuICBsZXQgcGFpcnMgPSBoYXNoLnBhaXJzLFxuICAgICAgam9pbmVkUGFpcnMgPSBbXTtcblxuICBmb3IgKGxldCBpID0gMCwgbCA9IHBhaXJzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGpvaW5lZFBhaXJzLnB1c2godGhpcy5hY2NlcHQocGFpcnNbaV0pKTtcbiAgfVxuXG4gIHJldHVybiAnSEFTSHsnICsgam9pbmVkUGFpcnMuam9pbignLCAnKSArICd9Jztcbn07XG5QcmludFZpc2l0b3IucHJvdG90eXBlLkhhc2hQYWlyID0gZnVuY3Rpb24ocGFpcikge1xuICByZXR1cm4gcGFpci5rZXkgKyAnPScgKyB0aGlzLmFjY2VwdChwYWlyLnZhbHVlKTtcbn07XG4vKiBlc2xpbnQtZW5hYmxlIG5ldy1jYXAgKi9cbiJdfQ== |
| 1 | define(['exports', 'module', '../exception'], function (exports, module, _exception) { | ||
| 2 | 'use strict'; | ||
| 3 | |||
| 4 | // istanbul ignore next | ||
| 5 | |||
| 6 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } | ||
| 7 | |||
| 8 | var _Exception = _interopRequireDefault(_exception); | ||
| 9 | |||
| 10 | function Visitor() { | ||
| 11 | this.parents = []; | ||
| 12 | } | ||
| 13 | |||
| 14 | Visitor.prototype = { | ||
| 15 | constructor: Visitor, | ||
| 16 | mutating: false, | ||
| 17 | |||
| 18 | // Visits a given value. If mutating, will replace the value if necessary. | ||
| 19 | acceptKey: function acceptKey(node, name) { | ||
| 20 | var value = this.accept(node[name]); | ||
| 21 | if (this.mutating) { | ||
| 22 | // Hacky sanity check: This may have a few false positives for type for the helper | ||
| 23 | // methods but will generally do the right thing without a lot of overhead. | ||
| 24 | if (value && !Visitor.prototype[value.type]) { | ||
| 25 | throw new _Exception['default']('Unexpected node type "' + value.type + '" found when accepting ' + name + ' on ' + node.type); | ||
| 26 | } | ||
| 27 | node[name] = value; | ||
| 28 | } | ||
| 29 | }, | ||
| 30 | |||
| 31 | // Performs an accept operation with added sanity check to ensure | ||
| 32 | // required keys are not removed. | ||
| 33 | acceptRequired: function acceptRequired(node, name) { | ||
| 34 | this.acceptKey(node, name); | ||
| 35 | |||
| 36 | if (!node[name]) { | ||
| 37 | throw new _Exception['default'](node.type + ' requires ' + name); | ||
| 38 | } | ||
| 39 | }, | ||
| 40 | |||
| 41 | // Traverses a given array. If mutating, empty respnses will be removed | ||
| 42 | // for child elements. | ||
| 43 | acceptArray: function acceptArray(array) { | ||
| 44 | for (var i = 0, l = array.length; i < l; i++) { | ||
| 45 | this.acceptKey(array, i); | ||
| 46 | |||
| 47 | if (!array[i]) { | ||
| 48 | array.splice(i, 1); | ||
| 49 | i--; | ||
| 50 | l--; | ||
| 51 | } | ||
| 52 | } | ||
| 53 | }, | ||
| 54 | |||
| 55 | accept: function accept(object) { | ||
| 56 | if (!object) { | ||
| 57 | return; | ||
| 58 | } | ||
| 59 | |||
| 60 | /* istanbul ignore next: Sanity code */ | ||
| 61 | if (!this[object.type]) { | ||
| 62 | throw new _Exception['default']('Unknown type: ' + object.type, object); | ||
| 63 | } | ||
| 64 | |||
| 65 | if (this.current) { | ||
| 66 | this.parents.unshift(this.current); | ||
| 67 | } | ||
| 68 | this.current = object; | ||
| 69 | |||
| 70 | var ret = this[object.type](object); | ||
| 71 | |||
| 72 | this.current = this.parents.shift(); | ||
| 73 | |||
| 74 | if (!this.mutating || ret) { | ||
| 75 | return ret; | ||
| 76 | } else if (ret !== false) { | ||
| 77 | return object; | ||
| 78 | } | ||
| 79 | }, | ||
| 80 | |||
| 81 | Program: function Program(program) { | ||
| 82 | this.acceptArray(program.body); | ||
| 83 | }, | ||
| 84 | |||
| 85 | MustacheStatement: visitSubExpression, | ||
| 86 | Decorator: visitSubExpression, | ||
| 87 | |||
| 88 | BlockStatement: visitBlock, | ||
| 89 | DecoratorBlock: visitBlock, | ||
| 90 | |||
| 91 | PartialStatement: visitPartial, | ||
| 92 | PartialBlockStatement: function PartialBlockStatement(partial) { | ||
| 93 | visitPartial.call(this, partial); | ||
| 94 | |||
| 95 | this.acceptKey(partial, 'program'); | ||
| 96 | }, | ||
| 97 | |||
| 98 | ContentStatement: function ContentStatement() /* content */{}, | ||
| 99 | CommentStatement: function CommentStatement() /* comment */{}, | ||
| 100 | |||
| 101 | SubExpression: visitSubExpression, | ||
| 102 | |||
| 103 | PathExpression: function PathExpression() /* path */{}, | ||
| 104 | |||
| 105 | StringLiteral: function StringLiteral() /* string */{}, | ||
| 106 | NumberLiteral: function NumberLiteral() /* number */{}, | ||
| 107 | BooleanLiteral: function BooleanLiteral() /* bool */{}, | ||
| 108 | UndefinedLiteral: function UndefinedLiteral() /* literal */{}, | ||
| 109 | NullLiteral: function NullLiteral() /* literal */{}, | ||
| 110 | |||
| 111 | Hash: function Hash(hash) { | ||
| 112 | this.acceptArray(hash.pairs); | ||
| 113 | }, | ||
| 114 | HashPair: function HashPair(pair) { | ||
| 115 | this.acceptRequired(pair, 'value'); | ||
| 116 | } | ||
| 117 | }; | ||
| 118 | |||
| 119 | function visitSubExpression(mustache) { | ||
| 120 | this.acceptRequired(mustache, 'path'); | ||
| 121 | this.acceptArray(mustache.params); | ||
| 122 | this.acceptKey(mustache, 'hash'); | ||
| 123 | } | ||
| 124 | function visitBlock(block) { | ||
| 125 | visitSubExpression.call(this, block); | ||
| 126 | |||
| 127 | this.acceptKey(block, 'program'); | ||
| 128 | this.acceptKey(block, 'inverse'); | ||
| 129 | } | ||
| 130 | function visitPartial(partial) { | ||
| 131 | this.acceptRequired(partial, 'name'); | ||
| 132 | this.acceptArray(partial.params); | ||
| 133 | this.acceptKey(partial, 'hash'); | ||
| 134 | } | ||
| 135 | |||
| 136 | module.exports = Visitor; | ||
| 137 | }); | ||
| 138 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2NvbXBpbGVyL3Zpc2l0b3IuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBRUEsV0FBUyxPQUFPLEdBQUc7QUFDakIsUUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7R0FDbkI7O0FBRUQsU0FBTyxDQUFDLFNBQVMsR0FBRztBQUNsQixlQUFXLEVBQUUsT0FBTztBQUNwQixZQUFRLEVBQUUsS0FBSzs7O0FBR2YsYUFBUyxFQUFFLG1CQUFTLElBQUksRUFBRSxJQUFJLEVBQUU7QUFDOUIsVUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNwQyxVQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7OztBQUdqQixZQUFJLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQzNDLGdCQUFNLDBCQUFjLHdCQUF3QixHQUFHLEtBQUssQ0FBQyxJQUFJLEdBQUcseUJBQXlCLEdBQUcsSUFBSSxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDcEg7QUFDRCxZQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO09BQ3BCO0tBQ0Y7Ozs7QUFJRCxrQkFBYyxFQUFFLHdCQUFTLElBQUksRUFBRSxJQUFJLEVBQUU7QUFDbkMsVUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7O0FBRTNCLFVBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDZixjQUFNLDBCQUFjLElBQUksQ0FBQyxJQUFJLEdBQUcsWUFBWSxHQUFHLElBQUksQ0FBQyxDQUFDO09BQ3REO0tBQ0Y7Ozs7QUFJRCxlQUFXLEVBQUUscUJBQVMsS0FBSyxFQUFFO0FBQzNCLFdBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENB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SSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7R0FDbEM7QUFDRCxXQUFTLFVBQVUsQ0FBQyxLQUFLLEVBQUU7QUFDekIsc0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQzs7QUFFckMsUUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDakMsUUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7R0FDbEM7QUFDRCxXQUFTLFlBQVksQ0FBQyxPQUFPLEVBQUU7QUFDN0IsUUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDckMsUUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDakMsUUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7R0FDakM7O21CQUVjLE9BQU8iLCJmaWxlIjoidmlzaXRvci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi4vZXhjZXB0aW9uJztcblxuZnVuY3Rpb24gVmlzaXRvcigpIHtcbiAgdGhpcy5wYXJlbnRzID0gW107XG59XG5cblZpc2l0b3IucHJvdG90eXBlID0ge1xuICBjb25zdHJ1Y3RvcjogVmlzaXRvcixcbiAgbXV0YXRpbmc6IGZhbHNlLFxuXG4gIC8vIFZpc2l0cyBhIGdpdmVuIHZhbHVlLiBJZiBtdXRhdGluZywgd2lsbCByZXBsYWNlIHRoZSB2YWx1ZSBpZiBuZWNlc3NhcnkuXG4gIGFjY2VwdEtleTogZnVuY3Rpb24obm9kZSwgbmFtZSkge1xuICAgIGxldCB2YWx1ZSA9IHRoaXMuYWNjZXB0KG5vZGVbbmFtZV0pO1xuICAgIGlmICh0aGlzLm11dGF0aW5nKSB7XG4gICAgICAvLyBIYWNreSBzYW5pdHkgY2hlY2s6IFRoaXMgbWF5IGhhdmUgYSBmZXcgZmFsc2UgcG9zaXRpdmVzIGZvciB0eXBlIGZvciB0aGUgaGVscGVyXG4gICAgICAvLyBtZXRob2RzIGJ1dCB3aWxsIGdlbmVyYWxseSBkbyB0aGUgcmlnaHQgdGhpbmcgd2l0aG91dCBhIGxvdCBvZiBvdmVyaGVhZC5cbiAgICAgIGlmICh2YWx1ZSAmJiAhVmlzaXRvci5wcm90b3R5cGVbdmFsdWUudHlwZV0pIHtcbiAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignVW5leHBlY3RlZCBub2RlIHR5cGUgXCInICsgdmFsdWUudHlwZSArICdcIiBmb3VuZCB3aGVuIGFjY2VwdGluZyAnICsgbmFtZSArICcgb24gJyArIG5vZGUudHlwZSk7XG4gICAgICB9XG4gICAgICBub2RlW25hbWVdID0gdmFsdWU7XG4gICAgfVxuICB9LFxuXG4gIC8vIFBlcmZvcm1zIGFuIGFjY2VwdCBvcGVyYXRpb24gd2l0aCBhZGRlZCBzYW5pdHkgY2hlY2sgdG8gZW5zdXJlXG4gIC8vIHJlcXVpcmVkIGtleXMgYXJlIG5vdCByZW1vdmVkLlxuICBhY2NlcHRSZXF1aXJlZDogZnVuY3Rpb24obm9kZSwgbmFtZSkge1xuICAgIHRoaXMuYWNjZXB0S2V5KG5vZGUsIG5hbWUpO1xuXG4gICAgaWYgKCFub2RlW25hbWVdKSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKG5vZGUudHlwZSArICcgcmVxdWlyZXMgJyArIG5hbWUpO1xuICAgIH1cbiAgfSxcblxuICAvLyBUcmF2ZXJzZXMgYSBnaXZlbiBhcnJheS4gSWYgbXV0YXRpbmcsIGVtcHR5IHJlc3Buc2VzIHdpbGwgYmUgcmVtb3ZlZFxuICAvLyBmb3IgY2hpbGQgZWxlbWVudHMuXG4gIGFjY2VwdEFycmF5OiBmdW5jdGlvbihhcnJheSkge1xuICAgIGZvciAobGV0IGkgPSAwLCBsID0gYXJyYXkubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICB0aGlzLmFjY2VwdEtleShhcnJheSwgaSk7XG5cbiAgICAgIGlmICghYXJyYXlbaV0pIHtcbiAgICAgICAgYXJyYXkuc3BsaWNlKGksIDEpO1xuICAgICAgICBpLS07XG4gICAgICAgIGwtLTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgYWNjZXB0OiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICBpZiAoIW9iamVjdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiBTYW5pdHkgY29kZSAqL1xuICAgIGlmICghdGhpc1tvYmplY3QudHlwZV0pIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ1Vua25vd24gdHlwZTogJyArIG9iamVjdC50eXBlLCBvYmplY3QpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmN1cnJlbnQpIHtcbiAgICAgIHRoaXMucGFyZW50cy51bnNoaWZ0KHRoaXMuY3VycmVudCk7XG4gICAgfVxuICAgIHRoaXMuY3VycmVudCA9IG9iamVjdDtcblxuICAgIGxldCByZXQgPSB0aGlzW29iamVjdC50eXBlXShvYmplY3QpO1xuXG4gICAgdGhpcy5jdXJyZW50ID0gdGhpcy5wYXJlbnRzLnNoaWZ0KCk7XG5cbiAgICBpZiAoIXRoaXMubXV0YXRpbmcgfHwgcmV0KSB7XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH0gZWxzZSBpZiAocmV0ICE9PSBmYWxzZSkge1xuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9XG4gIH0sXG5cbiAgUHJvZ3JhbTogZnVuY3Rpb24ocHJvZ3JhbSkge1xuICAgIHRoaXMuYWNjZXB0QXJyYXkocHJvZ3JhbS5ib2R5KTtcbiAgfSxcblxuICBNdXN0YWNoZVN0YXRlbWVudDogdmlzaXRTdWJFeHByZXNzaW9uLFxuICBEZWNvcmF0b3I6IHZpc2l0U3ViRXhwcmVzc2lvbixcblxuICBCbG9ja1N0YXRlbWVudDogdmlzaXRCbG9jayxcbiAgRGVjb3JhdG9yQmxvY2s6IHZpc2l0QmxvY2ssXG5cbiAgUGFydGlhbFN0YXRlbWVudDogdmlzaXRQYXJ0aWFsLFxuICBQYXJ0aWFsQmxvY2tTdGF0ZW1lbnQ6IGZ1bmN0aW9uKHBhcnRpYWwpIHtcbiAgICB2aXNpdFBhcnRpYWwuY2FsbCh0aGlzLCBwYXJ0aWFsKTtcblxuICAgIHRoaXMuYWNjZXB0S2V5KHBhcnRpYWwsICdwcm9ncmFtJyk7XG4gIH0sXG5cbiAgQ29udGVudFN0YXRlbWVudDogZnVuY3Rpb24oLyogY29udGVudCAqLykge30sXG4gIENvbW1lbnRTdGF0ZW1lbnQ6IGZ1bmN0aW9uKC8qIGNvbW1lbnQgKi8pIHt9LFxuXG4gIFN1YkV4cHJlc3Npb246IHZpc2l0U3ViRXhwcmVzc2lvbixcblxuICBQYXRoRXhwcmVzc2lvbjogZnVuY3Rpb24oLyogcGF0aCAqLykge30sXG5cbiAgU3RyaW5nTGl0ZXJhbDogZnVuY3Rpb24oLyogc3RyaW5nICovKSB7fSxcbiAgTnVtYmVyTGl0ZXJhbDogZnVuY3Rpb24oLyogbnVtYmVyICovKSB7fSxcbiAgQm9vbGVhbkxpdGVyYWw6IGZ1bmN0aW9uKC8qIGJvb2wgKi8pIHt9LFxuICBVbmRlZmluZWRMaXRlcmFsOiBmdW5jdGlvbigvKiBsaXRlcmFsICovKSB7fSxcbiAgTnVsbExpdGVyYWw6IGZ1bmN0aW9uKC8qIGxpdGVyYWwgKi8pIHt9LFxuXG4gIEhhc2g6IGZ1bmN0aW9uKGhhc2gpIHtcbiAgICB0aGlzLmFjY2VwdEFycmF5KGhhc2gucGFpcnMpO1xuICB9LFxuICBIYXNoUGFpcjogZnVuY3Rpb24ocGFpcikge1xuICAgIHRoaXMuYWNjZXB0UmVxdWlyZWQocGFpciwgJ3ZhbHVlJyk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIHZpc2l0U3ViRXhwcmVzc2lvbihtdXN0YWNoZSkge1xuICB0aGlzLmFjY2VwdFJlcXVpcmVkKG11c3RhY2hlLCAncGF0aCcpO1xuICB0aGlzLmFjY2VwdEFycmF5KG11c3RhY2hlLnBhcmFtcyk7XG4gIHRoaXMuYWNjZXB0S2V5KG11c3RhY2hlLCAnaGFzaCcpO1xufVxuZnVuY3Rpb24gdmlzaXRCbG9jayhibG9jaykge1xuICB2aXNpdFN1YkV4cHJlc3Npb24uY2FsbCh0aGlzLCBibG9jayk7XG5cbiAgdGhpcy5hY2NlcHRLZXkoYmxvY2ssICdwcm9ncmFtJyk7XG4gIHRoaXMuYWNjZXB0S2V5KGJsb2NrLCAnaW52ZXJzZScpO1xufVxuZnVuY3Rpb24gdmlzaXRQYXJ0aWFsKHBhcnRpYWwpIHtcbiAgdGhpcy5hY2NlcHRSZXF1aXJlZChwYXJ0aWFsLCAnbmFtZScpO1xuICB0aGlzLmFjY2VwdEFycmF5KHBhcnRpYWwucGFyYW1zKTtcbiAgdGhpcy5hY2NlcHRLZXkocGFydGlhbCwgJ2hhc2gnKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgVmlzaXRvcjtcbiJdfQ== |
| 1 | define(['exports', 'module', './visitor'], function (exports, module, _visitor) { | ||
| 2 | 'use strict'; | ||
| 3 | |||
| 4 | // istanbul ignore next | ||
| 5 | |||
| 6 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } | ||
| 7 | |||
| 8 | var _Visitor = _interopRequireDefault(_visitor); | ||
| 9 | |||
| 10 | function WhitespaceControl() { | ||
| 11 | var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; | ||
| 12 | |||
| 13 | this.options = options; | ||
| 14 | } | ||
| 15 | WhitespaceControl.prototype = new _Visitor['default'](); | ||
| 16 | |||
| 17 | WhitespaceControl.prototype.Program = function (program) { | ||
| 18 | var doStandalone = !this.options.ignoreStandalone; | ||
| 19 | |||
| 20 | var isRoot = !this.isRootSeen; | ||
| 21 | this.isRootSeen = true; | ||
| 22 | |||
| 23 | var body = program.body; | ||
| 24 | for (var i = 0, l = body.length; i < l; i++) { | ||
| 25 | var current = body[i], | ||
| 26 | strip = this.accept(current); | ||
| 27 | |||
| 28 | if (!strip) { | ||
| 29 | continue; | ||
| 30 | } | ||
| 31 | |||
| 32 | var _isPrevWhitespace = isPrevWhitespace(body, i, isRoot), | ||
| 33 | _isNextWhitespace = isNextWhitespace(body, i, isRoot), | ||
| 34 | openStandalone = strip.openStandalone && _isPrevWhitespace, | ||
| 35 | closeStandalone = strip.closeStandalone && _isNextWhitespace, | ||
| 36 | inlineStandalone = strip.inlineStandalone && _isPrevWhitespace && _isNextWhitespace; | ||
| 37 | |||
| 38 | if (strip.close) { | ||
| 39 | omitRight(body, i, true); | ||
| 40 | } | ||
| 41 | if (strip.open) { | ||
| 42 | omitLeft(body, i, true); | ||
| 43 | } | ||
| 44 | |||
| 45 | if (doStandalone && inlineStandalone) { | ||
| 46 | omitRight(body, i); | ||
| 47 | |||
| 48 | if (omitLeft(body, i)) { | ||
| 49 | // If we are on a standalone node, save the indent info for partials | ||
| 50 | if (current.type === 'PartialStatement') { | ||
| 51 | // Pull out the whitespace from the final line | ||
| 52 | current.indent = /([ \t]+$)/.exec(body[i - 1].original)[1]; | ||
| 53 | } | ||
| 54 | } | ||
| 55 | } | ||
| 56 | if (doStandalone && openStandalone) { | ||
| 57 | omitRight((current.program || current.inverse).body); | ||
| 58 | |||
| 59 | // Strip out the previous content node if it's whitespace only | ||
| 60 | omitLeft(body, i); | ||
| 61 | } | ||
| 62 | if (doStandalone && closeStandalone) { | ||
| 63 | // Always strip the next node | ||
| 64 | omitRight(body, i); | ||
| 65 | |||
| 66 | omitLeft((current.inverse || current.program).body); | ||
| 67 | } | ||
| 68 | } | ||
| 69 | |||
| 70 | return program; | ||
| 71 | }; | ||
| 72 | |||
| 73 | WhitespaceControl.prototype.BlockStatement = WhitespaceControl.prototype.DecoratorBlock = WhitespaceControl.prototype.PartialBlockStatement = function (block) { | ||
| 74 | this.accept(block.program); | ||
| 75 | this.accept(block.inverse); | ||
| 76 | |||
| 77 | // Find the inverse program that is involed with whitespace stripping. | ||
| 78 | var program = block.program || block.inverse, | ||
| 79 | inverse = block.program && block.inverse, | ||
| 80 | firstInverse = inverse, | ||
| 81 | lastInverse = inverse; | ||
| 82 | |||
| 83 | if (inverse && inverse.chained) { | ||
| 84 | firstInverse = inverse.body[0].program; | ||
| 85 | |||
| 86 | // Walk the inverse chain to find the last inverse that is actually in the chain. | ||
| 87 | while (lastInverse.chained) { | ||
| 88 | lastInverse = lastInverse.body[lastInverse.body.length - 1].program; | ||
| 89 | } | ||
| 90 | } | ||
| 91 | |||
| 92 | var strip = { | ||
| 93 | open: block.openStrip.open, | ||
| 94 | close: block.closeStrip.close, | ||
| 95 | |||
| 96 | // Determine the standalone candiacy. Basically flag our content as being possibly standalone | ||
| 97 | // so our parent can determine if we actually are standalone | ||
| 98 | openStandalone: isNextWhitespace(program.body), | ||
| 99 | closeStandalone: isPrevWhitespace((firstInverse || program).body) | ||
| 100 | }; | ||
| 101 | |||
| 102 | if (block.openStrip.close) { | ||
| 103 | omitRight(program.body, null, true); | ||
| 104 | } | ||
| 105 | |||
| 106 | if (inverse) { | ||
| 107 | var inverseStrip = block.inverseStrip; | ||
| 108 | |||
| 109 | if (inverseStrip.open) { | ||
| 110 | omitLeft(program.body, null, true); | ||
| 111 | } | ||
| 112 | |||
| 113 | if (inverseStrip.close) { | ||
| 114 | omitRight(firstInverse.body, null, true); | ||
| 115 | } | ||
| 116 | if (block.closeStrip.open) { | ||
| 117 | omitLeft(lastInverse.body, null, true); | ||
| 118 | } | ||
| 119 | |||
| 120 | // Find standalone else statments | ||
| 121 | if (!this.options.ignoreStandalone && isPrevWhitespace(program.body) && isNextWhitespace(firstInverse.body)) { | ||
| 122 | omitLeft(program.body); | ||
| 123 | omitRight(firstInverse.body); | ||
| 124 | } | ||
| 125 | } else if (block.closeStrip.open) { | ||
| 126 | omitLeft(program.body, null, true); | ||
| 127 | } | ||
| 128 | |||
| 129 | return strip; | ||
| 130 | }; | ||
| 131 | |||
| 132 | WhitespaceControl.prototype.Decorator = WhitespaceControl.prototype.MustacheStatement = function (mustache) { | ||
| 133 | return mustache.strip; | ||
| 134 | }; | ||
| 135 | |||
| 136 | WhitespaceControl.prototype.PartialStatement = WhitespaceControl.prototype.CommentStatement = function (node) { | ||
| 137 | /* istanbul ignore next */ | ||
| 138 | var strip = node.strip || {}; | ||
| 139 | return { | ||
| 140 | inlineStandalone: true, | ||
| 141 | open: strip.open, | ||
| 142 | close: strip.close | ||
| 143 | }; | ||
| 144 | }; | ||
| 145 | |||
| 146 | function isPrevWhitespace(body, i, isRoot) { | ||
| 147 | if (i === undefined) { | ||
| 148 | i = body.length; | ||
| 149 | } | ||
| 150 | |||
| 151 | // Nodes that end with newlines are considered whitespace (but are special | ||
| 152 | // cased for strip operations) | ||
| 153 | var prev = body[i - 1], | ||
| 154 | sibling = body[i - 2]; | ||
| 155 | if (!prev) { | ||
| 156 | return isRoot; | ||
| 157 | } | ||
| 158 | |||
| 159 | if (prev.type === 'ContentStatement') { | ||
| 160 | return (sibling || !isRoot ? /\r?\n\s*?$/ : /(^|\r?\n)\s*?$/).test(prev.original); | ||
| 161 | } | ||
| 162 | } | ||
| 163 | function isNextWhitespace(body, i, isRoot) { | ||
| 164 | if (i === undefined) { | ||
| 165 | i = -1; | ||
| 166 | } | ||
| 167 | |||
| 168 | var next = body[i + 1], | ||
| 169 | sibling = body[i + 2]; | ||
| 170 | if (!next) { | ||
| 171 | return isRoot; | ||
| 172 | } | ||
| 173 | |||
| 174 | if (next.type === 'ContentStatement') { | ||
| 175 | return (sibling || !isRoot ? /^\s*?\r?\n/ : /^\s*?(\r?\n|$)/).test(next.original); | ||
| 176 | } | ||
| 177 | } | ||
| 178 | |||
| 179 | // Marks the node to the right of the position as omitted. | ||
| 180 | // I.e. {{foo}}' ' will mark the ' ' node as omitted. | ||
| 181 | // | ||
| 182 | // If i is undefined, then the first child will be marked as such. | ||
| 183 | // | ||
| 184 | // If mulitple is truthy then all whitespace will be stripped out until non-whitespace | ||
| 185 | // content is met. | ||
| 186 | function omitRight(body, i, multiple) { | ||
| 187 | var current = body[i == null ? 0 : i + 1]; | ||
| 188 | if (!current || current.type !== 'ContentStatement' || !multiple && current.rightStripped) { | ||
| 189 | return; | ||
| 190 | } | ||
| 191 | |||
| 192 | var original = current.value; | ||
| 193 | current.value = current.value.replace(multiple ? /^\s+/ : /^[ \t]*\r?\n?/, ''); | ||
| 194 | current.rightStripped = current.value !== original; | ||
| 195 | } | ||
| 196 | |||
| 197 | // Marks the node to the left of the position as omitted. | ||
| 198 | // I.e. ' '{{foo}} will mark the ' ' node as omitted. | ||
| 199 | // | ||
| 200 | // If i is undefined then the last child will be marked as such. | ||
| 201 | // | ||
| 202 | // If mulitple is truthy then all whitespace will be stripped out until non-whitespace | ||
| 203 | // content is met. | ||
| 204 | function omitLeft(body, i, multiple) { | ||
| 205 | var current = body[i == null ? body.length - 1 : i - 1]; | ||
| 206 | if (!current || current.type !== 'ContentStatement' || !multiple && current.leftStripped) { | ||
| 207 | return; | ||
| 208 | } | ||
| 209 | |||
| 210 | // We omit the last node if it's whitespace only and not preceeded by a non-content node. | ||
| 211 | var original = current.value; | ||
| 212 | current.value = current.value.replace(multiple ? /\s+$/ : /[ \t]+$/, ''); | ||
| 213 | current.leftStripped = current.value !== original; | ||
| 214 | return current.leftStripped; | ||
| 215 | } | ||
| 216 | |||
| 217 | module.exports = WhitespaceControl; | ||
| 218 | }); | ||
| 219 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2NvbXBpbGVyL3doaXRlc3BhY2UtY29udHJvbC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFFQSxXQUFTLGlCQUFpQixHQUFlO1FBQWQsT0FBTyx5REFBRyxFQUFFOztBQUNyQyxRQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztHQUN4QjtBQUNELG1CQUFpQixDQUFDLFNBQVMsR0FBRyx5QkFBYSxDQUFDOztBQUU1QyxtQkFBaUIsQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLFVBQVMsT0FBTyxFQUFFO0FBQ3RELFFBQU0sWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQzs7QUFFcEQsUUFBSSxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO0FBQzlCLFFBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDOztBQUV2QixRQUFJLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO0FBQ3hCLFNBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDM0MsVUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztVQUNqQixLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQzs7QUFFakMsVUFBSSxDQUFDLEtBQUssRUFBRTtBQUNWLGlCQUFTO09BQ1Y7O0FBRUQsVUFBSSxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQztVQUNyRCxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQztVQUVyRCxjQUFjLEdBQUcsS0FBSyxDQUFDLGNBQWMsSUFBSSxpQkFBaUI7VUFDMUQsZUFBZSxHQUFHLEtB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QUN4RCxRQUFJLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssa0JBQWtCLElBQUssQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDLFlBQVksQUFBQyxFQUFFO0FBQzFGLGFBQU87S0FDUjs7O0FBR0QsUUFBSSxRQUFRLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztBQUM3QixXQUFPLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsR0FBSSxNQUFNLEdBQUssU0FBUyxBQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDN0UsV0FBTyxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUMsS0FBSyxLQUFLLFFBQVEsQ0FBQztBQUNsRCxXQUFPLE9BQU8sQ0FBQyxZQUFZLENBQUM7R0FDN0I7O21CQUVjLGlCQUFpQiIsImZpbGUiOiJ3aGl0ZXNwYWNlLWNvbnRyb2wuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVmlzaXRvciBmcm9tICcuL3Zpc2l0b3InO1xuXG5mdW5jdGlvbiBXaGl0ZXNwYWNlQ29udHJvbChvcHRpb25zID0ge30pIHtcbiAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbn1cbldoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZSA9IG5ldyBWaXNpdG9yKCk7XG5cbldoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZS5Qcm9ncmFtID0gZnVuY3Rpb24ocHJvZ3JhbSkge1xuICBjb25zdCBkb1N0YW5kYWxvbmUgPSAhdGhpcy5vcHRpb25zLmlnbm9yZVN0YW5kYWxvbmU7XG5cbiAgbGV0IGlzUm9vdCA9ICF0aGlzLmlzUm9vdFNlZW47XG4gIHRoaXMuaXNSb290U2VlbiA9IHRydWU7XG5cbiAgbGV0IGJvZHkgPSBwcm9ncmFtLmJvZHk7XG4gIGZvciAobGV0IGkgPSAwLCBsID0gYm9keS5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBsZXQgY3VycmVudCA9IGJvZHlbaV0sXG4gICAgICAgIHN0cmlwID0gdGhpcy5hY2NlcHQoY3VycmVudCk7XG5cbiAgICBpZiAoIXN0cmlwKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBsZXQgX2lzUHJldldoaXRlc3BhY2UgPSBpc1ByZXZXaGl0ZXNwYWNlKGJvZHksIGksIGlzUm9vdCksXG4gICAgICAgIF9pc05leHRXaGl0ZXNwYWNlID0gaXNOZXh0V2hpdGVzcGFjZShib2R5LCBpLCBpc1Jvb3QpLFxuXG4gICAgICAgIG9wZW5TdGFuZGFsb25lID0gc3RyaXAub3BlblN0YW5kYWxvbmUgJiYgX2lzUHJldldoaXRlc3BhY2UsXG4gICAgICAgIGNsb3NlU3RhbmRhbG9uZSA9IHN0cmlwLmNsb3NlU3RhbmRhbG9uZSAmJiBfaXNOZXh0V2hpdGVzcGFjZSxcbiAgICAgICAgaW5saW5lU3RhbmRhbG9uZSA9IHN0cmlwLmlubGluZVN0YW5kYWxvbmUgJiYgX2lzUHJldldoaXRlc3BhY2UgJiYgX2lzTmV4dFdoaXRlc3BhY2U7XG5cbiAgICBpZiAoc3RyaXAuY2xvc2UpIHtcbiAgICAgIG9taXRSaWdodChib2R5LCBpLCB0cnVlKTtcbiAgICB9XG4gICAgaWYgKHN0cmlwLm9wZW4pIHtcbiAgICAgIG9taXRMZWZ0KGJvZHksIGksIHRydWUpO1xuICAgIH1cblxuICAgIGlmIChkb1N0YW5kYWxvbmUgJiYgaW5saW5lU3RhbmRhbG9uZSkge1xuICAgICAgb21pdFJpZ2h0KGJvZHksIGkpO1xuXG4gICAgICBpZiAob21pdExlZnQoYm9keSwgaSkpIHtcbiAgICAgICAgLy8gSWYgd2UgYXJlIG9uIGEgc3RhbmRhbG9uZSBub2RlLCBzYXZlIHRoZSBpbmRlbnQgaW5mbyBmb3IgcGFydGlhbHNcbiAgICAgICAgaWYgKGN1cnJlbnQudHlwZSA9PT0gJ1BhcnRpYWxTdGF0ZW1lbnQnKSB7XG4gICAgICAgICAgLy8gUHVsbCBvdXQgdGhlIHdoaXRlc3BhY2UgZnJvbSB0aGUgZmluYWwgbGluZVxuICAgICAgICAgIGN1cnJlbnQuaW5kZW50ID0gKC8oWyBcXHRdKyQpLykuZXhlYyhib2R5W2kgLSAxXS5vcmlnaW5hbClbMV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRvU3RhbmRhbG9uZSAmJiBvcGVuU3RhbmRhbG9uZSkge1xuICAgICAgb21pdFJpZ2h0KChjdXJyZW50LnByb2dyYW0gfHwgY3VycmVudC5pbnZlcnNlKS5ib2R5KTtcblxuICAgICAgLy8gU3RyaXAgb3V0IHRoZSBwcmV2aW91cyBjb250ZW50IG5vZGUgaWYgaXQncyB3aGl0ZXNwYWNlIG9ubHlcbiAgICAgIG9taXRMZWZ0KGJvZHksIGkpO1xuICAgIH1cbiAgICBpZiAoZG9TdGFuZGFsb25lICYmIGNsb3NlU3RhbmRhbG9uZSkge1xuICAgICAgLy8gQWx3YXlzIHN0cmlwIHRoZSBuZXh0IG5vZGVcbiAgICAgIG9taXRSaWdodChib2R5LCBpKTtcblxuICAgICAgb21pdExlZnQoKGN1cnJlbnQuaW52ZXJzZSB8fCBjdXJyZW50LnByb2dyYW0pLmJvZHkpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwcm9ncmFtO1xufTtcblxuV2hpdGVzcGFjZUNvbnRyb2wucHJvdG90eXBlLkJsb2NrU3RhdGVtZW50ID1cbldoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZS5EZWNvcmF0b3JCbG9jayA9XG5XaGl0ZXNwYWNlQ29udHJvbC5wcm90b3R5cGUuUGFydGlhbEJsb2NrU3RhdGVtZW50ID0gZnVuY3Rpb24oYmxvY2spIHtcbiAgdGhpcy5hY2NlcHQoYmxvY2sucHJvZ3JhbSk7XG4gIHRoaXMuYWNjZXB0KGJsb2NrLmludmVyc2UpO1xuXG4gIC8vIEZpbmQgdGhlIGludmVyc2UgcHJvZ3JhbSB0aGF0IGlzIGludm9sZWQgd2l0aCB3aGl0ZXNwYWNlIHN0cmlwcGluZy5cbiAgbGV0IHByb2dyYW0gPSBibG9jay5wcm9ncmFtIHx8IGJsb2NrLmludmVyc2UsXG4gICAgICBpbnZlcnNlID0gYmxvY2sucHJvZ3JhbSAmJiBibG9jay5pbnZlcnNlLFxuICAgICAgZmlyc3RJbnZlcnNlID0gaW52ZXJzZSxcbiAgICAgIGxhc3RJbnZlcnNlID0gaW52ZXJzZTtcblxuICBpZiAoaW52ZXJzZSAmJiBpbnZlcnNlLmNoYWluZWQpIHtcbiAgICBmaXJzdEludmVyc2UgPSBpbnZlcnNlLmJvZHlbMF0ucHJvZ3JhbTtcblxuICAgIC8vIFdhbGsgdGhlIGludmVyc2UgY2hhaW4gdG8gZmluZCB0aGUgbGFzdCBpbnZlcnNlIHRoYXQgaXMgYWN0dWFsbHkgaW4gdGhlIGNoYWluLlxuICAgIHdoaWxlIChsYXN0SW52ZXJzZS5jaGFpbmVkKSB7XG4gICAgICBsYXN0SW52ZXJzZSA9IGxhc3RJbnZlcnNlLmJvZHlbbGFzdEludmVyc2UuYm9keS5sZW5ndGggLSAxXS5wcm9ncmFtO1xuICAgIH1cbiAgfVxuXG4gIGxldCBzdHJpcCA9IHtcbiAgICBvcGVuOiBibG9jay5vcGVuU3RyaXAub3BlbixcbiAgICBjbG9zZTogYmxvY2suY2xvc2VTdHJpcC5jbG9zZSxcblxuICAgIC8vIERldGVybWluZSB0aGUgc3RhbmRhbG9uZSBjYW5kaWFjeS4gQmFzaWNhbGx5IGZsYWcgb3VyIGNvbnRlbnQgYXMgYmVpbmcgcG9zc2libHkgc3RhbmRhbG9uZVxuICAgIC8vIHNvIG91ciBwYXJlbnQgY2FuIGRldGVybWluZSBpZiB3ZSBhY3R1YWxseSBhcmUgc3RhbmRhbG9uZVxuICAgIG9wZW5TdGFuZGFsb25lOiBpc05leHRXaGl0ZXNwYWNlKHByb2dyYW0uYm9keSksXG4gICAgY2xvc2VTdGFuZGFsb25lOiBpc1ByZXZXaGl0ZXNwYWNlKChmaXJzdEludmVyc2UgfHwgcHJvZ3JhbSkuYm9keSlcbiAgfTtcblxuICBpZiAoYmxvY2sub3BlblN0cmlwLmNsb3NlKSB7XG4gICAgb21pdFJpZ2h0KHByb2dyYW0uYm9keSwgbnVsbCwgdHJ1ZSk7XG4gIH1cblxuICBpZiAoaW52ZXJzZSkge1xuICAgIGxldCBpbnZlcnNlU3RyaXAgPSBibG9jay5pbnZlcnNlU3RyaXA7XG5cbiAgICBpZiAoaW52ZXJzZVN0cmlwLm9wZW4pIHtcbiAgICAgIG9taXRMZWZ0KHByb2dyYW0uYm9keSwgbnVsbCwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgaWYgKGludmVyc2VTdHJpcC5jbG9zZSkge1xuICAgICAgb21pdFJpZ2h0KGZpcnN0SW52ZXJzZS5ib2R5LCBudWxsLCB0cnVlKTtcbiAgICB9XG4gICAgaWYgKGJsb2NrLmNsb3NlU3RyaXAub3Blbikge1xuICAgICAgb21pdExlZnQobGFzdEludmVyc2UuYm9keSwgbnVsbCwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLy8gRmluZCBzdGFuZGFsb25lIGVsc2Ugc3RhdG1lbnRzXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuaWdub3JlU3RhbmRhbG9uZVxuICAgICAgICAmJiBpc1ByZXZXaGl0ZXNwYWNlKHByb2dyYW0uYm9keSlcbiAgICAgICAgJiYgaXNOZXh0V2hpdGVzcGFjZShmaXJzdEludmVyc2UuYm9keSkpIHtcbiAgICAgIG9taXRMZWZ0KHByb2dyYW0uYm9keSk7XG4gICAgICBvbWl0UmlnaHQoZmlyc3RJbnZlcnNlLmJvZHkpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChibG9jay5jbG9zZVN0cmlwLm9wZW4pIHtcbiAgICBvbWl0TGVmdChwcm9ncmFtLmJvZHksIG51bGwsIHRydWUpO1xuICB9XG5cbiAgcmV0dXJuIHN0cmlwO1xufTtcblxuV2hpdGVzcGFjZUNvbnRyb2wucHJvdG90eXBlLkRlY29yYXRvciA9XG5XaGl0ZXNwYWNlQ29udHJvbC5wcm90b3R5cGUuTXVzdGFjaGVTdGF0ZW1lbnQgPSBmdW5jdGlvbihtdXN0YWNoZSkge1xuICByZXR1cm4gbXVzdGFjaGUuc3RyaXA7XG59O1xuXG5XaGl0ZXNwYWNlQ29udHJvbC5wcm90b3R5cGUuUGFydGlhbFN0YXRlbWVudCA9XG4gICAgV2hpdGVzcGFjZUNvbnRyb2wucHJvdG90eXBlLkNvbW1lbnRTdGF0ZW1lbnQgPSBmdW5jdGlvbihub2RlKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGxldCBzdHJpcCA9IG5vZGUuc3RyaXAgfHwge307XG4gIHJldHVybiB7XG4gICAgaW5saW5lU3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBvcGVuOiBzdHJpcC5vcGVuLFxuICAgIGNsb3NlOiBzdHJpcC5jbG9zZVxuICB9O1xufTtcblxuXG5mdW5jdGlvbiBpc1ByZXZXaGl0ZXNwYWNlKGJvZHksIGksIGlzUm9vdCkge1xuICBpZiAoaSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgaSA9IGJvZHkubGVuZ3RoO1xuICB9XG5cbiAgLy8gTm9kZXMgdGhhdCBlbmQgd2l0aCBuZXdsaW5lcyBhcmUgY29uc2lkZXJlZCB3aGl0ZXNwYWNlIChidXQgYXJlIHNwZWNpYWxcbiAgLy8gY2FzZWQgZm9yIHN0cmlwIG9wZXJhdGlvbnMpXG4gIGxldCBwcmV2ID0gYm9keVtpIC0gMV0sXG4gICAgICBzaWJsaW5nID0gYm9keVtpIC0gMl07XG4gIGlmICghcHJldikge1xuICAgIHJldHVybiBpc1Jvb3Q7XG4gIH1cblxuICBpZiAocHJldi50eXBlID09PSAnQ29udGVudFN0YXRlbWVudCcpIHtcbiAgICByZXR1cm4gKHNpYmxpbmcgfHwgIWlzUm9vdCA/ICgvXFxyP1xcblxccyo/JC8pIDogKC8oXnxcXHI/XFxuKVxccyo/JC8pKS50ZXN0KHByZXYub3JpZ2luYWwpO1xuICB9XG59XG5mdW5jdGlvbiBpc05leHRXaGl0ZXNwYWNlKGJvZHksIGksIGlzUm9vdCkge1xuICBpZiAoaSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgaSA9IC0xO1xuICB9XG5cbiAgbGV0IG5leHQgPSBib2R5W2kgKyAxXSxcbiAgICAgIHNpYmxpbmcgPSBib2R5W2kgKyAyXTtcbiAgaWYgKCFuZXh0KSB7XG4gICAgcmV0dXJuIGlzUm9vdDtcbiAgfVxuXG4gIGlmIChuZXh0LnR5cGUgPT09ICdDb250ZW50U3RhdGVtZW50Jykge1xuICAgIHJldHVybiAoc2libGluZyB8fCAhaXNSb290ID8gKC9eXFxzKj9cXHI/XFxuLykgOiAoL15cXHMqPyhcXHI/XFxufCQpLykpLnRlc3QobmV4dC5vcmlnaW5hbCk7XG4gIH1cbn1cblxuLy8gTWFya3MgdGhlIG5vZGUgdG8gdGhlIHJpZ2h0IG9mIHRoZSBwb3NpdGlvbiBhcyBvbWl0dGVkLlxuLy8gSS5lLiB7e2Zvb319JyAnIHdpbGwgbWFyayB0aGUgJyAnIG5vZGUgYXMgb21pdHRlZC5cbi8vXG4vLyBJZiBpIGlzIHVuZGVmaW5lZCwgdGhlbiB0aGUgZmlyc3QgY2hpbGQgd2lsbCBiZSBtYXJrZWQgYXMgc3VjaC5cbi8vXG4vLyBJZiBtdWxpdHBsZSBpcyB0cnV0aHkgdGhlbiBhbGwgd2hpdGVzcGFjZSB3aWxsIGJlIHN0cmlwcGVkIG91dCB1bnRpbCBub24td2hpdGVzcGFjZVxuLy8gY29udGVudCBpcyBtZXQuXG5mdW5jdGlvbiBvbWl0UmlnaHQoYm9keSwgaSwgbXVsdGlwbGUpIHtcbiAgbGV0IGN1cnJlbnQgPSBib2R5W2kgPT0gbnVsbCA/IDAgOiBpICsgMV07XG4gIGlmICghY3VycmVudCB8fCBjdXJyZW50LnR5cGUgIT09ICdDb250ZW50U3RhdGVtZW50JyB8fCAoIW11bHRpcGxlICYmIGN1cnJlbnQucmlnaHRTdHJpcHBlZCkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBsZXQgb3JpZ2luYWwgPSBjdXJyZW50LnZhbHVlO1xuICBjdXJyZW50LnZhbHVlID0gY3VycmVudC52YWx1ZS5yZXBsYWNlKG11bHRpcGxlID8gKC9eXFxzKy8pIDogKC9eWyBcXHRdKlxccj9cXG4/LyksICcnKTtcbiAgY3VycmVudC5yaWdodFN0cmlwcGVkID0gY3VycmVudC52YWx1ZSAhPT0gb3JpZ2luYWw7XG59XG5cbi8vIE1hcmtzIHRoZSBub2RlIHRvIHRoZSBsZWZ0IG9mIHRoZSBwb3NpdGlvbiBhcyBvbWl0dGVkLlxuLy8gSS5lLiAnICd7e2Zvb319IHdpbGwgbWFyayB0aGUgJyAnIG5vZGUgYXMgb21pdHRlZC5cbi8vXG4vLyBJZiBpIGlzIHVuZGVmaW5lZCB0aGVuIHRoZSBsYXN0IGNoaWxkIHdpbGwgYmUgbWFya2VkIGFzIHN1Y2guXG4vL1xuLy8gSWYgbXVsaXRwbGUgaXMgdHJ1dGh5IHRoZW4gYWxsIHdoaXRlc3BhY2Ugd2lsbCBiZSBzdHJpcHBlZCBvdXQgdW50aWwgbm9uLXdoaXRlc3BhY2Vcbi8vIGNvbnRlbnQgaXMgbWV0LlxuZnVuY3Rpb24gb21pdExlZnQoYm9keSwgaSwgbXVsdGlwbGUpIHtcbiAgbGV0IGN1cnJlbnQgPSBib2R5W2kgPT0gbnVsbCA/IGJvZHkubGVuZ3RoIC0gMSA6IGkgLSAxXTtcbiAgaWYgKCFjdXJyZW50IHx8IGN1cnJlbnQudHlwZSAhPT0gJ0NvbnRlbnRTdGF0ZW1lbnQnIHx8ICghbXVsdGlwbGUgJiYgY3VycmVudC5sZWZ0U3RyaXBwZWQpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gV2Ugb21pdCB0aGUgbGFzdCBub2RlIGlmIGl0J3Mgd2hpdGVzcGFjZSBvbmx5IGFuZCBub3QgcHJlY2VlZGVkIGJ5IGEgbm9uLWNvbnRlbnQgbm9kZS5cbiAgbGV0IG9yaWdpbmFsID0gY3VycmVudC52YWx1ZTtcbiAgY3VycmVudC52YWx1ZSA9IGN1cnJlbnQudmFsdWUucmVwbGFjZShtdWx0aXBsZSA/ICgvXFxzKyQvKSA6ICgvWyBcXHRdKyQvKSwgJycpO1xuICBjdXJyZW50LmxlZnRTdHJpcHBlZCA9IGN1cnJlbnQudmFsdWUgIT09IG9yaWdpbmFsO1xuICByZXR1cm4gY3VycmVudC5sZWZ0U3RyaXBwZWQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFdoaXRlc3BhY2VDb250cm9sO1xuIl19 |
| 1 | define(['exports', './decorators/inline'], function (exports, _decoratorsInline) { | ||
| 2 | 'use strict'; | ||
| 3 | |||
| 4 | exports.__esModule = true; | ||
| 5 | exports.registerDefaultDecorators = registerDefaultDecorators; | ||
| 6 | // istanbul ignore next | ||
| 7 | |||
| 8 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } | ||
| 9 | |||
| 10 | var _registerInline = _interopRequireDefault(_decoratorsInline); | ||
| 11 | |||
| 12 | function registerDefaultDecorators(instance) { | ||
| 13 | _registerInline['default'](instance); | ||
| 14 | } | ||
| 15 | }); | ||
| 16 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2RlY29yYXRvcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFFTyxXQUFTLHlCQUF5QixDQUFDLFFBQVEsRUFBRTtBQUNsRCwrQkFBZSxRQUFRLENBQUMsQ0FBQztHQUMxQiIsImZpbGUiOiJkZWNvcmF0b3JzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJlZ2lzdGVySW5saW5lIGZyb20gJy4vZGVjb3JhdG9ycy9pbmxpbmUnO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJEZWZhdWx0RGVjb3JhdG9ycyhpbnN0YW5jZSkge1xuICByZWdpc3RlcklubGluZShpbnN0YW5jZSk7XG59XG5cbiJdfQ== |
No preview for this file type
| 1 | define(['exports', 'module', '../utils'], function (exports, module, _utils) { | ||
| 2 | 'use strict'; | ||
| 3 | |||
| 4 | module.exports = function (instance) { | ||
| 5 | instance.registerDecorator('inline', function (fn, props, container, options) { | ||
| 6 | var ret = fn; | ||
| 7 | if (!props.partials) { | ||
| 8 | props.partials = {}; | ||
| 9 | ret = function (context, options) { | ||
| 10 | // Create a new partials stack frame prior to exec. | ||
| 11 | var original = container.partials; | ||
| 12 | container.partials = _utils.extend({}, original, props.partials); | ||
| 13 | var ret = fn(context, options); | ||
| 14 | container.partials = original; | ||
| 15 | return ret; | ||
| 16 | }; | ||
| 17 | } | ||
| 18 | |||
| 19 | props.partials[options.args[0]] = options.fn; | ||
| 20 | |||
| 21 | return ret; | ||
| 22 | }); | ||
| 23 | }; | ||
| 24 | }); | ||
| 25 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2RlY29yYXRvcnMvaW5saW5lLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OzttQkFFZSxVQUFTLFFBQVEsRUFBRTtBQUNoQyxZQUFRLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFVBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFO0FBQzNFLFVBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUNiLFVBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFO0FBQ25CLGFBQUssQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0FBQ3BCLFdBQUcsR0FBRyxVQUFTLE9BQU8sRUFBRSxPQUFPLEVBQUU7O0FBRS9CLGNBQUksUUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7QUFDbEMsbUJBQVMsQ0FBQyxRQUFRLEdBQUcsT0FWckIsTUFBTSxDQVVzQixFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMxRCxjQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQy9CLG1CQUFTLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztBQUM5QixpQkFBTyxHQUFHLENBQUM7U0FDWixDQUFDO09BQ0g7O0FBRUQsV0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQzs7QUFFN0MsYUFBTyxHQUFHLENBQUM7S0FDWixDQUFDLENBQUM7R0FDSiIsImZpbGUiOiJpbmxpbmUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2V4dGVuZH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihpbnN0YW5jZSkge1xuICBpbnN0YW5jZS5yZWdpc3RlckRlY29yYXRvcignaW5saW5lJywgZnVuY3Rpb24oZm4sIHByb3BzLCBjb250YWluZXIsIG9wdGlvbnMpIHtcbiAgICBsZXQgcmV0ID0gZm47XG4gICAgaWYgKCFwcm9wcy5wYXJ0aWFscykge1xuICAgICAgcHJvcHMucGFydGlhbHMgPSB7fTtcbiAgICAgIHJldCA9IGZ1bmN0aW9uKGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IHBhcnRpYWxzIHN0YWNrIGZyYW1lIHByaW9yIHRvIGV4ZWMuXG4gICAgICAgIGxldCBvcmlnaW5hbCA9IGNvbnRhaW5lci5wYXJ0aWFscztcbiAgICAgICAgY29udGFpbmVyLnBhcnRpYWxzID0gZXh0ZW5kKHt9LCBvcmlnaW5hbCwgcHJvcHMucGFydGlhbHMpO1xuICAgICAgICBsZXQgcmV0ID0gZm4oY29udGV4dCwgb3B0aW9ucyk7XG4gICAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IG9yaWdpbmFsO1xuICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgfTtcbiAgICB9XG5cbiAgICBwcm9wcy5wYXJ0aWFsc1tvcHRpb25zLmFyZ3NbMF1dID0gb3B0aW9ucy5mbjtcblxuICAgIHJldHVybiByZXQ7XG4gIH0pO1xufVxuIl19 |
| 1 | define(['exports', 'module'], function (exports, module) { | ||
| 2 | 'use strict'; | ||
| 3 | |||
| 4 | var errorProps = ['description', 'fileName', 'lineNumber', 'message', 'name', 'number', 'stack']; | ||
| 5 | |||
| 6 | function Exception(message, node) { | ||
| 7 | var loc = node && node.loc, | ||
| 8 | line = undefined, | ||
| 9 | column = undefined; | ||
| 10 | if (loc) { | ||
| 11 | line = loc.start.line; | ||
| 12 | column = loc.start.column; | ||
| 13 | |||
| 14 | message += ' - ' + line + ':' + column; | ||
| 15 | } | ||
| 16 | |||
| 17 | var tmp = Error.prototype.constructor.call(this, message); | ||
| 18 | |||
| 19 | // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work. | ||
| 20 | for (var idx = 0; idx < errorProps.length; idx++) { | ||
| 21 | this[errorProps[idx]] = tmp[errorProps[idx]]; | ||
| 22 | } | ||
| 23 | |||
| 24 | /* istanbul ignore else */ | ||
| 25 | if (Error.captureStackTrace) { | ||
| 26 | Error.captureStackTrace(this, Exception); | ||
| 27 | } | ||
| 28 | |||
| 29 | try { | ||
| 30 | if (loc) { | ||
| 31 | this.lineNumber = line; | ||
| 32 | |||
| 33 | // Work around issue under safari where we can't directly set the column value | ||
| 34 | /* istanbul ignore next */ | ||
| 35 | if (Object.defineProperty) { | ||
| 36 | Object.defineProperty(this, 'column', { | ||
| 37 | value: column, | ||
| 38 | enumerable: true | ||
| 39 | }); | ||
| 40 | } else { | ||
| 41 | this.column = column; | ||
| 42 | } | ||
| 43 | } | ||
| 44 | } catch (nop) { | ||
| 45 | /* Ignore if the browser is very particular */ | ||
| 46 | } | ||
| 47 | } | ||
| 48 | |||
| 49 | Exception.prototype = new Error(); | ||
| 50 | |||
| 51 | module.exports = Exception; | ||
| 52 | }); | ||
| 53 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2V4Y2VwdGlvbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxNQUFNLFVBQVUsR0FBRyxDQUFDLGFBQWEsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDOztBQUVuRyxXQUFTLFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFO0FBQ2hDLFFBQUksR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLENBQUMsR0FBRztRQUN0QixJQUFJLFlBQUE7UUFDSixNQUFNLFlBQUEsQ0FBQztBQUNYLFFBQUksR0FBRyxFQUFFO0FBQ1AsVUFBSSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO0FBQ3RCLFlBQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQzs7QUFFMUIsYUFBTyxJQUFJLEtBQUssR0FBRyxJQUFJLEdBQUcsR0FBRyxHQUFHLE1BQU0sQ0FBQztLQUN4Qzs7QUFFRCxRQUFJLEdBQUcsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDOzs7QUFHMUQsU0FBSyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUU7QUFDaEQsVUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztLQUM5Qzs7O0FBR0QsUUFBSSxLQUFLLENBQUMsaUJBQWlCLEVBQUU7QUFDM0IsV0FBSyxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztLQUMxQzs7QUFFRCxRQUFJO0FBQ0YsVUFBSSxHQUFHLEVBQUU7QUFDUCxZQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQzs7OztBQUl2QixZQUFJLE1BQU0sQ0FBQyxjQUFjLEVBQUU7QUFDekIsZ0JBQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRTtBQUNwQyxpQkFBSyxFQUFFLE1BQU07QUFDYixzQkFBVSxFQUFFLElBQUk7V0FDakIsQ0FBQyxDQUFDO1NBQ0osTUFBTTtBQUNMLGNBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1NBQ3RCO09BQ0Y7S0FDRixDQUFDLE9BQU8sR0FBRyxFQUFFOztLQUViO0dBQ0Y7O0FBRUQsV0FBUyxDQUFDLFNBQVMsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDOzttQkFFbkIsU0FBUyIsImZpbGUiOiJleGNlcHRpb24uanMiLCJzb3VyY2VzQ29udGVudCI6WyJcbmNvbnN0IGVycm9yUHJvcHMgPSBbJ2Rlc2NyaXB0aW9uJywgJ2ZpbGVOYW1lJywgJ2xpbmVOdW1iZXInLCAnbWVzc2FnZScsICduYW1lJywgJ251bWJlcicsICdzdGFjayddO1xuXG5mdW5jdGlvbiBFeGNlcHRpb24obWVzc2FnZSwgbm9kZSkge1xuICBsZXQgbG9jID0gbm9kZSAmJiBub2RlLmxvYyxcbiAgICAgIGxpbmUsXG4gICAgICBjb2x1bW47XG4gIGlmIChsb2MpIHtcbiAgICBsaW5lID0gbG9jLnN0YXJ0LmxpbmU7XG4gICAgY29sdW1uID0gbG9jLnN0YXJ0LmNvbHVtbjtcblxuICAgIG1lc3NhZ2UgKz0gJyAtICcgKyBsaW5lICsgJzonICsgY29sdW1uO1xuICB9XG5cbiAgbGV0IHRtcCA9IEVycm9yLnByb3RvdHlwZS5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsIG1lc3NhZ2UpO1xuXG4gIC8vIFVuZm9ydHVuYXRlbHkgZXJyb3JzIGFyZSBub3QgZW51bWVyYWJsZSBpbiBDaHJvbWUgKGF0IGxlYXN0KSwgc28gYGZvciBwcm9wIGluIHRtcGAgZG9lc24ndCB3b3JrLlxuICBmb3IgKGxldCBpZHggPSAwOyBpZHggPCBlcnJvclByb3BzLmxlbmd0aDsgaWR4KyspIHtcbiAgICB0aGlzW2Vycm9yUHJvcHNbaWR4XV0gPSB0bXBbZXJyb3JQcm9wc1tpZHhdXTtcbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gIGlmIChFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSkge1xuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIEV4Y2VwdGlvbik7XG4gIH1cblxuICB0cnkge1xuICAgIGlmIChsb2MpIHtcbiAgICAgIHRoaXMubGluZU51bWJlciA9IGxpbmU7XG5cbiAgICAgIC8vIFdvcmsgYXJvdW5kIGlzc3VlIHVuZGVyIHNhZmFyaSB3aGVyZSB3ZSBjYW4ndCBkaXJlY3RseSBzZXQgdGhlIGNvbHVtbiB2YWx1ZVxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdjb2x1bW4nLCB7XG4gICAgICAgICAgdmFsdWU6IGNvbHVtbixcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jb2x1bW4gPSBjb2x1bW47XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChub3ApIHtcbiAgICAvKiBJZ25vcmUgaWYgdGhlIGJyb3dzZXIgaXMgdmVyeSBwYXJ0aWN1bGFyICovXG4gIH1cbn1cblxuRXhjZXB0aW9uLnByb3RvdHlwZSA9IG5ldyBFcnJvcigpO1xuXG5leHBvcnQgZGVmYXVsdCBFeGNlcHRpb247XG4iXX0= |
| 1 | define(['exports', './helpers/block-helper-missing', './helpers/each', './helpers/helper-missing', './helpers/if', './helpers/log', './helpers/lookup', './helpers/with'], function (exports, _helpersBlockHelperMissing, _helpersEach, _helpersHelperMissing, _helpersIf, _helpersLog, _helpersLookup, _helpersWith) { | ||
| 2 | 'use strict'; | ||
| 3 | |||
| 4 | exports.__esModule = true; | ||
| 5 | exports.registerDefaultHelpers = registerDefaultHelpers; | ||
| 6 | // istanbul ignore next | ||
| 7 | |||
| 8 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } | ||
| 9 | |||
| 10 | var _registerBlockHelperMissing = _interopRequireDefault(_helpersBlockHelperMissing); | ||
| 11 | |||
| 12 | var _registerEach = _interopRequireDefault(_helpersEach); | ||
| 13 | |||
| 14 | var _registerHelperMissing = _interopRequireDefault(_helpersHelperMissing); | ||
| 15 | |||
| 16 | var _registerIf = _interopRequireDefault(_helpersIf); | ||
| 17 | |||
| 18 | var _registerLog = _interopRequireDefault(_helpersLog); | ||
| 19 | |||
| 20 | var _registerLookup = _interopRequireDefault(_helpersLookup); | ||
| 21 | |||
| 22 | var _registerWith = _interopRequireDefault(_helpersWith); | ||
| 23 | |||
| 24 | function registerDefaultHelpers(instance) { | ||
| 25 | _registerBlockHelperMissing['default'](instance); | ||
| 26 | _registerEach['default'](instance); | ||
| 27 | _registerHelperMissing['default'](instance); | ||
| 28 | _registerIf['default'](instance); | ||
| 29 | _registerLog['default'](instance); | ||
| 30 | _registerLookup['default'](instance); | ||
| 31 | _registerWith['default'](instance); | ||
| 32 | } | ||
| 33 | }); | ||
| 34 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFRTyxXQUFTLHNCQUFzQixDQUFDLFFBQVEsRUFBRTtBQUMvQywyQ0FBMkIsUUFBUSxDQUFDLENBQUM7QUFDckMsNkJBQWEsUUFBUSxDQUFDLENBQUM7QUFDdkIsc0NBQXNCLFFBQVEsQ0FBQyxDQUFDO0FBQ2hDLDJCQUFXLFFBQVEsQ0FBQyxDQUFDO0FBQ3JCLDRCQUFZLFFBQVEsQ0FBQyxDQUFDO0FBQ3RCLCtCQUFlLFFBQVEsQ0FBQyxDQUFDO0FBQ3pCLDZCQUFhLFFBQVEsQ0FBQyxDQUFDO0dBQ3hCIiwiZmlsZSI6ImhlbHBlcnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcmVnaXN0ZXJCbG9ja0hlbHBlck1pc3NpbmcgZnJvbSAnLi9oZWxwZXJzL2Jsb2NrLWhlbHBlci1taXNzaW5nJztcbmltcG9ydCByZWdpc3RlckVhY2ggZnJvbSAnLi9oZWxwZXJzL2VhY2gnO1xuaW1wb3J0IHJlZ2lzdGVySGVscGVyTWlzc2luZyBmcm9tICcuL2hlbHBlcnMvaGVscGVyLW1pc3NpbmcnO1xuaW1wb3J0IHJlZ2lzdGVySWYgZnJvbSAnLi9oZWxwZXJzL2lmJztcbmltcG9ydCByZWdpc3RlckxvZyBmcm9tICcuL2hlbHBlcnMvbG9nJztcbmltcG9ydCByZWdpc3Rlckxvb2t1cCBmcm9tICcuL2hlbHBlcnMvbG9va3VwJztcbmltcG9ydCByZWdpc3RlcldpdGggZnJvbSAnLi9oZWxwZXJzL3dpdGgnO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJEZWZhdWx0SGVscGVycyhpbnN0YW5jZSkge1xuICByZWdpc3RlckJsb2NrSGVscGVyTWlzc2luZyhpbnN0YW5jZSk7XG4gIHJlZ2lzdGVyRWFjaChpbnN0YW5jZSk7XG4gIHJlZ2lzdGVySGVscGVyTWlzc2luZyhpbnN0YW5jZSk7XG4gIHJlZ2lzdGVySWYoaW5zdGFuY2UpO1xuICByZWdpc3RlckxvZyhpbnN0YW5jZSk7XG4gIHJlZ2lzdGVyTG9va3VwKGluc3RhbmNlKTtcbiAgcmVnaXN0ZXJXaXRoKGluc3RhbmNlKTtcbn1cbiJdfQ== |
No preview for this file type
| 1 | define(['exports', 'module', '../utils'], function (exports, module, _utils) { | ||
| 2 | 'use strict'; | ||
| 3 | |||
| 4 | module.exports = function (instance) { | ||
| 5 | instance.registerHelper('blockHelperMissing', function (context, options) { | ||
| 6 | var inverse = options.inverse, | ||
| 7 | fn = options.fn; | ||
| 8 | |||
| 9 | if (context === true) { | ||
| 10 | return fn(this); | ||
| 11 | } else if (context === false || context == null) { | ||
| 12 | return inverse(this); | ||
| 13 | } else if (_utils.isArray(context)) { | ||
| 14 | if (context.length > 0) { | ||
| 15 | if (options.ids) { | ||
| 16 | options.ids = [options.name]; | ||
| 17 | } | ||
| 18 | |||
| 19 | return instance.helpers.each(context, options); | ||
| 20 | } else { | ||
| 21 | return inverse(this); | ||
| 22 | } | ||
| 23 | } else { | ||
| 24 | if (options.data && options.ids) { | ||
| 25 | var data = _utils.createFrame(options.data); | ||
| 26 | data.contextPath = _utils.appendContextPath(options.data.contextPath, options.name); | ||
| 27 | options = { data: data }; | ||
| 28 | } | ||
| 29 | |||
| 30 | return fn(context, options); | ||
| 31 | } | ||
| 32 | }); | ||
| 33 | }; | ||
| 34 | }); | ||
| 35 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvYmxvY2staGVscGVyLW1pc3NpbmcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O21CQUVlLFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFlBQVEsQ0FBQyxjQUFjLENBQUMsb0JBQW9CLEVBQUUsVUFBUyxPQUFPLEVBQUUsT0FBTyxFQUFFO0FBQ3ZFLFVBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPO1VBQ3pCLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDOztBQUVwQixVQUFJLE9BQU8sS0FBSyxJQUFJLEVBQUU7QUFDcEIsZUFBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7T0FDakIsTUFBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLElBQUksT0FBTyxJQUFJLElBQUksRUFBRTtBQUMvQyxlQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztPQUN0QixNQUFNLElBQUksT0FYeUIsT0FBTyxDQVd4QixPQUFPLENBQUMsRUFBRTtBQUMzQixZQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQ3RCLGNBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUNmLG1CQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1dBQzlCOztBQUVELGlCQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztTQUNoRCxNQUFNO0FBQ0wsaUJBQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3RCO09BQ0YsTUFBTTtBQUNMLFlBQUksT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFO0FBQy9CLGNBQUksSUFBSSxHQUFHLE9BdkJRLFdBQVcsQ0F1QlAsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3JDLGNBQUksQ0FBQyxXQUFXLEdBQUcsT0F4Qm5CLGlCQUFpQixDQXdCb0IsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzdFLGlCQUFPLEdBQUcsRUFBQyxJQUFJLEVBQUUsSUFBSSxFQUFDLENBQUM7U0FDeEI7O0FBRUQsZUFBTyxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO09BQzdCO0tBQ0YsQ0FBQyxDQUFDO0dBQ0oiLCJmaWxlIjoiYmxvY2staGVscGVyLW1pc3NpbmcuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2FwcGVuZENvbnRleHRQYXRoLCBjcmVhdGVGcmFtZSwgaXNBcnJheX0gZnJvbSAnLi4vdXRpbHMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihpbnN0YW5jZSkge1xuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignYmxvY2tIZWxwZXJNaXNzaW5nJywgZnVuY3Rpb24oY29udGV4dCwgb3B0aW9ucykge1xuICAgIGxldCBpbnZlcnNlID0gb3B0aW9ucy5pbnZlcnNlLFxuICAgICAgICBmbiA9IG9wdGlvbnMuZm47XG5cbiAgICBpZiAoY29udGV4dCA9PT0gdHJ1ZSkge1xuICAgICAgcmV0dXJuIGZuKHRoaXMpO1xuICAgIH0gZWxzZSBpZiAoY29udGV4dCA9PT0gZmFsc2UgfHwgY29udGV4dCA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gaW52ZXJzZSh0aGlzKTtcbiAgICB9IGVsc2UgaWYgKGlzQXJyYXkoY29udGV4dCkpIHtcbiAgICAgIGlmIChjb250ZXh0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgaWYgKG9wdGlvbnMuaWRzKSB7XG4gICAgICAgICAgb3B0aW9ucy5pZHMgPSBbb3B0aW9ucy5uYW1lXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpbnN0YW5jZS5oZWxwZXJzLmVhY2goY29udGV4dCwgb3B0aW9ucyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gaW52ZXJzZSh0aGlzKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG9wdGlvbnMuZGF0YSAmJiBvcHRpb25zLmlkcykge1xuICAgICAgICBsZXQgZGF0YSA9IGNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7XG4gICAgICAgIGRhdGEuY29udGV4dFBhdGggPSBhcHBlbmRDb250ZXh0UGF0aChvcHRpb25zLmRhdGEuY29udGV4dFBhdGgsIG9wdGlvbnMubmFtZSk7XG4gICAgICAgIG9wdGlvbnMgPSB7ZGF0YTogZGF0YX07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmbihjb250ZXh0LCBvcHRpb25zKTtcbiAgICB9XG4gIH0pO1xufVxuIl19 |
| 1 | define(['exports', 'module', '../utils', '../exception'], function (exports, module, _utils, _exception) { | ||
| 2 | 'use strict'; | ||
| 3 | |||
| 4 | // istanbul ignore next | ||
| 5 | |||
| 6 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } | ||
| 7 | |||
| 8 | var _Exception = _interopRequireDefault(_exception); | ||
| 9 | |||
| 10 | module.exports = function (instance) { | ||
| 11 | instance.registerHelper('each', function (context, options) { | ||
| 12 | if (!options) { | ||
| 13 | throw new _Exception['default']('Must pass iterator to #each'); | ||
| 14 | } | ||
| 15 | |||
| 16 | var fn = options.fn, | ||
| 17 | inverse = options.inverse, | ||
| 18 | i = 0, | ||
| 19 | ret = '', | ||
| 20 | data = undefined, | ||
| 21 | contextPath = undefined; | ||
| 22 | |||
| 23 | if (options.data && options.ids) { | ||
| 24 | contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]) + '.'; | ||
| 25 | } | ||
| 26 | |||
| 27 | if (_utils.isFunction(context)) { | ||
| 28 | context = context.call(this); | ||
| 29 | } | ||
| 30 | |||
| 31 | if (options.data) { | ||
| 32 | data = _utils.createFrame(options.data); | ||
| 33 | } | ||
| 34 | |||
| 35 | function execIteration(field, index, last) { | ||
| 36 | if (data) { | ||
| 37 | data.key = field; | ||
| 38 | data.index = index; | ||
| 39 | data.first = index === 0; | ||
| 40 | data.last = !!last; | ||
| 41 | |||
| 42 | if (contextPath) { | ||
| 43 | data.contextPath = contextPath + field; | ||
| 44 | } | ||
| 45 | } | ||
| 46 | |||
| 47 | ret = ret + fn(context[field], { | ||
| 48 | data: data, | ||
| 49 | blockParams: _utils.blockParams([context[field], field], [contextPath + field, null]) | ||
| 50 | }); | ||
| 51 | } | ||
| 52 | |||
| 53 | if (context && typeof context === 'object') { | ||
| 54 | if (_utils.isArray(context)) { | ||
| 55 | for (var j = context.length; i < j; i++) { | ||
| 56 | if (i in context) { | ||
| 57 | execIteration(i, i, i === context.length - 1); | ||
| 58 | } | ||
| 59 | } | ||
| 60 | } else { | ||
| 61 | var priorKey = undefined; | ||
| 62 | |||
| 63 | for (var key in context) { | ||
| 64 | if (context.hasOwnProperty(key)) { | ||
| 65 | // We're running the iterations one step out of sync so we can detect | ||
| 66 | // the last iteration without have to scan the object twice and create | ||
| 67 | // an itermediate keys array. | ||
| 68 | if (priorKey !== undefined) { | ||
| 69 | execIteration(priorKey, i - 1); | ||
| 70 | } | ||
| 71 | priorKey = key; | ||
| 72 | i++; | ||
| 73 | } | ||
| 74 | } | ||
| 75 | if (priorKey !== undefined) { | ||
| 76 | execIteration(priorKey, i - 1, true); | ||
| 77 | } | ||
| 78 | } | ||
| 79 | } | ||
| 80 | |||
| 81 | if (i === 0) { | ||
| 82 | ret = inverse(this); | ||
| 83 | } | ||
| 84 | |||
| 85 | return ret; | ||
| 86 | }); | ||
| 87 | }; | ||
| 88 | }); | ||
| 89 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvZWFjaC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7bUJBR2UsVUFBUyxRQUFRLEVBQUU7QUFDaEMsWUFBUSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsVUFBUyxPQUFPLEVBQUUsT0FBTyxFQUFFO0FBQ3pELFVBQUksQ0FBQyxPQUFPLEVBQUU7QUFDWixjQUFNLDBCQUFjLDZCQUE2QixDQUFDLENBQUM7T0FDcEQ7O0FBRUQsVUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUU7VUFDZixPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU87VUFDekIsQ0FBQyxHQUFHLENBQUM7VUFDTCxHQUFHLEdBQUcsRUFBRTtVQUNSLElBQUksWUFBQTtVQUNKLFdBQVcsWUFBQSxDQUFDOztBQUVoQixVQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUMvQixtQkFBVyxHQUFHLE9BakJaLGlCQUFpQixDQWlCYSxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO09BQ2pGOztBQUVELFVBQUksT0FwQnNELFVBQVUsQ0FvQnJELE9BQU8sQ0FBQyxFQUFFO0FBQUUsZUFBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7T0FBRTs7QUFFMUQsVUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFO0FBQ2hCLFlBQUksR0FBRyxPQXZCMkIsV0FBVyxDQXVCMUIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO09BQ2xDOztBQUVELGVBQVMsYUFBYSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO0FBQ3pDLFlBQUksSUFBSSxFQUFFO0FBQ1IsY0FBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUM7QUFDakIsY0FBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDbkIsY0FBSSxDQUFDLEtBQUssR0FBRyxLQUFLLEtBQUssQ0FBQyxDQUFDO0FBQ3pCLGNBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQzs7QUFFbkIsY0FBSSxXQUFXLEVBQUU7QUFDZixnQkFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLEdBQUcsS0FBSyxDQUFDO1dBQ3hDO1NBQ0Y7O0FBRUQsV0FBRyxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQzdCLGNBQUksRUFBRSxJQUFJO0FBQ1YscUJBQVcsRUFBRSxPQXhDTSxXQUFXLENBd0NMLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsV0FBVyxHQUFHLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztTQUMvRSxDQUFDLENBQUM7T0FDSjs7QUFFRCxVQUFJLE9BQU8sSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLEVBQUU7QUFDMUMsWUFBSSxPQTdDMkMsT0FBTyxDQTZDMUMsT0FBTyxDQUFDLEVBQUU7QUFDcEIsZUFBSyxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDdkMsZ0JBQUksQ0FBQyxJQUFJLE9BQU8sRUFBRTtBQUNoQiwyQkFBYSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDL0M7V0FDRjtTQUNGLE1BQU07QUFDTCxjQUFJLFFBQVEsWUFBQSxDQUFDOztBQUViLGVBQUssSUFBSSxHQUFHLElBQUksT0FBTyxFQUFFO0FBQ3ZCLGdCQUFJLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUU7Ozs7QUFJL0Isa0JBQUksUUFBUSxLQUFLLFNBQVMsRUFBRTtBQUMxQiw2QkFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7ZUFDaEM7QUFDRCxzQkFBUSxHQUFHLEdBQUcsQ0FBQztBQUNmLGVBQUMsRUFBRSxDQUFDO2FBQ0w7V0FDRjtBQUNELGNBQUksUUFBUSxLQUFLLFNBQVMsRUFBRTtBQUMxQix5QkFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1dBQ3RDO1NBQ0Y7T0FDRjs7QUFFRCxVQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDWCxXQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO09BQ3JCOztBQUVELGFBQU8sR0FBRyxDQUFDO0tBQ1osQ0FBQyxDQUFDO0dBQ0oiLCJmaWxlIjoiZWFjaC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7YXBwZW5kQ29udGV4dFBhdGgsIGJsb2NrUGFyYW1zLCBjcmVhdGVGcmFtZSwgaXNBcnJheSwgaXNGdW5jdGlvbn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IEV4Y2VwdGlvbiBmcm9tICcuLi9leGNlcHRpb24nO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihpbnN0YW5jZSkge1xuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignZWFjaCcsIGZ1bmN0aW9uKGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgICBpZiAoIW9wdGlvbnMpIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ011c3QgcGFzcyBpdGVyYXRvciB0byAjZWFjaCcpO1xuICAgIH1cblxuICAgIGxldCBmbiA9IG9wdGlvbnMuZm4sXG4gICAgICAgIGludmVyc2UgPSBvcHRpb25zLmludmVyc2UsXG4gICAgICAgIGkgPSAwLFxuICAgICAgICByZXQgPSAnJyxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgY29udGV4dFBhdGg7XG5cbiAgICBpZiAob3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuaWRzKSB7XG4gICAgICBjb250ZXh0UGF0aCA9IGFwcGVuZENvbnRleHRQYXRoKG9wdGlvbnMuZGF0YS5jb250ZXh0UGF0aCwgb3B0aW9ucy5pZHNbMF0pICsgJy4nO1xuICAgIH1cblxuICAgIGlmIChpc0Z1bmN0aW9uKGNvbnRleHQpKSB7IGNvbnRleHQgPSBjb250ZXh0LmNhbGwodGhpcyk7IH1cblxuICAgIGlmIChvcHRpb25zLmRhdGEpIHtcbiAgICAgIGRhdGEgPSBjcmVhdGVGcmFtZShvcHRpb25zLmRhdGEpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGV4ZWNJdGVyYXRpb24oZmllbGQsIGluZGV4LCBsYXN0KSB7XG4gICAgICBpZiAoZGF0YSkge1xuICAgICAgICBkYXRhLmtleSA9IGZpZWxkO1xuICAgICAgICBkYXRhLmluZGV4ID0gaW5kZXg7XG4gICAgICAgIGRhdGEuZmlyc3QgPSBpbmRleCA9PT0gMDtcbiAgICAgICAgZGF0YS5sYXN0ID0gISFsYXN0O1xuXG4gICAgICAgIGlmIChjb250ZXh0UGF0aCkge1xuICAgICAgICAgIGRhdGEuY29udGV4dFBhdGggPSBjb250ZXh0UGF0aCArIGZpZWxkO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldCA9IHJldCArIGZuKGNvbnRleHRbZmllbGRdLCB7XG4gICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgIGJsb2NrUGFyYW1zOiBibG9ja1BhcmFtcyhbY29udGV4dFtmaWVsZF0sIGZpZWxkXSwgW2NvbnRleHRQYXRoICsgZmllbGQsIG51bGxdKVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGNvbnRleHQgJiYgdHlwZW9mIGNvbnRleHQgPT09ICdvYmplY3QnKSB7XG4gICAgICBpZiAoaXNBcnJheShjb250ZXh0KSkge1xuICAgICAgICBmb3IgKGxldCBqID0gY29udGV4dC5sZW5ndGg7IGkgPCBqOyBpKyspIHtcbiAgICAgICAgICBpZiAoaSBpbiBjb250ZXh0KSB7XG4gICAgICAgICAgICBleGVjSXRlcmF0aW9uKGksIGksIGkgPT09IGNvbnRleHQubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgcHJpb3JLZXk7XG5cbiAgICAgICAgZm9yIChsZXQga2V5IGluIGNvbnRleHQpIHtcbiAgICAgICAgICBpZiAoY29udGV4dC5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICAvLyBXZSdyZSBydW5uaW5nIHRoZSBpdGVyYXRpb25zIG9uZSBzdGVwIG91dCBvZiBzeW5jIHNvIHdlIGNhbiBkZXRlY3RcbiAgICAgICAgICAgIC8vIHRoZSBsYXN0IGl0ZXJhdGlvbiB3aXRob3V0IGhhdmUgdG8gc2NhbiB0aGUgb2JqZWN0IHR3aWNlIGFuZCBjcmVhdGVcbiAgICAgICAgICAgIC8vIGFuIGl0ZXJtZWRpYXRlIGtleXMgYXJyYXkuXG4gICAgICAgICAgICBpZiAocHJpb3JLZXkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBleGVjSXRlcmF0aW9uKHByaW9yS2V5LCBpIC0gMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwcmlvcktleSA9IGtleTtcbiAgICAgICAgICAgIGkrKztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByaW9yS2V5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBleGVjSXRlcmF0aW9uKHByaW9yS2V5LCBpIC0gMSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgcmV0ID0gaW52ZXJzZSh0aGlzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0O1xuICB9KTtcbn1cbiJdfQ== |
| 1 | define(['exports', 'module', '../exception'], function (exports, module, _exception) { | ||
| 2 | 'use strict'; | ||
| 3 | |||
| 4 | // istanbul ignore next | ||
| 5 | |||
| 6 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } | ||
| 7 | |||
| 8 | var _Exception = _interopRequireDefault(_exception); | ||
| 9 | |||
| 10 | module.exports = function (instance) { | ||
| 11 | instance.registerHelper('helperMissing', function () /* [args, ]options */{ | ||
| 12 | if (arguments.length === 1) { | ||
| 13 | // A missing field in a {{foo}} construct. | ||
| 14 | return undefined; | ||
| 15 | } else { | ||
| 16 | // Someone is actually trying to call something, blow up. | ||
| 17 | throw new _Exception['default']('Missing helper: "' + arguments[arguments.length - 1].name + '"'); | ||
| 18 | } | ||
| 19 | }); | ||
| 20 | }; | ||
| 21 | }); | ||
| 22 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvaGVscGVyLW1pc3NpbmcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O21CQUVlLFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFlBQVEsQ0FBQyxjQUFjLENBQUMsZUFBZSxFQUFFLGlDQUFnQztBQUN2RSxVQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFOztBQUUxQixlQUFPLFNBQVMsQ0FBQztPQUNsQixNQUFNOztBQUVMLGNBQU0sMEJBQWMsbUJBQW1CLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO09BQ3ZGO0tBQ0YsQ0FBQyxDQUFDO0dBQ0oiLCJmaWxlIjoiaGVscGVyLW1pc3NpbmcuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRXhjZXB0aW9uIGZyb20gJy4uL2V4Y2VwdGlvbic7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGluc3RhbmNlKSB7XG4gIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCdoZWxwZXJNaXNzaW5nJywgZnVuY3Rpb24oLyogW2FyZ3MsIF1vcHRpb25zICovKSB7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEpIHtcbiAgICAgIC8vIEEgbWlzc2luZyBmaWVsZCBpbiBhIHt7Zm9vfX0gY29uc3RydWN0LlxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gU29tZW9uZSBpcyBhY3R1YWxseSB0cnlpbmcgdG8gY2FsbCBzb21ldGhpbmcsIGJsb3cgdXAuXG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdNaXNzaW5nIGhlbHBlcjogXCInICsgYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGggLSAxXS5uYW1lICsgJ1wiJyk7XG4gICAgfVxuICB9KTtcbn1cbiJdfQ== |
| 1 | define(['exports', 'module', '../utils'], function (exports, module, _utils) { | ||
| 2 | 'use strict'; | ||
| 3 | |||
| 4 | module.exports = function (instance) { | ||
| 5 | instance.registerHelper('if', function (conditional, options) { | ||
| 6 | if (_utils.isFunction(conditional)) { | ||
| 7 | conditional = conditional.call(this); | ||
| 8 | } | ||
| 9 | |||
| 10 | // Default behavior is to render the positive path if the value is truthy and not empty. | ||
| 11 | // The `includeZero` option may be set to treat the condtional as purely not empty based on the | ||
| 12 | // behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative. | ||
| 13 | if (!options.hash.includeZero && !conditional || _utils.isEmpty(conditional)) { | ||
| 14 | return options.inverse(this); | ||
| 15 | } else { | ||
| 16 | return options.fn(this); | ||
| 17 | } | ||
| 18 | }); | ||
| 19 | |||
| 20 | instance.registerHelper('unless', function (conditional, options) { | ||
| 21 | return instance.helpers['if'].call(this, conditional, { fn: options.inverse, inverse: options.fn, hash: options.hash }); | ||
| 22 | }); | ||
| 23 | }; | ||
| 24 | }); | ||
| 25 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvaWYuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O21CQUVlLFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFlBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFVBQVMsV0FBVyxFQUFFLE9BQU8sRUFBRTtBQUMzRCxVQUFJLE9BSlMsVUFBVSxDQUlSLFdBQVcsQ0FBQyxFQUFFO0FBQUUsbUJBQVcsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO09BQUU7Ozs7O0FBS3RFLFVBQUksQUFBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsV0FBVyxJQUFLLE9BVC9DLE9BQU8sQ0FTZ0QsV0FBVyxDQUFDLEVBQUU7QUFDdkUsZUFBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO09BQzlCLE1BQU07QUFDTCxlQUFPLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7T0FDekI7S0FDRixDQUFDLENBQUM7O0FBRUgsWUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsVUFBUyxXQUFXLEVBQUUsT0FBTyxFQUFFO0FBQy9ELGFBQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQztLQUN2SCxDQUFDLENBQUM7R0FDSiIsImZpbGUiOiJpZi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aXNFbXB0eSwgaXNGdW5jdGlvbn0gZnJvbSAnLi4vdXRpbHMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihpbnN0YW5jZSkge1xuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignaWYnLCBmdW5jdGlvbihjb25kaXRpb25hbCwgb3B0aW9ucykge1xuICAgIGlmIChpc0Z1bmN0aW9uKGNvbmRpdGlvbmFsKSkgeyBjb25kaXRpb25hbCA9IGNvbmRpdGlvbmFsLmNhbGwodGhpcyk7IH1cblxuICAgIC8vIERlZmF1bHQgYmVoYXZpb3IgaXMgdG8gcmVuZGVyIHRoZSBwb3NpdGl2ZSBwYXRoIGlmIHRoZSB2YWx1ZSBpcyB0cnV0aHkgYW5kIG5vdCBlbXB0eS5cbiAgICAvLyBUaGUgYGluY2x1ZGVaZXJvYCBvcHRpb24gbWF5IGJlIHNldCB0byB0cmVhdCB0aGUgY29uZHRpb25hbCBhcyBwdXJlbHkgbm90IGVtcHR5IGJhc2VkIG9uIHRoZVxuICAgIC8vIGJlaGF2aW9yIG9mIGlzRW1wdHkuIEVmZmVjdGl2ZWx5IHRoaXMgZGV0ZXJtaW5lcyBpZiAwIGlzIGhhbmRsZWQgYnkgdGhlIHBvc2l0aXZlIHBhdGggb3IgbmVnYXRpdmUuXG4gICAgaWYgKCghb3B0aW9ucy5oYXNoLmluY2x1ZGVaZXJvICYmICFjb25kaXRpb25hbCkgfHwgaXNFbXB0eShjb25kaXRpb25hbCkpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLmludmVyc2UodGhpcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBvcHRpb25zLmZuKHRoaXMpO1xuICAgIH1cbiAgfSk7XG5cbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ3VubGVzcycsIGZ1bmN0aW9uKGNvbmRpdGlvbmFsLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIGluc3RhbmNlLmhlbHBlcnNbJ2lmJ10uY2FsbCh0aGlzLCBjb25kaXRpb25hbCwge2ZuOiBvcHRpb25zLmludmVyc2UsIGludmVyc2U6IG9wdGlvbnMuZm4sIGhhc2g6IG9wdGlvbnMuaGFzaH0pO1xuICB9KTtcbn1cbiJdfQ== |
| 1 | define(['exports', 'module'], function (exports, module) { | ||
| 2 | 'use strict'; | ||
| 3 | |||
| 4 | module.exports = function (instance) { | ||
| 5 | instance.registerHelper('log', function () /* message, options */{ | ||
| 6 | var args = [undefined], | ||
| 7 | options = arguments[arguments.length - 1]; | ||
| 8 | for (var i = 0; i < arguments.length - 1; i++) { | ||
| 9 | args.push(arguments[i]); | ||
| 10 | } | ||
| 11 | |||
| 12 | var level = 1; | ||
| 13 | if (options.hash.level != null) { | ||
| 14 | level = options.hash.level; | ||
| 15 | } else if (options.data && options.data.level != null) { | ||
| 16 | level = options.data.level; | ||
| 17 | } | ||
| 18 | args[0] = level; | ||
| 19 | |||
| 20 | instance.log.apply(instance, args); | ||
| 21 | }); | ||
| 22 | }; | ||
| 23 | }); | ||
| 24 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvbG9nLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OzttQkFBZSxVQUFTLFFBQVEsRUFBRTtBQUNoQyxZQUFRLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxrQ0FBaUM7QUFDOUQsVUFBSSxJQUFJLEdBQUcsQ0FBQyxTQUFTLENBQUM7VUFDbEIsT0FBTyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzlDLFdBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUM3QyxZQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO09BQ3pCOztBQUVELFVBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztBQUNkLFVBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFO0FBQzlCLGFBQUssR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztPQUM1QixNQUFNLElBQUksT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLEVBQUU7QUFDckQsYUFBSyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO09BQzVCO0FBQ0QsVUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQzs7QUFFaEIsY0FBUSxDQUFDLEdBQUcsTUFBQSxDQUFaLFFBQVEsRUFBUyxJQUFJLENBQUMsQ0FBQztLQUN4QixDQUFDLENBQUM7R0FDSiIsImZpbGUiOiJsb2cuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihpbnN0YW5jZSkge1xuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignbG9nJywgZnVuY3Rpb24oLyogbWVzc2FnZSwgb3B0aW9ucyAqLykge1xuICAgIGxldCBhcmdzID0gW3VuZGVmaW5lZF0sXG4gICAgICAgIG9wdGlvbnMgPSBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aCAtIDFdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgYXJncy5wdXNoKGFyZ3VtZW50c1tpXSk7XG4gICAgfVxuXG4gICAgbGV0IGxldmVsID0gMTtcbiAgICBpZiAob3B0aW9ucy5oYXNoLmxldmVsICE9IG51bGwpIHtcbiAgICAgIGxldmVsID0gb3B0aW9ucy5oYXNoLmxldmVsO1xuICAgIH0gZWxzZSBpZiAob3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuZGF0YS5sZXZlbCAhPSBudWxsKSB7XG4gICAgICBsZXZlbCA9IG9wdGlvbnMuZGF0YS5sZXZlbDtcbiAgICB9XG4gICAgYXJnc1swXSA9IGxldmVsO1xuXG4gICAgaW5zdGFuY2UubG9nKC4uLiBhcmdzKTtcbiAgfSk7XG59XG4iXX0= |
| 1 | define(['exports', 'module'], function (exports, module) { | ||
| 2 | 'use strict'; | ||
| 3 | |||
| 4 | module.exports = function (instance) { | ||
| 5 | instance.registerHelper('lookup', function (obj, field) { | ||
| 6 | return obj && obj[field]; | ||
| 7 | }); | ||
| 8 | }; | ||
| 9 | }); | ||
| 10 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvbG9va3VwLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OzttQkFBZSxVQUFTLFFBQVEsRUFBRTtBQUNoQyxZQUFRLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxVQUFTLEdBQUcsRUFBRSxLQUFLLEVBQUU7QUFDckQsYUFBTyxHQUFHLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQzFCLENBQUMsQ0FBQztHQUNKIiwiZmlsZSI6Imxvb2t1cC5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGluc3RhbmNlKSB7XG4gIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCdsb29rdXAnLCBmdW5jdGlvbihvYmosIGZpZWxkKSB7XG4gICAgcmV0dXJuIG9iaiAmJiBvYmpbZmllbGRdO1xuICB9KTtcbn1cbiJdfQ== |
| 1 | define(['exports', 'module', '../utils'], function (exports, module, _utils) { | ||
| 2 | 'use strict'; | ||
| 3 | |||
| 4 | module.exports = function (instance) { | ||
| 5 | instance.registerHelper('with', function (context, options) { | ||
| 6 | if (_utils.isFunction(context)) { | ||
| 7 | context = context.call(this); | ||
| 8 | } | ||
| 9 | |||
| 10 | var fn = options.fn; | ||
| 11 | |||
| 12 | if (!_utils.isEmpty(context)) { | ||
| 13 | var data = options.data; | ||
| 14 | if (options.data && options.ids) { | ||
| 15 | data = _utils.createFrame(options.data); | ||
| 16 | data.contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]); | ||
| 17 | } | ||
| 18 | |||
| 19 | return fn(context, { | ||
| 20 | data: data, | ||
| 21 | blockParams: _utils.blockParams([context], [data && data.contextPath]) | ||
| 22 | }); | ||
| 23 | } else { | ||
| 24 | return options.inverse(this); | ||
| 25 | } | ||
| 26 | }); | ||
| 27 | }; | ||
| 28 | }); | ||
| 29 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvd2l0aC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7bUJBRWUsVUFBUyxRQUFRLEVBQUU7QUFDaEMsWUFBUSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsVUFBUyxPQUFPLEVBQUUsT0FBTyxFQUFFO0FBQ3pELFVBQUksT0FKc0QsVUFBVSxDQUlyRCxPQUFPLENBQUMsRUFBRTtBQUFFLGVBQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO09BQUU7O0FBRTFELFVBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUM7O0FBRXBCLFVBQUksQ0FBQyxPQVI0QyxPQUFPLENBUTNDLE9BQU8sQ0FBQyxFQUFFO0FBQ3JCLFlBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7QUFDeEIsWUFBSSxPQUFPLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUU7QUFDL0IsY0FBSSxHQUFHLE9BWHlCLFdBQVcsQ0FXeEIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pDLGNBQUksQ0FBQyxXQUFXLEdBQUcsT0FabkIsaUJBQWlCLENBWW9CLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNoRjs7QUFFRCxlQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUU7QUFDakIsY0FBSSxFQUFFLElBQUk7QUFDVixxQkFBVyxFQUFFLE9BakJNLFdBQVcsQ0FpQkwsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDaEUsQ0FBQyxDQUFDO09BQ0osTUFBTTtBQUNMLGVBQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztPQUM5QjtLQUNGLENBQUMsQ0FBQztHQUNKIiwiZmlsZSI6IndpdGguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2FwcGVuZENvbnRleHRQYXRoLCBibG9ja1BhcmFtcywgY3JlYXRlRnJhbWUsIGlzRW1wdHksIGlzRnVuY3Rpb259IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ3dpdGgnLCBmdW5jdGlvbihjb250ZXh0LCBvcHRpb25zKSB7XG4gICAgaWYgKGlzRnVuY3Rpb24oY29udGV4dCkpIHsgY29udGV4dCA9IGNvbnRleHQuY2FsbCh0aGlzKTsgfVxuXG4gICAgbGV0IGZuID0gb3B0aW9ucy5mbjtcblxuICAgIGlmICghaXNFbXB0eShjb250ZXh0KSkge1xuICAgICAgbGV0IGRhdGEgPSBvcHRpb25zLmRhdGE7XG4gICAgICBpZiAob3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuaWRzKSB7XG4gICAgICAgIGRhdGEgPSBjcmVhdGVGcmFtZShvcHRpb25zLmRhdGEpO1xuICAgICAgICBkYXRhLmNvbnRleHRQYXRoID0gYXBwZW5kQ29udGV4dFBhdGgob3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoLCBvcHRpb25zLmlkc1swXSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmbihjb250ZXh0LCB7XG4gICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgIGJsb2NrUGFyYW1zOiBibG9ja1BhcmFtcyhbY29udGV4dF0sIFtkYXRhICYmIGRhdGEuY29udGV4dFBhdGhdKVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBvcHRpb25zLmludmVyc2UodGhpcyk7XG4gICAgfVxuICB9KTtcbn1cbiJdfQ== |
| 1 | define(['exports', 'module', './utils'], function (exports, module, _utils) { | ||
| 2 | 'use strict'; | ||
| 3 | |||
| 4 | var logger = { | ||
| 5 | methodMap: ['debug', 'info', 'warn', 'error'], | ||
| 6 | level: 'info', | ||
| 7 | |||
| 8 | // Maps a given level value to the `methodMap` indexes above. | ||
| 9 | lookupLevel: function lookupLevel(level) { | ||
| 10 | if (typeof level === 'string') { | ||
| 11 | var levelMap = _utils.indexOf(logger.methodMap, level.toLowerCase()); | ||
| 12 | if (levelMap >= 0) { | ||
| 13 | level = levelMap; | ||
| 14 | } else { | ||
| 15 | level = parseInt(level, 10); | ||
| 16 | } | ||
| 17 | } | ||
| 18 | |||
| 19 | return level; | ||
| 20 | }, | ||
| 21 | |||
| 22 | // Can be overridden in the host environment | ||
| 23 | log: function log(level) { | ||
| 24 | level = logger.lookupLevel(level); | ||
| 25 | |||
| 26 | if (typeof console !== 'undefined' && logger.lookupLevel(logger.level) <= level) { | ||
| 27 | var method = logger.methodMap[level]; | ||
| 28 | if (!console[method]) { | ||
| 29 | // eslint-disable-line no-console | ||
| 30 | method = 'log'; | ||
| 31 | } | ||
| 32 | |||
| 33 | for (var _len = arguments.length, message = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { | ||
| 34 | message[_key - 1] = arguments[_key]; | ||
| 35 | } | ||
| 36 | |||
| 37 | console[method].apply(console, message); // eslint-disable-line no-console | ||
| 38 | } | ||
| 39 | } | ||
| 40 | }; | ||
| 41 | |||
| 42 | module.exports = logger; | ||
| 43 | }); | ||
| 44 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2xvZ2dlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxNQUFJLE1BQU0sR0FBRztBQUNYLGFBQVMsRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQztBQUM3QyxTQUFLLEVBQUUsTUFBTTs7O0FBR2IsZUFBVyxFQUFFLHFCQUFTLEtBQUssRUFBRTtBQUMzQixVQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtBQUM3QixZQUFJLFFBQVEsR0FBRyxPQVRiLE9BQU8sQ0FTYyxNQUFNLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0FBQzlELFlBQUksUUFBUSxJQUFJLENBQUMsRUFBRTtBQUNqQixlQUFLLEdBQUcsUUFBUSxDQUFDO1NBQ2xCLE1BQU07QUFDTCxlQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztTQUM3QjtPQUNGOztBQUVELGFBQU8sS0FBSyxDQUFDO0tBQ2Q7OztBQUdELE9BQUcsRUFBRSxhQUFTLEtBQUssRUFBYztBQUMvQixXQUFLLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQzs7QUFFbEMsVUFBSSxPQUFPLE9BQU8sS0FBSyxXQUFXLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxFQUFFO0FBQy9FLFlBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDckMsWUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTs7QUFDcEIsZ0JBQU0sR0FBRyxLQUFLLENBQUM7U0FDaEI7OzBDQVBtQixPQUFPO0FBQVAsaUJBQU87OztBQVEzQixlQUFPLENBQUMsTUFBTSxPQUFDLENBQWYsT0FBTyxFQUFZLE9BQU8sQ0FBQyxDQUFDO09BQzdCO0tBQ0Y7R0FDRixDQUFDOzttQkFFYSxNQUFNIiwiZmlsZSI6ImxvZ2dlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aW5kZXhPZn0gZnJvbSAnLi91dGlscyc7XG5cbmxldCBsb2dnZXIgPSB7XG4gIG1ldGhvZE1hcDogWydkZWJ1ZycsICdpbmZvJywgJ3dhcm4nLCAnZXJyb3InXSxcbiAgbGV2ZWw6ICdpbmZvJyxcblxuICAvLyBNYXBzIGEgZ2l2ZW4gbGV2ZWwgdmFsdWUgdG8gdGhlIGBtZXRob2RNYXBgIGluZGV4ZXMgYWJvdmUuXG4gIGxvb2t1cExldmVsOiBmdW5jdGlvbihsZXZlbCkge1xuICAgIGlmICh0eXBlb2YgbGV2ZWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICBsZXQgbGV2ZWxNYXAgPSBpbmRleE9mKGxvZ2dlci5tZXRob2RNYXAsIGxldmVsLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgaWYgKGxldmVsTWFwID49IDApIHtcbiAgICAgICAgbGV2ZWwgPSBsZXZlbE1hcDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldmVsID0gcGFyc2VJbnQobGV2ZWwsIDEwKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbGV2ZWw7XG4gIH0sXG5cbiAgLy8gQ2FuIGJlIG92ZXJyaWRkZW4gaW4gdGhlIGhvc3QgZW52aXJvbm1lbnRcbiAgbG9nOiBmdW5jdGlvbihsZXZlbCwgLi4ubWVzc2FnZSkge1xuICAgIGxldmVsID0gbG9nZ2VyLmxvb2t1cExldmVsKGxldmVsKTtcblxuICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbG9nZ2VyLmxvb2t1cExldmVsKGxvZ2dlci5sZXZlbCkgPD0gbGV2ZWwpIHtcbiAgICAgIGxldCBtZXRob2QgPSBsb2dnZXIubWV0aG9kTWFwW2xldmVsXTtcbiAgICAgIGlmICghY29uc29sZVttZXRob2RdKSB7ICAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG4gICAgICAgIG1ldGhvZCA9ICdsb2cnO1xuICAgICAgfVxuICAgICAgY29uc29sZVttZXRob2RdKC4uLm1lc3NhZ2UpOyAgICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGVcbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IGxvZ2dlcjtcbiJdfQ== |
| 1 | define(['exports', 'module'], function (exports, module) { | ||
| 2 | /* global window */ | ||
| 3 | 'use strict'; | ||
| 4 | |||
| 5 | module.exports = function (Handlebars) { | ||
| 6 | /* istanbul ignore next */ | ||
| 7 | var root = typeof global !== 'undefined' ? global : window, | ||
| 8 | $Handlebars = root.Handlebars; | ||
| 9 | /* istanbul ignore next */ | ||
| 10 | Handlebars.noConflict = function () { | ||
| 11 | if (root.Handlebars === Handlebars) { | ||
| 12 | root.Handlebars = $Handlebars; | ||
| 13 | } | ||
| 14 | return Handlebars; | ||
| 15 | }; | ||
| 16 | }; | ||
| 17 | }); | ||
| 18 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL25vLWNvbmZsaWN0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7bUJBQ2UsVUFBUyxVQUFVLEVBQUU7O0FBRWxDLFFBQUksSUFBSSxHQUFHLE9BQU8sTUFBTSxLQUFLLFdBQVcsR0FBRyxNQUFNLEdBQUcsTUFBTTtRQUN0RCxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQzs7QUFFbEMsY0FBVSxDQUFDLFVBQVUsR0FBRyxZQUFXO0FBQ2pDLFVBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxVQUFVLEVBQUU7QUFDbEMsWUFBSSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUM7T0FDL0I7QUFDRCxhQUFPLFVBQVUsQ0FBQztLQUNuQixDQUFDO0dBQ0giLCJmaWxlIjoibm8tY29uZmxpY3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBnbG9iYWwgd2luZG93ICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihIYW5kbGViYXJzKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGxldCByb290ID0gdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgPyBnbG9iYWwgOiB3aW5kb3csXG4gICAgICAkSGFuZGxlYmFycyA9IHJvb3QuSGFuZGxlYmFycztcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgSGFuZGxlYmFycy5ub0NvbmZsaWN0ID0gZnVuY3Rpb24oKSB7XG4gICAgaWYgKHJvb3QuSGFuZGxlYmFycyA9PT0gSGFuZGxlYmFycykge1xuICAgICAgcm9vdC5IYW5kbGViYXJzID0gJEhhbmRsZWJhcnM7XG4gICAgfVxuICAgIHJldHVybiBIYW5kbGViYXJzO1xuICB9O1xufVxuIl19 |
| 1 | define(['exports', './utils', './exception', './base'], function (exports, _utils, _exception, _base) { | ||
| 2 | 'use strict'; | ||
| 3 | |||
| 4 | exports.__esModule = true; | ||
| 5 | exports.checkRevision = checkRevision; | ||
| 6 | exports.template = template; | ||
| 7 | exports.wrapProgram = wrapProgram; | ||
| 8 | exports.resolvePartial = resolvePartial; | ||
| 9 | exports.invokePartial = invokePartial; | ||
| 10 | exports.noop = noop; | ||
| 11 | // istanbul ignore next | ||
| 12 | |||
| 13 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } | ||
| 14 | |||
| 15 | var _Exception = _interopRequireDefault(_exception); | ||
| 16 | |||
| 17 | function checkRevision(compilerInfo) { | ||
| 18 | var compilerRevision = compilerInfo && compilerInfo[0] || 1, | ||
| 19 | currentRevision = _base.COMPILER_REVISION; | ||
| 20 | |||
| 21 | if (compilerRevision !== currentRevision) { | ||
| 22 | if (compilerRevision < currentRevision) { | ||
| 23 | var runtimeVersions = _base.REVISION_CHANGES[currentRevision], | ||
| 24 | compilerVersions = _base.REVISION_CHANGES[compilerRevision]; | ||
| 25 | throw new _Exception['default']('Template was precompiled with an older version of Handlebars than the current runtime. ' + 'Please update your precompiler to a newer version (' + runtimeVersions + ') or downgrade your runtime to an older version (' + compilerVersions + ').'); | ||
| 26 | } else { | ||
| 27 | // Use the embedded version info since the runtime doesn't know about this revision yet | ||
| 28 | throw new _Exception['default']('Template was precompiled with a newer version of Handlebars than the current runtime. ' + 'Please update your runtime to a newer version (' + compilerInfo[1] + ').'); | ||
| 29 | } | ||
| 30 | } | ||
| 31 | } | ||
| 32 | |||
| 33 | function template(templateSpec, env) { | ||
| 34 | /* istanbul ignore next */ | ||
| 35 | if (!env) { | ||
| 36 | throw new _Exception['default']('No environment passed to template'); | ||
| 37 | } | ||
| 38 | if (!templateSpec || !templateSpec.main) { | ||
| 39 | throw new _Exception['default']('Unknown template object: ' + typeof templateSpec); | ||
| 40 | } | ||
| 41 | |||
| 42 | templateSpec.main.decorator = templateSpec.main_d; | ||
| 43 | |||
| 44 | // Note: Using env.VM references rather than local var references throughout this section to allow | ||
| 45 | // for external users to override these as psuedo-supported APIs. | ||
| 46 | env.VM.checkRevision(templateSpec.compiler); | ||
| 47 | |||
| 48 | function invokePartialWrapper(partial, context, options) { | ||
| 49 | if (options.hash) { | ||
| 50 | context = _utils.extend({}, context, options.hash); | ||
| 51 | if (options.ids) { | ||
| 52 | options.ids[0] = true; | ||
| 53 | } | ||
| 54 | } | ||
| 55 | |||
| 56 | partial = env.VM.resolvePartial.call(this, partial, context, options); | ||
| 57 | var result = env.VM.invokePartial.call(this, partial, context, options); | ||
| 58 | |||
| 59 | if (result == null && env.compile) { | ||
| 60 | options.partials[options.name] = env.compile(partial, templateSpec.compilerOptions, env); | ||
| 61 | result = options.partials[options.name](context, options); | ||
| 62 | } | ||
| 63 | if (result != null) { | ||
| 64 | if (options.indent) { | ||
| 65 | var lines = result.split('\n'); | ||
| 66 | for (var i = 0, l = lines.length; i < l; i++) { | ||
| 67 | if (!lines[i] && i + 1 === l) { | ||
| 68 | break; | ||
| 69 | } | ||
| 70 | |||
| 71 | lines[i] = options.indent + lines[i]; | ||
| 72 | } | ||
| 73 | result = lines.join('\n'); | ||
| 74 | } | ||
| 75 | return result; | ||
| 76 | } else { | ||
| 77 | throw new _Exception['default']('The partial ' + options.name + ' could not be compiled when running in runtime-only mode'); | ||
| 78 | } | ||
| 79 | } | ||
| 80 | |||
| 81 | // Just add water | ||
| 82 | var container = { | ||
| 83 | strict: function strict(obj, name) { | ||
| 84 | if (!(name in obj)) { | ||
| 85 | throw new _Exception['default']('"' + name + '" not defined in ' + obj); | ||
| 86 | } | ||
| 87 | return obj[name]; | ||
| 88 | }, | ||
| 89 | lookup: function lookup(depths, name) { | ||
| 90 | var len = depths.length; | ||
| 91 | for (var i = 0; i < len; i++) { | ||
| 92 | if (depths[i] && depths[i][name] != null) { | ||
| 93 | return depths[i][name]; | ||
| 94 | } | ||
| 95 | } | ||
| 96 | }, | ||
| 97 | lambda: function lambda(current, context) { | ||
| 98 | return typeof current === 'function' ? current.call(context) : current; | ||
| 99 | }, | ||
| 100 | |||
| 101 | escapeExpression: _utils.escapeExpression, | ||
| 102 | invokePartial: invokePartialWrapper, | ||
| 103 | |||
| 104 | fn: function fn(i) { | ||
| 105 | var ret = templateSpec[i]; | ||
| 106 | ret.decorator = templateSpec[i + '_d']; | ||
| 107 | return ret; | ||
| 108 | }, | ||
| 109 | |||
| 110 | programs: [], | ||
| 111 | program: function program(i, data, declaredBlockParams, blockParams, depths) { | ||
| 112 | var programWrapper = this.programs[i], | ||
| 113 | fn = this.fn(i); | ||
| 114 | if (data || depths || blockParams || declaredBlockParams) { | ||
| 115 | programWrapper = wrapProgram(this, i, fn, data, declaredBlockParams, blockParams, depths); | ||
| 116 | } else if (!programWrapper) { | ||
| 117 | programWrapper = this.programs[i] = wrapProgram(this, i, fn); | ||
| 118 | } | ||
| 119 | return programWrapper; | ||
| 120 | }, | ||
| 121 | |||
| 122 | data: function data(value, depth) { | ||
| 123 | while (value && depth--) { | ||
| 124 | value = value._parent; | ||
| 125 | } | ||
| 126 | return value; | ||
| 127 | }, | ||
| 128 | merge: function merge(param, common) { | ||
| 129 | var obj = param || common; | ||
| 130 | |||
| 131 | if (param && common && param !== common) { | ||
| 132 | obj = _utils.extend({}, common, param); | ||
| 133 | } | ||
| 134 | |||
| 135 | return obj; | ||
| 136 | }, | ||
| 137 | // An empty object to use as replacement for null-contexts | ||
| 138 | nullContext: Object.seal({}), | ||
| 139 | |||
| 140 | noop: env.VM.noop, | ||
| 141 | compilerInfo: templateSpec.compiler | ||
| 142 | }; | ||
| 143 | |||
| 144 | function ret(context) { | ||
| 145 | var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; | ||
| 146 | |||
| 147 | var data = options.data; | ||
| 148 | |||
| 149 | ret._setup(options); | ||
| 150 | if (!options.partial && templateSpec.useData) { | ||
| 151 | data = initData(context, data); | ||
| 152 | } | ||
| 153 | var depths = undefined, | ||
| 154 | blockParams = templateSpec.useBlockParams ? [] : undefined; | ||
| 155 | if (templateSpec.useDepths) { | ||
| 156 | if (options.depths) { | ||
| 157 | depths = context != options.depths[0] ? [context].concat(options.depths) : options.depths; | ||
| 158 | } else { | ||
| 159 | depths = [context]; | ||
| 160 | } | ||
| 161 | } | ||
| 162 | |||
| 163 | function main(context /*, options*/) { | ||
| 164 | return '' + templateSpec.main(container, context, container.helpers, container.partials, data, blockParams, depths); | ||
| 165 | } | ||
| 166 | main = executeDecorators(templateSpec.main, main, container, options.depths || [], data, blockParams); | ||
| 167 | return main(context, options); | ||
| 168 | } | ||
| 169 | ret.isTop = true; | ||
| 170 | |||
| 171 | ret._setup = function (options) { | ||
| 172 | if (!options.partial) { | ||
| 173 | container.helpers = container.merge(options.helpers, env.helpers); | ||
| 174 | |||
| 175 | if (templateSpec.usePartial) { | ||
| 176 | container.partials = container.merge(options.partials, env.partials); | ||
| 177 | } | ||
| 178 | if (templateSpec.usePartial || templateSpec.useDecorators) { | ||
| 179 | container.decorators = container.merge(options.decorators, env.decorators); | ||
| 180 | } | ||
| 181 | } else { | ||
| 182 | container.helpers = options.helpers; | ||
| 183 | container.partials = options.partials; | ||
| 184 | container.decorators = options.decorators; | ||
| 185 | } | ||
| 186 | }; | ||
| 187 | |||
| 188 | ret._child = function (i, data, blockParams, depths) { | ||
| 189 | if (templateSpec.useBlockParams && !blockParams) { | ||
| 190 | throw new _Exception['default']('must pass block params'); | ||
| 191 | } | ||
| 192 | if (templateSpec.useDepths && !depths) { | ||
| 193 | throw new _Exception['default']('must pass parent depths'); | ||
| 194 | } | ||
| 195 | |||
| 196 | return wrapProgram(container, i, templateSpec[i], data, 0, blockParams, depths); | ||
| 197 | }; | ||
| 198 | return ret; | ||
| 199 | } | ||
| 200 | |||
| 201 | function wrapProgram(container, i, fn, data, declaredBlockParams, blockParams, depths) { | ||
| 202 | function prog(context) { | ||
| 203 | var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; | ||
| 204 | |||
| 205 | var currentDepths = depths; | ||
| 206 | if (depths && context != depths[0] && !(context === container.nullContext && depths[0] === null)) { | ||
| 207 | currentDepths = [context].concat(depths); | ||
| 208 | } | ||
| 209 | |||
| 210 | return fn(container, context, container.helpers, container.partials, options.data || data, blockParams && [options.blockParams].concat(blockParams), currentDepths); | ||
| 211 | } | ||
| 212 | |||
| 213 | prog = executeDecorators(fn, prog, container, depths, data, blockParams); | ||
| 214 | |||
| 215 | prog.program = i; | ||
| 216 | prog.depth = depths ? depths.length : 0; | ||
| 217 | prog.blockParams = declaredBlockParams || 0; | ||
| 218 | return prog; | ||
| 219 | } | ||
| 220 | |||
| 221 | function resolvePartial(partial, context, options) { | ||
| 222 | if (!partial) { | ||
| 223 | if (options.name === '@partial-block') { | ||
| 224 | partial = options.data['partial-block']; | ||
| 225 | } else { | ||
| 226 | partial = options.partials[options.name]; | ||
| 227 | } | ||
| 228 | } else if (!partial.call && !options.name) { | ||
| 229 | // This is a dynamic partial that returned a string | ||
| 230 | options.name = partial; | ||
| 231 | partial = options.partials[partial]; | ||
| 232 | } | ||
| 233 | return partial; | ||
| 234 | } | ||
| 235 | |||
| 236 | function invokePartial(partial, context, options) { | ||
| 237 | // Use the current closure context to save the partial-block if this partial | ||
| 238 | var currentPartialBlock = options.data && options.data['partial-block']; | ||
| 239 | options.partial = true; | ||
| 240 | if (options.ids) { | ||
| 241 | options.data.contextPath = options.ids[0] || options.data.contextPath; | ||
| 242 | } | ||
| 243 | |||
| 244 | var partialBlock = undefined; | ||
| 245 | if (options.fn && options.fn !== noop) { | ||
| 246 | (function () { | ||
| 247 | options.data = _base.createFrame(options.data); | ||
| 248 | // Wrapper function to get access to currentPartialBlock from the closure | ||
| 249 | var fn = options.fn; | ||
| 250 | partialBlock = options.data['partial-block'] = function partialBlockWrapper(context) { | ||
| 251 | var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; | ||
| 252 | |||
| 253 | // Restore the partial-block from the closure for the execution of the block | ||
| 254 | // i.e. the part inside the block of the partial call. | ||
| 255 | options.data = _base.createFrame(options.data); | ||
| 256 | options.data['partial-block'] = currentPartialBlock; | ||
| 257 | return fn(context, options); | ||
| 258 | }; | ||
| 259 | if (fn.partials) { | ||
| 260 | options.partials = _utils.extend({}, options.partials, fn.partials); | ||
| 261 | } | ||
| 262 | })(); | ||
| 263 | } | ||
| 264 | |||
| 265 | if (partial === undefined && partialBlock) { | ||
| 266 | partial = partialBlock; | ||
| 267 | } | ||
| 268 | |||
| 269 | if (partial === undefined) { | ||
| 270 | throw new _Exception['default']('The partial ' + options.name + ' could not be found'); | ||
| 271 | } else if (partial instanceof Function) { | ||
| 272 | return partial(context, options); | ||
| 273 | } | ||
| 274 | } | ||
| 275 | |||
| 276 | function noop() { | ||
| 277 | return ''; | ||
| 278 | } | ||
| 279 | |||
| 280 | function initData(context, data) { | ||
| 281 | if (!data || !('root' in data)) { | ||
| 282 | data = data ? _base.createFrame(data) : {}; | ||
| 283 | data.root = context; | ||
| 284 | } | ||
| 285 | return data; | ||
| 286 | } | ||
| 287 | |||
| 288 | function executeDecorators(fn, prog, container, depths, data, blockParams) { | ||
| 289 | if (fn.decorator) { | ||
| 290 | var props = {}; | ||
| 291 | prog = fn.decorator(prog, props, container, depths && depths[0], data, blockParams, depths); | ||
| 292 | _utils.extend(prog, props); | ||
| 293 | } | ||
| 294 | return prog; | ||
| 295 | } | ||
| 296 | }); | ||
| 297 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3J1bnRpbWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUlPLFdBQVMsYUFBYSxDQUFDLFlBQVksRUFBRTtBQUMxQyxRQUFNLGdCQUFnQixHQUFHLFlBQVksSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUN2RCxlQUFlLFNBSmQsaUJBQWlCLEFBSWlCLENBQUM7O0FBRTFDLFFBQUksZ0JBQWdCLEtBQUssZUFBZSxFQUFFO0FBQ3hDLFVBQUksZ0JBQWdCLEdBQUcsZUFBZSxFQUFFO0FBQ3RDLFlBQU0sZUFBZSxHQUFHLE1BUkYsZ0JBQWdCLENBUUcsZUFBZSxDQUFDO1lBQ25ELGdCQUFnQixHQUFHLE1BVEgsZ0JBQWdCLENBU0ksZ0JBQWdCLENBQUMsQ0FBQztBQUM1RCxjQUFNLDBCQUFjLHlGQUF5RixHQUN2RyxxREFBcUQsR0FBRyxlQUFlLEdBQUcsbURBQW1ELEdBQUcsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLENBQUM7T0FDaEssTUFBTTs7QUFFTCxjQUFNLDBCQUFjLHdGQUF3RixHQUN0RyxpREFBaUQsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7T0FDbkY7S0FDRjtHQUNGOztBQUVNLFdBQVMsUUFBUSxDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUU7O0FBRTFDLFFBQUksQ0FBQyxHQUFHLEVBQUU7QUFDUixZQUFNLDBCQUFjLG1DQUFtQyxDQUFDLENBQUM7S0FDMUQ7QUFDRCxRQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRTtBQUN2QyxZQUFNLDBCQUFjLDJCQUEyQixHQUFHLE9BQU8sWUFBWSxDQUFDLENBQUM7S0FDeEU7O0FBRUQsZ0JBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUM7Ozs7QUFJbEQsT0FBRyxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDOztBQUU1QyxhQUFTLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFO0FBQ3ZELFVBQUksT0FBTyxDQUFDLElBQUksRUFBRTtBQUNoQixlQUFPLEdBQUcsT0FBTSxNQUFNLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbEQsWUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFO0FBQ2YsaUJBQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO1NBQ3ZCO09BQ0Y7O0FBRUQsYUFBTyxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztBQUN0RSxVQUFJLE1BQU0sR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7O0FBRXhFLFVBQUksTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFO0FBQ2pDLGVBQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxlQUFlLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDekYsY0FBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztPQUMzRDtBQUNELFVBQUksTUFBTSxJQUFJLElBQUksRUFBRTtBQUNsQixZQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUU7QUFDbEIsY0FBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMvQixlQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzVDLGdCQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQzVCLG9CQUFNO2FBQ1A7O0FBRUQsaUJBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztXQUN0QztBQUNELGdCQUFNLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMzQjtBQUNELGVBQU8sTUFBTSxDQUFDO09BQ2YsTUFBTTtBQUNMLGNBQU0sMEJBQWMsY0FBYyxHQUFHLE9BQU8sQ0FBQyxJQUFJLEdBQUcsMERBQTBELENBQUMsQ0FBQztPQUNqSDtLQUNGOzs7QUFHRCxRQUFJLFNBQVMsR0FBRztBQUNkLFlBQU0sRUFBRSxnQkFBUyxHQUFHLEVBQUUsSUFBSSxFQUFFO0FBQzFCLFlBQUksRUFBRSxJQUFJLElBQUksR0FBRyxDQUFBLEFBQUMsRUFBRTtBQUNsQixnQkFBTSwwQkFBYyxHQUFHLEdBQUcsSUFBSSxHQUFHLG1CQUFtQixHQUFHLEdBQUcsQ0FBQyxDQUFDO1NBQzdEO0FBQ0QsZUFBTyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7T0FDbEI7QUFDRCxZQUFNLEVBQUUsZ0JBQVMsTUFBTSxFQUFFLElBQUksRUFBRTtBQUM3QixZQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0FBQzFCLGFBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDNUIsY0FBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRTtBQUN4QyxtQkFBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7V0FDeEI7U0FDRjtPQUNGO0FBQ0QsWUFBTSxFQUFFLGdCQUFTLE9BQU8sRUFBRSxPQUFPLEVBQUU7QUFDakMsZUFBTyxPQUFPLE9BQU8sS0FBSyxVQUFVLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxPQUFPLENBQUM7T0FDeEU7O0FBRUQsc0JBQWdCLEVBQUUsT0FBTSxnQkFBZ0I7QUFDeEMsbUJBQWEsRUFBRSxvQkFBb0I7O0FBRW5DLFFBQUUsRUFBRSxZQUFTLENBQUMsRUFBRTtBQUNkLFlBQUksR0FBRyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxQixXQUFHLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDdkMsZUFBTyxHQUFHLENBQUM7T0FDWjs7QUFFRCxjQUFRLEVBQUUsRUFBRTtBQUNaLGFBQU8sRUFBRSxpQkFBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUU7QUFDbkUsWUFBSSxjQUFjLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDakMsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEIsWUFBSSxJQUFJLElBQUksTUFBTSxJQUFJLFdBQVcsSUFBSSxtQkFBbUIsRUFBRTtBQUN4RCx3QkFBYyxHQUFHLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQzNGLE1BQU0sSUFBSSxDQUFDLGNBQWMsRUFBRTtBQUMxQix3QkFBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDOUQ7QUFDRCxlQUFPLGNBQWMsQ0FBQztPQUN2Qjs7QUFFRCxVQUFJLEVBQUUsY0FBUyxLQUFLLEVBQUUsS0FBSyxFQUFFO0FBQzNCLGVBQU8sS0FBSyxJQUFJLEtBQUssRUFBRSxFQUFFO0FBQ3ZCLGVBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1NBQ3ZCO0FBQ0QsZUFBTyxLQUFLLENBQUM7T0FDZDtBQUNELFdBQUssRUFBRSxlQUFTLEtBQUssRUFBRSxNQUFNLEVBQUU7QUFDN0IsWUFBSSxHQUFHLEdBQUcsS0FBSyxJQUFJLE1BQU0sQ0FBQzs7QUFFMUIsWUFBSSxLQUFLLElBQUksTUFBTSxJQUFLLEtBQUssS0FBSyxNQUFNLEFBQUMsRUFBRTtBQUN6QyxhQUFHLEdBQUcsT0FBTSxNQUFNLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztTQUN2Qzs7QUFFRCxlQUFPLEdBQUcsQ0FBQztPQUNaOztBQUVELGlCQUFXLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7O0FBRTVCLFVBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUk7QUFDakIsa0JBQVksRUFBRSxZQUFZLENBQUMsUUFBUTtLQUNwQyxDQUFDOztBQUVGLGFBQVMsR0FBRyxDQUFDLE9BQU8sRUFBZ0I7VUFBZCxPQUFPLHlEQUFHLEVBQUU7O0FBQ2hDLFVBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7O0FBRXhCLFNBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDcEIsVUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksWUFBWSxDQUFDLE9BQU8sRUFBRTtBQUM1QyxZQUFJLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztPQUNoQztBQUNELFVBQUksTUFBTSxZQUFBO1VBQ04sV0FBVyxHQUFHLFlBQVksQ0FBQyxjQUFjLEdBQUcsRUFBRSxHQUFHLFNBQVMsQ0FBQztBQUMvRCxVQUFJLFlBQVksQ0FBQyxTQUFTLEVBQUU7QUFDMUIsWUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO0FBQ2xCLGdCQUFNLEdBQUcsT0FBTyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7U0FDM0YsTUFBTTtBQUNMLGdCQUFNLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNwQjtPQUNGOztBQUVELGVBQVMsSUFBSSxDQUFDLE9BQU8sZ0JBQWU7QUFDbEMsZUFBTyxFQUFFLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO09BQ3JIO0FBQ0QsVUFBSSxHQUFHLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsTUFBTSxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDdEcsYUFBTyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQy9CO0FBQ0QsT0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7O0FBRWpCLE9BQUcsQ0FBQyxNQUFNLEdBQUcsVUFBUyxPQUFPLEVBQUU7QUFDN0IsVUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUU7QUFDcEIsaUJBQVMsQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQzs7QUFFbEUsWUFBSSxZQUFZLENBQUMsVUFBVSxFQUFFO0FBQzNCLG1CQUFTLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDdEU7QUFDRCxZQUFJLFlBQVksQ0FBQyxVQUFVLElBQUksWUFBWSxDQUFDLGFBQWEsRUFBRTtBQUN6RCxtQkFBUyxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQzVFO09BQ0YsTUFBTTtBQUNMLGlCQUFTLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7QUFDcEMsaUJBQVMsQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztBQUN0QyxpQkFBUyxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO09BQzNDO0tBQ0YsQ0FBQzs7QUFFRixPQUFHLENBQUMsTUFBTSxHQUFHLFVBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFO0FBQ2xELFVBQUksWUFBWSxDQUFDLGNBQWMsSUFBSSxDQUFDLFdBQVcsRUFBRTtBQUMvQyxjQUFNLDBCQUFjLHdCQUF3QixDQUFDLENBQUM7T0FDL0M7QUFDRCxVQUFJLFlBQVksQ0FBQyxTQUFTLElBQUksQ0FBQyxNQUFNLEVBQUU7QUFDckMsY0FBTSwwQkFBYyx5QkFBeUIsQ0FBQyxDQUFDO09BQ2hEOztBQUVELGFBQU8sV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQ2pGLENBQUM7QUFDRixXQUFPLEdBQUcsQ0FBQztHQUNaOztBQUVNLFdBQVMsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFO0FBQzVGLGFBQVMsSUFBSSxDQUFDLE9BQU8sRUFBZ0I7VUFBZCxPQUFPLHlEQUFHLEVBQUU7O0FBQ2pDLFVBQUksYUFBYSxHQUFHLE1BQU0sQ0FBQztBQUMzQixVQUFJLE1BQU0sSUFBSSxPQUFPLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxLQUFLLFNBQVMsQ0FBQyxXQUFXLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQSxBQUFDLEVBQUU7QUFDaEcscUJBQWEsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztPQUMxQzs7QUFFRCxhQUFPLEVBQUUsQ0FBQyxTQUFTLEVBQ2YsT0FBTyxFQUNQLFNBQVMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLFFBQVEsRUFDckMsT0FBTyxDQUFDLElBQUksSUFBSSxJQUFJLEVBQ3BCLFdBQVcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQ3hELGFBQWEsQ0FBQyxDQUFDO0tBQ3BCOztBQUVELFFBQUksR0FBRyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDOztBQUV6RSxRQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztBQUNqQixRQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUN4QyxRQUFJLENBQUMsV0FBVyxHQUFHLG1CQUFtQixJQUFJLENBQUMsQ0FBQztBQUM1QyxXQUFPLElBQUksQ0FBQztHQUNiOztBQUVNLFdBQVMsY0FBYyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFO0FBQ3hELFFBQUksQ0FBQyxPQUFPLEVBQUU7QUFDWixVQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssZ0JBQWdCLEVBQUU7QUFDckMsZUFBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7T0FDekMsTUFBTTtBQUNMLGVBQU8sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztPQUMxQztLQUNGLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFOztBQUV6QyxhQUFPLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQztBQUN2QixhQUFPLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztLQUNyQztBQUNELFdBQU8sT0FBTyxDQUFDO0dBQ2hCOztBQUVNLFdBQVMsYUFBYSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFOztBQUV2RCxRQUFNLG1CQUFtQixHQUFHLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUMxRSxXQUFPLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztBQUN2QixRQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUU7QUFDZixhQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO0tBQ3ZFOztBQUVELFFBQUksWUFBWSxZQUFBLENBQUM7QUFDakIsUUFBSSxPQUFPLENBQUMsRUFBRSxJQUFJLE9BQU8sQ0FBQyxFQUFFLEtBQUssSUFBSSxFQUFFOztBQUNyQyxlQUFPLENBQUMsSUFBSSxHQUFHLE1BMU8yQixXQUFXLENBME8xQixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7O0FBRXpDLFlBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUM7QUFDcEIsb0JBQVksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLFNBQVMsbUJBQW1CLENBQUMsT0FBTyxFQUFnQjtjQUFkLE9BQU8seURBQUcsRUFBRTs7OztBQUkvRixpQkFBTyxDQUFDLElBQUksR0FBRyxNQWpQeUIsV0FBVyxDQWlQeEIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3pDLGlCQUFPLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLG1CQUFtQixDQUFDO0FBQ3BELGlCQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7U0FDN0IsQ0FBQztBQUNGLFlBQUksRUFBRSxDQUFDLFFBQVEsRUFBRTtBQUNmLGlCQUFPLENBQUMsUUFBUSxHQUFHLE9BQU0sTUFBTSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNwRTs7S0FDRjs7QUFFRCxRQUFJLE9BQU8sS0FBSyxTQUFTLElBQUksWUFBWSxFQUFFO0FBQ3pDLGFBQU8sR0FBRyxZQUFZLENBQUM7S0FDeEI7O0FBRUQsUUFBSSxPQUFPLEtBQUssU0FBUyxFQUFFO0FBQ3pCLFlBQU0sMEJBQWMsY0FBYyxHQUFHLE9BQU8sQ0FBQyxJQUFJLEdBQUcscUJBQXFCLENBQUMsQ0FBQztLQUM1RSxNQUFNLElBQUksT0FBTyxZQUFZLFFBQVEsRUFBRTtBQUN0QyxhQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDbEM7R0FDRjs7QUFFTSxXQUFTLElBQUksR0FBRztBQUFFLFdBQU8sRUFBRSxDQUFDO0dBQUU7O0FBRXJDLFdBQVMsUUFBUSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUU7QUFDL0IsUUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUEsQUFBQyxFQUFFO0FBQzlCLFVBQUksR0FBRyxJQUFJLEdBQUcsTUF6UTRCLFdBQVcsQ0F5UTNCLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNyQyxVQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQztLQUNyQjtBQUNELFdBQU8sSUFBSSxDQUFDO0dBQ2I7O0FBRUQsV0FBUyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtBQUN6RSxRQUFJLEVBQUUsQ0FBQyxTQUFTLEVBQUU7QUFDaEIsVUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO0FBQ2YsVUFBSSxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzVGLGFBQU0sTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztLQUMzQjtBQUNELFdBQU8sSUFBSSxDQUFDO0dBQ2IiLCJmaWxlIjoicnVudGltZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IEV4Y2VwdGlvbiBmcm9tICcuL2V4Y2VwdGlvbic7XG5pbXBvcnQgeyBDT01QSUxFUl9SRVZJU0lPTiwgUkVWSVNJT05fQ0hBTkdFUywgY3JlYXRlRnJhbWUgfSBmcm9tICcuL2Jhc2UnO1xuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tSZXZpc2lvbihjb21waWxlckluZm8pIHtcbiAgY29uc3QgY29tcGlsZXJSZXZpc2lvbiA9IGNvbXBpbGVySW5mbyAmJiBjb21waWxlckluZm9bMF0gfHwgMSxcbiAgICAgICAgY3VycmVudFJldmlzaW9uID0gQ09NUElMRVJfUkVWSVNJT047XG5cbiAgaWYgKGNvbXBpbGVyUmV2aXNpb24gIT09IGN1cnJlbnRSZXZpc2lvbikge1xuICAgIGlmIChjb21waWxlclJldmlzaW9uIDwgY3VycmVudFJldmlzaW9uKSB7XG4gICAgICBjb25zdCBydW50aW1lVmVyc2lvbnMgPSBSRVZJU0lPTl9DSEFOR0VTW2N1cnJlbnRSZXZpc2lvbl0sXG4gICAgICAgICAgICBjb21waWxlclZlcnNpb25zID0gUkVWSVNJT05fQ0hBTkdFU1tjb21waWxlclJldmlzaW9uXTtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ1RlbXBsYXRlIHdhcyBwcmVjb21waWxlZCB3aXRoIGFuIG9sZGVyIHZlcnNpb24gb2YgSGFuZGxlYmFycyB0aGFuIHRoZSBjdXJyZW50IHJ1bnRpbWUuICcgK1xuICAgICAgICAgICAgJ1BsZWFzZSB1cGRhdGUgeW91ciBwcmVjb21waWxlciB0byBhIG5ld2VyIHZlcnNpb24gKCcgKyBydW50aW1lVmVyc2lvbnMgKyAnKSBvciBkb3duZ3JhZGUgeW91ciBydW50aW1lIHRvIGFuIG9sZGVyIHZlcnNpb24gKCcgKyBjb21waWxlclZlcnNpb25zICsgJykuJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFVzZSB0aGUgZW1iZWRkZWQgdmVyc2lvbiBpbmZvIHNpbmNlIHRoZSBydW50aW1lIGRvZXNuJ3Qga25vdyBhYm91dCB0aGlzIHJldmlzaW9uIHlldFxuICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignVGVtcGxhdGUgd2FzIHByZWNvbXBpbGVkIHdpdGggYSBuZXdlciB2ZXJzaW9uIG9mIEhhbmRsZWJhcnMgdGhhbiB0aGUgY3VycmVudCBydW50aW1lLiAnICtcbiAgICAgICAgICAgICdQbGVhc2UgdXBkYXRlIHlvdXIgcnVudGltZSB0byBhIG5ld2VyIHZlcnNpb24gKCcgKyBjb21waWxlckluZm9bMV0gKyAnKS4nKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlbXBsYXRlKHRlbXBsYXRlU3BlYywgZW52KSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGlmICghZW52KSB7XG4gICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignTm8gZW52aXJvbm1lbnQgcGFzc2VkIHRvIHRlbXBsYXRlJyk7XG4gIH1cbiAgaWYgKCF0ZW1wbGF0ZVNwZWMgfHwgIXRlbXBsYXRlU3BlYy5tYWluKSB7XG4gICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignVW5rbm93biB0ZW1wbGF0ZSBvYmplY3Q6ICcgKyB0eXBlb2YgdGVtcGxhdGVTcGVjKTtcbiAgfVxuXG4gIHRlbXBsYXRlU3BlYy5tYWluLmRlY29yYXRvciA9IHRlbXBsYXRlU3BlYy5tYWluX2Q7XG5cbiAgLy8gTm90ZTogVXNpbmcgZW52LlZNIHJlZmVyZW5jZXMgcmF0aGVyIHRoYW4gbG9jYWwgdmFyIHJlZmVyZW5jZXMgdGhyb3VnaG91dCB0aGlzIHNlY3Rpb24gdG8gYWxsb3dcbiAgLy8gZm9yIGV4dGVybmFsIHVzZXJzIHRvIG92ZXJyaWRlIHRoZXNlIGFzIHBzdWVkby1zdXBwb3J0ZWQgQVBJcy5cbiAgZW52LlZNLmNoZWNrUmV2aXNpb24odGVtcGxhdGVTcGVjLmNvbXBpbGVyKTtcblxuICBmdW5jdGlvbiBpbnZva2VQYXJ0aWFsV3JhcHBlcihwYXJ0aWFsLCBjb250ZXh0LCBvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMuaGFzaCkge1xuICAgICAgY29udGV4dCA9IFV0aWxzLmV4dGVuZCh7fSwgY29udGV4dCwgb3B0aW9ucy5oYXNoKTtcbiAgICAgIGlmIChvcHRpb25zLmlkcykge1xuICAgICAgICBvcHRpb25zLmlkc1swXSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcGFydGlhbCA9IGVudi5WTS5yZXNvbHZlUGFydGlhbC5jYWxsKHRoaXMsIHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpO1xuICAgIGxldCByZXN1bHQgPSBlbnYuVk0uaW52b2tlUGFydGlhbC5jYWxsKHRoaXMsIHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpO1xuXG4gICAgaWYgKHJlc3VsdCA9PSBudWxsICYmIGVudi5jb21waWxlKSB7XG4gICAgICBvcHRpb25zLnBhcnRpYWxzW29wdGlvbnMubmFtZV0gPSBlbnYuY29tcGlsZShwYXJ0aWFsLCB0ZW1wbGF0ZVNwZWMuY29tcGlsZXJPcHRpb25zLCBlbnYpO1xuICAgICAgcmVzdWx0ID0gb3B0aW9ucy5wYXJ0aWFsc1tvcHRpb25zLm5hbWVdKGNvbnRleHQsIG9wdGlvbnMpO1xuICAgIH1cbiAgICBpZiAocmVzdWx0ICE9IG51bGwpIHtcbiAgICAgIGlmIChvcHRpb25zLmluZGVudCkge1xuICAgICAgICBsZXQgbGluZXMgPSByZXN1bHQuc3BsaXQoJ1xcbicpO1xuICAgICAgICBmb3IgKGxldCBpID0gMCwgbCA9IGxpbmVzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgIGlmICghbGluZXNbaV0gJiYgaSArIDEgPT09IGwpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGxpbmVzW2ldID0gb3B0aW9ucy5pbmRlbnQgKyBsaW5lc1tpXTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQgPSBsaW5lcy5qb2luKCdcXG4nKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ1RoZSBwYXJ0aWFsICcgKyBvcHRpb25zLm5hbWUgKyAnIGNvdWxkIG5vdCBiZSBjb21waWxlZCB3aGVuIHJ1bm5pbmcgaW4gcnVudGltZS1vbmx5IG1vZGUnKTtcbiAgICB9XG4gIH1cblxuICAvLyBKdXN0IGFkZCB3YXRlclxuICBsZXQgY29udGFpbmVyID0ge1xuICAgIHN0cmljdDogZnVuY3Rpb24ob2JqLCBuYW1lKSB7XG4gICAgICBpZiAoIShuYW1lIGluIG9iaikpIHtcbiAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignXCInICsgbmFtZSArICdcIiBub3QgZGVmaW5lZCBpbiAnICsgb2JqKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvYmpbbmFtZV07XG4gICAgfSxcbiAgICBsb29rdXA6IGZ1bmN0aW9uKGRlcHRocywgbmFtZSkge1xuICAgICAgY29uc3QgbGVuID0gZGVwdGhzLmxlbmd0aDtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgaWYgKGRlcHRoc1tpXSAmJiBkZXB0aHNbaV1bbmFtZV0gIT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBkZXB0aHNbaV1bbmFtZV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIGxhbWJkYTogZnVuY3Rpb24oY3VycmVudCwgY29udGV4dCkge1xuICAgICAgcmV0dXJuIHR5cGVvZiBjdXJyZW50ID09PSAnZnVuY3Rpb24nID8gY3VycmVudC5jYWxsKGNvbnRleHQpIDogY3VycmVudDtcbiAgICB9LFxuXG4gICAgZXNjYXBlRXhwcmVzc2lvbjogVXRpbHMuZXNjYXBlRXhwcmVzc2lvbixcbiAgICBpbnZva2VQYXJ0aWFsOiBpbnZva2VQYXJ0aWFsV3JhcHBlcixcblxuICAgIGZuOiBmdW5jdGlvbihpKSB7XG4gICAgICBsZXQgcmV0ID0gdGVtcGxhdGVTcGVjW2ldO1xuICAgICAgcmV0LmRlY29yYXRvciA9IHRlbXBsYXRlU3BlY1tpICsgJ19kJ107XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH0sXG5cbiAgICBwcm9ncmFtczogW10sXG4gICAgcHJvZ3JhbTogZnVuY3Rpb24oaSwgZGF0YSwgZGVjbGFyZWRCbG9ja1BhcmFtcywgYmxvY2tQYXJhbXMsIGRlcHRocykge1xuICAgICAgbGV0IHByb2dyYW1XcmFwcGVyID0gdGhpcy5wcm9ncmFtc1tpXSxcbiAgICAgICAgICBmbiA9IHRoaXMuZm4oaSk7XG4gICAgICBpZiAoZGF0YSB8fCBkZXB0aHMgfHwgYmxvY2tQYXJhbXMgfHwgZGVjbGFyZWRCbG9ja1BhcmFtcykge1xuICAgICAgICBwcm9ncmFtV3JhcHBlciA9IHdyYXBQcm9ncmFtKHRoaXMsIGksIGZuLCBkYXRhLCBkZWNsYXJlZEJsb2NrUGFyYW1zLCBibG9ja1BhcmFtcywgZGVwdGhzKTtcbiAgICAgIH0gZWxzZSBpZiAoIXByb2dyYW1XcmFwcGVyKSB7XG4gICAgICAgIHByb2dyYW1XcmFwcGVyID0gdGhpcy5wcm9ncmFtc1tpXSA9IHdyYXBQcm9ncmFtKHRoaXMsIGksIGZuKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcm9ncmFtV3JhcHBlcjtcbiAgICB9LFxuXG4gICAgZGF0YTogZnVuY3Rpb24odmFsdWUsIGRlcHRoKSB7XG4gICAgICB3aGlsZSAodmFsdWUgJiYgZGVwdGgtLSkge1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLl9wYXJlbnQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSxcbiAgICBtZXJnZTogZnVuY3Rpb24ocGFyYW0sIGNvbW1vbikge1xuICAgICAgbGV0IG9iaiA9IHBhcmFtIHx8IGNvbW1vbjtcblxuICAgICAgaWYgKHBhcmFtICYmIGNvbW1vbiAmJiAocGFyYW0gIT09IGNvbW1vbikpIHtcbiAgICAgICAgb2JqID0gVXRpbHMuZXh0ZW5kKHt9LCBjb21tb24sIHBhcmFtKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9iajtcbiAgICB9LFxuICAgIC8vIEFuIGVtcHR5IG9iamVjdCB0byB1c2UgYXMgcmVwbGFjZW1lbnQgZm9yIG51bGwtY29udGV4dHNcbiAgICBudWxsQ29udGV4dDogT2JqZWN0LnNlYWwoe30pLFxuXG4gICAgbm9vcDogZW52LlZNLm5vb3AsXG4gICAgY29tcGlsZXJJbmZvOiB0ZW1wbGF0ZVNwZWMuY29tcGlsZXJcbiAgfTtcblxuICBmdW5jdGlvbiByZXQoY29udGV4dCwgb3B0aW9ucyA9IHt9KSB7XG4gICAgbGV0IGRhdGEgPSBvcHRpb25zLmRhdGE7XG5cbiAgICByZXQuX3NldHVwKG9wdGlvbnMpO1xuICAgIGlmICghb3B0aW9ucy5wYXJ0aWFsICYmIHRlbXBsYXRlU3BlYy51c2VEYXRhKSB7XG4gICAgICBkYXRhID0gaW5pdERhdGEoY29udGV4dCwgZGF0YSk7XG4gICAgfVxuICAgIGxldCBkZXB0aHMsXG4gICAgICAgIGJsb2NrUGFyYW1zID0gdGVtcGxhdGVTcGVjLnVzZUJsb2NrUGFyYW1zID8gW10gOiB1bmRlZmluZWQ7XG4gICAgaWYgKHRlbXBsYXRlU3BlYy51c2VEZXB0aHMpIHtcbiAgICAgIGlmIChvcHRpb25zLmRlcHRocykge1xuICAgICAgICBkZXB0aHMgPSBjb250ZXh0ICE9IG9wdGlvbnMuZGVwdGhzWzBdID8gW2NvbnRleHRdLmNvbmNhdChvcHRpb25zLmRlcHRocykgOiBvcHRpb25zLmRlcHRocztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlcHRocyA9IFtjb250ZXh0XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYWluKGNvbnRleHQvKiwgb3B0aW9ucyovKSB7XG4gICAgICByZXR1cm4gJycgKyB0ZW1wbGF0ZVNwZWMubWFpbihjb250YWluZXIsIGNvbnRleHQsIGNvbnRhaW5lci5oZWxwZXJzLCBjb250YWluZXIucGFydGlhbHMsIGRhdGEsIGJsb2NrUGFyYW1zLCBkZXB0aHMpO1xuICAgIH1cbiAgICBtYWluID0gZXhlY3V0ZURlY29yYXRvcnModGVtcGxhdGVTcGVjLm1haW4sIG1haW4sIGNvbnRhaW5lciwgb3B0aW9ucy5kZXB0aHMgfHwgW10sIGRhdGEsIGJsb2NrUGFyYW1zKTtcbiAgICByZXR1cm4gbWFpbihjb250ZXh0LCBvcHRpb25zKTtcbiAgfVxuICByZXQuaXNUb3AgPSB0cnVlO1xuXG4gIHJldC5fc2V0dXAgPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgaWYgKCFvcHRpb25zLnBhcnRpYWwpIHtcbiAgICAgIGNvbnRhaW5lci5oZWxwZXJzID0gY29udGFpbmVyLm1lcmdlKG9wdGlvbnMuaGVscGVycywgZW52LmhlbHBlcnMpO1xuXG4gICAgICBpZiAodGVtcGxhdGVTcGVjLnVzZVBhcnRpYWwpIHtcbiAgICAgICAgY29udGFpbmVyLnBhcnRpYWxzID0gY29udGFpbmVyLm1lcmdlKG9wdGlvbnMucGFydGlhbHMsIGVudi5wYXJ0aWFscyk7XG4gICAgICB9XG4gICAgICBpZiAodGVtcGxhdGVTcGVjLnVzZVBhcnRpYWwgfHwgdGVtcGxhdGVTcGVjLnVzZURlY29yYXRvcnMpIHtcbiAgICAgICAgY29udGFpbmVyLmRlY29yYXRvcnMgPSBjb250YWluZXIubWVyZ2Uob3B0aW9ucy5kZWNvcmF0b3JzLCBlbnYuZGVjb3JhdG9ycyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRhaW5lci5oZWxwZXJzID0gb3B0aW9ucy5oZWxwZXJzO1xuICAgICAgY29udGFpbmVyLnBhcnRpYWxzID0gb3B0aW9ucy5wYXJ0aWFscztcbiAgICAgIGNvbnRhaW5lci5kZWNvcmF0b3JzID0gb3B0aW9ucy5kZWNvcmF0b3JzO1xuICAgIH1cbiAgfTtcblxuICByZXQuX2NoaWxkID0gZnVuY3Rpb24oaSwgZGF0YSwgYmxvY2tQYXJhbXMsIGRlcHRocykge1xuICAgIGlmICh0ZW1wbGF0ZVNwZWMudXNlQmxvY2tQYXJhbXMgJiYgIWJsb2NrUGFyYW1zKSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdtdXN0IHBhc3MgYmxvY2sgcGFyYW1zJyk7XG4gICAgfVxuICAgIGlmICh0ZW1wbGF0ZVNwZWMudXNlRGVwdGhzICYmICFkZXB0aHMpIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ211c3QgcGFzcyBwYXJlbnQgZGVwdGhzJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHdyYXBQcm9ncmFtKGNvbnRhaW5lciwgaSwgdGVtcGxhdGVTcGVjW2ldLCBkYXRhLCAwLCBibG9ja1BhcmFtcywgZGVwdGhzKTtcbiAgfTtcbiAgcmV0dXJuIHJldDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyYXBQcm9ncmFtKGNvbnRhaW5lciwgaSwgZm4sIGRhdGEsIGRlY2xhcmVkQmxvY2tQYXJhbXMsIGJsb2NrUGFyYW1zLCBkZXB0aHMpIHtcbiAgZnVuY3Rpb24gcHJvZyhjb250ZXh0LCBvcHRpb25zID0ge30pIHtcbiAgICBsZXQgY3VycmVudERlcHRocyA9IGRlcHRocztcbiAgICBpZiAoZGVwdGhzICYmIGNvbnRleHQgIT0gZGVwdGhzWzBdICYmICEoY29udGV4dCA9PT0gY29udGFpbmVyLm51bGxDb250ZXh0ICYmIGRlcHRoc1swXSA9PT0gbnVsbCkpIHtcbiAgICAgIGN1cnJlbnREZXB0aHMgPSBbY29udGV4dF0uY29uY2F0KGRlcHRocyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZuKGNvbnRhaW5lcixcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgY29udGFpbmVyLmhlbHBlcnMsIGNvbnRhaW5lci5wYXJ0aWFscyxcbiAgICAgICAgb3B0aW9ucy5kYXRhIHx8IGRhdGEsXG4gICAgICAgIGJsb2NrUGFyYW1zICYmIFtvcHRpb25zLmJsb2NrUGFyYW1zXS5jb25jYXQoYmxvY2tQYXJhbXMpLFxuICAgICAgICBjdXJyZW50RGVwdGhzKTtcbiAgfVxuXG4gIHByb2cgPSBleGVjdXRlRGVjb3JhdG9ycyhmbiwgcHJvZywgY29udGFpbmVyLCBkZXB0aHMsIGRhdGEsIGJsb2NrUGFyYW1zKTtcblxuICBwcm9nLnByb2dyYW0gPSBpO1xuICBwcm9nLmRlcHRoID0gZGVwdGhzID8gZGVwdGhzLmxlbmd0aCA6IDA7XG4gIHByb2cuYmxvY2tQYXJhbXMgPSBkZWNsYXJlZEJsb2NrUGFyYW1zIHx8IDA7XG4gIHJldHVybiBwcm9nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVBhcnRpYWwocGFydGlhbCwgY29udGV4dCwgb3B0aW9ucykge1xuICBpZiAoIXBhcnRpYWwpIHtcbiAgICBpZiAob3B0aW9ucy5uYW1lID09PSAnQHBhcnRpYWwtYmxvY2snKSB7XG4gICAgICBwYXJ0aWFsID0gb3B0aW9ucy5kYXRhWydwYXJ0aWFsLWJsb2NrJ107XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcnRpYWwgPSBvcHRpb25zLnBhcnRpYWxzW29wdGlvbnMubmFtZV07XG4gICAgfVxuICB9IGVsc2UgaWYgKCFwYXJ0aWFsLmNhbGwgJiYgIW9wdGlvbnMubmFtZSkge1xuICAgIC8vIFRoaXMgaXMgYSBkeW5hbWljIHBhcnRpYWwgdGhhdCByZXR1cm5lZCBhIHN0cmluZ1xuICAgIG9wdGlvbnMubmFtZSA9IHBhcnRpYWw7XG4gICAgcGFydGlhbCA9IG9wdGlvbnMucGFydGlhbHNbcGFydGlhbF07XG4gIH1cbiAgcmV0dXJuIHBhcnRpYWw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2VQYXJ0aWFsKHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgLy8gVXNlIHRoZSBjdXJyZW50IGNsb3N1cmUgY29udGV4dCB0byBzYXZlIHRoZSBwYXJ0aWFsLWJsb2NrIGlmIHRoaXMgcGFydGlhbFxuICBjb25zdCBjdXJyZW50UGFydGlhbEJsb2NrID0gb3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuZGF0YVsncGFydGlhbC1ibG9jayddO1xuICBvcHRpb25zLnBhcnRpYWwgPSB0cnVlO1xuICBpZiAob3B0aW9ucy5pZHMpIHtcbiAgICBvcHRpb25zLmRhdGEuY29udGV4dFBhdGggPSBvcHRpb25zLmlkc1swXSB8fCBvcHRpb25zLmRhdGEuY29udGV4dFBhdGg7XG4gIH1cblxuICBsZXQgcGFydGlhbEJsb2NrO1xuICBpZiAob3B0aW9ucy5mbiAmJiBvcHRpb25zLmZuICE9PSBub29wKSB7XG4gICAgb3B0aW9ucy5kYXRhID0gY3JlYXRlRnJhbWUob3B0aW9ucy5kYXRhKTtcbiAgICAvLyBXcmFwcGVyIGZ1bmN0aW9uIHRvIGdldCBhY2Nlc3MgdG8gY3VycmVudFBhcnRpYWxCbG9jayBmcm9tIHRoZSBjbG9zdXJlXG4gICAgbGV0IGZuID0gb3B0aW9ucy5mbjtcbiAgICBwYXJ0aWFsQmxvY2sgPSBvcHRpb25zLmRhdGFbJ3BhcnRpYWwtYmxvY2snXSA9IGZ1bmN0aW9uIHBhcnRpYWxCbG9ja1dyYXBwZXIoY29udGV4dCwgb3B0aW9ucyA9IHt9KSB7XG5cbiAgICAgIC8vIFJlc3RvcmUgdGhlIHBhcnRpYWwtYmxvY2sgZnJvbSB0aGUgY2xvc3VyZSBmb3IgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgYmxvY2tcbiAgICAgIC8vIGkuZS4gdGhlIHBhcnQgaW5zaWRlIHRoZSBibG9jayBvZiB0aGUgcGFydGlhbCBjYWxsLlxuICAgICAgb3B0aW9ucy5kYXRhID0gY3JlYXRlRnJhbWUob3B0aW9ucy5kYXRhKTtcbiAgICAgIG9wdGlvbnMuZGF0YVsncGFydGlhbC1ibG9jayddID0gY3VycmVudFBhcnRpYWxCbG9jaztcbiAgICAgIHJldHVybiBmbihjb250ZXh0LCBvcHRpb25zKTtcbiAgICB9O1xuICAgIGlmIChmbi5wYXJ0aWFscykge1xuICAgICAgb3B0aW9ucy5wYXJ0aWFscyA9IFV0aWxzLmV4dGVuZCh7fSwgb3B0aW9ucy5wYXJ0aWFscywgZm4ucGFydGlhbHMpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChwYXJ0aWFsID09PSB1bmRlZmluZWQgJiYgcGFydGlhbEJsb2NrKSB7XG4gICAgcGFydGlhbCA9IHBhcnRpYWxCbG9jaztcbiAgfVxuXG4gIGlmIChwYXJ0aWFsID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdUaGUgcGFydGlhbCAnICsgb3B0aW9ucy5uYW1lICsgJyBjb3VsZCBub3QgYmUgZm91bmQnKTtcbiAgfSBlbHNlIGlmIChwYXJ0aWFsIGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcbiAgICByZXR1cm4gcGFydGlhbChjb250ZXh0LCBvcHRpb25zKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9vcCgpIHsgcmV0dXJuICcnOyB9XG5cbmZ1bmN0aW9uIGluaXREYXRhKGNvbnRleHQsIGRhdGEpIHtcbiAgaWYgKCFkYXRhIHx8ICEoJ3Jvb3QnIGluIGRhdGEpKSB7XG4gICAgZGF0YSA9IGRhdGEgPyBjcmVhdGVGcmFtZShkYXRhKSA6IHt9O1xuICAgIGRhdGEucm9vdCA9IGNvbnRleHQ7XG4gIH1cbiAgcmV0dXJuIGRhdGE7XG59XG5cbmZ1bmN0aW9uIGV4ZWN1dGVEZWNvcmF0b3JzKGZuLCBwcm9nLCBjb250YWluZXIsIGRlcHRocywgZGF0YSwgYmxvY2tQYXJhbXMpIHtcbiAgaWYgKGZuLmRlY29yYXRvcikge1xuICAgIGxldCBwcm9wcyA9IHt9O1xuICAgIHByb2cgPSBmbi5kZWNvcmF0b3IocHJvZywgcHJvcHMsIGNvbnRhaW5lciwgZGVwdGhzICYmIGRlcHRoc1swXSwgZGF0YSwgYmxvY2tQYXJhbXMsIGRlcHRocyk7XG4gICAgVXRpbHMuZXh0ZW5kKHByb2csIHByb3BzKTtcbiAgfVxuICByZXR1cm4gcHJvZztcbn1cbiJdfQ== |
| 1 | define(['exports', 'module'], function (exports, module) { | ||
| 2 | // Build out our basic SafeString type | ||
| 3 | 'use strict'; | ||
| 4 | |||
| 5 | function SafeString(string) { | ||
| 6 | this.string = string; | ||
| 7 | } | ||
| 8 | |||
| 9 | SafeString.prototype.toString = SafeString.prototype.toHTML = function () { | ||
| 10 | return '' + this.string; | ||
| 11 | }; | ||
| 12 | |||
| 13 | module.exports = SafeString; | ||
| 14 | }); | ||
| 15 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3NhZmUtc3RyaW5nLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxXQUFTLFVBQVUsQ0FBQyxNQUFNLEVBQUU7QUFDMUIsUUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7R0FDdEI7O0FBRUQsWUFBVSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsWUFBVztBQUN2RSxXQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0dBQ3pCLENBQUM7O21CQUVhLFVBQVUiLCJmaWxlIjoic2FmZS1zdHJpbmcuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBCdWlsZCBvdXQgb3VyIGJhc2ljIFNhZmVTdHJpbmcgdHlwZVxuZnVuY3Rpb24gU2FmZVN0cmluZyhzdHJpbmcpIHtcbiAgdGhpcy5zdHJpbmcgPSBzdHJpbmc7XG59XG5cblNhZmVTdHJpbmcucHJvdG90eXBlLnRvU3RyaW5nID0gU2FmZVN0cmluZy5wcm90b3R5cGUudG9IVE1MID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAnJyArIHRoaXMuc3RyaW5nO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU2FmZVN0cmluZztcbiJdfQ== |
| 1 | define(['exports'], function (exports) { | ||
| 2 | 'use strict'; | ||
| 3 | |||
| 4 | exports.__esModule = true; | ||
| 5 | exports.extend = extend; | ||
| 6 | exports.indexOf = indexOf; | ||
| 7 | exports.escapeExpression = escapeExpression; | ||
| 8 | exports.isEmpty = isEmpty; | ||
| 9 | exports.createFrame = createFrame; | ||
| 10 | exports.blockParams = blockParams; | ||
| 11 | exports.appendContextPath = appendContextPath; | ||
| 12 | var escape = { | ||
| 13 | '&': '&', | ||
| 14 | '<': '<', | ||
| 15 | '>': '>', | ||
| 16 | '"': '"', | ||
| 17 | "'": ''', | ||
| 18 | '`': '`', | ||
| 19 | '=': '=' | ||
| 20 | }; | ||
| 21 | |||
| 22 | var badChars = /[&<>"'`=]/g, | ||
| 23 | possible = /[&<>"'`=]/; | ||
| 24 | |||
| 25 | function escapeChar(chr) { | ||
| 26 | return escape[chr]; | ||
| 27 | } | ||
| 28 | |||
| 29 | function extend(obj /* , ...source */) { | ||
| 30 | for (var i = 1; i < arguments.length; i++) { | ||
| 31 | for (var key in arguments[i]) { | ||
| 32 | if (Object.prototype.hasOwnProperty.call(arguments[i], key)) { | ||
| 33 | obj[key] = arguments[i][key]; | ||
| 34 | } | ||
| 35 | } | ||
| 36 | } | ||
| 37 | |||
| 38 | return obj; | ||
| 39 | } | ||
| 40 | |||
| 41 | var toString = Object.prototype.toString; | ||
| 42 | |||
| 43 | exports.toString = toString; | ||
| 44 | // Sourced from lodash | ||
| 45 | // https://github.com/bestiejs/lodash/blob/master/LICENSE.txt | ||
| 46 | /* eslint-disable func-style */ | ||
| 47 | var isFunction = function isFunction(value) { | ||
| 48 | return typeof value === 'function'; | ||
| 49 | }; | ||
| 50 | // fallback for older versions of Chrome and Safari | ||
| 51 | /* istanbul ignore next */ | ||
| 52 | if (isFunction(/x/)) { | ||
| 53 | exports.isFunction = isFunction = function (value) { | ||
| 54 | return typeof value === 'function' && toString.call(value) === '[object Function]'; | ||
| 55 | }; | ||
| 56 | } | ||
| 57 | exports.isFunction = isFunction; | ||
| 58 | |||
| 59 | /* eslint-enable func-style */ | ||
| 60 | |||
| 61 | /* istanbul ignore next */ | ||
| 62 | var isArray = Array.isArray || function (value) { | ||
| 63 | return value && typeof value === 'object' ? toString.call(value) === '[object Array]' : false; | ||
| 64 | }; | ||
| 65 | |||
| 66 | exports.isArray = isArray; | ||
| 67 | // Older IE versions do not directly support indexOf so we must implement our own, sadly. | ||
| 68 | |||
| 69 | function indexOf(array, value) { | ||
| 70 | for (var i = 0, len = array.length; i < len; i++) { | ||
| 71 | if (array[i] === value) { | ||
| 72 | return i; | ||
| 73 | } | ||
| 74 | } | ||
| 75 | return -1; | ||
| 76 | } | ||
| 77 | |||
| 78 | function escapeExpression(string) { | ||
| 79 | if (typeof string !== 'string') { | ||
| 80 | // don't escape SafeStrings, since they're already safe | ||
| 81 | if (string && string.toHTML) { | ||
| 82 | return string.toHTML(); | ||
| 83 | } else if (string == null) { | ||
| 84 | return ''; | ||
| 85 | } else if (!string) { | ||
| 86 | return string + ''; | ||
| 87 | } | ||
| 88 | |||
| 89 | // Force a string conversion as this will be done by the append regardless and | ||
| 90 | // the regex test will do this transparently behind the scenes, causing issues if | ||
| 91 | // an object's to string has escaped characters in it. | ||
| 92 | string = '' + string; | ||
| 93 | } | ||
| 94 | |||
| 95 | if (!possible.test(string)) { | ||
| 96 | return string; | ||
| 97 | } | ||
| 98 | return string.replace(badChars, escapeChar); | ||
| 99 | } | ||
| 100 | |||
| 101 | function isEmpty(value) { | ||
| 102 | if (!value && value !== 0) { | ||
| 103 | return true; | ||
| 104 | } else if (isArray(value) && value.length === 0) { | ||
| 105 | return true; | ||
| 106 | } else { | ||
| 107 | return false; | ||
| 108 | } | ||
| 109 | } | ||
| 110 | |||
| 111 | function createFrame(object) { | ||
| 112 | var frame = extend({}, object); | ||
| 113 | frame._parent = object; | ||
| 114 | return frame; | ||
| 115 | } | ||
| 116 | |||
| 117 | function blockParams(params, ids) { | ||
| 118 | params.path = ids; | ||
| 119 | return params; | ||
| 120 | } | ||
| 121 | |||
| 122 | function appendContextPath(contextPath, id) { | ||
| 123 | return (contextPath ? contextPath + '.' : '') + id; | ||
| 124 | } | ||
| 125 | }); | ||
| 126 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3V0aWxzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUEsTUFBTSxNQUFNLEdBQUc7QUFDYixPQUFHLEVBQUUsT0FBTztBQUNaLE9BQUcsRUFBRSxNQUFNO0FBQ1gsT0FBRyxFQUFFLE1BQU07QUFDWCxPQUFHLEVBQUUsUUFBUTtBQUNiLE9BQUcsRUFBRSxRQUFRO0FBQ2IsT0FBRyxFQUFFLFFBQVE7QUFDYixPQUFHLEVBQUUsUUFBUTtHQUNkLENBQUM7O0FBRUYsTUFBTSxRQUFRLEdBQUcsWUFBWTtNQUN2QixRQUFRLEdBQUcsV0FBVyxDQUFDOztBQUU3QixXQUFTLFVBQVUsQ0FBQyxHQUFHLEVBQUU7QUFDdkIsV0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7R0FDcEI7O0FBRU0sV0FBUyxNQUFNLENBQUMsR0FBRyxvQkFBbUI7QUFDM0MsU0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDekMsV0FBSyxJQUFJLEdBQUcsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDNUIsWUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFO0FBQzNELGFBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDOUI7T0FDRjtLQUNGOztBQUVELFdBQU8sR0FBRyxDQUFDO0dBQ1o7O0FBRU0sTUFBSSxRQUFRLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7Ozs7OztBQUtoRCxNQUFJLFVBQVUsR0FBRyxvQkFBUyxLQUFLLEVBQUU7QUFDL0IsV0FBTyxPQUFPLEtBQUssS0FBSyxVQUFVLENBQUM7R0FDcEMsQ0FBQzs7O0FBR0YsTUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7QUFDbkIsWUFJTSxVQUFVLEdBSmhCLFVBQVUsR0FBRyxVQUFTLEtBQUssRUFBRTtBQUMzQixhQUFPLE9BQU8sS0FBSyxLQUFLLFVBQVUsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLG1CQUFtQixDQUFDO0tBQ3BGLENBQUM7R0FDSDtVQUNPLFVBQVUsR0FBVixVQUFVOzs7OztBQUlYLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLElBQUksVUFBUyxLQUFLLEVBQUU7QUFDdEQsV0FBTyxBQUFDLEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEdBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7R0FDakcsQ0FBQzs7Ozs7QUFHSyxXQUFTLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFO0FBQ3BDLFNBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDaEQsVUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxFQUFFO0FBQ3RCLGVBQU8sQ0FBQyxDQUFDO09BQ1Y7S0FDRjtBQUNELFdBQU8sQ0FBQyxDQUFDLENBQUM7R0FDWDs7QUFHTSxXQUFTLGdCQUFnQixDQUFDLE1BQU0sRUFBRTtBQUN2QyxRQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsRUFBRTs7QUFFOUIsVUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRTtBQUMzQixlQUFPLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztPQUN4QixNQUFNLElBQUksTUFBTSxJQUFJLElBQUksRUFBRTtBQUN6QixlQUFPLEVBQUUsQ0FBQztPQUNYLE1BQU0sSUFBSSxDQUFDLE1BQU0sRUFBRTtBQUNsQixlQUFPLE1BQU0sR0FBRyxFQUFFLENBQUM7T0FDcEI7Ozs7O0FBS0QsWUFBTSxHQUFHLEVBQUUsR0FBRyxNQUFNLENBQUM7S0FDdEI7O0FBRUQsUUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7QUFBRSxhQUFPLE1BQU0sQ0FBQztLQUFFO0FBQzlDLFdBQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7R0FDN0M7O0FBRU0sV0FBUyxPQUFPLENBQUMsS0FBSyxFQUFFO0FBQzdCLFFBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRTtBQUN6QixhQUFPLElBQUksQ0FBQztLQUNiLE1BQU0sSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7QUFDL0MsYUFBTyxJQUFJLENBQUM7S0FDYixNQUFNO0FBQ0wsYUFBTyxLQUFLLENBQUM7S0FDZDtHQUNGOztBQUVNLFdBQVMsV0FBVyxDQUFDLE1BQU0sRUFBRTtBQUNsQyxRQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQy9CLFNBQUssQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO0FBQ3ZCLFdBQU8sS0FBSyxDQUFDO0dBQ2Q7O0FBRU0sV0FBUyxXQUFXLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRTtBQUN2QyxVQUFNLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztBQUNsQixXQUFPLE1BQU0sQ0FBQztHQUNmOztBQUVNLFdBQVMsaUJBQWlCLENBQUMsV0FBVyxFQUFFLEVBQUUsRUFBRTtBQUNqRCxXQUFPLENBQUMsV0FBVyxHQUFHLFdBQVcsR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFBLEdBQUksRUFBRSxDQUFDO0dBQ3BEIiwiZmlsZSI6InV0aWxzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXNjYXBlID0ge1xuICAnJic6ICcmYW1wOycsXG4gICc8JzogJyZsdDsnLFxuICAnPic6ICcmZ3Q7JyxcbiAgJ1wiJzogJyZxdW90OycsXG4gIFwiJ1wiOiAnJiN4Mjc7JyxcbiAgJ2AnOiAnJiN4NjA7JyxcbiAgJz0nOiAnJiN4M0Q7J1xufTtcblxuY29uc3QgYmFkQ2hhcnMgPSAvWyY8PlwiJ2A9XS9nLFxuICAgICAgcG9zc2libGUgPSAvWyY8PlwiJ2A9XS87XG5cbmZ1bmN0aW9uIGVzY2FwZUNoYXIoY2hyKSB7XG4gIHJldHVybiBlc2NhcGVbY2hyXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4dGVuZChvYmovKiAsIC4uLnNvdXJjZSAqLykge1xuICBmb3IgKGxldCBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgIGZvciAobGV0IGtleSBpbiBhcmd1bWVudHNbaV0pIHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYXJndW1lbnRzW2ldLCBrZXkpKSB7XG4gICAgICAgIG9ialtrZXldID0gYXJndW1lbnRzW2ldW2tleV07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG9iajtcbn1cblxuZXhwb3J0IGxldCB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG5cbi8vIFNvdXJjZWQgZnJvbSBsb2Rhc2hcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9iZXN0aWVqcy9sb2Rhc2gvYmxvYi9tYXN0ZXIvTElDRU5TRS50eHRcbi8qIGVzbGludC1kaXNhYmxlIGZ1bmMtc3R5bGUgKi9cbmxldCBpc0Z1bmN0aW9uID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJztcbn07XG4vLyBmYWxsYmFjayBmb3Igb2xkZXIgdmVyc2lvbnMgb2YgQ2hyb21lIGFuZCBTYWZhcmlcbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5pZiAoaXNGdW5jdGlvbigveC8pKSB7XG4gIGlzRnVuY3Rpb24gPSBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicgJiYgdG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSc7XG4gIH07XG59XG5leHBvcnQge2lzRnVuY3Rpb259O1xuLyogZXNsaW50LWVuYWJsZSBmdW5jLXN0eWxlICovXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5leHBvcnQgY29uc3QgaXNBcnJheSA9IEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSA/IHRvU3RyaW5nLmNhbGwodmFsdWUpID09PSAnW29iamVjdCBBcnJheV0nIDogZmFsc2U7XG59O1xuXG4vLyBPbGRlciBJRSB2ZXJzaW9ucyBkbyBub3QgZGlyZWN0bHkgc3VwcG9ydCBpbmRleE9mIHNvIHdlIG11c3QgaW1wbGVtZW50IG91ciBvd24sIHNhZGx5LlxuZXhwb3J0IGZ1bmN0aW9uIGluZGV4T2YoYXJyYXksIHZhbHVlKSB7XG4gIGZvciAobGV0IGkgPSAwLCBsZW4gPSBhcnJheS5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGlmIChhcnJheVtpXSA9PT0gdmFsdWUpIHtcbiAgICAgIHJldHVybiBpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gLTE7XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGVzY2FwZUV4cHJlc3Npb24oc3RyaW5nKSB7XG4gIGlmICh0eXBlb2Ygc3RyaW5nICE9PSAnc3RyaW5nJykge1xuICAgIC8vIGRvbid0IGVzY2FwZSBTYWZlU3RyaW5ncywgc2luY2UgdGhleSdyZSBhbHJlYWR5IHNhZmVcbiAgICBpZiAoc3RyaW5nICYmIHN0cmluZy50b0hUTUwpIHtcbiAgICAgIHJldHVybiBzdHJpbmcudG9IVE1MKCk7XG4gICAgfSBlbHNlIGlmIChzdHJpbmcgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH0gZWxzZSBpZiAoIXN0cmluZykge1xuICAgICAgcmV0dXJuIHN0cmluZyArICcnO1xuICAgIH1cblxuICAgIC8vIEZvcmNlIGEgc3RyaW5nIGNvbnZlcnNpb24gYXMgdGhpcyB3aWxsIGJlIGRvbmUgYnkgdGhlIGFwcGVuZCByZWdhcmRsZXNzIGFuZFxuICAgIC8vIHRoZSByZWdleCB0ZXN0IHdpbGwgZG8gdGhpcyB0cmFuc3BhcmVudGx5IGJlaGluZCB0aGUgc2NlbmVzLCBjYXVzaW5nIGlzc3VlcyBpZlxuICAgIC8vIGFuIG9iamVjdCdzIHRvIHN0cmluZyBoYXMgZXNjYXBlZCBjaGFyYWN0ZXJzIGluIGl0LlxuICAgIHN0cmluZyA9ICcnICsgc3RyaW5nO1xuICB9XG5cbiAgaWYgKCFwb3NzaWJsZS50ZXN0KHN0cmluZykpIHsgcmV0dXJuIHN0cmluZzsgfVxuICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoYmFkQ2hhcnMsIGVzY2FwZUNoYXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNFbXB0eSh2YWx1ZSkge1xuICBpZiAoIXZhbHVlICYmIHZhbHVlICE9PSAwKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gZWxzZSBpZiAoaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGcmFtZShvYmplY3QpIHtcbiAgbGV0IGZyYW1lID0gZXh0ZW5kKHt9LCBvYmplY3QpO1xuICBmcmFtZS5fcGFyZW50ID0gb2JqZWN0O1xuICByZXR1cm4gZnJhbWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBibG9ja1BhcmFtcyhwYXJhbXMsIGlkcykge1xuICBwYXJhbXMucGF0aCA9IGlkcztcbiAgcmV0dXJuIHBhcmFtcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGVuZENvbnRleHRQYXRoKGNvbnRleHRQYXRoLCBpZCkge1xuICByZXR1cm4gKGNvbnRleHRQYXRoID8gY29udGV4dFBhdGggKyAnLicgOiAnJykgKyBpZDtcbn1cbiJdfQ== |
| 1 | define(['exports', 'async', 'fs', './handlebars', 'path', 'source-map', 'uglify-js'], function (exports, _async, _fs, _handlebars, _path, _sourceMap, _uglifyJs) { | ||
| 2 | /* eslint-disable no-console */ | ||
| 3 | 'use strict'; | ||
| 4 | |||
| 5 | // istanbul ignore next | ||
| 6 | |||
| 7 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } | ||
| 8 | |||
| 9 | var _Async = _interopRequireDefault(_async); | ||
| 10 | |||
| 11 | var _fs2 = _interopRequireDefault(_fs); | ||
| 12 | |||
| 13 | var _uglify = _interopRequireDefault(_uglifyJs); | ||
| 14 | |||
| 15 | module.exports.loadTemplates = function (opts, callback) { | ||
| 16 | loadStrings(opts, function (err, strings) { | ||
| 17 | if (err) { | ||
| 18 | callback(err); | ||
| 19 | } else { | ||
| 20 | loadFiles(opts, function (err, files) { | ||
| 21 | if (err) { | ||
| 22 | callback(err); | ||
| 23 | } else { | ||
| 24 | opts.templates = strings.concat(files); | ||
| 25 | callback(undefined, opts); | ||
| 26 | } | ||
| 27 | }); | ||
| 28 | } | ||
| 29 | }); | ||
| 30 | }; | ||
| 31 | |||
| 32 | function loadStrings(opts, callback) { | ||
| 33 | var strings = arrayCast(opts.string), | ||
| 34 | names = arrayCast(opts.name); | ||
| 35 | |||
| 36 | if (names.length !== strings.length && strings.length > 1) { | ||
| 37 | return callback(new _handlebars.Exception('Number of names did not match the number of string inputs')); | ||
| 38 | } | ||
| 39 | |||
| 40 | _Async['default'].map(strings, function (string, callback) { | ||
| 41 | if (string !== '-') { | ||
| 42 | callback(undefined, string); | ||
| 43 | } else { | ||
| 44 | (function () { | ||
| 45 | // Load from stdin | ||
| 46 | var buffer = ''; | ||
| 47 | process.stdin.setEncoding('utf8'); | ||
| 48 | |||
| 49 | process.stdin.on('data', function (chunk) { | ||
| 50 | buffer += chunk; | ||
| 51 | }); | ||
| 52 | process.stdin.on('end', function () { | ||
| 53 | callback(undefined, buffer); | ||
| 54 | }); | ||
| 55 | })(); | ||
| 56 | } | ||
| 57 | }, function (err, strings) { | ||
| 58 | strings = strings.map(function (string, index) { | ||
| 59 | return { | ||
| 60 | name: names[index], | ||
| 61 | path: names[index], | ||
| 62 | source: string | ||
| 63 | }; | ||
| 64 | }); | ||
| 65 | callback(err, strings); | ||
| 66 | }); | ||
| 67 | } | ||
| 68 | |||
| 69 | function loadFiles(opts, callback) { | ||
| 70 | // Build file extension pattern | ||
| 71 | var extension = (opts.extension || 'handlebars').replace(/[\\^$*+?.():=!|{}\-\[\]]/g, function (arg) { | ||
| 72 | return '\\' + arg; | ||
| 73 | }); | ||
| 74 | extension = new RegExp('\\.' + extension + '$'); | ||
| 75 | |||
| 76 | var ret = [], | ||
| 77 | queue = (opts.files || []).map(function (template) { | ||
| 78 | return { template: template, root: opts.root }; | ||
| 79 | }); | ||
| 80 | _Async['default'].whilst(function () { | ||
| 81 | return queue.length; | ||
| 82 | }, function (callback) { | ||
| 83 | var _queue$shift = queue.shift(); | ||
| 84 | |||
| 85 | var path = _queue$shift.template; | ||
| 86 | var root = _queue$shift.root; | ||
| 87 | |||
| 88 | _fs2['default'].stat(path, function (err, stat) { | ||
| 89 | if (err) { | ||
| 90 | return callback(new _handlebars.Exception('Unable to open template file "' + path + '"')); | ||
| 91 | } | ||
| 92 | |||
| 93 | if (stat.isDirectory()) { | ||
| 94 | opts.hasDirectory = true; | ||
| 95 | |||
| 96 | _fs2['default'].readdir(path, function (err, children) { | ||
| 97 | /* istanbul ignore next : Race condition that being too lazy to test */ | ||
| 98 | if (err) { | ||
| 99 | return callback(err); | ||
| 100 | } | ||
| 101 | children.forEach(function (file) { | ||
| 102 | var childPath = path + '/' + file; | ||
| 103 | |||
| 104 | if (extension.test(childPath) || _fs2['default'].statSync(childPath).isDirectory()) { | ||
| 105 | queue.push({ template: childPath, root: root || path }); | ||
| 106 | } | ||
| 107 | }); | ||
| 108 | |||
| 109 | callback(); | ||
| 110 | }); | ||
| 111 | } else { | ||
| 112 | _fs2['default'].readFile(path, 'utf8', function (err, data) { | ||
| 113 | /* istanbul ignore next : Race condition that being too lazy to test */ | ||
| 114 | if (err) { | ||
| 115 | return callback(err); | ||
| 116 | } | ||
| 117 | |||
| 118 | if (opts.bom && data.indexOf('') === 0) { | ||
| 119 | data = data.substring(1); | ||
| 120 | } | ||
| 121 | |||
| 122 | // Clean the template name | ||
| 123 | var name = path; | ||
| 124 | if (!root) { | ||
| 125 | name = _path.basename(name); | ||
| 126 | } else if (name.indexOf(root) === 0) { | ||
| 127 | name = name.substring(root.length + 1); | ||
| 128 | } | ||
| 129 | name = name.replace(extension, ''); | ||
| 130 | |||
| 131 | ret.push({ | ||
| 132 | path: path, | ||
| 133 | name: name, | ||
| 134 | source: data | ||
| 135 | }); | ||
| 136 | |||
| 137 | callback(); | ||
| 138 | }); | ||
| 139 | } | ||
| 140 | }); | ||
| 141 | }, function (err) { | ||
| 142 | if (err) { | ||
| 143 | callback(err); | ||
| 144 | } else { | ||
| 145 | callback(undefined, ret); | ||
| 146 | } | ||
| 147 | }); | ||
| 148 | } | ||
| 149 | |||
| 150 | module.exports.cli = function (opts) { | ||
| 151 | if (opts.version) { | ||
| 152 | console.log(_handlebars.VERSION); | ||
| 153 | return; | ||
| 154 | } | ||
| 155 | |||
| 156 | if (!opts.templates.length && !opts.hasDirectory) { | ||
| 157 | throw new _handlebars.Exception('Must define at least one template or directory.'); | ||
| 158 | } | ||
| 159 | |||
| 160 | if (opts.simple && opts.min) { | ||
| 161 | throw new _handlebars.Exception('Unable to minimize simple output'); | ||
| 162 | } | ||
| 163 | |||
| 164 | var multiple = opts.templates.length !== 1 || opts.hasDirectory; | ||
| 165 | if (opts.simple && multiple) { | ||
| 166 | throw new _handlebars.Exception('Unable to output multiple templates in simple mode'); | ||
| 167 | } | ||
| 168 | |||
| 169 | // Force simple mode if we have only one template and it's unnamed. | ||
| 170 | if (!opts.amd && !opts.commonjs && opts.templates.length === 1 && !opts.templates[0].name) { | ||
| 171 | opts.simple = true; | ||
| 172 | } | ||
| 173 | |||
| 174 | // Convert the known list into a hash | ||
| 175 | var known = {}; | ||
| 176 | if (opts.known && !Array.isArray(opts.known)) { | ||
| 177 | opts.known = [opts.known]; | ||
| 178 | } | ||
| 179 | if (opts.known) { | ||
| 180 | for (var i = 0, len = opts.known.length; i < len; i++) { | ||
| 181 | known[opts.known[i]] = true; | ||
| 182 | } | ||
| 183 | } | ||
| 184 | |||
| 185 | var objectName = opts.partial ? 'Handlebars.partials' : 'templates'; | ||
| 186 | |||
| 187 | var output = new _sourceMap.SourceNode(); | ||
| 188 | if (!opts.simple) { | ||
| 189 | if (opts.amd) { | ||
| 190 | output.add('define([\'' + opts.handlebarPath + 'handlebars.runtime\'], function(Handlebars) {\n Handlebars = Handlebars["default"];'); | ||
| 191 | } else if (opts.commonjs) { | ||
| 192 | output.add('var Handlebars = require("' + opts.commonjs + '");'); | ||
| 193 | } else { | ||
| 194 | output.add('(function() {\n'); | ||
| 195 | } | ||
| 196 | output.add(' var template = Handlebars.template, templates = '); | ||
| 197 | if (opts.namespace) { | ||
| 198 | output.add(opts.namespace); | ||
| 199 | output.add(' = '); | ||
| 200 | output.add(opts.namespace); | ||
| 201 | output.add(' || '); | ||
| 202 | } | ||
| 203 | output.add('{};\n'); | ||
| 204 | } | ||
| 205 | |||
| 206 | opts.templates.forEach(function (template) { | ||
| 207 | var options = { | ||
| 208 | knownHelpers: known, | ||
| 209 | knownHelpersOnly: opts.o | ||
| 210 | }; | ||
| 211 | |||
| 212 | if (opts.map) { | ||
| 213 | options.srcName = template.path; | ||
| 214 | } | ||
| 215 | if (opts.data) { | ||
| 216 | options.data = true; | ||
| 217 | } | ||
| 218 | |||
| 219 | var precompiled = _handlebars.precompile(template.source, options); | ||
| 220 | |||
| 221 | // If we are generating a source map, we have to reconstruct the SourceNode object | ||
| 222 | if (opts.map) { | ||
| 223 | var consumer = new _sourceMap.SourceMapConsumer(precompiled.map); | ||
| 224 | precompiled = _sourceMap.SourceNode.fromStringWithSourceMap(precompiled.code, consumer); | ||
| 225 | } | ||
| 226 | |||
| 227 | if (opts.simple) { | ||
| 228 | output.add([precompiled, '\n']); | ||
| 229 | } else { | ||
| 230 | if (!template.name) { | ||
| 231 | throw new _handlebars.Exception('Name missing for template'); | ||
| 232 | } | ||
| 233 | |||
| 234 | if (opts.amd && !multiple) { | ||
| 235 | output.add('return '); | ||
| 236 | } | ||
| 237 | output.add([objectName, '[\'', template.name, '\'] = template(', precompiled, ');\n']); | ||
| 238 | } | ||
| 239 | }); | ||
| 240 | |||
| 241 | // Output the content | ||
| 242 | if (!opts.simple) { | ||
| 243 | if (opts.amd) { | ||
| 244 | if (multiple) { | ||
| 245 | output.add(['return ', objectName, ';\n']); | ||
| 246 | } | ||
| 247 | output.add('});'); | ||
| 248 | } else if (!opts.commonjs) { | ||
| 249 | output.add('})();'); | ||
| 250 | } | ||
| 251 | } | ||
| 252 | |||
| 253 | if (opts.map) { | ||
| 254 | output.add('\n//# sourceMappingURL=' + opts.map + '\n'); | ||
| 255 | } | ||
| 256 | |||
| 257 | output = output.toStringWithSourceMap(); | ||
| 258 | output.map = output.map + ''; | ||
| 259 | |||
| 260 | if (opts.min) { | ||
| 261 | output = _uglify['default'].minify(output.code, { | ||
| 262 | fromString: true, | ||
| 263 | |||
| 264 | outSourceMap: opts.map, | ||
| 265 | inSourceMap: JSON.parse(output.map) | ||
| 266 | }); | ||
| 267 | } | ||
| 268 | |||
| 269 | if (opts.map) { | ||
| 270 | _fs2['default'].writeFileSync(opts.map, output.map, 'utf8'); | ||
| 271 | } | ||
| 272 | output = output.code; | ||
| 273 | |||
| 274 | if (opts.output) { | ||
| 275 | _fs2['default'].writeFileSync(opts.output, output, 'utf8'); | ||
| 276 | } else { | ||
| 277 | console.log(output); | ||
| 278 | } | ||
| 279 | }; | ||
| 280 | |||
| 281 | function arrayCast(value) { | ||
| 282 | value = value != null ? value : []; | ||
| 283 | if (!Array.isArray(value)) { | ||
| 284 | value = [value]; | ||
| 285 | } | ||
| 286 | return value; | ||
| 287 | } | ||
| 288 | }); | ||
| 289 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9wcmVjb21waWxlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQVFBLFFBQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLFVBQVMsSUFBSSxFQUFFLFFBQVEsRUFBRTtBQUN0RCxlQUFXLENBQUMsSUFBSSxFQUFFLFVBQVMsR0FBRyxFQUFFLE9BQU8sRUFBRTtBQUN2QyxVQUFJLEdBQUcsRUFBRTtBQUNQLGdCQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7T0FDZixNQUFNO0FBQ0wsaUJBQVMsQ0FBQyxJQUFJLEVBQUUsVUFBUyxHQUFHLEVBQUUsS0FBSyxFQUFFO0FBQ25DLGNBQUksR0FBRyxFQUFFO0FBQ1Asb0JBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztXQUNmLE1BQU07QUFDTCxnQkFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3ZDLG9CQUFRLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1dBQzNCO1NBQ0YsQ0FBQyxDQUFDO09BQ0o7S0FDRixDQUFDLENBQUM7R0FDSixDQUFDOztBQUVGLFdBQVMsV0FBVyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUU7QUFDbkMsUUFBSSxPQUFPLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDaEMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7O0FBRWpDLFFBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxPQUFPLENBQUMsTUFBTSxJQUM1QixPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtBQUN6QixhQUFPLFFBQVEsQ0FBQyxJQUFJLFlBQVcsU0FBUyxDQUFDLDJEQUEyRCxDQUFDLENBQUMsQ0FBQztLQUN4Rzs7QUFFRCxzQkFBTSxHQUFHLENBQUMsT0FBTyxFQUFFLFVBQVMsTUFBTSxFQUFFLFFBQVEsRUFBRTtBQUMxQyxVQUFJLE1BQU0sS0FB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LEdBQUcsQ0FBQztPQUNwQyxDQUFDLENBQUM7S0FDSjs7QUFFRCxRQUFJLElBQUksQ0FBQyxHQUFHLEVBQUU7QUFDWixzQkFBRyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQ2hEO0FBQ0QsVUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7O0FBRXJCLFFBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtBQUNmLHNCQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztLQUMvQyxNQUFNO0FBQ0wsYUFBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUNyQjtHQUNGLENBQUM7O0FBRUYsV0FBUyxTQUFTLENBQUMsS0FBSyxFQUFFO0FBQ3hCLFNBQUssR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLEtBQUssR0FBRyxFQUFFLENBQUM7QUFDbkMsUUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDekIsV0FBSyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDakI7QUFDRCxXQUFPLEtBQUssQ0FBQztHQUNkIiwiZmlsZSI6InByZWNvbXBpbGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IEFzeW5jIGZyb20gJ2FzeW5jJztcbmltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBIYW5kbGViYXJzIGZyb20gJy4vaGFuZGxlYmFycyc7XG5pbXBvcnQge2Jhc2VuYW1lfSBmcm9tICdwYXRoJztcbmltcG9ydCB7U291cmNlTWFwQ29uc3VtZXIsIFNvdXJjZU5vZGV9IGZyb20gJ3NvdXJjZS1tYXAnO1xuaW1wb3J0IHVnbGlmeSBmcm9tICd1Z2xpZnktanMnO1xuXG5tb2R1bGUuZXhwb3J0cy5sb2FkVGVtcGxhdGVzID0gZnVuY3Rpb24ob3B0cywgY2FsbGJhY2spIHtcbiAgbG9hZFN0cmluZ3Mob3B0cywgZnVuY3Rpb24oZXJyLCBzdHJpbmdzKSB7XG4gICAgaWYgKGVycikge1xuICAgICAgY2FsbGJhY2soZXJyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9hZEZpbGVzKG9wdHMsIGZ1bmN0aW9uKGVyciwgZmlsZXMpIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIGNhbGxiYWNrKGVycik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3B0cy50ZW1wbGF0ZXMgPSBzdHJpbmdzLmNvbmNhdChmaWxlcyk7XG4gICAgICAgICAgY2FsbGJhY2sodW5kZWZpbmVkLCBvcHRzKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9KTtcbn07XG5cbmZ1bmN0aW9uIGxvYWRTdHJpbmdzKG9wdHMsIGNhbGxiYWNrKSB7XG4gIGxldCBzdHJpbmdzID0gYXJyYXlDYXN0KG9wdHMuc3RyaW5nKSxcbiAgICAgIG5hbWVzID0gYXJyYXlDYXN0KG9wdHMubmFtZSk7XG5cbiAgaWYgKG5hbWVzLmxlbmd0aCAhPT0gc3RyaW5ncy5sZW5ndGhcbiAgICAgICYmIHN0cmluZ3MubGVuZ3RoID4gMSkge1xuICAgIHJldHVybiBjYWxsYmFjayhuZXcgSGFuZGxlYmFycy5FeGNlcHRpb24oJ051bWJlciBvZiBuYW1lcyBkaWQgbm90IG1hdGNoIHRoZSBudW1iZXIgb2Ygc3RyaW5nIGlucHV0cycpKTtcbiAgfVxuXG4gIEFzeW5jLm1hcChzdHJpbmdzLCBmdW5jdGlvbihzdHJpbmcsIGNhbGxiYWNrKSB7XG4gICAgICBpZiAoc3RyaW5nICE9PSAnLScpIHtcbiAgICAgICAgY2FsbGJhY2sodW5kZWZpbmVkLCBzdHJpbmcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gTG9hZCBmcm9tIHN0ZGluXG4gICAgICAgIGxldCBidWZmZXIgPSAnJztcbiAgICAgICAgcHJvY2Vzcy5zdGRpbi5zZXRFbmNvZGluZygndXRmOCcpO1xuXG4gICAgICAgIHByb2Nlc3Muc3RkaW4ub24oJ2RhdGEnLCBmdW5jdGlvbihjaHVuaykge1xuICAgICAgICAgIGJ1ZmZlciArPSBjaHVuaztcbiAgICAgICAgfSk7XG4gICAgICAgIHByb2Nlc3Muc3RkaW4ub24oJ2VuZCcsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIGNhbGxiYWNrKHVuZGVmaW5lZCwgYnVmZmVyKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBmdW5jdGlvbihlcnIsIHN0cmluZ3MpIHtcbiAgICAgIHN0cmluZ3MgPSBzdHJpbmdzLm1hcCgoc3RyaW5nLCBpbmRleCkgPT4gKHtcbiAgICAgICAgbmFtZTogbmFtZXNbaW5kZXhdLFxuICAgICAgICBwYXRoOiBuYW1lc1tpbmRleF0sXG4gICAgICAgIHNvdXJjZTogc3RyaW5nXG4gICAgICB9KSk7XG4gICAgICBjYWxsYmFjayhlcnIsIHN0cmluZ3MpO1xuICAgIH0pO1xufVxuXG5mdW5jdGlvbiBsb2FkRmlsZXMob3B0cywgY2FsbGJhY2spIHtcbiAgLy8gQnVpbGQgZmlsZSBleHRlbnNpb24gcGF0dGVyblxuICBsZXQgZXh0ZW5zaW9uID0gKG9wdHMuZXh0ZW5zaW9uIHx8ICdoYW5kbGViYXJzJykucmVwbGFjZSgvW1xcXFxeJCorPy4oKTo9IXx7fVxcLVxcW1xcXV0vZywgZnVuY3Rpb24oYXJnKSB7IHJldHVybiAnXFxcXCcgKyBhcmc7IH0pO1xuICBleHRlbnNpb24gPSBuZXcgUmVnRXhwKCdcXFxcLicgKyBleHRlbnNpb24gKyAnJCcpO1xuXG4gIGxldCByZXQgPSBbXSxcbiAgICAgIHF1ZXVlID0gKG9wdHMuZmlsZXMgfHwgW10pLm1hcCgodGVtcGxhdGUpID0+ICh7dGVtcGxhdGUsIHJvb3Q6IG9wdHMucm9vdH0pKTtcbiAgQXN5bmMud2hpbHN0KCgpID0+IHF1ZXVlLmxlbmd0aCwgZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgICBsZXQge3RlbXBsYXRlOiBwYXRoLCByb290fSA9IHF1ZXVlLnNoaWZ0KCk7XG5cbiAgICBmcy5zdGF0KHBhdGgsIGZ1bmN0aW9uKGVyciwgc3RhdCkge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICByZXR1cm4gY2FsbGJhY2sobmV3IEhhbmRsZWJhcnMuRXhjZXB0aW9uKGBVbmFibGUgdG8gb3BlbiB0ZW1wbGF0ZSBmaWxlIFwiJHtwYXRofVwiYCkpO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RhdC5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgIG9wdHMuaGFzRGlyZWN0b3J5ID0gdHJ1ZTtcblxuICAgICAgICBmcy5yZWFkZGlyKHBhdGgsIGZ1bmN0aW9uKGVyciwgY2hpbGRyZW4pIHtcbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCA6IFJhY2UgY29uZGl0aW9uIHRoYXQgYmVpbmcgdG9vIGxhenkgdG8gdGVzdCAqL1xuICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uKGZpbGUpIHtcbiAgICAgICAgICAgIGxldCBjaGlsZFBhdGggPSBwYXRoICsgJy8nICsgZmlsZTtcblxuICAgICAgICAgICAgaWYgKGV4dGVuc2lvbi50ZXN0KGNoaWxkUGF0aCkgfHwgZnMuc3RhdFN5bmMoY2hpbGRQYXRoKS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgICAgICAgIHF1ZXVlLnB1c2goe3RlbXBsYXRlOiBjaGlsZFBhdGgsIHJvb3Q6IHJvb3QgfHwgcGF0aH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmcy5yZWFkRmlsZShwYXRoLCAndXRmOCcsIGZ1bmN0aW9uKGVyciwgZGF0YSkge1xuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0IDogUmFjZSBjb25kaXRpb24gdGhhdCBiZWluZyB0b28gbGF6eSB0byB0ZXN0ICovXG4gICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKG9wdHMuYm9tICYmIGRhdGEuaW5kZXhPZignXFx1RkVGRicpID09PSAwKSB7XG4gICAgICAgICAgICBkYXRhID0gZGF0YS5zdWJzdHJpbmcoMSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gQ2xlYW4gdGhlIHRlbXBsYXRlIG5hbWVcbiAgICAgICAgICBsZXQgbmFtZSA9IHBhdGg7XG4gICAgICAgICAgaWYgKCFyb290KSB7XG4gICAgICAgICAgICBuYW1lID0gYmFzZW5hbWUobmFtZSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChuYW1lLmluZGV4T2Yocm9vdCkgPT09IDApIHtcbiAgICAgICAgICAgIG5hbWUgPSBuYW1lLnN1YnN0cmluZyhyb290Lmxlbmd0aCArIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBuYW1lID0gbmFtZS5yZXBsYWNlKGV4dGVuc2lvbiwgJycpO1xuXG4gICAgICAgICAgcmV0LnB1c2goe1xuICAgICAgICAgICAgcGF0aDogcGF0aCxcbiAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICBzb3VyY2U6IGRhdGFcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuICBmdW5jdGlvbihlcnIpIHtcbiAgICBpZiAoZXJyKSB7XG4gICAgICBjYWxsYmFjayhlcnIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYWxsYmFjayh1bmRlZmluZWQsIHJldCk7XG4gICAgfVxuICB9KTtcbn1cblxubW9kdWxlLmV4cG9ydHMuY2xpID0gZnVuY3Rpb24ob3B0cykge1xuICBpZiAob3B0cy52ZXJzaW9uKSB7XG4gICAgY29uc29sZS5sb2coSGFuZGxlYmFycy5WRVJTSU9OKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoIW9wdHMudGVtcGxhdGVzLmxlbmd0aCAmJiAhb3B0cy5oYXNEaXJlY3RvcnkpIHtcbiAgICB0aHJvdyBuZXcgSGFuZGxlYmFycy5FeGNlcHRpb24oJ011c3QgZGVmaW5lIGF0IGxlYXN0IG9uZSB0ZW1wbGF0ZSBvciBkaXJlY3RvcnkuJyk7XG4gIH1cblxuICBpZiAob3B0cy5zaW1wbGUgJiYgb3B0cy5taW4pIHtcbiAgICB0aHJvdyBuZXcgSGFuZGxlYmFycy5FeGNlcHRpb24oJ1VuYWJsZSB0byBtaW5pbWl6ZSBzaW1wbGUgb3V0cHV0Jyk7XG4gIH1cblxuICBjb25zdCBtdWx0aXBsZSA9IG9wdHMudGVtcGxhdGVzLmxlbmd0aCAhPT0gMSB8fCBvcHRzLmhhc0RpcmVjdG9yeTtcbiAgaWYgKG9wdHMuc2ltcGxlICYmIG11bHRpcGxlKSB7XG4gICAgdGhyb3cgbmV3IEhhbmRsZWJhcnMuRXhjZXB0aW9uKCdVbmFibGUgdG8gb3V0cHV0IG11bHRpcGxlIHRlbXBsYXRlcyBpbiBzaW1wbGUgbW9kZScpO1xuICB9XG5cbiAgLy8gRm9yY2Ugc2ltcGxlIG1vZGUgaWYgd2UgaGF2ZSBvbmx5IG9uZSB0ZW1wbGF0ZSBhbmQgaXQncyB1bm5hbWVkLlxuICBpZiAoIW9wdHMuYW1kICYmICFvcHRzLmNvbW1vbmpzICYmIG9wdHMudGVtcGxhdGVzLmxlbmd0aCA9PT0gMVxuICAgICAgJiYgIW9wdHMudGVtcGxhdGVzWzBdLm5hbWUpIHtcbiAgICBvcHRzLnNpbXBsZSA9IHRydWU7XG4gIH1cblxuICAvLyBDb252ZXJ0IHRoZSBrbm93biBsaXN0IGludG8gYSBoYXNoXG4gIGxldCBrbm93biA9IHt9O1xuICBpZiAob3B0cy5rbm93biAmJiAhQXJyYXkuaXNBcnJheShvcHRzLmtub3duKSkge1xuICAgIG9wdHMua25vd24gPSBbb3B0cy5rbm93bl07XG4gIH1cbiAgaWYgKG9wdHMua25vd24pIHtcbiAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gb3B0cy5rbm93bi5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAga25vd25bb3B0cy5rbm93bltpXV0gPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG9iamVjdE5hbWUgPSBvcHRzLnBhcnRpYWwgPyAnSGFuZGxlYmFycy5wYXJ0aWFscycgOiAndGVtcGxhdGVzJztcblxuICBsZXQgb3V0cHV0ID0gbmV3IFNvdXJjZU5vZGUoKTtcbiAgaWYgKCFvcHRzLnNpbXBsZSkge1xuICAgIGlmIChvcHRzLmFtZCkge1xuICAgICAgb3V0cHV0LmFkZCgnZGVmaW5lKFtcXCcnICsgb3B0cy5oYW5kbGViYXJQYXRoICsgJ2hhbmRsZWJhcnMucnVudGltZVxcJ10sIGZ1bmN0aW9uKEhhbmRsZWJhcnMpIHtcXG4gIEhhbmRsZWJhcnMgPSBIYW5kbGViYXJzW1wiZGVmYXVsdFwiXTsnKTtcbiAgICB9IGVsc2UgaWYgKG9wdHMuY29tbW9uanMpIHtcbiAgICAgIG91dHB1dC5hZGQoJ3ZhciBIYW5kbGViYXJzID0gcmVxdWlyZShcIicgKyBvcHRzLmNvbW1vbmpzICsgJ1wiKTsnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0cHV0LmFkZCgnKGZ1bmN0aW9uKCkge1xcbicpO1xuICAgIH1cbiAgICBvdXRwdXQuYWRkKCcgIHZhciB0ZW1wbGF0ZSA9IEhhbmRsZWJhcnMudGVtcGxhdGUsIHRlbXBsYXRlcyA9ICcpO1xuICAgIGlmIChvcHRzLm5hbWVzcGFjZSkge1xuICAgICAgb3V0cHV0LmFkZChvcHRzLm5hbWVzcGFjZSk7XG4gICAgICBvdXRwdXQuYWRkKCcgPSAnKTtcbiAgICAgIG91dHB1dC5hZGQob3B0cy5uYW1lc3BhY2UpO1xuICAgICAgb3V0cHV0LmFkZCgnIHx8ICcpO1xuICAgIH1cbiAgICBvdXRwdXQuYWRkKCd7fTtcXG4nKTtcbiAgfVxuXG4gIG9wdHMudGVtcGxhdGVzLmZvckVhY2goZnVuY3Rpb24odGVtcGxhdGUpIHtcbiAgICBsZXQgb3B0aW9ucyA9IHtcbiAgICAgIGtub3duSGVscGVyczoga25vd24sXG4gICAgICBrbm93bkhlbHBlcnNPbmx5OiBvcHRzLm9cbiAgICB9O1xuXG4gICAgaWYgKG9wdHMubWFwKSB7XG4gICAgICBvcHRpb25zLnNyY05hbWUgPSB0ZW1wbGF0ZS5wYXRoO1xuICAgIH1cbiAgICBpZiAob3B0cy5kYXRhKSB7XG4gICAgICBvcHRpb25zLmRhdGEgPSB0cnVlO1xuICAgIH1cblxuICAgIGxldCBwcmVjb21waWxlZCA9IEhhbmRsZWJhcnMucHJlY29tcGlsZSh0ZW1wbGF0ZS5zb3VyY2UsIG9wdGlvbnMpO1xuXG4gICAgLy8gSWYgd2UgYXJlIGdlbmVyYXRpbmcgYSBzb3VyY2UgbWFwLCB3ZSBoYXZlIHRvIHJlY29uc3RydWN0IHRoZSBTb3VyY2VOb2RlIG9iamVjdFxuICAgIGlmIChvcHRzLm1hcCkge1xuICAgICAgbGV0IGNvbnN1bWVyID0gbmV3IFNvdXJjZU1hcENvbnN1bWVyKHByZWNvbXBpbGVkLm1hcCk7XG4gICAgICBwcmVjb21waWxlZCA9IFNvdXJjZU5vZGUuZnJvbVN0cmluZ1dpdGhTb3VyY2VNYXAocHJlY29tcGlsZWQuY29kZSwgY29uc3VtZXIpO1xuICAgIH1cblxuICAgIGlmIChvcHRzLnNpbXBsZSkge1xuICAgICAgb3V0cHV0LmFkZChbcHJlY29tcGlsZWQsICdcXG4nXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghdGVtcGxhdGUubmFtZSkge1xuICAgICAgICB0aHJvdyBuZXcgSGFuZGxlYmFycy5FeGNlcHRpb24oJ05hbWUgbWlzc2luZyBmb3IgdGVtcGxhdGUnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdHMuYW1kICYmICFtdWx0aXBsZSkge1xuICAgICAgICBvdXRwdXQuYWRkKCdyZXR1cm4gJyk7XG4gICAgICB9XG4gICAgICBvdXRwdXQuYWRkKFtvYmplY3ROYW1lLCAnW1xcJycsIHRlbXBsYXRlLm5hbWUsICdcXCddID0gdGVtcGxhdGUoJywgcHJlY29tcGlsZWQsICcpO1xcbiddKTtcbiAgICB9XG4gIH0pO1xuXG4gIC8vIE91dHB1dCB0aGUgY29udGVudFxuICBpZiAoIW9wdHMuc2ltcGxlKSB7XG4gICAgaWYgKG9wdHMuYW1kKSB7XG4gICAgICBpZiAobXVsdGlwbGUpIHtcbiAgICAgICAgb3V0cHV0LmFkZChbJ3JldHVybiAnLCBvYmplY3ROYW1lLCAnO1xcbiddKTtcbiAgICAgIH1cbiAgICAgIG91dHB1dC5hZGQoJ30pOycpO1xuICAgIH0gZWxzZSBpZiAoIW9wdHMuY29tbW9uanMpIHtcbiAgICAgIG91dHB1dC5hZGQoJ30pKCk7Jyk7XG4gICAgfVxuICB9XG5cblxuICBpZiAob3B0cy5tYXApIHtcbiAgICBvdXRwdXQuYWRkKCdcXG4vLyMgc291cmNlTWFwcGluZ1VSTD0nICsgb3B0cy5tYXAgKyAnXFxuJyk7XG4gIH1cblxuICBvdXRwdXQgPSBvdXRwdXQudG9TdHJpbmdXaXRoU291cmNlTWFwKCk7XG4gIG91dHB1dC5tYXAgPSBvdXRwdXQubWFwICsgJyc7XG5cbiAgaWYgKG9wdHMubWluKSB7XG4gICAgb3V0cHV0ID0gdWdsaWZ5Lm1pbmlmeShvdXRwdXQuY29kZSwge1xuICAgICAgZnJvbVN0cmluZzogdHJ1ZSxcblxuICAgICAgb3V0U291cmNlTWFwOiBvcHRzLm1hcCxcbiAgICAgIGluU291cmNlTWFwOiBKU09OLnBhcnNlKG91dHB1dC5tYXApXG4gICAgfSk7XG4gIH1cblxuICBpZiAob3B0cy5tYXApIHtcbiAgICBmcy53cml0ZUZpbGVTeW5jKG9wdHMubWFwLCBvdXRwdXQubWFwLCAndXRmOCcpO1xuICB9XG4gIG91dHB1dCA9IG91dHB1dC5jb2RlO1xuXG4gIGlmIChvcHRzLm91dHB1dCkge1xuICAgIGZzLndyaXRlRmlsZVN5bmMob3B0cy5vdXRwdXQsIG91dHB1dCwgJ3V0ZjgnKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zb2xlLmxvZyhvdXRwdXQpO1xuICB9XG59O1xuXG5mdW5jdGlvbiBhcnJheUNhc3QodmFsdWUpIHtcbiAgdmFsdWUgPSB2YWx1ZSAhPSBudWxsID8gdmFsdWUgOiBbXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHZhbHVlID0gW3ZhbHVlXTtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG4iXX0= |
No preview for this file type
| 1 | 'use strict'; | ||
| 2 | |||
| 3 | exports.__esModule = true; | ||
| 4 | // istanbul ignore next | ||
| 5 | |||
| 6 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } | ||
| 7 | |||
| 8 | var _handlebarsRuntime = require('./handlebars.runtime'); | ||
| 9 | |||
| 10 | var _handlebarsRuntime2 = _interopRequireDefault(_handlebarsRuntime); | ||
| 11 | |||
| 12 | // Compiler imports | ||
| 13 | |||
| 14 | var _handlebarsCompilerAst = require('./handlebars/compiler/ast'); | ||
| 15 | |||
| 16 | var _handlebarsCompilerAst2 = _interopRequireDefault(_handlebarsCompilerAst); | ||
| 17 | |||
| 18 | var _handlebarsCompilerBase = require('./handlebars/compiler/base'); | ||
| 19 | |||
| 20 | var _handlebarsCompilerCompiler = require('./handlebars/compiler/compiler'); | ||
| 21 | |||
| 22 | var _handlebarsCompilerJavascriptCompiler = require('./handlebars/compiler/javascript-compiler'); | ||
| 23 | |||
| 24 | var _handlebarsCompilerJavascriptCompiler2 = _interopRequireDefault(_handlebarsCompilerJavascriptCompiler); | ||
| 25 | |||
| 26 | var _handlebarsCompilerVisitor = require('./handlebars/compiler/visitor'); | ||
| 27 | |||
| 28 | var _handlebarsCompilerVisitor2 = _interopRequireDefault(_handlebarsCompilerVisitor); | ||
| 29 | |||
| 30 | var _handlebarsNoConflict = require('./handlebars/no-conflict'); | ||
| 31 | |||
| 32 | var _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict); | ||
| 33 | |||
| 34 | var _create = _handlebarsRuntime2['default'].create; | ||
| 35 | function create() { | ||
| 36 | var hb = _create(); | ||
| 37 | |||
| 38 | hb.compile = function (input, options) { | ||
| 39 | return _handlebarsCompilerCompiler.compile(input, options, hb); | ||
| 40 | }; | ||
| 41 | hb.precompile = function (input, options) { | ||
| 42 | return _handlebarsCompilerCompiler.precompile(input, options, hb); | ||
| 43 | }; | ||
| 44 | |||
| 45 | hb.AST = _handlebarsCompilerAst2['default']; | ||
| 46 | hb.Compiler = _handlebarsCompilerCompiler.Compiler; | ||
| 47 | hb.JavaScriptCompiler = _handlebarsCompilerJavascriptCompiler2['default']; | ||
| 48 | hb.Parser = _handlebarsCompilerBase.parser; | ||
| 49 | hb.parse = _handlebarsCompilerBase.parse; | ||
| 50 | |||
| 51 | return hb; | ||
| 52 | } | ||
| 53 | |||
| 54 | var inst = create(); | ||
| 55 | inst.create = create; | ||
| 56 | |||
| 57 | _handlebarsNoConflict2['default'](inst); | ||
| 58 | |||
| 59 | inst.Visitor = _handlebarsCompilerVisitor2['default']; | ||
| 60 | |||
| 61 | inst['default'] = inst; | ||
| 62 | |||
| 63 | exports['default'] = inst; | ||
| 64 | module.exports = exports['default']; | ||
| 65 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9oYW5kbGViYXJzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7aUNBQW9CLHNCQUFzQjs7Ozs7O3FDQUcxQiwyQkFBMkI7Ozs7c0NBQ0gsNEJBQTRCOzswQ0FDdEIsZ0NBQWdDOztvREFDL0MsMkNBQTJDOzs7O3lDQUN0RCwrQkFBK0I7Ozs7b0NBRTVCLDBCQUEwQjs7OztBQUVqRCxJQUFJLE9BQU8sR0FBRywrQkFBUSxNQUFNLENBQUM7QUFDN0IsU0FBUyxNQUFNLEdBQUc7QUFDaEIsTUFBSSxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUM7O0FBRW5CLElBQUUsQ0FBQyxPQUFPLEdBQUcsVUFBUyxLQUFLLEVBQUUsT0FBTyxFQUFFO0FBQ3BDLFdBQU8sb0NBQVEsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztHQUNwQyxDQUFDO0FBQ0YsSUFBRSxDQUFDLFVBQVUsR0FBRyxVQUFTLEtBQUssRUFBRSxPQUFPLEVBQUU7QUFDdkMsV0FBTyx1Q0FBVyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0dBQ3ZDLENBQUM7O0FBRUYsSUFBRSxDQUFDLEdBQUcscUNBQU0sQ0FBQztBQUNiLElBQUUsQ0FBQyxRQUFRLHVDQUFXLENBQUM7QUFDdkIsSUFBRSxDQUFDLGtCQUFrQixvREFBcUIsQ0FBQztBQUMzQyxJQUFFLENBQUMsTUFBTSxpQ0FBUyxDQUFDO0FBQ25CLElBQUUsQ0FBQyxLQUFLLGdDQUFRLENBQUM7O0FBRWpCLFNBQU8sRUFBRSxDQUFDO0NBQ1g7O0FBRUQsSUFBSSxJQUFJLEdBQUcsTUFBTSxFQUFFLENBQUM7QUFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7O0FBRXJCLGtDQUFXLElBQUksQ0FBQyxDQUFDOztBQUVqQixJQUFJLENBQUMsT0FBTyx5Q0FBVSxDQUFDOztBQUV2QixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDOztxQkFFUixJQUFJIiwiZmlsZSI6ImhhbmRsZWJhcnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcnVudGltZSBmcm9tICcuL2hhbmRsZWJhcnMucnVudGltZSc7XG5cbi8vIENvbXBpbGVyIGltcG9ydHNcbmltcG9ydCBBU1QgZnJvbSAnLi9oYW5kbGViYXJzL2NvbXBpbGVyL2FzdCc7XG5pbXBvcnQgeyBwYXJzZXIgYXMgUGFyc2VyLCBwYXJzZSB9IGZyb20gJy4vaGFuZGxlYmFycy9jb21waWxlci9iYXNlJztcbmltcG9ydCB7IENvbXBpbGVyLCBjb21waWxlLCBwcmVjb21waWxlIH0gZnJvbSAnLi9oYW5kbGViYXJzL2NvbXBpbGVyL2NvbXBpbGVyJztcbmltcG9ydCBKYXZhU2NyaXB0Q29tcGlsZXIgZnJvbSAnLi9oYW5kbGViYXJzL2NvbXBpbGVyL2phdmFzY3JpcHQtY29tcGlsZXInO1xuaW1wb3J0IFZpc2l0b3IgZnJvbSAnLi9oYW5kbGViYXJzL2NvbXBpbGVyL3Zpc2l0b3InO1xuXG5pbXBvcnQgbm9Db25mbGljdCBmcm9tICcuL2hhbmRsZWJhcnMvbm8tY29uZmxpY3QnO1xuXG5sZXQgX2NyZWF0ZSA9IHJ1bnRpbWUuY3JlYXRlO1xuZnVuY3Rpb24gY3JlYXRlKCkge1xuICBsZXQgaGIgPSBfY3JlYXRlKCk7XG5cbiAgaGIuY29tcGlsZSA9IGZ1bmN0aW9uKGlucHV0LCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIGNvbXBpbGUoaW5wdXQsIG9wdGlvbnMsIGhiKTtcbiAgfTtcbiAgaGIucHJlY29tcGlsZSA9IGZ1bmN0aW9uKGlucHV0LCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIHByZWNvbXBpbGUoaW5wdXQsIG9wdGlvbnMsIGhiKTtcbiAgfTtcblxuICBoYi5BU1QgPSBBU1Q7XG4gIGhiLkNvbXBpbGVyID0gQ29tcGlsZXI7XG4gIGhiLkphdmFTY3JpcHRDb21waWxlciA9IEphdmFTY3JpcHRDb21waWxlcjtcbiAgaGIuUGFyc2VyID0gUGFyc2VyO1xuICBoYi5wYXJzZSA9IHBhcnNlO1xuXG4gIHJldHVybiBoYjtcbn1cblxubGV0IGluc3QgPSBjcmVhdGUoKTtcbmluc3QuY3JlYXRlID0gY3JlYXRlO1xuXG5ub0NvbmZsaWN0KGluc3QpO1xuXG5pbnN0LlZpc2l0b3IgPSBWaXNpdG9yO1xuXG5pbnN0WydkZWZhdWx0J10gPSBpbnN0O1xuXG5leHBvcnQgZGVmYXVsdCBpbnN0O1xuIl19 |
| 1 | 'use strict'; | ||
| 2 | |||
| 3 | exports.__esModule = true; | ||
| 4 | // istanbul ignore next | ||
| 5 | |||
| 6 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } | ||
| 7 | |||
| 8 | // istanbul ignore next | ||
| 9 | |||
| 10 | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } } | ||
| 11 | |||
| 12 | var _handlebarsBase = require('./handlebars/base'); | ||
| 13 | |||
| 14 | var base = _interopRequireWildcard(_handlebarsBase); | ||
| 15 | |||
| 16 | // Each of these augment the Handlebars object. No need to setup here. | ||
| 17 | // (This is done to easily share code between commonjs and browse envs) | ||
| 18 | |||
| 19 | var _handlebarsSafeString = require('./handlebars/safe-string'); | ||
| 20 | |||
| 21 | var _handlebarsSafeString2 = _interopRequireDefault(_handlebarsSafeString); | ||
| 22 | |||
| 23 | var _handlebarsException = require('./handlebars/exception'); | ||
| 24 | |||
| 25 | var _handlebarsException2 = _interopRequireDefault(_handlebarsException); | ||
| 26 | |||
| 27 | var _handlebarsUtils = require('./handlebars/utils'); | ||
| 28 | |||
| 29 | var Utils = _interopRequireWildcard(_handlebarsUtils); | ||
| 30 | |||
| 31 | var _handlebarsRuntime = require('./handlebars/runtime'); | ||
| 32 | |||
| 33 | var runtime = _interopRequireWildcard(_handlebarsRuntime); | ||
| 34 | |||
| 35 | var _handlebarsNoConflict = require('./handlebars/no-conflict'); | ||
| 36 | |||
| 37 | var _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict); | ||
| 38 | |||
| 39 | // For compatibility and usage outside of module systems, make the Handlebars object a namespace | ||
| 40 | function create() { | ||
| 41 | var hb = new base.HandlebarsEnvironment(); | ||
| 42 | |||
| 43 | Utils.extend(hb, base); | ||
| 44 | hb.SafeString = _handlebarsSafeString2['default']; | ||
| 45 | hb.Exception = _handlebarsException2['default']; | ||
| 46 | hb.Utils = Utils; | ||
| 47 | hb.escapeExpression = Utils.escapeExpression; | ||
| 48 | |||
| 49 | hb.VM = runtime; | ||
| 50 | hb.template = function (spec) { | ||
| 51 | return runtime.template(spec, hb); | ||
| 52 | }; | ||
| 53 | |||
| 54 | return hb; | ||
| 55 | } | ||
| 56 | |||
| 57 | var inst = create(); | ||
| 58 | inst.create = create; | ||
| 59 | |||
| 60 | _handlebarsNoConflict2['default'](inst); | ||
| 61 | |||
| 62 | inst['default'] = inst; | ||
| 63 | |||
| 64 | exports['default'] = inst; | ||
| 65 | module.exports = exports['default']; | ||
| 66 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9oYW5kbGViYXJzLnJ1bnRpbWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OEJBQXNCLG1CQUFtQjs7SUFBN0IsSUFBSTs7Ozs7b0NBSU8sMEJBQTBCOzs7O21DQUMzQix3QkFBd0I7Ozs7K0JBQ3ZCLG9CQUFvQjs7SUFBL0IsS0FBSzs7aUNBQ1Esc0JBQXNCOztJQUFuQyxPQUFPOztvQ0FFSSwwQkFBMEI7Ozs7O0FBR2pELFNBQVMsTUFBTSxHQUFHO0FBQ2hCLE1BQUksRUFBRSxHQUFHLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7O0FBRTFDLE9BQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3ZCLElBQUUsQ0FBQyxVQUFVLG9DQUFhLENBQUM7QUFDM0IsSUFBRSxDQUFDLFNBQVMsbUNBQVksQ0FBQztBQUN6QixJQUFFLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUNqQixJQUFFLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFDOztBQUU3QyxJQUFFLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUNoQixJQUFFLENBQUMsUUFBUSxHQUFHLFVBQVMsSUFBSSxFQUFFO0FBQzNCLFdBQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7R0FDbkMsQ0FBQzs7QUFFRixTQUFPLEVBQUUsQ0FBQztDQUNYOztBQUVELElBQUksSUFBSSxHQUFHLE1BQU0sRUFBRSxDQUFDO0FBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDOztBQUVyQixrQ0FBVyxJQUFJLENBQUMsQ0FBQzs7QUFFakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQzs7cUJBRVIsSUFBSSIsImZpbGUiOiJoYW5kbGViYXJzLnJ1bnRpbWUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBiYXNlIGZyb20gJy4vaGFuZGxlYmFycy9iYXNlJztcblxuLy8gRWFjaCBvZiB0aGVzZSBhdWdtZW50IHRoZSBIYW5kbGViYXJzIG9iamVjdC4gTm8gbmVlZCB0byBzZXR1cCBoZXJlLlxuLy8gKFRoaXMgaXMgZG9uZSB0byBlYXNpbHkgc2hhcmUgY29kZSBiZXR3ZWVuIGNvbW1vbmpzIGFuZCBicm93c2UgZW52cylcbmltcG9ydCBTYWZlU3RyaW5nIGZyb20gJy4vaGFuZGxlYmFycy9zYWZlLXN0cmluZyc7XG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gJy4vaGFuZGxlYmFycy9leGNlcHRpb24nO1xuaW1wb3J0ICogYXMgVXRpbHMgZnJvbSAnLi9oYW5kbGViYXJzL3V0aWxzJztcbmltcG9ydCAqIGFzIHJ1bnRpbWUgZnJvbSAnLi9oYW5kbGViYXJzL3J1bnRpbWUnO1xuXG5pbXBvcnQgbm9Db25mbGljdCBmcm9tICcuL2hhbmRsZWJhcnMvbm8tY29uZmxpY3QnO1xuXG4vLyBGb3IgY29tcGF0aWJpbGl0eSBhbmQgdXNhZ2Ugb3V0c2lkZSBvZiBtb2R1bGUgc3lzdGVtcywgbWFrZSB0aGUgSGFuZGxlYmFycyBvYmplY3QgYSBuYW1lc3BhY2VcbmZ1bmN0aW9uIGNyZWF0ZSgpIHtcbiAgbGV0IGhiID0gbmV3IGJhc2UuSGFuZGxlYmFyc0Vudmlyb25tZW50KCk7XG5cbiAgVXRpbHMuZXh0ZW5kKGhiLCBiYXNlKTtcbiAgaGIuU2FmZVN0cmluZyA9IFNhZmVTdHJpbmc7XG4gIGhiLkV4Y2VwdGlvbiA9IEV4Y2VwdGlvbjtcbiAgaGIuVXRpbHMgPSBVdGlscztcbiAgaGIuZXNjYXBlRXhwcmVzc2lvbiA9IFV0aWxzLmVzY2FwZUV4cHJlc3Npb247XG5cbiAgaGIuVk0gPSBydW50aW1lO1xuICBoYi50ZW1wbGF0ZSA9IGZ1bmN0aW9uKHNwZWMpIHtcbiAgICByZXR1cm4gcnVudGltZS50ZW1wbGF0ZShzcGVjLCBoYik7XG4gIH07XG5cbiAgcmV0dXJuIGhiO1xufVxuXG5sZXQgaW5zdCA9IGNyZWF0ZSgpO1xuaW5zdC5jcmVhdGUgPSBjcmVhdGU7XG5cbm5vQ29uZmxpY3QoaW5zdCk7XG5cbmluc3RbJ2RlZmF1bHQnXSA9IGluc3Q7XG5cbmV4cG9ydCBkZWZhdWx0IGluc3Q7XG4iXX0= |
No preview for this file type
| 1 | 'use strict'; | ||
| 2 | |||
| 3 | exports.__esModule = true; | ||
| 4 | exports.HandlebarsEnvironment = HandlebarsEnvironment; | ||
| 5 | // istanbul ignore next | ||
| 6 | |||
| 7 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } | ||
| 8 | |||
| 9 | var _utils = require('./utils'); | ||
| 10 | |||
| 11 | var _exception = require('./exception'); | ||
| 12 | |||
| 13 | var _exception2 = _interopRequireDefault(_exception); | ||
| 14 | |||
| 15 | var _helpers = require('./helpers'); | ||
| 16 | |||
| 17 | var _decorators = require('./decorators'); | ||
| 18 | |||
| 19 | var _logger = require('./logger'); | ||
| 20 | |||
| 21 | var _logger2 = _interopRequireDefault(_logger); | ||
| 22 | |||
| 23 | var VERSION = '4.0.10'; | ||
| 24 | exports.VERSION = VERSION; | ||
| 25 | var COMPILER_REVISION = 7; | ||
| 26 | |||
| 27 | exports.COMPILER_REVISION = COMPILER_REVISION; | ||
| 28 | var REVISION_CHANGES = { | ||
| 29 | 1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it | ||
| 30 | 2: '== 1.0.0-rc.3', | ||
| 31 | 3: '== 1.0.0-rc.4', | ||
| 32 | 4: '== 1.x.x', | ||
| 33 | 5: '== 2.0.0-alpha.x', | ||
| 34 | 6: '>= 2.0.0-beta.1', | ||
| 35 | 7: '>= 4.0.0' | ||
| 36 | }; | ||
| 37 | |||
| 38 | exports.REVISION_CHANGES = REVISION_CHANGES; | ||
| 39 | var objectType = '[object Object]'; | ||
| 40 | |||
| 41 | function HandlebarsEnvironment(helpers, partials, decorators) { | ||
| 42 | this.helpers = helpers || {}; | ||
| 43 | this.partials = partials || {}; | ||
| 44 | this.decorators = decorators || {}; | ||
| 45 | |||
| 46 | _helpers.registerDefaultHelpers(this); | ||
| 47 | _decorators.registerDefaultDecorators(this); | ||
| 48 | } | ||
| 49 | |||
| 50 | HandlebarsEnvironment.prototype = { | ||
| 51 | constructor: HandlebarsEnvironment, | ||
| 52 | |||
| 53 | logger: _logger2['default'], | ||
| 54 | log: _logger2['default'].log, | ||
| 55 | |||
| 56 | registerHelper: function registerHelper(name, fn) { | ||
| 57 | if (_utils.toString.call(name) === objectType) { | ||
| 58 | if (fn) { | ||
| 59 | throw new _exception2['default']('Arg not supported with multiple helpers'); | ||
| 60 | } | ||
| 61 | _utils.extend(this.helpers, name); | ||
| 62 | } else { | ||
| 63 | this.helpers[name] = fn; | ||
| 64 | } | ||
| 65 | }, | ||
| 66 | unregisterHelper: function unregisterHelper(name) { | ||
| 67 | delete this.helpers[name]; | ||
| 68 | }, | ||
| 69 | |||
| 70 | registerPartial: function registerPartial(name, partial) { | ||
| 71 | if (_utils.toString.call(name) === objectType) { | ||
| 72 | _utils.extend(this.partials, name); | ||
| 73 | } else { | ||
| 74 | if (typeof partial === 'undefined') { | ||
| 75 | throw new _exception2['default']('Attempting to register a partial called "' + name + '" as undefined'); | ||
| 76 | } | ||
| 77 | this.partials[name] = partial; | ||
| 78 | } | ||
| 79 | }, | ||
| 80 | unregisterPartial: function unregisterPartial(name) { | ||
| 81 | delete this.partials[name]; | ||
| 82 | }, | ||
| 83 | |||
| 84 | registerDecorator: function registerDecorator(name, fn) { | ||
| 85 | if (_utils.toString.call(name) === objectType) { | ||
| 86 | if (fn) { | ||
| 87 | throw new _exception2['default']('Arg not supported with multiple decorators'); | ||
| 88 | } | ||
| 89 | _utils.extend(this.decorators, name); | ||
| 90 | } else { | ||
| 91 | this.decorators[name] = fn; | ||
| 92 | } | ||
| 93 | }, | ||
| 94 | unregisterDecorator: function unregisterDecorator(name) { | ||
| 95 | delete this.decorators[name]; | ||
| 96 | } | ||
| 97 | }; | ||
| 98 | |||
| 99 | var log = _logger2['default'].log; | ||
| 100 | |||
| 101 | exports.log = log; | ||
| 102 | exports.createFrame = _utils.createFrame; | ||
| 103 | exports.logger = _logger2['default']; | ||
| 104 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2Jhc2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7cUJBQTRDLFNBQVM7O3lCQUMvQixhQUFhOzs7O3VCQUNFLFdBQVc7OzBCQUNSLGNBQWM7O3NCQUNuQyxVQUFVOzs7O0FBRXRCLElBQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQzs7QUFDekIsSUFBTSxpQkFBaUIsR0FBRyxDQUFDLENBQUM7OztBQUU1QixJQUFNLGdCQUFnQixHQUFHO0FBQzlCLEdBQUMsRUFBRSxhQUFhO0FBQ2hCLEdBQUMsRUFBRSxlQUFlO0FBQ2xCLEdBQUMsRUFBRSxlQUFlO0FBQ2xCLEdBQUMsRUFBRSxVQUFVO0FBQ2IsR0FBQyxFQUFFLGtCQUFrQjtBQUNyQixHQUFDLEVBQUUsaUJBQWlCO0FBQ3BCLEdBQUMsRUFBRSxVQUFVO0NBQ2QsQ0FBQzs7O0FBRUYsSUFBTSxVQUFVLEdBQUcsaUJBQWlCLENBQUM7O0FBRTlCLFNBQVMscUJBQXFCLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUU7QUFDbkUsTUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLElBQUksRUFBRSxDQUFDO0FBQzdCLE1BQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxJQUFJLEVBQUUsQ0FBQztBQUMvQixNQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsSUFBSSxFQUFFLENBQUM7O0FBRW5DLGtDQUF1QixJQUFJLENBQUMsQ0FBQztBQUM3Qix3Q0FBMEIsSUFBSSxDQUFDLENBQUM7Q0FDakM7O0FBRUQscUJBQXFCLENBQUMsU0FBUyxHQUFHO0FBQ2hDLGFBQVcsRUFBRSxxQkFBcUI7O0FBRWxDLFFBQU0scUJBQVE7QUFDZCxLQUFHLEVBQUUsb0JBQU8sR0FBRzs7QUFFZixnQkFBYyxFQUFFLHdCQUFTLElBQUksRUFBRSxFQUFFLEVBQUU7QUFDakMsUUFBSSxnQkFBUyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssVUFBVSxFQUFFO0FBQ3RDLFVBQUksRUFBRSxFQUFFO0FBQUUsY0FBTSwyQkFBYyx5Q0FBeUMsQ0FBQyxDQUFDO09BQUU7QUFDM0Usb0JBQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztLQUM1QixNQUFNO0FBQ0wsVUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7S0FDekI7R0FDRjtBQUNELGtCQUFnQixFQUFFLDBCQUFTLElBQUksRUFBRTtBQUMvQixXQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7R0FDM0I7O0FBRUQsaUJBQWUsRUFBRSx5QkFBUyxJQUFJLEVBQUUsT0FBTyxFQUFFO0FBQ3ZDLFFBQUksZ0JBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLFVBQVUsRUFBRTtBQUN0QyxvQkFBTyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQzdCLE1BQU07QUFDTCxVQUFJLE9BQU8sT0FBTyxLQUFLLFdBQVcsRUFBRTtBQUNsQyxjQUFNLHlFQUEwRCxJQUFJLG9CQUFpQixDQUFDO09BQ3ZGO0FBQ0QsVUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUM7S0FDL0I7R0FDRjtBQUNELG1CQUFpQixFQUFFLDJCQUFTLElBQUksRUFBRTtBQUNoQyxXQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7R0FDNUI7O0FBRUQsbUJBQWlCLEVBQUUsMkJBQVMsSUFBSSxFQUFFLEVBQUUsRUFBRTtBQUNwQyxRQUFJLGdCQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxVQUFVLEVBQUU7QUFDdEMsVUFBSSxFQUFFLEVBQUU7QUFBRSxjQUFNLDJCQUFjLDRDQUE0QyxDQUFDLENBQUM7T0FBRTtBQUM5RSxvQkFBTyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQy9CLE1BQU07QUFDTCxVQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztLQUM1QjtHQUNGO0FBQ0QscUJBQW1CLEVBQUUsNkJBQVMsSUFBSSxFQUFFO0FBQ2xDLFdBQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztHQUM5QjtDQUNGLENBQUM7O0FBRUssSUFBSSxHQUFHLEdBQUcsb0JBQU8sR0FBRyxDQUFDOzs7UUFFcEIsV0FBVztRQUFFLE1BQU0iLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Y3JlYXRlRnJhbWUsIGV4dGVuZCwgdG9TdHJpbmd9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IEV4Y2VwdGlvbiBmcm9tICcuL2V4Y2VwdGlvbic7XG5pbXBvcnQge3JlZ2lzdGVyRGVmYXVsdEhlbHBlcnN9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQge3JlZ2lzdGVyRGVmYXVsdERlY29yYXRvcnN9IGZyb20gJy4vZGVjb3JhdG9ycyc7XG5pbXBvcnQgbG9nZ2VyIGZyb20gJy4vbG9nZ2VyJztcblxuZXhwb3J0IGNvbnN0IFZFUlNJT04gPSAnNC4wLjEwJztcbmV4cG9ydCBjb25zdCBDT01QSUxFUl9SRVZJU0lPTiA9IDc7XG5cbmV4cG9ydCBjb25zdCBSRVZJU0lPTl9DSEFOR0VTID0ge1xuICAxOiAnPD0gMS4wLnJjLjInLCAvLyAxLjAucmMuMiBpcyBhY3R1YWxseSByZXYyIGJ1dCBkb2Vzbid0IHJlcG9ydCBpdFxuICAyOiAnPT0gMS4wLjAtcmMuMycsXG4gIDM6ICc9PSAxLjAuMC1yYy40JyxcbiAgNDogJz09IDEueC54JyxcbiAgNTogJz09IDIuMC4wLWFscGhhLngnLFxuICA2OiAnPj0gMi4wLjAtYmV0YS4xJyxcbiAgNzogJz49IDQuMC4wJ1xufTtcblxuY29uc3Qgb2JqZWN0VHlwZSA9ICdbb2JqZWN0IE9iamVjdF0nO1xuXG5leHBvcnQgZnVuY3Rpb24gSGFuZGxlYmFyc0Vudmlyb25tZW50KGhlbHBlcnMsIHBhcnRpYWxzLCBkZWNvcmF0b3JzKSB7XG4gIHRoaXMuaGVscGVycyA9IGhlbHBlcnMgfHwge307XG4gIHRoaXMucGFydGlhbHMgPSBwYXJ0aWFscyB8fCB7fTtcbiAgdGhpcy5kZWNvcmF0b3JzID0gZGVjb3JhdG9ycyB8fCB7fTtcblxuICByZWdpc3RlckRlZmF1bHRIZWxwZXJzKHRoaXMpO1xuICByZWdpc3RlckRlZmF1bHREZWNvcmF0b3JzKHRoaXMpO1xufVxuXG5IYW5kbGViYXJzRW52aXJvbm1lbnQucHJvdG90eXBlID0ge1xuICBjb25zdHJ1Y3RvcjogSGFuZGxlYmFyc0Vudmlyb25tZW50LFxuXG4gIGxvZ2dlcjogbG9nZ2VyLFxuICBsb2c6IGxvZ2dlci5sb2csXG5cbiAgcmVnaXN0ZXJIZWxwZXI6IGZ1bmN0aW9uKG5hbWUsIGZuKSB7XG4gICAgaWYgKHRvU3RyaW5nLmNhbGwobmFtZSkgPT09IG9iamVjdFR5cGUpIHtcbiAgICAgIGlmIChmbikgeyB0aHJvdyBuZXcgRXhjZXB0aW9uKCdBcmcgbm90IHN1cHBvcnRlZCB3aXRoIG11bHRpcGxlIGhlbHBlcnMnKTsgfVxuICAgICAgZXh0ZW5kKHRoaXMuaGVscGVycywgbmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGVscGVyc1tuYW1lXSA9IGZuO1xuICAgIH1cbiAgfSxcbiAgdW5yZWdpc3RlckhlbHBlcjogZnVuY3Rpb24obmFtZSkge1xuICAgIGRlbGV0ZSB0aGlzLmhlbHBlcnNbbmFtZV07XG4gIH0sXG5cbiAgcmVnaXN0ZXJQYXJ0aWFsOiBmdW5jdGlvbihuYW1lLCBwYXJ0aWFsKSB7XG4gICAgaWYgKHRvU3RyaW5nLmNhbGwobmFtZSkgPT09IG9iamVjdFR5cGUpIHtcbiAgICAgIGV4dGVuZCh0aGlzLnBhcnRpYWxzLCBuYW1lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHR5cGVvZiBwYXJ0aWFsID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKGBBdHRlbXB0aW5nIHRvIHJlZ2lzdGVyIGEgcGFydGlhbCBjYWxsZWQgXCIke25hbWV9XCIgYXMgdW5kZWZpbmVkYCk7XG4gICAgICB9XG4gICAgICB0aGlzLnBhcnRpYWxzW25hbWVdID0gcGFydGlhbDtcbiAgICB9XG4gIH0sXG4gIHVucmVnaXN0ZXJQYXJ0aWFsOiBmdW5jdGlvbihuYW1lKSB7XG4gICAgZGVsZXRlIHRoaXMucGFydGlhbHNbbmFtZV07XG4gIH0sXG5cbiAgcmVnaXN0ZXJEZWNvcmF0b3I6IGZ1bmN0aW9uKG5hbWUsIGZuKSB7XG4gICAgaWYgKHRvU3RyaW5nLmNhbGwobmFtZSkgPT09IG9iamVjdFR5cGUpIHtcbiAgICAgIGlmIChmbikgeyB0aHJvdyBuZXcgRXhjZXB0aW9uKCdBcmcgbm90IHN1cHBvcnRlZCB3aXRoIG11bHRpcGxlIGRlY29yYXRvcnMnKTsgfVxuICAgICAgZXh0ZW5kKHRoaXMuZGVjb3JhdG9ycywgbmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGVjb3JhdG9yc1tuYW1lXSA9IGZuO1xuICAgIH1cbiAgfSxcbiAgdW5yZWdpc3RlckRlY29yYXRvcjogZnVuY3Rpb24obmFtZSkge1xuICAgIGRlbGV0ZSB0aGlzLmRlY29yYXRvcnNbbmFtZV07XG4gIH1cbn07XG5cbmV4cG9ydCBsZXQgbG9nID0gbG9nZ2VyLmxvZztcblxuZXhwb3J0IHtjcmVhdGVGcmFtZSwgbG9nZ2VyfTtcbiJdfQ== |
No preview for this file type
| 1 | 'use strict'; | ||
| 2 | |||
| 3 | exports.__esModule = true; | ||
| 4 | var AST = { | ||
| 5 | // Public API used to evaluate derived attributes regarding AST nodes | ||
| 6 | helpers: { | ||
| 7 | // a mustache is definitely a helper if: | ||
| 8 | // * it is an eligible helper, and | ||
| 9 | // * it has at least one parameter or hash segment | ||
| 10 | helperExpression: function helperExpression(node) { | ||
| 11 | return node.type === 'SubExpression' || (node.type === 'MustacheStatement' || node.type === 'BlockStatement') && !!(node.params && node.params.length || node.hash); | ||
| 12 | }, | ||
| 13 | |||
| 14 | scopedId: function scopedId(path) { | ||
| 15 | return (/^\.|this\b/.test(path.original) | ||
| 16 | ); | ||
| 17 | }, | ||
| 18 | |||
| 19 | // an ID is simple if it only has one part, and that part is not | ||
| 20 | // `..` or `this`. | ||
| 21 | simpleId: function simpleId(path) { | ||
| 22 | return path.parts.length === 1 && !AST.helpers.scopedId(path) && !path.depth; | ||
| 23 | } | ||
| 24 | } | ||
| 25 | }; | ||
| 26 | |||
| 27 | // Must be exported as an object rather than the root of the module as the jison lexer | ||
| 28 | // must modify the object to operate properly. | ||
| 29 | exports['default'] = AST; | ||
| 30 | module.exports = exports['default']; | ||
| 31 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2NvbXBpbGVyL2FzdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFJLEdBQUcsR0FBRzs7QUFFUixTQUFPLEVBQUU7Ozs7QUFJUCxvQkFBZ0IsRUFBRSwwQkFBUyxJQUFJLEVBQUU7QUFDL0IsYUFBTyxBQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssZUFBZSxJQUM3QixDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssbUJBQW1CLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxnQkFBZ0IsQ0FBQSxJQUNuRSxDQUFDLEVBQUUsQUFBQyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFLLElBQUksQ0FBQyxJQUFJLENBQUEsQUFBQyxBQUFDLENBQUM7S0FDaEU7O0FBRUQsWUFBUSxFQUFFLGtCQUFTLElBQUksRUFBRTtBQUN2QixhQUFPLEFBQUMsYUFBWSxDQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQUM7S0FDM0M7Ozs7QUFJRCxZQUFRLEVBQUUsa0JBQVMsSUFBSSxFQUFFO0FBQ3ZCLGFBQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO0tBQzlFO0dBQ0Y7Q0FDRixDQUFDOzs7O3FCQUthLEdBQUciLCJmaWxlIjoiYXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsibGV0IEFTVCA9IHtcbiAgLy8gUHVibGljIEFQSSB1c2VkIHRvIGV2YWx1YXRlIGRlcml2ZWQgYXR0cmlidXRlcyByZWdhcmRpbmcgQVNUIG5vZGVzXG4gIGhlbHBlcnM6IHtcbiAgICAvLyBhIG11c3RhY2hlIGlzIGRlZmluaXRlbHkgYSBoZWxwZXIgaWY6XG4gICAgLy8gKiBpdCBpcyBhbiBlbGlnaWJsZSBoZWxwZXIsIGFuZFxuICAgIC8vICogaXQgaGFzIGF0IGxlYXN0IG9uZSBwYXJhbWV0ZXIgb3IgaGFzaCBzZWdtZW50XG4gICAgaGVscGVyRXhwcmVzc2lvbjogZnVuY3Rpb24obm9kZSkge1xuICAgICAgcmV0dXJuIChub2RlLnR5cGUgPT09ICdTdWJFeHByZXNzaW9uJylcbiAgICAgICAgICB8fCAoKG5vZGUudHlwZSA9PT0gJ011c3RhY2hlU3RhdGVtZW50JyB8fCBub2RlLnR5cGUgPT09ICdCbG9ja1N0YXRlbWVudCcpXG4gICAgICAgICAgICAmJiAhISgobm9kZS5wYXJhbXMgJiYgbm9kZS5wYXJhbXMubGVuZ3RoKSB8fCBub2RlLmhhc2gpKTtcbiAgICB9LFxuXG4gICAgc2NvcGVkSWQ6IGZ1bmN0aW9uKHBhdGgpIHtcbiAgICAgIHJldHVybiAoL15cXC58dGhpc1xcYi8pLnRlc3QocGF0aC5vcmlnaW5hbCk7XG4gICAgfSxcblxuICAgIC8vIGFuIElEIGlzIHNpbXBsZSBpZiBpdCBvbmx5IGhhcyBvbmUgcGFydCwgYW5kIHRoYXQgcGFydCBpcyBub3RcbiAgICAvLyBgLi5gIG9yIGB0aGlzYC5cbiAgICBzaW1wbGVJZDogZnVuY3Rpb24ocGF0aCkge1xuICAgICAgcmV0dXJuIHBhdGgucGFydHMubGVuZ3RoID09PSAxICYmICFBU1QuaGVscGVycy5zY29wZWRJZChwYXRoKSAmJiAhcGF0aC5kZXB0aDtcbiAgICB9XG4gIH1cbn07XG5cblxuLy8gTXVzdCBiZSBleHBvcnRlZCBhcyBhbiBvYmplY3QgcmF0aGVyIHRoYW4gdGhlIHJvb3Qgb2YgdGhlIG1vZHVsZSBhcyB0aGUgamlzb24gbGV4ZXJcbi8vIG11c3QgbW9kaWZ5IHRoZSBvYmplY3QgdG8gb3BlcmF0ZSBwcm9wZXJseS5cbmV4cG9ydCBkZWZhdWx0IEFTVDtcbiJdfQ== |
| 1 | 'use strict'; | ||
| 2 | |||
| 3 | exports.__esModule = true; | ||
| 4 | exports.parse = parse; | ||
| 5 | // istanbul ignore next | ||
| 6 | |||
| 7 | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } } | ||
| 8 | |||
| 9 | // istanbul ignore next | ||
| 10 | |||
| 11 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } | ||
| 12 | |||
| 13 | var _parser = require('./parser'); | ||
| 14 | |||
| 15 | var _parser2 = _interopRequireDefault(_parser); | ||
| 16 | |||
| 17 | var _whitespaceControl = require('./whitespace-control'); | ||
| 18 | |||
| 19 | var _whitespaceControl2 = _interopRequireDefault(_whitespaceControl); | ||
| 20 | |||
| 21 | var _helpers = require('./helpers'); | ||
| 22 | |||
| 23 | var Helpers = _interopRequireWildcard(_helpers); | ||
| 24 | |||
| 25 | var _utils = require('../utils'); | ||
| 26 | |||
| 27 | exports.parser = _parser2['default']; | ||
| 28 | |||
| 29 | var yy = {}; | ||
| 30 | _utils.extend(yy, Helpers); | ||
| 31 | |||
| 32 | function parse(input, options) { | ||
| 33 | // Just return if an already-compiled AST was passed in. | ||
| 34 | if (input.type === 'Program') { | ||
| 35 | return input; | ||
| 36 | } | ||
| 37 | |||
| 38 | _parser2['default'].yy = yy; | ||
| 39 | |||
| 40 | // Altering the shared object here, but this is ok as parser is a sync operation | ||
| 41 | yy.locInfo = function (locInfo) { | ||
| 42 | return new yy.SourceLocation(options && options.srcName, locInfo); | ||
| 43 | }; | ||
| 44 | |||
| 45 | var strip = new _whitespaceControl2['default'](options); | ||
| 46 | return strip.accept(_parser2['default'].parse(input)); | ||
| 47 | } | ||
| 48 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2NvbXBpbGVyL2Jhc2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O3NCQUFtQixVQUFVOzs7O2lDQUNDLHNCQUFzQjs7Ozt1QkFDM0IsV0FBVzs7SUFBeEIsT0FBTzs7cUJBQ0ksVUFBVTs7UUFFeEIsTUFBTTs7QUFFZixJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDWixjQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQzs7QUFFYixTQUFTLEtBQUssQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFOztBQUVwQyxNQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO0FBQUUsV0FBTyxLQUFLLENBQUM7R0FBRTs7QUFFL0Msc0JBQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQzs7O0FBR2YsSUFBRSxDQUFDLE9BQU8sR0FBRyxVQUFTLE9BQU8sRUFBRTtBQUM3QixXQUFPLElBQUksRUFBRSxDQUFDLGNBQWMsQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztHQUNuRSxDQUFDOztBQUVGLE1BQUksS0FBSyxHQUFHLG1DQUFzQixPQUFPLENBQUMsQ0FBQztBQUMzQyxTQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsb0JBQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7Q0FDMUMiLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXJzZXIgZnJvbSAnLi9wYXJzZXInO1xuaW1wb3J0IFdoaXRlc3BhY2VDb250cm9sIGZyb20gJy4vd2hpdGVzcGFjZS1jb250cm9sJztcbmltcG9ydCAqIGFzIEhlbHBlcnMgZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IGV4dGVuZCB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IHsgcGFyc2VyIH07XG5cbmxldCB5eSA9IHt9O1xuZXh0ZW5kKHl5LCBIZWxwZXJzKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlKGlucHV0LCBvcHRpb25zKSB7XG4gIC8vIEp1c3QgcmV0dXJuIGlmIGFuIGFscmVhZHktY29tcGlsZWQgQVNUIHdhcyBwYXNzZWQgaW4uXG4gIGlmIChpbnB1dC50eXBlID09PSAnUHJvZ3JhbScpIHsgcmV0dXJuIGlucHV0OyB9XG5cbiAgcGFyc2VyLnl5ID0geXk7XG5cbiAgLy8gQWx0ZXJpbmcgdGhlIHNoYXJlZCBvYmplY3QgaGVyZSwgYnV0IHRoaXMgaXMgb2sgYXMgcGFyc2VyIGlzIGEgc3luYyBvcGVyYXRpb25cbiAgeXkubG9jSW5mbyA9IGZ1bmN0aW9uKGxvY0luZm8pIHtcbiAgICByZXR1cm4gbmV3IHl5LlNvdXJjZUxvY2F0aW9uKG9wdGlvbnMgJiYgb3B0aW9ucy5zcmNOYW1lLCBsb2NJbmZvKTtcbiAgfTtcblxuICBsZXQgc3RyaXAgPSBuZXcgV2hpdGVzcGFjZUNvbnRyb2wob3B0aW9ucyk7XG4gIHJldHVybiBzdHJpcC5hY2NlcHQocGFyc2VyLnBhcnNlKGlucHV0KSk7XG59XG4iXX0= |
| 1 | /* global define */ | ||
| 2 | 'use strict'; | ||
| 3 | |||
| 4 | exports.__esModule = true; | ||
| 5 | |||
| 6 | var _utils = require('../utils'); | ||
| 7 | |||
| 8 | var SourceNode = undefined; | ||
| 9 | |||
| 10 | try { | ||
| 11 | /* istanbul ignore next */ | ||
| 12 | if (typeof define !== 'function' || !define.amd) { | ||
| 13 | // We don't support this in AMD environments. For these environments, we asusme that | ||
| 14 | // they are running on the browser and thus have no need for the source-map library. | ||
| 15 | var SourceMap = require('source-map'); | ||
| 16 | SourceNode = SourceMap.SourceNode; | ||
| 17 | } | ||
| 18 | } catch (err) {} | ||
| 19 | /* NOP */ | ||
| 20 | |||
| 21 | /* istanbul ignore if: tested but not covered in istanbul due to dist build */ | ||
| 22 | if (!SourceNode) { | ||
| 23 | SourceNode = function (line, column, srcFile, chunks) { | ||
| 24 | this.src = ''; | ||
| 25 | if (chunks) { | ||
| 26 | this.add(chunks); | ||
| 27 | } | ||
| 28 | }; | ||
| 29 | /* istanbul ignore next */ | ||
| 30 | SourceNode.prototype = { | ||
| 31 | add: function add(chunks) { | ||
| 32 | if (_utils.isArray(chunks)) { | ||
| 33 | chunks = chunks.join(''); | ||
| 34 | } | ||
| 35 | this.src += chunks; | ||
| 36 | }, | ||
| 37 | prepend: function prepend(chunks) { | ||
| 38 | if (_utils.isArray(chunks)) { | ||
| 39 | chunks = chunks.join(''); | ||
| 40 | } | ||
| 41 | this.src = chunks + this.src; | ||
| 42 | }, | ||
| 43 | toStringWithSourceMap: function toStringWithSourceMap() { | ||
| 44 | return { code: this.toString() }; | ||
| 45 | }, | ||
| 46 | toString: function toString() { | ||
| 47 | return this.src; | ||
| 48 | } | ||
| 49 | }; | ||
| 50 | } | ||
| 51 | |||
| 52 | function castChunk(chunk, codeGen, loc) { | ||
| 53 | if (_utils.isArray(chunk)) { | ||
| 54 | var ret = []; | ||
| 55 | |||
| 56 | for (var i = 0, len = chunk.length; i < len; i++) { | ||
| 57 | ret.push(codeGen.wrap(chunk[i], loc)); | ||
| 58 | } | ||
| 59 | return ret; | ||
| 60 | } else if (typeof chunk === 'boolean' || typeof chunk === 'number') { | ||
| 61 | // Handle primitives that the SourceNode will throw up on | ||
| 62 | return chunk + ''; | ||
| 63 | } | ||
| 64 | return chunk; | ||
| 65 | } | ||
| 66 | |||
| 67 | function CodeGen(srcFile) { | ||
| 68 | this.srcFile = srcFile; | ||
| 69 | this.source = []; | ||
| 70 | } | ||
| 71 | |||
| 72 | CodeGen.prototype = { | ||
| 73 | isEmpty: function isEmpty() { | ||
| 74 | return !this.source.length; | ||
| 75 | }, | ||
| 76 | prepend: function prepend(source, loc) { | ||
| 77 | this.source.unshift(this.wrap(source, loc)); | ||
| 78 | }, | ||
| 79 | push: function push(source, loc) { | ||
| 80 | this.source.push(this.wrap(source, loc)); | ||
| 81 | }, | ||
| 82 | |||
| 83 | merge: function merge() { | ||
| 84 | var source = this.empty(); | ||
| 85 | this.each(function (line) { | ||
| 86 | source.add([' ', line, '\n']); | ||
| 87 | }); | ||
| 88 | return source; | ||
| 89 | }, | ||
| 90 | |||
| 91 | each: function each(iter) { | ||
| 92 | for (var i = 0, len = this.source.length; i < len; i++) { | ||
| 93 | iter(this.source[i]); | ||
| 94 | } | ||
| 95 | }, | ||
| 96 | |||
| 97 | empty: function empty() { | ||
| 98 | var loc = this.currentLocation || { start: {} }; | ||
| 99 | return new SourceNode(loc.start.line, loc.start.column, this.srcFile); | ||
| 100 | }, | ||
| 101 | wrap: function wrap(chunk) { | ||
| 102 | var loc = arguments.length <= 1 || arguments[1] === undefined ? this.currentLocation || { start: {} } : arguments[1]; | ||
| 103 | |||
| 104 | if (chunk instanceof SourceNode) { | ||
| 105 | return chunk; | ||
| 106 | } | ||
| 107 | |||
| 108 | chunk = castChunk(chunk, this, loc); | ||
| 109 | |||
| 110 | return new SourceNode(loc.start.line, loc.start.column, this.srcFile, chunk); | ||
| 111 | }, | ||
| 112 | |||
| 113 | functionCall: function functionCall(fn, type, params) { | ||
| 114 | params = this.generateList(params); | ||
| 115 | return this.wrap([fn, type ? '.' + type + '(' : '(', params, ')']); | ||
| 116 | }, | ||
| 117 | |||
| 118 | quotedString: function quotedString(str) { | ||
| 119 | return '"' + (str + '').replace(/\\/g, '\\\\').replace(/"/g, '\\"').replace(/\n/g, '\\n').replace(/\r/g, '\\r').replace(/\u2028/g, '\\u2028') // Per Ecma-262 7.3 + 7.8.4 | ||
| 120 | .replace(/\u2029/g, '\\u2029') + '"'; | ||
| 121 | }, | ||
| 122 | |||
| 123 | objectLiteral: function objectLiteral(obj) { | ||
| 124 | var pairs = []; | ||
| 125 | |||
| 126 | for (var key in obj) { | ||
| 127 | if (obj.hasOwnProperty(key)) { | ||
| 128 | var value = castChunk(obj[key], this); | ||
| 129 | if (value !== 'undefined') { | ||
| 130 | pairs.push([this.quotedString(key), ':', value]); | ||
| 131 | } | ||
| 132 | } | ||
| 133 | } | ||
| 134 | |||
| 135 | var ret = this.generateList(pairs); | ||
| 136 | ret.prepend('{'); | ||
| 137 | ret.add('}'); | ||
| 138 | return ret; | ||
| 139 | }, | ||
| 140 | |||
| 141 | generateList: function generateList(entries) { | ||
| 142 | var ret = this.empty(); | ||
| 143 | |||
| 144 | for (var i = 0, len = entries.length; i < len; i++) { | ||
| 145 | if (i) { | ||
| 146 | ret.add(','); | ||
| 147 | } | ||
| 148 | |||
| 149 | ret.add(castChunk(entries[i], this)); | ||
| 150 | } | ||
| 151 | |||
| 152 | return ret; | ||
| 153 | }, | ||
| 154 | |||
| 155 | generateArray: function generateArray(entries) { | ||
| 156 | var ret = this.generateList(entries); | ||
| 157 | ret.prepend('['); | ||
| 158 | ret.add(']'); | ||
| 159 | |||
| 160 | return ret; | ||
| 161 | } | ||
| 162 | }; | ||
| 163 | |||
| 164 | exports['default'] = CodeGen; | ||
| 165 | module.exports = exports['default']; | ||
| 166 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2NvbXBpbGVyL2NvZGUtZ2VuLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O3FCQUNzQixVQUFVOztBQUVoQyxJQUFJLFVBQVUsWUFBQSxDQUFDOztBQUVmLElBQUk7O0FBRUYsTUFBSSxPQUFPLE1BQU0sS0FBSyxVQUFVLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFOzs7QUFHL0MsUUFBSSxTQUFTLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQ3RDLGNBQVUsR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDO0dBQ25DO0NBQ0YsQ0FBQyxPQUFPLEdBQUcsRUFBRSxFQUViOzs7O0FBQUEsQUFHRCxJQUFJLENBQUMsVUFBVSxFQUFFO0FBQ2YsWUFBVSxHQUFHLFVBQVMsSUFBSSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFO0FBQ25ELFFBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDO0FBQ2QsUUFBSSxNQUFNLEVBQUU7QUFDVixVQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQ2xCO0dBQ0YsQ0FBQzs7QUFFRixZQUFVLENBQUMsU0FBUyxHQUFHO0FBQ3JCLE9BQUcsRUFBRSxhQUFTLE1BQU0sRUFBRTtBQUNwQixVQUFJLGVBQVEsTUFBTSxDQUFDLEVBQUU7QUFDbkIsY0FBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7T0FDMUI7QUFDRCxVQUFJLENBQUMsR0FBRyxJQUFJLE1BQU0sQ0FBQztLQUNwQjtBQUNELFdBQU8sRUFBRSxpQkFBUyxNQUFNLEVBQUU7QUFDeEIsVUFBSSxlQUFRLE1BQU0sQ0FBQyxFQUFFO0FBQ25CLGNBQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO09BQzFCO0FBQ0QsVUFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztL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T0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNqQixPQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDOztBQUViLFdBQU8sR0FBRyxDQUFDO0dBQ1o7Q0FDRixDQUFDOztxQkFFYSxPQUFPIiwiZmlsZSI6ImNvZGUtZ2VuLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogZ2xvYmFsIGRlZmluZSAqL1xuaW1wb3J0IHtpc0FycmF5fSBmcm9tICcuLi91dGlscyc7XG5cbmxldCBTb3VyY2VOb2RlO1xuXG50cnkge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBpZiAodHlwZW9mIGRlZmluZSAhPT0gJ2Z1bmN0aW9uJyB8fCAhZGVmaW5lLmFtZCkge1xuICAgIC8vIFdlIGRvbid0IHN1cHBvcnQgdGhpcyBpbiBBTUQgZW52aXJvbm1lbnRzLiBGb3IgdGhlc2UgZW52aXJvbm1lbnRzLCB3ZSBhc3VzbWUgdGhhdFxuICAgIC8vIHRoZXkgYXJlIHJ1bm5pbmcgb24gdGhlIGJyb3dzZXIgYW5kIHRodXMgaGF2ZSBubyBuZWVkIGZvciB0aGUgc291cmNlLW1hcCBsaWJyYXJ5LlxuICAgIGxldCBTb3VyY2VNYXAgPSByZXF1aXJlKCdzb3VyY2UtbWFwJyk7XG4gICAgU291cmNlTm9kZSA9IFNvdXJjZU1hcC5Tb3VyY2VOb2RlO1xuICB9XG59IGNhdGNoIChlcnIpIHtcbiAgLyogTk9QICovXG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBpZjogdGVzdGVkIGJ1dCBub3QgY292ZXJlZCBpbiBpc3RhbmJ1bCBkdWUgdG8gZGlzdCBidWlsZCAgKi9cbmlmICghU291cmNlTm9kZSkge1xuICBTb3VyY2VOb2RlID0gZnVuY3Rpb24obGluZSwgY29sdW1uLCBzcmNGaWxlLCBjaHVua3MpIHtcbiAgICB0aGlzLnNyYyA9ICcnO1xuICAgIGlmIChjaHVua3MpIHtcbiAgICAgIHRoaXMuYWRkKGNodW5rcyk7XG4gICAgfVxuICB9O1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBTb3VyY2VOb2RlLnByb3RvdHlwZSA9IHtcbiAgICBhZGQ6IGZ1bmN0aW9uKGNodW5rcykge1xuICAgICAgaWYgKGlzQXJyYXkoY2h1bmtzKSkge1xuICAgICAgICBjaHVua3MgPSBjaHVua3Muam9pbignJyk7XG4gICAgICB9XG4gICAgICB0aGlzLnNyYyArPSBjaHVua3M7XG4gICAgfSxcbiAgICBwcmVwZW5kOiBmdW5jdGlvbihjaHVua3MpIHtcbiAgICAgIGlmIChpc0FycmF5KGNodW5rcykpIHtcbiAgICAgICAgY2h1bmtzID0gY2h1bmtzLmpvaW4oJycpO1xuICAgICAgfVxuICAgICAgdGhpcy5zcmMgPSBjaHVua3MgKyB0aGlzLnNyYztcbiAgICB9LFxuICAgIHRvU3RyaW5nV2l0aFNvdXJjZU1hcDogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4ge2NvZGU6IHRoaXMudG9TdHJpbmcoKX07XG4gICAgfSxcbiAgICB0b1N0cmluZzogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5zcmM7XG4gICAgfVxuICB9O1xufVxuXG5cbmZ1bmN0aW9uIGNhc3RDaHVuayhjaHVuaywgY29kZUdlbiwgbG9jKSB7XG4gIGlmIChpc0FycmF5KGNodW5rKSkge1xuICAgIGxldCByZXQgPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSBjaHVuay5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgcmV0LnB1c2goY29kZUdlbi53cmFwKGNodW5rW2ldLCBsb2MpKTtcbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfSBlbHNlIGlmICh0eXBlb2YgY2h1bmsgPT09ICdib29sZWFuJyB8fCB0eXBlb2YgY2h1bmsgPT09ICdudW1iZXInKSB7XG4gICAgLy8gSGFuZGxlIHByaW1pdGl2ZXMgdGhhdCB0aGUgU291cmNlTm9kZSB3aWxsIHRocm93IHVwIG9uXG4gICAgcmV0dXJuIGNodW5rICsgJyc7XG4gIH1cbiAgcmV0dXJuIGNodW5rO1xufVxuXG5cbmZ1bmN0aW9uIENvZGVHZW4oc3JjRmlsZSkge1xuICB0aGlzLnNyY0ZpbGUgPSBzcmNGaWxlO1xuICB0aGlzLnNvdXJjZSA9IFtdO1xufVxuXG5Db2RlR2VuLnByb3RvdHlwZSA9IHtcbiAgaXNFbXB0eSgpIHtcbiAgICByZXR1cm4gIXRoaXMuc291cmNlLmxlbmd0aDtcbiAgfSxcbiAgcHJlcGVuZDogZnVuY3Rpb24oc291cmNlLCBsb2MpIHtcbiAgICB0aGlzLnNvdXJjZS51bnNoaWZ0KHRoaXMud3JhcChzb3VyY2UsIGxvYykpO1xuICB9LFxuICBwdXNoOiBmdW5jdGlvbihzb3VyY2UsIGxvYykge1xuICAgIHRoaXMuc291cmNlLnB1c2godGhpcy53cmFwKHNvdXJjZSwgbG9jKSk7XG4gIH0sXG5cbiAgbWVyZ2U6IGZ1bmN0aW9uKCkge1xuICAgIGxldCBzb3VyY2UgPSB0aGlzLmVtcHR5KCk7XG4gICAgdGhpcy5lYWNoKGZ1bmN0aW9uKGxpbmUpIHtcbiAgICAgIHNvdXJjZS5hZGQoWycgICcsIGxpbmUsICdcXG4nXSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHNvdXJjZTtcbiAgfSxcblxuICBlYWNoOiBmdW5jdGlvbihpdGVyKSB7XG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHRoaXMuc291cmNlLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBpdGVyKHRoaXMuc291cmNlW2ldKTtcbiAgICB9XG4gIH0sXG5cbiAgZW1wdHk6IGZ1bmN0aW9uKCkge1xuICAgIGxldCBsb2MgPSB0aGlzLmN1cnJlbnRMb2NhdGlvbiB8fCB7c3RhcnQ6IHt9fTtcbiAgICByZXR1cm4gbmV3IFNvdXJjZU5vZGUobG9jLnN0YXJ0LmxpbmUsIGxvYy5zdGFydC5jb2x1bW4sIHRoaXMuc3JjRmlsZSk7XG4gIH0sXG4gIHdyYXA6IGZ1bmN0aW9uKGNodW5rLCBsb2MgPSB0aGlzLmN1cnJlbnRMb2NhdGlvbiB8fCB7c3RhcnQ6IHt9fSkge1xuICAgIGlmIChjaHVuayBpbnN0YW5jZW9mIFNvdXJjZU5vZGUpIHtcbiAgICAgIHJldHVybiBjaHVuaztcbiAgICB9XG5cbiAgICBjaHVuayA9IGNhc3RDaHVuayhjaHVuaywgdGhpcywgbG9jKTtcblxuICAgIHJldHVybiBuZXcgU291cmNlTm9kZShsb2Muc3RhcnQubGluZSwgbG9jLnN0YXJ0LmNvbHVtbiwgdGhpcy5zcmNGaWxlLCBjaHVuayk7XG4gIH0sXG5cbiAgZnVuY3Rpb25DYWxsOiBmdW5jdGlvbihmbiwgdHlwZSwgcGFyYW1zKSB7XG4gICAgcGFyYW1zID0gdGhpcy5nZW5lcmF0ZUxpc3QocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy53cmFwKFtmbiwgdHlwZSA/ICcuJyArIHR5cGUgKyAnKCcgOiAnKCcsIHBhcmFtcywgJyknXSk7XG4gIH0sXG5cbiAgcXVvdGVkU3RyaW5nOiBmdW5jdGlvbihzdHIpIHtcbiAgICByZXR1cm4gJ1wiJyArIChzdHIgKyAnJylcbiAgICAgIC5yZXBsYWNlKC9cXFxcL2csICdcXFxcXFxcXCcpXG4gICAgICAucmVwbGFjZSgvXCIvZywgJ1xcXFxcIicpXG4gICAgICAucmVwbGFjZSgvXFxuL2csICdcXFxcbicpXG4gICAgICAucmVwbGFjZSgvXFxyL2csICdcXFxccicpXG4gICAgICAucmVwbGFjZSgvXFx1MjAyOC9nLCAnXFxcXHUyMDI4JykgICAvLyBQZXIgRWNtYS0yNjIgNy4zICsgNy44LjRcbiAgICAgIC5yZXBsYWNlKC9cXHUyMDI5L2csICdcXFxcdTIwMjknKSArICdcIic7XG4gIH0sXG5cbiAgb2JqZWN0TGl0ZXJhbDogZnVuY3Rpb24ob2JqKSB7XG4gICAgbGV0IHBhaXJzID0gW107XG5cbiAgICBmb3IgKGxldCBrZXkgaW4gb2JqKSB7XG4gICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgbGV0IHZhbHVlID0gY2FzdENodW5rKG9ialtrZXldLCB0aGlzKTtcbiAgICAgICAgaWYgKHZhbHVlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIHBhaXJzLnB1c2goW3RoaXMucXVvdGVkU3RyaW5nKGtleSksICc6JywgdmFsdWVdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGxldCByZXQgPSB0aGlzLmdlbmVyYXRlTGlzdChwYWlycyk7XG4gICAgcmV0LnByZXBlbmQoJ3snKTtcbiAgICByZXQuYWRkKCd9Jyk7XG4gICAgcmV0dXJuIHJldDtcbiAgfSxcblxuXG4gIGdlbmVyYXRlTGlzdDogZnVuY3Rpb24oZW50cmllcykge1xuICAgIGxldCByZXQgPSB0aGlzLmVtcHR5KCk7XG5cbiAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gZW50cmllcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgaWYgKGkpIHtcbiAgICAgICAgcmV0LmFkZCgnLCcpO1xuICAgICAgfVxuXG4gICAgICByZXQuYWRkKGNhc3RDaHVuayhlbnRyaWVzW2ldLCB0aGlzKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJldDtcbiAgfSxcblxuICBnZW5lcmF0ZUFycmF5OiBmdW5jdGlvbihlbnRyaWVzKSB7XG4gICAgbGV0IHJldCA9IHRoaXMuZ2VuZXJhdGVMaXN0KGVudHJpZXMpO1xuICAgIHJldC5wcmVwZW5kKCdbJyk7XG4gICAgcmV0LmFkZCgnXScpO1xuXG4gICAgcmV0dXJuIHJldDtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgQ29kZUdlbjtcblxuIl19 |
| 1 | /* eslint-disable new-cap */ | ||
| 2 | |||
| 3 | 'use strict'; | ||
| 4 | |||
| 5 | exports.__esModule = true; | ||
| 6 | exports.Compiler = Compiler; | ||
| 7 | exports.precompile = precompile; | ||
| 8 | exports.compile = compile; | ||
| 9 | // istanbul ignore next | ||
| 10 | |||
| 11 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } | ||
| 12 | |||
| 13 | var _exception = require('../exception'); | ||
| 14 | |||
| 15 | var _exception2 = _interopRequireDefault(_exception); | ||
| 16 | |||
| 17 | var _utils = require('../utils'); | ||
| 18 | |||
| 19 | var _ast = require('./ast'); | ||
| 20 | |||
| 21 | var _ast2 = _interopRequireDefault(_ast); | ||
| 22 | |||
| 23 | var slice = [].slice; | ||
| 24 | |||
| 25 | function Compiler() {} | ||
| 26 | |||
| 27 | // the foundHelper register will disambiguate helper lookup from finding a | ||
| 28 | // function in a context. This is necessary for mustache compatibility, which | ||
| 29 | // requires that context functions in blocks are evaluated by blockHelperMissing, | ||
| 30 | // and then proceed as if the resulting value was provided to blockHelperMissing. | ||
| 31 | |||
| 32 | Compiler.prototype = { | ||
| 33 | compiler: Compiler, | ||
| 34 | |||
| 35 | equals: function equals(other) { | ||
| 36 | var len = this.opcodes.length; | ||
| 37 | if (other.opcodes.length !== len) { | ||
| 38 | return false; | ||
| 39 | } | ||
| 40 | |||
| 41 | for (var i = 0; i < len; i++) { | ||
| 42 | var opcode = this.opcodes[i], | ||
| 43 | otherOpcode = other.opcodes[i]; | ||
| 44 | if (opcode.opcode !== otherOpcode.opcode || !argEquals(opcode.args, otherOpcode.args)) { | ||
| 45 | return false; | ||
| 46 | } | ||
| 47 | } | ||
| 48 | |||
| 49 | // We know that length is the same between the two arrays because they are directly tied | ||
| 50 | // to the opcode behavior above. | ||
| 51 | len = this.children.length; | ||
| 52 | for (var i = 0; i < len; i++) { | ||
| 53 | if (!this.children[i].equals(other.children[i])) { | ||
| 54 | return false; | ||
| 55 | } | ||
| 56 | } | ||
| 57 | |||
| 58 | return true; | ||
| 59 | }, | ||
| 60 | |||
| 61 | guid: 0, | ||
| 62 | |||
| 63 | compile: function compile(program, options) { | ||
| 64 | this.sourceNode = []; | ||
| 65 | this.opcodes = []; | ||
| 66 | this.children = []; | ||
| 67 | this.options = options; | ||
| 68 | this.stringParams = options.stringParams; | ||
| 69 | this.trackIds = options.trackIds; | ||
| 70 | |||
| 71 | options.blockParams = options.blockParams || []; | ||
| 72 | |||
| 73 | // These changes will propagate to the other compiler components | ||
| 74 | var knownHelpers = options.knownHelpers; | ||
| 75 | options.knownHelpers = { | ||
| 76 | 'helperMissing': true, | ||
| 77 | 'blockHelperMissing': true, | ||
| 78 | 'each': true, | ||
| 79 | 'if': true, | ||
| 80 | 'unless': true, | ||
| 81 | 'with': true, | ||
| 82 | 'log': true, | ||
| 83 | 'lookup': true | ||
| 84 | }; | ||
| 85 | if (knownHelpers) { | ||
| 86 | for (var _name in knownHelpers) { | ||
| 87 | /* istanbul ignore else */ | ||
| 88 | if (_name in knownHelpers) { | ||
| 89 | this.options.knownHelpers[_name] = knownHelpers[_name]; | ||
| 90 | } | ||
| 91 | } | ||
| 92 | } | ||
| 93 | |||
| 94 | return this.accept(program); | ||
| 95 | }, | ||
| 96 | |||
| 97 | compileProgram: function compileProgram(program) { | ||
| 98 | var childCompiler = new this.compiler(), | ||
| 99 | // eslint-disable-line new-cap | ||
| 100 | result = childCompiler.compile(program, this.options), | ||
| 101 | guid = this.guid++; | ||
| 102 | |||
| 103 | this.usePartial = this.usePartial || result.usePartial; | ||
| 104 | |||
| 105 | this.children[guid] = result; | ||
| 106 | this.useDepths = this.useDepths || result.useDepths; | ||
| 107 | |||
| 108 | return guid; | ||
| 109 | }, | ||
| 110 | |||
| 111 | accept: function accept(node) { | ||
| 112 | /* istanbul ignore next: Sanity code */ | ||
| 113 | if (!this[node.type]) { | ||
| 114 | throw new _exception2['default']('Unknown type: ' + node.type, node); | ||
| 115 | } | ||
| 116 | |||
| 117 | this.sourceNode.unshift(node); | ||
| 118 | var ret = this[node.type](node); | ||
| 119 | this.sourceNode.shift(); | ||
| 120 | return ret; | ||
| 121 | }, | ||
| 122 | |||
| 123 | Program: function Program(program) { | ||
| 124 | this.options.blockParams.unshift(program.blockParams); | ||
| 125 | |||
| 126 | var body = program.body, | ||
| 127 | bodyLength = body.length; | ||
| 128 | for (var i = 0; i < bodyLength; i++) { | ||
| 129 | this.accept(body[i]); | ||
| 130 | } | ||
| 131 | |||
| 132 | this.options.blockParams.shift(); | ||
| 133 | |||
| 134 | this.isSimple = bodyLength === 1; | ||
| 135 | this.blockParams = program.blockParams ? program.blockParams.length : 0; | ||
| 136 | |||
| 137 | return this; | ||
| 138 | }, | ||
| 139 | |||
| 140 | BlockStatement: function BlockStatement(block) { | ||
| 141 | transformLiteralToPath(block); | ||
| 142 | |||
| 143 | var program = block.program, | ||
| 144 | inverse = block.inverse; | ||
| 145 | |||
| 146 | program = program && this.compileProgram(program); | ||
| 147 | inverse = inverse && this.compileProgram(inverse); | ||
| 148 | |||
| 149 | var type = this.classifySexpr(block); | ||
| 150 | |||
| 151 | if (type === 'helper') { | ||
| 152 | this.helperSexpr(block, program, inverse); | ||
| 153 | } else if (type === 'simple') { | ||
| 154 | this.simpleSexpr(block); | ||
| 155 | |||
| 156 | // now that the simple mustache is resolved, we need to | ||
| 157 | // evaluate it by executing `blockHelperMissing` | ||
| 158 | this.opcode('pushProgram', program); | ||
| 159 | this.opcode('pushProgram', inverse); | ||
| 160 | this.opcode('emptyHash'); | ||
| 161 | this.opcode('blockValue', block.path.original); | ||
| 162 | } else { | ||
| 163 | this.ambiguousSexpr(block, program, inverse); | ||
| 164 | |||
| 165 | // now that the simple mustache is resolved, we need to | ||
| 166 | // evaluate it by executing `blockHelperMissing` | ||
| 167 | this.opcode('pushProgram', program); | ||
| 168 | this.opcode('pushProgram', inverse); | ||
| 169 | this.opcode('emptyHash'); | ||
| 170 | this.opcode('ambiguousBlockValue'); | ||
| 171 | } | ||
| 172 | |||
| 173 | this.opcode('append'); | ||
| 174 | }, | ||
| 175 | |||
| 176 | DecoratorBlock: function DecoratorBlock(decorator) { | ||
| 177 | var program = decorator.program && this.compileProgram(decorator.program); | ||
| 178 | var params = this.setupFullMustacheParams(decorator, program, undefined), | ||
| 179 | path = decorator.path; | ||
| 180 | |||
| 181 | this.useDecorators = true; | ||
| 182 | this.opcode('registerDecorator', params.length, path.original); | ||
| 183 | }, | ||
| 184 | |||
| 185 | PartialStatement: function PartialStatement(partial) { | ||
| 186 | this.usePartial = true; | ||
| 187 | |||
| 188 | var program = partial.program; | ||
| 189 | if (program) { | ||
| 190 | program = this.compileProgram(partial.program); | ||
| 191 | } | ||
| 192 | |||
| 193 | var params = partial.params; | ||
| 194 | if (params.length > 1) { | ||
| 195 | throw new _exception2['default']('Unsupported number of partial arguments: ' + params.length, partial); | ||
| 196 | } else if (!params.length) { | ||
| 197 | if (this.options.explicitPartialContext) { | ||
| 198 | this.opcode('pushLiteral', 'undefined'); | ||
| 199 | } else { | ||
| 200 | params.push({ type: 'PathExpression', parts: [], depth: 0 }); | ||
| 201 | } | ||
| 202 | } | ||
| 203 | |||
| 204 | var partialName = partial.name.original, | ||
| 205 | isDynamic = partial.name.type === 'SubExpression'; | ||
| 206 | if (isDynamic) { | ||
| 207 | this.accept(partial.name); | ||
| 208 | } | ||
| 209 | |||
| 210 | this.setupFullMustacheParams(partial, program, undefined, true); | ||
| 211 | |||
| 212 | var indent = partial.indent || ''; | ||
| 213 | if (this.options.preventIndent && indent) { | ||
| 214 | this.opcode('appendContent', indent); | ||
| 215 | indent = ''; | ||
| 216 | } | ||
| 217 | |||
| 218 | this.opcode('invokePartial', isDynamic, partialName, indent); | ||
| 219 | this.opcode('append'); | ||
| 220 | }, | ||
| 221 | PartialBlockStatement: function PartialBlockStatement(partialBlock) { | ||
| 222 | this.PartialStatement(partialBlock); | ||
| 223 | }, | ||
| 224 | |||
| 225 | MustacheStatement: function MustacheStatement(mustache) { | ||
| 226 | this.SubExpression(mustache); | ||
| 227 | |||
| 228 | if (mustache.escaped && !this.options.noEscape) { | ||
| 229 | this.opcode('appendEscaped'); | ||
| 230 | } else { | ||
| 231 | this.opcode('append'); | ||
| 232 | } | ||
| 233 | }, | ||
| 234 | Decorator: function Decorator(decorator) { | ||
| 235 | this.DecoratorBlock(decorator); | ||
| 236 | }, | ||
| 237 | |||
| 238 | ContentStatement: function ContentStatement(content) { | ||
| 239 | if (content.value) { | ||
| 240 | this.opcode('appendContent', content.value); | ||
| 241 | } | ||
| 242 | }, | ||
| 243 | |||
| 244 | CommentStatement: function CommentStatement() {}, | ||
| 245 | |||
| 246 | SubExpression: function SubExpression(sexpr) { | ||
| 247 | transformLiteralToPath(sexpr); | ||
| 248 | var type = this.classifySexpr(sexpr); | ||
| 249 | |||
| 250 | if (type === 'simple') { | ||
| 251 | this.simpleSexpr(sexpr); | ||
| 252 | } else if (type === 'helper') { | ||
| 253 | this.helperSexpr(sexpr); | ||
| 254 | } else { | ||
| 255 | this.ambiguousSexpr(sexpr); | ||
| 256 | } | ||
| 257 | }, | ||
| 258 | ambiguousSexpr: function ambiguousSexpr(sexpr, program, inverse) { | ||
| 259 | var path = sexpr.path, | ||
| 260 | name = path.parts[0], | ||
| 261 | isBlock = program != null || inverse != null; | ||
| 262 | |||
| 263 | this.opcode('getContext', path.depth); | ||
| 264 | |||
| 265 | this.opcode('pushProgram', program); | ||
| 266 | this.opcode('pushProgram', inverse); | ||
| 267 | |||
| 268 | path.strict = true; | ||
| 269 | this.accept(path); | ||
| 270 | |||
| 271 | this.opcode('invokeAmbiguous', name, isBlock); | ||
| 272 | }, | ||
| 273 | |||
| 274 | simpleSexpr: function simpleSexpr(sexpr) { | ||
| 275 | var path = sexpr.path; | ||
| 276 | path.strict = true; | ||
| 277 | this.accept(path); | ||
| 278 | this.opcode('resolvePossibleLambda'); | ||
| 279 | }, | ||
| 280 | |||
| 281 | helperSexpr: function helperSexpr(sexpr, program, inverse) { | ||
| 282 | var params = this.setupFullMustacheParams(sexpr, program, inverse), | ||
| 283 | path = sexpr.path, | ||
| 284 | name = path.parts[0]; | ||
| 285 | |||
| 286 | if (this.options.knownHelpers[name]) { | ||
| 287 | this.opcode('invokeKnownHelper', params.length, name); | ||
| 288 | } else if (this.options.knownHelpersOnly) { | ||
| 289 | throw new _exception2['default']('You specified knownHelpersOnly, but used the unknown helper ' + name, sexpr); | ||
| 290 | } else { | ||
| 291 | path.strict = true; | ||
| 292 | path.falsy = true; | ||
| 293 | |||
| 294 | this.accept(path); | ||
| 295 | this.opcode('invokeHelper', params.length, path.original, _ast2['default'].helpers.simpleId(path)); | ||
| 296 | } | ||
| 297 | }, | ||
| 298 | |||
| 299 | PathExpression: function PathExpression(path) { | ||
| 300 | this.addDepth(path.depth); | ||
| 301 | this.opcode('getContext', path.depth); | ||
| 302 | |||
| 303 | var name = path.parts[0], | ||
| 304 | scoped = _ast2['default'].helpers.scopedId(path), | ||
| 305 | blockParamId = !path.depth && !scoped && this.blockParamIndex(name); | ||
| 306 | |||
| 307 | if (blockParamId) { | ||
| 308 | this.opcode('lookupBlockParam', blockParamId, path.parts); | ||
| 309 | } else if (!name) { | ||
| 310 | // Context reference, i.e. `{{foo .}}` or `{{foo ..}}` | ||
| 311 | this.opcode('pushContext'); | ||
| 312 | } else if (path.data) { | ||
| 313 | this.options.data = true; | ||
| 314 | this.opcode('lookupData', path.depth, path.parts, path.strict); | ||
| 315 | } else { | ||
| 316 | this.opcode('lookupOnContext', path.parts, path.falsy, path.strict, scoped); | ||
| 317 | } | ||
| 318 | }, | ||
| 319 | |||
| 320 | StringLiteral: function StringLiteral(string) { | ||
| 321 | this.opcode('pushString', string.value); | ||
| 322 | }, | ||
| 323 | |||
| 324 | NumberLiteral: function NumberLiteral(number) { | ||
| 325 | this.opcode('pushLiteral', number.value); | ||
| 326 | }, | ||
| 327 | |||
| 328 | BooleanLiteral: function BooleanLiteral(bool) { | ||
| 329 | this.opcode('pushLiteral', bool.value); | ||
| 330 | }, | ||
| 331 | |||
| 332 | UndefinedLiteral: function UndefinedLiteral() { | ||
| 333 | this.opcode('pushLiteral', 'undefined'); | ||
| 334 | }, | ||
| 335 | |||
| 336 | NullLiteral: function NullLiteral() { | ||
| 337 | this.opcode('pushLiteral', 'null'); | ||
| 338 | }, | ||
| 339 | |||
| 340 | Hash: function Hash(hash) { | ||
| 341 | var pairs = hash.pairs, | ||
| 342 | i = 0, | ||
| 343 | l = pairs.length; | ||
| 344 | |||
| 345 | this.opcode('pushHash'); | ||
| 346 | |||
| 347 | for (; i < l; i++) { | ||
| 348 | this.pushParam(pairs[i].value); | ||
| 349 | } | ||
| 350 | while (i--) { | ||
| 351 | this.opcode('assignToHash', pairs[i].key); | ||
| 352 | } | ||
| 353 | this.opcode('popHash'); | ||
| 354 | }, | ||
| 355 | |||
| 356 | // HELPERS | ||
| 357 | opcode: function opcode(name) { | ||
| 358 | this.opcodes.push({ opcode: name, args: slice.call(arguments, 1), loc: this.sourceNode[0].loc }); | ||
| 359 | }, | ||
| 360 | |||
| 361 | addDepth: function addDepth(depth) { | ||
| 362 | if (!depth) { | ||
| 363 | return; | ||
| 364 | } | ||
| 365 | |||
| 366 | this.useDepths = true; | ||
| 367 | }, | ||
| 368 | |||
| 369 | classifySexpr: function classifySexpr(sexpr) { | ||
| 370 | var isSimple = _ast2['default'].helpers.simpleId(sexpr.path); | ||
| 371 | |||
| 372 | var isBlockParam = isSimple && !!this.blockParamIndex(sexpr.path.parts[0]); | ||
| 373 | |||
| 374 | // a mustache is an eligible helper if: | ||
| 375 | // * its id is simple (a single part, not `this` or `..`) | ||
| 376 | var isHelper = !isBlockParam && _ast2['default'].helpers.helperExpression(sexpr); | ||
| 377 | |||
| 378 | // if a mustache is an eligible helper but not a definite | ||
| 379 | // helper, it is ambiguous, and will be resolved in a later | ||
| 380 | // pass or at runtime. | ||
| 381 | var isEligible = !isBlockParam && (isHelper || isSimple); | ||
| 382 | |||
| 383 | // if ambiguous, we can possibly resolve the ambiguity now | ||
| 384 | // An eligible helper is one that does not have a complex path, i.e. `this.foo`, `../foo` etc. | ||
| 385 | if (isEligible && !isHelper) { | ||
| 386 | var _name2 = sexpr.path.parts[0], | ||
| 387 | options = this.options; | ||
| 388 | |||
| 389 | if (options.knownHelpers[_name2]) { | ||
| 390 | isHelper = true; | ||
| 391 | } else if (options.knownHelpersOnly) { | ||
| 392 | isEligible = false; | ||
| 393 | } | ||
| 394 | } | ||
| 395 | |||
| 396 | if (isHelper) { | ||
| 397 | return 'helper'; | ||
| 398 | } else if (isEligible) { | ||
| 399 | return 'ambiguous'; | ||
| 400 | } else { | ||
| 401 | return 'simple'; | ||
| 402 | } | ||
| 403 | }, | ||
| 404 | |||
| 405 | pushParams: function pushParams(params) { | ||
| 406 | for (var i = 0, l = params.length; i < l; i++) { | ||
| 407 | this.pushParam(params[i]); | ||
| 408 | } | ||
| 409 | }, | ||
| 410 | |||
| 411 | pushParam: function pushParam(val) { | ||
| 412 | var value = val.value != null ? val.value : val.original || ''; | ||
| 413 | |||
| 414 | if (this.stringParams) { | ||
| 415 | if (value.replace) { | ||
| 416 | value = value.replace(/^(\.?\.\/)*/g, '').replace(/\//g, '.'); | ||
| 417 | } | ||
| 418 | |||
| 419 | if (val.depth) { | ||
| 420 | this.addDepth(val.depth); | ||
| 421 | } | ||
| 422 | this.opcode('getContext', val.depth || 0); | ||
| 423 | this.opcode('pushStringParam', value, val.type); | ||
| 424 | |||
| 425 | if (val.type === 'SubExpression') { | ||
| 426 | // SubExpressions get evaluated and passed in | ||
| 427 | // in string params mode. | ||
| 428 | this.accept(val); | ||
| 429 | } | ||
| 430 | } else { | ||
| 431 | if (this.trackIds) { | ||
| 432 | var blockParamIndex = undefined; | ||
| 433 | if (val.parts && !_ast2['default'].helpers.scopedId(val) && !val.depth) { | ||
| 434 | blockParamIndex = this.blockParamIndex(val.parts[0]); | ||
| 435 | } | ||
| 436 | if (blockParamIndex) { | ||
| 437 | var blockParamChild = val.parts.slice(1).join('.'); | ||
| 438 | this.opcode('pushId', 'BlockParam', blockParamIndex, blockParamChild); | ||
| 439 | } else { | ||
| 440 | value = val.original || value; | ||
| 441 | if (value.replace) { | ||
| 442 | value = value.replace(/^this(?:\.|$)/, '').replace(/^\.\//, '').replace(/^\.$/, ''); | ||
| 443 | } | ||
| 444 | |||
| 445 | this.opcode('pushId', val.type, value); | ||
| 446 | } | ||
| 447 | } | ||
| 448 | this.accept(val); | ||
| 449 | } | ||
| 450 | }, | ||
| 451 | |||
| 452 | setupFullMustacheParams: function setupFullMustacheParams(sexpr, program, inverse, omitEmpty) { | ||
| 453 | var params = sexpr.params; | ||
| 454 | this.pushParams(params); | ||
| 455 | |||
| 456 | this.opcode('pushProgram', program); | ||
| 457 | this.opcode('pushProgram', inverse); | ||
| 458 | |||
| 459 | if (sexpr.hash) { | ||
| 460 | this.accept(sexpr.hash); | ||
| 461 | } else { | ||
| 462 | this.opcode('emptyHash', omitEmpty); | ||
| 463 | } | ||
| 464 | |||
| 465 | return params; | ||
| 466 | }, | ||
| 467 | |||
| 468 | blockParamIndex: function blockParamIndex(name) { | ||
| 469 | for (var depth = 0, len = this.options.blockParams.length; depth < len; depth++) { | ||
| 470 | var blockParams = this.options.blockParams[depth], | ||
| 471 | param = blockParams && _utils.indexOf(blockParams, name); | ||
| 472 | if (blockParams && param >= 0) { | ||
| 473 | return [depth, param]; | ||
| 474 | } | ||
| 475 | } | ||
| 476 | } | ||
| 477 | }; | ||
| 478 | |||
| 479 | function precompile(input, options, env) { | ||
| 480 | if (input == null || typeof input !== 'string' && input.type !== 'Program') { | ||
| 481 | throw new _exception2['default']('You must pass a string or Handlebars AST to Handlebars.precompile. You passed ' + input); | ||
| 482 | } | ||
| 483 | |||
| 484 | options = options || {}; | ||
| 485 | if (!('data' in options)) { | ||
| 486 | options.data = true; | ||
| 487 | } | ||
| 488 | if (options.compat) { | ||
| 489 | options.useDepths = true; | ||
| 490 | } | ||
| 491 | |||
| 492 | var ast = env.parse(input, options), | ||
| 493 | environment = new env.Compiler().compile(ast, options); | ||
| 494 | return new env.JavaScriptCompiler().compile(environment, options); | ||
| 495 | } | ||
| 496 | |||
| 497 | function compile(input, options, env) { | ||
| 498 | if (options === undefined) options = {}; | ||
| 499 | |||
| 500 | if (input == null || typeof input !== 'string' && input.type !== 'Program') { | ||
| 501 | throw new _exception2['default']('You must pass a string or Handlebars AST to Handlebars.compile. You passed ' + input); | ||
| 502 | } | ||
| 503 | |||
| 504 | options = _utils.extend({}, options); | ||
| 505 | if (!('data' in options)) { | ||
| 506 | options.data = true; | ||
| 507 | } | ||
| 508 | if (options.compat) { | ||
| 509 | options.useDepths = true; | ||
| 510 | } | ||
| 511 | |||
| 512 | var compiled = undefined; | ||
| 513 | |||
| 514 | function compileInput() { | ||
| 515 | var ast = env.parse(input, options), | ||
| 516 | environment = new env.Compiler().compile(ast, options), | ||
| 517 | templateSpec = new env.JavaScriptCompiler().compile(environment, options, undefined, true); | ||
| 518 | return env.template(templateSpec); | ||
| 519 | } | ||
| 520 | |||
| 521 | // Template is only compiled on first use and cached after that point. | ||
| 522 | function ret(context, execOptions) { | ||
| 523 | if (!compiled) { | ||
| 524 | compiled = compileInput(); | ||
| 525 | } | ||
| 526 | return compiled.call(this, context, execOptions); | ||
| 527 | } | ||
| 528 | ret._setup = function (setupOptions) { | ||
| 529 | if (!compiled) { | ||
| 530 | compiled = compileInput(); | ||
| 531 | } | ||
| 532 | return compiled._setup(setupOptions); | ||
| 533 | }; | ||
| 534 | ret._child = function (i, data, blockParams, depths) { | ||
| 535 | if (!compiled) { | ||
| 536 | compiled = compileInput(); | ||
| 537 | } | ||
| 538 | return compiled._child(i, data, blockParams, depths); | ||
| 539 | }; | ||
| 540 | return ret; | ||
| 541 | } | ||
| 542 | |||
| 543 | function argEquals(a, b) { | ||
| 544 | if (a === b) { | ||
| 545 | return true; | ||
| 546 | } | ||
| 547 | |||
| 548 | if (_utils.isArray(a) && _utils.isArray(b) && a.length === b.length) { | ||
| 549 | for (var i = 0; i < a.length; i++) { | ||
| 550 | if (!argEquals(a[i], b[i])) { | ||
| 551 | return false; | ||
| 552 | } | ||
| 553 | } | ||
| 554 | return true; | ||
| 555 | } | ||
| 556 | } | ||
| 557 | |||
| 558 | function transformLiteralToPath(sexpr) { | ||
| 559 | if (!sexpr.path.parts) { | ||
| 560 | var literal = sexpr.path; | ||
| 561 | // Casting to string here to make false and 0 literal values play nicely with the rest | ||
| 562 | // of the system. | ||
| 563 | sexpr.path = { | ||
| 564 | type: 'PathExpression', | ||
| 565 | data: false, | ||
| 566 | depth: 0, | ||
| 567 | parts: [literal.original + ''], | ||
| 568 | original: literal.original + '', | ||
| 569 | loc: literal.loc | ||
| 570 | }; | ||
| 571 | } | ||
| 572 | } | ||
| 573 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2NvbXBpbGVyL2NvbXBpbGVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozt5QkFFc0IsY0FBYzs7OztxQkFDRyxVQUFVOzttQkFDakMsT0FBTzs7OztBQUV2QixJQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDOztBQUVoQixTQUFTLFFBQVEsR0FBRyxFQUFFOzs7Ozs7O0FBTzdCLFFBQVEsQ0FBQyxTQUFTLEdBQUc7QUFDbkIsVUFBUSxFQUFFLFFBQVE7O0FBRWxCLFFBQU0sRUFBRSxnQkFBUyxLQUFLLEVBQUU7QUFDdEIsUUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7QUFDOUIsUUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUU7QUFDaEMsYUFBTyxLQUFLLENBQUM7S0FDZDs7QUFFRCxTQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzVCLFVBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1VBQ3hCLFdBQVcsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25DLFVBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxXQUFXLENBQUMsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ3JGLGVBQU8sS0FBSyxDQUFDO09BQ2Q7S0FDRjs7OztBQUlELE9BQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztBQUMzQixTQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzVCLFVBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxD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QVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFO0FBQ3JELFNBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ2pDLFVBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQzFCLGVBQU8sS0FBSyxDQUFDO09BQ2Q7S0FDRjtBQUNELFdBQU8sSUFBSSxDQUFDO0dBQ2I7Q0FDRjs7QUFFRCxTQUFTLHNCQUFzQixDQUFDLEtBQUssRUFBRTtBQUNyQyxNQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7QUFDckIsUUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQzs7O0FBR3pCLFNBQUssQ0FBQyxJQUFJLEdBQUc7QUFDWCxVQUFJLEVBQUUsZ0JBQWdCO0FBQ3RCLFVBQUksRUFBRSxLQUFLO0FBQ1gsV0FBSyxFQUFFLENBQUM7QUFDUixXQUFLLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztBQUM5QixjQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVEsR0FBRyxFQUFFO0FBQy9CLFNBQUcsRUFBRSxPQUFPLENBQUMsR0FBRztLQUNqQixDQUFDO0dBQ0g7Q0FDRiIsImZpbGUiOiJjb21waWxlci5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5ldy1jYXAgKi9cblxuaW1wb3J0IEV4Y2VwdGlvbiBmcm9tICcuLi9leGNlcHRpb24nO1xuaW1wb3J0IHtpc0FycmF5LCBpbmRleE9mLCBleHRlbmR9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCBBU1QgZnJvbSAnLi9hc3QnO1xuXG5jb25zdCBzbGljZSA9IFtdLnNsaWNlO1xuXG5leHBvcnQgZnVuY3Rpb24gQ29tcGlsZXIoKSB7fVxuXG4vLyB0aGUgZm91bmRIZWxwZXIgcmVnaXN0ZXIgd2lsbCBkaXNhbWJpZ3VhdGUgaGVscGVyIGxvb2t1cCBmcm9tIGZpbmRpbmcgYVxuLy8gZnVuY3Rpb24gaW4gYSBjb250ZXh0LiBUaGlzIGlzIG5lY2Vzc2FyeSBmb3IgbXVzdGFjaGUgY29tcGF0aWJpbGl0eSwgd2hpY2hcbi8vIHJlcXVpcmVzIHRoYXQgY29udGV4dCBmdW5jdGlvbnMgaW4gYmxvY2tzIGFyZSBldmFsdWF0ZWQgYnkgYmxvY2tIZWxwZXJNaXNzaW5nLFxuLy8gYW5kIHRoZW4gcHJvY2VlZCBhcyBpZiB0aGUgcmVzdWx0aW5nIHZhbHVlIHdhcyBwcm92aWRlZCB0byBibG9ja0hlbHBlck1pc3NpbmcuXG5cbkNvbXBpbGVyLnByb3RvdHlwZSA9IHtcbiAgY29tcGlsZXI6IENvbXBpbGVyLFxuXG4gIGVxdWFsczogZnVuY3Rpb24ob3RoZXIpIHtcbiAgICBsZXQgbGVuID0gdGhpcy5vcGNvZGVzLmxlbmd0aDtcbiAgICBpZiAob3RoZXIub3Bjb2Rlcy5sZW5ndGggIT09IGxlbikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGxldCBvcGNvZGUgPSB0aGlzLm9wY29kZXNbaV0sXG4gICAgICAgICAgb3RoZXJPcGNvZGUgPSBvdGhlci5vcGNvZGVzW2ldO1xuICAgICAgaWYgKG9wY29kZS5vcGNvZGUgIT09IG90aGVyT3Bjb2RlLm9wY29kZSB8fCAhYXJnRXF1YWxzKG9wY29kZS5hcmdzLCBvdGhlck9wY29kZS5hcmdzKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gV2Uga25vdyB0aGF0IGxlbmd0aCBpcyB0aGUgc2FtZSBiZXR3ZWVuIHRoZSB0d28gYXJyYXlzIGJlY2F1c2UgdGhleSBhcmUgZGlyZWN0bHkgdGllZFxuICAgIC8vIHRvIHRoZSBvcGNvZGUgYmVoYXZpb3IgYWJvdmUuXG4gICAgbGVuID0gdGhpcy5jaGlsZHJlbi5sZW5ndGg7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgaWYgKCF0aGlzLmNoaWxkcmVuW2ldLmVxdWFscyhvdGhlci5jaGlsZHJlbltpXSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9LFxuXG4gIGd1aWQ6IDAsXG5cbiAgY29tcGlsZTogZnVuY3Rpb24ocHJvZ3JhbSwgb3B0aW9ucykge1xuICAgIHRoaXMuc291cmNlTm9kZSA9IFtdO1xuICAgIHRoaXMub3Bjb2RlcyA9IFtdO1xuICAgIHRoaXMuY2hpbGRyZW4gPSBbXTtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMuc3RyaW5nUGFyYW1zID0gb3B0aW9ucy5zdHJpbmdQYXJhbXM7XG4gICAgdGhpcy50cmFja0lkcyA9IG9wdGlvbnMudHJhY2tJZHM7XG5cbiAgICBvcHRpb25zLmJsb2NrUGFyYW1zID0gb3B0aW9ucy5ibG9ja1BhcmFtcyB8fCBbXTtcblxuICAgIC8vIFRoZXNlIGNoYW5nZXMgd2lsbCBwcm9wYWdhdGUgdG8gdGhlIG90aGVyIGNvbXBpbGVyIGNvbXBvbmVudHNcbiAgICBsZXQga25vd25IZWxwZXJzID0gb3B0aW9ucy5rbm93bkhlbHBlcnM7XG4gICAgb3B0aW9ucy5rbm93bkhlbHBlcnMgPSB7XG4gICAgICAnaGVscGVyTWlzc2luZyc6IHRydWUsXG4gICAgICAnYmxvY2tIZWxwZXJNaXNzaW5nJzogdHJ1ZSxcbiAgICAgICdlYWNoJzogdHJ1ZSxcbiAgICAgICdpZic6IHRydWUsXG4gICAgICAndW5sZXNzJzogdHJ1ZSxcbiAgICAgICd3aXRoJzogdHJ1ZSxcbiAgICAgICdsb2cnOiB0cnVlLFxuICAgICAgJ2xvb2t1cCc6IHRydWVcbiAgICB9O1xuICAgIGlmIChrbm93bkhlbHBlcnMpIHtcbiAgICAgIGZvciAobGV0IG5hbWUgaW4ga25vd25IZWxwZXJzKSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmIChuYW1lIGluIGtub3duSGVscGVycykge1xuICAgICAgICAgIHRoaXMub3B0aW9ucy5rbm93bkhlbHBlcnNbbmFtZV0gPSBrbm93bkhlbHBlcnNbbmFtZV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5hY2NlcHQocHJvZ3JhbSk7XG4gIH0sXG5cbiAgY29tcGlsZVByb2dyYW06IGZ1bmN0aW9uKHByb2dyYW0pIHtcbiAgICBsZXQgY2hpbGRDb21waWxlciA9IG5ldyB0aGlzLmNvbXBpbGVyKCksIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbmV3LWNhcFxuICAgICAgICByZXN1bHQgPSBjaGlsZENvbXBpbGVyLmNvbXBpbGUocHJvZ3JhbSwgdGhpcy5vcHRpb25zKSxcbiAgICAgICAgZ3VpZCA9IHRoaXMuZ3VpZCsrO1xuXG4gICAgdGhpcy51c2VQYXJ0aWFsID0gdGhpcy51c2VQYXJ0aWFsIHx8IHJlc3VsdC51c2VQYXJ0aWFsO1xuXG4gICAgdGhpcy5jaGlsZHJlbltndWlkXSA9IHJlc3VsdDtcbiAgICB0aGlzLnVzZURlcHRocyA9IHRoaXMudXNlRGVwdGhzIHx8IHJlc3VsdC51c2VEZXB0aHM7XG5cbiAgICByZXR1cm4gZ3VpZDtcbiAgfSxcblxuICBhY2NlcHQ6IGZ1bmN0aW9uKG5vZGUpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogU2FuaXR5IGNvZGUgKi9cbiAgICBpZiAoIXRoaXNbbm9kZS50eXBlXSkge1xuICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignVW5rbm93biB0eXBlOiAnICsgbm9kZS50eXBlLCBub2RlKTtcbiAgICB9XG5cbiAgICB0aGlzLnNvdXJjZU5vZGUudW5zaGlmdChub2RlKTtcbiAgICBsZXQgcmV0ID0gdGhpc1tub2RlLnR5cGVdKG5vZGUpO1xuICAgIHRoaXMuc291cmNlTm9kZS5zaGlmdCgpO1xuICAgIHJldHVybiByZXQ7XG4gIH0sXG5cbiAgUHJvZ3JhbTogZnVuY3Rpb24ocHJvZ3JhbSkge1xuICAgIHRoaXMub3B0aW9ucy5ibG9ja1BhcmFtcy51bnNoaWZ0KHByb2dyYW0uYmxvY2tQYXJhbXMpO1xuXG4gICAgbGV0IGJvZHkgPSBwcm9ncmFtLmJvZHksXG4gICAgICAgIGJvZHlMZW5ndGggPSBib2R5Lmxlbmd0aDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJvZHlMZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy5hY2NlcHQoYm9keVtpXSk7XG4gICAgfVxuXG4gICAgdGhpcy5vcHRpb25zLmJsb2NrUGFyYW1zLnNoaWZ0KCk7XG5cbiAgICB0aGlzLmlzU2ltcGxlID0gYm9keUxlbmd0aCA9PT0gMTtcbiAgICB0aGlzLmJsb2NrUGFyYW1zID0gcHJvZ3JhbS5ibG9ja1BhcmFtcyA/IHByb2dyYW0uYmxvY2tQYXJhbXMubGVuZ3RoIDogMDtcblxuICAgIHJldHVybiB0aGlzO1xuICB9LFxuXG4gIEJsb2NrU3RhdGVtZW50OiBmdW5jdGlvbihibG9jaykge1xuICAgIHRyYW5zZm9ybUxpdGVyYWxUb1BhdGgoYmxvY2spO1xuXG4gICAgbGV0IHByb2dyYW0gPSBibG9jay5wcm9ncmFtLFxuICAgICAgICBpbnZlcnNlID0gYmxvY2suaW52ZXJzZTtcblxuICAgIHByb2dyYW0gPSBwcm9ncmFtICYmIHRoaXMuY29tcGlsZVByb2dyYW0ocHJvZ3JhbSk7XG4gICAgaW52ZXJzZSA9IGludmVyc2UgJiYgdGhpcy5jb21waWxlUHJvZ3JhbShpbnZlcnNlKTtcblxuICAgIGxldCB0eXBlID0gdGhpcy5jbGFzc2lmeVNleHByKGJsb2NrKTtcblxuICAgIGlmICh0eXBlID09PSAnaGVscGVyJykge1xuICAgICAgdGhpcy5oZWxwZXJTZXhwcihibG9jaywgcHJvZ3JhbSwgaW52ZXJzZSk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnc2ltcGxlJykge1xuICAgICAgdGhpcy5zaW1wbGVTZXhwcihibG9jayk7XG5cbiAgICAgIC8vIG5vdyB0aGF0IHRoZSBzaW1wbGUgbXVzdGFjaGUgaXMgcmVzb2x2ZWQsIHdlIG5lZWQgdG9cbiAgICAgIC8vIGV2YWx1YXRlIGl0IGJ5IGV4ZWN1dGluZyBgYmxvY2tIZWxwZXJNaXNzaW5nYFxuICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hQcm9ncmFtJywgcHJvZ3JhbSk7XG4gICAgICB0aGlzLm9wY29kZSgncHVzaFByb2dyYW0nLCBpbnZlcnNlKTtcbiAgICAgIHRoaXMub3Bjb2RlKCdlbXB0eUhhc2gnKTtcbiAgICAgIHRoaXMub3Bjb2RlKCdibG9ja1ZhbHVlJywgYmxvY2sucGF0aC5vcmlnaW5hbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYW1iaWd1b3VzU2V4cHIoYmxvY2ssIHByb2dyYW0sIGludmVyc2UpO1xuXG4gICAgICAvLyBub3cgdGhhdCB0aGUgc2ltcGxlIG11c3RhY2hlIGlzIHJlc29sdmVkLCB3ZSBuZWVkIHRvXG4gICAgICAvLyBldmFsdWF0ZSBpdCBieSBleGVjdXRpbmcgYGJsb2NrSGVscGVyTWlzc2luZ2BcbiAgICAgIHRoaXMub3Bjb2RlKCdwdXNoUHJvZ3JhbScsIHByb2dyYW0pO1xuICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hQcm9ncmFtJywgaW52ZXJzZSk7XG4gICAgICB0aGlzLm9wY29kZSgnZW1wdHlIYXNoJyk7XG4gICAgICB0aGlzLm9wY29kZSgnYW1iaWd1b3VzQmxvY2tWYWx1ZScpO1xuICAgIH1cblxuICAgIHRoaXMub3Bjb2RlKCdhcHBlbmQnKTtcbiAgfSxcblxuICBEZWNvcmF0b3JCbG9jayhkZWNvcmF0b3IpIHtcbiAgICBsZXQgcHJvZ3JhbSA9IGRlY29yYXRvci5wcm9ncmFtICYmIHRoaXMuY29tcGlsZVByb2dyYW0oZGVjb3JhdG9yLnByb2dyYW0pO1xuICAgIGxldCBwYXJhbXMgPSB0aGlzLnNldHVwRnVsbE11c3RhY2hlUGFyYW1zKGRlY29yYXRvciwgcHJvZ3JhbSwgdW5kZWZpbmVkKSxcbiAgICAgICAgcGF0aCA9IGRlY29yYXRvci5wYXRoO1xuXG4gICAgdGhpcy51c2VEZWNvcmF0b3JzID0gdHJ1ZTtcbiAgICB0aGlzLm9wY29kZSgncmVnaXN0ZXJEZWNvcmF0b3InLCBwYXJhbXMubGVuZ3RoLCBwYXRoLm9yaWdpbmFsKTtcbiAgfSxcblxuICBQYXJ0aWFsU3RhdGVtZW50OiBmdW5jdGlvbihwYXJ0aWFsKSB7XG4gICAgdGhpcy51c2VQYXJ0aWFsID0gdHJ1ZTtcblxuICAgIGxldCBwcm9ncmFtID0gcGFydGlhbC5wcm9ncmFtO1xuICAgIGlmIChwcm9ncmFtKSB7XG4gICAgICBwcm9ncmFtID0gdGhpcy5jb21waWxlUHJvZ3JhbShwYXJ0aWFsLnByb2dyYW0pO1xuICAgIH1cblxuICAgIGxldCBwYXJhbXMgPSBwYXJ0aWFsLnBhcmFtcztcbiAgICBpZiAocGFyYW1zLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ1Vuc3VwcG9ydGVkIG51bWJlciBvZiBwYXJ0aWFsIGFyZ3VtZW50czogJyArIHBhcmFtcy5sZW5ndGgsIHBhcnRpYWwpO1xuICAgIH0gZWxzZSBpZiAoIXBhcmFtcy5sZW5ndGgpIHtcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuZXhwbGljaXRQYXJ0aWFsQ29udGV4dCkge1xuICAgICAgICB0aGlzLm9wY29kZSgncHVzaExpdGVyYWwnLCAndW5kZWZpbmVkJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJhbXMucHVzaCh7dHlwZTogJ1BhdGhFeHByZXNzaW9uJywgcGFydHM6IFtdLCBkZXB0aDogMH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBwYXJ0aWFsTmFtZSA9IHBhcnRpYWwubmFtZS5vcmlnaW5hbCxcbiAgICAgICAgaXNEeW5hbWljID0gcGFydGlhbC5uYW1lLnR5cGUgPT09ICdTdWJFeHByZXNzaW9uJztcbiAgICBpZiAoaXNEeW5hbWljKSB7XG4gICAgICB0aGlzLmFjY2VwdChwYXJ0aWFsLm5hbWUpO1xuICAgIH1cblxuICAgIHRoaXMuc2V0dXBGdWxsTXVzdGFjaGVQYXJhbXMocGFydGlhbCwgcHJvZ3JhbSwgdW5kZWZpbmVkLCB0cnVlKTtcblxuICAgIGxldCBpbmRlbnQgPSBwYXJ0aWFsLmluZGVudCB8fCAnJztcbiAgICBpZiAodGhpcy5vcHRpb25zLnByZXZlbnRJbmRlbnQgJiYgaW5kZW50KSB7XG4gICAgICB0aGlzLm9wY29kZSgnYXBwZW5kQ29udGVudCcsIGluZGVudCk7XG4gICAgICBpbmRlbnQgPSAnJztcbiAgICB9XG5cbiAgICB0aGlzLm9wY29kZSgnaW52b2tlUGFydGlhbCcsIGlzRHluYW1pYywgcGFydGlhbE5hbWUsIGluZGVudCk7XG4gICAgdGhpcy5vcGNvZGUoJ2FwcGVuZCcpO1xuICB9LFxuICBQYXJ0aWFsQmxvY2tTdGF0ZW1lbnQ6IGZ1bmN0aW9uKHBhcnRpYWxCbG9jaykge1xuICAgIHRoaXMuUGFydGlhbFN0YXRlbWVudChwYXJ0aWFsQmxvY2spO1xuICB9LFxuXG4gIE11c3RhY2hlU3RhdGVtZW50OiBmdW5jdGlvbihtdXN0YWNoZSkge1xuICAgIHRoaXMuU3ViRXhwcmVzc2lvbihtdXN0YWNoZSk7XG5cbiAgICBpZiAobXVzdGFjaGUuZXNjYXBlZCAmJiAhdGhpcy5vcHRpb25zLm5vRXNjYXBlKSB7XG4gICAgICB0aGlzLm9wY29kZSgnYXBwZW5kRXNjYXBlZCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wY29kZSgnYXBwZW5kJyk7XG4gICAgfVxuICB9LFxuICBEZWNvcmF0b3IoZGVjb3JhdG9yKSB7XG4gICAgdGhpcy5EZWNvcmF0b3JCbG9jayhkZWNvcmF0b3IpO1xuICB9LFxuXG5cbiAgQ29udGVudFN0YXRlbWVudDogZnVuY3Rpb24oY29udGVudCkge1xuICAgIGlmIChjb250ZW50LnZhbHVlKSB7XG4gICAgICB0aGlzLm9wY29kZSgnYXBwZW5kQ29udGVudCcsIGNvbnRlbnQudmFsdWUpO1xuICAgIH1cbiAgfSxcblxuICBDb21tZW50U3RhdGVtZW50OiBmdW5jdGlvbigpIHt9LFxuXG4gIFN1YkV4cHJlc3Npb246IGZ1bmN0aW9uKHNleHByKSB7XG4gICAgdHJhbnNmb3JtTGl0ZXJhbFRvUGF0aChzZXhwcik7XG4gICAgbGV0IHR5cGUgPSB0aGlzLmNsYXNzaWZ5U2V4cHIoc2V4cHIpO1xuXG4gICAgaWYgKHR5cGUgPT09ICdzaW1wbGUnKSB7XG4gICAgICB0aGlzLnNpbXBsZVNleHByKHNleHByKTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdoZWxwZXInKSB7XG4gICAgICB0aGlzLmhlbHBlclNleHByKHNleHByKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hbWJpZ3VvdXNTZXhwcihzZXhwcik7XG4gICAgfVxuICB9LFxuICBhbWJpZ3VvdXNTZXhwcjogZnVuY3Rpb24oc2V4cHIsIHByb2dyYW0sIGludmVyc2UpIHtcbiAgICBsZXQgcGF0aCA9IHNleHByLnBhdGgsXG4gICAgICAgIG5hbWUgPSBwYXRoLnBhcnRzWzBdLFxuICAgICAgICBpc0Jsb2NrID0gcHJvZ3JhbSAhPSBudWxsIHx8IGludmVyc2UgIT0gbnVsbDtcblxuICAgIHRoaXMub3Bjb2RlKCdnZXRDb250ZXh0JywgcGF0aC5kZXB0aCk7XG5cbiAgICB0aGlzLm9wY29kZSgncHVzaFByb2dyYW0nLCBwcm9ncmFtKTtcbiAgICB0aGlzLm9wY29kZSgncHVzaFByb2dyYW0nLCBpbnZlcnNlKTtcblxuICAgIHBhdGguc3RyaWN0ID0gdHJ1ZTtcbiAgICB0aGlzLmFjY2VwdChwYXRoKTtcblxuICAgIHRoaXMub3Bjb2RlKCdpbnZva2VBbWJpZ3VvdXMnLCBuYW1lLCBpc0Jsb2NrKTtcbiAgfSxcblxuICBzaW1wbGVTZXhwcjogZnVuY3Rpb24oc2V4cHIpIHtcbiAgICBsZXQgcGF0aCA9IHNleHByLnBhdGg7XG4gICAgcGF0aC5zdHJpY3QgPSB0cnVlO1xuICAgIHRoaXMuYWNjZXB0KHBhdGgpO1xuICAgIHRoaXMub3Bjb2RlKCdyZXNvbHZlUG9zc2libGVMYW1iZGEnKTtcbiAgfSxcblxuICBoZWxwZXJTZXhwcjogZnVuY3Rpb24oc2V4cHIsIHByb2dyYW0sIGludmVyc2UpIHtcbiAgICBsZXQgcGFyYW1zID0gdGhpcy5zZXR1cEZ1bGxNdXN0YWNoZVBhcmFtcyhzZXhwciwgcHJvZ3JhbSwgaW52ZXJzZSksXG4gICAgICAgIHBhdGggPSBzZXhwci5wYXRoLFxuICAgICAgICBuYW1lID0gcGF0aC5wYXJ0c1swXTtcblxuICAgIGlmICh0aGlzLm9wdGlvbnMua25vd25IZWxwZXJzW25hbWVdKSB7XG4gICAgICB0aGlzLm9wY29kZSgnaW52b2tlS25vd25IZWxwZXInLCBwYXJhbXMubGVuZ3RoLCBuYW1lKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMub3B0aW9ucy5rbm93bkhlbHBlcnNPbmx5KSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdZb3Ugc3BlY2lmaWVkIGtub3duSGVscGVyc09ubHksIGJ1dCB1c2VkIHRoZSB1bmtub3duIGhlbHBlciAnICsgbmFtZSwgc2V4cHIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXRoLnN0cmljdCA9IHRydWU7XG4gICAgICBwYXRoLmZhbHN5ID0gdHJ1ZTtcblxuICAgICAgdGhpcy5hY2NlcHQocGF0aCk7XG4gICAgICB0aGlzLm9wY29kZSgnaW52b2tlSGVscGVyJywgcGFyYW1zLmxlbmd0aCwgcGF0aC5vcmlnaW5hbCwgQVNULmhlbHBlcnMuc2ltcGxlSWQocGF0aCkpO1xuICAgIH1cbiAgfSxcblxuICBQYXRoRXhwcmVzc2lvbjogZnVuY3Rpb24ocGF0aCkge1xuICAgIHRoaXMuYWRkRGVwdGgocGF0aC5kZXB0aCk7XG4gICAgdGhpcy5vcGNvZGUoJ2dldENvbnRleHQnLCBwYXRoLmRlcHRoKTtcblxuICAgIGxldCBuYW1lID0gcGF0aC5wYXJ0c1swXSxcbiAgICAgICAgc2NvcGVkID0gQVNULmhlbHBlcnMuc2NvcGVkSWQocGF0aCksXG4gICAgICAgIGJsb2NrUGFyYW1JZCA9ICFwYXRoLmRlcHRoICYmICFzY29wZWQgJiYgdGhpcy5ibG9ja1BhcmFtSW5kZXgobmFtZSk7XG5cbiAgICBpZiAoYmxvY2tQYXJhbUlkKSB7XG4gICAgICB0aGlzLm9wY29kZSgnbG9va3VwQmxvY2tQYXJhbScsIGJsb2NrUGFyYW1JZCwgcGF0aC5wYXJ0cyk7XG4gICAgfSBlbHNlIGlmICghbmFtZSkge1xuICAgICAgLy8gQ29udGV4dCByZWZlcmVuY2UsIGkuZS4gYHt7Zm9vIC59fWAgb3IgYHt7Zm9vIC4ufX1gXG4gICAgICB0aGlzLm9wY29kZSgncHVzaENvbnRleHQnKTtcbiAgICB9IGVsc2UgaWYgKHBhdGguZGF0YSkge1xuICAgICAgdGhpcy5vcHRpb25zLmRhdGEgPSB0cnVlO1xuICAgICAgdGhpcy5vcGNvZGUoJ2xvb2t1cERhdGEnLCBwYXRoLmRlcHRoLCBwYXRoLnBhcnRzLCBwYXRoLnN0cmljdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3Bjb2RlKCdsb29rdXBPbkNvbnRleHQnLCBwYXRoLnBhcnRzLCBwYXRoLmZhbHN5LCBwYXRoLnN0cmljdCwgc2NvcGVkKTtcbiAgICB9XG4gIH0sXG5cbiAgU3RyaW5nTGl0ZXJhbDogZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgdGhpcy5vcGNvZGUoJ3B1c2hTdHJpbmcnLCBzdHJpbmcudmFsdWUpO1xuICB9LFxuXG4gIE51bWJlckxpdGVyYWw6IGZ1bmN0aW9uKG51bWJlcikge1xuICAgIHRoaXMub3Bjb2RlKCdwdXNoTGl0ZXJhbCcsIG51bWJlci52YWx1ZSk7XG4gIH0sXG5cbiAgQm9vbGVhbkxpdGVyYWw6IGZ1bmN0aW9uKGJvb2wpIHtcbiAgICB0aGlzLm9wY29kZSgncHVzaExpdGVyYWwnLCBib29sLnZhbHVlKTtcbiAgfSxcblxuICBVbmRlZmluZWRMaXRlcmFsOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLm9wY29kZSgncHVzaExpdGVyYWwnLCAndW5kZWZpbmVkJyk7XG4gIH0sXG5cbiAgTnVsbExpdGVyYWw6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMub3Bjb2RlKCdwdXNoTGl0ZXJhbCcsICdudWxsJyk7XG4gIH0sXG5cbiAgSGFzaDogZnVuY3Rpb24oaGFzaCkge1xuICAgIGxldCBwYWlycyA9IGhhc2gucGFpcnMsXG4gICAgICAgIGkgPSAwLFxuICAgICAgICBsID0gcGFpcnMubGVuZ3RoO1xuXG4gICAgdGhpcy5vcGNvZGUoJ3B1c2hIYXNoJyk7XG5cbiAgICBmb3IgKDsgaSA8IGw7IGkrKykge1xuICAgICAgdGhpcy5wdXNoUGFyYW0ocGFpcnNbaV0udmFsdWUpO1xuICAgIH1cbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICB0aGlzLm9wY29kZSgnYXNzaWduVG9IYXNoJywgcGFpcnNbaV0ua2V5KTtcbiAgICB9XG4gICAgdGhpcy5vcGNvZGUoJ3BvcEhhc2gnKTtcbiAgfSxcblxuICAvLyBIRUxQRVJTXG4gIG9wY29kZTogZnVuY3Rpb24obmFtZSkge1xuICAgIHRoaXMub3Bjb2Rlcy5wdXNoKHsgb3Bjb2RlOiBuYW1lLCBhcmdzOiBzbGljZS5jYWxsKGFyZ3VtZW50cywgMSksIGxvYzogdGhpcy5zb3VyY2VOb2RlWzBdLmxvYyB9KTtcbiAgfSxcblxuICBhZGREZXB0aDogZnVuY3Rpb24oZGVwdGgpIHtcbiAgICBpZiAoIWRlcHRoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy51c2VEZXB0aHMgPSB0cnVlO1xuICB9LFxuXG4gIGNsYXNzaWZ5U2V4cHI6IGZ1bmN0aW9uKHNleHByKSB7XG4gICAgbGV0IGlzU2ltcGxlID0gQVNULmhlbHBlcnMuc2ltcGxlSWQoc2V4cHIucGF0aCk7XG5cbiAgICBsZXQgaXNCbG9ja1BhcmFtID0gaXNTaW1wbGUgJiYgISF0aGlzLmJsb2NrUGFyYW1JbmRleChzZXhwci5wYXRoLnBhcnRzWzBdKTtcblxuICAgIC8vIGEgbXVzdGFjaGUgaXMgYW4gZWxpZ2libGUgaGVscGVyIGlmOlxuICAgIC8vICogaXRzIGlkIGlzIHNpbXBsZSAoYSBzaW5nbGUgcGFydCwgbm90IGB0aGlzYCBvciBgLi5gKVxuICAgIGxldCBpc0hlbHBlciA9ICFpc0Jsb2NrUGFyYW0gJiYgQVNULmhlbHBlcnMuaGVscGVyRXhwcmVzc2lvbihzZXhwcik7XG5cbiAgICAvLyBpZiBhIG11c3RhY2hlIGlzIGFuIGVsaWdpYmxlIGhlbHBlciBidXQgbm90IGEgZGVmaW5pdGVcbiAgICAvLyBoZWxwZXIsIGl0IGlzIGFtYmlndW91cywgYW5kIHdpbGwgYmUgcmVzb2x2ZWQgaW4gYSBsYXRlclxuICAgIC8vIHBhc3Mgb3IgYXQgcnVudGltZS5cbiAgICBsZXQgaXNFbGlnaWJsZSA9ICFpc0Jsb2NrUGFyYW0gJiYgKGlzSGVscGVyIHx8IGlzU2ltcGxlKTtcblxuICAgIC8vIGlmIGFtYmlndW91cywgd2UgY2FuIHBvc3NpYmx5IHJlc29sdmUgdGhlIGFtYmlndWl0eSBub3dcbiAgICAvLyBBbiBlbGlnaWJsZSBoZWxwZXIgaXMgb25lIHRoYXQgZG9lcyBub3QgaGF2ZSBhIGNvbXBsZXggcGF0aCwgaS5lLiBgdGhpcy5mb29gLCBgLi4vZm9vYCBldGMuXG4gICAgaWYgKGlzRWxpZ2libGUgJiYgIWlzSGVscGVyKSB7XG4gICAgICBsZXQgbmFtZSA9IHNleHByLnBhdGgucGFydHNbMF0sXG4gICAgICAgICAgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcblxuICAgICAgaWYgKG9wdGlvbnMua25vd25IZWxwZXJzW25hbWVdKSB7XG4gICAgICAgIGlzSGVscGVyID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy5rbm93bkhlbHBlcnNPbmx5KSB7XG4gICAgICAgIGlzRWxpZ2libGUgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaXNIZWxwZXIpIHtcbiAgICAgIHJldHVybiAnaGVscGVyJztcbiAgICB9IGVsc2UgaWYgKGlzRWxpZ2libGUpIHtcbiAgICAgIHJldHVybiAnYW1iaWd1b3VzJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICdzaW1wbGUnO1xuICAgIH1cbiAgfSxcblxuICBwdXNoUGFyYW1zOiBmdW5jdGlvbihwYXJhbXMpIHtcbiAgICBmb3IgKGxldCBpID0gMCwgbCA9IHBhcmFtcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIHRoaXMucHVzaFBhcmFtKHBhcmFtc1tpXSk7XG4gICAgfVxuICB9LFxuXG4gIHB1c2hQYXJhbTogZnVuY3Rpb24odmFsKSB7XG4gICAgbGV0IHZhbHVlID0gdmFsLnZhbHVlICE9IG51bGwgPyB2YWwudmFsdWUgOiB2YWwub3JpZ2luYWwgfHwgJyc7XG5cbiAgICBpZiAodGhpcy5zdHJpbmdQYXJhbXMpIHtcbiAgICAgIGlmICh2YWx1ZS5yZXBsYWNlKSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWVcbiAgICAgICAgICAgIC5yZXBsYWNlKC9eKFxcLj9cXC5cXC8pKi9nLCAnJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC9cXC8vZywgJy4nKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHZhbC5kZXB0aCkge1xuICAgICAgICB0aGlzLmFkZERlcHRoKHZhbC5kZXB0aCk7XG4gICAgICB9XG4gICAgICB0aGlzLm9wY29kZSgnZ2V0Q29udGV4dCcsIHZhbC5kZXB0aCB8fCAwKTtcbiAgICAgIHRoaXMub3Bjb2RlKCdwdXNoU3RyaW5nUGFyYW0nLCB2YWx1ZSwgdmFsLnR5cGUpO1xuXG4gICAgICBpZiAodmFsLnR5cGUgPT09ICdTdWJFeHByZXNzaW9uJykge1xuICAgICAgICAvLyBTdWJFeHByZXNzaW9ucyBnZXQgZXZhbHVhdGVkIGFuZCBwYXNzZWQgaW5cbiAgICAgICAgLy8gaW4gc3RyaW5nIHBhcmFtcyBtb2RlLlxuICAgICAgICB0aGlzLmFjY2VwdCh2YWwpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy50cmFja0lkcykge1xuICAgICAgICBsZXQgYmxvY2tQYXJhbUluZGV4O1xuICAgICAgICBpZiAodmFsLnBhcnRzICYmICFBU1QuaGVscGVycy5zY29wZWRJZCh2YWwpICYmICF2YWwuZGVwdGgpIHtcbiAgICAgICAgICAgYmxvY2tQYXJhbUluZGV4ID0gdGhpcy5ibG9ja1BhcmFtSW5kZXgodmFsLnBhcnRzWzBdKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYmxvY2tQYXJhbUluZGV4KSB7XG4gICAgICAgICAgbGV0IGJsb2NrUGFyYW1DaGlsZCA9IHZhbC5wYXJ0cy5zbGljZSgxKS5qb2luKCcuJyk7XG4gICAgICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hJZCcsICdCbG9ja1BhcmFtJywgYmxvY2tQYXJhbUluZGV4LCBibG9ja1BhcmFtQ2hpbGQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhbHVlID0gdmFsLm9yaWdpbmFsIHx8IHZhbHVlO1xuICAgICAgICAgIGlmICh2YWx1ZS5yZXBsYWNlKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL150aGlzKD86XFwufCQpLywgJycpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL15cXC5cXC8vLCAnJylcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXlxcLiQvLCAnJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hJZCcsIHZhbC50eXBlLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuYWNjZXB0KHZhbCk7XG4gICAgfVxuICB9LFxuXG4gIHNldHVwRnVsbE11c3RhY2hlUGFyYW1zOiBmdW5jdGlvbihzZXhwciwgcHJvZ3JhbSwgaW52ZXJzZSwgb21pdEVtcHR5KSB7XG4gICAgbGV0IHBhcmFtcyA9IHNleHByLnBhcmFtcztcbiAgICB0aGlzLnB1c2hQYXJhbXMocGFyYW1zKTtcblxuICAgIHRoaXMub3Bjb2RlKCdwdXNoUHJvZ3JhbScsIHByb2dyYW0pO1xuICAgIHRoaXMub3Bjb2RlKCdwdXNoUHJvZ3JhbScsIGludmVyc2UpO1xuXG4gICAgaWYgKHNleHByLmhhc2gpIHtcbiAgICAgIHRoaXMuYWNjZXB0KHNleHByLmhhc2gpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wY29kZSgnZW1wdHlIYXNoJywgb21pdEVtcHR5KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyYW1zO1xuICB9LFxuXG4gIGJsb2NrUGFyYW1JbmRleDogZnVuY3Rpb24obmFtZSkge1xuICAgIGZvciAobGV0IGRlcHRoID0gMCwgbGVuID0gdGhpcy5vcHRpb25zLmJsb2NrUGFyYW1zLmxlbmd0aDsgZGVwdGggPCBsZW47IGRlcHRoKyspIHtcbiAgICAgIGxldCBibG9ja1BhcmFtcyA9IHRoaXMub3B0aW9ucy5ibG9ja1BhcmFtc1tkZXB0aF0sXG4gICAgICAgICAgcGFyYW0gPSBibG9ja1BhcmFtcyAmJiBpbmRleE9mKGJsb2NrUGFyYW1zLCBuYW1lKTtcbiAgICAgIGlmIChibG9ja1BhcmFtcyAmJiBwYXJhbSA+PSAwKSB7XG4gICAgICAgIHJldHVybiBbZGVwdGgsIHBhcmFtXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVjb21waWxlKGlucHV0LCBvcHRpb25zLCBlbnYpIHtcbiAgaWYgKGlucHV0ID09IG51bGwgfHwgKHR5cGVvZiBpbnB1dCAhPT0gJ3N0cmluZycgJiYgaW5wdXQudHlwZSAhPT0gJ1Byb2dyYW0nKSkge1xuICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ1lvdSBtdXN0IHBhc3MgYSBzdHJpbmcgb3IgSGFuZGxlYmFycyBBU1QgdG8gSGFuZGxlYmFycy5wcmVjb21waWxlLiBZb3UgcGFzc2VkICcgKyBpbnB1dCk7XG4gIH1cblxuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgaWYgKCEoJ2RhdGEnIGluIG9wdGlvbnMpKSB7XG4gICAgb3B0aW9ucy5kYXRhID0gdHJ1ZTtcbiAgfVxuICBpZiAob3B0aW9ucy5jb21wYXQpIHtcbiAgICBvcHRpb25zLnVzZURlcHRocyA9IHRydWU7XG4gIH1cblxuICBsZXQgYXN0ID0gZW52LnBhcnNlKGlucHV0LCBvcHRpb25zKSxcbiAgICAgIGVudmlyb25tZW50ID0gbmV3IGVudi5Db21waWxlcigpLmNvbXBpbGUoYXN0LCBvcHRpb25zKTtcbiAgcmV0dXJuIG5ldyBlbnYuSmF2YVNjcmlwdENvbXBpbGVyKCkuY29tcGlsZShlbnZpcm9ubWVudCwgb3B0aW9ucyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21waWxlKGlucHV0LCBvcHRpb25zID0ge30sIGVudikge1xuICBpZiAoaW5wdXQgPT0gbnVsbCB8fCAodHlwZW9mIGlucHV0ICE9PSAnc3RyaW5nJyAmJiBpbnB1dC50eXBlICE9PSAnUHJvZ3JhbScpKSB7XG4gICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignWW91IG11c3QgcGFzcyBhIHN0cmluZyBvciBIYW5kbGViYXJzIEFTVCB0byBIYW5kbGViYXJzLmNvbXBpbGUuIFlvdSBwYXNzZWQgJyArIGlucHV0KTtcbiAgfVxuXG4gIG9wdGlvbnMgPSBleHRlbmQoe30sIG9wdGlvbnMpO1xuICBpZiAoISgnZGF0YScgaW4gb3B0aW9ucykpIHtcbiAgICBvcHRpb25zLmRhdGEgPSB0cnVlO1xuICB9XG4gIGlmIChvcHRpb25zLmNvbXBhdCkge1xuICAgIG9wdGlvbnMudXNlRGVwdGhzID0gdHJ1ZTtcbiAgfVxuXG4gIGxldCBjb21waWxlZDtcblxuICBmdW5jdGlvbiBjb21waWxlSW5wdXQoKSB7XG4gICAgbGV0IGFzdCA9IGVudi5wYXJzZShpbnB1dCwgb3B0aW9ucyksXG4gICAgICAgIGVudmlyb25tZW50ID0gbmV3IGVudi5Db21waWxlcigpLmNvbXBpbGUoYXN0LCBvcHRpb25zKSxcbiAgICAgICAgdGVtcGxhdGVTcGVjID0gbmV3IGVudi5KYXZhU2NyaXB0Q29tcGlsZXIoKS5jb21waWxlKGVudmlyb25tZW50LCBvcHRpb25zLCB1bmRlZmluZWQsIHRydWUpO1xuICAgIHJldHVybiBlbnYudGVtcGxhdGUodGVtcGxhdGVTcGVjKTtcbiAgfVxuXG4gIC8vIFRlbXBsYXRlIGlzIG9ubHkgY29tcGlsZWQgb24gZmlyc3QgdXNlIGFuZCBjYWNoZWQgYWZ0ZXIgdGhhdCBwb2ludC5cbiAgZnVuY3Rpb24gcmV0KGNvbnRleHQsIGV4ZWNPcHRpb25zKSB7XG4gICAgaWYgKCFjb21waWxlZCkge1xuICAgICAgY29tcGlsZWQgPSBjb21waWxlSW5wdXQoKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbXBpbGVkLmNhbGwodGhpcywgY29udGV4dCwgZXhlY09wdGlvbnMpO1xuICB9XG4gIHJldC5fc2V0dXAgPSBmdW5jdGlvbihzZXR1cE9wdGlvbnMpIHtcbiAgICBpZiAoIWNvbXBpbGVkKSB7XG4gICAgICBjb21waWxlZCA9IGNvbXBpbGVJbnB1dCgpO1xuICAgIH1cbiAgICByZXR1cm4gY29tcGlsZWQuX3NldHVwKHNldHVwT3B0aW9ucyk7XG4gIH07XG4gIHJldC5fY2hpbGQgPSBmdW5jdGlvbihpLCBkYXRhLCBibG9ja1BhcmFtcywgZGVwdGhzKSB7XG4gICAgaWYgKCFjb21waWxlZCkge1xuICAgICAgY29tcGlsZWQgPSBjb21waWxlSW5wdXQoKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbXBpbGVkLl9jaGlsZChpLCBkYXRhLCBibG9ja1BhcmFtcywgZGVwdGhzKTtcbiAgfTtcbiAgcmV0dXJuIHJldDtcbn1cblxuZnVuY3Rpb24gYXJnRXF1YWxzKGEsIGIpIHtcbiAgaWYgKGEgPT09IGIpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmIChpc0FycmF5KGEpICYmIGlzQXJyYXkoYikgJiYgYS5sZW5ndGggPT09IGIubGVuZ3RoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoIWFyZ0VxdWFscyhhW2ldLCBiW2ldKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybUxpdGVyYWxUb1BhdGgoc2V4cHIpIHtcbiAgaWYgKCFzZXhwci5wYXRoLnBhcnRzKSB7XG4gICAgbGV0IGxpdGVyYWwgPSBzZXhwci5wYXRoO1xuICAgIC8vIENhc3RpbmcgdG8gc3RyaW5nIGhlcmUgdG8gbWFrZSBmYWxzZSBhbmQgMCBsaXRlcmFsIHZhbHVlcyBwbGF5IG5pY2VseSB3aXRoIHRoZSByZXN0XG4gICAgLy8gb2YgdGhlIHN5c3RlbS5cbiAgICBzZXhwci5wYXRoID0ge1xuICAgICAgdHlwZTogJ1BhdGhFeHByZXNzaW9uJyxcbiAgICAgIGRhdGE6IGZhbHNlLFxuICAgICAgZGVwdGg6IDAsXG4gICAgICBwYXJ0czogW2xpdGVyYWwub3JpZ2luYWwgKyAnJ10sXG4gICAgICBvcmlnaW5hbDogbGl0ZXJhbC5vcmlnaW5hbCArICcnLFxuICAgICAgbG9jOiBsaXRlcmFsLmxvY1xuICAgIH07XG4gIH1cbn1cbiJdfQ== |
| 1 | 'use strict'; | ||
| 2 | |||
| 3 | exports.__esModule = true; | ||
| 4 | exports.SourceLocation = SourceLocation; | ||
| 5 | exports.id = id; | ||
| 6 | exports.stripFlags = stripFlags; | ||
| 7 | exports.stripComment = stripComment; | ||
| 8 | exports.preparePath = preparePath; | ||
| 9 | exports.prepareMustache = prepareMustache; | ||
| 10 | exports.prepareRawBlock = prepareRawBlock; | ||
| 11 | exports.prepareBlock = prepareBlock; | ||
| 12 | exports.prepareProgram = prepareProgram; | ||
| 13 | exports.preparePartialBlock = preparePartialBlock; | ||
| 14 | // istanbul ignore next | ||
| 15 | |||
| 16 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } | ||
| 17 | |||
| 18 | var _exception = require('../exception'); | ||
| 19 | |||
| 20 | var _exception2 = _interopRequireDefault(_exception); | ||
| 21 | |||
| 22 | function validateClose(open, close) { | ||
| 23 | close = close.path ? close.path.original : close; | ||
| 24 | |||
| 25 | if (open.path.original !== close) { | ||
| 26 | var errorNode = { loc: open.path.loc }; | ||
| 27 | |||
| 28 | throw new _exception2['default'](open.path.original + " doesn't match " + close, errorNode); | ||
| 29 | } | ||
| 30 | } | ||
| 31 | |||
| 32 | function SourceLocation(source, locInfo) { | ||
| 33 | this.source = source; | ||
| 34 | this.start = { | ||
| 35 | line: locInfo.first_line, | ||
| 36 | column: locInfo.first_column | ||
| 37 | }; | ||
| 38 | this.end = { | ||
| 39 | line: locInfo.last_line, | ||
| 40 | column: locInfo.last_column | ||
| 41 | }; | ||
| 42 | } | ||
| 43 | |||
| 44 | function id(token) { | ||
| 45 | if (/^\[.*\]$/.test(token)) { | ||
| 46 | return token.substr(1, token.length - 2); | ||
| 47 | } else { | ||
| 48 | return token; | ||
| 49 | } | ||
| 50 | } | ||
| 51 | |||
| 52 | function stripFlags(open, close) { | ||
| 53 | return { | ||
| 54 | open: open.charAt(2) === '~', | ||
| 55 | close: close.charAt(close.length - 3) === '~' | ||
| 56 | }; | ||
| 57 | } | ||
| 58 | |||
| 59 | function stripComment(comment) { | ||
| 60 | return comment.replace(/^\{\{~?\!-?-?/, '').replace(/-?-?~?\}\}$/, ''); | ||
| 61 | } | ||
| 62 | |||
| 63 | function preparePath(data, parts, loc) { | ||
| 64 | loc = this.locInfo(loc); | ||
| 65 | |||
| 66 | var original = data ? '@' : '', | ||
| 67 | dig = [], | ||
| 68 | depth = 0, | ||
| 69 | depthString = ''; | ||
| 70 | |||
| 71 | for (var i = 0, l = parts.length; i < l; i++) { | ||
| 72 | var part = parts[i].part, | ||
| 73 | |||
| 74 | // If we have [] syntax then we do not treat path references as operators, | ||
| 75 | // i.e. foo.[this] resolves to approximately context.foo['this'] | ||
| 76 | isLiteral = parts[i].original !== part; | ||
| 77 | original += (parts[i].separator || '') + part; | ||
| 78 | |||
| 79 | if (!isLiteral && (part === '..' || part === '.' || part === 'this')) { | ||
| 80 | if (dig.length > 0) { | ||
| 81 | throw new _exception2['default']('Invalid path: ' + original, { loc: loc }); | ||
| 82 | } else if (part === '..') { | ||
| 83 | depth++; | ||
| 84 | depthString += '../'; | ||
| 85 | } | ||
| 86 | } else { | ||
| 87 | dig.push(part); | ||
| 88 | } | ||
| 89 | } | ||
| 90 | |||
| 91 | return { | ||
| 92 | type: 'PathExpression', | ||
| 93 | data: data, | ||
| 94 | depth: depth, | ||
| 95 | parts: dig, | ||
| 96 | original: original, | ||
| 97 | loc: loc | ||
| 98 | }; | ||
| 99 | } | ||
| 100 | |||
| 101 | function prepareMustache(path, params, hash, open, strip, locInfo) { | ||
| 102 | // Must use charAt to support IE pre-10 | ||
| 103 | var escapeFlag = open.charAt(3) || open.charAt(2), | ||
| 104 | escaped = escapeFlag !== '{' && escapeFlag !== '&'; | ||
| 105 | |||
| 106 | var decorator = /\*/.test(open); | ||
| 107 | return { | ||
| 108 | type: decorator ? 'Decorator' : 'MustacheStatement', | ||
| 109 | path: path, | ||
| 110 | params: params, | ||
| 111 | hash: hash, | ||
| 112 | escaped: escaped, | ||
| 113 | strip: strip, | ||
| 114 | loc: this.locInfo(locInfo) | ||
| 115 | }; | ||
| 116 | } | ||
| 117 | |||
| 118 | function prepareRawBlock(openRawBlock, contents, close, locInfo) { | ||
| 119 | validateClose(openRawBlock, close); | ||
| 120 | |||
| 121 | locInfo = this.locInfo(locInfo); | ||
| 122 | var program = { | ||
| 123 | type: 'Program', | ||
| 124 | body: contents, | ||
| 125 | strip: {}, | ||
| 126 | loc: locInfo | ||
| 127 | }; | ||
| 128 | |||
| 129 | return { | ||
| 130 | type: 'BlockStatement', | ||
| 131 | path: openRawBlock.path, | ||
| 132 | params: openRawBlock.params, | ||
| 133 | hash: openRawBlock.hash, | ||
| 134 | program: program, | ||
| 135 | openStrip: {}, | ||
| 136 | inverseStrip: {}, | ||
| 137 | closeStrip: {}, | ||
| 138 | loc: locInfo | ||
| 139 | }; | ||
| 140 | } | ||
| 141 | |||
| 142 | function prepareBlock(openBlock, program, inverseAndProgram, close, inverted, locInfo) { | ||
| 143 | if (close && close.path) { | ||
| 144 | validateClose(openBlock, close); | ||
| 145 | } | ||
| 146 | |||
| 147 | var decorator = /\*/.test(openBlock.open); | ||
| 148 | |||
| 149 | program.blockParams = openBlock.blockParams; | ||
| 150 | |||
| 151 | var inverse = undefined, | ||
| 152 | inverseStrip = undefined; | ||
| 153 | |||
| 154 | if (inverseAndProgram) { | ||
| 155 | if (decorator) { | ||
| 156 | throw new _exception2['default']('Unexpected inverse block on decorator', inverseAndProgram); | ||
| 157 | } | ||
| 158 | |||
| 159 | if (inverseAndProgram.chain) { | ||
| 160 | inverseAndProgram.program.body[0].closeStrip = close.strip; | ||
| 161 | } | ||
| 162 | |||
| 163 | inverseStrip = inverseAndProgram.strip; | ||
| 164 | inverse = inverseAndProgram.program; | ||
| 165 | } | ||
| 166 | |||
| 167 | if (inverted) { | ||
| 168 | inverted = inverse; | ||
| 169 | inverse = program; | ||
| 170 | program = inverted; | ||
| 171 | } | ||
| 172 | |||
| 173 | return { | ||
| 174 | type: decorator ? 'DecoratorBlock' : 'BlockStatement', | ||
| 175 | path: openBlock.path, | ||
| 176 | params: openBlock.params, | ||
| 177 | hash: openBlock.hash, | ||
| 178 | program: program, | ||
| 179 | inverse: inverse, | ||
| 180 | openStrip: openBlock.strip, | ||
| 181 | inverseStrip: inverseStrip, | ||
| 182 | closeStrip: close && close.strip, | ||
| 183 | loc: this.locInfo(locInfo) | ||
| 184 | }; | ||
| 185 | } | ||
| 186 | |||
| 187 | function prepareProgram(statements, loc) { | ||
| 188 | if (!loc && statements.length) { | ||
| 189 | var firstLoc = statements[0].loc, | ||
| 190 | lastLoc = statements[statements.length - 1].loc; | ||
| 191 | |||
| 192 | /* istanbul ignore else */ | ||
| 193 | if (firstLoc && lastLoc) { | ||
| 194 | loc = { | ||
| 195 | source: firstLoc.source, | ||
| 196 | start: { | ||
| 197 | line: firstLoc.start.line, | ||
| 198 | column: firstLoc.start.column | ||
| 199 | }, | ||
| 200 | end: { | ||
| 201 | line: lastLoc.end.line, | ||
| 202 | column: lastLoc.end.column | ||
| 203 | } | ||
| 204 | }; | ||
| 205 | } | ||
| 206 | } | ||
| 207 | |||
| 208 | return { | ||
| 209 | type: 'Program', | ||
| 210 | body: statements, | ||
| 211 | strip: {}, | ||
| 212 | loc: loc | ||
| 213 | }; | ||
| 214 | } | ||
| 215 | |||
| 216 | function preparePartialBlock(open, program, close, locInfo) { | ||
| 217 | validateClose(open, close); | ||
| 218 | |||
| 219 | return { | ||
| 220 | type: 'PartialBlockStatement', | ||
| 221 | name: open.path, | ||
| 222 | params: open.params, | ||
| 223 | hash: open.hash, | ||
| 224 | program: program, | ||
| 225 | openStrip: open.strip, | ||
| 226 | closeStrip: close && close.strip, | ||
| 227 | loc: this.locInfo(locInfo) | ||
| 228 | }; | ||
| 229 | } | ||
| 230 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2NvbXBpbGVyL2hlbHBlcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7eUJBQXNCLGNBQWM7Ozs7QUFFcEMsU0FBUyxhQUFhLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRTtBQUNsQyxPQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7O0FBRWpELE1BQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEtBQUssS0FBSyxFQUFFO0FBQ2hDLFFBQUksU0FBUyxHQUFHLEVBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFDLENBQUM7O0FBRXJDLFVBQU0sMkJBQWMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsaUJBQWlCLEdBQUcsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0dBQ2hGO0NBQ0Y7O0FBRU0sU0FBUyxjQUFjLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRTtBQUM5QyxNQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztBQUNyQixNQUFJLENBQUMsS0FBSyxHQUFHO0FBQ1gsUUFBSSxFQUFFLE9BQU8sQ0FBQyxVQUFVO0FBQ3hCLFVBQU0sRUFBRSxPQUFPLENBQUMsWUFBWTtHQUM3QixDQUFDO0FBQ0YsTUFBSSxDQUFDLEdBQUcsR0FBRztBQUNULFFBQUksRUFBRSxPQUFPLENBQUMsU0FBUztBQUN2QixVQUFNLEVBQUUsT0FBTyxDQUFDLFdBQVc7R0FDNUIsQ0FBQztDQUNIOztBQUVNLFNBQVMsRUFBRSxDQUFDLEtBQUssRUFBRTtBQUN4QixNQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDMUIsV0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0dBQzFD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anMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRXhjZXB0aW9uIGZyb20gJy4uL2V4Y2VwdGlvbic7XG5cbmZ1bmN0aW9uIHZhbGlkYXRlQ2xvc2Uob3BlbiwgY2xvc2UpIHtcbiAgY2xvc2UgPSBjbG9zZS5wYXRoID8gY2xvc2UucGF0aC5vcmlnaW5hbCA6IGNsb3NlO1xuXG4gIGlmIChvcGVuLnBhdGgub3JpZ2luYWwgIT09IGNsb3NlKSB7XG4gICAgbGV0IGVycm9yTm9kZSA9IHtsb2M6IG9wZW4ucGF0aC5sb2N9O1xuXG4gICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihvcGVuLnBhdGgub3JpZ2luYWwgKyBcIiBkb2Vzbid0IG1hdGNoIFwiICsgY2xvc2UsIGVycm9yTm9kZSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFNvdXJjZUxvY2F0aW9uKHNvdXJjZSwgbG9jSW5mbykge1xuICB0aGlzLnNvdXJjZSA9IHNvdXJjZTtcbiAgdGhpcy5zdGFydCA9IHtcbiAgICBsaW5lOiBsb2NJbmZvLmZpcnN0X2xpbmUsXG4gICAgY29sdW1uOiBsb2NJbmZvLmZpcnN0X2NvbHVtblxuICB9O1xuICB0aGlzLmVuZCA9IHtcbiAgICBsaW5lOiBsb2NJbmZvLmxhc3RfbGluZSxcbiAgICBjb2x1bW46IGxvY0luZm8ubGFzdF9jb2x1bW5cbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlkKHRva2VuKSB7XG4gIGlmICgvXlxcWy4qXFxdJC8udGVzdCh0b2tlbikpIHtcbiAgICByZXR1cm4gdG9rZW4uc3Vic3RyKDEsIHRva2VuLmxlbmd0aCAtIDIpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB0b2tlbjtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RyaXBGbGFncyhvcGVuLCBjbG9zZSkge1xuICByZXR1cm4ge1xuICAgIG9wZW46IG9wZW4uY2hhckF0KDIpID09PSAnficsXG4gICAgY2xvc2U6IGNsb3NlLmNoYXJBdChjbG9zZS5sZW5ndGggLSAzKSA9PT0gJ34nXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpcENvbW1lbnQoY29tbWVudCkge1xuICByZXR1cm4gY29tbWVudC5yZXBsYWNlKC9eXFx7XFx7fj9cXCEtPy0/LywgJycpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoLy0/LT9+P1xcfVxcfSQvLCAnJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlUGF0aChkYXRhLCBwYXJ0cywgbG9jKSB7XG4gIGxvYyA9IHRoaXMubG9jSW5mbyhsb2MpO1xuXG4gIGxldCBvcmlnaW5hbCA9IGRhdGEgPyAnQCcgOiAnJyxcbiAgICAgIGRpZyA9IFtdLFxuICAgICAgZGVwdGggPSAwLFxuICAgICAgZGVwdGhTdHJpbmcgPSAnJztcblxuICBmb3IgKGxldCBpID0gMCwgbCA9IHBhcnRzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGxldCBwYXJ0ID0gcGFydHNbaV0ucGFydCxcbiAgICAgICAgLy8gSWYgd2UgaGF2ZSBbXSBzeW50YXggdGhlbiB3ZSBkbyBub3QgdHJlYXQgcGF0aCByZWZlcmVuY2VzIGFzIG9wZXJhdG9ycyxcbiAgICAgICAgLy8gaS5lLiBmb28uW3RoaXNdIHJlc29sdmVzIHRvIGFwcHJveGltYXRlbHkgY29udGV4dC5mb29bJ3RoaXMnXVxuICAgICAgICBpc0xpdGVyYWwgPSBwYXJ0c1tpXS5vcmlnaW5hbCAhPT0gcGFydDtcbiAgICBvcmlnaW5hbCArPSAocGFydHNbaV0uc2VwYXJhdG9yIHx8ICcnKSArIHBhcnQ7XG5cbiAgICBpZiAoIWlzTGl0ZXJhbCAmJiAocGFydCA9PT0gJy4uJyB8fCBwYXJ0ID09PSAnLicgfHwgcGFydCA9PT0gJ3RoaXMnKSkge1xuICAgICAgaWYgKGRpZy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ0ludmFsaWQgcGF0aDogJyArIG9yaWdpbmFsLCB7bG9jfSk7XG4gICAgICB9IGVsc2UgaWYgKHBhcnQgPT09ICcuLicpIHtcbiAgICAgICAgZGVwdGgrKztcbiAgICAgICAgZGVwdGhTdHJpbmcgKz0gJy4uLyc7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGRpZy5wdXNoKHBhcnQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdHlwZTogJ1BhdGhFeHByZXNzaW9uJyxcbiAgICBkYXRhLFxuICAgIGRlcHRoLFxuICAgIHBhcnRzOiBkaWcsXG4gICAgb3JpZ2luYWwsXG4gICAgbG9jXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlTXVzdGFjaGUocGF0aCwgcGFyYW1zLCBoYXNoLCBvcGVuLCBzdHJpcCwgbG9jSW5mbykge1xuICAvLyBNdXN0IHVzZSBjaGFyQXQgdG8gc3VwcG9ydCBJRSBwcmUtMTBcbiAgbGV0IGVzY2FwZUZsYWcgPSBvcGVuLmNoYXJBdCgzKSB8fCBvcGVuLmNoYXJBdCgyKSxcbiAgICAgIGVzY2FwZWQgPSBlc2NhcGVGbGFnICE9PSAneycgJiYgZXNjYXBlRmxhZyAhPT0gJyYnO1xuXG4gIGxldCBkZWNvcmF0b3IgPSAoL1xcKi8udGVzdChvcGVuKSk7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZGVjb3JhdG9yID8gJ0RlY29yYXRvcicgOiAnTXVzdGFjaGVTdGF0ZW1lbnQnLFxuICAgIHBhdGgsXG4gICAgcGFyYW1zLFxuICAgIGhhc2gsXG4gICAgZXNjYXBlZCxcbiAgICBzdHJpcCxcbiAgICBsb2M6IHRoaXMubG9jSW5mbyhsb2NJbmZvKVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZVJhd0Jsb2NrKG9wZW5SYXdCbG9jaywgY29udGVudHMsIGNsb3NlLCBsb2NJbmZvKSB7XG4gIHZhbGlkYXRlQ2xvc2Uob3BlblJhd0Jsb2NrLCBjbG9zZSk7XG5cbiAgbG9jSW5mbyA9IHRoaXMubG9jSW5mbyhsb2NJbmZvKTtcbiAgbGV0IHByb2dyYW0gPSB7XG4gICAgdHlwZTogJ1Byb2dyYW0nLFxuICAgIGJvZHk6IGNvbnRlbnRzLFxuICAgIHN0cmlwOiB7fSxcbiAgICBsb2M6IGxvY0luZm9cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIHR5cGU6ICdCbG9ja1N0YXRlbWVudCcsXG4gICAgcGF0aDogb3BlblJhd0Jsb2NrLnBhdGgsXG4gICAgcGFyYW1zOiBvcGVuUmF3QmxvY2sucGFyYW1zLFxuICAgIGhhc2g6IG9wZW5SYXdCbG9jay5oYXNoLFxuICAgIHByb2dyYW0sXG4gICAgb3BlblN0cmlwOiB7fSxcbiAgICBpbnZlcnNlU3RyaXA6IHt9LFxuICAgIGNsb3NlU3RyaXA6IHt9LFxuICAgIGxvYzogbG9jSW5mb1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZUJsb2NrKG9wZW5CbG9jaywgcHJvZ3JhbSwgaW52ZXJzZUFuZFByb2dyYW0sIGNsb3NlLCBpbnZlcnRlZCwgbG9jSW5mbykge1xuICBpZiAoY2xvc2UgJiYgY2xvc2UucGF0aCkge1xuICAgIHZhbGlkYXRlQ2xvc2Uob3BlbkJsb2NrLCBjbG9zZSk7XG4gIH1cblxuICBsZXQgZGVjb3JhdG9yID0gKC9cXCovLnRlc3Qob3BlbkJsb2NrLm9wZW4pKTtcblxuICBwcm9ncmFtLmJsb2NrUGFyYW1zID0gb3BlbkJsb2NrLmJsb2NrUGFyYW1zO1xuXG4gIGxldCBpbnZlcnNlLFxuICAgICAgaW52ZXJzZVN0cmlwO1xuXG4gIGlmIChpbnZlcnNlQW5kUHJvZ3JhbSkge1xuICAgIGlmIChkZWNvcmF0b3IpIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ1VuZXhwZWN0ZWQgaW52ZXJzZSBibG9jayBvbiBkZWNvcmF0b3InLCBpbnZlcnNlQW5kUHJvZ3JhbSk7XG4gICAgfVxuXG4gICAgaWYgKGludmVyc2VBbmRQcm9ncmFtLmNoYWluKSB7XG4gICAgICBpbnZlcnNlQW5kUHJvZ3JhbS5wcm9ncmFtLmJvZHlbMF0uY2xvc2VTdHJpcCA9IGNsb3NlLnN0cmlwO1xuICAgIH1cblxuICAgIGludmVyc2VTdHJpcCA9IGludmVyc2VBbmRQcm9ncmFtLnN0cmlwO1xuICAgIGludmVyc2UgPSBpbnZlcnNlQW5kUHJvZ3JhbS5wcm9ncmFtO1xuICB9XG5cbiAgaWYgKGludmVydGVkKSB7XG4gICAgaW52ZXJ0ZWQgPSBpbnZlcnNlO1xuICAgIGludmVyc2UgPSBwcm9ncmFtO1xuICAgIHByb2dyYW0gPSBpbnZlcnRlZDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdHlwZTogZGVjb3JhdG9yID8gJ0RlY29yYXRvckJsb2NrJyA6ICdCbG9ja1N0YXRlbWVudCcsXG4gICAgcGF0aDogb3BlbkJsb2NrLnBhdGgsXG4gICAgcGFyYW1zOiBvcGVuQmxvY2sucGFyYW1zLFxuICAgIGhhc2g6IG9wZW5CbG9jay5oYXNoLFxuICAgIHByb2dyYW0sXG4gICAgaW52ZXJzZSxcbiAgICBvcGVuU3RyaXA6IG9wZW5CbG9jay5zdHJpcCxcbiAgICBpbnZlcnNlU3RyaXAsXG4gICAgY2xvc2VTdHJpcDogY2xvc2UgJiYgY2xvc2Uuc3RyaXAsXG4gICAgbG9jOiB0aGlzLmxvY0luZm8obG9jSW5mbylcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmVQcm9ncmFtKHN0YXRlbWVudHMsIGxvYykge1xuICBpZiAoIWxvYyAmJiBzdGF0ZW1lbnRzLmxlbmd0aCkge1xuICAgIGNvbnN0IGZpcnN0TG9jID0gc3RhdGVtZW50c1swXS5sb2MsXG4gICAgICAgICAgbGFzdExvYyA9IHN0YXRlbWVudHNbc3RhdGVtZW50cy5sZW5ndGggLSAxXS5sb2M7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChmaXJzdExvYyAmJiBsYXN0TG9jKSB7XG4gICAgICBsb2MgPSB7XG4gICAgICAgIHNvdXJjZTogZmlyc3RMb2Muc291cmNlLFxuICAgICAgICBzdGFydDoge1xuICAgICAgICAgIGxpbmU6IGZpcnN0TG9jLnN0YXJ0LmxpbmUsXG4gICAgICAgICAgY29sdW1uOiBmaXJzdExvYy5zdGFydC5jb2x1bW5cbiAgICAgICAgfSxcbiAgICAgICAgZW5kOiB7XG4gICAgICAgICAgbGluZTogbGFzdExvYy5lbmQubGluZSxcbiAgICAgICAgICBjb2x1bW46IGxhc3RMb2MuZW5kLmNvbHVtblxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdHlwZTogJ1Byb2dyYW0nLFxuICAgIGJvZHk6IHN0YXRlbWVudHMsXG4gICAgc3RyaXA6IHt9LFxuICAgIGxvYzogbG9jXG4gIH07XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmVQYXJ0aWFsQmxvY2sob3BlbiwgcHJvZ3JhbSwgY2xvc2UsIGxvY0luZm8pIHtcbiAgdmFsaWRhdGVDbG9zZShvcGVuLCBjbG9zZSk7XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnUGFydGlhbEJsb2NrU3RhdGVtZW50JyxcbiAgICBuYW1lOiBvcGVuLnBhdGgsXG4gICAgcGFyYW1zOiBvcGVuLnBhcmFtcyxcbiAgICBoYXNoOiBvcGVuLmhhc2gsXG4gICAgcHJvZ3JhbSxcbiAgICBvcGVuU3RyaXA6IG9wZW4uc3RyaXAsXG4gICAgY2xvc2VTdHJpcDogY2xvc2UgJiYgY2xvc2Uuc3RyaXAsXG4gICAgbG9jOiB0aGlzLmxvY0luZm8obG9jSW5mbylcbiAgfTtcbn1cblxuIl19 |
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
| 1 | /* eslint-disable new-cap */ | ||
| 2 | 'use strict'; | ||
| 3 | |||
| 4 | exports.__esModule = true; | ||
| 5 | exports.print = print; | ||
| 6 | exports.PrintVisitor = PrintVisitor; | ||
| 7 | // istanbul ignore next | ||
| 8 | |||
| 9 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } | ||
| 10 | |||
| 11 | var _visitor = require('./visitor'); | ||
| 12 | |||
| 13 | var _visitor2 = _interopRequireDefault(_visitor); | ||
| 14 | |||
| 15 | function print(ast) { | ||
| 16 | return new PrintVisitor().accept(ast); | ||
| 17 | } | ||
| 18 | |||
| 19 | function PrintVisitor() { | ||
| 20 | this.padding = 0; | ||
| 21 | } | ||
| 22 | |||
| 23 | PrintVisitor.prototype = new _visitor2['default'](); | ||
| 24 | |||
| 25 | PrintVisitor.prototype.pad = function (string) { | ||
| 26 | var out = ''; | ||
| 27 | |||
| 28 | for (var i = 0, l = this.padding; i < l; i++) { | ||
| 29 | out += ' '; | ||
| 30 | } | ||
| 31 | |||
| 32 | out += string + '\n'; | ||
| 33 | return out; | ||
| 34 | }; | ||
| 35 | |||
| 36 | PrintVisitor.prototype.Program = function (program) { | ||
| 37 | var out = '', | ||
| 38 | body = program.body, | ||
| 39 | i = undefined, | ||
| 40 | l = undefined; | ||
| 41 | |||
| 42 | if (program.blockParams) { | ||
| 43 | var blockParams = 'BLOCK PARAMS: ['; | ||
| 44 | for (i = 0, l = program.blockParams.length; i < l; i++) { | ||
| 45 | blockParams += ' ' + program.blockParams[i]; | ||
| 46 | } | ||
| 47 | blockParams += ' ]'; | ||
| 48 | out += this.pad(blockParams); | ||
| 49 | } | ||
| 50 | |||
| 51 | for (i = 0, l = body.length; i < l; i++) { | ||
| 52 | out += this.accept(body[i]); | ||
| 53 | } | ||
| 54 | |||
| 55 | this.padding--; | ||
| 56 | |||
| 57 | return out; | ||
| 58 | }; | ||
| 59 | |||
| 60 | PrintVisitor.prototype.MustacheStatement = function (mustache) { | ||
| 61 | return this.pad('{{ ' + this.SubExpression(mustache) + ' }}'); | ||
| 62 | }; | ||
| 63 | PrintVisitor.prototype.Decorator = function (mustache) { | ||
| 64 | return this.pad('{{ DIRECTIVE ' + this.SubExpression(mustache) + ' }}'); | ||
| 65 | }; | ||
| 66 | |||
| 67 | PrintVisitor.prototype.BlockStatement = PrintVisitor.prototype.DecoratorBlock = function (block) { | ||
| 68 | var out = ''; | ||
| 69 | |||
| 70 | out += this.pad((block.type === 'DecoratorBlock' ? 'DIRECTIVE ' : '') + 'BLOCK:'); | ||
| 71 | this.padding++; | ||
| 72 | out += this.pad(this.SubExpression(block)); | ||
| 73 | if (block.program) { | ||
| 74 | out += this.pad('PROGRAM:'); | ||
| 75 | this.padding++; | ||
| 76 | out += this.accept(block.program); | ||
| 77 | this.padding--; | ||
| 78 | } | ||
| 79 | if (block.inverse) { | ||
| 80 | if (block.program) { | ||
| 81 | this.padding++; | ||
| 82 | } | ||
| 83 | out += this.pad('{{^}}'); | ||
| 84 | this.padding++; | ||
| 85 | out += this.accept(block.inverse); | ||
| 86 | this.padding--; | ||
| 87 | if (block.program) { | ||
| 88 | this.padding--; | ||
| 89 | } | ||
| 90 | } | ||
| 91 | this.padding--; | ||
| 92 | |||
| 93 | return out; | ||
| 94 | }; | ||
| 95 | |||
| 96 | PrintVisitor.prototype.PartialStatement = function (partial) { | ||
| 97 | var content = 'PARTIAL:' + partial.name.original; | ||
| 98 | if (partial.params[0]) { | ||
| 99 | content += ' ' + this.accept(partial.params[0]); | ||
| 100 | } | ||
| 101 | if (partial.hash) { | ||
| 102 | content += ' ' + this.accept(partial.hash); | ||
| 103 | } | ||
| 104 | return this.pad('{{> ' + content + ' }}'); | ||
| 105 | }; | ||
| 106 | PrintVisitor.prototype.PartialBlockStatement = function (partial) { | ||
| 107 | var content = 'PARTIAL BLOCK:' + partial.name.original; | ||
| 108 | if (partial.params[0]) { | ||
| 109 | content += ' ' + this.accept(partial.params[0]); | ||
| 110 | } | ||
| 111 | if (partial.hash) { | ||
| 112 | content += ' ' + this.accept(partial.hash); | ||
| 113 | } | ||
| 114 | |||
| 115 | content += ' ' + this.pad('PROGRAM:'); | ||
| 116 | this.padding++; | ||
| 117 | content += this.accept(partial.program); | ||
| 118 | this.padding--; | ||
| 119 | |||
| 120 | return this.pad('{{> ' + content + ' }}'); | ||
| 121 | }; | ||
| 122 | |||
| 123 | PrintVisitor.prototype.ContentStatement = function (content) { | ||
| 124 | return this.pad("CONTENT[ '" + content.value + "' ]"); | ||
| 125 | }; | ||
| 126 | |||
| 127 | PrintVisitor.prototype.CommentStatement = function (comment) { | ||
| 128 | return this.pad("{{! '" + comment.value + "' }}"); | ||
| 129 | }; | ||
| 130 | |||
| 131 | PrintVisitor.prototype.SubExpression = function (sexpr) { | ||
| 132 | var params = sexpr.params, | ||
| 133 | paramStrings = [], | ||
| 134 | hash = undefined; | ||
| 135 | |||
| 136 | for (var i = 0, l = params.length; i < l; i++) { | ||
| 137 | paramStrings.push(this.accept(params[i])); | ||
| 138 | } | ||
| 139 | |||
| 140 | params = '[' + paramStrings.join(', ') + ']'; | ||
| 141 | |||
| 142 | hash = sexpr.hash ? ' ' + this.accept(sexpr.hash) : ''; | ||
| 143 | |||
| 144 | return this.accept(sexpr.path) + ' ' + params + hash; | ||
| 145 | }; | ||
| 146 | |||
| 147 | PrintVisitor.prototype.PathExpression = function (id) { | ||
| 148 | var path = id.parts.join('/'); | ||
| 149 | return (id.data ? '@' : '') + 'PATH:' + path; | ||
| 150 | }; | ||
| 151 | |||
| 152 | PrintVisitor.prototype.StringLiteral = function (string) { | ||
| 153 | return '"' + string.value + '"'; | ||
| 154 | }; | ||
| 155 | |||
| 156 | PrintVisitor.prototype.NumberLiteral = function (number) { | ||
| 157 | return 'NUMBER{' + number.value + '}'; | ||
| 158 | }; | ||
| 159 | |||
| 160 | PrintVisitor.prototype.BooleanLiteral = function (bool) { | ||
| 161 | return 'BOOLEAN{' + bool.value + '}'; | ||
| 162 | }; | ||
| 163 | |||
| 164 | PrintVisitor.prototype.UndefinedLiteral = function () { | ||
| 165 | return 'UNDEFINED'; | ||
| 166 | }; | ||
| 167 | |||
| 168 | PrintVisitor.prototype.NullLiteral = function () { | ||
| 169 | return 'NULL'; | ||
| 170 | }; | ||
| 171 | |||
| 172 | PrintVisitor.prototype.Hash = function (hash) { | ||
| 173 | var pairs = hash.pairs, | ||
| 174 | joinedPairs = []; | ||
| 175 | |||
| 176 | for (var i = 0, l = pairs.length; i < l; i++) { | ||
| 177 | joinedPairs.push(this.accept(pairs[i])); | ||
| 178 | } | ||
| 179 | |||
| 180 | return 'HASH{' + joinedPairs.join(', ') + '}'; | ||
| 181 | }; | ||
| 182 | PrintVisitor.prototype.HashPair = function (pair) { | ||
| 183 | return pair.key + '=' + this.accept(pair.value); | ||
| 184 | }; | ||
| 185 | /* eslint-enable new-cap */ | ||
| 186 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2NvbXBpbGVyL3ByaW50ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozt1QkFDb0IsV0FBVzs7OztBQUV4QixTQUFTLEtBQUssQ0FBQyxHQUFHLEVBQUU7QUFDekIsU0FBTyxJQUFJLFlBQVksRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztDQUN2Qzs7QUFFTSxTQUFTLFlBQVksR0FBRztBQUM3QixNQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztDQUNsQjs7QUFFRCxZQUFZLENBQUMsU0FBUyxHQUFHLDBCQUFhLENBQUM7O0FBRXZDLFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxHQUFHLFVBQVMsTUFBTSxFQUFFO0FBQzVDLE1BQUksR0FBRyxHQUFHLEVBQUUsQ0FBQzs7QUFFYixPQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzVDLE9BQUcsSUFBSSxJQUFJLENBQUM7R0FDYjs7QUFFRCxLQUFHLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQztBQUNyQixTQUFPLEdBQUcsQ0FBQztDQUNaLENBQUM7O0FBRUYsWUFBWSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsVUFBUyxPQUFPLEVBQUU7QUFDakQsTUFBSSxHQUFHLEdBQUcsRUFBRTtNQUNSLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSTtNQUNuQixDQUFDLFlBQUE7TUFBRSxDQUFDLFlBQUEsQ0FBQzs7QUFFVCxNQUFJLE9BQU8sQ0FBQyxXQUFXLEVBQUU7QUFDdkIsUUFBSSxXQUFXLEdBQUcsaUJBQWlCLENBQUM7QUFDcEMsU0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMs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SUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0dBQ3pDOztBQUVELFNBQU8sT0FBTyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDO0NBQy9DLENBQUM7QUFDRixZQUFZLENBQUMsU0FBUyxDQUFDLFFBQVEsR0FBRyxVQUFTLElBQUksRUFBRTtBQUMvQyxTQUFPLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0NBQ2pELENBQUMiLCJmaWxlIjoicHJpbnRlci5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5ldy1jYXAgKi9cbmltcG9ydCBWaXNpdG9yIGZyb20gJy4vdmlzaXRvcic7XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmludChhc3QpIHtcbiAgcmV0dXJuIG5ldyBQcmludFZpc2l0b3IoKS5hY2NlcHQoYXN0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFByaW50VmlzaXRvcigpIHtcbiAgdGhpcy5wYWRkaW5nID0gMDtcbn1cblxuUHJpbnRWaXNpdG9yLnByb3RvdHlwZSA9IG5ldyBWaXNpdG9yKCk7XG5cblByaW50VmlzaXRvci5wcm90b3R5cGUucGFkID0gZnVuY3Rpb24oc3RyaW5nKSB7XG4gIGxldCBvdXQgPSAnJztcblxuICBmb3IgKGxldCBpID0gMCwgbCA9IHRoaXMucGFkZGluZzsgaSA8IGw7IGkrKykge1xuICAgIG91dCArPSAnICAnO1xuICB9XG5cbiAgb3V0ICs9IHN0cmluZyArICdcXG4nO1xuICByZXR1cm4gb3V0O1xufTtcblxuUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5Qcm9ncmFtID0gZnVuY3Rpb24ocHJvZ3JhbSkge1xuICBsZXQgb3V0ID0gJycsXG4gICAgICBib2R5ID0gcHJvZ3JhbS5ib2R5LFxuICAgICAgaSwgbDtcblxuICBpZiAocHJvZ3JhbS5ibG9ja1BhcmFtcykge1xuICAgIGxldCBibG9ja1BhcmFtcyA9ICdCTE9DSyBQQVJBTVM6IFsnO1xuICAgIGZvciAoaSA9IDAsIGwgPSBwcm9ncmFtLmJsb2NrUGFyYW1zLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgIGJsb2NrUGFyYW1zICs9ICcgJyArIHByb2dyYW0uYmxvY2tQYXJhbXNbaV07XG4gICAgfVxuICAgIGJsb2NrUGFyYW1zICs9ICcgXSc7XG4gICAgb3V0ICs9IHRoaXMucGFkKGJsb2NrUGFyYW1zKTtcbiAgfVxuXG4gIGZvciAoaSA9IDAsIGwgPSBib2R5Lmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIG91dCArPSB0aGlzLmFjY2VwdChib2R5W2ldKTtcbiAgfVxuXG4gIHRoaXMucGFkZGluZy0tO1xuXG4gIHJldHVybiBvdXQ7XG59O1xuXG5QcmludFZpc2l0b3IucHJvdG90eXBlLk11c3RhY2hlU3RhdGVtZW50ID0gZnVuY3Rpb24obXVzdGFjaGUpIHtcbiAgcmV0dXJuIHRoaXMucGFkKCd7eyAnICsgdGhpcy5TdWJFeHByZXNzaW9uKG11c3RhY2hlKSArICcgfX0nKTtcbn07XG5QcmludFZpc2l0b3IucHJvdG90eXBlLkRlY29yYXRvciA9IGZ1bmN0aW9uKG11c3RhY2hlKSB7XG4gIHJldHVybiB0aGlzLnBhZCgne3sgRElSRUNUSVZFICcgKyB0aGlzLlN1YkV4cHJlc3Npb24obXVzdGFjaGUpICsgJyB9fScpO1xufTtcblxuUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5CbG9ja1N0YXRlbWVudCA9XG5QcmludFZpc2l0b3IucHJvdG90eXBlLkRlY29yYXRvckJsb2NrID0gZnVuY3Rpb24oYmxvY2spIHtcbiAgbGV0IG91dCA9ICcnO1xuXG4gIG91dCArPSB0aGlzLnBhZCgoYmxvY2sudHlwZSA9PT0gJ0RlY29yYXRvckJsb2NrJyA/ICdESVJFQ1RJVkUgJyA6ICcnKSArICdCTE9DSzonKTtcbiAgdGhpcy5wYWRkaW5nKys7XG4gIG91dCArPSB0aGlzLnBhZCh0aGlzLlN1YkV4cHJlc3Npb24oYmxvY2spKTtcbiAgaWYgKGJsb2NrLnByb2dyYW0pIHtcbiAgICBvdXQgKz0gdGhpcy5wYWQoJ1BST0dSQU06Jyk7XG4gICAgdGhpcy5wYWRkaW5nKys7XG4gICAgb3V0ICs9IHRoaXMuYWNjZXB0KGJsb2NrLnByb2dyYW0pO1xuICAgIHRoaXMucGFkZGluZy0tO1xuICB9XG4gIGlmIChibG9jay5pbnZlcnNlKSB7XG4gICAgaWYgKGJsb2NrLnByb2dyYW0pIHsgdGhpcy5wYWRkaW5nKys7IH1cbiAgICBvdXQgKz0gdGhpcy5wYWQoJ3t7Xn19Jyk7XG4gICAgdGhpcy5wYWRkaW5nKys7XG4gICAgb3V0ICs9IHRoaXMuYWNjZXB0KGJsb2NrLmludmVyc2UpO1xuICAgIHRoaXMucGFkZGluZy0tO1xuICAgIGlmIChibG9jay5wcm9ncmFtKSB7IHRoaXMucGFkZGluZy0tOyB9XG4gIH1cbiAgdGhpcy5wYWRkaW5nLS07XG5cbiAgcmV0dXJuIG91dDtcbn07XG5cblByaW50VmlzaXRvci5wcm90b3R5cGUuUGFydGlhbFN0YXRlbWVudCA9IGZ1bmN0aW9uKHBhcnRpYWwpIHtcbiAgbGV0IGNvbnRlbnQgPSAnUEFSVElBTDonICsgcGFydGlhbC5uYW1lLm9yaWdpbmFsO1xuICBpZiAocGFydGlhbC5wYXJhbXNbMF0pIHtcbiAgICBjb250ZW50ICs9ICcgJyArIHRoaXMuYWNjZXB0KHBhcnRpYWwucGFyYW1zWzBdKTtcbiAgfVxuICBpZiAocGFydGlhbC5oYXNoKSB7XG4gICAgY29udGVudCArPSAnICcgKyB0aGlzLmFjY2VwdChwYXJ0aWFsLmhhc2gpO1xuICB9XG4gIHJldHVybiB0aGlzLnBhZCgne3s+ICcgKyBjb250ZW50ICsgJyB9fScpO1xufTtcblByaW50VmlzaXRvci5wcm90b3R5cGUuUGFydGlhbEJsb2NrU3RhdGVtZW50ID0gZnVuY3Rpb24ocGFydGlhbCkge1xuICBsZXQgY29udGVudCA9ICdQQVJUSUFMIEJMT0NLOicgKyBwYXJ0aWFsLm5hbWUub3JpZ2luYWw7XG4gIGlmIChwYXJ0aWFsLnBhcmFtc1swXSkge1xuICAgIGNvbnRlbnQgKz0gJyAnICsgdGhpcy5hY2NlcHQocGFydGlhbC5wYXJhbXNbMF0pO1xuICB9XG4gIGlmIChwYXJ0aWFsLmhhc2gpIHtcbiAgICBjb250ZW50ICs9ICcgJyArIHRoaXMuYWNjZXB0KHBhcnRpYWwuaGFzaCk7XG4gIH1cblxuICBjb250ZW50ICs9ICcgJyArIHRoaXMucGFkKCdQUk9HUkFNOicpO1xuICB0aGlzLnBhZGRpbmcrKztcbiAgY29udGVudCArPSB0aGlzLmFjY2VwdChwYXJ0aWFsLnByb2dyYW0pO1xuICB0aGlzLnBhZGRpbmctLTtcblxuICByZXR1cm4gdGhpcy5wYWQoJ3t7PiAnICsgY29udGVudCArICcgfX0nKTtcbn07XG5cblByaW50VmlzaXRvci5wcm90b3R5cGUuQ29udGVudFN0YXRlbWVudCA9IGZ1bmN0aW9uKGNvbnRlbnQpIHtcbiAgcmV0dXJuIHRoaXMucGFkKFwiQ09OVEVOVFsgJ1wiICsgY29udGVudC52YWx1ZSArIFwiJyBdXCIpO1xufTtcblxuUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5Db21tZW50U3RhdGVtZW50ID0gZnVuY3Rpb24oY29tbWVudCkge1xuICByZXR1cm4gdGhpcy5wYWQoXCJ7eyEgJ1wiICsgY29tbWVudC52YWx1ZSArIFwiJyB9fVwiKTtcbn07XG5cblByaW50VmlzaXRvci5wcm90b3R5cGUuU3ViRXhwcmVzc2lvbiA9IGZ1bmN0aW9uKHNleHByKSB7XG4gIGxldCBwYXJhbXMgPSBzZXhwci5wYXJhbXMsXG4gICAgICBwYXJhbVN0cmluZ3MgPSBbXSxcbiAgICAgIGhhc2g7XG5cbiAgZm9yIChsZXQgaSA9IDAsIGwgPSBwYXJhbXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgcGFyYW1TdHJpbmdzLnB1c2godGhpcy5hY2NlcHQocGFyYW1zW2ldKSk7XG4gIH1cblxuICBwYXJhbXMgPSAnWycgKyBwYXJhbVN0cmluZ3Muam9pbignLCAnKSArICddJztcblxuICBoYXNoID0gc2V4cHIuaGFzaCA/ICcgJyArIHRoaXMuYWNjZXB0KHNleHByLmhhc2gpIDogJyc7XG5cbiAgcmV0dXJuIHRoaXMuYWNjZXB0KHNleHByLnBhdGgpICsgJyAnICsgcGFyYW1zICsgaGFzaDtcbn07XG5cblByaW50VmlzaXRvci5wcm90b3R5cGUuUGF0aEV4cHJlc3Npb24gPSBmdW5jdGlvbihpZCkge1xuICBsZXQgcGF0aCA9IGlkLnBhcnRzLmpvaW4oJy8nKTtcbiAgcmV0dXJuIChpZC5kYXRhID8gJ0AnIDogJycpICsgJ1BBVEg6JyArIHBhdGg7XG59O1xuXG5cblByaW50VmlzaXRvci5wcm90b3R5cGUuU3RyaW5nTGl0ZXJhbCA9IGZ1bmN0aW9uKHN0cmluZykge1xuICByZXR1cm4gJ1wiJyArIHN0cmluZy52YWx1ZSArICdcIic7XG59O1xuXG5QcmludFZpc2l0b3IucHJvdG90eXBlLk51bWJlckxpdGVyYWwgPSBmdW5jdGlvbihudW1iZXIpIHtcbiAgcmV0dXJuICdOVU1CRVJ7JyArIG51bWJlci52YWx1ZSArICd9Jztcbn07XG5cblByaW50VmlzaXRvci5wcm90b3R5cGUuQm9vbGVhbkxpdGVyYWwgPSBmdW5jdGlvbihib29sKSB7XG4gIHJldHVybiAnQk9PTEVBTnsnICsgYm9vbC52YWx1ZSArICd9Jztcbn07XG5cblByaW50VmlzaXRvci5wcm90b3R5cGUuVW5kZWZpbmVkTGl0ZXJhbCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gJ1VOREVGSU5FRCc7XG59O1xuXG5QcmludFZpc2l0b3IucHJvdG90eXBlLk51bGxMaXRlcmFsID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAnTlVMTCc7XG59O1xuXG5QcmludFZpc2l0b3IucHJvdG90eXBlLkhhc2ggPSBmdW5jdGlvbihoYXNoKSB7XG4gIGxldCBwYWlycyA9IGhhc2gucGFpcnMsXG4gICAgICBqb2luZWRQYWlycyA9IFtdO1xuXG4gIGZvciAobGV0IGkgPSAwLCBsID0gcGFpcnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgam9pbmVkUGFpcnMucHVzaCh0aGlzLmFjY2VwdChwYWlyc1tpXSkpO1xuICB9XG5cbiAgcmV0dXJuICdIQVNIeycgKyBqb2luZWRQYWlycy5qb2luKCcsICcpICsgJ30nO1xufTtcblByaW50VmlzaXRvci5wcm90b3R5cGUuSGFzaFBhaXIgPSBmdW5jdGlvbihwYWlyKSB7XG4gIHJldHVybiBwYWlyLmtleSArICc9JyArIHRoaXMuYWNjZXB0KHBhaXIudmFsdWUpO1xufTtcbi8qIGVzbGludC1lbmFibGUgbmV3LWNhcCAqL1xuIl19 |
| 1 | 'use strict'; | ||
| 2 | |||
| 3 | exports.__esModule = true; | ||
| 4 | // istanbul ignore next | ||
| 5 | |||
| 6 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } | ||
| 7 | |||
| 8 | var _exception = require('../exception'); | ||
| 9 | |||
| 10 | var _exception2 = _interopRequireDefault(_exception); | ||
| 11 | |||
| 12 | function Visitor() { | ||
| 13 | this.parents = []; | ||
| 14 | } | ||
| 15 | |||
| 16 | Visitor.prototype = { | ||
| 17 | constructor: Visitor, | ||
| 18 | mutating: false, | ||
| 19 | |||
| 20 | // Visits a given value. If mutating, will replace the value if necessary. | ||
| 21 | acceptKey: function acceptKey(node, name) { | ||
| 22 | var value = this.accept(node[name]); | ||
| 23 | if (this.mutating) { | ||
| 24 | // Hacky sanity check: This may have a few false positives for type for the helper | ||
| 25 | // methods but will generally do the right thing without a lot of overhead. | ||
| 26 | if (value && !Visitor.prototype[value.type]) { | ||
| 27 | throw new _exception2['default']('Unexpected node type "' + value.type + '" found when accepting ' + name + ' on ' + node.type); | ||
| 28 | } | ||
| 29 | node[name] = value; | ||
| 30 | } | ||
| 31 | }, | ||
| 32 | |||
| 33 | // Performs an accept operation with added sanity check to ensure | ||
| 34 | // required keys are not removed. | ||
| 35 | acceptRequired: function acceptRequired(node, name) { | ||
| 36 | this.acceptKey(node, name); | ||
| 37 | |||
| 38 | if (!node[name]) { | ||
| 39 | throw new _exception2['default'](node.type + ' requires ' + name); | ||
| 40 | } | ||
| 41 | }, | ||
| 42 | |||
| 43 | // Traverses a given array. If mutating, empty respnses will be removed | ||
| 44 | // for child elements. | ||
| 45 | acceptArray: function acceptArray(array) { | ||
| 46 | for (var i = 0, l = array.length; i < l; i++) { | ||
| 47 | this.acceptKey(array, i); | ||
| 48 | |||
| 49 | if (!array[i]) { | ||
| 50 | array.splice(i, 1); | ||
| 51 | i--; | ||
| 52 | l--; | ||
| 53 | } | ||
| 54 | } | ||
| 55 | }, | ||
| 56 | |||
| 57 | accept: function accept(object) { | ||
| 58 | if (!object) { | ||
| 59 | return; | ||
| 60 | } | ||
| 61 | |||
| 62 | /* istanbul ignore next: Sanity code */ | ||
| 63 | if (!this[object.type]) { | ||
| 64 | throw new _exception2['default']('Unknown type: ' + object.type, object); | ||
| 65 | } | ||
| 66 | |||
| 67 | if (this.current) { | ||
| 68 | this.parents.unshift(this.current); | ||
| 69 | } | ||
| 70 | this.current = object; | ||
| 71 | |||
| 72 | var ret = this[object.type](object); | ||
| 73 | |||
| 74 | this.current = this.parents.shift(); | ||
| 75 | |||
| 76 | if (!this.mutating || ret) { | ||
| 77 | return ret; | ||
| 78 | } else if (ret !== false) { | ||
| 79 | return object; | ||
| 80 | } | ||
| 81 | }, | ||
| 82 | |||
| 83 | Program: function Program(program) { | ||
| 84 | this.acceptArray(program.body); | ||
| 85 | }, | ||
| 86 | |||
| 87 | MustacheStatement: visitSubExpression, | ||
| 88 | Decorator: visitSubExpression, | ||
| 89 | |||
| 90 | BlockStatement: visitBlock, | ||
| 91 | DecoratorBlock: visitBlock, | ||
| 92 | |||
| 93 | PartialStatement: visitPartial, | ||
| 94 | PartialBlockStatement: function PartialBlockStatement(partial) { | ||
| 95 | visitPartial.call(this, partial); | ||
| 96 | |||
| 97 | this.acceptKey(partial, 'program'); | ||
| 98 | }, | ||
| 99 | |||
| 100 | ContentStatement: function ContentStatement() /* content */{}, | ||
| 101 | CommentStatement: function CommentStatement() /* comment */{}, | ||
| 102 | |||
| 103 | SubExpression: visitSubExpression, | ||
| 104 | |||
| 105 | PathExpression: function PathExpression() /* path */{}, | ||
| 106 | |||
| 107 | StringLiteral: function StringLiteral() /* string */{}, | ||
| 108 | NumberLiteral: function NumberLiteral() /* number */{}, | ||
| 109 | BooleanLiteral: function BooleanLiteral() /* bool */{}, | ||
| 110 | UndefinedLiteral: function UndefinedLiteral() /* literal */{}, | ||
| 111 | NullLiteral: function NullLiteral() /* literal */{}, | ||
| 112 | |||
| 113 | Hash: function Hash(hash) { | ||
| 114 | this.acceptArray(hash.pairs); | ||
| 115 | }, | ||
| 116 | HashPair: function HashPair(pair) { | ||
| 117 | this.acceptRequired(pair, 'value'); | ||
| 118 | } | ||
| 119 | }; | ||
| 120 | |||
| 121 | function visitSubExpression(mustache) { | ||
| 122 | this.acceptRequired(mustache, 'path'); | ||
| 123 | this.acceptArray(mustache.params); | ||
| 124 | this.acceptKey(mustache, 'hash'); | ||
| 125 | } | ||
| 126 | function visitBlock(block) { | ||
| 127 | visitSubExpression.call(this, block); | ||
| 128 | |||
| 129 | this.acceptKey(block, 'program'); | ||
| 130 | this.acceptKey(block, 'inverse'); | ||
| 131 | } | ||
| 132 | function visitPartial(partial) { | ||
| 133 | this.acceptRequired(partial, 'name'); | ||
| 134 | this.acceptArray(partial.params); | ||
| 135 | this.acceptKey(partial, 'hash'); | ||
| 136 | } | ||
| 137 | |||
| 138 | exports['default'] = Visitor; | ||
| 139 | module.exports = exports['default']; | ||
| 140 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2NvbXBpbGVyL3Zpc2l0b3IuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozt5QkFBc0IsY0FBYzs7OztBQUVwQyxTQUFTLE9BQU8sR0FBRztBQUNqQixNQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztDQUNuQjs7QUFFRCxPQUFPLENBQUMsU0FBUyxHQUFHO0FBQ2xCLGFBQVcsRUFBRSxPQUFPO0FBQ3BCLFVBQVEsRUFBRSxLQUFLOzs7QUFHZixXQUFTLEVBQUUsbUJBQVMsSUFBSSxFQUFFLElBQUksRUFBRTtBQUM5QixRQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3BDLFFBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTs7O0FBR2pCLFVBQUksS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDM0MsY0FBTSwyQkFBYyx3QkFBd0IsR0FBRyxLQUFLLENBQUMsSUFBSSxHQUFHLHlCQUF5QixHQUFHLElBQUksR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO09BQ3BIO0FBQ0QsVUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQztLQUNwQjtHQUNGOzs7O0FBSUQsZ0JBQWMsRUFBRSx3QkFBUyxJQUFJLEVBQUUsSUFBSSxFQUFFO0FBQ25DLFFBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDOztBQUUzQixRQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ2YsWUFBTSwyQkFBYyxJQUFJLENBQUMsSUFBSSxHQUFHLFlBQVksR0FBRyxJQUFJLENBQUMsQ0FBQztLQUN0RDtHQUNGOzs7O0FBSUQsYUFBVyxFQUFFLHFCQUFTLEtBQUssRUFBRTtBQUMzQixTQUFLLElBQUksQ0FBQyxHQUFH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O0FBQ2xDLE1BQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0NBQ2xDO0FBQ0QsU0FBUyxVQUFVLENBQUMsS0FBSyxFQUFFO0FBQ3pCLG9CQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7O0FBRXJDLE1BQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ2pDLE1BQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0NBQ2xDO0FBQ0QsU0FBUyxZQUFZLENBQUMsT0FBTyxFQUFFO0FBQzdCLE1BQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3JDLE1BQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2pDLE1BQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0NBQ2pDOztxQkFFYyxPQUFPIiwiZmlsZSI6InZpc2l0b3IuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRXhjZXB0aW9uIGZyb20gJy4uL2V4Y2VwdGlvbic7XG5cbmZ1bmN0aW9uIFZpc2l0b3IoKSB7XG4gIHRoaXMucGFyZW50cyA9IFtdO1xufVxuXG5WaXNpdG9yLnByb3RvdHlwZSA9IHtcbiAgY29uc3RydWN0b3I6IFZpc2l0b3IsXG4gIG11dGF0aW5nOiBmYWxzZSxcblxuICAvLyBWaXNpdHMgYSBnaXZlbiB2YWx1ZS4gSWYgbXV0YXRpbmcsIHdpbGwgcmVwbGFjZSB0aGUgdmFsdWUgaWYgbmVjZXNzYXJ5LlxuICBhY2NlcHRLZXk6IGZ1bmN0aW9uKG5vZGUsIG5hbWUpIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLmFjY2VwdChub2RlW25hbWVdKTtcbiAgICBpZiAodGhpcy5tdXRhdGluZykge1xuICAgICAgLy8gSGFja3kgc2FuaXR5IGNoZWNrOiBUaGlzIG1heSBoYXZlIGEgZmV3IGZhbHNlIHBvc2l0aXZlcyBmb3IgdHlwZSBmb3IgdGhlIGhlbHBlclxuICAgICAgLy8gbWV0aG9kcyBidXQgd2lsbCBnZW5lcmFsbHkgZG8gdGhlIHJpZ2h0IHRoaW5nIHdpdGhvdXQgYSBsb3Qgb2Ygb3ZlcmhlYWQuXG4gICAgICBpZiAodmFsdWUgJiYgIVZpc2l0b3IucHJvdG90eXBlW3ZhbHVlLnR5cGVdKSB7XG4gICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ1VuZXhwZWN0ZWQgbm9kZSB0eXBlIFwiJyArIHZhbHVlLnR5cGUgKyAnXCIgZm91bmQgd2hlbiBhY2NlcHRpbmcgJyArIG5hbWUgKyAnIG9uICcgKyBub2RlLnR5cGUpO1xuICAgICAgfVxuICAgICAgbm9kZVtuYW1lXSA9IHZhbHVlO1xuICAgIH1cbiAgfSxcblxuICAvLyBQZXJmb3JtcyBhbiBhY2NlcHQgb3BlcmF0aW9uIHdpdGggYWRkZWQgc2FuaXR5IGNoZWNrIHRvIGVuc3VyZVxuICAvLyByZXF1aXJlZCBrZXlzIGFyZSBub3QgcmVtb3ZlZC5cbiAgYWNjZXB0UmVxdWlyZWQ6IGZ1bmN0aW9uKG5vZGUsIG5hbWUpIHtcbiAgICB0aGlzLmFjY2VwdEtleShub2RlLCBuYW1lKTtcblxuICAgIGlmICghbm9kZVtuYW1lXSkge1xuICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihub2RlLnR5cGUgKyAnIHJlcXVpcmVzICcgKyBuYW1lKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gVHJhdmVyc2VzIGEgZ2l2ZW4gYXJyYXkuIElmIG11dGF0aW5nLCBlbXB0eSByZXNwbnNlcyB3aWxsIGJlIHJlbW92ZWRcbiAgLy8gZm9yIGNoaWxkIGVsZW1lbnRzLlxuICBhY2NlcHRBcnJheTogZnVuY3Rpb24oYXJyYXkpIHtcbiAgICBmb3IgKGxldCBpID0gMCwgbCA9IGFycmF5Lmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgdGhpcy5hY2NlcHRLZXkoYXJyYXksIGkpO1xuXG4gICAgICBpZiAoIWFycmF5W2ldKSB7XG4gICAgICAgIGFycmF5LnNwbGljZShpLCAxKTtcbiAgICAgICAgaS0tO1xuICAgICAgICBsLS07XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIGFjY2VwdDogZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgaWYgKCFvYmplY3QpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogU2FuaXR5IGNvZGUgKi9cbiAgICBpZiAoIXRoaXNbb2JqZWN0LnR5cGVdKSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdVbmtub3duIHR5cGU6ICcgKyBvYmplY3QudHlwZSwgb2JqZWN0KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jdXJyZW50KSB7XG4gICAgICB0aGlzLnBhcmVudHMudW5zaGlmdCh0aGlzLmN1cnJlbnQpO1xuICAgIH1cbiAgICB0aGlzLmN1cnJlbnQgPSBvYmplY3Q7XG5cbiAgICBsZXQgcmV0ID0gdGhpc1tvYmplY3QudHlwZV0ob2JqZWN0KTtcblxuICAgIHRoaXMuY3VycmVudCA9IHRoaXMucGFyZW50cy5zaGlmdCgpO1xuXG4gICAgaWYgKCF0aGlzLm11dGF0aW5nIHx8IHJldCkge1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9IGVsc2UgaWYgKHJldCAhPT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgfVxuICB9LFxuXG4gIFByb2dyYW06IGZ1bmN0aW9uKHByb2dyYW0pIHtcbiAgICB0aGlzLmFjY2VwdEFycmF5KHByb2dyYW0uYm9keSk7XG4gIH0sXG5cbiAgTXVzdGFjaGVTdGF0ZW1lbnQ6IHZpc2l0U3ViRXhwcmVzc2lvbixcbiAgRGVjb3JhdG9yOiB2aXNpdFN1YkV4cHJlc3Npb24sXG5cbiAgQmxvY2tTdGF0ZW1lbnQ6IHZpc2l0QmxvY2ssXG4gIERlY29yYXRvckJsb2NrOiB2aXNpdEJsb2NrLFxuXG4gIFBhcnRpYWxTdGF0ZW1lbnQ6IHZpc2l0UGFydGlhbCxcbiAgUGFydGlhbEJsb2NrU3RhdGVtZW50OiBmdW5jdGlvbihwYXJ0aWFsKSB7XG4gICAgdmlzaXRQYXJ0aWFsLmNhbGwodGhpcywgcGFydGlhbCk7XG5cbiAgICB0aGlzLmFjY2VwdEtleShwYXJ0aWFsLCAncHJvZ3JhbScpO1xuICB9LFxuXG4gIENvbnRlbnRTdGF0ZW1lbnQ6IGZ1bmN0aW9uKC8qIGNvbnRlbnQgKi8pIHt9LFxuICBDb21tZW50U3RhdGVtZW50OiBmdW5jdGlvbigvKiBjb21tZW50ICovKSB7fSxcblxuICBTdWJFeHByZXNzaW9uOiB2aXNpdFN1YkV4cHJlc3Npb24sXG5cbiAgUGF0aEV4cHJlc3Npb246IGZ1bmN0aW9uKC8qIHBhdGggKi8pIHt9LFxuXG4gIFN0cmluZ0xpdGVyYWw6IGZ1bmN0aW9uKC8qIHN0cmluZyAqLykge30sXG4gIE51bWJlckxpdGVyYWw6IGZ1bmN0aW9uKC8qIG51bWJlciAqLykge30sXG4gIEJvb2xlYW5MaXRlcmFsOiBmdW5jdGlvbigvKiBib29sICovKSB7fSxcbiAgVW5kZWZpbmVkTGl0ZXJhbDogZnVuY3Rpb24oLyogbGl0ZXJhbCAqLykge30sXG4gIE51bGxMaXRlcmFsOiBmdW5jdGlvbigvKiBsaXRlcmFsICovKSB7fSxcblxuICBIYXNoOiBmdW5jdGlvbihoYXNoKSB7XG4gICAgdGhpcy5hY2NlcHRBcnJheShoYXNoLnBhaXJzKTtcbiAgfSxcbiAgSGFzaFBhaXI6IGZ1bmN0aW9uKHBhaXIpIHtcbiAgICB0aGlzLmFjY2VwdFJlcXVpcmVkKHBhaXIsICd2YWx1ZScpO1xuICB9XG59O1xuXG5mdW5jdGlvbiB2aXNpdFN1YkV4cHJlc3Npb24obXVzdGFjaGUpIHtcbiAgdGhpcy5hY2NlcHRSZXF1aXJlZChtdXN0YWNoZSwgJ3BhdGgnKTtcbiAgdGhpcy5hY2NlcHRBcnJheShtdXN0YWNoZS5wYXJhbXMpO1xuICB0aGlzLmFjY2VwdEtleShtdXN0YWNoZSwgJ2hhc2gnKTtcbn1cbmZ1bmN0aW9uIHZpc2l0QmxvY2soYmxvY2spIHtcbiAgdmlzaXRTdWJFeHByZXNzaW9uLmNhbGwodGhpcywgYmxvY2spO1xuXG4gIHRoaXMuYWNjZXB0S2V5KGJsb2NrLCAncHJvZ3JhbScpO1xuICB0aGlzLmFjY2VwdEtleShibG9jaywgJ2ludmVyc2UnKTtcbn1cbmZ1bmN0aW9uIHZpc2l0UGFydGlhbChwYXJ0aWFsKSB7XG4gIHRoaXMuYWNjZXB0UmVxdWlyZWQocGFydGlhbCwgJ25hbWUnKTtcbiAgdGhpcy5hY2NlcHRBcnJheShwYXJ0aWFsLnBhcmFtcyk7XG4gIHRoaXMuYWNjZXB0S2V5KHBhcnRpYWwsICdoYXNoJyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFZpc2l0b3I7XG4iXX0= |
| 1 | 'use strict'; | ||
| 2 | |||
| 3 | exports.__esModule = true; | ||
| 4 | // istanbul ignore next | ||
| 5 | |||
| 6 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } | ||
| 7 | |||
| 8 | var _visitor = require('./visitor'); | ||
| 9 | |||
| 10 | var _visitor2 = _interopRequireDefault(_visitor); | ||
| 11 | |||
| 12 | function WhitespaceControl() { | ||
| 13 | var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; | ||
| 14 | |||
| 15 | this.options = options; | ||
| 16 | } | ||
| 17 | WhitespaceControl.prototype = new _visitor2['default'](); | ||
| 18 | |||
| 19 | WhitespaceControl.prototype.Program = function (program) { | ||
| 20 | var doStandalone = !this.options.ignoreStandalone; | ||
| 21 | |||
| 22 | var isRoot = !this.isRootSeen; | ||
| 23 | this.isRootSeen = true; | ||
| 24 | |||
| 25 | var body = program.body; | ||
| 26 | for (var i = 0, l = body.length; i < l; i++) { | ||
| 27 | var current = body[i], | ||
| 28 | strip = this.accept(current); | ||
| 29 | |||
| 30 | if (!strip) { | ||
| 31 | continue; | ||
| 32 | } | ||
| 33 | |||
| 34 | var _isPrevWhitespace = isPrevWhitespace(body, i, isRoot), | ||
| 35 | _isNextWhitespace = isNextWhitespace(body, i, isRoot), | ||
| 36 | openStandalone = strip.openStandalone && _isPrevWhitespace, | ||
| 37 | closeStandalone = strip.closeStandalone && _isNextWhitespace, | ||
| 38 | inlineStandalone = strip.inlineStandalone && _isPrevWhitespace && _isNextWhitespace; | ||
| 39 | |||
| 40 | if (strip.close) { | ||
| 41 | omitRight(body, i, true); | ||
| 42 | } | ||
| 43 | if (strip.open) { | ||
| 44 | omitLeft(body, i, true); | ||
| 45 | } | ||
| 46 | |||
| 47 | if (doStandalone && inlineStandalone) { | ||
| 48 | omitRight(body, i); | ||
| 49 | |||
| 50 | if (omitLeft(body, i)) { | ||
| 51 | // If we are on a standalone node, save the indent info for partials | ||
| 52 | if (current.type === 'PartialStatement') { | ||
| 53 | // Pull out the whitespace from the final line | ||
| 54 | current.indent = /([ \t]+$)/.exec(body[i - 1].original)[1]; | ||
| 55 | } | ||
| 56 | } | ||
| 57 | } | ||
| 58 | if (doStandalone && openStandalone) { | ||
| 59 | omitRight((current.program || current.inverse).body); | ||
| 60 | |||
| 61 | // Strip out the previous content node if it's whitespace only | ||
| 62 | omitLeft(body, i); | ||
| 63 | } | ||
| 64 | if (doStandalone && closeStandalone) { | ||
| 65 | // Always strip the next node | ||
| 66 | omitRight(body, i); | ||
| 67 | |||
| 68 | omitLeft((current.inverse || current.program).body); | ||
| 69 | } | ||
| 70 | } | ||
| 71 | |||
| 72 | return program; | ||
| 73 | }; | ||
| 74 | |||
| 75 | WhitespaceControl.prototype.BlockStatement = WhitespaceControl.prototype.DecoratorBlock = WhitespaceControl.prototype.PartialBlockStatement = function (block) { | ||
| 76 | this.accept(block.program); | ||
| 77 | this.accept(block.inverse); | ||
| 78 | |||
| 79 | // Find the inverse program that is involed with whitespace stripping. | ||
| 80 | var program = block.program || block.inverse, | ||
| 81 | inverse = block.program && block.inverse, | ||
| 82 | firstInverse = inverse, | ||
| 83 | lastInverse = inverse; | ||
| 84 | |||
| 85 | if (inverse && inverse.chained) { | ||
| 86 | firstInverse = inverse.body[0].program; | ||
| 87 | |||
| 88 | // Walk the inverse chain to find the last inverse that is actually in the chain. | ||
| 89 | while (lastInverse.chained) { | ||
| 90 | lastInverse = lastInverse.body[lastInverse.body.length - 1].program; | ||
| 91 | } | ||
| 92 | } | ||
| 93 | |||
| 94 | var strip = { | ||
| 95 | open: block.openStrip.open, | ||
| 96 | close: block.closeStrip.close, | ||
| 97 | |||
| 98 | // Determine the standalone candiacy. Basically flag our content as being possibly standalone | ||
| 99 | // so our parent can determine if we actually are standalone | ||
| 100 | openStandalone: isNextWhitespace(program.body), | ||
| 101 | closeStandalone: isPrevWhitespace((firstInverse || program).body) | ||
| 102 | }; | ||
| 103 | |||
| 104 | if (block.openStrip.close) { | ||
| 105 | omitRight(program.body, null, true); | ||
| 106 | } | ||
| 107 | |||
| 108 | if (inverse) { | ||
| 109 | var inverseStrip = block.inverseStrip; | ||
| 110 | |||
| 111 | if (inverseStrip.open) { | ||
| 112 | omitLeft(program.body, null, true); | ||
| 113 | } | ||
| 114 | |||
| 115 | if (inverseStrip.close) { | ||
| 116 | omitRight(firstInverse.body, null, true); | ||
| 117 | } | ||
| 118 | if (block.closeStrip.open) { | ||
| 119 | omitLeft(lastInverse.body, null, true); | ||
| 120 | } | ||
| 121 | |||
| 122 | // Find standalone else statments | ||
| 123 | if (!this.options.ignoreStandalone && isPrevWhitespace(program.body) && isNextWhitespace(firstInverse.body)) { | ||
| 124 | omitLeft(program.body); | ||
| 125 | omitRight(firstInverse.body); | ||
| 126 | } | ||
| 127 | } else if (block.closeStrip.open) { | ||
| 128 | omitLeft(program.body, null, true); | ||
| 129 | } | ||
| 130 | |||
| 131 | return strip; | ||
| 132 | }; | ||
| 133 | |||
| 134 | WhitespaceControl.prototype.Decorator = WhitespaceControl.prototype.MustacheStatement = function (mustache) { | ||
| 135 | return mustache.strip; | ||
| 136 | }; | ||
| 137 | |||
| 138 | WhitespaceControl.prototype.PartialStatement = WhitespaceControl.prototype.CommentStatement = function (node) { | ||
| 139 | /* istanbul ignore next */ | ||
| 140 | var strip = node.strip || {}; | ||
| 141 | return { | ||
| 142 | inlineStandalone: true, | ||
| 143 | open: strip.open, | ||
| 144 | close: strip.close | ||
| 145 | }; | ||
| 146 | }; | ||
| 147 | |||
| 148 | function isPrevWhitespace(body, i, isRoot) { | ||
| 149 | if (i === undefined) { | ||
| 150 | i = body.length; | ||
| 151 | } | ||
| 152 | |||
| 153 | // Nodes that end with newlines are considered whitespace (but are special | ||
| 154 | // cased for strip operations) | ||
| 155 | var prev = body[i - 1], | ||
| 156 | sibling = body[i - 2]; | ||
| 157 | if (!prev) { | ||
| 158 | return isRoot; | ||
| 159 | } | ||
| 160 | |||
| 161 | if (prev.type === 'ContentStatement') { | ||
| 162 | return (sibling || !isRoot ? /\r?\n\s*?$/ : /(^|\r?\n)\s*?$/).test(prev.original); | ||
| 163 | } | ||
| 164 | } | ||
| 165 | function isNextWhitespace(body, i, isRoot) { | ||
| 166 | if (i === undefined) { | ||
| 167 | i = -1; | ||
| 168 | } | ||
| 169 | |||
| 170 | var next = body[i + 1], | ||
| 171 | sibling = body[i + 2]; | ||
| 172 | if (!next) { | ||
| 173 | return isRoot; | ||
| 174 | } | ||
| 175 | |||
| 176 | if (next.type === 'ContentStatement') { | ||
| 177 | return (sibling || !isRoot ? /^\s*?\r?\n/ : /^\s*?(\r?\n|$)/).test(next.original); | ||
| 178 | } | ||
| 179 | } | ||
| 180 | |||
| 181 | // Marks the node to the right of the position as omitted. | ||
| 182 | // I.e. {{foo}}' ' will mark the ' ' node as omitted. | ||
| 183 | // | ||
| 184 | // If i is undefined, then the first child will be marked as such. | ||
| 185 | // | ||
| 186 | // If mulitple is truthy then all whitespace will be stripped out until non-whitespace | ||
| 187 | // content is met. | ||
| 188 | function omitRight(body, i, multiple) { | ||
| 189 | var current = body[i == null ? 0 : i + 1]; | ||
| 190 | if (!current || current.type !== 'ContentStatement' || !multiple && current.rightStripped) { | ||
| 191 | return; | ||
| 192 | } | ||
| 193 | |||
| 194 | var original = current.value; | ||
| 195 | current.value = current.value.replace(multiple ? /^\s+/ : /^[ \t]*\r?\n?/, ''); | ||
| 196 | current.rightStripped = current.value !== original; | ||
| 197 | } | ||
| 198 | |||
| 199 | // Marks the node to the left of the position as omitted. | ||
| 200 | // I.e. ' '{{foo}} will mark the ' ' node as omitted. | ||
| 201 | // | ||
| 202 | // If i is undefined then the last child will be marked as such. | ||
| 203 | // | ||
| 204 | // If mulitple is truthy then all whitespace will be stripped out until non-whitespace | ||
| 205 | // content is met. | ||
| 206 | function omitLeft(body, i, multiple) { | ||
| 207 | var current = body[i == null ? body.length - 1 : i - 1]; | ||
| 208 | if (!current || current.type !== 'ContentStatement' || !multiple && current.leftStripped) { | ||
| 209 | return; | ||
| 210 | } | ||
| 211 | |||
| 212 | // We omit the last node if it's whitespace only and not preceeded by a non-content node. | ||
| 213 | var original = current.value; | ||
| 214 | current.value = current.value.replace(multiple ? /\s+$/ : /[ \t]+$/, ''); | ||
| 215 | current.leftStripped = current.value !== original; | ||
| 216 | return current.leftStripped; | ||
| 217 | } | ||
| 218 | |||
| 219 | exports['default'] = WhitespaceControl; | ||
| 220 | module.exports = exports['default']; | ||
| 221 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2NvbXBpbGVyL3doaXRlc3BhY2UtY29udHJvbC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O3VCQUFvQixXQUFXOzs7O0FBRS9CLFNBQVMsaUJBQWlCLEdBQWU7TUFBZCxPQUFPLHlEQUFHLEVBQUU7O0FBQ3JDLE1BQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0NBQ3hCO0FBQ0QsaUJBQWlCLENBQUMsU0FBUyxHQUFHLDBCQUFhLENBQUM7O0FBRTVDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsVUFBUyxPQUFPLEVBQUU7QUFDdEQsTUFBTSxZQUFZLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDOztBQUVwRCxNQUFJLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7QUFDOUIsTUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7O0FBRXZCLE1BQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7QUFDeEIsT0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUMzQyxRQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2pCLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDOztBQUVqQyxRQUFJLENBQUMsS0FBSyxFQUFFO0FBQ1YsZUFBUztLQUNWOztBQUVELFFBQUksaUJBQWlCLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUM7UUFDckQsaUJBQWlCLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUM7UUFFckQsY0FBYyxHQUFHLEtBQUssQ0FBQyxjQUFjLElBQUksaUJBQWlCO1FBQzFE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QUFDeEQsTUFBSSxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLGtCQUFrQixJQUFLLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxZQUFZLEFBQUMsRUFBRTtBQUMxRixXQUFPO0dBQ1I7OztBQUdELE1BQUksUUFBUSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7QUFDN0IsU0FBTyxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEdBQUksTUFBTSxHQUFLLFNBQVMsQUFBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzdFLFNBQU8sQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLEtBQUssS0FBSyxRQUFRLENBQUM7QUFDbEQsU0FBTyxPQUFPLENBQUMsWUFBWSxDQUFDO0NBQzdCOztxQkFFYyxpQkFBaUIiLCJmaWxlIjoid2hpdGVzcGFjZS1jb250cm9sLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFZpc2l0b3IgZnJvbSAnLi92aXNpdG9yJztcblxuZnVuY3Rpb24gV2hpdGVzcGFjZUNvbnRyb2wob3B0aW9ucyA9IHt9KSB7XG4gIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG59XG5XaGl0ZXNwYWNlQ29udHJvbC5wcm90b3R5cGUgPSBuZXcgVmlzaXRvcigpO1xuXG5XaGl0ZXNwYWNlQ29udHJvbC5wcm90b3R5cGUuUHJvZ3JhbSA9IGZ1bmN0aW9uKHByb2dyYW0pIHtcbiAgY29uc3QgZG9TdGFuZGFsb25lID0gIXRoaXMub3B0aW9ucy5pZ25vcmVTdGFuZGFsb25lO1xuXG4gIGxldCBpc1Jvb3QgPSAhdGhpcy5pc1Jvb3RTZWVuO1xuICB0aGlzLmlzUm9vdFNlZW4gPSB0cnVlO1xuXG4gIGxldCBib2R5ID0gcHJvZ3JhbS5ib2R5O1xuICBmb3IgKGxldCBpID0gMCwgbCA9IGJvZHkubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgbGV0IGN1cnJlbnQgPSBib2R5W2ldLFxuICAgICAgICBzdHJpcCA9IHRoaXMuYWNjZXB0KGN1cnJlbnQpO1xuXG4gICAgaWYgKCFzdHJpcCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgbGV0IF9pc1ByZXZXaGl0ZXNwYWNlID0gaXNQcmV2V2hpdGVzcGFjZShib2R5LCBpLCBpc1Jvb3QpLFxuICAgICAgICBfaXNOZXh0V2hpdGVzcGFjZSA9IGlzTmV4dFdoaXRlc3BhY2UoYm9keSwgaSwgaXNSb290KSxcblxuICAgICAgICBvcGVuU3RhbmRhbG9uZSA9IHN0cmlwLm9wZW5TdGFuZGFsb25lICYmIF9pc1ByZXZXaGl0ZXNwYWNlLFxuICAgICAgICBjbG9zZVN0YW5kYWxvbmUgPSBzdHJpcC5jbG9zZVN0YW5kYWxvbmUgJiYgX2lzTmV4dFdoaXRlc3BhY2UsXG4gICAgICAgIGlubGluZVN0YW5kYWxvbmUgPSBzdHJpcC5pbmxpbmVTdGFuZGFsb25lICYmIF9pc1ByZXZXaGl0ZXNwYWNlICYmIF9pc05leHRXaGl0ZXNwYWNlO1xuXG4gICAgaWYgKHN0cmlwLmNsb3NlKSB7XG4gICAgICBvbWl0UmlnaHQoYm9keSwgaSwgdHJ1ZSk7XG4gICAgfVxuICAgIGlmIChzdHJpcC5vcGVuKSB7XG4gICAgICBvbWl0TGVmdChib2R5LCBpLCB0cnVlKTtcbiAgICB9XG5cbiAgICBpZiAoZG9TdGFuZGFsb25lICYmIGlubGluZVN0YW5kYWxvbmUpIHtcbiAgICAgIG9taXRSaWdodChib2R5LCBpKTtcblxuICAgICAgaWYgKG9taXRMZWZ0KGJvZHksIGkpKSB7XG4gICAgICAgIC8vIElmIHdlIGFyZSBvbiBhIHN0YW5kYWxvbmUgbm9kZSwgc2F2ZSB0aGUgaW5kZW50IGluZm8gZm9yIHBhcnRpYWxzXG4gICAgICAgIGlmIChjdXJyZW50LnR5cGUgPT09ICdQYXJ0aWFsU3RhdGVtZW50Jykge1xuICAgICAgICAgIC8vIFB1bGwgb3V0IHRoZSB3aGl0ZXNwYWNlIGZyb20gdGhlIGZpbmFsIGxpbmVcbiAgICAgICAgICBjdXJyZW50LmluZGVudCA9ICgvKFsgXFx0XSskKS8pLmV4ZWMoYm9keVtpIC0gMV0ub3JpZ2luYWwpWzFdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkb1N0YW5kYWxvbmUgJiYgb3BlblN0YW5kYWxvbmUpIHtcbiAgICAgIG9taXRSaWdodCgoY3VycmVudC5wcm9ncmFtIHx8IGN1cnJlbnQuaW52ZXJzZSkuYm9keSk7XG5cbiAgICAgIC8vIFN0cmlwIG91dCB0aGUgcHJldmlvdXMgY29udGVudCBub2RlIGlmIGl0J3Mgd2hpdGVzcGFjZSBvbmx5XG4gICAgICBvbWl0TGVmdChib2R5LCBpKTtcbiAgICB9XG4gICAgaWYgKGRvU3RhbmRhbG9uZSAmJiBjbG9zZVN0YW5kYWxvbmUpIHtcbiAgICAgIC8vIEFsd2F5cyBzdHJpcCB0aGUgbmV4dCBub2RlXG4gICAgICBvbWl0UmlnaHQoYm9keSwgaSk7XG5cbiAgICAgIG9taXRMZWZ0KChjdXJyZW50LmludmVyc2UgfHwgY3VycmVudC5wcm9ncmFtKS5ib2R5KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcHJvZ3JhbTtcbn07XG5cbldoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZS5CbG9ja1N0YXRlbWVudCA9XG5XaGl0ZXNwYWNlQ29udHJvbC5wcm90b3R5cGUuRGVjb3JhdG9yQmxvY2sgPVxuV2hpdGVzcGFjZUNvbnRyb2wucHJvdG90eXBlLlBhcnRpYWxCbG9ja1N0YXRlbWVudCA9IGZ1bmN0aW9uKGJsb2NrKSB7XG4gIHRoaXMuYWNjZXB0KGJsb2NrLnByb2dyYW0pO1xuICB0aGlzLmFjY2VwdChibG9jay5pbnZlcnNlKTtcblxuICAvLyBGaW5kIHRoZSBpbnZlcnNlIHByb2dyYW0gdGhhdCBpcyBpbnZvbGVkIHdpdGggd2hpdGVzcGFjZSBzdHJpcHBpbmcuXG4gIGxldCBwcm9ncmFtID0gYmxvY2sucHJvZ3JhbSB8fCBibG9jay5pbnZlcnNlLFxuICAgICAgaW52ZXJzZSA9IGJsb2NrLnByb2dyYW0gJiYgYmxvY2suaW52ZXJzZSxcbiAgICAgIGZpcnN0SW52ZXJzZSA9IGludmVyc2UsXG4gICAgICBsYXN0SW52ZXJzZSA9IGludmVyc2U7XG5cbiAgaWYgKGludmVyc2UgJiYgaW52ZXJzZS5jaGFpbmVkKSB7XG4gICAgZmlyc3RJbnZlcnNlID0gaW52ZXJzZS5ib2R5WzBdLnByb2dyYW07XG5cbiAgICAvLyBXYWxrIHRoZSBpbnZlcnNlIGNoYWluIHRvIGZpbmQgdGhlIGxhc3QgaW52ZXJzZSB0aGF0IGlzIGFjdHVhbGx5IGluIHRoZSBjaGFpbi5cbiAgICB3aGlsZSAobGFzdEludmVyc2UuY2hhaW5lZCkge1xuICAgICAgbGFzdEludmVyc2UgPSBsYXN0SW52ZXJzZS5ib2R5W2xhc3RJbnZlcnNlLmJvZHkubGVuZ3RoIC0gMV0ucHJvZ3JhbTtcbiAgICB9XG4gIH1cblxuICBsZXQgc3RyaXAgPSB7XG4gICAgb3BlbjogYmxvY2sub3BlblN0cmlwLm9wZW4sXG4gICAgY2xvc2U6IGJsb2NrLmNsb3NlU3RyaXAuY2xvc2UsXG5cbiAgICAvLyBEZXRlcm1pbmUgdGhlIHN0YW5kYWxvbmUgY2FuZGlhY3kuIEJhc2ljYWxseSBmbGFnIG91ciBjb250ZW50IGFzIGJlaW5nIHBvc3NpYmx5IHN0YW5kYWxvbmVcbiAgICAvLyBzbyBvdXIgcGFyZW50IGNhbiBkZXRlcm1pbmUgaWYgd2UgYWN0dWFsbHkgYXJlIHN0YW5kYWxvbmVcbiAgICBvcGVuU3RhbmRhbG9uZTogaXNOZXh0V2hpdGVzcGFjZShwcm9ncmFtLmJvZHkpLFxuICAgIGNsb3NlU3RhbmRhbG9uZTogaXNQcmV2V2hpdGVzcGFjZSgoZmlyc3RJbnZlcnNlIHx8IHByb2dyYW0pLmJvZHkpXG4gIH07XG5cbiAgaWYgKGJsb2NrLm9wZW5TdHJpcC5jbG9zZSkge1xuICAgIG9taXRSaWdodChwcm9ncmFtLmJvZHksIG51bGwsIHRydWUpO1xuICB9XG5cbiAgaWYgKGludmVyc2UpIHtcbiAgICBsZXQgaW52ZXJzZVN0cmlwID0gYmxvY2suaW52ZXJzZVN0cmlwO1xuXG4gICAgaWYgKGludmVyc2VTdHJpcC5vcGVuKSB7XG4gICAgICBvbWl0TGVmdChwcm9ncmFtLmJvZHksIG51bGwsIHRydWUpO1xuICAgIH1cblxuICAgIGlmIChpbnZlcnNlU3RyaXAuY2xvc2UpIHtcbiAgICAgIG9taXRSaWdodChmaXJzdEludmVyc2UuYm9keSwgbnVsbCwgdHJ1ZSk7XG4gICAgfVxuICAgIGlmIChibG9jay5jbG9zZVN0cmlwLm9wZW4pIHtcbiAgICAgIG9taXRMZWZ0KGxhc3RJbnZlcnNlLmJvZHksIG51bGwsIHRydWUpO1xuICAgIH1cblxuICAgIC8vIEZpbmQgc3RhbmRhbG9uZSBlbHNlIHN0YXRtZW50c1xuICAgIGlmICghdGhpcy5vcHRpb25zLmlnbm9yZVN0YW5kYWxvbmVcbiAgICAgICAgJiYgaXNQcmV2V2hpdGVzcGFjZShwcm9ncmFtLmJvZHkpXG4gICAgICAgICYmIGlzTmV4dFdoaXRlc3BhY2UoZmlyc3RJbnZlcnNlLmJvZHkpKSB7XG4gICAgICBvbWl0TGVmdChwcm9ncmFtLmJvZHkpO1xuICAgICAgb21pdFJpZ2h0KGZpcnN0SW52ZXJzZS5ib2R5KTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoYmxvY2suY2xvc2VTdHJpcC5vcGVuKSB7XG4gICAgb21pdExlZnQocHJvZ3JhbS5ib2R5LCBudWxsLCB0cnVlKTtcbiAgfVxuXG4gIHJldHVybiBzdHJpcDtcbn07XG5cbldoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZS5EZWNvcmF0b3IgPVxuV2hpdGVzcGFjZUNvbnRyb2wucHJvdG90eXBlLk11c3RhY2hlU3RhdGVtZW50ID0gZnVuY3Rpb24obXVzdGFjaGUpIHtcbiAgcmV0dXJuIG11c3RhY2hlLnN0cmlwO1xufTtcblxuV2hpdGVzcGFjZUNvbnRyb2wucHJvdG90eXBlLlBhcnRpYWxTdGF0ZW1lbnQgPVxuICAgIFdoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZS5Db21tZW50U3RhdGVtZW50ID0gZnVuY3Rpb24obm9kZSkge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBsZXQgc3RyaXAgPSBub2RlLnN0cmlwIHx8IHt9O1xuICByZXR1cm4ge1xuICAgIGlubGluZVN0YW5kYWxvbmU6IHRydWUsXG4gICAgb3Blbjogc3RyaXAub3BlbixcbiAgICBjbG9zZTogc3RyaXAuY2xvc2VcbiAgfTtcbn07XG5cblxuZnVuY3Rpb24gaXNQcmV2V2hpdGVzcGFjZShib2R5LCBpLCBpc1Jvb3QpIHtcbiAgaWYgKGkgPT09IHVuZGVmaW5lZCkge1xuICAgIGkgPSBib2R5Lmxlbmd0aDtcbiAgfVxuXG4gIC8vIE5vZGVzIHRoYXQgZW5kIHdpdGggbmV3bGluZXMgYXJlIGNvbnNpZGVyZWQgd2hpdGVzcGFjZSAoYnV0IGFyZSBzcGVjaWFsXG4gIC8vIGNhc2VkIGZvciBzdHJpcCBvcGVyYXRpb25zKVxuICBsZXQgcHJldiA9IGJvZHlbaSAtIDFdLFxuICAgICAgc2libGluZyA9IGJvZHlbaSAtIDJdO1xuICBpZiAoIXByZXYpIHtcbiAgICByZXR1cm4gaXNSb290O1xuICB9XG5cbiAgaWYgKHByZXYudHlwZSA9PT0gJ0NvbnRlbnRTdGF0ZW1lbnQnKSB7XG4gICAgcmV0dXJuIChzaWJsaW5nIHx8ICFpc1Jvb3QgPyAoL1xccj9cXG5cXHMqPyQvKSA6ICgvKF58XFxyP1xcbilcXHMqPyQvKSkudGVzdChwcmV2Lm9yaWdpbmFsKTtcbiAgfVxufVxuZnVuY3Rpb24gaXNOZXh0V2hpdGVzcGFjZShib2R5LCBpLCBpc1Jvb3QpIHtcbiAgaWYgKGkgPT09IHVuZGVmaW5lZCkge1xuICAgIGkgPSAtMTtcbiAgfVxuXG4gIGxldCBuZXh0ID0gYm9keVtpICsgMV0sXG4gICAgICBzaWJsaW5nID0gYm9keVtpICsgMl07XG4gIGlmICghbmV4dCkge1xuICAgIHJldHVybiBpc1Jvb3Q7XG4gIH1cblxuICBpZiAobmV4dC50eXBlID09PSAnQ29udGVudFN0YXRlbWVudCcpIHtcbiAgICByZXR1cm4gKHNpYmxpbmcgfHwgIWlzUm9vdCA/ICgvXlxccyo/XFxyP1xcbi8pIDogKC9eXFxzKj8oXFxyP1xcbnwkKS8pKS50ZXN0KG5leHQub3JpZ2luYWwpO1xuICB9XG59XG5cbi8vIE1hcmtzIHRoZSBub2RlIHRvIHRoZSByaWdodCBvZiB0aGUgcG9zaXRpb24gYXMgb21pdHRlZC5cbi8vIEkuZS4ge3tmb299fScgJyB3aWxsIG1hcmsgdGhlICcgJyBub2RlIGFzIG9taXR0ZWQuXG4vL1xuLy8gSWYgaSBpcyB1bmRlZmluZWQsIHRoZW4gdGhlIGZpcnN0IGNoaWxkIHdpbGwgYmUgbWFya2VkIGFzIHN1Y2guXG4vL1xuLy8gSWYgbXVsaXRwbGUgaXMgdHJ1dGh5IHRoZW4gYWxsIHdoaXRlc3BhY2Ugd2lsbCBiZSBzdHJpcHBlZCBvdXQgdW50aWwgbm9uLXdoaXRlc3BhY2Vcbi8vIGNvbnRlbnQgaXMgbWV0LlxuZnVuY3Rpb24gb21pdFJpZ2h0KGJvZHksIGksIG11bHRpcGxlKSB7XG4gIGxldCBjdXJyZW50ID0gYm9keVtpID09IG51bGwgPyAwIDogaSArIDFdO1xuICBpZiAoIWN1cnJlbnQgfHwgY3VycmVudC50eXBlICE9PSAnQ29udGVudFN0YXRlbWVudCcgfHwgKCFtdWx0aXBsZSAmJiBjdXJyZW50LnJpZ2h0U3RyaXBwZWQpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbGV0IG9yaWdpbmFsID0gY3VycmVudC52YWx1ZTtcbiAgY3VycmVudC52YWx1ZSA9IGN1cnJlbnQudmFsdWUucmVwbGFjZShtdWx0aXBsZSA/ICgvXlxccysvKSA6ICgvXlsgXFx0XSpcXHI/XFxuPy8pLCAnJyk7XG4gIGN1cnJlbnQucmlnaHRTdHJpcHBlZCA9IGN1cnJlbnQudmFsdWUgIT09IG9yaWdpbmFsO1xufVxuXG4vLyBNYXJrcyB0aGUgbm9kZSB0byB0aGUgbGVmdCBvZiB0aGUgcG9zaXRpb24gYXMgb21pdHRlZC5cbi8vIEkuZS4gJyAne3tmb299fSB3aWxsIG1hcmsgdGhlICcgJyBub2RlIGFzIG9taXR0ZWQuXG4vL1xuLy8gSWYgaSBpcyB1bmRlZmluZWQgdGhlbiB0aGUgbGFzdCBjaGlsZCB3aWxsIGJlIG1hcmtlZCBhcyBzdWNoLlxuLy9cbi8vIElmIG11bGl0cGxlIGlzIHRydXRoeSB0aGVuIGFsbCB3aGl0ZXNwYWNlIHdpbGwgYmUgc3RyaXBwZWQgb3V0IHVudGlsIG5vbi13aGl0ZXNwYWNlXG4vLyBjb250ZW50IGlzIG1ldC5cbmZ1bmN0aW9uIG9taXRMZWZ0KGJvZHksIGksIG11bHRpcGxlKSB7XG4gIGxldCBjdXJyZW50ID0gYm9keVtpID09IG51bGwgPyBib2R5Lmxlbmd0aCAtIDEgOiBpIC0gMV07XG4gIGlmICghY3VycmVudCB8fCBjdXJyZW50LnR5cGUgIT09ICdDb250ZW50U3RhdGVtZW50JyB8fCAoIW11bHRpcGxlICYmIGN1cnJlbnQubGVmdFN0cmlwcGVkKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIFdlIG9taXQgdGhlIGxhc3Qgbm9kZSBpZiBpdCdzIHdoaXRlc3BhY2Ugb25seSBhbmQgbm90IHByZWNlZWRlZCBieSBhIG5vbi1jb250ZW50IG5vZGUuXG4gIGxldCBvcmlnaW5hbCA9IGN1cnJlbnQudmFsdWU7XG4gIGN1cnJlbnQudmFsdWUgPSBjdXJyZW50LnZhbHVlLnJlcGxhY2UobXVsdGlwbGUgPyAoL1xccyskLykgOiAoL1sgXFx0XSskLyksICcnKTtcbiAgY3VycmVudC5sZWZ0U3RyaXBwZWQgPSBjdXJyZW50LnZhbHVlICE9PSBvcmlnaW5hbDtcbiAgcmV0dXJuIGN1cnJlbnQubGVmdFN0cmlwcGVkO1xufVxuXG5leHBvcnQgZGVmYXVsdCBXaGl0ZXNwYWNlQ29udHJvbDtcbiJdfQ== |
| 1 | 'use strict'; | ||
| 2 | |||
| 3 | exports.__esModule = true; | ||
| 4 | exports.registerDefaultDecorators = registerDefaultDecorators; | ||
| 5 | // istanbul ignore next | ||
| 6 | |||
| 7 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } | ||
| 8 | |||
| 9 | var _decoratorsInline = require('./decorators/inline'); | ||
| 10 | |||
| 11 | var _decoratorsInline2 = _interopRequireDefault(_decoratorsInline); | ||
| 12 | |||
| 13 | function registerDefaultDecorators(instance) { | ||
| 14 | _decoratorsInline2['default'](instance); | ||
| 15 | } | ||
| 16 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2RlY29yYXRvcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Z0NBQTJCLHFCQUFxQjs7OztBQUV6QyxTQUFTLHlCQUF5QixDQUFDLFFBQVEsRUFBRTtBQUNsRCxnQ0FBZSxRQUFRLENBQUMsQ0FBQztDQUMxQiIsImZpbGUiOiJkZWNvcmF0b3JzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJlZ2lzdGVySW5saW5lIGZyb20gJy4vZGVjb3JhdG9ycy9pbmxpbmUnO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJEZWZhdWx0RGVjb3JhdG9ycyhpbnN0YW5jZSkge1xuICByZWdpc3RlcklubGluZShpbnN0YW5jZSk7XG59XG5cbiJdfQ== |
No preview for this file type
| 1 | 'use strict'; | ||
| 2 | |||
| 3 | exports.__esModule = true; | ||
| 4 | |||
| 5 | var _utils = require('../utils'); | ||
| 6 | |||
| 7 | exports['default'] = function (instance) { | ||
| 8 | instance.registerDecorator('inline', function (fn, props, container, options) { | ||
| 9 | var ret = fn; | ||
| 10 | if (!props.partials) { | ||
| 11 | props.partials = {}; | ||
| 12 | ret = function (context, options) { | ||
| 13 | // Create a new partials stack frame prior to exec. | ||
| 14 | var original = container.partials; | ||
| 15 | container.partials = _utils.extend({}, original, props.partials); | ||
| 16 | var ret = fn(context, options); | ||
| 17 | container.partials = original; | ||
| 18 | return ret; | ||
| 19 | }; | ||
| 20 | } | ||
| 21 | |||
| 22 | props.partials[options.args[0]] = options.fn; | ||
| 23 | |||
| 24 | return ret; | ||
| 25 | }); | ||
| 26 | }; | ||
| 27 | |||
| 28 | module.exports = exports['default']; | ||
| 29 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2RlY29yYXRvcnMvaW5saW5lLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQXFCLFVBQVU7O3FCQUVoQixVQUFTLFFBQVEsRUFBRTtBQUNoQyxVQUFRLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFVBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFO0FBQzNFLFFBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUNiLFFBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFO0FBQ25CLFdBQUssQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0FBQ3BCLFNBQUcsR0FBRyxVQUFTLE9BQU8sRUFBRSxPQUFPLEVBQUU7O0FBRS9CLFlBQUksUUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7QUFDbEMsaUJBQVMsQ0FBQyxRQUFRLEdBQUcsY0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMxRCxZQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQy9CLGlCQUFTLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztBQUM5QixlQUFPLEdBQUcsQ0FBQztPQUNaLENBQUM7S0FDSDs7QUFFRCxTQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDOztBQUU3QyxXQUFPLEdBQUcsQ0FBQztHQUNaLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6ImlubGluZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZXh0ZW5kfSBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGluc3RhbmNlKSB7XG4gIGluc3RhbmNlLnJlZ2lzdGVyRGVjb3JhdG9yKCdpbmxpbmUnLCBmdW5jdGlvbihmbiwgcHJvcHMsIGNvbnRhaW5lciwgb3B0aW9ucykge1xuICAgIGxldCByZXQgPSBmbjtcbiAgICBpZiAoIXByb3BzLnBhcnRpYWxzKSB7XG4gICAgICBwcm9wcy5wYXJ0aWFscyA9IHt9O1xuICAgICAgcmV0ID0gZnVuY3Rpb24oY29udGV4dCwgb3B0aW9ucykge1xuICAgICAgICAvLyBDcmVhdGUgYSBuZXcgcGFydGlhbHMgc3RhY2sgZnJhbWUgcHJpb3IgdG8gZXhlYy5cbiAgICAgICAgbGV0IG9yaWdpbmFsID0gY29udGFpbmVyLnBhcnRpYWxzO1xuICAgICAgICBjb250YWluZXIucGFydGlhbHMgPSBleHRlbmQoe30sIG9yaWdpbmFsLCBwcm9wcy5wYXJ0aWFscyk7XG4gICAgICAgIGxldCByZXQgPSBmbihjb250ZXh0LCBvcHRpb25zKTtcbiAgICAgICAgY29udGFpbmVyLnBhcnRpYWxzID0gb3JpZ2luYWw7XG4gICAgICAgIHJldHVybiByZXQ7XG4gICAgICB9O1xuICAgIH1cblxuICAgIHByb3BzLnBhcnRpYWxzW29wdGlvbnMuYXJnc1swXV0gPSBvcHRpb25zLmZuO1xuXG4gICAgcmV0dXJuIHJldDtcbiAgfSk7XG59XG4iXX0= |
| 1 | 'use strict'; | ||
| 2 | |||
| 3 | exports.__esModule = true; | ||
| 4 | |||
| 5 | var errorProps = ['description', 'fileName', 'lineNumber', 'message', 'name', 'number', 'stack']; | ||
| 6 | |||
| 7 | function Exception(message, node) { | ||
| 8 | var loc = node && node.loc, | ||
| 9 | line = undefined, | ||
| 10 | column = undefined; | ||
| 11 | if (loc) { | ||
| 12 | line = loc.start.line; | ||
| 13 | column = loc.start.column; | ||
| 14 | |||
| 15 | message += ' - ' + line + ':' + column; | ||
| 16 | } | ||
| 17 | |||
| 18 | var tmp = Error.prototype.constructor.call(this, message); | ||
| 19 | |||
| 20 | // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work. | ||
| 21 | for (var idx = 0; idx < errorProps.length; idx++) { | ||
| 22 | this[errorProps[idx]] = tmp[errorProps[idx]]; | ||
| 23 | } | ||
| 24 | |||
| 25 | /* istanbul ignore else */ | ||
| 26 | if (Error.captureStackTrace) { | ||
| 27 | Error.captureStackTrace(this, Exception); | ||
| 28 | } | ||
| 29 | |||
| 30 | try { | ||
| 31 | if (loc) { | ||
| 32 | this.lineNumber = line; | ||
| 33 | |||
| 34 | // Work around issue under safari where we can't directly set the column value | ||
| 35 | /* istanbul ignore next */ | ||
| 36 | if (Object.defineProperty) { | ||
| 37 | Object.defineProperty(this, 'column', { | ||
| 38 | value: column, | ||
| 39 | enumerable: true | ||
| 40 | }); | ||
| 41 | } else { | ||
| 42 | this.column = column; | ||
| 43 | } | ||
| 44 | } | ||
| 45 | } catch (nop) { | ||
| 46 | /* Ignore if the browser is very particular */ | ||
| 47 | } | ||
| 48 | } | ||
| 49 | |||
| 50 | Exception.prototype = new Error(); | ||
| 51 | |||
| 52 | exports['default'] = Exception; | ||
| 53 | module.exports = exports['default']; | ||
| 54 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2V4Y2VwdGlvbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQ0EsSUFBTSxVQUFVLEdBQUcsQ0FBQyxhQUFhLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQzs7QUFFbkcsU0FBUyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRTtBQUNoQyxNQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLEdBQUc7TUFDdEIsSUFBSSxZQUFBO01BQ0osTUFBTSxZQUFBLENBQUM7QUFDWCxNQUFJLEdBQUcsRUFBRTtBQUNQLFFBQUksR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztBQUN0QixVQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7O0FBRTFCLFdBQU8sSUFBSSxLQUFLLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxNQUFNLENBQUM7R0FDeEM7O0FBRUQsTUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQzs7O0FBRzFELE9BQUssSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFO0FBQ2hELFFBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7R0FDOUM7OztBQUdELE1BQUksS0FBSyxDQUFDLGlCQUFpQixFQUFFO0FBQzNCLFNBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7R0FDMUM7O0FBRUQsTUFBSTtBQUNGLFFBQUksR0FBRyxFQUFFO0FBQ1AsVUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7Ozs7QUFJdkIsVUFBSSxNQUFNLENBQUMsY0FBYyxFQUFFO0FBQ3pCLGNBQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRTtBQUNwQyxlQUFLLEVBQUUsTUFBTTtBQUNiLG9CQUFVLEVBQUUsSUFBSTtTQUNqQixDQUFDLENBQUM7T0FDSixNQUFNO0FBQ0wsWUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7T0FDdEI7S0FDRjtHQUNGLENBQUMsT0FBTyxHQUFHLEVBQUU7O0dBRWI7Q0FDRjs7QUFFRCxTQUFTLENBQUMsU0FBUyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7O3FCQUVuQixTQUFTIiwiZmlsZSI6ImV4Y2VwdGlvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbIlxuY29uc3QgZXJyb3JQcm9wcyA9IFsnZGVzY3JpcHRpb24nLCAnZmlsZU5hbWUnLCAnbGluZU51bWJlcicsICdtZXNzYWdlJywgJ25hbWUnLCAnbnVtYmVyJywgJ3N0YWNrJ107XG5cbmZ1bmN0aW9uIEV4Y2VwdGlvbihtZXNzYWdlLCBub2RlKSB7XG4gIGxldCBsb2MgPSBub2RlICYmIG5vZGUubG9jLFxuICAgICAgbGluZSxcbiAgICAgIGNvbHVtbjtcbiAgaWYgKGxvYykge1xuICAgIGxpbmUgPSBsb2Muc3RhcnQubGluZTtcbiAgICBjb2x1bW4gPSBsb2Muc3RhcnQuY29sdW1uO1xuXG4gICAgbWVzc2FnZSArPSAnIC0gJyArIGxpbmUgKyAnOicgKyBjb2x1bW47XG4gIH1cblxuICBsZXQgdG1wID0gRXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yLmNhbGwodGhpcywgbWVzc2FnZSk7XG5cbiAgLy8gVW5mb3J0dW5hdGVseSBlcnJvcnMgYXJlIG5vdCBlbnVtZXJhYmxlIGluIENocm9tZSAoYXQgbGVhc3QpLCBzbyBgZm9yIHByb3AgaW4gdG1wYCBkb2Vzbid0IHdvcmsuXG4gIGZvciAobGV0IGlkeCA9IDA7IGlkeCA8IGVycm9yUHJvcHMubGVuZ3RoOyBpZHgrKykge1xuICAgIHRoaXNbZXJyb3JQcm9wc1tpZHhdXSA9IHRtcFtlcnJvclByb3BzW2lkeF1dO1xuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSB7XG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgRXhjZXB0aW9uKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgaWYgKGxvYykge1xuICAgICAgdGhpcy5saW5lTnVtYmVyID0gbGluZTtcblxuICAgICAgLy8gV29yayBhcm91bmQgaXNzdWUgdW5kZXIgc2FmYXJpIHdoZXJlIHdlIGNhbid0IGRpcmVjdGx5IHNldCB0aGUgY29sdW1uIHZhbHVlXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkge1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ2NvbHVtbicsIHtcbiAgICAgICAgICB2YWx1ZTogY29sdW1uLFxuICAgICAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNvbHVtbiA9IGNvbHVtbjtcbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKG5vcCkge1xuICAgIC8qIElnbm9yZSBpZiB0aGUgYnJvd3NlciBpcyB2ZXJ5IHBhcnRpY3VsYXIgKi9cbiAgfVxufVxuXG5FeGNlcHRpb24ucHJvdG90eXBlID0gbmV3IEVycm9yKCk7XG5cbmV4cG9ydCBkZWZhdWx0IEV4Y2VwdGlvbjtcbiJdfQ== |
| 1 | 'use strict'; | ||
| 2 | |||
| 3 | exports.__esModule = true; | ||
| 4 | exports.registerDefaultHelpers = registerDefaultHelpers; | ||
| 5 | // istanbul ignore next | ||
| 6 | |||
| 7 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } | ||
| 8 | |||
| 9 | var _helpersBlockHelperMissing = require('./helpers/block-helper-missing'); | ||
| 10 | |||
| 11 | var _helpersBlockHelperMissing2 = _interopRequireDefault(_helpersBlockHelperMissing); | ||
| 12 | |||
| 13 | var _helpersEach = require('./helpers/each'); | ||
| 14 | |||
| 15 | var _helpersEach2 = _interopRequireDefault(_helpersEach); | ||
| 16 | |||
| 17 | var _helpersHelperMissing = require('./helpers/helper-missing'); | ||
| 18 | |||
| 19 | var _helpersHelperMissing2 = _interopRequireDefault(_helpersHelperMissing); | ||
| 20 | |||
| 21 | var _helpersIf = require('./helpers/if'); | ||
| 22 | |||
| 23 | var _helpersIf2 = _interopRequireDefault(_helpersIf); | ||
| 24 | |||
| 25 | var _helpersLog = require('./helpers/log'); | ||
| 26 | |||
| 27 | var _helpersLog2 = _interopRequireDefault(_helpersLog); | ||
| 28 | |||
| 29 | var _helpersLookup = require('./helpers/lookup'); | ||
| 30 | |||
| 31 | var _helpersLookup2 = _interopRequireDefault(_helpersLookup); | ||
| 32 | |||
| 33 | var _helpersWith = require('./helpers/with'); | ||
| 34 | |||
| 35 | var _helpersWith2 = _interopRequireDefault(_helpersWith); | ||
| 36 | |||
| 37 | function registerDefaultHelpers(instance) { | ||
| 38 | _helpersBlockHelperMissing2['default'](instance); | ||
| 39 | _helpersEach2['default'](instance); | ||
| 40 | _helpersHelperMissing2['default'](instance); | ||
| 41 | _helpersIf2['default'](instance); | ||
| 42 | _helpersLog2['default'](instance); | ||
| 43 | _helpersLookup2['default'](instance); | ||
| 44 | _helpersWith2['default'](instance); | ||
| 45 | } | ||
| 46 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7eUNBQXVDLGdDQUFnQzs7OzsyQkFDOUMsZ0JBQWdCOzs7O29DQUNQLDBCQUEwQjs7Ozt5QkFDckMsY0FBYzs7OzswQkFDYixlQUFlOzs7OzZCQUNaLGtCQUFrQjs7OzsyQkFDcEIsZ0JBQWdCOzs7O0FBRWxDLFNBQVMsc0JBQXNCLENBQUMsUUFBUSxFQUFFO0FBQy9DLHlDQUEyQixRQUFRLENBQUMsQ0FBQztBQUNyQywyQkFBYSxRQUFRLENBQUMsQ0FBQztBQUN2QixvQ0FBc0IsUUFBUSxDQUFDLENBQUM7QUFDaEMseUJBQVcsUUFBUSxDQUFDLENBQUM7QUFDckIsMEJBQVksUUFBUSxDQUFDLENBQUM7QUFDdEIsNkJBQWUsUUFBUSxDQUFDLENBQUM7QUFDekIsMkJBQWEsUUFBUSxDQUFDLENBQUM7Q0FDeEIiLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCByZWdpc3RlckJsb2NrSGVscGVyTWlzc2luZyBmcm9tICcuL2hlbHBlcnMvYmxvY2staGVscGVyLW1pc3NpbmcnO1xuaW1wb3J0IHJlZ2lzdGVyRWFjaCBmcm9tICcuL2hlbHBlcnMvZWFjaCc7XG5pbXBvcnQgcmVnaXN0ZXJIZWxwZXJNaXNzaW5nIGZyb20gJy4vaGVscGVycy9oZWxwZXItbWlzc2luZyc7XG5pbXBvcnQgcmVnaXN0ZXJJZiBmcm9tICcuL2hlbHBlcnMvaWYnO1xuaW1wb3J0IHJlZ2lzdGVyTG9nIGZyb20gJy4vaGVscGVycy9sb2cnO1xuaW1wb3J0IHJlZ2lzdGVyTG9va3VwIGZyb20gJy4vaGVscGVycy9sb29rdXAnO1xuaW1wb3J0IHJlZ2lzdGVyV2l0aCBmcm9tICcuL2hlbHBlcnMvd2l0aCc7XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckRlZmF1bHRIZWxwZXJzKGluc3RhbmNlKSB7XG4gIHJlZ2lzdGVyQmxvY2tIZWxwZXJNaXNzaW5nKGluc3RhbmNlKTtcbiAgcmVnaXN0ZXJFYWNoKGluc3RhbmNlKTtcbiAgcmVnaXN0ZXJIZWxwZXJNaXNzaW5nKGluc3RhbmNlKTtcbiAgcmVnaXN0ZXJJZihpbnN0YW5jZSk7XG4gIHJlZ2lzdGVyTG9nKGluc3RhbmNlKTtcbiAgcmVnaXN0ZXJMb29rdXAoaW5zdGFuY2UpO1xuICByZWdpc3RlcldpdGgoaW5zdGFuY2UpO1xufVxuIl19 |
No preview for this file type
| 1 | 'use strict'; | ||
| 2 | |||
| 3 | exports.__esModule = true; | ||
| 4 | |||
| 5 | var _utils = require('../utils'); | ||
| 6 | |||
| 7 | exports['default'] = function (instance) { | ||
| 8 | instance.registerHelper('blockHelperMissing', function (context, options) { | ||
| 9 | var inverse = options.inverse, | ||
| 10 | fn = options.fn; | ||
| 11 | |||
| 12 | if (context === true) { | ||
| 13 | return fn(this); | ||
| 14 | } else if (context === false || context == null) { | ||
| 15 | return inverse(this); | ||
| 16 | } else if (_utils.isArray(context)) { | ||
| 17 | if (context.length > 0) { | ||
| 18 | if (options.ids) { | ||
| 19 | options.ids = [options.name]; | ||
| 20 | } | ||
| 21 | |||
| 22 | return instance.helpers.each(context, options); | ||
| 23 | } else { | ||
| 24 | return inverse(this); | ||
| 25 | } | ||
| 26 | } else { | ||
| 27 | if (options.data && options.ids) { | ||
| 28 | var data = _utils.createFrame(options.data); | ||
| 29 | data.contextPath = _utils.appendContextPath(options.data.contextPath, options.name); | ||
| 30 | options = { data: data }; | ||
| 31 | } | ||
| 32 | |||
| 33 | return fn(context, options); | ||
| 34 | } | ||
| 35 | }); | ||
| 36 | }; | ||
| 37 | |||
| 38 | module.exports = exports['default']; | ||
| 39 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvYmxvY2staGVscGVyLW1pc3NpbmcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztxQkFBc0QsVUFBVTs7cUJBRWpELFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsb0JBQW9CLEVBQUUsVUFBUyxPQUFPLEVBQUUsT0FBTyxFQUFFO0FBQ3ZFLFFBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPO1FBQ3pCLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDOztBQUVwQixRQUFJLE9BQU8sS0FBSyxJQUFJLEVBQUU7QUFDcEIsYUFBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDakIsTUFBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLElBQUksT0FBTyxJQUFJLElBQUksRUFBRTtBQUMvQyxhQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUN0QixNQUFNLElBQUksZUFBUSxPQUFPLENBQUMsRUFBRTtBQUMzQixVQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQ3RCLFlBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUNmLGlCQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzlCOztBQUVELGVBQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO09BQ2hELE1BQU07QUFDTCxlQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztPQUN0QjtLQUNGLE1BQU07QUFDTCxVQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUMvQixZQUFJLElBQUksR0FBRyxtQkFBWSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDckMsWUFBSSxDQUFDLFdBQVcsR0FBRyx5QkFBa0IsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzdFLGVBQU8sR0FBRyxFQUFDLElBQUksRUFBRSxJQUFJLEVBQUMsQ0FBQztPQUN4Qjs7QUFFRCxhQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDN0I7R0FDRixDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJibG9jay1oZWxwZXItbWlzc2luZy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7YXBwZW5kQ29udGV4dFBhdGgsIGNyZWF0ZUZyYW1lLCBpc0FycmF5fSBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGluc3RhbmNlKSB7XG4gIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCdibG9ja0hlbHBlck1pc3NpbmcnLCBmdW5jdGlvbihjb250ZXh0LCBvcHRpb25zKSB7XG4gICAgbGV0IGludmVyc2UgPSBvcHRpb25zLmludmVyc2UsXG4gICAgICAgIGZuID0gb3B0aW9ucy5mbjtcblxuICAgIGlmIChjb250ZXh0ID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4gZm4odGhpcyk7XG4gICAgfSBlbHNlIGlmIChjb250ZXh0ID09PSBmYWxzZSB8fCBjb250ZXh0ID09IG51bGwpIHtcbiAgICAgIHJldHVybiBpbnZlcnNlKHRoaXMpO1xuICAgIH0gZWxzZSBpZiAoaXNBcnJheShjb250ZXh0KSkge1xuICAgICAgaWYgKGNvbnRleHQubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAob3B0aW9ucy5pZHMpIHtcbiAgICAgICAgICBvcHRpb25zLmlkcyA9IFtvcHRpb25zLm5hbWVdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGluc3RhbmNlLmhlbHBlcnMuZWFjaChjb250ZXh0LCBvcHRpb25zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBpbnZlcnNlKHRoaXMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAob3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuaWRzKSB7XG4gICAgICAgIGxldCBkYXRhID0gY3JlYXRlRnJhbWUob3B0aW9ucy5kYXRhKTtcbiAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IGFwcGVuZENvbnRleHRQYXRoKG9wdGlvbnMuZGF0YS5jb250ZXh0UGF0aCwgb3B0aW9ucy5uYW1lKTtcbiAgICAgICAgb3B0aW9ucyA9IHtkYXRhOiBkYXRhfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZuKGNvbnRleHQsIG9wdGlvbnMpO1xuICAgIH1cbiAgfSk7XG59XG4iXX0= |
| 1 | 'use strict'; | ||
| 2 | |||
| 3 | exports.__esModule = true; | ||
| 4 | // istanbul ignore next | ||
| 5 | |||
| 6 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } | ||
| 7 | |||
| 8 | var _utils = require('../utils'); | ||
| 9 | |||
| 10 | var _exception = require('../exception'); | ||
| 11 | |||
| 12 | var _exception2 = _interopRequireDefault(_exception); | ||
| 13 | |||
| 14 | exports['default'] = function (instance) { | ||
| 15 | instance.registerHelper('each', function (context, options) { | ||
| 16 | if (!options) { | ||
| 17 | throw new _exception2['default']('Must pass iterator to #each'); | ||
| 18 | } | ||
| 19 | |||
| 20 | var fn = options.fn, | ||
| 21 | inverse = options.inverse, | ||
| 22 | i = 0, | ||
| 23 | ret = '', | ||
| 24 | data = undefined, | ||
| 25 | contextPath = undefined; | ||
| 26 | |||
| 27 | if (options.data && options.ids) { | ||
| 28 | contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]) + '.'; | ||
| 29 | } | ||
| 30 | |||
| 31 | if (_utils.isFunction(context)) { | ||
| 32 | context = context.call(this); | ||
| 33 | } | ||
| 34 | |||
| 35 | if (options.data) { | ||
| 36 | data = _utils.createFrame(options.data); | ||
| 37 | } | ||
| 38 | |||
| 39 | function execIteration(field, index, last) { | ||
| 40 | if (data) { | ||
| 41 | data.key = field; | ||
| 42 | data.index = index; | ||
| 43 | data.first = index === 0; | ||
| 44 | data.last = !!last; | ||
| 45 | |||
| 46 | if (contextPath) { | ||
| 47 | data.contextPath = contextPath + field; | ||
| 48 | } | ||
| 49 | } | ||
| 50 | |||
| 51 | ret = ret + fn(context[field], { | ||
| 52 | data: data, | ||
| 53 | blockParams: _utils.blockParams([context[field], field], [contextPath + field, null]) | ||
| 54 | }); | ||
| 55 | } | ||
| 56 | |||
| 57 | if (context && typeof context === 'object') { | ||
| 58 | if (_utils.isArray(context)) { | ||
| 59 | for (var j = context.length; i < j; i++) { | ||
| 60 | if (i in context) { | ||
| 61 | execIteration(i, i, i === context.length - 1); | ||
| 62 | } | ||
| 63 | } | ||
| 64 | } else { | ||
| 65 | var priorKey = undefined; | ||
| 66 | |||
| 67 | for (var key in context) { | ||
| 68 | if (context.hasOwnProperty(key)) { | ||
| 69 | // We're running the iterations one step out of sync so we can detect | ||
| 70 | // the last iteration without have to scan the object twice and create | ||
| 71 | // an itermediate keys array. | ||
| 72 | if (priorKey !== undefined) { | ||
| 73 | execIteration(priorKey, i - 1); | ||
| 74 | } | ||
| 75 | priorKey = key; | ||
| 76 | i++; | ||
| 77 | } | ||
| 78 | } | ||
| 79 | if (priorKey !== undefined) { | ||
| 80 | execIteration(priorKey, i - 1, true); | ||
| 81 | } | ||
| 82 | } | ||
| 83 | } | ||
| 84 | |||
| 85 | if (i === 0) { | ||
| 86 | ret = inverse(this); | ||
| 87 | } | ||
| 88 | |||
| 89 | return ret; | ||
| 90 | }); | ||
| 91 | }; | ||
| 92 | |||
| 93 | module.exports = exports['default']; | ||
| 94 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvZWFjaC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O3FCQUErRSxVQUFVOzt5QkFDbkUsY0FBYzs7OztxQkFFckIsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsVUFBUyxPQUFPLEVBQUUsT0FBTyxFQUFFO0FBQ3pELFFBQUksQ0FBQyxPQUFPLEVBQUU7QUFDWixZQUFNLDJCQUFjLDZCQUE2QixDQUFDLENBQUM7S0FDcEQ7O0FBRUQsUUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUU7UUFDZixPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU87UUFDekIsQ0FBQyxHQUFHLENBQUM7UUFDTCxHQUFHLEdBQUcsRUFBRTtRQUNSLElBQUksWUFBQTtRQUNKLFdBQVcsWUFBQSxDQUFDOztBQUVoQixRQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUMvQixpQkFBVyxHQUFHLHlCQUFrQixPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO0tBQ2pGOztBQUVELFFBQUksa0JBQVcsT0FBTyxDQUFDLEVBQUU7QUFBRSxhQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUFFOztBQUUxRCxRQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUU7QUFDaEIsVUFBSSxHQUFHLG1CQUFZLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUNsQzs7QUFFRCxhQUFTLGFBQWEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtBQUN6QyxVQUFJLElBQUksRUFBRTtBQUNSLFlBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDO0FBQ2pCLFlBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQ25CLFlBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxLQUFLLENBQUMsQ0FBQztBQUN6QixZQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7O0FBRW5CLFlBQUksV0FBVyxFQUFFO0FBQ2YsY0FBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLEdBQUcsS0FBSyxDQUFDO1NBQ3hDO09BQ0Y7O0FBRUQsU0FBRyxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQzdCLFlBQUksRUFBRSxJQUFJO0FBQ1YsbUJBQVcsRUFBRSxtQkFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLFdBQVcsR0FBRyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7T0FDL0UsQ0FBQyxDQUFDO0tBQ0o7O0FBRUQsUUFBSSxPQUFPLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFO0FBQzFDLFVBQUksZUFBUSxPQUFPLENBQUMsRUFBRTtBQUNwQixhQUFLLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN2QyxjQUFJLENBQUMsSUFBSSxPQUFPLEVBQUU7QUFDaEIseUJBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1dBQy9DO1NBQ0Y7T0FDRixNQUFNO0FBQ0wsWUFBSSxRQUFRLFlBQUEsQ0FBQzs7QUFFYixhQUFLLElBQUksR0FBRyxJQUFJLE9BQU8sRUFBRTtBQUN2QixjQUFJLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUU7Ozs7QUFJL0IsZ0JBQUksUUFBUSxLQUFLLFNBQVMsRUFBRTtBQUMxQiwyQkFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDaEM7QUFDRCxvQkFBUSxHQUFHLEdBQUcsQ0FBQztBQUNmLGFBQUMsRUFBRSxDQUFDO1dBQ0w7U0FDRjtBQUNELFlBQUksUUFBUSxLQUFLLFNBQVMsRUFBRTtBQUMxQix1QkFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ3RDO09BQ0Y7S0FDRjs7QUFFRCxRQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDWCxTQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3JCOztBQUVELFdBQU8sR0FBRyxDQUFDO0dBQ1osQ0FBQyxDQUFDO0NBQ0oiLCJmaWxlIjoiZWFjaC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7YXBwZW5kQ29udGV4dFBhdGgsIGJsb2NrUGFyYW1zLCBjcmVhdGVGcmFtZSwgaXNBcnJheSwgaXNGdW5jdGlvbn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IEV4Y2VwdGlvbiBmcm9tICcuLi9leGNlcHRpb24nO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihpbnN0YW5jZSkge1xuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignZWFjaCcsIGZ1bmN0aW9uKGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgICBpZiAoIW9wdGlvbnMpIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ011c3QgcGFzcyBpdGVyYXRvciB0byAjZWFjaCcpO1xuICAgIH1cblxuICAgIGxldCBmbiA9IG9wdGlvbnMuZm4sXG4gICAgICAgIGludmVyc2UgPSBvcHRpb25zLmludmVyc2UsXG4gICAgICAgIGkgPSAwLFxuICAgICAgICByZXQgPSAnJyxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgY29udGV4dFBhdGg7XG5cbiAgICBpZiAob3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuaWRzKSB7XG4gICAgICBjb250ZXh0UGF0aCA9IGFwcGVuZENvbnRleHRQYXRoKG9wdGlvbnMuZGF0YS5jb250ZXh0UGF0aCwgb3B0aW9ucy5pZHNbMF0pICsgJy4nO1xuICAgIH1cblxuICAgIGlmIChpc0Z1bmN0aW9uKGNvbnRleHQpKSB7IGNvbnRleHQgPSBjb250ZXh0LmNhbGwodGhpcyk7IH1cblxuICAgIGlmIChvcHRpb25zLmRhdGEpIHtcbiAgICAgIGRhdGEgPSBjcmVhdGVGcmFtZShvcHRpb25zLmRhdGEpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGV4ZWNJdGVyYXRpb24oZmllbGQsIGluZGV4LCBsYXN0KSB7XG4gICAgICBpZiAoZGF0YSkge1xuICAgICAgICBkYXRhLmtleSA9IGZpZWxkO1xuICAgICAgICBkYXRhLmluZGV4ID0gaW5kZXg7XG4gICAgICAgIGRhdGEuZmlyc3QgPSBpbmRleCA9PT0gMDtcbiAgICAgICAgZGF0YS5sYXN0ID0gISFsYXN0O1xuXG4gICAgICAgIGlmIChjb250ZXh0UGF0aCkge1xuICAgICAgICAgIGRhdGEuY29udGV4dFBhdGggPSBjb250ZXh0UGF0aCArIGZpZWxkO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldCA9IHJldCArIGZuKGNvbnRleHRbZmllbGRdLCB7XG4gICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgIGJsb2NrUGFyYW1zOiBibG9ja1BhcmFtcyhbY29udGV4dFtmaWVsZF0sIGZpZWxkXSwgW2NvbnRleHRQYXRoICsgZmllbGQsIG51bGxdKVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGNvbnRleHQgJiYgdHlwZW9mIGNvbnRleHQgPT09ICdvYmplY3QnKSB7XG4gICAgICBpZiAoaXNBcnJheShjb250ZXh0KSkge1xuICAgICAgICBmb3IgKGxldCBqID0gY29udGV4dC5sZW5ndGg7IGkgPCBqOyBpKyspIHtcbiAgICAgICAgICBpZiAoaSBpbiBjb250ZXh0KSB7XG4gICAgICAgICAgICBleGVjSXRlcmF0aW9uKGksIGksIGkgPT09IGNvbnRleHQubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgcHJpb3JLZXk7XG5cbiAgICAgICAgZm9yIChsZXQga2V5IGluIGNvbnRleHQpIHtcbiAgICAgICAgICBpZiAoY29udGV4dC5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICAvLyBXZSdyZSBydW5uaW5nIHRoZSBpdGVyYXRpb25zIG9uZSBzdGVwIG91dCBvZiBzeW5jIHNvIHdlIGNhbiBkZXRlY3RcbiAgICAgICAgICAgIC8vIHRoZSBsYXN0IGl0ZXJhdGlvbiB3aXRob3V0IGhhdmUgdG8gc2NhbiB0aGUgb2JqZWN0IHR3aWNlIGFuZCBjcmVhdGVcbiAgICAgICAgICAgIC8vIGFuIGl0ZXJtZWRpYXRlIGtleXMgYXJyYXkuXG4gICAgICAgICAgICBpZiAocHJpb3JLZXkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBleGVjSXRlcmF0aW9uKHByaW9yS2V5LCBpIC0gMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwcmlvcktleSA9IGtleTtcbiAgICAgICAgICAgIGkrKztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByaW9yS2V5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBleGVjSXRlcmF0aW9uKHByaW9yS2V5LCBpIC0gMSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgcmV0ID0gaW52ZXJzZSh0aGlzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0O1xuICB9KTtcbn1cbiJdfQ== |
| 1 | 'use strict'; | ||
| 2 | |||
| 3 | exports.__esModule = true; | ||
| 4 | // istanbul ignore next | ||
| 5 | |||
| 6 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } | ||
| 7 | |||
| 8 | var _exception = require('../exception'); | ||
| 9 | |||
| 10 | var _exception2 = _interopRequireDefault(_exception); | ||
| 11 | |||
| 12 | exports['default'] = function (instance) { | ||
| 13 | instance.registerHelper('helperMissing', function () /* [args, ]options */{ | ||
| 14 | if (arguments.length === 1) { | ||
| 15 | // A missing field in a {{foo}} construct. | ||
| 16 | return undefined; | ||
| 17 | } else { | ||
| 18 | // Someone is actually trying to call something, blow up. | ||
| 19 | throw new _exception2['default']('Missing helper: "' + arguments[arguments.length - 1].name + '"'); | ||
| 20 | } | ||
| 21 | }); | ||
| 22 | }; | ||
| 23 | |||
| 24 | module.exports = exports['default']; | ||
| 25 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvaGVscGVyLW1pc3NpbmcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozt5QkFBc0IsY0FBYzs7OztxQkFFckIsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEVBQUUsaUNBQWdDO0FBQ3ZFLFFBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7O0FBRTFCLGFBQU8sU0FBUyxDQUFDO0tBQ2xCLE1BQU07O0FBRUwsWUFBTSwyQkFBYyxtQkFBbUIsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7S0FDdkY7R0FDRixDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJoZWxwZXItbWlzc2luZy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi4vZXhjZXB0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2hlbHBlck1pc3NpbmcnLCBmdW5jdGlvbigvKiBbYXJncywgXW9wdGlvbnMgKi8pIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgLy8gQSBtaXNzaW5nIGZpZWxkIGluIGEge3tmb299fSBjb25zdHJ1Y3QuXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTb21lb25lIGlzIGFjdHVhbGx5IHRyeWluZyB0byBjYWxsIHNvbWV0aGluZywgYmxvdyB1cC5cbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ01pc3NpbmcgaGVscGVyOiBcIicgKyBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aCAtIDFdLm5hbWUgKyAnXCInKTtcbiAgICB9XG4gIH0pO1xufVxuIl19 |
| 1 | 'use strict'; | ||
| 2 | |||
| 3 | exports.__esModule = true; | ||
| 4 | |||
| 5 | var _utils = require('../utils'); | ||
| 6 | |||
| 7 | exports['default'] = function (instance) { | ||
| 8 | instance.registerHelper('if', function (conditional, options) { | ||
| 9 | if (_utils.isFunction(conditional)) { | ||
| 10 | conditional = conditional.call(this); | ||
| 11 | } | ||
| 12 | |||
| 13 | // Default behavior is to render the positive path if the value is truthy and not empty. | ||
| 14 | // The `includeZero` option may be set to treat the condtional as purely not empty based on the | ||
| 15 | // behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative. | ||
| 16 | if (!options.hash.includeZero && !conditional || _utils.isEmpty(conditional)) { | ||
| 17 | return options.inverse(this); | ||
| 18 | } else { | ||
| 19 | return options.fn(this); | ||
| 20 | } | ||
| 21 | }); | ||
| 22 | |||
| 23 | instance.registerHelper('unless', function (conditional, options) { | ||
| 24 | return instance.helpers['if'].call(this, conditional, { fn: options.inverse, inverse: options.fn, hash: options.hash }); | ||
| 25 | }); | ||
| 26 | }; | ||
| 27 | |||
| 28 | module.exports = exports['default']; | ||
| 29 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvaWYuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztxQkFBa0MsVUFBVTs7cUJBRTdCLFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFVBQVMsV0FBVyxFQUFFLE9BQU8sRUFBRTtBQUMzRCxRQUFJLGtCQUFXLFdBQVcsQ0FBQyxFQUFFO0FBQUUsaUJBQVcsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQUU7Ozs7O0FBS3RFLFFBQUksQUFBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsV0FBVyxJQUFLLGVBQVEsV0FBVyxDQUFDLEVBQUU7QUFDdkUsYUFBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzlCLE1BQU07QUFDTCxhQUFPLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDekI7R0FDRixDQUFDLENBQUM7O0FBRUgsVUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsVUFBUyxXQUFXLEVBQUUsT0FBTyxFQUFFO0FBQy9ELFdBQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQztHQUN2SCxDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJpZi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aXNFbXB0eSwgaXNGdW5jdGlvbn0gZnJvbSAnLi4vdXRpbHMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihpbnN0YW5jZSkge1xuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignaWYnLCBmdW5jdGlvbihjb25kaXRpb25hbCwgb3B0aW9ucykge1xuICAgIGlmIChpc0Z1bmN0aW9uKGNvbmRpdGlvbmFsKSkgeyBjb25kaXRpb25hbCA9IGNvbmRpdGlvbmFsLmNhbGwodGhpcyk7IH1cblxuICAgIC8vIERlZmF1bHQgYmVoYXZpb3IgaXMgdG8gcmVuZGVyIHRoZSBwb3NpdGl2ZSBwYXRoIGlmIHRoZSB2YWx1ZSBpcyB0cnV0aHkgYW5kIG5vdCBlbXB0eS5cbiAgICAvLyBUaGUgYGluY2x1ZGVaZXJvYCBvcHRpb24gbWF5IGJlIHNldCB0byB0cmVhdCB0aGUgY29uZHRpb25hbCBhcyBwdXJlbHkgbm90IGVtcHR5IGJhc2VkIG9uIHRoZVxuICAgIC8vIGJlaGF2aW9yIG9mIGlzRW1wdHkuIEVmZmVjdGl2ZWx5IHRoaXMgZGV0ZXJtaW5lcyBpZiAwIGlzIGhhbmRsZWQgYnkgdGhlIHBvc2l0aXZlIHBhdGggb3IgbmVnYXRpdmUuXG4gICAgaWYgKCghb3B0aW9ucy5oYXNoLmluY2x1ZGVaZXJvICYmICFjb25kaXRpb25hbCkgfHwgaXNFbXB0eShjb25kaXRpb25hbCkpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLmludmVyc2UodGhpcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBvcHRpb25zLmZuKHRoaXMpO1xuICAgIH1cbiAgfSk7XG5cbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ3VubGVzcycsIGZ1bmN0aW9uKGNvbmRpdGlvbmFsLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIGluc3RhbmNlLmhlbHBlcnNbJ2lmJ10uY2FsbCh0aGlzLCBjb25kaXRpb25hbCwge2ZuOiBvcHRpb25zLmludmVyc2UsIGludmVyc2U6IG9wdGlvbnMuZm4sIGhhc2g6IG9wdGlvbnMuaGFzaH0pO1xuICB9KTtcbn1cbiJdfQ== |
| 1 | 'use strict'; | ||
| 2 | |||
| 3 | exports.__esModule = true; | ||
| 4 | |||
| 5 | exports['default'] = function (instance) { | ||
| 6 | instance.registerHelper('log', function () /* message, options */{ | ||
| 7 | var args = [undefined], | ||
| 8 | options = arguments[arguments.length - 1]; | ||
| 9 | for (var i = 0; i < arguments.length - 1; i++) { | ||
| 10 | args.push(arguments[i]); | ||
| 11 | } | ||
| 12 | |||
| 13 | var level = 1; | ||
| 14 | if (options.hash.level != null) { | ||
| 15 | level = options.hash.level; | ||
| 16 | } else if (options.data && options.data.level != null) { | ||
| 17 | level = options.data.level; | ||
| 18 | } | ||
| 19 | args[0] = level; | ||
| 20 | |||
| 21 | instance.log.apply(instance, args); | ||
| 22 | }); | ||
| 23 | }; | ||
| 24 | |||
| 25 | module.exports = exports['default']; | ||
| 26 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvbG9nLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQWUsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsa0NBQWlDO0FBQzlELFFBQUksSUFBSSxHQUFHLENBQUMsU0FBUyxDQUFDO1FBQ2xCLE9BQU8sR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM5QyxTQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDN0MsVUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN6Qjs7QUFFRCxRQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDZCxRQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRTtBQUM5QixXQUFLLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7S0FDNUIsTUFBTSxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFO0FBQ3JELFdBQUssR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztLQUM1QjtBQUNELFFBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7O0FBRWhCLFlBQVEsQ0FBQyxHQUFHLE1BQUEsQ0FBWixRQUFRLEVBQVMsSUFBSSxDQUFDLENBQUM7R0FDeEIsQ0FBQyxDQUFDO0NBQ0oiLCJmaWxlIjoibG9nLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2xvZycsIGZ1bmN0aW9uKC8qIG1lc3NhZ2UsIG9wdGlvbnMgKi8pIHtcbiAgICBsZXQgYXJncyA9IFt1bmRlZmluZWRdLFxuICAgICAgICBvcHRpb25zID0gYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGggLSAxXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgIGFyZ3MucHVzaChhcmd1bWVudHNbaV0pO1xuICAgIH1cblxuICAgIGxldCBsZXZlbCA9IDE7XG4gICAgaWYgKG9wdGlvbnMuaGFzaC5sZXZlbCAhPSBudWxsKSB7XG4gICAgICBsZXZlbCA9IG9wdGlvbnMuaGFzaC5sZXZlbDtcbiAgICB9IGVsc2UgaWYgKG9wdGlvbnMuZGF0YSAmJiBvcHRpb25zLmRhdGEubGV2ZWwgIT0gbnVsbCkge1xuICAgICAgbGV2ZWwgPSBvcHRpb25zLmRhdGEubGV2ZWw7XG4gICAgfVxuICAgIGFyZ3NbMF0gPSBsZXZlbDtcblxuICAgIGluc3RhbmNlLmxvZyguLi4gYXJncyk7XG4gIH0pO1xufVxuIl19 |
| 1 | 'use strict'; | ||
| 2 | |||
| 3 | exports.__esModule = true; | ||
| 4 | |||
| 5 | exports['default'] = function (instance) { | ||
| 6 | instance.registerHelper('lookup', function (obj, field) { | ||
| 7 | return obj && obj[field]; | ||
| 8 | }); | ||
| 9 | }; | ||
| 10 | |||
| 11 | module.exports = exports['default']; | ||
| 12 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvbG9va3VwLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQWUsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsVUFBUyxHQUFHLEVBQUUsS0FBSyxFQUFFO0FBQ3JELFdBQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztHQUMxQixDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJsb29rdXAuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihpbnN0YW5jZSkge1xuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignbG9va3VwJywgZnVuY3Rpb24ob2JqLCBmaWVsZCkge1xuICAgIHJldHVybiBvYmogJiYgb2JqW2ZpZWxkXTtcbiAgfSk7XG59XG4iXX0= |
| 1 | 'use strict'; | ||
| 2 | |||
| 3 | exports.__esModule = true; | ||
| 4 | |||
| 5 | var _utils = require('../utils'); | ||
| 6 | |||
| 7 | exports['default'] = function (instance) { | ||
| 8 | instance.registerHelper('with', function (context, options) { | ||
| 9 | if (_utils.isFunction(context)) { | ||
| 10 | context = context.call(this); | ||
| 11 | } | ||
| 12 | |||
| 13 | var fn = options.fn; | ||
| 14 | |||
| 15 | if (!_utils.isEmpty(context)) { | ||
| 16 | var data = options.data; | ||
| 17 | if (options.data && options.ids) { | ||
| 18 | data = _utils.createFrame(options.data); | ||
| 19 | data.contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]); | ||
| 20 | } | ||
| 21 | |||
| 22 | return fn(context, { | ||
| 23 | data: data, | ||
| 24 | blockParams: _utils.blockParams([context], [data && data.contextPath]) | ||
| 25 | }); | ||
| 26 | } else { | ||
| 27 | return options.inverse(this); | ||
| 28 | } | ||
| 29 | }); | ||
| 30 | }; | ||
| 31 | |||
| 32 | module.exports = exports['default']; | ||
| 33 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvd2l0aC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O3FCQUErRSxVQUFVOztxQkFFMUUsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsVUFBUyxPQUFPLEVBQUUsT0FBTyxFQUFFO0FBQ3pELFFBQUksa0JBQVcsT0FBTyxDQUFDLEVBQUU7QUFBRSxhQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUFFOztBQUUxRCxRQUFJLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDOztBQUVwQixRQUFJLENBQUMsZUFBUSxPQUFPLENBQUMsRUFBRTtBQUNyQixVQUFJLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO0FBQ3hCLFVBQUksT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFO0FBQy9CLFlBQUksR0FBRyxtQkFBWSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDakMsWUFBSSxDQUFDLFdBQVcsR0FBRyx5QkFBa0IsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO09BQ2hGOztBQUVELGFBQU8sRUFBRSxDQUFDLE9BQU8sRUFBRTtBQUNqQixZQUFJLEVBQUUsSUFBSTtBQUNWLG1CQUFXLEVBQUUsbUJBQVksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7T0FDaEUsQ0FBQyxDQUFDO0tBQ0osTUFBTTtBQUNMLGFBQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUM5QjtHQUNGLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6IndpdGguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2FwcGVuZENvbnRleHRQYXRoLCBibG9ja1BhcmFtcywgY3JlYXRlRnJhbWUsIGlzRW1wdHksIGlzRnVuY3Rpb259IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ3dpdGgnLCBmdW5jdGlvbihjb250ZXh0LCBvcHRpb25zKSB7XG4gICAgaWYgKGlzRnVuY3Rpb24oY29udGV4dCkpIHsgY29udGV4dCA9IGNvbnRleHQuY2FsbCh0aGlzKTsgfVxuXG4gICAgbGV0IGZuID0gb3B0aW9ucy5mbjtcblxuICAgIGlmICghaXNFbXB0eShjb250ZXh0KSkge1xuICAgICAgbGV0IGRhdGEgPSBvcHRpb25zLmRhdGE7XG4gICAgICBpZiAob3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuaWRzKSB7XG4gICAgICAgIGRhdGEgPSBjcmVhdGVGcmFtZShvcHRpb25zLmRhdGEpO1xuICAgICAgICBkYXRhLmNvbnRleHRQYXRoID0gYXBwZW5kQ29udGV4dFBhdGgob3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoLCBvcHRpb25zLmlkc1swXSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmbihjb250ZXh0LCB7XG4gICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgIGJsb2NrUGFyYW1zOiBibG9ja1BhcmFtcyhbY29udGV4dF0sIFtkYXRhICYmIGRhdGEuY29udGV4dFBhdGhdKVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBvcHRpb25zLmludmVyc2UodGhpcyk7XG4gICAgfVxuICB9KTtcbn1cbiJdfQ== |
| 1 | 'use strict'; | ||
| 2 | |||
| 3 | exports.__esModule = true; | ||
| 4 | |||
| 5 | var _utils = require('./utils'); | ||
| 6 | |||
| 7 | var logger = { | ||
| 8 | methodMap: ['debug', 'info', 'warn', 'error'], | ||
| 9 | level: 'info', | ||
| 10 | |||
| 11 | // Maps a given level value to the `methodMap` indexes above. | ||
| 12 | lookupLevel: function lookupLevel(level) { | ||
| 13 | if (typeof level === 'string') { | ||
| 14 | var levelMap = _utils.indexOf(logger.methodMap, level.toLowerCase()); | ||
| 15 | if (levelMap >= 0) { | ||
| 16 | level = levelMap; | ||
| 17 | } else { | ||
| 18 | level = parseInt(level, 10); | ||
| 19 | } | ||
| 20 | } | ||
| 21 | |||
| 22 | return level; | ||
| 23 | }, | ||
| 24 | |||
| 25 | // Can be overridden in the host environment | ||
| 26 | log: function log(level) { | ||
| 27 | level = logger.lookupLevel(level); | ||
| 28 | |||
| 29 | if (typeof console !== 'undefined' && logger.lookupLevel(logger.level) <= level) { | ||
| 30 | var method = logger.methodMap[level]; | ||
| 31 | if (!console[method]) { | ||
| 32 | // eslint-disable-line no-console | ||
| 33 | method = 'log'; | ||
| 34 | } | ||
| 35 | |||
| 36 | for (var _len = arguments.length, message = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { | ||
| 37 | message[_key - 1] = arguments[_key]; | ||
| 38 | } | ||
| 39 | |||
| 40 | console[method].apply(console, message); // eslint-disable-line no-console | ||
| 41 | } | ||
| 42 | } | ||
| 43 | }; | ||
| 44 | |||
| 45 | exports['default'] = logger; | ||
| 46 | module.exports = exports['default']; | ||
| 47 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2xvZ2dlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O3FCQUFzQixTQUFTOztBQUUvQixJQUFJLE1BQU0sR0FBRztBQUNYLFdBQVMsRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQztBQUM3QyxPQUFLLEVBQUUsTUFBTTs7O0FBR2IsYUFBVyxFQUFFLHFCQUFTLEtBQUssRUFBRTtBQUMzQixRQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtBQUM3QixVQUFJLFFBQVEsR0FBRyxlQUFRLE1BQU0sQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7QUFDOUQsVUFBSSxRQUFRLElBQUksQ0FBQyxFQUFFO0FBQ2pCLGFBQUssR0FBRyxRQUFRLENBQUM7T0FDbEIsTUFBTTtBQUNMLGFBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO09BQzdCO0tBQ0Y7O0FBRUQsV0FBTyxLQUFLLENBQUM7R0FDZDs7O0FBR0QsS0FBRyxFQUFFLGFBQVMsS0FBSyxFQUFjO0FBQy9CLFNBQUssR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDOztBQUVsQyxRQUFJLE9BQU8sT0FBTyxLQUFLLFdBQVcsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLEVBQUU7QUFDL0UsVUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNyQyxVQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFOztBQUNwQixjQUFNLEdBQUcsS0FBSyxDQUFDO09BQ2hCOzt3Q0FQbUIsT0FBTztBQUFQLGVBQU87OztBQVEzQixhQUFPLENBQUMsTUFBTSxPQUFDLENBQWYsT0FBTyxFQUFZLE9BQU8sQ0FBQyxDQUFDO0tBQzdCO0dBQ0Y7Q0FDRixDQUFDOztxQkFFYSxNQUFNIiwiZmlsZSI6ImxvZ2dlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aW5kZXhPZn0gZnJvbSAnLi91dGlscyc7XG5cbmxldCBsb2dnZXIgPSB7XG4gIG1ldGhvZE1hcDogWydkZWJ1ZycsICdpbmZvJywgJ3dhcm4nLCAnZXJyb3InXSxcbiAgbGV2ZWw6ICdpbmZvJyxcblxuICAvLyBNYXBzIGEgZ2l2ZW4gbGV2ZWwgdmFsdWUgdG8gdGhlIGBtZXRob2RNYXBgIGluZGV4ZXMgYWJvdmUuXG4gIGxvb2t1cExldmVsOiBmdW5jdGlvbihsZXZlbCkge1xuICAgIGlmICh0eXBlb2YgbGV2ZWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICBsZXQgbGV2ZWxNYXAgPSBpbmRleE9mKGxvZ2dlci5tZXRob2RNYXAsIGxldmVsLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgaWYgKGxldmVsTWFwID49IDApIHtcbiAgICAgICAgbGV2ZWwgPSBsZXZlbE1hcDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldmVsID0gcGFyc2VJbnQobGV2ZWwsIDEwKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbGV2ZWw7XG4gIH0sXG5cbiAgLy8gQ2FuIGJlIG92ZXJyaWRkZW4gaW4gdGhlIGhvc3QgZW52aXJvbm1lbnRcbiAgbG9nOiBmdW5jdGlvbihsZXZlbCwgLi4ubWVzc2FnZSkge1xuICAgIGxldmVsID0gbG9nZ2VyLmxvb2t1cExldmVsKGxldmVsKTtcblxuICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbG9nZ2VyLmxvb2t1cExldmVsKGxvZ2dlci5sZXZlbCkgPD0gbGV2ZWwpIHtcbiAgICAgIGxldCBtZXRob2QgPSBsb2dnZXIubWV0aG9kTWFwW2xldmVsXTtcbiAgICAgIGlmICghY29uc29sZVttZXRob2RdKSB7ICAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG4gICAgICAgIG1ldGhvZCA9ICdsb2cnO1xuICAgICAgfVxuICAgICAgY29uc29sZVttZXRob2RdKC4uLm1lc3NhZ2UpOyAgICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGVcbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IGxvZ2dlcjtcbiJdfQ== |
| 1 | /* global window */ | ||
| 2 | 'use strict'; | ||
| 3 | |||
| 4 | exports.__esModule = true; | ||
| 5 | |||
| 6 | exports['default'] = function (Handlebars) { | ||
| 7 | /* istanbul ignore next */ | ||
| 8 | var root = typeof global !== 'undefined' ? global : window, | ||
| 9 | $Handlebars = root.Handlebars; | ||
| 10 | /* istanbul ignore next */ | ||
| 11 | Handlebars.noConflict = function () { | ||
| 12 | if (root.Handlebars === Handlebars) { | ||
| 13 | root.Handlebars = $Handlebars; | ||
| 14 | } | ||
| 15 | return Handlebars; | ||
| 16 | }; | ||
| 17 | }; | ||
| 18 | |||
| 19 | module.exports = exports['default']; | ||
| 20 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL25vLWNvbmZsaWN0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O3FCQUNlLFVBQVMsVUFBVSxFQUFFOztBQUVsQyxNQUFJLElBQUksR0FBRyxPQUFPLE1BQU0sS0FBSyxXQUFXLEdBQUcsTUFBTSxHQUFHLE1BQU07TUFDdEQsV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7O0FBRWxDLFlBQVUsQ0FBQyxVQUFVLEdBQUcsWUFBVztBQUNqQyxRQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssVUFBVSxFQUFFO0FBQ2xDLFVBQUksQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDO0tBQy9CO0FBQ0QsV0FBTyxVQUFVLENBQUM7R0FDbkIsQ0FBQztDQUNIIiwiZmlsZSI6Im5vLWNvbmZsaWN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogZ2xvYmFsIHdpbmRvdyAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oSGFuZGxlYmFycykge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBsZXQgcm9vdCA9IHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnID8gZ2xvYmFsIDogd2luZG93LFxuICAgICAgJEhhbmRsZWJhcnMgPSByb290LkhhbmRsZWJhcnM7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIEhhbmRsZWJhcnMubm9Db25mbGljdCA9IGZ1bmN0aW9uKCkge1xuICAgIGlmIChyb290LkhhbmRsZWJhcnMgPT09IEhhbmRsZWJhcnMpIHtcbiAgICAgIHJvb3QuSGFuZGxlYmFycyA9ICRIYW5kbGViYXJzO1xuICAgIH1cbiAgICByZXR1cm4gSGFuZGxlYmFycztcbiAgfTtcbn1cbiJdfQ== |
| 1 | 'use strict'; | ||
| 2 | |||
| 3 | exports.__esModule = true; | ||
| 4 | exports.checkRevision = checkRevision; | ||
| 5 | exports.template = template; | ||
| 6 | exports.wrapProgram = wrapProgram; | ||
| 7 | exports.resolvePartial = resolvePartial; | ||
| 8 | exports.invokePartial = invokePartial; | ||
| 9 | exports.noop = noop; | ||
| 10 | // istanbul ignore next | ||
| 11 | |||
| 12 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } | ||
| 13 | |||
| 14 | // istanbul ignore next | ||
| 15 | |||
| 16 | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } } | ||
| 17 | |||
| 18 | var _utils = require('./utils'); | ||
| 19 | |||
| 20 | var Utils = _interopRequireWildcard(_utils); | ||
| 21 | |||
| 22 | var _exception = require('./exception'); | ||
| 23 | |||
| 24 | var _exception2 = _interopRequireDefault(_exception); | ||
| 25 | |||
| 26 | var _base = require('./base'); | ||
| 27 | |||
| 28 | function checkRevision(compilerInfo) { | ||
| 29 | var compilerRevision = compilerInfo && compilerInfo[0] || 1, | ||
| 30 | currentRevision = _base.COMPILER_REVISION; | ||
| 31 | |||
| 32 | if (compilerRevision !== currentRevision) { | ||
| 33 | if (compilerRevision < currentRevision) { | ||
| 34 | var runtimeVersions = _base.REVISION_CHANGES[currentRevision], | ||
| 35 | compilerVersions = _base.REVISION_CHANGES[compilerRevision]; | ||
| 36 | throw new _exception2['default']('Template was precompiled with an older version of Handlebars than the current runtime. ' + 'Please update your precompiler to a newer version (' + runtimeVersions + ') or downgrade your runtime to an older version (' + compilerVersions + ').'); | ||
| 37 | } else { | ||
| 38 | // Use the embedded version info since the runtime doesn't know about this revision yet | ||
| 39 | throw new _exception2['default']('Template was precompiled with a newer version of Handlebars than the current runtime. ' + 'Please update your runtime to a newer version (' + compilerInfo[1] + ').'); | ||
| 40 | } | ||
| 41 | } | ||
| 42 | } | ||
| 43 | |||
| 44 | function template(templateSpec, env) { | ||
| 45 | /* istanbul ignore next */ | ||
| 46 | if (!env) { | ||
| 47 | throw new _exception2['default']('No environment passed to template'); | ||
| 48 | } | ||
| 49 | if (!templateSpec || !templateSpec.main) { | ||
| 50 | throw new _exception2['default']('Unknown template object: ' + typeof templateSpec); | ||
| 51 | } | ||
| 52 | |||
| 53 | templateSpec.main.decorator = templateSpec.main_d; | ||
| 54 | |||
| 55 | // Note: Using env.VM references rather than local var references throughout this section to allow | ||
| 56 | // for external users to override these as psuedo-supported APIs. | ||
| 57 | env.VM.checkRevision(templateSpec.compiler); | ||
| 58 | |||
| 59 | function invokePartialWrapper(partial, context, options) { | ||
| 60 | if (options.hash) { | ||
| 61 | context = Utils.extend({}, context, options.hash); | ||
| 62 | if (options.ids) { | ||
| 63 | options.ids[0] = true; | ||
| 64 | } | ||
| 65 | } | ||
| 66 | |||
| 67 | partial = env.VM.resolvePartial.call(this, partial, context, options); | ||
| 68 | var result = env.VM.invokePartial.call(this, partial, context, options); | ||
| 69 | |||
| 70 | if (result == null && env.compile) { | ||
| 71 | options.partials[options.name] = env.compile(partial, templateSpec.compilerOptions, env); | ||
| 72 | result = options.partials[options.name](context, options); | ||
| 73 | } | ||
| 74 | if (result != null) { | ||
| 75 | if (options.indent) { | ||
| 76 | var lines = result.split('\n'); | ||
| 77 | for (var i = 0, l = lines.length; i < l; i++) { | ||
| 78 | if (!lines[i] && i + 1 === l) { | ||
| 79 | break; | ||
| 80 | } | ||
| 81 | |||
| 82 | lines[i] = options.indent + lines[i]; | ||
| 83 | } | ||
| 84 | result = lines.join('\n'); | ||
| 85 | } | ||
| 86 | return result; | ||
| 87 | } else { | ||
| 88 | throw new _exception2['default']('The partial ' + options.name + ' could not be compiled when running in runtime-only mode'); | ||
| 89 | } | ||
| 90 | } | ||
| 91 | |||
| 92 | // Just add water | ||
| 93 | var container = { | ||
| 94 | strict: function strict(obj, name) { | ||
| 95 | if (!(name in obj)) { | ||
| 96 | throw new _exception2['default']('"' + name + '" not defined in ' + obj); | ||
| 97 | } | ||
| 98 | return obj[name]; | ||
| 99 | }, | ||
| 100 | lookup: function lookup(depths, name) { | ||
| 101 | var len = depths.length; | ||
| 102 | for (var i = 0; i < len; i++) { | ||
| 103 | if (depths[i] && depths[i][name] != null) { | ||
| 104 | return depths[i][name]; | ||
| 105 | } | ||
| 106 | } | ||
| 107 | }, | ||
| 108 | lambda: function lambda(current, context) { | ||
| 109 | return typeof current === 'function' ? current.call(context) : current; | ||
| 110 | }, | ||
| 111 | |||
| 112 | escapeExpression: Utils.escapeExpression, | ||
| 113 | invokePartial: invokePartialWrapper, | ||
| 114 | |||
| 115 | fn: function fn(i) { | ||
| 116 | var ret = templateSpec[i]; | ||
| 117 | ret.decorator = templateSpec[i + '_d']; | ||
| 118 | return ret; | ||
| 119 | }, | ||
| 120 | |||
| 121 | programs: [], | ||
| 122 | program: function program(i, data, declaredBlockParams, blockParams, depths) { | ||
| 123 | var programWrapper = this.programs[i], | ||
| 124 | fn = this.fn(i); | ||
| 125 | if (data || depths || blockParams || declaredBlockParams) { | ||
| 126 | programWrapper = wrapProgram(this, i, fn, data, declaredBlockParams, blockParams, depths); | ||
| 127 | } else if (!programWrapper) { | ||
| 128 | programWrapper = this.programs[i] = wrapProgram(this, i, fn); | ||
| 129 | } | ||
| 130 | return programWrapper; | ||
| 131 | }, | ||
| 132 | |||
| 133 | data: function data(value, depth) { | ||
| 134 | while (value && depth--) { | ||
| 135 | value = value._parent; | ||
| 136 | } | ||
| 137 | return value; | ||
| 138 | }, | ||
| 139 | merge: function merge(param, common) { | ||
| 140 | var obj = param || common; | ||
| 141 | |||
| 142 | if (param && common && param !== common) { | ||
| 143 | obj = Utils.extend({}, common, param); | ||
| 144 | } | ||
| 145 | |||
| 146 | return obj; | ||
| 147 | }, | ||
| 148 | // An empty object to use as replacement for null-contexts | ||
| 149 | nullContext: Object.seal({}), | ||
| 150 | |||
| 151 | noop: env.VM.noop, | ||
| 152 | compilerInfo: templateSpec.compiler | ||
| 153 | }; | ||
| 154 | |||
| 155 | function ret(context) { | ||
| 156 | var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; | ||
| 157 | |||
| 158 | var data = options.data; | ||
| 159 | |||
| 160 | ret._setup(options); | ||
| 161 | if (!options.partial && templateSpec.useData) { | ||
| 162 | data = initData(context, data); | ||
| 163 | } | ||
| 164 | var depths = undefined, | ||
| 165 | blockParams = templateSpec.useBlockParams ? [] : undefined; | ||
| 166 | if (templateSpec.useDepths) { | ||
| 167 | if (options.depths) { | ||
| 168 | depths = context != options.depths[0] ? [context].concat(options.depths) : options.depths; | ||
| 169 | } else { | ||
| 170 | depths = [context]; | ||
| 171 | } | ||
| 172 | } | ||
| 173 | |||
| 174 | function main(context /*, options*/) { | ||
| 175 | return '' + templateSpec.main(container, context, container.helpers, container.partials, data, blockParams, depths); | ||
| 176 | } | ||
| 177 | main = executeDecorators(templateSpec.main, main, container, options.depths || [], data, blockParams); | ||
| 178 | return main(context, options); | ||
| 179 | } | ||
| 180 | ret.isTop = true; | ||
| 181 | |||
| 182 | ret._setup = function (options) { | ||
| 183 | if (!options.partial) { | ||
| 184 | container.helpers = container.merge(options.helpers, env.helpers); | ||
| 185 | |||
| 186 | if (templateSpec.usePartial) { | ||
| 187 | container.partials = container.merge(options.partials, env.partials); | ||
| 188 | } | ||
| 189 | if (templateSpec.usePartial || templateSpec.useDecorators) { | ||
| 190 | container.decorators = container.merge(options.decorators, env.decorators); | ||
| 191 | } | ||
| 192 | } else { | ||
| 193 | container.helpers = options.helpers; | ||
| 194 | container.partials = options.partials; | ||
| 195 | container.decorators = options.decorators; | ||
| 196 | } | ||
| 197 | }; | ||
| 198 | |||
| 199 | ret._child = function (i, data, blockParams, depths) { | ||
| 200 | if (templateSpec.useBlockParams && !blockParams) { | ||
| 201 | throw new _exception2['default']('must pass block params'); | ||
| 202 | } | ||
| 203 | if (templateSpec.useDepths && !depths) { | ||
| 204 | throw new _exception2['default']('must pass parent depths'); | ||
| 205 | } | ||
| 206 | |||
| 207 | return wrapProgram(container, i, templateSpec[i], data, 0, blockParams, depths); | ||
| 208 | }; | ||
| 209 | return ret; | ||
| 210 | } | ||
| 211 | |||
| 212 | function wrapProgram(container, i, fn, data, declaredBlockParams, blockParams, depths) { | ||
| 213 | function prog(context) { | ||
| 214 | var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; | ||
| 215 | |||
| 216 | var currentDepths = depths; | ||
| 217 | if (depths && context != depths[0] && !(context === container.nullContext && depths[0] === null)) { | ||
| 218 | currentDepths = [context].concat(depths); | ||
| 219 | } | ||
| 220 | |||
| 221 | return fn(container, context, container.helpers, container.partials, options.data || data, blockParams && [options.blockParams].concat(blockParams), currentDepths); | ||
| 222 | } | ||
| 223 | |||
| 224 | prog = executeDecorators(fn, prog, container, depths, data, blockParams); | ||
| 225 | |||
| 226 | prog.program = i; | ||
| 227 | prog.depth = depths ? depths.length : 0; | ||
| 228 | prog.blockParams = declaredBlockParams || 0; | ||
| 229 | return prog; | ||
| 230 | } | ||
| 231 | |||
| 232 | function resolvePartial(partial, context, options) { | ||
| 233 | if (!partial) { | ||
| 234 | if (options.name === '@partial-block') { | ||
| 235 | partial = options.data['partial-block']; | ||
| 236 | } else { | ||
| 237 | partial = options.partials[options.name]; | ||
| 238 | } | ||
| 239 | } else if (!partial.call && !options.name) { | ||
| 240 | // This is a dynamic partial that returned a string | ||
| 241 | options.name = partial; | ||
| 242 | partial = options.partials[partial]; | ||
| 243 | } | ||
| 244 | return partial; | ||
| 245 | } | ||
| 246 | |||
| 247 | function invokePartial(partial, context, options) { | ||
| 248 | // Use the current closure context to save the partial-block if this partial | ||
| 249 | var currentPartialBlock = options.data && options.data['partial-block']; | ||
| 250 | options.partial = true; | ||
| 251 | if (options.ids) { | ||
| 252 | options.data.contextPath = options.ids[0] || options.data.contextPath; | ||
| 253 | } | ||
| 254 | |||
| 255 | var partialBlock = undefined; | ||
| 256 | if (options.fn && options.fn !== noop) { | ||
| 257 | (function () { | ||
| 258 | options.data = _base.createFrame(options.data); | ||
| 259 | // Wrapper function to get access to currentPartialBlock from the closure | ||
| 260 | var fn = options.fn; | ||
| 261 | partialBlock = options.data['partial-block'] = function partialBlockWrapper(context) { | ||
| 262 | var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; | ||
| 263 | |||
| 264 | // Restore the partial-block from the closure for the execution of the block | ||
| 265 | // i.e. the part inside the block of the partial call. | ||
| 266 | options.data = _base.createFrame(options.data); | ||
| 267 | options.data['partial-block'] = currentPartialBlock; | ||
| 268 | return fn(context, options); | ||
| 269 | }; | ||
| 270 | if (fn.partials) { | ||
| 271 | options.partials = Utils.extend({}, options.partials, fn.partials); | ||
| 272 | } | ||
| 273 | })(); | ||
| 274 | } | ||
| 275 | |||
| 276 | if (partial === undefined && partialBlock) { | ||
| 277 | partial = partialBlock; | ||
| 278 | } | ||
| 279 | |||
| 280 | if (partial === undefined) { | ||
| 281 | throw new _exception2['default']('The partial ' + options.name + ' could not be found'); | ||
| 282 | } else if (partial instanceof Function) { | ||
| 283 | return partial(context, options); | ||
| 284 | } | ||
| 285 | } | ||
| 286 | |||
| 287 | function noop() { | ||
| 288 | return ''; | ||
| 289 | } | ||
| 290 | |||
| 291 | function initData(context, data) { | ||
| 292 | if (!data || !('root' in data)) { | ||
| 293 | data = data ? _base.createFrame(data) : {}; | ||
| 294 | data.root = context; | ||
| 295 | } | ||
| 296 | return data; | ||
| 297 | } | ||
| 298 | |||
| 299 | function executeDecorators(fn, prog, container, depths, data, blockParams) { | ||
| 300 | if (fn.decorator) { | ||
| 301 | var props = {}; | ||
| 302 | prog = fn.decorator(prog, props, container, depths && depths[0], data, blockParams, depths); | ||
| 303 | Utils.extend(prog, props); | ||
| 304 | } | ||
| 305 | return prog; | ||
| 306 | } | ||
| 307 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3J1bnRpbWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7cUJBQXVCLFNBQVM7O0lBQXBCLEtBQUs7O3lCQUNLLGFBQWE7Ozs7b0JBQzhCLFFBQVE7O0FBRWxFLFNBQVMsYUFBYSxDQUFDLFlBQVksRUFBRTtBQUMxQyxNQUFNLGdCQUFnQixHQUFHLFlBQVksSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztNQUN2RCxlQUFlLDBCQUFvQixDQUFDOztBQUUxQyxNQUFJLGdCQUFnQixLQUFLLGVBQWUsRUFBRTtBQUN4QyxRQUFJLGdCQUFnQixHQUFHLGVBQWUsRUFBRTtBQUN0QyxVQUFNLGVBQWUsR0FBRyx1QkFBaUIsZUFBZSxDQUFDO1VBQ25ELGdCQUFnQixHQUFHLHVCQUFpQixnQkFBZ0IsQ0FBQyxDQUFDO0FBQzVELFlBQU0sMkJBQWMseUZBQXlGLEdBQ3ZHLHFEQUFxRCxHQUFHLGVBQWUsR0FBRyxtREFBbUQsR0FBRyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsQ0FBQztLQUNoSyxNQUFNOztBQUVMLFlBQU0sMkJBQWMsd0ZBQXdGLEdBQ3RHLGlEQUFpRCxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztLQUNuRjtHQUNGO0NBQ0Y7O0FBRU0sU0FBUyxRQUFRLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRTs7QUFFMUMsTUFBSSxDQUFDLEdBQUcsRUFBRTtBQUNSLFVBQU0sMkJBQWMsbUNBQW1DLENBQUMsQ0FBQztHQUMxRDtBQUNELE1BQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFO0FBQ3ZDLFVBQU0sMkJBQWMsMkJBQTJCLEdBQUcsT0FBTyxZQUFZLENBQUMsQ0FBQztHQUN4RTs7QUFFRCxjQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDOzs7O0FBSWxELEtBQUcs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QUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDNUYsU0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7R0FDM0I7QUFDRCxTQUFPLElBQUksQ0FBQztDQUNiIiwiZmlsZSI6InJ1bnRpbWUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBVdGlscyBmcm9tICcuL3V0aWxzJztcbmltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi9leGNlcHRpb24nO1xuaW1wb3J0IHsgQ09NUElMRVJfUkVWSVNJT04sIFJFVklTSU9OX0NIQU5HRVMsIGNyZWF0ZUZyYW1lIH0gZnJvbSAnLi9iYXNlJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrUmV2aXNpb24oY29tcGlsZXJJbmZvKSB7XG4gIGNvbnN0IGNvbXBpbGVyUmV2aXNpb24gPSBjb21waWxlckluZm8gJiYgY29tcGlsZXJJbmZvWzBdIHx8IDEsXG4gICAgICAgIGN1cnJlbnRSZXZpc2lvbiA9IENPTVBJTEVSX1JFVklTSU9OO1xuXG4gIGlmIChjb21waWxlclJldmlzaW9uICE9PSBjdXJyZW50UmV2aXNpb24pIHtcbiAgICBpZiAoY29tcGlsZXJSZXZpc2lvbiA8IGN1cnJlbnRSZXZpc2lvbikge1xuICAgICAgY29uc3QgcnVudGltZVZlcnNpb25zID0gUkVWSVNJT05fQ0hBTkdFU1tjdXJyZW50UmV2aXNpb25dLFxuICAgICAgICAgICAgY29tcGlsZXJWZXJzaW9ucyA9IFJFVklTSU9OX0NIQU5HRVNbY29tcGlsZXJSZXZpc2lvbl07XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdUZW1wbGF0ZSB3YXMgcHJlY29tcGlsZWQgd2l0aCBhbiBvbGRlciB2ZXJzaW9uIG9mIEhhbmRsZWJhcnMgdGhhbiB0aGUgY3VycmVudCBydW50aW1lLiAnICtcbiAgICAgICAgICAgICdQbGVhc2UgdXBkYXRlIHlvdXIgcHJlY29tcGlsZXIgdG8gYSBuZXdlciB2ZXJzaW9uICgnICsgcnVudGltZVZlcnNpb25zICsgJykgb3IgZG93bmdyYWRlIHlvdXIgcnVudGltZSB0byBhbiBvbGRlciB2ZXJzaW9uICgnICsgY29tcGlsZXJWZXJzaW9ucyArICcpLicpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBVc2UgdGhlIGVtYmVkZGVkIHZlcnNpb24gaW5mbyBzaW5jZSB0aGUgcnVudGltZSBkb2Vzbid0IGtub3cgYWJvdXQgdGhpcyByZXZpc2lvbiB5ZXRcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ1RlbXBsYXRlIHdhcyBwcmVjb21waWxlZCB3aXRoIGEgbmV3ZXIgdmVyc2lvbiBvZiBIYW5kbGViYXJzIHRoYW4gdGhlIGN1cnJlbnQgcnVudGltZS4gJyArXG4gICAgICAgICAgICAnUGxlYXNlIHVwZGF0ZSB5b3VyIHJ1bnRpbWUgdG8gYSBuZXdlciB2ZXJzaW9uICgnICsgY29tcGlsZXJJbmZvWzFdICsgJykuJyk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZW1wbGF0ZSh0ZW1wbGF0ZVNwZWMsIGVudikge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBpZiAoIWVudikge1xuICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ05vIGVudmlyb25tZW50IHBhc3NlZCB0byB0ZW1wbGF0ZScpO1xuICB9XG4gIGlmICghdGVtcGxhdGVTcGVjIHx8ICF0ZW1wbGF0ZVNwZWMubWFpbikge1xuICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ1Vua25vd24gdGVtcGxhdGUgb2JqZWN0OiAnICsgdHlwZW9mIHRlbXBsYXRlU3BlYyk7XG4gIH1cblxuICB0ZW1wbGF0ZVNwZWMubWFpbi5kZWNvcmF0b3IgPSB0ZW1wbGF0ZVNwZWMubWFpbl9kO1xuXG4gIC8vIE5vdGU6IFVzaW5nIGVudi5WTSByZWZlcmVuY2VzIHJhdGhlciB0aGFuIGxvY2FsIHZhciByZWZlcmVuY2VzIHRocm91Z2hvdXQgdGhpcyBzZWN0aW9uIHRvIGFsbG93XG4gIC8vIGZvciBleHRlcm5hbCB1c2VycyB0byBvdmVycmlkZSB0aGVzZSBhcyBwc3VlZG8tc3VwcG9ydGVkIEFQSXMuXG4gIGVudi5WTS5jaGVja1JldmlzaW9uKHRlbXBsYXRlU3BlYy5jb21waWxlcik7XG5cbiAgZnVuY3Rpb24gaW52b2tlUGFydGlhbFdyYXBwZXIocGFydGlhbCwgY29udGV4dCwgb3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zLmhhc2gpIHtcbiAgICAgIGNvbnRleHQgPSBVdGlscy5leHRlbmQoe30sIGNvbnRleHQsIG9wdGlvbnMuaGFzaCk7XG4gICAgICBpZiAob3B0aW9ucy5pZHMpIHtcbiAgICAgICAgb3B0aW9ucy5pZHNbMF0gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHBhcnRpYWwgPSBlbnYuVk0ucmVzb2x2ZVBhcnRpYWwuY2FsbCh0aGlzLCBwYXJ0aWFsLCBjb250ZXh0LCBvcHRpb25zKTtcbiAgICBsZXQgcmVzdWx0ID0gZW52LlZNLmludm9rZVBhcnRpYWwuY2FsbCh0aGlzLCBwYXJ0aWFsLCBjb250ZXh0LCBvcHRpb25zKTtcblxuICAgIGlmIChyZXN1bHQgPT0gbnVsbCAmJiBlbnYuY29tcGlsZSkge1xuICAgICAgb3B0aW9ucy5wYXJ0aWFsc1tvcHRpb25zLm5hbWVdID0gZW52LmNvbXBpbGUocGFydGlhbCwgdGVtcGxhdGVTcGVjLmNvbXBpbGVyT3B0aW9ucywgZW52KTtcbiAgICAgIHJlc3VsdCA9IG9wdGlvbnMucGFydGlhbHNbb3B0aW9ucy5uYW1lXShjb250ZXh0LCBvcHRpb25zKTtcbiAgICB9XG4gICAgaWYgKHJlc3VsdCAhPSBudWxsKSB7XG4gICAgICBpZiAob3B0aW9ucy5pbmRlbnQpIHtcbiAgICAgICAgbGV0IGxpbmVzID0gcmVzdWx0LnNwbGl0KCdcXG4nKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSBsaW5lcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICBpZiAoIWxpbmVzW2ldICYmIGkgKyAxID09PSBsKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsaW5lc1tpXSA9IG9wdGlvbnMuaW5kZW50ICsgbGluZXNbaV07XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0ID0gbGluZXMuam9pbignXFxuJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdUaGUgcGFydGlhbCAnICsgb3B0aW9ucy5uYW1lICsgJyBjb3VsZCBub3QgYmUgY29tcGlsZWQgd2hlbiBydW5uaW5nIGluIHJ1bnRpbWUtb25seSBtb2RlJyk7XG4gICAgfVxuICB9XG5cbiAgLy8gSnVzdCBhZGQgd2F0ZXJcbiAgbGV0IGNvbnRhaW5lciA9IHtcbiAgICBzdHJpY3Q6IGZ1bmN0aW9uKG9iaiwgbmFtZSkge1xuICAgICAgaWYgKCEobmFtZSBpbiBvYmopKSB7XG4gICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ1wiJyArIG5hbWUgKyAnXCIgbm90IGRlZmluZWQgaW4gJyArIG9iaik7XG4gICAgICB9XG4gICAgICByZXR1cm4gb2JqW25hbWVdO1xuICAgIH0sXG4gICAgbG9va3VwOiBmdW5jdGlvbihkZXB0aHMsIG5hbWUpIHtcbiAgICAgIGNvbnN0IGxlbiA9IGRlcHRocy5sZW5ndGg7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIGlmIChkZXB0aHNbaV0gJiYgZGVwdGhzW2ldW25hbWVdICE9IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gZGVwdGhzW2ldW25hbWVdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBsYW1iZGE6IGZ1bmN0aW9uKGN1cnJlbnQsIGNvbnRleHQpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgY3VycmVudCA9PT0gJ2Z1bmN0aW9uJyA/IGN1cnJlbnQuY2FsbChjb250ZXh0KSA6IGN1cnJlbnQ7XG4gICAgfSxcblxuICAgIGVzY2FwZUV4cHJlc3Npb246IFV0aWxzLmVzY2FwZUV4cHJlc3Npb24sXG4gICAgaW52b2tlUGFydGlhbDogaW52b2tlUGFydGlhbFdyYXBwZXIsXG5cbiAgICBmbjogZnVuY3Rpb24oaSkge1xuICAgICAgbGV0IHJldCA9IHRlbXBsYXRlU3BlY1tpXTtcbiAgICAgIHJldC5kZWNvcmF0b3IgPSB0ZW1wbGF0ZVNwZWNbaSArICdfZCddO1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9LFxuXG4gICAgcHJvZ3JhbXM6IFtdLFxuICAgIHByb2dyYW06IGZ1bmN0aW9uKGksIGRhdGEsIGRlY2xhcmVkQmxvY2tQYXJhbXMsIGJsb2NrUGFyYW1zLCBkZXB0aHMpIHtcbiAgICAgIGxldCBwcm9ncmFtV3JhcHBlciA9IHRoaXMucHJvZ3JhbXNbaV0sXG4gICAgICAgICAgZm4gPSB0aGlzLmZuKGkpO1xuICAgICAgaWYgKGRhdGEgfHwgZGVwdGhzIHx8IGJsb2NrUGFyYW1zIHx8IGRlY2xhcmVkQmxvY2tQYXJhbXMpIHtcbiAgICAgICAgcHJvZ3JhbVdyYXBwZXIgPSB3cmFwUHJvZ3JhbSh0aGlzLCBpLCBmbiwgZGF0YSwgZGVjbGFyZWRCbG9ja1BhcmFtcywgYmxvY2tQYXJhbXMsIGRlcHRocyk7XG4gICAgICB9IGVsc2UgaWYgKCFwcm9ncmFtV3JhcHBlcikge1xuICAgICAgICBwcm9ncmFtV3JhcHBlciA9IHRoaXMucHJvZ3JhbXNbaV0gPSB3cmFwUHJvZ3JhbSh0aGlzLCBpLCBmbik7XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJvZ3JhbVdyYXBwZXI7XG4gICAgfSxcblxuICAgIGRhdGE6IGZ1bmN0aW9uKHZhbHVlLCBkZXB0aCkge1xuICAgICAgd2hpbGUgKHZhbHVlICYmIGRlcHRoLS0pIHtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS5fcGFyZW50O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0sXG4gICAgbWVyZ2U6IGZ1bmN0aW9uKHBhcmFtLCBjb21tb24pIHtcbiAgICAgIGxldCBvYmogPSBwYXJhbSB8fCBjb21tb247XG5cbiAgICAgIGlmIChwYXJhbSAmJiBjb21tb24gJiYgKHBhcmFtICE9PSBjb21tb24pKSB7XG4gICAgICAgIG9iaiA9IFV0aWxzLmV4dGVuZCh7fSwgY29tbW9uLCBwYXJhbSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvYmo7XG4gICAgfSxcbiAgICAvLyBBbiBlbXB0eSBvYmplY3QgdG8gdXNlIGFzIHJlcGxhY2VtZW50IGZvciBudWxsLWNvbnRleHRzXG4gICAgbnVsbENvbnRleHQ6IE9iamVjdC5zZWFsKHt9KSxcblxuICAgIG5vb3A6IGVudi5WTS5ub29wLFxuICAgIGNvbXBpbGVySW5mbzogdGVtcGxhdGVTcGVjLmNvbXBpbGVyXG4gIH07XG5cbiAgZnVuY3Rpb24gcmV0KGNvbnRleHQsIG9wdGlvbnMgPSB7fSkge1xuICAgIGxldCBkYXRhID0gb3B0aW9ucy5kYXRhO1xuXG4gICAgcmV0Ll9zZXR1cChvcHRpb25zKTtcbiAgICBpZiAoIW9wdGlvbnMucGFydGlhbCAmJiB0ZW1wbGF0ZVNwZWMudXNlRGF0YSkge1xuICAgICAgZGF0YSA9IGluaXREYXRhKGNvbnRleHQsIGRhdGEpO1xuICAgIH1cbiAgICBsZXQgZGVwdGhzLFxuICAgICAgICBibG9ja1BhcmFtcyA9IHRlbXBsYXRlU3BlYy51c2VCbG9ja1BhcmFtcyA/IFtdIDogdW5kZWZpbmVkO1xuICAgIGlmICh0ZW1wbGF0ZVNwZWMudXNlRGVwdGhzKSB7XG4gICAgICBpZiAob3B0aW9ucy5kZXB0aHMpIHtcbiAgICAgICAgZGVwdGhzID0gY29udGV4dCAhPSBvcHRpb25zLmRlcHRoc1swXSA/IFtjb250ZXh0XS5jb25jYXQob3B0aW9ucy5kZXB0aHMpIDogb3B0aW9ucy5kZXB0aHM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZXB0aHMgPSBbY29udGV4dF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWFpbihjb250ZXh0LyosIG9wdGlvbnMqLykge1xuICAgICAgcmV0dXJuICcnICsgdGVtcGxhdGVTcGVjLm1haW4oY29udGFpbmVyLCBjb250ZXh0LCBjb250YWluZXIuaGVscGVycywgY29udGFpbmVyLnBhcnRpYWxzLCBkYXRhLCBibG9ja1BhcmFtcywgZGVwdGhzKTtcbiAgICB9XG4gICAgbWFpbiA9IGV4ZWN1dGVEZWNvcmF0b3JzKHRlbXBsYXRlU3BlYy5tYWluLCBtYWluLCBjb250YWluZXIsIG9wdGlvbnMuZGVwdGhzIHx8IFtdLCBkYXRhLCBibG9ja1BhcmFtcyk7XG4gICAgcmV0dXJuIG1haW4oY29udGV4dCwgb3B0aW9ucyk7XG4gIH1cbiAgcmV0LmlzVG9wID0gdHJ1ZTtcblxuICByZXQuX3NldHVwID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIGlmICghb3B0aW9ucy5wYXJ0aWFsKSB7XG4gICAgICBjb250YWluZXIuaGVscGVycyA9IGNvbnRhaW5lci5tZXJnZShvcHRpb25zLmhlbHBlcnMsIGVudi5oZWxwZXJzKTtcblxuICAgICAgaWYgKHRlbXBsYXRlU3BlYy51c2VQYXJ0aWFsKSB7XG4gICAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IGNvbnRhaW5lci5tZXJnZShvcHRpb25zLnBhcnRpYWxzLCBlbnYucGFydGlhbHMpO1xuICAgICAgfVxuICAgICAgaWYgKHRlbXBsYXRlU3BlYy51c2VQYXJ0aWFsIHx8IHRlbXBsYXRlU3BlYy51c2VEZWNvcmF0b3JzKSB7XG4gICAgICAgIGNvbnRhaW5lci5kZWNvcmF0b3JzID0gY29udGFpbmVyLm1lcmdlKG9wdGlvbnMuZGVjb3JhdG9ycywgZW52LmRlY29yYXRvcnMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb250YWluZXIuaGVscGVycyA9IG9wdGlvbnMuaGVscGVycztcbiAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IG9wdGlvbnMucGFydGlhbHM7XG4gICAgICBjb250YWluZXIuZGVjb3JhdG9ycyA9IG9wdGlvbnMuZGVjb3JhdG9ycztcbiAgICB9XG4gIH07XG5cbiAgcmV0Ll9jaGlsZCA9IGZ1bmN0aW9uKGksIGRhdGEsIGJsb2NrUGFyYW1zLCBkZXB0aHMpIHtcbiAgICBpZiAodGVtcGxhdGVTcGVjLnVzZUJsb2NrUGFyYW1zICYmICFibG9ja1BhcmFtcykge1xuICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignbXVzdCBwYXNzIGJsb2NrIHBhcmFtcycpO1xuICAgIH1cbiAgICBpZiAodGVtcGxhdGVTcGVjLnVzZURlcHRocyAmJiAhZGVwdGhzKSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdtdXN0IHBhc3MgcGFyZW50IGRlcHRocycpO1xuICAgIH1cblxuICAgIHJldHVybiB3cmFwUHJvZ3JhbShjb250YWluZXIsIGksIHRlbXBsYXRlU3BlY1tpXSwgZGF0YSwgMCwgYmxvY2tQYXJhbXMsIGRlcHRocyk7XG4gIH07XG4gIHJldHVybiByZXQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cmFwUHJvZ3JhbShjb250YWluZXIsIGksIGZuLCBkYXRhLCBkZWNsYXJlZEJsb2NrUGFyYW1zLCBibG9ja1BhcmFtcywgZGVwdGhzKSB7XG4gIGZ1bmN0aW9uIHByb2coY29udGV4dCwgb3B0aW9ucyA9IHt9KSB7XG4gICAgbGV0IGN1cnJlbnREZXB0aHMgPSBkZXB0aHM7XG4gICAgaWYgKGRlcHRocyAmJiBjb250ZXh0ICE9IGRlcHRoc1swXSAmJiAhKGNvbnRleHQgPT09IGNvbnRhaW5lci5udWxsQ29udGV4dCAmJiBkZXB0aHNbMF0gPT09IG51bGwpKSB7XG4gICAgICBjdXJyZW50RGVwdGhzID0gW2NvbnRleHRdLmNvbmNhdChkZXB0aHMpO1xuICAgIH1cblxuICAgIHJldHVybiBmbihjb250YWluZXIsXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIGNvbnRhaW5lci5oZWxwZXJzLCBjb250YWluZXIucGFydGlhbHMsXG4gICAgICAgIG9wdGlvbnMuZGF0YSB8fCBkYXRhLFxuICAgICAgICBibG9ja1BhcmFtcyAmJiBbb3B0aW9ucy5ibG9ja1BhcmFtc10uY29uY2F0KGJsb2NrUGFyYW1zKSxcbiAgICAgICAgY3VycmVudERlcHRocyk7XG4gIH1cblxuICBwcm9nID0gZXhlY3V0ZURlY29yYXRvcnMoZm4sIHByb2csIGNvbnRhaW5lciwgZGVwdGhzLCBkYXRhLCBibG9ja1BhcmFtcyk7XG5cbiAgcHJvZy5wcm9ncmFtID0gaTtcbiAgcHJvZy5kZXB0aCA9IGRlcHRocyA/IGRlcHRocy5sZW5ndGggOiAwO1xuICBwcm9nLmJsb2NrUGFyYW1zID0gZGVjbGFyZWRCbG9ja1BhcmFtcyB8fCAwO1xuICByZXR1cm4gcHJvZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVQYXJ0aWFsKHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgaWYgKCFwYXJ0aWFsKSB7XG4gICAgaWYgKG9wdGlvbnMubmFtZSA9PT0gJ0BwYXJ0aWFsLWJsb2NrJykge1xuICAgICAgcGFydGlhbCA9IG9wdGlvbnMuZGF0YVsncGFydGlhbC1ibG9jayddO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJ0aWFsID0gb3B0aW9ucy5wYXJ0aWFsc1tvcHRpb25zLm5hbWVdO1xuICAgIH1cbiAgfSBlbHNlIGlmICghcGFydGlhbC5jYWxsICYmICFvcHRpb25zLm5hbWUpIHtcbiAgICAvLyBUaGlzIGlzIGEgZHluYW1pYyBwYXJ0aWFsIHRoYXQgcmV0dXJuZWQgYSBzdHJpbmdcbiAgICBvcHRpb25zLm5hbWUgPSBwYXJ0aWFsO1xuICAgIHBhcnRpYWwgPSBvcHRpb25zLnBhcnRpYWxzW3BhcnRpYWxdO1xuICB9XG4gIHJldHVybiBwYXJ0aWFsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlUGFydGlhbChwYXJ0aWFsLCBjb250ZXh0LCBvcHRpb25zKSB7XG4gIC8vIFVzZSB0aGUgY3VycmVudCBjbG9zdXJlIGNvbnRleHQgdG8gc2F2ZSB0aGUgcGFydGlhbC1ibG9jayBpZiB0aGlzIHBhcnRpYWxcbiAgY29uc3QgY3VycmVudFBhcnRpYWxCbG9jayA9IG9wdGlvbnMuZGF0YSAmJiBvcHRpb25zLmRhdGFbJ3BhcnRpYWwtYmxvY2snXTtcbiAgb3B0aW9ucy5wYXJ0aWFsID0gdHJ1ZTtcbiAgaWYgKG9wdGlvbnMuaWRzKSB7XG4gICAgb3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoID0gb3B0aW9ucy5pZHNbMF0gfHwgb3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoO1xuICB9XG5cbiAgbGV0IHBhcnRpYWxCbG9jaztcbiAgaWYgKG9wdGlvbnMuZm4gJiYgb3B0aW9ucy5mbiAhPT0gbm9vcCkge1xuICAgIG9wdGlvbnMuZGF0YSA9IGNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7XG4gICAgLy8gV3JhcHBlciBmdW5jdGlvbiB0byBnZXQgYWNjZXNzIHRvIGN1cnJlbnRQYXJ0aWFsQmxvY2sgZnJvbSB0aGUgY2xvc3VyZVxuICAgIGxldCBmbiA9IG9wdGlvbnMuZm47XG4gICAgcGFydGlhbEJsb2NrID0gb3B0aW9ucy5kYXRhWydwYXJ0aWFsLWJsb2NrJ10gPSBmdW5jdGlvbiBwYXJ0aWFsQmxvY2tXcmFwcGVyKGNvbnRleHQsIG9wdGlvbnMgPSB7fSkge1xuXG4gICAgICAvLyBSZXN0b3JlIHRoZSBwYXJ0aWFsLWJsb2NrIGZyb20gdGhlIGNsb3N1cmUgZm9yIHRoZSBleGVjdXRpb24gb2YgdGhlIGJsb2NrXG4gICAgICAvLyBpLmUuIHRoZSBwYXJ0IGluc2lkZSB0aGUgYmxvY2sgb2YgdGhlIHBhcnRpYWwgY2FsbC5cbiAgICAgIG9wdGlvbnMuZGF0YSA9IGNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7XG4gICAgICBvcHRpb25zLmRhdGFbJ3BhcnRpYWwtYmxvY2snXSA9IGN1cnJlbnRQYXJ0aWFsQmxvY2s7XG4gICAgICByZXR1cm4gZm4oY29udGV4dCwgb3B0aW9ucyk7XG4gICAgfTtcbiAgICBpZiAoZm4ucGFydGlhbHMpIHtcbiAgICAgIG9wdGlvbnMucGFydGlhbHMgPSBVdGlscy5leHRlbmQoe30sIG9wdGlvbnMucGFydGlhbHMsIGZuLnBhcnRpYWxzKTtcbiAgICB9XG4gIH1cblxuICBpZiAocGFydGlhbCA9PT0gdW5kZWZpbmVkICYmIHBhcnRpYWxCbG9jaykge1xuICAgIHBhcnRpYWwgPSBwYXJ0aWFsQmxvY2s7XG4gIH1cblxuICBpZiAocGFydGlhbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignVGhlIHBhcnRpYWwgJyArIG9wdGlvbnMubmFtZSArICcgY291bGQgbm90IGJlIGZvdW5kJyk7XG4gIH0gZWxzZSBpZiAocGFydGlhbCBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgcmV0dXJuIHBhcnRpYWwoY29udGV4dCwgb3B0aW9ucyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vb3AoKSB7IHJldHVybiAnJzsgfVxuXG5mdW5jdGlvbiBpbml0RGF0YShjb250ZXh0LCBkYXRhKSB7XG4gIGlmICghZGF0YSB8fCAhKCdyb290JyBpbiBkYXRhKSkge1xuICAgIGRhdGEgPSBkYXRhID8gY3JlYXRlRnJhbWUoZGF0YSkgOiB7fTtcbiAgICBkYXRhLnJvb3QgPSBjb250ZXh0O1xuICB9XG4gIHJldHVybiBkYXRhO1xufVxuXG5mdW5jdGlvbiBleGVjdXRlRGVjb3JhdG9ycyhmbiwgcHJvZywgY29udGFpbmVyLCBkZXB0aHMsIGRhdGEsIGJsb2NrUGFyYW1zKSB7XG4gIGlmIChmbi5kZWNvcmF0b3IpIHtcbiAgICBsZXQgcHJvcHMgPSB7fTtcbiAgICBwcm9nID0gZm4uZGVjb3JhdG9yKHByb2csIHByb3BzLCBjb250YWluZXIsIGRlcHRocyAmJiBkZXB0aHNbMF0sIGRhdGEsIGJsb2NrUGFyYW1zLCBkZXB0aHMpO1xuICAgIFV0aWxzLmV4dGVuZChwcm9nLCBwcm9wcyk7XG4gIH1cbiAgcmV0dXJuIHByb2c7XG59XG4iXX0= |
| 1 | // Build out our basic SafeString type | ||
| 2 | 'use strict'; | ||
| 3 | |||
| 4 | exports.__esModule = true; | ||
| 5 | function SafeString(string) { | ||
| 6 | this.string = string; | ||
| 7 | } | ||
| 8 | |||
| 9 | SafeString.prototype.toString = SafeString.prototype.toHTML = function () { | ||
| 10 | return '' + this.string; | ||
| 11 | }; | ||
| 12 | |||
| 13 | exports['default'] = SafeString; | ||
| 14 | module.exports = exports['default']; | ||
| 15 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3NhZmUtc3RyaW5nLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxTQUFTLFVBQVUsQ0FBQyxNQUFNLEVBQUU7QUFDMUIsTUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7Q0FDdEI7O0FBRUQsVUFBVSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsWUFBVztBQUN2RSxTQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0NBQ3pCLENBQUM7O3FCQUVhLFVBQVUiLCJmaWxlIjoic2FmZS1zdHJpbmcuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBCdWlsZCBvdXQgb3VyIGJhc2ljIFNhZmVTdHJpbmcgdHlwZVxuZnVuY3Rpb24gU2FmZVN0cmluZyhzdHJpbmcpIHtcbiAgdGhpcy5zdHJpbmcgPSBzdHJpbmc7XG59XG5cblNhZmVTdHJpbmcucHJvdG90eXBlLnRvU3RyaW5nID0gU2FmZVN0cmluZy5wcm90b3R5cGUudG9IVE1MID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAnJyArIHRoaXMuc3RyaW5nO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU2FmZVN0cmluZztcbiJdfQ== |
| 1 | 'use strict'; | ||
| 2 | |||
| 3 | exports.__esModule = true; | ||
| 4 | exports.extend = extend; | ||
| 5 | exports.indexOf = indexOf; | ||
| 6 | exports.escapeExpression = escapeExpression; | ||
| 7 | exports.isEmpty = isEmpty; | ||
| 8 | exports.createFrame = createFrame; | ||
| 9 | exports.blockParams = blockParams; | ||
| 10 | exports.appendContextPath = appendContextPath; | ||
| 11 | var escape = { | ||
| 12 | '&': '&', | ||
| 13 | '<': '<', | ||
| 14 | '>': '>', | ||
| 15 | '"': '"', | ||
| 16 | "'": ''', | ||
| 17 | '`': '`', | ||
| 18 | '=': '=' | ||
| 19 | }; | ||
| 20 | |||
| 21 | var badChars = /[&<>"'`=]/g, | ||
| 22 | possible = /[&<>"'`=]/; | ||
| 23 | |||
| 24 | function escapeChar(chr) { | ||
| 25 | return escape[chr]; | ||
| 26 | } | ||
| 27 | |||
| 28 | function extend(obj /* , ...source */) { | ||
| 29 | for (var i = 1; i < arguments.length; i++) { | ||
| 30 | for (var key in arguments[i]) { | ||
| 31 | if (Object.prototype.hasOwnProperty.call(arguments[i], key)) { | ||
| 32 | obj[key] = arguments[i][key]; | ||
| 33 | } | ||
| 34 | } | ||
| 35 | } | ||
| 36 | |||
| 37 | return obj; | ||
| 38 | } | ||
| 39 | |||
| 40 | var toString = Object.prototype.toString; | ||
| 41 | |||
| 42 | exports.toString = toString; | ||
| 43 | // Sourced from lodash | ||
| 44 | // https://github.com/bestiejs/lodash/blob/master/LICENSE.txt | ||
| 45 | /* eslint-disable func-style */ | ||
| 46 | var isFunction = function isFunction(value) { | ||
| 47 | return typeof value === 'function'; | ||
| 48 | }; | ||
| 49 | // fallback for older versions of Chrome and Safari | ||
| 50 | /* istanbul ignore next */ | ||
| 51 | if (isFunction(/x/)) { | ||
| 52 | exports.isFunction = isFunction = function (value) { | ||
| 53 | return typeof value === 'function' && toString.call(value) === '[object Function]'; | ||
| 54 | }; | ||
| 55 | } | ||
| 56 | exports.isFunction = isFunction; | ||
| 57 | |||
| 58 | /* eslint-enable func-style */ | ||
| 59 | |||
| 60 | /* istanbul ignore next */ | ||
| 61 | var isArray = Array.isArray || function (value) { | ||
| 62 | return value && typeof value === 'object' ? toString.call(value) === '[object Array]' : false; | ||
| 63 | }; | ||
| 64 | |||
| 65 | exports.isArray = isArray; | ||
| 66 | // Older IE versions do not directly support indexOf so we must implement our own, sadly. | ||
| 67 | |||
| 68 | function indexOf(array, value) { | ||
| 69 | for (var i = 0, len = array.length; i < len; i++) { | ||
| 70 | if (array[i] === value) { | ||
| 71 | return i; | ||
| 72 | } | ||
| 73 | } | ||
| 74 | return -1; | ||
| 75 | } | ||
| 76 | |||
| 77 | function escapeExpression(string) { | ||
| 78 | if (typeof string !== 'string') { | ||
| 79 | // don't escape SafeStrings, since they're already safe | ||
| 80 | if (string && string.toHTML) { | ||
| 81 | return string.toHTML(); | ||
| 82 | } else if (string == null) { | ||
| 83 | return ''; | ||
| 84 | } else if (!string) { | ||
| 85 | return string + ''; | ||
| 86 | } | ||
| 87 | |||
| 88 | // Force a string conversion as this will be done by the append regardless and | ||
| 89 | // the regex test will do this transparently behind the scenes, causing issues if | ||
| 90 | // an object's to string has escaped characters in it. | ||
| 91 | string = '' + string; | ||
| 92 | } | ||
| 93 | |||
| 94 | if (!possible.test(string)) { | ||
| 95 | return string; | ||
| 96 | } | ||
| 97 | return string.replace(badChars, escapeChar); | ||
| 98 | } | ||
| 99 | |||
| 100 | function isEmpty(value) { | ||
| 101 | if (!value && value !== 0) { | ||
| 102 | return true; | ||
| 103 | } else if (isArray(value) && value.length === 0) { | ||
| 104 | return true; | ||
| 105 | } else { | ||
| 106 | return false; | ||
| 107 | } | ||
| 108 | } | ||
| 109 | |||
| 110 | function createFrame(object) { | ||
| 111 | var frame = extend({}, object); | ||
| 112 | frame._parent = object; | ||
| 113 | return frame; | ||
| 114 | } | ||
| 115 | |||
| 116 | function blockParams(params, ids) { | ||
| 117 | params.path = ids; | ||
| 118 | return params; | ||
| 119 | } | ||
| 120 | |||
| 121 | function appendContextPath(contextPath, id) { | ||
| 122 | return (contextPath ? contextPath + '.' : '') + id; | ||
| 123 | } | ||
| 124 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3V0aWxzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxJQUFNLE1BQU0sR0FBRztBQUNiLEtBQUcsRUFBRSxPQUFPO0FBQ1osS0FBRyxFQUFFLE1BQU07QUFDWCxLQUFHLEVBQUUsTUFBTTtBQUNYLEtBQUcsRUFBRSxRQUFRO0FBQ2IsS0FBRyxFQUFFLFFBQVE7QUFDYixLQUFHLEVBQUUsUUFBUTtBQUNiLEtBQUcsRUFBRSxRQUFRO0NBQ2QsQ0FBQzs7QUFFRixJQUFNLFFBQVEsR0FBRyxZQUFZO0lBQ3ZCLFFBQVEsR0FBRyxXQUFXLENBQUM7O0FBRTdCLFNBQVMsVUFBVSxDQUFDLEdBQUcsRUFBRTtBQUN2QixTQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztDQUNwQjs7QUFFTSxTQUFTLE1BQU0sQ0FBQyxHQUFHLG9CQUFtQjtBQUMzQyxPQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN6QyxTQUFLLElBQUksR0FBRyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUM1QixVQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUU7QUFDM0QsV0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztPQUM5QjtLQUNGO0dBQ0Y7O0FBRUQsU0FBTyxHQUFHLENBQUM7Q0FDWjs7QUFFTSxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQzs7Ozs7O0FBS2hELElBQUksVUFBVSxHQUFHLG9CQUFTLEtBQUssRUFBRTtBQUMvQixTQUFPLE9BQU8sS0FBSyxLQUFLLFVBQVUsQ0FBQztDQUNwQyxDQUFDOzs7QUFHRixJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUNuQixVQUlNLFVBQVUsR0FKaEIsVUFBVSxHQUFHLFVBQVMsS0FBSyxFQUFFO0FBQzNCLFdBQU8sT0FBTyxLQUFLLEtBQUssVUFBVSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssbUJBQW1CLENBQUM7R0FDcEYsQ0FBQztDQUNIO1FBQ08sVUFBVSxHQUFWLFVBQVU7Ozs7O0FBSVgsSUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sSUFBSSxVQUFTLEtBQUssRUFBRTtBQUN0RCxTQUFPLEFBQUMsS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsR0FBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLGdCQUFnQixHQUFHLEtBQUssQ0FBQztDQUNqRyxDQUFDOzs7OztBQUdLLFNBQVMsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUU7QUFDcEMsT0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNoRCxRQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLEVBQUU7QUFDdEIsYUFBTyxDQUFDLENBQUM7S0FDVjtHQUNGO0FBQ0QsU0FBTyxDQUFDLENBQUMsQ0FBQztDQUNYOztBQUdNLFNBQVMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFO0FBQ3ZDLE1BQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFOztBQUU5QixRQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFO0FBQzNCLGFBQU8sTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO0tBQ3hCLE1BQU0sSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFO0FBQ3pCLGFBQU8sRUFBRSxDQUFDO0tBQ1gsTUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ2xCLGFBQU8sTUFBTSxHQUFHLEVBQUUsQ0FBQztLQUNwQjs7Ozs7QUFLRCxVQUFNLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQztHQUN0Qjs7QUFFRCxNQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtBQUFFLFdBQU8sTUFBTSxDQUFDO0dBQUU7QUFDOUMsU0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztDQUM3Qzs7QUFFTSxTQUFTLE9BQU8sQ0FBQyxLQUFLLEVBQUU7QUFDN0IsTUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFO0FBQ3pCLFdBQU8sSUFBSSxDQUFDO0dBQ2IsTUFBTSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtBQUMvQyxXQUFPLElBQUksQ0FBQztHQUNiLE1BQU07QUFDTCxXQUFPLEtBQUssQ0FBQztHQUNkO0NBQ0Y7O0FBRU0sU0FBUyxXQUFXLENBQUMsTUFBTSxFQUFFO0FBQ2xDLE1BQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDL0IsT0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7QUFDdkIsU0FBTyxLQUFLLENBQUM7Q0FDZDs7QUFFTSxTQUFTLFdBQVcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO0FBQ3ZDLFFBQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO0FBQ2xCLFNBQU8sTUFBTSxDQUFDO0NBQ2Y7O0FBRU0sU0FBUyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFO0FBQ2pELFNBQU8sQ0FBQyxXQUFXLEdBQUcsV0FBVyxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUEsR0FBSSxFQUFFLENBQUM7Q0FDcEQiLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBlc2NhcGUgPSB7XG4gICcmJzogJyZhbXA7JyxcbiAgJzwnOiAnJmx0OycsXG4gICc+JzogJyZndDsnLFxuICAnXCInOiAnJnF1b3Q7JyxcbiAgXCInXCI6ICcmI3gyNzsnLFxuICAnYCc6ICcmI3g2MDsnLFxuICAnPSc6ICcmI3gzRDsnXG59O1xuXG5jb25zdCBiYWRDaGFycyA9IC9bJjw+XCInYD1dL2csXG4gICAgICBwb3NzaWJsZSA9IC9bJjw+XCInYD1dLztcblxuZnVuY3Rpb24gZXNjYXBlQ2hhcihjaHIpIHtcbiAgcmV0dXJuIGVzY2FwZVtjaHJdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0ZW5kKG9iai8qICwgLi4uc291cmNlICovKSB7XG4gIGZvciAobGV0IGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgZm9yIChsZXQga2V5IGluIGFyZ3VtZW50c1tpXSkge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhcmd1bWVudHNbaV0sIGtleSkpIHtcbiAgICAgICAgb2JqW2tleV0gPSBhcmd1bWVudHNbaV1ba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gb2JqO1xufVxuXG5leHBvcnQgbGV0IHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuLy8gU291cmNlZCBmcm9tIGxvZGFzaFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2Jlc3RpZWpzL2xvZGFzaC9ibG9iL21hc3Rlci9MSUNFTlNFLnR4dFxuLyogZXNsaW50LWRpc2FibGUgZnVuYy1zdHlsZSAqL1xubGV0IGlzRnVuY3Rpb24gPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nO1xufTtcbi8vIGZhbGxiYWNrIGZvciBvbGRlciB2ZXJzaW9ucyBvZiBDaHJvbWUgYW5kIFNhZmFyaVxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmlmIChpc0Z1bmN0aW9uKC94LykpIHtcbiAgaXNGdW5jdGlvbiA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gJ1tvYmplY3QgRnVuY3Rpb25dJztcbiAgfTtcbn1cbmV4cG9ydCB7aXNGdW5jdGlvbn07XG4vKiBlc2xpbnQtZW5hYmxlIGZ1bmMtc3R5bGUgKi9cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmV4cG9ydCBjb25zdCBpc0FycmF5ID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpID8gdG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09ICdbb2JqZWN0IEFycmF5XScgOiBmYWxzZTtcbn07XG5cbi8vIE9sZGVyIElFIHZlcnNpb25zIGRvIG5vdCBkaXJlY3RseSBzdXBwb3J0IGluZGV4T2Ygc28gd2UgbXVzdCBpbXBsZW1lbnQgb3VyIG93biwgc2FkbHkuXG5leHBvcnQgZnVuY3Rpb24gaW5kZXhPZihhcnJheSwgdmFsdWUpIHtcbiAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGFycmF5Lmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgaWYgKGFycmF5W2ldID09PSB2YWx1ZSkge1xuICAgICAgcmV0dXJuIGk7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlRXhwcmVzc2lvbihzdHJpbmcpIHtcbiAgaWYgKHR5cGVvZiBzdHJpbmcgIT09ICdzdHJpbmcnKSB7XG4gICAgLy8gZG9uJ3QgZXNjYXBlIFNhZmVTdHJpbmdzLCBzaW5jZSB0aGV5J3JlIGFscmVhZHkgc2FmZVxuICAgIGlmIChzdHJpbmcgJiYgc3RyaW5nLnRvSFRNTCkge1xuICAgICAgcmV0dXJuIHN0cmluZy50b0hUTUwoKTtcbiAgICB9IGVsc2UgaWYgKHN0cmluZyA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfSBlbHNlIGlmICghc3RyaW5nKSB7XG4gICAgICByZXR1cm4gc3RyaW5nICsgJyc7XG4gICAgfVxuXG4gICAgLy8gRm9yY2UgYSBzdHJpbmcgY29udmVyc2lvbiBhcyB0aGlzIHdpbGwgYmUgZG9uZSBieSB0aGUgYXBwZW5kIHJlZ2FyZGxlc3MgYW5kXG4gICAgLy8gdGhlIHJlZ2V4IHRlc3Qgd2lsbCBkbyB0aGlzIHRyYW5zcGFyZW50bHkgYmVoaW5kIHRoZSBzY2VuZXMsIGNhdXNpbmcgaXNzdWVzIGlmXG4gICAgLy8gYW4gb2JqZWN0J3MgdG8gc3RyaW5nIGhhcyBlc2NhcGVkIGNoYXJhY3RlcnMgaW4gaXQuXG4gICAgc3RyaW5nID0gJycgKyBzdHJpbmc7XG4gIH1cblxuICBpZiAoIXBvc3NpYmxlLnRlc3Qoc3RyaW5nKSkgeyByZXR1cm4gc3RyaW5nOyB9XG4gIHJldHVybiBzdHJpbmcucmVwbGFjZShiYWRDaGFycywgZXNjYXBlQ2hhcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0VtcHR5KHZhbHVlKSB7XG4gIGlmICghdmFsdWUgJiYgdmFsdWUgIT09IDApIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlIGlmIChpc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZyYW1lKG9iamVjdCkge1xuICBsZXQgZnJhbWUgPSBleHRlbmQoe30sIG9iamVjdCk7XG4gIGZyYW1lLl9wYXJlbnQgPSBvYmplY3Q7XG4gIHJldHVybiBmcmFtZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJsb2NrUGFyYW1zKHBhcmFtcywgaWRzKSB7XG4gIHBhcmFtcy5wYXRoID0gaWRzO1xuICByZXR1cm4gcGFyYW1zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kQ29udGV4dFBhdGgoY29udGV4dFBhdGgsIGlkKSB7XG4gIHJldHVybiAoY29udGV4dFBhdGggPyBjb250ZXh0UGF0aCArICcuJyA6ICcnKSArIGlkO1xufVxuIl19 |
| 1 | /* eslint-disable no-console */ | ||
| 2 | 'use strict'; | ||
| 3 | |||
| 4 | // istanbul ignore next | ||
| 5 | |||
| 6 | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } } | ||
| 7 | |||
| 8 | // istanbul ignore next | ||
| 9 | |||
| 10 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } | ||
| 11 | |||
| 12 | var _async = require('async'); | ||
| 13 | |||
| 14 | var _async2 = _interopRequireDefault(_async); | ||
| 15 | |||
| 16 | var _fs = require('fs'); | ||
| 17 | |||
| 18 | var _fs2 = _interopRequireDefault(_fs); | ||
| 19 | |||
| 20 | var _handlebars = require('./handlebars'); | ||
| 21 | |||
| 22 | var Handlebars = _interopRequireWildcard(_handlebars); | ||
| 23 | |||
| 24 | var _path = require('path'); | ||
| 25 | |||
| 26 | var _sourceMap = require('source-map'); | ||
| 27 | |||
| 28 | var _uglifyJs = require('uglify-js'); | ||
| 29 | |||
| 30 | var _uglifyJs2 = _interopRequireDefault(_uglifyJs); | ||
| 31 | |||
| 32 | module.exports.loadTemplates = function (opts, callback) { | ||
| 33 | loadStrings(opts, function (err, strings) { | ||
| 34 | if (err) { | ||
| 35 | callback(err); | ||
| 36 | } else { | ||
| 37 | loadFiles(opts, function (err, files) { | ||
| 38 | if (err) { | ||
| 39 | callback(err); | ||
| 40 | } else { | ||
| 41 | opts.templates = strings.concat(files); | ||
| 42 | callback(undefined, opts); | ||
| 43 | } | ||
| 44 | }); | ||
| 45 | } | ||
| 46 | }); | ||
| 47 | }; | ||
| 48 | |||
| 49 | function loadStrings(opts, callback) { | ||
| 50 | var strings = arrayCast(opts.string), | ||
| 51 | names = arrayCast(opts.name); | ||
| 52 | |||
| 53 | if (names.length !== strings.length && strings.length > 1) { | ||
| 54 | return callback(new Handlebars.Exception('Number of names did not match the number of string inputs')); | ||
| 55 | } | ||
| 56 | |||
| 57 | _async2['default'].map(strings, function (string, callback) { | ||
| 58 | if (string !== '-') { | ||
| 59 | callback(undefined, string); | ||
| 60 | } else { | ||
| 61 | (function () { | ||
| 62 | // Load from stdin | ||
| 63 | var buffer = ''; | ||
| 64 | process.stdin.setEncoding('utf8'); | ||
| 65 | |||
| 66 | process.stdin.on('data', function (chunk) { | ||
| 67 | buffer += chunk; | ||
| 68 | }); | ||
| 69 | process.stdin.on('end', function () { | ||
| 70 | callback(undefined, buffer); | ||
| 71 | }); | ||
| 72 | })(); | ||
| 73 | } | ||
| 74 | }, function (err, strings) { | ||
| 75 | strings = strings.map(function (string, index) { | ||
| 76 | return { | ||
| 77 | name: names[index], | ||
| 78 | path: names[index], | ||
| 79 | source: string | ||
| 80 | }; | ||
| 81 | }); | ||
| 82 | callback(err, strings); | ||
| 83 | }); | ||
| 84 | } | ||
| 85 | |||
| 86 | function loadFiles(opts, callback) { | ||
| 87 | // Build file extension pattern | ||
| 88 | var extension = (opts.extension || 'handlebars').replace(/[\\^$*+?.():=!|{}\-\[\]]/g, function (arg) { | ||
| 89 | return '\\' + arg; | ||
| 90 | }); | ||
| 91 | extension = new RegExp('\\.' + extension + '$'); | ||
| 92 | |||
| 93 | var ret = [], | ||
| 94 | queue = (opts.files || []).map(function (template) { | ||
| 95 | return { template: template, root: opts.root }; | ||
| 96 | }); | ||
| 97 | _async2['default'].whilst(function () { | ||
| 98 | return queue.length; | ||
| 99 | }, function (callback) { | ||
| 100 | var _queue$shift = queue.shift(); | ||
| 101 | |||
| 102 | var path = _queue$shift.template; | ||
| 103 | var root = _queue$shift.root; | ||
| 104 | |||
| 105 | _fs2['default'].stat(path, function (err, stat) { | ||
| 106 | if (err) { | ||
| 107 | return callback(new Handlebars.Exception('Unable to open template file "' + path + '"')); | ||
| 108 | } | ||
| 109 | |||
| 110 | if (stat.isDirectory()) { | ||
| 111 | opts.hasDirectory = true; | ||
| 112 | |||
| 113 | _fs2['default'].readdir(path, function (err, children) { | ||
| 114 | /* istanbul ignore next : Race condition that being too lazy to test */ | ||
| 115 | if (err) { | ||
| 116 | return callback(err); | ||
| 117 | } | ||
| 118 | children.forEach(function (file) { | ||
| 119 | var childPath = path + '/' + file; | ||
| 120 | |||
| 121 | if (extension.test(childPath) || _fs2['default'].statSync(childPath).isDirectory()) { | ||
| 122 | queue.push({ template: childPath, root: root || path }); | ||
| 123 | } | ||
| 124 | }); | ||
| 125 | |||
| 126 | callback(); | ||
| 127 | }); | ||
| 128 | } else { | ||
| 129 | _fs2['default'].readFile(path, 'utf8', function (err, data) { | ||
| 130 | /* istanbul ignore next : Race condition that being too lazy to test */ | ||
| 131 | if (err) { | ||
| 132 | return callback(err); | ||
| 133 | } | ||
| 134 | |||
| 135 | if (opts.bom && data.indexOf('') === 0) { | ||
| 136 | data = data.substring(1); | ||
| 137 | } | ||
| 138 | |||
| 139 | // Clean the template name | ||
| 140 | var name = path; | ||
| 141 | if (!root) { | ||
| 142 | name = _path.basename(name); | ||
| 143 | } else if (name.indexOf(root) === 0) { | ||
| 144 | name = name.substring(root.length + 1); | ||
| 145 | } | ||
| 146 | name = name.replace(extension, ''); | ||
| 147 | |||
| 148 | ret.push({ | ||
| 149 | path: path, | ||
| 150 | name: name, | ||
| 151 | source: data | ||
| 152 | }); | ||
| 153 | |||
| 154 | callback(); | ||
| 155 | }); | ||
| 156 | } | ||
| 157 | }); | ||
| 158 | }, function (err) { | ||
| 159 | if (err) { | ||
| 160 | callback(err); | ||
| 161 | } else { | ||
| 162 | callback(undefined, ret); | ||
| 163 | } | ||
| 164 | }); | ||
| 165 | } | ||
| 166 | |||
| 167 | module.exports.cli = function (opts) { | ||
| 168 | if (opts.version) { | ||
| 169 | console.log(Handlebars.VERSION); | ||
| 170 | return; | ||
| 171 | } | ||
| 172 | |||
| 173 | if (!opts.templates.length && !opts.hasDirectory) { | ||
| 174 | throw new Handlebars.Exception('Must define at least one template or directory.'); | ||
| 175 | } | ||
| 176 | |||
| 177 | if (opts.simple && opts.min) { | ||
| 178 | throw new Handlebars.Exception('Unable to minimize simple output'); | ||
| 179 | } | ||
| 180 | |||
| 181 | var multiple = opts.templates.length !== 1 || opts.hasDirectory; | ||
| 182 | if (opts.simple && multiple) { | ||
| 183 | throw new Handlebars.Exception('Unable to output multiple templates in simple mode'); | ||
| 184 | } | ||
| 185 | |||
| 186 | // Force simple mode if we have only one template and it's unnamed. | ||
| 187 | if (!opts.amd && !opts.commonjs && opts.templates.length === 1 && !opts.templates[0].name) { | ||
| 188 | opts.simple = true; | ||
| 189 | } | ||
| 190 | |||
| 191 | // Convert the known list into a hash | ||
| 192 | var known = {}; | ||
| 193 | if (opts.known && !Array.isArray(opts.known)) { | ||
| 194 | opts.known = [opts.known]; | ||
| 195 | } | ||
| 196 | if (opts.known) { | ||
| 197 | for (var i = 0, len = opts.known.length; i < len; i++) { | ||
| 198 | known[opts.known[i]] = true; | ||
| 199 | } | ||
| 200 | } | ||
| 201 | |||
| 202 | var objectName = opts.partial ? 'Handlebars.partials' : 'templates'; | ||
| 203 | |||
| 204 | var output = new _sourceMap.SourceNode(); | ||
| 205 | if (!opts.simple) { | ||
| 206 | if (opts.amd) { | ||
| 207 | output.add('define([\'' + opts.handlebarPath + 'handlebars.runtime\'], function(Handlebars) {\n Handlebars = Handlebars["default"];'); | ||
| 208 | } else if (opts.commonjs) { | ||
| 209 | output.add('var Handlebars = require("' + opts.commonjs + '");'); | ||
| 210 | } else { | ||
| 211 | output.add('(function() {\n'); | ||
| 212 | } | ||
| 213 | output.add(' var template = Handlebars.template, templates = '); | ||
| 214 | if (opts.namespace) { | ||
| 215 | output.add(opts.namespace); | ||
| 216 | output.add(' = '); | ||
| 217 | output.add(opts.namespace); | ||
| 218 | output.add(' || '); | ||
| 219 | } | ||
| 220 | output.add('{};\n'); | ||
| 221 | } | ||
| 222 | |||
| 223 | opts.templates.forEach(function (template) { | ||
| 224 | var options = { | ||
| 225 | knownHelpers: known, | ||
| 226 | knownHelpersOnly: opts.o | ||
| 227 | }; | ||
| 228 | |||
| 229 | if (opts.map) { | ||
| 230 | options.srcName = template.path; | ||
| 231 | } | ||
| 232 | if (opts.data) { | ||
| 233 | options.data = true; | ||
| 234 | } | ||
| 235 | |||
| 236 | var precompiled = Handlebars.precompile(template.source, options); | ||
| 237 | |||
| 238 | // If we are generating a source map, we have to reconstruct the SourceNode object | ||
| 239 | if (opts.map) { | ||
| 240 | var consumer = new _sourceMap.SourceMapConsumer(precompiled.map); | ||
| 241 | precompiled = _sourceMap.SourceNode.fromStringWithSourceMap(precompiled.code, consumer); | ||
| 242 | } | ||
| 243 | |||
| 244 | if (opts.simple) { | ||
| 245 | output.add([precompiled, '\n']); | ||
| 246 | } else { | ||
| 247 | if (!template.name) { | ||
| 248 | throw new Handlebars.Exception('Name missing for template'); | ||
| 249 | } | ||
| 250 | |||
| 251 | if (opts.amd && !multiple) { | ||
| 252 | output.add('return '); | ||
| 253 | } | ||
| 254 | output.add([objectName, '[\'', template.name, '\'] = template(', precompiled, ');\n']); | ||
| 255 | } | ||
| 256 | }); | ||
| 257 | |||
| 258 | // Output the content | ||
| 259 | if (!opts.simple) { | ||
| 260 | if (opts.amd) { | ||
| 261 | if (multiple) { | ||
| 262 | output.add(['return ', objectName, ';\n']); | ||
| 263 | } | ||
| 264 | output.add('});'); | ||
| 265 | } else if (!opts.commonjs) { | ||
| 266 | output.add('})();'); | ||
| 267 | } | ||
| 268 | } | ||
| 269 | |||
| 270 | if (opts.map) { | ||
| 271 | output.add('\n//# sourceMappingURL=' + opts.map + '\n'); | ||
| 272 | } | ||
| 273 | |||
| 274 | output = output.toStringWithSourceMap(); | ||
| 275 | output.map = output.map + ''; | ||
| 276 | |||
| 277 | if (opts.min) { | ||
| 278 | output = _uglifyJs2['default'].minify(output.code, { | ||
| 279 | fromString: true, | ||
| 280 | |||
| 281 | outSourceMap: opts.map, | ||
| 282 | inSourceMap: JSON.parse(output.map) | ||
| 283 | }); | ||
| 284 | } | ||
| 285 | |||
| 286 | if (opts.map) { | ||
| 287 | _fs2['default'].writeFileSync(opts.map, output.map, 'utf8'); | ||
| 288 | } | ||
| 289 | output = output.code; | ||
| 290 | |||
| 291 | if (opts.output) { | ||
| 292 | _fs2['default'].writeFileSync(opts.output, output, 'utf8'); | ||
| 293 | } else { | ||
| 294 | console.log(output); | ||
| 295 | } | ||
| 296 | }; | ||
| 297 | |||
| 298 | function arrayCast(value) { | ||
| 299 | value = value != null ? value : []; | ||
| 300 | if (!Array.isArray(value)) { | ||
| 301 | value = [value]; | ||
| 302 | } | ||
| 303 | return value; | ||
| 304 | } | ||
| 305 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9wcmVjb21waWxlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztxQkFDa0IsT0FBTzs7OztrQkFDVixJQUFJOzs7OzBCQUNTLGNBQWM7O0lBQTlCLFVBQVU7O29CQUNDLE1BQU07O3lCQUNlLFlBQVk7O3dCQUNyQyxXQUFXOzs7O0FBRTlCLE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLFVBQVMsSUFBSSxFQUFFLFFBQVEsRUFBRTtBQUN0RCxhQUFXLENBQUMsSUFBSSxFQUFFLFVBQVMsR0FBRyxFQUFFLE9BQU8sRUFBRTtBQUN2QyxRQUFJLEdBQUcsRUFBRTtBQUNQLGNBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUNmLE1BQU07QUFDTCxlQUFTLENBQUMsSUFBSSxFQUFFLFVBQVMsR0FBRyxFQUFFLEtBQUssRUFBRTtBQUNuQyxZQUFJLEdBQUcsRUFBRTtBQUNQLGtCQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDZixNQUFNO0FBQ0wsY0FBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3ZDLGtCQUFRLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQzNCO09BQ0YsQ0FBQyxDQUFDO0tBQ0o7R0FDRixDQUFDLENBQUM7Q0FDSixDQUFDOztBQUVGLFNBQVMsV0FBVyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUU7QUFDbkMsTUFBSSxPQUFPLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7TUFDaEMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7O0FBRWpDLE1BQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxPQUFPLENBQUMsTUFBTSxJQUM1QixPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtBQUN6QixXQUFPLFFBQVEsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxTQUFTLENBQUMsMkRBQTJELENBQUMs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QUUsSUFBSSxDQUFDLEdBQUc7QUFDdEIsaUJBQVcsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7S0FDcEMsQ0FBQyxDQUFDO0dBQ0o7O0FBRUQsTUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFO0FBQ1osb0JBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztHQUNoRDtBQUNELFFBQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDOztBQUVyQixNQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7QUFDZixvQkFBRyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7R0FDL0MsTUFBTTtBQUNMLFdBQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7R0FDckI7Q0FDRixDQUFDOztBQUVGLFNBQVMsU0FBUyxDQUFDLEtBQUssRUFBRTtBQUN4QixPQUFLLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxLQUFLLEdBQUcsRUFBRSxDQUFDO0FBQ25DLE1BQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQ3pCLFNBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0dBQ2pCO0FBQ0QsU0FBTyxLQUFLLENBQUM7Q0FDZCIsImZpbGUiOiJwcmVjb21waWxlci5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCBBc3luYyBmcm9tICdhc3luYyc7XG5pbXBvcnQgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgSGFuZGxlYmFycyBmcm9tICcuL2hhbmRsZWJhcnMnO1xuaW1wb3J0IHtiYXNlbmFtZX0gZnJvbSAncGF0aCc7XG5pbXBvcnQge1NvdXJjZU1hcENvbnN1bWVyLCBTb3VyY2VOb2RlfSBmcm9tICdzb3VyY2UtbWFwJztcbmltcG9ydCB1Z2xpZnkgZnJvbSAndWdsaWZ5LWpzJztcblxubW9kdWxlLmV4cG9ydHMubG9hZFRlbXBsYXRlcyA9IGZ1bmN0aW9uKG9wdHMsIGNhbGxiYWNrKSB7XG4gIGxvYWRTdHJpbmdzKG9wdHMsIGZ1bmN0aW9uKGVyciwgc3RyaW5ncykge1xuICAgIGlmIChlcnIpIHtcbiAgICAgIGNhbGxiYWNrKGVycik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvYWRGaWxlcyhvcHRzLCBmdW5jdGlvbihlcnIsIGZpbGVzKSB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICBjYWxsYmFjayhlcnIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9wdHMudGVtcGxhdGVzID0gc3RyaW5ncy5jb25jYXQoZmlsZXMpO1xuICAgICAgICAgIGNhbGxiYWNrKHVuZGVmaW5lZCwgb3B0cyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG59O1xuXG5mdW5jdGlvbiBsb2FkU3RyaW5ncyhvcHRzLCBjYWxsYmFjaykge1xuICBsZXQgc3RyaW5ncyA9IGFycmF5Q2FzdChvcHRzLnN0cmluZyksXG4gICAgICBuYW1lcyA9IGFycmF5Q2FzdChvcHRzLm5hbWUpO1xuXG4gIGlmIChuYW1lcy5sZW5ndGggIT09IHN0cmluZ3MubGVuZ3RoXG4gICAgICAmJiBzdHJpbmdzLmxlbmd0aCA+IDEpIHtcbiAgICByZXR1cm4gY2FsbGJhY2sobmV3IEhhbmRsZWJhcnMuRXhjZXB0aW9uKCdOdW1iZXIgb2YgbmFtZXMgZGlkIG5vdCBtYXRjaCB0aGUgbnVtYmVyIG9mIHN0cmluZyBpbnB1dHMnKSk7XG4gIH1cblxuICBBc3luYy5tYXAoc3RyaW5ncywgZnVuY3Rpb24oc3RyaW5nLCBjYWxsYmFjaykge1xuICAgICAgaWYgKHN0cmluZyAhPT0gJy0nKSB7XG4gICAgICAgIGNhbGxiYWNrKHVuZGVmaW5lZCwgc3RyaW5nKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIExvYWQgZnJvbSBzdGRpblxuICAgICAgICBsZXQgYnVmZmVyID0gJyc7XG4gICAgICAgIHByb2Nlc3Muc3RkaW4uc2V0RW5jb2RpbmcoJ3V0ZjgnKTtcblxuICAgICAgICBwcm9jZXNzLnN0ZGluLm9uKCdkYXRhJywgZnVuY3Rpb24oY2h1bmspIHtcbiAgICAgICAgICBidWZmZXIgKz0gY2h1bms7XG4gICAgICAgIH0pO1xuICAgICAgICBwcm9jZXNzLnN0ZGluLm9uKCdlbmQnLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICBjYWxsYmFjayh1bmRlZmluZWQsIGJ1ZmZlcik7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgZnVuY3Rpb24oZXJyLCBzdHJpbmdzKSB7XG4gICAgICBzdHJpbmdzID0gc3RyaW5ncy5tYXAoKHN0cmluZywgaW5kZXgpID0+ICh7XG4gICAgICAgIG5hbWU6IG5hbWVzW2luZGV4XSxcbiAgICAgICAgcGF0aDogbmFtZXNbaW5kZXhdLFxuICAgICAgICBzb3VyY2U6IHN0cmluZ1xuICAgICAgfSkpO1xuICAgICAgY2FsbGJhY2soZXJyLCBzdHJpbmdzKTtcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gbG9hZEZpbGVzKG9wdHMsIGNhbGxiYWNrKSB7XG4gIC8vIEJ1aWxkIGZpbGUgZXh0ZW5zaW9uIHBhdHRlcm5cbiAgbGV0IGV4dGVuc2lvbiA9IChvcHRzLmV4dGVuc2lvbiB8fCAnaGFuZGxlYmFycycpLnJlcGxhY2UoL1tcXFxcXiQqKz8uKCk6PSF8e31cXC1cXFtcXF1dL2csIGZ1bmN0aW9uKGFyZykgeyByZXR1cm4gJ1xcXFwnICsgYXJnOyB9KTtcbiAgZXh0ZW5zaW9uID0gbmV3IFJlZ0V4cCgnXFxcXC4nICsgZXh0ZW5zaW9uICsgJyQnKTtcblxuICBsZXQgcmV0ID0gW10sXG4gICAgICBxdWV1ZSA9IChvcHRzLmZpbGVzIHx8IFtdKS5tYXAoKHRlbXBsYXRlKSA9PiAoe3RlbXBsYXRlLCByb290OiBvcHRzLnJvb3R9KSk7XG4gIEFzeW5jLndoaWxzdCgoKSA9PiBxdWV1ZS5sZW5ndGgsIGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gICAgbGV0IHt0ZW1wbGF0ZTogcGF0aCwgcm9vdH0gPSBxdWV1ZS5zaGlmdCgpO1xuXG4gICAgZnMuc3RhdChwYXRoLCBmdW5jdGlvbihlcnIsIHN0YXQpIHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG5ldyBIYW5kbGViYXJzLkV4Y2VwdGlvbihgVW5hYmxlIHRvIG9wZW4gdGVtcGxhdGUgZmlsZSBcIiR7cGF0aH1cImApKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN0YXQuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgICBvcHRzLmhhc0RpcmVjdG9yeSA9IHRydWU7XG5cbiAgICAgICAgZnMucmVhZGRpcihwYXRoLCBmdW5jdGlvbihlcnIsIGNoaWxkcmVuKSB7XG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgOiBSYWNlIGNvbmRpdGlvbiB0aGF0IGJlaW5nIHRvbyBsYXp5IHRvIHRlc3QgKi9cbiAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbihmaWxlKSB7XG4gICAgICAgICAgICBsZXQgY2hpbGRQYXRoID0gcGF0aCArICcvJyArIGZpbGU7XG5cbiAgICAgICAgICAgIGlmIChleHRlbnNpb24udGVzdChjaGlsZFBhdGgpIHx8IGZzLnN0YXRTeW5jKGNoaWxkUGF0aCkuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgICAgICAgICBxdWV1ZS5wdXNoKHt0ZW1wbGF0ZTogY2hpbGRQYXRoLCByb290OiByb290IHx8IHBhdGh9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZnMucmVhZEZpbGUocGF0aCwgJ3V0ZjgnLCBmdW5jdGlvbihlcnIsIGRhdGEpIHtcbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCA6IFJhY2UgY29uZGl0aW9uIHRoYXQgYmVpbmcgdG9vIGxhenkgdG8gdGVzdCAqL1xuICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChvcHRzLmJvbSAmJiBkYXRhLmluZGV4T2YoJ1xcdUZFRkYnKSA9PT0gMCkge1xuICAgICAgICAgICAgZGF0YSA9IGRhdGEuc3Vic3RyaW5nKDEpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIENsZWFuIHRoZSB0ZW1wbGF0ZSBuYW1lXG4gICAgICAgICAgbGV0IG5hbWUgPSBwYXRoO1xuICAgICAgICAgIGlmICghcm9vdCkge1xuICAgICAgICAgICAgbmFtZSA9IGJhc2VuYW1lKG5hbWUpO1xuICAgICAgICAgIH0gZWxzZSBpZiAobmFtZS5pbmRleE9mKHJvb3QpID09PSAwKSB7XG4gICAgICAgICAgICBuYW1lID0gbmFtZS5zdWJzdHJpbmcocm9vdC5sZW5ndGggKyAxKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZShleHRlbnNpb24sICcnKTtcblxuICAgICAgICAgIHJldC5wdXNoKHtcbiAgICAgICAgICAgIHBhdGg6IHBhdGgsXG4gICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgc291cmNlOiBkYXRhXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcbiAgZnVuY3Rpb24oZXJyKSB7XG4gICAgaWYgKGVycikge1xuICAgICAgY2FsbGJhY2soZXJyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FsbGJhY2sodW5kZWZpbmVkLCByZXQpO1xuICAgIH1cbiAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzLmNsaSA9IGZ1bmN0aW9uKG9wdHMpIHtcbiAgaWYgKG9wdHMudmVyc2lvbikge1xuICAgIGNvbnNvbGUubG9nKEhhbmRsZWJhcnMuVkVSU0lPTik7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKCFvcHRzLnRlbXBsYXRlcy5sZW5ndGggJiYgIW9wdHMuaGFzRGlyZWN0b3J5KSB7XG4gICAgdGhyb3cgbmV3IEhhbmRsZWJhcnMuRXhjZXB0aW9uKCdNdXN0IGRlZmluZSBhdCBsZWFzdCBvbmUgdGVtcGxhdGUgb3IgZGlyZWN0b3J5LicpO1xuICB9XG5cbiAgaWYgKG9wdHMuc2ltcGxlICYmIG9wdHMubWluKSB7XG4gICAgdGhyb3cgbmV3IEhhbmRsZWJhcnMuRXhjZXB0aW9uKCdVbmFibGUgdG8gbWluaW1pemUgc2ltcGxlIG91dHB1dCcpO1xuICB9XG5cbiAgY29uc3QgbXVsdGlwbGUgPSBvcHRzLnRlbXBsYXRlcy5sZW5ndGggIT09IDEgfHwgb3B0cy5oYXNEaXJlY3Rvcnk7XG4gIGlmIChvcHRzLnNpbXBsZSAmJiBtdWx0aXBsZSkge1xuICAgIHRocm93IG5ldyBIYW5kbGViYXJzLkV4Y2VwdGlvbignVW5hYmxlIHRvIG91dHB1dCBtdWx0aXBsZSB0ZW1wbGF0ZXMgaW4gc2ltcGxlIG1vZGUnKTtcbiAgfVxuXG4gIC8vIEZvcmNlIHNpbXBsZSBtb2RlIGlmIHdlIGhhdmUgb25seSBvbmUgdGVtcGxhdGUgYW5kIGl0J3MgdW5uYW1lZC5cbiAgaWYgKCFvcHRzLmFtZCAmJiAhb3B0cy5jb21tb25qcyAmJiBvcHRzLnRlbXBsYXRlcy5sZW5ndGggPT09IDFcbiAgICAgICYmICFvcHRzLnRlbXBsYXRlc1swXS5uYW1lKSB7XG4gICAgb3B0cy5zaW1wbGUgPSB0cnVlO1xuICB9XG5cbiAgLy8gQ29udmVydCB0aGUga25vd24gbGlzdCBpbnRvIGEgaGFzaFxuICBsZXQga25vd24gPSB7fTtcbiAgaWYgKG9wdHMua25vd24gJiYgIUFycmF5LmlzQXJyYXkob3B0cy5rbm93bikpIHtcbiAgICBvcHRzLmtub3duID0gW29wdHMua25vd25dO1xuICB9XG4gIGlmIChvcHRzLmtub3duKSB7XG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IG9wdHMua25vd24ubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGtub3duW29wdHMua25vd25baV1dID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBvYmplY3ROYW1lID0gb3B0cy5wYXJ0aWFsID8gJ0hhbmRsZWJhcnMucGFydGlhbHMnIDogJ3RlbXBsYXRlcyc7XG5cbiAgbGV0IG91dHB1dCA9IG5ldyBTb3VyY2VOb2RlKCk7XG4gIGlmICghb3B0cy5zaW1wbGUpIHtcbiAgICBpZiAob3B0cy5hbWQpIHtcbiAgICAgIG91dHB1dC5hZGQoJ2RlZmluZShbXFwnJyArIG9wdHMuaGFuZGxlYmFyUGF0aCArICdoYW5kbGViYXJzLnJ1bnRpbWVcXCddLCBmdW5jdGlvbihIYW5kbGViYXJzKSB7XFxuICBIYW5kbGViYXJzID0gSGFuZGxlYmFyc1tcImRlZmF1bHRcIl07Jyk7XG4gICAgfSBlbHNlIGlmIChvcHRzLmNvbW1vbmpzKSB7XG4gICAgICBvdXRwdXQuYWRkKCd2YXIgSGFuZGxlYmFycyA9IHJlcXVpcmUoXCInICsgb3B0cy5jb21tb25qcyArICdcIik7Jyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dHB1dC5hZGQoJyhmdW5jdGlvbigpIHtcXG4nKTtcbiAgICB9XG4gICAgb3V0cHV0LmFkZCgnICB2YXIgdGVtcGxhdGUgPSBIYW5kbGViYXJzLnRlbXBsYXRlLCB0ZW1wbGF0ZXMgPSAnKTtcbiAgICBpZiAob3B0cy5uYW1lc3BhY2UpIHtcbiAgICAgIG91dHB1dC5hZGQob3B0cy5uYW1lc3BhY2UpO1xuICAgICAgb3V0cHV0LmFkZCgnID0gJyk7XG4gICAgICBvdXRwdXQuYWRkKG9wdHMubmFtZXNwYWNlKTtcbiAgICAgIG91dHB1dC5hZGQoJyB8fCAnKTtcbiAgICB9XG4gICAgb3V0cHV0LmFkZCgne307XFxuJyk7XG4gIH1cblxuICBvcHRzLnRlbXBsYXRlcy5mb3JFYWNoKGZ1bmN0aW9uKHRlbXBsYXRlKSB7XG4gICAgbGV0IG9wdGlvbnMgPSB7XG4gICAgICBrbm93bkhlbHBlcnM6IGtub3duLFxuICAgICAga25vd25IZWxwZXJzT25seTogb3B0cy5vXG4gICAgfTtcblxuICAgIGlmIChvcHRzLm1hcCkge1xuICAgICAgb3B0aW9ucy5zcmNOYW1lID0gdGVtcGxhdGUucGF0aDtcbiAgICB9XG4gICAgaWYgKG9wdHMuZGF0YSkge1xuICAgICAgb3B0aW9ucy5kYXRhID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBsZXQgcHJlY29tcGlsZWQgPSBIYW5kbGViYXJzLnByZWNvbXBpbGUodGVtcGxhdGUuc291cmNlLCBvcHRpb25zKTtcblxuICAgIC8vIElmIHdlIGFyZSBnZW5lcmF0aW5nIGEgc291cmNlIG1hcCwgd2UgaGF2ZSB0byByZWNvbnN0cnVjdCB0aGUgU291cmNlTm9kZSBvYmplY3RcbiAgICBpZiAob3B0cy5tYXApIHtcbiAgICAgIGxldCBjb25zdW1lciA9IG5ldyBTb3VyY2VNYXBDb25zdW1lcihwcmVjb21waWxlZC5tYXApO1xuICAgICAgcHJlY29tcGlsZWQgPSBTb3VyY2VOb2RlLmZyb21TdHJpbmdXaXRoU291cmNlTWFwKHByZWNvbXBpbGVkLmNvZGUsIGNvbnN1bWVyKTtcbiAgICB9XG5cbiAgICBpZiAob3B0cy5zaW1wbGUpIHtcbiAgICAgIG91dHB1dC5hZGQoW3ByZWNvbXBpbGVkLCAnXFxuJ10pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIXRlbXBsYXRlLm5hbWUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEhhbmRsZWJhcnMuRXhjZXB0aW9uKCdOYW1lIG1pc3NpbmcgZm9yIHRlbXBsYXRlJyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRzLmFtZCAmJiAhbXVsdGlwbGUpIHtcbiAgICAgICAgb3V0cHV0LmFkZCgncmV0dXJuICcpO1xuICAgICAgfVxuICAgICAgb3V0cHV0LmFkZChbb2JqZWN0TmFtZSwgJ1tcXCcnLCB0ZW1wbGF0ZS5uYW1lLCAnXFwnXSA9IHRlbXBsYXRlKCcsIHByZWNvbXBpbGVkLCAnKTtcXG4nXSk7XG4gICAgfVxuICB9KTtcblxuICAvLyBPdXRwdXQgdGhlIGNvbnRlbnRcbiAgaWYgKCFvcHRzLnNpbXBsZSkge1xuICAgIGlmIChvcHRzLmFtZCkge1xuICAgICAgaWYgKG11bHRpcGxlKSB7XG4gICAgICAgIG91dHB1dC5hZGQoWydyZXR1cm4gJywgb2JqZWN0TmFtZSwgJztcXG4nXSk7XG4gICAgICB9XG4gICAgICBvdXRwdXQuYWRkKCd9KTsnKTtcbiAgICB9IGVsc2UgaWYgKCFvcHRzLmNvbW1vbmpzKSB7XG4gICAgICBvdXRwdXQuYWRkKCd9KSgpOycpO1xuICAgIH1cbiAgfVxuXG5cbiAgaWYgKG9wdHMubWFwKSB7XG4gICAgb3V0cHV0LmFkZCgnXFxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9JyArIG9wdHMubWFwICsgJ1xcbicpO1xuICB9XG5cbiAgb3V0cHV0ID0gb3V0cHV0LnRvU3RyaW5nV2l0aFNvdXJjZU1hcCgpO1xuICBvdXRwdXQubWFwID0gb3V0cHV0Lm1hcCArICcnO1xuXG4gIGlmIChvcHRzLm1pbikge1xuICAgIG91dHB1dCA9IHVnbGlmeS5taW5pZnkob3V0cHV0LmNvZGUsIHtcbiAgICAgIGZyb21TdHJpbmc6IHRydWUsXG5cbiAgICAgIG91dFNvdXJjZU1hcDogb3B0cy5tYXAsXG4gICAgICBpblNvdXJjZU1hcDogSlNPTi5wYXJzZShvdXRwdXQubWFwKVxuICAgIH0pO1xuICB9XG5cbiAgaWYgKG9wdHMubWFwKSB7XG4gICAgZnMud3JpdGVGaWxlU3luYyhvcHRzLm1hcCwgb3V0cHV0Lm1hcCwgJ3V0ZjgnKTtcbiAgfVxuICBvdXRwdXQgPSBvdXRwdXQuY29kZTtcblxuICBpZiAob3B0cy5vdXRwdXQpIHtcbiAgICBmcy53cml0ZUZpbGVTeW5jKG9wdHMub3V0cHV0LCBvdXRwdXQsICd1dGY4Jyk7XG4gIH0gZWxzZSB7XG4gICAgY29uc29sZS5sb2cob3V0cHV0KTtcbiAgfVxufTtcblxuZnVuY3Rpb24gYXJyYXlDYXN0KHZhbHVlKSB7XG4gIHZhbHVlID0gdmFsdWUgIT0gbnVsbCA/IHZhbHVlIDogW107XG4gIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICB2YWx1ZSA9IFt2YWx1ZV07XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuIl19 |
This diff could not be displayed because it is too large.
| 1 | /**! | ||
| 2 | |||
| 3 | @license | ||
| 4 | handlebars v4.0.10 | ||
| 5 | |||
| 6 | Copyright (C) 2011-2016 by Yehuda Katz | ||
| 7 | |||
| 8 | Permission is hereby granted, free of charge, to any person obtaining a copy | ||
| 9 | of this software and associated documentation files (the "Software"), to deal | ||
| 10 | in the Software without restriction, including without limitation the rights | ||
| 11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
| 12 | copies of the Software, and to permit persons to whom the Software is | ||
| 13 | furnished to do so, subject to the following conditions: | ||
| 14 | |||
| 15 | The above copyright notice and this permission notice shall be included in | ||
| 16 | all copies or substantial portions of the Software. | ||
| 17 | |||
| 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
| 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
| 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
| 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
| 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
| 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||
| 24 | THE SOFTWARE. | ||
| 25 | |||
| 26 | */ | ||
| 27 | define("handlebars/utils",["exports"],function(a){"use strict";function b(a){return j[a]}function c(a){for(var b=1;b<arguments.length;b++)for(var c in arguments[b])Object.prototype.hasOwnProperty.call(arguments[b],c)&&(a[c]=arguments[b][c]);return a}function d(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return c;return-1}function e(a){if("string"!=typeof a){if(a&&a.toHTML)return a.toHTML();if(null==a)return"";if(!a)return a+"";a=""+a}return l.test(a)?a.replace(k,b):a}function f(a){return!a&&0!==a||!(!o(a)||0!==a.length)}function g(a){var b=c({},a);return b._parent=a,b}function h(a,b){return a.path=b,a}function i(a,b){return(a?a+".":"")+b}a.__esModule=!0,a.extend=c,a.indexOf=d,a.escapeExpression=e,a.isEmpty=f,a.createFrame=g,a.blockParams=h,a.appendContextPath=i;var j={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`","=":"="},k=/[&<>"'`=]/g,l=/[&<>"'`=]/,m=Object.prototype.toString;a.toString=m;var n=function(a){return"function"==typeof a};n(/x/)&&(a.isFunction=n=function(a){return"function"==typeof a&&"[object Function]"===m.call(a)}),a.isFunction=n;var o=Array.isArray||function(a){return!(!a||"object"!=typeof a)&&"[object Array]"===m.call(a)};a.isArray=o}),define("handlebars/exception",["exports","module"],function(a,b){"use strict";function c(a,b){var e=b&&b.loc,f=void 0,g=void 0;e&&(f=e.start.line,g=e.start.column,a+=" - "+f+":"+g);for(var h=Error.prototype.constructor.call(this,a),i=0;i<d.length;i++)this[d[i]]=h[d[i]];Error.captureStackTrace&&Error.captureStackTrace(this,c);try{e&&(this.lineNumber=f,Object.defineProperty?Object.defineProperty(this,"column",{value:g,enumerable:!0}):this.column=g)}catch(j){}}var d=["description","fileName","lineNumber","message","name","number","stack"];c.prototype=new Error,b.exports=c}),define("handlebars/helpers/block-helper-missing",["exports","module","../utils"],function(a,b,c){"use strict";b.exports=function(a){a.registerHelper("blockHelperMissing",function(b,d){var e=d.inverse,f=d.fn;if(b===!0)return f(this);if(b===!1||null==b)return e(this);if(c.isArray(b))return b.length>0?(d.ids&&(d.ids=[d.name]),a.helpers.each(b,d)):e(this);if(d.data&&d.ids){var g=c.createFrame(d.data);g.contextPath=c.appendContextPath(d.data.contextPath,d.name),d={data:g}}return f(b,d)})}}),define("handlebars/helpers/each",["exports","module","../utils","../exception"],function(a,b,c,d){"use strict";function e(a){return a&&a.__esModule?a:{"default":a}}var f=e(d);b.exports=function(a){a.registerHelper("each",function(a,b){function d(b,d,f){j&&(j.key=b,j.index=d,j.first=0===d,j.last=!!f,k&&(j.contextPath=k+b)),i+=e(a[b],{data:j,blockParams:c.blockParams([a[b],b],[k+b,null])})}if(!b)throw new f["default"]("Must pass iterator to #each");var e=b.fn,g=b.inverse,h=0,i="",j=void 0,k=void 0;if(b.data&&b.ids&&(k=c.appendContextPath(b.data.contextPath,b.ids[0])+"."),c.isFunction(a)&&(a=a.call(this)),b.data&&(j=c.createFrame(b.data)),a&&"object"==typeof a)if(c.isArray(a))for(var l=a.length;h<l;h++)h in a&&d(h,h,h===a.length-1);else{var m=void 0;for(var n in a)a.hasOwnProperty(n)&&(void 0!==m&&d(m,h-1),m=n,h++);void 0!==m&&d(m,h-1,!0)}return 0===h&&(i=g(this)),i})}}),define("handlebars/helpers/helper-missing",["exports","module","../exception"],function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=d(c);b.exports=function(a){a.registerHelper("helperMissing",function(){if(1!==arguments.length)throw new e["default"]('Missing helper: "'+arguments[arguments.length-1].name+'"')})}}),define("handlebars/helpers/if",["exports","module","../utils"],function(a,b,c){"use strict";b.exports=function(a){a.registerHelper("if",function(a,b){return c.isFunction(a)&&(a=a.call(this)),!b.hash.includeZero&&!a||c.isEmpty(a)?b.inverse(this):b.fn(this)}),a.registerHelper("unless",function(b,c){return a.helpers["if"].call(this,b,{fn:c.inverse,inverse:c.fn,hash:c.hash})})}}),define("handlebars/helpers/log",["exports","module"],function(a,b){"use strict";b.exports=function(a){a.registerHelper("log",function(){for(var b=[void 0],c=arguments[arguments.length-1],d=0;d<arguments.length-1;d++)b.push(arguments[d]);var e=1;null!=c.hash.level?e=c.hash.level:c.data&&null!=c.data.level&&(e=c.data.level),b[0]=e,a.log.apply(a,b)})}}),define("handlebars/helpers/lookup",["exports","module"],function(a,b){"use strict";b.exports=function(a){a.registerHelper("lookup",function(a,b){return a&&a[b]})}}),define("handlebars/helpers/with",["exports","module","../utils"],function(a,b,c){"use strict";b.exports=function(a){a.registerHelper("with",function(a,b){c.isFunction(a)&&(a=a.call(this));var d=b.fn;if(c.isEmpty(a))return b.inverse(this);var e=b.data;return b.data&&b.ids&&(e=c.createFrame(b.data),e.contextPath=c.appendContextPath(b.data.contextPath,b.ids[0])),d(a,{data:e,blockParams:c.blockParams([a],[e&&e.contextPath])})})}}),define("handlebars/helpers",["exports","./helpers/block-helper-missing","./helpers/each","./helpers/helper-missing","./helpers/if","./helpers/log","./helpers/lookup","./helpers/with"],function(a,b,c,d,e,f,g,h){"use strict";function i(a){return a&&a.__esModule?a:{"default":a}}function j(a){k["default"](a),l["default"](a),m["default"](a),n["default"](a),o["default"](a),p["default"](a),q["default"](a)}a.__esModule=!0,a.registerDefaultHelpers=j;var k=i(b),l=i(c),m=i(d),n=i(e),o=i(f),p=i(g),q=i(h)}),define("handlebars/decorators/inline",["exports","module","../utils"],function(a,b,c){"use strict";b.exports=function(a){a.registerDecorator("inline",function(a,b,d,e){var f=a;return b.partials||(b.partials={},f=function(e,f){var g=d.partials;d.partials=c.extend({},g,b.partials);var h=a(e,f);return d.partials=g,h}),b.partials[e.args[0]]=e.fn,f})}}),define("handlebars/decorators",["exports","./decorators/inline"],function(a,b){"use strict";function c(a){return a&&a.__esModule?a:{"default":a}}function d(a){e["default"](a)}a.__esModule=!0,a.registerDefaultDecorators=d;var e=c(b)}),define("handlebars/logger",["exports","module","./utils"],function(a,b,c){"use strict";var d={methodMap:["debug","info","warn","error"],level:"info",lookupLevel:function(a){if("string"==typeof a){var b=c.indexOf(d.methodMap,a.toLowerCase());a=b>=0?b:parseInt(a,10)}return a},log:function(a){if(a=d.lookupLevel(a),"undefined"!=typeof console&&d.lookupLevel(d.level)<=a){var b=d.methodMap[a];console[b]||(b="log");for(var c=arguments.length,e=Array(c>1?c-1:0),f=1;f<c;f++)e[f-1]=arguments[f];console[b].apply(console,e)}}};b.exports=d}),define("handlebars/base",["exports","./utils","./exception","./helpers","./decorators","./logger"],function(a,b,c,d,e,f){"use strict";function g(a){return a&&a.__esModule?a:{"default":a}}function h(a,b,c){this.helpers=a||{},this.partials=b||{},this.decorators=c||{},d.registerDefaultHelpers(this),e.registerDefaultDecorators(this)}a.__esModule=!0,a.HandlebarsEnvironment=h;var i=g(c),j=g(f),k="4.0.10";a.VERSION=k;var l=7;a.COMPILER_REVISION=l;var m={1:"<= 1.0.rc.2",2:"== 1.0.0-rc.3",3:"== 1.0.0-rc.4",4:"== 1.x.x",5:"== 2.0.0-alpha.x",6:">= 2.0.0-beta.1",7:">= 4.0.0"};a.REVISION_CHANGES=m;var n="[object Object]";h.prototype={constructor:h,logger:j["default"],log:j["default"].log,registerHelper:function(a,c){if(b.toString.call(a)===n){if(c)throw new i["default"]("Arg not supported with multiple helpers");b.extend(this.helpers,a)}else this.helpers[a]=c},unregisterHelper:function(a){delete this.helpers[a]},registerPartial:function(a,c){if(b.toString.call(a)===n)b.extend(this.partials,a);else{if("undefined"==typeof c)throw new i["default"]('Attempting to register a partial called "'+a+'" as undefined');this.partials[a]=c}},unregisterPartial:function(a){delete this.partials[a]},registerDecorator:function(a,c){if(b.toString.call(a)===n){if(c)throw new i["default"]("Arg not supported with multiple decorators");b.extend(this.decorators,a)}else this.decorators[a]=c},unregisterDecorator:function(a){delete this.decorators[a]}};var o=j["default"].log;a.log=o,a.createFrame=b.createFrame,a.logger=j["default"]}),define("handlebars/safe-string",["exports","module"],function(a,b){"use strict";function c(a){this.string=a}c.prototype.toString=c.prototype.toHTML=function(){return""+this.string},b.exports=c}),define("handlebars/runtime",["exports","./utils","./exception","./base"],function(a,b,c,d){"use strict";function e(a){return a&&a.__esModule?a:{"default":a}}function f(a){var b=a&&a[0]||1,c=d.COMPILER_REVISION;if(b!==c){if(b<c){var e=d.REVISION_CHANGES[c],f=d.REVISION_CHANGES[b];throw new n["default"]("Template was precompiled with an older version of Handlebars than the current runtime. Please update your precompiler to a newer version ("+e+") or downgrade your runtime to an older version ("+f+").")}throw new n["default"]("Template was precompiled with a newer version of Handlebars than the current runtime. Please update your runtime to a newer version ("+a[1]+").")}}function g(a,c){function d(d,e,f){f.hash&&(e=b.extend({},e,f.hash),f.ids&&(f.ids[0]=!0)),d=c.VM.resolvePartial.call(this,d,e,f);var g=c.VM.invokePartial.call(this,d,e,f);if(null==g&&c.compile&&(f.partials[f.name]=c.compile(d,a.compilerOptions,c),g=f.partials[f.name](e,f)),null!=g){if(f.indent){for(var h=g.split("\n"),i=0,j=h.length;i<j&&(h[i]||i+1!==j);i++)h[i]=f.indent+h[i];g=h.join("\n")}return g}throw new n["default"]("The partial "+f.name+" could not be compiled when running in runtime-only mode")}function e(b){function c(b){return""+a.main(f,b,f.helpers,f.partials,g,i,h)}var d=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],g=d.data;e._setup(d),!d.partial&&a.useData&&(g=l(b,g));var h=void 0,i=a.useBlockParams?[]:void 0;return a.useDepths&&(h=d.depths?b!=d.depths[0]?[b].concat(d.depths):d.depths:[b]),(c=m(a.main,c,f,d.depths||[],g,i))(b,d)}if(!c)throw new n["default"]("No environment passed to template");if(!a||!a.main)throw new n["default"]("Unknown template object: "+typeof a);a.main.decorator=a.main_d,c.VM.checkRevision(a.compiler);var f={strict:function(a,b){if(!(b in a))throw new n["default"]('"'+b+'" not defined in '+a);return a[b]},lookup:function(a,b){for(var c=a.length,d=0;d<c;d++)if(a[d]&&null!=a[d][b])return a[d][b]},lambda:function(a,b){return"function"==typeof a?a.call(b):a},escapeExpression:b.escapeExpression,invokePartial:d,fn:function(b){var c=a[b];return c.decorator=a[b+"_d"],c},programs:[],program:function(a,b,c,d,e){var f=this.programs[a],g=this.fn(a);return b||e||d||c?f=h(this,a,g,b,c,d,e):f||(f=this.programs[a]=h(this,a,g)),f},data:function(a,b){for(;a&&b--;)a=a._parent;return a},merge:function(a,c){var d=a||c;return a&&c&&a!==c&&(d=b.extend({},c,a)),d},nullContext:Object.seal({}),noop:c.VM.noop,compilerInfo:a.compiler};return e.isTop=!0,e._setup=function(b){b.partial?(f.helpers=b.helpers,f.partials=b.partials,f.decorators=b.decorators):(f.helpers=f.merge(b.helpers,c.helpers),a.usePartial&&(f.partials=f.merge(b.partials,c.partials)),(a.usePartial||a.useDecorators)&&(f.decorators=f.merge(b.decorators,c.decorators)))},e._child=function(b,c,d,e){if(a.useBlockParams&&!d)throw new n["default"]("must pass block params");if(a.useDepths&&!e)throw new n["default"]("must pass parent depths");return h(f,b,a[b],c,0,d,e)},e}function h(a,b,c,d,e,f,g){function h(b){var e=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],h=g;return!g||b==g[0]||b===a.nullContext&&null===g[0]||(h=[b].concat(g)),c(a,b,a.helpers,a.partials,e.data||d,f&&[e.blockParams].concat(f),h)}return h=m(c,h,a,g,d,f),h.program=b,h.depth=g?g.length:0,h.blockParams=e||0,h}function i(a,b,c){return a?a.call||c.name||(c.name=a,a=c.partials[a]):a="@partial-block"===c.name?c.data["partial-block"]:c.partials[c.name],a}function j(a,c,e){var f=e.data&&e.data["partial-block"];e.partial=!0,e.ids&&(e.data.contextPath=e.ids[0]||e.data.contextPath);var g=void 0;if(e.fn&&e.fn!==k&&!function(){e.data=d.createFrame(e.data);var a=e.fn;g=e.data["partial-block"]=function(b){var c=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];return c.data=d.createFrame(c.data),c.data["partial-block"]=f,a(b,c)},a.partials&&(e.partials=b.extend({},e.partials,a.partials))}(),void 0===a&&g&&(a=g),void 0===a)throw new n["default"]("The partial "+e.name+" could not be found");if(a instanceof Function)return a(c,e)}function k(){return""}function l(a,b){return b&&"root"in b||(b=b?d.createFrame(b):{},b.root=a),b}function m(a,c,d,e,f,g){if(a.decorator){var h={};c=a.decorator(c,h,d,e&&e[0],f,g,e),b.extend(c,h)}return c}a.__esModule=!0,a.checkRevision=f,a.template=g,a.wrapProgram=h,a.resolvePartial=i,a.invokePartial=j,a.noop=k;var n=e(c)}),define("handlebars/no-conflict",["exports","module"],function(a,b){"use strict";b.exports=function(a){var b="undefined"!=typeof global?global:window,c=b.Handlebars;a.noConflict=function(){return b.Handlebars===a&&(b.Handlebars=c),a}}}),define("handlebars.runtime",["exports","module","./handlebars/base","./handlebars/safe-string","./handlebars/exception","./handlebars/utils","./handlebars/runtime","./handlebars/no-conflict"],function(a,b,c,d,e,f,g,h){"use strict";function i(a){return a&&a.__esModule?a:{"default":a}}function j(){var a=new c.HandlebarsEnvironment;return f.extend(a,c),a.SafeString=k["default"],a.Exception=l["default"],a.Utils=f,a.escapeExpression=f.escapeExpression,a.VM=g,a.template=function(b){return g.template(b,a)},a}var k=i(d),l=i(e),m=i(h),n=j();n.create=j,m["default"](n),n["default"]=n,b.exports=n}),define("handlebars/compiler/ast",["exports","module"],function(a,b){"use strict";var c={helpers:{helperExpression:function(a){return"SubExpression"===a.type||("MustacheStatement"===a.type||"BlockStatement"===a.type)&&!!(a.params&&a.params.length||a.hash)},scopedId:function(a){return/^\.|this\b/.test(a.original)},simpleId:function(a){return 1===a.parts.length&&!c.helpers.scopedId(a)&&!a.depth}}};b.exports=c}),define("handlebars/compiler/parser",["exports","module"],function(a,b){"use strict";var c=function(){function a(){this.yy={}}var b={trace:function(){},yy:{},symbols_:{error:2,root:3,program:4,EOF:5,program_repetition0:6,statement:7,mustache:8,block:9,rawBlock:10,partial:11,partialBlock:12,content:13,COMMENT:14,CONTENT:15,openRawBlock:16,rawBlock_repetition_plus0:17,END_RAW_BLOCK:18,OPEN_RAW_BLOCK:19,helperName:20,openRawBlock_repetition0:21,openRawBlock_option0:22,CLOSE_RAW_BLOCK:23,openBlock:24,block_option0:25,closeBlock:26,openInverse:27,block_option1:28,OPEN_BLOCK:29,openBlock_repetition0:30,openBlock_option0:31,openBlock_option1:32,CLOSE:33,OPEN_INVERSE:34,openInverse_repetition0:35,openInverse_option0:36,openInverse_option1:37,openInverseChain:38,OPEN_INVERSE_CHAIN:39,openInverseChain_repetition0:40,openInverseChain_option0:41,openInverseChain_option1:42,inverseAndProgram:43,INVERSE:44,inverseChain:45,inverseChain_option0:46,OPEN_ENDBLOCK:47,OPEN:48,mustache_repetition0:49,mustache_option0:50,OPEN_UNESCAPED:51,mustache_repetition1:52,mustache_option1:53,CLOSE_UNESCAPED:54,OPEN_PARTIAL:55,partialName:56,partial_repetition0:57,partial_option0:58,openPartialBlock:59,OPEN_PARTIAL_BLOCK:60,openPartialBlock_repetition0:61,openPartialBlock_option0:62,param:63,sexpr:64,OPEN_SEXPR:65,sexpr_repetition0:66,sexpr_option0:67,CLOSE_SEXPR:68,hash:69,hash_repetition_plus0:70,hashSegment:71,ID:72,EQUALS:73,blockParams:74,OPEN_BLOCK_PARAMS:75,blockParams_repetition_plus0:76,CLOSE_BLOCK_PARAMS:77,path:78,dataName:79,STRING:80,NUMBER:81,BOOLEAN:82,UNDEFINED:83,NULL:84,DATA:85,pathSegments:86,SEP:87,$accept:0,$end:1},terminals_:{2:"error",5:"EOF",14:"COMMENT",15:"CONTENT",18:"END_RAW_BLOCK",19:"OPEN_RAW_BLOCK",23:"CLOSE_RAW_BLOCK",29:"OPEN_BLOCK",33:"CLOSE",34:"OPEN_INVERSE",39:"OPEN_INVERSE_CHAIN",44:"INVERSE",47:"OPEN_ENDBLOCK",48:"OPEN",51:"OPEN_UNESCAPED",54:"CLOSE_UNESCAPED",55:"OPEN_PARTIAL",60:"OPEN_PARTIAL_BLOCK",65:"OPEN_SEXPR",68:"CLOSE_SEXPR",72:"ID",73:"EQUALS",75:"OPEN_BLOCK_PARAMS",77:"CLOSE_BLOCK_PARAMS",80:"STRING",81:"NUMBER",82:"BOOLEAN",83:"UNDEFINED",84:"NULL",85:"DATA",87:"SEP"},productions_:[0,[3,2],[4,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[13,1],[10,3],[16,5],[9,4],[9,4],[24,6],[27,6],[38,6],[43,2],[45,3],[45,1],[26,3],[8,5],[8,5],[11,5],[12,3],[59,5],[63,1],[63,1],[64,5],[69,1],[71,3],[74,3],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[56,1],[56,1],[79,2],[78,1],[86,3],[86,1],[6,0],[6,2],[17,1],[17,2],[21,0],[21,2],[22,0],[22,1],[25,0],[25,1],[28,0],[28,1],[30,0],[30,2],[31,0],[31,1],[32,0],[32,1],[35,0],[35,2],[36,0],[36,1],[37,0],[37,1],[40,0],[40,2],[41,0],[41,1],[42,0],[42,1],[46,0],[46,1],[49,0],[49,2],[50,0],[50,1],[52,0],[52,2],[53,0],[53,1],[57,0],[57,2],[58,0],[58,1],[61,0],[61,2],[62,0],[62,1],[66,0],[66,2],[67,0],[67,1],[70,1],[70,2],[76,1],[76,2]],performAction:function(a,b,c,d,e,f,g){var h=f.length-1;switch(e){case 1:return f[h-1];case 2:this.$=d.prepareProgram(f[h]);break;case 3:this.$=f[h];break;case 4:this.$=f[h];break;case 5:this.$=f[h];break;case 6:this.$=f[h];break;case 7:this.$=f[h];break;case 8:this.$=f[h];break;case 9:this.$={type:"CommentStatement",value:d.stripComment(f[h]),strip:d.stripFlags(f[h],f[h]),loc:d.locInfo(this._$)};break;case 10:this.$={type:"ContentStatement",original:f[h],value:f[h],loc:d.locInfo(this._$)};break;case 11:this.$=d.prepareRawBlock(f[h-2],f[h-1],f[h],this._$);break;case 12:this.$={path:f[h-3],params:f[h-2],hash:f[h-1]};break;case 13:this.$=d.prepareBlock(f[h-3],f[h-2],f[h-1],f[h],!1,this._$);break;case 14:this.$=d.prepareBlock(f[h-3],f[h-2],f[h-1],f[h],!0,this._$);break;case 15:this.$={open:f[h-5],path:f[h-4],params:f[h-3],hash:f[h-2],blockParams:f[h-1],strip:d.stripFlags(f[h-5],f[h])};break;case 16:this.$={path:f[h-4],params:f[h-3],hash:f[h-2],blockParams:f[h-1],strip:d.stripFlags(f[h-5],f[h])};break;case 17:this.$={path:f[h-4],params:f[h-3],hash:f[h-2],blockParams:f[h-1],strip:d.stripFlags(f[h-5],f[h])};break;case 18:this.$={strip:d.stripFlags(f[h-1],f[h-1]),program:f[h]};break;case 19:var i=d.prepareBlock(f[h-2],f[h-1],f[h],f[h],!1,this._$),j=d.prepareProgram([i],f[h-1].loc);j.chained=!0,this.$={strip:f[h-2].strip,program:j,chain:!0};break;case 20:this.$=f[h];break;case 21:this.$={path:f[h-1],strip:d.stripFlags(f[h-2],f[h])};break;case 22:this.$=d.prepareMustache(f[h-3],f[h-2],f[h-1],f[h-4],d.stripFlags(f[h-4],f[h]),this._$);break;case 23:this.$=d.prepareMustache(f[h-3],f[h-2],f[h-1],f[h-4],d.stripFlags(f[h-4],f[h]),this._$);break;case 24:this.$={type:"PartialStatement",name:f[h-3],params:f[h-2],hash:f[h-1],indent:"",strip:d.stripFlags(f[h-4],f[h]),loc:d.locInfo(this._$)};break;case 25:this.$=d.preparePartialBlock(f[h-2],f[h-1],f[h],this._$);break;case 26:this.$={path:f[h-3],params:f[h-2],hash:f[h-1],strip:d.stripFlags(f[h-4],f[h])};break;case 27:this.$=f[h];break;case 28:this.$=f[h];break;case 29:this.$={type:"SubExpression",path:f[h-3],params:f[h-2],hash:f[h-1],loc:d.locInfo(this._$)};break;case 30:this.$={type:"Hash",pairs:f[h],loc:d.locInfo(this._$)};break;case 31:this.$={type:"HashPair",key:d.id(f[h-2]),value:f[h],loc:d.locInfo(this._$)};break;case 32:this.$=d.id(f[h-1]);break;case 33:this.$=f[h];break;case 34:this.$=f[h];break;case 35:this.$={type:"StringLiteral",value:f[h],original:f[h],loc:d.locInfo(this._$)};break;case 36:this.$={type:"NumberLiteral",value:Number(f[h]),original:Number(f[h]),loc:d.locInfo(this._$)};break;case 37:this.$={type:"BooleanLiteral",value:"true"===f[h],original:"true"===f[h],loc:d.locInfo(this._$)};break;case 38:this.$={type:"UndefinedLiteral",original:void 0,value:void 0,loc:d.locInfo(this._$)};break;case 39:this.$={type:"NullLiteral",original:null,value:null,loc:d.locInfo(this._$)};break;case 40:this.$=f[h];break;case 41:this.$=f[h];break;case 42:this.$=d.preparePath(!0,f[h],this._$);break;case 43:this.$=d.preparePath(!1,f[h],this._$);break;case 44:f[h-2].push({part:d.id(f[h]),original:f[h],separator:f[h-1]}),this.$=f[h-2];break;case 45:this.$=[{part:d.id(f[h]),original:f[h]}];break;case 46:this.$=[];break;case 47:f[h-1].push(f[h]);break;case 48:this.$=[f[h]];break;case 49:f[h-1].push(f[h]);break;case 50:this.$=[];break;case 51:f[h-1].push(f[h]);break;case 58:this.$=[];break;case 59:f[h-1].push(f[h]);break;case 64:this.$=[];break;case 65:f[h-1].push(f[h]);break;case 70:this.$=[];break;case 71:f[h-1].push(f[h]);break;case 78:this.$=[];break;case 79:f[h-1].push(f[h]);break;case 82:this.$=[];break;case 83:f[h-1].push(f[h]);break;case 86:this.$=[];break;case 87:f[h-1].push(f[h]);break;case 90:this.$=[];break;case 91:f[h-1].push(f[h]);break;case 94:this.$=[];break;case 95:f[h-1].push(f[h]);break;case 98:this.$=[f[h]];break;case 99:f[h-1].push(f[h]);break;case 100:this.$=[f[h]];break;case 101:f[h-1].push(f[h])}},table:[{3:1,4:2,5:[2,46],6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{1:[3]},{5:[1,4]},{5:[2,2],7:5,8:6,9:7,10:8,11:9,12:10,13:11,14:[1,12],15:[1,20],16:17,19:[1,23],24:15,27:16,29:[1,21],34:[1,22],39:[2,2],44:[2,2],47:[2,2],48:[1,13],51:[1,14],55:[1,18],59:19,60:[1,24]},{1:[2,1]},{5:[2,47],14:[2,47],15:[2,47],19:[2,47],29:[2,47],34:[2,47],39:[2,47],44:[2,47],47:[2,47],48:[2,47],51:[2,47],55:[2,47],60:[2,47]},{5:[2,3],14:[2,3],15:[2,3],19:[2,3],29:[2,3],34:[2,3],39:[2,3],44:[2,3],47:[2,3],48:[2,3],51:[2,3],55:[2,3],60:[2,3]},{5:[2,4],14:[2,4],15:[2,4],19:[2,4],29:[2,4],34:[2,4],39:[2,4],44:[2,4],47:[2,4],48:[2,4],51:[2,4],55:[2,4],60:[2,4]},{5:[2,5],14:[2,5],15:[2,5],19:[2,5],29:[2,5],34:[2,5],39:[2,5],44:[2,5],47:[2,5],48:[2,5],51:[2,5],55:[2,5],60:[2,5]},{5:[2,6],14:[2,6],15:[2,6],19:[2,6],29:[2,6],34:[2,6],39:[2,6],44:[2,6],47:[2,6],48:[2,6],51:[2,6],55:[2,6],60:[2,6]},{5:[2,7],14:[2,7],15:[2,7],19:[2,7],29:[2,7],34:[2,7],39:[2,7],44:[2,7],47:[2,7],48:[2,7],51:[2,7],55:[2,7],60:[2,7]},{5:[2,8],14:[2,8],15:[2,8],19:[2,8],29:[2,8],34:[2,8],39:[2,8],44:[2,8],47:[2,8],48:[2,8],51:[2,8],55:[2,8],60:[2,8]},{5:[2,9],14:[2,9],15:[2,9],19:[2,9],29:[2,9],34:[2,9],39:[2,9],44:[2,9],47:[2,9],48:[2,9],51:[2,9],55:[2,9],60:[2,9]},{20:25,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:36,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:37,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{4:38,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{13:40,15:[1,20],17:39},{20:42,56:41,64:43,65:[1,44],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:45,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{5:[2,10],14:[2,10],15:[2,10],18:[2,10],19:[2,10],29:[2,10],34:[2,10],39:[2,10],44:[2,10],47:[2,10],48:[2,10],51:[2,10],55:[2,10],60:[2,10]},{20:46,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:47,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:48,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:42,56:49,64:43,65:[1,44],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[2,78],49:50,65:[2,78],72:[2,78],80:[2,78],81:[2,78],82:[2,78],83:[2,78],84:[2,78],85:[2,78]},{23:[2,33],33:[2,33],54:[2,33],65:[2,33],68:[2,33],72:[2,33],75:[2,33],80:[2,33],81:[2,33],82:[2,33],83:[2,33],84:[2,33],85:[2,33]},{23:[2,34],33:[2,34],54:[2,34],65:[2,34],68:[2,34],72:[2,34],75:[2,34],80:[2,34],81:[2,34],82:[2,34],83:[2,34],84:[2,34],85:[2,34]},{23:[2,35],33:[2,35],54:[2,35],65:[2,35],68:[2,35],72:[2,35],75:[2,35],80:[2,35],81:[2,35],82:[2,35],83:[2,35],84:[2,35],85:[2,35]},{23:[2,36],33:[2,36],54:[2,36],65:[2,36],68:[2,36],72:[2,36],75:[2,36],80:[2,36],81:[2,36],82:[2,36],83:[2,36],84:[2,36],85:[2,36]},{23:[2,37],33:[2,37],54:[2,37],65:[2,37],68:[2,37],72:[2,37],75:[2,37],80:[2,37],81:[2,37],82:[2,37],83:[2,37],84:[2,37],85:[2,37]},{23:[2,38],33:[2,38],54:[2,38],65:[2,38],68:[2,38],72:[2,38],75:[2,38],80:[2,38],81:[2,38],82:[2,38],83:[2,38],84:[2,38],85:[2,38]},{23:[2,39],33:[2,39],54:[2,39],65:[2,39],68:[2,39],72:[2,39],75:[2,39],80:[2,39],81:[2,39],82:[2,39],83:[2,39],84:[2,39],85:[2,39]},{23:[2,43],33:[2,43],54:[2,43],65:[2,43],68:[2,43],72:[2,43],75:[2,43],80:[2,43],81:[2,43],82:[2,43],83:[2,43],84:[2,43],85:[2,43],87:[1,51]},{72:[1,35],86:52},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{52:53,54:[2,82],65:[2,82],72:[2,82],80:[2,82],81:[2,82],82:[2,82],83:[2,82],84:[2,82],85:[2,82]},{25:54,38:56,39:[1,58],43:57,44:[1,59],45:55,47:[2,54]},{28:60,43:61,44:[1,59],47:[2,56]},{13:63,15:[1,20],18:[1,62]},{15:[2,48],18:[2,48]},{33:[2,86],57:64,65:[2,86],72:[2,86],80:[2,86],81:[2,86],82:[2,86],83:[2,86],84:[2,86],85:[2,86]},{33:[2,40],65:[2,40],72:[2,40],80:[2,40],81:[2,40],82:[2,40],83:[2,40],84:[2,40],85:[2,40]},{33:[2,41],65:[2,41],72:[2,41],80:[2,41],81:[2,41],82:[2,41],83:[2,41],84:[2,41],85:[2,41]},{20:65,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:66,47:[1,67]},{30:68,33:[2,58],65:[2,58],72:[2,58],75:[2,58],80:[2,58],81:[2,58],82:[2,58],83:[2,58],84:[2,58],85:[2,58]},{33:[2,64],35:69,65:[2,64],72:[2,64],75:[2,64],80:[2,64],81:[2,64],82:[2,64],83:[2,64],84:[2,64],85:[2,64]},{21:70,23:[2,50],65:[2,50],72:[2,50],80:[2,50],81:[2,50],82:[2,50],83:[2,50],84:[2,50],85:[2,50]},{33:[2,90],61:71,65:[2,90],72:[2,90],80:[2,90],81:[2,90],82:[2,90],83:[2,90],84:[2,90],85:[2,90]},{20:75,33:[2,80],50:72,63:73,64:76,65:[1,44],69:74,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{72:[1,80]},{23:[2,42],33:[2,42],54:[2,42],65:[2,42],68:[2,42],72:[2,42],75:[2,42],80:[2,42],81:[2,42],82:[2,42],83:[2,42],84:[2,42],85:[2,42],87:[1,51]},{20:75,53:81,54:[2,84],63:82,64:76,65:[1,44],69:83,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:84,47:[1,67]},{47:[2,55]},{4:85,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{47:[2,20]},{20:86,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:87,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{26:88,47:[1,67]},{47:[2,57]},{5:[2,11],14:[2,11],15:[2,11],19:[2,11],29:[2,11],34:[2,11],39:[2,11],44:[2,11],47:[2,11],48:[2,11],51:[2,11],55:[2,11],60:[2,11]},{15:[2,49],18:[2,49]},{20:75,33:[2,88],58:89,63:90,64:76,65:[1,44],69:91,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{65:[2,94],66:92,68:[2,94],72:[2,94],80:[2,94],81:[2,94],82:[2,94],83:[2,94],84:[2,94],85:[2,94]},{5:[2,25],14:[2,25],15:[2,25],19:[2,25],29:[2,25],34:[2,25],39:[2,25],44:[2,25],47:[2,25],48:[2,25],51:[2,25],55:[2,25],60:[2,25]},{20:93,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:75,31:94,33:[2,60],63:95,64:76,65:[1,44],69:96,70:77,71:78,72:[1,79],75:[2,60],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:75,33:[2,66],36:97,63:98,64:76,65:[1,44],69:99,70:77,71:78,72:[1,79],75:[2,66],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:75,22:100,23:[2,52],63:101,64:76,65:[1,44],69:102,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:75,33:[2,92],62:103,63:104,64:76,65:[1,44],69:105,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,106]},{33:[2,79],65:[2,79],72:[2,79],80:[2,79],81:[2,79],82:[2,79],83:[2,79],84:[2,79],85:[2,79]},{33:[2,81]},{23:[2,27],33:[2,27],54:[2,27],65:[2,27],68:[2,27],72:[2,27],75:[2,27],80:[2,27],81:[2,27],82:[2,27],83:[2,27],84:[2,27],85:[2,27]},{23:[2,28],33:[2,28],54:[2,28],65:[2,28],68:[2,28],72:[2,28],75:[2,28],80:[2,28],81:[2,28],82:[2,28],83:[2,28],84:[2,28],85:[2,28]},{23:[2,30],33:[2,30],54:[2,30],68:[2,30],71:107,72:[1,108],75:[2,30]},{23:[2,98],33:[2,98],54:[2,98],68:[2,98],72:[2,98],75:[2,98]},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],73:[1,109],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{23:[2,44],33:[2,44],54:[2,44],65:[2,44],68:[2,44],72:[2,44],75:[2,44],80:[2,44],81:[2,44],82:[2,44],83:[2,44],84:[2,44],85:[2,44],87:[2,44]},{54:[1,110]},{54:[2,83],65:[2,83],72:[2,83],80:[2,83],81:[2,83],82:[2,83],83:[2,83],84:[2,83],85:[2,83]},{54:[2,85]},{5:[2,13],14:[2,13],15:[2,13],19:[2,13],29:[2,13],34:[2,13],39:[2,13],44:[2,13],47:[2,13],48:[2,13],51:[2,13],55:[2,13],60:[2,13]},{38:56,39:[1,58],43:57,44:[1,59],45:112,46:111,47:[2,76]},{33:[2,70],40:113,65:[2,70],72:[2,70],75:[2,70],80:[2,70],81:[2,70],82:[2,70],83:[2,70],84:[2,70],85:[2,70]},{47:[2,18]},{5:[2,14],14:[2,14],15:[2,14],19:[2,14],29:[2,14],34:[2,14],39:[2,14],44:[2,14],47:[2,14],48:[2,14],51:[2,14],55:[2,14],60:[2,14]},{33:[1,114]},{33:[2,87],65:[2,87],72:[2,87],80:[2,87],81:[2,87],82:[2,87],83:[2,87],84:[2,87],85:[2,87]},{33:[2,89]},{20:75,63:116,64:76,65:[1,44],67:115,68:[2,96],69:117,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,118]},{32:119,33:[2,62],74:120,75:[1,121]},{33:[2,59],65:[2,59],72:[2,59],75:[2,59],80:[2,59],81:[2,59],82:[2,59],83:[2,59],84:[2,59],85:[2,59]},{33:[2,61],75:[2,61]},{33:[2,68],37:122,74:123,75:[1,121]},{33:[2,65],65:[2,65],72:[2,65],75:[2,65],80:[2,65],81:[2,65],82:[2,65],83:[2,65],84:[2,65],85:[2,65]},{33:[2,67],75:[2,67]},{23:[1,124]},{23:[2,51],65:[2,51],72:[2,51],80:[2,51],81:[2,51],82:[2,51],83:[2,51],84:[2,51],85:[2,51]},{23:[2,53]},{33:[1,125]},{33:[2,91],65:[2,91],72:[2,91],80:[2,91],81:[2,91],82:[2,91],83:[2,91],84:[2,91],85:[2,91]},{33:[2,93]},{5:[2,22],14:[2,22],15:[2,22],19:[2,22],29:[2,22],34:[2,22],39:[2,22],44:[2,22],47:[2,22],48:[2,22],51:[2,22],55:[2,22],60:[2,22]},{23:[2,99],33:[2,99],54:[2,99],68:[2,99],72:[2,99],75:[2,99]},{73:[1,109]},{20:75,63:126,64:76,65:[1,44],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,23],14:[2,23],15:[2,23],19:[2,23],29:[2,23],34:[2,23],39:[2,23],44:[2,23],47:[2,23],48:[2,23],51:[2,23],55:[2,23],60:[2,23]},{47:[2,19]},{47:[2,77]},{20:75,33:[2,72],41:127,63:128,64:76,65:[1,44],69:129,70:77,71:78,72:[1,79],75:[2,72],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,24],14:[2,24],15:[2,24],19:[2,24],29:[2,24],34:[2,24],39:[2,24],44:[2,24],47:[2,24],48:[2,24],51:[2,24],55:[2,24],60:[2,24]},{68:[1,130]},{65:[2,95],68:[2,95],72:[2,95],80:[2,95],81:[2,95],82:[2,95],83:[2,95],84:[2,95],85:[2,95]},{68:[2,97]},{5:[2,21],14:[2,21],15:[2,21],19:[2,21],29:[2,21],34:[2,21],39:[2,21],44:[2,21],47:[2,21],48:[2,21],51:[2,21],55:[2,21],60:[2,21]},{33:[1,131]},{33:[2,63]},{72:[1,133],76:132},{33:[1,134]},{33:[2,69]},{15:[2,12]},{14:[2,26],15:[2,26],19:[2,26],29:[2,26],34:[2,26],47:[2,26],48:[2,26],51:[2,26],55:[2,26],60:[2,26]},{23:[2,31],33:[2,31],54:[2,31],68:[2,31],72:[2,31],75:[2,31]},{33:[2,74],42:135,74:136,75:[1,121]},{33:[2,71],65:[2,71],72:[2,71],75:[2,71],80:[2,71],81:[2,71],82:[2,71],83:[2,71],84:[2,71],85:[2,71]},{33:[2,73],75:[2,73]},{23:[2,29],33:[2,29],54:[2,29],65:[2,29],68:[2,29],72:[2,29],75:[2,29],80:[2,29],81:[2,29],82:[2,29],83:[2,29],84:[2,29],85:[2,29]},{14:[2,15],15:[2,15],19:[2,15],29:[2,15],34:[2,15],39:[2,15],44:[2,15],47:[2,15],48:[2,15],51:[2,15],55:[2,15],60:[2,15]},{72:[1,138],77:[1,137]},{72:[2,100],77:[2,100]},{14:[2,16],15:[2,16],19:[2,16],29:[2,16],34:[2,16],44:[2,16],47:[2,16],48:[2,16],51:[2,16],55:[2,16],60:[2,16]},{33:[1,139]},{33:[2,75]},{33:[2,32]},{72:[2,101],77:[2,101]},{14:[2,17],15:[2,17],19:[2,17],29:[2,17],34:[2,17],39:[2,17],44:[2,17],47:[2,17],48:[2,17],51:[2,17],55:[2,17],60:[2,17]}],defaultActions:{4:[2,1],55:[2,55],57:[2,20],61:[2,57],74:[2,81],83:[2,85],87:[2,18],91:[2,89],102:[2,53],105:[2,93],111:[2,19],112:[2,77],117:[2,97],120:[2,63],123:[2,69],124:[2,12],136:[2,75],137:[2,32]},parseError:function(a,b){ | ||
| 28 | throw new Error(a)},parse:function(a){function b(){var a;return a=c.lexer.lex()||1,"number"!=typeof a&&(a=c.symbols_[a]||a),a}var c=this,d=[0],e=[null],f=[],g=this.table,h="",i=0,j=0,k=0;this.lexer.setInput(a),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,this.yy.parser=this,"undefined"==typeof this.lexer.yylloc&&(this.lexer.yylloc={});var l=this.lexer.yylloc;f.push(l);var m=this.lexer.options&&this.lexer.options.ranges;"function"==typeof this.yy.parseError&&(this.parseError=this.yy.parseError);for(var n,o,p,q,r,s,t,u,v,w={};;){if(p=d[d.length-1],this.defaultActions[p]?q=this.defaultActions[p]:(null!==n&&"undefined"!=typeof n||(n=b()),q=g[p]&&g[p][n]),"undefined"==typeof q||!q.length||!q[0]){var x="";if(!k){v=[];for(s in g[p])this.terminals_[s]&&s>2&&v.push("'"+this.terminals_[s]+"'");x=this.lexer.showPosition?"Parse error on line "+(i+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+v.join(", ")+", got '"+(this.terminals_[n]||n)+"'":"Parse error on line "+(i+1)+": Unexpected "+(1==n?"end of input":"'"+(this.terminals_[n]||n)+"'"),this.parseError(x,{text:this.lexer.match,token:this.terminals_[n]||n,line:this.lexer.yylineno,loc:l,expected:v})}}if(q[0]instanceof Array&&q.length>1)throw new Error("Parse Error: multiple actions possible at state: "+p+", token: "+n);switch(q[0]){case 1:d.push(n),e.push(this.lexer.yytext),f.push(this.lexer.yylloc),d.push(q[1]),n=null,o?(n=o,o=null):(j=this.lexer.yyleng,h=this.lexer.yytext,i=this.lexer.yylineno,l=this.lexer.yylloc,k>0&&k--);break;case 2:if(t=this.productions_[q[1]][1],w.$=e[e.length-t],w._$={first_line:f[f.length-(t||1)].first_line,last_line:f[f.length-1].last_line,first_column:f[f.length-(t||1)].first_column,last_column:f[f.length-1].last_column},m&&(w._$.range=[f[f.length-(t||1)].range[0],f[f.length-1].range[1]]),r=this.performAction.call(w,h,j,i,this.yy,q[1],e,f),"undefined"!=typeof r)return r;t&&(d=d.slice(0,-1*t*2),e=e.slice(0,-1*t),f=f.slice(0,-1*t)),d.push(this.productions_[q[1]][0]),e.push(w.$),f.push(w._$),u=g[d[d.length-2]][d[d.length-1]],d.push(u);break;case 3:return!0}}return!0}},c=function(){var a={EOF:1,parseError:function(a,b){if(!this.yy.parser)throw new Error(a);this.yy.parser.parseError(a,b)},setInput:function(a){return this._input=a,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var a=this._input[0];this.yytext+=a,this.yyleng++,this.offset++,this.match+=a,this.matched+=a;var b=a.match(/(?:\r\n?|\n).*/g);return b?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),a},unput:function(a){var b=a.length,c=a.split(/(?:\r\n?|\n)/g);this._input=a+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-b-1),this.offset-=b;var d=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),c.length-1&&(this.yylineno-=c.length-1);var e=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:c?(c.length===d.length?this.yylloc.first_column:0)+d[d.length-c.length].length-c[0].length:this.yylloc.first_column-b},this.options.ranges&&(this.yylloc.range=[e[0],e[0]+this.yyleng-b]),this},more:function(){return this._more=!0,this},less:function(a){this.unput(this.match.slice(a))},pastInput:function(){var a=this.matched.substr(0,this.matched.length-this.match.length);return(a.length>20?"...":"")+a.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var a=this.match;return a.length<20&&(a+=this._input.substr(0,20-a.length)),(a.substr(0,20)+(a.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var a=this.pastInput(),b=new Array(a.length+1).join("-");return a+this.upcomingInput()+"\n"+b+"^"},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var a,b,c,d,e;this._more||(this.yytext="",this.match="");for(var f=this._currentRules(),g=0;g<f.length&&(c=this._input.match(this.rules[f[g]]),!c||b&&!(c[0].length>b[0].length)||(b=c,d=g,this.options.flex));g++);return b?(e=b[0].match(/(?:\r\n?|\n).*/g),e&&(this.yylineno+=e.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:e?e[e.length-1].length-e[e.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+b[0].length},this.yytext+=b[0],this.match+=b[0],this.matches=b,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._input=this._input.slice(b[0].length),this.matched+=b[0],a=this.performAction.call(this,this.yy,this,f[d],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),a?a:void 0):""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var a=this.next();return"undefined"!=typeof a?a:this.lex()},begin:function(a){this.conditionStack.push(a)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(a){this.begin(a)}};return a.options={},a.performAction=function(a,b,c,d){function e(a,c){return b.yytext=b.yytext.substr(a,b.yyleng-c)}switch(c){case 0:if("\\\\"===b.yytext.slice(-2)?(e(0,1),this.begin("mu")):"\\"===b.yytext.slice(-1)?(e(0,1),this.begin("emu")):this.begin("mu"),b.yytext)return 15;break;case 1:return 15;case 2:return this.popState(),15;case 3:return this.begin("raw"),15;case 4:return this.popState(),"raw"===this.conditionStack[this.conditionStack.length-1]?15:(b.yytext=b.yytext.substr(5,b.yyleng-9),"END_RAW_BLOCK");case 5:return 15;case 6:return this.popState(),14;case 7:return 65;case 8:return 68;case 9:return 19;case 10:return this.popState(),this.begin("raw"),23;case 11:return 55;case 12:return 60;case 13:return 29;case 14:return 47;case 15:return this.popState(),44;case 16:return this.popState(),44;case 17:return 34;case 18:return 39;case 19:return 51;case 20:return 48;case 21:this.unput(b.yytext),this.popState(),this.begin("com");break;case 22:return this.popState(),14;case 23:return 48;case 24:return 73;case 25:return 72;case 26:return 72;case 27:return 87;case 28:break;case 29:return this.popState(),54;case 30:return this.popState(),33;case 31:return b.yytext=e(1,2).replace(/\\"/g,'"'),80;case 32:return b.yytext=e(1,2).replace(/\\'/g,"'"),80;case 33:return 85;case 34:return 82;case 35:return 82;case 36:return 83;case 37:return 84;case 38:return 81;case 39:return 75;case 40:return 77;case 41:return 72;case 42:return b.yytext=b.yytext.replace(/\\([\\\]])/g,"$1"),72;case 43:return"INVALID";case 44:return 5}},a.rules=[/^(?:[^\x00]*?(?=(\{\{)))/,/^(?:[^\x00]+)/,/^(?:[^\x00]{2,}?(?=(\{\{|\\\{\{|\\\\\{\{|$)))/,/^(?:\{\{\{\{(?=[^\/]))/,/^(?:\{\{\{\{\/[^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=[=}\s\/.])\}\}\}\})/,/^(?:[^\x00]*?(?=(\{\{\{\{)))/,/^(?:[\s\S]*?--(~)?\}\})/,/^(?:\()/,/^(?:\))/,/^(?:\{\{\{\{)/,/^(?:\}\}\}\})/,/^(?:\{\{(~)?>)/,/^(?:\{\{(~)?#>)/,/^(?:\{\{(~)?#\*?)/,/^(?:\{\{(~)?\/)/,/^(?:\{\{(~)?\^\s*(~)?\}\})/,/^(?:\{\{(~)?\s*else\s*(~)?\}\})/,/^(?:\{\{(~)?\^)/,/^(?:\{\{(~)?\s*else\b)/,/^(?:\{\{(~)?\{)/,/^(?:\{\{(~)?&)/,/^(?:\{\{(~)?!--)/,/^(?:\{\{(~)?![\s\S]*?\}\})/,/^(?:\{\{(~)?\*?)/,/^(?:=)/,/^(?:\.\.)/,/^(?:\.(?=([=~}\s\/.)|])))/,/^(?:[\/.])/,/^(?:\s+)/,/^(?:\}(~)?\}\})/,/^(?:(~)?\}\})/,/^(?:"(\\["]|[^"])*")/,/^(?:'(\\[']|[^'])*')/,/^(?:@)/,/^(?:true(?=([~}\s)])))/,/^(?:false(?=([~}\s)])))/,/^(?:undefined(?=([~}\s)])))/,/^(?:null(?=([~}\s)])))/,/^(?:-?[0-9]+(?:\.[0-9]+)?(?=([~}\s)])))/,/^(?:as\s+\|)/,/^(?:\|)/,/^(?:([^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=([=~}\s\/.)|]))))/,/^(?:\[(\\\]|[^\]])*\])/,/^(?:.)/,/^(?:$)/],a.conditions={mu:{rules:[7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],inclusive:!1},emu:{rules:[2],inclusive:!1},com:{rules:[6],inclusive:!1},raw:{rules:[3,4,5],inclusive:!1},INITIAL:{rules:[0,1,44],inclusive:!0}},a}();return b.lexer=c,a.prototype=b,b.Parser=a,new a}();b.exports=c}),define("handlebars/compiler/visitor",["exports","module","../exception"],function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(){this.parents=[]}function f(a){this.acceptRequired(a,"path"),this.acceptArray(a.params),this.acceptKey(a,"hash")}function g(a){f.call(this,a),this.acceptKey(a,"program"),this.acceptKey(a,"inverse")}function h(a){this.acceptRequired(a,"name"),this.acceptArray(a.params),this.acceptKey(a,"hash")}var i=d(c);e.prototype={constructor:e,mutating:!1,acceptKey:function(a,b){var c=this.accept(a[b]);if(this.mutating){if(c&&!e.prototype[c.type])throw new i["default"]('Unexpected node type "'+c.type+'" found when accepting '+b+" on "+a.type);a[b]=c}},acceptRequired:function(a,b){if(this.acceptKey(a,b),!a[b])throw new i["default"](a.type+" requires "+b)},acceptArray:function(a){for(var b=0,c=a.length;b<c;b++)this.acceptKey(a,b),a[b]||(a.splice(b,1),b--,c--)},accept:function(a){if(a){if(!this[a.type])throw new i["default"]("Unknown type: "+a.type,a);this.current&&this.parents.unshift(this.current),this.current=a;var b=this[a.type](a);return this.current=this.parents.shift(),!this.mutating||b?b:b!==!1?a:void 0}},Program:function(a){this.acceptArray(a.body)},MustacheStatement:f,Decorator:f,BlockStatement:g,DecoratorBlock:g,PartialStatement:h,PartialBlockStatement:function(a){h.call(this,a),this.acceptKey(a,"program")},ContentStatement:function(){},CommentStatement:function(){},SubExpression:f,PathExpression:function(){},StringLiteral:function(){},NumberLiteral:function(){},BooleanLiteral:function(){},UndefinedLiteral:function(){},NullLiteral:function(){},Hash:function(a){this.acceptArray(a.pairs)},HashPair:function(a){this.acceptRequired(a,"value")}},b.exports=e}),define("handlebars/compiler/whitespace-control",["exports","module","./visitor"],function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(){var a=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];this.options=a}function f(a,b,c){void 0===b&&(b=a.length);var d=a[b-1],e=a[b-2];return d?"ContentStatement"===d.type?(e||!c?/\r?\n\s*?$/:/(^|\r?\n)\s*?$/).test(d.original):void 0:c}function g(a,b,c){void 0===b&&(b=-1);var d=a[b+1],e=a[b+2];return d?"ContentStatement"===d.type?(e||!c?/^\s*?\r?\n/:/^\s*?(\r?\n|$)/).test(d.original):void 0:c}function h(a,b,c){var d=a[null==b?0:b+1];if(d&&"ContentStatement"===d.type&&(c||!d.rightStripped)){var e=d.value;d.value=d.value.replace(c?/^\s+/:/^[ \t]*\r?\n?/,""),d.rightStripped=d.value!==e}}function i(a,b,c){var d=a[null==b?a.length-1:b-1];if(d&&"ContentStatement"===d.type&&(c||!d.leftStripped)){var e=d.value;return d.value=d.value.replace(c?/\s+$/:/[ \t]+$/,""),d.leftStripped=d.value!==e,d.leftStripped}}var j=d(c);e.prototype=new j["default"],e.prototype.Program=function(a){var b=!this.options.ignoreStandalone,c=!this.isRootSeen;this.isRootSeen=!0;for(var d=a.body,e=0,j=d.length;e<j;e++){var k=d[e],l=this.accept(k);if(l){var m=f(d,e,c),n=g(d,e,c),o=l.openStandalone&&m,p=l.closeStandalone&&n,q=l.inlineStandalone&&m&&n;l.close&&h(d,e,!0),l.open&&i(d,e,!0),b&&q&&(h(d,e),i(d,e)&&"PartialStatement"===k.type&&(k.indent=/([ \t]+$)/.exec(d[e-1].original)[1])),b&&o&&(h((k.program||k.inverse).body),i(d,e)),b&&p&&(h(d,e),i((k.inverse||k.program).body))}}return a},e.prototype.BlockStatement=e.prototype.DecoratorBlock=e.prototype.PartialBlockStatement=function(a){this.accept(a.program),this.accept(a.inverse);var b=a.program||a.inverse,c=a.program&&a.inverse,d=c,e=c;if(c&&c.chained)for(d=c.body[0].program;e.chained;)e=e.body[e.body.length-1].program;var j={open:a.openStrip.open,close:a.closeStrip.close,openStandalone:g(b.body),closeStandalone:f((d||b).body)};if(a.openStrip.close&&h(b.body,null,!0),c){var k=a.inverseStrip;k.open&&i(b.body,null,!0),k.close&&h(d.body,null,!0),a.closeStrip.open&&i(e.body,null,!0),!this.options.ignoreStandalone&&f(b.body)&&g(d.body)&&(i(b.body),h(d.body))}else a.closeStrip.open&&i(b.body,null,!0);return j},e.prototype.Decorator=e.prototype.MustacheStatement=function(a){return a.strip},e.prototype.PartialStatement=e.prototype.CommentStatement=function(a){var b=a.strip||{};return{inlineStandalone:!0,open:b.open,close:b.close}},b.exports=e}),define("handlebars/compiler/helpers",["exports","../exception"],function(a,b){"use strict";function c(a){return a&&a.__esModule?a:{"default":a}}function d(a,b){if(b=b.path?b.path.original:b,a.path.original!==b){var c={loc:a.path.loc};throw new o["default"](a.path.original+" doesn't match "+b,c)}}function e(a,b){this.source=a,this.start={line:b.first_line,column:b.first_column},this.end={line:b.last_line,column:b.last_column}}function f(a){return/^\[.*\]$/.test(a)?a.substr(1,a.length-2):a}function g(a,b){return{open:"~"===a.charAt(2),close:"~"===b.charAt(b.length-3)}}function h(a){return a.replace(/^\{\{~?\!-?-?/,"").replace(/-?-?~?\}\}$/,"")}function i(a,b,c){c=this.locInfo(c);for(var d=a?"@":"",e=[],f=0,g="",h=0,i=b.length;h<i;h++){var j=b[h].part,k=b[h].original!==j;if(d+=(b[h].separator||"")+j,k||".."!==j&&"."!==j&&"this"!==j)e.push(j);else{if(e.length>0)throw new o["default"]("Invalid path: "+d,{loc:c});".."===j&&(f++,g+="../")}}return{type:"PathExpression",data:a,depth:f,parts:e,original:d,loc:c}}function j(a,b,c,d,e,f){var g=d.charAt(3)||d.charAt(2),h="{"!==g&&"&"!==g,i=/\*/.test(d);return{type:i?"Decorator":"MustacheStatement",path:a,params:b,hash:c,escaped:h,strip:e,loc:this.locInfo(f)}}function k(a,b,c,e){d(a,c),e=this.locInfo(e);var f={type:"Program",body:b,strip:{},loc:e};return{type:"BlockStatement",path:a.path,params:a.params,hash:a.hash,program:f,openStrip:{},inverseStrip:{},closeStrip:{},loc:e}}function l(a,b,c,e,f,g){e&&e.path&&d(a,e);var h=/\*/.test(a.open);b.blockParams=a.blockParams;var i=void 0,j=void 0;if(c){if(h)throw new o["default"]("Unexpected inverse block on decorator",c);c.chain&&(c.program.body[0].closeStrip=e.strip),j=c.strip,i=c.program}return f&&(f=i,i=b,b=f),{type:h?"DecoratorBlock":"BlockStatement",path:a.path,params:a.params,hash:a.hash,program:b,inverse:i,openStrip:a.strip,inverseStrip:j,closeStrip:e&&e.strip,loc:this.locInfo(g)}}function m(a,b){if(!b&&a.length){var c=a[0].loc,d=a[a.length-1].loc;c&&d&&(b={source:c.source,start:{line:c.start.line,column:c.start.column},end:{line:d.end.line,column:d.end.column}})}return{type:"Program",body:a,strip:{},loc:b}}function n(a,b,c,e){return d(a,c),{type:"PartialBlockStatement",name:a.path,params:a.params,hash:a.hash,program:b,openStrip:a.strip,closeStrip:c&&c.strip,loc:this.locInfo(e)}}a.__esModule=!0,a.SourceLocation=e,a.id=f,a.stripFlags=g,a.stripComment=h,a.preparePath=i,a.prepareMustache=j,a.prepareRawBlock=k,a.prepareBlock=l,a.prepareProgram=m,a.preparePartialBlock=n;var o=c(b)}),define("handlebars/compiler/base",["exports","./parser","./whitespace-control","./helpers","../utils"],function(a,b,c,d,e){"use strict";function f(a){return a&&a.__esModule?a:{"default":a}}function g(a,b){if("Program"===a.type)return a;h["default"].yy=j,j.locInfo=function(a){return new j.SourceLocation(b&&b.srcName,a)};var c=new i["default"](b);return c.accept(h["default"].parse(a))}a.__esModule=!0,a.parse=g;var h=f(b),i=f(c);a.parser=h["default"];var j={};e.extend(j,d)}),define("handlebars/compiler/compiler",["exports","../exception","../utils","./ast"],function(a,b,c,d){"use strict";function e(a){return a&&a.__esModule?a:{"default":a}}function f(){}function g(a,b,c){if(null==a||"string"!=typeof a&&"Program"!==a.type)throw new k["default"]("You must pass a string or Handlebars AST to Handlebars.precompile. You passed "+a);b=b||{},"data"in b||(b.data=!0),b.compat&&(b.useDepths=!0);var d=c.parse(a,b),e=(new c.Compiler).compile(d,b);return(new c.JavaScriptCompiler).compile(e,b)}function h(a,b,d){function e(){var c=d.parse(a,b),e=(new d.Compiler).compile(c,b),f=(new d.JavaScriptCompiler).compile(e,b,void 0,!0);return d.template(f)}function f(a,b){return g||(g=e()),g.call(this,a,b)}if(void 0===b&&(b={}),null==a||"string"!=typeof a&&"Program"!==a.type)throw new k["default"]("You must pass a string or Handlebars AST to Handlebars.compile. You passed "+a);b=c.extend({},b),"data"in b||(b.data=!0),b.compat&&(b.useDepths=!0);var g=void 0;return f._setup=function(a){return g||(g=e()),g._setup(a)},f._child=function(a,b,c,d){return g||(g=e()),g._child(a,b,c,d)},f}function i(a,b){if(a===b)return!0;if(c.isArray(a)&&c.isArray(b)&&a.length===b.length){for(var d=0;d<a.length;d++)if(!i(a[d],b[d]))return!1;return!0}}function j(a){if(!a.path.parts){var b=a.path;a.path={type:"PathExpression",data:!1,depth:0,parts:[b.original+""],original:b.original+"",loc:b.loc}}}a.__esModule=!0,a.Compiler=f,a.precompile=g,a.compile=h;var k=e(b),l=e(d),m=[].slice;f.prototype={compiler:f,equals:function(a){var b=this.opcodes.length;if(a.opcodes.length!==b)return!1;for(var c=0;c<b;c++){var d=this.opcodes[c],e=a.opcodes[c];if(d.opcode!==e.opcode||!i(d.args,e.args))return!1}b=this.children.length;for(var c=0;c<b;c++)if(!this.children[c].equals(a.children[c]))return!1;return!0},guid:0,compile:function(a,b){this.sourceNode=[],this.opcodes=[],this.children=[],this.options=b,this.stringParams=b.stringParams,this.trackIds=b.trackIds,b.blockParams=b.blockParams||[];var c=b.knownHelpers;if(b.knownHelpers={helperMissing:!0,blockHelperMissing:!0,each:!0,"if":!0,unless:!0,"with":!0,log:!0,lookup:!0},c)for(var d in c)d in c&&(this.options.knownHelpers[d]=c[d]);return this.accept(a)},compileProgram:function(a){var b=new this.compiler,c=b.compile(a,this.options),d=this.guid++;return this.usePartial=this.usePartial||c.usePartial,this.children[d]=c,this.useDepths=this.useDepths||c.useDepths,d},accept:function(a){if(!this[a.type])throw new k["default"]("Unknown type: "+a.type,a);this.sourceNode.unshift(a);var b=this[a.type](a);return this.sourceNode.shift(),b},Program:function(a){this.options.blockParams.unshift(a.blockParams);for(var b=a.body,c=b.length,d=0;d<c;d++)this.accept(b[d]);return this.options.blockParams.shift(),this.isSimple=1===c,this.blockParams=a.blockParams?a.blockParams.length:0,this},BlockStatement:function(a){j(a);var b=a.program,c=a.inverse;b=b&&this.compileProgram(b),c=c&&this.compileProgram(c);var d=this.classifySexpr(a);"helper"===d?this.helperSexpr(a,b,c):"simple"===d?(this.simpleSexpr(a),this.opcode("pushProgram",b),this.opcode("pushProgram",c),this.opcode("emptyHash"),this.opcode("blockValue",a.path.original)):(this.ambiguousSexpr(a,b,c),this.opcode("pushProgram",b),this.opcode("pushProgram",c),this.opcode("emptyHash"),this.opcode("ambiguousBlockValue")),this.opcode("append")},DecoratorBlock:function(a){var b=a.program&&this.compileProgram(a.program),c=this.setupFullMustacheParams(a,b,void 0),d=a.path;this.useDecorators=!0,this.opcode("registerDecorator",c.length,d.original)},PartialStatement:function(a){this.usePartial=!0;var b=a.program;b&&(b=this.compileProgram(a.program));var c=a.params;if(c.length>1)throw new k["default"]("Unsupported number of partial arguments: "+c.length,a);c.length||(this.options.explicitPartialContext?this.opcode("pushLiteral","undefined"):c.push({type:"PathExpression",parts:[],depth:0}));var d=a.name.original,e="SubExpression"===a.name.type;e&&this.accept(a.name),this.setupFullMustacheParams(a,b,void 0,!0);var f=a.indent||"";this.options.preventIndent&&f&&(this.opcode("appendContent",f),f=""),this.opcode("invokePartial",e,d,f),this.opcode("append")},PartialBlockStatement:function(a){this.PartialStatement(a)},MustacheStatement:function(a){this.SubExpression(a),a.escaped&&!this.options.noEscape?this.opcode("appendEscaped"):this.opcode("append")},Decorator:function(a){this.DecoratorBlock(a)},ContentStatement:function(a){a.value&&this.opcode("appendContent",a.value)},CommentStatement:function(){},SubExpression:function(a){j(a);var b=this.classifySexpr(a);"simple"===b?this.simpleSexpr(a):"helper"===b?this.helperSexpr(a):this.ambiguousSexpr(a)},ambiguousSexpr:function(a,b,c){var d=a.path,e=d.parts[0],f=null!=b||null!=c;this.opcode("getContext",d.depth),this.opcode("pushProgram",b),this.opcode("pushProgram",c),d.strict=!0,this.accept(d),this.opcode("invokeAmbiguous",e,f)},simpleSexpr:function(a){var b=a.path;b.strict=!0,this.accept(b),this.opcode("resolvePossibleLambda")},helperSexpr:function(a,b,c){var d=this.setupFullMustacheParams(a,b,c),e=a.path,f=e.parts[0];if(this.options.knownHelpers[f])this.opcode("invokeKnownHelper",d.length,f);else{if(this.options.knownHelpersOnly)throw new k["default"]("You specified knownHelpersOnly, but used the unknown helper "+f,a);e.strict=!0,e.falsy=!0,this.accept(e),this.opcode("invokeHelper",d.length,e.original,l["default"].helpers.simpleId(e))}},PathExpression:function(a){this.addDepth(a.depth),this.opcode("getContext",a.depth);var b=a.parts[0],c=l["default"].helpers.scopedId(a),d=!a.depth&&!c&&this.blockParamIndex(b);d?this.opcode("lookupBlockParam",d,a.parts):b?a.data?(this.options.data=!0,this.opcode("lookupData",a.depth,a.parts,a.strict)):this.opcode("lookupOnContext",a.parts,a.falsy,a.strict,c):this.opcode("pushContext")},StringLiteral:function(a){this.opcode("pushString",a.value)},NumberLiteral:function(a){this.opcode("pushLiteral",a.value)},BooleanLiteral:function(a){this.opcode("pushLiteral",a.value)},UndefinedLiteral:function(){this.opcode("pushLiteral","undefined")},NullLiteral:function(){this.opcode("pushLiteral","null")},Hash:function(a){var b=a.pairs,c=0,d=b.length;for(this.opcode("pushHash");c<d;c++)this.pushParam(b[c].value);for(;c--;)this.opcode("assignToHash",b[c].key);this.opcode("popHash")},opcode:function(a){this.opcodes.push({opcode:a,args:m.call(arguments,1),loc:this.sourceNode[0].loc})},addDepth:function(a){a&&(this.useDepths=!0)},classifySexpr:function(a){var b=l["default"].helpers.simpleId(a.path),c=b&&!!this.blockParamIndex(a.path.parts[0]),d=!c&&l["default"].helpers.helperExpression(a),e=!c&&(d||b);if(e&&!d){var f=a.path.parts[0],g=this.options;g.knownHelpers[f]?d=!0:g.knownHelpersOnly&&(e=!1)}return d?"helper":e?"ambiguous":"simple"},pushParams:function(a){for(var b=0,c=a.length;b<c;b++)this.pushParam(a[b])},pushParam:function(a){var b=null!=a.value?a.value:a.original||"";if(this.stringParams)b.replace&&(b=b.replace(/^(\.?\.\/)*/g,"").replace(/\//g,".")),a.depth&&this.addDepth(a.depth),this.opcode("getContext",a.depth||0),this.opcode("pushStringParam",b,a.type),"SubExpression"===a.type&&this.accept(a);else{if(this.trackIds){var c=void 0;if(!a.parts||l["default"].helpers.scopedId(a)||a.depth||(c=this.blockParamIndex(a.parts[0])),c){var d=a.parts.slice(1).join(".");this.opcode("pushId","BlockParam",c,d)}else b=a.original||b,b.replace&&(b=b.replace(/^this(?:\.|$)/,"").replace(/^\.\//,"").replace(/^\.$/,"")),this.opcode("pushId",a.type,b)}this.accept(a)}},setupFullMustacheParams:function(a,b,c,d){var e=a.params;return this.pushParams(e),this.opcode("pushProgram",b),this.opcode("pushProgram",c),a.hash?this.accept(a.hash):this.opcode("emptyHash",d),e},blockParamIndex:function(a){for(var b=0,d=this.options.blockParams.length;b<d;b++){var e=this.options.blockParams[b],f=e&&c.indexOf(e,a);if(e&&f>=0)return[b,f]}}}}),define("handlebars/compiler/code-gen",["exports","module","../utils"],function(a,b,c){"use strict";function d(a,b,d){if(c.isArray(a)){for(var e=[],f=0,g=a.length;f<g;f++)e.push(b.wrap(a[f],d));return e}return"boolean"==typeof a||"number"==typeof a?a+"":a}function e(a){this.srcFile=a,this.source=[]}var f=void 0;try{if("function"!=typeof define||!define.amd){var g=require("source-map");f=g.SourceNode}}catch(h){}f||(f=function(a,b,c,d){this.src="",d&&this.add(d)},f.prototype={add:function(a){c.isArray(a)&&(a=a.join("")),this.src+=a},prepend:function(a){c.isArray(a)&&(a=a.join("")),this.src=a+this.src},toStringWithSourceMap:function(){return{code:this.toString()}},toString:function(){return this.src}}),e.prototype={isEmpty:function(){return!this.source.length},prepend:function(a,b){this.source.unshift(this.wrap(a,b))},push:function(a,b){this.source.push(this.wrap(a,b))},merge:function(){var a=this.empty();return this.each(function(b){a.add([" ",b,"\n"])}),a},each:function(a){for(var b=0,c=this.source.length;b<c;b++)a(this.source[b])},empty:function(){var a=this.currentLocation||{start:{}};return new f(a.start.line,a.start.column,this.srcFile)},wrap:function(a){var b=arguments.length<=1||void 0===arguments[1]?this.currentLocation||{start:{}}:arguments[1];return a instanceof f?a:(a=d(a,this,b),new f(b.start.line,b.start.column,this.srcFile,a))},functionCall:function(a,b,c){return c=this.generateList(c),this.wrap([a,b?"."+b+"(":"(",c,")"])},quotedString:function(a){return'"'+(a+"").replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")+'"'},objectLiteral:function(a){var b=[];for(var c in a)if(a.hasOwnProperty(c)){var e=d(a[c],this);"undefined"!==e&&b.push([this.quotedString(c),":",e])}var f=this.generateList(b);return f.prepend("{"),f.add("}"),f},generateList:function(a){for(var b=this.empty(),c=0,e=a.length;c<e;c++)c&&b.add(","),b.add(d(a[c],this));return b},generateArray:function(a){var b=this.generateList(a);return b.prepend("["),b.add("]"),b}},b.exports=e}),define("handlebars/compiler/javascript-compiler",["exports","module","../base","../exception","../utils","./code-gen"],function(a,b,c,d,e,f){"use strict";function g(a){return a&&a.__esModule?a:{"default":a}}function h(a){this.value=a}function i(){}function j(a,b,c,d){var e=b.popStack(),f=0,g=c.length;for(a&&g--;f<g;f++)e=b.nameLookup(e,c[f],d);return a?[b.aliasable("container.strict"),"(",e,", ",b.quotedString(c[f]),")"]:e}var k=g(d),l=g(f);i.prototype={nameLookup:function(a,b){return i.isValidJavaScriptVariableName(b)?[a,".",b]:[a,"[",JSON.stringify(b),"]"]},depthedLookup:function(a){return[this.aliasable("container.lookup"),'(depths, "',a,'")']},compilerInfo:function(){var a=c.COMPILER_REVISION,b=c.REVISION_CHANGES[a];return[a,b]},appendToBuffer:function(a,b,c){return e.isArray(a)||(a=[a]),a=this.source.wrap(a,b),this.environment.isSimple?["return ",a,";"]:c?["buffer += ",a,";"]:(a.appendToBuffer=!0,a)},initializeBuffer:function(){return this.quotedString("")},compile:function(a,b,c,d){this.environment=a,this.options=b,this.stringParams=this.options.stringParams,this.trackIds=this.options.trackIds,this.precompile=!d,this.name=this.environment.name,this.isChild=!!c,this.context=c||{decorators:[],programs:[],environments:[]},this.preamble(),this.stackSlot=0,this.stackVars=[],this.aliases={},this.registers={list:[]},this.hashes=[],this.compileStack=[],this.inlineStack=[],this.blockParams=[],this.compileChildren(a,b),this.useDepths=this.useDepths||a.useDepths||a.useDecorators||this.options.compat,this.useBlockParams=this.useBlockParams||a.useBlockParams;var e=a.opcodes,f=void 0,g=void 0,h=void 0,i=void 0;for(h=0,i=e.length;h<i;h++)f=e[h],this.source.currentLocation=f.loc,g=g||f.loc,this[f.opcode].apply(this,f.args);if(this.source.currentLocation=g,this.pushSource(""),this.stackSlot||this.inlineStack.length||this.compileStack.length)throw new k["default"]("Compile completed with content left on stack");this.decorators.isEmpty()?this.decorators=void 0:(this.useDecorators=!0,this.decorators.prepend("var decorators = container.decorators;\n"),this.decorators.push("return fn;"),d?this.decorators=Function.apply(this,["fn","props","container","depth0","data","blockParams","depths",this.decorators.merge()]):(this.decorators.prepend("function(fn, props, container, depth0, data, blockParams, depths) {\n"),this.decorators.push("}\n"),this.decorators=this.decorators.merge()));var j=this.createFunctionContext(d);if(this.isChild)return j;var l={compiler:this.compilerInfo(),main:j};this.decorators&&(l.main_d=this.decorators,l.useDecorators=!0);var m=this.context,n=m.programs,o=m.decorators;for(h=0,i=n.length;h<i;h++)n[h]&&(l[h]=n[h],o[h]&&(l[h+"_d"]=o[h],l.useDecorators=!0));return this.environment.usePartial&&(l.usePartial=!0),this.options.data&&(l.useData=!0),this.useDepths&&(l.useDepths=!0),this.useBlockParams&&(l.useBlockParams=!0),this.options.compat&&(l.compat=!0),d?l.compilerOptions=this.options:(l.compiler=JSON.stringify(l.compiler),this.source.currentLocation={start:{line:1,column:0}},l=this.objectLiteral(l),b.srcName?(l=l.toStringWithSourceMap({file:b.destName}),l.map=l.map&&l.map.toString()):l=l.toString()),l},preamble:function(){this.lastContext=0,this.source=new l["default"](this.options.srcName),this.decorators=new l["default"](this.options.srcName)},createFunctionContext:function(a){var b="",c=this.stackVars.concat(this.registers.list);c.length>0&&(b+=", "+c.join(", "));var d=0;for(var e in this.aliases){var f=this.aliases[e];this.aliases.hasOwnProperty(e)&&f.children&&f.referenceCount>1&&(b+=", alias"+ ++d+"="+e,f.children[0]="alias"+d)}var g=["container","depth0","helpers","partials","data"];(this.useBlockParams||this.useDepths)&&g.push("blockParams"),this.useDepths&&g.push("depths");var h=this.mergeSource(b);return a?(g.push(h),Function.apply(this,g)):this.source.wrap(["function(",g.join(","),") {\n ",h,"}"])},mergeSource:function(a){var b=this.environment.isSimple,c=!this.forceBuffer,d=void 0,e=void 0,f=void 0,g=void 0;return this.source.each(function(a){a.appendToBuffer?(f?a.prepend(" + "):f=a,g=a):(f&&(e?f.prepend("buffer += "):d=!0,g.add(";"),f=g=void 0),e=!0,b||(c=!1))}),c?f?(f.prepend("return "),g.add(";")):e||this.source.push('return "";'):(a+=", buffer = "+(d?"":this.initializeBuffer()),f?(f.prepend("return buffer + "),g.add(";")):this.source.push("return buffer;")),a&&this.source.prepend("var "+a.substring(2)+(d?"":";\n")),this.source.merge()},blockValue:function(a){var b=this.aliasable("helpers.blockHelperMissing"),c=[this.contextName(0)];this.setupHelperArgs(a,0,c);var d=this.popStack();c.splice(1,0,d),this.push(this.source.functionCall(b,"call",c))},ambiguousBlockValue:function(){var a=this.aliasable("helpers.blockHelperMissing"),b=[this.contextName(0)];this.setupHelperArgs("",0,b,!0),this.flushInline();var c=this.topStack();b.splice(1,0,c),this.pushSource(["if (!",this.lastHelper,") { ",c," = ",this.source.functionCall(a,"call",b),"}"])},appendContent:function(a){this.pendingContent?a=this.pendingContent+a:this.pendingLocation=this.source.currentLocation,this.pendingContent=a},append:function(){if(this.isInline())this.replaceStack(function(a){return[" != null ? ",a,' : ""']}),this.pushSource(this.appendToBuffer(this.popStack()));else{var a=this.popStack();this.pushSource(["if (",a," != null) { ",this.appendToBuffer(a,void 0,!0)," }"]),this.environment.isSimple&&this.pushSource(["else { ",this.appendToBuffer("''",void 0,!0)," }"])}},appendEscaped:function(){this.pushSource(this.appendToBuffer([this.aliasable("container.escapeExpression"),"(",this.popStack(),")"]))},getContext:function(a){this.lastContext=a},pushContext:function(){this.pushStackLiteral(this.contextName(this.lastContext))},lookupOnContext:function(a,b,c,d){var e=0;d||!this.options.compat||this.lastContext?this.pushContext():this.push(this.depthedLookup(a[e++])),this.resolvePath("context",a,e,b,c)},lookupBlockParam:function(a,b){this.useBlockParams=!0,this.push(["blockParams[",a[0],"][",a[1],"]"]),this.resolvePath("context",b,1)},lookupData:function(a,b,c){a?this.pushStackLiteral("container.data(data, "+a+")"):this.pushStackLiteral("data"),this.resolvePath("data",b,0,!0,c)},resolvePath:function(a,b,c,d,e){var f=this;if(this.options.strict||this.options.assumeObjects)return void this.push(j(this.options.strict&&e,this,b,a));for(var g=b.length;c<g;c++)this.replaceStack(function(e){var g=f.nameLookup(e,b[c],a);return d?[" && ",g]:[" != null ? ",g," : ",e]; | ||
| 29 | })},resolvePossibleLambda:function(){this.push([this.aliasable("container.lambda"),"(",this.popStack(),", ",this.contextName(0),")"])},pushStringParam:function(a,b){this.pushContext(),this.pushString(b),"SubExpression"!==b&&("string"==typeof a?this.pushString(a):this.pushStackLiteral(a))},emptyHash:function(a){this.trackIds&&this.push("{}"),this.stringParams&&(this.push("{}"),this.push("{}")),this.pushStackLiteral(a?"undefined":"{}")},pushHash:function(){this.hash&&this.hashes.push(this.hash),this.hash={values:[],types:[],contexts:[],ids:[]}},popHash:function(){var a=this.hash;this.hash=this.hashes.pop(),this.trackIds&&this.push(this.objectLiteral(a.ids)),this.stringParams&&(this.push(this.objectLiteral(a.contexts)),this.push(this.objectLiteral(a.types))),this.push(this.objectLiteral(a.values))},pushString:function(a){this.pushStackLiteral(this.quotedString(a))},pushLiteral:function(a){this.pushStackLiteral(a)},pushProgram:function(a){null!=a?this.pushStackLiteral(this.programExpression(a)):this.pushStackLiteral(null)},registerDecorator:function(a,b){var c=this.nameLookup("decorators",b,"decorator"),d=this.setupHelperArgs(b,a);this.decorators.push(["fn = ",this.decorators.functionCall(c,"",["fn","props","container",d])," || fn;"])},invokeHelper:function(a,b,c){var d=this.popStack(),e=this.setupHelper(a,b),f=c?[e.name," || "]:"",g=["("].concat(f,d);this.options.strict||g.push(" || ",this.aliasable("helpers.helperMissing")),g.push(")"),this.push(this.source.functionCall(g,"call",e.callParams))},invokeKnownHelper:function(a,b){var c=this.setupHelper(a,b);this.push(this.source.functionCall(c.name,"call",c.callParams))},invokeAmbiguous:function(a,b){this.useRegister("helper");var c=this.popStack();this.emptyHash();var d=this.setupHelper(0,a,b),e=this.lastHelper=this.nameLookup("helpers",a,"helper"),f=["(","(helper = ",e," || ",c,")"];this.options.strict||(f[0]="(helper = ",f.push(" != null ? helper : ",this.aliasable("helpers.helperMissing"))),this.push(["(",f,d.paramsInit?["),(",d.paramsInit]:[],"),","(typeof helper === ",this.aliasable('"function"')," ? ",this.source.functionCall("helper","call",d.callParams)," : helper))"])},invokePartial:function(a,b,c){var d=[],e=this.setupParams(b,1,d);a&&(b=this.popStack(),delete e.name),c&&(e.indent=JSON.stringify(c)),e.helpers="helpers",e.partials="partials",e.decorators="container.decorators",a?d.unshift(b):d.unshift(this.nameLookup("partials",b,"partial")),this.options.compat&&(e.depths="depths"),e=this.objectLiteral(e),d.push(e),this.push(this.source.functionCall("container.invokePartial","",d))},assignToHash:function(a){var b=this.popStack(),c=void 0,d=void 0,e=void 0;this.trackIds&&(e=this.popStack()),this.stringParams&&(d=this.popStack(),c=this.popStack());var f=this.hash;c&&(f.contexts[a]=c),d&&(f.types[a]=d),e&&(f.ids[a]=e),f.values[a]=b},pushId:function(a,b,c){"BlockParam"===a?this.pushStackLiteral("blockParams["+b[0]+"].path["+b[1]+"]"+(c?" + "+JSON.stringify("."+c):"")):"PathExpression"===a?this.pushString(b):"SubExpression"===a?this.pushStackLiteral("true"):this.pushStackLiteral("null")},compiler:i,compileChildren:function(a,b){for(var c=a.children,d=void 0,e=void 0,f=0,g=c.length;f<g;f++){d=c[f],e=new this.compiler;var h=this.matchExistingProgram(d);if(null==h){this.context.programs.push("");var i=this.context.programs.length;d.index=i,d.name="program"+i,this.context.programs[i]=e.compile(d,b,this.context,!this.precompile),this.context.decorators[i]=e.decorators,this.context.environments[i]=d,this.useDepths=this.useDepths||e.useDepths,this.useBlockParams=this.useBlockParams||e.useBlockParams,d.useDepths=this.useDepths,d.useBlockParams=this.useBlockParams}else d.index=h.index,d.name="program"+h.index,this.useDepths=this.useDepths||h.useDepths,this.useBlockParams=this.useBlockParams||h.useBlockParams}},matchExistingProgram:function(a){for(var b=0,c=this.context.environments.length;b<c;b++){var d=this.context.environments[b];if(d&&d.equals(a))return d}},programExpression:function(a){var b=this.environment.children[a],c=[b.index,"data",b.blockParams];return(this.useBlockParams||this.useDepths)&&c.push("blockParams"),this.useDepths&&c.push("depths"),"container.program("+c.join(", ")+")"},useRegister:function(a){this.registers[a]||(this.registers[a]=!0,this.registers.list.push(a))},push:function(a){return a instanceof h||(a=this.source.wrap(a)),this.inlineStack.push(a),a},pushStackLiteral:function(a){this.push(new h(a))},pushSource:function(a){this.pendingContent&&(this.source.push(this.appendToBuffer(this.source.quotedString(this.pendingContent),this.pendingLocation)),this.pendingContent=void 0),a&&this.source.push(a)},replaceStack:function(a){var b=["("],c=void 0,d=void 0,e=void 0;if(!this.isInline())throw new k["default"]("replaceStack on non-inline");var f=this.popStack(!0);if(f instanceof h)c=[f.value],b=["(",c],e=!0;else{d=!0;var g=this.incrStack();b=["((",this.push(g)," = ",f,")"],c=this.topStack()}var i=a.call(this,c);e||this.popStack(),d&&this.stackSlot--,this.push(b.concat(i,")"))},incrStack:function(){return this.stackSlot++,this.stackSlot>this.stackVars.length&&this.stackVars.push("stack"+this.stackSlot),this.topStackName()},topStackName:function(){return"stack"+this.stackSlot},flushInline:function(){var a=this.inlineStack;this.inlineStack=[];for(var b=0,c=a.length;b<c;b++){var d=a[b];if(d instanceof h)this.compileStack.push(d);else{var e=this.incrStack();this.pushSource([e," = ",d,";"]),this.compileStack.push(e)}}},isInline:function(){return this.inlineStack.length},popStack:function(a){var b=this.isInline(),c=(b?this.inlineStack:this.compileStack).pop();if(!a&&c instanceof h)return c.value;if(!b){if(!this.stackSlot)throw new k["default"]("Invalid stack pop");this.stackSlot--}return c},topStack:function(){var a=this.isInline()?this.inlineStack:this.compileStack,b=a[a.length-1];return b instanceof h?b.value:b},contextName:function(a){return this.useDepths&&a?"depths["+a+"]":"depth"+a},quotedString:function(a){return this.source.quotedString(a)},objectLiteral:function(a){return this.source.objectLiteral(a)},aliasable:function(a){var b=this.aliases[a];return b?(b.referenceCount++,b):(b=this.aliases[a]=this.source.wrap(a),b.aliasable=!0,b.referenceCount=1,b)},setupHelper:function(a,b,c){var d=[],e=this.setupHelperArgs(b,a,d,c),f=this.nameLookup("helpers",b,"helper"),g=this.aliasable(this.contextName(0)+" != null ? "+this.contextName(0)+" : (container.nullContext || {})");return{params:d,paramsInit:e,name:f,callParams:[g].concat(d)}},setupParams:function(a,b,c){var d={},e=[],f=[],g=[],h=!c,i=void 0;h&&(c=[]),d.name=this.quotedString(a),d.hash=this.popStack(),this.trackIds&&(d.hashIds=this.popStack()),this.stringParams&&(d.hashTypes=this.popStack(),d.hashContexts=this.popStack());var j=this.popStack(),k=this.popStack();(k||j)&&(d.fn=k||"container.noop",d.inverse=j||"container.noop");for(var l=b;l--;)i=this.popStack(),c[l]=i,this.trackIds&&(g[l]=this.popStack()),this.stringParams&&(f[l]=this.popStack(),e[l]=this.popStack());return h&&(d.args=this.source.generateArray(c)),this.trackIds&&(d.ids=this.source.generateArray(g)),this.stringParams&&(d.types=this.source.generateArray(f),d.contexts=this.source.generateArray(e)),this.options.data&&(d.data="data"),this.useBlockParams&&(d.blockParams="blockParams"),d},setupHelperArgs:function(a,b,c,d){var e=this.setupParams(a,b,c);return e=this.objectLiteral(e),d?(this.useRegister("options"),c.push("options"),["options=",e]):c?(c.push(e),""):e}},function(){for(var a="break else new var case finally return void catch for switch while continue function this with default if throw delete in try do instanceof typeof abstract enum int short boolean export interface static byte extends long super char final native synchronized class float package throws const goto private transient debugger implements protected volatile double import public let yield await null true false".split(" "),b=i.RESERVED_WORDS={},c=0,d=a.length;c<d;c++)b[a[c]]=!0}(),i.isValidJavaScriptVariableName=function(a){return!i.RESERVED_WORDS[a]&&/^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(a)},b.exports=i}),define("handlebars",["exports","module","./handlebars.runtime","./handlebars/compiler/ast","./handlebars/compiler/base","./handlebars/compiler/compiler","./handlebars/compiler/javascript-compiler","./handlebars/compiler/visitor","./handlebars/no-conflict"],function(a,b,c,d,e,f,g,h,i){"use strict";function j(a){return a&&a.__esModule?a:{"default":a}}function k(){var a=q();return a.compile=function(b,c){return f.compile(b,c,a)},a.precompile=function(b,c){return f.precompile(b,c,a)},a.AST=m["default"],a.Compiler=f.Compiler,a.JavaScriptCompiler=n["default"],a.Parser=e.parser,a.parse=e.parse,a}var l=j(c),m=j(d),n=j(g),o=j(h),p=j(i),q=l["default"].create,r=k();r.create=k,p["default"](r),r.Visitor=o["default"],r["default"]=r,b.exports=r}); | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
staticLib/handlebars/handlebars.js
deleted
100644 → 0
This diff could not be displayed because it is too large.
| 1 | /**! | ||
| 2 | |||
| 3 | @license | ||
| 4 | handlebars v4.0.10 | ||
| 5 | |||
| 6 | Copyright (C) 2011-2016 by Yehuda Katz | ||
| 7 | |||
| 8 | Permission is hereby granted, free of charge, to any person obtaining a copy | ||
| 9 | of this software and associated documentation files (the "Software"), to deal | ||
| 10 | in the Software without restriction, including without limitation the rights | ||
| 11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
| 12 | copies of the Software, and to permit persons to whom the Software is | ||
| 13 | furnished to do so, subject to the following conditions: | ||
| 14 | |||
| 15 | The above copyright notice and this permission notice shall be included in | ||
| 16 | all copies or substantial portions of the Software. | ||
| 17 | |||
| 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
| 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
| 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
| 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
| 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
| 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||
| 24 | THE SOFTWARE. | ||
| 25 | |||
| 26 | */ | ||
| 27 | !function(a,b){"object"==typeof exports&&"object"==typeof module?module.exports=b():"function"==typeof define&&define.amd?define([],b):"object"==typeof exports?exports.Handlebars=b():a.Handlebars=b()}(this,function(){return function(a){function b(d){if(c[d])return c[d].exports;var e=c[d]={exports:{},id:d,loaded:!1};return a[d].call(e.exports,e,e.exports,b),e.loaded=!0,e.exports}var c={};return b.m=a,b.c=c,b.p="",b(0)}([function(a,b,c){"use strict";function d(){var a=r();return a.compile=function(b,c){return k.compile(b,c,a)},a.precompile=function(b,c){return k.precompile(b,c,a)},a.AST=i["default"],a.Compiler=k.Compiler,a.JavaScriptCompiler=m["default"],a.Parser=j.parser,a.parse=j.parse,a}var e=c(1)["default"];b.__esModule=!0;var f=c(2),g=e(f),h=c(35),i=e(h),j=c(36),k=c(41),l=c(42),m=e(l),n=c(39),o=e(n),p=c(34),q=e(p),r=g["default"].create,s=d();s.create=d,q["default"](s),s.Visitor=o["default"],s["default"]=s,b["default"]=s,a.exports=b["default"]},function(a,b){"use strict";b["default"]=function(a){return a&&a.__esModule?a:{"default":a}},b.__esModule=!0},function(a,b,c){"use strict";function d(){var a=new h.HandlebarsEnvironment;return n.extend(a,h),a.SafeString=j["default"],a.Exception=l["default"],a.Utils=n,a.escapeExpression=n.escapeExpression,a.VM=p,a.template=function(b){return p.template(b,a)},a}var e=c(3)["default"],f=c(1)["default"];b.__esModule=!0;var g=c(4),h=e(g),i=c(21),j=f(i),k=c(6),l=f(k),m=c(5),n=e(m),o=c(22),p=e(o),q=c(34),r=f(q),s=d();s.create=d,r["default"](s),s["default"]=s,b["default"]=s,a.exports=b["default"]},function(a,b){"use strict";b["default"]=function(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b},b.__esModule=!0},function(a,b,c){"use strict";function d(a,b,c){this.helpers=a||{},this.partials=b||{},this.decorators=c||{},i.registerDefaultHelpers(this),j.registerDefaultDecorators(this)}var e=c(1)["default"];b.__esModule=!0,b.HandlebarsEnvironment=d;var f=c(5),g=c(6),h=e(g),i=c(10),j=c(18),k=c(20),l=e(k),m="4.0.10";b.VERSION=m;var n=7;b.COMPILER_REVISION=n;var o={1:"<= 1.0.rc.2",2:"== 1.0.0-rc.3",3:"== 1.0.0-rc.4",4:"== 1.x.x",5:"== 2.0.0-alpha.x",6:">= 2.0.0-beta.1",7:">= 4.0.0"};b.REVISION_CHANGES=o;var p="[object Object]";d.prototype={constructor:d,logger:l["default"],log:l["default"].log,registerHelper:function(a,b){if(f.toString.call(a)===p){if(b)throw new h["default"]("Arg not supported with multiple helpers");f.extend(this.helpers,a)}else this.helpers[a]=b},unregisterHelper:function(a){delete this.helpers[a]},registerPartial:function(a,b){if(f.toString.call(a)===p)f.extend(this.partials,a);else{if("undefined"==typeof b)throw new h["default"]('Attempting to register a partial called "'+a+'" as undefined');this.partials[a]=b}},unregisterPartial:function(a){delete this.partials[a]},registerDecorator:function(a,b){if(f.toString.call(a)===p){if(b)throw new h["default"]("Arg not supported with multiple decorators");f.extend(this.decorators,a)}else this.decorators[a]=b},unregisterDecorator:function(a){delete this.decorators[a]}};var q=l["default"].log;b.log=q,b.createFrame=f.createFrame,b.logger=l["default"]},function(a,b){"use strict";function c(a){return k[a]}function d(a){for(var b=1;b<arguments.length;b++)for(var c in arguments[b])Object.prototype.hasOwnProperty.call(arguments[b],c)&&(a[c]=arguments[b][c]);return a}function e(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return c;return-1}function f(a){if("string"!=typeof a){if(a&&a.toHTML)return a.toHTML();if(null==a)return"";if(!a)return a+"";a=""+a}return m.test(a)?a.replace(l,c):a}function g(a){return!a&&0!==a||!(!p(a)||0!==a.length)}function h(a){var b=d({},a);return b._parent=a,b}function i(a,b){return a.path=b,a}function j(a,b){return(a?a+".":"")+b}b.__esModule=!0,b.extend=d,b.indexOf=e,b.escapeExpression=f,b.isEmpty=g,b.createFrame=h,b.blockParams=i,b.appendContextPath=j;var k={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`","=":"="},l=/[&<>"'`=]/g,m=/[&<>"'`=]/,n=Object.prototype.toString;b.toString=n;var o=function(a){return"function"==typeof a};o(/x/)&&(b.isFunction=o=function(a){return"function"==typeof a&&"[object Function]"===n.call(a)}),b.isFunction=o;var p=Array.isArray||function(a){return!(!a||"object"!=typeof a)&&"[object Array]"===n.call(a)};b.isArray=p},function(a,b,c){"use strict";function d(a,b){var c=b&&b.loc,g=void 0,h=void 0;c&&(g=c.start.line,h=c.start.column,a+=" - "+g+":"+h);for(var i=Error.prototype.constructor.call(this,a),j=0;j<f.length;j++)this[f[j]]=i[f[j]];Error.captureStackTrace&&Error.captureStackTrace(this,d);try{c&&(this.lineNumber=g,e?Object.defineProperty(this,"column",{value:h,enumerable:!0}):this.column=h)}catch(k){}}var e=c(7)["default"];b.__esModule=!0;var f=["description","fileName","lineNumber","message","name","number","stack"];d.prototype=new Error,b["default"]=d,a.exports=b["default"]},function(a,b,c){a.exports={"default":c(8),__esModule:!0}},function(a,b,c){var d=c(9);a.exports=function(a,b,c){return d.setDesc(a,b,c)}},function(a,b){var c=Object;a.exports={create:c.create,getProto:c.getPrototypeOf,isEnum:{}.propertyIsEnumerable,getDesc:c.getOwnPropertyDescriptor,setDesc:c.defineProperty,setDescs:c.defineProperties,getKeys:c.keys,getNames:c.getOwnPropertyNames,getSymbols:c.getOwnPropertySymbols,each:[].forEach}},function(a,b,c){"use strict";function d(a){g["default"](a),i["default"](a),k["default"](a),m["default"](a),o["default"](a),q["default"](a),s["default"](a)}var e=c(1)["default"];b.__esModule=!0,b.registerDefaultHelpers=d;var f=c(11),g=e(f),h=c(12),i=e(h),j=c(13),k=e(j),l=c(14),m=e(l),n=c(15),o=e(n),p=c(16),q=e(p),r=c(17),s=e(r)},function(a,b,c){"use strict";b.__esModule=!0;var d=c(5);b["default"]=function(a){a.registerHelper("blockHelperMissing",function(b,c){var e=c.inverse,f=c.fn;if(b===!0)return f(this);if(b===!1||null==b)return e(this);if(d.isArray(b))return b.length>0?(c.ids&&(c.ids=[c.name]),a.helpers.each(b,c)):e(this);if(c.data&&c.ids){var g=d.createFrame(c.data);g.contextPath=d.appendContextPath(c.data.contextPath,c.name),c={data:g}}return f(b,c)})},a.exports=b["default"]},function(a,b,c){"use strict";var d=c(1)["default"];b.__esModule=!0;var e=c(5),f=c(6),g=d(f);b["default"]=function(a){a.registerHelper("each",function(a,b){function c(b,c,f){j&&(j.key=b,j.index=c,j.first=0===c,j.last=!!f,k&&(j.contextPath=k+b)),i+=d(a[b],{data:j,blockParams:e.blockParams([a[b],b],[k+b,null])})}if(!b)throw new g["default"]("Must pass iterator to #each");var d=b.fn,f=b.inverse,h=0,i="",j=void 0,k=void 0;if(b.data&&b.ids&&(k=e.appendContextPath(b.data.contextPath,b.ids[0])+"."),e.isFunction(a)&&(a=a.call(this)),b.data&&(j=e.createFrame(b.data)),a&&"object"==typeof a)if(e.isArray(a))for(var l=a.length;h<l;h++)h in a&&c(h,h,h===a.length-1);else{var m=void 0;for(var n in a)a.hasOwnProperty(n)&&(void 0!==m&&c(m,h-1),m=n,h++);void 0!==m&&c(m,h-1,!0)}return 0===h&&(i=f(this)),i})},a.exports=b["default"]},function(a,b,c){"use strict";var d=c(1)["default"];b.__esModule=!0;var e=c(6),f=d(e);b["default"]=function(a){a.registerHelper("helperMissing",function(){if(1!==arguments.length)throw new f["default"]('Missing helper: "'+arguments[arguments.length-1].name+'"')})},a.exports=b["default"]},function(a,b,c){"use strict";b.__esModule=!0;var d=c(5);b["default"]=function(a){a.registerHelper("if",function(a,b){return d.isFunction(a)&&(a=a.call(this)),!b.hash.includeZero&&!a||d.isEmpty(a)?b.inverse(this):b.fn(this)}),a.registerHelper("unless",function(b,c){return a.helpers["if"].call(this,b,{fn:c.inverse,inverse:c.fn,hash:c.hash})})},a.exports=b["default"]},function(a,b){"use strict";b.__esModule=!0,b["default"]=function(a){a.registerHelper("log",function(){for(var b=[void 0],c=arguments[arguments.length-1],d=0;d<arguments.length-1;d++)b.push(arguments[d]);var e=1;null!=c.hash.level?e=c.hash.level:c.data&&null!=c.data.level&&(e=c.data.level),b[0]=e,a.log.apply(a,b)})},a.exports=b["default"]},function(a,b){"use strict";b.__esModule=!0,b["default"]=function(a){a.registerHelper("lookup",function(a,b){return a&&a[b]})},a.exports=b["default"]},function(a,b,c){"use strict";b.__esModule=!0;var d=c(5);b["default"]=function(a){a.registerHelper("with",function(a,b){d.isFunction(a)&&(a=a.call(this));var c=b.fn;if(d.isEmpty(a))return b.inverse(this);var e=b.data;return b.data&&b.ids&&(e=d.createFrame(b.data),e.contextPath=d.appendContextPath(b.data.contextPath,b.ids[0])),c(a,{data:e,blockParams:d.blockParams([a],[e&&e.contextPath])})})},a.exports=b["default"]},function(a,b,c){"use strict";function d(a){g["default"](a)}var e=c(1)["default"];b.__esModule=!0,b.registerDefaultDecorators=d;var f=c(19),g=e(f)},function(a,b,c){"use strict";b.__esModule=!0;var d=c(5);b["default"]=function(a){a.registerDecorator("inline",function(a,b,c,e){var f=a;return b.partials||(b.partials={},f=function(e,f){var g=c.partials;c.partials=d.extend({},g,b.partials);var h=a(e,f);return c.partials=g,h}),b.partials[e.args[0]]=e.fn,f})},a.exports=b["default"]},function(a,b,c){"use strict";b.__esModule=!0;var d=c(5),e={methodMap:["debug","info","warn","error"],level:"info",lookupLevel:function(a){if("string"==typeof a){var b=d.indexOf(e.methodMap,a.toLowerCase());a=b>=0?b:parseInt(a,10)}return a},log:function(a){if(a=e.lookupLevel(a),"undefined"!=typeof console&&e.lookupLevel(e.level)<=a){var b=e.methodMap[a];console[b]||(b="log");for(var c=arguments.length,d=Array(c>1?c-1:0),f=1;f<c;f++)d[f-1]=arguments[f];console[b].apply(console,d)}}};b["default"]=e,a.exports=b["default"]},function(a,b){"use strict";function c(a){this.string=a}b.__esModule=!0,c.prototype.toString=c.prototype.toHTML=function(){return""+this.string},b["default"]=c,a.exports=b["default"]},function(a,b,c){"use strict";function d(a){var b=a&&a[0]||1,c=s.COMPILER_REVISION;if(b!==c){if(b<c){var d=s.REVISION_CHANGES[c],e=s.REVISION_CHANGES[b];throw new r["default"]("Template was precompiled with an older version of Handlebars than the current runtime. Please update your precompiler to a newer version ("+d+") or downgrade your runtime to an older version ("+e+").")}throw new r["default"]("Template was precompiled with a newer version of Handlebars than the current runtime. Please update your runtime to a newer version ("+a[1]+").")}}function e(a,b){function c(c,d,e){e.hash&&(d=p.extend({},d,e.hash),e.ids&&(e.ids[0]=!0)),c=b.VM.resolvePartial.call(this,c,d,e);var f=b.VM.invokePartial.call(this,c,d,e);if(null==f&&b.compile&&(e.partials[e.name]=b.compile(c,a.compilerOptions,b),f=e.partials[e.name](d,e)),null!=f){if(e.indent){for(var g=f.split("\n"),h=0,i=g.length;h<i&&(g[h]||h+1!==i);h++)g[h]=e.indent+g[h];f=g.join("\n")}return f}throw new r["default"]("The partial "+e.name+" could not be compiled when running in runtime-only mode")}function d(b){function c(b){return""+a.main(e,b,e.helpers,e.partials,g,i,h)}var f=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],g=f.data;d._setup(f),!f.partial&&a.useData&&(g=j(b,g));var h=void 0,i=a.useBlockParams?[]:void 0;return a.useDepths&&(h=f.depths?b!=f.depths[0]?[b].concat(f.depths):f.depths:[b]),(c=k(a.main,c,e,f.depths||[],g,i))(b,f)}if(!b)throw new r["default"]("No environment passed to template");if(!a||!a.main)throw new r["default"]("Unknown template object: "+typeof a);a.main.decorator=a.main_d,b.VM.checkRevision(a.compiler);var e={strict:function(a,b){if(!(b in a))throw new r["default"]('"'+b+'" not defined in '+a);return a[b]},lookup:function(a,b){for(var c=a.length,d=0;d<c;d++)if(a[d]&&null!=a[d][b])return a[d][b]},lambda:function(a,b){return"function"==typeof a?a.call(b):a},escapeExpression:p.escapeExpression,invokePartial:c,fn:function(b){var c=a[b];return c.decorator=a[b+"_d"],c},programs:[],program:function(a,b,c,d,e){var g=this.programs[a],h=this.fn(a);return b||e||d||c?g=f(this,a,h,b,c,d,e):g||(g=this.programs[a]=f(this,a,h)),g},data:function(a,b){for(;a&&b--;)a=a._parent;return a},merge:function(a,b){var c=a||b;return a&&b&&a!==b&&(c=p.extend({},b,a)),c},nullContext:l({}),noop:b.VM.noop,compilerInfo:a.compiler};return d.isTop=!0,d._setup=function(c){c.partial?(e.helpers=c.helpers,e.partials=c.partials,e.decorators=c.decorators):(e.helpers=e.merge(c.helpers,b.helpers),a.usePartial&&(e.partials=e.merge(c.partials,b.partials)),(a.usePartial||a.useDecorators)&&(e.decorators=e.merge(c.decorators,b.decorators)))},d._child=function(b,c,d,g){if(a.useBlockParams&&!d)throw new r["default"]("must pass block params");if(a.useDepths&&!g)throw new r["default"]("must pass parent depths");return f(e,b,a[b],c,0,d,g)},d}function f(a,b,c,d,e,f,g){function h(b){var e=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],h=g;return!g||b==g[0]||b===a.nullContext&&null===g[0]||(h=[b].concat(g)),c(a,b,a.helpers,a.partials,e.data||d,f&&[e.blockParams].concat(f),h)}return h=k(c,h,a,g,d,f),h.program=b,h.depth=g?g.length:0,h.blockParams=e||0,h}function g(a,b,c){return a?a.call||c.name||(c.name=a,a=c.partials[a]):a="@partial-block"===c.name?c.data["partial-block"]:c.partials[c.name],a}function h(a,b,c){var d=c.data&&c.data["partial-block"];c.partial=!0,c.ids&&(c.data.contextPath=c.ids[0]||c.data.contextPath);var e=void 0;if(c.fn&&c.fn!==i&&!function(){c.data=s.createFrame(c.data);var a=c.fn;e=c.data["partial-block"]=function(b){var c=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];return c.data=s.createFrame(c.data),c.data["partial-block"]=d,a(b,c)},a.partials&&(c.partials=p.extend({},c.partials,a.partials))}(),void 0===a&&e&&(a=e),void 0===a)throw new r["default"]("The partial "+c.name+" could not be found");if(a instanceof Function)return a(b,c)}function i(){return""}function j(a,b){return b&&"root"in b||(b=b?s.createFrame(b):{},b.root=a),b}function k(a,b,c,d,e,f){if(a.decorator){var g={};b=a.decorator(b,g,c,d&&d[0],e,f,d),p.extend(b,g)}return b}var l=c(23)["default"],m=c(3)["default"],n=c(1)["default"];b.__esModule=!0,b.checkRevision=d,b.template=e,b.wrapProgram=f,b.resolvePartial=g,b.invokePartial=h,b.noop=i;var o=c(5),p=m(o),q=c(6),r=n(q),s=c(4)},function(a,b,c){a.exports={"default":c(24),__esModule:!0}},function(a,b,c){c(25),a.exports=c(30).Object.seal},function(a,b,c){var d=c(26);c(27)("seal",function(a){return function(b){return a&&d(b)?a(b):b}})},function(a,b){a.exports=function(a){return"object"==typeof a?null!==a:"function"==typeof a}},function(a,b,c){var d=c(28),e=c(30),f=c(33);a.exports=function(a,b){var c=(e.Object||{})[a]||Object[a],g={};g[a]=b(c),d(d.S+d.F*f(function(){c(1)}),"Object",g)}},function(a,b,c){var d=c(29),e=c(30),f=c(31),g="prototype",h=function(a,b,c){var i,j,k,l=a&h.F,m=a&h.G,n=a&h.S,o=a&h.P,p=a&h.B,q=a&h.W,r=m?e:e[b]||(e[b]={}),s=m?d:n?d[b]:(d[b]||{})[g];m&&(c=b);for(i in c)j=!l&&s&&i in s,j&&i in r||(k=j?s[i]:c[i],r[i]=m&&"function"!=typeof s[i]?c[i]:p&&j?f(k,d):q&&s[i]==k?function(a){var b=function(b){return this instanceof a?new a(b):a(b)};return b[g]=a[g],b}(k):o&&"function"==typeof k?f(Function.call,k):k,o&&((r[g]||(r[g]={}))[i]=k))};h.F=1,h.G=2,h.S=4,h.P=8,h.B=16,h.W=32,a.exports=h},function(a,b){var c=a.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=c)},function(a,b){var c=a.exports={version:"1.2.6"};"number"==typeof __e&&(__e=c)},function(a,b,c){var d=c(32);a.exports=function(a,b,c){if(d(a),void 0===b)return a;switch(c){case 1:return function(c){return a.call(b,c)};case 2:return function(c,d){return a.call(b,c,d)};case 3:return function(c,d,e){return a.call(b,c,d,e)}}return function(){return a.apply(b,arguments)}}},function(a,b){a.exports=function(a){if("function"!=typeof a)throw TypeError(a+" is not a function!");return a}},function(a,b){a.exports=function(a){try{return!!a()}catch(b){return!0}}},function(a,b){(function(c){"use strict";b.__esModule=!0,b["default"]=function(a){var b="undefined"!=typeof c?c:window,d=b.Handlebars;a.noConflict=function(){return b.Handlebars===a&&(b.Handlebars=d),a}},a.exports=b["default"]}).call(b,function(){return this}())},function(a,b){"use strict";b.__esModule=!0;var c={helpers:{helperExpression:function(a){return"SubExpression"===a.type||("MustacheStatement"===a.type||"BlockStatement"===a.type)&&!!(a.params&&a.params.length||a.hash)},scopedId:function(a){return/^\.|this\b/.test(a.original)},simpleId:function(a){return 1===a.parts.length&&!c.helpers.scopedId(a)&&!a.depth}}};b["default"]=c,a.exports=b["default"]},function(a,b,c){"use strict";function d(a,b){if("Program"===a.type)return a;h["default"].yy=n,n.locInfo=function(a){return new n.SourceLocation(b&&b.srcName,a)};var c=new j["default"](b);return c.accept(h["default"].parse(a))}var e=c(1)["default"],f=c(3)["default"];b.__esModule=!0,b.parse=d;var g=c(37),h=e(g),i=c(38),j=e(i),k=c(40),l=f(k),m=c(5);b.parser=h["default"];var n={};m.extend(n,l)},function(a,b){"use strict";b.__esModule=!0;var c=function(){function a(){this.yy={}}var b={trace:function(){},yy:{},symbols_:{error:2,root:3,program:4,EOF:5,program_repetition0:6,statement:7,mustache:8,block:9,rawBlock:10,partial:11,partialBlock:12,content:13,COMMENT:14,CONTENT:15,openRawBlock:16,rawBlock_repetition_plus0:17,END_RAW_BLOCK:18,OPEN_RAW_BLOCK:19,helperName:20,openRawBlock_repetition0:21,openRawBlock_option0:22,CLOSE_RAW_BLOCK:23,openBlock:24,block_option0:25,closeBlock:26,openInverse:27,block_option1:28,OPEN_BLOCK:29,openBlock_repetition0:30,openBlock_option0:31,openBlock_option1:32,CLOSE:33,OPEN_INVERSE:34,openInverse_repetition0:35,openInverse_option0:36,openInverse_option1:37,openInverseChain:38,OPEN_INVERSE_CHAIN:39,openInverseChain_repetition0:40,openInverseChain_option0:41,openInverseChain_option1:42,inverseAndProgram:43,INVERSE:44,inverseChain:45,inverseChain_option0:46,OPEN_ENDBLOCK:47,OPEN:48,mustache_repetition0:49,mustache_option0:50,OPEN_UNESCAPED:51,mustache_repetition1:52,mustache_option1:53,CLOSE_UNESCAPED:54,OPEN_PARTIAL:55,partialName:56,partial_repetition0:57,partial_option0:58,openPartialBlock:59,OPEN_PARTIAL_BLOCK:60,openPartialBlock_repetition0:61,openPartialBlock_option0:62,param:63,sexpr:64,OPEN_SEXPR:65,sexpr_repetition0:66,sexpr_option0:67,CLOSE_SEXPR:68,hash:69,hash_repetition_plus0:70,hashSegment:71,ID:72,EQUALS:73,blockParams:74,OPEN_BLOCK_PARAMS:75,blockParams_repetition_plus0:76,CLOSE_BLOCK_PARAMS:77,path:78,dataName:79,STRING:80,NUMBER:81,BOOLEAN:82,UNDEFINED:83,NULL:84,DATA:85,pathSegments:86,SEP:87,$accept:0,$end:1},terminals_:{2:"error",5:"EOF",14:"COMMENT",15:"CONTENT",18:"END_RAW_BLOCK",19:"OPEN_RAW_BLOCK",23:"CLOSE_RAW_BLOCK",29:"OPEN_BLOCK",33:"CLOSE",34:"OPEN_INVERSE",39:"OPEN_INVERSE_CHAIN",44:"INVERSE",47:"OPEN_ENDBLOCK",48:"OPEN",51:"OPEN_UNESCAPED",54:"CLOSE_UNESCAPED",55:"OPEN_PARTIAL",60:"OPEN_PARTIAL_BLOCK",65:"OPEN_SEXPR",68:"CLOSE_SEXPR",72:"ID",73:"EQUALS",75:"OPEN_BLOCK_PARAMS",77:"CLOSE_BLOCK_PARAMS",80:"STRING",81:"NUMBER",82:"BOOLEAN",83:"UNDEFINED",84:"NULL",85:"DATA",87:"SEP"},productions_:[0,[3,2],[4,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[13,1],[10,3],[16,5],[9,4],[9,4],[24,6],[27,6],[38,6],[43,2],[45,3],[45,1],[26,3],[8,5],[8,5],[11,5],[12,3],[59,5],[63,1],[63,1],[64,5],[69,1],[71,3],[74,3],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[56,1],[56,1],[79,2],[78,1],[86,3],[86,1],[6,0],[6,2],[17,1],[17,2],[21,0],[21,2],[22,0],[22,1],[25,0],[25,1],[28,0],[28,1],[30,0],[30,2],[31,0],[31,1],[32,0],[32,1],[35,0],[35,2],[36,0],[36,1],[37,0],[37,1],[40,0],[40,2],[41,0],[41,1],[42,0],[42,1],[46,0],[46,1],[49,0],[49,2],[50,0],[50,1],[52,0],[52,2],[53,0],[53,1],[57,0],[57,2],[58,0],[58,1],[61,0],[61,2],[62,0],[62,1],[66,0],[66,2],[67,0],[67,1],[70,1],[70,2],[76,1],[76,2]],performAction:function(a,b,c,d,e,f,g){var h=f.length-1;switch(e){case 1:return f[h-1];case 2:this.$=d.prepareProgram(f[h]);break;case 3:this.$=f[h];break;case 4:this.$=f[h];break;case 5:this.$=f[h];break;case 6:this.$=f[h];break;case 7:this.$=f[h];break;case 8:this.$=f[h];break;case 9:this.$={type:"CommentStatement",value:d.stripComment(f[h]),strip:d.stripFlags(f[h],f[h]),loc:d.locInfo(this._$)};break;case 10:this.$={type:"ContentStatement",original:f[h],value:f[h],loc:d.locInfo(this._$)};break;case 11:this.$=d.prepareRawBlock(f[h-2],f[h-1],f[h],this._$);break;case 12:this.$={path:f[h-3],params:f[h-2],hash:f[h-1]};break;case 13:this.$=d.prepareBlock(f[h-3],f[h-2],f[h-1],f[h],!1,this._$);break;case 14:this.$=d.prepareBlock(f[h-3],f[h-2],f[h-1],f[h],!0,this._$);break;case 15:this.$={open:f[h-5],path:f[h-4],params:f[h-3],hash:f[h-2],blockParams:f[h-1],strip:d.stripFlags(f[h-5],f[h])};break;case 16:this.$={path:f[h-4],params:f[h-3],hash:f[h-2],blockParams:f[h-1],strip:d.stripFlags(f[h-5],f[h])};break;case 17:this.$={path:f[h-4],params:f[h-3],hash:f[h-2],blockParams:f[h-1],strip:d.stripFlags(f[h-5],f[h])};break;case 18:this.$={strip:d.stripFlags(f[h-1],f[h-1]),program:f[h]};break;case 19:var i=d.prepareBlock(f[h-2],f[h-1],f[h],f[h],!1,this._$),j=d.prepareProgram([i],f[h-1].loc);j.chained=!0,this.$={strip:f[h-2].strip,program:j,chain:!0};break;case 20:this.$=f[h];break;case 21:this.$={path:f[h-1],strip:d.stripFlags(f[h-2],f[h])};break;case 22:this.$=d.prepareMustache(f[h-3],f[h-2],f[h-1],f[h-4],d.stripFlags(f[h-4],f[h]),this._$);break;case 23:this.$=d.prepareMustache(f[h-3],f[h-2],f[h-1],f[h-4],d.stripFlags(f[h-4],f[h]),this._$);break;case 24:this.$={type:"PartialStatement",name:f[h-3],params:f[h-2],hash:f[h-1],indent:"",strip:d.stripFlags(f[h-4],f[h]),loc:d.locInfo(this._$)};break;case 25:this.$=d.preparePartialBlock(f[h-2],f[h-1],f[h],this._$);break;case 26:this.$={path:f[h-3],params:f[h-2],hash:f[h-1],strip:d.stripFlags(f[h-4],f[h])};break;case 27:this.$=f[h];break;case 28:this.$=f[h];break;case 29:this.$={type:"SubExpression",path:f[h-3],params:f[h-2],hash:f[h-1],loc:d.locInfo(this._$)};break;case 30:this.$={type:"Hash",pairs:f[h],loc:d.locInfo(this._$)};break;case 31:this.$={type:"HashPair",key:d.id(f[h-2]),value:f[h],loc:d.locInfo(this._$)};break;case 32:this.$=d.id(f[h-1]);break;case 33:this.$=f[h];break;case 34:this.$=f[h];break;case 35:this.$={type:"StringLiteral",value:f[h],original:f[h],loc:d.locInfo(this._$)};break;case 36:this.$={type:"NumberLiteral",value:Number(f[h]),original:Number(f[h]),loc:d.locInfo(this._$)};break;case 37:this.$={type:"BooleanLiteral",value:"true"===f[h],original:"true"===f[h],loc:d.locInfo(this._$)};break;case 38:this.$={type:"UndefinedLiteral",original:void 0,value:void 0,loc:d.locInfo(this._$)};break;case 39:this.$={type:"NullLiteral",original:null,value:null,loc:d.locInfo(this._$)};break;case 40:this.$=f[h];break;case 41:this.$=f[h];break;case 42:this.$=d.preparePath(!0,f[h],this._$);break;case 43:this.$=d.preparePath(!1,f[h],this._$);break;case 44:f[h-2].push({part:d.id(f[h]),original:f[h],separator:f[h-1]}),this.$=f[h-2];break;case 45:this.$=[{part:d.id(f[h]),original:f[h]}];break;case 46:this.$=[];break;case 47:f[h-1].push(f[h]);break;case 48:this.$=[f[h]];break;case 49:f[h-1].push(f[h]);break;case 50:this.$=[];break;case 51:f[h-1].push(f[h]);break;case 58:this.$=[];break;case 59:f[h-1].push(f[h]);break;case 64:this.$=[];break;case 65:f[h-1].push(f[h]);break;case 70:this.$=[];break;case 71:f[h-1].push(f[h]);break;case 78:this.$=[];break;case 79:f[h-1].push(f[h]);break;case 82:this.$=[];break;case 83:f[h-1].push(f[h]);break;case 86:this.$=[];break;case 87:f[h-1].push(f[h]);break;case 90:this.$=[];break;case 91:f[h-1].push(f[h]);break;case 94:this.$=[];break;case 95:f[h-1].push(f[h]);break;case 98:this.$=[f[h]];break;case 99:f[h-1].push(f[h]);break;case 100:this.$=[f[h]];break;case 101:f[h-1].push(f[h])}},table:[{3:1,4:2,5:[2,46],6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{1:[3]},{5:[1,4]},{5:[2,2],7:5,8:6,9:7,10:8,11:9,12:10,13:11,14:[1,12],15:[1,20],16:17,19:[1,23],24:15,27:16,29:[1,21],34:[1,22],39:[2,2],44:[2,2],47:[2,2],48:[1,13],51:[1,14],55:[1,18],59:19,60:[1,24]},{1:[2,1]},{5:[2,47],14:[2,47],15:[2,47],19:[2,47],29:[2,47],34:[2,47],39:[2,47],44:[2,47],47:[2,47],48:[2,47],51:[2,47],55:[2,47],60:[2,47]},{5:[2,3],14:[2,3],15:[2,3],19:[2,3],29:[2,3],34:[2,3],39:[2,3],44:[2,3],47:[2,3],48:[2,3],51:[2,3],55:[2,3],60:[2,3]},{5:[2,4],14:[2,4],15:[2,4],19:[2,4],29:[2,4],34:[2,4],39:[2,4],44:[2,4],47:[2,4],48:[2,4],51:[2,4],55:[2,4],60:[2,4]},{5:[2,5],14:[2,5],15:[2,5],19:[2,5],29:[2,5],34:[2,5],39:[2,5],44:[2,5],47:[2,5],48:[2,5],51:[2,5],55:[2,5],60:[2,5]},{5:[2,6],14:[2,6],15:[2,6],19:[2,6],29:[2,6],34:[2,6],39:[2,6],44:[2,6],47:[2,6],48:[2,6],51:[2,6],55:[2,6],60:[2,6]},{5:[2,7],14:[2,7],15:[2,7],19:[2,7],29:[2,7],34:[2,7],39:[2,7],44:[2,7],47:[2,7],48:[2,7],51:[2,7],55:[2,7],60:[2,7]},{5:[2,8],14:[2,8],15:[2,8],19:[2,8],29:[2,8],34:[2,8],39:[2,8],44:[2,8],47:[2,8],48:[2,8],51:[2,8],55:[2,8],60:[2,8]},{5:[2,9],14:[2,9],15:[2,9],19:[2,9],29:[2,9],34:[2,9],39:[2,9],44:[2,9],47:[2,9],48:[2,9],51:[2,9],55:[2,9],60:[2,9]},{20:25,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:36,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:37,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{4:38,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{13:40,15:[1,20],17:39},{20:42,56:41,64:43,65:[1,44],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:45,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{5:[2,10],14:[2,10],15:[2,10],18:[2,10],19:[2,10],29:[2,10],34:[2,10],39:[2,10],44:[2,10],47:[2,10],48:[2,10],51:[2,10],55:[2,10],60:[2,10]},{20:46,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:47,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:48,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:42,56:49,64:43,65:[1,44],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[2,78],49:50,65:[2,78],72:[2,78],80:[2,78],81:[2,78],82:[2,78],83:[2,78],84:[2,78],85:[2,78]},{23:[2,33],33:[2,33],54:[2,33],65:[2,33],68:[2,33],72:[2,33],75:[2,33],80:[2,33],81:[2,33],82:[2,33],83:[2,33],84:[2,33],85:[2,33]},{23:[2,34],33:[2,34],54:[2,34],65:[2,34],68:[2,34],72:[2,34],75:[2,34],80:[2,34],81:[2,34],82:[2,34],83:[2,34],84:[2,34],85:[2,34]},{23:[2,35],33:[2,35],54:[2,35],65:[2,35],68:[2,35],72:[2,35],75:[2,35],80:[2,35],81:[2,35],82:[2,35],83:[2,35],84:[2,35],85:[2,35]},{23:[2,36],33:[2,36],54:[2,36],65:[2,36],68:[2,36],72:[2,36],75:[2,36],80:[2,36],81:[2,36],82:[2,36],83:[2,36],84:[2,36],85:[2,36]},{23:[2,37],33:[2,37],54:[2,37],65:[2,37],68:[2,37],72:[2,37],75:[2,37],80:[2,37],81:[2,37],82:[2,37],83:[2,37],84:[2,37],85:[2,37]},{23:[2,38],33:[2,38],54:[2,38],65:[2,38],68:[2,38],72:[2,38],75:[2,38],80:[2,38],81:[2,38],82:[2,38],83:[2,38],84:[2,38],85:[2,38]},{23:[2,39],33:[2,39],54:[2,39],65:[2,39],68:[2,39],72:[2,39],75:[2,39],80:[2,39],81:[2,39],82:[2,39],83:[2,39],84:[2,39],85:[2,39]},{23:[2,43],33:[2,43],54:[2,43],65:[2,43],68:[2,43],72:[2,43],75:[2,43],80:[2,43],81:[2,43],82:[2,43],83:[2,43],84:[2,43],85:[2,43],87:[1,51]},{72:[1,35],86:52},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{52:53,54:[2,82],65:[2,82],72:[2,82],80:[2,82],81:[2,82],82:[2,82],83:[2,82],84:[2,82],85:[2,82]},{25:54,38:56,39:[1,58],43:57,44:[1,59],45:55,47:[2,54]},{28:60,43:61,44:[1,59],47:[2,56]},{13:63,15:[1,20],18:[1,62]},{15:[2,48],18:[2,48]},{33:[2,86],57:64,65:[2,86],72:[2,86],80:[2,86],81:[2,86],82:[2,86],83:[2,86],84:[2,86],85:[2,86]},{33:[2,40],65:[2,40],72:[2,40],80:[2,40],81:[2,40],82:[2,40],83:[2,40],84:[2,40],85:[2,40]},{33:[2,41],65:[2,41],72:[2,41],80:[2,41],81:[2,41],82:[2,41],83:[2,41],84:[2,41],85:[2,41]},{20:65,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:66,47:[1,67]},{30:68,33:[2,58],65:[2,58],72:[2,58],75:[2,58],80:[2,58],81:[2,58],82:[2,58],83:[2,58],84:[2,58],85:[2,58]},{33:[2,64],35:69,65:[2,64],72:[2,64],75:[2,64],80:[2,64],81:[2,64],82:[2,64],83:[2,64],84:[2,64],85:[2,64]},{21:70,23:[2,50],65:[2,50],72:[2,50],80:[2,50],81:[2,50],82:[2,50],83:[2,50],84:[2,50],85:[2,50]},{33:[2,90],61:71,65:[2,90],72:[2,90],80:[2,90],81:[2,90],82:[2,90],83:[2,90],84:[2,90],85:[2,90]},{20:75,33:[2,80],50:72,63:73,64:76,65:[1,44],69:74,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{72:[1,80]},{23:[2,42],33:[2,42],54:[2,42],65:[2,42],68:[2,42],72:[2,42],75:[2,42],80:[2,42],81:[2,42],82:[2,42],83:[2,42],84:[2,42],85:[2,42],87:[1,51]},{20:75,53:81,54:[2,84],63:82,64:76,65:[1,44],69:83,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:84,47:[1,67]},{47:[2,55]},{4:85,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{47:[2,20]},{20:86,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:87,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{26:88,47:[1,67]},{47:[2,57]},{5:[2,11],14:[2,11],15:[2,11],19:[2,11],29:[2,11],34:[2,11],39:[2,11],44:[2,11],47:[2,11],48:[2,11],51:[2,11],55:[2,11],60:[2,11]},{15:[2,49],18:[2,49]},{20:75,33:[2,88],58:89,63:90,64:76,65:[1,44],69:91,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{65:[2,94],66:92,68:[2,94],72:[2,94],80:[2,94],81:[2,94],82:[2,94],83:[2,94],84:[2,94],85:[2,94]},{5:[2,25],14:[2,25],15:[2,25],19:[2,25],29:[2,25],34:[2,25],39:[2,25],44:[2,25],47:[2,25],48:[2,25],51:[2,25],55:[2,25],60:[2,25]},{20:93,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:75,31:94,33:[2,60],63:95,64:76,65:[1,44],69:96,70:77,71:78,72:[1,79],75:[2,60],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:75,33:[2,66],36:97,63:98,64:76,65:[1,44],69:99,70:77,71:78,72:[1,79],75:[2,66],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:75,22:100,23:[2,52],63:101,64:76,65:[1,44],69:102,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:75,33:[2,92],62:103,63:104,64:76,65:[1,44],69:105,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,106]},{33:[2,79],65:[2,79],72:[2,79],80:[2,79],81:[2,79],82:[2,79],83:[2,79],84:[2,79],85:[2,79]},{33:[2,81]},{23:[2,27],33:[2,27],54:[2,27],65:[2,27],68:[2,27],72:[2,27],75:[2,27],80:[2,27],81:[2,27],82:[2,27],83:[2,27],84:[2,27],85:[2,27]},{23:[2,28],33:[2,28],54:[2,28],65:[2,28],68:[2,28],72:[2,28],75:[2,28],80:[2,28],81:[2,28],82:[2,28],83:[2,28],84:[2,28],85:[2,28]},{23:[2,30],33:[2,30],54:[2,30],68:[2,30],71:107,72:[1,108],75:[2,30]},{23:[2,98],33:[2,98],54:[2,98],68:[2,98],72:[2,98],75:[2,98]},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],73:[1,109],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{23:[2,44],33:[2,44],54:[2,44],65:[2,44],68:[2,44],72:[2,44],75:[2,44],80:[2,44],81:[2,44],82:[2,44],83:[2,44],84:[2,44],85:[2,44],87:[2,44]},{54:[1,110]},{54:[2,83],65:[2,83],72:[2,83],80:[2,83],81:[2,83],82:[2,83],83:[2,83],84:[2,83],85:[2,83]},{54:[2,85]},{5:[2,13],14:[2,13],15:[2,13],19:[2,13],29:[2,13],34:[2,13],39:[2,13],44:[2,13],47:[2,13],48:[2,13],51:[2,13],55:[2,13],60:[2,13]},{38:56,39:[1,58],43:57,44:[1,59],45:112,46:111,47:[2,76]},{33:[2,70],40:113,65:[2,70],72:[2,70],75:[2,70],80:[2,70],81:[2,70],82:[2,70],83:[2,70],84:[2,70],85:[2,70]},{47:[2,18]},{5:[2,14],14:[2,14],15:[2,14],19:[2,14],29:[2,14],34:[2,14],39:[2,14],44:[2,14],47:[2,14],48:[2,14],51:[2,14],55:[2,14],60:[2,14]},{33:[1,114]},{33:[2,87],65:[2,87],72:[2,87],80:[2,87],81:[2,87],82:[2,87],83:[2,87],84:[2,87], | ||
| 28 | 85:[2,87]},{33:[2,89]},{20:75,63:116,64:76,65:[1,44],67:115,68:[2,96],69:117,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,118]},{32:119,33:[2,62],74:120,75:[1,121]},{33:[2,59],65:[2,59],72:[2,59],75:[2,59],80:[2,59],81:[2,59],82:[2,59],83:[2,59],84:[2,59],85:[2,59]},{33:[2,61],75:[2,61]},{33:[2,68],37:122,74:123,75:[1,121]},{33:[2,65],65:[2,65],72:[2,65],75:[2,65],80:[2,65],81:[2,65],82:[2,65],83:[2,65],84:[2,65],85:[2,65]},{33:[2,67],75:[2,67]},{23:[1,124]},{23:[2,51],65:[2,51],72:[2,51],80:[2,51],81:[2,51],82:[2,51],83:[2,51],84:[2,51],85:[2,51]},{23:[2,53]},{33:[1,125]},{33:[2,91],65:[2,91],72:[2,91],80:[2,91],81:[2,91],82:[2,91],83:[2,91],84:[2,91],85:[2,91]},{33:[2,93]},{5:[2,22],14:[2,22],15:[2,22],19:[2,22],29:[2,22],34:[2,22],39:[2,22],44:[2,22],47:[2,22],48:[2,22],51:[2,22],55:[2,22],60:[2,22]},{23:[2,99],33:[2,99],54:[2,99],68:[2,99],72:[2,99],75:[2,99]},{73:[1,109]},{20:75,63:126,64:76,65:[1,44],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,23],14:[2,23],15:[2,23],19:[2,23],29:[2,23],34:[2,23],39:[2,23],44:[2,23],47:[2,23],48:[2,23],51:[2,23],55:[2,23],60:[2,23]},{47:[2,19]},{47:[2,77]},{20:75,33:[2,72],41:127,63:128,64:76,65:[1,44],69:129,70:77,71:78,72:[1,79],75:[2,72],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,24],14:[2,24],15:[2,24],19:[2,24],29:[2,24],34:[2,24],39:[2,24],44:[2,24],47:[2,24],48:[2,24],51:[2,24],55:[2,24],60:[2,24]},{68:[1,130]},{65:[2,95],68:[2,95],72:[2,95],80:[2,95],81:[2,95],82:[2,95],83:[2,95],84:[2,95],85:[2,95]},{68:[2,97]},{5:[2,21],14:[2,21],15:[2,21],19:[2,21],29:[2,21],34:[2,21],39:[2,21],44:[2,21],47:[2,21],48:[2,21],51:[2,21],55:[2,21],60:[2,21]},{33:[1,131]},{33:[2,63]},{72:[1,133],76:132},{33:[1,134]},{33:[2,69]},{15:[2,12]},{14:[2,26],15:[2,26],19:[2,26],29:[2,26],34:[2,26],47:[2,26],48:[2,26],51:[2,26],55:[2,26],60:[2,26]},{23:[2,31],33:[2,31],54:[2,31],68:[2,31],72:[2,31],75:[2,31]},{33:[2,74],42:135,74:136,75:[1,121]},{33:[2,71],65:[2,71],72:[2,71],75:[2,71],80:[2,71],81:[2,71],82:[2,71],83:[2,71],84:[2,71],85:[2,71]},{33:[2,73],75:[2,73]},{23:[2,29],33:[2,29],54:[2,29],65:[2,29],68:[2,29],72:[2,29],75:[2,29],80:[2,29],81:[2,29],82:[2,29],83:[2,29],84:[2,29],85:[2,29]},{14:[2,15],15:[2,15],19:[2,15],29:[2,15],34:[2,15],39:[2,15],44:[2,15],47:[2,15],48:[2,15],51:[2,15],55:[2,15],60:[2,15]},{72:[1,138],77:[1,137]},{72:[2,100],77:[2,100]},{14:[2,16],15:[2,16],19:[2,16],29:[2,16],34:[2,16],44:[2,16],47:[2,16],48:[2,16],51:[2,16],55:[2,16],60:[2,16]},{33:[1,139]},{33:[2,75]},{33:[2,32]},{72:[2,101],77:[2,101]},{14:[2,17],15:[2,17],19:[2,17],29:[2,17],34:[2,17],39:[2,17],44:[2,17],47:[2,17],48:[2,17],51:[2,17],55:[2,17],60:[2,17]}],defaultActions:{4:[2,1],55:[2,55],57:[2,20],61:[2,57],74:[2,81],83:[2,85],87:[2,18],91:[2,89],102:[2,53],105:[2,93],111:[2,19],112:[2,77],117:[2,97],120:[2,63],123:[2,69],124:[2,12],136:[2,75],137:[2,32]},parseError:function(a,b){throw new Error(a)},parse:function(a){function b(){var a;return a=c.lexer.lex()||1,"number"!=typeof a&&(a=c.symbols_[a]||a),a}var c=this,d=[0],e=[null],f=[],g=this.table,h="",i=0,j=0,k=0;this.lexer.setInput(a),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,this.yy.parser=this,"undefined"==typeof this.lexer.yylloc&&(this.lexer.yylloc={});var l=this.lexer.yylloc;f.push(l);var m=this.lexer.options&&this.lexer.options.ranges;"function"==typeof this.yy.parseError&&(this.parseError=this.yy.parseError);for(var n,o,p,q,r,s,t,u,v,w={};;){if(p=d[d.length-1],this.defaultActions[p]?q=this.defaultActions[p]:(null!==n&&"undefined"!=typeof n||(n=b()),q=g[p]&&g[p][n]),"undefined"==typeof q||!q.length||!q[0]){var x="";if(!k){v=[];for(s in g[p])this.terminals_[s]&&s>2&&v.push("'"+this.terminals_[s]+"'");x=this.lexer.showPosition?"Parse error on line "+(i+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+v.join(", ")+", got '"+(this.terminals_[n]||n)+"'":"Parse error on line "+(i+1)+": Unexpected "+(1==n?"end of input":"'"+(this.terminals_[n]||n)+"'"),this.parseError(x,{text:this.lexer.match,token:this.terminals_[n]||n,line:this.lexer.yylineno,loc:l,expected:v})}}if(q[0]instanceof Array&&q.length>1)throw new Error("Parse Error: multiple actions possible at state: "+p+", token: "+n);switch(q[0]){case 1:d.push(n),e.push(this.lexer.yytext),f.push(this.lexer.yylloc),d.push(q[1]),n=null,o?(n=o,o=null):(j=this.lexer.yyleng,h=this.lexer.yytext,i=this.lexer.yylineno,l=this.lexer.yylloc,k>0&&k--);break;case 2:if(t=this.productions_[q[1]][1],w.$=e[e.length-t],w._$={first_line:f[f.length-(t||1)].first_line,last_line:f[f.length-1].last_line,first_column:f[f.length-(t||1)].first_column,last_column:f[f.length-1].last_column},m&&(w._$.range=[f[f.length-(t||1)].range[0],f[f.length-1].range[1]]),r=this.performAction.call(w,h,j,i,this.yy,q[1],e,f),"undefined"!=typeof r)return r;t&&(d=d.slice(0,-1*t*2),e=e.slice(0,-1*t),f=f.slice(0,-1*t)),d.push(this.productions_[q[1]][0]),e.push(w.$),f.push(w._$),u=g[d[d.length-2]][d[d.length-1]],d.push(u);break;case 3:return!0}}return!0}},c=function(){var a={EOF:1,parseError:function(a,b){if(!this.yy.parser)throw new Error(a);this.yy.parser.parseError(a,b)},setInput:function(a){return this._input=a,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var a=this._input[0];this.yytext+=a,this.yyleng++,this.offset++,this.match+=a,this.matched+=a;var b=a.match(/(?:\r\n?|\n).*/g);return b?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),a},unput:function(a){var b=a.length,c=a.split(/(?:\r\n?|\n)/g);this._input=a+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-b-1),this.offset-=b;var d=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),c.length-1&&(this.yylineno-=c.length-1);var e=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:c?(c.length===d.length?this.yylloc.first_column:0)+d[d.length-c.length].length-c[0].length:this.yylloc.first_column-b},this.options.ranges&&(this.yylloc.range=[e[0],e[0]+this.yyleng-b]),this},more:function(){return this._more=!0,this},less:function(a){this.unput(this.match.slice(a))},pastInput:function(){var a=this.matched.substr(0,this.matched.length-this.match.length);return(a.length>20?"...":"")+a.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var a=this.match;return a.length<20&&(a+=this._input.substr(0,20-a.length)),(a.substr(0,20)+(a.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var a=this.pastInput(),b=new Array(a.length+1).join("-");return a+this.upcomingInput()+"\n"+b+"^"},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var a,b,c,d,e;this._more||(this.yytext="",this.match="");for(var f=this._currentRules(),g=0;g<f.length&&(c=this._input.match(this.rules[f[g]]),!c||b&&!(c[0].length>b[0].length)||(b=c,d=g,this.options.flex));g++);return b?(e=b[0].match(/(?:\r\n?|\n).*/g),e&&(this.yylineno+=e.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:e?e[e.length-1].length-e[e.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+b[0].length},this.yytext+=b[0],this.match+=b[0],this.matches=b,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._input=this._input.slice(b[0].length),this.matched+=b[0],a=this.performAction.call(this,this.yy,this,f[d],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),a?a:void 0):""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var a=this.next();return"undefined"!=typeof a?a:this.lex()},begin:function(a){this.conditionStack.push(a)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(a){this.begin(a)}};return a.options={},a.performAction=function(a,b,c,d){function e(a,c){return b.yytext=b.yytext.substr(a,b.yyleng-c)}switch(c){case 0:if("\\\\"===b.yytext.slice(-2)?(e(0,1),this.begin("mu")):"\\"===b.yytext.slice(-1)?(e(0,1),this.begin("emu")):this.begin("mu"),b.yytext)return 15;break;case 1:return 15;case 2:return this.popState(),15;case 3:return this.begin("raw"),15;case 4:return this.popState(),"raw"===this.conditionStack[this.conditionStack.length-1]?15:(b.yytext=b.yytext.substr(5,b.yyleng-9),"END_RAW_BLOCK");case 5:return 15;case 6:return this.popState(),14;case 7:return 65;case 8:return 68;case 9:return 19;case 10:return this.popState(),this.begin("raw"),23;case 11:return 55;case 12:return 60;case 13:return 29;case 14:return 47;case 15:return this.popState(),44;case 16:return this.popState(),44;case 17:return 34;case 18:return 39;case 19:return 51;case 20:return 48;case 21:this.unput(b.yytext),this.popState(),this.begin("com");break;case 22:return this.popState(),14;case 23:return 48;case 24:return 73;case 25:return 72;case 26:return 72;case 27:return 87;case 28:break;case 29:return this.popState(),54;case 30:return this.popState(),33;case 31:return b.yytext=e(1,2).replace(/\\"/g,'"'),80;case 32:return b.yytext=e(1,2).replace(/\\'/g,"'"),80;case 33:return 85;case 34:return 82;case 35:return 82;case 36:return 83;case 37:return 84;case 38:return 81;case 39:return 75;case 40:return 77;case 41:return 72;case 42:return b.yytext=b.yytext.replace(/\\([\\\]])/g,"$1"),72;case 43:return"INVALID";case 44:return 5}},a.rules=[/^(?:[^\x00]*?(?=(\{\{)))/,/^(?:[^\x00]+)/,/^(?:[^\x00]{2,}?(?=(\{\{|\\\{\{|\\\\\{\{|$)))/,/^(?:\{\{\{\{(?=[^\/]))/,/^(?:\{\{\{\{\/[^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=[=}\s\/.])\}\}\}\})/,/^(?:[^\x00]*?(?=(\{\{\{\{)))/,/^(?:[\s\S]*?--(~)?\}\})/,/^(?:\()/,/^(?:\))/,/^(?:\{\{\{\{)/,/^(?:\}\}\}\})/,/^(?:\{\{(~)?>)/,/^(?:\{\{(~)?#>)/,/^(?:\{\{(~)?#\*?)/,/^(?:\{\{(~)?\/)/,/^(?:\{\{(~)?\^\s*(~)?\}\})/,/^(?:\{\{(~)?\s*else\s*(~)?\}\})/,/^(?:\{\{(~)?\^)/,/^(?:\{\{(~)?\s*else\b)/,/^(?:\{\{(~)?\{)/,/^(?:\{\{(~)?&)/,/^(?:\{\{(~)?!--)/,/^(?:\{\{(~)?![\s\S]*?\}\})/,/^(?:\{\{(~)?\*?)/,/^(?:=)/,/^(?:\.\.)/,/^(?:\.(?=([=~}\s\/.)|])))/,/^(?:[\/.])/,/^(?:\s+)/,/^(?:\}(~)?\}\})/,/^(?:(~)?\}\})/,/^(?:"(\\["]|[^"])*")/,/^(?:'(\\[']|[^'])*')/,/^(?:@)/,/^(?:true(?=([~}\s)])))/,/^(?:false(?=([~}\s)])))/,/^(?:undefined(?=([~}\s)])))/,/^(?:null(?=([~}\s)])))/,/^(?:-?[0-9]+(?:\.[0-9]+)?(?=([~}\s)])))/,/^(?:as\s+\|)/,/^(?:\|)/,/^(?:([^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=([=~}\s\/.)|]))))/,/^(?:\[(\\\]|[^\]])*\])/,/^(?:.)/,/^(?:$)/],a.conditions={mu:{rules:[7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],inclusive:!1},emu:{rules:[2],inclusive:!1},com:{rules:[6],inclusive:!1},raw:{rules:[3,4,5],inclusive:!1},INITIAL:{rules:[0,1,44],inclusive:!0}},a}();return b.lexer=c,a.prototype=b,b.Parser=a,new a}();b["default"]=c,a.exports=b["default"]},function(a,b,c){"use strict";function d(){var a=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];this.options=a}function e(a,b,c){void 0===b&&(b=a.length);var d=a[b-1],e=a[b-2];return d?"ContentStatement"===d.type?(e||!c?/\r?\n\s*?$/:/(^|\r?\n)\s*?$/).test(d.original):void 0:c}function f(a,b,c){void 0===b&&(b=-1);var d=a[b+1],e=a[b+2];return d?"ContentStatement"===d.type?(e||!c?/^\s*?\r?\n/:/^\s*?(\r?\n|$)/).test(d.original):void 0:c}function g(a,b,c){var d=a[null==b?0:b+1];if(d&&"ContentStatement"===d.type&&(c||!d.rightStripped)){var e=d.value;d.value=d.value.replace(c?/^\s+/:/^[ \t]*\r?\n?/,""),d.rightStripped=d.value!==e}}function h(a,b,c){var d=a[null==b?a.length-1:b-1];if(d&&"ContentStatement"===d.type&&(c||!d.leftStripped)){var e=d.value;return d.value=d.value.replace(c?/\s+$/:/[ \t]+$/,""),d.leftStripped=d.value!==e,d.leftStripped}}var i=c(1)["default"];b.__esModule=!0;var j=c(39),k=i(j);d.prototype=new k["default"],d.prototype.Program=function(a){var b=!this.options.ignoreStandalone,c=!this.isRootSeen;this.isRootSeen=!0;for(var d=a.body,i=0,j=d.length;i<j;i++){var k=d[i],l=this.accept(k);if(l){var m=e(d,i,c),n=f(d,i,c),o=l.openStandalone&&m,p=l.closeStandalone&&n,q=l.inlineStandalone&&m&&n;l.close&&g(d,i,!0),l.open&&h(d,i,!0),b&&q&&(g(d,i),h(d,i)&&"PartialStatement"===k.type&&(k.indent=/([ \t]+$)/.exec(d[i-1].original)[1])),b&&o&&(g((k.program||k.inverse).body),h(d,i)),b&&p&&(g(d,i),h((k.inverse||k.program).body))}}return a},d.prototype.BlockStatement=d.prototype.DecoratorBlock=d.prototype.PartialBlockStatement=function(a){this.accept(a.program),this.accept(a.inverse);var b=a.program||a.inverse,c=a.program&&a.inverse,d=c,i=c;if(c&&c.chained)for(d=c.body[0].program;i.chained;)i=i.body[i.body.length-1].program;var j={open:a.openStrip.open,close:a.closeStrip.close,openStandalone:f(b.body),closeStandalone:e((d||b).body)};if(a.openStrip.close&&g(b.body,null,!0),c){var k=a.inverseStrip;k.open&&h(b.body,null,!0),k.close&&g(d.body,null,!0),a.closeStrip.open&&h(i.body,null,!0),!this.options.ignoreStandalone&&e(b.body)&&f(d.body)&&(h(b.body),g(d.body))}else a.closeStrip.open&&h(b.body,null,!0);return j},d.prototype.Decorator=d.prototype.MustacheStatement=function(a){return a.strip},d.prototype.PartialStatement=d.prototype.CommentStatement=function(a){var b=a.strip||{};return{inlineStandalone:!0,open:b.open,close:b.close}},b["default"]=d,a.exports=b["default"]},function(a,b,c){"use strict";function d(){this.parents=[]}function e(a){this.acceptRequired(a,"path"),this.acceptArray(a.params),this.acceptKey(a,"hash")}function f(a){e.call(this,a),this.acceptKey(a,"program"),this.acceptKey(a,"inverse")}function g(a){this.acceptRequired(a,"name"),this.acceptArray(a.params),this.acceptKey(a,"hash")}var h=c(1)["default"];b.__esModule=!0;var i=c(6),j=h(i);d.prototype={constructor:d,mutating:!1,acceptKey:function(a,b){var c=this.accept(a[b]);if(this.mutating){if(c&&!d.prototype[c.type])throw new j["default"]('Unexpected node type "'+c.type+'" found when accepting '+b+" on "+a.type);a[b]=c}},acceptRequired:function(a,b){if(this.acceptKey(a,b),!a[b])throw new j["default"](a.type+" requires "+b)},acceptArray:function(a){for(var b=0,c=a.length;b<c;b++)this.acceptKey(a,b),a[b]||(a.splice(b,1),b--,c--)},accept:function(a){if(a){if(!this[a.type])throw new j["default"]("Unknown type: "+a.type,a);this.current&&this.parents.unshift(this.current),this.current=a;var b=this[a.type](a);return this.current=this.parents.shift(),!this.mutating||b?b:b!==!1?a:void 0}},Program:function(a){this.acceptArray(a.body)},MustacheStatement:e,Decorator:e,BlockStatement:f,DecoratorBlock:f,PartialStatement:g,PartialBlockStatement:function(a){g.call(this,a),this.acceptKey(a,"program")},ContentStatement:function(){},CommentStatement:function(){},SubExpression:e,PathExpression:function(){},StringLiteral:function(){},NumberLiteral:function(){},BooleanLiteral:function(){},UndefinedLiteral:function(){},NullLiteral:function(){},Hash:function(a){this.acceptArray(a.pairs)},HashPair:function(a){this.acceptRequired(a,"value")}},b["default"]=d,a.exports=b["default"]},function(a,b,c){"use strict";function d(a,b){if(b=b.path?b.path.original:b,a.path.original!==b){var c={loc:a.path.loc};throw new q["default"](a.path.original+" doesn't match "+b,c)}}function e(a,b){this.source=a,this.start={line:b.first_line,column:b.first_column},this.end={line:b.last_line,column:b.last_column}}function f(a){return/^\[.*\]$/.test(a)?a.substr(1,a.length-2):a}function g(a,b){return{open:"~"===a.charAt(2),close:"~"===b.charAt(b.length-3)}}function h(a){return a.replace(/^\{\{~?\!-?-?/,"").replace(/-?-?~?\}\}$/,"")}function i(a,b,c){c=this.locInfo(c);for(var d=a?"@":"",e=[],f=0,g="",h=0,i=b.length;h<i;h++){var j=b[h].part,k=b[h].original!==j;if(d+=(b[h].separator||"")+j,k||".."!==j&&"."!==j&&"this"!==j)e.push(j);else{if(e.length>0)throw new q["default"]("Invalid path: "+d,{loc:c});".."===j&&(f++,g+="../")}}return{type:"PathExpression",data:a,depth:f,parts:e,original:d,loc:c}}function j(a,b,c,d,e,f){var g=d.charAt(3)||d.charAt(2),h="{"!==g&&"&"!==g,i=/\*/.test(d);return{type:i?"Decorator":"MustacheStatement",path:a,params:b,hash:c,escaped:h,strip:e,loc:this.locInfo(f)}}function k(a,b,c,e){d(a,c),e=this.locInfo(e);var f={type:"Program",body:b,strip:{},loc:e};return{type:"BlockStatement",path:a.path,params:a.params,hash:a.hash,program:f,openStrip:{},inverseStrip:{},closeStrip:{},loc:e}}function l(a,b,c,e,f,g){e&&e.path&&d(a,e);var h=/\*/.test(a.open);b.blockParams=a.blockParams;var i=void 0,j=void 0;if(c){if(h)throw new q["default"]("Unexpected inverse block on decorator",c);c.chain&&(c.program.body[0].closeStrip=e.strip),j=c.strip,i=c.program}return f&&(f=i,i=b,b=f),{type:h?"DecoratorBlock":"BlockStatement",path:a.path,params:a.params,hash:a.hash,program:b,inverse:i,openStrip:a.strip,inverseStrip:j,closeStrip:e&&e.strip,loc:this.locInfo(g)}}function m(a,b){if(!b&&a.length){var c=a[0].loc,d=a[a.length-1].loc;c&&d&&(b={source:c.source,start:{line:c.start.line,column:c.start.column},end:{line:d.end.line,column:d.end.column}})}return{type:"Program",body:a,strip:{},loc:b}}function n(a,b,c,e){return d(a,c),{type:"PartialBlockStatement",name:a.path,params:a.params,hash:a.hash,program:b,openStrip:a.strip,closeStrip:c&&c.strip,loc:this.locInfo(e)}}var o=c(1)["default"];b.__esModule=!0,b.SourceLocation=e,b.id=f,b.stripFlags=g,b.stripComment=h,b.preparePath=i,b.prepareMustache=j,b.prepareRawBlock=k,b.prepareBlock=l,b.prepareProgram=m,b.preparePartialBlock=n;var p=c(6),q=o(p)},function(a,b,c){"use strict";function d(){}function e(a,b,c){if(null==a||"string"!=typeof a&&"Program"!==a.type)throw new k["default"]("You must pass a string or Handlebars AST to Handlebars.precompile. You passed "+a);b=b||{},"data"in b||(b.data=!0),b.compat&&(b.useDepths=!0);var d=c.parse(a,b),e=(new c.Compiler).compile(d,b);return(new c.JavaScriptCompiler).compile(e,b)}function f(a,b,c){function d(){var d=c.parse(a,b),e=(new c.Compiler).compile(d,b),f=(new c.JavaScriptCompiler).compile(e,b,void 0,!0);return c.template(f)}function e(a,b){return f||(f=d()),f.call(this,a,b)}if(void 0===b&&(b={}),null==a||"string"!=typeof a&&"Program"!==a.type)throw new k["default"]("You must pass a string or Handlebars AST to Handlebars.compile. You passed "+a);b=l.extend({},b),"data"in b||(b.data=!0),b.compat&&(b.useDepths=!0);var f=void 0;return e._setup=function(a){return f||(f=d()),f._setup(a)},e._child=function(a,b,c,e){return f||(f=d()),f._child(a,b,c,e)},e}function g(a,b){if(a===b)return!0;if(l.isArray(a)&&l.isArray(b)&&a.length===b.length){for(var c=0;c<a.length;c++)if(!g(a[c],b[c]))return!1;return!0}}function h(a){if(!a.path.parts){var b=a.path;a.path={type:"PathExpression",data:!1,depth:0,parts:[b.original+""],original:b.original+"",loc:b.loc}}}var i=c(1)["default"];b.__esModule=!0,b.Compiler=d,b.precompile=e,b.compile=f;var j=c(6),k=i(j),l=c(5),m=c(35),n=i(m),o=[].slice;d.prototype={compiler:d,equals:function(a){var b=this.opcodes.length;if(a.opcodes.length!==b)return!1;for(var c=0;c<b;c++){var d=this.opcodes[c],e=a.opcodes[c];if(d.opcode!==e.opcode||!g(d.args,e.args))return!1}b=this.children.length;for(var c=0;c<b;c++)if(!this.children[c].equals(a.children[c]))return!1;return!0},guid:0,compile:function(a,b){this.sourceNode=[],this.opcodes=[],this.children=[],this.options=b,this.stringParams=b.stringParams,this.trackIds=b.trackIds,b.blockParams=b.blockParams||[];var c=b.knownHelpers;if(b.knownHelpers={helperMissing:!0,blockHelperMissing:!0,each:!0,"if":!0,unless:!0,"with":!0,log:!0,lookup:!0},c)for(var d in c)d in c&&(this.options.knownHelpers[d]=c[d]);return this.accept(a)},compileProgram:function(a){var b=new this.compiler,c=b.compile(a,this.options),d=this.guid++;return this.usePartial=this.usePartial||c.usePartial,this.children[d]=c,this.useDepths=this.useDepths||c.useDepths,d},accept:function(a){if(!this[a.type])throw new k["default"]("Unknown type: "+a.type,a);this.sourceNode.unshift(a);var b=this[a.type](a);return this.sourceNode.shift(),b},Program:function(a){this.options.blockParams.unshift(a.blockParams);for(var b=a.body,c=b.length,d=0;d<c;d++)this.accept(b[d]);return this.options.blockParams.shift(),this.isSimple=1===c,this.blockParams=a.blockParams?a.blockParams.length:0,this},BlockStatement:function(a){h(a);var b=a.program,c=a.inverse;b=b&&this.compileProgram(b),c=c&&this.compileProgram(c);var d=this.classifySexpr(a);"helper"===d?this.helperSexpr(a,b,c):"simple"===d?(this.simpleSexpr(a),this.opcode("pushProgram",b),this.opcode("pushProgram",c),this.opcode("emptyHash"),this.opcode("blockValue",a.path.original)):(this.ambiguousSexpr(a,b,c),this.opcode("pushProgram",b),this.opcode("pushProgram",c),this.opcode("emptyHash"),this.opcode("ambiguousBlockValue")),this.opcode("append")},DecoratorBlock:function(a){var b=a.program&&this.compileProgram(a.program),c=this.setupFullMustacheParams(a,b,void 0),d=a.path;this.useDecorators=!0,this.opcode("registerDecorator",c.length,d.original)},PartialStatement:function(a){this.usePartial=!0;var b=a.program;b&&(b=this.compileProgram(a.program));var c=a.params;if(c.length>1)throw new k["default"]("Unsupported number of partial arguments: "+c.length,a);c.length||(this.options.explicitPartialContext?this.opcode("pushLiteral","undefined"):c.push({type:"PathExpression",parts:[],depth:0}));var d=a.name.original,e="SubExpression"===a.name.type;e&&this.accept(a.name),this.setupFullMustacheParams(a,b,void 0,!0);var f=a.indent||"";this.options.preventIndent&&f&&(this.opcode("appendContent",f),f=""),this.opcode("invokePartial",e,d,f),this.opcode("append")},PartialBlockStatement:function(a){this.PartialStatement(a)},MustacheStatement:function(a){this.SubExpression(a),a.escaped&&!this.options.noEscape?this.opcode("appendEscaped"):this.opcode("append")},Decorator:function(a){this.DecoratorBlock(a)},ContentStatement:function(a){a.value&&this.opcode("appendContent",a.value)},CommentStatement:function(){},SubExpression:function(a){h(a);var b=this.classifySexpr(a);"simple"===b?this.simpleSexpr(a):"helper"===b?this.helperSexpr(a):this.ambiguousSexpr(a)},ambiguousSexpr:function(a,b,c){var d=a.path,e=d.parts[0],f=null!=b||null!=c;this.opcode("getContext",d.depth),this.opcode("pushProgram",b),this.opcode("pushProgram",c),d.strict=!0,this.accept(d),this.opcode("invokeAmbiguous",e,f)},simpleSexpr:function(a){var b=a.path;b.strict=!0,this.accept(b),this.opcode("resolvePossibleLambda")},helperSexpr:function(a,b,c){var d=this.setupFullMustacheParams(a,b,c),e=a.path,f=e.parts[0];if(this.options.knownHelpers[f])this.opcode("invokeKnownHelper",d.length,f);else{if(this.options.knownHelpersOnly)throw new k["default"]("You specified knownHelpersOnly, but used the unknown helper "+f,a);e.strict=!0,e.falsy=!0,this.accept(e),this.opcode("invokeHelper",d.length,e.original,n["default"].helpers.simpleId(e))}},PathExpression:function(a){this.addDepth(a.depth),this.opcode("getContext",a.depth);var b=a.parts[0],c=n["default"].helpers.scopedId(a),d=!a.depth&&!c&&this.blockParamIndex(b);d?this.opcode("lookupBlockParam",d,a.parts):b?a.data?(this.options.data=!0,this.opcode("lookupData",a.depth,a.parts,a.strict)):this.opcode("lookupOnContext",a.parts,a.falsy,a.strict,c):this.opcode("pushContext")},StringLiteral:function(a){this.opcode("pushString",a.value)},NumberLiteral:function(a){this.opcode("pushLiteral",a.value)},BooleanLiteral:function(a){this.opcode("pushLiteral",a.value)},UndefinedLiteral:function(){this.opcode("pushLiteral","undefined")},NullLiteral:function(){this.opcode("pushLiteral","null")},Hash:function(a){var b=a.pairs,c=0,d=b.length;for(this.opcode("pushHash");c<d;c++)this.pushParam(b[c].value);for(;c--;)this.opcode("assignToHash",b[c].key);this.opcode("popHash")},opcode:function(a){this.opcodes.push({opcode:a,args:o.call(arguments,1),loc:this.sourceNode[0].loc})},addDepth:function(a){a&&(this.useDepths=!0)},classifySexpr:function(a){var b=n["default"].helpers.simpleId(a.path),c=b&&!!this.blockParamIndex(a.path.parts[0]),d=!c&&n["default"].helpers.helperExpression(a),e=!c&&(d||b);if(e&&!d){var f=a.path.parts[0],g=this.options;g.knownHelpers[f]?d=!0:g.knownHelpersOnly&&(e=!1)}return d?"helper":e?"ambiguous":"simple"},pushParams:function(a){for(var b=0,c=a.length;b<c;b++)this.pushParam(a[b])},pushParam:function(a){var b=null!=a.value?a.value:a.original||"";if(this.stringParams)b.replace&&(b=b.replace(/^(\.?\.\/)*/g,"").replace(/\//g,".")),a.depth&&this.addDepth(a.depth),this.opcode("getContext",a.depth||0),this.opcode("pushStringParam",b,a.type),"SubExpression"===a.type&&this.accept(a);else{if(this.trackIds){var c=void 0;if(!a.parts||n["default"].helpers.scopedId(a)||a.depth||(c=this.blockParamIndex(a.parts[0])),c){var d=a.parts.slice(1).join(".");this.opcode("pushId","BlockParam",c,d)}else b=a.original||b,b.replace&&(b=b.replace(/^this(?:\.|$)/,"").replace(/^\.\//,"").replace(/^\.$/,"")),this.opcode("pushId",a.type,b)}this.accept(a)}},setupFullMustacheParams:function(a,b,c,d){var e=a.params;return this.pushParams(e),this.opcode("pushProgram",b),this.opcode("pushProgram",c),a.hash?this.accept(a.hash):this.opcode("emptyHash",d),e},blockParamIndex:function(a){for(var b=0,c=this.options.blockParams.length;b<c;b++){var d=this.options.blockParams[b],e=d&&l.indexOf(d,a);if(d&&e>=0)return[b,e]}}}},function(a,b,c){"use strict";function d(a){this.value=a}function e(){}function f(a,b,c,d){var e=b.popStack(),f=0,g=c.length;for(a&&g--;f<g;f++)e=b.nameLookup(e,c[f],d);return a?[b.aliasable("container.strict"),"(",e,", ",b.quotedString(c[f]),")"]:e}var g=c(1)["default"];b.__esModule=!0;var h=c(4),i=c(6),j=g(i),k=c(5),l=c(43),m=g(l);e.prototype={nameLookup:function(a,b){return e.isValidJavaScriptVariableName(b)?[a,".",b]:[a,"[",JSON.stringify(b),"]"]},depthedLookup:function(a){return[this.aliasable("container.lookup"),'(depths, "',a,'")']},compilerInfo:function(){var a=h.COMPILER_REVISION,b=h.REVISION_CHANGES[a];return[a,b]},appendToBuffer:function(a,b,c){return k.isArray(a)||(a=[a]),a=this.source.wrap(a,b),this.environment.isSimple?["return ",a,";"]:c?["buffer += ",a,";"]:(a.appendToBuffer=!0,a)},initializeBuffer:function(){return this.quotedString("")},compile:function(a,b,c,d){this.environment=a,this.options=b,this.stringParams=this.options.stringParams,this.trackIds=this.options.trackIds,this.precompile=!d,this.name=this.environment.name,this.isChild=!!c,this.context=c||{decorators:[],programs:[],environments:[]},this.preamble(),this.stackSlot=0,this.stackVars=[],this.aliases={},this.registers={list:[]},this.hashes=[],this.compileStack=[],this.inlineStack=[],this.blockParams=[],this.compileChildren(a,b),this.useDepths=this.useDepths||a.useDepths||a.useDecorators||this.options.compat,this.useBlockParams=this.useBlockParams||a.useBlockParams;var e=a.opcodes,f=void 0,g=void 0,h=void 0,i=void 0;for(h=0,i=e.length;h<i;h++)f=e[h],this.source.currentLocation=f.loc,g=g||f.loc,this[f.opcode].apply(this,f.args);if(this.source.currentLocation=g,this.pushSource(""),this.stackSlot||this.inlineStack.length||this.compileStack.length)throw new j["default"]("Compile completed with content left on stack");this.decorators.isEmpty()?this.decorators=void 0:(this.useDecorators=!0,this.decorators.prepend("var decorators = container.decorators;\n"),this.decorators.push("return fn;"),d?this.decorators=Function.apply(this,["fn","props","container","depth0","data","blockParams","depths",this.decorators.merge()]):(this.decorators.prepend("function(fn, props, container, depth0, data, blockParams, depths) {\n"),this.decorators.push("}\n"),this.decorators=this.decorators.merge()));var k=this.createFunctionContext(d);if(this.isChild)return k;var l={compiler:this.compilerInfo(),main:k};this.decorators&&(l.main_d=this.decorators,l.useDecorators=!0);var m=this.context,n=m.programs,o=m.decorators;for(h=0,i=n.length;h<i;h++)n[h]&&(l[h]=n[h],o[h]&&(l[h+"_d"]=o[h],l.useDecorators=!0));return this.environment.usePartial&&(l.usePartial=!0),this.options.data&&(l.useData=!0),this.useDepths&&(l.useDepths=!0),this.useBlockParams&&(l.useBlockParams=!0),this.options.compat&&(l.compat=!0),d?l.compilerOptions=this.options:(l.compiler=JSON.stringify(l.compiler),this.source.currentLocation={start:{line:1,column:0}},l=this.objectLiteral(l),b.srcName?(l=l.toStringWithSourceMap({file:b.destName}),l.map=l.map&&l.map.toString()):l=l.toString()),l},preamble:function(){this.lastContext=0,this.source=new m["default"](this.options.srcName),this.decorators=new m["default"](this.options.srcName)},createFunctionContext:function(a){var b="",c=this.stackVars.concat(this.registers.list);c.length>0&&(b+=", "+c.join(", "));var d=0;for(var e in this.aliases){var f=this.aliases[e];this.aliases.hasOwnProperty(e)&&f.children&&f.referenceCount>1&&(b+=", alias"+ ++d+"="+e,f.children[0]="alias"+d)}var g=["container","depth0","helpers","partials","data"];(this.useBlockParams||this.useDepths)&&g.push("blockParams"),this.useDepths&&g.push("depths");var h=this.mergeSource(b);return a?(g.push(h),Function.apply(this,g)):this.source.wrap(["function(",g.join(","),") {\n ",h,"}"])},mergeSource:function(a){var b=this.environment.isSimple,c=!this.forceBuffer,d=void 0,e=void 0,f=void 0,g=void 0;return this.source.each(function(a){a.appendToBuffer?(f?a.prepend(" + "):f=a,g=a):(f&&(e?f.prepend("buffer += "):d=!0,g.add(";"),f=g=void 0),e=!0,b||(c=!1))}),c?f?(f.prepend("return "),g.add(";")):e||this.source.push('return "";'):(a+=", buffer = "+(d?"":this.initializeBuffer()),f?(f.prepend("return buffer + "),g.add(";")):this.source.push("return buffer;")),a&&this.source.prepend("var "+a.substring(2)+(d?"":";\n")),this.source.merge()},blockValue:function(a){var b=this.aliasable("helpers.blockHelperMissing"),c=[this.contextName(0)];this.setupHelperArgs(a,0,c);var d=this.popStack();c.splice(1,0,d),this.push(this.source.functionCall(b,"call",c))},ambiguousBlockValue:function(){var a=this.aliasable("helpers.blockHelperMissing"),b=[this.contextName(0)];this.setupHelperArgs("",0,b,!0),this.flushInline();var c=this.topStack();b.splice(1,0,c),this.pushSource(["if (!",this.lastHelper,") { ",c," = ",this.source.functionCall(a,"call",b),"}"])},appendContent:function(a){this.pendingContent?a=this.pendingContent+a:this.pendingLocation=this.source.currentLocation,this.pendingContent=a},append:function(){if(this.isInline())this.replaceStack(function(a){return[" != null ? ",a,' : ""']}),this.pushSource(this.appendToBuffer(this.popStack()));else{var a=this.popStack();this.pushSource(["if (",a," != null) { ",this.appendToBuffer(a,void 0,!0)," }"]),this.environment.isSimple&&this.pushSource(["else { ",this.appendToBuffer("''",void 0,!0)," }"])}},appendEscaped:function(){this.pushSource(this.appendToBuffer([this.aliasable("container.escapeExpression"),"(",this.popStack(),")"]))},getContext:function(a){this.lastContext=a},pushContext:function(){this.pushStackLiteral(this.contextName(this.lastContext))},lookupOnContext:function(a,b,c,d){var e=0;d||!this.options.compat||this.lastContext?this.pushContext():this.push(this.depthedLookup(a[e++])),this.resolvePath("context",a,e,b,c)},lookupBlockParam:function(a,b){this.useBlockParams=!0,this.push(["blockParams[",a[0],"][",a[1],"]"]),this.resolvePath("context",b,1)},lookupData:function(a,b,c){a?this.pushStackLiteral("container.data(data, "+a+")"):this.pushStackLiteral("data"),this.resolvePath("data",b,0,!0,c)},resolvePath:function(a,b,c,d,e){var g=this;if(this.options.strict||this.options.assumeObjects)return void this.push(f(this.options.strict&&e,this,b,a));for(var h=b.length;c<h;c++)this.replaceStack(function(e){ | ||
| 29 | var f=g.nameLookup(e,b[c],a);return d?[" && ",f]:[" != null ? ",f," : ",e]})},resolvePossibleLambda:function(){this.push([this.aliasable("container.lambda"),"(",this.popStack(),", ",this.contextName(0),")"])},pushStringParam:function(a,b){this.pushContext(),this.pushString(b),"SubExpression"!==b&&("string"==typeof a?this.pushString(a):this.pushStackLiteral(a))},emptyHash:function(a){this.trackIds&&this.push("{}"),this.stringParams&&(this.push("{}"),this.push("{}")),this.pushStackLiteral(a?"undefined":"{}")},pushHash:function(){this.hash&&this.hashes.push(this.hash),this.hash={values:[],types:[],contexts:[],ids:[]}},popHash:function(){var a=this.hash;this.hash=this.hashes.pop(),this.trackIds&&this.push(this.objectLiteral(a.ids)),this.stringParams&&(this.push(this.objectLiteral(a.contexts)),this.push(this.objectLiteral(a.types))),this.push(this.objectLiteral(a.values))},pushString:function(a){this.pushStackLiteral(this.quotedString(a))},pushLiteral:function(a){this.pushStackLiteral(a)},pushProgram:function(a){null!=a?this.pushStackLiteral(this.programExpression(a)):this.pushStackLiteral(null)},registerDecorator:function(a,b){var c=this.nameLookup("decorators",b,"decorator"),d=this.setupHelperArgs(b,a);this.decorators.push(["fn = ",this.decorators.functionCall(c,"",["fn","props","container",d])," || fn;"])},invokeHelper:function(a,b,c){var d=this.popStack(),e=this.setupHelper(a,b),f=c?[e.name," || "]:"",g=["("].concat(f,d);this.options.strict||g.push(" || ",this.aliasable("helpers.helperMissing")),g.push(")"),this.push(this.source.functionCall(g,"call",e.callParams))},invokeKnownHelper:function(a,b){var c=this.setupHelper(a,b);this.push(this.source.functionCall(c.name,"call",c.callParams))},invokeAmbiguous:function(a,b){this.useRegister("helper");var c=this.popStack();this.emptyHash();var d=this.setupHelper(0,a,b),e=this.lastHelper=this.nameLookup("helpers",a,"helper"),f=["(","(helper = ",e," || ",c,")"];this.options.strict||(f[0]="(helper = ",f.push(" != null ? helper : ",this.aliasable("helpers.helperMissing"))),this.push(["(",f,d.paramsInit?["),(",d.paramsInit]:[],"),","(typeof helper === ",this.aliasable('"function"')," ? ",this.source.functionCall("helper","call",d.callParams)," : helper))"])},invokePartial:function(a,b,c){var d=[],e=this.setupParams(b,1,d);a&&(b=this.popStack(),delete e.name),c&&(e.indent=JSON.stringify(c)),e.helpers="helpers",e.partials="partials",e.decorators="container.decorators",a?d.unshift(b):d.unshift(this.nameLookup("partials",b,"partial")),this.options.compat&&(e.depths="depths"),e=this.objectLiteral(e),d.push(e),this.push(this.source.functionCall("container.invokePartial","",d))},assignToHash:function(a){var b=this.popStack(),c=void 0,d=void 0,e=void 0;this.trackIds&&(e=this.popStack()),this.stringParams&&(d=this.popStack(),c=this.popStack());var f=this.hash;c&&(f.contexts[a]=c),d&&(f.types[a]=d),e&&(f.ids[a]=e),f.values[a]=b},pushId:function(a,b,c){"BlockParam"===a?this.pushStackLiteral("blockParams["+b[0]+"].path["+b[1]+"]"+(c?" + "+JSON.stringify("."+c):"")):"PathExpression"===a?this.pushString(b):"SubExpression"===a?this.pushStackLiteral("true"):this.pushStackLiteral("null")},compiler:e,compileChildren:function(a,b){for(var c=a.children,d=void 0,e=void 0,f=0,g=c.length;f<g;f++){d=c[f],e=new this.compiler;var h=this.matchExistingProgram(d);if(null==h){this.context.programs.push("");var i=this.context.programs.length;d.index=i,d.name="program"+i,this.context.programs[i]=e.compile(d,b,this.context,!this.precompile),this.context.decorators[i]=e.decorators,this.context.environments[i]=d,this.useDepths=this.useDepths||e.useDepths,this.useBlockParams=this.useBlockParams||e.useBlockParams,d.useDepths=this.useDepths,d.useBlockParams=this.useBlockParams}else d.index=h.index,d.name="program"+h.index,this.useDepths=this.useDepths||h.useDepths,this.useBlockParams=this.useBlockParams||h.useBlockParams}},matchExistingProgram:function(a){for(var b=0,c=this.context.environments.length;b<c;b++){var d=this.context.environments[b];if(d&&d.equals(a))return d}},programExpression:function(a){var b=this.environment.children[a],c=[b.index,"data",b.blockParams];return(this.useBlockParams||this.useDepths)&&c.push("blockParams"),this.useDepths&&c.push("depths"),"container.program("+c.join(", ")+")"},useRegister:function(a){this.registers[a]||(this.registers[a]=!0,this.registers.list.push(a))},push:function(a){return a instanceof d||(a=this.source.wrap(a)),this.inlineStack.push(a),a},pushStackLiteral:function(a){this.push(new d(a))},pushSource:function(a){this.pendingContent&&(this.source.push(this.appendToBuffer(this.source.quotedString(this.pendingContent),this.pendingLocation)),this.pendingContent=void 0),a&&this.source.push(a)},replaceStack:function(a){var b=["("],c=void 0,e=void 0,f=void 0;if(!this.isInline())throw new j["default"]("replaceStack on non-inline");var g=this.popStack(!0);if(g instanceof d)c=[g.value],b=["(",c],f=!0;else{e=!0;var h=this.incrStack();b=["((",this.push(h)," = ",g,")"],c=this.topStack()}var i=a.call(this,c);f||this.popStack(),e&&this.stackSlot--,this.push(b.concat(i,")"))},incrStack:function(){return this.stackSlot++,this.stackSlot>this.stackVars.length&&this.stackVars.push("stack"+this.stackSlot),this.topStackName()},topStackName:function(){return"stack"+this.stackSlot},flushInline:function(){var a=this.inlineStack;this.inlineStack=[];for(var b=0,c=a.length;b<c;b++){var e=a[b];if(e instanceof d)this.compileStack.push(e);else{var f=this.incrStack();this.pushSource([f," = ",e,";"]),this.compileStack.push(f)}}},isInline:function(){return this.inlineStack.length},popStack:function(a){var b=this.isInline(),c=(b?this.inlineStack:this.compileStack).pop();if(!a&&c instanceof d)return c.value;if(!b){if(!this.stackSlot)throw new j["default"]("Invalid stack pop");this.stackSlot--}return c},topStack:function(){var a=this.isInline()?this.inlineStack:this.compileStack,b=a[a.length-1];return b instanceof d?b.value:b},contextName:function(a){return this.useDepths&&a?"depths["+a+"]":"depth"+a},quotedString:function(a){return this.source.quotedString(a)},objectLiteral:function(a){return this.source.objectLiteral(a)},aliasable:function(a){var b=this.aliases[a];return b?(b.referenceCount++,b):(b=this.aliases[a]=this.source.wrap(a),b.aliasable=!0,b.referenceCount=1,b)},setupHelper:function(a,b,c){var d=[],e=this.setupHelperArgs(b,a,d,c),f=this.nameLookup("helpers",b,"helper"),g=this.aliasable(this.contextName(0)+" != null ? "+this.contextName(0)+" : (container.nullContext || {})");return{params:d,paramsInit:e,name:f,callParams:[g].concat(d)}},setupParams:function(a,b,c){var d={},e=[],f=[],g=[],h=!c,i=void 0;h&&(c=[]),d.name=this.quotedString(a),d.hash=this.popStack(),this.trackIds&&(d.hashIds=this.popStack()),this.stringParams&&(d.hashTypes=this.popStack(),d.hashContexts=this.popStack());var j=this.popStack(),k=this.popStack();(k||j)&&(d.fn=k||"container.noop",d.inverse=j||"container.noop");for(var l=b;l--;)i=this.popStack(),c[l]=i,this.trackIds&&(g[l]=this.popStack()),this.stringParams&&(f[l]=this.popStack(),e[l]=this.popStack());return h&&(d.args=this.source.generateArray(c)),this.trackIds&&(d.ids=this.source.generateArray(g)),this.stringParams&&(d.types=this.source.generateArray(f),d.contexts=this.source.generateArray(e)),this.options.data&&(d.data="data"),this.useBlockParams&&(d.blockParams="blockParams"),d},setupHelperArgs:function(a,b,c,d){var e=this.setupParams(a,b,c);return e=this.objectLiteral(e),d?(this.useRegister("options"),c.push("options"),["options=",e]):c?(c.push(e),""):e}},function(){for(var a="break else new var case finally return void catch for switch while continue function this with default if throw delete in try do instanceof typeof abstract enum int short boolean export interface static byte extends long super char final native synchronized class float package throws const goto private transient debugger implements protected volatile double import public let yield await null true false".split(" "),b=e.RESERVED_WORDS={},c=0,d=a.length;c<d;c++)b[a[c]]=!0}(),e.isValidJavaScriptVariableName=function(a){return!e.RESERVED_WORDS[a]&&/^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(a)},b["default"]=e,a.exports=b["default"]},function(a,b,c){"use strict";function d(a,b,c){if(f.isArray(a)){for(var d=[],e=0,g=a.length;e<g;e++)d.push(b.wrap(a[e],c));return d}return"boolean"==typeof a||"number"==typeof a?a+"":a}function e(a){this.srcFile=a,this.source=[]}b.__esModule=!0;var f=c(5),g=void 0;try{}catch(h){}g||(g=function(a,b,c,d){this.src="",d&&this.add(d)},g.prototype={add:function(a){f.isArray(a)&&(a=a.join("")),this.src+=a},prepend:function(a){f.isArray(a)&&(a=a.join("")),this.src=a+this.src},toStringWithSourceMap:function(){return{code:this.toString()}},toString:function(){return this.src}}),e.prototype={isEmpty:function(){return!this.source.length},prepend:function(a,b){this.source.unshift(this.wrap(a,b))},push:function(a,b){this.source.push(this.wrap(a,b))},merge:function(){var a=this.empty();return this.each(function(b){a.add([" ",b,"\n"])}),a},each:function(a){for(var b=0,c=this.source.length;b<c;b++)a(this.source[b])},empty:function(){var a=this.currentLocation||{start:{}};return new g(a.start.line,a.start.column,this.srcFile)},wrap:function(a){var b=arguments.length<=1||void 0===arguments[1]?this.currentLocation||{start:{}}:arguments[1];return a instanceof g?a:(a=d(a,this,b),new g(b.start.line,b.start.column,this.srcFile,a))},functionCall:function(a,b,c){return c=this.generateList(c),this.wrap([a,b?"."+b+"(":"(",c,")"])},quotedString:function(a){return'"'+(a+"").replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")+'"'},objectLiteral:function(a){var b=[];for(var c in a)if(a.hasOwnProperty(c)){var e=d(a[c],this);"undefined"!==e&&b.push([this.quotedString(c),":",e])}var f=this.generateList(b);return f.prepend("{"),f.add("}"),f},generateList:function(a){for(var b=this.empty(),c=0,e=a.length;c<e;c++)c&&b.add(","),b.add(d(a[c],this));return b},generateArray:function(a){var b=this.generateList(a);return b.prepend("["),b.add("]"),b}},b["default"]=e,a.exports=b["default"]}])}); | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
This diff could not be displayed because it is too large.
| 1 | /**! | ||
| 2 | |||
| 3 | @license | ||
| 4 | handlebars v4.0.10 | ||
| 5 | |||
| 6 | Copyright (C) 2011-2016 by Yehuda Katz | ||
| 7 | |||
| 8 | Permission is hereby granted, free of charge, to any person obtaining a copy | ||
| 9 | of this software and associated documentation files (the "Software"), to deal | ||
| 10 | in the Software without restriction, including without limitation the rights | ||
| 11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
| 12 | copies of the Software, and to permit persons to whom the Software is | ||
| 13 | furnished to do so, subject to the following conditions: | ||
| 14 | |||
| 15 | The above copyright notice and this permission notice shall be included in | ||
| 16 | all copies or substantial portions of the Software. | ||
| 17 | |||
| 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
| 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
| 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
| 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
| 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
| 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||
| 24 | THE SOFTWARE. | ||
| 25 | |||
| 26 | */ | ||
| 27 | define("handlebars/utils",["exports"],function(a){"use strict";function b(a){return j[a]}function c(a){for(var b=1;b<arguments.length;b++)for(var c in arguments[b])Object.prototype.hasOwnProperty.call(arguments[b],c)&&(a[c]=arguments[b][c]);return a}function d(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return c;return-1}function e(a){if("string"!=typeof a){if(a&&a.toHTML)return a.toHTML();if(null==a)return"";if(!a)return a+"";a=""+a}return l.test(a)?a.replace(k,b):a}function f(a){return!a&&0!==a||!(!o(a)||0!==a.length)}function g(a){var b=c({},a);return b._parent=a,b}function h(a,b){return a.path=b,a}function i(a,b){return(a?a+".":"")+b}a.__esModule=!0,a.extend=c,a.indexOf=d,a.escapeExpression=e,a.isEmpty=f,a.createFrame=g,a.blockParams=h,a.appendContextPath=i;var j={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`","=":"="},k=/[&<>"'`=]/g,l=/[&<>"'`=]/,m=Object.prototype.toString;a.toString=m;var n=function(a){return"function"==typeof a};n(/x/)&&(a.isFunction=n=function(a){return"function"==typeof a&&"[object Function]"===m.call(a)}),a.isFunction=n;var o=Array.isArray||function(a){return!(!a||"object"!=typeof a)&&"[object Array]"===m.call(a)};a.isArray=o}),define("handlebars/exception",["exports","module"],function(a,b){"use strict";function c(a,b){var e=b&&b.loc,f=void 0,g=void 0;e&&(f=e.start.line,g=e.start.column,a+=" - "+f+":"+g);for(var h=Error.prototype.constructor.call(this,a),i=0;i<d.length;i++)this[d[i]]=h[d[i]];Error.captureStackTrace&&Error.captureStackTrace(this,c);try{e&&(this.lineNumber=f,Object.defineProperty?Object.defineProperty(this,"column",{value:g,enumerable:!0}):this.column=g)}catch(j){}}var d=["description","fileName","lineNumber","message","name","number","stack"];c.prototype=new Error,b.exports=c}),define("handlebars/helpers/block-helper-missing",["exports","module","../utils"],function(a,b,c){"use strict";b.exports=function(a){a.registerHelper("blockHelperMissing",function(b,d){var e=d.inverse,f=d.fn;if(b===!0)return f(this);if(b===!1||null==b)return e(this);if(c.isArray(b))return b.length>0?(d.ids&&(d.ids=[d.name]),a.helpers.each(b,d)):e(this);if(d.data&&d.ids){var g=c.createFrame(d.data);g.contextPath=c.appendContextPath(d.data.contextPath,d.name),d={data:g}}return f(b,d)})}}),define("handlebars/helpers/each",["exports","module","../utils","../exception"],function(a,b,c,d){"use strict";function e(a){return a&&a.__esModule?a:{"default":a}}var f=e(d);b.exports=function(a){a.registerHelper("each",function(a,b){function d(b,d,f){j&&(j.key=b,j.index=d,j.first=0===d,j.last=!!f,k&&(j.contextPath=k+b)),i+=e(a[b],{data:j,blockParams:c.blockParams([a[b],b],[k+b,null])})}if(!b)throw new f["default"]("Must pass iterator to #each");var e=b.fn,g=b.inverse,h=0,i="",j=void 0,k=void 0;if(b.data&&b.ids&&(k=c.appendContextPath(b.data.contextPath,b.ids[0])+"."),c.isFunction(a)&&(a=a.call(this)),b.data&&(j=c.createFrame(b.data)),a&&"object"==typeof a)if(c.isArray(a))for(var l=a.length;h<l;h++)h in a&&d(h,h,h===a.length-1);else{var m=void 0;for(var n in a)a.hasOwnProperty(n)&&(void 0!==m&&d(m,h-1),m=n,h++);void 0!==m&&d(m,h-1,!0)}return 0===h&&(i=g(this)),i})}}),define("handlebars/helpers/helper-missing",["exports","module","../exception"],function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=d(c);b.exports=function(a){a.registerHelper("helperMissing",function(){if(1!==arguments.length)throw new e["default"]('Missing helper: "'+arguments[arguments.length-1].name+'"')})}}),define("handlebars/helpers/if",["exports","module","../utils"],function(a,b,c){"use strict";b.exports=function(a){a.registerHelper("if",function(a,b){return c.isFunction(a)&&(a=a.call(this)),!b.hash.includeZero&&!a||c.isEmpty(a)?b.inverse(this):b.fn(this)}),a.registerHelper("unless",function(b,c){return a.helpers["if"].call(this,b,{fn:c.inverse,inverse:c.fn,hash:c.hash})})}}),define("handlebars/helpers/log",["exports","module"],function(a,b){"use strict";b.exports=function(a){a.registerHelper("log",function(){for(var b=[void 0],c=arguments[arguments.length-1],d=0;d<arguments.length-1;d++)b.push(arguments[d]);var e=1;null!=c.hash.level?e=c.hash.level:c.data&&null!=c.data.level&&(e=c.data.level),b[0]=e,a.log.apply(a,b)})}}),define("handlebars/helpers/lookup",["exports","module"],function(a,b){"use strict";b.exports=function(a){a.registerHelper("lookup",function(a,b){return a&&a[b]})}}),define("handlebars/helpers/with",["exports","module","../utils"],function(a,b,c){"use strict";b.exports=function(a){a.registerHelper("with",function(a,b){c.isFunction(a)&&(a=a.call(this));var d=b.fn;if(c.isEmpty(a))return b.inverse(this);var e=b.data;return b.data&&b.ids&&(e=c.createFrame(b.data),e.contextPath=c.appendContextPath(b.data.contextPath,b.ids[0])),d(a,{data:e,blockParams:c.blockParams([a],[e&&e.contextPath])})})}}),define("handlebars/helpers",["exports","./helpers/block-helper-missing","./helpers/each","./helpers/helper-missing","./helpers/if","./helpers/log","./helpers/lookup","./helpers/with"],function(a,b,c,d,e,f,g,h){"use strict";function i(a){return a&&a.__esModule?a:{"default":a}}function j(a){k["default"](a),l["default"](a),m["default"](a),n["default"](a),o["default"](a),p["default"](a),q["default"](a)}a.__esModule=!0,a.registerDefaultHelpers=j;var k=i(b),l=i(c),m=i(d),n=i(e),o=i(f),p=i(g),q=i(h)}),define("handlebars/decorators/inline",["exports","module","../utils"],function(a,b,c){"use strict";b.exports=function(a){a.registerDecorator("inline",function(a,b,d,e){var f=a;return b.partials||(b.partials={},f=function(e,f){var g=d.partials;d.partials=c.extend({},g,b.partials);var h=a(e,f);return d.partials=g,h}),b.partials[e.args[0]]=e.fn,f})}}),define("handlebars/decorators",["exports","./decorators/inline"],function(a,b){"use strict";function c(a){return a&&a.__esModule?a:{"default":a}}function d(a){e["default"](a)}a.__esModule=!0,a.registerDefaultDecorators=d;var e=c(b)}),define("handlebars/logger",["exports","module","./utils"],function(a,b,c){"use strict";var d={methodMap:["debug","info","warn","error"],level:"info",lookupLevel:function(a){if("string"==typeof a){var b=c.indexOf(d.methodMap,a.toLowerCase());a=b>=0?b:parseInt(a,10)}return a},log:function(a){if(a=d.lookupLevel(a),"undefined"!=typeof console&&d.lookupLevel(d.level)<=a){var b=d.methodMap[a];console[b]||(b="log");for(var c=arguments.length,e=Array(c>1?c-1:0),f=1;f<c;f++)e[f-1]=arguments[f];console[b].apply(console,e)}}};b.exports=d}),define("handlebars/base",["exports","./utils","./exception","./helpers","./decorators","./logger"],function(a,b,c,d,e,f){"use strict";function g(a){return a&&a.__esModule?a:{"default":a}}function h(a,b,c){this.helpers=a||{},this.partials=b||{},this.decorators=c||{},d.registerDefaultHelpers(this),e.registerDefaultDecorators(this)}a.__esModule=!0,a.HandlebarsEnvironment=h;var i=g(c),j=g(f),k="4.0.10";a.VERSION=k;var l=7;a.COMPILER_REVISION=l;var m={1:"<= 1.0.rc.2",2:"== 1.0.0-rc.3",3:"== 1.0.0-rc.4",4:"== 1.x.x",5:"== 2.0.0-alpha.x",6:">= 2.0.0-beta.1",7:">= 4.0.0"};a.REVISION_CHANGES=m;var n="[object Object]";h.prototype={constructor:h,logger:j["default"],log:j["default"].log,registerHelper:function(a,c){if(b.toString.call(a)===n){if(c)throw new i["default"]("Arg not supported with multiple helpers");b.extend(this.helpers,a)}else this.helpers[a]=c},unregisterHelper:function(a){delete this.helpers[a]},registerPartial:function(a,c){if(b.toString.call(a)===n)b.extend(this.partials,a);else{if("undefined"==typeof c)throw new i["default"]('Attempting to register a partial called "'+a+'" as undefined');this.partials[a]=c}},unregisterPartial:function(a){delete this.partials[a]},registerDecorator:function(a,c){if(b.toString.call(a)===n){if(c)throw new i["default"]("Arg not supported with multiple decorators");b.extend(this.decorators,a)}else this.decorators[a]=c},unregisterDecorator:function(a){delete this.decorators[a]}};var o=j["default"].log;a.log=o,a.createFrame=b.createFrame,a.logger=j["default"]}),define("handlebars/safe-string",["exports","module"],function(a,b){"use strict";function c(a){this.string=a}c.prototype.toString=c.prototype.toHTML=function(){return""+this.string},b.exports=c}),define("handlebars/runtime",["exports","./utils","./exception","./base"],function(a,b,c,d){"use strict";function e(a){return a&&a.__esModule?a:{"default":a}}function f(a){var b=a&&a[0]||1,c=d.COMPILER_REVISION;if(b!==c){if(b<c){var e=d.REVISION_CHANGES[c],f=d.REVISION_CHANGES[b];throw new n["default"]("Template was precompiled with an older version of Handlebars than the current runtime. Please update your precompiler to a newer version ("+e+") or downgrade your runtime to an older version ("+f+").")}throw new n["default"]("Template was precompiled with a newer version of Handlebars than the current runtime. Please update your runtime to a newer version ("+a[1]+").")}}function g(a,c){function d(d,e,f){f.hash&&(e=b.extend({},e,f.hash),f.ids&&(f.ids[0]=!0)),d=c.VM.resolvePartial.call(this,d,e,f);var g=c.VM.invokePartial.call(this,d,e,f);if(null==g&&c.compile&&(f.partials[f.name]=c.compile(d,a.compilerOptions,c),g=f.partials[f.name](e,f)),null!=g){if(f.indent){for(var h=g.split("\n"),i=0,j=h.length;i<j&&(h[i]||i+1!==j);i++)h[i]=f.indent+h[i];g=h.join("\n")}return g}throw new n["default"]("The partial "+f.name+" could not be compiled when running in runtime-only mode")}function e(b){function c(b){return""+a.main(f,b,f.helpers,f.partials,g,i,h)}var d=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],g=d.data;e._setup(d),!d.partial&&a.useData&&(g=l(b,g));var h=void 0,i=a.useBlockParams?[]:void 0;return a.useDepths&&(h=d.depths?b!=d.depths[0]?[b].concat(d.depths):d.depths:[b]),(c=m(a.main,c,f,d.depths||[],g,i))(b,d)}if(!c)throw new n["default"]("No environment passed to template");if(!a||!a.main)throw new n["default"]("Unknown template object: "+typeof a);a.main.decorator=a.main_d,c.VM.checkRevision(a.compiler);var f={strict:function(a,b){if(!(b in a))throw new n["default"]('"'+b+'" not defined in '+a);return a[b]},lookup:function(a,b){for(var c=a.length,d=0;d<c;d++)if(a[d]&&null!=a[d][b])return a[d][b]},lambda:function(a,b){return"function"==typeof a?a.call(b):a},escapeExpression:b.escapeExpression,invokePartial:d,fn:function(b){var c=a[b];return c.decorator=a[b+"_d"],c},programs:[],program:function(a,b,c,d,e){var f=this.programs[a],g=this.fn(a);return b||e||d||c?f=h(this,a,g,b,c,d,e):f||(f=this.programs[a]=h(this,a,g)),f},data:function(a,b){for(;a&&b--;)a=a._parent;return a},merge:function(a,c){var d=a||c;return a&&c&&a!==c&&(d=b.extend({},c,a)),d},nullContext:Object.seal({}),noop:c.VM.noop,compilerInfo:a.compiler};return e.isTop=!0,e._setup=function(b){b.partial?(f.helpers=b.helpers,f.partials=b.partials,f.decorators=b.decorators):(f.helpers=f.merge(b.helpers,c.helpers),a.usePartial&&(f.partials=f.merge(b.partials,c.partials)),(a.usePartial||a.useDecorators)&&(f.decorators=f.merge(b.decorators,c.decorators)))},e._child=function(b,c,d,e){if(a.useBlockParams&&!d)throw new n["default"]("must pass block params");if(a.useDepths&&!e)throw new n["default"]("must pass parent depths");return h(f,b,a[b],c,0,d,e)},e}function h(a,b,c,d,e,f,g){function h(b){var e=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],h=g;return!g||b==g[0]||b===a.nullContext&&null===g[0]||(h=[b].concat(g)),c(a,b,a.helpers,a.partials,e.data||d,f&&[e.blockParams].concat(f),h)}return h=m(c,h,a,g,d,f),h.program=b,h.depth=g?g.length:0,h.blockParams=e||0,h}function i(a,b,c){return a?a.call||c.name||(c.name=a,a=c.partials[a]):a="@partial-block"===c.name?c.data["partial-block"]:c.partials[c.name],a}function j(a,c,e){var f=e.data&&e.data["partial-block"];e.partial=!0,e.ids&&(e.data.contextPath=e.ids[0]||e.data.contextPath);var g=void 0;if(e.fn&&e.fn!==k&&!function(){e.data=d.createFrame(e.data);var a=e.fn;g=e.data["partial-block"]=function(b){var c=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];return c.data=d.createFrame(c.data),c.data["partial-block"]=f,a(b,c)},a.partials&&(e.partials=b.extend({},e.partials,a.partials))}(),void 0===a&&g&&(a=g),void 0===a)throw new n["default"]("The partial "+e.name+" could not be found");if(a instanceof Function)return a(c,e)}function k(){return""}function l(a,b){return b&&"root"in b||(b=b?d.createFrame(b):{},b.root=a),b}function m(a,c,d,e,f,g){if(a.decorator){var h={};c=a.decorator(c,h,d,e&&e[0],f,g,e),b.extend(c,h)}return c}a.__esModule=!0,a.checkRevision=f,a.template=g,a.wrapProgram=h,a.resolvePartial=i,a.invokePartial=j,a.noop=k;var n=e(c)}),define("handlebars/no-conflict",["exports","module"],function(a,b){"use strict";b.exports=function(a){var b="undefined"!=typeof global?global:window,c=b.Handlebars;a.noConflict=function(){return b.Handlebars===a&&(b.Handlebars=c),a}}}),define("handlebars.runtime",["exports","module","./handlebars/base","./handlebars/safe-string","./handlebars/exception","./handlebars/utils","./handlebars/runtime","./handlebars/no-conflict"],function(a,b,c,d,e,f,g,h){"use strict";function i(a){return a&&a.__esModule?a:{"default":a}}function j(){var a=new c.HandlebarsEnvironment;return f.extend(a,c),a.SafeString=k["default"],a.Exception=l["default"],a.Utils=f,a.escapeExpression=f.escapeExpression,a.VM=g,a.template=function(b){return g.template(b,a)},a}var k=i(d),l=i(e),m=i(h),n=j();n.create=j,m["default"](n),n["default"]=n,b.exports=n}); | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| 1 | /**! | ||
| 2 | |||
| 3 | @license | ||
| 4 | handlebars v4.0.10 | ||
| 5 | |||
| 6 | Copyright (C) 2011-2016 by Yehuda Katz | ||
| 7 | |||
| 8 | Permission is hereby granted, free of charge, to any person obtaining a copy | ||
| 9 | of this software and associated documentation files (the "Software"), to deal | ||
| 10 | in the Software without restriction, including without limitation the rights | ||
| 11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
| 12 | copies of the Software, and to permit persons to whom the Software is | ||
| 13 | furnished to do so, subject to the following conditions: | ||
| 14 | |||
| 15 | The above copyright notice and this permission notice shall be included in | ||
| 16 | all copies or substantial portions of the Software. | ||
| 17 | |||
| 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
| 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
| 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
| 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
| 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
| 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||
| 24 | THE SOFTWARE. | ||
| 25 | |||
| 26 | */ | ||
| 27 | (function webpackUniversalModuleDefinition(root, factory) { | ||
| 28 | if(typeof exports === 'object' && typeof module === 'object') | ||
| 29 | module.exports = factory(); | ||
| 30 | else if(typeof define === 'function' && define.amd) | ||
| 31 | define([], factory); | ||
| 32 | else if(typeof exports === 'object') | ||
| 33 | exports["Handlebars"] = factory(); | ||
| 34 | else | ||
| 35 | root["Handlebars"] = factory(); | ||
| 36 | })(this, function() { | ||
| 37 | return /******/ (function(modules) { // webpackBootstrap | ||
| 38 | /******/ // The module cache | ||
| 39 | /******/ var installedModules = {}; | ||
| 40 | |||
| 41 | /******/ // The require function | ||
| 42 | /******/ function __webpack_require__(moduleId) { | ||
| 43 | |||
| 44 | /******/ // Check if module is in cache | ||
| 45 | /******/ if(installedModules[moduleId]) | ||
| 46 | /******/ return installedModules[moduleId].exports; | ||
| 47 | |||
| 48 | /******/ // Create a new module (and put it into the cache) | ||
| 49 | /******/ var module = installedModules[moduleId] = { | ||
| 50 | /******/ exports: {}, | ||
| 51 | /******/ id: moduleId, | ||
| 52 | /******/ loaded: false | ||
| 53 | /******/ }; | ||
| 54 | |||
| 55 | /******/ // Execute the module function | ||
| 56 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); | ||
| 57 | |||
| 58 | /******/ // Flag the module as loaded | ||
| 59 | /******/ module.loaded = true; | ||
| 60 | |||
| 61 | /******/ // Return the exports of the module | ||
| 62 | /******/ return module.exports; | ||
| 63 | /******/ } | ||
| 64 | |||
| 65 | |||
| 66 | /******/ // expose the modules object (__webpack_modules__) | ||
| 67 | /******/ __webpack_require__.m = modules; | ||
| 68 | |||
| 69 | /******/ // expose the module cache | ||
| 70 | /******/ __webpack_require__.c = installedModules; | ||
| 71 | |||
| 72 | /******/ // __webpack_public_path__ | ||
| 73 | /******/ __webpack_require__.p = ""; | ||
| 74 | |||
| 75 | /******/ // Load entry module and return exports | ||
| 76 | /******/ return __webpack_require__(0); | ||
| 77 | /******/ }) | ||
| 78 | /************************************************************************/ | ||
| 79 | /******/ ([ | ||
| 80 | /* 0 */ | ||
| 81 | /***/ (function(module, exports, __webpack_require__) { | ||
| 82 | |||
| 83 | 'use strict'; | ||
| 84 | |||
| 85 | var _interopRequireWildcard = __webpack_require__(1)['default']; | ||
| 86 | |||
| 87 | var _interopRequireDefault = __webpack_require__(2)['default']; | ||
| 88 | |||
| 89 | exports.__esModule = true; | ||
| 90 | |||
| 91 | var _handlebarsBase = __webpack_require__(3); | ||
| 92 | |||
| 93 | var base = _interopRequireWildcard(_handlebarsBase); | ||
| 94 | |||
| 95 | // Each of these augment the Handlebars object. No need to setup here. | ||
| 96 | // (This is done to easily share code between commonjs and browse envs) | ||
| 97 | |||
| 98 | var _handlebarsSafeString = __webpack_require__(20); | ||
| 99 | |||
| 100 | var _handlebarsSafeString2 = _interopRequireDefault(_handlebarsSafeString); | ||
| 101 | |||
| 102 | var _handlebarsException = __webpack_require__(5); | ||
| 103 | |||
| 104 | var _handlebarsException2 = _interopRequireDefault(_handlebarsException); | ||
| 105 | |||
| 106 | var _handlebarsUtils = __webpack_require__(4); | ||
| 107 | |||
| 108 | var Utils = _interopRequireWildcard(_handlebarsUtils); | ||
| 109 | |||
| 110 | var _handlebarsRuntime = __webpack_require__(21); | ||
| 111 | |||
| 112 | var runtime = _interopRequireWildcard(_handlebarsRuntime); | ||
| 113 | |||
| 114 | var _handlebarsNoConflict = __webpack_require__(33); | ||
| 115 | |||
| 116 | var _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict); | ||
| 117 | |||
| 118 | // For compatibility and usage outside of module systems, make the Handlebars object a namespace | ||
| 119 | function create() { | ||
| 120 | var hb = new base.HandlebarsEnvironment(); | ||
| 121 | |||
| 122 | Utils.extend(hb, base); | ||
| 123 | hb.SafeString = _handlebarsSafeString2['default']; | ||
| 124 | hb.Exception = _handlebarsException2['default']; | ||
| 125 | hb.Utils = Utils; | ||
| 126 | hb.escapeExpression = Utils.escapeExpression; | ||
| 127 | |||
| 128 | hb.VM = runtime; | ||
| 129 | hb.template = function (spec) { | ||
| 130 | return runtime.template(spec, hb); | ||
| 131 | }; | ||
| 132 | |||
| 133 | return hb; | ||
| 134 | } | ||
| 135 | |||
| 136 | var inst = create(); | ||
| 137 | inst.create = create; | ||
| 138 | |||
| 139 | _handlebarsNoConflict2['default'](inst); | ||
| 140 | |||
| 141 | inst['default'] = inst; | ||
| 142 | |||
| 143 | exports['default'] = inst; | ||
| 144 | module.exports = exports['default']; | ||
| 145 | |||
| 146 | /***/ }), | ||
| 147 | /* 1 */ | ||
| 148 | /***/ (function(module, exports) { | ||
| 149 | |||
| 150 | "use strict"; | ||
| 151 | |||
| 152 | exports["default"] = function (obj) { | ||
| 153 | if (obj && obj.__esModule) { | ||
| 154 | return obj; | ||
| 155 | } else { | ||
| 156 | var newObj = {}; | ||
| 157 | |||
| 158 | if (obj != null) { | ||
| 159 | for (var key in obj) { | ||
| 160 | if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; | ||
| 161 | } | ||
| 162 | } | ||
| 163 | |||
| 164 | newObj["default"] = obj; | ||
| 165 | return newObj; | ||
| 166 | } | ||
| 167 | }; | ||
| 168 | |||
| 169 | exports.__esModule = true; | ||
| 170 | |||
| 171 | /***/ }), | ||
| 172 | /* 2 */ | ||
| 173 | /***/ (function(module, exports) { | ||
| 174 | |||
| 175 | "use strict"; | ||
| 176 | |||
| 177 | exports["default"] = function (obj) { | ||
| 178 | return obj && obj.__esModule ? obj : { | ||
| 179 | "default": obj | ||
| 180 | }; | ||
| 181 | }; | ||
| 182 | |||
| 183 | exports.__esModule = true; | ||
| 184 | |||
| 185 | /***/ }), | ||
| 186 | /* 3 */ | ||
| 187 | /***/ (function(module, exports, __webpack_require__) { | ||
| 188 | |||
| 189 | 'use strict'; | ||
| 190 | |||
| 191 | var _interopRequireDefault = __webpack_require__(2)['default']; | ||
| 192 | |||
| 193 | exports.__esModule = true; | ||
| 194 | exports.HandlebarsEnvironment = HandlebarsEnvironment; | ||
| 195 | |||
| 196 | var _utils = __webpack_require__(4); | ||
| 197 | |||
| 198 | var _exception = __webpack_require__(5); | ||
| 199 | |||
| 200 | var _exception2 = _interopRequireDefault(_exception); | ||
| 201 | |||
| 202 | var _helpers = __webpack_require__(9); | ||
| 203 | |||
| 204 | var _decorators = __webpack_require__(17); | ||
| 205 | |||
| 206 | var _logger = __webpack_require__(19); | ||
| 207 | |||
| 208 | var _logger2 = _interopRequireDefault(_logger); | ||
| 209 | |||
| 210 | var VERSION = '4.0.10'; | ||
| 211 | exports.VERSION = VERSION; | ||
| 212 | var COMPILER_REVISION = 7; | ||
| 213 | |||
| 214 | exports.COMPILER_REVISION = COMPILER_REVISION; | ||
| 215 | var REVISION_CHANGES = { | ||
| 216 | 1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it | ||
| 217 | 2: '== 1.0.0-rc.3', | ||
| 218 | 3: '== 1.0.0-rc.4', | ||
| 219 | 4: '== 1.x.x', | ||
| 220 | 5: '== 2.0.0-alpha.x', | ||
| 221 | 6: '>= 2.0.0-beta.1', | ||
| 222 | 7: '>= 4.0.0' | ||
| 223 | }; | ||
| 224 | |||
| 225 | exports.REVISION_CHANGES = REVISION_CHANGES; | ||
| 226 | var objectType = '[object Object]'; | ||
| 227 | |||
| 228 | function HandlebarsEnvironment(helpers, partials, decorators) { | ||
| 229 | this.helpers = helpers || {}; | ||
| 230 | this.partials = partials || {}; | ||
| 231 | this.decorators = decorators || {}; | ||
| 232 | |||
| 233 | _helpers.registerDefaultHelpers(this); | ||
| 234 | _decorators.registerDefaultDecorators(this); | ||
| 235 | } | ||
| 236 | |||
| 237 | HandlebarsEnvironment.prototype = { | ||
| 238 | constructor: HandlebarsEnvironment, | ||
| 239 | |||
| 240 | logger: _logger2['default'], | ||
| 241 | log: _logger2['default'].log, | ||
| 242 | |||
| 243 | registerHelper: function registerHelper(name, fn) { | ||
| 244 | if (_utils.toString.call(name) === objectType) { | ||
| 245 | if (fn) { | ||
| 246 | throw new _exception2['default']('Arg not supported with multiple helpers'); | ||
| 247 | } | ||
| 248 | _utils.extend(this.helpers, name); | ||
| 249 | } else { | ||
| 250 | this.helpers[name] = fn; | ||
| 251 | } | ||
| 252 | }, | ||
| 253 | unregisterHelper: function unregisterHelper(name) { | ||
| 254 | delete this.helpers[name]; | ||
| 255 | }, | ||
| 256 | |||
| 257 | registerPartial: function registerPartial(name, partial) { | ||
| 258 | if (_utils.toString.call(name) === objectType) { | ||
| 259 | _utils.extend(this.partials, name); | ||
| 260 | } else { | ||
| 261 | if (typeof partial === 'undefined') { | ||
| 262 | throw new _exception2['default']('Attempting to register a partial called "' + name + '" as undefined'); | ||
| 263 | } | ||
| 264 | this.partials[name] = partial; | ||
| 265 | } | ||
| 266 | }, | ||
| 267 | unregisterPartial: function unregisterPartial(name) { | ||
| 268 | delete this.partials[name]; | ||
| 269 | }, | ||
| 270 | |||
| 271 | registerDecorator: function registerDecorator(name, fn) { | ||
| 272 | if (_utils.toString.call(name) === objectType) { | ||
| 273 | if (fn) { | ||
| 274 | throw new _exception2['default']('Arg not supported with multiple decorators'); | ||
| 275 | } | ||
| 276 | _utils.extend(this.decorators, name); | ||
| 277 | } else { | ||
| 278 | this.decorators[name] = fn; | ||
| 279 | } | ||
| 280 | }, | ||
| 281 | unregisterDecorator: function unregisterDecorator(name) { | ||
| 282 | delete this.decorators[name]; | ||
| 283 | } | ||
| 284 | }; | ||
| 285 | |||
| 286 | var log = _logger2['default'].log; | ||
| 287 | |||
| 288 | exports.log = log; | ||
| 289 | exports.createFrame = _utils.createFrame; | ||
| 290 | exports.logger = _logger2['default']; | ||
| 291 | |||
| 292 | /***/ }), | ||
| 293 | /* 4 */ | ||
| 294 | /***/ (function(module, exports) { | ||
| 295 | |||
| 296 | 'use strict'; | ||
| 297 | |||
| 298 | exports.__esModule = true; | ||
| 299 | exports.extend = extend; | ||
| 300 | exports.indexOf = indexOf; | ||
| 301 | exports.escapeExpression = escapeExpression; | ||
| 302 | exports.isEmpty = isEmpty; | ||
| 303 | exports.createFrame = createFrame; | ||
| 304 | exports.blockParams = blockParams; | ||
| 305 | exports.appendContextPath = appendContextPath; | ||
| 306 | var escape = { | ||
| 307 | '&': '&', | ||
| 308 | '<': '<', | ||
| 309 | '>': '>', | ||
| 310 | '"': '"', | ||
| 311 | "'": ''', | ||
| 312 | '`': '`', | ||
| 313 | '=': '=' | ||
| 314 | }; | ||
| 315 | |||
| 316 | var badChars = /[&<>"'`=]/g, | ||
| 317 | possible = /[&<>"'`=]/; | ||
| 318 | |||
| 319 | function escapeChar(chr) { | ||
| 320 | return escape[chr]; | ||
| 321 | } | ||
| 322 | |||
| 323 | function extend(obj /* , ...source */) { | ||
| 324 | for (var i = 1; i < arguments.length; i++) { | ||
| 325 | for (var key in arguments[i]) { | ||
| 326 | if (Object.prototype.hasOwnProperty.call(arguments[i], key)) { | ||
| 327 | obj[key] = arguments[i][key]; | ||
| 328 | } | ||
| 329 | } | ||
| 330 | } | ||
| 331 | |||
| 332 | return obj; | ||
| 333 | } | ||
| 334 | |||
| 335 | var toString = Object.prototype.toString; | ||
| 336 | |||
| 337 | exports.toString = toString; | ||
| 338 | // Sourced from lodash | ||
| 339 | // https://github.com/bestiejs/lodash/blob/master/LICENSE.txt | ||
| 340 | /* eslint-disable func-style */ | ||
| 341 | var isFunction = function isFunction(value) { | ||
| 342 | return typeof value === 'function'; | ||
| 343 | }; | ||
| 344 | // fallback for older versions of Chrome and Safari | ||
| 345 | /* istanbul ignore next */ | ||
| 346 | if (isFunction(/x/)) { | ||
| 347 | exports.isFunction = isFunction = function (value) { | ||
| 348 | return typeof value === 'function' && toString.call(value) === '[object Function]'; | ||
| 349 | }; | ||
| 350 | } | ||
| 351 | exports.isFunction = isFunction; | ||
| 352 | |||
| 353 | /* eslint-enable func-style */ | ||
| 354 | |||
| 355 | /* istanbul ignore next */ | ||
| 356 | var isArray = Array.isArray || function (value) { | ||
| 357 | return value && typeof value === 'object' ? toString.call(value) === '[object Array]' : false; | ||
| 358 | }; | ||
| 359 | |||
| 360 | exports.isArray = isArray; | ||
| 361 | // Older IE versions do not directly support indexOf so we must implement our own, sadly. | ||
| 362 | |||
| 363 | function indexOf(array, value) { | ||
| 364 | for (var i = 0, len = array.length; i < len; i++) { | ||
| 365 | if (array[i] === value) { | ||
| 366 | return i; | ||
| 367 | } | ||
| 368 | } | ||
| 369 | return -1; | ||
| 370 | } | ||
| 371 | |||
| 372 | function escapeExpression(string) { | ||
| 373 | if (typeof string !== 'string') { | ||
| 374 | // don't escape SafeStrings, since they're already safe | ||
| 375 | if (string && string.toHTML) { | ||
| 376 | return string.toHTML(); | ||
| 377 | } else if (string == null) { | ||
| 378 | return ''; | ||
| 379 | } else if (!string) { | ||
| 380 | return string + ''; | ||
| 381 | } | ||
| 382 | |||
| 383 | // Force a string conversion as this will be done by the append regardless and | ||
| 384 | // the regex test will do this transparently behind the scenes, causing issues if | ||
| 385 | // an object's to string has escaped characters in it. | ||
| 386 | string = '' + string; | ||
| 387 | } | ||
| 388 | |||
| 389 | if (!possible.test(string)) { | ||
| 390 | return string; | ||
| 391 | } | ||
| 392 | return string.replace(badChars, escapeChar); | ||
| 393 | } | ||
| 394 | |||
| 395 | function isEmpty(value) { | ||
| 396 | if (!value && value !== 0) { | ||
| 397 | return true; | ||
| 398 | } else if (isArray(value) && value.length === 0) { | ||
| 399 | return true; | ||
| 400 | } else { | ||
| 401 | return false; | ||
| 402 | } | ||
| 403 | } | ||
| 404 | |||
| 405 | function createFrame(object) { | ||
| 406 | var frame = extend({}, object); | ||
| 407 | frame._parent = object; | ||
| 408 | return frame; | ||
| 409 | } | ||
| 410 | |||
| 411 | function blockParams(params, ids) { | ||
| 412 | params.path = ids; | ||
| 413 | return params; | ||
| 414 | } | ||
| 415 | |||
| 416 | function appendContextPath(contextPath, id) { | ||
| 417 | return (contextPath ? contextPath + '.' : '') + id; | ||
| 418 | } | ||
| 419 | |||
| 420 | /***/ }), | ||
| 421 | /* 5 */ | ||
| 422 | /***/ (function(module, exports, __webpack_require__) { | ||
| 423 | |||
| 424 | 'use strict'; | ||
| 425 | |||
| 426 | var _Object$defineProperty = __webpack_require__(6)['default']; | ||
| 427 | |||
| 428 | exports.__esModule = true; | ||
| 429 | |||
| 430 | var errorProps = ['description', 'fileName', 'lineNumber', 'message', 'name', 'number', 'stack']; | ||
| 431 | |||
| 432 | function Exception(message, node) { | ||
| 433 | var loc = node && node.loc, | ||
| 434 | line = undefined, | ||
| 435 | column = undefined; | ||
| 436 | if (loc) { | ||
| 437 | line = loc.start.line; | ||
| 438 | column = loc.start.column; | ||
| 439 | |||
| 440 | message += ' - ' + line + ':' + column; | ||
| 441 | } | ||
| 442 | |||
| 443 | var tmp = Error.prototype.constructor.call(this, message); | ||
| 444 | |||
| 445 | // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work. | ||
| 446 | for (var idx = 0; idx < errorProps.length; idx++) { | ||
| 447 | this[errorProps[idx]] = tmp[errorProps[idx]]; | ||
| 448 | } | ||
| 449 | |||
| 450 | /* istanbul ignore else */ | ||
| 451 | if (Error.captureStackTrace) { | ||
| 452 | Error.captureStackTrace(this, Exception); | ||
| 453 | } | ||
| 454 | |||
| 455 | try { | ||
| 456 | if (loc) { | ||
| 457 | this.lineNumber = line; | ||
| 458 | |||
| 459 | // Work around issue under safari where we can't directly set the column value | ||
| 460 | /* istanbul ignore next */ | ||
| 461 | if (_Object$defineProperty) { | ||
| 462 | Object.defineProperty(this, 'column', { | ||
| 463 | value: column, | ||
| 464 | enumerable: true | ||
| 465 | }); | ||
| 466 | } else { | ||
| 467 | this.column = column; | ||
| 468 | } | ||
| 469 | } | ||
| 470 | } catch (nop) { | ||
| 471 | /* Ignore if the browser is very particular */ | ||
| 472 | } | ||
| 473 | } | ||
| 474 | |||
| 475 | Exception.prototype = new Error(); | ||
| 476 | |||
| 477 | exports['default'] = Exception; | ||
| 478 | module.exports = exports['default']; | ||
| 479 | |||
| 480 | /***/ }), | ||
| 481 | /* 6 */ | ||
| 482 | /***/ (function(module, exports, __webpack_require__) { | ||
| 483 | |||
| 484 | module.exports = { "default": __webpack_require__(7), __esModule: true }; | ||
| 485 | |||
| 486 | /***/ }), | ||
| 487 | /* 7 */ | ||
| 488 | /***/ (function(module, exports, __webpack_require__) { | ||
| 489 | |||
| 490 | var $ = __webpack_require__(8); | ||
| 491 | module.exports = function defineProperty(it, key, desc){ | ||
| 492 | return $.setDesc(it, key, desc); | ||
| 493 | }; | ||
| 494 | |||
| 495 | /***/ }), | ||
| 496 | /* 8 */ | ||
| 497 | /***/ (function(module, exports) { | ||
| 498 | |||
| 499 | var $Object = Object; | ||
| 500 | module.exports = { | ||
| 501 | create: $Object.create, | ||
| 502 | getProto: $Object.getPrototypeOf, | ||
| 503 | isEnum: {}.propertyIsEnumerable, | ||
| 504 | getDesc: $Object.getOwnPropertyDescriptor, | ||
| 505 | setDesc: $Object.defineProperty, | ||
| 506 | setDescs: $Object.defineProperties, | ||
| 507 | getKeys: $Object.keys, | ||
| 508 | getNames: $Object.getOwnPropertyNames, | ||
| 509 | getSymbols: $Object.getOwnPropertySymbols, | ||
| 510 | each: [].forEach | ||
| 511 | }; | ||
| 512 | |||
| 513 | /***/ }), | ||
| 514 | /* 9 */ | ||
| 515 | /***/ (function(module, exports, __webpack_require__) { | ||
| 516 | |||
| 517 | 'use strict'; | ||
| 518 | |||
| 519 | var _interopRequireDefault = __webpack_require__(2)['default']; | ||
| 520 | |||
| 521 | exports.__esModule = true; | ||
| 522 | exports.registerDefaultHelpers = registerDefaultHelpers; | ||
| 523 | |||
| 524 | var _helpersBlockHelperMissing = __webpack_require__(10); | ||
| 525 | |||
| 526 | var _helpersBlockHelperMissing2 = _interopRequireDefault(_helpersBlockHelperMissing); | ||
| 527 | |||
| 528 | var _helpersEach = __webpack_require__(11); | ||
| 529 | |||
| 530 | var _helpersEach2 = _interopRequireDefault(_helpersEach); | ||
| 531 | |||
| 532 | var _helpersHelperMissing = __webpack_require__(12); | ||
| 533 | |||
| 534 | var _helpersHelperMissing2 = _interopRequireDefault(_helpersHelperMissing); | ||
| 535 | |||
| 536 | var _helpersIf = __webpack_require__(13); | ||
| 537 | |||
| 538 | var _helpersIf2 = _interopRequireDefault(_helpersIf); | ||
| 539 | |||
| 540 | var _helpersLog = __webpack_require__(14); | ||
| 541 | |||
| 542 | var _helpersLog2 = _interopRequireDefault(_helpersLog); | ||
| 543 | |||
| 544 | var _helpersLookup = __webpack_require__(15); | ||
| 545 | |||
| 546 | var _helpersLookup2 = _interopRequireDefault(_helpersLookup); | ||
| 547 | |||
| 548 | var _helpersWith = __webpack_require__(16); | ||
| 549 | |||
| 550 | var _helpersWith2 = _interopRequireDefault(_helpersWith); | ||
| 551 | |||
| 552 | function registerDefaultHelpers(instance) { | ||
| 553 | _helpersBlockHelperMissing2['default'](instance); | ||
| 554 | _helpersEach2['default'](instance); | ||
| 555 | _helpersHelperMissing2['default'](instance); | ||
| 556 | _helpersIf2['default'](instance); | ||
| 557 | _helpersLog2['default'](instance); | ||
| 558 | _helpersLookup2['default'](instance); | ||
| 559 | _helpersWith2['default'](instance); | ||
| 560 | } | ||
| 561 | |||
| 562 | /***/ }), | ||
| 563 | /* 10 */ | ||
| 564 | /***/ (function(module, exports, __webpack_require__) { | ||
| 565 | |||
| 566 | 'use strict'; | ||
| 567 | |||
| 568 | exports.__esModule = true; | ||
| 569 | |||
| 570 | var _utils = __webpack_require__(4); | ||
| 571 | |||
| 572 | exports['default'] = function (instance) { | ||
| 573 | instance.registerHelper('blockHelperMissing', function (context, options) { | ||
| 574 | var inverse = options.inverse, | ||
| 575 | fn = options.fn; | ||
| 576 | |||
| 577 | if (context === true) { | ||
| 578 | return fn(this); | ||
| 579 | } else if (context === false || context == null) { | ||
| 580 | return inverse(this); | ||
| 581 | } else if (_utils.isArray(context)) { | ||
| 582 | if (context.length > 0) { | ||
| 583 | if (options.ids) { | ||
| 584 | options.ids = [options.name]; | ||
| 585 | } | ||
| 586 | |||
| 587 | return instance.helpers.each(context, options); | ||
| 588 | } else { | ||
| 589 | return inverse(this); | ||
| 590 | } | ||
| 591 | } else { | ||
| 592 | if (options.data && options.ids) { | ||
| 593 | var data = _utils.createFrame(options.data); | ||
| 594 | data.contextPath = _utils.appendContextPath(options.data.contextPath, options.name); | ||
| 595 | options = { data: data }; | ||
| 596 | } | ||
| 597 | |||
| 598 | return fn(context, options); | ||
| 599 | } | ||
| 600 | }); | ||
| 601 | }; | ||
| 602 | |||
| 603 | module.exports = exports['default']; | ||
| 604 | |||
| 605 | /***/ }), | ||
| 606 | /* 11 */ | ||
| 607 | /***/ (function(module, exports, __webpack_require__) { | ||
| 608 | |||
| 609 | 'use strict'; | ||
| 610 | |||
| 611 | var _interopRequireDefault = __webpack_require__(2)['default']; | ||
| 612 | |||
| 613 | exports.__esModule = true; | ||
| 614 | |||
| 615 | var _utils = __webpack_require__(4); | ||
| 616 | |||
| 617 | var _exception = __webpack_require__(5); | ||
| 618 | |||
| 619 | var _exception2 = _interopRequireDefault(_exception); | ||
| 620 | |||
| 621 | exports['default'] = function (instance) { | ||
| 622 | instance.registerHelper('each', function (context, options) { | ||
| 623 | if (!options) { | ||
| 624 | throw new _exception2['default']('Must pass iterator to #each'); | ||
| 625 | } | ||
| 626 | |||
| 627 | var fn = options.fn, | ||
| 628 | inverse = options.inverse, | ||
| 629 | i = 0, | ||
| 630 | ret = '', | ||
| 631 | data = undefined, | ||
| 632 | contextPath = undefined; | ||
| 633 | |||
| 634 | if (options.data && options.ids) { | ||
| 635 | contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]) + '.'; | ||
| 636 | } | ||
| 637 | |||
| 638 | if (_utils.isFunction(context)) { | ||
| 639 | context = context.call(this); | ||
| 640 | } | ||
| 641 | |||
| 642 | if (options.data) { | ||
| 643 | data = _utils.createFrame(options.data); | ||
| 644 | } | ||
| 645 | |||
| 646 | function execIteration(field, index, last) { | ||
| 647 | if (data) { | ||
| 648 | data.key = field; | ||
| 649 | data.index = index; | ||
| 650 | data.first = index === 0; | ||
| 651 | data.last = !!last; | ||
| 652 | |||
| 653 | if (contextPath) { | ||
| 654 | data.contextPath = contextPath + field; | ||
| 655 | } | ||
| 656 | } | ||
| 657 | |||
| 658 | ret = ret + fn(context[field], { | ||
| 659 | data: data, | ||
| 660 | blockParams: _utils.blockParams([context[field], field], [contextPath + field, null]) | ||
| 661 | }); | ||
| 662 | } | ||
| 663 | |||
| 664 | if (context && typeof context === 'object') { | ||
| 665 | if (_utils.isArray(context)) { | ||
| 666 | for (var j = context.length; i < j; i++) { | ||
| 667 | if (i in context) { | ||
| 668 | execIteration(i, i, i === context.length - 1); | ||
| 669 | } | ||
| 670 | } | ||
| 671 | } else { | ||
| 672 | var priorKey = undefined; | ||
| 673 | |||
| 674 | for (var key in context) { | ||
| 675 | if (context.hasOwnProperty(key)) { | ||
| 676 | // We're running the iterations one step out of sync so we can detect | ||
| 677 | // the last iteration without have to scan the object twice and create | ||
| 678 | // an itermediate keys array. | ||
| 679 | if (priorKey !== undefined) { | ||
| 680 | execIteration(priorKey, i - 1); | ||
| 681 | } | ||
| 682 | priorKey = key; | ||
| 683 | i++; | ||
| 684 | } | ||
| 685 | } | ||
| 686 | if (priorKey !== undefined) { | ||
| 687 | execIteration(priorKey, i - 1, true); | ||
| 688 | } | ||
| 689 | } | ||
| 690 | } | ||
| 691 | |||
| 692 | if (i === 0) { | ||
| 693 | ret = inverse(this); | ||
| 694 | } | ||
| 695 | |||
| 696 | return ret; | ||
| 697 | }); | ||
| 698 | }; | ||
| 699 | |||
| 700 | module.exports = exports['default']; | ||
| 701 | |||
| 702 | /***/ }), | ||
| 703 | /* 12 */ | ||
| 704 | /***/ (function(module, exports, __webpack_require__) { | ||
| 705 | |||
| 706 | 'use strict'; | ||
| 707 | |||
| 708 | var _interopRequireDefault = __webpack_require__(2)['default']; | ||
| 709 | |||
| 710 | exports.__esModule = true; | ||
| 711 | |||
| 712 | var _exception = __webpack_require__(5); | ||
| 713 | |||
| 714 | var _exception2 = _interopRequireDefault(_exception); | ||
| 715 | |||
| 716 | exports['default'] = function (instance) { | ||
| 717 | instance.registerHelper('helperMissing', function () /* [args, ]options */{ | ||
| 718 | if (arguments.length === 1) { | ||
| 719 | // A missing field in a {{foo}} construct. | ||
| 720 | return undefined; | ||
| 721 | } else { | ||
| 722 | // Someone is actually trying to call something, blow up. | ||
| 723 | throw new _exception2['default']('Missing helper: "' + arguments[arguments.length - 1].name + '"'); | ||
| 724 | } | ||
| 725 | }); | ||
| 726 | }; | ||
| 727 | |||
| 728 | module.exports = exports['default']; | ||
| 729 | |||
| 730 | /***/ }), | ||
| 731 | /* 13 */ | ||
| 732 | /***/ (function(module, exports, __webpack_require__) { | ||
| 733 | |||
| 734 | 'use strict'; | ||
| 735 | |||
| 736 | exports.__esModule = true; | ||
| 737 | |||
| 738 | var _utils = __webpack_require__(4); | ||
| 739 | |||
| 740 | exports['default'] = function (instance) { | ||
| 741 | instance.registerHelper('if', function (conditional, options) { | ||
| 742 | if (_utils.isFunction(conditional)) { | ||
| 743 | conditional = conditional.call(this); | ||
| 744 | } | ||
| 745 | |||
| 746 | // Default behavior is to render the positive path if the value is truthy and not empty. | ||
| 747 | // The `includeZero` option may be set to treat the condtional as purely not empty based on the | ||
| 748 | // behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative. | ||
| 749 | if (!options.hash.includeZero && !conditional || _utils.isEmpty(conditional)) { | ||
| 750 | return options.inverse(this); | ||
| 751 | } else { | ||
| 752 | return options.fn(this); | ||
| 753 | } | ||
| 754 | }); | ||
| 755 | |||
| 756 | instance.registerHelper('unless', function (conditional, options) { | ||
| 757 | return instance.helpers['if'].call(this, conditional, { fn: options.inverse, inverse: options.fn, hash: options.hash }); | ||
| 758 | }); | ||
| 759 | }; | ||
| 760 | |||
| 761 | module.exports = exports['default']; | ||
| 762 | |||
| 763 | /***/ }), | ||
| 764 | /* 14 */ | ||
| 765 | /***/ (function(module, exports) { | ||
| 766 | |||
| 767 | 'use strict'; | ||
| 768 | |||
| 769 | exports.__esModule = true; | ||
| 770 | |||
| 771 | exports['default'] = function (instance) { | ||
| 772 | instance.registerHelper('log', function () /* message, options */{ | ||
| 773 | var args = [undefined], | ||
| 774 | options = arguments[arguments.length - 1]; | ||
| 775 | for (var i = 0; i < arguments.length - 1; i++) { | ||
| 776 | args.push(arguments[i]); | ||
| 777 | } | ||
| 778 | |||
| 779 | var level = 1; | ||
| 780 | if (options.hash.level != null) { | ||
| 781 | level = options.hash.level; | ||
| 782 | } else if (options.data && options.data.level != null) { | ||
| 783 | level = options.data.level; | ||
| 784 | } | ||
| 785 | args[0] = level; | ||
| 786 | |||
| 787 | instance.log.apply(instance, args); | ||
| 788 | }); | ||
| 789 | }; | ||
| 790 | |||
| 791 | module.exports = exports['default']; | ||
| 792 | |||
| 793 | /***/ }), | ||
| 794 | /* 15 */ | ||
| 795 | /***/ (function(module, exports) { | ||
| 796 | |||
| 797 | 'use strict'; | ||
| 798 | |||
| 799 | exports.__esModule = true; | ||
| 800 | |||
| 801 | exports['default'] = function (instance) { | ||
| 802 | instance.registerHelper('lookup', function (obj, field) { | ||
| 803 | return obj && obj[field]; | ||
| 804 | }); | ||
| 805 | }; | ||
| 806 | |||
| 807 | module.exports = exports['default']; | ||
| 808 | |||
| 809 | /***/ }), | ||
| 810 | /* 16 */ | ||
| 811 | /***/ (function(module, exports, __webpack_require__) { | ||
| 812 | |||
| 813 | 'use strict'; | ||
| 814 | |||
| 815 | exports.__esModule = true; | ||
| 816 | |||
| 817 | var _utils = __webpack_require__(4); | ||
| 818 | |||
| 819 | exports['default'] = function (instance) { | ||
| 820 | instance.registerHelper('with', function (context, options) { | ||
| 821 | if (_utils.isFunction(context)) { | ||
| 822 | context = context.call(this); | ||
| 823 | } | ||
| 824 | |||
| 825 | var fn = options.fn; | ||
| 826 | |||
| 827 | if (!_utils.isEmpty(context)) { | ||
| 828 | var data = options.data; | ||
| 829 | if (options.data && options.ids) { | ||
| 830 | data = _utils.createFrame(options.data); | ||
| 831 | data.contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]); | ||
| 832 | } | ||
| 833 | |||
| 834 | return fn(context, { | ||
| 835 | data: data, | ||
| 836 | blockParams: _utils.blockParams([context], [data && data.contextPath]) | ||
| 837 | }); | ||
| 838 | } else { | ||
| 839 | return options.inverse(this); | ||
| 840 | } | ||
| 841 | }); | ||
| 842 | }; | ||
| 843 | |||
| 844 | module.exports = exports['default']; | ||
| 845 | |||
| 846 | /***/ }), | ||
| 847 | /* 17 */ | ||
| 848 | /***/ (function(module, exports, __webpack_require__) { | ||
| 849 | |||
| 850 | 'use strict'; | ||
| 851 | |||
| 852 | var _interopRequireDefault = __webpack_require__(2)['default']; | ||
| 853 | |||
| 854 | exports.__esModule = true; | ||
| 855 | exports.registerDefaultDecorators = registerDefaultDecorators; | ||
| 856 | |||
| 857 | var _decoratorsInline = __webpack_require__(18); | ||
| 858 | |||
| 859 | var _decoratorsInline2 = _interopRequireDefault(_decoratorsInline); | ||
| 860 | |||
| 861 | function registerDefaultDecorators(instance) { | ||
| 862 | _decoratorsInline2['default'](instance); | ||
| 863 | } | ||
| 864 | |||
| 865 | /***/ }), | ||
| 866 | /* 18 */ | ||
| 867 | /***/ (function(module, exports, __webpack_require__) { | ||
| 868 | |||
| 869 | 'use strict'; | ||
| 870 | |||
| 871 | exports.__esModule = true; | ||
| 872 | |||
| 873 | var _utils = __webpack_require__(4); | ||
| 874 | |||
| 875 | exports['default'] = function (instance) { | ||
| 876 | instance.registerDecorator('inline', function (fn, props, container, options) { | ||
| 877 | var ret = fn; | ||
| 878 | if (!props.partials) { | ||
| 879 | props.partials = {}; | ||
| 880 | ret = function (context, options) { | ||
| 881 | // Create a new partials stack frame prior to exec. | ||
| 882 | var original = container.partials; | ||
| 883 | container.partials = _utils.extend({}, original, props.partials); | ||
| 884 | var ret = fn(context, options); | ||
| 885 | container.partials = original; | ||
| 886 | return ret; | ||
| 887 | }; | ||
| 888 | } | ||
| 889 | |||
| 890 | props.partials[options.args[0]] = options.fn; | ||
| 891 | |||
| 892 | return ret; | ||
| 893 | }); | ||
| 894 | }; | ||
| 895 | |||
| 896 | module.exports = exports['default']; | ||
| 897 | |||
| 898 | /***/ }), | ||
| 899 | /* 19 */ | ||
| 900 | /***/ (function(module, exports, __webpack_require__) { | ||
| 901 | |||
| 902 | 'use strict'; | ||
| 903 | |||
| 904 | exports.__esModule = true; | ||
| 905 | |||
| 906 | var _utils = __webpack_require__(4); | ||
| 907 | |||
| 908 | var logger = { | ||
| 909 | methodMap: ['debug', 'info', 'warn', 'error'], | ||
| 910 | level: 'info', | ||
| 911 | |||
| 912 | // Maps a given level value to the `methodMap` indexes above. | ||
| 913 | lookupLevel: function lookupLevel(level) { | ||
| 914 | if (typeof level === 'string') { | ||
| 915 | var levelMap = _utils.indexOf(logger.methodMap, level.toLowerCase()); | ||
| 916 | if (levelMap >= 0) { | ||
| 917 | level = levelMap; | ||
| 918 | } else { | ||
| 919 | level = parseInt(level, 10); | ||
| 920 | } | ||
| 921 | } | ||
| 922 | |||
| 923 | return level; | ||
| 924 | }, | ||
| 925 | |||
| 926 | // Can be overridden in the host environment | ||
| 927 | log: function log(level) { | ||
| 928 | level = logger.lookupLevel(level); | ||
| 929 | |||
| 930 | if (typeof console !== 'undefined' && logger.lookupLevel(logger.level) <= level) { | ||
| 931 | var method = logger.methodMap[level]; | ||
| 932 | if (!console[method]) { | ||
| 933 | // eslint-disable-line no-console | ||
| 934 | method = 'log'; | ||
| 935 | } | ||
| 936 | |||
| 937 | for (var _len = arguments.length, message = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { | ||
| 938 | message[_key - 1] = arguments[_key]; | ||
| 939 | } | ||
| 940 | |||
| 941 | console[method].apply(console, message); // eslint-disable-line no-console | ||
| 942 | } | ||
| 943 | } | ||
| 944 | }; | ||
| 945 | |||
| 946 | exports['default'] = logger; | ||
| 947 | module.exports = exports['default']; | ||
| 948 | |||
| 949 | /***/ }), | ||
| 950 | /* 20 */ | ||
| 951 | /***/ (function(module, exports) { | ||
| 952 | |||
| 953 | // Build out our basic SafeString type | ||
| 954 | 'use strict'; | ||
| 955 | |||
| 956 | exports.__esModule = true; | ||
| 957 | function SafeString(string) { | ||
| 958 | this.string = string; | ||
| 959 | } | ||
| 960 | |||
| 961 | SafeString.prototype.toString = SafeString.prototype.toHTML = function () { | ||
| 962 | return '' + this.string; | ||
| 963 | }; | ||
| 964 | |||
| 965 | exports['default'] = SafeString; | ||
| 966 | module.exports = exports['default']; | ||
| 967 | |||
| 968 | /***/ }), | ||
| 969 | /* 21 */ | ||
| 970 | /***/ (function(module, exports, __webpack_require__) { | ||
| 971 | |||
| 972 | 'use strict'; | ||
| 973 | |||
| 974 | var _Object$seal = __webpack_require__(22)['default']; | ||
| 975 | |||
| 976 | var _interopRequireWildcard = __webpack_require__(1)['default']; | ||
| 977 | |||
| 978 | var _interopRequireDefault = __webpack_require__(2)['default']; | ||
| 979 | |||
| 980 | exports.__esModule = true; | ||
| 981 | exports.checkRevision = checkRevision; | ||
| 982 | exports.template = template; | ||
| 983 | exports.wrapProgram = wrapProgram; | ||
| 984 | exports.resolvePartial = resolvePartial; | ||
| 985 | exports.invokePartial = invokePartial; | ||
| 986 | exports.noop = noop; | ||
| 987 | |||
| 988 | var _utils = __webpack_require__(4); | ||
| 989 | |||
| 990 | var Utils = _interopRequireWildcard(_utils); | ||
| 991 | |||
| 992 | var _exception = __webpack_require__(5); | ||
| 993 | |||
| 994 | var _exception2 = _interopRequireDefault(_exception); | ||
| 995 | |||
| 996 | var _base = __webpack_require__(3); | ||
| 997 | |||
| 998 | function checkRevision(compilerInfo) { | ||
| 999 | var compilerRevision = compilerInfo && compilerInfo[0] || 1, | ||
| 1000 | currentRevision = _base.COMPILER_REVISION; | ||
| 1001 | |||
| 1002 | if (compilerRevision !== currentRevision) { | ||
| 1003 | if (compilerRevision < currentRevision) { | ||
| 1004 | var runtimeVersions = _base.REVISION_CHANGES[currentRevision], | ||
| 1005 | compilerVersions = _base.REVISION_CHANGES[compilerRevision]; | ||
| 1006 | throw new _exception2['default']('Template was precompiled with an older version of Handlebars than the current runtime. ' + 'Please update your precompiler to a newer version (' + runtimeVersions + ') or downgrade your runtime to an older version (' + compilerVersions + ').'); | ||
| 1007 | } else { | ||
| 1008 | // Use the embedded version info since the runtime doesn't know about this revision yet | ||
| 1009 | throw new _exception2['default']('Template was precompiled with a newer version of Handlebars than the current runtime. ' + 'Please update your runtime to a newer version (' + compilerInfo[1] + ').'); | ||
| 1010 | } | ||
| 1011 | } | ||
| 1012 | } | ||
| 1013 | |||
| 1014 | function template(templateSpec, env) { | ||
| 1015 | /* istanbul ignore next */ | ||
| 1016 | if (!env) { | ||
| 1017 | throw new _exception2['default']('No environment passed to template'); | ||
| 1018 | } | ||
| 1019 | if (!templateSpec || !templateSpec.main) { | ||
| 1020 | throw new _exception2['default']('Unknown template object: ' + typeof templateSpec); | ||
| 1021 | } | ||
| 1022 | |||
| 1023 | templateSpec.main.decorator = templateSpec.main_d; | ||
| 1024 | |||
| 1025 | // Note: Using env.VM references rather than local var references throughout this section to allow | ||
| 1026 | // for external users to override these as psuedo-supported APIs. | ||
| 1027 | env.VM.checkRevision(templateSpec.compiler); | ||
| 1028 | |||
| 1029 | function invokePartialWrapper(partial, context, options) { | ||
| 1030 | if (options.hash) { | ||
| 1031 | context = Utils.extend({}, context, options.hash); | ||
| 1032 | if (options.ids) { | ||
| 1033 | options.ids[0] = true; | ||
| 1034 | } | ||
| 1035 | } | ||
| 1036 | |||
| 1037 | partial = env.VM.resolvePartial.call(this, partial, context, options); | ||
| 1038 | var result = env.VM.invokePartial.call(this, partial, context, options); | ||
| 1039 | |||
| 1040 | if (result == null && env.compile) { | ||
| 1041 | options.partials[options.name] = env.compile(partial, templateSpec.compilerOptions, env); | ||
| 1042 | result = options.partials[options.name](context, options); | ||
| 1043 | } | ||
| 1044 | if (result != null) { | ||
| 1045 | if (options.indent) { | ||
| 1046 | var lines = result.split('\n'); | ||
| 1047 | for (var i = 0, l = lines.length; i < l; i++) { | ||
| 1048 | if (!lines[i] && i + 1 === l) { | ||
| 1049 | break; | ||
| 1050 | } | ||
| 1051 | |||
| 1052 | lines[i] = options.indent + lines[i]; | ||
| 1053 | } | ||
| 1054 | result = lines.join('\n'); | ||
| 1055 | } | ||
| 1056 | return result; | ||
| 1057 | } else { | ||
| 1058 | throw new _exception2['default']('The partial ' + options.name + ' could not be compiled when running in runtime-only mode'); | ||
| 1059 | } | ||
| 1060 | } | ||
| 1061 | |||
| 1062 | // Just add water | ||
| 1063 | var container = { | ||
| 1064 | strict: function strict(obj, name) { | ||
| 1065 | if (!(name in obj)) { | ||
| 1066 | throw new _exception2['default']('"' + name + '" not defined in ' + obj); | ||
| 1067 | } | ||
| 1068 | return obj[name]; | ||
| 1069 | }, | ||
| 1070 | lookup: function lookup(depths, name) { | ||
| 1071 | var len = depths.length; | ||
| 1072 | for (var i = 0; i < len; i++) { | ||
| 1073 | if (depths[i] && depths[i][name] != null) { | ||
| 1074 | return depths[i][name]; | ||
| 1075 | } | ||
| 1076 | } | ||
| 1077 | }, | ||
| 1078 | lambda: function lambda(current, context) { | ||
| 1079 | return typeof current === 'function' ? current.call(context) : current; | ||
| 1080 | }, | ||
| 1081 | |||
| 1082 | escapeExpression: Utils.escapeExpression, | ||
| 1083 | invokePartial: invokePartialWrapper, | ||
| 1084 | |||
| 1085 | fn: function fn(i) { | ||
| 1086 | var ret = templateSpec[i]; | ||
| 1087 | ret.decorator = templateSpec[i + '_d']; | ||
| 1088 | return ret; | ||
| 1089 | }, | ||
| 1090 | |||
| 1091 | programs: [], | ||
| 1092 | program: function program(i, data, declaredBlockParams, blockParams, depths) { | ||
| 1093 | var programWrapper = this.programs[i], | ||
| 1094 | fn = this.fn(i); | ||
| 1095 | if (data || depths || blockParams || declaredBlockParams) { | ||
| 1096 | programWrapper = wrapProgram(this, i, fn, data, declaredBlockParams, blockParams, depths); | ||
| 1097 | } else if (!programWrapper) { | ||
| 1098 | programWrapper = this.programs[i] = wrapProgram(this, i, fn); | ||
| 1099 | } | ||
| 1100 | return programWrapper; | ||
| 1101 | }, | ||
| 1102 | |||
| 1103 | data: function data(value, depth) { | ||
| 1104 | while (value && depth--) { | ||
| 1105 | value = value._parent; | ||
| 1106 | } | ||
| 1107 | return value; | ||
| 1108 | }, | ||
| 1109 | merge: function merge(param, common) { | ||
| 1110 | var obj = param || common; | ||
| 1111 | |||
| 1112 | if (param && common && param !== common) { | ||
| 1113 | obj = Utils.extend({}, common, param); | ||
| 1114 | } | ||
| 1115 | |||
| 1116 | return obj; | ||
| 1117 | }, | ||
| 1118 | // An empty object to use as replacement for null-contexts | ||
| 1119 | nullContext: _Object$seal({}), | ||
| 1120 | |||
| 1121 | noop: env.VM.noop, | ||
| 1122 | compilerInfo: templateSpec.compiler | ||
| 1123 | }; | ||
| 1124 | |||
| 1125 | function ret(context) { | ||
| 1126 | var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; | ||
| 1127 | |||
| 1128 | var data = options.data; | ||
| 1129 | |||
| 1130 | ret._setup(options); | ||
| 1131 | if (!options.partial && templateSpec.useData) { | ||
| 1132 | data = initData(context, data); | ||
| 1133 | } | ||
| 1134 | var depths = undefined, | ||
| 1135 | blockParams = templateSpec.useBlockParams ? [] : undefined; | ||
| 1136 | if (templateSpec.useDepths) { | ||
| 1137 | if (options.depths) { | ||
| 1138 | depths = context != options.depths[0] ? [context].concat(options.depths) : options.depths; | ||
| 1139 | } else { | ||
| 1140 | depths = [context]; | ||
| 1141 | } | ||
| 1142 | } | ||
| 1143 | |||
| 1144 | function main(context /*, options*/) { | ||
| 1145 | return '' + templateSpec.main(container, context, container.helpers, container.partials, data, blockParams, depths); | ||
| 1146 | } | ||
| 1147 | main = executeDecorators(templateSpec.main, main, container, options.depths || [], data, blockParams); | ||
| 1148 | return main(context, options); | ||
| 1149 | } | ||
| 1150 | ret.isTop = true; | ||
| 1151 | |||
| 1152 | ret._setup = function (options) { | ||
| 1153 | if (!options.partial) { | ||
| 1154 | container.helpers = container.merge(options.helpers, env.helpers); | ||
| 1155 | |||
| 1156 | if (templateSpec.usePartial) { | ||
| 1157 | container.partials = container.merge(options.partials, env.partials); | ||
| 1158 | } | ||
| 1159 | if (templateSpec.usePartial || templateSpec.useDecorators) { | ||
| 1160 | container.decorators = container.merge(options.decorators, env.decorators); | ||
| 1161 | } | ||
| 1162 | } else { | ||
| 1163 | container.helpers = options.helpers; | ||
| 1164 | container.partials = options.partials; | ||
| 1165 | container.decorators = options.decorators; | ||
| 1166 | } | ||
| 1167 | }; | ||
| 1168 | |||
| 1169 | ret._child = function (i, data, blockParams, depths) { | ||
| 1170 | if (templateSpec.useBlockParams && !blockParams) { | ||
| 1171 | throw new _exception2['default']('must pass block params'); | ||
| 1172 | } | ||
| 1173 | if (templateSpec.useDepths && !depths) { | ||
| 1174 | throw new _exception2['default']('must pass parent depths'); | ||
| 1175 | } | ||
| 1176 | |||
| 1177 | return wrapProgram(container, i, templateSpec[i], data, 0, blockParams, depths); | ||
| 1178 | }; | ||
| 1179 | return ret; | ||
| 1180 | } | ||
| 1181 | |||
| 1182 | function wrapProgram(container, i, fn, data, declaredBlockParams, blockParams, depths) { | ||
| 1183 | function prog(context) { | ||
| 1184 | var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; | ||
| 1185 | |||
| 1186 | var currentDepths = depths; | ||
| 1187 | if (depths && context != depths[0] && !(context === container.nullContext && depths[0] === null)) { | ||
| 1188 | currentDepths = [context].concat(depths); | ||
| 1189 | } | ||
| 1190 | |||
| 1191 | return fn(container, context, container.helpers, container.partials, options.data || data, blockParams && [options.blockParams].concat(blockParams), currentDepths); | ||
| 1192 | } | ||
| 1193 | |||
| 1194 | prog = executeDecorators(fn, prog, container, depths, data, blockParams); | ||
| 1195 | |||
| 1196 | prog.program = i; | ||
| 1197 | prog.depth = depths ? depths.length : 0; | ||
| 1198 | prog.blockParams = declaredBlockParams || 0; | ||
| 1199 | return prog; | ||
| 1200 | } | ||
| 1201 | |||
| 1202 | function resolvePartial(partial, context, options) { | ||
| 1203 | if (!partial) { | ||
| 1204 | if (options.name === '@partial-block') { | ||
| 1205 | partial = options.data['partial-block']; | ||
| 1206 | } else { | ||
| 1207 | partial = options.partials[options.name]; | ||
| 1208 | } | ||
| 1209 | } else if (!partial.call && !options.name) { | ||
| 1210 | // This is a dynamic partial that returned a string | ||
| 1211 | options.name = partial; | ||
| 1212 | partial = options.partials[partial]; | ||
| 1213 | } | ||
| 1214 | return partial; | ||
| 1215 | } | ||
| 1216 | |||
| 1217 | function invokePartial(partial, context, options) { | ||
| 1218 | // Use the current closure context to save the partial-block if this partial | ||
| 1219 | var currentPartialBlock = options.data && options.data['partial-block']; | ||
| 1220 | options.partial = true; | ||
| 1221 | if (options.ids) { | ||
| 1222 | options.data.contextPath = options.ids[0] || options.data.contextPath; | ||
| 1223 | } | ||
| 1224 | |||
| 1225 | var partialBlock = undefined; | ||
| 1226 | if (options.fn && options.fn !== noop) { | ||
| 1227 | (function () { | ||
| 1228 | options.data = _base.createFrame(options.data); | ||
| 1229 | // Wrapper function to get access to currentPartialBlock from the closure | ||
| 1230 | var fn = options.fn; | ||
| 1231 | partialBlock = options.data['partial-block'] = function partialBlockWrapper(context) { | ||
| 1232 | var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; | ||
| 1233 | |||
| 1234 | // Restore the partial-block from the closure for the execution of the block | ||
| 1235 | // i.e. the part inside the block of the partial call. | ||
| 1236 | options.data = _base.createFrame(options.data); | ||
| 1237 | options.data['partial-block'] = currentPartialBlock; | ||
| 1238 | return fn(context, options); | ||
| 1239 | }; | ||
| 1240 | if (fn.partials) { | ||
| 1241 | options.partials = Utils.extend({}, options.partials, fn.partials); | ||
| 1242 | } | ||
| 1243 | })(); | ||
| 1244 | } | ||
| 1245 | |||
| 1246 | if (partial === undefined && partialBlock) { | ||
| 1247 | partial = partialBlock; | ||
| 1248 | } | ||
| 1249 | |||
| 1250 | if (partial === undefined) { | ||
| 1251 | throw new _exception2['default']('The partial ' + options.name + ' could not be found'); | ||
| 1252 | } else if (partial instanceof Function) { | ||
| 1253 | return partial(context, options); | ||
| 1254 | } | ||
| 1255 | } | ||
| 1256 | |||
| 1257 | function noop() { | ||
| 1258 | return ''; | ||
| 1259 | } | ||
| 1260 | |||
| 1261 | function initData(context, data) { | ||
| 1262 | if (!data || !('root' in data)) { | ||
| 1263 | data = data ? _base.createFrame(data) : {}; | ||
| 1264 | data.root = context; | ||
| 1265 | } | ||
| 1266 | return data; | ||
| 1267 | } | ||
| 1268 | |||
| 1269 | function executeDecorators(fn, prog, container, depths, data, blockParams) { | ||
| 1270 | if (fn.decorator) { | ||
| 1271 | var props = {}; | ||
| 1272 | prog = fn.decorator(prog, props, container, depths && depths[0], data, blockParams, depths); | ||
| 1273 | Utils.extend(prog, props); | ||
| 1274 | } | ||
| 1275 | return prog; | ||
| 1276 | } | ||
| 1277 | |||
| 1278 | /***/ }), | ||
| 1279 | /* 22 */ | ||
| 1280 | /***/ (function(module, exports, __webpack_require__) { | ||
| 1281 | |||
| 1282 | module.exports = { "default": __webpack_require__(23), __esModule: true }; | ||
| 1283 | |||
| 1284 | /***/ }), | ||
| 1285 | /* 23 */ | ||
| 1286 | /***/ (function(module, exports, __webpack_require__) { | ||
| 1287 | |||
| 1288 | __webpack_require__(24); | ||
| 1289 | module.exports = __webpack_require__(29).Object.seal; | ||
| 1290 | |||
| 1291 | /***/ }), | ||
| 1292 | /* 24 */ | ||
| 1293 | /***/ (function(module, exports, __webpack_require__) { | ||
| 1294 | |||
| 1295 | // 19.1.2.17 Object.seal(O) | ||
| 1296 | var isObject = __webpack_require__(25); | ||
| 1297 | |||
| 1298 | __webpack_require__(26)('seal', function($seal){ | ||
| 1299 | return function seal(it){ | ||
| 1300 | return $seal && isObject(it) ? $seal(it) : it; | ||
| 1301 | }; | ||
| 1302 | }); | ||
| 1303 | |||
| 1304 | /***/ }), | ||
| 1305 | /* 25 */ | ||
| 1306 | /***/ (function(module, exports) { | ||
| 1307 | |||
| 1308 | module.exports = function(it){ | ||
| 1309 | return typeof it === 'object' ? it !== null : typeof it === 'function'; | ||
| 1310 | }; | ||
| 1311 | |||
| 1312 | /***/ }), | ||
| 1313 | /* 26 */ | ||
| 1314 | /***/ (function(module, exports, __webpack_require__) { | ||
| 1315 | |||
| 1316 | // most Object methods by ES6 should accept primitives | ||
| 1317 | var $export = __webpack_require__(27) | ||
| 1318 | , core = __webpack_require__(29) | ||
| 1319 | , fails = __webpack_require__(32); | ||
| 1320 | module.exports = function(KEY, exec){ | ||
| 1321 | var fn = (core.Object || {})[KEY] || Object[KEY] | ||
| 1322 | , exp = {}; | ||
| 1323 | exp[KEY] = exec(fn); | ||
| 1324 | $export($export.S + $export.F * fails(function(){ fn(1); }), 'Object', exp); | ||
| 1325 | }; | ||
| 1326 | |||
| 1327 | /***/ }), | ||
| 1328 | /* 27 */ | ||
| 1329 | /***/ (function(module, exports, __webpack_require__) { | ||
| 1330 | |||
| 1331 | var global = __webpack_require__(28) | ||
| 1332 | , core = __webpack_require__(29) | ||
| 1333 | , ctx = __webpack_require__(30) | ||
| 1334 | , PROTOTYPE = 'prototype'; | ||
| 1335 | |||
| 1336 | var $export = function(type, name, source){ | ||
| 1337 | var IS_FORCED = type & $export.F | ||
| 1338 | , IS_GLOBAL = type & $export.G | ||
| 1339 | , IS_STATIC = type & $export.S | ||
| 1340 | , IS_PROTO = type & $export.P | ||
| 1341 | , IS_BIND = type & $export.B | ||
| 1342 | , IS_WRAP = type & $export.W | ||
| 1343 | , exports = IS_GLOBAL ? core : core[name] || (core[name] = {}) | ||
| 1344 | , target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE] | ||
| 1345 | , key, own, out; | ||
| 1346 | if(IS_GLOBAL)source = name; | ||
| 1347 | for(key in source){ | ||
| 1348 | // contains in native | ||
| 1349 | own = !IS_FORCED && target && key in target; | ||
| 1350 | if(own && key in exports)continue; | ||
| 1351 | // export native or passed | ||
| 1352 | out = own ? target[key] : source[key]; | ||
| 1353 | // prevent global pollution for namespaces | ||
| 1354 | exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key] | ||
| 1355 | // bind timers to global for call from export context | ||
| 1356 | : IS_BIND && own ? ctx(out, global) | ||
| 1357 | // wrap global constructors for prevent change them in library | ||
| 1358 | : IS_WRAP && target[key] == out ? (function(C){ | ||
| 1359 | var F = function(param){ | ||
| 1360 | return this instanceof C ? new C(param) : C(param); | ||
| 1361 | }; | ||
| 1362 | F[PROTOTYPE] = C[PROTOTYPE]; | ||
| 1363 | return F; | ||
| 1364 | // make static versions for prototype methods | ||
| 1365 | })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; | ||
| 1366 | if(IS_PROTO)(exports[PROTOTYPE] || (exports[PROTOTYPE] = {}))[key] = out; | ||
| 1367 | } | ||
| 1368 | }; | ||
| 1369 | // type bitmap | ||
| 1370 | $export.F = 1; // forced | ||
| 1371 | $export.G = 2; // global | ||
| 1372 | $export.S = 4; // static | ||
| 1373 | $export.P = 8; // proto | ||
| 1374 | $export.B = 16; // bind | ||
| 1375 | $export.W = 32; // wrap | ||
| 1376 | module.exports = $export; | ||
| 1377 | |||
| 1378 | /***/ }), | ||
| 1379 | /* 28 */ | ||
| 1380 | /***/ (function(module, exports) { | ||
| 1381 | |||
| 1382 | // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 | ||
| 1383 | var global = module.exports = typeof window != 'undefined' && window.Math == Math | ||
| 1384 | ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')(); | ||
| 1385 | if(typeof __g == 'number')__g = global; // eslint-disable-line no-undef | ||
| 1386 | |||
| 1387 | /***/ }), | ||
| 1388 | /* 29 */ | ||
| 1389 | /***/ (function(module, exports) { | ||
| 1390 | |||
| 1391 | var core = module.exports = {version: '1.2.6'}; | ||
| 1392 | if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef | ||
| 1393 | |||
| 1394 | /***/ }), | ||
| 1395 | /* 30 */ | ||
| 1396 | /***/ (function(module, exports, __webpack_require__) { | ||
| 1397 | |||
| 1398 | // optional / simple context binding | ||
| 1399 | var aFunction = __webpack_require__(31); | ||
| 1400 | module.exports = function(fn, that, length){ | ||
| 1401 | aFunction(fn); | ||
| 1402 | if(that === undefined)return fn; | ||
| 1403 | switch(length){ | ||
| 1404 | case 1: return function(a){ | ||
| 1405 | return fn.call(that, a); | ||
| 1406 | }; | ||
| 1407 | case 2: return function(a, b){ | ||
| 1408 | return fn.call(that, a, b); | ||
| 1409 | }; | ||
| 1410 | case 3: return function(a, b, c){ | ||
| 1411 | return fn.call(that, a, b, c); | ||
| 1412 | }; | ||
| 1413 | } | ||
| 1414 | return function(/* ...args */){ | ||
| 1415 | return fn.apply(that, arguments); | ||
| 1416 | }; | ||
| 1417 | }; | ||
| 1418 | |||
| 1419 | /***/ }), | ||
| 1420 | /* 31 */ | ||
| 1421 | /***/ (function(module, exports) { | ||
| 1422 | |||
| 1423 | module.exports = function(it){ | ||
| 1424 | if(typeof it != 'function')throw TypeError(it + ' is not a function!'); | ||
| 1425 | return it; | ||
| 1426 | }; | ||
| 1427 | |||
| 1428 | /***/ }), | ||
| 1429 | /* 32 */ | ||
| 1430 | /***/ (function(module, exports) { | ||
| 1431 | |||
| 1432 | module.exports = function(exec){ | ||
| 1433 | try { | ||
| 1434 | return !!exec(); | ||
| 1435 | } catch(e){ | ||
| 1436 | return true; | ||
| 1437 | } | ||
| 1438 | }; | ||
| 1439 | |||
| 1440 | /***/ }), | ||
| 1441 | /* 33 */ | ||
| 1442 | /***/ (function(module, exports) { | ||
| 1443 | |||
| 1444 | /* WEBPACK VAR INJECTION */(function(global) {/* global window */ | ||
| 1445 | 'use strict'; | ||
| 1446 | |||
| 1447 | exports.__esModule = true; | ||
| 1448 | |||
| 1449 | exports['default'] = function (Handlebars) { | ||
| 1450 | /* istanbul ignore next */ | ||
| 1451 | var root = typeof global !== 'undefined' ? global : window, | ||
| 1452 | $Handlebars = root.Handlebars; | ||
| 1453 | /* istanbul ignore next */ | ||
| 1454 | Handlebars.noConflict = function () { | ||
| 1455 | if (root.Handlebars === Handlebars) { | ||
| 1456 | root.Handlebars = $Handlebars; | ||
| 1457 | } | ||
| 1458 | return Handlebars; | ||
| 1459 | }; | ||
| 1460 | }; | ||
| 1461 | |||
| 1462 | module.exports = exports['default']; | ||
| 1463 | /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()))) | ||
| 1464 | |||
| 1465 | /***/ }) | ||
| 1466 | /******/ ]) | ||
| 1467 | }); | ||
| 1468 | ; | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| 1 | /**! | ||
| 2 | |||
| 3 | @license | ||
| 4 | handlebars v4.0.10 | ||
| 5 | |||
| 6 | Copyright (C) 2011-2016 by Yehuda Katz | ||
| 7 | |||
| 8 | Permission is hereby granted, free of charge, to any person obtaining a copy | ||
| 9 | of this software and associated documentation files (the "Software"), to deal | ||
| 10 | in the Software without restriction, including without limitation the rights | ||
| 11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
| 12 | copies of the Software, and to permit persons to whom the Software is | ||
| 13 | furnished to do so, subject to the following conditions: | ||
| 14 | |||
| 15 | The above copyright notice and this permission notice shall be included in | ||
| 16 | all copies or substantial portions of the Software. | ||
| 17 | |||
| 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
| 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
| 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
| 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
| 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
| 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||
| 24 | THE SOFTWARE. | ||
| 25 | |||
| 26 | */ | ||
| 27 | !function(a,b){"object"==typeof exports&&"object"==typeof module?module.exports=b():"function"==typeof define&&define.amd?define([],b):"object"==typeof exports?exports.Handlebars=b():a.Handlebars=b()}(this,function(){return function(a){function b(d){if(c[d])return c[d].exports;var e=c[d]={exports:{},id:d,loaded:!1};return a[d].call(e.exports,e,e.exports,b),e.loaded=!0,e.exports}var c={};return b.m=a,b.c=c,b.p="",b(0)}([function(a,b,c){"use strict";function d(){var a=new h.HandlebarsEnvironment;return n.extend(a,h),a.SafeString=j["default"],a.Exception=l["default"],a.Utils=n,a.escapeExpression=n.escapeExpression,a.VM=p,a.template=function(b){return p.template(b,a)},a}var e=c(1)["default"],f=c(2)["default"];b.__esModule=!0;var g=c(3),h=e(g),i=c(20),j=f(i),k=c(5),l=f(k),m=c(4),n=e(m),o=c(21),p=e(o),q=c(33),r=f(q),s=d();s.create=d,r["default"](s),s["default"]=s,b["default"]=s,a.exports=b["default"]},function(a,b){"use strict";b["default"]=function(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b},b.__esModule=!0},function(a,b){"use strict";b["default"]=function(a){return a&&a.__esModule?a:{"default":a}},b.__esModule=!0},function(a,b,c){"use strict";function d(a,b,c){this.helpers=a||{},this.partials=b||{},this.decorators=c||{},i.registerDefaultHelpers(this),j.registerDefaultDecorators(this)}var e=c(2)["default"];b.__esModule=!0,b.HandlebarsEnvironment=d;var f=c(4),g=c(5),h=e(g),i=c(9),j=c(17),k=c(19),l=e(k),m="4.0.10";b.VERSION=m;var n=7;b.COMPILER_REVISION=n;var o={1:"<= 1.0.rc.2",2:"== 1.0.0-rc.3",3:"== 1.0.0-rc.4",4:"== 1.x.x",5:"== 2.0.0-alpha.x",6:">= 2.0.0-beta.1",7:">= 4.0.0"};b.REVISION_CHANGES=o;var p="[object Object]";d.prototype={constructor:d,logger:l["default"],log:l["default"].log,registerHelper:function(a,b){if(f.toString.call(a)===p){if(b)throw new h["default"]("Arg not supported with multiple helpers");f.extend(this.helpers,a)}else this.helpers[a]=b},unregisterHelper:function(a){delete this.helpers[a]},registerPartial:function(a,b){if(f.toString.call(a)===p)f.extend(this.partials,a);else{if("undefined"==typeof b)throw new h["default"]('Attempting to register a partial called "'+a+'" as undefined');this.partials[a]=b}},unregisterPartial:function(a){delete this.partials[a]},registerDecorator:function(a,b){if(f.toString.call(a)===p){if(b)throw new h["default"]("Arg not supported with multiple decorators");f.extend(this.decorators,a)}else this.decorators[a]=b},unregisterDecorator:function(a){delete this.decorators[a]}};var q=l["default"].log;b.log=q,b.createFrame=f.createFrame,b.logger=l["default"]},function(a,b){"use strict";function c(a){return k[a]}function d(a){for(var b=1;b<arguments.length;b++)for(var c in arguments[b])Object.prototype.hasOwnProperty.call(arguments[b],c)&&(a[c]=arguments[b][c]);return a}function e(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return c;return-1}function f(a){if("string"!=typeof a){if(a&&a.toHTML)return a.toHTML();if(null==a)return"";if(!a)return a+"";a=""+a}return m.test(a)?a.replace(l,c):a}function g(a){return!a&&0!==a||!(!p(a)||0!==a.length)}function h(a){var b=d({},a);return b._parent=a,b}function i(a,b){return a.path=b,a}function j(a,b){return(a?a+".":"")+b}b.__esModule=!0,b.extend=d,b.indexOf=e,b.escapeExpression=f,b.isEmpty=g,b.createFrame=h,b.blockParams=i,b.appendContextPath=j;var k={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`","=":"="},l=/[&<>"'`=]/g,m=/[&<>"'`=]/,n=Object.prototype.toString;b.toString=n;var o=function(a){return"function"==typeof a};o(/x/)&&(b.isFunction=o=function(a){return"function"==typeof a&&"[object Function]"===n.call(a)}),b.isFunction=o;var p=Array.isArray||function(a){return!(!a||"object"!=typeof a)&&"[object Array]"===n.call(a)};b.isArray=p},function(a,b,c){"use strict";function d(a,b){var c=b&&b.loc,g=void 0,h=void 0;c&&(g=c.start.line,h=c.start.column,a+=" - "+g+":"+h);for(var i=Error.prototype.constructor.call(this,a),j=0;j<f.length;j++)this[f[j]]=i[f[j]];Error.captureStackTrace&&Error.captureStackTrace(this,d);try{c&&(this.lineNumber=g,e?Object.defineProperty(this,"column",{value:h,enumerable:!0}):this.column=h)}catch(k){}}var e=c(6)["default"];b.__esModule=!0;var f=["description","fileName","lineNumber","message","name","number","stack"];d.prototype=new Error,b["default"]=d,a.exports=b["default"]},function(a,b,c){a.exports={"default":c(7),__esModule:!0}},function(a,b,c){var d=c(8);a.exports=function(a,b,c){return d.setDesc(a,b,c)}},function(a,b){var c=Object;a.exports={create:c.create,getProto:c.getPrototypeOf,isEnum:{}.propertyIsEnumerable,getDesc:c.getOwnPropertyDescriptor,setDesc:c.defineProperty,setDescs:c.defineProperties,getKeys:c.keys,getNames:c.getOwnPropertyNames,getSymbols:c.getOwnPropertySymbols,each:[].forEach}},function(a,b,c){"use strict";function d(a){g["default"](a),i["default"](a),k["default"](a),m["default"](a),o["default"](a),q["default"](a),s["default"](a)}var e=c(2)["default"];b.__esModule=!0,b.registerDefaultHelpers=d;var f=c(10),g=e(f),h=c(11),i=e(h),j=c(12),k=e(j),l=c(13),m=e(l),n=c(14),o=e(n),p=c(15),q=e(p),r=c(16),s=e(r)},function(a,b,c){"use strict";b.__esModule=!0;var d=c(4);b["default"]=function(a){a.registerHelper("blockHelperMissing",function(b,c){var e=c.inverse,f=c.fn;if(b===!0)return f(this);if(b===!1||null==b)return e(this);if(d.isArray(b))return b.length>0?(c.ids&&(c.ids=[c.name]),a.helpers.each(b,c)):e(this);if(c.data&&c.ids){var g=d.createFrame(c.data);g.contextPath=d.appendContextPath(c.data.contextPath,c.name),c={data:g}}return f(b,c)})},a.exports=b["default"]},function(a,b,c){"use strict";var d=c(2)["default"];b.__esModule=!0;var e=c(4),f=c(5),g=d(f);b["default"]=function(a){a.registerHelper("each",function(a,b){function c(b,c,f){j&&(j.key=b,j.index=c,j.first=0===c,j.last=!!f,k&&(j.contextPath=k+b)),i+=d(a[b],{data:j,blockParams:e.blockParams([a[b],b],[k+b,null])})}if(!b)throw new g["default"]("Must pass iterator to #each");var d=b.fn,f=b.inverse,h=0,i="",j=void 0,k=void 0;if(b.data&&b.ids&&(k=e.appendContextPath(b.data.contextPath,b.ids[0])+"."),e.isFunction(a)&&(a=a.call(this)),b.data&&(j=e.createFrame(b.data)),a&&"object"==typeof a)if(e.isArray(a))for(var l=a.length;h<l;h++)h in a&&c(h,h,h===a.length-1);else{var m=void 0;for(var n in a)a.hasOwnProperty(n)&&(void 0!==m&&c(m,h-1),m=n,h++);void 0!==m&&c(m,h-1,!0)}return 0===h&&(i=f(this)),i})},a.exports=b["default"]},function(a,b,c){"use strict";var d=c(2)["default"];b.__esModule=!0;var e=c(5),f=d(e);b["default"]=function(a){a.registerHelper("helperMissing",function(){if(1!==arguments.length)throw new f["default"]('Missing helper: "'+arguments[arguments.length-1].name+'"')})},a.exports=b["default"]},function(a,b,c){"use strict";b.__esModule=!0;var d=c(4);b["default"]=function(a){a.registerHelper("if",function(a,b){return d.isFunction(a)&&(a=a.call(this)),!b.hash.includeZero&&!a||d.isEmpty(a)?b.inverse(this):b.fn(this)}),a.registerHelper("unless",function(b,c){return a.helpers["if"].call(this,b,{fn:c.inverse,inverse:c.fn,hash:c.hash})})},a.exports=b["default"]},function(a,b){"use strict";b.__esModule=!0,b["default"]=function(a){a.registerHelper("log",function(){for(var b=[void 0],c=arguments[arguments.length-1],d=0;d<arguments.length-1;d++)b.push(arguments[d]);var e=1;null!=c.hash.level?e=c.hash.level:c.data&&null!=c.data.level&&(e=c.data.level),b[0]=e,a.log.apply(a,b)})},a.exports=b["default"]},function(a,b){"use strict";b.__esModule=!0,b["default"]=function(a){a.registerHelper("lookup",function(a,b){return a&&a[b]})},a.exports=b["default"]},function(a,b,c){"use strict";b.__esModule=!0;var d=c(4);b["default"]=function(a){a.registerHelper("with",function(a,b){d.isFunction(a)&&(a=a.call(this));var c=b.fn;if(d.isEmpty(a))return b.inverse(this);var e=b.data;return b.data&&b.ids&&(e=d.createFrame(b.data),e.contextPath=d.appendContextPath(b.data.contextPath,b.ids[0])),c(a,{data:e,blockParams:d.blockParams([a],[e&&e.contextPath])})})},a.exports=b["default"]},function(a,b,c){"use strict";function d(a){g["default"](a)}var e=c(2)["default"];b.__esModule=!0,b.registerDefaultDecorators=d;var f=c(18),g=e(f)},function(a,b,c){"use strict";b.__esModule=!0;var d=c(4);b["default"]=function(a){a.registerDecorator("inline",function(a,b,c,e){var f=a;return b.partials||(b.partials={},f=function(e,f){var g=c.partials;c.partials=d.extend({},g,b.partials);var h=a(e,f);return c.partials=g,h}),b.partials[e.args[0]]=e.fn,f})},a.exports=b["default"]},function(a,b,c){"use strict";b.__esModule=!0;var d=c(4),e={methodMap:["debug","info","warn","error"],level:"info",lookupLevel:function(a){if("string"==typeof a){var b=d.indexOf(e.methodMap,a.toLowerCase());a=b>=0?b:parseInt(a,10)}return a},log:function(a){if(a=e.lookupLevel(a),"undefined"!=typeof console&&e.lookupLevel(e.level)<=a){var b=e.methodMap[a];console[b]||(b="log");for(var c=arguments.length,d=Array(c>1?c-1:0),f=1;f<c;f++)d[f-1]=arguments[f];console[b].apply(console,d)}}};b["default"]=e,a.exports=b["default"]},function(a,b){"use strict";function c(a){this.string=a}b.__esModule=!0,c.prototype.toString=c.prototype.toHTML=function(){return""+this.string},b["default"]=c,a.exports=b["default"]},function(a,b,c){"use strict";function d(a){var b=a&&a[0]||1,c=s.COMPILER_REVISION;if(b!==c){if(b<c){var d=s.REVISION_CHANGES[c],e=s.REVISION_CHANGES[b];throw new r["default"]("Template was precompiled with an older version of Handlebars than the current runtime. Please update your precompiler to a newer version ("+d+") or downgrade your runtime to an older version ("+e+").")}throw new r["default"]("Template was precompiled with a newer version of Handlebars than the current runtime. Please update your runtime to a newer version ("+a[1]+").")}}function e(a,b){function c(c,d,e){e.hash&&(d=p.extend({},d,e.hash),e.ids&&(e.ids[0]=!0)),c=b.VM.resolvePartial.call(this,c,d,e);var f=b.VM.invokePartial.call(this,c,d,e);if(null==f&&b.compile&&(e.partials[e.name]=b.compile(c,a.compilerOptions,b),f=e.partials[e.name](d,e)),null!=f){if(e.indent){for(var g=f.split("\n"),h=0,i=g.length;h<i&&(g[h]||h+1!==i);h++)g[h]=e.indent+g[h];f=g.join("\n")}return f}throw new r["default"]("The partial "+e.name+" could not be compiled when running in runtime-only mode")}function d(b){function c(b){return""+a.main(e,b,e.helpers,e.partials,g,i,h)}var f=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],g=f.data;d._setup(f),!f.partial&&a.useData&&(g=j(b,g));var h=void 0,i=a.useBlockParams?[]:void 0;return a.useDepths&&(h=f.depths?b!=f.depths[0]?[b].concat(f.depths):f.depths:[b]),(c=k(a.main,c,e,f.depths||[],g,i))(b,f)}if(!b)throw new r["default"]("No environment passed to template");if(!a||!a.main)throw new r["default"]("Unknown template object: "+typeof a);a.main.decorator=a.main_d,b.VM.checkRevision(a.compiler);var e={strict:function(a,b){if(!(b in a))throw new r["default"]('"'+b+'" not defined in '+a);return a[b]},lookup:function(a,b){for(var c=a.length,d=0;d<c;d++)if(a[d]&&null!=a[d][b])return a[d][b]},lambda:function(a,b){return"function"==typeof a?a.call(b):a},escapeExpression:p.escapeExpression,invokePartial:c,fn:function(b){var c=a[b];return c.decorator=a[b+"_d"],c},programs:[],program:function(a,b,c,d,e){var g=this.programs[a],h=this.fn(a);return b||e||d||c?g=f(this,a,h,b,c,d,e):g||(g=this.programs[a]=f(this,a,h)),g},data:function(a,b){for(;a&&b--;)a=a._parent;return a},merge:function(a,b){var c=a||b;return a&&b&&a!==b&&(c=p.extend({},b,a)),c},nullContext:l({}),noop:b.VM.noop,compilerInfo:a.compiler};return d.isTop=!0,d._setup=function(c){c.partial?(e.helpers=c.helpers,e.partials=c.partials,e.decorators=c.decorators):(e.helpers=e.merge(c.helpers,b.helpers),a.usePartial&&(e.partials=e.merge(c.partials,b.partials)),(a.usePartial||a.useDecorators)&&(e.decorators=e.merge(c.decorators,b.decorators)))},d._child=function(b,c,d,g){if(a.useBlockParams&&!d)throw new r["default"]("must pass block params");if(a.useDepths&&!g)throw new r["default"]("must pass parent depths");return f(e,b,a[b],c,0,d,g)},d}function f(a,b,c,d,e,f,g){function h(b){var e=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],h=g;return!g||b==g[0]||b===a.nullContext&&null===g[0]||(h=[b].concat(g)),c(a,b,a.helpers,a.partials,e.data||d,f&&[e.blockParams].concat(f),h)}return h=k(c,h,a,g,d,f),h.program=b,h.depth=g?g.length:0,h.blockParams=e||0,h}function g(a,b,c){return a?a.call||c.name||(c.name=a,a=c.partials[a]):a="@partial-block"===c.name?c.data["partial-block"]:c.partials[c.name],a}function h(a,b,c){var d=c.data&&c.data["partial-block"];c.partial=!0,c.ids&&(c.data.contextPath=c.ids[0]||c.data.contextPath);var e=void 0;if(c.fn&&c.fn!==i&&!function(){c.data=s.createFrame(c.data);var a=c.fn;e=c.data["partial-block"]=function(b){var c=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];return c.data=s.createFrame(c.data),c.data["partial-block"]=d,a(b,c)},a.partials&&(c.partials=p.extend({},c.partials,a.partials))}(),void 0===a&&e&&(a=e),void 0===a)throw new r["default"]("The partial "+c.name+" could not be found");if(a instanceof Function)return a(b,c)}function i(){return""}function j(a,b){return b&&"root"in b||(b=b?s.createFrame(b):{},b.root=a),b}function k(a,b,c,d,e,f){if(a.decorator){var g={};b=a.decorator(b,g,c,d&&d[0],e,f,d),p.extend(b,g)}return b}var l=c(22)["default"],m=c(1)["default"],n=c(2)["default"];b.__esModule=!0,b.checkRevision=d,b.template=e,b.wrapProgram=f,b.resolvePartial=g,b.invokePartial=h,b.noop=i;var o=c(4),p=m(o),q=c(5),r=n(q),s=c(3)},function(a,b,c){a.exports={"default":c(23),__esModule:!0}},function(a,b,c){c(24),a.exports=c(29).Object.seal},function(a,b,c){var d=c(25);c(26)("seal",function(a){return function(b){return a&&d(b)?a(b):b}})},function(a,b){a.exports=function(a){return"object"==typeof a?null!==a:"function"==typeof a}},function(a,b,c){var d=c(27),e=c(29),f=c(32);a.exports=function(a,b){var c=(e.Object||{})[a]||Object[a],g={};g[a]=b(c),d(d.S+d.F*f(function(){c(1)}),"Object",g)}},function(a,b,c){var d=c(28),e=c(29),f=c(30),g="prototype",h=function(a,b,c){var i,j,k,l=a&h.F,m=a&h.G,n=a&h.S,o=a&h.P,p=a&h.B,q=a&h.W,r=m?e:e[b]||(e[b]={}),s=m?d:n?d[b]:(d[b]||{})[g];m&&(c=b);for(i in c)j=!l&&s&&i in s,j&&i in r||(k=j?s[i]:c[i],r[i]=m&&"function"!=typeof s[i]?c[i]:p&&j?f(k,d):q&&s[i]==k?function(a){var b=function(b){return this instanceof a?new a(b):a(b)};return b[g]=a[g],b}(k):o&&"function"==typeof k?f(Function.call,k):k,o&&((r[g]||(r[g]={}))[i]=k))};h.F=1,h.G=2,h.S=4,h.P=8,h.B=16,h.W=32,a.exports=h},function(a,b){var c=a.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=c)},function(a,b){var c=a.exports={version:"1.2.6"};"number"==typeof __e&&(__e=c)},function(a,b,c){var d=c(31);a.exports=function(a,b,c){if(d(a),void 0===b)return a;switch(c){case 1:return function(c){return a.call(b,c)};case 2:return function(c,d){return a.call(b,c,d)};case 3:return function(c,d,e){return a.call(b,c,d,e)}}return function(){return a.apply(b,arguments)}}},function(a,b){a.exports=function(a){if("function"!=typeof a)throw TypeError(a+" is not a function!");return a}},function(a,b){a.exports=function(a){try{return!!a()}catch(b){return!0}}},function(a,b){(function(c){"use strict";b.__esModule=!0,b["default"]=function(a){var b="undefined"!=typeof c?c:window,d=b.Handlebars;a.noConflict=function(){return b.Handlebars===a&&(b.Handlebars=d),a}},a.exports=b["default"]}).call(b,function(){return this}())}])}); | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
staticLib/iscroll/DEVONtech_storage
deleted
100644 → 0
No preview for this file type
| 1 | /*! iScroll v5.2.0 ~ (c) 2008-2016 Matteo Spinelli ~ http://cubiq.org/license */ | ||
| 2 | (function (window, document, Math) { | ||
| 3 | var rAF = window.requestAnimationFrame || | ||
| 4 | window.webkitRequestAnimationFrame || | ||
| 5 | window.mozRequestAnimationFrame || | ||
| 6 | window.oRequestAnimationFrame || | ||
| 7 | window.msRequestAnimationFrame || | ||
| 8 | function (callback) { window.setTimeout(callback, 1000 / 60); }; | ||
| 9 | |||
| 10 | var utils = (function () { | ||
| 11 | var me = {}; | ||
| 12 | |||
| 13 | var _elementStyle = document.createElement('div').style; | ||
| 14 | var _vendor = (function () { | ||
| 15 | var vendors = ['t', 'webkitT', 'MozT', 'msT', 'OT'], | ||
| 16 | transform, | ||
| 17 | i = 0, | ||
| 18 | l = vendors.length; | ||
| 19 | |||
| 20 | for ( ; i < l; i++ ) { | ||
| 21 | transform = vendors[i] + 'ransform'; | ||
| 22 | if ( transform in _elementStyle ) return vendors[i].substr(0, vendors[i].length-1); | ||
| 23 | } | ||
| 24 | |||
| 25 | return false; | ||
| 26 | })(); | ||
| 27 | |||
| 28 | function _prefixStyle (style) { | ||
| 29 | if ( _vendor === false ) return false; | ||
| 30 | if ( _vendor === '' ) return style; | ||
| 31 | return _vendor + style.charAt(0).toUpperCase() + style.substr(1); | ||
| 32 | } | ||
| 33 | |||
| 34 | me.getTime = Date.now || function getTime () { return new Date().getTime(); }; | ||
| 35 | |||
| 36 | me.extend = function (target, obj) { | ||
| 37 | for ( var i in obj ) { | ||
| 38 | target[i] = obj[i]; | ||
| 39 | } | ||
| 40 | }; | ||
| 41 | |||
| 42 | me.addEvent = function (el, type, fn, capture) { | ||
| 43 | el.addEventListener(type, fn, !!capture); | ||
| 44 | }; | ||
| 45 | |||
| 46 | me.removeEvent = function (el, type, fn, capture) { | ||
| 47 | el.removeEventListener(type, fn, !!capture); | ||
| 48 | }; | ||
| 49 | |||
| 50 | me.prefixPointerEvent = function (pointerEvent) { | ||
| 51 | return window.MSPointerEvent ? | ||
| 52 | 'MSPointer' + pointerEvent.charAt(7).toUpperCase() + pointerEvent.substr(8): | ||
| 53 | pointerEvent; | ||
| 54 | }; | ||
| 55 | |||
| 56 | me.momentum = function (current, start, time, lowerMargin, wrapperSize, deceleration) { | ||
| 57 | var distance = current - start, | ||
| 58 | speed = Math.abs(distance) / time, | ||
| 59 | destination, | ||
| 60 | duration; | ||
| 61 | |||
| 62 | deceleration = deceleration === undefined ? 0.0006 : deceleration; | ||
| 63 | |||
| 64 | destination = current + ( speed * speed ) / ( 2 * deceleration ) * ( distance < 0 ? -1 : 1 ); | ||
| 65 | duration = speed / deceleration; | ||
| 66 | |||
| 67 | if ( destination < lowerMargin ) { | ||
| 68 | destination = wrapperSize ? lowerMargin - ( wrapperSize / 2.5 * ( speed / 8 ) ) : lowerMargin; | ||
| 69 | distance = Math.abs(destination - current); | ||
| 70 | duration = distance / speed; | ||
| 71 | } else if ( destination > 0 ) { | ||
| 72 | destination = wrapperSize ? wrapperSize / 2.5 * ( speed / 8 ) : 0; | ||
| 73 | distance = Math.abs(current) + destination; | ||
| 74 | duration = distance / speed; | ||
| 75 | } | ||
| 76 | |||
| 77 | return { | ||
| 78 | destination: Math.round(destination), | ||
| 79 | duration: duration | ||
| 80 | }; | ||
| 81 | }; | ||
| 82 | |||
| 83 | var _transform = _prefixStyle('transform'); | ||
| 84 | |||
| 85 | me.extend(me, { | ||
| 86 | hasTransform: _transform !== false, | ||
| 87 | hasPerspective: _prefixStyle('perspective') in _elementStyle, | ||
| 88 | hasTouch: 'ontouchstart' in window, | ||
| 89 | hasPointer: !!(window.PointerEvent || window.MSPointerEvent), // IE10 is prefixed | ||
| 90 | hasTransition: _prefixStyle('transition') in _elementStyle | ||
| 91 | }); | ||
| 92 | |||
| 93 | /* | ||
| 94 | This should find all Android browsers lower than build 535.19 (both stock browser and webview) | ||
| 95 | - galaxy S2 is ok | ||
| 96 | - 2.3.6 : `AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1` | ||
| 97 | - 4.0.4 : `AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30` | ||
| 98 | - galaxy S3 is badAndroid (stock brower, webview) | ||
| 99 | `AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30` | ||
| 100 | - galaxy S4 is badAndroid (stock brower, webview) | ||
| 101 | `AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30` | ||
| 102 | - galaxy S5 is OK | ||
| 103 | `AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36 (Chrome/)` | ||
| 104 | - galaxy S6 is OK | ||
| 105 | `AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36 (Chrome/)` | ||
| 106 | */ | ||
| 107 | me.isBadAndroid = (function() { | ||
| 108 | var appVersion = window.navigator.appVersion; | ||
| 109 | // Android browser is not a chrome browser. | ||
| 110 | if (/Android/.test(appVersion) && !(/Chrome\/\d/.test(appVersion))) { | ||
| 111 | var safariVersion = appVersion.match(/Safari\/(\d+.\d)/); | ||
| 112 | if(safariVersion && typeof safariVersion === "object" && safariVersion.length >= 2) { | ||
| 113 | return parseFloat(safariVersion[1]) < 535.19; | ||
| 114 | } else { | ||
| 115 | return true; | ||
| 116 | } | ||
| 117 | } else { | ||
| 118 | return false; | ||
| 119 | } | ||
| 120 | })(); | ||
| 121 | |||
| 122 | me.extend(me.style = {}, { | ||
| 123 | transform: _transform, | ||
| 124 | transitionTimingFunction: _prefixStyle('transitionTimingFunction'), | ||
| 125 | transitionDuration: _prefixStyle('transitionDuration'), | ||
| 126 | transitionDelay: _prefixStyle('transitionDelay'), | ||
| 127 | transformOrigin: _prefixStyle('transformOrigin') | ||
| 128 | }); | ||
| 129 | |||
| 130 | me.hasClass = function (e, c) { | ||
| 131 | var re = new RegExp("(^|\\s)" + c + "(\\s|$)"); | ||
| 132 | return re.test(e.className); | ||
| 133 | }; | ||
| 134 | |||
| 135 | me.addClass = function (e, c) { | ||
| 136 | if ( me.hasClass(e, c) ) { | ||
| 137 | return; | ||
| 138 | } | ||
| 139 | |||
| 140 | var newclass = e.className.split(' '); | ||
| 141 | newclass.push(c); | ||
| 142 | e.className = newclass.join(' '); | ||
| 143 | }; | ||
| 144 | |||
| 145 | me.removeClass = function (e, c) { | ||
| 146 | if ( !me.hasClass(e, c) ) { | ||
| 147 | return; | ||
| 148 | } | ||
| 149 | |||
| 150 | var re = new RegExp("(^|\\s)" + c + "(\\s|$)", 'g'); | ||
| 151 | e.className = e.className.replace(re, ' '); | ||
| 152 | }; | ||
| 153 | |||
| 154 | me.offset = function (el) { | ||
| 155 | var left = -el.offsetLeft, | ||
| 156 | top = -el.offsetTop; | ||
| 157 | |||
| 158 | // jshint -W084 | ||
| 159 | while (el = el.offsetParent) { | ||
| 160 | left -= el.offsetLeft; | ||
| 161 | top -= el.offsetTop; | ||
| 162 | } | ||
| 163 | // jshint +W084 | ||
| 164 | |||
| 165 | return { | ||
| 166 | left: left, | ||
| 167 | top: top | ||
| 168 | }; | ||
| 169 | }; | ||
| 170 | |||
| 171 | me.preventDefaultException = function (el, exceptions) { | ||
| 172 | for ( var i in exceptions ) { | ||
| 173 | if ( exceptions[i].test(el[i]) ) { | ||
| 174 | return true; | ||
| 175 | } | ||
| 176 | } | ||
| 177 | |||
| 178 | return false; | ||
| 179 | }; | ||
| 180 | |||
| 181 | me.extend(me.eventType = {}, { | ||
| 182 | touchstart: 1, | ||
| 183 | touchmove: 1, | ||
| 184 | touchend: 1, | ||
| 185 | |||
| 186 | mousedown: 2, | ||
| 187 | mousemove: 2, | ||
| 188 | mouseup: 2, | ||
| 189 | |||
| 190 | pointerdown: 3, | ||
| 191 | pointermove: 3, | ||
| 192 | pointerup: 3, | ||
| 193 | |||
| 194 | MSPointerDown: 3, | ||
| 195 | MSPointerMove: 3, | ||
| 196 | MSPointerUp: 3 | ||
| 197 | }); | ||
| 198 | |||
| 199 | me.extend(me.ease = {}, { | ||
| 200 | quadratic: { | ||
| 201 | style: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)', | ||
| 202 | fn: function (k) { | ||
| 203 | return k * ( 2 - k ); | ||
| 204 | } | ||
| 205 | }, | ||
| 206 | circular: { | ||
| 207 | style: 'cubic-bezier(0.1, 0.57, 0.1, 1)', // Not properly "circular" but this looks better, it should be (0.075, 0.82, 0.165, 1) | ||
| 208 | fn: function (k) { | ||
| 209 | return Math.sqrt( 1 - ( --k * k ) ); | ||
| 210 | } | ||
| 211 | }, | ||
| 212 | back: { | ||
| 213 | style: 'cubic-bezier(0.175, 0.885, 0.32, 1.275)', | ||
| 214 | fn: function (k) { | ||
| 215 | var b = 4; | ||
| 216 | return ( k = k - 1 ) * k * ( ( b + 1 ) * k + b ) + 1; | ||
| 217 | } | ||
| 218 | }, | ||
| 219 | bounce: { | ||
| 220 | style: '', | ||
| 221 | fn: function (k) { | ||
| 222 | if ( ( k /= 1 ) < ( 1 / 2.75 ) ) { | ||
| 223 | return 7.5625 * k * k; | ||
| 224 | } else if ( k < ( 2 / 2.75 ) ) { | ||
| 225 | return 7.5625 * ( k -= ( 1.5 / 2.75 ) ) * k + 0.75; | ||
| 226 | } else if ( k < ( 2.5 / 2.75 ) ) { | ||
| 227 | return 7.5625 * ( k -= ( 2.25 / 2.75 ) ) * k + 0.9375; | ||
| 228 | } else { | ||
| 229 | return 7.5625 * ( k -= ( 2.625 / 2.75 ) ) * k + 0.984375; | ||
| 230 | } | ||
| 231 | } | ||
| 232 | }, | ||
| 233 | elastic: { | ||
| 234 | style: '', | ||
| 235 | fn: function (k) { | ||
| 236 | var f = 0.22, | ||
| 237 | e = 0.4; | ||
| 238 | |||
| 239 | if ( k === 0 ) { return 0; } | ||
| 240 | if ( k == 1 ) { return 1; } | ||
| 241 | |||
| 242 | return ( e * Math.pow( 2, - 10 * k ) * Math.sin( ( k - f / 4 ) * ( 2 * Math.PI ) / f ) + 1 ); | ||
| 243 | } | ||
| 244 | } | ||
| 245 | }); | ||
| 246 | |||
| 247 | me.tap = function (e, eventName) { | ||
| 248 | var ev = document.createEvent('Event'); | ||
| 249 | ev.initEvent(eventName, true, true); | ||
| 250 | ev.pageX = e.pageX; | ||
| 251 | ev.pageY = e.pageY; | ||
| 252 | e.target.dispatchEvent(ev); | ||
| 253 | }; | ||
| 254 | |||
| 255 | me.click = function (e) { | ||
| 256 | var target = e.target, | ||
| 257 | ev; | ||
| 258 | |||
| 259 | if ( !(/(SELECT|INPUT|TEXTAREA)/i).test(target.tagName) ) { | ||
| 260 | ev = document.createEvent('MouseEvents'); | ||
| 261 | ev.initMouseEvent('click', true, true, e.view, 1, | ||
| 262 | target.screenX, target.screenY, target.clientX, target.clientY, | ||
| 263 | e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, | ||
| 264 | 0, null); | ||
| 265 | |||
| 266 | ev._constructed = true; | ||
| 267 | target.dispatchEvent(ev); | ||
| 268 | } | ||
| 269 | }; | ||
| 270 | |||
| 271 | return me; | ||
| 272 | })(); | ||
| 273 | function IScroll (el, options) { | ||
| 274 | this.wrapper = typeof el == 'string' ? document.querySelector(el) : el; | ||
| 275 | this.scroller = this.wrapper.children[0]; | ||
| 276 | this.scrollerStyle = this.scroller.style; // cache style for better performance | ||
| 277 | |||
| 278 | this.options = { | ||
| 279 | |||
| 280 | mouseWheelSpeed: 20, | ||
| 281 | |||
| 282 | snapThreshold: 0.334, | ||
| 283 | |||
| 284 | infiniteUseTransform: true, | ||
| 285 | deceleration: 0.004, | ||
| 286 | |||
| 287 | // INSERT POINT: OPTIONS | ||
| 288 | disablePointer : !utils.hasPointer, | ||
| 289 | disableTouch : utils.hasPointer || !utils.hasTouch, | ||
| 290 | disableMouse : utils.hasPointer || utils.hasTouch, | ||
| 291 | startX: 0, | ||
| 292 | startY: 0, | ||
| 293 | scrollY: true, | ||
| 294 | directionLockThreshold: 5, | ||
| 295 | momentum: true, | ||
| 296 | |||
| 297 | bounce: true, | ||
| 298 | bounceTime: 600, | ||
| 299 | bounceEasing: '', | ||
| 300 | |||
| 301 | preventDefault: true, | ||
| 302 | preventDefaultException: { tagName: /^(INPUT|TEXTAREA|BUTTON|SELECT)$/ }, | ||
| 303 | |||
| 304 | HWCompositing: true, | ||
| 305 | useTransition: true, | ||
| 306 | useTransform: true, | ||
| 307 | bindToWrapper: typeof window.onmousedown === "undefined" | ||
| 308 | }; | ||
| 309 | |||
| 310 | for ( var i in options ) { | ||
| 311 | this.options[i] = options[i]; | ||
| 312 | } | ||
| 313 | |||
| 314 | // Normalize options | ||
| 315 | this.translateZ = this.options.HWCompositing && utils.hasPerspective ? ' translateZ(0)' : ''; | ||
| 316 | |||
| 317 | this.options.useTransition = utils.hasTransition && this.options.useTransition; | ||
| 318 | this.options.useTransform = utils.hasTransform && this.options.useTransform; | ||
| 319 | |||
| 320 | this.options.eventPassthrough = this.options.eventPassthrough === true ? 'vertical' : this.options.eventPassthrough; | ||
| 321 | this.options.preventDefault = !this.options.eventPassthrough && this.options.preventDefault; | ||
| 322 | |||
| 323 | // If you want eventPassthrough I have to lock one of the axes | ||
| 324 | this.options.scrollY = this.options.eventPassthrough == 'vertical' ? false : this.options.scrollY; | ||
| 325 | this.options.scrollX = this.options.eventPassthrough == 'horizontal' ? false : this.options.scrollX; | ||
| 326 | |||
| 327 | // With eventPassthrough we also need lockDirection mechanism | ||
| 328 | this.options.freeScroll = this.options.freeScroll && !this.options.eventPassthrough; | ||
| 329 | this.options.directionLockThreshold = this.options.eventPassthrough ? 0 : this.options.directionLockThreshold; | ||
| 330 | |||
| 331 | this.options.bounceEasing = typeof this.options.bounceEasing == 'string' ? utils.ease[this.options.bounceEasing] || utils.ease.circular : this.options.bounceEasing; | ||
| 332 | |||
| 333 | this.options.resizePolling = this.options.resizePolling === undefined ? 60 : this.options.resizePolling; | ||
| 334 | |||
| 335 | if ( this.options.tap === true ) { | ||
| 336 | this.options.tap = 'tap'; | ||
| 337 | } | ||
| 338 | |||
| 339 | this.options.invertWheelDirection = this.options.invertWheelDirection ? -1 : 1; | ||
| 340 | |||
| 341 | if ( this.options.infiniteElements ) { | ||
| 342 | this.options.probeType = 3; | ||
| 343 | } | ||
| 344 | this.options.infiniteUseTransform = this.options.infiniteUseTransform && this.options.useTransform; | ||
| 345 | |||
| 346 | if ( this.options.probeType == 3 ) { | ||
| 347 | this.options.useTransition = false; } | ||
| 348 | |||
| 349 | // INSERT POINT: NORMALIZATION | ||
| 350 | |||
| 351 | // Some defaults | ||
| 352 | this.x = 0; | ||
| 353 | this.y = 0; | ||
| 354 | this.directionX = 0; | ||
| 355 | this.directionY = 0; | ||
| 356 | this._events = {}; | ||
| 357 | |||
| 358 | // INSERT POINT: DEFAULTS | ||
| 359 | |||
| 360 | this._init(); | ||
| 361 | this.refresh(); | ||
| 362 | |||
| 363 | this.scrollTo(this.options.startX, this.options.startY); | ||
| 364 | this.enable(); | ||
| 365 | } | ||
| 366 | |||
| 367 | IScroll.prototype = { | ||
| 368 | version: '5.2.0', | ||
| 369 | |||
| 370 | _init: function () { | ||
| 371 | this._initEvents(); | ||
| 372 | |||
| 373 | if ( this.options.mouseWheel ) { | ||
| 374 | this._initWheel(); | ||
| 375 | } | ||
| 376 | |||
| 377 | if ( this.options.snap ) { | ||
| 378 | this._initSnap(); | ||
| 379 | } | ||
| 380 | |||
| 381 | if ( this.options.keyBindings ) { | ||
| 382 | this._initKeys(); | ||
| 383 | } | ||
| 384 | |||
| 385 | if ( this.options.infiniteElements ) { | ||
| 386 | this._initInfinite(); | ||
| 387 | } | ||
| 388 | |||
| 389 | // INSERT POINT: _init | ||
| 390 | |||
| 391 | }, | ||
| 392 | |||
| 393 | destroy: function () { | ||
| 394 | this._initEvents(true); | ||
| 395 | clearTimeout(this.resizeTimeout); | ||
| 396 | this.resizeTimeout = null; | ||
| 397 | this._execEvent('destroy'); | ||
| 398 | }, | ||
| 399 | |||
| 400 | _transitionEnd: function (e) { | ||
| 401 | if ( e.target != this.scroller || !this.isInTransition ) { | ||
| 402 | return; | ||
| 403 | } | ||
| 404 | |||
| 405 | this._transitionTime(); | ||
| 406 | if ( !this.resetPosition(this.options.bounceTime) ) { | ||
| 407 | this.isInTransition = false; | ||
| 408 | this._execEvent('scrollEnd'); | ||
| 409 | } | ||
| 410 | }, | ||
| 411 | |||
| 412 | _start: function (e) { | ||
| 413 | // React to left mouse button only | ||
| 414 | if ( utils.eventType[e.type] != 1 ) { | ||
| 415 | // for button property | ||
| 416 | // http://unixpapa.com/js/mouse.html | ||
| 417 | var button; | ||
| 418 | if (!e.which) { | ||
| 419 | /* IE case */ | ||
| 420 | button = (e.button < 2) ? 0 : | ||
| 421 | ((e.button == 4) ? 1 : 2); | ||
| 422 | } else { | ||
| 423 | /* All others */ | ||
| 424 | button = e.button; | ||
| 425 | } | ||
| 426 | if ( button !== 0 ) { | ||
| 427 | return; | ||
| 428 | } | ||
| 429 | } | ||
| 430 | |||
| 431 | if ( !this.enabled || (this.initiated && utils.eventType[e.type] !== this.initiated) ) { | ||
| 432 | return; | ||
| 433 | } | ||
| 434 | |||
| 435 | if ( this.options.preventDefault && !utils.isBadAndroid && !utils.preventDefaultException(e.target, this.options.preventDefaultException) ) { | ||
| 436 | e.preventDefault(); | ||
| 437 | } | ||
| 438 | |||
| 439 | var point = e.touches ? e.touches[0] : e, | ||
| 440 | pos; | ||
| 441 | |||
| 442 | this.initiated = utils.eventType[e.type]; | ||
| 443 | this.moved = false; | ||
| 444 | this.distX = 0; | ||
| 445 | this.distY = 0; | ||
| 446 | this.directionX = 0; | ||
| 447 | this.directionY = 0; | ||
| 448 | this.directionLocked = 0; | ||
| 449 | |||
| 450 | this.startTime = utils.getTime(); | ||
| 451 | |||
| 452 | if ( this.options.useTransition && this.isInTransition ) { | ||
| 453 | this._transitionTime(); | ||
| 454 | this.isInTransition = false; | ||
| 455 | pos = this.getComputedPosition(); | ||
| 456 | this._translate(Math.round(pos.x), Math.round(pos.y)); | ||
| 457 | this._execEvent('scrollEnd'); | ||
| 458 | } else if ( !this.options.useTransition && this.isAnimating ) { | ||
| 459 | this.isAnimating = false; | ||
| 460 | this._execEvent('scrollEnd'); | ||
| 461 | } | ||
| 462 | |||
| 463 | this.startX = this.x; | ||
| 464 | this.startY = this.y; | ||
| 465 | this.absStartX = this.x; | ||
| 466 | this.absStartY = this.y; | ||
| 467 | this.pointX = point.pageX; | ||
| 468 | this.pointY = point.pageY; | ||
| 469 | |||
| 470 | this._execEvent('beforeScrollStart'); | ||
| 471 | }, | ||
| 472 | |||
| 473 | _move: function (e) { | ||
| 474 | if ( !this.enabled || utils.eventType[e.type] !== this.initiated ) { | ||
| 475 | return; | ||
| 476 | } | ||
| 477 | |||
| 478 | if ( this.options.preventDefault ) { // increases performance on Android? TODO: check! | ||
| 479 | e.preventDefault(); | ||
| 480 | } | ||
| 481 | |||
| 482 | var point = e.touches ? e.touches[0] : e, | ||
| 483 | deltaX = point.pageX - this.pointX, | ||
| 484 | deltaY = point.pageY - this.pointY, | ||
| 485 | timestamp = utils.getTime(), | ||
| 486 | newX, newY, | ||
| 487 | absDistX, absDistY; | ||
| 488 | |||
| 489 | this.pointX = point.pageX; | ||
| 490 | this.pointY = point.pageY; | ||
| 491 | |||
| 492 | this.distX += deltaX; | ||
| 493 | this.distY += deltaY; | ||
| 494 | absDistX = Math.abs(this.distX); | ||
| 495 | absDistY = Math.abs(this.distY); | ||
| 496 | |||
| 497 | // We need to move at least 10 pixels for the scrolling to initiate | ||
| 498 | if ( timestamp - this.endTime > 300 && (absDistX < 10 && absDistY < 10) ) { | ||
| 499 | return; | ||
| 500 | } | ||
| 501 | |||
| 502 | // If you are scrolling in one direction lock the other | ||
| 503 | if ( !this.directionLocked && !this.options.freeScroll ) { | ||
| 504 | if ( absDistX > absDistY + this.options.directionLockThreshold ) { | ||
| 505 | this.directionLocked = 'h'; // lock horizontally | ||
| 506 | } else if ( absDistY >= absDistX + this.options.directionLockThreshold ) { | ||
| 507 | this.directionLocked = 'v'; // lock vertically | ||
| 508 | } else { | ||
| 509 | this.directionLocked = 'n'; // no lock | ||
| 510 | } | ||
| 511 | } | ||
| 512 | |||
| 513 | if ( this.directionLocked == 'h' ) { | ||
| 514 | if ( this.options.eventPassthrough == 'vertical' ) { | ||
| 515 | e.preventDefault(); | ||
| 516 | } else if ( this.options.eventPassthrough == 'horizontal' ) { | ||
| 517 | this.initiated = false; | ||
| 518 | return; | ||
| 519 | } | ||
| 520 | |||
| 521 | deltaY = 0; | ||
| 522 | } else if ( this.directionLocked == 'v' ) { | ||
| 523 | if ( this.options.eventPassthrough == 'horizontal' ) { | ||
| 524 | e.preventDefault(); | ||
| 525 | } else if ( this.options.eventPassthrough == 'vertical' ) { | ||
| 526 | this.initiated = false; | ||
| 527 | return; | ||
| 528 | } | ||
| 529 | |||
| 530 | deltaX = 0; | ||
| 531 | } | ||
| 532 | |||
| 533 | deltaX = this.hasHorizontalScroll ? deltaX : 0; | ||
| 534 | deltaY = this.hasVerticalScroll ? deltaY : 0; | ||
| 535 | |||
| 536 | newX = this.x + deltaX; | ||
| 537 | newY = this.y + deltaY; | ||
| 538 | |||
| 539 | // Slow down if outside of the boundaries | ||
| 540 | if ( newX > 0 || newX < this.maxScrollX ) { | ||
| 541 | newX = this.options.bounce ? this.x + deltaX / 3 : newX > 0 ? 0 : this.maxScrollX; | ||
| 542 | } | ||
| 543 | if ( newY > 0 || newY < this.maxScrollY ) { | ||
| 544 | newY = this.options.bounce ? this.y + deltaY / 3 : newY > 0 ? 0 : this.maxScrollY; | ||
| 545 | } | ||
| 546 | |||
| 547 | this.directionX = deltaX > 0 ? -1 : deltaX < 0 ? 1 : 0; | ||
| 548 | this.directionY = deltaY > 0 ? -1 : deltaY < 0 ? 1 : 0; | ||
| 549 | |||
| 550 | if ( !this.moved ) { | ||
| 551 | this._execEvent('scrollStart'); | ||
| 552 | } | ||
| 553 | |||
| 554 | this.moved = true; | ||
| 555 | |||
| 556 | this._translate(newX, newY); | ||
| 557 | |||
| 558 | /* REPLACE START: _move */ | ||
| 559 | if ( timestamp - this.startTime > 300 ) { | ||
| 560 | this.startTime = timestamp; | ||
| 561 | this.startX = this.x; | ||
| 562 | this.startY = this.y; | ||
| 563 | |||
| 564 | if ( this.options.probeType == 1 ) { | ||
| 565 | this._execEvent('scroll'); | ||
| 566 | } | ||
| 567 | } | ||
| 568 | |||
| 569 | if ( this.options.probeType > 1 ) { | ||
| 570 | this._execEvent('scroll'); | ||
| 571 | } | ||
| 572 | /* REPLACE END: _move */ | ||
| 573 | |||
| 574 | }, | ||
| 575 | |||
| 576 | _end: function (e) { | ||
| 577 | if ( !this.enabled || utils.eventType[e.type] !== this.initiated ) { | ||
| 578 | return; | ||
| 579 | } | ||
| 580 | |||
| 581 | if ( this.options.preventDefault && !utils.preventDefaultException(e.target, this.options.preventDefaultException) ) { | ||
| 582 | e.preventDefault(); | ||
| 583 | } | ||
| 584 | |||
| 585 | var point = e.changedTouches ? e.changedTouches[0] : e, | ||
| 586 | momentumX, | ||
| 587 | momentumY, | ||
| 588 | duration = utils.getTime() - this.startTime, | ||
| 589 | newX = Math.round(this.x), | ||
| 590 | newY = Math.round(this.y), | ||
| 591 | distanceX = Math.abs(newX - this.startX), | ||
| 592 | distanceY = Math.abs(newY - this.startY), | ||
| 593 | time = 0, | ||
| 594 | easing = ''; | ||
| 595 | |||
| 596 | this.isInTransition = 0; | ||
| 597 | this.initiated = 0; | ||
| 598 | this.endTime = utils.getTime(); | ||
| 599 | |||
| 600 | // reset if we are outside of the boundaries | ||
| 601 | if ( this.resetPosition(this.options.bounceTime) ) { | ||
| 602 | return; | ||
| 603 | } | ||
| 604 | |||
| 605 | this.scrollTo(newX, newY); // ensures that the last position is rounded | ||
| 606 | |||
| 607 | // we scrolled less than 10 pixels | ||
| 608 | if ( !this.moved ) { | ||
| 609 | if ( this.options.tap ) { | ||
| 610 | utils.tap(e, this.options.tap); | ||
| 611 | } | ||
| 612 | |||
| 613 | if ( this.options.click ) { | ||
| 614 | utils.click(e); | ||
| 615 | } | ||
| 616 | |||
| 617 | this._execEvent('scrollCancel'); | ||
| 618 | return; | ||
| 619 | } | ||
| 620 | |||
| 621 | if ( this._events.flick && duration < 200 && distanceX < 100 && distanceY < 100 ) { | ||
| 622 | this._execEvent('flick'); | ||
| 623 | return; | ||
| 624 | } | ||
| 625 | |||
| 626 | // start momentum animation if needed | ||
| 627 | if ( this.options.momentum && duration < 300 ) { | ||
| 628 | momentumX = this.hasHorizontalScroll ? utils.momentum(this.x, this.startX, duration, this.maxScrollX, this.options.bounce ? this.wrapperWidth : 0, this.options.deceleration) : { destination: newX, duration: 0 }; | ||
| 629 | momentumY = this.hasVerticalScroll ? utils.momentum(this.y, this.startY, duration, this.maxScrollY, this.options.bounce ? this.wrapperHeight : 0, this.options.deceleration) : { destination: newY, duration: 0 }; | ||
| 630 | newX = momentumX.destination; | ||
| 631 | newY = momentumY.destination; | ||
| 632 | time = Math.max(momentumX.duration, momentumY.duration); | ||
| 633 | this.isInTransition = 1; | ||
| 634 | } | ||
| 635 | |||
| 636 | |||
| 637 | if ( this.options.snap ) { | ||
| 638 | var snap = this._nearestSnap(newX, newY); | ||
| 639 | this.currentPage = snap; | ||
| 640 | time = this.options.snapSpeed || Math.max( | ||
| 641 | Math.max( | ||
| 642 | Math.min(Math.abs(newX - snap.x), 1000), | ||
| 643 | Math.min(Math.abs(newY - snap.y), 1000) | ||
| 644 | ), 300); | ||
| 645 | newX = snap.x; | ||
| 646 | newY = snap.y; | ||
| 647 | |||
| 648 | this.directionX = 0; | ||
| 649 | this.directionY = 0; | ||
| 650 | easing = this.options.bounceEasing; | ||
| 651 | } | ||
| 652 | |||
| 653 | // INSERT POINT: _end | ||
| 654 | |||
| 655 | if ( newX != this.x || newY != this.y ) { | ||
| 656 | // change easing function when scroller goes out of the boundaries | ||
| 657 | if ( newX > 0 || newX < this.maxScrollX || newY > 0 || newY < this.maxScrollY ) { | ||
| 658 | easing = utils.ease.quadratic; | ||
| 659 | } | ||
| 660 | |||
| 661 | this.scrollTo(newX, newY, time, easing); | ||
| 662 | return; | ||
| 663 | } | ||
| 664 | |||
| 665 | this._execEvent('scrollEnd'); | ||
| 666 | }, | ||
| 667 | |||
| 668 | _resize: function () { | ||
| 669 | var that = this; | ||
| 670 | |||
| 671 | clearTimeout(this.resizeTimeout); | ||
| 672 | |||
| 673 | this.resizeTimeout = setTimeout(function () { | ||
| 674 | that.refresh(); | ||
| 675 | }, this.options.resizePolling); | ||
| 676 | }, | ||
| 677 | |||
| 678 | resetPosition: function (time) { | ||
| 679 | var x = this.x, | ||
| 680 | y = this.y; | ||
| 681 | |||
| 682 | time = time || 0; | ||
| 683 | |||
| 684 | if ( !this.hasHorizontalScroll || this.x > 0 ) { | ||
| 685 | x = 0; | ||
| 686 | } else if ( this.x < this.maxScrollX ) { | ||
| 687 | x = this.maxScrollX; | ||
| 688 | } | ||
| 689 | |||
| 690 | if ( !this.hasVerticalScroll || this.y > 0 ) { | ||
| 691 | y = 0; | ||
| 692 | } else if ( this.y < this.maxScrollY ) { | ||
| 693 | y = this.maxScrollY; | ||
| 694 | } | ||
| 695 | |||
| 696 | if ( x == this.x && y == this.y ) { | ||
| 697 | return false; | ||
| 698 | } | ||
| 699 | |||
| 700 | this.scrollTo(x, y, time, this.options.bounceEasing); | ||
| 701 | |||
| 702 | return true; | ||
| 703 | }, | ||
| 704 | |||
| 705 | disable: function () { | ||
| 706 | this.enabled = false; | ||
| 707 | }, | ||
| 708 | |||
| 709 | enable: function () { | ||
| 710 | this.enabled = true; | ||
| 711 | }, | ||
| 712 | |||
| 713 | refresh: function () { | ||
| 714 | var rf = this.wrapper.offsetHeight; // Force reflow | ||
| 715 | |||
| 716 | this.wrapperWidth = this.wrapper.clientWidth; | ||
| 717 | this.wrapperHeight = this.wrapper.clientHeight; | ||
| 718 | |||
| 719 | /* REPLACE START: refresh */ | ||
| 720 | this.scrollerWidth = this.scroller.offsetWidth; | ||
| 721 | this.scrollerHeight = this.scroller.offsetHeight; | ||
| 722 | |||
| 723 | this.maxScrollX = this.wrapperWidth - this.scrollerWidth; | ||
| 724 | |||
| 725 | var limit; | ||
| 726 | if ( this.options.infiniteElements ) { | ||
| 727 | this.options.infiniteLimit = this.options.infiniteLimit || Math.floor(2147483645 / this.infiniteElementHeight); | ||
| 728 | limit = -this.options.infiniteLimit * this.infiniteElementHeight + this.wrapperHeight; | ||
| 729 | } | ||
| 730 | this.maxScrollY = limit !== undefined ? limit : this.wrapperHeight - this.scrollerHeight; | ||
| 731 | /* REPLACE END: refresh */ | ||
| 732 | |||
| 733 | this.hasHorizontalScroll = this.options.scrollX && this.maxScrollX < 0; | ||
| 734 | this.hasVerticalScroll = this.options.scrollY && this.maxScrollY < 0; | ||
| 735 | |||
| 736 | if ( !this.hasHorizontalScroll ) { | ||
| 737 | this.maxScrollX = 0; | ||
| 738 | this.scrollerWidth = this.wrapperWidth; | ||
| 739 | } | ||
| 740 | |||
| 741 | if ( !this.hasVerticalScroll ) { | ||
| 742 | this.maxScrollY = 0; | ||
| 743 | this.scrollerHeight = this.wrapperHeight; | ||
| 744 | } | ||
| 745 | |||
| 746 | this.endTime = 0; | ||
| 747 | this.directionX = 0; | ||
| 748 | this.directionY = 0; | ||
| 749 | |||
| 750 | this.wrapperOffset = utils.offset(this.wrapper); | ||
| 751 | |||
| 752 | this._execEvent('refresh'); | ||
| 753 | |||
| 754 | this.resetPosition(); | ||
| 755 | |||
| 756 | // INSERT POINT: _refresh | ||
| 757 | |||
| 758 | }, | ||
| 759 | |||
| 760 | on: function (type, fn) { | ||
| 761 | if ( !this._events[type] ) { | ||
| 762 | this._events[type] = []; | ||
| 763 | } | ||
| 764 | |||
| 765 | this._events[type].push(fn); | ||
| 766 | }, | ||
| 767 | |||
| 768 | off: function (type, fn) { | ||
| 769 | if ( !this._events[type] ) { | ||
| 770 | return; | ||
| 771 | } | ||
| 772 | |||
| 773 | var index = this._events[type].indexOf(fn); | ||
| 774 | |||
| 775 | if ( index > -1 ) { | ||
| 776 | this._events[type].splice(index, 1); | ||
| 777 | } | ||
| 778 | }, | ||
| 779 | |||
| 780 | _execEvent: function (type) { | ||
| 781 | if ( !this._events[type] ) { | ||
| 782 | return; | ||
| 783 | } | ||
| 784 | |||
| 785 | var i = 0, | ||
| 786 | l = this._events[type].length; | ||
| 787 | |||
| 788 | if ( !l ) { | ||
| 789 | return; | ||
| 790 | } | ||
| 791 | |||
| 792 | for ( ; i < l; i++ ) { | ||
| 793 | this._events[type][i].apply(this, [].slice.call(arguments, 1)); | ||
| 794 | } | ||
| 795 | }, | ||
| 796 | |||
| 797 | scrollBy: function (x, y, time, easing) { | ||
| 798 | x = this.x + x; | ||
| 799 | y = this.y + y; | ||
| 800 | time = time || 0; | ||
| 801 | |||
| 802 | this.scrollTo(x, y, time, easing); | ||
| 803 | }, | ||
| 804 | |||
| 805 | scrollTo: function (x, y, time, easing) { | ||
| 806 | easing = easing || utils.ease.circular; | ||
| 807 | |||
| 808 | this.isInTransition = this.options.useTransition && time > 0; | ||
| 809 | var transitionType = this.options.useTransition && easing.style; | ||
| 810 | if ( !time || transitionType ) { | ||
| 811 | if(transitionType) { | ||
| 812 | this._transitionTimingFunction(easing.style); | ||
| 813 | this._transitionTime(time); | ||
| 814 | } | ||
| 815 | this._translate(x, y); | ||
| 816 | } else { | ||
| 817 | this._animate(x, y, time, easing.fn); | ||
| 818 | } | ||
| 819 | }, | ||
| 820 | |||
| 821 | scrollToElement: function (el, time, offsetX, offsetY, easing) { | ||
| 822 | el = el.nodeType ? el : this.scroller.querySelector(el); | ||
| 823 | |||
| 824 | if ( !el ) { | ||
| 825 | return; | ||
| 826 | } | ||
| 827 | |||
| 828 | var pos = utils.offset(el); | ||
| 829 | |||
| 830 | pos.left -= this.wrapperOffset.left; | ||
| 831 | pos.top -= this.wrapperOffset.top; | ||
| 832 | |||
| 833 | // if offsetX/Y are true we center the element to the screen | ||
| 834 | if ( offsetX === true ) { | ||
| 835 | offsetX = Math.round(el.offsetWidth / 2 - this.wrapper.offsetWidth / 2); | ||
| 836 | } | ||
| 837 | if ( offsetY === true ) { | ||
| 838 | offsetY = Math.round(el.offsetHeight / 2 - this.wrapper.offsetHeight / 2); | ||
| 839 | } | ||
| 840 | |||
| 841 | pos.left -= offsetX || 0; | ||
| 842 | pos.top -= offsetY || 0; | ||
| 843 | |||
| 844 | pos.left = pos.left > 0 ? 0 : pos.left < this.maxScrollX ? this.maxScrollX : pos.left; | ||
| 845 | pos.top = pos.top > 0 ? 0 : pos.top < this.maxScrollY ? this.maxScrollY : pos.top; | ||
| 846 | |||
| 847 | time = time === undefined || time === null || time === 'auto' ? Math.max(Math.abs(this.x-pos.left), Math.abs(this.y-pos.top)) : time; | ||
| 848 | |||
| 849 | this.scrollTo(pos.left, pos.top, time, easing); | ||
| 850 | }, | ||
| 851 | |||
| 852 | _transitionTime: function (time) { | ||
| 853 | time = time || 0; | ||
| 854 | |||
| 855 | var durationProp = utils.style.transitionDuration; | ||
| 856 | this.scrollerStyle[durationProp] = time + 'ms'; | ||
| 857 | |||
| 858 | if ( !time && utils.isBadAndroid ) { | ||
| 859 | this.scrollerStyle[durationProp] = '0.0001ms'; | ||
| 860 | // remove 0.0001ms | ||
| 861 | var self = this; | ||
| 862 | rAF(function() { | ||
| 863 | if(self.scrollerStyle[durationProp] === '0.0001ms') { | ||
| 864 | self.scrollerStyle[durationProp] = '0s'; | ||
| 865 | } | ||
| 866 | }); | ||
| 867 | } | ||
| 868 | |||
| 869 | // INSERT POINT: _transitionTime | ||
| 870 | |||
| 871 | }, | ||
| 872 | |||
| 873 | _transitionTimingFunction: function (easing) { | ||
| 874 | this.scrollerStyle[utils.style.transitionTimingFunction] = easing; | ||
| 875 | |||
| 876 | // INSERT POINT: _transitionTimingFunction | ||
| 877 | |||
| 878 | }, | ||
| 879 | |||
| 880 | _translate: function (x, y) { | ||
| 881 | if ( this.options.useTransform ) { | ||
| 882 | |||
| 883 | /* REPLACE START: _translate */ | ||
| 884 | |||
| 885 | this.scrollerStyle[utils.style.transform] = 'translate(' + x + 'px,' + y + 'px)' + this.translateZ; | ||
| 886 | |||
| 887 | /* REPLACE END: _translate */ | ||
| 888 | |||
| 889 | } else { | ||
| 890 | x = Math.round(x); | ||
| 891 | y = Math.round(y); | ||
| 892 | this.scrollerStyle.left = x + 'px'; | ||
| 893 | this.scrollerStyle.top = y + 'px'; | ||
| 894 | } | ||
| 895 | |||
| 896 | this.x = x; | ||
| 897 | this.y = y; | ||
| 898 | |||
| 899 | // INSERT POINT: _translate | ||
| 900 | |||
| 901 | }, | ||
| 902 | |||
| 903 | _initEvents: function (remove) { | ||
| 904 | var eventType = remove ? utils.removeEvent : utils.addEvent, | ||
| 905 | target = this.options.bindToWrapper ? this.wrapper : window; | ||
| 906 | |||
| 907 | eventType(window, 'orientationchange', this); | ||
| 908 | eventType(window, 'resize', this); | ||
| 909 | |||
| 910 | if ( this.options.click ) { | ||
| 911 | eventType(this.wrapper, 'click', this, true); | ||
| 912 | } | ||
| 913 | |||
| 914 | if ( !this.options.disableMouse ) { | ||
| 915 | eventType(this.wrapper, 'mousedown', this); | ||
| 916 | eventType(target, 'mousemove', this); | ||
| 917 | eventType(target, 'mousecancel', this); | ||
| 918 | eventType(target, 'mouseup', this); | ||
| 919 | } | ||
| 920 | |||
| 921 | if ( utils.hasPointer && !this.options.disablePointer ) { | ||
| 922 | eventType(this.wrapper, utils.prefixPointerEvent('pointerdown'), this); | ||
| 923 | eventType(target, utils.prefixPointerEvent('pointermove'), this); | ||
| 924 | eventType(target, utils.prefixPointerEvent('pointercancel'), this); | ||
| 925 | eventType(target, utils.prefixPointerEvent('pointerup'), this); | ||
| 926 | } | ||
| 927 | |||
| 928 | if ( utils.hasTouch && !this.options.disableTouch ) { | ||
| 929 | eventType(this.wrapper, 'touchstart', this); | ||
| 930 | eventType(target, 'touchmove', this); | ||
| 931 | eventType(target, 'touchcancel', this); | ||
| 932 | eventType(target, 'touchend', this); | ||
| 933 | } | ||
| 934 | |||
| 935 | eventType(this.scroller, 'transitionend', this); | ||
| 936 | eventType(this.scroller, 'webkitTransitionEnd', this); | ||
| 937 | eventType(this.scroller, 'oTransitionEnd', this); | ||
| 938 | eventType(this.scroller, 'MSTransitionEnd', this); | ||
| 939 | }, | ||
| 940 | |||
| 941 | getComputedPosition: function () { | ||
| 942 | var matrix = window.getComputedStyle(this.scroller, null), | ||
| 943 | x, y; | ||
| 944 | |||
| 945 | if ( this.options.useTransform ) { | ||
| 946 | matrix = matrix[utils.style.transform].split(')')[0].split(', '); | ||
| 947 | x = +(matrix[12] || matrix[4]); | ||
| 948 | y = +(matrix[13] || matrix[5]); | ||
| 949 | } else { | ||
| 950 | x = +matrix.left.replace(/[^-\d.]/g, ''); | ||
| 951 | y = +matrix.top.replace(/[^-\d.]/g, ''); | ||
| 952 | } | ||
| 953 | |||
| 954 | return { x: x, y: y }; | ||
| 955 | }, | ||
| 956 | _initWheel: function () { | ||
| 957 | utils.addEvent(this.wrapper, 'wheel', this); | ||
| 958 | utils.addEvent(this.wrapper, 'mousewheel', this); | ||
| 959 | utils.addEvent(this.wrapper, 'DOMMouseScroll', this); | ||
| 960 | |||
| 961 | this.on('destroy', function () { | ||
| 962 | clearTimeout(this.wheelTimeout); | ||
| 963 | this.wheelTimeout = null; | ||
| 964 | utils.removeEvent(this.wrapper, 'wheel', this); | ||
| 965 | utils.removeEvent(this.wrapper, 'mousewheel', this); | ||
| 966 | utils.removeEvent(this.wrapper, 'DOMMouseScroll', this); | ||
| 967 | }); | ||
| 968 | }, | ||
| 969 | |||
| 970 | _wheel: function (e) { | ||
| 971 | if ( !this.enabled ) { | ||
| 972 | return; | ||
| 973 | } | ||
| 974 | |||
| 975 | e.preventDefault(); | ||
| 976 | |||
| 977 | var wheelDeltaX, wheelDeltaY, | ||
| 978 | newX, newY, | ||
| 979 | that = this; | ||
| 980 | |||
| 981 | if ( this.wheelTimeout === undefined ) { | ||
| 982 | that._execEvent('scrollStart'); | ||
| 983 | } | ||
| 984 | |||
| 985 | // Execute the scrollEnd event after 400ms the wheel stopped scrolling | ||
| 986 | clearTimeout(this.wheelTimeout); | ||
| 987 | this.wheelTimeout = setTimeout(function () { | ||
| 988 | if(!that.options.snap) { | ||
| 989 | that._execEvent('scrollEnd'); | ||
| 990 | } | ||
| 991 | that.wheelTimeout = undefined; | ||
| 992 | }, 400); | ||
| 993 | |||
| 994 | if ( 'deltaX' in e ) { | ||
| 995 | if (e.deltaMode === 1) { | ||
| 996 | wheelDeltaX = -e.deltaX * this.options.mouseWheelSpeed; | ||
| 997 | wheelDeltaY = -e.deltaY * this.options.mouseWheelSpeed; | ||
| 998 | } else { | ||
| 999 | wheelDeltaX = -e.deltaX; | ||
| 1000 | wheelDeltaY = -e.deltaY; | ||
| 1001 | } | ||
| 1002 | } else if ( 'wheelDeltaX' in e ) { | ||
| 1003 | wheelDeltaX = e.wheelDeltaX / 120 * this.options.mouseWheelSpeed; | ||
| 1004 | wheelDeltaY = e.wheelDeltaY / 120 * this.options.mouseWheelSpeed; | ||
| 1005 | } else if ( 'wheelDelta' in e ) { | ||
| 1006 | wheelDeltaX = wheelDeltaY = e.wheelDelta / 120 * this.options.mouseWheelSpeed; | ||
| 1007 | } else if ( 'detail' in e ) { | ||
| 1008 | wheelDeltaX = wheelDeltaY = -e.detail / 3 * this.options.mouseWheelSpeed; | ||
| 1009 | } else { | ||
| 1010 | return; | ||
| 1011 | } | ||
| 1012 | |||
| 1013 | wheelDeltaX *= this.options.invertWheelDirection; | ||
| 1014 | wheelDeltaY *= this.options.invertWheelDirection; | ||
| 1015 | |||
| 1016 | if ( !this.hasVerticalScroll ) { | ||
| 1017 | wheelDeltaX = wheelDeltaY; | ||
| 1018 | wheelDeltaY = 0; | ||
| 1019 | } | ||
| 1020 | |||
| 1021 | if ( this.options.snap ) { | ||
| 1022 | newX = this.currentPage.pageX; | ||
| 1023 | newY = this.currentPage.pageY; | ||
| 1024 | |||
| 1025 | if ( wheelDeltaX > 0 ) { | ||
| 1026 | newX--; | ||
| 1027 | } else if ( wheelDeltaX < 0 ) { | ||
| 1028 | newX++; | ||
| 1029 | } | ||
| 1030 | |||
| 1031 | if ( wheelDeltaY > 0 ) { | ||
| 1032 | newY--; | ||
| 1033 | } else if ( wheelDeltaY < 0 ) { | ||
| 1034 | newY++; | ||
| 1035 | } | ||
| 1036 | |||
| 1037 | this.goToPage(newX, newY); | ||
| 1038 | |||
| 1039 | return; | ||
| 1040 | } | ||
| 1041 | |||
| 1042 | newX = this.x + Math.round(this.hasHorizontalScroll ? wheelDeltaX : 0); | ||
| 1043 | newY = this.y + Math.round(this.hasVerticalScroll ? wheelDeltaY : 0); | ||
| 1044 | |||
| 1045 | this.directionX = wheelDeltaX > 0 ? -1 : wheelDeltaX < 0 ? 1 : 0; | ||
| 1046 | this.directionY = wheelDeltaY > 0 ? -1 : wheelDeltaY < 0 ? 1 : 0; | ||
| 1047 | |||
| 1048 | if ( newX > 0 ) { | ||
| 1049 | newX = 0; | ||
| 1050 | } else if ( newX < this.maxScrollX ) { | ||
| 1051 | newX = this.maxScrollX; | ||
| 1052 | } | ||
| 1053 | |||
| 1054 | if ( newY > 0 ) { | ||
| 1055 | newY = 0; | ||
| 1056 | } else if ( newY < this.maxScrollY ) { | ||
| 1057 | newY = this.maxScrollY; | ||
| 1058 | } | ||
| 1059 | |||
| 1060 | this.scrollTo(newX, newY, 0); | ||
| 1061 | |||
| 1062 | if ( this.options.probeType > 1 ) { | ||
| 1063 | this._execEvent('scroll'); | ||
| 1064 | } | ||
| 1065 | |||
| 1066 | // INSERT POINT: _wheel | ||
| 1067 | }, | ||
| 1068 | |||
| 1069 | _initSnap: function () { | ||
| 1070 | this.currentPage = {}; | ||
| 1071 | |||
| 1072 | if ( typeof this.options.snap == 'string' ) { | ||
| 1073 | this.options.snap = this.scroller.querySelectorAll(this.options.snap); | ||
| 1074 | } | ||
| 1075 | |||
| 1076 | this.on('refresh', function () { | ||
| 1077 | var i = 0, l, | ||
| 1078 | m = 0, n, | ||
| 1079 | cx, cy, | ||
| 1080 | x = 0, y, | ||
| 1081 | stepX = this.options.snapStepX || this.wrapperWidth, | ||
| 1082 | stepY = this.options.snapStepY || this.wrapperHeight, | ||
| 1083 | el; | ||
| 1084 | |||
| 1085 | this.pages = []; | ||
| 1086 | |||
| 1087 | if ( !this.wrapperWidth || !this.wrapperHeight || !this.scrollerWidth || !this.scrollerHeight ) { | ||
| 1088 | return; | ||
| 1089 | } | ||
| 1090 | |||
| 1091 | if ( this.options.snap === true ) { | ||
| 1092 | cx = Math.round( stepX / 2 ); | ||
| 1093 | cy = Math.round( stepY / 2 ); | ||
| 1094 | |||
| 1095 | while ( x > -this.scrollerWidth ) { | ||
| 1096 | this.pages[i] = []; | ||
| 1097 | l = 0; | ||
| 1098 | y = 0; | ||
| 1099 | |||
| 1100 | while ( y > -this.scrollerHeight ) { | ||
| 1101 | this.pages[i][l] = { | ||
| 1102 | x: Math.max(x, this.maxScrollX), | ||
| 1103 | y: Math.max(y, this.maxScrollY), | ||
| 1104 | width: stepX, | ||
| 1105 | height: stepY, | ||
| 1106 | cx: x - cx, | ||
| 1107 | cy: y - cy | ||
| 1108 | }; | ||
| 1109 | |||
| 1110 | y -= stepY; | ||
| 1111 | l++; | ||
| 1112 | } | ||
| 1113 | |||
| 1114 | x -= stepX; | ||
| 1115 | i++; | ||
| 1116 | } | ||
| 1117 | } else { | ||
| 1118 | el = this.options.snap; | ||
| 1119 | l = el.length; | ||
| 1120 | n = -1; | ||
| 1121 | |||
| 1122 | for ( ; i < l; i++ ) { | ||
| 1123 | if ( i === 0 || el[i].offsetLeft <= el[i-1].offsetLeft ) { | ||
| 1124 | m = 0; | ||
| 1125 | n++; | ||
| 1126 | } | ||
| 1127 | |||
| 1128 | if ( !this.pages[m] ) { | ||
| 1129 | this.pages[m] = []; | ||
| 1130 | } | ||
| 1131 | |||
| 1132 | x = Math.max(-el[i].offsetLeft, this.maxScrollX); | ||
| 1133 | y = Math.max(-el[i].offsetTop, this.maxScrollY); | ||
| 1134 | cx = x - Math.round(el[i].offsetWidth / 2); | ||
| 1135 | cy = y - Math.round(el[i].offsetHeight / 2); | ||
| 1136 | |||
| 1137 | this.pages[m][n] = { | ||
| 1138 | x: x, | ||
| 1139 | y: y, | ||
| 1140 | width: el[i].offsetWidth, | ||
| 1141 | height: el[i].offsetHeight, | ||
| 1142 | cx: cx, | ||
| 1143 | cy: cy | ||
| 1144 | }; | ||
| 1145 | |||
| 1146 | if ( x > this.maxScrollX ) { | ||
| 1147 | m++; | ||
| 1148 | } | ||
| 1149 | } | ||
| 1150 | } | ||
| 1151 | |||
| 1152 | this.goToPage(this.currentPage.pageX || 0, this.currentPage.pageY || 0, 0); | ||
| 1153 | |||
| 1154 | // Update snap threshold if needed | ||
| 1155 | if ( this.options.snapThreshold % 1 === 0 ) { | ||
| 1156 | this.snapThresholdX = this.options.snapThreshold; | ||
| 1157 | this.snapThresholdY = this.options.snapThreshold; | ||
| 1158 | } else { | ||
| 1159 | this.snapThresholdX = Math.round(this.pages[this.currentPage.pageX][this.currentPage.pageY].width * this.options.snapThreshold); | ||
| 1160 | this.snapThresholdY = Math.round(this.pages[this.currentPage.pageX][this.currentPage.pageY].height * this.options.snapThreshold); | ||
| 1161 | } | ||
| 1162 | }); | ||
| 1163 | |||
| 1164 | this.on('flick', function () { | ||
| 1165 | var time = this.options.snapSpeed || Math.max( | ||
| 1166 | Math.max( | ||
| 1167 | Math.min(Math.abs(this.x - this.startX), 1000), | ||
| 1168 | Math.min(Math.abs(this.y - this.startY), 1000) | ||
| 1169 | ), 300); | ||
| 1170 | |||
| 1171 | this.goToPage( | ||
| 1172 | this.currentPage.pageX + this.directionX, | ||
| 1173 | this.currentPage.pageY + this.directionY, | ||
| 1174 | time | ||
| 1175 | ); | ||
| 1176 | }); | ||
| 1177 | }, | ||
| 1178 | |||
| 1179 | _nearestSnap: function (x, y) { | ||
| 1180 | if ( !this.pages.length ) { | ||
| 1181 | return { x: 0, y: 0, pageX: 0, pageY: 0 }; | ||
| 1182 | } | ||
| 1183 | |||
| 1184 | var i = 0, | ||
| 1185 | l = this.pages.length, | ||
| 1186 | m = 0; | ||
| 1187 | |||
| 1188 | // Check if we exceeded the snap threshold | ||
| 1189 | if ( Math.abs(x - this.absStartX) < this.snapThresholdX && | ||
| 1190 | Math.abs(y - this.absStartY) < this.snapThresholdY ) { | ||
| 1191 | return this.currentPage; | ||
| 1192 | } | ||
| 1193 | |||
| 1194 | if ( x > 0 ) { | ||
| 1195 | x = 0; | ||
| 1196 | } else if ( x < this.maxScrollX ) { | ||
| 1197 | x = this.maxScrollX; | ||
| 1198 | } | ||
| 1199 | |||
| 1200 | if ( y > 0 ) { | ||
| 1201 | y = 0; | ||
| 1202 | } else if ( y < this.maxScrollY ) { | ||
| 1203 | y = this.maxScrollY; | ||
| 1204 | } | ||
| 1205 | |||
| 1206 | for ( ; i < l; i++ ) { | ||
| 1207 | if ( x >= this.pages[i][0].cx ) { | ||
| 1208 | x = this.pages[i][0].x; | ||
| 1209 | break; | ||
| 1210 | } | ||
| 1211 | } | ||
| 1212 | |||
| 1213 | l = this.pages[i].length; | ||
| 1214 | |||
| 1215 | for ( ; m < l; m++ ) { | ||
| 1216 | if ( y >= this.pages[0][m].cy ) { | ||
| 1217 | y = this.pages[0][m].y; | ||
| 1218 | break; | ||
| 1219 | } | ||
| 1220 | } | ||
| 1221 | |||
| 1222 | if ( i == this.currentPage.pageX ) { | ||
| 1223 | i += this.directionX; | ||
| 1224 | |||
| 1225 | if ( i < 0 ) { | ||
| 1226 | i = 0; | ||
| 1227 | } else if ( i >= this.pages.length ) { | ||
| 1228 | i = this.pages.length - 1; | ||
| 1229 | } | ||
| 1230 | |||
| 1231 | x = this.pages[i][0].x; | ||
| 1232 | } | ||
| 1233 | |||
| 1234 | if ( m == this.currentPage.pageY ) { | ||
| 1235 | m += this.directionY; | ||
| 1236 | |||
| 1237 | if ( m < 0 ) { | ||
| 1238 | m = 0; | ||
| 1239 | } else if ( m >= this.pages[0].length ) { | ||
| 1240 | m = this.pages[0].length - 1; | ||
| 1241 | } | ||
| 1242 | |||
| 1243 | y = this.pages[0][m].y; | ||
| 1244 | } | ||
| 1245 | |||
| 1246 | return { | ||
| 1247 | x: x, | ||
| 1248 | y: y, | ||
| 1249 | pageX: i, | ||
| 1250 | pageY: m | ||
| 1251 | }; | ||
| 1252 | }, | ||
| 1253 | |||
| 1254 | goToPage: function (x, y, time, easing) { | ||
| 1255 | easing = easing || this.options.bounceEasing; | ||
| 1256 | |||
| 1257 | if ( x >= this.pages.length ) { | ||
| 1258 | x = this.pages.length - 1; | ||
| 1259 | } else if ( x < 0 ) { | ||
| 1260 | x = 0; | ||
| 1261 | } | ||
| 1262 | |||
| 1263 | if ( y >= this.pages[x].length ) { | ||
| 1264 | y = this.pages[x].length - 1; | ||
| 1265 | } else if ( y < 0 ) { | ||
| 1266 | y = 0; | ||
| 1267 | } | ||
| 1268 | |||
| 1269 | var posX = this.pages[x][y].x, | ||
| 1270 | posY = this.pages[x][y].y; | ||
| 1271 | |||
| 1272 | time = time === undefined ? this.options.snapSpeed || Math.max( | ||
| 1273 | Math.max( | ||
| 1274 | Math.min(Math.abs(posX - this.x), 1000), | ||
| 1275 | Math.min(Math.abs(posY - this.y), 1000) | ||
| 1276 | ), 300) : time; | ||
| 1277 | |||
| 1278 | this.currentPage = { | ||
| 1279 | x: posX, | ||
| 1280 | y: posY, | ||
| 1281 | pageX: x, | ||
| 1282 | pageY: y | ||
| 1283 | }; | ||
| 1284 | |||
| 1285 | this.scrollTo(posX, posY, time, easing); | ||
| 1286 | }, | ||
| 1287 | |||
| 1288 | next: function (time, easing) { | ||
| 1289 | var x = this.currentPage.pageX, | ||
| 1290 | y = this.currentPage.pageY; | ||
| 1291 | |||
| 1292 | x++; | ||
| 1293 | |||
| 1294 | if ( x >= this.pages.length && this.hasVerticalScroll ) { | ||
| 1295 | x = 0; | ||
| 1296 | y++; | ||
| 1297 | } | ||
| 1298 | |||
| 1299 | this.goToPage(x, y, time, easing); | ||
| 1300 | }, | ||
| 1301 | |||
| 1302 | prev: function (time, easing) { | ||
| 1303 | var x = this.currentPage.pageX, | ||
| 1304 | y = this.currentPage.pageY; | ||
| 1305 | |||
| 1306 | x--; | ||
| 1307 | |||
| 1308 | if ( x < 0 && this.hasVerticalScroll ) { | ||
| 1309 | x = 0; | ||
| 1310 | y--; | ||
| 1311 | } | ||
| 1312 | |||
| 1313 | this.goToPage(x, y, time, easing); | ||
| 1314 | }, | ||
| 1315 | |||
| 1316 | _initKeys: function (e) { | ||
| 1317 | // default key bindings | ||
| 1318 | var keys = { | ||
| 1319 | pageUp: 33, | ||
| 1320 | pageDown: 34, | ||
| 1321 | end: 35, | ||
| 1322 | home: 36, | ||
| 1323 | left: 37, | ||
| 1324 | up: 38, | ||
| 1325 | right: 39, | ||
| 1326 | down: 40 | ||
| 1327 | }; | ||
| 1328 | var i; | ||
| 1329 | |||
| 1330 | // if you give me characters I give you keycode | ||
| 1331 | if ( typeof this.options.keyBindings == 'object' ) { | ||
| 1332 | for ( i in this.options.keyBindings ) { | ||
| 1333 | if ( typeof this.options.keyBindings[i] == 'string' ) { | ||
| 1334 | this.options.keyBindings[i] = this.options.keyBindings[i].toUpperCase().charCodeAt(0); | ||
| 1335 | } | ||
| 1336 | } | ||
| 1337 | } else { | ||
| 1338 | this.options.keyBindings = {}; | ||
| 1339 | } | ||
| 1340 | |||
| 1341 | for ( i in keys ) { | ||
| 1342 | this.options.keyBindings[i] = this.options.keyBindings[i] || keys[i]; | ||
| 1343 | } | ||
| 1344 | |||
| 1345 | utils.addEvent(window, 'keydown', this); | ||
| 1346 | |||
| 1347 | this.on('destroy', function () { | ||
| 1348 | utils.removeEvent(window, 'keydown', this); | ||
| 1349 | }); | ||
| 1350 | }, | ||
| 1351 | |||
| 1352 | _key: function (e) { | ||
| 1353 | if ( !this.enabled ) { | ||
| 1354 | return; | ||
| 1355 | } | ||
| 1356 | |||
| 1357 | var snap = this.options.snap, // we are using this alot, better to cache it | ||
| 1358 | newX = snap ? this.currentPage.pageX : this.x, | ||
| 1359 | newY = snap ? this.currentPage.pageY : this.y, | ||
| 1360 | now = utils.getTime(), | ||
| 1361 | prevTime = this.keyTime || 0, | ||
| 1362 | acceleration = 0.250, | ||
| 1363 | pos; | ||
| 1364 | |||
| 1365 | if ( this.options.useTransition && this.isInTransition ) { | ||
| 1366 | pos = this.getComputedPosition(); | ||
| 1367 | |||
| 1368 | this._translate(Math.round(pos.x), Math.round(pos.y)); | ||
| 1369 | this.isInTransition = false; | ||
| 1370 | } | ||
| 1371 | |||
| 1372 | this.keyAcceleration = now - prevTime < 200 ? Math.min(this.keyAcceleration + acceleration, 50) : 0; | ||
| 1373 | |||
| 1374 | switch ( e.keyCode ) { | ||
| 1375 | case this.options.keyBindings.pageUp: | ||
| 1376 | if ( this.hasHorizontalScroll && !this.hasVerticalScroll ) { | ||
| 1377 | newX += snap ? 1 : this.wrapperWidth; | ||
| 1378 | } else { | ||
| 1379 | newY += snap ? 1 : this.wrapperHeight; | ||
| 1380 | } | ||
| 1381 | break; | ||
| 1382 | case this.options.keyBindings.pageDown: | ||
| 1383 | if ( this.hasHorizontalScroll && !this.hasVerticalScroll ) { | ||
| 1384 | newX -= snap ? 1 : this.wrapperWidth; | ||
| 1385 | } else { | ||
| 1386 | newY -= snap ? 1 : this.wrapperHeight; | ||
| 1387 | } | ||
| 1388 | break; | ||
| 1389 | case this.options.keyBindings.end: | ||
| 1390 | newX = snap ? this.pages.length-1 : this.maxScrollX; | ||
| 1391 | newY = snap ? this.pages[0].length-1 : this.maxScrollY; | ||
| 1392 | break; | ||
| 1393 | case this.options.keyBindings.home: | ||
| 1394 | newX = 0; | ||
| 1395 | newY = 0; | ||
| 1396 | break; | ||
| 1397 | case this.options.keyBindings.left: | ||
| 1398 | newX += snap ? -1 : 5 + this.keyAcceleration>>0; | ||
| 1399 | break; | ||
| 1400 | case this.options.keyBindings.up: | ||
| 1401 | newY += snap ? 1 : 5 + this.keyAcceleration>>0; | ||
| 1402 | break; | ||
| 1403 | case this.options.keyBindings.right: | ||
| 1404 | newX -= snap ? -1 : 5 + this.keyAcceleration>>0; | ||
| 1405 | break; | ||
| 1406 | case this.options.keyBindings.down: | ||
| 1407 | newY -= snap ? 1 : 5 + this.keyAcceleration>>0; | ||
| 1408 | break; | ||
| 1409 | default: | ||
| 1410 | return; | ||
| 1411 | } | ||
| 1412 | |||
| 1413 | if ( snap ) { | ||
| 1414 | this.goToPage(newX, newY); | ||
| 1415 | return; | ||
| 1416 | } | ||
| 1417 | |||
| 1418 | if ( newX > 0 ) { | ||
| 1419 | newX = 0; | ||
| 1420 | this.keyAcceleration = 0; | ||
| 1421 | } else if ( newX < this.maxScrollX ) { | ||
| 1422 | newX = this.maxScrollX; | ||
| 1423 | this.keyAcceleration = 0; | ||
| 1424 | } | ||
| 1425 | |||
| 1426 | if ( newY > 0 ) { | ||
| 1427 | newY = 0; | ||
| 1428 | this.keyAcceleration = 0; | ||
| 1429 | } else if ( newY < this.maxScrollY ) { | ||
| 1430 | newY = this.maxScrollY; | ||
| 1431 | this.keyAcceleration = 0; | ||
| 1432 | } | ||
| 1433 | |||
| 1434 | this.scrollTo(newX, newY, 0); | ||
| 1435 | |||
| 1436 | this.keyTime = now; | ||
| 1437 | }, | ||
| 1438 | |||
| 1439 | _animate: function (destX, destY, duration, easingFn) { | ||
| 1440 | var that = this, | ||
| 1441 | startX = this.x, | ||
| 1442 | startY = this.y, | ||
| 1443 | startTime = utils.getTime(), | ||
| 1444 | destTime = startTime + duration; | ||
| 1445 | |||
| 1446 | function step () { | ||
| 1447 | var now = utils.getTime(), | ||
| 1448 | newX, newY, | ||
| 1449 | easing; | ||
| 1450 | |||
| 1451 | if ( now >= destTime ) { | ||
| 1452 | that.isAnimating = false; | ||
| 1453 | that._translate(destX, destY); | ||
| 1454 | |||
| 1455 | if ( !that.resetPosition(that.options.bounceTime) ) { | ||
| 1456 | that._execEvent('scrollEnd'); | ||
| 1457 | } | ||
| 1458 | |||
| 1459 | return; | ||
| 1460 | } | ||
| 1461 | |||
| 1462 | now = ( now - startTime ) / duration; | ||
| 1463 | easing = easingFn(now); | ||
| 1464 | newX = ( destX - startX ) * easing + startX; | ||
| 1465 | newY = ( destY - startY ) * easing + startY; | ||
| 1466 | that._translate(newX, newY); | ||
| 1467 | |||
| 1468 | if ( that.isAnimating ) { | ||
| 1469 | rAF(step); | ||
| 1470 | } | ||
| 1471 | |||
| 1472 | if ( that.options.probeType == 3 ) { | ||
| 1473 | that._execEvent('scroll'); | ||
| 1474 | } | ||
| 1475 | } | ||
| 1476 | |||
| 1477 | this.isAnimating = true; | ||
| 1478 | step(); | ||
| 1479 | }, | ||
| 1480 | |||
| 1481 | _initInfinite: function () { | ||
| 1482 | var el = this.options.infiniteElements; | ||
| 1483 | |||
| 1484 | this.infiniteElements = typeof el == 'string' ? document.querySelectorAll(el) : el; | ||
| 1485 | this.infiniteLength = this.infiniteElements.length; | ||
| 1486 | this.infiniteMaster = this.infiniteElements[0]; | ||
| 1487 | this.infiniteElementHeight = this.infiniteMaster.offsetHeight; | ||
| 1488 | this.infiniteHeight = this.infiniteLength * this.infiniteElementHeight; | ||
| 1489 | |||
| 1490 | this.options.cacheSize = this.options.cacheSize || 1000; | ||
| 1491 | this.infiniteCacheBuffer = Math.round(this.options.cacheSize / 4); | ||
| 1492 | |||
| 1493 | //this.infiniteCache = {}; | ||
| 1494 | this.options.dataset.call(this, 0, this.options.cacheSize); | ||
| 1495 | |||
| 1496 | this.on('refresh', function () { | ||
| 1497 | var elementsPerPage = Math.ceil(this.wrapperHeight / this.infiniteElementHeight); | ||
| 1498 | this.infiniteUpperBufferSize = Math.floor((this.infiniteLength - elementsPerPage) / 2); | ||
| 1499 | this.reorderInfinite(); | ||
| 1500 | }); | ||
| 1501 | |||
| 1502 | this.on('scroll', this.reorderInfinite); | ||
| 1503 | }, | ||
| 1504 | |||
| 1505 | // TO-DO: clean up the mess | ||
| 1506 | reorderInfinite: function () { | ||
| 1507 | var center = -this.y + this.wrapperHeight / 2; | ||
| 1508 | |||
| 1509 | var minorPhase = Math.max(Math.floor(-this.y / this.infiniteElementHeight) - this.infiniteUpperBufferSize, 0), | ||
| 1510 | majorPhase = Math.floor(minorPhase / this.infiniteLength), | ||
| 1511 | phase = minorPhase - majorPhase * this.infiniteLength; | ||
| 1512 | |||
| 1513 | var top = 0; | ||
| 1514 | var i = 0; | ||
| 1515 | var update = []; | ||
| 1516 | |||
| 1517 | //var cachePhase = Math.floor((minorPhase + this.infiniteLength / 2) / this.infiniteCacheBuffer); | ||
| 1518 | var cachePhase = Math.floor(minorPhase / this.infiniteCacheBuffer); | ||
| 1519 | |||
| 1520 | while ( i < this.infiniteLength ) { | ||
| 1521 | top = i * this.infiniteElementHeight + majorPhase * this.infiniteHeight; | ||
| 1522 | |||
| 1523 | if ( phase > i ) { | ||
| 1524 | top += this.infiniteElementHeight * this.infiniteLength; | ||
| 1525 | } | ||
| 1526 | |||
| 1527 | if ( this.infiniteElements[i]._top !== top ) { | ||
| 1528 | this.infiniteElements[i]._phase = top / this.infiniteElementHeight; | ||
| 1529 | |||
| 1530 | if ( this.infiniteElements[i]._phase < this.options.infiniteLimit ) { | ||
| 1531 | this.infiniteElements[i]._top = top; | ||
| 1532 | if ( this.options.infiniteUseTransform ) { | ||
| 1533 | this.infiniteElements[i].style[utils.style.transform] = 'translate(0, ' + top + 'px)' + this.translateZ; | ||
| 1534 | } else { | ||
| 1535 | this.infiniteElements[i].style.top = top + 'px'; | ||
| 1536 | } | ||
| 1537 | update.push(this.infiniteElements[i]); | ||
| 1538 | } | ||
| 1539 | } | ||
| 1540 | |||
| 1541 | i++; | ||
| 1542 | } | ||
| 1543 | |||
| 1544 | if ( this.cachePhase != cachePhase && (cachePhase === 0 || minorPhase - this.infiniteCacheBuffer > 0) ) { | ||
| 1545 | this.options.dataset.call(this, Math.max(cachePhase * this.infiniteCacheBuffer - this.infiniteCacheBuffer, 0), this.options.cacheSize); | ||
| 1546 | } | ||
| 1547 | |||
| 1548 | this.cachePhase = cachePhase; | ||
| 1549 | |||
| 1550 | this.updateContent(update); | ||
| 1551 | }, | ||
| 1552 | |||
| 1553 | updateContent: function (els) { | ||
| 1554 | if ( this.infiniteCache === undefined ) { | ||
| 1555 | return; | ||
| 1556 | } | ||
| 1557 | |||
| 1558 | for ( var i = 0, l = els.length; i < l; i++ ) { | ||
| 1559 | this.options.dataFiller.call(this, els[i], this.infiniteCache[els[i]._phase]); | ||
| 1560 | } | ||
| 1561 | }, | ||
| 1562 | |||
| 1563 | updateCache: function (start, data) { | ||
| 1564 | var firstRun = this.infiniteCache === undefined; | ||
| 1565 | |||
| 1566 | this.infiniteCache = {}; | ||
| 1567 | |||
| 1568 | for ( var i = 0, l = data.length; i < l; i++ ) { | ||
| 1569 | this.infiniteCache[start++] = data[i]; | ||
| 1570 | } | ||
| 1571 | |||
| 1572 | if ( firstRun ) { | ||
| 1573 | this.updateContent(this.infiniteElements); | ||
| 1574 | } | ||
| 1575 | |||
| 1576 | }, | ||
| 1577 | |||
| 1578 | |||
| 1579 | handleEvent: function (e) { | ||
| 1580 | switch ( e.type ) { | ||
| 1581 | case 'touchstart': | ||
| 1582 | case 'pointerdown': | ||
| 1583 | case 'MSPointerDown': | ||
| 1584 | case 'mousedown': | ||
| 1585 | this._start(e); | ||
| 1586 | break; | ||
| 1587 | case 'touchmove': | ||
| 1588 | case 'pointermove': | ||
| 1589 | case 'MSPointerMove': | ||
| 1590 | case 'mousemove': | ||
| 1591 | this._move(e); | ||
| 1592 | break; | ||
| 1593 | case 'touchend': | ||
| 1594 | case 'pointerup': | ||
| 1595 | case 'MSPointerUp': | ||
| 1596 | case 'mouseup': | ||
| 1597 | case 'touchcancel': | ||
| 1598 | case 'pointercancel': | ||
| 1599 | case 'MSPointerCancel': | ||
| 1600 | case 'mousecancel': | ||
| 1601 | this._end(e); | ||
| 1602 | break; | ||
| 1603 | case 'orientationchange': | ||
| 1604 | case 'resize': | ||
| 1605 | this._resize(); | ||
| 1606 | break; | ||
| 1607 | case 'transitionend': | ||
| 1608 | case 'webkitTransitionEnd': | ||
| 1609 | case 'oTransitionEnd': | ||
| 1610 | case 'MSTransitionEnd': | ||
| 1611 | this._transitionEnd(e); | ||
| 1612 | break; | ||
| 1613 | case 'wheel': | ||
| 1614 | case 'DOMMouseScroll': | ||
| 1615 | case 'mousewheel': | ||
| 1616 | this._wheel(e); | ||
| 1617 | break; | ||
| 1618 | case 'keydown': | ||
| 1619 | this._key(e); | ||
| 1620 | break; | ||
| 1621 | case 'click': | ||
| 1622 | if ( this.enabled && !e._constructed ) { | ||
| 1623 | e.preventDefault(); | ||
| 1624 | e.stopPropagation(); | ||
| 1625 | } | ||
| 1626 | break; | ||
| 1627 | } | ||
| 1628 | } | ||
| 1629 | }; | ||
| 1630 | IScroll.utils = utils; | ||
| 1631 | |||
| 1632 | if ( typeof module != 'undefined' && module.exports ) { | ||
| 1633 | module.exports = IScroll; | ||
| 1634 | } else if ( typeof define == 'function' && define.amd ) { | ||
| 1635 | define( function () { return IScroll; } ); | ||
| 1636 | } else { | ||
| 1637 | window.IScroll = IScroll; | ||
| 1638 | } | ||
| 1639 | |||
| 1640 | })(window, document, Math); |
staticLib/iscroll/iscroll-lite.js
deleted
100644 → 0
| 1 | /*! iScroll v5.2.0 ~ (c) 2008-2016 Matteo Spinelli ~ http://cubiq.org/license */ | ||
| 2 | (function (window, document, Math) { | ||
| 3 | var rAF = window.requestAnimationFrame || | ||
| 4 | window.webkitRequestAnimationFrame || | ||
| 5 | window.mozRequestAnimationFrame || | ||
| 6 | window.oRequestAnimationFrame || | ||
| 7 | window.msRequestAnimationFrame || | ||
| 8 | function (callback) { window.setTimeout(callback, 1000 / 60); }; | ||
| 9 | |||
| 10 | var utils = (function () { | ||
| 11 | var me = {}; | ||
| 12 | |||
| 13 | var _elementStyle = document.createElement('div').style; | ||
| 14 | var _vendor = (function () { | ||
| 15 | var vendors = ['t', 'webkitT', 'MozT', 'msT', 'OT'], | ||
| 16 | transform, | ||
| 17 | i = 0, | ||
| 18 | l = vendors.length; | ||
| 19 | |||
| 20 | for ( ; i < l; i++ ) { | ||
| 21 | transform = vendors[i] + 'ransform'; | ||
| 22 | if ( transform in _elementStyle ) return vendors[i].substr(0, vendors[i].length-1); | ||
| 23 | } | ||
| 24 | |||
| 25 | return false; | ||
| 26 | })(); | ||
| 27 | |||
| 28 | function _prefixStyle (style) { | ||
| 29 | if ( _vendor === false ) return false; | ||
| 30 | if ( _vendor === '' ) return style; | ||
| 31 | return _vendor + style.charAt(0).toUpperCase() + style.substr(1); | ||
| 32 | } | ||
| 33 | |||
| 34 | me.getTime = Date.now || function getTime () { return new Date().getTime(); }; | ||
| 35 | |||
| 36 | me.extend = function (target, obj) { | ||
| 37 | for ( var i in obj ) { | ||
| 38 | target[i] = obj[i]; | ||
| 39 | } | ||
| 40 | }; | ||
| 41 | |||
| 42 | me.addEvent = function (el, type, fn, capture) { | ||
| 43 | el.addEventListener(type, fn, !!capture); | ||
| 44 | }; | ||
| 45 | |||
| 46 | me.removeEvent = function (el, type, fn, capture) { | ||
| 47 | el.removeEventListener(type, fn, !!capture); | ||
| 48 | }; | ||
| 49 | |||
| 50 | me.prefixPointerEvent = function (pointerEvent) { | ||
| 51 | return window.MSPointerEvent ? | ||
| 52 | 'MSPointer' + pointerEvent.charAt(7).toUpperCase() + pointerEvent.substr(8): | ||
| 53 | pointerEvent; | ||
| 54 | }; | ||
| 55 | |||
| 56 | me.momentum = function (current, start, time, lowerMargin, wrapperSize, deceleration) { | ||
| 57 | var distance = current - start, | ||
| 58 | speed = Math.abs(distance) / time, | ||
| 59 | destination, | ||
| 60 | duration; | ||
| 61 | |||
| 62 | deceleration = deceleration === undefined ? 0.0006 : deceleration; | ||
| 63 | |||
| 64 | destination = current + ( speed * speed ) / ( 2 * deceleration ) * ( distance < 0 ? -1 : 1 ); | ||
| 65 | duration = speed / deceleration; | ||
| 66 | |||
| 67 | if ( destination < lowerMargin ) { | ||
| 68 | destination = wrapperSize ? lowerMargin - ( wrapperSize / 2.5 * ( speed / 8 ) ) : lowerMargin; | ||
| 69 | distance = Math.abs(destination - current); | ||
| 70 | duration = distance / speed; | ||
| 71 | } else if ( destination > 0 ) { | ||
| 72 | destination = wrapperSize ? wrapperSize / 2.5 * ( speed / 8 ) : 0; | ||
| 73 | distance = Math.abs(current) + destination; | ||
| 74 | duration = distance / speed; | ||
| 75 | } | ||
| 76 | |||
| 77 | return { | ||
| 78 | destination: Math.round(destination), | ||
| 79 | duration: duration | ||
| 80 | }; | ||
| 81 | }; | ||
| 82 | |||
| 83 | var _transform = _prefixStyle('transform'); | ||
| 84 | |||
| 85 | me.extend(me, { | ||
| 86 | hasTransform: _transform !== false, | ||
| 87 | hasPerspective: _prefixStyle('perspective') in _elementStyle, | ||
| 88 | hasTouch: 'ontouchstart' in window, | ||
| 89 | hasPointer: !!(window.PointerEvent || window.MSPointerEvent), // IE10 is prefixed | ||
| 90 | hasTransition: _prefixStyle('transition') in _elementStyle | ||
| 91 | }); | ||
| 92 | |||
| 93 | /* | ||
| 94 | This should find all Android browsers lower than build 535.19 (both stock browser and webview) | ||
| 95 | - galaxy S2 is ok | ||
| 96 | - 2.3.6 : `AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1` | ||
| 97 | - 4.0.4 : `AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30` | ||
| 98 | - galaxy S3 is badAndroid (stock brower, webview) | ||
| 99 | `AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30` | ||
| 100 | - galaxy S4 is badAndroid (stock brower, webview) | ||
| 101 | `AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30` | ||
| 102 | - galaxy S5 is OK | ||
| 103 | `AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36 (Chrome/)` | ||
| 104 | - galaxy S6 is OK | ||
| 105 | `AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36 (Chrome/)` | ||
| 106 | */ | ||
| 107 | me.isBadAndroid = (function() { | ||
| 108 | var appVersion = window.navigator.appVersion; | ||
| 109 | // Android browser is not a chrome browser. | ||
| 110 | if (/Android/.test(appVersion) && !(/Chrome\/\d/.test(appVersion))) { | ||
| 111 | var safariVersion = appVersion.match(/Safari\/(\d+.\d)/); | ||
| 112 | if(safariVersion && typeof safariVersion === "object" && safariVersion.length >= 2) { | ||
| 113 | return parseFloat(safariVersion[1]) < 535.19; | ||
| 114 | } else { | ||
| 115 | return true; | ||
| 116 | } | ||
| 117 | } else { | ||
| 118 | return false; | ||
| 119 | } | ||
| 120 | })(); | ||
| 121 | |||
| 122 | me.extend(me.style = {}, { | ||
| 123 | transform: _transform, | ||
| 124 | transitionTimingFunction: _prefixStyle('transitionTimingFunction'), | ||
| 125 | transitionDuration: _prefixStyle('transitionDuration'), | ||
| 126 | transitionDelay: _prefixStyle('transitionDelay'), | ||
| 127 | transformOrigin: _prefixStyle('transformOrigin') | ||
| 128 | }); | ||
| 129 | |||
| 130 | me.hasClass = function (e, c) { | ||
| 131 | var re = new RegExp("(^|\\s)" + c + "(\\s|$)"); | ||
| 132 | return re.test(e.className); | ||
| 133 | }; | ||
| 134 | |||
| 135 | me.addClass = function (e, c) { | ||
| 136 | if ( me.hasClass(e, c) ) { | ||
| 137 | return; | ||
| 138 | } | ||
| 139 | |||
| 140 | var newclass = e.className.split(' '); | ||
| 141 | newclass.push(c); | ||
| 142 | e.className = newclass.join(' '); | ||
| 143 | }; | ||
| 144 | |||
| 145 | me.removeClass = function (e, c) { | ||
| 146 | if ( !me.hasClass(e, c) ) { | ||
| 147 | return; | ||
| 148 | } | ||
| 149 | |||
| 150 | var re = new RegExp("(^|\\s)" + c + "(\\s|$)", 'g'); | ||
| 151 | e.className = e.className.replace(re, ' '); | ||
| 152 | }; | ||
| 153 | |||
| 154 | me.offset = function (el) { | ||
| 155 | var left = -el.offsetLeft, | ||
| 156 | top = -el.offsetTop; | ||
| 157 | |||
| 158 | // jshint -W084 | ||
| 159 | while (el = el.offsetParent) { | ||
| 160 | left -= el.offsetLeft; | ||
| 161 | top -= el.offsetTop; | ||
| 162 | } | ||
| 163 | // jshint +W084 | ||
| 164 | |||
| 165 | return { | ||
| 166 | left: left, | ||
| 167 | top: top | ||
| 168 | }; | ||
| 169 | }; | ||
| 170 | |||
| 171 | me.preventDefaultException = function (el, exceptions) { | ||
| 172 | for ( var i in exceptions ) { | ||
| 173 | if ( exceptions[i].test(el[i]) ) { | ||
| 174 | return true; | ||
| 175 | } | ||
| 176 | } | ||
| 177 | |||
| 178 | return false; | ||
| 179 | }; | ||
| 180 | |||
| 181 | me.extend(me.eventType = {}, { | ||
| 182 | touchstart: 1, | ||
| 183 | touchmove: 1, | ||
| 184 | touchend: 1, | ||
| 185 | |||
| 186 | mousedown: 2, | ||
| 187 | mousemove: 2, | ||
| 188 | mouseup: 2, | ||
| 189 | |||
| 190 | pointerdown: 3, | ||
| 191 | pointermove: 3, | ||
| 192 | pointerup: 3, | ||
| 193 | |||
| 194 | MSPointerDown: 3, | ||
| 195 | MSPointerMove: 3, | ||
| 196 | MSPointerUp: 3 | ||
| 197 | }); | ||
| 198 | |||
| 199 | me.extend(me.ease = {}, { | ||
| 200 | quadratic: { | ||
| 201 | style: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)', | ||
| 202 | fn: function (k) { | ||
| 203 | return k * ( 2 - k ); | ||
| 204 | } | ||
| 205 | }, | ||
| 206 | circular: { | ||
| 207 | style: 'cubic-bezier(0.1, 0.57, 0.1, 1)', // Not properly "circular" but this looks better, it should be (0.075, 0.82, 0.165, 1) | ||
| 208 | fn: function (k) { | ||
| 209 | return Math.sqrt( 1 - ( --k * k ) ); | ||
| 210 | } | ||
| 211 | }, | ||
| 212 | back: { | ||
| 213 | style: 'cubic-bezier(0.175, 0.885, 0.32, 1.275)', | ||
| 214 | fn: function (k) { | ||
| 215 | var b = 4; | ||
| 216 | return ( k = k - 1 ) * k * ( ( b + 1 ) * k + b ) + 1; | ||
| 217 | } | ||
| 218 | }, | ||
| 219 | bounce: { | ||
| 220 | style: '', | ||
| 221 | fn: function (k) { | ||
| 222 | if ( ( k /= 1 ) < ( 1 / 2.75 ) ) { | ||
| 223 | return 7.5625 * k * k; | ||
| 224 | } else if ( k < ( 2 / 2.75 ) ) { | ||
| 225 | return 7.5625 * ( k -= ( 1.5 / 2.75 ) ) * k + 0.75; | ||
| 226 | } else if ( k < ( 2.5 / 2.75 ) ) { | ||
| 227 | return 7.5625 * ( k -= ( 2.25 / 2.75 ) ) * k + 0.9375; | ||
| 228 | } else { | ||
| 229 | return 7.5625 * ( k -= ( 2.625 / 2.75 ) ) * k + 0.984375; | ||
| 230 | } | ||
| 231 | } | ||
| 232 | }, | ||
| 233 | elastic: { | ||
| 234 | style: '', | ||
| 235 | fn: function (k) { | ||
| 236 | var f = 0.22, | ||
| 237 | e = 0.4; | ||
| 238 | |||
| 239 | if ( k === 0 ) { return 0; } | ||
| 240 | if ( k == 1 ) { return 1; } | ||
| 241 | |||
| 242 | return ( e * Math.pow( 2, - 10 * k ) * Math.sin( ( k - f / 4 ) * ( 2 * Math.PI ) / f ) + 1 ); | ||
| 243 | } | ||
| 244 | } | ||
| 245 | }); | ||
| 246 | |||
| 247 | me.tap = function (e, eventName) { | ||
| 248 | var ev = document.createEvent('Event'); | ||
| 249 | ev.initEvent(eventName, true, true); | ||
| 250 | ev.pageX = e.pageX; | ||
| 251 | ev.pageY = e.pageY; | ||
| 252 | e.target.dispatchEvent(ev); | ||
| 253 | }; | ||
| 254 | |||
| 255 | me.click = function (e) { | ||
| 256 | var target = e.target, | ||
| 257 | ev; | ||
| 258 | |||
| 259 | if ( !(/(SELECT|INPUT|TEXTAREA)/i).test(target.tagName) ) { | ||
| 260 | ev = document.createEvent('MouseEvents'); | ||
| 261 | ev.initMouseEvent('click', true, true, e.view, 1, | ||
| 262 | target.screenX, target.screenY, target.clientX, target.clientY, | ||
| 263 | e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, | ||
| 264 | 0, null); | ||
| 265 | |||
| 266 | ev._constructed = true; | ||
| 267 | target.dispatchEvent(ev); | ||
| 268 | } | ||
| 269 | }; | ||
| 270 | |||
| 271 | return me; | ||
| 272 | })(); | ||
| 273 | function IScroll (el, options) { | ||
| 274 | this.wrapper = typeof el == 'string' ? document.querySelector(el) : el; | ||
| 275 | this.scroller = this.wrapper.children[0]; | ||
| 276 | this.scrollerStyle = this.scroller.style; // cache style for better performance | ||
| 277 | |||
| 278 | this.options = { | ||
| 279 | |||
| 280 | // INSERT POINT: OPTIONS | ||
| 281 | disablePointer : !utils.hasPointer, | ||
| 282 | disableTouch : utils.hasPointer || !utils.hasTouch, | ||
| 283 | disableMouse : utils.hasPointer || utils.hasTouch, | ||
| 284 | startX: 0, | ||
| 285 | startY: 0, | ||
| 286 | scrollY: true, | ||
| 287 | directionLockThreshold: 5, | ||
| 288 | momentum: true, | ||
| 289 | |||
| 290 | bounce: true, | ||
| 291 | bounceTime: 600, | ||
| 292 | bounceEasing: '', | ||
| 293 | |||
| 294 | preventDefault: true, | ||
| 295 | preventDefaultException: { tagName: /^(INPUT|TEXTAREA|BUTTON|SELECT)$/ }, | ||
| 296 | |||
| 297 | HWCompositing: true, | ||
| 298 | useTransition: true, | ||
| 299 | useTransform: true, | ||
| 300 | bindToWrapper: typeof window.onmousedown === "undefined" | ||
| 301 | }; | ||
| 302 | |||
| 303 | for ( var i in options ) { | ||
| 304 | this.options[i] = options[i]; | ||
| 305 | } | ||
| 306 | |||
| 307 | // Normalize options | ||
| 308 | this.translateZ = this.options.HWCompositing && utils.hasPerspective ? ' translateZ(0)' : ''; | ||
| 309 | |||
| 310 | this.options.useTransition = utils.hasTransition && this.options.useTransition; | ||
| 311 | this.options.useTransform = utils.hasTransform && this.options.useTransform; | ||
| 312 | |||
| 313 | this.options.eventPassthrough = this.options.eventPassthrough === true ? 'vertical' : this.options.eventPassthrough; | ||
| 314 | this.options.preventDefault = !this.options.eventPassthrough && this.options.preventDefault; | ||
| 315 | |||
| 316 | // If you want eventPassthrough I have to lock one of the axes | ||
| 317 | this.options.scrollY = this.options.eventPassthrough == 'vertical' ? false : this.options.scrollY; | ||
| 318 | this.options.scrollX = this.options.eventPassthrough == 'horizontal' ? false : this.options.scrollX; | ||
| 319 | |||
| 320 | // With eventPassthrough we also need lockDirection mechanism | ||
| 321 | this.options.freeScroll = this.options.freeScroll && !this.options.eventPassthrough; | ||
| 322 | this.options.directionLockThreshold = this.options.eventPassthrough ? 0 : this.options.directionLockThreshold; | ||
| 323 | |||
| 324 | this.options.bounceEasing = typeof this.options.bounceEasing == 'string' ? utils.ease[this.options.bounceEasing] || utils.ease.circular : this.options.bounceEasing; | ||
| 325 | |||
| 326 | this.options.resizePolling = this.options.resizePolling === undefined ? 60 : this.options.resizePolling; | ||
| 327 | |||
| 328 | if ( this.options.tap === true ) { | ||
| 329 | this.options.tap = 'tap'; | ||
| 330 | } | ||
| 331 | |||
| 332 | // INSERT POINT: NORMALIZATION | ||
| 333 | |||
| 334 | // Some defaults | ||
| 335 | this.x = 0; | ||
| 336 | this.y = 0; | ||
| 337 | this.directionX = 0; | ||
| 338 | this.directionY = 0; | ||
| 339 | this._events = {}; | ||
| 340 | |||
| 341 | // INSERT POINT: DEFAULTS | ||
| 342 | |||
| 343 | this._init(); | ||
| 344 | this.refresh(); | ||
| 345 | |||
| 346 | this.scrollTo(this.options.startX, this.options.startY); | ||
| 347 | this.enable(); | ||
| 348 | } | ||
| 349 | |||
| 350 | IScroll.prototype = { | ||
| 351 | version: '5.2.0', | ||
| 352 | |||
| 353 | _init: function () { | ||
| 354 | this._initEvents(); | ||
| 355 | |||
| 356 | // INSERT POINT: _init | ||
| 357 | |||
| 358 | }, | ||
| 359 | |||
| 360 | destroy: function () { | ||
| 361 | this._initEvents(true); | ||
| 362 | clearTimeout(this.resizeTimeout); | ||
| 363 | this.resizeTimeout = null; | ||
| 364 | this._execEvent('destroy'); | ||
| 365 | }, | ||
| 366 | |||
| 367 | _transitionEnd: function (e) { | ||
| 368 | if ( e.target != this.scroller || !this.isInTransition ) { | ||
| 369 | return; | ||
| 370 | } | ||
| 371 | |||
| 372 | this._transitionTime(); | ||
| 373 | if ( !this.resetPosition(this.options.bounceTime) ) { | ||
| 374 | this.isInTransition = false; | ||
| 375 | this._execEvent('scrollEnd'); | ||
| 376 | } | ||
| 377 | }, | ||
| 378 | |||
| 379 | _start: function (e) { | ||
| 380 | // React to left mouse button only | ||
| 381 | if ( utils.eventType[e.type] != 1 ) { | ||
| 382 | // for button property | ||
| 383 | // http://unixpapa.com/js/mouse.html | ||
| 384 | var button; | ||
| 385 | if (!e.which) { | ||
| 386 | /* IE case */ | ||
| 387 | button = (e.button < 2) ? 0 : | ||
| 388 | ((e.button == 4) ? 1 : 2); | ||
| 389 | } else { | ||
| 390 | /* All others */ | ||
| 391 | button = e.button; | ||
| 392 | } | ||
| 393 | if ( button !== 0 ) { | ||
| 394 | return; | ||
| 395 | } | ||
| 396 | } | ||
| 397 | |||
| 398 | if ( !this.enabled || (this.initiated && utils.eventType[e.type] !== this.initiated) ) { | ||
| 399 | return; | ||
| 400 | } | ||
| 401 | |||
| 402 | if ( this.options.preventDefault && !utils.isBadAndroid && !utils.preventDefaultException(e.target, this.options.preventDefaultException) ) { | ||
| 403 | e.preventDefault(); | ||
| 404 | } | ||
| 405 | |||
| 406 | var point = e.touches ? e.touches[0] : e, | ||
| 407 | pos; | ||
| 408 | |||
| 409 | this.initiated = utils.eventType[e.type]; | ||
| 410 | this.moved = false; | ||
| 411 | this.distX = 0; | ||
| 412 | this.distY = 0; | ||
| 413 | this.directionX = 0; | ||
| 414 | this.directionY = 0; | ||
| 415 | this.directionLocked = 0; | ||
| 416 | |||
| 417 | this.startTime = utils.getTime(); | ||
| 418 | |||
| 419 | if ( this.options.useTransition && this.isInTransition ) { | ||
| 420 | this._transitionTime(); | ||
| 421 | this.isInTransition = false; | ||
| 422 | pos = this.getComputedPosition(); | ||
| 423 | this._translate(Math.round(pos.x), Math.round(pos.y)); | ||
| 424 | this._execEvent('scrollEnd'); | ||
| 425 | } else if ( !this.options.useTransition && this.isAnimating ) { | ||
| 426 | this.isAnimating = false; | ||
| 427 | this._execEvent('scrollEnd'); | ||
| 428 | } | ||
| 429 | |||
| 430 | this.startX = this.x; | ||
| 431 | this.startY = this.y; | ||
| 432 | this.absStartX = this.x; | ||
| 433 | this.absStartY = this.y; | ||
| 434 | this.pointX = point.pageX; | ||
| 435 | this.pointY = point.pageY; | ||
| 436 | |||
| 437 | this._execEvent('beforeScrollStart'); | ||
| 438 | }, | ||
| 439 | |||
| 440 | _move: function (e) { | ||
| 441 | if ( !this.enabled || utils.eventType[e.type] !== this.initiated ) { | ||
| 442 | return; | ||
| 443 | } | ||
| 444 | |||
| 445 | if ( this.options.preventDefault ) { // increases performance on Android? TODO: check! | ||
| 446 | e.preventDefault(); | ||
| 447 | } | ||
| 448 | |||
| 449 | var point = e.touches ? e.touches[0] : e, | ||
| 450 | deltaX = point.pageX - this.pointX, | ||
| 451 | deltaY = point.pageY - this.pointY, | ||
| 452 | timestamp = utils.getTime(), | ||
| 453 | newX, newY, | ||
| 454 | absDistX, absDistY; | ||
| 455 | |||
| 456 | this.pointX = point.pageX; | ||
| 457 | this.pointY = point.pageY; | ||
| 458 | |||
| 459 | this.distX += deltaX; | ||
| 460 | this.distY += deltaY; | ||
| 461 | absDistX = Math.abs(this.distX); | ||
| 462 | absDistY = Math.abs(this.distY); | ||
| 463 | |||
| 464 | // We need to move at least 10 pixels for the scrolling to initiate | ||
| 465 | if ( timestamp - this.endTime > 300 && (absDistX < 10 && absDistY < 10) ) { | ||
| 466 | return; | ||
| 467 | } | ||
| 468 | |||
| 469 | // If you are scrolling in one direction lock the other | ||
| 470 | if ( !this.directionLocked && !this.options.freeScroll ) { | ||
| 471 | if ( absDistX > absDistY + this.options.directionLockThreshold ) { | ||
| 472 | this.directionLocked = 'h'; // lock horizontally | ||
| 473 | } else if ( absDistY >= absDistX + this.options.directionLockThreshold ) { | ||
| 474 | this.directionLocked = 'v'; // lock vertically | ||
| 475 | } else { | ||
| 476 | this.directionLocked = 'n'; // no lock | ||
| 477 | } | ||
| 478 | } | ||
| 479 | |||
| 480 | if ( this.directionLocked == 'h' ) { | ||
| 481 | if ( this.options.eventPassthrough == 'vertical' ) { | ||
| 482 | e.preventDefault(); | ||
| 483 | } else if ( this.options.eventPassthrough == 'horizontal' ) { | ||
| 484 | this.initiated = false; | ||
| 485 | return; | ||
| 486 | } | ||
| 487 | |||
| 488 | deltaY = 0; | ||
| 489 | } else if ( this.directionLocked == 'v' ) { | ||
| 490 | if ( this.options.eventPassthrough == 'horizontal' ) { | ||
| 491 | e.preventDefault(); | ||
| 492 | } else if ( this.options.eventPassthrough == 'vertical' ) { | ||
| 493 | this.initiated = false; | ||
| 494 | return; | ||
| 495 | } | ||
| 496 | |||
| 497 | deltaX = 0; | ||
| 498 | } | ||
| 499 | |||
| 500 | deltaX = this.hasHorizontalScroll ? deltaX : 0; | ||
| 501 | deltaY = this.hasVerticalScroll ? deltaY : 0; | ||
| 502 | |||
| 503 | newX = this.x + deltaX; | ||
| 504 | newY = this.y + deltaY; | ||
| 505 | |||
| 506 | // Slow down if outside of the boundaries | ||
| 507 | if ( newX > 0 || newX < this.maxScrollX ) { | ||
| 508 | newX = this.options.bounce ? this.x + deltaX / 3 : newX > 0 ? 0 : this.maxScrollX; | ||
| 509 | } | ||
| 510 | if ( newY > 0 || newY < this.maxScrollY ) { | ||
| 511 | newY = this.options.bounce ? this.y + deltaY / 3 : newY > 0 ? 0 : this.maxScrollY; | ||
| 512 | } | ||
| 513 | |||
| 514 | this.directionX = deltaX > 0 ? -1 : deltaX < 0 ? 1 : 0; | ||
| 515 | this.directionY = deltaY > 0 ? -1 : deltaY < 0 ? 1 : 0; | ||
| 516 | |||
| 517 | if ( !this.moved ) { | ||
| 518 | this._execEvent('scrollStart'); | ||
| 519 | } | ||
| 520 | |||
| 521 | this.moved = true; | ||
| 522 | |||
| 523 | this._translate(newX, newY); | ||
| 524 | |||
| 525 | /* REPLACE START: _move */ | ||
| 526 | |||
| 527 | if ( timestamp - this.startTime > 300 ) { | ||
| 528 | this.startTime = timestamp; | ||
| 529 | this.startX = this.x; | ||
| 530 | this.startY = this.y; | ||
| 531 | } | ||
| 532 | |||
| 533 | /* REPLACE END: _move */ | ||
| 534 | |||
| 535 | }, | ||
| 536 | |||
| 537 | _end: function (e) { | ||
| 538 | if ( !this.enabled || utils.eventType[e.type] !== this.initiated ) { | ||
| 539 | return; | ||
| 540 | } | ||
| 541 | |||
| 542 | if ( this.options.preventDefault && !utils.preventDefaultException(e.target, this.options.preventDefaultException) ) { | ||
| 543 | e.preventDefault(); | ||
| 544 | } | ||
| 545 | |||
| 546 | var point = e.changedTouches ? e.changedTouches[0] : e, | ||
| 547 | momentumX, | ||
| 548 | momentumY, | ||
| 549 | duration = utils.getTime() - this.startTime, | ||
| 550 | newX = Math.round(this.x), | ||
| 551 | newY = Math.round(this.y), | ||
| 552 | distanceX = Math.abs(newX - this.startX), | ||
| 553 | distanceY = Math.abs(newY - this.startY), | ||
| 554 | time = 0, | ||
| 555 | easing = ''; | ||
| 556 | |||
| 557 | this.isInTransition = 0; | ||
| 558 | this.initiated = 0; | ||
| 559 | this.endTime = utils.getTime(); | ||
| 560 | |||
| 561 | // reset if we are outside of the boundaries | ||
| 562 | if ( this.resetPosition(this.options.bounceTime) ) { | ||
| 563 | return; | ||
| 564 | } | ||
| 565 | |||
| 566 | this.scrollTo(newX, newY); // ensures that the last position is rounded | ||
| 567 | |||
| 568 | // we scrolled less than 10 pixels | ||
| 569 | if ( !this.moved ) { | ||
| 570 | if ( this.options.tap ) { | ||
| 571 | utils.tap(e, this.options.tap); | ||
| 572 | } | ||
| 573 | |||
| 574 | if ( this.options.click ) { | ||
| 575 | utils.click(e); | ||
| 576 | } | ||
| 577 | |||
| 578 | this._execEvent('scrollCancel'); | ||
| 579 | return; | ||
| 580 | } | ||
| 581 | |||
| 582 | if ( this._events.flick && duration < 200 && distanceX < 100 && distanceY < 100 ) { | ||
| 583 | this._execEvent('flick'); | ||
| 584 | return; | ||
| 585 | } | ||
| 586 | |||
| 587 | // start momentum animation if needed | ||
| 588 | if ( this.options.momentum && duration < 300 ) { | ||
| 589 | momentumX = this.hasHorizontalScroll ? utils.momentum(this.x, this.startX, duration, this.maxScrollX, this.options.bounce ? this.wrapperWidth : 0, this.options.deceleration) : { destination: newX, duration: 0 }; | ||
| 590 | momentumY = this.hasVerticalScroll ? utils.momentum(this.y, this.startY, duration, this.maxScrollY, this.options.bounce ? this.wrapperHeight : 0, this.options.deceleration) : { destination: newY, duration: 0 }; | ||
| 591 | newX = momentumX.destination; | ||
| 592 | newY = momentumY.destination; | ||
| 593 | time = Math.max(momentumX.duration, momentumY.duration); | ||
| 594 | this.isInTransition = 1; | ||
| 595 | } | ||
| 596 | |||
| 597 | // INSERT POINT: _end | ||
| 598 | |||
| 599 | if ( newX != this.x || newY != this.y ) { | ||
| 600 | // change easing function when scroller goes out of the boundaries | ||
| 601 | if ( newX > 0 || newX < this.maxScrollX || newY > 0 || newY < this.maxScrollY ) { | ||
| 602 | easing = utils.ease.quadratic; | ||
| 603 | } | ||
| 604 | |||
| 605 | this.scrollTo(newX, newY, time, easing); | ||
| 606 | return; | ||
| 607 | } | ||
| 608 | |||
| 609 | this._execEvent('scrollEnd'); | ||
| 610 | }, | ||
| 611 | |||
| 612 | _resize: function () { | ||
| 613 | var that = this; | ||
| 614 | |||
| 615 | clearTimeout(this.resizeTimeout); | ||
| 616 | |||
| 617 | this.resizeTimeout = setTimeout(function () { | ||
| 618 | that.refresh(); | ||
| 619 | }, this.options.resizePolling); | ||
| 620 | }, | ||
| 621 | |||
| 622 | resetPosition: function (time) { | ||
| 623 | var x = this.x, | ||
| 624 | y = this.y; | ||
| 625 | |||
| 626 | time = time || 0; | ||
| 627 | |||
| 628 | if ( !this.hasHorizontalScroll || this.x > 0 ) { | ||
| 629 | x = 0; | ||
| 630 | } else if ( this.x < this.maxScrollX ) { | ||
| 631 | x = this.maxScrollX; | ||
| 632 | } | ||
| 633 | |||
| 634 | if ( !this.hasVerticalScroll || this.y > 0 ) { | ||
| 635 | y = 0; | ||
| 636 | } else if ( this.y < this.maxScrollY ) { | ||
| 637 | y = this.maxScrollY; | ||
| 638 | } | ||
| 639 | |||
| 640 | if ( x == this.x && y == this.y ) { | ||
| 641 | return false; | ||
| 642 | } | ||
| 643 | |||
| 644 | this.scrollTo(x, y, time, this.options.bounceEasing); | ||
| 645 | |||
| 646 | return true; | ||
| 647 | }, | ||
| 648 | |||
| 649 | disable: function () { | ||
| 650 | this.enabled = false; | ||
| 651 | }, | ||
| 652 | |||
| 653 | enable: function () { | ||
| 654 | this.enabled = true; | ||
| 655 | }, | ||
| 656 | |||
| 657 | refresh: function () { | ||
| 658 | var rf = this.wrapper.offsetHeight; // Force reflow | ||
| 659 | |||
| 660 | this.wrapperWidth = this.wrapper.clientWidth; | ||
| 661 | this.wrapperHeight = this.wrapper.clientHeight; | ||
| 662 | |||
| 663 | /* REPLACE START: refresh */ | ||
| 664 | |||
| 665 | this.scrollerWidth = this.scroller.offsetWidth; | ||
| 666 | this.scrollerHeight = this.scroller.offsetHeight; | ||
| 667 | |||
| 668 | this.maxScrollX = this.wrapperWidth - this.scrollerWidth; | ||
| 669 | this.maxScrollY = this.wrapperHeight - this.scrollerHeight; | ||
| 670 | |||
| 671 | /* REPLACE END: refresh */ | ||
| 672 | |||
| 673 | this.hasHorizontalScroll = this.options.scrollX && this.maxScrollX < 0; | ||
| 674 | this.hasVerticalScroll = this.options.scrollY && this.maxScrollY < 0; | ||
| 675 | |||
| 676 | if ( !this.hasHorizontalScroll ) { | ||
| 677 | this.maxScrollX = 0; | ||
| 678 | this.scrollerWidth = this.wrapperWidth; | ||
| 679 | } | ||
| 680 | |||
| 681 | if ( !this.hasVerticalScroll ) { | ||
| 682 | this.maxScrollY = 0; | ||
| 683 | this.scrollerHeight = this.wrapperHeight; | ||
| 684 | } | ||
| 685 | |||
| 686 | this.endTime = 0; | ||
| 687 | this.directionX = 0; | ||
| 688 | this.directionY = 0; | ||
| 689 | |||
| 690 | this.wrapperOffset = utils.offset(this.wrapper); | ||
| 691 | |||
| 692 | this._execEvent('refresh'); | ||
| 693 | |||
| 694 | this.resetPosition(); | ||
| 695 | |||
| 696 | // INSERT POINT: _refresh | ||
| 697 | |||
| 698 | }, | ||
| 699 | |||
| 700 | on: function (type, fn) { | ||
| 701 | if ( !this._events[type] ) { | ||
| 702 | this._events[type] = []; | ||
| 703 | } | ||
| 704 | |||
| 705 | this._events[type].push(fn); | ||
| 706 | }, | ||
| 707 | |||
| 708 | off: function (type, fn) { | ||
| 709 | if ( !this._events[type] ) { | ||
| 710 | return; | ||
| 711 | } | ||
| 712 | |||
| 713 | var index = this._events[type].indexOf(fn); | ||
| 714 | |||
| 715 | if ( index > -1 ) { | ||
| 716 | this._events[type].splice(index, 1); | ||
| 717 | } | ||
| 718 | }, | ||
| 719 | |||
| 720 | _execEvent: function (type) { | ||
| 721 | if ( !this._events[type] ) { | ||
| 722 | return; | ||
| 723 | } | ||
| 724 | |||
| 725 | var i = 0, | ||
| 726 | l = this._events[type].length; | ||
| 727 | |||
| 728 | if ( !l ) { | ||
| 729 | return; | ||
| 730 | } | ||
| 731 | |||
| 732 | for ( ; i < l; i++ ) { | ||
| 733 | this._events[type][i].apply(this, [].slice.call(arguments, 1)); | ||
| 734 | } | ||
| 735 | }, | ||
| 736 | |||
| 737 | scrollBy: function (x, y, time, easing) { | ||
| 738 | x = this.x + x; | ||
| 739 | y = this.y + y; | ||
| 740 | time = time || 0; | ||
| 741 | |||
| 742 | this.scrollTo(x, y, time, easing); | ||
| 743 | }, | ||
| 744 | |||
| 745 | scrollTo: function (x, y, time, easing) { | ||
| 746 | easing = easing || utils.ease.circular; | ||
| 747 | |||
| 748 | this.isInTransition = this.options.useTransition && time > 0; | ||
| 749 | var transitionType = this.options.useTransition && easing.style; | ||
| 750 | if ( !time || transitionType ) { | ||
| 751 | if(transitionType) { | ||
| 752 | this._transitionTimingFunction(easing.style); | ||
| 753 | this._transitionTime(time); | ||
| 754 | } | ||
| 755 | this._translate(x, y); | ||
| 756 | } else { | ||
| 757 | this._animate(x, y, time, easing.fn); | ||
| 758 | } | ||
| 759 | }, | ||
| 760 | |||
| 761 | scrollToElement: function (el, time, offsetX, offsetY, easing) { | ||
| 762 | el = el.nodeType ? el : this.scroller.querySelector(el); | ||
| 763 | |||
| 764 | if ( !el ) { | ||
| 765 | return; | ||
| 766 | } | ||
| 767 | |||
| 768 | var pos = utils.offset(el); | ||
| 769 | |||
| 770 | pos.left -= this.wrapperOffset.left; | ||
| 771 | pos.top -= this.wrapperOffset.top; | ||
| 772 | |||
| 773 | // if offsetX/Y are true we center the element to the screen | ||
| 774 | if ( offsetX === true ) { | ||
| 775 | offsetX = Math.round(el.offsetWidth / 2 - this.wrapper.offsetWidth / 2); | ||
| 776 | } | ||
| 777 | if ( offsetY === true ) { | ||
| 778 | offsetY = Math.round(el.offsetHeight / 2 - this.wrapper.offsetHeight / 2); | ||
| 779 | } | ||
| 780 | |||
| 781 | pos.left -= offsetX || 0; | ||
| 782 | pos.top -= offsetY || 0; | ||
| 783 | |||
| 784 | pos.left = pos.left > 0 ? 0 : pos.left < this.maxScrollX ? this.maxScrollX : pos.left; | ||
| 785 | pos.top = pos.top > 0 ? 0 : pos.top < this.maxScrollY ? this.maxScrollY : pos.top; | ||
| 786 | |||
| 787 | time = time === undefined || time === null || time === 'auto' ? Math.max(Math.abs(this.x-pos.left), Math.abs(this.y-pos.top)) : time; | ||
| 788 | |||
| 789 | this.scrollTo(pos.left, pos.top, time, easing); | ||
| 790 | }, | ||
| 791 | |||
| 792 | _transitionTime: function (time) { | ||
| 793 | time = time || 0; | ||
| 794 | |||
| 795 | var durationProp = utils.style.transitionDuration; | ||
| 796 | this.scrollerStyle[durationProp] = time + 'ms'; | ||
| 797 | |||
| 798 | if ( !time && utils.isBadAndroid ) { | ||
| 799 | this.scrollerStyle[durationProp] = '0.0001ms'; | ||
| 800 | // remove 0.0001ms | ||
| 801 | var self = this; | ||
| 802 | rAF(function() { | ||
| 803 | if(self.scrollerStyle[durationProp] === '0.0001ms') { | ||
| 804 | self.scrollerStyle[durationProp] = '0s'; | ||
| 805 | } | ||
| 806 | }); | ||
| 807 | } | ||
| 808 | |||
| 809 | // INSERT POINT: _transitionTime | ||
| 810 | |||
| 811 | }, | ||
| 812 | |||
| 813 | _transitionTimingFunction: function (easing) { | ||
| 814 | this.scrollerStyle[utils.style.transitionTimingFunction] = easing; | ||
| 815 | |||
| 816 | // INSERT POINT: _transitionTimingFunction | ||
| 817 | |||
| 818 | }, | ||
| 819 | |||
| 820 | _translate: function (x, y) { | ||
| 821 | if ( this.options.useTransform ) { | ||
| 822 | |||
| 823 | /* REPLACE START: _translate */ | ||
| 824 | |||
| 825 | this.scrollerStyle[utils.style.transform] = 'translate(' + x + 'px,' + y + 'px)' + this.translateZ; | ||
| 826 | |||
| 827 | /* REPLACE END: _translate */ | ||
| 828 | |||
| 829 | } else { | ||
| 830 | x = Math.round(x); | ||
| 831 | y = Math.round(y); | ||
| 832 | this.scrollerStyle.left = x + 'px'; | ||
| 833 | this.scrollerStyle.top = y + 'px'; | ||
| 834 | } | ||
| 835 | |||
| 836 | this.x = x; | ||
| 837 | this.y = y; | ||
| 838 | |||
| 839 | // INSERT POINT: _translate | ||
| 840 | |||
| 841 | }, | ||
| 842 | |||
| 843 | _initEvents: function (remove) { | ||
| 844 | var eventType = remove ? utils.removeEvent : utils.addEvent, | ||
| 845 | target = this.options.bindToWrapper ? this.wrapper : window; | ||
| 846 | |||
| 847 | eventType(window, 'orientationchange', this); | ||
| 848 | eventType(window, 'resize', this); | ||
| 849 | |||
| 850 | if ( this.options.click ) { | ||
| 851 | eventType(this.wrapper, 'click', this, true); | ||
| 852 | } | ||
| 853 | |||
| 854 | if ( !this.options.disableMouse ) { | ||
| 855 | eventType(this.wrapper, 'mousedown', this); | ||
| 856 | eventType(target, 'mousemove', this); | ||
| 857 | eventType(target, 'mousecancel', this); | ||
| 858 | eventType(target, 'mouseup', this); | ||
| 859 | } | ||
| 860 | |||
| 861 | if ( utils.hasPointer && !this.options.disablePointer ) { | ||
| 862 | eventType(this.wrapper, utils.prefixPointerEvent('pointerdown'), this); | ||
| 863 | eventType(target, utils.prefixPointerEvent('pointermove'), this); | ||
| 864 | eventType(target, utils.prefixPointerEvent('pointercancel'), this); | ||
| 865 | eventType(target, utils.prefixPointerEvent('pointerup'), this); | ||
| 866 | } | ||
| 867 | |||
| 868 | if ( utils.hasTouch && !this.options.disableTouch ) { | ||
| 869 | eventType(this.wrapper, 'touchstart', this); | ||
| 870 | eventType(target, 'touchmove', this); | ||
| 871 | eventType(target, 'touchcancel', this); | ||
| 872 | eventType(target, 'touchend', this); | ||
| 873 | } | ||
| 874 | |||
| 875 | eventType(this.scroller, 'transitionend', this); | ||
| 876 | eventType(this.scroller, 'webkitTransitionEnd', this); | ||
| 877 | eventType(this.scroller, 'oTransitionEnd', this); | ||
| 878 | eventType(this.scroller, 'MSTransitionEnd', this); | ||
| 879 | }, | ||
| 880 | |||
| 881 | getComputedPosition: function () { | ||
| 882 | var matrix = window.getComputedStyle(this.scroller, null), | ||
| 883 | x, y; | ||
| 884 | |||
| 885 | if ( this.options.useTransform ) { | ||
| 886 | matrix = matrix[utils.style.transform].split(')')[0].split(', '); | ||
| 887 | x = +(matrix[12] || matrix[4]); | ||
| 888 | y = +(matrix[13] || matrix[5]); | ||
| 889 | } else { | ||
| 890 | x = +matrix.left.replace(/[^-\d.]/g, ''); | ||
| 891 | y = +matrix.top.replace(/[^-\d.]/g, ''); | ||
| 892 | } | ||
| 893 | |||
| 894 | return { x: x, y: y }; | ||
| 895 | }, | ||
| 896 | _animate: function (destX, destY, duration, easingFn) { | ||
| 897 | var that = this, | ||
| 898 | startX = this.x, | ||
| 899 | startY = this.y, | ||
| 900 | startTime = utils.getTime(), | ||
| 901 | destTime = startTime + duration; | ||
| 902 | |||
| 903 | function step () { | ||
| 904 | var now = utils.getTime(), | ||
| 905 | newX, newY, | ||
| 906 | easing; | ||
| 907 | |||
| 908 | if ( now >= destTime ) { | ||
| 909 | that.isAnimating = false; | ||
| 910 | that._translate(destX, destY); | ||
| 911 | |||
| 912 | if ( !that.resetPosition(that.options.bounceTime) ) { | ||
| 913 | that._execEvent('scrollEnd'); | ||
| 914 | } | ||
| 915 | |||
| 916 | return; | ||
| 917 | } | ||
| 918 | |||
| 919 | now = ( now - startTime ) / duration; | ||
| 920 | easing = easingFn(now); | ||
| 921 | newX = ( destX - startX ) * easing + startX; | ||
| 922 | newY = ( destY - startY ) * easing + startY; | ||
| 923 | that._translate(newX, newY); | ||
| 924 | |||
| 925 | if ( that.isAnimating ) { | ||
| 926 | rAF(step); | ||
| 927 | } | ||
| 928 | } | ||
| 929 | |||
| 930 | this.isAnimating = true; | ||
| 931 | step(); | ||
| 932 | }, | ||
| 933 | handleEvent: function (e) { | ||
| 934 | switch ( e.type ) { | ||
| 935 | case 'touchstart': | ||
| 936 | case 'pointerdown': | ||
| 937 | case 'MSPointerDown': | ||
| 938 | case 'mousedown': | ||
| 939 | this._start(e); | ||
| 940 | break; | ||
| 941 | case 'touchmove': | ||
| 942 | case 'pointermove': | ||
| 943 | case 'MSPointerMove': | ||
| 944 | case 'mousemove': | ||
| 945 | this._move(e); | ||
| 946 | break; | ||
| 947 | case 'touchend': | ||
| 948 | case 'pointerup': | ||
| 949 | case 'MSPointerUp': | ||
| 950 | case 'mouseup': | ||
| 951 | case 'touchcancel': | ||
| 952 | case 'pointercancel': | ||
| 953 | case 'MSPointerCancel': | ||
| 954 | case 'mousecancel': | ||
| 955 | this._end(e); | ||
| 956 | break; | ||
| 957 | case 'orientationchange': | ||
| 958 | case 'resize': | ||
| 959 | this._resize(); | ||
| 960 | break; | ||
| 961 | case 'transitionend': | ||
| 962 | case 'webkitTransitionEnd': | ||
| 963 | case 'oTransitionEnd': | ||
| 964 | case 'MSTransitionEnd': | ||
| 965 | this._transitionEnd(e); | ||
| 966 | break; | ||
| 967 | case 'wheel': | ||
| 968 | case 'DOMMouseScroll': | ||
| 969 | case 'mousewheel': | ||
| 970 | this._wheel(e); | ||
| 971 | break; | ||
| 972 | case 'keydown': | ||
| 973 | this._key(e); | ||
| 974 | break; | ||
| 975 | case 'click': | ||
| 976 | if ( this.enabled && !e._constructed ) { | ||
| 977 | e.preventDefault(); | ||
| 978 | e.stopPropagation(); | ||
| 979 | } | ||
| 980 | break; | ||
| 981 | } | ||
| 982 | } | ||
| 983 | }; | ||
| 984 | IScroll.utils = utils; | ||
| 985 | |||
| 986 | if ( typeof module != 'undefined' && module.exports ) { | ||
| 987 | module.exports = IScroll; | ||
| 988 | } else if ( typeof define == 'function' && define.amd ) { | ||
| 989 | define( function () { return IScroll; } ); | ||
| 990 | } else { | ||
| 991 | window.IScroll = IScroll; | ||
| 992 | } | ||
| 993 | |||
| 994 | })(window, document, Math); |
staticLib/iscroll/iscroll-probe.js
deleted
100644 → 0
| 1 | /*! iScroll v5.2.0 ~ (c) 2008-2016 Matteo Spinelli ~ http://cubiq.org/license */ | ||
| 2 | (function (window, document, Math) { | ||
| 3 | var rAF = window.requestAnimationFrame || | ||
| 4 | window.webkitRequestAnimationFrame || | ||
| 5 | window.mozRequestAnimationFrame || | ||
| 6 | window.oRequestAnimationFrame || | ||
| 7 | window.msRequestAnimationFrame || | ||
| 8 | function (callback) { window.setTimeout(callback, 1000 / 60); }; | ||
| 9 | |||
| 10 | var utils = (function () { | ||
| 11 | var me = {}; | ||
| 12 | |||
| 13 | var _elementStyle = document.createElement('div').style; | ||
| 14 | var _vendor = (function () { | ||
| 15 | var vendors = ['t', 'webkitT', 'MozT', 'msT', 'OT'], | ||
| 16 | transform, | ||
| 17 | i = 0, | ||
| 18 | l = vendors.length; | ||
| 19 | |||
| 20 | for ( ; i < l; i++ ) { | ||
| 21 | transform = vendors[i] + 'ransform'; | ||
| 22 | if ( transform in _elementStyle ) return vendors[i].substr(0, vendors[i].length-1); | ||
| 23 | } | ||
| 24 | |||
| 25 | return false; | ||
| 26 | })(); | ||
| 27 | |||
| 28 | function _prefixStyle (style) { | ||
| 29 | if ( _vendor === false ) return false; | ||
| 30 | if ( _vendor === '' ) return style; | ||
| 31 | return _vendor + style.charAt(0).toUpperCase() + style.substr(1); | ||
| 32 | } | ||
| 33 | |||
| 34 | me.getTime = Date.now || function getTime () { return new Date().getTime(); }; | ||
| 35 | |||
| 36 | me.extend = function (target, obj) { | ||
| 37 | for ( var i in obj ) { | ||
| 38 | target[i] = obj[i]; | ||
| 39 | } | ||
| 40 | }; | ||
| 41 | |||
| 42 | me.addEvent = function (el, type, fn, capture) { | ||
| 43 | el.addEventListener(type, fn, !!capture); | ||
| 44 | }; | ||
| 45 | |||
| 46 | me.removeEvent = function (el, type, fn, capture) { | ||
| 47 | el.removeEventListener(type, fn, !!capture); | ||
| 48 | }; | ||
| 49 | |||
| 50 | me.prefixPointerEvent = function (pointerEvent) { | ||
| 51 | return window.MSPointerEvent ? | ||
| 52 | 'MSPointer' + pointerEvent.charAt(7).toUpperCase() + pointerEvent.substr(8): | ||
| 53 | pointerEvent; | ||
| 54 | }; | ||
| 55 | |||
| 56 | me.momentum = function (current, start, time, lowerMargin, wrapperSize, deceleration) { | ||
| 57 | var distance = current - start, | ||
| 58 | speed = Math.abs(distance) / time, | ||
| 59 | destination, | ||
| 60 | duration; | ||
| 61 | |||
| 62 | deceleration = deceleration === undefined ? 0.0006 : deceleration; | ||
| 63 | |||
| 64 | destination = current + ( speed * speed ) / ( 2 * deceleration ) * ( distance < 0 ? -1 : 1 ); | ||
| 65 | duration = speed / deceleration; | ||
| 66 | |||
| 67 | if ( destination < lowerMargin ) { | ||
| 68 | destination = wrapperSize ? lowerMargin - ( wrapperSize / 2.5 * ( speed / 8 ) ) : lowerMargin; | ||
| 69 | distance = Math.abs(destination - current); | ||
| 70 | duration = distance / speed; | ||
| 71 | } else if ( destination > 0 ) { | ||
| 72 | destination = wrapperSize ? wrapperSize / 2.5 * ( speed / 8 ) : 0; | ||
| 73 | distance = Math.abs(current) + destination; | ||
| 74 | duration = distance / speed; | ||
| 75 | } | ||
| 76 | |||
| 77 | return { | ||
| 78 | destination: Math.round(destination), | ||
| 79 | duration: duration | ||
| 80 | }; | ||
| 81 | }; | ||
| 82 | |||
| 83 | var _transform = _prefixStyle('transform'); | ||
| 84 | |||
| 85 | me.extend(me, { | ||
| 86 | hasTransform: _transform !== false, | ||
| 87 | hasPerspective: _prefixStyle('perspective') in _elementStyle, | ||
| 88 | hasTouch: 'ontouchstart' in window, | ||
| 89 | hasPointer: !!(window.PointerEvent || window.MSPointerEvent), // IE10 is prefixed | ||
| 90 | hasTransition: _prefixStyle('transition') in _elementStyle | ||
| 91 | }); | ||
| 92 | |||
| 93 | /* | ||
| 94 | This should find all Android browsers lower than build 535.19 (both stock browser and webview) | ||
| 95 | - galaxy S2 is ok | ||
| 96 | - 2.3.6 : `AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1` | ||
| 97 | - 4.0.4 : `AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30` | ||
| 98 | - galaxy S3 is badAndroid (stock brower, webview) | ||
| 99 | `AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30` | ||
| 100 | - galaxy S4 is badAndroid (stock brower, webview) | ||
| 101 | `AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30` | ||
| 102 | - galaxy S5 is OK | ||
| 103 | `AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36 (Chrome/)` | ||
| 104 | - galaxy S6 is OK | ||
| 105 | `AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36 (Chrome/)` | ||
| 106 | */ | ||
| 107 | me.isBadAndroid = (function() { | ||
| 108 | var appVersion = window.navigator.appVersion; | ||
| 109 | // Android browser is not a chrome browser. | ||
| 110 | if (/Android/.test(appVersion) && !(/Chrome\/\d/.test(appVersion))) { | ||
| 111 | var safariVersion = appVersion.match(/Safari\/(\d+.\d)/); | ||
| 112 | if(safariVersion && typeof safariVersion === "object" && safariVersion.length >= 2) { | ||
| 113 | return parseFloat(safariVersion[1]) < 535.19; | ||
| 114 | } else { | ||
| 115 | return true; | ||
| 116 | } | ||
| 117 | } else { | ||
| 118 | return false; | ||
| 119 | } | ||
| 120 | })(); | ||
| 121 | |||
| 122 | me.extend(me.style = {}, { | ||
| 123 | transform: _transform, | ||
| 124 | transitionTimingFunction: _prefixStyle('transitionTimingFunction'), | ||
| 125 | transitionDuration: _prefixStyle('transitionDuration'), | ||
| 126 | transitionDelay: _prefixStyle('transitionDelay'), | ||
| 127 | transformOrigin: _prefixStyle('transformOrigin') | ||
| 128 | }); | ||
| 129 | |||
| 130 | me.hasClass = function (e, c) { | ||
| 131 | var re = new RegExp("(^|\\s)" + c + "(\\s|$)"); | ||
| 132 | return re.test(e.className); | ||
| 133 | }; | ||
| 134 | |||
| 135 | me.addClass = function (e, c) { | ||
| 136 | if ( me.hasClass(e, c) ) { | ||
| 137 | return; | ||
| 138 | } | ||
| 139 | |||
| 140 | var newclass = e.className.split(' '); | ||
| 141 | newclass.push(c); | ||
| 142 | e.className = newclass.join(' '); | ||
| 143 | }; | ||
| 144 | |||
| 145 | me.removeClass = function (e, c) { | ||
| 146 | if ( !me.hasClass(e, c) ) { | ||
| 147 | return; | ||
| 148 | } | ||
| 149 | |||
| 150 | var re = new RegExp("(^|\\s)" + c + "(\\s|$)", 'g'); | ||
| 151 | e.className = e.className.replace(re, ' '); | ||
| 152 | }; | ||
| 153 | |||
| 154 | me.offset = function (el) { | ||
| 155 | var left = -el.offsetLeft, | ||
| 156 | top = -el.offsetTop; | ||
| 157 | |||
| 158 | // jshint -W084 | ||
| 159 | while (el = el.offsetParent) { | ||
| 160 | left -= el.offsetLeft; | ||
| 161 | top -= el.offsetTop; | ||
| 162 | } | ||
| 163 | // jshint +W084 | ||
| 164 | |||
| 165 | return { | ||
| 166 | left: left, | ||
| 167 | top: top | ||
| 168 | }; | ||
| 169 | }; | ||
| 170 | |||
| 171 | me.preventDefaultException = function (el, exceptions) { | ||
| 172 | for ( var i in exceptions ) { | ||
| 173 | if ( exceptions[i].test(el[i]) ) { | ||
| 174 | return true; | ||
| 175 | } | ||
| 176 | } | ||
| 177 | |||
| 178 | return false; | ||
| 179 | }; | ||
| 180 | |||
| 181 | me.extend(me.eventType = {}, { | ||
| 182 | touchstart: 1, | ||
| 183 | touchmove: 1, | ||
| 184 | touchend: 1, | ||
| 185 | |||
| 186 | mousedown: 2, | ||
| 187 | mousemove: 2, | ||
| 188 | mouseup: 2, | ||
| 189 | |||
| 190 | pointerdown: 3, | ||
| 191 | pointermove: 3, | ||
| 192 | pointerup: 3, | ||
| 193 | |||
| 194 | MSPointerDown: 3, | ||
| 195 | MSPointerMove: 3, | ||
| 196 | MSPointerUp: 3 | ||
| 197 | }); | ||
| 198 | |||
| 199 | me.extend(me.ease = {}, { | ||
| 200 | quadratic: { | ||
| 201 | style: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)', | ||
| 202 | fn: function (k) { | ||
| 203 | return k * ( 2 - k ); | ||
| 204 | } | ||
| 205 | }, | ||
| 206 | circular: { | ||
| 207 | style: 'cubic-bezier(0.1, 0.57, 0.1, 1)', // Not properly "circular" but this looks better, it should be (0.075, 0.82, 0.165, 1) | ||
| 208 | fn: function (k) { | ||
| 209 | return Math.sqrt( 1 - ( --k * k ) ); | ||
| 210 | } | ||
| 211 | }, | ||
| 212 | back: { | ||
| 213 | style: 'cubic-bezier(0.175, 0.885, 0.32, 1.275)', | ||
| 214 | fn: function (k) { | ||
| 215 | var b = 4; | ||
| 216 | return ( k = k - 1 ) * k * ( ( b + 1 ) * k + b ) + 1; | ||
| 217 | } | ||
| 218 | }, | ||
| 219 | bounce: { | ||
| 220 | style: '', | ||
| 221 | fn: function (k) { | ||
| 222 | if ( ( k /= 1 ) < ( 1 / 2.75 ) ) { | ||
| 223 | return 7.5625 * k * k; | ||
| 224 | } else if ( k < ( 2 / 2.75 ) ) { | ||
| 225 | return 7.5625 * ( k -= ( 1.5 / 2.75 ) ) * k + 0.75; | ||
| 226 | } else if ( k < ( 2.5 / 2.75 ) ) { | ||
| 227 | return 7.5625 * ( k -= ( 2.25 / 2.75 ) ) * k + 0.9375; | ||
| 228 | } else { | ||
| 229 | return 7.5625 * ( k -= ( 2.625 / 2.75 ) ) * k + 0.984375; | ||
| 230 | } | ||
| 231 | } | ||
| 232 | }, | ||
| 233 | elastic: { | ||
| 234 | style: '', | ||
| 235 | fn: function (k) { | ||
| 236 | var f = 0.22, | ||
| 237 | e = 0.4; | ||
| 238 | |||
| 239 | if ( k === 0 ) { return 0; } | ||
| 240 | if ( k == 1 ) { return 1; } | ||
| 241 | |||
| 242 | return ( e * Math.pow( 2, - 10 * k ) * Math.sin( ( k - f / 4 ) * ( 2 * Math.PI ) / f ) + 1 ); | ||
| 243 | } | ||
| 244 | } | ||
| 245 | }); | ||
| 246 | |||
| 247 | me.tap = function (e, eventName) { | ||
| 248 | var ev = document.createEvent('Event'); | ||
| 249 | ev.initEvent(eventName, true, true); | ||
| 250 | ev.pageX = e.pageX; | ||
| 251 | ev.pageY = e.pageY; | ||
| 252 | e.target.dispatchEvent(ev); | ||
| 253 | }; | ||
| 254 | |||
| 255 | me.click = function (e) { | ||
| 256 | var target = e.target, | ||
| 257 | ev; | ||
| 258 | |||
| 259 | if ( !(/(SELECT|INPUT|TEXTAREA)/i).test(target.tagName) ) { | ||
| 260 | ev = document.createEvent('MouseEvents'); | ||
| 261 | ev.initMouseEvent('click', true, true, e.view, 1, | ||
| 262 | target.screenX, target.screenY, target.clientX, target.clientY, | ||
| 263 | e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, | ||
| 264 | 0, null); | ||
| 265 | |||
| 266 | ev._constructed = true; | ||
| 267 | target.dispatchEvent(ev); | ||
| 268 | } | ||
| 269 | }; | ||
| 270 | |||
| 271 | return me; | ||
| 272 | })(); | ||
| 273 | function IScroll (el, options) { | ||
| 274 | this.wrapper = typeof el == 'string' ? document.querySelector(el) : el; | ||
| 275 | this.scroller = this.wrapper.children[0]; | ||
| 276 | this.scrollerStyle = this.scroller.style; // cache style for better performance | ||
| 277 | |||
| 278 | this.options = { | ||
| 279 | |||
| 280 | resizeScrollbars: true, | ||
| 281 | |||
| 282 | mouseWheelSpeed: 20, | ||
| 283 | |||
| 284 | snapThreshold: 0.334, | ||
| 285 | |||
| 286 | // INSERT POINT: OPTIONS | ||
| 287 | disablePointer : !utils.hasPointer, | ||
| 288 | disableTouch : utils.hasPointer || !utils.hasTouch, | ||
| 289 | disableMouse : utils.hasPointer || utils.hasTouch, | ||
| 290 | startX: 0, | ||
| 291 | startY: 0, | ||
| 292 | scrollY: true, | ||
| 293 | directionLockThreshold: 5, | ||
| 294 | momentum: true, | ||
| 295 | |||
| 296 | bounce: true, | ||
| 297 | bounceTime: 600, | ||
| 298 | bounceEasing: '', | ||
| 299 | |||
| 300 | preventDefault: true, | ||
| 301 | preventDefaultException: { tagName: /^(INPUT|TEXTAREA|BUTTON|SELECT)$/ }, | ||
| 302 | |||
| 303 | HWCompositing: true, | ||
| 304 | useTransition: true, | ||
| 305 | useTransform: true, | ||
| 306 | bindToWrapper: typeof window.onmousedown === "undefined" | ||
| 307 | }; | ||
| 308 | |||
| 309 | for ( var i in options ) { | ||
| 310 | this.options[i] = options[i]; | ||
| 311 | } | ||
| 312 | |||
| 313 | // Normalize options | ||
| 314 | this.translateZ = this.options.HWCompositing && utils.hasPerspective ? ' translateZ(0)' : ''; | ||
| 315 | |||
| 316 | this.options.useTransition = utils.hasTransition && this.options.useTransition; | ||
| 317 | this.options.useTransform = utils.hasTransform && this.options.useTransform; | ||
| 318 | |||
| 319 | this.options.eventPassthrough = this.options.eventPassthrough === true ? 'vertical' : this.options.eventPassthrough; | ||
| 320 | this.options.preventDefault = !this.options.eventPassthrough && this.options.preventDefault; | ||
| 321 | |||
| 322 | // If you want eventPassthrough I have to lock one of the axes | ||
| 323 | this.options.scrollY = this.options.eventPassthrough == 'vertical' ? false : this.options.scrollY; | ||
| 324 | this.options.scrollX = this.options.eventPassthrough == 'horizontal' ? false : this.options.scrollX; | ||
| 325 | |||
| 326 | // With eventPassthrough we also need lockDirection mechanism | ||
| 327 | this.options.freeScroll = this.options.freeScroll && !this.options.eventPassthrough; | ||
| 328 | this.options.directionLockThreshold = this.options.eventPassthrough ? 0 : this.options.directionLockThreshold; | ||
| 329 | |||
| 330 | this.options.bounceEasing = typeof this.options.bounceEasing == 'string' ? utils.ease[this.options.bounceEasing] || utils.ease.circular : this.options.bounceEasing; | ||
| 331 | |||
| 332 | this.options.resizePolling = this.options.resizePolling === undefined ? 60 : this.options.resizePolling; | ||
| 333 | |||
| 334 | if ( this.options.tap === true ) { | ||
| 335 | this.options.tap = 'tap'; | ||
| 336 | } | ||
| 337 | |||
| 338 | if ( this.options.shrinkScrollbars == 'scale' ) { | ||
| 339 | this.options.useTransition = false; | ||
| 340 | } | ||
| 341 | |||
| 342 | this.options.invertWheelDirection = this.options.invertWheelDirection ? -1 : 1; | ||
| 343 | |||
| 344 | if ( this.options.probeType == 3 ) { | ||
| 345 | this.options.useTransition = false; } | ||
| 346 | |||
| 347 | // INSERT POINT: NORMALIZATION | ||
| 348 | |||
| 349 | // Some defaults | ||
| 350 | this.x = 0; | ||
| 351 | this.y = 0; | ||
| 352 | this.directionX = 0; | ||
| 353 | this.directionY = 0; | ||
| 354 | this._events = {}; | ||
| 355 | |||
| 356 | // INSERT POINT: DEFAULTS | ||
| 357 | |||
| 358 | this._init(); | ||
| 359 | this.refresh(); | ||
| 360 | |||
| 361 | this.scrollTo(this.options.startX, this.options.startY); | ||
| 362 | this.enable(); | ||
| 363 | } | ||
| 364 | |||
| 365 | IScroll.prototype = { | ||
| 366 | version: '5.2.0', | ||
| 367 | |||
| 368 | _init: function () { | ||
| 369 | this._initEvents(); | ||
| 370 | |||
| 371 | if ( this.options.scrollbars || this.options.indicators ) { | ||
| 372 | this._initIndicators(); | ||
| 373 | } | ||
| 374 | |||
| 375 | if ( this.options.mouseWheel ) { | ||
| 376 | this._initWheel(); | ||
| 377 | } | ||
| 378 | |||
| 379 | if ( this.options.snap ) { | ||
| 380 | this._initSnap(); | ||
| 381 | } | ||
| 382 | |||
| 383 | if ( this.options.keyBindings ) { | ||
| 384 | this._initKeys(); | ||
| 385 | } | ||
| 386 | |||
| 387 | // INSERT POINT: _init | ||
| 388 | |||
| 389 | }, | ||
| 390 | |||
| 391 | destroy: function () { | ||
| 392 | this._initEvents(true); | ||
| 393 | clearTimeout(this.resizeTimeout); | ||
| 394 | this.resizeTimeout = null; | ||
| 395 | this._execEvent('destroy'); | ||
| 396 | }, | ||
| 397 | |||
| 398 | _transitionEnd: function (e) { | ||
| 399 | if ( e.target != this.scroller || !this.isInTransition ) { | ||
| 400 | return; | ||
| 401 | } | ||
| 402 | |||
| 403 | this._transitionTime(); | ||
| 404 | if ( !this.resetPosition(this.options.bounceTime) ) { | ||
| 405 | this.isInTransition = false; | ||
| 406 | this._execEvent('scrollEnd'); | ||
| 407 | } | ||
| 408 | }, | ||
| 409 | |||
| 410 | _start: function (e) { | ||
| 411 | // React to left mouse button only | ||
| 412 | if ( utils.eventType[e.type] != 1 ) { | ||
| 413 | // for button property | ||
| 414 | // http://unixpapa.com/js/mouse.html | ||
| 415 | var button; | ||
| 416 | if (!e.which) { | ||
| 417 | /* IE case */ | ||
| 418 | button = (e.button < 2) ? 0 : | ||
| 419 | ((e.button == 4) ? 1 : 2); | ||
| 420 | } else { | ||
| 421 | /* All others */ | ||
| 422 | button = e.button; | ||
| 423 | } | ||
| 424 | if ( button !== 0 ) { | ||
| 425 | return; | ||
| 426 | } | ||
| 427 | } | ||
| 428 | |||
| 429 | if ( !this.enabled || (this.initiated && utils.eventType[e.type] !== this.initiated) ) { | ||
| 430 | return; | ||
| 431 | } | ||
| 432 | |||
| 433 | if ( this.options.preventDefault && !utils.isBadAndroid && !utils.preventDefaultException(e.target, this.options.preventDefaultException) ) { | ||
| 434 | e.preventDefault(); | ||
| 435 | } | ||
| 436 | |||
| 437 | var point = e.touches ? e.touches[0] : e, | ||
| 438 | pos; | ||
| 439 | |||
| 440 | this.initiated = utils.eventType[e.type]; | ||
| 441 | this.moved = false; | ||
| 442 | this.distX = 0; | ||
| 443 | this.distY = 0; | ||
| 444 | this.directionX = 0; | ||
| 445 | this.directionY = 0; | ||
| 446 | this.directionLocked = 0; | ||
| 447 | |||
| 448 | this.startTime = utils.getTime(); | ||
| 449 | |||
| 450 | if ( this.options.useTransition && this.isInTransition ) { | ||
| 451 | this._transitionTime(); | ||
| 452 | this.isInTransition = false; | ||
| 453 | pos = this.getComputedPosition(); | ||
| 454 | this._translate(Math.round(pos.x), Math.round(pos.y)); | ||
| 455 | this._execEvent('scrollEnd'); | ||
| 456 | } else if ( !this.options.useTransition && this.isAnimating ) { | ||
| 457 | this.isAnimating = false; | ||
| 458 | this._execEvent('scrollEnd'); | ||
| 459 | } | ||
| 460 | |||
| 461 | this.startX = this.x; | ||
| 462 | this.startY = this.y; | ||
| 463 | this.absStartX = this.x; | ||
| 464 | this.absStartY = this.y; | ||
| 465 | this.pointX = point.pageX; | ||
| 466 | this.pointY = point.pageY; | ||
| 467 | |||
| 468 | this._execEvent('beforeScrollStart'); | ||
| 469 | }, | ||
| 470 | |||
| 471 | _move: function (e) { | ||
| 472 | if ( !this.enabled || utils.eventType[e.type] !== this.initiated ) { | ||
| 473 | return; | ||
| 474 | } | ||
| 475 | |||
| 476 | if ( this.options.preventDefault ) { // increases performance on Android? TODO: check! | ||
| 477 | e.preventDefault(); | ||
| 478 | } | ||
| 479 | |||
| 480 | var point = e.touches ? e.touches[0] : e, | ||
| 481 | deltaX = point.pageX - this.pointX, | ||
| 482 | deltaY = point.pageY - this.pointY, | ||
| 483 | timestamp = utils.getTime(), | ||
| 484 | newX, newY, | ||
| 485 | absDistX, absDistY; | ||
| 486 | |||
| 487 | this.pointX = point.pageX; | ||
| 488 | this.pointY = point.pageY; | ||
| 489 | |||
| 490 | this.distX += deltaX; | ||
| 491 | this.distY += deltaY; | ||
| 492 | absDistX = Math.abs(this.distX); | ||
| 493 | absDistY = Math.abs(this.distY); | ||
| 494 | |||
| 495 | // We need to move at least 10 pixels for the scrolling to initiate | ||
| 496 | if ( timestamp - this.endTime > 300 && (absDistX < 10 && absDistY < 10) ) { | ||
| 497 | return; | ||
| 498 | } | ||
| 499 | |||
| 500 | // If you are scrolling in one direction lock the other | ||
| 501 | if ( !this.directionLocked && !this.options.freeScroll ) { | ||
| 502 | if ( absDistX > absDistY + this.options.directionLockThreshold ) { | ||
| 503 | this.directionLocked = 'h'; // lock horizontally | ||
| 504 | } else if ( absDistY >= absDistX + this.options.directionLockThreshold ) { | ||
| 505 | this.directionLocked = 'v'; // lock vertically | ||
| 506 | } else { | ||
| 507 | this.directionLocked = 'n'; // no lock | ||
| 508 | } | ||
| 509 | } | ||
| 510 | |||
| 511 | if ( this.directionLocked == 'h' ) { | ||
| 512 | if ( this.options.eventPassthrough == 'vertical' ) { | ||
| 513 | e.preventDefault(); | ||
| 514 | } else if ( this.options.eventPassthrough == 'horizontal' ) { | ||
| 515 | this.initiated = false; | ||
| 516 | return; | ||
| 517 | } | ||
| 518 | |||
| 519 | deltaY = 0; | ||
| 520 | } else if ( this.directionLocked == 'v' ) { | ||
| 521 | if ( this.options.eventPassthrough == 'horizontal' ) { | ||
| 522 | e.preventDefault(); | ||
| 523 | } else if ( this.options.eventPassthrough == 'vertical' ) { | ||
| 524 | this.initiated = false; | ||
| 525 | return; | ||
| 526 | } | ||
| 527 | |||
| 528 | deltaX = 0; | ||
| 529 | } | ||
| 530 | |||
| 531 | deltaX = this.hasHorizontalScroll ? deltaX : 0; | ||
| 532 | deltaY = this.hasVerticalScroll ? deltaY : 0; | ||
| 533 | |||
| 534 | newX = this.x + deltaX; | ||
| 535 | newY = this.y + deltaY; | ||
| 536 | |||
| 537 | // Slow down if outside of the boundaries | ||
| 538 | if ( newX > 0 || newX < this.maxScrollX ) { | ||
| 539 | newX = this.options.bounce ? this.x + deltaX / 3 : newX > 0 ? 0 : this.maxScrollX; | ||
| 540 | } | ||
| 541 | if ( newY > 0 || newY < this.maxScrollY ) { | ||
| 542 | newY = this.options.bounce ? this.y + deltaY / 3 : newY > 0 ? 0 : this.maxScrollY; | ||
| 543 | } | ||
| 544 | |||
| 545 | this.directionX = deltaX > 0 ? -1 : deltaX < 0 ? 1 : 0; | ||
| 546 | this.directionY = deltaY > 0 ? -1 : deltaY < 0 ? 1 : 0; | ||
| 547 | |||
| 548 | if ( !this.moved ) { | ||
| 549 | this._execEvent('scrollStart'); | ||
| 550 | } | ||
| 551 | |||
| 552 | this.moved = true; | ||
| 553 | |||
| 554 | this._translate(newX, newY); | ||
| 555 | |||
| 556 | /* REPLACE START: _move */ | ||
| 557 | if ( timestamp - this.startTime > 300 ) { | ||
| 558 | this.startTime = timestamp; | ||
| 559 | this.startX = this.x; | ||
| 560 | this.startY = this.y; | ||
| 561 | |||
| 562 | if ( this.options.probeType == 1 ) { | ||
| 563 | this._execEvent('scroll'); | ||
| 564 | } | ||
| 565 | } | ||
| 566 | |||
| 567 | if ( this.options.probeType > 1 ) { | ||
| 568 | this._execEvent('scroll'); | ||
| 569 | } | ||
| 570 | /* REPLACE END: _move */ | ||
| 571 | |||
| 572 | }, | ||
| 573 | |||
| 574 | _end: function (e) { | ||
| 575 | if ( !this.enabled || utils.eventType[e.type] !== this.initiated ) { | ||
| 576 | return; | ||
| 577 | } | ||
| 578 | |||
| 579 | if ( this.options.preventDefault && !utils.preventDefaultException(e.target, this.options.preventDefaultException) ) { | ||
| 580 | e.preventDefault(); | ||
| 581 | } | ||
| 582 | |||
| 583 | var point = e.changedTouches ? e.changedTouches[0] : e, | ||
| 584 | momentumX, | ||
| 585 | momentumY, | ||
| 586 | duration = utils.getTime() - this.startTime, | ||
| 587 | newX = Math.round(this.x), | ||
| 588 | newY = Math.round(this.y), | ||
| 589 | distanceX = Math.abs(newX - this.startX), | ||
| 590 | distanceY = Math.abs(newY - this.startY), | ||
| 591 | time = 0, | ||
| 592 | easing = ''; | ||
| 593 | |||
| 594 | this.isInTransition = 0; | ||
| 595 | this.initiated = 0; | ||
| 596 | this.endTime = utils.getTime(); | ||
| 597 | |||
| 598 | // reset if we are outside of the boundaries | ||
| 599 | if ( this.resetPosition(this.options.bounceTime) ) { | ||
| 600 | return; | ||
| 601 | } | ||
| 602 | |||
| 603 | this.scrollTo(newX, newY); // ensures that the last position is rounded | ||
| 604 | |||
| 605 | // we scrolled less than 10 pixels | ||
| 606 | if ( !this.moved ) { | ||
| 607 | if ( this.options.tap ) { | ||
| 608 | utils.tap(e, this.options.tap); | ||
| 609 | } | ||
| 610 | |||
| 611 | if ( this.options.click ) { | ||
| 612 | utils.click(e); | ||
| 613 | } | ||
| 614 | |||
| 615 | this._execEvent('scrollCancel'); | ||
| 616 | return; | ||
| 617 | } | ||
| 618 | |||
| 619 | if ( this._events.flick && duration < 200 && distanceX < 100 && distanceY < 100 ) { | ||
| 620 | this._execEvent('flick'); | ||
| 621 | return; | ||
| 622 | } | ||
| 623 | |||
| 624 | // start momentum animation if needed | ||
| 625 | if ( this.options.momentum && duration < 300 ) { | ||
| 626 | momentumX = this.hasHorizontalScroll ? utils.momentum(this.x, this.startX, duration, this.maxScrollX, this.options.bounce ? this.wrapperWidth : 0, this.options.deceleration) : { destination: newX, duration: 0 }; | ||
| 627 | momentumY = this.hasVerticalScroll ? utils.momentum(this.y, this.startY, duration, this.maxScrollY, this.options.bounce ? this.wrapperHeight : 0, this.options.deceleration) : { destination: newY, duration: 0 }; | ||
| 628 | newX = momentumX.destination; | ||
| 629 | newY = momentumY.destination; | ||
| 630 | time = Math.max(momentumX.duration, momentumY.duration); | ||
| 631 | this.isInTransition = 1; | ||
| 632 | } | ||
| 633 | |||
| 634 | |||
| 635 | if ( this.options.snap ) { | ||
| 636 | var snap = this._nearestSnap(newX, newY); | ||
| 637 | this.currentPage = snap; | ||
| 638 | time = this.options.snapSpeed || Math.max( | ||
| 639 | Math.max( | ||
| 640 | Math.min(Math.abs(newX - snap.x), 1000), | ||
| 641 | Math.min(Math.abs(newY - snap.y), 1000) | ||
| 642 | ), 300); | ||
| 643 | newX = snap.x; | ||
| 644 | newY = snap.y; | ||
| 645 | |||
| 646 | this.directionX = 0; | ||
| 647 | this.directionY = 0; | ||
| 648 | easing = this.options.bounceEasing; | ||
| 649 | } | ||
| 650 | |||
| 651 | // INSERT POINT: _end | ||
| 652 | |||
| 653 | if ( newX != this.x || newY != this.y ) { | ||
| 654 | // change easing function when scroller goes out of the boundaries | ||
| 655 | if ( newX > 0 || newX < this.maxScrollX || newY > 0 || newY < this.maxScrollY ) { | ||
| 656 | easing = utils.ease.quadratic; | ||
| 657 | } | ||
| 658 | |||
| 659 | this.scrollTo(newX, newY, time, easing); | ||
| 660 | return; | ||
| 661 | } | ||
| 662 | |||
| 663 | this._execEvent('scrollEnd'); | ||
| 664 | }, | ||
| 665 | |||
| 666 | _resize: function () { | ||
| 667 | var that = this; | ||
| 668 | |||
| 669 | clearTimeout(this.resizeTimeout); | ||
| 670 | |||
| 671 | this.resizeTimeout = setTimeout(function () { | ||
| 672 | that.refresh(); | ||
| 673 | }, this.options.resizePolling); | ||
| 674 | }, | ||
| 675 | |||
| 676 | resetPosition: function (time) { | ||
| 677 | var x = this.x, | ||
| 678 | y = this.y; | ||
| 679 | |||
| 680 | time = time || 0; | ||
| 681 | |||
| 682 | if ( !this.hasHorizontalScroll || this.x > 0 ) { | ||
| 683 | x = 0; | ||
| 684 | } else if ( this.x < this.maxScrollX ) { | ||
| 685 | x = this.maxScrollX; | ||
| 686 | } | ||
| 687 | |||
| 688 | if ( !this.hasVerticalScroll || this.y > 0 ) { | ||
| 689 | y = 0; | ||
| 690 | } else if ( this.y < this.maxScrollY ) { | ||
| 691 | y = this.maxScrollY; | ||
| 692 | } | ||
| 693 | |||
| 694 | if ( x == this.x && y == this.y ) { | ||
| 695 | return false; | ||
| 696 | } | ||
| 697 | |||
| 698 | this.scrollTo(x, y, time, this.options.bounceEasing); | ||
| 699 | |||
| 700 | return true; | ||
| 701 | }, | ||
| 702 | |||
| 703 | disable: function () { | ||
| 704 | this.enabled = false; | ||
| 705 | }, | ||
| 706 | |||
| 707 | enable: function () { | ||
| 708 | this.enabled = true; | ||
| 709 | }, | ||
| 710 | |||
| 711 | refresh: function () { | ||
| 712 | var rf = this.wrapper.offsetHeight; // Force reflow | ||
| 713 | |||
| 714 | this.wrapperWidth = this.wrapper.clientWidth; | ||
| 715 | this.wrapperHeight = this.wrapper.clientHeight; | ||
| 716 | |||
| 717 | /* REPLACE START: refresh */ | ||
| 718 | |||
| 719 | this.scrollerWidth = this.scroller.offsetWidth; | ||
| 720 | this.scrollerHeight = this.scroller.offsetHeight; | ||
| 721 | |||
| 722 | this.maxScrollX = this.wrapperWidth - this.scrollerWidth; | ||
| 723 | this.maxScrollY = this.wrapperHeight - this.scrollerHeight; | ||
| 724 | |||
| 725 | /* REPLACE END: refresh */ | ||
| 726 | |||
| 727 | this.hasHorizontalScroll = this.options.scrollX && this.maxScrollX < 0; | ||
| 728 | this.hasVerticalScroll = this.options.scrollY && this.maxScrollY < 0; | ||
| 729 | |||
| 730 | if ( !this.hasHorizontalScroll ) { | ||
| 731 | this.maxScrollX = 0; | ||
| 732 | this.scrollerWidth = this.wrapperWidth; | ||
| 733 | } | ||
| 734 | |||
| 735 | if ( !this.hasVerticalScroll ) { | ||
| 736 | this.maxScrollY = 0; | ||
| 737 | this.scrollerHeight = this.wrapperHeight; | ||
| 738 | } | ||
| 739 | |||
| 740 | this.endTime = 0; | ||
| 741 | this.directionX = 0; | ||
| 742 | this.directionY = 0; | ||
| 743 | |||
| 744 | this.wrapperOffset = utils.offset(this.wrapper); | ||
| 745 | |||
| 746 | this._execEvent('refresh'); | ||
| 747 | |||
| 748 | this.resetPosition(); | ||
| 749 | |||
| 750 | // INSERT POINT: _refresh | ||
| 751 | |||
| 752 | }, | ||
| 753 | |||
| 754 | on: function (type, fn) { | ||
| 755 | if ( !this._events[type] ) { | ||
| 756 | this._events[type] = []; | ||
| 757 | } | ||
| 758 | |||
| 759 | this._events[type].push(fn); | ||
| 760 | }, | ||
| 761 | |||
| 762 | off: function (type, fn) { | ||
| 763 | if ( !this._events[type] ) { | ||
| 764 | return; | ||
| 765 | } | ||
| 766 | |||
| 767 | var index = this._events[type].indexOf(fn); | ||
| 768 | |||
| 769 | if ( index > -1 ) { | ||
| 770 | this._events[type].splice(index, 1); | ||
| 771 | } | ||
| 772 | }, | ||
| 773 | |||
| 774 | _execEvent: function (type) { | ||
| 775 | if ( !this._events[type] ) { | ||
| 776 | return; | ||
| 777 | } | ||
| 778 | |||
| 779 | var i = 0, | ||
| 780 | l = this._events[type].length; | ||
| 781 | |||
| 782 | if ( !l ) { | ||
| 783 | return; | ||
| 784 | } | ||
| 785 | |||
| 786 | for ( ; i < l; i++ ) { | ||
| 787 | this._events[type][i].apply(this, [].slice.call(arguments, 1)); | ||
| 788 | } | ||
| 789 | }, | ||
| 790 | |||
| 791 | scrollBy: function (x, y, time, easing) { | ||
| 792 | x = this.x + x; | ||
| 793 | y = this.y + y; | ||
| 794 | time = time || 0; | ||
| 795 | |||
| 796 | this.scrollTo(x, y, time, easing); | ||
| 797 | }, | ||
| 798 | |||
| 799 | scrollTo: function (x, y, time, easing) { | ||
| 800 | easing = easing || utils.ease.circular; | ||
| 801 | |||
| 802 | this.isInTransition = this.options.useTransition && time > 0; | ||
| 803 | var transitionType = this.options.useTransition && easing.style; | ||
| 804 | if ( !time || transitionType ) { | ||
| 805 | if(transitionType) { | ||
| 806 | this._transitionTimingFunction(easing.style); | ||
| 807 | this._transitionTime(time); | ||
| 808 | } | ||
| 809 | this._translate(x, y); | ||
| 810 | } else { | ||
| 811 | this._animate(x, y, time, easing.fn); | ||
| 812 | } | ||
| 813 | }, | ||
| 814 | |||
| 815 | scrollToElement: function (el, time, offsetX, offsetY, easing) { | ||
| 816 | el = el.nodeType ? el : this.scroller.querySelector(el); | ||
| 817 | |||
| 818 | if ( !el ) { | ||
| 819 | return; | ||
| 820 | } | ||
| 821 | |||
| 822 | var pos = utils.offset(el); | ||
| 823 | |||
| 824 | pos.left -= this.wrapperOffset.left; | ||
| 825 | pos.top -= this.wrapperOffset.top; | ||
| 826 | |||
| 827 | // if offsetX/Y are true we center the element to the screen | ||
| 828 | if ( offsetX === true ) { | ||
| 829 | offsetX = Math.round(el.offsetWidth / 2 - this.wrapper.offsetWidth / 2); | ||
| 830 | } | ||
| 831 | if ( offsetY === true ) { | ||
| 832 | offsetY = Math.round(el.offsetHeight / 2 - this.wrapper.offsetHeight / 2); | ||
| 833 | } | ||
| 834 | |||
| 835 | pos.left -= offsetX || 0; | ||
| 836 | pos.top -= offsetY || 0; | ||
| 837 | |||
| 838 | pos.left = pos.left > 0 ? 0 : pos.left < this.maxScrollX ? this.maxScrollX : pos.left; | ||
| 839 | pos.top = pos.top > 0 ? 0 : pos.top < this.maxScrollY ? this.maxScrollY : pos.top; | ||
| 840 | |||
| 841 | time = time === undefined || time === null || time === 'auto' ? Math.max(Math.abs(this.x-pos.left), Math.abs(this.y-pos.top)) : time; | ||
| 842 | |||
| 843 | this.scrollTo(pos.left, pos.top, time, easing); | ||
| 844 | }, | ||
| 845 | |||
| 846 | _transitionTime: function (time) { | ||
| 847 | time = time || 0; | ||
| 848 | |||
| 849 | var durationProp = utils.style.transitionDuration; | ||
| 850 | this.scrollerStyle[durationProp] = time + 'ms'; | ||
| 851 | |||
| 852 | if ( !time && utils.isBadAndroid ) { | ||
| 853 | this.scrollerStyle[durationProp] = '0.0001ms'; | ||
| 854 | // remove 0.0001ms | ||
| 855 | var self = this; | ||
| 856 | rAF(function() { | ||
| 857 | if(self.scrollerStyle[durationProp] === '0.0001ms') { | ||
| 858 | self.scrollerStyle[durationProp] = '0s'; | ||
| 859 | } | ||
| 860 | }); | ||
| 861 | } | ||
| 862 | |||
| 863 | |||
| 864 | if ( this.indicators ) { | ||
| 865 | for ( var i = this.indicators.length; i--; ) { | ||
| 866 | this.indicators[i].transitionTime(time); | ||
| 867 | } | ||
| 868 | } | ||
| 869 | |||
| 870 | |||
| 871 | // INSERT POINT: _transitionTime | ||
| 872 | |||
| 873 | }, | ||
| 874 | |||
| 875 | _transitionTimingFunction: function (easing) { | ||
| 876 | this.scrollerStyle[utils.style.transitionTimingFunction] = easing; | ||
| 877 | |||
| 878 | |||
| 879 | if ( this.indicators ) { | ||
| 880 | for ( var i = this.indicators.length; i--; ) { | ||
| 881 | this.indicators[i].transitionTimingFunction(easing); | ||
| 882 | } | ||
| 883 | } | ||
| 884 | |||
| 885 | |||
| 886 | // INSERT POINT: _transitionTimingFunction | ||
| 887 | |||
| 888 | }, | ||
| 889 | |||
| 890 | _translate: function (x, y) { | ||
| 891 | if ( this.options.useTransform ) { | ||
| 892 | |||
| 893 | /* REPLACE START: _translate */ | ||
| 894 | |||
| 895 | this.scrollerStyle[utils.style.transform] = 'translate(' + x + 'px,' + y + 'px)' + this.translateZ; | ||
| 896 | |||
| 897 | /* REPLACE END: _translate */ | ||
| 898 | |||
| 899 | } else { | ||
| 900 | x = Math.round(x); | ||
| 901 | y = Math.round(y); | ||
| 902 | this.scrollerStyle.left = x + 'px'; | ||
| 903 | this.scrollerStyle.top = y + 'px'; | ||
| 904 | } | ||
| 905 | |||
| 906 | this.x = x; | ||
| 907 | this.y = y; | ||
| 908 | |||
| 909 | |||
| 910 | if ( this.indicators ) { | ||
| 911 | for ( var i = this.indicators.length; i--; ) { | ||
| 912 | this.indicators[i].updatePosition(); | ||
| 913 | } | ||
| 914 | } | ||
| 915 | |||
| 916 | |||
| 917 | // INSERT POINT: _translate | ||
| 918 | |||
| 919 | }, | ||
| 920 | |||
| 921 | _initEvents: function (remove) { | ||
| 922 | var eventType = remove ? utils.removeEvent : utils.addEvent, | ||
| 923 | target = this.options.bindToWrapper ? this.wrapper : window; | ||
| 924 | |||
| 925 | eventType(window, 'orientationchange', this); | ||
| 926 | eventType(window, 'resize', this); | ||
| 927 | |||
| 928 | if ( this.options.click ) { | ||
| 929 | eventType(this.wrapper, 'click', this, true); | ||
| 930 | } | ||
| 931 | |||
| 932 | if ( !this.options.disableMouse ) { | ||
| 933 | eventType(this.wrapper, 'mousedown', this); | ||
| 934 | eventType(target, 'mousemove', this); | ||
| 935 | eventType(target, 'mousecancel', this); | ||
| 936 | eventType(target, 'mouseup', this); | ||
| 937 | } | ||
| 938 | |||
| 939 | if ( utils.hasPointer && !this.options.disablePointer ) { | ||
| 940 | eventType(this.wrapper, utils.prefixPointerEvent('pointerdown'), this); | ||
| 941 | eventType(target, utils.prefixPointerEvent('pointermove'), this); | ||
| 942 | eventType(target, utils.prefixPointerEvent('pointercancel'), this); | ||
| 943 | eventType(target, utils.prefixPointerEvent('pointerup'), this); | ||
| 944 | } | ||
| 945 | |||
| 946 | if ( utils.hasTouch && !this.options.disableTouch ) { | ||
| 947 | eventType(this.wrapper, 'touchstart', this); | ||
| 948 | eventType(target, 'touchmove', this); | ||
| 949 | eventType(target, 'touchcancel', this); | ||
| 950 | eventType(target, 'touchend', this); | ||
| 951 | } | ||
| 952 | |||
| 953 | eventType(this.scroller, 'transitionend', this); | ||
| 954 | eventType(this.scroller, 'webkitTransitionEnd', this); | ||
| 955 | eventType(this.scroller, 'oTransitionEnd', this); | ||
| 956 | eventType(this.scroller, 'MSTransitionEnd', this); | ||
| 957 | }, | ||
| 958 | |||
| 959 | getComputedPosition: function () { | ||
| 960 | var matrix = window.getComputedStyle(this.scroller, null), | ||
| 961 | x, y; | ||
| 962 | |||
| 963 | if ( this.options.useTransform ) { | ||
| 964 | matrix = matrix[utils.style.transform].split(')')[0].split(', '); | ||
| 965 | x = +(matrix[12] || matrix[4]); | ||
| 966 | y = +(matrix[13] || matrix[5]); | ||
| 967 | } else { | ||
| 968 | x = +matrix.left.replace(/[^-\d.]/g, ''); | ||
| 969 | y = +matrix.top.replace(/[^-\d.]/g, ''); | ||
| 970 | } | ||
| 971 | |||
| 972 | return { x: x, y: y }; | ||
| 973 | }, | ||
| 974 | _initIndicators: function () { | ||
| 975 | var interactive = this.options.interactiveScrollbars, | ||
| 976 | customStyle = typeof this.options.scrollbars != 'string', | ||
| 977 | indicators = [], | ||
| 978 | indicator; | ||
| 979 | |||
| 980 | var that = this; | ||
| 981 | |||
| 982 | this.indicators = []; | ||
| 983 | |||
| 984 | if ( this.options.scrollbars ) { | ||
| 985 | // Vertical scrollbar | ||
| 986 | if ( this.options.scrollY ) { | ||
| 987 | indicator = { | ||
| 988 | el: createDefaultScrollbar('v', interactive, this.options.scrollbars), | ||
| 989 | interactive: interactive, | ||
| 990 | defaultScrollbars: true, | ||
| 991 | customStyle: customStyle, | ||
| 992 | resize: this.options.resizeScrollbars, | ||
| 993 | shrink: this.options.shrinkScrollbars, | ||
| 994 | fade: this.options.fadeScrollbars, | ||
| 995 | listenX: false | ||
| 996 | }; | ||
| 997 | |||
| 998 | this.wrapper.appendChild(indicator.el); | ||
| 999 | indicators.push(indicator); | ||
| 1000 | } | ||
| 1001 | |||
| 1002 | // Horizontal scrollbar | ||
| 1003 | if ( this.options.scrollX ) { | ||
| 1004 | indicator = { | ||
| 1005 | el: createDefaultScrollbar('h', interactive, this.options.scrollbars), | ||
| 1006 | interactive: interactive, | ||
| 1007 | defaultScrollbars: true, | ||
| 1008 | customStyle: customStyle, | ||
| 1009 | resize: this.options.resizeScrollbars, | ||
| 1010 | shrink: this.options.shrinkScrollbars, | ||
| 1011 | fade: this.options.fadeScrollbars, | ||
| 1012 | listenY: false | ||
| 1013 | }; | ||
| 1014 | |||
| 1015 | this.wrapper.appendChild(indicator.el); | ||
| 1016 | indicators.push(indicator); | ||
| 1017 | } | ||
| 1018 | } | ||
| 1019 | |||
| 1020 | if ( this.options.indicators ) { | ||
| 1021 | // TODO: check concat compatibility | ||
| 1022 | indicators = indicators.concat(this.options.indicators); | ||
| 1023 | } | ||
| 1024 | |||
| 1025 | for ( var i = indicators.length; i--; ) { | ||
| 1026 | this.indicators.push( new Indicator(this, indicators[i]) ); | ||
| 1027 | } | ||
| 1028 | |||
| 1029 | // TODO: check if we can use array.map (wide compatibility and performance issues) | ||
| 1030 | function _indicatorsMap (fn) { | ||
| 1031 | if (that.indicators) { | ||
| 1032 | for ( var i = that.indicators.length; i--; ) { | ||
| 1033 | fn.call(that.indicators[i]); | ||
| 1034 | } | ||
| 1035 | } | ||
| 1036 | } | ||
| 1037 | |||
| 1038 | if ( this.options.fadeScrollbars ) { | ||
| 1039 | this.on('scrollEnd', function () { | ||
| 1040 | _indicatorsMap(function () { | ||
| 1041 | this.fade(); | ||
| 1042 | }); | ||
| 1043 | }); | ||
| 1044 | |||
| 1045 | this.on('scrollCancel', function () { | ||
| 1046 | _indicatorsMap(function () { | ||
| 1047 | this.fade(); | ||
| 1048 | }); | ||
| 1049 | }); | ||
| 1050 | |||
| 1051 | this.on('scrollStart', function () { | ||
| 1052 | _indicatorsMap(function () { | ||
| 1053 | this.fade(1); | ||
| 1054 | }); | ||
| 1055 | }); | ||
| 1056 | |||
| 1057 | this.on('beforeScrollStart', function () { | ||
| 1058 | _indicatorsMap(function () { | ||
| 1059 | this.fade(1, true); | ||
| 1060 | }); | ||
| 1061 | }); | ||
| 1062 | } | ||
| 1063 | |||
| 1064 | |||
| 1065 | this.on('refresh', function () { | ||
| 1066 | _indicatorsMap(function () { | ||
| 1067 | this.refresh(); | ||
| 1068 | }); | ||
| 1069 | }); | ||
| 1070 | |||
| 1071 | this.on('destroy', function () { | ||
| 1072 | _indicatorsMap(function () { | ||
| 1073 | this.destroy(); | ||
| 1074 | }); | ||
| 1075 | |||
| 1076 | delete this.indicators; | ||
| 1077 | }); | ||
| 1078 | }, | ||
| 1079 | |||
| 1080 | _initWheel: function () { | ||
| 1081 | utils.addEvent(this.wrapper, 'wheel', this); | ||
| 1082 | utils.addEvent(this.wrapper, 'mousewheel', this); | ||
| 1083 | utils.addEvent(this.wrapper, 'DOMMouseScroll', this); | ||
| 1084 | |||
| 1085 | this.on('destroy', function () { | ||
| 1086 | clearTimeout(this.wheelTimeout); | ||
| 1087 | this.wheelTimeout = null; | ||
| 1088 | utils.removeEvent(this.wrapper, 'wheel', this); | ||
| 1089 | utils.removeEvent(this.wrapper, 'mousewheel', this); | ||
| 1090 | utils.removeEvent(this.wrapper, 'DOMMouseScroll', this); | ||
| 1091 | }); | ||
| 1092 | }, | ||
| 1093 | |||
| 1094 | _wheel: function (e) { | ||
| 1095 | if ( !this.enabled ) { | ||
| 1096 | return; | ||
| 1097 | } | ||
| 1098 | |||
| 1099 | e.preventDefault(); | ||
| 1100 | |||
| 1101 | var wheelDeltaX, wheelDeltaY, | ||
| 1102 | newX, newY, | ||
| 1103 | that = this; | ||
| 1104 | |||
| 1105 | if ( this.wheelTimeout === undefined ) { | ||
| 1106 | that._execEvent('scrollStart'); | ||
| 1107 | } | ||
| 1108 | |||
| 1109 | // Execute the scrollEnd event after 400ms the wheel stopped scrolling | ||
| 1110 | clearTimeout(this.wheelTimeout); | ||
| 1111 | this.wheelTimeout = setTimeout(function () { | ||
| 1112 | if(!that.options.snap) { | ||
| 1113 | that._execEvent('scrollEnd'); | ||
| 1114 | } | ||
| 1115 | that.wheelTimeout = undefined; | ||
| 1116 | }, 400); | ||
| 1117 | |||
| 1118 | if ( 'deltaX' in e ) { | ||
| 1119 | if (e.deltaMode === 1) { | ||
| 1120 | wheelDeltaX = -e.deltaX * this.options.mouseWheelSpeed; | ||
| 1121 | wheelDeltaY = -e.deltaY * this.options.mouseWheelSpeed; | ||
| 1122 | } else { | ||
| 1123 | wheelDeltaX = -e.deltaX; | ||
| 1124 | wheelDeltaY = -e.deltaY; | ||
| 1125 | } | ||
| 1126 | } else if ( 'wheelDeltaX' in e ) { | ||
| 1127 | wheelDeltaX = e.wheelDeltaX / 120 * this.options.mouseWheelSpeed; | ||
| 1128 | wheelDeltaY = e.wheelDeltaY / 120 * this.options.mouseWheelSpeed; | ||
| 1129 | } else if ( 'wheelDelta' in e ) { | ||
| 1130 | wheelDeltaX = wheelDeltaY = e.wheelDelta / 120 * this.options.mouseWheelSpeed; | ||
| 1131 | } else if ( 'detail' in e ) { | ||
| 1132 | wheelDeltaX = wheelDeltaY = -e.detail / 3 * this.options.mouseWheelSpeed; | ||
| 1133 | } else { | ||
| 1134 | return; | ||
| 1135 | } | ||
| 1136 | |||
| 1137 | wheelDeltaX *= this.options.invertWheelDirection; | ||
| 1138 | wheelDeltaY *= this.options.invertWheelDirection; | ||
| 1139 | |||
| 1140 | if ( !this.hasVerticalScroll ) { | ||
| 1141 | wheelDeltaX = wheelDeltaY; | ||
| 1142 | wheelDeltaY = 0; | ||
| 1143 | } | ||
| 1144 | |||
| 1145 | if ( this.options.snap ) { | ||
| 1146 | newX = this.currentPage.pageX; | ||
| 1147 | newY = this.currentPage.pageY; | ||
| 1148 | |||
| 1149 | if ( wheelDeltaX > 0 ) { | ||
| 1150 | newX--; | ||
| 1151 | } else if ( wheelDeltaX < 0 ) { | ||
| 1152 | newX++; | ||
| 1153 | } | ||
| 1154 | |||
| 1155 | if ( wheelDeltaY > 0 ) { | ||
| 1156 | newY--; | ||
| 1157 | } else if ( wheelDeltaY < 0 ) { | ||
| 1158 | newY++; | ||
| 1159 | } | ||
| 1160 | |||
| 1161 | this.goToPage(newX, newY); | ||
| 1162 | |||
| 1163 | return; | ||
| 1164 | } | ||
| 1165 | |||
| 1166 | newX = this.x + Math.round(this.hasHorizontalScroll ? wheelDeltaX : 0); | ||
| 1167 | newY = this.y + Math.round(this.hasVerticalScroll ? wheelDeltaY : 0); | ||
| 1168 | |||
| 1169 | this.directionX = wheelDeltaX > 0 ? -1 : wheelDeltaX < 0 ? 1 : 0; | ||
| 1170 | this.directionY = wheelDeltaY > 0 ? -1 : wheelDeltaY < 0 ? 1 : 0; | ||
| 1171 | |||
| 1172 | if ( newX > 0 ) { | ||
| 1173 | newX = 0; | ||
| 1174 | } else if ( newX < this.maxScrollX ) { | ||
| 1175 | newX = this.maxScrollX; | ||
| 1176 | } | ||
| 1177 | |||
| 1178 | if ( newY > 0 ) { | ||
| 1179 | newY = 0; | ||
| 1180 | } else if ( newY < this.maxScrollY ) { | ||
| 1181 | newY = this.maxScrollY; | ||
| 1182 | } | ||
| 1183 | |||
| 1184 | this.scrollTo(newX, newY, 0); | ||
| 1185 | |||
| 1186 | if ( this.options.probeType > 1 ) { | ||
| 1187 | this._execEvent('scroll'); | ||
| 1188 | } | ||
| 1189 | |||
| 1190 | // INSERT POINT: _wheel | ||
| 1191 | }, | ||
| 1192 | |||
| 1193 | _initSnap: function () { | ||
| 1194 | this.currentPage = {}; | ||
| 1195 | |||
| 1196 | if ( typeof this.options.snap == 'string' ) { | ||
| 1197 | this.options.snap = this.scroller.querySelectorAll(this.options.snap); | ||
| 1198 | } | ||
| 1199 | |||
| 1200 | this.on('refresh', function () { | ||
| 1201 | var i = 0, l, | ||
| 1202 | m = 0, n, | ||
| 1203 | cx, cy, | ||
| 1204 | x = 0, y, | ||
| 1205 | stepX = this.options.snapStepX || this.wrapperWidth, | ||
| 1206 | stepY = this.options.snapStepY || this.wrapperHeight, | ||
| 1207 | el; | ||
| 1208 | |||
| 1209 | this.pages = []; | ||
| 1210 | |||
| 1211 | if ( !this.wrapperWidth || !this.wrapperHeight || !this.scrollerWidth || !this.scrollerHeight ) { | ||
| 1212 | return; | ||
| 1213 | } | ||
| 1214 | |||
| 1215 | if ( this.options.snap === true ) { | ||
| 1216 | cx = Math.round( stepX / 2 ); | ||
| 1217 | cy = Math.round( stepY / 2 ); | ||
| 1218 | |||
| 1219 | while ( x > -this.scrollerWidth ) { | ||
| 1220 | this.pages[i] = []; | ||
| 1221 | l = 0; | ||
| 1222 | y = 0; | ||
| 1223 | |||
| 1224 | while ( y > -this.scrollerHeight ) { | ||
| 1225 | this.pages[i][l] = { | ||
| 1226 | x: Math.max(x, this.maxScrollX), | ||
| 1227 | y: Math.max(y, this.maxScrollY), | ||
| 1228 | width: stepX, | ||
| 1229 | height: stepY, | ||
| 1230 | cx: x - cx, | ||
| 1231 | cy: y - cy | ||
| 1232 | }; | ||
| 1233 | |||
| 1234 | y -= stepY; | ||
| 1235 | l++; | ||
| 1236 | } | ||
| 1237 | |||
| 1238 | x -= stepX; | ||
| 1239 | i++; | ||
| 1240 | } | ||
| 1241 | } else { | ||
| 1242 | el = this.options.snap; | ||
| 1243 | l = el.length; | ||
| 1244 | n = -1; | ||
| 1245 | |||
| 1246 | for ( ; i < l; i++ ) { | ||
| 1247 | if ( i === 0 || el[i].offsetLeft <= el[i-1].offsetLeft ) { | ||
| 1248 | m = 0; | ||
| 1249 | n++; | ||
| 1250 | } | ||
| 1251 | |||
| 1252 | if ( !this.pages[m] ) { | ||
| 1253 | this.pages[m] = []; | ||
| 1254 | } | ||
| 1255 | |||
| 1256 | x = Math.max(-el[i].offsetLeft, this.maxScrollX); | ||
| 1257 | y = Math.max(-el[i].offsetTop, this.maxScrollY); | ||
| 1258 | cx = x - Math.round(el[i].offsetWidth / 2); | ||
| 1259 | cy = y - Math.round(el[i].offsetHeight / 2); | ||
| 1260 | |||
| 1261 | this.pages[m][n] = { | ||
| 1262 | x: x, | ||
| 1263 | y: y, | ||
| 1264 | width: el[i].offsetWidth, | ||
| 1265 | height: el[i].offsetHeight, | ||
| 1266 | cx: cx, | ||
| 1267 | cy: cy | ||
| 1268 | }; | ||
| 1269 | |||
| 1270 | if ( x > this.maxScrollX ) { | ||
| 1271 | m++; | ||
| 1272 | } | ||
| 1273 | } | ||
| 1274 | } | ||
| 1275 | |||
| 1276 | this.goToPage(this.currentPage.pageX || 0, this.currentPage.pageY || 0, 0); | ||
| 1277 | |||
| 1278 | // Update snap threshold if needed | ||
| 1279 | if ( this.options.snapThreshold % 1 === 0 ) { | ||
| 1280 | this.snapThresholdX = this.options.snapThreshold; | ||
| 1281 | this.snapThresholdY = this.options.snapThreshold; | ||
| 1282 | } else { | ||
| 1283 | this.snapThresholdX = Math.round(this.pages[this.currentPage.pageX][this.currentPage.pageY].width * this.options.snapThreshold); | ||
| 1284 | this.snapThresholdY = Math.round(this.pages[this.currentPage.pageX][this.currentPage.pageY].height * this.options.snapThreshold); | ||
| 1285 | } | ||
| 1286 | }); | ||
| 1287 | |||
| 1288 | this.on('flick', function () { | ||
| 1289 | var time = this.options.snapSpeed || Math.max( | ||
| 1290 | Math.max( | ||
| 1291 | Math.min(Math.abs(this.x - this.startX), 1000), | ||
| 1292 | Math.min(Math.abs(this.y - this.startY), 1000) | ||
| 1293 | ), 300); | ||
| 1294 | |||
| 1295 | this.goToPage( | ||
| 1296 | this.currentPage.pageX + this.directionX, | ||
| 1297 | this.currentPage.pageY + this.directionY, | ||
| 1298 | time | ||
| 1299 | ); | ||
| 1300 | }); | ||
| 1301 | }, | ||
| 1302 | |||
| 1303 | _nearestSnap: function (x, y) { | ||
| 1304 | if ( !this.pages.length ) { | ||
| 1305 | return { x: 0, y: 0, pageX: 0, pageY: 0 }; | ||
| 1306 | } | ||
| 1307 | |||
| 1308 | var i = 0, | ||
| 1309 | l = this.pages.length, | ||
| 1310 | m = 0; | ||
| 1311 | |||
| 1312 | // Check if we exceeded the snap threshold | ||
| 1313 | if ( Math.abs(x - this.absStartX) < this.snapThresholdX && | ||
| 1314 | Math.abs(y - this.absStartY) < this.snapThresholdY ) { | ||
| 1315 | return this.currentPage; | ||
| 1316 | } | ||
| 1317 | |||
| 1318 | if ( x > 0 ) { | ||
| 1319 | x = 0; | ||
| 1320 | } else if ( x < this.maxScrollX ) { | ||
| 1321 | x = this.maxScrollX; | ||
| 1322 | } | ||
| 1323 | |||
| 1324 | if ( y > 0 ) { | ||
| 1325 | y = 0; | ||
| 1326 | } else if ( y < this.maxScrollY ) { | ||
| 1327 | y = this.maxScrollY; | ||
| 1328 | } | ||
| 1329 | |||
| 1330 | for ( ; i < l; i++ ) { | ||
| 1331 | if ( x >= this.pages[i][0].cx ) { | ||
| 1332 | x = this.pages[i][0].x; | ||
| 1333 | break; | ||
| 1334 | } | ||
| 1335 | } | ||
| 1336 | |||
| 1337 | l = this.pages[i].length; | ||
| 1338 | |||
| 1339 | for ( ; m < l; m++ ) { | ||
| 1340 | if ( y >= this.pages[0][m].cy ) { | ||
| 1341 | y = this.pages[0][m].y; | ||
| 1342 | break; | ||
| 1343 | } | ||
| 1344 | } | ||
| 1345 | |||
| 1346 | if ( i == this.currentPage.pageX ) { | ||
| 1347 | i += this.directionX; | ||
| 1348 | |||
| 1349 | if ( i < 0 ) { | ||
| 1350 | i = 0; | ||
| 1351 | } else if ( i >= this.pages.length ) { | ||
| 1352 | i = this.pages.length - 1; | ||
| 1353 | } | ||
| 1354 | |||
| 1355 | x = this.pages[i][0].x; | ||
| 1356 | } | ||
| 1357 | |||
| 1358 | if ( m == this.currentPage.pageY ) { | ||
| 1359 | m += this.directionY; | ||
| 1360 | |||
| 1361 | if ( m < 0 ) { | ||
| 1362 | m = 0; | ||
| 1363 | } else if ( m >= this.pages[0].length ) { | ||
| 1364 | m = this.pages[0].length - 1; | ||
| 1365 | } | ||
| 1366 | |||
| 1367 | y = this.pages[0][m].y; | ||
| 1368 | } | ||
| 1369 | |||
| 1370 | return { | ||
| 1371 | x: x, | ||
| 1372 | y: y, | ||
| 1373 | pageX: i, | ||
| 1374 | pageY: m | ||
| 1375 | }; | ||
| 1376 | }, | ||
| 1377 | |||
| 1378 | goToPage: function (x, y, time, easing) { | ||
| 1379 | easing = easing || this.options.bounceEasing; | ||
| 1380 | |||
| 1381 | if ( x >= this.pages.length ) { | ||
| 1382 | x = this.pages.length - 1; | ||
| 1383 | } else if ( x < 0 ) { | ||
| 1384 | x = 0; | ||
| 1385 | } | ||
| 1386 | |||
| 1387 | if ( y >= this.pages[x].length ) { | ||
| 1388 | y = this.pages[x].length - 1; | ||
| 1389 | } else if ( y < 0 ) { | ||
| 1390 | y = 0; | ||
| 1391 | } | ||
| 1392 | |||
| 1393 | var posX = this.pages[x][y].x, | ||
| 1394 | posY = this.pages[x][y].y; | ||
| 1395 | |||
| 1396 | time = time === undefined ? this.options.snapSpeed || Math.max( | ||
| 1397 | Math.max( | ||
| 1398 | Math.min(Math.abs(posX - this.x), 1000), | ||
| 1399 | Math.min(Math.abs(posY - this.y), 1000) | ||
| 1400 | ), 300) : time; | ||
| 1401 | |||
| 1402 | this.currentPage = { | ||
| 1403 | x: posX, | ||
| 1404 | y: posY, | ||
| 1405 | pageX: x, | ||
| 1406 | pageY: y | ||
| 1407 | }; | ||
| 1408 | |||
| 1409 | this.scrollTo(posX, posY, time, easing); | ||
| 1410 | }, | ||
| 1411 | |||
| 1412 | next: function (time, easing) { | ||
| 1413 | var x = this.currentPage.pageX, | ||
| 1414 | y = this.currentPage.pageY; | ||
| 1415 | |||
| 1416 | x++; | ||
| 1417 | |||
| 1418 | if ( x >= this.pages.length && this.hasVerticalScroll ) { | ||
| 1419 | x = 0; | ||
| 1420 | y++; | ||
| 1421 | } | ||
| 1422 | |||
| 1423 | this.goToPage(x, y, time, easing); | ||
| 1424 | }, | ||
| 1425 | |||
| 1426 | prev: function (time, easing) { | ||
| 1427 | var x = this.currentPage.pageX, | ||
| 1428 | y = this.currentPage.pageY; | ||
| 1429 | |||
| 1430 | x--; | ||
| 1431 | |||
| 1432 | if ( x < 0 && this.hasVerticalScroll ) { | ||
| 1433 | x = 0; | ||
| 1434 | y--; | ||
| 1435 | } | ||
| 1436 | |||
| 1437 | this.goToPage(x, y, time, easing); | ||
| 1438 | }, | ||
| 1439 | |||
| 1440 | _initKeys: function (e) { | ||
| 1441 | // default key bindings | ||
| 1442 | var keys = { | ||
| 1443 | pageUp: 33, | ||
| 1444 | pageDown: 34, | ||
| 1445 | end: 35, | ||
| 1446 | home: 36, | ||
| 1447 | left: 37, | ||
| 1448 | up: 38, | ||
| 1449 | right: 39, | ||
| 1450 | down: 40 | ||
| 1451 | }; | ||
| 1452 | var i; | ||
| 1453 | |||
| 1454 | // if you give me characters I give you keycode | ||
| 1455 | if ( typeof this.options.keyBindings == 'object' ) { | ||
| 1456 | for ( i in this.options.keyBindings ) { | ||
| 1457 | if ( typeof this.options.keyBindings[i] == 'string' ) { | ||
| 1458 | this.options.keyBindings[i] = this.options.keyBindings[i].toUpperCase().charCodeAt(0); | ||
| 1459 | } | ||
| 1460 | } | ||
| 1461 | } else { | ||
| 1462 | this.options.keyBindings = {}; | ||
| 1463 | } | ||
| 1464 | |||
| 1465 | for ( i in keys ) { | ||
| 1466 | this.options.keyBindings[i] = this.options.keyBindings[i] || keys[i]; | ||
| 1467 | } | ||
| 1468 | |||
| 1469 | utils.addEvent(window, 'keydown', this); | ||
| 1470 | |||
| 1471 | this.on('destroy', function () { | ||
| 1472 | utils.removeEvent(window, 'keydown', this); | ||
| 1473 | }); | ||
| 1474 | }, | ||
| 1475 | |||
| 1476 | _key: function (e) { | ||
| 1477 | if ( !this.enabled ) { | ||
| 1478 | return; | ||
| 1479 | } | ||
| 1480 | |||
| 1481 | var snap = this.options.snap, // we are using this alot, better to cache it | ||
| 1482 | newX = snap ? this.currentPage.pageX : this.x, | ||
| 1483 | newY = snap ? this.currentPage.pageY : this.y, | ||
| 1484 | now = utils.getTime(), | ||
| 1485 | prevTime = this.keyTime || 0, | ||
| 1486 | acceleration = 0.250, | ||
| 1487 | pos; | ||
| 1488 | |||
| 1489 | if ( this.options.useTransition && this.isInTransition ) { | ||
| 1490 | pos = this.getComputedPosition(); | ||
| 1491 | |||
| 1492 | this._translate(Math.round(pos.x), Math.round(pos.y)); | ||
| 1493 | this.isInTransition = false; | ||
| 1494 | } | ||
| 1495 | |||
| 1496 | this.keyAcceleration = now - prevTime < 200 ? Math.min(this.keyAcceleration + acceleration, 50) : 0; | ||
| 1497 | |||
| 1498 | switch ( e.keyCode ) { | ||
| 1499 | case this.options.keyBindings.pageUp: | ||
| 1500 | if ( this.hasHorizontalScroll && !this.hasVerticalScroll ) { | ||
| 1501 | newX += snap ? 1 : this.wrapperWidth; | ||
| 1502 | } else { | ||
| 1503 | newY += snap ? 1 : this.wrapperHeight; | ||
| 1504 | } | ||
| 1505 | break; | ||
| 1506 | case this.options.keyBindings.pageDown: | ||
| 1507 | if ( this.hasHorizontalScroll && !this.hasVerticalScroll ) { | ||
| 1508 | newX -= snap ? 1 : this.wrapperWidth; | ||
| 1509 | } else { | ||
| 1510 | newY -= snap ? 1 : this.wrapperHeight; | ||
| 1511 | } | ||
| 1512 | break; | ||
| 1513 | case this.options.keyBindings.end: | ||
| 1514 | newX = snap ? this.pages.length-1 : this.maxScrollX; | ||
| 1515 | newY = snap ? this.pages[0].length-1 : this.maxScrollY; | ||
| 1516 | break; | ||
| 1517 | case this.options.keyBindings.home: | ||
| 1518 | newX = 0; | ||
| 1519 | newY = 0; | ||
| 1520 | break; | ||
| 1521 | case this.options.keyBindings.left: | ||
| 1522 | newX += snap ? -1 : 5 + this.keyAcceleration>>0; | ||
| 1523 | break; | ||
| 1524 | case this.options.keyBindings.up: | ||
| 1525 | newY += snap ? 1 : 5 + this.keyAcceleration>>0; | ||
| 1526 | break; | ||
| 1527 | case this.options.keyBindings.right: | ||
| 1528 | newX -= snap ? -1 : 5 + this.keyAcceleration>>0; | ||
| 1529 | break; | ||
| 1530 | case this.options.keyBindings.down: | ||
| 1531 | newY -= snap ? 1 : 5 + this.keyAcceleration>>0; | ||
| 1532 | break; | ||
| 1533 | default: | ||
| 1534 | return; | ||
| 1535 | } | ||
| 1536 | |||
| 1537 | if ( snap ) { | ||
| 1538 | this.goToPage(newX, newY); | ||
| 1539 | return; | ||
| 1540 | } | ||
| 1541 | |||
| 1542 | if ( newX > 0 ) { | ||
| 1543 | newX = 0; | ||
| 1544 | this.keyAcceleration = 0; | ||
| 1545 | } else if ( newX < this.maxScrollX ) { | ||
| 1546 | newX = this.maxScrollX; | ||
| 1547 | this.keyAcceleration = 0; | ||
| 1548 | } | ||
| 1549 | |||
| 1550 | if ( newY > 0 ) { | ||
| 1551 | newY = 0; | ||
| 1552 | this.keyAcceleration = 0; | ||
| 1553 | } else if ( newY < this.maxScrollY ) { | ||
| 1554 | newY = this.maxScrollY; | ||
| 1555 | this.keyAcceleration = 0; | ||
| 1556 | } | ||
| 1557 | |||
| 1558 | this.scrollTo(newX, newY, 0); | ||
| 1559 | |||
| 1560 | this.keyTime = now; | ||
| 1561 | }, | ||
| 1562 | |||
| 1563 | _animate: function (destX, destY, duration, easingFn) { | ||
| 1564 | var that = this, | ||
| 1565 | startX = this.x, | ||
| 1566 | startY = this.y, | ||
| 1567 | startTime = utils.getTime(), | ||
| 1568 | destTime = startTime + duration; | ||
| 1569 | |||
| 1570 | function step () { | ||
| 1571 | var now = utils.getTime(), | ||
| 1572 | newX, newY, | ||
| 1573 | easing; | ||
| 1574 | |||
| 1575 | if ( now >= destTime ) { | ||
| 1576 | that.isAnimating = false; | ||
| 1577 | that._translate(destX, destY); | ||
| 1578 | |||
| 1579 | if ( !that.resetPosition(that.options.bounceTime) ) { | ||
| 1580 | that._execEvent('scrollEnd'); | ||
| 1581 | } | ||
| 1582 | |||
| 1583 | return; | ||
| 1584 | } | ||
| 1585 | |||
| 1586 | now = ( now - startTime ) / duration; | ||
| 1587 | easing = easingFn(now); | ||
| 1588 | newX = ( destX - startX ) * easing + startX; | ||
| 1589 | newY = ( destY - startY ) * easing + startY; | ||
| 1590 | that._translate(newX, newY); | ||
| 1591 | |||
| 1592 | if ( that.isAnimating ) { | ||
| 1593 | rAF(step); | ||
| 1594 | } | ||
| 1595 | |||
| 1596 | if ( that.options.probeType == 3 ) { | ||
| 1597 | that._execEvent('scroll'); | ||
| 1598 | } | ||
| 1599 | } | ||
| 1600 | |||
| 1601 | this.isAnimating = true; | ||
| 1602 | step(); | ||
| 1603 | }, | ||
| 1604 | |||
| 1605 | handleEvent: function (e) { | ||
| 1606 | switch ( e.type ) { | ||
| 1607 | case 'touchstart': | ||
| 1608 | case 'pointerdown': | ||
| 1609 | case 'MSPointerDown': | ||
| 1610 | case 'mousedown': | ||
| 1611 | this._start(e); | ||
| 1612 | break; | ||
| 1613 | case 'touchmove': | ||
| 1614 | case 'pointermove': | ||
| 1615 | case 'MSPointerMove': | ||
| 1616 | case 'mousemove': | ||
| 1617 | this._move(e); | ||
| 1618 | break; | ||
| 1619 | case 'touchend': | ||
| 1620 | case 'pointerup': | ||
| 1621 | case 'MSPointerUp': | ||
| 1622 | case 'mouseup': | ||
| 1623 | case 'touchcancel': | ||
| 1624 | case 'pointercancel': | ||
| 1625 | case 'MSPointerCancel': | ||
| 1626 | case 'mousecancel': | ||
| 1627 | this._end(e); | ||
| 1628 | break; | ||
| 1629 | case 'orientationchange': | ||
| 1630 | case 'resize': | ||
| 1631 | this._resize(); | ||
| 1632 | break; | ||
| 1633 | case 'transitionend': | ||
| 1634 | case 'webkitTransitionEnd': | ||
| 1635 | case 'oTransitionEnd': | ||
| 1636 | case 'MSTransitionEnd': | ||
| 1637 | this._transitionEnd(e); | ||
| 1638 | break; | ||
| 1639 | case 'wheel': | ||
| 1640 | case 'DOMMouseScroll': | ||
| 1641 | case 'mousewheel': | ||
| 1642 | this._wheel(e); | ||
| 1643 | break; | ||
| 1644 | case 'keydown': | ||
| 1645 | this._key(e); | ||
| 1646 | break; | ||
| 1647 | case 'click': | ||
| 1648 | if ( this.enabled && !e._constructed ) { | ||
| 1649 | e.preventDefault(); | ||
| 1650 | e.stopPropagation(); | ||
| 1651 | } | ||
| 1652 | break; | ||
| 1653 | } | ||
| 1654 | } | ||
| 1655 | }; | ||
| 1656 | function createDefaultScrollbar (direction, interactive, type) { | ||
| 1657 | var scrollbar = document.createElement('div'), | ||
| 1658 | indicator = document.createElement('div'); | ||
| 1659 | |||
| 1660 | if ( type === true ) { | ||
| 1661 | scrollbar.style.cssText = 'position:absolute;z-index:9999'; | ||
| 1662 | indicator.style.cssText = '-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;background:rgba(0,0,0,0.5);border:1px solid rgba(255,255,255,0.9);border-radius:3px'; | ||
| 1663 | } | ||
| 1664 | |||
| 1665 | indicator.className = 'iScrollIndicator'; | ||
| 1666 | |||
| 1667 | if ( direction == 'h' ) { | ||
| 1668 | if ( type === true ) { | ||
| 1669 | scrollbar.style.cssText += ';height:7px;left:2px;right:2px;bottom:0'; | ||
| 1670 | indicator.style.height = '100%'; | ||
| 1671 | } | ||
| 1672 | scrollbar.className = 'iScrollHorizontalScrollbar'; | ||
| 1673 | } else { | ||
| 1674 | if ( type === true ) { | ||
| 1675 | scrollbar.style.cssText += ';width:7px;bottom:2px;top:2px;right:1px'; | ||
| 1676 | indicator.style.width = '100%'; | ||
| 1677 | } | ||
| 1678 | scrollbar.className = 'iScrollVerticalScrollbar'; | ||
| 1679 | } | ||
| 1680 | |||
| 1681 | scrollbar.style.cssText += ';overflow:hidden'; | ||
| 1682 | |||
| 1683 | if ( !interactive ) { | ||
| 1684 | scrollbar.style.pointerEvents = 'none'; | ||
| 1685 | } | ||
| 1686 | |||
| 1687 | scrollbar.appendChild(indicator); | ||
| 1688 | |||
| 1689 | return scrollbar; | ||
| 1690 | } | ||
| 1691 | |||
| 1692 | function Indicator (scroller, options) { | ||
| 1693 | this.wrapper = typeof options.el == 'string' ? document.querySelector(options.el) : options.el; | ||
| 1694 | this.wrapperStyle = this.wrapper.style; | ||
| 1695 | this.indicator = this.wrapper.children[0]; | ||
| 1696 | this.indicatorStyle = this.indicator.style; | ||
| 1697 | this.scroller = scroller; | ||
| 1698 | |||
| 1699 | this.options = { | ||
| 1700 | listenX: true, | ||
| 1701 | listenY: true, | ||
| 1702 | interactive: false, | ||
| 1703 | resize: true, | ||
| 1704 | defaultScrollbars: false, | ||
| 1705 | shrink: false, | ||
| 1706 | fade: false, | ||
| 1707 | speedRatioX: 0, | ||
| 1708 | speedRatioY: 0 | ||
| 1709 | }; | ||
| 1710 | |||
| 1711 | for ( var i in options ) { | ||
| 1712 | this.options[i] = options[i]; | ||
| 1713 | } | ||
| 1714 | |||
| 1715 | this.sizeRatioX = 1; | ||
| 1716 | this.sizeRatioY = 1; | ||
| 1717 | this.maxPosX = 0; | ||
| 1718 | this.maxPosY = 0; | ||
| 1719 | |||
| 1720 | if ( this.options.interactive ) { | ||
| 1721 | if ( !this.options.disableTouch ) { | ||
| 1722 | utils.addEvent(this.indicator, 'touchstart', this); | ||
| 1723 | utils.addEvent(window, 'touchend', this); | ||
| 1724 | } | ||
| 1725 | if ( !this.options.disablePointer ) { | ||
| 1726 | utils.addEvent(this.indicator, utils.prefixPointerEvent('pointerdown'), this); | ||
| 1727 | utils.addEvent(window, utils.prefixPointerEvent('pointerup'), this); | ||
| 1728 | } | ||
| 1729 | if ( !this.options.disableMouse ) { | ||
| 1730 | utils.addEvent(this.indicator, 'mousedown', this); | ||
| 1731 | utils.addEvent(window, 'mouseup', this); | ||
| 1732 | } | ||
| 1733 | } | ||
| 1734 | |||
| 1735 | if ( this.options.fade ) { | ||
| 1736 | this.wrapperStyle[utils.style.transform] = this.scroller.translateZ; | ||
| 1737 | var durationProp = utils.style.transitionDuration; | ||
| 1738 | this.wrapperStyle[durationProp] = utils.isBadAndroid ? '0.0001ms' : '0ms'; | ||
| 1739 | // remove 0.0001ms | ||
| 1740 | var self = this; | ||
| 1741 | if(utils.isBadAndroid) { | ||
| 1742 | rAF(function() { | ||
| 1743 | if(self.wrapperStyle[durationProp] === '0.0001ms') { | ||
| 1744 | self.wrapperStyle[durationProp] = '0s'; | ||
| 1745 | } | ||
| 1746 | }); | ||
| 1747 | } | ||
| 1748 | this.wrapperStyle.opacity = '0'; | ||
| 1749 | } | ||
| 1750 | } | ||
| 1751 | |||
| 1752 | Indicator.prototype = { | ||
| 1753 | handleEvent: function (e) { | ||
| 1754 | switch ( e.type ) { | ||
| 1755 | case 'touchstart': | ||
| 1756 | case 'pointerdown': | ||
| 1757 | case 'MSPointerDown': | ||
| 1758 | case 'mousedown': | ||
| 1759 | this._start(e); | ||
| 1760 | break; | ||
| 1761 | case 'touchmove': | ||
| 1762 | case 'pointermove': | ||
| 1763 | case 'MSPointerMove': | ||
| 1764 | case 'mousemove': | ||
| 1765 | this._move(e); | ||
| 1766 | break; | ||
| 1767 | case 'touchend': | ||
| 1768 | case 'pointerup': | ||
| 1769 | case 'MSPointerUp': | ||
| 1770 | case 'mouseup': | ||
| 1771 | case 'touchcancel': | ||
| 1772 | case 'pointercancel': | ||
| 1773 | case 'MSPointerCancel': | ||
| 1774 | case 'mousecancel': | ||
| 1775 | this._end(e); | ||
| 1776 | break; | ||
| 1777 | } | ||
| 1778 | }, | ||
| 1779 | |||
| 1780 | destroy: function () { | ||
| 1781 | if ( this.options.fadeScrollbars ) { | ||
| 1782 | clearTimeout(this.fadeTimeout); | ||
| 1783 | this.fadeTimeout = null; | ||
| 1784 | } | ||
| 1785 | if ( this.options.interactive ) { | ||
| 1786 | utils.removeEvent(this.indicator, 'touchstart', this); | ||
| 1787 | utils.removeEvent(this.indicator, utils.prefixPointerEvent('pointerdown'), this); | ||
| 1788 | utils.removeEvent(this.indicator, 'mousedown', this); | ||
| 1789 | |||
| 1790 | utils.removeEvent(window, 'touchmove', this); | ||
| 1791 | utils.removeEvent(window, utils.prefixPointerEvent('pointermove'), this); | ||
| 1792 | utils.removeEvent(window, 'mousemove', this); | ||
| 1793 | |||
| 1794 | utils.removeEvent(window, 'touchend', this); | ||
| 1795 | utils.removeEvent(window, utils.prefixPointerEvent('pointerup'), this); | ||
| 1796 | utils.removeEvent(window, 'mouseup', this); | ||
| 1797 | } | ||
| 1798 | |||
| 1799 | if ( this.options.defaultScrollbars ) { | ||
| 1800 | this.wrapper.parentNode.removeChild(this.wrapper); | ||
| 1801 | } | ||
| 1802 | }, | ||
| 1803 | |||
| 1804 | _start: function (e) { | ||
| 1805 | var point = e.touches ? e.touches[0] : e; | ||
| 1806 | |||
| 1807 | e.preventDefault(); | ||
| 1808 | e.stopPropagation(); | ||
| 1809 | |||
| 1810 | this.transitionTime(); | ||
| 1811 | |||
| 1812 | this.initiated = true; | ||
| 1813 | this.moved = false; | ||
| 1814 | this.lastPointX = point.pageX; | ||
| 1815 | this.lastPointY = point.pageY; | ||
| 1816 | |||
| 1817 | this.startTime = utils.getTime(); | ||
| 1818 | |||
| 1819 | if ( !this.options.disableTouch ) { | ||
| 1820 | utils.addEvent(window, 'touchmove', this); | ||
| 1821 | } | ||
| 1822 | if ( !this.options.disablePointer ) { | ||
| 1823 | utils.addEvent(window, utils.prefixPointerEvent('pointermove'), this); | ||
| 1824 | } | ||
| 1825 | if ( !this.options.disableMouse ) { | ||
| 1826 | utils.addEvent(window, 'mousemove', this); | ||
| 1827 | } | ||
| 1828 | |||
| 1829 | this.scroller._execEvent('beforeScrollStart'); | ||
| 1830 | }, | ||
| 1831 | |||
| 1832 | _move: function (e) { | ||
| 1833 | var point = e.touches ? e.touches[0] : e, | ||
| 1834 | deltaX, deltaY, | ||
| 1835 | newX, newY, | ||
| 1836 | timestamp = utils.getTime(); | ||
| 1837 | |||
| 1838 | if ( !this.moved ) { | ||
| 1839 | this.scroller._execEvent('scrollStart'); | ||
| 1840 | } | ||
| 1841 | |||
| 1842 | this.moved = true; | ||
| 1843 | |||
| 1844 | deltaX = point.pageX - this.lastPointX; | ||
| 1845 | this.lastPointX = point.pageX; | ||
| 1846 | |||
| 1847 | deltaY = point.pageY - this.lastPointY; | ||
| 1848 | this.lastPointY = point.pageY; | ||
| 1849 | |||
| 1850 | newX = this.x + deltaX; | ||
| 1851 | newY = this.y + deltaY; | ||
| 1852 | |||
| 1853 | this._pos(newX, newY); | ||
| 1854 | |||
| 1855 | |||
| 1856 | if ( this.scroller.options.probeType == 1 && timestamp - this.startTime > 300 ) { | ||
| 1857 | this.startTime = timestamp; | ||
| 1858 | this.scroller._execEvent('scroll'); | ||
| 1859 | } else if ( this.scroller.options.probeType > 1 ) { | ||
| 1860 | this.scroller._execEvent('scroll'); | ||
| 1861 | } | ||
| 1862 | |||
| 1863 | |||
| 1864 | // INSERT POINT: indicator._move | ||
| 1865 | |||
| 1866 | e.preventDefault(); | ||
| 1867 | e.stopPropagation(); | ||
| 1868 | }, | ||
| 1869 | |||
| 1870 | _end: function (e) { | ||
| 1871 | if ( !this.initiated ) { | ||
| 1872 | return; | ||
| 1873 | } | ||
| 1874 | |||
| 1875 | this.initiated = false; | ||
| 1876 | |||
| 1877 | e.preventDefault(); | ||
| 1878 | e.stopPropagation(); | ||
| 1879 | |||
| 1880 | utils.removeEvent(window, 'touchmove', this); | ||
| 1881 | utils.removeEvent(window, utils.prefixPointerEvent('pointermove'), this); | ||
| 1882 | utils.removeEvent(window, 'mousemove', this); | ||
| 1883 | |||
| 1884 | if ( this.scroller.options.snap ) { | ||
| 1885 | var snap = this.scroller._nearestSnap(this.scroller.x, this.scroller.y); | ||
| 1886 | |||
| 1887 | var time = this.options.snapSpeed || Math.max( | ||
| 1888 | Math.max( | ||
| 1889 | Math.min(Math.abs(this.scroller.x - snap.x), 1000), | ||
| 1890 | Math.min(Math.abs(this.scroller.y - snap.y), 1000) | ||
| 1891 | ), 300); | ||
| 1892 | |||
| 1893 | if ( this.scroller.x != snap.x || this.scroller.y != snap.y ) { | ||
| 1894 | this.scroller.directionX = 0; | ||
| 1895 | this.scroller.directionY = 0; | ||
| 1896 | this.scroller.currentPage = snap; | ||
| 1897 | this.scroller.scrollTo(snap.x, snap.y, time, this.scroller.options.bounceEasing); | ||
| 1898 | } | ||
| 1899 | } | ||
| 1900 | |||
| 1901 | if ( this.moved ) { | ||
| 1902 | this.scroller._execEvent('scrollEnd'); | ||
| 1903 | } | ||
| 1904 | }, | ||
| 1905 | |||
| 1906 | transitionTime: function (time) { | ||
| 1907 | time = time || 0; | ||
| 1908 | var durationProp = utils.style.transitionDuration; | ||
| 1909 | this.indicatorStyle[durationProp] = time + 'ms'; | ||
| 1910 | |||
| 1911 | if ( !time && utils.isBadAndroid ) { | ||
| 1912 | this.indicatorStyle[durationProp] = '0.0001ms'; | ||
| 1913 | // remove 0.0001ms | ||
| 1914 | var self = this; | ||
| 1915 | rAF(function() { | ||
| 1916 | if(self.indicatorStyle[durationProp] === '0.0001ms') { | ||
| 1917 | self.indicatorStyle[durationProp] = '0s'; | ||
| 1918 | } | ||
| 1919 | }); | ||
| 1920 | } | ||
| 1921 | }, | ||
| 1922 | |||
| 1923 | transitionTimingFunction: function (easing) { | ||
| 1924 | this.indicatorStyle[utils.style.transitionTimingFunction] = easing; | ||
| 1925 | }, | ||
| 1926 | |||
| 1927 | refresh: function () { | ||
| 1928 | this.transitionTime(); | ||
| 1929 | |||
| 1930 | if ( this.options.listenX && !this.options.listenY ) { | ||
| 1931 | this.indicatorStyle.display = this.scroller.hasHorizontalScroll ? 'block' : 'none'; | ||
| 1932 | } else if ( this.options.listenY && !this.options.listenX ) { | ||
| 1933 | this.indicatorStyle.display = this.scroller.hasVerticalScroll ? 'block' : 'none'; | ||
| 1934 | } else { | ||
| 1935 | this.indicatorStyle.display = this.scroller.hasHorizontalScroll || this.scroller.hasVerticalScroll ? 'block' : 'none'; | ||
| 1936 | } | ||
| 1937 | |||
| 1938 | if ( this.scroller.hasHorizontalScroll && this.scroller.hasVerticalScroll ) { | ||
| 1939 | utils.addClass(this.wrapper, 'iScrollBothScrollbars'); | ||
| 1940 | utils.removeClass(this.wrapper, 'iScrollLoneScrollbar'); | ||
| 1941 | |||
| 1942 | if ( this.options.defaultScrollbars && this.options.customStyle ) { | ||
| 1943 | if ( this.options.listenX ) { | ||
| 1944 | this.wrapper.style.right = '8px'; | ||
| 1945 | } else { | ||
| 1946 | this.wrapper.style.bottom = '8px'; | ||
| 1947 | } | ||
| 1948 | } | ||
| 1949 | } else { | ||
| 1950 | utils.removeClass(this.wrapper, 'iScrollBothScrollbars'); | ||
| 1951 | utils.addClass(this.wrapper, 'iScrollLoneScrollbar'); | ||
| 1952 | |||
| 1953 | if ( this.options.defaultScrollbars && this.options.customStyle ) { | ||
| 1954 | if ( this.options.listenX ) { | ||
| 1955 | this.wrapper.style.right = '2px'; | ||
| 1956 | } else { | ||
| 1957 | this.wrapper.style.bottom = '2px'; | ||
| 1958 | } | ||
| 1959 | } | ||
| 1960 | } | ||
| 1961 | |||
| 1962 | var r = this.wrapper.offsetHeight; // force refresh | ||
| 1963 | |||
| 1964 | if ( this.options.listenX ) { | ||
| 1965 | this.wrapperWidth = this.wrapper.clientWidth; | ||
| 1966 | if ( this.options.resize ) { | ||
| 1967 | this.indicatorWidth = Math.max(Math.round(this.wrapperWidth * this.wrapperWidth / (this.scroller.scrollerWidth || this.wrapperWidth || 1)), 8); | ||
| 1968 | this.indicatorStyle.width = this.indicatorWidth + 'px'; | ||
| 1969 | } else { | ||
| 1970 | this.indicatorWidth = this.indicator.clientWidth; | ||
| 1971 | } | ||
| 1972 | |||
| 1973 | this.maxPosX = this.wrapperWidth - this.indicatorWidth; | ||
| 1974 | |||
| 1975 | if ( this.options.shrink == 'clip' ) { | ||
| 1976 | this.minBoundaryX = -this.indicatorWidth + 8; | ||
| 1977 | this.maxBoundaryX = this.wrapperWidth - 8; | ||
| 1978 | } else { | ||
| 1979 | this.minBoundaryX = 0; | ||
| 1980 | this.maxBoundaryX = this.maxPosX; | ||
| 1981 | } | ||
| 1982 | |||
| 1983 | this.sizeRatioX = this.options.speedRatioX || (this.scroller.maxScrollX && (this.maxPosX / this.scroller.maxScrollX)); | ||
| 1984 | } | ||
| 1985 | |||
| 1986 | if ( this.options.listenY ) { | ||
| 1987 | this.wrapperHeight = this.wrapper.clientHeight; | ||
| 1988 | if ( this.options.resize ) { | ||
| 1989 | this.indicatorHeight = Math.max(Math.round(this.wrapperHeight * this.wrapperHeight / (this.scroller.scrollerHeight || this.wrapperHeight || 1)), 8); | ||
| 1990 | this.indicatorStyle.height = this.indicatorHeight + 'px'; | ||
| 1991 | } else { | ||
| 1992 | this.indicatorHeight = this.indicator.clientHeight; | ||
| 1993 | } | ||
| 1994 | |||
| 1995 | this.maxPosY = this.wrapperHeight - this.indicatorHeight; | ||
| 1996 | |||
| 1997 | if ( this.options.shrink == 'clip' ) { | ||
| 1998 | this.minBoundaryY = -this.indicatorHeight + 8; | ||
| 1999 | this.maxBoundaryY = this.wrapperHeight - 8; | ||
| 2000 | } else { | ||
| 2001 | this.minBoundaryY = 0; | ||
| 2002 | this.maxBoundaryY = this.maxPosY; | ||
| 2003 | } | ||
| 2004 | |||
| 2005 | this.maxPosY = this.wrapperHeight - this.indicatorHeight; | ||
| 2006 | this.sizeRatioY = this.options.speedRatioY || (this.scroller.maxScrollY && (this.maxPosY / this.scroller.maxScrollY)); | ||
| 2007 | } | ||
| 2008 | |||
| 2009 | this.updatePosition(); | ||
| 2010 | }, | ||
| 2011 | |||
| 2012 | updatePosition: function () { | ||
| 2013 | var x = this.options.listenX && Math.round(this.sizeRatioX * this.scroller.x) || 0, | ||
| 2014 | y = this.options.listenY && Math.round(this.sizeRatioY * this.scroller.y) || 0; | ||
| 2015 | |||
| 2016 | if ( !this.options.ignoreBoundaries ) { | ||
| 2017 | if ( x < this.minBoundaryX ) { | ||
| 2018 | if ( this.options.shrink == 'scale' ) { | ||
| 2019 | this.width = Math.max(this.indicatorWidth + x, 8); | ||
| 2020 | this.indicatorStyle.width = this.width + 'px'; | ||
| 2021 | } | ||
| 2022 | x = this.minBoundaryX; | ||
| 2023 | } else if ( x > this.maxBoundaryX ) { | ||
| 2024 | if ( this.options.shrink == 'scale' ) { | ||
| 2025 | this.width = Math.max(this.indicatorWidth - (x - this.maxPosX), 8); | ||
| 2026 | this.indicatorStyle.width = this.width + 'px'; | ||
| 2027 | x = this.maxPosX + this.indicatorWidth - this.width; | ||
| 2028 | } else { | ||
| 2029 | x = this.maxBoundaryX; | ||
| 2030 | } | ||
| 2031 | } else if ( this.options.shrink == 'scale' && this.width != this.indicatorWidth ) { | ||
| 2032 | this.width = this.indicatorWidth; | ||
| 2033 | this.indicatorStyle.width = this.width + 'px'; | ||
| 2034 | } | ||
| 2035 | |||
| 2036 | if ( y < this.minBoundaryY ) { | ||
| 2037 | if ( this.options.shrink == 'scale' ) { | ||
| 2038 | this.height = Math.max(this.indicatorHeight + y * 3, 8); | ||
| 2039 | this.indicatorStyle.height = this.height + 'px'; | ||
| 2040 | } | ||
| 2041 | y = this.minBoundaryY; | ||
| 2042 | } else if ( y > this.maxBoundaryY ) { | ||
| 2043 | if ( this.options.shrink == 'scale' ) { | ||
| 2044 | this.height = Math.max(this.indicatorHeight - (y - this.maxPosY) * 3, 8); | ||
| 2045 | this.indicatorStyle.height = this.height + 'px'; | ||
| 2046 | y = this.maxPosY + this.indicatorHeight - this.height; | ||
| 2047 | } else { | ||
| 2048 | y = this.maxBoundaryY; | ||
| 2049 | } | ||
| 2050 | } else if ( this.options.shrink == 'scale' && this.height != this.indicatorHeight ) { | ||
| 2051 | this.height = this.indicatorHeight; | ||
| 2052 | this.indicatorStyle.height = this.height + 'px'; | ||
| 2053 | } | ||
| 2054 | } | ||
| 2055 | |||
| 2056 | this.x = x; | ||
| 2057 | this.y = y; | ||
| 2058 | |||
| 2059 | if ( this.scroller.options.useTransform ) { | ||
| 2060 | this.indicatorStyle[utils.style.transform] = 'translate(' + x + 'px,' + y + 'px)' + this.scroller.translateZ; | ||
| 2061 | } else { | ||
| 2062 | this.indicatorStyle.left = x + 'px'; | ||
| 2063 | this.indicatorStyle.top = y + 'px'; | ||
| 2064 | } | ||
| 2065 | }, | ||
| 2066 | |||
| 2067 | _pos: function (x, y) { | ||
| 2068 | if ( x < 0 ) { | ||
| 2069 | x = 0; | ||
| 2070 | } else if ( x > this.maxPosX ) { | ||
| 2071 | x = this.maxPosX; | ||
| 2072 | } | ||
| 2073 | |||
| 2074 | if ( y < 0 ) { | ||
| 2075 | y = 0; | ||
| 2076 | } else if ( y > this.maxPosY ) { | ||
| 2077 | y = this.maxPosY; | ||
| 2078 | } | ||
| 2079 | |||
| 2080 | x = this.options.listenX ? Math.round(x / this.sizeRatioX) : this.scroller.x; | ||
| 2081 | y = this.options.listenY ? Math.round(y / this.sizeRatioY) : this.scroller.y; | ||
| 2082 | |||
| 2083 | this.scroller.scrollTo(x, y); | ||
| 2084 | }, | ||
| 2085 | |||
| 2086 | fade: function (val, hold) { | ||
| 2087 | if ( hold && !this.visible ) { | ||
| 2088 | return; | ||
| 2089 | } | ||
| 2090 | |||
| 2091 | clearTimeout(this.fadeTimeout); | ||
| 2092 | this.fadeTimeout = null; | ||
| 2093 | |||
| 2094 | var time = val ? 250 : 500, | ||
| 2095 | delay = val ? 0 : 300; | ||
| 2096 | |||
| 2097 | val = val ? '1' : '0'; | ||
| 2098 | |||
| 2099 | this.wrapperStyle[utils.style.transitionDuration] = time + 'ms'; | ||
| 2100 | |||
| 2101 | this.fadeTimeout = setTimeout((function (val) { | ||
| 2102 | this.wrapperStyle.opacity = val; | ||
| 2103 | this.visible = +val; | ||
| 2104 | }).bind(this, val), delay); | ||
| 2105 | } | ||
| 2106 | }; | ||
| 2107 | |||
| 2108 | IScroll.utils = utils; | ||
| 2109 | |||
| 2110 | if ( typeof module != 'undefined' && module.exports ) { | ||
| 2111 | module.exports = IScroll; | ||
| 2112 | } else if ( typeof define == 'function' && define.amd ) { | ||
| 2113 | define( function () { return IScroll; } ); | ||
| 2114 | } else { | ||
| 2115 | window.IScroll = IScroll; | ||
| 2116 | } | ||
| 2117 | |||
| 2118 | })(window, document, Math); |
staticLib/iscroll/iscroll-zoom.js
deleted
100644 → 0
| 1 | /*! iScroll v5.2.0 ~ (c) 2008-2016 Matteo Spinelli ~ http://cubiq.org/license */ | ||
| 2 | (function (window, document, Math) { | ||
| 3 | var rAF = window.requestAnimationFrame || | ||
| 4 | window.webkitRequestAnimationFrame || | ||
| 5 | window.mozRequestAnimationFrame || | ||
| 6 | window.oRequestAnimationFrame || | ||
| 7 | window.msRequestAnimationFrame || | ||
| 8 | function (callback) { window.setTimeout(callback, 1000 / 60); }; | ||
| 9 | |||
| 10 | var utils = (function () { | ||
| 11 | var me = {}; | ||
| 12 | |||
| 13 | var _elementStyle = document.createElement('div').style; | ||
| 14 | var _vendor = (function () { | ||
| 15 | var vendors = ['t', 'webkitT', 'MozT', 'msT', 'OT'], | ||
| 16 | transform, | ||
| 17 | i = 0, | ||
| 18 | l = vendors.length; | ||
| 19 | |||
| 20 | for ( ; i < l; i++ ) { | ||
| 21 | transform = vendors[i] + 'ransform'; | ||
| 22 | if ( transform in _elementStyle ) return vendors[i].substr(0, vendors[i].length-1); | ||
| 23 | } | ||
| 24 | |||
| 25 | return false; | ||
| 26 | })(); | ||
| 27 | |||
| 28 | function _prefixStyle (style) { | ||
| 29 | if ( _vendor === false ) return false; | ||
| 30 | if ( _vendor === '' ) return style; | ||
| 31 | return _vendor + style.charAt(0).toUpperCase() + style.substr(1); | ||
| 32 | } | ||
| 33 | |||
| 34 | me.getTime = Date.now || function getTime () { return new Date().getTime(); }; | ||
| 35 | |||
| 36 | me.extend = function (target, obj) { | ||
| 37 | for ( var i in obj ) { | ||
| 38 | target[i] = obj[i]; | ||
| 39 | } | ||
| 40 | }; | ||
| 41 | |||
| 42 | me.addEvent = function (el, type, fn, capture) { | ||
| 43 | el.addEventListener(type, fn, !!capture); | ||
| 44 | }; | ||
| 45 | |||
| 46 | me.removeEvent = function (el, type, fn, capture) { | ||
| 47 | el.removeEventListener(type, fn, !!capture); | ||
| 48 | }; | ||
| 49 | |||
| 50 | me.prefixPointerEvent = function (pointerEvent) { | ||
| 51 | return window.MSPointerEvent ? | ||
| 52 | 'MSPointer' + pointerEvent.charAt(7).toUpperCase() + pointerEvent.substr(8): | ||
| 53 | pointerEvent; | ||
| 54 | }; | ||
| 55 | |||
| 56 | me.momentum = function (current, start, time, lowerMargin, wrapperSize, deceleration) { | ||
| 57 | var distance = current - start, | ||
| 58 | speed = Math.abs(distance) / time, | ||
| 59 | destination, | ||
| 60 | duration; | ||
| 61 | |||
| 62 | deceleration = deceleration === undefined ? 0.0006 : deceleration; | ||
| 63 | |||
| 64 | destination = current + ( speed * speed ) / ( 2 * deceleration ) * ( distance < 0 ? -1 : 1 ); | ||
| 65 | duration = speed / deceleration; | ||
| 66 | |||
| 67 | if ( destination < lowerMargin ) { | ||
| 68 | destination = wrapperSize ? lowerMargin - ( wrapperSize / 2.5 * ( speed / 8 ) ) : lowerMargin; | ||
| 69 | distance = Math.abs(destination - current); | ||
| 70 | duration = distance / speed; | ||
| 71 | } else if ( destination > 0 ) { | ||
| 72 | destination = wrapperSize ? wrapperSize / 2.5 * ( speed / 8 ) : 0; | ||
| 73 | distance = Math.abs(current) + destination; | ||
| 74 | duration = distance / speed; | ||
| 75 | } | ||
| 76 | |||
| 77 | return { | ||
| 78 | destination: Math.round(destination), | ||
| 79 | duration: duration | ||
| 80 | }; | ||
| 81 | }; | ||
| 82 | |||
| 83 | var _transform = _prefixStyle('transform'); | ||
| 84 | |||
| 85 | me.extend(me, { | ||
| 86 | hasTransform: _transform !== false, | ||
| 87 | hasPerspective: _prefixStyle('perspective') in _elementStyle, | ||
| 88 | hasTouch: 'ontouchstart' in window, | ||
| 89 | hasPointer: !!(window.PointerEvent || window.MSPointerEvent), // IE10 is prefixed | ||
| 90 | hasTransition: _prefixStyle('transition') in _elementStyle | ||
| 91 | }); | ||
| 92 | |||
| 93 | /* | ||
| 94 | This should find all Android browsers lower than build 535.19 (both stock browser and webview) | ||
| 95 | - galaxy S2 is ok | ||
| 96 | - 2.3.6 : `AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1` | ||
| 97 | - 4.0.4 : `AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30` | ||
| 98 | - galaxy S3 is badAndroid (stock brower, webview) | ||
| 99 | `AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30` | ||
| 100 | - galaxy S4 is badAndroid (stock brower, webview) | ||
| 101 | `AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30` | ||
| 102 | - galaxy S5 is OK | ||
| 103 | `AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36 (Chrome/)` | ||
| 104 | - galaxy S6 is OK | ||
| 105 | `AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36 (Chrome/)` | ||
| 106 | */ | ||
| 107 | me.isBadAndroid = (function() { | ||
| 108 | var appVersion = window.navigator.appVersion; | ||
| 109 | // Android browser is not a chrome browser. | ||
| 110 | if (/Android/.test(appVersion) && !(/Chrome\/\d/.test(appVersion))) { | ||
| 111 | var safariVersion = appVersion.match(/Safari\/(\d+.\d)/); | ||
| 112 | if(safariVersion && typeof safariVersion === "object" && safariVersion.length >= 2) { | ||
| 113 | return parseFloat(safariVersion[1]) < 535.19; | ||
| 114 | } else { | ||
| 115 | return true; | ||
| 116 | } | ||
| 117 | } else { | ||
| 118 | return false; | ||
| 119 | } | ||
| 120 | })(); | ||
| 121 | |||
| 122 | me.extend(me.style = {}, { | ||
| 123 | transform: _transform, | ||
| 124 | transitionTimingFunction: _prefixStyle('transitionTimingFunction'), | ||
| 125 | transitionDuration: _prefixStyle('transitionDuration'), | ||
| 126 | transitionDelay: _prefixStyle('transitionDelay'), | ||
| 127 | transformOrigin: _prefixStyle('transformOrigin') | ||
| 128 | }); | ||
| 129 | |||
| 130 | me.hasClass = function (e, c) { | ||
| 131 | var re = new RegExp("(^|\\s)" + c + "(\\s|$)"); | ||
| 132 | return re.test(e.className); | ||
| 133 | }; | ||
| 134 | |||
| 135 | me.addClass = function (e, c) { | ||
| 136 | if ( me.hasClass(e, c) ) { | ||
| 137 | return; | ||
| 138 | } | ||
| 139 | |||
| 140 | var newclass = e.className.split(' '); | ||
| 141 | newclass.push(c); | ||
| 142 | e.className = newclass.join(' '); | ||
| 143 | }; | ||
| 144 | |||
| 145 | me.removeClass = function (e, c) { | ||
| 146 | if ( !me.hasClass(e, c) ) { | ||
| 147 | return; | ||
| 148 | } | ||
| 149 | |||
| 150 | var re = new RegExp("(^|\\s)" + c + "(\\s|$)", 'g'); | ||
| 151 | e.className = e.className.replace(re, ' '); | ||
| 152 | }; | ||
| 153 | |||
| 154 | me.offset = function (el) { | ||
| 155 | var left = -el.offsetLeft, | ||
| 156 | top = -el.offsetTop; | ||
| 157 | |||
| 158 | // jshint -W084 | ||
| 159 | while (el = el.offsetParent) { | ||
| 160 | left -= el.offsetLeft; | ||
| 161 | top -= el.offsetTop; | ||
| 162 | } | ||
| 163 | // jshint +W084 | ||
| 164 | |||
| 165 | return { | ||
| 166 | left: left, | ||
| 167 | top: top | ||
| 168 | }; | ||
| 169 | }; | ||
| 170 | |||
| 171 | me.preventDefaultException = function (el, exceptions) { | ||
| 172 | for ( var i in exceptions ) { | ||
| 173 | if ( exceptions[i].test(el[i]) ) { | ||
| 174 | return true; | ||
| 175 | } | ||
| 176 | } | ||
| 177 | |||
| 178 | return false; | ||
| 179 | }; | ||
| 180 | |||
| 181 | me.extend(me.eventType = {}, { | ||
| 182 | touchstart: 1, | ||
| 183 | touchmove: 1, | ||
| 184 | touchend: 1, | ||
| 185 | |||
| 186 | mousedown: 2, | ||
| 187 | mousemove: 2, | ||
| 188 | mouseup: 2, | ||
| 189 | |||
| 190 | pointerdown: 3, | ||
| 191 | pointermove: 3, | ||
| 192 | pointerup: 3, | ||
| 193 | |||
| 194 | MSPointerDown: 3, | ||
| 195 | MSPointerMove: 3, | ||
| 196 | MSPointerUp: 3 | ||
| 197 | }); | ||
| 198 | |||
| 199 | me.extend(me.ease = {}, { | ||
| 200 | quadratic: { | ||
| 201 | style: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)', | ||
| 202 | fn: function (k) { | ||
| 203 | return k * ( 2 - k ); | ||
| 204 | } | ||
| 205 | }, | ||
| 206 | circular: { | ||
| 207 | style: 'cubic-bezier(0.1, 0.57, 0.1, 1)', // Not properly "circular" but this looks better, it should be (0.075, 0.82, 0.165, 1) | ||
| 208 | fn: function (k) { | ||
| 209 | return Math.sqrt( 1 - ( --k * k ) ); | ||
| 210 | } | ||
| 211 | }, | ||
| 212 | back: { | ||
| 213 | style: 'cubic-bezier(0.175, 0.885, 0.32, 1.275)', | ||
| 214 | fn: function (k) { | ||
| 215 | var b = 4; | ||
| 216 | return ( k = k - 1 ) * k * ( ( b + 1 ) * k + b ) + 1; | ||
| 217 | } | ||
| 218 | }, | ||
| 219 | bounce: { | ||
| 220 | style: '', | ||
| 221 | fn: function (k) { | ||
| 222 | if ( ( k /= 1 ) < ( 1 / 2.75 ) ) { | ||
| 223 | return 7.5625 * k * k; | ||
| 224 | } else if ( k < ( 2 / 2.75 ) ) { | ||
| 225 | return 7.5625 * ( k -= ( 1.5 / 2.75 ) ) * k + 0.75; | ||
| 226 | } else if ( k < ( 2.5 / 2.75 ) ) { | ||
| 227 | return 7.5625 * ( k -= ( 2.25 / 2.75 ) ) * k + 0.9375; | ||
| 228 | } else { | ||
| 229 | return 7.5625 * ( k -= ( 2.625 / 2.75 ) ) * k + 0.984375; | ||
| 230 | } | ||
| 231 | } | ||
| 232 | }, | ||
| 233 | elastic: { | ||
| 234 | style: '', | ||
| 235 | fn: function (k) { | ||
| 236 | var f = 0.22, | ||
| 237 | e = 0.4; | ||
| 238 | |||
| 239 | if ( k === 0 ) { return 0; } | ||
| 240 | if ( k == 1 ) { return 1; } | ||
| 241 | |||
| 242 | return ( e * Math.pow( 2, - 10 * k ) * Math.sin( ( k - f / 4 ) * ( 2 * Math.PI ) / f ) + 1 ); | ||
| 243 | } | ||
| 244 | } | ||
| 245 | }); | ||
| 246 | |||
| 247 | me.tap = function (e, eventName) { | ||
| 248 | var ev = document.createEvent('Event'); | ||
| 249 | ev.initEvent(eventName, true, true); | ||
| 250 | ev.pageX = e.pageX; | ||
| 251 | ev.pageY = e.pageY; | ||
| 252 | e.target.dispatchEvent(ev); | ||
| 253 | }; | ||
| 254 | |||
| 255 | me.click = function (e) { | ||
| 256 | var target = e.target, | ||
| 257 | ev; | ||
| 258 | |||
| 259 | if ( !(/(SELECT|INPUT|TEXTAREA)/i).test(target.tagName) ) { | ||
| 260 | ev = document.createEvent('MouseEvents'); | ||
| 261 | ev.initMouseEvent('click', true, true, e.view, 1, | ||
| 262 | target.screenX, target.screenY, target.clientX, target.clientY, | ||
| 263 | e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, | ||
| 264 | 0, null); | ||
| 265 | |||
| 266 | ev._constructed = true; | ||
| 267 | target.dispatchEvent(ev); | ||
| 268 | } | ||
| 269 | }; | ||
| 270 | |||
| 271 | return me; | ||
| 272 | })(); | ||
| 273 | function IScroll (el, options) { | ||
| 274 | this.wrapper = typeof el == 'string' ? document.querySelector(el) : el; | ||
| 275 | this.scroller = this.wrapper.children[0]; | ||
| 276 | this.scrollerStyle = this.scroller.style; // cache style for better performance | ||
| 277 | |||
| 278 | this.options = { | ||
| 279 | |||
| 280 | zoomMin: 1, | ||
| 281 | zoomMax: 4, startZoom: 1, | ||
| 282 | |||
| 283 | resizeScrollbars: true, | ||
| 284 | |||
| 285 | mouseWheelSpeed: 20, | ||
| 286 | |||
| 287 | snapThreshold: 0.334, | ||
| 288 | |||
| 289 | // INSERT POINT: OPTIONS | ||
| 290 | disablePointer : !utils.hasPointer, | ||
| 291 | disableTouch : utils.hasPointer || !utils.hasTouch, | ||
| 292 | disableMouse : utils.hasPointer || utils.hasTouch, | ||
| 293 | startX: 0, | ||
| 294 | startY: 0, | ||
| 295 | scrollY: true, | ||
| 296 | directionLockThreshold: 5, | ||
| 297 | momentum: true, | ||
| 298 | |||
| 299 | bounce: true, | ||
| 300 | bounceTime: 600, | ||
| 301 | bounceEasing: '', | ||
| 302 | |||
| 303 | preventDefault: true, | ||
| 304 | preventDefaultException: { tagName: /^(INPUT|TEXTAREA|BUTTON|SELECT)$/ }, | ||
| 305 | |||
| 306 | HWCompositing: true, | ||
| 307 | useTransition: true, | ||
| 308 | useTransform: true, | ||
| 309 | bindToWrapper: typeof window.onmousedown === "undefined" | ||
| 310 | }; | ||
| 311 | |||
| 312 | for ( var i in options ) { | ||
| 313 | this.options[i] = options[i]; | ||
| 314 | } | ||
| 315 | |||
| 316 | // Normalize options | ||
| 317 | this.translateZ = this.options.HWCompositing && utils.hasPerspective ? ' translateZ(0)' : ''; | ||
| 318 | |||
| 319 | this.options.useTransition = utils.hasTransition && this.options.useTransition; | ||
| 320 | this.options.useTransform = utils.hasTransform && this.options.useTransform; | ||
| 321 | |||
| 322 | this.options.eventPassthrough = this.options.eventPassthrough === true ? 'vertical' : this.options.eventPassthrough; | ||
| 323 | this.options.preventDefault = !this.options.eventPassthrough && this.options.preventDefault; | ||
| 324 | |||
| 325 | // If you want eventPassthrough I have to lock one of the axes | ||
| 326 | this.options.scrollY = this.options.eventPassthrough == 'vertical' ? false : this.options.scrollY; | ||
| 327 | this.options.scrollX = this.options.eventPassthrough == 'horizontal' ? false : this.options.scrollX; | ||
| 328 | |||
| 329 | // With eventPassthrough we also need lockDirection mechanism | ||
| 330 | this.options.freeScroll = this.options.freeScroll && !this.options.eventPassthrough; | ||
| 331 | this.options.directionLockThreshold = this.options.eventPassthrough ? 0 : this.options.directionLockThreshold; | ||
| 332 | |||
| 333 | this.options.bounceEasing = typeof this.options.bounceEasing == 'string' ? utils.ease[this.options.bounceEasing] || utils.ease.circular : this.options.bounceEasing; | ||
| 334 | |||
| 335 | this.options.resizePolling = this.options.resizePolling === undefined ? 60 : this.options.resizePolling; | ||
| 336 | |||
| 337 | if ( this.options.tap === true ) { | ||
| 338 | this.options.tap = 'tap'; | ||
| 339 | } | ||
| 340 | |||
| 341 | if ( this.options.shrinkScrollbars == 'scale' ) { | ||
| 342 | this.options.useTransition = false; | ||
| 343 | } | ||
| 344 | |||
| 345 | this.options.invertWheelDirection = this.options.invertWheelDirection ? -1 : 1; | ||
| 346 | |||
| 347 | // INSERT POINT: NORMALIZATION | ||
| 348 | |||
| 349 | // Some defaults | ||
| 350 | this.x = 0; | ||
| 351 | this.y = 0; | ||
| 352 | this.directionX = 0; | ||
| 353 | this.directionY = 0; | ||
| 354 | this._events = {}; | ||
| 355 | |||
| 356 | this.scale = Math.min(Math.max(this.options.startZoom, this.options.zoomMin), this.options.zoomMax); | ||
| 357 | |||
| 358 | // INSERT POINT: DEFAULTS | ||
| 359 | |||
| 360 | this._init(); | ||
| 361 | this.refresh(); | ||
| 362 | |||
| 363 | this.scrollTo(this.options.startX, this.options.startY); | ||
| 364 | this.enable(); | ||
| 365 | } | ||
| 366 | |||
| 367 | IScroll.prototype = { | ||
| 368 | version: '5.2.0', | ||
| 369 | |||
| 370 | _init: function () { | ||
| 371 | this._initEvents(); | ||
| 372 | |||
| 373 | if ( this.options.zoom ) { | ||
| 374 | this._initZoom(); | ||
| 375 | } | ||
| 376 | |||
| 377 | if ( this.options.scrollbars || this.options.indicators ) { | ||
| 378 | this._initIndicators(); | ||
| 379 | } | ||
| 380 | |||
| 381 | if ( this.options.mouseWheel ) { | ||
| 382 | this._initWheel(); | ||
| 383 | } | ||
| 384 | |||
| 385 | if ( this.options.snap ) { | ||
| 386 | this._initSnap(); | ||
| 387 | } | ||
| 388 | |||
| 389 | if ( this.options.keyBindings ) { | ||
| 390 | this._initKeys(); | ||
| 391 | } | ||
| 392 | |||
| 393 | // INSERT POINT: _init | ||
| 394 | |||
| 395 | }, | ||
| 396 | |||
| 397 | destroy: function () { | ||
| 398 | this._initEvents(true); | ||
| 399 | clearTimeout(this.resizeTimeout); | ||
| 400 | this.resizeTimeout = null; | ||
| 401 | this._execEvent('destroy'); | ||
| 402 | }, | ||
| 403 | |||
| 404 | _transitionEnd: function (e) { | ||
| 405 | if ( e.target != this.scroller || !this.isInTransition ) { | ||
| 406 | return; | ||
| 407 | } | ||
| 408 | |||
| 409 | this._transitionTime(); | ||
| 410 | if ( !this.resetPosition(this.options.bounceTime) ) { | ||
| 411 | this.isInTransition = false; | ||
| 412 | this._execEvent('scrollEnd'); | ||
| 413 | } | ||
| 414 | }, | ||
| 415 | |||
| 416 | _start: function (e) { | ||
| 417 | // React to left mouse button only | ||
| 418 | if ( utils.eventType[e.type] != 1 ) { | ||
| 419 | // for button property | ||
| 420 | // http://unixpapa.com/js/mouse.html | ||
| 421 | var button; | ||
| 422 | if (!e.which) { | ||
| 423 | /* IE case */ | ||
| 424 | button = (e.button < 2) ? 0 : | ||
| 425 | ((e.button == 4) ? 1 : 2); | ||
| 426 | } else { | ||
| 427 | /* All others */ | ||
| 428 | button = e.button; | ||
| 429 | } | ||
| 430 | if ( button !== 0 ) { | ||
| 431 | return; | ||
| 432 | } | ||
| 433 | } | ||
| 434 | |||
| 435 | if ( !this.enabled || (this.initiated && utils.eventType[e.type] !== this.initiated) ) { | ||
| 436 | return; | ||
| 437 | } | ||
| 438 | |||
| 439 | if ( this.options.preventDefault && !utils.isBadAndroid && !utils.preventDefaultException(e.target, this.options.preventDefaultException) ) { | ||
| 440 | e.preventDefault(); | ||
| 441 | } | ||
| 442 | |||
| 443 | var point = e.touches ? e.touches[0] : e, | ||
| 444 | pos; | ||
| 445 | |||
| 446 | this.initiated = utils.eventType[e.type]; | ||
| 447 | this.moved = false; | ||
| 448 | this.distX = 0; | ||
| 449 | this.distY = 0; | ||
| 450 | this.directionX = 0; | ||
| 451 | this.directionY = 0; | ||
| 452 | this.directionLocked = 0; | ||
| 453 | |||
| 454 | this.startTime = utils.getTime(); | ||
| 455 | |||
| 456 | if ( this.options.useTransition && this.isInTransition ) { | ||
| 457 | this._transitionTime(); | ||
| 458 | this.isInTransition = false; | ||
| 459 | pos = this.getComputedPosition(); | ||
| 460 | this._translate(Math.round(pos.x), Math.round(pos.y)); | ||
| 461 | this._execEvent('scrollEnd'); | ||
| 462 | } else if ( !this.options.useTransition && this.isAnimating ) { | ||
| 463 | this.isAnimating = false; | ||
| 464 | this._execEvent('scrollEnd'); | ||
| 465 | } | ||
| 466 | |||
| 467 | this.startX = this.x; | ||
| 468 | this.startY = this.y; | ||
| 469 | this.absStartX = this.x; | ||
| 470 | this.absStartY = this.y; | ||
| 471 | this.pointX = point.pageX; | ||
| 472 | this.pointY = point.pageY; | ||
| 473 | |||
| 474 | this._execEvent('beforeScrollStart'); | ||
| 475 | }, | ||
| 476 | |||
| 477 | _move: function (e) { | ||
| 478 | if ( !this.enabled || utils.eventType[e.type] !== this.initiated ) { | ||
| 479 | return; | ||
| 480 | } | ||
| 481 | |||
| 482 | if ( this.options.preventDefault ) { // increases performance on Android? TODO: check! | ||
| 483 | e.preventDefault(); | ||
| 484 | } | ||
| 485 | |||
| 486 | var point = e.touches ? e.touches[0] : e, | ||
| 487 | deltaX = point.pageX - this.pointX, | ||
| 488 | deltaY = point.pageY - this.pointY, | ||
| 489 | timestamp = utils.getTime(), | ||
| 490 | newX, newY, | ||
| 491 | absDistX, absDistY; | ||
| 492 | |||
| 493 | this.pointX = point.pageX; | ||
| 494 | this.pointY = point.pageY; | ||
| 495 | |||
| 496 | this.distX += deltaX; | ||
| 497 | this.distY += deltaY; | ||
| 498 | absDistX = Math.abs(this.distX); | ||
| 499 | absDistY = Math.abs(this.distY); | ||
| 500 | |||
| 501 | // We need to move at least 10 pixels for the scrolling to initiate | ||
| 502 | if ( timestamp - this.endTime > 300 && (absDistX < 10 && absDistY < 10) ) { | ||
| 503 | return; | ||
| 504 | } | ||
| 505 | |||
| 506 | // If you are scrolling in one direction lock the other | ||
| 507 | if ( !this.directionLocked && !this.options.freeScroll ) { | ||
| 508 | if ( absDistX > absDistY + this.options.directionLockThreshold ) { | ||
| 509 | this.directionLocked = 'h'; // lock horizontally | ||
| 510 | } else if ( absDistY >= absDistX + this.options.directionLockThreshold ) { | ||
| 511 | this.directionLocked = 'v'; // lock vertically | ||
| 512 | } else { | ||
| 513 | this.directionLocked = 'n'; // no lock | ||
| 514 | } | ||
| 515 | } | ||
| 516 | |||
| 517 | if ( this.directionLocked == 'h' ) { | ||
| 518 | if ( this.options.eventPassthrough == 'vertical' ) { | ||
| 519 | e.preventDefault(); | ||
| 520 | } else if ( this.options.eventPassthrough == 'horizontal' ) { | ||
| 521 | this.initiated = false; | ||
| 522 | return; | ||
| 523 | } | ||
| 524 | |||
| 525 | deltaY = 0; | ||
| 526 | } else if ( this.directionLocked == 'v' ) { | ||
| 527 | if ( this.options.eventPassthrough == 'horizontal' ) { | ||
| 528 | e.preventDefault(); | ||
| 529 | } else if ( this.options.eventPassthrough == 'vertical' ) { | ||
| 530 | this.initiated = false; | ||
| 531 | return; | ||
| 532 | } | ||
| 533 | |||
| 534 | deltaX = 0; | ||
| 535 | } | ||
| 536 | |||
| 537 | deltaX = this.hasHorizontalScroll ? deltaX : 0; | ||
| 538 | deltaY = this.hasVerticalScroll ? deltaY : 0; | ||
| 539 | |||
| 540 | newX = this.x + deltaX; | ||
| 541 | newY = this.y + deltaY; | ||
| 542 | |||
| 543 | // Slow down if outside of the boundaries | ||
| 544 | if ( newX > 0 || newX < this.maxScrollX ) { | ||
| 545 | newX = this.options.bounce ? this.x + deltaX / 3 : newX > 0 ? 0 : this.maxScrollX; | ||
| 546 | } | ||
| 547 | if ( newY > 0 || newY < this.maxScrollY ) { | ||
| 548 | newY = this.options.bounce ? this.y + deltaY / 3 : newY > 0 ? 0 : this.maxScrollY; | ||
| 549 | } | ||
| 550 | |||
| 551 | this.directionX = deltaX > 0 ? -1 : deltaX < 0 ? 1 : 0; | ||
| 552 | this.directionY = deltaY > 0 ? -1 : deltaY < 0 ? 1 : 0; | ||
| 553 | |||
| 554 | if ( !this.moved ) { | ||
| 555 | this._execEvent('scrollStart'); | ||
| 556 | } | ||
| 557 | |||
| 558 | this.moved = true; | ||
| 559 | |||
| 560 | this._translate(newX, newY); | ||
| 561 | |||
| 562 | /* REPLACE START: _move */ | ||
| 563 | |||
| 564 | if ( timestamp - this.startTime > 300 ) { | ||
| 565 | this.startTime = timestamp; | ||
| 566 | this.startX = this.x; | ||
| 567 | this.startY = this.y; | ||
| 568 | } | ||
| 569 | |||
| 570 | /* REPLACE END: _move */ | ||
| 571 | |||
| 572 | }, | ||
| 573 | |||
| 574 | _end: function (e) { | ||
| 575 | if ( !this.enabled || utils.eventType[e.type] !== this.initiated ) { | ||
| 576 | return; | ||
| 577 | } | ||
| 578 | |||
| 579 | if ( this.options.preventDefault && !utils.preventDefaultException(e.target, this.options.preventDefaultException) ) { | ||
| 580 | e.preventDefault(); | ||
| 581 | } | ||
| 582 | |||
| 583 | var point = e.changedTouches ? e.changedTouches[0] : e, | ||
| 584 | momentumX, | ||
| 585 | momentumY, | ||
| 586 | duration = utils.getTime() - this.startTime, | ||
| 587 | newX = Math.round(this.x), | ||
| 588 | newY = Math.round(this.y), | ||
| 589 | distanceX = Math.abs(newX - this.startX), | ||
| 590 | distanceY = Math.abs(newY - this.startY), | ||
| 591 | time = 0, | ||
| 592 | easing = ''; | ||
| 593 | |||
| 594 | this.isInTransition = 0; | ||
| 595 | this.initiated = 0; | ||
| 596 | this.endTime = utils.getTime(); | ||
| 597 | |||
| 598 | // reset if we are outside of the boundaries | ||
| 599 | if ( this.resetPosition(this.options.bounceTime) ) { | ||
| 600 | return; | ||
| 601 | } | ||
| 602 | |||
| 603 | this.scrollTo(newX, newY); // ensures that the last position is rounded | ||
| 604 | |||
| 605 | // we scrolled less than 10 pixels | ||
| 606 | if ( !this.moved ) { | ||
| 607 | if ( this.options.tap ) { | ||
| 608 | utils.tap(e, this.options.tap); | ||
| 609 | } | ||
| 610 | |||
| 611 | if ( this.options.click ) { | ||
| 612 | utils.click(e); | ||
| 613 | } | ||
| 614 | |||
| 615 | this._execEvent('scrollCancel'); | ||
| 616 | return; | ||
| 617 | } | ||
| 618 | |||
| 619 | if ( this._events.flick && duration < 200 && distanceX < 100 && distanceY < 100 ) { | ||
| 620 | this._execEvent('flick'); | ||
| 621 | return; | ||
| 622 | } | ||
| 623 | |||
| 624 | // start momentum animation if needed | ||
| 625 | if ( this.options.momentum && duration < 300 ) { | ||
| 626 | momentumX = this.hasHorizontalScroll ? utils.momentum(this.x, this.startX, duration, this.maxScrollX, this.options.bounce ? this.wrapperWidth : 0, this.options.deceleration) : { destination: newX, duration: 0 }; | ||
| 627 | momentumY = this.hasVerticalScroll ? utils.momentum(this.y, this.startY, duration, this.maxScrollY, this.options.bounce ? this.wrapperHeight : 0, this.options.deceleration) : { destination: newY, duration: 0 }; | ||
| 628 | newX = momentumX.destination; | ||
| 629 | newY = momentumY.destination; | ||
| 630 | time = Math.max(momentumX.duration, momentumY.duration); | ||
| 631 | this.isInTransition = 1; | ||
| 632 | } | ||
| 633 | |||
| 634 | |||
| 635 | if ( this.options.snap ) { | ||
| 636 | var snap = this._nearestSnap(newX, newY); | ||
| 637 | this.currentPage = snap; | ||
| 638 | time = this.options.snapSpeed || Math.max( | ||
| 639 | Math.max( | ||
| 640 | Math.min(Math.abs(newX - snap.x), 1000), | ||
| 641 | Math.min(Math.abs(newY - snap.y), 1000) | ||
| 642 | ), 300); | ||
| 643 | newX = snap.x; | ||
| 644 | newY = snap.y; | ||
| 645 | |||
| 646 | this.directionX = 0; | ||
| 647 | this.directionY = 0; | ||
| 648 | easing = this.options.bounceEasing; | ||
| 649 | } | ||
| 650 | |||
| 651 | // INSERT POINT: _end | ||
| 652 | |||
| 653 | if ( newX != this.x || newY != this.y ) { | ||
| 654 | // change easing function when scroller goes out of the boundaries | ||
| 655 | if ( newX > 0 || newX < this.maxScrollX || newY > 0 || newY < this.maxScrollY ) { | ||
| 656 | easing = utils.ease.quadratic; | ||
| 657 | } | ||
| 658 | |||
| 659 | this.scrollTo(newX, newY, time, easing); | ||
| 660 | return; | ||
| 661 | } | ||
| 662 | |||
| 663 | this._execEvent('scrollEnd'); | ||
| 664 | }, | ||
| 665 | |||
| 666 | _resize: function () { | ||
| 667 | var that = this; | ||
| 668 | |||
| 669 | clearTimeout(this.resizeTimeout); | ||
| 670 | |||
| 671 | this.resizeTimeout = setTimeout(function () { | ||
| 672 | that.refresh(); | ||
| 673 | }, this.options.resizePolling); | ||
| 674 | }, | ||
| 675 | |||
| 676 | resetPosition: function (time) { | ||
| 677 | var x = this.x, | ||
| 678 | y = this.y; | ||
| 679 | |||
| 680 | time = time || 0; | ||
| 681 | |||
| 682 | if ( !this.hasHorizontalScroll || this.x > 0 ) { | ||
| 683 | x = 0; | ||
| 684 | } else if ( this.x < this.maxScrollX ) { | ||
| 685 | x = this.maxScrollX; | ||
| 686 | } | ||
| 687 | |||
| 688 | if ( !this.hasVerticalScroll || this.y > 0 ) { | ||
| 689 | y = 0; | ||
| 690 | } else if ( this.y < this.maxScrollY ) { | ||
| 691 | y = this.maxScrollY; | ||
| 692 | } | ||
| 693 | |||
| 694 | if ( x == this.x && y == this.y ) { | ||
| 695 | return false; | ||
| 696 | } | ||
| 697 | |||
| 698 | this.scrollTo(x, y, time, this.options.bounceEasing); | ||
| 699 | |||
| 700 | return true; | ||
| 701 | }, | ||
| 702 | |||
| 703 | disable: function () { | ||
| 704 | this.enabled = false; | ||
| 705 | }, | ||
| 706 | |||
| 707 | enable: function () { | ||
| 708 | this.enabled = true; | ||
| 709 | }, | ||
| 710 | |||
| 711 | refresh: function () { | ||
| 712 | var rf = this.wrapper.offsetHeight; // Force reflow | ||
| 713 | |||
| 714 | this.wrapperWidth = this.wrapper.clientWidth; | ||
| 715 | this.wrapperHeight = this.wrapper.clientHeight; | ||
| 716 | |||
| 717 | /* REPLACE START: refresh */ | ||
| 718 | this.scrollerWidth = Math.round(this.scroller.offsetWidth * this.scale); | ||
| 719 | this.scrollerHeight = Math.round(this.scroller.offsetHeight * this.scale); | ||
| 720 | |||
| 721 | this.maxScrollX = this.wrapperWidth - this.scrollerWidth; | ||
| 722 | this.maxScrollY = this.wrapperHeight - this.scrollerHeight; | ||
| 723 | /* REPLACE END: refresh */ | ||
| 724 | |||
| 725 | this.hasHorizontalScroll = this.options.scrollX && this.maxScrollX < 0; | ||
| 726 | this.hasVerticalScroll = this.options.scrollY && this.maxScrollY < 0; | ||
| 727 | |||
| 728 | if ( !this.hasHorizontalScroll ) { | ||
| 729 | this.maxScrollX = 0; | ||
| 730 | this.scrollerWidth = this.wrapperWidth; | ||
| 731 | } | ||
| 732 | |||
| 733 | if ( !this.hasVerticalScroll ) { | ||
| 734 | this.maxScrollY = 0; | ||
| 735 | this.scrollerHeight = this.wrapperHeight; | ||
| 736 | } | ||
| 737 | |||
| 738 | this.endTime = 0; | ||
| 739 | this.directionX = 0; | ||
| 740 | this.directionY = 0; | ||
| 741 | |||
| 742 | this.wrapperOffset = utils.offset(this.wrapper); | ||
| 743 | |||
| 744 | this._execEvent('refresh'); | ||
| 745 | |||
| 746 | this.resetPosition(); | ||
| 747 | |||
| 748 | // INSERT POINT: _refresh | ||
| 749 | |||
| 750 | }, | ||
| 751 | |||
| 752 | on: function (type, fn) { | ||
| 753 | if ( !this._events[type] ) { | ||
| 754 | this._events[type] = []; | ||
| 755 | } | ||
| 756 | |||
| 757 | this._events[type].push(fn); | ||
| 758 | }, | ||
| 759 | |||
| 760 | off: function (type, fn) { | ||
| 761 | if ( !this._events[type] ) { | ||
| 762 | return; | ||
| 763 | } | ||
| 764 | |||
| 765 | var index = this._events[type].indexOf(fn); | ||
| 766 | |||
| 767 | if ( index > -1 ) { | ||
| 768 | this._events[type].splice(index, 1); | ||
| 769 | } | ||
| 770 | }, | ||
| 771 | |||
| 772 | _execEvent: function (type) { | ||
| 773 | if ( !this._events[type] ) { | ||
| 774 | return; | ||
| 775 | } | ||
| 776 | |||
| 777 | var i = 0, | ||
| 778 | l = this._events[type].length; | ||
| 779 | |||
| 780 | if ( !l ) { | ||
| 781 | return; | ||
| 782 | } | ||
| 783 | |||
| 784 | for ( ; i < l; i++ ) { | ||
| 785 | this._events[type][i].apply(this, [].slice.call(arguments, 1)); | ||
| 786 | } | ||
| 787 | }, | ||
| 788 | |||
| 789 | scrollBy: function (x, y, time, easing) { | ||
| 790 | x = this.x + x; | ||
| 791 | y = this.y + y; | ||
| 792 | time = time || 0; | ||
| 793 | |||
| 794 | this.scrollTo(x, y, time, easing); | ||
| 795 | }, | ||
| 796 | |||
| 797 | scrollTo: function (x, y, time, easing) { | ||
| 798 | easing = easing || utils.ease.circular; | ||
| 799 | |||
| 800 | this.isInTransition = this.options.useTransition && time > 0; | ||
| 801 | var transitionType = this.options.useTransition && easing.style; | ||
| 802 | if ( !time || transitionType ) { | ||
| 803 | if(transitionType) { | ||
| 804 | this._transitionTimingFunction(easing.style); | ||
| 805 | this._transitionTime(time); | ||
| 806 | } | ||
| 807 | this._translate(x, y); | ||
| 808 | } else { | ||
| 809 | this._animate(x, y, time, easing.fn); | ||
| 810 | } | ||
| 811 | }, | ||
| 812 | |||
| 813 | scrollToElement: function (el, time, offsetX, offsetY, easing) { | ||
| 814 | el = el.nodeType ? el : this.scroller.querySelector(el); | ||
| 815 | |||
| 816 | if ( !el ) { | ||
| 817 | return; | ||
| 818 | } | ||
| 819 | |||
| 820 | var pos = utils.offset(el); | ||
| 821 | |||
| 822 | pos.left -= this.wrapperOffset.left; | ||
| 823 | pos.top -= this.wrapperOffset.top; | ||
| 824 | |||
| 825 | // if offsetX/Y are true we center the element to the screen | ||
| 826 | if ( offsetX === true ) { | ||
| 827 | offsetX = Math.round(el.offsetWidth / 2 - this.wrapper.offsetWidth / 2); | ||
| 828 | } | ||
| 829 | if ( offsetY === true ) { | ||
| 830 | offsetY = Math.round(el.offsetHeight / 2 - this.wrapper.offsetHeight / 2); | ||
| 831 | } | ||
| 832 | |||
| 833 | pos.left -= offsetX || 0; | ||
| 834 | pos.top -= offsetY || 0; | ||
| 835 | |||
| 836 | pos.left = pos.left > 0 ? 0 : pos.left < this.maxScrollX ? this.maxScrollX : pos.left; | ||
| 837 | pos.top = pos.top > 0 ? 0 : pos.top < this.maxScrollY ? this.maxScrollY : pos.top; | ||
| 838 | |||
| 839 | time = time === undefined || time === null || time === 'auto' ? Math.max(Math.abs(this.x-pos.left), Math.abs(this.y-pos.top)) : time; | ||
| 840 | |||
| 841 | this.scrollTo(pos.left, pos.top, time, easing); | ||
| 842 | }, | ||
| 843 | |||
| 844 | _transitionTime: function (time) { | ||
| 845 | time = time || 0; | ||
| 846 | |||
| 847 | var durationProp = utils.style.transitionDuration; | ||
| 848 | this.scrollerStyle[durationProp] = time + 'ms'; | ||
| 849 | |||
| 850 | if ( !time && utils.isBadAndroid ) { | ||
| 851 | this.scrollerStyle[durationProp] = '0.0001ms'; | ||
| 852 | // remove 0.0001ms | ||
| 853 | var self = this; | ||
| 854 | rAF(function() { | ||
| 855 | if(self.scrollerStyle[durationProp] === '0.0001ms') { | ||
| 856 | self.scrollerStyle[durationProp] = '0s'; | ||
| 857 | } | ||
| 858 | }); | ||
| 859 | } | ||
| 860 | |||
| 861 | |||
| 862 | if ( this.indicators ) { | ||
| 863 | for ( var i = this.indicators.length; i--; ) { | ||
| 864 | this.indicators[i].transitionTime(time); | ||
| 865 | } | ||
| 866 | } | ||
| 867 | |||
| 868 | |||
| 869 | // INSERT POINT: _transitionTime | ||
| 870 | |||
| 871 | }, | ||
| 872 | |||
| 873 | _transitionTimingFunction: function (easing) { | ||
| 874 | this.scrollerStyle[utils.style.transitionTimingFunction] = easing; | ||
| 875 | |||
| 876 | |||
| 877 | if ( this.indicators ) { | ||
| 878 | for ( var i = this.indicators.length; i--; ) { | ||
| 879 | this.indicators[i].transitionTimingFunction(easing); | ||
| 880 | } | ||
| 881 | } | ||
| 882 | |||
| 883 | |||
| 884 | // INSERT POINT: _transitionTimingFunction | ||
| 885 | |||
| 886 | }, | ||
| 887 | |||
| 888 | _translate: function (x, y) { | ||
| 889 | if ( this.options.useTransform ) { | ||
| 890 | |||
| 891 | /* REPLACE START: _translate */ this.scrollerStyle[utils.style.transform] = 'translate(' + x + 'px,' + y + 'px) scale(' + this.scale + ') ' + this.translateZ;/* REPLACE END: _translate */ | ||
| 892 | |||
| 893 | } else { | ||
| 894 | x = Math.round(x); | ||
| 895 | y = Math.round(y); | ||
| 896 | this.scrollerStyle.left = x + 'px'; | ||
| 897 | this.scrollerStyle.top = y + 'px'; | ||
| 898 | } | ||
| 899 | |||
| 900 | this.x = x; | ||
| 901 | this.y = y; | ||
| 902 | |||
| 903 | |||
| 904 | if ( this.indicators ) { | ||
| 905 | for ( var i = this.indicators.length; i--; ) { | ||
| 906 | this.indicators[i].updatePosition(); | ||
| 907 | } | ||
| 908 | } | ||
| 909 | |||
| 910 | |||
| 911 | // INSERT POINT: _translate | ||
| 912 | |||
| 913 | }, | ||
| 914 | |||
| 915 | _initEvents: function (remove) { | ||
| 916 | var eventType = remove ? utils.removeEvent : utils.addEvent, | ||
| 917 | target = this.options.bindToWrapper ? this.wrapper : window; | ||
| 918 | |||
| 919 | eventType(window, 'orientationchange', this); | ||
| 920 | eventType(window, 'resize', this); | ||
| 921 | |||
| 922 | if ( this.options.click ) { | ||
| 923 | eventType(this.wrapper, 'click', this, true); | ||
| 924 | } | ||
| 925 | |||
| 926 | if ( !this.options.disableMouse ) { | ||
| 927 | eventType(this.wrapper, 'mousedown', this); | ||
| 928 | eventType(target, 'mousemove', this); | ||
| 929 | eventType(target, 'mousecancel', this); | ||
| 930 | eventType(target, 'mouseup', this); | ||
| 931 | } | ||
| 932 | |||
| 933 | if ( utils.hasPointer && !this.options.disablePointer ) { | ||
| 934 | eventType(this.wrapper, utils.prefixPointerEvent('pointerdown'), this); | ||
| 935 | eventType(target, utils.prefixPointerEvent('pointermove'), this); | ||
| 936 | eventType(target, utils.prefixPointerEvent('pointercancel'), this); | ||
| 937 | eventType(target, utils.prefixPointerEvent('pointerup'), this); | ||
| 938 | } | ||
| 939 | |||
| 940 | if ( utils.hasTouch && !this.options.disableTouch ) { | ||
| 941 | eventType(this.wrapper, 'touchstart', this); | ||
| 942 | eventType(target, 'touchmove', this); | ||
| 943 | eventType(target, 'touchcancel', this); | ||
| 944 | eventType(target, 'touchend', this); | ||
| 945 | } | ||
| 946 | |||
| 947 | eventType(this.scroller, 'transitionend', this); | ||
| 948 | eventType(this.scroller, 'webkitTransitionEnd', this); | ||
| 949 | eventType(this.scroller, 'oTransitionEnd', this); | ||
| 950 | eventType(this.scroller, 'MSTransitionEnd', this); | ||
| 951 | }, | ||
| 952 | |||
| 953 | getComputedPosition: function () { | ||
| 954 | var matrix = window.getComputedStyle(this.scroller, null), | ||
| 955 | x, y; | ||
| 956 | |||
| 957 | if ( this.options.useTransform ) { | ||
| 958 | matrix = matrix[utils.style.transform].split(')')[0].split(', '); | ||
| 959 | x = +(matrix[12] || matrix[4]); | ||
| 960 | y = +(matrix[13] || matrix[5]); | ||
| 961 | } else { | ||
| 962 | x = +matrix.left.replace(/[^-\d.]/g, ''); | ||
| 963 | y = +matrix.top.replace(/[^-\d.]/g, ''); | ||
| 964 | } | ||
| 965 | |||
| 966 | return { x: x, y: y }; | ||
| 967 | }, | ||
| 968 | _initIndicators: function () { | ||
| 969 | var interactive = this.options.interactiveScrollbars, | ||
| 970 | customStyle = typeof this.options.scrollbars != 'string', | ||
| 971 | indicators = [], | ||
| 972 | indicator; | ||
| 973 | |||
| 974 | var that = this; | ||
| 975 | |||
| 976 | this.indicators = []; | ||
| 977 | |||
| 978 | if ( this.options.scrollbars ) { | ||
| 979 | // Vertical scrollbar | ||
| 980 | if ( this.options.scrollY ) { | ||
| 981 | indicator = { | ||
| 982 | el: createDefaultScrollbar('v', interactive, this.options.scrollbars), | ||
| 983 | interactive: interactive, | ||
| 984 | defaultScrollbars: true, | ||
| 985 | customStyle: customStyle, | ||
| 986 | resize: this.options.resizeScrollbars, | ||
| 987 | shrink: this.options.shrinkScrollbars, | ||
| 988 | fade: this.options.fadeScrollbars, | ||
| 989 | listenX: false | ||
| 990 | }; | ||
| 991 | |||
| 992 | this.wrapper.appendChild(indicator.el); | ||
| 993 | indicators.push(indicator); | ||
| 994 | } | ||
| 995 | |||
| 996 | // Horizontal scrollbar | ||
| 997 | if ( this.options.scrollX ) { | ||
| 998 | indicator = { | ||
| 999 | el: createDefaultScrollbar('h', interactive, this.options.scrollbars), | ||
| 1000 | interactive: interactive, | ||
| 1001 | defaultScrollbars: true, | ||
| 1002 | customStyle: customStyle, | ||
| 1003 | resize: this.options.resizeScrollbars, | ||
| 1004 | shrink: this.options.shrinkScrollbars, | ||
| 1005 | fade: this.options.fadeScrollbars, | ||
| 1006 | listenY: false | ||
| 1007 | }; | ||
| 1008 | |||
| 1009 | this.wrapper.appendChild(indicator.el); | ||
| 1010 | indicators.push(indicator); | ||
| 1011 | } | ||
| 1012 | } | ||
| 1013 | |||
| 1014 | if ( this.options.indicators ) { | ||
| 1015 | // TODO: check concat compatibility | ||
| 1016 | indicators = indicators.concat(this.options.indicators); | ||
| 1017 | } | ||
| 1018 | |||
| 1019 | for ( var i = indicators.length; i--; ) { | ||
| 1020 | this.indicators.push( new Indicator(this, indicators[i]) ); | ||
| 1021 | } | ||
| 1022 | |||
| 1023 | // TODO: check if we can use array.map (wide compatibility and performance issues) | ||
| 1024 | function _indicatorsMap (fn) { | ||
| 1025 | if (that.indicators) { | ||
| 1026 | for ( var i = that.indicators.length; i--; ) { | ||
| 1027 | fn.call(that.indicators[i]); | ||
| 1028 | } | ||
| 1029 | } | ||
| 1030 | } | ||
| 1031 | |||
| 1032 | if ( this.options.fadeScrollbars ) { | ||
| 1033 | this.on('scrollEnd', function () { | ||
| 1034 | _indicatorsMap(function () { | ||
| 1035 | this.fade(); | ||
| 1036 | }); | ||
| 1037 | }); | ||
| 1038 | |||
| 1039 | this.on('scrollCancel', function () { | ||
| 1040 | _indicatorsMap(function () { | ||
| 1041 | this.fade(); | ||
| 1042 | }); | ||
| 1043 | }); | ||
| 1044 | |||
| 1045 | this.on('scrollStart', function () { | ||
| 1046 | _indicatorsMap(function () { | ||
| 1047 | this.fade(1); | ||
| 1048 | }); | ||
| 1049 | }); | ||
| 1050 | |||
| 1051 | this.on('beforeScrollStart', function () { | ||
| 1052 | _indicatorsMap(function () { | ||
| 1053 | this.fade(1, true); | ||
| 1054 | }); | ||
| 1055 | }); | ||
| 1056 | } | ||
| 1057 | |||
| 1058 | |||
| 1059 | this.on('refresh', function () { | ||
| 1060 | _indicatorsMap(function () { | ||
| 1061 | this.refresh(); | ||
| 1062 | }); | ||
| 1063 | }); | ||
| 1064 | |||
| 1065 | this.on('destroy', function () { | ||
| 1066 | _indicatorsMap(function () { | ||
| 1067 | this.destroy(); | ||
| 1068 | }); | ||
| 1069 | |||
| 1070 | delete this.indicators; | ||
| 1071 | }); | ||
| 1072 | }, | ||
| 1073 | |||
| 1074 | _initZoom: function () { | ||
| 1075 | this.scrollerStyle[utils.style.transformOrigin] = '0 0'; | ||
| 1076 | }, | ||
| 1077 | |||
| 1078 | _zoomStart: function (e) { | ||
| 1079 | var c1 = Math.abs( e.touches[0].pageX - e.touches[1].pageX ), | ||
| 1080 | c2 = Math.abs( e.touches[0].pageY - e.touches[1].pageY ); | ||
| 1081 | |||
| 1082 | this.touchesDistanceStart = Math.sqrt(c1 * c1 + c2 * c2); | ||
| 1083 | this.startScale = this.scale; | ||
| 1084 | |||
| 1085 | this.originX = Math.abs(e.touches[0].pageX + e.touches[1].pageX) / 2 + this.wrapperOffset.left - this.x; | ||
| 1086 | this.originY = Math.abs(e.touches[0].pageY + e.touches[1].pageY) / 2 + this.wrapperOffset.top - this.y; | ||
| 1087 | |||
| 1088 | this._execEvent('zoomStart'); | ||
| 1089 | }, | ||
| 1090 | |||
| 1091 | _zoom: function (e) { | ||
| 1092 | if ( !this.enabled || utils.eventType[e.type] !== this.initiated ) { | ||
| 1093 | return; | ||
| 1094 | } | ||
| 1095 | |||
| 1096 | if ( this.options.preventDefault ) { | ||
| 1097 | e.preventDefault(); | ||
| 1098 | } | ||
| 1099 | |||
| 1100 | var c1 = Math.abs( e.touches[0].pageX - e.touches[1].pageX ), | ||
| 1101 | c2 = Math.abs( e.touches[0].pageY - e.touches[1].pageY ), | ||
| 1102 | distance = Math.sqrt( c1 * c1 + c2 * c2 ), | ||
| 1103 | scale = 1 / this.touchesDistanceStart * distance * this.startScale, | ||
| 1104 | lastScale, | ||
| 1105 | x, y; | ||
| 1106 | |||
| 1107 | this.scaled = true; | ||
| 1108 | |||
| 1109 | if ( scale < this.options.zoomMin ) { | ||
| 1110 | scale = 0.5 * this.options.zoomMin * Math.pow(2.0, scale / this.options.zoomMin); | ||
| 1111 | } else if ( scale > this.options.zoomMax ) { | ||
| 1112 | scale = 2.0 * this.options.zoomMax * Math.pow(0.5, this.options.zoomMax / scale); | ||
| 1113 | } | ||
| 1114 | |||
| 1115 | lastScale = scale / this.startScale; | ||
| 1116 | x = this.originX - this.originX * lastScale + this.startX; | ||
| 1117 | y = this.originY - this.originY * lastScale + this.startY; | ||
| 1118 | |||
| 1119 | this.scale = scale; | ||
| 1120 | |||
| 1121 | this.scrollTo(x, y, 0); | ||
| 1122 | }, | ||
| 1123 | |||
| 1124 | _zoomEnd: function (e) { | ||
| 1125 | if ( !this.enabled || utils.eventType[e.type] !== this.initiated ) { | ||
| 1126 | return; | ||
| 1127 | } | ||
| 1128 | |||
| 1129 | if ( this.options.preventDefault ) { | ||
| 1130 | e.preventDefault(); | ||
| 1131 | } | ||
| 1132 | |||
| 1133 | var newX, newY, | ||
| 1134 | lastScale; | ||
| 1135 | |||
| 1136 | this.isInTransition = 0; | ||
| 1137 | this.initiated = 0; | ||
| 1138 | |||
| 1139 | if ( this.scale > this.options.zoomMax ) { | ||
| 1140 | this.scale = this.options.zoomMax; | ||
| 1141 | } else if ( this.scale < this.options.zoomMin ) { | ||
| 1142 | this.scale = this.options.zoomMin; | ||
| 1143 | } | ||
| 1144 | |||
| 1145 | // Update boundaries | ||
| 1146 | this.refresh(); | ||
| 1147 | |||
| 1148 | lastScale = this.scale / this.startScale; | ||
| 1149 | |||
| 1150 | newX = this.originX - this.originX * lastScale + this.startX; | ||
| 1151 | newY = this.originY - this.originY * lastScale + this.startY; | ||
| 1152 | |||
| 1153 | if ( newX > 0 ) { | ||
| 1154 | newX = 0; | ||
| 1155 | } else if ( newX < this.maxScrollX ) { | ||
| 1156 | newX = this.maxScrollX; | ||
| 1157 | } | ||
| 1158 | |||
| 1159 | if ( newY > 0 ) { | ||
| 1160 | newY = 0; | ||
| 1161 | } else if ( newY < this.maxScrollY ) { | ||
| 1162 | newY = this.maxScrollY; | ||
| 1163 | } | ||
| 1164 | |||
| 1165 | if ( this.x != newX || this.y != newY ) { | ||
| 1166 | this.scrollTo(newX, newY, this.options.bounceTime); | ||
| 1167 | } | ||
| 1168 | |||
| 1169 | this.scaled = false; | ||
| 1170 | |||
| 1171 | this._execEvent('zoomEnd'); | ||
| 1172 | }, | ||
| 1173 | |||
| 1174 | zoom: function (scale, x, y, time) { | ||
| 1175 | if ( scale < this.options.zoomMin ) { | ||
| 1176 | scale = this.options.zoomMin; | ||
| 1177 | } else if ( scale > this.options.zoomMax ) { | ||
| 1178 | scale = this.options.zoomMax; | ||
| 1179 | } | ||
| 1180 | |||
| 1181 | if ( scale == this.scale ) { | ||
| 1182 | return; | ||
| 1183 | } | ||
| 1184 | |||
| 1185 | var relScale = scale / this.scale; | ||
| 1186 | |||
| 1187 | x = x === undefined ? this.wrapperWidth / 2 : x; | ||
| 1188 | y = y === undefined ? this.wrapperHeight / 2 : y; | ||
| 1189 | time = time === undefined ? 300 : time; | ||
| 1190 | |||
| 1191 | x = x + this.wrapperOffset.left - this.x; | ||
| 1192 | y = y + this.wrapperOffset.top - this.y; | ||
| 1193 | |||
| 1194 | x = x - x * relScale + this.x; | ||
| 1195 | y = y - y * relScale + this.y; | ||
| 1196 | |||
| 1197 | this.scale = scale; | ||
| 1198 | |||
| 1199 | this.refresh(); // update boundaries | ||
| 1200 | |||
| 1201 | if ( x > 0 ) { | ||
| 1202 | x = 0; | ||
| 1203 | } else if ( x < this.maxScrollX ) { | ||
| 1204 | x = this.maxScrollX; | ||
| 1205 | } | ||
| 1206 | |||
| 1207 | if ( y > 0 ) { | ||
| 1208 | y = 0; | ||
| 1209 | } else if ( y < this.maxScrollY ) { | ||
| 1210 | y = this.maxScrollY; | ||
| 1211 | } | ||
| 1212 | |||
| 1213 | this.scrollTo(x, y, time); | ||
| 1214 | }, | ||
| 1215 | |||
| 1216 | _wheelZoom: function (e) { | ||
| 1217 | var wheelDeltaY, | ||
| 1218 | deltaScale, | ||
| 1219 | that = this; | ||
| 1220 | |||
| 1221 | // Execute the zoomEnd event after 400ms the wheel stopped scrolling | ||
| 1222 | clearTimeout(this.wheelTimeout); | ||
| 1223 | this.wheelTimeout = setTimeout(function () { | ||
| 1224 | that._execEvent('zoomEnd'); | ||
| 1225 | }, 400); | ||
| 1226 | |||
| 1227 | if ( 'deltaX' in e ) { | ||
| 1228 | wheelDeltaY = -e.deltaY / Math.abs(e.deltaY); | ||
| 1229 | } else if ('wheelDeltaX' in e) { | ||
| 1230 | wheelDeltaY = e.wheelDeltaY / Math.abs(e.wheelDeltaY); | ||
| 1231 | } else if('wheelDelta' in e) { | ||
| 1232 | wheelDeltaY = e.wheelDelta / Math.abs(e.wheelDelta); | ||
| 1233 | } else if ('detail' in e) { | ||
| 1234 | wheelDeltaY = -e.detail / Math.abs(e.wheelDelta); | ||
| 1235 | } else { | ||
| 1236 | return; | ||
| 1237 | } | ||
| 1238 | |||
| 1239 | deltaScale = this.scale + wheelDeltaY / 5; | ||
| 1240 | |||
| 1241 | this.zoom(deltaScale, e.pageX, e.pageY, 0); | ||
| 1242 | }, | ||
| 1243 | |||
| 1244 | _initWheel: function () { | ||
| 1245 | utils.addEvent(this.wrapper, 'wheel', this); | ||
| 1246 | utils.addEvent(this.wrapper, 'mousewheel', this); | ||
| 1247 | utils.addEvent(this.wrapper, 'DOMMouseScroll', this); | ||
| 1248 | |||
| 1249 | this.on('destroy', function () { | ||
| 1250 | clearTimeout(this.wheelTimeout); | ||
| 1251 | this.wheelTimeout = null; | ||
| 1252 | utils.removeEvent(this.wrapper, 'wheel', this); | ||
| 1253 | utils.removeEvent(this.wrapper, 'mousewheel', this); | ||
| 1254 | utils.removeEvent(this.wrapper, 'DOMMouseScroll', this); | ||
| 1255 | }); | ||
| 1256 | }, | ||
| 1257 | |||
| 1258 | _wheel: function (e) { | ||
| 1259 | if ( !this.enabled ) { | ||
| 1260 | return; | ||
| 1261 | } | ||
| 1262 | |||
| 1263 | e.preventDefault(); | ||
| 1264 | |||
| 1265 | var wheelDeltaX, wheelDeltaY, | ||
| 1266 | newX, newY, | ||
| 1267 | that = this; | ||
| 1268 | |||
| 1269 | if ( this.wheelTimeout === undefined ) { | ||
| 1270 | that._execEvent('scrollStart'); | ||
| 1271 | } | ||
| 1272 | |||
| 1273 | // Execute the scrollEnd event after 400ms the wheel stopped scrolling | ||
| 1274 | clearTimeout(this.wheelTimeout); | ||
| 1275 | this.wheelTimeout = setTimeout(function () { | ||
| 1276 | if(!that.options.snap) { | ||
| 1277 | that._execEvent('scrollEnd'); | ||
| 1278 | } | ||
| 1279 | that.wheelTimeout = undefined; | ||
| 1280 | }, 400); | ||
| 1281 | |||
| 1282 | if ( 'deltaX' in e ) { | ||
| 1283 | if (e.deltaMode === 1) { | ||
| 1284 | wheelDeltaX = -e.deltaX * this.options.mouseWheelSpeed; | ||
| 1285 | wheelDeltaY = -e.deltaY * this.options.mouseWheelSpeed; | ||
| 1286 | } else { | ||
| 1287 | wheelDeltaX = -e.deltaX; | ||
| 1288 | wheelDeltaY = -e.deltaY; | ||
| 1289 | } | ||
| 1290 | } else if ( 'wheelDeltaX' in e ) { | ||
| 1291 | wheelDeltaX = e.wheelDeltaX / 120 * this.options.mouseWheelSpeed; | ||
| 1292 | wheelDeltaY = e.wheelDeltaY / 120 * this.options.mouseWheelSpeed; | ||
| 1293 | } else if ( 'wheelDelta' in e ) { | ||
| 1294 | wheelDeltaX = wheelDeltaY = e.wheelDelta / 120 * this.options.mouseWheelSpeed; | ||
| 1295 | } else if ( 'detail' in e ) { | ||
| 1296 | wheelDeltaX = wheelDeltaY = -e.detail / 3 * this.options.mouseWheelSpeed; | ||
| 1297 | } else { | ||
| 1298 | return; | ||
| 1299 | } | ||
| 1300 | |||
| 1301 | wheelDeltaX *= this.options.invertWheelDirection; | ||
| 1302 | wheelDeltaY *= this.options.invertWheelDirection; | ||
| 1303 | |||
| 1304 | if ( !this.hasVerticalScroll ) { | ||
| 1305 | wheelDeltaX = wheelDeltaY; | ||
| 1306 | wheelDeltaY = 0; | ||
| 1307 | } | ||
| 1308 | |||
| 1309 | if ( this.options.snap ) { | ||
| 1310 | newX = this.currentPage.pageX; | ||
| 1311 | newY = this.currentPage.pageY; | ||
| 1312 | |||
| 1313 | if ( wheelDeltaX > 0 ) { | ||
| 1314 | newX--; | ||
| 1315 | } else if ( wheelDeltaX < 0 ) { | ||
| 1316 | newX++; | ||
| 1317 | } | ||
| 1318 | |||
| 1319 | if ( wheelDeltaY > 0 ) { | ||
| 1320 | newY--; | ||
| 1321 | } else if ( wheelDeltaY < 0 ) { | ||
| 1322 | newY++; | ||
| 1323 | } | ||
| 1324 | |||
| 1325 | this.goToPage(newX, newY); | ||
| 1326 | |||
| 1327 | return; | ||
| 1328 | } | ||
| 1329 | |||
| 1330 | newX = this.x + Math.round(this.hasHorizontalScroll ? wheelDeltaX : 0); | ||
| 1331 | newY = this.y + Math.round(this.hasVerticalScroll ? wheelDeltaY : 0); | ||
| 1332 | |||
| 1333 | this.directionX = wheelDeltaX > 0 ? -1 : wheelDeltaX < 0 ? 1 : 0; | ||
| 1334 | this.directionY = wheelDeltaY > 0 ? -1 : wheelDeltaY < 0 ? 1 : 0; | ||
| 1335 | |||
| 1336 | if ( newX > 0 ) { | ||
| 1337 | newX = 0; | ||
| 1338 | } else if ( newX < this.maxScrollX ) { | ||
| 1339 | newX = this.maxScrollX; | ||
| 1340 | } | ||
| 1341 | |||
| 1342 | if ( newY > 0 ) { | ||
| 1343 | newY = 0; | ||
| 1344 | } else if ( newY < this.maxScrollY ) { | ||
| 1345 | newY = this.maxScrollY; | ||
| 1346 | } | ||
| 1347 | |||
| 1348 | this.scrollTo(newX, newY, 0); | ||
| 1349 | |||
| 1350 | // INSERT POINT: _wheel | ||
| 1351 | }, | ||
| 1352 | |||
| 1353 | _initSnap: function () { | ||
| 1354 | this.currentPage = {}; | ||
| 1355 | |||
| 1356 | if ( typeof this.options.snap == 'string' ) { | ||
| 1357 | this.options.snap = this.scroller.querySelectorAll(this.options.snap); | ||
| 1358 | } | ||
| 1359 | |||
| 1360 | this.on('refresh', function () { | ||
| 1361 | var i = 0, l, | ||
| 1362 | m = 0, n, | ||
| 1363 | cx, cy, | ||
| 1364 | x = 0, y, | ||
| 1365 | stepX = this.options.snapStepX || this.wrapperWidth, | ||
| 1366 | stepY = this.options.snapStepY || this.wrapperHeight, | ||
| 1367 | el; | ||
| 1368 | |||
| 1369 | this.pages = []; | ||
| 1370 | |||
| 1371 | if ( !this.wrapperWidth || !this.wrapperHeight || !this.scrollerWidth || !this.scrollerHeight ) { | ||
| 1372 | return; | ||
| 1373 | } | ||
| 1374 | |||
| 1375 | if ( this.options.snap === true ) { | ||
| 1376 | cx = Math.round( stepX / 2 ); | ||
| 1377 | cy = Math.round( stepY / 2 ); | ||
| 1378 | |||
| 1379 | while ( x > -this.scrollerWidth ) { | ||
| 1380 | this.pages[i] = []; | ||
| 1381 | l = 0; | ||
| 1382 | y = 0; | ||
| 1383 | |||
| 1384 | while ( y > -this.scrollerHeight ) { | ||
| 1385 | this.pages[i][l] = { | ||
| 1386 | x: Math.max(x, this.maxScrollX), | ||
| 1387 | y: Math.max(y, this.maxScrollY), | ||
| 1388 | width: stepX, | ||
| 1389 | height: stepY, | ||
| 1390 | cx: x - cx, | ||
| 1391 | cy: y - cy | ||
| 1392 | }; | ||
| 1393 | |||
| 1394 | y -= stepY; | ||
| 1395 | l++; | ||
| 1396 | } | ||
| 1397 | |||
| 1398 | x -= stepX; | ||
| 1399 | i++; | ||
| 1400 | } | ||
| 1401 | } else { | ||
| 1402 | el = this.options.snap; | ||
| 1403 | l = el.length; | ||
| 1404 | n = -1; | ||
| 1405 | |||
| 1406 | for ( ; i < l; i++ ) { | ||
| 1407 | if ( i === 0 || el[i].offsetLeft <= el[i-1].offsetLeft ) { | ||
| 1408 | m = 0; | ||
| 1409 | n++; | ||
| 1410 | } | ||
| 1411 | |||
| 1412 | if ( !this.pages[m] ) { | ||
| 1413 | this.pages[m] = []; | ||
| 1414 | } | ||
| 1415 | |||
| 1416 | x = Math.max(-el[i].offsetLeft, this.maxScrollX); | ||
| 1417 | y = Math.max(-el[i].offsetTop, this.maxScrollY); | ||
| 1418 | cx = x - Math.round(el[i].offsetWidth / 2); | ||
| 1419 | cy = y - Math.round(el[i].offsetHeight / 2); | ||
| 1420 | |||
| 1421 | this.pages[m][n] = { | ||
| 1422 | x: x, | ||
| 1423 | y: y, | ||
| 1424 | width: el[i].offsetWidth, | ||
| 1425 | height: el[i].offsetHeight, | ||
| 1426 | cx: cx, | ||
| 1427 | cy: cy | ||
| 1428 | }; | ||
| 1429 | |||
| 1430 | if ( x > this.maxScrollX ) { | ||
| 1431 | m++; | ||
| 1432 | } | ||
| 1433 | } | ||
| 1434 | } | ||
| 1435 | |||
| 1436 | this.goToPage(this.currentPage.pageX || 0, this.currentPage.pageY || 0, 0); | ||
| 1437 | |||
| 1438 | // Update snap threshold if needed | ||
| 1439 | if ( this.options.snapThreshold % 1 === 0 ) { | ||
| 1440 | this.snapThresholdX = this.options.snapThreshold; | ||
| 1441 | this.snapThresholdY = this.options.snapThreshold; | ||
| 1442 | } else { | ||
| 1443 | this.snapThresholdX = Math.round(this.pages[this.currentPage.pageX][this.currentPage.pageY].width * this.options.snapThreshold); | ||
| 1444 | this.snapThresholdY = Math.round(this.pages[this.currentPage.pageX][this.currentPage.pageY].height * this.options.snapThreshold); | ||
| 1445 | } | ||
| 1446 | }); | ||
| 1447 | |||
| 1448 | this.on('flick', function () { | ||
| 1449 | var time = this.options.snapSpeed || Math.max( | ||
| 1450 | Math.max( | ||
| 1451 | Math.min(Math.abs(this.x - this.startX), 1000), | ||
| 1452 | Math.min(Math.abs(this.y - this.startY), 1000) | ||
| 1453 | ), 300); | ||
| 1454 | |||
| 1455 | this.goToPage( | ||
| 1456 | this.currentPage.pageX + this.directionX, | ||
| 1457 | this.currentPage.pageY + this.directionY, | ||
| 1458 | time | ||
| 1459 | ); | ||
| 1460 | }); | ||
| 1461 | }, | ||
| 1462 | |||
| 1463 | _nearestSnap: function (x, y) { | ||
| 1464 | if ( !this.pages.length ) { | ||
| 1465 | return { x: 0, y: 0, pageX: 0, pageY: 0 }; | ||
| 1466 | } | ||
| 1467 | |||
| 1468 | var i = 0, | ||
| 1469 | l = this.pages.length, | ||
| 1470 | m = 0; | ||
| 1471 | |||
| 1472 | // Check if we exceeded the snap threshold | ||
| 1473 | if ( Math.abs(x - this.absStartX) < this.snapThresholdX && | ||
| 1474 | Math.abs(y - this.absStartY) < this.snapThresholdY ) { | ||
| 1475 | return this.currentPage; | ||
| 1476 | } | ||
| 1477 | |||
| 1478 | if ( x > 0 ) { | ||
| 1479 | x = 0; | ||
| 1480 | } else if ( x < this.maxScrollX ) { | ||
| 1481 | x = this.maxScrollX; | ||
| 1482 | } | ||
| 1483 | |||
| 1484 | if ( y > 0 ) { | ||
| 1485 | y = 0; | ||
| 1486 | } else if ( y < this.maxScrollY ) { | ||
| 1487 | y = this.maxScrollY; | ||
| 1488 | } | ||
| 1489 | |||
| 1490 | for ( ; i < l; i++ ) { | ||
| 1491 | if ( x >= this.pages[i][0].cx ) { | ||
| 1492 | x = this.pages[i][0].x; | ||
| 1493 | break; | ||
| 1494 | } | ||
| 1495 | } | ||
| 1496 | |||
| 1497 | l = this.pages[i].length; | ||
| 1498 | |||
| 1499 | for ( ; m < l; m++ ) { | ||
| 1500 | if ( y >= this.pages[0][m].cy ) { | ||
| 1501 | y = this.pages[0][m].y; | ||
| 1502 | break; | ||
| 1503 | } | ||
| 1504 | } | ||
| 1505 | |||
| 1506 | if ( i == this.currentPage.pageX ) { | ||
| 1507 | i += this.directionX; | ||
| 1508 | |||
| 1509 | if ( i < 0 ) { | ||
| 1510 | i = 0; | ||
| 1511 | } else if ( i >= this.pages.length ) { | ||
| 1512 | i = this.pages.length - 1; | ||
| 1513 | } | ||
| 1514 | |||
| 1515 | x = this.pages[i][0].x; | ||
| 1516 | } | ||
| 1517 | |||
| 1518 | if ( m == this.currentPage.pageY ) { | ||
| 1519 | m += this.directionY; | ||
| 1520 | |||
| 1521 | if ( m < 0 ) { | ||
| 1522 | m = 0; | ||
| 1523 | } else if ( m >= this.pages[0].length ) { | ||
| 1524 | m = this.pages[0].length - 1; | ||
| 1525 | } | ||
| 1526 | |||
| 1527 | y = this.pages[0][m].y; | ||
| 1528 | } | ||
| 1529 | |||
| 1530 | return { | ||
| 1531 | x: x, | ||
| 1532 | y: y, | ||
| 1533 | pageX: i, | ||
| 1534 | pageY: m | ||
| 1535 | }; | ||
| 1536 | }, | ||
| 1537 | |||
| 1538 | goToPage: function (x, y, time, easing) { | ||
| 1539 | easing = easing || this.options.bounceEasing; | ||
| 1540 | |||
| 1541 | if ( x >= this.pages.length ) { | ||
| 1542 | x = this.pages.length - 1; | ||
| 1543 | } else if ( x < 0 ) { | ||
| 1544 | x = 0; | ||
| 1545 | } | ||
| 1546 | |||
| 1547 | if ( y >= this.pages[x].length ) { | ||
| 1548 | y = this.pages[x].length - 1; | ||
| 1549 | } else if ( y < 0 ) { | ||
| 1550 | y = 0; | ||
| 1551 | } | ||
| 1552 | |||
| 1553 | var posX = this.pages[x][y].x, | ||
| 1554 | posY = this.pages[x][y].y; | ||
| 1555 | |||
| 1556 | time = time === undefined ? this.options.snapSpeed || Math.max( | ||
| 1557 | Math.max( | ||
| 1558 | Math.min(Math.abs(posX - this.x), 1000), | ||
| 1559 | Math.min(Math.abs(posY - this.y), 1000) | ||
| 1560 | ), 300) : time; | ||
| 1561 | |||
| 1562 | this.currentPage = { | ||
| 1563 | x: posX, | ||
| 1564 | y: posY, | ||
| 1565 | pageX: x, | ||
| 1566 | pageY: y | ||
| 1567 | }; | ||
| 1568 | |||
| 1569 | this.scrollTo(posX, posY, time, easing); | ||
| 1570 | }, | ||
| 1571 | |||
| 1572 | next: function (time, easing) { | ||
| 1573 | var x = this.currentPage.pageX, | ||
| 1574 | y = this.currentPage.pageY; | ||
| 1575 | |||
| 1576 | x++; | ||
| 1577 | |||
| 1578 | if ( x >= this.pages.length && this.hasVerticalScroll ) { | ||
| 1579 | x = 0; | ||
| 1580 | y++; | ||
| 1581 | } | ||
| 1582 | |||
| 1583 | this.goToPage(x, y, time, easing); | ||
| 1584 | }, | ||
| 1585 | |||
| 1586 | prev: function (time, easing) { | ||
| 1587 | var x = this.currentPage.pageX, | ||
| 1588 | y = this.currentPage.pageY; | ||
| 1589 | |||
| 1590 | x--; | ||
| 1591 | |||
| 1592 | if ( x < 0 && this.hasVerticalScroll ) { | ||
| 1593 | x = 0; | ||
| 1594 | y--; | ||
| 1595 | } | ||
| 1596 | |||
| 1597 | this.goToPage(x, y, time, easing); | ||
| 1598 | }, | ||
| 1599 | |||
| 1600 | _initKeys: function (e) { | ||
| 1601 | // default key bindings | ||
| 1602 | var keys = { | ||
| 1603 | pageUp: 33, | ||
| 1604 | pageDown: 34, | ||
| 1605 | end: 35, | ||
| 1606 | home: 36, | ||
| 1607 | left: 37, | ||
| 1608 | up: 38, | ||
| 1609 | right: 39, | ||
| 1610 | down: 40 | ||
| 1611 | }; | ||
| 1612 | var i; | ||
| 1613 | |||
| 1614 | // if you give me characters I give you keycode | ||
| 1615 | if ( typeof this.options.keyBindings == 'object' ) { | ||
| 1616 | for ( i in this.options.keyBindings ) { | ||
| 1617 | if ( typeof this.options.keyBindings[i] == 'string' ) { | ||
| 1618 | this.options.keyBindings[i] = this.options.keyBindings[i].toUpperCase().charCodeAt(0); | ||
| 1619 | } | ||
| 1620 | } | ||
| 1621 | } else { | ||
| 1622 | this.options.keyBindings = {}; | ||
| 1623 | } | ||
| 1624 | |||
| 1625 | for ( i in keys ) { | ||
| 1626 | this.options.keyBindings[i] = this.options.keyBindings[i] || keys[i]; | ||
| 1627 | } | ||
| 1628 | |||
| 1629 | utils.addEvent(window, 'keydown', this); | ||
| 1630 | |||
| 1631 | this.on('destroy', function () { | ||
| 1632 | utils.removeEvent(window, 'keydown', this); | ||
| 1633 | }); | ||
| 1634 | }, | ||
| 1635 | |||
| 1636 | _key: function (e) { | ||
| 1637 | if ( !this.enabled ) { | ||
| 1638 | return; | ||
| 1639 | } | ||
| 1640 | |||
| 1641 | var snap = this.options.snap, // we are using this alot, better to cache it | ||
| 1642 | newX = snap ? this.currentPage.pageX : this.x, | ||
| 1643 | newY = snap ? this.currentPage.pageY : this.y, | ||
| 1644 | now = utils.getTime(), | ||
| 1645 | prevTime = this.keyTime || 0, | ||
| 1646 | acceleration = 0.250, | ||
| 1647 | pos; | ||
| 1648 | |||
| 1649 | if ( this.options.useTransition && this.isInTransition ) { | ||
| 1650 | pos = this.getComputedPosition(); | ||
| 1651 | |||
| 1652 | this._translate(Math.round(pos.x), Math.round(pos.y)); | ||
| 1653 | this.isInTransition = false; | ||
| 1654 | } | ||
| 1655 | |||
| 1656 | this.keyAcceleration = now - prevTime < 200 ? Math.min(this.keyAcceleration + acceleration, 50) : 0; | ||
| 1657 | |||
| 1658 | switch ( e.keyCode ) { | ||
| 1659 | case this.options.keyBindings.pageUp: | ||
| 1660 | if ( this.hasHorizontalScroll && !this.hasVerticalScroll ) { | ||
| 1661 | newX += snap ? 1 : this.wrapperWidth; | ||
| 1662 | } else { | ||
| 1663 | newY += snap ? 1 : this.wrapperHeight; | ||
| 1664 | } | ||
| 1665 | break; | ||
| 1666 | case this.options.keyBindings.pageDown: | ||
| 1667 | if ( this.hasHorizontalScroll && !this.hasVerticalScroll ) { | ||
| 1668 | newX -= snap ? 1 : this.wrapperWidth; | ||
| 1669 | } else { | ||
| 1670 | newY -= snap ? 1 : this.wrapperHeight; | ||
| 1671 | } | ||
| 1672 | break; | ||
| 1673 | case this.options.keyBindings.end: | ||
| 1674 | newX = snap ? this.pages.length-1 : this.maxScrollX; | ||
| 1675 | newY = snap ? this.pages[0].length-1 : this.maxScrollY; | ||
| 1676 | break; | ||
| 1677 | case this.options.keyBindings.home: | ||
| 1678 | newX = 0; | ||
| 1679 | newY = 0; | ||
| 1680 | break; | ||
| 1681 | case this.options.keyBindings.left: | ||
| 1682 | newX += snap ? -1 : 5 + this.keyAcceleration>>0; | ||
| 1683 | break; | ||
| 1684 | case this.options.keyBindings.up: | ||
| 1685 | newY += snap ? 1 : 5 + this.keyAcceleration>>0; | ||
| 1686 | break; | ||
| 1687 | case this.options.keyBindings.right: | ||
| 1688 | newX -= snap ? -1 : 5 + this.keyAcceleration>>0; | ||
| 1689 | break; | ||
| 1690 | case this.options.keyBindings.down: | ||
| 1691 | newY -= snap ? 1 : 5 + this.keyAcceleration>>0; | ||
| 1692 | break; | ||
| 1693 | default: | ||
| 1694 | return; | ||
| 1695 | } | ||
| 1696 | |||
| 1697 | if ( snap ) { | ||
| 1698 | this.goToPage(newX, newY); | ||
| 1699 | return; | ||
| 1700 | } | ||
| 1701 | |||
| 1702 | if ( newX > 0 ) { | ||
| 1703 | newX = 0; | ||
| 1704 | this.keyAcceleration = 0; | ||
| 1705 | } else if ( newX < this.maxScrollX ) { | ||
| 1706 | newX = this.maxScrollX; | ||
| 1707 | this.keyAcceleration = 0; | ||
| 1708 | } | ||
| 1709 | |||
| 1710 | if ( newY > 0 ) { | ||
| 1711 | newY = 0; | ||
| 1712 | this.keyAcceleration = 0; | ||
| 1713 | } else if ( newY < this.maxScrollY ) { | ||
| 1714 | newY = this.maxScrollY; | ||
| 1715 | this.keyAcceleration = 0; | ||
| 1716 | } | ||
| 1717 | |||
| 1718 | this.scrollTo(newX, newY, 0); | ||
| 1719 | |||
| 1720 | this.keyTime = now; | ||
| 1721 | }, | ||
| 1722 | |||
| 1723 | _animate: function (destX, destY, duration, easingFn) { | ||
| 1724 | var that = this, | ||
| 1725 | startX = this.x, | ||
| 1726 | startY = this.y, | ||
| 1727 | startTime = utils.getTime(), | ||
| 1728 | destTime = startTime + duration; | ||
| 1729 | |||
| 1730 | function step () { | ||
| 1731 | var now = utils.getTime(), | ||
| 1732 | newX, newY, | ||
| 1733 | easing; | ||
| 1734 | |||
| 1735 | if ( now >= destTime ) { | ||
| 1736 | that.isAnimating = false; | ||
| 1737 | that._translate(destX, destY); | ||
| 1738 | |||
| 1739 | if ( !that.resetPosition(that.options.bounceTime) ) { | ||
| 1740 | that._execEvent('scrollEnd'); | ||
| 1741 | } | ||
| 1742 | |||
| 1743 | return; | ||
| 1744 | } | ||
| 1745 | |||
| 1746 | now = ( now - startTime ) / duration; | ||
| 1747 | easing = easingFn(now); | ||
| 1748 | newX = ( destX - startX ) * easing + startX; | ||
| 1749 | newY = ( destY - startY ) * easing + startY; | ||
| 1750 | that._translate(newX, newY); | ||
| 1751 | |||
| 1752 | if ( that.isAnimating ) { | ||
| 1753 | rAF(step); | ||
| 1754 | } | ||
| 1755 | } | ||
| 1756 | |||
| 1757 | this.isAnimating = true; | ||
| 1758 | step(); | ||
| 1759 | }, | ||
| 1760 | handleEvent: function (e) { | ||
| 1761 | switch ( e.type ) { | ||
| 1762 | case 'touchstart': | ||
| 1763 | case 'pointerdown': | ||
| 1764 | case 'MSPointerDown': | ||
| 1765 | case 'mousedown': | ||
| 1766 | this._start(e); | ||
| 1767 | |||
| 1768 | if ( this.options.zoom && e.touches && e.touches.length > 1 ) { | ||
| 1769 | this._zoomStart(e); | ||
| 1770 | } | ||
| 1771 | break; | ||
| 1772 | case 'touchmove': | ||
| 1773 | case 'pointermove': | ||
| 1774 | case 'MSPointerMove': | ||
| 1775 | case 'mousemove': | ||
| 1776 | if ( this.options.zoom && e.touches && e.touches[1] ) { | ||
| 1777 | this._zoom(e); | ||
| 1778 | return; | ||
| 1779 | } | ||
| 1780 | this._move(e); | ||
| 1781 | break; | ||
| 1782 | case 'touchend': | ||
| 1783 | case 'pointerup': | ||
| 1784 | case 'MSPointerUp': | ||
| 1785 | case 'mouseup': | ||
| 1786 | case 'touchcancel': | ||
| 1787 | case 'pointercancel': | ||
| 1788 | case 'MSPointerCancel': | ||
| 1789 | case 'mousecancel': | ||
| 1790 | if ( this.scaled ) { | ||
| 1791 | this._zoomEnd(e); | ||
| 1792 | return; | ||
| 1793 | } | ||
| 1794 | this._end(e); | ||
| 1795 | break; | ||
| 1796 | case 'orientationchange': | ||
| 1797 | case 'resize': | ||
| 1798 | this._resize(); | ||
| 1799 | break; | ||
| 1800 | case 'transitionend': | ||
| 1801 | case 'webkitTransitionEnd': | ||
| 1802 | case 'oTransitionEnd': | ||
| 1803 | case 'MSTransitionEnd': | ||
| 1804 | this._transitionEnd(e); | ||
| 1805 | break; | ||
| 1806 | case 'wheel': | ||
| 1807 | case 'DOMMouseScroll': | ||
| 1808 | case 'mousewheel': | ||
| 1809 | if ( this.options.wheelAction == 'zoom' ) { | ||
| 1810 | this._wheelZoom(e); | ||
| 1811 | return; | ||
| 1812 | } | ||
| 1813 | this._wheel(e); | ||
| 1814 | break; | ||
| 1815 | case 'keydown': | ||
| 1816 | this._key(e); | ||
| 1817 | break; | ||
| 1818 | } | ||
| 1819 | } | ||
| 1820 | |||
| 1821 | }; | ||
| 1822 | function createDefaultScrollbar (direction, interactive, type) { | ||
| 1823 | var scrollbar = document.createElement('div'), | ||
| 1824 | indicator = document.createElement('div'); | ||
| 1825 | |||
| 1826 | if ( type === true ) { | ||
| 1827 | scrollbar.style.cssText = 'position:absolute;z-index:9999'; | ||
| 1828 | indicator.style.cssText = '-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;background:rgba(0,0,0,0.5);border:1px solid rgba(255,255,255,0.9);border-radius:3px'; | ||
| 1829 | } | ||
| 1830 | |||
| 1831 | indicator.className = 'iScrollIndicator'; | ||
| 1832 | |||
| 1833 | if ( direction == 'h' ) { | ||
| 1834 | if ( type === true ) { | ||
| 1835 | scrollbar.style.cssText += ';height:7px;left:2px;right:2px;bottom:0'; | ||
| 1836 | indicator.style.height = '100%'; | ||
| 1837 | } | ||
| 1838 | scrollbar.className = 'iScrollHorizontalScrollbar'; | ||
| 1839 | } else { | ||
| 1840 | if ( type === true ) { | ||
| 1841 | scrollbar.style.cssText += ';width:7px;bottom:2px;top:2px;right:1px'; | ||
| 1842 | indicator.style.width = '100%'; | ||
| 1843 | } | ||
| 1844 | scrollbar.className = 'iScrollVerticalScrollbar'; | ||
| 1845 | } | ||
| 1846 | |||
| 1847 | scrollbar.style.cssText += ';overflow:hidden'; | ||
| 1848 | |||
| 1849 | if ( !interactive ) { | ||
| 1850 | scrollbar.style.pointerEvents = 'none'; | ||
| 1851 | } | ||
| 1852 | |||
| 1853 | scrollbar.appendChild(indicator); | ||
| 1854 | |||
| 1855 | return scrollbar; | ||
| 1856 | } | ||
| 1857 | |||
| 1858 | function Indicator (scroller, options) { | ||
| 1859 | this.wrapper = typeof options.el == 'string' ? document.querySelector(options.el) : options.el; | ||
| 1860 | this.wrapperStyle = this.wrapper.style; | ||
| 1861 | this.indicator = this.wrapper.children[0]; | ||
| 1862 | this.indicatorStyle = this.indicator.style; | ||
| 1863 | this.scroller = scroller; | ||
| 1864 | |||
| 1865 | this.options = { | ||
| 1866 | listenX: true, | ||
| 1867 | listenY: true, | ||
| 1868 | interactive: false, | ||
| 1869 | resize: true, | ||
| 1870 | defaultScrollbars: false, | ||
| 1871 | shrink: false, | ||
| 1872 | fade: false, | ||
| 1873 | speedRatioX: 0, | ||
| 1874 | speedRatioY: 0 | ||
| 1875 | }; | ||
| 1876 | |||
| 1877 | for ( var i in options ) { | ||
| 1878 | this.options[i] = options[i]; | ||
| 1879 | } | ||
| 1880 | |||
| 1881 | this.sizeRatioX = 1; | ||
| 1882 | this.sizeRatioY = 1; | ||
| 1883 | this.maxPosX = 0; | ||
| 1884 | this.maxPosY = 0; | ||
| 1885 | |||
| 1886 | if ( this.options.interactive ) { | ||
| 1887 | if ( !this.options.disableTouch ) { | ||
| 1888 | utils.addEvent(this.indicator, 'touchstart', this); | ||
| 1889 | utils.addEvent(window, 'touchend', this); | ||
| 1890 | } | ||
| 1891 | if ( !this.options.disablePointer ) { | ||
| 1892 | utils.addEvent(this.indicator, utils.prefixPointerEvent('pointerdown'), this); | ||
| 1893 | utils.addEvent(window, utils.prefixPointerEvent('pointerup'), this); | ||
| 1894 | } | ||
| 1895 | if ( !this.options.disableMouse ) { | ||
| 1896 | utils.addEvent(this.indicator, 'mousedown', this); | ||
| 1897 | utils.addEvent(window, 'mouseup', this); | ||
| 1898 | } | ||
| 1899 | } | ||
| 1900 | |||
| 1901 | if ( this.options.fade ) { | ||
| 1902 | this.wrapperStyle[utils.style.transform] = this.scroller.translateZ; | ||
| 1903 | var durationProp = utils.style.transitionDuration; | ||
| 1904 | this.wrapperStyle[durationProp] = utils.isBadAndroid ? '0.0001ms' : '0ms'; | ||
| 1905 | // remove 0.0001ms | ||
| 1906 | var self = this; | ||
| 1907 | if(utils.isBadAndroid) { | ||
| 1908 | rAF(function() { | ||
| 1909 | if(self.wrapperStyle[durationProp] === '0.0001ms') { | ||
| 1910 | self.wrapperStyle[durationProp] = '0s'; | ||
| 1911 | } | ||
| 1912 | }); | ||
| 1913 | } | ||
| 1914 | this.wrapperStyle.opacity = '0'; | ||
| 1915 | } | ||
| 1916 | } | ||
| 1917 | |||
| 1918 | Indicator.prototype = { | ||
| 1919 | handleEvent: function (e) { | ||
| 1920 | switch ( e.type ) { | ||
| 1921 | case 'touchstart': | ||
| 1922 | case 'pointerdown': | ||
| 1923 | case 'MSPointerDown': | ||
| 1924 | case 'mousedown': | ||
| 1925 | this._start(e); | ||
| 1926 | break; | ||
| 1927 | case 'touchmove': | ||
| 1928 | case 'pointermove': | ||
| 1929 | case 'MSPointerMove': | ||
| 1930 | case 'mousemove': | ||
| 1931 | this._move(e); | ||
| 1932 | break; | ||
| 1933 | case 'touchend': | ||
| 1934 | case 'pointerup': | ||
| 1935 | case 'MSPointerUp': | ||
| 1936 | case 'mouseup': | ||
| 1937 | case 'touchcancel': | ||
| 1938 | case 'pointercancel': | ||
| 1939 | case 'MSPointerCancel': | ||
| 1940 | case 'mousecancel': | ||
| 1941 | this._end(e); | ||
| 1942 | break; | ||
| 1943 | } | ||
| 1944 | }, | ||
| 1945 | |||
| 1946 | destroy: function () { | ||
| 1947 | if ( this.options.fadeScrollbars ) { | ||
| 1948 | clearTimeout(this.fadeTimeout); | ||
| 1949 | this.fadeTimeout = null; | ||
| 1950 | } | ||
| 1951 | if ( this.options.interactive ) { | ||
| 1952 | utils.removeEvent(this.indicator, 'touchstart', this); | ||
| 1953 | utils.removeEvent(this.indicator, utils.prefixPointerEvent('pointerdown'), this); | ||
| 1954 | utils.removeEvent(this.indicator, 'mousedown', this); | ||
| 1955 | |||
| 1956 | utils.removeEvent(window, 'touchmove', this); | ||
| 1957 | utils.removeEvent(window, utils.prefixPointerEvent('pointermove'), this); | ||
| 1958 | utils.removeEvent(window, 'mousemove', this); | ||
| 1959 | |||
| 1960 | utils.removeEvent(window, 'touchend', this); | ||
| 1961 | utils.removeEvent(window, utils.prefixPointerEvent('pointerup'), this); | ||
| 1962 | utils.removeEvent(window, 'mouseup', this); | ||
| 1963 | } | ||
| 1964 | |||
| 1965 | if ( this.options.defaultScrollbars ) { | ||
| 1966 | this.wrapper.parentNode.removeChild(this.wrapper); | ||
| 1967 | } | ||
| 1968 | }, | ||
| 1969 | |||
| 1970 | _start: function (e) { | ||
| 1971 | var point = e.touches ? e.touches[0] : e; | ||
| 1972 | |||
| 1973 | e.preventDefault(); | ||
| 1974 | e.stopPropagation(); | ||
| 1975 | |||
| 1976 | this.transitionTime(); | ||
| 1977 | |||
| 1978 | this.initiated = true; | ||
| 1979 | this.moved = false; | ||
| 1980 | this.lastPointX = point.pageX; | ||
| 1981 | this.lastPointY = point.pageY; | ||
| 1982 | |||
| 1983 | this.startTime = utils.getTime(); | ||
| 1984 | |||
| 1985 | if ( !this.options.disableTouch ) { | ||
| 1986 | utils.addEvent(window, 'touchmove', this); | ||
| 1987 | } | ||
| 1988 | if ( !this.options.disablePointer ) { | ||
| 1989 | utils.addEvent(window, utils.prefixPointerEvent('pointermove'), this); | ||
| 1990 | } | ||
| 1991 | if ( !this.options.disableMouse ) { | ||
| 1992 | utils.addEvent(window, 'mousemove', this); | ||
| 1993 | } | ||
| 1994 | |||
| 1995 | this.scroller._execEvent('beforeScrollStart'); | ||
| 1996 | }, | ||
| 1997 | |||
| 1998 | _move: function (e) { | ||
| 1999 | var point = e.touches ? e.touches[0] : e, | ||
| 2000 | deltaX, deltaY, | ||
| 2001 | newX, newY, | ||
| 2002 | timestamp = utils.getTime(); | ||
| 2003 | |||
| 2004 | if ( !this.moved ) { | ||
| 2005 | this.scroller._execEvent('scrollStart'); | ||
| 2006 | } | ||
| 2007 | |||
| 2008 | this.moved = true; | ||
| 2009 | |||
| 2010 | deltaX = point.pageX - this.lastPointX; | ||
| 2011 | this.lastPointX = point.pageX; | ||
| 2012 | |||
| 2013 | deltaY = point.pageY - this.lastPointY; | ||
| 2014 | this.lastPointY = point.pageY; | ||
| 2015 | |||
| 2016 | newX = this.x + deltaX; | ||
| 2017 | newY = this.y + deltaY; | ||
| 2018 | |||
| 2019 | this._pos(newX, newY); | ||
| 2020 | |||
| 2021 | // INSERT POINT: indicator._move | ||
| 2022 | |||
| 2023 | e.preventDefault(); | ||
| 2024 | e.stopPropagation(); | ||
| 2025 | }, | ||
| 2026 | |||
| 2027 | _end: function (e) { | ||
| 2028 | if ( !this.initiated ) { | ||
| 2029 | return; | ||
| 2030 | } | ||
| 2031 | |||
| 2032 | this.initiated = false; | ||
| 2033 | |||
| 2034 | e.preventDefault(); | ||
| 2035 | e.stopPropagation(); | ||
| 2036 | |||
| 2037 | utils.removeEvent(window, 'touchmove', this); | ||
| 2038 | utils.removeEvent(window, utils.prefixPointerEvent('pointermove'), this); | ||
| 2039 | utils.removeEvent(window, 'mousemove', this); | ||
| 2040 | |||
| 2041 | if ( this.scroller.options.snap ) { | ||
| 2042 | var snap = this.scroller._nearestSnap(this.scroller.x, this.scroller.y); | ||
| 2043 | |||
| 2044 | var time = this.options.snapSpeed || Math.max( | ||
| 2045 | Math.max( | ||
| 2046 | Math.min(Math.abs(this.scroller.x - snap.x), 1000), | ||
| 2047 | Math.min(Math.abs(this.scroller.y - snap.y), 1000) | ||
| 2048 | ), 300); | ||
| 2049 | |||
| 2050 | if ( this.scroller.x != snap.x || this.scroller.y != snap.y ) { | ||
| 2051 | this.scroller.directionX = 0; | ||
| 2052 | this.scroller.directionY = 0; | ||
| 2053 | this.scroller.currentPage = snap; | ||
| 2054 | this.scroller.scrollTo(snap.x, snap.y, time, this.scroller.options.bounceEasing); | ||
| 2055 | } | ||
| 2056 | } | ||
| 2057 | |||
| 2058 | if ( this.moved ) { | ||
| 2059 | this.scroller._execEvent('scrollEnd'); | ||
| 2060 | } | ||
| 2061 | }, | ||
| 2062 | |||
| 2063 | transitionTime: function (time) { | ||
| 2064 | time = time || 0; | ||
| 2065 | var durationProp = utils.style.transitionDuration; | ||
| 2066 | this.indicatorStyle[durationProp] = time + 'ms'; | ||
| 2067 | |||
| 2068 | if ( !time && utils.isBadAndroid ) { | ||
| 2069 | this.indicatorStyle[durationProp] = '0.0001ms'; | ||
| 2070 | // remove 0.0001ms | ||
| 2071 | var self = this; | ||
| 2072 | rAF(function() { | ||
| 2073 | if(self.indicatorStyle[durationProp] === '0.0001ms') { | ||
| 2074 | self.indicatorStyle[durationProp] = '0s'; | ||
| 2075 | } | ||
| 2076 | }); | ||
| 2077 | } | ||
| 2078 | }, | ||
| 2079 | |||
| 2080 | transitionTimingFunction: function (easing) { | ||
| 2081 | this.indicatorStyle[utils.style.transitionTimingFunction] = easing; | ||
| 2082 | }, | ||
| 2083 | |||
| 2084 | refresh: function () { | ||
| 2085 | this.transitionTime(); | ||
| 2086 | |||
| 2087 | if ( this.options.listenX && !this.options.listenY ) { | ||
| 2088 | this.indicatorStyle.display = this.scroller.hasHorizontalScroll ? 'block' : 'none'; | ||
| 2089 | } else if ( this.options.listenY && !this.options.listenX ) { | ||
| 2090 | this.indicatorStyle.display = this.scroller.hasVerticalScroll ? 'block' : 'none'; | ||
| 2091 | } else { | ||
| 2092 | this.indicatorStyle.display = this.scroller.hasHorizontalScroll || this.scroller.hasVerticalScroll ? 'block' : 'none'; | ||
| 2093 | } | ||
| 2094 | |||
| 2095 | if ( this.scroller.hasHorizontalScroll && this.scroller.hasVerticalScroll ) { | ||
| 2096 | utils.addClass(this.wrapper, 'iScrollBothScrollbars'); | ||
| 2097 | utils.removeClass(this.wrapper, 'iScrollLoneScrollbar'); | ||
| 2098 | |||
| 2099 | if ( this.options.defaultScrollbars && this.options.customStyle ) { | ||
| 2100 | if ( this.options.listenX ) { | ||
| 2101 | this.wrapper.style.right = '8px'; | ||
| 2102 | } else { | ||
| 2103 | this.wrapper.style.bottom = '8px'; | ||
| 2104 | } | ||
| 2105 | } | ||
| 2106 | } else { | ||
| 2107 | utils.removeClass(this.wrapper, 'iScrollBothScrollbars'); | ||
| 2108 | utils.addClass(this.wrapper, 'iScrollLoneScrollbar'); | ||
| 2109 | |||
| 2110 | if ( this.options.defaultScrollbars && this.options.customStyle ) { | ||
| 2111 | if ( this.options.listenX ) { | ||
| 2112 | this.wrapper.style.right = '2px'; | ||
| 2113 | } else { | ||
| 2114 | this.wrapper.style.bottom = '2px'; | ||
| 2115 | } | ||
| 2116 | } | ||
| 2117 | } | ||
| 2118 | |||
| 2119 | var r = this.wrapper.offsetHeight; // force refresh | ||
| 2120 | |||
| 2121 | if ( this.options.listenX ) { | ||
| 2122 | this.wrapperWidth = this.wrapper.clientWidth; | ||
| 2123 | if ( this.options.resize ) { | ||
| 2124 | this.indicatorWidth = Math.max(Math.round(this.wrapperWidth * this.wrapperWidth / (this.scroller.scrollerWidth || this.wrapperWidth || 1)), 8); | ||
| 2125 | this.indicatorStyle.width = this.indicatorWidth + 'px'; | ||
| 2126 | } else { | ||
| 2127 | this.indicatorWidth = this.indicator.clientWidth; | ||
| 2128 | } | ||
| 2129 | |||
| 2130 | this.maxPosX = this.wrapperWidth - this.indicatorWidth; | ||
| 2131 | |||
| 2132 | if ( this.options.shrink == 'clip' ) { | ||
| 2133 | this.minBoundaryX = -this.indicatorWidth + 8; | ||
| 2134 | this.maxBoundaryX = this.wrapperWidth - 8; | ||
| 2135 | } else { | ||
| 2136 | this.minBoundaryX = 0; | ||
| 2137 | this.maxBoundaryX = this.maxPosX; | ||
| 2138 | } | ||
| 2139 | |||
| 2140 | this.sizeRatioX = this.options.speedRatioX || (this.scroller.maxScrollX && (this.maxPosX / this.scroller.maxScrollX)); | ||
| 2141 | } | ||
| 2142 | |||
| 2143 | if ( this.options.listenY ) { | ||
| 2144 | this.wrapperHeight = this.wrapper.clientHeight; | ||
| 2145 | if ( this.options.resize ) { | ||
| 2146 | this.indicatorHeight = Math.max(Math.round(this.wrapperHeight * this.wrapperHeight / (this.scroller.scrollerHeight || this.wrapperHeight || 1)), 8); | ||
| 2147 | this.indicatorStyle.height = this.indicatorHeight + 'px'; | ||
| 2148 | } else { | ||
| 2149 | this.indicatorHeight = this.indicator.clientHeight; | ||
| 2150 | } | ||
| 2151 | |||
| 2152 | this.maxPosY = this.wrapperHeight - this.indicatorHeight; | ||
| 2153 | |||
| 2154 | if ( this.options.shrink == 'clip' ) { | ||
| 2155 | this.minBoundaryY = -this.indicatorHeight + 8; | ||
| 2156 | this.maxBoundaryY = this.wrapperHeight - 8; | ||
| 2157 | } else { | ||
| 2158 | this.minBoundaryY = 0; | ||
| 2159 | this.maxBoundaryY = this.maxPosY; | ||
| 2160 | } | ||
| 2161 | |||
| 2162 | this.maxPosY = this.wrapperHeight - this.indicatorHeight; | ||
| 2163 | this.sizeRatioY = this.options.speedRatioY || (this.scroller.maxScrollY && (this.maxPosY / this.scroller.maxScrollY)); | ||
| 2164 | } | ||
| 2165 | |||
| 2166 | this.updatePosition(); | ||
| 2167 | }, | ||
| 2168 | |||
| 2169 | updatePosition: function () { | ||
| 2170 | var x = this.options.listenX && Math.round(this.sizeRatioX * this.scroller.x) || 0, | ||
| 2171 | y = this.options.listenY && Math.round(this.sizeRatioY * this.scroller.y) || 0; | ||
| 2172 | |||
| 2173 | if ( !this.options.ignoreBoundaries ) { | ||
| 2174 | if ( x < this.minBoundaryX ) { | ||
| 2175 | if ( this.options.shrink == 'scale' ) { | ||
| 2176 | this.width = Math.max(this.indicatorWidth + x, 8); | ||
| 2177 | this.indicatorStyle.width = this.width + 'px'; | ||
| 2178 | } | ||
| 2179 | x = this.minBoundaryX; | ||
| 2180 | } else if ( x > this.maxBoundaryX ) { | ||
| 2181 | if ( this.options.shrink == 'scale' ) { | ||
| 2182 | this.width = Math.max(this.indicatorWidth - (x - this.maxPosX), 8); | ||
| 2183 | this.indicatorStyle.width = this.width + 'px'; | ||
| 2184 | x = this.maxPosX + this.indicatorWidth - this.width; | ||
| 2185 | } else { | ||
| 2186 | x = this.maxBoundaryX; | ||
| 2187 | } | ||
| 2188 | } else if ( this.options.shrink == 'scale' && this.width != this.indicatorWidth ) { | ||
| 2189 | this.width = this.indicatorWidth; | ||
| 2190 | this.indicatorStyle.width = this.width + 'px'; | ||
| 2191 | } | ||
| 2192 | |||
| 2193 | if ( y < this.minBoundaryY ) { | ||
| 2194 | if ( this.options.shrink == 'scale' ) { | ||
| 2195 | this.height = Math.max(this.indicatorHeight + y * 3, 8); | ||
| 2196 | this.indicatorStyle.height = this.height + 'px'; | ||
| 2197 | } | ||
| 2198 | y = this.minBoundaryY; | ||
| 2199 | } else if ( y > this.maxBoundaryY ) { | ||
| 2200 | if ( this.options.shrink == 'scale' ) { | ||
| 2201 | this.height = Math.max(this.indicatorHeight - (y - this.maxPosY) * 3, 8); | ||
| 2202 | this.indicatorStyle.height = this.height + 'px'; | ||
| 2203 | y = this.maxPosY + this.indicatorHeight - this.height; | ||
| 2204 | } else { | ||
| 2205 | y = this.maxBoundaryY; | ||
| 2206 | } | ||
| 2207 | } else if ( this.options.shrink == 'scale' && this.height != this.indicatorHeight ) { | ||
| 2208 | this.height = this.indicatorHeight; | ||
| 2209 | this.indicatorStyle.height = this.height + 'px'; | ||
| 2210 | } | ||
| 2211 | } | ||
| 2212 | |||
| 2213 | this.x = x; | ||
| 2214 | this.y = y; | ||
| 2215 | |||
| 2216 | if ( this.scroller.options.useTransform ) { | ||
| 2217 | this.indicatorStyle[utils.style.transform] = 'translate(' + x + 'px,' + y + 'px)' + this.scroller.translateZ; | ||
| 2218 | } else { | ||
| 2219 | this.indicatorStyle.left = x + 'px'; | ||
| 2220 | this.indicatorStyle.top = y + 'px'; | ||
| 2221 | } | ||
| 2222 | }, | ||
| 2223 | |||
| 2224 | _pos: function (x, y) { | ||
| 2225 | if ( x < 0 ) { | ||
| 2226 | x = 0; | ||
| 2227 | } else if ( x > this.maxPosX ) { | ||
| 2228 | x = this.maxPosX; | ||
| 2229 | } | ||
| 2230 | |||
| 2231 | if ( y < 0 ) { | ||
| 2232 | y = 0; | ||
| 2233 | } else if ( y > this.maxPosY ) { | ||
| 2234 | y = this.maxPosY; | ||
| 2235 | } | ||
| 2236 | |||
| 2237 | x = this.options.listenX ? Math.round(x / this.sizeRatioX) : this.scroller.x; | ||
| 2238 | y = this.options.listenY ? Math.round(y / this.sizeRatioY) : this.scroller.y; | ||
| 2239 | |||
| 2240 | this.scroller.scrollTo(x, y); | ||
| 2241 | }, | ||
| 2242 | |||
| 2243 | fade: function (val, hold) { | ||
| 2244 | if ( hold && !this.visible ) { | ||
| 2245 | return; | ||
| 2246 | } | ||
| 2247 | |||
| 2248 | clearTimeout(this.fadeTimeout); | ||
| 2249 | this.fadeTimeout = null; | ||
| 2250 | |||
| 2251 | var time = val ? 250 : 500, | ||
| 2252 | delay = val ? 0 : 300; | ||
| 2253 | |||
| 2254 | val = val ? '1' : '0'; | ||
| 2255 | |||
| 2256 | this.wrapperStyle[utils.style.transitionDuration] = time + 'ms'; | ||
| 2257 | |||
| 2258 | this.fadeTimeout = setTimeout((function (val) { | ||
| 2259 | this.wrapperStyle.opacity = val; | ||
| 2260 | this.visible = +val; | ||
| 2261 | }).bind(this, val), delay); | ||
| 2262 | } | ||
| 2263 | }; | ||
| 2264 | |||
| 2265 | IScroll.utils = utils; | ||
| 2266 | |||
| 2267 | if ( typeof module != 'undefined' && module.exports ) { | ||
| 2268 | module.exports = IScroll; | ||
| 2269 | } else if ( typeof define == 'function' && define.amd ) { | ||
| 2270 | define( function () { return IScroll; } ); | ||
| 2271 | } else { | ||
| 2272 | window.IScroll = IScroll; | ||
| 2273 | } | ||
| 2274 | |||
| 2275 | })(window, document, Math); |
staticLib/iscroll/iscroll.js
deleted
100644 → 0
| 1 | /*! iScroll v5.2.0 ~ (c) 2008-2016 Matteo Spinelli ~ http://cubiq.org/license */ | ||
| 2 | (function (window, document, Math) { | ||
| 3 | var rAF = window.requestAnimationFrame || | ||
| 4 | window.webkitRequestAnimationFrame || | ||
| 5 | window.mozRequestAnimationFrame || | ||
| 6 | window.oRequestAnimationFrame || | ||
| 7 | window.msRequestAnimationFrame || | ||
| 8 | function (callback) { window.setTimeout(callback, 1000 / 60); }; | ||
| 9 | |||
| 10 | var utils = (function () { | ||
| 11 | var me = {}; | ||
| 12 | |||
| 13 | var _elementStyle = document.createElement('div').style; | ||
| 14 | var _vendor = (function () { | ||
| 15 | var vendors = ['t', 'webkitT', 'MozT', 'msT', 'OT'], | ||
| 16 | transform, | ||
| 17 | i = 0, | ||
| 18 | l = vendors.length; | ||
| 19 | |||
| 20 | for ( ; i < l; i++ ) { | ||
| 21 | transform = vendors[i] + 'ransform'; | ||
| 22 | if ( transform in _elementStyle ) return vendors[i].substr(0, vendors[i].length-1); | ||
| 23 | } | ||
| 24 | |||
| 25 | return false; | ||
| 26 | })(); | ||
| 27 | |||
| 28 | function _prefixStyle (style) { | ||
| 29 | if ( _vendor === false ) return false; | ||
| 30 | if ( _vendor === '' ) return style; | ||
| 31 | return _vendor + style.charAt(0).toUpperCase() + style.substr(1); | ||
| 32 | } | ||
| 33 | |||
| 34 | me.getTime = Date.now || function getTime () { return new Date().getTime(); }; | ||
| 35 | |||
| 36 | me.extend = function (target, obj) { | ||
| 37 | for ( var i in obj ) { | ||
| 38 | target[i] = obj[i]; | ||
| 39 | } | ||
| 40 | }; | ||
| 41 | |||
| 42 | me.addEvent = function (el, type, fn, capture) { | ||
| 43 | el.addEventListener(type, fn, !!capture); | ||
| 44 | }; | ||
| 45 | |||
| 46 | me.removeEvent = function (el, type, fn, capture) { | ||
| 47 | el.removeEventListener(type, fn, !!capture); | ||
| 48 | }; | ||
| 49 | |||
| 50 | me.prefixPointerEvent = function (pointerEvent) { | ||
| 51 | return window.MSPointerEvent ? | ||
| 52 | 'MSPointer' + pointerEvent.charAt(7).toUpperCase() + pointerEvent.substr(8): | ||
| 53 | pointerEvent; | ||
| 54 | }; | ||
| 55 | |||
| 56 | me.momentum = function (current, start, time, lowerMargin, wrapperSize, deceleration) { | ||
| 57 | var distance = current - start, | ||
| 58 | speed = Math.abs(distance) / time, | ||
| 59 | destination, | ||
| 60 | duration; | ||
| 61 | |||
| 62 | deceleration = deceleration === undefined ? 0.0006 : deceleration; | ||
| 63 | |||
| 64 | destination = current + ( speed * speed ) / ( 2 * deceleration ) * ( distance < 0 ? -1 : 1 ); | ||
| 65 | duration = speed / deceleration; | ||
| 66 | |||
| 67 | if ( destination < lowerMargin ) { | ||
| 68 | destination = wrapperSize ? lowerMargin - ( wrapperSize / 2.5 * ( speed / 8 ) ) : lowerMargin; | ||
| 69 | distance = Math.abs(destination - current); | ||
| 70 | duration = distance / speed; | ||
| 71 | } else if ( destination > 0 ) { | ||
| 72 | destination = wrapperSize ? wrapperSize / 2.5 * ( speed / 8 ) : 0; | ||
| 73 | distance = Math.abs(current) + destination; | ||
| 74 | duration = distance / speed; | ||
| 75 | } | ||
| 76 | |||
| 77 | return { | ||
| 78 | destination: Math.round(destination), | ||
| 79 | duration: duration | ||
| 80 | }; | ||
| 81 | }; | ||
| 82 | |||
| 83 | var _transform = _prefixStyle('transform'); | ||
| 84 | |||
| 85 | me.extend(me, { | ||
| 86 | hasTransform: _transform !== false, | ||
| 87 | hasPerspective: _prefixStyle('perspective') in _elementStyle, | ||
| 88 | hasTouch: 'ontouchstart' in window, | ||
| 89 | hasPointer: !!(window.PointerEvent || window.MSPointerEvent), // IE10 is prefixed | ||
| 90 | hasTransition: _prefixStyle('transition') in _elementStyle | ||
| 91 | }); | ||
| 92 | |||
| 93 | /* | ||
| 94 | This should find all Android browsers lower than build 535.19 (both stock browser and webview) | ||
| 95 | - galaxy S2 is ok | ||
| 96 | - 2.3.6 : `AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1` | ||
| 97 | - 4.0.4 : `AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30` | ||
| 98 | - galaxy S3 is badAndroid (stock brower, webview) | ||
| 99 | `AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30` | ||
| 100 | - galaxy S4 is badAndroid (stock brower, webview) | ||
| 101 | `AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30` | ||
| 102 | - galaxy S5 is OK | ||
| 103 | `AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36 (Chrome/)` | ||
| 104 | - galaxy S6 is OK | ||
| 105 | `AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36 (Chrome/)` | ||
| 106 | */ | ||
| 107 | me.isBadAndroid = (function() { | ||
| 108 | var appVersion = window.navigator.appVersion; | ||
| 109 | // Android browser is not a chrome browser. | ||
| 110 | if (/Android/.test(appVersion) && !(/Chrome\/\d/.test(appVersion))) { | ||
| 111 | var safariVersion = appVersion.match(/Safari\/(\d+.\d)/); | ||
| 112 | if(safariVersion && typeof safariVersion === "object" && safariVersion.length >= 2) { | ||
| 113 | return parseFloat(safariVersion[1]) < 535.19; | ||
| 114 | } else { | ||
| 115 | return true; | ||
| 116 | } | ||
| 117 | } else { | ||
| 118 | return false; | ||
| 119 | } | ||
| 120 | })(); | ||
| 121 | |||
| 122 | me.extend(me.style = {}, { | ||
| 123 | transform: _transform, | ||
| 124 | transitionTimingFunction: _prefixStyle('transitionTimingFunction'), | ||
| 125 | transitionDuration: _prefixStyle('transitionDuration'), | ||
| 126 | transitionDelay: _prefixStyle('transitionDelay'), | ||
| 127 | transformOrigin: _prefixStyle('transformOrigin') | ||
| 128 | }); | ||
| 129 | |||
| 130 | me.hasClass = function (e, c) { | ||
| 131 | var re = new RegExp("(^|\\s)" + c + "(\\s|$)"); | ||
| 132 | return re.test(e.className); | ||
| 133 | }; | ||
| 134 | |||
| 135 | me.addClass = function (e, c) { | ||
| 136 | if ( me.hasClass(e, c) ) { | ||
| 137 | return; | ||
| 138 | } | ||
| 139 | |||
| 140 | var newclass = e.className.split(' '); | ||
| 141 | newclass.push(c); | ||
| 142 | e.className = newclass.join(' '); | ||
| 143 | }; | ||
| 144 | |||
| 145 | me.removeClass = function (e, c) { | ||
| 146 | if ( !me.hasClass(e, c) ) { | ||
| 147 | return; | ||
| 148 | } | ||
| 149 | |||
| 150 | var re = new RegExp("(^|\\s)" + c + "(\\s|$)", 'g'); | ||
| 151 | e.className = e.className.replace(re, ' '); | ||
| 152 | }; | ||
| 153 | |||
| 154 | me.offset = function (el) { | ||
| 155 | var left = -el.offsetLeft, | ||
| 156 | top = -el.offsetTop; | ||
| 157 | |||
| 158 | // jshint -W084 | ||
| 159 | while (el = el.offsetParent) { | ||
| 160 | left -= el.offsetLeft; | ||
| 161 | top -= el.offsetTop; | ||
| 162 | } | ||
| 163 | // jshint +W084 | ||
| 164 | |||
| 165 | return { | ||
| 166 | left: left, | ||
| 167 | top: top | ||
| 168 | }; | ||
| 169 | }; | ||
| 170 | |||
| 171 | me.preventDefaultException = function (el, exceptions) { | ||
| 172 | for ( var i in exceptions ) { | ||
| 173 | if ( exceptions[i].test(el[i]) ) { | ||
| 174 | return true; | ||
| 175 | } | ||
| 176 | } | ||
| 177 | |||
| 178 | return false; | ||
| 179 | }; | ||
| 180 | |||
| 181 | me.extend(me.eventType = {}, { | ||
| 182 | touchstart: 1, | ||
| 183 | touchmove: 1, | ||
| 184 | touchend: 1, | ||
| 185 | |||
| 186 | mousedown: 2, | ||
| 187 | mousemove: 2, | ||
| 188 | mouseup: 2, | ||
| 189 | |||
| 190 | pointerdown: 3, | ||
| 191 | pointermove: 3, | ||
| 192 | pointerup: 3, | ||
| 193 | |||
| 194 | MSPointerDown: 3, | ||
| 195 | MSPointerMove: 3, | ||
| 196 | MSPointerUp: 3 | ||
| 197 | }); | ||
| 198 | |||
| 199 | me.extend(me.ease = {}, { | ||
| 200 | quadratic: { | ||
| 201 | style: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)', | ||
| 202 | fn: function (k) { | ||
| 203 | return k * ( 2 - k ); | ||
| 204 | } | ||
| 205 | }, | ||
| 206 | circular: { | ||
| 207 | style: 'cubic-bezier(0.1, 0.57, 0.1, 1)', // Not properly "circular" but this looks better, it should be (0.075, 0.82, 0.165, 1) | ||
| 208 | fn: function (k) { | ||
| 209 | return Math.sqrt( 1 - ( --k * k ) ); | ||
| 210 | } | ||
| 211 | }, | ||
| 212 | back: { | ||
| 213 | style: 'cubic-bezier(0.175, 0.885, 0.32, 1.275)', | ||
| 214 | fn: function (k) { | ||
| 215 | var b = 4; | ||
| 216 | return ( k = k - 1 ) * k * ( ( b + 1 ) * k + b ) + 1; | ||
| 217 | } | ||
| 218 | }, | ||
| 219 | bounce: { | ||
| 220 | style: '', | ||
| 221 | fn: function (k) { | ||
| 222 | if ( ( k /= 1 ) < ( 1 / 2.75 ) ) { | ||
| 223 | return 7.5625 * k * k; | ||
| 224 | } else if ( k < ( 2 / 2.75 ) ) { | ||
| 225 | return 7.5625 * ( k -= ( 1.5 / 2.75 ) ) * k + 0.75; | ||
| 226 | } else if ( k < ( 2.5 / 2.75 ) ) { | ||
| 227 | return 7.5625 * ( k -= ( 2.25 / 2.75 ) ) * k + 0.9375; | ||
| 228 | } else { | ||
| 229 | return 7.5625 * ( k -= ( 2.625 / 2.75 ) ) * k + 0.984375; | ||
| 230 | } | ||
| 231 | } | ||
| 232 | }, | ||
| 233 | elastic: { | ||
| 234 | style: '', | ||
| 235 | fn: function (k) { | ||
| 236 | var f = 0.22, | ||
| 237 | e = 0.4; | ||
| 238 | |||
| 239 | if ( k === 0 ) { return 0; } | ||
| 240 | if ( k == 1 ) { return 1; } | ||
| 241 | |||
| 242 | return ( e * Math.pow( 2, - 10 * k ) * Math.sin( ( k - f / 4 ) * ( 2 * Math.PI ) / f ) + 1 ); | ||
| 243 | } | ||
| 244 | } | ||
| 245 | }); | ||
| 246 | |||
| 247 | me.tap = function (e, eventName) { | ||
| 248 | var ev = document.createEvent('Event'); | ||
| 249 | ev.initEvent(eventName, true, true); | ||
| 250 | ev.pageX = e.pageX; | ||
| 251 | ev.pageY = e.pageY; | ||
| 252 | e.target.dispatchEvent(ev); | ||
| 253 | }; | ||
| 254 | |||
| 255 | me.click = function (e) { | ||
| 256 | var target = e.target, | ||
| 257 | ev; | ||
| 258 | |||
| 259 | if ( !(/(SELECT|INPUT|TEXTAREA)/i).test(target.tagName) ) { | ||
| 260 | ev = document.createEvent('MouseEvents'); | ||
| 261 | ev.initMouseEvent('click', true, true, e.view, 1, | ||
| 262 | target.screenX, target.screenY, target.clientX, target.clientY, | ||
| 263 | e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, | ||
| 264 | 0, null); | ||
| 265 | |||
| 266 | ev._constructed = true; | ||
| 267 | target.dispatchEvent(ev); | ||
| 268 | } | ||
| 269 | }; | ||
| 270 | |||
| 271 | return me; | ||
| 272 | })(); | ||
| 273 | function IScroll (el, options) { | ||
| 274 | this.wrapper = typeof el == 'string' ? document.querySelector(el) : el; | ||
| 275 | this.scroller = this.wrapper.children[0]; | ||
| 276 | this.scrollerStyle = this.scroller.style; // cache style for better performance | ||
| 277 | |||
| 278 | this.options = { | ||
| 279 | |||
| 280 | resizeScrollbars: true, | ||
| 281 | |||
| 282 | mouseWheelSpeed: 20, | ||
| 283 | |||
| 284 | snapThreshold: 0.334, | ||
| 285 | |||
| 286 | // INSERT POINT: OPTIONS | ||
| 287 | disablePointer : !utils.hasPointer, | ||
| 288 | disableTouch : utils.hasPointer || !utils.hasTouch, | ||
| 289 | disableMouse : utils.hasPointer || utils.hasTouch, | ||
| 290 | startX: 0, | ||
| 291 | startY: 0, | ||
| 292 | scrollY: true, | ||
| 293 | directionLockThreshold: 5, | ||
| 294 | momentum: true, | ||
| 295 | |||
| 296 | bounce: true, | ||
| 297 | bounceTime: 600, | ||
| 298 | bounceEasing: '', | ||
| 299 | |||
| 300 | preventDefault: true, | ||
| 301 | preventDefaultException: { tagName: /^(INPUT|TEXTAREA|BUTTON|SELECT)$/ }, | ||
| 302 | |||
| 303 | HWCompositing: true, | ||
| 304 | useTransition: true, | ||
| 305 | useTransform: true, | ||
| 306 | bindToWrapper: typeof window.onmousedown === "undefined" | ||
| 307 | }; | ||
| 308 | |||
| 309 | for ( var i in options ) { | ||
| 310 | this.options[i] = options[i]; | ||
| 311 | } | ||
| 312 | |||
| 313 | // Normalize options | ||
| 314 | this.translateZ = this.options.HWCompositing && utils.hasPerspective ? ' translateZ(0)' : ''; | ||
| 315 | |||
| 316 | this.options.useTransition = utils.hasTransition && this.options.useTransition; | ||
| 317 | this.options.useTransform = utils.hasTransform && this.options.useTransform; | ||
| 318 | |||
| 319 | this.options.eventPassthrough = this.options.eventPassthrough === true ? 'vertical' : this.options.eventPassthrough; | ||
| 320 | this.options.preventDefault = !this.options.eventPassthrough && this.options.preventDefault; | ||
| 321 | |||
| 322 | // If you want eventPassthrough I have to lock one of the axes | ||
| 323 | this.options.scrollY = this.options.eventPassthrough == 'vertical' ? false : this.options.scrollY; | ||
| 324 | this.options.scrollX = this.options.eventPassthrough == 'horizontal' ? false : this.options.scrollX; | ||
| 325 | |||
| 326 | // With eventPassthrough we also need lockDirection mechanism | ||
| 327 | this.options.freeScroll = this.options.freeScroll && !this.options.eventPassthrough; | ||
| 328 | this.options.directionLockThreshold = this.options.eventPassthrough ? 0 : this.options.directionLockThreshold; | ||
| 329 | |||
| 330 | this.options.bounceEasing = typeof this.options.bounceEasing == 'string' ? utils.ease[this.options.bounceEasing] || utils.ease.circular : this.options.bounceEasing; | ||
| 331 | |||
| 332 | this.options.resizePolling = this.options.resizePolling === undefined ? 60 : this.options.resizePolling; | ||
| 333 | |||
| 334 | if ( this.options.tap === true ) { | ||
| 335 | this.options.tap = 'tap'; | ||
| 336 | } | ||
| 337 | |||
| 338 | if ( this.options.shrinkScrollbars == 'scale' ) { | ||
| 339 | this.options.useTransition = false; | ||
| 340 | } | ||
| 341 | |||
| 342 | this.options.invertWheelDirection = this.options.invertWheelDirection ? -1 : 1; | ||
| 343 | |||
| 344 | // INSERT POINT: NORMALIZATION | ||
| 345 | |||
| 346 | // Some defaults | ||
| 347 | this.x = 0; | ||
| 348 | this.y = 0; | ||
| 349 | this.directionX = 0; | ||
| 350 | this.directionY = 0; | ||
| 351 | this._events = {}; | ||
| 352 | |||
| 353 | // INSERT POINT: DEFAULTS | ||
| 354 | |||
| 355 | this._init(); | ||
| 356 | this.refresh(); | ||
| 357 | |||
| 358 | this.scrollTo(this.options.startX, this.options.startY); | ||
| 359 | this.enable(); | ||
| 360 | } | ||
| 361 | |||
| 362 | IScroll.prototype = { | ||
| 363 | version: '5.2.0', | ||
| 364 | |||
| 365 | _init: function () { | ||
| 366 | this._initEvents(); | ||
| 367 | |||
| 368 | if ( this.options.scrollbars || this.options.indicators ) { | ||
| 369 | this._initIndicators(); | ||
| 370 | } | ||
| 371 | |||
| 372 | if ( this.options.mouseWheel ) { | ||
| 373 | this._initWheel(); | ||
| 374 | } | ||
| 375 | |||
| 376 | if ( this.options.snap ) { | ||
| 377 | this._initSnap(); | ||
| 378 | } | ||
| 379 | |||
| 380 | if ( this.options.keyBindings ) { | ||
| 381 | this._initKeys(); | ||
| 382 | } | ||
| 383 | |||
| 384 | // INSERT POINT: _init | ||
| 385 | |||
| 386 | }, | ||
| 387 | |||
| 388 | destroy: function () { | ||
| 389 | this._initEvents(true); | ||
| 390 | clearTimeout(this.resizeTimeout); | ||
| 391 | this.resizeTimeout = null; | ||
| 392 | this._execEvent('destroy'); | ||
| 393 | }, | ||
| 394 | |||
| 395 | _transitionEnd: function (e) { | ||
| 396 | if ( e.target != this.scroller || !this.isInTransition ) { | ||
| 397 | return; | ||
| 398 | } | ||
| 399 | |||
| 400 | this._transitionTime(); | ||
| 401 | if ( !this.resetPosition(this.options.bounceTime) ) { | ||
| 402 | this.isInTransition = false; | ||
| 403 | this._execEvent('scrollEnd'); | ||
| 404 | } | ||
| 405 | }, | ||
| 406 | |||
| 407 | _start: function (e) { | ||
| 408 | // React to left mouse button only | ||
| 409 | if ( utils.eventType[e.type] != 1 ) { | ||
| 410 | // for button property | ||
| 411 | // http://unixpapa.com/js/mouse.html | ||
| 412 | var button; | ||
| 413 | if (!e.which) { | ||
| 414 | /* IE case */ | ||
| 415 | button = (e.button < 2) ? 0 : | ||
| 416 | ((e.button == 4) ? 1 : 2); | ||
| 417 | } else { | ||
| 418 | /* All others */ | ||
| 419 | button = e.button; | ||
| 420 | } | ||
| 421 | if ( button !== 0 ) { | ||
| 422 | return; | ||
| 423 | } | ||
| 424 | } | ||
| 425 | |||
| 426 | if ( !this.enabled || (this.initiated && utils.eventType[e.type] !== this.initiated) ) { | ||
| 427 | return; | ||
| 428 | } | ||
| 429 | |||
| 430 | if ( this.options.preventDefault && !utils.isBadAndroid && !utils.preventDefaultException(e.target, this.options.preventDefaultException) ) { | ||
| 431 | e.preventDefault(); | ||
| 432 | } | ||
| 433 | |||
| 434 | var point = e.touches ? e.touches[0] : e, | ||
| 435 | pos; | ||
| 436 | |||
| 437 | this.initiated = utils.eventType[e.type]; | ||
| 438 | this.moved = false; | ||
| 439 | this.distX = 0; | ||
| 440 | this.distY = 0; | ||
| 441 | this.directionX = 0; | ||
| 442 | this.directionY = 0; | ||
| 443 | this.directionLocked = 0; | ||
| 444 | |||
| 445 | this.startTime = utils.getTime(); | ||
| 446 | |||
| 447 | if ( this.options.useTransition && this.isInTransition ) { | ||
| 448 | this._transitionTime(); | ||
| 449 | this.isInTransition = false; | ||
| 450 | pos = this.getComputedPosition(); | ||
| 451 | this._translate(Math.round(pos.x), Math.round(pos.y)); | ||
| 452 | this._execEvent('scrollEnd'); | ||
| 453 | } else if ( !this.options.useTransition && this.isAnimating ) { | ||
| 454 | this.isAnimating = false; | ||
| 455 | this._execEvent('scrollEnd'); | ||
| 456 | } | ||
| 457 | |||
| 458 | this.startX = this.x; | ||
| 459 | this.startY = this.y; | ||
| 460 | this.absStartX = this.x; | ||
| 461 | this.absStartY = this.y; | ||
| 462 | this.pointX = point.pageX; | ||
| 463 | this.pointY = point.pageY; | ||
| 464 | |||
| 465 | this._execEvent('beforeScrollStart'); | ||
| 466 | }, | ||
| 467 | |||
| 468 | _move: function (e) { | ||
| 469 | if ( !this.enabled || utils.eventType[e.type] !== this.initiated ) { | ||
| 470 | return; | ||
| 471 | } | ||
| 472 | |||
| 473 | if ( this.options.preventDefault ) { // increases performance on Android? TODO: check! | ||
| 474 | e.preventDefault(); | ||
| 475 | } | ||
| 476 | |||
| 477 | var point = e.touches ? e.touches[0] : e, | ||
| 478 | deltaX = point.pageX - this.pointX, | ||
| 479 | deltaY = point.pageY - this.pointY, | ||
| 480 | timestamp = utils.getTime(), | ||
| 481 | newX, newY, | ||
| 482 | absDistX, absDistY; | ||
| 483 | |||
| 484 | this.pointX = point.pageX; | ||
| 485 | this.pointY = point.pageY; | ||
| 486 | |||
| 487 | this.distX += deltaX; | ||
| 488 | this.distY += deltaY; | ||
| 489 | absDistX = Math.abs(this.distX); | ||
| 490 | absDistY = Math.abs(this.distY); | ||
| 491 | |||
| 492 | // We need to move at least 10 pixels for the scrolling to initiate | ||
| 493 | if ( timestamp - this.endTime > 300 && (absDistX < 10 && absDistY < 10) ) { | ||
| 494 | return; | ||
| 495 | } | ||
| 496 | |||
| 497 | // If you are scrolling in one direction lock the other | ||
| 498 | if ( !this.directionLocked && !this.options.freeScroll ) { | ||
| 499 | if ( absDistX > absDistY + this.options.directionLockThreshold ) { | ||
| 500 | this.directionLocked = 'h'; // lock horizontally | ||
| 501 | } else if ( absDistY >= absDistX + this.options.directionLockThreshold ) { | ||
| 502 | this.directionLocked = 'v'; // lock vertically | ||
| 503 | } else { | ||
| 504 | this.directionLocked = 'n'; // no lock | ||
| 505 | } | ||
| 506 | } | ||
| 507 | |||
| 508 | if ( this.directionLocked == 'h' ) { | ||
| 509 | if ( this.options.eventPassthrough == 'vertical' ) { | ||
| 510 | e.preventDefault(); | ||
| 511 | } else if ( this.options.eventPassthrough == 'horizontal' ) { | ||
| 512 | this.initiated = false; | ||
| 513 | return; | ||
| 514 | } | ||
| 515 | |||
| 516 | deltaY = 0; | ||
| 517 | } else if ( this.directionLocked == 'v' ) { | ||
| 518 | if ( this.options.eventPassthrough == 'horizontal' ) { | ||
| 519 | e.preventDefault(); | ||
| 520 | } else if ( this.options.eventPassthrough == 'vertical' ) { | ||
| 521 | this.initiated = false; | ||
| 522 | return; | ||
| 523 | } | ||
| 524 | |||
| 525 | deltaX = 0; | ||
| 526 | } | ||
| 527 | |||
| 528 | deltaX = this.hasHorizontalScroll ? deltaX : 0; | ||
| 529 | deltaY = this.hasVerticalScroll ? deltaY : 0; | ||
| 530 | |||
| 531 | newX = this.x + deltaX; | ||
| 532 | newY = this.y + deltaY; | ||
| 533 | |||
| 534 | // Slow down if outside of the boundaries | ||
| 535 | if ( newX > 0 || newX < this.maxScrollX ) { | ||
| 536 | newX = this.options.bounce ? this.x + deltaX / 3 : newX > 0 ? 0 : this.maxScrollX; | ||
| 537 | } | ||
| 538 | if ( newY > 0 || newY < this.maxScrollY ) { | ||
| 539 | newY = this.options.bounce ? this.y + deltaY / 3 : newY > 0 ? 0 : this.maxScrollY; | ||
| 540 | } | ||
| 541 | |||
| 542 | this.directionX = deltaX > 0 ? -1 : deltaX < 0 ? 1 : 0; | ||
| 543 | this.directionY = deltaY > 0 ? -1 : deltaY < 0 ? 1 : 0; | ||
| 544 | |||
| 545 | if ( !this.moved ) { | ||
| 546 | this._execEvent('scrollStart'); | ||
| 547 | } | ||
| 548 | |||
| 549 | this.moved = true; | ||
| 550 | |||
| 551 | this._translate(newX, newY); | ||
| 552 | |||
| 553 | /* REPLACE START: _move */ | ||
| 554 | |||
| 555 | if ( timestamp - this.startTime > 300 ) { | ||
| 556 | this.startTime = timestamp; | ||
| 557 | this.startX = this.x; | ||
| 558 | this.startY = this.y; | ||
| 559 | } | ||
| 560 | |||
| 561 | /* REPLACE END: _move */ | ||
| 562 | |||
| 563 | }, | ||
| 564 | |||
| 565 | _end: function (e) { | ||
| 566 | if ( !this.enabled || utils.eventType[e.type] !== this.initiated ) { | ||
| 567 | return; | ||
| 568 | } | ||
| 569 | |||
| 570 | if ( this.options.preventDefault && !utils.preventDefaultException(e.target, this.options.preventDefaultException) ) { | ||
| 571 | e.preventDefault(); | ||
| 572 | } | ||
| 573 | |||
| 574 | var point = e.changedTouches ? e.changedTouches[0] : e, | ||
| 575 | momentumX, | ||
| 576 | momentumY, | ||
| 577 | duration = utils.getTime() - this.startTime, | ||
| 578 | newX = Math.round(this.x), | ||
| 579 | newY = Math.round(this.y), | ||
| 580 | distanceX = Math.abs(newX - this.startX), | ||
| 581 | distanceY = Math.abs(newY - this.startY), | ||
| 582 | time = 0, | ||
| 583 | easing = ''; | ||
| 584 | |||
| 585 | this.isInTransition = 0; | ||
| 586 | this.initiated = 0; | ||
| 587 | this.endTime = utils.getTime(); | ||
| 588 | |||
| 589 | // reset if we are outside of the boundaries | ||
| 590 | if ( this.resetPosition(this.options.bounceTime) ) { | ||
| 591 | return; | ||
| 592 | } | ||
| 593 | |||
| 594 | this.scrollTo(newX, newY); // ensures that the last position is rounded | ||
| 595 | |||
| 596 | // we scrolled less than 10 pixels | ||
| 597 | if ( !this.moved ) { | ||
| 598 | if ( this.options.tap ) { | ||
| 599 | utils.tap(e, this.options.tap); | ||
| 600 | } | ||
| 601 | |||
| 602 | if ( this.options.click ) { | ||
| 603 | utils.click(e); | ||
| 604 | } | ||
| 605 | |||
| 606 | this._execEvent('scrollCancel'); | ||
| 607 | return; | ||
| 608 | } | ||
| 609 | |||
| 610 | if ( this._events.flick && duration < 200 && distanceX < 100 && distanceY < 100 ) { | ||
| 611 | this._execEvent('flick'); | ||
| 612 | return; | ||
| 613 | } | ||
| 614 | |||
| 615 | // start momentum animation if needed | ||
| 616 | if ( this.options.momentum && duration < 300 ) { | ||
| 617 | momentumX = this.hasHorizontalScroll ? utils.momentum(this.x, this.startX, duration, this.maxScrollX, this.options.bounce ? this.wrapperWidth : 0, this.options.deceleration) : { destination: newX, duration: 0 }; | ||
| 618 | momentumY = this.hasVerticalScroll ? utils.momentum(this.y, this.startY, duration, this.maxScrollY, this.options.bounce ? this.wrapperHeight : 0, this.options.deceleration) : { destination: newY, duration: 0 }; | ||
| 619 | newX = momentumX.destination; | ||
| 620 | newY = momentumY.destination; | ||
| 621 | time = Math.max(momentumX.duration, momentumY.duration); | ||
| 622 | this.isInTransition = 1; | ||
| 623 | } | ||
| 624 | |||
| 625 | |||
| 626 | if ( this.options.snap ) { | ||
| 627 | var snap = this._nearestSnap(newX, newY); | ||
| 628 | this.currentPage = snap; | ||
| 629 | time = this.options.snapSpeed || Math.max( | ||
| 630 | Math.max( | ||
| 631 | Math.min(Math.abs(newX - snap.x), 1000), | ||
| 632 | Math.min(Math.abs(newY - snap.y), 1000) | ||
| 633 | ), 300); | ||
| 634 | newX = snap.x; | ||
| 635 | newY = snap.y; | ||
| 636 | |||
| 637 | this.directionX = 0; | ||
| 638 | this.directionY = 0; | ||
| 639 | easing = this.options.bounceEasing; | ||
| 640 | } | ||
| 641 | |||
| 642 | // INSERT POINT: _end | ||
| 643 | |||
| 644 | if ( newX != this.x || newY != this.y ) { | ||
| 645 | // change easing function when scroller goes out of the boundaries | ||
| 646 | if ( newX > 0 || newX < this.maxScrollX || newY > 0 || newY < this.maxScrollY ) { | ||
| 647 | easing = utils.ease.quadratic; | ||
| 648 | } | ||
| 649 | |||
| 650 | this.scrollTo(newX, newY, time, easing); | ||
| 651 | return; | ||
| 652 | } | ||
| 653 | |||
| 654 | this._execEvent('scrollEnd'); | ||
| 655 | }, | ||
| 656 | |||
| 657 | _resize: function () { | ||
| 658 | var that = this; | ||
| 659 | |||
| 660 | clearTimeout(this.resizeTimeout); | ||
| 661 | |||
| 662 | this.resizeTimeout = setTimeout(function () { | ||
| 663 | that.refresh(); | ||
| 664 | }, this.options.resizePolling); | ||
| 665 | }, | ||
| 666 | |||
| 667 | resetPosition: function (time) { | ||
| 668 | var x = this.x, | ||
| 669 | y = this.y; | ||
| 670 | |||
| 671 | time = time || 0; | ||
| 672 | |||
| 673 | if ( !this.hasHorizontalScroll || this.x > 0 ) { | ||
| 674 | x = 0; | ||
| 675 | } else if ( this.x < this.maxScrollX ) { | ||
| 676 | x = this.maxScrollX; | ||
| 677 | } | ||
| 678 | |||
| 679 | if ( !this.hasVerticalScroll || this.y > 0 ) { | ||
| 680 | y = 0; | ||
| 681 | } else if ( this.y < this.maxScrollY ) { | ||
| 682 | y = this.maxScrollY; | ||
| 683 | } | ||
| 684 | |||
| 685 | if ( x == this.x && y == this.y ) { | ||
| 686 | return false; | ||
| 687 | } | ||
| 688 | |||
| 689 | this.scrollTo(x, y, time, this.options.bounceEasing); | ||
| 690 | |||
| 691 | return true; | ||
| 692 | }, | ||
| 693 | |||
| 694 | disable: function () { | ||
| 695 | this.enabled = false; | ||
| 696 | }, | ||
| 697 | |||
| 698 | enable: function () { | ||
| 699 | this.enabled = true; | ||
| 700 | }, | ||
| 701 | |||
| 702 | refresh: function () { | ||
| 703 | var rf = this.wrapper.offsetHeight; // Force reflow | ||
| 704 | |||
| 705 | this.wrapperWidth = this.wrapper.clientWidth; | ||
| 706 | this.wrapperHeight = this.wrapper.clientHeight; | ||
| 707 | |||
| 708 | /* REPLACE START: refresh */ | ||
| 709 | |||
| 710 | this.scrollerWidth = this.scroller.offsetWidth; | ||
| 711 | this.scrollerHeight = this.scroller.offsetHeight; | ||
| 712 | |||
| 713 | this.maxScrollX = this.wrapperWidth - this.scrollerWidth; | ||
| 714 | this.maxScrollY = this.wrapperHeight - this.scrollerHeight; | ||
| 715 | |||
| 716 | /* REPLACE END: refresh */ | ||
| 717 | |||
| 718 | this.hasHorizontalScroll = this.options.scrollX && this.maxScrollX < 0; | ||
| 719 | this.hasVerticalScroll = this.options.scrollY && this.maxScrollY < 0; | ||
| 720 | |||
| 721 | if ( !this.hasHorizontalScroll ) { | ||
| 722 | this.maxScrollX = 0; | ||
| 723 | this.scrollerWidth = this.wrapperWidth; | ||
| 724 | } | ||
| 725 | |||
| 726 | if ( !this.hasVerticalScroll ) { | ||
| 727 | this.maxScrollY = 0; | ||
| 728 | this.scrollerHeight = this.wrapperHeight; | ||
| 729 | } | ||
| 730 | |||
| 731 | this.endTime = 0; | ||
| 732 | this.directionX = 0; | ||
| 733 | this.directionY = 0; | ||
| 734 | |||
| 735 | this.wrapperOffset = utils.offset(this.wrapper); | ||
| 736 | |||
| 737 | this._execEvent('refresh'); | ||
| 738 | |||
| 739 | this.resetPosition(); | ||
| 740 | |||
| 741 | // INSERT POINT: _refresh | ||
| 742 | |||
| 743 | }, | ||
| 744 | |||
| 745 | on: function (type, fn) { | ||
| 746 | if ( !this._events[type] ) { | ||
| 747 | this._events[type] = []; | ||
| 748 | } | ||
| 749 | |||
| 750 | this._events[type].push(fn); | ||
| 751 | }, | ||
| 752 | |||
| 753 | off: function (type, fn) { | ||
| 754 | if ( !this._events[type] ) { | ||
| 755 | return; | ||
| 756 | } | ||
| 757 | |||
| 758 | var index = this._events[type].indexOf(fn); | ||
| 759 | |||
| 760 | if ( index > -1 ) { | ||
| 761 | this._events[type].splice(index, 1); | ||
| 762 | } | ||
| 763 | }, | ||
| 764 | |||
| 765 | _execEvent: function (type) { | ||
| 766 | if ( !this._events[type] ) { | ||
| 767 | return; | ||
| 768 | } | ||
| 769 | |||
| 770 | var i = 0, | ||
| 771 | l = this._events[type].length; | ||
| 772 | |||
| 773 | if ( !l ) { | ||
| 774 | return; | ||
| 775 | } | ||
| 776 | |||
| 777 | for ( ; i < l; i++ ) { | ||
| 778 | this._events[type][i].apply(this, [].slice.call(arguments, 1)); | ||
| 779 | } | ||
| 780 | }, | ||
| 781 | |||
| 782 | scrollBy: function (x, y, time, easing) { | ||
| 783 | x = this.x + x; | ||
| 784 | y = this.y + y; | ||
| 785 | time = time || 0; | ||
| 786 | |||
| 787 | this.scrollTo(x, y, time, easing); | ||
| 788 | }, | ||
| 789 | |||
| 790 | scrollTo: function (x, y, time, easing) { | ||
| 791 | easing = easing || utils.ease.circular; | ||
| 792 | |||
| 793 | this.isInTransition = this.options.useTransition && time > 0; | ||
| 794 | var transitionType = this.options.useTransition && easing.style; | ||
| 795 | if ( !time || transitionType ) { | ||
| 796 | if(transitionType) { | ||
| 797 | this._transitionTimingFunction(easing.style); | ||
| 798 | this._transitionTime(time); | ||
| 799 | } | ||
| 800 | this._translate(x, y); | ||
| 801 | } else { | ||
| 802 | this._animate(x, y, time, easing.fn); | ||
| 803 | } | ||
| 804 | }, | ||
| 805 | |||
| 806 | scrollToElement: function (el, time, offsetX, offsetY, easing) { | ||
| 807 | el = el.nodeType ? el : this.scroller.querySelector(el); | ||
| 808 | |||
| 809 | if ( !el ) { | ||
| 810 | return; | ||
| 811 | } | ||
| 812 | |||
| 813 | var pos = utils.offset(el); | ||
| 814 | |||
| 815 | pos.left -= this.wrapperOffset.left; | ||
| 816 | pos.top -= this.wrapperOffset.top; | ||
| 817 | |||
| 818 | // if offsetX/Y are true we center the element to the screen | ||
| 819 | if ( offsetX === true ) { | ||
| 820 | offsetX = Math.round(el.offsetWidth / 2 - this.wrapper.offsetWidth / 2); | ||
| 821 | } | ||
| 822 | if ( offsetY === true ) { | ||
| 823 | offsetY = Math.round(el.offsetHeight / 2 - this.wrapper.offsetHeight / 2); | ||
| 824 | } | ||
| 825 | |||
| 826 | pos.left -= offsetX || 0; | ||
| 827 | pos.top -= offsetY || 0; | ||
| 828 | |||
| 829 | pos.left = pos.left > 0 ? 0 : pos.left < this.maxScrollX ? this.maxScrollX : pos.left; | ||
| 830 | pos.top = pos.top > 0 ? 0 : pos.top < this.maxScrollY ? this.maxScrollY : pos.top; | ||
| 831 | |||
| 832 | time = time === undefined || time === null || time === 'auto' ? Math.max(Math.abs(this.x-pos.left), Math.abs(this.y-pos.top)) : time; | ||
| 833 | |||
| 834 | this.scrollTo(pos.left, pos.top, time, easing); | ||
| 835 | }, | ||
| 836 | |||
| 837 | _transitionTime: function (time) { | ||
| 838 | time = time || 0; | ||
| 839 | |||
| 840 | var durationProp = utils.style.transitionDuration; | ||
| 841 | this.scrollerStyle[durationProp] = time + 'ms'; | ||
| 842 | |||
| 843 | if ( !time && utils.isBadAndroid ) { | ||
| 844 | this.scrollerStyle[durationProp] = '0.0001ms'; | ||
| 845 | // remove 0.0001ms | ||
| 846 | var self = this; | ||
| 847 | rAF(function() { | ||
| 848 | if(self.scrollerStyle[durationProp] === '0.0001ms') { | ||
| 849 | self.scrollerStyle[durationProp] = '0s'; | ||
| 850 | } | ||
| 851 | }); | ||
| 852 | } | ||
| 853 | |||
| 854 | |||
| 855 | if ( this.indicators ) { | ||
| 856 | for ( var i = this.indicators.length; i--; ) { | ||
| 857 | this.indicators[i].transitionTime(time); | ||
| 858 | } | ||
| 859 | } | ||
| 860 | |||
| 861 | |||
| 862 | // INSERT POINT: _transitionTime | ||
| 863 | |||
| 864 | }, | ||
| 865 | |||
| 866 | _transitionTimingFunction: function (easing) { | ||
| 867 | this.scrollerStyle[utils.style.transitionTimingFunction] = easing; | ||
| 868 | |||
| 869 | |||
| 870 | if ( this.indicators ) { | ||
| 871 | for ( var i = this.indicators.length; i--; ) { | ||
| 872 | this.indicators[i].transitionTimingFunction(easing); | ||
| 873 | } | ||
| 874 | } | ||
| 875 | |||
| 876 | |||
| 877 | // INSERT POINT: _transitionTimingFunction | ||
| 878 | |||
| 879 | }, | ||
| 880 | |||
| 881 | _translate: function (x, y) { | ||
| 882 | if ( this.options.useTransform ) { | ||
| 883 | |||
| 884 | /* REPLACE START: _translate */ | ||
| 885 | |||
| 886 | this.scrollerStyle[utils.style.transform] = 'translate(' + x + 'px,' + y + 'px)' + this.translateZ; | ||
| 887 | |||
| 888 | /* REPLACE END: _translate */ | ||
| 889 | |||
| 890 | } else { | ||
| 891 | x = Math.round(x); | ||
| 892 | y = Math.round(y); | ||
| 893 | this.scrollerStyle.left = x + 'px'; | ||
| 894 | this.scrollerStyle.top = y + 'px'; | ||
| 895 | } | ||
| 896 | |||
| 897 | this.x = x; | ||
| 898 | this.y = y; | ||
| 899 | |||
| 900 | |||
| 901 | if ( this.indicators ) { | ||
| 902 | for ( var i = this.indicators.length; i--; ) { | ||
| 903 | this.indicators[i].updatePosition(); | ||
| 904 | } | ||
| 905 | } | ||
| 906 | |||
| 907 | |||
| 908 | // INSERT POINT: _translate | ||
| 909 | |||
| 910 | }, | ||
| 911 | |||
| 912 | _initEvents: function (remove) { | ||
| 913 | var eventType = remove ? utils.removeEvent : utils.addEvent, | ||
| 914 | target = this.options.bindToWrapper ? this.wrapper : window; | ||
| 915 | |||
| 916 | eventType(window, 'orientationchange', this); | ||
| 917 | eventType(window, 'resize', this); | ||
| 918 | |||
| 919 | if ( this.options.click ) { | ||
| 920 | eventType(this.wrapper, 'click', this, true); | ||
| 921 | } | ||
| 922 | |||
| 923 | if ( !this.options.disableMouse ) { | ||
| 924 | eventType(this.wrapper, 'mousedown', this); | ||
| 925 | eventType(target, 'mousemove', this); | ||
| 926 | eventType(target, 'mousecancel', this); | ||
| 927 | eventType(target, 'mouseup', this); | ||
| 928 | } | ||
| 929 | |||
| 930 | if ( utils.hasPointer && !this.options.disablePointer ) { | ||
| 931 | eventType(this.wrapper, utils.prefixPointerEvent('pointerdown'), this); | ||
| 932 | eventType(target, utils.prefixPointerEvent('pointermove'), this); | ||
| 933 | eventType(target, utils.prefixPointerEvent('pointercancel'), this); | ||
| 934 | eventType(target, utils.prefixPointerEvent('pointerup'), this); | ||
| 935 | } | ||
| 936 | |||
| 937 | if ( utils.hasTouch && !this.options.disableTouch ) { | ||
| 938 | eventType(this.wrapper, 'touchstart', this); | ||
| 939 | eventType(target, 'touchmove', this); | ||
| 940 | eventType(target, 'touchcancel', this); | ||
| 941 | eventType(target, 'touchend', this); | ||
| 942 | } | ||
| 943 | |||
| 944 | eventType(this.scroller, 'transitionend', this); | ||
| 945 | eventType(this.scroller, 'webkitTransitionEnd', this); | ||
| 946 | eventType(this.scroller, 'oTransitionEnd', this); | ||
| 947 | eventType(this.scroller, 'MSTransitionEnd', this); | ||
| 948 | }, | ||
| 949 | |||
| 950 | getComputedPosition: function () { | ||
| 951 | var matrix = window.getComputedStyle(this.scroller, null), | ||
| 952 | x, y; | ||
| 953 | |||
| 954 | if ( this.options.useTransform ) { | ||
| 955 | matrix = matrix[utils.style.transform].split(')')[0].split(', '); | ||
| 956 | x = +(matrix[12] || matrix[4]); | ||
| 957 | y = +(matrix[13] || matrix[5]); | ||
| 958 | } else { | ||
| 959 | x = +matrix.left.replace(/[^-\d.]/g, ''); | ||
| 960 | y = +matrix.top.replace(/[^-\d.]/g, ''); | ||
| 961 | } | ||
| 962 | |||
| 963 | return { x: x, y: y }; | ||
| 964 | }, | ||
| 965 | _initIndicators: function () { | ||
| 966 | var interactive = this.options.interactiveScrollbars, | ||
| 967 | customStyle = typeof this.options.scrollbars != 'string', | ||
| 968 | indicators = [], | ||
| 969 | indicator; | ||
| 970 | |||
| 971 | var that = this; | ||
| 972 | |||
| 973 | this.indicators = []; | ||
| 974 | |||
| 975 | if ( this.options.scrollbars ) { | ||
| 976 | // Vertical scrollbar | ||
| 977 | if ( this.options.scrollY ) { | ||
| 978 | indicator = { | ||
| 979 | el: createDefaultScrollbar('v', interactive, this.options.scrollbars), | ||
| 980 | interactive: interactive, | ||
| 981 | defaultScrollbars: true, | ||
| 982 | customStyle: customStyle, | ||
| 983 | resize: this.options.resizeScrollbars, | ||
| 984 | shrink: this.options.shrinkScrollbars, | ||
| 985 | fade: this.options.fadeScrollbars, | ||
| 986 | listenX: false | ||
| 987 | }; | ||
| 988 | |||
| 989 | this.wrapper.appendChild(indicator.el); | ||
| 990 | indicators.push(indicator); | ||
| 991 | } | ||
| 992 | |||
| 993 | // Horizontal scrollbar | ||
| 994 | if ( this.options.scrollX ) { | ||
| 995 | indicator = { | ||
| 996 | el: createDefaultScrollbar('h', interactive, this.options.scrollbars), | ||
| 997 | interactive: interactive, | ||
| 998 | defaultScrollbars: true, | ||
| 999 | customStyle: customStyle, | ||
| 1000 | resize: this.options.resizeScrollbars, | ||
| 1001 | shrink: this.options.shrinkScrollbars, | ||
| 1002 | fade: this.options.fadeScrollbars, | ||
| 1003 | listenY: false | ||
| 1004 | }; | ||
| 1005 | |||
| 1006 | this.wrapper.appendChild(indicator.el); | ||
| 1007 | indicators.push(indicator); | ||
| 1008 | } | ||
| 1009 | } | ||
| 1010 | |||
| 1011 | if ( this.options.indicators ) { | ||
| 1012 | // TODO: check concat compatibility | ||
| 1013 | indicators = indicators.concat(this.options.indicators); | ||
| 1014 | } | ||
| 1015 | |||
| 1016 | for ( var i = indicators.length; i--; ) { | ||
| 1017 | this.indicators.push( new Indicator(this, indicators[i]) ); | ||
| 1018 | } | ||
| 1019 | |||
| 1020 | // TODO: check if we can use array.map (wide compatibility and performance issues) | ||
| 1021 | function _indicatorsMap (fn) { | ||
| 1022 | if (that.indicators) { | ||
| 1023 | for ( var i = that.indicators.length; i--; ) { | ||
| 1024 | fn.call(that.indicators[i]); | ||
| 1025 | } | ||
| 1026 | } | ||
| 1027 | } | ||
| 1028 | |||
| 1029 | if ( this.options.fadeScrollbars ) { | ||
| 1030 | this.on('scrollEnd', function () { | ||
| 1031 | _indicatorsMap(function () { | ||
| 1032 | this.fade(); | ||
| 1033 | }); | ||
| 1034 | }); | ||
| 1035 | |||
| 1036 | this.on('scrollCancel', function () { | ||
| 1037 | _indicatorsMap(function () { | ||
| 1038 | this.fade(); | ||
| 1039 | }); | ||
| 1040 | }); | ||
| 1041 | |||
| 1042 | this.on('scrollStart', function () { | ||
| 1043 | _indicatorsMap(function () { | ||
| 1044 | this.fade(1); | ||
| 1045 | }); | ||
| 1046 | }); | ||
| 1047 | |||
| 1048 | this.on('beforeScrollStart', function () { | ||
| 1049 | _indicatorsMap(function () { | ||
| 1050 | this.fade(1, true); | ||
| 1051 | }); | ||
| 1052 | }); | ||
| 1053 | } | ||
| 1054 | |||
| 1055 | |||
| 1056 | this.on('refresh', function () { | ||
| 1057 | _indicatorsMap(function () { | ||
| 1058 | this.refresh(); | ||
| 1059 | }); | ||
| 1060 | }); | ||
| 1061 | |||
| 1062 | this.on('destroy', function () { | ||
| 1063 | _indicatorsMap(function () { | ||
| 1064 | this.destroy(); | ||
| 1065 | }); | ||
| 1066 | |||
| 1067 | delete this.indicators; | ||
| 1068 | }); | ||
| 1069 | }, | ||
| 1070 | |||
| 1071 | _initWheel: function () { | ||
| 1072 | utils.addEvent(this.wrapper, 'wheel', this); | ||
| 1073 | utils.addEvent(this.wrapper, 'mousewheel', this); | ||
| 1074 | utils.addEvent(this.wrapper, 'DOMMouseScroll', this); | ||
| 1075 | |||
| 1076 | this.on('destroy', function () { | ||
| 1077 | clearTimeout(this.wheelTimeout); | ||
| 1078 | this.wheelTimeout = null; | ||
| 1079 | utils.removeEvent(this.wrapper, 'wheel', this); | ||
| 1080 | utils.removeEvent(this.wrapper, 'mousewheel', this); | ||
| 1081 | utils.removeEvent(this.wrapper, 'DOMMouseScroll', this); | ||
| 1082 | }); | ||
| 1083 | }, | ||
| 1084 | |||
| 1085 | _wheel: function (e) { | ||
| 1086 | if ( !this.enabled ) { | ||
| 1087 | return; | ||
| 1088 | } | ||
| 1089 | |||
| 1090 | e.preventDefault(); | ||
| 1091 | |||
| 1092 | var wheelDeltaX, wheelDeltaY, | ||
| 1093 | newX, newY, | ||
| 1094 | that = this; | ||
| 1095 | |||
| 1096 | if ( this.wheelTimeout === undefined ) { | ||
| 1097 | that._execEvent('scrollStart'); | ||
| 1098 | } | ||
| 1099 | |||
| 1100 | // Execute the scrollEnd event after 400ms the wheel stopped scrolling | ||
| 1101 | clearTimeout(this.wheelTimeout); | ||
| 1102 | this.wheelTimeout = setTimeout(function () { | ||
| 1103 | if(!that.options.snap) { | ||
| 1104 | that._execEvent('scrollEnd'); | ||
| 1105 | } | ||
| 1106 | that.wheelTimeout = undefined; | ||
| 1107 | }, 400); | ||
| 1108 | |||
| 1109 | if ( 'deltaX' in e ) { | ||
| 1110 | if (e.deltaMode === 1) { | ||
| 1111 | wheelDeltaX = -e.deltaX * this.options.mouseWheelSpeed; | ||
| 1112 | wheelDeltaY = -e.deltaY * this.options.mouseWheelSpeed; | ||
| 1113 | } else { | ||
| 1114 | wheelDeltaX = -e.deltaX; | ||
| 1115 | wheelDeltaY = -e.deltaY; | ||
| 1116 | } | ||
| 1117 | } else if ( 'wheelDeltaX' in e ) { | ||
| 1118 | wheelDeltaX = e.wheelDeltaX / 120 * this.options.mouseWheelSpeed; | ||
| 1119 | wheelDeltaY = e.wheelDeltaY / 120 * this.options.mouseWheelSpeed; | ||
| 1120 | } else if ( 'wheelDelta' in e ) { | ||
| 1121 | wheelDeltaX = wheelDeltaY = e.wheelDelta / 120 * this.options.mouseWheelSpeed; | ||
| 1122 | } else if ( 'detail' in e ) { | ||
| 1123 | wheelDeltaX = wheelDeltaY = -e.detail / 3 * this.options.mouseWheelSpeed; | ||
| 1124 | } else { | ||
| 1125 | return; | ||
| 1126 | } | ||
| 1127 | |||
| 1128 | wheelDeltaX *= this.options.invertWheelDirection; | ||
| 1129 | wheelDeltaY *= this.options.invertWheelDirection; | ||
| 1130 | |||
| 1131 | if ( !this.hasVerticalScroll ) { | ||
| 1132 | wheelDeltaX = wheelDeltaY; | ||
| 1133 | wheelDeltaY = 0; | ||
| 1134 | } | ||
| 1135 | |||
| 1136 | if ( this.options.snap ) { | ||
| 1137 | newX = this.currentPage.pageX; | ||
| 1138 | newY = this.currentPage.pageY; | ||
| 1139 | |||
| 1140 | if ( wheelDeltaX > 0 ) { | ||
| 1141 | newX--; | ||
| 1142 | } else if ( wheelDeltaX < 0 ) { | ||
| 1143 | newX++; | ||
| 1144 | } | ||
| 1145 | |||
| 1146 | if ( wheelDeltaY > 0 ) { | ||
| 1147 | newY--; | ||
| 1148 | } else if ( wheelDeltaY < 0 ) { | ||
| 1149 | newY++; | ||
| 1150 | } | ||
| 1151 | |||
| 1152 | this.goToPage(newX, newY); | ||
| 1153 | |||
| 1154 | return; | ||
| 1155 | } | ||
| 1156 | |||
| 1157 | newX = this.x + Math.round(this.hasHorizontalScroll ? wheelDeltaX : 0); | ||
| 1158 | newY = this.y + Math.round(this.hasVerticalScroll ? wheelDeltaY : 0); | ||
| 1159 | |||
| 1160 | this.directionX = wheelDeltaX > 0 ? -1 : wheelDeltaX < 0 ? 1 : 0; | ||
| 1161 | this.directionY = wheelDeltaY > 0 ? -1 : wheelDeltaY < 0 ? 1 : 0; | ||
| 1162 | |||
| 1163 | if ( newX > 0 ) { | ||
| 1164 | newX = 0; | ||
| 1165 | } else if ( newX < this.maxScrollX ) { | ||
| 1166 | newX = this.maxScrollX; | ||
| 1167 | } | ||
| 1168 | |||
| 1169 | if ( newY > 0 ) { | ||
| 1170 | newY = 0; | ||
| 1171 | } else if ( newY < this.maxScrollY ) { | ||
| 1172 | newY = this.maxScrollY; | ||
| 1173 | } | ||
| 1174 | |||
| 1175 | this.scrollTo(newX, newY, 0); | ||
| 1176 | |||
| 1177 | // INSERT POINT: _wheel | ||
| 1178 | }, | ||
| 1179 | |||
| 1180 | _initSnap: function () { | ||
| 1181 | this.currentPage = {}; | ||
| 1182 | |||
| 1183 | if ( typeof this.options.snap == 'string' ) { | ||
| 1184 | this.options.snap = this.scroller.querySelectorAll(this.options.snap); | ||
| 1185 | } | ||
| 1186 | |||
| 1187 | this.on('refresh', function () { | ||
| 1188 | var i = 0, l, | ||
| 1189 | m = 0, n, | ||
| 1190 | cx, cy, | ||
| 1191 | x = 0, y, | ||
| 1192 | stepX = this.options.snapStepX || this.wrapperWidth, | ||
| 1193 | stepY = this.options.snapStepY || this.wrapperHeight, | ||
| 1194 | el; | ||
| 1195 | |||
| 1196 | this.pages = []; | ||
| 1197 | |||
| 1198 | if ( !this.wrapperWidth || !this.wrapperHeight || !this.scrollerWidth || !this.scrollerHeight ) { | ||
| 1199 | return; | ||
| 1200 | } | ||
| 1201 | |||
| 1202 | if ( this.options.snap === true ) { | ||
| 1203 | cx = Math.round( stepX / 2 ); | ||
| 1204 | cy = Math.round( stepY / 2 ); | ||
| 1205 | |||
| 1206 | while ( x > -this.scrollerWidth ) { | ||
| 1207 | this.pages[i] = []; | ||
| 1208 | l = 0; | ||
| 1209 | y = 0; | ||
| 1210 | |||
| 1211 | while ( y > -this.scrollerHeight ) { | ||
| 1212 | this.pages[i][l] = { | ||
| 1213 | x: Math.max(x, this.maxScrollX), | ||
| 1214 | y: Math.max(y, this.maxScrollY), | ||
| 1215 | width: stepX, | ||
| 1216 | height: stepY, | ||
| 1217 | cx: x - cx, | ||
| 1218 | cy: y - cy | ||
| 1219 | }; | ||
| 1220 | |||
| 1221 | y -= stepY; | ||
| 1222 | l++; | ||
| 1223 | } | ||
| 1224 | |||
| 1225 | x -= stepX; | ||
| 1226 | i++; | ||
| 1227 | } | ||
| 1228 | } else { | ||
| 1229 | el = this.options.snap; | ||
| 1230 | l = el.length; | ||
| 1231 | n = -1; | ||
| 1232 | |||
| 1233 | for ( ; i < l; i++ ) { | ||
| 1234 | if ( i === 0 || el[i].offsetLeft <= el[i-1].offsetLeft ) { | ||
| 1235 | m = 0; | ||
| 1236 | n++; | ||
| 1237 | } | ||
| 1238 | |||
| 1239 | if ( !this.pages[m] ) { | ||
| 1240 | this.pages[m] = []; | ||
| 1241 | } | ||
| 1242 | |||
| 1243 | x = Math.max(-el[i].offsetLeft, this.maxScrollX); | ||
| 1244 | y = Math.max(-el[i].offsetTop, this.maxScrollY); | ||
| 1245 | cx = x - Math.round(el[i].offsetWidth / 2); | ||
| 1246 | cy = y - Math.round(el[i].offsetHeight / 2); | ||
| 1247 | |||
| 1248 | this.pages[m][n] = { | ||
| 1249 | x: x, | ||
| 1250 | y: y, | ||
| 1251 | width: el[i].offsetWidth, | ||
| 1252 | height: el[i].offsetHeight, | ||
| 1253 | cx: cx, | ||
| 1254 | cy: cy | ||
| 1255 | }; | ||
| 1256 | |||
| 1257 | if ( x > this.maxScrollX ) { | ||
| 1258 | m++; | ||
| 1259 | } | ||
| 1260 | } | ||
| 1261 | } | ||
| 1262 | |||
| 1263 | this.goToPage(this.currentPage.pageX || 0, this.currentPage.pageY || 0, 0); | ||
| 1264 | |||
| 1265 | // Update snap threshold if needed | ||
| 1266 | if ( this.options.snapThreshold % 1 === 0 ) { | ||
| 1267 | this.snapThresholdX = this.options.snapThreshold; | ||
| 1268 | this.snapThresholdY = this.options.snapThreshold; | ||
| 1269 | } else { | ||
| 1270 | this.snapThresholdX = Math.round(this.pages[this.currentPage.pageX][this.currentPage.pageY].width * this.options.snapThreshold); | ||
| 1271 | this.snapThresholdY = Math.round(this.pages[this.currentPage.pageX][this.currentPage.pageY].height * this.options.snapThreshold); | ||
| 1272 | } | ||
| 1273 | }); | ||
| 1274 | |||
| 1275 | this.on('flick', function () { | ||
| 1276 | var time = this.options.snapSpeed || Math.max( | ||
| 1277 | Math.max( | ||
| 1278 | Math.min(Math.abs(this.x - this.startX), 1000), | ||
| 1279 | Math.min(Math.abs(this.y - this.startY), 1000) | ||
| 1280 | ), 300); | ||
| 1281 | |||
| 1282 | this.goToPage( | ||
| 1283 | this.currentPage.pageX + this.directionX, | ||
| 1284 | this.currentPage.pageY + this.directionY, | ||
| 1285 | time | ||
| 1286 | ); | ||
| 1287 | }); | ||
| 1288 | }, | ||
| 1289 | |||
| 1290 | _nearestSnap: function (x, y) { | ||
| 1291 | if ( !this.pages.length ) { | ||
| 1292 | return { x: 0, y: 0, pageX: 0, pageY: 0 }; | ||
| 1293 | } | ||
| 1294 | |||
| 1295 | var i = 0, | ||
| 1296 | l = this.pages.length, | ||
| 1297 | m = 0; | ||
| 1298 | |||
| 1299 | // Check if we exceeded the snap threshold | ||
| 1300 | if ( Math.abs(x - this.absStartX) < this.snapThresholdX && | ||
| 1301 | Math.abs(y - this.absStartY) < this.snapThresholdY ) { | ||
| 1302 | return this.currentPage; | ||
| 1303 | } | ||
| 1304 | |||
| 1305 | if ( x > 0 ) { | ||
| 1306 | x = 0; | ||
| 1307 | } else if ( x < this.maxScrollX ) { | ||
| 1308 | x = this.maxScrollX; | ||
| 1309 | } | ||
| 1310 | |||
| 1311 | if ( y > 0 ) { | ||
| 1312 | y = 0; | ||
| 1313 | } else if ( y < this.maxScrollY ) { | ||
| 1314 | y = this.maxScrollY; | ||
| 1315 | } | ||
| 1316 | |||
| 1317 | for ( ; i < l; i++ ) { | ||
| 1318 | if ( x >= this.pages[i][0].cx ) { | ||
| 1319 | x = this.pages[i][0].x; | ||
| 1320 | break; | ||
| 1321 | } | ||
| 1322 | } | ||
| 1323 | |||
| 1324 | l = this.pages[i].length; | ||
| 1325 | |||
| 1326 | for ( ; m < l; m++ ) { | ||
| 1327 | if ( y >= this.pages[0][m].cy ) { | ||
| 1328 | y = this.pages[0][m].y; | ||
| 1329 | break; | ||
| 1330 | } | ||
| 1331 | } | ||
| 1332 | |||
| 1333 | if ( i == this.currentPage.pageX ) { | ||
| 1334 | i += this.directionX; | ||
| 1335 | |||
| 1336 | if ( i < 0 ) { | ||
| 1337 | i = 0; | ||
| 1338 | } else if ( i >= this.pages.length ) { | ||
| 1339 | i = this.pages.length - 1; | ||
| 1340 | } | ||
| 1341 | |||
| 1342 | x = this.pages[i][0].x; | ||
| 1343 | } | ||
| 1344 | |||
| 1345 | if ( m == this.currentPage.pageY ) { | ||
| 1346 | m += this.directionY; | ||
| 1347 | |||
| 1348 | if ( m < 0 ) { | ||
| 1349 | m = 0; | ||
| 1350 | } else if ( m >= this.pages[0].length ) { | ||
| 1351 | m = this.pages[0].length - 1; | ||
| 1352 | } | ||
| 1353 | |||
| 1354 | y = this.pages[0][m].y; | ||
| 1355 | } | ||
| 1356 | |||
| 1357 | return { | ||
| 1358 | x: x, | ||
| 1359 | y: y, | ||
| 1360 | pageX: i, | ||
| 1361 | pageY: m | ||
| 1362 | }; | ||
| 1363 | }, | ||
| 1364 | |||
| 1365 | goToPage: function (x, y, time, easing) { | ||
| 1366 | easing = easing || this.options.bounceEasing; | ||
| 1367 | |||
| 1368 | if ( x >= this.pages.length ) { | ||
| 1369 | x = this.pages.length - 1; | ||
| 1370 | } else if ( x < 0 ) { | ||
| 1371 | x = 0; | ||
| 1372 | } | ||
| 1373 | |||
| 1374 | if ( y >= this.pages[x].length ) { | ||
| 1375 | y = this.pages[x].length - 1; | ||
| 1376 | } else if ( y < 0 ) { | ||
| 1377 | y = 0; | ||
| 1378 | } | ||
| 1379 | |||
| 1380 | var posX = this.pages[x][y].x, | ||
| 1381 | posY = this.pages[x][y].y; | ||
| 1382 | |||
| 1383 | time = time === undefined ? this.options.snapSpeed || Math.max( | ||
| 1384 | Math.max( | ||
| 1385 | Math.min(Math.abs(posX - this.x), 1000), | ||
| 1386 | Math.min(Math.abs(posY - this.y), 1000) | ||
| 1387 | ), 300) : time; | ||
| 1388 | |||
| 1389 | this.currentPage = { | ||
| 1390 | x: posX, | ||
| 1391 | y: posY, | ||
| 1392 | pageX: x, | ||
| 1393 | pageY: y | ||
| 1394 | }; | ||
| 1395 | |||
| 1396 | this.scrollTo(posX, posY, time, easing); | ||
| 1397 | }, | ||
| 1398 | |||
| 1399 | next: function (time, easing) { | ||
| 1400 | var x = this.currentPage.pageX, | ||
| 1401 | y = this.currentPage.pageY; | ||
| 1402 | |||
| 1403 | x++; | ||
| 1404 | |||
| 1405 | if ( x >= this.pages.length && this.hasVerticalScroll ) { | ||
| 1406 | x = 0; | ||
| 1407 | y++; | ||
| 1408 | } | ||
| 1409 | |||
| 1410 | this.goToPage(x, y, time, easing); | ||
| 1411 | }, | ||
| 1412 | |||
| 1413 | prev: function (time, easing) { | ||
| 1414 | var x = this.currentPage.pageX, | ||
| 1415 | y = this.currentPage.pageY; | ||
| 1416 | |||
| 1417 | x--; | ||
| 1418 | |||
| 1419 | if ( x < 0 && this.hasVerticalScroll ) { | ||
| 1420 | x = 0; | ||
| 1421 | y--; | ||
| 1422 | } | ||
| 1423 | |||
| 1424 | this.goToPage(x, y, time, easing); | ||
| 1425 | }, | ||
| 1426 | |||
| 1427 | _initKeys: function (e) { | ||
| 1428 | // default key bindings | ||
| 1429 | var keys = { | ||
| 1430 | pageUp: 33, | ||
| 1431 | pageDown: 34, | ||
| 1432 | end: 35, | ||
| 1433 | home: 36, | ||
| 1434 | left: 37, | ||
| 1435 | up: 38, | ||
| 1436 | right: 39, | ||
| 1437 | down: 40 | ||
| 1438 | }; | ||
| 1439 | var i; | ||
| 1440 | |||
| 1441 | // if you give me characters I give you keycode | ||
| 1442 | if ( typeof this.options.keyBindings == 'object' ) { | ||
| 1443 | for ( i in this.options.keyBindings ) { | ||
| 1444 | if ( typeof this.options.keyBindings[i] == 'string' ) { | ||
| 1445 | this.options.keyBindings[i] = this.options.keyBindings[i].toUpperCase().charCodeAt(0); | ||
| 1446 | } | ||
| 1447 | } | ||
| 1448 | } else { | ||
| 1449 | this.options.keyBindings = {}; | ||
| 1450 | } | ||
| 1451 | |||
| 1452 | for ( i in keys ) { | ||
| 1453 | this.options.keyBindings[i] = this.options.keyBindings[i] || keys[i]; | ||
| 1454 | } | ||
| 1455 | |||
| 1456 | utils.addEvent(window, 'keydown', this); | ||
| 1457 | |||
| 1458 | this.on('destroy', function () { | ||
| 1459 | utils.removeEvent(window, 'keydown', this); | ||
| 1460 | }); | ||
| 1461 | }, | ||
| 1462 | |||
| 1463 | _key: function (e) { | ||
| 1464 | if ( !this.enabled ) { | ||
| 1465 | return; | ||
| 1466 | } | ||
| 1467 | |||
| 1468 | var snap = this.options.snap, // we are using this alot, better to cache it | ||
| 1469 | newX = snap ? this.currentPage.pageX : this.x, | ||
| 1470 | newY = snap ? this.currentPage.pageY : this.y, | ||
| 1471 | now = utils.getTime(), | ||
| 1472 | prevTime = this.keyTime || 0, | ||
| 1473 | acceleration = 0.250, | ||
| 1474 | pos; | ||
| 1475 | |||
| 1476 | if ( this.options.useTransition && this.isInTransition ) { | ||
| 1477 | pos = this.getComputedPosition(); | ||
| 1478 | |||
| 1479 | this._translate(Math.round(pos.x), Math.round(pos.y)); | ||
| 1480 | this.isInTransition = false; | ||
| 1481 | } | ||
| 1482 | |||
| 1483 | this.keyAcceleration = now - prevTime < 200 ? Math.min(this.keyAcceleration + acceleration, 50) : 0; | ||
| 1484 | |||
| 1485 | switch ( e.keyCode ) { | ||
| 1486 | case this.options.keyBindings.pageUp: | ||
| 1487 | if ( this.hasHorizontalScroll && !this.hasVerticalScroll ) { | ||
| 1488 | newX += snap ? 1 : this.wrapperWidth; | ||
| 1489 | } else { | ||
| 1490 | newY += snap ? 1 : this.wrapperHeight; | ||
| 1491 | } | ||
| 1492 | break; | ||
| 1493 | case this.options.keyBindings.pageDown: | ||
| 1494 | if ( this.hasHorizontalScroll && !this.hasVerticalScroll ) { | ||
| 1495 | newX -= snap ? 1 : this.wrapperWidth; | ||
| 1496 | } else { | ||
| 1497 | newY -= snap ? 1 : this.wrapperHeight; | ||
| 1498 | } | ||
| 1499 | break; | ||
| 1500 | case this.options.keyBindings.end: | ||
| 1501 | newX = snap ? this.pages.length-1 : this.maxScrollX; | ||
| 1502 | newY = snap ? this.pages[0].length-1 : this.maxScrollY; | ||
| 1503 | break; | ||
| 1504 | case this.options.keyBindings.home: | ||
| 1505 | newX = 0; | ||
| 1506 | newY = 0; | ||
| 1507 | break; | ||
| 1508 | case this.options.keyBindings.left: | ||
| 1509 | newX += snap ? -1 : 5 + this.keyAcceleration>>0; | ||
| 1510 | break; | ||
| 1511 | case this.options.keyBindings.up: | ||
| 1512 | newY += snap ? 1 : 5 + this.keyAcceleration>>0; | ||
| 1513 | break; | ||
| 1514 | case this.options.keyBindings.right: | ||
| 1515 | newX -= snap ? -1 : 5 + this.keyAcceleration>>0; | ||
| 1516 | break; | ||
| 1517 | case this.options.keyBindings.down: | ||
| 1518 | newY -= snap ? 1 : 5 + this.keyAcceleration>>0; | ||
| 1519 | break; | ||
| 1520 | default: | ||
| 1521 | return; | ||
| 1522 | } | ||
| 1523 | |||
| 1524 | if ( snap ) { | ||
| 1525 | this.goToPage(newX, newY); | ||
| 1526 | return; | ||
| 1527 | } | ||
| 1528 | |||
| 1529 | if ( newX > 0 ) { | ||
| 1530 | newX = 0; | ||
| 1531 | this.keyAcceleration = 0; | ||
| 1532 | } else if ( newX < this.maxScrollX ) { | ||
| 1533 | newX = this.maxScrollX; | ||
| 1534 | this.keyAcceleration = 0; | ||
| 1535 | } | ||
| 1536 | |||
| 1537 | if ( newY > 0 ) { | ||
| 1538 | newY = 0; | ||
| 1539 | this.keyAcceleration = 0; | ||
| 1540 | } else if ( newY < this.maxScrollY ) { | ||
| 1541 | newY = this.maxScrollY; | ||
| 1542 | this.keyAcceleration = 0; | ||
| 1543 | } | ||
| 1544 | |||
| 1545 | this.scrollTo(newX, newY, 0); | ||
| 1546 | |||
| 1547 | this.keyTime = now; | ||
| 1548 | }, | ||
| 1549 | |||
| 1550 | _animate: function (destX, destY, duration, easingFn) { | ||
| 1551 | var that = this, | ||
| 1552 | startX = this.x, | ||
| 1553 | startY = this.y, | ||
| 1554 | startTime = utils.getTime(), | ||
| 1555 | destTime = startTime + duration; | ||
| 1556 | |||
| 1557 | function step () { | ||
| 1558 | var now = utils.getTime(), | ||
| 1559 | newX, newY, | ||
| 1560 | easing; | ||
| 1561 | |||
| 1562 | if ( now >= destTime ) { | ||
| 1563 | that.isAnimating = false; | ||
| 1564 | that._translate(destX, destY); | ||
| 1565 | |||
| 1566 | if ( !that.resetPosition(that.options.bounceTime) ) { | ||
| 1567 | that._execEvent('scrollEnd'); | ||
| 1568 | } | ||
| 1569 | |||
| 1570 | return; | ||
| 1571 | } | ||
| 1572 | |||
| 1573 | now = ( now - startTime ) / duration; | ||
| 1574 | easing = easingFn(now); | ||
| 1575 | newX = ( destX - startX ) * easing + startX; | ||
| 1576 | newY = ( destY - startY ) * easing + startY; | ||
| 1577 | that._translate(newX, newY); | ||
| 1578 | |||
| 1579 | if ( that.isAnimating ) { | ||
| 1580 | rAF(step); | ||
| 1581 | } | ||
| 1582 | } | ||
| 1583 | |||
| 1584 | this.isAnimating = true; | ||
| 1585 | step(); | ||
| 1586 | }, | ||
| 1587 | handleEvent: function (e) { | ||
| 1588 | switch ( e.type ) { | ||
| 1589 | case 'touchstart': | ||
| 1590 | case 'pointerdown': | ||
| 1591 | case 'MSPointerDown': | ||
| 1592 | case 'mousedown': | ||
| 1593 | this._start(e); | ||
| 1594 | break; | ||
| 1595 | case 'touchmove': | ||
| 1596 | case 'pointermove': | ||
| 1597 | case 'MSPointerMove': | ||
| 1598 | case 'mousemove': | ||
| 1599 | this._move(e); | ||
| 1600 | break; | ||
| 1601 | case 'touchend': | ||
| 1602 | case 'pointerup': | ||
| 1603 | case 'MSPointerUp': | ||
| 1604 | case 'mouseup': | ||
| 1605 | case 'touchcancel': | ||
| 1606 | case 'pointercancel': | ||
| 1607 | case 'MSPointerCancel': | ||
| 1608 | case 'mousecancel': | ||
| 1609 | this._end(e); | ||
| 1610 | break; | ||
| 1611 | case 'orientationchange': | ||
| 1612 | case 'resize': | ||
| 1613 | this._resize(); | ||
| 1614 | break; | ||
| 1615 | case 'transitionend': | ||
| 1616 | case 'webkitTransitionEnd': | ||
| 1617 | case 'oTransitionEnd': | ||
| 1618 | case 'MSTransitionEnd': | ||
| 1619 | this._transitionEnd(e); | ||
| 1620 | break; | ||
| 1621 | case 'wheel': | ||
| 1622 | case 'DOMMouseScroll': | ||
| 1623 | case 'mousewheel': | ||
| 1624 | this._wheel(e); | ||
| 1625 | break; | ||
| 1626 | case 'keydown': | ||
| 1627 | this._key(e); | ||
| 1628 | break; | ||
| 1629 | case 'click': | ||
| 1630 | if ( this.enabled && !e._constructed ) { | ||
| 1631 | e.preventDefault(); | ||
| 1632 | e.stopPropagation(); | ||
| 1633 | } | ||
| 1634 | break; | ||
| 1635 | } | ||
| 1636 | } | ||
| 1637 | }; | ||
| 1638 | function createDefaultScrollbar (direction, interactive, type) { | ||
| 1639 | var scrollbar = document.createElement('div'), | ||
| 1640 | indicator = document.createElement('div'); | ||
| 1641 | |||
| 1642 | if ( type === true ) { | ||
| 1643 | scrollbar.style.cssText = 'position:absolute;z-index:9999'; | ||
| 1644 | indicator.style.cssText = '-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;background:rgba(0,0,0,0.5);border:1px solid rgba(255,255,255,0.9);border-radius:3px'; | ||
| 1645 | } | ||
| 1646 | |||
| 1647 | indicator.className = 'iScrollIndicator'; | ||
| 1648 | |||
| 1649 | if ( direction == 'h' ) { | ||
| 1650 | if ( type === true ) { | ||
| 1651 | scrollbar.style.cssText += ';height:7px;left:2px;right:2px;bottom:0'; | ||
| 1652 | indicator.style.height = '100%'; | ||
| 1653 | } | ||
| 1654 | scrollbar.className = 'iScrollHorizontalScrollbar'; | ||
| 1655 | } else { | ||
| 1656 | if ( type === true ) { | ||
| 1657 | scrollbar.style.cssText += ';width:7px;bottom:2px;top:2px;right:1px'; | ||
| 1658 | indicator.style.width = '100%'; | ||
| 1659 | } | ||
| 1660 | scrollbar.className = 'iScrollVerticalScrollbar'; | ||
| 1661 | } | ||
| 1662 | |||
| 1663 | scrollbar.style.cssText += ';overflow:hidden'; | ||
| 1664 | |||
| 1665 | if ( !interactive ) { | ||
| 1666 | scrollbar.style.pointerEvents = 'none'; | ||
| 1667 | } | ||
| 1668 | |||
| 1669 | scrollbar.appendChild(indicator); | ||
| 1670 | |||
| 1671 | return scrollbar; | ||
| 1672 | } | ||
| 1673 | |||
| 1674 | function Indicator (scroller, options) { | ||
| 1675 | this.wrapper = typeof options.el == 'string' ? document.querySelector(options.el) : options.el; | ||
| 1676 | this.wrapperStyle = this.wrapper.style; | ||
| 1677 | this.indicator = this.wrapper.children[0]; | ||
| 1678 | this.indicatorStyle = this.indicator.style; | ||
| 1679 | this.scroller = scroller; | ||
| 1680 | |||
| 1681 | this.options = { | ||
| 1682 | listenX: true, | ||
| 1683 | listenY: true, | ||
| 1684 | interactive: false, | ||
| 1685 | resize: true, | ||
| 1686 | defaultScrollbars: false, | ||
| 1687 | shrink: false, | ||
| 1688 | fade: false, | ||
| 1689 | speedRatioX: 0, | ||
| 1690 | speedRatioY: 0 | ||
| 1691 | }; | ||
| 1692 | |||
| 1693 | for ( var i in options ) { | ||
| 1694 | this.options[i] = options[i]; | ||
| 1695 | } | ||
| 1696 | |||
| 1697 | this.sizeRatioX = 1; | ||
| 1698 | this.sizeRatioY = 1; | ||
| 1699 | this.maxPosX = 0; | ||
| 1700 | this.maxPosY = 0; | ||
| 1701 | |||
| 1702 | if ( this.options.interactive ) { | ||
| 1703 | if ( !this.options.disableTouch ) { | ||
| 1704 | utils.addEvent(this.indicator, 'touchstart', this); | ||
| 1705 | utils.addEvent(window, 'touchend', this); | ||
| 1706 | } | ||
| 1707 | if ( !this.options.disablePointer ) { | ||
| 1708 | utils.addEvent(this.indicator, utils.prefixPointerEvent('pointerdown'), this); | ||
| 1709 | utils.addEvent(window, utils.prefixPointerEvent('pointerup'), this); | ||
| 1710 | } | ||
| 1711 | if ( !this.options.disableMouse ) { | ||
| 1712 | utils.addEvent(this.indicator, 'mousedown', this); | ||
| 1713 | utils.addEvent(window, 'mouseup', this); | ||
| 1714 | } | ||
| 1715 | } | ||
| 1716 | |||
| 1717 | if ( this.options.fade ) { | ||
| 1718 | this.wrapperStyle[utils.style.transform] = this.scroller.translateZ; | ||
| 1719 | var durationProp = utils.style.transitionDuration; | ||
| 1720 | this.wrapperStyle[durationProp] = utils.isBadAndroid ? '0.0001ms' : '0ms'; | ||
| 1721 | // remove 0.0001ms | ||
| 1722 | var self = this; | ||
| 1723 | if(utils.isBadAndroid) { | ||
| 1724 | rAF(function() { | ||
| 1725 | if(self.wrapperStyle[durationProp] === '0.0001ms') { | ||
| 1726 | self.wrapperStyle[durationProp] = '0s'; | ||
| 1727 | } | ||
| 1728 | }); | ||
| 1729 | } | ||
| 1730 | this.wrapperStyle.opacity = '0'; | ||
| 1731 | } | ||
| 1732 | } | ||
| 1733 | |||
| 1734 | Indicator.prototype = { | ||
| 1735 | handleEvent: function (e) { | ||
| 1736 | switch ( e.type ) { | ||
| 1737 | case 'touchstart': | ||
| 1738 | case 'pointerdown': | ||
| 1739 | case 'MSPointerDown': | ||
| 1740 | case 'mousedown': | ||
| 1741 | this._start(e); | ||
| 1742 | break; | ||
| 1743 | case 'touchmove': | ||
| 1744 | case 'pointermove': | ||
| 1745 | case 'MSPointerMove': | ||
| 1746 | case 'mousemove': | ||
| 1747 | this._move(e); | ||
| 1748 | break; | ||
| 1749 | case 'touchend': | ||
| 1750 | case 'pointerup': | ||
| 1751 | case 'MSPointerUp': | ||
| 1752 | case 'mouseup': | ||
| 1753 | case 'touchcancel': | ||
| 1754 | case 'pointercancel': | ||
| 1755 | case 'MSPointerCancel': | ||
| 1756 | case 'mousecancel': | ||
| 1757 | this._end(e); | ||
| 1758 | break; | ||
| 1759 | } | ||
| 1760 | }, | ||
| 1761 | |||
| 1762 | destroy: function () { | ||
| 1763 | if ( this.options.fadeScrollbars ) { | ||
| 1764 | clearTimeout(this.fadeTimeout); | ||
| 1765 | this.fadeTimeout = null; | ||
| 1766 | } | ||
| 1767 | if ( this.options.interactive ) { | ||
| 1768 | utils.removeEvent(this.indicator, 'touchstart', this); | ||
| 1769 | utils.removeEvent(this.indicator, utils.prefixPointerEvent('pointerdown'), this); | ||
| 1770 | utils.removeEvent(this.indicator, 'mousedown', this); | ||
| 1771 | |||
| 1772 | utils.removeEvent(window, 'touchmove', this); | ||
| 1773 | utils.removeEvent(window, utils.prefixPointerEvent('pointermove'), this); | ||
| 1774 | utils.removeEvent(window, 'mousemove', this); | ||
| 1775 | |||
| 1776 | utils.removeEvent(window, 'touchend', this); | ||
| 1777 | utils.removeEvent(window, utils.prefixPointerEvent('pointerup'), this); | ||
| 1778 | utils.removeEvent(window, 'mouseup', this); | ||
| 1779 | } | ||
| 1780 | |||
| 1781 | if ( this.options.defaultScrollbars ) { | ||
| 1782 | this.wrapper.parentNode.removeChild(this.wrapper); | ||
| 1783 | } | ||
| 1784 | }, | ||
| 1785 | |||
| 1786 | _start: function (e) { | ||
| 1787 | var point = e.touches ? e.touches[0] : e; | ||
| 1788 | |||
| 1789 | e.preventDefault(); | ||
| 1790 | e.stopPropagation(); | ||
| 1791 | |||
| 1792 | this.transitionTime(); | ||
| 1793 | |||
| 1794 | this.initiated = true; | ||
| 1795 | this.moved = false; | ||
| 1796 | this.lastPointX = point.pageX; | ||
| 1797 | this.lastPointY = point.pageY; | ||
| 1798 | |||
| 1799 | this.startTime = utils.getTime(); | ||
| 1800 | |||
| 1801 | if ( !this.options.disableTouch ) { | ||
| 1802 | utils.addEvent(window, 'touchmove', this); | ||
| 1803 | } | ||
| 1804 | if ( !this.options.disablePointer ) { | ||
| 1805 | utils.addEvent(window, utils.prefixPointerEvent('pointermove'), this); | ||
| 1806 | } | ||
| 1807 | if ( !this.options.disableMouse ) { | ||
| 1808 | utils.addEvent(window, 'mousemove', this); | ||
| 1809 | } | ||
| 1810 | |||
| 1811 | this.scroller._execEvent('beforeScrollStart'); | ||
| 1812 | }, | ||
| 1813 | |||
| 1814 | _move: function (e) { | ||
| 1815 | var point = e.touches ? e.touches[0] : e, | ||
| 1816 | deltaX, deltaY, | ||
| 1817 | newX, newY, | ||
| 1818 | timestamp = utils.getTime(); | ||
| 1819 | |||
| 1820 | if ( !this.moved ) { | ||
| 1821 | this.scroller._execEvent('scrollStart'); | ||
| 1822 | } | ||
| 1823 | |||
| 1824 | this.moved = true; | ||
| 1825 | |||
| 1826 | deltaX = point.pageX - this.lastPointX; | ||
| 1827 | this.lastPointX = point.pageX; | ||
| 1828 | |||
| 1829 | deltaY = point.pageY - this.lastPointY; | ||
| 1830 | this.lastPointY = point.pageY; | ||
| 1831 | |||
| 1832 | newX = this.x + deltaX; | ||
| 1833 | newY = this.y + deltaY; | ||
| 1834 | |||
| 1835 | this._pos(newX, newY); | ||
| 1836 | |||
| 1837 | // INSERT POINT: indicator._move | ||
| 1838 | |||
| 1839 | e.preventDefault(); | ||
| 1840 | e.stopPropagation(); | ||
| 1841 | }, | ||
| 1842 | |||
| 1843 | _end: function (e) { | ||
| 1844 | if ( !this.initiated ) { | ||
| 1845 | return; | ||
| 1846 | } | ||
| 1847 | |||
| 1848 | this.initiated = false; | ||
| 1849 | |||
| 1850 | e.preventDefault(); | ||
| 1851 | e.stopPropagation(); | ||
| 1852 | |||
| 1853 | utils.removeEvent(window, 'touchmove', this); | ||
| 1854 | utils.removeEvent(window, utils.prefixPointerEvent('pointermove'), this); | ||
| 1855 | utils.removeEvent(window, 'mousemove', this); | ||
| 1856 | |||
| 1857 | if ( this.scroller.options.snap ) { | ||
| 1858 | var snap = this.scroller._nearestSnap(this.scroller.x, this.scroller.y); | ||
| 1859 | |||
| 1860 | var time = this.options.snapSpeed || Math.max( | ||
| 1861 | Math.max( | ||
| 1862 | Math.min(Math.abs(this.scroller.x - snap.x), 1000), | ||
| 1863 | Math.min(Math.abs(this.scroller.y - snap.y), 1000) | ||
| 1864 | ), 300); | ||
| 1865 | |||
| 1866 | if ( this.scroller.x != snap.x || this.scroller.y != snap.y ) { | ||
| 1867 | this.scroller.directionX = 0; | ||
| 1868 | this.scroller.directionY = 0; | ||
| 1869 | this.scroller.currentPage = snap; | ||
| 1870 | this.scroller.scrollTo(snap.x, snap.y, time, this.scroller.options.bounceEasing); | ||
| 1871 | } | ||
| 1872 | } | ||
| 1873 | |||
| 1874 | if ( this.moved ) { | ||
| 1875 | this.scroller._execEvent('scrollEnd'); | ||
| 1876 | } | ||
| 1877 | }, | ||
| 1878 | |||
| 1879 | transitionTime: function (time) { | ||
| 1880 | time = time || 0; | ||
| 1881 | var durationProp = utils.style.transitionDuration; | ||
| 1882 | this.indicatorStyle[durationProp] = time + 'ms'; | ||
| 1883 | |||
| 1884 | if ( !time && utils.isBadAndroid ) { | ||
| 1885 | this.indicatorStyle[durationProp] = '0.0001ms'; | ||
| 1886 | // remove 0.0001ms | ||
| 1887 | var self = this; | ||
| 1888 | rAF(function() { | ||
| 1889 | if(self.indicatorStyle[durationProp] === '0.0001ms') { | ||
| 1890 | self.indicatorStyle[durationProp] = '0s'; | ||
| 1891 | } | ||
| 1892 | }); | ||
| 1893 | } | ||
| 1894 | }, | ||
| 1895 | |||
| 1896 | transitionTimingFunction: function (easing) { | ||
| 1897 | this.indicatorStyle[utils.style.transitionTimingFunction] = easing; | ||
| 1898 | }, | ||
| 1899 | |||
| 1900 | refresh: function () { | ||
| 1901 | this.transitionTime(); | ||
| 1902 | |||
| 1903 | if ( this.options.listenX && !this.options.listenY ) { | ||
| 1904 | this.indicatorStyle.display = this.scroller.hasHorizontalScroll ? 'block' : 'none'; | ||
| 1905 | } else if ( this.options.listenY && !this.options.listenX ) { | ||
| 1906 | this.indicatorStyle.display = this.scroller.hasVerticalScroll ? 'block' : 'none'; | ||
| 1907 | } else { | ||
| 1908 | this.indicatorStyle.display = this.scroller.hasHorizontalScroll || this.scroller.hasVerticalScroll ? 'block' : 'none'; | ||
| 1909 | } | ||
| 1910 | |||
| 1911 | if ( this.scroller.hasHorizontalScroll && this.scroller.hasVerticalScroll ) { | ||
| 1912 | utils.addClass(this.wrapper, 'iScrollBothScrollbars'); | ||
| 1913 | utils.removeClass(this.wrapper, 'iScrollLoneScrollbar'); | ||
| 1914 | |||
| 1915 | if ( this.options.defaultScrollbars && this.options.customStyle ) { | ||
| 1916 | if ( this.options.listenX ) { | ||
| 1917 | this.wrapper.style.right = '8px'; | ||
| 1918 | } else { | ||
| 1919 | this.wrapper.style.bottom = '8px'; | ||
| 1920 | } | ||
| 1921 | } | ||
| 1922 | } else { | ||
| 1923 | utils.removeClass(this.wrapper, 'iScrollBothScrollbars'); | ||
| 1924 | utils.addClass(this.wrapper, 'iScrollLoneScrollbar'); | ||
| 1925 | |||
| 1926 | if ( this.options.defaultScrollbars && this.options.customStyle ) { | ||
| 1927 | if ( this.options.listenX ) { | ||
| 1928 | this.wrapper.style.right = '2px'; | ||
| 1929 | } else { | ||
| 1930 | this.wrapper.style.bottom = '2px'; | ||
| 1931 | } | ||
| 1932 | } | ||
| 1933 | } | ||
| 1934 | |||
| 1935 | var r = this.wrapper.offsetHeight; // force refresh | ||
| 1936 | |||
| 1937 | if ( this.options.listenX ) { | ||
| 1938 | this.wrapperWidth = this.wrapper.clientWidth; | ||
| 1939 | if ( this.options.resize ) { | ||
| 1940 | this.indicatorWidth = Math.max(Math.round(this.wrapperWidth * this.wrapperWidth / (this.scroller.scrollerWidth || this.wrapperWidth || 1)), 8); | ||
| 1941 | this.indicatorStyle.width = this.indicatorWidth + 'px'; | ||
| 1942 | } else { | ||
| 1943 | this.indicatorWidth = this.indicator.clientWidth; | ||
| 1944 | } | ||
| 1945 | |||
| 1946 | this.maxPosX = this.wrapperWidth - this.indicatorWidth; | ||
| 1947 | |||
| 1948 | if ( this.options.shrink == 'clip' ) { | ||
| 1949 | this.minBoundaryX = -this.indicatorWidth + 8; | ||
| 1950 | this.maxBoundaryX = this.wrapperWidth - 8; | ||
| 1951 | } else { | ||
| 1952 | this.minBoundaryX = 0; | ||
| 1953 | this.maxBoundaryX = this.maxPosX; | ||
| 1954 | } | ||
| 1955 | |||
| 1956 | this.sizeRatioX = this.options.speedRatioX || (this.scroller.maxScrollX && (this.maxPosX / this.scroller.maxScrollX)); | ||
| 1957 | } | ||
| 1958 | |||
| 1959 | if ( this.options.listenY ) { | ||
| 1960 | this.wrapperHeight = this.wrapper.clientHeight; | ||
| 1961 | if ( this.options.resize ) { | ||
| 1962 | this.indicatorHeight = Math.max(Math.round(this.wrapperHeight * this.wrapperHeight / (this.scroller.scrollerHeight || this.wrapperHeight || 1)), 8); | ||
| 1963 | this.indicatorStyle.height = this.indicatorHeight + 'px'; | ||
| 1964 | } else { | ||
| 1965 | this.indicatorHeight = this.indicator.clientHeight; | ||
| 1966 | } | ||
| 1967 | |||
| 1968 | this.maxPosY = this.wrapperHeight - this.indicatorHeight; | ||
| 1969 | |||
| 1970 | if ( this.options.shrink == 'clip' ) { | ||
| 1971 | this.minBoundaryY = -this.indicatorHeight + 8; | ||
| 1972 | this.maxBoundaryY = this.wrapperHeight - 8; | ||
| 1973 | } else { | ||
| 1974 | this.minBoundaryY = 0; | ||
| 1975 | this.maxBoundaryY = this.maxPosY; | ||
| 1976 | } | ||
| 1977 | |||
| 1978 | this.maxPosY = this.wrapperHeight - this.indicatorHeight; | ||
| 1979 | this.sizeRatioY = this.options.speedRatioY || (this.scroller.maxScrollY && (this.maxPosY / this.scroller.maxScrollY)); | ||
| 1980 | } | ||
| 1981 | |||
| 1982 | this.updatePosition(); | ||
| 1983 | }, | ||
| 1984 | |||
| 1985 | updatePosition: function () { | ||
| 1986 | var x = this.options.listenX && Math.round(this.sizeRatioX * this.scroller.x) || 0, | ||
| 1987 | y = this.options.listenY && Math.round(this.sizeRatioY * this.scroller.y) || 0; | ||
| 1988 | |||
| 1989 | if ( !this.options.ignoreBoundaries ) { | ||
| 1990 | if ( x < this.minBoundaryX ) { | ||
| 1991 | if ( this.options.shrink == 'scale' ) { | ||
| 1992 | this.width = Math.max(this.indicatorWidth + x, 8); | ||
| 1993 | this.indicatorStyle.width = this.width + 'px'; | ||
| 1994 | } | ||
| 1995 | x = this.minBoundaryX; | ||
| 1996 | } else if ( x > this.maxBoundaryX ) { | ||
| 1997 | if ( this.options.shrink == 'scale' ) { | ||
| 1998 | this.width = Math.max(this.indicatorWidth - (x - this.maxPosX), 8); | ||
| 1999 | this.indicatorStyle.width = this.width + 'px'; | ||
| 2000 | x = this.maxPosX + this.indicatorWidth - this.width; | ||
| 2001 | } else { | ||
| 2002 | x = this.maxBoundaryX; | ||
| 2003 | } | ||
| 2004 | } else if ( this.options.shrink == 'scale' && this.width != this.indicatorWidth ) { | ||
| 2005 | this.width = this.indicatorWidth; | ||
| 2006 | this.indicatorStyle.width = this.width + 'px'; | ||
| 2007 | } | ||
| 2008 | |||
| 2009 | if ( y < this.minBoundaryY ) { | ||
| 2010 | if ( this.options.shrink == 'scale' ) { | ||
| 2011 | this.height = Math.max(this.indicatorHeight + y * 3, 8); | ||
| 2012 | this.indicatorStyle.height = this.height + 'px'; | ||
| 2013 | } | ||
| 2014 | y = this.minBoundaryY; | ||
| 2015 | } else if ( y > this.maxBoundaryY ) { | ||
| 2016 | if ( this.options.shrink == 'scale' ) { | ||
| 2017 | this.height = Math.max(this.indicatorHeight - (y - this.maxPosY) * 3, 8); | ||
| 2018 | this.indicatorStyle.height = this.height + 'px'; | ||
| 2019 | y = this.maxPosY + this.indicatorHeight - this.height; | ||
| 2020 | } else { | ||
| 2021 | y = this.maxBoundaryY; | ||
| 2022 | } | ||
| 2023 | } else if ( this.options.shrink == 'scale' && this.height != this.indicatorHeight ) { | ||
| 2024 | this.height = this.indicatorHeight; | ||
| 2025 | this.indicatorStyle.height = this.height + 'px'; | ||
| 2026 | } | ||
| 2027 | } | ||
| 2028 | |||
| 2029 | this.x = x; | ||
| 2030 | this.y = y; | ||
| 2031 | |||
| 2032 | if ( this.scroller.options.useTransform ) { | ||
| 2033 | this.indicatorStyle[utils.style.transform] = 'translate(' + x + 'px,' + y + 'px)' + this.scroller.translateZ; | ||
| 2034 | } else { | ||
| 2035 | this.indicatorStyle.left = x + 'px'; | ||
| 2036 | this.indicatorStyle.top = y + 'px'; | ||
| 2037 | } | ||
| 2038 | }, | ||
| 2039 | |||
| 2040 | _pos: function (x, y) { | ||
| 2041 | if ( x < 0 ) { | ||
| 2042 | x = 0; | ||
| 2043 | } else if ( x > this.maxPosX ) { | ||
| 2044 | x = this.maxPosX; | ||
| 2045 | } | ||
| 2046 | |||
| 2047 | if ( y < 0 ) { | ||
| 2048 | y = 0; | ||
| 2049 | } else if ( y > this.maxPosY ) { | ||
| 2050 | y = this.maxPosY; | ||
| 2051 | } | ||
| 2052 | |||
| 2053 | x = this.options.listenX ? Math.round(x / this.sizeRatioX) : this.scroller.x; | ||
| 2054 | y = this.options.listenY ? Math.round(y / this.sizeRatioY) : this.scroller.y; | ||
| 2055 | |||
| 2056 | this.scroller.scrollTo(x, y); | ||
| 2057 | }, | ||
| 2058 | |||
| 2059 | fade: function (val, hold) { | ||
| 2060 | if ( hold && !this.visible ) { | ||
| 2061 | return; | ||
| 2062 | } | ||
| 2063 | |||
| 2064 | clearTimeout(this.fadeTimeout); | ||
| 2065 | this.fadeTimeout = null; | ||
| 2066 | |||
| 2067 | var time = val ? 250 : 500, | ||
| 2068 | delay = val ? 0 : 300; | ||
| 2069 | |||
| 2070 | val = val ? '1' : '0'; | ||
| 2071 | |||
| 2072 | this.wrapperStyle[utils.style.transitionDuration] = time + 'ms'; | ||
| 2073 | |||
| 2074 | this.fadeTimeout = setTimeout((function (val) { | ||
| 2075 | this.wrapperStyle.opacity = val; | ||
| 2076 | this.visible = +val; | ||
| 2077 | }).bind(this, val), delay); | ||
| 2078 | } | ||
| 2079 | }; | ||
| 2080 | |||
| 2081 | IScroll.utils = utils; | ||
| 2082 | |||
| 2083 | if ( typeof module != 'undefined' && module.exports ) { | ||
| 2084 | module.exports = IScroll; | ||
| 2085 | } else if ( typeof define == 'function' && define.amd ) { | ||
| 2086 | define( function () { return IScroll; } ); | ||
| 2087 | } else { | ||
| 2088 | window.IScroll = IScroll; | ||
| 2089 | } | ||
| 2090 | |||
| 2091 | })(window, document, Math); |
-
Please register or sign in to post a comment