{"version":3,"sources":["index.js","micromodal.min.js","svg4everybody.min.js","choices.min.js","glide.min.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC1bA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACvBA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA","file":"vendor.js","sourcesContent":["(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.raterJs = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i 1) {\r\n throw new Error(\"step must be a number between 0 and 1\");\r\n }\r\n }\r\n\r\n var elem = options.element;\r\n var reverse = options.reverse;\r\n var stars = options.max || 5;\r\n var starSize = options.starSize || 16;\r\n var step = options.step || 1;\r\n var onHover = options.onHover;\r\n var onLeave = options.onLeave;\r\n var rating = null;\r\n var myRating;\r\n elem.classList.add(\"star-rating\");\r\n var div = document.createElement(\"div\");\r\n div.classList.add(\"star-value\");\r\n\r\n if (reverse) {\r\n div.classList.add(\"rtl\");\r\n }\r\n\r\n div.style.backgroundSize = starSize + \"px\";\r\n elem.appendChild(div);\r\n elem.style.width = starSize * stars + \"px\";\r\n elem.style.height = starSize + \"px\";\r\n elem.style.backgroundSize = starSize + \"px\";\r\n var callback = options.rateCallback;\r\n var disabled = !!options.readOnly;\r\n var disableText;\r\n var isRating = false;\r\n var isBusyText = options.isBusyText;\r\n var currentRating;\r\n var ratingText;\r\n\r\n if (typeof options.disableText !== \"undefined\") {\r\n disableText = options.disableText;\r\n } else {\r\n disableText = \"{rating}/{maxRating}\";\r\n }\r\n\r\n if (typeof options.ratingText !== \"undefined\") {\r\n ratingText = options.ratingText;\r\n } else {\r\n ratingText = \"{rating}/{maxRating}\";\r\n }\r\n\r\n if (options.rating) {\r\n setRating(options.rating);\r\n } else {\r\n var dataRating = elem.dataset.rating;\r\n\r\n if (dataRating) {\r\n setRating(+dataRating);\r\n }\r\n }\r\n\r\n if (!rating) {\r\n elem.querySelector(\".star-value\").style.width = \"0px\";\r\n }\r\n\r\n if (disabled) {\r\n disable();\r\n } //private methods\r\n\r\n\r\n function onMouseMove(e) {\r\n onMove(e, false);\r\n }\r\n /**\r\n * Called by eventhandlers when mouse or touch events are triggered\r\n * @param {MouseEvent} e\r\n */\r\n\r\n\r\n function onMove(e, isTouch) {\r\n if (disabled === true || isRating === true) {\r\n return;\r\n }\r\n\r\n var xCoor = null;\r\n var percent;\r\n var width = elem.offsetWidth;\r\n var parentOffset = elem.getBoundingClientRect();\r\n\r\n if (reverse) {\r\n if (isTouch) {\r\n xCoor = e.changedTouches[0].pageX - parentOffset.left;\r\n } else {\r\n xCoor = e.pageX - window.scrollX - parentOffset.left;\r\n }\r\n\r\n var relXRtl = width - xCoor;\r\n var valueForDivision = width / 100;\r\n percent = relXRtl / valueForDivision;\r\n } else {\r\n if (isTouch) {\r\n xCoor = e.changedTouches[0].pageX - parentOffset.left;\r\n } else {\r\n xCoor = e.offsetX;\r\n }\r\n\r\n percent = xCoor / width * 100;\r\n }\r\n\r\n if (percent < 101) {\r\n if (step === 1) {\r\n currentRating = Math.ceil(percent / 100 * stars);\r\n } else {\r\n var rat = percent / 100 * stars;\r\n\r\n for (var i = 0;; i += step) {\r\n if (i >= rat) {\r\n currentRating = i;\r\n break;\r\n }\r\n }\r\n } //todo: check why this happens and fix\r\n\r\n\r\n if (currentRating > stars) {\r\n currentRating = stars;\r\n }\r\n\r\n elem.querySelector(\".star-value\").style.width = currentRating / stars * 100 + \"%\";\r\n\r\n if (showToolTip) {\r\n var toolTip = ratingText.replace(\"{rating}\", currentRating);\r\n toolTip = toolTip.replace(\"{maxRating}\", stars);\r\n elem.setAttribute(\"title\", toolTip);\r\n }\r\n\r\n if (typeof onHover === \"function\") {\r\n onHover(currentRating, rating);\r\n }\r\n }\r\n }\r\n /**\r\n * Called when mouse is released. This function will update the view with the rating.\r\n * @param {MouseEvent} e\r\n */\r\n\r\n\r\n function onStarOut(e) {\r\n if (!rating) {\r\n elem.querySelector(\".star-value\").style.width = \"0%\";\r\n elem.removeAttribute(\"data-rating\");\r\n } else {\r\n elem.querySelector(\".star-value\").style.width = rating / stars * 100 + \"%\";\r\n elem.setAttribute(\"data-rating\", rating);\r\n }\r\n\r\n if (typeof onLeave === \"function\") {\r\n onLeave(currentRating, rating);\r\n }\r\n }\r\n /**\r\n * Called when star is clicked.\r\n * @param {MouseEvent} e\r\n */\r\n\r\n\r\n function onStarClick(e) {\r\n if (disabled === true) {\r\n return;\r\n }\r\n\r\n if (isRating === true) {\r\n return;\r\n }\r\n\r\n if (typeof callback !== \"undefined\") {\r\n isRating = true;\r\n myRating = currentRating;\r\n\r\n if (typeof isBusyText === \"undefined\") {\r\n elem.removeAttribute(\"title\");\r\n } else {\r\n elem.setAttribute(\"title\", isBusyText);\r\n }\r\n\r\n elem.classList.add(\"is-busy\");\r\n callback.call(this, myRating, function () {\r\n if (disabled === false) {\r\n elem.removeAttribute(\"title\");\r\n }\r\n\r\n isRating = false;\r\n elem.classList.remove(\"is-busy\");\r\n });\r\n }\r\n }\r\n /**\r\n * Disables the rater so that it's not possible to click the stars.\r\n */\r\n\r\n\r\n function disable() {\r\n disabled = true;\r\n elem.classList.add(\"disabled\");\r\n\r\n if (showToolTip && !!disableText) {\r\n var toolTip = disableText.replace(\"{rating}\", !!rating ? rating : 0);\r\n toolTip = toolTip.replace(\"{maxRating}\", stars);\r\n elem.setAttribute(\"title\", toolTip);\r\n } else {\r\n elem.removeAttribute(\"title\");\r\n }\r\n }\r\n /**\r\n * Enabled the rater so that it's possible to click the stars.\r\n */\r\n\r\n\r\n function enable() {\r\n disabled = false;\r\n elem.removeAttribute(\"title\");\r\n elem.classList.remove(\"disabled\");\r\n }\r\n /**\r\n * Sets the rating\r\n */\r\n\r\n\r\n function setRating(value) {\r\n if (typeof value === \"undefined\") {\r\n throw new Error(\"Value not set.\");\r\n }\r\n\r\n if (value === null) {\r\n throw new Error(\"Value cannot be null.\");\r\n }\r\n\r\n if (typeof value !== \"number\") {\r\n throw new Error(\"Value must be a number.\");\r\n }\r\n\r\n if (value < 0 || value > stars) {\r\n throw new Error(\"Value too high. Please set a rating of \" + stars + \" or below.\");\r\n }\r\n\r\n rating = value;\r\n elem.querySelector(\".star-value\").style.width = value / stars * 100 + \"%\";\r\n elem.setAttribute(\"data-rating\", value);\r\n }\r\n /**\r\n * Gets the rating\r\n */\r\n\r\n\r\n function getRating() {\r\n return rating;\r\n }\r\n /**\r\n * Set the rating to a value to inducate it's not rated.\r\n */\r\n\r\n\r\n function clear() {\r\n rating = null;\r\n elem.querySelector(\".star-value\").style.width = \"0px\";\r\n elem.removeAttribute(\"title\");\r\n }\r\n /**\r\n * Remove event handlers.\r\n */\r\n\r\n\r\n function dispose() {\r\n elem.removeEventListener(\"mousemove\", onMouseMove);\r\n elem.removeEventListener(\"mouseleave\", onStarOut);\r\n elem.removeEventListener(\"click\", onStarClick);\r\n elem.removeEventListener(\"touchmove\", handleMove, false);\r\n elem.removeEventListener(\"touchstart\", handleStart, false);\r\n elem.removeEventListener(\"touchend\", handleEnd, false);\r\n elem.removeEventListener(\"touchcancel\", handleCancel, false);\r\n }\r\n\r\n elem.addEventListener(\"mousemove\", onMouseMove);\r\n elem.addEventListener(\"mouseleave\", onStarOut);\r\n var module = {\r\n setRating: setRating,\r\n getRating: getRating,\r\n disable: disable,\r\n enable: enable,\r\n clear: clear,\r\n dispose: dispose,\r\n\r\n get element() {\r\n return elem;\r\n }\r\n\r\n };\r\n /**\r\n * Handles touchmove event.\r\n * @param {TouchEvent} e\r\n */\r\n\r\n function handleMove(e) {\r\n e.preventDefault();\r\n onMove(e, true);\r\n }\r\n /**\r\n * Handles touchstart event.\r\n * @param {TouchEvent} e \r\n */\r\n\r\n\r\n function handleStart(e) {\r\n e.preventDefault();\r\n onMove(e, true);\r\n }\r\n /**\r\n * Handles touchend event.\r\n * @param {TouchEvent} e \r\n */\r\n\r\n\r\n function handleEnd(evt) {\r\n evt.preventDefault();\r\n onMove(evt, true);\r\n onStarClick.call(module);\r\n }\r\n /**\r\n * Handles touchend event.\r\n * @param {TouchEvent} e \r\n */\r\n\r\n\r\n function handleCancel(e) {\r\n e.preventDefault();\r\n onStarOut(e);\r\n }\r\n\r\n elem.addEventListener(\"click\", onStarClick.bind(module));\r\n elem.addEventListener(\"touchmove\", handleMove, false);\r\n elem.addEventListener(\"touchstart\", handleStart, false);\r\n elem.addEventListener(\"touchend\", handleEnd, false);\r\n elem.addEventListener(\"touchcancel\", handleCancel, false);\r\n return module;\r\n};\r\n\r\n},{\"./style.css\":2}],2:[function(require,module,exports){\r\nvar css = \".star-rating {\\n width: 0;\\n position: relative;\\n display: inline-block;\\n background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDguOSIgaGVpZ2h0PSIxMDMuNiIgdmlld0JveD0iMCAwIDEwOC45IDEwMy42Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6I2UzZTZlNjt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPnN0YXJfMDwvdGl0bGU+PGcgaWQ9IkxheWVyXzIiIGRhdGEtbmFtZT0iTGF5ZXIgMiI+PGcgaWQ9IkxheWVyXzEtMiIgZGF0YS1uYW1lPSJMYXllciAxIj48cG9seWdvbiBjbGFzcz0iY2xzLTEiIHBvaW50cz0iMTA4LjkgMzkuNiA3MS4zIDM0LjEgNTQuNCAwIDM3LjYgMzQuMSAwIDM5LjYgMjcuMiA2Ni4xIDIwLjggMTAzLjYgNTQuNCA4NS45IDg4LjEgMTAzLjYgODEuNyA2Ni4xIDEwOC45IDM5LjYiLz48L2c+PC9nPjwvc3ZnPg0K);\\n background-position: 0 0;\\n background-repeat: repeat-x;\\n cursor: pointer;\\n}\\n.star-rating .star-value {\\n position: absolute;\\n height: 100%;\\n width: 100%;\\n background: url('data:image/svg+xml;base64,PHN2Zw0KCXhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwOC45IiBoZWlnaHQ9IjEwMy42IiB2aWV3Qm94PSIwIDAgMTA4LjkgMTAzLjYiPg0KCTxkZWZzPg0KCQk8c3R5bGU+LmNscy0xe2ZpbGw6I2YxYzk0Nzt9PC9zdHlsZT4NCgk8L2RlZnM+DQoJPHRpdGxlPnN0YXIxPC90aXRsZT4NCgk8ZyBpZD0iTGF5ZXJfMiIgZGF0YS1uYW1lPSJMYXllciAyIj4NCgkJPGcgaWQ9IkxheWVyXzEtMiIgZGF0YS1uYW1lPSJMYXllciAxIj4NCgkJCTxwb2x5Z29uIGNsYXNzPSJjbHMtMSIgcG9pbnRzPSI1NC40IDAgNzEuMyAzNC4xIDEwOC45IDM5LjYgODEuNyA2Ni4xIDg4LjEgMTAzLjYgNTQuNCA4NS45IDIwLjggMTAzLjYgMjcuMiA2Ni4xIDAgMzkuNiAzNy42IDM0LjEgNTQuNCAwIi8+DQoJCTwvZz4NCgk8L2c+DQo8L3N2Zz4NCg==');\\n background-repeat: repeat-x;\\n}\\n.star-rating.disabled {\\n cursor: default;\\n}\\n.star-rating.is-busy {\\n cursor: wait;\\n}\\n.star-rating .star-value.rtl {\\n -moz-transform: scaleX(-1);\\n -o-transform: scaleX(-1);\\n -webkit-transform: scaleX(-1);\\n transform: scaleX(-1);\\n filter: FlipH;\\n -ms-filter: \\\"FlipH\\\";\\n right: 0;\\n left: auto;\\n}\\n\"; (require(\"browserify-css\").createStyle(css, { \"href\": \"lib\\\\style.css\" }, { \"insertAt\": \"bottom\" })); module.exports = css;\r\n},{\"browserify-css\":3}],3:[function(require,module,exports){\r\n'use strict';\r\n// For more information about browser field, check out the browser field at https://github.com/substack/browserify-handbook#browser-field.\r\n\r\nvar styleElementsInsertedAtTop = [];\r\n\r\nvar insertStyleElement = function(styleElement, options) {\r\n var head = document.head || document.getElementsByTagName('head')[0];\r\n var lastStyleElementInsertedAtTop = styleElementsInsertedAtTop[styleElementsInsertedAtTop.length - 1];\r\n\r\n options = options || {};\r\n options.insertAt = options.insertAt || 'bottom';\r\n\r\n if (options.insertAt === 'top') {\r\n if (!lastStyleElementInsertedAtTop) {\r\n head.insertBefore(styleElement, head.firstChild);\r\n } else if (lastStyleElementInsertedAtTop.nextSibling) {\r\n head.insertBefore(styleElement, lastStyleElementInsertedAtTop.nextSibling);\r\n } else {\r\n head.appendChild(styleElement);\r\n }\r\n styleElementsInsertedAtTop.push(styleElement);\r\n } else if (options.insertAt === 'bottom') {\r\n head.appendChild(styleElement);\r\n } else {\r\n throw new Error('Invalid value for parameter \\'insertAt\\'. Must be \\'top\\' or \\'bottom\\'.');\r\n }\r\n};\r\n\r\nmodule.exports = {\r\n // Create a tag with optional data attributes\r\n createLink: function(href, attributes) {\r\n var head = document.head || document.getElementsByTagName('head')[0];\r\n var link = document.createElement('link');\r\n\r\n link.href = href;\r\n link.rel = 'stylesheet';\r\n\r\n for (var key in attributes) {\r\n if ( ! attributes.hasOwnProperty(key)) {\r\n continue;\r\n }\r\n var value = attributes[key];\r\n link.setAttribute('data-' + key, value);\r\n }\r\n\r\n head.appendChild(link);\r\n },\r\n // Create a