{"version":3,"sources":["webpack/bootstrap","node_modules/@babel/runtime/helpers/esm/defineProperty.js","node_modules/@babel/runtime/helpers/esm/objectSpread2.js","node_modules/@babel/runtime/helpers/esm/createClass.js","node_modules/@babel/runtime/helpers/esm/classCallCheck.js","src/js/modules/animated-details.js","src/js/modules/accordion.js","src/js/modules/nav.js","src/js/modules/toggle.js","src/js/modules/tyreSizes.js","src/js/master.js","src/js/modules/register-service-worker.js","node_modules/@crasman/branch-bar/main.js","node_modules/mustache/mustache.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","_defineProperty","obj","configurable","writable","ownKeys","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","push","apply","_objectSpread2","target","arguments","length","source","forEach","getOwnPropertyDescriptors","defineProperties","_defineProperties","props","descriptor","_createClass","Constructor","protoProps","staticProps","_classCallCheck","instance","TypeError","AnimatedDetails","el","options","this","animationDuration","animationEasing","_animation","isClosing","isExpanding","details","summary","querySelector","addEventListener","e","preventDefault","open","toggle","detailsHeight","offsetHeight","startHeight","endHeight","cancel","style","overflow","animate","height","duration","easing","onfinish","Accordion","allowMultipleOpen","element","items","querySelectorAll","detail","Nav","toggleMenu","document","classList","contains","hasAttribute","removeAttribute","removeEventListener","Toggle","onClick","currentTarget","dataset","toggleTarget","getElementById","toggleHideSelf","add","toggleContent","isToggledContent","remove","setAttribute","TyreSizes","itemTemplate","buttons","container","content","b","btn","innerHTML","Mustache","render","JSON","parse","tyres","branchBar","init","getAttribute","navigator","serviceWorkerPath","process","serviceWorker","register","scope","then","console","log","catch","error","_minifiedClass","_hiddenClass","_storageSettings","_folderId","_settingsKey","_dom","bar","toggles","pageSelects","_isLocalStorageEnabled","test","localStorage","setItem","removeItem","_isMinified","className","split","indexOf","_getSettings","settings","getItem","_updateSettings","minified","stringify","_toggleMinified","reg","RegExp","replace","_initToggles","self","getElementsByClassName","_initPageSelects","val","window","location","href","_showBar","display","_setCSSVar","documentElement","setProperty","_updateCSSVars","zIndex","bgColor","colorLight","colorDark","shadowColor","objectToString","toString","isArray","Array","isFunction","escapeRegExp","string","hasProperty","propName","regExpTest","nonSpaceRe","isWhitespace","re","testRegExp","entityMap","whiteRe","spaceRe","equalsRe","curlyRe","tagRe","Scanner","tail","pos","Context","view","parentContext","cache","parent","Writer","templateCache","_cache","set","clear","eos","scan","match","index","substring","scanUntil","search","lookup","primitive","intermediateValue","names","context","lookupHit","clearCache","template","tags","cacheKey","mustache","join","isCacheEnabled","tokens","undefined","openingTagRe","closingTagRe","closingCurlyRe","lineHasNonSpace","sections","spaces","hasTag","nonSpace","indentation","tagIndex","stripSpace","pop","compileTags","tagsToCompile","Error","start","type","chr","token","openSection","scanner","valueLength","charAt","nestedTokens","collector","numTokens","nestTokens","lastToken","squashedTokens","squashTokens","parseTemplate","partials","config","getConfigTags","renderTokens","originalTemplate","symbol","buffer","renderSection","renderInverted","renderPartial","unescapedValue","escapedValue","rawValue","j","slice","indentPartial","partial","filteredIndentation","partialByNl","indentedValue","escape","getConfigEscape","String","version","defaultWriter","factory"],"mappings":"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","file":"js/master.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/static/studio/pub/web/nordman-tyres/master/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","class AnimatedDetails {\n\n /**\n * Adds animated toggle functionality to given details element.\n *\n * @param {HTMLDetailsElement} el Element to animate.\n * @param {Object} options Animation configuration.\n */\n constructor(el, options = {}) {\n this.options = {\n animationDuration: 300,\n animationEasing: 'ease-out',\n ...options\n };\n this._animation = null;\n this.isClosing = false;\n this.isExpanding = false;\n\n this.details = el;\n this.summary = el.querySelector('summary');\n this.summary.addEventListener('click', (e) => {\n e.preventDefault();\n if (!this.details.open || this.isClosing) {\n this.toggle(true);\n }\n else if (this.details.open || this.isExpanding) {\n this.toggle(false);\n }\n });\n }\n\n /**\n * Toggle details open state.\n *\n * @param {Boolean} open True if details is opened, false otherwise.\n */\n toggle(open) {\n const summary = this.summary;\n const details = this.details;\n\n const detailsHeight = details.offsetHeight;\n let startHeight = 0;\n let endHeight = 0;\n\n if (this._animation) {\n this._animation.cancel();\n }\n\n // Close\n if (!open) {\n this.isClosing = true;\n this.isExpanding = false;\n startHeight = `${this._animation ? detailsHeight : details.offsetHeight}px`;\n endHeight = `${summary.offsetHeight}px`;\n }\n // Open\n else {\n this.isClosing = false;\n this.isExpanding = true;\n startHeight = `${this._animation ? detailsHeight : summary.offsetHeight}px`;\n details.open = true;\n endHeight = `${details.offsetHeight}px`;\n }\n\n details.style.overflow = 'hidden';\n this._animation = details.animate({\n height: [startHeight, endHeight]\n }, {\n duration: this.options.animationDuration,\n easing: this.options.animationEasing\n });\n this._animation.onfinish = () => {\n details.open = open;\n this.isClosing = false;\n this.isExpanding = false;\n this._animation = null;\n details.style.overflow = '';\n };\n }\n}\n\nexport default AnimatedDetails;\n","import AnimatedDetails from './animated-details';\n\nclass Accordion {\n\n /**\n * Add accordion functionality to given element.\n *\n * @param {HTMLElement} el Element to wrap.\n * @param {Object} options Accordion settings.\n */\n constructor(el, options = {}) {\n this.options = {\n animationDuration: 300,\n animationEasing: 'ease-out',\n allowMultipleOpen: true,\n ...options\n };\n this.element = el;\n\n const items = [];\n const details = el.querySelectorAll('details');\n details.forEach(detail => {\n items.push(new AnimatedDetails(detail, {\n animationDuration: this.options.animationDuration,\n animationEasing: this.options.animationEasing,\n }));\n\n // Close other items if only one is allowed to be open\n detail.addEventListener('toggle', (e) => {\n if (e.target.open && !this.options.allowMultipleOpen) {\n this.items.forEach(el => {\n if (el.details !== e.target) {\n el.toggle(false);\n }\n });\n }\n });\n });\n this.items = items;\n }\n\n}\n\nexport default Accordion;\n","class Nav {\n\n /**\n * Add nav functionalities\n *\n * @param {HTMLElement} el Element to wrap.\n */\n constructor(el) {\n this.element = el;\n\n el.addEventListener('toggle', (e) => {\n if (el.hasAttribute('open')) {\n document.addEventListener('click', this.toggleMenu);\n } else {\n document.removeEventListener('click', this.toggleMenu)\n }\n })\n }\n\n toggleMenu = (e) => {\n document.addEventListener('click', (e) => {\n if (!e.target.classList.contains('js-nav-item') && this.element.hasAttribute('open')) {\n this.element.removeAttribute('open')\n }\n });\n }\n\n}\n\nexport default Nav;\n","/**\n * A generic toggle that controls another element's visibility\n *\n * sample usage:\n *\n * \n *
I am initially hidden
\n *\n * If you want to toggle only once and hide the button afterwards, use:\n *\n * \n *
I am initially hidden
\n */\nclass Toggle {\n\n /**\n * Handles toggling another element's visibility when toggle element is clicked\n *\n * @param {HTMLElement} el Element to wrap.\n */\n constructor(el) {\n this.element = el;\n el.addEventListener('click', this.onClick);\n }\n\n /**\n * Handles toggling another element's visibility when toggle element is clicked\n *\n * @param {Event} e - Event object\n */\n onClick = (e) => {\n const toggle = e.currentTarget;\n\n if(toggle.dataset.toggleTarget) {\n const target = document.getElementById(toggle.dataset.toggleTarget);\n\n if(target) {\n\n target.classList.toggle('hidden');\n toggle.classList.toggle('is-toggled');\n if(typeof toggle.dataset.toggleHideSelf !== 'undefined') {\n toggle.classList.add('hidden');\n }\n\n // Show/hide content in toggle button based on current state\n const toggleContent = toggle.querySelectorAll('.js-toggle__toggle');\n const isToggledContent = toggle.querySelectorAll('.js-toggle__is-toggled');\n if (toggle.classList.contains('is-toggled')) {\n toggleContent.forEach(el => el.classList.add('hidden'));\n isToggledContent.forEach(el => el.classList.remove('hidden'));\n }\n else {\n toggleContent.forEach(el => el.classList.remove('hidden'));\n isToggledContent.forEach(el => el.classList.add('hidden'));\n }\n\n // custom logic for accordion icon rotate and other styling\n if (target.classList.contains('hidden')){\n toggle.removeAttribute('open')\n } else {\n toggle.setAttribute('open', true)\n }\n }\n }\n }\n}\n\nexport default Toggle;\n","import Mustache from 'mustache';\nimport Toggle from './toggle';\n\nclass TyreSizes {\n\n /**\n * Add functionality to Custom element Tyre sizes\n *\n * @param {HTMLElement} el Element to wrap.\n */\n constructor(el) {\n this.element = el;\n\n const itemTemplate = document.getElementById('tyreItemTemplate');\n const buttons = el.querySelectorAll('.js-tyre-sizes-button');\n const toggle = el.querySelector('.js-toggle');\n const container = el.querySelector('.js-tyre-sizes-container');\n const content = el.querySelector('.js-tyre-sizes-content');\n\n buttons.forEach(b => {\n if (!b.classList.contains('js-toggle')) {\n b.addEventListener('click', (e) => {\n // Open tyres container if not open\n if (container.classList.contains('hidden')) {\n toggle.classList.add('is-toggled')\n toggle.setAttribute('open', true);\n container.classList.remove('hidden')\n }\n\n buttons.forEach(btn => {\n if (btn.classList.contains('active')){\n btn.classList.remove('active');\n }\n })\n\n b.classList.add('active');\n\n // Render new items\n content.innerHTML = Mustache.render(itemTemplate.innerHTML, { items: JSON.parse(b.dataset.tyres) });\n\n //Toggles\n const toggles = content.querySelectorAll('.js-toggle');\n toggles.forEach(el => {\n new Toggle(el);\n });\n })\n }\n })\n }\n}\n\nexport default TyreSizes;\n","import './modules/register-service-worker';\nimport { branchBar } from '@crasman/branch-bar';\n\nimport Accordion from './modules/accordion';\nimport Nav from './modules/nav';\nimport TyreSizes from './modules/tyreSizes';\nimport Toggle from './modules/toggle';\n\n// See https://www.npmjs.com/package/@crasman/branch-bar for settings\nbranchBar.init();\n\n//Accordions\nconst accordions = document.querySelectorAll('.js-accordion');\naccordions.forEach(el => {\n new Accordion(el, {\n allowMultipleOpen: el.getAttribute('data-allow-multiple-open') === 'true'\n });\n});\n\n//Nav\nconst nav = document.querySelectorAll('.js-nav');\nnav.forEach(el => {\n new Nav(el, {\n });\n});\n\n//Toggles\nconst toggles = document.querySelectorAll('.js-toggle');\ntoggles.forEach(el => {\n new Toggle(el);\n});\n\n//Tyre sizes\nconst tyreSizes = document.querySelectorAll('.js-tyre-sizes');\ntyreSizes.forEach(el => {\n new TyreSizes(el, {\n });\n});\n","// To enable serviceWorker import this to your master.js file. E.g. `import './modules/register-service-worker';`\nif ('serviceWorker' in navigator) {\n if (process.env.NODE_ENV === 'production' || process.env.SW_DEV) {\n const serviceWorkerPath = `${process.env.PUBLIC_PATH}service-worker.js`;\n navigator.serviceWorker\n .register(serviceWorkerPath, { scope: '/' })\n .then(function () {\n // registration worked\n console.log('Service worker registered.');\n })\n .catch(function (error) {\n // If there is (probably) something wrong with Service Worker path\n if (error instanceof TypeError) {\n // registration failed\n console.log(\n `Service worker registration failed. Invalid Service Worker path? (${serviceWorkerPath})`\n );\n }\n });\n }\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nconst branchBar = {\n\t_minifiedClass: 'branch-bar--minified',\n\t_hiddenClass: 'branch-bar--hidden',\n\t_storageSettings: null,\n\t_folderId: null,\n\t_settingsKey: null,\n\t_dom: {\n\t\tbar: null,\n\t\ttoggles: null,\n\t\tpageSelects: null,\n\t},\n\t_isLocalStorageEnabled: function () {\n\t\tvar test = 'branch-bar-test';\n\n\t\ttry {\n\t\t\tlocalStorage.setItem(test, test);\n\t\t\tlocalStorage.removeItem(test);\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t},\n\t_isMinified: function () {\n\t\treturn this._dom.bar.className.split(' ').indexOf(this._minifiedClass) >= 0;\n\t},\n\t_getSettings: function () {\n\t\tvar settings = null;\n\n\t\tif (!this._isLocalStorageEnabled()) {\n\t\t\treturn null;\n\t\t}\n\t\tthis._folderId = this._dom.bar.getAttribute('data-folder-id');\n\t\tthis._settingsKey = 'branch-bar--' + this._folderId;\n\t\tif (this._settingsKey) {\n\t\t\ttry {\n\t\t\t\tsettings = JSON.parse(localStorage.getItem(this._settingsKey));\n\t\t\t\treturn settings;\n\t\t\t} catch (e) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\treturn settings;\n\t},\n\t_updateSettings: function () {\n\t\tif (!this._isLocalStorageEnabled()) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (!this._storageSettings) {\n\t\t\tthis._storageSettings = {};\n\t\t}\n\n\t\tthis._storageSettings.minified = this._isMinified();\n\n\t\ttry {\n\t\t\tlocalStorage.setItem(\n\t\t\t\tthis._settingsKey,\n\t\t\t\tJSON.stringify(this._storageSettings)\n\t\t\t);\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t},\n\t_toggleMinified: function () {\n\t\tif (this._isMinified()) {\n\t\t\tvar reg = new RegExp('(\\\\s|^)' + this._minifiedClass + '(\\\\s|$)');\n\t\t\tthis._dom.bar.className = this._dom.bar.className.replace(reg, ' ');\n\t\t} else {\n\t\t\tthis._dom.bar.className += ' ' + this._minifiedClass;\n\t\t}\n\t},\n\t_initToggles: function () {\n\t\tvar self = this;\n\n\t\tthis._dom.toggles = this._dom.bar.getElementsByClassName(\n\t\t\t'js-branch-bar__toggle'\n\t\t);\n\n\t\tfor (var i = 0, l = this._dom.toggles.length; i < l; i++) {\n\t\t\tthis._dom.toggles[i].addEventListener(\n\t\t\t\t'click',\n\t\t\t\tfunction () {\n\t\t\t\t\tself._toggleMinified();\n\t\t\t\t\tself._updateSettings();\n\t\t\t\t},\n\t\t\t\tfalse\n\t\t\t);\n\t\t}\n\t},\n\t_initPageSelects: function () {\n\t\tthis._dom.pageSelects = this._dom.bar.getElementsByClassName(\n\t\t\t'js-branch-bar__page-select'\n\t\t);\n\n\t\tfor (var i = 0, l = this._dom.pageSelects.length; i < l; i++) {\n\t\t\tthis._dom.pageSelects[i].addEventListener(\n\t\t\t\t'change',\n\t\t\t\tfunction (e) {\n\t\t\t\t\tvar val = e.target.value;\n\n\t\t\t\t\tif (val) {\n\t\t\t\t\t\twindow.location.href = val;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tfalse\n\t\t\t);\n\t\t}\n\t},\n\t_showBar: function () {\n\t\tvar reg = new RegExp('(\\\\s|^)' + this._hiddenClass + '(\\\\s|$)');\n\t\tvar self = this;\n\n\t\tself._dom.bar.className = self._dom.bar.className.replace(reg, ' ');\n\n\t\t// Remove inline display:none style\n\t\tif (self._dom.bar.style.display === 'none') {\n\t\t\tself._dom.bar.style.display = '';\n\t\t}\n\t},\n\t_setCSSVar(name, value) {\n\t\tvar prefix = '--branch-bar-';\n\n\t\tdocument.documentElement.style.setProperty(prefix + name, value);\n\t},\n\t_updateCSSVars: function (settings) {\n\t\tif (settings.zIndex) {\n\t\t\tthis._setCSSVar('z-index', settings.zIndex);\n\t\t}\n\n\t\tif (settings.bgColor) {\n\t\t\tthis._setCSSVar('bg-color', settings.bgColor);\n\t\t}\n\n\t\tif (settings.colorLight) {\n\t\t\tthis._setCSSVar('color-light', settings.colorLight);\n\t\t}\n\n\t\tif (settings.colorDark) {\n\t\t\tthis._setCSSVar('color-dark', settings.colorDark);\n\t\t}\n\n\t\tif (settings.shadowColor) {\n\t\t\tthis._setCSSVar('shadow-color', settings.shadowColor);\n\t\t}\n\t},\n\tinit: function (options) {\n\t\tvar settings = options || {};\n\n\t\tthis._updateCSSVars(settings);\n\n\t\tthis._dom.bar = document.getElementById('js-branch-bar'); // Assumes only one bar per page\n\n\t\tif (this._dom.bar) {\n\t\t\tthis._storageSettings = this._getSettings();\n\n\t\t\t// If user left the bar open\n\t\t\tif (this._storageSettings && !this._storageSettings.minified) {\n\t\t\t\tthis._toggleMinified();\n\t\t\t}\n\n\t\t\tthis._initToggles();\n\t\t\tthis._initPageSelects();\n\n\t\t\tthis._showBar();\n\t\t}\n\t},\n};\n\nexports.branchBar = branchBar;\nexports[\"default\"] = branchBar;\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.Mustache = factory());\n}(this, (function () { 'use strict';\n\n /*!\n * mustache.js - Logic-less {{mustache}} templates with JavaScript\n * http://github.com/janl/mustache.js\n */\n\n var objectToString = Object.prototype.toString;\n var isArray = Array.isArray || function isArrayPolyfill (object) {\n return objectToString.call(object) === '[object Array]';\n };\n\n function isFunction (object) {\n return typeof object === 'function';\n }\n\n /**\n * More correct typeof string handling array\n * which normally returns typeof 'object'\n */\n function typeStr (obj) {\n return isArray(obj) ? 'array' : typeof obj;\n }\n\n function escapeRegExp (string) {\n return string.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, '\\\\$&');\n }\n\n /**\n * Null safe way of checking whether or not an object,\n * including its prototype, has a given property\n */\n function hasProperty (obj, propName) {\n return obj != null && typeof obj === 'object' && (propName in obj);\n }\n\n /**\n * Safe way of detecting whether or not the given thing is a primitive and\n * whether it has the given property\n */\n function primitiveHasOwnProperty (primitive, propName) {\n return (\n primitive != null\n && typeof primitive !== 'object'\n && primitive.hasOwnProperty\n && primitive.hasOwnProperty(propName)\n );\n }\n\n // Workaround for https://issues.apache.org/jira/browse/COUCHDB-577\n // See https://github.com/janl/mustache.js/issues/189\n var regExpTest = RegExp.prototype.test;\n function testRegExp (re, string) {\n return regExpTest.call(re, string);\n }\n\n var nonSpaceRe = /\\S/;\n function isWhitespace (string) {\n return !testRegExp(nonSpaceRe, string);\n }\n\n var entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n function escapeHtml (string) {\n return String(string).replace(/[&<>\"'`=\\/]/g, function fromEntityMap (s) {\n return entityMap[s];\n });\n }\n\n var whiteRe = /\\s*/;\n var spaceRe = /\\s+/;\n var equalsRe = /\\s*=/;\n var curlyRe = /\\s*\\}/;\n var tagRe = /#|\\^|\\/|>|\\{|&|=|!/;\n\n /**\n * Breaks up the given `template` string into a tree of tokens. If the `tags`\n * argument is given here it must be an array with two string values: the\n * opening and closing tags used in the template (e.g. [ \"<%\", \"%>\" ]). Of\n * course, the default is to use mustaches (i.e. mustache.tags).\n *\n * A token is an array with at least 4 elements. The first element is the\n * mustache symbol that was used inside the tag, e.g. \"#\" or \"&\". If the tag\n * did not contain a symbol (i.e. {{myValue}}) this element is \"name\". For\n * all text that appears outside a symbol this element is \"text\".\n *\n * The second element of a token is its \"value\". For mustache tags this is\n * whatever else was inside the tag besides the opening symbol. For text tokens\n * this is the text itself.\n *\n * The third and fourth elements of the token are the start and end indices,\n * respectively, of the token in the original template.\n *\n * Tokens that are the root node of a subtree contain two more elements: 1) an\n * array of tokens in the subtree and 2) the index in the original template at\n * which the closing tag for that section begins.\n *\n * Tokens for partials also contain two more elements: 1) a string value of\n * indendation prior to that tag and 2) the index of that tag on that line -\n * eg a value of 2 indicates the partial is the third tag on this line.\n */\n function parseTemplate (template, tags) {\n if (!template)\n return [];\n var lineHasNonSpace = false;\n var sections = []; // Stack to hold section tokens\n var tokens = []; // Buffer to hold the tokens\n var spaces = []; // Indices of whitespace tokens on the current line\n var hasTag = false; // Is there a {{tag}} on the current line?\n var nonSpace = false; // Is there a non-space char on the current line?\n var indentation = ''; // Tracks indentation for tags that use it\n var tagIndex = 0; // Stores a count of number of tags encountered on a line\n\n // Strips all whitespace tokens array for the current line\n // if there was a {{#tag}} on it and otherwise only space.\n function stripSpace () {\n if (hasTag && !nonSpace) {\n while (spaces.length)\n delete tokens[spaces.pop()];\n } else {\n spaces = [];\n }\n\n hasTag = false;\n nonSpace = false;\n }\n\n var openingTagRe, closingTagRe, closingCurlyRe;\n function compileTags (tagsToCompile) {\n if (typeof tagsToCompile === 'string')\n tagsToCompile = tagsToCompile.split(spaceRe, 2);\n\n if (!isArray(tagsToCompile) || tagsToCompile.length !== 2)\n throw new Error('Invalid tags: ' + tagsToCompile);\n\n openingTagRe = new RegExp(escapeRegExp(tagsToCompile[0]) + '\\\\s*');\n closingTagRe = new RegExp('\\\\s*' + escapeRegExp(tagsToCompile[1]));\n closingCurlyRe = new RegExp('\\\\s*' + escapeRegExp('}' + tagsToCompile[1]));\n }\n\n compileTags(tags || mustache.tags);\n\n var scanner = new Scanner(template);\n\n var start, type, value, chr, token, openSection;\n while (!scanner.eos()) {\n start = scanner.pos;\n\n // Match any text between tags.\n value = scanner.scanUntil(openingTagRe);\n\n if (value) {\n for (var i = 0, valueLength = value.length; i < valueLength; ++i) {\n chr = value.charAt(i);\n\n if (isWhitespace(chr)) {\n spaces.push(tokens.length);\n indentation += chr;\n } else {\n nonSpace = true;\n lineHasNonSpace = true;\n indentation += ' ';\n }\n\n tokens.push([ 'text', chr, start, start + 1 ]);\n start += 1;\n\n // Check for whitespace on the current line.\n if (chr === '\\n') {\n stripSpace();\n indentation = '';\n tagIndex = 0;\n lineHasNonSpace = false;\n }\n }\n }\n\n // Match the opening tag.\n if (!scanner.scan(openingTagRe))\n break;\n\n hasTag = true;\n\n // Get the tag type.\n type = scanner.scan(tagRe) || 'name';\n scanner.scan(whiteRe);\n\n // Get the tag value.\n if (type === '=') {\n value = scanner.scanUntil(equalsRe);\n scanner.scan(equalsRe);\n scanner.scanUntil(closingTagRe);\n } else if (type === '{') {\n value = scanner.scanUntil(closingCurlyRe);\n scanner.scan(curlyRe);\n scanner.scanUntil(closingTagRe);\n type = '&';\n } else {\n value = scanner.scanUntil(closingTagRe);\n }\n\n // Match the closing tag.\n if (!scanner.scan(closingTagRe))\n throw new Error('Unclosed tag at ' + scanner.pos);\n\n if (type == '>') {\n token = [ type, value, start, scanner.pos, indentation, tagIndex, lineHasNonSpace ];\n } else {\n token = [ type, value, start, scanner.pos ];\n }\n tagIndex++;\n tokens.push(token);\n\n if (type === '#' || type === '^') {\n sections.push(token);\n } else if (type === '/') {\n // Check section nesting.\n openSection = sections.pop();\n\n if (!openSection)\n throw new Error('Unopened section \"' + value + '\" at ' + start);\n\n if (openSection[1] !== value)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + start);\n } else if (type === 'name' || type === '{' || type === '&') {\n nonSpace = true;\n } else if (type === '=') {\n // Set the tags for the next time around.\n compileTags(value);\n }\n }\n\n stripSpace();\n\n // Make sure there are no open sections when we're done.\n openSection = sections.pop();\n\n if (openSection)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + scanner.pos);\n\n return nestTokens(squashTokens(tokens));\n }\n\n /**\n * Combines the values of consecutive text tokens in the given `tokens` array\n * to a single token.\n */\n function squashTokens (tokens) {\n var squashedTokens = [];\n\n var token, lastToken;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n if (token) {\n if (token[0] === 'text' && lastToken && lastToken[0] === 'text') {\n lastToken[1] += token[1];\n lastToken[3] = token[3];\n } else {\n squashedTokens.push(token);\n lastToken = token;\n }\n }\n }\n\n return squashedTokens;\n }\n\n /**\n * Forms the given array of `tokens` into a nested tree structure where\n * tokens that represent a section have two additional items: 1) an array of\n * all tokens that appear in that section and 2) the index in the original\n * template that represents the end of that section.\n */\n function nestTokens (tokens) {\n var nestedTokens = [];\n var collector = nestedTokens;\n var sections = [];\n\n var token, section;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n switch (token[0]) {\n case '#':\n case '^':\n collector.push(token);\n sections.push(token);\n collector = token[4] = [];\n break;\n case '/':\n section = sections.pop();\n section[5] = token[2];\n collector = sections.length > 0 ? sections[sections.length - 1][4] : nestedTokens;\n break;\n default:\n collector.push(token);\n }\n }\n\n return nestedTokens;\n }\n\n /**\n * A simple string scanner that is used by the template parser to find\n * tokens in template strings.\n */\n function Scanner (string) {\n this.string = string;\n this.tail = string;\n this.pos = 0;\n }\n\n /**\n * Returns `true` if the tail is empty (end of string).\n */\n Scanner.prototype.eos = function eos () {\n return this.tail === '';\n };\n\n /**\n * Tries to match the given regular expression at the current position.\n * Returns the matched text if it can match, the empty string otherwise.\n */\n Scanner.prototype.scan = function scan (re) {\n var match = this.tail.match(re);\n\n if (!match || match.index !== 0)\n return '';\n\n var string = match[0];\n\n this.tail = this.tail.substring(string.length);\n this.pos += string.length;\n\n return string;\n };\n\n /**\n * Skips all text until the given regular expression can be matched. Returns\n * the skipped string, which is the entire tail if no match can be made.\n */\n Scanner.prototype.scanUntil = function scanUntil (re) {\n var index = this.tail.search(re), match;\n\n switch (index) {\n case -1:\n match = this.tail;\n this.tail = '';\n break;\n case 0:\n match = '';\n break;\n default:\n match = this.tail.substring(0, index);\n this.tail = this.tail.substring(index);\n }\n\n this.pos += match.length;\n\n return match;\n };\n\n /**\n * Represents a rendering context by wrapping a view object and\n * maintaining a reference to the parent context.\n */\n function Context (view, parentContext) {\n this.view = view;\n this.cache = { '.': this.view };\n this.parent = parentContext;\n }\n\n /**\n * Creates a new context using the given view with this context\n * as the parent.\n */\n Context.prototype.push = function push (view) {\n return new Context(view, this);\n };\n\n /**\n * Returns the value of the given name in this context, traversing\n * up the context hierarchy if the value is absent in this context's view.\n */\n Context.prototype.lookup = function lookup (name) {\n var cache = this.cache;\n\n var value;\n if (cache.hasOwnProperty(name)) {\n value = cache[name];\n } else {\n var context = this, intermediateValue, names, index, lookupHit = false;\n\n while (context) {\n if (name.indexOf('.') > 0) {\n intermediateValue = context.view;\n names = name.split('.');\n index = 0;\n\n /**\n * Using the dot notion path in `name`, we descend through the\n * nested objects.\n *\n * To be certain that the lookup has been successful, we have to\n * check if the last object in the path actually has the property\n * we are looking for. We store the result in `lookupHit`.\n *\n * This is specially necessary for when the value has been set to\n * `undefined` and we want to avoid looking up parent contexts.\n *\n * In the case where dot notation is used, we consider the lookup\n * to be successful even if the last \"object\" in the path is\n * not actually an object but a primitive (e.g., a string, or an\n * integer), because it is sometimes useful to access a property\n * of an autoboxed primitive, such as the length of a string.\n **/\n while (intermediateValue != null && index < names.length) {\n if (index === names.length - 1)\n lookupHit = (\n hasProperty(intermediateValue, names[index])\n || primitiveHasOwnProperty(intermediateValue, names[index])\n );\n\n intermediateValue = intermediateValue[names[index++]];\n }\n } else {\n intermediateValue = context.view[name];\n\n /**\n * Only checking against `hasProperty`, which always returns `false` if\n * `context.view` is not an object. Deliberately omitting the check\n * against `primitiveHasOwnProperty` if dot notation is not used.\n *\n * Consider this example:\n * ```\n * Mustache.render(\"The length of a football field is {{#length}}{{length}}{{/length}}.\", {length: \"100 yards\"})\n * ```\n *\n * If we were to check also against `primitiveHasOwnProperty`, as we do\n * in the dot notation case, then render call would return:\n *\n * \"The length of a football field is 9.\"\n *\n * rather than the expected:\n *\n * \"The length of a football field is 100 yards.\"\n **/\n lookupHit = hasProperty(context.view, name);\n }\n\n if (lookupHit) {\n value = intermediateValue;\n break;\n }\n\n context = context.parent;\n }\n\n cache[name] = value;\n }\n\n if (isFunction(value))\n value = value.call(this.view);\n\n return value;\n };\n\n /**\n * A Writer knows how to take a stream of tokens and render them to a\n * string, given a context. It also maintains a cache of templates to\n * avoid the need to parse the same template twice.\n */\n function Writer () {\n this.templateCache = {\n _cache: {},\n set: function set (key, value) {\n this._cache[key] = value;\n },\n get: function get (key) {\n return this._cache[key];\n },\n clear: function clear () {\n this._cache = {};\n }\n };\n }\n\n /**\n * Clears all cached templates in this writer.\n */\n Writer.prototype.clearCache = function clearCache () {\n if (typeof this.templateCache !== 'undefined') {\n this.templateCache.clear();\n }\n };\n\n /**\n * Parses and caches the given `template` according to the given `tags` or\n * `mustache.tags` if `tags` is omitted, and returns the array of tokens\n * that is generated from the parse.\n */\n Writer.prototype.parse = function parse (template, tags) {\n var cache = this.templateCache;\n var cacheKey = template + ':' + (tags || mustache.tags).join(':');\n var isCacheEnabled = typeof cache !== 'undefined';\n var tokens = isCacheEnabled ? cache.get(cacheKey) : undefined;\n\n if (tokens == undefined) {\n tokens = parseTemplate(template, tags);\n isCacheEnabled && cache.set(cacheKey, tokens);\n }\n return tokens;\n };\n\n /**\n * High-level method that is used to render the given `template` with\n * the given `view`.\n *\n * The optional `partials` argument may be an object that contains the\n * names and templates of partials that are used in the template. It may\n * also be a function that is used to load partial templates on the fly\n * that takes a single argument: the name of the partial.\n *\n * If the optional `config` argument is given here, then it should be an\n * object with a `tags` attribute or an `escape` attribute or both.\n * If an array is passed, then it will be interpreted the same way as\n * a `tags` attribute on a `config` object.\n *\n * The `tags` attribute of a `config` object must be an array with two\n * string values: the opening and closing tags used in the template (e.g.\n * [ \"<%\", \"%>\" ]). The default is to mustache.tags.\n *\n * The `escape` attribute of a `config` object must be a function which\n * accepts a string as input and outputs a safely escaped string.\n * If an `escape` function is not provided, then an HTML-safe string\n * escaping function is used as the default.\n */\n Writer.prototype.render = function render (template, view, partials, config) {\n var tags = this.getConfigTags(config);\n var tokens = this.parse(template, tags);\n var context = (view instanceof Context) ? view : new Context(view, undefined);\n return this.renderTokens(tokens, context, partials, template, config);\n };\n\n /**\n * Low-level method that renders the given array of `tokens` using\n * the given `context` and `partials`.\n *\n * Note: The `originalTemplate` is only ever used to extract the portion\n * of the original template that was contained in a higher-order section.\n * If the template doesn't use higher-order sections, this argument may\n * be omitted.\n */\n Writer.prototype.renderTokens = function renderTokens (tokens, context, partials, originalTemplate, config) {\n var buffer = '';\n\n var token, symbol, value;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n value = undefined;\n token = tokens[i];\n symbol = token[0];\n\n if (symbol === '#') value = this.renderSection(token, context, partials, originalTemplate, config);\n else if (symbol === '^') value = this.renderInverted(token, context, partials, originalTemplate, config);\n else if (symbol === '>') value = this.renderPartial(token, context, partials, config);\n else if (symbol === '&') value = this.unescapedValue(token, context);\n else if (symbol === 'name') value = this.escapedValue(token, context, config);\n else if (symbol === 'text') value = this.rawValue(token);\n\n if (value !== undefined)\n buffer += value;\n }\n\n return buffer;\n };\n\n Writer.prototype.renderSection = function renderSection (token, context, partials, originalTemplate, config) {\n var self = this;\n var buffer = '';\n var value = context.lookup(token[1]);\n\n // This function is used to render an arbitrary template\n // in the current context by higher-order sections.\n function subRender (template) {\n return self.render(template, context, partials, config);\n }\n\n if (!value) return;\n\n if (isArray(value)) {\n for (var j = 0, valueLength = value.length; j < valueLength; ++j) {\n buffer += this.renderTokens(token[4], context.push(value[j]), partials, originalTemplate, config);\n }\n } else if (typeof value === 'object' || typeof value === 'string' || typeof value === 'number') {\n buffer += this.renderTokens(token[4], context.push(value), partials, originalTemplate, config);\n } else if (isFunction(value)) {\n if (typeof originalTemplate !== 'string')\n throw new Error('Cannot use higher-order sections without the original template');\n\n // Extract the portion of the original template that the section contains.\n value = value.call(context.view, originalTemplate.slice(token[3], token[5]), subRender);\n\n if (value != null)\n buffer += value;\n } else {\n buffer += this.renderTokens(token[4], context, partials, originalTemplate, config);\n }\n return buffer;\n };\n\n Writer.prototype.renderInverted = function renderInverted (token, context, partials, originalTemplate, config) {\n var value = context.lookup(token[1]);\n\n // Use JavaScript's definition of falsy. Include empty arrays.\n // See https://github.com/janl/mustache.js/issues/186\n if (!value || (isArray(value) && value.length === 0))\n return this.renderTokens(token[4], context, partials, originalTemplate, config);\n };\n\n Writer.prototype.indentPartial = function indentPartial (partial, indentation, lineHasNonSpace) {\n var filteredIndentation = indentation.replace(/[^ \\t]/g, '');\n var partialByNl = partial.split('\\n');\n for (var i = 0; i < partialByNl.length; i++) {\n if (partialByNl[i].length && (i > 0 || !lineHasNonSpace)) {\n partialByNl[i] = filteredIndentation + partialByNl[i];\n }\n }\n return partialByNl.join('\\n');\n };\n\n Writer.prototype.renderPartial = function renderPartial (token, context, partials, config) {\n if (!partials) return;\n var tags = this.getConfigTags(config);\n\n var value = isFunction(partials) ? partials(token[1]) : partials[token[1]];\n if (value != null) {\n var lineHasNonSpace = token[6];\n var tagIndex = token[5];\n var indentation = token[4];\n var indentedValue = value;\n if (tagIndex == 0 && indentation) {\n indentedValue = this.indentPartial(value, indentation, lineHasNonSpace);\n }\n var tokens = this.parse(indentedValue, tags);\n return this.renderTokens(tokens, context, partials, indentedValue, config);\n }\n };\n\n Writer.prototype.unescapedValue = function unescapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return value;\n };\n\n Writer.prototype.escapedValue = function escapedValue (token, context, config) {\n var escape = this.getConfigEscape(config) || mustache.escape;\n var value = context.lookup(token[1]);\n if (value != null)\n return (typeof value === 'number' && escape === mustache.escape) ? String(value) : escape(value);\n };\n\n Writer.prototype.rawValue = function rawValue (token) {\n return token[1];\n };\n\n Writer.prototype.getConfigTags = function getConfigTags (config) {\n if (isArray(config)) {\n return config;\n }\n else if (config && typeof config === 'object') {\n return config.tags;\n }\n else {\n return undefined;\n }\n };\n\n Writer.prototype.getConfigEscape = function getConfigEscape (config) {\n if (config && typeof config === 'object' && !isArray(config)) {\n return config.escape;\n }\n else {\n return undefined;\n }\n };\n\n var mustache = {\n name: 'mustache.js',\n version: '4.2.0',\n tags: [ '{{', '}}' ],\n clearCache: undefined,\n escape: undefined,\n parse: undefined,\n render: undefined,\n Scanner: undefined,\n Context: undefined,\n Writer: undefined,\n /**\n * Allows a user to override the default caching strategy, by providing an\n * object with set, get and clear methods. This can also be used to disable\n * the cache by setting it to the literal `undefined`.\n */\n set templateCache (cache) {\n defaultWriter.templateCache = cache;\n },\n /**\n * Gets the default or overridden caching object from the default writer.\n */\n get templateCache () {\n return defaultWriter.templateCache;\n }\n };\n\n // All high-level mustache.* functions use this writer.\n var defaultWriter = new Writer();\n\n /**\n * Clears all cached templates in the default writer.\n */\n mustache.clearCache = function clearCache () {\n return defaultWriter.clearCache();\n };\n\n /**\n * Parses and caches the given template in the default writer and returns the\n * array of tokens it contains. Doing this ahead of time avoids the need to\n * parse templates on the fly as they are rendered.\n */\n mustache.parse = function parse (template, tags) {\n return defaultWriter.parse(template, tags);\n };\n\n /**\n * Renders the `template` with the given `view`, `partials`, and `config`\n * using the default writer.\n */\n mustache.render = function render (template, view, partials, config) {\n if (typeof template !== 'string') {\n throw new TypeError('Invalid template! Template should be a \"string\" ' +\n 'but \"' + typeStr(template) + '\" was given as the first ' +\n 'argument for mustache#render(template, view, partials)');\n }\n\n return defaultWriter.render(template, view, partials, config);\n };\n\n // Export the escaping function so that the user may override it.\n // See https://github.com/janl/mustache.js/issues/244\n mustache.escape = escapeHtml;\n\n // Export these mainly for testing, but also for advanced usage.\n mustache.Scanner = Scanner;\n mustache.Context = Context;\n mustache.Writer = Writer;\n\n return mustache;\n\n})));\n"],"sourceRoot":""}