diff --git a/wicketstuff-jquery-ui-parent/pom.xml b/wicketstuff-jquery-ui-parent/pom.xml
index c281e65500..94bb4647f9 100644
--- a/wicketstuff-jquery-ui-parent/pom.xml
+++ b/wicketstuff-jquery-ui-parent/pom.xml
@@ -39,6 +39,11 @@
Martin Grigorov
mgrigorov@apache.org
+
+ reiern70
+ Ernesto Reinaldo Barreiro
+ reiern70@apache.org
+
diff --git a/wicketstuff-jquery-ui-parent/wicketstuff-jquery-ui-core/src/main/java/org/wicketstuff/jquery/core/template/JQueryAbstractTemplateBehavior.java b/wicketstuff-jquery-ui-parent/wicketstuff-jquery-ui-core/src/main/java/org/wicketstuff/jquery/core/template/JQueryAbstractTemplateBehavior.java
index 7cdc5a6660..4b9ad00663 100644
--- a/wicketstuff-jquery-ui-parent/wicketstuff-jquery-ui-core/src/main/java/org/wicketstuff/jquery/core/template/JQueryAbstractTemplateBehavior.java
+++ b/wicketstuff-jquery-ui-parent/wicketstuff-jquery-ui-core/src/main/java/org/wicketstuff/jquery/core/template/JQueryAbstractTemplateBehavior.java
@@ -58,4 +58,12 @@ public void renderHead(Component component, IHeaderResponse response)
* @return the {@link JQueryTemplateResourceStream}
*/
protected abstract JQueryTemplateResourceStream newResourceStream();
+
+ /**
+ * @return The JavaScript code rendering the template.
+ */
+ public String getTemplateRenderingCode()
+ {
+ return null;
+ }
}
diff --git a/wicketstuff-jquery-ui-parent/wicketstuff-jquery-ui/src/main/java/org/wicketstuff/jquery/ui/form/autocomplete/AutoCompleteTextField.java b/wicketstuff-jquery-ui-parent/wicketstuff-jquery-ui/src/main/java/org/wicketstuff/jquery/ui/form/autocomplete/AutoCompleteTextField.java
index 1dc3aaec91..3186933397 100644
--- a/wicketstuff-jquery-ui-parent/wicketstuff-jquery-ui/src/main/java/org/wicketstuff/jquery/ui/form/autocomplete/AutoCompleteTextField.java
+++ b/wicketstuff-jquery-ui-parent/wicketstuff-jquery-ui/src/main/java/org/wicketstuff/jquery/ui/form/autocomplete/AutoCompleteTextField.java
@@ -30,6 +30,7 @@
import org.wicketstuff.jquery.core.renderer.ITextRenderer;
import org.wicketstuff.jquery.core.renderer.TextRenderer;
import org.wicketstuff.jquery.core.template.IJQueryTemplate;
+import org.wicketstuff.jquery.core.template.JQueryAbstractTemplateBehavior;
import org.wicketstuff.jquery.core.utils.RequestCycleUtils;
import org.wicketstuff.jquery.ui.template.JQueryTemplateBehavior;
@@ -52,7 +53,7 @@ public abstract class AutoCompleteTextField extends Text
private final IConverter converter;
private final IJQueryTemplate template;
- private JQueryTemplateBehavior templateBehavior = null;
+ private JQueryAbstractTemplateBehavior templateBehavior = null;
/**
* Cache of current choices, needed to retrieve the user selected object
@@ -246,11 +247,22 @@ protected void onInitialize()
if (this.template != null)
{
- this.templateBehavior = new JQueryTemplateBehavior(this.template);
+ this.templateBehavior = createTemplateBehavior(this.template);
this.add(this.templateBehavior);
}
}
+ /**
+ * Factory method for {@link JQueryAbstractTemplateBehavior}
+ *
+ * @param template {@link IJQueryTemplate}
+ * @return
+ */
+ protected JQueryAbstractTemplateBehavior createTemplateBehavior(IJQueryTemplate template)
+ {
+ return new JQueryTemplateBehavior(this.template);
+ }
+
@Override
public void onConfigure(JQueryBehavior behavior)
{
@@ -313,7 +325,7 @@ protected CharSequence getChoiceCallbackUrl()
{
// warning, the template text should be of the form ... in order to work
String render = "jQuery('%s').data('ui-autocomplete')._renderItem = function( ul, item ) { " // lf
- + "var content = jQuery.tmpl(jQuery('#%s').html(), item);" // lf
+ + "var content = " + templateBehavior.getTemplateRenderingCode() // lf
+ "return jQuery('').data('ui-autocomplete-item', item).append(content).appendTo(ul);" // lf
+ "}";
diff --git a/wicketstuff-jquery-ui-parent/wicketstuff-jquery-ui/src/main/java/org/wicketstuff/jquery/ui/template/JQueryJsRenderTemplateBehavior.java b/wicketstuff-jquery-ui-parent/wicketstuff-jquery-ui/src/main/java/org/wicketstuff/jquery/ui/template/JQueryJsRenderTemplateBehavior.java
new file mode 100644
index 0000000000..a10bf93508
--- /dev/null
+++ b/wicketstuff-jquery-ui-parent/wicketstuff-jquery-ui/src/main/java/org/wicketstuff/jquery/ui/template/JQueryJsRenderTemplateBehavior.java
@@ -0,0 +1,93 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.wicketstuff.jquery.ui.template;
+
+import org.apache.wicket.Component;
+import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.head.JavaScriptHeaderItem;
+import org.apache.wicket.markup.head.PriorityHeaderItem;
+import org.apache.wicket.request.resource.PackageResourceReference;
+import org.apache.wicket.resource.JQueryPluginResourceReference;
+import org.wicketstuff.jquery.core.template.IJQueryTemplate;
+import org.wicketstuff.jquery.core.template.JQueryAbstractTemplateBehavior;
+import org.wicketstuff.jquery.core.template.JQueryTemplateResourceStream;
+
+/**
+ * Templates machinery based on jsrender
+ *
+ * @author reiern70
+ */
+public class JQueryJsRenderTemplateBehavior extends JQueryAbstractTemplateBehavior
+{
+ private static final long serialVersionUID = 1L;
+ public static final PackageResourceReference TMPL_JS = new JQueryPluginResourceReference(JQueryJsRenderTemplateBehavior.class, "jsrender.min.js");
+
+ private String token = null;
+ private final IJQueryTemplate template;
+
+ /**
+ * Constructor
+ *
+ * @param template the {@link IJQueryTemplate} that this behavior should render via the resource stream
+ */
+ public JQueryJsRenderTemplateBehavior(IJQueryTemplate template)
+ {
+ super();
+
+ this.template = template;
+ }
+
+ @Override
+ public void renderHead(Component component, IHeaderResponse response)
+ {
+ super.renderHead(component, response);
+
+ response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forReference(JQueryJsRenderTemplateBehavior.TMPL_JS)));
+ }
+
+ // Methods //
+
+ @Override
+ public void bind(Component component)
+ {
+ super.bind(component);
+
+ this.token = String.format("%s-template", component.getMarkupId());
+ }
+
+ // Properties //
+
+ @Override
+ public String getToken()
+ {
+ return this.token;
+ }
+
+ // Factories //
+
+ @Override
+ protected JQueryTemplateResourceStream newResourceStream()
+ {
+ return new JQueryTemplateResourceStream(this.template.getText(), this.getToken());
+ }
+
+ @Override
+ public String getTemplateRenderingCode()
+ {
+ return "jQuery.templates(jQuery('#%s').html()).render(item);";
+ }
+}
diff --git a/wicketstuff-jquery-ui-parent/wicketstuff-jquery-ui/src/main/java/org/wicketstuff/jquery/ui/template/JQueryTemplateBehavior.java b/wicketstuff-jquery-ui-parent/wicketstuff-jquery-ui/src/main/java/org/wicketstuff/jquery/ui/template/JQueryTemplateBehavior.java
index ed2c2d9b22..0676e424cd 100644
--- a/wicketstuff-jquery-ui-parent/wicketstuff-jquery-ui/src/main/java/org/wicketstuff/jquery/ui/template/JQueryTemplateBehavior.java
+++ b/wicketstuff-jquery-ui-parent/wicketstuff-jquery-ui/src/main/java/org/wicketstuff/jquery/ui/template/JQueryTemplateBehavior.java
@@ -85,4 +85,10 @@ protected JQueryTemplateResourceStream newResourceStream()
{
return new JQueryTemplateResourceStream(this.template.getText(), this.getToken());
}
+
+ @Override
+ public String getTemplateRenderingCode()
+ {
+ return "jQuery.tmpl(jQuery('#%s').html(), item);";
+ }
}
diff --git a/wicketstuff-jquery-ui-parent/wicketstuff-jquery-ui/src/main/resources/org/wicketstuff/jquery/ui/template/jsrender.min.js b/wicketstuff-jquery-ui-parent/wicketstuff-jquery-ui/src/main/resources/org/wicketstuff/jquery/ui/template/jsrender.min.js
new file mode 100644
index 0000000000..b393426a92
--- /dev/null
+++ b/wicketstuff-jquery-ui-parent/wicketstuff-jquery-ui/src/main/resources/org/wicketstuff/jquery/ui/template/jsrender.min.js
@@ -0,0 +1,3 @@
+/*! JsRender v1.0.16: http://jsviews.com/#jsrender */
+/*! **VERSION FOR WEB** (For NODE.JS see http://jsviews.com/download/jsrender-node.js) */
+!function(t,e){var n=e.jQuery;"object"==typeof exports?module.exports=n?t(e,n):function(n){if(n&&!n.fn)throw"Provide jQuery or null";return t(e,n)}:"function"==typeof define&&define.amd?define(function(){return t(e)}):t(e,!1)}(function(t,e){"use strict";var n=!1===e;e=e&&e.fn?e:t.jQuery;var r,i,o,a,s,l,p,d,c,u,f,g,h,v,m,_,x,b,w,y,C="v1.0.16",k="_ocp",j=function(t){return"function"==typeof t},T=Array.isArray,A=/[ \t]*(\r\n|\n|\r)/g,P=/\\(['"\\])/g,N=/['"\\]/g,R=/(?:\x08|^)(onerror:)?(?:(~?)(([\w$.]+):)?([^\x08]+))\x08(,)?([^\x08]+)/gi,F=/^if\s/,M=/<(\w+)[>\s]/,$=/[\x00`><\"'&=]/,V=/^on[A-Z]|^convert(Back)?$/,E=/^\#\d+_`[\s\S]*\/\d+_`$/,O=/[\x00`><"'&=]/g,I=/[&<>]/g,S=/&(amp|gt|lt);/g,D=/\[['"]?|['"]?\]/g,q=0,J={"&":"&","<":"<",">":">","\0":"","'":"'",'"':""","`":"`","=":"="},U={amp:"&",gt:">",lt:"<"},K="html",B="string",L="object",Q="data-jsv-tmpl",H="jsvTmpl",W="For #index in nested block use #getIndex().",Z={},z={},G=t.jsrender,X=G&&e&&!e.render,Y={template:{compile:function t(n,r,i,o){function s(r){var a,s;if(typeof r===B||r.nodeType>0&&(d=r)){if(!d&&(/^\.?\/[^\\:*?"<>]*$/.test(r)?(s=l[n=n||r])?r=s:d=document.getElementById(r):"#"===r.charAt(0)&&(d=document.getElementById(r.slice(1))),!d&&e.fn&&!u.rTmpl.test(r)))try{d=e(r,document)[0]}catch(t){}d&&("SCRIPT"!==d.tagName&&Ct(r+": Use script block, not "+d.tagName),o?r=d.innerHTML:((a=d.getAttribute(Q))&&(a!==H?(r=l[a],delete l[a]):e.fn&&(r=e.data(d)[H])),a&&r||(n=n||(e.fn?H:r),r=t(n,d.innerHTML,i,o)),r.tmplName=n=n||a,n!==H&&(l[n]=r),d.setAttribute(Q,n),e.fn&&e.data(d,H,r))),d=void 0}else r.fn||(r=void 0);return r}var d,c,f=r=r||"";u._html=p.html,0===o&&(o=void 0,f=s(f));(o=o||(r.markup?r.bnds?at({},r):r:{})).tmplName=o.tmplName||n||"unnamed",i&&(o._parentTmpl=i);!f&&r.markup&&(f=s(r.markup))&&f.fn&&(f=f.markup);if(void 0!==f)return f.render||r.render?f.tmpls&&(c=f):(r=mt(f,o),jt(f.replace(N,"\\$&"),r)),c||(c=at(function(){return c.render.apply(c,arguments)},r),function(t){var e,n,r;for(e in Y)t[n=e+"s"]&&(r=t[n],t[n]={},a[n](r,t))}(c)),c}},tag:{compile:function(t,e,n){var r,i,o,a=new u._tg;function s(){var e=this;e._={unlinked:!0},e.inline=!0,e.tagName=t}j(e)?e={depends:e.depends,render:e}:typeof e===B&&(e={template:e});if(i=e.baseTag)for(o in e.flow=!!e.flow,(i=typeof i===B?n&&n.tags[i]||c[i]:i)||Ct('baseTag: "'+e.baseTag+'" not found'),a=at(a,i),e)a[o]=et(i[o],e[o]);else a=at(a,e);void 0!==(r=a.template)&&(a.template=typeof r===B?l[r]||l(r):r);(s.prototype=a).constructor=a._ctr=s,n&&(a._parentTmpl=n);return a}},viewModel:{compile:function(t,n){var r,i,o,a=this,l=n.getters,p=n.extend,d=n.id,c=e.extend({_is:t||"unnamed",unmap:w,merge:b},p),u="",f="",g=l?l.length:0,h=e.observable,v={};function m(t){i.apply(this,t)}function _(){return new m(arguments)}function x(t,e){for(var n,r,i,o,s,p=0;p1,v=g.ctx;if(n){if(g._||(p=g.index,g=g.tag),c=g,v&&v.hasOwnProperty(n)||(v=d).hasOwnProperty(n)){if(s=v[n],"tag"===n||"tagCtx"===n||"root"===n||"parentTags"===n)return s}else v=void 0;if((!y&&g.tagCtx||g.linked)&&(s&&s._cxp||(g=g.tagCtx||j(s)?g:!(g=g.scope||g).isTop&&g.ctx.tag||g,void 0!==s&&g.tagCtx&&(g=g.tagCtx.view.scope),v=g._ocps,(s=v&&v.hasOwnProperty(n)&&v[n]||s)&&s._cxp||!i&&!h||((v||(g._ocps=g._ocps||{}))[n]=s=[{_ocp:s,_vw:c,_key:n}],s._cxp={path:k,ind:0,updateValue:function(t,n){return e.observable(s[0]).setProperty(k,t),this}})),l=s&&s._cxp)){if(arguments.length>2)return(a=s[1]?u._ceo(s[1].deps):[k]).unshift(s[0]),a._cxp=l,a;if(p=l.tagElse,f=s[1]?l.tag&&l.tag.cvtArgs?l.tag.cvtArgs(p,1)[l.ind]:s[1](s[0].data,s[0],u):s[0]._ocp,h)return u._ucp(n,r,g,l),g;s=f}return s&&j(s)&&(o=function(){return s.apply(this&&this!==t?this:c,arguments)},at(o,s)),o||s}}function ct(t,e){var n,r,i,o,a,s,l,p=this;if(p.tagName){if(!(p=((s=p).tagCtxs||[p])[t||0]))return}else s=p.tag;if(a=s.bindFrom,o=p.args,(l=s.convert)&&typeof l===B&&(l="true"===l?void 0:p.view.getRsc("converters",l)||Ct("Unknown converter: '"+l+"'")),l&&!e&&(o=o.slice()),a){for(i=[],n=a.length;n--;)r=a[n],i.unshift(ut(p,r));e&&(o=i)}if(l){if(void 0===(l=l.apply(s,i||o)))return o;if(n=(a=a||[0]).length,T(l)&&(!1===l.arg0||1!==n&&l.length===n&&!l.arg0)||(l=[l],a=[0],n=1),e)o=l;else for(;n--;)+(r=a[n])===r&&(o[r]=l[n])}return o}function ut(t,e){return(t=t[+e===e?"args":"props"])&&t[e]}function ft(t){return this.cvtArgs(t,1)}function gt(t,e,n,r,i,o,a,s){var l,p,d,c=this,u="array"===e;c.content=s,c.views=u?[]:{},c.data=r,c.tmpl=i,d=c._={key:0,useKey:u?0:1,id:""+q++,onRender:a,bnds:{}},c.linked=!!a,c.type=e||"top",e&&(c.cache={_ct:f._cchCt}),n&&"top"!==n.type||((c.ctx=t||{}).root=c.data),(c.parent=n)?(c.root=n.root||c,l=n.views,p=n._,c.isTop=p.scp,c.scope=(!t.tag||t.tag===n.ctx.tag)&&!c.isTop&&n.scope||c,p.useKey?(l[d.key="_"+p.useKey++]=c,c.index=W,c.getIndex=st):l.length===(d.key=c.index=o)?l.push(c):l.splice(o,0,c),c.ctx=t||n.ctx):e&&(c.root=c)}function ht(t,e){return j(t)?t.call(e):t}function vt(t,e,n){Object.defineProperty(t,e,{value:n,configurable:!0})}function mt(t,e){var n,r=g._wm||{},i={tmpls:[],links:{},bnds:[],_is:"template",render:wt};return e&&(i=at(i,e)),i.markup=t,i.htmlTag||(n=M.exec(t),i.htmlTag=n?n[1].toLowerCase():""),(n=r[i.htmlTag])&&n!==r.div&&(i.markup=i.markup.trim()),i}function _t(t,e){var n=t+"s";a[n]=function r(i,o,s){var l,p,d,c=u.onStore[t];if(i&&typeof i===L&&!i.nodeType&&!i.markup&&!i.getTgt&&!("viewModel"===t&&i.getters||i.extend)){for(p in i)r(p,i[p],o);return o||a}return i&&typeof i!==B&&(s=o,o=i,i=void 0),d=s?"viewModel"===t?s:s[n]=s[n]||{}:r,l=e.compile,void 0===o&&(o=l?i:d[i],i=void 0),null===o?i&&delete d[i]:(l&&((o=l.call(d,i,o,s,0)||{})._is=t),i&&(d[i]=o)),c&&c(i,o,s,l),o}}function xt(t){h[t]=h[t]||function(e){return arguments.length?(f[t]=e,h):f[t]}}function bt(t){function e(e,n){this.tgt=t.getTgt(e,n),n.map=this}return j(t)&&(t={getTgt:t}),t.baseMap&&(t=at(at({},t.baseMap),t)),t.map=function(t,n){return new e(t,n)},t}function wt(t,e,n,r,i,a){var s,l,p,d,c,f,h,v=r,m="";if(!0===e?(n=e,e=void 0):typeof e!==L&&(e=void 0),(p=this.tag)?(d=(v=v||this.view)._getTmpl(p.template||this.tmpl),arguments.length||(t=p.contentCtx&&j(p.contentCtx)?t=p.contentCtx(t):v)):d=this,d){if(!r&&t&&"view"===t._is&&(v=t),v&&t===v&&(t=v.data),c=!v,y=y||c,c&&((e=e||{}).root=t),!y||g.useViews||d.useViews||v&&v!==o)m=yt(d,t,e,n,v,i,a,p);else{if(v?(f=v.data,h=v.index,v.index=W):(f=(v=o).data,v.data=t,v.ctx=e),T(t)&&!n)for(s=0,l=t.length;sY-(L||0)){if(L=B.slice(L,Y+n.length).trim(),Q=o||c[v-1].bd,(H=Q[Q.length-1])&&H.prm){for(;H.sb&&H.sb.prm;)H=H.sb;!(W=H.sb={path:H.sb,bnd:H.bnd}).path&&H.path&&(H.bnd=!0)}else Q.push(W={path:Q.pop()});H&&H.sb===W&&(C[v]=C[v-1].slice(H._cpPthSt)+C[v],C[v-1]=C[v-1].slice(0,H._cpPthSt)),W._cpPthSt=y[v-1],W._cpKey=L,C[v]+=B.slice(k,K),k=K,W._cpfn=Z[L]=Z[L]||new Function("data,view,j","//"+L+"\nvar v;\nreturn ((v="+C[v]+("]"===D?")]":D)+")!=null?v:null);"),C[v-1]+=b[h]&&g.cache?'view.getCache("'+L.replace(N,"\\$&")+'"':C[v],W.prm=d.bd,W.bnd=W.bnd||W.path&&W.path.indexOf("^")>=0}C[v]=""}"["===V&&(V="[j._sq("),"["===j&&(j="[j._sq(")}return X=l?(l=!I)?n:O+'"':s?(s=!S)?n:O+'"':(j?(x[++h]=!0,m[h]=0,p&&(w[v++]=Y++,d=c[v]={bd:[]},C[v]="",y[v]=1),j):"")+(U?h?"":(f=B.slice(f,Y),(i?(i=o=!1,"\b"):"\b,")+f+(f=Y+n.length,p&&e.push(d.bd=[]),"\b")):F?(v&&kt(t),p&&e.pop(),i="_"+A,f=Y+n.length,p&&((p=d.bd=e[i]=[]).skp=!T),A+":"):A?A.split("^").join(".").replace(u.rPath,function(t,n,a,s,l,c,u,f){if(z="."===a,a&&(A=A.slice(n.length),/^\.?constructor$/.test(f||A)&&kt(t),z||(t=($?(r?"":"(ltOb.lt=ltOb.lt||")+"(ob=":"")+(s?'view.ctxPrm("'+s+'")':l?"view":"data")+($?")===undefined"+(r?"":")")+'?"":view._getOb(ob,"':"")+(f?(c?"."+c:s||l?"":"."+a)+(u||""):(f=s?"":l?c||"":a,"")),t=n+("view.data"===(t+=f?"."+f:"").slice(0,9)?t.slice(5):t)+($?(r?'"':'",ltOb')+(V?",1)":")"):"")),p)){if(Q="_linkTo"===i?o=e._jsvto=e._jsvto||[]:d.bd,H=z&&Q[Q.length-1]){if(H._cpfn){for(;H.sb;)H=H.sb;H.prm&&(H.bnd&&(A="^"+A.slice(1)),H.sb=A,H.bnd=H.bnd||"^"===A[0])}}else Q.push(A);V&&!z&&(w[v]=Y,y[v]=C[v].length)}return t})+(V||P):P||(D?"]"===D?")]":")":E?(b[h]||kt(t),","):a?"":(l=I,s=S,'"'))),l||s||D&&(b[h]=!1,h--),p&&(l||s||(D&&(x[h+1]&&(d=c[--v],x[h+1]=!1),_=m[h+1]),V&&(m[h+1]=C[v].length+(j?1:0),(A||D)&&(d=c[++v]={bd:[]},x[h+1]=!0))),C[v]=(C[v]||"")+B.slice(k,K),k=K+n.length,l||s||((G=j&&x[h+1])&&(C[v-1]+=j,y[v-1]++),"("===V&&z&&!W&&(C[v]=C[v-1].slice(_)+C[v],C[v-1]=C[v-1].slice(0,_))),C[v]+=G?X.slice(1):X),l||s||!V||(h++,A&&"("===V&&(b[h]=!0)),l||s||!J||(p&&(C[v]+=V),X+=V),X}),p&&(a=C[0]),!h&&a||kt(t)}function Rt(t,e,n){var r,i,o,a,s,l,p,d,u,h,v,m,_,x,b,w,y,C,k,j,T,N,R,F,M,$,V,E,O,I,S,D,q=0,J=g.useViews||e.useViews||e.tags||e.templates||e.helpers||e.converters,U="",L={},Q=t.length;for(typeof e===B?(y=n?'data-link="'+e.replace(A," ").slice(1,-1)+'"':e,e=0):(y=e.tmplName||"unnamed",e.allowCode&&(L.allowCode=!0),e.debug&&(L.debug=!0),h=e.bnds,w=e.tmpls),r=0;r":a+o):(j&&((C=mt(T,L)).tmplName=y+"/"+o,C.useViews=C.useViews||J,Rt(j,C),J=C.useViews,w.push(C)),F||(k=o,J=J||o&&(!c[o]||!c[o].flow),R=U,U=""),N=(N=t[r+1])&&"else"===N[0]),E=V?";\ntry{\nret+=":"\n+",_="",x="",M&&(v||O||a&&a!==K||I)){if(($=new Function("data,view,j","// "+y+" "+ ++q+" "+o+S+"{"+s+"};"+D))._er=V,$._tag=o,$._bd=!!v,$._lr=I,n)return $;Tt($,v),u=!0,_=(b='c("'+a+'",view,')+q+",",x=")"}if(U+=M?(n?(V?"try{\n":"")+"return ":E)+(u?(u=void 0,J=d=!0,b+($?(h[q-1]=$,q):"{"+s+"}")+")"):">"===o?(p=!0,"h("+m[0]+")"):"((v="+m[0]+")!=null?v:"+(n?"null)":'"")')):(l=!0,"\n{view:view,content:false,tmpl:"+(j?w.length:"false")+","+s+"},"),k&&!N){if(U="["+U.slice(0,-1)+"]",b='t("'+k+'",view,this,',n||v){if((U=new Function("data,view,j"," // "+y+" "+q+" "+k+S+U+D))._er=V,U._tag=k,v&&Tt(h[q-1]=U,v),U._lr=I,n)return U;_=b+q+",undefined,",x=")"}U=R+E+b+(v&&q||U)+")",v=0,k=0}V&&!N&&(J=!0,U+=";\n}catch(e){ret"+(n?"urn ":"+=")+_+"j._err(e,view,"+V+")"+x+";}"+(n?"":"\nret=ret"))}U="// "+y+(L.debug?"\ndebugger;":"")+"\nvar v"+(l?",t=j._tag":"")+(d?",c=j._cnvt":"")+(p?",h=j._html":"")+(n?(i[8]?", ob":"")+";\n":',ret=""')+U+(n?"\n":";\nreturn ret;");try{U=new Function("data,view,j",U)}catch(t){kt("Compiled template code:\n\n"+U+'\n: "'+(t.message||t)+'"')}return e&&(e.fn=U,e.useViews=!!J),U}function Ft(t,e){return t&&t!==e?e?at(at({},e),t):t:e&&at({},e)}function Mt(t,n){var r,i,o,a=n.tag,s=n.props,l=n.params.props,p=s.filter,d=s.sort,c=!0===d,u=parseInt(s.step),f=s.reverse?-1:1;if(!T(t))return t;if(c||d&&typeof d===B?((r=t.map(function(t,e){return{i:e,v:typeof(t=c?t:pt(t,d))===B?t.toLowerCase():t}})).sort(function(t,e){return t.v>e.v?f:t.vt.length?t.length:+o,t=t.slice(i,o)),u>1){for(i=0,o=t.length,r=[];i=|[<>%*:?\/]|(=))\s*|(!*?(@)?[#~]?[\w$.^]+)([([])?)|(,\s*)|(?:(\()\s*)?\\?(?:(')|("))|(?:\s*(([)\]])(?=[.^]|\s*$|[^([])|[)\]])([([]?))|(\s+)/g,View:gt,Err:ot,tmplFn:jt,parse:Nt,extend:at,extendCtx:Ft,syntaxErr:kt,onStore:{template:function(t,e){null===e?delete z[t]:t&&(z[t]=e)}},addSetting:xt,settings:{allowCode:!1},advSet:it,_thp:nt,_gm:et,_tg:function(){},_cnvt:function(t,e,n,r){var i,o,a,s,l,p="number"==typeof n&&e.tmpl.bnds[n-1];void 0===r&&p&&p._lr&&(r="");void 0!==r?n=r={props:{},args:[r]}:p&&(n=p(e.data,e,u));if(p=p._bd&&p,t||p){if(i=(o=e._lc)&&o.tag,n.view=e,!i){if(i=at(new u._tg,{_:{bnd:p,unlinked:!0,lt:n.lt},inline:!o,tagName:":",convert:t,onArrayChange:!0,flow:!0,tagCtx:n,tagCtxs:[n],_is:"tag"}),(s=n.args.length)>1)for(l=i.bindTo=[];s--;)l.unshift(s);o&&(o.tag=i,i.linkCtx=o),n.ctx=Ft(n.ctx,(o?o.view:e).ctx),nt(i,n)}i._er=r&&a,i.ctx=n.ctx||i.ctx||{},n.ctx=void 0,a=i.cvtArgs()[0],i._er=r&&a}else a=n.args[0];return null!=(a=p&&e._.onRender?e._.onRender(a,e,i):a)?a:""},_tag:function(t,e,n,r,i,a){function s(t){var e=l[t];if(void 0!==e)for(e=T(e)?e:[e],v=e.length;v--;)O=e[v],isNaN(parseInt(O))||(e[v]=parseInt(O));return e||[0]}var l,d,c,f,g,h,v,m,_,x,b,w,y,C,k,j,A,P,N,R,F,M,$,V,O,I,S,D,q,J=0,U="",B=(e=e||o)._lc||!1,L=e.ctx,Q=n||e.tmpl,H="number"==typeof r&&e.tmpl.bnds[r-1];"tag"===t._is?(t=(l=t).tagName,r=l.tagCtxs,l.template):(d=e.getRsc("tags",t)||Ct("Unknown tag: {{"+t+"}} ")).template;void 0===a&&H&&(H._lr=d.lateRender&&!1!==H._lr||H._lr)&&(a="");void 0!==a?(U+=a,r=a=[{props:{},args:[],params:{props:{}}}]):H&&(r=H(e.data,e,u));for(h=r.length;J)|(\\*))\\s*((?:[^\\"+_+"]|\\"+_+"(?!\\"+x+"))*?)",u.rTag="(?:"+i+")",i=new RegExp("(?:"+e+i+"(\\/)?|\\"+v+"(\\"+b+")?\\"+m+"(?:(?:\\/(\\w+))\\s*|!--[\\s\\S]*?--))"+n,"g"),u.rTmpl=new RegExp("^\\s|\\s$|<.*>|([^\\\\]|^)[{}]|"+e+".*"+n),h},advanced:function(t){return t?(at(g,t),u.advSet(),h):g}},map:bt},(ot.prototype=new Error).constructor=ot,st.depends=function(){return[this.get("item"),"index"]},lt.depends="index",gt.prototype={get:function(t,e){e||!0===t||(e=t,t=void 0);var n,r,i,o,a=this,s="root"===e;if(t){if(!(o=e&&a.type===e&&a))if(n=a.views,a._.useKey){for(r in n)if(o=e?n[r].get(t,e):n[r])break}else for(r=0,i=n.length;!o&&rthis.cache._ct&&(this.cache={_ct:f._cchCt}),void 0!==this.cache[t]?this.cache[t]:this.cache[t]=Z[t](this.data,this,u)},_is:"view"},u=a.sub,h=a.settings,!(G||e&&e.render)){for(r in Y)_t(r,Y[r]);if(p=a.converters,d=a.helpers,c=a.tags,u._tg.prototype={baseApply:function(t){return this.base.apply(this,t)},cvtArgs:ct,bndArgs:ft,ctxPrm:dt},o=u.topView=new gt,e){if(e.fn.render=$t,s=e.expando,e.observable){if(C!==(C=e.views.jsviews))throw"jquery.observable.js requires jsrender.js "+C;at(u,e.views.sub),a.map=e.views.map}}else e={jsrender:C},n&&(t.jsrender=e),e.renderFile=e.__express=e.compile=function(){throw"Node.js: use npm jsrender, or jsrender-node.js"},u._jq=function(t){t!==e&&(at(t,e),(e=t).fn.render=$t,delete e.jsrender,s=e.expando)};for(w in(f=u.settings).allowCode=!1,e.render=z,e.views=a,e.templates=l=a.templates,f)xt(w);(h.debugMode=function(t){return void 0===t?f.debugMode:(f._clFns&&f._clFns(),f.debugMode=t,f.onError=typeof t===B?function(){return t}:j(t)?t:void 0,h)})(!1),g=f.advanced={cache:!0,useViews:!1,_jsv:!1},c({if:{render:function(t){var e=this,n=e.tagCtx;return e.rendering.done||!t&&(n.args.length||!n.index)?"":(e.rendering.done=!0,void(e.selected=n.index))},contentCtx:!0,flow:!0},for:{sortDataMap:bt(Mt),init:function(t,e){this.setDataMap(this.tagCtxs)},render:function(t){var e,n,r,i,o,a=this,s=a.tagCtx,l=!1===s.argDefault,p=s.props,d=l||s.args.length,c="",u=0;if(!a.rendering.done){if(e=d?t:s.view.data,l)for(l=p.reverse?"unshift":"push",i=+p.end,o=+p.step||1,e=[],r=+p.start||0;(i-r)*o>0;r+=o)e[l](r);void 0!==e&&(n=T(e),c+=s.render(e,!d||p.noIteration),u+=n?e.length:1),(a.rendering.done=u)&&(a.selected=s.index)}return c},setDataMap:function(t){for(var e,n,r,i=t.length;i--;)n=(e=t[i]).props,r=e.params.props,e.argDefault=void 0===n.end||e.args.length>0,n.dataMap=!1!==e.argDefault&&T(e.args[0])&&(r.sort||r.start||r.end||r.step||r.filter||r.reverse||n.sort||n.start||n.end||n.step||n.filter||n.reverse)&&this.sortDataMap},flow:!0},props:{baseTag:"for",dataMap:bt(function(t,n){var r,i,o=n.map,a=o&&o.propsArr;if(!a){if(a=[],typeof t===L||j(t))for(r in t)i=t[r],r===s||!t.hasOwnProperty(r)||n.props.noFunctions&&e.isFunction(i)||a.push({key:r,prop:i});o&&(o.propsArr=o.options&&a)}return Mt(a,n)}),init:it,flow:!0},include:{flow:!0},"*":{render:rt,flow:!0},":*":{render:rt,flow:!0},dbg:d.dbg=p.dbg=function(t){try{throw console.log("JsRender dbg breakpoint: "+t),"dbg breakpoint"}catch(t){}return this.base?this.baseApply(arguments):t}}),p({html:Ot,attr:Ot,encode:function(t){return typeof t===B?t.replace(I,Vt):t},unencode:function(t){return typeof t===B?t.replace(S,Et):t},url:function(t){return null!=t?encodeURI(""+t):null===t?t:""}})}return f=u.settings,h.delimiters("{{","}}","^"),X&&G.views.sub._jq(e),e||G},window);
\ No newline at end of file