{"version":3,"sources":["template7.js"],"names":["window","Template7","isArray","arr","Object","prototype","toString","apply","isFunction","func","_escape","string","escape","replace","helperToSlices","shiftIndex","i","j","helperParts","split","slices","length","blockQuoteRegExp","openingQuote","part","push","indexOf","quoteDoubleRexExp","quoteSingleRexExp","match","hashParts","hashName","hashContent","hash","stringToBlocks","blocks","_blocks","block","type","content","contextName","helperSlices","helperName","isPartial","helperContext","helperHash","slice","helperContent","elseContent","toSkip","foundClosed","foundElse","depth","inverseContent","RegExp","template","options","getCompileFn","compile","getCompileInverse","getCompileVar","name","ctx","variable","parts","levelsUp","newDepth","isFinite","getCompiledArguments","contextArray","test","join","t","Error","resultString","compiledArguments","helpers","JSON","stringify","eval","call","this","compiled","partials","_partial","partialName","p","data","root","context","if","fn","inverse","unless","each","ret","reverse","first","last","index","key","with","delimiter","delimeter","js","expression","js_compare","condition","t7","arguments","instance","rendered","registerHelper","unregisterHelper","undefined","registerPartial","unregisterPartial"],"mappings":"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","file":"template7.min.js","sourcesContent":["/**\n * Template7 1.1.2\n * Mobile-first JavaScript template engine\n * \n * http://www.idangero.us/template7/\n * \n * Copyright 2016, Vladimir Kharlampidi\n * The iDangero.us\n * http://www.idangero.us/\n * \n * Licensed under MIT\n * \n * Released on: November 2, 2016\n */\nwindow.Template7 = (function () {\n 'use strict';\n function isArray(arr) {\n return Object.prototype.toString.apply(arr) === '[object Array]';\n }\n function isObject(obj) {\n return obj instanceof Object;\n }\n function isFunction(func) {\n return typeof func === 'function';\n }\n function _escape(string) {\n return typeof window !== 'undefined' && window.escape ? window.escape(string) : string\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"');\n }\n var cache = {};\n var quoteSingleRexExp = new RegExp('\\'', 'g');\n var quoteDoubleRexExp = new RegExp('\"', 'g');\n function helperToSlices(string) {\n var helperParts = string.replace(/[{}#}]/g, '').split(' ');\n var slices = [];\n var shiftIndex, i, j;\n for (i = 0; i < helperParts.length; i++) {\n var part = helperParts[i];\n var blockQuoteRegExp, openingQuote;\n if (i === 0) slices.push(part);\n else {\n if (part.indexOf('\"') === 0 || part.indexOf('\\'') === 0) {\n blockQuoteRegExp = part.indexOf('\"') === 0 ? quoteDoubleRexExp : quoteSingleRexExp;\n openingQuote = part.indexOf('\"') === 0 ? '\"' : '\\'';\n // Plain String\n if (part.match(blockQuoteRegExp).length === 2) {\n // One word string\n slices.push(part);\n }\n else {\n // Find closed Index\n shiftIndex = 0;\n for (j = i + 1; j < helperParts.length; j++) {\n part += ' ' + helperParts[j];\n if (helperParts[j].indexOf(openingQuote) >= 0) {\n shiftIndex = j;\n slices.push(part);\n break;\n }\n }\n if (shiftIndex) i = shiftIndex;\n }\n }\n else {\n if (part.indexOf('=') > 0) {\n // Hash\n var hashParts = part.split('=');\n var hashName = hashParts[0];\n var hashContent = hashParts[1];\n if (hashContent.match(blockQuoteRegExp).length !== 2) {\n shiftIndex = 0;\n for (j = i + 1; j < helperParts.length; j++) {\n hashContent += ' ' + helperParts[j];\n if (helperParts[j].indexOf(openingQuote) >= 0) {\n shiftIndex = j;\n break;\n }\n }\n if (shiftIndex) i = shiftIndex;\n }\n var hash = [hashName, hashContent.replace(blockQuoteRegExp,'')];\n slices.push(hash);\n }\n else {\n // Plain variable\n slices.push(part);\n }\n }\n }\n }\n return slices;\n }\n function stringToBlocks(string) {\n var blocks = [], i, j, k;\n if (!string) return [];\n var _blocks = string.split(/({{[^{^}]*}})/);\n for (i = 0; i < _blocks.length; i++) {\n var block = _blocks[i];\n if (block === '') continue;\n if (block.indexOf('{{') < 0) {\n blocks.push({\n type: 'plain',\n content: block\n });\n }\n else {\n if (block.indexOf('{/') >= 0) {\n continue;\n }\n if (block.indexOf('{#') < 0 && block.indexOf(' ') < 0 && block.indexOf('else') < 0) {\n // Simple variable\n blocks.push({\n type: 'variable',\n contextName: block.replace(/[{}]/g, '')\n });\n continue;\n }\n // Helpers\n var helperSlices = helperToSlices(block);\n var helperName = helperSlices[0];\n var isPartial = helperName === '>';\n var helperContext = [];\n var helperHash = {};\n for (j = 1; j < helperSlices.length; j++) {\n var slice = helperSlices[j];\n if (isArray(slice)) {\n // Hash\n helperHash[slice[0]] = slice[1] === 'false' ? false : slice[1];\n }\n else {\n helperContext.push(slice);\n }\n }\n\n if (block.indexOf('{#') >= 0) {\n // Condition/Helper\n var helperStartIndex = i;\n var helperContent = '';\n var elseContent = '';\n var toSkip = 0;\n var shiftIndex;\n var foundClosed = false, foundElse = false, foundClosedElse = false, depth = 0;\n for (j = i + 1; j < _blocks.length; j++) {\n if (_blocks[j].indexOf('{{#') >= 0) {\n depth ++;\n }\n if (_blocks[j].indexOf('{{/') >= 0) {\n depth --;\n }\n if (_blocks[j].indexOf('{{#' + helperName) >= 0) {\n helperContent += _blocks[j];\n if (foundElse) elseContent += _blocks[j];\n toSkip ++;\n }\n else if (_blocks[j].indexOf('{{/' + helperName) >= 0) {\n if (toSkip > 0) {\n toSkip--;\n helperContent += _blocks[j];\n if (foundElse) elseContent += _blocks[j];\n }\n else {\n shiftIndex = j;\n foundClosed = true;\n break;\n }\n }\n else if (_blocks[j].indexOf('else') >= 0 && depth === 0) {\n foundElse = true;\n }\n else {\n if (!foundElse) helperContent += _blocks[j];\n if (foundElse) elseContent += _blocks[j];\n }\n\n }\n if (foundClosed) {\n if (shiftIndex) i = shiftIndex;\n blocks.push({\n type: 'helper',\n helperName: helperName,\n contextName: helperContext,\n content: helperContent,\n inverseContent: elseContent,\n hash: helperHash\n });\n }\n }\n else if (block.indexOf(' ') > 0) {\n if (isPartial) {\n helperName = '_partial';\n if (helperContext[0]) helperContext[0] = '\"' + helperContext[0].replace(/\"|'/g, '') + '\"';\n }\n blocks.push({\n type: 'helper',\n helperName: helperName,\n contextName: helperContext,\n hash: helperHash\n });\n }\n }\n }\n return blocks;\n }\n var Template7 = function (template, options) {\n var t = this;\n t.template = template;\n\n function getCompileFn(block, depth) {\n if (block.content) return compile(block.content, depth);\n else return function () {return ''; };\n }\n function getCompileInverse(block, depth) {\n if (block.inverseContent) return compile(block.inverseContent, depth);\n else return function () {return ''; };\n }\n function getCompileVar(name, ctx) {\n var variable, parts, levelsUp = 0, initialCtx = ctx;\n if (name.indexOf('../') === 0) {\n levelsUp = name.split('../').length - 1;\n var newDepth = ctx.split('_')[1] - levelsUp;\n ctx = 'ctx_' + (newDepth >= 1 ? newDepth : 1);\n parts = name.split('../')[levelsUp].split('.');\n }\n else if (name.indexOf('@global') === 0) {\n ctx = 'Template7.global';\n parts = name.split('@global.')[1].split('.');\n }\n else if (name.indexOf('@root') === 0) {\n ctx = 'root';\n parts = name.split('@root.')[1].split('.');\n }\n else {\n parts = name.split('.');\n }\n variable = ctx;\n for (var i = 0; i < parts.length; i++) {\n var part = parts[i];\n if (part.indexOf('@') === 0) {\n if (i > 0) {\n variable += '[(data && data.' + part.replace('@', '') + ')]';\n }\n else {\n variable = '(data && data.' + name.replace('@', '') + ')';\n }\n }\n else {\n if (isFinite(part)) {\n variable += '[' + part + ']';\n }\n else {\n if (part === 'this' || part.indexOf('this.') >= 0 || part.indexOf('this[') >= 0 || part.indexOf('this(') >= 0) {\n variable = part.replace('this', ctx);\n }\n else {\n variable += '.' + part;\n }\n }\n }\n }\n\n return variable;\n }\n function getCompiledArguments(contextArray, ctx) {\n var arr = [];\n for (var i = 0; i < contextArray.length; i++) {\n if (/^['\"]/.test(contextArray[i])) arr.push(contextArray[i]);\n else if (/^(true|false|\\d+)$/.test(contextArray[i])) arr.push(contextArray[i]);\n else {\n arr.push(getCompileVar(contextArray[i], ctx));\n }\n }\n\n return arr.join(', ');\n }\n function compile(template, depth) {\n depth = depth || 1;\n template = template || t.template;\n if (typeof template !== 'string') {\n throw new Error('Template7: Template must be a string');\n }\n var blocks = stringToBlocks(template);\n if (blocks.length === 0) {\n return function () { return ''; };\n }\n var ctx = 'ctx_' + depth;\n var resultString = '';\n if (depth === 1) {\n resultString += '(function (' + ctx + ', data, root) {\\n';\n }\n else {\n resultString += '(function (' + ctx + ', data) {\\n';\n }\n if (depth === 1) {\n resultString += 'function isArray(arr){return Object.prototype.toString.apply(arr) === \\'[object Array]\\';}\\n';\n resultString += 'function isFunction(func){return (typeof func === \\'function\\');}\\n';\n resultString += 'function c(val, ctx) {if (typeof val !== \"undefined\" && val !== null) {if (isFunction(val)) {return val.call(ctx);} else return val;} else return \"\";}\\n';\n resultString += 'root = root || ctx_1 || {};\\n';\n }\n resultString += 'var r = \\'\\';\\n';\n var i, j, context;\n for (i = 0; i < blocks.length; i++) {\n var block = blocks[i];\n // Plain block\n if (block.type === 'plain') {\n resultString += 'r +=\\'' + (block.content).replace(/\\r/g, '\\\\r').replace(/\\n/g, '\\\\n').replace(/'/g, '\\\\' + '\\'') + '\\';';\n continue;\n }\n var variable, compiledArguments;\n // Variable block\n if (block.type === 'variable') {\n variable = getCompileVar(block.contextName, ctx);\n resultString += 'r += c(' + variable + ', ' + ctx + ');';\n }\n // Helpers block\n if (block.type === 'helper') {\n if (block.helperName in t.helpers) {\n compiledArguments = getCompiledArguments(block.contextName, ctx);\n\n resultString += 'r += (Template7.helpers.' + block.helperName + ').call(' + ctx + ', ' + (compiledArguments && (compiledArguments + ', ')) +'{hash:' + JSON.stringify(block.hash) + ', data: data || {}, fn: ' + getCompileFn(block, depth + 1) + ', inverse: ' + getCompileInverse(block, depth + 1) + ', root: root});';\n\n }\n else {\n if (block.contextName.length > 0) {\n throw new Error('Template7: Missing helper: \"' + block.helperName + '\"');\n }\n else {\n variable = getCompileVar(block.helperName, ctx);\n resultString += 'if (' + variable + ') {';\n resultString += 'if (isArray(' + variable + ')) {';\n resultString += 'r += (Template7.helpers.each).call(' + ctx + ', ' + variable + ', {hash:' + JSON.stringify(block.hash) + ', data: data || {}, fn: ' + getCompileFn(block, depth+1) + ', inverse: ' + getCompileInverse(block, depth+1) + ', root: root});';\n resultString += '}else {';\n resultString += 'r += (Template7.helpers.with).call(' + ctx + ', ' + variable + ', {hash:' + JSON.stringify(block.hash) + ', data: data || {}, fn: ' + getCompileFn(block, depth+1) + ', inverse: ' + getCompileInverse(block, depth+1) + ', root: root});';\n resultString += '}}';\n }\n }\n }\n }\n resultString += '\\nreturn r;})';\n return eval.call(window, resultString);\n }\n t.compile = function (template) {\n if (!t.compiled) {\n t.compiled = compile(template);\n }\n return t.compiled;\n };\n };\n Template7.prototype = {\n options: {},\n partials: {},\n helpers: {\n '_partial' : function (partialName, options) {\n var p = Template7.prototype.partials[partialName];\n if (!p || (p && !p.template)) return '';\n if (!p.compiled) {\n p.compiled = new Template7(p.template).compile();\n }\n var ctx = this;\n for (var hashName in options.hash) {\n ctx[hashName] = options.hash[hashName];\n }\n return p.compiled(ctx, options.data, options.root);\n },\n 'escape': function (context, options) {\n if (typeof context !== 'string') {\n throw new Error('Template7: Passed context to \"escape\" helper should be a string');\n }\n return _escape(context);\n },\n 'if': function (context, options) {\n if (isFunction(context)) { context = context.call(this); }\n if (context) {\n return options.fn(this, options.data);\n }\n else {\n return options.inverse(this, options.data);\n }\n },\n 'unless': function (context, options) {\n if (isFunction(context)) { context = context.call(this); }\n if (!context) {\n return options.fn(this, options.data);\n }\n else {\n return options.inverse(this, options.data);\n }\n },\n 'each': function (context, options) {\n var ret = '', i = 0;\n if (isFunction(context)) { context = context.call(this); }\n if (isArray(context)) {\n if (options.hash.reverse) {\n context = context.reverse();\n }\n for (i = 0; i < context.length; i++) {\n ret += options.fn(context[i], {first: i === 0, last: i === context.length - 1, index: i});\n }\n if (options.hash.reverse) {\n context = context.reverse();\n }\n }\n else {\n for (var key in context) {\n i++;\n ret += options.fn(context[key], {key: key});\n }\n }\n if (i > 0) return ret;\n else return options.inverse(this);\n },\n 'with': function (context, options) {\n if (isFunction(context)) { context = context.call(this); }\n return options.fn(context);\n },\n 'join': function (context, options) {\n if (isFunction(context)) { context = context.call(this); }\n return context.join(options.hash.delimiter || options.hash.delimeter);\n },\n 'js': function (expression, options) {\n var func;\n if (expression.indexOf('return')>=0) {\n func = '(function(){'+expression+'})';\n }\n else {\n func = '(function(){return ('+expression+')})';\n }\n return eval.call(this, func).call(this);\n },\n 'js_compare': function (expression, options) {\n var func;\n if (expression.indexOf('return')>=0) {\n func = '(function(){'+expression+'})';\n }\n else {\n func = '(function(){return ('+expression+')})';\n }\n var condition = eval.call(this, func).call(this);\n if (condition) {\n return options.fn(this, options.data);\n }\n else {\n return options.inverse(this, options.data);\n }\n }\n }\n };\n var t7 = function (template, data) {\n if (arguments.length === 2) {\n var instance = new Template7(template);\n var rendered = instance.compile()(data);\n instance = null;\n return (rendered);\n }\n else return new Template7(template);\n };\n t7.registerHelper = function (name, fn) {\n Template7.prototype.helpers[name] = fn;\n };\n t7.unregisterHelper = function (name) {\n Template7.prototype.helpers[name] = undefined;\n delete Template7.prototype.helpers[name];\n };\n t7.registerPartial = function (name, template) {\n Template7.prototype.partials[name] = {template: template};\n };\n t7.unregisterPartial = function (name, template) {\n if (Template7.prototype.partials[name]) {\n Template7.prototype.partials[name] = undefined;\n delete Template7.prototype.partials[name];\n }\n };\n t7.compile = function (template, options) {\n var instance = new Template7(template, options);\n return instance.compile();\n };\n\n t7.options = Template7.prototype.options;\n t7.helpers = Template7.prototype.helpers;\n t7.partials = Template7.prototype.partials;\n return t7;\n})();\n//# sourceMappingURL=template7.js.map\n"],"sourceRoot":"/source/"}