1(self.webpackChunkakw=self.webpackChunkakw||[]).push([["vendors"],{
vendor: 17,986 bytes, line 1
1"./node_modules/pristinejs/dist/pristine.js":function(module){eval("(function (global, factory) {\n true ? module.exports = factory() :\n 0;\n}(this, (function () { 'use strict';\n\n var lang = {\n en: {\n required: \"This field is required\",\n email: \"This field requires a valid e-mail address\",\n number: \"This field requires a number\",\n integer: \"This field requires an integer value\",\n url: \"This field requires a valid website URL\",\n tel: \"This field requires a valid telephone number\",\n maxlength: \"This fields length must be < ${1}\",\n minlength: \"This fields length must be > ${1}\",\n min: \"Minimum value for this field is ${1}\",\n max: \"Maximum value for this field is ${1}\",\n pattern: \"Please match the requested format\",\n equals: \"The two fields do not match\"\n }\n };\n\n function findAncestor(el, cls) {\n while ((el = el.parentElement) && !el.classList.contains(cls)) {}\n return el;\n }\n\n function tmpl(o) {\n var _arguments = arguments;\n\n return this.replace(/\\${([^{}]*)}/g, function (a, b) {\n return _arguments[b];\n });\n }\n\n function groupedElemCount(input) {\n return input.pristine.self.form.querySelectorAll('input[name=\"' + input.getAttribute('name') + '\"]:checked').length;\n }\n\n function mergeConfig(obj1, obj2) {\n for (var attr in obj2) {\n if (!(attr in obj1)) {\n obj1[attr] = obj2[attr];\n }\n }\n return obj1;\n }\n\n var defaultConfig = {\n classTo: 'form-group',\n errorClass: 'has-danger',\n successClass: 'has-success',\n errorTextParent: 'form-group',\n errorTextTag: 'div',\n errorTextClass: 'text-help'\n };\n\n var PRISTINE_ERROR = 'pristine-error';\n var SELECTOR = \"input:not([type^=hidden]):not([type^=submit]), select, textarea\";\n var ALLOWED_ATTRIBUTES = [\"required\", \"min\", \"max\", 'minlength', 'maxlength', 'pattern'];\n var EMAIL_REGEX = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n\n var MESSAGE_REGEX = /-message(?:-([a-z]{2}(?:_[A-Z]{2})?))?/; // matches, -message, -message-en, -message-en_US\n var currentLocale = 'en';\n var validators = {};\n\n var _ = function _(name, validator) {\n validator.name = name;\n if (validator.priority === undefined) validator.priority = 1;\n validators[name] = validator;\n };\n\n _('text', { fn: function fn(val) {\n return true;\n }, priority: 0 });\n _('required', { fn: function fn(val) {\n return this.type === 'radio' || this.type === 'checkbox' ? groupedElemCount(this) : val !== undefined && val !== '';\n }, priority: 99, halt: true });\n _('email', { fn: function fn(val) {\n return !val || EMAIL_REGEX.test(val);\n } });\n _('number', { fn: function fn(val) {\n return !val || !isNaN(parseFloat(val));\n }, priority: 2 });\n _('integer', { fn: function fn(val) {\n return !val || /^\\d+$/.test(val);\n } });\n _('minlength', { fn: function fn(val, length) {\n return !val || val.length >= parseInt(length);\n } });\n _('maxlength', { fn: function fn(val, length) {\n return !val || val.length <= parseInt(length);\n } });\n _('min', { fn: function fn(val, limit) {\n return !val || (this.type === 'checkbox' ? groupedElemCount(this) >= parseInt(limit) : parseFloat(val) >= parseFloat(limit));\n } });\n _('max', { fn: function fn(val, limit) {\n return !val || (this.type === 'checkbox' ? groupedElemCount(this) <= parseInt(limit) : parseFloat(val) <= parseFloat(limit));\n } });\n _('pattern', { fn: function fn(val, pattern) {\n var m = pattern.match(new RegExp('^/(.*?)/([gimy]*)$'));return !val || new RegExp(m[1], m[2]).test(val);\n } });\n _('equals', { fn: function fn(val, otherFieldSelector) {\n var other = document.querySelector(otherFieldSelector);return other && (!val && !other.value || other.value === val);\n } });\n\n function Pristine(form, config, live) {\n\n var self = this;\n\n init(form, config, live);\n\n function init(form, config, live) {\n\n form.setAttribute(\"novalidate\", \"true\");\n\n self.form = form;\n self.config = mergeConfig(config || {}, defaultConfig);\n self.live = !(live === false);\n self.fields = Array.from(form.querySelectorAll(SELECTOR)).map(function (input) {\n\n var fns = [];\n var params = {};\n var messages = {};\n\n [].forEach.call(input.attributes, function (attr) {\n if (/^data-pristine-/.test(attr.name)) {\n var name = attr.name.substr(14);\n var messageMatch = name.match(MESSAGE_REGEX);\n if (messageMatch !== null) {\n var locale = messageMatch[1] === undefined ? 'en' : messageMatch[1];\n if (!messages.hasOwnProperty(locale)) messages[locale] = {};\n messages[locale][name.slice(0, name.length - messageMatch[0].length)] = attr.value;\n return;\n }\n if (name === 'type') name = attr.value;\n _addValidatorToField(fns, params, name, attr.value);\n } else if (~ALLOWED_ATTRIBUTES.indexOf(attr.name)) {\n _addValidatorToField(fns, params, attr.name, attr.value);\n } else if (attr.name === 'type') {\n _addValidatorToField(fns, params, attr.value);\n }\n });\n\n fns.sort(function (a, b) {\n return b.priority - a.priority;\n });\n\n self.live && input.addEventListener(!~['radio', 'checkbox'].indexOf(input.getAttribute('type')) ? 'input' : 'change', function (e) {\n self.validate(e.target);\n }.bind(self));\n\n return input.pristine = { input: input, validators: fns, params: params, messages: messages, self: self };\n }.bind(self));\n }\n\n function _addValidatorToField(fns, params, name, value) {\n var validator = validators[name];\n if (validator) {\n fns.push(validator);\n if (value) {\n var valueParams = name === \"pattern\" ? [value] : value.split(',');\n valueParams.unshift(null); // placeholder for input's value\n params[name] = valueParams;\n }\n }\n }\n\n /***\n * Checks whether the form/input elements are valid\n * @param input => input element(s) or a jquery selector, null for full form validation\n * @param silent => do not show error messages, just return true/false\n * @returns {boolean} return true when valid false otherwise\n */\n self.validate = function (input, silent) {\n silent = input && silent === true || input === true;\n var fields = self.fields;\n if (input !== true && input !== false) {\n if (input instanceof HTMLElement) {\n fields = [input.pristine];\n } else if (input instanceof NodeList || input instanceof (window.$ || Array) || input instanceof Array) {\n fields = Array.from(input).map(function (el) {\n return el.pristine;\n });\n }\n }\n\n var valid = true;\n\n for (var i = 0; fields[i]; i++) {\n var field = fields[i];\n if (_validateField(field)) {\n !silent && _showSuccess(field);\n } else {\n valid = false;\n !silent && _showError(field);\n }\n }\n return valid;\n };\n\n /***\n * Get errors of a specific field or the whole form\n * @param input\n * @returns {Array|*}\n */\n self.getErrors = function (input) {\n if (!input) {\n var erroneousFields = [];\n for (var i = 0; i < self.fields.length; i++) {\n var field = self.fields[i];\n if (field.errors.length) {\n erroneousFields.push({ input: field.input, errors: field.errors });\n }\n }\n return erroneousFields;\n }\n if (input.tagName && input.tagName.toLowerCase() === \"select\") {\n return input.pristine.errors;\n }\n return input.length ? input[0].pristine.errors : input.pristine.errors;\n };\n\n /***\n * Validates a single field, all validator functions are called and error messages are generated\n * when a validator fails\n * @param field\n * @returns {boolean}\n * @private\n */\n function _validateField(field) {\n var errors = [];\n var valid = true;\n for (var i = 0; field.validators[i]; i++) {\n var validator = field.validators[i];\n var params = field.params[validator.name] ? field.params[validator.name] : [];\n params[0] = field.input.value;\n if (!validator.fn.apply(field.input, params)) {\n valid = false;\n\n if (typeof validator.msg === \"function\") {\n errors.push(validator.msg(field.input.value, params));\n } else if (typeof validator.msg === \"string\") {\n errors.push(tmpl.apply(validator.msg, params));\n } else if (validator.msg === Object(validator.msg) && validator.msg[currentLocale]) {\n // typeof generates unnecessary babel code\n errors.push(tmpl.apply(validator.msg[currentLocale], params));\n } else if (field.messages[currentLocale] && field.messages[currentLocale][validator.name]) {\n errors.push(tmpl.apply(field.messages[currentLocale][validator.name], params));\n } else if (lang[currentLocale] && lang[currentLocale][validator.name]) {\n errors.push(tmpl.apply(lang[currentLocale][validator.name], params));\n }\n\n if (validator.halt === true) {\n break;\n }\n }\n }\n field.errors = errors;\n return valid;\n }\n\n /***\n * Add a validator to a specific dom element in a form\n * @param elem => The dom element where the validator is applied to\n * @param fn => validator function\n * @param msg => message to show when validation fails. Supports templating. ${0} for the input's value, ${1} and\n * so on are for the attribute values\n * @param priority => priority of the validator function, higher valued function gets called first.\n * @param halt => whether validation should stop for this field after current validation function\n */\n self.addValidator = function (elem, fn, msg, priority, halt) {\n if (elem instanceof HTMLElement) {\n elem.pristine.validators.push({ fn: fn, msg: msg, priority: priority, halt: halt });\n elem.pristine.validators.sort(function (a, b) {\n return b.priority - a.priority;\n });\n } else {\n console.warn(\"The parameter elem must be a dom element\");\n }\n };\n\n /***\n * An utility function that returns a 2-element array, first one is the element where error/success class is\n * applied. 2nd one is the element where error message is displayed. 2nd element is created if doesn't exist and cached.\n * @param field\n * @returns {*}\n * @private\n */\n function _getErrorElements(field) {\n if (field.errorElements) {\n return field.errorElements;\n }\n var errorClassElement = findAncestor(field.input, self.config.classTo);\n var errorTextParent = null,\n errorTextElement = null;\n if (self.config.classTo === self.config.errorTextParent) {\n errorTextParent = errorClassElement;\n } else {\n errorTextParent = errorClassElement.querySelector('.' + self.config.errorTextParent);\n }\n if (errorTextParent) {\n errorTextElement = errorTextParent.querySelector('.' + PRISTINE_ERROR);\n if (!errorTextElement) {\n errorTextElement = document.createElement(self.config.errorTextTag);\n errorTextElement.className = PRISTINE_ERROR + ' ' + self.config.errorTextClass;\n errorTextParent.appendChild(errorTextElement);\n errorTextElement.pristineDisplay = errorTextElement.style.display;\n }\n }\n return field.errorElements = [errorClassElement, errorTextElement];\n }\n\n function _showError(field) {\n var errorElements = _getErrorElements(field);\n var errorClassElement = errorElements[0],\n errorTextElement = errorElements[1];\n\n if (errorClassElement) {\n errorClassElement.classList.remove(self.config.successClass);\n errorClassElement.classList.add(self.config.errorClass);\n }\n if (errorTextElement) {\n errorTextElement.innerHTML = field.errors.join('<br/>');\n errorTextElement.style.display = errorTextElement.pristineDisplay || '';\n }\n }\n\n /***\n * Adds error to a specific field\n * @param input\n * @param error\n */\n self.addError = function (input, error) {\n input = input.length ? input[0] : input;\n input.pristine.errors.push(error);\n _showError(input.pristine);\n };\n\n function _removeError(field) {\n var errorElements = _getErrorElements(field);\n var errorClassElement = errorElements[0],\n errorTextElement = errorElements[1];\n if (errorClassElement) {\n // IE > 9 doesn't support multiple class removal\n errorClassElement.classList.remove(self.config.errorClass);\n errorClassElement.classList.remove(self.config.successClass);\n }\n if (errorTextElement) {\n errorTextElement.innerHTML = '';\n errorTextElement.style.display = 'none';\n }\n return errorElements;\n }\n\n function _showSuccess(field) {\n var errorClassElement = _removeError(field)[0];\n errorClassElement && errorClassElement.classList.add(self.config.successClass);\n }\n\n /***\n * Resets the errors\n */\n self.reset = function () {\n for (var i = 0; self.fields[i]; i++) {\n self.fields[i].errorElements = null;\n }\n Array.from(self.form.querySelectorAll('.' + PRISTINE_ERROR)).map(function (elem) {\n elem.parentNode.removeChild(elem);\n });\n Array.from(self.form.querySelectorAll('.' + self.config.classTo)).map(function (elem) {\n elem.classList.remove(self.config.successClass);\n elem.classList.remove(self.config.errorClass);\n });\n };\n\n /***\n * Resets the errors and deletes all pristine fields\n */\n self.destroy = function () {\n self.reset();\n self.fields.forEach(function (field) {\n delete field.input.pristine;\n });\n self.fields = [];\n };\n\n self.setGlobalConfig = function (config) {\n defaultConfig = config;\n };\n\n return self;\n }\n\n /***\n *\n * @param name => Name of the global validator\n * @param fn => validator function\n * @param msg => message to show when validation fails. Supports templating. ${0} for the input's value, ${1} and\n * so on are for the attribute values\n * @param priority => priority of the validator function, higher valued function gets called first.\n * @param halt => whether validation should stop for this field after current validation function\n */\n Pristine.addValidator = function (name, fn, msg, priority, halt) {\n _(name, { fn: fn, msg: msg, priority: priority, halt: halt });\n };\n\n Pristine.addMessages = function (locale, messages) {\n var langObj = lang.hasOwnProperty(locale) ? lang[locale] : lang[locale] = {};\n\n Object.keys(messages).forEach(function (key, index) {\n langObj[key] = messages[key];\n });\n };\n\n Pristine.setLocale = function (locale) {\n currentLocale = locale;\n };\n\n return Pristine;\n\n})));\n\n\n//# sourceURL=webpack://akw/./node_modules/pristinejs/dist/pristine.js?")},
vendor: 9,204 bytes, line 1
1"./node_modules/tocca/Tocca.js":function(){eval("/**\n *\n * Author: Gianluca Guarini\n * Contact: [email protected]\n * Website: http://www.gianlucaguarini.com/\n * Twitter: @gianlucaguarini\n *\n * Copyright (c) Gianluca Guarini\n *\n * Permission is hereby granted, free of charge, to any person\n * obtaining a copy of this software and associated documentation\n * files (the \"Software\"), to deal in the Software without\n * restriction, including without limitation the rights to use,\n * copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following\n * conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n * OTHER DEALINGS IN THE SOFTWARE.\n **/\n/* global jQuery */\n(function(doc, win) {\n if (typeof doc.createEvent !== 'function') return false // no tap events here\n // helpers\n var pointerEvent = function(type) {\n var lo = type.toLowerCase(),\n ms = 'MS' + type\n return navigator.msPointerEnabled ? ms : window.PointerEvent ? lo : false\n },\n touchEvent = function(name) {\n return 'on' + name in window ? name : false\n },\n defaults = {\n useJquery: !win.IGNORE_JQUERY && typeof jQuery !== 'undefined',\n swipeThreshold: win.SWIPE_THRESHOLD || 100,\n tapThreshold: win.TAP_THRESHOLD || 150, // range of time where a tap event could be detected\n dbltapThreshold: win.DBL_TAP_THRESHOLD || 200, // delay needed to detect a double tap\n longtapThreshold: win.LONG_TAP_THRESHOLD || 1000, // delay needed to detect a long tap\n tapPrecision: win.TAP_PRECISION / 2 || 60 / 2, // touch events boundaries ( 60px by default )\n justTouchEvents: win.JUST_ON_TOUCH_DEVICES\n },\n // was initially triggered a \"touchstart\" event?\n wasTouch = false,\n touchevents = {\n touchstart: touchEvent('touchstart') || pointerEvent('PointerDown'),\n touchend: touchEvent('touchend') || pointerEvent('PointerUp'),\n touchmove: touchEvent('touchmove') || pointerEvent('PointerMove')\n },\n isTheSameFingerId = function(e) {\n return !e.pointerId || typeof pointerId === 'undefined' || e.pointerId === pointerId\n },\n setListener = function(elm, events, callback) {\n var eventsArray = events.split(' '),\n i = eventsArray.length\n\n while (i--) {\n elm.addEventListener(eventsArray[i], callback, false)\n }\n },\n getPointerEvent = function(event) {\n var hasTargetTouches = Boolean(event.targetTouches && event.targetTouches.length)\n switch (true) {\n case Boolean(event.target.touches):\n return event.target.touches[0]\n case hasTargetTouches && typeof event.targetTouches[0].pageX !== 'undefined':\n return event.targetTouches[0]\n case hasTargetTouches && Boolean(event.targetTouches[0].touches):\n return event.targetTouches[0].touches[0]\n default:\n return event\n }\n },\n isMultipleTouches = function(event) {\n return (event.targetTouches || event.target.touches || []).length > 1\n },\n getTimestamp = function() {\n return new Date().getTime()\n },\n sendEvent = function(elm, eventName, originalEvent, data) {\n var customEvent = doc.createEvent('Event')\n customEvent.originalEvent = originalEvent\n data = data || {}\n data.x = currX\n data.y = currY\n\n // jquery\n if (defaults.useJquery) {\n customEvent = jQuery.Event(eventName, {originalEvent: originalEvent})\n jQuery(elm).trigger(customEvent, data)\n }\n\n // addEventListener\n if (customEvent.initEvent) {\n for (var key in data) {\n customEvent[key] = data[key]\n }\n\n customEvent.initEvent(eventName, true, true)\n elm.dispatchEvent(customEvent)\n }\n\n // detect all the inline events\n // also on the parent nodes\n while (elm) {\n // inline\n if (elm['on' + eventName])\n elm['on' + eventName](customEvent)\n elm = elm.parentNode\n }\n\n },\n\n onTouchStart = function(e) {\n /**\n * Skip all the mouse events\n * events order:\n * Chrome:\n * touchstart\n * touchmove\n * touchend\n * mousedown\n * mousemove\n * mouseup <- this must come always after a \"touchstart\"\n *\n * Safari\n * touchstart\n * mousedown\n * touchmove\n * mousemove\n * touchend\n * mouseup <- this must come always after a \"touchstart\"\n */\n\n if (!isTheSameFingerId(e) || isMultipleTouches(e)) return\n\n pointerId = e.pointerId\n\n // it looks like it was a touch event!\n if (e.type !== 'mousedown')\n wasTouch = true\n\n // skip this event we don't need to track it now\n if (e.type === 'mousedown' && wasTouch) return\n\n var pointer = getPointerEvent(e)\n\n // caching the current x\n cachedX = currX = pointer.pageX\n // caching the current y\n cachedY = currY = pointer.pageY\n\n longtapTimer = setTimeout(function() {\n sendEvent(e.target, 'longtap', e)\n target = e.target\n }, defaults.longtapThreshold)\n\n // we will use these variables on the touchend events\n timestamp = getTimestamp()\n\n tapNum++\n\n },\n onTouchEnd = function(e) {\n if (!isTheSameFingerId(e) || isMultipleTouches(e)) return\n\n pointerId = undefined\n\n // skip the mouse events if previously a touch event was dispatched\n // and reset the touch flag\n if (e.type === 'mouseup' && wasTouch) {\n wasTouch = false\n return\n }\n\n var eventsArr = [],\n now = getTimestamp(),\n deltaY = cachedY - currY,\n deltaX = cachedX - currX\n\n // clear the previous timer if it was set\n clearTimeout(dblTapTimer)\n // kill the long tap timer\n clearTimeout(longtapTimer)\n\n if (deltaX <= -defaults.swipeThreshold)\n eventsArr.push('swiperight')\n\n if (deltaX >= defaults.swipeThreshold)\n eventsArr.push('swipeleft')\n\n if (deltaY <= -defaults.swipeThreshold)\n eventsArr.push('swipedown')\n\n if (deltaY >= defaults.swipeThreshold)\n eventsArr.push('swipeup')\n\n if (eventsArr.length) {\n for (var i = 0; i < eventsArr.length; i++) {\n var eventName = eventsArr[i]\n sendEvent(e.target, eventName, e, {\n distance: {\n x: Math.abs(deltaX),\n y: Math.abs(deltaY)\n }\n })\n }\n // reset the tap counter\n tapNum = 0\n } else {\n\n if (\n cachedX >= currX - defaults.tapPrecision &&\n cachedX <= currX + defaults.tapPrecision &&\n cachedY >= currY - defaults.tapPrecision &&\n cachedY <= currY + defaults.tapPrecision\n ) {\n if (timestamp + defaults.tapThreshold - now >= 0)\n {\n // Here you get the Tap event\n sendEvent(e.target, tapNum >= 2 && target === e.target ? 'dbltap' : 'tap', e)\n target= e.target\n }\n }\n\n // reset the tap counter\n dblTapTimer = setTimeout(function() {\n tapNum = 0\n }, defaults.dbltapThreshold)\n\n }\n },\n onTouchMove = function(e) {\n if (!isTheSameFingerId(e)) return\n // skip the mouse move events if the touch events were previously detected\n if (e.type === 'mousemove' && wasTouch) return\n\n var pointer = getPointerEvent(e)\n currX = pointer.pageX\n currY = pointer.pageY\n },\n tapNum = 0,\n pointerId, currX, currY, cachedX, cachedY, timestamp, target, dblTapTimer, longtapTimer\n\n //setting the events listeners\n // we need to debounce the callbacks because some devices multiple events are triggered at same time\n setListener(doc, touchevents.touchstart + (defaults.justTouchEvents ? '' : ' mousedown'), onTouchStart)\n setListener(doc, touchevents.touchend + (defaults.justTouchEvents ? '' : ' mouseup'), onTouchEnd)\n setListener(doc, touchevents.touchmove + (defaults.justTouchEvents ? '' : ' mousemove'), onTouchMove)\n\n // Configure the tocca default options at any time\n win.tocca = function(options) {\n for (var opt in options) {\n defaults[opt] = options[opt]\n }\n\n return defaults\n }\n})(document, window)\n\n\n//# sourceURL=webpack://akw/./node_modules/tocca/Tocca.js?")}
1}]) 2;
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.