-
Notifications
You must be signed in to change notification settings - Fork 0
/
elcontrols.js.map
1 lines (1 loc) · 940 KB
/
elcontrols.js.map
1
{"version":3,"file":"elcontrols.js","sources":["node_modules/broken/src/promise-inspection.coffee","node_modules/broken/src/utils.coffee","node_modules/broken/src/soon.coffee","node_modules/broken/src/promise.coffee","node_modules/broken/src/helpers.coffee","node_modules/broken/src/index.coffee","node_modules/es-raf/node_modules/es-now/lib/index.mjs","node_modules/es-raf/src/index.coffee","src/utils/patches.coffee","node_modules/es-tostring/index.mjs","node_modules/es-is/src/function.coffee","node_modules/riot/lib/browser/common/global-variables.js","node_modules/riot/lib/browser/common/util/dom.js","node_modules/riot/lib/browser/tag/styleManager.js","node_modules/riot-tmpl/dist/es6.tmpl.js","node_modules/riot-observable/dist/es6.observable.js","node_modules/riot/lib/browser/common/util/check.js","node_modules/riot/lib/browser/common/util/misc.js","node_modules/riot/lib/settings.js","node_modules/riot/lib/browser/tag/setEventHandler.js","node_modules/riot/lib/browser/tag/update.js","node_modules/riot/lib/browser/tag/if.js","node_modules/riot/lib/browser/tag/ref.js","node_modules/riot/lib/browser/tag/each.js","node_modules/riot/lib/browser/tag/parse.js","node_modules/riot/lib/browser/tag/mkdom.js","node_modules/riot/lib/browser/tag/core.js","node_modules/riot/lib/browser/tag/tag.js","node_modules/riot/lib/browser/common/util/tags.js","node_modules/riot/lib/riot.js","node_modules/es-is/src/number.coffee","node_modules/es-is/src/object.coffee","node_modules/es-object-assign/src/index.coffee","node_modules/referential/src/ref.coffee","node_modules/referential/src/index.coffee","node_modules/el.js/src/schedule.coffee","node_modules/el.js/src/views/view.coffee","node_modules/el.js/src/views/inputify.coffee","node_modules/el.js/src/views/form.coffee","node_modules/el.js/src/views/input.coffee","node_modules/el.js/src/views/index.coffee","node_modules/el.js/src/index.coffee","src/events.coffee","src/utils/valueOrCall.coffee","node_modules/es6-tween/src/shim.js","node_modules/es6-tween/src/core.js","node_modules/es6-tween/src/Easing.js","node_modules/es6-tween/src/constants.js","node_modules/es6-tween/src/Interpolation.js","node_modules/es6-tween/src/NodeCache.js","node_modules/es6-tween/src/selector.js","node_modules/es6-tween/src/Tween.js","src/controls/control.coffee","src/controls/checkbox.coffee","src/utils/placeholder.coffee","src/controls/text.coffee","src/controls/readonly.coffee","src/controls/copy.coffee","src/controls/selection.coffee","src/controls/country-select.coffee","node_modules/shop.js-util/src/data/currencies.coffee","node_modules/shop.js-util/src/currency.coffee","src/controls/currency.coffee","node_modules/zepto-modules/zepto.js","node_modules/zepto-modules/event.js","node_modules/zepto-modules/ie.js","node_modules/zepto-modules/stack.js","node_modules/zepto-modules/selector.js","src/$.coffee","node_modules/es-sifter/src/diacritics.js","node_modules/es-sifter/src/utils.js","node_modules/es-sifter/src/sifter.js","node_modules/es-is/src/array.coffee","node_modules/es-microplugin/src/index.js","node_modules/es-selectize/src/contrib/microevent.js","node_modules/es-selectize/src/contrib/highlight.js","node_modules/es-selectize/src/defaults.js","node_modules/es-selectize/src/consts.js","node_modules/es-selectize/src/utils.js","node_modules/es-selectize/src/selectize.js","node_modules/es-selectize/src/index.js","src/controls/dropdown.coffee","node_modules/qrcode-lite/src/renderer/utils.js","node_modules/qrcode-lite/src/renderer/svg-tag.js","node_modules/qrcode-lite/node_modules/es-tostring/index.mjs","node_modules/qrcode-lite/node_modules/es-is/src/array.coffee","node_modules/qrcode-lite/node_modules/es-is/src/function.coffee","node_modules/qrcode-lite/src/core/utils.js","node_modules/qrcode-lite/src/core/alignment-pattern.js","node_modules/qrcode-lite/src/core/error-correction-level.js","node_modules/qrcode-lite/src/core/error-correction-code.js","node_modules/qrcode-lite/src/core/finder-pattern.js","node_modules/qrcode-lite/src/core/format-info.js","node_modules/qrcode-lite/src/core/mask-pattern.js","node_modules/qrcode-lite/src/core/version.js","node_modules/qrcode-lite/src/core/regex.js","node_modules/qrcode-lite/src/core/mode.js","node_modules/qrcode-lite/src/core/alphanumeric-data.js","node_modules/qrcode-lite/src/core/buffer.js","node_modules/qrcode-lite/src/core/byte-data.js","node_modules/qrcode-lite/src/core/kanji-data.js","node_modules/qrcode-lite/src/core/numeric-data.js","node_modules/qrcode-lite/src/core/dijkstra.js","node_modules/qrcode-lite/src/core/segments.js","node_modules/qrcode-lite/src/core/bit-buffer.js","node_modules/qrcode-lite/src/core/bit-matrix.js","node_modules/qrcode-lite/src/core/galois-field.js","node_modules/qrcode-lite/src/core/polynomial.js","node_modules/qrcode-lite/src/core/reed-solomon-encoder.js","node_modules/qrcode-lite/src/core/qrcode.js","node_modules/qrcode-lite/src/renderer/canvas.js","node_modules/qrcode-lite/src/index.js","src/controls/qrcode.coffee","src/controls/recaptcha.coffee","src/controls/state-select.coffee","src/controls/textbox.coffee","node_modules/gmaps/gmaps.js","src/controls/gmap.coffee"],"sourcesContent":["export default class PromiseInspection\n constructor: ({@state, @value, @reason}) ->\n\n isFulfilled: ->\n @state is 'fulfilled'\n\n isRejected: ->\n @state is 'rejected'\n","# Let the obfiscator compress these down by assigning them to variables\nexport _undefined = undefined\nexport _undefinedString = 'undefined'\n","import {_undefined, _undefinedString} from './utils'\n\n# See http://www.bluejava.com/4NS/Speed-up-your-Websites-with-a-Faster-setTimeout-using-soon\n# This is a very fast \"asynchronous\" flow control - i.e. it yields the thread\n# and executes later, but not much later. It is far faster and lighter than\n# using setTimeout(fn,0) for yielding threads. Its also faster than other\n# setImmediate shims, as it uses Mutation Observer and \"mainlines\" successive\n# calls internally.\n#\n# WARNING: This does not yield to the browser UI loop, so by using this\n# repeatedly you can starve the UI and be unresponsive to the user.\n#\n# This is an even FASTER version of https://gist.github.com/bluejava/9b9542d1da2a164d0456\n# that gives up passing context and arguments, in exchange for a 25x speed\n# increase. (Use anon function to pass context/args)\nsoon = do ->\n # Function queue\n fq = []\n\n # Avoid using shift() by maintaining a start pointer - and remove items in\n # chunks of 1024 (bufferSize)\n fqStart = 0\n bufferSize = 1024\n\n callQueue = ->\n # This approach allows new yields to pile on during the execution of these\n while fq.length - fqStart\n try\n # No context or args...\n fq[fqStart]()\n catch err\n unless typeof console is 'undefined'\n console.error err\n\n # Increase start pointer and dereference function just called\n fq[fqStart++] = _undefined\n\n if fqStart == bufferSize\n fq.splice 0, bufferSize\n fqStart = 0\n\n return\n\n # Run the callQueue function asynchronously, as fast as possible\n cqYield = do ->\n # This is the fastest way browsers have to yield processing\n if typeof MutationObserver != _undefinedString\n # First, create a div not attached to DOM to 'observe'\n dd = document.createElement 'div'\n mo = new MutationObserver callQueue\n mo.observe dd, attributes: true\n\n return ->\n dd.setAttribute 'a', 0\n return\n\n # If No MutationObserver - this is the next best thing - handles Node and MSIE\n if typeof setImmediate != _undefinedString\n return ->\n setImmediate callQueue\n return\n\n # Final fallback - shouldn't be used for much except very old browsers\n ->\n setTimeout callQueue, 0\n return\n\n\n # This is the function that will be assigned to soon it takes the function to\n # call and examines all arguments.\n (fn) ->\n # Push the function and any remaining arguments along with context\n fq.push fn\n\n # Upon adding our first entry, kick off the callback\n if fq.length - fqStart == 1\n cqYield()\n return\n\nexport default soon\n","# Largely copied from Zousan: https://github.com/bluejava/zousan\nimport PromiseInspection from './promise-inspection'\nimport soon from './soon'\n\n# Let the obfiscator compress these down by assigning them to variables\n_undefined = undefined\n_undefinedString = 'undefined'\n\n# These are the three possible states (PENDING remains undefined - as intended)\n# a promise can be in. The state is stored in this.state as read-only\nSTATE_PENDING = _undefined\nSTATE_FULFILLED = 'fulfilled'\nSTATE_REJECTED = 'rejected'\n\nresolveClient = (c, arg) ->\n if typeof c.y == 'function'\n try\n yret = c.y.call(_undefined, arg)\n c.p.resolve yret\n catch err\n c.p.reject err\n else\n # pass this along...\n c.p.resolve arg\n return\n\nrejectClient = (c, reason) ->\n if typeof c.n == 'function'\n try\n yret = c.n.call(_undefined, reason)\n c.p.resolve yret\n catch err\n c.p.reject err\n else\n # pass this along...\n c.p.reject reason\n return\n\n\nclass Promise\n constructor: (fn) ->\n if fn\n fn (arg) =>\n @resolve arg\n , (arg) =>\n @reject arg\n\n resolve: (value) ->\n if @state != STATE_PENDING\n return\n\n if value == @\n return @reject new TypeError 'Attempt to resolve promise with self'\n\n if value and (typeof value == 'function' or typeof value == 'object')\n try\n # First time through?\n first = true\n next = value.then\n\n if typeof next == 'function'\n # And call the value.then (which is now in \"then\") with value as the\n # context and the resolve/reject functions per thenable spec\n next.call value, (ra) =>\n if first\n first = false if first\n @resolve ra\n return\n , (rr) =>\n if first\n first = false\n @reject rr\n return\n return\n catch err\n @reject err if first\n return\n\n @state = STATE_FULFILLED\n @v = value\n\n if clients = @c\n soon =>\n resolveClient c, value for c in clients\n return\n return\n\n reject: (reason) ->\n return if @state != STATE_PENDING\n\n @state = STATE_REJECTED\n @v = reason\n\n if clients = @c\n soon ->\n rejectClient c, reason for c in clients\n return\n else if !Promise.suppressUncaughtRejectionError and typeof console != 'undefined'\n console.log 'Broken Promise, please catch rejections: ', reason, if reason then reason.stack else null\n\n return\n\n then: (onFulfilled, onRejected) ->\n p = new Promise\n\n client =\n y: onFulfilled\n n: onRejected\n p: p\n\n if @state == STATE_PENDING\n # We are pending, so client must wait - so push client to end of this.c\n # array (create if necessary for efficiency)\n if @c\n @c.push client\n else\n @c = [ client ]\n else\n s = @state\n a = @v\n soon ->\n # We are not pending, so yield script and resolve/reject as needed\n if s == STATE_FULFILLED\n resolveClient client, a\n else\n rejectClient client, a\n return\n p\n\n catch: (cfn) ->\n @then null, cfn\n\n finally: (cfn) ->\n @then cfn, cfn\n\n timeout: (ms, msg) ->\n msg = msg or 'timeout'\n\n new Promise (resolve, reject) =>\n setTimeout ->\n # This will fail silently if promise already resolved or rejected\n reject Error(msg)\n , ms\n\n # This will fail silently if promise already timed out\n @then (val) ->\n resolve val\n return\n , (err) ->\n reject err\n return\n return\n\n callback: (cb) ->\n if typeof cb is 'function'\n @then (val) -> cb null, val\n @catch (err) -> cb err, null\n @\n\nexport default Promise\n","import Promise from './promise'\nimport PromiseInspection from './promise-inspection'\n\nexport resolve = (val) ->\n z = new Promise\n z.resolve val\n z\n\nexport reject = (err) ->\n z = new Promise\n z.reject err\n z\n\nexport all = (ps) ->\n # Sesults and resolved count\n results = []\n rc = 0\n retP = new Promise()\n\n resolvePromise = (p, i) ->\n if !p or typeof p.then != 'function'\n p = resolve(p)\n\n p.then (yv) ->\n results[i] = yv\n rc++\n if rc == ps.length\n retP.resolve results\n return\n\n , (nv) ->\n retP.reject nv\n return\n\n return\n\n resolvePromise p, i for p, i in ps\n\n # For zero length arrays, resolve immediately\n if !ps.length\n retP.resolve results\n\n retP\n\nexport reflect = (promise) ->\n new Promise (resolve, reject) ->\n promise\n .then (value) ->\n resolve new PromiseInspection\n state: 'fulfilled'\n value: value\n .catch (err) ->\n resolve new PromiseInspection\n state: 'rejected'\n reason: err\n\nexport settle = (promises) ->\n all promises.map reflect\n","import PromiseInspection from './promise-inspection'\nimport Promise from './promise'\nimport soon from './soon'\nimport {all, reflect, reject, resolve, settle} from './helpers'\n\nPromise.all = all\nPromise.reflect = reflect\nPromise.reject = reject\nPromise.resolve = resolve\nPromise.settle = settle\nPromise.soon = soon\n\nexport default Promise\n","var browser = (function() {\n var loadTime, now;\n if ((typeof performance !== \"undefined\" && performance !== null) && performance.now) {\n now = function() {\n return performance.now();\n };\n } else {\n now = function() {\n return Date.now() - loadTime;\n };\n loadTime = new Date().getTime();\n }\n return now;\n})();\n\nexport default browser;\n","import now from 'es-now'\n\nframeDuration = 1000 / 60\nid = 0\nlast = 0\nqueue = []\n\nexport raf = requestAnimationFrame = (callback) ->\n if queue.length == 0\n now_ = now()\n next = Math.max(0, frameDuration - (now_ - last))\n last = next + now_\n\n setTimeout ->\n cp = queue.slice(0)\n\n # Clear queue here to prevent callbacks from appending listeners to the\n # current frame's queue\n queue.length = 0\n\n for x in cp\n unless x.cancelled\n try\n x.callback last\n catch err\n setTimeout ->\n throw err\n , 0\n return\n , Math.round next\n queue.push\n handle: ++id\n callback: callback\n cancelled: false\n id\n\nexport caf = cancelAnimationFrame = (handle) ->\n for x in queue\n if x.handle == handle\n x.cancelled = true\n return\n","import Promise from 'broken'\nimport {raf} from 'es-raf'\n\n# Shims/Polyfills\nwindow.Promise ?= Promise\nwindow.requestAnimationFrame ?= raf\nwindow.cancelAnimationFrame ?= raf.cancel\n","export default function(obj) {\n return Object.prototype.toString.call(obj)\n}\n","import toString from 'es-tostring'\n\n# Test if `value` is a function.\n#\n# @param {Mixed} value value to test\n# @return {Boolean} true if `value` is a function, false otherwise\n# @api public\nexport default isFunction = (value) ->\n # Is alert\n return true if typeof window != 'undefined' and value == window.alert\n\n str = toString(value)\n\n str == '[object Function]' or\n str == '[object GeneratorFunction]' or\n str == '[object AsyncFunction]'\n","export\nconst\n // be aware, internal usage\n // ATTENTION: prefix the global dynamic variables with `__`\n // tags instances cache\n __TAGS_CACHE = [],\n // tags implementation cache\n __TAG_IMPL = {},\n YIELD_TAG = 'yield',\n\n /**\n * Const\n */\n GLOBAL_MIXIN = '__global_mixin',\n\n // riot specific prefixes or attributes\n ATTRS_PREFIX = 'riot-',\n\n // Riot Directives\n REF_DIRECTIVES = ['ref', 'data-ref'],\n IS_DIRECTIVE = 'data-is',\n CONDITIONAL_DIRECTIVE = 'if',\n LOOP_DIRECTIVE = 'each',\n LOOP_NO_REORDER_DIRECTIVE = 'no-reorder',\n SHOW_DIRECTIVE = 'show',\n HIDE_DIRECTIVE = 'hide',\n KEY_DIRECTIVE = 'key',\n RIOT_EVENTS_KEY = '__riot-events__',\n\n // for typeof == '' comparisons\n T_STRING = 'string',\n T_OBJECT = 'object',\n T_UNDEF = 'undefined',\n T_FUNCTION = 'function',\n\n XLINK_NS = 'http://www.w3.org/1999/xlink',\n SVG_NS = 'http://www.w3.org/2000/svg',\n XLINK_REGEX = /^xlink:(\\w+)/,\n\n WIN = typeof window === T_UNDEF ? undefined : window,\n\n // special native tags that cannot be treated like the others\n RE_SPECIAL_TAGS = /^(?:t(?:body|head|foot|[rhd])|caption|col(?:group)?|opt(?:ion|group))$/,\n RE_SPECIAL_TAGS_NO_OPTION = /^(?:t(?:body|head|foot|[rhd])|caption|col(?:group)?)$/,\n RE_EVENTS_PREFIX = /^on/,\n RE_HTML_ATTRS = /([-\\w]+) ?= ?(?:\"([^\"]*)|'([^']*)|({[^}]*}))/g,\n // some DOM attributes must be normalized\n CASE_SENSITIVE_ATTRIBUTES = {\n 'viewbox': 'viewBox',\n 'preserveaspectratio': 'preserveAspectRatio'\n },\n /**\n * Matches boolean HTML attributes in the riot tag definition.\n * With a long list like this, a regex is faster than `[].indexOf` in most browsers.\n * @const {RegExp}\n * @see [attributes.md](https://github.com/riot/compiler/blob/dev/doc/attributes.md)\n */\n RE_BOOL_ATTRS = /^(?:disabled|checked|readonly|required|allowfullscreen|auto(?:focus|play)|compact|controls|default|formnovalidate|hidden|ismap|itemscope|loop|multiple|muted|no(?:resize|shade|validate|wrap)?|open|reversed|seamless|selected|sortable|truespeed|typemustmatch)$/,\n // version# for IE 8-11, 0 for others\n IE_VERSION = (WIN && WIN.document || {}).documentMode | 0\n","import { RE_HTML_ATTRS, XLINK_NS, XLINK_REGEX, SVG_NS } from './../global-variables'\n\n/**\n * Shorter and fast way to select multiple nodes in the DOM\n * @param { String } selector - DOM selector\n * @param { Object } ctx - DOM node where the targets of our search will is located\n * @returns { Object } dom nodes found\n */\nexport function $$(selector, ctx) {\n return [].slice.call((ctx || document).querySelectorAll(selector))\n}\n\n/**\n * Shorter and fast way to select a single node in the DOM\n * @param { String } selector - unique dom selector\n * @param { Object } ctx - DOM node where the target of our search will is located\n * @returns { Object } dom node found\n */\nexport function $(selector, ctx) {\n return (ctx || document).querySelector(selector)\n}\n\n/**\n * Create a document fragment\n * @returns { Object } document fragment\n */\nexport function createFrag() {\n return document.createDocumentFragment()\n}\n\n/**\n * Create a document text node\n * @returns { Object } create a text node to use as placeholder\n */\nexport function createDOMPlaceholder() {\n return document.createTextNode('')\n}\n\n/**\n * Check if a DOM node is an svg tag or part of an svg\n * @param { HTMLElement } el - node we want to test\n * @returns {Boolean} true if it's an svg node\n */\nexport function isSvg(el) {\n const owner = el.ownerSVGElement\n return !!owner || owner === null\n}\n\n/**\n * Create a generic DOM node\n * @param { String } name - name of the DOM node we want to create\n * @returns { Object } DOM node just created\n */\nexport function mkEl(name) {\n return name === 'svg' ? document.createElementNS(SVG_NS, name) : document.createElement(name)\n}\n\n/**\n * Set the inner html of any DOM node SVGs included\n * @param { Object } container - DOM node where we'll inject new html\n * @param { String } html - html to inject\n * @param { Boolean } isSvg - svg tags should be treated a bit differently\n */\n/* istanbul ignore next */\nexport function setInnerHTML(container, html, isSvg) {\n // innerHTML is not supported on svg tags so we neet to treat them differently\n if (isSvg) {\n const node = container.ownerDocument.importNode(\n new DOMParser()\n .parseFromString(`<svg xmlns=\"${ SVG_NS }\">${ html }</svg>`, 'application/xml')\n .documentElement,\n true\n )\n\n container.appendChild(node)\n } else {\n container.innerHTML = html\n }\n}\n\n/**\n * Toggle the visibility of any DOM node\n * @param { Object } dom - DOM node we want to hide\n * @param { Boolean } show - do we want to show it?\n */\n\nexport function toggleVisibility(dom, show) {\n dom.style.display = show ? '' : 'none'\n dom.hidden = show ? false : true\n}\n\n/**\n * Remove any DOM attribute from a node\n * @param { Object } dom - DOM node we want to update\n * @param { String } name - name of the property we want to remove\n */\nexport function remAttr(dom, name) {\n dom.removeAttribute(name)\n}\n\n/**\n * Convert a style object to a string\n * @param { Object } style - style object we need to parse\n * @returns { String } resulting css string\n * @example\n * styleObjectToString({ color: 'red', height: '10px'}) // => 'color: red; height: 10px'\n */\nexport function styleObjectToString(style) {\n return Object.keys(style).reduce((acc, prop) => {\n return `${acc} ${prop}: ${style[prop]};`\n }, '')\n}\n\n/**\n * Get the value of any DOM attribute on a node\n * @param { Object } dom - DOM node we want to parse\n * @param { String } name - name of the attribute we want to get\n * @returns { String | undefined } name of the node attribute whether it exists\n */\nexport function getAttr(dom, name) {\n return dom.getAttribute(name)\n}\n\n/**\n * Set any DOM attribute\n * @param { Object } dom - DOM node we want to update\n * @param { String } name - name of the property we want to set\n * @param { String } val - value of the property we want to set\n */\nexport function setAttr(dom, name, val) {\n const xlink = XLINK_REGEX.exec(name)\n if (xlink && xlink[1])\n dom.setAttributeNS(XLINK_NS, xlink[1], val)\n else\n dom.setAttribute(name, val)\n}\n\n/**\n * Insert safely a tag to fix #1962 #1649\n * @param { HTMLElement } root - children container\n * @param { HTMLElement } curr - node to insert\n * @param { HTMLElement } next - node that should preceed the current node inserted\n */\nexport function safeInsert(root, curr, next) {\n root.insertBefore(curr, next.parentNode && next)\n}\n\n/**\n * Minimize risk: only zero or one _space_ between attr & value\n * @param { String } html - html string we want to parse\n * @param { Function } fn - callback function to apply on any attribute found\n */\nexport function walkAttrs(html, fn) {\n if (!html) return\n let m\n while (m = RE_HTML_ATTRS.exec(html))\n fn(m[1].toLowerCase(), m[2] || m[3] || m[4])\n}\n\n/**\n * Walk down recursively all the children tags starting dom node\n * @param { Object } dom - starting node where we will start the recursion\n * @param { Function } fn - callback to transform the child node just found\n * @param { Object } context - fn can optionally return an object, which is passed to children\n */\nexport function walkNodes(dom, fn, context) {\n if (dom) {\n const res = fn(dom, context)\n let next\n // stop the recursion\n if (res === false) return\n\n dom = dom.firstChild\n\n while (dom) {\n next = dom.nextSibling\n walkNodes(dom, fn, res)\n dom = next\n }\n }\n}","import { $, mkEl, setAttr } from './../common/util/dom'\nimport { WIN } from './../common/global-variables'\n\nlet styleNode\n// Create cache and shortcut to the correct property\nlet cssTextProp\nlet byName = {}\nlet remainder = []\nlet needsInject = false\n\n// skip the following code on the server\nif (WIN) {\n styleNode = ((() => {\n // create a new style element with the correct type\n const newNode = mkEl('style')\n // replace any user node or insert the new one into the head\n const userNode = $('style[type=riot]')\n\n setAttr(newNode, 'type', 'text/css')\n /* istanbul ignore next */\n if (userNode) {\n if (userNode.id) newNode.id = userNode.id\n userNode.parentNode.replaceChild(newNode, userNode)\n } else document.head.appendChild(newNode)\n\n return newNode\n }))()\n cssTextProp = styleNode.styleSheet\n}\n\n/**\n * Object that will be used to inject and manage the css of every tag instance\n */\nexport default {\n styleNode,\n /**\n * Save a tag style to be later injected into DOM\n * @param { String } css - css string\n * @param { String } name - if it's passed we will map the css to a tagname\n */\n add(css, name) {\n if (name) byName[name] = css\n else remainder.push(css)\n needsInject = true\n },\n /**\n * Inject all previously saved tag styles into DOM\n * innerHTML seems slow: http://jsperf.com/riot-insert-style\n */\n inject() {\n if (!WIN || !needsInject) return\n needsInject = false\n const style = Object.keys(byName)\n .map(k => byName[k])\n .concat(remainder).join('\\n')\n /* istanbul ignore next */\n if (cssTextProp) cssTextProp.cssText = style\n else styleNode.innerHTML = style\n }\n}\n","\n/**\n * The riot template engine\n * @version v3.0.8\n */\n\nvar skipRegex = (function () { //eslint-disable-line no-unused-vars\n\n var beforeReChars = '[{(,;:?=|&!^~>%*/'\n\n var beforeReWords = [\n 'case',\n 'default',\n 'do',\n 'else',\n 'in',\n 'instanceof',\n 'prefix',\n 'return',\n 'typeof',\n 'void',\n 'yield'\n ]\n\n var wordsLastChar = beforeReWords.reduce(function (s, w) {\n return s + w.slice(-1)\n }, '')\n\n var RE_REGEX = /^\\/(?=[^*>/])[^[/\\\\]*(?:(?:\\\\.|\\[(?:\\\\.|[^\\]\\\\]*)*\\])[^[\\\\/]*)*?\\/[gimuy]*/\n var RE_VN_CHAR = /[$\\w]/\n\n function prev (code, pos) {\n while (--pos >= 0 && /\\s/.test(code[pos]));\n return pos\n }\n\n function _skipRegex (code, start) {\n\n var re = /.*/g\n var pos = re.lastIndex = start++\n var match = re.exec(code)[0].match(RE_REGEX)\n\n if (match) {\n var next = pos + match[0].length\n\n pos = prev(code, pos)\n var c = code[pos]\n\n if (pos < 0 || ~beforeReChars.indexOf(c)) {\n return next\n }\n\n if (c === '.') {\n\n if (code[pos - 1] === '.') {\n start = next\n }\n\n } else if (c === '+' || c === '-') {\n\n if (code[--pos] !== c ||\n (pos = prev(code, pos)) < 0 ||\n !RE_VN_CHAR.test(code[pos])) {\n start = next\n }\n\n } else if (~wordsLastChar.indexOf(c)) {\n\n var end = pos + 1\n\n while (--pos >= 0 && RE_VN_CHAR.test(code[pos]));\n if (~beforeReWords.indexOf(code.slice(pos + 1, end))) {\n start = next\n }\n }\n }\n\n return start\n }\n\n return _skipRegex\n\n})()\n\n/**\n * riot.util.brackets\n *\n * - `brackets ` - Returns a string or regex based on its parameter\n * - `brackets.set` - Change the current riot brackets\n *\n * @module\n */\n\n/* global riot */\n\nexport\nvar brackets = (function (UNDEF) {\n\n var\n REGLOB = 'g',\n\n R_MLCOMMS = /\\/\\*[^*]*\\*+(?:[^*\\/][^*]*\\*+)*\\//g,\n\n R_STRINGS = /\"[^\"\\\\]*(?:\\\\[\\S\\s][^\"\\\\]*)*\"|'[^'\\\\]*(?:\\\\[\\S\\s][^'\\\\]*)*'|`[^`\\\\]*(?:\\\\[\\S\\s][^`\\\\]*)*`/g,\n\n S_QBLOCKS = R_STRINGS.source + '|' +\n /(?:\\breturn\\s+|(?:[$\\w\\)\\]]|\\+\\+|--)\\s*(\\/)(?![*\\/]))/.source + '|' +\n /\\/(?=[^*\\/])[^[\\/\\\\]*(?:(?:\\[(?:\\\\.|[^\\]\\\\]*)*\\]|\\\\.)[^[\\/\\\\]*)*?([^<]\\/)[gim]*/.source,\n\n UNSUPPORTED = RegExp('[\\\\' + 'x00-\\\\x1F<>a-zA-Z0-9\\'\",;\\\\\\\\]'),\n\n NEED_ESCAPE = /(?=[[\\]()*+?.^$|])/g,\n\n S_QBLOCK2 = R_STRINGS.source + '|' + /(\\/)(?![*\\/])/.source,\n\n FINDBRACES = {\n '(': RegExp('([()])|' + S_QBLOCK2, REGLOB),\n '[': RegExp('([[\\\\]])|' + S_QBLOCK2, REGLOB),\n '{': RegExp('([{}])|' + S_QBLOCK2, REGLOB)\n },\n\n DEFAULT = '{ }'\n\n var _pairs = [\n '{', '}',\n '{', '}',\n /{[^}]*}/,\n /\\\\([{}])/g,\n /\\\\({)|{/g,\n RegExp('\\\\\\\\(})|([[({])|(})|' + S_QBLOCK2, REGLOB),\n DEFAULT,\n /^\\s*{\\^?\\s*([$\\w]+)(?:\\s*,\\s*(\\S+))?\\s+in\\s+(\\S.*)\\s*}/,\n /(^|[^\\\\]){=[\\S\\s]*?}/\n ]\n\n var\n cachedBrackets = UNDEF,\n _regex,\n _cache = [],\n _settings\n\n function _loopback (re) { return re }\n\n function _rewrite (re, bp) {\n if (!bp) bp = _cache\n return new RegExp(\n re.source.replace(/{/g, bp[2]).replace(/}/g, bp[3]), re.global ? REGLOB : ''\n )\n }\n\n function _create (pair) {\n if (pair === DEFAULT) return _pairs\n\n var arr = pair.split(' ')\n\n if (arr.length !== 2 || UNSUPPORTED.test(pair)) {\n throw new Error('Unsupported brackets \"' + pair + '\"')\n }\n arr = arr.concat(pair.replace(NEED_ESCAPE, '\\\\').split(' '))\n\n arr[4] = _rewrite(arr[1].length > 1 ? /{[\\S\\s]*?}/ : _pairs[4], arr)\n arr[5] = _rewrite(pair.length > 3 ? /\\\\({|})/g : _pairs[5], arr)\n arr[6] = _rewrite(_pairs[6], arr)\n arr[7] = RegExp('\\\\\\\\(' + arr[3] + ')|([[({])|(' + arr[3] + ')|' + S_QBLOCK2, REGLOB)\n arr[8] = pair\n return arr\n }\n\n function _brackets (reOrIdx) {\n return reOrIdx instanceof RegExp ? _regex(reOrIdx) : _cache[reOrIdx]\n }\n\n _brackets.split = function split (str, tmpl, _bp) {\n // istanbul ignore next: _bp is for the compiler\n if (!_bp) _bp = _cache\n\n var\n parts = [],\n match,\n isexpr,\n start,\n pos,\n re = _bp[6]\n\n var qblocks = []\n var prevStr = ''\n var mark, lastIndex\n\n isexpr = start = re.lastIndex = 0\n\n while ((match = re.exec(str))) {\n\n lastIndex = re.lastIndex\n pos = match.index\n\n if (isexpr) {\n\n if (match[2]) {\n\n var ch = match[2]\n var rech = FINDBRACES[ch]\n var ix = 1\n\n rech.lastIndex = lastIndex\n while ((match = rech.exec(str))) {\n if (match[1]) {\n if (match[1] === ch) ++ix\n else if (!--ix) break\n } else {\n rech.lastIndex = pushQBlock(match.index, rech.lastIndex, match[2])\n }\n }\n re.lastIndex = ix ? str.length : rech.lastIndex\n continue\n }\n\n if (!match[3]) {\n re.lastIndex = pushQBlock(pos, lastIndex, match[4])\n continue\n }\n }\n\n if (!match[1]) {\n unescapeStr(str.slice(start, pos))\n start = re.lastIndex\n re = _bp[6 + (isexpr ^= 1)]\n re.lastIndex = start\n }\n }\n\n if (str && start < str.length) {\n unescapeStr(str.slice(start))\n }\n\n parts.qblocks = qblocks\n\n return parts\n\n function unescapeStr (s) {\n if (prevStr) {\n s = prevStr + s\n prevStr = ''\n }\n if (tmpl || isexpr) {\n parts.push(s && s.replace(_bp[5], '$1'))\n } else {\n parts.push(s)\n }\n }\n\n function pushQBlock(_pos, _lastIndex, slash) { //eslint-disable-line\n if (slash) {\n _lastIndex = skipRegex(str, _pos)\n }\n\n if (tmpl && _lastIndex > _pos + 2) {\n mark = '\\u2057' + qblocks.length + '~'\n qblocks.push(str.slice(_pos, _lastIndex))\n prevStr += str.slice(start, _pos) + mark\n start = _lastIndex\n }\n return _lastIndex\n }\n }\n\n _brackets.hasExpr = function hasExpr (str) {\n return _cache[4].test(str)\n }\n\n _brackets.loopKeys = function loopKeys (expr) {\n var m = expr.match(_cache[9])\n\n return m\n ? { key: m[1], pos: m[2], val: _cache[0] + m[3].trim() + _cache[1] }\n : { val: expr.trim() }\n }\n\n _brackets.array = function array (pair) {\n return pair ? _create(pair) : _cache\n }\n\n function _reset (pair) {\n if ((pair || (pair = DEFAULT)) !== _cache[8]) {\n _cache = _create(pair)\n _regex = pair === DEFAULT ? _loopback : _rewrite\n _cache[9] = _regex(_pairs[9])\n }\n cachedBrackets = pair\n }\n\n function _setSettings (o) {\n var b\n\n o = o || {}\n b = o.brackets\n Object.defineProperty(o, 'brackets', {\n set: _reset,\n get: function () { return cachedBrackets },\n enumerable: true\n })\n _settings = o\n _reset(b)\n }\n\n Object.defineProperty(_brackets, 'settings', {\n set: _setSettings,\n get: function () { return _settings }\n })\n\n /* istanbul ignore next: in the browser riot is always in the scope */\n _brackets.settings = typeof riot !== 'undefined' && riot.settings || {}\n _brackets.set = _reset\n _brackets.skipRegex = skipRegex\n\n _brackets.R_STRINGS = R_STRINGS\n _brackets.R_MLCOMMS = R_MLCOMMS\n _brackets.S_QBLOCKS = S_QBLOCKS\n _brackets.S_QBLOCK2 = S_QBLOCK2\n\n return _brackets\n\n})()\n\n/**\n * @module tmpl\n *\n * tmpl - Root function, returns the template value, render with data\n * tmpl.hasExpr - Test the existence of a expression inside a string\n * tmpl.loopKeys - Get the keys for an 'each' loop (used by `_each`)\n */\n\nexport\nvar tmpl = (function () {\n\n var _cache = {}\n\n function _tmpl (str, data) {\n if (!str) return str\n\n return (_cache[str] || (_cache[str] = _create(str))).call(\n data, _logErr.bind({\n data: data,\n tmpl: str\n })\n )\n }\n\n _tmpl.hasExpr = brackets.hasExpr\n\n _tmpl.loopKeys = brackets.loopKeys\n\n // istanbul ignore next\n _tmpl.clearCache = function () { _cache = {} }\n\n _tmpl.errorHandler = null\n\n function _logErr (err, ctx) {\n\n err.riotData = {\n tagName: ctx && ctx.__ && ctx.__.tagName,\n _riot_id: ctx && ctx._riot_id //eslint-disable-line camelcase\n }\n\n if (_tmpl.errorHandler) _tmpl.errorHandler(err)\n else if (\n typeof console !== 'undefined' &&\n typeof console.error === 'function'\n ) {\n console.error(err.message)\n console.log('<%s> %s', err.riotData.tagName || 'Unknown tag', this.tmpl) // eslint-disable-line\n console.log(this.data) // eslint-disable-line\n }\n }\n\n function _create (str) {\n var expr = _getTmpl(str)\n\n if (expr.slice(0, 11) !== 'try{return ') expr = 'return ' + expr\n\n return new Function('E', expr + ';') // eslint-disable-line no-new-func\n }\n\n var RE_DQUOTE = /\\u2057/g\n var RE_QBMARK = /\\u2057(\\d+)~/g\n\n function _getTmpl (str) {\n var parts = brackets.split(str.replace(RE_DQUOTE, '\"'), 1)\n var qstr = parts.qblocks\n var expr\n\n if (parts.length > 2 || parts[0]) {\n var i, j, list = []\n\n for (i = j = 0; i < parts.length; ++i) {\n\n expr = parts[i]\n\n if (expr && (expr = i & 1\n\n ? _parseExpr(expr, 1, qstr)\n\n : '\"' + expr\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\\r\\n?|\\n/g, '\\\\n')\n .replace(/\"/g, '\\\\\"') +\n '\"'\n\n )) list[j++] = expr\n\n }\n\n expr = j < 2 ? list[0]\n : '[' + list.join(',') + '].join(\"\")'\n\n } else {\n\n expr = _parseExpr(parts[1], 0, qstr)\n }\n\n if (qstr.length) {\n expr = expr.replace(RE_QBMARK, function (_, pos) {\n return qstr[pos]\n .replace(/\\r/g, '\\\\r')\n .replace(/\\n/g, '\\\\n')\n })\n }\n return expr\n }\n\n var RE_CSNAME = /^(?:(-?[_A-Za-z\\xA0-\\xFF][-\\w\\xA0-\\xFF]*)|\\u2057(\\d+)~):/\n var\n RE_BREND = {\n '(': /[()]/g,\n '[': /[[\\]]/g,\n '{': /[{}]/g\n }\n\n function _parseExpr (expr, asText, qstr) {\n\n expr = expr\n .replace(/\\s+/g, ' ').trim()\n .replace(/\\ ?([[\\({},?\\.:])\\ ?/g, '$1')\n\n if (expr) {\n var\n list = [],\n cnt = 0,\n match\n\n while (expr &&\n (match = expr.match(RE_CSNAME)) &&\n !match.index\n ) {\n var\n key,\n jsb,\n re = /,|([[{(])|$/g\n\n expr = RegExp.rightContext\n key = match[2] ? qstr[match[2]].slice(1, -1).trim().replace(/\\s+/g, ' ') : match[1]\n\n while (jsb = (match = re.exec(expr))[1]) skipBraces(jsb, re)\n\n jsb = expr.slice(0, match.index)\n expr = RegExp.rightContext\n\n list[cnt++] = _wrapExpr(jsb, 1, key)\n }\n\n expr = !cnt ? _wrapExpr(expr, asText)\n : cnt > 1 ? '[' + list.join(',') + '].join(\" \").trim()' : list[0]\n }\n return expr\n\n function skipBraces (ch, re) {\n var\n mm,\n lv = 1,\n ir = RE_BREND[ch]\n\n ir.lastIndex = re.lastIndex\n while (mm = ir.exec(expr)) {\n if (mm[0] === ch) ++lv\n else if (!--lv) break\n }\n re.lastIndex = lv ? expr.length : ir.lastIndex\n }\n }\n\n // istanbul ignore next: not both\n var // eslint-disable-next-line max-len\n JS_CONTEXT = '\"in this?this:' + (typeof window !== 'object' ? 'global' : 'window') + ').',\n JS_VARNAME = /[,{][\\$\\w]+(?=:)|(^ *|[^$\\w\\.{])(?!(?:typeof|true|false|null|undefined|in|instanceof|is(?:Finite|NaN)|void|NaN|new|Date|RegExp|Math)(?![$\\w]))([$_A-Za-z][$\\w]*)/g,\n JS_NOPROPS = /^(?=(\\.[$\\w]+))\\1(?:[^.[(]|$)/\n\n function _wrapExpr (expr, asText, key) {\n var tb\n\n expr = expr.replace(JS_VARNAME, function (match, p, mvar, pos, s) {\n if (mvar) {\n pos = tb ? 0 : pos + match.length\n\n if (mvar !== 'this' && mvar !== 'global' && mvar !== 'window') {\n match = p + '(\"' + mvar + JS_CONTEXT + mvar\n if (pos) tb = (s = s[pos]) === '.' || s === '(' || s === '['\n } else if (pos) {\n tb = !JS_NOPROPS.test(s.slice(pos))\n }\n }\n return match\n })\n\n if (tb) {\n expr = 'try{return ' + expr + '}catch(e){E(e,this)}'\n }\n\n if (key) {\n\n expr = (tb\n ? 'function(){' + expr + '}.call(this)' : '(' + expr + ')'\n ) + '?\"' + key + '\":\"\"'\n\n } else if (asText) {\n\n expr = 'function(v){' + (tb\n ? expr.replace('return ', 'v=') : 'v=(' + expr + ')'\n ) + ';return v||v===0?v:\"\"}.call(this)'\n }\n\n return expr\n }\n\n _tmpl.version = brackets.version = 'v3.0.8'\n\n return _tmpl\n\n})()\n\n","var observable = function(el) {\n\n /**\n * Extend the original object or create a new empty one\n * @type { Object }\n */\n\n el = el || {}\n\n /**\n * Private variables\n */\n var callbacks = {},\n slice = Array.prototype.slice\n\n /**\n * Public Api\n */\n\n // extend the el object adding the observable methods\n Object.defineProperties(el, {\n /**\n * Listen to the given `event` ands\n * execute the `callback` each time an event is triggered.\n * @param { String } event - event id\n * @param { Function } fn - callback function\n * @returns { Object } el\n */\n on: {\n value: function(event, fn) {\n if (typeof fn == 'function')\n (callbacks[event] = callbacks[event] || []).push(fn)\n return el\n },\n enumerable: false,\n writable: false,\n configurable: false\n },\n\n /**\n * Removes the given `event` listeners\n * @param { String } event - event id\n * @param { Function } fn - callback function\n * @returns { Object } el\n */\n off: {\n value: function(event, fn) {\n if (event == '*' && !fn) callbacks = {}\n else {\n if (fn) {\n var arr = callbacks[event]\n for (var i = 0, cb; cb = arr && arr[i]; ++i) {\n if (cb == fn) arr.splice(i--, 1)\n }\n } else delete callbacks[event]\n }\n return el\n },\n enumerable: false,\n writable: false,\n configurable: false\n },\n\n /**\n * Listen to the given `event` and\n * execute the `callback` at most once\n * @param { String } event - event id\n * @param { Function } fn - callback function\n * @returns { Object } el\n */\n one: {\n value: function(event, fn) {\n function on() {\n el.off(event, on)\n fn.apply(el, arguments)\n }\n return el.on(event, on)\n },\n enumerable: false,\n writable: false,\n configurable: false\n },\n\n /**\n * Execute all callback functions that listen to\n * the given `event`\n * @param { String } event - event id\n * @returns { Object } el\n */\n trigger: {\n value: function(event) {\n\n // getting the arguments\n var arglen = arguments.length - 1,\n args = new Array(arglen),\n fns,\n fn,\n i\n\n for (i = 0; i < arglen; i++) {\n args[i] = arguments[i + 1] // skip first argument\n }\n\n fns = slice.call(callbacks[event] || [], 0)\n\n for (i = 0; fn = fns[i]; ++i) {\n fn.apply(el, args)\n }\n\n if (callbacks['*'] && event != '*')\n el.trigger.apply(el, ['*', event].concat(args))\n\n return el\n },\n enumerable: false,\n writable: false,\n configurable: false\n }\n })\n\n return el\n\n}\nexport default observable\n","import {\n T_STRING,\n T_OBJECT,\n T_FUNCTION,\n T_UNDEF,\n RE_BOOL_ATTRS\n} from './../global-variables'\n\nimport { getPropDescriptor } from './misc'\n\n/**\n * Check if the passed argument is a boolean attribute\n * @param { String } value -\n * @returns { Boolean } -\n */\nexport function isBoolAttr(value) {\n return RE_BOOL_ATTRS.test(value)\n}\n\n/**\n * Check if passed argument is a function\n * @param { * } value -\n * @returns { Boolean } -\n */\nexport function isFunction(value) {\n return typeof value === T_FUNCTION\n}\n\n/**\n * Check if passed argument is an object, exclude null\n * NOTE: use isObject(x) && !isArray(x) to excludes arrays.\n * @param { * } value -\n * @returns { Boolean } -\n */\nexport function isObject(value) {\n return value && typeof value === T_OBJECT // typeof null is 'object'\n}\n\n/**\n * Check if passed argument is undefined\n * @param { * } value -\n * @returns { Boolean } -\n */\nexport function isUndefined(value) {\n return typeof value === T_UNDEF\n}\n\n/**\n * Check if passed argument is a string\n * @param { * } value -\n * @returns { Boolean } -\n */\nexport function isString(value) {\n return typeof value === T_STRING\n}\n\n/**\n * Check if passed argument is empty. Different from falsy, because we dont consider 0 or false to be blank\n * @param { * } value -\n * @returns { Boolean } -\n */\nexport function isBlank(value) {\n return isNil(value) || value === ''\n}\n\n/**\n * Check against the null and undefined values\n * @param { * } value -\n * @returns {Boolean} -\n */\nexport function isNil(value) {\n return isUndefined(value) || value === null\n}\n\n/**\n * Check if passed argument is a kind of array\n * @param { * } value -\n * @returns { Boolean } -\n */\nexport function isArray(value) {\n return Array.isArray(value) || value instanceof Array\n}\n\n/**\n * Check whether object's property could be overridden\n * @param { Object } obj - source object\n * @param { String } key - object property\n * @returns { Boolean } true if writable\n */\nexport function isWritable(obj, key) {\n const descriptor = getPropDescriptor(obj, key)\n return isUndefined(obj[key]) || descriptor && descriptor.writable\n}\n","import { isWritable } from './check'\n\n/**\n * Specialized function for looping an array-like collection with `each={}`\n * @param { Array } list - collection of items\n * @param {Function} fn - callback function\n * @returns { Array } the array looped\n */\nexport function each(list, fn) {\n const len = list ? list.length : 0\n let i = 0\n for (; i < len; i++) fn(list[i], i)\n return list\n}\n\n/**\n * Check whether an array contains an item\n * @param { Array } array - target array\n * @param { * } item - item to test\n * @returns { Boolean } -\n */\nexport function contains(array, item) {\n return array.indexOf(item) !== -1\n}\n\n/**\n * Convert a string containing dashes to camel case\n * @param { String } str - input string\n * @returns { String } my-string -> myString\n */\nexport function toCamel(str) {\n return str.replace(/-(\\w)/g, (_, c) => c.toUpperCase())\n}\n\n/**\n * Faster String startsWith alternative\n * @param { String } str - source string\n * @param { String } value - test string\n * @returns { Boolean } -\n */\nexport function startsWith(str, value) {\n return str.slice(0, value.length) === value\n}\n\n/**\n * Helper function to set an immutable property\n * @param { Object } el - object where the new property will be set\n * @param { String } key - object key where the new property will be stored\n * @param { * } value - value of the new property\n * @param { Object } options - set the propery overriding the default options\n * @returns { Object } - the initial object\n */\nexport function defineProperty(el, key, value, options) {\n Object.defineProperty(el, key, extend({\n value,\n enumerable: false,\n writable: false,\n configurable: true\n }, options))\n return el\n}\n\n/**\n * Function returning always a unique identifier\n * @returns { Number } - number from 0...n\n */\nexport const uid = (function() {\n let i = -1\n return () => ++i\n})()\n\n/**\n * Short alias for Object.getOwnPropertyDescriptor\n */\nexport const getPropDescriptor = (o, k) => Object.getOwnPropertyDescriptor(o, k)\n\n/**\n * Extend any object with other properties\n * @param { Object } src - source object\n * @returns { Object } the resulting extended object\n *\n * var obj = { foo: 'baz' }\n * extend(obj, {bar: 'bar', foo: 'bar'})\n * console.log(obj) => {bar: 'bar', foo: 'bar'}\n *\n */\nexport function extend(src) {\n let obj\n let i = 1\n const args = arguments\n const l = args.length\n\n for (; i < l; i++) {\n if (obj = args[i]) {\n for (const key in obj) {\n // check if this property of the source object could be overridden\n if (isWritable(src, key))\n src[key] = obj[key]\n }\n }\n }\n return src\n}","import { extend }from './browser/common/util/misc'\nimport { brackets } from 'riot-tmpl'\n\nexport default extend(Object.create(brackets.settings), {\n skipAnonymousTags: true,\n // handle the auto updates on any DOM event\n autoUpdate: true\n})","import { isWritable } from './../common/util/check'\nimport { contains } from './../common/util/misc'\nimport { RE_EVENTS_PREFIX, RIOT_EVENTS_KEY } from '../common/global-variables'\nimport { getImmediateCustomParentTag } from './../common/util/tags'\nimport settings from '../../settings'\n\n/**\n * Trigger DOM events\n * @param { HTMLElement } dom - dom element target of the event\n * @param { Function } handler - user function\n * @param { Object } e - event object\n */\nfunction handleEvent(dom, handler, e) {\n let ptag = this.__.parent\n let item = this.__.item\n\n if (!item)\n while (ptag && !item) {\n item = ptag.__.item\n ptag = ptag.__.parent\n }\n\n // override the event properties\n /* istanbul ignore next */\n if (isWritable(e, 'currentTarget')) e.currentTarget = dom\n /* istanbul ignore next */\n if (isWritable(e, 'target')) e.target = e.srcElement\n /* istanbul ignore next */\n if (isWritable(e, 'which')) e.which = e.charCode || e.keyCode\n\n e.item = item\n\n handler.call(this, e)\n\n // avoid auto updates\n if (!settings.autoUpdate) return\n\n if (!e.preventUpdate) {\n const p = getImmediateCustomParentTag(this)\n // fixes #2083\n if (p.isMounted) p.update()\n }\n}\n\n/**\n * Attach an event to a DOM node\n * @param { String } name - event name\n * @param { Function } handler - event callback\n * @param { Object } dom - dom node\n * @param { Tag } tag - tag instance\n */\nexport default function setEventHandler(name, handler, dom, tag) {\n let eventName\n const cb = handleEvent.bind(tag, dom, handler)\n\n // avoid to bind twice the same event\n // possible fix for #2332\n dom[name] = null\n\n // normalize event name\n eventName = name.replace(RE_EVENTS_PREFIX, '')\n\n // cache the listener into the listeners array\n if (!contains(tag.__.listeners, dom)) tag.__.listeners.push(dom)\n if (!dom[RIOT_EVENTS_KEY]) dom[RIOT_EVENTS_KEY] = {}\n if (dom[RIOT_EVENTS_KEY][name]) dom.removeEventListener(eventName, dom[RIOT_EVENTS_KEY][name])\n\n dom[RIOT_EVENTS_KEY][name] = cb\n dom.addEventListener(eventName, cb, false)\n}\n","import { tmpl } from 'riot-tmpl'\nimport { each, contains } from './../common/util/misc'\nimport { isFunction, isBlank, isObject, isString } from './../common/util/check'\nimport {\n remAttr,\n getAttr,\n setAttr,\n createDOMPlaceholder,\n toggleVisibility,\n styleObjectToString\n} from './../common/util/dom'\nimport setEventHandler from './setEventHandler'\nimport {\n initChildTag,\n arrayishRemove,\n inheritParentProps,\n makeReplaceVirtual\n} from './../common/util/tags'\n\nimport {\n __TAG_IMPL,\n ATTRS_PREFIX,\n SHOW_DIRECTIVE,\n HIDE_DIRECTIVE,\n IE_VERSION,\n CASE_SENSITIVE_ATTRIBUTES\n} from './../common/global-variables'\n\n/**\n * Update dynamically created data-is tags with changing expressions\n * @param { Object } expr - expression tag and expression info\n * @param { Tag } parent - parent for tag creation\n * @param { String } tagName - tag implementation we want to use\n */\nexport function updateDataIs(expr, parent, tagName) {\n let tag = expr.tag || expr.dom._tag\n let ref\n\n const { head } = tag ? tag.__ : {}\n const isVirtual = expr.dom.tagName === 'VIRTUAL'\n\n if (tag && expr.tagName === tagName) {\n tag.update()\n return\n }\n\n // sync _parent to accommodate changing tagnames\n if (tag) {\n // need placeholder before unmount\n if(isVirtual) {\n ref = createDOMPlaceholder()\n head.parentNode.insertBefore(ref, head)\n }\n\n tag.unmount(true)\n }\n\n // unable to get the tag name\n if (!isString(tagName)) return\n\n expr.impl = __TAG_IMPL[tagName]\n\n // unknown implementation\n if (!expr.impl) return\n\n expr.tag = tag = initChildTag(\n expr.impl, {\n root: expr.dom,\n parent,\n tagName\n },\n expr.dom.innerHTML,\n parent\n )\n\n each(expr.attrs, a => setAttr(tag.root, a.name, a.value))\n expr.tagName = tagName\n tag.mount()\n\n // root exist first time, after use placeholder\n if (isVirtual) makeReplaceVirtual(tag, ref || tag.root)\n\n // parent is the placeholder tag, not the dynamic tag so clean up\n parent.__.onUnmount = () => {\n const delName = tag.opts.dataIs\n arrayishRemove(tag.parent.tags, delName, tag)\n arrayishRemove(tag.__.parent.tags, delName, tag)\n tag.unmount()\n }\n}\n\n/**\n * Nomalize any attribute removing the \"riot-\" prefix\n * @param { String } attrName - original attribute name\n * @returns { String } valid html attribute name\n */\nexport function normalizeAttrName(attrName) {\n if (!attrName) return null\n attrName = attrName.replace(ATTRS_PREFIX, '')\n if (CASE_SENSITIVE_ATTRIBUTES[attrName]) attrName = CASE_SENSITIVE_ATTRIBUTES[attrName]\n return attrName\n}\n\n/**\n * Update on single tag expression\n * @this Tag\n * @param { Object } expr - expression logic\n * @returns { undefined }\n */\nexport function updateExpression(expr) {\n if (this.root && getAttr(this.root,'virtualized')) return\n\n const dom = expr.dom\n // remove the riot- prefix\n const attrName = normalizeAttrName(expr.attr)\n const isToggle = contains([SHOW_DIRECTIVE, HIDE_DIRECTIVE], attrName)\n const isVirtual = expr.root && expr.root.tagName === 'VIRTUAL'\n const { isAnonymous } = this.__\n const parent = dom && (expr.parent || dom.parentNode)\n // detect the style attributes\n const isStyleAttr = attrName === 'style'\n const isClassAttr = attrName === 'class'\n\n let value\n\n // if it's a tag we could totally skip the rest\n if (expr._riot_id) {\n if (expr.__.wasCreated) {\n expr.update()\n // if it hasn't been mounted yet, do that now.\n } else {\n expr.mount()\n if (isVirtual) {\n makeReplaceVirtual(expr, expr.root)\n }\n }\n return\n }\n\n // if this expression has the update method it means it can handle the DOM changes by itself\n if (expr.update) return expr.update()\n\n const context = isToggle && !isAnonymous ? inheritParentProps.call(this) : this\n\n // ...it seems to be a simple expression so we try to calculate its value\n value = tmpl(expr.expr, context)\n\n const hasValue = !isBlank(value)\n const isObj = isObject(value)\n\n // convert the style/class objects to strings\n if (isObj) {\n if (isClassAttr) {\n value = tmpl(JSON.stringify(value), this)\n } else if (isStyleAttr) {\n value = styleObjectToString(value)\n }\n }\n\n // remove original attribute\n if (expr.attr && (!expr.wasParsedOnce || !hasValue || value === false)) {\n // remove either riot-* attributes or just the attribute name\n remAttr(dom, getAttr(dom, expr.attr) ? expr.attr : attrName)\n }\n\n // for the boolean attributes we don't need the value\n // we can convert it to checked=true to checked=checked\n if (expr.bool) value = value ? attrName : false\n if (expr.isRtag) return updateDataIs(expr, this, value)\n if (expr.wasParsedOnce && expr.value === value) return\n\n // update the expression value\n expr.value = value\n expr.wasParsedOnce = true\n\n // if the value is an object (and it's not a style or class attribute) we can not do much more with it\n if (isObj && !isClassAttr && !isStyleAttr && !isToggle) return\n // avoid to render undefined/null values\n if (!hasValue) value = ''\n\n // textarea and text nodes have no attribute name\n if (!attrName) {\n // about #815 w/o replace: the browser converts the value to a string,\n // the comparison by \"==\" does too, but not in the server\n value += ''\n // test for parent avoids error with invalid assignment to nodeValue\n if (parent) {\n // cache the parent node because somehow it will become null on IE\n // on the next iteration\n expr.parent = parent\n if (parent.tagName === 'TEXTAREA') {\n parent.value = value // #1113\n if (!IE_VERSION) dom.nodeValue = value // #1625 IE throws here, nodeValue\n } // will be available on 'updated'\n else dom.nodeValue = value\n }\n return\n }\n\n\n // event handler\n if (isFunction(value)) {\n setEventHandler(attrName, value, dom, this)\n // show / hide\n } else if (isToggle) {\n toggleVisibility(dom, attrName === HIDE_DIRECTIVE ? !value : value)\n // handle attributes\n } else {\n if (expr.bool) {\n dom[attrName] = value\n }\n\n if (attrName === 'value' && dom.value !== value) {\n dom.value = value\n } else if (hasValue && value !== false) {\n setAttr(dom, attrName, value)\n }\n\n // make sure that in case of style changes\n // the element stays hidden\n if (isStyleAttr && dom.hidden) toggleVisibility(dom, false)\n }\n}\n\n/**\n * Update all the expressions in a Tag instance\n * @this Tag\n * @param { Array } expressions - expression that must be re evaluated\n */\nexport default function updateAllExpressions(expressions) {\n each(expressions, updateExpression.bind(this))\n}\n","import { remAttr, createDOMPlaceholder } from './../common/util/dom'\nimport { tmpl } from 'riot-tmpl'\nimport { unmountAll } from './../common/util/tags'\nimport { CONDITIONAL_DIRECTIVE } from './../common/global-variables'\nimport { parseExpressions } from './parse'\nimport updateAllExpressions from './update'\n\nexport default {\n init(dom, tag, expr) {\n remAttr(dom, CONDITIONAL_DIRECTIVE)\n this.tag = tag\n this.expr = expr\n this.stub = createDOMPlaceholder()\n this.pristine = dom\n\n const p = dom.parentNode\n p.insertBefore(this.stub, dom)\n p.removeChild(dom)\n\n return this\n },\n update() {\n this.value = tmpl(this.expr, this.tag)\n\n if (this.value && !this.current) { // insert\n this.current = this.pristine.cloneNode(true)\n this.stub.parentNode.insertBefore(this.current, this.stub)\n this.expressions = parseExpressions.apply(this.tag, [this.current, true])\n } else if (!this.value && this.current) { // remove\n unmountAll(this.expressions)\n if (this.current._tag) {\n this.current._tag.unmount()\n } else if (this.current.parentNode) {\n this.current.parentNode.removeChild(this.current)\n }\n this.current = null\n this.expressions = []\n }\n\n if (this.value) updateAllExpressions.call(this.tag, this.expressions)\n },\n unmount() {\n unmountAll(this.expressions || [])\n }\n}","import { tmpl } from 'riot-tmpl'\nimport { isBlank, isString } from './../common/util/check'\nimport { remAttr, setAttr } from './../common/util/dom'\n\nimport {\n getImmediateCustomParentTag,\n arrayishAdd,\n arrayishRemove\n} from './../common/util/tags'\n\nexport default {\n init(dom, parent, attrName, attrValue) {\n this.dom = dom\n this.attr = attrName\n this.rawValue = attrValue\n this.parent = parent\n this.hasExp = tmpl.hasExpr(attrValue)\n return this\n },\n update() {\n const old = this.value\n const customParent = this.parent && getImmediateCustomParentTag(this.parent)\n // if the referenced element is a custom tag, then we set the tag itself, rather than DOM\n const tagOrDom = this.dom.__ref || this.tag || this.dom\n\n this.value = this.hasExp ? tmpl(this.rawValue, this.parent) : this.rawValue\n\n // the name changed, so we need to remove it from the old key (if present)\n if (!isBlank(old) && customParent) arrayishRemove(customParent.refs, old, tagOrDom)\n if (!isBlank(this.value) && isString(this.value)) {\n // add it to the refs of parent tag (this behavior was changed >=3.0)\n if (customParent) arrayishAdd(\n customParent.refs,\n this.value,\n tagOrDom,\n // use an array if it's a looped node and the ref is not an expression\n null,\n this.parent.__.index\n )\n\n if (this.value !== old) {\n setAttr(this.dom, this.attr, this.value)\n }\n } else {\n remAttr(this.dom, this.attr)\n }\n\n // cache the ref bound to this dom node\n // to reuse it in future (see also #2329)\n if (!this.dom.__ref) this.dom.__ref = tagOrDom\n },\n unmount() {\n const tagOrDom = this.tag || this.dom\n const customParent = this.parent && getImmediateCustomParentTag(this.parent)\n if (!isBlank(this.value) && customParent)\n arrayishRemove(customParent.refs, this.value, tagOrDom)\n }\n}","import { isArray, isString } from './../common/util/check'\nimport { remAttr, getAttr, createDOMPlaceholder, safeInsert, createFrag } from './../common/util/dom'\nimport { each, contains, extend } from './../common/util/misc'\nimport { tmpl } from 'riot-tmpl'\nimport createTag from './tag'\n\nimport {\n T_STRING,\n T_OBJECT,\n __TAG_IMPL,\n CONDITIONAL_DIRECTIVE,\n LOOP_DIRECTIVE,\n LOOP_NO_REORDER_DIRECTIVE,\n KEY_DIRECTIVE\n} from './../common/global-variables'\n\nimport {\n moveChildTag,\n getTag,\n getTagName,\n arrayishAdd,\n arrayishRemove,\n makeVirtual,\n moveVirtual\n} from './../common/util/tags'\n\n/**\n * Convert the item looped into an object used to extend the child tag properties\n * @param { Object } expr - object containing the keys used to extend the children tags\n * @param { * } key - value to assign to the new object returned\n * @param { * } val - value containing the position of the item in the array\n * @param { Object } base - prototype object for the new item\n * @returns { Object } - new object containing the values of the original item\n *\n * The variables 'key' and 'val' are arbitrary.\n * They depend on the collection type looped (Array, Object)\n * and on the expression used on the each tag\n *\n */\nfunction mkitem(expr, key, val, base) {\n const item = base ? Object.create(base) : {}\n item[expr.key] = key\n if (expr.pos) item[expr.pos] = val\n return item\n}\n\n/**\n * Unmount the redundant tags\n * @param { Array } items - array containing the current items to loop\n * @param { Array } tags - array containing all the children tags\n */\nfunction unmountRedundant(items, tags) {\n let i = tags.length\n const j = items.length\n\n while (i > j) {\n i--\n remove.apply(tags[i], [tags, i])\n }\n}\n\n\n/**\n * Remove a child tag\n * @this Tag\n * @param { Array } tags - tags collection\n * @param { Number } i - index of the tag to remove\n */\nfunction remove(tags, i) {\n tags.splice(i, 1)\n this.unmount()\n arrayishRemove(this.parent, this, this.__.tagName, true)\n}\n\n/**\n * Move the nested custom tags in non custom loop tags\n * @this Tag\n * @param { Number } i - current position of the loop tag\n */\nfunction moveNestedTags(i) {\n each(Object.keys(this.tags), (tagName) => {\n moveChildTag.apply(this.tags[tagName], [tagName, i])\n })\n}\n\n/**\n * Move a child tag\n * @this Tag\n * @param { HTMLElement } root - dom node containing all the loop children\n * @param { Tag } nextTag - instance of the next tag preceding the one we want to move\n * @param { Boolean } isVirtual - is it a virtual tag?\n */\nfunction move(root, nextTag, isVirtual) {\n if (isVirtual)\n moveVirtual.apply(this, [root, nextTag])\n else\n safeInsert(root, this.root, nextTag.root)\n}\n\n/**\n * Insert and mount a child tag\n * @this Tag\n * @param { HTMLElement } root - dom node containing all the loop children\n * @param { Tag } nextTag - instance of the next tag preceding the one we want to insert\n * @param { Boolean } isVirtual - is it a virtual tag?\n */\nfunction insert(root, nextTag, isVirtual) {\n if (isVirtual)\n makeVirtual.apply(this, [root, nextTag])\n else\n safeInsert(root, this.root, nextTag.root)\n}\n\n/**\n * Append a new tag into the DOM\n * @this Tag\n * @param { HTMLElement } root - dom node containing all the loop children\n * @param { Boolean } isVirtual - is it a virtual tag?\n */\nfunction append(root, isVirtual) {\n if (isVirtual)\n makeVirtual.call(this, root)\n else\n root.appendChild(this.root)\n}\n\n/**\n * Return the value we want to use to lookup the postion of our items in the collection\n * @param { String } keyAttr - lookup string or expression\n * @param { * } originalItem - original item from the collection\n * @param { Object } keyedItem - object created by riot via { item, i in collection }\n * @param { Boolean } hasKeyAttrExpr - flag to check whether the key is an expression\n * @returns { * } value that we will use to figure out the item position via collection.indexOf\n */\nfunction getItemId(keyAttr, originalItem, keyedItem, hasKeyAttrExpr) {\n if (keyAttr) {\n return hasKeyAttrExpr ? tmpl(keyAttr, keyedItem) : originalItem[keyAttr]\n }\n\n return originalItem\n}\n\n/**\n * Manage tags having the 'each'\n * @param { HTMLElement } dom - DOM node we need to loop\n * @param { Tag } parent - parent tag instance where the dom node is contained\n * @param { String } expr - string contained in the 'each' attribute\n * @returns { Object } expression object for this each loop\n */\nexport default function _each(dom, parent, expr) {\n const mustReorder = typeof getAttr(dom, LOOP_NO_REORDER_DIRECTIVE) !== T_STRING || remAttr(dom, LOOP_NO_REORDER_DIRECTIVE)\n const keyAttr = getAttr(dom, KEY_DIRECTIVE)\n const hasKeyAttrExpr = keyAttr ? tmpl.hasExpr(keyAttr) : false\n const tagName = getTagName(dom)\n const impl = __TAG_IMPL[tagName]\n const parentNode = dom.parentNode\n const placeholder = createDOMPlaceholder()\n const child = getTag(dom)\n const ifExpr = getAttr(dom, CONDITIONAL_DIRECTIVE)\n const tags = []\n const isLoop = true\n const innerHTML = dom.innerHTML\n const isAnonymous = !__TAG_IMPL[tagName]\n const isVirtual = dom.tagName === 'VIRTUAL'\n let oldItems = []\n let hasKeys\n\n // remove the each property from the original tag\n remAttr(dom, LOOP_DIRECTIVE)\n remAttr(dom, KEY_DIRECTIVE)\n\n // parse the each expression\n expr = tmpl.loopKeys(expr)\n expr.isLoop = true\n\n if (ifExpr) remAttr(dom, CONDITIONAL_DIRECTIVE)\n\n // insert a marked where the loop tags will be injected\n parentNode.insertBefore(placeholder, dom)\n parentNode.removeChild(dom)\n\n expr.update = function updateEach() {\n // get the new items collection\n expr.value = tmpl(expr.val, parent)\n\n let items = expr.value\n const frag = createFrag()\n const isObject = !isArray(items) && !isString(items)\n const root = placeholder.parentNode\n const tmpItems = []\n\n // if this DOM was removed the update here is useless\n // this condition fixes also a weird async issue on IE in our unit test\n if (!root) return\n\n // object loop. any changes cause full redraw\n if (isObject) {\n hasKeys = items || false\n items = hasKeys ?\n Object.keys(items).map(key => mkitem(expr, items[key], key)) : []\n } else {\n hasKeys = false\n }\n\n if (ifExpr) {\n items = items.filter((item, i) => {\n if (expr.key && !isObject)\n return !!tmpl(ifExpr, mkitem(expr, item, i, parent))\n\n return !!tmpl(ifExpr, extend(Object.create(parent), item))\n })\n }\n\n // loop all the new items\n each(items, (_item, i) => {\n const item = !hasKeys && expr.key ? mkitem(expr, _item, i) : _item\n const itemId = getItemId(keyAttr, _item, item, hasKeyAttrExpr)\n // reorder only if the items are objects\n const doReorder = mustReorder && typeof _item === T_OBJECT && !hasKeys\n const oldPos = oldItems.indexOf(itemId)\n const isNew = oldPos === -1\n const pos = !isNew && doReorder ? oldPos : i\n // does a tag exist in this position?\n let tag = tags[pos]\n const mustAppend = i >= oldItems.length\n const mustCreate = doReorder && isNew || !doReorder && !tag\n\n // new tag\n if (mustCreate) {\n tag = createTag(impl, {\n parent,\n isLoop,\n isAnonymous,\n tagName,\n root: dom.cloneNode(isAnonymous),\n item,\n index: i,\n }, innerHTML)\n\n // mount the tag\n tag.mount()\n\n if (mustAppend)\n append.apply(tag, [frag || root, isVirtual])\n else\n insert.apply(tag, [root, tags[i], isVirtual])\n\n if (!mustAppend) oldItems.splice(i, 0, item)\n tags.splice(i, 0, tag)\n if (child) arrayishAdd(parent.tags, tagName, tag, true)\n } else if (pos !== i && doReorder) {\n // move\n if (keyAttr || contains(items, oldItems[pos])) {\n move.apply(tag, [root, tags[i], isVirtual])\n // move the old tag instance\n tags.splice(i, 0, tags.splice(pos, 1)[0])\n // move the old item\n oldItems.splice(i, 0, oldItems.splice(pos, 1)[0])\n }\n\n // update the position attribute if it exists\n if (expr.pos) tag[expr.pos] = i\n\n // if the loop tags are not custom\n // we need to move all their custom tags into the right position\n if (!child && tag.tags) moveNestedTags.call(tag, i)\n }\n\n // cache the original item to use it in the events bound to this node\n // and its children\n tag.__.item = item\n tag.__.index = i\n tag.__.parent = parent\n\n tmpItems[i] = itemId\n\n if (!mustCreate) tag.update(item)\n })\n\n // remove the redundant tags\n unmountRedundant(items, tags)\n\n // clone the items array\n oldItems = tmpItems.slice()\n\n root.insertBefore(frag, placeholder)\n }\n\n expr.unmount = () => {\n each(tags, t => { t.unmount() })\n }\n\n return expr\n}","import IfExpr from './if'\nimport RefExpr from './ref'\nimport _each from './each'\nimport { tmpl } from 'riot-tmpl'\nimport {\n CONDITIONAL_DIRECTIVE,\n LOOP_DIRECTIVE,\n IS_DIRECTIVE,\n REF_DIRECTIVES,\n YIELD_TAG\n} from './../common/global-variables'\nimport { isBoolAttr } from './../common/util/check'\nimport { walkNodes, getAttr, setAttr } from './../common/util/dom'\nimport { each, contains } from './../common/util/misc'\nimport { getTag, initChildTag } from './../common/util/tags'\nimport createTag from './tag'\n\n/**\n * Walk the tag DOM to detect the expressions to evaluate\n * @this Tag\n * @param { HTMLElement } root - root tag where we will start digging the expressions\n * @param { Boolean } mustIncludeRoot - flag to decide whether the root must be parsed as well\n * @returns { Array } all the expressions found\n */\nexport function parseExpressions(root, mustIncludeRoot) {\n const expressions = []\n\n walkNodes(root, (dom) => {\n const type = dom.nodeType\n let attr\n let tagImpl\n\n if (!mustIncludeRoot && dom === root) return\n\n // text node\n if (type === 3 && dom.parentNode.tagName !== 'STYLE' && tmpl.hasExpr(dom.nodeValue))\n expressions.push({dom, expr: dom.nodeValue})\n\n if (type !== 1) return\n\n const isVirtual = dom.tagName === 'VIRTUAL'\n\n // loop. each does it's own thing (for now)\n if (attr = getAttr(dom, LOOP_DIRECTIVE)) {\n if(isVirtual) setAttr(dom, 'loopVirtual', true) // ignore here, handled in _each\n expressions.push(_each(dom, this, attr))\n return false\n }\n\n // if-attrs become the new parent. Any following expressions (either on the current\n // element, or below it) become children of this expression.\n if (attr = getAttr(dom, CONDITIONAL_DIRECTIVE)) {\n expressions.push(Object.create(IfExpr).init(dom, this, attr))\n return false\n }\n\n if (attr = getAttr(dom, IS_DIRECTIVE)) {\n if (tmpl.hasExpr(attr)) {\n expressions.push({\n isRtag: true,\n expr: attr,\n dom,\n attrs: [].slice.call(dom.attributes)\n })\n\n return false\n }\n }\n\n // if this is a tag, stop traversing here.\n // we ignore the root, since parseExpressions is called while we're mounting that root\n tagImpl = getTag(dom)\n\n if(isVirtual) {\n if(getAttr(dom, 'virtualized')) {dom.parentElement.removeChild(dom) } // tag created, remove from dom\n if(!tagImpl && !getAttr(dom, 'virtualized') && !getAttr(dom, 'loopVirtual')) // ok to create virtual tag\n tagImpl = { tmpl: dom.outerHTML }\n }\n\n if (tagImpl && (dom !== root || mustIncludeRoot)) {\n if(isVirtual && !getAttr(dom, IS_DIRECTIVE)) { // handled in update\n // can not remove attribute like directives\n // so flag for removal after creation to prevent maximum stack error\n setAttr(dom, 'virtualized', true)\n const tag = createTag(\n {tmpl: dom.outerHTML},\n {root: dom, parent: this},\n dom.innerHTML\n )\n\n expressions.push(tag) // no return, anonymous tag, keep parsing\n } else {\n expressions.push(\n initChildTag(\n tagImpl,\n {\n root: dom,\n parent: this\n },\n dom.innerHTML,\n this\n )\n )\n return false\n }\n }\n\n // attribute expressions\n parseAttributes.apply(this, [dom, dom.attributes, (attr, expr) => {\n if (!expr) return\n expressions.push(expr)\n }])\n })\n\n return expressions\n}\n\n/**\n * Calls `fn` for every attribute on an element. If that attr has an expression,\n * it is also passed to fn.\n * @this Tag\n * @param { HTMLElement } dom - dom node to parse\n * @param { Array } attrs - array of attributes\n * @param { Function } fn - callback to exec on any iteration\n */\nexport function parseAttributes(dom, attrs, fn) {\n each(attrs, (attr) => {\n if (!attr) return false\n\n const name = attr.name\n const bool = isBoolAttr(name)\n let expr\n\n if (contains(REF_DIRECTIVES, name) && dom.tagName.toLowerCase() !== YIELD_TAG) {\n expr = Object.create(RefExpr).init(dom, this, name, attr.value)\n } else if (tmpl.hasExpr(attr.value)) {\n expr = {dom, expr: attr.value, attr: name, bool}\n }\n\n fn(attr, expr)\n })\n}\n","import { mkEl, setInnerHTML, $ } from './../common/util/dom'\n\nimport {\n IE_VERSION,\n RE_SPECIAL_TAGS,\n RE_SPECIAL_TAGS_NO_OPTION\n} from './../common/global-variables'\n\n/*\n Includes hacks needed for the Internet Explorer version 9 and below\n See: http://kangax.github.io/compat-table/es5/#ie8\n http://codeplanet.io/dropping-ie8/\n*/\n\nconst\n reHasYield = /<yield\\b/i,\n reYieldAll = /<yield\\s*(?:\\/>|>([\\S\\s]*?)<\\/yield\\s*>|>)/ig,\n reYieldSrc = /<yield\\s+to=['\"]([^'\">]*)['\"]\\s*>([\\S\\s]*?)<\\/yield\\s*>/ig,\n reYieldDest = /<yield\\s+from=['\"]?([-\\w]+)['\"]?\\s*(?:\\/>|>([\\S\\s]*?)<\\/yield\\s*>)/ig,\n rootEls = { tr: 'tbody', th: 'tr', td: 'tr', col: 'colgroup' },\n tblTags = IE_VERSION && IE_VERSION < 10 ? RE_SPECIAL_TAGS : RE_SPECIAL_TAGS_NO_OPTION,\n GENERIC = 'div',\n SVG = 'svg'\n\n\n/*\n Creates the root element for table or select child elements:\n tr/th/td/thead/tfoot/tbody/caption/col/colgroup/option/optgroup\n*/\nfunction specialTags(el, tmpl, tagName) {\n\n let\n select = tagName[0] === 'o',\n parent = select ? 'select>' : 'table>'\n\n // trim() is important here, this ensures we don't have artifacts,\n // so we can check if we have only one element inside the parent\n el.innerHTML = '<' + parent + tmpl.trim() + '</' + parent\n parent = el.firstChild\n\n // returns the immediate parent if tr/th/td/col is the only element, if not\n // returns the whole tree, as this can include additional elements\n /* istanbul ignore next */\n if (select) {\n parent.selectedIndex = -1 // for IE9, compatible w/current riot behavior\n } else {\n // avoids insertion of cointainer inside container (ex: tbody inside tbody)\n const tname = rootEls[tagName]\n if (tname && parent.childElementCount === 1) parent = $(tname, parent)\n }\n return parent\n}\n\n/*\n Replace the yield tag from any tag template with the innerHTML of the\n original tag in the page\n*/\nfunction replaceYield(tmpl, html) {\n // do nothing if no yield\n if (!reHasYield.test(tmpl)) return tmpl\n\n // be careful with #1343 - string on the source having `$1`\n const src = {}\n\n html = html && html.replace(reYieldSrc, function (_, ref, text) {\n src[ref] = src[ref] || text // preserve first definition\n return ''\n }).trim()\n\n return tmpl\n .replace(reYieldDest, function (_, ref, def) { // yield with from - to attrs\n return src[ref] || def || ''\n })\n .replace(reYieldAll, function (_, def) { // yield without any \"from\"\n return html || def || ''\n })\n}\n\n/**\n * Creates a DOM element to wrap the given content. Normally an `DIV`, but can be\n * also a `TABLE`, `SELECT`, `TBODY`, `TR`, or `COLGROUP` element.\n *\n * @param { String } tmpl - The template coming from the custom tag definition\n * @param { String } html - HTML content that comes from the DOM element where you\n * will mount the tag, mostly the original tag in the page\n * @param { Boolean } isSvg - true if the root node is an svg\n * @returns { HTMLElement } DOM element with _tmpl_ merged through `YIELD` with the _html_.\n */\nexport default function mkdom(tmpl, html, isSvg) {\n const match = tmpl && tmpl.match(/^\\s*<([-\\w]+)/)\n const tagName = match && match[1].toLowerCase()\n let el = mkEl(isSvg ? SVG : GENERIC)\n\n // replace all the yield tags with the tag inner html\n tmpl = replaceYield(tmpl, html)\n\n /* istanbul ignore next */\n if (tblTags.test(tagName))\n el = specialTags(el, tmpl, tagName)\n else\n setInnerHTML(el, tmpl, isSvg)\n\n return el\n}\n","import styleManager from './styleManager'\nimport { isString, isUndefined, isObject, isFunction } from './../common/util/check'\nimport { setAttr, getAttr, $$ } from './../common/util/dom'\nimport { each, extend } from './../common/util/misc'\nimport { mountTo, selectTags } from './../common/util/tags'\n\nimport {\n __TAG_IMPL,\n __TAGS_CACHE,\n GLOBAL_MIXIN,\n IS_DIRECTIVE\n} from './../common/global-variables'\n\n/**\n * Another way to create a riot tag a bit more es6 friendly\n * @param { HTMLElement } el - tag DOM selector or DOM node/s\n * @param { Object } opts - tag logic\n * @returns { Tag } new riot tag instance\n */\nexport function Tag(el, opts) {\n // get the tag properties from the class constructor\n const {name, tmpl, css, attrs, onCreate} = this\n // register a new tag and cache the class prototype\n if (!__TAG_IMPL[name]) {\n tag(name, tmpl, css, attrs, onCreate)\n // cache the class constructor\n __TAG_IMPL[name].class = this.constructor\n }\n\n // mount the tag using the class instance\n mountTo(el, name, opts, this)\n // inject the component css\n if (css) styleManager.inject()\n\n return this\n}\n\n/**\n * Create a new riot tag implementation\n * @param { String } name - name/id of the new riot tag\n * @param { String } tmpl - tag template\n * @param { String } css - custom tag css\n * @param { String } attrs - root tag attributes\n * @param { Function } fn - user function\n * @returns { String } name/id of the tag just created\n */\nexport function tag(name, tmpl, css, attrs, fn) {\n if (isFunction(attrs)) {\n fn = attrs\n\n if (/^[\\w-]+\\s?=/.test(css)) {\n attrs = css\n css = ''\n } else\n attrs = ''\n }\n\n if (css) {\n if (isFunction(css))\n fn = css\n else\n styleManager.add(css)\n }\n\n name = name.toLowerCase()\n __TAG_IMPL[name] = { name, tmpl, attrs, fn }\n\n return name\n}\n\n/**\n * Create a new riot tag implementation (for use by the compiler)\n * @param { String } name - name/id of the new riot tag\n * @param { String } tmpl - tag template\n * @param { String } css - custom tag css\n * @param { String } attrs - root tag attributes\n * @param { Function } fn - user function\n * @returns { String } name/id of the tag just created\n */\nexport function tag2(name, tmpl, css, attrs, fn) {\n if (css) styleManager.add(css, name)\n\n __TAG_IMPL[name] = { name, tmpl, attrs, fn }\n\n return name\n}\n\n/**\n * Mount a tag using a specific tag implementation\n * @param { * } selector - tag DOM selector or DOM node/s\n * @param { String } tagName - tag implementation name\n * @param { Object } opts - tag logic\n * @returns { Array } new tags instances\n */\nexport function mount(selector, tagName, opts) {\n const tags = []\n let elem, allTags\n\n function pushTagsTo(root) {\n if (root.tagName) {\n let riotTag = getAttr(root, IS_DIRECTIVE), tag\n\n // have tagName? force riot-tag to be the same\n if (tagName && riotTag !== tagName) {\n riotTag = tagName\n setAttr(root, IS_DIRECTIVE, tagName)\n }\n\n tag = mountTo(root, riotTag || root.tagName.toLowerCase(), opts)\n\n if (tag)\n tags.push(tag)\n } else if (root.length)\n each(root, pushTagsTo) // assume nodeList\n }\n\n // inject styles into DOM\n styleManager.inject()\n\n if (isObject(tagName)) {\n opts = tagName\n tagName = 0\n }\n\n // crawl the DOM to find the tag\n if (isString(selector)) {\n selector = selector === '*' ?\n // select all registered tags\n // & tags found with the riot-tag attribute set\n allTags = selectTags() :\n // or just the ones named like the selector\n selector + selectTags(selector.split(/, */))\n\n // make sure to pass always a selector\n // to the querySelectorAll function\n elem = selector ? $$(selector) : []\n }\n else\n // probably you have passed already a tag or a NodeList\n elem = selector\n\n // select all the registered and mount them inside their root elements\n if (tagName === '*') {\n // get all custom tags\n tagName = allTags || selectTags()\n // if the root els it's just a single tag\n if (elem.tagName)\n elem = $$(tagName, elem)\n else {\n // select all the children for all the different root elements\n var nodeList = []\n\n each(elem, _el => nodeList.push($$(tagName, _el)))\n\n elem = nodeList\n }\n // get rid of the tagName\n tagName = 0\n }\n\n pushTagsTo(elem)\n\n return tags\n}\n\n// Create a mixin that could be globally shared across all the tags\nconst mixins = {}\nconst globals = mixins[GLOBAL_MIXIN] = {}\nlet mixins_id = 0\n\n/**\n * Create/Return a mixin by its name\n * @param { String } name - mixin name (global mixin if object)\n * @param { Object } mix - mixin logic\n * @param { Boolean } g - is global?\n * @returns { Object } the mixin logic\n */\nexport function mixin(name, mix, g) {\n // Unnamed global\n if (isObject(name)) {\n mixin(`__${mixins_id++}__`, name, true)\n return\n }\n\n const store = g ? globals : mixins\n\n // Getter\n if (!mix) {\n if (isUndefined(store[name]))\n throw new Error(`Unregistered mixin: ${ name }`)\n\n return store[name]\n }\n\n // Setter\n store[name] = isFunction(mix) ?\n extend(mix.prototype, store[name] || {}) && mix :\n extend(store[name] || {}, mix)\n}\n\n/**\n * Update all the tags instances created\n * @returns { Array } all the tags instances\n */\nexport function update() {\n return each(__TAGS_CACHE, tag => tag.update())\n}\n\nexport function unregister(name) {\n __TAG_IMPL[name] = null\n}\n\nexport const version = 'WIP'\n","import observable from 'riot-observable'\nimport { parseExpressions, parseAttributes } from './parse'\nimport RefExpr from './ref'\nimport update, { updateExpression } from './update'\nimport mkdom from './mkdom'\nimport { mixin } from './core'\nimport settings from '../../settings'\nimport {\n isSvg,\n setAttr,\n remAttr,\n walkAttrs,\n setInnerHTML\n} from './../common/util/dom'\n\nimport {\n isString,\n isFunction\n} from './../common/util/check'\n\nimport {\n extend,\n each,\n uid,\n toCamel,\n contains,\n startsWith,\n defineProperty,\n getPropDescriptor\n} from './../common/util/misc'\n\nimport {\n unmountAll,\n getTagName,\n arrayishRemove,\n inheritParentProps,\n getImmediateCustomParentTag\n} from './../common/util/tags'\n\nimport {\n GLOBAL_MIXIN,\n __TAGS_CACHE,\n ATTRS_PREFIX,\n RIOT_EVENTS_KEY\n} from './../common/global-variables'\n\n/**\n * We need to update opts for this tag. That requires updating the expressions\n * in any attributes on the tag, and then copying the result onto opts.\n * @this Tag\n * @param {Boolean} isLoop - is it a loop tag?\n * @param { Tag } parent - parent tag node\n * @param { Boolean } isAnonymous - is it a tag without any impl? (a tag not registered)\n * @param { Object } opts - tag options\n * @param { Array } instAttrs - tag attributes array\n */\nfunction updateOpts(isLoop, parent, isAnonymous, opts, instAttrs) {\n // isAnonymous `each` tags treat `dom` and `root` differently. In this case\n // (and only this case) we don't need to do updateOpts, because the regular parse\n // will update those attrs. Plus, isAnonymous tags don't need opts anyway\n if (isLoop && isAnonymous) return\n const ctx = isLoop ? inheritParentProps.call(this) : parent || this\n\n each(instAttrs, (attr) => {\n if (attr.expr) updateExpression.call(ctx, attr.expr)\n // normalize the attribute names\n opts[toCamel(attr.name).replace(ATTRS_PREFIX, '')] = attr.expr ? attr.expr.value : attr.value\n })\n}\n\n/**\n * Manage the mount state of a tag triggering also the observable events\n * @this Tag\n * @param { Boolean } value - ..of the isMounted flag\n */\nfunction setMountState(value) {\n const { isAnonymous } = this.__\n\n defineProperty(this, 'isMounted', value)\n\n if (!isAnonymous) {\n if (value) this.trigger('mount')\n else {\n this.trigger('unmount')\n this.off('*')\n this.__.wasCreated = false\n }\n }\n}\n\n\n/**\n * Tag creation factory function\n * @constructor\n * @param { Object } impl - it contains the tag template, and logic\n * @param { Object } conf - tag options\n * @param { String } innerHTML - html that eventually we need to inject in the tag\n */\nexport default function createTag(impl = {}, conf = {}, innerHTML) {\n const tag = conf.context || {}\n const opts = extend({}, conf.opts)\n const parent = conf.parent\n const isLoop = conf.isLoop\n const isAnonymous = !!conf.isAnonymous\n const skipAnonymous = settings.skipAnonymousTags && isAnonymous\n const item = conf.item\n // available only for the looped nodes\n const index = conf.index\n // All attributes on the Tag when it's first parsed\n const instAttrs = []\n // expressions on this type of Tag\n const implAttrs = []\n const expressions = []\n const root = conf.root\n const tagName = conf.tagName || getTagName(root)\n const isVirtual = tagName === 'virtual'\n const isInline = !isVirtual && !impl.tmpl\n let dom\n\n // make this tag observable\n if (!skipAnonymous) observable(tag)\n // only call unmount if we have a valid __TAG_IMPL (has name property)\n if (impl.name && root._tag) root._tag.unmount(true)\n\n // not yet mounted\n defineProperty(tag, 'isMounted', false)\n\n defineProperty(tag, '__', {\n isAnonymous,\n instAttrs,\n innerHTML,\n tagName,\n index,\n isLoop,\n isInline,\n // tags having event listeners\n // it would be better to use weak maps here but we can not introduce breaking changes now\n listeners: [],\n // these vars will be needed only for the virtual tags\n virts: [],\n wasCreated: false,\n tail: null,\n head: null,\n parent: null,\n item: null\n })\n\n // create a unique id to this tag\n // it could be handy to use it also to improve the virtual dom rendering speed\n defineProperty(tag, '_riot_id', uid()) // base 1 allows test !t._riot_id\n defineProperty(tag, 'root', root)\n extend(tag, { opts }, item)\n // protect the \"tags\" and \"refs\" property from being overridden\n defineProperty(tag, 'parent', parent || null)\n defineProperty(tag, 'tags', {})\n defineProperty(tag, 'refs', {})\n\n if (isInline || isLoop && isAnonymous) {\n dom = root\n } else {\n if (!isVirtual) root.innerHTML = ''\n dom = mkdom(impl.tmpl, innerHTML, isSvg(root))\n }\n\n /**\n * Update the tag expressions and options\n * @param { * } data - data we want to use to extend the tag properties\n * @returns { Tag } the current tag instance\n */\n defineProperty(tag, 'update', function tagUpdate(data) {\n const nextOpts = {}\n const canTrigger = tag.isMounted && !skipAnonymous\n\n // inherit properties from the parent tag\n if (isAnonymous && parent) extend(tag, parent)\n extend(tag, data)\n\n updateOpts.apply(tag, [isLoop, parent, isAnonymous, nextOpts, instAttrs])\n\n if (\n canTrigger &&\n tag.isMounted &&\n isFunction(tag.shouldUpdate) && !tag.shouldUpdate(data, nextOpts)\n ) {\n return tag\n }\n\n extend(opts, nextOpts)\n\n if (canTrigger) tag.trigger('update', data)\n update.call(tag, expressions)\n if (canTrigger) tag.trigger('updated')\n\n return tag\n })\n\n /**\n * Add a mixin to this tag\n * @returns { Tag } the current tag instance\n */\n defineProperty(tag, 'mixin', function tagMixin() {\n each(arguments, (mix) => {\n let instance\n let obj\n let props = []\n\n // properties blacklisted and will not be bound to the tag instance\n const propsBlacklist = ['init', '__proto__']\n\n mix = isString(mix) ? mixin(mix) : mix\n\n // check if the mixin is a function\n if (isFunction(mix)) {\n // create the new mixin instance\n instance = new mix()\n } else instance = mix\n\n const proto = Object.getPrototypeOf(instance)\n\n // build multilevel prototype inheritance chain property list\n do props = props.concat(Object.getOwnPropertyNames(obj || instance))\n while (obj = Object.getPrototypeOf(obj || instance))\n\n // loop the keys in the function prototype or the all object keys\n each(props, (key) => {\n // bind methods to tag\n // allow mixins to override other properties/parent mixins\n if (!contains(propsBlacklist, key)) {\n // check for getters/setters\n const descriptor = getPropDescriptor(instance, key) || getPropDescriptor(proto, key)\n const hasGetterSetter = descriptor && (descriptor.get || descriptor.set)\n\n // apply method only if it does not already exist on the instance\n if (!tag.hasOwnProperty(key) && hasGetterSetter) {\n Object.defineProperty(tag, key, descriptor)\n } else {\n tag[key] = isFunction(instance[key]) ?\n instance[key].bind(tag) :\n instance[key]\n }\n }\n })\n\n // init method will be called automatically\n if (instance.init)\n instance.init.bind(tag)(opts)\n })\n\n return tag\n })\n\n /**\n * Mount the current tag instance\n * @returns { Tag } the current tag instance\n */\n defineProperty(tag, 'mount', function tagMount() {\n root._tag = tag // keep a reference to the tag just created\n\n // Read all the attrs on this instance. This give us the info we need for updateOpts\n parseAttributes.apply(parent, [root, root.attributes, (attr, expr) => {\n if (!isAnonymous && RefExpr.isPrototypeOf(expr)) expr.tag = tag\n attr.expr = expr\n instAttrs.push(attr)\n }])\n\n // update the root adding custom attributes coming from the compiler\n walkAttrs(impl.attrs, (k, v) => { implAttrs.push({name: k, value: v}) })\n parseAttributes.apply(tag, [root, implAttrs, (attr, expr) => {\n if (expr) expressions.push(expr)\n else setAttr(root, attr.name, attr.value)\n }])\n\n // initialiation\n updateOpts.apply(tag, [isLoop, parent, isAnonymous, opts, instAttrs])\n\n // add global mixins\n const globalMixin = mixin(GLOBAL_MIXIN)\n\n if (globalMixin && !skipAnonymous) {\n for (const i in globalMixin) {\n if (globalMixin.hasOwnProperty(i)) {\n tag.mixin(globalMixin[i])\n }\n }\n }\n\n if (impl.fn) impl.fn.call(tag, opts)\n\n if (!skipAnonymous) tag.trigger('before-mount')\n\n // parse layout after init. fn may calculate args for nested custom tags\n each(parseExpressions.apply(tag, [dom, isAnonymous]), e => expressions.push(e))\n\n tag.update(item)\n\n if (!isAnonymous && !isInline) {\n while (dom.firstChild) root.appendChild(dom.firstChild)\n }\n\n defineProperty(tag, 'root', root)\n\n // if we need to wait that the parent \"mount\" or \"updated\" event gets triggered\n if (!skipAnonymous && tag.parent) {\n const p = getImmediateCustomParentTag(tag.parent)\n p.one(!p.isMounted ? 'mount' : 'updated', () => {\n setMountState.call(tag, true)\n })\n } else {\n // otherwise it's not a child tag we can trigger its mount event\n setMountState.call(tag, true)\n }\n\n tag.__.wasCreated = true\n\n return tag\n\n })\n\n /**\n * Unmount the tag instance\n * @param { Boolean } mustKeepRoot - if it's true the root node will not be removed\n * @returns { Tag } the current tag instance\n */\n defineProperty(tag, 'unmount', function tagUnmount(mustKeepRoot) {\n const el = tag.root\n const p = el.parentNode\n const tagIndex = __TAGS_CACHE.indexOf(tag)\n\n if (!skipAnonymous) tag.trigger('before-unmount')\n\n // clear all attributes coming from the mounted tag\n walkAttrs(impl.attrs, (name) => {\n if (startsWith(name, ATTRS_PREFIX))\n name = name.slice(ATTRS_PREFIX.length)\n\n remAttr(root, name)\n })\n\n // remove all the event listeners\n tag.__.listeners.forEach((dom) => {\n Object.keys(dom[RIOT_EVENTS_KEY]).forEach((eventName) => {\n dom.removeEventListener(eventName, dom[RIOT_EVENTS_KEY][eventName])\n })\n })\n\n // remove tag instance from the global tags cache collection\n if (tagIndex !== -1) __TAGS_CACHE.splice(tagIndex, 1)\n\n // clean up the parent tags object\n if (parent && !isAnonymous) {\n const ptag = getImmediateCustomParentTag(parent)\n\n if (isVirtual) {\n Object\n .keys(tag.tags)\n .forEach(tagName => arrayishRemove(ptag.tags, tagName, tag.tags[tagName]))\n } else {\n arrayishRemove(ptag.tags, tagName, tag)\n }\n }\n\n // unmount all the virtual directives\n if (tag.__.virts) {\n each(tag.__.virts, (v) => {\n if (v.parentNode) v.parentNode.removeChild(v)\n })\n }\n\n // allow expressions to unmount themselves\n unmountAll(expressions)\n each(instAttrs, a => a.expr && a.expr.unmount && a.expr.unmount())\n\n // clear the tag html if it's necessary\n if (mustKeepRoot) setInnerHTML(el, '')\n // otherwise detach the root tag from the DOM\n else if (p) p.removeChild(el)\n\n // custom internal unmount function to avoid relying on the observable\n if (tag.__.onUnmount) tag.__.onUnmount()\n\n // weird fix for a weird edge case #2409 and #2436\n // some users might use your software not as you've expected\n // so I need to add these dirty hacks to mitigate unexpected issues\n if (!tag.isMounted) setMountState.call(tag, true)\n\n setMountState.call(tag, false)\n\n delete tag.root._tag\n\n return tag\n })\n\n return tag\n}\n","import createTag from './../../tag/tag'\nimport { getAttr, createDOMPlaceholder, createFrag } from './dom'\nimport { contains, each, defineProperty, extend } from './misc'\nimport { isArray, isUndefined } from './check'\nimport { tmpl } from 'riot-tmpl'\n\nimport {\n __TAG_IMPL,\n __TAGS_CACHE,\n IS_DIRECTIVE\n} from './../global-variables'\n\n/**\n * Detect the tag implementation by a DOM node\n * @param { Object } dom - DOM node we need to parse to get its tag implementation\n * @returns { Object } it returns an object containing the implementation of a custom tag (template and boot function)\n */\nexport function getTag(dom) {\n return dom.tagName && __TAG_IMPL[getAttr(dom, IS_DIRECTIVE) ||\n getAttr(dom, IS_DIRECTIVE) || dom.tagName.toLowerCase()]\n}\n\n/**\n * Move the position of a custom tag in its parent tag\n * @this Tag\n * @param { String } tagName - key where the tag was stored\n * @param { Number } newPos - index where the new tag will be stored\n */\nexport function moveChildTag(tagName, newPos) {\n const parent = this.parent\n let tags\n // no parent no move\n if (!parent) return\n\n tags = parent.tags[tagName]\n\n if (isArray(tags))\n tags.splice(newPos, 0, tags.splice(tags.indexOf(this), 1)[0])\n else arrayishAdd(parent.tags, tagName, this)\n}\n\n/**\n * Create a new child tag including it correctly into its parent\n * @param { Object } child - child tag implementation\n * @param { Object } opts - tag options containing the DOM node where the tag will be mounted\n * @param { String } innerHTML - inner html of the child node\n * @param { Object } parent - instance of the parent tag including the child custom tag\n * @returns { Object } instance of the new child tag just created\n */\nexport function initChildTag(child, opts, innerHTML, parent) {\n const tag = createTag(child, opts, innerHTML)\n const tagName = opts.tagName || getTagName(opts.root, true)\n const ptag = getImmediateCustomParentTag(parent)\n // fix for the parent attribute in the looped elements\n defineProperty(tag, 'parent', ptag)\n // store the real parent tag\n // in some cases this could be different from the custom parent tag\n // for example in nested loops\n tag.__.parent = parent\n\n // add this tag to the custom parent tag\n arrayishAdd(ptag.tags, tagName, tag)\n\n // and also to the real parent tag\n if (ptag !== parent)\n arrayishAdd(parent.tags, tagName, tag)\n\n return tag\n}\n\n/**\n * Loop backward all the parents tree to detect the first custom parent tag\n * @param { Object } tag - a Tag instance\n * @returns { Object } the instance of the first custom parent tag found\n */\nexport function getImmediateCustomParentTag(tag) {\n let ptag = tag\n while (ptag.__.isAnonymous) {\n if (!ptag.parent) break\n ptag = ptag.parent\n }\n return ptag\n}\n\n/**\n * Trigger the unmount method on all the expressions\n * @param { Array } expressions - DOM expressions\n */\nexport function unmountAll(expressions) {\n each(expressions, expr => {\n if (expr.unmount) expr.unmount(true)\n else if (expr.tagName) expr.tag.unmount(true)\n else if (expr.unmount) expr.unmount()\n })\n}\n\n/**\n * Get the tag name of any DOM node\n * @param { Object } dom - DOM node we want to parse\n * @param { Boolean } skipDataIs - hack to ignore the data-is attribute when attaching to parent\n * @returns { String } name to identify this dom node in riot\n */\nexport function getTagName(dom, skipDataIs) {\n const child = getTag(dom)\n const namedTag = !skipDataIs && getAttr(dom, IS_DIRECTIVE)\n return namedTag && !tmpl.hasExpr(namedTag) ?\n namedTag : child ? child.name : dom.tagName.toLowerCase()\n}\n\n/**\n * Set the property of an object for a given key. If something already\n * exists there, then it becomes an array containing both the old and new value.\n * @param { Object } obj - object on which to set the property\n * @param { String } key - property name\n * @param { Object } value - the value of the property to be set\n * @param { Boolean } ensureArray - ensure that the property remains an array\n * @param { Number } index - add the new item in a certain array position\n */\nexport function arrayishAdd(obj, key, value, ensureArray, index) {\n const dest = obj[key]\n const isArr = isArray(dest)\n const hasIndex = !isUndefined(index)\n\n if (dest && dest === value) return\n\n // if the key was never set, set it once\n if (!dest && ensureArray) obj[key] = [value]\n else if (!dest) obj[key] = value\n // if it was an array and not yet set\n else {\n if (isArr) {\n const oldIndex = dest.indexOf(value)\n // this item never changed its position\n if (oldIndex === index) return\n // remove the item from its old position\n if (oldIndex !== -1) dest.splice(oldIndex, 1)\n // move or add the item\n if (hasIndex) {\n dest.splice(index, 0, value)\n } else {\n dest.push(value)\n }\n } else obj[key] = [dest, value]\n }\n}\n\n/**\n * Removes an item from an object at a given key. If the key points to an array,\n * then the item is just removed from the array.\n * @param { Object } obj - object on which to remove the property\n * @param { String } key - property name\n * @param { Object } value - the value of the property to be removed\n * @param { Boolean } ensureArray - ensure that the property remains an array\n*/\nexport function arrayishRemove(obj, key, value, ensureArray) {\n if (isArray(obj[key])) {\n let index = obj[key].indexOf(value)\n if (index !== -1) obj[key].splice(index, 1)\n if (!obj[key].length) delete obj[key]\n else if (obj[key].length === 1 && !ensureArray) obj[key] = obj[key][0]\n } else if (obj[key] === value)\n delete obj[key] // otherwise just delete the key\n}\n\n/**\n * Mount a tag creating new Tag instance\n * @param { Object } root - dom node where the tag will be mounted\n * @param { String } tagName - name of the riot tag we want to mount\n * @param { Object } opts - options to pass to the Tag instance\n * @param { Object } ctx - optional context that will be used to extend an existing class ( used in riot.Tag )\n * @returns { Tag } a new Tag instance\n */\nexport function mountTo(root, tagName, opts, ctx) {\n const impl = __TAG_IMPL[tagName]\n const implClass = __TAG_IMPL[tagName].class\n const context = ctx || (implClass ? Object.create(implClass.prototype) : {})\n // cache the inner HTML to fix #855\n const innerHTML = root._innerHTML = root._innerHTML || root.innerHTML\n const conf = extend({ root, opts, context }, { parent: opts ? opts.parent : null })\n let tag\n\n if (impl && root) tag = createTag(impl, conf, innerHTML)\n\n if (tag && tag.mount) {\n tag.mount(true)\n // add this tag to the virtualDom variable\n if (!contains(__TAGS_CACHE, tag)) __TAGS_CACHE.push(tag)\n }\n\n return tag\n}\n\n/**\n * makes a tag virtual and replaces a reference in the dom\n * @this Tag\n * @param { tag } the tag to make virtual\n * @param { ref } the dom reference location\n */\nexport function makeReplaceVirtual(tag, ref) {\n const frag = createFrag()\n makeVirtual.call(tag, frag)\n ref.parentNode.replaceChild(frag, ref)\n}\n\n/**\n * Adds the elements for a virtual tag\n * @this Tag\n * @param { Node } src - the node that will do the inserting or appending\n * @param { Tag } target - only if inserting, insert before this tag's first child\n */\nexport function makeVirtual(src, target) {\n const head = createDOMPlaceholder()\n const tail = createDOMPlaceholder()\n const frag = createFrag()\n let sib\n let el\n\n this.root.insertBefore(head, this.root.firstChild)\n this.root.appendChild(tail)\n\n this.__.head = el = head\n this.__.tail = tail\n\n while (el) {\n sib = el.nextSibling\n frag.appendChild(el)\n this.__.virts.push(el) // hold for unmounting\n el = sib\n }\n\n if (target)\n src.insertBefore(frag, target.__.head)\n else\n src.appendChild(frag)\n}\n\n/**\n * Return a temporary context containing also the parent properties\n * @this Tag\n * @param { Tag } - temporary tag context containing all the parent properties\n */\nexport function inheritParentProps() {\n if (this.parent) return extend(Object.create(this), this.parent)\n return this\n}\n\n/**\n * Move virtual tag and all child nodes\n * @this Tag\n * @param { Node } src - the node that will do the inserting\n * @param { Tag } target - insert before this tag's first child\n */\nexport function moveVirtual(src, target) {\n let el = this.__.head\n let sib\n const frag = createFrag()\n\n while (el) {\n sib = el.nextSibling\n frag.appendChild(el)\n el = sib\n if (el === this.__.tail) {\n frag.appendChild(el)\n src.insertBefore(frag, target.__.head)\n break\n }\n }\n}\n\n/**\n * Get selectors for tags\n * @param { Array } tags - tag names to select\n * @returns { String } selector\n */\nexport function selectTags(tags) {\n // select all tags\n if (!tags) {\n const keys = Object.keys(__TAG_IMPL)\n return keys + selectTags(keys)\n }\n\n return tags\n .filter(t => !/[^-\\w]/.test(t))\n .reduce((list, t) => {\n const name = t.trim().toLowerCase()\n return list + `,[${IS_DIRECTIVE}=\"${name}\"]`\n }, '')\n}\n","import styleManager from './browser/tag/styleManager'\nimport { tmpl, brackets } from 'riot-tmpl'\nimport o from 'riot-observable'\nimport s from './settings'\nimport { __TAGS_CACHE as vdom } from './browser/common/global-variables'\nimport * as dom from './browser/common/util/dom'\nimport * as check from './browser/common/util/check'\nimport * as misc from './browser/common/util/misc'\nimport * as tags from './browser/common/util/tags'\nimport * as core from './browser/tag/core'\n\n/**\n * Riot public api\n */\nexport const settings = s\nexport const util = {\n tmpl,\n brackets,\n styleManager,\n vdom,\n styleNode: styleManager.styleNode,\n // export the riot internal utils as well\n dom,\n check,\n misc,\n tags\n}\n\n// export the core props/methods\nexport const Tag = core.Tag\nexport const tag = core.tag\nexport const tag2 = core.tag2\nexport const mount = core.mount\nexport const mixin = core.mixin\nexport const update = core.update\nexport const unregister = core.unregister\nexport const version = core.version\nexport const observable = o\n\nexport default misc.extend({}, core, {\n observable: o,\n settings,\n util,\n})\n","import toString from 'es-tostring'\n\n# Test if `value` is a number.\n#\n# @param {Mixed} value value to test\n# @return {Boolean} true if `value` is a number, false otherwise\n# @api public\nexport default isNumber = (value) ->\n toString(value) == '[object Number]'\n","import toString from 'es-tostring'\n\n# Test if `value` is an object.\n#\n# @param {Mixed} value value to test\n# @return {Boolean} true if `value` is an object, false otherwise\n# @api public\nexport default isObject = (value) ->\n toString(value) == '[object Object]'\n","getOwnSymbols = Object.getOwnPropertySymbols\n\ntoObject = (val) ->\n if val == null or val == undefined\n throw new TypeError('Object.assign cannot be called with null or undefined')\n Object val\n\nshouldUseNative = ->\n try\n return false unless Object.assign\n\n # Detect buggy property enumeration order in older V8 versions.\n\n # https://bugs.chromium.org/p/v8/issues/detail?id=4118\n test1 = new String('abc')\n test1[5] = 'de'\n return false if Object.getOwnPropertyNames(test1)[0] == '5'\n\n # https://bugs.chromium.org/p/v8/issues/detail?id=3056\n test2 = {}\n for i in [0..9]\n test2['_' + String.fromCharCode(i)] = i\n order2 = Object.getOwnPropertyNames(test2).map (n) -> test2[n]\n return false if order2.join('') != '0123456789'\n\n # https://bugs.chromium.org/p/v8/issues/detail?id=3056\n test3 = {}\n for letter in 'abcdefghijklmnopqrst'.split('')\n test3[letter] = letter\n if Object.keys(Object.assign({}, test3)).join('') != 'abcdefghijklmnopqrst'\n return false\n true\n catch err\n # We don't expect any of the above to throw, but better to be safe.\n false\n\nexport default objectAssign = do ->\n return Object.assign if shouldUseNative()\n\n (target, sources...) ->\n to = toObject target\n\n for source in sources\n from = Object(source)\n for key of from\n if Object::hasOwnProperty.call(from, key)\n to[key] = from[key]\n if getOwnSymbols\n for symbol in getOwnSymbols(from)\n if Object::propIsEnumerable.call from, symbol\n to[symbol] = from[symbol]\n to\n","import isNumber from 'es-is/number'\nimport isObject from 'es-is/object'\nimport objectAssign from 'es-object-assign'\nimport observable from 'riot-observable'\n\nnextId = do ->\n ids = 0\n -> ids++\n\nexport default class Ref\n constructor: (@_value, @parent, @key) ->\n @_cache = {}\n @_children = {}\n @_numChildren = 0\n @_id = nextId()\n\n if @parent?\n @parent._children[@_id] = @\n @parent._numChildren++\n observable @\n @\n\n # Clear the cache\n _mutate: (key) ->\n # TODO: do something smarter with key rather than wiping out entire cache\n @_cache = {}\n\n # clear children as well\n child._mutate() for id, child of @_children\n\n @\n\n # clear everything\n clear: ()->\n @_cache = {}\n\n child.clear() for id, child of @_children\n @_children = {}\n @_numChildren = 0\n\n #clear out the values\n @_value = undefined\n\n if @parent?\n @parent.set @key, undefined\n\n # Removes reference\n destroy: () ->\n child.destroy() for id, child of @_children\n delete @_cache\n delete @_children\n @off '*'\n\n if @parent\n delete @parent._children[@_id]\n @parent._numChildren--\n @\n\n # Get value of this or parent Ref\n value: (state) ->\n unless @parent\n if state?\n @_value = state\n return @_value\n\n if state?\n @parent.set @key, state\n else\n @parent.get @key\n\n # Get a ref to this or subtree\n ref: (key) ->\n unless key\n return @\n\n new Ref null, @, key\n\n # Get state or subtree\n get: (key) ->\n unless key\n @value()\n else\n return @_cache[key] if @_cache[key]\n @_cache[key] = @index key\n\n # Set value overwriting tree along way\n set: (key, value) ->\n # handle case of object\n if isObject key\n for k, v of key\n @set k, v\n\n return @\n\n oldValue = @get key\n\n @_mutate key\n\n unless value?\n # avoid strings/nulls etc being thrown into object assign\n if isObject key\n @value objectAssign @value(), key\n # fall back to standard assignment by setting key to ull/undefined\n else\n @index key, value, false\n else\n @index key, value, false\n\n # set event\n @_triggerSet key, value, oldValue\n @_triggerSetChildren key, value, oldValue\n @\n\n _triggerSetChildren: (key, value, oldValue) ->\n return @ if @_numChildren == 0\n key = key + ''\n keyParts = key.split '.'\n partialKey = ''\n childKeys = []\n regExps = {}\n\n for i, keyPart of keyParts\n if partialKey == ''\n partialKey = keyPart\n else\n partialKey += '.' + keyPart\n childKeys[i] = partialKey\n\n regExps[partialKey] = new RegExp '^' + partialKey + '\\.?'\n\n for id, child of @_children\n if child.key in childKeys\n childRemainderKey = key.replace regExps[child.key], ''\n child.trigger 'set', childRemainderKey, value, oldValue\n child._triggerSetChildren childRemainderKey, value, oldValue\n\n _triggerSet: (key, value, oldValue) ->\n @trigger 'set', key, value, oldValue\n if @parent\n parentKey = @key + '.' + key\n @parent._triggerSet parentKey, value, oldValue\n\n # Deep set some value\n extend: (key, value) ->\n @_mutate key\n\n unless value?\n @value objectAssign @value(), key\n else\n if isObject value\n @value objectAssign (@ref key).get(), value\n else\n clone = @clone()\n @set key, value\n @value objectAssign clone.get(), @value()\n @\n\n clone: (key) ->\n new Ref objectAssign {}, @get key\n\n # Walk tree using key, optionally update value\n index: (key, value, get=true, obj=@value()) ->\n if @parent\n return @parent.index @key + '.' + key, value, get\n\n if isNumber key\n key = String key\n\n props = key.split '.'\n\n if get\n # Get is simple, doesn't need to create properties as it goes\n while prop = props.shift()\n unless props.length\n return obj?[prop]\n obj = obj?[prop]\n return\n\n if !@_value?\n @_value = {}\n if !obj?\n obj = @_value\n\n # Set version creates tree if necessary\n while prop = props.shift()\n unless props.length\n return obj[prop] = value\n else\n next = props[0]\n unless obj[prop]?\n if isNaN Number next\n obj[prop] ?= {}\n else\n obj[prop] ?= []\n obj = obj[prop]\n return\n","import Ref from './ref'\n\nmethods = [\n 'extend'\n 'get'\n 'index'\n 'ref'\n 'set'\n 'value'\n 'clear'\n 'destroy'\n\n 'on'\n 'off'\n 'one'\n 'trigger'\n]\n\nrefer = (state, ref=null) ->\n ref ?= new Ref state\n\n wrapper = (key) -> ref.get key\n\n for method in methods\n do (method) ->\n wrapper[method] = ->\n ref[method].apply ref, arguments\n\n wrapper.refer = (key) -> refer null, ref.ref key\n wrapper.clone = (key) -> refer null, ref.clone key\n wrapper\n\nrefer.Ref = Ref\n\nexport default refer\n","import Promise from 'broken'\nimport riot from 'riot/lib/riot'\nimport {raf} from 'es-raf'\n\ntodos = {}\nrafId = -1\np = null\nid = 0\n\nwindow.Promise ?= Promise\nwindow.requestAnimationFrame ?= raf\n\nscheduleUpdate = (tag)->\n if !p\n p = new Promise\n p.then ()->\n for _, todo of todos\n todo.update()\n p = null\n todos = {}\n rafId = -1\n\n if todos['*']\n return p\n\n if !tag\n todos =\n '*': riot\n else if !tag.update?\n throw new Error 'tag has no update routine'\n else\n currentTag = tag\n\n while currentTag?\n parentTag = currentTag.parent\n if !currentTag._schedulingId\n currentTag._schedulingId = id++\n else if todos[currentTag.schedulingId]?\n return p\n currentTag = parentTag\n\n todos[tag._schedulingId] = tag\n\n if rafId == -1\n rafId = requestAnimationFrame ()->\n p.resolve()\n\n return p\n\n\nexport { scheduleUpdate }\n","import isFunction from 'es-is/function'\nimport objectAssign from 'es-object-assign'\nimport riot from 'riot/lib/riot'\n\nimport {scheduleUpdate} from '../schedule'\n\nsetPrototypeOf = (()->\n setProtoOf = (obj, proto)->\n obj.__proto__ = proto\n\n mixinProperties = (obj, proto)->\n for prop of proto\n obj[prop] = proto[prop] if !obj[prop]?\n\n return if Object.setPrototypeOf || {__proto__:[]} instanceof Array then setProtoOf else mixinProperties\n)()\n\ncollapsePrototype = (collapse, proto)->\n if proto == View.prototype\n return\n\n parentProto = Object.getPrototypeOf proto\n collapsePrototype collapse, parentProto\n\n if members = Object.getOwnPropertyNames parentProto\n for member in members\n collapse[member] = parentProto[member]\n\n objectAssign collapse, parentProto\n\nclass View\n @register: ->\n new @\n\n tag: ''\n html: ''\n css: ''\n attrs: ''\n events: null\n\n constructor: ->\n newProto = collapsePrototype {}, @\n\n @beforeInit()\n\n riot.tag @tag, @html, @css, @attrs, (opts)->\n if newProto?\n for k, v of newProto\n if isFunction(v)\n do (v) =>\n if @[k]?\n oldFn = @[k]\n @[k] = (args...)=>\n oldFn.apply @, args\n return v.apply @, args\n else\n @[k] = (args...)=>\n return v.apply @, args\n else\n @[k] = v\n\n # Loop up the parents setting parent as the prototype so you have access to vars on it\n # Might be terrible, might be great, who knows?\n self = @\n parent = self.parent ? opts.parent\n proto = Object.getPrototypeOf self\n while parent && parent != proto\n setPrototypeOf self, parent\n self = parent\n parent = self.parent\n proto = Object.getPrototypeOf self\n\n if opts?\n for k, v of opts\n @[k] = v\n\n if @events?\n for name, handler of @events\n do (name, handler) =>\n if typeof handler == 'string'\n @on name, (args...)=> @[handler].apply @, args\n else\n @on name, (args...)=> handler.apply @, args\n\n @init opts\n\n beforeInit: ->\n init: ->\n scheduleUpdate: ->\n scheduleUpdate @\n\nexport default View\n","import Promise from 'broken'\nimport refer from 'referential'\nimport isFunction from 'es-is/function'\nimport observable from 'riot-observable'\n\nisRef = (o) -> o? and isFunction o.ref\n\n# inputify takes a model and a configuration and returns observable values\n# data: an generic dictionary object that you want to generate observable properties from\n# configs: a mapping of model values to a middleware stack eg.\n# field1: middleware\n# where middleware is an array of (value, name, model)-> value\ninputify = (data, configs = {}) ->\n ref = data\n if !isRef ref\n ref = refer data\n inputs = {}\n\n for name, config of configs\n do (name, config)->\n middleware = []\n\n if config && config.length > 0\n for middlewareFn in config\n do (name, middlewareFn)->\n middleware.push (pair)->\n [ref, name] = pair\n return Promise.resolve pair\n .then (pair)->\n return middlewareFn.call(pair[0], pair[0].get(pair[1]), pair[1], pair[0])\n .then (v)->\n ref.set(name, v)\n return pair\n\n middleware.push (pair)->\n [ref, name] = pair\n # on success resolve the value in the ref\n return Promise.resolve ref.get name\n\n validate = (ref, name)->\n p = Promise.resolve [ref, name]\n for middlewareFn in middleware\n p = p.then middlewareFn\n return p\n\n input =\n name: name\n ref: ref\n\n config: config\n validate: validate\n\n # make the input an observable so both form and input can observe it\n observable input\n\n inputs[name] = input\n\n return inputs\n\nexport default inputify\n","import View from './view'\nimport inputify from './inputify'\n\nimport Promise from 'broken'\n\n# Supported Events:\n# submit - fired when form is submitted\n\nclass Form extends View\n # input for validate\n # configs: null\n\n # output from validate that's used for configuring InputViews\n # inputs: null\n\n # ref to use for validate\n # data: null\n\n # default transclude contents\n html: '<yield/>'\n\n initInputs: ->\n @inputs = {}\n\n if @configs?\n @inputs = inputify @data, @configs\n\n init: ->\n @initInputs()\n\n submit: (e) ->\n ps = []\n for name, input of @inputs\n pRef = {}\n input.trigger 'validate', pRef\n if pRef.p?\n ps.push pRef.p\n\n p = Promise.settle(ps).then (results) =>\n for result in results\n if !result.isFulfilled()\n return\n @_submit.apply @, arguments\n\n if e?\n e.preventDefault()\n e.stopPropagation()\n\n return p\n\n _submit: ->\n # do actual submit stuff\n\nexport default Form\n","import View from './view'\nimport observable from 'riot-observable'\n\n# Input binds to specific fields in the data tree and automatically\n# updates the UI from the data tree on update and updates fields in\n# the data tree on user interaction.\nclass Input extends View\n input: null\n\n # Is the input validated?\n #\n # Input state is calculated like this:\n # initial: @value = false\n # valid: @value = true\n # invald: @value = false && @errorMessage != ''\n valid: false\n\n # Records the error from any validation middleware if any\n errorMessage: ''\n\n init: ->\n # if no input or lookup, throw error\n if !@input? && !@lookup? && !@bind?\n throw new Error 'No input or bind provided'\n\n # lookup input in parent input by key if things exist\n if !@input? && @inputs?\n @input = @inputs[(@lookup ? @bind)]\n\n # manually create using parent data\n if !@input?\n @input =\n name: (@lookup ? @bind)\n ref: @data\n validate: (ref, name)->\n return Promise.resolve [ref, name]\n\n observable @input\n\n @input.on 'validate', (pRef) => @validate pRef\n\n # auto refresh on update of field\n @input.ref.on 'set', (n, v1, v2) =>\n if n == @input.name && v1 != v2\n @_change v1, true\n @scheduleUpdate()\n\n getValue: (event) ->\n return event.target.value\n\n change: (event) ->\n value = @getValue event\n\n @_change value\n\n _change: (value, forced) ->\n {ref, name} = @input\n\n if !forced && value == ref.get name\n return\n\n @input.ref.set name, value\n\n @clearError()\n @validate()\n\n error: (err) ->\n @errorMessage = err?.message ? err\n\n changed: ->\n\n clearError: ->\n @errorMessage = ''\n\n # support pass by reference since observable.trigger doesn't return things\n validate: (pRef) ->\n p = @input.validate @input.ref, @input.name\n .then (value)=>\n @changed(value)\n @valid = true\n @scheduleUpdate()\n .catch (err)=>\n @error(err)\n @valid = false\n @scheduleUpdate()\n throw err\n\n if pRef?\n pRef.p = p\n\n return p\n\nexport default Input\n","import Form from './form'\nimport Input from './input'\nimport View from './view'\nimport inputify from './inputify'\n\nexport default Views =\n Form: Form\n Input: Input\n View: View\n inputify: inputify\n","import isFunction from 'es-is/function'\nimport riot from 'riot/lib/riot'\nimport refer from 'referential'\n\nimport Views from './views'\nimport {scheduleUpdate} from './schedule'\n\nEl =\n # deprecated\n Views: Views\n\n View: Views.View\n Form: Views.Form\n Input: Views.Input\n\n ref: refer\n riot: riot\n\n scheduleUpdate: ()->\n scheduleUpdate()\n\nfor k, v of riot\n do (k, v) ->\n if isFunction v\n El[k] = ->\n v.apply riot, arguments\n\nexport default El\n","export default Events =\n Change:\n 'change'\n ChangeSuccess:\n 'change-success'\n ChangeFailed:\n 'change-failed'\n","export default valueOrCall = (valueOrFunc)->\n if typeof valueOrFunc == 'function'\n return valueOrFunc()\n\n return valueOrFunc\n","/* global global */\nexport let assign = (source, ...args) => {\n for (let i = 0, len = args.length; i < len; i++) {\n const arg = args[i]\n for (const p in arg) {\n source[p] = arg[p]\n }\n }\n return source\n}\nexport let create =\n Object.create || ((source = {}) => ({ ...source }))\nexport let root =\n typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined' ? global : this\nexport let requestAnimationFrame =\n root.requestAnimationFrame ||\n ((fn) => root.setTimeout(fn, 16))\nexport let cancelAnimationFrame =\n root.cancelAnimationFrame ||\n ((id) => root.clearTimeout(id))\n","/* global process */\nimport { requestAnimationFrame, root } from './shim'\n\n/**\n * Get browser/Node.js current time-stamp\n * @return Normalised current time-stamp in milliseconds\n * @memberof TWEEN\n * @example\n * TWEEN.now\n */\nconst now = (function () {\n if (typeof process !== 'undefined' && process.hrtime !== undefined && (!process.versions || process.versions.electron === undefined)) {\n return function () {\n const time = process.hrtime()\n\n // Convert [seconds, nanoseconds] to milliseconds.\n return time[0] * 1000 + time[1] / 1000000\n }\n // In a browser, use window.performance.now if it is available.\n } else if (\n root.performance !== undefined &&\n root.performance.now !== undefined\n ) {\n // This must be bound, because directly assigning this function\n // leads to an invocation exception in Chrome.\n return root.performance.now.bind(root.performance)\n // Use Date.now if it is available.\n } else {\n const offset =\n root.performance &&\n root.performance.timing &&\n root.performance.timing.navigationStart\n ? root.performance.timing.navigationStart\n : Date.now()\n return function () {\n return Date.now() - offset\n }\n }\n})()\n\n/**\n * Lightweight, effecient and modular ES6 version of tween.js\n * @copyright 2017 @dalisoft and es6-tween contributors\n * @license MIT\n * @namespace TWEEN\n * @example\n * // ES6\n * const {add, remove, isRunning, autoPlay} = TWEEN\n */\nconst _tweens = []\nlet isStarted = false\nlet _autoPlay = false\nlet _onRequestTick = []\nconst _ticker = requestAnimationFrame\nlet emptyFrame = 0\nlet powerModeThrottle = 120\n\nconst onRequestTick = (fn) => {\n _onRequestTick.push(fn)\n}\n\nconst _requestTick = () => {\n for (let i = 0; i < _onRequestTick.length; i++) {\n _onRequestTick[i]()\n }\n}\n\n/**\n * Adds tween to list\n * @param {Tween} tween Tween instance\n * @memberof TWEEN\n * @example\n * let tween = new Tween({x:0})\n * tween.to({x:200}, 1000)\n * TWEEN.add(tween)\n */\nconst add = (tween) => {\n let i = _tweens.indexOf(tween)\n\n if (i > -1) {\n _tweens.splice(i, 1)\n }\n\n _tweens.push(tween)\n\n emptyFrame = 0\n\n if (_autoPlay && !isStarted) {\n _ticker(update)\n isStarted = true\n } else {\n _requestTick()\n }\n}\n\n/**\n * Adds ticker like event\n * @param {Function} fn callback\n * @memberof TWEEN\n * @example\n * TWEEN.onTick(time => console.log(time))\n */\nconst onTick = (fn) => _tweens.push({ update: fn })\n\n/**\n * Sets after how much frames empty updating should stop\n * @param {number} [frameCount=120] count of frames that should stop after all tweens removed\n * @memberof TWEEN\n * @example\n * TWEEN.FrameThrottle(60)\n */\nconst FrameThrottle = (frameCount = 120) => {\n powerModeThrottle = frameCount\n}\n\n/**\n * @returns {Array<Tween>} List of tweens in Array\n * @memberof TWEEN\n * TWEEN.getAll() // list of tweens\n */\nconst getAll = () => _tweens\n\n/**\n * Runs update loop automaticlly\n * @param {Boolean} state State of auto-run of update loop\n * @example TWEEN.autoPlay(true)\n * @memberof TWEEN\n */\nconst autoPlay = (state) => {\n _autoPlay = state\n}\n\n/**\n * Removes all tweens from list\n * @example TWEEN.removeAll() // removes all tweens, stored in global tweens list\n * @memberof TWEEN\n */\nconst removeAll = () => {\n _tweens.length = 0\n}\n\n/**\n * @param {Tween} tween Tween Instance to be matched\n * @return {Tween} Matched tween\n * @memberof TWEEN\n * @example\n * TWEEN.get(tween)\n */\nconst get = (tween) => {\n for (let i = 0; i < _tweens.length; i++) {\n if (tween === _tweens[i]) {\n return _tweens[i]\n }\n }\n\n return null\n}\n\n/**\n * @param {Tween} tween Tween Instance to be matched\n * @return {Boolean} Status of Exists tween or not\n * @memberof TWEEN\n * @example\n * TWEEN.has(tween)\n */\nconst has = (tween) => {\n return get(tween) !== null\n}\n/**\n * Removes tween from list\n * @param {Tween} tween Tween instance\n * @memberof TWEEN\n * @example\n * TWEEN.remove(tween)\n */\nconst remove = (tween) => {\n const i = _tweens.indexOf(tween)\n if (i !== -1) {\n _tweens.splice(i, 1)\n }\n}\n\n/**\n * Updates global tweens by given time\n * @param {number=} time Timestamp\n * @param {Boolean=} preserve Prevents tween to be removed after finish\n * @memberof TWEEN\n * @example\n * TWEEN.update(500)\n */\n\nconst update = (time = now(), preserve) => {\n if (emptyFrame >= powerModeThrottle) {\n isStarted = false\n emptyFrame = 0\n return false\n }\n\n if (_autoPlay && isStarted) {\n _ticker(update)\n } else {\n _requestTick()\n }\n\n if (!_tweens.length) {\n emptyFrame++\n }\n\n let i = 0\n let length = _tweens.length\n while (i < length) {\n _tweens[i++].update(time, preserve)\n\n if (length > _tweens.length) {\n // The tween has been removed, keep same index\n i--\n }\n\n length = _tweens.length\n }\n\n return true\n}\n\n/**\n * The state of ticker running\n * @return {Boolean} Status of running updates on all tweens\n * @memberof TWEEN\n * @example TWEEN.isRunning()\n */\nconst isRunning = () => isStarted\n\n/**\n * The plugins store object\n * @namespace TWEEN.Plugins\n * @memberof TWEEN\n * @example\n * let num = Plugins.num = function (node, start, end) {\n * return t => start + (end - start) * t\n * }\n *\n * @static\n */\nconst Plugins = {}\n\nexport {\n Plugins,\n get,\n has,\n getAll,\n removeAll,\n remove,\n add,\n now,\n update,\n autoPlay,\n onTick,\n onRequestTick,\n isRunning,\n FrameThrottle\n}\n","/**\n * List of full easings\n * @namespace TWEEN.Easing\n * @example\n * import {Tween, Easing} from 'es6-tween'\n *\n * // then set via new Tween({x:0}).to({x:100}, 1000).easing(Easing.Quadratic.InOut).start()\n */\nconst Easing = {\n Linear: {\n None (k) {\n return k\n }\n },\n\n Quadratic: {\n In (k) {\n return k * k\n },\n\n Out (k) {\n return k * (2 - k)\n },\n\n InOut (k) {\n if ((k *= 2) < 1) {\n return 0.5 * k * k\n }\n\n return -0.5 * (--k * (k - 2) - 1)\n }\n },\n\n Cubic: {\n In (k) {\n return k * k * k\n },\n\n Out (k) {\n return --k * k * k + 1\n },\n\n InOut (k) {\n if ((k *= 2) < 1) {\n return 0.5 * k * k * k\n }\n\n return 0.5 * ((k -= 2) * k * k + 2)\n }\n },\n\n Quartic: {\n In (k) {\n return k * k * k * k\n },\n\n Out (k) {\n return 1 - --k * k * k * k\n },\n\n InOut (k) {\n if ((k *= 2) < 1) {\n return 0.5 * k * k * k * k\n }\n\n return -0.5 * ((k -= 2) * k * k * k - 2)\n }\n },\n\n Quintic: {\n In (k) {\n return k * k * k * k * k\n },\n\n Out (k) {\n return --k * k * k * k * k + 1\n },\n\n InOut (k) {\n if ((k *= 2) < 1) {\n return 0.5 * k * k * k * k * k\n }\n\n return 0.5 * ((k -= 2) * k * k * k * k + 2)\n }\n },\n\n Sinusoidal: {\n In (k) {\n return 1 - Math.cos(k * Math.PI / 2)\n },\n\n Out (k) {\n return Math.sin(k * Math.PI / 2)\n },\n\n InOut (k) {\n return 0.5 * (1 - Math.cos(Math.PI * k))\n }\n },\n\n Exponential: {\n In (k) {\n return k === 0 ? 0 : Math.pow(1024, k - 1)\n },\n\n Out (k) {\n return k === 1 ? 1 : 1 - Math.pow(2, -10 * k)\n },\n\n InOut (k) {\n if (k === 0) {\n return 0\n }\n\n if (k === 1) {\n return 1\n }\n\n if ((k *= 2) < 1) {\n return 0.5 * Math.pow(1024, k - 1)\n }\n\n return 0.5 * (-Math.pow(2, -10 * (k - 1)) + 2)\n }\n },\n\n Circular: {\n In (k) {\n return 1 - Math.sqrt(1 - k * k)\n },\n\n Out (k) {\n return Math.sqrt(1 - --k * k)\n },\n\n InOut (k) {\n if ((k *= 2) < 1) {\n return -0.5 * (Math.sqrt(1 - k * k) - 1)\n }\n\n return 0.5 * (Math.sqrt(1 - (k -= 2) * k) + 1)\n }\n },\n\n Elastic: {\n In (k) {\n if (k === 0) {\n return 0\n }\n\n if (k === 1) {\n return 1\n }\n\n return -Math.pow(2, 10 * (k - 1)) * Math.sin((k - 1.1) * 5 * Math.PI)\n },\n\n Out (k) {\n if (k === 0) {\n return 0\n }\n\n if (k === 1) {\n return 1\n }\n\n return Math.pow(2, -10 * k) * Math.sin((k - 0.1) * 5 * Math.PI) + 1\n },\n\n InOut (k) {\n if (k === 0) {\n return 0\n }\n\n if (k === 1) {\n return 1\n }\n\n k *= 2\n\n if (k < 1) {\n return (\n -0.5 * Math.pow(2, 10 * (k - 1)) * Math.sin((k - 1.1) * 5 * Math.PI)\n )\n }\n\n return (\n 0.5 * Math.pow(2, -10 * (k - 1)) * Math.sin((k - 1.1) * 5 * Math.PI) + 1\n )\n }\n },\n\n Back: {\n In (k) {\n const s = 1.70158\n\n return k * k * ((s + 1) * k - s)\n },\n\n Out (k) {\n const s = 1.70158\n\n return --k * k * ((s + 1) * k + s) + 1\n },\n\n InOut (k) {\n const s = 1.70158 * 1.525\n\n if ((k *= 2) < 1) {\n return 0.5 * (k * k * ((s + 1) * k - s))\n }\n\n return 0.5 * ((k -= 2) * k * ((s + 1) * k + s) + 2)\n }\n },\n\n Bounce: {\n In (k) {\n return 1 - Easing.Bounce.Out(1 - k)\n },\n\n Out (k) {\n if (k < 1 / 2.75) {\n return 7.5625 * k * k\n } else if (k < 2 / 2.75) {\n return 7.5625 * (k -= 1.5 / 2.75) * k + 0.75\n } else if (k < 2.5 / 2.75) {\n return 7.5625 * (k -= 2.25 / 2.75) * k + 0.9375\n } else {\n return 7.5625 * (k -= 2.625 / 2.75) * k + 0.984375\n }\n },\n\n InOut (k) {\n if (k < 0.5) {\n return Easing.Bounce.In(k * 2) * 0.5\n }\n\n return Easing.Bounce.Out(k * 2 - 1) * 0.5 + 0.5\n }\n },\n\n Stepped: {\n steps: steps => k => ((k * steps) | 0) / steps\n }\n}\n\nexport default Easing\n","// Frame lag-fix constants\nexport const FRAME_MS = 50 / 3\nexport const TOO_LONG_FRAME_MS = 250\n\nexport const CHAINED_TWEENS = '_chainedTweens'\n\n// Event System\nexport const EVENT_CALLBACK = 'Callback'\nexport const EVENT_UPDATE = 'update'\nexport const EVENT_COMPLETE = 'complete'\nexport const EVENT_START = 'start'\nexport const EVENT_REPEAT = 'repeat'\nexport const EVENT_REVERSE = 'reverse'\nexport const EVENT_PAUSE = 'pause'\nexport const EVENT_PLAY = 'play'\nexport const EVENT_RESTART = 'restart'\nexport const EVENT_STOP = 'stop'\nexport const EVENT_SEEK = 'seek'\n\n// For String tweening stuffs\nexport const STRING_PROP = 'STRING_PROP'\n// Also RegExp's for string tweening\nexport const NUM_REGEX = /\\s+|([A-Za-z?().,{}:\"\"[\\]#%]+)|([-+]=+)?([-+]+)?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]=?\\d+)?/g\nexport const HEXC_REGEX = /^#([0-9a-f]{6}|[0-9a-f]{3})$/i\n\n// Copies everything, duplicates, no shallow-copy\nexport function deepCopy (source) {\n if ((source && source.nodeType) || source === undefined || typeof source !== 'object') {\n return source\n } else if (Array.isArray(source)) {\n return [].concat(source)\n } else if (typeof source === 'object') {\n let target = {}\n for (let prop in source) {\n target[prop] = deepCopy(source[prop])\n }\n return target\n }\n return source\n}\n\nconst isNaNForST = v =>\n isNaN(+v) || ((v[0] === '+' || v[0] === '-') && v[1] === '=') || v === '' || v === ' '\n\nconst hexColor = /^#([0-9a-f]{6}|[0-9a-f]{3})$/i\nconst hex2rgb = (all, hex) => {\n let r\n let g\n let b\n if (hex.length === 3) {\n r = hex[0]\n g = hex[1]\n b = hex[2]\n hex = r + r + g + g + b + b\n }\n let color = parseInt(hex, 16)\n r = color >> 16 & 255\n g = color >> 8 & 255\n b = color & 255\n return 'rgb(' + r + ',' + g + ',' + b + ')'\n}\n\nexport function decomposeString (fromValue) {\n return typeof fromValue !== 'string' ? fromValue : fromValue.replace(hexColor, hex2rgb).match(NUM_REGEX).map(v => (isNaNForST(v) ? v : +v))\n}\n\n// Decompose value, now for only `string` that required\nexport function decompose (prop, obj, from, to, stringBuffer) {\n const fromValue = from[prop]\n const toValue = to[prop]\n\n if (typeof fromValue === 'string' || typeof toValue === 'string') {\n let fromValue1 = Array.isArray(fromValue) && fromValue[0] === STRING_PROP ? fromValue : decomposeString(fromValue)\n let toValue1 = Array.isArray(toValue) && toValue[0] === STRING_PROP ? toValue : decomposeString(toValue)\n\n let i = 1\n while (i < fromValue1.length) {\n if (fromValue1[i] === toValue1[i] && typeof fromValue1[i - 1] === 'string') {\n fromValue1.splice(i - 1, 2, fromValue1[i - 1] + fromValue1[i])\n toValue1.splice(i - 1, 2, toValue1[i - 1] + toValue1[i])\n } else {\n i++\n }\n }\n\n i = 0\n\n if (fromValue1[0] === STRING_PROP) {\n fromValue1.shift()\n }\n if (toValue1[0] === STRING_PROP) {\n toValue1.shift()\n }\n\n let fromValue2 = {\n isString: true,\n length: fromValue1.length\n }\n let toValue2 = {\n isString: true,\n length: toValue1.length\n }\n\n while (i < fromValue2.length) {\n fromValue2[i] = fromValue1[i]\n toValue2[i] = toValue1[i]\n i++\n }\n\n from[prop] = fromValue2\n to[prop] = toValue2\n return true\n } else if (typeof fromValue === 'object' && typeof toValue === 'object') {\n if (Array.isArray(fromValue)) {\n return fromValue.map((v, i) =>\n decompose(i, obj[prop], fromValue, toValue)\n )\n } else {\n for (let prop2 in toValue) {\n decompose(prop2, obj[prop], fromValue, toValue)\n }\n }\n return true\n }\n return false\n}\n\n// Recompose value\nexport const DECIMAL = Math.pow(10, 4)\nexport const RGB = 'rgb('\nexport const RGBA = 'rgba('\n\nexport const isRGBColor = (v, i, r = RGB) =>\n typeof v[i] === 'number' &&\n (v[i - 1] === r || v[i - 3] === r || v[i - 5] === r)\nexport function recompose (prop, obj, from, to, t, originalT, stringBuffer) {\n const fromValue = stringBuffer ? from : from[prop]\n const toValue = stringBuffer ? to : to[prop]\n if (toValue === undefined) {\n return fromValue\n }\n if (\n fromValue === undefined ||\n typeof fromValue === 'string' ||\n fromValue === toValue\n ) {\n return toValue\n } else if (typeof fromValue === 'object' && typeof toValue === 'object') {\n if (!fromValue || !toValue) {\n return obj[prop]\n }\n if (typeof fromValue === 'object' && !!fromValue && fromValue.isString) {\n let STRING_BUFFER = ''\n for (let i = 0, len = fromValue.length; i < len; i++) {\n const isRelative = typeof fromValue[i] === 'number' && typeof toValue[i] === 'string' && toValue[i][1] === '='\n let currentValue =\n typeof fromValue[i] !== 'number'\n ? fromValue[i]\n : (((isRelative\n ? fromValue[i] +\n parseFloat(toValue[i][0] + toValue[i].substr(2)) * t\n : fromValue[i] + (toValue[i] - fromValue[i]) * t) *\n DECIMAL) |\n 0) /\n DECIMAL\n if (isRGBColor(fromValue, i) || isRGBColor(fromValue, i, RGBA)) {\n currentValue |= 0\n }\n STRING_BUFFER += currentValue\n if (isRelative && originalT === 1) {\n fromValue[i] =\n fromValue[i] +\n parseFloat(toValue[i][0] + toValue[i].substr(2))\n }\n }\n if (!stringBuffer) {\n obj[prop] = STRING_BUFFER\n }\n return STRING_BUFFER\n } else if (Array.isArray(fromValue) && fromValue[0] !== STRING_PROP) {\n for (let i = 0, len = fromValue.length; i < len; i++) {\n if (fromValue[i] === toValue[i]) {\n continue\n }\n recompose(i, obj[prop], fromValue, toValue, t, originalT)\n }\n } else if (typeof fromValue === 'object' && !!fromValue && !fromValue.isString) {\n for (let i in fromValue) {\n if (fromValue[i] === toValue[i]) {\n continue\n }\n recompose(i, obj[prop], fromValue, toValue, t, originalT)\n }\n }\n } else if (typeof fromValue === 'number') {\n const isRelative = typeof toValue === 'string'\n obj[prop] =\n (((isRelative\n ? fromValue + parseFloat(toValue[0] + toValue.substr(2)) * t\n : fromValue + (toValue - fromValue) * t) *\n DECIMAL) |\n 0) /\n DECIMAL\n if (isRelative && originalT === 1) {\n from[prop] = obj[prop]\n }\n } else if (typeof toValue === 'function') {\n obj[prop] = toValue(t)\n }\n return obj[prop]\n}\n\n// Dot notation => Object structure converter\n// example\n// {'scale.x.y.z':'VALUE'} => {scale:{x:{y:{z:'VALUE'}}}}\n// Only works for 3-level parsing, after 3-level, parsing dot-notation not works as it's not affects\nconst propRegExp = /([.[])/g\nconst replaceBrace = /\\]/g\nconst propExtract = function (obj, property) {\n const value = obj[property]\n const props = property.replace(replaceBrace, '').split(propRegExp)\n const propsLastIndex = props.length - 1\n let lastArr = Array.isArray(obj)\n let lastObj = typeof obj === 'object' && !lastArr\n if (lastObj) {\n obj[property] = null\n delete obj[property]\n } else if (lastArr) {\n obj.splice(property, 1)\n }\n return props.reduce((nested, prop, index) => {\n if (lastArr) {\n if (prop !== '.' && prop !== '[') {\n prop *= 1\n }\n }\n let nextProp = props[index + 1]\n let nextIsArray = nextProp === '['\n if (prop === '.' || prop === '[') {\n if (prop === '.') {\n lastObj = true\n lastArr = false\n } else if (prop === '[') {\n lastObj = false\n lastArr = true\n }\n return nested\n } else if (nested[prop] === undefined) {\n if (lastArr || lastObj) {\n nested[prop] =\n index === propsLastIndex\n ? value\n : lastArr || nextIsArray ? [] : lastObj ? {} : null\n lastObj = lastArr = false\n return nested[prop]\n }\n } else if (nested[prop] !== undefined) {\n if (index === propsLastIndex) {\n nested[prop] = value\n }\n return nested[prop]\n }\n return nested\n }, obj)\n}\n\nexport const SET_NESTED = function (nested) {\n if (typeof nested === 'object' && !!nested) {\n for (let prop in nested) {\n if (prop.indexOf('.') !== -1 || prop.indexOf('[') !== -1) {\n propExtract(nested, prop)\n } else if (typeof nested[prop] === 'object' && !!nested[prop]) {\n let nested2 = nested[prop]\n for (let prop2 in nested2) {\n if (prop2.indexOf('.') !== -1 || prop2.indexOf('[') !== -1) {\n propExtract(nested2, prop2)\n } else if (typeof nested2[prop2] === 'object' && !!nested2[prop2]) {\n let nested3 = nested2[prop2]\n for (let prop3 in nested3) {\n if (prop3.indexOf('.') !== -1 || prop3.indexOf('[') !== -1) {\n propExtract(nested3, prop3)\n }\n }\n }\n }\n }\n }\n }\n return nested\n}\n","import { isRGBColor, RGBA, STRING_PROP } from './constants'\n\n/**\n * List of full Interpolation\n * @namespace TWEEN.Interpolation\n * @example\n * import {Interpolation, Tween} from 'es6-tween'\n *\n * let bezier = Interpolation.Bezier\n * new Tween({x:0}).to({x:[0, 4, 8, 12, 15, 20, 30, 40, 20, 40, 10, 50]}, 1000).interpolation(bezier).start()\n * @memberof TWEEN\n */\nconst Interpolation = {\n Linear (v, k, value) {\n const m = v.length - 1\n const f = m * k\n const i = Math.floor(f)\n const fn = Interpolation.Utils.Linear\n if (k < 0) {\n return fn(v[0], v[1], f, value)\n }\n if (k > 1) {\n return fn(v[m], v[m - 1], m - f, value)\n }\n return fn(v[i], v[i + 1 > m ? m : i + 1], f - i, value)\n },\n\n Bezier (v, k, value) {\n let b = Interpolation.Utils.Reset(value)\n let n = v.length - 1\n let pw = Math.pow\n let fn = Interpolation.Utils.Bernstein\n\n let isBArray = Array.isArray(b)\n\n for (let i = 0; i <= n; i++) {\n if (typeof b === 'number') {\n b += pw(1 - k, n - i) * pw(k, i) * v[i] * fn(n, i)\n } else if (isBArray) {\n for (let p = 0, len = b.length; p < len; p++) {\n if (typeof b[p] === 'number') {\n b[p] += pw(1 - k, n - i) * pw(k, i) * v[i][p] * fn(n, i)\n } else {\n b[p] = v[i][p]\n }\n }\n } else if (typeof b === 'object') {\n for (let p in b) {\n if (typeof b[p] === 'number') {\n b[p] += pw(1 - k, n - i) * pw(k, i) * v[i][p] * fn(n, i)\n } else {\n b[p] = v[i][p]\n }\n }\n } else if (typeof b === 'string') {\n let STRING_BUFFER = ''\n let idx = Math.round(n * k)\n let vCurr = v[idx]\n for (let ks = 1, len = vCurr.length; ks < len; ks++) {\n STRING_BUFFER += vCurr[ks]\n }\n return STRING_BUFFER\n }\n }\n\n return b\n },\n\n CatmullRom (v, k, value) {\n const m = v.length - 1\n let f = m * k\n let i = Math.floor(f)\n const fn = Interpolation.Utils.CatmullRom\n\n if (v[0] === v[m]) {\n if (k < 0) {\n i = Math.floor((f = m * (1 + k)))\n }\n\n return fn(\n v[(i - 1 + m) % m],\n v[i],\n v[(i + 1) % m],\n v[(i + 2) % m],\n f - i,\n value\n )\n } else {\n if (k < 0) {\n return fn(v[1], v[1], v[0], v[0], -k, value)\n }\n\n if (k > 1) {\n return fn(v[m - 1], v[m - 1], v[m], v[m], (k | 0) - k, value)\n }\n\n return fn(\n v[i ? i - 1 : 0],\n v[i],\n v[m < i + 1 ? m : i + 1],\n v[m < i + 2 ? m : i + 2],\n f - i,\n value\n )\n }\n },\n\n Utils: {\n Linear (p0, p1, t, v) {\n if (typeof p0 === 'string') {\n return p1\n } else if (typeof p0 === 'number') {\n return typeof p0 === 'function' ? p0(t) : p0 + (p1 - p0) * t\n } else if (typeof p0 === 'object') {\n if (p0.length !== undefined) {\n if (p0[0] === STRING_PROP) {\n let STRING_BUFFER = ''\n for (let i = 1, len = p0.length; i < len; i++) {\n let currentValue =\n typeof p0[i] === 'number' ? p0[i] + (p1[i] - p0[i]) * t : p1[i]\n if (isRGBColor(p0, i) || isRGBColor(p0, i, RGBA)) {\n currentValue |= 0\n }\n STRING_BUFFER += currentValue\n }\n return STRING_BUFFER\n }\n for (let p = 0, len = v.length; p < len; p++) {\n v[p] = Interpolation.Utils.Linear(p0[p], p1[p], t, v[p])\n }\n } else {\n for (const p in v) {\n v[p] = Interpolation.Utils.Linear(p0[p], p1[p], t, v[p])\n }\n }\n return v\n }\n },\n\n Reset (value) {\n if (Array.isArray(value)) {\n for (let i = 0, len = value.length; i < len; i++) {\n value[i] = Interpolation.Utils.Reset(value[i])\n }\n return value\n } else if (typeof value === 'object') {\n for (let i in value) {\n value[i] = Interpolation.Utils.Reset(value[i])\n }\n return value\n } else if (typeof value === 'number') {\n return 0\n }\n return value\n },\n\n Bernstein (n, i) {\n const fc = Interpolation.Utils.Factorial\n\n return fc(n) / fc(i) / fc(n - i)\n },\n\n Factorial: (function () {\n const a = [1]\n\n return n => {\n let s = 1\n\n if (a[n]) {\n return a[n]\n }\n\n for (let i = n; i > 1; i--) {\n s *= i\n }\n\n a[n] = s\n return s\n }\n })(),\n\n CatmullRom (p0, p1, p2, p3, t, v) {\n if (typeof p0 === 'string') {\n return p1\n } else if (typeof p0 === 'number') {\n const v0 = (p2 - p0) * 0.5\n const v1 = (p3 - p1) * 0.5\n const t2 = t * t\n const t3 = t * t2\n\n return (\n (2 * p1 - 2 * p2 + v0 + v1) * t3 +\n (-3 * p1 + 3 * p2 - 2 * v0 - v1) * t2 +\n v0 * t +\n p1\n )\n } else if (typeof p0 === 'object') {\n if (p0.length !== undefined) {\n if (p0[0] === STRING_PROP) {\n let STRING_BUFFER = ''\n for (let i = 1, len = p0.length; i < len; i++) {\n let currentValue =\n typeof p0[i] === 'number'\n ? Interpolation.Utils.CatmullRom(\n p0[i],\n p1[i],\n p2[i],\n p3[i],\n t\n )\n : p3[i]\n if (isRGBColor(p0, i) || isRGBColor(p0, i, RGBA)) {\n currentValue |= 0\n }\n STRING_BUFFER += currentValue\n }\n return STRING_BUFFER\n }\n for (let p = 0, len = v.length; p < len; p++) {\n v[p] = Interpolation.Utils.CatmullRom(\n p0[p],\n p1[p],\n p2[p],\n p3[p],\n t,\n v[p]\n )\n }\n } else {\n for (const p in v) {\n v[p] = Interpolation.Utils.CatmullRom(\n p0[p],\n p1[p],\n p2[p],\n p3[p],\n t,\n v[p]\n )\n }\n }\n return v\n }\n }\n }\n}\n\nexport default Interpolation\n","import {\n remove\n} from './core'\n\nexport const Store = {}\nexport default function (node, object, tween) {\n if (!node || !node.nodeType) {\n return object\n }\n const ID = node.queueID || 'q_' + Date.now()\n if (!node.queueID) {\n node.queueID = ID\n }\n const storeID = Store[ID]\n if (storeID) {\n if (\n storeID.object === object &&\n node === storeID.tween.node &&\n tween._startTime === storeID.tween._startTime\n ) {\n remove(storeID.tween)\n } else if (typeof object === 'object' && !!object && !!storeID.object) {\n for (let prop in object) {\n if (prop in storeID.object) {\n if (tween._startTime === storeID.tween._startTime) {\n delete storeID.object[prop]\n } else {\n storeID.propNormaliseRequired = true\n }\n }\n }\n storeID.object = { ...storeID.object,\n ...object\n }\n }\n return storeID.object\n }\n\n if (typeof object === 'object' && !!object) {\n Store[ID] = {\n tween,\n object,\n propNormaliseRequired: false\n }\n return Store[ID].object\n }\n\n return object\n}\n","export default function (selector, collection) {\n if (collection) {\n return !selector\n ? null\n : selector === window || selector === document\n ? [selector]\n : typeof selector === 'string'\n ? !!document.querySelectorAll && document.querySelectorAll(selector)\n : Array.isArray(selector)\n ? selector\n : selector.nodeType ? [selector] : []\n }\n return !selector\n ? null\n : selector === window || selector === document\n ? selector\n : typeof selector === 'string'\n ? !!document.querySelector && document.querySelector(selector)\n : Array.isArray(selector)\n ? selector[0]\n : selector.nodeType ? selector : null\n}\n","import {\n add,\n now,\n Plugins,\n remove\n} from './core'\nimport Easing from './Easing'\nimport Interpolation from './Interpolation'\nimport NodeCache, {\n Store\n} from './NodeCache'\nimport Selector from './selector'\nimport {\n decompose,\n decomposeString,\n recompose,\n deepCopy,\n SET_NESTED,\n EVENT_CALLBACK,\n CHAINED_TWEENS,\n EVENT_UPDATE,\n EVENT_COMPLETE,\n EVENT_START,\n EVENT_REPEAT,\n EVENT_REVERSE,\n EVENT_PAUSE,\n EVENT_PLAY,\n EVENT_RESTART,\n EVENT_STOP,\n EVENT_SEEK,\n FRAME_MS,\n TOO_LONG_FRAME_MS\n} from './constants'\n\nlet _id = 0 // Unique ID\nconst defaultEasing = Easing.Linear.None\n\n/**\n * Tween main constructor\n * @constructor\n * @class\n * @namespace TWEEN.Tween\n * @param {Object|Element} node Node Element or Tween initial object\n * @param {Object=} object If Node Element is using, second argument is used for Tween initial object\n * @example let tween = new Tween(myNode, {width:'100px'}).to({width:'300px'}, 2000).start()\n */\nclass Tween {\n /**\n * Easier way to call the Tween\n * @param {Element} node DOM Element\n * @param {object} object - Initial value\n * @param {object} to - Target value\n * @param {object} params - Options of tweens\n * @example Tween.fromTo(node, {x:0}, {x:200}, {duration:1000})\n * @memberof TWEEN.Tween\n * @static\n */\n static fromTo (node, object, to, params = {}) {\n params.quickRender = params.quickRender ? params.quickRender : !to\n const tween = new Tween(node, object).to(to, params)\n if (params.quickRender) {\n tween.render().update(tween._startTime)\n tween._rendered = false\n tween._onStartCallbackFired = false\n }\n return tween\n }\n /**\n * Easier way calling constructor only applies the `to` value, useful for CSS Animation\n * @param {Element} node DOM Element\n * @param {object} to - Target value\n * @param {object} params - Options of tweens\n * @example Tween.to(node, {x:200}, {duration:1000})\n * @memberof TWEEN.Tween\n * @static\n */\n static to (node, to, params) {\n return Tween.fromTo(node, null, to, params)\n }\n /**\n * Easier way calling constructor only applies the `from` value, useful for CSS Animation\n * @param {Element} node DOM Element\n * @param {object} from - Initial value\n * @param {object} params - Options of tweens\n * @example Tween.from(node, {x:200}, {duration:1000})\n * @memberof TWEEN.Tween\n * @static\n */\n static from (node, from, params) {\n return Tween.fromTo(node, from, null, params)\n }\n constructor (node, object) {\n this.id = _id++\n if (!!node && typeof node === 'object' && !object && !node.nodeType) {\n object = this.object = node\n node = null\n } else if (!!node &&\n (node.nodeType || node.length || typeof node === 'string')\n ) {\n node = this.node = Selector(node)\n object = this.object = NodeCache(node, object, this)\n }\n this._valuesEnd = null\n this._valuesStart = {}\n\n this._duration = 1000\n this._easingFunction = defaultEasing\n this._easingReverse = defaultEasing\n this._interpolationFunction = Interpolation.Linear\n\n this._startTime = 0\n this._initTime = 0\n this._delayTime = 0\n this._repeat = 0\n this._r = 0\n this._isPlaying = false\n this._yoyo = false\n this._reversed = false\n\n this._onStartCallbackFired = false\n this._pausedTime = null\n this._isFinite = true\n this._maxListener = 15\n this._chainedTweensCount = 0\n this._prevTime = null\n\n return this\n }\n\n /**\n * Sets max `event` listener's count to Events system\n * @param {number} count - Event listener's count\n * @memberof TWEEN.Tween\n */\n setMaxListener (count = 15) {\n this._maxListener = count\n return this\n }\n\n /**\n * Adds `event` to Events system\n * @param {string} event - Event listener name\n * @param {Function} callback - Event listener callback\n * @memberof TWEEN.Tween\n */\n on (event, callback) {\n const {\n _maxListener\n } = this\n const callbackName = event + EVENT_CALLBACK\n for (let i = 0; i < _maxListener; i++) {\n const callbackId = callbackName + i\n if (!this[callbackId]) {\n this[callbackId] = callback\n break\n }\n }\n return this\n }\n\n /**\n * Adds `event` to Events system.\n * Removes itself after fired once\n * @param {string} event - Event listener name\n * @param {Function} callback - Event listener callback\n * @memberof TWEEN.Tween\n */\n once (event, callback) {\n const {\n _maxListener\n } = this\n const callbackName = event + EVENT_CALLBACK\n for (let i = 0; i < _maxListener; i++) {\n const callbackId = callbackName + i\n if (!this[callbackId]) {\n this[callbackId] = (...args) => {\n callback.apply(this, args)\n this[callbackId] = null\n }\n break\n }\n }\n return this\n }\n\n /**\n * Removes `event` from Events system\n * @param {string} event - Event listener name\n * @param {Function} callback - Event listener callback\n * @memberof TWEEN.Tween\n */\n off (event, callback) {\n const {\n _maxListener\n } = this\n const callbackName = event + EVENT_CALLBACK\n for (let i = 0; i < _maxListener; i++) {\n const callbackId = callbackName + i\n if (this[callbackId] === callback) {\n this[callbackId] = null\n }\n }\n return this\n }\n\n /**\n * Emits/Fired/Trigger `event` from Events system listeners\n * @param {string} event - Event listener name\n * @memberof TWEEN.Tween\n */\n emit (event, arg1, arg2, arg3, arg4) {\n const {\n _maxListener\n } = this\n const callbackName = event + EVENT_CALLBACK\n\n if (!this[callbackName + 0]) {\n return this\n }\n for (let i = 0; i < _maxListener; i++) {\n const callbackId = callbackName + i\n if (this[callbackId]) {\n this[callbackId](arg1, arg2, arg3, arg4)\n }\n }\n return this\n }\n\n /**\n * @return {boolean} State of playing of tween\n * @example tween.isPlaying() // returns `true` if tween in progress\n * @memberof TWEEN.Tween\n */\n isPlaying () {\n return this._isPlaying\n }\n\n /**\n * @return {boolean} State of started of tween\n * @example tween.isStarted() // returns `true` if tween in started\n * @memberof TWEEN.Tween\n */\n isStarted () {\n return this._onStartCallbackFired\n }\n\n /**\n * Reverses the tween state/direction\n * @example tween.reverse()\n * @param {boolean=} state Set state of current reverse\n * @memberof TWEEN.Tween\n */\n reverse (state) {\n const {\n _reversed\n } = this\n\n this._reversed = state !== undefined ? state : !_reversed\n\n return this\n }\n\n /**\n * @return {boolean} State of reversed\n * @example tween.reversed() // returns `true` if tween in reversed state\n * @memberof TWEEN.Tween\n */\n reversed () {\n return this._reversed\n }\n\n /**\n * Pauses tween\n * @example tween.pause()\n * @memberof TWEEN.Tween\n */\n pause () {\n if (!this._isPlaying) {\n return this\n }\n\n this._isPlaying = false\n\n remove(this)\n this._pausedTime = now()\n\n return this.emit(EVENT_PAUSE, this.object)\n }\n\n /**\n * Play/Resume the tween\n * @example tween.play()\n * @memberof TWEEN.Tween\n */\n play () {\n if (this._isPlaying) {\n return this\n }\n\n this._isPlaying = true\n\n this._startTime += now() - this._pausedTime\n this._initTime = this._startTime\n add(this)\n this._pausedTime = now()\n\n return this.emit(EVENT_PLAY, this.object)\n }\n\n /**\n * Restarts tween from initial value\n * @param {boolean=} noDelay If this param is set to `true`, restarts tween without `delay`\n * @example tween.restart()\n * @memberof TWEEN.Tween\n */\n restart (noDelay) {\n this._repeat = this._r\n this.reassignValues()\n\n add(this)\n\n return this.emit(EVENT_RESTART, this.object)\n }\n\n /**\n * Seek tween value by `time`. Note: Not works as excepted. PR are welcome\n * @param {Time} time Tween update time\n * @param {boolean=} keepPlaying When this param is set to `false`, tween pausing after seek\n * @example tween.seek(500)\n * @memberof TWEEN.Tween\n * @deprecated Not works as excepted, so we deprecated this method\n */\n seek (time, keepPlaying) {\n const {\n _duration,\n _initTime,\n _startTime,\n _reversed\n } = this\n\n let updateTime = _initTime + time\n this._isPlaying = true\n\n if (updateTime < _startTime && _startTime >= _initTime) {\n this._startTime -= _duration\n this._reversed = !_reversed\n }\n\n this.update(time, false)\n\n this.emit(EVENT_SEEK, time, this.object)\n\n return keepPlaying ? this : this.pause()\n }\n\n /**\n * Sets tween duration\n * @param {number} amount Duration is milliseconds\n * @example tween.duration(2000)\n * @memberof TWEEN.Tween\n */\n duration (amount) {\n this._duration =\n typeof amount === 'function' ? amount(this._duration) : amount\n\n return this\n }\n\n /**\n * Sets target value and duration\n * @param {object} properties Target value (to value)\n * @param {number|Object=} [duration=1000] Duration of tween\n * @example let tween = new Tween({x:0}).to({x:100}, 2000)\n * @memberof TWEEN.Tween\n */\n to (properties, duration = 1000, maybeUsed) {\n this._valuesEnd = properties\n\n if (typeof duration === 'number' || typeof duration === 'function') {\n this._duration =\n typeof duration === 'function' ? duration(this._duration) : duration\n } else if (typeof duration === 'object') {\n for (const prop in duration) {\n if (typeof this[prop] === 'function') {\n const [\n arg1 = null,\n arg2 = null,\n arg3 = null,\n arg4 = null\n ] = Array.isArray(duration[prop]) ? duration[prop] : [duration[prop]]\n this[prop](arg1, arg2, arg3, arg4)\n }\n }\n }\n\n return this\n }\n\n /**\n * Renders and computes value at first render\n * @private\n * @memberof TWEEN.Tween\n */\n render () {\n if (this._rendered) {\n return this\n }\n let {\n _valuesStart,\n _valuesEnd,\n object,\n node,\n InitialValues\n } = this\n\n SET_NESTED(object)\n SET_NESTED(_valuesEnd)\n\n if (node && node.queueID && Store[node.queueID]) {\n const prevTweenByNode = Store[node.queueID]\n if (\n prevTweenByNode.propNormaliseRequired &&\n prevTweenByNode.tween !== this\n ) {\n for (const property in _valuesEnd) {\n if (prevTweenByNode.tween._valuesEnd[property] !== undefined) {\n // delete prevTweenByNode.tween._valuesEnd[property];\n }\n }\n prevTweenByNode.normalisedProp = true\n prevTweenByNode.propNormaliseRequired = false\n }\n }\n\n if (node && InitialValues) {\n if (!object || Object.keys(object).length === 0) {\n object = this.object = NodeCache(\n node,\n InitialValues(node, _valuesEnd),\n this\n )\n } else if (!_valuesEnd || Object.keys(_valuesEnd).length === 0) {\n _valuesEnd = this._valuesEnd = InitialValues(node, object)\n }\n }\n for (const property in _valuesEnd) {\n let start = object && object[property] && deepCopy(object[property])\n let end = _valuesEnd[property]\n if (Plugins[property] && Plugins[property].init) {\n Plugins[property].init.call(this, start, end, property, object)\n if (start === undefined && _valuesStart[property]) {\n start = _valuesStart[property]\n }\n if (Plugins[property].skipProcess) {\n continue\n }\n }\n if (\n (typeof start === 'number' && isNaN(start)) ||\n start === null ||\n end === null ||\n start === false ||\n end === false ||\n start === undefined ||\n end === undefined ||\n start === end\n ) {\n continue\n }\n if (Array.isArray(end) && !Array.isArray(start)) {\n end.unshift(start)\n for (let i = 0, len = end.length; i < len; i++) {\n if (typeof end[i] === 'string') {\n let arrayOfStrings = decomposeString(end[i])\n let stringObject = {\n length: arrayOfStrings.length,\n isString: true\n }\n for (let ii = 0, len2 = arrayOfStrings.length; ii < len2; ii++) {\n stringObject[ii] = arrayOfStrings[ii]\n }\n end[i] = stringObject\n }\n }\n }\n _valuesStart[property] = start\n if (typeof start === 'number' && typeof end === 'string' && end[1] === '=') {\n continue\n }\n decompose(property, object, _valuesStart, _valuesEnd)\n }\n\n if (Tween.Renderer && this.node && Tween.Renderer.init) {\n Tween.Renderer.init.call(this, object, _valuesStart, _valuesEnd)\n this.__render = true\n }\n\n return this\n }\n\n /**\n * Start the tweening\n * @param {number|string} time setting manual time instead of Current browser timestamp or like `+1000` relative to current timestamp\n * @example tween.start()\n * @memberof TWEEN.Tween\n */\n start (time) {\n this._startTime =\n time !== undefined\n ? typeof time === 'string' ? now() + parseFloat(time) : time\n : now()\n this._startTime += this._delayTime\n this._initTime = this._prevTime = this._startTime\n\n this._onStartCallbackFired = false\n this._rendered = false\n this._isPlaying = true\n\n add(this)\n\n return this\n }\n\n /**\n * Stops the tween\n * @example tween.stop()\n * @memberof TWEEN.Tween\n */\n stop () {\n let {\n _isPlaying,\n _isFinite,\n object,\n _startTime,\n _duration,\n _r,\n _yoyo,\n _reversed\n } = this\n\n if (!_isPlaying) {\n return this\n }\n\n let atStart = _isFinite ? (_r + 1) % 2 === 1 : !_reversed\n\n this._reversed = false\n\n if (_yoyo && atStart) {\n this.update(_startTime)\n } else {\n this.update(_startTime + _duration)\n }\n remove(this)\n\n return this.emit(EVENT_STOP, object)\n }\n\n /**\n * Set delay of tween\n * @param {number} amount Sets tween delay / wait duration\n * @example tween.delay(500)\n * @memberof TWEEN.Tween\n */\n delay (amount) {\n this._delayTime =\n typeof amount === 'function' ? amount(this._delayTime) : amount\n\n return this\n }\n\n /**\n * Chained tweens\n * @param {any} arguments Arguments list\n * @example tween.chainedTweens(tween1, tween2)\n * @memberof TWEEN.Tween\n */\n chainedTweens () {\n this._chainedTweensCount = arguments.length\n if (!this._chainedTweensCount) {\n return this\n }\n for (let i = 0, len = this._chainedTweensCount; i < len; i++) {\n this[CHAINED_TWEENS + i] = arguments[i]\n }\n\n return this\n }\n\n /**\n * Sets how times tween is repeating\n * @param {amount} amount the times of repeat\n * @example tween.repeat(5)\n * @memberof TWEEN.Tween\n */\n repeat (amount) {\n this._repeat = !this._duration\n ? 0\n : typeof amount === 'function' ? amount(this._repeat) : amount\n this._r = this._repeat\n this._isFinite = isFinite(amount)\n\n return this\n }\n\n /**\n * Set delay of each repeat alternate of tween\n * @param {number} amount Sets tween repeat alternate delay / repeat alternate wait duration\n * @example tween.reverseDelay(500)\n * @memberof TWEEN.Tween\n */\n reverseDelay (amount) {\n this._reverseDelayTime =\n typeof amount === 'function' ? amount(this._reverseDelayTime) : amount\n\n return this\n }\n\n /**\n * Set `yoyo` state (enables reverse in repeat)\n * @param {boolean} state Enables alternate direction for repeat\n * @param {Function=} _easingReverse Easing function in reverse direction\n * @example tween.yoyo(true)\n * @memberof TWEEN.Tween\n */\n yoyo (state, _easingReverse) {\n this._yoyo =\n typeof state === 'function'\n ? state(this._yoyo)\n : state === null ? this._yoyo : state\n if (!state) {\n this._reversed = false\n }\n this._easingReverse = _easingReverse || null\n\n return this\n }\n\n /**\n * Set easing\n * @param {Function} _easingFunction Easing function, applies in non-reverse direction if Tween#yoyo second argument is applied\n * @example tween.easing(Easing.Elastic.InOut)\n * @memberof TWEEN.Tween\n */\n easing (_easingFunction) {\n this._easingFunction = _easingFunction\n\n return this\n }\n\n /**\n * Set interpolation\n * @param {Function} _interpolationFunction Interpolation function\n * @example tween.interpolation(Interpolation.Bezier)\n * @memberof TWEEN.Tween\n */\n interpolation (_interpolationFunction) {\n if (typeof _interpolationFunction === 'function') {\n this._interpolationFunction = _interpolationFunction\n }\n\n return this\n }\n\n /**\n * Reassigns value for rare-case like Tween#restart or for Timeline\n * @private\n * @memberof TWEEN.Tween\n */\n reassignValues (time) {\n const {\n _valuesStart,\n object,\n _delayTime\n } = this\n\n this._isPlaying = true\n this._startTime = time !== undefined ? time : now()\n this._startTime += _delayTime\n this._reversed = false\n add(this)\n\n for (const property in _valuesStart) {\n const start = _valuesStart[property]\n\n object[property] = start\n }\n\n return this\n }\n\n /**\n * Updates initial object to target value by given `time`\n * @param {Time} time Current time\n * @param {boolean=} preserve Prevents from removing tween from store\n * @param {boolean=} forceTime Forces to be frame rendered, even mismatching time\n * @example tween.update(100)\n * @memberof TWEEN.Tween\n */\n update (time, preserve, forceTime) {\n let {\n _onStartCallbackFired,\n _easingFunction,\n _interpolationFunction,\n _easingReverse,\n _repeat,\n _delayTime,\n _reverseDelayTime,\n _yoyo,\n _reversed,\n _startTime,\n _prevTime,\n _duration,\n _valuesStart,\n _valuesEnd,\n object,\n _isFinite,\n _isPlaying,\n __render,\n _chainedTweensCount\n } = this\n\n let elapsed\n let currentEasing\n let property\n let propCount = 0\n\n if (!_duration) {\n elapsed = 1\n _repeat = 0\n } else {\n time = time !== undefined ? time : now()\n\n let delta = time - _prevTime\n this._prevTime = time\n if (delta > TOO_LONG_FRAME_MS) {\n time -= delta - FRAME_MS\n }\n\n if (!_isPlaying || (time < _startTime && !forceTime)) {\n return true\n }\n\n elapsed = (time - _startTime) / _duration\n elapsed = elapsed > 1 ? 1 : elapsed\n elapsed = _reversed ? 1 - elapsed : elapsed\n }\n\n if (!_onStartCallbackFired) {\n if (!this._rendered) {\n this.render()\n this._rendered = true\n }\n\n this.emit(EVENT_START, object)\n\n this._onStartCallbackFired = true\n }\n\n currentEasing = _reversed\n ? _easingReverse || _easingFunction\n : _easingFunction\n\n if (!object) {\n return true\n }\n\n for (property in _valuesEnd) {\n const start = _valuesStart[property]\n if (\n (start === undefined || start === null) &&\n !(Plugins[property] && Plugins[property].update)\n ) {\n continue\n }\n const end = _valuesEnd[property]\n const value = currentEasing[property]\n ? currentEasing[property](elapsed)\n : typeof currentEasing === 'function'\n ? currentEasing(elapsed)\n : defaultEasing(elapsed)\n const _interpolationFunctionCall = _interpolationFunction[property]\n ? _interpolationFunction[property]\n : typeof _interpolationFunction === 'function'\n ? _interpolationFunction\n : Interpolation.Linear\n\n if (typeof end === 'number') {\n object[property] = start + (end - start) * value\n } else if (Array.isArray(end) && !Array.isArray(start)) {\n object[property] = _interpolationFunctionCall(\n end,\n value,\n object[property]\n )\n } else if (end && end.update) {\n end.update(value)\n } else if (typeof end === 'function') {\n object[property] = end(value)\n } else if (typeof end === 'string' && typeof start === 'number') {\n object[property] = start + parseFloat(end[0] + end.substr(2)) * value\n } else {\n recompose(property, object, _valuesStart, _valuesEnd, value, elapsed)\n }\n if (Plugins[property] && Plugins[property].update) {\n Plugins[property].update.call(\n this,\n object[property],\n start,\n end,\n value,\n elapsed,\n property\n )\n }\n propCount++\n }\n\n if (!propCount) {\n remove(this)\n return false\n }\n\n if (__render && Tween.Renderer && Tween.Renderer.update) {\n Tween.Renderer.update.call(this, object, elapsed)\n }\n\n this.emit(EVENT_UPDATE, object, elapsed, time)\n\n if (elapsed === 1 || (_reversed && elapsed === 0)) {\n if (_repeat > 0 && _duration > 0) {\n if (_isFinite) {\n this._repeat--\n }\n\n if (_yoyo) {\n this._reversed = !_reversed\n } else {\n for (property in _valuesEnd) {\n let end = _valuesEnd[property]\n if (typeof end === 'string' && typeof _valuesStart[property] === 'number') {\n _valuesStart[property] += parseFloat(end[0] + end.substr(2))\n }\n }\n }\n\n this.emit(_yoyo && !_reversed ? EVENT_REVERSE : EVENT_REPEAT, object)\n\n if (_reversed && _reverseDelayTime) {\n this._startTime = time - _reverseDelayTime\n } else {\n this._startTime = time + _delayTime\n }\n\n return true\n } else {\n if (!preserve) {\n this._isPlaying = false\n remove(this)\n _id--\n }\n this.emit(EVENT_COMPLETE, object)\n this._repeat = this._r\n\n if (_chainedTweensCount) {\n for (let i = 0; i < _chainedTweensCount; i++) {\n this[CHAINED_TWEENS + i].start(time + _duration)\n }\n }\n\n return false\n }\n }\n\n return true\n }\n}\n\nexport default Tween\n","import El from 'el.js/src'\nimport Events from '../events'\n\nimport valueOrCall from '../utils/valueOrCall'\nimport { Tween, Easing, autoPlay } from 'es6-tween/src/index'\n\nscrolling = false\n\n_controlId = 0\n\nexport default class Control extends El.Input\n _controlId: 0\n\n # scrollToError: false\n\n name: null\n\n init: ->\n super arguments...\n @_controlId = _controlId++\n\n getId: () ->\n return @tag + '-' + @_controlId\n\n getName: () ->\n return valueOrCall(@name) ? @input.name.replace /\\\\./g, '-'\n\n getValue: (event) ->\n return event.target.value?.trim()\n\n error: (err) ->\n if err instanceof DOMException\n console.log 'WARNING: Error in riot dom manipulation ignored:', err\n return\n\n super arguments...\n\n rect = @root.getBoundingClientRect()\n elTop = rect.top - window.innerHeight / 2\n wTop = window.pageYOffset\n\n if @scrollToError && !scrolling && elTop <= wTop\n scrolling = true\n\n autoPlay true\n\n t = new Tween { x: wTop }\n .to { x: wTop + elTop }, 500, Easing.Cubic\n .on 'update', ({ x })->\n window.scrollTo window.pageXOffset, x\n .on 'complete', ->\n scrolling = false\n autoPlay false\n .start()\n\n @mediator.trigger Events.ChangeFailed, @input.name, @input.ref.get @input.name\n\n change: ->\n super arguments...\n @mediator.trigger Events.Change, @input.name, @input.ref.get @input.name\n\n changed: (value) ->\n @mediator.trigger Events.ChangeSuccess, @input.name, value\n El.scheduleUpdate()\n\n value: ->\n return @input.ref @input.name\n","import Control from './control'\n\nimport html from '../../templates/controls/checkbox'\n\nexport default class CheckBox extends Control\n tag: 'checkbox'\n html: html\n\n getValue: (event)->\n return event.target.checked\n\nCheckBox.register()\n\n","# contains parts of Input Placeholder Polyfill\n# MIT Licensed\n# Created by Christopher Rolfe\n\n#\n# When the input value is the same as the placeholder clear it\n#\nhidePlaceholderOnFocus = (event) ->\n target = if event.currentTarget then event.currentTarget else event.srcElement\n\n if target.value == target.getAttribute 'placeholder'\n target.value = ''\n\n#\n# When the input has an empty value put the placeholder back in\n#\nunfocusOnAnElement = (event) ->\n target = if event.currentTarget then event.currentTarget else event.srcElement\n\n if target.value == ''\n target.value = target.getAttribute 'placeholder'\n\nexports = ()->\n\nif !document.createElement(\"input\").placeholder?\n exports = (input)->\n #jquery case\n input = input[0] ? input\n\n if input._placeholdered?\n return\n\n Object.defineProperty input, '_placeholdered',\n value: true\n writable: true\n\n # Loop over them\n # If they don't have a preset value\n if !input.value\n input.value = input.getAttribute 'placeholder'\n\n # Attach event listeners for click and blur\n # Click so that we can clear the placeholder if we need to\n # Blur to re-add it if needed\n if input.addEventListener\n input.addEventListener 'click', hidePlaceholderOnFocus, false\n input.addEventListener 'blur', unfocusOnAnElement, false\n else if input.attachEvent\n input.attachEvent 'onclick', hidePlaceholderOnFocus\n input.attachEvent 'onblur', unfocusOnAnElement\n\nexport default exports\n","import Control from './control'\nimport placeholder from '../utils/placeholder'\n\nimport html from '../../templates/controls/text'\n\nexport default class Text extends Control\n tag: 'text'\n html: html\n type: 'text'\n formElement: 'input'\n\n autocomplete: 'on'\n autofocus: false\n disabled: false\n maxlength: null\n readonly: false\n placeholder: null\n label: ''\n instructions: null\n\n init: ->\n super arguments...\n\n @on 'mounted', =>\n el = @root.getElementsByTagName(@formElement)[0]\n\n if @type != 'password'\n placeholder el\n\n getText: ->\n return '' if !@input?\n return @input.ref.get @input.name\n\nText.register()\n","import Text from './text'\n\nimport valueOrCall from '../utils/valueOrCall'\n\nexport default class ReadOnly extends Text\n tag: 'readonly'\n readonly: true\n\n # pass this in optionally to overwrite a specific value\n text: ''\n\n init: ->\n if !@text\n super arguments...\n\n getText: ->\n return valueOrCall(@text) || @input?.ref.get(@input.name) || ''\n\n # readonly\n change: ->\n _change: ->\n getName: ->\n\nReadOnly.register()\n","import ReadOnly from './readonly'\nimport html from '../../templates/controls/copy'\n\nimport valueOrCall from '../utils/valueOrCall'\n\nexport default class Copy extends ReadOnly\n tag: 'copy'\n html: html\n\n # pass this in optionally to overwrite a specific value\n text: ''\n\n # this is set automatically\n copied: false\n\n init: ->\n super arguments...\n\n copy: (e)->\n text = @getText()\n\n textArea = document.createElement \"textarea\"\n textArea.contentEditable = true\n textArea.readOnly = false\n textArea.style.position = 'fixed'\n textArea.style.top = 0\n textArea.style.left = 0\n textArea.style.width = '2em'\n textArea.style.height = '2em'\n textArea.style.padding = 0\n textArea.style.border = 'none'\n textArea.style.outline = 'none'\n textArea.style.boxShadow = 'none'\n textArea.style.background = 'transparent'\n textArea.value = text\n document.body.appendChild textArea\n textArea.select()\n\n try\n range = document.createRange()\n s = window.getSelection()\n s.removeAllRanges()\n s.addRange(range)\n textArea.setSelectionRange(0, 999999)\n\n successful = document.execCommand 'copy'\n msg = successful ? 'successful' : 'unsuccessful'\n console.log 'Copying text command was ' + msg\n catch err\n console.log 'Oops, unable to copy'\n\n document.body.removeChild textArea\n\n @copied = true\n\n @scheduleUpdate()\n return false\n\nCopy.register()\n","import Control from './control'\n\nimport html from '../../templates/controls/selection'\n\nexport default class Select extends Control\n tag: 'selection'\n html: html\n\n placeholder: 'Select an Option'\n autofocus: false\n disabled: false\n multiple: false\n size: null\n\n # default to something that will be visible\n _optionsHash: 'default'\n selectOptions: {}\n\n hasOptions: ->\n # call for side effects\n @options()\n return @_optionsHash.length > 2\n\n options: ->\n selectOptions = @selectOptions\n if typeof selectOptions == 'function'\n selectOptions = selectOptions()\n\n optionsHash = JSON.stringify selectOptions\n\n if @_optionsHash != optionsHash\n @_optionsHash = optionsHash\n\n return selectOptions\n\n getValue: (e)->\n el = e.target\n return (el.options?[el.selectedIndex]?.value ? '').trim()\n\n init: ->\n super arguments...\n\nSelect.register()\n\n","import Select from './selection'\n\nexport default class CountrySelect extends Select\n tag: 'country-select'\n\n # set up the countries in selectedOptions\n # countries should be in the form of\n # [{\n # code: 'XX',\n # name: 'Country Name',\n # subdivisions: [{\n # code: 'YY',\n # name: 'Subdivision Name',\n # }]\n # }]\n\n options: ->\n countries = @countries ? @data?.get('countries') ? @parent?.data?.get('countries') ? []\n\n optionsHash = JSON.stringify countries\n\n if @_optionsHash == optionsHash\n return @selectOptions\n\n countries = countries.slice 0\n\n @_optionsHash = optionsHash\n\n @selectOptions = options = {}\n\n countries.sort (a, b)->\n nameA = a.name.toUpperCase()\n nameB = b.name.toUpperCase()\n return -1 if nameA < nameB\n return 1 if nameA > nameB\n return 0\n\n for country in countries\n options[country.code.toUpperCase()] = country.name\n\n return options\n\n init: ->\n super arguments...\n\nCountrySelect.register()\n","export default {\n data:\n 'aud':'$'\n 'cad':'$'\n 'eur':'€'\n 'gbp':'£'\n 'hkd':'$'\n 'jpy':'¥'\n 'nzd':'$'\n 'sgd':'$'\n 'usd':'$'\n 'ghc':'¢'\n 'ars':'$'\n 'bsd':'$'\n 'bbd':'$'\n 'bmd':'$'\n 'bnd':'$'\n 'kyd':'$'\n 'clp':'$'\n 'cop':'$'\n 'xcd':'$'\n 'svc':'$'\n 'fjd':'$'\n 'gyd':'$'\n 'lrd':'$'\n 'mxn':'$'\n 'nad':'$'\n 'sbd':'$'\n 'srd':'$'\n 'tvd':'$'\n 'bob':'$b'\n 'uyu':'$u'\n 'egp':'£'\n 'fkp':'£'\n 'gip':'£'\n 'ggp':'£'\n 'imp':'£'\n 'jep':'£'\n 'lbp':'£'\n 'shp':'£'\n 'syp':'£'\n 'cny':'¥'\n 'afn':'؋'\n 'thb':'฿'\n 'khr':'៛'\n 'crc':'₡'\n 'trl':'₤'\n 'ngn':'₦'\n 'kpw':'₩'\n 'krw':'₩'\n 'ils':'₪'\n 'vnd':'₫'\n 'lak':'₭'\n 'mnt':'₮'\n 'cup':'₱'\n 'php':'₱'\n 'uah':'₴'\n 'mur':'₨'\n 'npr':'₨'\n 'pkr':'₨'\n 'scr':'₨'\n 'lkr':'₨'\n 'irr':'﷼'\n 'omr':'﷼'\n 'qar':'﷼'\n 'sar':'﷼'\n 'yer':'﷼'\n 'pab':'b/.'\n 'vef':'bs'\n 'bzd':'bz$'\n 'nio':'c$'\n 'chf':'chf'\n 'huf':'ft'\n 'awg':'ƒ'\n 'ang':'ƒ'\n 'pyg':'gs'\n 'jmd':'j$'\n 'czk':'kč'\n 'bam':'km'\n 'hrk':'kn'\n 'dkk':'kr'\n 'eek':'kr'\n 'isk':'kr'\n 'nok':'kr'\n 'sek':'kr'\n 'hnl':'l'\n 'ron':'lei'\n 'all':'lek'\n 'lvl':'ls'\n 'ltl':'lt'\n 'mzn':'mt'\n 'twd':'nt$'\n 'bwp':'p'\n 'byr':'p.'\n 'gtq':'q'\n 'zar':'r'\n 'brl':'r$'\n 'dop':'rd$'\n 'myr':'rm'\n 'idr':'rp'\n 'sos':'s'\n 'pen':'s/.'\n 'ttd':'tt$'\n 'zwd':'z$'\n 'pln':'zł'\n 'mkd':'ден'\n 'rsd':'Дин.'\n 'bgn':'лв'\n 'kzt':'лв'\n 'kgs':'лв'\n 'uzs':'лв'\n 'azn':'ман'\n 'rub':'руб'\n 'inr':''\n 'try':''\n '':''\n 'pnt': ''\n 'btc': ''\n 'eth': ''\n}\n","import currencies from './data/currencies'\n\ncurrencySeparator = '.'\ndigitsOnlyRe = new RegExp('[^\\\\d.-]', 'g')\n\ncurrencySigns = currencies.data\n\n# Does the currency support decimal notation\nexport isZeroDecimal = (code)->\n code = code.toLowerCase() if code\n\n if code == 'bif' || code == 'clp' || code == 'djf' || code == 'gnf' || code == 'jpy' || code == 'kmf' || code == 'krw' || code == 'mga' || code == 'pyg' || code == 'rwf' || code == 'vnd' || code == 'vuv' || code == 'xaf' || code == 'xof' || code == 'xpf'\n return true\n return false\n\n# Is the currency code a crypto currency?\nexport isCrypto = (code)->\n return code == 'eth' || code == 'btc' || code =='xbt'\n\n# Convert humanized currency format to data format back to currency format\nexport renderUpdatedUICurrency = (code, uiCurrency) ->\n code = code.toLowerCase() if code\n\n return renderUICurrencyFromJSON code, renderJSONCurrencyFromUI(code, uiCurrency)\n\n# Convert data format to humanized format\nexport renderUICurrencyFromJSON = (code, jsonCurrency) ->\n code = code.toLowerCase() if code\n\n if isNaN jsonCurrency\n jsonCurrency = 0\n\n currentCurrencySign = currencySigns[code] ? ''\n\n # ethereum\n if code == 'eth' || code == 'btc' || code =='xbt'\n jsonCurrency = jsonCurrency / 1e9\n return currentCurrencySign + jsonCurrency\n\n jsonCurrency = '' + jsonCurrency\n # jsonCurrency is not cents\n if isZeroDecimal code\n return currentCurrencySign + jsonCurrency\n\n # jsonCurrency is cents\n while jsonCurrency.length < 3\n jsonCurrency = '0' + jsonCurrency\n\n return currentCurrencySign + jsonCurrency.substr(0, jsonCurrency.length - 2) + '.' + jsonCurrency.substr(-2)\n\n# Convert humanized format to data format\nexport renderJSONCurrencyFromUI = (code, uiCurrency) ->\n code = code.toLowerCase() if code\n\n currentCurrencySign = currencySigns[code]\n\n # ethereum\n if code == 'eth' || code == 'btc' || code =='xbt'\n return parseFloat(('' + uiCurrency).replace(digitsOnlyRe, '')) * 1e9\n\n if isZeroDecimal code\n return parseInt(('' + uiCurrency).replace(digitsOnlyRe, '').replace(currencySeparator, ''), 10)\n\n # uiCurrency is a whole unit of currency\n parts = uiCurrency.split currencySeparator\n if parts.length > 1\n parts[1] = parts[1].substr(0, 2)\n while parts[1].length < 2\n parts[1] += '0'\n else\n parts[1] = '00'\n\n return parseInt(parseFloat(parts[0].replace(digitsOnlyRe, '')) * 100 + parseFloat(parts[1].replace(digitsOnlyRe, '')), 10)\n\n","import Text from './text'\nimport valueOrCall from '../utils/valueOrCall'\n\nimport html from '../../templates/controls/currency'\n\nimport {\n renderUICurrencyFromJSON\n renderJSONCurrencyFromUI\n} from 'shop.js-util/src/currency'\n\nexport default class Currency extends Text\n tag: 'currency'\n html: html\n currency: ''\n\n init: ->\n super arguments...\n\n getCurrency: (e)->\n return valueOrCall @currency\n\n renderValue: ->\n renderUICurrencyFromJSON @getCurrency(), @input.ref.get(@input.name)\n\n getValue: (e)->\n el = e.target\n return renderJSONCurrencyFromUI @getCurrency(), (el.value ? '0').trim()\n\nCurrency.register()\n","// Zepto.js\n// (c) 2010-2016 Thomas Fuchs\n// Zepto.js may be freely distributed under the MIT license.\n\nvar Zepto = (function() {\n var undefined, key, $, classList, emptyArray = [], concat = emptyArray.concat, filter = emptyArray.filter, slice = emptyArray.slice,\n document = window.document,\n elementDisplay = {}, classCache = {},\n cssNumber = { 'column-count': 1, 'columns': 1, 'font-weight': 1, 'line-height': 1,'opacity': 1, 'z-index': 1, 'zoom': 1 },\n fragmentRE = /^\\s*<(\\w+|!)[^>]*>/,\n singleTagRE = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/,\n tagExpanderRE = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/ig,\n rootNodeRE = /^(?:body|html)$/i,\n capitalRE = /([A-Z])/g,\n\n // special attributes that should be get/set via method calls\n methodAttributes = ['val', 'css', 'html', 'text', 'data', 'width', 'height', 'offset'],\n\n adjacencyOperators = [ 'after', 'prepend', 'before', 'append' ],\n table = document.createElement('table'),\n tableRow = document.createElement('tr'),\n containers = {\n 'tr': document.createElement('tbody'),\n 'tbody': table, 'thead': table, 'tfoot': table,\n 'td': tableRow, 'th': tableRow,\n '*': document.createElement('div')\n },\n readyRE = /complete|loaded|interactive/,\n simpleSelectorRE = /^[\\w-]*$/,\n class2type = {},\n toString = class2type.toString,\n zepto = {},\n camelize, uniq,\n tempParent = document.createElement('div'),\n propMap = {\n 'tabindex': 'tabIndex',\n 'readonly': 'readOnly',\n 'for': 'htmlFor',\n 'class': 'className',\n 'maxlength': 'maxLength',\n 'cellspacing': 'cellSpacing',\n 'cellpadding': 'cellPadding',\n 'rowspan': 'rowSpan',\n 'colspan': 'colSpan',\n 'usemap': 'useMap',\n 'frameborder': 'frameBorder',\n 'contenteditable': 'contentEditable'\n },\n isArray = Array.isArray ||\n function(object){ return object instanceof Array }\n\n zepto.matches = function(element, selector) {\n if (!selector || !element || element.nodeType !== 1) return false\n var matchesSelector = element.matches || element.webkitMatchesSelector ||\n element.mozMatchesSelector || element.oMatchesSelector ||\n element.matchesSelector\n if (matchesSelector) return matchesSelector.call(element, selector)\n // fall back to performing a selector:\n var match, parent = element.parentNode, temp = !parent\n if (temp) (parent = tempParent).appendChild(element)\n match = ~zepto.qsa(parent, selector).indexOf(element)\n temp && tempParent.removeChild(element)\n return match\n }\n\n function type(obj) {\n return obj == null ? String(obj) :\n class2type[toString.call(obj)] || \"object\"\n }\n\n function isFunction(value) { return type(value) == \"function\" }\n function isWindow(obj) { return obj != null && obj == obj.window }\n function isDocument(obj) { return obj != null && obj.nodeType == obj.DOCUMENT_NODE }\n function isObject(obj) { return type(obj) == \"object\" }\n function isPlainObject(obj) {\n return isObject(obj) && !isWindow(obj) && Object.getPrototypeOf(obj) == Object.prototype\n }\n\n function likeArray(obj) {\n var length = !!obj && 'length' in obj && obj.length,\n type = $.type(obj)\n\n return 'function' != type && !isWindow(obj) && (\n 'array' == type || length === 0 ||\n (typeof length == 'number' && length > 0 && (length - 1) in obj)\n )\n }\n\n function compact(array) { return filter.call(array, function(item){ return item != null }) }\n function flatten(array) { return array.length > 0 ? $.fn.concat.apply([], array) : array }\n camelize = function(str){ return str.replace(/-+(.)?/g, function(match, chr){ return chr ? chr.toUpperCase() : '' }) }\n function dasherize(str) {\n return str.replace(/::/g, '/')\n .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2')\n .replace(/([a-z\\d])([A-Z])/g, '$1_$2')\n .replace(/_/g, '-')\n .toLowerCase()\n }\n uniq = function(array){ return filter.call(array, function(item, idx){ return array.indexOf(item) == idx }) }\n\n function classRE(name) {\n return name in classCache ?\n classCache[name] : (classCache[name] = new RegExp('(^|\\\\s)' + name + '(\\\\s|$)'))\n }\n\n function maybeAddPx(name, value) {\n return (typeof value == \"number\" && !cssNumber[dasherize(name)]) ? value + \"px\" : value\n }\n\n function defaultDisplay(nodeName) {\n var element, display\n if (!elementDisplay[nodeName]) {\n element = document.createElement(nodeName)\n document.body.appendChild(element)\n display = getComputedStyle(element, '').getPropertyValue(\"display\")\n element.parentNode.removeChild(element)\n display == \"none\" && (display = \"block\")\n elementDisplay[nodeName] = display\n }\n return elementDisplay[nodeName]\n }\n\n function children(element) {\n return 'children' in element ?\n slice.call(element.children) :\n $.map(element.childNodes, function(node){ if (node.nodeType == 1) return node })\n }\n\n function Z(dom, selector) {\n var i, len = dom ? dom.length : 0\n for (i = 0; i < len; i++) this[i] = dom[i]\n this.length = len\n this.selector = selector || ''\n }\n\n // `$.zepto.fragment` takes a html string and an optional tag name\n // to generate DOM nodes from the given html string.\n // The generated DOM nodes are returned as an array.\n // This function can be overridden in plugins for example to make\n // it compatible with browsers that don't support the DOM fully.\n zepto.fragment = function(html, name, properties) {\n var dom, nodes, container\n\n // A special case optimization for a single tag\n if (singleTagRE.test(html)) dom = $(document.createElement(RegExp.$1))\n\n if (!dom) {\n if (html.replace) html = html.replace(tagExpanderRE, \"<$1></$2>\")\n if (name === undefined) name = fragmentRE.test(html) && RegExp.$1\n if (!(name in containers)) name = '*'\n\n container = containers[name]\n container.innerHTML = '' + html\n dom = $.each(slice.call(container.childNodes), function(){\n container.removeChild(this)\n })\n }\n\n if (isPlainObject(properties)) {\n nodes = $(dom)\n $.each(properties, function(key, value) {\n if (methodAttributes.indexOf(key) > -1) nodes[key](value)\n else nodes.attr(key, value)\n })\n }\n\n return dom\n }\n\n // `$.zepto.Z` swaps out the prototype of the given `dom` array\n // of nodes with `$.fn` and thus supplying all the Zepto functions\n // to the array. This method can be overridden in plugins.\n zepto.Z = function(dom, selector) {\n return new Z(dom, selector)\n }\n\n // `$.zepto.isZ` should return `true` if the given object is a Zepto\n // collection. This method can be overridden in plugins.\n zepto.isZ = function(object) {\n return object instanceof zepto.Z\n }\n\n // `$.zepto.init` is Zepto's counterpart to jQuery's `$.fn.init` and\n // takes a CSS selector and an optional context (and handles various\n // special cases).\n // This method can be overridden in plugins.\n zepto.init = function(selector, context) {\n var dom\n // If nothing given, return an empty Zepto collection\n if (!selector) return zepto.Z()\n // Optimize for string selectors\n else if (typeof selector == 'string') {\n selector = selector.trim()\n // If it's a html fragment, create nodes from it\n // Note: In both Chrome 21 and Firefox 15, DOM error 12\n // is thrown if the fragment doesn't begin with <\n if (selector[0] == '<' && fragmentRE.test(selector))\n dom = zepto.fragment(selector, RegExp.$1, context), selector = null\n // If there's a context, create a collection on that context first, and select\n // nodes from there\n else if (context !== undefined) return $(context).find(selector)\n // If it's a CSS selector, use it to select nodes.\n else dom = zepto.qsa(document, selector)\n }\n // If a function is given, call it when the DOM is ready\n else if (isFunction(selector)) return $(document).ready(selector)\n // If a Zepto collection is given, just return it\n else if (zepto.isZ(selector)) return selector\n else {\n // normalize array if an array of nodes is given\n if (isArray(selector)) dom = compact(selector)\n // Wrap DOM nodes.\n else if (isObject(selector))\n dom = [selector], selector = null\n // If it's a html fragment, create nodes from it\n else if (fragmentRE.test(selector))\n dom = zepto.fragment(selector.trim(), RegExp.$1, context), selector = null\n // If there's a context, create a collection on that context first, and select\n // nodes from there\n else if (context !== undefined) return $(context).find(selector)\n // And last but no least, if it's a CSS selector, use it to select nodes.\n else dom = zepto.qsa(document, selector)\n }\n // create a new Zepto collection from the nodes found\n return zepto.Z(dom, selector)\n }\n\n // `$` will be the base `Zepto` object. When calling this\n // function just call `$.zepto.init, which makes the implementation\n // details of selecting nodes and creating Zepto collections\n // patchable in plugins.\n $ = function(selector, context){\n return zepto.init(selector, context)\n }\n\n function extend(target, source, deep) {\n for (key in source)\n if (deep && (isPlainObject(source[key]) || isArray(source[key]))) {\n if (isPlainObject(source[key]) && !isPlainObject(target[key]))\n target[key] = {}\n if (isArray(source[key]) && !isArray(target[key]))\n target[key] = []\n extend(target[key], source[key], deep)\n }\n else if (source[key] !== undefined) target[key] = source[key]\n }\n\n // Copy all but undefined properties from one or more\n // objects to the `target` object.\n $.extend = function(target){\n var deep, args = slice.call(arguments, 1)\n if (typeof target == 'boolean') {\n deep = target\n target = args.shift()\n }\n args.forEach(function(arg){ extend(target, arg, deep) })\n return target\n }\n\n // `$.zepto.qsa` is Zepto's CSS selector implementation which\n // uses `document.querySelectorAll` and optimizes for some special cases, like `#id`.\n // This method can be overridden in plugins.\n zepto.qsa = function(element, selector){\n var found,\n maybeID = selector[0] == '#',\n maybeClass = !maybeID && selector[0] == '.',\n nameOnly = maybeID || maybeClass ? selector.slice(1) : selector, // Ensure that a 1 char tag name still gets checked\n isSimple = simpleSelectorRE.test(nameOnly)\n return (element.getElementById && isSimple && maybeID) ? // Safari DocumentFragment doesn't have getElementById\n ( (found = element.getElementById(nameOnly)) ? [found] : [] ) :\n (element.nodeType !== 1 && element.nodeType !== 9 && element.nodeType !== 11) ? [] :\n slice.call(\n isSimple && !maybeID && element.getElementsByClassName ? // DocumentFragment doesn't have getElementsByClassName/TagName\n maybeClass ? element.getElementsByClassName(nameOnly) : // If it's simple, it could be a class\n element.getElementsByTagName(selector) : // Or a tag\n element.querySelectorAll(selector) // Or it's not simple, and we need to query all\n )\n }\n\n function filtered(nodes, selector) {\n return selector == null ? $(nodes) : $(nodes).filter(selector)\n }\n\n $.contains = document.documentElement.contains ?\n function(parent, node) {\n return parent !== node && parent.contains(node)\n } :\n function(parent, node) {\n while (node && (node = node.parentNode))\n if (node === parent) return true\n return false\n }\n\n function funcArg(context, arg, idx, payload) {\n return isFunction(arg) ? arg.call(context, idx, payload) : arg\n }\n\n function setAttribute(node, name, value) {\n value == null ? node.removeAttribute(name) : node.setAttribute(name, value)\n }\n\n // access className property while respecting SVGAnimatedString\n function className(node, value){\n var klass = node.className || '',\n svg = klass && klass.baseVal !== undefined\n\n if (value === undefined) return svg ? klass.baseVal : klass\n svg ? (klass.baseVal = value) : (node.className = value)\n }\n\n // \"true\" => true\n // \"false\" => false\n // \"null\" => null\n // \"42\" => 42\n // \"42.5\" => 42.5\n // \"08\" => \"08\"\n // JSON => parse if valid\n // String => self\n function deserializeValue(value) {\n try {\n return value ?\n value == \"true\" ||\n ( value == \"false\" ? false :\n value == \"null\" ? null :\n +value + \"\" == value ? +value :\n /^[\\[\\{]/.test(value) ? $.parseJSON(value) :\n value )\n : value\n } catch(e) {\n return value\n }\n }\n\n $.type = type\n $.isFunction = isFunction\n $.isWindow = isWindow\n $.isArray = isArray\n $.isPlainObject = isPlainObject\n\n $.isEmptyObject = function(obj) {\n var name\n for (name in obj) return false\n return true\n }\n\n $.isNumeric = function(val) {\n var num = Number(val), type = typeof val\n return val != null && type != 'boolean' &&\n (type != 'string' || val.length) &&\n !isNaN(num) && isFinite(num) || false\n }\n\n $.inArray = function(elem, array, i){\n return emptyArray.indexOf.call(array, elem, i)\n }\n\n $.camelCase = camelize\n $.trim = function(str) {\n return str == null ? \"\" : String.prototype.trim.call(str)\n }\n\n // plugin compatibility\n $.uuid = 0\n $.support = { }\n $.expr = { }\n $.noop = function() {}\n\n $.map = function(elements, callback){\n var value, values = [], i, key\n if (likeArray(elements))\n for (i = 0; i < elements.length; i++) {\n value = callback(elements[i], i)\n if (value != null) values.push(value)\n }\n else\n for (key in elements) {\n value = callback(elements[key], key)\n if (value != null) values.push(value)\n }\n return flatten(values)\n }\n\n $.each = function(elements, callback){\n var i, key\n if (likeArray(elements)) {\n for (i = 0; i < elements.length; i++)\n if (callback.call(elements[i], i, elements[i]) === false) return elements\n } else {\n for (key in elements)\n if (callback.call(elements[key], key, elements[key]) === false) return elements\n }\n\n return elements\n }\n\n $.grep = function(elements, callback){\n return filter.call(elements, callback)\n }\n\n if (window.JSON) $.parseJSON = JSON.parse\n\n // Populate the class2type map\n $.each(\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"), function(i, name) {\n class2type[ \"[object \" + name + \"]\" ] = name.toLowerCase()\n })\n\n // Define methods that will be available on all\n // Zepto collections\n $.fn = {\n constructor: zepto.Z,\n length: 0,\n\n // Because a collection acts like an array\n // copy over these useful array functions.\n forEach: emptyArray.forEach,\n reduce: emptyArray.reduce,\n push: emptyArray.push,\n sort: emptyArray.sort,\n splice: emptyArray.splice,\n indexOf: emptyArray.indexOf,\n concat: function(){\n var i, value, args = []\n for (i = 0; i < arguments.length; i++) {\n value = arguments[i]\n args[i] = zepto.isZ(value) ? value.toArray() : value\n }\n return concat.apply(zepto.isZ(this) ? this.toArray() : this, args)\n },\n\n // `map` and `slice` in the jQuery API work differently\n // from their array counterparts\n map: function(fn){\n return $($.map(this, function(el, i){ return fn.call(el, i, el) }))\n },\n slice: function(){\n return $(slice.apply(this, arguments))\n },\n\n ready: function(callback){\n // need to check if document.body exists for IE as that browser reports\n // document ready when it hasn't yet created the body element\n if (readyRE.test(document.readyState) && document.body) callback($)\n else document.addEventListener('DOMContentLoaded', function(){ callback($) }, false)\n return this\n },\n get: function(idx){\n return idx === undefined ? slice.call(this) : this[idx >= 0 ? idx : idx + this.length]\n },\n toArray: function(){ return this.get() },\n size: function(){\n return this.length\n },\n remove: function(){\n return this.each(function(){\n if (this.parentNode != null)\n this.parentNode.removeChild(this)\n })\n },\n each: function(callback){\n emptyArray.every.call(this, function(el, idx){\n return callback.call(el, idx, el) !== false\n })\n return this\n },\n filter: function(selector){\n if (isFunction(selector)) return this.not(this.not(selector))\n return $(filter.call(this, function(element){\n return zepto.matches(element, selector)\n }))\n },\n add: function(selector,context){\n return $(uniq(this.concat($(selector,context))))\n },\n is: function(selector){\n return this.length > 0 && zepto.matches(this[0], selector)\n },\n not: function(selector){\n var nodes=[]\n if (isFunction(selector) && selector.call !== undefined)\n this.each(function(idx){\n if (!selector.call(this,idx)) nodes.push(this)\n })\n else {\n var excludes = typeof selector == 'string' ? this.filter(selector) :\n (likeArray(selector) && isFunction(selector.item)) ? slice.call(selector) : $(selector)\n this.forEach(function(el){\n if (excludes.indexOf(el) < 0) nodes.push(el)\n })\n }\n return $(nodes)\n },\n has: function(selector){\n return this.filter(function(){\n return isObject(selector) ?\n $.contains(this, selector) :\n $(this).find(selector).size()\n })\n },\n eq: function(idx){\n return idx === -1 ? this.slice(idx) : this.slice(idx, + idx + 1)\n },\n first: function(){\n var el = this[0]\n return el && !isObject(el) ? el : $(el)\n },\n last: function(){\n var el = this[this.length - 1]\n return el && !isObject(el) ? el : $(el)\n },\n find: function(selector){\n var result, $this = this\n if (!selector) result = $()\n else if (typeof selector == 'object')\n result = $(selector).filter(function(){\n var node = this\n return emptyArray.some.call($this, function(parent){\n return $.contains(parent, node)\n })\n })\n else if (this.length == 1) result = $(zepto.qsa(this[0], selector))\n else result = this.map(function(){ return zepto.qsa(this, selector) })\n return result\n },\n closest: function(selector, context){\n var nodes = [], collection = typeof selector == 'object' && $(selector)\n this.each(function(_, node){\n while (node && !(collection ? collection.indexOf(node) >= 0 : zepto.matches(node, selector)))\n node = node !== context && !isDocument(node) && node.parentNode\n if (node && nodes.indexOf(node) < 0) nodes.push(node)\n })\n return $(nodes)\n },\n parents: function(selector){\n var ancestors = [], nodes = this\n while (nodes.length > 0)\n nodes = $.map(nodes, function(node){\n if ((node = node.parentNode) && !isDocument(node) && ancestors.indexOf(node) < 0) {\n ancestors.push(node)\n return node\n }\n })\n return filtered(ancestors, selector)\n },\n parent: function(selector){\n return filtered(uniq(this.pluck('parentNode')), selector)\n },\n children: function(selector){\n return filtered(this.map(function(){ return children(this) }), selector)\n },\n contents: function() {\n return this.map(function() { return this.contentDocument || slice.call(this.childNodes) })\n },\n siblings: function(selector){\n return filtered(this.map(function(i, el){\n return filter.call(children(el.parentNode), function(child){ return child!==el })\n }), selector)\n },\n empty: function(){\n return this.each(function(){ this.innerHTML = '' })\n },\n // `pluck` is borrowed from Prototype.js\n pluck: function(property){\n return $.map(this, function(el){ return el[property] })\n },\n show: function(){\n return this.each(function(){\n this.style.display == \"none\" && (this.style.display = '')\n if (getComputedStyle(this, '').getPropertyValue(\"display\") == \"none\")\n this.style.display = defaultDisplay(this.nodeName)\n })\n },\n replaceWith: function(newContent){\n return this.before(newContent).remove()\n },\n wrap: function(structure){\n var func = isFunction(structure)\n if (this[0] && !func)\n var dom = $(structure).get(0),\n clone = dom.parentNode || this.length > 1\n\n return this.each(function(index){\n $(this).wrapAll(\n func ? structure.call(this, index) :\n clone ? dom.cloneNode(true) : dom\n )\n })\n },\n wrapAll: function(structure){\n if (this[0]) {\n $(this[0]).before(structure = $(structure))\n var children\n // drill down to the inmost element\n while ((children = structure.children()).length) structure = children.first()\n $(structure).append(this)\n }\n return this\n },\n wrapInner: function(structure){\n var func = isFunction(structure)\n return this.each(function(index){\n var self = $(this), contents = self.contents(),\n dom = func ? structure.call(this, index) : structure\n contents.length ? contents.wrapAll(dom) : self.append(dom)\n })\n },\n unwrap: function(){\n this.parent().each(function(){\n $(this).replaceWith($(this).children())\n })\n return this\n },\n clone: function(){\n return this.map(function(){ return this.cloneNode(true) })\n },\n hide: function(){\n return this.css(\"display\", \"none\")\n },\n toggle: function(setting){\n return this.each(function(){\n var el = $(this)\n ;(setting === undefined ? el.css(\"display\") == \"none\" : setting) ? el.show() : el.hide()\n })\n },\n prev: function(selector){ return $(this.pluck('previousElementSibling')).filter(selector || '*') },\n next: function(selector){ return $(this.pluck('nextElementSibling')).filter(selector || '*') },\n html: function(html){\n return 0 in arguments ?\n this.each(function(idx){\n var originHtml = this.innerHTML\n $(this).empty().append( funcArg(this, html, idx, originHtml) )\n }) :\n (0 in this ? this[0].innerHTML : null)\n },\n text: function(text){\n return 0 in arguments ?\n this.each(function(idx){\n var newText = funcArg(this, text, idx, this.textContent)\n this.textContent = newText == null ? '' : ''+newText\n }) :\n (0 in this ? this.pluck('textContent').join(\"\") : null)\n },\n attr: function(name, value){\n var result\n return (typeof name == 'string' && !(1 in arguments)) ?\n (0 in this && this[0].nodeType == 1 && (result = this[0].getAttribute(name)) != null ? result : undefined) :\n this.each(function(idx){\n if (this.nodeType !== 1) return\n if (isObject(name)) for (key in name) setAttribute(this, key, name[key])\n else setAttribute(this, name, funcArg(this, value, idx, this.getAttribute(name)))\n })\n },\n removeAttr: function(name){\n return this.each(function(){ this.nodeType === 1 && name.split(' ').forEach(function(attribute){\n setAttribute(this, attribute)\n }, this)})\n },\n prop: function(name, value){\n name = propMap[name] || name\n return (1 in arguments) ?\n this.each(function(idx){\n this[name] = funcArg(this, value, idx, this[name])\n }) :\n (this[0] && this[0][name])\n },\n removeProp: function(name){\n name = propMap[name] || name\n return this.each(function(){ delete this[name] })\n },\n data: function(name, value){\n var attrName = 'data-' + name.replace(capitalRE, '-$1').toLowerCase()\n\n var data = (1 in arguments) ?\n this.attr(attrName, value) :\n this.attr(attrName)\n\n return data !== null ? deserializeValue(data) : undefined\n },\n val: function(value){\n if (0 in arguments) {\n if (value == null) value = \"\"\n return this.each(function(idx){\n this.value = funcArg(this, value, idx, this.value)\n })\n } else {\n return this[0] && (this[0].multiple ?\n $(this[0]).find('option').filter(function(){ return this.selected }).pluck('value') :\n this[0].value)\n }\n },\n offset: function(coordinates){\n if (coordinates) return this.each(function(index){\n var $this = $(this),\n coords = funcArg(this, coordinates, index, $this.offset()),\n parentOffset = $this.offsetParent().offset(),\n props = {\n top: coords.top - parentOffset.top,\n left: coords.left - parentOffset.left\n }\n\n if ($this.css('position') == 'static') props['position'] = 'relative'\n $this.css(props)\n })\n if (!this.length) return null\n if (document.documentElement !== this[0] && !$.contains(document.documentElement, this[0]))\n return {top: 0, left: 0}\n var obj = this[0].getBoundingClientRect()\n return {\n left: obj.left + window.pageXOffset,\n top: obj.top + window.pageYOffset,\n width: Math.round(obj.width),\n height: Math.round(obj.height)\n }\n },\n css: function(property, value){\n if (arguments.length < 2) {\n var element = this[0]\n if (typeof property == 'string') {\n if (!element) return\n return element.style[camelize(property)] || getComputedStyle(element, '').getPropertyValue(property)\n } else if (isArray(property)) {\n if (!element) return\n var props = {}\n var computedStyle = getComputedStyle(element, '')\n $.each(property, function(_, prop){\n props[prop] = (element.style[camelize(prop)] || computedStyle.getPropertyValue(prop))\n })\n return props\n }\n }\n\n var css = ''\n if (type(property) == 'string') {\n if (!value && value !== 0)\n this.each(function(){ this.style.removeProperty(dasherize(property)) })\n else\n css = dasherize(property) + \":\" + maybeAddPx(property, value)\n } else {\n for (key in property)\n if (!property[key] && property[key] !== 0)\n this.each(function(){ this.style.removeProperty(dasherize(key)) })\n else\n css += dasherize(key) + ':' + maybeAddPx(key, property[key]) + ';'\n }\n\n return this.each(function(){ this.style.cssText += ';' + css })\n },\n index: function(element){\n return element ? this.indexOf($(element)[0]) : this.parent().children().indexOf(this[0])\n },\n hasClass: function(name){\n if (!name) return false\n return emptyArray.some.call(this, function(el){\n return this.test(className(el))\n }, classRE(name))\n },\n addClass: function(name){\n if (!name) return this\n return this.each(function(idx){\n if (!('className' in this)) return\n classList = []\n var cls = className(this), newName = funcArg(this, name, idx, cls)\n newName.split(/\\s+/g).forEach(function(klass){\n if (!$(this).hasClass(klass)) classList.push(klass)\n }, this)\n classList.length && className(this, cls + (cls ? \" \" : \"\") + classList.join(\" \"))\n })\n },\n removeClass: function(name){\n return this.each(function(idx){\n if (!('className' in this)) return\n if (name === undefined) return className(this, '')\n classList = className(this)\n funcArg(this, name, idx, classList).split(/\\s+/g).forEach(function(klass){\n classList = classList.replace(classRE(klass), \" \")\n })\n className(this, classList.trim())\n })\n },\n toggleClass: function(name, when){\n if (!name) return this\n return this.each(function(idx){\n var $this = $(this), names = funcArg(this, name, idx, className(this))\n names.split(/\\s+/g).forEach(function(klass){\n (when === undefined ? !$this.hasClass(klass) : when) ?\n $this.addClass(klass) : $this.removeClass(klass)\n })\n })\n },\n scrollTop: function(value){\n if (!this.length) return\n var hasScrollTop = 'scrollTop' in this[0]\n if (value === undefined) return hasScrollTop ? this[0].scrollTop : this[0].pageYOffset\n return this.each(hasScrollTop ?\n function(){ this.scrollTop = value } :\n function(){ this.scrollTo(this.scrollX, value) })\n },\n scrollLeft: function(value){\n if (!this.length) return\n var hasScrollLeft = 'scrollLeft' in this[0]\n if (value === undefined) return hasScrollLeft ? this[0].scrollLeft : this[0].pageXOffset\n return this.each(hasScrollLeft ?\n function(){ this.scrollLeft = value } :\n function(){ this.scrollTo(value, this.scrollY) })\n },\n position: function() {\n if (!this.length) return\n\n var elem = this[0],\n // Get *real* offsetParent\n offsetParent = this.offsetParent(),\n // Get correct offsets\n offset = this.offset(),\n parentOffset = rootNodeRE.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset()\n\n // Subtract element margins\n // note: when an element has margin: auto the offsetLeft and marginLeft\n // are the same in Safari causing offset.left to incorrectly be 0\n offset.top -= parseFloat( $(elem).css('margin-top') ) || 0\n offset.left -= parseFloat( $(elem).css('margin-left') ) || 0\n\n // Add offsetParent borders\n parentOffset.top += parseFloat( $(offsetParent[0]).css('border-top-width') ) || 0\n parentOffset.left += parseFloat( $(offsetParent[0]).css('border-left-width') ) || 0\n\n // Subtract the two offsets\n return {\n top: offset.top - parentOffset.top,\n left: offset.left - parentOffset.left\n }\n },\n offsetParent: function() {\n return this.map(function(){\n var parent = this.offsetParent || document.body\n while (parent && !rootNodeRE.test(parent.nodeName) && $(parent).css(\"position\") == \"static\")\n parent = parent.offsetParent\n return parent\n })\n }\n }\n\n // for now\n $.fn.detach = $.fn.remove\n\n // Generate the `width` and `height` functions\n ;['width', 'height'].forEach(function(dimension){\n var dimensionProperty =\n dimension.replace(/./, function(m){ return m[0].toUpperCase() })\n\n $.fn[dimension] = function(value){\n var offset, el = this[0]\n if (value === undefined) return isWindow(el) ? el['inner' + dimensionProperty] :\n isDocument(el) ? el.documentElement['scroll' + dimensionProperty] :\n (offset = this.offset()) && offset[dimension]\n else return this.each(function(idx){\n el = $(this)\n el.css(dimension, funcArg(this, value, idx, el[dimension]()))\n })\n }\n })\n\n function traverseNode(node, fun) {\n fun(node)\n for (var i = 0, len = node.childNodes.length; i < len; i++)\n traverseNode(node.childNodes[i], fun)\n }\n\n // Generate the `after`, `prepend`, `before`, `append`,\n // `insertAfter`, `insertBefore`, `appendTo`, and `prependTo` methods.\n adjacencyOperators.forEach(function(operator, operatorIndex) {\n var inside = operatorIndex % 2 //=> prepend, append\n\n $.fn[operator] = function(){\n // arguments can be nodes, arrays of nodes, Zepto objects and HTML strings\n var argType, nodes = $.map(arguments, function(arg) {\n var arr = []\n argType = type(arg)\n if (argType == \"array\") {\n arg.forEach(function(el) {\n if (el.nodeType !== undefined) return arr.push(el)\n else if ($.zepto.isZ(el)) return arr = arr.concat(el.get())\n arr = arr.concat(zepto.fragment(el))\n })\n return arr\n }\n return argType == \"object\" || arg == null ?\n arg : zepto.fragment(arg)\n }),\n parent, copyByClone = this.length > 1\n if (nodes.length < 1) return this\n\n return this.each(function(_, target){\n parent = inside ? target : target.parentNode\n\n // convert all methods to a \"before\" operation\n target = operatorIndex == 0 ? target.nextSibling :\n operatorIndex == 1 ? target.firstChild :\n operatorIndex == 2 ? target :\n null\n\n var parentInDocument = $.contains(document.documentElement, parent)\n\n nodes.forEach(function(node){\n if (copyByClone) node = node.cloneNode(true)\n else if (!parent) return $(node).remove()\n\n parent.insertBefore(node, target)\n if (parentInDocument) traverseNode(node, function(el){\n if (el.nodeName != null && el.nodeName.toUpperCase() === 'SCRIPT' &&\n (!el.type || el.type === 'text/javascript') && !el.src){\n var target = el.ownerDocument ? el.ownerDocument.defaultView : window\n target['eval'].call(target, el.innerHTML)\n }\n })\n })\n })\n }\n\n // after => insertAfter\n // prepend => prependTo\n // before => insertBefore\n // append => appendTo\n $.fn[inside ? operator+'To' : 'insert'+(operatorIndex ? 'Before' : 'After')] = function(html){\n $(html)[operator](this)\n return this\n }\n })\n\n zepto.Z.prototype = Z.prototype = $.fn\n\n // Export internal API functions in the `$.zepto` namespace\n zepto.uniq = uniq\n zepto.deserializeValue = deserializeValue\n $.zepto = zepto\n\n return $\n})()\n\nmodule.exports = Zepto;\n","// Zepto.js\n// (c) 2010-2016 Thomas Fuchs\n// Zepto.js may be freely distributed under the MIT license.\n\nvar Zepto = require('./zepto');\n\n;(function($){\n var _zid = 1, undefined,\n slice = Array.prototype.slice,\n isFunction = $.isFunction,\n isString = function(obj){ return typeof obj == 'string' },\n handlers = {},\n specialEvents={},\n focusinSupported = 'onfocusin' in window,\n focus = { focus: 'focusin', blur: 'focusout' },\n hover = { mouseenter: 'mouseover', mouseleave: 'mouseout' }\n\n specialEvents.click = specialEvents.mousedown = specialEvents.mouseup = specialEvents.mousemove = 'MouseEvents'\n\n function zid(element) {\n return element._zid || (element._zid = _zid++)\n }\n function findHandlers(element, event, fn, selector) {\n event = parse(event)\n if (event.ns) var matcher = matcherFor(event.ns)\n return (handlers[zid(element)] || []).filter(function(handler) {\n return handler\n && (!event.e || handler.e == event.e)\n && (!event.ns || matcher.test(handler.ns))\n && (!fn || zid(handler.fn) === zid(fn))\n && (!selector || handler.sel == selector)\n })\n }\n function parse(event) {\n var parts = ('' + event).split('.')\n return {e: parts[0], ns: parts.slice(1).sort().join(' ')}\n }\n function matcherFor(ns) {\n return new RegExp('(?:^| )' + ns.replace(' ', ' .* ?') + '(?: |$)')\n }\n\n function eventCapture(handler, captureSetting) {\n return handler.del &&\n (!focusinSupported && (handler.e in focus)) ||\n !!captureSetting\n }\n\n function realEvent(type) {\n return hover[type] || (focusinSupported && focus[type]) || type\n }\n\n function add(element, events, fn, data, selector, delegator, capture){\n var id = zid(element), set = (handlers[id] || (handlers[id] = []))\n events.split(/\\s/).forEach(function(event){\n if (event == 'ready') return $(document).ready(fn)\n var handler = parse(event)\n handler.fn = fn\n handler.sel = selector\n // emulate mouseenter, mouseleave\n if (handler.e in hover) fn = function(e){\n var related = e.relatedTarget\n if (!related || (related !== this && !$.contains(this, related)))\n return handler.fn.apply(this, arguments)\n }\n handler.del = delegator\n var callback = delegator || fn\n handler.proxy = function(e){\n e = compatible(e)\n if (e.isImmediatePropagationStopped()) return\n e.data = data\n var result = callback.apply(element, e._args == undefined ? [e] : [e].concat(e._args))\n if (result === false) e.preventDefault(), e.stopPropagation()\n return result\n }\n handler.i = set.length\n set.push(handler)\n if ('addEventListener' in element)\n element.addEventListener(realEvent(handler.e), handler.proxy, eventCapture(handler, capture))\n })\n }\n function remove(element, events, fn, selector, capture){\n var id = zid(element)\n ;(events || '').split(/\\s/).forEach(function(event){\n findHandlers(element, event, fn, selector).forEach(function(handler){\n delete handlers[id][handler.i]\n if ('removeEventListener' in element)\n element.removeEventListener(realEvent(handler.e), handler.proxy, eventCapture(handler, capture))\n })\n })\n }\n\n $.event = { add: add, remove: remove }\n\n $.proxy = function(fn, context) {\n var args = (2 in arguments) && slice.call(arguments, 2)\n if (isFunction(fn)) {\n var proxyFn = function(){ return fn.apply(context, args ? args.concat(slice.call(arguments)) : arguments) }\n proxyFn._zid = zid(fn)\n return proxyFn\n } else if (isString(context)) {\n if (args) {\n args.unshift(fn[context], fn)\n return $.proxy.apply(null, args)\n } else {\n return $.proxy(fn[context], fn)\n }\n } else {\n throw new TypeError(\"expected function\")\n }\n }\n\n $.fn.bind = function(event, data, callback){\n return this.on(event, data, callback)\n }\n $.fn.unbind = function(event, callback){\n return this.off(event, callback)\n }\n $.fn.one = function(event, selector, data, callback){\n return this.on(event, selector, data, callback, 1)\n }\n\n var returnTrue = function(){return true},\n returnFalse = function(){return false},\n ignoreProperties = /^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,\n eventMethods = {\n preventDefault: 'isDefaultPrevented',\n stopImmediatePropagation: 'isImmediatePropagationStopped',\n stopPropagation: 'isPropagationStopped'\n }\n\n function compatible(event, source) {\n if (source || !event.isDefaultPrevented) {\n source || (source = event)\n\n $.each(eventMethods, function(name, predicate) {\n var sourceMethod = source[name]\n event[name] = function(){\n this[predicate] = returnTrue\n return sourceMethod && sourceMethod.apply(source, arguments)\n }\n event[predicate] = returnFalse\n })\n\n try {\n event.timeStamp || (event.timeStamp = Date.now())\n } catch (ignored) { }\n\n if (source.defaultPrevented !== undefined ? source.defaultPrevented :\n 'returnValue' in source ? source.returnValue === false :\n source.getPreventDefault && source.getPreventDefault())\n event.isDefaultPrevented = returnTrue\n }\n return event\n }\n\n function createProxy(event) {\n var key, proxy = { originalEvent: event }\n for (key in event)\n if (!ignoreProperties.test(key) && event[key] !== undefined) proxy[key] = event[key]\n\n return compatible(proxy, event)\n }\n\n $.fn.delegate = function(selector, event, callback){\n return this.on(event, selector, callback)\n }\n $.fn.undelegate = function(selector, event, callback){\n return this.off(event, selector, callback)\n }\n\n $.fn.live = function(event, callback){\n $(document.body).delegate(this.selector, event, callback)\n return this\n }\n $.fn.die = function(event, callback){\n $(document.body).undelegate(this.selector, event, callback)\n return this\n }\n\n $.fn.on = function(event, selector, data, callback, one){\n var autoRemove, delegator, $this = this\n if (event && !isString(event)) {\n $.each(event, function(type, fn){\n $this.on(type, selector, data, fn, one)\n })\n return $this\n }\n\n if (!isString(selector) && !isFunction(callback) && callback !== false)\n callback = data, data = selector, selector = undefined\n if (callback === undefined || data === false)\n callback = data, data = undefined\n\n if (callback === false) callback = returnFalse\n\n return $this.each(function(_, element){\n if (one) autoRemove = function(e){\n remove(element, e.type, callback)\n return callback.apply(this, arguments)\n }\n\n if (selector) delegator = function(e){\n var evt, match = $(e.target).closest(selector, element).get(0)\n if (match && match !== element) {\n evt = $.extend(createProxy(e), {currentTarget: match, liveFired: element})\n return (autoRemove || callback).apply(match, [evt].concat(slice.call(arguments, 1)))\n }\n }\n\n add(element, event, callback, data, selector, delegator || autoRemove)\n })\n }\n $.fn.off = function(event, selector, callback){\n var $this = this\n if (event && !isString(event)) {\n $.each(event, function(type, fn){\n $this.off(type, selector, fn)\n })\n return $this\n }\n\n if (!isString(selector) && !isFunction(callback) && callback !== false)\n callback = selector, selector = undefined\n\n if (callback === false) callback = returnFalse\n\n return $this.each(function(){\n remove(this, event, callback, selector)\n })\n }\n\n $.fn.trigger = function(event, args){\n event = (isString(event) || $.isPlainObject(event)) ? $.Event(event) : compatible(event)\n event._args = args\n return this.each(function(){\n // handle focus(), blur() by calling them directly\n if (event.type in focus && typeof this[event.type] == \"function\") this[event.type]()\n // items in the collection might not be DOM elements\n else if ('dispatchEvent' in this) this.dispatchEvent(event)\n else $(this).triggerHandler(event, args)\n })\n }\n\n // triggers event handlers on current element just as if an event occurred,\n // doesn't trigger an actual event, doesn't bubble\n $.fn.triggerHandler = function(event, args){\n var e, result\n this.each(function(i, element){\n e = createProxy(isString(event) ? $.Event(event) : event)\n e._args = args\n e.target = element\n $.each(findHandlers(element, event.type || event), function(i, handler){\n result = handler.proxy(e)\n if (e.isImmediatePropagationStopped()) return false\n })\n })\n return result\n }\n\n // shortcut methods for `.bind(event, fn)` for each event type\n ;('focusin focusout focus blur load resize scroll unload click dblclick '+\n 'mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave '+\n 'change select keydown keypress keyup error').split(' ').forEach(function(event) {\n $.fn[event] = function(callback) {\n return (0 in arguments) ?\n this.bind(event, callback) :\n this.trigger(event)\n }\n })\n\n $.Event = function(type, props) {\n if (!isString(type)) props = type, type = props.type\n var event = document.createEvent(specialEvents[type] || 'Events'), bubbles = true\n if (props) for (var name in props) (name == 'bubbles') ? (bubbles = !!props[name]) : (event[name] = props[name])\n event.initEvent(type, bubbles, true)\n return compatible(event)\n }\n\n})(Zepto)\n","// Zepto.js\n// (c) 2010-2016 Thomas Fuchs\n// Zepto.js may be freely distributed under the MIT license.\n\n;(function(){\n // getComputedStyle shouldn't freak out when called\n // without a valid element as argument\n try {\n getComputedStyle(undefined)\n } catch(e) {\n var nativeGetComputedStyle = getComputedStyle\n window.getComputedStyle = function(element, pseudoElement){\n try {\n return nativeGetComputedStyle(element, pseudoElement)\n } catch(e) {\n return null\n }\n }\n }\n})()\n","// Zepto.js\n// (c) 2010-2016 Thomas Fuchs\n// Zepto.js may be freely distributed under the MIT license.\n\nvar Zepto = require('./zepto');\n\n;(function($){\n $.fn.end = function(){\n return this.prevObject || $()\n }\n\n $.fn.andSelf = function(){\n return this.add(this.prevObject || $())\n }\n\n 'filter,add,not,eq,first,last,find,closest,parents,parent,children,siblings'.split(',').forEach(function(property){\n var fn = $.fn[property]\n $.fn[property] = function(){\n var ret = fn.apply(this, arguments)\n ret.prevObject = this\n return ret\n }\n })\n})(Zepto)\n","// Zepto.js\n// (c) 2010-2016 Thomas Fuchs\n// Zepto.js may be freely distributed under the MIT license.\n\nvar Zepto = require('./zepto');\n\n;(function($){\n var zepto = $.zepto, oldQsa = zepto.qsa, oldMatches = zepto.matches\n\n function visible(elem){\n elem = $(elem)\n return !!(elem.width() || elem.height()) && elem.css(\"display\") !== \"none\"\n }\n\n // Implements a subset from:\n // http://api.jquery.com/category/selectors/jquery-selector-extensions/\n //\n // Each filter function receives the current index, all nodes in the\n // considered set, and a value if there were parentheses. The value\n // of `this` is the node currently being considered. The function returns the\n // resulting node(s), null, or undefined.\n //\n // Complex selectors are not supported:\n // li:has(label:contains(\"foo\")) + li:has(label:contains(\"bar\"))\n // ul.inner:first > li\n var filters = $.expr[':'] = {\n visible: function(){ if (visible(this)) return this },\n hidden: function(){ if (!visible(this)) return this },\n selected: function(){ if (this.selected) return this },\n checked: function(){ if (this.checked) return this },\n parent: function(){ return this.parentNode },\n first: function(idx){ if (idx === 0) return this },\n last: function(idx, nodes){ if (idx === nodes.length - 1) return this },\n eq: function(idx, _, value){ if (idx === value) return this },\n contains: function(idx, _, text){ if ($(this).text().indexOf(text) > -1) return this },\n has: function(idx, _, sel){ if (zepto.qsa(this, sel).length) return this }\n }\n\n var filterRe = new RegExp('(.*):(\\\\w+)(?:\\\\(([^)]+)\\\\))?$\\\\s*'),\n childRe = /^\\s*>/,\n classTag = 'Zepto' + (+new Date())\n\n function process(sel, fn) {\n // quote the hash in `a[href^=#]` expression\n sel = sel.replace(/=#\\]/g, '=\"#\"]')\n var filter, arg, match = filterRe.exec(sel)\n if (match && match[2] in filters) {\n filter = filters[match[2]], arg = match[3]\n sel = match[1]\n if (arg) {\n var num = Number(arg)\n if (isNaN(num)) arg = arg.replace(/^[\"']|[\"']$/g, '')\n else arg = num\n }\n }\n return fn(sel, filter, arg)\n }\n\n zepto.qsa = function(node, selector) {\n return process(selector, function(sel, filter, arg){\n try {\n var taggedParent\n if (!sel && filter) sel = '*'\n else if (childRe.test(sel))\n // support \"> *\" child queries by tagging the parent node with a\n // unique class and prepending that classname onto the selector\n taggedParent = $(node).addClass(classTag), sel = '.'+classTag+' '+sel\n\n var nodes = oldQsa(node, sel)\n } catch(e) {\n console.error('error performing selector: %o', selector)\n throw e\n } finally {\n if (taggedParent) taggedParent.removeClass(classTag)\n }\n return !filter ? nodes :\n zepto.uniq($.map(nodes, function(n, i){ return filter.call(n, i, nodes, arg) }))\n })\n }\n\n zepto.matches = function(node, selector){\n return process(selector, function(sel, filter, arg){\n return (!sel || oldMatches(node, sel)) &&\n (!filter || filter.call(node, null, arg) === node)\n })\n }\n})(Zepto)\n","# Use zepto if there's no jquery involved so we can run without it.\n# Use jquery or something else if you need better compatibility.\nimport zepto from 'zepto-modules/zepto'\nimport 'zepto-modules/event'\nimport 'zepto-modules/ie'\nimport 'zepto-modules/stack'\nimport 'zepto-modules/selector'\n\n$ = zepto\n\nif !window.$?\n # add in outer support from https://gist.github.com/pamelafox/1379704\n ['width', 'height'].forEach (dimension)->\n Dimension = dimension.replace /./, (m)-> return m[0].toUpperCase()\n $.fn['outer' + Dimension] = (margin)->\n elem = this\n if elem\n size = elem[dimension]()\n sides =\n width: ['left', 'right']\n height: ['top', 'bottom']\n sides[dimension].forEach (side)->\n if margin\n size += parseInt elem.css('margin-' + side), 10\n return size\n else\n return null\n\n window.$ = $\nelse\n # Use whichever $\n $ = window.$\n\nexport default $\n\n","export default {\n 'a': '[aḀḁĂăÂâǍǎȺⱥȦȧẠạÄäÀàÁáĀāÃãÅåąĄÃąĄ]',\n 'b': '[b␢βΒB฿𐌁ᛒ]',\n 'c': '[cĆćĈĉČčĊċC̄c̄ÇçḈḉȻȼƇƈɕᴄCc]',\n 'd': '[dĎďḊḋḐḑḌḍḒḓḎḏĐđD̦d̦ƉɖƊɗƋƌᵭᶁᶑȡᴅDdð]',\n 'e': '[eÉéÈèÊêḘḙĚěĔĕẼẽḚḛẺẻĖėËëĒēȨȩĘęᶒɆɇȄȅẾếỀềỄễỂểḜḝḖḗḔḕȆȇẸẹỆệⱸᴇEeɘǝƏƐε]',\n 'f': '[fƑƒḞḟ]',\n 'g': '[gɢ₲ǤǥĜĝĞğĢģƓɠĠġ]',\n 'h': '[hĤĥĦħḨḩẖẖḤḥḢḣɦʰǶƕ]',\n 'i': '[iÍíÌìĬĭÎîǏǐÏïḮḯĨĩĮįĪīỈỉȈȉȊȋỊịḬḭƗɨɨ̆ᵻᶖİiIıɪIi]',\n 'j': '[jȷĴĵɈɉʝɟʲ]',\n 'k': '[kƘƙꝀꝁḰḱǨǩḲḳḴḵκϰ₭]',\n 'l': '[lŁłĽľĻļĹĺḶḷḸḹḼḽḺḻĿŀȽƚⱠⱡⱢɫɬᶅɭȴʟLl]',\n 'n': '[nŃńǸǹŇňÑñṄṅŅņṆṇṊṋṈṉN̈n̈ƝɲȠƞᵰᶇɳȵɴNnŊŋ]',\n 'o': '[oØøÖöÓóÒòÔôǑǒŐőŎŏȮȯỌọƟɵƠơỎỏŌōÕõǪǫȌȍՕօ]',\n 'p': '[pṔṕṖṗⱣᵽƤƥᵱ]',\n 'q': '[qꝖꝗʠɊɋꝘꝙq̃]',\n 'r': '[rŔŕɌɍŘřŖŗṘṙȐȑȒȓṚṛⱤɽ]',\n 's': '[sŚśṠṡṢṣꞨꞩŜŝŠšŞşȘșS̈s̈]',\n 't': '[tŤťṪṫŢţṬṭƮʈȚțṰṱṮṯƬƭ]',\n 'u': '[uŬŭɄʉỤụÜüÚúÙùÛûǓǔŰűŬŭƯưỦủŪūŨũŲųȔȕ∪]',\n 'v': '[vṼṽṾṿƲʋꝞꝟⱱʋ]',\n 'w': '[wẂẃẀẁŴŵẄẅẆẇẈẉ]',\n 'x': '[xẌẍẊẋχ]',\n 'y': '[yÝýỲỳŶŷŸÿỸỹẎẏỴỵɎɏƳƴ]',\n 'z': '[zŹźẐẑŽžŻżẒẓẔẕƵƶ]'\n};\n","import DIACRITICS from './diacritics'\n\nvar asciifold = (function() {\n var i, n, k, chunk;\n var foreignletters = '';\n var lookup = {};\n for (k in DIACRITICS) {\n if (DIACRITICS.hasOwnProperty(k)) {\n chunk = DIACRITICS[k].substring(2, DIACRITICS[k].length - 1);\n foreignletters += chunk;\n for (i = 0, n = chunk.length; i < n; i++) {\n lookup[chunk.charAt(i)] = k;\n }\n }\n }\n var regexp = new RegExp('[' + foreignletters + ']', 'g');\n return function(str) {\n return str.replace(regexp, function(foreignletter) {\n return lookup[foreignletter];\n }).toLowerCase();\n };\n})();\n\nexport function cmp(a, b) {\n if (typeof a === 'number' && typeof b === 'number') {\n return a > b ? 1 : (a < b ? -1 : 0);\n }\n a = asciifold(String(a || ''));\n b = asciifold(String(b || ''));\n if (a > b) return 1;\n if (b > a) return -1;\n return 0;\n}\n\nexport function extend(a, b) {\n var i, n, k, object;\n for (i = 1, n = arguments.length; i < n; i++) {\n object = arguments[i];\n if (!object) continue;\n for (k in object) {\n if (object.hasOwnProperty(k)) {\n a[k] = object[k];\n }\n }\n }\n return a;\n}\n\n/**\n * A property getter resolving dot-notation\n * @param {Object} obj The root object to fetch property on\n * @param {String} name The optionally dotted property name to fetch\n * @param {Boolean} nesting Handle nesting or not\n * @return {Object} The resolved property value\n */\nexport function getattr(obj, name, nesting) {\n if (!obj || !name) return;\n if (!nesting) return obj[name];\n var names = name.split('.');\n while(names.length && (obj = obj[names.shift()]));\n return obj;\n}\n\nexport function trim(str) {\n return (str + '').replace(/^\\s+|\\s+$|/g, '');\n}\n\nexport function escapeRegex(str) {\n return (str + '').replace(/([.?*+^$[\\]\\\\(){}|-])/g, '\\\\$1');\n}\n\nexport const isArray = Array.isArray || (typeof $ !== 'undefined' && $.isArray) || function(object) {\n return Object.prototype.toString.call(object) === '[object Array]';\n};\n","/**\n * sifter.js\n * Copyright (c) 2013 Brian Reavis & contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n * @author Brian Reavis <[email protected]>\n */\n\n/**\n * Textually searches arrays and hashes of objects\n * by property (or multiple properties). Designed\n * specifically for autocomplete.\n *\n * @constructor\n * @param {array|object} items\n * @param {object} items\n */\nimport {cmp, extend, escapeRegex, isArray, getattr, trim} from './utils';\nimport DIACRITICS from './diacritics';\n\n\nexport default function Sifter(items, settings) {\n this.items = items;\n this.settings = settings || {diacritics: true};\n}\n\n/**\n * Splits a search string into an array of individual\n * regexps to be used to match results.\n *\n * @param {string} query\n * @returns {array}\n */\nSifter.prototype.tokenize = function(query) {\n query = trim(String(query || '').toLowerCase());\n if (!query || !query.length) return [];\n\n var i, n, regex, letter;\n var tokens = [];\n var words = query.split(/ +/);\n\n for (i = 0, n = words.length; i < n; i++) {\n regex = escapeRegex(words[i]);\n if (this.settings.diacritics) {\n for (letter in DIACRITICS) {\n if (DIACRITICS.hasOwnProperty(letter)) {\n regex = regex.replace(new RegExp(letter, 'g'), DIACRITICS[letter]);\n }\n }\n }\n tokens.push({\n string : words[i],\n regex : new RegExp(regex, 'i')\n });\n }\n\n return tokens;\n};\n\n/**\n * Iterates over arrays and hashes.\n *\n * ```\n * this.iterator(this.items, function(item, id) {\n * // invoked for each item\n * });\n * ```\n *\n * @param {array|object} object\n */\nSifter.prototype.iterator = function(object, callback) {\n var iterator;\n if (isArray(object)) {\n iterator = Array.prototype.forEach || function(callback) {\n for (var i = 0, n = this.length; i < n; i++) {\n callback(this[i], i, this);\n }\n };\n } else {\n iterator = function(callback) {\n for (var key in this) {\n if (this.hasOwnProperty(key)) {\n callback(this[key], key, this);\n }\n }\n };\n }\n\n iterator.apply(object, [callback]);\n};\n\n/**\n * Returns a function to be used to score individual results.\n *\n * Good matches will have a higher score than poor matches.\n * If an item is not a match, 0 will be returned by the function.\n *\n * @param {object|string} search\n * @param {object} options (optional)\n * @returns {function}\n */\nSifter.prototype.getScoreFunction = function(search, options) {\n var self, fields, tokens, tokenCount, nesting;\n\n self = this;\n search = self.prepareSearch(search, options);\n tokens = search.tokens;\n fields = search.options.fields;\n tokenCount = tokens.length;\n nesting = search.options.nesting;\n\n /**\n * Calculates how close of a match the\n * given value is against a search token.\n *\n * @param {mixed} value\n * @param {object} token\n * @return {number}\n */\n function scoreValue(value, token) {\n var score, pos;\n\n if (!value) return 0;\n value = String(value || '');\n pos = value.search(token.regex);\n if (pos === -1) return 0;\n score = token.string.length / value.length;\n if (pos === 0) score += 0.5;\n return score;\n }\n\n /**\n * Calculates the score of an object\n * against the search query.\n *\n * @param {object} token\n * @param {object} data\n * @return {number}\n */\n var scoreObject = (function() {\n var fieldCount = fields.length;\n if (!fieldCount) {\n return function() { return 0; };\n }\n if (fieldCount === 1) {\n return function(token, data) {\n return scoreValue(getattr(data, fields[0], nesting), token);\n };\n }\n return function(token, data) {\n for (var i = 0, sum = 0; i < fieldCount; i++) {\n sum += scoreValue(getattr(data, fields[i], nesting), token);\n }\n return sum / fieldCount;\n };\n })();\n\n if (!tokenCount) {\n return function() { return 0; };\n }\n if (tokenCount === 1) {\n return function(data) {\n return scoreObject(tokens[0], data);\n };\n }\n\n if (search.options.conjunction === 'and') {\n return function(data) {\n var score;\n for (var i = 0, sum = 0; i < tokenCount; i++) {\n score = scoreObject(tokens[i], data);\n if (score <= 0) return 0;\n sum += score;\n }\n return sum / tokenCount;\n };\n } else {\n return function(data) {\n for (var i = 0, sum = 0; i < tokenCount; i++) {\n sum += scoreObject(tokens[i], data);\n }\n return sum / tokenCount;\n };\n }\n};\n\n/**\n * Returns a function that can be used to compare two\n * results, for sorting purposes. If no sorting should\n * be performed, `null` will be returned.\n *\n * @param {string|object} search\n * @param {object} options\n * @return function(a,b)\n */\nSifter.prototype.getSortFunction = function(search, options) {\n var i, n, self, field, fields, fieldsCount, multiplier, multipliers, sort, implicitScore;\n\n self = this;\n search = self.prepareSearch(search, options);\n sort = (!search.query && options.sortEmpty) || options.sort;\n\n /**\n * Fetches the specified sort field value\n * from a search result item.\n *\n * @param {string} name\n * @param {object} result\n * @return {mixed}\n */\n function getField(name, result) {\n if (name === '$score') return result.score;\n return getattr(self.items[result.id], name, options.nesting);\n }\n\n // parse options\n fields = [];\n if (sort) {\n for (i = 0, n = sort.length; i < n; i++) {\n if (search.query || sort[i].field !== '$score') {\n fields.push(sort[i]);\n }\n }\n }\n\n // the \"$score\" field is implied to be the primary\n // sort field, unless it's manually specified\n if (search.query) {\n implicitScore = true;\n for (i = 0, n = fields.length; i < n; i++) {\n if (fields[i].field === '$score') {\n implicitScore = false;\n break;\n }\n }\n if (implicitScore) {\n fields.unshift({field: '$score', direction: 'desc'});\n }\n } else {\n for (i = 0, n = fields.length; i < n; i++) {\n if (fields[i].field === '$score') {\n fields.splice(i, 1);\n break;\n }\n }\n }\n\n multipliers = [];\n for (i = 0, n = fields.length; i < n; i++) {\n multipliers.push(fields[i].direction === 'desc' ? -1 : 1);\n }\n\n // build function\n fieldsCount = fields.length;\n if (!fieldsCount) {\n return null;\n } else if (fieldsCount === 1) {\n field = fields[0].field;\n multiplier = multipliers[0];\n return function(a, b) {\n return multiplier * cmp(\n getField(field, a),\n getField(field, b)\n );\n };\n } else {\n return function(a, b) {\n var i, result, field;\n for (i = 0; i < fieldsCount; i++) {\n field = fields[i].field;\n result = multipliers[i] * cmp(\n getField(field, a),\n getField(field, b)\n );\n if (result) return result;\n }\n return 0;\n };\n }\n};\n\n/**\n * Parses a search query and returns an object\n * with tokens and fields ready to be populated\n * with results.\n *\n * @param {string} query\n * @param {object} options\n * @returns {object}\n */\nSifter.prototype.prepareSearch = function(query, options) {\n if (typeof query === 'object') return query;\n\n options = extend({}, options);\n\n var optionFields = options.fields;\n var optionSort = options.sort;\n var optionSortEmpty = options.sortEmpty;\n\n if (optionFields && !isArray(optionFields)) options.fields = [optionFields];\n if (optionSort && !isArray(optionSort)) options.sort = [optionSort];\n if (optionSortEmpty && !isArray(optionSortEmpty)) options.sortEmpty = [optionSortEmpty];\n\n return {\n options : options,\n query : String(query || '').toLowerCase(),\n tokens : this.tokenize(query),\n total : 0,\n items : []\n };\n};\n\n/**\n * Searches through all items and returns a sorted array of matches.\n *\n * The `options` parameter can contain:\n *\n * - fields {string|array}\n * - sort {array}\n * - score {function}\n * - filter {bool}\n * - limit {integer}\n *\n * Returns an object containing:\n *\n * - options {object}\n * - query {string}\n * - tokens {array}\n * - total {int}\n * - items {array}\n *\n * @param {string} query\n * @param {object} options\n * @returns {object}\n */\nSifter.prototype.search = function(query, options) {\n var self = this, score, search;\n var fnSort;\n var fnScore;\n\n search = this.prepareSearch(query, options);\n options = search.options;\n query = search.query;\n\n // generate result scoring function\n fnScore = options.score || self.getScoreFunction(search);\n\n // perform search and sort\n if (query.length) {\n self.iterator(self.items, function(item, id) {\n score = fnScore(item);\n if (options.filter === false || score > 0) {\n search.items.push({'score': score, 'id': id});\n }\n });\n } else {\n self.iterator(self.items, function(item, id) {\n search.items.push({'score': 1, 'id': id});\n });\n }\n\n fnSort = self.getSortFunction(search, options);\n if (fnSort) search.items.sort(fnSort);\n\n // apply limits\n search.total = search.items.length;\n if (typeof options.limit === 'number') {\n search.items = search.items.slice(0, options.limit);\n }\n\n return search;\n};\n","import toString from 'es-tostring'\n\n# Test if 'value' is an array.\n#\n# @param {Mixed} value value to test\n# @return {Boolean} true if `value` is an array, false otherwise\n# @api public\nexport default isArray = Array.isArray or (value) ->\n toString(value) == '[object Array]'\n","/**\n * microplugin.js\n * Copyright (c) 2013 Brian Reavis & contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n * @author Brian Reavis <[email protected]>\n */\n\nimport isArray from 'es-is/array';\n\nconst MicroPlugin = {};\n\nMicroPlugin.mixin = function(Interface) {\n Interface.plugins = {};\n\n /**\n * Initializes the listed plugins (with options).\n * Acceptable formats:\n *\n * List (without options):\n * ['a', 'b', 'c']\n *\n * List (with options):\n * [{'name': 'a', options: {}}, {'name': 'b', options: {}}]\n *\n * Hash (with options):\n * {'a': { ... }, 'b': { ... }, 'c': { ... }}\n *\n * @param {mixed} plugins\n */\n Interface.prototype.initializePlugins = function(plugins) {\n var i, n, key;\n var self = this;\n var queue = [];\n\n self.plugins = {\n names : [],\n settings : {},\n requested : {},\n loaded : {}\n };\n\n if (isArray(plugins)) {\n for (i = 0, n = plugins.length; i < n; i++) {\n if (typeof plugins[i] === 'string') {\n queue.push(plugins[i]);\n } else {\n self.plugins.settings[plugins[i].name] = plugins[i].options;\n queue.push(plugins[i].name);\n }\n }\n } else if (plugins) {\n for (key in plugins) {\n if (plugins.hasOwnProperty(key)) {\n self.plugins.settings[key] = plugins[key];\n queue.push(key);\n }\n }\n }\n\n while (queue.length) {\n self.require(queue.shift());\n }\n };\n\n Interface.prototype.loadPlugin = function(name) {\n var self = this;\n var plugins = self.plugins;\n var plugin = Interface.plugins[name];\n\n if (!Interface.plugins.hasOwnProperty(name)) {\n throw new Error('Unable to find \"' + name + '\" plugin');\n }\n\n plugins.requested[name] = true;\n plugins.loaded[name] = plugin.fn.apply(self, [self.plugins.settings[name] || {}]);\n plugins.names.push(name);\n };\n\n /**\n * Initializes a plugin.\n *\n * @param {string} name\n */\n Interface.prototype.require = function(name) {\n var self = this;\n var plugins = self.plugins;\n\n if (!self.plugins.loaded.hasOwnProperty(name)) {\n if (plugins.requested[name]) {\n throw new Error('Plugin has circular dependency (\"' + name + '\")');\n }\n self.loadPlugin(name);\n }\n\n return plugins.loaded[name];\n };\n\n /**\n * Registers a plugin.\n *\n * @param {string} name\n * @param {function} fn\n */\n Interface.define = function(name, fn) {\n Interface.plugins[name] = {\n 'name' : name,\n 'fn' : fn\n };\n };\n};\n\nexport default MicroPlugin;\n","/**\n * MicroEvent - to make any js object an event emitter\n *\n * - pure javascript - server compatible, browser compatible\n * - dont rely on the browser doms\n * - super simple - you get it immediatly, no mistery, no magic involved\n *\n * @author Jerome Etienne (https://github.com/jeromeetienne)\n */\n\nexport default function MicroEvent() {}\n\nMicroEvent.prototype = {\n\ton: function(event, fct){\n\t\tthis._events = this._events || {};\n\t\tthis._events[event] = this._events[event] || [];\n\t\tthis._events[event].push(fct);\n\t},\n\toff: function(event, fct){\n\t\tvar n = arguments.length;\n\t\tif (n === 0) return delete this._events;\n\t\tif (n === 1) return delete this._events[event];\n\n\t\tthis._events = this._events || {};\n\t\tif (event in this._events === false) return;\n\t\tthis._events[event].splice(this._events[event].indexOf(fct), 1);\n\t},\n\ttrigger: function(event /* , args... */){\n\t\tthis._events = this._events || {};\n\t\tif (event in this._events === false) return;\n\t\tfor (var i = 0; i < this._events[event].length; i++){\n\t\t\tthis._events[event][i].apply(this, Array.prototype.slice.call(arguments, 1));\n\t\t}\n\t}\n};\n\n/**\n * Mixin will delegate all MicroEvent.js function in the destination object.\n *\n * - MicroEvent.mixin(Foobar) will make Foobar able to use MicroEvent\n *\n * @param {object} the object which will support MicroEvent\n */\nMicroEvent.mixin = function(destObject){\n\tvar props = ['on', 'off', 'trigger'];\n\tfor (var i = 0; i < props.length; i++){\n\t\tdestObject.prototype[props[i]] = MicroEvent.prototype[props[i]];\n\t}\n};\n","/**\n * highlight v3 | MIT license | Johann Burkard <[email protected]>\n * Highlights arbitrary terms in a node.\n *\n * - Modified by Marshal <[email protected]> 2011-6-24 (added regex)\n * - Modified by Brian Reavis <[email protected]> 2012-8-27 (cleanup)\n */\n\nexport default function highlight($element, pattern) {\n\tif (typeof pattern === 'string' && !pattern.length) return;\n\tvar regex = (typeof pattern === 'string') ? new RegExp(pattern, 'i') : pattern;\n\n\tvar highlight = function(node) {\n\t\tvar skip = 0;\n\t\tif (node.nodeType === 3) {\n\t\t\tvar pos = node.data.search(regex);\n\t\t\tif (pos >= 0 && node.data.length > 0) {\n\t\t\t\t// var match = node.data.match(regex);\n\t\t\t\tvar spannode = document.createElement('span');\n\t\t\t\tspannode.className = 'highlight';\n\t\t\t\tvar middlebit = node.splitText(pos);\n\t\t\t\t// var endbit = middlebit.splitText(match[0].length);\n\t\t\t\tvar middleclone = middlebit.cloneNode(true);\n\t\t\t\tspannode.appendChild(middleclone);\n\t\t\t\tmiddlebit.parentNode.replaceChild(spannode, middlebit);\n\t\t\t\tskip = 1;\n\t\t\t}\n\t\t} else if (node.nodeType === 1 && node.childNodes && !/(script|style)/i.test(node.tagName)) {\n\t\t\tfor (var i = 0; i < node.childNodes.length; ++i) {\n\t\t\t\ti += highlight(node.childNodes[i]);\n\t\t\t}\n\t\t}\n\t\treturn skip;\n\t};\n\n\treturn $element.each(function() {\n\t\thighlight(this);\n\t});\n}\n\n/**\n * removeHighlight fn copied from highlight v5 and\n * edited to remove with() and pass js strict mode\n */\nexport function init() {\n $.fn.removeHighlight = function() {\n return this.find('span.highlight').each(function() {\n // this.parentNode.firstChild.nodeName;\n var parent = this.parentNode;\n parent.replaceChild(this.firstChild, this);\n parent.normalize();\n }).end();\n };\n}\n","export default {\n\toptions: [],\n\toptgroups: [],\n\n\tplugins: [],\n\tdelimiter: ',',\n\tsplitOn: null, // regexp or string for splitting up values from a paste command\n\tpersist: true,\n\tdiacritics: true,\n\tcreate: false,\n\tcreateOnBlur: false,\n\tcreateFilter: null,\n\thighlight: true,\n\topenOnFocus: true,\n\tmaxOptions: 1000,\n\tmaxItems: null,\n\thideSelected: null,\n\taddPrecedence: false,\n\tselectOnTab: false,\n\tpreload: false,\n\tallowEmptyOption: false,\n\tcloseAfterSelect: false,\n\n\tscrollDuration: 60,\n\tloadThrottle: 300,\n\tloadingClass: 'loading',\n\n\tdataAttr: 'data-data',\n\toptgroupField: 'optgroup',\n\tvalueField: 'value',\n\tlabelField: 'text',\n\toptgroupLabelField: 'label',\n\toptgroupValueField: 'value',\n\tlockOptgroupOrder: false,\n\n\tsortField: '$order',\n\tsearchField: ['text'],\n\tsearchConjunction: 'and',\n\n\tmode: null,\n\twrapperClass: 'selectize-control',\n\tinputClass: 'selectize-input',\n\tdropdownClass: 'selectize-dropdown',\n\tdropdownContentClass: 'selectize-dropdown-content',\n\n\tdropdownParent: null,\n\n\tcopyClassesToDropdown: true,\n\n\t/*\n\tload : null, // function(query, callback) { ... }\n\tscore : null, // function(search) { ... }\n\tonInitialize : null, // function() { ... }\n\tonChange : null, // function(value) { ... }\n\tonItemAdd : null, // function(value, $item) { ... }\n\tonItemRemove : null, // function(value) { ... }\n\tonClear : null, // function() { ... }\n\tonOptionAdd : null, // function(value, data) { ... }\n\tonOptionRemove : null, // function(value) { ... }\n\tonOptionClear : null, // function() { ... }\n\tonOptionGroupAdd : null, // function(id, data) { ... }\n\tonOptionGroupRemove : null, // function(id) { ... }\n\tonOptionGroupClear : null, // function() { ... }\n\tonDropdownOpen : null, // function($dropdown) { ... }\n\tonDropdownClose : null, // function($dropdown) { ... }\n\tonType : null, // function(str) { ... }\n\tonDelete : null, // function(values) { ... }\n\t*/\n\n\trender: {\n\t\t/*\n\t\titem: null,\n\t\toptgroup: null,\n\t\toptgroup_header: null,\n\t\toption: null,\n\t\toption_create: null\n\t\t*/\n\t}\n}\n","export var IS_MAC = /Mac/.test(navigator.userAgent);\n\nexport var KEY_A = 65;\nexport var KEY_COMMA = 188;\nexport var KEY_RETURN = 13;\nexport var KEY_ESC = 27;\nexport var KEY_LEFT = 37;\nexport var KEY_UP = 38;\nexport var KEY_P = 80;\nexport var KEY_RIGHT = 39;\nexport var KEY_DOWN = 40;\nexport var KEY_N = 78;\nexport var KEY_BACKSPACE = 8;\nexport var KEY_DELETE = 46;\nexport var KEY_SHIFT = 16;\nexport var KEY_CMD = IS_MAC ? 91 : 17;\nexport var KEY_CTRL = IS_MAC ? 18 : 17;\nexport var KEY_TAB = 9;\n\nexport var TAG_SELECT = 1;\nexport var TAG_INPUT = 2;\n\n// for now, android support in general is too spotty to support validity\nexport var SUPPORTS_VALIDITY_API = !/android/i.test(window.navigator.userAgent) && !!document.createElement('input').validity;\n","import {KEY_BACKSPACE, KEY_DELETE} from './consts'\n\n/**\n * Determines if the provided value has been defined.\n *\n * @param {mixed} object\n * @returns {boolean}\n */\nexport function isSet(object) {\n\treturn typeof object !== 'undefined';\n}\n\n/**\n * Converts a scalar to its best string representation\n * for hash keys and HTML attribute values.\n *\n * Transformations:\n * 'str' -> 'str'\n * null -> ''\n * undefined -> ''\n * true -> '1'\n * false -> '0'\n * 0 -> '0'\n * 1 -> '1'\n *\n * @param {string} value\n * @returns {string|null}\n */\nexport function hashKey(value) {\n\tif (typeof value === 'undefined' || value === null) return null;\n\tif (typeof value === 'boolean') return value ? '1' : '0';\n\treturn value + '';\n}\n\n/**\n * Escapes a string for use within HTML.\n *\n * @param {string} str\n * @returns {string}\n */\nexport function escapeHtml(str) {\n\treturn (str + '')\n\t\t.replace(/&/g, '&')\n\t\t.replace(/</g, '<')\n\t\t.replace(/>/g, '>')\n\t\t.replace(/\"/g, '"');\n}\n\n/**\n * Escapes \"$\" characters in replacement strings.\n *\n * @param {string} str\n * @returns {string}\n */\nexport function escapeReplace(str) {\n\treturn (str + '').replace(/\\$/g, '$$$$');\n}\n\nexport var hook = {};\n\n/**\n * Wraps `method` on `self` so that `fn`\n * is invoked before the original method.\n *\n * @param {object} self\n * @param {string} method\n * @param {function} fn\n */\nhook.before = function(self, method, fn) {\n\tvar original = self[method];\n\tself[method] = function() {\n\t\tfn.apply(self, arguments);\n\t\treturn original.apply(self, arguments);\n\t};\n};\n\n/**\n * Wraps `method` on `self` so that `fn`\n * is invoked after the original method.\n *\n * @param {object} self\n * @param {string} method\n * @param {function} fn\n */\nhook.after = function(self, method, fn) {\n\tvar original = self[method];\n\tself[method] = function() {\n\t\tvar result = original.apply(self, arguments);\n\t\tfn.apply(self, arguments);\n\t\treturn result;\n\t};\n};\n\n/**\n * Wraps `fn` so that it can only be invoked once.\n *\n * @param {function} fn\n * @returns {function}\n */\nexport function once(fn) {\n\tvar called = false;\n\treturn function() {\n\t\tif (called) return;\n\t\tcalled = true;\n\t\tfn.apply(this, arguments);\n\t};\n}\n\n/**\n * Wraps `fn` so that it can only be called once\n * every `delay` milliseconds (invoked on the falling edge).\n *\n * @param {function} fn\n * @param {int} delay\n * @returns {function}\n */\nexport function debounce(fn, delay) {\n\tvar timeout;\n\treturn function() {\n\t\tvar self = this;\n\t\tvar args = arguments;\n\t\twindow.clearTimeout(timeout);\n\t\ttimeout = window.setTimeout(function() {\n\t\t\tfn.apply(self, args);\n\t\t}, delay);\n\t};\n}\n\n/**\n * Debounce all fired events types listed in `types`\n * while executing the provided `fn`.\n *\n * @param {object} self\n * @param {array} types\n * @param {function} fn\n */\nexport function debounceEvents(self, types, fn) {\n\tvar type;\n\tvar trigger = self.trigger;\n\tvar eventArgs = {};\n\n\t// override trigger method\n\tself.trigger = function() {\n\t\tvar type = arguments[0];\n\t\tif (types.indexOf(type) !== -1) {\n\t\t\teventArgs[type] = arguments;\n\t\t} else {\n\t\t\treturn trigger.apply(self, arguments);\n\t\t}\n\t};\n\n\t// invoke provided function\n\tfn.apply(self, []);\n\tself.trigger = trigger;\n\n\t// trigger queued events\n\tfor (type in eventArgs) {\n\t\tif (eventArgs.hasOwnProperty(type)) {\n\t\t\ttrigger.apply(self, eventArgs[type]);\n\t\t}\n\t}\n}\n\n/**\n * A workaround for http://bugs.jquery.com/ticket/6696\n *\n * @param {object} $parent - Parent element to listen on.\n * @param {string} event - Event name.\n * @param {string} selector - Descendant selector to filter by.\n * @param {function} fn - Event handler.\n */\nexport function watchChildEvent($parent, event, selector, fn) {\n\t$parent.on(event, selector, function(e) {\n\t\tvar child = e.target;\n\t\twhile (child && child.parentNode !== $parent[0]) {\n\t\t\tchild = child.parentNode;\n\t\t}\n\t\te.currentTarget = child;\n\t\treturn fn.apply(this, [e]);\n\t});\n}\n\n/**\n * Determines the current selection within a text input control.\n * Returns an object containing:\n * - start\n * - length\n *\n * @param {object} input\n * @returns {object}\n */\nexport function getSelection(input) {\n\tvar result = {};\n\tif ('selectionStart' in input) {\n\t\tresult.start = input.selectionStart;\n\t\tresult.length = input.selectionEnd - result.start;\n\t} else if (document.selection) {\n\t\tinput.focus();\n\t\tvar sel = document.selection.createRange();\n\t\tvar selLen = document.selection.createRange().text.length;\n\t\tsel.moveStart('character', -input.value.length);\n\t\tresult.start = sel.text.length - selLen;\n\t\tresult.length = selLen;\n\t}\n\treturn result;\n}\n\n/**\n * Copies CSS properties from one element to another.\n *\n * @param {object} $from\n * @param {object} $to\n * @param {array} properties\n */\nexport function transferStyles($from, $to, properties) {\n\tvar i, n, styles = {};\n\tif (properties) {\n\t\tfor (i = 0, n = properties.length; i < n; i++) {\n\t\t\tstyles[properties[i]] = $from.css(properties[i]);\n\t\t}\n\t} else {\n\t\tstyles = $from.css();\n\t}\n\t$to.css(styles);\n}\n\n/**\n * Measures the width of a string within a\n * parent element (in pixels).\n *\n * @param {string} str\n * @param {object} $parent\n * @returns {int}\n */\nexport function measureString(str, $parent) {\n\tif (!str) {\n\t\treturn 0;\n\t}\n\n\tvar $test = $('<test>').css({\n\t\tposition: 'absolute',\n\t\ttop: -99999,\n\t\tleft: -99999,\n\t\twidth: 'auto',\n\t\tpadding: 0,\n\t\twhiteSpace: 'pre'\n\t}).text(str).appendTo('body');\n\n\ttransferStyles($parent, $test, [\n\t\t'letterSpacing',\n\t\t'fontSize',\n\t\t'fontFamily',\n\t\t'fontWeight',\n\t\t'textTransform'\n\t]);\n\n\tvar width = $test.width();\n\t$test.remove();\n\n\treturn width;\n}\n\n/**\n * Sets up an input to grow horizontally as the user\n * types. If the value is changed manually, you can\n * trigger the \"update\" handler to resize:\n *\n * $input.trigger('update');\n *\n * @param {object} $input\n */\nexport function autoGrow($input) {\n\tvar currentWidth = null;\n\n\tvar update = function(e, options) {\n\t\tvar value, keyCode, printable, placeholder, width;\n\t\tvar shift, character, selection;\n\t\te = e || window.event || {};\n\t\toptions = options || {};\n\n\t\tif (e.metaKey || e.altKey) return;\n\t\tif (!options.force && $input.data('grow') === false) return;\n\n\t\tvalue = $input.val();\n\t\tif (e.type && e.type.toLowerCase() === 'keydown') {\n\t\t\tkeyCode = e.keyCode;\n\t\t\tprintable = (\n\t\t\t\t(keyCode >= 97 && keyCode <= 122) || // a-z\n\t\t\t\t(keyCode >= 65 && keyCode <= 90) || // A-Z\n\t\t\t\t(keyCode >= 48 && keyCode <= 57) || // 0-9\n\t\t\t\tkeyCode === 32 // space\n\t\t\t);\n\n\t\t\tif (keyCode === KEY_DELETE || keyCode === KEY_BACKSPACE) {\n\t\t\t\tselection = getSelection($input[0]);\n\t\t\t\tif (selection.length) {\n\t\t\t\t\tvalue = value.substring(0, selection.start) + value.substring(selection.start + selection.length);\n\t\t\t\t} else if (keyCode === KEY_BACKSPACE && selection.start) {\n\t\t\t\t\tvalue = value.substring(0, selection.start - 1) + value.substring(selection.start + 1);\n\t\t\t\t} else if (keyCode === KEY_DELETE && typeof selection.start !== 'undefined') {\n\t\t\t\t\tvalue = value.substring(0, selection.start) + value.substring(selection.start + 1);\n\t\t\t\t}\n\t\t\t} else if (printable) {\n\t\t\t\tshift = e.shiftKey;\n\t\t\t\tcharacter = String.fromCharCode(e.keyCode);\n\t\t\t\tif (shift) character = character.toUpperCase();\n\t\t\t\telse character = character.toLowerCase();\n\t\t\t\tvalue += character;\n\t\t\t}\n\t\t}\n\n\t\tplaceholder = $input.attr('placeholder');\n\t\tif (!value && placeholder) {\n\t\t\tvalue = placeholder;\n\t\t}\n\n\t\twidth = measureString(value, $input) + 4;\n\t\tif (width !== currentWidth) {\n\t\t\tcurrentWidth = width;\n\t\t\t$input.width(width);\n\t\t\t$input.triggerHandler('resize');\n\t\t}\n\t};\n\n\t$input.on('keydown keyup update blur', update);\n\tupdate();\n}\n\nexport function domToString(d) {\n\tvar tmp = document.createElement('div');\n\n\ttmp.appendChild(d.cloneNode(true));\n\n\treturn tmp.innerHTML;\n}\n\nexport function logError(message, options){\n\tif(!options) options = {};\n\tvar component = 'Selectize';\n\n\tconsole.error(component + ': ' + message)\n\n\tif(options.explanation){\n\t\t// console.group is undefined in <IE11\n\t\tif(console.group) console.group();\n\t\tconsole.error(options.explanation);\n\t\tif(console.group) console.groupEnd();\n\t}\n}\n","import Sifter from 'es-sifter'\nimport MicroPlugin from 'es-microplugin'\n\nimport MicroEvent from './contrib/microevent'\nimport highlight from './contrib/highlight'\nimport { init as highlightInit } from './contrib/highlight'\nimport defaults from './defaults'\n\nimport {\n IS_MAC,\n\n KEY_A, KEY_RETURN, KEY_ESC, KEY_LEFT, KEY_UP, KEY_P, KEY_RIGHT, KEY_DOWN,\n KEY_N, KEY_BACKSPACE, KEY_DELETE, KEY_SHIFT, KEY_CMD, KEY_CTRL, KEY_TAB,\n\n TAG_SELECT, TAG_INPUT,\n SUPPORTS_VALIDITY_API\n} from './consts'\n\nimport {\n autoGrow, debounce, debounceEvents, domToString, escapeHtml, getSelection,\n hashKey, isSet, once, watchChildEvent\n} from './utils'\n\n\nvar inited = false\n\nexport default function Selectize($input, settings) {\n if (!inited) {\n init()\n inited = true\n }\n\n\tvar i, n, dir, input, self = this;\n\tinput = $input[0];\n\tinput.selectize = self;\n\n\t// detect rtl environment\n\tvar computedStyle = window.getComputedStyle && window.getComputedStyle(input, null);\n\tdir = computedStyle ? computedStyle.getPropertyValue('direction') : input.currentStyle && input.currentStyle.direction;\n\tdir = dir || $input.parents('[dir]:first').attr('dir') || '';\n\n\t// setup default state\n\t$.extend(self, {\n\t\torder : 0,\n\t\tsettings : settings,\n\t\t$input : $input,\n\t\ttabIndex : $input.attr('tabindex') || '',\n\t\ttagType : input.tagName.toLowerCase() === 'select' ? TAG_SELECT : TAG_INPUT,\n\t\trtl : /rtl/i.test(dir),\n\n\t\teventNS : '.selectize' + (++Selectize.count),\n\t\thighlightedValue : null,\n\t\tisOpen : false,\n\t\tisDisabled : false,\n\t\tisRequired : $input.is('[required]'),\n\t\tisInvalid : false,\n\t\tisLocked : false,\n\t\tisFocused : false,\n\t\tisInputHidden : false,\n\t\tisSetup : false,\n\t\tisShiftDown : false,\n\t\tisCmdDown : false,\n\t\tisCtrlDown : false,\n\t\tignoreFocus : false,\n\t\tignoreBlur : false,\n\t\tignoreHover : false,\n\t\thasOptions : false,\n\t\tcurrentResults : null,\n\t\tlastValue : '',\n\t\tcaretPos : 0,\n\t\tloading : 0,\n\t\tloadedSearches : {},\n\n\t\t$activeOption : null,\n\t\t$activeItems : [],\n\n\t\toptgroups : {},\n\t\toptions : {},\n\t\tuserOptions : {},\n\t\titems : [],\n\t\trenderCache : {},\n\t\tonSearchChange : settings.loadThrottle === null ? self.onSearchChange : debounce(self.onSearchChange, settings.loadThrottle)\n\t});\n\n\t// search system\n\tself.sifter = new Sifter(this.options, {diacritics: settings.diacritics});\n\n\t// build options table\n\tif (self.settings.options) {\n\t\tfor (i = 0, n = self.settings.options.length; i < n; i++) {\n\t\t\tself.registerOption(self.settings.options[i]);\n\t\t}\n\t\tdelete self.settings.options;\n\t}\n\n\t// build optgroup table\n\tif (self.settings.optgroups) {\n\t\tfor (i = 0, n = self.settings.optgroups.length; i < n; i++) {\n\t\t\tself.registerOptionGroup(self.settings.optgroups[i]);\n\t\t}\n\t\tdelete self.settings.optgroups;\n\t}\n\n\t// option-dependent defaults\n\tself.settings.mode = self.settings.mode || (self.settings.maxItems === 1 ? 'single' : 'multi');\n\tif (typeof self.settings.hideSelected !== 'boolean') {\n\t\tself.settings.hideSelected = self.settings.mode === 'multi';\n\t}\n\n\tself.initializePlugins(self.settings.plugins);\n\tself.setupCallbacks();\n\tself.setupTemplates();\n\tself.setup();\n}\n\nfunction init() {\n // initialize highlight\n highlightInit()\n\n // defaults\n // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n Selectize.defaults = defaults\n Selectize.count = 0\n\n // mixins\n // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n\n MicroEvent.mixin(Selectize);\n MicroPlugin.mixin(Selectize);\n\n // methods\n // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n\n $.extend(Selectize.prototype, {\n\n /**\n * Creates all elements and sets up event bindings.\n */\n setup: function() {\n var self = this;\n var settings = self.settings;\n var eventNS = self.eventNS;\n var $window = $(window);\n var $document = $(document);\n var $input = self.$input;\n\n var $wrapper;\n var $control;\n var $controlInput;\n var $dropdown;\n var $dropdownContent;\n var $dropdownParent;\n var inputMode;\n var classes;\n var classesPlugins;\n var inputId;\n\n inputMode = self.settings.mode;\n classes = $input.attr('class') || '';\n\n $wrapper = $('<div>').addClass(settings.wrapperClass).addClass(classes).addClass(inputMode);\n $control = $('<div>').addClass(settings.inputClass).addClass('items').appendTo($wrapper);\n $controlInput = $('<input type=\"text\" autocomplete=\"off\" />').appendTo($control).attr('tabindex', $input.is(':disabled') ? '-1' : self.tabIndex);\n $dropdownParent = $(settings.dropdownParent || $wrapper);\n $dropdown = $('<div>').addClass(settings.dropdownClass).addClass(inputMode).hide().appendTo($dropdownParent);\n $dropdownContent = $('<div>').addClass(settings.dropdownContentClass).appendTo($dropdown);\n\n if(inputId = $input.attr('id')) {\n $controlInput.attr('id', inputId + '-selectized');\n $('label[for=\"'+inputId+'\"]').attr('for', inputId + '-selectized');\n }\n\n if(self.settings.copyClassesToDropdown) {\n $dropdown.addClass(classes);\n }\n\n $wrapper.css({\n width: $input[0].style.width\n });\n\n if (self.plugins.names.length) {\n classesPlugins = 'plugin-' + self.plugins.names.join(' plugin-');\n $wrapper.addClass(classesPlugins);\n $dropdown.addClass(classesPlugins);\n }\n\n if ((settings.maxItems === null || settings.maxItems > 1) && self.tagType === TAG_SELECT) {\n $input.attr('multiple', 'multiple');\n }\n\n if (self.settings.placeholder) {\n $controlInput.attr('placeholder', settings.placeholder);\n }\n\n // if splitOn was not passed in, construct it from the delimiter to allow pasting universally\n if (!self.settings.splitOn && self.settings.delimiter) {\n var delimiterEscaped = self.settings.delimiter.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n self.settings.splitOn = new RegExp('\\\\s*' + delimiterEscaped + '+\\\\s*');\n }\n\n if ($input.attr('autocorrect')) {\n $controlInput.attr('autocorrect', $input.attr('autocorrect'));\n }\n\n if ($input.attr('autocapitalize')) {\n $controlInput.attr('autocapitalize', $input.attr('autocapitalize'));\n }\n\n self.$wrapper = $wrapper;\n self.$control = $control;\n self.$controlInput = $controlInput;\n self.$dropdown = $dropdown;\n self.$dropdownContent = $dropdownContent;\n\n $dropdown.on('mouseenter', '[data-selectable]', function() { return self.onOptionHover.apply(self, arguments); });\n $dropdown.on('mousedown click', '[data-selectable]', function() { return self.onOptionSelect.apply(self, arguments); });\n watchChildEvent($control, 'mousedown', '*:not(input)', function() { return self.onItemSelect.apply(self, arguments); });\n autoGrow($controlInput);\n\n $control.on({\n mousedown : function() { return self.onMouseDown.apply(self, arguments); },\n click : function() { return self.onClick.apply(self, arguments); }\n });\n\n $controlInput.on({\n mousedown : function(e) { e.stopPropagation(); },\n keydown : function() { return self.onKeyDown.apply(self, arguments); },\n keyup : function() { return self.onKeyUp.apply(self, arguments); },\n keypress : function() { return self.onKeyPress.apply(self, arguments); },\n resize : function() { self.positionDropdown.apply(self, []); },\n blur : function() { return self.onBlur.apply(self, arguments); },\n focus : function() { self.ignoreBlur = false; return self.onFocus.apply(self, arguments); },\n paste : function() { return self.onPaste.apply(self, arguments); }\n });\n\n $document.on('keydown' + eventNS, function(e) {\n self.isCmdDown = e[IS_MAC ? 'metaKey' : 'ctrlKey'];\n self.isCtrlDown = e[IS_MAC ? 'altKey' : 'ctrlKey'];\n self.isShiftDown = e.shiftKey;\n });\n\n $document.on('keyup' + eventNS, function(e) {\n if (e.keyCode === KEY_CTRL) self.isCtrlDown = false;\n if (e.keyCode === KEY_SHIFT) self.isShiftDown = false;\n if (e.keyCode === KEY_CMD) self.isCmdDown = false;\n });\n\n $document.on('mousedown' + eventNS, function(e) {\n if (self.isFocused) {\n // prevent events on the dropdown scrollbar from causing the control to blur\n if (e.target === self.$dropdown[0] || e.target.parentNode === self.$dropdown[0]) {\n return false;\n }\n // blur on click outside\n if (!self.$control.has(e.target).length && e.target !== self.$control[0]) {\n self.blur(e.target);\n }\n }\n });\n\n $window.on(['scroll' + eventNS, 'resize' + eventNS].join(' '), function() {\n if (self.isOpen) {\n self.positionDropdown.apply(self, arguments);\n }\n });\n $window.on('mousemove' + eventNS, function() {\n self.ignoreHover = false;\n });\n\n // store original children and tab index so that they can be\n // restored when the destroy() method is called.\n this.revertSettings = {\n $children : $input.children().detach(),\n tabindex : $input.attr('tabindex')\n };\n\n $input.attr('tabindex', -1).hide().after(self.$wrapper);\n\n if ($.isArray(settings.items)) {\n self.setValue(settings.items);\n delete settings.items;\n }\n\n // feature detect for the validation API\n if (SUPPORTS_VALIDITY_API) {\n $input.on('invalid' + eventNS, function(e) {\n e.preventDefault();\n self.isInvalid = true;\n self.refreshState();\n });\n }\n\n self.updateOriginalInput();\n self.refreshItems();\n self.refreshState();\n self.updatePlaceholder();\n self.isSetup = true;\n\n if ($input.is(':disabled')) {\n self.disable();\n }\n\n self.on('change', this.onChange);\n\n $input.data('selectize', self);\n $input.addClass('selectized');\n self.trigger('initialize');\n\n // preload options\n if (settings.preload === true) {\n self.onSearchChange('');\n }\n\n },\n\n /**\n * Sets up default rendering functions.\n */\n setupTemplates: function() {\n var self = this;\n var fieldLabel = self.settings.labelField;\n var fieldOptgroup = self.settings.optgroupLabelField;\n\n var templates = {\n 'optgroup': function(data) {\n return '<div class=\"optgroup\">' + data.html + '</div>';\n },\n 'optgroupHeader': function(data, escape) {\n return '<div class=\"optgroup-header\">' + escape(data[fieldOptgroup]) + '</div>';\n },\n 'option': function(data, escape) {\n return '<div class=\"option\">' + escape(data[fieldLabel]) + '</div>';\n },\n 'item': function(data, escape) {\n return '<div class=\"item\">' + escape(data[fieldLabel]) + '</div>';\n },\n 'optionCreate': function(data, escape) {\n return '<div class=\"create\">Add <strong>' + escape(data.input) + '</strong>…</div>';\n }\n };\n\n self.settings.render = $.extend({}, templates, self.settings.render);\n },\n\n /**\n * Maps fired events to callbacks provided\n * in the settings used when creating the control.\n */\n setupCallbacks: function() {\n var key, fn, callbacks = {\n 'initialize' : 'onInitialize',\n 'change' : 'onChange',\n 'itemAdd' : 'onItemAdd',\n 'itemRemove' : 'onItemRemove',\n 'clear' : 'onClear',\n 'optionAdd' : 'onOptionAdd',\n 'optionRemove' : 'onOptionRemove',\n 'optionClear' : 'onOptionClear',\n 'optgroupAdd' : 'onOptionGroupAdd',\n 'optgroupRemove' : 'onOptionGroupRemove',\n 'optgroupClear' : 'onOptionGroupClear',\n 'dropdownOpen' : 'onDropdownOpen',\n 'dropdownClose' : 'onDropdownClose',\n 'type' : 'onType',\n 'load' : 'onLoad',\n 'focus' : 'onFocus',\n 'blur' : 'onBlur'\n };\n\n for (key in callbacks) {\n if (callbacks.hasOwnProperty(key)) {\n fn = this.settings[callbacks[key]];\n if (fn) this.on(key, fn);\n }\n }\n },\n\n /**\n * Triggered when the main control element\n * has a click event.\n *\n * @param {object} e\n * @return {boolean}\n */\n onClick: function(e) {\n var self = this;\n\n // necessary for mobile webkit devices (manual focus triggering\n // is ignored unless invoked within a click event)\n if (!self.isFocused) {\n self.focus();\n e.preventDefault();\n }\n },\n\n /**\n * Triggered when the main control element\n * has a mouse down event.\n *\n * @param {object} e\n * @return {boolean}\n */\n onMouseDown: function(e) {\n var self = this;\n var defaultPrevented = e.isDefaultPrevented();\n\n if (self.isFocused) {\n // retain focus by preventing native handling. if the\n // event target is the input it should not be modified.\n // otherwise, text selection within the input won't work.\n if (e.target !== self.$controlInput[0]) {\n if (self.settings.mode === 'single') {\n // toggle dropdown\n if (self.isOpen)\n self.close()\n else\n self.open()\n } else if (!defaultPrevented) {\n self.setActiveItem(null)\n }\n return false\n }\n } else {\n // give control focus\n if (!defaultPrevented) {\n window.setTimeout(function() {\n self.focus()\n }, 0)\n }\n }\n },\n\n /**\n * Triggered when the value of the control has been changed.\n * This should propagate the event to the original DOM\n * input / select element.\n */\n onChange: function() {\n this.$input.trigger('change');\n },\n\n /**\n * Triggered on <input> paste.\n *\n * @param {object} e\n * @returns {boolean}\n */\n onPaste: function(e) {\n var self = this;\n\n if (self.isFull() || self.isInputHidden || self.isLocked) {\n e.preventDefault();\n return;\n }\n\n // If a regex or string is included, this will split the pasted\n // input and create Items for each separate value\n if (self.settings.splitOn) {\n\n // Wait for pasted text to be recognized in value\n setTimeout(function() {\n var pastedText = self.$controlInput.val();\n if(!pastedText.match(self.settings.splitOn)){ return }\n\n var splitInput = $.trim(pastedText).split(self.settings.splitOn);\n for (var i = 0, n = splitInput.length; i < n; i++) {\n self.createItem(splitInput[i]);\n }\n }, 0);\n }\n },\n\n /**\n * Triggered on <input> keypress.\n *\n * @param {object} e\n * @returns {boolean}\n */\n onKeyPress: function(e) {\n if (this.isLocked) return e && e.preventDefault();\n var character = String.fromCharCode(e.keyCode || e.which);\n if (this.settings.create && this.settings.mode === 'multi' && character === this.settings.delimiter) {\n this.createItem();\n e.preventDefault();\n return false;\n }\n },\n\n /**\n * Triggered on <input> keydown.\n *\n * @param {object} e\n * @returns {boolean}\n */\n onKeyDown: function(e) {\n var self = this;\n\n if (self.isLocked) {\n if (e.keyCode !== KEY_TAB) {\n e.preventDefault();\n }\n return;\n }\n\n switch (e.keyCode) {\n case KEY_A:\n if (self.isCmdDown) {\n self.selectAll();\n return;\n }\n break;\n case KEY_ESC:\n if (self.isOpen) {\n e.preventDefault();\n e.stopPropagation();\n self.close();\n }\n return;\n case KEY_N:\n if (!e.ctrlKey || e.altKey) break;\n case KEY_DOWN:\n if (!self.isOpen && self.hasOptions) {\n self.open();\n } else if (self.$activeOption) {\n self.ignoreHover = true;\n var $next = self.getAdjacentOption(self.$activeOption, 1);\n if ($next.length) self.setActiveOption($next, true, true);\n }\n e.preventDefault();\n return;\n case KEY_P:\n if (!e.ctrlKey || e.altKey) break;\n case KEY_UP:\n if (self.$activeOption) {\n self.ignoreHover = true;\n var $prev = self.getAdjacentOption(self.$activeOption, -1);\n if ($prev.length) self.setActiveOption($prev, true, true);\n }\n e.preventDefault();\n return;\n case KEY_RETURN:\n if (self.isOpen && self.$activeOption) {\n self.onOptionSelect({currentTarget: self.$activeOption});\n e.preventDefault();\n }\n return;\n case KEY_LEFT:\n self.advanceSelection(-1, e);\n return;\n case KEY_RIGHT:\n self.advanceSelection(1, e);\n return;\n case KEY_TAB:\n if (self.settings.selectOnTab && self.isOpen && self.$activeOption) {\n self.onOptionSelect({currentTarget: self.$activeOption});\n\n // Default behaviour is to jump to the next field, we only want this\n // if the current field doesn't accept any more entries\n if (!self.isFull()) {\n e.preventDefault();\n }\n }\n if (self.settings.create && self.createItem()) {\n e.preventDefault();\n }\n return;\n case KEY_BACKSPACE:\n case KEY_DELETE:\n self.deleteSelection(e);\n return;\n }\n\n if ((self.isFull() || self.isInputHidden) && !(IS_MAC ? e.metaKey : e.ctrlKey)) {\n e.preventDefault();\n return;\n }\n },\n\n /**\n * Triggered on <input> keyup.\n *\n * @param {object} e\n * @returns {boolean}\n */\n onKeyUp: function(e) {\n var self = this;\n\n if (self.isLocked) return e && e.preventDefault();\n var value = self.$controlInput.val() || '';\n if (self.lastValue !== value) {\n self.lastValue = value;\n self.onSearchChange(value);\n self.refreshOptions();\n self.trigger('type', value);\n }\n },\n\n /**\n * Invokes the user-provide option provider / loader.\n *\n * Note: this function is debounced in the Selectize\n * constructor (by `settings.loadThrottle` milliseconds)\n *\n * @param {string} value\n */\n onSearchChange: function(value) {\n var self = this;\n var fn = self.settings.load;\n if (!fn) return;\n if (self.loadedSearches.hasOwnProperty(value)) return;\n self.loadedSearches[value] = true;\n self.load(function(callback) {\n fn.apply(self, [value, callback]);\n });\n },\n\n /**\n * Triggered on <input> focus.\n *\n * @param {object} e (optional)\n * @returns {boolean}\n */\n onFocus: function(e) {\n var self = this;\n var wasFocused = self.isFocused;\n\n if (self.isDisabled) {\n self.blur();\n if (e) e.preventDefault()\n return false;\n }\n\n if (self.ignoreFocus) return;\n self.isFocused = true;\n if (self.settings.preload === 'focus') self.onSearchChange('');\n\n if (!wasFocused) self.trigger('focus');\n\n if (!self.$activeItems.length) {\n self.showInput();\n self.setActiveItem(null);\n self.refreshOptions(!!self.settings.openOnFocus);\n }\n\n self.refreshState();\n },\n\n /**\n * Triggered on <input> blur.\n *\n * @param {object} e\n * @param {Element} dest\n */\n onBlur: function(e, dest) {\n var self = this;\n if (!self.isFocused) return;\n self.isFocused = false;\n\n if (self.ignoreFocus) {\n return;\n } else if (!self.ignoreBlur && document.activeElement === self.$dropdownContent[0]) {\n // necessary to prevent IE closing the dropdown when the scrollbar is clicked\n self.ignoreBlur = true;\n self.onFocus(e);\n return;\n }\n\n var deactivate = function() {\n self.close();\n self.setTextboxValue('');\n self.setActiveItem(null);\n self.setActiveOption(null);\n self.setCaret(self.items.length);\n self.refreshState();\n\n // IE11 bug: element still marked as active\n if (dest && dest.focus) dest.focus();\n\n self.ignoreFocus = false;\n self.trigger('blur');\n };\n\n self.ignoreFocus = true;\n if (self.settings.create && self.settings.createOnBlur) {\n self.createItem(null, false, deactivate);\n } else {\n deactivate();\n }\n },\n\n /**\n * Triggered when the user rolls over\n * an option in the autocomplete dropdown menu.\n *\n * @param {object} e\n * @returns {boolean}\n */\n onOptionHover: function(e) {\n if (this.ignoreHover) return;\n this.setActiveOption(e.currentTarget, false);\n },\n\n /**\n * Triggered when the user clicks on an option\n * in the autocomplete dropdown menu.\n *\n * @param {object} e\n * @returns {boolean}\n */\n onOptionSelect: function(e) {\n var value, $target, self = this;\n\n if (e.preventDefault) {\n e.preventDefault();\n e.stopPropagation();\n }\n\n $target = $(e.currentTarget);\n if ($target.hasClass('create')) {\n self.createItem(null, function() {\n if (self.settings.closeAfterSelect) {\n self.close();\n }\n });\n } else {\n value = $target.attr('data-value');\n if (typeof value !== 'undefined') {\n self.lastQuery = null;\n self.setTextboxValue('');\n self.addItem(value);\n if (self.settings.closeAfterSelect) {\n self.close();\n } else if (!self.settings.hideSelected && e.type && /mouse/.test(e.type)) {\n self.setActiveOption(self.getOption(value));\n }\n }\n }\n },\n\n /**\n * Triggered when the user clicks on an item\n * that has been selected.\n *\n * @param {object} e\n * @returns {boolean}\n */\n onItemSelect: function(e) {\n var self = this;\n\n if (self.isLocked) return;\n if (self.settings.mode === 'multi') {\n e.preventDefault();\n self.setActiveItem(e.currentTarget, e);\n }\n },\n\n /**\n * Invokes the provided method that provides\n * results to a callback---which are then added\n * as options to the control.\n *\n * @param {function} fn\n */\n load: function(fn) {\n var self = this;\n var $wrapper = self.$wrapper.addClass(self.settings.loadingClass);\n\n self.loading++;\n fn.apply(self, [function(results) {\n self.loading = Math.max(self.loading - 1, 0);\n if (results && results.length) {\n self.addOption(results);\n self.refreshOptions(self.isFocused && !self.isInputHidden);\n }\n if (!self.loading) {\n $wrapper.removeClass(self.settings.loadingClass);\n }\n self.trigger('load', results);\n }]);\n },\n\n /**\n * Sets the input field of the control to the specified value.\n *\n * @param {string} value\n */\n setTextboxValue: function(value) {\n var $input = this.$controlInput;\n var changed = $input.val() !== value;\n if (changed) {\n $input.val(value).triggerHandler('update');\n this.lastValue = value;\n }\n },\n\n /**\n * Returns the value of the control. If multiple items\n * can be selected (e.g. <select multiple>), this returns\n * an array. If only one item can be selected, this\n * returns a string.\n *\n * @returns {mixed}\n */\n getValue: function() {\n if (this.tagType === TAG_SELECT && this.$input.attr('multiple')) {\n return this.items;\n } else {\n return this.items.join(this.settings.delimiter);\n }\n },\n\n /**\n * Resets the selected items to the given value.\n *\n * @param {mixed} value\n */\n setValue: function(value, silent) {\n var events = silent ? [] : ['change'];\n\n debounceEvents(this, events, function() {\n this.clear(silent);\n this.addItems(value, silent);\n });\n },\n\n /**\n * Sets the selected item.\n *\n * @param {object} $item\n * @param {object} e (optional)\n */\n setActiveItem: function($item, e) {\n var self = this;\n var eventName;\n var i, idx, begin, end, item, swap;\n var $last;\n\n if (self.settings.mode === 'single') return;\n $item = $($item);\n\n // clear the active selection\n if (!$item.length) {\n $(self.$activeItems).removeClass('active');\n self.$activeItems = [];\n if (self.isFocused) {\n self.showInput();\n }\n return;\n }\n\n // modify selection\n eventName = e && e.type.toLowerCase();\n\n if (eventName === 'mousedown' && self.isShiftDown && self.$activeItems.length) {\n $last = self.$control.children('.active:last');\n begin = Array.prototype.indexOf.apply(self.$control[0].childNodes, [$last[0]]);\n end = Array.prototype.indexOf.apply(self.$control[0].childNodes, [$item[0]]);\n if (begin > end) {\n swap = begin;\n begin = end;\n end = swap;\n }\n for (i = begin; i <= end; i++) {\n item = self.$control[0].childNodes[i];\n if (self.$activeItems.indexOf(item) === -1) {\n $(item).addClass('active');\n self.$activeItems.push(item);\n }\n }\n e.preventDefault();\n } else if ((eventName === 'mousedown' && self.isCtrlDown) || (eventName === 'keydown' && this.isShiftDown)) {\n if ($item.hasClass('active')) {\n idx = self.$activeItems.indexOf($item[0]);\n self.$activeItems.splice(idx, 1);\n $item.removeClass('active');\n } else {\n self.$activeItems.push($item.addClass('active')[0]);\n }\n } else {\n $(self.$activeItems).removeClass('active');\n self.$activeItems = [$item.addClass('active')[0]];\n }\n\n // ensure control has focus\n self.hideInput();\n if (!this.isFocused) {\n self.focus();\n }\n },\n\n /**\n * Sets the selected item in the dropdown menu\n * of available options.\n *\n * @param {object} $object\n * @param {boolean} scroll\n * @param {boolean} animate\n */\n setActiveOption: function($option, scroll, animate) {\n var heightMenu, heightItem, y;\n var scrollTop, scrollBottom;\n var self = this;\n\n if (self.$activeOption) self.$activeOption.removeClass('active');\n self.$activeOption = null;\n\n $option = $($option);\n if (!$option.length) return;\n\n self.$activeOption = $option.addClass('active');\n\n if (scroll || !isSet(scroll)) {\n\n heightMenu = self.$dropdownContent.height();\n heightItem = self.$activeOption.outerHeight(true);\n scroll = self.$dropdownContent.scrollTop() || 0;\n y = self.$activeOption.offset().top - self.$dropdownContent.offset().top + scroll;\n scrollTop = y;\n scrollBottom = y - heightMenu + heightItem;\n\n if (y + heightItem > heightMenu + scroll) {\n self.$dropdownContent.stop().animate({scrollTop: scrollBottom}, animate ? self.settings.scrollDuration : 0);\n } else if (y < scroll) {\n self.$dropdownContent.stop().animate({scrollTop: scrollTop}, animate ? self.settings.scrollDuration : 0);\n }\n\n }\n },\n\n /**\n * Selects all items (CTRL + A).\n */\n selectAll: function() {\n var self = this;\n if (self.settings.mode === 'single') return;\n\n self.$activeItems = Array.prototype.slice.apply(self.$control.children(':not(input)').addClass('active'));\n if (self.$activeItems.length) {\n self.hideInput();\n self.close();\n }\n self.focus();\n },\n\n /**\n * Hides the input element out of view, while\n * retaining its focus.\n */\n hideInput: function() {\n var self = this;\n\n self.setTextboxValue('');\n self.$controlInput.css({opacity: 0, position: 'absolute', left: self.rtl ? 10000 : -10000});\n self.isInputHidden = true;\n },\n\n /**\n * Restores input visibility.\n */\n showInput: function() {\n this.$controlInput.css({opacity: 1, position: 'relative', left: 0});\n this.isInputHidden = false;\n },\n\n /**\n * Gives the control focus.\n */\n focus: function() {\n var self = this;\n if (self.isDisabled) return;\n\n self.ignoreFocus = true;\n self.$controlInput[0].focus();\n window.setTimeout(function() {\n self.ignoreFocus = false;\n self.onFocus();\n }, 0);\n },\n\n /**\n * Forces the control out of focus.\n *\n * @param {Element} dest\n */\n blur: function(dest) {\n this.$controlInput[0].blur();\n this.onBlur(null, dest);\n },\n\n /**\n * Returns a function that scores an object\n * to show how good of a match it is to the\n * provided query.\n *\n * @param {string} query\n * @param {object} options\n * @return {function}\n */\n getScoreFunction: function(query) {\n return this.sifter.getScoreFunction(query, this.getSearchOptions());\n },\n\n /**\n * Returns search options for sifter (the system\n * for scoring and sorting results).\n *\n * @see https://github.com/brianreavis/sifter.js\n * @return {object}\n */\n getSearchOptions: function() {\n var settings = this.settings;\n var sort = settings.sortField;\n if (typeof sort === 'string') {\n sort = [{field: sort}];\n }\n\n return {\n fields : settings.searchField,\n conjunction : settings.searchConjunction,\n sort : sort\n };\n },\n\n /**\n * Searches through available options and returns\n * a sorted array of matches.\n *\n * Returns an object containing:\n *\n * - query {string}\n * - tokens {array}\n * - total {int}\n * - items {array}\n *\n * @param {string} query\n * @returns {object}\n */\n search: function(query) {\n var i, result, calculateScore;\n var self = this;\n var settings = self.settings;\n var options = this.getSearchOptions();\n\n // validate user-provided result scoring function\n if (settings.score) {\n calculateScore = self.settings.score.apply(this, [query]);\n if (typeof calculateScore !== 'function') {\n throw new Error('Selectize \"score\" setting must be a function that returns a function');\n }\n }\n\n // perform search\n if (query !== self.lastQuery) {\n self.lastQuery = query;\n result = self.sifter.search(query, $.extend(options, {score: calculateScore}));\n self.currentResults = result;\n } else {\n result = $.extend(true, {}, self.currentResults);\n }\n\n // filter out selected items\n if (settings.hideSelected) {\n for (i = result.items.length - 1; i >= 0; i--) {\n if (self.items.indexOf(hashKey(result.items[i].id)) !== -1) {\n result.items.splice(i, 1);\n }\n }\n }\n\n return result;\n },\n\n /**\n * Refreshes the list of available options shown\n * in the autocomplete dropdown menu.\n *\n * @param {boolean} triggerDropdown\n */\n refreshOptions: function(triggerDropdown) {\n var i, j, k, n, groups, groupsOrder, option, optionHtml, optgroup, optgroups, html, htmlChildren, hasCreateOption;\n var $active, $activeBefore, $create;\n\n if (typeof triggerDropdown === 'undefined') {\n triggerDropdown = true;\n }\n\n var self = this;\n var query = $.trim(self.$controlInput.val());\n var results = self.search(query);\n var $dropdownContent = self.$dropdownContent;\n var activeBefore = self.$activeOption && hashKey(self.$activeOption.attr('data-value'));\n\n // build markup\n n = results.items.length;\n if (typeof self.settings.maxOptions === 'number') {\n n = Math.min(n, self.settings.maxOptions);\n }\n\n // render and group available options individually\n groups = {};\n groupsOrder = [];\n\n for (i = 0; i < n; i++) {\n option = self.options[results.items[i].id];\n optionHtml = self.render('option', option);\n optgroup = option[self.settings.optgroupField] || '';\n optgroups = $.isArray(optgroup) ? optgroup : [optgroup];\n\n for (j = 0, k = optgroups && optgroups.length; j < k; j++) {\n optgroup = optgroups[j];\n if (!self.optgroups.hasOwnProperty(optgroup)) {\n optgroup = '';\n }\n if (!groups.hasOwnProperty(optgroup)) {\n groups[optgroup] = document.createDocumentFragment();\n groupsOrder.push(optgroup);\n }\n groups[optgroup].appendChild(optionHtml);\n }\n }\n\n // sort optgroups\n if (this.settings.lockOptgroupOrder) {\n groupsOrder.sort(function(a, b) {\n var aOrder = self.optgroups[a].$order || 0;\n var bOrder = self.optgroups[b].$order || 0;\n return aOrder - bOrder;\n });\n }\n\n // render optgroup headers & join groups\n html = document.createDocumentFragment();\n for (i = 0, n = groupsOrder.length; i < n; i++) {\n optgroup = groupsOrder[i];\n if (self.optgroups.hasOwnProperty(optgroup) && groups[optgroup].childNodes.length) {\n // render the optgroup header and options within it,\n // then pass it to the wrapper template\n htmlChildren = document.createDocumentFragment();\n htmlChildren.appendChild(self.render('optgroupHeader', self.optgroups[optgroup]));\n htmlChildren.appendChild(groups[optgroup]);\n\n html.appendChild(self.render('optgroup', $.extend({}, self.optgroups[optgroup], {\n html: domToString(htmlChildren),\n dom: htmlChildren\n })));\n } else {\n html.appendChild(groups[optgroup]);\n }\n }\n\n $dropdownContent.html(html);\n\n // highlight matching terms inline\n if (self.settings.highlight && results.query.length && results.tokens.length) {\n $dropdownContent.removeHighlight();\n for (i = 0, n = results.tokens.length; i < n; i++) {\n highlight($dropdownContent, results.tokens[i].regex);\n }\n }\n\n // add \"selected\" class to selected options\n if (!self.settings.hideSelected) {\n for (i = 0, n = self.items.length; i < n; i++) {\n self.getOption(self.items[i]).addClass('selected');\n }\n }\n\n // add create option\n hasCreateOption = self.canCreate(query);\n if (hasCreateOption) {\n $dropdownContent.prepend(self.render('optionCreate', {input: query}));\n $create = $($dropdownContent[0].childNodes[0]);\n }\n\n // activate\n self.hasOptions = results.items.length > 0 || hasCreateOption;\n if (self.hasOptions) {\n if (results.items.length > 0) {\n $activeBefore = activeBefore && self.getOption(activeBefore);\n if ($activeBefore && $activeBefore.length) {\n $active = $activeBefore;\n } else if (self.settings.mode === 'single' && self.items.length) {\n $active = self.getOption(self.items[0]);\n }\n if (!$active || !$active.length) {\n if ($create && !self.settings.addPrecedence) {\n $active = self.getAdjacentOption($create, 1);\n } else {\n $active = $dropdownContent.find('[data-selectable]:first');\n }\n }\n } else {\n $active = $create;\n }\n self.setActiveOption($active);\n if (triggerDropdown && !self.isOpen) { self.open(); }\n } else {\n self.setActiveOption(null);\n if (triggerDropdown && self.isOpen) { self.close(); }\n }\n },\n\n /**\n * Adds an available option. If it already exists,\n * nothing will happen. Note: this does not refresh\n * the options list dropdown (use `refreshOptions`\n * for that).\n *\n * Usage:\n *\n * this.addOption(data)\n *\n * @param {object|array} data\n */\n addOption: function(data) {\n var i, n, value, self = this;\n\n if ($.isArray(data)) {\n for (i = 0, n = data.length; i < n; i++) {\n self.addOption(data[i]);\n }\n return;\n }\n\n if (value = self.registerOption(data)) {\n self.userOptions[value] = true;\n self.lastQuery = null;\n self.trigger('optionAdd', value, data);\n }\n },\n\n /**\n * Registers an option to the pool of options.\n *\n * @param {object} data\n * @return {boolean|string}\n */\n registerOption: function(data) {\n var key = hashKey(data[this.settings.valueField]);\n if (typeof key === 'undefined' || key === null || this.options.hasOwnProperty(key)) return false;\n data.$order = data.$order || ++this.order;\n this.options[key] = data;\n return key;\n },\n\n /**\n * Registers an option group to the pool of option groups.\n *\n * @param {object} data\n * @return {boolean|string}\n */\n registerOptionGroup: function(data) {\n var key = hashKey(data[this.settings.optgroupValueField]);\n if (!key) return false;\n\n data.$order = data.$order || ++this.order;\n this.optgroups[key] = data;\n return key;\n },\n\n /**\n * Registers a new optgroup for options\n * to be bucketed into.\n *\n * @param {string} id\n * @param {object} data\n */\n addOptionGroup: function(id, data) {\n data[this.settings.optgroupValueField] = id;\n if (id = this.registerOptionGroup(data)) {\n this.trigger('optgroupAdd', id, data);\n }\n },\n\n /**\n * Removes an existing option group.\n *\n * @param {string} id\n */\n removeOptionGroup: function(id) {\n if (this.optgroups.hasOwnProperty(id)) {\n delete this.optgroups[id];\n this.renderCache = {};\n this.trigger('optgroupRemove', id);\n }\n },\n\n /**\n * Clears all existing option groups.\n */\n clearOptionGroups: function() {\n this.optgroups = {};\n this.renderCache = {};\n this.trigger('optgroupClear');\n },\n\n /**\n * Updates an option available for selection. If\n * it is visible in the selected items or options\n * dropdown, it will be re-rendered automatically.\n *\n * @param {string} value\n * @param {object} data\n */\n updateOption: function(value, data) {\n var self = this;\n var $item, $itemNew;\n var valueNew, indexItem, cacheItems, cacheOptions, orderOld;\n\n value = hashKey(value);\n valueNew = hashKey(data[self.settings.valueField]);\n\n // sanity checks\n if (value === null) return;\n if (!self.options.hasOwnProperty(value)) return;\n if (typeof valueNew !== 'string') throw new Error('Value must be set in option data');\n\n orderOld = self.options[value].$order;\n\n // update references\n if (valueNew !== value) {\n delete self.options[value];\n indexItem = self.items.indexOf(value);\n if (indexItem !== -1) {\n self.items.splice(indexItem, 1, valueNew);\n }\n }\n data.$order = data.$order || orderOld;\n self.options[valueNew] = data;\n\n // invalidate render cache\n cacheItems = self.renderCache.item;\n cacheOptions = self.renderCache.option;\n\n if (cacheItems) {\n delete cacheItems[value];\n delete cacheItems[valueNew];\n }\n if (cacheOptions) {\n delete cacheOptions[value];\n delete cacheOptions[valueNew];\n }\n\n // update the item if it's selected\n if (self.items.indexOf(valueNew) !== -1) {\n $item = self.getItem(value);\n $itemNew = $(self.render('item', data));\n if ($item.hasClass('active')) $itemNew.addClass('active');\n $item.replaceWith($itemNew);\n }\n\n // invalidate last query because we might have updated the sortField\n self.lastQuery = null;\n\n // update dropdown contents\n if (self.isOpen) {\n self.refreshOptions(false);\n }\n },\n\n /**\n * Removes a single option.\n *\n * @param {string} value\n * @param {boolean} silent\n */\n removeOption: function(value, silent) {\n var self = this;\n value = hashKey(value);\n\n var cacheItems = self.renderCache.item;\n var cacheOptions = self.renderCache.option;\n if (cacheItems) delete cacheItems[value];\n if (cacheOptions) delete cacheOptions[value];\n\n delete self.userOptions[value];\n delete self.options[value];\n self.lastQuery = null;\n self.trigger('optionRemove', value);\n self.removeItem(value, silent);\n },\n\n /**\n * Clears all options.\n */\n clearOptions: function() {\n var self = this;\n\n self.loadedSearches = {};\n self.userOptions = {};\n self.renderCache = {};\n self.options = self.sifter.items = {};\n self.lastQuery = null;\n self.trigger('optionClear');\n self.clear();\n },\n\n /**\n * Returns the jQuery element of the option\n * matching the given value.\n *\n * @param {string} value\n * @returns {object}\n */\n getOption: function(value) {\n return this.getElementWithValue(value, this.$dropdownContent.find('[data-selectable]'));\n },\n\n /**\n * Returns the jQuery element of the next or\n * previous selectable option.\n *\n * @param {object} $option\n * @param {int} direction can be 1 for next or -1 for previous\n * @return {object}\n */\n getAdjacentOption: function($option, direction) {\n var $options = this.$dropdown.find('[data-selectable]');\n var index = $options.index($option) + direction;\n\n return index >= 0 && index < $options.length ? $options.eq(index) : $();\n },\n\n /**\n * Finds the first element with a \"data-value\" attribute\n * that matches the given value.\n *\n * @param {mixed} value\n * @param {object} $els\n * @return {object}\n */\n getElementWithValue: function(value, $els) {\n value = hashKey(value);\n\n if (typeof value !== 'undefined' && value !== null) {\n for (var i = 0, n = $els.length; i < n; i++) {\n if ($els[i].getAttribute('data-value') === value) {\n return $($els[i]);\n }\n }\n }\n\n return $();\n },\n\n /**\n * Returns the jQuery element of the item\n * matching the given value.\n *\n * @param {string} value\n * @returns {object}\n */\n getItem: function(value) {\n return this.getElementWithValue(value, this.$control.children());\n },\n\n /**\n * \"Selects\" multiple items at once. Adds them to the list\n * at the current caret position.\n *\n * @param {string} value\n * @param {boolean} silent\n */\n addItems: function(values, silent) {\n var items = $.isArray(values) ? values : [values];\n for (var i = 0, n = items.length; i < n; i++) {\n this.isPending = (i < n - 1);\n this.addItem(items[i], silent);\n }\n },\n\n /**\n * \"Selects\" an item. Adds it to the list\n * at the current caret position.\n *\n * @param {string} value\n * @param {boolean} silent\n */\n addItem: function(value, silent) {\n var events = silent ? [] : ['change'];\n\n debounceEvents(this, events, function() {\n var $item, $option, $options;\n var self = this;\n var inputMode = self.settings.mode;\n var valueNext, wasFull;\n value = hashKey(value);\n\n if (self.items.indexOf(value) !== -1) {\n if (inputMode === 'single') self.close();\n return;\n }\n\n if (!self.options.hasOwnProperty(value)) return;\n if (inputMode === 'single') self.clear(silent);\n if (inputMode === 'multi' && self.isFull()) return;\n\n $item = $(self.render('item', self.options[value]));\n wasFull = self.isFull();\n self.items.splice(self.caretPos, 0, value);\n self.insertAtCaret($item);\n if (!self.isPending || (!wasFull && self.isFull())) {\n self.refreshState();\n }\n\n if (self.isSetup) {\n $options = self.$dropdownContent.find('[data-selectable]');\n\n // update menu / remove the option (if this is not one item being added as part of series)\n if (!self.isPending) {\n $option = self.getOption(value);\n valueNext = self.getAdjacentOption($option, 1).attr('data-value');\n self.refreshOptions(self.isFocused && inputMode !== 'single');\n if (valueNext) {\n self.setActiveOption(self.getOption(valueNext));\n }\n }\n\n // hide the menu if the maximum number of items have been selected or no options are left\n if (!$options.length || self.isFull()) {\n self.close();\n } else {\n self.positionDropdown();\n }\n\n self.updatePlaceholder();\n self.trigger('itemAdd', value, $item);\n self.updateOriginalInput({silent: silent});\n }\n });\n },\n\n /**\n * Removes the selected item matching\n * the provided value.\n *\n * @param {string} value\n */\n removeItem: function(value, silent) {\n var self = this;\n var $item, i, idx;\n\n $item = (value instanceof $) ? value : self.getItem(value);\n value = hashKey($item.attr('data-value'));\n i = self.items.indexOf(value);\n\n if (i !== -1) {\n $item.remove();\n if ($item.hasClass('active')) {\n idx = self.$activeItems.indexOf($item[0]);\n self.$activeItems.splice(idx, 1);\n }\n\n self.items.splice(i, 1);\n self.lastQuery = null;\n if (!self.settings.persist && self.userOptions.hasOwnProperty(value)) {\n self.removeOption(value, silent);\n }\n\n if (i < self.caretPos) {\n self.setCaret(self.caretPos - 1);\n }\n\n self.refreshState();\n self.updatePlaceholder();\n self.updateOriginalInput({silent: silent});\n self.positionDropdown();\n self.trigger('itemRemove', value, $item);\n }\n },\n\n /**\n * Invokes the `create` method provided in the\n * selectize options that should provide the data\n * for the new item, given the user input.\n *\n * Once this completes, it will be added\n * to the item list.\n *\n * @param {string} value\n * @param {boolean} [triggerDropdown]\n * @param {function} [callback]\n * @return {boolean}\n */\n createItem: function(input, triggerDropdown) {\n var self = this;\n var caret = self.caretPos;\n input = input || $.trim(self.$controlInput.val() || '');\n\n var callback = arguments[arguments.length - 1];\n if (typeof callback !== 'function') callback = function() {};\n\n if (typeof triggerDropdown !== 'boolean') {\n triggerDropdown = true;\n }\n\n if (!self.canCreate(input)) {\n callback();\n return false;\n }\n\n self.lock();\n\n var setup = (typeof self.settings.create === 'function') ? this.settings.create : function(input) {\n var data = {};\n data[self.settings.labelField] = input;\n data[self.settings.valueField] = input;\n return data;\n };\n\n var create = once(function(data) {\n self.unlock();\n\n if (!data || typeof data !== 'object') return callback();\n var value = hashKey(data[self.settings.valueField]);\n if (typeof value !== 'string') return callback();\n\n self.setTextboxValue('');\n self.addOption(data);\n self.setCaret(caret);\n self.addItem(value);\n self.refreshOptions(triggerDropdown && self.settings.mode !== 'single');\n callback(data);\n });\n\n var output = setup.apply(this, [input, create]);\n if (typeof output !== 'undefined') {\n create(output);\n }\n\n return true;\n },\n\n /**\n * Re-renders the selected item lists.\n */\n refreshItems: function() {\n this.lastQuery = null;\n\n if (this.isSetup) {\n this.addItem(this.items);\n }\n\n this.refreshState();\n this.updateOriginalInput();\n },\n\n /**\n * Updates all state-dependent attributes\n * and CSS classes.\n */\n refreshState: function() {\n this.refreshValidityState();\n this.refreshClasses();\n },\n\n /**\n * Update the `required` attribute of both input and control input.\n *\n * The `required` property needs to be activated on the control input\n * for the error to be displayed at the right place. `required` also\n * needs to be temporarily deactivated on the input since the input is\n * hidden and can't show errors.\n */\n refreshValidityState: function() {\n if (!this.isRequired) return false;\n\n var invalid = !this.items.length;\n\n this.isInvalid = invalid;\n this.$controlInput.prop('required', invalid);\n this.$input.prop('required', !invalid);\n },\n\n /**\n * Updates all state-dependent CSS classes.\n */\n refreshClasses: function() {\n var self = this;\n var isFull = self.isFull();\n var isLocked = self.isLocked;\n\n self.$wrapper\n .toggleClass('rtl', self.rtl);\n\n self.$control\n .toggleClass('focus', self.isFocused)\n .toggleClass('disabled', self.isDisabled)\n .toggleClass('required', self.isRequired)\n .toggleClass('invalid', self.isInvalid)\n .toggleClass('locked', isLocked)\n .toggleClass('full', isFull).toggleClass('not-full', !isFull)\n .toggleClass('input-active', self.isFocused && !self.isInputHidden)\n .toggleClass('dropdown-active', self.isOpen)\n .toggleClass('has-options', !$.isEmptyObject(self.options))\n .toggleClass('has-items', self.items.length > 0);\n\n self.$controlInput.data('grow', !isFull && !isLocked);\n },\n\n /**\n * Determines whether or not more items can be added\n * to the control without exceeding the user-defined maximum.\n *\n * @returns {boolean}\n */\n isFull: function() {\n return this.settings.maxItems !== null && this.items.length >= this.settings.maxItems;\n },\n\n /**\n * Refreshes the original <select> or <input>\n * element to reflect the current state.\n */\n updateOriginalInput: function(opts) {\n var i, n, options, label, self = this;\n opts = opts || {};\n\n if (self.tagType === TAG_SELECT) {\n options = [];\n for (i = 0, n = self.items.length; i < n; i++) {\n label = self.options[self.items[i]][self.settings.labelField] || '';\n options.push('<option value=\"' + escapeHtml(self.items[i]) + '\" selected=\"selected\">' + escapeHtml(label) + '</option>');\n }\n if (!options.length && !this.$input.attr('multiple')) {\n options.push('<option value=\"\" selected=\"selected\"></option>');\n }\n self.$input.html(options.join(''));\n } else {\n self.$input.val(self.getValue());\n self.$input.attr('value',self.$input.val());\n }\n\n if (self.isSetup) {\n if (!opts.silent) {\n self.trigger('change', self.$input.val());\n }\n }\n },\n\n /**\n * Shows/hide the input placeholder depending\n * on if there items in the list already.\n */\n updatePlaceholder: function() {\n if (!this.settings.placeholder) return;\n var $input = this.$controlInput;\n\n if (this.items.length) {\n $input.removeAttr('placeholder');\n } else {\n $input.attr('placeholder', this.settings.placeholder);\n }\n $input.triggerHandler('update', {force: true});\n },\n\n /**\n * Shows the autocomplete dropdown containing\n * the available options.\n */\n open: function() {\n var self = this;\n\n if (self.isLocked || self.isOpen || (self.settings.mode === 'multi' && self.isFull())) return;\n self.focus();\n self.isOpen = true;\n self.refreshState();\n self.$dropdown.css({visibility: 'hidden', display: 'block'});\n self.positionDropdown();\n self.$dropdown.css({visibility: 'visible'});\n self.trigger('dropdownOpen', self.$dropdown);\n },\n\n /**\n * Closes the autocomplete dropdown menu.\n */\n close: function() {\n var self = this;\n var trigger = self.isOpen;\n\n if (self.settings.mode === 'single' && self.items.length) {\n self.hideInput();\n self.$controlInput.blur(); // close keyboard on iOS\n }\n\n self.isOpen = false;\n self.$dropdown.hide();\n self.setActiveOption(null);\n self.refreshState();\n\n if (trigger) self.trigger('dropdownClose', self.$dropdown);\n },\n\n /**\n * Calculates and applies the appropriate\n * position of the dropdown.\n */\n positionDropdown: function() {\n var $control = this.$control;\n var offset = this.settings.dropdownParent === 'body' ? $control.offset() : $control.position();\n offset.top += $control.outerHeight(true);\n\n this.$dropdown.css({\n width : $control.outerWidth(),\n top : offset.top,\n left : offset.left\n });\n },\n\n /**\n * Resets / clears all selected items\n * from the control.\n *\n * @param {boolean} silent\n */\n clear: function(silent) {\n var self = this;\n\n if (!self.items.length) return;\n self.$control.children(':not(input)').remove();\n self.items = [];\n self.lastQuery = null;\n self.setCaret(0);\n self.setActiveItem(null);\n self.updatePlaceholder();\n self.updateOriginalInput({silent: silent});\n self.refreshState();\n self.showInput();\n self.trigger('clear');\n },\n\n /**\n * A helper method for inserting an element\n * at the current caret position.\n *\n * @param {object} $el\n */\n insertAtCaret: function($el) {\n var caret = Math.min(this.caretPos, this.items.length);\n if (caret === 0) {\n this.$control.prepend($el);\n } else {\n $(this.$control[0].childNodes[caret]).before($el);\n }\n this.setCaret(caret + 1);\n },\n\n /**\n * Removes the current selected item(s).\n *\n * @param {object} e (optional)\n * @returns {boolean}\n */\n deleteSelection: function(e) {\n var i, n, direction, selection, values, caret, optionSelect, $optionSelect, $tail;\n var self = this;\n\n direction = (e && e.keyCode === KEY_BACKSPACE) ? -1 : 1;\n selection = getSelection(self.$controlInput[0]);\n\n if (self.$activeOption && !self.settings.hideSelected) {\n optionSelect = self.getAdjacentOption(self.$activeOption, -1).attr('data-value');\n }\n\n // determine items that will be removed\n values = [];\n\n if (self.$activeItems.length) {\n $tail = self.$control.children('.active:' + (direction > 0 ? 'last' : 'first'));\n caret = self.$control.children(':not(input)').index($tail);\n if (direction > 0) { caret++; }\n\n for (i = 0, n = self.$activeItems.length; i < n; i++) {\n values.push($(self.$activeItems[i]).attr('data-value'));\n }\n if (e) {\n e.preventDefault();\n e.stopPropagation();\n }\n } else if ((self.isFocused || self.settings.mode === 'single') && self.items.length) {\n if (direction < 0 && selection.start === 0 && selection.length === 0) {\n values.push(self.items[self.caretPos - 1]);\n } else if (direction > 0 && selection.start === self.$controlInput.val().length) {\n values.push(self.items[self.caretPos]);\n }\n }\n\n // allow the callback to abort\n if (!values.length || (typeof self.settings.onDelete === 'function' && self.settings.onDelete.apply(self, [values]) === false)) {\n return false;\n }\n\n // perform removal\n if (typeof caret !== 'undefined') {\n self.setCaret(caret);\n }\n while (values.length) {\n self.removeItem(values.pop());\n }\n\n self.showInput();\n self.positionDropdown();\n self.refreshOptions(true);\n\n // select previous option\n if (optionSelect) {\n $optionSelect = self.getOption(optionSelect);\n if ($optionSelect.length) {\n self.setActiveOption($optionSelect);\n }\n }\n\n return true;\n },\n\n /**\n * Selects the previous / next item (depending\n * on the `direction` argument).\n *\n * > 0 - right\n * < 0 - left\n *\n * @param {int} direction\n * @param {object} e (optional)\n */\n advanceSelection: function(direction, e) {\n var tail, selection, idx, valueLength, cursorAtEdge, $tail;\n var self = this;\n\n if (direction === 0) return;\n if (self.rtl) direction *= -1;\n\n tail = direction > 0 ? 'last' : 'first';\n selection = getSelection(self.$controlInput[0]);\n\n if (self.isFocused && !self.isInputHidden) {\n valueLength = self.$controlInput.val().length;\n cursorAtEdge = direction < 0 ? selection.start === 0 &&\n selection.length === 0 : selection.start === valueLength;\n\n if (cursorAtEdge && !valueLength) {\n self.advanceCaret(direction, e);\n }\n } else {\n $tail = self.$control.children('.active:' + tail);\n if ($tail.length) {\n idx = self.$control.children(':not(input)').index($tail);\n self.setActiveItem(null);\n self.setCaret(direction > 0 ? idx + 1 : idx);\n }\n }\n },\n\n /**\n * Moves the caret left / right.\n *\n * @param {int} direction\n * @param {object} e (optional)\n */\n advanceCaret: function(direction, e) {\n var self = this, fn, $adj;\n\n if (direction === 0) return;\n\n fn = direction > 0 ? 'next' : 'prev';\n if (self.isShiftDown) {\n $adj = self.$controlInput[fn]();\n if ($adj.length) {\n self.hideInput();\n self.setActiveItem($adj);\n if(e) e.preventDefault();\n }\n } else {\n self.setCaret(self.caretPos + direction);\n }\n },\n\n /**\n * Moves the caret to the specified index.\n *\n * @param {int} i\n */\n setCaret: function(i) {\n var self = this;\n\n if (self.settings.mode === 'single') {\n i = self.items.length;\n } else {\n i = Math.max(0, Math.min(self.items.length, i));\n }\n\n if(!self.isPending) {\n // the input must be moved by leaving it in place and moving the\n // siblings, due to the fact that focus cannot be restored once lost\n // on mobile webkit devices\n var j, n, $children, $child;\n $children = self.$control.children(':not(input)');\n for (j = 0, n = $children.length; j < n; j++) {\n $child = $($children[j]).detach();\n if (j < i) {\n self.$controlInput.before($child);\n } else {\n self.$control.append($child);\n }\n }\n }\n\n self.caretPos = i;\n },\n\n /**\n * Disables user input on the control. Used while\n * items are being asynchronously created.\n */\n lock: function() {\n this.close();\n this.isLocked = true;\n this.refreshState();\n },\n\n /**\n * Re-enables user input on the control.\n */\n unlock: function() {\n this.isLocked = false;\n this.refreshState();\n },\n\n /**\n * Disables user input on the control completely.\n * While disabled, it cannot receive focus.\n */\n disable: function() {\n var self = this;\n self.$input.prop('disabled', true);\n self.$controlInput.prop('disabled', true).prop('tabindex', -1);\n self.isDisabled = true;\n self.lock();\n },\n\n /**\n * Enables the control so that it can respond\n * to focus and user input.\n */\n enable: function() {\n var self = this;\n self.$input.prop('disabled', false);\n self.$controlInput.prop('disabled', false).prop('tabindex', self.tabIndex);\n self.isDisabled = false;\n self.unlock();\n },\n\n /**\n * Completely destroys the control and\n * unbinds all event listeners so that it can\n * be garbage collected.\n */\n destroy: function() {\n var self = this;\n var eventNS = self.eventNS;\n var revertSettings = self.revertSettings;\n\n self.trigger('destroy');\n self.off();\n self.$wrapper.remove();\n self.$dropdown.remove();\n\n self.$input\n .html('')\n .append(revertSettings.$children)\n .removeAttr('tabindex')\n .removeClass('selectized')\n .attr({tabindex: revertSettings.tabindex})\n .show();\n\n self.$controlInput.removeData('grow');\n self.$input.removeData('selectize');\n\n $(window).off(eventNS);\n $(document).off(eventNS);\n $(document.body).off(eventNS);\n\n delete self.$input[0].selectize;\n },\n\n /**\n * A helper method for rendering \"item\" and\n * \"option\" templates, given the data.\n *\n * @param {string} templateName\n * @param {object} data\n * @returns {string}\n */\n render: function(templateName, data) {\n var value, id;\n var html = '';\n var cache = false;\n var self = this;\n // var regexTag = /^[\\t \\r\\n]*<([a-z][a-z0-9\\-]*(?:\\:[a-z][a-z0-9\\-]*)?)/i;\n\n if (templateName === 'option' || templateName === 'item') {\n value = hashKey(data[self.settings.valueField]);\n cache = !!value;\n }\n\n // pull markup from cache if it exists\n if (cache) {\n if (!isSet(self.renderCache[templateName])) {\n self.renderCache[templateName] = {};\n }\n if (self.renderCache[templateName].hasOwnProperty(value)) {\n return self.renderCache[templateName][value];\n }\n }\n\n // render markup\n html = $(self.settings.render[templateName].apply(this, [data, escapeHtml]));\n\n // add mandatory attributes\n if (templateName === 'option' || templateName === 'optionCreate') {\n html.attr('data-selectable', '');\n }\n else if (templateName === 'optgroup') {\n id = data[self.settings.optgroupValueField] || '';\n html.attr('data-group', id);\n }\n if (templateName === 'option' || templateName === 'item') {\n html.attr('data-value', value || '');\n }\n\n // update cache\n if (cache) {\n self.renderCache[templateName][value] = html[0];\n }\n\n return html[0];\n },\n\n /**\n * Clears the render cache for a template. If\n * no template is given, clears all render\n * caches.\n *\n * @param {string} templateName\n */\n clearCache: function(templateName) {\n var self = this;\n if (typeof templateName === 'undefined') {\n self.renderCache = {};\n } else {\n delete self.renderCache[templateName];\n }\n },\n\n /**\n * Determines whether or not to display the\n * create item prompt, given a user input.\n *\n * @param {string} input\n * @return {boolean}\n */\n canCreate: function(input) {\n var self = this;\n if (!self.settings.create) return false;\n var filter = self.settings.createFilter;\n return input.length\n && (typeof filter !== 'function' || filter.apply(self, [input]))\n && (typeof filter !== 'string' || new RegExp(filter).test(input))\n && (!(filter instanceof RegExp) || filter.test(input));\n }\n\n });\n}\n","import Selectize from './selectize';\nimport defaults from './defaults'\nimport {hashKey} from './utils';\n\nexport default function selectize($select, optsUser) {\n var opts = $.extend({}, defaults, optsUser);\n var attrData = opts.dataAttr;\n var fieldLabel = opts.labelField;\n var fieldValue = opts.valueField;\n var fieldOptgroup = opts.optgroupField;\n var fieldOptgroupLabel = opts.optgroupLabelField;\n var fieldOptgroupValue = opts.optgroupValueField;\n\n /**\n * Initializes selectize from a <input type=\"text\"> element.\n *\n * @param {object} $input\n * @param {object} optsElement\n */\n var initTextbox = function($input, optsElement) {\n var i, n, values, option;\n\n var dataRaw = $input.attr(attrData);\n\n if (!dataRaw) {\n var value = $.trim($input.val() || '');\n if (!opts.allowEmptyOption && !value.length) return;\n values = value.split(opts.delimiter);\n for (i = 0, n = values.length; i < n; i++) {\n option = {};\n option[fieldLabel] = values[i];\n option[fieldValue] = values[i];\n optsElement.options.push(option);\n }\n optsElement.items = values;\n } else {\n optsElement.options = JSON.parse(dataRaw);\n for (i = 0, n = optsElement.options.length; i < n; i++) {\n optsElement.items.push(optsElement.options[i][fieldValue]);\n }\n }\n };\n\n /**\n * Initializes selectize from a <select> element.\n *\n * @param {object} $input\n * @param {object} optsElement\n */\n var initSelect = function($input, optsElement) {\n var i, n, tagName, $children;\n var options = optsElement.options;\n var optionsMap = {};\n\n var readData = function($el) {\n var data = attrData && $el.attr(attrData);\n if (typeof data === 'string' && data.length) {\n return JSON.parse(data);\n }\n return null;\n };\n\n var addOption = function($option, group) {\n $option = $($option);\n\n var value = hashKey($option.val());\n if (!value && !opts.allowEmptyOption) return;\n\n // if the option already exists, it's probably been\n // duplicated in another optgroup. in this case, push\n // the current group to the \"optgroup\" property on the\n // existing option so that it's rendered in both places.\n if (optionsMap.hasOwnProperty(value)) {\n if (group) {\n var arr = optionsMap[value][fieldOptgroup];\n if (!arr) {\n optionsMap[value][fieldOptgroup] = group;\n } else if (!$.isArray(arr)) {\n optionsMap[value][fieldOptgroup] = [arr, group];\n } else {\n arr.push(group);\n }\n }\n return;\n }\n\n var option = readData($option) || {};\n option[fieldLabel] = option[fieldLabel] || $option.text();\n option[fieldValue] = option[fieldValue] || value;\n option[fieldOptgroup] = option[fieldOptgroup] || group;\n\n optionsMap[value] = option;\n options.push(option);\n\n if ($option.is(':selected')) {\n optsElement.items.push(value);\n }\n };\n\n var addGroup = function($optgroup) {\n var i, n, id, optgroup, $options;\n\n $optgroup = $($optgroup);\n id = $optgroup.attr('label');\n\n if (id) {\n optgroup = readData($optgroup) || {};\n optgroup[fieldOptgroupLabel] = id;\n optgroup[fieldOptgroupValue] = id;\n optsElement.optgroups.push(optgroup);\n }\n\n $options = $('option', $optgroup);\n for (i = 0, n = $options.length; i < n; i++) {\n addOption($options[i], id);\n }\n };\n\n optsElement.maxItems = $input.attr('multiple') ? null : 1;\n\n $children = $input.children();\n for (i = 0, n = $children.length; i < n; i++) {\n tagName = $children[i].tagName.toLowerCase();\n if (tagName === 'optgroup') {\n addGroup($children[i]);\n } else if (tagName === 'option') {\n addOption($children[i]);\n }\n }\n };\n\n return $select.each(function() {\n if (this.selectize) return;\n\n var instance;\n var $input = $(this);\n var tagName = this.tagName.toLowerCase();\n var placeholder = $input.attr('placeholder') || $input.attr('data-placeholder');\n if (!placeholder && !opts.allowEmptyOption) {\n placeholder = $input.children('option[value=\"\"]').text();\n }\n\n var optsElement = {\n 'placeholder' : placeholder,\n 'options' : [],\n 'optgroups' : [],\n 'items' : []\n };\n\n if (tagName === 'select') {\n initSelect($input, optsElement);\n } else {\n initTextbox($input, optsElement);\n }\n\n instance = new Selectize($input, $.extend(true, {}, defaults, optsElement, optsUser));\n });\n}\n","import $ from '../$'\nimport selectize from 'es-selectize'\nimport {raf} from 'es-raf'\n\nimport Text from './text'\nimport html from '../../templates/controls/dropdown'\n\nisABrokenBrowser = (window.navigator.userAgent.indexOf('MSIE') > 0 || window.navigator.userAgent.indexOf('Trident') > 0)\n\ncoolDown = -1\n\nexport default class Select extends Text\n tag: 'dropdown'\n html: html\n\n selectOptions: {}\n\n options: ->\n return @selectOptions\n\n readOnly: false\n ignore: false\n\n events:\n updated: ->\n @onUpdated()\n mount: ->\n @onUpdated()\n\n getValue: (event)->\n return $(event.target).val()?.trim().toLowerCase()\n\n initSelect: ($select)->\n options = []\n invertedOptions = {}\n for value, name of @options()\n options.push\n text: name\n value: value\n\n invertedOptions[name] = value\n\n selectize $select,\n dropdownParent: 'body'\n # valueField: 'value'\n # labelField: 'text'\n # searchField: 'text'\n .on 'change', (event) =>\n # This isn't working right, sometimes you have one change firing events on unrelated fields\n if coolDown != -1\n return\n\n coolDown = setTimeout ->\n coolDown = -1\n , 100\n\n @change event\n event.preventDefault()\n event.stopPropagation()\n false\n\n select = $select[0]\n select.selectize.addOption options\n select.selectize.addItem [@input.ref.get(@input.name)] || [], true\n select.selectize.refreshOptions false\n\n #support auto fill\n $input = $select.parent().find('.selectize-input input:first')\n $input.on 'change', (event) ->\n val = $(event.target).val()\n if invertedOptions[val]?\n $select[0].selectize.setValue(invertedOptions[val])\n\n #support read only\n if @readOnly\n $input.attr('readonly', true)\n\n init:(opts)->\n super arguments...\n\n @style = @style || 'width:100%'\n\n onUpdated: ->\n if !@input?\n return\n\n $select = $(@root).find('select')\n select = $select[0]\n if select?\n v = @input.ref.get @input.name\n if !@initialized\n raf =>\n @initSelect $select\n @initialized = true\n else if select.selectize? && v != select.selectize.getValue()\n select.selectize.clear true\n select.selectize.addItem v, true\n else\n $control = $(@root).find('.selectize-control')\n if !$control[0]?\n raf =>\n @scheduleUpdate()\n\n # @on 'unmount', ()=>\n # $select = $(@root).find('select')\n\nSelect.register()\n\n","function hex2rgba (hex) {\n if (typeof hex !== 'string') {\n throw new Error('Color should be defined as hex string')\n }\n\n var hexCode = hex.slice().replace('#', '').split('')\n if (hexCode.length < 3 || hexCode.length === 5 || hexCode.length > 8) {\n throw new Error('Invalid hex color: ' + hex)\n }\n\n // Convert from short to long form (fff -> ffffff)\n if (hexCode.length === 3 || hexCode.length === 4) {\n hexCode = Array.prototype.concat.apply([], hexCode.map(function (c) {\n return [c, c]\n }))\n }\n\n // Add default alpha value\n if (hexCode.length === 6) hexCode.push('F', 'F')\n\n var hexValue = parseInt(hexCode.join(''), 16)\n\n return {\n r: (hexValue >> 24) & 255,\n g: (hexValue >> 16) & 255,\n b: (hexValue >> 8) & 255,\n a: hexValue & 255,\n hex: '#' + hexCode.slice(0, 6).join('')\n }\n}\n\nexport function getOptions (options) {\n if (!options) options = {}\n if (!options.color) options.color = {}\n\n var margin = typeof options.margin === 'undefined' ||\n options.margin === null ||\n options.margin < 0 ? 4 : options.margin\n\n var width = options.width && options.width >= 21 ? options.width : undefined\n var scale = options.scale || 4\n\n return {\n width: width,\n scale: width ? 4 : scale,\n margin: margin,\n color: {\n dark: hex2rgba(options.color.dark || '#000000ff'),\n light: hex2rgba(options.color.light || '#ffffffff')\n },\n type: options.type,\n rendererOpts: options.rendererOpts || {}\n }\n}\n\nexport function getScale (qrSize, opts) {\n return opts.width && opts.width >= qrSize + opts.margin * 2\n ? opts.width / (qrSize + opts.margin * 2)\n : opts.scale\n}\n\nexport function getImageWidth (qrSize, opts) {\n var scale = getScale(qrSize, opts)\n return Math.floor((qrSize + opts.margin * 2) * scale)\n}\n\nexport function qrToImageData (imgData, qr, opts) {\n var size = qr.modules.size\n var data = qr.modules.data\n var scale = getScale(size, opts)\n var symbolSize = Math.floor((size + opts.margin * 2) * scale)\n var scaledMargin = opts.margin * scale\n var palette = [opts.color.light, opts.color.dark]\n\n for (var i = 0; i < symbolSize; i++) {\n for (var j = 0; j < symbolSize; j++) {\n var posDst = (i * symbolSize + j) * 4\n var pxColor = opts.color.light\n\n if (i >= scaledMargin && j >= scaledMargin &&\n i < symbolSize - scaledMargin && j < symbolSize - scaledMargin) {\n var iSrc = Math.floor((i - scaledMargin) / scale)\n var jSrc = Math.floor((j - scaledMargin) / scale)\n pxColor = palette[data[iSrc * size + jSrc] ? 1 : 0]\n }\n\n imgData[posDst++] = pxColor.r\n imgData[posDst++] = pxColor.g\n imgData[posDst++] = pxColor.b\n imgData[posDst] = pxColor.a\n }\n }\n}\n","import {getOptions} from './utils'\n\n\nfunction getColorAttrib (color, attrib) {\n var alpha = color.a / 255\n var str = attrib + '=\"' + color.hex + '\"'\n\n return alpha < 1\n ? str + ' ' + attrib + '-opacity=\"' + alpha.toFixed(2).slice(1) + '\"'\n : str\n}\n\nfunction svgCmd (cmd, x, y) {\n var str = cmd + x\n if (typeof y !== 'undefined') str += ' ' + y\n\n return str\n}\n\nfunction qrToPath (data, size, margin) {\n var path = ''\n var moveBy = 0\n var newRow = false\n var lineLength = 0\n\n for (var i = 0; i < data.length; i++) {\n var col = Math.floor(i % size)\n var row = Math.floor(i / size)\n\n if (!col && !newRow) newRow = true\n\n if (data[i]) {\n lineLength++\n\n if (!(i > 0 && col > 0 && data[i - 1])) {\n path += newRow\n ? svgCmd('M', col + margin, 0.5 + row + margin)\n : svgCmd('m', moveBy, 0)\n\n moveBy = 0\n newRow = false\n }\n\n if (!(col + 1 < size && data[i + 1])) {\n path += svgCmd('h', lineLength)\n lineLength = 0\n }\n } else {\n moveBy++\n }\n }\n\n return path\n}\n\nexport function render (qrData, options, cb) {\n var opts = getOptions(options)\n var size = qrData.modules.size\n var data = qrData.modules.data\n var qrcodesize = size + opts.margin * 2\n\n var bg = !opts.color.light.a\n ? ''\n : '<path ' + getColorAttrib(opts.color.light, 'fill') +\n ' d=\"M0 0h' + qrcodesize + 'v' + qrcodesize + 'H0z\"/>'\n\n var path =\n '<path ' + getColorAttrib(opts.color.dark, 'stroke') +\n ' d=\"' + qrToPath(data, size, opts.margin) + '\"/>'\n\n var viewBox = 'viewBox=\"' + '0 0 ' + qrcodesize + ' ' + qrcodesize + '\"'\n\n var width = !opts.width ? '' : 'width=\"' + opts.width + '\" height=\"' + opts.width + '\" '\n\n var svgTag = '<svg xmlns=\"http://www.w3.org/2000/svg\" ' + width + viewBox + '>' + bg + path + '</svg>'\n\n if (typeof cb === 'function') {\n cb(null, svgTag)\n }\n\n return svgTag\n}\n","export default function(obj) {\n return Object.prototype.toString.call(obj)\n}\n","import toString from 'es-tostring'\n\n# Test if 'value' is an array.\n#\n# @param {Mixed} value value to test\n# @return {Boolean} true if `value` is an array, false otherwise\n# @api public\nexport default isArray = Array.isArray or (value) ->\n toString(value) == '[object Array]'\n","import toString from 'es-tostring'\n\n# Test if `value` is a function.\n#\n# @param {Mixed} value value to test\n# @return {Boolean} true if `value` is a function, false otherwise\n# @api public\nexport default isFunction = (value) ->\n # Is alert\n return true if typeof window != 'undefined' and value == window.alert\n\n str = toString(value)\n\n str == '[object Function]' or\n str == '[object GeneratorFunction]' or\n str == '[object AsyncFunction]'\n","import isFunction from 'es-is/function'\n\nvar toSJISFunction\nvar CODEWORDS_COUNT = [\n 0, // Not used\n 26, 44, 70, 100, 134, 172, 196, 242, 292, 346,\n 404, 466, 532, 581, 655, 733, 815, 901, 991, 1085,\n 1156, 1258, 1364, 1474, 1588, 1706, 1828, 1921, 2051, 2185,\n 2323, 2465, 2611, 2761, 2876, 3034, 3196, 3362, 3532, 3706\n]\n\n/**\n * Returns the QR Code size for the specified version\n *\n * @param {Number} version QR Code version\n * @return {Number} size of QR code\n */\nexport function getSymbolSize(version) {\n if (!version) throw new Error('\"version\" cannot be null or undefined')\n if (version < 1 || version > 40) throw new Error('\"version\" should be in range from 1 to 40')\n return version * 4 + 17\n}\n\n/**\n * Returns the total number of codewords used to store data and EC information.\n *\n * @param {Number} version QR Code version\n * @return {Number} Data length in bits\n */\nexport function getSymbolTotalCodewords(version) {\n return CODEWORDS_COUNT[version]\n}\n\n/**\n * Encode data with Bose-Chaudhuri-Hocquenghem\n *\n * @param {Number} data Value to encode\n * @return {Number} Encoded value\n */\nexport function getBCHDigit(data) {\n var digit = 0\n\n while (data !== 0) {\n digit++\n data >>>= 1\n }\n\n return digit\n}\n\nexport function setToSJISFunction (f) {\n if (!isFunction(f)) {\n throw new Error('\"toSJISFunc\" is not a valid function.')\n }\n\n toSJISFunction = f\n}\n\nexport function isKanjiModeEnabled() {\n return typeof toSJISFunction !== 'undefined'\n}\n\nexport function toSJIS(kanji) {\n return toSJISFunction(kanji)\n}\n","/**\n * Alignment pattern are fixed reference pattern in defined positions\n * in a matrix symbology, which enables the decode software to re-synchronise\n * the coordinate mapping of the image modules in the event of moderate amounts\n * of distortion of the image.\n *\n * Alignment patterns are present only in QR Code symbols of version 2 or larger\n * and their number depends on the symbol version.\n */\n\nimport {getSymbolSize} from './utils'\n\n/**\n * Calculate the row/column coordinates of the center module of each alignment pattern\n * for the specified QR Code version.\n *\n * The alignment patterns are positioned symmetrically on either side of the diagonal\n * running from the top left corner of the symbol to the bottom right corner.\n *\n * Since positions are simmetrical only half of the coordinates are returned.\n * Each item of the array will represent in turn the x and y coordinate.\n * @see {@link getPositions}\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinate\n */\nexport function getRowColCoords(version) {\n if (version === 1) return []\n\n var posCount = Math.floor(version / 7) + 2\n var size = getSymbolSize(version)\n var intervals = size === 145 ? 26 : Math.ceil((size - 13) / (2 * posCount - 2)) * 2\n var positions = [size - 7] // Last coord is always (size - 7)\n\n for (var i = 1; i < posCount - 1; i++) {\n positions[i] = positions[i - 1] - intervals\n }\n\n positions.push(6) // First coord is always 6\n\n return positions.reverse()\n}\n\n/**\n * Returns an array containing the positions of each alignment pattern.\n * Each array's element represent the center point of the pattern as (x, y) coordinates\n *\n * Coordinates are calculated expanding the row/column coordinates returned by {@link getRowColCoords}\n * and filtering out the items that overlaps with finder pattern\n *\n * @example\n * For a Version 7 symbol {@link getRowColCoords} returns values 6, 22 and 38.\n * The alignment patterns, therefore, are to be centered on (row, column)\n * positions (6,22), (22,6), (22,22), (22,38), (38,22), (38,38).\n * Note that the coordinates (6,6), (6,38), (38,6) are occupied by finder patterns\n * and are not therefore used for alignment patterns.\n *\n * var pos = getPositions(7)\n * // [[6,22], [22,6], [22,22], [22,38], [38,22], [38,38]]\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinates\n */\nexport function getPositions(version) {\n var coords = []\n var pos = getRowColCoords(version)\n var posLength = pos.length\n\n for (var i = 0; i < posLength; i++) {\n for (var j = 0; j < posLength; j++) {\n // Skip if position is occupied by finder patterns\n if ((i === 0 && j === 0) || // top-left\n (i === 0 && j === posLength - 1) || // bottom-left\n (i === posLength - 1 && j === 0)) { // top-right\n continue\n }\n\n coords.push([pos[i], pos[j]])\n }\n }\n\n return coords\n}\n","export let L = { bit: 1 }\nexport let M = { bit: 0 }\nexport let Q = { bit: 3 }\nexport let H = { bit: 2 }\n\nfunction fromString (string) {\n if (typeof string !== 'string') {\n throw new Error('Param is not a string')\n }\n\n var lcStr = string.toLowerCase()\n\n switch (lcStr) {\n case 'l':\n case 'low':\n return L\n\n case 'm':\n case 'medium':\n return M\n\n case 'q':\n case 'quartile':\n return Q\n\n case 'h':\n case 'high':\n return H\n\n default:\n throw new Error('Unknown EC Level: ' + string)\n }\n}\n\nexport function isValid (level) {\n return level && typeof level.bit !== 'undefined' &&\n level.bit >= 0 && level.bit < 4\n}\n\nexport function from (value, defaultValue) {\n if (isValid(value)) {\n return value\n }\n\n try {\n return fromString(value)\n } catch (e) {\n return defaultValue\n }\n}\n","import * as ECLevel from './error-correction-level'\r\n\r\nvar EC_BLOCKS_TABLE = [\r\n// L M Q H\r\n 1, 1, 1, 1,\r\n 1, 1, 1, 1,\r\n 1, 1, 2, 2,\r\n 1, 2, 2, 4,\r\n 1, 2, 4, 4,\r\n 2, 4, 4, 4,\r\n 2, 4, 6, 5,\r\n 2, 4, 6, 6,\r\n 2, 5, 8, 8,\r\n 4, 5, 8, 8,\r\n 4, 5, 8, 11,\r\n 4, 8, 10, 11,\r\n 4, 9, 12, 16,\r\n 4, 9, 16, 16,\r\n 6, 10, 12, 18,\r\n 6, 10, 17, 16,\r\n 6, 11, 16, 19,\r\n 6, 13, 18, 21,\r\n 7, 14, 21, 25,\r\n 8, 16, 20, 25,\r\n 8, 17, 23, 25,\r\n 9, 17, 23, 34,\r\n 9, 18, 25, 30,\r\n 10, 20, 27, 32,\r\n 12, 21, 29, 35,\r\n 12, 23, 34, 37,\r\n 12, 25, 34, 40,\r\n 13, 26, 35, 42,\r\n 14, 28, 38, 45,\r\n 15, 29, 40, 48,\r\n 16, 31, 43, 51,\r\n 17, 33, 45, 54,\r\n 18, 35, 48, 57,\r\n 19, 37, 51, 60,\r\n 19, 38, 53, 63,\r\n 20, 40, 56, 66,\r\n 21, 43, 59, 70,\r\n 22, 45, 62, 74,\r\n 24, 47, 65, 77,\r\n 25, 49, 68, 81\r\n]\r\n\r\nvar EC_CODEWORDS_TABLE = [\r\n// L M Q H\r\n 7, 10, 13, 17,\r\n 10, 16, 22, 28,\r\n 15, 26, 36, 44,\r\n 20, 36, 52, 64,\r\n 26, 48, 72, 88,\r\n 36, 64, 96, 112,\r\n 40, 72, 108, 130,\r\n 48, 88, 132, 156,\r\n 60, 110, 160, 192,\r\n 72, 130, 192, 224,\r\n 80, 150, 224, 264,\r\n 96, 176, 260, 308,\r\n 104, 198, 288, 352,\r\n 120, 216, 320, 384,\r\n 132, 240, 360, 432,\r\n 144, 280, 408, 480,\r\n 168, 308, 448, 532,\r\n 180, 338, 504, 588,\r\n 196, 364, 546, 650,\r\n 224, 416, 600, 700,\r\n 224, 442, 644, 750,\r\n 252, 476, 690, 816,\r\n 270, 504, 750, 900,\r\n 300, 560, 810, 960,\r\n 312, 588, 870, 1050,\r\n 336, 644, 952, 1110,\r\n 360, 700, 1020, 1200,\r\n 390, 728, 1050, 1260,\r\n 420, 784, 1140, 1350,\r\n 450, 812, 1200, 1440,\r\n 480, 868, 1290, 1530,\r\n 510, 924, 1350, 1620,\r\n 540, 980, 1440, 1710,\r\n 570, 1036, 1530, 1800,\r\n 570, 1064, 1590, 1890,\r\n 600, 1120, 1680, 1980,\r\n 630, 1204, 1770, 2100,\r\n 660, 1260, 1860, 2220,\r\n 720, 1316, 1950, 2310,\r\n 750, 1372, 2040, 2430\r\n]\r\n\r\n/**\r\n * Returns the number of error correction block that the QR Code should contain\r\n * for the specified version and error correction level.\r\n *\r\n * @param {Number} version QR Code version\r\n * @param {Number} errorCorrectionLevel Error correction level\r\n * @return {Number} Number of error correction blocks\r\n */\r\nexport function getBlocksCount (version, errorCorrectionLevel) {\r\n switch (errorCorrectionLevel) {\r\n case ECLevel.L:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 0]\r\n case ECLevel.M:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 1]\r\n case ECLevel.Q:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 2]\r\n case ECLevel.H:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 3]\r\n default:\r\n return undefined\r\n }\r\n}\r\n\r\n/**\r\n * Returns the number of error correction codewords to use for the specified\r\n * version and error correction level.\r\n *\r\n * @param {Number} version QR Code version\r\n * @param {Number} errorCorrectionLevel Error correction level\r\n * @return {Number} Number of error correction codewords\r\n */\r\nexport function getTotalCodewordsCount (version, errorCorrectionLevel) {\r\n switch (errorCorrectionLevel) {\r\n case ECLevel.L:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 0]\r\n case ECLevel.M:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 1]\r\n case ECLevel.Q:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 2]\r\n case ECLevel.H:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 3]\r\n default:\r\n return undefined\r\n }\r\n}\r\n","import {getSymbolSize} from './utils'\n\nvar FINDER_PATTERN_SIZE = 7\n\n/**\n * Returns an array containing the positions of each finder pattern.\n * Each array's element represent the top-left point of the pattern as (x, y) coordinates\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinates\n */\nexport function getPositions (version) {\n var size = getSymbolSize(version)\n\n return [\n // top-left\n [0, 0],\n // top-right\n [size - FINDER_PATTERN_SIZE, 0],\n // bottom-left\n [0, size - FINDER_PATTERN_SIZE]\n ]\n}\n","import {getBCHDigit} from './utils'\n\nvar G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0)\nvar G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1)\nvar G15_BCH = getBCHDigit(G15)\n\n/**\n * Returns format information with relative error correction bits\n *\n * The format information is a 15-bit sequence containing 5 data bits,\n * with 10 error correction bits calculated using the (15, 5) BCH code.\n *\n * @param {Number} errorCorrectionLevel Error correction level\n * @param {Number} mask Mask pattern\n * @return {Number} Encoded format information bits\n */\nexport function getEncodedBits (errorCorrectionLevel, mask) {\n var data = ((errorCorrectionLevel.bit << 3) | mask)\n var d = data << 10\n\n while (getBCHDigit(d) - G15_BCH >= 0) {\n d ^= (G15 << (getBCHDigit(d) - G15_BCH))\n }\n\n // xor final data with mask pattern in order to ensure that\n // no combination of Error Correction Level and data mask pattern\n // will result in an all-zero data string\n return ((data << 10) | d) ^ G15_MASK\n}\n","/**\n * Data mask pattern reference\n * @type {Object}\n */\nexport let Patterns = {\n PATTERN000: 0,\n PATTERN001: 1,\n PATTERN010: 2,\n PATTERN011: 3,\n PATTERN100: 4,\n PATTERN101: 5,\n PATTERN110: 6,\n PATTERN111: 7\n}\n\n/**\n * Weighted penalty scores for the undesirable features\n * @type {Object}\n */\nvar PenaltyScores = {\n N1: 3,\n N2: 3,\n N3: 40,\n N4: 10\n}\n\n/**\n * Check if mask pattern value is valid\n *\n * @param {Number} mask Mask pattern\n * @return {Boolean} true if valid, false otherwise\n */\nexport function isValid (mask) {\n return mask && mask !== '' && !isNaN(mask) && mask >= 0 && mask <= 7\n}\n\n/**\n * Returns mask pattern from a value.\n * If value is not valid, returns undefined\n *\n * @param {Number|String} value Mask pattern value\n * @return {Number} Valid mask pattern or undefined\n */\nexport function from (value) {\n return isValid(value) ? parseInt(value, 10) : undefined\n}\n\n/**\n* Find adjacent modules in row/column with the same color\n* and assign a penalty value.\n*\n* Points: N1 + i\n* i is the amount by which the number of adjacent modules of the same color exceeds 5\n*/\nexport function getPenaltyN1 (data) {\n var size = data.size\n var points = 0\n var sameCountCol = 0\n var sameCountRow = 0\n var lastCol = null\n var lastRow = null\n\n for (var row = 0; row < size; row++) {\n sameCountCol = sameCountRow = 0\n lastCol = lastRow = null\n\n for (var col = 0; col < size; col++) {\n var module = data.get(row, col)\n if (module === lastCol) {\n sameCountCol++\n } else {\n if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5)\n lastCol = module\n sameCountCol = 1\n }\n\n module = data.get(col, row)\n if (module === lastRow) {\n sameCountRow++\n } else {\n if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5)\n lastRow = module\n sameCountRow = 1\n }\n }\n\n if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5)\n if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5)\n }\n\n return points\n}\n\n/**\n * Find 2x2 blocks with the same color and assign a penalty value\n *\n * Points: N2 * (m - 1) * (n - 1)\n */\nexport function getPenaltyN2 (data) {\n var size = data.size\n var points = 0\n\n for (var row = 0; row < size - 1; row++) {\n for (var col = 0; col < size - 1; col++) {\n var last = data.get(row, col) +\n data.get(row, col + 1) +\n data.get(row + 1, col) +\n data.get(row + 1, col + 1)\n\n if (last === 4 || last === 0) points++\n }\n }\n\n return points * PenaltyScores.N2\n}\n\n/**\n * Find 1:1:3:1:1 ratio (dark:light:dark:light:dark) pattern in row/column,\n * preceded or followed by light area 4 modules wide\n *\n * Points: N3 * number of pattern found\n */\nexport function getPenaltyN3 (data) {\n var size = data.size\n var points = 0\n var bitsCol = 0\n var bitsRow = 0\n\n for (var row = 0; row < size; row++) {\n bitsCol = bitsRow = 0\n for (var col = 0; col < size; col++) {\n bitsCol = ((bitsCol << 1) & 0x7FF) | data.get(row, col)\n if (col >= 10 && (bitsCol === 0x5D0 || bitsCol === 0x05D)) points++\n\n bitsRow = ((bitsRow << 1) & 0x7FF) | data.get(col, row)\n if (col >= 10 && (bitsRow === 0x5D0 || bitsRow === 0x05D)) points++\n }\n }\n\n return points * PenaltyScores.N3\n}\n\n/**\n * Calculate proportion of dark modules in entire symbol\n *\n * Points: N4 * k\n *\n * k is the rating of the deviation of the proportion of dark modules\n * in the symbol from 50% in steps of 5%\n */\nexport function getPenaltyN4 (data) {\n var darkCount = 0\n var modulesCount = data.data.length\n\n for (var i = 0; i < modulesCount; i++) darkCount += data.data[i]\n\n var k = Math.abs(Math.ceil((darkCount * 100 / modulesCount) / 5) - 10)\n\n return k * PenaltyScores.N4\n}\n\n/**\n * Return mask value at given position\n *\n * @param {Number} maskPattern Pattern reference value\n * @param {Number} i Row\n * @param {Number} j Column\n * @return {Boolean} Mask value\n */\nfunction getMaskAt (maskPattern, i, j) {\n switch (maskPattern) {\n case Patterns.PATTERN000: return (i + j) % 2 === 0\n case Patterns.PATTERN001: return i % 2 === 0\n case Patterns.PATTERN010: return j % 3 === 0\n case Patterns.PATTERN011: return (i + j) % 3 === 0\n case Patterns.PATTERN100: return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 === 0\n case Patterns.PATTERN101: return (i * j) % 2 + (i * j) % 3 === 0\n case Patterns.PATTERN110: return ((i * j) % 2 + (i * j) % 3) % 2 === 0\n case Patterns.PATTERN111: return ((i * j) % 3 + (i + j) % 2) % 2 === 0\n\n default: throw new Error('bad maskPattern:' + maskPattern)\n }\n}\n\n/**\n * Apply a mask pattern to a BitMatrix\n *\n * @param {Number} pattern Pattern reference number\n * @param {BitMatrix} data BitMatrix data\n */\nexport function applyMask (pattern, data) {\n var size = data.size\n\n for (var col = 0; col < size; col++) {\n for (var row = 0; row < size; row++) {\n if (data.isReserved(row, col)) continue\n data.xor(row, col, getMaskAt(pattern, row, col))\n }\n }\n}\n\n/**\n * Returns the best mask pattern for data\n *\n * @param {BitMatrix} data\n * @return {Number} Mask pattern reference number\n */\nexport function getBestMask (data, setupFormatFunc) {\n var numPatterns = Object.keys(Patterns).length\n var bestPattern = 0\n var lowerPenalty = Infinity\n\n for (var p = 0; p < numPatterns; p++) {\n setupFormatFunc(p)\n applyMask(p, data)\n\n // Calculate penalty\n var penalty =\n getPenaltyN1(data) +\n getPenaltyN2(data) +\n getPenaltyN3(data) +\n getPenaltyN4(data)\n\n // Undo previously applied mask\n applyMask(p, data)\n\n if (penalty < lowerPenalty) {\n lowerPenalty = penalty\n bestPattern = p\n }\n }\n\n return bestPattern\n}\n","import isArray from 'es-is/array'\n\nimport * as ECCode from './error-correction-code'\nimport * as ECLevel from './error-correction-level'\nimport * as Mode from './mode'\nimport {getBCHDigit, getSymbolTotalCodewords} from './utils'\n\n// Generator polynomial used to encode version information\nvar G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0)\nvar G18_BCH = getBCHDigit(G18)\n\nfunction getBestVersionForDataLength (mode, length, errorCorrectionLevel) {\n for (var currentVersion = 1; currentVersion <= 40; currentVersion++) {\n if (length <= getCapacity(currentVersion, errorCorrectionLevel, mode)) {\n return currentVersion\n }\n }\n\n return undefined\n}\n\nfunction getReservedBitsCount (mode, version) {\n // Character count indicator + mode indicator bits\n return Mode.getCharCountIndicator(mode, version) + 4\n}\n\nfunction getTotalBitsFromDataArray (segments, version) {\n var totalBits = 0\n\n segments.forEach(function (data) {\n var reservedBits = getReservedBitsCount(data.mode, version)\n totalBits += reservedBits + data.getBitsLength()\n })\n\n return totalBits\n}\n\nfunction getBestVersionForMixedData (segments, errorCorrectionLevel) {\n for (var currentVersion = 1; currentVersion <= 40; currentVersion++) {\n var length = getTotalBitsFromDataArray(segments, currentVersion)\n if (length <= getCapacity(currentVersion, errorCorrectionLevel, Mode.MIXED)) {\n return currentVersion\n }\n }\n\n return undefined\n}\n\n/**\n * Check if QR Code version is valid\n *\n * @param {Number} version QR Code version\n * @return {Boolean} true if valid version, false otherwise\n */\nexport function isValid(version) {\n return !isNaN(version) && version >= 1 && version <= 40\n}\n\n/**\n * Returns version number from a value.\n * If value is not a valid version, returns defaultValue\n *\n * @param {Number|String} value QR Code version\n * @param {Number} defaultValue Fallback value\n * @return {Number} QR Code version number\n */\nexport function from(value, defaultValue) {\n if (isValid(value)) {\n return parseInt(value, 10)\n }\n\n return defaultValue\n}\n\n/**\n * Returns how much data can be stored with the specified QR code version\n * and error correction level\n *\n * @param {Number} version QR Code version (1-40)\n * @param {Number} errorCorrectionLevel Error correction level\n * @param {Mode} mode Data mode\n * @return {Number} Quantity of storable data\n */\nexport function getCapacity(version, errorCorrectionLevel, mode) {\n if (!isValid(version)) {\n throw new Error('Invalid QR Code version')\n }\n\n // Use Byte mode as default\n if (typeof mode === 'undefined') mode = Mode.BYTE\n\n // Total codewords for this QR code version (Data + Error correction)\n var totalCodewords = getSymbolTotalCodewords(version)\n\n // Total number of error correction codewords\n var ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n\n // Total number of data codewords\n var dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8\n\n if (mode === Mode.MIXED) return dataTotalCodewordsBits\n\n var usableBits = dataTotalCodewordsBits - getReservedBitsCount(mode, version)\n\n // Return max number of storable codewords\n switch (mode) {\n case Mode.NUMERIC:\n return Math.floor((usableBits / 10) * 3)\n\n case Mode.ALPHANUMERIC:\n return Math.floor((usableBits / 11) * 2)\n\n case Mode.KANJI:\n return Math.floor(usableBits / 13)\n\n case Mode.BYTE:\n default:\n return Math.floor(usableBits / 8)\n }\n}\n\n/**\n * Returns the minimum version needed to contain the amount of data\n *\n * @param {Segment} data Segment of data\n * @param {Number} [errorCorrectionLevel=H] Error correction level\n * @param {Mode} mode Data mode\n * @return {Number} QR Code version\n */\nexport function getBestVersionForData(data, errorCorrectionLevel) {\n var seg\n\n var ecl = ECLevel.from(errorCorrectionLevel, ECLevel.M)\n\n if (isArray(data)) {\n if (data.length > 1) {\n return getBestVersionForMixedData(data, ecl)\n }\n\n if (data.length === 0) {\n return 1\n }\n\n seg = data[0]\n } else {\n seg = data\n }\n\n return getBestVersionForDataLength(seg.mode, seg.getLength(), ecl)\n}\n\n/**\n * Returns version information with relative error correction bits\n *\n * The version information is included in QR Code symbols of version 7 or larger.\n * It consists of an 18-bit sequence containing 6 data bits,\n * with 12 error correction bits calculated using the (18, 6) Golay code.\n *\n * @param {Number} version QR Code version\n * @return {Number} Encoded version info bits\n */\nexport function getEncodedBits(version) {\n if (!isValid(version) || version < 7) {\n throw new Error('Invalid QR Code version')\n }\n\n var d = version << 12\n\n while (getBCHDigit(d) - G18_BCH >= 0) {\n d ^= (G18 << (getBCHDigit(d) - G18_BCH))\n }\n\n return (version << 12) | d\n}\n","var numeric = '[0-9]+'\nvar alphanumeric = '[A-Z $%*+\\\\-./:]+'\nvar kanji = '(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|' +\n '[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|' +\n '[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|' +\n '[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+'\nkanji = kanji.replace(/u/g, '\\\\u')\n\nvar byte = '(?:(?![A-Z0-9 $%*+\\\\-./:]|' + kanji + ').)+'\n\nexport let KANJI = new RegExp(kanji, 'g')\nexport let BYTE_KANJI = new RegExp('[^A-Z0-9 $%*+\\\\-./:]+', 'g')\nexport let BYTE = new RegExp(byte, 'g')\nexport let NUMERIC = new RegExp(numeric, 'g')\nexport let ALPHANUMERIC = new RegExp(alphanumeric, 'g')\n\nvar TEST_KANJI = new RegExp('^' + kanji + '$')\nvar TEST_NUMERIC = new RegExp('^' + numeric + '$')\nvar TEST_ALPHANUMERIC = new RegExp('^[A-Z0-9 $%*+\\\\-./:]+$')\n\nexport function testKanji(str) {\n return TEST_KANJI.test(str)\n}\n\nexport function testNumeric(str) {\n return TEST_NUMERIC.test(str)\n}\n\nexport function testAlphanumeric(str) {\n return TEST_ALPHANUMERIC.test(str)\n}\n","import * as Version from './version'\nimport * as Regex from './regex'\n\n/**\n * Numeric mode encodes data from the decimal digit set (0 - 9)\n * (byte values 30HEX to 39HEX).\n * Normally, 3 data characters are represented by 10 bits.\n *\n * @type {Object}\n */\nexport let NUMERIC = {\n id: 'Numeric',\n bit: 1 << 0,\n ccBits: [10, 12, 14]\n}\n\n/**\n * Alphanumeric mode encodes data from a set of 45 characters,\n * i.e. 10 numeric digits (0 - 9),\n * 26 alphabetic characters (A - Z),\n * and 9 symbols (SP, $, %, *, +, -, ., /, :).\n * Normally, two input characters are represented by 11 bits.\n *\n * @type {Object}\n */\nexport let ALPHANUMERIC = {\n id: 'Alphanumeric',\n bit: 1 << 1,\n ccBits: [9, 11, 13]\n}\n\n/**\n * In byte mode, data is encoded at 8 bits per character.\n *\n * @type {Object}\n */\nexport let BYTE = {\n id: 'Byte',\n bit: 1 << 2,\n ccBits: [8, 16, 16]\n}\n\n/**\n * The Kanji mode efficiently encodes Kanji characters in accordance with\n * the Shift JIS system based on JIS X 0208.\n * The Shift JIS values are shifted from the JIS X 0208 values.\n * JIS X 0208 gives details of the shift coded representation.\n * Each two-byte character value is compacted to a 13-bit binary codeword.\n *\n * @type {Object}\n */\nexport let KANJI = {\n id: 'Kanji',\n bit: 1 << 3,\n ccBits: [8, 10, 12]\n}\n\n/**\n * Mixed mode will contain a sequences of data in a combination of any of\n * the modes described above\n *\n * @type {Object}\n */\nexport let MIXED = {\n bit: -1\n}\n\n/**\n * Returns the number of bits needed to store the data length\n * according to QR Code specifications.\n *\n * @param {Mode} mode Data mode\n * @param {Number} version QR Code version\n * @return {Number} Number of bits\n */\nexport function getCharCountIndicator (mode, version) {\n if (!mode.ccBits) throw new Error('Invalid mode: ' + mode)\n\n if (!Version.isValid(version)) {\n throw new Error('Invalid version: ' + version)\n }\n\n if (version >= 1 && version < 10) return mode.ccBits[0]\n else if (version < 27) return mode.ccBits[1]\n return mode.ccBits[2]\n}\n\n/**\n * Returns the most efficient mode to store the specified data\n *\n * @param {String} dataStr Input data string\n * @return {Mode} Best mode\n */\nexport function getBestModeForData (dataStr) {\n if (Regex.testNumeric(dataStr)) return NUMERIC\n else if (Regex.testAlphanumeric(dataStr)) return ALPHANUMERIC\n else if (Regex.testKanji(dataStr)) return KANJI\n else return BYTE\n}\n\n/**\n * Return mode name as string\n *\n * @param {Mode} mode Mode object\n * @returns {String} Mode name\n */\nexport function toString (mode) {\n if (mode && mode.id) return mode.id\n throw new Error('Invalid mode')\n}\n\n/**\n * Check if input param is a valid mode object\n *\n * @param {Mode} mode Mode object\n * @returns {Boolean} True if valid mode, false otherwise\n */\nexport function isValid (mode) {\n return mode && mode.bit && mode.ccBits\n}\n\n/**\n * Get mode object from its name\n *\n * @param {String} string Mode name\n * @returns {Mode} Mode object\n */\nfunction fromString (string) {\n if (typeof string !== 'string') {\n throw new Error('Param is not a string')\n }\n\n var lcStr = string.toLowerCase()\n\n switch (lcStr) {\n case 'numeric':\n return NUMERIC\n case 'alphanumeric':\n return ALPHANUMERIC\n case 'kanji':\n return KANJI\n case 'byte':\n return BYTE\n default:\n throw new Error('Unknown mode: ' + string)\n }\n}\n\n/**\n * Returns mode from a value.\n * If value is not a valid mode, returns defaultValue\n *\n * @param {Mode|String} value Encoding mode\n * @param {Mode} defaultValue Fallback value\n * @return {Mode} Encoding mode\n */\nexport function from (value, defaultValue) {\n if (isValid(value)) {\n return value\n }\n\n try {\n return fromString(value)\n } catch (e) {\n return defaultValue\n }\n}\n","import * as Mode from './mode'\n\n/**\n * Array of characters available in alphanumeric mode\n *\n * As per QR Code specification, to each character\n * is assigned a value from 0 to 44 which in this case coincides\n * with the array index\n *\n * @type {Array}\n */\nvar ALPHA_NUM_CHARS = [\n '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',\n 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',\n 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',\n ' ', '$', '%', '*', '+', '-', '.', '/', ':'\n]\n\nfunction AlphanumericData (data) {\n this.mode = Mode.ALPHANUMERIC\n this.data = data\n}\n\nAlphanumericData.getBitsLength = function getBitsLength (length) {\n return 11 * Math.floor(length / 2) + 6 * (length % 2)\n}\n\nAlphanumericData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nAlphanumericData.prototype.getBitsLength = function getBitsLength () {\n return AlphanumericData.getBitsLength(this.data.length)\n}\n\nAlphanumericData.prototype.write = function write (bitBuffer) {\n var i\n\n // Input data characters are divided into groups of two characters\n // and encoded as 11-bit binary codes.\n for (i = 0; i + 2 <= this.data.length; i += 2) {\n // The character value of the first character is multiplied by 45\n var value = ALPHA_NUM_CHARS.indexOf(this.data[i]) * 45\n\n // The character value of the second digit is added to the product\n value += ALPHA_NUM_CHARS.indexOf(this.data[i + 1])\n\n // The sum is then stored as 11-bit binary number\n bitBuffer.put(value, 11)\n }\n\n // If the number of input data characters is not a multiple of two,\n // the character value of the final character is encoded as a 6-bit binary number.\n if (this.data.length % 2) {\n bitBuffer.put(ALPHA_NUM_CHARS.indexOf(this.data[i]), 6)\n }\n}\n\nexport default AlphanumericData\n","/**\n * Implementation of a subset of node.js Buffer methods for the browser.\n * Based on https://github.com/feross/buffer\n */\n\n/* eslint-disable no-proto */\nimport isArray from 'es-is/array'\n\nfunction typedArraySupport () {\n // Can typed array instances be augmented?\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nvar K_MAX_LENGTH = Buffer.TYPED_ARRAY_SUPPORT ? 0x7fffffff : 0x3fffffff\n\nfunction Buffer (arg, offset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, offset, length)\n }\n\n if (typeof arg === 'number') {\n return allocUnsafe(this, arg)\n }\n\n return from(this, arg, offset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true,\n enumerable: false,\n writable: false\n })\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n\nfunction createBuffer (that, length) {\n var buf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n buf = new Uint8Array(length)\n buf.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n buf = that\n if (buf === null) {\n buf = new Buffer(length)\n }\n buf.length = length\n }\n\n return buf\n}\n\nfunction allocUnsafe (that, size) {\n var buf = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n buf[i] = 0\n }\n }\n\n return buf\n}\n\nfunction fromString (that, string) {\n var length = byteLength(string) | 0\n var buf = createBuffer(that, length)\n\n var actual = buf.write(string)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n buf.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n buf = fromArrayLike(that, buf)\n }\n\n return buf\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(that, len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction byteLength (string) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n return utf8ToBytes(string).length\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction from (that, value, offset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, offset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, offset)\n }\n\n return fromObject(that, value)\n}\n\nBuffer.prototype.write = function write (string, offset, length) {\n // Buffer#write(string)\n if (offset === undefined) {\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n } else {\n length = undefined\n }\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n return utf8Write(this, string, offset, length)\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\nBuffer.prototype.fill = function fill (val, start, end) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : new Buffer(val)\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return createBuffer(null, 0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = allocUnsafe(null, length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nBuffer.byteLength = byteLength\n\nBuffer.prototype._isBuffer = true\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nexport default Buffer\n","import * as Mode from './mode'\nimport Buffer from './buffer'\n\nfunction ByteData (data) {\n this.mode = Mode.BYTE\n this.data = new Buffer(data)\n}\n\nByteData.getBitsLength = function getBitsLength (length) {\n return length * 8\n}\n\nByteData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nByteData.prototype.getBitsLength = function getBitsLength () {\n return ByteData.getBitsLength(this.data.length)\n}\n\nByteData.prototype.write = function (bitBuffer) {\n for (var i = 0, l = this.data.length; i < l; i++) {\n bitBuffer.put(this.data[i], 8)\n }\n}\n\nexport default ByteData\n","import * as Mode from './mode'\nimport {toSJIS} from './utils'\n\nfunction KanjiData (data) {\n this.mode = Mode.KANJI\n this.data = data\n}\n\nKanjiData.getBitsLength = function getBitsLength (length) {\n return length * 13\n}\n\nKanjiData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nKanjiData.prototype.getBitsLength = function getBitsLength () {\n return KanjiData.getBitsLength(this.data.length)\n}\n\nKanjiData.prototype.write = function (bitBuffer) {\n var i\n\n // In the Shift JIS system, Kanji characters are represented by a two byte combination.\n // These byte values are shifted from the JIS X 0208 values.\n // JIS X 0208 gives details of the shift coded representation.\n for (i = 0; i < this.data.length; i++) {\n var value = toSJIS(this.data[i])\n\n // For characters with Shift JIS values from 0x8140 to 0x9FFC:\n if (value >= 0x8140 && value <= 0x9FFC) {\n // Subtract 0x8140 from Shift JIS value\n value -= 0x8140\n\n // For characters with Shift JIS values from 0xE040 to 0xEBBF\n } else if (value >= 0xE040 && value <= 0xEBBF) {\n // Subtract 0xC140 from Shift JIS value\n value -= 0xC140\n } else {\n throw new Error(\n 'Invalid SJIS character: ' + this.data[i] + '\\n' +\n 'Make sure your charset is UTF-8')\n }\n\n // Multiply most significant byte of result by 0xC0\n // and add least significant byte to product\n value = (((value >>> 8) & 0xff) * 0xC0) + (value & 0xff)\n\n // Convert result to a 13-bit binary string\n bitBuffer.put(value, 13)\n }\n}\n\nexport default KanjiData\n","import * as Mode from './mode'\n\nfunction NumericData (data) {\n this.mode = Mode.NUMERIC\n this.data = data.toString()\n}\n\nNumericData.getBitsLength = function getBitsLength (length) {\n return 10 * Math.floor(length / 3) + ((length % 3) ? ((length % 3) * 3 + 1) : 0)\n}\n\nNumericData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nNumericData.prototype.getBitsLength = function getBitsLength () {\n return NumericData.getBitsLength(this.data.length)\n}\n\nNumericData.prototype.write = function write (bitBuffer) {\n var i, group, value\n\n // The input data string is divided into groups of three digits,\n // and each group is converted to its 10-bit binary equivalent.\n for (i = 0; i + 3 <= this.data.length; i += 3) {\n group = this.data.substr(i, 3)\n value = parseInt(group, 10)\n\n bitBuffer.put(value, 10)\n }\n\n // If the number of input digits is not an exact multiple of three,\n // the final one or two digits are converted to 4 or 7 bits respectively.\n var remainingNum = this.data.length - i\n if (remainingNum > 0) {\n group = this.data.substr(i)\n value = parseInt(group, 10)\n\n bitBuffer.put(value, remainingNum * 3 + 1)\n }\n}\n\nexport default NumericData\n","/******************************************************************************\n * Created 2008-08-19.\n *\n * Dijkstra path-finding functions. Adapted from the Dijkstar Python project.\n *\n * Copyright (C) 2008\n * Wyatt Baldwin <[email protected]>\n * All rights reserved\n *\n * Licensed under the MIT license.\n *\n * http://www.opensource.org/licenses/mit-license.php\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n *****************************************************************************/\n\n/**\n * A very naive priority queue implementation.\n */\nlet PriorityQueue = {\n make: function(opts) {\n var T = PriorityQueue,\n t = {},\n key\n opts = opts || {}\n for (key in T) {\n if (T.hasOwnProperty(key)) {\n t[key] = T[key]\n }\n }\n t.queue = []\n t.sorter = opts.sorter || T.defaultSorter\n return t\n },\n\n defaultSorter: function(a, b) {\n return a.cost - b.cost\n },\n\n /**\n * Add a new item to the queue and ensure the highest priority element\n * is at the front of the queue.\n */\n push: function(value, cost) {\n var item = {value: value, cost: cost}\n this.queue.push(item)\n this.queue.sort(this.sorter)\n },\n\n /**\n * Return the highest priority element in the queue.\n */\n pop: function() {\n return this.queue.shift()\n },\n\n empty: function() {\n return this.queue.length === 0\n },\n}\n\nexport function singleSourceShortestPaths(graph, s, d) {\n // Predecessor map for each node that has been encountered.\n // node ID => predecessor node ID\n var predecessors = {}\n\n // Costs of shortest paths from s to all nodes encountered.\n // node ID => cost\n var costs = {}\n costs[s] = 0\n\n // Costs of shortest paths from s to all nodes encountered; differs from\n // `costs` in that it provides easy access to the node that currently has\n // the known shortest path from s.\n // XXX: Do we actually need both `costs` and `open`?\n var open = PriorityQueue.make()\n open.push(s, 0)\n\n var closest,\n u,\n v,\n cost_of_s_to_u,\n adjacent_nodes,\n cost_of_e,\n cost_of_s_to_u_plus_cost_of_e,\n cost_of_s_to_v,\n first_visit\n while (!open.empty()) {\n // In the nodes remaining in graph that have a known cost from s,\n // find the node, u, that currently has the shortest path from s.\n closest = open.pop()\n u = closest.value\n cost_of_s_to_u = closest.cost\n\n // Get nodes adjacent to u...\n adjacent_nodes = graph[u] || {}\n\n // ...and explore the edges that connect u to those nodes, updating\n // the cost of the shortest paths to any or all of those nodes as\n // necessary. v is the node across the current edge from u.\n for (v in adjacent_nodes) {\n if (adjacent_nodes.hasOwnProperty(v)) {\n // Get the cost of the edge running from u to v.\n cost_of_e = adjacent_nodes[v]\n\n // Cost of s to u plus the cost of u to v across e--this is *a*\n // cost from s to v that may or may not be less than the current\n // known cost to v.\n cost_of_s_to_u_plus_cost_of_e = cost_of_s_to_u + cost_of_e\n\n // If we haven't visited v yet OR if the current known cost from s to\n // v is greater than the new cost we just found (cost of s to u plus\n // cost of u to v across e), update v's cost in the cost list and\n // update v's predecessor in the predecessor list (it's now u).\n cost_of_s_to_v = costs[v]\n first_visit = typeof costs[v] === 'undefined'\n if (first_visit || cost_of_s_to_v > cost_of_s_to_u_plus_cost_of_e) {\n costs[v] = cost_of_s_to_u_plus_cost_of_e\n open.push(v, cost_of_s_to_u_plus_cost_of_e)\n predecessors[v] = u\n }\n }\n }\n }\n\n if (typeof d !== 'undefined' && typeof costs[d] === 'undefined') {\n var msg = ['Could not find a path from ', s, ' to ', d, '.'].join('')\n throw new Error(msg)\n }\n\n return predecessors\n}\n\nexport function extractShortestPathFromPredecessorList(predecessors, d) {\n var nodes = []\n var u = d\n while (u) {\n nodes.push(u)\n u = predecessors[u]\n }\n nodes.reverse()\n return nodes\n}\n\nexport function findPath(graph, s, d) {\n var predecessors = singleSourceShortestPaths(graph, s, d)\n return extractShortestPathFromPredecessorList(predecessors, d)\n}\n","import * as Mode from './mode'\nimport * as Regex from './regex'\nimport AlphanumericData from './alphanumeric-data'\nimport ByteData from './byte-data'\nimport KanjiData from './kanji-data'\nimport NumericData from './numeric-data'\nimport {findPath} from './dijkstra'\nimport {isKanjiModeEnabled} from './utils'\n\n/**\n * Returns UTF8 byte length\n *\n * @param {String} str Input string\n * @return {Number} Number of byte\n */\nfunction getStringByteLength (str) {\n return unescape(encodeURIComponent(str)).length\n}\n\n/**\n * Get a list of segments of the specified mode\n * from a string\n *\n * @param {Mode} mode Segment mode\n * @param {String} str String to process\n * @return {Array} Array of object with segments data\n */\nfunction getSegments (regex, mode, str) {\n var segments = []\n var result\n\n while ((result = regex.exec(str)) !== null) {\n segments.push({\n data: result[0],\n index: result.index,\n mode: mode,\n length: result[0].length\n })\n }\n\n return segments\n}\n\n/**\n * Extracts a series of segments with the appropriate\n * modes from a string\n *\n * @param {String} dataStr Input string\n * @return {Array} Array of object with segments data\n */\nfunction getSegmentsFromString (dataStr) {\n var numSegs = getSegments(Regex.NUMERIC, Mode.NUMERIC, dataStr)\n var alphaNumSegs = getSegments(Regex.ALPHANUMERIC, Mode.ALPHANUMERIC, dataStr)\n var byteSegs\n var kanjiSegs\n\n if (isKanjiModeEnabled()) {\n byteSegs = getSegments(Regex.BYTE, Mode.BYTE, dataStr)\n kanjiSegs = getSegments(Regex.KANJI, Mode.KANJI, dataStr)\n } else {\n byteSegs = getSegments(Regex.BYTE_KANJI, Mode.BYTE, dataStr)\n kanjiSegs = []\n }\n\n var segs = numSegs.concat(alphaNumSegs, byteSegs, kanjiSegs)\n\n return segs\n .sort(function (s1, s2) {\n return s1.index - s2.index\n })\n .map(function (obj) {\n return {\n data: obj.data,\n mode: obj.mode,\n length: obj.length\n }\n })\n}\n\n/**\n * Returns how many bits are needed to encode a string of\n * specified length with the specified mode\n *\n * @param {Number} length String length\n * @param {Mode} mode Segment mode\n * @return {Number} Bit length\n */\nfunction getSegmentBitsLength (length, mode) {\n switch (mode) {\n case Mode.NUMERIC:\n return NumericData.getBitsLength(length)\n case Mode.ALPHANUMERIC:\n return AlphanumericData.getBitsLength(length)\n case Mode.KANJI:\n return KanjiData.getBitsLength(length)\n case Mode.BYTE:\n return ByteData.getBitsLength(length)\n }\n}\n\n/**\n * Merges adjacent segments which have the same mode\n *\n * @param {Array} segs Array of object with segments data\n * @return {Array} Array of object with segments data\n */\nfunction mergeSegments (segs) {\n return segs.reduce(function (acc, curr) {\n var prevSeg = acc.length - 1 >= 0 ? acc[acc.length - 1] : null\n if (prevSeg && prevSeg.mode === curr.mode) {\n acc[acc.length - 1].data += curr.data\n return acc\n }\n\n acc.push(curr)\n return acc\n }, [])\n}\n\n/**\n * Generates a list of all possible nodes combination which\n * will be used to build a segments graph.\n *\n * Nodes are divided by groups. Each group will contain a list of all the modes\n * in which is possible to encode the given text.\n *\n * For example the text '12345' can be encoded as Numeric, Alphanumeric or Byte.\n * The group for '12345' will contain then 3 objects, one for each\n * possible encoding mode.\n *\n * Each node represents a possible segment.\n *\n * @param {Array} segs Array of object with segments data\n * @return {Array} Array of object with segments data\n */\nfunction buildNodes (segs) {\n var nodes = []\n for (var i = 0; i < segs.length; i++) {\n var seg = segs[i]\n\n switch (seg.mode) {\n case Mode.NUMERIC:\n nodes.push([seg,\n { data: seg.data, mode: Mode.ALPHANUMERIC, length: seg.length },\n { data: seg.data, mode: Mode.BYTE, length: seg.length }\n ])\n break\n case Mode.ALPHANUMERIC:\n nodes.push([seg,\n { data: seg.data, mode: Mode.BYTE, length: seg.length }\n ])\n break\n case Mode.KANJI:\n nodes.push([seg,\n { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) }\n ])\n break\n case Mode.BYTE:\n nodes.push([\n { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) }\n ])\n }\n }\n\n return nodes\n}\n\n/**\n * Builds a graph from a list of nodes.\n * All segments in each node group will be connected with all the segments of\n * the next group and so on.\n *\n * At each connection will be assigned a weight depending on the\n * segment's byte length.\n *\n * @param {Array} nodes Array of object with segments data\n * @param {Number} version QR Code version\n * @return {Object} Graph of all possible segments\n */\nfunction buildGraph (nodes, version) {\n var table = {}\n var graph = {'start': {}}\n var prevNodeIds = ['start']\n\n for (var i = 0; i < nodes.length; i++) {\n var nodeGroup = nodes[i]\n var currentNodeIds = []\n\n for (var j = 0; j < nodeGroup.length; j++) {\n var node = nodeGroup[j]\n var key = '' + i + j\n\n currentNodeIds.push(key)\n table[key] = { node: node, lastCount: 0 }\n graph[key] = {}\n\n for (var n = 0; n < prevNodeIds.length; n++) {\n var prevNodeId = prevNodeIds[n]\n\n if (table[prevNodeId] && table[prevNodeId].node.mode === node.mode) {\n graph[prevNodeId][key] =\n getSegmentBitsLength(table[prevNodeId].lastCount + node.length, node.mode) -\n getSegmentBitsLength(table[prevNodeId].lastCount, node.mode)\n\n table[prevNodeId].lastCount += node.length\n } else {\n if (table[prevNodeId]) table[prevNodeId].lastCount = node.length\n\n graph[prevNodeId][key] = getSegmentBitsLength(node.length, node.mode) +\n 4 + Mode.getCharCountIndicator(node.mode, version) // switch cost\n }\n }\n }\n\n prevNodeIds = currentNodeIds\n }\n\n for (n = 0; n < prevNodeIds.length; n++) {\n graph[prevNodeIds[n]]['end'] = 0\n }\n\n return { map: graph, table: table }\n}\n\n/**\n * Builds a segment from a specified data and mode.\n * If a mode is not specified, the more suitable will be used.\n *\n * @param {String} data Input data\n * @param {Mode | String} modesHint Data mode\n * @return {Segment} Segment\n */\nfunction buildSingleSegment (data, modesHint) {\n var mode\n var bestMode = Mode.getBestModeForData(data)\n\n mode = Mode.from(modesHint, bestMode)\n\n // Make sure data can be encoded\n if (mode !== Mode.BYTE && mode.bit < bestMode.bit) {\n throw new Error('\"' + data + '\"' +\n ' cannot be encoded with mode ' + Mode.toString(mode) +\n '.\\n Suggested mode is: ' + Mode.toString(bestMode))\n }\n\n // Use Mode.BYTE if Kanji support is disabled\n if (mode === Mode.KANJI && !isKanjiModeEnabled()) {\n mode = Mode.BYTE\n }\n\n switch (mode) {\n case Mode.NUMERIC:\n return new NumericData(data)\n\n case Mode.ALPHANUMERIC:\n return new AlphanumericData(data)\n\n case Mode.KANJI:\n return new KanjiData(data)\n\n case Mode.BYTE:\n return new ByteData(data)\n }\n}\n\n/**\n * Builds a list of segments from an array.\n * Array can contain Strings or Objects with segment's info.\n *\n * For each item which is a string, will be generated a segment with the given\n * string and the more appropriate encoding mode.\n *\n * For each item which is an object, will be generated a segment with the given\n * data and mode.\n * Objects must contain at least the property \"data\".\n * If property \"mode\" is not present, the more suitable mode will be used.\n *\n * @param {Array} array Array of objects with segments data\n * @return {Array} Array of Segments\n */\nexport function fromArray(array) {\n return array.reduce(function (acc, seg) {\n if (typeof seg === 'string') {\n acc.push(buildSingleSegment(seg, null))\n } else if (seg.data) {\n acc.push(buildSingleSegment(seg.data, seg.mode))\n }\n\n return acc\n }, [])\n}\n\n/**\n * Builds an optimized sequence of segments from a string,\n * which will produce the shortest possible bitstream.\n *\n * @param {String} data Input string\n * @param {Number} version QR Code version\n * @return {Array} Array of segments\n */\nexport function fromString(data, version) {\n var segs = getSegmentsFromString(data, isKanjiModeEnabled())\n\n var nodes = buildNodes(segs)\n var graph = buildGraph(nodes, version)\n var path = findPath(graph.map, 'start', 'end')\n\n var optimizedSegs = []\n for (var i = 1; i < path.length - 1; i++) {\n optimizedSegs.push(graph.table[path[i]].node)\n }\n\n return fromArray(mergeSegments(optimizedSegs))\n}\n\n/**\n * Splits a string in various segments with the modes which\n * best represent their content.\n * The produced segments are far from being optimized.\n * The output of this function is only used to estimate a QR Code version\n * which may contain the data.\n *\n * @param {string} data Input string\n * @return {Array} Array of segments\n */\nexport function rawSplit(data) {\n return fromArray(\n getSegmentsFromString(data, isKanjiModeEnabled())\n )\n}\n","function BitBuffer () {\n this.buffer = []\n this.length = 0\n}\n\nBitBuffer.prototype = {\n\n get: function (index) {\n var bufIndex = Math.floor(index / 8)\n return ((this.buffer[bufIndex] >>> (7 - index % 8)) & 1) === 1\n },\n\n put: function (num, length) {\n for (var i = 0; i < length; i++) {\n this.putBit(((num >>> (length - i - 1)) & 1) === 1)\n }\n },\n\n getLengthInBits: function () {\n return this.length\n },\n\n putBit: function (bit) {\n var bufIndex = Math.floor(this.length / 8)\n if (this.buffer.length <= bufIndex) {\n this.buffer.push(0)\n }\n\n if (bit) {\n this.buffer[bufIndex] |= (0x80 >>> (this.length % 8))\n }\n\n this.length++\n }\n}\n\nexport default BitBuffer\n","import Buffer from './buffer'\n\n/**\n * Helper class to handle QR Code symbol modules\n *\n * @param {Number} size Symbol size\n */\nfunction BitMatrix (size) {\n if (!size || size < 1) {\n throw new Error('BitMatrix size must be defined and greater than 0')\n }\n\n this.size = size\n this.data = new Buffer(size * size)\n this.data.fill(0)\n this.reservedBit = new Buffer(size * size)\n this.reservedBit.fill(0)\n}\n\n/**\n * Set bit value at specified location\n * If reserved flag is set, this bit will be ignored during masking process\n *\n * @param {Number} row\n * @param {Number} col\n * @param {Boolean} value\n * @param {Boolean} reserved\n */\nBitMatrix.prototype.set = function (row, col, value, reserved) {\n var index = row * this.size + col\n this.data[index] = value\n if (reserved) this.reservedBit[index] = true\n}\n\n/**\n * Returns bit value at specified location\n *\n * @param {Number} row\n * @param {Number} col\n * @return {Boolean}\n */\nBitMatrix.prototype.get = function (row, col) {\n return this.data[row * this.size + col]\n}\n\n/**\n * Applies xor operator at specified location\n * (used during masking process)\n *\n * @param {Number} row\n * @param {Number} col\n * @param {Boolean} value\n */\nBitMatrix.prototype.xor = function (row, col, value) {\n this.data[row * this.size + col] ^= value\n}\n\n/**\n * Check if bit at specified location is reserved\n *\n * @param {Number} row\n * @param {Number} col\n * @return {Boolean}\n */\nBitMatrix.prototype.isReserved = function (row, col) {\n return this.reservedBit[row * this.size + col]\n}\n\nexport default BitMatrix\n","import Buffer from './buffer'\n\nvar EXP_TABLE = new Buffer(512)\nvar LOG_TABLE = new Buffer(256)\n\n/**\n * Precompute the log and anti-log tables for faster computation later\n *\n * For each possible value in the galois field 2^8, we will pre-compute\n * the logarithm and anti-logarithm (exponential) of this value\n *\n * ref {@link https://en.wikiversity.org/wiki/Reed%E2%80%93Solomon_codes_for_coders#Introduction_to_mathematical_fields}\n */\n;(function initTables () {\n var x = 1\n for (var i = 0; i < 255; i++) {\n EXP_TABLE[i] = x\n LOG_TABLE[x] = i\n\n x <<= 1 // multiply by 2\n\n // The QR code specification says to use byte-wise modulo 100011101 arithmetic.\n // This means that when a number is 256 or larger, it should be XORed with 0x11D.\n if (x & 0x100) { // similar to x >= 256, but a lot faster (because 0x100 == 256)\n x ^= 0x11D\n }\n }\n\n // Optimization: double the size of the anti-log table so that we don't need to mod 255 to\n // stay inside the bounds (because we will mainly use this table for the multiplication of\n // two GF numbers, no more).\n // @see {@link mul}\n for (i = 255; i < 512; i++) {\n EXP_TABLE[i] = EXP_TABLE[i - 255]\n }\n}())\n\n/**\n * Returns log value of n inside Galois Field\n *\n * @param {Number} n\n * @return {Number}\n */\nexport function log (n) {\n if (n < 1) throw new Error('log(' + n + ')')\n return LOG_TABLE[n]\n}\n\n/**\n * Returns anti-log value of n inside Galois Field\n *\n * @param {Number} n\n * @return {Number}\n */\nexport function exp (n) {\n return EXP_TABLE[n]\n}\n\n/**\n * Multiplies two number inside Galois Field\n *\n * @param {Number} x\n * @param {Number} y\n * @return {Number}\n */\nexport function mul (x, y) {\n if (x === 0 || y === 0) return 0\n\n // should be EXP_TABLE[(LOG_TABLE[x] + LOG_TABLE[y]) % 255] if EXP_TABLE wasn't oversized\n // @see {@link initTables}\n return EXP_TABLE[LOG_TABLE[x] + LOG_TABLE[y]]\n}\n","import * as GF from './galois-field'\nimport Buffer from './buffer'\n\n/**\n * Multiplies two polynomials inside Galois Field\n *\n * @param {Buffer} p1 Polynomial\n * @param {Buffer} p2 Polynomial\n * @return {Buffer} Product of p1 and p2\n */\nexport function mul (p1, p2) {\n var coeff = new Buffer(p1.length + p2.length - 1)\n coeff.fill(0)\n\n for (var i = 0; i < p1.length; i++) {\n for (var j = 0; j < p2.length; j++) {\n coeff[i + j] ^= GF.mul(p1[i], p2[j])\n }\n }\n\n return coeff\n}\n\n/**\n * Calculate the remainder of polynomials division\n *\n * @param {Buffer} divident Polynomial\n * @param {Buffer} divisor Polynomial\n * @return {Buffer} Remainder\n */\nexport function mod (divident, divisor) {\n var result = new Buffer(divident)\n\n while ((result.length - divisor.length) >= 0) {\n var coeff = result[0]\n\n for (var i = 0; i < divisor.length; i++) {\n result[i] ^= GF.mul(divisor[i], coeff)\n }\n\n // remove all zeros from buffer head\n var offset = 0\n while (offset < result.length && result[offset] === 0) offset++\n result = result.slice(offset)\n }\n\n return result\n}\n\n/**\n * Generate an irreducible generator polynomial of specified degree\n * (used by Reed-Solomon encoder)\n *\n * @param {Number} degree Degree of the generator polynomial\n * @return {Buffer} Buffer containing polynomial coefficients\n */\nexport function generateECPolynomial (degree) {\n var poly = new Buffer([1])\n for (var i = 0; i < degree; i++) {\n poly = mul(poly, [1, GF.exp(i)])\n }\n\n return poly\n}\n","import Buffer from './buffer'\nimport * as Polynomial from './polynomial'\n\nfunction ReedSolomonEncoder (degree) {\n this.genPoly = undefined\n this.degree = degree\n\n if (this.degree) this.initialize(this.degree)\n}\n\n/**\n * Initialize the encoder.\n * The input param should correspond to the number of error correction codewords.\n *\n * @param {Number} degree\n */\nReedSolomonEncoder.prototype.initialize = function initialize (degree) {\n // create an irreducible generator polynomial\n this.degree = degree\n this.genPoly = Polynomial.generateECPolynomial(this.degree)\n}\n\n/**\n * Encodes a chunk of data\n *\n * @param {Buffer} data Buffer containing input data\n * @return {Buffer} Buffer containing encoded data\n */\nReedSolomonEncoder.prototype.encode = function encode (data) {\n if (!this.genPoly) {\n throw new Error('Encoder not initialized')\n }\n\n // Calculate EC for this data block\n // extends data size to data+genPoly size\n var pad = new Buffer(this.degree)\n pad.fill(0)\n var paddedData = Buffer.concat([data, pad], data.length + this.degree)\n\n // The error correction codewords are the remainder after dividing the data codewords\n // by a generator polynomial\n var remainder = Polynomial.mod(paddedData, this.genPoly)\n\n // return EC data blocks (last n byte, where n is the degree of genPoly)\n // If coefficients number in remainder are less than genPoly degree,\n // pad with 0s to the left to reach the needed number of coefficients\n var start = this.degree - remainder.length\n if (start > 0) {\n var buff = new Buffer(this.degree)\n buff.fill(0)\n remainder.copy(buff, start)\n\n return buff\n }\n\n return remainder\n}\n\nexport default ReedSolomonEncoder\n","import isArray from 'es-is/array'\n\nimport * as AlignmentPattern from './alignment-pattern'\nimport * as ECCode from './error-correction-code'\nimport * as ECLevel from './error-correction-level'\nimport * as FinderPattern from './finder-pattern'\nimport * as FormatInfo from './format-info'\nimport * as MaskPattern from './mask-pattern'\nimport * as Mode from './mode'\nimport * as Segments from './segments'\nimport * as Version from './version'\nimport BitBuffer from './bit-buffer'\nimport BitMatrix from './bit-matrix'\nimport Buffer from './buffer'\nimport ReedSolomonEncoder from './reed-solomon-encoder'\nimport {getSymbolTotalCodewords, getSymbolSize, setToSJISFunction} from './utils'\n\n/**\n * QRCode for JavaScript\n *\n * modified by Ryan Day for nodejs support\n * Copyright (c) 2011 Ryan Day\n *\n * Licensed under the MIT license:\n * http://www.opensource.org/licenses/mit-license.php\n *\n//---------------------------------------------------------------------\n// QRCode for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word \"QR Code\" is registered trademark of\n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n*/\n\n/**\n * Add finder patterns bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupFinderPattern (matrix, version) {\n var size = matrix.size\n var pos = FinderPattern.getPositions(version)\n\n for (var i = 0; i < pos.length; i++) {\n var row = pos[i][0]\n var col = pos[i][1]\n\n for (var r = -1; r <= 7; r++) {\n if (row + r <= -1 || size <= row + r) continue\n\n for (var c = -1; c <= 7; c++) {\n if (col + c <= -1 || size <= col + c) continue\n\n if ((r >= 0 && r <= 6 && (c === 0 || c === 6)) ||\n (c >= 0 && c <= 6 && (r === 0 || r === 6)) ||\n (r >= 2 && r <= 4 && c >= 2 && c <= 4)) {\n matrix.set(row + r, col + c, true, true)\n } else {\n matrix.set(row + r, col + c, false, true)\n }\n }\n }\n }\n}\n\n/**\n * Add timing pattern bits to matrix\n *\n * Note: this function must be called before {@link setupAlignmentPattern}\n *\n * @param {BitMatrix} matrix Modules matrix\n */\nfunction setupTimingPattern (matrix) {\n var size = matrix.size\n\n for (var r = 8; r < size - 8; r++) {\n var value = r % 2 === 0\n matrix.set(r, 6, value, true)\n matrix.set(6, r, value, true)\n }\n}\n\n/**\n * Add alignment patterns bits to matrix\n *\n * Note: this function must be called after {@link setupTimingPattern}\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupAlignmentPattern (matrix, version) {\n var pos = AlignmentPattern.getPositions(version)\n\n for (var i = 0; i < pos.length; i++) {\n var row = pos[i][0]\n var col = pos[i][1]\n\n for (var r = -2; r <= 2; r++) {\n for (var c = -2; c <= 2; c++) {\n if (r === -2 || r === 2 || c === -2 || c === 2 ||\n (r === 0 && c === 0)) {\n matrix.set(row + r, col + c, true, true)\n } else {\n matrix.set(row + r, col + c, false, true)\n }\n }\n }\n }\n}\n\n/**\n * Add version info bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupVersionInfo (matrix, version) {\n var size = matrix.size\n var bits = Version.getEncodedBits(version)\n var row, col, mod\n\n for (var i = 0; i < 18; i++) {\n row = Math.floor(i / 3)\n col = i % 3 + size - 8 - 3\n mod = ((bits >> i) & 1) === 1\n\n matrix.set(row, col, mod, true)\n matrix.set(col, row, mod, true)\n }\n}\n\n/**\n * Add format info bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @param {Number} maskPattern Mask pattern reference value\n */\nfunction setupFormatInfo (matrix, errorCorrectionLevel, maskPattern) {\n var size = matrix.size\n var bits = FormatInfo.getEncodedBits(errorCorrectionLevel, maskPattern)\n var i, mod\n\n for (i = 0; i < 15; i++) {\n mod = ((bits >> i) & 1) === 1\n\n // vertical\n if (i < 6) {\n matrix.set(i, 8, mod, true)\n } else if (i < 8) {\n matrix.set(i + 1, 8, mod, true)\n } else {\n matrix.set(size - 15 + i, 8, mod, true)\n }\n\n // horizontal\n if (i < 8) {\n matrix.set(8, size - i - 1, mod, true)\n } else if (i < 9) {\n matrix.set(8, 15 - i - 1 + 1, mod, true)\n } else {\n matrix.set(8, 15 - i - 1, mod, true)\n }\n }\n\n // fixed module\n matrix.set(size - 8, 8, 1, true)\n}\n\n/**\n * Add encoded data bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Buffer} data Data codewords\n */\nfunction setupData (matrix, data) {\n var size = matrix.size\n var inc = -1\n var row = size - 1\n var bitIndex = 7\n var byteIndex = 0\n\n for (var col = size - 1; col > 0; col -= 2) {\n if (col === 6) col--\n\n while (true) { // eslint-disable-line\n for (var c = 0; c < 2; c++) {\n if (!matrix.isReserved(row, col - c)) {\n var dark = false\n\n if (byteIndex < data.length) {\n dark = (((data[byteIndex] >>> bitIndex) & 1) === 1)\n }\n\n matrix.set(row, col - c, dark)\n bitIndex--\n\n if (bitIndex === -1) {\n byteIndex++\n bitIndex = 7\n }\n }\n }\n\n row += inc\n\n if (row < 0 || size <= row) {\n row -= inc\n inc = -inc\n break\n }\n }\n }\n}\n\n/**\n * Create encoded codewords from data input\n *\n * @param {Number} version QR Code version\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @param {ByteData} data Data input\n * @return {Buffer} Buffer containing encoded codewords\n */\nfunction createData (version, errorCorrectionLevel, segments) {\n // Prepare data buffer\n var buffer = new BitBuffer()\n\n segments.forEach(function (data) {\n // prefix data with mode indicator (4 bits)\n buffer.put(data.mode.bit, 4)\n\n // Prefix data with character count indicator.\n // The character count indicator is a string of bits that represents the\n // number of characters that are being encoded.\n // The character count indicator must be placed after the mode indicator\n // and must be a certain number of bits long, depending on the QR version\n // and data mode\n // @see {@link Mode.getCharCountIndicator}.\n buffer.put(data.getLength(), Mode.getCharCountIndicator(data.mode, version))\n\n // add binary data sequence to buffer\n data.write(buffer)\n })\n\n // Calculate required number of bits\n var totalCodewords = getSymbolTotalCodewords(version)\n var ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n var dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8\n\n // Add a terminator.\n // If the bit string is shorter than the total number of required bits,\n // a terminator of up to four 0s must be added to the right side of the string.\n // If the bit string is more than four bits shorter than the required number of bits,\n // add four 0s to the end.\n if (buffer.getLengthInBits() + 4 <= dataTotalCodewordsBits) {\n buffer.put(0, 4)\n }\n\n // If the bit string is fewer than four bits shorter, add only the number of 0s that\n // are needed to reach the required number of bits.\n\n // After adding the terminator, if the number of bits in the string is not a multiple of 8,\n // pad the string on the right with 0s to make the string's length a multiple of 8.\n while (buffer.getLengthInBits() % 8 !== 0) {\n buffer.putBit(0)\n }\n\n // Add pad bytes if the string is still shorter than the total number of required bits.\n // Extend the buffer to fill the data capacity of the symbol corresponding to\n // the Version and Error Correction Level by adding the Pad Codewords 11101100 (0xEC)\n // and 00010001 (0x11) alternately.\n var remainingByte = (dataTotalCodewordsBits - buffer.getLengthInBits()) / 8\n for (var i = 0; i < remainingByte; i++) {\n buffer.put(i % 2 ? 0x11 : 0xEC, 8)\n }\n\n return createCodewords(buffer, version, errorCorrectionLevel)\n}\n\n/**\n * Encode input data with Reed-Solomon and return codewords with\n * relative error correction bits\n *\n * @param {BitBuffer} bitBuffer Data to encode\n * @param {Number} version QR Code version\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @return {Buffer} Buffer containing encoded codewords\n */\nfunction createCodewords (bitBuffer, version, errorCorrectionLevel) {\n // Total codewords for this QR code version (Data + Error correction)\n var totalCodewords = getSymbolTotalCodewords(version)\n\n // Total number of error correction codewords\n var ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n\n // Total number of data codewords\n var dataTotalCodewords = totalCodewords - ecTotalCodewords\n\n // Total number of blocks\n var ecTotalBlocks = ECCode.getBlocksCount(version, errorCorrectionLevel)\n\n // Calculate how many blocks each group should contain\n var blocksInGroup2 = totalCodewords % ecTotalBlocks\n var blocksInGroup1 = ecTotalBlocks - blocksInGroup2\n\n var totalCodewordsInGroup1 = Math.floor(totalCodewords / ecTotalBlocks)\n\n var dataCodewordsInGroup1 = Math.floor(dataTotalCodewords / ecTotalBlocks)\n var dataCodewordsInGroup2 = dataCodewordsInGroup1 + 1\n\n // Number of EC codewords is the same for both groups\n var ecCount = totalCodewordsInGroup1 - dataCodewordsInGroup1\n\n // Initialize a Reed-Solomon encoder with a generator polynomial of degree ecCount\n var rs = new ReedSolomonEncoder(ecCount)\n\n var offset = 0\n var dcData = new Array(ecTotalBlocks)\n var ecData = new Array(ecTotalBlocks)\n var maxDataSize = 0\n var buffer = new Buffer(bitBuffer.buffer)\n\n // Divide the buffer into the required number of blocks\n for (var b = 0; b < ecTotalBlocks; b++) {\n var dataSize = b < blocksInGroup1 ? dataCodewordsInGroup1 : dataCodewordsInGroup2\n\n // extract a block of data from buffer\n dcData[b] = buffer.slice(offset, offset + dataSize)\n\n // Calculate EC codewords for this data block\n ecData[b] = rs.encode(dcData[b])\n\n offset += dataSize\n maxDataSize = Math.max(maxDataSize, dataSize)\n }\n\n // Create final data\n // Interleave the data and error correction codewords from each block\n var data = new Buffer(totalCodewords)\n var index = 0\n var i, r\n\n // Add data codewords\n for (i = 0; i < maxDataSize; i++) {\n for (r = 0; r < ecTotalBlocks; r++) {\n if (i < dcData[r].length) {\n data[index++] = dcData[r][i]\n }\n }\n }\n\n // Apped EC codewords\n for (i = 0; i < ecCount; i++) {\n for (r = 0; r < ecTotalBlocks; r++) {\n data[index++] = ecData[r][i]\n }\n }\n\n return data\n}\n\n/**\n * Build QR Code symbol\n *\n * @param {String} data Input string\n * @param {Number} version QR Code version\n * @param {ErrorCorretionLevel} errorCorrectionLevel Error level\n * @param {MaskPattern} maskPattern Mask pattern\n * @return {Object} Object containing symbol data\n */\nfunction createSymbol (data, version, errorCorrectionLevel, maskPattern) {\n var segments\n\n if (isArray(data)) {\n segments = Segments.fromArray(data)\n } else if (typeof data === 'string') {\n var estimatedVersion = version\n\n if (!estimatedVersion) {\n var rawSegments = Segments.rawSplit(data)\n\n // Estimate best version that can contain raw splitted segments\n estimatedVersion = Version.getBestVersionForData(rawSegments,\n errorCorrectionLevel)\n }\n\n // Build optimized segments\n // If estimated version is undefined, try with the highest version\n segments = Segments.fromString(data, estimatedVersion || 40)\n } else {\n throw new Error('Invalid data')\n }\n\n // Get the min version that can contain data\n var bestVersion = Version.getBestVersionForData(segments, errorCorrectionLevel)\n\n // If no version is found, data cannot be stored\n if (!bestVersion) {\n throw new Error('The amount of data is too big to be stored in a QR Code')\n }\n\n // If not specified, use min version as default\n if (!version) {\n version = bestVersion\n\n // Check if the specified version can contain the data\n } else if (version < bestVersion) {\n throw new Error('\\n' +\n 'The chosen QR Code version cannot contain this amount of data.\\n' +\n 'Minimum version required to store current data is: ' + bestVersion + '.\\n'\n )\n }\n\n var dataBits = createData(version, errorCorrectionLevel, segments)\n\n // Allocate matrix buffer\n var moduleCount = getSymbolSize(version)\n var modules = new BitMatrix(moduleCount)\n\n // Add function modules\n setupFinderPattern(modules, version)\n setupTimingPattern(modules)\n setupAlignmentPattern(modules, version)\n\n // Add temporary dummy bits for format info just to set them as reserved.\n // This is needed to prevent these bits from being masked by {@link MaskPattern.applyMask}\n // since the masking operation must be performed only on the encoding region.\n // These blocks will be replaced with correct values later in code.\n setupFormatInfo(modules, errorCorrectionLevel, 0)\n\n if (version >= 7) {\n setupVersionInfo(modules, version)\n }\n\n // Add data codewords\n setupData(modules, dataBits)\n\n if (!maskPattern) {\n // Find best mask pattern\n maskPattern = MaskPattern.getBestMask(modules,\n setupFormatInfo.bind(null, modules, errorCorrectionLevel))\n }\n\n // Apply mask pattern\n MaskPattern.applyMask(maskPattern, modules)\n\n // Replace format info bits with correct values\n setupFormatInfo(modules, errorCorrectionLevel, maskPattern)\n\n return {\n modules: modules,\n version: version,\n errorCorrectionLevel: errorCorrectionLevel,\n maskPattern: maskPattern,\n segments: segments\n }\n}\n\n/**\n * QR Code\n *\n * @param {String | Array} data Input data\n * @param {Object} options Optional configurations\n * @param {Number} options.version QR Code version\n * @param {String} options.errorCorrectionLevel Error correction level\n * @param {Function} options.toSJISFunc Helper func to convert utf8 to sjis\n */\nexport function create (data, options) {\n if (typeof data === 'undefined' || data === '') {\n throw new Error('No input text')\n }\n\n var errorCorrectionLevel = ECLevel.M\n var version\n var mask\n\n if (typeof options !== 'undefined') {\n // Use higher error correction level as default\n errorCorrectionLevel = ECLevel.from(options.errorCorrectionLevel, ECLevel.M)\n version = Version.from(options.version)\n mask = MaskPattern.from(options.maskPattern)\n\n if (options.toSJISFunc) {\n setToSJISFunction(options.toSJISFunc)\n }\n }\n\n return createSymbol(data, version, errorCorrectionLevel, mask)\n}\n","import {getOptions, getImageWidth, qrToImageData} from './utils'\n\nfunction clearCanvas (ctx, canvas, size) {\n ctx.clearRect(0, 0, canvas.width, canvas.height)\n\n if (!canvas.style) canvas.style = {}\n canvas.height = size\n canvas.width = size\n canvas.style.height = size + 'px'\n canvas.style.width = size + 'px'\n}\n\nfunction getCanvasElement () {\n try {\n return document.createElement('canvas')\n } catch (e) {\n throw new Error('You need to specify a canvas element')\n }\n}\n\nexport function render(qrData, canvas, options) {\n var opts = options\n var canvasEl = canvas\n\n if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {\n opts = canvas\n canvas = undefined\n }\n\n if (!canvas) {\n canvasEl = getCanvasElement()\n }\n\n opts = getOptions(opts)\n var size = getImageWidth(qrData.modules.size, opts)\n\n var ctx = canvasEl.getContext('2d')\n var image = ctx.createImageData(size, size)\n qrToImageData(image.data, qrData, opts)\n\n clearCanvas(ctx, canvasEl, size)\n ctx.putImageData(image, 0, 0)\n\n return canvasEl\n}\n\nexport function renderToDataURL(qrData, canvas, options) {\n var opts = options\n\n if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {\n opts = canvas\n canvas = undefined\n }\n\n if (!opts) opts = {}\n\n var canvasEl = render(qrData, canvas, opts)\n\n var type = opts.type || 'image/png'\n var rendererOpts = opts.rendererOpts || {}\n\n return canvasEl.toDataURL(type, rendererOpts.quality)\n}\n","import {render as svgRender} from './renderer/svg-tag.js'\nimport {create} from './core/qrcode'\nimport {render, renderToDataURL} from './renderer/canvas'\n\nfunction renderCanvas(renderFunc, canvas, text, opts) {\n var args = [].slice.call(arguments, 1)\n var argsNum = args.length\n\n if (argsNum < 1) {\n throw new Error('Too few arguments provided')\n }\n\n if (argsNum === 1) {\n text = canvas\n canvas = opts = undefined\n } else if (argsNum === 2 && !canvas.getContext) {\n opts = text\n text = canvas\n canvas = undefined\n }\n\n return new Promise(function(resolve, reject) {\n try {\n var data = create(text, opts)\n resolve(renderFunc(data, canvas, opts))\n } catch (e) {\n reject(e)\n }\n })\n}\n\nexport let toCanvas = renderCanvas.bind(null, render)\nexport let toDataURL = renderCanvas.bind(null, renderToDataURL)\n\n// only svg for now.\nexport let toString = renderCanvas.bind(null, function(data, _, opts) {\n return svgRender(data, opts)\n})\n","import {toCanvas} from 'qrcode-lite'\n\nimport ReadOnly from './readonly'\nimport html from '../../templates/controls/qrcode'\nimport valueOrCall from '../utils/valueOrCall'\n\nexport default class QRCode extends ReadOnly\n tag: 'qrcode'\n html: html\n\n # pass this in optionally to overwrite a specific value\n text: ''\n\n # version '1' to '40', undefined for automatic detection (default)\n version: undefined\n\n # level of error correction\n # 'L' = 7%\n # 'M' = 15% (default)\n # 'Q' = 25%\n # 'H' = 35%\n # 'S' = 50% (unsupported)\n errorCorrectionLevel: 'M'\n\n # scale of a module\n scale: 4\n\n # margin of white area around qr code in pixels\n margin: 4\n\n events:\n updated: ->\n @onUpdated()\n mount: ->\n @onUpdated()\n\n init: ->\n super arguments...\n\n onUpdated: ->\n canvas = @root.children[0]\n toCanvas canvas, @getText(),\n version: parseInt @version, 10\n errorCorrectionLevel: @errorCorrectionLevel\n scale: parseInt @scale, 10\n margin: parseInt @margin, 10\n .catch (err) ->\n console.error err\n\nQRCode.register()\n","import El from 'el.js/src'\n\n# requires <script src='//www.google.com/recaptcha/api.js?render=explicit'/>\nexport default class ReCaptcha extends El.View\n tag: 'recaptcha'\n html: ''\n\n # sitekey from recaptcha\n # sitekey: null\n\n # theme ('dark'/'light')\n theme: 'light'\n\n init: ->\n if !@sitekey\n console.error 'recaptcha: no sitekey found'\n return\n\n tryRecaptcha = =>\n requestAnimationFrame =>\n try\n grecaptcha.render @root,\n sitekey: @sitekey\n theme: @theme\n callback: (res) =>\n @data.set 'user.g-recaptcha-response', res\n catch e\n tryRecaptcha()\n\n tryRecaptcha()\n\nReCaptcha.register()\n","import Select from './selection'\n\nexport default class StateSelect extends Select\n tag: 'state-select'\n\n options: ->\n countries = @countries ? @data?.get('countries') ? @parent?.data?.get('countries') ? []\n\n code = @getCountry()\n\n # code is a 2 character alpha code\n if !code || code.length != 2\n @_optionsHash = ''\n return\n\n code = code.toUpperCase()\n\n found = false\n\n for country in countries\n if country.code.toUpperCase() == code\n found = true\n subdivisions = country.subdivisions\n\n optionsHash = JSON.stringify subdivisions\n\n if @_optionsHash == optionsHash\n return @selectOptions\n\n subdivisions = subdivisions.slice 0\n\n @_optionsHash = optionsHash\n\n @selectOptions = options = {}\n\n subdivisions.sort (a, b)->\n nameA = a.name.toUpperCase()\n nameB = b.name.toUpperCase()\n return -1 if nameA < nameB\n return 1 if nameA > nameB\n return 0\n\n for subdivision in subdivisions\n options[subdivision.code.toUpperCase()] = subdivision.name\n break\n\n if !found\n @_optionsHash = ''\n\n return options\n\n getCountry: ->\n return ''\n\n init: ->\n super arguments...\n\nStateSelect.register()\n","import Text from './text'\nimport html from '../../templates/controls/textarea'\n\nclass TextBox extends Text\n tag: 'textbox'\n html: html\n formElement: 'textarea'\n\n rows: null\n cols: null\n disabled: false\n maxlength: null\n readonly: false\n wrap: null\n\nTextBox.register()\n\nexport default TextBox\n","\"use strict\";\n(function(root, factory) {\n if(typeof exports === 'object') {\n module.exports = factory();\n }\n else if(typeof define === 'function' && define.amd) {\n define(['jquery', 'googlemaps!'], factory);\n }\n else {\n root.GMaps = factory();\n }\n\n\n}(this, function() {\n\n/*!\n * GMaps.js v0.4.24\n * http://hpneo.github.com/gmaps/\n *\n * Copyright 2016, Gustavo Leon\n * Released under the MIT License.\n */\n\nvar extend_object = function(obj, new_obj) {\n var name;\n\n if (obj === new_obj) {\n return obj;\n }\n\n for (name in new_obj) {\n if (new_obj[name] !== undefined) {\n obj[name] = new_obj[name];\n }\n }\n\n return obj;\n};\n\nvar replace_object = function(obj, replace) {\n var name;\n\n if (obj === replace) {\n return obj;\n }\n\n for (name in replace) {\n if (obj[name] != undefined) {\n obj[name] = replace[name];\n }\n }\n\n return obj;\n};\n\nvar array_map = function(array, callback) {\n var original_callback_params = Array.prototype.slice.call(arguments, 2),\n array_return = [],\n array_length = array.length,\n i;\n\n if (Array.prototype.map && array.map === Array.prototype.map) {\n array_return = Array.prototype.map.call(array, function(item) {\n var callback_params = original_callback_params.slice(0);\n callback_params.splice(0, 0, item);\n\n return callback.apply(this, callback_params);\n });\n }\n else {\n for (i = 0; i < array_length; i++) {\n callback_params = original_callback_params;\n callback_params.splice(0, 0, array[i]);\n array_return.push(callback.apply(this, callback_params));\n }\n }\n\n return array_return;\n};\n\nvar array_flat = function(array) {\n var new_array = [],\n i;\n\n for (i = 0; i < array.length; i++) {\n new_array = new_array.concat(array[i]);\n }\n\n return new_array;\n};\n\nvar coordsToLatLngs = function(coords, useGeoJSON) {\n var first_coord = coords[0],\n second_coord = coords[1];\n\n if (useGeoJSON) {\n first_coord = coords[1];\n second_coord = coords[0];\n }\n\n return new google.maps.LatLng(first_coord, second_coord);\n};\n\nvar arrayToLatLng = function(coords, useGeoJSON) {\n var i;\n\n for (i = 0; i < coords.length; i++) {\n if (!(coords[i] instanceof google.maps.LatLng)) {\n if (coords[i].length > 0 && typeof(coords[i][0]) === \"object\") {\n coords[i] = arrayToLatLng(coords[i], useGeoJSON);\n }\n else {\n coords[i] = coordsToLatLngs(coords[i], useGeoJSON);\n }\n }\n }\n\n return coords;\n};\n\nvar getElementsByClassName = function (class_name, context) {\n var element,\n _class = class_name.replace('.', '');\n\n if ('jQuery' in this && context) {\n element = $(\".\" + _class, context)[0];\n } else {\n element = document.getElementsByClassName(_class)[0];\n }\n return element;\n\n};\n\nvar getElementById = function(id, context) {\n var element,\n id = id.replace('#', '');\n\n if ('jQuery' in window && context) {\n element = $('#' + id, context)[0];\n } else {\n element = document.getElementById(id);\n };\n\n return element;\n};\n\nvar findAbsolutePosition = function(obj) {\n var curleft = 0,\n curtop = 0;\n\n if (obj.offsetParent) {\n do {\n curleft += obj.offsetLeft;\n curtop += obj.offsetTop;\n } while (obj = obj.offsetParent);\n }\n\n return [curleft, curtop];\n};\n\nvar GMaps = (function(global) {\n \"use strict\";\n\n var doc = document;\n /**\n * Creates a new GMaps instance, including a Google Maps map.\n * @class GMaps\n * @constructs\n * @param {object} options - `options` accepts all the [MapOptions](https://developers.google.com/maps/documentation/javascript/reference#MapOptions) and [events](https://developers.google.com/maps/documentation/javascript/reference#Map) listed in the Google Maps API. Also accepts:\n * * `lat` (number): Latitude of the map's center\n * * `lng` (number): Longitude of the map's center\n * * `el` (string or HTMLElement): container where the map will be rendered\n * * `markerClusterer` (function): A function to create a marker cluster. You can use MarkerClusterer or MarkerClustererPlus.\n */\n var GMaps = function(options) {\n\n if (!(typeof window.google === 'object' && window.google.maps)) {\n if (typeof window.console === 'object' && window.console.error) {\n console.error('Google Maps API is required. Please register the following JavaScript library https://maps.googleapis.com/maps/api/js.');\n }\n\n return function() {};\n }\n\n if (!this) return new GMaps(options);\n\n options.zoom = options.zoom || 15;\n options.mapType = options.mapType || 'roadmap';\n\n var valueOrDefault = function(value, defaultValue) {\n return value === undefined ? defaultValue : value;\n };\n\n var self = this,\n i,\n events_that_hide_context_menu = [\n 'bounds_changed', 'center_changed', 'click', 'dblclick', 'drag',\n 'dragend', 'dragstart', 'idle', 'maptypeid_changed', 'projection_changed',\n 'resize', 'tilesloaded', 'zoom_changed'\n ],\n events_that_doesnt_hide_context_menu = ['mousemove', 'mouseout', 'mouseover'],\n options_to_be_deleted = ['el', 'lat', 'lng', 'mapType', 'width', 'height', 'markerClusterer', 'enableNewStyle'],\n identifier = options.el || options.div,\n markerClustererFunction = options.markerClusterer,\n mapType = google.maps.MapTypeId[options.mapType.toUpperCase()],\n map_center = new google.maps.LatLng(options.lat, options.lng),\n zoomControl = valueOrDefault(options.zoomControl, true),\n zoomControlOpt = options.zoomControlOpt || {\n style: 'DEFAULT',\n position: 'TOP_LEFT'\n },\n zoomControlStyle = zoomControlOpt.style || 'DEFAULT',\n zoomControlPosition = zoomControlOpt.position || 'TOP_LEFT',\n panControl = valueOrDefault(options.panControl, true),\n mapTypeControl = valueOrDefault(options.mapTypeControl, true),\n scaleControl = valueOrDefault(options.scaleControl, true),\n streetViewControl = valueOrDefault(options.streetViewControl, true),\n overviewMapControl = valueOrDefault(overviewMapControl, true),\n map_options = {},\n map_base_options = {\n zoom: this.zoom,\n center: map_center,\n mapTypeId: mapType\n },\n map_controls_options = {\n panControl: panControl,\n zoomControl: zoomControl,\n zoomControlOptions: {\n style: google.maps.ZoomControlStyle[zoomControlStyle],\n position: google.maps.ControlPosition[zoomControlPosition]\n },\n mapTypeControl: mapTypeControl,\n scaleControl: scaleControl,\n streetViewControl: streetViewControl,\n overviewMapControl: overviewMapControl\n };\n\n if (typeof(options.el) === 'string' || typeof(options.div) === 'string') {\n if (identifier.indexOf(\"#\") > -1) {\n /**\n * Container element\n *\n * @type {HTMLElement}\n */\n this.el = getElementById(identifier, options.context);\n } else {\n this.el = getElementsByClassName.apply(this, [identifier, options.context]);\n }\n } else {\n this.el = identifier;\n }\n\n if (typeof(this.el) === 'undefined' || this.el === null) {\n throw 'No element defined.';\n }\n\n window.context_menu = window.context_menu || {};\n window.context_menu[self.el.id] = {};\n\n /**\n * Collection of custom controls in the map UI\n *\n * @type {array}\n */\n this.controls = [];\n /**\n * Collection of map's overlays\n *\n * @type {array}\n */\n this.overlays = [];\n /**\n * Collection of KML/GeoRSS and FusionTable layers\n *\n * @type {array}\n */\n this.layers = [];\n /**\n * Collection of data layers (See {@link GMaps#addLayer})\n *\n * @type {object}\n */\n this.singleLayers = {};\n /**\n * Collection of map's markers\n *\n * @type {array}\n */\n this.markers = [];\n /**\n * Collection of map's lines\n *\n * @type {array}\n */\n this.polylines = [];\n /**\n * Collection of map's routes requested by {@link GMaps#getRoutes}, {@link GMaps#renderRoute}, {@link GMaps#drawRoute}, {@link GMaps#travelRoute} or {@link GMaps#drawSteppedRoute}\n *\n * @type {array}\n */\n this.routes = [];\n /**\n * Collection of map's polygons\n *\n * @type {array}\n */\n this.polygons = [];\n this.infoWindow = null;\n this.overlay_el = null;\n /**\n * Current map's zoom\n *\n * @type {number}\n */\n this.zoom = options.zoom;\n this.registered_events = {};\n\n this.el.style.width = options.width || this.el.scrollWidth || this.el.offsetWidth;\n this.el.style.height = options.height || this.el.scrollHeight || this.el.offsetHeight;\n\n google.maps.visualRefresh = options.enableNewStyle;\n\n for (i = 0; i < options_to_be_deleted.length; i++) {\n delete options[options_to_be_deleted[i]];\n }\n\n if(options.disableDefaultUI != true) {\n map_base_options = extend_object(map_base_options, map_controls_options);\n }\n\n map_options = extend_object(map_base_options, options);\n\n for (i = 0; i < events_that_hide_context_menu.length; i++) {\n delete map_options[events_that_hide_context_menu[i]];\n }\n\n for (i = 0; i < events_that_doesnt_hide_context_menu.length; i++) {\n delete map_options[events_that_doesnt_hide_context_menu[i]];\n }\n\n /**\n * Google Maps map instance\n *\n * @type {google.maps.Map}\n */\n this.map = new google.maps.Map(this.el, map_options);\n\n if (markerClustererFunction) {\n /**\n * Marker Clusterer instance\n *\n * @type {object}\n */\n this.markerClusterer = markerClustererFunction.apply(this, [this.map]);\n }\n\n var buildContextMenuHTML = function(control, e) {\n var html = '',\n options = window.context_menu[self.el.id][control];\n\n for (var i in options){\n if (options.hasOwnProperty(i)) {\n var option = options[i];\n\n html += '<li><a id=\"' + control + '_' + i + '\" href=\"#\">' + option.title + '</a></li>';\n }\n }\n\n if (!getElementById('gmaps_context_menu')) return;\n\n var context_menu_element = getElementById('gmaps_context_menu');\n\n context_menu_element.innerHTML = html;\n\n var context_menu_items = context_menu_element.getElementsByTagName('a'),\n context_menu_items_count = context_menu_items.length,\n i;\n\n for (i = 0; i < context_menu_items_count; i++) {\n var context_menu_item = context_menu_items[i];\n\n var assign_menu_item_action = function(ev){\n ev.preventDefault();\n\n options[this.id.replace(control + '_', '')].action.apply(self, [e]);\n self.hideContextMenu();\n };\n\n google.maps.event.clearListeners(context_menu_item, 'click');\n google.maps.event.addDomListenerOnce(context_menu_item, 'click', assign_menu_item_action, false);\n }\n\n var position = findAbsolutePosition.apply(this, [self.el]),\n left = position[0] + e.pixel.x - 15,\n top = position[1] + e.pixel.y- 15;\n\n context_menu_element.style.left = left + \"px\";\n context_menu_element.style.top = top + \"px\";\n\n // context_menu_element.style.display = 'block';\n };\n\n this.buildContextMenu = function(control, e) {\n if (control === 'marker') {\n e.pixel = {};\n\n var overlay = new google.maps.OverlayView();\n overlay.setMap(self.map);\n\n overlay.draw = function() {\n var projection = overlay.getProjection(),\n position = e.marker.getPosition();\n\n e.pixel = projection.fromLatLngToContainerPixel(position);\n\n buildContextMenuHTML(control, e);\n };\n }\n else {\n buildContextMenuHTML(control, e);\n }\n\n var context_menu_element = getElementById('gmaps_context_menu');\n\n setTimeout(function() {\n context_menu_element.style.display = 'block';\n }, 0);\n };\n\n /**\n * Add a context menu for a map or a marker.\n *\n * @param {object} options - The `options` object should contain:\n * * `control` (string): Kind of control the context menu will be attached. Can be \"map\" or \"marker\".\n * * `options` (array): A collection of context menu items:\n * * `title` (string): Item's title shown in the context menu.\n * * `name` (string): Item's identifier.\n * * `action` (function): Function triggered after selecting the context menu item.\n */\n this.setContextMenu = function(options) {\n window.context_menu[self.el.id][options.control] = {};\n\n var i,\n ul = doc.createElement('ul');\n\n for (i in options.options) {\n if (options.options.hasOwnProperty(i)) {\n var option = options.options[i];\n\n window.context_menu[self.el.id][options.control][option.name] = {\n title: option.title,\n action: option.action\n };\n }\n }\n\n ul.id = 'gmaps_context_menu';\n ul.style.display = 'none';\n ul.style.position = 'absolute';\n ul.style.minWidth = '100px';\n ul.style.background = 'white';\n ul.style.listStyle = 'none';\n ul.style.padding = '8px';\n ul.style.boxShadow = '2px 2px 6px #ccc';\n\n if (!getElementById('gmaps_context_menu')) {\n doc.body.appendChild(ul);\n }\n\n var context_menu_element = getElementById('gmaps_context_menu');\n\n google.maps.event.addDomListener(context_menu_element, 'mouseout', function(ev) {\n if (!ev.relatedTarget || !this.contains(ev.relatedTarget)) {\n window.setTimeout(function(){\n context_menu_element.style.display = 'none';\n }, 400);\n }\n }, false);\n };\n\n /**\n * Hide the current context menu\n */\n this.hideContextMenu = function() {\n var context_menu_element = getElementById('gmaps_context_menu');\n\n if (context_menu_element) {\n context_menu_element.style.display = 'none';\n }\n };\n\n var setupListener = function(object, name) {\n google.maps.event.addListener(object, name, function(e){\n if (e == undefined) {\n e = this;\n }\n\n options[name].apply(this, [e]);\n\n self.hideContextMenu();\n });\n };\n\n //google.maps.event.addListener(this.map, 'idle', this.hideContextMenu);\n google.maps.event.addListener(this.map, 'zoom_changed', this.hideContextMenu);\n\n for (var ev = 0; ev < events_that_hide_context_menu.length; ev++) {\n var name = events_that_hide_context_menu[ev];\n\n if (name in options) {\n setupListener(this.map, name);\n }\n }\n\n for (var ev = 0; ev < events_that_doesnt_hide_context_menu.length; ev++) {\n var name = events_that_doesnt_hide_context_menu[ev];\n\n if (name in options) {\n setupListener(this.map, name);\n }\n }\n\n google.maps.event.addListener(this.map, 'rightclick', function(e) {\n if (options.rightclick) {\n options.rightclick.apply(this, [e]);\n }\n\n if(window.context_menu[self.el.id]['map'] != undefined) {\n self.buildContextMenu('map', e);\n }\n });\n\n /**\n * Trigger a `resize` event, useful if you need to repaint the current map (for changes in the viewport or display / hide actions).\n */\n this.refresh = function() {\n google.maps.event.trigger(this.map, 'resize');\n };\n\n /**\n * Adjust the map zoom to include all the markers added in the map.\n */\n this.fitZoom = function() {\n var latLngs = [],\n markers_length = this.markers.length,\n i;\n\n for (i = 0; i < markers_length; i++) {\n if(typeof(this.markers[i].visible) === 'boolean' && this.markers[i].visible) {\n latLngs.push(this.markers[i].getPosition());\n }\n }\n\n this.fitLatLngBounds(latLngs);\n };\n\n /**\n * Adjust the map zoom to include all the coordinates in the `latLngs` array.\n *\n * @param {array} latLngs - Collection of `google.maps.LatLng` objects.\n */\n this.fitLatLngBounds = function(latLngs) {\n var total = latLngs.length,\n bounds = new google.maps.LatLngBounds(),\n i;\n\n for(i = 0; i < total; i++) {\n bounds.extend(latLngs[i]);\n }\n\n this.map.fitBounds(bounds);\n };\n\n /**\n * Center the map using the `lat` and `lng` coordinates.\n *\n * @param {number} lat - Latitude of the coordinate.\n * @param {number} lng - Longitude of the coordinate.\n * @param {function} [callback] - Callback that will be executed after the map is centered.\n */\n this.setCenter = function(lat, lng, callback) {\n this.map.panTo(new google.maps.LatLng(lat, lng));\n\n if (callback) {\n callback();\n }\n };\n\n /**\n * Return the HTML element container of the map.\n *\n * @returns {HTMLElement} the element container.\n */\n this.getElement = function() {\n return this.el;\n };\n\n /**\n * Increase the map's zoom.\n *\n * @param {number} [magnitude] - The number of times the map will be zoomed in.\n */\n this.zoomIn = function(value) {\n value = value || 1;\n\n this.zoom = this.map.getZoom() + value;\n this.map.setZoom(this.zoom);\n };\n\n /**\n * Decrease the map's zoom.\n *\n * @param {number} [magnitude] - The number of times the map will be zoomed out.\n */\n this.zoomOut = function(value) {\n value = value || 1;\n\n this.zoom = this.map.getZoom() - value;\n this.map.setZoom(this.zoom);\n };\n\n var native_methods = [],\n method;\n\n for (method in this.map) {\n if (typeof(this.map[method]) == 'function' && !this[method]) {\n native_methods.push(method);\n }\n }\n\n for (i = 0; i < native_methods.length; i++) {\n (function(gmaps, scope, method_name) {\n gmaps[method_name] = function(){\n return scope[method_name].apply(scope, arguments);\n };\n })(this, this.map, native_methods[i]);\n }\n };\n\n return GMaps;\n})(this);\n\nGMaps.prototype.createControl = function(options) {\n var control = document.createElement('div');\n\n control.style.cursor = 'pointer';\n\n if (options.disableDefaultStyles !== true) {\n control.style.fontFamily = 'Roboto, Arial, sans-serif';\n control.style.fontSize = '11px';\n control.style.boxShadow = 'rgba(0, 0, 0, 0.298039) 0px 1px 4px -1px';\n }\n\n for (var option in options.style) {\n control.style[option] = options.style[option];\n }\n\n if (options.id) {\n control.id = options.id;\n }\n\n if (options.title) {\n control.title = options.title;\n }\n\n if (options.classes) {\n control.className = options.classes;\n }\n\n if (options.content) {\n if (typeof options.content === 'string') {\n control.innerHTML = options.content;\n }\n else if (options.content instanceof HTMLElement) {\n control.appendChild(options.content);\n }\n }\n\n if (options.position) {\n control.position = google.maps.ControlPosition[options.position.toUpperCase()];\n }\n\n for (var ev in options.events) {\n (function(object, name) {\n google.maps.event.addDomListener(object, name, function(){\n options.events[name].apply(this, [this]);\n });\n })(control, ev);\n }\n\n control.index = 1;\n\n return control;\n};\n\n/**\n * Add a custom control to the map UI.\n *\n * @param {object} options - The `options` object should contain:\n * * `style` (object): The keys and values of this object should be valid CSS properties and values.\n * * `id` (string): The HTML id for the custom control.\n * * `classes` (string): A string containing all the HTML classes for the custom control.\n * * `content` (string or HTML element): The content of the custom control.\n * * `position` (string): Any valid [`google.maps.ControlPosition`](https://developers.google.com/maps/documentation/javascript/controls#ControlPositioning) value, in lower or upper case.\n * * `events` (object): The keys of this object should be valid DOM events. The values should be functions.\n * * `disableDefaultStyles` (boolean): If false, removes the default styles for the controls like font (family and size), and box shadow.\n * @returns {HTMLElement}\n */\nGMaps.prototype.addControl = function(options) {\n var control = this.createControl(options);\n\n this.controls.push(control);\n this.map.controls[control.position].push(control);\n\n return control;\n};\n\n/**\n * Remove a control from the map. `control` should be a control returned by `addControl()`.\n *\n * @param {HTMLElement} control - One of the controls returned by `addControl()`.\n * @returns {HTMLElement} the removed control.\n */\nGMaps.prototype.removeControl = function(control) {\n var position = null,\n i;\n\n for (i = 0; i < this.controls.length; i++) {\n if (this.controls[i] == control) {\n position = this.controls[i].position;\n this.controls.splice(i, 1);\n }\n }\n\n if (position) {\n for (i = 0; i < this.map.controls.length; i++) {\n var controlsForPosition = this.map.controls[control.position];\n\n if (controlsForPosition.getAt(i) == control) {\n controlsForPosition.removeAt(i);\n\n break;\n }\n }\n }\n\n return control;\n};\n\nGMaps.prototype.createMarker = function(options) {\n if (options.lat == undefined && options.lng == undefined && options.position == undefined) {\n throw 'No latitude or longitude defined.';\n }\n\n var self = this,\n details = options.details,\n fences = options.fences,\n outside = options.outside,\n base_options = {\n position: new google.maps.LatLng(options.lat, options.lng),\n map: null\n },\n marker_options = extend_object(base_options, options);\n\n delete marker_options.lat;\n delete marker_options.lng;\n delete marker_options.fences;\n delete marker_options.outside;\n\n var marker = new google.maps.Marker(marker_options);\n\n marker.fences = fences;\n\n if (options.infoWindow) {\n marker.infoWindow = new google.maps.InfoWindow(options.infoWindow);\n\n var info_window_events = ['closeclick', 'content_changed', 'domready', 'position_changed', 'zindex_changed'];\n\n for (var ev = 0; ev < info_window_events.length; ev++) {\n (function(object, name) {\n if (options.infoWindow[name]) {\n google.maps.event.addListener(object, name, function(e){\n options.infoWindow[name].apply(this, [e]);\n });\n }\n })(marker.infoWindow, info_window_events[ev]);\n }\n }\n\n var marker_events = ['animation_changed', 'clickable_changed', 'cursor_changed', 'draggable_changed', 'flat_changed', 'icon_changed', 'position_changed', 'shadow_changed', 'shape_changed', 'title_changed', 'visible_changed', 'zindex_changed'];\n\n var marker_events_with_mouse = ['dblclick', 'drag', 'dragend', 'dragstart', 'mousedown', 'mouseout', 'mouseover', 'mouseup'];\n\n for (var ev = 0; ev < marker_events.length; ev++) {\n (function(object, name) {\n if (options[name]) {\n google.maps.event.addListener(object, name, function(){\n options[name].apply(this, [this]);\n });\n }\n })(marker, marker_events[ev]);\n }\n\n for (var ev = 0; ev < marker_events_with_mouse.length; ev++) {\n (function(map, object, name) {\n if (options[name]) {\n google.maps.event.addListener(object, name, function(me){\n if(!me.pixel){\n me.pixel = map.getProjection().fromLatLngToPoint(me.latLng)\n }\n\n options[name].apply(this, [me]);\n });\n }\n })(this.map, marker, marker_events_with_mouse[ev]);\n }\n\n google.maps.event.addListener(marker, 'click', function() {\n this.details = details;\n\n if (options.click) {\n options.click.apply(this, [this]);\n }\n\n if (marker.infoWindow) {\n self.hideInfoWindows();\n marker.infoWindow.open(self.map, marker);\n }\n });\n\n google.maps.event.addListener(marker, 'rightclick', function(e) {\n e.marker = this;\n\n if (options.rightclick) {\n options.rightclick.apply(this, [e]);\n }\n\n if (window.context_menu[self.el.id]['marker'] != undefined) {\n self.buildContextMenu('marker', e);\n }\n });\n\n if (marker.fences) {\n google.maps.event.addListener(marker, 'dragend', function() {\n self.checkMarkerGeofence(marker, function(m, f) {\n outside(m, f);\n });\n });\n }\n\n return marker;\n};\n\nGMaps.prototype.addMarker = function(options) {\n var marker;\n if(options.hasOwnProperty('gm_accessors_')) {\n // Native google.maps.Marker object\n marker = options;\n }\n else {\n if ((options.hasOwnProperty('lat') && options.hasOwnProperty('lng')) || options.position) {\n marker = this.createMarker(options);\n }\n else {\n throw 'No latitude or longitude defined.';\n }\n }\n\n marker.setMap(this.map);\n\n if(this.markerClusterer) {\n this.markerClusterer.addMarker(marker);\n }\n\n this.markers.push(marker);\n\n GMaps.fire('marker_added', marker, this);\n\n return marker;\n};\n\nGMaps.prototype.addMarkers = function(array) {\n for (var i = 0, marker; marker=array[i]; i++) {\n this.addMarker(marker);\n }\n\n return this.markers;\n};\n\nGMaps.prototype.hideInfoWindows = function() {\n for (var i = 0, marker; marker = this.markers[i]; i++){\n if (marker.infoWindow) {\n marker.infoWindow.close();\n }\n }\n};\n\nGMaps.prototype.removeMarker = function(marker) {\n for (var i = 0; i < this.markers.length; i++) {\n if (this.markers[i] === marker) {\n this.markers[i].setMap(null);\n this.markers.splice(i, 1);\n\n if(this.markerClusterer) {\n this.markerClusterer.removeMarker(marker);\n }\n\n GMaps.fire('marker_removed', marker, this);\n\n break;\n }\n }\n\n return marker;\n};\n\nGMaps.prototype.removeMarkers = function (collection) {\n var new_markers = [];\n\n if (typeof collection == 'undefined') {\n for (var i = 0; i < this.markers.length; i++) {\n var marker = this.markers[i];\n marker.setMap(null);\n\n GMaps.fire('marker_removed', marker, this);\n }\n\n if(this.markerClusterer && this.markerClusterer.clearMarkers) {\n this.markerClusterer.clearMarkers();\n }\n\n this.markers = new_markers;\n }\n else {\n for (var i = 0; i < collection.length; i++) {\n var index = this.markers.indexOf(collection[i]);\n\n if (index > -1) {\n var marker = this.markers[index];\n marker.setMap(null);\n\n if(this.markerClusterer) {\n this.markerClusterer.removeMarker(marker);\n }\n\n GMaps.fire('marker_removed', marker, this);\n }\n }\n\n for (var i = 0; i < this.markers.length; i++) {\n var marker = this.markers[i];\n if (marker.getMap() != null) {\n new_markers.push(marker);\n }\n }\n\n this.markers = new_markers;\n }\n};\n\nGMaps.prototype.drawOverlay = function(options) {\n var overlay = new google.maps.OverlayView(),\n auto_show = true;\n\n overlay.setMap(this.map);\n\n if (options.auto_show != null) {\n auto_show = options.auto_show;\n }\n\n overlay.onAdd = function() {\n var el = document.createElement('div');\n\n el.style.borderStyle = \"none\";\n el.style.borderWidth = \"0px\";\n el.style.position = \"absolute\";\n el.style.zIndex = 100;\n el.innerHTML = options.content;\n\n overlay.el = el;\n\n if (!options.layer) {\n options.layer = 'overlayLayer';\n }\n \n var panes = this.getPanes(),\n overlayLayer = panes[options.layer],\n stop_overlay_events = ['contextmenu', 'DOMMouseScroll', 'dblclick', 'mousedown'];\n\n overlayLayer.appendChild(el);\n\n for (var ev = 0; ev < stop_overlay_events.length; ev++) {\n (function(object, name) {\n google.maps.event.addDomListener(object, name, function(e){\n if (navigator.userAgent.toLowerCase().indexOf('msie') != -1 && document.all) {\n e.cancelBubble = true;\n e.returnValue = false;\n }\n else {\n e.stopPropagation();\n }\n });\n })(el, stop_overlay_events[ev]);\n }\n\n if (options.click) {\n panes.overlayMouseTarget.appendChild(overlay.el);\n google.maps.event.addDomListener(overlay.el, 'click', function() {\n options.click.apply(overlay, [overlay]);\n });\n }\n\n google.maps.event.trigger(this, 'ready');\n };\n\n overlay.draw = function() {\n var projection = this.getProjection(),\n pixel = projection.fromLatLngToDivPixel(new google.maps.LatLng(options.lat, options.lng));\n\n options.horizontalOffset = options.horizontalOffset || 0;\n options.verticalOffset = options.verticalOffset || 0;\n\n var el = overlay.el,\n content = el.children[0],\n content_height = content.clientHeight,\n content_width = content.clientWidth;\n\n switch (options.verticalAlign) {\n case 'top':\n el.style.top = (pixel.y - content_height + options.verticalOffset) + 'px';\n break;\n default:\n case 'middle':\n el.style.top = (pixel.y - (content_height / 2) + options.verticalOffset) + 'px';\n break;\n case 'bottom':\n el.style.top = (pixel.y + options.verticalOffset) + 'px';\n break;\n }\n\n switch (options.horizontalAlign) {\n case 'left':\n el.style.left = (pixel.x - content_width + options.horizontalOffset) + 'px';\n break;\n default:\n case 'center':\n el.style.left = (pixel.x - (content_width / 2) + options.horizontalOffset) + 'px';\n break;\n case 'right':\n el.style.left = (pixel.x + options.horizontalOffset) + 'px';\n break;\n }\n\n el.style.display = auto_show ? 'block' : 'none';\n\n if (!auto_show) {\n options.show.apply(this, [el]);\n }\n };\n\n overlay.onRemove = function() {\n var el = overlay.el;\n\n if (options.remove) {\n options.remove.apply(this, [el]);\n }\n else {\n overlay.el.parentNode.removeChild(overlay.el);\n overlay.el = null;\n }\n };\n\n this.overlays.push(overlay);\n return overlay;\n};\n\nGMaps.prototype.removeOverlay = function(overlay) {\n for (var i = 0; i < this.overlays.length; i++) {\n if (this.overlays[i] === overlay) {\n this.overlays[i].setMap(null);\n this.overlays.splice(i, 1);\n\n break;\n }\n }\n};\n\nGMaps.prototype.removeOverlays = function() {\n for (var i = 0, item; item = this.overlays[i]; i++) {\n item.setMap(null);\n }\n\n this.overlays = [];\n};\n\nGMaps.prototype.drawPolyline = function(options) {\n var path = [],\n points = options.path;\n\n if (points.length) {\n if (points[0][0] === undefined) {\n path = points;\n }\n else {\n for (var i = 0, latlng; latlng = points[i]; i++) {\n path.push(new google.maps.LatLng(latlng[0], latlng[1]));\n }\n }\n }\n\n var polyline_options = {\n map: this.map,\n path: path,\n strokeColor: options.strokeColor,\n strokeOpacity: options.strokeOpacity,\n strokeWeight: options.strokeWeight,\n geodesic: options.geodesic,\n clickable: true,\n editable: false,\n visible: true\n };\n\n if (options.hasOwnProperty(\"clickable\")) {\n polyline_options.clickable = options.clickable;\n }\n\n if (options.hasOwnProperty(\"editable\")) {\n polyline_options.editable = options.editable;\n }\n\n if (options.hasOwnProperty(\"icons\")) {\n polyline_options.icons = options.icons;\n }\n\n if (options.hasOwnProperty(\"zIndex\")) {\n polyline_options.zIndex = options.zIndex;\n }\n\n var polyline = new google.maps.Polyline(polyline_options);\n\n var polyline_events = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'rightclick'];\n\n for (var ev = 0; ev < polyline_events.length; ev++) {\n (function(object, name) {\n if (options[name]) {\n google.maps.event.addListener(object, name, function(e){\n options[name].apply(this, [e]);\n });\n }\n })(polyline, polyline_events[ev]);\n }\n\n this.polylines.push(polyline);\n\n GMaps.fire('polyline_added', polyline, this);\n\n return polyline;\n};\n\nGMaps.prototype.removePolyline = function(polyline) {\n for (var i = 0; i < this.polylines.length; i++) {\n if (this.polylines[i] === polyline) {\n this.polylines[i].setMap(null);\n this.polylines.splice(i, 1);\n\n GMaps.fire('polyline_removed', polyline, this);\n\n break;\n }\n }\n};\n\nGMaps.prototype.removePolylines = function() {\n for (var i = 0, item; item = this.polylines[i]; i++) {\n item.setMap(null);\n }\n\n this.polylines = [];\n};\n\nGMaps.prototype.drawCircle = function(options) {\n options = extend_object({\n map: this.map,\n center: new google.maps.LatLng(options.lat, options.lng)\n }, options);\n\n delete options.lat;\n delete options.lng;\n\n var polygon = new google.maps.Circle(options),\n polygon_events = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'rightclick'];\n\n for (var ev = 0; ev < polygon_events.length; ev++) {\n (function(object, name) {\n if (options[name]) {\n google.maps.event.addListener(object, name, function(e){\n options[name].apply(this, [e]);\n });\n }\n })(polygon, polygon_events[ev]);\n }\n\n this.polygons.push(polygon);\n\n return polygon;\n};\n\nGMaps.prototype.drawRectangle = function(options) {\n options = extend_object({\n map: this.map\n }, options);\n\n var latLngBounds = new google.maps.LatLngBounds(\n new google.maps.LatLng(options.bounds[0][0], options.bounds[0][1]),\n new google.maps.LatLng(options.bounds[1][0], options.bounds[1][1])\n );\n\n options.bounds = latLngBounds;\n\n var polygon = new google.maps.Rectangle(options),\n polygon_events = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'rightclick'];\n\n for (var ev = 0; ev < polygon_events.length; ev++) {\n (function(object, name) {\n if (options[name]) {\n google.maps.event.addListener(object, name, function(e){\n options[name].apply(this, [e]);\n });\n }\n })(polygon, polygon_events[ev]);\n }\n\n this.polygons.push(polygon);\n\n return polygon;\n};\n\nGMaps.prototype.drawPolygon = function(options) {\n var useGeoJSON = false;\n\n if(options.hasOwnProperty(\"useGeoJSON\")) {\n useGeoJSON = options.useGeoJSON;\n }\n\n delete options.useGeoJSON;\n\n options = extend_object({\n map: this.map\n }, options);\n\n if (useGeoJSON == false) {\n options.paths = [options.paths.slice(0)];\n }\n\n if (options.paths.length > 0) {\n if (options.paths[0].length > 0) {\n options.paths = array_flat(array_map(options.paths, arrayToLatLng, useGeoJSON));\n }\n }\n\n var polygon = new google.maps.Polygon(options),\n polygon_events = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'rightclick'];\n\n for (var ev = 0; ev < polygon_events.length; ev++) {\n (function(object, name) {\n if (options[name]) {\n google.maps.event.addListener(object, name, function(e){\n options[name].apply(this, [e]);\n });\n }\n })(polygon, polygon_events[ev]);\n }\n\n this.polygons.push(polygon);\n\n GMaps.fire('polygon_added', polygon, this);\n\n return polygon;\n};\n\nGMaps.prototype.removePolygon = function(polygon) {\n for (var i = 0; i < this.polygons.length; i++) {\n if (this.polygons[i] === polygon) {\n this.polygons[i].setMap(null);\n this.polygons.splice(i, 1);\n\n GMaps.fire('polygon_removed', polygon, this);\n\n break;\n }\n }\n};\n\nGMaps.prototype.removePolygons = function() {\n for (var i = 0, item; item = this.polygons[i]; i++) {\n item.setMap(null);\n }\n\n this.polygons = [];\n};\n\nGMaps.prototype.getFromFusionTables = function(options) {\n var events = options.events;\n\n delete options.events;\n\n var fusion_tables_options = options,\n layer = new google.maps.FusionTablesLayer(fusion_tables_options);\n\n for (var ev in events) {\n (function(object, name) {\n google.maps.event.addListener(object, name, function(e) {\n events[name].apply(this, [e]);\n });\n })(layer, ev);\n }\n\n this.layers.push(layer);\n\n return layer;\n};\n\nGMaps.prototype.loadFromFusionTables = function(options) {\n var layer = this.getFromFusionTables(options);\n layer.setMap(this.map);\n\n return layer;\n};\n\nGMaps.prototype.getFromKML = function(options) {\n var url = options.url,\n events = options.events;\n\n delete options.url;\n delete options.events;\n\n var kml_options = options,\n layer = new google.maps.KmlLayer(url, kml_options);\n\n for (var ev in events) {\n (function(object, name) {\n google.maps.event.addListener(object, name, function(e) {\n events[name].apply(this, [e]);\n });\n })(layer, ev);\n }\n\n this.layers.push(layer);\n\n return layer;\n};\n\nGMaps.prototype.loadFromKML = function(options) {\n var layer = this.getFromKML(options);\n layer.setMap(this.map);\n\n return layer;\n};\n\nGMaps.prototype.addLayer = function(layerName, options) {\n //var default_layers = ['weather', 'clouds', 'traffic', 'transit', 'bicycling', 'panoramio', 'places'];\n options = options || {};\n var layer;\n\n switch(layerName) {\n case 'weather': this.singleLayers.weather = layer = new google.maps.weather.WeatherLayer();\n break;\n case 'clouds': this.singleLayers.clouds = layer = new google.maps.weather.CloudLayer();\n break;\n case 'traffic': this.singleLayers.traffic = layer = new google.maps.TrafficLayer();\n break;\n case 'transit': this.singleLayers.transit = layer = new google.maps.TransitLayer();\n break;\n case 'bicycling': this.singleLayers.bicycling = layer = new google.maps.BicyclingLayer();\n break;\n case 'panoramio':\n this.singleLayers.panoramio = layer = new google.maps.panoramio.PanoramioLayer();\n layer.setTag(options.filter);\n delete options.filter;\n\n //click event\n if (options.click) {\n google.maps.event.addListener(layer, 'click', function(event) {\n options.click(event);\n delete options.click;\n });\n }\n break;\n case 'places':\n this.singleLayers.places = layer = new google.maps.places.PlacesService(this.map);\n\n //search, nearbySearch, radarSearch callback, Both are the same\n if (options.search || options.nearbySearch || options.radarSearch) {\n var placeSearchRequest = {\n bounds : options.bounds || null,\n keyword : options.keyword || null,\n location : options.location || null,\n name : options.name || null,\n radius : options.radius || null,\n rankBy : options.rankBy || null,\n types : options.types || null\n };\n\n if (options.radarSearch) {\n layer.radarSearch(placeSearchRequest, options.radarSearch);\n }\n\n if (options.search) {\n layer.search(placeSearchRequest, options.search);\n }\n\n if (options.nearbySearch) {\n layer.nearbySearch(placeSearchRequest, options.nearbySearch);\n }\n }\n\n //textSearch callback\n if (options.textSearch) {\n var textSearchRequest = {\n bounds : options.bounds || null,\n location : options.location || null,\n query : options.query || null,\n radius : options.radius || null\n };\n\n layer.textSearch(textSearchRequest, options.textSearch);\n }\n break;\n }\n\n if (layer !== undefined) {\n if (typeof layer.setOptions == 'function') {\n layer.setOptions(options);\n }\n if (typeof layer.setMap == 'function') {\n layer.setMap(this.map);\n }\n\n return layer;\n }\n};\n\nGMaps.prototype.removeLayer = function(layer) {\n if (typeof(layer) == \"string\" && this.singleLayers[layer] !== undefined) {\n this.singleLayers[layer].setMap(null);\n\n delete this.singleLayers[layer];\n }\n else {\n for (var i = 0; i < this.layers.length; i++) {\n if (this.layers[i] === layer) {\n this.layers[i].setMap(null);\n this.layers.splice(i, 1);\n\n break;\n }\n }\n }\n};\n\nvar travelMode, unitSystem;\n\nGMaps.prototype.getRoutes = function(options) {\n switch (options.travelMode) {\n case 'bicycling':\n travelMode = google.maps.TravelMode.BICYCLING;\n break;\n case 'transit':\n travelMode = google.maps.TravelMode.TRANSIT;\n break;\n case 'driving':\n travelMode = google.maps.TravelMode.DRIVING;\n break;\n default:\n travelMode = google.maps.TravelMode.WALKING;\n break;\n }\n\n if (options.unitSystem === 'imperial') {\n unitSystem = google.maps.UnitSystem.IMPERIAL;\n }\n else {\n unitSystem = google.maps.UnitSystem.METRIC;\n }\n\n var base_options = {\n avoidHighways: false,\n avoidTolls: false,\n optimizeWaypoints: false,\n waypoints: []\n },\n request_options = extend_object(base_options, options);\n\n request_options.origin = /string/.test(typeof options.origin) ? options.origin : new google.maps.LatLng(options.origin[0], options.origin[1]);\n request_options.destination = /string/.test(typeof options.destination) ? options.destination : new google.maps.LatLng(options.destination[0], options.destination[1]);\n request_options.travelMode = travelMode;\n request_options.unitSystem = unitSystem;\n\n delete request_options.callback;\n delete request_options.error;\n\n var self = this,\n routes = [],\n service = new google.maps.DirectionsService();\n\n service.route(request_options, function(result, status) {\n if (status === google.maps.DirectionsStatus.OK) {\n for (var r in result.routes) {\n if (result.routes.hasOwnProperty(r)) {\n routes.push(result.routes[r]);\n }\n }\n\n if (options.callback) {\n options.callback(routes, result, status);\n }\n }\n else {\n if (options.error) {\n options.error(result, status);\n }\n }\n });\n};\n\nGMaps.prototype.removeRoutes = function() {\n this.routes.length = 0;\n};\n\nGMaps.prototype.getElevations = function(options) {\n options = extend_object({\n locations: [],\n path : false,\n samples : 256\n }, options);\n\n if (options.locations.length > 0) {\n if (options.locations[0].length > 0) {\n options.locations = array_flat(array_map([options.locations], arrayToLatLng, false));\n }\n }\n\n var callback = options.callback;\n delete options.callback;\n\n var service = new google.maps.ElevationService();\n\n //location request\n if (!options.path) {\n delete options.path;\n delete options.samples;\n\n service.getElevationForLocations(options, function(result, status) {\n if (callback && typeof(callback) === \"function\") {\n callback(result, status);\n }\n });\n //path request\n } else {\n var pathRequest = {\n path : options.locations,\n samples : options.samples\n };\n\n service.getElevationAlongPath(pathRequest, function(result, status) {\n if (callback && typeof(callback) === \"function\") {\n callback(result, status);\n }\n });\n }\n};\n\nGMaps.prototype.cleanRoute = GMaps.prototype.removePolylines;\n\nGMaps.prototype.renderRoute = function(options, renderOptions) {\n var self = this,\n panel = ((typeof renderOptions.panel === 'string') ? document.getElementById(renderOptions.panel.replace('#', '')) : renderOptions.panel),\n display;\n\n renderOptions.panel = panel;\n renderOptions = extend_object({\n map: this.map\n }, renderOptions);\n display = new google.maps.DirectionsRenderer(renderOptions);\n\n this.getRoutes({\n origin: options.origin,\n destination: options.destination,\n travelMode: options.travelMode,\n waypoints: options.waypoints,\n unitSystem: options.unitSystem,\n error: options.error,\n avoidHighways: options.avoidHighways,\n avoidTolls: options.avoidTolls,\n optimizeWaypoints: options.optimizeWaypoints,\n callback: function(routes, response, status) {\n if (status === google.maps.DirectionsStatus.OK) {\n display.setDirections(response);\n }\n }\n });\n};\n\nGMaps.prototype.drawRoute = function(options) {\n var self = this;\n\n this.getRoutes({\n origin: options.origin,\n destination: options.destination,\n travelMode: options.travelMode,\n waypoints: options.waypoints,\n unitSystem: options.unitSystem,\n error: options.error,\n avoidHighways: options.avoidHighways,\n avoidTolls: options.avoidTolls,\n optimizeWaypoints: options.optimizeWaypoints,\n callback: function(routes) {\n if (routes.length > 0) {\n var polyline_options = {\n path: routes[routes.length - 1].overview_path,\n strokeColor: options.strokeColor,\n strokeOpacity: options.strokeOpacity,\n strokeWeight: options.strokeWeight\n };\n\n if (options.hasOwnProperty(\"icons\")) {\n polyline_options.icons = options.icons;\n }\n\n self.drawPolyline(polyline_options);\n\n if (options.callback) {\n options.callback(routes[routes.length - 1]);\n }\n }\n }\n });\n};\n\nGMaps.prototype.travelRoute = function(options) {\n if (options.origin && options.destination) {\n this.getRoutes({\n origin: options.origin,\n destination: options.destination,\n travelMode: options.travelMode,\n waypoints : options.waypoints,\n unitSystem: options.unitSystem,\n error: options.error,\n callback: function(e) {\n //start callback\n if (e.length > 0 && options.start) {\n options.start(e[e.length - 1]);\n }\n\n //step callback\n if (e.length > 0 && options.step) {\n var route = e[e.length - 1];\n if (route.legs.length > 0) {\n var steps = route.legs[0].steps;\n for (var i = 0, step; step = steps[i]; i++) {\n step.step_number = i;\n options.step(step, (route.legs[0].steps.length - 1));\n }\n }\n }\n\n //end callback\n if (e.length > 0 && options.end) {\n options.end(e[e.length - 1]);\n }\n }\n });\n }\n else if (options.route) {\n if (options.route.legs.length > 0) {\n var steps = options.route.legs[0].steps;\n for (var i = 0, step; step = steps[i]; i++) {\n step.step_number = i;\n options.step(step);\n }\n }\n }\n};\n\nGMaps.prototype.drawSteppedRoute = function(options) {\n var self = this;\n\n if (options.origin && options.destination) {\n this.getRoutes({\n origin: options.origin,\n destination: options.destination,\n travelMode: options.travelMode,\n waypoints : options.waypoints,\n error: options.error,\n callback: function(e) {\n //start callback\n if (e.length > 0 && options.start) {\n options.start(e[e.length - 1]);\n }\n\n //step callback\n if (e.length > 0 && options.step) {\n var route = e[e.length - 1];\n if (route.legs.length > 0) {\n var steps = route.legs[0].steps;\n for (var i = 0, step; step = steps[i]; i++) {\n step.step_number = i;\n var polyline_options = {\n path: step.path,\n strokeColor: options.strokeColor,\n strokeOpacity: options.strokeOpacity,\n strokeWeight: options.strokeWeight\n };\n\n if (options.hasOwnProperty(\"icons\")) {\n polyline_options.icons = options.icons;\n }\n\n self.drawPolyline(polyline_options);\n options.step(step, (route.legs[0].steps.length - 1));\n }\n }\n }\n\n //end callback\n if (e.length > 0 && options.end) {\n options.end(e[e.length - 1]);\n }\n }\n });\n }\n else if (options.route) {\n if (options.route.legs.length > 0) {\n var steps = options.route.legs[0].steps;\n for (var i = 0, step; step = steps[i]; i++) {\n step.step_number = i;\n var polyline_options = {\n path: step.path,\n strokeColor: options.strokeColor,\n strokeOpacity: options.strokeOpacity,\n strokeWeight: options.strokeWeight\n };\n\n if (options.hasOwnProperty(\"icons\")) {\n polyline_options.icons = options.icons;\n }\n\n self.drawPolyline(polyline_options);\n options.step(step);\n }\n }\n }\n};\n\nGMaps.Route = function(options) {\n this.origin = options.origin;\n this.destination = options.destination;\n this.waypoints = options.waypoints;\n\n this.map = options.map;\n this.route = options.route;\n this.step_count = 0;\n this.steps = this.route.legs[0].steps;\n this.steps_length = this.steps.length;\n\n var polyline_options = {\n path: new google.maps.MVCArray(),\n strokeColor: options.strokeColor,\n strokeOpacity: options.strokeOpacity,\n strokeWeight: options.strokeWeight\n };\n\n if (options.hasOwnProperty(\"icons\")) {\n polyline_options.icons = options.icons;\n }\n\n this.polyline = this.map.drawPolyline(polyline_options).getPath();\n};\n\nGMaps.Route.prototype.getRoute = function(options) {\n var self = this;\n\n this.map.getRoutes({\n origin : this.origin,\n destination : this.destination,\n travelMode : options.travelMode,\n waypoints : this.waypoints || [],\n error: options.error,\n callback : function() {\n self.route = e[0];\n\n if (options.callback) {\n options.callback.call(self);\n }\n }\n });\n};\n\nGMaps.Route.prototype.back = function() {\n if (this.step_count > 0) {\n this.step_count--;\n var path = this.route.legs[0].steps[this.step_count].path;\n\n for (var p in path){\n if (path.hasOwnProperty(p)){\n this.polyline.pop();\n }\n }\n }\n};\n\nGMaps.Route.prototype.forward = function() {\n if (this.step_count < this.steps_length) {\n var path = this.route.legs[0].steps[this.step_count].path;\n\n for (var p in path){\n if (path.hasOwnProperty(p)){\n this.polyline.push(path[p]);\n }\n }\n this.step_count++;\n }\n};\n\nGMaps.prototype.checkGeofence = function(lat, lng, fence) {\n return fence.containsLatLng(new google.maps.LatLng(lat, lng));\n};\n\nGMaps.prototype.checkMarkerGeofence = function(marker, outside_callback) {\n if (marker.fences) {\n for (var i = 0, fence; fence = marker.fences[i]; i++) {\n var pos = marker.getPosition();\n if (!this.checkGeofence(pos.lat(), pos.lng(), fence)) {\n outside_callback(marker, fence);\n }\n }\n }\n};\n\nGMaps.prototype.toImage = function(options) {\n var options = options || {},\n static_map_options = {};\n\n static_map_options['size'] = options['size'] || [this.el.clientWidth, this.el.clientHeight];\n static_map_options['lat'] = this.getCenter().lat();\n static_map_options['lng'] = this.getCenter().lng();\n\n if (this.markers.length > 0) {\n static_map_options['markers'] = [];\n \n for (var i = 0; i < this.markers.length; i++) {\n static_map_options['markers'].push({\n lat: this.markers[i].getPosition().lat(),\n lng: this.markers[i].getPosition().lng()\n });\n }\n }\n\n if (this.polylines.length > 0) {\n var polyline = this.polylines[0];\n \n static_map_options['polyline'] = {};\n static_map_options['polyline']['path'] = google.maps.geometry.encoding.encodePath(polyline.getPath());\n static_map_options['polyline']['strokeColor'] = polyline.strokeColor\n static_map_options['polyline']['strokeOpacity'] = polyline.strokeOpacity\n static_map_options['polyline']['strokeWeight'] = polyline.strokeWeight\n }\n\n return GMaps.staticMapURL(static_map_options);\n};\n\nGMaps.staticMapURL = function(options){\n var parameters = [],\n data,\n static_root = (location.protocol === 'file:' ? 'http:' : location.protocol ) + '//maps.googleapis.com/maps/api/staticmap';\n\n if (options.url) {\n static_root = options.url;\n delete options.url;\n }\n\n static_root += '?';\n\n var markers = options.markers;\n \n delete options.markers;\n\n if (!markers && options.marker) {\n markers = [options.marker];\n delete options.marker;\n }\n\n var styles = options.styles;\n\n delete options.styles;\n\n var polyline = options.polyline;\n delete options.polyline;\n\n /** Map options **/\n if (options.center) {\n parameters.push('center=' + options.center);\n delete options.center;\n }\n else if (options.address) {\n parameters.push('center=' + options.address);\n delete options.address;\n }\n else if (options.lat) {\n parameters.push(['center=', options.lat, ',', options.lng].join(''));\n delete options.lat;\n delete options.lng;\n }\n else if (options.visible) {\n var visible = encodeURI(options.visible.join('|'));\n parameters.push('visible=' + visible);\n }\n\n var size = options.size;\n if (size) {\n if (size.join) {\n size = size.join('x');\n }\n delete options.size;\n }\n else {\n size = '630x300';\n }\n parameters.push('size=' + size);\n\n if (!options.zoom && options.zoom !== false) {\n options.zoom = 15;\n }\n\n var sensor = options.hasOwnProperty('sensor') ? !!options.sensor : true;\n delete options.sensor;\n parameters.push('sensor=' + sensor);\n\n for (var param in options) {\n if (options.hasOwnProperty(param)) {\n parameters.push(param + '=' + options[param]);\n }\n }\n\n /** Markers **/\n if (markers) {\n var marker, loc;\n\n for (var i = 0; data = markers[i]; i++) {\n marker = [];\n\n if (data.size && data.size !== 'normal') {\n marker.push('size:' + data.size);\n delete data.size;\n }\n else if (data.icon) {\n marker.push('icon:' + encodeURI(data.icon));\n delete data.icon;\n }\n\n if (data.color) {\n marker.push('color:' + data.color.replace('#', '0x'));\n delete data.color;\n }\n\n if (data.label) {\n marker.push('label:' + data.label[0].toUpperCase());\n delete data.label;\n }\n\n loc = (data.address ? data.address : data.lat + ',' + data.lng);\n delete data.address;\n delete data.lat;\n delete data.lng;\n\n for(var param in data){\n if (data.hasOwnProperty(param)) {\n marker.push(param + ':' + data[param]);\n }\n }\n\n if (marker.length || i === 0) {\n marker.push(loc);\n marker = marker.join('|');\n parameters.push('markers=' + encodeURI(marker));\n }\n // New marker without styles\n else {\n marker = parameters.pop() + encodeURI('|' + loc);\n parameters.push(marker);\n }\n }\n }\n\n /** Map Styles **/\n if (styles) {\n for (var i = 0; i < styles.length; i++) {\n var styleRule = [];\n if (styles[i].featureType){\n styleRule.push('feature:' + styles[i].featureType.toLowerCase());\n }\n\n if (styles[i].elementType) {\n styleRule.push('element:' + styles[i].elementType.toLowerCase());\n }\n\n for (var j = 0; j < styles[i].stylers.length; j++) {\n for (var p in styles[i].stylers[j]) {\n var ruleArg = styles[i].stylers[j][p];\n if (p == 'hue' || p == 'color') {\n ruleArg = '0x' + ruleArg.substring(1);\n }\n styleRule.push(p + ':' + ruleArg);\n }\n }\n\n var rule = styleRule.join('|');\n if (rule != '') {\n parameters.push('style=' + rule);\n }\n }\n }\n\n /** Polylines **/\n function parseColor(color, opacity) {\n if (color[0] === '#'){\n color = color.replace('#', '0x');\n\n if (opacity) {\n opacity = parseFloat(opacity);\n opacity = Math.min(1, Math.max(opacity, 0));\n if (opacity === 0) {\n return '0x00000000';\n }\n opacity = (opacity * 255).toString(16);\n if (opacity.length === 1) {\n opacity += opacity;\n }\n\n color = color.slice(0,8) + opacity;\n }\n }\n return color;\n }\n\n if (polyline) {\n data = polyline;\n polyline = [];\n\n if (data.strokeWeight) {\n polyline.push('weight:' + parseInt(data.strokeWeight, 10));\n }\n\n if (data.strokeColor) {\n var color = parseColor(data.strokeColor, data.strokeOpacity);\n polyline.push('color:' + color);\n }\n\n if (data.fillColor) {\n var fillcolor = parseColor(data.fillColor, data.fillOpacity);\n polyline.push('fillcolor:' + fillcolor);\n }\n\n var path = data.path;\n if (path.join) {\n for (var j=0, pos; pos=path[j]; j++) {\n polyline.push(pos.join(','));\n }\n }\n else {\n polyline.push('enc:' + path);\n }\n\n polyline = polyline.join('|');\n parameters.push('path=' + encodeURI(polyline));\n }\n\n /** Retina support **/\n var dpi = window.devicePixelRatio || 1;\n parameters.push('scale=' + dpi);\n\n parameters = parameters.join('&');\n return static_root + parameters;\n};\n\nGMaps.prototype.addMapType = function(mapTypeId, options) {\n if (options.hasOwnProperty(\"getTileUrl\") && typeof(options[\"getTileUrl\"]) == \"function\") {\n options.tileSize = options.tileSize || new google.maps.Size(256, 256);\n\n var mapType = new google.maps.ImageMapType(options);\n\n this.map.mapTypes.set(mapTypeId, mapType);\n }\n else {\n throw \"'getTileUrl' function required.\";\n }\n};\n\nGMaps.prototype.addOverlayMapType = function(options) {\n if (options.hasOwnProperty(\"getTile\") && typeof(options[\"getTile\"]) == \"function\") {\n var overlayMapTypeIndex = options.index;\n\n delete options.index;\n\n this.map.overlayMapTypes.insertAt(overlayMapTypeIndex, options);\n }\n else {\n throw \"'getTile' function required.\";\n }\n};\n\nGMaps.prototype.removeOverlayMapType = function(overlayMapTypeIndex) {\n this.map.overlayMapTypes.removeAt(overlayMapTypeIndex);\n};\n\nGMaps.prototype.addStyle = function(options) {\n var styledMapType = new google.maps.StyledMapType(options.styles, { name: options.styledMapName });\n\n this.map.mapTypes.set(options.mapTypeId, styledMapType);\n};\n\nGMaps.prototype.setStyle = function(mapTypeId) {\n this.map.setMapTypeId(mapTypeId);\n};\n\nGMaps.prototype.createPanorama = function(streetview_options) {\n if (!streetview_options.hasOwnProperty('lat') || !streetview_options.hasOwnProperty('lng')) {\n streetview_options.lat = this.getCenter().lat();\n streetview_options.lng = this.getCenter().lng();\n }\n\n this.panorama = GMaps.createPanorama(streetview_options);\n\n this.map.setStreetView(this.panorama);\n\n return this.panorama;\n};\n\nGMaps.createPanorama = function(options) {\n var el = getElementById(options.el, options.context);\n\n options.position = new google.maps.LatLng(options.lat, options.lng);\n\n delete options.el;\n delete options.context;\n delete options.lat;\n delete options.lng;\n\n var streetview_events = ['closeclick', 'links_changed', 'pano_changed', 'position_changed', 'pov_changed', 'resize', 'visible_changed'],\n streetview_options = extend_object({visible : true}, options);\n\n for (var i = 0; i < streetview_events.length; i++) {\n delete streetview_options[streetview_events[i]];\n }\n\n var panorama = new google.maps.StreetViewPanorama(el, streetview_options);\n\n for (var i = 0; i < streetview_events.length; i++) {\n (function(object, name) {\n if (options[name]) {\n google.maps.event.addListener(object, name, function(){\n options[name].apply(this);\n });\n }\n })(panorama, streetview_events[i]);\n }\n\n return panorama;\n};\n\nGMaps.prototype.on = function(event_name, handler) {\n return GMaps.on(event_name, this, handler);\n};\n\nGMaps.prototype.off = function(event_name) {\n GMaps.off(event_name, this);\n};\n\nGMaps.prototype.once = function(event_name, handler) {\n return GMaps.once(event_name, this, handler);\n};\n\nGMaps.custom_events = ['marker_added', 'marker_removed', 'polyline_added', 'polyline_removed', 'polygon_added', 'polygon_removed', 'geolocated', 'geolocation_failed'];\n\nGMaps.on = function(event_name, object, handler) {\n if (GMaps.custom_events.indexOf(event_name) == -1) {\n if(object instanceof GMaps) object = object.map; \n return google.maps.event.addListener(object, event_name, handler);\n }\n else {\n var registered_event = {\n handler : handler,\n eventName : event_name\n };\n\n object.registered_events[event_name] = object.registered_events[event_name] || [];\n object.registered_events[event_name].push(registered_event);\n\n return registered_event;\n }\n};\n\nGMaps.off = function(event_name, object) {\n if (GMaps.custom_events.indexOf(event_name) == -1) {\n if(object instanceof GMaps) object = object.map; \n google.maps.event.clearListeners(object, event_name);\n }\n else {\n object.registered_events[event_name] = [];\n }\n};\n\nGMaps.once = function(event_name, object, handler) {\n if (GMaps.custom_events.indexOf(event_name) == -1) {\n if(object instanceof GMaps) object = object.map;\n return google.maps.event.addListenerOnce(object, event_name, handler);\n }\n};\n\nGMaps.fire = function(event_name, object, scope) {\n if (GMaps.custom_events.indexOf(event_name) == -1) {\n google.maps.event.trigger(object, event_name, Array.prototype.slice.apply(arguments).slice(2));\n }\n else {\n if(event_name in scope.registered_events) {\n var firing_events = scope.registered_events[event_name];\n\n for(var i = 0; i < firing_events.length; i++) {\n (function(handler, scope, object) {\n handler.apply(scope, [object]);\n })(firing_events[i]['handler'], scope, object);\n }\n }\n }\n};\n\nGMaps.geolocate = function(options) {\n var complete_callback = options.always || options.complete;\n\n if (navigator.geolocation) {\n navigator.geolocation.getCurrentPosition(function(position) {\n options.success(position);\n\n if (complete_callback) {\n complete_callback();\n }\n }, function(error) {\n options.error(error);\n\n if (complete_callback) {\n complete_callback();\n }\n }, options.options);\n }\n else {\n options.not_supported();\n\n if (complete_callback) {\n complete_callback();\n }\n }\n};\n\nGMaps.geocode = function(options) {\n this.geocoder = new google.maps.Geocoder();\n var callback = options.callback;\n if (options.hasOwnProperty('lat') && options.hasOwnProperty('lng')) {\n options.latLng = new google.maps.LatLng(options.lat, options.lng);\n }\n\n delete options.lat;\n delete options.lng;\n delete options.callback;\n \n this.geocoder.geocode(options, function(results, status) {\n callback(results, status);\n });\n};\n\nif (typeof window.google === 'object' && window.google.maps) {\n //==========================\n // Polygon containsLatLng\n // https://github.com/tparkin/Google-Maps-Point-in-Polygon\n // Poygon getBounds extension - google-maps-extensions\n // http://code.google.com/p/google-maps-extensions/source/browse/google.maps.Polygon.getBounds.js\n if (!google.maps.Polygon.prototype.getBounds) {\n google.maps.Polygon.prototype.getBounds = function(latLng) {\n var bounds = new google.maps.LatLngBounds();\n var paths = this.getPaths();\n var path;\n\n for (var p = 0; p < paths.getLength(); p++) {\n path = paths.getAt(p);\n for (var i = 0; i < path.getLength(); i++) {\n bounds.extend(path.getAt(i));\n }\n }\n\n return bounds;\n };\n }\n\n if (!google.maps.Polygon.prototype.containsLatLng) {\n // Polygon containsLatLng - method to determine if a latLng is within a polygon\n google.maps.Polygon.prototype.containsLatLng = function(latLng) {\n // Exclude points outside of bounds as there is no way they are in the poly\n var bounds = this.getBounds();\n\n if (bounds !== null && !bounds.contains(latLng)) {\n return false;\n }\n\n // Raycast point in polygon method\n var inPoly = false;\n\n var numPaths = this.getPaths().getLength();\n for (var p = 0; p < numPaths; p++) {\n var path = this.getPaths().getAt(p);\n var numPoints = path.getLength();\n var j = numPoints - 1;\n\n for (var i = 0; i < numPoints; i++) {\n var vertex1 = path.getAt(i);\n var vertex2 = path.getAt(j);\n\n if (vertex1.lng() < latLng.lng() && vertex2.lng() >= latLng.lng() || vertex2.lng() < latLng.lng() && vertex1.lng() >= latLng.lng()) {\n if (vertex1.lat() + (latLng.lng() - vertex1.lng()) / (vertex2.lng() - vertex1.lng()) * (vertex2.lat() - vertex1.lat()) < latLng.lat()) {\n inPoly = !inPoly;\n }\n }\n\n j = i;\n }\n }\n\n return inPoly;\n };\n }\n\n if (!google.maps.Circle.prototype.containsLatLng) {\n google.maps.Circle.prototype.containsLatLng = function(latLng) {\n if (google.maps.geometry) {\n return google.maps.geometry.spherical.computeDistanceBetween(this.getCenter(), latLng) <= this.getRadius();\n }\n else {\n return true;\n }\n };\n }\n\n google.maps.Rectangle.prototype.containsLatLng = function(latLng) {\n return this.getBounds().contains(latLng);\n };\n\n google.maps.LatLngBounds.prototype.containsLatLng = function(latLng) {\n return this.contains(latLng);\n };\n\n google.maps.Marker.prototype.setFences = function(fences) {\n this.fences = fences;\n };\n\n google.maps.Marker.prototype.addFence = function(fence) {\n this.fences.push(fence);\n };\n\n google.maps.Marker.prototype.getId = function() {\n return this['__gm_id'];\n };\n}\n\n//==========================\n// Array indexOf\n// https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/indexOf\nif (!Array.prototype.indexOf) {\n Array.prototype.indexOf = function (searchElement /*, fromIndex */ ) {\n \"use strict\";\n if (this == null) {\n throw new TypeError();\n }\n var t = Object(this);\n var len = t.length >>> 0;\n if (len === 0) {\n return -1;\n }\n var n = 0;\n if (arguments.length > 1) {\n n = Number(arguments[1]);\n if (n != n) { // shortcut for verifying if it's NaN\n n = 0;\n } else if (n != 0 && n != Infinity && n != -Infinity) {\n n = (n > 0 || -1) * Math.floor(Math.abs(n));\n }\n }\n if (n >= len) {\n return -1;\n }\n var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0);\n for (; k < len; k++) {\n if (k in t && t[k] === searchElement) {\n return k;\n }\n }\n return -1;\n }\n}\n\nreturn GMaps;\n}));\n","import Control from './control'\nimport GMaps from 'gmaps'\n\nimport html from '../../templates/controls/gmap'\n\nimport valueOrCall from '../utils/valueOrCall'\n\ngeocode = (address)->\n return new Promise (resolve, reject) ->\n GMaps.geocode\n address: address\n callback: (results, status) =>\n if status != 'OK'\n reject status\n return\n\n resolve results\n\nexport default class GMap extends Control\n tag: 'gmap'\n html: html\n\n # pass this in optionally to overwrite a specific value\n address: ''\n\n # we cache address to prevent unnecessary reloads\n previousAddress: ''\n\n # gmaps map\n # map: null\n\n # latlng cache\n # latlng: null\n\n errorMessage: ''\n\n mapTypeId: 'roadmap'\n\n init: () ->\n if !@address\n super arguments...\n\n resize = =>\n @resize()\n\n @on 'mount', =>\n settings =\n div: @root.getElementsByClassName('map')[0]\n lat: 21.3280681\n lng: -157.798970564\n zoom: 10\n disableDefaultUI: true\n draggable: false\n zoomControl: false\n scrollwheel: false\n disableDoubleClickZoom: true\n mapTypeId: @mapTypeId\n\n @map = new GMaps settings\n\n window.addEventListener 'resize', resize\n\n @scheduleUpdate()\n\n @on 'updated', =>\n add = @getAddress()\n if add != @previousAddress\n @previousAddress = add\n geocode(add).then (results) =>\n @latlng = latlng = results[0].geometry.location\n @map.removeMarkers()\n @map.addMarker\n lat: latlng.lat()\n lng: latlng.lng()\n\n resize()\n\n .catch (err) =>\n @errorMessage = 'Error: ' + err\n\n @on 'unmount', =>\n window.removeEventListener 'resize', resize\n\n getAddress: ->\n return (valueOrCall(@address) || @input.ref.get(input.name)).trim()\n\n resize: ->\n if !@map\n return\n\n @map.refresh()\n\n if @latlng\n @map.setCenter @latlng.lat(), @latlng.lng()\n\n # readonly\n change: ->\n _change: ->\n getName: ->\n\nGMap.register()\n"],"names":["_undefined","_undefinedString","Promise","soon","PromiseInspection","requestAnimationFrame","now","$","isFunction","isObject","isSvg","tag","update","settings","s","vdom","misc.extend","o","objectAssign","isNumber","Ref","id","riot","slice","refer","extend","inputify","View","Form","Input","Views","this","cancelAnimationFrame","remove","Events","El","Control","exports","html","valueOrCall","Text","ReadOnly","Select","Zepto","zepto","isArray","init","highlightInit","toString","ECLevel.L","ECLevel.M","ECLevel.Q","ECLevel.H","getPositions","isValid","from","Mode.getCharCountIndicator","Mode.MIXED","Mode.BYTE","ECCode.getTotalCodewordsCount","Mode.NUMERIC","Mode.ALPHANUMERIC","Mode.KANJI","ECLevel.from","getEncodedBits","NUMERIC","ALPHANUMERIC","BYTE","KANJI","Version.isValid","Regex.testNumeric","Regex.testAlphanumeric","Regex.testKanji","fromString","Regex.NUMERIC","Regex.ALPHANUMERIC","Regex.BYTE","Regex.KANJI","Regex.BYTE_KANJI","Mode.getBestModeForData","Mode.from","Mode.toString","mul","GF.mul","GF.exp","Polynomial.generateECPolynomial","Polynomial.mod","FinderPattern.getPositions","AlignmentPattern.getPositions","Version.getEncodedBits","FormatInfo.getEncodedBits","ECCode.getBlocksCount","Segments.fromArray","Segments.rawSplit","Version.getBestVersionForData","Segments.fromString","MaskPattern.getBestMask","MaskPattern.applyMask","create","Version.from","MaskPattern.from","render","svgRender","GMaps"],"mappings":"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"}