From d0466535263a46bf3b814b900297e837cffc9943 Mon Sep 17 00:00:00 2001 From: BorisMoore Date: Tue, 28 Nov 2017 17:01:23 -0800 Subject: [PATCH] Commit 90 (v0.9.90 - Beta) Sync with changes in v0.9.90 for JsViews Minor bug fixes, including: - Fix for syntax error bug for debugMode(true) with {{else}} blocks https://github.com/BorisMoore/jsviews/issues/395 - Fix for bug in advanced nested $.render() call scenarios (when useViews advanced setting is false): https://github.com/BorisMoore/jsrender/issues/333 Minor change for custom tags: - If a tag has no args, and argDefault is not set to false, then the tagCtx.args[] will be [#data] (where #data is the current data context). Note that the render() method will receive the current data as parameter. (See https://www.jsviews.com/#tagsapi@argdefault) Unit tests: - Some additional unit tests --- jsrender-node.js | 195 +- jsrender.js | 195 +- jsrender.min.js | 4 +- jsrender.min.js.map | 2 +- package-lock.json | 3411 ----------------- package.json | 2 +- test/browserify/bundles/1-bundle.js | 197 +- test/browserify/bundles/12-nested-bundle.js | 197 +- test/browserify/bundles/2-bundle.js | 197 +- test/browserify/bundles/3-bundle.js | 197 +- .../bundles/htm-jsrender-tmpl-bundle.js | 195 +- .../bundles/html-jsr-tmpl-bundle.js | 195 +- test/unit-tests/tests-jsrender-no-jquery.js | 42 +- 13 files changed, 897 insertions(+), 4132 deletions(-) delete mode 100644 package-lock.json diff --git a/jsrender-node.js b/jsrender-node.js index c6a0669..bc56d09 100644 --- a/jsrender-node.js +++ b/jsrender-node.js @@ -1,4 +1,4 @@ -/*! JsRender v0.9.89 (Beta): http://jsviews.com/#jsrender */ +/*! JsRender v0.9.90 (Beta): http://jsviews.com/#jsrender */ /*! **VERSION FOR NODE.JS** (For WEB see http://jsviews.com/download/jsrender.js) */ /* * Best-of-breed templating in browser or on Node.js. @@ -19,7 +19,7 @@ if (typeof exports !== 'object' ) { //========================== Top-level vars ========================== -var versionNumber = "v0.9.89", +var versionNumber = "v0.9.90", // global var is the this object, which is window when running in the usual browser environment @@ -167,9 +167,11 @@ function getMethod(baseMethod, method) { } function tagHandlersFromProps(tag, tagCtx) { - for (var prop in tagCtx.props) { + var prop, + props = tagCtx.props; + for (prop in props) { if (rHasHandlers.test(prop) && !(tag[prop] && tag[prop].fix)) { // Don't override handlers with fix expando (used in datepicker and spinner) - tag[prop] = getMethod(tag.constructor.prototype[prop], tagCtx.props[prop]); + tag[prop] = prop !== "convert" ? getMethod(tag.constructor.prototype[prop], props[prop]) : props[prop]; // Copy over the onFoo props, convert and convertBack from tagCtx.props to tag (overrides values in tagDef). // Note: unsupported scenario: if handlers are dynamically added ^onFoo=expression this will work, but dynamically removing will not work. } @@ -341,9 +343,9 @@ function contextParameter(key, value, isContextCb) { // Not a contextual parameter if (store !== $helpers) { // Set storeView to tag (if this is a tag.ctxPrm() call) or to root view ("data" view of linked template) - storeView = storeView.views // Is a view, not a tag? - ? (storeView = storeView.scope || storeView, !storeView.isTop && storeView.ctx.tag || storeView) - : storeView.ctx.tag; + storeView = storeView.tagCtx + ? storeView // Is a tag, not a view + : (storeView = storeView.scope || storeView, !storeView.isTop && storeView.ctx.tag || storeView); store = storeView._ocps; res = store && store[key] || res; } @@ -364,7 +366,7 @@ function contextParameter(key, value, isContextCb) { } res = res[1] // linkFn for compiled expression ? obsCtxPrm.tag && obsCtxPrm.tag.cvtArgs - ? obsCtxPrm.tag.cvtArgs(undefined, 1, obsCtxPrm.tagElse)[obsCtxPrm.ind] // = tag.bndArgs() - for tag contextual parameter + ? obsCtxPrm.tag.cvtArgs(true, obsCtxPrm.tagElse)[obsCtxPrm.ind] // = tag.bndArgs() - for tag contextual parameter : res[1](res[0].data, res[0], $sub) // = fn(data, view, $sub) for compiled binding expression : res[0]._ocp; // Observable contextual parameter (uninitialized, or initialized as static expression, so no path dependencies) } @@ -394,6 +396,7 @@ function getTemplate(tmpl) { //============== function convertVal(converter, view, tagCtx, onError) { + // Called from compiled template code for {{:}} // self is template object or linkCtx object var tag, value, argsLen, bindTo, // If tagCtx is an integer, then it is the key for the compiled function to return the boundTag tagCtx @@ -421,7 +424,7 @@ function convertVal(converter, view, tagCtx, onError) { }, inline: !linkCtx, tagName: ":", - cvt: converter, + convert: converter, flow: true, tagCtx: tagCtx }); @@ -443,7 +446,7 @@ function convertVal(converter, view, tagCtx, onError) { tag.ctx = tagCtx.ctx || tag.ctx || {}; tagCtx.ctx = undefined; - value = tag.cvtArgs(converter !== "true" && converter)[0]; // If there is a convertBack but no convert, converter will be "true" + value = tag.cvtArgs()[0]; // If there is a convertBack but no convert, converter will be "true" } // Call onRender (used by JsViews if present, to add binding annotations around rendered content) @@ -453,8 +456,8 @@ function convertVal(converter, view, tagCtx, onError) { return value != undefined ? value : ""; } -function convertArgs(converter, bound, tagElse) { // tag.cvtArgs() - var l, key, boundArgs, args, bindTo, tag, +function convertArgs(bound, tagElse) { // tag.cvtArgs() + var l, key, boundArgs, args, bindTo, tag, converter, tagCtx = this; if (tagCtx.tagName) { @@ -462,35 +465,35 @@ function convertArgs(converter, bound, tagElse) { // tag.cvtArgs() tagCtx = tag.tagCtxs ? tag.tagCtxs[tagElse || 0] : tag.tagCtx; } else { tag = tagCtx.tag; - tagElse = tagCtx.index; } bindTo = tag.bindTo; args = tagCtx.args; - converter = converter || tag.convert; - if ("" + converter === converter) { - converter = tagCtx.view.getRsc("converters", converter) || error("Unknown converter: '" + converter + "'"); + if ((converter = tag.convert) && "" + converter === converter) { + converter = converter === "true" + ? undefined + : (tagCtx.view.getRsc("converters", converter) || error("Unknown converter: '" + converter + "'")); } - if (!args.length && tag.argDefault !== false && !tagCtx.index) { - args = [tagCtx.view.data]; // Missing first arg defaults to the current data context - } else if (converter && !bound) { // If there is a converter, use a copy of the tagCtx.args array for rendering, and replace the args[0] in - args = args.slice(); // the copied array with the converted value. But we do not modify the value of tag.tagCtx.args[0] (the original args array) - } - - if (bindTo) { // Get the values of the boundArgs - boundArgs = []; - l = bindTo.length; - while (l--) { - key = bindTo[l]; - boundArgs.unshift(argOrProp(tagCtx, key)); + if (bound && bound.length) { + args = bound; + } else { + if (converter && !bound) { // If there is a converter, use a copy of the tagCtx.args array for rendering, and replace the args[0] in + args = args.slice(); // the copied array with the converted value. But we do not modify the value of tag.tagCtx.args[0] (the original args array) } - if (bound) { - args = boundArgs; // Call to convertBoundArgs() - returns the boundArgs + if (bindTo) { // Get the values of the boundArgs + boundArgs = []; + l = bindTo.length; + while (l--) { + key = bindTo[l]; + boundArgs.unshift(argOrProp(tagCtx, key)); + } + if (bound) { + args = boundArgs; // Call to convertBoundArgs() - returns the boundArgs + } } } - if (converter) { bindTo = bindTo || [0]; l = bindTo.length; @@ -520,7 +523,7 @@ function argOrProp(context, key) { } function convertBoundArgs(tagElse) { // tag.bndArgs() - return this.cvtArgs(undefined, true, tagElse); + return this.cvtArgs(true, tagElse); } //============= @@ -530,18 +533,31 @@ function convertBoundArgs(tagElse) { // tag.bndArgs() function getResource(resourceType, itemName) { var res, store, view = this; - while ((res === undefined) && view) { - store = view.tmpl && view.tmpl[resourceType]; - res = store && store[itemName]; - view = view.parent; + if ("" + itemName === itemName) { + while ((res === undefined) && view) { + store = view.tmpl && view.tmpl[resourceType]; + res = store && store[itemName]; + view = view.parent; + } + return res || $views[resourceType][itemName]; } - return res || $views[resourceType][itemName]; } function renderTag(tagName, parentView, tmpl, tagCtxs, isUpdate, onError) { + function makeArray(type) { + var linkedElement; + if (linkedElement = tag[type]) { + tag[type] = linkedElement = $isArray(linkedElement) ? linkedElement: [linkedElement]; + + if (bindToLength !== linkedElement.length) { + error(type + " length not same as bindTo "); + } + } + } + parentView = parentView || topView; var tag, tag_, tagDef, template, tags, attr, parentTag, l, m, n, itemRet, tagCtx, tagCtxCtx, ctxPrm, bindTo, - content, callInit, mapDef, thisMap, args, props, tagDataMap, contentCtx, key, + content, callInit, mapDef, thisMap, args, props, tagDataMap, contentCtx, key, bindToLength, i = 0, ret = "", linkCtx = parentView.linkCtx || 0, @@ -559,13 +575,14 @@ function renderTag(tagName, parentView, tmpl, tagCtxs, isUpdate, onError) { tagDef = parentView.getRsc("tags", tagName) || error("Unknown tag: {{" + tagName + "}} "); template = tagDef.template; } - - if (onError === undefined && boundTag && boundTag._lr) { - onError = ""; + if (onError === undefined && boundTag) { + if (boundTag._lr = (tagDef.lateRender || boundTag._lr) && boundTag._lr !== "false") { + onError = ""; // If lateRender, set temporary onError, to skip initial rendering (and render just "") + } } if (onError !== undefined) { ret += onError; - tagCtxs = onError = [{props: {}, args: []}]; + tagCtxs = onError = [{props: {}, args: [], params: {}}]; } else if (boundTag) { tagCtxs = boundTag(parentView.data, parentView, $sub); } @@ -588,6 +605,7 @@ function renderTag(tagName, parentView, tmpl, tagCtxs, isUpdate, onError) { if (tmpl = tagCtx.props.tmpl) { // If the tmpl property is overridden, set the value (when initializing, or, in case of binding: ^tmpl=..., when updating) tagCtx.tmpl = parentView.getTmpl(tmpl); + tagCtx.content = tagCtx.content || tagCtx.tmpl; } if (!tag) { @@ -616,7 +634,6 @@ function renderTag(tagName, parentView, tmpl, tagCtxs, isUpdate, onError) { //TODO better perf for childTags() - keep child tag.tags array, (and remove child, when disposed) // tag.tags = []; } - bindTo = tag.bindTo || [0]; tagCtxs = tag.tagCtxs; tagDataMap = tag.dataMap; @@ -649,6 +666,32 @@ function renderTag(tagName, parentView, tmpl, tagCtxs, isUpdate, onError) { tag.init(tagCtx, linkCtx, tag.ctx); callInit = undefined; } + if (!tagCtx.args.length && tag.argDefault !== false) { + tagCtx.args = args = [tagCtx.view.data]; // Missing first arg defaults to the current data context + tagCtx.params.args = ["#data"]; + } + + bindTo = tag.bindTo; + + if (bindTo !== undefined) { + bindTo = tag.bindTo = $isArray(bindTo) ? bindTo : [bindTo]; + m = bindTo.length; + while (m--) { + key = bindTo[m]; + if (!isNaN(parseInt(key))) { + key = parseInt(key); // Convert "0" to 0, etc. + } + bindTo[m] = key; + } + } + + bindTo = tag.bindTo || [0]; + bindToLength = bindTo.length; + if (tag._.bnd){ + makeArray("linkedElement"); + makeArray("linkedCtxParam"); + } + if (linkCtx) { // Set attr on linkCtx to ensure outputting to the correct target attribute. // Setting either linkCtx.attr or this.attr in the init() allows per-instance choice of target attrib. @@ -657,9 +700,9 @@ function renderTag(tagName, parentView, tmpl, tagCtxs, isUpdate, onError) { attr = tag.attr; tag._.noVws = attr && attr !== HTML; } - args = tag.cvtArgs(undefined, undefined, i); + args = tag.cvtArgs(undefined, i); if (tag.linkedCtxParam) { - m = bindTo.length; + m = bindToLength; while (m--) { if (ctxPrm = tag.linkedCtxParam[m]) { key = bindTo[m]; @@ -824,16 +867,6 @@ function compileTag(name, tagDef, parentTmpl) { tag.tagName = name; } - function makeArray(type) { - var linkedElement; - if (linkedElement = tagDef[type]) { - tagDef[type] = linkedElement = $isArray(linkedElement) ? linkedElement: [linkedElement]; - if ((bindToLength || 1) !== linkedElement.length) { - error(type + " length not same as bindTo "); - } - } - } - if ($isFunction(tagDef)) { // Simple tag declared as function. No presenter instantation. tagDef = { @@ -844,21 +877,6 @@ function compileTag(name, tagDef, parentTmpl) { tagDef = {template: tagDef}; } - if (bindTo !== undefined) { - bindTo = tagDef.bindTo = $isArray(bindTo) ? bindTo : [bindTo]; - l = bindToLength = bindTo.length; - while (l--) { - key = bindTo[l]; - if (!isNaN(parseInt(key))) { - key = parseInt(key); // Convert "0" to 0, etc. - } - bindTo[l] = key; - } - } - - makeArray("linkedElement"); - makeArray("linkedCtxParam"); - if (baseTag = tagDef.baseTag) { tagDef.flow = !!tagDef.flow; // Set flow property, so defaults to false even if baseTag has flow=true tagDef.baseTag = baseTag = "" + baseTag === baseTag @@ -1300,16 +1318,15 @@ function registerStore(storeName, storeSettings) { } } else { if (compile) { - item = compile.call(thisStore, name, item, parentTmpl, 0); + item = compile.call(thisStore, name, item, parentTmpl, 0) || {}; item._is = storeName; // Only do this for compiled objects (tags, templates...) } - // e.g. JsViews integration - if (name) { thisStore[name] = item; } } if (onStore) { + // e.g. JsViews integration onStore(name, item, parentTmpl, compile); } return item; @@ -1387,12 +1404,9 @@ function renderContent(data, context, noIteration, parentView, key, onRender) { view = data; // When passing in a view to render or link (and not passing in a parent view) use the passed-in view as parentView } - if (view) { - if (data === view) { - // Inherit the data from the parent view. - // This may be the contents of an {{if}} block - data = view.data; - } + if (view && data === view) { + // Inherit the data from the parent view. + data = view.data; } isTopRenderCall = !view; @@ -1409,6 +1423,7 @@ function renderContent(data, context, noIteration, parentView, key, onRender) { view.index = indexStr; } else { view = topView; + prevData = view.data; view.data = data; view.ctx = context; } @@ -1700,7 +1715,7 @@ function tmplFn(markup, tmpl, isLinkExpr, convertBack, hasElse) { useTrigger += keyValue; } if (keyToken === "lateRender") { - late = 1; // Render after first pass + late = param; // Render after first pass } props += key + keyValue + ","; paramsProps += key + "'" + param + "',"; @@ -2062,7 +2077,6 @@ function buildCode(ast, tmpl, isLinkExpr) { tmpl.refs = tmpl.refs || {}; // Used by browserify to chain require() dependencies for tmpl="./some.file.html" tmpl.refs[prm.slice(8,-1)] = 1; } // END NODE.JS-SPECIFIC CODE - onError = node[5] || $subSettings.debugMode !== false && "undefined"; // If debugMode not false, set default onError handler on tag to "undefined" (see onRenderError) trigger = node[6]; lateRender = node[7]; markup = node[9] && node[9].replace(rUnescapeQuotes, "$1"); @@ -2070,9 +2084,12 @@ function buildCode(ast, tmpl, isLinkExpr) { if (pathBindings) { pathBindings.push(node[8]); } - } else if (tmplBindings && (pathBindings = node[8])) { // Array of paths, or false if not data-bound - pathBindings = [pathBindings]; - tmplBindingKey = tmplBindings.push(1); // Add placeholder in tmplBindings for compiled function + } else { + onError = node[5] || $subSettings.debugMode !== false && "undefined"; // If debugMode not false, set default onError handler on tag to "undefined" (see onRenderError) + if (tmplBindings && (pathBindings = node[8])) { // Array of paths, or false if not data-bound + pathBindings = [pathBindings]; + tmplBindingKey = tmplBindings.push(1); // Add placeholder in tmplBindings for compiled function + } } useViews = useViews || params[1] || params[2] || pathBindings || /view.(?!index)/.test(params[0]); // useViews is for perf optimization. For render() we only use views if necessary - for the more advanced scenarios. @@ -2170,7 +2187,7 @@ function buildCode(ast, tmpl, isLinkExpr) { pathBindings = 0; tagAndElses = 0; } - if (onError) { + if (onError && !nextIsElse) { useViews = true; code += ';\n}catch(e){ret' + (isLinkExpr ? "urn " : "+=") + boundOnErrStart + 'j._err(e,view,' + onError + ')' + boundOnErrEnd + ';}' + (isLinkExpr ? "" : 'ret=ret'); } @@ -2338,12 +2355,12 @@ $viewsSettings = $views.settings; tagCtx = self.tagCtx, ret = (self.rendering.done || !val && (arguments.length || !tagCtx.index)) ? "" - : (self.rendering.done = true, self.selected = tagCtx.index, - // Test is satisfied, so render content on current context. We call tagCtx.render() rather than return undefined - // (which would also render the tmpl/content on the current context but would iterate if it is an array) - tagCtx.render(tagCtx.view, true)); // no arg, so renders against parentView.data + : (self.rendering.done = true, + self.selected = tagCtx.index, + undefined); // Test is satisfied, so render content on current context return ret; }, + contentCtx: true, // Inherit parent view data context flow: true }, "for": { diff --git a/jsrender.js b/jsrender.js index 81ddfa9..9500ad3 100644 --- a/jsrender.js +++ b/jsrender.js @@ -1,4 +1,4 @@ -/*! JsRender v0.9.89 (Beta): http://jsviews.com/#jsrender */ +/*! JsRender v0.9.90 (Beta): http://jsviews.com/#jsrender */ /*! **VERSION FOR WEB** (For NODE.JS see http://jsviews.com/download/jsrender-node.js) */ /* * Best-of-breed templating in browser or on Node.js. @@ -44,7 +44,7 @@ var setGlobals = $ === false; // Only set globals if script block in browser (no $ = $ && $.fn ? $ : global.jQuery; // $ is jQuery passed in by CommonJS loader (Browserify), or global jQuery. -var versionNumber = "v0.9.89", +var versionNumber = "v0.9.90", jsvStoreName, rTag, rTmplString, topView, $views, $expando, _ocp = "_ocp", // Observable contextual parameter @@ -192,9 +192,11 @@ function getMethod(baseMethod, method) { } function tagHandlersFromProps(tag, tagCtx) { - for (var prop in tagCtx.props) { + var prop, + props = tagCtx.props; + for (prop in props) { if (rHasHandlers.test(prop) && !(tag[prop] && tag[prop].fix)) { // Don't override handlers with fix expando (used in datepicker and spinner) - tag[prop] = getMethod(tag.constructor.prototype[prop], tagCtx.props[prop]); + tag[prop] = prop !== "convert" ? getMethod(tag.constructor.prototype[prop], props[prop]) : props[prop]; // Copy over the onFoo props, convert and convertBack from tagCtx.props to tag (overrides values in tagDef). // Note: unsupported scenario: if handlers are dynamically added ^onFoo=expression this will work, but dynamically removing will not work. } @@ -366,9 +368,9 @@ function contextParameter(key, value, isContextCb) { // Not a contextual parameter if (store !== $helpers) { // Set storeView to tag (if this is a tag.ctxPrm() call) or to root view ("data" view of linked template) - storeView = storeView.views // Is a view, not a tag? - ? (storeView = storeView.scope || storeView, !storeView.isTop && storeView.ctx.tag || storeView) - : storeView.ctx.tag; + storeView = storeView.tagCtx + ? storeView // Is a tag, not a view + : (storeView = storeView.scope || storeView, !storeView.isTop && storeView.ctx.tag || storeView); store = storeView._ocps; res = store && store[key] || res; } @@ -389,7 +391,7 @@ function contextParameter(key, value, isContextCb) { } res = res[1] // linkFn for compiled expression ? obsCtxPrm.tag && obsCtxPrm.tag.cvtArgs - ? obsCtxPrm.tag.cvtArgs(undefined, 1, obsCtxPrm.tagElse)[obsCtxPrm.ind] // = tag.bndArgs() - for tag contextual parameter + ? obsCtxPrm.tag.cvtArgs(true, obsCtxPrm.tagElse)[obsCtxPrm.ind] // = tag.bndArgs() - for tag contextual parameter : res[1](res[0].data, res[0], $sub) // = fn(data, view, $sub) for compiled binding expression : res[0]._ocp; // Observable contextual parameter (uninitialized, or initialized as static expression, so no path dependencies) } @@ -419,6 +421,7 @@ function getTemplate(tmpl) { //============== function convertVal(converter, view, tagCtx, onError) { + // Called from compiled template code for {{:}} // self is template object or linkCtx object var tag, value, argsLen, bindTo, // If tagCtx is an integer, then it is the key for the compiled function to return the boundTag tagCtx @@ -446,7 +449,7 @@ function convertVal(converter, view, tagCtx, onError) { }, inline: !linkCtx, tagName: ":", - cvt: converter, + convert: converter, flow: true, tagCtx: tagCtx }); @@ -468,7 +471,7 @@ function convertVal(converter, view, tagCtx, onError) { tag.ctx = tagCtx.ctx || tag.ctx || {}; tagCtx.ctx = undefined; - value = tag.cvtArgs(converter !== "true" && converter)[0]; // If there is a convertBack but no convert, converter will be "true" + value = tag.cvtArgs()[0]; // If there is a convertBack but no convert, converter will be "true" } // Call onRender (used by JsViews if present, to add binding annotations around rendered content) @@ -478,8 +481,8 @@ function convertVal(converter, view, tagCtx, onError) { return value != undefined ? value : ""; } -function convertArgs(converter, bound, tagElse) { // tag.cvtArgs() - var l, key, boundArgs, args, bindTo, tag, +function convertArgs(bound, tagElse) { // tag.cvtArgs() + var l, key, boundArgs, args, bindTo, tag, converter, tagCtx = this; if (tagCtx.tagName) { @@ -487,35 +490,35 @@ function convertArgs(converter, bound, tagElse) { // tag.cvtArgs() tagCtx = tag.tagCtxs ? tag.tagCtxs[tagElse || 0] : tag.tagCtx; } else { tag = tagCtx.tag; - tagElse = tagCtx.index; } bindTo = tag.bindTo; args = tagCtx.args; - converter = converter || tag.convert; - if ("" + converter === converter) { - converter = tagCtx.view.getRsc("converters", converter) || error("Unknown converter: '" + converter + "'"); + if ((converter = tag.convert) && "" + converter === converter) { + converter = converter === "true" + ? undefined + : (tagCtx.view.getRsc("converters", converter) || error("Unknown converter: '" + converter + "'")); } - if (!args.length && tag.argDefault !== false && !tagCtx.index) { - args = [tagCtx.view.data]; // Missing first arg defaults to the current data context - } else if (converter && !bound) { // If there is a converter, use a copy of the tagCtx.args array for rendering, and replace the args[0] in - args = args.slice(); // the copied array with the converted value. But we do not modify the value of tag.tagCtx.args[0] (the original args array) - } - - if (bindTo) { // Get the values of the boundArgs - boundArgs = []; - l = bindTo.length; - while (l--) { - key = bindTo[l]; - boundArgs.unshift(argOrProp(tagCtx, key)); + if (bound && bound.length) { + args = bound; + } else { + if (converter && !bound) { // If there is a converter, use a copy of the tagCtx.args array for rendering, and replace the args[0] in + args = args.slice(); // the copied array with the converted value. But we do not modify the value of tag.tagCtx.args[0] (the original args array) } - if (bound) { - args = boundArgs; // Call to convertBoundArgs() - returns the boundArgs + if (bindTo) { // Get the values of the boundArgs + boundArgs = []; + l = bindTo.length; + while (l--) { + key = bindTo[l]; + boundArgs.unshift(argOrProp(tagCtx, key)); + } + if (bound) { + args = boundArgs; // Call to convertBoundArgs() - returns the boundArgs + } } } - if (converter) { bindTo = bindTo || [0]; l = bindTo.length; @@ -545,7 +548,7 @@ function argOrProp(context, key) { } function convertBoundArgs(tagElse) { // tag.bndArgs() - return this.cvtArgs(undefined, true, tagElse); + return this.cvtArgs(true, tagElse); } //============= @@ -555,18 +558,31 @@ function convertBoundArgs(tagElse) { // tag.bndArgs() function getResource(resourceType, itemName) { var res, store, view = this; - while ((res === undefined) && view) { - store = view.tmpl && view.tmpl[resourceType]; - res = store && store[itemName]; - view = view.parent; + if ("" + itemName === itemName) { + while ((res === undefined) && view) { + store = view.tmpl && view.tmpl[resourceType]; + res = store && store[itemName]; + view = view.parent; + } + return res || $views[resourceType][itemName]; } - return res || $views[resourceType][itemName]; } function renderTag(tagName, parentView, tmpl, tagCtxs, isUpdate, onError) { + function makeArray(type) { + var linkedElement; + if (linkedElement = tag[type]) { + tag[type] = linkedElement = $isArray(linkedElement) ? linkedElement: [linkedElement]; + + if (bindToLength !== linkedElement.length) { + error(type + " length not same as bindTo "); + } + } + } + parentView = parentView || topView; var tag, tag_, tagDef, template, tags, attr, parentTag, l, m, n, itemRet, tagCtx, tagCtxCtx, ctxPrm, bindTo, - content, callInit, mapDef, thisMap, args, props, tagDataMap, contentCtx, key, + content, callInit, mapDef, thisMap, args, props, tagDataMap, contentCtx, key, bindToLength, i = 0, ret = "", linkCtx = parentView.linkCtx || 0, @@ -584,13 +600,14 @@ function renderTag(tagName, parentView, tmpl, tagCtxs, isUpdate, onError) { tagDef = parentView.getRsc("tags", tagName) || error("Unknown tag: {{" + tagName + "}} "); template = tagDef.template; } - - if (onError === undefined && boundTag && boundTag._lr) { - onError = ""; + if (onError === undefined && boundTag) { + if (boundTag._lr = (tagDef.lateRender || boundTag._lr) && boundTag._lr !== "false") { + onError = ""; // If lateRender, set temporary onError, to skip initial rendering (and render just "") + } } if (onError !== undefined) { ret += onError; - tagCtxs = onError = [{props: {}, args: []}]; + tagCtxs = onError = [{props: {}, args: [], params: {}}]; } else if (boundTag) { tagCtxs = boundTag(parentView.data, parentView, $sub); } @@ -613,6 +630,7 @@ function renderTag(tagName, parentView, tmpl, tagCtxs, isUpdate, onError) { if (tmpl = tagCtx.props.tmpl) { // If the tmpl property is overridden, set the value (when initializing, or, in case of binding: ^tmpl=..., when updating) tagCtx.tmpl = parentView.getTmpl(tmpl); + tagCtx.content = tagCtx.content || tagCtx.tmpl; } if (!tag) { @@ -641,7 +659,6 @@ function renderTag(tagName, parentView, tmpl, tagCtxs, isUpdate, onError) { //TODO better perf for childTags() - keep child tag.tags array, (and remove child, when disposed) // tag.tags = []; } - bindTo = tag.bindTo || [0]; tagCtxs = tag.tagCtxs; tagDataMap = tag.dataMap; @@ -674,6 +691,32 @@ function renderTag(tagName, parentView, tmpl, tagCtxs, isUpdate, onError) { tag.init(tagCtx, linkCtx, tag.ctx); callInit = undefined; } + if (!tagCtx.args.length && tag.argDefault !== false) { + tagCtx.args = args = [tagCtx.view.data]; // Missing first arg defaults to the current data context + tagCtx.params.args = ["#data"]; + } + + bindTo = tag.bindTo; + + if (bindTo !== undefined) { + bindTo = tag.bindTo = $isArray(bindTo) ? bindTo : [bindTo]; + m = bindTo.length; + while (m--) { + key = bindTo[m]; + if (!isNaN(parseInt(key))) { + key = parseInt(key); // Convert "0" to 0, etc. + } + bindTo[m] = key; + } + } + + bindTo = tag.bindTo || [0]; + bindToLength = bindTo.length; + if (tag._.bnd){ + makeArray("linkedElement"); + makeArray("linkedCtxParam"); + } + if (linkCtx) { // Set attr on linkCtx to ensure outputting to the correct target attribute. // Setting either linkCtx.attr or this.attr in the init() allows per-instance choice of target attrib. @@ -682,9 +725,9 @@ function renderTag(tagName, parentView, tmpl, tagCtxs, isUpdate, onError) { attr = tag.attr; tag._.noVws = attr && attr !== HTML; } - args = tag.cvtArgs(undefined, undefined, i); + args = tag.cvtArgs(undefined, i); if (tag.linkedCtxParam) { - m = bindTo.length; + m = bindToLength; while (m--) { if (ctxPrm = tag.linkedCtxParam[m]) { key = bindTo[m]; @@ -849,16 +892,6 @@ function compileTag(name, tagDef, parentTmpl) { tag.tagName = name; } - function makeArray(type) { - var linkedElement; - if (linkedElement = tagDef[type]) { - tagDef[type] = linkedElement = $isArray(linkedElement) ? linkedElement: [linkedElement]; - if ((bindToLength || 1) !== linkedElement.length) { - error(type + " length not same as bindTo "); - } - } - } - if ($isFunction(tagDef)) { // Simple tag declared as function. No presenter instantation. tagDef = { @@ -869,21 +902,6 @@ function compileTag(name, tagDef, parentTmpl) { tagDef = {template: tagDef}; } - if (bindTo !== undefined) { - bindTo = tagDef.bindTo = $isArray(bindTo) ? bindTo : [bindTo]; - l = bindToLength = bindTo.length; - while (l--) { - key = bindTo[l]; - if (!isNaN(parseInt(key))) { - key = parseInt(key); // Convert "0" to 0, etc. - } - bindTo[l] = key; - } - } - - makeArray("linkedElement"); - makeArray("linkedCtxParam"); - if (baseTag = tagDef.baseTag) { tagDef.flow = !!tagDef.flow; // Set flow property, so defaults to false even if baseTag has flow=true tagDef.baseTag = baseTag = "" + baseTag === baseTag @@ -1350,16 +1368,15 @@ function registerStore(storeName, storeSettings) { } } else { if (compile) { - item = compile.call(thisStore, name, item, parentTmpl, 0); + item = compile.call(thisStore, name, item, parentTmpl, 0) || {}; item._is = storeName; // Only do this for compiled objects (tags, templates...) } - // e.g. JsViews integration - if (name) { thisStore[name] = item; } } if (onStore) { + // e.g. JsViews integration onStore(name, item, parentTmpl, compile); } return item; @@ -1437,12 +1454,9 @@ function renderContent(data, context, noIteration, parentView, key, onRender) { view = data; // When passing in a view to render or link (and not passing in a parent view) use the passed-in view as parentView } - if (view) { - if (data === view) { - // Inherit the data from the parent view. - // This may be the contents of an {{if}} block - data = view.data; - } + if (view && data === view) { + // Inherit the data from the parent view. + data = view.data; } isTopRenderCall = !view; @@ -1459,6 +1473,7 @@ function renderContent(data, context, noIteration, parentView, key, onRender) { view.index = indexStr; } else { view = topView; + prevData = view.data; view.data = data; view.ctx = context; } @@ -1750,7 +1765,7 @@ function tmplFn(markup, tmpl, isLinkExpr, convertBack, hasElse) { useTrigger += keyValue; } if (keyToken === "lateRender") { - late = 1; // Render after first pass + late = param; // Render after first pass } props += key + keyValue + ","; paramsProps += key + "'" + param + "',"; @@ -2106,7 +2121,6 @@ function buildCode(ast, tmpl, isLinkExpr) { converter = node[1]; content = !isLinkExpr && node[2]; tagCtx = paramStructure(node[3], 'params') + '},' + paramStructure(params = node[4]); - onError = node[5] || $subSettings.debugMode !== false && "undefined"; // If debugMode not false, set default onError handler on tag to "undefined" (see onRenderError) trigger = node[6]; lateRender = node[7]; markup = node[9] && node[9].replace(rUnescapeQuotes, "$1"); @@ -2114,9 +2128,12 @@ function buildCode(ast, tmpl, isLinkExpr) { if (pathBindings) { pathBindings.push(node[8]); } - } else if (tmplBindings && (pathBindings = node[8])) { // Array of paths, or false if not data-bound - pathBindings = [pathBindings]; - tmplBindingKey = tmplBindings.push(1); // Add placeholder in tmplBindings for compiled function + } else { + onError = node[5] || $subSettings.debugMode !== false && "undefined"; // If debugMode not false, set default onError handler on tag to "undefined" (see onRenderError) + if (tmplBindings && (pathBindings = node[8])) { // Array of paths, or false if not data-bound + pathBindings = [pathBindings]; + tmplBindingKey = tmplBindings.push(1); // Add placeholder in tmplBindings for compiled function + } } useViews = useViews || params[1] || params[2] || pathBindings || /view.(?!index)/.test(params[0]); // useViews is for perf optimization. For render() we only use views if necessary - for the more advanced scenarios. @@ -2214,7 +2231,7 @@ function buildCode(ast, tmpl, isLinkExpr) { pathBindings = 0; tagAndElses = 0; } - if (onError) { + if (onError && !nextIsElse) { useViews = true; code += ';\n}catch(e){ret' + (isLinkExpr ? "urn " : "+=") + boundOnErrStart + 'j._err(e,view,' + onError + ')' + boundOnErrEnd + ';}' + (isLinkExpr ? "" : 'ret=ret'); } @@ -2411,12 +2428,12 @@ if (!(jsr || $ && $.render)) { tagCtx = self.tagCtx, ret = (self.rendering.done || !val && (arguments.length || !tagCtx.index)) ? "" - : (self.rendering.done = true, self.selected = tagCtx.index, - // Test is satisfied, so render content on current context. We call tagCtx.render() rather than return undefined - // (which would also render the tmpl/content on the current context but would iterate if it is an array) - tagCtx.render(tagCtx.view, true)); // no arg, so renders against parentView.data + : (self.rendering.done = true, + self.selected = tagCtx.index, + undefined); // Test is satisfied, so render content on current context return ret; }, + contentCtx: true, // Inherit parent view data context flow: true }, "for": { diff --git a/jsrender.min.js b/jsrender.min.js index 14dae64..1c0437c 100644 --- a/jsrender.min.js +++ b/jsrender.min.js @@ -1,4 +1,4 @@ -/*! JsRender v0.9.89 (Beta): http://jsviews.com/#jsrender */ +/*! JsRender v0.9.90 (Beta): http://jsviews.com/#jsrender */ /*! **VERSION FOR WEB** (For NODE.JS see http://jsviews.com/download/jsrender-node.js) */ -!function(e,t){var n=t.jQuery;"object"==typeof exports?module.exports=n?e(t,n):function(n){if(n&&!n.fn)throw"Provide jQuery or null";return e(t,n)}:"function"==typeof define&&define.amd?define(function(){return e(t)}):e(t,!1)}(function(e,t){"use strict";function n(e,t){return function(){var n,r=this,i=r.base;return r.base=e,n=t.apply(r,arguments),r.base=i,n}}function r(e,t){return ne(t)&&(t=n(e?e._d?e:n(a,e):a,t),t._d=1),t}function i(e,t){for(var n in t.props)!Ee.test(n)||e[n]&&e[n].fix||(e[n]=r(e.constructor.prototype[n],t.props[n]))}function o(e){return e}function a(){return""}function s(e){try{throw console.log("JsRender dbg breakpoint: "+e),"dbg breakpoint"}catch(t){}return this.base?this.baseApply(arguments):e}function d(e){this.name=(t.link?"JsViews":"JsRender")+" Error",this.message=e||this.name}function l(e,t){if(e){for(var n in t)e[n]=t[n];return e}}function u(e,t,n){return e?re(e)?u.apply(ee,e):(le.delimiters=[e,t,he=n?n.charAt(0):he],ce=e.charAt(0),fe=e.charAt(1),ge=t.charAt(0),ve=t.charAt(1),e="\\"+ce+"(\\"+he+")?\\"+fe,t="\\"+ge+"\\"+ve,X="(?:(\\w+(?=[\\/\\s\\"+ge+"]))|(\\w+)?(:)|(>)|(\\*))\\s*((?:[^\\"+ge+"]|\\"+ge+"(?!\\"+ve+"))*?)",de.rTag="(?:"+X+")",X=new RegExp("(?:"+e+X+"(\\/)?|\\"+ce+"(\\"+he+")?\\"+fe+"(?:(?:\\/(\\w+))\\s*|!--[\\s\\S]*?--))"+t,"g"),de.rTmpl=new RegExp("^\\s|\\s$|<.*>|([^\\\\]|^)[{}]|"+e+".*"+t),pe):le.delimiters}function p(e,t){t||e===!0||(t=e,e=void 0);var n,r,i,o,a=this,s=!t||"root"===t;if(e){if(o=t&&a.type===t&&a,!o)if(n=a.views,a._.useKey){for(r in n)if(o=t?n[r].get(e,t):n[r])break}else for(r=0,i=n.length;!o&&r1)for(d=o.bindTo=[];s--;)d.unshift(s);p&&(p.tag=o,o.linkCtx=p),n.ctx=Q(n.ctx,(p?p.view:t).ctx),i(o,n)}o._er=r&&a,o.ctx=n.ctx||o.ctx||{},n.ctx=void 0,a=o.cvtArgs("true"!==e&&e)[0]}return a=u&&t._.onRender?t._.onRender(a,t,o):a,void 0!=a?a:""}function m(e,t,n){var r,i,o,a,s,d,l=this;if(l.tagName?(d=l,l=d.tagCtxs?d.tagCtxs[n||0]:d.tagCtx):(d=l.tag,n=l.index),s=d.bindTo,a=l.args,e=e||d.convert,""+e===e&&(e=l.view.getRsc("converters",e)||I("Unknown converter: '"+e+"'")),a.length||d.argDefault===!1||l.index?e&&!t&&(a=a.slice()):a=[l.view.data],s){for(o=[],r=s.length;r--;)i=s[r],o.unshift(w(l,i));t&&(a=o)}if(e)if(s=s||[0],r=s.length,e=e.apply(d,o||a),re(e)&&e.length===r||(e=[e],s=[0],r=1),t)a=e;else for(;r--;)i=s[r],+i===i&&(a[i]=e[r]);return a}function w(e,t){return e=e[+t===t?"args":"props"],e&&e[t]}function x(e){return this.cvtArgs(void 0,!0,e)}function _(e,t){for(var n,r,i=this;void 0===n&&i;)r=i.tmpl&&i.tmpl[e],n=r&&r[t],i=i.parent;return n||ee[e][t]}function b(e,t,n,r,o,a){t=t||Y;var s,d,l,u,p,c,f,g,v,h,m,x,_,b,y,k,C,T,j,A,V,R,$=0,E="",M=t.linkCtx||0,N=t.ctx,P=n||t.tmpl,O="number"==typeof r&&t.tmpl.bnds[r-1];for("tag"===e._is?(s=e,e=s.tagName,r=s.tagCtxs,l=s.template):(d=t.getRsc("tags",e)||I("Unknown tag: {{"+e+"}} "),l=d.template),void 0===a&&O&&O._lr&&(a=""),void 0!==a?(E+=a,r=a=[{props:{},args:[]}]):O&&(r=O(t.data,t,de)),f=r.length;$0&&(a=n)){if(!a)if(/^\.\/[^\\:*?"<>]*$/.test(n))(s=ie[e=e||n])?n=s:a=document.getElementById(n);else if(t.fn&&!de.rTmpl.test(n))try{a=t(n,document)[0]}catch(d){}a&&(i?n=a.innerHTML:(o=a.getAttribute(Oe),o&&(o!==Ue?(n=ie[o],delete ie[o]):t.fn&&(n=t.data(a)[Ue])),o&&n||(e=e||(t.fn?Ue:n),n=j(e,a.innerHTML,r,i)),n.tmplName=e=e||o,e!==Ue&&(ie[e]=n),a.setAttribute(Oe,e),t.fn&&t.data(a,Ue,n))),a=void 0}else n.fn||(n=void 0);return n}var a,s,d=n=n||"";if(de._html=oe.html,0===i&&(i=void 0,d=o(d)),i=i||(n.markup?n:{}),i.tmplName=e,r&&(i._parentTmpl=r),!d&&n.markup&&(d=o(n.markup))&&d.fn&&(d=d.markup),void 0!==d)return d.fn||n.fn?d.fn&&(s=d):(n=$(d,i),U(d.replace(Te,"\\$&"),n)),s||(s=l(function(){return s.render.apply(s,arguments)},n),k(s)),s}function A(e,t){return ne(e)?e.call(t):e}function V(e){for(var t=[],n=0,r=e.length;nS-(I||0))){if(I=F.slice(I,S+r.length),q!==!0)if(J=o||p[g-1].bd,K=J[J.length-1],K&&K.prm){for(;K.sb&&K.sb.prm;)K=K.sb;B=K.sb={path:K.sb,bnd:K.bnd}}else J.push(B={path:J.pop()});E=fe+":"+I+" onerror=''"+ge,q=f[E],q||(f[E]=!0,f[E]=q=U(E,n,!0)),q!==!0&&B&&(B._cpfn=q,B.prm=u.bd,B.bnd=B.bnd||B.path&&B.path.indexOf("^")>=0)}return d?(d=!V,d?r:A+'"'):s?(s=!R,s?r:A+'"'):(w?(h[g]=S++,u=p[++g]={bd:[]},w):"")+(N?g?"":(c=F.slice(c,S),(i?(i=a=o=!1,"\b"):"\b,")+c+(c=S+r.length,l&&t.push(u.bd=[]),"\b")):k?(g&&O(e),l&&t.pop(),i=_,a=x,c=S+r.length,l&&(l=u.bd=t[i]=[],l.skp=!x),_+":"):_?_.split("^").join(".").replace(be,P)+(T?(u=p[++g]={bd:[]},v[g]=L,T):b):b?b:$?($=v[g]||$,v[g]=!1,u=p[--g],$+(T?(u=p[++g],v[g]=L,T):"")):j?(v[g]||O(e),","):m?"":(d=V,s=R,'"'))}O(e)}var i,o,a,s,d,l=t&&t[0],u={bd:l},p={0:u},c=0,f=(n?n.links:l&&(l.links=l.links||{}))||Y.tmpl.links,g=0,v={},h={},m=(e+(n?" ":"")).replace(ye,r);return!g&&m||O(e)}function L(e,t,n){var r,i,o,a,s,d,l,u,p,c,f,g,v,h,m,w,x,_,b,y,k,C,T,j,A,V,R,E,M,N,S,F=0,P=ue.useViews||t.useViews||t.tags||t.templates||t.helpers||t.converters,I="",U={},J=e.length;for(""+t===t?(_=n?'data-link="'+t.replace(ke," ").slice(1,-1)+'"':t,t=0):(_=t.tmplName||"unnamed",t.allowCode&&(U.allowCode=!0),t.debug&&(U.debug=!0),f=t.bnds,x=t.tmpls),r=0;r":a+o):(k&&(b=$(C,U),b.tmplName=_+"/"+o,b.useViews=b.useViews||P,L(k,b),P=b.useViews,x.push(b)),A||(y=o,P=P||o&&(!se[o]||!se[o].flow),j=I,I=""),T=e[r+1],T=T&&"else"===T[0]),M=E?";\ntry{\nret+=":"\n+",h="",m="",V&&(g||N||a&&a!==Pe||S)){if(R=new Function("data,view,j,u","// "+_+" "+ ++F+" "+o+"\nreturn {"+s+"};"),R._er=E,R._tag=o,R._bd=!!g,R._lr=S,n)return R;q(R,g),w='c("'+a+'",view,',c=!0,h=w+F+",",m=")"}if(I+=V?(n?(E?"try{\n":"")+"return ":M)+(c?(c=void 0,P=p=!0,w+(R?(f[F-1]=R,F):"{"+s+"}")+")"):">"===o?(l=!0,"h("+v[0]+")"):(u=!0,"((v="+v[0]+")!=null?v:"+(n?"null)":'"")'))):(d=!0,"\n{view:view,tmpl:"+(k?x.length:"0")+","+s+"},"),y&&!T){if(I="["+I.slice(0,-1)+"]",w='t("'+y+'",view,this,',n||g){if(I=new Function("data,view,j,u"," // "+_+" "+F+" "+y+"\nreturn "+I+";"),I._er=E,I._tag=y,g&&q(f[F-1]=I,g),I._lr=S,n)return I;h=w+F+",undefined,",m=")"}I=j+M+w+(I.deps&&F||I)+")",g=0,y=0}E&&(P=!0,I+=";\n}catch(e){ret"+(n?"urn ":"+=")+h+"j._err(e,view,"+E+")"+m+";}"+(n?"":"ret=ret"))}I="// "+_+"\nvar v"+(d?",t=j._tag":"")+(p?",c=j._cnvt":"")+(l?",h=j._html":"")+(n?";\n":',ret=""\n')+(U.debug?"debugger;":"")+I+(n?"\n":";\nreturn ret;");try{I=new Function("data,view,j,u",I)}catch(B){O("Compiled template code:\n\n"+I+'\n: "'+(B.message||B)+'"')}return t&&(t.fn=I,t.useViews=!!P),I}function Q(e,t){return e&&e!==t?t?l(l({},t),e):e:t&&l({},t)}function H(e){return Fe[e]||(Fe[e]="&#"+e.charCodeAt(0)+";")}function D(e){var t,n,r=[];if(typeof e===Ie)for(t in e)n=e[t],t!==te&&e.hasOwnProperty(t)&&!ne(n)&&r.push({key:t,prop:n});return r}function Z(e,n,r){var i=this.jquery&&(this[0]||I("Unknown template")),o=i.getAttribute(Oe);return S.call(o&&t.data(i)[Ue]||ie(i),e,n,r)}function z(e){return void 0!=e?$e.test(e)&&(""+e).replace(Ne,H)||e:""}var G=t===!1;t=t&&t.fn?t:e.jQuery;var W,X,Y,ee,te,ne,re,ie,oe,ae,se,de,le,ue,pe,ce,fe,ge,ve,he,me,we,xe="v0.9.89",_e="_ocp",be=/^(!*?)(?:null|true|false|\d[\d.]*|([\w$]+|\.|~([\w$]+)|#(view|([\w$]+))?)([\w$.^]*?)(?:[.[^]([\w$]+)\]?)?)$/g,ye=/(\()(?=\s*\()|(?:([([])\s*)?(?:(\^?)(!*?[#~]?[\w$.^]+)?\s*((\+\+|--)|\+|-|&&|\|\||===|!==|==|!=|<=|>=|[<>%*:?\/]|(=))\s*|(!*?[#~]?[\w$.^]+)([([])?)|(,\s*)|(\(?)\\?(?:(')|("))|(?:\s*(([)\]])(?=\s*[.^]|\s*$|[^([])|[)\]])([([]?))|(\s+)/g,ke=/[ \t]*(\r\n|\n|\r)/g,Ce=/\\(['"])/g,Te=/['"\\]/g,je=/(?:\x08|^)(onerror:)?(?:(~?)(([\w$_\.]+):)?([^\x08]+))\x08(,)?([^\x08]+)/gi,Ae=/^if\s/,Ve=/<(\w+)[>\s]/,Re=/[\x00`><"'&=]/g,$e=/[\x00`><\"'&=]/,Ee=/^on[A-Z]|^convert(Back)?$/,Me=/^\#\d+_`[\s\S]*\/\d+_`$/,Ne=Re,Se=0,Fe={"&":"&","<":"<",">":">","\0":"�","'":"'",'"':""","`":"`","=":"="},Pe="html",Ie="object",Oe="data-jsv-tmpl",Ue="jsvTmpl",qe="For #index in nested block use #getIndex().",Je={},Ke=e.jsrender,Be=Ke&&t&&!t.render,Le={template:{compile:j},tag:{compile:C},viewModel:{compile:R},helper:{},converter:{}};if(ee={jsviews:xe,sub:{View:y,Err:d,tmplFn:U,parse:B,extend:l,extendCtx:Q,syntaxErr:O,onStore:{template:function(e,t){null===t?delete Je[e]:Je[e]=t}},addSetting:M,settings:{allowCode:!1},advSet:a,_ths:i,_gm:r,_tg:function(){},_cnvt:h,_tag:b,_er:I,_err:P,_cp:o,_sq:function(e){return"constructor"===e&&O(""),e}},settings:{delimiters:u,advanced:function(e){return e?(l(ue,e),de.advSet(),pe):ue}},map:N},(d.prototype=new Error).constructor=d,c.depends=function(){return[this.get("item"),"index"]},f.depends="index",y.prototype={get:p,getIndex:f,getRsc:_,getTmpl:v,ctxPrm:g,_is:"view"},de=ee.sub,pe=ee.settings,!(Ke||t&&t.render)){for(W in Le)E(W,Le[W]);oe=ee.converters,ae=ee.helpers,se=ee.tags,de._tg.prototype={baseApply:T,cvtArgs:m,bndArgs:x,ctxPrm:g},Y=de.topView=new y,t?(t.fn.render=Z,te=t.expando,t.observable&&(l(de,t.views.sub),ee.map=t.views.map)):(t={},G&&(e.jsrender=t),t.renderFile=t.__express=t.compile=function(){throw"Node.js: use npm jsrender, or jsrender-node.js"},t.isFunction=function(e){return"function"==typeof e},t.isArray=Array.isArray||function(e){return"[object Array]"==={}.toString.call(e)},de._jq=function(e){e!==t&&(l(e,t),t=e,t.fn.render=Z,delete t.jsrender,te=t.expando)},t.jsrender=xe),le=de.settings,le.allowCode=!1,ne=t.isFunction,t.render=Je,t.views=ee,t.templates=ie=ee.templates;for(me in le)M(me);(pe.debugMode=function(e){return void 0===e?le.debugMode:(le.debugMode=e,le.onError=e+""===e?new Function("","return '"+e+"';"):ne(e)?e:void 0,pe)})(!1),ue=le.advanced={useViews:!1,_jsv:!1},se({"if":{render:function(e){var t=this,n=t.tagCtx,r=t.rendering.done||!e&&(arguments.length||!n.index)?"":(t.rendering.done=!0,t.selected=n.index,n.render(n.view,!0));return r},flow:!0},"for":{render:function(e){var t,n=!arguments.length,r=this,i=r.tagCtx,o="",a=0;return r.rendering.done||(t=n?i.view.data:e,void 0!==t&&(o+=i.render(t,n),a+=re(t)?t.length:1),(r.rendering.done=a)&&(r.selected=i.index)),o},flow:!0},props:{baseTag:"for",dataMap:N(D),flow:!0},include:{flow:!0},"*":{render:o,flow:!0},":*":{render:o,flow:!0},dbg:ae.dbg=oe.dbg=s}),oe({html:z,attr:z,url:function(e){return void 0!=e?encodeURI(""+e):null===e?e:""}})}return le=de.settings,re=(t||Ke).isArray,pe.delimiters("{{","}}","^"),Be&&Ke.views.sub._jq(t),t||Ke},window); +!function(e,t){var n=t.jQuery;"object"==typeof exports?module.exports=n?e(t,n):function(n){if(n&&!n.fn)throw"Provide jQuery or null";return e(t,n)}:"function"==typeof define&&define.amd?define(function(){return e(t)}):e(t,!1)}(function(e,t){"use strict";function n(e,t){return function(){var n,r=this,i=r.base;return r.base=e,n=t.apply(r,arguments),r.base=i,n}}function r(e,t){return ne(t)&&(t=n(e?e._d?e:n(a,e):a,t),t._d=1),t}function i(e,t){var n,i=t.props;for(n in i)!Ee.test(n)||e[n]&&e[n].fix||(e[n]="convert"!==n?r(e.constructor.prototype[n],i[n]):i[n])}function o(e){return e}function a(){return""}function s(e){try{throw console.log("JsRender dbg breakpoint: "+e),"dbg breakpoint"}catch(t){}return this.base?this.baseApply(arguments):e}function d(e){this.name=(t.link?"JsViews":"JsRender")+" Error",this.message=e||this.name}function l(e,t){if(e){for(var n in t)e[n]=t[n];return e}}function u(e,t,n){return e?re(e)?u.apply(ee,e):(le.delimiters=[e,t,he=n?n.charAt(0):he],ce=e.charAt(0),fe=e.charAt(1),ge=t.charAt(0),ve=t.charAt(1),e="\\"+ce+"(\\"+he+")?\\"+fe,t="\\"+ge+"\\"+ve,X="(?:(\\w+(?=[\\/\\s\\"+ge+"]))|(\\w+)?(:)|(>)|(\\*))\\s*((?:[^\\"+ge+"]|\\"+ge+"(?!\\"+ve+"))*?)",de.rTag="(?:"+X+")",X=new RegExp("(?:"+e+X+"(\\/)?|\\"+ce+"(\\"+he+")?\\"+fe+"(?:(?:\\/(\\w+))\\s*|!--[\\s\\S]*?--))"+t,"g"),de.rTmpl=new RegExp("^\\s|\\s$|<.*>|([^\\\\]|^)[{}]|"+e+".*"+t),pe):le.delimiters}function p(e,t){t||e===!0||(t=e,e=void 0);var n,r,i,o,a=this,s=!t||"root"===t;if(e){if(o=t&&a.type===t&&a,!o)if(n=a.views,a._.useKey){for(r in n)if(o=t?n[r].get(e,t):n[r])break}else for(r=0,i=n.length;!o&&r1)for(d=o.bindTo=[];s--;)d.unshift(s);p&&(p.tag=o,o.linkCtx=p),n.ctx=Q(n.ctx,(p?p.view:t).ctx),i(o,n)}o._er=r&&a,o.ctx=n.ctx||o.ctx||{},n.ctx=void 0,a=o.cvtArgs()[0]}return a=u&&t._.onRender?t._.onRender(a,t,o):a,void 0!=a?a:""}function m(e,t){var n,r,i,o,a,s,d,l=this;if(l.tagName?(s=l,l=s.tagCtxs?s.tagCtxs[t||0]:s.tagCtx):s=l.tag,a=s.bindTo,o=l.args,(d=s.convert)&&""+d===d&&(d="true"===d?void 0:l.view.getRsc("converters",d)||I("Unknown converter: '"+d+"'")),e&&e.length)o=e;else if(d&&!e&&(o=o.slice()),a){for(i=[],n=a.length;n--;)r=a[n],i.unshift(w(l,r));e&&(o=i)}if(d)if(a=a||[0],n=a.length,d=d.apply(s,i||o),re(d)&&d.length===n||(d=[d],a=[0],n=1),e)o=d;else for(;n--;)r=a[n],+r===r&&(o[r]=d[n]);return o}function w(e,t){return e=e[+t===t?"args":"props"],e&&e[t]}function x(e){return this.cvtArgs(!0,e)}function _(e,t){var n,r,i=this;if(""+t===t){for(;void 0===n&&i;)r=i.tmpl&&i.tmpl[e],n=r&&r[t],i=i.parent;return n||ee[e][t]}}function b(e,t,n,r,o,a){function s(e){var t;(t=d[e])&&(d[e]=t=re(t)?t:[t],E!==t.length&&I(e+" length not same as bindTo "))}t=t||Y;var d,l,u,p,c,f,g,v,h,m,x,_,b,y,k,C,T,j,A,R,V,$,E,M=0,N="",P=t.linkCtx||0,O=t.ctx,U=n||t.tmpl,q="number"==typeof r&&t.tmpl.bnds[r-1];for("tag"===e._is?(d=e,e=d.tagName,r=d.tagCtxs,u=d.template):(l=t.getRsc("tags",e)||I("Unknown tag: {{"+e+"}} "),u=l.template),void 0===a&&q&&(q._lr=(l.lateRender||q._lr)&&"false"!==q._lr)&&(a=""),void 0!==a?(N+=a,r=a=[{props:{},args:[],params:{}}]):q&&(r=q(t.data,t,de)),g=r.length;M0&&(a=n)){if(!a)if(/^\.\/[^\\:*?"<>]*$/.test(n))(s=ie[e=e||n])?n=s:a=document.getElementById(n);else if(t.fn&&!de.rTmpl.test(n))try{a=t(n,document)[0]}catch(d){}a&&(i?n=a.innerHTML:(o=a.getAttribute(Oe),o&&(o!==Ue?(n=ie[o],delete ie[o]):t.fn&&(n=t.data(a)[Ue])),o&&n||(e=e||(t.fn?Ue:n),n=j(e,a.innerHTML,r,i)),n.tmplName=e=e||o,e!==Ue&&(ie[e]=n),a.setAttribute(Oe,e),t.fn&&t.data(a,Ue,n))),a=void 0}else n.fn||(n=void 0);return n}var a,s,d=n=n||"";if(de._html=oe.html,0===i&&(i=void 0,d=o(d)),i=i||(n.markup?n:{}),i.tmplName=e,r&&(i._parentTmpl=r),!d&&n.markup&&(d=o(n.markup))&&d.fn&&(d=d.markup),void 0!==d)return d.fn||n.fn?d.fn&&(s=d):(n=$(d,i),U(d.replace(Te,"\\$&"),n)),s||(s=l(function(){return s.render.apply(s,arguments)},n),k(s)),s}function A(e,t){return ne(e)?e.call(t):e}function R(e){for(var t=[],n=0,r=e.length;nS-(I||0))){if(I=F.slice(I,S+r.length),q!==!0)if(J=o||p[g-1].bd,K=J[J.length-1],K&&K.prm){for(;K.sb&&K.sb.prm;)K=K.sb;B=K.sb={path:K.sb,bnd:K.bnd}}else J.push(B={path:J.pop()});E=fe+":"+I+" onerror=''"+ge,q=f[E],q||(f[E]=!0,f[E]=q=U(E,n,!0)),q!==!0&&B&&(B._cpfn=q,B.prm=u.bd,B.bnd=B.bnd||B.path&&B.path.indexOf("^")>=0)}return d?(d=!R,d?r:A+'"'):s?(s=!V,s?r:A+'"'):(w?(h[g]=S++,u=p[++g]={bd:[]},w):"")+(N?g?"":(c=F.slice(c,S),(i?(i=a=o=!1,"\b"):"\b,")+c+(c=S+r.length,l&&t.push(u.bd=[]),"\b")):k?(g&&O(e),l&&t.pop(),i=_,a=x,c=S+r.length,l&&(l=u.bd=t[i]=[],l.skp=!x),_+":"):_?_.split("^").join(".").replace(be,P)+(T?(u=p[++g]={bd:[]},v[g]=L,T):b):b?b:$?($=v[g]||$,v[g]=!1,u=p[--g],$+(T?(u=p[++g],v[g]=L,T):"")):j?(v[g]||O(e),","):m?"":(d=R,s=V,'"'))}O(e)}var i,o,a,s,d,l=t&&t[0],u={bd:l},p={0:u},c=0,f=(n?n.links:l&&(l.links=l.links||{}))||Y.tmpl.links,g=0,v={},h={},m=(e+(n?" ":"")).replace(ye,r);return!g&&m||O(e)}function L(e,t,n){var r,i,o,a,s,d,l,u,p,c,f,g,v,h,m,w,x,_,b,y,k,C,T,j,A,R,V,E,M,N,S,F=0,P=ue.useViews||t.useViews||t.tags||t.templates||t.helpers||t.converters,I="",U={},J=e.length;for(""+t===t?(_=n?'data-link="'+t.replace(ke," ").slice(1,-1)+'"':t,t=0):(_=t.tmplName||"unnamed",t.allowCode&&(U.allowCode=!0),t.debug&&(U.debug=!0),f=t.bnds,x=t.tmpls),r=0;r":a+o):(k&&(b=$(C,U),b.tmplName=_+"/"+o,b.useViews=b.useViews||P,L(k,b),P=b.useViews,x.push(b)),A||(y=o,P=P||o&&(!se[o]||!se[o].flow),j=I,I=""),T=e[r+1],T=T&&"else"===T[0]),M=E?";\ntry{\nret+=":"\n+",h="",m="",R&&(g||N||a&&a!==Pe||S)){if(V=new Function("data,view,j,u","// "+_+" "+ ++F+" "+o+"\nreturn {"+s+"};"),V._er=E,V._tag=o,V._bd=!!g,V._lr=S,n)return V;q(V,g),w='c("'+a+'",view,',c=!0,h=w+F+",",m=")"}if(I+=R?(n?(E?"try{\n":"")+"return ":M)+(c?(c=void 0,P=p=!0,w+(V?(f[F-1]=V,F):"{"+s+"}")+")"):">"===o?(l=!0,"h("+v[0]+")"):(u=!0,"((v="+v[0]+")!=null?v:"+(n?"null)":'"")'))):(d=!0,"\n{view:view,tmpl:"+(k?x.length:"0")+","+s+"},"),y&&!T){if(I="["+I.slice(0,-1)+"]",w='t("'+y+'",view,this,',n||g){if(I=new Function("data,view,j,u"," // "+_+" "+F+" "+y+"\nreturn "+I+";"),I._er=E,I._tag=y,g&&q(f[F-1]=I,g),I._lr=S,n)return I;h=w+F+",undefined,",m=")"}I=j+M+w+(I.deps&&F||I)+")",g=0,y=0}E&&!T&&(P=!0,I+=";\n}catch(e){ret"+(n?"urn ":"+=")+h+"j._err(e,view,"+E+")"+m+";}"+(n?"":"ret=ret"))}I="// "+_+"\nvar v"+(d?",t=j._tag":"")+(p?",c=j._cnvt":"")+(l?",h=j._html":"")+(n?";\n":',ret=""\n')+(U.debug?"debugger;":"")+I+(n?"\n":";\nreturn ret;");try{I=new Function("data,view,j,u",I)}catch(B){O("Compiled template code:\n\n"+I+'\n: "'+(B.message||B)+'"')}return t&&(t.fn=I,t.useViews=!!P),I}function Q(e,t){return e&&e!==t?t?l(l({},t),e):e:t&&l({},t)}function H(e){return Fe[e]||(Fe[e]="&#"+e.charCodeAt(0)+";")}function D(e){var t,n,r=[];if(typeof e===Ie)for(t in e)n=e[t],t!==te&&e.hasOwnProperty(t)&&!ne(n)&&r.push({key:t,prop:n});return r}function Z(e,n,r){var i=this.jquery&&(this[0]||I("Unknown template")),o=i.getAttribute(Oe);return S.call(o&&t.data(i)[Ue]||ie(i),e,n,r)}function z(e){return void 0!=e?$e.test(e)&&(""+e).replace(Ne,H)||e:""}var G=t===!1;t=t&&t.fn?t:e.jQuery;var W,X,Y,ee,te,ne,re,ie,oe,ae,se,de,le,ue,pe,ce,fe,ge,ve,he,me,we,xe="v0.9.90",_e="_ocp",be=/^(!*?)(?:null|true|false|\d[\d.]*|([\w$]+|\.|~([\w$]+)|#(view|([\w$]+))?)([\w$.^]*?)(?:[.[^]([\w$]+)\]?)?)$/g,ye=/(\()(?=\s*\()|(?:([([])\s*)?(?:(\^?)(!*?[#~]?[\w$.^]+)?\s*((\+\+|--)|\+|-|&&|\|\||===|!==|==|!=|<=|>=|[<>%*:?\/]|(=))\s*|(!*?[#~]?[\w$.^]+)([([])?)|(,\s*)|(\(?)\\?(?:(')|("))|(?:\s*(([)\]])(?=\s*[.^]|\s*$|[^([])|[)\]])([([]?))|(\s+)/g,ke=/[ \t]*(\r\n|\n|\r)/g,Ce=/\\(['"])/g,Te=/['"\\]/g,je=/(?:\x08|^)(onerror:)?(?:(~?)(([\w$_\.]+):)?([^\x08]+))\x08(,)?([^\x08]+)/gi,Ae=/^if\s/,Re=/<(\w+)[>\s]/,Ve=/[\x00`><"'&=]/g,$e=/[\x00`><\"'&=]/,Ee=/^on[A-Z]|^convert(Back)?$/,Me=/^\#\d+_`[\s\S]*\/\d+_`$/,Ne=Ve,Se=0,Fe={"&":"&","<":"<",">":">","\0":"�","'":"'",'"':""","`":"`","=":"="},Pe="html",Ie="object",Oe="data-jsv-tmpl",Ue="jsvTmpl",qe="For #index in nested block use #getIndex().",Je={},Ke=e.jsrender,Be=Ke&&t&&!t.render,Le={template:{compile:j},tag:{compile:C},viewModel:{compile:V},helper:{},converter:{}};if(ee={jsviews:xe,sub:{View:y,Err:d,tmplFn:U,parse:B,extend:l,extendCtx:Q,syntaxErr:O,onStore:{template:function(e,t){null===t?delete Je[e]:Je[e]=t}},addSetting:M,settings:{allowCode:!1},advSet:a,_ths:i,_gm:r,_tg:function(){},_cnvt:h,_tag:b,_er:I,_err:P,_cp:o,_sq:function(e){return"constructor"===e&&O(""),e}},settings:{delimiters:u,advanced:function(e){return e?(l(ue,e),de.advSet(),pe):ue}},map:N},(d.prototype=new Error).constructor=d,c.depends=function(){return[this.get("item"),"index"]},f.depends="index",y.prototype={get:p,getIndex:f,getRsc:_,getTmpl:v,ctxPrm:g,_is:"view"},de=ee.sub,pe=ee.settings,!(Ke||t&&t.render)){for(W in Le)E(W,Le[W]);oe=ee.converters,ae=ee.helpers,se=ee.tags,de._tg.prototype={baseApply:T,cvtArgs:m,bndArgs:x,ctxPrm:g},Y=de.topView=new y,t?(t.fn.render=Z,te=t.expando,t.observable&&(l(de,t.views.sub),ee.map=t.views.map)):(t={},G&&(e.jsrender=t),t.renderFile=t.__express=t.compile=function(){throw"Node.js: use npm jsrender, or jsrender-node.js"},t.isFunction=function(e){return"function"==typeof e},t.isArray=Array.isArray||function(e){return"[object Array]"==={}.toString.call(e)},de._jq=function(e){e!==t&&(l(e,t),t=e,t.fn.render=Z,delete t.jsrender,te=t.expando)},t.jsrender=xe),le=de.settings,le.allowCode=!1,ne=t.isFunction,t.render=Je,t.views=ee,t.templates=ie=ee.templates;for(me in le)M(me);(pe.debugMode=function(e){return void 0===e?le.debugMode:(le.debugMode=e,le.onError=e+""===e?new Function("","return '"+e+"';"):ne(e)?e:void 0,pe)})(!1),ue=le.advanced={useViews:!1,_jsv:!1},se({"if":{render:function(e){var t=this,n=t.tagCtx,r=t.rendering.done||!e&&(arguments.length||!n.index)?"":(t.rendering.done=!0,void(t.selected=n.index));return r},contentCtx:!0,flow:!0},"for":{render:function(e){var t,n=!arguments.length,r=this,i=r.tagCtx,o="",a=0;return r.rendering.done||(t=n?i.view.data:e,void 0!==t&&(o+=i.render(t,n),a+=re(t)?t.length:1),(r.rendering.done=a)&&(r.selected=i.index)),o},flow:!0},props:{baseTag:"for",dataMap:N(D),flow:!0},include:{flow:!0},"*":{render:o,flow:!0},":*":{render:o,flow:!0},dbg:ae.dbg=oe.dbg=s}),oe({html:z,attr:z,url:function(e){return void 0!=e?encodeURI(""+e):null===e?e:""}})}return le=de.settings,re=(t||Ke).isArray,pe.delimiters("{{","}}","^"),Be&&Ke.views.sub._jq(t),t||Ke},window); //# sourceMappingURL=jsrender.min.js.map diff --git a/jsrender.min.js.map b/jsrender.min.js.map index 5e06bdc..e857189 100644 --- a/jsrender.min.js.map +++ b/jsrender.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["jsrender.js"],"names":["factory","global","$","jQuery","exports","module","fn","define","amd","getDerivedMethod","baseMethod","method","ret","tag","this","prevBase","base","apply","arguments","getMethod","$isFunction","_d","noop","tagHandlersFromProps","tagCtx","prop","props","rHasHandlers","test","fix","constructor","prototype","retVal","val","dbgBreak","console","log","e","baseApply","JsViewsError","message","name","link","$extend","target","source","$viewsDelimiters","openChars","closeChars","$isArray","$views","$subSettings","delimiters","linkChar","charAt","delimOpenChar0","delimOpenChar1","delimCloseChar0","delimCloseChar1","rTag","$sub","RegExp","rTmpl","$viewsSettings","getView","inner","type","undefined","views","i","l","found","view","root","_","useKey","get","length","parent","getNestedIndex","index","getIndex","contextParameter","key","value","isContextCb","wrapped","deps","res","obsCtxPrm","storeView","isUpdate","isRenderCall","store","ctx","$helpers","it","linked","_cxp","scope","isTop","_ocps","_crcp","_ucp","_ceo","_ocp","unshift","cvtArgs","tagElse","ind","data","_vw","getTemplate","tmpl","getRsc","$templates","convertVal","converter","onError","argsLen","bindTo","boundTag","bnds","linkCtx","_lr","args","_bd","_tg","bnd","unlinked","inline","tagName","cvt","flow","extendCtx","_er","onRender","convertArgs","bound","boundArgs","tagCtxs","convert","error","argDefault","slice","argOrProp","context","convertBoundArgs","getResource","resourceType","itemName","renderTag","parentView","topView","tagDef","template","tags","attr","parentTag","m","itemRet","tagCtxCtx","ctxPrm","content","callInit","mapDef","thisMap","tagDataMap","contentCtx","parentTmpl","_is","tmpls","render","renderContent","getTmpl","_ctr","init","dataMap","arrVws","dataBoundOnly","map","parents","parentTags","rendering","noVws","HTML","linkedCtxParam","_cp","params","src","unmap","tgt","rWrappedInViewMarker","links","renderWithViews","$converters","html","View","contentTmpl","parentView_","self_","self","isArray","id","viewId","scp","indexStr","push","splice","compileChildResources","storeName","storeNames","resources","jsvStores","compileTag","Tag","makeArray","linkedElement","bindToLength","baseTag","compiledDef","depends","isNaN","parseInt","$tags","_parentTmpl","compileTmpl","options","lookupTemplate","currentName","nodeType","elem","document","getElementById","innerHTML","getAttribute","tmplAttr","jsvTmpl","tmplName","setAttribute","compiledTmpl","tmplOrMarkup","_html","markup","tmplObject","tmplFn","replace","rEscapeQuotes","getDefaultVal","defaultVal","call","unmapArray","modelArr","arr","compileViewModel","GetNew","vm","iterate","action","getterType","ob","j","g","getters","getter","viewModels","JSON","parse","merge","viewModel","$expando","getterNames","mod","assigned","newModArr","k","model","$observable","refresh","concat","extend","proto","body","observable","privField","setProperty","set","Function","htmlTag","wrapMap","$subSettingsAdvanced","_wm","rFirstElem","exec","toLowerCase","div","trim","registerStore","storeSettings","theStore","item","compile","thisStore","onStore","OBJECT","getTgt","addSetting","st","Map","baseMap","noIteration","isTopRenderCall","prevData","prevIndex","result","useViews","setItemVar","newCtx","itemVar","newView","childView","itemResult","swapContent","outerOnRender","_wrp","syntaxError","helpers","contentView","onRenderError","fallback","Err","isLinkExpr","convertBack","hasElse","pushprecedingContent","shift","loc","substr","rNewLine","blockTagCheck","block","parseTag","all","bind","colon","codeTag","slash","bind2","closeBlock","late","pathBindings","ctxProps","paramsArgs","paramsProps","paramsCtxProps","useTrigger","allowCode","rUnescapeQuotes","rTestElseIf","current","substring","stack","pop","parseParams","rBuildHash","onerror","isCtx","keyToken","keyValue","arg","param","hasHandlers","newNode","parsedParam","bindings","astTop","buildCode","setPaths","pathsArr","paths","hasOwnProperty","skp","paramStructure","parts","parseTokens","lftPrn0","lftPrn","path","operator","err","eq","path2","prn","comma","lftPrn2","apos","quot","rtPrn","rtPrnDot","prn2","space","full","parsePath","allPath","not","object","helper","viewProperty","pathTokens","leafToken","subPath","binds","named","bindto","_jsvto","bndCtx","bd","theOb","_cpfn","sb","pathStart","parenDepth","expr","exprFn","newOb","rtSq","aposed","quoted","boundName","bndStack","prm","tmplLinks","indexOf","paramIndex","split","join","rPath","fnCall","0","rParams","ast","node","hasTag","hasEncoder","getsVal","hasCnvt","useCnvt","tmplBindings","boundOnErrStart","boundOnErrEnd","tagRender","nestedTmpls","nestedTmpl","tagAndElses","nextIsElse","oldCode","isElse","isGetVal","tagCtxFn","tagStart","trigger","lateRender","tmplBindingKey","templates","converters","code","tmplOptions","debug","debugMode","_tag","parentContext","getCharEntity","ch","charEntities","charCodeAt","getTargetProps","$fnRender","tmplElem","jquery","htmlEncode","text","rIsHtml","rHtmlEncode","setGlobals","jsvStoreName","setting","versionNumber","rAttrEncode","&","<",">","\u0000","'","\"","`","=","$render","jsr","jsrender","jsrToJq","jsviews","sub","syntaxErr","settings","advSet","_ths","_gm","_cnvt","_err","_sq","token","advanced","Error","bndArgs","expando","renderFile","__express","isFunction","Array","obj","_jq","jq","_jsv","if","done","selected","for","finalElse","include","*",":*","dbg","url","encodeURI","window"],"mappings":"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","file":"jsrender.min.js","sourcesContent":["/*! JsRender v0.9.89 (Beta): http://jsviews.com/#jsrender */\n/*! **VERSION FOR WEB** (For NODE.JS see http://jsviews.com/download/jsrender-node.js) */\n/*\n * Best-of-breed templating in browser or on Node.js.\n * Does not require jQuery, or HTML DOM\n * Integrates with JsViews (http://jsviews.com/#jsviews)\n *\n * Copyright 2017, Boris Moore\n * Released under the MIT License.\n */\n\n//jshint -W018, -W041, -W120\n\n(function(factory, global) {\n\t// global var is the this object, which is window when running in the usual browser environment\n\tvar $ = global.jQuery;\n\n\tif (typeof exports === \"object\") { // CommonJS e.g. Browserify\n\t\tmodule.exports = $\n\t\t\t? factory(global, $)\n\t\t\t: function($) { // If no global jQuery, take optional jQuery passed as parameter: require('jsrender')(jQuery)\n\t\t\t\tif ($ && !$.fn) {\n\t\t\t\t\tthrow \"Provide jQuery or null\";\n\t\t\t\t}\n\t\t\t\treturn factory(global, $);\n\t\t\t};\n\t} else if (typeof define === \"function\" && define.amd) { // AMD script loader, e.g. RequireJS\n\t\tdefine(function() {\n\t\t\treturn factory(global);\n\t\t});\n\t} else { // Browser using plain