{"version":3,"file":null,"sources":["C:/wamp64/www/sites/eidas/trunk/src/js/core/skizz.js","C:/wamp64/www/sites/eidas/trunk/src/js/core/ready.js","C:/wamp64/www/sites/eidas/trunk/src/js/core/extend.js","C:/wamp64/www/sites/eidas/trunk/src/js/core/i18n.js","C:/wamp64/www/sites/eidas/trunk/src/js/core/widgets.js","C:/wamp64/www/sites/eidas/trunk/src/js/core/index.js","C:/wamp64/www/sites/eidas/trunk/src/js/ajax/post.js","C:/wamp64/www/sites/eidas/trunk/src/js/ajax/ajax.js","C:/wamp64/www/sites/eidas/trunk/src/js/ajax/get.js","C:/wamp64/www/sites/eidas/trunk/src/js/ajax/json.js","C:/wamp64/www/sites/eidas/trunk/src/js/ajax/index.js","C:/wamp64/www/sites/eidas/trunk/src/js/collections/each.js","C:/wamp64/www/sites/eidas/trunk/src/js/utils/isFunction.js","C:/wamp64/www/sites/eidas/trunk/src/js/collections/filter.js","C:/wamp64/www/sites/eidas/trunk/src/js/collections/map.js","C:/wamp64/www/sites/eidas/trunk/src/js/collections/once.js","C:/wamp64/www/sites/eidas/trunk/src/js/collections/index.js","C:/wamp64/www/sites/eidas/trunk/src/js/dom/css.js","C:/wamp64/www/sites/eidas/trunk/src/js/dom/attr.js","C:/wamp64/www/sites/eidas/trunk/src/js/dom/hasAttr.js","C:/wamp64/www/sites/eidas/trunk/src/js/dom/removeAttr.js","C:/wamp64/www/sites/eidas/trunk/src/js/dom/text.js","C:/wamp64/www/sites/eidas/trunk/src/js/dom/detach.js","C:/wamp64/www/sites/eidas/trunk/src/js/dom/addClass.js","C:/wamp64/www/sites/eidas/trunk/src/js/dom/hasClass.js","C:/wamp64/www/sites/eidas/trunk/src/js/dom/removeClass.js","C:/wamp64/www/sites/eidas/trunk/src/js/dom/toggleClass.js","C:/wamp64/www/sites/eidas/trunk/src/js/dom/after.js","C:/wamp64/www/sites/eidas/trunk/src/js/dom/append.js","C:/wamp64/www/sites/eidas/trunk/src/js/dom/before.js","C:/wamp64/www/sites/eidas/trunk/src/js/dom/prepend.js","C:/wamp64/www/sites/eidas/trunk/src/js/dom/remove.js","C:/wamp64/www/sites/eidas/trunk/src/js/dom/html.js","C:/wamp64/www/sites/eidas/trunk/src/js/dom/prev.js","C:/wamp64/www/sites/eidas/trunk/src/js/dom/next.js","C:/wamp64/www/sites/eidas/trunk/src/js/dom/closest.js","C:/wamp64/www/sites/eidas/trunk/src/js/dom/parent.js","C:/wamp64/www/sites/eidas/trunk/src/js/dom/cloneNode.js","C:/wamp64/www/sites/eidas/trunk/src/js/dom/index.js","C:/wamp64/www/sites/eidas/trunk/src/js/event/fire.js","C:/wamp64/www/sites/eidas/trunk/src/js/event/checkArguments.js","C:/wamp64/www/sites/eidas/trunk/src/js/event/off.js","C:/wamp64/www/sites/eidas/trunk/src/js/event/on.js","C:/wamp64/www/sites/eidas/trunk/src/js/event/one.js","C:/wamp64/www/sites/eidas/trunk/src/js/event/index.js","C:/wamp64/www/sites/eidas/trunk/src/js/utils/hash.js","C:/wamp64/www/sites/eidas/trunk/src/js/utils/guid.js","C:/wamp64/www/sites/eidas/trunk/src/js/utils/rand.js","C:/wamp64/www/sites/eidas/trunk/src/js/utils/encode.js","C:/wamp64/www/sites/eidas/trunk/src/js/utils/decode.js","C:/wamp64/www/sites/eidas/trunk/src/js/utils/storage.js","C:/wamp64/www/sites/eidas/trunk/src/js/utils/noop.js","C:/wamp64/www/sites/eidas/trunk/src/js/utils/identity.js","C:/wamp64/www/sites/eidas/trunk/src/js/utils/memoize.js","C:/wamp64/www/sites/eidas/trunk/src/js/utils/debounce.js","C:/wamp64/www/sites/eidas/trunk/src/js/utils/throttle.js","C:/wamp64/www/sites/eidas/trunk/src/js/utils/scrollTo.js","C:/wamp64/www/sites/eidas/trunk/src/js/utils/index.js","C:/wamp64/www/sites/eidas/trunk/src/js/skizz.js","C:/wamp64/www/sites/eidas/trunk/src/js/utils/fast-button.js","C:/wamp64/www/sites/eidas/trunk/src/js/plugins/dropdown.js","C:/wamp64/www/sites/eidas/trunk/src/js/main.js"],"sourcesContent":["function Skizz (selection, context) {\r\n this.length = selection.length\r\n this.context = context || null\r\n\r\n selection.forEach((element, index) => (this[index] = element))\r\n}\r\n\r\nexport default Skizz\r\n","let queue = []\r\n\r\n/**\r\n * ready - Execute the function when the dom is ready\r\n *\r\n * @param {function} fn The function to execute\r\n * @return {void}\r\n */\r\nfunction ready (fn) {\r\n if (document.readyState === 'loading') {\r\n document.addEventListener('DOMContentLoaded', run)\r\n queue.push(fn)\r\n return\r\n }\r\n\r\n fn()\r\n}\r\n\r\n/**\r\n * run - Execute the queue\r\n *\r\n * @return {void}\r\n */\r\nfunction run () {\r\n while (queue.length) {\r\n window.setTimeout(queue.shift(), 0)\r\n }\r\n}\r\n\r\nexport default ready\r\n","/**\r\n * extend - Extend an object with additional properties\r\n *\r\n * @param {object} target The object to extend\r\n * @param {object} ...mixins The object with additional properties\r\n * @return {object} The object extended\r\n */\r\nfunction extend (target, ...mixins) {\r\n let i = -1\r\n let length = mixins.length\r\n\r\n while (++i < length) {\r\n let mixin = mixins[i]\r\n\r\n for (let prop in mixin) {\r\n if (!mixin.hasOwnProperty(prop)) {\r\n continue\r\n }\r\n\r\n Object.defineProperty(target, prop, {\r\n value: mixin[prop],\r\n enumerable: true,\r\n writable: true\r\n })\r\n }\r\n }\r\n\r\n return target\r\n}\r\n\r\nexport default extend\r\n","const lang = document.documentElement.lang || 'en'\r\n\r\n/**\r\n * get - Get a translation\r\n *\r\n * @param {object} i18n The translation with all available language\r\n * @return {object} The language needed\r\n */\r\nfunction getI18N (i18n) {\r\n return (i18n[lang] !== undefined ? i18n[lang] : i18n['root'])\r\n}\r\n\r\nexport default getI18N\r\n","class Widgets {\r\n constructor () {\r\n this.widgets = {}\r\n this.options = {}\r\n }\r\n\r\n register (widget) {\r\n this.widgets[widget.id] = widget(this, this.options[widget.id] || {})\r\n return this\r\n }\r\n\r\n unregister (widget) {\r\n this.plugins[widget.id].destroy()\r\n return this\r\n }\r\n}\r\n\r\nexport default Widgets\r\n","import Skizz from './skizz'\r\nimport ready from './ready'\r\nimport extend from './extend'\r\nimport i18n from './i18n'\r\nimport Widgets from './widgets'\r\n\r\n/**\r\n * skizz - description\r\n *\r\n * @private\r\n * @param {string|function|object|array} selector The css selector to search for matching element\r\n * @param {object} [root] The context for selector\r\n * @return {object} skizz\r\n */\r\nfunction skizz (selector, root) {\r\n const selType = typeof selector\r\n\r\n if (selType === 'string' && selector.charAt(0) === '<') {\r\n let div = document.createElement('div')\r\n div.innerHTML = selector\r\n return new Skizz([].slice.call(div.childNodes))\r\n }\r\n\r\n if (selType === 'string') {\r\n if (root !== undefined) {\r\n root = root.length ? root[0] : root\r\n } else {\r\n root = document\r\n }\r\n return new Skizz([].slice.call(root.querySelectorAll(selector)))\r\n }\r\n\r\n if (selType === 'function') {\r\n return skizz.ready(selector)\r\n }\r\n\r\n if (selector instanceof Skizz) {\r\n return selector\r\n }\r\n\r\n if (selector instanceof window.HTMLElement) {\r\n return new Skizz([selector])\r\n }\r\n\r\n if (selector instanceof Array) {\r\n return new Skizz(selector)\r\n }\r\n\r\n if (selector instanceof window.NodeList || selector instanceof window.HTMLCollection) {\r\n return new Skizz([].slice.call(selector))\r\n }\r\n\r\n return new Skizz([document])\r\n}\r\n\r\nskizz.fn = Skizz.prototype\r\nskizz.ready = ready\r\nskizz.extend = extend\r\nskizz.i18n = i18n\r\nskizz.Widgets = Widgets\r\n\r\nexport default skizz\r\n","import extend from '../core/extend'\r\n\r\nfunction post (url, data, header = 'application/x-www-form-urlencoded; charset=UTF-8') {\r\n let request = new XMLHttpRequest();\r\n request.open('POST', url, true)\r\n request.setRequestHeader('Content-type', header)\r\n request.send(data)\r\n}\r\n\r\nexport default post\r\n","import extend from '../core/extend'\r\n\r\nlet options = {\r\n url: '',\r\n success: function () {},\r\n error: function () {},\r\n complete: function () {}\r\n}\r\n\r\nfunction ajax (settings, json) {\r\n options = extend({}, options, settings)\r\n\r\n let request = new window.XMLHttpRequest()\r\n request.open('GET', options.url, true)\r\n\r\n request.onload = function () {\r\n if (request.status >= 200 && request.status < 400) {\r\n let data = json ? JSON.parse(request.responseText) : request.responseText\r\n options.success(data)\r\n options.complete(data)\r\n } else {\r\n options.error(request.responseText)\r\n options.complete()\r\n }\r\n }\r\n\r\n request.onerror = function () {\r\n options.error()\r\n options.complete()\r\n }\r\n\r\n request.send()\r\n}\r\n\r\nexport default ajax\r\n","import ajax from './ajax'\r\n\r\nfunction get (url = '', success = function () {}, error = function () {}) {\r\n ajax({\r\n url: url,\r\n success: success,\r\n error: error\r\n }, false)\r\n}\r\n\r\nexport default get\r\n","import ajax from './ajax'\r\n\r\nfunction json (url = '', success = function () {}, error = function () {}) {\r\n ajax({\r\n url: url,\r\n success: success,\r\n error: error\r\n }, true)\r\n}\r\n\r\nexport default json\r\n","import skizz from '../core/index'\r\n\r\nimport post from './post'\r\nimport get from './get'\r\nimport json from './json'\r\n\r\nskizz.post = post\r\nskizz.get = get\r\nskizz.json = json\r\n","/**\r\n * each - Apply a function on each item of an array\r\n *\r\n * @param {array} collection The collection to run against the function\r\n * @param {function} fn The function to apply on each item from the collection\r\n * @return {array} The collection\r\n */\r\nfunction each (collection, fn) {\r\n let index = -1\r\n let length = collection.length\r\n let val\r\n\r\n while (++index < length) {\r\n val = fn.call(collection[index], index, collection)\r\n if (val === false) {\r\n break\r\n }\r\n }\r\n\r\n return collection\r\n}\r\n\r\nexport default each\r\n","/**\r\n * isFunction - Determine if the argument passed is a function\r\n *\r\n * @param {function} obj The argument to test if it's a function\r\n * @return {boolean} True if the argument passed is a function false otherwise\r\n */\r\nfunction isFunction (obj) {\r\n return !!(obj && obj.constructor && obj.call && obj.apply)\r\n}\r\n\r\nexport default isFunction\r\n","import isFunction from '../utils/isFunction'\r\n\r\nfunction stringSorting (collection, filter, skizz) {\r\n if (!filter.charAt(0) === ':') {\r\n return instanceSorting(collection, skizz(filter))\r\n } else {\r\n if (filter === ':even') {\r\n filter = function (index) {\r\n return index % 2 !== 0\r\n }\r\n } else if (filter === ':odd') {\r\n filter = function (index) {\r\n return index % 2 === 0\r\n }\r\n } else {\r\n filter = function () { return true }\r\n }\r\n\r\n return fnSorting(collection, filter)\r\n }\r\n}\r\n\r\nfunction fnSorting (collection, filter) {\r\n let index = -1\r\n let length = collection.length\r\n let keep = []\r\n\r\n while (++index < length) {\r\n if (filter(index, collection[index])) {\r\n keep.push(collection[index])\r\n }\r\n }\r\n\r\n return keep\r\n}\r\n\r\nfunction elementSorting (collection, filter) {\r\n let index = -1\r\n let length = collection.length\r\n let keep = []\r\n\r\n while (++index < length) {\r\n if (collection[index] === filter) {\r\n keep.push(collection[index])\r\n }\r\n }\r\n\r\n return keep\r\n}\r\n\r\nfunction instanceSorting (collection, filter) {\r\n let index = -1\r\n let filterIndex\r\n let collectionLength = collection.length\r\n let filterLength = filter.length\r\n let keep = []\r\n\r\n while (++index < collectionLength) {\r\n for (filterIndex = 0; filterIndex < filterLength; filterIndex++) {\r\n if (collection[index] === filter[filterIndex]) {\r\n keep.push(collection[index])\r\n }\r\n }\r\n }\r\n\r\n return keep\r\n}\r\n\r\nfunction filter (collection, filter) {\r\n let keep = []\r\n\r\n if (typeof filter === 'string') {\r\n keep = stringSorting(collection, filter, this)\r\n }\r\n\r\n if (isFunction(filter)) {\r\n keep = fnSorting(collection, filter)\r\n }\r\n\r\n if (typeof filter === 'object') {\r\n if (filter.context !== undefined) {\r\n keep = instanceSorting(collection, filter)\r\n } else {\r\n keep = elementSorting(collection, filter)\r\n }\r\n }\r\n\r\n return (keep.length ? this(keep) : collection)\r\n}\r\n\r\nexport default filter\r\n","/**\r\n * map - Apply a function on each item\r\n *\r\n * @param {object} collection The collection to run against the function\r\n * @param {type} fn The function to apply on each item from the collection\r\n * @return {array} The result of the function apply\r\n */\r\nfunction map (collection, fn) {\r\n let results = []\r\n let i = -1\r\n let length = collection.length\r\n\r\n while (++i < length) {\r\n results[i] = fn.call(collection[i], i, collection)\r\n }\r\n\r\n return results\r\n}\r\n\r\nexport default map\r\n","/**\r\n * once - Run only once a function against the whole collection\r\n *\r\n * @param {array} collection The collection to run against the function\r\n * @param {function} predicate The collection to run against the function\r\n * @return {boolean}\r\n */\r\nfunction once (collection, predicate) {\r\n let i = collection.length\r\n\r\n while (i--) {\r\n if (predicate.call(collection[i], i, collection)) {\r\n return true\r\n } else {\r\n return false\r\n }\r\n }\r\n}\r\n\r\nexport default once\r\n","import skizz from '../core/index'\r\n\r\nimport each from './each'\r\nimport filter from './filter'\r\nimport map from './map'\r\nimport once from './once'\r\n\r\nskizz.fn.each = function (fn) {\r\n return each(this, fn)\r\n}\r\n\r\nskizz.fn.filter = function (selector) {\r\n return filter.apply(skizz, [this, selector])\r\n}\r\n\r\nskizz.fn.map = function (fn) {\r\n return map(this, fn)\r\n}\r\n\r\nskizz.fn.once = function (fn) {\r\n return once(this, fn)\r\n}\r\n","\r\n/**\r\n * css - Get or set css property to the collections\r\n *\r\n * @param {string | object} prop The property to get or set\r\n * @param {string} [value] The value to set to the property\r\n * @return {string | object} The property value if value is undefined Skizz otherwise\r\n */\r\nfunction css (prop, value) {\r\n if (typeof prop === 'string' && value === undefined && this.length) {\r\n return window.getComputedStyle(this[0]).getPropertyValue(prop, null)\r\n }\r\n\r\n return this.each(function () {\r\n if (typeof prop === 'string') {\r\n this.style.setProperty(prop, value)\r\n } else {\r\n let str = []\r\n for (value in prop) {\r\n if (!prop.hasOwnProperty(value)) {\r\n continue\r\n }\r\n str.push(value + ':' + prop[value])\r\n }\r\n this.style.cssText += str.join(';')\r\n }\r\n })\r\n}\r\n\r\nexport default css\r\n","function attr (name, value) {\r\n if (arguments.length === 1 && typeof name === 'string') {\r\n if (this.length) {\r\n let attribute = this[0].getAttribute(name)\r\n return attribute !== null\r\n ? attribute\r\n : this[0][name]\r\n }\r\n\r\n return undefined\r\n }\r\n\r\n return this.each(function (index) {\r\n if (value !== undefined && typeof value !== 'object') {\r\n this.setAttribute(name, value)\r\n } else {\r\n for (let attribute in name) {\r\n if (!name.hasOwnProperty(attribute)) {\r\n continue\r\n }\r\n\r\n value = name[attribute]\r\n if (attribute === '_text') {\r\n this.textContent = value\r\n } else if (attribute === '_html' && typeof value === 'object') {\r\n this.innerHTML = value.outerHTML\r\n } else if (attribute === '_html') {\r\n this.innerHTML = value\r\n } else if (value === null) {\r\n this.removeAttribute(attribute)\r\n } else if (attribute in this) {\r\n this[attribute] = value\r\n } else {\r\n this.setAttribute(attribute, value)\r\n }\r\n\r\n this.setAttribute(attribute, name[attribute])\r\n\r\n value = name[attribute]\r\n\r\n if (attribute === '_text') {\r\n this.textContent = value\r\n } else if (attribute === '_html' && typeof value === 'object') {\r\n this.innerHTML = value.outerHTML\r\n } else if (attribute === '_html') {\r\n this.innerHTML = value\r\n } else if (value === null) {\r\n this.removeAttribute(attribute)\r\n } else if (attribute in this) {\r\n this[attribute] = value\r\n } else {\r\n this.setAttribute(attribute, value)\r\n }\r\n }\r\n }\r\n })\r\n}\r\n\r\nexport default attr\r\n","/**\r\n * hasAttr - Check if the element has a specific attribute\r\n *\r\n * @param {string} attribute The attribute to search for\r\n * @return {boolean} True if the className is set on the element false otherwise\r\n */\r\nfunction hasAttr (attribute) {\r\n return this.once(function () {\r\n return this.hasAttribute(attribute)\r\n })\r\n}\r\n\r\nexport default hasAttr\r\n","/**\r\n * removeAttr - Remove attribute\r\n *\r\n * @param {string} name The attribute to remove\r\n * @return {object} skizz\r\n */\r\nfunction removeAttr (name) {\r\n return this.each(function () {\r\n this.removeAttribute(name)\r\n })\r\n}\r\n\r\nexport default removeAttr\r\n","\r\n/**\r\n * text - Get or set the text content\r\n *\r\n * To get the content, juste pass the text parameter\r\n *\r\n * @param [{string}] text The text to set\r\n * @return {object} skizz\r\n */\r\nfunction text (text) {\r\n if (arguments.length === 0 && this.length) {\r\n return this[0].textContent\r\n }\r\n\r\n return this.each(function () {\r\n this.textContent = text\r\n })\r\n}\r\n\r\nexport default text\r\n","/**\r\n * Removes an element from the DOM\r\n * @alias detach\r\n * @memberOf element\r\n * @param {Object} element\r\n * @return the removed element\r\n */\r\n function detachElement () {\r\n let element = this[0]\r\n element.parentNode.removeChild(element)\r\n return element\r\n }\r\n\r\n export default detachElement\r\n","\r\n/**\r\n * addClass - Add one or more classname to an element\r\n *\r\n * @param {string} className The classname to add\r\n * @return {void}\r\n */\r\nfunction addClass (className) {\r\n /**\r\n * classNameArray - Trim the classname than split the string whit a space\r\n * as a seperator into an array of substring\r\n *\r\n * @param {string} className The string classname to transform\r\n * @return {array} An array of each className to add\r\n */\r\n function classNameArray (className) {\r\n const wsRE = /\\s+/\r\n return className.trim().split(wsRE)\r\n }\r\n\r\n /**\r\n * addClassStandard - Standard addClass implementation\r\n *\r\n * @param {node} element The HTML element to add classname\r\n * @param {string} className The class to add\r\n * @return {void}\r\n */\r\n function addClassStandard (element, className) {\r\n className = classNameArray(className)\r\n\r\n let i = className.length\r\n while (i--) {\r\n element.classList.add(className[i])\r\n }\r\n }\r\n\r\n /**\r\n * addClassCompat - The shim addClass implementation\r\n *\r\n * @param {node} element The HTML element to add classname\r\n * @param {string} className The class to add\r\n * @return {void}\r\n */\r\n function addClassCompat (element, className) {\r\n className = classNameArray(className) // new classes (array)\r\n\r\n let replaced = element.className // old classes (string)\r\n let i = className.length\r\n\r\n while (i--) {\r\n if (replaced.indexOf(className[i]) === -1) {\r\n replaced += ' ' + className[i]\r\n }\r\n }\r\n element.className = replaced\r\n }\r\n\r\n return 'classList' in document.documentElement\r\n ? this.each(function () {\r\n addClassStandard(this, className)\r\n })\r\n : this.each(function () {\r\n addClassCompat(this, className)\r\n })\r\n}\r\n\r\nexport default addClass\r\n","/**\r\n * hasClass - Check if the element has a specific className\r\n *\r\n * @param {string} className The className to search for\r\n * @return {boolean} True if the className is set on the element false otherwise\r\n */\r\nfunction hasClass (className) {\r\n /**\r\n * hasClassStandard - Standard hasClass implementation\r\n *\r\n * @param {type} element The HTML node to check if it contains the className\r\n * @param {string} className The className to search for\r\n * @return {boolean} True if the className is set on the element false otherwise\r\n */\r\n\r\n function hasClassStandard (element, className) {\r\n return element.classList.contains(className)\r\n }\r\n\r\n /**\r\n * hasClassCompat - Shim hasClass implementation\r\n *\r\n * @param {node} element The HTML node to check if it contains the className\r\n * @param {string} className The className to search for\r\n * @return {boolean} True if the className is set on the element false otherwise\r\n */\r\n function hasClassCompat (element, className) {\r\n if (!element.className) {\r\n return false\r\n }\r\n\r\n return element.className.indexOf(className) !== -1\r\n }\r\n\r\n return 'classList' in document.documentElement\r\n ? this.once(function () {\r\n return hasClassStandard(this, className)\r\n })\r\n : this.once(function () {\r\n return hasClassCompat(this, className)\r\n })\r\n}\r\n\r\nexport default hasClass\r\n","\r\n/**\r\n * removeClass - Remove one or more classname to an element\r\n *\r\n * @param {string} className The classname to remove\r\n * @return {void}\r\n */\r\nfunction removeClass (className) {\r\n /**\r\n * classNameArray - Trim the classname than split the string whit a space\r\n * as a seperator into an array of substring\r\n *\r\n * @param {string} className The string classname to transform\r\n * @return {array} An array of each className to remove\r\n */\r\n function classNameArray (className) {\r\n const wsRE = /\\s+/\r\n return className.trim().split(wsRE)\r\n }\r\n\r\n /**\r\n * removeClassStandard - Standard removeClass implementation\r\n *\r\n * @param {node} element The HTML element to remove classname\r\n * @param {string} className The class to remove\r\n * @return {void}\r\n */\r\n function removeClassStandard (element, className) {\r\n if (!element.className) {\r\n return false\r\n }\r\n\r\n className = classNameArray(className)\r\n\r\n let i = className.length\r\n while (i--) {\r\n element.classList.remove(className[i])\r\n }\r\n }\r\n\r\n /**\r\n * removeClassCompat - The shim removeClass implementation\r\n *\r\n * @param {node} element The HTML element to remove classname\r\n * @param {string} className The class to remove\r\n * @return {void}\r\n */\r\n function removeClassCompat (element, className) {\r\n className = classNameArray(className) // classes to remove (array)\r\n let replaced = element.className // old classes (string)\r\n let i = className.length\r\n\r\n while (i--) {\r\n if (replaced.indexOf(className[i]) !== -1) {\r\n replaced = replaced.replace(new RegExp('\\\\b' + className[i] + '\\\\b'), '')\r\n }\r\n }\r\n\r\n element.className = replaced\r\n }\r\n\r\n return 'classList' in document.documentElement\r\n ? this.each(function () {\r\n removeClassStandard(this, className)\r\n })\r\n : this.each(function () {\r\n removeClassCompat(this, className)\r\n })\r\n}\r\n\r\nexport default removeClass\r\n","/**\r\n * toggleClass - Toggle a specific className\r\n *\r\n * @param {string} className The classname to add or remove\r\n * @return {void}\r\n */\r\nfunction toggleClass (className) {\r\n /**\r\n * classNameArray - Trim the classname than split the string whit a space\r\n * as a seperator into an array of substring\r\n *\r\n * @param {string} className The string classname to transform\r\n * @return {array} An array of each className to remove\r\n */\r\n function classNameArray (className) {\r\n const wsRE = /\\s+/\r\n return className.trim().split(wsRE)\r\n }\r\n\r\n /**\r\n * toggleClassStandard - Standard toggleClass implementation\r\n *\r\n * @param {node} element The HTML element to add or remove className\r\n * @param {string} className The class to add or remove\r\n * @return {void}\r\n */\r\n function toggleClassStandard (element, className) {\r\n return element.classList.toggle(className)\r\n }\r\n\r\n /**\r\n * toggleClassCompat - The shim toggleClass implementation\r\n *\r\n * @param {node} element The HTML element to add or remove className\r\n * @param {string} className The class to add or remove\r\n * @return {void}\r\n */\r\n function toggleClassCompat (element, className) {\r\n className = classNameArray(className) // classes to remove (array)\r\n let replaced = element.className // old classes (string)\r\n let i = className.length\r\n\r\n while (i--) {\r\n if (replaced.indexOf(className[i]) === -1) {\r\n replaced += ' ' + className[i]\r\n } else {\r\n replaced = replaced.replace(new RegExp('\\\\b' + className[i] + '\\\\b'), '')\r\n }\r\n }\r\n\r\n element.className = replaced\r\n }\r\n\r\n return 'classList' in document.documentElement\r\n ? this.each(function () {\r\n toggleClassStandard(this, className)\r\n })\r\n : this.each(function () {\r\n toggleClassCompat(this, className)\r\n })\r\n}\r\n\r\nexport default toggleClass\r\n","/**\r\n * after - Insert an html fragment after an element\r\n *\r\n * @param {node|string} fragment The HTML fragment to insert\r\n * @return {object} skizz\r\n */\r\nfunction after (fragment) {\r\n if (typeof fragment === 'string') {\r\n return this.htmlAfter(fragment)\r\n }\r\n\r\n if (fragment.length) {\r\n fragment = fragment[0]\r\n }\r\n\r\n return this.each(function (index) {\r\n this.parentNode.insertBefore(index > 0 ? fragment.cloneNode(true) : fragment, this.nextSibling)\r\n })\r\n}\r\n\r\nexport default after\r\n","/**\r\n * append - Append an html fragment into an element\r\n *\r\n * @param {node|string} fragment The HTML fragment to insert\r\n * @return {object} skizz\r\n */\r\nfunction append (fragment) {\r\n if (typeof fragment === 'string') {\r\n return this.htmlAppend(fragment)\r\n }\r\n\r\n if (fragment.length) {\r\n fragment = fragment[0]\r\n }\r\n\r\n return this.each(function (index) {\r\n this.appendChild(index > 0 ? fragment.cloneNode(true) : fragment)\r\n })\r\n}\r\n\r\nexport default append\r\n","/**\r\n * before - Insert an html fragment before an element\r\n *\r\n * @param {node|string} fragment The HTML fragment to insert\r\n * @return {object} skizz\r\n */\r\nfunction before (fragment) {\r\n if (typeof fragment === 'string') {\r\n return this.htmlBefore(fragment)\r\n }\r\n\r\n if (fragment.length) {\r\n fragment = fragment[0]\r\n }\r\n\r\n return this.each(function (index) {\r\n this.parentNode.insertBefore(index > 0 ? fragment.cloneNode(true) : fragment, this)\r\n })\r\n}\r\n\r\nexport default before\r\n","/**\r\n * prepend - Prepend an html fragment into an element\r\n *\r\n * @param {node|string} fragment The HTML fragment to insert\r\n * @return {object} skizz\r\n */\r\nfunction prepend (fragment) {\r\n if (typeof fragment === 'string') {\r\n return this.htmlPrepend(fragment)\r\n }\r\n\r\n if (fragment.length) {\r\n fragment = fragment[0]\r\n }\r\n\r\n return this.each(function (index) {\r\n this.insertBefore(index > 0 ? fragment.cloneNode(true) : fragment, this.firstChild)\r\n })\r\n}\r\n\r\nexport default prepend\r\n","/**\r\n * remove - Remove an element from the dom\r\n *\r\n * @return {object} Skizz\r\n */\r\nfunction remove () {\r\n return this.each(function () {\r\n this.parentNode.removeChild(this)\r\n })\r\n}\r\n\r\nexport default remove\r\n","/**\r\n * html - Get or set html element\r\n *\r\n * @param [{node|string}] fragment The HTML fragment to append\r\n * @return {object} skizz\r\n */\r\nfunction html (html) {\r\n if (arguments.length === 0 && this.length) {\r\n return this[0].innerHTML\r\n }\r\n\r\n return this.each(function () {\r\n this.innerHTML = html\r\n })\r\n}\r\n\r\n/**\r\n * insertHtml - Generic insert HTML string by position\r\n *\r\n * @private\r\n * @param {string} position The position where to insert the element\r\n * @return {object} skizz\r\n */\r\nfunction insertHtmlMixin (position) {\r\n /**\r\n * insertHtml - insert HTML string\r\n *\r\n * @private\r\n * @param {string} html The HTML to insert\r\n * @return {object} skizz\r\n */\r\n return function insertHtml (html) {\r\n return this.each(function () {\r\n this.insertAdjacentHTML(position, html)\r\n })\r\n }\r\n}\r\n\r\n/**\r\n * insert HTML string after the element\r\n * @function htmlAfter\r\n * @param {string} html The HTML to insert\r\n * @return {object} skizz\r\n */\r\nlet htmlAfter = insertHtmlMixin('afterend')\r\n\r\n/**\r\n * insert HTML string after the element\r\n * @function htmlAppend\r\n * @param {string} html The HTML to insert\r\n * @return {object} skizz\r\n */\r\nlet htmlAppend = insertHtmlMixin('beforeend')\r\n\r\n/**\r\n * insert HTML string after the element\r\n * @function htmlBefore\r\n * @param {string} html The HTML to insert\r\n * @return {object} skizz\r\n */\r\nlet htmlBefore = insertHtmlMixin('beforebegin')\r\n\r\n/**\r\n * insert HTML string after the element\r\n * @function htmlPrepend\r\n * @param {string} html The HTML to insert\r\n * @return {object} skizz\r\n */\r\nlet htmlPrepend = insertHtmlMixin('afterbegin')\r\n\r\nexport default html\r\nexport { htmlAfter, htmlAppend, htmlBefore, htmlPrepend }\r\n","import skizz from '../core/index'\r\n\r\nfunction prev () {\r\n let previous = this.map(function () {\r\n let prev = this.previousSibling\r\n while (prev !== null && prev.nodeType === 3) {\r\n prev = prev.previousSibling\r\n }\r\n return prev\r\n })\r\n\r\n previous = previous.filter((item) => {\r\n return item !== null\r\n })\r\n\r\n return (previous.length !== 0) ? skizz(previous) : null\r\n}\r\n\r\nexport default prev\r\n","import skizz from '../core/index'\r\n\r\nfunction next () {\r\n let next = this.map(function () {\r\n let next = this.nextSibling\r\n while (next !== null && next.nodeType === 3) {\r\n next = next.nextSibling\r\n }\r\n return next\r\n })\r\n\r\n next = next.filter((item) => {\r\n return item !== null\r\n })\r\n\r\n return (next.length !== 0) ? skizz(next) : null\r\n}\r\n\r\nexport default next\r\n","/**\r\n * closest - get the closest selected element with polyfill\r\n * @param {DOM Object} this first element selector\r\n * @param {selector} selector closest element searched\r\n * @return {DOM Object} element or null\r\n */\r\nfunction closest (selector) {\r\n let element = this[0] // due to skizz object\r\n return 'closest' in element ? element.closest(selector) : closestPolyfill(element, selector)\r\n}\r\n\r\nfunction closestPolyfill (element, selector) {\r\n let matches = element.matches ||\r\n element.msMatchesSelector ||\r\n element.webkitMatchesSelector\r\n\r\n while (element) {\r\n if (element === document) return null\r\n if (matches.call(element, selector)) return element\r\n element = element.parentNode\r\n }\r\n\r\n return null\r\n}\r\n\r\nexport default closest\r\n","import $ from '../core/index'\r\n\r\n/**\r\n * parent - Get parent element of the passedNode\r\n * @return {string | object} The property value if value is undefined Skizz otherwise\r\n */\r\nfunction parent () {\r\n let parent\r\n\r\n if (!this.length) {\r\n parent = this.parentNode\r\n } else {\r\n this.each(function () {\r\n parent = this.parentNode\r\n })\r\n }\r\n\r\n return $(parent)\r\n}\r\n\r\nexport default parent\r\n","import $ from '../core/index'\r\n\r\n/**\r\n * cloneNode - clone a htmlNode\r\n *\r\n * @param {boolean} cloneChildren boolean to clone children or not\r\n * @return {object} skizz\r\n */\r\nfunction cloneNode (cloneChildren) {\r\n let clone\r\n\r\n if (this.length) {\r\n clone = this[0].cloneNode(cloneChildren)\r\n } else {\r\n clone = this.cloneNode(cloneChildren)\r\n }\r\n\r\n return $(clone)\r\n}\r\n\r\nexport default cloneNode\r\n","import skizz from '../core/index'\r\n\r\n// Style manipulation\r\nimport css from './css'\r\n\r\n// Element manipulation\r\nimport attr from './attr'\r\nimport hasAttr from './hasAttr'\r\nimport removeAttr from './removeAttr'\r\nimport text from './text'\r\nimport detach from './detach'\r\n\r\n// Classname manipulation\r\nimport addClass from './addClass'\r\nimport hasClass from './hasClass'\r\nimport removeClass from './removeClass'\r\nimport toggleClass from './toggleClass'\r\n\r\n// Fragment insertion\r\nimport after from './after'\r\nimport append from './append'\r\nimport before from './before'\r\nimport prepend from './prepend'\r\nimport remove from './remove'\r\nimport html, { htmlAfter, htmlAppend, htmlBefore, htmlPrepend } from './html'\r\n\r\n// Dom traversing\r\nimport prev from './prev'\r\nimport next from './next'\r\nimport closest from './closest'\r\nimport parent from './parent'\r\n\r\n// Dom properties\r\nimport cloneNode from './cloneNode'\r\n\r\n// Style manipulation\r\nskizz.fn.css = css\r\n\r\n// Element manipulation\r\nskizz.fn.attr = attr\r\nskizz.fn.hasAttr = hasAttr\r\nskizz.fn.removeAttr = removeAttr\r\nskizz.fn.text = text\r\n\r\n// ClassName manipulation\r\nskizz.fn.addClass = addClass\r\nskizz.fn.hasClass = hasClass\r\nskizz.fn.removeClass = removeClass\r\nskizz.fn.toggleClass = toggleClass\r\n\r\n// Fragment insertion\r\nskizz.fn.after = after\r\nskizz.fn.append = append\r\nskizz.fn.before = before\r\nskizz.fn.prepend = prepend\r\nskizz.fn.remove = remove\r\nskizz.fn.detach = detach\r\n\r\nskizz.fn.html = html\r\nskizz.fn.htmlBefore = htmlBefore\r\nskizz.fn.htmlAfter = htmlAfter\r\nskizz.fn.htmlAppend = htmlAppend\r\nskizz.fn.htmlPrepend = htmlPrepend\r\n\r\n// Dom traversing\r\nskizz.fn.prev = prev\r\nskizz.fn.next = next\r\nskizz.fn.closest = closest\r\nskizz.fn.parent = parent\r\n\r\n// Dom properties\r\nskizz.fn.cloneNode = cloneNode\r\n","/**\r\n * Fire an event handler to the specified node. Event handlers can detect that the event was fired programatically\r\n * by testing for a 'synthetic=true' property on the event object\r\n * @param {HTMLNode} node The node to fire the event handler on.\r\n * @param {String} eventName The name of the event without the 'on' (e.g., 'focus')\r\n */\r\nfunction fireEvent (node, eventName, args) {\r\n // Make sure we use the ownerDocument from the provided node to avoid cross-window problems\r\n let doc\r\n let event\r\n\r\n if (node.ownerDocument) {\r\n doc = node.ownerDocument\r\n } else if (node.nodeType === 9) {\r\n // the node may be the document itself, nodeType 9 = DOCUMENT_NODE\r\n doc = node\r\n } else {\r\n throw new Error(`Invalid node passed to fireEvent: ${node.id}`)\r\n }\r\n\r\n if (node.dispatchEvent) {\r\n // Gecko-style approach (now the standard) takes more work\r\n let eventClass = ''\r\n\r\n // Different events have different event classes.\r\n // If this switch statement can't map an eventName to an eventClass,\r\n // the event firing is going to fail.\r\n switch (eventName) {\r\n // Dispatching of 'click' appears to not work correctly in Safari. Use 'mousedown' or 'mouseup' instead.\r\n case 'click':\r\n case 'mousedown':\r\n case 'mouseup':\r\n eventClass = 'MouseEvents'\r\n break\r\n\r\n case 'focus':\r\n case 'change':\r\n case 'blur':\r\n case 'select':\r\n default:\r\n eventClass = 'HTMLEvents'\r\n break\r\n }\r\n\r\n event = doc.createEvent(eventClass)\r\n var bubbles = eventName !== 'change'\r\n event.initEvent(eventName, bubbles, true) // All events created as bubbling and cancelable.\r\n\r\n event.synthetic = true // allow detection of synthetic events\r\n event.args = args\r\n node.dispatchEvent(event, true)\r\n } else if (node.fireEvent) {\r\n // IE-old school style\r\n event = doc.createEventObject()\r\n event.synthetic = true // allow detection of synthetic events\r\n event.args = args\r\n node.fireEvent('on' + eventName, event)\r\n }\r\n};\r\n\r\nfunction fire (types, args) {\r\n types = types.split(' ')\r\n\r\n return this.each(function () {\r\n types.forEach((type) => {\r\n fireEvent(this, type, args)\r\n })\r\n })\r\n}\r\n\r\nexport default fire\r\n","import isFunction from '../utils/isFunction'\r\n\r\n/**\r\n * checkArguments - As some parameters are optionnal, check and set each\r\n * parameters properly\r\n *\r\n * @param {string} types The types of event to set\r\n * @param {string} [selector] The selector for delegation\r\n * @param {function} handler The function handling the event\r\n * @private\r\n * @return {object} arguments\r\n */\r\nfunction checkArguments (types, selector, handler) {\r\n if (arguments.length === 2 && isFunction(selector)) {\r\n handler = selector\r\n selector = '_self'\r\n }\r\n //\r\n // if (arguments.length === 3 && isFunction(data)) {\r\n // handler = data\r\n // if (typeof selector !== 'string') {\r\n // data = selector\r\n // selector = '_self'\r\n // } else {\r\n // data = undefined\r\n // }\r\n // }\r\n\r\n return {\r\n types: types,\r\n selector: selector,\r\n handler: handler\r\n }\r\n}\r\n\r\nexport default checkArguments\r\n","import checkArguments from './checkArguments'\r\n\r\nfunction off (types, selector, handler) {\r\n let parameters = checkArguments(...arguments)\r\n\r\n types = parameters.types\r\n selector = parameters.selector\r\n handler = parameters.handler\r\n\r\n types = types.split(' ')\r\n return this.each(function () {\r\n if (!this.SkizzHandlers) {\r\n return\r\n }\r\n\r\n types.forEach((type) => {\r\n let listeners = this.SkizzHandlers[type]\r\n\r\n if (!listeners) {\r\n return\r\n }\r\n\r\n listeners.forEach((listener, index) => {\r\n if (listener.selector === selector && listener.originalCallback === handler) {\r\n this.removeEventListener(type, listener.callback)\r\n this.SkizzHandlers[type] = listeners.splice(index, 1)\r\n }\r\n })\r\n })\r\n })\r\n}\r\n\r\nexport default off\r\n","import skizz from '../core/index'\r\nimport checkArguments from './checkArguments'\r\n\r\nfunction delegate (selector, handler) {\r\n return function (event) {\r\n skizz(selector).each(function () {\r\n if (this.contains(event.target)) {\r\n handler(event)\r\n }\r\n })\r\n }\r\n}\r\n\r\nfunction on (types, selector, handler) {\r\n let parameters = checkArguments(...arguments)\r\n\r\n types = parameters.types\r\n selector = parameters.selector\r\n handler = parameters.handler\r\n\r\n let originalCallback = handler\r\n\r\n if (selector !== '_self' && selector !== null) {\r\n handler = delegate(selector, handler)\r\n }\r\n\r\n types = types.split(' ')\r\n return this.each(function () {\r\n this.SkizzHandlers = this.SkizzHandlers || {}\r\n\r\n types.forEach((type) => {\r\n this.SkizzHandlers[type] = this.SkizzHandlers[type] || []\r\n this.SkizzHandlers[type].push({\r\n selector: selector,\r\n callback: handler,\r\n originalCallback: originalCallback\r\n })\r\n this.addEventListener(type, handler)\r\n })\r\n })\r\n}\r\n\r\nexport default on\r\n","import checkArguments from './checkArguments'\r\n\r\nfunction one (types, selector, handler) {\r\n let parameters = checkArguments(...arguments)\r\n\r\n types = parameters.types\r\n selector = parameters.selector\r\n handler = parameters.handler\r\n\r\n let that = this\r\n let oneHandler = function oneHandler (event) {\r\n handler.apply(undefined, arguments)\r\n that.filter(this).off(event.type, selector, oneHandler)\r\n }\r\n\r\n return this.on(types, selector, oneHandler)\r\n}\r\n\r\nexport default one\r\n","import skizz from '../core/index'\r\n\r\nimport fire from './fire'\r\nimport off from './off'\r\nimport on from './on'\r\nimport one from './one'\r\n\r\nskizz.fn.fire = fire\r\nskizz.fn.off = off\r\nskizz.fn.on = on\r\nskizz.fn.one = one\r\n","/**\r\n * hash - Get an hash of the passed argument\r\n * Usefull to generate a key for localStorage based on the current url\r\n *\r\n * @param {string} string The string to hash\r\n * @return {number} The hash of the passed argument\r\n */\r\nfunction hash (string) {\r\n let hash = 0\r\n\r\n if (string.length === 0) {\r\n return hash\r\n }\r\n\r\n let chara\r\n let i\r\n let length = string.length\r\n\r\n for (i = 0; i < length; i++) {\r\n chara = string.charCodeAt(i)\r\n hash = ((hash << 5) - hash) + chara\r\n hash = hash & hash // Convert to 32bit integer\r\n }\r\n\r\n return hash\r\n}\r\n\r\nexport default hash\r\n","import hash from './hash'\r\n\r\nlet indexes = {}\r\n\r\n/**\r\n * guid - Generate a unique ID\r\n *\r\n * @param {string} [id='skizz'] The id to use\r\n * @param {boolean} [url=true] Use the document url as an hash to generate the id\r\n * @return {string} The generated guid\r\n */\r\nfunction guid (id = 'skizz', url = true) {\r\n if (indexes[id] === undefined) {\r\n indexes[id] = 0\r\n } else {\r\n indexes[id]++\r\n }\r\n\r\n return `${id}-${indexes[id]}` + (url ? `--${hash(document.URL).toString()}` : '')\r\n}\r\n\r\nexport default guid\r\n","/**\r\n * rand - Generated number between a min and max value\r\n *\r\n * @param {number} min The minimal value you want to random\r\n * @param {number} max The maximal value you want to random\r\n * @return {number} The random value between min and max\r\n */\r\nfunction rand (min, max) {\r\n if (min === 0) {\r\n return Math.floor(Math.random() * max)\r\n }\r\n return Math.floor(Math.random() * (max - min) / min)\r\n}\r\n\r\nexport default rand\r\n","/**\r\n * encode - Encodes a string as an URI parameter\r\n *\r\n * @param {string} string URI to encode\r\n * @return {string} The encoded URI\r\n */\r\nfunction encode (string) {\r\n return encodeURIComponent(string)\r\n}\r\n\r\nexport default encode\r\n","/**\r\n * decode - Decodes an URI parameters into a string\r\n *\r\n * @param {string} uri URI to decode\r\n * @return {string} The decode uri\r\n */\r\nfunction decode (uri) {\r\n return decodeURIComponent(uri)\r\n}\r\n\r\nexport default decode\r\n","class Storage {\r\n\r\n /**\r\n * constructor - Handle the local and session Storage\r\n *\r\n * @param {string} type Type of storage (session or local)\r\n * @return {undefined}\r\n */\r\n constructor (type) {\r\n this.type = type\r\n this.store = window[type]\r\n\r\n this.isAvailable = () => {\r\n let key = 'skizz-is-awesome'\r\n let data = key\r\n\r\n try {\r\n // http://stackoverflow.com/questions/9077101/iphone-localstorage-quota-exceeded-err-issue#answer-12976988\r\n this.store.setItem(key, data)\r\n this.store.removeItem(key)\r\n return true\r\n } catch (error) {\r\n return false\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * set - Set an item into the storage\r\n *\r\n * @param {string} key The key used to store the item\r\n * @param {any} data The data to store\r\n * @param {date} [expires] When should the storage expire ?\r\n * @return {boolean|undefined} Return false if not supported or undefined when the data is store\r\n */\r\n set (key, data, expires) {\r\n if (!this.isAvailable) {\r\n return false\r\n }\r\n\r\n data = JSON.stringify({\r\n value: data,\r\n expires: expires\r\n })\r\n\r\n return this.store.setItem(key, data)\r\n }\r\n\r\n /**\r\n * get - Get an item into the storage\r\n *\r\n * @param {string} key The key used to store the item\r\n * @return {any} The data previously store\r\n */\r\n get (key) {\r\n let data = this.store.getItem(key)\r\n if (data === null) {\r\n return data\r\n }\r\n\r\n data = JSON.parse(data)\r\n\r\n if (data.expires && (new Date() > new Date(data.expires))) {\r\n this.remove(key)\r\n return null\r\n }\r\n\r\n return data.value\r\n }\r\n\r\n /**\r\n * remove - Remove one item into the storage\r\n *\r\n * @param {string} key The key used to store the item\r\n * @return {undefined}\r\n */\r\n remove (key) {\r\n return this.store.removeItem(key)\r\n }\r\n\r\n /**\r\n * removeAll - Remove all items into the storage\r\n *\r\n * @return {undefined}\r\n */\r\n removeAll () {\r\n return this.store.clear()\r\n }\r\n\r\n /**\r\n * storageLength - Get the length of the Storage collection\r\n *\r\n * @return {int} The length of the Storage collection\r\n */\r\n storageLength () {\r\n return this.store.length\r\n }\r\n\r\n /**\r\n * getKey - Get the key of a store item by index\r\n *\r\n * @param {int} index The index of the store item\r\n * @return {string} The name of the item\r\n */\r\n getKey (index) {\r\n return this.store.key(index)\r\n }\r\n}\r\n\r\nexport default {\r\n local: new Storage('localStorage'),\r\n session: new Storage('sessionStorage')\r\n}\r\n","/**\r\n * @return: return an empty function\r\n */\r\nexport default function () {\r\n let noop = function () {}\r\n return noop\r\n}\r\n","/**\r\n * The identify function does nothing but return it's own argument\r\n * @memberOf identity\r\n * @argument {function} d Argument to return\r\n */\r\nfunction identity (d) {\r\n return d\r\n}\r\n\r\nexport default identity\r\n","/**\r\n * Memoizes any function into a cache where keys\r\n * are calculated from the parameters of the function\r\n * return the results if a function is already pass with the same arguments\r\n * @memberOf memoize\r\n * @param {function} func - the function to memoize\r\n */\r\nfunction memoize (func, hashFunc) {\r\n /**\r\n * Previous calls will be cached here\r\n */\r\n\r\n func.memoize = func.memoize || ('Map' in window ? (new Map()) : (new MyMap()))\r\n\r\n return function () {\r\n /**\r\n * Calculate the key used to store the result of the function call\r\n */\r\n let fp = hashFunc ? hashFunc.apply(this, arguments) : Array.prototype.slice.call(arguments)\r\n\r\n if (!func.memoize.has(fp)) {\r\n func.memoize.set(fp, func.apply(this, arguments))\r\n }\r\n\r\n return func.memoize.get(fp)\r\n }\r\n}\r\n\r\nfunction MyMap () {\r\n this.keys = []\r\n this.cache = []\r\n}\r\n\r\nMyMap.prototype.has = function (key) {\r\n return this.keys.indexOf(key) > -1\r\n}\r\n\r\nMyMap.prototype.set = function (key, value) {\r\n let idx = this.keys.indexOf(key)\r\n\r\n if (idx === -1) {\r\n this.keys.push(key)\r\n this.cache.push(value)\r\n } else {\r\n this.cache[idx] = value\r\n }\r\n\r\n return this.cache.length\r\n}\r\n\r\nMyMap.prototype.get = function (key) {\r\n let idx = this.keys.indexOf(key)\r\n return idx === -1 ? null : this.cache[idx]\r\n}\r\n\r\nexport default memoize\r\n","/**\r\n * debounce -\r\n *\r\n * @return\r\n */\r\nfunction debounce (fn, interval, immediate) {\r\n let waiting = false\r\n let timer\r\n let args\r\n\r\n interval = interval || 250\r\n immediate = !!immediate\r\n\r\n function clear () {\r\n waiting = false\r\n }\r\n\r\n function exec () {\r\n timer = null\r\n fn.apply(null, args)\r\n args = null\r\n }\r\n\r\n function funcImmediate () {\r\n args = arguments\r\n if (waiting) return\r\n waiting = true\r\n fn.apply(null, args)\r\n timer = setTimeout(clear, interval)\r\n }\r\n\r\n function funcNotImmediat () {\r\n args = arguments\r\n if (timer) clearTimeout(timer)\r\n timer = setTimeout(exec, interval)\r\n }\r\n\r\n return immediate ? funcImmediate() : funcNotImmediat()\r\n}\r\n\r\nexport default debounce\r\n","/**\r\n * throttle -\r\n *\r\n * @return\r\n */\r\nfunction throttle (fn, interval, immediate) {\r\n let waiting = false\r\n let args\r\n let callTimer\r\n\r\n interval = interval || 250\r\n immediate = !!immediate\r\n\r\n function clear () {\r\n waiting = false\r\n }\r\n\r\n function exec () {\r\n fn.apply(null, args)\r\n args = null\r\n callTimer = null\r\n }\r\n\r\n function func () {\r\n args = arguments\r\n\r\n if (immediate && !waiting) {\r\n exec()\r\n waiting = setTimeout(clear, interval)\r\n } else {\r\n callTimer = callTimer || setTimeout(exec, interval)\r\n }\r\n }\r\n\r\n return func\r\n}\r\n\r\nexport default throttle\r\n","function scrollTo (element, duration = 1000, animation = null) {\r\n let pageY = window.pageYOffset\r\n let targetY\r\n\r\n if (typeof element === 'number') {\r\n targetY = element\r\n } else if (typeof element === 'object') {\r\n targetY = element.length ? element[0].getBoundingClientRect().top + pageY : element.getBoundingClientRect().top + pageY\r\n } else {\r\n targetY = pageY\r\n }\r\n\r\n let diff = targetY - pageY\r\n let start\r\n\r\n window.requestAnimationFrame(step)\r\n\r\n function step (timestamp) {\r\n if (!start) start = timestamp\r\n // Elapsed miliseconds since start of scrolling.\r\n let progress = timestamp - start\r\n // Get percent of completion in range [0, 1].\r\n let percent = Math.min(progress / duration, 1)\r\n\r\n window.scrollTo(0, pageY + diff * percent)\r\n\r\n // Proceed with animation as long as we wanted it to.\r\n if (progress < duration) {\r\n window.requestAnimationFrame(step)\r\n }\r\n }\r\n}\r\n\r\nexport default scrollTo\r\n","import skizz from '../core/index'\r\n\r\nimport isFunction from './isFunction'\r\nimport guid from './guid'\r\nimport hash from './hash'\r\nimport rand from './rand'\r\nimport encode from './encode'\r\nimport decode from './decode'\r\nimport storage from './storage'\r\nimport noop from './noop'\r\nimport identity from './identity'\r\nimport memoize from './memoize'\r\nimport debounce from './debounce'\r\nimport throttle from './throttle'\r\nimport scrollTo from './scrollTo'\r\n\r\nskizz.isFunction = isFunction\r\nskizz.guid = guid\r\nskizz.hash = hash\r\nskizz.rand = rand\r\nskizz.encode = encode\r\nskizz.decode = decode\r\nskizz.storage = storage\r\nskizz.noop = noop\r\nskizz.identity = identity\r\nskizz.memoize = memoize\r\nskizz.debounce = debounce\r\nskizz.throttle = throttle\r\nskizz.scrollTo = scrollTo\r\n","import skizz from './core/index'\r\nimport './ajax/index'\r\nimport './collections/index'\r\nimport './dom/index'\r\nimport './event/index'\r\nimport './utils/index'\r\n\r\nskizz.version = '0.1.0'\r\n\r\nwindow.skizz = window.$ = skizz\r\n\r\n/**\r\n * Export Skizz\r\n */\r\nexport default skizz\r\n","(function ($) {\r\n $.fn.fastButton = function (handler) {\r\n let body = document.body\r\n let addEventListener = 'addEventListener'\r\n let removeEventListener = 'removeEventListener'\r\n let ClickBuster = {}\r\n\r\n /**\r\n * ClickBuster listens for consecutive clicks and identifies them as a\r\n * single event if they happen within the same area\r\n * @private\r\n */\r\n ClickBuster.coordinates = []\r\n\r\n /**\r\n * Verifies that the click event has already been detected and if yes,\r\n * cancels it\r\n * @private\r\n */\r\n ClickBuster.onClick = function (event) {\r\n let i, x, y\r\n for (i = 0; i < ClickBuster.coordinates.length; i += 2) {\r\n x = ClickBuster.coordinates[i]\r\n y = ClickBuster.coordinates[i + 1]\r\n if (Math.abs(event.clientX - x) < 25 && Math.abs(event.clientY - y) < 25) {\r\n event.stopPropagation()\r\n event.preventDefault()\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Click coordinates are tracked to prevent executing the handler twice\r\n * @private\r\n */\r\n ClickBuster.preventGhostClick = function (x, y) {\r\n ClickBuster.coordinates.push(x, y)\r\n window.setTimeout(ClickBuster.pop, 2500)\r\n }\r\n\r\n /**\r\n * Remove the oldest coordinates from the list\r\n * @private\r\n */\r\n ClickBuster.pop = function () {\r\n ClickBuster.coordinates.splice(0, 2)\r\n }\r\n\r\n document[addEventListener]('click', ClickBuster.onClick, true)\r\n\r\n let objHandler = {\r\n element: this,\r\n handler: handler,\r\n\r\n /** Listen for mouse click and touch events */\r\n handleEvent: function (event) {\r\n switch (event.type) {\r\n case 'touchstart':\r\n this.onTouchStart(event)\r\n break\r\n\r\n case 'touchmove':\r\n this.onTouchMove(event)\r\n break\r\n\r\n case 'touchend':\r\n this.onClick(event)\r\n break\r\n\r\n case 'click':\r\n this.onClick(event)\r\n break\r\n }\r\n },\r\n\r\n /**\r\n * when the user presses her finger on the screen, we start\r\n * listening for when she removes it and memorize the\r\n * coordinates of the first finger (this is to discriminate\r\n * between taps and swipes)\r\n */\r\n onTouchStart: function (event) {\r\n var touch = event.touches[0]\r\n\r\n event.stopPropagation()\r\n\r\n this.element[addEventListener]('touchend', this, false)\r\n body[addEventListener]('touchmove', this, false)\r\n\r\n this.startX = touch.clientX\r\n this.startY = touch.clientY\r\n },\r\n\r\n /**\r\n * if the user moves her finger more than a certain amount,\r\n * it means this is a swipe gesture and we stop tracking it.\r\n */\r\n onTouchMove: function (event) {\r\n var touch = event.touches[0]\r\n\r\n if (Math.abs(touch.clientX - this.startX) > 10 ||\r\n Math.abs(touch.clientY - this.startY) > 10) {\r\n this.reset()\r\n }\r\n },\r\n\r\n /**\r\n * the user tapped/clicked on the target button, therefore\r\n * we just call the handler\r\n */\r\n onClick: function (event) {\r\n event.stopPropagation()\r\n this.reset()\r\n\r\n if (this.handler.handleEvent) {\r\n this.handler.handleEvent(event)\r\n } else {\r\n this.handler(event)\r\n }\r\n\r\n /* if it was a tap, we must take care of the click event that\r\n * will be fired 300ms later and prevent the handler from being\r\n * called twice.\r\n */\r\n if (event.type === 'touchend') {\r\n ClickBuster.preventGhostClick(this.startX, this.startY)\r\n }\r\n },\r\n\r\n /** stop tracking the user's gesture */\r\n reset: function () {\r\n this.element[0][removeEventListener]('touchend', this, false)\r\n body[removeEventListener]('touchmove', this, false)\r\n },\r\n\r\n /** remove any listener */\r\n destroy: function () {\r\n let element = this.element[0]\r\n element[removeEventListener]('touchend', this, false)\r\n element[removeEventListener]('touchstart', this, false)\r\n element[removeEventListener]('touchmove', this, false)\r\n element[removeEventListener]('click', this, false)\r\n body[removeEventListener]('touchmove', this, false)\r\n }\r\n }\r\n\r\n function FastButton () {\r\n let element = this\r\n this.element = element\r\n this.handler = handler\r\n\r\n element[addEventListener]('touchstart', objHandler, false)\r\n element[addEventListener]('click', objHandler, false)\r\n init()\r\n\r\n function init () {}\r\n }\r\n return this.each(FastButton)\r\n }\r\n}(window.skizz))\r\n","import $ from '../skizz'\r\nimport '../utils/fast-button'\r\n\r\n/**\r\n * dropdown - open/close a list with a button\r\n *\r\n * @param {Object} [options] Custom options\r\n * @version 2.0.0\r\n * @return {Object} Skizz\r\n */\r\n$.fn.dropdown = function dropdown (options) {\r\n options = $.extend({\r\n onActive: null,\r\n directParent: true,\r\n api: false\r\n }, options)\r\n\r\n const activeClassName = 'is-open'\r\n\r\n let api\r\n\r\n this.each(function (index, elements) {\r\n let parent\r\n let selectedIndex = NaN\r\n let active = false\r\n let menuItems\r\n let currentElement = $(this)\r\n\r\n function init () {\r\n currentElement.fastButton(handle)\r\n\r\n if (options.directParent) {\r\n currentElement.on('keypress', handle)\r\n }\r\n\r\n options.directParent ? parent = currentElement : parent = getParent(currentElement)\r\n menuItems = $('.menu-item', parent)\r\n\r\n if (options.onActive) {\r\n active = $('.is-active', parent)\r\n\r\n parent.on('click', function (event) {\r\n if (event.target.tagName !== 'A' || event.target === active) return\r\n\r\n event.preventDefault()\r\n options.onActive(event)\r\n\r\n if (active) {\r\n active.removeClass('is-active')\r\n active = $(event.target)\r\n active.addClass('is-active')\r\n close()\r\n }\r\n })\r\n }\r\n }\r\n\r\n /**\r\n * A dropdown must be enclosed in a .btngroup, this function searches for it\r\n * @private\r\n * @memberOf Dropdown#\r\n * @param {Object} element Dom element\r\n * @return {Object} Dom parent element of the given parameter\r\n */\r\n function getParent (element) {\r\n parent = element.parent()\r\n\r\n while (!parent.hasClass('dropdown') && parent.parent()) {\r\n parent = parent.parent()\r\n }\r\n\r\n return parent\r\n }\r\n\r\n /**\r\n * A dropdown listens for mouse clicks and key strokes\r\n * @param {Object} event Event object with all information about the current event\r\n */\r\n function handle (event) {\r\n if (event.type === 'keypress' &&\r\n event.keyCode !== 13 && // enter\r\n event.keyCode !== 27 && // escape\r\n event.keyCode !== 38 && // up arrow\r\n event.keyCode !== 40) { return } // bottom arrow\r\n\r\n if (event.target.tagName !== 'A') {\r\n event.preventDefault()\r\n }\r\n\r\n if (event.keyCode === 13) {\r\n if ($(event.target).hasClass('menu-item')) {\r\n $(event.target).fire('click')\r\n close()\r\n off()\r\n } else {\r\n if (parent.hasClass(activeClassName)) {\r\n close()\r\n off()\r\n } else {\r\n open()\r\n on()\r\n }\r\n }\r\n } else if (event.keyCode === 38) {\r\n if (parent.hasClass('dropdown')) {\r\n event.preventDefault()\r\n }\r\n\r\n if (isNaN(selectedIndex)) {\r\n selectedIndex = 0\r\n }\r\n\r\n selectedIndex = (selectedIndex - 1 + menuItems.length) % menuItems.length\r\n menuItems[selectedIndex].focus()\r\n } else if (event.keyCode === 40) {\r\n if (parent.hasClass('dropdown')) {\r\n event.preventDefault()\r\n }\r\n\r\n if (isNaN(selectedIndex)) {\r\n selectedIndex = -1\r\n }\r\n\r\n selectedIndex = (selectedIndex + 1) % menuItems.length\r\n menuItems[selectedIndex].focus()\r\n } else if (event.type === 'click' && options.directParent) {\r\n if (currentElement.hasClass(activeClassName)) {\r\n close()\r\n off()\r\n } else {\r\n open()\r\n on()\r\n }\r\n } else {\r\n if (currentElement.hasClass(activeClassName)) {\r\n close()\r\n off()\r\n } else {\r\n open()\r\n on()\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Opens the dropdown menu\r\n */\r\n function open () {\r\n parent.addClass(activeClassName).attr('aria-expanded', 'true')\r\n }\r\n\r\n /**\r\n * Closes the dropdown menu\r\n */\r\n function close () {\r\n parent.removeClass(activeClassName).attr('aria-expanded', 'false')\r\n }\r\n\r\n /**\r\n * Binds listeners for mouse clicks and key strokes at the document level. This is to dismiss the dropdown if any action happens outside the dropdown.\r\n */\r\n function on () {\r\n $(document).on('keydown click', handle)\r\n }\r\n\r\n /**\r\n * Unbinds listeners for mouse clicks and key strokes at the document level.\r\n */\r\n function off () {\r\n $(document).off('keydown click', handle)\r\n }\r\n\r\n init()\r\n\r\n api = {\r\n on: on,\r\n off: off,\r\n init: init,\r\n open: open,\r\n close: close,\r\n getParent: getParent,\r\n handle: handle\r\n }\r\n })\r\n\r\n return options.api ? api : this\r\n}\r\n","import $ from './skizz'\r\nimport './plugins/dropdown'\r\n\r\nif ($('.page--step-1').length > 0) {\r\n let country = $('.country')\r\n let countryImg = $('img', country)\r\n let countryLabel = $('.country-label', country)\r\n\r\n $('.country + .menu').on('click', 'li', function (event) {\r\n let active = $(event.target)\r\n let newLang = active.attr('data-name')\r\n\r\n countryLabel.text(active.text())\r\n countryImg.attr('src', $('img', active).attr('src'))\r\n $('#country-eid').attr('value', newLang)\r\n })\r\n\r\n $('.dropdown').dropdown({\r\n directParent: true\r\n })\r\n}\r\n"],"names":["Skizz","selection","context","length","forEach","element","index","queue","ready","fn","document","readyState","addEventListener","run","push","window","setTimeout","shift","extend","target","i","mixin","prop","hasOwnProperty","Object","defineProperty","value","enumerable","writable","lang","documentElement","getI18N","i18n","undefined","Widgets","widgets","options","register","widget","id","unregister","plugins","destroy","skizz","selector","root","selType","charAt","div","createElement","innerHTML","slice","call","childNodes","querySelectorAll","HTMLElement","Array","NodeList","HTMLCollection","prototype","post","url","data","header","request","XMLHttpRequest","open","setRequestHeader","send","success","error","complete","ajax","settings","json","onload","status","JSON","parse","responseText","onerror","get","each","collection","val","isFunction","obj","constructor","apply","stringSorting","filter","instanceSorting","fnSorting","keep","elementSorting","filterIndex","collectionLength","filterLength","map","results","once","predicate","css","getComputedStyle","getPropertyValue","style","setProperty","str","cssText","join","attr","name","arguments","attribute","getAttribute","setAttribute","textContent","outerHTML","removeAttribute","hasAttr","hasAttribute","removeAttr","text","detachElement","parentNode","removeChild","addClass","className","classNameArray","wsRE","trim","split","addClassStandard","classList","add","addClassCompat","replaced","indexOf","hasClass","hasClassStandard","contains","hasClassCompat","removeClass","removeClassStandard","remove","removeClassCompat","replace","RegExp","toggleClass","toggleClassStandard","toggle","toggleClassCompat","after","fragment","htmlAfter","insertBefore","cloneNode","nextSibling","append","htmlAppend","appendChild","before","htmlBefore","prepend","htmlPrepend","firstChild","html","insertHtmlMixin","position","insertHtml","insertAdjacentHTML","prev","previous","previousSibling","nodeType","item","next","closest","closestPolyfill","matches","msMatchesSelector","webkitMatchesSelector","parent","$","cloneChildren","clone","detach","fireEvent","node","eventName","args","doc","event","ownerDocument","Error","dispatchEvent","eventClass","createEvent","bubbles","initEvent","synthetic","createEventObject","fire","types","type","checkArguments","handler","off","parameters","SkizzHandlers","listeners","listener","originalCallback","removeEventListener","callback","splice","delegate","on","one","that","oneHandler","hash","string","chara","charCodeAt","indexes","guid","URL","toString","rand","min","max","Math","floor","random","encode","encodeURIComponent","decode","uri","decodeURIComponent","Storage","store","isAvailable","key","setItem","removeItem","set","expires","stringify","getItem","Date","removeAll","clear","storageLength","getKey","local","session","noop","identity","d","memoize","func","hashFunc","Map","MyMap","fp","has","keys","cache","idx","debounce","interval","immediate","waiting","timer","exec","funcImmediate","funcNotImmediat","clearTimeout","throttle","callTimer","scrollTo","duration","animation","pageY","pageYOffset","targetY","getBoundingClientRect","top","diff","start","requestAnimationFrame","step","timestamp","progress","percent","storage","version","fastButton","body","ClickBuster","coordinates","onClick","x","y","abs","clientX","clientY","stopPropagation","preventDefault","preventGhostClick","pop","objHandler","handleEvent","onTouchStart","onTouchMove","touch","touches","startX","startY","reset","FastButton","init","dropdown","onActive","directParent","api","activeClassName","elements","selectedIndex","NaN","active","menuItems","currentElement","handle","getParent","tagName","close","keyCode","isNaN","focus","country","countryImg","countryLabel","newLang"],"mappings":"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"}